summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAron Xu <aron@debian.org>2014-10-26 05:40:40 +0800
committerAron Xu <aron@debian.org>2014-10-26 05:40:40 +0800
commit268ca507f3eae1a262c9a3a04c315395eced62c6 (patch)
treebfb8c1587e4fceacbe6071732fc8633265fda459
parent7042e17490515a990a45aa7237d11bc49ab0eaf0 (diff)
downloadlibxml2-268ca507f3eae1a262c9a3a04c315395eced62c6.tar.gz
Imported Upstream version 2.9.2
-rw-r--r--COPYING14
-rw-r--r--ChangeLog2
-rw-r--r--Copyright14
-rw-r--r--DOCBparser.c12
-rw-r--r--HTMLparser.c172
-rw-r--r--HTMLtree.c141
-rw-r--r--INSTALL15
-rw-r--r--Makefile.am133
-rw-r--r--Makefile.in934
-rw-r--r--NEWS658
-rw-r--r--SAX.c2
-rw-r--r--SAX2.c173
-rw-r--r--acinclude.m48
-rw-r--r--aclocal.m4783
-rw-r--r--buf.c1304
-rw-r--r--buf.h72
-rw-r--r--c14n.c641
-rw-r--r--catalog.c110
-rw-r--r--[-rwxr-xr-x]chvalid.c164
-rwxr-xr-xconfig.guess405
-rw-r--r--config.h.in37
-rwxr-xr-xconfig.sub279
-rwxr-xr-xconfigure1593
-rw-r--r--configure.ac (renamed from configure.in)299
-rw-r--r--debugXML.c40
-rwxr-xr-xdepcomp531
-rw-r--r--dict.c222
-rw-r--r--doc/APIchunk0.html14
-rw-r--r--doc/APIchunk1.html8
-rw-r--r--doc/APIchunk10.html37
-rw-r--r--doc/APIchunk11.html33
-rw-r--r--doc/APIchunk12.html25
-rw-r--r--doc/APIchunk13.html36
-rw-r--r--doc/APIchunk14.html16
-rw-r--r--doc/APIchunk15.html16
-rw-r--r--doc/APIchunk16.html17
-rw-r--r--doc/APIchunk17.html27
-rw-r--r--doc/APIchunk18.html28
-rw-r--r--doc/APIchunk19.html15
-rw-r--r--doc/APIchunk2.html13
-rw-r--r--doc/APIchunk20.html8
-rw-r--r--doc/APIchunk21.html20
-rw-r--r--doc/APIchunk22.html19
-rw-r--r--doc/APIchunk23.html18
-rw-r--r--doc/APIchunk24.html25
-rw-r--r--doc/APIchunk25.html14
-rw-r--r--doc/APIchunk26.html21
-rw-r--r--doc/APIchunk27.html15
-rw-r--r--doc/APIchunk28.html26
-rw-r--r--doc/APIchunk29.html8
-rw-r--r--doc/APIchunk3.html24
-rw-r--r--doc/APIchunk4.html19
-rw-r--r--doc/APIchunk5.html9
-rw-r--r--doc/APIchunk6.html12
-rw-r--r--doc/APIchunk7.html13
-rw-r--r--doc/APIchunk8.html10
-rw-r--r--doc/APIchunk9.html20
-rw-r--r--doc/APIconstructors.html10
-rw-r--r--doc/APIfiles.html34
-rw-r--r--doc/APIfunctions.html103
-rw-r--r--doc/APIsymbols.html34
-rw-r--r--doc/FAQ.html51
-rw-r--r--doc/Makefile.am298
-rw-r--r--doc/Makefile.in731
-rwxr-xr-xdoc/apibuild.py3262
-rw-r--r--doc/architecture.html3
-rw-r--r--doc/bugs.html6
-rw-r--r--doc/catalog.html15
-rw-r--r--doc/contribs.html3
-rw-r--r--doc/devhelp/Makefile.am32
-rw-r--r--doc/devhelp/Makefile.in227
-rw-r--r--doc/devhelp/general.html2
-rw-r--r--doc/devhelp/libxml2-dict.html12
-rw-r--r--doc/devhelp/libxml2-entities.html8
-rw-r--r--doc/devhelp/libxml2-parser.html9
-rw-r--r--doc/devhelp/libxml2-parserInternals.html21
-rw-r--r--doc/devhelp/libxml2-relaxng.html2
-rw-r--r--doc/devhelp/libxml2-tree.html208
-rw-r--r--doc/devhelp/libxml2-valid.html2
-rw-r--r--doc/devhelp/libxml2-xmlIO.html10
-rw-r--r--doc/devhelp/libxml2-xmlerror.html11
-rw-r--r--doc/devhelp/libxml2-xmlmodule.html4
-rw-r--r--doc/devhelp/libxml2-xmlregexp.html6
-rw-r--r--doc/devhelp/libxml2-xmlschemas.html15
-rw-r--r--doc/devhelp/libxml2-xmlschemastypes.html4
-rw-r--r--doc/devhelp/libxml2-xmlversion.html5
-rw-r--r--doc/devhelp/libxml2-xmlwriter.html11
-rw-r--r--doc/devhelp/libxml2-xpath.html11
-rw-r--r--doc/devhelp/libxml2-xpathInternals.html18
-rw-r--r--doc/devhelp/libxml2.devhelp32
-rw-r--r--doc/docs.html5
-rw-r--r--doc/downloads.html9
-rw-r--r--doc/encoding.html30
-rw-r--r--doc/example.html3
-rw-r--r--doc/examples/Makefile.am241
-rw-r--r--doc/examples/Makefile.in611
-rw-r--r--doc/examples/examples.xml450
-rw-r--r--doc/examples/index.html14
-rwxr-xr-xdoc/examples/index.py92
-rw-r--r--doc/examples/io1.c2
-rw-r--r--doc/examples/io1.res2
-rw-r--r--doc/examples/io2.c2
-rw-r--r--doc/examples/reader1.c2
-rw-r--r--doc/examples/reader2.c2
-rw-r--r--doc/examples/reader3.c2
-rw-r--r--doc/examples/reader4.c2
-rw-r--r--doc/examples/testWriter.c10
-rw-r--r--doc/examples/tree1.c2
-rw-r--r--doc/examples/tree2.c2
-rw-r--r--doc/examples/xpath1.c2
-rw-r--r--doc/examples/xpath2.c2
-rw-r--r--doc/help.html3
-rw-r--r--doc/html/book1.html2
-rw-r--r--doc/html/index.html2
-rw-r--r--doc/html/libxml-dict.html12
-rw-r--r--doc/html/libxml-entities.html8
-rw-r--r--doc/html/libxml-lib.html2
-rw-r--r--doc/html/libxml-parser.html7
-rw-r--r--doc/html/libxml-parserInternals.html7
-rw-r--r--doc/html/libxml-relaxng.html2
-rw-r--r--doc/html/libxml-tree.html177
-rw-r--r--doc/html/libxml-valid.html2
-rw-r--r--doc/html/libxml-xmlIO.html8
-rw-r--r--doc/html/libxml-xmlerror.html9
-rw-r--r--doc/html/libxml-xmlmodule.html4
-rw-r--r--doc/html/libxml-xmlregexp.html6
-rw-r--r--doc/html/libxml-xmlschemas.html14
-rw-r--r--doc/html/libxml-xmlschemastypes.html4
-rw-r--r--doc/html/libxml-xmlversion.html3
-rw-r--r--doc/html/libxml-xmlwriter.html5
-rw-r--r--doc/html/libxml-xpath.html11
-rw-r--r--doc/html/libxml-xpathInternals.html14
-rw-r--r--doc/index.html274
-rw-r--r--doc/interface.html2
-rw-r--r--doc/intro.html3
-rw-r--r--doc/library.html39
-rw-r--r--doc/libxml2-api.xml345
-rw-r--r--doc/libxml2.xsa118
-rw-r--r--doc/news.html828
-rw-r--r--doc/python.html9
-rw-r--r--doc/symbols.xml19
-rw-r--r--doc/threads.html6
-rw-r--r--doc/upgrade.html18
-rw-r--r--doc/xml.html436
-rw-r--r--doc/xmldtd.html21
-rw-r--r--doc/xmlio.html12
-rw-r--r--doc/xmllint.1608
-rw-r--r--doc/xmllint.xml16
-rw-r--r--doc/xmlmem.html21
-rw-r--r--elfgcchack.h206
-rw-r--r--enc.h32
-rw-r--r--encoding.c510
-rw-r--r--entities.c153
-rw-r--r--error.c77
-rw-r--r--example/Makefile.am9
-rw-r--r--example/Makefile.in254
-rw-r--r--globals.c28
-rw-r--r--hash.c51
-rw-r--r--include/Makefile.in300
-rw-r--r--include/libxml/DOCBparser.h18
-rw-r--r--include/libxml/HTMLparser.h44
-rw-r--r--include/libxml/HTMLtree.h38
-rw-r--r--include/libxml/Makefile.in210
-rw-r--r--include/libxml/SAX.h74
-rw-r--r--include/libxml/SAX2.h74
-rw-r--r--include/libxml/c14n.h2
-rw-r--r--include/libxml/catalog.h70
-rw-r--r--include/libxml/debugXML.h52
-rw-r--r--include/libxml/dict.h6
-rw-r--r--include/libxml/encoding.h28
-rw-r--r--include/libxml/entities.h9
-rw-r--r--include/libxml/globals.h17
-rw-r--r--include/libxml/hash.h48
-rw-r--r--include/libxml/list.h52
-rw-r--r--include/libxml/nanoftp.h1
-rw-r--r--include/libxml/nanohttp.h26
-rw-r--r--include/libxml/parser.h144
-rw-r--r--include/libxml/parserInternals.h179
-rw-r--r--include/libxml/relaxng.h8
-rw-r--r--include/libxml/schemasInternals.h4
-rw-r--r--include/libxml/schematron.h22
-rw-r--r--include/libxml/tree.h437
-rw-r--r--include/libxml/valid.h144
-rw-r--r--include/libxml/xlink.h14
-rw-r--r--include/libxml/xmlIO.h138
-rw-r--r--include/libxml/xmlautomata.h44
-rw-r--r--include/libxml/xmlerror.h15
-rw-r--r--include/libxml/xmlexports.h2
-rw-r--r--include/libxml/xmlmodule.h2
-rw-r--r--include/libxml/xmlreader.h39
-rw-r--r--include/libxml/xmlschemas.h32
-rw-r--r--include/libxml/xmlschemastypes.h40
-rw-r--r--include/libxml/xmlstring.h6
-rw-r--r--include/libxml/xmlversion.h25
-rw-r--r--include/libxml/xmlversion.h.in15
-rw-r--r--include/libxml/xmlwriter.h5
-rw-r--r--include/libxml/xpath.h94
-rw-r--r--include/libxml/xpathInternals.h160
-rw-r--r--include/libxml/xpointer.h46
-rw-r--r--include/win32config.h4
-rw-r--r--include/wsockcompat.h2
-rwxr-xr-xinstall-sh35
-rw-r--r--legacy.c32
-rw-r--r--libxml-2.0-uninstalled.pc.in2
-rw-r--r--libxml-2.0.pc.in2
-rw-r--r--libxml.32
-rw-r--r--libxml.h9
-rw-r--r--libxml.spec.in58
-rw-r--r--libxml2-config.cmake.in50
-rw-r--r--libxml2.spec64
-rw-r--r--libxml2.syms35
-rw-r--r--list.c76
-rw-r--r--[-rwxr-xr-x]ltmain.sh95
-rw-r--r--m4/libtool.m4277
-rw-r--r--m4/ltoptions.m419
-rw-r--r--m4/ltversion.m410
-rwxr-xr-xmissing461
-rw-r--r--nanoftp.c110
-rw-r--r--nanohttp.c81
-rw-r--r--os400/README400214
-rw-r--r--os400/dlfcn/dlfcn.c1213
-rw-r--r--os400/dlfcn/dlfcn.h32
-rw-r--r--os400/iconv/README.iconv47
-rw-r--r--os400/iconv/bldcsndfa/bldcsndfa.c1953
-rw-r--r--os400/iconv/bldcsndfa/ccsid_mibenum.dtd15
-rw-r--r--os400/iconv/bldcsndfa/ccsid_mibenum.xml270
-rw-r--r--os400/iconv/bldcsndfa/character-sets.xhtml3077
-rw-r--r--os400/iconv/ianatables.c4609
-rw-r--r--os400/iconv/iconv.c154
-rw-r--r--os400/iconv/iconv.h40
-rw-r--r--os400/initscript.sh290
-rw-r--r--os400/libxmlrpg/DOCBparser.rpgle116
-rw-r--r--os400/libxmlrpg/HTMLparser.rpgle403
-rw-r--r--os400/libxmlrpg/HTMLtree.rpgle166
-rw-r--r--os400/libxmlrpg/SAX.rpgle207
-rw-r--r--os400/libxmlrpg/SAX2.rpgle248
-rw-r--r--os400/libxmlrpg/c14n.rpgle119
-rw-r--r--os400/libxmlrpg/catalog.rpgle235
-rw-r--r--os400/libxmlrpg/chvalid.rpgle97
-rw-r--r--os400/libxmlrpg/debugXML.rpgle241
-rw-r--r--os400/libxmlrpg/dict.rpgle78
-rw-r--r--os400/libxmlrpg/encoding.rpgle274
-rw-r--r--os400/libxmlrpg/entities.rpgle174
-rw-r--r--os400/libxmlrpg/globals.rpgle557
-rw-r--r--os400/libxmlrpg/hash.rpgle231
-rw-r--r--os400/libxmlrpg/list.rpgle168
-rw-r--r--os400/libxmlrpg/nanoftp.rpgle156
-rw-r--r--os400/libxmlrpg/nanohttp.rpgle103
-rw-r--r--os400/libxmlrpg/parser.rpgle1407
-rw-r--r--os400/libxmlrpg/parserInternals.rpgle575
-rw-r--r--os400/libxmlrpg/pattern.rpgle117
-rw-r--r--os400/libxmlrpg/relaxng.rpgle297
-rw-r--r--os400/libxmlrpg/schemasInternals.rpgle1137
-rw-r--r--os400/libxmlrpg/schematron.rpgle195
-rw-r--r--os400/libxmlrpg/threads.rpgle70
-rw-r--r--os400/libxmlrpg/transcode.rpgle71
-rw-r--r--os400/libxmlrpg/tree.rpgle1628
-rw-r--r--os400/libxmlrpg/uri.rpgle100
-rw-r--r--os400/libxmlrpg/valid.rpgle575
-rw-r--r--os400/libxmlrpg/xinclude.rpgle147
-rw-r--r--os400/libxmlrpg/xlink.rpgle164
-rw-r--r--os400/libxmlrpg/xmlIO.rpgle441
-rw-r--r--os400/libxmlrpg/xmlautomata.rpgle179
-rw-r--r--os400/libxmlrpg/xmlerror.rpgle1681
-rw-r--r--os400/libxmlrpg/xmlexports.rpgle15
-rw-r--r--os400/libxmlrpg/xmlmemory.rpgle239
-rw-r--r--os400/libxmlrpg/xmlmodule.rpgle51
-rw-r--r--os400/libxmlrpg/xmlreader.rpgle619
-rw-r--r--os400/libxmlrpg/xmlregexp.rpgle246
-rw-r--r--os400/libxmlrpg/xmlsave.rpgle96
-rw-r--r--os400/libxmlrpg/xmlschemas.rpgle318
-rw-r--r--os400/libxmlrpg/xmlschemastypes.rpgle235
-rw-r--r--os400/libxmlrpg/xmlstdarg.rpgle34
-rw-r--r--os400/libxmlrpg/xmlstring.rpgle162
-rw-r--r--os400/libxmlrpg/xmlunicode.rpgle668
-rw-r--r--os400/libxmlrpg/xmlversion.rpgle.in352
-rw-r--r--os400/libxmlrpg/xmlwriter.rpgle725
-rw-r--r--os400/libxmlrpg/xpath.rpgle649
-rw-r--r--os400/libxmlrpg/xpathInternals.rpgle672
-rw-r--r--os400/libxmlrpg/xpointer.rpgle157
-rw-r--r--os400/make-bldcsndfa.sh43
-rw-r--r--os400/make-include.sh81
-rw-r--r--os400/make-rpg.sh97
-rw-r--r--os400/make-src.sh241
-rw-r--r--os400/make.sh75
-rw-r--r--os400/os400config.h.in353
-rw-r--r--os400/rpgsupport.c270
-rw-r--r--os400/rpgsupport.h157
-rw-r--r--os400/transcode.c268
-rw-r--r--os400/transcode.h43
-rw-r--r--os400/wrappers.c170
-rw-r--r--os400/wrappers.h70
-rw-r--r--parser.c1537
-rw-r--r--parserInternals.c223
-rw-r--r--pattern.c178
-rw-r--r--python/Makefile.am63
-rw-r--r--python/Makefile.in509
-rw-r--r--python/drv_libxml2.py18
-rwxr-xr-xpython/generator.py243
-rw-r--r--python/libxml.c325
-rw-r--r--python/libxml.py115
-rw-r--r--python/libxml2-export.c2063
-rw-r--r--python/libxml2-py.c14789
-rw-r--r--python/libxml2-py.h2063
-rw-r--r--python/libxml2-python-api.xml9
-rw-r--r--python/libxml2.py9319
-rw-r--r--python/libxml2class.py8531
-rw-r--r--python/libxml2class.txt1177
-rw-r--r--python/libxml_wrap.h30
-rwxr-xr-xpython/setup.py96
-rwxr-xr-xpython/setup.py.in94
-rw-r--r--python/tests/Makefile.am7
-rw-r--r--python/tests/Makefile.in154
-rwxr-xr-xpython/tests/attribs.py6
-rwxr-xr-xpython/tests/build.py18
-rwxr-xr-xpython/tests/compareNodes.py18
-rwxr-xr-xpython/tests/ctxterror.py12
-rwxr-xr-xpython/tests/cutnpaste.py6
-rwxr-xr-xpython/tests/dtdvalid.py6
-rwxr-xr-xpython/tests/error.py12
-rwxr-xr-xpython/tests/inbuf.py13
-rwxr-xr-xpython/tests/indexes.py20
-rwxr-xr-xpython/tests/input_callback.py148
-rwxr-xr-xpython/tests/nsdel.py6
-rwxr-xr-xpython/tests/outbuf.py49
-rwxr-xr-xpython/tests/push.py8
-rwxr-xr-xpython/tests/pushSAX.py8
-rwxr-xr-xpython/tests/pushSAXhtml.py8
-rwxr-xr-xpython/tests/reader.py185
-rwxr-xr-xpython/tests/reader2.py63
-rwxr-xr-xpython/tests/reader3.py63
-rwxr-xr-xpython/tests/reader4.py17
-rwxr-xr-xpython/tests/reader5.py15
-rwxr-xr-xpython/tests/reader6.py27
-rwxr-xr-xpython/tests/reader7.py17
-rwxr-xr-xpython/tests/reader8.py7
-rwxr-xr-x[-rw-r--r--]python/tests/readererr.py21
-rwxr-xr-xpython/tests/readernext.py39
-rwxr-xr-x[-rw-r--r--]python/tests/regexp.py14
-rwxr-xr-xpython/tests/relaxng.py6
-rwxr-xr-xpython/tests/resolver.py17
-rwxr-xr-xpython/tests/schema.py6
-rwxr-xr-xpython/tests/serialize.py36
-rwxr-xr-xpython/tests/sync.py47
-rwxr-xr-xpython/tests/thread2.py21
-rwxr-xr-xpython/tests/tst.py10
-rwxr-xr-xpython/tests/tstLastError.py20
-rwxr-xr-xpython/tests/tstURI.py18
-rwxr-xr-xpython/tests/tstmem.py6
-rwxr-xr-xpython/tests/tstxpath.py16
-rwxr-xr-xpython/tests/validDTD.py10
-rwxr-xr-xpython/tests/validRNG.py10
-rwxr-xr-xpython/tests/validSchemas.py10
-rwxr-xr-xpython/tests/validate.py20
-rwxr-xr-xpython/tests/walker.py23
-rwxr-xr-xpython/tests/xpath.py14
-rwxr-xr-xpython/tests/xpathext.py12
-rwxr-xr-x[-rw-r--r--]python/tests/xpathleak.py14
-rwxr-xr-xpython/tests/xpathns.py8
-rwxr-xr-xpython/tests/xpathret.py14
-rw-r--r--python/types.c282
-rw-r--r--relaxng.c147
-rw-r--r--result/HTML/53867.html70
-rw-r--r--result/HTML/53867.html.err0
-rw-r--r--result/HTML/53867.html.sax26
-rw-r--r--result/HTML/Down.html13
-rw-r--r--result/HTML/Down.html.err0
-rw-r--r--result/HTML/Down.html.sax37
-rw-r--r--result/HTML/attrents.html6
-rw-r--r--result/HTML/attrents.html.err0
-rw-r--r--result/HTML/attrents.html.sax21
-rw-r--r--result/HTML/autoclose.html4
-rw-r--r--result/HTML/autoclose.html.err0
-rw-r--r--result/HTML/autoclose.html.sax11
-rw-r--r--result/HTML/autoclose2.html3
-rw-r--r--result/HTML/autoclose2.html.err0
-rw-r--r--result/HTML/autoclose2.html.sax11
-rw-r--r--result/HTML/autoclose3.html7
-rw-r--r--result/HTML/autoclose3.html.err0
-rw-r--r--result/HTML/autoclose3.html.sax19
-rw-r--r--result/HTML/cf_128.html24
-rw-r--r--result/HTML/cf_128.html.err0
-rw-r--r--result/HTML/cf_128.html.sax69
-rw-r--r--result/HTML/doc2.htm30
-rw-r--r--result/HTML/doc2.htm.err3
-rw-r--r--result/HTML/doc2.htm.sax69
-rw-r--r--result/HTML/doc3.htm579
-rw-r--r--result/HTML/doc3.htm.err81
-rw-r--r--result/HTML/doc3.htm.sax2878
-rw-r--r--result/HTML/entities.html8
-rw-r--r--result/HTML/entities.html.err12
-rw-r--r--result/HTML/entities.html.sax27
-rw-r--r--result/HTML/entities2.html8
-rw-r--r--result/HTML/entities2.html.err0
-rw-r--r--result/HTML/entities2.html.sax23
-rw-r--r--result/HTML/fp40.htm167
-rw-r--r--result/HTML/fp40.htm.err3
-rw-r--r--result/HTML/fp40.htm.sax463
-rw-r--r--result/HTML/html5_enc.html9
-rw-r--r--result/HTML/html5_enc.html.err0
-rw-r--r--result/HTML/html5_enc.html.sax30
-rw-r--r--result/HTML/liclose.html15
-rw-r--r--result/HTML/liclose.html.err0
-rw-r--r--result/HTML/liclose.html.sax38
-rw-r--r--result/HTML/lt.html6
-rw-r--r--result/HTML/lt.html.err0
-rw-r--r--result/HTML/lt.html.sax19
-rw-r--r--result/HTML/noscript.html10
-rw-r--r--result/HTML/noscript.html.err0
-rw-r--r--result/HTML/noscript.html.sax38
-rw-r--r--result/HTML/pre.html6
-rw-r--r--result/HTML/pre.html.err0
-rw-r--r--result/HTML/pre.html.sax23
-rw-r--r--result/HTML/python.html9
-rw-r--r--result/HTML/python.html.err0
-rw-r--r--result/HTML/python.html.sax29
-rw-r--r--result/HTML/reg1.html12
-rw-r--r--result/HTML/reg1.html.err0
-rw-r--r--result/HTML/reg1.html.sax36
-rw-r--r--result/HTML/reg2.html15
-rw-r--r--result/HTML/reg2.html.err0
-rw-r--r--result/HTML/reg2.html.sax41
-rw-r--r--result/HTML/reg3.html16
-rw-r--r--result/HTML/reg3.html.err0
-rw-r--r--result/HTML/reg3.html.sax45
-rw-r--r--result/HTML/reg4.html14
-rw-r--r--result/HTML/reg4.html.err3
-rw-r--r--result/HTML/reg4.html.sax43
-rw-r--r--result/HTML/repeat.html7
-rw-r--r--result/HTML/repeat.html.err0
-rw-r--r--result/HTML/repeat.html.sax14
-rw-r--r--result/HTML/script.html10
-rw-r--r--result/HTML/script.html.err0
-rw-r--r--result/HTML/script.html.sax32
-rw-r--r--result/HTML/script2.html17
-rw-r--r--result/HTML/script2.html.err0
-rw-r--r--result/HTML/script2.html.sax50
-rw-r--r--result/HTML/test2.html38
-rw-r--r--result/HTML/test2.html.err0
-rw-r--r--result/HTML/test2.html.sax145
-rw-r--r--result/HTML/test3.html59
-rw-r--r--result/HTML/test3.html.err12
-rw-r--r--result/HTML/test3.html.sax230
-rw-r--r--result/HTML/utf8bug.html215
-rw-r--r--result/HTML/utf8bug.html.err15
-rw-r--r--result/HTML/utf8bug.html.sax737
-rw-r--r--result/HTML/wired.html576
-rw-r--r--result/HTML/wired.html.err249
-rw-r--r--result/HTML/wired.html.sax2848
-rw-r--r--result/SVG/4rects.xml10
-rw-r--r--result/SVG/a-valid.xml9
-rw-r--r--result/SVG/a-wf.xml8
-rw-r--r--result/SVG/bike-errors.xml0
-rw-r--r--result/SVG/bike.xml44
-rw-r--r--result/SVG/circle.xml9
-rw-r--r--result/SVG/defs.xml14
-rw-r--r--result/SVG/desc.xml14
-rw-r--r--result/SVG/ellipse.xml9
-rw-r--r--result/SVG/flower2.xml10
-rw-r--r--result/SVG/gradient.xml16
-rw-r--r--result/SVG/group01.xml14
-rw-r--r--result/SVG/group02.xml12
-rw-r--r--result/SVG/group03.xml11
-rw-r--r--result/SVG/image-valid.xml9
-rw-r--r--result/SVG/image-wf.xml8
-rw-r--r--result/SVG/lin-gradient.xml15
-rw-r--r--result/SVG/marker.xml23
-rw-r--r--result/SVG/mask.xml12
-rw-r--r--result/SVG/mathswitch.xml26
-rw-r--r--result/SVG/parentns.xml9
-rw-r--r--result/SVG/path01.xml4
-rw-r--r--result/SVG/path02.xml9
-rw-r--r--result/SVG/patternfill.xml11
-rw-r--r--result/SVG/polyline.xml8
-rw-r--r--result/SVG/private.xml18
-rw-r--r--result/SVG/rad-gradient.xml16
-rw-r--r--result/SVG/rectangle.xml9
-rw-r--r--result/SVG/richdesc.xml11
-rw-r--r--result/SVG/script.xml13
-rw-r--r--result/SVG/structure01.xml8
-rw-r--r--result/SVG/style.xml11
-rw-r--r--result/SVG/switch.xml16
-rw-r--r--result/SVG/symbol-use.xml22
-rw-r--r--result/SVG/template.xml8
-rw-r--r--result/SVG/text01.xml11
-rw-r--r--result/SVG/text02.xml25
-rw-r--r--result/SVG/text03.xml7
-rw-r--r--result/SVG/toap01.xml8
-rw-r--r--result/SVG/toap02.xml27
-rw-r--r--result/SVG/transform.xml20
-rw-r--r--result/SVG/trivial.xml4
-rw-r--r--result/SVG/twin-gradients.xml18
-rw-r--r--result/SVG/v-template.xml6
-rw-r--r--result/SVG/viewport-nest.xml12
-rw-r--r--result/SVG/viewport-transform.xml36
-rw-r--r--result/SVG/viewport.xml8
-rw-r--r--result/SVG/wf-template.xml4
-rw-r--r--result/URI/smith.uri15
-rw-r--r--result/URI/uri.data18
-rw-r--r--result/VC/AttributeDefaultLegal12
-rw-r--r--result/VC/AttributeDefaultLegal.rdr12
-rw-r--r--result/VC/AttributeNmtokens3
-rw-r--r--result/VC/AttributeNmtokens.rdr3
-rw-r--r--result/VC/DuplicateType3
-rw-r--r--result/VC/DuplicateType.rdr3
-rw-r--r--result/VC/ElementValid3
-rw-r--r--result/VC/ElementValid.rdr3
-rw-r--r--result/VC/ElementValid23
-rw-r--r--result/VC/ElementValid2.rdr6
-rw-r--r--result/VC/ElementValid33
-rw-r--r--result/VC/ElementValid3.rdr6
-rw-r--r--result/VC/ElementValid43
-rw-r--r--result/VC/ElementValid4.rdr6
-rw-r--r--result/VC/ElementValid53
-rw-r--r--result/VC/ElementValid5.rdr6
-rw-r--r--result/VC/ElementValid63
-rw-r--r--result/VC/ElementValid6.rdr6
-rw-r--r--result/VC/ElementValid73
-rw-r--r--result/VC/ElementValid7.rdr6
-rw-r--r--result/VC/ElementValid83
-rw-r--r--result/VC/ElementValid8.rdr3
-rw-r--r--result/VC/Enumeration3
-rw-r--r--result/VC/Enumeration.rdr3
-rw-r--r--result/VC/NS10
-rw-r--r--result/VC/NS1.rdr0
-rw-r--r--result/VC/NS23
-rw-r--r--result/VC/NS2.rdr3
-rw-r--r--result/VC/NS39
-rw-r--r--result/VC/NS3.rdr9
-rw-r--r--result/VC/OneID6
-rw-r--r--result/VC/OneID.rdr6
-rw-r--r--result/VC/OneID26
-rw-r--r--result/VC/OneID2.rdr6
-rw-r--r--result/VC/OneID36
-rw-r--r--result/VC/OneID3.rdr6
-rw-r--r--result/VC/PENesting6
-rw-r--r--result/VC/PENesting.rdr4
-rw-r--r--result/VC/PENesting26
-rw-r--r--result/VC/PENesting2.rdr4
-rw-r--r--result/VC/UniqueElementTypeDeclaration3
-rw-r--r--result/VC/UniqueElementTypeDeclaration.rdr3
-rw-r--r--result/VC/UniqueElementTypeDeclaration23
-rw-r--r--result/VC/UniqueElementTypeDeclaration2.rdr3
-rw-r--r--result/XInclude/docids.xml19
-rw-r--r--result/XInclude/docids.xml.err0
-rw-r--r--result/XInclude/docids.xml.rdr35
-rw-r--r--result/XInclude/fallback.xml5
-rw-r--r--result/XInclude/fallback.xml.err0
-rw-r--r--result/XInclude/fallback.xml.rdr12
-rw-r--r--result/XInclude/fallback2.xml6
-rw-r--r--result/XInclude/fallback2.xml.err0
-rw-r--r--result/XInclude/fallback2.xml.rdr11
-rw-r--r--result/XInclude/include.xml9
-rw-r--r--result/XInclude/include.xml.err0
-rw-r--r--result/XInclude/include.xml.rdr28
-rw-r--r--result/XInclude/nodes.xml5
-rw-r--r--result/XInclude/nodes.xml.err0
-rw-r--r--result/XInclude/nodes.xml.rdr18
-rw-r--r--result/XInclude/nodes2.xml5
-rw-r--r--result/XInclude/nodes2.xml.err0
-rw-r--r--result/XInclude/nodes2.xml.rdr18
-rw-r--r--result/XInclude/nodes3.xml5
-rw-r--r--result/XInclude/nodes3.xml.err1
-rw-r--r--result/XInclude/nodes3.xml.rdr10
-rw-r--r--result/XInclude/recursive.xml3
-rw-r--r--result/XInclude/recursive.xml.err0
-rw-r--r--result/XInclude/recursive.xml.rdr6
-rw-r--r--result/XInclude/tstencoding.xml6
-rw-r--r--result/XInclude/tstencoding.xml.err0
-rw-r--r--result/XInclude/tstencoding.xml.rdr11
-rw-r--r--result/XInclude/txtinclude.xml6
-rw-r--r--result/XInclude/txtinclude.xml.err0
-rw-r--r--result/XInclude/txtinclude.xml.rdr11
-rw-r--r--result/XPath/expr/base20
-rw-r--r--result/XPath/expr/compare184
-rw-r--r--result/XPath/expr/equality104
-rw-r--r--result/XPath/expr/floats244
-rw-r--r--result/XPath/expr/functions100
-rw-r--r--result/XPath/expr/strings136
-rw-r--r--result/XPath/tests/chaptersbase115
-rw-r--r--result/XPath/tests/chaptersprefol100
-rw-r--r--result/XPath/tests/idsimple33
-rw-r--r--result/XPath/tests/langsimple60
-rw-r--r--result/XPath/tests/mixedpat101
-rw-r--r--result/XPath/tests/nodespat94
-rw-r--r--result/XPath/tests/simpleabbr81
-rw-r--r--result/XPath/tests/simplebase73
-rw-r--r--result/XPath/tests/usr1check12
-rw-r--r--result/XPath/tests/vidbase42
-rw-r--r--result/XPath/xptr/chapterschildseq53
-rw-r--r--result/XPath/xptr/chaptersparts44
-rw-r--r--result/XPath/xptr/chaptersrange64
-rw-r--r--result/XPath/xptr/strpoint75
-rw-r--r--result/XPath/xptr/strrange96
-rw-r--r--result/XPath/xptr/strrange264
-rw-r--r--result/XPath/xptr/strrange348
-rw-r--r--result/XPath/xptr/vidbase19
-rw-r--r--result/XPath/xptr/vidchildseq36
-rw-r--r--result/XPath/xptr/vidparts27
-rw-r--r--result/att12
-rw-r--r--result/att1.rde1
-rw-r--r--result/att1.rdr1
-rw-r--r--result/att1.sax5
-rw-r--r--result/att1.sax25
-rw-r--r--result/att1018
-rw-r--r--result/att10.rde23
-rw-r--r--result/att10.rdr23
-rw-r--r--result/att10.sax61
-rw-r--r--result/att10.sax257
-rw-r--r--result/att119
-rw-r--r--result/att11.rde2
-rw-r--r--result/att11.rdr2
-rw-r--r--result/att11.sax19
-rw-r--r--result/att11.sax218
-rw-r--r--result/att22
-rw-r--r--result/att2.rde1
-rw-r--r--result/att2.rdr1
-rw-r--r--result/att2.sax5
-rw-r--r--result/att2.sax25
-rw-r--r--result/att32
-rw-r--r--result/att3.rde3
-rw-r--r--result/att3.rdr3
-rw-r--r--result/att3.sax9
-rw-r--r--result/att3.sax28
-rw-r--r--result/att49264
-rw-r--r--result/att4.rde27785
-rw-r--r--result/att4.rdr27785
-rw-r--r--result/att4.sax36976
-rw-r--r--result/att4.sax236976
-rw-r--r--result/att540
-rw-r--r--result/att5.rde109
-rw-r--r--result/att5.rdr109
-rw-r--r--result/att5.sax148
-rw-r--r--result/att5.sax2149
-rw-r--r--result/att66
-rw-r--r--result/att6.rde15
-rw-r--r--result/att6.rdr15
-rw-r--r--result/att6.sax20
-rw-r--r--result/att6.sax220
-rw-r--r--result/att711
-rw-r--r--result/att7.rde12
-rw-r--r--result/att7.rdr11
-rw-r--r--result/att7.sax24
-rw-r--r--result/att7.sax224
-rw-r--r--result/att82
-rw-r--r--result/att8.rde22
-rw-r--r--result/att8.rdr22
-rw-r--r--result/att8.sax29
-rw-r--r--result/att8.sax229
-rw-r--r--result/att96
-rw-r--r--result/att9.rde2
-rw-r--r--result/att9.rdr2
-rw-r--r--result/att9.sax9
-rw-r--r--result/att9.sax29
-rw-r--r--result/attrib.xml2
-rw-r--r--result/attrib.xml.rde1
-rw-r--r--result/attrib.xml.rdr1
-rw-r--r--result/attrib.xml.sax5
-rw-r--r--result/attrib.xml.sax25
-rw-r--r--result/automata/a4
-rw-r--r--result/automata/aba6
-rw-r--r--result/automata/abaa5
-rw-r--r--result/automata/abba4
-rw-r--r--result/automata/po2
-rw-r--r--result/badcomment.xml17
-rw-r--r--result/badcomment.xml.rde21
-rw-r--r--result/badcomment.xml.rdr21
-rw-r--r--result/badcomment.xml.sax24
-rw-r--r--result/badcomment.xml.sax224
-rw-r--r--result/bigentname.xml6
-rw-r--r--result/bigentname.xml.rde4
-rw-r--r--result/bigentname.xml.rdr4
-rw-r--r--result/bigentname.xml.sax17
-rw-r--r--result/bigentname.xml.sax217
-rw-r--r--result/bigname.xml2
-rw-r--r--result/bigname.xml.rde1
-rw-r--r--result/bigname.xml.rdr1
-rw-r--r--result/bigname.xml.sax5
-rw-r--r--result/bigname.xml.sax25
-rw-r--r--result/bigname2.xml2
-rw-r--r--result/bigname2.xml.rde1
-rw-r--r--result/bigname2.xml.rdr1
-rw-r--r--result/bigname2.xml.sax5
-rw-r--r--result/bigname2.xml.sax25
-rwxr-xr-xresult/c14n/1-1-without-comments/example-14
-rwxr-xr-xresult/c14n/1-1-without-comments/example-211
-rwxr-xr-xresult/c14n/1-1-without-comments/example-314
-rwxr-xr-xresult/c14n/1-1-without-comments/example-49
-rwxr-xr-xresult/c14n/1-1-without-comments/example-53
-rwxr-xr-xresult/c14n/1-1-without-comments/example-61
-rwxr-xr-xresult/c14n/1-1-without-comments/example-71
-rwxr-xr-xresult/c14n/1-1-without-comments/example-81
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-c14n11spec-1021
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-c14n11spec2-1021
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-c14n11spec3-1022
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-114
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-28
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-33
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-41
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-51
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-63
-rw-r--r--result/c14n/1-1-without-comments/xmlbase-prop-77
-rw-r--r--result/c14n/1-1-without-comments/xmlid-prop-18
-rw-r--r--result/c14n/1-1-without-comments/xmlid-prop-25
-rw-r--r--result/c14n/1-1-without-comments/xmllang-prop-18
-rw-r--r--result/c14n/1-1-without-comments/xmllang-prop-23
-rw-r--r--result/c14n/1-1-without-comments/xmllang-prop-33
-rw-r--r--result/c14n/1-1-without-comments/xmllang-prop-45
-rw-r--r--result/c14n/1-1-without-comments/xmlspace-prop-18
-rw-r--r--result/c14n/1-1-without-comments/xmlspace-prop-23
-rw-r--r--result/c14n/1-1-without-comments/xmlspace-prop-33
-rw-r--r--result/c14n/1-1-without-comments/xmlspace-prop-45
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-099
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-109
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-119
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-129
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-139
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-149
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-150
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-160
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-179
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-189
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-199
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-209
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-219
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-229
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-239
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-241
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-250
-rw-r--r--result/c14n/exc-without-comments/merlin-c14n-two-269
-rw-r--r--result/c14n/exc-without-comments/test-07
-rw-r--r--result/c14n/exc-without-comments/test-17
-rw-r--r--result/c14n/exc-without-comments/test-211
-rw-r--r--result/c14n/with-comments/example-16
-rw-r--r--result/c14n/with-comments/example-211
-rw-r--r--result/c14n/with-comments/example-314
-rw-r--r--result/c14n/with-comments/example-49
-rw-r--r--result/c14n/with-comments/example-54
-rw-r--r--result/c14n/with-comments/example-61
-rw-r--r--result/c14n/with-comments/example-71
-rw-r--r--result/c14n/without-comments/example-14
-rw-r--r--result/c14n/without-comments/example-211
-rw-r--r--result/c14n/without-comments/example-314
-rw-r--r--result/c14n/without-comments/example-49
-rw-r--r--result/c14n/without-comments/example-53
-rw-r--r--result/c14n/without-comments/example-61
-rw-r--r--result/c14n/without-comments/example-71
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-009
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-019
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-029
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-039
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-049
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-059
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-061
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-071
-rw-r--r--result/c14n/without-comments/merlin-c14n-two-089
-rw-r--r--result/c14n/without-comments/test-01
-rw-r--r--result/c14n/without-comments/test-131
-rw-r--r--result/c14n/without-comments/test-23
-rw-r--r--result/c14n/without-comments/test-37
-rw-r--r--result/catalogs/catal5
-rw-r--r--result/catalogs/docbook6
-rw-r--r--result/catalogs/mycatalog.empty3
-rw-r--r--result/catalogs/mycatalog.full7
-rw-r--r--result/catalogs/registry5
-rw-r--r--result/catalogs/whites5
-rw-r--r--result/catalogs/whitex8
-rw-r--r--result/cdata4
-rw-r--r--result/cdata.rde7
-rw-r--r--result/cdata.rdr7
-rw-r--r--result/cdata.sax10
-rw-r--r--result/cdata.sax210
-rw-r--r--result/cdata26
-rw-r--r--result/cdata2.rde13
-rw-r--r--result/cdata2.rdr13
-rw-r--r--result/cdata2.sax17
-rw-r--r--result/cdata2.sax217
-rw-r--r--result/comment.xml6
-rw-r--r--result/comment.xml.rde13
-rw-r--r--result/comment.xml.rdr13
-rw-r--r--result/comment.xml.sax17
-rw-r--r--result/comment.xml.sax217
-rw-r--r--result/comment2.xml6
-rw-r--r--result/comment2.xml.rde9
-rw-r--r--result/comment2.xml.rdr9
-rw-r--r--result/comment2.xml.sax13
-rw-r--r--result/comment2.xml.sax213
-rw-r--r--result/comment3.xml164
-rw-r--r--result/comment3.xml.rde163
-rw-r--r--result/comment3.xml.rdr163
-rw-r--r--result/comment3.xml.sax167
-rw-r--r--result/comment3.xml.sax2167
-rw-r--r--result/comment4.xml5
-rw-r--r--result/comment4.xml.rde4
-rw-r--r--result/comment4.xml.rdr4
-rw-r--r--result/comment4.xml.sax8
-rw-r--r--result/comment4.xml.sax28
-rw-r--r--result/comment5.xml9
-rw-r--r--result/comment5.xml.rde8
-rw-r--r--result/comment5.xml.rdr8
-rw-r--r--result/comment5.xml.sax12
-rw-r--r--result/comment5.xml.sax212
-rw-r--r--result/comment6.xml14
-rw-r--r--result/comment6.xml.rde11
-rw-r--r--result/comment6.xml.rdr11
-rw-r--r--result/comment6.xml.sax17
-rw-r--r--result/comment6.xml.sax217
-rw-r--r--result/dav125
-rw-r--r--result/dav1.rde78
-rw-r--r--result/dav1.rdr78
-rw-r--r--result/dav1.sax81
-rw-r--r--result/dav1.sax281
-rw-r--r--result/dav104
-rw-r--r--result/dav10.rde9
-rw-r--r--result/dav10.rdr9
-rw-r--r--result/dav10.sax12
-rw-r--r--result/dav10.sax212
-rw-r--r--result/dav1121
-rw-r--r--result/dav11.rde60
-rw-r--r--result/dav11.rdr60
-rw-r--r--result/dav11.sax62
-rw-r--r--result/dav11.sax262
-rw-r--r--result/dav122
-rw-r--r--result/dav12.rde3
-rw-r--r--result/dav12.rdr3
-rw-r--r--result/dav12.sax6
-rw-r--r--result/dav12.sax26
-rw-r--r--result/dav1316
-rw-r--r--result/dav13.rde45
-rw-r--r--result/dav13.rdr45
-rw-r--r--result/dav13.sax46
-rw-r--r--result/dav13.sax246
-rw-r--r--result/dav1520
-rw-r--r--result/dav15.rde73
-rw-r--r--result/dav15.rdr73
-rw-r--r--result/dav15.sax76
-rw-r--r--result/dav15.sax276
-rw-r--r--result/dav166
-rw-r--r--result/dav16.rde13
-rw-r--r--result/dav16.rdr13
-rw-r--r--result/dav16.sax17
-rw-r--r--result/dav16.sax217
-rw-r--r--result/dav1722
-rw-r--r--result/dav17.rde75
-rw-r--r--result/dav17.rdr75
-rw-r--r--result/dav17.sax78
-rw-r--r--result/dav17.sax278
-rw-r--r--result/dav186
-rw-r--r--result/dav18.rde13
-rw-r--r--result/dav18.rdr13
-rw-r--r--result/dav18.sax17
-rw-r--r--result/dav18.sax217
-rw-r--r--result/dav1918
-rw-r--r--result/dav19.rde59
-rw-r--r--result/dav19.rdr59
-rw-r--r--result/dav19.sax62
-rw-r--r--result/dav19.sax262
-rw-r--r--result/dav224
-rw-r--r--result/dav2.rde81
-rw-r--r--result/dav2.rdr81
-rw-r--r--result/dav2.sax84
-rw-r--r--result/dav2.sax284
-rw-r--r--result/dav318
-rw-r--r--result/dav3.rde57
-rw-r--r--result/dav3.rdr57
-rw-r--r--result/dav3.sax63
-rw-r--r--result/dav3.sax263
-rw-r--r--result/dav416
-rw-r--r--result/dav4.rde47
-rw-r--r--result/dav4.rdr47
-rw-r--r--result/dav4.sax51
-rw-r--r--result/dav4.sax251
-rw-r--r--result/dav517
-rw-r--r--result/dav5.rde50
-rw-r--r--result/dav5.rdr50
-rw-r--r--result/dav5.sax54
-rw-r--r--result/dav5.sax254
-rw-r--r--result/dav622
-rw-r--r--result/dav6.rde63
-rw-r--r--result/dav6.rdr63
-rw-r--r--result/dav6.sax66
-rw-r--r--result/dav6.sax266
-rw-r--r--result/dav716
-rw-r--r--result/dav7.rde57
-rw-r--r--result/dav7.rdr57
-rw-r--r--result/dav7.sax60
-rw-r--r--result/dav7.sax260
-rw-r--r--result/dav814
-rw-r--r--result/dav8.rde51
-rw-r--r--result/dav8.rdr51
-rw-r--r--result/dav8.sax54
-rw-r--r--result/dav8.sax254
-rw-r--r--result/dav918
-rw-r--r--result/dav9.rde67
-rw-r--r--result/dav9.rdr67
-rw-r--r--result/dav9.sax70
-rw-r--r--result/dav9.sax270
-rw-r--r--result/defattr.xml6
-rw-r--r--result/defattr.xml.rde2
-rw-r--r--result/defattr.xml.rdr2
-rw-r--r--result/defattr.xml.sax9
-rw-r--r--result/defattr.xml.sax29
-rw-r--r--result/defattr2.xml8
-rw-r--r--result/defattr2.xml.rde2
-rw-r--r--result/defattr2.xml.rdr2
-rw-r--r--result/defattr2.xml.sax11
-rw-r--r--result/defattr2.xml.sax211
-rw-r--r--result/dia199
-rw-r--r--result/dia1.rde292
-rw-r--r--result/dia1.rdr292
-rw-r--r--result/dia1.sax323
-rw-r--r--result/dia1.sax2323
-rw-r--r--result/dia299
-rw-r--r--result/dia2.rde292
-rw-r--r--result/dia2.rdr292
-rw-r--r--result/dia2.sax323
-rw-r--r--result/dia2.sax2323
-rw-r--r--result/dtd14
-rw-r--r--result/dtd1.rde5
-rw-r--r--result/dtd1.rdr5
-rw-r--r--result/dtd1.sax9
-rw-r--r--result/dtd1.sax29
-rw-r--r--result/dtd109
-rw-r--r--result/dtd10.rde12
-rw-r--r--result/dtd10.rdr12
-rw-r--r--result/dtd10.sax21
-rw-r--r--result/dtd10.sax221
-rw-r--r--result/dtd116
-rw-r--r--result/dtd11.rde2
-rw-r--r--result/dtd11.rdr2
-rw-r--r--result/dtd11.sax9
-rw-r--r--result/dtd11.sax29
-rw-r--r--result/dtd126
-rw-r--r--result/dtd12.rde4
-rw-r--r--result/dtd12.rdr4
-rw-r--r--result/dtd12.sax17
-rw-r--r--result/dtd12.sax217
-rw-r--r--result/dtd137
-rw-r--r--result/dtd13.rde4
-rw-r--r--result/dtd13.rdr4
-rw-r--r--result/dtd13.sax10
-rw-r--r--result/dtd13.sax210
-rw-r--r--result/dtd25
-rw-r--r--result/dtd2.rde4
-rw-r--r--result/dtd2.rdr4
-rw-r--r--result/dtd2.sax9
-rw-r--r--result/dtd2.sax29
-rw-r--r--result/dtd35
-rw-r--r--result/dtd3.rde4
-rw-r--r--result/dtd3.rdr4
-rw-r--r--result/dtd3.sax9
-rw-r--r--result/dtd3.sax29
-rw-r--r--result/dtd45
-rw-r--r--result/dtd4.rde2
-rw-r--r--result/dtd4.rdr2
-rw-r--r--result/dtd4.sax8
-rw-r--r--result/dtd4.sax28
-rw-r--r--result/dtd57
-rw-r--r--result/dtd5.rde11
-rw-r--r--result/dtd5.rdr11
-rw-r--r--result/dtd5.sax18
-rw-r--r--result/dtd5.sax218
-rw-r--r--result/dtd67
-rw-r--r--result/dtd6.rde12
-rw-r--r--result/dtd6.rdr12
-rw-r--r--result/dtd6.sax19
-rw-r--r--result/dtd6.sax219
-rw-r--r--result/dtd77
-rw-r--r--result/dtd7.rde9
-rw-r--r--result/dtd7.rdr9
-rw-r--r--result/dtd7.sax16
-rw-r--r--result/dtd7.sax216
-rw-r--r--result/dtd89
-rw-r--r--result/dtd8.rde9
-rw-r--r--result/dtd8.rdr9
-rw-r--r--result/dtd8.sax18
-rw-r--r--result/dtd8.sax218
-rw-r--r--result/dtd99
-rw-r--r--result/dtd9.rde9
-rw-r--r--result/dtd9.rdr9
-rw-r--r--result/dtd9.sax18
-rw-r--r--result/dtd9.sax218
-rw-r--r--result/ebcdic_566012.xml1
-rw-r--r--result/ebcdic_566012.xml.rde1
-rw-r--r--result/ebcdic_566012.xml.rdr1
-rw-r--r--result/ebcdic_566012.xml.sax5
-rw-r--r--result/ebcdic_566012.xml.sax25
-rw-r--r--result/emptycdata.xml4
-rw-r--r--result/emptycdata.xml.rde7
-rw-r--r--result/emptycdata.xml.rdr7
-rw-r--r--result/emptycdata.xml.sax10
-rw-r--r--result/emptycdata.xml.sax210
-rw-r--r--result/ent17
-rw-r--r--result/ent1.rde6
-rw-r--r--result/ent1.rdr8
-rw-r--r--result/ent1.sax16
-rw-r--r--result/ent1.sax216
-rw-r--r--result/ent1014
-rw-r--r--result/ent10.rde14
-rw-r--r--result/ent10.rdr8
-rw-r--r--result/ent10.sax31
-rw-r--r--result/ent10.sax231
-rw-r--r--result/ent115
-rw-r--r--result/ent11.rde5
-rw-r--r--result/ent11.rdr4
-rw-r--r--result/ent11.sax13
-rw-r--r--result/ent11.sax213
-rw-r--r--result/ent128
-rw-r--r--result/ent12.rde10
-rw-r--r--result/ent12.rdr10
-rw-r--r--result/ent12.sax21
-rw-r--r--result/ent12.sax221
-rw-r--r--result/ent135
-rw-r--r--result/ent13.rde4
-rw-r--r--result/ent13.rdr4
-rw-r--r--result/ent13.sax11
-rw-r--r--result/ent13.sax211
-rw-r--r--result/ent210
-rw-r--r--result/ent2.rde15
-rw-r--r--result/ent2.rdr13
-rw-r--r--result/ent2.sax26
-rw-r--r--result/ent2.sax226
-rw-r--r--result/ent37
-rw-r--r--result/ent3.rde6
-rw-r--r--result/ent3.rdr6
-rw-r--r--result/ent3.sax12
-rw-r--r--result/ent3.sax212
-rw-r--r--result/ent47
-rw-r--r--result/ent4.rde6
-rw-r--r--result/ent4.rdr6
-rw-r--r--result/ent4.sax16
-rw-r--r--result/ent4.sax216
-rw-r--r--result/ent55
-rw-r--r--result/ent5.rde6
-rw-r--r--result/ent5.rdr6
-rw-r--r--result/ent5.sax13
-rw-r--r--result/ent5.sax213
-rw-r--r--result/ent69
-rw-r--r--result/ent6.rde2
-rw-r--r--result/ent6.rdr2
-rw-r--r--result/ent6.sax17
-rw-r--r--result/ent6.sax217
-rw-r--r--result/ent78
-rw-r--r--result/ent7.rde6
-rw-r--r--result/ent7.rdr8
-rw-r--r--result/ent7.sax17
-rw-r--r--result/ent7.sax217
-rw-r--r--result/ent810
-rw-r--r--result/ent8.rde20
-rw-r--r--result/ent8.rdr21
-rw-r--r--result/ent8.sax37
-rw-r--r--result/ent8.sax237
-rw-r--r--result/ent961
-rw-r--r--result/ent9.rde300
-rw-r--r--result/ent9.rdr280
-rw-r--r--result/ent9.sax310
-rw-r--r--result/ent9.sax2310
-rw-r--r--result/errors/attr1.xml0
-rw-r--r--result/errors/attr1.xml.err6
-rw-r--r--result/errors/attr1.xml.str10
-rw-r--r--result/errors/attr2.xml0
-rw-r--r--result/errors/attr2.xml.err6
-rw-r--r--result/errors/attr2.xml.str10
-rw-r--r--result/errors/attr3.xml6
-rw-r--r--result/errors/attr3.xml.err3
-rw-r--r--result/errors/attr3.xml.str3
-rw-r--r--result/errors/attr4.xml0
-rw-r--r--result/errors/attr4.xml.err12
-rw-r--r--result/errors/attr4.xml.str10
-rw-r--r--result/errors/cdata.xml0
-rw-r--r--result/errors/cdata.xml.err4
-rw-r--r--result/errors/cdata.xml.str5
-rw-r--r--result/errors/charref1.xml0
-rw-r--r--result/errors/charref1.xml.err3
-rw-r--r--result/errors/charref1.xml.str4
-rw-r--r--result/errors/comment1.xml0
-rw-r--r--result/errors/comment1.xml.err6
-rw-r--r--result/errors/comment1.xml.str4
-rw-r--r--result/errors/content1.xml0
-rw-r--r--result/errors/content1.xml.err16
-rw-r--r--result/errors/content1.xml.str14
-rw-r--r--result/errors/extparsedent.xml5
-rw-r--r--result/errors/extparsedent.xml.err0
-rw-r--r--result/errors/extparsedent.xml.str0
-rw-r--r--result/errors/name.xml0
-rw-r--r--result/errors/name.xml.err3
-rw-r--r--result/errors/name.xml.str4
-rw-r--r--result/errors/name2.xml0
-rw-r--r--result/errors/name2.xml.err6
-rw-r--r--result/errors/name2.xml.str10
-rw-r--r--result/eve.xml6
-rw-r--r--result/eve.xml.rde5
-rw-r--r--result/eve.xml.rdr5
-rw-r--r--result/eve.xml.sax11
-rw-r--r--result/eve.xml.sax211
-rw-r--r--result/example.dtd0
-rw-r--r--result/expr/base85
-rw-r--r--result/intsubset.xml5
-rw-r--r--result/intsubset.xml.rde2
-rw-r--r--result/intsubset.xml.rdr2
-rw-r--r--result/intsubset.xml.sax9
-rw-r--r--result/intsubset.xml.sax29
-rw-r--r--result/intsubset2.xml250
-rw-r--r--result/intsubset2.xml.rde5
-rw-r--r--result/intsubset2.xml.rdr5
-rw-r--r--result/intsubset2.xml.sax286
-rw-r--r--result/intsubset2.xml.sax2286
-rw-r--r--result/isolat12
-rw-r--r--result/isolat1.rde3
-rw-r--r--result/isolat1.rdr3
-rw-r--r--result/isolat1.sax7
-rw-r--r--result/isolat1.sax27
-rw-r--r--result/isolat2107
-rw-r--r--result/isolat2.rde108
-rw-r--r--result/isolat2.rdr108
-rw-r--r--result/isolat2.sax35
-rw-r--r--result/isolat2.sax235
-rw-r--r--result/isolat310
-rw-r--r--result/isolat3.rde23
-rw-r--r--result/isolat3.rdr23
-rw-r--r--result/isolat3.sax29
-rw-r--r--result/isolat3.sax229
-rw-r--r--result/japancrlf.xml4
-rw-r--r--result/japancrlf.xml.rde7
-rw-r--r--result/japancrlf.xml.rdr7
-rw-r--r--result/japancrlf.xml.sax11
-rw-r--r--result/japancrlf.xml.sax211
-rw-r--r--result/namespaces/err_0.xml2
-rw-r--r--result/namespaces/err_0.xml.err0
-rw-r--r--result/namespaces/err_1.xml2
-rw-r--r--result/namespaces/err_1.xml.err3
-rw-r--r--result/namespaces/err_10.xml0
-rw-r--r--result/namespaces/err_10.xml.err3
-rw-r--r--result/namespaces/err_11.xml0
-rw-r--r--result/namespaces/err_11.xml.err3
-rw-r--r--result/namespaces/err_2.xml2
-rw-r--r--result/namespaces/err_2.xml.err3
-rw-r--r--result/namespaces/err_3.xml2
-rw-r--r--result/namespaces/err_3.xml.err3
-rw-r--r--result/namespaces/err_4.xml2
-rw-r--r--result/namespaces/err_4.xml.err3
-rw-r--r--result/namespaces/err_5.xml2
-rw-r--r--result/namespaces/err_5.xml.err3
-rw-r--r--result/namespaces/err_6.xml2
-rw-r--r--result/namespaces/err_6.xml.err3
-rw-r--r--result/namespaces/err_7.xml2
-rw-r--r--result/namespaces/err_7.xml.err3
-rw-r--r--result/namespaces/err_8.xml2
-rw-r--r--result/namespaces/err_8.xml.err3
-rw-r--r--result/namespaces/err_9.xml2
-rw-r--r--result/namespaces/err_9.xml.err3
-rw-r--r--result/noent/att12
-rw-r--r--result/noent/att1018
-rw-r--r--result/noent/att119
-rw-r--r--result/noent/att22
-rw-r--r--result/noent/att32
-rw-r--r--result/noent/att49264
-rw-r--r--result/noent/att540
-rw-r--r--result/noent/att66
-rw-r--r--result/noent/att711
-rw-r--r--result/noent/att82
-rw-r--r--result/noent/att96
-rw-r--r--result/noent/attrib.xml2
-rw-r--r--result/noent/badcomment.xml17
-rw-r--r--result/noent/bigentname.xml6
-rw-r--r--result/noent/bigname.xml2
-rw-r--r--result/noent/bigname2.xml2
-rw-r--r--result/noent/cdata4
-rw-r--r--result/noent/cdata26
-rw-r--r--result/noent/comment.xml6
-rw-r--r--result/noent/comment2.xml6
-rw-r--r--result/noent/comment3.xml164
-rw-r--r--result/noent/comment4.xml5
-rw-r--r--result/noent/comment5.xml9
-rw-r--r--result/noent/comment6.xml14
-rw-r--r--result/noent/dav125
-rw-r--r--result/noent/dav104
-rw-r--r--result/noent/dav1121
-rw-r--r--result/noent/dav122
-rw-r--r--result/noent/dav1316
-rw-r--r--result/noent/dav1520
-rw-r--r--result/noent/dav166
-rw-r--r--result/noent/dav1722
-rw-r--r--result/noent/dav186
-rw-r--r--result/noent/dav1918
-rw-r--r--result/noent/dav224
-rw-r--r--result/noent/dav318
-rw-r--r--result/noent/dav416
-rw-r--r--result/noent/dav517
-rw-r--r--result/noent/dav622
-rw-r--r--result/noent/dav716
-rw-r--r--result/noent/dav814
-rw-r--r--result/noent/dav918
-rw-r--r--result/noent/defattr.xml6
-rw-r--r--result/noent/defattr2.xml8
-rw-r--r--result/noent/dia199
-rw-r--r--result/noent/dia299
-rw-r--r--result/noent/dtd14
-rw-r--r--result/noent/dtd109
-rw-r--r--result/noent/dtd116
-rw-r--r--result/noent/dtd126
-rw-r--r--result/noent/dtd137
-rw-r--r--result/noent/dtd25
-rw-r--r--result/noent/dtd35
-rw-r--r--result/noent/dtd45
-rw-r--r--result/noent/dtd57
-rw-r--r--result/noent/dtd67
-rw-r--r--result/noent/dtd77
-rw-r--r--result/noent/dtd89
-rw-r--r--result/noent/dtd99
-rw-r--r--result/noent/ebcdic_566012.xml1
-rw-r--r--result/noent/emptycdata.xml4
-rw-r--r--result/noent/ent17
-rw-r--r--result/noent/ent1018
-rw-r--r--result/noent/ent116
-rw-r--r--result/noent/ent128
-rw-r--r--result/noent/ent135
-rw-r--r--result/noent/ent212
-rw-r--r--result/noent/ent37
-rw-r--r--result/noent/ent47
-rw-r--r--result/noent/ent55
-rw-r--r--result/noent/ent69
-rw-r--r--result/noent/ent78
-rw-r--r--result/noent/ent810
-rw-r--r--result/noent/ent961
-rw-r--r--result/noent/eve.xml6
-rw-r--r--result/noent/intsubset.xml5
-rw-r--r--result/noent/intsubset2.xml250
-rw-r--r--result/noent/isolat12
-rw-r--r--result/noent/isolat2107
-rw-r--r--result/noent/isolat310
-rw-r--r--result/noent/japancrlf.xml4
-rw-r--r--result/noent/ns4
-rw-r--r--result/noent/ns22
-rw-r--r--result/noent/ns32
-rw-r--r--result/noent/ns42
-rw-r--r--result/noent/ns54
-rw-r--r--result/noent/ns65
-rw-r--r--result/noent/ns72
-rw-r--r--result/noent/nsclean.xml5
-rw-r--r--result/noent/p3p19
-rw-r--r--result/noent/pi.xml6
-rw-r--r--result/noent/pi2.xml6
-rw-r--r--result/noent/rdf181
-rw-r--r--result/noent/rdf21899
-rw-r--r--result/noent/slashdot.rdf65
-rw-r--r--result/noent/slashdot.xml113
-rw-r--r--result/noent/slashdot16.xmlbin0 -> 10374 bytes
-rw-r--r--result/noent/svg1161
-rw-r--r--result/noent/svg256
-rw-r--r--result/noent/svg3723
-rw-r--r--result/noent/title.xml2
-rw-r--r--result/noent/tstblanks.xml2
-rw-r--r--result/noent/utf16bebom.xmlbin0 -> 344 bytes
-rw-r--r--result/noent/utf16bom.xmlbin0 -> 258 bytes
-rw-r--r--result/noent/utf16lebom.xmlbin0 -> 344 bytes
-rw-r--r--result/noent/utf8bom.xml2
-rw-r--r--result/noent/wap.xml24
-rw-r--r--result/noent/winblanks.xml6
-rw-r--r--result/noent/wml.xml10
-rw-r--r--result/noent/xhtml130
-rw-r--r--result/noent/xhtmlcomp7
-rw-r--r--result/noent/xml19
-rw-r--r--result/noent/xml28
-rw-r--r--result/ns4
-rw-r--r--result/ns.rde7
-rw-r--r--result/ns.rdr7
-rw-r--r--result/ns.sax11
-rw-r--r--result/ns.sax211
-rw-r--r--result/ns22
-rw-r--r--result/ns2.rde1
-rw-r--r--result/ns2.rdr1
-rw-r--r--result/ns2.sax5
-rw-r--r--result/ns2.sax25
-rw-r--r--result/ns32
-rw-r--r--result/ns3.rde1
-rw-r--r--result/ns3.rdr1
-rw-r--r--result/ns3.sax5
-rw-r--r--result/ns3.sax25
-rw-r--r--result/ns42
-rw-r--r--result/ns4.rde1
-rw-r--r--result/ns4.rdr1
-rw-r--r--result/ns4.sax5
-rw-r--r--result/ns4.sax25
-rw-r--r--result/ns54
-rw-r--r--result/ns5.rde7
-rw-r--r--result/ns5.rdr7
-rw-r--r--result/ns5.sax11
-rw-r--r--result/ns5.sax211
-rw-r--r--result/ns65
-rw-r--r--result/ns6.rde10
-rw-r--r--result/ns6.rdr10
-rw-r--r--result/ns6.sax15
-rw-r--r--result/ns6.sax215
-rw-r--r--result/ns72
-rw-r--r--result/ns7.rde1
-rw-r--r--result/ns7.rdr1
-rw-r--r--result/ns7.sax5
-rw-r--r--result/ns7.sax25
-rw-r--r--result/nsclean.xml5
-rw-r--r--result/nsclean.xml.rde10
-rw-r--r--result/nsclean.xml.rdr10
-rw-r--r--result/nsclean.xml.sax13
-rw-r--r--result/nsclean.xml.sax213
-rw-r--r--result/p3p19
-rw-r--r--result/p3p.rde55
-rw-r--r--result/p3p.rdr55
-rw-r--r--result/p3p.sax63
-rw-r--r--result/p3p.sax265
-rw-r--r--result/pattern/conj47
-rw-r--r--result/pattern/multiple91
-rw-r--r--result/pattern/namespaces20
-rw-r--r--result/pattern/simple12
-rw-r--r--result/pi.xml6
-rw-r--r--result/pi.xml.rde13
-rw-r--r--result/pi.xml.rdr13
-rw-r--r--result/pi.xml.sax17
-rw-r--r--result/pi.xml.sax217
-rw-r--r--result/pi2.xml6
-rw-r--r--result/pi2.xml.rde9
-rw-r--r--result/pi2.xml.rdr9
-rw-r--r--result/pi2.xml.sax13
-rw-r--r--result/pi2.xml.sax213
-rw-r--r--result/rdf181
-rw-r--r--result/rdf1.rde214
-rw-r--r--result/rdf1.rdr214
-rw-r--r--result/rdf1.sax186
-rw-r--r--result/rdf1.sax2186
-rw-r--r--result/rdf21899
-rw-r--r--result/rdf2.rde2008
-rw-r--r--result/rdf2.rdr2008
-rw-r--r--result/rdf2.sax191
-rw-r--r--result/rdf2.sax2191
-rw-r--r--result/regexp/branch14
-rw-r--r--result/regexp/bug31633820
-rw-r--r--result/regexp/bug42059610
-rw-r--r--result/regexp/content12
-rw-r--r--result/regexp/hard12
-rw-r--r--result/regexp/ncname6
-rw-r--r--result/regexp/ranges15
-rw-r--r--result/regexp/ranges214
-rw-r--r--result/regexp/xpath32
-rw-r--r--result/relaxng/302836_00
-rw-r--r--result/relaxng/302836_0.err1
-rw-r--r--result/relaxng/302836_err1
-rw-r--r--result/relaxng/302836_valid0
-rw-r--r--result/relaxng/307377_00
-rw-r--r--result/relaxng/307377_0.err2
-rw-r--r--result/relaxng/307377_10
-rw-r--r--result/relaxng/307377_1.err3
-rw-r--r--result/relaxng/307377_20
-rw-r--r--result/relaxng/307377_2.err1
-rw-r--r--result/relaxng/307377_err1
-rw-r--r--result/relaxng/307377_valid0
-rw-r--r--result/relaxng/492317_00
-rw-r--r--result/relaxng/492317_0.err1
-rw-r--r--result/relaxng/492317_10
-rw-r--r--result/relaxng/492317_1.err1
-rw-r--r--result/relaxng/492317_20
-rw-r--r--result/relaxng/492317_2.err3
-rw-r--r--result/relaxng/492317_err1
-rw-r--r--result/relaxng/492317_valid0
-rw-r--r--result/relaxng/558452_00
-rw-r--r--result/relaxng/558452_0.err1
-rw-r--r--result/relaxng/558452_10
-rw-r--r--result/relaxng/558452_1.err2
-rw-r--r--result/relaxng/558452_20
-rw-r--r--result/relaxng/558452_2.err1
-rw-r--r--result/relaxng/558452_30
-rw-r--r--result/relaxng/558452_3.err1
-rw-r--r--result/relaxng/558452_40
-rw-r--r--result/relaxng/558452_4.err2
-rw-r--r--result/relaxng/558452_err1
-rw-r--r--result/relaxng/558452_valid0
-rw-r--r--result/relaxng/595792-ext_err1
-rw-r--r--result/relaxng/595792-ext_valid0
-rw-r--r--result/relaxng/595792_00
-rw-r--r--result/relaxng/595792_0.err1
-rw-r--r--result/relaxng/595792_err1
-rw-r--r--result/relaxng/595792_valid0
-rw-r--r--result/relaxng/710744_10
-rw-r--r--result/relaxng/710744_1.err1
-rw-r--r--result/relaxng/710744_20
-rw-r--r--result/relaxng/710744_2.err2
-rw-r--r--result/relaxng/OpenDocumentSub_00
-rw-r--r--result/relaxng/OpenDocumentSub_0.err1
-rw-r--r--result/relaxng/OpenDocumentSub_err1
-rw-r--r--result/relaxng/OpenDocumentSub_valid0
-rw-r--r--result/relaxng/addressBook_err1
-rw-r--r--result/relaxng/addressBook_valid0
-rw-r--r--result/relaxng/choice0_00
-rw-r--r--result/relaxng/choice0_0.err1
-rw-r--r--result/relaxng/choice0_10
-rw-r--r--result/relaxng/choice0_1.err1
-rw-r--r--result/relaxng/choice0_20
-rw-r--r--result/relaxng/choice0_2.err1
-rw-r--r--result/relaxng/choice0_30
-rw-r--r--result/relaxng/choice0_3.err1
-rw-r--r--result/relaxng/choice0_40
-rw-r--r--result/relaxng/choice0_4.err2
-rw-r--r--result/relaxng/choice0_50
-rw-r--r--result/relaxng/choice0_5.err2
-rw-r--r--result/relaxng/choice0_60
-rw-r--r--result/relaxng/choice0_6.err2
-rw-r--r--result/relaxng/choice0_70
-rw-r--r--result/relaxng/choice0_7.err3
-rw-r--r--result/relaxng/choice0_80
-rw-r--r--result/relaxng/choice0_8.err3
-rw-r--r--result/relaxng/choice0_err1
-rw-r--r--result/relaxng/choice0_valid0
-rw-r--r--result/relaxng/compare0_00
-rw-r--r--result/relaxng/compare0_0.err3
-rw-r--r--result/relaxng/compare0_err1
-rw-r--r--result/relaxng/compare0_valid0
-rw-r--r--result/relaxng/comps_00
-rw-r--r--result/relaxng/comps_0.err1
-rw-r--r--result/relaxng/comps_err1
-rw-r--r--result/relaxng/comps_valid0
-rw-r--r--result/relaxng/demo2_err1
-rw-r--r--result/relaxng/demo2_valid0
-rw-r--r--result/relaxng/demo3_err1
-rw-r--r--result/relaxng/demo3_valid0
-rw-r--r--result/relaxng/demo_err1
-rw-r--r--result/relaxng/demo_valid0
-rw-r--r--result/relaxng/docbook_00
-rw-r--r--result/relaxng/docbook_0.err1
-rw-r--r--result/relaxng/docbook_err1
-rw-r--r--result/relaxng/docbook_valid0
-rw-r--r--result/relaxng/empty0_00
-rw-r--r--result/relaxng/empty0_0.err1
-rw-r--r--result/relaxng/empty0_err1
-rw-r--r--result/relaxng/empty0_valid0
-rw-r--r--result/relaxng/empty1_00
-rw-r--r--result/relaxng/empty1_0.err1
-rw-r--r--result/relaxng/empty1_10
-rw-r--r--result/relaxng/empty1_1.err1
-rw-r--r--result/relaxng/empty1_err1
-rw-r--r--result/relaxng/empty1_valid0
-rw-r--r--result/relaxng/inline2_err1
-rw-r--r--result/relaxng/inline2_valid0
-rw-r--r--result/relaxng/inline3_err1
-rw-r--r--result/relaxng/inline3_valid0
-rw-r--r--result/relaxng/inline_err1
-rw-r--r--result/relaxng/inline_valid0
-rw-r--r--result/relaxng/interleave0_0_err1
-rw-r--r--result/relaxng/interleave0_0_valid0
-rw-r--r--result/relaxng/interleave1_0_err1
-rw-r--r--result/relaxng/interleave1_0_valid0
-rw-r--r--result/relaxng/libvirt_00
-rw-r--r--result/relaxng/libvirt_0.err1
-rw-r--r--result/relaxng/libvirt_err1
-rw-r--r--result/relaxng/libvirt_valid0
-rw-r--r--result/relaxng/list_00
-rw-r--r--result/relaxng/list_0.err1
-rw-r--r--result/relaxng/list_10
-rw-r--r--result/relaxng/list_1.err2
-rw-r--r--result/relaxng/list_err1
-rw-r--r--result/relaxng/list_valid0
-rw-r--r--result/relaxng/pattern1_err1
-rw-r--r--result/relaxng/pattern1_valid0
-rw-r--r--result/relaxng/pattern2_err1
-rw-r--r--result/relaxng/pattern2_valid0
-rw-r--r--result/relaxng/proofsystem_err1
-rw-r--r--result/relaxng/proofsystem_valid0
-rw-r--r--result/relaxng/rngbug-001_err1
-rw-r--r--result/relaxng/rngbug-001_valid0
-rw-r--r--result/relaxng/spec1_10
-rw-r--r--result/relaxng/spec1_1.err1
-rw-r--r--result/relaxng/spec1_err1
-rw-r--r--result/relaxng/spec1_valid0
-rw-r--r--result/relaxng/spec_00
-rw-r--r--result/relaxng/spec_0.err1
-rw-r--r--result/relaxng/spec_err1
-rw-r--r--result/relaxng/spec_valid0
-rw-r--r--result/relaxng/table_err1
-rw-r--r--result/relaxng/table_valid0
-rw-r--r--result/relaxng/tutor10_10_10
-rw-r--r--result/relaxng/tutor10_10_1.err1
-rw-r--r--result/relaxng/tutor10_10_err1
-rw-r--r--result/relaxng/tutor10_10_valid0
-rw-r--r--result/relaxng/tutor10_1_10
-rw-r--r--result/relaxng/tutor10_1_1.err1
-rw-r--r--result/relaxng/tutor10_1_20
-rw-r--r--result/relaxng/tutor10_1_2.err1
-rw-r--r--result/relaxng/tutor10_1_30
-rw-r--r--result/relaxng/tutor10_1_3.err1
-rw-r--r--result/relaxng/tutor10_1_40
-rw-r--r--result/relaxng/tutor10_1_4.err2
-rw-r--r--result/relaxng/tutor10_1_50
-rw-r--r--result/relaxng/tutor10_1_5.err2
-rw-r--r--result/relaxng/tutor10_1_60
-rw-r--r--result/relaxng/tutor10_1_6.err2
-rw-r--r--result/relaxng/tutor10_1_err1
-rw-r--r--result/relaxng/tutor10_1_valid0
-rw-r--r--result/relaxng/tutor10_2_10
-rw-r--r--result/relaxng/tutor10_2_1.err1
-rw-r--r--result/relaxng/tutor10_2_20
-rw-r--r--result/relaxng/tutor10_2_2.err1
-rw-r--r--result/relaxng/tutor10_2_30
-rw-r--r--result/relaxng/tutor10_2_3.err2
-rw-r--r--result/relaxng/tutor10_2_40
-rw-r--r--result/relaxng/tutor10_2_4.err2
-rw-r--r--result/relaxng/tutor10_2_err1
-rw-r--r--result/relaxng/tutor10_2_valid0
-rw-r--r--result/relaxng/tutor10_3_10
-rw-r--r--result/relaxng/tutor10_3_1.err1
-rw-r--r--result/relaxng/tutor10_3_err1
-rw-r--r--result/relaxng/tutor10_3_valid0
-rw-r--r--result/relaxng/tutor10_4_10
-rw-r--r--result/relaxng/tutor10_4_1.err1
-rw-r--r--result/relaxng/tutor10_4_err1
-rw-r--r--result/relaxng/tutor10_4_valid0
-rw-r--r--result/relaxng/tutor10_5_10
-rw-r--r--result/relaxng/tutor10_5_1.err1
-rw-r--r--result/relaxng/tutor10_5_err1
-rw-r--r--result/relaxng/tutor10_5_valid0
-rw-r--r--result/relaxng/tutor10_6_10
-rw-r--r--result/relaxng/tutor10_6_1.err1
-rw-r--r--result/relaxng/tutor10_6_err1
-rw-r--r--result/relaxng/tutor10_6_valid0
-rw-r--r--result/relaxng/tutor10_7_10
-rw-r--r--result/relaxng/tutor10_7_1.err1
-rw-r--r--result/relaxng/tutor10_7_20
-rw-r--r--result/relaxng/tutor10_7_2.err1
-rw-r--r--result/relaxng/tutor10_7_30
-rw-r--r--result/relaxng/tutor10_7_3.err2
-rw-r--r--result/relaxng/tutor10_7_err1
-rw-r--r--result/relaxng/tutor10_7_valid0
-rw-r--r--result/relaxng/tutor10_8_10
-rw-r--r--result/relaxng/tutor10_8_1.err1
-rw-r--r--result/relaxng/tutor10_8_20
-rw-r--r--result/relaxng/tutor10_8_2.err1
-rw-r--r--result/relaxng/tutor10_8_30
-rw-r--r--result/relaxng/tutor10_8_3.err2
-rw-r--r--result/relaxng/tutor10_8_err1
-rw-r--r--result/relaxng/tutor10_8_valid0
-rw-r--r--result/relaxng/tutor10_9_10
-rw-r--r--result/relaxng/tutor10_9_1.err1
-rw-r--r--result/relaxng/tutor10_9_err1
-rw-r--r--result/relaxng/tutor10_9_valid0
-rw-r--r--result/relaxng/tutor11_1_10
-rw-r--r--result/relaxng/tutor11_1_1.err1
-rw-r--r--result/relaxng/tutor11_1_20
-rw-r--r--result/relaxng/tutor11_1_2.err1
-rw-r--r--result/relaxng/tutor11_1_30
-rw-r--r--result/relaxng/tutor11_1_3.err1
-rw-r--r--result/relaxng/tutor11_1_err1
-rw-r--r--result/relaxng/tutor11_1_valid0
-rw-r--r--result/relaxng/tutor11_2_10
-rw-r--r--result/relaxng/tutor11_2_1.err1
-rw-r--r--result/relaxng/tutor11_2_20
-rw-r--r--result/relaxng/tutor11_2_2.err2
-rw-r--r--result/relaxng/tutor11_2_30
-rw-r--r--result/relaxng/tutor11_2_3.err2
-rw-r--r--result/relaxng/tutor11_2_err1
-rw-r--r--result/relaxng/tutor11_2_valid0
-rw-r--r--result/relaxng/tutor11_3_10
-rw-r--r--result/relaxng/tutor11_3_1.err2
-rw-r--r--result/relaxng/tutor11_3_err1
-rw-r--r--result/relaxng/tutor11_3_valid0
-rw-r--r--result/relaxng/tutor11_4_10
-rw-r--r--result/relaxng/tutor11_4_1.err1
-rw-r--r--result/relaxng/tutor11_4_err1
-rw-r--r--result/relaxng/tutor11_4_valid0
-rw-r--r--result/relaxng/tutor12_1_10
-rw-r--r--result/relaxng/tutor12_1_1.err1
-rw-r--r--result/relaxng/tutor12_1_err1
-rw-r--r--result/relaxng/tutor12_1_valid0
-rw-r--r--result/relaxng/tutor13_1_10
-rw-r--r--result/relaxng/tutor13_1_1.err1
-rw-r--r--result/relaxng/tutor13_1_err1
-rw-r--r--result/relaxng/tutor13_1_valid0
-rw-r--r--result/relaxng/tutor14_1_err1
-rw-r--r--result/relaxng/tutor14_1_valid0
-rw-r--r--result/relaxng/tutor1_1_10
-rw-r--r--result/relaxng/tutor1_1_1.err1
-rw-r--r--result/relaxng/tutor1_1_err1
-rw-r--r--result/relaxng/tutor1_1_valid0
-rw-r--r--result/relaxng/tutor1_2_10
-rw-r--r--result/relaxng/tutor1_2_1.err1
-rw-r--r--result/relaxng/tutor1_2_err1
-rw-r--r--result/relaxng/tutor1_2_valid0
-rw-r--r--result/relaxng/tutor1_3_10
-rw-r--r--result/relaxng/tutor1_3_1.err1
-rw-r--r--result/relaxng/tutor1_3_err1
-rw-r--r--result/relaxng/tutor1_3_valid0
-rw-r--r--result/relaxng/tutor1_4_10
-rw-r--r--result/relaxng/tutor1_4_1.err1
-rw-r--r--result/relaxng/tutor1_4_err1
-rw-r--r--result/relaxng/tutor1_4_valid0
-rw-r--r--result/relaxng/tutor2_1_10
-rw-r--r--result/relaxng/tutor2_1_1.err1
-rw-r--r--result/relaxng/tutor2_1_err1
-rw-r--r--result/relaxng/tutor2_1_valid0
-rw-r--r--result/relaxng/tutor3_1_10
-rw-r--r--result/relaxng/tutor3_1_1.err1
-rw-r--r--result/relaxng/tutor3_1_20
-rw-r--r--result/relaxng/tutor3_1_2.err1
-rw-r--r--result/relaxng/tutor3_1_err1
-rw-r--r--result/relaxng/tutor3_1_valid0
-rw-r--r--result/relaxng/tutor3_2_10
-rw-r--r--result/relaxng/tutor3_2_1.err2
-rw-r--r--result/relaxng/tutor3_2_err1
-rw-r--r--result/relaxng/tutor3_2_valid0
-rw-r--r--result/relaxng/tutor3_3_10
-rw-r--r--result/relaxng/tutor3_3_1.err1
-rw-r--r--result/relaxng/tutor3_3_err1
-rw-r--r--result/relaxng/tutor3_3_valid0
-rw-r--r--result/relaxng/tutor3_4_10
-rw-r--r--result/relaxng/tutor3_4_1.err1
-rw-r--r--result/relaxng/tutor3_4_err1
-rw-r--r--result/relaxng/tutor3_4_valid0
-rw-r--r--result/relaxng/tutor3_5_10
-rw-r--r--result/relaxng/tutor3_5_1.err1
-rw-r--r--result/relaxng/tutor3_5_20
-rw-r--r--result/relaxng/tutor3_5_2.err3
-rw-r--r--result/relaxng/tutor3_5_err1
-rw-r--r--result/relaxng/tutor3_5_valid0
-rw-r--r--result/relaxng/tutor3_6_10
-rw-r--r--result/relaxng/tutor3_6_1.err1
-rw-r--r--result/relaxng/tutor3_6_err1
-rw-r--r--result/relaxng/tutor3_6_valid0
-rw-r--r--result/relaxng/tutor3_7_10
-rw-r--r--result/relaxng/tutor3_7_1.err2
-rw-r--r--result/relaxng/tutor3_7_err4
-rw-r--r--result/relaxng/tutor3_7_valid0
-rw-r--r--result/relaxng/tutor3_8_10
-rw-r--r--result/relaxng/tutor3_8_1.err1
-rw-r--r--result/relaxng/tutor3_8_err1
-rw-r--r--result/relaxng/tutor3_8_valid0
-rw-r--r--result/relaxng/tutor3_9_10
-rw-r--r--result/relaxng/tutor3_9_1.err1
-rw-r--r--result/relaxng/tutor3_9_err1
-rw-r--r--result/relaxng/tutor3_9_valid0
-rw-r--r--result/relaxng/tutor4_1_10
-rw-r--r--result/relaxng/tutor4_1_1.err1
-rw-r--r--result/relaxng/tutor4_1_err1
-rw-r--r--result/relaxng/tutor4_1_valid0
-rw-r--r--result/relaxng/tutor4_2_10
-rw-r--r--result/relaxng/tutor4_2_1.err1
-rw-r--r--result/relaxng/tutor4_2_err1
-rw-r--r--result/relaxng/tutor4_2_valid0
-rw-r--r--result/relaxng/tutor4_3_10
-rw-r--r--result/relaxng/tutor4_3_1.err1
-rw-r--r--result/relaxng/tutor4_3_20
-rw-r--r--result/relaxng/tutor4_3_2.err1
-rw-r--r--result/relaxng/tutor4_3_30
-rw-r--r--result/relaxng/tutor4_3_3.err1
-rw-r--r--result/relaxng/tutor4_3_40
-rw-r--r--result/relaxng/tutor4_3_4.err1
-rw-r--r--result/relaxng/tutor4_3_50
-rw-r--r--result/relaxng/tutor4_3_5.err1
-rw-r--r--result/relaxng/tutor4_3_60
-rw-r--r--result/relaxng/tutor4_3_6.err1
-rw-r--r--result/relaxng/tutor4_3_err1
-rw-r--r--result/relaxng/tutor4_3_valid0
-rw-r--r--result/relaxng/tutor4_4_10
-rw-r--r--result/relaxng/tutor4_4_1.err2
-rw-r--r--result/relaxng/tutor4_4_err1
-rw-r--r--result/relaxng/tutor4_4_valid0
-rw-r--r--result/relaxng/tutor5_1_10
-rw-r--r--result/relaxng/tutor5_1_1.err1
-rw-r--r--result/relaxng/tutor5_1_err1
-rw-r--r--result/relaxng/tutor5_1_valid0
-rw-r--r--result/relaxng/tutor5_2_10
-rw-r--r--result/relaxng/tutor5_2_1.err1
-rw-r--r--result/relaxng/tutor5_2_err1
-rw-r--r--result/relaxng/tutor5_2_valid0
-rw-r--r--result/relaxng/tutor5_3_10
-rw-r--r--result/relaxng/tutor5_3_1.err2
-rw-r--r--result/relaxng/tutor5_3_err1
-rw-r--r--result/relaxng/tutor5_3_valid0
-rw-r--r--result/relaxng/tutor5_4_10
-rw-r--r--result/relaxng/tutor5_4_1.err1
-rw-r--r--result/relaxng/tutor5_4_err1
-rw-r--r--result/relaxng/tutor5_4_valid0
-rw-r--r--result/relaxng/tutor5_5_err1
-rw-r--r--result/relaxng/tutor5_5_valid0
-rw-r--r--result/relaxng/tutor6_1_10
-rw-r--r--result/relaxng/tutor6_1_1.err1
-rw-r--r--result/relaxng/tutor6_1_20
-rw-r--r--result/relaxng/tutor6_1_2.err1
-rw-r--r--result/relaxng/tutor6_1_30
-rw-r--r--result/relaxng/tutor6_1_3.err2
-rw-r--r--result/relaxng/tutor6_1_40
-rw-r--r--result/relaxng/tutor6_1_4.err1
-rw-r--r--result/relaxng/tutor6_1_50
-rw-r--r--result/relaxng/tutor6_1_5.err1
-rw-r--r--result/relaxng/tutor6_1_err1
-rw-r--r--result/relaxng/tutor6_1_valid0
-rw-r--r--result/relaxng/tutor6_2_10
-rw-r--r--result/relaxng/tutor6_2_1.err1
-rw-r--r--result/relaxng/tutor6_2_20
-rw-r--r--result/relaxng/tutor6_2_2.err1
-rw-r--r--result/relaxng/tutor6_2_30
-rw-r--r--result/relaxng/tutor6_2_3.err1
-rw-r--r--result/relaxng/tutor6_2_40
-rw-r--r--result/relaxng/tutor6_2_4.err3
-rw-r--r--result/relaxng/tutor6_2_err1
-rw-r--r--result/relaxng/tutor6_2_valid0
-rw-r--r--result/relaxng/tutor6_3_10
-rw-r--r--result/relaxng/tutor6_3_1.err2
-rw-r--r--result/relaxng/tutor6_3_err1
-rw-r--r--result/relaxng/tutor6_3_valid0
-rw-r--r--result/relaxng/tutor7_1_10
-rw-r--r--result/relaxng/tutor7_1_1.err1
-rw-r--r--result/relaxng/tutor7_1_20
-rw-r--r--result/relaxng/tutor7_1_2.err4
-rw-r--r--result/relaxng/tutor7_1_30
-rw-r--r--result/relaxng/tutor7_1_3.err4
-rw-r--r--result/relaxng/tutor7_1_40
-rw-r--r--result/relaxng/tutor7_1_4.err1
-rw-r--r--result/relaxng/tutor7_1_err1
-rw-r--r--result/relaxng/tutor7_1_valid0
-rw-r--r--result/relaxng/tutor7_2_10
-rw-r--r--result/relaxng/tutor7_2_1.err1
-rw-r--r--result/relaxng/tutor7_2_20
-rw-r--r--result/relaxng/tutor7_2_2.err1
-rw-r--r--result/relaxng/tutor7_2_30
-rw-r--r--result/relaxng/tutor7_2_3.err1
-rw-r--r--result/relaxng/tutor7_2_40
-rw-r--r--result/relaxng/tutor7_2_4.err4
-rw-r--r--result/relaxng/tutor7_2_err1
-rw-r--r--result/relaxng/tutor7_2_valid0
-rw-r--r--result/relaxng/tutor7_3_10
-rw-r--r--result/relaxng/tutor7_3_1.err1
-rw-r--r--result/relaxng/tutor7_3_20
-rw-r--r--result/relaxng/tutor7_3_2.err1
-rw-r--r--result/relaxng/tutor7_3_30
-rw-r--r--result/relaxng/tutor7_3_3.err1
-rw-r--r--result/relaxng/tutor7_3_40
-rw-r--r--result/relaxng/tutor7_3_4.err4
-rw-r--r--result/relaxng/tutor7_3_50
-rw-r--r--result/relaxng/tutor7_3_5.err4
-rw-r--r--result/relaxng/tutor7_3_err1
-rw-r--r--result/relaxng/tutor7_3_valid0
-rw-r--r--result/relaxng/tutor8_1_10
-rw-r--r--result/relaxng/tutor8_1_1.err1
-rw-r--r--result/relaxng/tutor8_1_20
-rw-r--r--result/relaxng/tutor8_1_2.err1
-rw-r--r--result/relaxng/tutor8_1_err1
-rw-r--r--result/relaxng/tutor8_1_valid0
-rw-r--r--result/relaxng/tutor8_2_10
-rw-r--r--result/relaxng/tutor8_2_1.err1
-rw-r--r--result/relaxng/tutor8_2_20
-rw-r--r--result/relaxng/tutor8_2_2.err1
-rw-r--r--result/relaxng/tutor8_2_30
-rw-r--r--result/relaxng/tutor8_2_3.err1
-rw-r--r--result/relaxng/tutor8_2_40
-rw-r--r--result/relaxng/tutor8_2_4.err3
-rw-r--r--result/relaxng/tutor8_2_50
-rw-r--r--result/relaxng/tutor8_2_5.err4
-rw-r--r--result/relaxng/tutor8_2_60
-rw-r--r--result/relaxng/tutor8_2_6.err3
-rw-r--r--result/relaxng/tutor8_2_err1
-rw-r--r--result/relaxng/tutor8_2_valid0
-rw-r--r--result/relaxng/tutor8_3_10
-rw-r--r--result/relaxng/tutor8_3_1.err1
-rw-r--r--result/relaxng/tutor8_3_err1
-rw-r--r--result/relaxng/tutor8_3_valid0
-rw-r--r--result/relaxng/tutor9_10_10
-rw-r--r--result/relaxng/tutor9_10_1.err1
-rw-r--r--result/relaxng/tutor9_10_err1
-rw-r--r--result/relaxng/tutor9_10_valid0
-rw-r--r--result/relaxng/tutor9_11_10
-rw-r--r--result/relaxng/tutor9_11_1.err1
-rw-r--r--result/relaxng/tutor9_11_err1
-rw-r--r--result/relaxng/tutor9_11_valid0
-rw-r--r--result/relaxng/tutor9_12_10
-rw-r--r--result/relaxng/tutor9_12_1.err1
-rw-r--r--result/relaxng/tutor9_12_err1
-rw-r--r--result/relaxng/tutor9_12_valid0
-rw-r--r--result/relaxng/tutor9_1_10
-rw-r--r--result/relaxng/tutor9_1_1.err1
-rw-r--r--result/relaxng/tutor9_1_err1
-rw-r--r--result/relaxng/tutor9_1_valid0
-rw-r--r--result/relaxng/tutor9_2_10
-rw-r--r--result/relaxng/tutor9_2_1.err1
-rw-r--r--result/relaxng/tutor9_2_20
-rw-r--r--result/relaxng/tutor9_2_2.err1
-rw-r--r--result/relaxng/tutor9_2_err1
-rw-r--r--result/relaxng/tutor9_2_valid0
-rw-r--r--result/relaxng/tutor9_3_10
-rw-r--r--result/relaxng/tutor9_3_1.err1
-rw-r--r--result/relaxng/tutor9_3_20
-rw-r--r--result/relaxng/tutor9_3_2.err1
-rw-r--r--result/relaxng/tutor9_3_err1
-rw-r--r--result/relaxng/tutor9_3_valid0
-rw-r--r--result/relaxng/tutor9_4_10
-rw-r--r--result/relaxng/tutor9_4_1.err1
-rw-r--r--result/relaxng/tutor9_4_20
-rw-r--r--result/relaxng/tutor9_4_2.err1
-rw-r--r--result/relaxng/tutor9_4_err1
-rw-r--r--result/relaxng/tutor9_4_valid0
-rw-r--r--result/relaxng/tutor9_5_10
-rw-r--r--result/relaxng/tutor9_5_1.err1
-rw-r--r--result/relaxng/tutor9_5_20
-rw-r--r--result/relaxng/tutor9_5_2.err3
-rw-r--r--result/relaxng/tutor9_5_30
-rw-r--r--result/relaxng/tutor9_5_3.err2
-rw-r--r--result/relaxng/tutor9_5_err1
-rw-r--r--result/relaxng/tutor9_5_valid0
-rw-r--r--result/relaxng/tutor9_6.rng24
-rw-r--r--result/relaxng/tutor9_6_10
-rw-r--r--result/relaxng/tutor9_6_1.err1
-rw-r--r--result/relaxng/tutor9_6_20
-rw-r--r--result/relaxng/tutor9_6_2.err2
-rw-r--r--result/relaxng/tutor9_6_30
-rw-r--r--result/relaxng/tutor9_6_3.err2
-rw-r--r--result/relaxng/tutor9_6_err1
-rw-r--r--result/relaxng/tutor9_6_valid0
-rw-r--r--result/relaxng/tutor9_7_10
-rw-r--r--result/relaxng/tutor9_7_1.err1
-rw-r--r--result/relaxng/tutor9_7_err1
-rw-r--r--result/relaxng/tutor9_7_valid0
-rw-r--r--result/relaxng/tutor9_8_10
-rw-r--r--result/relaxng/tutor9_8_1.err1
-rw-r--r--result/relaxng/tutor9_8_err1
-rw-r--r--result/relaxng/tutor9_8_valid0
-rw-r--r--result/relaxng/tutor9_9_10
-rw-r--r--result/relaxng/tutor9_9_1.err1
-rw-r--r--result/relaxng/tutor9_9_err1
-rw-r--r--result/relaxng/tutor9_9_valid0
-rw-r--r--result/relaxng/tutorA_err1
-rw-r--r--result/relaxng/tutorA_valid0
-rw-r--r--result/schemas/570702_0_01
-rw-r--r--result/schemas/570702_0_0.err0
-rw-r--r--result/schemas/579746_0_01
-rw-r--r--result/schemas/579746_0_0.err0
-rw-r--r--result/schemas/579746_0_11
-rw-r--r--result/schemas/579746_0_1.err0
-rw-r--r--result/schemas/579746_0_21
-rw-r--r--result/schemas/579746_0_2.err0
-rw-r--r--result/schemas/579746_0_31
-rw-r--r--result/schemas/579746_0_3.err1
-rw-r--r--result/schemas/579746_0_41
-rw-r--r--result/schemas/579746_0_4.err0
-rw-r--r--result/schemas/579746_0_51
-rw-r--r--result/schemas/579746_0_5.err1
-rw-r--r--result/schemas/579746_1_01
-rw-r--r--result/schemas/579746_1_0.err0
-rw-r--r--result/schemas/579746_1_11
-rw-r--r--result/schemas/579746_1_1.err0
-rw-r--r--result/schemas/579746_1_21
-rw-r--r--result/schemas/579746_1_2.err0
-rw-r--r--result/schemas/579746_1_31
-rw-r--r--result/schemas/579746_1_3.err1
-rw-r--r--result/schemas/579746_1_41
-rw-r--r--result/schemas/579746_1_4.err0
-rw-r--r--result/schemas/579746_1_51
-rw-r--r--result/schemas/579746_1_5.err1
-rw-r--r--result/schemas/582887_0_01
-rw-r--r--result/schemas/582887_0_0.err0
-rw-r--r--result/schemas/582906-1_0_01
-rw-r--r--result/schemas/582906-1_0_0.err0
-rw-r--r--result/schemas/582906-2_0_00
-rw-r--r--result/schemas/582906-2_0_0.err1
-rw-r--r--result/schemas/all1_0_01
-rw-r--r--result/schemas/all1_0_0.err0
-rw-r--r--result/schemas/all_0_01
-rw-r--r--result/schemas/all_0_0.err0
-rw-r--r--result/schemas/all_0_11
-rw-r--r--result/schemas/all_0_1.err0
-rw-r--r--result/schemas/all_0_21
-rw-r--r--result/schemas/all_0_2.err0
-rw-r--r--result/schemas/all_0_31
-rw-r--r--result/schemas/all_0_3.err1
-rw-r--r--result/schemas/all_0_41
-rw-r--r--result/schemas/all_0_4.err1
-rw-r--r--result/schemas/all_0_51
-rw-r--r--result/schemas/all_0_5.err1
-rw-r--r--result/schemas/all_0_61
-rw-r--r--result/schemas/all_0_6.err1
-rw-r--r--result/schemas/all_0_71
-rw-r--r--result/schemas/all_0_7.err1
-rw-r--r--result/schemas/all_1_01
-rw-r--r--result/schemas/all_1_0.err0
-rw-r--r--result/schemas/all_1_11
-rw-r--r--result/schemas/all_1_1.err0
-rw-r--r--result/schemas/all_1_21
-rw-r--r--result/schemas/all_1_2.err0
-rw-r--r--result/schemas/all_1_31
-rw-r--r--result/schemas/all_1_3.err1
-rw-r--r--result/schemas/all_1_41
-rw-r--r--result/schemas/all_1_4.err0
-rw-r--r--result/schemas/all_1_51
-rw-r--r--result/schemas/all_1_5.err1
-rw-r--r--result/schemas/all_1_61
-rw-r--r--result/schemas/all_1_6.err1
-rw-r--r--result/schemas/all_1_71
-rw-r--r--result/schemas/all_1_7.err1
-rw-r--r--result/schemas/all_2_01
-rw-r--r--result/schemas/all_2_0.err1
-rw-r--r--result/schemas/all_2_11
-rw-r--r--result/schemas/all_2_1.err1
-rw-r--r--result/schemas/all_2_21
-rw-r--r--result/schemas/all_2_2.err1
-rw-r--r--result/schemas/all_2_31
-rw-r--r--result/schemas/all_2_3.err0
-rw-r--r--result/schemas/all_2_41
-rw-r--r--result/schemas/all_2_4.err1
-rw-r--r--result/schemas/all_2_51
-rw-r--r--result/schemas/all_2_5.err1
-rw-r--r--result/schemas/all_2_61
-rw-r--r--result/schemas/all_2_6.err0
-rw-r--r--result/schemas/all_2_71
-rw-r--r--result/schemas/all_2_7.err0
-rw-r--r--result/schemas/allsg_0_01
-rw-r--r--result/schemas/allsg_0_0.err0
-rw-r--r--result/schemas/allsg_0_11
-rw-r--r--result/schemas/allsg_0_1.err0
-rw-r--r--result/schemas/allsg_0_21
-rw-r--r--result/schemas/allsg_0_2.err0
-rw-r--r--result/schemas/allsg_0_31
-rw-r--r--result/schemas/allsg_0_3.err1
-rw-r--r--result/schemas/allsg_0_41
-rw-r--r--result/schemas/allsg_0_4.err1
-rw-r--r--result/schemas/allsg_0_51
-rw-r--r--result/schemas/allsg_0_5.err1
-rw-r--r--result/schemas/annot-err_0_00
-rw-r--r--result/schemas/annot-err_0_0.err7
-rw-r--r--result/schemas/any1_0_01
-rw-r--r--result/schemas/any1_0_0.err0
-rw-r--r--result/schemas/any2_0_01
-rw-r--r--result/schemas/any2_0_0.err0
-rw-r--r--result/schemas/any3_0_01
-rw-r--r--result/schemas/any3_0_0.err1
-rw-r--r--result/schemas/any4_0_01
-rw-r--r--result/schemas/any4_0_0.err0
-rw-r--r--result/schemas/any5_0_01
-rw-r--r--result/schemas/any5_0_0.err1
-rw-r--r--result/schemas/any5_0_11
-rw-r--r--result/schemas/any5_0_1.err1
-rw-r--r--result/schemas/any5_0_21
-rw-r--r--result/schemas/any5_0_2.err1
-rw-r--r--result/schemas/any5_0_31
-rw-r--r--result/schemas/any5_0_3.err0
-rw-r--r--result/schemas/any5_0_41
-rw-r--r--result/schemas/any5_0_4.err1
-rw-r--r--result/schemas/any5_0_51
-rw-r--r--result/schemas/any5_0_5.err1
-rw-r--r--result/schemas/any5_0_61
-rw-r--r--result/schemas/any5_0_6.err1
-rw-r--r--result/schemas/any5_1_01
-rw-r--r--result/schemas/any5_1_0.err1
-rw-r--r--result/schemas/any5_1_11
-rw-r--r--result/schemas/any5_1_1.err1
-rw-r--r--result/schemas/any5_1_21
-rw-r--r--result/schemas/any5_1_2.err0
-rw-r--r--result/schemas/any5_1_31
-rw-r--r--result/schemas/any5_1_3.err1
-rw-r--r--result/schemas/any5_1_41
-rw-r--r--result/schemas/any5_1_4.err1
-rw-r--r--result/schemas/any5_1_51
-rw-r--r--result/schemas/any5_1_5.err0
-rw-r--r--result/schemas/any5_1_61
-rw-r--r--result/schemas/any5_1_6.err1
-rw-r--r--result/schemas/any6_1_01
-rw-r--r--result/schemas/any6_1_0.err0
-rw-r--r--result/schemas/any6_2_01
-rw-r--r--result/schemas/any6_2_0.err0
-rw-r--r--result/schemas/any7_1_01
-rw-r--r--result/schemas/any7_1_0.err1
-rw-r--r--result/schemas/any7_1_11
-rw-r--r--result/schemas/any7_1_1.err1
-rw-r--r--result/schemas/any7_1_21
-rw-r--r--result/schemas/any7_1_2.err0
-rw-r--r--result/schemas/any7_2_01
-rw-r--r--result/schemas/any7_2_0.err1
-rw-r--r--result/schemas/any7_2_11
-rw-r--r--result/schemas/any7_2_1.err1
-rw-r--r--result/schemas/any7_2_21
-rw-r--r--result/schemas/any7_2_2.err0
-rw-r--r--result/schemas/any8_1_01
-rw-r--r--result/schemas/any8_1_0.err0
-rw-r--r--result/schemas/anyAttr-derive-errors1_0_01
-rw-r--r--result/schemas/anyAttr-derive-errors1_0_0.err0
-rw-r--r--result/schemas/anyAttr-derive1_0_01
-rw-r--r--result/schemas/anyAttr-derive1_0_0.err0
-rw-r--r--result/schemas/anyAttr-derive2_0_01
-rw-r--r--result/schemas/anyAttr-derive2_0_0.err0
-rw-r--r--result/schemas/anyAttr-processContents-err1_0_01
-rw-r--r--result/schemas/anyAttr-processContents-err1_0_0.err2
-rw-r--r--result/schemas/anyAttr-processContents1_0_01
-rw-r--r--result/schemas/anyAttr-processContents1_0_0.err0
-rw-r--r--result/schemas/anyAttr1_0_01
-rw-r--r--result/schemas/anyAttr1_0_0.err0
-rw-r--r--result/schemas/attr0_0_01
-rw-r--r--result/schemas/attr0_0_0.err0
-rw-r--r--result/schemas/attruse_0_01
-rw-r--r--result/schemas/attruse_0_0.err0
-rw-r--r--result/schemas/attruse_0_11
-rw-r--r--result/schemas/attruse_0_1.err1
-rw-r--r--result/schemas/attruse_0_21
-rw-r--r--result/schemas/attruse_0_2.err1
-rw-r--r--result/schemas/bug141312_0_01
-rw-r--r--result/schemas/bug141312_0_0.err0
-rw-r--r--result/schemas/bug141333_0_01
-rw-r--r--result/schemas/bug141333_0_0.err0
-rw-r--r--result/schemas/bug143951_0_01
-rw-r--r--result/schemas/bug143951_0_0.err0
-rw-r--r--result/schemas/bug145246_0_01
-rw-r--r--result/schemas/bug145246_0_0.err0
-rw-r--r--result/schemas/bug152470_1_11
-rw-r--r--result/schemas/bug152470_1_1.err0
-rw-r--r--result/schemas/bug167754_0_01
-rw-r--r--result/schemas/bug167754_0_0.err0
-rw-r--r--result/schemas/bug303566_1_11
-rw-r--r--result/schemas/bug303566_1_1.err1
-rw-r--r--result/schemas/bug306806_1_01
-rw-r--r--result/schemas/bug306806_1_0.err0
-rw-r--r--result/schemas/bug309338_1_01
-rw-r--r--result/schemas/bug309338_1_0.err0
-rw-r--r--result/schemas/bug310264_0_01
-rw-r--r--result/schemas/bug310264_0_0.err0
-rw-r--r--result/schemas/bug312957_1_01
-rw-r--r--result/schemas/bug312957_1_0.err1
-rw-r--r--result/schemas/bug313982_0_01
-rw-r--r--result/schemas/bug313982_0_0.err0
-rw-r--r--result/schemas/bug321475_1_01
-rw-r--r--result/schemas/bug321475_1_0.err0
-rw-r--r--result/schemas/bug322411_1_01
-rw-r--r--result/schemas/bug322411_1_0.err0
-rw-r--r--result/schemas/bug323510_1_01
-rw-r--r--result/schemas/bug323510_1_0.err1
-rw-r--r--result/schemas/bug455953_0_01
-rw-r--r--result/schemas/bug455953_0_0.err0
-rw-r--r--result/schemas/changelog093_1_01
-rw-r--r--result/schemas/changelog093_1_0.err1
-rw-r--r--result/schemas/choice_0_01
-rw-r--r--result/schemas/choice_0_0.err0
-rw-r--r--result/schemas/choice_0_11
-rw-r--r--result/schemas/choice_0_1.err0
-rw-r--r--result/schemas/choice_0_21
-rw-r--r--result/schemas/choice_0_2.err1
-rw-r--r--result/schemas/choice_0_31
-rw-r--r--result/schemas/choice_0_3.err1
-rw-r--r--result/schemas/choice_0_41
-rw-r--r--result/schemas/choice_0_4.err1
-rw-r--r--result/schemas/choice_0_51
-rw-r--r--result/schemas/choice_0_5.err1
-rw-r--r--result/schemas/choice_0_61
-rw-r--r--result/schemas/choice_0_6.err1
-rw-r--r--result/schemas/choice_1_01
-rw-r--r--result/schemas/choice_1_0.err0
-rw-r--r--result/schemas/choice_1_11
-rw-r--r--result/schemas/choice_1_1.err0
-rw-r--r--result/schemas/choice_1_21
-rw-r--r--result/schemas/choice_1_2.err1
-rw-r--r--result/schemas/choice_1_31
-rw-r--r--result/schemas/choice_1_3.err1
-rw-r--r--result/schemas/choice_1_41
-rw-r--r--result/schemas/choice_1_4.err0
-rw-r--r--result/schemas/choice_1_51
-rw-r--r--result/schemas/choice_1_5.err1
-rw-r--r--result/schemas/choice_1_61
-rw-r--r--result/schemas/choice_1_6.err1
-rw-r--r--result/schemas/choice_2_01
-rw-r--r--result/schemas/choice_2_0.err0
-rw-r--r--result/schemas/choice_2_11
-rw-r--r--result/schemas/choice_2_1.err0
-rw-r--r--result/schemas/choice_2_21
-rw-r--r--result/schemas/choice_2_2.err0
-rw-r--r--result/schemas/choice_2_31
-rw-r--r--result/schemas/choice_2_3.err0
-rw-r--r--result/schemas/choice_2_41
-rw-r--r--result/schemas/choice_2_4.err1
-rw-r--r--result/schemas/choice_2_51
-rw-r--r--result/schemas/choice_2_5.err0
-rw-r--r--result/schemas/choice_2_61
-rw-r--r--result/schemas/choice_2_6.err1
-rw-r--r--result/schemas/complex-type-extension_0_01
-rw-r--r--result/schemas/complex-type-extension_0_0.err0
-rw-r--r--result/schemas/cos-ct-extends-1-3_0_01
-rw-r--r--result/schemas/cos-ct-extends-1-3_0_0.err0
-rw-r--r--result/schemas/cos-st-restricts-1-2-err_0_01
-rw-r--r--result/schemas/cos-st-restricts-1-2-err_0_0.err2
-rw-r--r--result/schemas/ct-sc-nobase_0_01
-rw-r--r--result/schemas/ct-sc-nobase_0_0.err0
-rw-r--r--result/schemas/date_0_01
-rw-r--r--result/schemas/date_0_0.err0
-rw-r--r--result/schemas/decimal-1_1_01
-rw-r--r--result/schemas/decimal-1_1_0.err8
-rw-r--r--result/schemas/decimal-2_1_01
-rw-r--r--result/schemas/decimal-2_1_0.err4
-rw-r--r--result/schemas/decimal-3_1_01
-rw-r--r--result/schemas/decimal-3_1_0.err8
-rw-r--r--result/schemas/derivation-ok-extension-err_0_00
-rw-r--r--result/schemas/derivation-ok-extension-err_0_0.err1
-rw-r--r--result/schemas/derivation-ok-extension_0_01
-rw-r--r--result/schemas/derivation-ok-extension_0_0.err1
-rw-r--r--result/schemas/derivation-ok-restriction-2-1-1_0_00
-rw-r--r--result/schemas/derivation-ok-restriction-2-1-1_0_0.err6
-rw-r--r--result/schemas/derivation-ok-restriction-4-1-err_0_00
-rw-r--r--result/schemas/derivation-ok-restriction-4-1-err_0_0.err3
-rw-r--r--result/schemas/derivation-restriction-anyAttr_0_01
-rw-r--r--result/schemas/derivation-restriction-anyAttr_0_0.err0
-rw-r--r--result/schemas/deter0_0_00
-rw-r--r--result/schemas/deter0_0_0.err1
-rw-r--r--result/schemas/dur_0_01
-rw-r--r--result/schemas/dur_0_0.err0
-rw-r--r--result/schemas/elem0_0_01
-rw-r--r--result/schemas/elem0_0_0.err0
-rw-r--r--result/schemas/element-err_0_00
-rw-r--r--result/schemas/element-err_0_0.err20
-rw-r--r--result/schemas/element-minmax-err_0_00
-rw-r--r--result/schemas/element-minmax-err_0_0.err1
-rw-r--r--result/schemas/empty-value_1_01
-rw-r--r--result/schemas/empty-value_1_0.err0
-rw-r--r--result/schemas/empty-value_1_11
-rw-r--r--result/schemas/empty-value_1_1.err0
-rw-r--r--result/schemas/empty_0_01
-rw-r--r--result/schemas/empty_0_0.err0
-rw-r--r--result/schemas/empty_1_01
-rw-r--r--result/schemas/empty_1_0.err0
-rw-r--r--result/schemas/extension0_0_01
-rw-r--r--result/schemas/extension0_0_0.err0
-rw-r--r--result/schemas/extension1_0_01
-rw-r--r--result/schemas/extension1_0_0.err0
-rw-r--r--result/schemas/extension1_0_11
-rw-r--r--result/schemas/extension1_0_1.err1
-rw-r--r--result/schemas/extension1_0_21
-rw-r--r--result/schemas/extension1_0_2.err1
-rw-r--r--result/schemas/extension2_1_01
-rw-r--r--result/schemas/extension2_1_0.err0
-rw-r--r--result/schemas/facet-unionST-err1_0_01
-rw-r--r--result/schemas/facet-unionST-err1_0_0.err1
-rw-r--r--result/schemas/facet-whiteSpace_0_01
-rw-r--r--result/schemas/facet-whiteSpace_0_0.err0
-rw-r--r--result/schemas/group0_0_01
-rw-r--r--result/schemas/group0_0_0.err0
-rw-r--r--result/schemas/hexbinary_0_01
-rw-r--r--result/schemas/hexbinary_0_0.err0
-rw-r--r--result/schemas/hexbinary_0_11
-rw-r--r--result/schemas/hexbinary_0_1.err10
-rw-r--r--result/schemas/idc-keyref-err1_1_01
-rw-r--r--result/schemas/idc-keyref-err1_1_0.err1
-rw-r--r--result/schemas/import0_0_01
-rw-r--r--result/schemas/import0_0_0.err0
-rw-r--r--result/schemas/import1_0_00
-rw-r--r--result/schemas/import1_0_0.err4
-rw-r--r--result/schemas/import2_0_01
-rw-r--r--result/schemas/import2_0_0.err0
-rw-r--r--result/schemas/include1_0_01
-rw-r--r--result/schemas/include1_0_0.err0
-rw-r--r--result/schemas/include2_0_01
-rw-r--r--result/schemas/include2_0_0.err0
-rw-r--r--result/schemas/include3_0_00
-rw-r--r--result/schemas/include3_0_0.err1
-rw-r--r--result/schemas/item_0_01
-rw-r--r--result/schemas/item_0_0.err0
-rw-r--r--result/schemas/item_1_01
-rw-r--r--result/schemas/item_1_0.err0
-rw-r--r--result/schemas/length1_0_01
-rw-r--r--result/schemas/length1_0_0.err0
-rw-r--r--result/schemas/length2_0_01
-rw-r--r--result/schemas/length2_0_0.err0
-rw-r--r--result/schemas/length3_0_00
-rw-r--r--result/schemas/length3_0_0.err1
-rw-r--r--result/schemas/list0_0_01
-rw-r--r--result/schemas/list0_0_0.err0
-rw-r--r--result/schemas/list0_0_11
-rw-r--r--result/schemas/list0_0_1.err1
-rw-r--r--result/schemas/list0_0_21
-rw-r--r--result/schemas/list0_0_2.err0
-rw-r--r--result/schemas/list0_1_01
-rw-r--r--result/schemas/list0_1_0.err1
-rw-r--r--result/schemas/list0_1_11
-rw-r--r--result/schemas/list0_1_1.err1
-rw-r--r--result/schemas/list0_1_21
-rw-r--r--result/schemas/list0_1_2.err0
-rw-r--r--result/schemas/mixed0_0_01
-rw-r--r--result/schemas/mixed0_0_0.err0
-rw-r--r--result/schemas/mixed1_0_01
-rw-r--r--result/schemas/mixed1_0_0.err0
-rw-r--r--result/schemas/ns0_0_01
-rw-r--r--result/schemas/ns0_0_0.err0
-rw-r--r--result/schemas/ns0_0_11
-rw-r--r--result/schemas/ns0_0_1.err0
-rw-r--r--result/schemas/ns0_0_21
-rw-r--r--result/schemas/ns0_0_2.err1
-rw-r--r--result/schemas/ns0_0_31
-rw-r--r--result/schemas/ns0_0_3.err1
-rw-r--r--result/schemas/ns0_0_41
-rw-r--r--result/schemas/ns0_0_4.err1
-rw-r--r--result/schemas/ns0_1_01
-rw-r--r--result/schemas/ns0_1_0.err1
-rw-r--r--result/schemas/ns0_1_11
-rw-r--r--result/schemas/ns0_1_1.err1
-rw-r--r--result/schemas/ns0_1_21
-rw-r--r--result/schemas/ns0_1_2.err1
-rw-r--r--result/schemas/ns0_1_31
-rw-r--r--result/schemas/ns0_1_3.err0
-rw-r--r--result/schemas/ns0_1_41
-rw-r--r--result/schemas/ns0_1_4.err0
-rw-r--r--result/schemas/ns1_0_01
-rw-r--r--result/schemas/ns1_0_0.err0
-rw-r--r--result/schemas/ns2_0_01
-rw-r--r--result/schemas/ns2_0_0.err0
-rw-r--r--result/schemas/nvdcve_0_01
-rw-r--r--result/schemas/nvdcve_0_0.err0
-rw-r--r--result/schemas/po0_0_01
-rw-r--r--result/schemas/po0_0_0.err0
-rw-r--r--result/schemas/po1_0_01
-rw-r--r--result/schemas/po1_0_0.err0
-rw-r--r--result/schemas/poschargrp0_0_01
-rw-r--r--result/schemas/poschargrp0_0_0.err0
-rw-r--r--result/schemas/regexp-char-ref_0_01
-rw-r--r--result/schemas/regexp-char-ref_1_01
-rw-r--r--result/schemas/restrict-CT-attr-ref_0_01
-rw-r--r--result/schemas/restrict-CT-attr-ref_0_0.err0
-rw-r--r--result/schemas/restriction-attr1_0_00
-rw-r--r--result/schemas/restriction-attr1_0_0.err1
-rw-r--r--result/schemas/restriction-enum-1_1_01
-rw-r--r--result/schemas/restriction-enum-1_1_0.err2
-rw-r--r--result/schemas/restriction0_0_01
-rw-r--r--result/schemas/restriction0_0_0.err0
-rw-r--r--result/schemas/scc-no-xmlns_0_00
-rw-r--r--result/schemas/scc-no-xmlns_0_0.err1
-rw-r--r--result/schemas/scc-no-xsi_0_00
-rw-r--r--result/schemas/scc-no-xsi_0_0.err1
-rw-r--r--result/schemas/seq-dubl-elem1_0_01
-rw-r--r--result/schemas/seq-dubl-elem1_0_0.err0
-rw-r--r--result/schemas/seq0_0_01
-rw-r--r--result/schemas/seq0_0_0.err0
-rw-r--r--result/schemas/src-attribute1_0_00
-rw-r--r--result/schemas/src-attribute1_0_0.err1
-rw-r--r--result/schemas/src-attribute2_0_00
-rw-r--r--result/schemas/src-attribute2_0_0.err1
-rw-r--r--result/schemas/src-attribute3-1_0_00
-rw-r--r--result/schemas/src-attribute3-1_0_0.err1
-rw-r--r--result/schemas/src-attribute3-2-form_0_00
-rw-r--r--result/schemas/src-attribute3-2-form_0_0.err1
-rw-r--r--result/schemas/src-attribute3-2-st_0_00
-rw-r--r--result/schemas/src-attribute3-2-st_0_0.err1
-rw-r--r--result/schemas/src-attribute3-2-type_0_00
-rw-r--r--result/schemas/src-attribute3-2-type_0_0.err1
-rw-r--r--result/schemas/src-attribute4_0_00
-rw-r--r--result/schemas/src-attribute4_0_0.err1
-rw-r--r--result/schemas/src-element1_0_00
-rw-r--r--result/schemas/src-element1_0_0.err1
-rw-r--r--result/schemas/src-element2-1_0_00
-rw-r--r--result/schemas/src-element2-1_0_0.err1
-rw-r--r--result/schemas/src-element2-2_0_00
-rw-r--r--result/schemas/src-element2-2_0_0.err9
-rw-r--r--result/schemas/src-element3_0_00
-rw-r--r--result/schemas/src-element3_0_0.err2
-rw-r--r--result/schemas/subst-group-1_0_11
-rw-r--r--result/schemas/subst-group-1_0_1.err0
-rw-r--r--result/schemas/union2_1_11
-rw-r--r--result/schemas/union2_1_1.err3
-rw-r--r--result/schemas/union_0_01
-rw-r--r--result/schemas/union_0_0.err0
-rw-r--r--result/schemas/vdv-first0_0_01
-rw-r--r--result/schemas/vdv-first0_0_0.err0
-rw-r--r--result/schemas/vdv-first1_0_01
-rw-r--r--result/schemas/vdv-first1_0_0.err0
-rw-r--r--result/schemas/vdv-first2_0_01
-rw-r--r--result/schemas/vdv-first2_0_0.err0
-rw-r--r--result/schemas/vdv-first3_0_01
-rw-r--r--result/schemas/vdv-first3_0_0.err0
-rw-r--r--result/schemas/vdv-first4_0_01
-rw-r--r--result/schemas/vdv-first4_0_0.err0
-rw-r--r--result/schemas/vdv-first4_0_11
-rw-r--r--result/schemas/vdv-first4_0_1.err1
-rw-r--r--result/schemas/vdv-first4_0_21
-rw-r--r--result/schemas/vdv-first4_0_2.err2
-rw-r--r--result/schemas/vdv-first5_0_01
-rw-r--r--result/schemas/vdv-first5_0_0.err0
-rw-r--r--result/schemas/xsd-list-itemType_0_01
-rw-r--r--result/schemas/xsd-list-itemType_0_0.err0
-rw-r--r--result/schemas/xsd-simpleType-varieties_0_01
-rw-r--r--result/schemas/xsd-simpleType-varieties_0_0.err0
-rw-r--r--result/schematron/zvon10_04
-rw-r--r--result/schematron/zvon10_0.err5
-rw-r--r--result/schematron/zvon10_15
-rw-r--r--result/schematron/zvon10_1.err6
-rw-r--r--result/schematron/zvon11_04
-rw-r--r--result/schematron/zvon11_0.err2
-rw-r--r--result/schematron/zvon11_14
-rw-r--r--result/schematron/zvon11_1.err3
-rw-r--r--result/schematron/zvon11_24
-rw-r--r--result/schematron/zvon11_2.err3
-rw-r--r--result/schematron/zvon11_34
-rw-r--r--result/schematron/zvon11_3.err2
-rw-r--r--result/schematron/zvon12_04
-rw-r--r--result/schematron/zvon12_0.err3
-rw-r--r--result/schematron/zvon12_14
-rw-r--r--result/schematron/zvon12_1.err2
-rw-r--r--result/schematron/zvon12_24
-rw-r--r--result/schematron/zvon12_2.err3
-rw-r--r--result/schematron/zvon13_07
-rw-r--r--result/schematron/zvon13_0.err3
-rw-r--r--result/schematron/zvon13_16
-rw-r--r--result/schematron/zvon13_1.err3
-rw-r--r--result/schematron/zvon13_26
-rw-r--r--result/schematron/zvon13_2.err2
-rw-r--r--result/schematron/zvon14_013
-rw-r--r--result/schematron/zvon14_0.err4
-rw-r--r--result/schematron/zvon15_05
-rw-r--r--result/schematron/zvon15_0.err4
-rw-r--r--result/schematron/zvon1_04
-rw-r--r--result/schematron/zvon1_0.err8
-rw-r--r--result/schematron/zvon1_14
-rw-r--r--result/schematron/zvon1_1.err8
-rw-r--r--result/schematron/zvon2_05
-rw-r--r--result/schematron/zvon2_0.err2
-rw-r--r--result/schematron/zvon2_15
-rw-r--r--result/schematron/zvon2_1.err5
-rw-r--r--result/schematron/zvon2_26
-rw-r--r--result/schematron/zvon2_2.err3
-rw-r--r--result/schematron/zvon3_09
-rw-r--r--result/schematron/zvon3_0.err6
-rw-r--r--result/schematron/zvon4_07
-rw-r--r--result/schematron/zvon4_0.err3
-rw-r--r--result/schematron/zvon4_17
-rw-r--r--result/schematron/zvon4_1.err3
-rw-r--r--result/schematron/zvon5_06
-rw-r--r--result/schematron/zvon5_0.err7
-rw-r--r--result/schematron/zvon5_16
-rw-r--r--result/schematron/zvon5_1.err5
-rw-r--r--result/schematron/zvon5_28
-rw-r--r--result/schematron/zvon5_2.err5
-rw-r--r--result/schematron/zvon6_04
-rw-r--r--result/schematron/zvon6_0.err3
-rw-r--r--result/schematron/zvon6_14
-rw-r--r--result/schematron/zvon6_1.err3
-rw-r--r--result/schematron/zvon6_24
-rw-r--r--result/schematron/zvon6_2.err3
-rw-r--r--result/schematron/zvon7_04
-rw-r--r--result/schematron/zvon7_0.err3
-rw-r--r--result/schematron/zvon7_14
-rw-r--r--result/schematron/zvon7_1.err3
-rw-r--r--result/schematron/zvon7_24
-rw-r--r--result/schematron/zvon7_2.err3
-rw-r--r--result/schematron/zvon7_34
-rw-r--r--result/schematron/zvon7_3.err3
-rw-r--r--result/schematron/zvon7_44
-rw-r--r--result/schematron/zvon7_4.err3
-rw-r--r--result/schematron/zvon8_09
-rw-r--r--result/schematron/zvon8_0.err3
-rw-r--r--result/schematron/zvon8_18
-rw-r--r--result/schematron/zvon8_1.err3
-rw-r--r--result/schematron/zvon8_28
-rw-r--r--result/schematron/zvon8_2.err3
-rw-r--r--result/schematron/zvon9_08
-rw-r--r--result/schematron/zvon9_0.err2
-rw-r--r--result/schematron/zvon9_18
-rw-r--r--result/schematron/zvon9_1.err3
-rw-r--r--result/schematron/zvon9_28
-rw-r--r--result/schematron/zvon9_2.err3
-rw-r--r--result/scripts/base4
-rw-r--r--result/scripts/base.err0
-rw-r--r--result/scripts/base24
-rw-r--r--result/scripts/base2.err0
-rw-r--r--result/scripts/set13
-rw-r--r--result/scripts/set1.err0
-rw-r--r--result/scripts/set312
-rw-r--r--result/scripts/set3.err3
-rw-r--r--result/scripts/set46
-rw-r--r--result/scripts/set4.err0
-rw-r--r--result/slashdot.rdf65
-rw-r--r--result/slashdot.rdf.rde218
-rw-r--r--result/slashdot.rdf.rdr218
-rw-r--r--result/slashdot.rdf.sax221
-rw-r--r--result/slashdot.rdf.sax2221
-rw-r--r--result/slashdot.xml113
-rw-r--r--result/slashdot.xml.rde514
-rw-r--r--result/slashdot.xml.rdr514
-rw-r--r--result/slashdot.xml.sax517
-rw-r--r--result/slashdot.xml.sax2517
-rw-r--r--result/slashdot16.xmlbin0 -> 10374 bytes
-rw-r--r--result/slashdot16.xml.rde718
-rw-r--r--result/slashdot16.xml.rdr718
-rw-r--r--result/slashdot16.xml.sax721
-rw-r--r--result/slashdot16.xml.sax2721
-rw-r--r--result/svg1161
-rw-r--r--result/svg1.rde477
-rw-r--r--result/svg1.rdr477
-rw-r--r--result/svg1.sax613
-rw-r--r--result/svg1.sax2613
-rw-r--r--result/svg256
-rw-r--r--result/svg2.rde178
-rw-r--r--result/svg2.rdr178
-rw-r--r--result/svg2.sax189
-rw-r--r--result/svg2.sax2189
-rw-r--r--result/svg3723
-rw-r--r--result/svg3.rde2164
-rw-r--r--result/svg3.rdr2164
-rw-r--r--result/svg3.sax2407
-rw-r--r--result/svg3.sax22407
-rw-r--r--result/title.xml2
-rw-r--r--result/title.xml.rde3
-rw-r--r--result/title.xml.rdr3
-rw-r--r--result/title.xml.sax6
-rw-r--r--result/title.xml.sax26
-rw-r--r--result/tstblanks.xml2
-rw-r--r--result/tstblanks.xml.rde3
-rw-r--r--result/tstblanks.xml.rdr3
-rw-r--r--result/tstblanks.xml.sax6
-rw-r--r--result/tstblanks.xml.sax26
-rw-r--r--result/utf16bebom.xmlbin0 -> 344 bytes
-rw-r--r--result/utf16bebom.xml.rde4
-rw-r--r--result/utf16bebom.xml.rdr4
-rw-r--r--result/utf16bebom.xml.sax8
-rw-r--r--result/utf16bebom.xml.sax28
-rw-r--r--result/utf16bom.xmlbin0 -> 258 bytes
-rw-r--r--result/utf16bom.xml.rde3
-rw-r--r--result/utf16bom.xml.rdr3
-rw-r--r--result/utf16bom.xml.sax7
-rw-r--r--result/utf16bom.xml.sax27
-rw-r--r--result/utf16lebom.xmlbin0 -> 344 bytes
-rw-r--r--result/utf16lebom.xml.rde4
-rw-r--r--result/utf16lebom.xml.rdr4
-rw-r--r--result/utf16lebom.xml.sax8
-rw-r--r--result/utf16lebom.xml.sax28
-rw-r--r--result/utf8bom.xml2
-rw-r--r--result/utf8bom.xml.rde1
-rw-r--r--result/utf8bom.xml.rdr1
-rw-r--r--result/utf8bom.xml.sax5
-rw-r--r--result/utf8bom.xml.sax25
-rw-r--r--result/valid/127772.xml5
-rw-r--r--result/valid/127772.xml.err0
-rw-r--r--result/valid/127772.xml.err.rdr0
-rw-r--r--result/valid/694228.xml5
-rw-r--r--result/valid/694228.xml.err0
-rw-r--r--result/valid/694228.xml.err.rdr0
-rw-r--r--result/valid/REC-xml-19980210.xml4154
-rw-r--r--result/valid/REC-xml-19980210.xml.err0
-rw-r--r--result/valid/REC-xml-19980210.xml.err.rdr0
-rw-r--r--result/valid/UTF16Entity.xml8
-rw-r--r--result/valid/UTF16Entity.xml.err0
-rw-r--r--result/valid/UTF16Entity.xml.err.rdr0
-rw-r--r--result/valid/dia.xml139
-rw-r--r--result/valid/dia.xml.err0
-rw-r--r--result/valid/dia.xml.err.rdr0
-rw-r--r--result/valid/id1.xml13
-rw-r--r--result/valid/id1.xml.err0
-rw-r--r--result/valid/id1.xml.err.rdr0
-rw-r--r--result/valid/id2.xml14
-rw-r--r--result/valid/id2.xml.err0
-rw-r--r--result/valid/id2.xml.err.rdr0
-rw-r--r--result/valid/id3.xml14
-rw-r--r--result/valid/id3.xml.err0
-rw-r--r--result/valid/id3.xml.err.rdr0
-rw-r--r--result/valid/index.xml808
-rw-r--r--result/valid/index.xml.err0
-rw-r--r--result/valid/index.xml.err.rdr0
-rw-r--r--result/valid/mixed_ns.xml16
-rw-r--r--result/valid/mixed_ns.xml.err0
-rw-r--r--result/valid/mixed_ns.xml.err.rdr0
-rw-r--r--result/valid/notes.xml3
-rw-r--r--result/valid/notes.xml.err0
-rw-r--r--result/valid/notes.xml.err.rdr0
-rw-r--r--result/valid/ns.xml7
-rw-r--r--result/valid/ns.xml.err0
-rw-r--r--result/valid/ns.xml.err.rdr0
-rw-r--r--result/valid/ns2.xml11
-rw-r--r--result/valid/ns2.xml.err0
-rw-r--r--result/valid/ns2.xml.err.rdr0
-rw-r--r--result/valid/objednavka.xml39
-rw-r--r--result/valid/objednavka.xml.err0
-rw-r--r--result/valid/objednavka.xml.err.rdr0
-rw-r--r--result/valid/rss.xml169
-rw-r--r--result/valid/rss.xml.err3
-rw-r--r--result/valid/rss.xml.err.rdr3
-rw-r--r--result/valid/t10.xml12
-rw-r--r--result/valid/t10.xml.err0
-rw-r--r--result/valid/t10.xml.err.rdr0
-rw-r--r--result/valid/t11.xml3
-rw-r--r--result/valid/t11.xml.err0
-rw-r--r--result/valid/t11.xml.err.rdr0
-rw-r--r--result/valid/t4.dtd0
-rw-r--r--result/valid/t4.dtd.err6
-rw-r--r--result/valid/t4.dtd.err.rdr6
-rw-r--r--result/valid/t4.xml3
-rw-r--r--result/valid/t4.xml.err0
-rw-r--r--result/valid/t4.xml.err.rdr0
-rw-r--r--result/valid/t4a.dtd0
-rw-r--r--result/valid/t4a.dtd.err6
-rw-r--r--result/valid/t4a.dtd.err.rdr6
-rw-r--r--result/valid/t4a.xml3
-rw-r--r--result/valid/t4a.xml.err0
-rw-r--r--result/valid/t4a.xml.err.rdr0
-rw-r--r--result/valid/t6.dtd0
-rw-r--r--result/valid/t6.dtd.err6
-rw-r--r--result/valid/t6.dtd.err.rdr6
-rw-r--r--result/valid/t6.xml3
-rw-r--r--result/valid/t6.xml.err0
-rw-r--r--result/valid/t6.xml.err.rdr0
-rw-r--r--result/valid/t8.xml0
-rw-r--r--result/valid/t8.xml.err19
-rw-r--r--result/valid/t8.xml.err.rdr14
-rw-r--r--result/valid/t8a.xml0
-rw-r--r--result/valid/t8a.xml.err19
-rw-r--r--result/valid/t8a.xml.err.rdr14
-rw-r--r--result/valid/t9.xml10
-rw-r--r--result/valid/t9.xml.err0
-rw-r--r--result/valid/t9.xml.err.rdr0
-rw-r--r--result/valid/t9a.xml10
-rw-r--r--result/valid/t9a.xml.err0
-rw-r--r--result/valid/t9a.xml.err.rdr0
-rw-r--r--result/valid/xhtml1.xhtml1453
-rw-r--r--result/valid/xhtml1.xhtml.err0
-rw-r--r--result/valid/xhtml1.xhtml.err.rdr0
-rw-r--r--result/valid/xlink.xml525
-rw-r--r--result/valid/xlink.xml.err4
-rw-r--r--result/valid/xlink.xml.err.rdr4
-rw-r--r--result/wap.xml24
-rw-r--r--result/wap.xml.rde70
-rw-r--r--result/wap.xml.rdr70
-rw-r--r--result/wap.xml.sax86
-rw-r--r--result/wap.xml.sax287
-rw-r--r--result/winblanks.xml6
-rw-r--r--result/winblanks.xml.rde13
-rw-r--r--result/winblanks.xml.rdr13
-rw-r--r--result/winblanks.xml.sax18
-rw-r--r--result/winblanks.xml.sax218
-rw-r--r--result/wml.xml10
-rw-r--r--result/wml.xml.rde24
-rw-r--r--result/wml.xml.rdr24
-rw-r--r--result/wml.xml.sax31
-rw-r--r--result/wml.xml.sax231
-rw-r--r--result/xhtml130
-rw-r--r--result/xhtml1.rde95
-rw-r--r--result/xhtml1.rdr95
-rw-r--r--result/xhtml1.sax103
-rw-r--r--result/xhtml1.sax2104
-rw-r--r--result/xhtmlcomp7
-rw-r--r--result/xhtmlcomp.rde19
-rw-r--r--result/xhtmlcomp.rdr19
-rw-r--r--result/xhtmlcomp.sax23
-rw-r--r--result/xhtmlcomp.sax223
-rw-r--r--result/xml17
-rw-r--r--result/xml1.rde8
-rw-r--r--result/xml1.rdr4
-rw-r--r--result/xml1.sax23
-rw-r--r--result/xml1.sax223
-rw-r--r--result/xml28
-rw-r--r--result/xml2.rde4
-rw-r--r--result/xml2.rdr6
-rw-r--r--result/xml2.sax18
-rw-r--r--result/xml2.sax218
-rw-r--r--result/xmlid/id_err1.xml2
-rw-r--r--result/xmlid/id_err1.xml.err3
-rw-r--r--result/xmlid/id_err2.xml6
-rw-r--r--result/xmlid/id_err2.xml.err3
-rw-r--r--result/xmlid/id_tst1.xml6
-rw-r--r--result/xmlid/id_tst1.xml.err0
-rw-r--r--result/xmlid/id_tst2.xml6
-rw-r--r--result/xmlid/id_tst2.xml.err3
-rw-r--r--result/xmlid/id_tst3.xml6
-rw-r--r--result/xmlid/id_tst3.xml.err6
-rw-r--r--result/xmlid/id_tst4.xml6
-rw-r--r--result/xmlid/id_tst4.xml.err3
-rw-r--r--runsuite.c37
-rw-r--r--runtest.c144
-rw-r--r--runxmlconf.c9
-rw-r--r--save.h35
-rw-r--r--schematron.c36
-rw-r--r--test/HTML/53867.html69
-rw-r--r--test/HTML/Down.html12
-rw-r--r--test/HTML/attrents.html5
-rw-r--r--test/HTML/autoclose.html1
-rw-r--r--test/HTML/autoclose2.html1
-rw-r--r--test/HTML/autoclose3.html3
-rw-r--r--test/HTML/cf_128.html20
-rw-r--r--test/HTML/doc2.htm30
-rw-r--r--test/HTML/doc3.htm851
-rw-r--r--test/HTML/entities.html5
-rw-r--r--test/HTML/entities2.html7
-rw-r--r--test/HTML/fp40.htm166
-rw-r--r--test/HTML/html5_enc.html8
-rw-r--r--test/HTML/liclose.html13
-rw-r--r--test/HTML/lt.html5
-rw-r--r--test/HTML/noscript.html10
-rw-r--r--test/HTML/pre.html5
-rw-r--r--test/HTML/python.html10
-rw-r--r--test/HTML/reg1.html10
-rw-r--r--test/HTML/reg2.html12
-rw-r--r--test/HTML/reg3.html13
-rw-r--r--test/HTML/reg4.html12
-rw-r--r--test/HTML/repeat.html1
-rw-r--r--test/HTML/script.html9
-rw-r--r--test/HTML/script2.html19
-rw-r--r--test/HTML/test2.html33
-rw-r--r--test/HTML/test3.html34
-rw-r--r--test/HTML/utf8bug.html182
-rw-r--r--test/HTML/wired.html516
-rwxr-xr-xtest/SVG/4rects.xml11
-rwxr-xr-xtest/SVG/a-valid.xml10
-rwxr-xr-xtest/SVG/a-wf.xml9
-rwxr-xr-xtest/SVG/bike.xml41
-rwxr-xr-xtest/SVG/circle.xml11
-rwxr-xr-xtest/SVG/defs.xml14
-rwxr-xr-xtest/SVG/desc.xml14
-rwxr-xr-xtest/SVG/ellipse.xml10
-rwxr-xr-xtest/SVG/flower2.xml44
-rwxr-xr-xtest/SVG/gradient.xml16
-rwxr-xr-xtest/SVG/group01.xml15
-rwxr-xr-xtest/SVG/group02.xml13
-rwxr-xr-xtest/SVG/group03.xml13
-rwxr-xr-xtest/SVG/image-valid.xml11
-rwxr-xr-xtest/SVG/image-wf.xml11
-rwxr-xr-xtest/SVG/lin-gradient.xml16
-rwxr-xr-xtest/SVG/marker.xml28
-rwxr-xr-xtest/SVG/mask.xml13
-rwxr-xr-xtest/SVG/mathswitch.xml32
-rwxr-xr-xtest/SVG/parentns.xml12
-rwxr-xr-xtest/SVG/path01.xml5
-rwxr-xr-xtest/SVG/path02.xml10
-rwxr-xr-xtest/SVG/patternfill.xml12
-rwxr-xr-xtest/SVG/polyline.xml9
-rwxr-xr-xtest/SVG/private.xml19
-rwxr-xr-xtest/SVG/rad-gradient.xml17
-rwxr-xr-xtest/SVG/rectangle.xml10
-rwxr-xr-xtest/SVG/richdesc.xml12
-rwxr-xr-xtest/SVG/script.xml13
-rwxr-xr-xtest/SVG/structure01.xml10
-rwxr-xr-xtest/SVG/style.xml11
-rwxr-xr-xtest/SVG/switch.xml21
-rwxr-xr-xtest/SVG/symbol-use.xml28
-rwxr-xr-xtest/SVG/template.xml9
-rwxr-xr-xtest/SVG/text01.xml12
-rwxr-xr-xtest/SVG/text02.xml17
-rwxr-xr-xtest/SVG/text03.xml8
-rwxr-xr-xtest/SVG/toap01.xml10
-rwxr-xr-xtest/SVG/toap02.xml33
-rwxr-xr-xtest/SVG/transform.xml26
-rwxr-xr-xtest/SVG/trivial.xml6
-rwxr-xr-xtest/SVG/twin-gradients.xml19
-rwxr-xr-xtest/SVG/v-template.xml9
-rwxr-xr-xtest/SVG/viewport-nest.xml13
-rwxr-xr-xtest/SVG/viewport-transform.xml46
-rwxr-xr-xtest/SVG/viewport.xml11
-rwxr-xr-xtest/SVG/wf-template.xml7
-rw-r--r--test/URI/smith.uri15
-rw-r--r--test/URI/uri.data18
-rw-r--r--test/VC/AttributeDefaultLegal12
-rw-r--r--test/VC/AttributeNmtokens6
-rw-r--r--test/VC/DuplicateType5
-rw-r--r--test/VC/ElementValid3
-rw-r--r--test/VC/ElementValid24
-rw-r--r--test/VC/ElementValid34
-rw-r--r--test/VC/ElementValid47
-rw-r--r--test/VC/ElementValid57
-rw-r--r--test/VC/ElementValid67
-rw-r--r--test/VC/ElementValid77
-rw-r--r--test/VC/ElementValid87
-rw-r--r--test/VC/Enumeration5
-rw-r--r--test/VC/NS113
-rw-r--r--test/VC/NS213
-rw-r--r--test/VC/NS39
-rw-r--r--test/VC/OneID6
-rw-r--r--test/VC/OneID26
-rw-r--r--test/VC/OneID34
-rw-r--r--test/VC/PENesting2
-rw-r--r--test/VC/PENesting23
-rw-r--r--test/VC/UniqueElementTypeDeclaration7
-rw-r--r--test/VC/UniqueElementTypeDeclaration28
-rw-r--r--test/VC/dtds/a.dtd2
-rw-r--r--test/VC/dtds/doc.dtd2
-rw-r--r--test/VCM/21.xml8
-rw-r--r--test/VCM/AttributeNmtokens.xml14
-rw-r--r--test/VCM/v1.xml4
-rw-r--r--test/VCM/v10.xml5
-rw-r--r--test/VCM/v11.xml5
-rw-r--r--test/VCM/v12.xml9
-rw-r--r--test/VCM/v13.xml7
-rw-r--r--test/VCM/v14.xml9
-rw-r--r--test/VCM/v15.xml9
-rw-r--r--test/VCM/v16.xml8
-rw-r--r--test/VCM/v17.xml7
-rw-r--r--test/VCM/v18.xml7
-rw-r--r--test/VCM/v19.xml7
-rw-r--r--test/VCM/v2.xml4
-rw-r--r--test/VCM/v20.xml10
-rw-r--r--test/VCM/v21.xml7
-rw-r--r--test/VCM/v22.xml15
-rw-r--r--test/VCM/v23.xml10
-rw-r--r--test/VCM/v24.xml16
-rw-r--r--test/VCM/v3.xml8
-rw-r--r--test/VCM/v4.xml5
-rw-r--r--test/VCM/v5.xml7
-rw-r--r--test/VCM/v6.xml9
-rw-r--r--test/VCM/v7.xml8
-rw-r--r--test/VCM/v8.xml5
-rw-r--r--test/VCM/v9.xml5
-rw-r--r--test/WFC/ElemTypeMatch2
-rw-r--r--test/WFC/EntityDeclared2
-rw-r--r--test/WFC/EntityDeclared25
-rw-r--r--test/WFC/EntityDeclared33
-rw-r--r--test/WFC/EntityDeclared46
-rw-r--r--test/WFC/EntityDeclared56
-rw-r--r--test/WFC/LegalCharacter2
-rw-r--r--test/WFC/NoExternalEntityRef5
-rw-r--r--test/WFC/NoLtInAttValue5
-rw-r--r--test/WFC/NoRecursion7
-rw-r--r--test/WFC/PEintsubset6
-rw-r--r--test/WFC/UniqueAttSpec2
-rw-r--r--test/WFC/UniqueAttSpec22
-rw-r--r--test/XInclude/docs/docids.xml15
-rw-r--r--test/XInclude/docs/fallback.xml6
-rw-r--r--test/XInclude/docs/fallback2.xml10
-rw-r--r--test/XInclude/docs/include.xml4
-rw-r--r--test/XInclude/docs/nodes.xml4
-rw-r--r--test/XInclude/docs/nodes2.xml4
-rw-r--r--test/XInclude/docs/nodes3.xml4
-rw-r--r--test/XInclude/docs/recursive.xml3
-rw-r--r--test/XInclude/docs/tstencoding.xml5
-rw-r--r--test/XInclude/docs/txtinclude.xml4
-rw-r--r--test/XInclude/ents/ids.xml10
-rw-r--r--test/XInclude/ents/inc.txt1
-rw-r--r--test/XInclude/ents/isolatin.txt1
-rw-r--r--test/XInclude/ents/something.txt1
-rw-r--r--test/XInclude/ents/something.xml5
-rw-r--r--test/XInclude/ents/sub-inc.ent2
-rw-r--r--test/XPath/docs/chapters28
-rw-r--r--test/XPath/docs/id28
-rw-r--r--test/XPath/docs/lang13
-rw-r--r--test/XPath/docs/mixed10
-rw-r--r--test/XPath/docs/nodes2
-rw-r--r--test/XPath/docs/simple12
-rw-r--r--test/XPath/docs/str9
-rw-r--r--test/XPath/docs/usr112
-rw-r--r--test/XPath/docs/vid43
-rw-r--r--test/XPath/expr/base5
-rw-r--r--test/XPath/expr/compare46
-rw-r--r--test/XPath/expr/equality26
-rw-r--r--test/XPath/expr/floats61
-rw-r--r--test/XPath/expr/functions25
-rw-r--r--test/XPath/expr/strings34
-rw-r--r--test/XPath/tests/chaptersbase9
-rw-r--r--test/XPath/tests/chaptersprefol8
-rw-r--r--test/XPath/tests/idsimple3
-rw-r--r--test/XPath/tests/langsimple5
-rw-r--r--test/XPath/tests/mixedpat7
-rw-r--r--test/XPath/tests/nodespat5
-rw-r--r--test/XPath/tests/simpleabbr10
-rw-r--r--test/XPath/tests/simplebase9
-rw-r--r--test/XPath/tests/usr1check1
-rw-r--r--test/XPath/tests/vidbase5
-rw-r--r--test/XPath/xptr/chapterschildseq8
-rw-r--r--test/XPath/xptr/chaptersparts6
-rw-r--r--test/XPath/xptr/chaptersrange4
-rw-r--r--test/XPath/xptr/strpoint9
-rw-r--r--test/XPath/xptr/strrange6
-rw-r--r--test/XPath/xptr/strrange23
-rw-r--r--test/XPath/xptr/strrange34
-rw-r--r--test/XPath/xptr/vidbase2
-rw-r--r--test/XPath/xptr/vidchildseq4
-rw-r--r--test/XPath/xptr/vidparts3
-rw-r--r--test/att12
-rw-r--r--test/att1022
-rw-r--r--test/att1113
-rw-r--r--test/att21
-rw-r--r--test/att31
-rw-r--r--test/att49264
-rw-r--r--test/att573
-rw-r--r--test/att66
-rw-r--r--test/att710
-rw-r--r--test/att81
-rw-r--r--test/att95
-rw-r--r--test/attrib.xml1
-rw-r--r--test/automata/a14
-rw-r--r--test/automata/aba26
-rw-r--r--test/automata/abaa43
-rw-r--r--test/automata/abba30
-rw-r--r--test/automata/po19
-rw-r--r--test/badcomment.xml18
-rw-r--r--test/bigentname.xml5
-rw-r--r--test/bigname.xml1
-rw-r--r--test/bigname2.xml1
-rwxr-xr-xtest/c14n/1-1-without-comments/doc.dtd1
-rwxr-xr-xtest/c14n/1-1-without-comments/example-1.xml14
-rwxr-xr-xtest/c14n/1-1-without-comments/example-2.xml11
-rwxr-xr-xtest/c14n/1-1-without-comments/example-3.xml18
-rwxr-xr-xtest/c14n/1-1-without-comments/example-4.xml9
-rwxr-xr-xtest/c14n/1-1-without-comments/example-5.xml12
-rwxr-xr-xtest/c14n/1-1-without-comments/example-6.xml2
-rwxr-xr-xtest/c14n/1-1-without-comments/example-7.xml11
-rwxr-xr-xtest/c14n/1-1-without-comments/example-7.xpath10
-rwxr-xr-xtest/c14n/1-1-without-comments/example-8.xml11
-rwxr-xr-xtest/c14n/1-1-without-comments/example-8.xpath10
-rwxr-xr-xtest/c14n/1-1-without-comments/world.txt1
-rw-r--r--test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xml16
-rw-r--r--test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xpath9
-rw-r--r--test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xml16
-rw-r--r--test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xpath9
-rw-r--r--test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xml14
-rw-r--r--test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xpath9
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-1.xml24
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-1.xpath11
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-2.xml23
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-2.xpath10
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-3.xml24
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-3.xpath11
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-4.xml24
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-4.xpath11
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-5.xml24
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-5.xpath11
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-6.xml23
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-6.xpath10
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-7.xml23
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlbase-prop-7.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmlid-prop-1.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlid-prop-1.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmlid-prop-2.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlid-prop-2.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmllang-prop-1.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmllang-prop-1.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmllang-prop-2.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmllang-prop-2.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmllang-prop-3.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmllang-prop-3.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmllang-prop-4.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmllang-prop-4.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmlspace-prop-1.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlspace-prop-1.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmlspace-prop-2.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlspace-prop-2.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmlspace-prop-3.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlspace-prop-3.xpath10
-rw-r--r--test/c14n/1-1-without-comments/xmlspace-prop-4.xml20
-rwxr-xr-xtest/c14n/1-1-without-comments/xmlspace-prop-4.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-09.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-09.xpath8
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-10.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-10.xpath12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-11.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-11.xpath11
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-12.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-12.xpath12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-13.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-13.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-14.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-14.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-15.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-15.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-16.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-16.xpath9
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-17.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-17.xpath12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-18.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-18.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-18.xpath8
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-19.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-19.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-19.xpath12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-20.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-20.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-20.xpath11
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-21.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-21.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-21.xpath12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-22.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-22.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-22.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-23.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-23.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-23.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-24.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-24.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-24.xpath10
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-25.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-25.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-25.xpath9
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-26.ns1
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-26.xml12
-rw-r--r--test/c14n/exc-without-comments/merlin-c14n-two-26.xpath12
-rw-r--r--test/c14n/exc-without-comments/test-0.xml18
-rw-r--r--test/c14n/exc-without-comments/test-0.xpath3
-rw-r--r--test/c14n/exc-without-comments/test-1.ns1
-rw-r--r--test/c14n/exc-without-comments/test-1.xml18
-rw-r--r--test/c14n/exc-without-comments/test-1.xpath3
-rw-r--r--test/c14n/exc-without-comments/test-2.xml20
-rw-r--r--test/c14n/exc-without-comments/test-2.xpath6
-rw-r--r--test/c14n/with-comments/doc.dtd1
-rw-r--r--test/c14n/with-comments/example-1.xml14
-rw-r--r--test/c14n/with-comments/example-2.xml11
-rw-r--r--test/c14n/with-comments/example-3.xml18
-rw-r--r--test/c14n/with-comments/example-4.xml9
-rw-r--r--test/c14n/with-comments/example-5.xml12
-rw-r--r--test/c14n/with-comments/example-6.xml2
-rw-r--r--test/c14n/with-comments/example-7.xml11
-rw-r--r--test/c14n/with-comments/example-7.xpath10
-rw-r--r--test/c14n/with-comments/world.txt1
-rw-r--r--test/c14n/without-comments/doc.dtd1
-rw-r--r--test/c14n/without-comments/example-1.xml14
-rw-r--r--test/c14n/without-comments/example-2.xml11
-rw-r--r--test/c14n/without-comments/example-3.xml18
-rw-r--r--test/c14n/without-comments/example-4.xml9
-rw-r--r--test/c14n/without-comments/example-5.xml12
-rw-r--r--test/c14n/without-comments/example-6.xml2
-rw-r--r--test/c14n/without-comments/example-7.xml11
-rw-r--r--test/c14n/without-comments/example-7.xpath10
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-00.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-00.xpath8
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-01.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-01.xpath12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-02.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-02.xpath11
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-03.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-03.xpath12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-04.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-04.xpath10
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-05.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-05.xpath10
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-06.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-06.xpath10
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-07.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-07.xpath9
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-08.xml12
-rw-r--r--test/c14n/without-comments/merlin-c14n-two-08.xpath12
-rw-r--r--test/c14n/without-comments/test-0.xml9
-rw-r--r--test/c14n/without-comments/test-0.xpath14
-rw-r--r--test/c14n/without-comments/test-1.xml43
-rw-r--r--test/c14n/without-comments/test-1.xpath14
-rw-r--r--test/c14n/without-comments/test-2.xml8
-rw-r--r--test/c14n/without-comments/test-2.xpath8
-rw-r--r--test/c14n/without-comments/test-3.xml18
-rw-r--r--test/c14n/without-comments/test-3.xpath3
-rw-r--r--test/c14n/without-comments/world.txt1
-rw-r--r--test/catalogs/catal.script4
-rw-r--r--test/catalogs/catal.sgml2
-rw-r--r--test/catalogs/catal1.sgml1
-rw-r--r--test/catalogs/catal2.sgml4
-rw-r--r--test/catalogs/catal3.sgml8
-rw-r--r--test/catalogs/docbook.script5
-rw-r--r--test/catalogs/docbook.xml14
-rw-r--r--test/catalogs/registry.script4
-rw-r--r--test/catalogs/registry.xml23
-rw-r--r--test/catalogs/stylesheet.xml12
-rw-r--r--test/catalogs/whites.script4
-rw-r--r--test/catalogs/whites.sgml5
-rw-r--r--test/catalogs/whitex.script7
-rw-r--r--test/catalogs/whitex.xml15
-rw-r--r--test/cdata3
-rw-r--r--test/cdata26
-rw-r--r--test/comment.xml6
-rw-r--r--test/comment2.xml6
-rw-r--r--test/comment3.xml164
-rw-r--r--test/comment4.xml5
-rw-r--r--test/comment5.xml9
-rw-r--r--test/comment6.xml13
-rw-r--r--test/dav125
-rw-r--r--test/dav104
-rw-r--r--test/dav1121
-rw-r--r--test/dav122
-rw-r--r--test/dav1316
-rw-r--r--test/dav1520
-rw-r--r--test/dav166
-rw-r--r--test/dav1722
-rw-r--r--test/dav186
-rw-r--r--test/dav1918
-rw-r--r--test/dav224
-rw-r--r--test/dav318
-rw-r--r--test/dav416
-rw-r--r--test/dav517
-rw-r--r--test/dav622
-rw-r--r--test/dav716
-rw-r--r--test/dav814
-rw-r--r--test/dav918
-rw-r--r--test/defattr.xml6
-rw-r--r--test/defattr2.xml8
-rw-r--r--test/dia199
-rw-r--r--test/dia299
-rw-r--r--test/dtd15
-rw-r--r--test/dtd108
-rw-r--r--test/dtd115
-rw-r--r--test/dtd125
-rw-r--r--test/dtd136
-rw-r--r--test/dtd24
-rw-r--r--test/dtd35
-rw-r--r--test/dtd44
-rw-r--r--test/dtd56
-rw-r--r--test/dtd66
-rw-r--r--test/dtd76
-rw-r--r--test/dtd88
-rw-r--r--test/dtd98
-rw-r--r--test/dtds/eve.dtd4
-rw-r--r--test/ebcdic_566012.xml1
-rw-r--r--test/emptycdata.xml4
-rw-r--r--test/ent17
-rw-r--r--test/ent1021
-rw-r--r--test/ent116
-rw-r--r--test/ent128
-rw-r--r--test/ent136
-rw-r--r--test/ent211
-rw-r--r--test/ent38
-rw-r--r--test/ent48
-rw-r--r--test/ent55
-rw-r--r--test/ent68
-rw-r--r--test/ent77
-rw-r--r--test/ent89
-rw-r--r--test/ent961
-rw-r--r--test/errors/attr1.xml1
-rw-r--r--test/errors/attr2.xml1
-rw-r--r--test/errors/attr3.xml6
-rw-r--r--test/errors/attr4.xml1
-rw-r--r--test/errors/cdata.xml2
-rw-r--r--test/errors/charref1.xml1
-rw-r--r--test/errors/comment1.xml6
-rw-r--r--test/errors/content1.xml10
-rw-r--r--test/errors/dtd136
-rw-r--r--test/errors/extparsedent.xml5
-rw-r--r--test/errors/name.xml1
-rw-r--r--test/errors/name2.xml1
-rw-r--r--test/eve.xml6
-rw-r--r--test/expr/base86
-rw-r--r--test/intsubset.xml6
-rw-r--r--test/intsubset2.xml282
-rw-r--r--test/isolat12
-rw-r--r--test/isolat2107
-rw-r--r--test/isolat310
-rw-r--r--test/japancrlf.xml6
-rw-r--r--test/namespaces/err_0.xml1
-rw-r--r--test/namespaces/err_1.xml1
-rw-r--r--test/namespaces/err_10.xml1
-rw-r--r--test/namespaces/err_11.xml1
-rw-r--r--test/namespaces/err_2.xml1
-rw-r--r--test/namespaces/err_3.xml1
-rw-r--r--test/namespaces/err_4.xml1
-rw-r--r--test/namespaces/err_5.xml1
-rw-r--r--test/namespaces/err_6.xml1
-rw-r--r--test/namespaces/err_7.xml1
-rw-r--r--test/namespaces/err_8.xml1
-rw-r--r--test/namespaces/err_9.xml2
-rw-r--r--test/namespaces/reconcile/tests-to-c.xsl275
-rw-r--r--test/namespaces/reconcile/tests.xml249
-rw-r--r--test/ns4
-rw-r--r--test/ns23
-rw-r--r--test/ns33
-rw-r--r--test/ns42
-rw-r--r--test/ns54
-rw-r--r--test/ns64
-rw-r--r--test/ns71
-rw-r--r--test/nsclean.xml9
-rw-r--r--test/p3p24
-rw-r--r--test/pattern/conj.pat8
-rw-r--r--test/pattern/conj.xml13
-rw-r--r--test/pattern/multiple.pat27
-rw-r--r--test/pattern/multiple.xml5
-rw-r--r--test/pattern/namespaces.pat10
-rw-r--r--test/pattern/namespaces.xml17
-rw-r--r--test/pattern/simple.pat15
-rw-r--r--test/pattern/simple.xml5
-rw-r--r--test/pi.xml6
-rw-r--r--test/pi2.xml6
-rw-r--r--test/rdf181
-rw-r--r--test/rdf21899
-rw-r--r--test/recurse/good.xml343
-rw-r--r--test/recurse/goodattr.xml343
-rw-r--r--test/recurse/lol1.xml23
-rw-r--r--test/recurse/lol2.xml23
-rw-r--r--test/recurse/lol3.dtd20
-rw-r--r--test/recurse/lol3.xml5
-rw-r--r--test/recurse/lol4.patch16
-rw-r--r--test/recurse/lol4.xml36
-rw-r--r--test/recurse/lol5.xml51
-rw-r--r--test/recurse/lol6.xml23
-rw-r--r--test/regexp/branch14
-rw-r--r--test/regexp/bug31633820
-rw-r--r--test/regexp/bug42059610
-rw-r--r--test/regexp/content12
-rw-r--r--test/regexp/hard12
-rw-r--r--test/regexp/ncname6
-rw-r--r--test/regexp/ranges15
-rw-r--r--test/regexp/ranges214
-rw-r--r--test/regexp/xpath37
-rw-r--r--test/relaxng/302836.rng35
-rw-r--r--test/relaxng/302836_0.xml12
-rw-r--r--test/relaxng/307377.rng14
-rw-r--r--test/relaxng/307377_0.xml1
-rw-r--r--test/relaxng/307377_1.xml1
-rw-r--r--test/relaxng/307377_2.xml1
-rw-r--r--test/relaxng/492317.rng16
-rw-r--r--test/relaxng/492317_0.xml4
-rw-r--r--test/relaxng/492317_1.xml4
-rw-r--r--test/relaxng/492317_2.xml4
-rw-r--r--test/relaxng/558452.rng21
-rw-r--r--test/relaxng/558452_0.xml6
-rw-r--r--test/relaxng/558452_1.xml3
-rw-r--r--test/relaxng/558452_2.xml4
-rw-r--r--test/relaxng/558452_3.xml5
-rw-r--r--test/relaxng/558452_4.xml7
-rw-r--r--test/relaxng/595792-ext.rng11
-rw-r--r--test/relaxng/595792.rng8
-rw-r--r--test/relaxng/595792_0.xml4
-rw-r--r--test/relaxng/710744.rng16
-rw-r--r--test/relaxng/710744_1.xml2
-rw-r--r--test/relaxng/710744_2.xml3
-rw-r--r--test/relaxng/OASIS/spectest.xml6845
-rw-r--r--test/relaxng/OpenDocumentSub.rng229
-rw-r--r--test/relaxng/OpenDocumentSub_0.xml7
-rw-r--r--test/relaxng/addressBook.rng24
-rw-r--r--test/relaxng/choice0.rng25
-rw-r--r--test/relaxng/choice0_0.xml2
-rw-r--r--test/relaxng/choice0_1.xml2
-rw-r--r--test/relaxng/choice0_2.xml3
-rw-r--r--test/relaxng/choice0_3.xml3
-rw-r--r--test/relaxng/choice0_4.xml2
-rw-r--r--test/relaxng/choice0_5.xml3
-rw-r--r--test/relaxng/choice0_6.xml3
-rw-r--r--test/relaxng/choice0_7.xml3
-rw-r--r--test/relaxng/choice0_8.xml3
-rw-r--r--test/relaxng/compare0.rng8
-rw-r--r--test/relaxng/compare0_0.xml3
-rw-r--r--test/relaxng/comps.rng177
-rw-r--r--test/relaxng/comps_0.xml17870
-rw-r--r--test/relaxng/demo.rng11
-rw-r--r--test/relaxng/demo.xml1
-rw-r--r--test/relaxng/demo2.rng23
-rw-r--r--test/relaxng/demo3.rng8
-rw-r--r--test/relaxng/docbook.rng9141
-rw-r--r--test/relaxng/docbook_0.xml4448
-rw-r--r--test/relaxng/empty0.rng16
-rw-r--r--test/relaxng/empty0_0.xml3
-rw-r--r--test/relaxng/empty1.rng18
-rw-r--r--test/relaxng/empty1_0.xml3
-rw-r--r--test/relaxng/empty1_1.xml2
-rw-r--r--test/relaxng/inline.rng20
-rw-r--r--test/relaxng/inline2.rng21
-rw-r--r--test/relaxng/inline3.rng22
-rw-r--r--test/relaxng/interleave0_0.rng24
-rw-r--r--test/relaxng/interleave1_0.rng15
-rw-r--r--test/relaxng/libvirt.rng1258
-rw-r--r--test/relaxng/libvirt_0.xml23
-rw-r--r--test/relaxng/list.rng23
-rw-r--r--test/relaxng/list_0.xml1
-rw-r--r--test/relaxng/list_1.xml1
-rw-r--r--test/relaxng/pattern1.rng8
-rw-r--r--test/relaxng/pattern2.rng9
-rw-r--r--test/relaxng/proofsystem.rng96
-rw-r--r--test/relaxng/rngbug-001.ext13
-rw-r--r--test/relaxng/rngbug-001.rng16
-rw-r--r--test/relaxng/rngbug-001.xml6
-rw-r--r--test/relaxng/spec.rng60
-rw-r--r--test/relaxng/spec1.rng14
-rw-r--r--test/relaxng/spec1_1.xml3
-rw-r--r--test/relaxng/spec_0.xml3589
-rw-r--r--test/relaxng/table.rng21
-rw-r--r--test/relaxng/testsuite.xml1708
-rw-r--r--test/relaxng/tutor10_1.rng4
-rw-r--r--test/relaxng/tutor10_10.rng13
-rw-r--r--test/relaxng/tutor10_10_1.xml5
-rw-r--r--test/relaxng/tutor10_1_1.xml1
-rw-r--r--test/relaxng/tutor10_1_2.xml1
-rw-r--r--test/relaxng/tutor10_1_3.xml1
-rw-r--r--test/relaxng/tutor10_1_4.xml1
-rw-r--r--test/relaxng/tutor10_1_5.xml1
-rw-r--r--test/relaxng/tutor10_1_6.xml1
-rw-r--r--test/relaxng/tutor10_2.rng3
-rw-r--r--test/relaxng/tutor10_2_1.xml1
-rw-r--r--test/relaxng/tutor10_2_2.xml1
-rw-r--r--test/relaxng/tutor10_2_3.xml1
-rw-r--r--test/relaxng/tutor10_2_4.xml1
-rw-r--r--test/relaxng/tutor10_3.rng12
-rw-r--r--test/relaxng/tutor10_3_1.xml3
-rw-r--r--test/relaxng/tutor10_4.rng12
-rw-r--r--test/relaxng/tutor10_4_1.xml3
-rw-r--r--test/relaxng/tutor10_5.rng13
-rw-r--r--test/relaxng/tutor10_5_1.xml3
-rw-r--r--test/relaxng/tutor10_6.rng13
-rw-r--r--test/relaxng/tutor10_6_1.xml3
-rw-r--r--test/relaxng/tutor10_7.rng9
-rw-r--r--test/relaxng/tutor10_7_1.xml3
-rw-r--r--test/relaxng/tutor10_7_2.xml3
-rw-r--r--test/relaxng/tutor10_7_3.xml3
-rw-r--r--test/relaxng/tutor10_8.rng9
-rw-r--r--test/relaxng/tutor10_8_1.xml3
-rw-r--r--test/relaxng/tutor10_8_2.xml3
-rw-r--r--test/relaxng/tutor10_8_3.xml3
-rw-r--r--test/relaxng/tutor10_9.rng14
-rw-r--r--test/relaxng/tutor10_9_1.xml5
-rw-r--r--test/relaxng/tutor11_1.rng22
-rw-r--r--test/relaxng/tutor11_1_1.xml22
-rw-r--r--test/relaxng/tutor11_1_2.xml7
-rw-r--r--test/relaxng/tutor11_1_3.xml4197
-rw-r--r--test/relaxng/tutor11_2.rng14
-rw-r--r--test/relaxng/tutor11_2_1.xml5
-rw-r--r--test/relaxng/tutor11_2_2.xml5
-rw-r--r--test/relaxng/tutor11_2_3.xml5
-rw-r--r--test/relaxng/tutor11_3.rng15
-rw-r--r--test/relaxng/tutor11_3_1.xml1
-rw-r--r--test/relaxng/tutor11_4.rng19
-rw-r--r--test/relaxng/tutor11_4_1.xml1
-rw-r--r--test/relaxng/tutor12_1.rng13
-rw-r--r--test/relaxng/tutor12_1_1.xml3
-rw-r--r--test/relaxng/tutor13_1.rng33
-rw-r--r--test/relaxng/tutor13_1_1.xml12
-rw-r--r--test/relaxng/tutor14_1.rng53
-rw-r--r--test/relaxng/tutor1_1.rng12
-rw-r--r--test/relaxng/tutor1_1_1.xml10
-rw-r--r--test/relaxng/tutor1_2.rng12
-rw-r--r--test/relaxng/tutor1_2_1.xml10
-rw-r--r--test/relaxng/tutor1_3.rng17
-rw-r--r--test/relaxng/tutor1_3_1.xml10
-rw-r--r--test/relaxng/tutor1_4.rng12
-rw-r--r--test/relaxng/tutor1_4_1.xml10
-rw-r--r--test/relaxng/tutor2_1.rng27
-rw-r--r--test/relaxng/tutor2_1_1.xml11
-rw-r--r--test/relaxng/tutor3_1.rng12
-rw-r--r--test/relaxng/tutor3_1_1.xml3
-rw-r--r--test/relaxng/tutor3_1_2.xml3
-rw-r--r--test/relaxng/tutor3_2.rng8
-rw-r--r--test/relaxng/tutor3_2_1.xml1
-rw-r--r--test/relaxng/tutor3_3.rng17
-rw-r--r--test/relaxng/tutor3_3_1.xml4
-rw-r--r--test/relaxng/tutor3_4.rng22
-rw-r--r--test/relaxng/tutor3_4_1.xml4
-rw-r--r--test/relaxng/tutor3_5.rng22
-rw-r--r--test/relaxng/tutor3_5_1.xml7
-rw-r--r--test/relaxng/tutor3_5_2.xml3
-rw-r--r--test/relaxng/tutor3_6.rng8
-rw-r--r--test/relaxng/tutor3_6_1.xml3
-rw-r--r--test/relaxng/tutor3_7.rng2
-rw-r--r--test/relaxng/tutor3_7_1.xml1
-rw-r--r--test/relaxng/tutor3_8.rng17
-rw-r--r--test/relaxng/tutor3_8_1.xml4
-rw-r--r--test/relaxng/tutor3_9.rng5
-rw-r--r--test/relaxng/tutor3_9_1.xml1
-rw-r--r--test/relaxng/tutor4_1.rng22
-rw-r--r--test/relaxng/tutor4_1_1.xml4
-rw-r--r--test/relaxng/tutor4_2.rng34
-rw-r--r--test/relaxng/tutor4_2_1.xml4
-rw-r--r--test/relaxng/tutor4_3.rng27
-rw-r--r--test/relaxng/tutor4_3_1.xml1
-rw-r--r--test/relaxng/tutor4_3_2.xml1
-rw-r--r--test/relaxng/tutor4_3_3.xml1
-rw-r--r--test/relaxng/tutor4_3_4.xml1
-rw-r--r--test/relaxng/tutor4_3_5.xml1
-rw-r--r--test/relaxng/tutor4_3_6.xml1
-rw-r--r--test/relaxng/tutor4_4.rng28
-rw-r--r--test/relaxng/tutor4_4_1.xml1
-rw-r--r--test/relaxng/tutor5_1.rng3
-rw-r--r--test/relaxng/tutor5_1_1.xml1
-rw-r--r--test/relaxng/tutor5_2.rng9
-rw-r--r--test/relaxng/tutor5_2_1.xml1
-rw-r--r--test/relaxng/tutor5_3.rng6
-rw-r--r--test/relaxng/tutor5_3_1.xml1
-rw-r--r--test/relaxng/tutor5_4.rng6
-rw-r--r--test/relaxng/tutor5_4_1.xml1
-rw-r--r--test/relaxng/tutor5_5.rng5
-rw-r--r--test/relaxng/tutor6_1.rng10
-rw-r--r--test/relaxng/tutor6_1_1.xml1
-rw-r--r--test/relaxng/tutor6_1_2.xml1
-rw-r--r--test/relaxng/tutor6_1_3.xml1
-rw-r--r--test/relaxng/tutor6_1_4.xml1
-rw-r--r--test/relaxng/tutor6_1_5.xml2
-rw-r--r--test/relaxng/tutor6_2.rng14
-rw-r--r--test/relaxng/tutor6_2_1.xml5
-rw-r--r--test/relaxng/tutor6_2_2.xml5
-rw-r--r--test/relaxng/tutor6_2_3.xml5
-rw-r--r--test/relaxng/tutor6_2_4.xml5
-rw-r--r--test/relaxng/tutor6_3.rng10
-rw-r--r--test/relaxng/tutor6_3_1.xml1
-rw-r--r--test/relaxng/tutor7_1.rng7
-rw-r--r--test/relaxng/tutor7_1_1.xml1
-rw-r--r--test/relaxng/tutor7_1_2.xml1
-rw-r--r--test/relaxng/tutor7_1_3.xml1
-rw-r--r--test/relaxng/tutor7_1_4.xml1
-rw-r--r--test/relaxng/tutor7_2.rng8
-rw-r--r--test/relaxng/tutor7_2_1.xml1
-rw-r--r--test/relaxng/tutor7_2_2.xml1
-rw-r--r--test/relaxng/tutor7_2_3.xml1
-rw-r--r--test/relaxng/tutor7_2_4.xml1
-rw-r--r--test/relaxng/tutor7_3.rng9
-rw-r--r--test/relaxng/tutor7_3_1.xml1
-rw-r--r--test/relaxng/tutor7_3_2.xml1
-rw-r--r--test/relaxng/tutor7_3_3.xml1
-rw-r--r--test/relaxng/tutor7_3_4.xml1
-rw-r--r--test/relaxng/tutor7_3_5.xml1
-rw-r--r--test/relaxng/tutor8_1.rng15
-rw-r--r--test/relaxng/tutor8_1_1.xml6
-rw-r--r--test/relaxng/tutor8_1_2.xml7
-rw-r--r--test/relaxng/tutor8_2.rng57
-rw-r--r--test/relaxng/tutor8_2_1.xml5
-rw-r--r--test/relaxng/tutor8_2_2.xml36
-rw-r--r--test/relaxng/tutor8_2_3.xml3
-rw-r--r--test/relaxng/tutor8_2_4.xml6
-rw-r--r--test/relaxng/tutor8_2_5.xml3
-rw-r--r--test/relaxng/tutor8_2_6.xml5
-rw-r--r--test/relaxng/tutor8_3.rng9
-rw-r--r--test/relaxng/tutor8_3_1.xml1
-rw-r--r--test/relaxng/tutor9_1.rng17
-rw-r--r--test/relaxng/tutor9_10.rng26
-rw-r--r--test/relaxng/tutor9_10_1.xml3
-rw-r--r--test/relaxng/tutor9_11.rng16
-rw-r--r--test/relaxng/tutor9_11_1.xml3
-rw-r--r--test/relaxng/tutor9_12.rng22
-rw-r--r--test/relaxng/tutor9_12_1.xml3
-rw-r--r--test/relaxng/tutor9_1_1.xml7
-rw-r--r--test/relaxng/tutor9_2.rng7
-rw-r--r--test/relaxng/tutor9_2_1.xml4
-rw-r--r--test/relaxng/tutor9_2_2.xml4
-rw-r--r--test/relaxng/tutor9_3.rng37
-rw-r--r--test/relaxng/tutor9_3_1.xml1
-rw-r--r--test/relaxng/tutor9_3_2.xml1
-rw-r--r--test/relaxng/tutor9_4.rng36
-rw-r--r--test/relaxng/tutor9_4_1.xml1
-rw-r--r--test/relaxng/tutor9_4_2.xml1
-rw-r--r--test/relaxng/tutor9_5.rng25
-rw-r--r--test/relaxng/tutor9_5_1.xml3
-rw-r--r--test/relaxng/tutor9_5_2.xml3
-rw-r--r--test/relaxng/tutor9_5_3.xml3
-rw-r--r--test/relaxng/tutor9_6.rng24
-rw-r--r--test/relaxng/tutor9_6_1.xml3
-rw-r--r--test/relaxng/tutor9_6_2.xml3
-rw-r--r--test/relaxng/tutor9_6_3.xml3
-rw-r--r--test/relaxng/tutor9_7.rng26
-rw-r--r--test/relaxng/tutor9_7_1.xml3
-rw-r--r--test/relaxng/tutor9_8.rng42
-rw-r--r--test/relaxng/tutor9_8_1.xml3
-rw-r--r--test/relaxng/tutor9_9.rng37
-rw-r--r--test/relaxng/tutor9_9_1.xml3
-rw-r--r--test/relaxng/tutorA.rng334
-rw-r--r--test/schemas/570702_0.xml13
-rw-r--r--test/schemas/570702_0.xsd25
-rw-r--r--test/schemas/579746_0.xml3
-rw-r--r--test/schemas/579746_0.xsd11
-rw-r--r--test/schemas/579746_1.xml4
-rw-r--r--test/schemas/579746_1.xsd10
-rw-r--r--test/schemas/579746_2.xml5
-rw-r--r--test/schemas/579746_3.xml7
-rw-r--r--test/schemas/579746_4.xml5
-rw-r--r--test/schemas/579746_5.xml6
-rw-r--r--test/schemas/582887-attribute.xsd12
-rw-r--r--test/schemas/582887-common.xsd8
-rw-r--r--test/schemas/582887-element.xsd11
-rw-r--r--test/schemas/582887_0.xml7
-rw-r--r--test/schemas/582887_0.xsd17
-rw-r--r--test/schemas/582906-1-common.xsd6
-rw-r--r--test/schemas/582906-1-prog1.xsd11
-rw-r--r--test/schemas/582906-1-prog2-include.xsd9
-rw-r--r--test/schemas/582906-1-prog2.xsd13
-rw-r--r--test/schemas/582906-1_0.xml5
-rw-r--r--test/schemas/582906-1_0.xsd20
-rw-r--r--test/schemas/582906-2-common.xsd7
-rw-r--r--test/schemas/582906-2-prog1.xsd11
-rw-r--r--test/schemas/582906-2-prog2-include.xsd9
-rw-r--r--test/schemas/582906-2-prog2.xsd13
-rw-r--r--test/schemas/582906-2_0.xml5
-rw-r--r--test/schemas/582906-2_0.xsd20
-rw-r--r--test/schemas/all.xsd16
-rw-r--r--test/schemas/all1_0.xml4
-rw-r--r--test/schemas/all1_0.xsd10
-rw-r--r--test/schemas/all_0.xml1
-rw-r--r--test/schemas/all_0.xsd12
-rw-r--r--test/schemas/all_1.xml2
-rw-r--r--test/schemas/all_1.xsd12
-rw-r--r--test/schemas/all_2.xml1
-rw-r--r--test/schemas/all_2.xsd11
-rw-r--r--test/schemas/all_3.xml1
-rw-r--r--test/schemas/all_4.xml1
-rw-r--r--test/schemas/all_5.xml1
-rw-r--r--test/schemas/all_6.xml1
-rw-r--r--test/schemas/all_7.xml1
-rw-r--r--test/schemas/allsg_0.xml7
-rw-r--r--test/schemas/allsg_0.xsd26
-rw-r--r--test/schemas/allsg_1.xml8
-rw-r--r--test/schemas/allsg_2.xml8
-rw-r--r--test/schemas/allsg_3.xml7
-rw-r--r--test/schemas/allsg_4.xml7
-rw-r--r--test/schemas/allsg_5.xml8
-rw-r--r--test/schemas/annot-err_0.xml4
-rw-r--r--test/schemas/annot-err_0.xsd21
-rw-r--r--test/schemas/any1_0.xml21
-rw-r--r--test/schemas/any1_0.xsd22
-rw-r--r--test/schemas/any2_0.xml24
-rw-r--r--test/schemas/any2_0.xsd26
-rw-r--r--test/schemas/any3_0.xml17
-rw-r--r--test/schemas/any3_0.xsd17
-rw-r--r--test/schemas/any4_0.xml17
-rw-r--r--test/schemas/any4_0.xsd28
-rw-r--r--test/schemas/any5_0.xml7
-rw-r--r--test/schemas/any5_0.xsd13
-rw-r--r--test/schemas/any5_1.xml12
-rw-r--r--test/schemas/any5_1.xsd14
-rw-r--r--test/schemas/any5_2.xml8
-rw-r--r--test/schemas/any5_3.xml11
-rw-r--r--test/schemas/any5_4.xml12
-rw-r--r--test/schemas/any5_5.xml12
-rw-r--r--test/schemas/any5_6.xml13
-rwxr-xr-xtest/schemas/any6_0.xml8
-rw-r--r--test/schemas/any6_1.xsd36
-rw-r--r--test/schemas/any6_2.xsd19
-rwxr-xr-xtest/schemas/any7_0.xml19
-rwxr-xr-xtest/schemas/any7_1.xml18
-rwxr-xr-xtest/schemas/any7_1.xsd13
-rw-r--r--test/schemas/any7_2.xml20
-rwxr-xr-xtest/schemas/any7_2.xsd13
-rw-r--r--test/schemas/any8_0.xml9
-rw-r--r--test/schemas/any8_1.xsd20
-rw-r--r--test/schemas/anyAttr-derive-errors1_0.xml30
-rw-r--r--test/schemas/anyAttr-derive-errors1_0.xsd223
-rw-r--r--test/schemas/anyAttr-derive1_0.xml30
-rw-r--r--test/schemas/anyAttr-derive1_0.xsd227
-rw-r--r--test/schemas/anyAttr-derive2_0.xml9
-rw-r--r--test/schemas/anyAttr-derive2_0.xsd33
-rw-r--r--test/schemas/anyAttr-errors1_0.xml26
-rw-r--r--test/schemas/anyAttr-processContents-err1_0.xml11
-rw-r--r--test/schemas/anyAttr-processContents-err1_0.xsd26
-rw-r--r--test/schemas/anyAttr-processContents1_0.xml13
-rw-r--r--test/schemas/anyAttr-processContents1_0.xsd32
-rw-r--r--test/schemas/anyAttr.importA.1_0.xsd24
-rw-r--r--test/schemas/anyAttr.importB.1_0.xsd21
-rw-r--r--test/schemas/anyAttr1_0.xml31
-rw-r--r--test/schemas/anyAttr1_0.xsd144
-rw-r--r--test/schemas/attr0_0.xml1
-rw-r--r--test/schemas/attr0_0.xsd13
-rw-r--r--test/schemas/attruse_0_0.xml8
-rw-r--r--test/schemas/attruse_0_0.xsd32
-rw-r--r--test/schemas/attruse_0_1.xml8
-rw-r--r--test/schemas/attruse_0_2.xml8
-rw-r--r--test/schemas/bug141312_0.xml2
-rw-r--r--test/schemas/bug141312_0.xsd16
-rw-r--r--test/schemas/bug141333.xml9
-rw-r--r--test/schemas/bug141333.xsd25
-rw-r--r--test/schemas/bug141333_0.xml9
-rw-r--r--test/schemas/bug141333_0.xsd25
-rw-r--r--test/schemas/bug143951.imp12
-rw-r--r--test/schemas/bug143951_0.xml9
-rw-r--r--test/schemas/bug143951_0.xsd17
-rw-r--r--test/schemas/bug145246.xsd.imp119
-rw-r--r--test/schemas/bug145246_0.xml30
-rw-r--r--test/schemas/bug145246_0.xsd173
-rwxr-xr-xtest/schemas/bug152470_1.xml9
-rwxr-xr-xtest/schemas/bug152470_1.xsd49
-rw-r--r--test/schemas/bug167754_0.xml12
-rw-r--r--test/schemas/bug167754_0.xsd29
-rw-r--r--test/schemas/bug303566_1.xml19
-rw-r--r--test/schemas/bug303566_1.xsd63
-rw-r--r--test/schemas/bug306806_0.xml111
-rw-r--r--test/schemas/bug306806_1.xsd544
-rw-r--r--test/schemas/bug309338_0.xml4
-rw-r--r--test/schemas/bug309338_1.xsd13
-rw-r--r--test/schemas/bug310264_0.xml41
-rw-r--r--test/schemas/bug310264_0.xsd18
-rw-r--r--test/schemas/bug312957_0.xml14
-rw-r--r--test/schemas/bug312957_1.xsd39
-rw-r--r--test/schemas/bug313982_0.xml4
-rw-r--r--test/schemas/bug313982_0.xsd11
-rw-r--r--test/schemas/bug321475_0.xml10
-rw-r--r--test/schemas/bug321475_1.xsd48
-rw-r--r--test/schemas/bug322411_0.xml93
-rw-r--r--test/schemas/bug322411_1.xsd35
-rw-r--r--test/schemas/bug323510_0.xml3
-rw-r--r--test/schemas/bug323510_1.xsd12
-rw-r--r--test/schemas/bug455953_0.xml9
-rw-r--r--test/schemas/bug455953_0.xsd29
-rw-r--r--test/schemas/changelog093_0.xml14
-rw-r--r--test/schemas/changelog093_1.xsd253
-rw-r--r--test/schemas/choice_0.xml3
-rw-r--r--test/schemas/choice_0.xsd13
-rw-r--r--test/schemas/choice_1.xml3
-rw-r--r--test/schemas/choice_1.xsd13
-rw-r--r--test/schemas/choice_2.xml4
-rw-r--r--test/schemas/choice_2.xsd13
-rw-r--r--test/schemas/choice_3.xml4
-rw-r--r--test/schemas/choice_4.xml2
-rw-r--r--test/schemas/choice_5.xml6
-rw-r--r--test/schemas/choice_6.xml7
-rw-r--r--test/schemas/complex-type-extension_0.xml12
-rw-r--r--test/schemas/complex-type-extension_0.xsd27
-rw-r--r--test/schemas/cos-ct-extends-1-3_0.xml9
-rw-r--r--test/schemas/cos-ct-extends-1-3_0.xsd51
-rw-r--r--test/schemas/cos-st-restricts-1-2-err_0.xml3
-rw-r--r--test/schemas/cos-st-restricts-1-2-err_0.xsd30
-rw-r--r--test/schemas/ct-sc-nobase_0.xml4
-rw-r--r--test/schemas/ct-sc-nobase_0.xsd24
-rw-r--r--test/schemas/date_0.xml26
-rw-r--r--test/schemas/date_0.xsd122
-rw-r--r--test/schemas/decimal-1.xml37
-rw-r--r--test/schemas/decimal-1.xsd29
-rw-r--r--test/schemas/decimal-1_0.xml24
-rw-r--r--test/schemas/decimal-1_1.xsd19
-rw-r--r--test/schemas/decimal-2_0.xml14
-rw-r--r--test/schemas/decimal-2_1.xsd18
-rw-r--r--test/schemas/decimal-3_0.xml17
-rw-r--r--test/schemas/decimal-3_1.xsd18
-rw-r--r--test/schemas/derivation-ok-extension-err_0.xml9
-rw-r--r--test/schemas/derivation-ok-extension-err_0.xsd22
-rw-r--r--test/schemas/derivation-ok-extension_0.xml9
-rw-r--r--test/schemas/derivation-ok-extension_0.xsd22
-rw-r--r--test/schemas/derivation-ok-restriction-2-1-1_0.xml8
-rw-r--r--test/schemas/derivation-ok-restriction-2-1-1_0.xsd56
-rw-r--r--test/schemas/derivation-ok-restriction-4-1-err_0.xml8
-rw-r--r--test/schemas/derivation-ok-restriction-4-1-err_0.xsd69
-rw-r--r--test/schemas/derivation-restriction-anyAttr_0.xml12
-rw-r--r--test/schemas/derivation-restriction-anyAttr_0.xsd24
-rw-r--r--test/schemas/derivation-restriction-anyType.xml9
-rw-r--r--test/schemas/derivation-restriction-anyType.xsd22
-rw-r--r--test/schemas/deter0_0.xml5
-rw-r--r--test/schemas/deter0_0.xsd16
-rw-r--r--test/schemas/dur_0.xml13
-rw-r--r--test/schemas/dur_0.xsd72
-rw-r--r--test/schemas/elem0_0.xml3
-rw-r--r--test/schemas/elem0_0.xsd16
-rw-r--r--test/schemas/element-err_0.xml4
-rw-r--r--test/schemas/element-err_0.xsd39
-rw-r--r--test/schemas/element-minmax-err_0.xml5
-rw-r--r--test/schemas/element-minmax-err_0.xsd11
-rw-r--r--test/schemas/empty-value_0.xml2
-rw-r--r--test/schemas/empty-value_1.xml2
-rw-r--r--test/schemas/empty-value_1.xsd24
-rw-r--r--test/schemas/empty_0.xml1
-rw-r--r--test/schemas/empty_0.xsd13
-rw-r--r--test/schemas/empty_1.xsd9
-rw-r--r--test/schemas/extension0_0.xml7
-rw-r--r--test/schemas/extension0_0.xsd20
-rw-r--r--test/schemas/extension1_0.xml1
-rw-r--r--test/schemas/extension1_0.xsd17
-rw-r--r--test/schemas/extension1_1.xml1
-rw-r--r--test/schemas/extension1_2.xml1
-rw-r--r--test/schemas/extension2_0.xml4
-rw-r--r--test/schemas/extension2_1.xsd17
-rw-r--r--test/schemas/facet-unionST-err1_0.xml4
-rw-r--r--test/schemas/facet-unionST-err1_0.xsd27
-rw-r--r--test/schemas/facet-whiteSpace_0.xml7
-rw-r--r--test/schemas/facet-whiteSpace_0.xsd12
-rw-r--r--test/schemas/group0_0.xml3
-rw-r--r--test/schemas/group0_0.xsd18
-rw-r--r--test/schemas/hexbinary_0.xml20
-rw-r--r--test/schemas/hexbinary_0.xsd35
-rw-r--r--test/schemas/hexbinary_1.xml15
-rw-r--r--test/schemas/idc-keyref-err1_0.xml14
-rw-r--r--test/schemas/idc-keyref-err1_1.xsd53
-rw-r--r--test/schemas/import-455953.xsd24
-rwxr-xr-xtest/schemas/import-bad-1_0.imp5
-rw-r--r--test/schemas/import0_0.imp13
-rw-r--r--test/schemas/import0_0.xml8
-rw-r--r--test/schemas/import0_0.xsd21
-rw-r--r--test/schemas/import1_0.imp8
-rw-r--r--test/schemas/import1_0.xml11
-rw-r--r--test/schemas/import1_0.xsd30
-rw-r--r--test/schemas/import1_0b.imp8
-rw-r--r--test/schemas/import2_0.imp24
-rw-r--r--test/schemas/import2_0.xml8
-rw-r--r--test/schemas/import2_0.xsd24
-rw-r--r--test/schemas/include1_0.inc28
-rw-r--r--test/schemas/include1_0.xml8
-rw-r--r--test/schemas/include1_0.xsd15
-rw-r--r--test/schemas/include2_0.inc17
-rw-r--r--test/schemas/include2_0.xml9
-rw-r--r--test/schemas/include2_0.xsd14
-rw-r--r--test/schemas/include3_0.inc5
-rw-r--r--test/schemas/include3_0.xml7
-rw-r--r--test/schemas/include3_0.xsd9
-rw-r--r--test/schemas/item_0.xml6
-rw-r--r--test/schemas/item_0.xsd39
-rw-r--r--test/schemas/item_1.xsd42
-rw-r--r--test/schemas/length1_0.xml1
-rw-r--r--test/schemas/length1_0.xsd11
-rw-r--r--test/schemas/length2_0.xml5
-rw-r--r--test/schemas/length2_0.xsd14
-rw-r--r--test/schemas/length3_0.xml5
-rw-r--r--test/schemas/length3_0.xsd10
-rw-r--r--test/schemas/list0_0.xml6
-rw-r--r--test/schemas/list0_0.xsd13
-rw-r--r--test/schemas/list0_1.xml3
-rw-r--r--test/schemas/list0_1.xsd13
-rw-r--r--test/schemas/list0_2.xml4
-rw-r--r--test/schemas/mixed0_0.xml1
-rw-r--r--test/schemas/mixed0_0.xsd5
-rw-r--r--test/schemas/mixed1_0.xml1
-rw-r--r--test/schemas/mixed1_0.xsd7
-rw-r--r--test/schemas/ns0_0.xml2
-rw-r--r--test/schemas/ns0_0.xsd16
-rw-r--r--test/schemas/ns0_1.xml2
-rw-r--r--test/schemas/ns0_1.xsd16
-rw-r--r--test/schemas/ns0_2.xml2
-rw-r--r--test/schemas/ns0_3.xml2
-rw-r--r--test/schemas/ns0_4.xml3
-rw-r--r--test/schemas/ns1_0.xml2
-rw-r--r--test/schemas/ns1_0.xsd3
-rw-r--r--test/schemas/ns2_0.xml1
-rw-r--r--test/schemas/ns2_0.xsd15
-rw-r--r--test/schemas/nvdcve_0.xml5235
-rw-r--r--test/schemas/nvdcve_0.xsd498
-rw-r--r--test/schemas/po0_0.xml32
-rw-r--r--test/schemas/po0_0.xsd59
-rw-r--r--test/schemas/po1_0.xml34
-rw-r--r--test/schemas/po1_0.xsd64
-rw-r--r--test/schemas/poschargrp0_0.xml2
-rw-r--r--test/schemas/poschargrp0_0.xsd14
-rw-r--r--test/schemas/regexp-char-ref_0.xml7
-rw-r--r--test/schemas/regexp-char-ref_0.xsd20
-rw-r--r--test/schemas/regexp-char-ref_1.xsd20
-rw-r--r--test/schemas/restrict-CT-attr-ref_0.xml3
-rw-r--r--test/schemas/restrict-CT-attr-ref_0.xsd30
-rw-r--r--test/schemas/restriction-attr1_0.xml3
-rw-r--r--test/schemas/restriction-attr1_0.xsd18
-rw-r--r--test/schemas/restriction-enum-1_0.xml7
-rw-r--r--test/schemas/restriction-enum-1_1.xsd19
-rw-r--r--test/schemas/restriction0_0.xml5
-rw-r--r--test/schemas/restriction0_0.xsd21
-rw-r--r--test/schemas/scc-no-xmlns_0.xml3
-rw-r--r--test/schemas/scc-no-xmlns_0.xsd11
-rw-r--r--test/schemas/scc-no-xsi_0.xml3
-rw-r--r--test/schemas/scc-no-xsi_0.xsd11
-rw-r--r--test/schemas/seq-dubl-elem1_0.xml7
-rw-r--r--test/schemas/seq-dubl-elem1_0.xsd25
-rw-r--r--test/schemas/seq0_0.xml61
-rw-r--r--test/schemas/seq0_0.xsd64
-rw-r--r--test/schemas/src-attribute1_0.xml2
-rw-r--r--test/schemas/src-attribute1_0.xsd13
-rw-r--r--test/schemas/src-attribute2_0.xml2
-rw-r--r--test/schemas/src-attribute2_0.xsd13
-rw-r--r--test/schemas/src-attribute3-1_0.xml2
-rw-r--r--test/schemas/src-attribute3-1_0.xsd15
-rw-r--r--test/schemas/src-attribute3-2-form_0.xml2
-rw-r--r--test/schemas/src-attribute3-2-form_0.xsd16
-rw-r--r--test/schemas/src-attribute3-2-st_0.xml2
-rw-r--r--test/schemas/src-attribute3-2-st_0.xsd22
-rw-r--r--test/schemas/src-attribute3-2-type_0.xml2
-rw-r--r--test/schemas/src-attribute3-2-type_0.xsd16
-rw-r--r--test/schemas/src-attribute4_0.xml2
-rw-r--r--test/schemas/src-attribute4_0.xsd17
-rw-r--r--test/schemas/src-element1_0.xml2
-rw-r--r--test/schemas/src-element1_0.xsd9
-rw-r--r--test/schemas/src-element2-1_0.xml2
-rw-r--r--test/schemas/src-element2-1_0.xsd17
-rw-r--r--test/schemas/src-element2-2_0.xml2
-rw-r--r--test/schemas/src-element2-2_0.xsd48
-rw-r--r--test/schemas/src-element3_0.xml2
-rw-r--r--test/schemas/src-element3_0.xsd29
-rw-r--r--test/schemas/subst-group-1_0.xsd45
-rw-r--r--test/schemas/subst-group-1_1.xml12
-rw-r--r--test/schemas/union2_1.xml6
-rw-r--r--test/schemas/union2_1.xsd21
-rw-r--r--test/schemas/union_0_0.xml8
-rw-r--r--test/schemas/union_0_0.xsd53
-rw-r--r--test/schemas/vdv-complexTypes.xsd37
-rw-r--r--test/schemas/vdv-first0_0.xml33
-rw-r--r--test/schemas/vdv-first0_0.xsd67
-rw-r--r--test/schemas/vdv-first1_0.xml33
-rw-r--r--test/schemas/vdv-first1_0.xsd47
-rw-r--r--test/schemas/vdv-first2_0.xml33
-rw-r--r--test/schemas/vdv-first2_0.xsd89
-rw-r--r--test/schemas/vdv-first3_0.xml33
-rw-r--r--test/schemas/vdv-first3_0.xsd68
-rw-r--r--test/schemas/vdv-first4_0.xml33
-rwxr-xr-xtest/schemas/vdv-first4_0.xsd150
-rw-r--r--test/schemas/vdv-first4_1.xml33
-rw-r--r--test/schemas/vdv-first4_2.xml33
-rw-r--r--test/schemas/vdv-first5_0.xml33
-rw-r--r--test/schemas/vdv-first5_0.xsd85
-rw-r--r--test/schemas/vdv-simpleTypes.xsd38
-rw-r--r--test/schemas/xml.xsd117
-rw-r--r--test/schemas/xsd-list-itemType_0.xml3
-rw-r--r--test/schemas/xsd-list-itemType_0.xsd14
-rw-r--r--test/schemas/xsd-simpleType-varieties_0.xml8
-rw-r--r--test/schemas/xsd-simpleType-varieties_0.xsd45
-rw-r--r--test/schematron/zvon1.sct23
-rw-r--r--test/schematron/zvon10.sct15
-rw-r--r--test/schematron/zvon10_0.xml3
-rw-r--r--test/schematron/zvon10_1.xml4
-rw-r--r--test/schematron/zvon11.sct8
-rw-r--r--test/schematron/zvon11_0.xml3
-rw-r--r--test/schematron/zvon11_1.xml3
-rw-r--r--test/schematron/zvon11_2.xml3
-rw-r--r--test/schematron/zvon11_3.xml3
-rw-r--r--test/schematron/zvon12.sct8
-rw-r--r--test/schematron/zvon12_0.xml3
-rw-r--r--test/schematron/zvon12_1.xml3
-rw-r--r--test/schematron/zvon12_2.xml3
-rw-r--r--test/schematron/zvon13.sct7
-rw-r--r--test/schematron/zvon13_0.xml6
-rw-r--r--test/schematron/zvon13_1.xml5
-rw-r--r--test/schematron/zvon13_2.xml5
-rw-r--r--test/schematron/zvon14.sct10
-rw-r--r--test/schematron/zvon14_0.xml12
-rw-r--r--test/schematron/zvon15.sct11
-rw-r--r--test/schematron/zvon15_0.xml4
-rw-r--r--test/schematron/zvon1_0.xml3
-rw-r--r--test/schematron/zvon1_1.xml3
-rw-r--r--test/schematron/zvon2.sct9
-rw-r--r--test/schematron/zvon2_0.xml4
-rw-r--r--test/schematron/zvon2_1.xml4
-rw-r--r--test/schematron/zvon2_2.xml5
-rw-r--r--test/schematron/zvon3.sct8
-rw-r--r--test/schematron/zvon3_0.xml8
-rw-r--r--test/schematron/zvon4.sct10
-rw-r--r--test/schematron/zvon4_0.xml6
-rw-r--r--test/schematron/zvon4_1.xml6
-rw-r--r--test/schematron/zvon5.sct12
-rw-r--r--test/schematron/zvon5_0.xml5
-rw-r--r--test/schematron/zvon5_1.xml5
-rw-r--r--test/schematron/zvon5_2.xml7
-rw-r--r--test/schematron/zvon6.sct8
-rw-r--r--test/schematron/zvon6_0.xml3
-rw-r--r--test/schematron/zvon6_1.xml3
-rw-r--r--test/schematron/zvon6_2.xml3
-rw-r--r--test/schematron/zvon7.sct9
-rw-r--r--test/schematron/zvon7_0.xml3
-rw-r--r--test/schematron/zvon7_1.xml3
-rw-r--r--test/schematron/zvon7_2.xml3
-rw-r--r--test/schematron/zvon7_3.xml3
-rw-r--r--test/schematron/zvon7_4.xml3
-rw-r--r--test/schematron/zvon8.sct10
-rw-r--r--test/schematron/zvon8_0.xml8
-rw-r--r--test/schematron/zvon8_1.xml7
-rw-r--r--test/schematron/zvon8_2.xml7
-rw-r--r--test/schematron/zvon9.sct9
-rw-r--r--test/schematron/zvon9_0.xml7
-rw-r--r--test/schematron/zvon9_1.xml7
-rw-r--r--test/schematron/zvon9_2.xml7
-rw-r--r--test/scripts/base.script7
-rw-r--r--test/scripts/base.xml7
-rw-r--r--test/scripts/base2.script7
-rw-r--r--test/scripts/base2.xml7
-rw-r--r--test/scripts/set1.script2
-rw-r--r--test/scripts/set1.xml1
-rw-r--r--test/scripts/set3.script5
-rw-r--r--test/scripts/set3.xml1
-rw-r--r--test/scripts/set4.script4
-rw-r--r--test/scripts/set4.xml1
-rw-r--r--test/slashdot.rdf66
-rw-r--r--test/slashdot.xml112
-rw-r--r--test/slashdot16.xmlbin0 -> 10374 bytes
-rw-r--r--test/svg1163
-rw-r--r--test/svg258
-rw-r--r--test/svg3722
-rw-r--r--test/threads/a.example.org.xml6
-rw-r--r--test/threads/a/a.dtd1
-rw-r--r--test/threads/abc.dtd7
-rw-r--r--test/threads/abc.xml7
-rw-r--r--test/threads/acb.dtd7
-rw-r--r--test/threads/acb.xml7
-rw-r--r--test/threads/b.example.org.xml6
-rw-r--r--test/threads/b/b.dtd2
-rw-r--r--test/threads/bac.dtd7
-rw-r--r--test/threads/bac.xml7
-rw-r--r--test/threads/bca.dtd7
-rw-r--r--test/threads/bca.xml7
-rw-r--r--test/threads/c.example.org.xml6
-rw-r--r--test/threads/c/c.dtd1
-rw-r--r--test/threads/cab.dtd7
-rw-r--r--test/threads/cab.xml7
-rw-r--r--test/threads/cba.dtd7
-rw-r--r--test/threads/cba.xml7
-rw-r--r--test/threads/complex.xml6
-rw-r--r--test/threads/example.org.xml9
-rw-r--r--test/threads/invalid.xml2
-rw-r--r--test/title.xml2
-rw-r--r--test/tstblanks.xml495
-rw-r--r--test/utf16bebom.xmlbin0 -> 346 bytes
-rw-r--r--test/utf16bom.xmlbin0 -> 256 bytes
-rw-r--r--test/utf16lebom.xmlbin0 -> 344 bytes
-rw-r--r--test/utf8bom.xml1
-rw-r--r--test/valid/127772.xml7
-rw-r--r--test/valid/694228.xml5
-rw-r--r--test/valid/REC-xml-19980210.xml4197
-rw-r--r--test/valid/UTF16Entity.xml8
-rw-r--r--test/valid/dia.xml163
-rw-r--r--test/valid/dtds/127772.dtd7
-rw-r--r--test/valid/dtds/694228.dtd3
-rw-r--r--test/valid/dtds/NewsMLv1.0.dtd1578
-rw-r--r--test/valid/dtds/destfoo.ent1
-rw-r--r--test/valid/dtds/external.ent3
-rw-r--r--test/valid/dtds/external2.ent1
-rw-r--r--test/valid/dtds/nitf-2-5.dtd1004
-rw-r--r--test/valid/dtds/notes.dtd19
-rw-r--r--test/valid/dtds/objednavka.dtd23
-rwxr-xr-xtest/valid/dtds/spec.dtd972
-rw-r--r--test/valid/dtds/utf16b.entbin0 -> 98 bytes
-rw-r--r--test/valid/dtds/utf16l.entbin0 -> 98 bytes
-rw-r--r--test/valid/dtds/xhtml-lat1.ent196
-rw-r--r--test/valid/dtds/xhtml-special.ent79
-rw-r--r--test/valid/dtds/xhtml-symbol.ent242
-rw-r--r--test/valid/dtds/xhtml.cat14
-rw-r--r--test/valid/dtds/xhtml1-frameset.dtd1223
-rw-r--r--test/valid/dtds/xhtml1-strict.dtd986
-rw-r--r--test/valid/dtds/xhtml1-transitional.dtd1194
-rw-r--r--test/valid/dtds/xhtml1.dcl179
-rw-r--r--test/valid/dtds/xmlspec.dtd1102
-rw-r--r--test/valid/id1.xml13
-rw-r--r--test/valid/id2.xml14
-rw-r--r--test/valid/id3.xml14
-rw-r--r--test/valid/index.xml111
-rw-r--r--test/valid/mixed_ns.xml16
-rw-r--r--test/valid/notes.xml5
-rw-r--r--test/valid/ns.xml9
-rw-r--r--test/valid/ns2.xml14
-rw-r--r--test/valid/objednavka.xml39
-rw-r--r--test/valid/rss.xml177
-rw-r--r--test/valid/t10.xml12
-rw-r--r--test/valid/t11.xml2
-rw-r--r--test/valid/t4.dtd4
-rw-r--r--test/valid/t4.xml3
-rw-r--r--test/valid/t4a.dtd5
-rw-r--r--test/valid/t4a.xml3
-rw-r--r--test/valid/t6.dtd5
-rw-r--r--test/valid/t6.xml3
-rw-r--r--test/valid/t8.xml8
-rw-r--r--test/valid/t8a.xml8
-rw-r--r--test/valid/t9.xml8
-rw-r--r--test/valid/t9a.xml8
-rw-r--r--test/valid/xhtml1.xhtml1505
-rw-r--r--test/valid/xlink.xml529
-rw-r--r--test/wap.xml27
-rw-r--r--test/warning/ent83
-rw-r--r--test/warning/ent97
-rw-r--r--test/winblanks.xml5
-rw-r--r--test/wml.xml11
-rw-r--r--test/xhtml134
-rw-r--r--test/xhtmlcomp8
-rw-r--r--test/xml17
-rw-r--r--test/xml28
-rw-r--r--test/xmlid/id_err1.xml1
-rw-r--r--test/xmlid/id_err2.xml5
-rw-r--r--test/xmlid/id_tst1.xml1
-rw-r--r--test/xmlid/id_tst2.xml1
-rw-r--r--test/xmlid/id_tst3.xml1
-rw-r--r--test/xmlid/id_tst4.xml4
-rw-r--r--test/xsdtest/xsdtest.xml806
-rw-r--r--test/xsdtest/xsdtest.xsl238
-rw-r--r--test/xsdtest/xsdtestsuite.xml5286
-rw-r--r--testAutomata.c4
-rw-r--r--testC14N.c96
-rw-r--r--testHTML.c30
-rw-r--r--testModule.c4
-rw-r--r--testRegexp.c18
-rw-r--r--testRelax.c10
-rw-r--r--testSAX.c22
-rw-r--r--testSchemas.c10
-rw-r--r--testThreadsWin32.c6
-rw-r--r--testXPath.c16
-rw-r--r--testapi.c820
-rw-r--r--testchar.c20
-rw-r--r--testlimits.c1637
-rw-r--r--testrecurse.c11
-rw-r--r--threads.c17
-rw-r--r--timsort.h514
-rw-r--r--tree.c426
-rw-r--r--trio.c436
-rw-r--r--trio.h16
-rw-r--r--triodef.h6
-rw-r--r--trionan.c74
-rw-r--r--trionan.h2
-rw-r--r--triostr.c154
-rw-r--r--uri.c424
-rw-r--r--valid.c232
-rwxr-xr-xvms/build_libxml.com17
-rwxr-xr-xvms/config.vms7
-rw-r--r--win32/.cvsignore7
-rw-r--r--win32/Makefile.bcb20
-rw-r--r--win32/Makefile.mingw20
-rw-r--r--win32/Makefile.msvc30
-rw-r--r--win32/VC10/libxml2.vcxproj1
-rw-r--r--win32/VC10/runsuite.vcxproj2
-rw-r--r--win32/configure.js2
-rw-r--r--win32/libxml2.def.src26
-rw-r--r--win32/wince/wincecompat.c7
-rw-r--r--xinclude.c132
-rw-r--r--xlink.c12
-rw-r--r--xml2-config.11
-rw-r--r--xml2-config.in6
-rw-r--r--xmlIO.c288
-rw-r--r--xmlcatalog.c35
-rw-r--r--xmllint.c91
-rw-r--r--xmlmemory.c21
-rw-r--r--xmlmodule.c23
-rw-r--r--xmlreader.c203
-rw-r--r--xmlregexp.c261
-rw-r--r--xmlsave.c317
-rw-r--r--xmlschemas.c833
-rw-r--r--xmlschemastypes.c351
-rw-r--r--xmlstring.c34
-rw-r--r--xmlunicode.c1270
-rw-r--r--xmlwriter.c70
-rw-r--r--xpath.c1265
-rw-r--r--xpointer.c128
-rw-r--r--xstc/Makefile.am4
-rw-r--r--xstc/Makefile.in130
-rw-r--r--xzlib.c51
-rw-r--r--xzlib.h1
3878 files changed, 423357 insertions, 14172 deletions
diff --git a/COPYING b/COPYING
index 417e955..d613185 100644
--- a/COPYING
+++ b/COPYING
@@ -2,7 +2,7 @@ Except where otherwise noted in the source code (e.g. the files hash.c,
list.c and the trio files, which are covered by a similar licence but
with different Copyright notices) all the files are:
- Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
+ Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -17,11 +17,7 @@ all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
-NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Daniel Veillard shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from him.
-
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/ChangeLog b/ChangeLog
index 36045e6..08725dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8139,7 +8139,7 @@ Wed Dec 10 11:16:29 CET 2003 Daniel Veillard <daniel@veillard.com>
Tue Dec 9 23:50:23 CET 2003 Daniel Veillard <daniel@veillard.com>
- * entities.c: fixed an XML entites content serialization
+ * entities.c: fixed an XML entities content serialization
potentially triggered by XInclude, see #126817
Tue Dec 9 16:12:50 CET 2003 Daniel Veillard <daniel@veillard.com>
diff --git a/Copyright b/Copyright
index 417e955..d613185 100644
--- a/Copyright
+++ b/Copyright
@@ -2,7 +2,7 @@ Except where otherwise noted in the source code (e.g. the files hash.c,
list.c and the trio files, which are covered by a similar licence but
with different Copyright notices) all the files are:
- Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
+ Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -17,11 +17,7 @@ all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
-NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Daniel Veillard shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from him.
-
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/DOCBparser.c b/DOCBparser.c
index 3573743..f12511b 100644
--- a/DOCBparser.c
+++ b/DOCBparser.c
@@ -53,7 +53,7 @@ docbEncodeEntities(unsigned char *out ATTRIBUTE_UNUSED,
/**
* docbParseDocument:
* @ctxt: an SGML parser context
- *
+ *
* parse an SGML document (and build a tree if using the standard SAX
* interface).
*
@@ -163,12 +163,12 @@ docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
* @cur: a pointer to an array of xmlChar
* @encoding: a free form C string describing the SGML document encoding, or NULL
* @sax: the SAX handler block
- * @userData: if using SAX, this pointer will be provided on callbacks.
+ * @userData: if using SAX, this pointer will be provided on callbacks.
*
* parse an SGML in-memory document and build a tree.
* It use the given SAX function block to handle the parsing callback.
* If sax is NULL, fallback to the default DOM tree building routines.
- *
+ *
* Returns the resulting document tree
*/
@@ -196,7 +196,7 @@ docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
* @encoding: a free form C string describing the SGML document encoding, or NULL
*
* parse an SGML in-memory document and build a tree.
- *
+ *
* Returns the resulting document tree
*/
@@ -221,7 +221,7 @@ docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
* @filename: the filename
* @encoding: the SGML document encoding, or NULL
*
- * Create a parser context for a file content.
+ * Create a parser context for a file content.
* Automatic support for ZLIB/Compress compressed document is provided
* by default if found at compile-time.
*
@@ -247,7 +247,7 @@ docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED,
* @filename: the filename
* @encoding: a free form C string describing the SGML document encoding, or NULL
* @sax: the SAX handler block
- * @userData: if using SAX, this pointer will be provided on callbacks.
+ * @userData: if using SAX, this pointer will be provided on callbacks.
*
* parse an SGML file and build a tree. Automatic support for ZLIB/Compress
* compressed document is provided by default if found at compile-time.
diff --git a/HTMLparser.c b/HTMLparser.c
index 66ff17b..d329d3b 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -44,6 +44,9 @@
#include <libxml/globals.h>
#include <libxml/uri.h>
+#include "buf.h"
+#include "enc.h"
+
#define HTML_MAX_NAMELEN 1000
#define HTML_PARSER_BIG_BUFFER_SIZE 1000
#define HTML_PARSER_BUFFER_SIZE 100
@@ -1082,7 +1085,7 @@ static const char * const htmlStartClose[] = {
"div", "p", "head", NULL,
"noscript", "p", NULL,
"center", "font", "b", "i", "p", "head", NULL,
-"a", "a", NULL,
+"a", "a", "head", NULL,
"caption", "p", NULL,
"colgroup", "caption", "colgroup", "col", "p", NULL,
"col", "caption", "col", "p", NULL,
@@ -1100,6 +1103,43 @@ static const char * const htmlStartClose[] = {
"option", "option", NULL,
"fieldset", "legend", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6",
"pre", "listing", "xmp", "a", NULL,
+/* most tags in in FONTSTYLE, PHRASE and SPECIAL should close <head> */
+"tt", "head", NULL,
+"i", "head", NULL,
+"b", "head", NULL,
+"u", "head", NULL,
+"s", "head", NULL,
+"strike", "head", NULL,
+"big", "head", NULL,
+"small", "head", NULL,
+
+"em", "head", NULL,
+"strong", "head", NULL,
+"dfn", "head", NULL,
+"code", "head", NULL,
+"samp", "head", NULL,
+"kbd", "head", NULL,
+"var", "head", NULL,
+"cite", "head", NULL,
+"abbr", "head", NULL,
+"acronym", "head", NULL,
+
+/* "a" */
+"img", "head", NULL,
+/* "applet" */
+/* "embed" */
+/* "object" */
+"font", "head", NULL,
+/* "basefont" */
+"br", "head", NULL,
+/* "script" */
+"map", "head", NULL,
+"q", "head", NULL,
+"sub", "head", NULL,
+"sup", "head", NULL,
+"span", "head", NULL,
+"bdo", "head", NULL,
+"iframe", "head", NULL,
NULL
};
@@ -1137,7 +1177,7 @@ static const char *const htmlScriptAttributes[] = {
"onfocus",
"onblur",
"onsubmit",
- "onrest",
+ "onreset",
"onchange",
"onselect"
};
@@ -2941,9 +2981,14 @@ htmlParseCharData(htmlParserCtxtPtr ctxt) {
*/
if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) {
if (areBlanks(ctxt, buf, nbchar)) {
- if (ctxt->sax->ignorableWhitespace != NULL)
- ctxt->sax->ignorableWhitespace(ctxt->userData,
- buf, nbchar);
+ if (ctxt->keepBlanks) {
+ if (ctxt->sax->characters != NULL)
+ ctxt->sax->characters(ctxt->userData, buf, nbchar);
+ } else {
+ if (ctxt->sax->ignorableWhitespace != NULL)
+ ctxt->sax->ignorableWhitespace(ctxt->userData,
+ buf, nbchar);
+ }
} else {
htmlCheckParagraph(ctxt);
if (ctxt->sax->characters != NULL)
@@ -2974,8 +3019,14 @@ htmlParseCharData(htmlParserCtxtPtr ctxt) {
*/
if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) {
if (areBlanks(ctxt, buf, nbchar)) {
- if (ctxt->sax->ignorableWhitespace != NULL)
- ctxt->sax->ignorableWhitespace(ctxt->userData, buf, nbchar);
+ if (ctxt->keepBlanks) {
+ if (ctxt->sax->characters != NULL)
+ ctxt->sax->characters(ctxt->userData, buf, nbchar);
+ } else {
+ if (ctxt->sax->ignorableWhitespace != NULL)
+ ctxt->sax->ignorableWhitespace(ctxt->userData,
+ buf, nbchar);
+ }
} else {
htmlCheckParagraph(ctxt);
if (ctxt->sax->characters != NULL)
@@ -3509,19 +3560,14 @@ htmlCheckEncodingDirect(htmlParserCtxtPtr ctxt, const xmlChar *encoding) {
* convert as much as possible to the parser reading buffer.
*/
processed = ctxt->input->cur - ctxt->input->base;
- xmlBufferShrink(ctxt->input->buf->buffer, processed);
- nbchars = xmlCharEncInFunc(ctxt->input->buf->encoder,
- ctxt->input->buf->buffer,
- ctxt->input->buf->raw);
+ xmlBufShrink(ctxt->input->buf->buffer, processed);
+ nbchars = xmlCharEncInput(ctxt->input->buf, 1);
if (nbchars < 0) {
htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING,
"htmlCheckEncoding: encoder error\n",
NULL, NULL);
}
- ctxt->input->base =
- ctxt->input->cur = ctxt->input->buf->buffer->content;
- ctxt->input->end =
- &ctxt->input->base[ctxt->input->buf->buffer->use];
+ xmlBufResetInput(ctxt->input->buf->buffer, ctxt->input);
}
}
}
@@ -3625,13 +3671,13 @@ htmlParseStartTag(htmlParserCtxtPtr ctxt) {
int i;
int discardtag = 0;
- if (ctxt->instate == XML_PARSER_EOF)
- return(-1);
if ((ctxt == NULL) || (ctxt->input == NULL)) {
htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR,
"htmlParseStartTag: context error\n", NULL, NULL);
return -1;
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
if (CUR != '<') return -1;
NEXT;
@@ -4320,7 +4366,7 @@ static void
htmlParseElementInternal(htmlParserCtxtPtr ctxt) {
const xmlChar *name;
const htmlElemDesc * info;
- htmlParserNodeInfo node_info;
+ htmlParserNodeInfo node_info = { 0, };
int failed;
if ((ctxt == NULL) || (ctxt->input == NULL)) {
@@ -4906,9 +4952,7 @@ htmlCreateMemoryParserCtxt(const char *buffer, int size) {
input->filename = NULL;
input->buf = buf;
- input->base = input->buf->buffer->content;
- input->cur = input->buf->buffer->content;
- input->end = &input->buf->buffer->content[input->buf->buffer->use];
+ xmlBufResetInput(buf->buffer, input);
inputPush(ctxt, input);
return(ctxt);
@@ -5025,8 +5069,8 @@ htmlParseLookupSequence(htmlParserCtxtPtr ctxt, xmlChar first,
buf = in->base;
len = in->length;
} else {
- buf = in->buf->buffer->content;
- len = in->buf->buffer->use;
+ buf = xmlBufContent(in->buf->buffer);
+ len = xmlBufUse(in->buf->buffer);
}
/* take into account the sequence length */
@@ -5118,13 +5162,13 @@ htmlParseLookupSequence(htmlParserCtxtPtr ctxt, xmlChar first,
* @stop: Array of chars, which stop the lookup.
* @stopLen: Length of stop-Array
*
- * Try to find if any char of the stop-Array is available in the input
+ * Try to find if any char of the stop-Array is available in the input
* stream.
* This function has a side effect of (possibly) incrementing ctxt->checkIndex
* to avoid rescanning sequences of bytes, it DOES change the state of the
* parser, do not use liberally.
*
- * Returns the index to the current parsing point if a stopChar
+ * Returns the index to the current parsing point if a stopChar
* is available, -1 otherwise.
*/
static int
@@ -5152,8 +5196,8 @@ htmlParseLookupChars(htmlParserCtxtPtr ctxt, const xmlChar * stop,
buf = in->base;
len = in->length;
} else {
- buf = in->buf->buffer->content;
- len = in->buf->buffer->use;
+ buf = xmlBufContent(in->buf->buffer);
+ len = xmlBufUse(in->buf->buffer);
}
for (; base < len; base++) {
@@ -5264,7 +5308,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
if (in->buf == NULL)
avail = in->length - (in->cur - in->base);
else
- avail = in->buf->buffer->use - (in->cur - in->base);
+ avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base);
if ((avail == 0) && (terminate)) {
htmlAutoCloseOnEnd(ctxt);
if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) {
@@ -5300,7 +5344,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
if (in->buf == NULL)
avail = in->length - (in->cur - in->base);
else
- avail = in->buf->buffer->use - (in->cur - in->base);
+ avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base);
}
if ((ctxt->sax) && (ctxt->sax->setDocumentLocator))
ctxt->sax->setDocumentLocator(ctxt->userData,
@@ -5342,7 +5386,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
if (in->buf == NULL)
avail = in->length - (in->cur - in->base);
else
- avail = in->buf->buffer->use - (in->cur - in->base);
+ avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base);
/*
* no chars in buffer
*/
@@ -5415,7 +5459,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
if (in->buf == NULL)
avail = in->length - (in->cur - in->base);
else
- avail = in->buf->buffer->use - (in->cur - in->base);
+ avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base);
if (avail < 2)
goto done;
cur = in->cur[0];
@@ -5456,7 +5500,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
if (in->buf == NULL)
avail = in->length - (in->cur - in->base);
else
- avail = in->buf->buffer->use - (in->cur - in->base);
+ avail = xmlBufUse(in->buf->buffer) - (in->cur - in->base);
if (avail < 1)
goto done;
cur = in->cur[0];
@@ -5654,9 +5698,15 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
if ((cur != '<') && (cur != '&')) {
if (ctxt->sax != NULL) {
if (IS_BLANK_CH(cur)) {
- if (ctxt->sax->ignorableWhitespace != NULL)
- ctxt->sax->ignorableWhitespace(
- ctxt->userData, &cur, 1);
+ if (ctxt->keepBlanks) {
+ if (ctxt->sax->characters != NULL)
+ ctxt->sax->characters(
+ ctxt->userData, &cur, 1);
+ } else {
+ if (ctxt->sax->ignorableWhitespace != NULL)
+ ctxt->sax->ignorableWhitespace(
+ ctxt->userData, &cur, 1);
+ }
} else {
htmlCheckParagraph(ctxt);
if (ctxt->sax->characters != NULL)
@@ -5941,7 +5991,7 @@ done:
ctxt->sax->endDocument(ctxt->userData);
}
}
- if ((ctxt->myDoc != NULL) &&
+ if ((!(ctxt->options & HTML_PARSE_NODEFDTD)) && (ctxt->myDoc != NULL) &&
((terminate) || (ctxt->instate == XML_PARSER_EOF) ||
(ctxt->instate == XML_PARSER_EPILOG))) {
xmlDtdPtr dtd;
@@ -5979,8 +6029,8 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, const char *chunk, int size,
}
if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) &&
(ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF)) {
- int base = ctxt->input->base - ctxt->input->buf->buffer->content;
- int cur = ctxt->input->cur - ctxt->input->base;
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input);
+ size_t cur = ctxt->input->cur - ctxt->input->base;
int res;
res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
@@ -5989,10 +6039,7 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, const char *chunk, int size,
ctxt->disableSAX = 1;
return (XML_PARSER_EOF);
}
- ctxt->input->base = ctxt->input->buf->buffer->content + base;
- ctxt->input->cur = ctxt->input->base + cur;
- ctxt->input->end =
- &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use];
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size);
#endif
@@ -6007,13 +6054,16 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, const char *chunk, int size,
if ((in->encoder != NULL) && (in->buffer != NULL) &&
(in->raw != NULL)) {
int nbchars;
+ size_t base = xmlBufGetInputBase(in->buffer, ctxt->input);
+ size_t current = ctxt->input->cur - ctxt->input->base;
- nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw);
+ nbchars = xmlCharEncInput(in, terminate);
if (nbchars < 0) {
htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING,
"encoder error\n", NULL, NULL);
return(XML_ERR_INVALID_ENCODING);
}
+ xmlBufSetInputBaseCur(in->buffer, ctxt->input, base, current);
}
}
}
@@ -6107,24 +6157,18 @@ htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data,
inputStream->filename = (char *)
xmlCanonicPath((const xmlChar *) filename);
inputStream->buf = buf;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end =
- &inputStream->buf->buffer->content[inputStream->buf->buffer->use];
+ xmlBufResetInput(buf->buffer, inputStream);
inputPush(ctxt, inputStream);
if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) &&
(ctxt->input->buf != NULL)) {
- int base = ctxt->input->base - ctxt->input->buf->buffer->content;
- int cur = ctxt->input->cur - ctxt->input->base;
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input);
+ size_t cur = ctxt->input->cur - ctxt->input->base;
xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
- ctxt->input->base = ctxt->input->buf->buffer->content + base;
- ctxt->input->cur = ctxt->input->base + cur;
- ctxt->input->end =
- &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use];
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size);
#endif
@@ -6244,12 +6288,16 @@ htmlCreateFileParserCtxt(const char *filename, const char *encoding)
/* set encoding */
if (encoding) {
- content = xmlMallocAtomic (xmlStrlen(content_line) + strlen(encoding) + 1);
- if (content) {
- strcpy ((char *)content, (char *)content_line);
- strcat ((char *)content, (char *)encoding);
- htmlCheckEncoding (ctxt, content);
- xmlFree (content);
+ size_t l = strlen(encoding);
+
+ if (l < 1000) {
+ content = xmlMallocAtomic (xmlStrlen(content_line) + l + 1);
+ if (content) {
+ strcpy ((char *)content, (char *)content_line);
+ strcat ((char *)content, (char *)encoding);
+ htmlCheckEncoding (ctxt, content);
+ xmlFree (content);
+ }
}
}
@@ -6764,6 +6812,7 @@ htmlReadFd(int fd, const char *URL, const char *encoding, int options)
if (fd < 0)
return (NULL);
+ xmlInitParser();
xmlInitParser();
input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE);
@@ -6854,6 +6903,7 @@ htmlCtxtReadDoc(htmlParserCtxtPtr ctxt, const xmlChar * cur,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
htmlCtxtReset(ctxt);
@@ -6887,6 +6937,7 @@ htmlCtxtReadFile(htmlParserCtxtPtr ctxt, const char *filename,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
htmlCtxtReset(ctxt);
@@ -6923,6 +6974,7 @@ htmlCtxtReadMemory(htmlParserCtxtPtr ctxt, const char *buffer, int size,
return (NULL);
if (buffer == NULL)
return (NULL);
+ xmlInitParser();
htmlCtxtReset(ctxt);
@@ -6965,6 +7017,7 @@ htmlCtxtReadFd(htmlParserCtxtPtr ctxt, int fd,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
htmlCtxtReset(ctxt);
@@ -7009,6 +7062,7 @@ htmlCtxtReadIO(htmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
htmlCtxtReset(ctxt);
diff --git a/HTMLtree.c b/HTMLtree.c
index 5d0893b..5c57fc5 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -30,16 +30,18 @@
#include <libxml/globals.h>
#include <libxml/uri.h>
+#include "buf.h"
+
/************************************************************************
* *
- * Getting/Setting encoding meta tags *
+ * Getting/Setting encoding meta tags *
* *
************************************************************************/
/**
* htmlGetMetaEncoding:
* @doc: the document
- *
+ *
* Encoding definition lookup in the Meta tags
*
* Returns the current encoding as flagged in the HTML source
@@ -126,17 +128,17 @@ found_meta:
found_content:
encoding = xmlStrstr(content, BAD_CAST"charset=");
- if (encoding == NULL)
+ if (encoding == NULL)
encoding = xmlStrstr(content, BAD_CAST"Charset=");
- if (encoding == NULL)
+ if (encoding == NULL)
encoding = xmlStrstr(content, BAD_CAST"CHARSET=");
if (encoding != NULL) {
encoding += 8;
} else {
encoding = xmlStrstr(content, BAD_CAST"charset =");
- if (encoding == NULL)
+ if (encoding == NULL)
encoding = xmlStrstr(content, BAD_CAST"Charset =");
- if (encoding == NULL)
+ if (encoding == NULL)
encoding = xmlStrstr(content, BAD_CAST"CHARSET =");
if (encoding != NULL)
encoding += 9;
@@ -314,7 +316,7 @@ static const char* htmlBooleanAttrs[] = {
* @name: the name of the attribute to check
*
* Determine if a given attribute is a boolean attribute.
- *
+ *
* returns: false if the attribute is not boolean, true otherwise.
*/
int
@@ -338,7 +340,7 @@ xmlOutputBufferPtr
xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder);
/************************************************************************
* *
- * Output error handlers *
+ * Output error handlers *
* *
************************************************************************/
/**
@@ -387,17 +389,13 @@ htmlSaveErr(int code, xmlNodePtr node, const char *extra)
/************************************************************************
* *
- * Dumping HTML tree content to a simple buffer *
+ * Dumping HTML tree content to a simple buffer *
* *
************************************************************************/
-static int
-htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
- int format);
-
/**
- * htmlNodeDumpFormat:
- * @buf: the HTML buffer output
+ * htmlBufNodeDumpFormat:
+ * @buf: the xmlBufPtr output
* @doc: the document
* @cur: the current node
* @format: should formatting spaces been added
@@ -406,10 +404,10 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
*
* Returns the number of byte written or -1 in case of error
*/
-static int
-htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
+static size_t
+htmlBufNodeDumpFormat(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur,
int format) {
- unsigned int use;
+ size_t use;
int ret;
xmlOutputBufferPtr outbuf;
@@ -432,10 +430,10 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
outbuf->context = NULL;
outbuf->written = 0;
- use = buf->use;
+ use = xmlBufUse(buf);
htmlNodeDumpFormatOutput(outbuf, doc, cur, NULL, format);
xmlFree(outbuf);
- ret = buf->use - use;
+ ret = xmlBufUse(buf) - use;
return (ret);
}
@@ -452,9 +450,24 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
*/
int
htmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) {
+ xmlBufPtr buffer;
+ size_t ret;
+
+ if ((buf == NULL) || (cur == NULL))
+ return(-1);
+
xmlInitParser();
+ buffer = xmlBufFromBuffer(buf);
+ if (buffer == NULL)
+ return(-1);
+
+ ret = htmlBufNodeDumpFormat(buffer, doc, cur, 1);
- return(htmlNodeDumpFormat(buf, doc, cur, 1));
+ xmlBufBackToBuffer(buffer);
+
+ if (ret > INT_MAX)
+ return(-1);
+ return((int) ret);
}
/**
@@ -499,7 +512,7 @@ htmlNodeDumpFileFormat(FILE *out, xmlDocPtr doc,
if (handler == NULL)
handler = xmlFindCharEncodingHandler("ascii");
- /*
+ /*
* save the content to a temp buffer.
*/
buf = xmlOutputBufferCreateFile(out, handler);
@@ -595,11 +608,11 @@ htmlDocDumpMemoryFormat(xmlDocPtr cur, xmlChar**mem, int *size, int format) {
xmlOutputBufferFlush(buf);
if (buf->conv != NULL) {
- *size = buf->conv->use;
- *mem = xmlStrndup(buf->conv->content, *size);
+ *size = xmlBufUse(buf->conv);
+ *mem = xmlStrndup(xmlBufContent(buf->conv), *size);
} else {
- *size = buf->buffer->use;
- *mem = xmlStrndup(buf->buffer->content, *size);
+ *size = xmlBufUse(buf->buffer);
+ *mem = xmlStrndup(xmlBufContent(buf->buffer), *size);
}
(void)xmlOutputBufferClose(buf);
}
@@ -621,7 +634,7 @@ htmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int *size) {
/************************************************************************
* *
- * Dumping HTML tree content to an I/O output buffer *
+ * Dumping HTML tree content to an I/O output buffer *
* *
************************************************************************/
@@ -632,7 +645,7 @@ void xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur);
* @buf: the HTML buffer output
* @doc: the document
* @encoding: the encoding string
- *
+ *
* TODO: check whether encoding is needed
*
* Dump the HTML document DTD, if any.
@@ -650,14 +663,14 @@ htmlDtdDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
xmlOutputBufferWriteString(buf, (const char *)cur->name);
if (cur->ExternalID != NULL) {
xmlOutputBufferWriteString(buf, " PUBLIC ");
- xmlBufferWriteQuotedString(buf->buffer, cur->ExternalID);
+ xmlBufWriteQuotedString(buf->buffer, cur->ExternalID);
if (cur->SystemID != NULL) {
xmlOutputBufferWriteString(buf, " ");
- xmlBufferWriteQuotedString(buf->buffer, cur->SystemID);
- }
+ xmlBufWriteQuotedString(buf->buffer, cur->SystemID);
+ }
} else if (cur->SystemID != NULL) {
xmlOutputBufferWriteString(buf, " SYSTEM ");
- xmlBufferWriteQuotedString(buf->buffer, cur->SystemID);
+ xmlBufWriteQuotedString(buf->buffer, cur->SystemID);
}
xmlOutputBufferWriteString(buf, ">\n");
}
@@ -677,9 +690,10 @@ htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur,
xmlChar *value;
/*
- * TODO: The html output method should not escape a & character
- * occurring in an attribute value immediately followed by
- * a { character (see Section B.7.1 of the HTML 4.0 Recommendation).
+ * The html output method should not escape a & character
+ * occurring in an attribute value immediately followed by
+ * a { character (see Section B.7.1 of the HTML 4.0 Recommendation).
+ * This is implemented in xmlEncodeEntitiesReentrant
*/
if (cur == NULL) {
@@ -702,20 +716,51 @@ htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur,
(!xmlStrcasecmp(cur->name, BAD_CAST "src")) ||
((!xmlStrcasecmp(cur->name, BAD_CAST "name")) &&
(!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) {
- xmlChar *escaped;
xmlChar *tmp = value;
+ /* xmlURIEscapeStr() escapes '"' so it can be safely used. */
+ xmlBufCCat(buf->buffer, "\"");
while (IS_BLANK_CH(*tmp)) tmp++;
- escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+");
- if (escaped != NULL) {
- xmlBufferWriteQuotedString(buf->buffer, escaped);
- xmlFree(escaped);
- } else {
- xmlBufferWriteQuotedString(buf->buffer, value);
+ /* URI Escape everything, except server side includes. */
+ for ( ; ; ) {
+ xmlChar *escaped;
+ xmlChar endChar;
+ xmlChar *end = NULL;
+ xmlChar *start = (xmlChar *)xmlStrstr(tmp, BAD_CAST "<!--");
+ if (start != NULL) {
+ end = (xmlChar *)xmlStrstr(tmp, BAD_CAST "-->");
+ if (end != NULL) {
+ *start = '\0';
+ }
+ }
+
+ /* Escape the whole string, or until start (set to '\0'). */
+ escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+");
+ if (escaped != NULL) {
+ xmlBufCat(buf->buffer, escaped);
+ xmlFree(escaped);
+ } else {
+ xmlBufCat(buf->buffer, tmp);
+ }
+
+ if (end == NULL) { /* Everything has been written. */
+ break;
+ }
+
+ /* Do not escape anything within server side includes. */
+ *start = '<'; /* Restore the first character of "<!--". */
+ end += 3; /* strlen("-->") */
+ endChar = *end;
+ *end = '\0';
+ xmlBufCat(buf->buffer, start);
+ *end = endChar;
+ tmp = end;
}
+
+ xmlBufCCat(buf->buffer, "\"");
} else {
- xmlBufferWriteQuotedString(buf->buffer, value);
+ xmlBufWriteQuotedString(buf->buffer, value);
}
xmlFree(value);
} else {
@@ -1105,7 +1150,7 @@ htmlSaveFile(const char *filename, xmlDocPtr cur) {
if ((cur == NULL) || (filename == NULL))
return(-1);
-
+
xmlInitParser();
encoding = (const char *) htmlGetMetaEncoding(cur);
@@ -1136,7 +1181,7 @@ htmlSaveFile(const char *filename, xmlDocPtr cur) {
if (handler == NULL)
handler = xmlFindCharEncodingHandler("ascii");
- /*
+ /*
* save the content to a temp buffer.
*/
buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression);
@@ -1156,7 +1201,7 @@ htmlSaveFile(const char *filename, xmlDocPtr cur) {
* @encoding: the document encoding
*
* Dump an HTML document to a file using a given encoding.
- *
+ *
* returns: the number of byte written or -1 in case of failure.
*/
int
@@ -1200,7 +1245,7 @@ htmlSaveFileFormat(const char *filename, xmlDocPtr cur,
if (handler == NULL)
handler = xmlFindCharEncodingHandler("ascii");
- /*
+ /*
* save the content to a temp buffer.
*/
buf = xmlOutputBufferCreateFilename(filename, handler, 0);
@@ -1220,7 +1265,7 @@ htmlSaveFileFormat(const char *filename, xmlDocPtr cur,
*
* Dump an HTML document to a file using a given encoding
* and formatting returns/spaces are added.
- *
+ *
* returns: the number of byte written or -1 in case of failure.
*/
int
diff --git a/INSTALL b/INSTALL
index 7d1c323..007e939 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,8 @@
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -226,6 +226,11 @@ order to use an ANSI C compiler:
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
@@ -304,9 +309,10 @@ causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
+an Autoconf limitation. Until the limitation is lifted, you can use
+this workaround:
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
@@ -362,4 +368,3 @@ operates.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
-
diff --git a/Makefile.am b/Makefile.am
index f82cefa..70720f3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,23 +2,25 @@
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = include . doc example xstc @PYTHON_SUBDIR@
+SUBDIRS = include . doc example xstc $(PYTHON_SUBDIR)
DIST_SUBDIRS = include . doc example python xstc
-INCLUDES = -I$(top_builddir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@ @LZMA_CFLAGS@
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include
+
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS) $(LZMA_CFLAGS)
noinst_PROGRAMS=testSchemas testRelax testSAX testHTML testXPath testURI \
testThreads testC14N testAutomata testRegexp \
testReader testapi testModule runtest runsuite testchar \
- testdict runxmlconf testrecurse
+ testdict runxmlconf testrecurse testlimits
bin_PROGRAMS = xmllint xmlcatalog
bin_SCRIPTS=xml2-config
lib_LTLIBRARIES = libxml2.la
-libxml2_la_LIBADD = @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@
+libxml2_la_LIBADD = $(ICU_LIBS) $(THREAD_LIBS) $(Z_LIBS) $(LZMA_LIBS) $(ICONV_LIBS) $(M_LIBS) $(WIN32_EXTRA_LIBADD)
if USE_VERSION_SCRIPT
LIBXML2_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxml2.syms
@@ -26,35 +28,37 @@ else
LIBXML2_VERSION_SCRIPT =
endif
-libxml2_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ \
- $(LIBXML2_VERSION_SCRIPT) \
- -version-info @LIBXML_VERSION_INFO@ \
- @MODULE_PLATFORM_LIBS@
+libxml2_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(WIN32_EXTRA_LDFLAGS) \
+ $(LIBXML2_VERSION_SCRIPT) \
+ -version-info $(LIBXML_VERSION_INFO) \
+ $(MODULE_PLATFORM_LIBS)
+
+if WITH_SAX1_SOURCES
+docb_sources = DOCBparser.c
+else
+docb_sources =
+endif
if WITH_TRIO_SOURCES
-libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \
- parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \
- valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \
- xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \
- catalog.c globals.c threads.c c14n.c xmlstring.c \
- xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
- triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \
- xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \
- xmlmodule.c schematron.c xzlib.c
+trio_sources = triostr.c trio.c
else
+trio_sources =
+endif
+
libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \
parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \
valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \
- xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \
- catalog.c globals.c threads.c c14n.c xmlstring.c \
+ xpointer.c xinclude.c nanohttp.c nanoftp.c \
+ $(docb_sources) \
+ catalog.c globals.c threads.c c14n.c xmlstring.c buf.c \
xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
+ $(trio_sources) \
xmlreader.c relaxng.c dict.c SAX2.c \
xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \
xmlmodule.c schematron.c xzlib.c
-endif
DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@
+LDADDS = $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(LZMA_LIBS) $(ICONV_LIBS) $(M_LIBS) $(WIN32_EXTRA_LIBADD)
man_MANS = xml2-config.1 libxml.3
@@ -65,32 +69,37 @@ m4data_DATA = libxml.m4
runtest_SOURCES=runtest.c
runtest_LDFLAGS =
runtest_DEPENDENCIES = $(DEPS)
-runtest_LDADD= @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS)
+runtest_LDADD= $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
testrecurse_SOURCES=testrecurse.c
testrecurse_LDFLAGS =
testrecurse_DEPENDENCIES = $(DEPS)
-testrecurse_LDADD= @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS)
+testrecurse_LDADD= $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
+
+testlimits_SOURCES=testlimits.c
+testlimits_LDFLAGS =
+testlimits_DEPENDENCIES = $(DEPS)
+testlimits_LDADD= $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
testchar_SOURCES=testchar.c
testchar_LDFLAGS =
testchar_DEPENDENCIES = $(DEPS)
-testchar_LDADD= @RDL_LIBS@ $(LDADDS)
+testchar_LDADD= $(RDL_LIBS) $(LDADDS)
testdict_SOURCES=testdict.c
testdict_LDFLAGS =
testdict_DEPENDENCIES = $(DEPS)
-testdict_LDADD= @RDL_LIBS@ $(LDADDS)
+testdict_LDADD= $(RDL_LIBS) $(LDADDS)
runsuite_SOURCES=runsuite.c
runsuite_LDFLAGS =
runsuite_DEPENDENCIES = $(DEPS)
-runsuite_LDADD= @RDL_LIBS@ $(LDADDS)
+runsuite_LDADD= $(RDL_LIBS) $(LDADDS)
xmllint_SOURCES=xmllint.c
xmllint_LDFLAGS =
xmllint_DEPENDENCIES = $(DEPS)
-xmllint_LDADD= @RDL_LIBS@ $(LDADDS)
+xmllint_LDADD= $(RDL_LIBS) $(LDADDS)
testSAX_SOURCES=testSAX.c
testSAX_LDFLAGS =
@@ -105,7 +114,7 @@ testHTML_LDADD= $(LDADDS)
xmlcatalog_SOURCES=xmlcatalog.c
xmlcatalog_LDFLAGS =
xmlcatalog_DEPENDENCIES = $(DEPS)
-xmlcatalog_LDADD= @RDL_LIBS@ $(LDADDS)
+xmlcatalog_LDADD = $(RDL_LIBS) $(LDADDS)
testXPath_SOURCES=testXPath.c
testXPath_LDFLAGS =
@@ -117,10 +126,14 @@ testC14N_LDFLAGS =
testC14N_DEPENDENCIES = $(DEPS)
testC14N_LDADD= $(LDADDS)
-testThreads_SOURCES=testThreads@THREADS_W32@.c
+if THREADS_W32
+testThreads_SOURCES = testThreadsWin32.c
+else
+testThreads_SOURCES = testThreads.c
+endif
testThreads_LDFLAGS =
testThreads_DEPENDENCIES = $(DEPS)
-testThreads_LDADD= @BASE_THREAD_LIBS@ $(LDADDS)
+testThreads_LDADD= $(BASE_THREAD_LIBS) $(LDADDS)
testURI_SOURCES=testURI.c
testURI_LDFLAGS =
@@ -172,6 +185,8 @@ testapi.c: $(srcdir)/gentest.py
-@(if [ "$(PYTHON)" != "" ] ; then \
$(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi )
+BUILT_SOURCES = testapi.c
+
testapi_SOURCES=testapi.c
testapi_LDFLAGS =
testapi_DEPENDENCIES = $(DEPS)
@@ -188,28 +203,25 @@ runxmlconf_LDADD= $(LDADDS)
#testOOM_LDADD= $(LDADDS)
runtests:
+ [ -d test ] || $(LN_S) $(srcdir)/test .
+ [ -d result ] || $(LN_S) $(srcdir)/result .
$(CHECKER) ./runtest$(EXEEXT) && $(CHECKER) ./testrecurse$(EXEEXT) &&$(CHECKER) ./testapi$(EXEEXT) && $(CHECKER) ./testchar$(EXEEXT)&& $(CHECKER) ./testdict$(EXEEXT) && $(CHECKER) ./runxmlconf$(EXEEXT)
- @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \
- $(MAKE) MAKEFLAGS+=--silent tests ; fi)
+ @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; \
+ $(MAKE) tests ; fi)
check: all runtests
-check-valgrind: all
+check-valgrind valgrind: all
@echo '## Running the regression tests under Valgrind'
@echo '## Go get a cup of coffee it is gonna take a while ...'
- $(MAKE) CHECKER='valgrind -q' check
+ $(MAKE) CHECKER='valgrind -q' runtests
testall : tests SVGtests SAXtests
-tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_SCHEMATRON@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@
- @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \
- $(MAKE) MAKEFLAGS+=--silent tests ; fi)
- @(cd doc/examples ; $(MAKE) MAKEFLAGS+=--silent tests)
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- @echo '## Go get a cup of coffee it is gonna take a while ...'
- $(MAKE) CHECKER='valgrind -q' tests
+tests: XMLtests XMLenttests NStests IDtests Errtests APItests $(READER_TEST) $(TEST_SAX) $(TEST_PUSH) $(TEST_HTML) $(TEST_PHTML) $(TEST_VALID) URItests $(TEST_PATTERN) $(TEST_XPATH) $(TEST_XPTR) $(TEST_XINCLUDE) $(TEST_C14N) $(TEST_DEBUG) $(TEST_CATALOG) $(TEST_REGEXPS) $(TEST_SCHEMAS) $(TEST_SCHEMATRON) $(TEST_THREADS) Timingtests $(TEST_VTIME) $(PYTHON_TESTS) $(TEST_MODULES)
+ @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; \
+ $(MAKE) tests ; fi)
+ @(cd doc/examples ; $(MAKE) tests)
APItests: testapi$(EXEEXT)
@echo "## Running the API regression tests this may take a little while"
@@ -1115,7 +1127,7 @@ SchemasPythonTests:
echo "## It is normal to see 11 errors reported" ; \
$(CHECKER) $(PYTHON) $(srcdir)/check-xsddata-test-suite.py ; \
fi)
- @(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" MAKEFLAGS+=--silent pytests ; fi)
+ @(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" pytests ; fi)
Patterntests: xmllint$(EXEEXT)
@(echo > .memdump)
@@ -1147,12 +1159,12 @@ ModuleTests: testModule$(EXEEXT) testdso.la
cleanup:
-@(find . -name .\#\* -exec rm {} \;)
- -@(find . -name \*.gcda -o *.gcno -exec rm {} \;)
- -@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm {} \;)
+ -@(find . -name \*.gcda -o -name \*.gcno -exec rm -f {} \;)
+ -@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm -f {} \;)
dist-hook: cleanup libxml2.spec
-cp libxml2.spec $(distdir)
- (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn --exclude .git win32 macos vms VxWorks bakefile test result) | (cd $(distdir); tar xf -)
+ (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn --exclude .git win32 macos os400 vms VxWorks bakefile test result) | (cd $(distdir); tar xf -)
dist-source: distdir
$(AMTAR) -chof - --exclude Tests --exclude test --exclude result $(distdir) | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-sources+"`.tar.gz
@@ -1183,7 +1195,8 @@ xml2Conf.sh: xml2Conf.sh.in Makefile
< $(srcdir)/xml2Conf.sh.in > xml2Conf.tmp \
&& mv xml2Conf.tmp xml2Conf.sh
-CLEANFILES=xml2Conf.sh *.gcda *.gcno
+CLEANFILES = runxmlconf.log test.out xml2Conf.sh *.gcda *.gcno *.res
+DISTCLEANFILES = COPYING missing.lst
confexecdir=$(libdir)
confexec_DATA = xml2Conf.sh
@@ -1194,17 +1207,21 @@ EXTRA_DIST = xml2-config.in xml2Conf.sh.in libxml.spec.in libxml2.spec \
check-xsddata-test-suite.py check-xinclude-test-suite.py \
example/Makefile.am example/gjobread.c example/gjobs.xml \
$(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \
+ libxml2-config.cmake.in \
trionan.c trionan.h triostr.c triostr.h trio.c trio.h \
- triop.h triodef.h libxml.h elfgcchack.h xzlib.h \
- testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
+ triop.h triodef.h libxml.h elfgcchack.h xzlib.h buf.h \
+ enc.h save.h testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
dbgen.pl dbgenattr.pl regressions.py regressions.xml \
- README.tests Makefile.tests libxml2.syms \
+ README.tests Makefile.tests libxml2.syms timsort.h \
$(CVS_EXTRA_DIST)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libxml-2.0.pc
+cmakedir = $(libdir)/cmake/libxml2
+cmake_DATA = libxml2-config.cmake
+
#
# Install the tests program sources as examples
#
@@ -1213,13 +1230,13 @@ DOC_MODULE=libxml2-$(VERSION)
EXAMPLES_DIR=$(BASE_DIR)/$(DOC_MODULE)/examples
install-data-local:
- @MKDIR_P@ $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
- -@INSTALL@ -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
- @MKDIR_P@ $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/testXPath.c $(DESTDIR)$(EXAMPLES_DIR)
+ $(MKDIR_P) $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
+ -$(INSTALL) -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
+ $(MKDIR_P) $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/testXPath.c $(DESTDIR)$(EXAMPLES_DIR)
uninstall-local:
rm -f $(DESTDIR)$(EXAMPLES_DIR)/testXPath.c
diff --git a/Makefile.in b/Makefile.in
index 6e88cc9..fbe49ec 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -19,6 +18,51 @@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -43,29 +87,31 @@ noinst_PROGRAMS = testSchemas$(EXEEXT) testRelax$(EXEEXT) \
testAutomata$(EXEEXT) testRegexp$(EXEEXT) testReader$(EXEEXT) \
testapi$(EXEEXT) testModule$(EXEEXT) runtest$(EXEEXT) \
runsuite$(EXEEXT) testchar$(EXEEXT) testdict$(EXEEXT) \
- runxmlconf$(EXEEXT) testrecurse$(EXEEXT)
+ runxmlconf$(EXEEXT) testrecurse$(EXEEXT) testlimits$(EXEEXT)
bin_PROGRAMS = xmllint$(EXEEXT) xmlcatalog$(EXEEXT)
subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
+ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
+ $(srcdir)/config.h.in $(srcdir)/libxml.spec.in \
+ $(srcdir)/libxml-2.0.pc.in \
$(srcdir)/libxml-2.0-uninstalled.pc.in \
- $(srcdir)/libxml-2.0.pc.in $(srcdir)/libxml.spec.in \
- $(srcdir)/xml2-config.in $(top_srcdir)/configure AUTHORS \
- COPYING ChangeLog INSTALL NEWS TODO config.guess config.sub \
- depcomp install-sh ltmain.sh missing
+ $(srcdir)/libxml2-config.cmake.in $(srcdir)/xml2-config.in \
+ depcomp COPYING TODO config.guess config.sub install-sh \
+ missing ltmain.sh
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = libxml2.spec xml2-config libxml-2.0.pc \
- libxml-2.0-uninstalled.pc
+CONFIG_CLEAN_FILES = libxml2.spec libxml-2.0.pc \
+ libxml-2.0-uninstalled.pc libxml2-config.cmake xml2-config
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -88,58 +134,49 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
- "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(confexecdir)" \
- "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"
+ "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(cmakedir)" \
+ "$(DESTDIR)$(confexecdir)" "$(DESTDIR)$(m4datadir)" \
+ "$(DESTDIR)$(pkgconfigdir)"
LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
-libxml2_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+libxml2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am__libxml2_la_SOURCES_DIST = SAX.c entities.c encoding.c error.c \
parserInternals.c parser.c tree.c hash.c list.c xmlIO.c \
xmlmemory.c uri.c valid.c xlink.c HTMLparser.c HTMLtree.c \
debugXML.c xpath.c xpointer.c xinclude.c nanohttp.c nanoftp.c \
DOCBparser.c catalog.c globals.c threads.c c14n.c xmlstring.c \
- xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
- xmlreader.c relaxng.c dict.c SAX2.c xmlwriter.c legacy.c \
- chvalid.c pattern.c xmlsave.c xmlmodule.c schematron.c xzlib.c \
- triostr.c trio.c
-@WITH_TRIO_SOURCES_FALSE@am_libxml2_la_OBJECTS = SAX.lo entities.lo \
-@WITH_TRIO_SOURCES_FALSE@ encoding.lo error.lo \
-@WITH_TRIO_SOURCES_FALSE@ parserInternals.lo parser.lo tree.lo \
-@WITH_TRIO_SOURCES_FALSE@ hash.lo list.lo xmlIO.lo xmlmemory.lo \
-@WITH_TRIO_SOURCES_FALSE@ uri.lo valid.lo xlink.lo \
-@WITH_TRIO_SOURCES_FALSE@ HTMLparser.lo HTMLtree.lo debugXML.lo \
-@WITH_TRIO_SOURCES_FALSE@ xpath.lo xpointer.lo xinclude.lo \
-@WITH_TRIO_SOURCES_FALSE@ nanohttp.lo nanoftp.lo DOCBparser.lo \
-@WITH_TRIO_SOURCES_FALSE@ catalog.lo globals.lo threads.lo \
-@WITH_TRIO_SOURCES_FALSE@ c14n.lo xmlstring.lo xmlregexp.lo \
-@WITH_TRIO_SOURCES_FALSE@ xmlschemas.lo xmlschemastypes.lo \
-@WITH_TRIO_SOURCES_FALSE@ xmlunicode.lo xmlreader.lo relaxng.lo \
-@WITH_TRIO_SOURCES_FALSE@ dict.lo SAX2.lo xmlwriter.lo \
-@WITH_TRIO_SOURCES_FALSE@ legacy.lo chvalid.lo pattern.lo \
-@WITH_TRIO_SOURCES_FALSE@ xmlsave.lo xmlmodule.lo schematron.lo \
-@WITH_TRIO_SOURCES_FALSE@ xzlib.lo
-@WITH_TRIO_SOURCES_TRUE@am_libxml2_la_OBJECTS = SAX.lo entities.lo \
-@WITH_TRIO_SOURCES_TRUE@ encoding.lo error.lo \
-@WITH_TRIO_SOURCES_TRUE@ parserInternals.lo parser.lo tree.lo \
-@WITH_TRIO_SOURCES_TRUE@ hash.lo list.lo xmlIO.lo xmlmemory.lo \
-@WITH_TRIO_SOURCES_TRUE@ uri.lo valid.lo xlink.lo HTMLparser.lo \
-@WITH_TRIO_SOURCES_TRUE@ HTMLtree.lo debugXML.lo xpath.lo \
-@WITH_TRIO_SOURCES_TRUE@ xpointer.lo xinclude.lo nanohttp.lo \
-@WITH_TRIO_SOURCES_TRUE@ nanoftp.lo DOCBparser.lo catalog.lo \
-@WITH_TRIO_SOURCES_TRUE@ globals.lo threads.lo c14n.lo \
-@WITH_TRIO_SOURCES_TRUE@ xmlstring.lo xmlregexp.lo \
-@WITH_TRIO_SOURCES_TRUE@ xmlschemas.lo xmlschemastypes.lo \
-@WITH_TRIO_SOURCES_TRUE@ xmlunicode.lo triostr.lo trio.lo \
-@WITH_TRIO_SOURCES_TRUE@ xmlreader.lo relaxng.lo dict.lo \
-@WITH_TRIO_SOURCES_TRUE@ SAX2.lo xmlwriter.lo legacy.lo \
-@WITH_TRIO_SOURCES_TRUE@ chvalid.lo pattern.lo xmlsave.lo \
-@WITH_TRIO_SOURCES_TRUE@ xmlmodule.lo schematron.lo xzlib.lo
+ buf.c xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
+ triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \
+ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c xmlmodule.c \
+ schematron.c xzlib.c
+@WITH_SAX1_SOURCES_TRUE@am__objects_1 = DOCBparser.lo
+@WITH_TRIO_SOURCES_TRUE@am__objects_2 = triostr.lo trio.lo
+am_libxml2_la_OBJECTS = SAX.lo entities.lo encoding.lo error.lo \
+ parserInternals.lo parser.lo tree.lo hash.lo list.lo xmlIO.lo \
+ xmlmemory.lo uri.lo valid.lo xlink.lo HTMLparser.lo \
+ HTMLtree.lo debugXML.lo xpath.lo xpointer.lo xinclude.lo \
+ nanohttp.lo nanoftp.lo $(am__objects_1) catalog.lo globals.lo \
+ threads.lo c14n.lo xmlstring.lo buf.lo xmlregexp.lo \
+ xmlschemas.lo xmlschemastypes.lo xmlunicode.lo \
+ $(am__objects_2) xmlreader.lo relaxng.lo dict.lo SAX2.lo \
+ xmlwriter.lo legacy.lo chvalid.lo pattern.lo xmlsave.lo \
+ xmlmodule.lo schematron.lo xzlib.lo
libxml2_la_OBJECTS = $(am_libxml2_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
+am__v_lt_1 =
libxml2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libxml2_la_LDFLAGS) $(LDFLAGS) -o $@
@@ -152,7 +189,10 @@ testdso_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
am_runsuite_OBJECTS = runsuite.$(OBJEXT)
runsuite_OBJECTS = $(am_runsuite_OBJECTS)
-am__DEPENDENCIES_2 = $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(top_builddir)/libxml2.la \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
runsuite_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(runsuite_LDFLAGS) $(LDFLAGS) -o $@
@@ -211,7 +251,9 @@ testSchemas_OBJECTS = $(am_testSchemas_OBJECTS)
testSchemas_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(testSchemas_LDFLAGS) $(LDFLAGS) -o $@
-am_testThreads_OBJECTS = testThreads@THREADS_W32@.$(OBJEXT)
+am__testThreads_SOURCES_DIST = testThreads.c testThreadsWin32.c
+@THREADS_W32_FALSE@am_testThreads_OBJECTS = testThreads.$(OBJEXT)
+@THREADS_W32_TRUE@am_testThreads_OBJECTS = testThreadsWin32.$(OBJEXT)
testThreads_OBJECTS = $(am_testThreads_OBJECTS)
testThreads_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@@ -241,6 +283,11 @@ testdict_OBJECTS = $(am_testdict_OBJECTS)
testdict_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(testdict_LDFLAGS) $(LDFLAGS) -o $@
+am_testlimits_OBJECTS = testlimits.$(OBJEXT)
+testlimits_OBJECTS = $(am_testlimits_OBJECTS)
+testlimits_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(testlimits_LDFLAGS) $(LDFLAGS) -o $@
am_testrecurse_OBJECTS = testrecurse.$(OBJEXT)
testrecurse_OBJECTS = $(am_testrecurse_OBJECTS)
testrecurse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -257,6 +304,18 @@ xmllint_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(xmllint_LDFLAGS) $(LDFLAGS) -o $@
SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -267,22 +326,18 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(libxml2_la_SOURCES) $(testdso_la_SOURCES) \
$(runsuite_SOURCES) $(runtest_SOURCES) $(runxmlconf_SOURCES) \
$(testAutomata_SOURCES) $(testC14N_SOURCES) \
@@ -291,44 +346,76 @@ SOURCES = $(libxml2_la_SOURCES) $(testdso_la_SOURCES) \
$(testRelax_SOURCES) $(testSAX_SOURCES) $(testSchemas_SOURCES) \
$(testThreads_SOURCES) $(testURI_SOURCES) $(testXPath_SOURCES) \
$(testapi_SOURCES) $(testchar_SOURCES) $(testdict_SOURCES) \
- $(testrecurse_SOURCES) $(xmlcatalog_SOURCES) \
- $(xmllint_SOURCES)
+ $(testlimits_SOURCES) $(testrecurse_SOURCES) \
+ $(xmlcatalog_SOURCES) $(xmllint_SOURCES)
DIST_SOURCES = $(am__libxml2_la_SOURCES_DIST) $(testdso_la_SOURCES) \
$(runsuite_SOURCES) $(runtest_SOURCES) $(runxmlconf_SOURCES) \
$(testAutomata_SOURCES) $(testC14N_SOURCES) \
$(testHTML_SOURCES) $(testModule_SOURCES) \
$(testReader_SOURCES) $(testRegexp_SOURCES) \
$(testRelax_SOURCES) $(testSAX_SOURCES) $(testSchemas_SOURCES) \
- $(testThreads_SOURCES) $(testURI_SOURCES) $(testXPath_SOURCES) \
- $(testapi_SOURCES) $(testchar_SOURCES) $(testdict_SOURCES) \
+ $(am__testThreads_SOURCES_DIST) $(testURI_SOURCES) \
+ $(testXPath_SOURCES) $(testapi_SOURCES) $(testchar_SOURCES) \
+ $(testdict_SOURCES) $(testlimits_SOURCES) \
$(testrecurse_SOURCES) $(xmlcatalog_SOURCES) \
$(xmllint_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
man1dir = $(mandir)/man1
man3dir = $(mandir)/man3
NROFF = nroff
MANS = $(man_MANS)
-DATA = $(confexec_DATA) $(m4data_DATA) $(pkgconfig_DATA)
+DATA = $(cmake_DATA) $(confexec_DATA) $(m4data_DATA) $(pkgconfig_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+CSCOPE = cscope
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -356,13 +443,15 @@ am__relativize = \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -399,6 +488,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -443,6 +533,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -454,7 +547,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -479,7 +571,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -512,6 +603,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -586,68 +678,69 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = include . doc example xstc @PYTHON_SUBDIR@
+SUBDIRS = include . doc example xstc $(PYTHON_SUBDIR)
DIST_SUBDIRS = include . doc example python xstc
-INCLUDES = -I$(top_builddir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@ @LZMA_CFLAGS@
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS) $(LZMA_CFLAGS)
bin_SCRIPTS = xml2-config
lib_LTLIBRARIES = libxml2.la
-libxml2_la_LIBADD = @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@
+libxml2_la_LIBADD = $(ICU_LIBS) $(THREAD_LIBS) $(Z_LIBS) $(LZMA_LIBS) $(ICONV_LIBS) $(M_LIBS) $(WIN32_EXTRA_LIBADD)
@USE_VERSION_SCRIPT_FALSE@LIBXML2_VERSION_SCRIPT =
@USE_VERSION_SCRIPT_TRUE@LIBXML2_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxml2.syms
-libxml2_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ \
- $(LIBXML2_VERSION_SCRIPT) \
- -version-info @LIBXML_VERSION_INFO@ \
- @MODULE_PLATFORM_LIBS@
-
-@WITH_TRIO_SOURCES_FALSE@libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \
-@WITH_TRIO_SOURCES_FALSE@ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \
-@WITH_TRIO_SOURCES_FALSE@ valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \
-@WITH_TRIO_SOURCES_FALSE@ xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \
-@WITH_TRIO_SOURCES_FALSE@ catalog.c globals.c threads.c c14n.c xmlstring.c \
-@WITH_TRIO_SOURCES_FALSE@ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
-@WITH_TRIO_SOURCES_FALSE@ xmlreader.c relaxng.c dict.c SAX2.c \
-@WITH_TRIO_SOURCES_FALSE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \
-@WITH_TRIO_SOURCES_FALSE@ xmlmodule.c schematron.c xzlib.c
-
-@WITH_TRIO_SOURCES_TRUE@libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \
-@WITH_TRIO_SOURCES_TRUE@ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \
-@WITH_TRIO_SOURCES_TRUE@ valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \
-@WITH_TRIO_SOURCES_TRUE@ xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \
-@WITH_TRIO_SOURCES_TRUE@ catalog.c globals.c threads.c c14n.c xmlstring.c \
-@WITH_TRIO_SOURCES_TRUE@ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
-@WITH_TRIO_SOURCES_TRUE@ triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \
-@WITH_TRIO_SOURCES_TRUE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \
-@WITH_TRIO_SOURCES_TRUE@ xmlmodule.c schematron.c xzlib.c
+libxml2_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(WIN32_EXTRA_LDFLAGS) \
+ $(LIBXML2_VERSION_SCRIPT) \
+ -version-info $(LIBXML_VERSION_INFO) \
+ $(MODULE_PLATFORM_LIBS)
+
+@WITH_SAX1_SOURCES_FALSE@docb_sources =
+@WITH_SAX1_SOURCES_TRUE@docb_sources = DOCBparser.c
+@WITH_TRIO_SOURCES_FALSE@trio_sources =
+@WITH_TRIO_SOURCES_TRUE@trio_sources = triostr.c trio.c
+libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \
+ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \
+ valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \
+ xpointer.c xinclude.c nanohttp.c nanoftp.c \
+ $(docb_sources) \
+ catalog.c globals.c threads.c c14n.c xmlstring.c buf.c \
+ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \
+ $(trio_sources) \
+ xmlreader.c relaxng.c dict.c SAX2.c \
+ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \
+ xmlmodule.c schematron.c xzlib.c
DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@
+LDADDS = $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(LZMA_LIBS) $(ICONV_LIBS) $(M_LIBS) $(WIN32_EXTRA_LIBADD)
man_MANS = xml2-config.1 libxml.3
m4datadir = $(datadir)/aclocal
m4data_DATA = libxml.m4
runtest_SOURCES = runtest.c
runtest_LDFLAGS =
runtest_DEPENDENCIES = $(DEPS)
-runtest_LDADD = @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS)
+runtest_LDADD = $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
testrecurse_SOURCES = testrecurse.c
testrecurse_LDFLAGS =
testrecurse_DEPENDENCIES = $(DEPS)
-testrecurse_LDADD = @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS)
+testrecurse_LDADD = $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
+testlimits_SOURCES = testlimits.c
+testlimits_LDFLAGS =
+testlimits_DEPENDENCIES = $(DEPS)
+testlimits_LDADD = $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
testchar_SOURCES = testchar.c
testchar_LDFLAGS =
testchar_DEPENDENCIES = $(DEPS)
-testchar_LDADD = @RDL_LIBS@ $(LDADDS)
+testchar_LDADD = $(RDL_LIBS) $(LDADDS)
testdict_SOURCES = testdict.c
testdict_LDFLAGS =
testdict_DEPENDENCIES = $(DEPS)
-testdict_LDADD = @RDL_LIBS@ $(LDADDS)
+testdict_LDADD = $(RDL_LIBS) $(LDADDS)
runsuite_SOURCES = runsuite.c
runsuite_LDFLAGS =
runsuite_DEPENDENCIES = $(DEPS)
-runsuite_LDADD = @RDL_LIBS@ $(LDADDS)
+runsuite_LDADD = $(RDL_LIBS) $(LDADDS)
xmllint_SOURCES = xmllint.c
xmllint_LDFLAGS =
xmllint_DEPENDENCIES = $(DEPS)
-xmllint_LDADD = @RDL_LIBS@ $(LDADDS)
+xmllint_LDADD = $(RDL_LIBS) $(LDADDS)
testSAX_SOURCES = testSAX.c
testSAX_LDFLAGS =
testSAX_DEPENDENCIES = $(DEPS)
@@ -659,7 +752,7 @@ testHTML_LDADD = $(LDADDS)
xmlcatalog_SOURCES = xmlcatalog.c
xmlcatalog_LDFLAGS =
xmlcatalog_DEPENDENCIES = $(DEPS)
-xmlcatalog_LDADD = @RDL_LIBS@ $(LDADDS)
+xmlcatalog_LDADD = $(RDL_LIBS) $(LDADDS)
testXPath_SOURCES = testXPath.c
testXPath_LDFLAGS =
testXPath_DEPENDENCIES = $(DEPS)
@@ -668,10 +761,11 @@ testC14N_SOURCES = testC14N.c
testC14N_LDFLAGS =
testC14N_DEPENDENCIES = $(DEPS)
testC14N_LDADD = $(LDADDS)
-testThreads_SOURCES = testThreads@THREADS_W32@.c
+@THREADS_W32_FALSE@testThreads_SOURCES = testThreads.c
+@THREADS_W32_TRUE@testThreads_SOURCES = testThreadsWin32.c
testThreads_LDFLAGS =
testThreads_DEPENDENCIES = $(DEPS)
-testThreads_LDADD = @BASE_THREAD_LIBS@ $(LDADDS)
+testThreads_LDADD = $(BASE_THREAD_LIBS) $(LDADDS)
testURI_SOURCES = testURI.c
testURI_LDFLAGS =
testURI_DEPENDENCIES = $(DEPS)
@@ -703,6 +797,7 @@ testModule_LDADD = $(LDADDS)
noinst_LTLIBRARIES = testdso.la
testdso_la_SOURCES = testdso.c
testdso_la_LDFLAGS = -module -no-undefined -avoid-version -rpath $(libdir)
+BUILT_SOURCES = testapi.c
testapi_SOURCES = testapi.c
testapi_LDFLAGS =
testapi_DEPENDENCIES = $(DEPS)
@@ -711,7 +806,8 @@ runxmlconf_SOURCES = runxmlconf.c
runxmlconf_LDFLAGS =
runxmlconf_DEPENDENCIES = $(DEPS)
runxmlconf_LDADD = $(LDADDS)
-CLEANFILES = xml2Conf.sh *.gcda *.gcno
+CLEANFILES = runxmlconf.log test.out xml2Conf.sh *.gcda *.gcno *.res
+DISTCLEANFILES = COPYING missing.lst
confexecdir = $(libdir)
confexec_DATA = xml2Conf.sh
CVS_EXTRA_DIST =
@@ -721,15 +817,18 @@ EXTRA_DIST = xml2-config.in xml2Conf.sh.in libxml.spec.in libxml2.spec \
check-xsddata-test-suite.py check-xinclude-test-suite.py \
example/Makefile.am example/gjobread.c example/gjobs.xml \
$(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \
+ libxml2-config.cmake.in \
trionan.c trionan.h triostr.c triostr.h trio.c trio.h \
- triop.h triodef.h libxml.h elfgcchack.h xzlib.h \
- testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
+ triop.h triodef.h libxml.h elfgcchack.h xzlib.h buf.h \
+ enc.h save.h testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
dbgen.pl dbgenattr.pl regressions.py regressions.xml \
- README.tests Makefile.tests libxml2.syms \
+ README.tests Makefile.tests libxml2.syms timsort.h \
$(CVS_EXTRA_DIST)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libxml-2.0.pc
+cmakedir = $(libdir)/cmake/libxml2
+cmake_DATA = libxml2-config.cmake
#
# Install the tests program sources as examples
@@ -744,12 +843,12 @@ EXAMPLES_DIR = $(BASE_DIR)/$(DOC_MODULE)/examples
#
LCOV = /usr/bin/lcov
GENHTML = /usr/bin/genhtml
-all: config.h
+all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
-am--refresh:
+am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
@@ -785,10 +884,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
@@ -802,15 +899,17 @@ distclean-hdr:
-rm -f config.h stamp-h1
libxml2.spec: $(top_builddir)/config.status $(srcdir)/libxml.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
-xml2-config: $(top_builddir)/config.status $(srcdir)/xml2-config.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
libxml-2.0.pc: $(top_builddir)/config.status $(srcdir)/libxml-2.0.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $@
libxml-2.0-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/libxml-2.0-uninstalled.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $@
+libxml2-config.cmake: $(top_builddir)/config.status $(srcdir)/libxml2-config.cmake.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+xml2-config: $(top_builddir)/config.status $(srcdir)/xml2-config.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
@@ -818,6 +917,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
@@ -833,35 +934,46 @@ uninstall-libLTLIBRARIES:
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
+ @list='$(lib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libxml2.la: $(libxml2_la_OBJECTS) $(libxml2_la_DEPENDENCIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libxml2.la: $(libxml2_la_OBJECTS) $(libxml2_la_DEPENDENCIES) $(EXTRA_libxml2_la_DEPENDENCIES)
$(AM_V_CCLD)$(libxml2_la_LINK) -rpath $(libdir) $(libxml2_la_OBJECTS) $(libxml2_la_LIBADD) $(LIBS)
-testdso.la: $(testdso_la_OBJECTS) $(testdso_la_DEPENDENCIES)
+
+testdso.la: $(testdso_la_OBJECTS) $(testdso_la_DEPENDENCIES) $(EXTRA_testdso_la_DEPENDENCIES)
$(AM_V_CCLD)$(testdso_la_LINK) $(testdso_la_OBJECTS) $(testdso_la_LIBADD) $(LIBS)
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p || test -f $$p1; \
- then echo "$$p"; echo "$$p"; else :; fi; \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -882,7 +994,8 @@ uninstall-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -904,73 +1017,101 @@ clean-noinstPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
-runsuite$(EXEEXT): $(runsuite_OBJECTS) $(runsuite_DEPENDENCIES)
+
+runsuite$(EXEEXT): $(runsuite_OBJECTS) $(runsuite_DEPENDENCIES) $(EXTRA_runsuite_DEPENDENCIES)
@rm -f runsuite$(EXEEXT)
$(AM_V_CCLD)$(runsuite_LINK) $(runsuite_OBJECTS) $(runsuite_LDADD) $(LIBS)
-runtest$(EXEEXT): $(runtest_OBJECTS) $(runtest_DEPENDENCIES)
+
+runtest$(EXEEXT): $(runtest_OBJECTS) $(runtest_DEPENDENCIES) $(EXTRA_runtest_DEPENDENCIES)
@rm -f runtest$(EXEEXT)
$(AM_V_CCLD)$(runtest_LINK) $(runtest_OBJECTS) $(runtest_LDADD) $(LIBS)
-runxmlconf$(EXEEXT): $(runxmlconf_OBJECTS) $(runxmlconf_DEPENDENCIES)
+
+runxmlconf$(EXEEXT): $(runxmlconf_OBJECTS) $(runxmlconf_DEPENDENCIES) $(EXTRA_runxmlconf_DEPENDENCIES)
@rm -f runxmlconf$(EXEEXT)
$(AM_V_CCLD)$(runxmlconf_LINK) $(runxmlconf_OBJECTS) $(runxmlconf_LDADD) $(LIBS)
-testAutomata$(EXEEXT): $(testAutomata_OBJECTS) $(testAutomata_DEPENDENCIES)
+
+testAutomata$(EXEEXT): $(testAutomata_OBJECTS) $(testAutomata_DEPENDENCIES) $(EXTRA_testAutomata_DEPENDENCIES)
@rm -f testAutomata$(EXEEXT)
$(AM_V_CCLD)$(testAutomata_LINK) $(testAutomata_OBJECTS) $(testAutomata_LDADD) $(LIBS)
-testC14N$(EXEEXT): $(testC14N_OBJECTS) $(testC14N_DEPENDENCIES)
+
+testC14N$(EXEEXT): $(testC14N_OBJECTS) $(testC14N_DEPENDENCIES) $(EXTRA_testC14N_DEPENDENCIES)
@rm -f testC14N$(EXEEXT)
$(AM_V_CCLD)$(testC14N_LINK) $(testC14N_OBJECTS) $(testC14N_LDADD) $(LIBS)
-testHTML$(EXEEXT): $(testHTML_OBJECTS) $(testHTML_DEPENDENCIES)
+
+testHTML$(EXEEXT): $(testHTML_OBJECTS) $(testHTML_DEPENDENCIES) $(EXTRA_testHTML_DEPENDENCIES)
@rm -f testHTML$(EXEEXT)
$(AM_V_CCLD)$(testHTML_LINK) $(testHTML_OBJECTS) $(testHTML_LDADD) $(LIBS)
-testModule$(EXEEXT): $(testModule_OBJECTS) $(testModule_DEPENDENCIES)
+
+testModule$(EXEEXT): $(testModule_OBJECTS) $(testModule_DEPENDENCIES) $(EXTRA_testModule_DEPENDENCIES)
@rm -f testModule$(EXEEXT)
$(AM_V_CCLD)$(testModule_LINK) $(testModule_OBJECTS) $(testModule_LDADD) $(LIBS)
-testReader$(EXEEXT): $(testReader_OBJECTS) $(testReader_DEPENDENCIES)
+
+testReader$(EXEEXT): $(testReader_OBJECTS) $(testReader_DEPENDENCIES) $(EXTRA_testReader_DEPENDENCIES)
@rm -f testReader$(EXEEXT)
$(AM_V_CCLD)$(testReader_LINK) $(testReader_OBJECTS) $(testReader_LDADD) $(LIBS)
-testRegexp$(EXEEXT): $(testRegexp_OBJECTS) $(testRegexp_DEPENDENCIES)
+
+testRegexp$(EXEEXT): $(testRegexp_OBJECTS) $(testRegexp_DEPENDENCIES) $(EXTRA_testRegexp_DEPENDENCIES)
@rm -f testRegexp$(EXEEXT)
$(AM_V_CCLD)$(testRegexp_LINK) $(testRegexp_OBJECTS) $(testRegexp_LDADD) $(LIBS)
-testRelax$(EXEEXT): $(testRelax_OBJECTS) $(testRelax_DEPENDENCIES)
+
+testRelax$(EXEEXT): $(testRelax_OBJECTS) $(testRelax_DEPENDENCIES) $(EXTRA_testRelax_DEPENDENCIES)
@rm -f testRelax$(EXEEXT)
$(AM_V_CCLD)$(testRelax_LINK) $(testRelax_OBJECTS) $(testRelax_LDADD) $(LIBS)
-testSAX$(EXEEXT): $(testSAX_OBJECTS) $(testSAX_DEPENDENCIES)
+
+testSAX$(EXEEXT): $(testSAX_OBJECTS) $(testSAX_DEPENDENCIES) $(EXTRA_testSAX_DEPENDENCIES)
@rm -f testSAX$(EXEEXT)
$(AM_V_CCLD)$(testSAX_LINK) $(testSAX_OBJECTS) $(testSAX_LDADD) $(LIBS)
-testSchemas$(EXEEXT): $(testSchemas_OBJECTS) $(testSchemas_DEPENDENCIES)
+
+testSchemas$(EXEEXT): $(testSchemas_OBJECTS) $(testSchemas_DEPENDENCIES) $(EXTRA_testSchemas_DEPENDENCIES)
@rm -f testSchemas$(EXEEXT)
$(AM_V_CCLD)$(testSchemas_LINK) $(testSchemas_OBJECTS) $(testSchemas_LDADD) $(LIBS)
-testThreads$(EXEEXT): $(testThreads_OBJECTS) $(testThreads_DEPENDENCIES)
+
+testThreads$(EXEEXT): $(testThreads_OBJECTS) $(testThreads_DEPENDENCIES) $(EXTRA_testThreads_DEPENDENCIES)
@rm -f testThreads$(EXEEXT)
$(AM_V_CCLD)$(testThreads_LINK) $(testThreads_OBJECTS) $(testThreads_LDADD) $(LIBS)
-testURI$(EXEEXT): $(testURI_OBJECTS) $(testURI_DEPENDENCIES)
+
+testURI$(EXEEXT): $(testURI_OBJECTS) $(testURI_DEPENDENCIES) $(EXTRA_testURI_DEPENDENCIES)
@rm -f testURI$(EXEEXT)
$(AM_V_CCLD)$(testURI_LINK) $(testURI_OBJECTS) $(testURI_LDADD) $(LIBS)
-testXPath$(EXEEXT): $(testXPath_OBJECTS) $(testXPath_DEPENDENCIES)
+
+testXPath$(EXEEXT): $(testXPath_OBJECTS) $(testXPath_DEPENDENCIES) $(EXTRA_testXPath_DEPENDENCIES)
@rm -f testXPath$(EXEEXT)
$(AM_V_CCLD)$(testXPath_LINK) $(testXPath_OBJECTS) $(testXPath_LDADD) $(LIBS)
-testapi$(EXEEXT): $(testapi_OBJECTS) $(testapi_DEPENDENCIES)
+
+testapi$(EXEEXT): $(testapi_OBJECTS) $(testapi_DEPENDENCIES) $(EXTRA_testapi_DEPENDENCIES)
@rm -f testapi$(EXEEXT)
$(AM_V_CCLD)$(testapi_LINK) $(testapi_OBJECTS) $(testapi_LDADD) $(LIBS)
-testchar$(EXEEXT): $(testchar_OBJECTS) $(testchar_DEPENDENCIES)
+
+testchar$(EXEEXT): $(testchar_OBJECTS) $(testchar_DEPENDENCIES) $(EXTRA_testchar_DEPENDENCIES)
@rm -f testchar$(EXEEXT)
$(AM_V_CCLD)$(testchar_LINK) $(testchar_OBJECTS) $(testchar_LDADD) $(LIBS)
-testdict$(EXEEXT): $(testdict_OBJECTS) $(testdict_DEPENDENCIES)
+
+testdict$(EXEEXT): $(testdict_OBJECTS) $(testdict_DEPENDENCIES) $(EXTRA_testdict_DEPENDENCIES)
@rm -f testdict$(EXEEXT)
$(AM_V_CCLD)$(testdict_LINK) $(testdict_OBJECTS) $(testdict_LDADD) $(LIBS)
-testrecurse$(EXEEXT): $(testrecurse_OBJECTS) $(testrecurse_DEPENDENCIES)
+
+testlimits$(EXEEXT): $(testlimits_OBJECTS) $(testlimits_DEPENDENCIES) $(EXTRA_testlimits_DEPENDENCIES)
+ @rm -f testlimits$(EXEEXT)
+ $(AM_V_CCLD)$(testlimits_LINK) $(testlimits_OBJECTS) $(testlimits_LDADD) $(LIBS)
+
+testrecurse$(EXEEXT): $(testrecurse_OBJECTS) $(testrecurse_DEPENDENCIES) $(EXTRA_testrecurse_DEPENDENCIES)
@rm -f testrecurse$(EXEEXT)
$(AM_V_CCLD)$(testrecurse_LINK) $(testrecurse_OBJECTS) $(testrecurse_LDADD) $(LIBS)
-xmlcatalog$(EXEEXT): $(xmlcatalog_OBJECTS) $(xmlcatalog_DEPENDENCIES)
+
+xmlcatalog$(EXEEXT): $(xmlcatalog_OBJECTS) $(xmlcatalog_DEPENDENCIES) $(EXTRA_xmlcatalog_DEPENDENCIES)
@rm -f xmlcatalog$(EXEEXT)
$(AM_V_CCLD)$(xmlcatalog_LINK) $(xmlcatalog_OBJECTS) $(xmlcatalog_LDADD) $(LIBS)
-xmllint$(EXEEXT): $(xmllint_OBJECTS) $(xmllint_DEPENDENCIES)
+
+xmllint$(EXEEXT): $(xmllint_OBJECTS) $(xmllint_DEPENDENCIES) $(EXTRA_xmllint_DEPENDENCIES)
@rm -f xmllint$(EXEEXT)
$(AM_V_CCLD)$(xmllint_LINK) $(xmllint_OBJECTS) $(xmllint_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
@@ -998,9 +1139,7 @@ uninstall-binSCRIPTS:
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
+ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -1013,6 +1152,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HTMLtree.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SAX.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SAX2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c14n.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chvalid.Plo@am__quote@
@@ -1044,13 +1184,15 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRelax.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSAX.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSchemas.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testThreads@THREADS_W32@.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testThreads.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testThreadsWin32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testURI.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testXPath.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testapi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testchar.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdict.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdso.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlimits.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrecurse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Plo@am__quote@
@@ -1080,26 +1222,23 @@ distclean-compile:
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
@@ -1111,11 +1250,18 @@ distclean-libtool:
-rm -f libtool config.lt
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.1[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
@@ -1144,16 +1290,21 @@ uninstall-man1:
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
install-man3: $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
- @list=''; test -n "$(man3dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.3[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man3dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.3[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
@@ -1182,13 +1333,35 @@ uninstall-man3:
sed -n '/\.3[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man3dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
+install-cmakeDATA: $(cmake_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(cmakedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(cmakedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakedir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakedir)" || exit $$?; \
+ done
+
+uninstall-cmakeDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(cmakedir)'; $(am__uninstall_files_from_dir)
install-confexecDATA: $(confexec_DATA)
@$(NORMAL_INSTALL)
- test -z "$(confexecdir)" || $(MKDIR_P) "$(DESTDIR)$(confexecdir)"
@list='$(confexec_DATA)'; test -n "$(confexecdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(confexecdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(confexecdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -1202,13 +1375,14 @@ uninstall-confexecDATA:
@$(NORMAL_UNINSTALL)
@list='$(confexec_DATA)'; test -n "$(confexecdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(confexecdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(confexecdir)" && rm -f $$files
+ dir='$(DESTDIR)$(confexecdir)'; $(am__uninstall_files_from_dir)
install-m4dataDATA: $(m4data_DATA)
@$(NORMAL_INSTALL)
- test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)"
@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -1222,13 +1396,14 @@ uninstall-m4dataDATA:
@$(NORMAL_UNINSTALL)
@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(m4datadir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(m4datadir)" && rm -f $$files
+ dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir)
install-pkgconfigDATA: $(pkgconfig_DATA)
@$(NORMAL_INSTALL)
- test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -1242,27 +1417,28 @@ uninstall-pkgconfigDATA:
@$(NORMAL_UNINSTALL)
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -1277,57 +1453,12 @@ $(RECURSIVE_TARGETS):
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -1343,12 +1474,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -1360,15 +1486,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -1377,24 +1499,33 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
- @list='$(MANS)'; if test -n "$$list"; then \
- list=`for p in $$list; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
- if test -n "$$list" && \
- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically \`make maintainer-clean' will remove them" >&2; \
- exit 1; \
- else :; fi; \
- else :; fi
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1428,13 +1559,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -1466,36 +1594,36 @@ distdir: $(DISTFILES)
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
@@ -1506,8 +1634,8 @@ distcheck: dist
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
@@ -1517,9 +1645,9 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -1527,6 +1655,7 @@ distcheck: dist
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -1550,13 +1679,21 @@ distcheck: dist
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
@@ -1573,17 +1710,19 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
-check: check-recursive
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) \
config.h
install-binPROGRAMS: install-libLTLIBRARIES
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(confexecdir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(confexecdir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
-install: install-recursive
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
@@ -1593,10 +1732,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -1605,10 +1749,12 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-recursive
clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
@@ -1634,8 +1780,8 @@ info: info-recursive
info-am:
-install-data-am: install-data-local install-m4dataDATA install-man \
- install-pkgconfigDATA
+install-data-am: install-cmakeDATA install-data-local \
+ install-m4dataDATA install-man install-pkgconfigDATA
install-dvi: install-dvi-recursive
@@ -1685,25 +1831,26 @@ ps: ps-recursive
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
- uninstall-confexecDATA uninstall-libLTLIBRARIES \
- uninstall-local uninstall-m4dataDATA uninstall-man \
- uninstall-pkgconfigDATA
+ uninstall-cmakeDATA uninstall-confexecDATA \
+ uninstall-libLTLIBRARIES uninstall-local uninstall-m4dataDATA \
+ uninstall-man uninstall-pkgconfigDATA
uninstall-man: uninstall-man1 uninstall-man3
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-binPROGRAMS \
- clean-generic clean-libLTLIBRARIES clean-libtool \
- clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags \
- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
- dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
- distclean distclean-compile distclean-generic distclean-hdr \
- distclean-libtool distclean-tags distcleancheck distdir \
- distuninstallcheck dvi dvi-am html html-am info info-am \
- install install-am install-binPROGRAMS install-binSCRIPTS \
+.MAKE: $(am__recursive_targets) all check install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-binPROGRAMS \
+ clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscope \
+ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-binSCRIPTS install-cmakeDATA \
install-confexecDATA install-data install-data-am \
install-data-local install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
@@ -1713,9 +1860,9 @@ uninstall-man: uninstall-man1 uninstall-man3
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-binPROGRAMS \
- uninstall-binSCRIPTS uninstall-confexecDATA \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \
+ uninstall-cmakeDATA uninstall-confexecDATA \
uninstall-libLTLIBRARIES uninstall-local uninstall-m4dataDATA \
uninstall-man uninstall-man1 uninstall-man3 \
uninstall-pkgconfigDATA
@@ -1738,28 +1885,25 @@ testapi.c: $(srcdir)/gentest.py
#testOOM_LDADD= $(LDADDS)
runtests:
+ [ -d test ] || $(LN_S) $(srcdir)/test .
+ [ -d result ] || $(LN_S) $(srcdir)/result .
$(CHECKER) ./runtest$(EXEEXT) && $(CHECKER) ./testrecurse$(EXEEXT) &&$(CHECKER) ./testapi$(EXEEXT) && $(CHECKER) ./testchar$(EXEEXT)&& $(CHECKER) ./testdict$(EXEEXT) && $(CHECKER) ./runxmlconf$(EXEEXT)
- @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \
- $(MAKE) MAKEFLAGS+=--silent tests ; fi)
+ @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; \
+ $(MAKE) tests ; fi)
check: all runtests
-check-valgrind: all
+check-valgrind valgrind: all
@echo '## Running the regression tests under Valgrind'
@echo '## Go get a cup of coffee it is gonna take a while ...'
- $(MAKE) CHECKER='valgrind -q' check
+ $(MAKE) CHECKER='valgrind -q' runtests
testall : tests SVGtests SAXtests
-tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_SCHEMATRON@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@
- @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \
- $(MAKE) MAKEFLAGS+=--silent tests ; fi)
- @(cd doc/examples ; $(MAKE) MAKEFLAGS+=--silent tests)
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- @echo '## Go get a cup of coffee it is gonna take a while ...'
- $(MAKE) CHECKER='valgrind -q' tests
+tests: XMLtests XMLenttests NStests IDtests Errtests APItests $(READER_TEST) $(TEST_SAX) $(TEST_PUSH) $(TEST_HTML) $(TEST_PHTML) $(TEST_VALID) URItests $(TEST_PATTERN) $(TEST_XPATH) $(TEST_XPTR) $(TEST_XINCLUDE) $(TEST_C14N) $(TEST_DEBUG) $(TEST_CATALOG) $(TEST_REGEXPS) $(TEST_SCHEMAS) $(TEST_SCHEMATRON) $(TEST_THREADS) Timingtests $(TEST_VTIME) $(PYTHON_TESTS) $(TEST_MODULES)
+ @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; \
+ $(MAKE) tests ; fi)
+ @(cd doc/examples ; $(MAKE) tests)
APItests: testapi$(EXEEXT)
@echo "## Running the API regression tests this may take a little while"
@@ -2665,7 +2809,7 @@ SchemasPythonTests:
echo "## It is normal to see 11 errors reported" ; \
$(CHECKER) $(PYTHON) $(srcdir)/check-xsddata-test-suite.py ; \
fi)
- @(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" MAKEFLAGS+=--silent pytests ; fi)
+ @(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" pytests ; fi)
Patterntests: xmllint$(EXEEXT)
@(echo > .memdump)
@@ -2697,12 +2841,12 @@ ModuleTests: testModule$(EXEEXT) testdso.la
cleanup:
-@(find . -name .\#\* -exec rm {} \;)
- -@(find . -name \*.gcda -o *.gcno -exec rm {} \;)
- -@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm {} \;)
+ -@(find . -name \*.gcda -o -name \*.gcno -exec rm -f {} \;)
+ -@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm -f {} \;)
dist-hook: cleanup libxml2.spec
-cp libxml2.spec $(distdir)
- (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn --exclude .git win32 macos vms VxWorks bakefile test result) | (cd $(distdir); tar xf -)
+ (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn --exclude .git win32 macos os400 vms VxWorks bakefile test result) | (cd $(distdir); tar xf -)
dist-source: distdir
$(AMTAR) -chof - --exclude Tests --exclude test --exclude result $(distdir) | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-sources+"`.tar.gz
@@ -2728,13 +2872,13 @@ xml2Conf.sh: xml2Conf.sh.in Makefile
&& mv xml2Conf.tmp xml2Conf.sh
install-data-local:
- @MKDIR_P@ $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
- -@INSTALL@ -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
- @MKDIR_P@ $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/testXPath.c $(DESTDIR)$(EXAMPLES_DIR)
+ $(MKDIR_P) $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
+ -$(INSTALL) -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)
+ $(MKDIR_P) $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/testXPath.c $(DESTDIR)$(EXAMPLES_DIR)
uninstall-local:
rm -f $(DESTDIR)$(EXAMPLES_DIR)/testXPath.c
diff --git a/NEWS b/NEWS
index cdfdda6..8027d55 100644
--- a/NEWS
+++ b/NEWS
@@ -4,17 +4,647 @@
Note that this is automatically generated from the news webpage at:
http://xmlsoft.org/news.html
-Items not finished and worked on, get in touch with the list if you want
-to help those - More testing on RelaxNG
- - Finishing up XML
- Schemas
-
The change log at
ChangeLog.html
describes the recents commits
-to the SVN at
-http://svn.gnome.org/viewvc/libxml2/trunk/
+to the GIT at
+http://git.gnome.org/browse/libxml2/
code base.Here is the list of public releases:
+2.9.2: Oct 16 2014:
+ - Security:
+ Fix for CVE-2014-3660 billion laugh variant (Daniel Veillard),
+ CVE-2014-0191 Do not fetch external parameter entities (Daniel Veillard)
+
+ - Bug Fixes:
+ fix memory leak xml header encoding field with XML_PARSE_IGNORE_ENC (Bart De Schuymer),
+ xmlmemory: handle realloc properly (Yegor Yefremov),
+ Python generator bug raised by the const change (Daniel Veillard),
+ Windows Critical sections not released correctly (Daniel Veillard),
+ Parser error on repeated recursive entity expansion containing &lt; (Daniel Veillard),
+ xpointer : fixing Null Pointers (Gaurav Gupta),
+ Remove Unnecessary Null check in xpointer.c (Gaurav Gupta),
+ parser bug on misformed namespace attributes (Dennis Filder),
+ Pointer dereferenced before null check (Daniel Veillard),
+ Leak of struct addrinfo in xmlNanoFTPConnect() (Gaurav Gupta),
+ Possible overflow in HTMLParser.c (Daniel Veillard),
+ python/tests/sync.py assumes Python dictionaries are ordered (John Beck),
+ Fix Enum check and missing break (Gaurav Gupta),
+ xmlIO: Handle error returns from dup() (Philip Withnall),
+ Fix a problem properly saving URIs (Daniel Veillard),
+ wrong error column in structured error when parsing attribute values (Juergen Keil),
+ wrong error column in structured error when skipping whitespace in xml decl (Juergen Keil),
+ no error column in structured error handler for xml schema validation errors (Juergen Keil),
+ Couple of Missing Null checks (Gaurav Gupta),
+ Add couple of missing Null checks (Daniel Veillard),
+ xmlschemastypes: Fix potential array overflow (Philip Withnall),
+ runtest: Fix a memory leak on parse failure (Philip Withnall),
+ xmlIO: Fix an FD leak on gzdopen() failure (Philip Withnall),
+ xmlcatalog: Fix a memory leak on quit (Philip Withnall),
+ HTMLparser: Correctly initialise a stack allocated structure (Philip Withnall),
+ Check for tmon in _xmlSchemaDateAdd() is incorrect (David Kilzer),
+ Avoid Possible Null Pointer in trio.c (Gaurav Gupta),
+ Fix processing in SAX2 in case of an allocation failure (Daniel Veillard),
+ XML Shell command "cd" does not handle "/" at end of path (Daniel Veillard),
+ Fix various Missing Null checks (Gaurav Gupta),
+ Fix a potential NULL dereference (Daniel Veillard),
+ Add a couple of misisng check in xmlRelaxNGCleanupTree (Gaurav Gupta),
+ Add a missing argument check (Gaurav Gupta),
+ Adding a check in case of allocation error (Gaurav Gupta),
+ xmlSaveUri() incorrectly recomposes URIs with rootless paths (Dennis Filder),
+ Adding some missing NULL checks (Gaurav),
+ Fixes for xmlInitParserCtxt (Daniel Veillard),
+ Fix regressions introduced by CVE-2014-0191 patch (Daniel Veillard),
+ erroneously ignores a validation error if no error callback set (Daniel Veillard),
+ xmllint was not parsing the --c14n11 flag (Sérgio Batista),
+ Avoid Possible null pointer dereference in memory debug mode (Gaurav),
+ Avoid Double Null Check (Gaurav),
+ Restore context size and position after XPATH_OP_ARG (Nick Wellnhofer),
+ Fix xmlParseInNodeContext() if node is not element (Daniel Veillard),
+ Avoid a possible NULL pointer dereference (Gaurav),
+ Fix xmlTextWriterWriteElement when a null content is given (Daniel Veillard),
+ Fix an typo 'onrest' in htmlScriptAttributes (Daniel Veillard),
+ fixing a ptotential uninitialized access (Daniel Veillard),
+ Fix an fd leak in an error case (Daniel Veillard),
+ Missing initialization for the catalog module (Daniel Veillard),
+ Handling of XPath function arguments in error case (Nick Wellnhofer),
+ Fix a couple of missing NULL checks (Gaurav),
+ Avoid a possibility of dangling encoding handler (Gaurav),
+ Fix HTML push parser to accept HTML_PARSE_NODEFDTD (Arnold Hendriks),
+ Fix a bug loading some compressed files (Mike Alexander),
+ Fix XPath node comparison bug (Gaurav),
+ Type mismatch in xmlschemas.c (Gaurav),
+ Type mismatch in xmlschemastypes.c (Gaurav),
+ Avoid a deadcode in catalog.c (Daniel Veillard),
+ run close socket on Solaris, same as we do on other platforms (Denis Pauk),
+ Fix pointer dereferenced before null check (Gaurav),
+ Fix a potential NULL dereference in tree code (Daniel Veillard),
+ Fix potential NULL pointer dereferences in regexp code (Gaurav),
+ xmllint --pretty crashed without following numeric argument (Tim Galeckas),
+ Fix XPath expressions of the form '@ns:*' (Nick Wellnhofer),
+ Fix XPath '//' optimization with predicates (Nick Wellnhofer),
+ Clear up a potential NULL dereference (Daniel Veillard),
+ Fix a possible NULL dereference (Gaurav),
+ Avoid crash if allocation fails (Daniel Veillard),
+ Remove occasional leading space in XPath number formatting (Daniel Veillard),
+ Fix handling of mmap errors (Daniel Veillard),
+ Catch malloc error and exit accordingly (Daniel Veillard),
+ missing else in xlink.c (Ami Fischman),
+ Fix a parsing bug on non-ascii element and CR/LF usage (Daniel Veillard),
+ Fix a regression in xmlGetDocCompressMode() (Daniel Veillard),
+ properly quote the namespace uris written out during c14n (Aleksey Sanin),
+ Remove premature XInclude check on URI being relative (Alexey Neyman),
+ Fix missing break on last() function for attributes (dcb),
+ Do not URI escape in server side includes (Romain Bondue),
+ Fix an error in xmlCleanupParser (Alexander Pastukhov)
+
+ - Documentation:
+ typo in error messages "colon are forbidden from..." (Daniel Veillard),
+ Fix a link to James SAX documentation old page (Daniel Veillard),
+ Fix typos in relaxng.c (Jan Pokorný),
+ Fix a doc typo (Daniel Veillard),
+ Fix typos in {tree,xpath}.c (errror) (Jan Pokorný),
+ Add limitations about encoding conversion (Daniel Veillard),
+ Fix typos in xmlschemas{,types}.c (Jan Pokorný),
+ Fix incorrect spelling entites->entities (Jan Pokorný),
+ Forgot to document 2.9.1 release, regenerate docs (Daniel Veillard)
+
+ - Portability:
+ AC_CONFIG_FILES and executable bit (Roumen Petrov),
+ remove HAVE_CONFIG_H dependency in testlimits.c (Roumen Petrov),
+ fix some tabs mixing incompatible with python3 (Roumen Petrov),
+ Visual Studio 14 CTP defines snprintf() (Francis Dupont),
+ OS400: do not try to copy unexisting doc files (Patrick Monnerat),
+ OS400: use either configure.ac or configure.in. (Patrick Monnerat),
+ os400: make-src.sh: create physical file with target CCSID (Patrick Monnerat),
+ OS400: Add some more C macros equivalent procedures. (Patrick Monnerat),
+ OS400: use C macros to implement equivalent RPG support procedures. (Patrick Monnerat),
+ OS400: implement XPath macros as procedures for ILE/RPG support. (Patrick Monnerat),
+ OS400: include in distribution tarball. (Patrick Monnerat),
+ OS400: Add README: compilation directives and OS/400 specific stuff. (Patrick Monnerat),
+ OS400: Add compilation scripts. (Patrick Monnerat),
+ OS400: ILE RPG language header files. (Patrick Monnerat),
+ OS400: implement some macros as functions for ILE/RPG language support (that as no macros). (Patrick Monnerat),
+ OS400: UTF8<-->EBCDIC wrappers for system and external library calls (Patrick Monnerat),
+ OS400: Easy character transcoding support (Patrick Monnerat),
+ OS400: iconv functions compatibility wrappers and table builder. (Patrick Monnerat),
+ OS400: create architecture directory. Implement dlfcn emulation. (Patrick Monnerat),
+ Fix building when configuring without xpath and xptr (Daniel Veillard),
+ configure: Add --with-python-install-dir (Jonas Eriksson),
+ Fix compilation with minimum and xinclude. (Nicolas Le Cam),
+ Compile out use of xmlValidateNCName() when not available. (Nicolas Le Cam),
+ Fix compilation with minimum and schematron. (Nicolas Le Cam),
+ Legacy needs xmlSAX2StartElement() and xmlSAX2EndElement(). (Nicolas Le Cam),
+ Don't use xmlValidateName() when not available. (Nicolas Le Cam),
+ Fix a portability issue on Windows (Longstreth Jon),
+ Various portability patches for OpenVMS (Jacob (Jouk) Jansen),
+ Use specific macros for portability to OS/400 (Patrick Monnerat),
+ Add macros needed for OS/400 portability (Patrick Monnerat),
+ Portability patch for fopen on OS/400 (Patrick Monnerat),
+ Portability fixes for OS/400 (Patrick Monnerat),
+ Improve va_list portability (Patrick Monnerat),
+ Portability fix (Patrick Monnerat),
+ Portability fix (Patrick Monnerat),
+ Generic portability fix (Patrick Monnerat),
+ Shortening lines in headers (Patrick Monnerat),
+ build: Use pkg-config to find liblzma in preference to AC_CHECK_LIB (Philip Withnall),
+ build: Add @LZMA_LIBS@ to libxml’s pkg-config files (Philip Withnall),
+ fix some tabs mixing incompatible with python3 (Daniel Veillard),
+ add additional defines checks for support "./configure --with-minimum" (Denis Pauk),
+ Another round of fixes for older versions of Python (Arfrever Frehtes Taifersar Arahesis),
+ python: fix drv_libxml2.py for python3 compatibility (Alexandre Rostovtsev),
+ python: Fix compiler warnings when building python3 bindings (Armin K),
+ Fix for compilation with python 2.6.8 (Petr Sumbera)
+
+ - Improvements:
+ win32/libxml2.def.src after rebuild in doc (Roumen Petrov),
+ elfgcchack.h: more legacy needs xmlSAX2StartElement() and xmlSAX2EndElement() (Roumen Petrov),
+ elfgcchack.h: add xmlXPathNodeEval and xmlXPathSetContextNode (Roumen Petrov),
+ Provide cmake module (Samuel Martin),
+ Fix a couple of issues raised by make dist (Daniel Veillard),
+ Fix and add const qualifiers (Kurt Roeckx),
+ Preparing for upcoming release of 2.9.2 (Daniel Veillard),
+ Fix zlib and lzma libraries check via command line (Dmitriy),
+ wrong error column in structured error when parsing end tag (Juergen Keil),
+ doc/news.html: small update to avoid line join while generating NEWS. (Patrick Monnerat),
+ Add methods for python3 iterator (Ron Angeles),
+ Support element node traversal in document fragments. (Kyle VanderBeek),
+ xmlNodeSetName: Allow setting the name to a substring of the currently set name (Tristan Van Berkom),
+ Added macros for argument casts (Eric Zurcher),
+ adding init calls to xml and html Read parsing entry points (Daniel Veillard),
+ Get rid of 'REPLACEMENT CHARACTER' Unicode chars in xmlschemas.c (Jan Pokorný),
+ Implement choice for name classes on attributes (Shaun McCance),
+ Two small namespace tweaks (Daniel Veillard),
+ xmllint --memory should fail on empty files (Daniel Veillard),
+ Cast encoding name to char pointer to match arg type (Nikolay Sivov)
+
+ - Cleanups:
+ Removal of old configure.in (Daniel Veillard),
+ Unreachable code in tree.c (Gaurav Gupta),
+ Remove a couple of dead conditions (Gaurav Gupta),
+ Avoid some dead code and cleanup in relaxng.c (Gaurav),
+ Drop not needed checks (Denis Pauk),
+ Fix a wrong test (Daniel Veillard)
+
+
+
+2.9.1: Apr 19 2013:
+ - Features:
+ Support for Python3 (Daniel Veillard),
+ Add xmlXPathSetContextNode and xmlXPathNodeEval (Alex Bligh)
+
+ - Documentation:
+ Add documentation for xmllint --xpath (Daniel Veillard),
+ Fix the URL of the SAX documentation from James (Daniel Veillard),
+ Fix spelling of "length". (Michael Wood)
+
+ - Portability:
+ Fix python bindings with versions older than 2.7 (Daniel Veillard),
+ rebuild docs:Makefile.am (Roumen Petrov),
+ elfgcchack.h after rebuild in doc (Roumen Petrov),
+ elfgcchack for buf module (Roumen Petrov),
+ Fix a uneeded and wrong extra link parameter (Daniel Veillard),
+ Few cleanup patches for Windows (Denis Pauk),
+ Fix rpmbuild --nocheck (Mark Salter),
+ Fix for win32/configure.js and WITH_THREAD_ALLOC (Daniel Richard),
+ Fix Broken multi-arch support in xml2-config (Daniel Veillard),
+ Fix a portability issue for GCC < 3.4.0 (Daniel Veillard),
+ Windows build fixes (Daniel Richard),
+ Fix a thread portability problem (Friedrich Haubensak),
+ Downgrade autoconf requirement to 2.63 (Daniel Veillard)
+
+ - Bug Fixes:
+ Fix a linking error for python bindings (Daniel Veillard),
+ Fix a couple of return without value (Jüri Aedla),
+ Improve the hashing functions (Daniel Franke),
+ Improve handling of xmlStopParser() (Daniel Veillard),
+ Remove risk of lockup in dictionary initialization (Daniel Veillard),
+ Activate detection of encoding in external subset (Daniel Veillard),
+ Fix an output buffer flushing conversion bug (Mikhail Titov),
+ Fix an old bug in xmlSchemaValidateOneElement (Csaba László),
+ Fix configure cannot remove messages (Gilles Espinasse),
+ fix schema validation in combination with xsi:nil (Daniel Veillard),
+ xmlCtxtReadFile doesn't work with literal IPv6 URLs (Steve Wolf),
+ Fix a few problems with setEntityLoader (Alexey Neyman),
+ Detect excessive entities expansion upon replacement (Daniel Veillard),
+ Fix the flushing out of raw buffers on encoding conversions (Daniel,
+Veillard),
+ Fix some buffer conversion issues (Daniel Veillard),
+ When calling xmlNodeDump make sure we grow the buffer quickly (Daniel,
+Veillard),
+ Fix an error in the progressive DTD parsing code (Dan Winship),
+ xmllint should not load DTD by default when using the reader (Daniel,
+Veillard),
+ Try IBM-037 when looking for EBCDIC handlers (Petr Sumbera),
+ Fix potential out of bound access (Daniel Veillard),
+ Fix large parse of file from memory (Daniel Veillard),
+ Fix a bug in the nsclean option of the parser (Daniel Veillard),
+ Fix a regression in 2.9.0 breaking validation while streaming (Daniel,
+Veillard),
+ Remove potential calls to exit() (Daniel Veillard)
+
+ - Improvements:
+ Regenerated API, and testapi, rebuild documentation (Daniel Veillard),
+ Fix tree iterators broken by 2to3 script (Daniel Veillard),
+ update all tests for Python3 and Python2 (Daniel Veillard),
+ A few more fixes for python 3 affecting libxml2.py (Daniel Veillard),
+ Fix compilation on Python3 (Daniel Veillard),
+ Converting apibuild.py to python3 (Daniel Veillard),
+ First pass at starting porting to python3 (Daniel Veillard),
+ updated configure.in for python3 (Daniel Veillard),
+ Add support for xpathRegisterVariable in Python (Shaun McCance),
+ Added a regression tests from bug 694228 data (Daniel Veillard),
+ Cache presence of '<' in entities content (Daniel Veillard),
+ Avoid extra processing on entities (Daniel Veillard),
+ Python binding for xmlRegisterInputCallback (Alexey Neyman),
+ Python bindings: DOM casts everything to xmlNode (Alexey Neyman),
+ Define LIBXML_THREAD_ALLOC_ENABLED via xmlversion.h (Tim Starling),
+ Adding streaming validation to runtest checks (Daniel Veillard),
+ Add a --pushsmall option to xmllint (Daniel Veillard)
+
+ - Cleanups:
+ Switched comment in file to UTF-8 encoding (Daniel Veillard),
+ Extend gitignore (Daniel Veillard),
+ Silent the new python test on input (Alexey Neyman),
+ Cleanup of a duplicate test (Daniel Veillard),
+ Cleanup on duplicate test expressions (Daniel Veillard),
+ Fix compiler warning after 153cf15905cf4ec080612ada6703757d10caba1e (Patrick,
+Gansterer),
+ Spec cleanups and a fix for multiarch support (Daniel Veillard),
+ Silence a clang warning (Daniel Veillard),
+ Cleanup the Copyright to be pure MIT Licence wording (Daniel Veillard),
+ rand_seed should be static in dict.c (Wouter Van Rooy),
+ Fix typos in parser comments (Jan Pokorný)
+
+
+
+2.9.0: Sep 11 2012:
+ - Features:
+ A few new API entry points,
+ More resilient push parser mode,
+ A lot of portability improvement,
+ Faster XPath evaluation
+
+ - Documentation:
+ xml2-config.1 markup error (Christian Weisgerber),
+ libxml(3) manpage typo fix (John Bradshaw),
+ More cleanups to the documentation part of libxml2 (Daniel Richard G)
+
+ - Portability:
+ Bug 676544 - fails to build with --without-sax1 (Akira TAGOH),
+ fix builds not having stdint.h (Rob Richards),
+ GetProcAddressA is available only on WinCE (Daniel Veillard),
+ More updates and cleanups on autotools and Makefiles (Daniel Richard G),
+ More changes for Win32 compilation (Eric Zurcher),
+ Basic changes for Win32 builds of release 2.9.0: compile buf.c (Eric Zurcher),
+ Bundles all generated files for python into the distribution (Daniel Richard G),
+ Fix compiler warnings of wincecompat.c (Patrick Gansterer),
+ Fix non __GNUC__ build (Patrick Gansterer),
+ Fix windows unicode build (Patrick Gansterer),
+ clean redefinition of {v}snprintf in C-source (Roumen Petrov),
+ use xmlBuf... if DEBUG_INPUT is defined (Roumen Petrov),
+ fix runtests to use pthreads support for various Unix platforms (Daniel Richard G),
+ Various "make distcheck" and portability fixups 2nd part (Daniel Richard G),
+ Various "make distcheck" and portability fixups (Daniel Richard G),
+ Fix compilation on older Visual Studio (Daniel Veillard)
+
+ - Bug Fixes:
+ Change the XPath code to percolate allocation errors (Daniel Veillard),
+ Fix reuse of xmlInitParser (Daniel Veillard),
+ Fix potential crash on entities errors (Daniel Veillard),
+ initialize var (Rob Richards),
+ Fix the XPath arity check to also check the XPath stack limits (Daniel Veillard),
+ Fix problem with specific and generic error handlers (Pietro Cerutti),
+ Avoid a potential infinite recursion (Daniel Veillard),
+ Fix an XSD error when generating internal automata (Daniel Veillard),
+ Patch for xinclude of text using multibyte characters (Vitaly Ostanin),
+ Fix a segfault on XSD validation on pattern error (Daniel Veillard),
+ Fix missing xmlsave.h module which was ignored in recent builds (Daniel Veillard),
+ Add a missing element check (Daniel Veillard),
+ Adding various checks on node type though the API (Daniel Veillard),
+ Namespace nodes can't be unlinked with xmlUnlinkNode (Daniel Veillard),
+ Fix make dist to include new private header files (Daniel Veillard),
+ More fixups on the push parser behaviour (Daniel Veillard),
+ Strengthen behaviour of the push parser in problematic situations (Daniel Veillard),
+ Enforce XML_PARSER_EOF state handling through the parser (Daniel Veillard),
+ Fixup limits parser (Daniel Veillard),
+ Do not fetch external parsed entities (Daniel Veillard),
+ Fix an error in previous commit (Aron Xu),
+ Fix entities local buffers size problems (Daniel Veillard),
+ Fix parser local buffers size problems (Daniel Veillard),
+ Fix a failure to report xmlreader parsing failures (Daniel Veillard)
+
+ - Improvements:
+ Keep libxml2.syms when running "make distclean" (Daniel Veillard),
+ Allow to set the quoting character of an xmlWriter (Csaba Raduly),
+ Keep non-significant blanks node in HTML parser (Daniel Veillard),
+ Add a forbidden variable error number and message to XPath (Daniel Veillard),
+ Support long path names on WNT (Michael Stahl),
+ Improve HTML escaping of attribute on output (Daniel Veillard),
+ Handle ICU_LIBS as LIBADD, not LDFLAGS to prevent linking errors (Arfrever Frehtes Taifersar Arahesis),
+ Switching XPath node sorting to Timsort (Vojtech Fried),
+ Optimizing '//' in XPath expressions (Nick Wellnhofer),
+ Expose xmlBufShrink in the public tree API (Daniel Veillard),
+ Visible HTML elements close the head tag (Conrad Irwin),
+ Fix file and line report for XSD SAX and reader streaming validation (Daniel Veillard),
+ Fix const qualifyer to definition of xmlBufferDetach (Daniel Veillard),
+ minimize use of HAVE_CONFIG_H (Roumen Petrov),
+ fixup regression in Various "make distcheck" and portability fixups (Roumen Petrov),
+ Add support for big line numbers in error reporting (Daniel Veillard),
+ Avoid using xmlBuffer for serialization (Daniel Veillard),
+ Improve compatibility between xmlBuf and xmlBuffer (Daniel Veillard),
+ Provide new accessors for xmlOutputBuffer (Daniel Veillard),
+ Improvements for old buffer compatibility (Daniel Veillard),
+ Expand the limit test program (Daniel Veillard),
+ Improve error reporting on parser errors (Daniel Veillard),
+ Implement some default limits in the XPath module (Daniel Veillard),
+ Introduce some default parser limits (Daniel Veillard),
+ Cleanups and new limit APIs for dictionaries (Daniel Veillard),
+ Fixup for buf.c (Daniel Veillard),
+ Cleanup URI module memory allocation code (Daniel Veillard),
+ Extend testlimits (Daniel Veillard),
+ More avoid quadratic behaviour (Daniel Veillard),
+ Impose a reasonable limit on PI size (Daniel Veillard),
+ first version of testlimits new test (Daniel Veillard),
+ Avoid quadratic behaviour in some push parsing cases (Daniel Veillard),
+ Impose a reasonable limit on comment size (Daniel Veillard),
+ Impose a reasonable limit on attribute size (Daniel Veillard),
+ Harden the buffer code and make it more compatible (Daniel Veillard),
+ More cleanups for input/buffers code (Daniel Veillard),
+ Cleanup function xmlBufResetInput(), to set input from Buffer (Daniel Veillard)
+ Swicth the test program for characters to new input buffers (Daniel Veillard),
+ Convert the HTML tree module to the new buffers (Daniel Veillard),
+ Convert of the HTML parser to new input buffers (Daniel Veillard),
+ Convert the writer to new output buffer and save APIs (Daniel Veillard),
+ Convert XMLReader to the new input buffers (Daniel Veillard),
+ New saving functions using xmlBuf and conversion (Daniel Veillard),
+ Provide new xmlBuf based saving functions (Daniel Veillard),
+ Convert XInclude to the new input buffers (Daniel Veillard),
+ Convert catalog code to the new input buffers (Daniel Veillard),
+ Convert C14N to the new Input buffer (Daniel Veillard),
+ Convert xmlIO.c to the new input and output buffers (Daniel Veillard),
+ Convert XML parser to the new input buffers (Daniel Veillard),
+ Incompatible change to the Input and Output buffers (Daniel Veillard),
+ Adding new encoding function to deal with the new structures (Daniel Veillard),
+ Convert XPath to xmlBuf (Daniel Veillard),
+ Adding a new buf module for buffers (Daniel Veillard),
+ Memory error within SAX2 reuse common framework (Daniel Veillard),
+ Fix xmllint --xpath node initialization (Daniel Veillard)
+
+ - Cleanups:
+ Various cleanups to avoid compiler warnings (Daniel Veillard),
+ Big space and tab cleanup (Daniel Veillard),
+ Followup to LibXML2 docs/examples cleanup patch (Daniel Veillard),
+ Second round of cleanups for LibXML2 docs/examples (Daniel Richard),
+ Remove all .cvsignore as they are not used anymore (Daniel Veillard),
+ Fix a Timsort function helper comment (Daniel Veillard),
+ Small cleanup for valgrind target (Daniel Veillard),
+ Patch for portability of latin characters in C files (Daniel Veillard),
+ Cleanup some of the parser code (Daniel Veillard),
+ Fix a variable name in comment (Daniel Veillard),
+ Regenerated testapi.c (Daniel Veillard),
+ Regenerating docs and API files (Daniel Veillard),
+ Small cleanup of unused variables in test (Daniel Veillard),
+ Expand .gitignore with more files (Daniel Veillard)
+
+
+
+2.8.0: May 23 2012:
+ - Features:
+ add lzma compression support (Anders F Bjorklund)
+
+ - Documentation:
+ xmlcatalog: Add uri and delegateURI to possible add types in man page. (Ville Skyttä),
+ Update README.tests (Daniel Veillard),
+ URI handling code is not OOM resilient (Daniel Veillard),
+ Fix an error in comment (Daniel Veillard),
+ Fixed bug #617016 (Daniel Mustieles),
+ Fixed two typos in the README document (Daniel Neel),
+ add generated html files (Anders F Bjorklund),
+ Clarify the need to use xmlFreeNode after xmlUnlinkNode (Daniel Veillard),
+ Improve documentation a bit (Daniel Veillard),
+ Updated URL for lxml python bindings (Daniel Veillard)
+
+ - Portability:
+ Restore code for Windows compilation (Daniel Veillard),
+ Remove git error message during configure (Christian Dywan),
+ xmllint: Build fix for endTimer if !defined(HAVE_GETTIMEOFDAY) (Patrick R. Gansterer),
+ remove a bashism in confgure.in (John Hein),
+ undef ERROR if already defined (Patrick R. Gansterer),
+ Fix library problems with mingw-w64 (Michael Cronenworth),
+ fix windows build. ifdef addition from bug 666491 makes no sense (Rob Richards),
+ prefer native threads on win32 (Sam Thursfield),
+ Allow to compile with Visual Studio 2010 (Thomas Lemm),
+ Fix mingw's snprintf configure check (Andoni Morales),
+ fixed a 64bit big endian issue (Marcus Meissner),
+ Fix portability failure if netdb.h lacks NO_ADDRESS (Daniel Veillard),
+ Fix windows build from lzma addition (Rob Richards),
+ autogen: Only check for libtoolize (Colin Walters),
+ Fix the Windows build files (Patrick von Reth),
+ 634846 Remove a linking option breaking Windows VC10 (Daniel Veillard),
+ 599241 fix an initialization problem on Win64 (Andrew W. Nosenko),
+ fix win build (Rob Richards)
+
+ - Bug fixes:
+ Part for rand_r checking missing (Daniel Veillard),
+ Cleanup on randomization (Daniel Veillard),
+ Fix undefined reference in python module (Pacho Ramos),
+ Fix a race in xmlNewInputStream (Daniel Veillard),
+ Fix weird streaming RelaxNG errors (Noam),
+ Fix various bugs in new code raised by the API checking (Daniel Veillard),
+ Fix various problems with "make dist" (Daniel Veillard),
+ Fix a memory leak in the xzlib code (Daniel Veillard),
+ HTML parser error with <noscript> in the <head> (Denis Pauk),
+ XSD: optional element in complex type extension (Remi Gacogne),
+ Fix html serialization error and htmlSetMetaEncoding() (Daniel Veillard),
+ Fix a wrong return value in previous patch (Daniel Veillard),
+ Fix an uninitialized variable use (Daniel Veillard),
+ Fix a compilation problem with --minimum (Brandon Slack),
+ Remove redundant and ungarded include of resolv.h (Daniel Veillard),
+ xinclude with parse="text" does not use the entity loader (Shaun McCance),
+ Allow to parse 1 byte HTML files (Denis Pauk),
+ Patch that fixes the skipping of the HTML_PARSE_NOIMPLIED flag (Martin Schröder),
+ Avoid memory leak if xmlParserInputBufferCreateIO fails (Lin Yi-Li),
+ Prevent an infinite loop when dumping a node with encoding problems (Timothy Elliott),
+ xmlParseNodeInContext problems with an empty document (Tim Elliott),
+ HTML element position is not detected propperly (Pavel Andrejs),
+ Fix an off by one pointer access (Jüri Aedla),
+ Try to fix a problem with entities in SAX mode (Daniel Veillard),
+ Fix a crash with xmllint --path on empty results (Daniel Veillard),
+ Fixed bug #667946 (Daniel Mustieles),
+ Fix a logic error in Schemas Component Constraints (Ryan Sleevi),
+ Fix a wrong enum type use in Schemas Types (Nico Weber),
+ Fix SAX2 builder in case of undefined attributes namespace (Daniel Veillard),
+ Fix SAX2 builder in case of undefined element namespaces (Daniel Veillard),
+ fix reference to STDOUT_FILENO on MSVC (Tay Ray Chuan),
+ fix a pair of possible out of array char references (Daniel Veillard),
+ Fix an allocation error when copying entities (Daniel Veillard),
+ Make sure the parser returns when getting a Stop order (Chris Evans),
+ Fix some potential problems on reallocation failures(parser.c) (Xia Xinfeng),
+ Fix a schema type duration comparison overflow (Daniel Veillard),
+ Fix an unimplemented part in RNG value validation (Daniel Veillard),
+ Fix missing error status in XPath evaluation (Daniel Veillard),
+ Hardening of XPath evaluation (Daniel Veillard),
+ Fix an off by one error in encoding (Daniel Veillard),
+ Fix RELAX NG include bug #655288 (Shaun McCance),
+ Fix XSD validation bug #630130 (Toyoda Eizi),
+ Fix some potential problems on reallocation failures (Chris Evans),
+ __xmlRaiseError: fix use of the structured callback channel (Dmitry V. Levin),
+ __xmlRaiseError: fix the structured callback channel's data initialization (Dmitry V. Levin),
+ Fix memory corruption when xmlParseBalancedChunkMemoryInternal is called from xmlParseBalancedChunk (Rob Richards),
+ Small fix for previous commit (Daniel Veillard),
+ Fix a potential freeing error in XPath (Daniel Veillard),
+ Fix a potential memory access error (Daniel Veillard),
+ Reactivate the shared library versionning script (Daniel Veillard)
+
+ - Improvements:
+ use mingw C99 compatible functions {v}snprintf instead those from MSVC runtime (Roumen Petrov),
+ New symbols added for the next release (Daniel Veillard),
+ xmlTextReader bails too quickly on error (Andy Lutomirski),
+ Use a hybrid allocation scheme in xmlNodeSetContent (Conrad Irwin),
+ Use buffers when constructing string node lists. (Conrad Irwin),
+ Add HTML parser support for HTML5 meta charset encoding declaration (Denis Pauk),
+ wrong message for double hyphen in comment XML error (Bryan Henderson),
+ Fix "make tst" to grab lzma lib too (Daniel Veillard),
+ Add "whereis" command to xmllint shell (Ryan),
+ Improve xmllint shell (Ryan),
+ add function xmlTextReaderRelaxNGValidateCtxt() (Noam Postavsky),
+ Add --system support to autogen.sh (Daniel Veillard),
+ Add hash randomization to hash and dict structures (Daniel Veillard),
+ included xzlib in dist (Anders F Bjorklund),
+ move xz/lzma helpers to separate included files (Anders F Bjorklund),
+ add generated devhelp files (Anders F Bjorklund),
+ add XML_WITH_LZMA to api (Anders F Bjorklund),
+ autogen.sh: Honor NOCONFIGURE environment variable (Colin Walters),
+ Improve the error report on undefined REFs (Daniel Veillard),
+ Add exception for new W3C PI xml-model (Daniel Veillard),
+ Add options to ignore the internal encoding (Daniel Veillard),
+ testapi: use the right type for the check (Stefan Kost),
+ various: handle return values of write calls (Stefan Kost),
+ testWriter: xmlTextWriterWriteFormatElement wants an int instead of a long int (Stefan Kost),
+ runxmlconf: update to latest testsuite version (Stefan Kost),
+ configure: add -Wno-long-long to CFLAGS (Stefan Kost),
+ configure: support silent automake rules if possible (Stefan Kost),
+ xmlmemory: add a cast as size_t has no portable printf modifier (Stefan Kost),
+ __xmlRaiseError: remove redundant schannel initialization (Dmitry V. Levin),
+ __xmlRaiseError: do cheap code check early (Dmitry V. Levin)
+
+ - Cleanups:
+ Cleanups before 2.8.0-rc2 (Daniel Veillard),
+ Avoid an extra operation (Daniel Veillard),
+ Remove vestigial de-ANSI-fication support. (Javier Jardón),
+ autogen.sh: Fix typo (Javier Jardón),
+ Do not use unsigned but unsigned int (Daniel Veillard),
+ Remove two references to u_short (Daniel Veillard),
+ Fix -Wempty-body warning from clang (Nico Weber),
+ Cleanups of lzma support (Daniel Veillard),
+ Augment the list of ignored files (Daniel Veillard),
+ python: remove unused variable (Stefan Kost),
+ python: flag two unused args (Stefan Kost),
+ configure: acconfig.h is deprecated since autoconf-2.50 (Stefan Kost),
+ xpath: remove unused variable (Stefan Kost)
+
+
+
+2.7.8: Nov 4 2010:
+ - Features:
+ 480323 add code to plug in ICU converters by default (Giuseppe Iuculano),
+ Add xmlSaveOption XML_SAVE_WSNONSIG (Adam Spragg)
+
+ - Documentation:
+ Fix devhelp documentation installation (Mike Hommey),
+ Fix web site encoding problems (Daniel Veillard),
+ Fix a couple of typo in HTML parser error messages (Michael Day),
+ Forgot to update the news page for 0.7.7 (Daniel Veillard)
+
+ - Portability:
+ 607273 Fix python detection on MSys/Windows (LRN),
+ 614087 Fix Socket API usage to allow Windows64 compilation (Ozkan Sezer),
+ Fix compilation with Clang (Koop Mast),
+ Fix Win32 build (Rob Richards)
+
+ - Bug Fixes:
+ 595789 fix a remaining potential Solaris problem (Daniel Veillard),
+ 617468 fix progressive HTML parsing with style using "'" (Denis Pauk),
+ 616478 Fix xmllint shell write command (Gwenn Kahz),
+ 614005 Possible erroneous HTML parsing on unterminated script (Pierre Belzile),
+ 627987 Fix XSD IDC errors in imported schemas (Jim Panetta),
+ 629325 XPath rounding errors first cleanup (Phil Shafer),
+ 630140 fix iso995x encoding error (Daniel Veillard),
+ make sure htmlCtxtReset do reset the disableSAX field (Daniel Veillard),
+ Fix a change of semantic on XPath preceding and following axis (Daniel Veillard),
+ Fix a potential segfault due to weak symbols on pthreads (Mike Hommey),
+ Fix a leak in XPath compilation (Daniel Veillard),
+ Fix the semantic of XPath axis for namespace/attribute context nodes (Daniel Veillard),
+ Avoid a descriptor leak in catalog loading code (Carlo Bramini),
+ Fix a small bug in XPath evaluation code (Marius Wachtler),
+ Fix handling of XML-1.0 XML namespace declaration (Daniel Veillard),
+ Fix errors in XSD double validation check (Csaba Raduly),
+ Fix handling of apos in URIs (Daniel Veillard),
+ xmlTextReaderReadOuterXml should handle DTD (Rob Richards),
+ Autogen.sh needs to create m4 directory (Rob Richards)
+
+ - Improvements:
+ 606592 update language ID parser to RFC 5646 (Daniel Veillard),
+ Sort python generated stubs (Mike Hommey),
+ Add an HTML parser option to avoid a default doctype (Daniel Veillard)
+
+ - Cleanups:
+ 618831 don't ship generated files in git (Adrian Bunk),
+ Switch from the obsolete mkinstalldirs to AC_PROG_MKDIR_P (Adrian Bunk),
+ Various cleanups on encoding handling (Daniel Veillard),
+ Fix xmllint to use format=1 for default formatting (Adam Spragg),
+ Force _xmlSaveCtxt.format to be 0 or 1 (Adam Spragg),
+ Cleanup encoding pointer comparison (Nikolay Sivov),
+ Small code cleanup on previous patch (Daniel Veillard)
+
+
+
+2.7.7: Mar 15 2010:
+ - Improvements:
+ Adding a --xpath option to xmllint (Daniel Veillard),
+ Make HTML parser non-recursive (Eugene Pimenov)
+
+ - Portability:
+ relaxng.c: cast to allow compilation with sun studio 11 (Ben Walton),
+ Fix build failure on Sparc solaris (Roumen Petrov),
+ use autoreconf in autogen.sh (Daniel Veillard),
+ Fix build with mingw (Roumen Petrov),
+ Upgrade some of the configure and autogen (Daniel Veillard),
+ Fix relaxNG tests in runtest for Windows runtest.c: initialize ret (Rob Richards),
+ Fix a const warning in xmlNodeSetBase (Martin Trappel),
+ Fix python generator to not use deprecated xmllib (Daniel Veillard),
+ Update some automake files (Daniel Veillard),
+ 598785 Fix nanohttp on Windows (spadix)
+
+ - Bug Fixes:
+ libxml violates the zlib interface and crashes (Mark Adler),
+ Fix broken escape behaviour in regexp ranges (Daniel Veillard),
+ Fix missing win32 libraries in libxml-2.0.pc (Volker Grabsch),
+ Fix detection of python linker flags (Daniel Macks),
+ fix build error in libxml2/python (Paul Smith),
+ ChunkParser: Incorrect decoding of small xml files (Raul Hudea),
+ htmlCheckEncoding doesn't update input-end after shrink (Eugene Pimenov),
+ Fix a missing #ifdef (Daniel Veillard),
+ Fix encoding selection for xmlParseInNodeContext (Daniel Veillard),
+ xmlPreviousElementSibling mistake (François Delyon),
+ 608773 add a missing check in xmlGROW (Daniel Veillard),
+ Fix xmlParseInNodeContext for HTML content (Daniel Veillard),
+ Fix lost namespace when copying node * tree.c: reconcile namespace if not found (Rob Richards),
+ Fix some missing commas in HTML element lists (Eugene Pimenov),
+ Correct variable type to unsigned (Nikolay Sivov),
+ Recognize ID attribute in HTML without DOCTYPE (Daniel Veillard),
+ Fix memory leak in xmlXPathEvalExpression() (Martin),
+ Fix an init bug in global.c (Kai Henning),
+ Fix xmlNodeSetBase() comment (Daniel Veillard),
+ Fix broken escape behaviour in regexp ranges (Daniel Veillard),
+ Don't give default HTML boolean attribute values in parser (Daniel Veillard),
+ xmlCtxtResetLastError should reset ctxt-errNo (Daniel Veillard)
+
+ - Cleanups:
+ Cleanup a couple of weirdness in HTML parser (Eugene Pimenov)
+
+
+
2.7.6: Oct 6 2009:
- Bug Fixes:
Restore thread support in default configuration (Andrew W. Nosenko),
@@ -1325,7 +1955,8 @@ http://www.w3.org/TR/xmlschema-2/
code, beware, all
interfaces are likely to change, there is huge holes, it is clearly a work in
progress and don't even think of putting this code in a production system,
-it's actually not compiled in by default. The real fixes are: - a couple of bugs or limitations introduced in 2.4.20
+it's actually not compiled in by default. The real fixes are:
+ - a couple of bugs or limitations introduced in 2.4.20
- patches for Borland C++ and MSC by Igor
- some fixes on XPath strings and conformance patches by Richard
Jinks
@@ -1567,7 +2198,8 @@ it's actually not compiled in by default. The real fixes are: - a couple of bu
2.3.9: May 19 2001:
-Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #54891 and another patch from Jonas Borgström
+Lots of bugfixes, and added a basic SGML catalog support:
+ - HTML push bugfix #54891 and another patch from Jonas Borgstrom
- some serious speed optimization again
- some documentation cleanups
- trying to get better linking on Solaris (-R)
@@ -1809,7 +2441,8 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
about &#38; charref parsing
- 2.1.0 also ease the upgrade from libxml v1 to the recent version. it
also contains numerous fixes and enhancements:
- added xmlStopParser() to stop parsing
+
+ added xmlStopParser() to stop parsing
improved a lot parsing speed when there is large CDATA blocs
includes XPath patches provided by Picdar Technology
tried to fix as much as possible DTD validation and namespace
@@ -1817,6 +2450,7 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
output to a given encoding has been added/tested
lot of various fixes
+
- added xmlStopParser() to stop parsing
- improved a lot parsing speed when there is large CDATA blocs
- includes XPath patches provided by Picdar Technology
@@ -1865,7 +2499,8 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
upgrade page
- Some interfaces may changes (especially a bit about encoding).
- the updates includes:
- fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
+
+ fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
handled now
Better handling of entities, especially well-formedness checking
and proper PEref extensions in external subsets
@@ -1874,6 +2509,7 @@ Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #
change
structures to accommodate DOM
+
- fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
handled now
- Better handling of entities, especially well-formedness checking
diff --git a/SAX.c b/SAX.c
index 8e5d460..292af57 100644
--- a/SAX.c
+++ b/SAX.c
@@ -41,7 +41,7 @@
void
initxmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr, int warning)
{
-
+
if(hdlr->initialized == 1)
return;
diff --git a/SAX2.c b/SAX2.c
index 126a79f..ffef3e1 100644
--- a/SAX2.c
+++ b/SAX2.c
@@ -45,7 +45,7 @@
*> values "system" and "public". I have made the default be "system" to
*> match yours.
*/
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -57,12 +57,29 @@
*/
static void
xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt, const char *msg) {
+ xmlStructuredErrorFunc schannel = NULL;
+ const char *str1 = "out of memory\n";
+
if (ctxt != NULL) {
- if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
- ctxt->sax->error(ctxt->userData, "%s: out of memory\n", msg);
+ ctxt->errNo = XML_ERR_NO_MEMORY;
+ if ((ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC))
+ schannel = ctxt->sax->serror;
+ __xmlRaiseError(schannel,
+ ctxt->vctxt.error, ctxt->vctxt.userData,
+ ctxt, NULL, XML_FROM_PARSER, XML_ERR_NO_MEMORY,
+ XML_ERR_ERROR, NULL, 0, (const char *) str1,
+ NULL, NULL, 0, 0,
+ msg, (const char *) str1, NULL);
ctxt->errNo = XML_ERR_NO_MEMORY;
ctxt->instate = XML_PARSER_EOF;
ctxt->disableSAX = 1;
+ } else {
+ __xmlRaiseError(schannel,
+ NULL, NULL,
+ ctxt, NULL, XML_FROM_PARSER, XML_ERR_NO_MEMORY,
+ XML_ERR_ERROR, NULL, 0, (const char *) str1,
+ NULL, NULL, 0, 0,
+ msg, (const char *) str1, NULL);
}
}
@@ -126,7 +143,7 @@ xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
if (ctxt != NULL)
ctxt->errNo = error;
__xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
- XML_ERR_FATAL, NULL, 0,
+ XML_ERR_FATAL, NULL, 0,
(const char *) str1, (const char *) str2,
NULL, 0, 0, msg, str1, str2);
if (ctxt != NULL) {
@@ -157,7 +174,7 @@ xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
if (ctxt != NULL)
ctxt->errNo = error;
__xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
- XML_ERR_WARNING, NULL, 0,
+ XML_ERR_WARNING, NULL, 0,
(const char *) str1, NULL,
NULL, 0, 0, msg, str1);
}
@@ -182,7 +199,7 @@ xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
if (ctxt != NULL)
ctxt->errNo = error;
__xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error,
- XML_ERR_ERROR, NULL, 0,
+ XML_ERR_ERROR, NULL, 0,
(const char *) str1, (const char *) str2,
NULL, 0, 0, msg, str1, str2);
}
@@ -206,7 +223,7 @@ xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
if (ctxt != NULL)
ctxt->errNo = error;
__xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error,
- XML_ERR_WARNING, NULL, 0,
+ XML_ERR_WARNING, NULL, 0,
(const char *) str1, (const char *) str2,
NULL, 0, 0, msg, str1, str2);
}
@@ -240,7 +257,7 @@ xmlSAX2GetSystemId(void *ctx)
{
xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
if ((ctx == NULL) || (ctxt->input == NULL)) return(NULL);
- return((const xmlChar *) ctxt->input->filename);
+ return((const xmlChar *) ctxt->input->filename);
}
/**
@@ -355,7 +372,7 @@ xmlSAX2InternalSubset(void *ctx, const xmlChar *name,
xmlFreeDtd(dtd);
ctxt->myDoc->intSubset = NULL;
}
- ctxt->myDoc->intSubset =
+ ctxt->myDoc->intSubset =
xmlCreateIntSubset(ctxt->myDoc, name, ExternalID, SystemID);
if (ctxt->myDoc->intSubset == NULL)
xmlSAX2ErrMemory(ctxt, "xmlSAX2InternalSubset");
@@ -394,6 +411,7 @@ xmlSAX2ExternalSubset(void *ctx, const xmlChar *name,
xmlParserInputPtr input = NULL;
xmlCharEncoding enc;
int oldcharset;
+ const xmlChar *oldencoding;
/*
* Ask the Entity resolver to load the damn thing
@@ -415,6 +433,8 @@ xmlSAX2ExternalSubset(void *ctx, const xmlChar *name,
oldinputMax = ctxt->inputMax;
oldinputTab = ctxt->inputTab;
oldcharset = ctxt->charset;
+ oldencoding = ctxt->encoding;
+ ctxt->encoding = NULL;
ctxt->inputTab = (xmlParserInputPtr *)
xmlMalloc(5 * sizeof(xmlParserInputPtr));
@@ -425,6 +445,7 @@ xmlSAX2ExternalSubset(void *ctx, const xmlChar *name,
ctxt->inputMax = oldinputMax;
ctxt->inputTab = oldinputTab;
ctxt->charset = oldcharset;
+ ctxt->encoding = oldencoding;
return;
}
ctxt->inputNr = 0;
@@ -470,6 +491,11 @@ xmlSAX2ExternalSubset(void *ctx, const xmlChar *name,
ctxt->inputMax = oldinputMax;
ctxt->inputTab = oldinputTab;
ctxt->charset = oldcharset;
+ if ((ctxt->encoding != NULL) &&
+ ((ctxt->dict == NULL) ||
+ (!xmlDictOwns(ctxt->dict, ctxt->encoding))))
+ xmlFree((xmlChar *) ctxt->encoding);
+ ctxt->encoding = oldencoding;
/* ctxt->wellFormed = oldwellFormed; */
}
}
@@ -574,6 +600,7 @@ xmlSAX2GetEntity(void *ctx, const xmlChar *name)
* parse the external entity
*/
xmlNodePtr children;
+ unsigned long oldnbent = ctxt->nbentities;
val = xmlParseCtxtExternalEntity(ctxt, ret->URI,
ret->ExternalID, &children);
@@ -586,8 +613,11 @@ xmlSAX2GetEntity(void *ctx, const xmlChar *name)
return(NULL);
}
ret->owner = 1;
- if (ret->checked == 0)
- ret->checked = 1;
+ if (ret->checked == 0) {
+ ret->checked = (ctxt->nbentities - oldnbent + 1) * 2;
+ if ((ret->content != NULL) && (xmlStrchr(ret->content, '<')))
+ ret->checked |= 1;
+ }
}
return(ret);
}
@@ -621,8 +651,8 @@ xmlSAX2GetParameterEntity(void *ctx, const xmlChar *name)
/**
* xmlSAX2EntityDecl:
* @ctx: the user data (XML parser context)
- * @name: the entity name
- * @type: the entity type
+ * @name: the entity name
+ * @type: the entity type
* @publicId: The public ID of the entity
* @systemId: The system ID of the entity
* @content: the entity value (without processing).
@@ -657,7 +687,7 @@ xmlSAX2EntityDecl(void *ctx, const xmlChar *name, int type,
base = ctxt->input->filename;
if (base == NULL)
base = ctxt->directory;
-
+
URI = xmlBuildURI(systemId, (const xmlChar *) base);
ent->URI = URI;
}
@@ -666,7 +696,7 @@ xmlSAX2EntityDecl(void *ctx, const xmlChar *name, int type,
systemId, content);
if ((ent == NULL) && (ctxt->pedantic) &&
(ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
- ctxt->sax->warning(ctxt->userData,
+ ctxt->sax->warning(ctxt->userData,
"Entity(%s) already defined in the external subset\n", name);
if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) {
xmlChar *URI;
@@ -676,7 +706,7 @@ xmlSAX2EntityDecl(void *ctx, const xmlChar *name, int type,
base = ctxt->input->filename;
if (base == NULL)
base = ctxt->directory;
-
+
URI = xmlBuildURI(systemId, (const xmlChar *) base);
ent->URI = URI;
}
@@ -691,8 +721,8 @@ xmlSAX2EntityDecl(void *ctx, const xmlChar *name, int type,
* xmlSAX2AttributeDecl:
* @ctx: the user data (XML parser context)
* @elem: the name of the element
- * @fullname: the attribute name
- * @type: the attribute type
+ * @fullname: the attribute name
+ * @type: the attribute type
* @def: the type of default value
* @defaultValue: the attribute default value
* @tree: the tree of enumerated value set
@@ -735,7 +765,7 @@ xmlSAX2AttributeDecl(void *ctx, const xmlChar *elem, const xmlChar *fullname,
(xmlAttributeDefault) def, defaultValue, tree);
else if (ctxt->inSubset == 2)
attr = xmlAddAttributeDecl(&ctxt->vctxt, ctxt->myDoc->extSubset, elem,
- name, prefix, (xmlAttributeType) type,
+ name, prefix, (xmlAttributeType) type,
(xmlAttributeDefault) def, defaultValue, tree);
else {
xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR,
@@ -761,8 +791,8 @@ xmlSAX2AttributeDecl(void *ctx, const xmlChar *elem, const xmlChar *fullname,
/**
* xmlSAX2ElementDecl:
* @ctx: the user data (XML parser context)
- * @name: the element name
- * @type: the element type
+ * @name: the element name
+ * @type: the element type
* @content: the element value tree
*
* An element definition has been parsed
@@ -883,7 +913,7 @@ xmlSAX2UnparsedEntityDecl(void *ctx, const xmlChar *name,
publicId, systemId, notationName);
if ((ent == NULL) && (ctxt->pedantic) &&
(ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
- ctxt->sax->warning(ctxt->userData,
+ ctxt->sax->warning(ctxt->userData,
"Entity(%s) already defined in the internal subset\n", name);
if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) {
xmlChar *URI;
@@ -893,7 +923,7 @@ xmlSAX2UnparsedEntityDecl(void *ctx, const xmlChar *name,
base = ctxt->input->filename;
if (base == NULL)
base = ctxt->directory;
-
+
URI = xmlBuildURI(systemId, (const xmlChar *) base);
ent->URI = URI;
}
@@ -903,7 +933,7 @@ xmlSAX2UnparsedEntityDecl(void *ctx, const xmlChar *name,
publicId, systemId, notationName);
if ((ent == NULL) && (ctxt->pedantic) &&
(ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
- ctxt->sax->warning(ctxt->userData,
+ ctxt->sax->warning(ctxt->userData,
"Entity(%s) already defined in the external subset\n", name);
if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) {
xmlChar *URI;
@@ -913,7 +943,7 @@ xmlSAX2UnparsedEntityDecl(void *ctx, const xmlChar *name,
base = ctxt->input->filename;
if (base == NULL)
base = ctxt->directory;
-
+
URI = xmlBuildURI(systemId, (const xmlChar *) base);
ent->URI = URI;
}
@@ -964,12 +994,12 @@ xmlSAX2StartDocument(void *ctx)
#ifdef LIBXML_HTML_ENABLED
if (ctxt->myDoc == NULL)
ctxt->myDoc = htmlNewDocNoDtD(NULL, NULL);
- ctxt->myDoc->properties = XML_DOC_HTML;
- ctxt->myDoc->parseFlags = ctxt->options;
if (ctxt->myDoc == NULL) {
xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
return;
}
+ ctxt->myDoc->properties = XML_DOC_HTML;
+ ctxt->myDoc->parseFlags = ctxt->options;
#else
xmlGenericError(xmlGenericErrorContext,
"libxml2 built without HTML support\n");
@@ -1048,7 +1078,7 @@ xmlSAX2EndDocument(void *ctx)
}
}
-#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
/**
* xmlSAX2AttributeInternal:
* @ctx: the user data (XML parser context)
@@ -1147,6 +1177,12 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
0,0,0);
ctxt->depth--;
+ if (val == NULL) {
+ xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
+ if (name != NULL)
+ xmlFree(name);
+ return;
+ }
} else {
val = (xmlChar *) value;
}
@@ -1157,12 +1193,12 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
uri = xmlParseURI((const char *)val);
if (uri == NULL) {
if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
- ctxt->sax->warning(ctxt->userData,
+ ctxt->sax->warning(ctxt->userData,
"xmlns: %s not a valid URI\n", val);
} else {
if (uri->scheme == NULL) {
if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
- ctxt->sax->warning(ctxt->userData,
+ ctxt->sax->warning(ctxt->userData,
"xmlns: URI %s is not absolute\n", val);
}
xmlFreeURI(uri);
@@ -1182,7 +1218,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
ctxt->node, prefix, nsret, val);
#endif /* LIBXML_VALID_ENABLED */
- if (name != NULL)
+ if (name != NULL)
xmlFree(name);
if (nval != NULL)
xmlFree(nval);
@@ -1204,7 +1240,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
if (val == NULL) {
xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
xmlFree(ns);
- if (name != NULL)
+ if (name != NULL)
xmlFree(name);
return;
}
@@ -1245,7 +1281,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc,
ctxt->node, prefix, nsret, value);
#endif /* LIBXML_VALID_ENABLED */
- if (name != NULL)
+ if (name != NULL)
xmlFree(name);
if (nval != NULL)
xmlFree(nval);
@@ -1311,7 +1347,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
#ifdef LIBXML_VALID_ENABLED
if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
ctxt->myDoc && ctxt->myDoc->intSubset) {
-
+
/*
* If we don't substitute entities, the validation should be
* done on a value with replaced entities anyway.
@@ -1323,7 +1359,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF,
0,0,0);
ctxt->depth--;
-
+
if (val == NULL)
ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt,
ctxt->myDoc, ctxt->node, ret, value);
@@ -1380,7 +1416,7 @@ xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname,
error:
if (nval != NULL)
xmlFree(nval);
- if (ns != NULL)
+ if (ns != NULL)
xmlFree(ns);
}
@@ -1479,7 +1515,7 @@ process_external_subset:
* - this is a namespace prefix
* - the user required for completion in the tree
* like XSLT
- * - there isn't already an attribute definition
+ * - there isn't already an attribute definition
* in the internal subset overriding it.
*/
if (((attr->prefix != NULL) &&
@@ -1568,17 +1604,17 @@ xmlSAX2StartElement(void *ctx, const xmlChar *fullname, const xmlChar **atts)
/*
* First check on validity:
*/
- if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
+ if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
((ctxt->myDoc->intSubset == NULL) ||
- ((ctxt->myDoc->intSubset->notations == NULL) &&
+ ((ctxt->myDoc->intSubset->notations == NULL) &&
(ctxt->myDoc->intSubset->elements == NULL) &&
- (ctxt->myDoc->intSubset->attributes == NULL) &&
+ (ctxt->myDoc->intSubset->attributes == NULL) &&
(ctxt->myDoc->intSubset->entities == NULL)))) {
xmlErrValid(ctxt, XML_ERR_NO_DTD,
"Validation failed: no DTD found !", NULL, NULL);
ctxt->validate = 0;
}
-
+
/*
* Split the full name into a namespace prefix and the tag name
@@ -1766,7 +1802,7 @@ xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED)
else
xmlGenericError(xmlGenericErrorContext, "SAX.xmlSAX2EndElement(%s)\n", name);
#endif
-
+
/* Capture end position and add node */
if (cur != NULL && ctxt->record_info) {
ctxt->nodeInfo->end_pos = ctxt->input->cur - ctxt->input->base;
@@ -1783,7 +1819,7 @@ xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED)
cur);
#endif /* LIBXML_VALID_ENABLED */
-
+
/*
* end of parsing of this node.
*/
@@ -1792,15 +1828,15 @@ xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED)
#endif
nodePop(ctxt);
}
-#endif /* LIBXML_SAX1_ENABLED || LIBXML_HTML_ENABLE */
+#endif /* LIBXML_SAX1_ENABLED || LIBXML_HTML_ENABLED || LIBXML_LEGACY_ENABLED */
/*
* xmlSAX2TextNode:
* @ctxt: the parser context
* @str: the input string
* @len: the string length
- *
- * Remove the entities from an attribute value
+ *
+ * Callback for a text node
*
* Returns the newly allocated string or NULL if not needed or error
*/
@@ -1833,7 +1869,7 @@ xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) {
if ((len < (int) (2 * sizeof(void *))) &&
(ctxt->options & XML_PARSE_COMPACT)) {
- /* store the string in the node overrithing properties and nsDef */
+ /* store the string in the node overriding properties and nsDef */
xmlChar *tmp = (xmlChar *) &(ret->properties);
memcpy(tmp, str, len);
tmp[len] = 0;
@@ -1865,8 +1901,17 @@ skip:
} else
ret->content = (xmlChar *) intern;
- if (ctxt->input != NULL)
- ret->line = ctxt->input->line;
+ if (ctxt->linenumbers) {
+ if (ctxt->input != NULL) {
+ if (ctxt->input->line < 65535)
+ ret->line = (short) ctxt->input->line;
+ else {
+ ret->line = 65535;
+ if (ctxt->options & XML_PARSE_BIG_LINES)
+ ret->psvi = (void *) (long) ctxt->input->line;
+ }
+ }
+ }
if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue))
xmlRegisterNodeDefaultValue(ret);
@@ -1879,7 +1924,7 @@ skip:
* @ctxt: the parser context
* @str: the input string
* @len: the string length
- *
+ *
* Remove the entities from an attribute value
*
* Returns the newly allocated string or NULL if not needed or error
@@ -1945,7 +1990,7 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
memset(ret, 0, sizeof(xmlAttr));
ret->type = XML_ATTRIBUTE_NODE;
- ret->parent = ctxt->node;
+ ret->parent = ctxt->node;
ret->doc = ctxt->myDoc;
ret->ns = namespace;
@@ -1969,7 +2014,7 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
xmlRegisterNodeDefaultValue((xmlNodePtr)ret);
} else {
if (ctxt->dictNames)
- ret = xmlNewNsPropEatName(ctxt->node, namespace,
+ ret = xmlNewNsPropEatName(ctxt->node, namespace,
(xmlChar *) localname, NULL);
else
ret = xmlNewNsProp(ctxt->node, namespace, localname, NULL);
@@ -2055,7 +2100,7 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
xmlChar *nvalnorm;
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(localname, prefix, fn, 50);
if (fullname != NULL) {
ctxt->vctxt.valid = 1;
@@ -2106,6 +2151,7 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
*/
if (dup == NULL)
dup = xmlStrndup(value, valueend - value);
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef LIBXML_VALID_ENABLED
if (xmlValidateNCName(dup, 1) != 0) {
xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
@@ -2113,6 +2159,7 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
(const char *) dup, NULL);
}
#endif
+#endif
xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret);
} else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) {
/* might be worth duplicate entry points and not copy */
@@ -2170,13 +2217,13 @@ xmlSAX2StartElementNs(void *ctx,
/*
* First check on validity:
*/
- if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
+ if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) &&
((ctxt->myDoc->intSubset == NULL) ||
- ((ctxt->myDoc->intSubset->notations == NULL) &&
+ ((ctxt->myDoc->intSubset->notations == NULL) &&
(ctxt->myDoc->intSubset->elements == NULL) &&
- (ctxt->myDoc->intSubset->attributes == NULL) &&
+ (ctxt->myDoc->intSubset->attributes == NULL) &&
(ctxt->myDoc->intSubset->entities == NULL)))) {
- xmlErrValid(ctxt, XML_ERR_NO_DTD,
+ xmlErrValid(ctxt, XML_DTD_NO_DTD,
"Validation failed: no DTD found !", NULL, NULL);
ctxt->validate = 0;
}
@@ -2221,12 +2268,12 @@ xmlSAX2StartElementNs(void *ctx,
xmlRegisterNodeDefaultValue(ret);
} else {
if (ctxt->dictNames)
- ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
+ ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
(xmlChar *) localname, NULL);
else if (lname == NULL)
ret = xmlNewDocNode(ctxt->myDoc, NULL, localname, NULL);
else
- ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
+ ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL,
(xmlChar *) lname, NULL);
if (ret == NULL) {
xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
@@ -2431,7 +2478,7 @@ xmlSAX2EndElementNs(void *ctx,
* @ctx: the user data (XML parser context)
* @name: The entity name
*
- * called when an entity xmlSAX2Reference is detected.
+ * called when an entity xmlSAX2Reference is detected.
*/
void
xmlSAX2Reference(void *ctx, const xmlChar *name)
@@ -2531,12 +2578,16 @@ xmlSAX2Characters(void *ctx, const xmlChar *ch, int len)
(xmlDictOwns(ctxt->dict, lastChild->content))) {
lastChild->content = xmlStrdup(lastChild->content);
}
+ if (lastChild->content == NULL) {
+ xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: xmlStrdup returned NULL");
+ return;
+ }
if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) &&
((ctxt->options & XML_PARSE_HUGE) == 0)) {
xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node");
return;
}
- if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len ||
+ if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len ||
(size_t)ctxt->nodemem + (size_t)len > SIZE_T_MAX / 2) {
xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters overflow prevented");
return;
diff --git a/acinclude.m4 b/acinclude.m4
index 4ff672e..7ad8630 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2,8 +2,8 @@ dnl Like AC_TRY_EVAL but also errors out if the compiler generates
dnl _any_ output. Some compilers might issue warnings which we want
dnl to catch.
AC_DEFUN([AC_TRY_EVAL2],
-[{ (eval echo configure:__oline__: \"[$]$1\") 1>&AC_FD_CC; dnl
-(eval [$]$1) 2>&AC_FD_CC; _out=`eval [$]$1 2>&1` && test "x$_out" = x; }])
+[{ (eval echo configure:__oline__: \"[$]$1\") 1>&AS_MESSAGE_LOG_FD; dnl
+(eval [$]$1) 2>&AS_MESSAGE_LOG_FD; _out=`eval [$]$1 2>&1` && test "x$_out" = x; }])
dnl Like AC_TRY_COMPILE but calls AC_TRY_EVAL2 instead of AC_TRY_EVAL
AC_DEFUN([AC_TRY_COMPILE2],
@@ -19,8 +19,8 @@ if AC_TRY_EVAL2(ac_compile); then
ifelse([$3], , :, [rm -rf conftest*
$3])
else
- echo "configure: failed program was:" >&AC_FD_CC
- cat conftest.$ac_ext >&AC_FD_CC
+ echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
ifelse([$4], , , [ rm -rf conftest*
$4
])dnl
diff --git a/aclocal.m4 b/aclocal.m4
index fcf3076..51ce905 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -11,15 +11,216 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_default([$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes ],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ AC_MSG_RESULT([no])
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+ ])
+elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
+ m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+ ])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+
+# PKG_INSTALLDIR(DIRECTORY)
+# -------------------------
+# Substitutes the variable pkgconfigdir as the location where a module
+# should install pkg-config .pc files. By default the directory is
+# $libdir/pkgconfig, but the default can be changed by passing
+# DIRECTORY. The user can override through the --with-pkgconfigdir
+# parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+ [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+]) dnl PKG_INSTALLDIR
+
+
+# PKG_NOARCH_INSTALLDIR(DIRECTORY)
+# -------------------------
+# Substitutes the variable noarch_pkgconfigdir as the location where a
+# module should install arch-independent pkg-config .pc files. By
+# default the directory is $datadir/pkgconfig, but the default can be
+# changed by passing DIRECTORY. The user can override through the
+# --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+ [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+]) dnl PKG_NOARCH_INSTALLDIR
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -31,10 +232,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -50,22 +251,22 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
@@ -84,7 +285,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -110,22 +311,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
-
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -144,16 +342,14 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
@@ -163,7 +359,7 @@ fi])])
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -176,12 +372,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
@@ -189,8 +386,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -229,16 +427,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -247,16 +445,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -304,7 +502,7 @@ AM_CONDITIONAL([am__fastdep$1], [
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -314,34 +512,39 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 5
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
@@ -354,7 +557,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
@@ -366,21 +569,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
@@ -398,7 +599,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
+# is enabled. FIXME. This creates each '.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
@@ -406,29 +607,14 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 16
-
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
@@ -444,7 +630,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -473,31 +659,40 @@ AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
@@ -508,28 +703,32 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
- [define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
@@ -557,7 +756,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -576,16 +775,14 @@ if test x"${install_sh}" != xset; then
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
@@ -601,14 +798,12 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
-
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -626,7 +821,7 @@ am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
@@ -653,15 +848,12 @@ rm -f confinc confmf
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
-
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
@@ -669,11 +861,10 @@ AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
-
# AM_MISSING_HAS_RUN
# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
@@ -686,63 +877,35 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
+ AC_MSG_WARN(['missing' script is too old or missing])
fi
])
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
-
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -755,22 +918,16 @@ AC_DEFUN([_AM_IF_OPTION],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -781,32 +938,40 @@ case `pwd` in
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$[2]" = conftest.file
)
then
@@ -816,36 +981,85 @@ else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 1
-
# AM_SILENT_RULES([DEFAULT])
# --------------------------
# Enable less verbose build rules; with the default set to DEFAULT
-# (`yes' being less verbose, `no' or empty being verbose).
+# ("yes" being less verbose, "no" or empty being verbose).
AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules],
-[ --enable-silent-rules less verbose build output (undo: `make V=1')
- --disable-silent-rules verbose build output (undo: `make V=0')])
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no) AM_DEFAULT_VERBOSITY=1;;
-*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -853,34 +1067,32 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
# AM_PROG_INSTALL_STRIP
# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -888,24 +1100,22 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
@@ -915,75 +1125,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
+#
AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
diff --git a/buf.c b/buf.c
new file mode 100644
index 0000000..6efc7b6
--- /dev/null
+++ b/buf.c
@@ -0,0 +1,1304 @@
+/*
+ * buf.c: memory buffers for libxml2
+ *
+ * new buffer structures and entry points to simplify the maintainance
+ * of libxml2 and ensure we keep good control over memory allocations
+ * and stay 64 bits clean.
+ * The new entry point use the xmlBufPtr opaque structure and
+ * xmlBuf...() counterparts to the old xmlBuf...() functions
+ *
+ * See Copyright for the status of this software.
+ *
+ * daniel@veillard.com
+ */
+
+#define IN_LIBXML
+#include "libxml.h"
+
+#include <string.h> /* for memset() only ! */
+#include <limits.h>
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <libxml/tree.h>
+#include <libxml/globals.h>
+#include <libxml/tree.h>
+#include "buf.h"
+
+#define WITH_BUFFER_COMPAT
+
+/**
+ * xmlBuf:
+ *
+ * A buffer structure. The base of the structure is somehow compatible
+ * with struct _xmlBuffer to limit risks on application which accessed
+ * directly the input->buf->buffer structures.
+ */
+
+struct _xmlBuf {
+ xmlChar *content; /* The buffer content UTF8 */
+ unsigned int compat_use; /* for binary compatibility */
+ unsigned int compat_size; /* for binary compatibility */
+ xmlBufferAllocationScheme alloc; /* The realloc method */
+ xmlChar *contentIO; /* in IO mode we may have a different base */
+ size_t use; /* The buffer size used */
+ size_t size; /* The buffer size */
+ xmlBufferPtr buffer; /* wrapper for an old buffer */
+ int error; /* an error code if a failure occured */
+};
+
+#ifdef WITH_BUFFER_COMPAT
+/*
+ * Macro for compatibility with xmlBuffer to be used after an xmlBuf
+ * is updated. This makes sure the compat fields are updated too.
+ */
+#define UPDATE_COMPAT(buf) \
+ if (buf->size < INT_MAX) buf->compat_size = buf->size; \
+ else buf->compat_size = INT_MAX; \
+ if (buf->use < INT_MAX) buf->compat_use = buf->use; \
+ else buf->compat_use = INT_MAX;
+
+/*
+ * Macro for compatibility with xmlBuffer to be used in all the xmlBuf
+ * entry points, it checks that the compat fields have not been modified
+ * by direct call to xmlBuffer function from code compiled before 2.9.0 .
+ */
+#define CHECK_COMPAT(buf) \
+ if (buf->size != (size_t) buf->compat_size) \
+ if (buf->compat_size < INT_MAX) \
+ buf->size = buf->compat_size; \
+ if (buf->use != (size_t) buf->compat_use) \
+ if (buf->compat_use < INT_MAX) \
+ buf->use = buf->compat_use;
+
+#else /* ! WITH_BUFFER_COMPAT */
+#define UPDATE_COMPAT(buf)
+#define CHECK_COMPAT(buf)
+#endif /* WITH_BUFFER_COMPAT */
+
+/**
+ * xmlBufMemoryError:
+ * @extra: extra informations
+ *
+ * Handle an out of memory condition
+ * To be improved...
+ */
+static void
+xmlBufMemoryError(xmlBufPtr buf, const char *extra)
+{
+ __xmlSimpleError(XML_FROM_BUFFER, XML_ERR_NO_MEMORY, NULL, NULL, extra);
+ if ((buf) && (buf->error == 0))
+ buf->error = XML_ERR_NO_MEMORY;
+}
+
+/**
+ * xmlBufOverflowError:
+ * @extra: extra informations
+ *
+ * Handle a buffer overflow error
+ * To be improved...
+ */
+static void
+xmlBufOverflowError(xmlBufPtr buf, const char *extra)
+{
+ __xmlSimpleError(XML_FROM_BUFFER, XML_BUF_OVERFLOW, NULL, NULL, extra);
+ if ((buf) && (buf->error == 0))
+ buf->error = XML_BUF_OVERFLOW;
+}
+
+
+/**
+ * xmlBufCreate:
+ *
+ * routine to create an XML buffer.
+ * returns the new structure.
+ */
+xmlBufPtr
+xmlBufCreate(void) {
+ xmlBufPtr ret;
+
+ ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf));
+ if (ret == NULL) {
+ xmlBufMemoryError(NULL, "creating buffer");
+ return(NULL);
+ }
+ ret->compat_use = 0;
+ ret->use = 0;
+ ret->error = 0;
+ ret->buffer = NULL;
+ ret->size = xmlDefaultBufferSize;
+ ret->compat_size = xmlDefaultBufferSize;
+ ret->alloc = xmlBufferAllocScheme;
+ ret->content = (xmlChar *) xmlMallocAtomic(ret->size * sizeof(xmlChar));
+ if (ret->content == NULL) {
+ xmlBufMemoryError(ret, "creating buffer");
+ xmlFree(ret);
+ return(NULL);
+ }
+ ret->content[0] = 0;
+ ret->contentIO = NULL;
+ return(ret);
+}
+
+/**
+ * xmlBufCreateSize:
+ * @size: initial size of buffer
+ *
+ * routine to create an XML buffer.
+ * returns the new structure.
+ */
+xmlBufPtr
+xmlBufCreateSize(size_t size) {
+ xmlBufPtr ret;
+
+ ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf));
+ if (ret == NULL) {
+ xmlBufMemoryError(NULL, "creating buffer");
+ return(NULL);
+ }
+ ret->compat_use = 0;
+ ret->use = 0;
+ ret->error = 0;
+ ret->buffer = NULL;
+ ret->alloc = xmlBufferAllocScheme;
+ ret->size = (size ? size+2 : 0); /* +1 for ending null */
+ ret->compat_size = (int) ret->size;
+ if (ret->size){
+ ret->content = (xmlChar *) xmlMallocAtomic(ret->size * sizeof(xmlChar));
+ if (ret->content == NULL) {
+ xmlBufMemoryError(ret, "creating buffer");
+ xmlFree(ret);
+ return(NULL);
+ }
+ ret->content[0] = 0;
+ } else
+ ret->content = NULL;
+ ret->contentIO = NULL;
+ return(ret);
+}
+
+/**
+ * xmlBufDetach:
+ * @buf: the buffer
+ *
+ * Remove the string contained in a buffer and give it back to the
+ * caller. The buffer is reset to an empty content.
+ * This doesn't work with immutable buffers as they can't be reset.
+ *
+ * Returns the previous string contained by the buffer.
+ */
+xmlChar *
+xmlBufDetach(xmlBufPtr buf) {
+ xmlChar *ret;
+
+ if (buf == NULL)
+ return(NULL);
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)
+ return(NULL);
+ if (buf->buffer != NULL)
+ return(NULL);
+ if (buf->error)
+ return(NULL);
+
+ ret = buf->content;
+ buf->content = NULL;
+ buf->size = 0;
+ buf->use = 0;
+ buf->compat_use = 0;
+ buf->compat_size = 0;
+
+ return ret;
+}
+
+
+/**
+ * xmlBufCreateStatic:
+ * @mem: the memory area
+ * @size: the size in byte
+ *
+ * routine to create an XML buffer from an immutable memory area.
+ * The area won't be modified nor copied, and is expected to be
+ * present until the end of the buffer lifetime.
+ *
+ * returns the new structure.
+ */
+xmlBufPtr
+xmlBufCreateStatic(void *mem, size_t size) {
+ xmlBufPtr ret;
+
+ if ((mem == NULL) || (size == 0))
+ return(NULL);
+
+ ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf));
+ if (ret == NULL) {
+ xmlBufMemoryError(NULL, "creating buffer");
+ return(NULL);
+ }
+ if (size < INT_MAX) {
+ ret->compat_use = size;
+ ret->compat_size = size;
+ } else {
+ ret->compat_use = INT_MAX;
+ ret->compat_size = INT_MAX;
+ }
+ ret->use = size;
+ ret->size = size;
+ ret->alloc = XML_BUFFER_ALLOC_IMMUTABLE;
+ ret->content = (xmlChar *) mem;
+ ret->error = 0;
+ ret->buffer = NULL;
+ return(ret);
+}
+
+/**
+ * xmlBufGetAllocationScheme:
+ * @buf: the buffer
+ *
+ * Get the buffer allocation scheme
+ *
+ * Returns the scheme or -1 in case of error
+ */
+int
+xmlBufGetAllocationScheme(xmlBufPtr buf) {
+ if (buf == NULL) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufGetAllocationScheme: buf == NULL\n");
+#endif
+ return(-1);
+ }
+ return(buf->alloc);
+}
+
+/**
+ * xmlBufSetAllocationScheme:
+ * @buf: the buffer to tune
+ * @scheme: allocation scheme to use
+ *
+ * Sets the allocation scheme for this buffer
+ *
+ * returns 0 in case of success and -1 in case of failure
+ */
+int
+xmlBufSetAllocationScheme(xmlBufPtr buf,
+ xmlBufferAllocationScheme scheme) {
+ if ((buf == NULL) || (buf->error != 0)) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufSetAllocationScheme: buf == NULL or in error\n");
+#endif
+ return(-1);
+ }
+ if ((buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) ||
+ (buf->alloc == XML_BUFFER_ALLOC_IO))
+ return(-1);
+ if ((scheme == XML_BUFFER_ALLOC_DOUBLEIT) ||
+ (scheme == XML_BUFFER_ALLOC_EXACT) ||
+ (scheme == XML_BUFFER_ALLOC_HYBRID) ||
+ (scheme == XML_BUFFER_ALLOC_IMMUTABLE)) {
+ buf->alloc = scheme;
+ if (buf->buffer)
+ buf->buffer->alloc = scheme;
+ return(0);
+ }
+ /*
+ * Switching a buffer ALLOC_IO has the side effect of initializing
+ * the contentIO field with the current content
+ */
+ if (scheme == XML_BUFFER_ALLOC_IO) {
+ buf->alloc = XML_BUFFER_ALLOC_IO;
+ buf->contentIO = buf->content;
+ }
+ return(-1);
+}
+
+/**
+ * xmlBufFree:
+ * @buf: the buffer to free
+ *
+ * Frees an XML buffer. It frees both the content and the structure which
+ * encapsulate it.
+ */
+void
+xmlBufFree(xmlBufPtr buf) {
+ if (buf == NULL) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufFree: buf == NULL\n");
+#endif
+ return;
+ }
+
+ if ((buf->alloc == XML_BUFFER_ALLOC_IO) &&
+ (buf->contentIO != NULL)) {
+ xmlFree(buf->contentIO);
+ } else if ((buf->content != NULL) &&
+ (buf->alloc != XML_BUFFER_ALLOC_IMMUTABLE)) {
+ xmlFree(buf->content);
+ }
+ xmlFree(buf);
+}
+
+/**
+ * xmlBufEmpty:
+ * @buf: the buffer
+ *
+ * empty a buffer.
+ */
+void
+xmlBufEmpty(xmlBufPtr buf) {
+ if ((buf == NULL) || (buf->error != 0)) return;
+ if (buf->content == NULL) return;
+ CHECK_COMPAT(buf)
+ buf->use = 0;
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) {
+ buf->content = BAD_CAST "";
+ } else if ((buf->alloc == XML_BUFFER_ALLOC_IO) &&
+ (buf->contentIO != NULL)) {
+ size_t start_buf = buf->content - buf->contentIO;
+
+ buf->size += start_buf;
+ buf->content = buf->contentIO;
+ buf->content[0] = 0;
+ } else {
+ buf->content[0] = 0;
+ }
+ UPDATE_COMPAT(buf)
+}
+
+/**
+ * xmlBufShrink:
+ * @buf: the buffer to dump
+ * @len: the number of xmlChar to remove
+ *
+ * Remove the beginning of an XML buffer.
+ * NOTE that this routine behaviour differs from xmlBufferShrink()
+ * as it will return 0 on error instead of -1 due to size_t being
+ * used as the return type.
+ *
+ * Returns the number of byte removed or 0 in case of failure
+ */
+size_t
+xmlBufShrink(xmlBufPtr buf, size_t len) {
+ if ((buf == NULL) || (buf->error != 0)) return(0);
+ CHECK_COMPAT(buf)
+ if (len == 0) return(0);
+ if (len > buf->use) return(0);
+
+ buf->use -= len;
+ if ((buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) ||
+ ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL))) {
+ /*
+ * we just move the content pointer, but also make sure
+ * the perceived buffer size has shrinked accordingly
+ */
+ buf->content += len;
+ buf->size -= len;
+
+ /*
+ * sometimes though it maybe be better to really shrink
+ * on IO buffers
+ */
+ if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) {
+ size_t start_buf = buf->content - buf->contentIO;
+ if (start_buf >= buf->size) {
+ memmove(buf->contentIO, &buf->content[0], buf->use);
+ buf->content = buf->contentIO;
+ buf->content[buf->use] = 0;
+ buf->size += start_buf;
+ }
+ }
+ } else {
+ memmove(buf->content, &buf->content[len], buf->use);
+ buf->content[buf->use] = 0;
+ }
+ UPDATE_COMPAT(buf)
+ return(len);
+}
+
+/**
+ * xmlBufGrowInternal:
+ * @buf: the buffer
+ * @len: the minimum free size to allocate
+ *
+ * Grow the available space of an XML buffer, @len is the target value
+ * Error checking should be done on buf->error since using the return
+ * value doesn't work that well
+ *
+ * Returns 0 in case of error or the length made available otherwise
+ */
+static size_t
+xmlBufGrowInternal(xmlBufPtr buf, size_t len) {
+ size_t size;
+ xmlChar *newbuf;
+
+ if ((buf == NULL) || (buf->error != 0)) return(0);
+ CHECK_COMPAT(buf)
+
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return(0);
+ if (buf->use + len < buf->size)
+ return(buf->size - buf->use);
+
+ /*
+ * Windows has a BIG problem on realloc timing, so we try to double
+ * the buffer size (if that's enough) (bug 146697)
+ * Apparently BSD too, and it's probably best for linux too
+ * On an embedded system this may be something to change
+ */
+#if 1
+ if (buf->size > (size_t) len)
+ size = buf->size * 2;
+ else
+ size = buf->use + len + 100;
+#else
+ size = buf->use + len + 100;
+#endif
+
+ if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) {
+ size_t start_buf = buf->content - buf->contentIO;
+
+ newbuf = (xmlChar *) xmlRealloc(buf->contentIO, start_buf + size);
+ if (newbuf == NULL) {
+ xmlBufMemoryError(buf, "growing buffer");
+ return(0);
+ }
+ buf->contentIO = newbuf;
+ buf->content = newbuf + start_buf;
+ } else {
+ newbuf = (xmlChar *) xmlRealloc(buf->content, size);
+ if (newbuf == NULL) {
+ xmlBufMemoryError(buf, "growing buffer");
+ return(0);
+ }
+ buf->content = newbuf;
+ }
+ buf->size = size;
+ UPDATE_COMPAT(buf)
+ return(buf->size - buf->use);
+}
+
+/**
+ * xmlBufGrow:
+ * @buf: the buffer
+ * @len: the minimum free size to allocate
+ *
+ * Grow the available space of an XML buffer, @len is the target value
+ * This is been kept compatible with xmlBufferGrow() as much as possible
+ *
+ * Returns -1 in case of error or the length made available otherwise
+ */
+int
+xmlBufGrow(xmlBufPtr buf, int len) {
+ size_t ret;
+
+ if ((buf == NULL) || (len < 0)) return(-1);
+ if (len == 0)
+ return(0);
+ ret = xmlBufGrowInternal(buf, len);
+ if (buf->error != 0)
+ return(-1);
+ return((int) ret);
+}
+
+/**
+ * xmlBufInflate:
+ * @buf: the buffer
+ * @len: the minimum extra free size to allocate
+ *
+ * Grow the available space of an XML buffer, adding at least @len bytes
+ *
+ * Returns 0 if successful or -1 in case of error
+ */
+int
+xmlBufInflate(xmlBufPtr buf, size_t len) {
+ if (buf == NULL) return(-1);
+ xmlBufGrowInternal(buf, len + buf->size);
+ if (buf->error)
+ return(-1);
+ return(0);
+}
+
+/**
+ * xmlBufDump:
+ * @file: the file output
+ * @buf: the buffer to dump
+ *
+ * Dumps an XML buffer to a FILE *.
+ * Returns the number of #xmlChar written
+ */
+size_t
+xmlBufDump(FILE *file, xmlBufPtr buf) {
+ size_t ret;
+
+ if ((buf == NULL) || (buf->error != 0)) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufDump: buf == NULL or in error\n");
+#endif
+ return(0);
+ }
+ if (buf->content == NULL) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufDump: buf->content == NULL\n");
+#endif
+ return(0);
+ }
+ CHECK_COMPAT(buf)
+ if (file == NULL)
+ file = stdout;
+ ret = fwrite(buf->content, sizeof(xmlChar), buf->use, file);
+ return(ret);
+}
+
+/**
+ * xmlBufContent:
+ * @buf: the buffer
+ *
+ * Function to extract the content of a buffer
+ *
+ * Returns the internal content
+ */
+
+xmlChar *
+xmlBufContent(const xmlBuf *buf)
+{
+ if ((!buf) || (buf->error))
+ return NULL;
+
+ return(buf->content);
+}
+
+/**
+ * xmlBufEnd:
+ * @buf: the buffer
+ *
+ * Function to extract the end of the content of a buffer
+ *
+ * Returns the end of the internal content or NULL in case of error
+ */
+
+xmlChar *
+xmlBufEnd(xmlBufPtr buf)
+{
+ if ((!buf) || (buf->error))
+ return NULL;
+ CHECK_COMPAT(buf)
+
+ return(&buf->content[buf->use]);
+}
+
+/**
+ * xmlBufAddLen:
+ * @buf: the buffer
+ * @len: the size which were added at the end
+ *
+ * Sometime data may be added at the end of the buffer without
+ * using the xmlBuf APIs that is used to expand the used space
+ * and set the zero terminating at the end of the buffer
+ *
+ * Returns -1 in case of error and 0 otherwise
+ */
+int
+xmlBufAddLen(xmlBufPtr buf, size_t len) {
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (len > (buf->size - buf->use))
+ return(-1);
+ buf->use += len;
+ UPDATE_COMPAT(buf)
+ if (buf->size > buf->use)
+ buf->content[buf->use] = 0;
+ else
+ return(-1);
+ return(0);
+}
+
+/**
+ * xmlBufErase:
+ * @buf: the buffer
+ * @len: the size to erase at the end
+ *
+ * Sometime data need to be erased at the end of the buffer
+ *
+ * Returns -1 in case of error and 0 otherwise
+ */
+int
+xmlBufErase(xmlBufPtr buf, size_t len) {
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (len > buf->use)
+ return(-1);
+ buf->use -= len;
+ buf->content[buf->use] = 0;
+ UPDATE_COMPAT(buf)
+ return(0);
+}
+
+/**
+ * xmlBufLength:
+ * @buf: the buffer
+ *
+ * Function to get the length of a buffer
+ *
+ * Returns the length of data in the internal content
+ */
+
+size_t
+xmlBufLength(const xmlBufPtr buf)
+{
+ if ((!buf) || (buf->error))
+ return 0;
+ CHECK_COMPAT(buf)
+
+ return(buf->use);
+}
+
+/**
+ * xmlBufUse:
+ * @buf: the buffer
+ *
+ * Function to get the length of a buffer
+ *
+ * Returns the length of data in the internal content
+ */
+
+size_t
+xmlBufUse(const xmlBufPtr buf)
+{
+ if ((!buf) || (buf->error))
+ return 0;
+ CHECK_COMPAT(buf)
+
+ return(buf->use);
+}
+
+/**
+ * xmlBufAvail:
+ * @buf: the buffer
+ *
+ * Function to find how much free space is allocated but not
+ * used in the buffer. It does not account for the terminating zero
+ * usually needed
+ *
+ * Returns the amount or 0 if none or an error occured
+ */
+
+size_t
+xmlBufAvail(const xmlBufPtr buf)
+{
+ if ((!buf) || (buf->error))
+ return 0;
+ CHECK_COMPAT(buf)
+
+ return(buf->size - buf->use);
+}
+
+/**
+ * xmlBufIsEmpty:
+ * @buf: the buffer
+ *
+ * Tell if a buffer is empty
+ *
+ * Returns 0 if no, 1 if yes and -1 in case of error
+ */
+int
+xmlBufIsEmpty(const xmlBufPtr buf)
+{
+ if ((!buf) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+
+ return(buf->use == 0);
+}
+
+/**
+ * xmlBufResize:
+ * @buf: the buffer to resize
+ * @size: the desired size
+ *
+ * Resize a buffer to accommodate minimum size of @size.
+ *
+ * Returns 0 in case of problems, 1 otherwise
+ */
+int
+xmlBufResize(xmlBufPtr buf, size_t size)
+{
+ unsigned int newSize;
+ xmlChar* rebuf = NULL;
+ size_t start_buf;
+
+ if ((buf == NULL) || (buf->error))
+ return(0);
+ CHECK_COMPAT(buf)
+
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return(0);
+
+ /* Don't resize if we don't have to */
+ if (size < buf->size)
+ return 1;
+
+ /* figure out new size */
+ switch (buf->alloc){
+ case XML_BUFFER_ALLOC_IO:
+ case XML_BUFFER_ALLOC_DOUBLEIT:
+ /*take care of empty case*/
+ newSize = (buf->size ? buf->size*2 : size + 10);
+ while (size > newSize) {
+ if (newSize > UINT_MAX / 2) {
+ xmlBufMemoryError(buf, "growing buffer");
+ return 0;
+ }
+ newSize *= 2;
+ }
+ break;
+ case XML_BUFFER_ALLOC_EXACT:
+ newSize = size+10;
+ break;
+ case XML_BUFFER_ALLOC_HYBRID:
+ if (buf->use < BASE_BUFFER_SIZE)
+ newSize = size;
+ else {
+ newSize = buf->size * 2;
+ while (size > newSize) {
+ if (newSize > UINT_MAX / 2) {
+ xmlBufMemoryError(buf, "growing buffer");
+ return 0;
+ }
+ newSize *= 2;
+ }
+ }
+ break;
+
+ default:
+ newSize = size+10;
+ break;
+ }
+
+ if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) {
+ start_buf = buf->content - buf->contentIO;
+
+ if (start_buf > newSize) {
+ /* move data back to start */
+ memmove(buf->contentIO, buf->content, buf->use);
+ buf->content = buf->contentIO;
+ buf->content[buf->use] = 0;
+ buf->size += start_buf;
+ } else {
+ rebuf = (xmlChar *) xmlRealloc(buf->contentIO, start_buf + newSize);
+ if (rebuf == NULL) {
+ xmlBufMemoryError(buf, "growing buffer");
+ return 0;
+ }
+ buf->contentIO = rebuf;
+ buf->content = rebuf + start_buf;
+ }
+ } else {
+ if (buf->content == NULL) {
+ rebuf = (xmlChar *) xmlMallocAtomic(newSize);
+ } else if (buf->size - buf->use < 100) {
+ rebuf = (xmlChar *) xmlRealloc(buf->content, newSize);
+ } else {
+ /*
+ * if we are reallocating a buffer far from being full, it's
+ * better to make a new allocation and copy only the used range
+ * and free the old one.
+ */
+ rebuf = (xmlChar *) xmlMallocAtomic(newSize);
+ if (rebuf != NULL) {
+ memcpy(rebuf, buf->content, buf->use);
+ xmlFree(buf->content);
+ rebuf[buf->use] = 0;
+ }
+ }
+ if (rebuf == NULL) {
+ xmlBufMemoryError(buf, "growing buffer");
+ return 0;
+ }
+ buf->content = rebuf;
+ }
+ buf->size = newSize;
+ UPDATE_COMPAT(buf)
+
+ return 1;
+}
+
+/**
+ * xmlBufAdd:
+ * @buf: the buffer to dump
+ * @str: the #xmlChar string
+ * @len: the number of #xmlChar to add
+ *
+ * Add a string range to an XML buffer. if len == -1, the length of
+ * str is recomputed.
+ *
+ * Returns 0 successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len) {
+ unsigned int needSize;
+
+ if ((str == NULL) || (buf == NULL) || (buf->error))
+ return -1;
+ CHECK_COMPAT(buf)
+
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1;
+ if (len < -1) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufAdd: len < 0\n");
+#endif
+ return -1;
+ }
+ if (len == 0) return 0;
+
+ if (len < 0)
+ len = xmlStrlen(str);
+
+ if (len < 0) return -1;
+ if (len == 0) return 0;
+
+ needSize = buf->use + len + 2;
+ if (needSize > buf->size){
+ if (!xmlBufResize(buf, needSize)){
+ xmlBufMemoryError(buf, "growing buffer");
+ return XML_ERR_NO_MEMORY;
+ }
+ }
+
+ memmove(&buf->content[buf->use], str, len*sizeof(xmlChar));
+ buf->use += len;
+ buf->content[buf->use] = 0;
+ UPDATE_COMPAT(buf)
+ return 0;
+}
+
+/**
+ * xmlBufAddHead:
+ * @buf: the buffer
+ * @str: the #xmlChar string
+ * @len: the number of #xmlChar to add
+ *
+ * Add a string range to the beginning of an XML buffer.
+ * if len == -1, the length of @str is recomputed.
+ *
+ * Returns 0 successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len) {
+ unsigned int needSize;
+
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1;
+ if (str == NULL) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufAddHead: str == NULL\n");
+#endif
+ return -1;
+ }
+ if (len < -1) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufAddHead: len < 0\n");
+#endif
+ return -1;
+ }
+ if (len == 0) return 0;
+
+ if (len < 0)
+ len = xmlStrlen(str);
+
+ if (len <= 0) return -1;
+
+ if ((buf->alloc == XML_BUFFER_ALLOC_IO) && (buf->contentIO != NULL)) {
+ size_t start_buf = buf->content - buf->contentIO;
+
+ if (start_buf > (unsigned int) len) {
+ /*
+ * We can add it in the space previously shrinked
+ */
+ buf->content -= len;
+ memmove(&buf->content[0], str, len);
+ buf->use += len;
+ buf->size += len;
+ UPDATE_COMPAT(buf)
+ return(0);
+ }
+ }
+ needSize = buf->use + len + 2;
+ if (needSize > buf->size){
+ if (!xmlBufResize(buf, needSize)){
+ xmlBufMemoryError(buf, "growing buffer");
+ return XML_ERR_NO_MEMORY;
+ }
+ }
+
+ memmove(&buf->content[len], &buf->content[0], buf->use);
+ memmove(&buf->content[0], str, len);
+ buf->use += len;
+ buf->content[buf->use] = 0;
+ UPDATE_COMPAT(buf)
+ return 0;
+}
+
+/**
+ * xmlBufCat:
+ * @buf: the buffer to add to
+ * @str: the #xmlChar string
+ *
+ * Append a zero terminated string to an XML buffer.
+ *
+ * Returns 0 successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufCat(xmlBufPtr buf, const xmlChar *str) {
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1;
+ if (str == NULL) return -1;
+ return xmlBufAdd(buf, str, -1);
+}
+
+/**
+ * xmlBufCCat:
+ * @buf: the buffer to dump
+ * @str: the C char string
+ *
+ * Append a zero terminated C string to an XML buffer.
+ *
+ * Returns 0 successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufCCat(xmlBufPtr buf, const char *str) {
+ const char *cur;
+
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE) return -1;
+ if (str == NULL) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufCCat: str == NULL\n");
+#endif
+ return -1;
+ }
+ for (cur = str;*cur != 0;cur++) {
+ if (buf->use + 10 >= buf->size) {
+ if (!xmlBufResize(buf, buf->use+10)){
+ xmlBufMemoryError(buf, "growing buffer");
+ return XML_ERR_NO_MEMORY;
+ }
+ }
+ buf->content[buf->use++] = *cur;
+ }
+ buf->content[buf->use] = 0;
+ UPDATE_COMPAT(buf)
+ return 0;
+}
+
+/**
+ * xmlBufWriteCHAR:
+ * @buf: the XML buffer
+ * @string: the string to add
+ *
+ * routine which manages and grows an output buffer. This one adds
+ * xmlChars at the end of the buffer.
+ *
+ * Returns 0 if successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufWriteCHAR(xmlBufPtr buf, const xmlChar *string) {
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)
+ return(-1);
+ return(xmlBufCat(buf, string));
+}
+
+/**
+ * xmlBufWriteChar:
+ * @buf: the XML buffer output
+ * @string: the string to add
+ *
+ * routine which manage and grows an output buffer. This one add
+ * C chars at the end of the array.
+ *
+ * Returns 0 if successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufWriteChar(xmlBufPtr buf, const char *string) {
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)
+ return(-1);
+ return(xmlBufCCat(buf, string));
+}
+
+
+/**
+ * xmlBufWriteQuotedString:
+ * @buf: the XML buffer output
+ * @string: the string to add
+ *
+ * routine which manage and grows an output buffer. This one writes
+ * a quoted or double quoted #xmlChar string, checking first if it holds
+ * quote or double-quotes internally
+ *
+ * Returns 0 if successful, a positive error code number otherwise
+ * and -1 in case of internal or API error.
+ */
+int
+xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string) {
+ const xmlChar *cur, *base;
+ if ((buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ if (buf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)
+ return(-1);
+ if (xmlStrchr(string, '\"')) {
+ if (xmlStrchr(string, '\'')) {
+#ifdef DEBUG_BUFFER
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlBufWriteQuotedString: string contains quote and double-quotes !\n");
+#endif
+ xmlBufCCat(buf, "\"");
+ base = cur = string;
+ while(*cur != 0){
+ if(*cur == '"'){
+ if (base != cur)
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&quot;", 6);
+ cur++;
+ base = cur;
+ }
+ else {
+ cur++;
+ }
+ }
+ if (base != cur)
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufCCat(buf, "\"");
+ }
+ else{
+ xmlBufCCat(buf, "\'");
+ xmlBufCat(buf, string);
+ xmlBufCCat(buf, "\'");
+ }
+ } else {
+ xmlBufCCat(buf, "\"");
+ xmlBufCat(buf, string);
+ xmlBufCCat(buf, "\"");
+ }
+ return(0);
+}
+
+/**
+ * xmlBufFromBuffer:
+ * @buffer: incoming old buffer to convert to a new one
+ *
+ * Helper routine to switch from the old buffer structures in use
+ * in various APIs. It creates a wrapper xmlBufPtr which will be
+ * used for internal processing until the xmlBufBackToBuffer() is
+ * issued.
+ *
+ * Returns a new xmlBufPtr unless the call failed and NULL is returned
+ */
+xmlBufPtr
+xmlBufFromBuffer(xmlBufferPtr buffer) {
+ xmlBufPtr ret;
+
+ if (buffer == NULL)
+ return(NULL);
+
+ ret = (xmlBufPtr) xmlMalloc(sizeof(xmlBuf));
+ if (ret == NULL) {
+ xmlBufMemoryError(NULL, "creating buffer");
+ return(NULL);
+ }
+ ret->use = buffer->use;
+ ret->size = buffer->size;
+ ret->compat_use = buffer->use;
+ ret->compat_size = buffer->size;
+ ret->error = 0;
+ ret->buffer = buffer;
+ ret->alloc = buffer->alloc;
+ ret->content = buffer->content;
+ ret->contentIO = buffer->contentIO;
+
+ return(ret);
+}
+
+/**
+ * xmlBufBackToBuffer:
+ * @buf: new buffer wrapping the old one
+ *
+ * Function to be called once internal processing had been done to
+ * update back the buffer provided by the user. This can lead to
+ * a failure in case the size accumulated in the xmlBuf is larger
+ * than what an xmlBuffer can support on 64 bits (INT_MAX)
+ * The xmlBufPtr @buf wrapper is deallocated by this call in any case.
+ *
+ * Returns the old xmlBufferPtr unless the call failed and NULL is returned
+ */
+xmlBufferPtr
+xmlBufBackToBuffer(xmlBufPtr buf) {
+ xmlBufferPtr ret;
+
+ if ((buf == NULL) || (buf->error))
+ return(NULL);
+ CHECK_COMPAT(buf)
+ if (buf->buffer == NULL) {
+ xmlBufFree(buf);
+ return(NULL);
+ }
+
+ ret = buf->buffer;
+ /*
+ * What to do in case of error in the buffer ???
+ */
+ if (buf->use > INT_MAX) {
+ /*
+ * Worse case, we really allocated and used more than the
+ * maximum allowed memory for an xmlBuffer on this architecture.
+ * Keep the buffer but provide a truncated size value.
+ */
+ xmlBufOverflowError(buf, "Used size too big for xmlBuffer");
+ ret->use = INT_MAX;
+ ret->size = INT_MAX;
+ } else if (buf->size > INT_MAX) {
+ /*
+ * milder case, we allocated more than the maximum allowed memory
+ * for an xmlBuffer on this architecture, but used less than the
+ * limit.
+ * Keep the buffer but provide a truncated size value.
+ */
+ xmlBufOverflowError(buf, "Allocated size too big for xmlBuffer");
+ ret->size = INT_MAX;
+ }
+ ret->use = (int) buf->use;
+ ret->size = (int) buf->size;
+ ret->alloc = buf->alloc;
+ ret->content = buf->content;
+ ret->contentIO = buf->contentIO;
+ xmlFree(buf);
+ return(ret);
+}
+
+/**
+ * xmlBufMergeBuffer:
+ * @buf: an xmlBufPtr
+ * @buffer: the buffer to consume into @buf
+ *
+ * The content of @buffer is appended to @buf and @buffer is freed
+ *
+ * Returns -1 in case of error, 0 otherwise, in any case @buffer is freed
+ */
+int
+xmlBufMergeBuffer(xmlBufPtr buf, xmlBufferPtr buffer) {
+ int ret = 0;
+
+ if ((buf == NULL) || (buf->error)) {
+ xmlBufferFree(buffer);
+ return(-1);
+ }
+ CHECK_COMPAT(buf)
+ if ((buffer != NULL) && (buffer->content != NULL) &&
+ (buffer->use > 0)) {
+ ret = xmlBufAdd(buf, buffer->content, buffer->use);
+ }
+ xmlBufferFree(buffer);
+ return(ret);
+}
+
+/**
+ * xmlBufResetInput:
+ * @buf: an xmlBufPtr
+ * @input: an xmlParserInputPtr
+ *
+ * Update the input to use the current set of pointers from the buffer.
+ *
+ * Returns -1 in case of error, 0 otherwise
+ */
+int
+xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input) {
+ if ((input == NULL) || (buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ input->base = input->cur = buf->content;
+ input->end = &buf->content[buf->use];
+ return(0);
+}
+
+/**
+ * xmlBufGetInputBase:
+ * @buf: an xmlBufPtr
+ * @input: an xmlParserInputPtr
+ *
+ * Get the base of the @input relative to the beginning of the buffer
+ *
+ * Returns the size_t corresponding to the displacement
+ */
+size_t
+xmlBufGetInputBase(xmlBufPtr buf, xmlParserInputPtr input) {
+ size_t base;
+
+ if ((input == NULL) || (buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ base = input->base - buf->content;
+ /*
+ * We could do some pointer arythmetic checks but that's probably
+ * sufficient.
+ */
+ if (base > buf->size) {
+ xmlBufOverflowError(buf, "Input reference outside of the buffer");
+ base = 0;
+ }
+ return(base);
+}
+
+/**
+ * xmlBufSetInputBaseCur:
+ * @buf: an xmlBufPtr
+ * @input: an xmlParserInputPtr
+ * @base: the base value relative to the beginning of the buffer
+ * @cur: the cur value relative to the beginning of the buffer
+ *
+ * Update the input to use the base and cur relative to the buffer
+ * after a possible reallocation of its content
+ *
+ * Returns -1 in case of error, 0 otherwise
+ */
+int
+xmlBufSetInputBaseCur(xmlBufPtr buf, xmlParserInputPtr input,
+ size_t base, size_t cur) {
+ if ((input == NULL) || (buf == NULL) || (buf->error))
+ return(-1);
+ CHECK_COMPAT(buf)
+ input->base = &buf->content[base];
+ input->cur = input->base + cur;
+ input->end = &buf->content[buf->use];
+ return(0);
+}
+
+#define bottom_buf
+#include "elfgcchack.h"
diff --git a/buf.h b/buf.h
new file mode 100644
index 0000000..ebdc978
--- /dev/null
+++ b/buf.h
@@ -0,0 +1,72 @@
+/*
+ * Summary: Internal Interfaces for memory buffers in libxml2
+ * Description: this module describes most of the new xmlBuf buffer
+ * entry points, those are private routines, with a
+ * few exceptions exported in tree.h. This was added
+ * in 2.9.0.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Daniel Veillard
+ */
+
+#ifndef __XML_BUF_H__
+#define __XML_BUF_H__
+
+#include <libxml/tree.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+xmlBufPtr xmlBufCreate(void);
+xmlBufPtr xmlBufCreateSize(size_t size);
+xmlBufPtr xmlBufCreateStatic(void *mem, size_t size);
+
+int xmlBufSetAllocationScheme(xmlBufPtr buf,
+ xmlBufferAllocationScheme scheme);
+int xmlBufGetAllocationScheme(xmlBufPtr buf);
+
+void xmlBufFree(xmlBufPtr buf);
+void xmlBufEmpty(xmlBufPtr buf);
+
+/* size_t xmlBufShrink(xmlBufPtr buf, size_t len); */
+int xmlBufGrow(xmlBufPtr buf, int len);
+int xmlBufInflate(xmlBufPtr buf, size_t len);
+int xmlBufResize(xmlBufPtr buf, size_t len);
+
+int xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len);
+int xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len);
+int xmlBufCat(xmlBufPtr buf, const xmlChar *str);
+int xmlBufCCat(xmlBufPtr buf, const char *str);
+int xmlBufWriteCHAR(xmlBufPtr buf, const xmlChar *string);
+int xmlBufWriteChar(xmlBufPtr buf, const char *string);
+int xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string);
+
+size_t xmlBufAvail(const xmlBufPtr buf);
+size_t xmlBufLength(const xmlBufPtr buf);
+/* size_t xmlBufUse(const xmlBufPtr buf); */
+int xmlBufIsEmpty(const xmlBufPtr buf);
+int xmlBufAddLen(xmlBufPtr buf, size_t len);
+int xmlBufErase(xmlBufPtr buf, size_t len);
+
+/* const xmlChar * xmlBufContent(const xmlBuf *buf); */
+/* const xmlChar * xmlBufEnd(xmlBufPtr buf); */
+
+xmlChar * xmlBufDetach(xmlBufPtr buf);
+
+size_t xmlBufDump(FILE *file, xmlBufPtr buf);
+
+xmlBufPtr xmlBufFromBuffer(xmlBufferPtr buffer);
+xmlBufferPtr xmlBufBackToBuffer(xmlBufPtr buf);
+int xmlBufMergeBuffer(xmlBufPtr buf, xmlBufferPtr buffer);
+
+int xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input);
+size_t xmlBufGetInputBase(xmlBufPtr buf, xmlParserInputPtr input);
+int xmlBufSetInputBaseCur(xmlBufPtr buf, xmlParserInputPtr input,
+ size_t base, size_t cur);
+#ifdef __cplusplus
+}
+#endif
+#endif /* __XML_BUF_H__ */
+
diff --git a/c14n.c b/c14n.c
index 9c3cad2..ca77f92 100644
--- a/c14n.c
+++ b/c14n.c
@@ -1,12 +1,12 @@
/*
- * "Canonical XML" implementation
+ * "Canonical XML" implementation
* http://www.w3.org/TR/xml-c14n
- *
+ *
* "Exclusive XML Canonicalization" implementation
* http://www.w3.org/TR/xml-exc-c14n
*
* See Copyright for the status of this software.
- *
+ *
* Author: Aleksey Sanin <aleksey@aleksey.com>
*/
#define IN_LIBXML
@@ -27,6 +27,8 @@
#include <libxml/xpathInternals.h>
#include <libxml/c14n.h>
+#include "buf.h"
+
/************************************************************************
* *
* Some declaration better left private ATM *
@@ -44,7 +46,7 @@ typedef struct _xmlC14NVisibleNsStack {
int nsPrevStart; /* the begginning of the stack for previous visible node */
int nsPrevEnd; /* the end of the stack for previous visible node */
int nsMax; /* size of the array as allocated */
- xmlNsPtr *nsTab; /* array of ns in no particular order */
+ xmlNsPtr *nsTab; /* array of ns in no particular order */
xmlNodePtr *nodeTab; /* array of nodes in no particular order */
} xmlC14NVisibleNsStack, *xmlC14NVisibleNsStackPtr;
@@ -52,7 +54,7 @@ typedef struct _xmlC14NCtx {
/* input parameters */
xmlDocPtr doc;
xmlC14NIsVisibleCallback is_visible_callback;
- void* user_data;
+ void* user_data;
int with_comments;
xmlOutputBufferPtr buf;
@@ -60,7 +62,7 @@ typedef struct _xmlC14NCtx {
xmlC14NPosition pos;
int parent_is_doc;
xmlC14NVisibleNsStackPtr ns_rendered;
-
+
/* C14N mode */
xmlC14NMode mode;
@@ -73,17 +75,17 @@ typedef struct _xmlC14NCtx {
static xmlC14NVisibleNsStackPtr xmlC14NVisibleNsStackCreate (void);
static void xmlC14NVisibleNsStackDestroy (xmlC14NVisibleNsStackPtr cur);
-static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur,
+static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur,
xmlNsPtr ns,
xmlNodePtr node);
-static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur,
+static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur,
xmlC14NVisibleNsStackPtr state);
-static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur,
+static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur,
xmlC14NVisibleNsStackPtr state);
-static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur);
-static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur,
+static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur);
+static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur,
xmlNsPtr ns);
-static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur,
+static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur,
xmlNsPtr ns,
xmlC14NCtxPtr ctx);
@@ -105,26 +107,26 @@ typedef enum {
static xmlChar *xmlC11NNormalizeString(const xmlChar * input,
xmlC14NNormalizationMode mode);
-#define xmlC11NNormalizeAttr( a ) \
+#define xmlC11NNormalizeAttr( a ) \
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR)
-#define xmlC11NNormalizeComment( a ) \
+#define xmlC11NNormalizeComment( a ) \
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT)
-#define xmlC11NNormalizePI( a ) \
+#define xmlC11NNormalizePI( a ) \
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI)
-#define xmlC11NNormalizeText( a ) \
+#define xmlC11NNormalizeText( a ) \
xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT)
-#define xmlC14NIsVisible( ctx, node, parent ) \
+#define xmlC14NIsVisible( ctx, node, parent ) \
(((ctx)->is_visible_callback != NULL) ? \
(ctx)->is_visible_callback((ctx)->user_data, \
(xmlNodePtr)(node), (xmlNodePtr)(parent)) : 1)
-#define xmlC14NIsExclusive( ctx ) \
+#define xmlC14NIsExclusive( ctx ) \
( (ctx)->mode == XML_C14N_EXCLUSIVE_1_0 )
/************************************************************************
* *
- * Some factorized error routines *
+ * Some factorized error routines *
* *
************************************************************************/
@@ -249,25 +251,25 @@ xmlC14NErr(xmlC14NCtxPtr ctxt, xmlNodePtr node, int error,
************************************************************************/
#define XML_NAMESPACES_DEFAULT 16
-static int
+static int
xmlC14NIsNodeInNodeset(xmlNodeSetPtr nodes, xmlNodePtr node, xmlNodePtr parent) {
if((nodes != NULL) && (node != NULL)) {
if(node->type != XML_NAMESPACE_DECL) {
return(xmlXPathNodeSetContains(nodes, node));
} else {
xmlNs ns;
-
- memcpy(&ns, node, sizeof(ns));
-
+
+ memcpy(&ns, node, sizeof(ns));
+
/* this is a libxml hack! check xpath.c for details */
if((parent != NULL) && (parent->type == XML_ATTRIBUTE_NODE)) {
ns.next = (xmlNsPtr)parent->parent;
} else {
- ns.next = (xmlNsPtr)parent;
+ ns.next = (xmlNsPtr)parent;
}
- /*
- * If the input is an XPath node-set, then the node-set must explicitly
+ /*
+ * If the input is an XPath node-set, then the node-set must explicitly
* contain every node to be rendered to the canonical form.
*/
return(xmlXPathNodeSetContains(nodes, (xmlNodePtr)&ns));
@@ -305,12 +307,12 @@ xmlC14NVisibleNsStackDestroy(xmlC14NVisibleNsStackPtr cur) {
}
memset(cur, 0, sizeof(xmlC14NVisibleNsStack));
xmlFree(cur);
-
+
}
-static void
+static void
xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node) {
- if((cur == NULL) ||
+ if((cur == NULL) ||
((cur->nsTab == NULL) && (cur->nodeTab != NULL)) ||
((cur->nsTab != NULL) && (cur->nodeTab == NULL))) {
xmlC14NErrParam("adding namespace to stack");
@@ -328,9 +330,9 @@ xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr n
memset(cur->nodeTab, 0 , XML_NAMESPACES_DEFAULT * sizeof(xmlNodePtr));
cur->nsMax = XML_NAMESPACES_DEFAULT;
} else if(cur->nsMax == cur->nsCurEnd) {
- void *tmp;
+ void *tmp;
int tmpSize;
-
+
tmpSize = 2 * cur->nsMax;
tmp = xmlRealloc(cur->nsTab, tmpSize * sizeof(xmlNsPtr));
if (tmp == NULL) {
@@ -360,7 +362,7 @@ xmlC14NVisibleNsStackSave(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr
xmlC14NErrParam("saving namespaces stack");
return;
}
-
+
state->nsCurEnd = cur->nsCurEnd;
state->nsPrevStart = cur->nsPrevStart;
state->nsPrevEnd = cur->nsPrevEnd;
@@ -377,7 +379,7 @@ xmlC14NVisibleNsStackRestore(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStack
cur->nsPrevEnd = state->nsPrevEnd;
}
-static void
+static void
xmlC14NVisibleNsStackShift(xmlC14NVisibleNsStackPtr cur) {
if(cur == NULL) {
xmlC14NErrParam("shifting namespaces stack");
@@ -400,7 +402,7 @@ xmlC14NStrEqual(const xmlChar *str1, const xmlChar *str2) {
/**
* xmlC14NVisibleNsStackFind:
- * @ctx: the C14N context
+ * @ctx: the C14N context
* @ns: the namespace to check
*
* Checks whether the given namespace was already rendered or not
@@ -414,14 +416,14 @@ xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns)
const xmlChar *prefix;
const xmlChar *href;
int has_empty_ns;
-
+
if(cur == NULL) {
xmlC14NErrParam("searching namespaces stack (c14n)");
return (0);
}
/*
- * if the default namespace xmlns="" is not defined yet then
+ * if the default namespace xmlns="" is not defined yet then
* we do not want to print it out
*/
prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix;
@@ -432,7 +434,7 @@ xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns)
int start = (has_empty_ns) ? 0 : cur->nsPrevStart;
for (i = cur->nsCurEnd - 1; i >= start; --i) {
xmlNsPtr ns1 = cur->nsTab[i];
-
+
if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) {
return(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL));
}
@@ -441,20 +443,20 @@ xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns)
return(has_empty_ns);
}
-static int
+static int
xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx) {
int i;
const xmlChar *prefix;
const xmlChar *href;
int has_empty_ns;
-
+
if(cur == NULL) {
xmlC14NErrParam("searching namespaces stack (exc c14n)");
return (0);
}
/*
- * if the default namespace xmlns="" is not defined yet then
+ * if the default namespace xmlns="" is not defined yet then
* we do not want to print it out
*/
prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix;
@@ -465,10 +467,10 @@ xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NC
int start = 0;
for (i = cur->nsCurEnd - 1; i >= start; --i) {
xmlNsPtr ns1 = cur->nsTab[i];
-
+
if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) {
if(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)) {
- return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i]));
+ return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i]));
} else {
return(0);
}
@@ -483,8 +485,8 @@ xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NC
/**
* xmlC14NIsXmlNs:
- * @ns: the namespace to check
- *
+ * @ns: the namespace to check
+ *
* Checks whether the given namespace is a default "xml:" namespace
* with href="http://www.w3.org/XML/1998/namespace"
*
@@ -504,7 +506,7 @@ xmlC14NIsXmlNs(xmlNsPtr ns)
/**
* xmlC14NNsCompare:
* @ns1: the pointer to first namespace
- * @ns2: the pointer to second namespace
+ * @ns2: the pointer to second namespace
*
* Compares the namespaces by names (prefixes).
*
@@ -527,7 +529,7 @@ xmlC14NNsCompare(xmlNsPtr ns1, xmlNsPtr ns2)
/**
* xmlC14NPrintNamespaces:
* @ns: the pointer to namespace
- * @ctx: the C14N context
+ * @ctx: the C14N context
*
* Prints the given namespace to the output buffer from C14N context.
*
@@ -545,52 +547,53 @@ xmlC14NPrintNamespaces(const xmlNsPtr ns, xmlC14NCtxPtr ctx)
if (ns->prefix != NULL) {
xmlOutputBufferWriteString(ctx->buf, " xmlns:");
xmlOutputBufferWriteString(ctx->buf, (const char *) ns->prefix);
- xmlOutputBufferWriteString(ctx->buf, "=\"");
+ xmlOutputBufferWriteString(ctx->buf, "=");
} else {
- xmlOutputBufferWriteString(ctx->buf, " xmlns=\"");
+ xmlOutputBufferWriteString(ctx->buf, " xmlns=");
}
if(ns->href != NULL) {
- xmlOutputBufferWriteString(ctx->buf, (const char *) ns->href);
+ xmlBufWriteQuotedString(ctx->buf->buffer, ns->href);
+ } else {
+ xmlOutputBufferWriteString(ctx->buf, "\"\"");
}
- xmlOutputBufferWriteString(ctx->buf, "\"");
return (1);
}
/**
* xmlC14NProcessNamespacesAxis:
- * @ctx: the C14N context
+ * @ctx: the C14N context
* @node: the current node
*
* Prints out canonical namespace axis of the current node to the
- * buffer from C14N context as follows
+ * buffer from C14N context as follows
*
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n)
*
* Namespace Axis
- * Consider a list L containing only namespace nodes in the
- * axis and in the node-set in lexicographic order (ascending). To begin
- * processing L, if the first node is not the default namespace node (a node
- * with no namespace URI and no local name), then generate a space followed
+ * Consider a list L containing only namespace nodes in the
+ * axis and in the node-set in lexicographic order (ascending). To begin
+ * processing L, if the first node is not the default namespace node (a node
+ * with no namespace URI and no local name), then generate a space followed
* by xmlns="" if and only if the following conditions are met:
* - the element E that owns the axis is in the node-set
- * - The nearest ancestor element of E in the node-set has a default
- * namespace node in the node-set (default namespace nodes always
+ * - The nearest ancestor element of E in the node-set has a default
+ * namespace node in the node-set (default namespace nodes always
* have non-empty values in XPath)
- * The latter condition eliminates unnecessary occurrences of xmlns="" in
- * the canonical form since an element only receives an xmlns="" if its
- * default namespace is empty and if it has an immediate parent in the
- * canonical form that has a non-empty default namespace. To finish
- * processing L, simply process every namespace node in L, except omit
- * namespace node with local name xml, which defines the xml prefix,
+ * The latter condition eliminates unnecessary occurrences of xmlns="" in
+ * the canonical form since an element only receives an xmlns="" if its
+ * default namespace is empty and if it has an immediate parent in the
+ * canonical form that has a non-empty default namespace. To finish
+ * processing L, simply process every namespace node in L, except omit
+ * namespace node with local name xml, which defines the xml prefix,
* if its string value is http://www.w3.org/XML/1998/namespace.
*
* Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n)
- * Canonical XML applied to a document subset requires the search of the
- * ancestor nodes of each orphan element node for attributes in the xml
- * namespace, such as xml:lang and xml:space. These are copied into the
- * element node except if a declaration of the same attribute is already
- * in the attribute axis of the element (whether or not it is included in
- * the document subset). This search and copying are omitted from the
+ * Canonical XML applied to a document subset requires the search of the
+ * ancestor nodes of each orphan element node for attributes in the xml
+ * namespace, such as xml:lang and xml:space. These are copied into the
+ * element node except if a declaration of the same attribute is already
+ * in the attribute axis of the element (whether or not it is included in
+ * the document subset). This search and copying are omitted from the
* Exclusive XML Canonicalization method.
*
* Returns 0 on success or -1 on fail.
@@ -603,7 +606,7 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
xmlListPtr list;
int already_rendered;
int has_empty_ns = 0;
-
+
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
xmlC14NErrParam("processing namespaces axis (c14n)");
return (-1);
@@ -622,29 +625,29 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
for(n = cur; n != NULL; n = n->parent) {
for(ns = n->nsDef; ns != NULL; ns = ns->next) {
tmp = xmlSearchNs(cur->doc, cur, ns->prefix);
-
+
if((tmp == ns) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) {
already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns);
if(visible) {
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur);
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur);
}
if(!already_rendered) {
- xmlListInsert(list, ns);
+ xmlListInsert(list, ns);
}
- if(xmlStrlen(ns->prefix) == 0) {
+ if(xmlStrlen(ns->prefix) == 0) {
has_empty_ns = 1;
}
}
}
}
-
+
/**
- * if the first node is not the default namespace node (a node with no
- * namespace URI and no local name), then generate a space followed by
+ * if the first node is not the default namespace node (a node with no
+ * namespace URI and no local name), then generate a space followed by
* xmlns="" if and only if the following conditions are met:
* - the element E that owns the axis is in the node-set
- * - the nearest ancestor element of E in the node-set has a default
- * namespace node in the node-set (default namespace nodes always
+ * - the nearest ancestor element of E in the node-set has a default
+ * namespace node in the node-set (default namespace nodes always
* have non-empty values in XPath)
*/
if(visible && !has_empty_ns) {
@@ -652,17 +655,17 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
memset(&ns_default, 0, sizeof(ns_default));
if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) {
- xmlC14NPrintNamespaces(&ns_default, ctx);
+ xmlC14NPrintNamespaces(&ns_default, ctx);
}
}
-
-
- /*
- * print out all elements from list
+
+
+ /*
+ * print out all elements from list
*/
xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx);
- /*
+ /*
* Cleanup
*/
xmlListDelete(list);
@@ -672,28 +675,28 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
/**
* xmlExcC14NProcessNamespacesAxis:
- * @ctx: the C14N context
+ * @ctx: the C14N context
* @node: the current node
*
* Prints out exclusive canonical namespace axis of the current node to the
- * buffer from C14N context as follows
+ * buffer from C14N context as follows
*
* Exclusive XML Canonicalization
* http://www.w3.org/TR/xml-exc-c14n
*
- * If the element node is in the XPath subset then output the node in
- * accordance with Canonical XML except for namespace nodes which are
+ * If the element node is in the XPath subset then output the node in
+ * accordance with Canonical XML except for namespace nodes which are
* rendered as follows:
*
* 1. Render each namespace node iff:
- * * it is visibly utilized by the immediate parent element or one of
+ * * it is visibly utilized by the immediate parent element or one of
* its attributes, or is present in InclusiveNamespaces PrefixList, and
- * * its prefix and value do not appear in ns_rendered. ns_rendered is
- * obtained by popping the state stack in order to obtain a list of
- * prefixes and their values which have already been rendered by
+ * * its prefix and value do not appear in ns_rendered. ns_rendered is
+ * obtained by popping the state stack in order to obtain a list of
+ * prefixes and their values which have already been rendered by
* an output ancestor of the namespace node's parent element.
- * 2. Append the rendered namespace node to the list ns_rendered of namespace
- * nodes rendered by output ancestors. Push ns_rendered on state stack and
+ * 2. Append the rendered namespace node to the list ns_rendered of namespace
+ * nodes rendered by output ancestors. Push ns_rendered on state stack and
* recurse.
* 3. After the recursion returns, pop thestate stack.
*
@@ -710,7 +713,7 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
int has_empty_ns = 0;
int has_visibly_utilized_empty_ns = 0;
int has_empty_ns_in_inclusive_list = 0;
-
+
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
xmlC14NErrParam("processing namespaces axis (exc c14n)");
return (-1);
@@ -731,15 +734,15 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
return (-1);
}
- /*
+ /*
* process inclusive namespaces:
- * All namespace nodes appearing on inclusive ns list are
+ * All namespace nodes appearing on inclusive ns list are
* handled as provided in Canonical XML
*/
if(ctx->inclusive_ns_prefixes != NULL) {
- xmlChar *prefix;
+ xmlChar *prefix;
int i;
-
+
for (i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) {
prefix = ctx->inclusive_ns_prefixes[i];
/*
@@ -750,23 +753,23 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
prefix = NULL;
has_empty_ns_in_inclusive_list = 1;
}
-
- ns = xmlSearchNs(cur->doc, cur, prefix);
+
+ ns = xmlSearchNs(cur->doc, cur, prefix);
if((ns != NULL) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) {
already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns);
if(visible) {
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur);
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur);
}
if(!already_rendered) {
- xmlListInsert(list, ns);
+ xmlListInsert(list, ns);
}
- if(xmlStrlen(ns->prefix) == 0) {
+ if(xmlStrlen(ns->prefix) == 0) {
has_empty_ns = 1;
}
}
}
}
-
+
/* add node namespace */
if(cur->ns != NULL) {
ns = cur->ns;
@@ -775,32 +778,32 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
has_visibly_utilized_empty_ns = 1;
}
if((ns != NULL) && !xmlC14NIsXmlNs(ns)) {
- if(visible && xmlC14NIsVisible(ctx, ns, cur)) {
+ if(visible && xmlC14NIsVisible(ctx, ns, cur)) {
if(!xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, ns, ctx)) {
xmlListInsert(list, ns);
}
}
if(visible) {
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur);
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur);
}
if(xmlStrlen(ns->prefix) == 0) {
has_empty_ns = 1;
}
}
-
-
+
+
/* add attributes */
for(attr = cur->properties; attr != NULL; attr = attr->next) {
- /*
+ /*
* we need to check that attribute is visible and has non
- * default namespace (XML Namespaces: "default namespaces
- * do not apply directly to attributes")
+ * default namespace (XML Namespaces: "default namespaces
+ * do not apply directly to attributes")
*/
if((attr->ns != NULL) && !xmlC14NIsXmlNs(attr->ns) && xmlC14NIsVisible(ctx, attr, cur)) {
already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, attr->ns, ctx);
- xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur);
+ xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur);
if(!already_rendered && visible) {
- xmlListInsert(list, attr->ns);
+ xmlListInsert(list, attr->ns);
}
if(xmlStrlen(attr->ns->prefix) == 0) {
has_empty_ns = 1;
@@ -813,33 +816,33 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
/*
* Process xmlns=""
*/
- if(visible && has_visibly_utilized_empty_ns &&
+ if(visible && has_visibly_utilized_empty_ns &&
!has_empty_ns && !has_empty_ns_in_inclusive_list) {
static xmlNs ns_default;
memset(&ns_default, 0, sizeof(ns_default));
-
+
already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default, ctx);
if(!already_rendered) {
- xmlC14NPrintNamespaces(&ns_default, ctx);
+ xmlC14NPrintNamespaces(&ns_default, ctx);
}
} else if(visible && !has_empty_ns && has_empty_ns_in_inclusive_list) {
static xmlNs ns_default;
memset(&ns_default, 0, sizeof(ns_default));
if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) {
- xmlC14NPrintNamespaces(&ns_default, ctx);
+ xmlC14NPrintNamespaces(&ns_default, ctx);
}
}
-
- /*
- * print out all elements from list
+
+ /*
+ * print out all elements from list
*/
xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx);
- /*
+ /*
* Cleanup
*/
xmlListDelete(list);
@@ -849,8 +852,8 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
/**
* xmlC14NIsXmlAttr:
- * @attr: the attr to check
- *
+ * @attr: the attr to check
+ *
* Checks whether the given attribute is a default "xml:" namespace
* with href="http://www.w3.org/XML/1998/namespace"
*
@@ -861,7 +864,7 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
static int
xmlC14NIsXmlAttr(xmlAttrPtr attr)
{
- return ((attr->ns != NULL) &&
+ return ((attr->ns != NULL) &&
(xmlC14NIsXmlNs(attr->ns) != 0));
}
@@ -869,7 +872,7 @@ xmlC14NIsXmlAttr(xmlAttrPtr attr)
/**
* xmlC14NAttrsCompare:
* @attr1: the pointer tls o first attr
- * @attr2: the pointer to second attr
+ * @attr2: the pointer to second attr
*
* Prints the given attribute to the output buffer from C14N context.
*
@@ -893,7 +896,7 @@ xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2)
return (xmlStrcmp(attr1->name, attr2->name));
}
- /*
+ /*
* Attributes in the default namespace are first
* because the default namespace is not applied to
* unqualified attributes
@@ -918,10 +921,10 @@ xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2)
/**
* xmlC14NPrintAttrs:
* @attr: the pointer to attr
- * @ctx: the C14N context
+ * @ctx: the C14N context
*
* Prints out canonical attribute urrent node to the
- * buffer from C14N context as follows
+ * buffer from C14N context as follows
*
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n)
*
@@ -968,7 +971,7 @@ xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx)
* xmlC14NFindHiddenParentAttr:
*
* Finds an attribute in a hidden parent node.
- *
+ *
* Returns a pointer to the attribute node (if found) or NULL otherwise.
*/
static xmlAttrPtr
@@ -996,7 +999,7 @@ xmlC14NFindHiddenParentAttr(xmlC14NCtxPtr ctx, xmlNodePtr cur, const xmlChar * n
*/
static xmlAttrPtr
xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr)
-{
+{
xmlChar * res = NULL;
xmlNodePtr cur;
xmlAttrPtr attr;
@@ -1028,9 +1031,9 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr)
xmlC14NErrInternal("processing xml:base attribute - can't get attr value");
return (NULL);
- }
+ }
- /* we need to add '/' if our current base uri ends with '..' or '.'
+ /* we need to add '/' if our current base uri ends with '..' or '.'
to ensure that we are forced to go "up" all the time */
tmp_str_len = xmlStrlen(tmp_str);
if(tmp_str_len > 1 && tmp_str[tmp_str_len - 2] == '.') {
@@ -1047,7 +1050,7 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr)
}
/* build uri */
- tmp_str2 = xmlBuildURI(res, tmp_str);
+ tmp_str2 = xmlBuildURI(res, tmp_str);
if(tmp_str2 == NULL) {
xmlFree(tmp_str);
xmlFree(res);
@@ -1080,7 +1083,7 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr)
xmlC14NErrInternal("processing xml:base attribute - can't construct attribute");
return (NULL);
}
-
+
/* done */
xmlFree(res);
return (attr);
@@ -1088,33 +1091,33 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr)
/**
* xmlC14NProcessAttrsAxis:
- * @ctx: the C14N context
+ * @ctx: the C14N context
* @cur: the current node
* @parent_visible: the visibility of parent node
* @all_parents_visible: the visibility of all parent nodes
*
* Prints out canonical attribute axis of the current node to the
- * buffer from C14N context as follows
+ * buffer from C14N context as follows
*
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n)
*
- * Attribute Axis
- * In lexicographic order (ascending), process each node that
+ * Attribute Axis
+ * In lexicographic order (ascending), process each node that
* is in the element's attribute axis and in the node-set.
- *
- * The processing of an element node E MUST be modified slightly
- * when an XPath node-set is given as input and the element's
+ *
+ * The processing of an element node E MUST be modified slightly
+ * when an XPath node-set is given as input and the element's
* parent is omitted from the node-set.
*
*
* Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n)
*
- * Canonical XML applied to a document subset requires the search of the
- * ancestor nodes of each orphan element node for attributes in the xml
- * namespace, such as xml:lang and xml:space. These are copied into the
- * element node except if a declaration of the same attribute is already
- * in the attribute axis of the element (whether or not it is included in
- * the document subset). This search and copying are omitted from the
+ * Canonical XML applied to a document subset requires the search of the
+ * ancestor nodes of each orphan element node for attributes in the xml
+ * namespace, such as xml:lang and xml:space. These are copied into the
+ * element node except if a declaration of the same attribute is already
+ * in the attribute axis of the element (whether or not it is included in
+ * the document subset). This search and copying are omitted from the
* Exclusive XML Canonicalization method.
*
* Returns 0 on success or -1 on fail.
@@ -1123,9 +1126,9 @@ static int
xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
{
xmlAttrPtr attr;
- xmlListPtr list;
+ xmlListPtr list;
xmlAttrPtr attrs_to_delete = NULL;
-
+
/* special processing for 1.1 spec */
xmlAttrPtr xml_base_attr = NULL;
xmlAttrPtr xml_lang_attr = NULL;
@@ -1147,19 +1150,19 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
switch(ctx->mode) {
case XML_C14N_1_0:
- /* The processing of an element node E MUST be modified slightly when an XPath node-set is
- * given as input and the element's parent is omitted from the node-set. The method for processing
- * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's
- * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such
- * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes,
- * remove any that are in E's attribute axis (whether or not they are in the node-set). Then,
- * lexicographically merge this attribute list with the nodes of E's attribute axis that are in
- * the node-set. The result of visiting the attribute axis is computed by processing the attribute
- * nodes in this merged attribute list.
+ /* The processing of an element node E MUST be modified slightly when an XPath node-set is
+ * given as input and the element's parent is omitted from the node-set. The method for processing
+ * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's
+ * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such
+ * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes,
+ * remove any that are in E's attribute axis (whether or not they are in the node-set). Then,
+ * lexicographically merge this attribute list with the nodes of E's attribute axis that are in
+ * the node-set. The result of visiting the attribute axis is computed by processing the attribute
+ * nodes in this merged attribute list.
*/
-
- /*
- * Add all visible attributes from current node.
+
+ /*
+ * Add all visible attributes from current node.
*/
attr = cur->properties;
while (attr != NULL) {
@@ -1170,16 +1173,16 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
attr = attr->next;
}
- /*
+ /*
* Handle xml attributes
*/
- if (parent_visible && (cur->parent != NULL) &&
- (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent)))
+ if (parent_visible && (cur->parent != NULL) &&
+ (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent)))
{
xmlNodePtr tmp;
/*
- * If XPath node-set is not specified then the parent is always
+ * If XPath node-set is not specified then the parent is always
* visible!
*/
tmp = cur->parent;
@@ -1200,12 +1203,12 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
/* done */
break;
case XML_C14N_EXCLUSIVE_1_0:
- /* attributes in the XML namespace, such as xml:lang and xml:space
- * are not imported into orphan nodes of the document subset
+ /* attributes in the XML namespace, such as xml:lang and xml:space
+ * are not imported into orphan nodes of the document subset
*/
- /*
- * Add all visible attributes from current node.
+ /*
+ * Add all visible attributes from current node.
*/
attr = cur->properties;
while (attr != NULL) {
@@ -1219,36 +1222,36 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
/* do nothing special for xml attributes */
break;
case XML_C14N_1_1:
- /* The processing of an element node E MUST be modified slightly when an XPath node-set is
- * given as input and some of the element's ancestors are omitted from the node-set.
+ /* The processing of an element node E MUST be modified slightly when an XPath node-set is
+ * given as input and some of the element's ancestors are omitted from the node-set.
*
- * Simple inheritable attributes are attributes that have a value that requires at most a simple
- * redeclaration. This redeclaration is done by supplying a new value in the child axis. The
- * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done
- * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes
+ * Simple inheritable attributes are attributes that have a value that requires at most a simple
+ * redeclaration. This redeclaration is done by supplying a new value in the child axis. The
+ * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done
+ * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes
* are xml:lang and xml:space.
- *
- * The method for processing the attribute axis of an element E in the node-set is hence enhanced.
- * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple
- * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they
- * are in the node-set). From this list of attributes, any simple inheritable attributes that are
- * already in E's attribute axis (whether or not they are in the node-set) are removed. Then,
- * lexicographically merge this attribute list with the nodes of E's attribute axis that are in
- * the node-set. The result of visiting the attribute axis is computed by processing the attribute
+ *
+ * The method for processing the attribute axis of an element E in the node-set is hence enhanced.
+ * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple
+ * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they
+ * are in the node-set). From this list of attributes, any simple inheritable attributes that are
+ * already in E's attribute axis (whether or not they are in the node-set) are removed. Then,
+ * lexicographically merge this attribute list with the nodes of E's attribute axis that are in
+ * the node-set. The result of visiting the attribute axis is computed by processing the attribute
* nodes in this merged attribute list.
- *
- * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is
+ *
+ * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is
* performed.
- *
- * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond
+ *
+ * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond
* a simple redeclaration.
- *
- * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed
+ *
+ * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed
* as ordinary attributes.
*/
- /*
- * Add all visible attributes from current node.
+ /*
+ * Add all visible attributes from current node.
*/
attr = cur->properties;
while (attr != NULL) {
@@ -1265,7 +1268,7 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
if((!matched) && (xml_lang_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "lang")) {
xml_lang_attr = attr;
matched = 1;
- }
+ }
if((!matched) && (xml_space_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "space")) {
xml_space_attr = attr;
matched = 1;
@@ -1282,11 +1285,11 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
xmlListInsert(list, attr);
}
}
-
+
/* move to the next one */
attr = attr->next;
}
-
+
/* special processing for XML attribute kiks in only when we have invisible parents */
if ((parent_visible)) {
@@ -1311,7 +1314,7 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
}
if(xml_base_attr != NULL) {
xml_base_attr = xmlC14NFixupBaseAttr(ctx, xml_base_attr);
- if(xml_base_attr != NULL) {
+ if(xml_base_attr != NULL) {
xmlListInsert(list, xml_base_attr);
/* note that we MUST delete returned attr node ourselves! */
@@ -1325,12 +1328,12 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
break;
}
- /*
- * print out all elements from list
+ /*
+ * print out all elements from list
*/
xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs, (const void *) ctx);
- /*
+ /*
* Cleanup
*/
xmlFreePropList(attrs_to_delete);
@@ -1338,7 +1341,7 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
return (0);
}
-/**
+/**
* xmlC14NCheckForRelativeNamespaces:
* @ctx: the C14N context
* @cur: the current element node
@@ -1388,23 +1391,23 @@ xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur)
/**
* xmlC14NProcessElementNode:
- * @ctx: the pointer to C14N context object
+ * @ctx: the pointer to C14N context object
* @cur: the node to process
* @visible: this node is visible
* @all_parents_visible: whether all the parents of this node are visible
- *
+ *
* Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n)
*
* Element Nodes
- * If the element is not in the node-set, then the result is obtained
- * by processing the namespace axis, then the attribute axis, then
- * processing the child nodes of the element that are in the node-set
- * (in document order). If the element is in the node-set, then the result
- * is an open angle bracket (<), the element QName, the result of
- * processing the namespace axis, the result of processing the attribute
- * axis, a close angle bracket (>), the result of processing the child
- * nodes of the element that are in the node-set (in document order), an
- * open angle bracket, a forward slash (/), the element QName, and a close
+ * If the element is not in the node-set, then the result is obtained
+ * by processing the namespace axis, then the attribute axis, then
+ * processing the child nodes of the element that are in the node-set
+ * (in document order). If the element is in the node-set, then the result
+ * is an open angle bracket (<), the element QName, the result of
+ * processing the namespace axis, the result of processing the attribute
+ * axis, a close angle bracket (>), the result of processing the child
+ * nodes of the element that are in the node-set (in document order), an
+ * open angle bracket, a forward slash (/), the element QName, and a close
* angle bracket.
*
* Returns non-negative value on success or negative value on fail
@@ -1421,7 +1424,7 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
return (-1);
}
- /*
+ /*
* Check relative relative namespaces:
* implementations of XML canonicalization MUST report an operation
* failure on documents containing relative namespace URIs.
@@ -1432,13 +1435,13 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
}
- /*
+ /*
* Save ns_rendered stack position
*/
memset(&state, 0, sizeof(state));
xmlC14NVisibleNsStackSave(ctx->ns_rendered, &state);
- if (visible) {
+ if (visible) {
if (ctx->parent_is_doc) {
/* save this flag into the stack */
parent_is_doc = ctx->parent_is_doc;
@@ -1468,14 +1471,14 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
if(visible) {
xmlC14NVisibleNsStackShift(ctx->ns_rendered);
}
-
+
ret = xmlC14NProcessAttrsAxis(ctx, cur, visible);
if (ret < 0) {
xmlC14NErrInternal("processing attributes axis");
- return (-1);
+ return (-1);
}
- if (visible) {
+ if (visible) {
xmlOutputBufferWriteString(ctx->buf, ">");
}
if (cur->children != NULL) {
@@ -1501,7 +1504,7 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
}
}
- /*
+ /*
* Restore ns_rendered stack position
*/
xmlC14NVisibleNsStackRestore(ctx->ns_rendered, &state);
@@ -1510,9 +1513,9 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
/**
* xmlC14NProcessNode:
- * @ctx: the pointer to C14N context object
+ * @ctx: the pointer to C14N context object
* @cur: the node to process
- *
+ *
* Processes the given node
*
* Returns non-negative value on success or negative value on fail
@@ -1537,9 +1540,9 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
case XML_TEXT_NODE:
/*
* Text Nodes
- * the string value, except all ampersands are replaced
- * by &amp;, all open angle brackets (<) are replaced by &lt;, all closing
- * angle brackets (>) are replaced by &gt;, and all #xD characters are
+ * the string value, except all ampersands are replaced
+ * by &amp;, all open angle brackets (<) are replaced by &lt;, all closing
+ * angle brackets (>) are replaced by &gt;, and all #xD characters are
* replaced by &#xD;.
*/
/* cdata sections are processed as text nodes */
@@ -1559,16 +1562,16 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
}
break;
case XML_PI_NODE:
- /*
- * Processing Instruction (PI) Nodes-
- * The opening PI symbol (<?), the PI target name of the node,
- * a leading space and the string value if it is not empty, and
- * the closing PI symbol (?>). If the string value is empty,
- * then the leading space is not added. Also, a trailing #xA is
- * rendered after the closing PI symbol for PI children of the
- * root node with a lesser document order than the document
- * element, and a leading #xA is rendered before the opening PI
- * symbol of PI children of the root node with a greater document
+ /*
+ * Processing Instruction (PI) Nodes-
+ * The opening PI symbol (<?), the PI target name of the node,
+ * a leading space and the string value if it is not empty, and
+ * the closing PI symbol (?>). If the string value is empty,
+ * then the leading space is not added. Also, a trailing #xA is
+ * rendered after the closing PI symbol for PI children of the
+ * root node with a lesser document order than the document
+ * element, and a leading #xA is rendered before the opening PI
+ * symbol of PI children of the root node with a greater document
* order than the document element.
*/
if (visible) {
@@ -1607,17 +1610,17 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
case XML_COMMENT_NODE:
/*
* Comment Nodes
- * Nothing if generating canonical XML without comments. For
- * canonical XML with comments, generate the opening comment
- * symbol (<!--), the string value of the node, and the
- * closing comment symbol (-->). Also, a trailing #xA is rendered
- * after the closing comment symbol for comment children of the
- * root node with a lesser document order than the document
- * element, and a leading #xA is rendered before the opening
- * comment symbol of comment children of the root node with a
- * greater document order than the document element. (Comment
- * children of the root node represent comments outside of the
- * top-level document element and outside of the document type
+ * Nothing if generating canonical XML without comments. For
+ * canonical XML with comments, generate the opening comment
+ * symbol (<!--), the string value of the node, and the
+ * closing comment symbol (-->). Also, a trailing #xA is rendered
+ * after the closing comment symbol for comment children of the
+ * root node with a lesser document order than the document
+ * element, and a leading #xA is rendered before the opening
+ * comment symbol of comment children of the root node with a
+ * greater document order than the document element. (Comment
+ * children of the root node represent comments outside of the
+ * top-level document element and outside of the document type
* declaration).
*/
if (visible && ctx->with_comments) {
@@ -1687,8 +1690,8 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
case XML_XINCLUDE_START:
case XML_XINCLUDE_END:
#endif
- /*
- * should be ignored according to "W3C Canonical XML"
+ /*
+ * should be ignored according to "W3C Canonical XML"
*/
break;
default:
@@ -1701,9 +1704,9 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
/**
* xmlC14NProcessNodeList:
- * @ctx: the pointer to C14N context object
+ * @ctx: the pointer to C14N context object
* @cur: the node to start from
- *
+ *
* Processes all nodes in the row starting from cur.
*
* Returns non-negative value on success or negative value on fail
@@ -1728,7 +1731,7 @@ xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur)
/**
* xmlC14NFreeCtx:
* @ctx: the pointer to C14N context object
- *
+ *
* Cleanups the C14N context object.
*/
@@ -1748,27 +1751,27 @@ xmlC14NFreeCtx(xmlC14NCtxPtr ctx)
/**
* xmlC14NNewCtx:
- * @doc: the XML document for canonization
- * @is_visible_callback:the function to use to determine is node visible
+ * @doc: the XML document for canonization
+ * @is_visible_callback:the function to use to determine is node visible
* or not
- * @user_data: the first parameter for @is_visible_callback function
+ * @user_data: the first parameter for @is_visible_callback function
* (in most cases, it is nodes set)
* @mode: the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixe the list of inclusive namespace prefixes
+ * @inclusive_ns_prefixe the list of inclusive namespace prefixes
* ended with a NULL or NULL if there is no
- * inclusive namespaces (only for `
+ * inclusive namespaces (only for `
* canonicalization)
- * @with_comments: include comments in the result (!=0) or not (==0)
- * @buf: the output buffer to store canonical XML; this
+ * @with_comments: include comments in the result (!=0) or not (==0)
+ * @buf: the output buffer to store canonical XML; this
* buffer MUST have encoder==NULL because C14N requires
* UTF-8 output
- *
+ *
* Creates new C14N context object to store C14N parameters.
*
* Returns pointer to newly created object (success) or NULL (fail)
*/
static xmlC14NCtxPtr
-xmlC14NNewCtx(xmlDocPtr doc,
+xmlC14NNewCtx(xmlDocPtr doc,
xmlC14NIsVisibleCallback is_visible_callback, void* user_data,
xmlC14NMode mode, xmlChar ** inclusive_ns_prefixes,
int with_comments, xmlOutputBufferPtr buf)
@@ -1840,28 +1843,28 @@ xmlC14NNewCtx(xmlDocPtr doc,
/**
* xmlC14NExecute:
- * @doc: the XML document for canonization
- * @is_visible_callback:the function to use to determine is node visible
+ * @doc: the XML document for canonization
+ * @is_visible_callback:the function to use to determine is node visible
* or not
- * @user_data: the first parameter for @is_visible_callback function
+ * @user_data: the first parameter for @is_visible_callback function
* (in most cases, it is nodes set)
* @mode: the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
* ended with a NULL or NULL if there is no
- * inclusive namespaces (only for exclusive
+ * inclusive namespaces (only for exclusive
* canonicalization, ignored otherwise)
- * @with_comments: include comments in the result (!=0) or not (==0)
- * @buf: the output buffer to store canonical XML; this
+ * @with_comments: include comments in the result (!=0) or not (==0)
+ * @buf: the output buffer to store canonical XML; this
* buffer MUST have encoder==NULL because C14N requires
* UTF-8 output
- *
+ *
* Dumps the canonized image of given XML document into the provided buffer.
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
*
- * Returns non-negative value on success or a negative value on fail
+ * Returns non-negative value on success or a negative value on fail
*/
-int
+int
xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
void* user_data, int mode, xmlChar **inclusive_ns_prefixes,
int with_comments, xmlOutputBufferPtr buf) {
@@ -1875,15 +1878,15 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
return (-1);
}
- /* for backward compatibility, we have to have "mode" as "int"
+ /* for backward compatibility, we have to have "mode" as "int"
and here we check that user gives valid value */
switch(mode) {
case XML_C14N_1_0:
case XML_C14N_EXCLUSIVE_1_0:
- case XML_C14N_1_1:
+ case XML_C14N_1_1:
c14n_mode = (xmlC14NMode)mode;
break;
- default:
+ default:
xmlC14NErrParam("invalid mode for executing c14n");
return (-1);
}
@@ -1897,7 +1900,7 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
return (-1);
}
- ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data,
+ ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data,
c14n_mode, inclusive_ns_prefixes,
with_comments, buf);
if (ctx == NULL) {
@@ -1908,12 +1911,12 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
- /*
+ /*
* Root Node
- * The root node is the parent of the top-level document element. The
- * result of processing each of its child nodes that is in the node-set
- * in document order. The root node does not generate a byte order mark,
- * XML declaration, nor anything from within the document type
+ * The root node is the parent of the top-level document element. The
+ * result of processing each of its child nodes that is in the node-set
+ * in document order. The root node does not generate a byte order mark,
+ * XML declaration, nor anything from within the document type
* declaration.
*/
if (doc->children != NULL) {
@@ -1935,7 +1938,7 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
return (-1);
}
- /*
+ /*
* Cleanup
*/
xmlC14NFreeCtx(ctx);
@@ -1944,30 +1947,30 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
/**
* xmlC14NDocSaveTo:
- * @doc: the XML document for canonization
- * @nodes: the nodes set to be included in the canonized image
- * or NULL if all document nodes should be included
+ * @doc: the XML document for canonization
+ * @nodes: the nodes set to be included in the canonized image
+ * or NULL if all document nodes should be included
* @mode: the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
* ended with a NULL or NULL if there is no
- * inclusive namespaces (only for exclusive
+ * inclusive namespaces (only for exclusive
* canonicalization, ignored otherwise)
- * @with_comments: include comments in the result (!=0) or not (==0)
- * @buf: the output buffer to store canonical XML; this
+ * @with_comments: include comments in the result (!=0) or not (==0)
+ * @buf: the output buffer to store canonical XML; this
* buffer MUST have encoder==NULL because C14N requires
* UTF-8 output
- *
+ *
* Dumps the canonized image of given XML document into the provided buffer.
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
*
- * Returns non-negative value on success or a negative value on fail
+ * Returns non-negative value on success or a negative value on fail
*/
int
xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
int mode, xmlChar ** inclusive_ns_prefixes,
int with_comments, xmlOutputBufferPtr buf) {
- return(xmlC14NExecute(doc,
+ return(xmlC14NExecute(doc,
(xmlC14NIsVisibleCallback)xmlC14NIsNodeInNodeset,
nodes,
mode,
@@ -1979,24 +1982,24 @@ xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
/**
* xmlC14NDocDumpMemory:
- * @doc: the XML document for canonization
- * @nodes: the nodes set to be included in the canonized image
- * or NULL if all document nodes should be included
+ * @doc: the XML document for canonization
+ * @nodes: the nodes set to be included in the canonized image
+ * or NULL if all document nodes should be included
* @mode: the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
* ended with a NULL or NULL if there is no
- * inclusive namespaces (only for exclusive
+ * inclusive namespaces (only for exclusive
* canonicalization, ignored otherwise)
- * @with_comments: include comments in the result (!=0) or not (==0)
- * @doc_txt_ptr: the memory pointer for allocated canonical XML text;
+ * @with_comments: include comments in the result (!=0) or not (==0)
+ * @doc_txt_ptr: the memory pointer for allocated canonical XML text;
* the caller of this functions is responsible for calling
- * xmlFree() to free allocated memory
- *
+ * xmlFree() to free allocated memory
+ *
* Dumps the canonized image of given XML document into memory.
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
*
- * Returns the number of bytes written on success or a negative value on fail
+ * Returns the number of bytes written on success or a negative value on fail
*/
int
xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
@@ -2014,7 +2017,7 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
*doc_txt_ptr = NULL;
/*
- * create memory buffer with UTF8 (default) encoding
+ * create memory buffer with UTF8 (default) encoding
*/
buf = xmlAllocOutputBuffer(NULL);
if (buf == NULL) {
@@ -2033,9 +2036,9 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
return (-1);
}
- ret = buf->buffer->use;
+ ret = xmlBufUse(buf->buffer);
if (ret > 0) {
- *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret);
+ *doc_txt_ptr = xmlStrndup(xmlBufContent(buf->buffer), ret);
}
(void) xmlOutputBufferClose(buf);
@@ -2048,26 +2051,26 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
/**
* xmlC14NDocSave:
- * @doc: the XML document for canonization
- * @nodes: the nodes set to be included in the canonized image
- * or NULL if all document nodes should be included
+ * @doc: the XML document for canonization
+ * @nodes: the nodes set to be included in the canonized image
+ * or NULL if all document nodes should be included
* @mode: the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
* ended with a NULL or NULL if there is no
- * inclusive namespaces (only for exclusive
+ * inclusive namespaces (only for exclusive
* canonicalization, ignored otherwise)
- * @with_comments: include comments in the result (!=0) or not (==0)
- * @filename: the filename to store canonical XML image
- * @compression: the compression level (zlib requred):
+ * @with_comments: include comments in the result (!=0) or not (==0)
+ * @filename: the filename to store canonical XML image
+ * @compression: the compression level (zlib requred):
* -1 - libxml default,
- * 0 - uncompressed,
+ * 0 - uncompressed,
* >0 - compression level
- *
+ *
* Dumps the canonized image of given XML document into the file.
* For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
* "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
*
- * Returns the number of bytes written success or a negative value on fail
+ * Returns the number of bytes written success or a negative value on fail
*/
int
xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
@@ -2086,7 +2089,7 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
compression = xmlGetCompressMode();
#endif
- /*
+ /*
* save the content to a temp buffer, use default UTF8 encoding.
*/
buf = xmlOutputBufferCreateFilename(filename, NULL, compression);
@@ -2106,8 +2109,8 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
return (-1);
}
- /*
- * get the numbers of bytes written
+ /*
+ * get the numbers of bytes written
*/
ret = xmlOutputBufferClose(buf);
return (ret);
@@ -2121,14 +2124,14 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
#define growBufferReentrant() { \
buffer_size *= 2; \
buffer = (xmlChar *) \
- xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \
+ xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \
if (buffer == NULL) { \
xmlC14NErrMemory("growing buffer"); \
return(NULL); \
} \
}
-/**
+/**
* xmlC11NNormalizeString:
* @input: the input string
* @mode: the normalization mode (attribute, comment, PI or text)
diff --git a/catalog.c b/catalog.c
index fb586c1..5773db3 100644
--- a/catalog.c
+++ b/catalog.c
@@ -1,5 +1,5 @@
/**
- * catalog.c: set of generic Catalog related routines
+ * catalog.c: set of generic Catalog related routines
*
* Reference: SGML Open Technical Resolution TR9401:1997.
* http://www.jclark.com/sp/catalog.htm
@@ -41,6 +41,8 @@
#include <libxml/threads.h>
#include <libxml/globals.h>
+#include "buf.h"
+
#define MAX_DELEGATE 50
#define MAX_CATAL_DEPTH 50
@@ -60,7 +62,7 @@
*> values "system" and "public". I have made the default be "system" to
*> match yours.
*/
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -82,10 +84,12 @@ static char XML_XML_DEFAULT_CATALOG[256] = "file:///etc/xml/catalog";
#define GetModuleHandleA GetModuleHandle
#define GetModuleFileNameA GetModuleFileName
#else
+#if !defined(_WINDOWS_)
void* __stdcall GetModuleHandleA(const char*);
unsigned long __stdcall GetModuleFileNameA(void*, char*, unsigned long);
#endif
#endif
+#endif
static xmlChar *xmlCatalogNormalizePublic(const xmlChar *pubID);
static int xmlExpandCatalog(xmlCatalogPtr catal, const char *filename);
@@ -206,7 +210,7 @@ static int xmlCatalogInitialized = 0;
/************************************************************************
* *
- * Catalog error handlers *
+ * Catalog error handlers *
* *
************************************************************************/
@@ -259,9 +263,9 @@ xmlCatalogErr(xmlCatalogEntryPtr catal, xmlNodePtr node, int error,
* @name: name of the entry
* @value: value of the entry
* @prefer: the PUBLIC vs. SYSTEM current preference value
- * @group: for members of a group, the group entry
+ * @group: for members of a group, the group entry
*
- * create a new Catalog entry, this type is shared both by XML and
+ * create a new Catalog entry, this type is shared both by XML and
* SGML catalogs, but the acceptable types values differs.
*
* Returns the xmlCatalogEntryPtr or NULL in case of error
@@ -399,7 +403,7 @@ xmlFreeCatalogHashEntryList(xmlCatalogEntryPtr catal) {
* @type: type of catalog
* @prefer: the PUBLIC vs. SYSTEM current preference value
*
- * create a new Catalog, this type is shared both by XML and
+ * create a new Catalog, this type is shared both by XML and
* SGML catalogs, but the acceptable types values differs.
*
* Returns the xmlCatalogPtr or NULL in case of error
@@ -567,7 +571,7 @@ static void xmlDumpXMLCatalogNode(xmlCatalogEntryPtr catal, xmlNodePtr catalog,
xns = xmlSearchNsByHref(doc, node, XML_XML_NAMESPACE);
if (xns != NULL)
xmlSetNsProp(node, xns, BAD_CAST "base",
- cur->value);
+ cur->value);
}
switch (cur->prefer) {
case XML_CATA_PREFER_NONE:
@@ -685,7 +689,7 @@ BAD_CAST "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd");
xmlAddChild((xmlNodePtr) doc, catalog);
xmlDumpXMLCatalogNode(catal, catalog, doc, ns, NULL);
-
+
/*
* reserialize it
*/
@@ -822,7 +826,7 @@ xmlCatalogUnWrapURN(const xmlChar *urn) {
if (xmlStrncmp(urn, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1))
return(NULL);
urn += sizeof(XML_URN_PUBID) - 1;
-
+
while (*urn != 0) {
if (i > sizeof(result) - 4)
break;
@@ -912,10 +916,7 @@ xmlParseCatalogFile(const char *filename) {
inputStream->filename = (char *) xmlCanonicPath((const xmlChar *)filename);
inputStream->buf = buf;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end =
- &inputStream->buf->buffer->content[inputStream->buf->buffer->use];
+ xmlBufResetInput(buf->buffer, inputStream);
inputPush(ctxt, inputStream);
if ((ctxt->directory == NULL) && (directory == NULL))
@@ -938,7 +939,7 @@ xmlParseCatalogFile(const char *filename) {
ctxt->myDoc = NULL;
}
xmlFreeParserCtxt(ctxt);
-
+
return(ret);
}
@@ -990,9 +991,14 @@ xmlLoadFileContent(const char *filename)
return (NULL);
}
#endif
- content = xmlMallocAtomic(size + 10);
+ content = (xmlChar*)xmlMallocAtomic(size + 10);
if (content == NULL) {
xmlCatalogErrMemory("allocating catalog data");
+#ifdef HAVE_STAT
+ close(fd);
+#else
+ fclose(fd);
+#endif
return (NULL);
}
#ifdef HAVE_STAT
@@ -1328,7 +1334,7 @@ xmlParseXMLCatalogNodeList(xmlNodePtr cur, xmlCatalogPrefer prefer,
*
* Parses the catalog file to extract the XML tree and then analyze the
* tree to build a list of Catalog entries corresponding to this catalog
- *
+ *
* Returns the resulting Catalog entries list
*/
static xmlCatalogEntryPtr
@@ -1396,14 +1402,14 @@ xmlParseXMLCatalogFile(xmlCatalogPrefer prefer, const xmlChar *filename) {
* @catal: an existing but incomplete catalog entry
*
* Fetch and parse the subcatalog referenced by an entry
- *
+ *
* Returns 0 in case of success, -1 otherwise
*/
static int
xmlFetchXMLCatalogFile(xmlCatalogEntryPtr catal) {
xmlCatalogEntryPtr doc;
- if (catal == NULL)
+ if (catal == NULL)
return(-1);
if (catal->URL == NULL)
return(-1);
@@ -1495,7 +1501,7 @@ xmlAddXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *type,
xmlCatalogEntryType typ;
int doregister = 0;
- if ((catal == NULL) ||
+ if ((catal == NULL) ||
((catal->type != XML_CATA_CATALOG) &&
(catal->type != XML_CATA_BROKEN_CATALOG)))
return(-1);
@@ -1548,7 +1554,7 @@ xmlAddXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *type,
NULL, catal->prefer, NULL);
if (doregister) {
catal->type = XML_CATA_CATALOG;
- cur = xmlHashLookup(xmlCatalogXMLFiles, catal->URL);
+ cur = (xmlCatalogEntryPtr)xmlHashLookup(xmlCatalogXMLFiles, catal->URL);
if (cur != NULL)
cur->children = catal->children;
}
@@ -1571,7 +1577,7 @@ xmlDelXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *value) {
xmlCatalogEntryPtr cur;
int ret = 0;
- if ((catal == NULL) ||
+ if ((catal == NULL) ||
((catal->type != XML_CATA_CATALOG) &&
(catal->type != XML_CATA_BROKEN_CATALOG)))
return(-1);
@@ -1786,7 +1792,7 @@ xmlCatalogXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID,
}
if (nbList < MAX_DELEGATE)
delegates[nbList++] = cur->URL;
-
+
if (cur->children == NULL) {
xmlFetchXMLCatalogFile(cur);
}
@@ -1999,7 +2005,7 @@ xmlCatalogListXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID,
xmlChar *ret = NULL;
xmlChar *urnID = NULL;
xmlChar *normid;
-
+
if (catal == NULL)
return(NULL);
if ((pubID == NULL) && (sysID == NULL))
@@ -2008,7 +2014,7 @@ xmlCatalogListXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID,
normid = xmlCatalogNormalizePublic(pubID);
if (normid != NULL)
pubID = (*normid != 0 ? normid : NULL);
-
+
if (!xmlStrncmp(pubID, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) {
urnID = xmlCatalogUnWrapURN(pubID);
if (xmlDebugCatalogs) {
@@ -2088,7 +2094,7 @@ static xmlChar *
xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) {
xmlChar *ret = NULL;
xmlChar *urnID = NULL;
-
+
if (catal == NULL)
return(NULL);
if (URI == NULL)
@@ -2148,7 +2154,7 @@ xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) {
*/
static const xmlChar *
xmlParseSGMLCatalogComment(const xmlChar *cur) {
- if ((cur[0] != '-') || (cur[1] != '-'))
+ if ((cur[0] != '-') || (cur[1] != '-'))
return(cur);
SKIP(2);
while ((cur[0] != 0) && ((cur[0] != '-') || ((cur[1] != '-'))))
@@ -2683,7 +2689,7 @@ xmlLoadACatalog(const char *filename)
first = content;
-
+
while ((*first != 0) && (*first != '-') && (*first != '<') &&
(!(((*first >= 'A') && (*first <= 'Z')) ||
((*first >= 'a') && (*first <= 'z')))))
@@ -2778,7 +2784,7 @@ xmlACatalogResolveSystem(xmlCatalogPtr catal, const xmlChar *sysID) {
if ((sysID == NULL) || (catal == NULL))
return(NULL);
-
+
if (xmlDebugCatalogs)
xmlGenericError(xmlGenericErrorContext,
"Resolve sysID %s\n", sysID);
@@ -2813,7 +2819,7 @@ xmlACatalogResolvePublic(xmlCatalogPtr catal, const xmlChar *pubID) {
if ((pubID == NULL) || (catal == NULL))
return(NULL);
-
+
if (xmlDebugCatalogs)
xmlGenericError(xmlGenericErrorContext,
"Resolve pubID %s\n", pubID);
@@ -2932,7 +2938,7 @@ xmlACatalogDump(xmlCatalogPtr catal, FILE *out) {
} else {
xmlHashScan(catal->sgml,
(xmlHashScanner) xmlCatalogDumpEntry, out);
- }
+ }
}
#endif /* LIBXML_OUTPUT_ENABLED */
@@ -2940,7 +2946,7 @@ xmlACatalogDump(xmlCatalogPtr catal, FILE *out) {
* xmlACatalogAdd:
* @catal: a Catalog
* @type: the type of record to add to the catalog
- * @orig: the system, public or prefix to match
+ * @orig: the system, public or prefix to match
* @replace: the replacement value for the match
*
* Add an entry in the catalog, it may overwrite existing but
@@ -2999,7 +3005,7 @@ xmlACatalogRemove(xmlCatalogPtr catal, const xmlChar *value) {
(xmlHashDeallocator) xmlFreeCatalogEntry);
if (res == 0)
res = 1;
- }
+ }
return(res);
}
@@ -3058,7 +3064,7 @@ xmlCatalogIsEmpty(xmlCatalogPtr catal) {
return(1);
if (res < 0)
return(-1);
- }
+ }
return(0);
}
@@ -3081,7 +3087,7 @@ xmlInitializeCatalogData(void) {
if (xmlCatalogInitialized != 0)
return;
- if (getenv("XML_DEBUG_CATALOG"))
+ if (getenv("XML_DEBUG_CATALOG"))
xmlDebugCatalogs = 1;
xmlCatalogMutex = xmlNewRMutex();
@@ -3102,7 +3108,7 @@ xmlInitializeCatalog(void) {
xmlInitializeCatalogData();
xmlRMutexLock(xmlCatalogMutex);
- if (getenv("XML_DEBUG_CATALOG"))
+ if (getenv("XML_DEBUG_CATALOG"))
xmlDebugCatalogs = 1;
if (xmlDefaultCatalog == NULL) {
@@ -3125,12 +3131,12 @@ xmlInitializeCatalog(void) {
unsigned long len = GetModuleFileNameA(hmodule, buf, 255);
if (len != 0) {
char* p = &(buf[len]);
- while (*p != '\\' && p > buf)
+ while (*p != '\\' && p > buf)
p--;
if (p != buf) {
xmlChar* uri;
strncpy(p, "\\..\\etc\\catalog", 255 - (p - buf));
- uri = xmlCanonicPath(buf);
+ uri = xmlCanonicPath((const xmlChar*)buf);
if (uri != NULL) {
strncpy(XML_XML_DEFAULT_CATALOG, uri, 255);
xmlFree(uri);
@@ -3144,15 +3150,15 @@ xmlInitializeCatalog(void) {
catalogs = XML_XML_DEFAULT_CATALOG;
#endif
- catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE,
+ catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE,
xmlCatalogDefaultPrefer);
if (catal != NULL) {
- /* the XML_CATALOG_FILES envvar is allowed to contain a
+ /* the XML_CATALOG_FILES envvar is allowed to contain a
space-separated list of entries. */
cur = catalogs;
nextent = &catal->xml;
while (*cur != '\0') {
- while (xmlIsBlank_ch(*cur))
+ while (xmlIsBlank_ch(*cur))
cur++;
if (*cur != 0) {
paths = cur;
@@ -3245,7 +3251,7 @@ xmlLoadCatalogs(const char *pathss) {
cur++;
path = xmlStrndup((const xmlChar *)paths, cur - paths);
#ifdef _WIN32
- iLen = strlen(path);
+ iLen = strlen((const char*)path);
for(i = 0; i < iLen; i++) {
if(path[i] == '\\') {
path[i] = '/';
@@ -3277,7 +3283,7 @@ xmlCatalogCleanup(void) {
xmlGenericError(xmlGenericErrorContext,
"Catalogs cleanup\n");
if (xmlCatalogXMLFiles != NULL)
- xmlHashFree(xmlCatalogXMLFiles,
+ xmlHashFree(xmlCatalogXMLFiles,
(xmlHashDeallocator)xmlFreeCatalogHashEntryList);
xmlCatalogXMLFiles = NULL;
if (xmlDefaultCatalog != NULL)
@@ -3392,7 +3398,7 @@ xmlCatalogDump(FILE *out) {
/**
* xmlCatalogAdd:
* @type: the type of record to add to the catalog
- * @orig: the system, public or prefix to match
+ * @orig: the system, public or prefix to match
* @replace: the replacement value for the match
*
* Add an entry in the catalog, it may overwrite existing but
@@ -3423,7 +3429,7 @@ xmlCatalogAdd(const xmlChar *type, const xmlChar *orig, const xmlChar *replace)
xmlRMutexUnlock(xmlCatalogMutex);
return(0);
- }
+ }
res = xmlACatalogAdd(xmlDefaultCatalog, type, orig, replace);
xmlRMutexUnlock(xmlCatalogMutex);
@@ -3549,8 +3555,8 @@ xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer) {
xmlGenericError(xmlGenericErrorContext,
"Setting catalog preference to SYSTEM\n");
break;
- case XML_CATA_PREFER_NONE:
- break;
+ default:
+ return(ret);
}
}
xmlCatalogDefaultPrefer = prefer;
@@ -3611,7 +3617,7 @@ xmlCatalogFreeLocal(void *catalogs) {
*
* Returns the updated list
*/
-void *
+void *
xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) {
xmlCatalogEntryPtr catal, add;
@@ -3631,7 +3637,7 @@ xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) {
return(catalogs);
catal = (xmlCatalogEntryPtr) catalogs;
- if (catal == NULL)
+ if (catal == NULL)
return((void *) add);
while (catal->next != NULL)
@@ -3646,7 +3652,7 @@ xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) {
* @pubID: the public ID string
* @sysID: the system ID string
*
- * Do a complete resolution lookup of an External Identifier using a
+ * Do a complete resolution lookup of an External Identifier using a
* document's private catalog list
*
* Returns the URI of the resource or NULL if not found, it must be freed
@@ -3691,7 +3697,7 @@ xmlCatalogLocalResolve(void *catalogs, const xmlChar *pubID,
* @catalogs: a document's list of catalogs
* @URI: the URI
*
- * Do a complete resolution lookup of an URI using a
+ * Do a complete resolution lookup of an URI using a
* document's private catalog list
*
* Returns the URI of the resource or NULL if not found, it must be freed
@@ -3752,7 +3758,7 @@ xmlCatalogGetSystem(const xmlChar *sysID) {
if (sysID == NULL)
return(NULL);
-
+
/*
* Check first the XML catalogs
*/
@@ -3796,7 +3802,7 @@ xmlCatalogGetPublic(const xmlChar *pubID) {
if (pubID == NULL)
return(NULL);
-
+
/*
* Check first the XML catalogs
*/
diff --git a/chvalid.c b/chvalid.c
index 00dd962..06e8db0 100755..100644
--- a/chvalid.c
+++ b/chvalid.c
@@ -46,109 +46,109 @@ const unsigned char xmlIsPubidChar_tab[256] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };
-static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131},
- {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3},
- {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8},
- {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
- {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da},
- {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3},
- {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481},
- {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb},
- {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559},
- {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
- {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce},
- {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939},
- {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990},
- {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9},
- {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
- {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
- {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
- {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91},
- {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9},
- {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
- {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39},
- {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a},
- {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
- {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
- {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
- {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
- {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
- {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10},
- {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e},
- {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82},
- {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d},
- {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5},
- {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0},
- {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47},
- {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100},
- {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c},
- {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140},
- {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155},
- {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165},
- {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173},
- {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab},
- {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2},
- {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b},
- {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
- {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
- {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
- {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
- {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc},
- {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182},
+static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131},
+ {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3},
+ {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8},
+ {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
+ {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da},
+ {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3},
+ {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481},
+ {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb},
+ {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559},
+ {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
+ {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce},
+ {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939},
+ {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990},
+ {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9},
+ {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
+ {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
+ {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
+ {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91},
+ {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9},
+ {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
+ {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39},
+ {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a},
+ {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
+ {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
+ {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
+ {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
+ {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
+ {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10},
+ {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e},
+ {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82},
+ {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d},
+ {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5},
+ {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0},
+ {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47},
+ {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100},
+ {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c},
+ {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140},
+ {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155},
+ {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165},
+ {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173},
+ {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab},
+ {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2},
+ {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b},
+ {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
+ {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
+ {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
+ {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
+ {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc},
+ {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182},
{0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}};
const xmlChRangeGroup xmlIsBaseCharGroup =
{197, 0, xmlIsBaseChar_srng, (xmlChLRangePtr)0};
-static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff},
+static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff},
{0xe000, 0xfffd}};
static const xmlChLRange xmlIsChar_lrng[] = { {0x10000, 0x10ffff}};
const xmlChRangeGroup xmlIsCharGroup =
{2, 1, xmlIsChar_srng, xmlIsChar_lrng};
-static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345},
- {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
- {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
- {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df},
- {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903},
- {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954},
- {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be},
- {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
- {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c},
- {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48},
- {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc},
- {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03},
- {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d},
- {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8},
- {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44},
- {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83},
- {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
- {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
- {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e},
- {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd},
- {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39},
- {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b},
- {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7},
- {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f},
+static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345},
+ {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
+ {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
+ {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df},
+ {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903},
+ {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954},
+ {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be},
+ {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
+ {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c},
+ {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48},
+ {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc},
+ {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03},
+ {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d},
+ {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8},
+ {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44},
+ {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83},
+ {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
+ {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
+ {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e},
+ {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd},
+ {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39},
+ {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b},
+ {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7},
+ {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f},
{0x3099, 0x3099}, {0x309a, 0x309a}};
const xmlChRangeGroup xmlIsCombiningGroup =
{95, 0, xmlIsCombining_srng, (xmlChLRangePtr)0};
-static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669},
- {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
- {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
- {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
+static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669},
+ {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
+ {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
+ {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
{0xf20, 0xf29}};
const xmlChRangeGroup xmlIsDigitGroup =
{14, 0, xmlIsDigit_srng, (xmlChLRangePtr)0};
-static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0},
- {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46},
- {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e},
+static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0},
+ {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46},
+ {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e},
{0x30fc, 0x30fe}};
const xmlChRangeGroup xmlIsExtenderGroup =
{10, 0, xmlIsExtender_srng, (xmlChLRangePtr)0};
-static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007},
+static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007},
{0x3021, 0x3029}, {0x4e00, 0x9fa5}};
const xmlChRangeGroup xmlIsIdeographicGroup =
{3, 0, xmlIsIdeographic_srng, (xmlChLRangePtr)0};
diff --git a/config.guess b/config.guess
index dc84c68..b79252d 100755
--- a/config.guess
+++ b/config.guess
@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2009-11-20'
+timestamp='2013-06-10'
# This file 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
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -17,26 +15,22 @@ timestamp='2009-11-20'
# 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., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -56,8 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -139,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -180,7 +194,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
@@ -201,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -223,7 +241,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -269,7 +287,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -295,12 +316,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -394,23 +415,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@@ -480,8 +501,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -494,7 +515,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@@ -551,7 +572,7 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[456])
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -594,52 +615,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -730,22 +751,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@@ -769,14 +790,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -788,30 +809,35 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
@@ -848,15 +874,22 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -866,52 +899,56 @@ EOF
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
+ esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -930,51 +967,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
+ or1k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ echo hppa64-unknown-linux-${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -983,11 +1032,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@@ -1019,7 +1068,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@@ -1047,13 +1096,13 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
- exit ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@@ -1088,8 +1137,8 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
@@ -1132,10 +1181,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@@ -1161,11 +1210,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@@ -1178,6 +1227,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1204,19 +1256,21 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1230,7 +1284,10 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1275,13 +1332,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1299,11 +1356,11 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
@@ -1321,11 +1378,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
diff --git a/config.h.in b/config.h.in
index 4b080ba..eaef4d4 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,4 +1,7 @@
-/* config.h.in. Generated from configure.in by autoheader. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Type cast for the gethostbyname() argument */
+#undef GETHOSTBYNAME_ARG_CAST
/* Define to 1 if you have the <ansidecl.h> header file. */
#undef HAVE_ANSIDECL_H
@@ -69,6 +72,9 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
+/* Define to 1 if you have the `isascii' function. */
+#undef HAVE_ISASCII
+
/* Define if isinf is there */
#undef HAVE_ISINF
@@ -111,6 +117,17 @@
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
+
+/* mmap() is no good without munmap() */
+#if defined(HAVE_MMAP) && !defined(HAVE_MUNMAP)
+# undef /**/ HAVE_MMAP
+#endif
+
/* Define to 1 if you have the <nan.h> header file. */
#undef HAVE_NAN_H
@@ -132,6 +149,9 @@
/* Define if <pthread.h> is there */
#undef HAVE_PTHREAD_H
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
/* Define to 1 if you have the `rand' function. */
#undef HAVE_RAND
@@ -279,20 +299,35 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
+/* Type cast for the send() function 2nd arg */
+#undef SEND_ARG2_CAST
+
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Support for IPv6 */
#undef SUPPORT_IP6
+/* Define if va_list is an array type */
+#undef VA_LIST_IS_ARRAY
+
/* Version number of package */
#undef VERSION
/* Determine what socket length (socklen_t) data type is */
#undef XML_SOCKLEN_T
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
/* Using the Win32 Socket implementation */
#undef _WINSOCKAPI_
/* ss_family is not defined here, use __ss_family instead */
#undef ss_family
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
diff --git a/config.sub b/config.sub
index 2a55a50..c765b34 100755
--- a/config.sub
+++ b/config.sub
@@ -1,38 +1,31 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2009-11-20'
+timestamp='2013-04-24'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file 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
+# This file 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 3 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.
+# 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., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -75,8 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,13 +115,18 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -152,12 +149,12 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
- -bluegene*)
- os=-cnk
+ -bluegene*)
+ os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
@@ -173,10 +170,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
@@ -221,6 +218,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -245,20 +248,27 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -276,34 +286,45 @@ case $basic_machine in
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
- | nios | nios2 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
- | or32 \
+ | open8 \
+ | or1k | or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
- | v850 | v850e \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -313,6 +334,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@@ -327,25 +363,30 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -363,29 +404,34 @@ case $basic_machine in
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
- | nios-* | nios2-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
| tron-* \
| ubicom32-* \
- | v850-* | v850e-* | vax-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@@ -410,7 +456,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@@ -480,11 +526,20 @@ case $basic_machine in
basic_machine=powerpc-ibm
os=-cnk
;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
- cegcc)
+ cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
@@ -516,7 +571,7 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16)
+ cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
@@ -674,7 +729,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -732,9 +786,13 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -771,10 +829,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -839,6 +905,12 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -921,9 +993,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -933,7 +1006,7 @@ case $basic_machine in
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
@@ -948,7 +1021,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1017,6 +1094,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -1073,20 +1153,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
tile*)
- basic_machine=tile-unknown
+ basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@@ -1156,6 +1224,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1253,11 +1324,11 @@ esac
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ -auroraux)
+ os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1281,20 +1352,21 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1341,7 +1413,7 @@ case $os in
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
@@ -1390,7 +1462,7 @@ case $os in
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
@@ -1426,15 +1498,14 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
- ;;
-zvmoe)
os=-zvmoe
;;
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1457,10 +1528,10 @@ else
# system, and we'll never get to this point.
case $basic_machine in
- score-*)
+ score-*)
os=-elf
;;
- spu-*)
+ spu-*)
os=-elf
;;
*-acorn)
@@ -1472,8 +1543,20 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
@@ -1493,14 +1576,11 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
- mep-*)
+ mep-*)
os=-elf
;;
mips*-cisco)
@@ -1509,6 +1589,9 @@ case $basic_machine in
mips*-*)
os=-elf
;;
+ or1k-*)
+ os=-elf
+ ;;
or32-*)
os=-coff
;;
@@ -1527,7 +1610,7 @@ case $basic_machine in
*-ibm)
os=-aix
;;
- *-knuth)
+ *-knuth)
os=-mmixware
;;
*-wec)
diff --git a/configure b/configure
index e152273..d63dce1 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,9 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
+# Generated by GNU Autoconf 2.69.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -134,6 +132,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -167,7 +190,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -220,21 +244,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -336,6 +364,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -457,6 +493,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -491,16 +531,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -512,28 +552,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -642,15 +662,16 @@ TEST_REGEXPS
WITH_REGEXPS
TEST_SCHEMAS
WITH_SCHEMAS
-TEST_SCHEMATRON
-WITH_SCHEMATRON
WITH_ISO8859X
+ICU_LIBS
WITH_ICU
WITH_ICONV
WITH_OUTPUT
TEST_XPATH
XPATH_OBJ
WITH_XPATH
+TEST_SCHEMATRON
+WITH_SCHEMATRON
TEST_XINCLUDE
XINCLUDE_OBJ
WITH_XINCLUDE
@@ -675,6 +696,8 @@ WITH_HTML
TEST_PUSH
WITH_PUSH
TEST_SAX
+WITH_SAX1_SOURCES_FALSE
+WITH_SAX1_SOURCES_TRUE
WITH_SAX1
TEST_PATTERN
WITH_PATTERN
@@ -687,7 +710,9 @@ WITH_HTTP
FTP_OBJ
WITH_FTP
WITH_TREE
-THREADS_W32
+THREADS_W32_FALSE
+THREADS_W32_TRUE
+WITH_THREAD_ALLOC
TEST_THREADS
THREAD_CFLAGS
WITH_THREADS
@@ -728,7 +753,8 @@ MANIFEST_TOOL
RANLIB
ac_ct_AR
AR
-LN_S
+DLLTOOL
+OBJDUMP
NM
ac_ct_DUMPBIN
DUMPBIN
@@ -738,20 +764,21 @@ EGREP
GREP
SED
LIBTOOL
-OBJDUMP
-DLLTOOL
-AS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
XSLTPROC
XMLLINT
WGET
PERL
TAR
MV
-RM
CPP
+LN_S
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
+am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
@@ -767,6 +794,8 @@ CFLAGS
CC
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
am__untar
am__tar
AMTAR
@@ -876,6 +905,7 @@ with_output
with_pattern
with_push
with_python
+with_python_install_dir
with_reader
with_readline
with_regexps
@@ -906,7 +936,12 @@ CFLAGS
LDFLAGS
LIBS
CPPFLAGS
-CPP'
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+LZMA_CFLAGS
+LZMA_LIBS'
# Initialize some variables set by options.
@@ -1362,8 +1397,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1525,22 +1558,24 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-silent-rules less verbose build output (undo: `make V=1')
- --disable-silent-rules verbose build output (undo: `make V=0')
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
- --enable-rebuild-docs[=yes/no] rebuild some generated docs [default=yes]
+ --enable-rebuild-docs[=yes/no] rebuild some generated docs [default=no]
--enable-ipv6[=yes/no] enables compilation of IPv6 code [default=yes]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-pic try to use only PIC/non-PIC objects [default=use
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-sysroot=DIR Search for dependent libraries within DIR
@@ -1568,6 +1603,8 @@ Optional Packages:
--with-pattern add the xmlPattern selection interface (on)
--with-push add the PUSH parser interfaces (on)
--with-python[=DIR] build Python bindings if found
+ --with-python-install-dir=DIR
+ install Python bindings in DIR
--with-reader add the xmlReader parsing interface (on)
--with-readline=DIR use readline in DIR
--with-regexps add Regular Expressions support (on)
@@ -1597,6 +1634,13 @@ Some influential environment variables:
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPP C preprocessor
+ PKG_CONFIG path to pkg-config utility
+ PKG_CONFIG_PATH
+ directories to add to pkg-config's search path
+ PKG_CONFIG_LIBDIR
+ path overriding pkg-config's built-in search path
+ LZMA_CFLAGS C compiler flags for LZMA, overriding pkg-config
+ LZMA_LIBS linker flags for LZMA, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1665,9 +1709,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
configure
-generated by GNU Autoconf 2.68
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1780,7 +1824,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2025,12 +2069,66 @@ fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ case $ac_type in #(
+ uint$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+ break
+fi
+ done
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_uintX_t
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2377,6 +2475,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
ac_config_headers="$ac_config_headers config.h"
@@ -2482,8 +2581,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
LIBXML_MAJOR_VERSION=2
-LIBXML_MINOR_VERSION=8
-LIBXML_MICRO_VERSION=0
+LIBXML_MINOR_VERSION=9
+LIBXML_MICRO_VERSION=2
LIBXML_MICRO_VERSION_SUFFIX=
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
@@ -2524,7 +2623,7 @@ fi
VERSION=${LIBXML_VERSION}
-am__api_version='1.11'
+am__api_version='1.13'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -2563,7 +2662,7 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -2621,9 +2720,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -2634,32 +2730,40 @@ case `pwd` in
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
-alias in your environment" "$LINENO" 5
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$2" = conftest.file
)
then
@@ -2671,6 +2775,16 @@ Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
@@ -2693,12 +2807,12 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh}" != xset; then
@@ -2710,10 +2824,10 @@ if test x"${install_sh}" != xset; then
esac
fi
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
if test "$cross_compiling" != no; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -2732,7 +2846,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2772,7 +2886,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2823,7 +2937,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
@@ -2852,12 +2966,6 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
- [\\/$]* | ?:[\\/]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -2876,7 +2984,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2940,6 +3048,45 @@ else
fi
rmdir .tst 2>/dev/null
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
@@ -2961,6 +3108,7 @@ fi
# Define the identity of the package.
+
PACKAGE=libxml2
VERSION=$VERSION
@@ -2990,13 +3138,24 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
@@ -3011,11 +3170,38 @@ if test "${enable_silent_rules+set}" = set; then :
enableval=$enable_silent_rules;
fi
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no) AM_DEFAULT_VERBOSITY=1;;
-*) AM_DEFAULT_VERBOSITY=0;;
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=0;;
esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
AM_BACKSLASH='\'
@@ -3041,7 +3227,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3081,7 +3267,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3134,7 +3320,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3175,7 +3361,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -3233,7 +3419,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3277,7 +3463,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3723,8 +3909,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3827,7 +4012,7 @@ am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
@@ -3860,6 +4045,7 @@ fi
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
if test "x$enable_dependency_tracking" != xno; then
AMDEP_TRUE=
@@ -3882,8 +4068,9 @@ else
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -3917,16 +4104,16 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -3935,16 +4122,16 @@ else
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -3999,6 +4186,17 @@ fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -4137,47 +4335,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_RM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $RM in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_RM="$RM" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_RM" && ac_cv_path_RM="/bin/rm"
- ;;
-esac
-fi
-RM=$ac_cv_path_RM
-if test -n "$RM"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
# Extract the first word of "mv", so it can be a program name with args.
set dummy mv; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -4196,7 +4353,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4237,7 +4394,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4278,7 +4435,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4319,7 +4476,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_WGET="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4360,7 +4517,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_XMLLINT="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4401,7 +4558,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_XSLTPROC="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4425,121 +4582,34 @@ fi
-enable_win32_dll=yes
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AS="${ac_tool_prefix}as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
-if test -z "$ac_cv_prog_AS"; then
- ac_ct_AS=$AS
- # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AS"; then
- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_AS="as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
- if test "x$ac_ct_AS" = x; then
- AS="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AS=$ac_ct_AS
- fi
-else
- AS="$ac_cv_prog_AS"
-fi
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$DLLTOOL"; then
- ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -4547,12 +4617,13 @@ done
done
IFS=$as_save_IFS
+ ;;
+esac
fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
@@ -4560,26 +4631,28 @@ fi
fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
- ac_ct_DLLTOOL=$DLLTOOL
- # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$ac_ct_DLLTOOL"; then
- ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -4587,19 +4660,20 @@ done
done
IFS=$as_save_IFS
+ ;;
+esac
fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
- if test "x$ac_ct_DLLTOOL" = x; then
- DLLTOOL="false"
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
@@ -4607,127 +4681,27 @@ yes:)
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
- DLLTOOL=$ac_ct_DLLTOOL
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
else
- DLLTOOL="$ac_cv_prog_DLLTOOL"
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OBJDUMP"; then
- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
- ac_ct_OBJDUMP=$OBJDUMP
- # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OBJDUMP"; then
- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
fi
- if test "x$ac_ct_OBJDUMP" = x; then
- OBJDUMP="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OBJDUMP=$ac_ct_OBJDUMP
- fi
-else
- OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
- ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
case `pwd` in
*\ * | *\ *)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
@@ -4736,8 +4710,8 @@ esac
-macro_version='2.4'
-macro_revision='1.3293'
+macro_version='2.4.2'
+macro_revision='1.3337'
@@ -4844,7 +4818,7 @@ do
for ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+ as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
case `"$ac_path_SED" --version 2>&1` in
@@ -4920,7 +4894,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4986,7 +4960,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -5053,7 +5027,7 @@ do
for ac_prog in fgrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+ as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
# Check for GNU $ac_path_FGREP
case `"$ac_path_FGREP" --version 2>&1` in
@@ -5309,7 +5283,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5353,7 +5327,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5434,17 +5408,6 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
$as_echo "$lt_cv_nm_interface" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
# find the maximum length of command line arguments
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
$as_echo_n "checking the maximum length of command line arguments... " >&6; }
@@ -5511,6 +5474,11 @@ else
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -5550,7 +5518,7 @@ else
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
test $i != 17 # 1/2 MB should be enough
do
@@ -5772,7 +5740,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5812,7 +5780,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5854,6 +5822,9 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
$as_echo_n "checking how to recognize dependent libraries... " >&6; }
if ${lt_cv_deplibs_check_method+:} false; then :
@@ -5976,7 +5947,7 @@ irix5* | irix6* | nonstopux*)
lt_cv_deplibs_check_method=pass_all
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -6115,7 +6086,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6155,7 +6126,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6198,6 +6169,9 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
@@ -6256,7 +6230,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6300,7 +6274,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6425,7 +6399,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6465,7 +6439,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6524,7 +6498,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6564,7 +6538,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6614,13 +6588,13 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -6767,6 +6741,7 @@ for ac_symprfx in "" "_"; do
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -7055,7 +7030,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -7073,7 +7048,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -7092,7 +7070,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -7155,7 +7136,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -7166,7 +7147,20 @@ sparc*-*solaris*)
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
@@ -7199,7 +7193,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7239,7 +7233,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7319,7 +7313,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7359,7 +7353,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7411,7 +7405,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7451,7 +7445,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_NMEDIT="nmedit"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7503,7 +7497,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7543,7 +7537,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_LIPO="lipo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7595,7 +7589,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7635,7 +7629,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL="otool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7687,7 +7681,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7727,7 +7721,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL64="otool64"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7806,7 +7800,13 @@ else
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&5
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&5
@@ -7817,6 +7817,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -7849,6 +7850,7 @@ rm -f core conftest.err conftest.$ac_objext \
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
$as_echo_n "checking for -force_load linker flag... " >&6; }
if ${lt_cv_ld_force_load+:} false; then :
@@ -7870,7 +7872,9 @@ _LT_EOF
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
_lt_result=$?
- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&5
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&5
@@ -8070,6 +8074,8 @@ done
enable_dlopen=no
+ enable_win32_dll=no
+
# Check whether --enable-shared was given.
if test "${enable_shared+set}" = set; then :
@@ -8136,7 +8142,22 @@ fi
# Check whether --with-pic was given.
if test "${with_pic+set}" = set; then :
- withval=$with_pic; pic_mode="$withval"
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
else
pic_mode=default
fi
@@ -8214,6 +8235,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
test -z "$LN_S" && LN_S="ln -s"
@@ -8673,7 +8698,9 @@ lt_prog_compiler_static=
case $cc_basename in
nvcc*) # Cuda Compiler Driver 2.2
lt_prog_compiler_wl='-Xlinker '
- lt_prog_compiler_pic='-Xcompiler -fPIC'
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
;;
esac
else
@@ -8764,18 +8791,33 @@ lt_prog_compiler_static=
;;
*)
case `$CC -V 2>&1 | sed 5q` in
- *Sun\ F* | *Sun*Fortran*)
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
lt_prog_compiler_wl=''
;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
*Sun\ C*)
# Sun C 5.9
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
lt_prog_compiler_wl='-Wl,'
;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
esac
;;
esac
@@ -9137,7 +9179,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
hardcode_direct=no
hardcode_direct_absolute=no
hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld=
hardcode_libdir_separator=
hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
@@ -9387,8 +9428,7 @@ _LT_EOF
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
if test "x$supports_anon_versioning" = xyes; then
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -9767,6 +9807,7 @@ fi
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
enable_shared_with_static_runtimes=yes
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
# Don't use ranlib
old_postinstall_cmds='chmod 644 $oldlib'
@@ -9812,6 +9853,7 @@ fi
hardcode_shlibpath_var=unsupported
if test "$lt_cv_ld_force_load" = "yes"; then
whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
else
whole_archive_flag_spec=''
fi
@@ -9840,10 +9882,6 @@ fi
hardcode_shlibpath_var=no
;;
- freebsd1*)
- ld_shlibs=no
- ;;
-
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
# support. Future versions do this automatically, but an explicit c++rt0.o
# does not break anything, and helps significantly (at the cost of a little
@@ -9856,7 +9894,7 @@ fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9895,7 +9933,6 @@ fi
fi
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_flag_spec_ld='+b $libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
hardcode_direct_absolute=yes
@@ -10519,11 +10556,6 @@ esac
-
-
-
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
$as_echo_n "checking dynamic linker characteristics... " >&6; }
@@ -10613,7 +10645,7 @@ need_version=unknown
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
@@ -10622,7 +10654,7 @@ aix3*)
;;
aix[4-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
@@ -10687,7 +10719,7 @@ beos*)
;;
bsdi[45]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -10826,7 +10858,7 @@ darwin* | rhapsody*)
;;
dgux*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -10834,10 +10866,6 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
@@ -10845,7 +10873,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -10863,7 +10891,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -10883,17 +10911,18 @@ freebsd* | dragonfly*)
;;
gnu*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
@@ -10954,7 +10983,7 @@ hpux9* | hpux10* | hpux11*)
;;
interix[3-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -10970,7 +10999,7 @@ irix5* | irix6* | nonstopux*)
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
@@ -11007,9 +11036,9 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -11095,7 +11124,7 @@ netbsd*)
;;
newsos6)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -11164,7 +11193,7 @@ rdos*)
;;
solaris*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -11189,7 +11218,7 @@ sunos4*)
;;
sysv4 | sysv4.3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -11213,7 +11242,7 @@ sysv4 | sysv4.3*)
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
soname_spec='$libname${shared_ext}.$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -11244,7 +11273,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -11254,7 +11283,7 @@ tpf*)
;;
uts4*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -12036,6 +12065,8 @@ CC="$lt_save_CC"
+
+
ac_config_commands="$ac_config_commands libtool"
@@ -12066,7 +12097,7 @@ fi
_cppflags="${CPPFLAGS}"
-_ldflags="${LDFLAGS}"
+_libs="${LIBS}"
# Check whether --with-c14n was given.
@@ -12201,6 +12232,12 @@ if test "${with_python+set}" = set; then :
fi
+# Check whether --with-python_install_dir was given.
+if test "${with_python_install_dir+set}" = set; then :
+ withval=$with_python_install_dir;
+fi
+
+
# Check whether --with-reader was given.
if test "${with_reader+set}" = set; then :
withval=$with_reader;
@@ -12213,7 +12250,7 @@ if test "${with_readline+set}" = set; then :
if test "$withval" != "no" -a "$withval" != "yes"; then
RDL_DIR=$withval
CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
+ LIBS="${LIBS} -L$withval/lib"
fi
fi
@@ -12309,7 +12346,7 @@ if test "${with_zlib+set}" = set; then :
if test "$withval" != "no" -a "$withval" != "yes"; then
Z_DIR=$withval
CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
+ LIBS="${LIBS} -L$withval/lib"
fi
fi
@@ -12321,7 +12358,7 @@ if test "${with_lzma+set}" = set; then :
if test "$withval" != "no" -a "$withval" != "yes"; then
LZMA_DIR=$withval
CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
+ LIBS="${LIBS} -L$withval/lib"
fi
fi
@@ -12338,7 +12375,10 @@ if test "${enable_rebuild_docs+set}" = set; then :
enableval=$enable_rebuild_docs;
fi
- if test "$enable_rebuild_docs" = "no"; then
+if test "$enable_rebuild_docs" = "yes" -a "$srcdir" != "."; then
+ as_fn_error $? "cannot rebuild docs when builddir != srcdir" "$LINENO" 5
+fi
+ if test "$enable_rebuild_docs" = "yes" -o "$USER" = "veillard"; then
REBUILD_DOCS_TRUE=
REBUILD_DOCS_FALSE='#'
else
@@ -12355,6 +12395,7 @@ fi
if test "$with_schematron" = "yes"
then
with_pattern=yes
+ with_tree=yes
with_xpath=yes
fi
if test "$with_reader" = "yes"
@@ -12521,7 +12562,9 @@ if test "x$ac_cv_header_zlib_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_ZLIB_H 1
_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
+ SAVE_LDFLAGS="${LDFLAGS}"
+ LDFLAGS="-L${Z_DIR}/lib"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5
$as_echo_n "checking for gzread in -lz... " >&6; }
if ${ac_cv_lib_z_gzread+:} false; then :
$as_echo_n "(cached) " >&6
@@ -12576,6 +12619,7 @@ $as_echo "#define HAVE_LIBZ 1" >>confdefs.h
fi
fi
+ LDFLAGS="${SAVE_LDFLAGS}"
fi
done
@@ -12593,14 +12637,94 @@ WITH_LZMA=0
if test "$with_lzma" = "no"; then
echo "Disabling compression support"
else
- for ac_header in lzma.h
+ # Try pkg-config first so that static linking works.
+ # If this succeeeds, we ignore the WITH_LZMA directory.
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LZMA" >&5
+$as_echo_n "checking for LZMA... " >&6; }
+
+if test -n "$LZMA_CFLAGS"; then
+ pkg_cv_LZMA_CFLAGS="$LZMA_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LZMA_CFLAGS=`$PKG_CONFIG --cflags "liblzma" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$LZMA_LIBS"; then
+ pkg_cv_LZMA_LIBS="$LZMA_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LZMA_LIBS=`$PKG_CONFIG --libs "liblzma" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ LZMA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblzma" 2>&1`
+ else
+ LZMA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblzma" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$LZMA_PKG_ERRORS" >&5
+
+ have_liblzma=no
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ have_liblzma=no
+else
+ LZMA_CFLAGS=$pkg_cv_LZMA_CFLAGS
+ LZMA_LIBS=$pkg_cv_LZMA_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ have_liblzma=yes
+fi
+
+ # If pkg-config failed, fall back to AC_CHECK_LIB. This
+ # will not pick up the necessary LIBS flags for liblzma's
+ # private dependencies, though, so static linking may fail.
+ if test "x$have_liblzma" = "xno"; then
+ for ac_header in lzma.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
if test "x$ac_cv_header_lzma_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LZMA_H 1
_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_code in -llzma" >&5
+ SAVE_LDFLAGS="${LDFLAGS}"
+ LDFLAGS="-L${LZMA_DIR}/lib"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_code in -llzma" >&5
$as_echo_n "checking for lzma_code in -llzma... " >&6; }
if ${ac_cv_lib_lzma_lzma_code+:} false; then :
$as_echo_n "(cached) " >&6
@@ -12638,22 +12762,31 @@ fi
$as_echo "$ac_cv_lib_lzma_lzma_code" >&6; }
if test "x$ac_cv_lib_lzma_lzma_code" = xyes; then :
-
-$as_echo "#define HAVE_LIBLZMA 1" >>confdefs.h
-
- WITH_LZMA=1
- if test "x${LZMA_DIR}" != "x"; then
- LZMA_CFLAGS="-I${LZMA_DIR}/include"
- LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
- else
- LZMA_LIBS="-llzma"
- fi
+ have_liblzma=yes
+ if test "x${LZMA_DIR}" != "x"; then
+ LZMA_CFLAGS="-I${LZMA_DIR}/include"
+ LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
+ else
+ LZMA_LIBS="-llzma"
+ fi
+else
+ have_liblzma=no
fi
+ LDFLAGS="${SAVE_LDFLAGS}"
fi
done
+ fi
+
+ # Found the library via either method?
+ if test "x$have_liblzma" = "xyes"; then
+
+$as_echo "#define HAVE_LIBLZMA 1" >>confdefs.h
+
+ WITH_LZMA=1
+ fi
fi
@@ -12661,7 +12794,7 @@ fi
CPPFLAGS=${_cppflags}
-LDFLAGS=${_ldflags}
+LIBS=${_libs}
echo Checking headers
@@ -13374,6 +13507,24 @@ done
+echo Checking types
+
+ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t"
+case $ac_cv_c_uint32_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT32_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint32_t $ac_cv_c_uint32_t
+_ACEOF
+;;
+ esac
+
+
+
echo Checking libraries
for ac_func in strftime
@@ -13491,6 +13642,20 @@ _ACEOF
fi
done
+for ac_func in isascii mmap munmap putenv
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5
$as_echo_n "checking for va_copy... " >&6; }
@@ -13550,6 +13715,37 @@ $as_echo "#define HAVE___VA_COPY 1" >>confdefs.h
fi
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether va_list is an array type" >&5
+$as_echo_n "checking whether va_list is an array type... " >&6; }
+cat > conftest.$ac_ext <<EOF
+#line 13721 "configure"
+#include "confdefs.h"
+
+#include <stdarg.h>
+void a(va_list * ap) {}
+int main(void) {
+
+va_list ap1, ap2; a(&ap1); ap2 = (va_list) ap1
+; return 0; }
+EOF
+if { (eval echo configure:13731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+ rm -rf conftest*
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define VA_LIST_IS_ARRAY 1" >>confdefs.h
+
+fi
+rm -f conftest*
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostent" >&5
$as_echo_n "checking for library containing gethostent... " >&6; }
if ${ac_cv_search_gethostent+:} false; then :
@@ -13722,7 +13918,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of socket length (socklen_t)" >&5
$as_echo_n "checking for type of socket length (socklen_t)... " >&6; }
cat > conftest.$ac_ext <<EOF
-#line 13725 "configure"
+#line 13921 "configure"
#include "confdefs.h"
#include <stddef.h>
@@ -13733,7 +13929,7 @@ int main(void) {
(void)getsockopt (1, 1, 1, NULL, (socklen_t *)NULL)
; return 0; }
EOF
-if { (eval echo configure:13736: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+if { (eval echo configure:13932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
rm -rf conftest*
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: socklen_t *" >&5
@@ -13745,7 +13941,7 @@ else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 13748 "configure"
+#line 13944 "configure"
#include "confdefs.h"
#include <stddef.h>
@@ -13756,7 +13952,7 @@ int main(void) {
(void)getsockopt (1, 1, 1, NULL, (size_t *)NULL)
; return 0; }
EOF
-if { (eval echo configure:13759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+if { (eval echo configure:13955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
rm -rf conftest*
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: size_t *" >&5
@@ -13768,7 +13964,7 @@ else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 13771 "configure"
+#line 13967 "configure"
#include "confdefs.h"
#include <stddef.h>
@@ -13779,7 +13975,7 @@ int main(void) {
(void)getsockopt (1, 1, 1, NULL, (int *)NULL)
; return 0; }
EOF
-if { (eval echo configure:13782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+if { (eval echo configure:13978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
rm -rf conftest*
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: int *" >&5
@@ -13805,6 +14001,71 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for const gethostbyname() argument" >&5
+$as_echo_n "checking for const gethostbyname() argument... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <netdb.h>
+int
+main ()
+{
+(void)gethostbyname((const char *)"");
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ have_gethostbyname_const_arg=yes
+else
+ have_gethostbyname_const_arg=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gethostbyname_const_arg" >&5
+$as_echo "$have_gethostbyname_const_arg" >&6; }
+if test x"$have_gethostbyname_const_arg" = x"yes"; then
+
+$as_echo "#define GETHOSTBYNAME_ARG_CAST /**/" >>confdefs.h
+
+else
+
+$as_echo "#define GETHOSTBYNAME_ARG_CAST (char *)" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for const send() second argument" >&5
+$as_echo_n "checking for const send() second argument... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/socket.h>
+int
+main ()
+{
+(void)send(1,(const char *)"",1,1);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ have_send_const_arg2=yes
+else
+ have_send_const_arg2=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_send_const_arg2" >&5
+$as_echo "$have_send_const_arg2" >&6; }
+if test x"$have_send_const_arg2" = x"yes"; then
+
+$as_echo "#define SEND_ARG2_CAST /**/" >>confdefs.h
+
+else
+
+$as_echo "#define SEND_ARG2_CAST (char *)" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6" >&5
$as_echo_n "checking whether to enable IPv6... " >&6; }
@@ -13824,8 +14085,8 @@ if test $enable_ipv6 = yes; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <sys/types.h>
- #include <sys/socket.h>
+# include <sys/types.h>
+# include <sys/socket.h>
int
main ()
@@ -13859,8 +14120,8 @@ $as_echo_n "checking struct sockaddr::ss_family... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <sys/types.h>
- #include <sys/socket.h>
+# include <sys/types.h>
+# include <sys/socket.h>
int
main ()
@@ -13888,8 +14149,8 @@ $as_echo_n "checking broken struct sockaddr::ss_family... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <sys/types.h>
- #include <sys/socket.h>
+# include <sys/types.h>
+# include <sys/socket.h>
int
main ()
@@ -14175,7 +14436,7 @@ if test "$with_python" != "no" ; then
if test -x "$PYTHON"
then
echo Found python in environment PYTHON=$PYTHON
- with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
+ with_python=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
else
# Extract the first word of "python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5", so it can be a program name with args.
set dummy python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5; ac_word=$2
@@ -14195,7 +14456,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -14223,50 +14484,57 @@ fi
fi
if test "$PYTHON" != ""
then
- PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[0:3]"`
+ PYTHON_VERSION=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_version())"`
+ PYTHON_INCLUDES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_inc())"`
+# does not work as it produce a /usr/lib/python path instead of/usr/lib64/python
+#
+# PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
echo Found Python version $PYTHON_VERSION
fi
- if test "$PYTHON_VERSION" != ""
+ if test "$PYTHON_VERSION" != "" -a "$PYTHON_INCLUDES" = ""
then
- if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
- -d $with_python/lib/python$PYTHON_VERSION/site-packages
+ if test -r $with_python/include/python$PYTHON_VERSION/Python.h
then
PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
else
if test -r $prefix/include/python$PYTHON_VERSION/Python.h
then
PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
else
if test -r /usr/include/python$PYTHON_VERSION/Python.h
then
PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
else
- if test -r $with_python/include/Python.h -a \
- -d $with_python/lib/site-packages
+ if test -r $with_python/include/Python.h
then
PYTHON_INCLUDES=$with_python/include
- PYTHON_SITE_PACKAGES=$with_python/lib/site-packages
else
echo could not find python$PYTHON_VERSION/Python.h or $with_python/include/Python.h
fi
fi
fi
- if test ! -d "$PYTHON_SITE_PACKAGES"
- then
- PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
- fi
fi
- PYTHON_LIBS=`python$PYTHON_VERSION-config --ldflags`
fi
- if test "$with_python" != ""
+ if test "$with_python_install_dir" != ""
then
- pythondir='$(PYTHON_SITE_PACKAGES)'
- else
- pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
+ PYTHON_SITE_PACKAGES="$with_python_install_dir"
+ fi
+ if test "$PYTHON_VERSION" != "" -a "$PYTHON_SITE_PACKAGES" = ""
+ then
+ if test -d $libdir/python$PYTHON_VERSION/site-packages
+ then
+ PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
+ else
+ if test -d $with_python/lib/site-packages
+ then
+ PYTHON_SITE_PACKAGES=$with_python/lib/site-packages
+ else
+ PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
+ fi
+ fi
fi
+ pythondir='$(PYTHON_SITE_PACKAGES)'
+ PYTHON_LIBS=`python$PYTHON_VERSION-config --ldflags`
else
PYTHON=
fi
@@ -14534,6 +14802,7 @@ WITH_THREADS=0
THREAD_CFLAGS=""
TEST_THREADS=""
THREADS_W32=""
+WITH_THREAD_ALLOC=0
if test "$with_threads" = "no" ; then
echo Disabling multithreaded support
@@ -14543,7 +14812,7 @@ else
case $host_os in
*mingw32*) if test "$with_threads" != "pthread" && test "$with_threads" != "no"; then
WITH_THREADS="1"
- THREADS_W32="Win32"
+ THREADS_W32="1"
THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_WIN32_THREADS"
fi
;;
@@ -14642,7 +14911,7 @@ fi
fi
fi
if test "$with_thread_alloc" = "yes" -a "$WITH_THREADS" = "1" ; then
- THREAD_CFLAGS="$THREAD_CFLAGS -DLIBXML_THREAD_ALLOC_ENABLED"
+ WITH_THREAD_ALLOC=1
fi
@@ -14651,6 +14920,14 @@ fi
+ if test -n "$THREADS_W32"; then
+ THREADS_W32_TRUE=
+ THREADS_W32_FALSE='#'
+else
+ THREADS_W32_TRUE='#'
+ THREADS_W32_FALSE=
+fi
+
if test "$with_history" = "yes" ; then
echo Enabling xmllint shell history
@@ -14897,6 +15174,14 @@ else
TEST_SAX=SAXtests
fi
+ if test "${WITH_TRIO}" = "1"; then
+ WITH_SAX1_SOURCES_TRUE=
+ WITH_SAX1_SOURCES_FALSE='#'
+else
+ WITH_SAX1_SOURCES_TRUE='#'
+ WITH_SAX1_SOURCES_FALSE=
+fi
+
if test "$with_push" = "no" ; then
@@ -15025,6 +15310,29 @@ fi
+if test "$with_xptr" = "" -a "$with_xpath" = "no" ; then
+ with_xptr=no
+fi
+
+if test "$with_schematron" = "" -a "$with_xpath" = "no" ; then
+ with_schematron=no
+fi
+
+if test "$with_schematron" = "no" ; then
+ echo "Disabling Schematron support"
+ WITH_SCHEMATRON=0
+ TEST_SCHEMATRON=
+else
+ echo "Enabled Schematron support"
+ WITH_SCHEMATRON=1
+ TEST_SCHEMATRON="Schematrontests"
+ with_xpath=yes
+ with_pattern=yes
+ with_schematron=yes
+fi
+
+
+
if test "$with_xpath" = "no" ; then
echo Disabling XPATH support
WITH_XPATH=0
@@ -15196,14 +15504,14 @@ XML_LIBTOOLLIBS="libxml2.la"
WITH_ICU=0
+ICU_LIBS=""
if test "$with_icu" != "yes" ; then
echo Disabling ICU support
else
ICU_CONFIG=icu-config
if ${ICU_CONFIG} --cflags >/dev/null 2>&1
then
- ICU_LIBS=`icu-config --ldflags`
- LDFLAGS="$LDFLAGS $ICU_LIBS"
+ ICU_LIBS=`${ICU_CONFIG} --ldflags`
WITH_ICU=1
echo Enabling ICU support
else
@@ -15212,6 +15520,7 @@ else
fi
+
WITH_ISO8859X=1
if test "$WITH_ICONV" != "1" ; then
if test "$with_iso8859x" = "no" ; then
@@ -15221,20 +15530,6 @@ fi
fi
-if test "$with_schematron" = "no" ; then
- echo "Disabling Schematron support"
- WITH_SCHEMATRON=0
- TEST_SCHEMATRON=
-else
- echo "Enabled Schematron support"
- WITH_SCHEMATRON=1
- TEST_SCHEMATRON="Schematrontests"
- with_xpath=yes
- with_pattern=yes
-fi
-
-
-
if test "$with_schemas" = "no" ; then
echo "Disabling Schemas/Relax-NG support"
WITH_SCHEMAS=0
@@ -15379,10 +15674,14 @@ RELDATE=`date +'%a %b %e %Y'`
rm -f COPYING.LIB COPYING
-ln -s Copyright COPYING
+ln -s $srcdir/Copyright COPYING
# keep on one line for cygwin c.f. #130896
-ac_config_files="$ac_config_files libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h xml2-config libxml-2.0.pc libxml-2.0-uninstalled.pc python/setup.py"
+ac_config_files="$ac_config_files libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml-2.0-uninstalled.pc libxml2-config.cmake"
+
+ac_config_files="$ac_config_files python/setup.py"
+
+ac_config_files="$ac_config_files xml2-config"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -15493,6 +15792,14 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
@@ -15525,6 +15832,14 @@ if test -z "${WITH_TRIO_SOURCES_TRUE}" && test -z "${WITH_TRIO_SOURCES_FALSE}";
as_fn_error $? "conditional \"WITH_TRIO_SOURCES\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${THREADS_W32_TRUE}" && test -z "${THREADS_W32_FALSE}"; then
+ as_fn_error $? "conditional \"THREADS_W32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WITH_SAX1_SOURCES_TRUE}" && test -z "${WITH_SAX1_SOURCES_FALSE}"; then
+ as_fn_error $? "conditional \"WITH_SAX1_SOURCES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
@@ -15823,16 +16138,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -15892,28 +16207,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -15935,7 +16238,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by $as_me, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -16001,10 +16304,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -16095,7 +16398,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -16129,9 +16432,6 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
sed_quote_subst='$sed_quote_subst'
double_quote_subst='$double_quote_subst'
delay_variable_subst='$delay_variable_subst'
-AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
@@ -16140,6 +16440,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -16164,10 +16465,12 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q
lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
@@ -16220,7 +16523,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -16274,11 +16576,9 @@ _LTECHO_EOF'
}
# Quote evaled strings.
-for var in AS \
-DLLTOOL \
-OBJDUMP \
-SHELL \
+for var in SHELL \
ECHO \
+PATH_SEPARATOR \
SED \
GREP \
EGREP \
@@ -16289,10 +16589,12 @@ LN_S \
lt_SP2NL \
lt_NL2SP \
reload_flag \
+OBJDUMP \
deplibs_check_method \
file_magic_cmd \
file_magic_glob \
want_nocaseglob \
+DLLTOOL \
sharedlib_from_linklib_cmd \
AR \
AR_FLAGS \
@@ -16327,7 +16629,6 @@ with_gnu_ld \
allow_undefined_flag \
no_undefined_flag \
hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
exclude_expsyms \
include_expsyms \
@@ -16423,10 +16724,11 @@ do
"python/tests/Makefile") CONFIG_FILES="$CONFIG_FILES python/tests/Makefile" ;;
"xstc/Makefile") CONFIG_FILES="$CONFIG_FILES xstc/Makefile" ;;
"include/libxml/xmlversion.h") CONFIG_FILES="$CONFIG_FILES include/libxml/xmlversion.h" ;;
- "xml2-config") CONFIG_FILES="$CONFIG_FILES xml2-config" ;;
"libxml-2.0.pc") CONFIG_FILES="$CONFIG_FILES libxml-2.0.pc" ;;
"libxml-2.0-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES libxml-2.0-uninstalled.pc" ;;
+ "libxml2-config.cmake") CONFIG_FILES="$CONFIG_FILES libxml2-config.cmake" ;;
"python/setup.py") CONFIG_FILES="$CONFIG_FILES python/setup.py" ;;
+ "xml2-config") CONFIG_FILES="$CONFIG_FILES xml2-config" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -17023,7 +17325,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case $ac_file$ac_mode in
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
@@ -17036,7 +17338,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
@@ -17070,21 +17372,19 @@ $as_echo X"$mf" |
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
+ test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
@@ -17138,8 +17438,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
@@ -17171,15 +17471,6 @@ available_tags=""
# ### BEGIN LIBTOOL CONFIG
-# Assembler program.
-AS=$lt_AS
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$lt_OBJDUMP
-
# Which release of libtool.m4 was used?
macro_version=$macro_version
macro_revision=$macro_revision
@@ -17202,6 +17493,9 @@ SHELL=$lt_SHELL
# An echo program that protects backslashes.
ECHO=$lt_ECHO
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
# The host system.
host_alias=$host_alias
host=$host
@@ -17257,6 +17551,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
# convert \$build files to toolchain format.
to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
# Method to check whether dependent libraries are shared objects.
deplibs_check_method=$lt_deplibs_check_method
@@ -17269,6 +17566,9 @@ file_magic_glob=$lt_file_magic_glob
# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
want_nocaseglob=$lt_want_nocaseglob
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
# Command to associate shared and link libraries.
sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
@@ -17497,10 +17797,6 @@ no_undefined_flag=$lt_no_undefined_flag
# This must work even if \$libdir does not exist
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator
@@ -17751,6 +18047,8 @@ fi
chmod +x "$ofile"
;;
+ "python/setup.py":F) chmod +x python/setup.py ;;
+ "xml2-config":F) chmod +x xml2-config ;;
esac
done # for ac_tag
@@ -17790,5 +18088,4 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
-chmod +x xml2-config python/setup.py
echo Done configuring
diff --git a/configure.in b/configure.ac
index 0fb4983..14ac0a8 100644
--- a/configure.in
+++ b/configure.ac
@@ -1,13 +1,14 @@
dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.59)
-AC_INIT(entities.c)
-AM_CONFIG_HEADER(config.h)
+AC_PREREQ([2.63])
+AC_INIT
+AC_CONFIG_SRCDIR([entities.c])
+AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
LIBXML_MAJOR_VERSION=2
-LIBXML_MINOR_VERSION=8
-LIBXML_MICRO_VERSION=0
+LIBXML_MINOR_VERSION=9
+LIBXML_MICRO_VERSION=2
LIBXML_MICRO_VERSION_SUFFIX=
LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
@@ -58,18 +59,18 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
+AC_PROG_LN_S
AC_PROG_MKDIR_P
AC_PROG_CPP
-AC_PATH_PROG(RM, rm, /bin/rm)
AC_PATH_PROG(MV, mv, /bin/mv)
AC_PATH_PROG(TAR, tar, /bin/tar)
AC_PATH_PROG(PERL, perl, /usr/bin/perl)
AC_PATH_PROG(WGET, wget, /usr/bin/wget)
AC_PATH_PROG(XMLLINT, xmllint, /usr/bin/xmllint)
AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc)
+PKG_PROG_PKG_CONFIG
-AC_LIBTOOL_WIN32_DLL
-AM_PROG_LIBTOOL
+LT_INIT
dnl
dnl if the system support linker version scripts for symbol versioning
@@ -97,7 +98,7 @@ dnl
dnl zlib option might change flags, so we save them initially
dnl
_cppflags="${CPPFLAGS}"
-_ldflags="${LDFLAGS}"
+_libs="${LIBS}"
AC_ARG_WITH(c14n,
[ --with-c14n add the Canonicalization support (on)])
@@ -116,11 +117,11 @@ AC_ARG_WITH(history,
AC_ARG_WITH(html,
[ --with-html add the HTML support (on)])
dnl Specific dir for HTML output ?
-AC_ARG_WITH(html-dir, AC_HELP_STRING([--with-html-dir=path],
+AC_ARG_WITH(html-dir, AS_HELP_STRING([--with-html-dir=path],
[path to base html directory, default $datadir/doc/html]),
[HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])
-AC_ARG_WITH(html-subdir, AC_HELP_STRING([--with-html-subdir=path],
+AC_ARG_WITH(html-subdir, AS_HELP_STRING([--with-html-subdir=path],
[directory used under html-dir, default $PACKAGE-$VERSION/html]),
[test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
[HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
@@ -147,6 +148,9 @@ AC_ARG_WITH(push,
[ --with-push add the PUSH parser interfaces (on)])
AC_ARG_WITH(python,
[ --with-python[[=DIR]] build Python bindings if found])
+AC_ARG_WITH(python_install_dir,
+[ --with-python-install-dir=DIR
+ install Python bindings in DIR])
AC_ARG_WITH(reader,
[ --with-reader add the xmlReader parsing interface (on)])
AC_ARG_WITH(readline,
@@ -154,7 +158,7 @@ AC_ARG_WITH(readline,
if test "$withval" != "no" -a "$withval" != "yes"; then
RDL_DIR=$withval
CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
+ LIBS="${LIBS} -L$withval/lib"
fi
])
AC_ARG_WITH(regexps,
@@ -190,7 +194,7 @@ AC_ARG_WITH(zlib,
if test "$withval" != "no" -a "$withval" != "yes"; then
Z_DIR=$withval
CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
+ LIBS="${LIBS} -L$withval/lib"
fi
])
AC_ARG_WITH(lzma,
@@ -198,15 +202,18 @@ AC_ARG_WITH(lzma,
if test "$withval" != "no" -a "$withval" != "yes"; then
LZMA_DIR=$withval
CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
+ LIBS="${LIBS} -L$withval/lib"
fi
])
AC_ARG_WITH(coverage,
[ --with-coverage build for code coverage with GCC (off)])
AC_ARG_ENABLE(rebuild-docs,
-[ --enable-rebuild-docs[[=yes/no]] rebuild some generated docs [[default=yes]]])
-AM_CONDITIONAL([REBUILD_DOCS], [test "$enable_rebuild_docs" = "no"])
+[ --enable-rebuild-docs[[=yes/no]] rebuild some generated docs [[default=no]]])
+if test "$enable_rebuild_docs" = "yes" -a "$srcdir" != "."; then
+ AC_MSG_ERROR([cannot rebuild docs when builddir != srcdir])
+fi
+AM_CONDITIONAL([REBUILD_DOCS], [test "$enable_rebuild_docs" = "yes" -o "$USER" = "veillard"])
dnl
dnl hard dependancies on options
@@ -219,6 +226,7 @@ fi
if test "$with_schematron" = "yes"
then
with_pattern=yes
+ with_tree=yes
with_xpath=yes
fi
if test "$with_reader" = "yes"
@@ -383,6 +391,8 @@ if test "$with_zlib" = "no"; then
echo "Disabling compression support"
else
AC_CHECK_HEADERS(zlib.h,
+ [SAVE_LDFLAGS="${LDFLAGS}"
+ LDFLAGS="-L${Z_DIR}/lib"
AC_CHECK_LIB(z, gzread,[
AC_DEFINE([HAVE_LIBZ], [1], [Have compression library])
WITH_ZLIB=1
@@ -396,7 +406,8 @@ else
esac]
else
Z_LIBS="-lz"
- fi]))
+ fi])
+ LDFLAGS="${SAVE_LDFLAGS}"])
fi
AC_SUBST(Z_CFLAGS)
@@ -411,16 +422,36 @@ WITH_LZMA=0
if test "$with_lzma" = "no"; then
echo "Disabling compression support"
else
- AC_CHECK_HEADERS(lzma.h,
- AC_CHECK_LIB(lzma, lzma_code,[
- AC_DEFINE([HAVE_LIBLZMA], [1], [Have compression library])
- WITH_LZMA=1
- if test "x${LZMA_DIR}" != "x"; then
- LZMA_CFLAGS="-I${LZMA_DIR}/include"
- LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
- else
- LZMA_LIBS="-llzma"
- fi]))
+ # Try pkg-config first so that static linking works.
+ # If this succeeeds, we ignore the WITH_LZMA directory.
+ PKG_CHECK_MODULES([LZMA],[liblzma],
+ [have_liblzma=yes],
+ [have_liblzma=no])
+
+ # If pkg-config failed, fall back to AC_CHECK_LIB. This
+ # will not pick up the necessary LIBS flags for liblzma's
+ # private dependencies, though, so static linking may fail.
+ if test "x$have_liblzma" = "xno"; then
+ AC_CHECK_HEADERS(lzma.h,
+ [SAVE_LDFLAGS="${LDFLAGS}"
+ LDFLAGS="-L${LZMA_DIR}/lib"
+ AC_CHECK_LIB(lzma, lzma_code,[
+ have_liblzma=yes
+ if test "x${LZMA_DIR}" != "x"; then
+ LZMA_CFLAGS="-I${LZMA_DIR}/include"
+ LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
+ else
+ LZMA_LIBS="-llzma"
+ fi],
+ [have_liblzma=no])
+ LDFLAGS="${SAVE_LDFLAGS}"])
+ fi
+
+ # Found the library via either method?
+ if test "x$have_liblzma" = "xyes"; then
+ AC_DEFINE([HAVE_LIBLZMA], [1], [Have compression library])
+ WITH_LZMA=1
+ fi
fi
AC_SUBST(LZMA_CFLAGS)
@@ -428,7 +459,7 @@ AC_SUBST(LZMA_LIBS)
AC_SUBST(WITH_LZMA)
CPPFLAGS=${_cppflags}
-LDFLAGS=${_ldflags}
+LIBS=${_libs}
echo Checking headers
@@ -500,6 +531,11 @@ AC_CHECK_HEADERS([dl.h])
AC_CHECK_HEADERS([dlfcn.h])
+echo Checking types
+
+AC_TYPE_UINT32_T
+
+
echo Checking libraries
dnl Checks for library functions.
@@ -509,11 +545,17 @@ AC_CHECK_FUNCS(finite isnand fp_class class fpclass)
AC_CHECK_FUNCS(strftime localtime gettimeofday ftime)
AC_CHECK_FUNCS(stat _stat signal)
AC_CHECK_FUNCS(rand rand_r srand time)
+AC_CHECK_FUNCS(isascii mmap munmap putenv)
+
+AH_VERBATIM([HAVE_MUNMAP_AFTER],[/* mmap() is no good without munmap() */
+#if defined(HAVE_MMAP) && !defined(HAVE_MUNMAP)
+# undef /**/ HAVE_MMAP
+#endif])
dnl Checking for va_copy availability
AC_MSG_CHECKING([for va_copy])
-AC_TRY_LINK([#include <stdarg.h>
-va_list ap1,ap2;], [va_copy(ap1,ap2);],
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
+va_list ap1,ap2;]], [[va_copy(ap1,ap2);]])],
have_va_copy=yes,
have_va_copy=no)
AC_MSG_RESULT($have_va_copy)
@@ -521,8 +563,8 @@ if test x"$have_va_copy" = x"yes"; then
AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
else
AC_MSG_CHECKING([for __va_copy])
- AC_TRY_LINK([#include <stdarg.h>
- va_list ap1,ap2;], [__va_copy(ap1,ap2);],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
+ va_list ap1,ap2;]], [[__va_copy(ap1,ap2);]])],
have___va_copy=yes,
have___va_copy=no)
AC_MSG_RESULT($have___va_copy)
@@ -531,6 +573,16 @@ else
fi
fi
+dnl Checking whether va_list is an array type
+AC_MSG_CHECKING([whether va_list is an array type])
+AC_TRY_COMPILE2([
+#include <stdarg.h>
+void a(va_list * ap) {}],[
+va_list ap1, ap2; a(&ap1); ap2 = (va_list) ap1],[
+ AC_MSG_RESULT(no)],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([VA_LIST_IS_ARRAY], [1],[Define if va_list is an array type])])
+
dnl Checks for inet libraries:
AC_SEARCH_LIBS(gethostent, [nsl])
AC_SEARCH_LIBS(setsockopt, [socket net network])
@@ -563,6 +615,37 @@ AC_TRY_COMPILE2([
XML_SOCKLEN_T="int"])])])
AC_DEFINE_UNQUOTED(XML_SOCKLEN_T, $XML_SOCKLEN_T, [Determine what socket length (socklen_t) data type is])
+dnl Checking if gethostbyname() argument is const.
+AC_MSG_CHECKING([for const gethostbyname() argument])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
+ [[(void)gethostbyname((const char *)"");]])],
+have_gethostbyname_const_arg=yes,
+have_gethostbyname_const_arg=no)
+AC_MSG_RESULT($have_gethostbyname_const_arg)
+if test x"$have_gethostbyname_const_arg" = x"yes"; then
+ AC_DEFINE([GETHOSTBYNAME_ARG_CAST], [],
+ [Type cast for the gethostbyname() argument])
+else
+ AC_DEFINE([GETHOSTBYNAME_ARG_CAST], [(char *)],
+ [Type cast for the gethostbyname() argument])
+fi
+
+dnl Checking if send() second argument is const.
+AC_MSG_CHECKING([for const send() second argument])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <sys/socket.h>]],
+ [[(void)send(1,(const char *)"",1,1);]])],
+have_send_const_arg2=yes,
+have_send_const_arg2=no)
+AC_MSG_RESULT($have_send_const_arg2)
+if test x"$have_send_const_arg2" = x"yes"; then
+ AC_DEFINE([SEND_ARG2_CAST], [],
+ [Type cast for the send() function 2nd arg])
+else
+ AC_DEFINE([SEND_ARG2_CAST], [(char *)],
+ [Type cast for the send() function 2nd arg])
+fi
+
dnl ***********************Checking for availability of IPv6*******************
AC_MSG_CHECKING([whether to enable IPv6])
@@ -573,13 +656,13 @@ then
fi
if test $enable_ipv6 = yes; then
have_ipv6=no
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- ], [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+# include <sys/types.h>
+# include <sys/socket.h>
+ ]], [[
struct sockaddr_storage ss;
socket(AF_INET6, SOCK_STREAM, 0)
- ],
+ ]])],
have_ipv6=yes,
have_ipv6=no
)
@@ -597,26 +680,26 @@ if test $enable_ipv6 = yes; then
dnl present.
dnl ********************************************************************
AC_MSG_CHECKING([struct sockaddr::ss_family])
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- ], [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+# include <sys/types.h>
+# include <sys/socket.h>
+ ]], [[
struct sockaddr_storage ss ;
ss.ss_family = 0 ;
- ],
+ ]])],
have_ss_family=yes,
have_ss_family=no
)
AC_MSG_RESULT($have_ss_family)
if test x$have_ss_family = xno ; then
AC_MSG_CHECKING([broken struct sockaddr::ss_family])
- AC_TRY_COMPILE([
- #include <sys/types.h>
- #include <sys/socket.h>
- ], [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+# include <sys/types.h>
+# include <sys/socket.h>
+ ]], [[
struct sockaddr_storage ss ;
ss.__ss_family = 0 ;
- ],
+ ]])],
have_broken_ss_family=yes,
have_broken_ss_family=no
)
@@ -752,7 +835,7 @@ if test "$with_python" != "no" ; then
if test -x "$PYTHON"
then
echo Found python in environment PYTHON=$PYTHON
- with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
+ with_python=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
else
AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
fi
@@ -761,50 +844,57 @@ if test "$with_python" != "no" ; then
fi
if test "$PYTHON" != ""
then
- PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
+ PYTHON_VERSION=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_version())"`
+ PYTHON_INCLUDES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_inc())"`
+# does not work as it produce a /usr/lib/python path instead of/usr/lib64/python
+#
+# PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
echo Found Python version $PYTHON_VERSION
fi
- if test "$PYTHON_VERSION" != ""
+ if test "$PYTHON_VERSION" != "" -a "$PYTHON_INCLUDES" = ""
then
- if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
- -d $with_python/lib/python$PYTHON_VERSION/site-packages
+ if test -r $with_python/include/python$PYTHON_VERSION/Python.h
then
PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
else
if test -r $prefix/include/python$PYTHON_VERSION/Python.h
then
PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
else
if test -r /usr/include/python$PYTHON_VERSION/Python.h
then
PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
else
- if test -r $with_python/include/Python.h -a \
- -d $with_python/lib/site-packages
+ if test -r $with_python/include/Python.h
then
PYTHON_INCLUDES=$with_python/include
- PYTHON_SITE_PACKAGES=$with_python/lib/site-packages
else
echo could not find python$PYTHON_VERSION/Python.h or $with_python/include/Python.h
fi
fi
fi
- if test ! -d "$PYTHON_SITE_PACKAGES"
- then
- PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
- fi
fi
- PYTHON_LIBS=`python$PYTHON_VERSION-config --ldflags`
fi
- if test "$with_python" != ""
+ if test "$with_python_install_dir" != ""
then
- pythondir='$(PYTHON_SITE_PACKAGES)'
- else
- pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
+ PYTHON_SITE_PACKAGES="$with_python_install_dir"
+ fi
+ if test "$PYTHON_VERSION" != "" -a "$PYTHON_SITE_PACKAGES" = ""
+ then
+ if test -d $libdir/python$PYTHON_VERSION/site-packages
+ then
+ PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
+ else
+ if test -d $with_python/lib/site-packages
+ then
+ PYTHON_SITE_PACKAGES=$with_python/lib/site-packages
+ else
+ PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
+ fi
+ fi
fi
+ pythondir='$(PYTHON_SITE_PACKAGES)'
+ PYTHON_LIBS=`python$PYTHON_VERSION-config --ldflags`
else
PYTHON=
fi
@@ -939,6 +1029,7 @@ WITH_THREADS=0
THREAD_CFLAGS=""
TEST_THREADS=""
THREADS_W32=""
+WITH_THREAD_ALLOC=0
if test "$with_threads" = "no" ; then
echo Disabling multithreaded support
@@ -949,7 +1040,7 @@ else
case $host_os in
*mingw32*) if test "$with_threads" != "pthread" && test "$with_threads" != "no"; then
WITH_THREADS="1"
- THREADS_W32="Win32"
+ THREADS_W32="1"
THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_WIN32_THREADS"
fi
;;
@@ -1002,7 +1093,7 @@ else
fi
fi
if test "$with_thread_alloc" = "yes" -a "$WITH_THREADS" = "1" ; then
- THREAD_CFLAGS="$THREAD_CFLAGS -DLIBXML_THREAD_ALLOC_ENABLED"
+ WITH_THREAD_ALLOC=1
fi
AC_SUBST(THREAD_LIBS)
@@ -1010,7 +1101,8 @@ AC_SUBST(BASE_THREAD_LIBS)
AC_SUBST(WITH_THREADS)
AC_SUBST(THREAD_CFLAGS)
AC_SUBST(TEST_THREADS)
-AC_SUBST(THREADS_W32)
+AC_SUBST(WITH_THREAD_ALLOC)
+AM_CONDITIONAL([THREADS_W32],[test -n "$THREADS_W32"])
dnl
dnl xmllint shell history
@@ -1134,6 +1226,7 @@ else
TEST_SAX=SAXtests
fi
AC_SUBST(WITH_SAX1)
+AM_CONDITIONAL(WITH_SAX1_SOURCES, test "${WITH_TRIO}" = "1")
AC_SUBST(TEST_SAX)
if test "$with_push" = "no" ; then
@@ -1262,6 +1355,29 @@ AC_SUBST(WITH_XINCLUDE)
AC_SUBST(XINCLUDE_OBJ)
AC_SUBST(TEST_XINCLUDE)
+if test "$with_xptr" = "" -a "$with_xpath" = "no" ; then
+ with_xptr=no
+fi
+
+if test "$with_schematron" = "" -a "$with_xpath" = "no" ; then
+ with_schematron=no
+fi
+
+if test "$with_schematron" = "no" ; then
+ echo "Disabling Schematron support"
+ WITH_SCHEMATRON=0
+ TEST_SCHEMATRON=
+else
+ echo "Enabled Schematron support"
+ WITH_SCHEMATRON=1
+ TEST_SCHEMATRON="Schematrontests"
+ with_xpath=yes
+ with_pattern=yes
+ with_schematron=yes
+fi
+AC_SUBST(WITH_SCHEMATRON)
+AC_SUBST(TEST_SCHEMATRON)
+
if test "$with_xpath" = "no" ; then
echo Disabling XPATH support
WITH_XPATH=0
@@ -1300,10 +1416,10 @@ else
AC_CHECK_HEADER(iconv.h,
AC_MSG_CHECKING(for iconv)
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],[
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
+#include <iconv.h>]],[[
iconv_t cd = iconv_open ("","");
-iconv (cd, NULL, NULL, NULL, NULL);],[
+iconv (cd, NULL, NULL, NULL, NULL);]])],[
AC_MSG_RESULT(yes)
WITH_ICONV=1],[
AC_MSG_RESULT(no)
@@ -1314,10 +1430,10 @@ iconv (cd, NULL, NULL, NULL, NULL);],[
LDFLAGS="${LDFLAGS} ${ICONV_LIBS}"
LIBS="${LIBS} -liconv"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],[
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
+#include <iconv.h>]],[[
iconv_t cd = iconv_open ("","");
-iconv (cd, NULL, NULL, NULL, NULL);],[
+iconv (cd, NULL, NULL, NULL, NULL);]])],[
AC_MSG_RESULT(yes)
WITH_ICONV=1
ICONV_LIBS="${ICONV_LIBS} -liconv"
@@ -1330,7 +1446,7 @@ iconv (cd, NULL, NULL, NULL, NULL);],[
if test "$WITH_ICONV" = "1" ; then
AC_MSG_CHECKING([for iconv declaration])
AC_CACHE_VAL(xml_cv_iconv_arg2, [
- AC_TRY_COMPILE([#include <stdlib.h>
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
#include <iconv.h>
extern
#ifdef __cplusplus
@@ -1341,7 +1457,7 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
#else
size_t iconv();
#endif
-], [], xml_cv_iconv_arg2="", xml_cv_iconv_arg2="const")])
+]], [])], xml_cv_iconv_arg2="", xml_cv_iconv_arg2="const")])
xml_cv_iconv_decl="extern size_t iconv (iconv_t cd, $xml_cv_iconv_arg2 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
AC_MSG_RESULT([${xml_xxx:-
@@ -1365,14 +1481,14 @@ XML_LIBTOOLLIBS="libxml2.la"
AC_SUBST(WITH_ICONV)
WITH_ICU=0
+ICU_LIBS=""
if test "$with_icu" != "yes" ; then
echo Disabling ICU support
else
ICU_CONFIG=icu-config
if ${ICU_CONFIG} --cflags >/dev/null 2>&1
then
- ICU_LIBS=`icu-config --ldflags`
- LDFLAGS="$LDFLAGS $ICU_LIBS"
+ ICU_LIBS=`${ICU_CONFIG} --ldflags`
WITH_ICU=1
echo Enabling ICU support
else
@@ -1380,6 +1496,7 @@ else
fi
fi
AC_SUBST(WITH_ICU)
+AC_SUBST(ICU_LIBS)
WITH_ISO8859X=1
if test "$WITH_ICONV" != "1" ; then
@@ -1390,20 +1507,6 @@ fi
fi
AC_SUBST(WITH_ISO8859X)
-if test "$with_schematron" = "no" ; then
- echo "Disabling Schematron support"
- WITH_SCHEMATRON=0
- TEST_SCHEMATRON=
-else
- echo "Enabled Schematron support"
- WITH_SCHEMATRON=1
- TEST_SCHEMATRON="Schematrontests"
- with_xpath=yes
- with_pattern=yes
-fi
-AC_SUBST(WITH_SCHEMATRON)
-AC_SUBST(TEST_SCHEMATRON)
-
if test "$with_schemas" = "no" ; then
echo "Disabling Schemas/Relax-NG support"
WITH_SCHEMAS=0
@@ -1550,10 +1653,12 @@ AC_SUBST(RELDATE)
AC_SUBST(PYTHON_TESTS)
rm -f COPYING.LIB COPYING
-ln -s Copyright COPYING
+ln -s $srcdir/Copyright COPYING
# keep on one line for cygwin c.f. #130896
-AC_OUTPUT(libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h xml2-config libxml-2.0.pc libxml-2.0-uninstalled.pc python/setup.py)
+AC_CONFIG_FILES([libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml-2.0-uninstalled.pc libxml2-config.cmake])
+AC_CONFIG_FILES([python/setup.py], [chmod +x python/setup.py])
+AC_CONFIG_FILES([xml2-config], [chmod +x xml2-config])
+AC_OUTPUT
-chmod +x xml2-config python/setup.py
echo Done configuring
diff --git a/debugXML.c b/debugXML.c
index 3e9ec7a..b05fdff 100644
--- a/debugXML.c
+++ b/debugXML.c
@@ -85,7 +85,7 @@ xmlCtxtDumpCleanCtxt(xmlDebugCtxtPtr ctxt ATTRIBUTE_UNUSED)
*
* Check that a given namespace is in scope on a node.
*
- * Returns 1 if in scope, -1 in case of argument error,
+ * Returns 1 if in scope, -1 in case of argument error,
* -2 if the namespace is not in scope, and -3 if not on
* an ancestor node.
*/
@@ -254,10 +254,12 @@ xmlCtxtCheckName(xmlDebugCtxtPtr ctxt, const xmlChar * name)
xmlDebugErr(ctxt, XML_CHECK_NO_NAME, "Name is NULL");
return;
}
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
if (xmlValidateName(name, 0)) {
xmlDebugErr3(ctxt, XML_CHECK_NOT_NCNAME,
"Name is not an NCName '%s'", (const char *) name);
}
+#endif
if ((ctxt->dict != NULL) &&
(!xmlDictOwns(ctxt->dict, name)) &&
((ctxt->doc == NULL) ||
@@ -311,7 +313,7 @@ xmlCtxtGenericNodeCheck(xmlDebugCtxtPtr ctxt, xmlNodePtr node) {
(node != (xmlNodePtr) node->parent->properties))
xmlDebugErr(ctxt, XML_CHECK_NO_PREV,
"Attr has no prev and not first of attr list\n");
-
+
} else if ((node->parent != NULL) && (node->parent->children != node))
xmlDebugErr(ctxt, XML_CHECK_NO_PREV,
"Node has no prev and not first of parent list\n");
@@ -354,7 +356,6 @@ xmlCtxtGenericNodeCheck(xmlDebugCtxtPtr ctxt, xmlNodePtr node) {
(node->type != XML_ELEMENT_DECL) &&
(node->type != XML_ATTRIBUTE_DECL) &&
(node->type != XML_DTD_NODE) &&
- (node->type != XML_ELEMENT_DECL) &&
(node->type != XML_HTML_DOCUMENT_NODE) &&
(node->type != XML_DOCUMENT_NODE)) {
if (node->content != NULL)
@@ -1068,7 +1069,7 @@ xmlCtxtDumpNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node)
return;
}
xmlCtxtDumpOneNode(ctxt, node);
- if ((node->type != XML_NAMESPACE_DECL) &&
+ if ((node->type != XML_NAMESPACE_DECL) &&
(node->children != NULL) && (node->type != XML_ENTITY_REF_NODE)) {
ctxt->depth++;
xmlCtxtDumpNodeList(ctxt, node->children);
@@ -1603,7 +1604,7 @@ int
xmlLsCountNode(xmlNodePtr node) {
int ret = 0;
xmlNodePtr list = NULL;
-
+
if (node == NULL)
return(0);
@@ -1644,7 +1645,7 @@ xmlLsCountNode(xmlNodePtr node) {
ret = 1;
break;
}
- for (;list != NULL;ret++)
+ for (;list != NULL;ret++)
list = list->next;
return(ret);
}
@@ -1712,11 +1713,11 @@ xmlLsOneNode(FILE *output, xmlNodePtr node) {
if (node->type != XML_NAMESPACE_DECL) {
if (node->properties != NULL)
fprintf(output, "a");
- else
+ else
fprintf(output, "-");
- if (node->nsDef != NULL)
+ if (node->nsDef != NULL)
fprintf(output, "n");
- else
+ else
fprintf(output, "-");
}
@@ -1786,7 +1787,7 @@ xmlLsOneNode(FILE *output, xmlNodePtr node) {
* xmlBoolToText:
* @boolval: a bool to turn into text
*
- * Convenient way to turn bool into text
+ * Convenient way to turn bool into text
*
* Returns a pointer to either "True" or "False"
*/
@@ -1802,7 +1803,7 @@ xmlBoolToText(int boolval)
#ifdef LIBXML_XPATH_ENABLED
/****************************************************************
* *
- * The XML shell related functions *
+ * The XML shell related functions *
* *
****************************************************************/
@@ -2053,7 +2054,7 @@ xmlShellBase(xmlShellCtxtPtr ctxt,
if (node == NULL) {
fprintf(ctxt->output, "NULL\n");
return (0);
- }
+ }
base = xmlNodeGetBase(node->doc, node);
@@ -2280,7 +2281,7 @@ xmlShellDir(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED,
if (node == NULL) {
fprintf(ctxt->output, "NULL\n");
return (0);
- }
+ }
if ((node->type == XML_DOCUMENT_NODE) ||
(node->type == XML_HTML_DOCUMENT_NODE)) {
xmlDebugDumpDocumentHead(ctxt->output, (xmlDocPtr) node);
@@ -2415,7 +2416,7 @@ xmlShellCat(xmlShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED,
if (node == NULL) {
fprintf(ctxt->output, "NULL\n");
return (0);
- }
+ }
if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) {
#ifdef LIBXML_HTML_ENABLED
if (node->type == XML_HTML_DOCUMENT_NODE)
@@ -2753,7 +2754,7 @@ xmlShellDu(xmlShellCtxtPtr ctxt,
* xmlShellPwd:
* @ctxt: the shell context
* @buffer: the output buffer
- * @node: a node
+ * @node: a node
* @node2: unused
*
* Implements the XML shell function "pwd"
@@ -2798,7 +2799,7 @@ xmlShellPwd(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, char *buffer,
* @input: the line reading function
* @output: the output FILE*, defaults to stdout if NULL
*
- * Implements the XML shell
+ * Implements the XML shell
* This allow to load, validate, view, modify and save a document
* using a environment similar to a UNIX commandline.
*/
@@ -2947,7 +2948,7 @@ xmlShell(xmlDocPtr doc, char *filename, xmlShellReadlineFunc input,
} else if (!strcmp(command, "save")) {
xmlShellSave(ctxt, arg, NULL, NULL);
} else if (!strcmp(command, "write")) {
- if ((arg == NULL) || (arg[0] == 0))
+ if (arg[0] == 0)
xmlGenericError(xmlGenericErrorContext,
"Write command requires a filename argument\n");
else
@@ -3242,7 +3243,12 @@ xmlShell(xmlDocPtr doc, char *filename, xmlShellReadlineFunc input,
ctxt->node = (xmlNodePtr) ctxt->doc;
} else {
#ifdef LIBXML_XPATH_ENABLED
+ int l;
+
ctxt->pctxt->node = ctxt->node;
+ l = strlen(arg);
+ if ((l >= 2) && (arg[l - 1] == '/'))
+ arg[l - 1] = 0;
list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt);
#else
list = NULL;
diff --git a/depcomp b/depcomp
index df8eea7..4ebd5b3 100755
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# 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
@@ -28,9 +27,9 @@ scriptversion=2009-04-28.21; # UTC
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -40,11 +39,11 @@ as side-effects.
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
+ tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +56,66 @@ EOF
;;
esac
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
@@ -69,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -80,18 +142,32 @@ if test "$depmode" = hp; then
fi
if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u="sed s,\\\\\\\\,/,g"
- depmode=msvisualcpp
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
fi
case "$depmode" in
@@ -114,8 +190,7 @@ gcc3)
done
"$@"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -123,13 +198,17 @@ gcc3)
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
@@ -137,31 +216,31 @@ gcc)
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
+## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
-## well.
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -179,8 +258,7 @@ sgi)
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -188,43 +266,41 @@ sgi)
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
-
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
+ # the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+ | tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
-
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
+ # current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
@@ -237,9 +313,7 @@ aix)
"$@" -M
fi
stat=$?
-
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
@@ -248,44 +322,100 @@ aix)
do
test -f "$tmpdepfile" && break
done
- if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
+ # and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
@@ -297,8 +427,8 @@ icc)
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -309,9 +439,8 @@ hp2)
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ set_dir_from "$object"
+ set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
@@ -322,8 +451,7 @@ hp2)
"$@" +Maked
fi
stat=$?
- if test $stat -eq 0; then :
- else
+ if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
@@ -333,77 +461,107 @@ hp2)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add 'dependent.h:' lines.
sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
else
- echo "#dummy" > "$depfile"
+ make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
+
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
@@ -422,7 +580,7 @@ dashmstdout)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -442,18 +600,18 @@ dashmstdout)
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -503,12 +661,15 @@ makedepend)
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
@@ -525,7 +686,7 @@ cpp)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -544,10 +705,10 @@ cpp)
esac
done
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
@@ -579,23 +740,23 @@ msvisualcpp)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
+ set fnord "$@"
+ shift
+ shift
+ ;;
*)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
diff --git a/dict.c b/dict.c
index 6de2f03..5f71d55 100644
--- a/dict.c
+++ b/dict.c
@@ -19,6 +19,7 @@
#define IN_LIBXML
#include "libxml.h"
+#include <limits.h>
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
@@ -93,7 +94,7 @@ typedef xmlDictEntry *xmlDictEntryPtr;
struct _xmlDictEntry {
struct _xmlDictEntry *next;
const xmlChar *name;
- int len;
+ unsigned int len;
int valid;
unsigned long okey;
};
@@ -104,8 +105,8 @@ struct _xmlDictStrings {
xmlDictStringsPtr next;
xmlChar *free;
xmlChar *end;
- int size;
- int nbStrings;
+ size_t size;
+ size_t nbStrings;
xmlChar array[1];
};
/*
@@ -115,13 +116,15 @@ struct _xmlDict {
int ref_counter;
struct _xmlDictEntry *dict;
- int size;
- int nbElems;
+ size_t size;
+ unsigned int nbElems;
xmlDictStringsPtr strings;
struct _xmlDict *subdict;
/* used for randomization */
int seed;
+ /* used to impose a limit on size */
+ size_t limit;
};
/*
@@ -140,7 +143,7 @@ static int xmlDictInitialized = 0;
/*
* Internal data for random function, protected by xmlDictMutex
*/
-unsigned int rand_seed = 0;
+static unsigned int rand_seed = 0;
#endif
#endif
@@ -148,13 +151,28 @@ unsigned int rand_seed = 0;
* xmlInitializeDict:
*
* Do the dictionary mutex initialization.
- * this function is not thread safe, initialization should
- * preferably be done once at startup
+ * this function is deprecated
*
* Returns 0 if initialization was already done, and 1 if that
* call led to the initialization
*/
int xmlInitializeDict(void) {
+ return(0);
+}
+
+/**
+ * __xmlInitializeDict:
+ *
+ * This function is not public
+ * Do the dictionary mutex initialization.
+ * this function is not thread safe, initialization should
+ * normally be done once at setup when called from xmlOnceInit()
+ * we may also land in this code if thread support is not compiled in
+ *
+ * Returns 0 if initialization was already done, and 1 if that
+ * call led to the initialization
+ */
+int __xmlInitializeDict(void) {
if (xmlDictInitialized)
return(1);
@@ -180,7 +198,7 @@ int __xmlRandom(void) {
int ret;
if (xmlDictInitialized == 0)
- xmlInitializeDict();
+ __xmlInitializeDict();
xmlRMutexLock(xmlDictMutex);
#ifdef HAVE_RAND_R
@@ -213,17 +231,18 @@ xmlDictCleanup(void) {
* xmlDictAddString:
* @dict: the dictionnary
* @name: the name of the userdata
- * @len: the length of the name, if -1 it is recomputed
+ * @len: the length of the name
*
* Add the string to the array[s]
*
* Returns the pointer of the local string, or NULL in case of error.
*/
static const xmlChar *
-xmlDictAddString(xmlDictPtr dict, const xmlChar *name, int namelen) {
+xmlDictAddString(xmlDictPtr dict, const xmlChar *name, unsigned int namelen) {
xmlDictStringsPtr pool;
const xmlChar *ret;
- int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */
+ size_t size = 0; /* + sizeof(_xmlDictStrings) == 1024 */
+ size_t limit = 0;
#ifdef DICT_DEBUG_PATTERNS
fprintf(stderr, "-");
@@ -233,15 +252,20 @@ xmlDictAddString(xmlDictPtr dict, const xmlChar *name, int namelen) {
if (pool->end - pool->free > namelen)
goto found_pool;
if (pool->size > size) size = pool->size;
+ limit += pool->size;
pool = pool->next;
}
/*
* Not found, need to allocate
*/
if (pool == NULL) {
+ if ((dict->limit > 0) && (limit > dict->limit)) {
+ return(NULL);
+ }
+
if (size == 0) size = 1000;
else size *= 4; /* exponential growth */
- if (size < 4 * namelen)
+ if (size < 4 * namelen)
size = 4 * namelen; /* just in case ! */
pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size);
if (pool == NULL)
@@ -271,19 +295,20 @@ found_pool:
* @prefix: the prefix of the userdata
* @plen: the prefix length
* @name: the name of the userdata
- * @len: the length of the name, if -1 it is recomputed
+ * @len: the length of the name
*
* Add the QName to the array[s]
*
* Returns the pointer of the local string, or NULL in case of error.
*/
static const xmlChar *
-xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, int plen,
- const xmlChar *name, int namelen)
+xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, unsigned int plen,
+ const xmlChar *name, unsigned int namelen)
{
xmlDictStringsPtr pool;
const xmlChar *ret;
- int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */
+ size_t size = 0; /* + sizeof(_xmlDictStrings) == 1024 */
+ size_t limit = 0;
if (prefix == NULL) return(xmlDictAddString(dict, name, namelen));
@@ -295,12 +320,17 @@ xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, int plen,
if (pool->end - pool->free > namelen + plen + 1)
goto found_pool;
if (pool->size > size) size = pool->size;
+ limit += pool->size;
pool = pool->next;
}
/*
* Not found, need to allocate
*/
if (pool == NULL) {
+ if ((dict->limit > 0) && (limit > dict->limit)) {
+ return(NULL);
+ }
+
if (size == 0) size = 1000;
else size *= 4; /* exponential growth */
if (size < 4 * (namelen + plen + 1))
@@ -507,7 +537,7 @@ xmlDictCreate(void) {
xmlDictPtr dict;
if (!xmlDictInitialized)
- if (!xmlInitializeDict())
+ if (!__xmlInitializeDict())
return(NULL);
#ifdef DICT_DEBUG_PATTERNS
@@ -517,6 +547,7 @@ xmlDictCreate(void) {
dict = xmlMalloc(sizeof(xmlDict));
if (dict) {
dict->ref_counter = 1;
+ dict->limit = 0;
dict->size = MIN_DICT_SIZE;
dict->nbElems = 0;
@@ -574,7 +605,7 @@ xmlDictCreateSub(xmlDictPtr sub) {
int
xmlDictReference(xmlDictPtr dict) {
if (!xmlDictInitialized)
- if (!xmlInitializeDict())
+ if (!__xmlInitializeDict())
return(-1);
if (dict == NULL) return -1;
@@ -594,9 +625,9 @@ xmlDictReference(xmlDictPtr dict) {
* Returns 0 in case of success, -1 in case of failure
*/
static int
-xmlDictGrow(xmlDictPtr dict, int size) {
+xmlDictGrow(xmlDictPtr dict, size_t size) {
unsigned long key, okey;
- int oldsize, i;
+ size_t oldsize, i;
xmlDictEntryPtr iter, next;
struct _xmlDictEntry *olddict;
#ifdef DEBUG_GROW
@@ -713,7 +744,7 @@ xmlDictGrow(xmlDictPtr dict, int size) {
#ifdef DEBUG_GROW
xmlGenericError(xmlGenericErrorContext,
- "xmlDictGrow : from %d to %d, %d elems\n", oldsize, size, nbElem);
+ "xmlDictGrow : from %lu to %lu, %u elems\n", oldsize, size, nbElem);
#endif
return(ret);
@@ -728,7 +759,7 @@ xmlDictGrow(xmlDictPtr dict, int size) {
*/
void
xmlDictFree(xmlDictPtr dict) {
- int i;
+ size_t i;
xmlDictEntryPtr iter;
xmlDictEntryPtr next;
int inside_dict = 0;
@@ -738,7 +769,7 @@ xmlDictFree(xmlDictPtr dict) {
return;
if (!xmlDictInitialized)
- if (!xmlInitializeDict())
+ if (!__xmlInitializeDict())
return;
/* decrement the counter, it may be shared by a parser and docs */
@@ -797,17 +828,24 @@ xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
xmlDictEntryPtr entry;
xmlDictEntryPtr insert;
const xmlChar *ret;
+ unsigned int l;
if ((dict == NULL) || (name == NULL))
return(NULL);
if (len < 0)
- len = strlen((const char *) name);
+ l = strlen((const char *) name);
+ else
+ l = len;
+
+ if (((dict->limit > 0) && (l >= dict->limit)) ||
+ (l > INT_MAX / 2))
+ return(NULL);
/*
* Check for duplicate and insertion location.
*/
- okey = xmlDictComputeKey(dict, name, len);
+ okey = xmlDictComputeKey(dict, name, l);
key = okey % dict->size;
if (dict->dict[key].valid == 0) {
insert = NULL;
@@ -815,25 +853,25 @@ xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
for (insert = &(dict->dict[key]); insert->next != NULL;
insert = insert->next) {
#ifdef __GNUC__
- if ((insert->okey == okey) && (insert->len == len)) {
- if (!memcmp(insert->name, name, len))
+ if ((insert->okey == okey) && (insert->len == l)) {
+ if (!memcmp(insert->name, name, l))
return(insert->name);
}
#else
- if ((insert->okey == okey) && (insert->len == len) &&
- (!xmlStrncmp(insert->name, name, len)))
+ if ((insert->okey == okey) && (insert->len == l) &&
+ (!xmlStrncmp(insert->name, name, l)))
return(insert->name);
#endif
nbi++;
}
#ifdef __GNUC__
- if ((insert->okey == okey) && (insert->len == len)) {
- if (!memcmp(insert->name, name, len))
+ if ((insert->okey == okey) && (insert->len == l)) {
+ if (!memcmp(insert->name, name, l))
return(insert->name);
}
#else
- if ((insert->okey == okey) && (insert->len == len) &&
- (!xmlStrncmp(insert->name, name, len)))
+ if ((insert->okey == okey) && (insert->len == l) &&
+ (!xmlStrncmp(insert->name, name, l)))
return(insert->name);
#endif
}
@@ -846,7 +884,7 @@ xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
(dict->subdict->size != MIN_DICT_SIZE)) ||
((dict->size != MIN_DICT_SIZE) &&
(dict->subdict->size == MIN_DICT_SIZE)))
- skey = xmlDictComputeKey(dict->subdict, name, len);
+ skey = xmlDictComputeKey(dict->subdict, name, l);
else
skey = okey;
@@ -857,32 +895,32 @@ xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL;
tmp = tmp->next) {
#ifdef __GNUC__
- if ((tmp->okey == skey) && (tmp->len == len)) {
- if (!memcmp(tmp->name, name, len))
+ if ((tmp->okey == skey) && (tmp->len == l)) {
+ if (!memcmp(tmp->name, name, l))
return(tmp->name);
}
#else
- if ((tmp->okey == skey) && (tmp->len == len) &&
- (!xmlStrncmp(tmp->name, name, len)))
+ if ((tmp->okey == skey) && (tmp->len == l) &&
+ (!xmlStrncmp(tmp->name, name, l)))
return(tmp->name);
#endif
nbi++;
}
#ifdef __GNUC__
- if ((tmp->okey == skey) && (tmp->len == len)) {
- if (!memcmp(tmp->name, name, len))
+ if ((tmp->okey == skey) && (tmp->len == l)) {
+ if (!memcmp(tmp->name, name, l))
return(tmp->name);
}
#else
- if ((tmp->okey == skey) && (tmp->len == len) &&
- (!xmlStrncmp(tmp->name, name, len)))
+ if ((tmp->okey == skey) && (tmp->len == l) &&
+ (!xmlStrncmp(tmp->name, name, l)))
return(tmp->name);
#endif
}
key = okey % dict->size;
}
- ret = xmlDictAddString(dict, name, len);
+ ret = xmlDictAddString(dict, name, l);
if (ret == NULL)
return(NULL);
if (insert == NULL) {
@@ -893,13 +931,13 @@ xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
return(NULL);
}
entry->name = ret;
- entry->len = len;
+ entry->len = l;
entry->next = NULL;
entry->valid = 1;
entry->okey = okey;
- if (insert != NULL)
+ if (insert != NULL)
insert->next = entry;
dict->nbElems++;
@@ -928,17 +966,23 @@ const xmlChar *
xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) {
unsigned long key, okey, nbi = 0;
xmlDictEntryPtr insert;
+ unsigned int l;
if ((dict == NULL) || (name == NULL))
return(NULL);
if (len < 0)
- len = strlen((const char *) name);
+ l = strlen((const char *) name);
+ else
+ l = len;
+ if (((dict->limit > 0) && (l >= dict->limit)) ||
+ (l > INT_MAX / 2))
+ return(NULL);
/*
* Check for duplicate and insertion location.
*/
- okey = xmlDictComputeKey(dict, name, len);
+ okey = xmlDictComputeKey(dict, name, l);
key = okey % dict->size;
if (dict->dict[key].valid == 0) {
insert = NULL;
@@ -946,25 +990,25 @@ xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) {
for (insert = &(dict->dict[key]); insert->next != NULL;
insert = insert->next) {
#ifdef __GNUC__
- if ((insert->okey == okey) && (insert->len == len)) {
- if (!memcmp(insert->name, name, len))
+ if ((insert->okey == okey) && (insert->len == l)) {
+ if (!memcmp(insert->name, name, l))
return(insert->name);
}
#else
- if ((insert->okey == okey) && (insert->len == len) &&
- (!xmlStrncmp(insert->name, name, len)))
+ if ((insert->okey == okey) && (insert->len == l) &&
+ (!xmlStrncmp(insert->name, name, l)))
return(insert->name);
#endif
nbi++;
}
#ifdef __GNUC__
- if ((insert->okey == okey) && (insert->len == len)) {
- if (!memcmp(insert->name, name, len))
+ if ((insert->okey == okey) && (insert->len == l)) {
+ if (!memcmp(insert->name, name, l))
return(insert->name);
}
#else
- if ((insert->okey == okey) && (insert->len == len) &&
- (!xmlStrncmp(insert->name, name, len)))
+ if ((insert->okey == okey) && (insert->len == l) &&
+ (!xmlStrncmp(insert->name, name, l)))
return(insert->name);
#endif
}
@@ -977,7 +1021,7 @@ xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) {
(dict->subdict->size != MIN_DICT_SIZE)) ||
((dict->size != MIN_DICT_SIZE) &&
(dict->subdict->size == MIN_DICT_SIZE)))
- skey = xmlDictComputeKey(dict->subdict, name, len);
+ skey = xmlDictComputeKey(dict->subdict, name, l);
else
skey = okey;
@@ -988,25 +1032,25 @@ xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) {
for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL;
tmp = tmp->next) {
#ifdef __GNUC__
- if ((tmp->okey == skey) && (tmp->len == len)) {
- if (!memcmp(tmp->name, name, len))
+ if ((tmp->okey == skey) && (tmp->len == l)) {
+ if (!memcmp(tmp->name, name, l))
return(tmp->name);
}
#else
- if ((tmp->okey == skey) && (tmp->len == len) &&
- (!xmlStrncmp(tmp->name, name, len)))
+ if ((tmp->okey == skey) && (tmp->len == l) &&
+ (!xmlStrncmp(tmp->name, name, l)))
return(tmp->name);
#endif
nbi++;
}
#ifdef __GNUC__
- if ((tmp->okey == skey) && (tmp->len == len)) {
- if (!memcmp(tmp->name, name, len))
+ if ((tmp->okey == skey) && (tmp->len == l)) {
+ if (!memcmp(tmp->name, name, l))
return(tmp->name);
}
#else
- if ((tmp->okey == skey) && (tmp->len == len) &&
- (!xmlStrncmp(tmp->name, name, len)))
+ if ((tmp->okey == skey) && (tmp->len == l) &&
+ (!xmlStrncmp(tmp->name, name, l)))
return(tmp->name);
#endif
}
@@ -1032,7 +1076,7 @@ xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) {
xmlDictEntryPtr entry;
xmlDictEntryPtr insert;
const xmlChar *ret;
- int len, plen, l;
+ unsigned int len, plen, l;
if ((dict == NULL) || (name == NULL))
return(NULL);
@@ -1108,7 +1152,7 @@ xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) {
entry->valid = 1;
entry->okey = okey;
- if (insert != NULL)
+ if (insert != NULL)
insert->next = entry;
dict->nbElems++;
@@ -1166,6 +1210,50 @@ xmlDictSize(xmlDictPtr dict) {
return(dict->nbElems);
}
+/**
+ * xmlDictSetLimit:
+ * @dict: the dictionnary
+ * @limit: the limit in bytes
+ *
+ * Set a size limit for the dictionary
+ * Added in 2.9.0
+ *
+ * Returns the previous limit of the dictionary or 0
+ */
+size_t
+xmlDictSetLimit(xmlDictPtr dict, size_t limit) {
+ size_t ret;
+
+ if (dict == NULL)
+ return(0);
+ ret = dict->limit;
+ dict->limit = limit;
+ return(ret);
+}
+
+/**
+ * xmlDictGetUsage:
+ * @dict: the dictionnary
+ *
+ * Get how much memory is used by a dictionary for strings
+ * Added in 2.9.0
+ *
+ * Returns the amount of strings allocated
+ */
+size_t
+xmlDictGetUsage(xmlDictPtr dict) {
+ xmlDictStringsPtr pool;
+ size_t limit = 0;
+
+ if (dict == NULL)
+ return(0);
+ pool = dict->strings;
+ while (pool != NULL) {
+ limit += pool->size;
+ pool = pool->next;
+ }
+ return(limit);
+}
#define bottom_dict
#include "elfgcchack.h"
diff --git a/doc/APIchunk0.html b/doc/APIchunk0.html
index 25f473e..c90e042 100644
--- a/doc/APIchunk0.html
+++ b/doc/APIchunk0.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -46,6 +46,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>ANY</dt><dd><a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
</dd><dt>APIs</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
</dd><dt>ARRAY</dt><dd><a href="html/libxml-xmlstring.html#xmlStrlen">xmlStrlen</a><br />
<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br />
</dd><dt>ASCII</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br />
@@ -55,6 +56,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a><br />
<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />
<a href="html/libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
<a href="html/libxml-encoding.html#xmlNewCharEncodingHandler">xmlNewCharEncodingHandler</a><br />
<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br />
</dd><dt>ATTLIST</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterStartDTDAttlist">xmlTextWriterStartDTDAttlist</a><br />
@@ -95,6 +98,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br />
<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br />
<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br />
+</dd><dt>Added</dt><dd><a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
</dd><dt>Additional</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
<a href="html/libxml-globals.html#xmlCleanupGlobals">xmlCleanupGlobals</a><br />
<a href="html/libxml-globals.html#xmlInitGlobals">xmlInitGlobals</a><br />
@@ -117,6 +122,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
</dd><dt>Allocates</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br />
</dd><dt>Allows</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
</dd><dt>AlphabeticPresentationForms</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsAlphabeticPresentationForms">xmlUCSIsAlphabeticPresentationForms</a><br />
</dd><dt>Also</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
@@ -271,8 +277,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk1.html b/doc/APIchunk1.html
index 51d331e..7947196 100644
--- a/doc/APIchunk1.html
+++ b/doc/APIchunk1.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -358,8 +358,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html
index 116605d..22d5061 100644
--- a/doc/APIchunk10.html
+++ b/doc/APIchunk10.html
@@ -7,7 +7,7 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>API Alphabetic Index Z-a for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index Z-a for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a>
+</style><title>API Alphabetic Index Y-a for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index Y-a for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
<a href="APIchunk2.html">D-E</a>
<a href="APIchunk3.html">F-I</a>
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -37,7 +37,11 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk27.html">w-w</a>
<a href="APIchunk28.html">x-x</a>
<a href="APIchunk29.html">y-z</a>
-</h2><h2>Letter Z:</h2><dl><dt>ZLIB</dt><dd><a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br />
+</h2><h2>Letter Y:</h2><dl><dt>YES</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
+</dd><dt>YiRadicals</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsYiRadicals">xmlUCSIsYiRadicals</a><br />
+</dd><dt>YiSyllables</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsYiSyllables">xmlUCSIsYiSyllables</a><br />
+</dd><dt>YijingHexagramSymbols</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsYijingHexagramSymbols">xmlUCSIsYijingHexagramSymbols</a><br />
+</dd></dl><h2>Letter Z:</h2><dl><dt>ZLIB</dt><dd><a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br />
<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br />
<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br />
<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br />
@@ -149,7 +153,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br />
</dd><dt>activates</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
-</dd><dt>activation</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>acts</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
</dd><dt>actual</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
@@ -251,6 +254,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br />
</dd><dt>affect</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
+</dd><dt>affected</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
</dd><dt>affiliation</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br />
</dd><dt>afraid</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
</dd><dt>after</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br />
@@ -287,8 +291,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br />
<a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br />
<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br />
-</dd><dt>aggregate</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
+</dd><dt>aggregate</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
+</dd><dt>ahead</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
</dd><dt>algebraic</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
</dd><dt>alias</dt><dd><a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br />
<a href="html/libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a><br />
@@ -308,7 +314,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br />
<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br />
<a href="html/libxml-xpath.html#xmlXPathObjectCopy">xmlXPathObjectCopy</a><br />
-</dd><dt>allocation</dt><dd><a href="html/libxml-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a><br />
+</dd><dt>allocation</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a><br />
+<a href="html/libxml-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a><br />
<a href="html/libxml-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a><br />
<a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br />
@@ -351,7 +358,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br />
<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br />
</dd><dt>allowable</dt><dd><a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br />
-</dd><dt>allowed</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>allowed</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
<a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br />
<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br />
@@ -360,6 +370,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
<a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br />
<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
@@ -399,7 +410,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br />
<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a><br />
<a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a><br />
@@ -431,10 +441,12 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>amd</dt><dd><a href="html/libxml-catalog.html#xmlCatalogIsEmpty">xmlCatalogIsEmpty</a><br />
</dd><dt>amount</dt><dd><a href="html/libxml-parserInternals.html#INPUT_CHUNK">INPUT_CHUNK</a><br />
<a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemUsed">xmlMemUsed</a><br />
<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br />
<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br />
+<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
</dd><dt>amp</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
@@ -623,7 +635,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br />
</dd><dt>automaton</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br />
</dd><dt>autoreference</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
-</dd><dt>avoid</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
+</dd><dt>avoid</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
<a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
</dd><dt>avoiding</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNext">xmlTextReaderNext</a><br />
@@ -638,8 +651,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk11.html b/doc/APIchunk11.html
index a594514..9f94a1f 100644
--- a/doc/APIchunk11.html
+++ b/doc/APIchunk11.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -49,6 +49,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGDump">xmlRelaxNGDump</a><br />
<a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br />
+</dd><dt>bad</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
</dd><dt>badly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
</dd><dt>bahaviour</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br />
</dd><dt>balanced</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br />
@@ -100,7 +101,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br />
-<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
<a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br />
@@ -113,7 +113,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
-</dd><dt>beginning</dt><dd><a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
+</dd><dt>beginning</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br />
<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br />
<a href="html/libxml-list.html#xmlListInsert">xmlListInsert</a><br />
@@ -127,16 +128,21 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br />
-</dd><dt>behaviour</dt><dd><a href="html/libxml-HTMLtree.html#htmlNodeDump">htmlNodeDump</a><br />
+</dd><dt>behaviour</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-HTMLtree.html#htmlNodeDump">htmlNodeDump</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFile">htmlNodeDumpFile</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br />
<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
<a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
<a href="html/libxml-tree.html#xmlFreeNodeList">xmlFreeNodeList</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br />
@@ -171,6 +177,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBinHex">xmlTextWriterWriteBinHex</a><br />
</dd><dt>bindings</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br />
</dd><dt>bit</dt><dd><a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
+</dd><dt>bits</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>blanks</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br />
</dd><dt>bloc</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br />
@@ -206,20 +213,23 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>bound</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
</dd><dt>boundaries</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br />
-</dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
</dd><dt>bracket</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br />
</dd><dt>branch</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
-</dd><dt>break</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
+</dd><dt>break</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
</dd><dt>breaking</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
</dd><dt>breaks</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
+</dd><dt>brk</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
</dd><dt>broke</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
</dd><dt>broken</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br />
<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br />
@@ -249,7 +259,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlParserInputBufferPush">xmlParserInputBufferPush</a><br />
<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
-</dd><dt>buffers</dt><dd><a href="html/libxml-tree.html#xmlBufferDetach">xmlBufferDetach</a><br />
+</dd><dt>buffers</dt><dd><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
+<a href="html/libxml-tree.html#xmlBufferDetach">xmlBufferDetach</a><br />
</dd><dt>builded</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a><br />
</dd><dt>building</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
@@ -304,8 +315,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk12.html b/doc/APIchunk12.html
index 7985825..de376f7 100644
--- a/doc/APIchunk12.html
+++ b/doc/APIchunk12.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -52,7 +52,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br />
<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
-<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br />
@@ -74,6 +73,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br />
<a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br />
</dd><dt>canonicalization</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br />
@@ -87,10 +87,13 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br />
<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br />
+</dd><dt>canot</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
</dd><dt>capable</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
</dd><dt>caracters</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br />
</dd><dt>cardinality</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
-</dd><dt>carried</dt><dd><a href="html/libxml-tree.html#xmlNewDocProp">xmlNewDocProp</a><br />
+</dd><dt>carried</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlNewDocProp">xmlNewDocProp</a><br />
<a href="html/libxml-tree.html#xmlNewNsProp">xmlNewNsProp</a><br />
<a href="html/libxml-tree.html#xmlNewNsPropEatName">xmlNewNsPropEatName</a><br />
<a href="html/libxml-tree.html#xmlNewProp">xmlNewProp</a><br />
@@ -139,7 +142,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>ceiling</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
</dd><dt>certainly</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
</dd><dt>chained</dt><dd><a href="html/libxml-tree.html#xmlFreeNsList">xmlFreeNsList</a><br />
-</dd><dt>change</dt><dd><a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br />
+</dd><dt>change</dt><dd><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
+<a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br />
<a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br />
<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
@@ -572,8 +576,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br />
</dd><dt>connector</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
-</dd><dt>cononical</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br />
</dd><dt>consequent</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
</dd><dt>consideration</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>considered</dt><dd><a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br />
@@ -581,6 +583,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
</dd><dt>consist</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br />
+</dd><dt>const</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
</dd><dt>constant</dt><dd><a href="html/libxml-parser.html#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a><br />
<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br />
</dd><dt>constraint</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttribute">_xmlSchemaAttribute</a><br />
@@ -652,6 +656,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathDistinctSorted">xmlXPathDistinctSorted</a><br />
</dd><dt>contains</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_HAS_REFS">XML_SCHEMAS_ATTRGROUP_HAS_REFS</a><br />
+<a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br />
@@ -881,6 +886,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemUsed">xmlMemUsed</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
</dd><dt>custom</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
@@ -896,8 +903,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html
index 21eaffe..b1f069d 100644
--- a/doc/APIchunk13.html
+++ b/doc/APIchunk13.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -242,7 +242,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
+<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
+<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
+<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br />
</dd><dt>depth</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br />
@@ -379,12 +382,16 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>determinist</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataIsDeterminist">xmlAutomataIsDeterminist</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a><br />
</dd><dt>dict</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
-</dd><dt>dictionary</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
+</dd><dt>dictionaries</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+</dd><dt>dictionary</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
<a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br />
<a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br />
@@ -396,10 +403,12 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
<a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
<a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br />
<a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br />
<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
</dd><dt>did</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br />
@@ -420,7 +429,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br />
</dd><dt>differentiate</dt><dd><a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
</dd><dt>differently</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
-</dd><dt>differs</dt><dd><a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br />
+</dd><dt>differs</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br />
</dd><dt>digit</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
</dd><dt>digits</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
</dd><dt>dir</dt><dd><a href="html/libxml-debugXML.html#xmlShellDir">xmlShellDir</a><br />
@@ -443,7 +453,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br />
-</dd><dt>directly</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
+</dd><dt>directly</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
<a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
@@ -466,6 +477,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlParserGetDirectory">xmlParserGetDirectory</a><br />
<a href="html/libxml-debugXML.html#xmlShellList">xmlShellList</a><br />
</dd><dt>disable</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
</dd><dt>disabled</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br />
@@ -474,8 +486,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>disallowed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a><br />
-</dd><dt>discard</dt><dd><a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
-<a href="html/libxml-tree.html#xmlUnlinkNode">xmlUnlinkNode</a><br />
+</dd><dt>discard</dt><dd><a href="html/libxml-tree.html#xmlUnlinkNode">xmlUnlinkNode</a><br />
</dd><dt>discarded</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a><br />
</dd><dt>discarding</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />
<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br />
@@ -532,7 +543,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br />
<a href="html/libxml-tree.html#xmlRemoveProp">xmlRemoveProp</a><br />
<a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br />
@@ -601,7 +611,11 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>dtds</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br />
<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br />
<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
-</dd><dt>dump</dt><dd><a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
+</dd><dt>due</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
+</dd><dt>dump</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
<a href="html/libxml-tree.html#xmlBufferCCat">xmlBufferCCat</a><br />
<a href="html/libxml-tree.html#xmlBufferDump">xmlBufferDump</a><br />
<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br />
@@ -643,8 +657,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk14.html b/doc/APIchunk14.html
index ce82237..0e33ddb 100644
--- a/doc/APIchunk14.html
+++ b/doc/APIchunk14.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -55,6 +55,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
</dd><dt>efficiency</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>either</dt><dd><a href="html/libxml-debugXML.html#xmlBoolToText">xmlBoolToText</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
<a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br />
<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
@@ -170,6 +171,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpointer.html#xmlXPtrNewRangePoints">xmlXPtrNewRangePoints</a><br />
</dd><dt>ends</dt><dd><a href="html/libxml-parser.html#_xmlParserNodeInfo">_xmlParserNodeInfo</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPClose">xmlNanoHTTPClose</a><br />
+</dd><dt>enforced</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
</dd><dt>engine</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
<a href="html/libxml-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a><br />
<a href="html/libxml-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a><br />
@@ -186,7 +188,6 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>ensuring</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br />
</dd><dt>entire</dt><dd><a href="html/libxml-xmlIO.html#xmlCleanupInputCallbacks">xmlCleanupInputCallbacks</a><br />
<a href="html/libxml-xmlIO.html#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a><br />
-</dd><dt>entites</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
</dd><dt>entities:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
</dd><dt>entproc</dt><dd><a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
@@ -265,7 +266,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br />
<a href="html/libxml-xpath.html#xmlXPathConvertString">xmlXPathConvertString</a><br />
-</dd><dt>errror</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br />
</dd><dt>escape</dt><dd><a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br />
<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br />
<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
@@ -311,6 +311,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathEvalFunc">xmlXPathEvalFunc</a><br />
<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrBuildNodeList">xmlXPtrBuildNodeList</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
</dd><dt>evaulation</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a><br />
@@ -395,6 +396,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>explicitly</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br />
</dd><dt>explored</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
</dd><dt>exposing</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a><br />
+</dd><dt>express</dt><dd><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
</dd><dt>expressing</dt><dd><a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br />
</dd><dt>expressions</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br />
@@ -432,6 +434,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>extlang</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
</dd><dt>extract</dt><dd><a href="html/libxml-tree.html#XML_GET_CONTENT">XML_GET_CONTENT</a><br />
<a href="html/libxml-tree.html#XML_GET_LINE">XML_GET_LINE</a><br />
+<a href="html/libxml-tree.html#xmlBufContent">xmlBufContent</a><br />
+<a href="html/libxml-tree.html#xmlBufEnd">xmlBufEnd</a><br />
<a href="html/libxml-tree.html#xmlBufferContent">xmlBufferContent</a><br />
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
@@ -442,8 +446,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk15.html b/doc/APIchunk15.html
index bbf22e5..163d67b 100644
--- a/doc/APIchunk15.html
+++ b/doc/APIchunk15.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -38,6 +38,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk28.html">x-x</a>
<a href="APIchunk29.html">y-z</a>
</h2><h2>Letter f:</h2><dl><dt>fTP</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a><br />
+</dd><dt>face</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
</dd><dt>facet</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a><br />
@@ -114,7 +115,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>fatal</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
</dd><dt>fatalError</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
</dd><dt>favor</dt><dd><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
-</dd><dt>feature</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>feature</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br />
<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br />
<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br />
@@ -177,6 +180,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a><br />
</dd><dt>find</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br />
<a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
</dd><dt>finding</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br />
@@ -233,6 +237,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>flow</dt><dd><a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
</dd><dt>flushed</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br />
</dd><dt>flushes</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br />
@@ -305,6 +310,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br />
<a href="html/libxml-HTMLtree.html#htmlSaveFileEnc">htmlSaveFileEnc</a><br />
<a href="html/libxml-HTMLtree.html#htmlSaveFileFormat">htmlSaveFileFormat</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
@@ -424,8 +430,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk16.html b/doc/APIchunk16.html
index 0912b93..92d3845 100644
--- a/doc/APIchunk16.html
+++ b/doc/APIchunk16.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -110,6 +110,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>get</dt><dd><a href="html/libxml-parser.html#_xmlSAXHandler">_xmlSAXHandler</a><br />
<a href="html/libxml-parser.html#_xmlSAXHandlerV1">_xmlSAXHandlerV1</a><br />
<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
+<a href="html/libxml-tree.html#xmlBufUse">xmlBufUse</a><br />
<a href="html/libxml-tree.html#xmlBufferLength">xmlBufferLength</a><br />
<a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br />
<a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br />
@@ -178,6 +179,10 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>grows</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br />
<a href="html/libxml-tree.html#xmlBufferWriteChar">xmlBufferWriteChar</a><br />
<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br />
+</dd><dt>guarantee</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
+</dd><dt>guaranteed</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
</dd><dt>guess</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
</dd></dl><h2>Letter h:</h2><dl><dt>had</dt><dd><a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br />
@@ -246,6 +251,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPMimeType">xmlNanoHTTPMimeType</a><br />
</dd><dt>heading</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br />
+</dd><dt>held</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
</dd><dt>helper</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a><br />
</dd><dt>here</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
@@ -274,6 +281,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNewNsPropEatName">xmlNewNsPropEatName</a><br />
<a href="html/libxml-tree.html#xmlNewProp">xmlNewProp</a><br />
</dd><dt>holds</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br />
+</dd><dt>hooks</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a><br />
</dd><dt>host</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br />
@@ -285,6 +293,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br />
</dd><dt>hour</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
</dd><dt>how</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
</dd><dt>href</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_HREF">XINCLUDE_HREF</a><br />
</dd><dt>href==NULL</dt><dd><a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br />
</dd><dt>hrefs</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br />
@@ -342,8 +351,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk17.html b/doc/APIchunk17.html
index 6936af2..070f8ce 100644
--- a/doc/APIchunk17.html
+++ b/doc/APIchunk17.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -42,6 +42,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlversion.html#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a><br />
</dd><dt>icu</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_ICU_ENABLED">LIBXML_ICU_ENABLED</a><br />
</dd><dt>identify</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
+</dd><dt>identitier</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
</dd><dt>identity-constraint</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br />
<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br />
</dd><dt>ignorable</dt><dd><a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br />
@@ -59,7 +60,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br />
<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br />
-</dd><dt>imbrication</dt><dd><a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
+</dd><dt>imbrication</dt><dd><a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
</dd><dt>img</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>immediately</dt><dd><a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br />
@@ -191,7 +193,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br />
</dd><dt>indentation?</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br />
</dd><dt>indented</dt><dd><a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br />
-</dd><dt>indenting</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
+</dd><dt>indenting</dt><dd><a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
@@ -218,7 +221,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlversion.html#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a><br />
<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br />
<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
@@ -302,7 +304,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlNewTextReader">xmlNewTextReader</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br />
<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
</dd><dt>informations</dt><dd><a href="html/libxml-tree.html#_xmlAttr">_xmlAttr</a><br />
@@ -329,6 +334,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-debugXML.html#xmlShellDir">xmlShellDir</a><br />
<a href="html/libxml-xinclude.html#xmlXIncludeProcessNode">xmlXIncludeProcessNode</a><br />
</dd><dt>informative</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
@@ -417,6 +423,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br />
<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
@@ -429,6 +436,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-chvalid.html#xmlIsIdeographic">xmlIsIdeographic</a><br />
<a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
+<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-xmlIO.html#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a><br />
<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br />
<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br />
@@ -497,17 +505,20 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>interprestation</dt><dd><a href="html/libxml-xpath.html#xmlXPathFunction">xmlXPathFunction</a><br />
</dd><dt>interpreter</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
</dd><dt>intersection</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br />
+</dd><dt>introduced</dt><dd><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
+</dd><dt>ints</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>invalid</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br />
<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
</dd><dt>invited</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
-</dd><dt>invoking</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>isinf</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br />
</dd><dt>isn</dt><dd><a href="html/libxml-encoding.html#xmlRegisterCharEncodingHandler">xmlRegisterCharEncodingHandler</a><br />
</dd><dt>isnan</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br />
</dd><dt>issue</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
</dd><dt>issued</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br />
+</dd><dt>issues</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
</dd><dt>item</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br />
@@ -545,8 +556,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk18.html b/doc/APIchunk18.html
index 5de97d8..90249a1 100644
--- a/doc/APIchunk18.html
+++ b/doc/APIchunk18.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -184,12 +184,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlstring.html#xmlStrndup">xmlStrndup</a><br />
<a href="html/libxml-xmlstring.html#xmlUTF8Strndup">xmlUTF8Strndup</a><br />
<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br />
-</dd><dt>lenght</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br />
-<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a><br />
-<a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br />
-<a href="html/libxml-valid.html#xmlValidatePushCData">xmlValidatePushCData</a><br />
</dd><dt>length-1</dt><dd><a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br />
</dd><dt>less</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
<a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br />
@@ -199,6 +193,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>less-than</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
</dd><dt>level</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br />
<a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br />
<a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br />
<a href="html/libxml-xmlmemory.html#xmlCleanupMemory">xmlCleanupMemory</a><br />
@@ -299,15 +294,22 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br />
<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br />
</dd><dt>likely</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br />
-</dd><dt>limit</dt><dd><a href="html/libxml-xpath.html#_xmlXPathParserContext">_xmlXPathParserContext</a><br />
+</dd><dt>limit</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-xpath.html#_xmlXPathParserContext">_xmlXPathParserContext</a><br />
<a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br />
<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br />
-</dd><dt>limitation</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>limitation</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>limited</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
+<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
</dd><dt>linear</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br />
<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
+</dd><dt>lines</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>linked</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttributeLink">_xmlSchemaAttributeLink</a><br />
<a href="html/libxml-schemasInternals.html#_xmlSchemaFacetLink">_xmlSchemaFacetLink</a><br />
<a href="html/libxml-schemasInternals.html#_xmlSchemaTypeLink">_xmlSchemaTypeLink</a><br />
@@ -372,6 +374,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br />
<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br />
<a href="html/libxml-SAX2.html#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderLocatorBaseURI">xmlTextReaderLocatorBaseURI</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderLocatorLineNumber">xmlTextReaderLocatorLineNumber</a><br />
@@ -429,8 +433,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk19.html b/doc/APIchunk19.html
index 0f302d0..23f434e 100644
--- a/doc/APIchunk19.html
+++ b/doc/APIchunk19.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -97,7 +97,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br />
</dd><dt>marking</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br />
</dd><dt>marks</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br />
-</dd><dt>markup</dt><dd><a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br />
+</dd><dt>markup</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br />
@@ -289,6 +290,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br />
</dd><dt>month</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
</dd><dt>more</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
@@ -308,7 +310,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br />
</dd><dt>move</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
</dd><dt>moved</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderMoveToElement">xmlTextReaderMoveToElement</a><br />
-</dd><dt>much</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
+</dd><dt>much</dt><dd><a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
+<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
</dd><dt>multi-threaded</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
</dd><dt>multi-threading</dt><dd><a href="html/libxml-globals.html#xmlCleanupGlobals">xmlCleanupGlobals</a><br />
@@ -346,8 +349,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk2.html b/doc/APIchunk2.html
index 5c70d09..1d10f93 100644
--- a/doc/APIchunk2.html
+++ b/doc/APIchunk2.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -208,7 +208,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br />
<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
-</dd><dt>ENTITY_REF</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
+</dd><dt>ENTITY_REF</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
</dd><dt>ENTITY_REFs</dt><dd><a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
@@ -287,6 +288,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>EntitiesTable</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br />
<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br />
</dd><dt>Entity</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
<a href="html/libxml-parserInternals.html#xmlNewEntityInputStream">xmlNewEntityInputStream</a><br />
<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
@@ -328,6 +330,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a><br />
<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br />
</dd><dt>Evaluates</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
@@ -389,8 +392,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk20.html b/doc/APIchunk20.html
index 72ed431..0317066 100644
--- a/doc/APIchunk20.html
+++ b/doc/APIchunk20.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -306,8 +306,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk21.html b/doc/APIchunk21.html
index 2f98a8c..c655198 100644
--- a/doc/APIchunk21.html
+++ b/doc/APIchunk21.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -135,7 +135,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
<a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br />
<a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br />
-<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
@@ -231,7 +230,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br />
</dd><dt>opposite</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
</dd><dt>optimized</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a><br />
-</dd><dt>option</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>option</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
@@ -322,6 +323,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br />
<a href="html/libxml-parser.html#xmlParseEntity">xmlParseEntity</a><br />
<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br />
@@ -337,11 +339,15 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>outside</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
</dd><dt>over</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br />
</dd><dt>overflow</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br />
-</dd><dt>override</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>override</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br />
<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br />
+<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br />
+</dd><dt>overriding</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
</dd><dt>overwrite</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br />
<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br />
</dd><dt>overwritten</dt><dd><a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br />
@@ -369,8 +375,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk22.html b/doc/APIchunk22.html
index 94d0248..2f20018 100644
--- a/doc/APIchunk22.html
+++ b/doc/APIchunk22.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -151,6 +151,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br />
<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
+</dd><dt>per-thread</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a><br />
</dd><dt>performance</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br />
</dd><dt>performed</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
@@ -189,7 +190,6 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>pnetlib-doc</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br />
</dd><dt>pointed</dt><dd><a href="html/libxml-parserInternals.html#xmlPopInput">xmlPopInput</a><br />
</dd><dt>pointers</dt><dd><a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br />
@@ -208,6 +208,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br />
</dd><dt>portability</dt><dd><a href="html/libxml-nanoftp.html#INVALID_SOCKET">INVALID_SOCKET</a><br />
<a href="html/libxml-nanoftp.html#SOCKET">SOCKET</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
</dd><dt>portable</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br />
<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br />
</dd><dt>pos</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Strsub">xmlUTF8Strsub</a><br />
@@ -294,7 +296,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br />
</dd><dt>preferably</dt><dd><a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br />
-<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
<a href="html/libxml-tree.html#xmlNewPI">xmlNewPI</a><br />
@@ -331,7 +332,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br />
<a href="html/libxml-tree.html#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a><br />
<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br />
</dd><dt>preserved</dt><dd><a href="html/libxml-HTMLtree.html#HTML_PRESERVE_NODE">HTML_PRESERVE_NODE</a><br />
@@ -355,6 +355,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br />
<a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br />
<a href="html/libxml-globals.html#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
<a href="html/libxml-parser.html#xmlPedanticParserDefault">xmlPedanticParserDefault</a><br />
@@ -373,6 +374,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
@@ -508,6 +510,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>provenance</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
</dd><dt>provide</dt><dd><a href="html/libxml-nanoftp.html#INVALID_SOCKET">INVALID_SOCKET</a><br />
<a href="html/libxml-nanoftp.html#SOCKET">SOCKET</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
@@ -517,6 +520,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br />
<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br />
<a href="html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
<a href="html/libxml-xmlstring.html#xmlUTF8Strloc">xmlUTF8Strloc</a><br />
<a href="html/libxml-xmlstring.html#xmlUTF8Strpos">xmlUTF8Strpos</a><br />
@@ -570,8 +575,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk23.html b/doc/APIchunk23.html
index c7e04e3..16c7c21 100644
--- a/doc/APIchunk23.html
+++ b/doc/APIchunk23.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -59,8 +59,10 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>quote</dt><dd><a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br />
<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br />
<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br />
+<a href="html/libxml-xmlwriter.html#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a><br />
</dd><dt>quoted</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br />
</dd><dt>quotes</dt><dd><a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br />
+</dd><dt>quoting</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a><br />
</dd></dl><h2>Letter r:</h2><dl><dt>raise</dt><dd><a href="html/libxml-xpathInternals.html#XP_ERROR">XP_ERROR</a><br />
<a href="html/libxml-xpathInternals.html#XP_ERROR0">XP_ERROR0</a><br />
</dd><dt>raised</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
@@ -190,6 +192,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br />
<a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br />
<a href="html/libxml-valid.html#xmlCopyEnumeration">xmlCopyEnumeration</a><br />
<a href="html/libxml-tree.html#xmlCopyNode">xmlCopyNode</a><br />
@@ -244,7 +247,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-entities.html#xmlGetParameterEntity">xmlGetParameterEntity</a><br />
</dd><dt>referred</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
<a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br />
-</dd><dt>refresh</dt><dd><a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
</dd><dt>refs</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
</dd><dt>refuse</dt><dd><a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br />
@@ -335,6 +337,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-hash.html#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a><br />
<a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br />
</dd><dt>remove</dt><dd><a href="html/libxml-catalog.html#xmlACatalogRemove">xmlACatalogRemove</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br />
<a href="html/libxml-catalog.html#xmlCatalogRemove">xmlCatalogRemove</a><br />
<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
@@ -352,6 +355,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#nodePop">nodePop</a><br />
<a href="html/libxml-xpathInternals.html#valuePop">valuePop</a><br />
<a href="html/libxml-catalog.html#xmlACatalogRemove">xmlACatalogRemove</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br />
<a href="html/libxml-catalog.html#xmlCatalogRemove">xmlCatalogRemove</a><br />
<a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
@@ -403,6 +407,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />
</dd><dt>reporting</dt><dd><a href="html/libxml-parserInternals.html#INPUT_CHUNK">INPUT_CHUNK</a><br />
<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
<a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br />
</dd><dt>reports</dt><dd><a href="html/libxml-DOCBparser.html#docbCreatePushParserCtxt">docbCreatePushParserCtxt</a><br />
<a href="html/libxml-HTMLparser.html#htmlCreatePushParserCtxt">htmlCreatePushParserCtxt</a><br />
@@ -447,7 +452,6 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>requires</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br />
<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br />
-<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushElement">xmlRelaxNGValidatePushElement</a><br />
</dd><dt>requred</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br />
</dd><dt>reserved</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
@@ -518,6 +522,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>restored</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSetErrorHandler">xmlTextReaderSetErrorHandler</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
</dd><dt>restrict</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
</dd><dt>restriction</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a><br />
@@ -628,6 +633,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>running</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
</dd><dt>runtime</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br />
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
@@ -638,8 +644,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk24.html b/doc/APIchunk24.html
index 9067279..e81f34d 100644
--- a/doc/APIchunk24.html
+++ b/doc/APIchunk24.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -40,10 +40,11 @@ A:link, A:visited, A:active { text-decoration: underline }
</h2><h2>Letter s:</h2><dl><dt>s390</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
</dd><dt>safe</dt><dd><a href="html/libxml-xmlstring.html#BAD_CAST">BAD_CAST</a><br />
<a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br />
-<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
-</dd><dt>safety</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>safety</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>same</dt><dd><a href="html/libxml-HTMLtree.html#HTML_COMMENT_NODE">HTML_COMMENT_NODE</a><br />
<a href="html/libxml-HTMLtree.html#HTML_ENTITY_REF_NODE">HTML_ENTITY_REF_NODE</a><br />
<a href="html/libxml-HTMLtree.html#HTML_PI_NODE">HTML_PI_NODE</a><br />
@@ -66,6 +67,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowing">xmlXPathNextFollowing</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
</dd><dt>save</dt><dd><a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br />
<a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br />
@@ -135,6 +137,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidateCtxt">xmlTextReaderRelaxNGValidateCtxt</a><br />
@@ -384,6 +387,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
</dd><dt>single</dt><dd><a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
@@ -407,6 +411,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>singleton</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
</dd><dt>site1</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>site2</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
+</dd><dt>size_t</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
</dd><dt>sizes</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br />
</dd><dt>skip</dt><dd><a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br />
@@ -453,6 +458,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xinclude.html#xmlXIncludeProcessTree">xmlXIncludeProcessTree</a><br />
<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlags">xmlXIncludeProcessTreeFlags</a><br />
<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlagsData">xmlXIncludeProcessTreeFlagsData</a><br />
+</dd><dt>somehow</dt><dd><a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
</dd><dt>sometimes</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
@@ -639,7 +645,6 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>startup</dt><dd><a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br />
<a href="html/libxml-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a><br />
<a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br />
-<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
<a href="html/libxml-SAX2.html#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a><br />
@@ -688,6 +693,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
<a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br />
+<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
<a href="html/libxml-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br />
@@ -703,6 +709,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br />
<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br />
<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
+</dd><dt>stores</dt><dd><a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
</dd><dt>str</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br />
<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
</dd><dt>strcasecmp</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcasecmp">xmlStrcasecmp</a><br />
@@ -735,6 +742,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>stringi</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a><br />
</dd><dt>strings</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br />
@@ -776,6 +784,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlFreeNsList">xmlFreeNsList</a><br />
<a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br />
<a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br />
+<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a><br />
</dd><dt>struture</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br />
@@ -808,6 +817,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br />
@@ -891,6 +901,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br />
<a href="html/libxml-tree.html#xmlUnsetNsProp">xmlUnsetNsProp</a><br />
<a href="html/libxml-tree.html#xmlUnsetProp">xmlUnsetProp</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
</dd><dt>successfully</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNext">xmlTextReaderNext</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a><br />
@@ -966,8 +977,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk25.html b/doc/APIchunk25.html
index dc8dc79..dec65ba 100644
--- a/doc/APIchunk25.html
+++ b/doc/APIchunk25.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -117,6 +117,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
+<a href="html/libxml-tree.html#xmlUnlinkNode">xmlUnlinkNode</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
@@ -144,6 +145,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br />
<a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br />
<a href="html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a><br />
+<a href="html/libxml-tree.html#xmlUnlinkNode">xmlUnlinkNode</a><br />
</dd><dt>third</dt><dd><a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br />
<a href="html/libxml-hash.html#xmlHashLookup3">xmlHashLookup3</a><br />
<a href="html/libxml-hash.html#xmlHashQLookup3">xmlHashQLookup3</a><br />
@@ -158,6 +160,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>those</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
</dd><dt>though</dt><dd><a href="html/libxml-tree.html#xmlDocDumpMemory">xmlDocDumpMemory</a><br />
@@ -170,7 +173,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br />
<a href="html/libxml-threads.html#xmlInitThreads">xmlInitThreads</a><br />
<a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br />
-<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
<a href="html/libxml-threads.html#xmlIsMainThread">xmlIsMainThread</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
@@ -217,6 +219,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br />
<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
<a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br />
<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
@@ -365,7 +368,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br />
@@ -425,8 +427,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk26.html b/doc/APIchunk26.html
index 646acdb..c68ae92 100644
--- a/doc/APIchunk26.html
+++ b/doc/APIchunk26.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -62,6 +62,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
</dd><dt>unescaping</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br />
+</dd><dt>unfriendly</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
</dd><dt>unicode</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br />
<a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br />
</dd><dt>unimplemented</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a><br />
@@ -103,14 +105,15 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br />
<a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextNamespace">xmlXPathNextNamespace</a><br />
-</dd><dt>unliked</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
</dd><dt>unlink</dt><dd><a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
<a href="html/libxml-tree.html#xmlUnlinkNode">xmlUnlinkNode</a><br />
</dd><dt>unlinked</dt><dd><a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br />
+<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br />
<a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br />
+<a href="html/libxml-tree.html#xmlUnlinkNode">xmlUnlinkNode</a><br />
</dd><dt>unload</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br />
<a href="html/libxml-xmlmodule.html#xmlModuleFree">xmlModuleFree</a><br />
</dd><dt>unloaded</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br />
@@ -185,10 +188,12 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br />
</dd><dt>upon</dt><dd><a href="html/libxml-SAX.html#checkNamespace">checkNamespace</a><br />
<a href="html/libxml-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a><br />
-</dd><dt>upper</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
+</dd><dt>upper</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
</dd><dt>uri</dt><dd><a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br />
-</dd><dt>usage</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
+</dd><dt>usage</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br />
<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br />
</dd><dt>used:</dt><dd><a href="html/libxml-parser.html#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a><br />
</dd><dt>used?</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttribute">_xmlSchemaAttribute</a><br />
@@ -239,6 +244,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushElement">xmlRelaxNGValidatePushElement</a><br />
<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
+</dd><dt>validator</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
</dd><dt>validity</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br />
<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br />
@@ -292,6 +298,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>void</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br />
<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br />
+</dd><dt>volume</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
<a href="APIchunk2.html">D-E</a>
@@ -301,8 +308,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk27.html b/doc/APIchunk27.html
index 7123c06..cabaa27 100644
--- a/doc/APIchunk27.html
+++ b/doc/APIchunk27.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -132,6 +132,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>what</dt><dd><a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br />
<a href="html/libxml-catalog.html#xmlCatalogSetDefaults">xmlCatalogSetDefaults</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteRawLen">xmlTextWriterWriteRawLen</a><br />
</dd><dt>where</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
@@ -188,6 +189,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br />
<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderLookupNamespace">xmlTextReaderLookupNamespace</a><br />
+</dd><dt>why</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
</dd><dt>wierd</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>wildcard</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a><br />
@@ -255,6 +258,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>words</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathStringLengthFunction">xmlXPathStringLengthFunction</a><br />
</dd><dt>work</dt><dd><a href="html/libxml-tree.html#xmlBufferDetach">xmlBufferDetach</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
<a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br />
<a href="html/libxml-tree.html#xmlRemoveProp">xmlRemoveProp</a><br />
@@ -270,6 +275,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>worthwhile</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>would</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br />
<a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
</dd><dt>wrapper</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
@@ -318,8 +325,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk28.html b/doc/APIchunk28.html
index 5653024..c5993f9 100644
--- a/doc/APIchunk28.html
+++ b/doc/APIchunk28.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -107,12 +107,16 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>xmlAttributePtr</dt><dd><a href="html/libxml-valid.html#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a><br />
<a href="html/libxml-valid.html#xmlGetDtdQAttrDesc">xmlGetDtdQAttrDesc</a><br />
</dd><dt>xmlAttributeTablePtr</dt><dd><a href="html/libxml-valid.html#xmlCopyAttributeTable">xmlCopyAttributeTable</a><br />
+</dd><dt>xmlBufNodeDump</dt><dd><a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
+</dd><dt>xmlBufPtr</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
</dd><dt>xmlBuffer</dt><dd><a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br />
<a href="html/libxml-encoding.html#xmlCharEncInFunc">xmlCharEncInFunc</a><br />
<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br />
+<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateBuffer">xmlOutputBufferCreateBuffer</a><br />
</dd><dt>xmlBufferPtr</dt><dd><a href="html/libxml-xmlwriter.html#xmlNewTextWriterMemory">xmlNewTextWriterMemory</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateBuffer">xmlOutputBufferCreateBuffer</a><br />
+</dd><dt>xmlBufferShrink</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
</dd><dt>xmlBuildURI</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
</dd><dt>xmlBytesConsumed</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br />
</dd><dt>xmlCatalogAllow</dt><dd><a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br />
@@ -129,8 +133,6 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>xmlCharEncodingOutputFunc</dt><dd><a href="html/libxml-encoding.html#xmlNewCharEncodingHandler">xmlNewCharEncodingHandler</a><br />
</dd><dt>xmlChars</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br />
<a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br />
-<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
-<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
</dd><dt>xmlCleanupParser</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
</dd><dt>xmlCleanupThreads</dt><dd><a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
</dd><dt>xmlCopyDocElementContent</dt><dd><a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
@@ -216,7 +218,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>xmlHashTablePtr</dt><dd><a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br />
<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
</dd><dt>xmlIDPtr</dt><dd><a href="html/libxml-valid.html#xmlAddID">xmlAddID</a><br />
-</dd><dt>xmlIndentTreeOutput</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
+</dd><dt>xmlIndentTreeOutput</dt><dd><a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
@@ -248,14 +251,14 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>xmlIsMainThread</dt><dd><a href="html/libxml-threads.html#xmlIsMainThread">xmlIsMainThread</a><br />
</dd><dt>xmlIsPubidCharQ</dt><dd><a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br />
</dd><dt>xmlIsPubidChar_ch</dt><dd><a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br />
-</dd><dt>xmlKeepBlanksDefault</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
+</dd><dt>xmlKeepBlanksDefault</dt><dd><a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br />
<a href="html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a><br />
-</dd><dt>xmlLineNumbersDefault</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
</dd><dt>xmlListWalk</dt><dd><a href="html/libxml-list.html#xmlListWalker">xmlListWalker</a><br />
</dd><dt>xmlLoadExtDtdDefaultValue</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br />
<a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br />
@@ -311,10 +314,13 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlCopyNamespaceList">xmlCopyNamespaceList</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
<a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br />
+</dd><dt>xmlOutputBuffer</dt><dd><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
</dd><dt>xmlOutputBufferClose</dt><dd><a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br />
<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br />
</dd><dt>xmlOutputBufferPtr</dt><dd><a href="html/libxml-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a><br />
<a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
</dd><dt>xmlOutputCloseCallback</dt><dd><a href="html/libxml-xmlIO.html#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a><br />
</dd><dt>xmlOutputMatchCallback</dt><dd><a href="html/libxml-xmlIO.html#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a><br />
</dd><dt>xmlOutputOpenCallback</dt><dd><a href="html/libxml-xmlIO.html#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a><br />
@@ -338,6 +344,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#xmlParseChunk">xmlParseChunk</a><br />
</dd><dt>xmlParserFindNodeInfoIndex</dt><dd><a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
</dd><dt>xmlParserHandleReference</dt><dd><a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br />
+</dd><dt>xmlParserInputBuffer</dt><dd><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
</dd><dt>xmlParserInputBufferPtr</dt><dd><a href="html/libxml-xmlreader.html#xmlNewTextReader">xmlNewTextReader</a><br />
<a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
@@ -491,6 +498,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNewNodeSetList">xmlXPathNewNodeSetList</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewString">xmlXPathNewString</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewValueTree">xmlXPathNewValueTree</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathWrapNodeSet">xmlXPathWrapNodeSet</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br />
@@ -533,8 +541,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk29.html b/doc/APIchunk29.html
index d293408..2aaa21b 100644
--- a/doc/APIchunk29.html
+++ b/doc/APIchunk29.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -107,8 +107,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk3.html b/doc/APIchunk3.html
index 946863a..515118a 100644
--- a/doc/APIchunk3.html
+++ b/doc/APIchunk3.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -57,7 +57,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>False</dt><dd><a href="html/libxml-debugXML.html#xmlBoolToText">xmlBoolToText</a><br />
</dd><dt>Fetch</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br />
</dd><dt>File</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
-</dd><dt>Fills</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
+</dd><dt>Fills</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
</dd><dt>Find</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
<a href="html/libxml-valid.html#xmlGetRefs">xmlGetRefs</a><br />
@@ -120,7 +121,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlDOMWrapFreeCtxt">xmlDOMWrapFreeCtxt</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPFreeCtxt">xmlNanoFTPFreeCtxt</a><br />
</dd><dt>Front-end</dt><dd><a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br />
-</dd><dt>Function</dt><dd><a href="html/libxml-tree.html#xmlBufferContent">xmlBufferContent</a><br />
+</dd><dt>Function</dt><dd><a href="html/libxml-tree.html#xmlBufContent">xmlBufContent</a><br />
+<a href="html/libxml-tree.html#xmlBufEnd">xmlBufEnd</a><br />
+<a href="html/libxml-tree.html#xmlBufUse">xmlBufUse</a><br />
+<a href="html/libxml-tree.html#xmlBufferContent">xmlBufferContent</a><br />
<a href="html/libxml-tree.html#xmlBufferLength">xmlBufferLength</a><br />
<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
@@ -140,7 +144,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>GeometricShapes</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsGeometricShapes">xmlUCSIsGeometricShapes</a><br />
</dd><dt>Georgian</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsGeorgian">xmlUCSIsGeorgian</a><br />
</dd><dt>Gets</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderReadState">xmlTextReaderReadState</a><br />
-</dd><dt>Gives</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br />
+</dd><dt>Gives</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br />
</dd><dt>Global</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
</dd><dt>Gothic</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsGothic">xmlUCSIsGothic</a><br />
</dd><dt>Greek</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsGreek">xmlUCSIsGreek</a><br />
@@ -316,6 +322,10 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>Intended</dt><dd><a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br />
</dd><dt>Internal</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br />
<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br />
+</dd><dt>Introduced</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>Irregular</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
@@ -326,8 +336,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk4.html b/doc/APIchunk4.html
index 8220fff..d26883b 100644
--- a/doc/APIchunk4.html
+++ b/doc/APIchunk4.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -91,6 +91,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlSplitQName">xmlSplitQName</a><br />
<a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br />
</dd><dt>Location</dt><dd><a href="html/libxml-xpath.html#xmlXPathEval">xmlXPathEval</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br />
</dd><dt>LocationSet</dt><dd><a href="html/libxml-xpointer.html#xmlXPtrFreeLocationSet">xmlXPtrFreeLocationSet</a><br />
@@ -134,7 +135,10 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>MathematicalOperators</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsMathematicalOperators">xmlUCSIsMathematicalOperators</a><br />
</dd><dt>Max</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br />
-</dd><dt>Maximum</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>Maximum</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>May</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
</dd><dt>Memory</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br />
@@ -193,7 +197,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br />
<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
-</dd><dt>NOTE</dt><dd><a href="html/libxml-parser.html#xmlCtxtReadFd">xmlCtxtReadFd</a><br />
+</dd><dt>NOTE</dt><dd><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-parser.html#xmlCtxtReadFd">xmlCtxtReadFd</a><br />
<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNotationDecl">xmlParseNotationDecl</a><br />
<a href="html/libxml-parser.html#xmlReadFd">xmlReadFd</a><br />
@@ -207,6 +212,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br />
<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
<a href="html/libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br />
+<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br />
<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
@@ -320,8 +327,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk5.html b/doc/APIchunk5.html
index fcbe54a..da60d1a 100644
--- a/doc/APIchunk5.html
+++ b/doc/APIchunk5.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -149,6 +149,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br />
</dd><dt>Path</dt><dd><a href="html/libxml-tree.html#xmlGetNodePath">xmlGetNodePath</a><br />
<a href="html/libxml-xpath.html#xmlXPathEval">xmlXPathEval</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
</dd><dt>People</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
</dd><dt>PhoneticExtensions</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsPhoneticExtensions">xmlUCSIsPhoneticExtensions</a><br />
@@ -268,8 +269,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk6.html b/doc/APIchunk6.html
index 315c8bd..346e7e5 100644
--- a/doc/APIchunk6.html
+++ b/doc/APIchunk6.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -82,7 +82,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>Raises</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSetArityError">xmlXPathSetArityError</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSetError">xmlXPathSetError</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSetTypeError">xmlXPathSetTypeError</a><br />
-</dd><dt>Read</dt><dd><a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br />
+</dd><dt>Read</dt><dd><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br />
<a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br />
<a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
<a href="html/libxml-xmlIO.html#xmlIOFTPRead">xmlIOFTPRead</a><br />
@@ -201,6 +202,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-relaxng.html#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGNewValidCtxt">xmlRelaxNGNewValidCtxt</a><br />
</dd><dt>Remove</dt><dd><a href="html/libxml-catalog.html#xmlACatalogRemove">xmlACatalogRemove</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
<a href="html/libxml-tree.html#xmlBufferDetach">xmlBufferDetach</a><br />
<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br />
<a href="html/libxml-catalog.html#xmlCatalogRemove">xmlCatalogRemove</a><br />
@@ -268,8 +270,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk7.html b/doc/APIchunk7.html
index 452b9a7..3f46f99 100644
--- a/doc/APIchunk7.html
+++ b/doc/APIchunk7.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -185,8 +185,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br />
+</dd><dt>Setting</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
</dd><dt>Setup</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br />
<a href="html/libxml-xmlreader.html#xmlReaderNewDoc">xmlReaderNewDoc</a><br />
<a href="html/libxml-xmlreader.html#xmlReaderNewFd">xmlReaderNewFd</a><br />
@@ -229,7 +231,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a><br />
</dd><dt>Similarly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
</dd><dt>Simply</dt><dd><a href="html/libxml-uri.html#xmlCreateURI">xmlCreateURI</a><br />
-</dd><dt>Since</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br />
+</dd><dt>Since</dt><dd><a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
+<a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br />
<a href="html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br />
</dd><dt>Single</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
@@ -303,8 +306,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk8.html b/doc/APIchunk8.html
index 8fca400..934e39d 100644
--- a/doc/APIchunk8.html
+++ b/doc/APIchunk8.html
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -41,6 +41,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlAddChildList">xmlAddChildList</a><br />
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
@@ -152,6 +153,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-catalog.html#xmlCatalogGetSystem">xmlCatalogGetSystem</a><br />
<a href="html/libxml-catalog.html#xmlCatalogResolvePublic">xmlCatalogResolvePublic</a><br />
<a href="html/libxml-catalog.html#xmlCatalogResolveSystem">xmlCatalogResolveSystem</a><br />
+<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
<a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a><br />
<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br />
@@ -281,8 +283,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIchunk9.html b/doc/APIchunk9.html
index 5cb56e3..8c4ac1f 100644
--- a/doc/APIchunk9.html
+++ b/doc/APIchunk9.html
@@ -7,7 +7,7 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>API Alphabetic Index V-Y for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index V-Y for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a>
+</style><title>API Alphabetic Index V-X for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index V-X for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
<a href="APIchunk2.html">D-E</a>
<a href="APIchunk3.html">F-I</a>
@@ -16,8 +16,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
@@ -132,6 +132,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>With</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEndTag">xmlParseEndTag</a><br />
<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br />
+</dd><dt>Workaround</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
</dd><dt>Working</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br />
</dd><dt>Wrap</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathWrapNodeSet">xmlXPathWrapNodeSet</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrWrapLocationSet">xmlXPtrWrapLocationSet</a><br />
@@ -195,7 +196,10 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>XML_ELEMENT_TYPE_xxx</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
</dd><dt>XML_ENTITY_DECL</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
</dd><dt>XML_ERR_OK</dt><dd><a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br />
-</dd><dt>XML_PARSE_HUGE</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+</dd><dt>XML_PARSE_BIG_LINES</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
+</dd><dt>XML_PARSE_HUGE</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>XML_SCHEMAS_ELEM_GLOBAL</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br />
</dd><dt>XML_SCHEMAS_FACET_PRESERVE</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaFacet">_xmlSchemaFacet</a><br />
</dd><dt>XML_SCHEMAS_STRING</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
@@ -236,10 +240,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xinclude.html#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a><br />
</dd><dt>Xml</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br />
</dd><dt>XmlNodeType</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br />
-</dd></dl><h2>Letter Y:</h2><dl><dt>YES</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
-</dd><dt>YiRadicals</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsYiRadicals">xmlUCSIsYiRadicals</a><br />
-</dd><dt>YiSyllables</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsYiSyllables">xmlUCSIsYiSyllables</a><br />
-</dd><dt>YijingHexagramSymbols</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsYijingHexagramSymbols">xmlUCSIsYijingHexagramSymbols</a><br />
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
<a href="APIchunk1.html">C-C</a>
<a href="APIchunk2.html">D-E</a>
@@ -249,8 +249,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk6.html">Q-R</a>
<a href="APIchunk7.html">S-S</a>
<a href="APIchunk8.html">T-U</a>
-<a href="APIchunk9.html">V-Y</a>
-<a href="APIchunk10.html">Z-a</a>
+<a href="APIchunk9.html">V-X</a>
+<a href="APIchunk10.html">Y-a</a>
<a href="APIchunk11.html">b-b</a>
<a href="APIchunk12.html">c-c</a>
<a href="APIchunk13.html">d-d</a>
diff --git a/doc/APIconstructors.html b/doc/APIconstructors.html
index 35bb017..d5ca488 100644
--- a/doc/APIconstructors.html
+++ b/doc/APIconstructors.html
@@ -24,6 +24,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br />
<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEncodingDecl">xmlParseEncodingDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseName">xmlParseName</a><br />
@@ -91,6 +92,12 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br />
<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
+</p><h2>Type size_t:</h2><p><a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-tree.html#xmlBufUse">xmlBufUse</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
</p><h2>Type unsigned long:</h2><p><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
@@ -173,6 +180,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-catalog.html#xmlACatalogResolvePublic">xmlACatalogResolvePublic</a><br />
<a href="html/libxml-catalog.html#xmlACatalogResolveSystem">xmlACatalogResolveSystem</a><br />
<a href="html/libxml-catalog.html#xmlACatalogResolveURI">xmlACatalogResolveURI</a><br />
+<a href="html/libxml-tree.html#xmlBufContent">xmlBufContent</a><br />
+<a href="html/libxml-tree.html#xmlBufEnd">xmlBufEnd</a><br />
<a href="html/libxml-tree.html#xmlBufferDetach">xmlBufferDetach</a><br />
<a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br />
<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
@@ -562,6 +571,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNewNodeSetList">xmlXPathNewNodeSetList</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewString">xmlXPathNewString</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewValueTree">xmlXPathNewValueTree</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpath.html#xmlXPathObjectCopy">xmlXPathObjectCopy</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathVariableLookup">xmlXPathVariableLookup</a><br />
<a href="html/libxml-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a><br />
diff --git a/doc/APIfiles.html b/doc/APIfiles.html
index 3911d92..65e004b 100644
--- a/doc/APIfiles.html
+++ b/doc/APIfiles.html
@@ -331,11 +331,13 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
<a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
<a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br />
<a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br />
<a href="html/libxml-dict.html#xmlDictPtr">xmlDictPtr</a><br />
<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br />
<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
</p><h2><a name="encoding" id="encoding">Module encoding</a>:</h2><p><a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br />
@@ -610,6 +612,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#XML_PARSER_START">XML_PARSER_START</a><br />
<a href="html/libxml-parser.html#XML_PARSER_START_TAG">XML_PARSER_START_TAG</a><br />
<a href="html/libxml-parser.html#XML_PARSER_SYSTEM_LITERAL">XML_PARSER_SYSTEM_LITERAL</a><br />
+<a href="html/libxml-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a><br />
<a href="html/libxml-parser.html#XML_PARSE_COMPACT">XML_PARSE_COMPACT</a><br />
<a href="html/libxml-parser.html#XML_PARSE_DOM">XML_PARSE_DOM</a><br />
<a href="html/libxml-parser.html#XML_PARSE_DTDATTR">XML_PARSE_DTDATTR</a><br />
@@ -816,7 +819,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#MOVETO_ENDTAG">MOVETO_ENDTAG</a><br />
<a href="html/libxml-parserInternals.html#MOVETO_STARTTAG">MOVETO_STARTTAG</a><br />
<a href="html/libxml-parserInternals.html#SKIP_EOL">SKIP_EOL</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a><br />
@@ -1286,6 +1292,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-threads.html#xmlRMutexUnlock">xmlRMutexUnlock</a><br />
<a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br />
</p><h2><a name="tree" id="tree">Module tree</a>:</h2><p><a href="html/libxml-tree.html#BASE_BUFFER_SIZE">BASE_BUFFER_SIZE</a><br />
+<a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
<a href="html/libxml-tree.html#XML_ATTRIBUTE_CDATA">XML_ATTRIBUTE_CDATA</a><br />
<a href="html/libxml-tree.html#XML_ATTRIBUTE_DECL">XML_ATTRIBUTE_DECL</a><br />
<a href="html/libxml-tree.html#XML_ATTRIBUTE_ENTITIES">XML_ATTRIBUTE_ENTITIES</a><br />
@@ -1378,6 +1385,14 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlAttributeDefault">xmlAttributeDefault</a><br />
<a href="html/libxml-tree.html#xmlAttributePtr">xmlAttributePtr</a><br />
<a href="html/libxml-tree.html#xmlAttributeType">xmlAttributeType</a><br />
+<a href="html/libxml-tree.html#xmlBuf">xmlBuf</a><br />
+<a href="html/libxml-tree.html#xmlBufContent">xmlBufContent</a><br />
+<a href="html/libxml-tree.html#xmlBufEnd">xmlBufEnd</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlBufPtr">xmlBufPtr</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-tree.html#xmlBufUse">xmlBufUse</a><br />
<a href="html/libxml-tree.html#xmlBuffer">xmlBuffer</a><br />
<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
@@ -1771,6 +1786,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br />
@@ -1817,7 +1834,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a><br />
<a href="html/libxml-xmlautomata.html#xmlFreeAutomata">xmlFreeAutomata</a><br />
<a href="html/libxml-xmlautomata.html#xmlNewAutomata">xmlNewAutomata</a><br />
-</p><h2><a name="xmlerror" id="xmlerror">Module xmlerror</a>:</h2><p><a href="html/libxml-xmlerror.html#XML_C14N_CREATE_CTXT">XML_C14N_CREATE_CTXT</a><br />
+</p><h2><a name="xmlerror" id="xmlerror">Module xmlerror</a>:</h2><p><a href="html/libxml-xmlerror.html#XML_BUF_OVERFLOW">XML_BUF_OVERFLOW</a><br />
+<a href="html/libxml-xmlerror.html#XML_C14N_CREATE_CTXT">XML_C14N_CREATE_CTXT</a><br />
<a href="html/libxml-xmlerror.html#XML_C14N_CREATE_STACK">XML_C14N_CREATE_STACK</a><br />
<a href="html/libxml-xmlerror.html#XML_C14N_INVALID_NODE">XML_C14N_INVALID_NODE</a><br />
<a href="html/libxml-xmlerror.html#XML_C14N_RELATIVE_NAMESPACE">XML_C14N_RELATIVE_NAMESPACE</a><br />
@@ -1828,7 +1846,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_CATALOG_NOT_CATALOG">XML_CATALOG_NOT_CATALOG</a><br />
<a href="html/libxml-xmlerror.html#XML_CATALOG_PREFER_VALUE">XML_CATALOG_PREFER_VALUE</a><br />
<a href="html/libxml-xmlerror.html#XML_CATALOG_RECURSION">XML_CATALOG_RECURSION</a><br />
-<a href="html/libxml-xmlerror.html#XML_CHECK_">XML_CHECK_</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_ENTITY_TYPE">XML_CHECK_ENTITY_TYPE</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_FOUND_ATTRIBUTE">XML_CHECK_FOUND_ATTRIBUTE</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_FOUND_CDATA">XML_CHECK_FOUND_CDATA</a><br />
@@ -1867,7 +1884,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_CHECK_WRONG_NEXT">XML_CHECK_WRONG_NEXT</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_WRONG_PARENT">XML_CHECK_WRONG_PARENT</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_WRONG_PREV">XML_CHECK_WRONG_PREV</a><br />
-<a href="html/libxml-xmlerror.html#XML_CHECK_X">XML_CHECK_X</a><br />
<a href="html/libxml-xmlerror.html#XML_DTD_ATTRIBUTE_DEFAULT">XML_DTD_ATTRIBUTE_DEFAULT</a><br />
<a href="html/libxml-xmlerror.html#XML_DTD_ATTRIBUTE_REDEFINED">XML_DTD_ATTRIBUTE_REDEFINED</a><br />
<a href="html/libxml-xmlerror.html#XML_DTD_ATTRIBUTE_VALUE">XML_DTD_ATTRIBUTE_VALUE</a><br />
@@ -1973,6 +1989,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_ERR_MIXED_NOT_FINISHED">XML_ERR_MIXED_NOT_FINISHED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_MIXED_NOT_STARTED">XML_ERR_MIXED_NOT_STARTED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NAME_REQUIRED">XML_ERR_NAME_REQUIRED</a><br />
+<a href="html/libxml-xmlerror.html#XML_ERR_NAME_TOO_LONG">XML_ERR_NAME_TOO_LONG</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NMTOKEN_REQUIRED">XML_ERR_NMTOKEN_REQUIRED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NONE">XML_ERR_NONE</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NOTATION_NOT_FINISHED">XML_ERR_NOTATION_NOT_FINISHED</a><br />
@@ -2009,12 +2026,14 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING">XML_ERR_UNSUPPORTED_ENCODING</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_URI_FRAGMENT">XML_ERR_URI_FRAGMENT</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_URI_REQUIRED">XML_ERR_URI_REQUIRED</a><br />
+<a href="html/libxml-xmlerror.html#XML_ERR_USER_STOP">XML_ERR_USER_STOP</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_VALUE_REQUIRED">XML_ERR_VALUE_REQUIRED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_VERSION_MISMATCH">XML_ERR_VERSION_MISMATCH</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_VERSION_MISSING">XML_ERR_VERSION_MISSING</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_WARNING">XML_ERR_WARNING</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_XMLDECL_NOT_FINISHED">XML_ERR_XMLDECL_NOT_FINISHED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_XMLDECL_NOT_STARTED">XML_ERR_XMLDECL_NOT_STARTED</a><br />
+<a href="html/libxml-xmlerror.html#XML_FROM_BUFFER">XML_FROM_BUFFER</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_C14N">XML_FROM_C14N</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_CATALOG">XML_FROM_CATALOG</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_CHECK">XML_FROM_CHECK</a><br />
@@ -2038,6 +2057,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_FROM_SCHEMASV">XML_FROM_SCHEMASV</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_SCHEMATRONV">XML_FROM_SCHEMATRONV</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_TREE">XML_FROM_TREE</a><br />
+<a href="html/libxml-xmlerror.html#XML_FROM_URI">XML_FROM_URI</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_VALID">XML_FROM_VALID</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_WRITER">XML_FROM_WRITER</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_XINCLUDE">XML_FROM_XINCLUDE</a><br />
@@ -2906,8 +2926,11 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a><br />
</p><h2><a name="xmlschemastypes" id="xmlschemastypes">Module xmlschemastypes</a>:</h2><p><a href="html/libxml-xmlschemastypes.html#XML_SCHEMA_WHITESPACE_COLLAPSE">XML_SCHEMA_WHITESPACE_COLLAPSE</a><br />
<a href="html/libxml-xmlschemastypes.html#XML_SCHEMA_WHITESPACE_PRESERVE">XML_SCHEMA_WHITESPACE_PRESERVE</a><br />
@@ -3177,6 +3200,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br />
+<a href="html/libxml-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a><br />
@@ -3215,6 +3239,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a><br />
+<a href="html/libxml-xmlwriter.html#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartAttributeNS">xmlTextWriterStartAttributeNS</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartCDATA">xmlTextWriterStartCDATA</a><br />
@@ -3281,6 +3306,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#XPATH_ENCODING_ERROR">XPATH_ENCODING_ERROR</a><br />
<a href="html/libxml-xpath.html#XPATH_EXPRESSION_OK">XPATH_EXPRESSION_OK</a><br />
<a href="html/libxml-xpath.html#XPATH_EXPR_ERROR">XPATH_EXPR_ERROR</a><br />
+<a href="html/libxml-xpath.html#XPATH_FORBID_VARIABLE_ERROR">XPATH_FORBID_VARIABLE_ERROR</a><br />
<a href="html/libxml-xpath.html#XPATH_INVALID_ARITY">XPATH_INVALID_ARITY</a><br />
<a href="html/libxml-xpath.html#XPATH_INVALID_CHAR_ERROR">XPATH_INVALID_CHAR_ERROR</a><br />
<a href="html/libxml-xpath.html#XPATH_INVALID_CTXT">XPATH_INVALID_CTXT</a><br />
@@ -3372,6 +3398,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathNAN">xmlXPathNAN</a><br />
<a href="html/libxml-xpath.html#xmlXPathNINF">xmlXPathNINF</a><br />
<a href="html/libxml-xpath.html#xmlXPathNewContext">xmlXPathNewContext</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpath.html#xmlXPathNodeSetCreate">xmlXPathNodeSetCreate</a><br />
<a href="html/libxml-xpath.html#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a><br />
<a href="html/libxml-xpath.html#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a><br />
@@ -3384,6 +3411,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathPINF">xmlXPathPINF</a><br />
<a href="html/libxml-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a><br />
<a href="html/libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
<a href="html/libxml-xpath.html#xmlXPathType">xmlXPathType</a><br />
<a href="html/libxml-xpath.html#xmlXPathTypePtr">xmlXPathTypePtr</a><br />
<a href="html/libxml-xpath.html#xmlXPathVariable">xmlXPathVariable</a><br />
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index dbe89e8..9027afe 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -81,6 +81,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a><br />
</p><h2>Type const char **:</h2><p><a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
</p><h2>Type const htmlElemDesc *:</h2><p><a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br />
<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br />
<a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br />
@@ -108,7 +109,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</p><h2>Type const xlinkTitle:</h2><p><a href="html/libxml-xlink.html#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a><br />
</p><h2>Type const xlinkTitle *:</h2><p><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br />
<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br />
-</p><h2>Type const xmlBufferPtr:</h2><p><a href="html/libxml-tree.html#xmlBufferContent">xmlBufferContent</a><br />
+</p><h2>Type const xmlBuf *:</h2><p><a href="html/libxml-tree.html#xmlBufContent">xmlBufContent</a><br />
+</p><h2>Type const xmlBufPtr:</h2><p><a href="html/libxml-tree.html#xmlBufUse">xmlBufUse</a><br />
+</p><h2>Type const xmlBuffer *:</h2><p><a href="html/libxml-tree.html#xmlBufferContent">xmlBufferContent</a><br />
<a href="html/libxml-tree.html#xmlBufferLength">xmlBufferLength</a><br />
</p><h2>Type const xmlChRangeGroup *:</h2><p><a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br />
</p><h2>Type const xmlChar *:</h2><p><a href="html/libxml-SAX.html#attribute">attribute</a><br />
@@ -485,6 +488,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathIsNodeType">xmlXPathIsNodeType</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewParserContext">xmlXPathNewParserContext</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewString">xmlXPathNewString</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNsLookup">xmlXPathNsLookup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRegisterFunc">xmlXPathRegisterFunc</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRegisterFuncNS">xmlXPathRegisterFuncNS</a><br />
@@ -513,13 +517,40 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br />
<a href="html/libxml-valid.html#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a><br />
<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
+</p><h2>Type const xmlDoc *:</h2><p><a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br />
+<a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br />
+<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br />
+<a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br />
+<a href="html/libxml-tree.html#xmlGetIntSubset">xmlGetIntSubset</a><br />
+<a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br />
+<a href="html/libxml-tree.html#xmlNewDocText">xmlNewDocText</a><br />
+<a href="html/libxml-tree.html#xmlNewReference">xmlNewReference</a><br />
+<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
+<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
+<a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br />
+<a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br />
</p><h2>Type const xmlListPtr:</h2><p><a href="html/libxml-list.html#xmlListCopy">xmlListCopy</a><br />
<a href="html/libxml-list.html#xmlListDup">xmlListDup</a><br />
-</p><h2>Type const xmlNodePtr:</h2><p><a href="html/libxml-tree.html#xmlCopyNode">xmlCopyNode</a><br />
-<a href="html/libxml-tree.html#xmlCopyNodeList">xmlCopyNodeList</a><br />
-<a href="html/libxml-tree.html#xmlDocCopyNode">xmlDocCopyNode</a><br />
-<a href="html/libxml-tree.html#xmlDocCopyNodeList">xmlDocCopyNodeList</a><br />
-<a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br />
+</p><h2>Type const xmlNode *:</h2><p><a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br />
+<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
+<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br />
+<a href="html/libxml-tree.html#xmlGetNodePath">xmlGetNodePath</a><br />
+<a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br />
+<a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br />
+<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
+<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br />
+<a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br />
+<a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
+<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
+<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
+<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
+<a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br />
+<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br />
+<a href="html/libxml-tree.html#xmlNodeIsText">xmlNodeIsText</a><br />
+<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
+<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br />
+</p><h2>Type const xmlNodePtr:</h2><p><a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br />
<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
</p><h2>Type const xmlParserCtxtPtr:</h2><p><a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br />
</p><h2>Type const xmlParserNodeInfoPtr:</h2><p><a href="html/libxml-parser.html#xmlParserAddNodeInfo">xmlParserAddNodeInfo</a><br />
@@ -581,8 +612,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlStringCurrentChar">xmlStringCurrentChar</a><br />
<a href="html/libxml-valid.html#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a><br />
</p><h2>Type long:</h2><p><a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br />
-</p><h2>Type size_t:</h2><p><a href="html/libxml-tree.html#xmlBufferCreateSize">xmlBufferCreateSize</a><br />
+</p><h2>Type size_t:</h2><p><a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-tree.html#xmlBufferCreateSize">xmlBufferCreateSize</a><br />
<a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br />
<a href="html/libxml-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a><br />
<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br />
@@ -616,6 +649,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</p><h2>Type unsigned long *:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
</p><h2>Type va_list:</h2><p><a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttribute">xmlTextWriterWriteVFormatAttribute</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttributeNS">xmlTextWriterWriteVFormatAttributeNS</a><br />
@@ -853,8 +887,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemas.html#xmlSchemaSetParserStructuredErrors">xmlSchemaSetParserStructuredErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a><br />
<a href="html/libxml-schematron.html#xmlSchematronSetValidStructuredErrors">xmlSchematronSetValidStructuredErrors</a><br />
<a href="html/libxml-schematron.html#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a><br />
@@ -941,6 +977,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br />
<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a><br />
<a href="html/libxml-xmlautomata.html#xmlAutomataSetFinalState">xmlAutomataSetFinalState</a><br />
+</p><h2>Type xmlBufPtr:</h2><p><a href="html/libxml-tree.html#xmlBufEnd">xmlBufEnd</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
</p><h2>Type xmlBufferAllocationScheme:</h2><p><a href="html/libxml-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a><br />
<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br />
<a href="html/libxml-globals.html#xmlThrDefBufferAllocScheme">xmlThrDefBufferAllocScheme</a><br />
@@ -995,6 +1035,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlstring.html#xmlStrchr">xmlStrchr</a><br />
<a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br />
<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br />
+<a href="html/libxml-xmlwriter.html#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a><br />
</p><h2>Type xmlChar *:</h2><p><a href="html/libxml-SAX.html#checkNamespace">checkNamespace</a><br />
<a href="html/libxml-DOCBparser.html#docbParseDoc">docbParseDoc</a><br />
<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br />
@@ -1085,10 +1126,12 @@ A:link, A:visited, A:active { text-decoration: underline }
</p><h2>Type xmlDictPtr:</h2><p><a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
<a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
<a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br />
<a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br />
<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
@@ -1111,6 +1154,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-valid.html#xmlAddID">xmlAddID</a><br />
<a href="html/libxml-valid.html#xmlAddRef">xmlAddRef</a><br />
<a href="html/libxml-tree.html#xmlAttrSerializeTxtContent">xmlAttrSerializeTxtContent</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br />
<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br />
@@ -1133,20 +1177,14 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlDocDumpMemory">xmlDocDumpMemory</a><br />
<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br />
-<a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br />
<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />
-<a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br />
<a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br />
<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
-<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br />
-<a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br />
<a href="html/libxml-entities.html#xmlGetDtdEntity">xmlGetDtdEntity</a><br />
<a href="html/libxml-valid.html#xmlGetID">xmlGetID</a><br />
-<a href="html/libxml-tree.html#xmlGetIntSubset">xmlGetIntSubset</a><br />
-<a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br />
<a href="html/libxml-entities.html#xmlGetParameterEntity">xmlGetParameterEntity</a><br />
<a href="html/libxml-valid.html#xmlGetRefs">xmlGetRefs</a><br />
<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br />
@@ -1162,17 +1200,13 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNewDocPI">xmlNewDocPI</a><br />
<a href="html/libxml-tree.html#xmlNewDocProp">xmlNewDocProp</a><br />
<a href="html/libxml-tree.html#xmlNewDocRawNode">xmlNewDocRawNode</a><br />
-<a href="html/libxml-tree.html#xmlNewDocText">xmlNewDocText</a><br />
<a href="html/libxml-tree.html#xmlNewDocTextLen">xmlNewDocTextLen</a><br />
<a href="html/libxml-tree.html#xmlNewDtd">xmlNewDtd</a><br />
<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br />
<a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br />
-<a href="html/libxml-tree.html#xmlNewReference">xmlNewReference</a><br />
<a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
-<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
-<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br />
<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br />
<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br />
@@ -1204,8 +1238,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlSetListDoc">xmlSetListDoc</a><br />
<a href="html/libxml-tree.html#xmlSetTreeDoc">xmlSetTreeDoc</a><br />
<a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br />
-<a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br />
-<a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br />
<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br />
@@ -1437,8 +1469,11 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
<a href="html/libxml-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a><br />
<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlCopyNode">xmlCopyNode</a><br />
+<a href="html/libxml-tree.html#xmlCopyNodeList">xmlCopyNodeList</a><br />
<a href="html/libxml-tree.html#xmlCopyProp">xmlCopyProp</a><br />
<a href="html/libxml-tree.html#xmlCopyPropList">xmlCopyPropList</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
@@ -1450,22 +1485,14 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-debugXML.html#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a><br />
<a href="html/libxml-debugXML.html#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a><br />
<a href="html/libxml-globals.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a><br />
+<a href="html/libxml-tree.html#xmlDocCopyNode">xmlDocCopyNode</a><br />
+<a href="html/libxml-tree.html#xmlDocCopyNodeList">xmlDocCopyNodeList</a><br />
<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
<a href="html/libxml-tree.html#xmlFreeNodeList">xmlFreeNodeList</a><br />
-<a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br />
-<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
-<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br />
-<a href="html/libxml-tree.html#xmlGetNodePath">xmlGetNodePath</a><br />
-<a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br />
-<a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br />
-<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
-<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br />
-<a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br />
-<a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br />
<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
@@ -1481,16 +1508,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
-<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br />
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
-<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
-<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
-<a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br />
-<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br />
-<a href="html/libxml-tree.html#xmlNodeIsText">xmlNodeIsText</a><br />
-<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
-<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br />
<a href="html/libxml-tree.html#xmlNodeSetBase">xmlNodeSetBase</a><br />
<a href="html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a><br />
@@ -1564,6 +1583,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a><br />
@@ -1574,6 +1594,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetDel">xmlXPathNodeSetDel</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrNewCollapsedRange">xmlXPtrNewCollapsedRange</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrNewLocationSetNodes">xmlXPtrNewLocationSetNodes</a><br />
@@ -1655,6 +1676,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br />
@@ -1950,12 +1973,15 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
</p><h2>Type xmlSchemaValidityErrorFunc:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br />
</p><h2>Type xmlSchemaValidityErrorFunc *:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br />
+</p><h2>Type xmlSchemaValidityLocatorFunc:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
</p><h2>Type xmlSchemaValidityWarningFunc:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br />
</p><h2>Type xmlSchemaValidityWarningFunc *:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br />
@@ -2098,6 +2124,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlwriter.html#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a><br />
+<a href="html/libxml-xmlwriter.html#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartAttributeNS">xmlTextWriterStartAttributeNS</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartCDATA">xmlTextWriterStartCDATA</a><br />
@@ -2202,6 +2229,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathFunctionLookup">xmlXPathFunctionLookup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathFunctionLookupNS">xmlXPathFunctionLookupNS</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNewParserContext">xmlXPathNewParserContext</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNsLookup">xmlXPathNsLookup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRegisterAllFunctions">xmlXPathRegisterAllFunctions</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRegisterFunc">xmlXPathRegisterFunc</a><br />
@@ -2214,6 +2242,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredFuncsCleanup">xmlXPathRegisteredFuncsCleanup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredNsCleanup">xmlXPathRegisteredNsCleanup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredVariablesCleanup">xmlXPathRegisteredVariablesCleanup</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathVariableLookup">xmlXPathVariableLookup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathVariableLookupNS">xmlXPathVariableLookupNS</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br />
diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html
index 49a8737..c2b82e7 100644
--- a/doc/APIsymbols.html
+++ b/doc/APIsymbols.html
@@ -61,7 +61,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#IS_LETTER_CH">IS_LETTER_CH</a><br />
<a href="html/libxml-parserInternals.html#IS_PUBIDCHAR">IS_PUBIDCHAR</a><br />
<a href="html/libxml-parserInternals.html#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a><br />
-</p><h2>Letter L:</h2><p><a href="html/libxml-xmlversion.html#LIBXML_ATTR_ALLOC_SIZE">LIBXML_ATTR_ALLOC_SIZE</a><br />
+</p><h2>Letter L:</h2><p><a href="html/libxml-tree.html#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a><br />
+<a href="html/libxml-xmlversion.html#LIBXML_ATTR_ALLOC_SIZE">LIBXML_ATTR_ALLOC_SIZE</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a><br />
@@ -91,6 +92,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br />
+<a href="html/libxml-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a><br />
@@ -157,6 +159,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#XML_BUFFER_ALLOC_HYBRID">XML_BUFFER_ALLOC_HYBRID</a><br />
<a href="html/libxml-tree.html#XML_BUFFER_ALLOC_IMMUTABLE">XML_BUFFER_ALLOC_IMMUTABLE</a><br />
<a href="html/libxml-tree.html#XML_BUFFER_ALLOC_IO">XML_BUFFER_ALLOC_IO</a><br />
+<a href="html/libxml-xmlerror.html#XML_BUF_OVERFLOW">XML_BUF_OVERFLOW</a><br />
<a href="html/libxml-c14n.html#XML_C14N_1_0">XML_C14N_1_0</a><br />
<a href="html/libxml-c14n.html#XML_C14N_1_1">XML_C14N_1_1</a><br />
<a href="html/libxml-xmlerror.html#XML_C14N_CREATE_CTXT">XML_C14N_CREATE_CTXT</a><br />
@@ -206,7 +209,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-encoding.html#XML_CHAR_ENCODING_UTF16BE">XML_CHAR_ENCODING_UTF16BE</a><br />
<a href="html/libxml-encoding.html#XML_CHAR_ENCODING_UTF16LE">XML_CHAR_ENCODING_UTF16LE</a><br />
<a href="html/libxml-encoding.html#XML_CHAR_ENCODING_UTF8">XML_CHAR_ENCODING_UTF8</a><br />
-<a href="html/libxml-xmlerror.html#XML_CHECK_">XML_CHECK_</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_ENTITY_TYPE">XML_CHECK_ENTITY_TYPE</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_FOUND_ATTRIBUTE">XML_CHECK_FOUND_ATTRIBUTE</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_FOUND_CDATA">XML_CHECK_FOUND_CDATA</a><br />
@@ -245,7 +247,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_CHECK_WRONG_NEXT">XML_CHECK_WRONG_NEXT</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_WRONG_PARENT">XML_CHECK_WRONG_PARENT</a><br />
<a href="html/libxml-xmlerror.html#XML_CHECK_WRONG_PREV">XML_CHECK_WRONG_PREV</a><br />
-<a href="html/libxml-xmlerror.html#XML_CHECK_X">XML_CHECK_X</a><br />
<a href="html/libxml-tree.html#XML_COMMENT_NODE">XML_COMMENT_NODE</a><br />
<a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br />
<a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_0">XML_CTXT_FINISH_DTD_0</a><br />
@@ -388,6 +389,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_ERR_MIXED_NOT_FINISHED">XML_ERR_MIXED_NOT_FINISHED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_MIXED_NOT_STARTED">XML_ERR_MIXED_NOT_STARTED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NAME_REQUIRED">XML_ERR_NAME_REQUIRED</a><br />
+<a href="html/libxml-xmlerror.html#XML_ERR_NAME_TOO_LONG">XML_ERR_NAME_TOO_LONG</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NMTOKEN_REQUIRED">XML_ERR_NMTOKEN_REQUIRED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NONE">XML_ERR_NONE</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_NOTATION_NOT_FINISHED">XML_ERR_NOTATION_NOT_FINISHED</a><br />
@@ -424,6 +426,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING">XML_ERR_UNSUPPORTED_ENCODING</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_URI_FRAGMENT">XML_ERR_URI_FRAGMENT</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_URI_REQUIRED">XML_ERR_URI_REQUIRED</a><br />
+<a href="html/libxml-xmlerror.html#XML_ERR_USER_STOP">XML_ERR_USER_STOP</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_VALUE_REQUIRED">XML_ERR_VALUE_REQUIRED</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_VERSION_MISMATCH">XML_ERR_VERSION_MISMATCH</a><br />
<a href="html/libxml-xmlerror.html#XML_ERR_VERSION_MISSING">XML_ERR_VERSION_MISSING</a><br />
@@ -439,6 +442,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-entities.html#XML_EXTERNAL_GENERAL_PARSED_ENTITY">XML_EXTERNAL_GENERAL_PARSED_ENTITY</a><br />
<a href="html/libxml-entities.html#XML_EXTERNAL_GENERAL_UNPARSED_ENTITY">XML_EXTERNAL_GENERAL_UNPARSED_ENTITY</a><br />
<a href="html/libxml-entities.html#XML_EXTERNAL_PARAMETER_ENTITY">XML_EXTERNAL_PARAMETER_ENTITY</a><br />
+<a href="html/libxml-xmlerror.html#XML_FROM_BUFFER">XML_FROM_BUFFER</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_C14N">XML_FROM_C14N</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_CATALOG">XML_FROM_CATALOG</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_CHECK">XML_FROM_CHECK</a><br />
@@ -462,6 +466,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_FROM_SCHEMASV">XML_FROM_SCHEMASV</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_SCHEMATRONV">XML_FROM_SCHEMATRONV</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_TREE">XML_FROM_TREE</a><br />
+<a href="html/libxml-xmlerror.html#XML_FROM_URI">XML_FROM_URI</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_VALID">XML_FROM_VALID</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_WRITER">XML_FROM_WRITER</a><br />
<a href="html/libxml-xmlerror.html#XML_FROM_XINCLUDE">XML_FROM_XINCLUDE</a><br />
@@ -546,7 +551,10 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_IO_UNKNOWN">XML_IO_UNKNOWN</a><br />
<a href="html/libxml-xmlerror.html#XML_IO_WRITE">XML_IO_WRITE</a><br />
<a href="html/libxml-tree.html#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-xmlerror.html#XML_MODULE_CLOSE">XML_MODULE_CLOSE</a><br />
<a href="html/libxml-xmlmodule.html#XML_MODULE_LAZY">XML_MODULE_LAZY</a><br />
@@ -586,6 +594,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#XML_PARSER_SUBST_ENTITIES">XML_PARSER_SUBST_ENTITIES</a><br />
<a href="html/libxml-parser.html#XML_PARSER_SYSTEM_LITERAL">XML_PARSER_SYSTEM_LITERAL</a><br />
<a href="html/libxml-xmlreader.html#XML_PARSER_VALIDATE">XML_PARSER_VALIDATE</a><br />
+<a href="html/libxml-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a><br />
<a href="html/libxml-parser.html#XML_PARSE_COMPACT">XML_PARSE_COMPACT</a><br />
<a href="html/libxml-parser.html#XML_PARSE_DOM">XML_PARSE_DOM</a><br />
<a href="html/libxml-parser.html#XML_PARSE_DTDATTR">XML_PARSE_DTDATTR</a><br />
@@ -1420,6 +1429,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#XPATH_ENCODING_ERROR">XPATH_ENCODING_ERROR</a><br />
<a href="html/libxml-xpath.html#XPATH_EXPRESSION_OK">XPATH_EXPRESSION_OK</a><br />
<a href="html/libxml-xpath.html#XPATH_EXPR_ERROR">XPATH_EXPR_ERROR</a><br />
+<a href="html/libxml-xpath.html#XPATH_FORBID_VARIABLE_ERROR">XPATH_FORBID_VARIABLE_ERROR</a><br />
<a href="html/libxml-xpath.html#XPATH_INVALID_ARITY">XPATH_INVALID_ARITY</a><br />
<a href="html/libxml-xpath.html#XPATH_INVALID_CHAR_ERROR">XPATH_INVALID_CHAR_ERROR</a><br />
<a href="html/libxml-xpath.html#XPATH_INVALID_CTXT">XPATH_INVALID_CTXT</a><br />
@@ -1761,6 +1771,14 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlautomata.html#xmlAutomataState">xmlAutomataState</a><br />
<a href="html/libxml-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a><br />
<a href="html/libxml-debugXML.html#xmlBoolToText">xmlBoolToText</a><br />
+<a href="html/libxml-tree.html#xmlBuf">xmlBuf</a><br />
+<a href="html/libxml-tree.html#xmlBufContent">xmlBufContent</a><br />
+<a href="html/libxml-tree.html#xmlBufEnd">xmlBufEnd</a><br />
+<a href="html/libxml-tree.html#xmlBufGetNodeContent">xmlBufGetNodeContent</a><br />
+<a href="html/libxml-tree.html#xmlBufNodeDump">xmlBufNodeDump</a><br />
+<a href="html/libxml-tree.html#xmlBufPtr">xmlBufPtr</a><br />
+<a href="html/libxml-tree.html#xmlBufShrink">xmlBufShrink</a><br />
+<a href="html/libxml-tree.html#xmlBufUse">xmlBufUse</a><br />
<a href="html/libxml-tree.html#xmlBuffer">xmlBuffer</a><br />
<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
@@ -1934,11 +1952,13 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
<a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
<a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br />
+<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br />
<a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br />
<a href="html/libxml-dict.html#xmlDictPtr">xmlDictPtr</a><br />
<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
+<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br />
<a href="html/libxml-threads.html#xmlDllMain">xmlDllMain</a><br />
<a href="html/libxml-globals.html#xmlDoValidityCheckingDefaultValue">xmlDoValidityCheckingDefaultValue</a><br />
@@ -2414,6 +2434,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameValue">xmlOutputBufferCreateFilenameValue</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a><br />
+<a href="html/libxml-xmlIO.html#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a><br />
<a href="html/libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br />
<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br />
@@ -2812,8 +2834,11 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a><br />
+<a href="html/libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a><br />
<a href="html/libxml-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsBoolean">xmlSchemaValueGetAsBoolean</a><br />
@@ -3021,6 +3046,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a><br />
+<a href="html/libxml-xmlwriter.html#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartAttributeNS">xmlTextWriterStartAttributeNS</a><br />
<a href="html/libxml-xmlwriter.html#xmlTextWriterStartCDATA">xmlTextWriterStartCDATA</a><br />
@@ -3443,6 +3469,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br />
+<a href="html/libxml-xpath.html#xmlXPathNodeEval">xmlXPathNodeEval</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a><br />
@@ -3504,6 +3531,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathRoot">xmlXPathRoot</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSetArityError">xmlXPathSetArityError</a><br />
+<a href="html/libxml-xpath.html#xmlXPathSetContextNode">xmlXPathSetContextNode</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSetError">xmlXPathSetError</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathSetTypeError">xmlXPathSetTypeError</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathStackIsExternal">xmlXPathStackIsExternal</a><br />
diff --git a/doc/FAQ.html b/doc/FAQ.html
index 0bfd387..3481c19 100644
--- a/doc/FAQ.html
+++ b/doc/FAQ.html
@@ -7,11 +7,13 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>FAQ</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>FAQ</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Contents:</p><ul><li><a href="FAQ.html#License">License(s)</a></li>
+</style><title>FAQ</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>FAQ</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Contents:</p><ul>
+ <li><a href="FAQ.html#License">License(s)</a></li>
<li><a href="FAQ.html#Installati">Installation</a></li>
<li><a href="FAQ.html#Compilatio">Compilation</a></li>
<li><a href="FAQ.html#Developer">Developer corner</a></li>
-</ul><h3><a name="License" id="License">License</a>(s)</h3><ol><li><em>Licensing Terms for libxml</em>
+</ul><h3><a name="License" id="License">License</a>(s)</h3><ol>
+ <li><em>Licensing Terms for libxml</em>
<p>libxml2 is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
License</a>; see the file Copyright in the distribution for the precise
wording</p>
@@ -22,7 +24,8 @@ A:link, A:visited, A:active { text-decoration: underline }
improvements as patches for possible incorporation in the main
development tree.</p>
</li>
-</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol><li><strong><span style="background-color: #FF0000">Do Not Use
+</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol>
+ <li><strong><span style="background-color: #FF0000">Do Not Use
libxml1</span></strong>, use libxml2</li>
<p></p>
<li><em>Where can I get libxml</em> ?
@@ -33,7 +36,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</li>
<p></p>
<li><em>I see libxml and libxml2 releases, which one should I install ?</em>
- <ul><li>If you are not constrained by backward compatibility issues with
+ <ul>
+ <li>If you are not constrained by backward compatibility issues with
existing applications, install libxml2 only</li>
<li>If you are not doing development, you can safely install both.
Usually the packages <a href="http://rpmfind.net/linux/RPM/libxml.html">libxml</a> and <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a> are
@@ -45,7 +49,8 @@ A:link, A:visited, A:active { text-decoration: underline }
too for libxml2 &gt;= 2.3.0</li>
<li>If you are developing a new application, please develop against
libxml2(-devel)</li>
- </ul></li>
+ </ul>
+ </li>
<li><em>I can't install the libxml package, it conflicts with libxml0</em>
<p>You probably have an old libxml0 package used to provide the shared
library for libxml.so.0, you can probably safely remove it. The libxml
@@ -62,7 +67,8 @@ A:link, A:visited, A:active { text-decoration: underline }
package, providing includes, static libraries and scripts needed to build
applications with libxml(2)) that you can install locally.</p>
</li>
-</ol><h3><a name="Compilatio" id="Compilatio">Compilation</a></h3><ol><li><em>What is the process to compile libxml2 ?</em>
+</ol><h3><a name="Compilatio" id="Compilatio">Compilation</a></h3><ol>
+ <li><em>What is the process to compile libxml2 ?</em>
<p>As most UNIX libraries libxml2 follows the "standard":</p>
<p><code>gunzip -c xxx.tar.gz | tar xvf -</code></p>
<p><code>cd libxml-xxxx</code></p>
@@ -80,14 +86,16 @@ A:link, A:visited, A:active { text-decoration: underline }
find).</p>
<p>However if found at configuration time libxml2 will detect and use the
following libs:</p>
- <ul><li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a> : a
+ <ul>
+ <li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a> : a
highly portable and available widely compression library.</li>
<li>iconv: a powerful character encoding conversion library. It is
included by default in recent glibc libraries, so it doesn't need to
be installed specifically on Linux. It now seems a <a href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part
of the official UNIX</a> specification. Here is one <a href="http://www.gnu.org/software/libiconv/">implementation of the
library</a> which source can be found <a href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
- </ul></li>
+ </ul>
+ </li>
<p></p>
<li><em>Make check fails on some platforms</em>
<p>Sometimes the regression tests' results don't completely match the
@@ -108,7 +116,8 @@ A:link, A:visited, A:active { text-decoration: underline }
optimizer which miscompiles the URI module. Please use another
compiler.</p>
</li>
-</ol><h3><a name="Developer" id="Developer">Developer</a> corner</h3><ol><li><em>Troubles compiling or linking programs using libxml2</em>
+</ol><h3><a name="Developer" id="Developer">Developer</a> corner</h3><ol>
+ <li><em>Troubles compiling or linking programs using libxml2</em>
<p>Usually the problem comes from the fact that the compiler doesn't get
the right compilation or linking flags. There is a small shell script
<code>xml2-config</code> which is installed as part of libxml2 usual
@@ -126,7 +135,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<p>There are many different ways to accomplish this. Here is one way to
do this under Linux. Suppose your home directory is <code>/home/user.
</code>Then:</p>
- <ul><li>Create a subdirectory, let's call it <code>myxml</code></li>
+ <ul>
+ <li>Create a subdirectory, let's call it <code>myxml</code></li>
<li>unpack the libxml2 distribution into that subdirectory</li>
<li>chdir into the unpacked distribution
(<code>/home/user/myxml/libxml2 </code>)</li>
@@ -159,7 +169,8 @@ A:link, A:visited, A:active { text-decoration: underline }
program which you just installed will be used instead of the system
default one, and this will <em>automatically</em> get the correct
libraries linked with your program.</li>
- </ul></li>
+ </ul>
+ </li>
<p></p>
<li><em>xmlDocDump() generates output on one line.</em>
@@ -167,7 +178,8 @@ A:link, A:visited, A:active { text-decoration: underline }
document since <strong>all spaces in the content of a document are
significant</strong>. If you build a tree from the API and want
indentation:</p>
- <ol><li>the correct way is to generate those yourself too.</li>
+ <ol>
+ <li>the correct way is to generate those yourself too.</li>
<li>the dangerous way is to ask libxml2 to add those blanks to your
content <strong>modifying the content of your document in the
process</strong>. The result may not be what you expect. There is
@@ -175,7 +187,8 @@ A:link, A:visited, A:active { text-decoration: underline }
affect other parts of the content of your document. See <a href="http://xmlsoft.org/html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault
()</a> and <a href="http://xmlsoft.org/html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile
()</a></li>
- </ol></li>
+ </ol>
+ </li>
<p></p>
<li><em>Extra nodes in the document:</em>
<p><em>For an XML file as below:</em></p>
@@ -233,7 +246,8 @@ pnode=pxmlDoc-&gt;children-&gt;children;</pre>
web page?</em>
<p>Ideally a libxml2 book would be nice. I have no such plan ... But you
can:</p>
- <ul><li>check more deeply the <a href="html/libxml-lib.html">existing
+ <ul>
+ <li>check more deeply the <a href="html/libxml-lib.html">existing
generated doc</a></li>
<li>have a look at <a href="examples/index.html">the set of
examples</a>.</li>
@@ -244,18 +258,21 @@ pnode=pxmlDoc-&gt;children-&gt;children;</pre>
as possible, so looking at it may be helpful. In particular the code
of <a href="http://svn.gnome.org/viewvc/libxml2/trunk/xmllint.c?view=markup">xmllint.c</a> and of the various testXXX.c test programs should
provide good examples of how to do things with the library.</li>
- </ul></li>
+ </ul>
+ </li>
<p></p>
<li><em>What about C++ ?</em>
<p>libxml2 is written in pure C in order to allow easy reuse on a number
of platforms, including embedded systems. I don't intend to convert to
C++.</p>
<p>There is however a C++ wrapper which may fulfill your needs:</p>
- <ul><li>by Ari Johnson &lt;ari@btigate.com&gt;:
+ <ul>
+ <li>by Ari Johnson &lt;ari@btigate.com&gt;:
<p>Website: <a href="http://libxmlplusplus.sourceforge.net/">http://libxmlplusplus.sourceforge.net/</a></p>
<p>Download: <a href="http://sourceforge.net/project/showfiles.php?group_id=12999">http://sourceforge.net/project/showfiles.php?group_id=12999</a></p>
</li>
- </ul></li>
+ </ul>
+ </li>
<li><em>How to validate a document a posteriori ?</em>
<p>It is possible to validate documents which had not been validated at
initial parsing time or documents which have been built from scratch
diff --git a/doc/Makefile.am b/doc/Makefile.am
index dd39f69..0cc0a50 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,5 +1,5 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS=devhelp examples
+SUBDIRS = . devhelp examples
# The top-level SGML file.
DOC_MAIN_XML_FILE=gnome-xml.xml
@@ -16,21 +16,230 @@ PAGES= architecture.html bugs.html contribs.html docs.html DOM.html \
tree.html xmldtd.html XMLinfo.html XSLT.html
APIPAGES=APIconstructors.html APIfiles.html APIfunctions.html \
APIsymbols.html APIchunk0.html
-EXTRA_DIST=xmlcatalog_man.xml tutorial/*.html tutorial/*.c tutorial/*.pdf \
- tutorial/images/*.png tutorial/images/callouts/*.png \
- API*.html *.1 *.xsl *.html *.gif w3c.png html/*.html \
- html/*.png libxml2-api.xml index.py search.php \
- apibuild.py libxml2.xsa xmllint.xml xmlcatalog_man.xml \
- README.docs symbols.xml
+if REBUILD_DOCS
+EXTRA_DIST_wc = xmlcatalog_man.xml $(wildcard tutorial/*.html) \
+ $(wildcard tutorial/*.c) $(wildcard tutorial/*.pdf) \
+ $(wildcard tutorial/images/*.png) \
+ $(wildcard tutorial/images/callouts/*.png) $(wildcard API*.html) \
+ $(wildcard *.1) $(wildcard *.xsl) $(wildcard *.html) \
+ $(wildcard *.gif) w3c.png $(wildcard html/*.html) \
+ $(wildcard html/*.png) libxml2-api.xml index.py search.php \
+ apibuild.py libxml2.xsa xmllint.xml xmlcatalog_man.xml \
+ README.docs symbols.xml
+endif
+
+# Expanded form of EXTRA_DIST_wc
+#
+EXTRA_DIST = \
+ APIchunk0.html \
+ APIchunk1.html \
+ APIchunk2.html \
+ APIchunk3.html \
+ APIchunk4.html \
+ APIchunk5.html \
+ APIchunk6.html \
+ APIchunk7.html \
+ APIchunk8.html \
+ APIchunk9.html \
+ APIchunk10.html \
+ APIchunk11.html \
+ APIchunk12.html \
+ APIchunk13.html \
+ APIchunk14.html \
+ APIchunk15.html \
+ APIchunk16.html \
+ APIchunk17.html \
+ APIchunk18.html \
+ APIchunk19.html \
+ APIchunk20.html \
+ APIchunk21.html \
+ APIchunk22.html \
+ APIchunk23.html \
+ APIchunk24.html \
+ APIchunk25.html \
+ APIchunk26.html \
+ APIchunk27.html \
+ APIchunk28.html \
+ APIchunk29.html \
+ APIconstructors.html \
+ APIfiles.html \
+ APIfunctions.html \
+ APIsymbols.html \
+ ChangeLog.xsl \
+ DOM.gif \
+ DOM.html \
+ FAQ.html \
+ Libxml2-Logo-180x168.gif \
+ Libxml2-Logo-90x34.gif \
+ README.docs \
+ XMLinfo.html \
+ XSLT.html \
+ api.xsl \
+ apibuild.py \
+ architecture.html \
+ bugs.html \
+ catalog.gif \
+ catalog.html \
+ checkapisym.xsl \
+ contribs.html \
+ docs.html \
+ downloads.html \
+ elfgcchack.xsl \
+ encoding.html \
+ entities.html \
+ example.html \
+ guidelines.html \
+ help.html \
+ html/book1.html \
+ html/home.png \
+ html/index.html \
+ html/left.png \
+ html/libxml-DOCBparser.html \
+ html/libxml-HTMLparser.html \
+ html/libxml-HTMLtree.html \
+ html/libxml-SAX.html \
+ html/libxml-SAX2.html \
+ html/libxml-c14n.html \
+ html/libxml-catalog.html \
+ html/libxml-chvalid.html \
+ html/libxml-debugXML.html \
+ html/libxml-dict.html \
+ html/libxml-encoding.html \
+ html/libxml-entities.html \
+ html/libxml-globals.html \
+ html/libxml-hash.html \
+ html/libxml-lib.html \
+ html/libxml-list.html \
+ html/libxml-nanoftp.html \
+ html/libxml-nanohttp.html \
+ html/libxml-parser.html \
+ html/libxml-parserInternals.html \
+ html/libxml-pattern.html \
+ html/libxml-relaxng.html \
+ html/libxml-schemasInternals.html \
+ html/libxml-schematron.html \
+ html/libxml-threads.html \
+ html/libxml-tree.html \
+ html/libxml-uri.html \
+ html/libxml-valid.html \
+ html/libxml-xinclude.html \
+ html/libxml-xlink.html \
+ html/libxml-xmlIO.html \
+ html/libxml-xmlautomata.html \
+ html/libxml-xmlerror.html \
+ html/libxml-xmlexports.html \
+ html/libxml-xmlmemory.html \
+ html/libxml-xmlmodule.html \
+ html/libxml-xmlreader.html \
+ html/libxml-xmlregexp.html \
+ html/libxml-xmlsave.html \
+ html/libxml-xmlschemas.html \
+ html/libxml-xmlschemastypes.html \
+ html/libxml-xmlstring.html \
+ html/libxml-xmlunicode.html \
+ html/libxml-xmlversion.html \
+ html/libxml-xmlwriter.html \
+ html/libxml-xpath.html \
+ html/libxml-xpathInternals.html \
+ html/libxml-xpointer.html \
+ html/libxml-xzlib.html \
+ html/right.png \
+ html/up.png \
+ index.html \
+ index.py \
+ interface.html \
+ intro.html \
+ library.html \
+ libxml.gif \
+ libxml2-api.xml \
+ libxml2.xsa \
+ namespaces.html \
+ newapi.xsl \
+ news.html \
+ news.xsl \
+ python.html \
+ redhat.gif \
+ search.php \
+ searches.html \
+ searches.xsl \
+ site.xsl \
+ smallfootonly.gif \
+ structure.gif \
+ symbols.xml \
+ syms.xsl \
+ threads.html \
+ tree.html \
+ tutorial/apa.html \
+ tutorial/apb.html \
+ tutorial/apc.html \
+ tutorial/apd.html \
+ tutorial/ape.html \
+ tutorial/apf.html \
+ tutorial/apg.html \
+ tutorial/aph.html \
+ tutorial/api.html \
+ tutorial/ar01s02.html \
+ tutorial/ar01s03.html \
+ tutorial/ar01s04.html \
+ tutorial/ar01s05.html \
+ tutorial/ar01s06.html \
+ tutorial/ar01s07.html \
+ tutorial/ar01s08.html \
+ tutorial/ar01s09.html \
+ tutorial/images/blank.png \
+ tutorial/images/callouts/1.png \
+ tutorial/images/callouts/10.png \
+ tutorial/images/callouts/2.png \
+ tutorial/images/callouts/3.png \
+ tutorial/images/callouts/4.png \
+ tutorial/images/callouts/5.png \
+ tutorial/images/callouts/6.png \
+ tutorial/images/callouts/7.png \
+ tutorial/images/callouts/8.png \
+ tutorial/images/callouts/9.png \
+ tutorial/images/caution.png \
+ tutorial/images/draft.png \
+ tutorial/images/home.png \
+ tutorial/images/important.png \
+ tutorial/images/next.png \
+ tutorial/images/note.png \
+ tutorial/images/prev.png \
+ tutorial/images/tip.png \
+ tutorial/images/toc-blank.png \
+ tutorial/images/toc-minus.png \
+ tutorial/images/toc-plus.png \
+ tutorial/images/up.png \
+ tutorial/images/warning.png \
+ tutorial/includeaddattribute.c \
+ tutorial/includeaddkeyword.c \
+ tutorial/includeconvert.c \
+ tutorial/includegetattribute.c \
+ tutorial/includekeyword.c \
+ tutorial/includexpath.c \
+ tutorial/index.html \
+ tutorial/ix01.html \
+ tutorial/xmltutorial.pdf \
+ upgrade.html \
+ w3c.png \
+ wiki.xsl \
+ xml.html \
+ xmlcatalog.1 \
+ xmlcatalog_man.html \
+ xmlcatalog_man.xml \
+ xmldtd.html \
+ xmlio.html \
+ xmllint.1 \
+ xmllint.html \
+ xmllint.xml \
+ xmlmem.html \
+ xmlreader.html \
+ xsa.xsl
man_MANS = xmllint.1 xmlcatalog.1
if REBUILD_DOCS
-all: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
-else
-all:
-endif
+docs: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
api: libxml2-api.xml libxml2-refs.xml $(APIPAGES) $(srcdir)/html/index.html $(WIN32_DIR)/libxml2.def.src ../elfgcchack.h $(srcdir)/site.xsl
@@ -48,25 +257,25 @@ web: $(PAGES)
$(PAGES): xml.html $(srcdir)/site.xsl
-@(if [ -x $(XSLTPROC) ] ; then \
echo "Rebuilding the HTML Web pages from xml.html" ; \
- $(XSLTPROC) --nonet --html $(top_srcdir)/doc/site.xsl $(top_srcdir)/doc/xml.html > index.html ; fi );
+ $(XSLTPROC) --nonet --html --path $(srcdir) $(srcdir)/site.xsl $(srcdir)/xml.html > index.html ; fi );
-@(if [ -x $(XMLLINT) ] ; then \
echo "Validating the HTML Web pages" ; \
$(XMLLINT) --nonet --valid --noout $(PAGES) ; fi );
-$(top_builddir)/NEWS: $(top_srcdir)/doc/news.xsl $(top_srcdir)/doc/news.html
+$(top_builddir)/NEWS: $(srcdir)/news.xsl $(srcdir)/news.html
-@(if [ -x $(XSLTPROC) ] ; then \
- $(XSLTPROC) --nonet $(top_srcdir)/doc/news.xsl $(top_srcdir)/doc/news.html > $(top_builddir)/NEWS ; fi );
+ $(XSLTPROC) --nonet $(srcdir)/news.xsl $(srcdir)/news.html > $(top_builddir)/NEWS ; fi );
-libxml2.xsa: $(top_srcdir)/doc/xsa.xsl $(top_srcdir)/doc/news.html
+libxml2.xsa: $(srcdir)/xsa.xsl $(srcdir)/news.html
-@(if [ -x $(XSLTPROC) ] ; then \
echo "Rebuilding the NEWS file" ; \
- $(XSLTPROC) --nonet $(top_srcdir)/doc/xsa.xsl $(top_srcdir)/doc/news.html > libxml2.xsa ; fi );
+ $(XSLTPROC) --nonet $(srcdir)/xsa.xsl $(srcdir)/news.html > libxml2.xsa ; fi );
-$(APIPAGES): libxml2-api.xml libxml2-refs.xml $(top_srcdir)/doc/site.xsl $(top_srcdir)/doc/api.xsl
+$(APIPAGES): libxml2-api.xml libxml2-refs.xml $(srcdir)/site.xsl $(srcdir)/api.xsl
-@(if [ -x $(XSLTPROC) ] ; then \
echo "Rebuilding the HTML API pages from libxml2-refs.xml" ; \
- $(XSLTPROC) --nonet --html $(top_srcdir)/doc/api.xsl \
- $(top_srcdir)/doc/xml.html ; fi );
+ $(XSLTPROC) --nonet --html $(srcdir)/api.xsl \
+ $(srcdir)/xml.html ; fi );
-@(if [ -x $(XMLLINT) ] ; then \
echo "Validating the HTML API pages" ; \
$(XMLLINT) --nonet --valid --noout API*.html ; fi );
@@ -74,7 +283,7 @@ $(APIPAGES): libxml2-api.xml libxml2-refs.xml $(top_srcdir)/doc/site.xsl $(top_s
$(srcdir)/html/index.html: libxml2-api.xml $(srcdir)/newapi.xsl
-@(if [ -x $(XSLTPROC) ] ; then \
echo "Rebuilding the HTML pages from the XML API" ; \
- $(XSLTPROC) --nonet $(srcdir)/newapi.xsl libxml2-api.xml ; fi )
+ $(XSLTPROC) --nonet $(srcdir)/newapi.xsl $(srcdir)/libxml2-api.xml ; fi )
-@(if [ -x $(XMLLINT) ] ; then \
echo "Validating the resulting XHTML pages" ; \
$(XMLLINT) --nonet --valid --noout html/*.html ; fi );
@@ -82,17 +291,23 @@ $(srcdir)/html/index.html: libxml2-api.xml $(srcdir)/newapi.xsl
wiki: libxml2-api.xml $(srcdir)/wiki.xsl
-@(if [ -x $(XSLTPROC) ] ; then \
echo "Rebuilding the wiki HTML pages from the XML API" ; \
- $(XSLTPROC) --nonet $(srcdir)/wiki.xsl libxml2-api.xml; fi )
+ $(XSLTPROC) --nonet $(srcdir)/wiki.xsl $(srcdir)/libxml2-api.xml; fi )
$(WIN32_DIR)/libxml2.def.src: libxml2-api.xml
-@(if [ -x $(XSLTPROC) ] ; then \
$(XSLTPROC) -o $(WIN32_DIR)/libxml2.def.src \
--nonet $(WIN32_DIR)/defgen.xsl libxml2-api.xml ; fi )
-libxml2-api.xml libxml2-refs.xml ../libxml2.syms: apibuild.py symbols.xml syms.xsl checkapisym.xsl ../include/libxml/*.h ../*.c
- -(./apibuild.py)
- ($(XSLTPROC) checkapisym.xsl libxml2-api.xml)
- ($(XSLTPROC) -o ../libxml2.syms syms.xsl symbols.xml)
+source_file_deps = \
+ $(filter-out %/xmlversion.h, $(wildcard $(top_srcdir)/include/libxml/*.h)) \
+ $(top_srcdir)/include/libxml/xmlversion.h.in \
+ $(wildcard $(top_srcdir)/*.c)
+
+libxml2-api.xml libxml2-refs.xml ../libxml2.syms: apibuild.py symbols.xml syms.xsl checkapisym.xsl $(source_file_deps)
+ test -f $(top_srcdir)/include/libxml/xmlversion.h
+ (cd $(srcdir) && ./apibuild.py)
+ ($(XSLTPROC) $(srcdir)/checkapisym.xsl $(srcdir)/libxml2-api.xml)
+ ($(XSLTPROC) -o ../libxml2.syms $(srcdir)/syms.xsl $(srcdir)/symbols.xml)
-@(cd .. ; $(MAKE) rebuild_testapi)
@@ -102,28 +317,35 @@ xmllint.1: xmllint.xml
xmlcatalog.1: xmlcatalog_man.xml
-@($(XSLTPROC) --nonet xmlcatalog_man.xml)
+check-extra-dist:
+ for f in $(EXTRA_DIST_wc) ; do echo $$f; done | sort -u >tmp.EXTRA_DIST_wc
+ for f in $(EXTRA_DIST) ; do echo $$f; done | sort >tmp.EXTRA_DIST
+ diff -u tmp.EXTRA_DIST_wc tmp.EXTRA_DIST
+ rm -f tmp.EXTRA_DIST_wc tmp.EXTRA_DIST
+endif
+
clean-local:
rm -f *~ *.bak *.hierarchy *.signals *-unused.txt
maintainer-clean-local: clean-local
rm -rf libxml-decl-list.txt libxml-decl.txt
-rebuild: api all
+rebuild: api docs
install-data-local:
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/xml.html $(srcdir)/encoding.html $(srcdir)/FAQ.html $(srcdir)/structure.gif $(srcdir)/DOM.gif $(srcdir)/smallfootonly.gif $(srcdir)/redhat.gif $(srcdir)/libxml.gif $(srcdir)/w3c.png $(srcdir)/Libxml2-Logo-180x168.gif $(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/html
- -@INSTALL@ -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
- -@INSTALL@ -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/tutorial
- -@INSTALL@ -m 0644 $(srcdir)/tutorial/*.* \
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/xml.html $(srcdir)/encoding.html $(srcdir)/FAQ.html $(srcdir)/structure.gif $(srcdir)/DOM.gif $(srcdir)/smallfootonly.gif $(srcdir)/redhat.gif $(srcdir)/libxml.gif $(srcdir)/w3c.png $(srcdir)/Libxml2-Logo-180x168.gif $(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/html
+ -$(INSTALL) -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
+ -$(INSTALL) -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial
+ -$(INSTALL) -m 0644 $(srcdir)/tutorial/*.* \
$(DESTDIR)$(HTML_DIR)/tutorial
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/tutorial/images
- -@INSTALL@ -m 0644 $(srcdir)/tutorial/images/*.* \
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial/images
+ -$(INSTALL) -m 0644 $(srcdir)/tutorial/images/*.* \
$(DESTDIR)$(HTML_DIR)/tutorial/images
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
- -@INSTALL@ -m 0644 $(srcdir)/tutorial/images/callouts/*.* \
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
+ -$(INSTALL) -m 0644 $(srcdir)/tutorial/images/callouts/*.* \
$(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
-.PHONY : html xml templates scan
+.PHONY: docs api web wiki rebuild
diff --git a/doc/Makefile.in b/doc/Makefile.in
index ebeca2a..03fcbd3 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -34,33 +78,45 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -82,15 +138,41 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)"
NROFF = nroff
MANS = $(man_MANS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
@@ -124,7 +206,6 @@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -161,6 +242,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -205,6 +287,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -216,7 +301,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -241,7 +325,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -274,6 +357,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -347,7 +431,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = devhelp examples
+SUBDIRS = . devhelp examples
# The top-level SGML file.
DOC_MAIN_XML_FILE = gnome-xml.xml
@@ -365,14 +449,230 @@ PAGES = architecture.html bugs.html contribs.html docs.html DOM.html \
APIPAGES = APIconstructors.html APIfiles.html APIfunctions.html \
APIsymbols.html APIchunk0.html
-EXTRA_DIST = xmlcatalog_man.xml tutorial/*.html tutorial/*.c tutorial/*.pdf \
- tutorial/images/*.png tutorial/images/callouts/*.png \
- API*.html *.1 *.xsl *.html *.gif w3c.png html/*.html \
- html/*.png libxml2-api.xml index.py search.php \
- apibuild.py libxml2.xsa xmllint.xml xmlcatalog_man.xml \
- README.docs symbols.xml
+@REBUILD_DOCS_TRUE@EXTRA_DIST_wc = xmlcatalog_man.xml $(wildcard tutorial/*.html) \
+@REBUILD_DOCS_TRUE@ $(wildcard tutorial/*.c) $(wildcard tutorial/*.pdf) \
+@REBUILD_DOCS_TRUE@ $(wildcard tutorial/images/*.png) \
+@REBUILD_DOCS_TRUE@ $(wildcard tutorial/images/callouts/*.png) $(wildcard API*.html) \
+@REBUILD_DOCS_TRUE@ $(wildcard *.1) $(wildcard *.xsl) $(wildcard *.html) \
+@REBUILD_DOCS_TRUE@ $(wildcard *.gif) w3c.png $(wildcard html/*.html) \
+@REBUILD_DOCS_TRUE@ $(wildcard html/*.png) libxml2-api.xml index.py search.php \
+@REBUILD_DOCS_TRUE@ apibuild.py libxml2.xsa xmllint.xml xmlcatalog_man.xml \
+@REBUILD_DOCS_TRUE@ README.docs symbols.xml
+
+
+# Expanded form of EXTRA_DIST_wc
+#
+EXTRA_DIST = \
+ APIchunk0.html \
+ APIchunk1.html \
+ APIchunk2.html \
+ APIchunk3.html \
+ APIchunk4.html \
+ APIchunk5.html \
+ APIchunk6.html \
+ APIchunk7.html \
+ APIchunk8.html \
+ APIchunk9.html \
+ APIchunk10.html \
+ APIchunk11.html \
+ APIchunk12.html \
+ APIchunk13.html \
+ APIchunk14.html \
+ APIchunk15.html \
+ APIchunk16.html \
+ APIchunk17.html \
+ APIchunk18.html \
+ APIchunk19.html \
+ APIchunk20.html \
+ APIchunk21.html \
+ APIchunk22.html \
+ APIchunk23.html \
+ APIchunk24.html \
+ APIchunk25.html \
+ APIchunk26.html \
+ APIchunk27.html \
+ APIchunk28.html \
+ APIchunk29.html \
+ APIconstructors.html \
+ APIfiles.html \
+ APIfunctions.html \
+ APIsymbols.html \
+ ChangeLog.xsl \
+ DOM.gif \
+ DOM.html \
+ FAQ.html \
+ Libxml2-Logo-180x168.gif \
+ Libxml2-Logo-90x34.gif \
+ README.docs \
+ XMLinfo.html \
+ XSLT.html \
+ api.xsl \
+ apibuild.py \
+ architecture.html \
+ bugs.html \
+ catalog.gif \
+ catalog.html \
+ checkapisym.xsl \
+ contribs.html \
+ docs.html \
+ downloads.html \
+ elfgcchack.xsl \
+ encoding.html \
+ entities.html \
+ example.html \
+ guidelines.html \
+ help.html \
+ html/book1.html \
+ html/home.png \
+ html/index.html \
+ html/left.png \
+ html/libxml-DOCBparser.html \
+ html/libxml-HTMLparser.html \
+ html/libxml-HTMLtree.html \
+ html/libxml-SAX.html \
+ html/libxml-SAX2.html \
+ html/libxml-c14n.html \
+ html/libxml-catalog.html \
+ html/libxml-chvalid.html \
+ html/libxml-debugXML.html \
+ html/libxml-dict.html \
+ html/libxml-encoding.html \
+ html/libxml-entities.html \
+ html/libxml-globals.html \
+ html/libxml-hash.html \
+ html/libxml-lib.html \
+ html/libxml-list.html \
+ html/libxml-nanoftp.html \
+ html/libxml-nanohttp.html \
+ html/libxml-parser.html \
+ html/libxml-parserInternals.html \
+ html/libxml-pattern.html \
+ html/libxml-relaxng.html \
+ html/libxml-schemasInternals.html \
+ html/libxml-schematron.html \
+ html/libxml-threads.html \
+ html/libxml-tree.html \
+ html/libxml-uri.html \
+ html/libxml-valid.html \
+ html/libxml-xinclude.html \
+ html/libxml-xlink.html \
+ html/libxml-xmlIO.html \
+ html/libxml-xmlautomata.html \
+ html/libxml-xmlerror.html \
+ html/libxml-xmlexports.html \
+ html/libxml-xmlmemory.html \
+ html/libxml-xmlmodule.html \
+ html/libxml-xmlreader.html \
+ html/libxml-xmlregexp.html \
+ html/libxml-xmlsave.html \
+ html/libxml-xmlschemas.html \
+ html/libxml-xmlschemastypes.html \
+ html/libxml-xmlstring.html \
+ html/libxml-xmlunicode.html \
+ html/libxml-xmlversion.html \
+ html/libxml-xmlwriter.html \
+ html/libxml-xpath.html \
+ html/libxml-xpathInternals.html \
+ html/libxml-xpointer.html \
+ html/libxml-xzlib.html \
+ html/right.png \
+ html/up.png \
+ index.html \
+ index.py \
+ interface.html \
+ intro.html \
+ library.html \
+ libxml.gif \
+ libxml2-api.xml \
+ libxml2.xsa \
+ namespaces.html \
+ newapi.xsl \
+ news.html \
+ news.xsl \
+ python.html \
+ redhat.gif \
+ search.php \
+ searches.html \
+ searches.xsl \
+ site.xsl \
+ smallfootonly.gif \
+ structure.gif \
+ symbols.xml \
+ syms.xsl \
+ threads.html \
+ tree.html \
+ tutorial/apa.html \
+ tutorial/apb.html \
+ tutorial/apc.html \
+ tutorial/apd.html \
+ tutorial/ape.html \
+ tutorial/apf.html \
+ tutorial/apg.html \
+ tutorial/aph.html \
+ tutorial/api.html \
+ tutorial/ar01s02.html \
+ tutorial/ar01s03.html \
+ tutorial/ar01s04.html \
+ tutorial/ar01s05.html \
+ tutorial/ar01s06.html \
+ tutorial/ar01s07.html \
+ tutorial/ar01s08.html \
+ tutorial/ar01s09.html \
+ tutorial/images/blank.png \
+ tutorial/images/callouts/1.png \
+ tutorial/images/callouts/10.png \
+ tutorial/images/callouts/2.png \
+ tutorial/images/callouts/3.png \
+ tutorial/images/callouts/4.png \
+ tutorial/images/callouts/5.png \
+ tutorial/images/callouts/6.png \
+ tutorial/images/callouts/7.png \
+ tutorial/images/callouts/8.png \
+ tutorial/images/callouts/9.png \
+ tutorial/images/caution.png \
+ tutorial/images/draft.png \
+ tutorial/images/home.png \
+ tutorial/images/important.png \
+ tutorial/images/next.png \
+ tutorial/images/note.png \
+ tutorial/images/prev.png \
+ tutorial/images/tip.png \
+ tutorial/images/toc-blank.png \
+ tutorial/images/toc-minus.png \
+ tutorial/images/toc-plus.png \
+ tutorial/images/up.png \
+ tutorial/images/warning.png \
+ tutorial/includeaddattribute.c \
+ tutorial/includeaddkeyword.c \
+ tutorial/includeconvert.c \
+ tutorial/includegetattribute.c \
+ tutorial/includekeyword.c \
+ tutorial/includexpath.c \
+ tutorial/index.html \
+ tutorial/ix01.html \
+ tutorial/xmltutorial.pdf \
+ upgrade.html \
+ w3c.png \
+ wiki.xsl \
+ xml.html \
+ xmlcatalog.1 \
+ xmlcatalog_man.html \
+ xmlcatalog_man.xml \
+ xmldtd.html \
+ xmlio.html \
+ xmllint.1 \
+ xmllint.html \
+ xmllint.xml \
+ xmlmem.html \
+ xmlreader.html \
+ xsa.xsl
man_MANS = xmllint.1 xmlcatalog.1
+@REBUILD_DOCS_TRUE@source_file_deps = \
+@REBUILD_DOCS_TRUE@ $(filter-out %/xmlversion.h, $(wildcard $(top_srcdir)/include/libxml/*.h)) \
+@REBUILD_DOCS_TRUE@ $(top_srcdir)/include/libxml/xmlversion.h.in \
+@REBUILD_DOCS_TRUE@ $(wildcard $(top_srcdir)/*.c)
+
all: all-recursive
.SUFFIXES:
@@ -414,11 +714,18 @@ clean-libtool:
-rm -rf .libs _libs
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.1[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
@@ -447,27 +754,28 @@ uninstall-man1:
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -482,57 +790,12 @@ $(RECURSIVE_TARGETS):
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -548,12 +811,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -565,15 +823,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -582,24 +836,26 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- @list='$(MANS)'; if test -n "$$list"; then \
- list=`for p in $$list; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
- if test -n "$$list" && \
- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
- echo " typically \`make maintainer-clean' will remove them" >&2; \
- exit 1; \
- else :; fi; \
- else :; fi
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -631,13 +887,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -675,10 +928,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -759,12 +1017,11 @@ uninstall-am: uninstall-man
uninstall-man: uninstall-man1
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
+.MAKE: $(am__recursive_targets) install-am install-strip
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic clean-libtool \
- clean-local ctags ctags-recursive distclean distclean-generic \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool clean-local \
+ cscopelist-am ctags ctags-am distclean distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-data-local install-dvi install-dvi-am \
@@ -774,81 +1031,87 @@ uninstall-man: uninstall-man1
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-local mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-man uninstall-man1
-
-
-@REBUILD_DOCS_TRUE@all: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
-@REBUILD_DOCS_FALSE@all:
-
-api: libxml2-api.xml libxml2-refs.xml $(APIPAGES) $(srcdir)/html/index.html $(WIN32_DIR)/libxml2.def.src ../elfgcchack.h $(srcdir)/site.xsl
-
-web: $(PAGES)
-
-../elfgcchack.h: $(srcdir)/elfgcchack.xsl $(srcdir)/libxml2-api.xml
- -@(if [ -x $(XSLTPROC) ] ; then \
- echo "Rebuilding the elfgcchack.h header" ; \
- $(XSLTPROC) --nonet $(srcdir)/elfgcchack.xsl $(srcdir)/libxml2-api.xml > elfgcchack.h ; \
- if [ "`diff -q elfgcchack.h ../elfgcchack.h`" ] ; then \
- echo "updating ../elfgcchack.h"; \
- cp elfgcchack.h ../elfgcchack.h; \
- fi ; rm -f elfgcchack.h ; fi );
-
-$(PAGES): xml.html $(srcdir)/site.xsl
- -@(if [ -x $(XSLTPROC) ] ; then \
- echo "Rebuilding the HTML Web pages from xml.html" ; \
- $(XSLTPROC) --nonet --html $(top_srcdir)/doc/site.xsl $(top_srcdir)/doc/xml.html > index.html ; fi );
- -@(if [ -x $(XMLLINT) ] ; then \
- echo "Validating the HTML Web pages" ; \
- $(XMLLINT) --nonet --valid --noout $(PAGES) ; fi );
-
-$(top_builddir)/NEWS: $(top_srcdir)/doc/news.xsl $(top_srcdir)/doc/news.html
- -@(if [ -x $(XSLTPROC) ] ; then \
- $(XSLTPROC) --nonet $(top_srcdir)/doc/news.xsl $(top_srcdir)/doc/news.html > $(top_builddir)/NEWS ; fi );
-
-libxml2.xsa: $(top_srcdir)/doc/xsa.xsl $(top_srcdir)/doc/news.html
- -@(if [ -x $(XSLTPROC) ] ; then \
- echo "Rebuilding the NEWS file" ; \
- $(XSLTPROC) --nonet $(top_srcdir)/doc/xsa.xsl $(top_srcdir)/doc/news.html > libxml2.xsa ; fi );
-
-$(APIPAGES): libxml2-api.xml libxml2-refs.xml $(top_srcdir)/doc/site.xsl $(top_srcdir)/doc/api.xsl
- -@(if [ -x $(XSLTPROC) ] ; then \
- echo "Rebuilding the HTML API pages from libxml2-refs.xml" ; \
- $(XSLTPROC) --nonet --html $(top_srcdir)/doc/api.xsl \
- $(top_srcdir)/doc/xml.html ; fi );
- -@(if [ -x $(XMLLINT) ] ; then \
- echo "Validating the HTML API pages" ; \
- $(XMLLINT) --nonet --valid --noout API*.html ; fi );
-
-$(srcdir)/html/index.html: libxml2-api.xml $(srcdir)/newapi.xsl
- -@(if [ -x $(XSLTPROC) ] ; then \
- echo "Rebuilding the HTML pages from the XML API" ; \
- $(XSLTPROC) --nonet $(srcdir)/newapi.xsl libxml2-api.xml ; fi )
- -@(if [ -x $(XMLLINT) ] ; then \
- echo "Validating the resulting XHTML pages" ; \
- $(XMLLINT) --nonet --valid --noout html/*.html ; fi );
-
-wiki: libxml2-api.xml $(srcdir)/wiki.xsl
- -@(if [ -x $(XSLTPROC) ] ; then \
- echo "Rebuilding the wiki HTML pages from the XML API" ; \
- $(XSLTPROC) --nonet $(srcdir)/wiki.xsl libxml2-api.xml; fi )
-
-$(WIN32_DIR)/libxml2.def.src: libxml2-api.xml
- -@(if [ -x $(XSLTPROC) ] ; then \
- $(XSLTPROC) -o $(WIN32_DIR)/libxml2.def.src \
- --nonet $(WIN32_DIR)/defgen.xsl libxml2-api.xml ; fi )
-
-libxml2-api.xml libxml2-refs.xml ../libxml2.syms: apibuild.py symbols.xml syms.xsl checkapisym.xsl ../include/libxml/*.h ../*.c
- -(./apibuild.py)
- ($(XSLTPROC) checkapisym.xsl libxml2-api.xml)
- ($(XSLTPROC) -o ../libxml2.syms syms.xsl symbols.xml)
- -@(cd .. ; $(MAKE) rebuild_testapi)
-
-xmllint.1: xmllint.xml
- -@($(XSLTPROC) --nonet xmllint.xml)
-
-xmlcatalog.1: xmlcatalog_man.xml
- -@($(XSLTPROC) --nonet xmlcatalog_man.xml)
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-man uninstall-man1
+
+
+@REBUILD_DOCS_TRUE@docs: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
+
+@REBUILD_DOCS_TRUE@api: libxml2-api.xml libxml2-refs.xml $(APIPAGES) $(srcdir)/html/index.html $(WIN32_DIR)/libxml2.def.src ../elfgcchack.h $(srcdir)/site.xsl
+
+@REBUILD_DOCS_TRUE@web: $(PAGES)
+
+@REBUILD_DOCS_TRUE@../elfgcchack.h: $(srcdir)/elfgcchack.xsl $(srcdir)/libxml2-api.xml
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Rebuilding the elfgcchack.h header" ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet $(srcdir)/elfgcchack.xsl $(srcdir)/libxml2-api.xml > elfgcchack.h ; \
+@REBUILD_DOCS_TRUE@ if [ "`diff -q elfgcchack.h ../elfgcchack.h`" ] ; then \
+@REBUILD_DOCS_TRUE@ echo "updating ../elfgcchack.h"; \
+@REBUILD_DOCS_TRUE@ cp elfgcchack.h ../elfgcchack.h; \
+@REBUILD_DOCS_TRUE@ fi ; rm -f elfgcchack.h ; fi );
+
+@REBUILD_DOCS_TRUE@$(PAGES): xml.html $(srcdir)/site.xsl
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Rebuilding the HTML Web pages from xml.html" ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet --html --path $(srcdir) $(srcdir)/site.xsl $(srcdir)/xml.html > index.html ; fi );
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XMLLINT) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Validating the HTML Web pages" ; \
+@REBUILD_DOCS_TRUE@ $(XMLLINT) --nonet --valid --noout $(PAGES) ; fi );
+
+@REBUILD_DOCS_TRUE@$(top_builddir)/NEWS: $(srcdir)/news.xsl $(srcdir)/news.html
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet $(srcdir)/news.xsl $(srcdir)/news.html > $(top_builddir)/NEWS ; fi );
+
+@REBUILD_DOCS_TRUE@libxml2.xsa: $(srcdir)/xsa.xsl $(srcdir)/news.html
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Rebuilding the NEWS file" ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet $(srcdir)/xsa.xsl $(srcdir)/news.html > libxml2.xsa ; fi );
+
+@REBUILD_DOCS_TRUE@$(APIPAGES): libxml2-api.xml libxml2-refs.xml $(srcdir)/site.xsl $(srcdir)/api.xsl
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Rebuilding the HTML API pages from libxml2-refs.xml" ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet --html $(srcdir)/api.xsl \
+@REBUILD_DOCS_TRUE@ $(srcdir)/xml.html ; fi );
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XMLLINT) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Validating the HTML API pages" ; \
+@REBUILD_DOCS_TRUE@ $(XMLLINT) --nonet --valid --noout API*.html ; fi );
+
+@REBUILD_DOCS_TRUE@$(srcdir)/html/index.html: libxml2-api.xml $(srcdir)/newapi.xsl
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Rebuilding the HTML pages from the XML API" ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet $(srcdir)/newapi.xsl $(srcdir)/libxml2-api.xml ; fi )
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XMLLINT) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Validating the resulting XHTML pages" ; \
+@REBUILD_DOCS_TRUE@ $(XMLLINT) --nonet --valid --noout html/*.html ; fi );
+
+@REBUILD_DOCS_TRUE@wiki: libxml2-api.xml $(srcdir)/wiki.xsl
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo "Rebuilding the wiki HTML pages from the XML API" ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet $(srcdir)/wiki.xsl $(srcdir)/libxml2-api.xml; fi )
+
+@REBUILD_DOCS_TRUE@$(WIN32_DIR)/libxml2.def.src: libxml2-api.xml
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) -o $(WIN32_DIR)/libxml2.def.src \
+@REBUILD_DOCS_TRUE@ --nonet $(WIN32_DIR)/defgen.xsl libxml2-api.xml ; fi )
+
+@REBUILD_DOCS_TRUE@libxml2-api.xml libxml2-refs.xml ../libxml2.syms: apibuild.py symbols.xml syms.xsl checkapisym.xsl $(source_file_deps)
+@REBUILD_DOCS_TRUE@ test -f $(top_srcdir)/include/libxml/xmlversion.h
+@REBUILD_DOCS_TRUE@ (cd $(srcdir) && ./apibuild.py)
+@REBUILD_DOCS_TRUE@ ($(XSLTPROC) $(srcdir)/checkapisym.xsl $(srcdir)/libxml2-api.xml)
+@REBUILD_DOCS_TRUE@ ($(XSLTPROC) -o ../libxml2.syms $(srcdir)/syms.xsl $(srcdir)/symbols.xml)
+@REBUILD_DOCS_TRUE@ -@(cd .. ; $(MAKE) rebuild_testapi)
+
+@REBUILD_DOCS_TRUE@xmllint.1: xmllint.xml
+@REBUILD_DOCS_TRUE@ -@($(XSLTPROC) --nonet xmllint.xml)
+
+@REBUILD_DOCS_TRUE@xmlcatalog.1: xmlcatalog_man.xml
+@REBUILD_DOCS_TRUE@ -@($(XSLTPROC) --nonet xmlcatalog_man.xml)
+
+@REBUILD_DOCS_TRUE@check-extra-dist:
+@REBUILD_DOCS_TRUE@ for f in $(EXTRA_DIST_wc) ; do echo $$f; done | sort -u >tmp.EXTRA_DIST_wc
+@REBUILD_DOCS_TRUE@ for f in $(EXTRA_DIST) ; do echo $$f; done | sort >tmp.EXTRA_DIST
+@REBUILD_DOCS_TRUE@ diff -u tmp.EXTRA_DIST_wc tmp.EXTRA_DIST
+@REBUILD_DOCS_TRUE@ rm -f tmp.EXTRA_DIST_wc tmp.EXTRA_DIST
clean-local:
rm -f *~ *.bak *.hierarchy *.signals *-unused.txt
@@ -856,25 +1119,25 @@ clean-local:
maintainer-clean-local: clean-local
rm -rf libxml-decl-list.txt libxml-decl.txt
-rebuild: api all
+rebuild: api docs
install-data-local:
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/xml.html $(srcdir)/encoding.html $(srcdir)/FAQ.html $(srcdir)/structure.gif $(srcdir)/DOM.gif $(srcdir)/smallfootonly.gif $(srcdir)/redhat.gif $(srcdir)/libxml.gif $(srcdir)/w3c.png $(srcdir)/Libxml2-Logo-180x168.gif $(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/html
- -@INSTALL@ -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
- -@INSTALL@ -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/tutorial
- -@INSTALL@ -m 0644 $(srcdir)/tutorial/*.* \
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/xml.html $(srcdir)/encoding.html $(srcdir)/FAQ.html $(srcdir)/structure.gif $(srcdir)/DOM.gif $(srcdir)/smallfootonly.gif $(srcdir)/redhat.gif $(srcdir)/libxml.gif $(srcdir)/w3c.png $(srcdir)/Libxml2-Logo-180x168.gif $(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/html
+ -$(INSTALL) -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
+ -$(INSTALL) -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial
+ -$(INSTALL) -m 0644 $(srcdir)/tutorial/*.* \
$(DESTDIR)$(HTML_DIR)/tutorial
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/tutorial/images
- -@INSTALL@ -m 0644 $(srcdir)/tutorial/images/*.* \
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial/images
+ -$(INSTALL) -m 0644 $(srcdir)/tutorial/images/*.* \
$(DESTDIR)$(HTML_DIR)/tutorial/images
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
- -@INSTALL@ -m 0644 $(srcdir)/tutorial/images/callouts/*.* \
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
+ -$(INSTALL) -m 0644 $(srcdir)/tutorial/images/callouts/*.* \
$(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
-.PHONY : html xml templates scan
+.PHONY: docs api web wiki rebuild
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/doc/apibuild.py b/doc/apibuild.py
index c2dff84..b5b669a 100755
--- a/doc/apibuild.py
+++ b/doc/apibuild.py
@@ -52,7 +52,11 @@ ignored_files = {
"test.c": "not part of the library",
"testdso.c": "test for dynamid shared libraries",
"testrecurse.c": "test for entities recursions",
- "xzlib.h": "Internal API only",
+ "xzlib.h": "Internal API only 2.8.0",
+ "buf.h": "Internal API only 2.9.0",
+ "enc.h": "Internal API only 2.9.0",
+ "/save.h": "Internal API only 2.9.0",
+ "timsort.h": "Internal header only for xpath.c 2.9.0",
}
ignored_words = {
@@ -80,51 +84,51 @@ ignored_words = {
}
def escape(raw):
- raw = string.replace(raw, '&', '&amp;')
- raw = string.replace(raw, '<', '&lt;')
- raw = string.replace(raw, '>', '&gt;')
- raw = string.replace(raw, "'", '&apos;')
- raw = string.replace(raw, '"', '&quot;')
+ raw = raw.replace('&', '&amp;')
+ raw = raw.replace('<', '&lt;')
+ raw = raw.replace('>', '&gt;')
+ raw = raw.replace("'", '&apos;')
+ raw = raw.replace('"', '&quot;')
return raw
def uniq(items):
d = {}
for item in items:
d[item]=1
- return d.keys()
+ return list(d.keys())
class identifier:
def __init__(self, name, header=None, module=None, type=None, lineno = 0,
info=None, extra=None, conditionals = None):
self.name = name
- self.header = header
- self.module = module
- self.type = type
- self.info = info
- self.extra = extra
- self.lineno = lineno
- self.static = 0
- if conditionals == None or len(conditionals) == 0:
- self.conditionals = None
- else:
- self.conditionals = conditionals[:]
- if self.name == debugsym:
- print "=> define %s : %s" % (debugsym, (module, type, info,
- extra, conditionals))
+ self.header = header
+ self.module = module
+ self.type = type
+ self.info = info
+ self.extra = extra
+ self.lineno = lineno
+ self.static = 0
+ if conditionals == None or len(conditionals) == 0:
+ self.conditionals = None
+ else:
+ self.conditionals = conditionals[:]
+ if self.name == debugsym:
+ print("=> define %s : %s" % (debugsym, (module, type, info,
+ extra, conditionals)))
def __repr__(self):
r = "%s %s:" % (self.type, self.name)
- if self.static:
- r = r + " static"
- if self.module != None:
- r = r + " from %s" % (self.module)
- if self.info != None:
- r = r + " " + `self.info`
- if self.extra != None:
- r = r + " " + `self.extra`
- if self.conditionals != None:
- r = r + " " + `self.conditionals`
- return r
+ if self.static:
+ r = r + " static"
+ if self.module != None:
+ r = r + " from %s" % (self.module)
+ if self.info != None:
+ r = r + " " + repr(self.info)
+ if self.extra != None:
+ r = r + " " + repr(self.extra)
+ if self.conditionals != None:
+ r = r + " " + repr(self.conditionals)
+ return r
def set_header(self, header):
@@ -142,10 +146,10 @@ class identifier:
def set_static(self, static):
self.static = static
def set_conditionals(self, conditionals):
- if conditionals == None or len(conditionals) == 0:
- self.conditionals = None
- else:
- self.conditionals = conditionals[:]
+ if conditionals == None or len(conditionals) == 0:
+ self.conditionals = None
+ else:
+ self.conditionals = conditionals[:]
def get_name(self):
return self.name
@@ -168,231 +172,231 @@ class identifier:
def update(self, header, module, type = None, info = None, extra=None,
conditionals=None):
- if self.name == debugsym:
- print "=> update %s : %s" % (debugsym, (module, type, info,
- extra, conditionals))
+ if self.name == debugsym:
+ print("=> update %s : %s" % (debugsym, (module, type, info,
+ extra, conditionals)))
if header != None and self.header == None:
- self.set_header(module)
+ self.set_header(module)
if module != None and (self.module == None or self.header == self.module):
- self.set_module(module)
+ self.set_module(module)
if type != None and self.type == None:
- self.set_type(type)
+ self.set_type(type)
if info != None:
- self.set_info(info)
+ self.set_info(info)
if extra != None:
- self.set_extra(extra)
+ self.set_extra(extra)
if conditionals != None:
- self.set_conditionals(conditionals)
+ self.set_conditionals(conditionals)
class index:
def __init__(self, name = "noname"):
self.name = name
self.identifiers = {}
self.functions = {}
- self.variables = {}
- self.includes = {}
- self.structs = {}
- self.enums = {}
- self.typedefs = {}
- self.macros = {}
- self.references = {}
- self.info = {}
+ self.variables = {}
+ self.includes = {}
+ self.structs = {}
+ self.enums = {}
+ self.typedefs = {}
+ self.macros = {}
+ self.references = {}
+ self.info = {}
def add_ref(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
if name[0:2] == '__':
- return None
+ return None
d = None
try:
- d = self.identifiers[name]
- d.update(header, module, type, lineno, info, extra, conditionals)
- except:
- d = identifier(name, header, module, type, lineno, info, extra, conditionals)
- self.identifiers[name] = d
+ d = self.identifiers[name]
+ d.update(header, module, type, lineno, info, extra, conditionals)
+ except:
+ d = identifier(name, header, module, type, lineno, info, extra, conditionals)
+ self.identifiers[name] = d
- if d != None and static == 1:
- d.set_static(1)
+ if d != None and static == 1:
+ d.set_static(1)
- if d != None and name != None and type != None:
- self.references[name] = d
+ if d != None and name != None and type != None:
+ self.references[name] = d
- if name == debugsym:
- print "New ref: %s" % (d)
+ if name == debugsym:
+ print("New ref: %s" % (d))
- return d
+ return d
def add(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
if name[0:2] == '__':
- return None
+ return None
d = None
try:
- d = self.identifiers[name]
- d.update(header, module, type, lineno, info, extra, conditionals)
- except:
- d = identifier(name, header, module, type, lineno, info, extra, conditionals)
- self.identifiers[name] = d
-
- if d != None and static == 1:
- d.set_static(1)
-
- if d != None and name != None and type != None:
- if type == "function":
- self.functions[name] = d
- elif type == "functype":
- self.functions[name] = d
- elif type == "variable":
- self.variables[name] = d
- elif type == "include":
- self.includes[name] = d
- elif type == "struct":
- self.structs[name] = d
- elif type == "enum":
- self.enums[name] = d
- elif type == "typedef":
- self.typedefs[name] = d
- elif type == "macro":
- self.macros[name] = d
- else:
- print "Unable to register type ", type
-
- if name == debugsym:
- print "New symbol: %s" % (d)
-
- return d
+ d = self.identifiers[name]
+ d.update(header, module, type, lineno, info, extra, conditionals)
+ except:
+ d = identifier(name, header, module, type, lineno, info, extra, conditionals)
+ self.identifiers[name] = d
+
+ if d != None and static == 1:
+ d.set_static(1)
+
+ if d != None and name != None and type != None:
+ if type == "function":
+ self.functions[name] = d
+ elif type == "functype":
+ self.functions[name] = d
+ elif type == "variable":
+ self.variables[name] = d
+ elif type == "include":
+ self.includes[name] = d
+ elif type == "struct":
+ self.structs[name] = d
+ elif type == "enum":
+ self.enums[name] = d
+ elif type == "typedef":
+ self.typedefs[name] = d
+ elif type == "macro":
+ self.macros[name] = d
+ else:
+ print("Unable to register type ", type)
+
+ if name == debugsym:
+ print("New symbol: %s" % (d))
+
+ return d
def merge(self, idx):
- for id in idx.functions.keys():
+ for id in list(idx.functions.keys()):
#
# macro might be used to override functions or variables
# definitions
#
- if self.macros.has_key(id):
- del self.macros[id]
- if self.functions.has_key(id):
- print "function %s from %s redeclared in %s" % (
- id, self.functions[id].header, idx.functions[id].header)
- else:
- self.functions[id] = idx.functions[id]
- self.identifiers[id] = idx.functions[id]
- for id in idx.variables.keys():
+ if id in self.macros:
+ del self.macros[id]
+ if id in self.functions:
+ print("function %s from %s redeclared in %s" % (
+ id, self.functions[id].header, idx.functions[id].header))
+ else:
+ self.functions[id] = idx.functions[id]
+ self.identifiers[id] = idx.functions[id]
+ for id in list(idx.variables.keys()):
#
# macro might be used to override functions or variables
# definitions
#
- if self.macros.has_key(id):
- del self.macros[id]
- if self.variables.has_key(id):
- print "variable %s from %s redeclared in %s" % (
- id, self.variables[id].header, idx.variables[id].header)
- else:
- self.variables[id] = idx.variables[id]
- self.identifiers[id] = idx.variables[id]
- for id in idx.structs.keys():
- if self.structs.has_key(id):
- print "struct %s from %s redeclared in %s" % (
- id, self.structs[id].header, idx.structs[id].header)
- else:
- self.structs[id] = idx.structs[id]
- self.identifiers[id] = idx.structs[id]
- for id in idx.typedefs.keys():
- if self.typedefs.has_key(id):
- print "typedef %s from %s redeclared in %s" % (
- id, self.typedefs[id].header, idx.typedefs[id].header)
- else:
- self.typedefs[id] = idx.typedefs[id]
- self.identifiers[id] = idx.typedefs[id]
- for id in idx.macros.keys():
+ if id in self.macros:
+ del self.macros[id]
+ if id in self.variables:
+ print("variable %s from %s redeclared in %s" % (
+ id, self.variables[id].header, idx.variables[id].header))
+ else:
+ self.variables[id] = idx.variables[id]
+ self.identifiers[id] = idx.variables[id]
+ for id in list(idx.structs.keys()):
+ if id in self.structs:
+ print("struct %s from %s redeclared in %s" % (
+ id, self.structs[id].header, idx.structs[id].header))
+ else:
+ self.structs[id] = idx.structs[id]
+ self.identifiers[id] = idx.structs[id]
+ for id in list(idx.typedefs.keys()):
+ if id in self.typedefs:
+ print("typedef %s from %s redeclared in %s" % (
+ id, self.typedefs[id].header, idx.typedefs[id].header))
+ else:
+ self.typedefs[id] = idx.typedefs[id]
+ self.identifiers[id] = idx.typedefs[id]
+ for id in list(idx.macros.keys()):
#
# macro might be used to override functions or variables
# definitions
#
- if self.variables.has_key(id):
+ if id in self.variables:
continue
- if self.functions.has_key(id):
+ if id in self.functions:
continue
- if self.enums.has_key(id):
+ if id in self.enums:
continue
- if self.macros.has_key(id):
- print "macro %s from %s redeclared in %s" % (
- id, self.macros[id].header, idx.macros[id].header)
- else:
- self.macros[id] = idx.macros[id]
- self.identifiers[id] = idx.macros[id]
- for id in idx.enums.keys():
- if self.enums.has_key(id):
- print "enum %s from %s redeclared in %s" % (
- id, self.enums[id].header, idx.enums[id].header)
- else:
- self.enums[id] = idx.enums[id]
- self.identifiers[id] = idx.enums[id]
+ if id in self.macros:
+ print("macro %s from %s redeclared in %s" % (
+ id, self.macros[id].header, idx.macros[id].header))
+ else:
+ self.macros[id] = idx.macros[id]
+ self.identifiers[id] = idx.macros[id]
+ for id in list(idx.enums.keys()):
+ if id in self.enums:
+ print("enum %s from %s redeclared in %s" % (
+ id, self.enums[id].header, idx.enums[id].header))
+ else:
+ self.enums[id] = idx.enums[id]
+ self.identifiers[id] = idx.enums[id]
def merge_public(self, idx):
- for id in idx.functions.keys():
- if self.functions.has_key(id):
- # check that function condition agrees with header
- if idx.functions[id].conditionals != \
- self.functions[id].conditionals:
- print "Header condition differs from Function for %s:" \
- % id
- print " H: %s" % self.functions[id].conditionals
- print " C: %s" % idx.functions[id].conditionals
- up = idx.functions[id]
- self.functions[id].update(None, up.module, up.type, up.info, up.extra)
- # else:
- # print "Function %s from %s is not declared in headers" % (
- # id, idx.functions[id].module)
- # TODO: do the same for variables.
+ for id in list(idx.functions.keys()):
+ if id in self.functions:
+ # check that function condition agrees with header
+ if idx.functions[id].conditionals != \
+ self.functions[id].conditionals:
+ print("Header condition differs from Function for %s:" \
+ % id)
+ print(" H: %s" % self.functions[id].conditionals)
+ print(" C: %s" % idx.functions[id].conditionals)
+ up = idx.functions[id]
+ self.functions[id].update(None, up.module, up.type, up.info, up.extra)
+ # else:
+ # print "Function %s from %s is not declared in headers" % (
+ # id, idx.functions[id].module)
+ # TODO: do the same for variables.
def analyze_dict(self, type, dict):
count = 0
- public = 0
- for name in dict.keys():
- id = dict[name]
- count = count + 1
- if id.static == 0:
- public = public + 1
+ public = 0
+ for name in list(dict.keys()):
+ id = dict[name]
+ count = count + 1
+ if id.static == 0:
+ public = public + 1
if count != public:
- print " %d %s , %d public" % (count, type, public)
- elif count != 0:
- print " %d public %s" % (count, type)
+ print(" %d %s , %d public" % (count, type, public))
+ elif count != 0:
+ print(" %d public %s" % (count, type))
def analyze(self):
- self.analyze_dict("functions", self.functions)
- self.analyze_dict("variables", self.variables)
- self.analyze_dict("structs", self.structs)
- self.analyze_dict("typedefs", self.typedefs)
- self.analyze_dict("macros", self.macros)
+ self.analyze_dict("functions", self.functions)
+ self.analyze_dict("variables", self.variables)
+ self.analyze_dict("structs", self.structs)
+ self.analyze_dict("typedefs", self.typedefs)
+ self.analyze_dict("macros", self.macros)
class CLexer:
"""A lexer for the C language, tokenize the input by reading and
analyzing it line by line"""
def __init__(self, input):
self.input = input
- self.tokens = []
- self.line = ""
- self.lineno = 0
+ self.tokens = []
+ self.line = ""
+ self.lineno = 0
def getline(self):
line = ''
- while line == '':
- line = self.input.readline()
- if not line:
- return None
- self.lineno = self.lineno + 1
- line = string.lstrip(line)
- line = string.rstrip(line)
- if line == '':
- continue
- while line[-1] == '\\':
- line = line[:-1]
- n = self.input.readline()
- self.lineno = self.lineno + 1
- n = string.lstrip(n)
- n = string.rstrip(n)
- if not n:
- break
- else:
- line = line + n
+ while line == '':
+ line = self.input.readline()
+ if not line:
+ return None
+ self.lineno = self.lineno + 1
+ line = line.lstrip()
+ line = line.rstrip()
+ if line == '':
+ continue
+ while line[-1] == '\\':
+ line = line[:-1]
+ n = self.input.readline()
+ self.lineno = self.lineno + 1
+ n = n.lstrip()
+ n = n.rstrip()
+ if not n:
+ break
+ else:
+ line = line + n
return line
def getlineno(self):
@@ -402,194 +406,194 @@ class CLexer:
self.tokens.insert(0, token);
def debug(self):
- print "Last token: ", self.last
- print "Token queue: ", self.tokens
- print "Line %d end: " % (self.lineno), self.line
+ print("Last token: ", self.last)
+ print("Token queue: ", self.tokens)
+ print("Line %d end: " % (self.lineno), self.line)
def token(self):
while self.tokens == []:
- if self.line == "":
- line = self.getline()
- else:
- line = self.line
- self.line = ""
- if line == None:
- return None
-
- if line[0] == '#':
- self.tokens = map((lambda x: ('preproc', x)),
- string.split(line))
- break;
- l = len(line)
- if line[0] == '"' or line[0] == "'":
- end = line[0]
- line = line[1:]
- found = 0
- tok = ""
- while found == 0:
- i = 0
- l = len(line)
- while i < l:
- if line[i] == end:
- self.line = line[i+1:]
- line = line[:i]
- l = i
- found = 1
- break
- if line[i] == '\\':
- i = i + 1
- i = i + 1
- tok = tok + line
- if found == 0:
- line = self.getline()
- if line == None:
- return None
- self.last = ('string', tok)
- return self.last
-
- if l >= 2 and line[0] == '/' and line[1] == '*':
- line = line[2:]
- found = 0
- tok = ""
- while found == 0:
- i = 0
- l = len(line)
- while i < l:
- if line[i] == '*' and i+1 < l and line[i+1] == '/':
- self.line = line[i+2:]
- line = line[:i-1]
- l = i
- found = 1
- break
- i = i + 1
- if tok != "":
- tok = tok + "\n"
- tok = tok + line
- if found == 0:
- line = self.getline()
- if line == None:
- return None
- self.last = ('comment', tok)
- return self.last
- if l >= 2 and line[0] == '/' and line[1] == '/':
- line = line[2:]
- self.last = ('comment', line)
- return self.last
- i = 0
- while i < l:
- if line[i] == '/' and i+1 < l and line[i+1] == '/':
- self.line = line[i:]
- line = line[:i]
- break
- if line[i] == '/' and i+1 < l and line[i+1] == '*':
- self.line = line[i:]
- line = line[:i]
- break
- if line[i] == '"' or line[i] == "'":
- self.line = line[i:]
- line = line[:i]
- break
- i = i + 1
- l = len(line)
- i = 0
- while i < l:
- if line[i] == ' ' or line[i] == '\t':
- i = i + 1
- continue
- o = ord(line[i])
- if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
- (o >= 48 and o <= 57):
- s = i
- while i < l:
- o = ord(line[i])
- if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
- (o >= 48 and o <= 57) or string.find(
- " \t(){}:;,+-*/%&!|[]=><", line[i]) == -1:
- i = i + 1
- else:
- break
- self.tokens.append(('name', line[s:i]))
- continue
- if string.find("(){}:;,[]", line[i]) != -1:
+ if self.line == "":
+ line = self.getline()
+ else:
+ line = self.line
+ self.line = ""
+ if line == None:
+ return None
+
+ if line[0] == '#':
+ self.tokens = list(map((lambda x: ('preproc', x)),
+ line.split()))
+ break;
+ l = len(line)
+ if line[0] == '"' or line[0] == "'":
+ end = line[0]
+ line = line[1:]
+ found = 0
+ tok = ""
+ while found == 0:
+ i = 0
+ l = len(line)
+ while i < l:
+ if line[i] == end:
+ self.line = line[i+1:]
+ line = line[:i]
+ l = i
+ found = 1
+ break
+ if line[i] == '\\':
+ i = i + 1
+ i = i + 1
+ tok = tok + line
+ if found == 0:
+ line = self.getline()
+ if line == None:
+ return None
+ self.last = ('string', tok)
+ return self.last
+
+ if l >= 2 and line[0] == '/' and line[1] == '*':
+ line = line[2:]
+ found = 0
+ tok = ""
+ while found == 0:
+ i = 0
+ l = len(line)
+ while i < l:
+ if line[i] == '*' and i+1 < l and line[i+1] == '/':
+ self.line = line[i+2:]
+ line = line[:i-1]
+ l = i
+ found = 1
+ break
+ i = i + 1
+ if tok != "":
+ tok = tok + "\n"
+ tok = tok + line
+ if found == 0:
+ line = self.getline()
+ if line == None:
+ return None
+ self.last = ('comment', tok)
+ return self.last
+ if l >= 2 and line[0] == '/' and line[1] == '/':
+ line = line[2:]
+ self.last = ('comment', line)
+ return self.last
+ i = 0
+ while i < l:
+ if line[i] == '/' and i+1 < l and line[i+1] == '/':
+ self.line = line[i:]
+ line = line[:i]
+ break
+ if line[i] == '/' and i+1 < l and line[i+1] == '*':
+ self.line = line[i:]
+ line = line[:i]
+ break
+ if line[i] == '"' or line[i] == "'":
+ self.line = line[i:]
+ line = line[:i]
+ break
+ i = i + 1
+ l = len(line)
+ i = 0
+ while i < l:
+ if line[i] == ' ' or line[i] == '\t':
+ i = i + 1
+ continue
+ o = ord(line[i])
+ if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
+ (o >= 48 and o <= 57):
+ s = i
+ while i < l:
+ o = ord(line[i])
+ if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
+ (o >= 48 and o <= 57) or \
+ (" \t(){}:;,+-*/%&!|[]=><".find(line[i])) == -1:
+ i = i + 1
+ else:
+ break
+ self.tokens.append(('name', line[s:i]))
+ continue
+ if "(){}:;,[]".find(line[i]) != -1:
# if line[i] == '(' or line[i] == ')' or line[i] == '{' or \
-# line[i] == '}' or line[i] == ':' or line[i] == ';' or \
-# line[i] == ',' or line[i] == '[' or line[i] == ']':
- self.tokens.append(('sep', line[i]))
- i = i + 1
- continue
- if string.find("+-*><=/%&!|.", line[i]) != -1:
+# line[i] == '}' or line[i] == ':' or line[i] == ';' or \
+# line[i] == ',' or line[i] == '[' or line[i] == ']':
+ self.tokens.append(('sep', line[i]))
+ i = i + 1
+ continue
+ if "+-*><=/%&!|.".find(line[i]) != -1:
# if line[i] == '+' or line[i] == '-' or line[i] == '*' or \
-# line[i] == '>' or line[i] == '<' or line[i] == '=' or \
-# line[i] == '/' or line[i] == '%' or line[i] == '&' or \
-# line[i] == '!' or line[i] == '|' or line[i] == '.':
- if line[i] == '.' and i + 2 < l and \
- line[i+1] == '.' and line[i+2] == '.':
- self.tokens.append(('name', '...'))
- i = i + 3
- continue
-
- j = i + 1
- if j < l and (
- string.find("+-*><=/%&!|", line[j]) != -1):
-# line[j] == '+' or line[j] == '-' or line[j] == '*' or \
-# line[j] == '>' or line[j] == '<' or line[j] == '=' or \
-# line[j] == '/' or line[j] == '%' or line[j] == '&' or \
-# line[j] == '!' or line[j] == '|'):
- self.tokens.append(('op', line[i:j+1]))
- i = j + 1
- else:
- self.tokens.append(('op', line[i]))
- i = i + 1
- continue
- s = i
- while i < l:
- o = ord(line[i])
- if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
- (o >= 48 and o <= 57) or (
- string.find(" \t(){}:;,+-*/%&!|[]=><", line[i]) == -1):
-# line[i] != ' ' and line[i] != '\t' and
-# line[i] != '(' and line[i] != ')' and
-# line[i] != '{' and line[i] != '}' and
-# line[i] != ':' and line[i] != ';' and
-# line[i] != ',' and line[i] != '+' and
-# line[i] != '-' and line[i] != '*' and
-# line[i] != '/' and line[i] != '%' and
-# line[i] != '&' and line[i] != '!' and
-# line[i] != '|' and line[i] != '[' and
-# line[i] != ']' and line[i] != '=' and
-# line[i] != '*' and line[i] != '>' and
-# line[i] != '<'):
- i = i + 1
- else:
- break
- self.tokens.append(('name', line[s:i]))
-
- tok = self.tokens[0]
- self.tokens = self.tokens[1:]
- self.last = tok
- return tok
+# line[i] == '>' or line[i] == '<' or line[i] == '=' or \
+# line[i] == '/' or line[i] == '%' or line[i] == '&' or \
+# line[i] == '!' or line[i] == '|' or line[i] == '.':
+ if line[i] == '.' and i + 2 < l and \
+ line[i+1] == '.' and line[i+2] == '.':
+ self.tokens.append(('name', '...'))
+ i = i + 3
+ continue
+
+ j = i + 1
+ if j < l and (
+ "+-*><=/%&!|".find(line[j]) != -1):
+# line[j] == '+' or line[j] == '-' or line[j] == '*' or \
+# line[j] == '>' or line[j] == '<' or line[j] == '=' or \
+# line[j] == '/' or line[j] == '%' or line[j] == '&' or \
+# line[j] == '!' or line[j] == '|'):
+ self.tokens.append(('op', line[i:j+1]))
+ i = j + 1
+ else:
+ self.tokens.append(('op', line[i]))
+ i = i + 1
+ continue
+ s = i
+ while i < l:
+ o = ord(line[i])
+ if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
+ (o >= 48 and o <= 57) or (
+ " \t(){}:;,+-*/%&!|[]=><".find(line[i]) == -1):
+# line[i] != ' ' and line[i] != '\t' and
+# line[i] != '(' and line[i] != ')' and
+# line[i] != '{' and line[i] != '}' and
+# line[i] != ':' and line[i] != ';' and
+# line[i] != ',' and line[i] != '+' and
+# line[i] != '-' and line[i] != '*' and
+# line[i] != '/' and line[i] != '%' and
+# line[i] != '&' and line[i] != '!' and
+# line[i] != '|' and line[i] != '[' and
+# line[i] != ']' and line[i] != '=' and
+# line[i] != '*' and line[i] != '>' and
+# line[i] != '<'):
+ i = i + 1
+ else:
+ break
+ self.tokens.append(('name', line[s:i]))
+
+ tok = self.tokens[0]
+ self.tokens = self.tokens[1:]
+ self.last = tok
+ return tok
class CParser:
"""The C module parser"""
def __init__(self, filename, idx = None):
self.filename = filename
- if len(filename) > 2 and filename[-2:] == '.h':
- self.is_header = 1
- else:
- self.is_header = 0
+ if len(filename) > 2 and filename[-2:] == '.h':
+ self.is_header = 1
+ else:
+ self.is_header = 0
self.input = open(filename)
- self.lexer = CLexer(self.input)
- if idx == None:
- self.index = index()
- else:
- self.index = idx
- self.top_comment = ""
- self.last_comment = ""
- self.comment = None
- self.collect_ref = 0
- self.no_error = 0
- self.conditionals = []
- self.defines = []
+ self.lexer = CLexer(self.input)
+ if idx == None:
+ self.index = index()
+ else:
+ self.index = idx
+ self.top_comment = ""
+ self.last_comment = ""
+ self.comment = None
+ self.collect_ref = 0
+ self.no_error = 0
+ self.conditionals = []
+ self.defines = []
def collect_references(self):
self.collect_ref = 1
@@ -604,203 +608,203 @@ class CParser:
return self.lexer.getlineno()
def index_add(self, name, module, static, type, info=None, extra = None):
- if self.is_header == 1:
- self.index.add(name, module, module, static, type, self.lineno(),
- info, extra, self.conditionals)
- else:
- self.index.add(name, None, module, static, type, self.lineno(),
- info, extra, self.conditionals)
+ if self.is_header == 1:
+ self.index.add(name, module, module, static, type, self.lineno(),
+ info, extra, self.conditionals)
+ else:
+ self.index.add(name, None, module, static, type, self.lineno(),
+ info, extra, self.conditionals)
def index_add_ref(self, name, module, static, type, info=None,
extra = None):
- if self.is_header == 1:
- self.index.add_ref(name, module, module, static, type,
- self.lineno(), info, extra, self.conditionals)
- else:
- self.index.add_ref(name, None, module, static, type, self.lineno(),
- info, extra, self.conditionals)
+ if self.is_header == 1:
+ self.index.add_ref(name, module, module, static, type,
+ self.lineno(), info, extra, self.conditionals)
+ else:
+ self.index.add_ref(name, None, module, static, type, self.lineno(),
+ info, extra, self.conditionals)
def warning(self, msg):
if self.no_error:
- return
- print msg
+ return
+ print(msg)
def error(self, msg, token=-1):
if self.no_error:
- return
+ return
- print "Parse Error: " + msg
- if token != -1:
- print "Got token ", token
- self.lexer.debug()
- sys.exit(1)
+ print("Parse Error: " + msg)
+ if token != -1:
+ print("Got token ", token)
+ self.lexer.debug()
+ sys.exit(1)
def debug(self, msg, token=-1):
- print "Debug: " + msg
- if token != -1:
- print "Got token ", token
- self.lexer.debug()
+ print("Debug: " + msg)
+ if token != -1:
+ print("Got token ", token)
+ self.lexer.debug()
def parseTopComment(self, comment):
- res = {}
- lines = string.split(comment, "\n")
- item = None
- for line in lines:
- while line != "" and (line[0] == ' ' or line[0] == '\t'):
- line = line[1:]
- while line != "" and line[0] == '*':
- line = line[1:]
- while line != "" and (line[0] == ' ' or line[0] == '\t'):
- line = line[1:]
- try:
- (it, line) = string.split(line, ":", 1)
- item = it
- while line != "" and (line[0] == ' ' or line[0] == '\t'):
- line = line[1:]
- if res.has_key(item):
- res[item] = res[item] + " " + line
- else:
- res[item] = line
- except:
- if item != None:
- if res.has_key(item):
- res[item] = res[item] + " " + line
- else:
- res[item] = line
- self.index.info = res
+ res = {}
+ lines = comment.split("\n")
+ item = None
+ for line in lines:
+ while line != "" and (line[0] == ' ' or line[0] == '\t'):
+ line = line[1:]
+ while line != "" and line[0] == '*':
+ line = line[1:]
+ while line != "" and (line[0] == ' ' or line[0] == '\t'):
+ line = line[1:]
+ try:
+ (it, line) = line.split(":", 1)
+ item = it
+ while line != "" and (line[0] == ' ' or line[0] == '\t'):
+ line = line[1:]
+ if item in res:
+ res[item] = res[item] + " " + line
+ else:
+ res[item] = line
+ except:
+ if item != None:
+ if item in res:
+ res[item] = res[item] + " " + line
+ else:
+ res[item] = line
+ self.index.info = res
def parseComment(self, token):
if self.top_comment == "":
- self.top_comment = token[1]
- if self.comment == None or token[1][0] == '*':
- self.comment = token[1];
- else:
- self.comment = self.comment + token[1]
- token = self.lexer.token()
+ self.top_comment = token[1]
+ if self.comment == None or token[1][0] == '*':
+ self.comment = token[1];
+ else:
+ self.comment = self.comment + token[1]
+ token = self.lexer.token()
- if string.find(self.comment, "DOC_DISABLE") != -1:
- self.stop_error()
+ if self.comment.find("DOC_DISABLE") != -1:
+ self.stop_error()
- if string.find(self.comment, "DOC_ENABLE") != -1:
- self.start_error()
+ if self.comment.find("DOC_ENABLE") != -1:
+ self.start_error()
- return token
+ return token
#
# Parse a comment block associate to a typedef
#
def parseTypeComment(self, name, quiet = 0):
if name[0:2] == '__':
- quiet = 1
+ quiet = 1
args = []
- desc = ""
+ desc = ""
if self.comment == None:
- if not quiet:
- self.warning("Missing comment for type %s" % (name))
- return((args, desc))
+ if not quiet:
+ self.warning("Missing comment for type %s" % (name))
+ return((args, desc))
if self.comment[0] != '*':
- if not quiet:
- self.warning("Missing * in type comment for %s" % (name))
- return((args, desc))
- lines = string.split(self.comment, '\n')
- if lines[0] == '*':
- del lines[0]
- if lines[0] != "* %s:" % (name):
- if not quiet:
- self.warning("Misformatted type comment for %s" % (name))
- self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
- return((args, desc))
- del lines[0]
- while len(lines) > 0 and lines[0] == '*':
- del lines[0]
- desc = ""
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- desc = desc + " " + l
- del lines[0]
-
- desc = string.strip(desc)
-
- if quiet == 0:
- if desc == "":
- self.warning("Type comment for %s lack description of the macro" % (name))
-
- return(desc)
+ if not quiet:
+ self.warning("Missing * in type comment for %s" % (name))
+ return((args, desc))
+ lines = self.comment.split('\n')
+ if lines[0] == '*':
+ del lines[0]
+ if lines[0] != "* %s:" % (name):
+ if not quiet:
+ self.warning("Misformatted type comment for %s" % (name))
+ self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
+ return((args, desc))
+ del lines[0]
+ while len(lines) > 0 and lines[0] == '*':
+ del lines[0]
+ desc = ""
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ desc = desc + " " + l
+ del lines[0]
+
+ desc = desc.strip()
+
+ if quiet == 0:
+ if desc == "":
+ self.warning("Type comment for %s lack description of the macro" % (name))
+
+ return(desc)
#
# Parse a comment block associate to a macro
#
def parseMacroComment(self, name, quiet = 0):
if name[0:2] == '__':
- quiet = 1
+ quiet = 1
args = []
- desc = ""
+ desc = ""
if self.comment == None:
- if not quiet:
- self.warning("Missing comment for macro %s" % (name))
- return((args, desc))
+ if not quiet:
+ self.warning("Missing comment for macro %s" % (name))
+ return((args, desc))
if self.comment[0] != '*':
- if not quiet:
- self.warning("Missing * in macro comment for %s" % (name))
- return((args, desc))
- lines = string.split(self.comment, '\n')
- if lines[0] == '*':
- del lines[0]
- if lines[0] != "* %s:" % (name):
- if not quiet:
- self.warning("Misformatted macro comment for %s" % (name))
- self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
- return((args, desc))
- del lines[0]
- while lines[0] == '*':
- del lines[0]
- while len(lines) > 0 and lines[0][0:3] == '* @':
- l = lines[0][3:]
- try:
- (arg, desc) = string.split(l, ':', 1)
- desc=string.strip(desc)
- arg=string.strip(arg)
+ if not quiet:
+ self.warning("Missing * in macro comment for %s" % (name))
+ return((args, desc))
+ lines = self.comment.split('\n')
+ if lines[0] == '*':
+ del lines[0]
+ if lines[0] != "* %s:" % (name):
+ if not quiet:
+ self.warning("Misformatted macro comment for %s" % (name))
+ self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
+ return((args, desc))
+ del lines[0]
+ while lines[0] == '*':
+ del lines[0]
+ while len(lines) > 0 and lines[0][0:3] == '* @':
+ l = lines[0][3:]
+ try:
+ (arg, desc) = l.split(':', 1)
+ desc=desc.strip()
+ arg=arg.strip()
except:
- if not quiet:
- self.warning("Misformatted macro comment for %s" % (name))
- self.warning(" problem with '%s'" % (lines[0]))
- del lines[0]
- continue
- del lines[0]
- l = string.strip(lines[0])
- while len(l) > 2 and l[0:3] != '* @':
- while l[0] == '*':
- l = l[1:]
- desc = desc + ' ' + string.strip(l)
- del lines[0]
- if len(lines) == 0:
- break
- l = lines[0]
+ if not quiet:
+ self.warning("Misformatted macro comment for %s" % (name))
+ self.warning(" problem with '%s'" % (lines[0]))
+ del lines[0]
+ continue
+ del lines[0]
+ l = lines[0].strip()
+ while len(l) > 2 and l[0:3] != '* @':
+ while l[0] == '*':
+ l = l[1:]
+ desc = desc + ' ' + l.strip()
+ del lines[0]
+ if len(lines) == 0:
+ break
+ l = lines[0]
args.append((arg, desc))
- while len(lines) > 0 and lines[0] == '*':
- del lines[0]
- desc = ""
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- desc = desc + " " + l
- del lines[0]
+ while len(lines) > 0 and lines[0] == '*':
+ del lines[0]
+ desc = ""
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ desc = desc + " " + l
+ del lines[0]
- desc = string.strip(desc)
+ desc = desc.strip()
- if quiet == 0:
- if desc == "":
- self.warning("Macro comment for %s lack description of the macro" % (name))
+ if quiet == 0:
+ if desc == "":
+ self.warning("Macro comment for %s lack description of the macro" % (name))
- return((args, desc))
+ return((args, desc))
#
# Parse a comment block and merge the informations found in the
@@ -809,206 +813,206 @@ class CParser:
#
def mergeFunctionComment(self, name, description, quiet = 0):
if name == 'main':
- quiet = 1
+ quiet = 1
if name[0:2] == '__':
- quiet = 1
+ quiet = 1
- (ret, args) = description
- desc = ""
- retdesc = ""
+ (ret, args) = description
+ desc = ""
+ retdesc = ""
if self.comment == None:
- if not quiet:
- self.warning("Missing comment for function %s" % (name))
- return(((ret[0], retdesc), args, desc))
+ if not quiet:
+ self.warning("Missing comment for function %s" % (name))
+ return(((ret[0], retdesc), args, desc))
if self.comment[0] != '*':
- if not quiet:
- self.warning("Missing * in function comment for %s" % (name))
- return(((ret[0], retdesc), args, desc))
- lines = string.split(self.comment, '\n')
- if lines[0] == '*':
- del lines[0]
- if lines[0] != "* %s:" % (name):
- if not quiet:
- self.warning("Misformatted function comment for %s" % (name))
- self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
- return(((ret[0], retdesc), args, desc))
- del lines[0]
- while lines[0] == '*':
- del lines[0]
- nbargs = len(args)
- while len(lines) > 0 and lines[0][0:3] == '* @':
- l = lines[0][3:]
- try:
- (arg, desc) = string.split(l, ':', 1)
- desc=string.strip(desc)
- arg=string.strip(arg)
+ if not quiet:
+ self.warning("Missing * in function comment for %s" % (name))
+ return(((ret[0], retdesc), args, desc))
+ lines = self.comment.split('\n')
+ if lines[0] == '*':
+ del lines[0]
+ if lines[0] != "* %s:" % (name):
+ if not quiet:
+ self.warning("Misformatted function comment for %s" % (name))
+ self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
+ return(((ret[0], retdesc), args, desc))
+ del lines[0]
+ while lines[0] == '*':
+ del lines[0]
+ nbargs = len(args)
+ while len(lines) > 0 and lines[0][0:3] == '* @':
+ l = lines[0][3:]
+ try:
+ (arg, desc) = l.split(':', 1)
+ desc=desc.strip()
+ arg=arg.strip()
except:
- if not quiet:
- self.warning("Misformatted function comment for %s" % (name))
- self.warning(" problem with '%s'" % (lines[0]))
- del lines[0]
- continue
- del lines[0]
- l = string.strip(lines[0])
- while len(l) > 2 and l[0:3] != '* @':
- while l[0] == '*':
- l = l[1:]
- desc = desc + ' ' + string.strip(l)
- del lines[0]
- if len(lines) == 0:
- break
- l = lines[0]
- i = 0
- while i < nbargs:
- if args[i][1] == arg:
- args[i] = (args[i][0], arg, desc)
- break;
- i = i + 1
- if i >= nbargs:
- if not quiet:
- self.warning("Unable to find arg %s from function comment for %s" % (
- arg, name))
- while len(lines) > 0 and lines[0] == '*':
- del lines[0]
- desc = ""
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- if len(l) >= 6 and l[0:6] == "return" or l[0:6] == "Return":
- try:
- l = string.split(l, ' ', 1)[1]
- except:
- l = ""
- retdesc = string.strip(l)
- del lines[0]
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- retdesc = retdesc + " " + l
- del lines[0]
- else:
- desc = desc + " " + l
- del lines[0]
-
- retdesc = string.strip(retdesc)
- desc = string.strip(desc)
-
- if quiet == 0:
- #
- # report missing comments
- #
- i = 0
- while i < nbargs:
- if args[i][2] == None and args[i][0] != "void" and \
- ((args[i][1] != None) or (args[i][1] == '')):
- self.warning("Function comment for %s lacks description of arg %s" % (name, args[i][1]))
- i = i + 1
- if retdesc == "" and ret[0] != "void":
- self.warning("Function comment for %s lacks description of return value" % (name))
- if desc == "":
- self.warning("Function comment for %s lacks description of the function" % (name))
-
- return(((ret[0], retdesc), args, desc))
+ if not quiet:
+ self.warning("Misformatted function comment for %s" % (name))
+ self.warning(" problem with '%s'" % (lines[0]))
+ del lines[0]
+ continue
+ del lines[0]
+ l = lines[0].strip()
+ while len(l) > 2 and l[0:3] != '* @':
+ while l[0] == '*':
+ l = l[1:]
+ desc = desc + ' ' + l.strip()
+ del lines[0]
+ if len(lines) == 0:
+ break
+ l = lines[0]
+ i = 0
+ while i < nbargs:
+ if args[i][1] == arg:
+ args[i] = (args[i][0], arg, desc)
+ break;
+ i = i + 1
+ if i >= nbargs:
+ if not quiet:
+ self.warning("Unable to find arg %s from function comment for %s" % (
+ arg, name))
+ while len(lines) > 0 and lines[0] == '*':
+ del lines[0]
+ desc = ""
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ if len(l) >= 6 and l[0:6] == "return" or l[0:6] == "Return":
+ try:
+ l = l.split(' ', 1)[1]
+ except:
+ l = ""
+ retdesc = l.strip()
+ del lines[0]
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ retdesc = retdesc + " " + l
+ del lines[0]
+ else:
+ desc = desc + " " + l
+ del lines[0]
+
+ retdesc = retdesc.strip()
+ desc = desc.strip()
+
+ if quiet == 0:
+ #
+ # report missing comments
+ #
+ i = 0
+ while i < nbargs:
+ if args[i][2] == None and args[i][0] != "void" and \
+ ((args[i][1] != None) or (args[i][1] == '')):
+ self.warning("Function comment for %s lacks description of arg %s" % (name, args[i][1]))
+ i = i + 1
+ if retdesc == "" and ret[0] != "void":
+ self.warning("Function comment for %s lacks description of return value" % (name))
+ if desc == "":
+ self.warning("Function comment for %s lacks description of the function" % (name))
+
+ return(((ret[0], retdesc), args, desc))
def parsePreproc(self, token):
- if debug:
- print "=> preproc ", token, self.lexer.tokens
+ if debug:
+ print("=> preproc ", token, self.lexer.tokens)
name = token[1]
- if name == "#include":
- token = self.lexer.token()
- if token == None:
- return None
- if token[0] == 'preproc':
- self.index_add(token[1], self.filename, not self.is_header,
- "include")
- return self.lexer.token()
- return token
- if name == "#define":
- token = self.lexer.token()
- if token == None:
- return None
- if token[0] == 'preproc':
- # TODO macros with arguments
- name = token[1]
- lst = []
- token = self.lexer.token()
- while token != None and token[0] == 'preproc' and \
- token[1][0] != '#':
- lst.append(token[1])
- token = self.lexer.token()
+ if name == "#include":
+ token = self.lexer.token()
+ if token == None:
+ return None
+ if token[0] == 'preproc':
+ self.index_add(token[1], self.filename, not self.is_header,
+ "include")
+ return self.lexer.token()
+ return token
+ if name == "#define":
+ token = self.lexer.token()
+ if token == None:
+ return None
+ if token[0] == 'preproc':
+ # TODO macros with arguments
+ name = token[1]
+ lst = []
+ token = self.lexer.token()
+ while token != None and token[0] == 'preproc' and \
+ token[1][0] != '#':
+ lst.append(token[1])
+ token = self.lexer.token()
try:
- name = string.split(name, '(') [0]
+ name = name.split('(') [0]
except:
pass
info = self.parseMacroComment(name, not self.is_header)
- self.index_add(name, self.filename, not self.is_header,
- "macro", info)
- return token
-
- #
- # Processing of conditionals modified by Bill 1/1/05
- #
- # We process conditionals (i.e. tokens from #ifdef, #ifndef,
- # #if, #else and #endif) for headers and mainline code,
- # store the ones from the header in libxml2-api.xml, and later
- # (in the routine merge_public) verify that the two (header and
- # mainline code) agree.
- #
- # There is a small problem with processing the headers. Some of
- # the variables are not concerned with enabling / disabling of
- # library functions (e.g. '__XML_PARSER_H__'), and we don't want
- # them to be included in libxml2-api.xml, or involved in
- # the check between the header and the mainline code. To
- # accomplish this, we ignore any conditional which doesn't include
- # the string 'ENABLED'
- #
- if name == "#ifdef":
- apstr = self.lexer.tokens[0][1]
- try:
- self.defines.append(apstr)
- if string.find(apstr, 'ENABLED') != -1:
- self.conditionals.append("defined(%s)" % apstr)
- except:
- pass
- elif name == "#ifndef":
- apstr = self.lexer.tokens[0][1]
- try:
- self.defines.append(apstr)
- if string.find(apstr, 'ENABLED') != -1:
- self.conditionals.append("!defined(%s)" % apstr)
- except:
- pass
- elif name == "#if":
- apstr = ""
- for tok in self.lexer.tokens:
- if apstr != "":
- apstr = apstr + " "
- apstr = apstr + tok[1]
- try:
- self.defines.append(apstr)
- if string.find(apstr, 'ENABLED') != -1:
- self.conditionals.append(apstr)
- except:
- pass
- elif name == "#else":
- if self.conditionals != [] and \
- string.find(self.defines[-1], 'ENABLED') != -1:
- self.conditionals[-1] = "!(%s)" % self.conditionals[-1]
- elif name == "#endif":
- if self.conditionals != [] and \
- string.find(self.defines[-1], 'ENABLED') != -1:
- self.conditionals = self.conditionals[:-1]
- self.defines = self.defines[:-1]
- token = self.lexer.token()
- while token != None and token[0] == 'preproc' and \
- token[1][0] != '#':
- token = self.lexer.token()
- return token
+ self.index_add(name, self.filename, not self.is_header,
+ "macro", info)
+ return token
+
+ #
+ # Processing of conditionals modified by Bill 1/1/05
+ #
+ # We process conditionals (i.e. tokens from #ifdef, #ifndef,
+ # #if, #else and #endif) for headers and mainline code,
+ # store the ones from the header in libxml2-api.xml, and later
+ # (in the routine merge_public) verify that the two (header and
+ # mainline code) agree.
+ #
+ # There is a small problem with processing the headers. Some of
+ # the variables are not concerned with enabling / disabling of
+ # library functions (e.g. '__XML_PARSER_H__'), and we don't want
+ # them to be included in libxml2-api.xml, or involved in
+ # the check between the header and the mainline code. To
+ # accomplish this, we ignore any conditional which doesn't include
+ # the string 'ENABLED'
+ #
+ if name == "#ifdef":
+ apstr = self.lexer.tokens[0][1]
+ try:
+ self.defines.append(apstr)
+ if apstr.find('ENABLED') != -1:
+ self.conditionals.append("defined(%s)" % apstr)
+ except:
+ pass
+ elif name == "#ifndef":
+ apstr = self.lexer.tokens[0][1]
+ try:
+ self.defines.append(apstr)
+ if apstr.find('ENABLED') != -1:
+ self.conditionals.append("!defined(%s)" % apstr)
+ except:
+ pass
+ elif name == "#if":
+ apstr = ""
+ for tok in self.lexer.tokens:
+ if apstr != "":
+ apstr = apstr + " "
+ apstr = apstr + tok[1]
+ try:
+ self.defines.append(apstr)
+ if apstr.find('ENABLED') != -1:
+ self.conditionals.append(apstr)
+ except:
+ pass
+ elif name == "#else":
+ if self.conditionals != [] and \
+ self.defines[-1].find('ENABLED') != -1:
+ self.conditionals[-1] = "!(%s)" % self.conditionals[-1]
+ elif name == "#endif":
+ if self.conditionals != [] and \
+ self.defines[-1].find('ENABLED') != -1:
+ self.conditionals = self.conditionals[:-1]
+ self.defines = self.defines[:-1]
+ token = self.lexer.token()
+ while token != None and token[0] == 'preproc' and \
+ token[1][0] != '#':
+ token = self.lexer.token()
+ return token
#
# token acquisition on top of the lexer, it handle internally
@@ -1019,89 +1023,89 @@ class CParser:
global ignored_words
token = self.lexer.token()
- while token != None:
- if token[0] == 'comment':
- token = self.parseComment(token)
- continue
- elif token[0] == 'preproc':
- token = self.parsePreproc(token)
- continue
- elif token[0] == "name" and token[1] == "__const":
- token = ("name", "const")
- return token
- elif token[0] == "name" and token[1] == "__attribute":
- token = self.lexer.token()
- while token != None and token[1] != ";":
- token = self.lexer.token()
- return token
- elif token[0] == "name" and ignored_words.has_key(token[1]):
- (n, info) = ignored_words[token[1]]
- i = 0
- while i < n:
- token = self.lexer.token()
- i = i + 1
- token = self.lexer.token()
- continue
- else:
- if debug:
- print "=> ", token
- return token
- return None
+ while token != None:
+ if token[0] == 'comment':
+ token = self.parseComment(token)
+ continue
+ elif token[0] == 'preproc':
+ token = self.parsePreproc(token)
+ continue
+ elif token[0] == "name" and token[1] == "__const":
+ token = ("name", "const")
+ return token
+ elif token[0] == "name" and token[1] == "__attribute":
+ token = self.lexer.token()
+ while token != None and token[1] != ";":
+ token = self.lexer.token()
+ return token
+ elif token[0] == "name" and token[1] in ignored_words:
+ (n, info) = ignored_words[token[1]]
+ i = 0
+ while i < n:
+ token = self.lexer.token()
+ i = i + 1
+ token = self.lexer.token()
+ continue
+ else:
+ if debug:
+ print("=> ", token)
+ return token
+ return None
#
# Parse a typedef, it records the type and its name.
#
def parseTypedef(self, token):
if token == None:
- return None
- token = self.parseType(token)
- if token == None:
- self.error("parsing typedef")
- return None
- base_type = self.type
- type = base_type
- #self.debug("end typedef type", token)
- while token != None:
- if token[0] == "name":
- name = token[1]
- signature = self.signature
- if signature != None:
- type = string.split(type, '(')[0]
- d = self.mergeFunctionComment(name,
- ((type, None), signature), 1)
- self.index_add(name, self.filename, not self.is_header,
- "functype", d)
- else:
- if base_type == "struct":
- self.index_add(name, self.filename, not self.is_header,
- "struct", type)
- base_type = "struct " + name
- else:
- # TODO report missing or misformatted comments
- info = self.parseTypeComment(name, 1)
- self.index_add(name, self.filename, not self.is_header,
- "typedef", type, info)
- token = self.token()
- else:
- self.error("parsing typedef: expecting a name")
- return token
- #self.debug("end typedef", token)
- if token != None and token[0] == 'sep' and token[1] == ',':
- type = base_type
- token = self.token()
- while token != None and token[0] == "op":
- type = type + token[1]
- token = self.token()
- elif token != None and token[0] == 'sep' and token[1] == ';':
- break;
- elif token != None and token[0] == 'name':
- type = base_type
- continue;
- else:
- self.error("parsing typedef: expecting ';'", token)
- return token
- token = self.token()
- return token
+ return None
+ token = self.parseType(token)
+ if token == None:
+ self.error("parsing typedef")
+ return None
+ base_type = self.type
+ type = base_type
+ #self.debug("end typedef type", token)
+ while token != None:
+ if token[0] == "name":
+ name = token[1]
+ signature = self.signature
+ if signature != None:
+ type = type.split('(')[0]
+ d = self.mergeFunctionComment(name,
+ ((type, None), signature), 1)
+ self.index_add(name, self.filename, not self.is_header,
+ "functype", d)
+ else:
+ if base_type == "struct":
+ self.index_add(name, self.filename, not self.is_header,
+ "struct", type)
+ base_type = "struct " + name
+ else:
+ # TODO report missing or misformatted comments
+ info = self.parseTypeComment(name, 1)
+ self.index_add(name, self.filename, not self.is_header,
+ "typedef", type, info)
+ token = self.token()
+ else:
+ self.error("parsing typedef: expecting a name")
+ return token
+ #self.debug("end typedef", token)
+ if token != None and token[0] == 'sep' and token[1] == ',':
+ type = base_type
+ token = self.token()
+ while token != None and token[0] == "op":
+ type = type + token[1]
+ token = self.token()
+ elif token != None and token[0] == 'sep' and token[1] == ';':
+ break;
+ elif token != None and token[0] == 'name':
+ type = base_type
+ continue;
+ else:
+ self.error("parsing typedef: expecting ';'", token)
+ return token
+ token = self.token()
+ return token
#
# Parse a C code block, used for functions it parse till
@@ -1109,138 +1113,138 @@ class CParser:
#
def parseBlock(self, token):
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- self.comment = None
- token = self.token()
- return token
- else:
- if self.collect_ref == 1:
- oldtok = token
- token = self.token()
- if oldtok[0] == "name" and oldtok[1][0:3] == "xml":
- if token[0] == "sep" and token[1] == "(":
- self.index_add_ref(oldtok[1], self.filename,
- 0, "function")
- token = self.token()
- elif token[0] == "name":
- token = self.token()
- if token[0] == "sep" and (token[1] == ";" or
- token[1] == "," or token[1] == "="):
- self.index_add_ref(oldtok[1], self.filename,
- 0, "type")
- elif oldtok[0] == "name" and oldtok[1][0:4] == "XML_":
- self.index_add_ref(oldtok[1], self.filename,
- 0, "typedef")
- elif oldtok[0] == "name" and oldtok[1][0:7] == "LIBXML_":
- self.index_add_ref(oldtok[1], self.filename,
- 0, "typedef")
-
- else:
- token = self.token()
- return token
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ self.comment = None
+ token = self.token()
+ return token
+ else:
+ if self.collect_ref == 1:
+ oldtok = token
+ token = self.token()
+ if oldtok[0] == "name" and oldtok[1][0:3] == "xml":
+ if token[0] == "sep" and token[1] == "(":
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "function")
+ token = self.token()
+ elif token[0] == "name":
+ token = self.token()
+ if token[0] == "sep" and (token[1] == ";" or
+ token[1] == "," or token[1] == "="):
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "type")
+ elif oldtok[0] == "name" and oldtok[1][0:4] == "XML_":
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "typedef")
+ elif oldtok[0] == "name" and oldtok[1][0:7] == "LIBXML_":
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "typedef")
+
+ else:
+ token = self.token()
+ return token
#
# Parse a C struct definition till the balancing }
#
def parseStruct(self, token):
fields = []
- #self.debug("start parseStruct", token)
+ #self.debug("start parseStruct", token)
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- self.struct_fields = fields
- #self.debug("end parseStruct", token)
- #print fields
- token = self.token()
- return token
- else:
- base_type = self.type
- #self.debug("before parseType", token)
- token = self.parseType(token)
- #self.debug("after parseType", token)
- if token != None and token[0] == "name":
- fname = token[1]
- token = self.token()
- if token[0] == "sep" and token[1] == ";":
- self.comment = None
- token = self.token()
- fields.append((self.type, fname, self.comment))
- self.comment = None
- else:
- self.error("parseStruct: expecting ;", token)
- elif token != None and token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- if token != None and token[0] == "name":
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == ";":
- token = self.token()
- else:
- self.error("parseStruct: expecting ;", token)
- else:
- self.error("parseStruct: name", token)
- token = self.token()
- self.type = base_type;
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ self.struct_fields = fields
+ #self.debug("end parseStruct", token)
+ #print fields
+ token = self.token()
+ return token
+ else:
+ base_type = self.type
+ #self.debug("before parseType", token)
+ token = self.parseType(token)
+ #self.debug("after parseType", token)
+ if token != None and token[0] == "name":
+ fname = token[1]
+ token = self.token()
+ if token[0] == "sep" and token[1] == ";":
+ self.comment = None
+ token = self.token()
+ fields.append((self.type, fname, self.comment))
+ self.comment = None
+ else:
+ self.error("parseStruct: expecting ;", token)
+ elif token != None and token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ if token != None and token[0] == "name":
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == ";":
+ token = self.token()
+ else:
+ self.error("parseStruct: expecting ;", token)
+ else:
+ self.error("parseStruct: name", token)
+ token = self.token()
+ self.type = base_type;
self.struct_fields = fields
- #self.debug("end parseStruct", token)
- #print fields
- return token
+ #self.debug("end parseStruct", token)
+ #print fields
+ return token
#
# Parse a C enum block, parse till the balancing }
#
def parseEnumBlock(self, token):
self.enums = []
- name = None
- self.comment = None
- comment = ""
- value = "0"
+ name = None
+ self.comment = None
+ comment = ""
+ value = "0"
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- if name != None:
- if self.comment != None:
- comment = self.comment
- self.comment = None
- self.enums.append((name, value, comment))
- token = self.token()
- return token
- elif token[0] == "name":
- if name != None:
- if self.comment != None:
- comment = string.strip(self.comment)
- self.comment = None
- self.enums.append((name, value, comment))
- name = token[1]
- comment = ""
- token = self.token()
- if token[0] == "op" and token[1][0] == "=":
- value = ""
- if len(token[1]) > 1:
- value = token[1][1:]
- token = self.token()
- while token[0] != "sep" or (token[1] != ',' and
- token[1] != '}'):
- value = value + token[1]
- token = self.token()
- else:
- try:
- value = "%d" % (int(value) + 1)
- except:
- self.warning("Failed to compute value of enum %s" % (name))
- value=""
- if token[0] == "sep" and token[1] == ",":
- token = self.token()
- else:
- token = self.token()
- return token
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ if name != None:
+ if self.comment != None:
+ comment = self.comment
+ self.comment = None
+ self.enums.append((name, value, comment))
+ token = self.token()
+ return token
+ elif token[0] == "name":
+ if name != None:
+ if self.comment != None:
+ comment = self.comment.strip()
+ self.comment = None
+ self.enums.append((name, value, comment))
+ name = token[1]
+ comment = ""
+ token = self.token()
+ if token[0] == "op" and token[1][0] == "=":
+ value = ""
+ if len(token[1]) > 1:
+ value = token[1][1:]
+ token = self.token()
+ while token[0] != "sep" or (token[1] != ',' and
+ token[1] != '}'):
+ value = value + token[1]
+ token = self.token()
+ else:
+ try:
+ value = "%d" % (int(value) + 1)
+ except:
+ self.warning("Failed to compute value of enum %s" % (name))
+ value=""
+ if token[0] == "sep" and token[1] == ",":
+ token = self.token()
+ else:
+ token = self.token()
+ return token
#
# Parse a C definition block, used for structs it parse till
@@ -1248,15 +1252,15 @@ class CParser:
#
def parseTypeBlock(self, token):
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- token = self.token()
- return token
- else:
- token = self.token()
- return token
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ token = self.token()
+ return token
+ else:
+ token = self.token()
+ return token
#
# Parse a type: the fact that the type name can either occur after
@@ -1265,200 +1269,200 @@ class CParser:
#
def parseType(self, token):
self.type = ""
- self.struct_fields = []
+ self.struct_fields = []
self.signature = None
- if token == None:
- return token
-
- while token[0] == "name" and (
- token[1] == "const" or \
- token[1] == "unsigned" or \
- token[1] == "signed"):
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- token = self.token()
+ if token == None:
+ return token
+
+ while token[0] == "name" and (
+ token[1] == "const" or \
+ token[1] == "unsigned" or \
+ token[1] == "signed"):
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ token = self.token()
if token[0] == "name" and (token[1] == "long" or token[1] == "short"):
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- if token[0] == "name" and token[1] == "int":
- if self.type == "":
- self.type = tmp[1]
- else:
- self.type = self.type + " " + tmp[1]
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ if token[0] == "name" and token[1] == "int":
+ if self.type == "":
+ self.type = tmp[1]
+ else:
+ self.type = self.type + " " + tmp[1]
elif token[0] == "name" and token[1] == "struct":
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- token = self.token()
- nametok = None
- if token[0] == "name":
- nametok = token
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseStruct(token)
- elif token != None and token[0] == "op" and token[1] == "*":
- self.type = self.type + " " + nametok[1] + " *"
- token = self.token()
- while token != None and token[0] == "op" and token[1] == "*":
- self.type = self.type + " *"
- token = self.token()
- if token[0] == "name":
- nametok = token
- token = self.token()
- else:
- self.error("struct : expecting name", token)
- return token
- elif token != None and token[0] == "name" and nametok != None:
- self.type = self.type + " " + nametok[1]
- return token
-
- if nametok != None:
- self.lexer.push(token)
- token = nametok
- return token
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ token = self.token()
+ nametok = None
+ if token[0] == "name":
+ nametok = token
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseStruct(token)
+ elif token != None and token[0] == "op" and token[1] == "*":
+ self.type = self.type + " " + nametok[1] + " *"
+ token = self.token()
+ while token != None and token[0] == "op" and token[1] == "*":
+ self.type = self.type + " *"
+ token = self.token()
+ if token[0] == "name":
+ nametok = token
+ token = self.token()
+ else:
+ self.error("struct : expecting name", token)
+ return token
+ elif token != None and token[0] == "name" and nametok != None:
+ self.type = self.type + " " + nametok[1]
+ return token
+
+ if nametok != None:
+ self.lexer.push(token)
+ token = nametok
+ return token
elif token[0] == "name" and token[1] == "enum":
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- self.enums = []
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseEnumBlock(token)
- else:
- self.error("parsing enum: expecting '{'", token)
- enum_type = None
- if token != None and token[0] != "name":
- self.lexer.push(token)
- token = ("name", "enum")
- else:
- enum_type = token[1]
- for enum in self.enums:
- self.index_add(enum[0], self.filename,
- not self.is_header, "enum",
- (enum[1], enum[2], enum_type))
- return token
-
- elif token[0] == "name":
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- else:
- self.error("parsing type %s: expecting a name" % (self.type),
- token)
- return token
- token = self.token()
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ self.enums = []
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseEnumBlock(token)
+ else:
+ self.error("parsing enum: expecting '{'", token)
+ enum_type = None
+ if token != None and token[0] != "name":
+ self.lexer.push(token)
+ token = ("name", "enum")
+ else:
+ enum_type = token[1]
+ for enum in self.enums:
+ self.index_add(enum[0], self.filename,
+ not self.is_header, "enum",
+ (enum[1], enum[2], enum_type))
+ return token
+
+ elif token[0] == "name":
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ else:
+ self.error("parsing type %s: expecting a name" % (self.type),
+ token)
+ return token
+ token = self.token()
while token != None and (token[0] == "op" or
- token[0] == "name" and token[1] == "const"):
- self.type = self.type + " " + token[1]
- token = self.token()
-
- #
- # if there is a parenthesis here, this means a function type
- #
- if token != None and token[0] == "sep" and token[1] == '(':
- self.type = self.type + token[1]
- token = self.token()
- while token != None and token[0] == "op" and token[1] == '*':
- self.type = self.type + token[1]
- token = self.token()
- if token == None or token[0] != "name" :
- self.error("parsing function type, name expected", token);
- return token
- self.type = self.type + token[1]
- nametok = token
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == ')':
- self.type = self.type + token[1]
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == '(':
- token = self.token()
- type = self.type;
- token = self.parseSignature(token);
- self.type = type;
- else:
- self.error("parsing function type, '(' expected", token);
- return token
- else:
- self.error("parsing function type, ')' expected", token);
- return token
- self.lexer.push(token)
- token = nametok
- return token
+ token[0] == "name" and token[1] == "const"):
+ self.type = self.type + " " + token[1]
+ token = self.token()
+
+ #
+ # if there is a parenthesis here, this means a function type
+ #
+ if token != None and token[0] == "sep" and token[1] == '(':
+ self.type = self.type + token[1]
+ token = self.token()
+ while token != None and token[0] == "op" and token[1] == '*':
+ self.type = self.type + token[1]
+ token = self.token()
+ if token == None or token[0] != "name" :
+ self.error("parsing function type, name expected", token);
+ return token
+ self.type = self.type + token[1]
+ nametok = token
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == ')':
+ self.type = self.type + token[1]
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == '(':
+ token = self.token()
+ type = self.type;
+ token = self.parseSignature(token);
+ self.type = type;
+ else:
+ self.error("parsing function type, '(' expected", token);
+ return token
+ else:
+ self.error("parsing function type, ')' expected", token);
+ return token
+ self.lexer.push(token)
+ token = nametok
+ return token
#
- # do some lookahead for arrays
- #
- if token != None and token[0] == "name":
- nametok = token
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == '[':
- self.type = self.type + nametok[1]
- while token != None and token[0] == "sep" and token[1] == '[':
- self.type = self.type + token[1]
- token = self.token()
- while token != None and token[0] != 'sep' and \
- token[1] != ']' and token[1] != ';':
- self.type = self.type + token[1]
- token = self.token()
- if token != None and token[0] == 'sep' and token[1] == ']':
- self.type = self.type + token[1]
- token = self.token()
- else:
- self.error("parsing array type, ']' expected", token);
- return token
- elif token != None and token[0] == "sep" and token[1] == ':':
- # remove :12 in case it's a limited int size
- token = self.token()
- token = self.token()
- self.lexer.push(token)
- token = nametok
-
- return token
+ # do some lookahead for arrays
+ #
+ if token != None and token[0] == "name":
+ nametok = token
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == '[':
+ self.type = self.type + nametok[1]
+ while token != None and token[0] == "sep" and token[1] == '[':
+ self.type = self.type + token[1]
+ token = self.token()
+ while token != None and token[0] != 'sep' and \
+ token[1] != ']' and token[1] != ';':
+ self.type = self.type + token[1]
+ token = self.token()
+ if token != None and token[0] == 'sep' and token[1] == ']':
+ self.type = self.type + token[1]
+ token = self.token()
+ else:
+ self.error("parsing array type, ']' expected", token);
+ return token
+ elif token != None and token[0] == "sep" and token[1] == ':':
+ # remove :12 in case it's a limited int size
+ token = self.token()
+ token = self.token()
+ self.lexer.push(token)
+ token = nametok
+
+ return token
#
# Parse a signature: '(' has been parsed and we scan the type definition
# up to the ')' included
def parseSignature(self, token):
signature = []
- if token != None and token[0] == "sep" and token[1] == ')':
- self.signature = []
- token = self.token()
- return token
- while token != None:
- token = self.parseType(token)
- if token != None and token[0] == "name":
- signature.append((self.type, token[1], None))
- token = self.token()
- elif token != None and token[0] == "sep" and token[1] == ',':
- token = self.token()
- continue
- elif token != None and token[0] == "sep" and token[1] == ')':
- # only the type was provided
- if self.type == "...":
- signature.append((self.type, "...", None))
- else:
- signature.append((self.type, None, None))
- if token != None and token[0] == "sep":
- if token[1] == ',':
- token = self.token()
- continue
- elif token[1] == ')':
- token = self.token()
- break
- self.signature = signature
- return token
+ if token != None and token[0] == "sep" and token[1] == ')':
+ self.signature = []
+ token = self.token()
+ return token
+ while token != None:
+ token = self.parseType(token)
+ if token != None and token[0] == "name":
+ signature.append((self.type, token[1], None))
+ token = self.token()
+ elif token != None and token[0] == "sep" and token[1] == ',':
+ token = self.token()
+ continue
+ elif token != None and token[0] == "sep" and token[1] == ')':
+ # only the type was provided
+ if self.type == "...":
+ signature.append((self.type, "...", None))
+ else:
+ signature.append((self.type, None, None))
+ if token != None and token[0] == "sep":
+ if token[1] == ',':
+ token = self.token()
+ continue
+ elif token[1] == ')':
+ token = self.token()
+ break
+ self.signature = signature
+ return token
#
# Parse a global definition, be it a type, variable or function
@@ -1467,134 +1471,134 @@ class CParser:
def parseGlobal(self, token):
static = 0
if token[1] == 'extern':
- token = self.token()
- if token == None:
- return token
- if token[0] == 'string':
- if token[1] == 'C':
- token = self.token()
- if token == None:
- return token
- if token[0] == 'sep' and token[1] == "{":
- token = self.token()
-# print 'Entering extern "C line ', self.lineno()
- while token != None and (token[0] != 'sep' or
- token[1] != "}"):
- if token[0] == 'name':
- token = self.parseGlobal(token)
- else:
- self.error(
- "token %s %s unexpected at the top level" % (
- token[0], token[1]))
- token = self.parseGlobal(token)
-# print 'Exiting extern "C" line', self.lineno()
- token = self.token()
- return token
- else:
- return token
- elif token[1] == 'static':
- static = 1
- token = self.token()
- if token == None or token[0] != 'name':
- return token
-
- if token[1] == 'typedef':
- token = self.token()
- return self.parseTypedef(token)
- else:
- token = self.parseType(token)
- type_orig = self.type
- if token == None or token[0] != "name":
- return token
- type = type_orig
- self.name = token[1]
- token = self.token()
- while token != None and (token[0] == "sep" or token[0] == "op"):
- if token[0] == "sep":
- if token[1] == "[":
- type = type + token[1]
- token = self.token()
- while token != None and (token[0] != "sep" or \
- token[1] != ";"):
- type = type + token[1]
- token = self.token()
-
- if token != None and token[0] == "op" and token[1] == "=":
- #
- # Skip the initialization of the variable
- #
- token = self.token()
- if token[0] == 'sep' and token[1] == '{':
- token = self.token()
- token = self.parseBlock(token)
- else:
- self.comment = None
- while token != None and (token[0] != "sep" or \
- (token[1] != ';' and token[1] != ',')):
- token = self.token()
- self.comment = None
- if token == None or token[0] != "sep" or (token[1] != ';' and
- token[1] != ','):
- self.error("missing ';' or ',' after value")
-
- if token != None and token[0] == "sep":
- if token[1] == ";":
- self.comment = None
- token = self.token()
- if type == "struct":
- self.index_add(self.name, self.filename,
- not self.is_header, "struct", self.struct_fields)
- else:
- self.index_add(self.name, self.filename,
- not self.is_header, "variable", type)
- break
- elif token[1] == "(":
- token = self.token()
- token = self.parseSignature(token)
- if token == None:
- return None
- if token[0] == "sep" and token[1] == ";":
- d = self.mergeFunctionComment(self.name,
- ((type, None), self.signature), 1)
- self.index_add(self.name, self.filename, static,
- "function", d)
- token = self.token()
- elif token[0] == "sep" and token[1] == "{":
- d = self.mergeFunctionComment(self.name,
- ((type, None), self.signature), static)
- self.index_add(self.name, self.filename, static,
- "function", d)
- token = self.token()
- token = self.parseBlock(token);
- elif token[1] == ',':
- self.comment = None
- self.index_add(self.name, self.filename, static,
- "variable", type)
- type = type_orig
- token = self.token()
- while token != None and token[0] == "sep":
- type = type + token[1]
- token = self.token()
- if token != None and token[0] == "name":
- self.name = token[1]
- token = self.token()
- else:
- break
-
- return token
+ token = self.token()
+ if token == None:
+ return token
+ if token[0] == 'string':
+ if token[1] == 'C':
+ token = self.token()
+ if token == None:
+ return token
+ if token[0] == 'sep' and token[1] == "{":
+ token = self.token()
+# print 'Entering extern "C line ', self.lineno()
+ while token != None and (token[0] != 'sep' or
+ token[1] != "}"):
+ if token[0] == 'name':
+ token = self.parseGlobal(token)
+ else:
+ self.error(
+ "token %s %s unexpected at the top level" % (
+ token[0], token[1]))
+ token = self.parseGlobal(token)
+# print 'Exiting extern "C" line', self.lineno()
+ token = self.token()
+ return token
+ else:
+ return token
+ elif token[1] == 'static':
+ static = 1
+ token = self.token()
+ if token == None or token[0] != 'name':
+ return token
+
+ if token[1] == 'typedef':
+ token = self.token()
+ return self.parseTypedef(token)
+ else:
+ token = self.parseType(token)
+ type_orig = self.type
+ if token == None or token[0] != "name":
+ return token
+ type = type_orig
+ self.name = token[1]
+ token = self.token()
+ while token != None and (token[0] == "sep" or token[0] == "op"):
+ if token[0] == "sep":
+ if token[1] == "[":
+ type = type + token[1]
+ token = self.token()
+ while token != None and (token[0] != "sep" or \
+ token[1] != ";"):
+ type = type + token[1]
+ token = self.token()
+
+ if token != None and token[0] == "op" and token[1] == "=":
+ #
+ # Skip the initialization of the variable
+ #
+ token = self.token()
+ if token[0] == 'sep' and token[1] == '{':
+ token = self.token()
+ token = self.parseBlock(token)
+ else:
+ self.comment = None
+ while token != None and (token[0] != "sep" or \
+ (token[1] != ';' and token[1] != ',')):
+ token = self.token()
+ self.comment = None
+ if token == None or token[0] != "sep" or (token[1] != ';' and
+ token[1] != ','):
+ self.error("missing ';' or ',' after value")
+
+ if token != None and token[0] == "sep":
+ if token[1] == ";":
+ self.comment = None
+ token = self.token()
+ if type == "struct":
+ self.index_add(self.name, self.filename,
+ not self.is_header, "struct", self.struct_fields)
+ else:
+ self.index_add(self.name, self.filename,
+ not self.is_header, "variable", type)
+ break
+ elif token[1] == "(":
+ token = self.token()
+ token = self.parseSignature(token)
+ if token == None:
+ return None
+ if token[0] == "sep" and token[1] == ";":
+ d = self.mergeFunctionComment(self.name,
+ ((type, None), self.signature), 1)
+ self.index_add(self.name, self.filename, static,
+ "function", d)
+ token = self.token()
+ elif token[0] == "sep" and token[1] == "{":
+ d = self.mergeFunctionComment(self.name,
+ ((type, None), self.signature), static)
+ self.index_add(self.name, self.filename, static,
+ "function", d)
+ token = self.token()
+ token = self.parseBlock(token);
+ elif token[1] == ',':
+ self.comment = None
+ self.index_add(self.name, self.filename, static,
+ "variable", type)
+ type = type_orig
+ token = self.token()
+ while token != None and token[0] == "sep":
+ type = type + token[1]
+ token = self.token()
+ if token != None and token[0] == "name":
+ self.name = token[1]
+ token = self.token()
+ else:
+ break
+
+ return token
def parse(self):
self.warning("Parsing %s" % (self.filename))
token = self.token()
- while token != None:
+ while token != None:
if token[0] == 'name':
- token = self.parseGlobal(token)
+ token = self.parseGlobal(token)
else:
- self.error("token %s %s unexpected at the top level" % (
- token[0], token[1]))
- token = self.parseGlobal(token)
- return
- self.parseTopComment(self.top_comment)
+ self.error("token %s %s unexpected at the top level" % (
+ token[0], token[1]))
+ token = self.parseGlobal(token)
+ return
+ self.parseTopComment(self.top_comment)
return self.index
@@ -1603,488 +1607,490 @@ class docBuilder:
def __init__(self, name, directories=['.'], excludes=[]):
self.name = name
self.directories = directories
- self.excludes = excludes + ignored_files.keys()
- self.modules = {}
- self.headers = {}
- self.idx = index()
+ self.excludes = excludes + list(ignored_files.keys())
+ self.modules = {}
+ self.headers = {}
+ self.idx = index()
self.xref = {}
- self.index = {}
- if name == 'libxml2':
- self.basename = 'libxml'
- else:
- self.basename = name
+ self.index = {}
+ if name == 'libxml2':
+ self.basename = 'libxml'
+ else:
+ self.basename = name
def indexString(self, id, str):
- if str == None:
- return
- str = string.replace(str, "'", ' ')
- str = string.replace(str, '"', ' ')
- str = string.replace(str, "/", ' ')
- str = string.replace(str, '*', ' ')
- str = string.replace(str, "[", ' ')
- str = string.replace(str, "]", ' ')
- str = string.replace(str, "(", ' ')
- str = string.replace(str, ")", ' ')
- str = string.replace(str, "<", ' ')
- str = string.replace(str, '>', ' ')
- str = string.replace(str, "&", ' ')
- str = string.replace(str, '#', ' ')
- str = string.replace(str, ",", ' ')
- str = string.replace(str, '.', ' ')
- str = string.replace(str, ';', ' ')
- tokens = string.split(str)
- for token in tokens:
- try:
- c = token[0]
- if string.find(string.letters, c) < 0:
- pass
- elif len(token) < 3:
- pass
- else:
- lower = string.lower(token)
- # TODO: generalize this a bit
- if lower == 'and' or lower == 'the':
- pass
- elif self.xref.has_key(token):
- self.xref[token].append(id)
- else:
- self.xref[token] = [id]
- except:
- pass
+ if str == None:
+ return
+ str = str.replace("'", ' ')
+ str = str.replace('"', ' ')
+ str = str.replace("/", ' ')
+ str = str.replace('*', ' ')
+ str = str.replace("[", ' ')
+ str = str.replace("]", ' ')
+ str = str.replace("(", ' ')
+ str = str.replace(")", ' ')
+ str = str.replace("<", ' ')
+ str = str.replace('>', ' ')
+ str = str.replace("&", ' ')
+ str = str.replace('#', ' ')
+ str = str.replace(",", ' ')
+ str = str.replace('.', ' ')
+ str = str.replace(';', ' ')
+ tokens = str.split()
+ for token in tokens:
+ try:
+ c = token[0]
+ if string.ascii_letters.find(c) < 0:
+ pass
+ elif len(token) < 3:
+ pass
+ else:
+ lower = token.lower()
+ # TODO: generalize this a bit
+ if lower == 'and' or lower == 'the':
+ pass
+ elif token in self.xref:
+ self.xref[token].append(id)
+ else:
+ self.xref[token] = [id]
+ except:
+ pass
def analyze(self):
- print "Project %s : %d headers, %d modules" % (self.name, len(self.headers.keys()), len(self.modules.keys()))
- self.idx.analyze()
+ print("Project %s : %d headers, %d modules" % (self.name, len(list(self.headers.keys())), len(list(self.modules.keys()))))
+ self.idx.analyze()
def scanHeaders(self):
- for header in self.headers.keys():
- parser = CParser(header)
- idx = parser.parse()
- self.headers[header] = idx;
- self.idx.merge(idx)
+ for header in list(self.headers.keys()):
+ parser = CParser(header)
+ idx = parser.parse()
+ self.headers[header] = idx;
+ self.idx.merge(idx)
def scanModules(self):
- for module in self.modules.keys():
- parser = CParser(module)
- idx = parser.parse()
- # idx.analyze()
- self.modules[module] = idx
- self.idx.merge_public(idx)
+ for module in list(self.modules.keys()):
+ parser = CParser(module)
+ idx = parser.parse()
+ # idx.analyze()
+ self.modules[module] = idx
+ self.idx.merge_public(idx)
def scan(self):
for directory in self.directories:
- files = glob.glob(directory + "/*.c")
- for file in files:
- skip = 0
- for excl in self.excludes:
- if string.find(file, excl) != -1:
- skip = 1;
- break
- if skip == 0:
- self.modules[file] = None;
- files = glob.glob(directory + "/*.h")
- for file in files:
- skip = 0
- for excl in self.excludes:
- if string.find(file, excl) != -1:
- skip = 1;
- break
- if skip == 0:
- self.headers[file] = None;
- self.scanHeaders()
- self.scanModules()
+ files = glob.glob(directory + "/*.c")
+ for file in files:
+ skip = 0
+ for excl in self.excludes:
+ if file.find(excl) != -1:
+ print("Skipping %s" % file)
+ skip = 1
+ break
+ if skip == 0:
+ self.modules[file] = None;
+ files = glob.glob(directory + "/*.h")
+ for file in files:
+ skip = 0
+ for excl in self.excludes:
+ if file.find(excl) != -1:
+ print("Skipping %s" % file)
+ skip = 1
+ break
+ if skip == 0:
+ self.headers[file] = None;
+ self.scanHeaders()
+ self.scanModules()
def modulename_file(self, file):
module = os.path.basename(file)
- if module[-2:] == '.h':
- module = module[:-2]
- elif module[-2:] == '.c':
- module = module[:-2]
- return module
+ if module[-2:] == '.h':
+ module = module[:-2]
+ elif module[-2:] == '.c':
+ module = module[:-2]
+ return module
def serialize_enum(self, output, name):
id = self.idx.enums[name]
output.write(" <enum name='%s' file='%s'" % (name,
- self.modulename_file(id.header)))
- if id.info != None:
- info = id.info
- if info[0] != None and info[0] != '':
- try:
- val = eval(info[0])
- except:
- val = info[0]
- output.write(" value='%s'" % (val));
- if info[2] != None and info[2] != '':
- output.write(" type='%s'" % info[2]);
- if info[1] != None and info[1] != '':
- output.write(" info='%s'" % escape(info[1]));
+ self.modulename_file(id.header)))
+ if id.info != None:
+ info = id.info
+ if info[0] != None and info[0] != '':
+ try:
+ val = eval(info[0])
+ except:
+ val = info[0]
+ output.write(" value='%s'" % (val));
+ if info[2] != None and info[2] != '':
+ output.write(" type='%s'" % info[2]);
+ if info[1] != None and info[1] != '':
+ output.write(" info='%s'" % escape(info[1]));
output.write("/>\n")
def serialize_macro(self, output, name):
id = self.idx.macros[name]
output.write(" <macro name='%s' file='%s'>\n" % (name,
- self.modulename_file(id.header)))
- if id.info != None:
+ self.modulename_file(id.header)))
+ if id.info != None:
try:
- (args, desc) = id.info
- if desc != None and desc != "":
- output.write(" <info>%s</info>\n" % (escape(desc)))
- self.indexString(name, desc)
- for arg in args:
- (name, desc) = arg
- if desc != None and desc != "":
- output.write(" <arg name='%s' info='%s'/>\n" % (
- name, escape(desc)))
- self.indexString(name, desc)
- else:
- output.write(" <arg name='%s'/>\n" % (name))
+ (args, desc) = id.info
+ if desc != None and desc != "":
+ output.write(" <info>%s</info>\n" % (escape(desc)))
+ self.indexString(name, desc)
+ for arg in args:
+ (name, desc) = arg
+ if desc != None and desc != "":
+ output.write(" <arg name='%s' info='%s'/>\n" % (
+ name, escape(desc)))
+ self.indexString(name, desc)
+ else:
+ output.write(" <arg name='%s'/>\n" % (name))
except:
pass
output.write(" </macro>\n")
def serialize_typedef(self, output, name):
id = self.idx.typedefs[name]
- if id.info[0:7] == 'struct ':
- output.write(" <struct name='%s' file='%s' type='%s'" % (
- name, self.modulename_file(id.header), id.info))
- name = id.info[7:]
- if self.idx.structs.has_key(name) and ( \
- type(self.idx.structs[name].info) == type(()) or
- type(self.idx.structs[name].info) == type([])):
- output.write(">\n");
- try:
- for field in self.idx.structs[name].info:
- desc = field[2]
- self.indexString(name, desc)
- if desc == None:
- desc = ''
- else:
- desc = escape(desc)
- output.write(" <field name='%s' type='%s' info='%s'/>\n" % (field[1] , field[0], desc))
- except:
- print "Failed to serialize struct %s" % (name)
- output.write(" </struct>\n")
- else:
- output.write("/>\n");
- else :
- output.write(" <typedef name='%s' file='%s' type='%s'" % (
- name, self.modulename_file(id.header), id.info))
+ if id.info[0:7] == 'struct ':
+ output.write(" <struct name='%s' file='%s' type='%s'" % (
+ name, self.modulename_file(id.header), id.info))
+ name = id.info[7:]
+ if name in self.idx.structs and ( \
+ type(self.idx.structs[name].info) == type(()) or
+ type(self.idx.structs[name].info) == type([])):
+ output.write(">\n");
+ try:
+ for field in self.idx.structs[name].info:
+ desc = field[2]
+ self.indexString(name, desc)
+ if desc == None:
+ desc = ''
+ else:
+ desc = escape(desc)
+ output.write(" <field name='%s' type='%s' info='%s'/>\n" % (field[1] , field[0], desc))
+ except:
+ print("Failed to serialize struct %s" % (name))
+ output.write(" </struct>\n")
+ else:
+ output.write("/>\n");
+ else :
+ output.write(" <typedef name='%s' file='%s' type='%s'" % (
+ name, self.modulename_file(id.header), id.info))
try:
- desc = id.extra
- if desc != None and desc != "":
- output.write(">\n <info>%s</info>\n" % (escape(desc)))
- output.write(" </typedef>\n")
- else:
- output.write("/>\n")
- except:
- output.write("/>\n")
+ desc = id.extra
+ if desc != None and desc != "":
+ output.write(">\n <info>%s</info>\n" % (escape(desc)))
+ output.write(" </typedef>\n")
+ else:
+ output.write("/>\n")
+ except:
+ output.write("/>\n")
def serialize_variable(self, output, name):
id = self.idx.variables[name]
- if id.info != None:
- output.write(" <variable name='%s' file='%s' type='%s'/>\n" % (
- name, self.modulename_file(id.header), id.info))
- else:
- output.write(" <variable name='%s' file='%s'/>\n" % (
- name, self.modulename_file(id.header)))
+ if id.info != None:
+ output.write(" <variable name='%s' file='%s' type='%s'/>\n" % (
+ name, self.modulename_file(id.header), id.info))
+ else:
+ output.write(" <variable name='%s' file='%s'/>\n" % (
+ name, self.modulename_file(id.header)))
def serialize_function(self, output, name):
id = self.idx.functions[name]
- if name == debugsym:
- print "=>", id
+ if name == debugsym:
+ print("=>", id)
output.write(" <%s name='%s' file='%s' module='%s'>\n" % (id.type,
- name, self.modulename_file(id.header),
- self.modulename_file(id.module)))
- #
- # Processing of conditionals modified by Bill 1/1/05
- #
- if id.conditionals != None:
- apstr = ""
- for cond in id.conditionals:
- if apstr != "":
- apstr = apstr + " &amp;&amp; "
- apstr = apstr + cond
- output.write(" <cond>%s</cond>\n"% (apstr));
- try:
- (ret, params, desc) = id.info
- if (desc == None or desc == '') and \
- name[0:9] != "xmlThrDef" and name != "xmlDllMain":
- print "%s %s from %s has no description" % (id.type, name,
- self.modulename_file(id.module))
-
- output.write(" <info>%s</info>\n" % (escape(desc)))
- self.indexString(name, desc)
- if ret[0] != None:
- if ret[0] == "void":
- output.write(" <return type='void'/>\n")
- else:
- output.write(" <return type='%s' info='%s'/>\n" % (
- ret[0], escape(ret[1])))
- self.indexString(name, ret[1])
- for param in params:
- if param[0] == 'void':
- continue
- if param[2] == None:
- output.write(" <arg name='%s' type='%s' info=''/>\n" % (param[1], param[0]))
- else:
- output.write(" <arg name='%s' type='%s' info='%s'/>\n" % (param[1], param[0], escape(param[2])))
- self.indexString(name, param[2])
- except:
- print "Failed to save function %s info: " % name, `id.info`
+ name, self.modulename_file(id.header),
+ self.modulename_file(id.module)))
+ #
+ # Processing of conditionals modified by Bill 1/1/05
+ #
+ if id.conditionals != None:
+ apstr = ""
+ for cond in id.conditionals:
+ if apstr != "":
+ apstr = apstr + " &amp;&amp; "
+ apstr = apstr + cond
+ output.write(" <cond>%s</cond>\n"% (apstr));
+ try:
+ (ret, params, desc) = id.info
+ if (desc == None or desc == '') and \
+ name[0:9] != "xmlThrDef" and name != "xmlDllMain":
+ print("%s %s from %s has no description" % (id.type, name,
+ self.modulename_file(id.module)))
+
+ output.write(" <info>%s</info>\n" % (escape(desc)))
+ self.indexString(name, desc)
+ if ret[0] != None:
+ if ret[0] == "void":
+ output.write(" <return type='void'/>\n")
+ else:
+ output.write(" <return type='%s' info='%s'/>\n" % (
+ ret[0], escape(ret[1])))
+ self.indexString(name, ret[1])
+ for param in params:
+ if param[0] == 'void':
+ continue
+ if param[2] == None:
+ output.write(" <arg name='%s' type='%s' info=''/>\n" % (param[1], param[0]))
+ else:
+ output.write(" <arg name='%s' type='%s' info='%s'/>\n" % (param[1], param[0], escape(param[2])))
+ self.indexString(name, param[2])
+ except:
+ print("Failed to save function %s info: " % name, repr(id.info))
output.write(" </%s>\n" % (id.type))
def serialize_exports(self, output, file):
module = self.modulename_file(file)
- output.write(" <file name='%s'>\n" % (module))
- dict = self.headers[file]
- if dict.info != None:
- for data in ('Summary', 'Description', 'Author'):
- try:
- output.write(" <%s>%s</%s>\n" % (
- string.lower(data),
- escape(dict.info[data]),
- string.lower(data)))
- except:
- print "Header %s lacks a %s description" % (module, data)
- if dict.info.has_key('Description'):
- desc = dict.info['Description']
- if string.find(desc, "DEPRECATED") != -1:
- output.write(" <deprecated/>\n")
-
- ids = dict.macros.keys()
- ids.sort()
- for id in uniq(ids):
- # Macros are sometime used to masquerade other types.
- if dict.functions.has_key(id):
- continue
- if dict.variables.has_key(id):
- continue
- if dict.typedefs.has_key(id):
- continue
- if dict.structs.has_key(id):
- continue
- if dict.enums.has_key(id):
- continue
- output.write(" <exports symbol='%s' type='macro'/>\n" % (id))
- ids = dict.enums.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='enum'/>\n" % (id))
- ids = dict.typedefs.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='typedef'/>\n" % (id))
- ids = dict.structs.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='struct'/>\n" % (id))
- ids = dict.variables.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='variable'/>\n" % (id))
- ids = dict.functions.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='function'/>\n" % (id))
- output.write(" </file>\n")
+ output.write(" <file name='%s'>\n" % (module))
+ dict = self.headers[file]
+ if dict.info != None:
+ for data in ('Summary', 'Description', 'Author'):
+ try:
+ output.write(" <%s>%s</%s>\n" % (
+ data.lower(),
+ escape(dict.info[data]),
+ data.lower()))
+ except:
+ print("Header %s lacks a %s description" % (module, data))
+ if 'Description' in dict.info:
+ desc = dict.info['Description']
+ if desc.find("DEPRECATED") != -1:
+ output.write(" <deprecated/>\n")
+
+ ids = list(dict.macros.keys())
+ ids.sort()
+ for id in uniq(ids):
+ # Macros are sometime used to masquerade other types.
+ if id in dict.functions:
+ continue
+ if id in dict.variables:
+ continue
+ if id in dict.typedefs:
+ continue
+ if id in dict.structs:
+ continue
+ if id in dict.enums:
+ continue
+ output.write(" <exports symbol='%s' type='macro'/>\n" % (id))
+ ids = list(dict.enums.keys())
+ ids.sort()
+ for id in uniq(ids):
+ output.write(" <exports symbol='%s' type='enum'/>\n" % (id))
+ ids = list(dict.typedefs.keys())
+ ids.sort()
+ for id in uniq(ids):
+ output.write(" <exports symbol='%s' type='typedef'/>\n" % (id))
+ ids = list(dict.structs.keys())
+ ids.sort()
+ for id in uniq(ids):
+ output.write(" <exports symbol='%s' type='struct'/>\n" % (id))
+ ids = list(dict.variables.keys())
+ ids.sort()
+ for id in uniq(ids):
+ output.write(" <exports symbol='%s' type='variable'/>\n" % (id))
+ ids = list(dict.functions.keys())
+ ids.sort()
+ for id in uniq(ids):
+ output.write(" <exports symbol='%s' type='function'/>\n" % (id))
+ output.write(" </file>\n")
def serialize_xrefs_files(self, output):
- headers = self.headers.keys()
+ headers = list(self.headers.keys())
headers.sort()
for file in headers:
- module = self.modulename_file(file)
- output.write(" <file name='%s'>\n" % (module))
- dict = self.headers[file]
- ids = uniq(dict.functions.keys() + dict.variables.keys() + \
- dict.macros.keys() + dict.typedefs.keys() + \
- dict.structs.keys() + dict.enums.keys())
- ids.sort()
- for id in ids:
- output.write(" <ref name='%s'/>\n" % (id))
- output.write(" </file>\n")
+ module = self.modulename_file(file)
+ output.write(" <file name='%s'>\n" % (module))
+ dict = self.headers[file]
+ ids = uniq(list(dict.functions.keys()) + list(dict.variables.keys()) + \
+ list(dict.macros.keys()) + list(dict.typedefs.keys()) + \
+ list(dict.structs.keys()) + list(dict.enums.keys()))
+ ids.sort()
+ for id in ids:
+ output.write(" <ref name='%s'/>\n" % (id))
+ output.write(" </file>\n")
pass
def serialize_xrefs_functions(self, output):
funcs = {}
- for name in self.idx.functions.keys():
- id = self.idx.functions[name]
- try:
- (ret, params, desc) = id.info
- for param in params:
- if param[0] == 'void':
- continue
- if funcs.has_key(param[0]):
- funcs[param[0]].append(name)
- else:
- funcs[param[0]] = [name]
- except:
- pass
- typ = funcs.keys()
- typ.sort()
- for type in typ:
- if type == '' or type == 'void' or type == "int" or \
- type == "char *" or type == "const char *" :
- continue
- output.write(" <type name='%s'>\n" % (type))
- ids = funcs[type]
- ids.sort()
- pid = '' # not sure why we have dups, but get rid of them!
- for id in ids:
- if id != pid:
- output.write(" <ref name='%s'/>\n" % (id))
- pid = id
- output.write(" </type>\n")
+ for name in list(self.idx.functions.keys()):
+ id = self.idx.functions[name]
+ try:
+ (ret, params, desc) = id.info
+ for param in params:
+ if param[0] == 'void':
+ continue
+ if param[0] in funcs:
+ funcs[param[0]].append(name)
+ else:
+ funcs[param[0]] = [name]
+ except:
+ pass
+ typ = list(funcs.keys())
+ typ.sort()
+ for type in typ:
+ if type == '' or type == 'void' or type == "int" or \
+ type == "char *" or type == "const char *" :
+ continue
+ output.write(" <type name='%s'>\n" % (type))
+ ids = funcs[type]
+ ids.sort()
+ pid = '' # not sure why we have dups, but get rid of them!
+ for id in ids:
+ if id != pid:
+ output.write(" <ref name='%s'/>\n" % (id))
+ pid = id
+ output.write(" </type>\n")
def serialize_xrefs_constructors(self, output):
funcs = {}
- for name in self.idx.functions.keys():
- id = self.idx.functions[name]
- try:
- (ret, params, desc) = id.info
- if ret[0] == "void":
- continue
- if funcs.has_key(ret[0]):
- funcs[ret[0]].append(name)
- else:
- funcs[ret[0]] = [name]
- except:
- pass
- typ = funcs.keys()
- typ.sort()
- for type in typ:
- if type == '' or type == 'void' or type == "int" or \
- type == "char *" or type == "const char *" :
- continue
- output.write(" <type name='%s'>\n" % (type))
- ids = funcs[type]
- ids.sort()
- for id in ids:
- output.write(" <ref name='%s'/>\n" % (id))
- output.write(" </type>\n")
+ for name in list(self.idx.functions.keys()):
+ id = self.idx.functions[name]
+ try:
+ (ret, params, desc) = id.info
+ if ret[0] == "void":
+ continue
+ if ret[0] in funcs:
+ funcs[ret[0]].append(name)
+ else:
+ funcs[ret[0]] = [name]
+ except:
+ pass
+ typ = list(funcs.keys())
+ typ.sort()
+ for type in typ:
+ if type == '' or type == 'void' or type == "int" or \
+ type == "char *" or type == "const char *" :
+ continue
+ output.write(" <type name='%s'>\n" % (type))
+ ids = funcs[type]
+ ids.sort()
+ for id in ids:
+ output.write(" <ref name='%s'/>\n" % (id))
+ output.write(" </type>\n")
def serialize_xrefs_alpha(self, output):
- letter = None
- ids = self.idx.identifiers.keys()
- ids.sort()
- for id in ids:
- if id[0] != letter:
- if letter != None:
- output.write(" </letter>\n")
- letter = id[0]
- output.write(" <letter name='%s'>\n" % (letter))
- output.write(" <ref name='%s'/>\n" % (id))
- if letter != None:
- output.write(" </letter>\n")
+ letter = None
+ ids = list(self.idx.identifiers.keys())
+ ids.sort()
+ for id in ids:
+ if id[0] != letter:
+ if letter != None:
+ output.write(" </letter>\n")
+ letter = id[0]
+ output.write(" <letter name='%s'>\n" % (letter))
+ output.write(" <ref name='%s'/>\n" % (id))
+ if letter != None:
+ output.write(" </letter>\n")
def serialize_xrefs_references(self, output):
- typ = self.idx.identifiers.keys()
- typ.sort()
- for id in typ:
- idf = self.idx.identifiers[id]
- module = idf.header
- output.write(" <reference name='%s' href='%s'/>\n" % (id,
- 'html/' + self.basename + '-' +
- self.modulename_file(module) + '.html#' +
- id))
+ typ = list(self.idx.identifiers.keys())
+ typ.sort()
+ for id in typ:
+ idf = self.idx.identifiers[id]
+ module = idf.header
+ output.write(" <reference name='%s' href='%s'/>\n" % (id,
+ 'html/' + self.basename + '-' +
+ self.modulename_file(module) + '.html#' +
+ id))
def serialize_xrefs_index(self, output):
index = self.xref
- typ = index.keys()
- typ.sort()
- letter = None
- count = 0
- chunk = 0
- chunks = []
- for id in typ:
- if len(index[id]) > 30:
- continue
- if id[0] != letter:
- if letter == None or count > 200:
- if letter != None:
- output.write(" </letter>\n")
- output.write(" </chunk>\n")
- count = 0
- chunks.append(["chunk%s" % (chunk -1), first_letter, letter])
- output.write(" <chunk name='chunk%s'>\n" % (chunk))
- first_letter = id[0]
- chunk = chunk + 1
- elif letter != None:
- output.write(" </letter>\n")
- letter = id[0]
- output.write(" <letter name='%s'>\n" % (letter))
- output.write(" <word name='%s'>\n" % (id))
- tokens = index[id];
- tokens.sort()
- tok = None
- for token in tokens:
- if tok == token:
- continue
- tok = token
- output.write(" <ref name='%s'/>\n" % (token))
- count = count + 1
- output.write(" </word>\n")
- if letter != None:
- output.write(" </letter>\n")
- output.write(" </chunk>\n")
- if count != 0:
- chunks.append(["chunk%s" % (chunk -1), first_letter, letter])
- output.write(" <chunks>\n")
- for ch in chunks:
- output.write(" <chunk name='%s' start='%s' end='%s'/>\n" % (
- ch[0], ch[1], ch[2]))
- output.write(" </chunks>\n")
+ typ = list(index.keys())
+ typ.sort()
+ letter = None
+ count = 0
+ chunk = 0
+ chunks = []
+ for id in typ:
+ if len(index[id]) > 30:
+ continue
+ if id[0] != letter:
+ if letter == None or count > 200:
+ if letter != None:
+ output.write(" </letter>\n")
+ output.write(" </chunk>\n")
+ count = 0
+ chunks.append(["chunk%s" % (chunk -1), first_letter, letter])
+ output.write(" <chunk name='chunk%s'>\n" % (chunk))
+ first_letter = id[0]
+ chunk = chunk + 1
+ elif letter != None:
+ output.write(" </letter>\n")
+ letter = id[0]
+ output.write(" <letter name='%s'>\n" % (letter))
+ output.write(" <word name='%s'>\n" % (id))
+ tokens = index[id];
+ tokens.sort()
+ tok = None
+ for token in tokens:
+ if tok == token:
+ continue
+ tok = token
+ output.write(" <ref name='%s'/>\n" % (token))
+ count = count + 1
+ output.write(" </word>\n")
+ if letter != None:
+ output.write(" </letter>\n")
+ output.write(" </chunk>\n")
+ if count != 0:
+ chunks.append(["chunk%s" % (chunk -1), first_letter, letter])
+ output.write(" <chunks>\n")
+ for ch in chunks:
+ output.write(" <chunk name='%s' start='%s' end='%s'/>\n" % (
+ ch[0], ch[1], ch[2]))
+ output.write(" </chunks>\n")
def serialize_xrefs(self, output):
- output.write(" <references>\n")
- self.serialize_xrefs_references(output)
- output.write(" </references>\n")
- output.write(" <alpha>\n")
- self.serialize_xrefs_alpha(output)
- output.write(" </alpha>\n")
- output.write(" <constructors>\n")
- self.serialize_xrefs_constructors(output)
- output.write(" </constructors>\n")
- output.write(" <functions>\n")
- self.serialize_xrefs_functions(output)
- output.write(" </functions>\n")
- output.write(" <files>\n")
- self.serialize_xrefs_files(output)
- output.write(" </files>\n")
- output.write(" <index>\n")
- self.serialize_xrefs_index(output)
- output.write(" </index>\n")
+ output.write(" <references>\n")
+ self.serialize_xrefs_references(output)
+ output.write(" </references>\n")
+ output.write(" <alpha>\n")
+ self.serialize_xrefs_alpha(output)
+ output.write(" </alpha>\n")
+ output.write(" <constructors>\n")
+ self.serialize_xrefs_constructors(output)
+ output.write(" </constructors>\n")
+ output.write(" <functions>\n")
+ self.serialize_xrefs_functions(output)
+ output.write(" </functions>\n")
+ output.write(" <files>\n")
+ self.serialize_xrefs_files(output)
+ output.write(" </files>\n")
+ output.write(" <index>\n")
+ self.serialize_xrefs_index(output)
+ output.write(" </index>\n")
def serialize(self):
filename = "%s-api.xml" % self.name
- print "Saving XML description %s" % (filename)
+ print("Saving XML description %s" % (filename))
output = open(filename, "w")
output.write('<?xml version="1.0" encoding="ISO-8859-1"?>\n')
output.write("<api name='%s'>\n" % self.name)
output.write(" <files>\n")
- headers = self.headers.keys()
+ headers = list(self.headers.keys())
headers.sort()
for file in headers:
self.serialize_exports(output, file)
output.write(" </files>\n")
output.write(" <symbols>\n")
- macros = self.idx.macros.keys()
+ macros = list(self.idx.macros.keys())
macros.sort()
for macro in macros:
self.serialize_macro(output, macro)
- enums = self.idx.enums.keys()
+ enums = list(self.idx.enums.keys())
enums.sort()
for enum in enums:
self.serialize_enum(output, enum)
- typedefs = self.idx.typedefs.keys()
+ typedefs = list(self.idx.typedefs.keys())
typedefs.sort()
for typedef in typedefs:
self.serialize_typedef(output, typedef)
- variables = self.idx.variables.keys()
+ variables = list(self.idx.variables.keys())
variables.sort()
for variable in variables:
self.serialize_variable(output, variable)
- functions = self.idx.functions.keys()
+ functions = list(self.idx.functions.keys())
functions.sort()
for function in functions:
self.serialize_function(output, function)
@@ -2093,7 +2099,7 @@ class docBuilder:
output.close()
filename = "%s-refs.xml" % self.name
- print "Saving XML Cross References %s" % (filename)
+ print("Saving XML Cross References %s" % (filename))
output = open(filename, "w")
output.write('<?xml version="1.0" encoding="ISO-8859-1"?>\n')
output.write("<apirefs name='%s'>\n" % self.name)
@@ -2105,28 +2111,28 @@ class docBuilder:
def rebuild():
builder = None
if glob.glob("parser.c") != [] :
- print "Rebuilding API description for libxml2"
- builder = docBuilder("libxml2", [".", "."],
- ["xmlwin32version.h", "tst.c"])
+ print("Rebuilding API description for libxml2")
+ builder = docBuilder("libxml2", [".", "."],
+ ["xmlwin32version.h", "tst.c"])
elif glob.glob("../parser.c") != [] :
- print "Rebuilding API description for libxml2"
- builder = docBuilder("libxml2", ["..", "../include/libxml"],
- ["xmlwin32version.h", "tst.c"])
+ print("Rebuilding API description for libxml2")
+ builder = docBuilder("libxml2", ["..", "../include/libxml"],
+ ["xmlwin32version.h", "tst.c"])
elif glob.glob("../libxslt/transform.c") != [] :
- print "Rebuilding API description for libxslt"
- builder = docBuilder("libxslt", ["../libxslt"],
- ["win32config.h", "libxslt.h", "tst.c"])
+ print("Rebuilding API description for libxslt")
+ builder = docBuilder("libxslt", ["../libxslt"],
+ ["win32config.h", "libxslt.h", "tst.c"])
else:
- print "rebuild() failed, unable to guess the module"
- return None
+ print("rebuild() failed, unable to guess the module")
+ return None
builder.scan()
builder.analyze()
builder.serialize()
if glob.glob("../libexslt/exslt.c") != [] :
extra = docBuilder("libexslt", ["../libexslt"], ["libexslt.h"])
- extra.scan()
- extra.analyze()
- extra.serialize()
+ extra.scan()
+ extra.analyze()
+ extra.serialize()
return builder
#
@@ -2142,4 +2148,4 @@ if __name__ == "__main__":
debug = 1
parse(sys.argv[1])
else:
- rebuild()
+ rebuild()
diff --git a/doc/architecture.html b/doc/architecture.html
index 054623d..62a922f 100644
--- a/doc/architecture.html
+++ b/doc/architecture.html
@@ -8,7 +8,8 @@ H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>libxml2 architecture</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>libxml2 architecture</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Libxml2 is made of multiple components; some of them are optional, and
-most of the block interfaces are public. The main components are:</p><ul><li>an Input/Output layer</li>
+most of the block interfaces are public. The main components are:</p><ul>
+ <li>an Input/Output layer</li>
<li>FTP and HTTP client layers (optional)</li>
<li>an Internationalization layer managing the encodings support</li>
<li>a URI module</li>
diff --git a/doc/bugs.html b/doc/bugs.html
index 6b29700..55ff296 100644
--- a/doc/bugs.html
+++ b/doc/bugs.html
@@ -31,7 +31,8 @@ likely to be answered if they made it to the list, <strong>DO NOT</strong>
post to the list from an email address where such legal requirements are
automatically added, get private paying support if you can't share
information.</p><p>Check the following <strong><span style="color: #FF0000">before
-posting</span></strong>:</p><ul><li>Read the <a href="FAQ.html">FAQ</a> and <a href="search.php">use the
+posting</span></strong>:</p><ul>
+ <li>Read the <a href="FAQ.html">FAQ</a> and <a href="search.php">use the
search engine</a> to get information related to your problem.</li>
<li>Make sure you are <a href="ftp://xmlsoft.org/libxml2/">using a recent
version</a>, and that the problem still shows up in a recent version.</li>
@@ -46,7 +47,8 @@ posting</span></strong>:</p><ul><li>Read the <a href="FAQ.html">FAQ</a> and <a h
</ul><p>Then send the bug with associated information to reproduce it to the <a href="mailto:xml@gnome.org">xml@gnome.org</a> list; if it's really libxml
related I will approve it. Please do not send mail to me directly, it makes
things really hard to track and in some cases I am not the best person to
-answer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul><li>Support or help <span style="color: #E50000">requests MUST be sent to
+answer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul>
+ <li>Support or help <span style="color: #E50000">requests MUST be sent to
the list or on bugzilla</span> in case of problems, so that the Question
and Answers can be shared publicly. Failing to do so carries the implicit
message "I want free support but I don't want to share the benefits with
diff --git a/doc/catalog.html b/doc/catalog.html
index f00c76e..3d5bbe1 100644
--- a/doc/catalog.html
+++ b/doc/catalog.html
@@ -7,7 +7,8 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Catalog support</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Catalog support</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol><li><a href="General2">General overview</a></li>
+</style><title>Catalog support</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Catalog support</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol>
+ <li><a href="General2">General overview</a></li>
<li><a href="#definition">The definition</a></li>
<li><a href="#Simple">Using catalogs</a></li>
<li><a href="#Some">Some examples</a></li>
@@ -22,7 +23,8 @@ A:link, A:visited, A:active { text-decoration: underline }
is inserted between the moment the reference is recognized by the software
(XML parser, stylesheet processing, or even images referenced for inclusion
in a rendering) and the time where loading that resource is actually
-started.</p><p>It is basically used for 3 things:</p><ul><li>mapping from "logical" names, the public identifiers and a more
+started.</p><p>It is basically used for 3 things:</p><ul>
+ <li>mapping from "logical" names, the public identifiers and a more
concrete name usable for download (and URI). For example it can associate
the logical name
<p>"-//OASIS//DTD DocBook XML V4.1.2//EN"</p>
@@ -41,7 +43,8 @@ started.</p><p>It is basically used for 3 things:</p><ul><li>mapping from "logic
important feature for any significant deployment of XML or SGML since it
allows to avoid the aleas and delays associated to fetching remote
resources.</li>
-</ul><h3><a name="definition" id="definition">The definitions</a></h3><p>Libxml, as of 2.4.3 implements 2 kind of catalogs:</p><ul><li>the older SGML catalogs, the official spec is SGML Open Technical
+</ul><h3><a name="definition" id="definition">The definitions</a></h3><p>Libxml, as of 2.4.3 implements 2 kind of catalogs:</p><ul>
+ <li>the older SGML catalogs, the official spec is SGML Open Technical
Resolution TR9401:1997, but is better understood by reading <a href="http://www.jclark.com/sp/catalog.htm">the SP Catalog page</a> from
James Clark. This is relatively old and not the preferred mode of
operation of libxml.</li>
@@ -193,7 +196,8 @@ catalog support</a>.</p><p>The header for the catalog interfaces should be inclu
applications really need access to it since it is the default behaviour of
libxml2 (Note: it is possible to completely override libxml2 default catalog
by using <a href="html/libxml-parser.html">xmlSetExternalEntityLoader</a> to
-plug an application specific resolver).</p><p>Basically libxml2 support 2 catalog lists:</p><ul><li>the default one, global shared by all the application</li>
+plug an application specific resolver).</p><p>Basically libxml2 support 2 catalog lists:</p><ul>
+ <li>the default one, global shared by all the application</li>
<li>a per-document catalog, this one is built if the document uses the
<code>oasis-xml-catalog</code> PIs to specify its own catalog list, it is
associated to the parser context and destroyed when the parsing context
@@ -224,7 +228,8 @@ provided because this functionality may be useful for client tools.</p><h4>threa
try to avoid troubles in multithreaded environments. The code is now thread
safe assuming that the libxml2 library has been compiled with threads
support.</p><p></p><h3><a name="Other" id="Other">Other resources</a></h3><p>The XML Catalog specification is relatively recent so there isn't much
-literature to point at:</p><ul><li>You can find a good rant from Norm Walsh about <a href="http://www.arbortext.com/Think_Tank/XML_Resources/Issue_Three/issue_three.html">the
+literature to point at:</p><ul>
+ <li>You can find a good rant from Norm Walsh about <a href="http://www.arbortext.com/Think_Tank/XML_Resources/Issue_Three/issue_three.html">the
need for catalogs</a>, it provides a lot of context information even if
I don't agree with everything presented. Norm also wrote a more recent
article <a href="http://wwws.sun.com/software/xml/developers/resolver/article/">XML
diff --git a/doc/contribs.html b/doc/contribs.html
index 061b38d..37a50c9 100644
--- a/doc/contribs.html
+++ b/doc/contribs.html
@@ -7,7 +7,8 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Contributions</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Contributions</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ul><li>Bjorn Reese, William Brack and Thomas Broyer have provided a number of
+</style><title>Contributions</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Contributions</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ul>
+ <li>Bjorn Reese, William Brack and Thomas Broyer have provided a number of
patches, Gary Pennington worked on the validation API, threading support
and Solaris port.</li>
<li>John Fleck helps maintaining the documentation and man pages.</li>
diff --git a/doc/devhelp/Makefile.am b/doc/devhelp/Makefile.am
index 36852f9..dad7975 100644
--- a/doc/devhelp/Makefile.am
+++ b/doc/devhelp/Makefile.am
@@ -1,5 +1,15 @@
-DEVHELP_DIR=$(datadir)/gtk-doc/html/libxml2
-HTML_FILES=index.html general.html $(HTML_MODULES)
+devhelpdir = $(datadir)/gtk-doc/html/libxml2
+
+dist_devhelp_DATA = \
+ libxml2.devhelp \
+ $(HTML_FILES) \
+ $(EXTRA_FORMAT)
+
+HTML_FILES = \
+ general.html \
+ index.html \
+ $(HTML_MODULES)
+
HTML_MODULES= \
libxml2-c14n.html \
libxml2-catalog.html \
@@ -56,18 +66,14 @@ EXTRA_FORMAT= \
up.png \
style.css
-EXTRA_DIST=devhelp.xsl html.xsl libxml2.devhelp $(HTML_FILES) $(EXTRA_FORMAT)
+EXTRA_DIST = devhelp.xsl html.xsl
-all: libxml2.devhelp $(HTML_FILES)
+if REBUILD_DOCS
+rebuild: libxml2.devhelp $(HTML_FILES)
+.PHONY: rebuild
libxml2.devhelp $(HTML_FILES): devhelp.xsl html.xsl $(top_srcdir)/doc/libxml2-api.xml
- -@(echo Rebuilding devhelp files)
-@(if [ -x $(XSLTPROC) ] ; then \
- $(XSLTPROC) --nonet -o $(srcdir)/libxml2.devhelp devhelp.xsl $(top_srcdir)/doc/libxml2-api.xml ; fi );
-
-install-data-local:
- -@MKDIR_P@ $(DESTDIR)$(DEVHELP_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/libxml2.devhelp $(DESTDIR)$(DEVHELP_DIR)
- -@INSTALL@ -m 0644 $(EXTRA_FORMAT:%=$(srcdir)/%) $(DESTDIR)$(DEVHELP_DIR)
- -@INSTALL@ -m 0644 $(HTML_FILES:%=$(srcdir)/%) $(DESTDIR)$(DEVHELP_DIR)
-
+ echo Rebuilding devhelp files ; \
+ $(XSLTPROC) --nonet -o $(srcdir)/libxml2.devhelp $(srcdir)/devhelp.xsl $(top_srcdir)/doc/libxml2-api.xml ; fi );
+endif
diff --git a/doc/devhelp/Makefile.in b/doc/devhelp/Makefile.in
index 2c87ff3..4a86a2d 100644
--- a/doc/devhelp/Makefile.in
+++ b/doc/devhelp/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,7 +13,53 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
+
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -34,32 +79,73 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc/devhelp
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(dist_devhelp_DATA)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(devhelpdir)"
+DATA = $(dist_devhelp_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -96,6 +182,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -140,6 +227,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -151,7 +241,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -176,7 +265,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -209,6 +297,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -282,8 +371,17 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-DEVHELP_DIR = $(datadir)/gtk-doc/html/libxml2
-HTML_FILES = index.html general.html $(HTML_MODULES)
+devhelpdir = $(datadir)/gtk-doc/html/libxml2
+dist_devhelp_DATA = \
+ libxml2.devhelp \
+ $(HTML_FILES) \
+ $(EXTRA_FORMAT)
+
+HTML_FILES = \
+ general.html \
+ index.html \
+ $(HTML_MODULES)
+
HTML_MODULES = \
libxml2-c14n.html \
libxml2-catalog.html \
@@ -340,7 +438,7 @@ EXTRA_FORMAT = \
up.png \
style.css
-EXTRA_DIST = devhelp.xsl html.xsl libxml2.devhelp $(HTML_FILES) $(EXTRA_FORMAT)
+EXTRA_DIST = devhelp.xsl html.xsl
all: all-am
.SUFFIXES:
@@ -380,11 +478,32 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+install-dist_devhelpDATA: $(dist_devhelp_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(dist_devhelp_DATA)'; test -n "$(devhelpdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(devhelpdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(devhelpdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devhelpdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(devhelpdir)" || exit $$?; \
+ done
+
+uninstall-dist_devhelpDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(dist_devhelp_DATA)'; test -n "$(devhelpdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(devhelpdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
+
+cscope cscopelist:
distdir: $(DISTFILES)
@@ -419,8 +538,11 @@ distdir: $(DISTFILES)
done
check-am: all-am
check: check-am
-all-am: Makefile
+all-am: Makefile $(DATA)
installdirs:
+ for dir in "$(DESTDIR)$(devhelpdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -431,10 +553,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -466,7 +593,7 @@ info: info-am
info-am:
-install-data-am: install-data-local
+install-data-am: install-dist_devhelpDATA
install-dvi: install-dvi-am
@@ -510,35 +637,31 @@ ps: ps-am
ps-am:
-uninstall-am:
+uninstall-am: uninstall-dist_devhelpDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-data-local install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am
-
-
-all: libxml2.devhelp $(HTML_FILES)
-
-libxml2.devhelp $(HTML_FILES): devhelp.xsl html.xsl $(top_srcdir)/doc/libxml2-api.xml
- -@(echo Rebuilding devhelp files)
- -@(if [ -x $(XSLTPROC) ] ; then \
- $(XSLTPROC) --nonet -o $(srcdir)/libxml2.devhelp devhelp.xsl $(top_srcdir)/doc/libxml2-api.xml ; fi );
-
-install-data-local:
- -@MKDIR_P@ $(DESTDIR)$(DEVHELP_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/libxml2.devhelp $(DESTDIR)$(DEVHELP_DIR)
- -@INSTALL@ -m 0644 $(EXTRA_FORMAT:%=$(srcdir)/%) $(DESTDIR)$(DEVHELP_DIR)
- -@INSTALL@ -m 0644 $(HTML_FILES:%=$(srcdir)/%) $(DESTDIR)$(DEVHELP_DIR)
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_devhelpDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-dist_devhelpDATA
+
+
+@REBUILD_DOCS_TRUE@rebuild: libxml2.devhelp $(HTML_FILES)
+@REBUILD_DOCS_TRUE@.PHONY: rebuild
+
+@REBUILD_DOCS_TRUE@libxml2.devhelp $(HTML_FILES): devhelp.xsl html.xsl $(top_srcdir)/doc/libxml2-api.xml
+@REBUILD_DOCS_TRUE@ -@(if [ -x $(XSLTPROC) ] ; then \
+@REBUILD_DOCS_TRUE@ echo Rebuilding devhelp files ; \
+@REBUILD_DOCS_TRUE@ $(XSLTPROC) --nonet -o $(srcdir)/libxml2.devhelp $(srcdir)/devhelp.xsl $(top_srcdir)/doc/libxml2-api.xml ; fi );
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/doc/devhelp/general.html b/doc/devhelp/general.html
index 6122ffe..68f9380 100644
--- a/doc/devhelp/general.html
+++ b/doc/devhelp/general.html
@@ -33,6 +33,6 @@
<h2>
<span class="refentrytitle">libxml2 API Modules</span>
</h2>
- <p><a href="libxml2-DOCBparser.html">DOCBparser</a> - old DocBook SGML parser<br/><a href="libxml2-HTMLparser.html">HTMLparser</a> - interface for an HTML 4.0 non-verifying parser<br/><a href="libxml2-HTMLtree.html">HTMLtree</a> - specific APIs to process HTML tree, especially serialization<br/><a href="libxml2-SAX.html">SAX</a> - Old SAX version 1 handler, deprecated<br/><a href="libxml2-SAX2.html">SAX2</a> - SAX2 parser interface used to build the DOM tree<br/><a href="libxml2-c14n.html">c14n</a> - Provide Canonical XML and Exclusive XML Canonicalization<br/><a href="libxml2-catalog.html">catalog</a> - interfaces to the Catalog handling system<br/><a href="libxml2-chvalid.html">chvalid</a> - Unicode character range checking<br/><a href="libxml2-debugXML.html">debugXML</a> - Tree debugging APIs<br/><a href="libxml2-dict.html">dict</a> - string dictionnary<br/><a href="libxml2-encoding.html">encoding</a> - interface for the encoding conversion functions<br/><a href="libxml2-entities.html">entities</a> - interface for the XML entities handling<br/><a href="libxml2-globals.html">globals</a> - interface for all global variables of the library<br/><a href="libxml2-hash.html">hash</a> - Chained hash tables<br/><a href="libxml2-list.html">list</a> - lists interfaces<br/><a href="libxml2-nanoftp.html">nanoftp</a> - minimal FTP implementation<br/><a href="libxml2-nanohttp.html">nanohttp</a> - minimal HTTP implementation<br/><a href="libxml2-parser.html">parser</a> - the core parser module<br/><a href="libxml2-parserInternals.html">parserInternals</a> - internals routines exported by the parser.<br/><a href="libxml2-pattern.html">pattern</a> - pattern expression handling<br/><a href="libxml2-relaxng.html">relaxng</a> - implementation of the Relax-NG validation<br/><a href="libxml2-schemasInternals.html">schemasInternals</a> - internal interfaces for XML Schemas<br/><a href="libxml2-schematron.html">schematron</a> - XML Schemastron implementation<br/><a href="libxml2-threads.html">threads</a> - interfaces for thread handling<br/><a href="libxml2-tree.html">tree</a> - interfaces for tree manipulation<br/><a href="libxml2-uri.html">uri</a> - library of generic URI related routines<br/><a href="libxml2-valid.html">valid</a> - The DTD validation<br/><a href="libxml2-xinclude.html">xinclude</a> - implementation of XInclude<br/><a href="libxml2-xlink.html">xlink</a> - unfinished XLink detection module<br/><a href="libxml2-xmlIO.html">xmlIO</a> - interface for the I/O interfaces used by the parser<br/><a href="libxml2-xmlautomata.html">xmlautomata</a> - API to build regexp automata<br/><a href="libxml2-xmlerror.html">xmlerror</a> - error handling<br/><a href="libxml2-xmlexports.html">xmlexports</a> - macros for marking symbols as exportable/importable.<br/><a href="libxml2-xmlmemory.html">xmlmemory</a> - interface for the memory allocator<br/><a href="libxml2-xmlmodule.html">xmlmodule</a> - dynamic module loading<br/><a href="libxml2-xmlreader.html">xmlreader</a> - the XMLReader implementation<br/><a href="libxml2-xmlregexp.html">xmlregexp</a> - regular expressions handling<br/><a href="libxml2-xmlsave.html">xmlsave</a> - the XML document serializer<br/><a href="libxml2-xmlschemas.html">xmlschemas</a> - incomplete XML Schemas structure implementation<br/><a href="libxml2-xmlschemastypes.html">xmlschemastypes</a> - implementation of XML Schema Datatypes<br/><a href="libxml2-xmlstring.html">xmlstring</a> - set of routines to process strings<br/><a href="libxml2-xmlunicode.html">xmlunicode</a> - Unicode character APIs<br/><a href="libxml2-xmlversion.html">xmlversion</a> - compile-time version informations<br/><a href="libxml2-xmlwriter.html">xmlwriter</a> - text writing API for XML<br/><a href="libxml2-xpath.html">xpath</a> - XML Path Language implementation<br/><a href="libxml2-xpathInternals.html">xpathInternals</a> - internal interfaces for XML Path Language implementation<br/><a href="libxml2-xpointer.html">xpointer</a> - API to handle XML Pointers<br/></p>
+ <p><a href="libxml2-DOCBparser.html">DOCBparser</a> - old DocBook SGML parser<br/><a href="libxml2-HTMLparser.html">HTMLparser</a> - interface for an HTML 4.0 non-verifying parser<br/><a href="libxml2-HTMLtree.html">HTMLtree</a> - specific APIs to process HTML tree, especially serialization<br/><a href="libxml2-SAX.html">SAX</a> - Old SAX version 1 handler, deprecated<br/><a href="libxml2-SAX2.html">SAX2</a> - SAX2 parser interface used to build the DOM tree<br/><a href="libxml2-c14n.html">c14n</a> - Provide Canonical XML and Exclusive XML Canonicalization<br/><a href="libxml2-catalog.html">catalog</a> - interfaces to the Catalog handling system<br/><a href="libxml2-chvalid.html">chvalid</a> - Unicode character range checking<br/><a href="libxml2-debugXML.html">debugXML</a> - Tree debugging APIs<br/><a href="libxml2-dict.html">dict</a> - string dictionnary<br/><a href="libxml2-encoding.html">encoding</a> - interface for the encoding conversion functions<br/><a href="libxml2-entities.html">entities</a> - interface for the XML entities handling<br/><a href="libxml2-globals.html">globals</a> - interface for all global variables of the library<br/><a href="libxml2-hash.html">hash</a> - Chained hash tables<br/><a href="libxml2-list.html">list</a> - lists interfaces<br/><a href="libxml2-nanoftp.html">nanoftp</a> - minimal FTP implementation<br/><a href="libxml2-nanohttp.html">nanohttp</a> - minimal HTTP implementation<br/><a href="libxml2-parser.html">parser</a> - the core parser module<br/><a href="libxml2-parserInternals.html">parserInternals</a> - internals routines and limits exported by the parser.<br/><a href="libxml2-pattern.html">pattern</a> - pattern expression handling<br/><a href="libxml2-relaxng.html">relaxng</a> - implementation of the Relax-NG validation<br/><a href="libxml2-schemasInternals.html">schemasInternals</a> - internal interfaces for XML Schemas<br/><a href="libxml2-schematron.html">schematron</a> - XML Schemastron implementation<br/><a href="libxml2-threads.html">threads</a> - interfaces for thread handling<br/><a href="libxml2-tree.html">tree</a> - interfaces for tree manipulation<br/><a href="libxml2-uri.html">uri</a> - library of generic URI related routines<br/><a href="libxml2-valid.html">valid</a> - The DTD validation<br/><a href="libxml2-xinclude.html">xinclude</a> - implementation of XInclude<br/><a href="libxml2-xlink.html">xlink</a> - unfinished XLink detection module<br/><a href="libxml2-xmlIO.html">xmlIO</a> - interface for the I/O interfaces used by the parser<br/><a href="libxml2-xmlautomata.html">xmlautomata</a> - API to build regexp automata<br/><a href="libxml2-xmlerror.html">xmlerror</a> - error handling<br/><a href="libxml2-xmlexports.html">xmlexports</a> - macros for marking symbols as exportable/importable.<br/><a href="libxml2-xmlmemory.html">xmlmemory</a> - interface for the memory allocator<br/><a href="libxml2-xmlmodule.html">xmlmodule</a> - dynamic module loading<br/><a href="libxml2-xmlreader.html">xmlreader</a> - the XMLReader implementation<br/><a href="libxml2-xmlregexp.html">xmlregexp</a> - regular expressions handling<br/><a href="libxml2-xmlsave.html">xmlsave</a> - the XML document serializer<br/><a href="libxml2-xmlschemas.html">xmlschemas</a> - incomplete XML Schemas structure implementation<br/><a href="libxml2-xmlschemastypes.html">xmlschemastypes</a> - implementation of XML Schema Datatypes<br/><a href="libxml2-xmlstring.html">xmlstring</a> - set of routines to process strings<br/><a href="libxml2-xmlunicode.html">xmlunicode</a> - Unicode character APIs<br/><a href="libxml2-xmlversion.html">xmlversion</a> - compile-time version informations<br/><a href="libxml2-xmlwriter.html">xmlwriter</a> - text writing API for XML<br/><a href="libxml2-xpath.html">xpath</a> - XML Path Language implementation<br/><a href="libxml2-xpathInternals.html">xpathInternals</a> - internal interfaces for XML Path Language implementation<br/><a href="libxml2-xpointer.html">xpointer</a> - API to handle XML Pointers<br/></p>
</body>
</html>
diff --git a/doc/devhelp/libxml2-dict.html b/doc/devhelp/libxml2-dict.html
index 818121d..fd5f6b9 100644
--- a/doc/devhelp/libxml2-dict.html
+++ b/doc/devhelp/libxml2-dict.html
@@ -45,10 +45,12 @@
<h2>Synopsis</h2>
<pre class="synopsis">typedef struct _xmlDict <a href="#xmlDict">xmlDict</a>;
typedef <a href="libxml2-dict.html#xmlDict">xmlDict</a> * <a href="#xmlDictPtr">xmlDictPtr</a>;
+size_t <a href="#xmlDictGetUsage">xmlDictGetUsage</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
int <a href="#xmlDictReference">xmlDictReference</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
void <a href="#xmlDictCleanup">xmlDictCleanup</a> (void);
int <a href="#xmlDictSize">xmlDictSize</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlDictExists">xmlDictExists</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int len);
+size_t <a href="#xmlDictSetLimit">xmlDictSetLimit</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br/> size_t limit);
int <a href="#xmlDictOwns">xmlDictOwns</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlDictQLookup">xmlDictQLookup</a> (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
int <a href="#xmlInitializeDict">xmlInitializeDict</a> (void);
@@ -94,6 +96,10 @@ The content of this structure is not made public by the API.
</pre><p>Free the hash @dict and its contents. The userdata is deallocated with @f if provided.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlDictGetUsage"/>xmlDictGetUsage ()</h3><pre class="programlisting">size_t xmlDictGetUsage (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br/>
+</pre><p>Get how much memory is used by a dictionary for strings Added in 2.9.0</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the amount of strings allocated</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlDictLookup"/>xmlDictLookup ()</h3><pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlDictLookup (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int len)<br/>
</pre><p>Add the @name to the dictionnary @dict if not present.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the userdata</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the name, if -1 it is recomputed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal copy of the name or NULL in case of internal error</td></tr></tbody></table></div></div>
@@ -110,12 +116,16 @@ The content of this structure is not made public by the API.
</pre><p>Increment the <a href="libxml2-SAX.html#reference">reference</a> counter of a dictionary</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlDictSetLimit"/>xmlDictSetLimit ()</h3><pre class="programlisting">size_t xmlDictSetLimit (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br/> size_t limit)<br/>
+</pre><p>Set a size limit for the dictionary Added in 2.9.0</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>limit</tt></i>:</span></td><td>the limit in bytes</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous limit of the dictionary or 0</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlDictSize"/>xmlDictSize ()</h3><pre class="programlisting">int xmlDictSize (<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br/>
</pre><p>Query the number of elements installed in the hash @dict.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements in the dictionnary or -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlInitializeDict"/>xmlInitializeDict ()</h3><pre class="programlisting">int xmlInitializeDict (void)<br/>
-</pre><p>Do the dictionary mutex initialization. this function is not thread safe, initialization should preferably be done once at startup</p>
+</pre><p>Do the dictionary mutex initialization. this function is deprecated</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if initialization was already done, and 1 if that call led to the initialization</td></tr></tbody></table></div></div>
<hr/>
</div>
diff --git a/doc/devhelp/libxml2-entities.html b/doc/devhelp/libxml2-entities.html
index 0d0effb..3262c40 100644
--- a/doc/devhelp/libxml2-entities.html
+++ b/doc/devhelp/libxml2-entities.html
@@ -49,7 +49,7 @@ typedef <a href="libxml2-entities.html#xmlEntitiesTable">xmlEntitiesTable</a> *
<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlAddDocEntity">xmlAddDocEntity</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int type, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlNewEntity">xmlNewEntity</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int type, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetDocEntity">xmlGetDocEntity</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetDocEntity">xmlGetDocEntity</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetDtdEntity">xmlGetDtdEntity</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlAddDtdEntity">xmlAddDtdEntity</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int type, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> <a href="#xmlCopyEntitiesTable">xmlCopyEntitiesTable</a> (<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table);
@@ -60,7 +60,7 @@ void <a href="#xmlDumpEntityDecl">xmlDumpEntityDecl</a> (<a href="libxml2-tree.
void <a href="#xmlCleanupPredefinedEntities">xmlCleanupPredefinedEntities</a> (void);
<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> <a href="#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a> (void);
const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeEntities">xmlEncodeEntities</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input);
<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetPredefinedEntity">xmlGetPredefinedEntity</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
void <a href="#xmlInitializePredefinedEntities">xmlInitializePredefinedEntities</a> (void);
</pre>
@@ -128,7 +128,7 @@ The content of this structure is not made public by the API.
</pre><p>Do a global encoding of a string, replacing the predefined entities and non ASCII values with their entities and CharRef counterparts. Contrary to xmlEncodeEntities, this routine is reentrant, and result must be deallocated.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document containing the string</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>A string to convert to XML.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>A newly allocated string with the substitution done.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlEncodeSpecialChars"/>xmlEncodeSpecialChars ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlEncodeSpecialChars (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlEncodeSpecialChars"/>xmlEncodeSpecialChars ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlEncodeSpecialChars (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input)<br/>
</pre><p>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document containing the string</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>A string to convert to XML.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>A newly allocated string with the substitution done.</td></tr></tbody></table></div></div>
<hr/>
@@ -136,7 +136,7 @@ The content of this structure is not made public by the API.
</pre><p>Deallocate the memory used by an entities hash table.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An entity table</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetDocEntity"/>xmlGetDocEntity ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> xmlGetDocEntity (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetDocEntity"/>xmlGetDocEntity ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> xmlGetDocEntity (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
</pre><p>Do an entity lookup in the document entity hash table and</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document referencing the entity</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the entity name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the corresponding entity, otherwise a lookup is done in the predefined entities too. Returns A pointer to the entity structure or NULL if not found.</td></tr></tbody></table></div></div>
<hr/>
diff --git a/doc/devhelp/libxml2-parser.html b/doc/devhelp/libxml2-parser.html
index 6c66e5f..357c14a 100644
--- a/doc/devhelp/libxml2-parser.html
+++ b/doc/devhelp/libxml2-parser.html
@@ -309,7 +309,8 @@ void <a href="#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a> (<a hr
<a name="XML_PARSE_NOBASEFIX">XML_PARSE_NOBASEFIX</a> = 262144 /* do not fixup XINCLUDE xml:base uris */
<a name="XML_PARSE_HUGE">XML_PARSE_HUGE</a> = 524288 /* relax any hardcoded limit from the parser */
<a name="XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> = 1048576 /* parse using SAX2 interface before 2.7.0 */
- <a name="XML_PARSE_IGNORE_ENC">XML_PARSE_IGNORE_ENC</a> = 2097152 /* ignore internal document encoding hint */
+ <a name="XML_PARSE_IGNORE_ENC">XML_PARSE_IGNORE_ENC</a> = 2097152 /* ignore internal document encoding hint */
+ <a name="XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> = 4194304 /* Store big lines numbers in text PSVI field */
};
</pre><p/>
</div>
@@ -661,11 +662,11 @@ void <a href="#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a> (<a hr
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlParserInputGrow"/>xmlParserInputGrow ()</h3><pre class="programlisting">int xmlParserInputGrow (<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br/> int len)<br/>
</pre><p>This function increase the input for the parser. It tries to preserve pointers to the input buffer, and keep already read data</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the amount of char read, or -1 in case of error, 0 indicate the end of this entity</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlParserInputRead"/>xmlParserInputRead ()</h3><pre class="programlisting">int xmlParserInputRead (<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br/> int len)<br/>
-</pre><p>This function refresh the input for the parser. It doesn't try to preserve pointers to the input buffer, and discard already read data</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity</td></tr></tbody></table></div></div>
+</pre><p>This function was internal and is deprecated.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 as this is an error to use it.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlPedanticParserDefault"/>xmlPedanticParserDefault ()</h3><pre class="programlisting">int xmlPedanticParserDefault (int val)<br/>
</pre><p>Set and return the previous value for enabling pedantic warnings.</p>
diff --git a/doc/devhelp/libxml2-parserInternals.html b/doc/devhelp/libxml2-parserInternals.html
index d56ab17..915ad5b 100644
--- a/doc/devhelp/libxml2-parserInternals.html
+++ b/doc/devhelp/libxml2-parserInternals.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>parserInternals: internals routines exported by the parser.</title>
+ <title>parserInternals: internals routines and limits exported by the parser.</title>
<meta name="generator" content="Libxml2 devhelp stylesheet"/>
<link rel="start" href="index.html" title="libxml2 Reference Manual"/>
<link rel="up" href="general.html" title="API"/>
@@ -38,7 +38,7 @@
<h2>
<span class="refentrytitle">parserInternals</span>
</h2>
- <p>parserInternals - internals routines exported by the parser.</p>
+ <p>parserInternals - internals routines and limits exported by the parser.</p>
<p>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </p>
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
@@ -55,14 +55,17 @@
#define <a href="#IS_LETTER">IS_LETTER</a>(c);
#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a>(c);
#define <a href="#MOVETO_STARTTAG">MOVETO_STARTTAG</a>(p);
+#define <a href="#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a>;
#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a>(c);
#define <a href="#IS_DIGIT">IS_DIGIT</a>(c);
+#define <a href="#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a>;
#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a>;
#define <a href="#MOVETO_ENDTAG">MOVETO_ENDTAG</a>(p);
#define <a href="#SKIP_EOL">SKIP_EOL</a>(p);
#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a>(c);
#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a>(c);
#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a>(c);
+#define <a href="#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a>;
#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a>;
#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a>;
#define <a href="#IS_COMBINING">IS_COMBINING</a>(c);
@@ -263,12 +266,24 @@ void <a href="#xmlParseEntityDecl">xmlParseEntityDecl</a> (<a href="libxml2-tre
</pre><p>Skips the end of line chars.</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>p</tt></i>:</span></td><td>and UTF8 string pointer</td></tr></tbody></table></div>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="XML_MAX_DICTIONARY_LIMIT">Macro </a>XML_MAX_DICTIONARY_LIMIT</h3><pre class="programlisting">#define <a href="#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a>;
+</pre><p>Maximum size allowed by the parser for a dictionary by default This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Introduced in 2.9.0</p>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="XML_MAX_LOOKUP_LIMIT">Macro </a>XML_MAX_LOOKUP_LIMIT</h3><pre class="programlisting">#define <a href="#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a>;
+</pre><p>Maximum size allowed by the parser for ahead lookup This is an upper boundary enforced by the parser to avoid bad behaviour on "unfriendly' content Introduced in 2.9.0</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="XML_MAX_NAMELEN">Macro </a>XML_MAX_NAMELEN</h3><pre class="programlisting">#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a>;
</pre><p>Identifiers can be longer, but this will be more costly at runtime.</p>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="XML_MAX_NAME_LENGTH">Macro </a>XML_MAX_NAME_LENGTH</h3><pre class="programlisting">#define <a href="#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a>;
+</pre><p>Maximum size allowed for a markup identitier This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Note that with the use of parsing dictionaries overriding the limit may result in more runtime memory usage in face of "unfriendly' content Introduced in 2.9.0</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="XML_MAX_TEXT_LENGTH">Macro </a>XML_MAX_TEXT_LENGTH</h3><pre class="programlisting">#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a>;
-</pre><p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it.</p>
+</pre><p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Introduced in 2.9.0</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="XML_SUBSTITUTE_BOTH">Macro </a>XML_SUBSTITUTE_BOTH</h3><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a>;
diff --git a/doc/devhelp/libxml2-relaxng.html b/doc/devhelp/libxml2-relaxng.html
index a89b58f..23905d0 100644
--- a/doc/devhelp/libxml2-relaxng.html
+++ b/doc/devhelp/libxml2-relaxng.html
@@ -262,7 +262,7 @@ The content of this structure is not made public by the API.
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlRelaxNGValidatePushCData"/>xmlRelaxNGValidatePushCData ()</h3><pre class="programlisting">int xmlRelaxNGValidatePushCData (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br/> int len)<br/>
</pre><p>check the CData parsed for validation in the current stack</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the RelaxNG validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the lenght of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or -1 otherwise</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the RelaxNG validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or -1 otherwise</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlRelaxNGValidatePushElement"/>xmlRelaxNGValidatePushElement ()</h3><pre class="programlisting">int xmlRelaxNGValidatePushElement (<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br/>
</pre><p>Push a new element start on the RelaxNG validation stack.</p>
diff --git a/doc/devhelp/libxml2-tree.html b/doc/devhelp/libxml2-tree.html
index af1f654..3cc28c7 100644
--- a/doc/devhelp/libxml2-tree.html
+++ b/doc/devhelp/libxml2-tree.html
@@ -44,15 +44,16 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">#define <a href="#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a>;
-#define <a href="#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a>;
+#define <a href="#BASE_BUFFER_SIZE">BASE_BUFFER_SIZE</a>;
#define <a href="#XML_XML_ID">XML_XML_ID</a>;
#define <a href="#xmlRootNode">xmlRootNode</a>;
#define <a href="#XML_GET_LINE">XML_GET_LINE</a>;
#define <a href="#XML_GET_CONTENT">XML_GET_CONTENT</a>;
#define <a href="#xmlChildrenNode">xmlChildrenNode</a>;
-#define <a href="#BASE_BUFFER_SIZE">BASE_BUFFER_SIZE</a>;
+#define <a href="#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a>;
+#define <a href="#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a>;
typedef struct _xmlNs <a href="#xmlNs">xmlNs</a>;
-typedef <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * <a href="#xmlBufferPtr">xmlBufferPtr</a>;
+typedef struct _xmlElementContent <a href="#xmlElementContent">xmlElementContent</a>;
typedef <a href="libxml2-tree.html#xmlEnumeration">xmlEnumeration</a> * <a href="#xmlEnumerationPtr">xmlEnumerationPtr</a>;
typedef struct _xmlBuffer <a href="#xmlBuffer">xmlBuffer</a>;
typedef <a href="libxml2-tree.html#xmlParserInput">xmlParserInput</a> * <a href="#xmlParserInputPtr">xmlParserInputPtr</a>;
@@ -63,7 +64,7 @@ typedef <a href="libxml2-tree.html#xmlElementType">xmlElementType</a> <a href="#
typedef enum <a href="#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a>;
typedef struct _xmlNode <a href="#xmlNode">xmlNode</a>;
typedef <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * <a href="#xmlDocPtr">xmlDocPtr</a>;
-typedef struct _xmlElementContent <a href="#xmlElementContent">xmlElementContent</a>;
+typedef <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * <a href="#xmlBufferPtr">xmlBufferPtr</a>;
typedef <a href="libxml2-tree.html#xmlDOMWrapCtxt">xmlDOMWrapCtxt</a> * <a href="#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a>;
typedef <a href="libxml2-tree.html#xmlRef">xmlRef</a> * <a href="#xmlRefPtr">xmlRefPtr</a>;
typedef struct _xmlParserInputBuffer <a href="#xmlParserInputBuffer">xmlParserInputBuffer</a>;
@@ -73,6 +74,7 @@ typedef <a href="libxml2-tree.html#xmlNode">xmlNode</a> * <a href="#xmlNodePtr">
typedef struct _xmlParserCtxt <a href="#xmlParserCtxt">xmlParserCtxt</a>;
typedef <a href="libxml2-tree.html#xmlDtd">xmlDtd</a> * <a href="#xmlDtdPtr">xmlDtdPtr</a>;
typedef enum <a href="#xmlAttributeDefault">xmlAttributeDefault</a>;
+typedef struct _xmlBuf <a href="#xmlBuf">xmlBuf</a>;
typedef struct _xmlNotation <a href="#xmlNotation">xmlNotation</a>;
typedef enum <a href="#xmlElementType">xmlElementType</a>;
typedef struct _xmlEntity <a href="#xmlEntity">xmlEntity</a>;
@@ -81,6 +83,7 @@ typedef <a href="libxml2-tree.html#xmlAttribute">xmlAttribute</a> * <a href="#xm
typedef enum <a href="#xmlElementTypeVal">xmlElementTypeVal</a>;
typedef <a href="libxml2-tree.html#xmlNotation">xmlNotation</a> * <a href="#xmlNotationPtr">xmlNotationPtr</a>;
typedef <a href="libxml2-tree.html#xmlElement">xmlElement</a> * <a href="#xmlElementPtr">xmlElementPtr</a>;
+typedef <a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * <a href="#xmlBufPtr">xmlBufPtr</a>;
typedef enum <a href="#xmlElementContentOccur">xmlElementContentOccur</a>;
typedef <a href="libxml2-tree.html#xmlAttr">xmlAttr</a> * <a href="#xmlAttrPtr">xmlAttrPtr</a>;
typedef struct _xmlDoc <a href="#xmlDoc">xmlDoc</a>;
@@ -102,13 +105,14 @@ typedef struct _xmlDtd <a href="#xmlDtd">xmlDtd</a>;
typedef struct _xmlAttribute <a href="#xmlAttribute">xmlAttribute</a>;
typedef <a href="libxml2-tree.html#xmlOutputBuffer">xmlOutputBuffer</a> * <a href="#xmlOutputBufferPtr">xmlOutputBufferPtr</a>;
typedef <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * <a href="#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a>;
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNode">xmlDocCopyNode</a> (const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int extended);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNode">xmlDocCopyNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int extended);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocRawNode">xmlNewDocRawNode</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetProp">xmlGetProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufContent">xmlBufContent</a> (const <a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * buf);
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewNsPropEatName">xmlNewNsPropEatName</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringGetNodeList">xmlStringGetNodeList</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewCDataBlock">xmlNewCDataBlock</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
void <a href="#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetBase">xmlNodeGetBase</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetBase">xmlNodeGetBase</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
void <a href="#xmlBufferEmpty">xmlBufferEmpty</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBuildQName">xmlBuildQName</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * memory, <br/> int len);
int <a href="#xmlValidateNMToken">xmlValidateNMToken</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int space);
@@ -116,21 +120,22 @@ int <a href="#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a> (const char * file
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddSibling">xmlAddSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> <a href="#xmlBufferCreate">xmlBufferCreate</a> (void);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocFragment">xmlNewDocFragment</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocGetRootElement">xmlDocGetRootElement</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringGetNodeList">xmlStringGetNodeList</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocGetRootElement">xmlDocGetRootElement</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetProp">xmlGetProp</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
int <a href="#xmlValidateName">xmlValidateName</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int space);
-void <a href="#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a> (<a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufEnd">xmlBufEnd</a> (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf);
int <a href="#xmlValidateQName">xmlValidateQName</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int space);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasNsProp">xmlHasNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
+<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasNsProp">xmlHasNsProp</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddPrevSibling">xmlAddPrevSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
int <a href="#xmlBufferAddHead">xmlBufferAddHead</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/> int len);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewPI">xmlNewPI</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
void <a href="#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br/> int * doc_txt_len, <br/> const char * txt_encoding, <br/> int format);
+<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlSetProp">xmlSetProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
unsigned long <a href="#xmlChildElementCount">xmlChildElementCount</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
void <a href="#xmlElemDump">xmlElemDump</a> (FILE * f, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
int <a href="#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a> (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/> const char * encoding, <br/> int format);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlGetIntSubset">xmlGetIntSubset</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int <a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
+<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlGetIntSubset">xmlGetIntSubset</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc);
+int <a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNextElementSibling">xmlNextElementSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
void <a href="#xmlBufferWriteChar">xmlBufferWriteChar</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const char * string);
void <a href="#xmlBufferFree">xmlBufferFree</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
@@ -151,37 +156,38 @@ int <a href="#xmlValidateNCName">xmlValidateNCName</a> (const <a href="libxml2-
int <a href="#xmlGetCompressMode">xmlGetCompressMode</a> (void);
int <a href="#xmlNodeDump">xmlNodeDump</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> int level, <br/> int format);
<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> <a href="#xmlBufferCreateSize">xmlBufferCreateSize</a> (size_t size);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetString">xmlNodeListGetString</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br/> int inLine);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetString">xmlNodeListGetString</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br/> int inLine);
void <a href="#xmlSetCompressMode">xmlSetCompressMode</a> (int mode);
void <a href="#xmlSetTreeDoc">xmlSetTreeDoc</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
int <a href="#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a> (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br/> int options);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNodeList">xmlCopyNodeList</a> (const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNodeList">xmlCopyNodeList</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddChildList">xmlAddChildList</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNodePath">xmlGetNodePath</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNodePath">xmlGetNodePath</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
void <a href="#xmlFreePropList">xmlFreePropList</a> (<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
void <a href="#xmlNodeAddContent">xmlNodeAddContent</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
int <a href="#xmlUnsetNsProp">xmlUnsetNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlFirstElementChild">xmlFirstElementChild</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddNextSibling">xmlAddNextSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
-int <a href="#xmlIsBlankNode">xmlIsBlankNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
+int <a href="#xmlIsBlankNode">xmlIsBlankNode</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlNewGlobalNs">xmlNewGlobalNs</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
int <a href="#xmlBufferDump">xmlBufferDump</a> (FILE * file, <br/> <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetContent">xmlNodeGetContent</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetContent">xmlNodeGetContent</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> <a href="#xmlCopyDoc">xmlCopyDoc</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int recursive);
<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> <a href="#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a> (void);
void <a href="#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br/> int * doc_txt_len, <br/> const char * txt_encoding);
+int <a href="#xmlBufGetNodeContent">xmlBufGetNodeContent</a> (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlTextMerge">xmlTextMerge</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> first, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> second);
void <a href="#xmlDocDumpMemory">xmlDocDumpMemory</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br/> int * size);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocPI">xmlNewDocPI</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
void <a href="#xmlFreeNs">xmlFreeNs</a> (<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur);
int <a href="#xmlDocDump">xmlDocDump</a> (FILE * f, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
void <a href="#xmlFreeProp">xmlFreeProp</a> (<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNoNsProp">xmlGetNoNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNoNsProp">xmlGetNoNsProp</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlSplitQName2">xmlSplitQName2</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** prefix);
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewProp">xmlNewProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
int <a href="#xmlTextConcat">xmlTextConcat</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
-int <a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
+int <a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
int <a href="#xmlBufferShrink">xmlBufferShrink</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> unsigned int len);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlPreviousElementSibling">xmlPreviousElementSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
void <a href="#xmlNodeSetContentLen">xmlNodeSetContentLen</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
@@ -190,18 +196,20 @@ void <a href="#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a> (<a hr
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlCopyProp">xmlCopyProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br/> <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlReplaceNode">xmlReplaceNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> old, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
void <a href="#xmlSetDocCompressMode">xmlSetDocCompressMode</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int mode);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNode">xmlCopyNode</a> (const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> int extended);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNode">xmlCopyNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> int extended);
void <a href="#xmlUnlinkNode">xmlUnlinkNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlSplitQName3">xmlSplitQName3</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int * len);
typedef <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a> (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsName, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsPrefix);
+size_t <a href="#xmlBufUse">xmlBufUse</a> (const <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocSetRootElement">xmlDocSetRootElement</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> root);
-long <a href="#xmlGetLineNo">xmlGetLineNo</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufferContent">xmlBufferContent</a> (const <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
+long <a href="#xmlGetLineNo">xmlGetLineNo</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
+const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufferContent">xmlBufferContent</a> (const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf);
int <a href="#xmlRemoveProp">xmlRemoveProp</a> (<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlLastElementChild">xmlLastElementChild</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetLang">xmlNodeGetLang</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-int <a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNsProp">xmlGetNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetLang">xmlNodeGetLang</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
+int <a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc);
+size_t <a href="#xmlBufNodeDump">xmlBufNodeDump</a> (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> int level, <br/> int format);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNsProp">xmlGetNsProp</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewDocProp">xmlNewDocProp</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
void <a href="#xmlFreeNode">xmlFreeNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewNsProp">xmlNewNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
@@ -210,12 +218,12 @@ void <a href="#xmlDOMWrapFreeCtxt">xmlDOMWrapFreeCtxt</a> (<a href="libxml2-tre
void <a href="#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewChild">xmlNewChild</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlSearchNs">xmlSearchNs</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int len);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int len);
int <a href="#xmlSaveFormatFile">xmlSaveFormatFile</a> (const char * filename, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/> int format);
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlCopyPropList">xmlCopyPropList</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br/> <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
int <a href="#xmlDocFormatDump">xmlDocFormatDump</a> (FILE * f, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/> int format);
void <a href="#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> int val);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasProp">xmlHasProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasProp">xmlHasProp</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
int <a href="#xmlBufferCat">xmlBufferCat</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlCreateIntSubset">xmlCreateIntSubset</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> <a href="#xmlNewDoc">xmlNewDoc</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * version);
@@ -225,32 +233,33 @@ int <a href="#xmlBufferCat">xmlBufferCat</a> (<a href="libxml2-tree.html#xmlBu
int <a href="#xmlBufferResize">xmlBufferResize</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> unsigned int size);
void <a href="#xmlNodeSetBase">xmlNodeSetBase</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * uri);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewComment">xmlNewComment</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int <a href="#xmlBufferLength">xmlBufferLength</a> (const <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
+int <a href="#xmlBufferLength">xmlBufferLength</a> (const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewText">xmlNewText</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
int <a href="#xmlUnsetProp">xmlUnsetProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
<a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> <a href="#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a> (void);
int <a href="#xmlSaveFile">xmlSaveFile</a> (const char * filename, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNodeList">xmlDocCopyNodeList</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNodeList">xmlDocCopyNodeList</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
void <a href="#xmlSetNs">xmlSetNs</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns);
<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlNewNs">xmlNewNs</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
int <a href="#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a> (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> int options);
void <a href="#xmlAttrSerializeTxtContent">xmlAttrSerializeTxtContent</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlCopyDtd">xmlCopyDtd</a> (<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocText">xmlNewDocText</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetRawString">xmlNodeListGetRawString</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br/> int inLine);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocText">xmlNewDocText</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
+<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetRawString">xmlNodeListGetRawString</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br/> int inLine);
<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> <a href="#xmlBufferCreateStatic">xmlBufferCreateStatic</a> (void * mem, <br/> size_t size);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewReference">xmlNewReference</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewReference">xmlNewReference</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
int <a href="#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a> (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br/> int options);
int <a href="#xmlBufferCCat">xmlBufferCCat</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const char * str);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> * <a href="#xmlGetNsList">xmlGetNsList</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
+<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> * <a href="#xmlGetNsList">xmlGetNsList</a> (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
int <a href="#xmlBufferGrow">xmlBufferGrow</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> unsigned int len);
-int <a href="#xmlNodeIsText">xmlNodeIsText</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlSetProp">xmlSetProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
+int <a href="#xmlNodeIsText">xmlNodeIsText</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
+void <a href="#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a> (<a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme);
int <a href="#xmlIsXHTML">xmlIsXHTML</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicID);
void <a href="#xmlNodeSetLang">xmlNodeSetLang</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * lang);
void <a href="#xmlFreeDtd">xmlFreeDtd</a> (<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur);
void <a href="#xmlFreeNodeList">xmlFreeNodeList</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
void <a href="#xmlFreeDoc">xmlFreeDoc</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
+size_t <a href="#xmlBufShrink">xmlBufShrink</a> (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br/> size_t len);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocNode">xmlNewDocNode</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
int <a href="#xmlSaveFileEnc">xmlSaveFileEnc</a> (const char * filename, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/> const char * encoding);
<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlSetNsProp">xmlSetNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
@@ -260,7 +269,7 @@ void <a href="#xmlNodeSetName">xmlNodeSetName</a> (<a href="libxml2-tree.html#
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocTextLen">xmlNewDocTextLen</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlNewDtd">xmlNewDtd</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlGetLastChild">xmlGetLastChild</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlGetLastChild">xmlGetLastChild</a> (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * parent);
</pre>
</div>
<div class="refsect1" lang="en">
@@ -273,6 +282,10 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>default buffer size 4000.</p>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="LIBXML2_NEW_BUFFER">Macro </a>LIBXML2_NEW_BUFFER</h3><pre class="programlisting">#define <a href="#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a>;
+</pre><p>Macro used to express that the API use the new buffers for <a href="libxml2-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a> and xmlOutputBuffer. The change was introduced in 2.9.0.</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="XML_GET_CONTENT">Macro </a>XML_GET_CONTENT</h3><pre class="programlisting">#define <a href="#XML_GET_CONTENT">XML_GET_CONTENT</a>;
</pre><p>Macro to extract the content pointer of a node.</p>
</div>
@@ -371,6 +384,16 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p/>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBuf">Structure </a>xmlBuf</h3><pre class="programlisting">struct _xmlBuf {
+The content of this structure is not made public by the API.
+} xmlBuf;
+</pre><p/>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufPtr">Typedef </a>xmlBufPtr</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * xmlBufPtr;
+</pre><p>A pointer to a buffer structure, the actual structure internals are not public</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlBuffer">Structure </a>xmlBuffer</h3><pre class="programlisting">struct _xmlBuffer {
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content : The buffer content UTF8
unsigned int use : The buffer size used
@@ -592,7 +615,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
struct _xmlEntity * nexte : unused
const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI : the full URI as computed
int owner : does the entity own the childrens
- int checked : was the entity content checked this is also used to count entites * r
+ int checked : was the entity content checked this is also used to count entities *
} xmlEntity;
</pre><p/>
</div>
@@ -688,8 +711,8 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> writecallback
<a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> closecallback
<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder : I18N conversions to UTF-8
- <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer : Local buffer encoded in UTF-8 or ISOLatin
- <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> conv : if encoder != NULL buffer for output
+ <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buffer : Local buffer encoded in UTF-8 or ISOLatin
+ <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> conv : if encoder != NULL buffer for output
int written : total number of byte written
int error
} xmlOutputBuffer;
@@ -789,6 +812,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
int nodeInfoMax : Max depth of the parsing stack
<a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> * nodeInfoTab : array of nodeInfos
int input_id : we need to label inputs
+ unsigned long sizeentcopy : volume of entity copy
} xmlParserCtxt;
</pre><p/>
</div>
@@ -822,8 +846,8 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> readcallback
<a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> closecallback
<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder : I18N conversions to UTF-8
- <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer : Local buffer encoded in UTF-8
- <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> raw : if encoder != NULL buffer for raw input
+ <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buffer : Local buffer encoded in UTF-8
+ <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> raw : if encoder != NULL buffer for raw input
int compressed : -1=unknown, 0=not compressed, 1=compressed
int error
unsigned long rawconsumed : amount consumed from raw
@@ -935,6 +959,30 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Serialize text <a href="libxml2-SAX.html#attribute">attribute</a> values to an xml simple buffer</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> node</td></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>the text content</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufContent"/>xmlBufContent ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlBufContent (const <a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * buf)<br/>
+</pre><p>Function to extract the content of a buffer</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal content</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufEnd"/>xmlBufEnd ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlBufEnd (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf)<br/>
+</pre><p>Function to extract the end of the content of a buffer</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the end of the internal content or NULL in case of error</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufGetNodeContent"/>xmlBufGetNodeContent ()</h3><pre class="programlisting">int xmlBufGetNodeContent (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br/>
+</pre><p>Read the value of a node @cur, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buf with this value</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>a buffer <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a></td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufNodeDump"/>xmlBufNodeDump ()</h3><pre class="programlisting">size_t xmlBufNodeDump (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> int level, <br/> int format)<br/>
+</pre><p>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml2-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written to the buffer, in case of error 0 is returned or @buf stores the error</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufShrink"/>xmlBufShrink ()</h3><pre class="programlisting">size_t xmlBufShrink (<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br/> size_t len)<br/>
+</pre><p>Remove the beginning of an XML buffer. NOTE that this routine behaviour differs from xmlBufferShrink() as it will return 0 on error instead of -1 due to size_t being used as the return type.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to dump</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> to remove</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of byte removed or 0 in case of failure</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufUse"/>xmlBufUse ()</h3><pre class="programlisting">size_t xmlBufUse (const <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf)<br/>
+</pre><p>Function to get the length of a buffer</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the length of data in the internal content</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlBufferAdd"/>xmlBufferAdd ()</h3><pre class="programlisting">int xmlBufferAdd (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/> int len)<br/>
</pre><p>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to dump</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the #xmlChar string</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the number of #xmlChar to add</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div></div>
@@ -951,7 +999,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Append a zero terminated string to an XML buffer.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to add to</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the #xmlChar string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlBufferContent"/>xmlBufferContent ()</h3><pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlBufferContent (const <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufferContent"/>xmlBufferContent ()</h3><pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlBufferContent (const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf)<br/>
</pre><p>Function to extract the content of a buffer</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal content</td></tr></tbody></table></div></div>
<hr/>
@@ -987,7 +1035,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Grow the available space of an XML buffer.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the minimum free size to allocate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new available space or -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlBufferLength"/>xmlBufferLength ()</h3><pre class="programlisting">int xmlBufferLength (const <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlBufferLength"/>xmlBufferLength ()</h3><pre class="programlisting">int xmlBufferLength (const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf)<br/>
</pre><p>Function to get the length of a buffer</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the length of data in the internal content</td></tr></tbody></table></div></div>
<hr/>
@@ -1039,11 +1087,11 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Do a copy of an namespace list.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the first namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNsPtr, or NULL in case of error.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlCopyNode"/>xmlCopyNode ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNode (const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> int extended)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlCopyNode"/>xmlCopyNode ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNode (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> int extended)<br/>
</pre><p>Do a copy of the node.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>extended</tt></i>:</span></td><td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlCopyNodeList"/>xmlCopyNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNodeList (const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlCopyNodeList"/>xmlCopyNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNodeList (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
</pre><p>Do a recursive copy of the node list. Use xmlDocCopyNodeList() if possible to ensure string interning.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the first node in the list.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div></div>
<hr/>
@@ -1060,7 +1108,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document pointer</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the DTD name</td></tr><tr><td><span class="term"><i><tt>ExternalID</tt></i>:</span></td><td>the external (PUBLIC) ID</td></tr><tr><td><span class="term"><i><tt>SystemID</tt></i>:</span></td><td>the system ID</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new DTD structure</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlDOMWrapAdoptNode"/>xmlDOMWrapAdoptNode ()</h3><pre class="programlisting">int xmlDOMWrapAdoptNode (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br/> int options)<br/>
-</pre><p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unliked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml2-SAX.html#attribute">attribute</a> values or element content. NOTE: This function was not intensively tested.</p>
+</pre><p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unlinked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml2-SAX.html#attribute">attribute</a> values or element content. NOTE: This function was not intensively tested.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the optional context for custom processing</td></tr><tr><td><span class="term"><i><tt>sourceDoc</tt></i>:</span></td><td>the optional sourceDoc</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to start with</td></tr><tr><td><span class="term"><i><tt>destDoc</tt></i>:</span></td><td>the destination doc</td></tr><tr><td><span class="term"><i><tt>destParent</tt></i>:</span></td><td>the optional new parent of @node in @destDoc</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>option flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the operation succeeded, 1 if a node of unsupported type was given, 2 if a node of not yet supported type was given and -1 on API/internal errors.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlDOMWrapCloneNode"/>xmlDOMWrapCloneNode ()</h3><pre class="programlisting">int xmlDOMWrapCloneNode (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * resNode, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br/> int deep, <br/> int options)<br/>
@@ -1073,7 +1121,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlDOMWrapNewCtxt"/>xmlDOMWrapNewCtxt ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> xmlDOMWrapNewCtxt (void)<br/>
</pre><p>Allocates and initializes a new DOM-wrapper context.</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> or NULL in case of an internal errror.</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> or NULL in case of an internal error.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlDOMWrapReconcileNamespaces"/>xmlDOMWrapReconcileNamespaces ()</h3><pre class="programlisting">int xmlDOMWrapReconcileNamespaces (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br/> int options)<br/>
</pre><p>Ensures that ns-references point to ns-decls hold on element-nodes. Ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml2-SAX.html#attribute">attribute</a> values or element content. NOTE: This function was not intensively tested.</p>
@@ -1083,11 +1131,11 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Unlinks the given node from its owner. This will substitute ns-references to node-&gt;nsDef for ns-references to doc-&gt;oldNs, thus ensuring the removed branch to be autark wrt ns-references. NOTE: This function was not intensively tested.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a DOM wrapper context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the doc</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to be removed.</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>set of options, unused at the moment</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, 1 if the node is not supported, -1 on API and internal errors.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlDocCopyNode"/>xmlDocCopyNode ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNode (const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int extended)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlDocCopyNode"/>xmlDocCopyNode ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNode (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int extended)<br/>
</pre><p>Do a copy of the node to a given document.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>extended</tt></i>:</span></td><td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlDocCopyNodeList"/>xmlDocCopyNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNodeList (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlDocCopyNodeList"/>xmlDocCopyNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNodeList (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
</pre><p>Do a recursive copy of the node list.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the target document</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the first node in the list.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div></div>
<hr/>
@@ -1115,7 +1163,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Dump an XML document to an open FILE.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE*</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>should formatting spaces been added</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of failure. Note that @format = 1 provide node indenting only if <a href="libxml2-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlDocGetRootElement"/>xmlDocGetRootElement ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocGetRootElement (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlDocGetRootElement"/>xmlDocGetRootElement ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocGetRootElement (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc)<br/>
</pre><p>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the #xmlNodePtr for the root or NULL</td></tr></tbody></table></div></div>
<hr/>
@@ -1171,51 +1219,51 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>get the default compression mode used, ZLIB based.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 (uncompressed) to 9 (max compression)</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetDocCompressMode"/>xmlGetDocCompressMode ()</h3><pre class="programlisting">int xmlGetDocCompressMode (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetDocCompressMode"/>xmlGetDocCompressMode ()</h3><pre class="programlisting">int xmlGetDocCompressMode (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc)<br/>
</pre><p>get the compression ratio for a document, ZLIB based</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 (uncompressed) to 9 (max compression)</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetIntSubset"/>xmlGetIntSubset ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlGetIntSubset (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetIntSubset"/>xmlGetIntSubset ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlGetIntSubset (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc)<br/>
</pre><p>Get the internal subset of a document</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document pointer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the DTD structure or NULL if not found</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetLastChild"/>xmlGetLastChild ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlGetLastChild (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetLastChild"/>xmlGetLastChild ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlGetLastChild (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * parent)<br/>
</pre><p>Search the last child of a node.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last child or NULL if none.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetLineNo"/>xmlGetLineNo ()</h3><pre class="programlisting">long xmlGetLineNo (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
-</pre><p>Get line number of @node. This requires activation of this option before invoking the parser by calling xmlLineNumbersDefault(1)</p>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetLineNo"/>xmlGetLineNo ()</h3><pre class="programlisting">long xmlGetLineNo (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br/>
+</pre><p>Get line number of @node. Try to override the limitation of lines being store in 16 bits ints if <a href="libxml2-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> parser option was used</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>valid node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the line number if successful, -1 otherwise</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetNoNsProp"/>xmlGetNoNsProp ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNoNsProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetNoNsProp"/>xmlGetNoNsProp ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNoNsProp (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
</pre><p>Search and get the value of an <a href="libxml2-SAX.html#attribute">attribute</a> associated to a node This does the entity substitution. This function looks in DTD <a href="libxml2-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off. This function is similar to <a href="libxml2-tree.html#xmlGetProp">xmlGetProp</a> except it will accept only an <a href="libxml2-SAX.html#attribute">attribute</a> in no namespace.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetNodePath"/>xmlGetNodePath ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNodePath (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetNodePath"/>xmlGetNodePath ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNodePath (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br/>
</pre><p>Build a structure based Path for the given node</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new path or NULL in case of error. The caller must free the returned string</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetNsList"/>xmlGetNsList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> * xmlGetNsList (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetNsList"/>xmlGetNsList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> * xmlGetNsList (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br/>
</pre><p>Search all the namespace applying to a given element.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an NULL terminated array of all the #xmlNsPtr found that need to be freed by the caller or NULL if no namespace if defined</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetNsProp"/>xmlGetNsProp ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNsProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetNsProp"/>xmlGetNsProp ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNsProp (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br/>
</pre><p>Search and get the value of an <a href="libxml2-SAX.html#attribute">attribute</a> associated to a node This <a href="libxml2-SAX.html#attribute">attribute</a> has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD <a href="libxml2-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlGetProp"/>xmlGetProp ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlGetProp"/>xmlGetProp ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlGetProp (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
</pre><p>Search and get the value of an <a href="libxml2-SAX.html#attribute">attribute</a> associated to a node This does the entity substitution. This function looks in DTD <a href="libxml2-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off. NOTE: this function acts independently of namespaces associated to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp() for namespace aware processing.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlHasNsProp"/>xmlHasNsProp ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasNsProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlHasNsProp"/>xmlHasNsProp ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasNsProp (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br/>
</pre><p>Search for an <a href="libxml2-SAX.html#attribute">attribute</a> associated to a node This <a href="libxml2-SAX.html#attribute">attribute</a> has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD <a href="libxml2-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off. Note that a namespace of NULL indicates to use the default namespace.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> or the <a href="libxml2-SAX.html#attribute">attribute</a> declaration or NULL if neither was found.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlHasProp"/>xmlHasProp ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlHasProp"/>xmlHasProp ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasProp (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
</pre><p>Search an <a href="libxml2-SAX.html#attribute">attribute</a> associated to a node This function also looks in DTD <a href="libxml2-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#attribute">attribute</a> or the <a href="libxml2-SAX.html#attribute">attribute</a> declaration or NULL if neither was found.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlIsBlankNode"/>xmlIsBlankNode ()</h3><pre class="programlisting">int xmlIsBlankNode (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlIsBlankNode"/>xmlIsBlankNode ()</h3><pre class="programlisting">int xmlIsBlankNode (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br/>
</pre><p>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div></div>
<hr/>
@@ -1275,7 +1323,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Creation of a new node element within a document. @ns and @content are optional (NULL).</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the node name</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content if any</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNewDocText"/>xmlNewDocText ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewDocText (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNewDocText"/>xmlNewDocText ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewDocText (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br/>
</pre><p>Creation of a new text node within a document.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
<hr/>
@@ -1300,7 +1348,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the node name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object, with pointer @name as new node's name. Use xmlNewNode() if a copy of @name string is is needed as new node's name.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlNewNs"/>xmlNewNs ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> xmlNewNs (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br/>
-</pre><p>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. We use href==NULL in the case of an element creation where the namespace was not defined.</p>
+</pre><p>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. Note that for a default namespace, @prefix should be NULL. We use href==NULL in the case of an element creation where the namespace was not defined.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the element carrying the namespace</td></tr><tr><td><span class="term"><i><tt>href</tt></i>:</span></td><td>the URI associated</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix for the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new namespace pointer or NULL</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlNewNsProp"/>xmlNewNsProp ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlNewNsProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br/>
@@ -1319,7 +1367,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Create a new property carried by a node.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the holding node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the <a href="libxml2-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml2-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the <a href="libxml2-SAX.html#attribute">attribute</a></td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNewReference"/>xmlNewReference ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewReference (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNewReference"/>xmlNewReference ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewReference (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
</pre><p>Creation of a new <a href="libxml2-SAX.html#reference">reference</a> node.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml2-SAX.html#reference">reference</a> name, or the <a href="libxml2-SAX.html#reference">reference</a> string with &amp; and ;</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
<hr/>
@@ -1347,43 +1395,43 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the size of @content</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeBufGetContent"/>xmlNodeBufGetContent ()</h3><pre class="programlisting">int xmlNodeBufGetContent (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeBufGetContent"/>xmlNodeBufGetContent ()</h3><pre class="programlisting">int xmlNodeBufGetContent (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br/>
</pre><p>Read the value of a node @cur, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buffer with this value</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buffer</tt></i>:</span></td><td>a buffer</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlNodeDump"/>xmlNodeDump ()</h3><pre class="programlisting">int xmlNodeDump (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> int level, <br/> int format)<br/>
-</pre><p>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml2-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</p>
+</pre><p>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml2-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called Since this is using <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> structures it is limited to 2GB and somehow deprecated, use xmlBufNodeDump() instead.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written to the buffer or -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlNodeDumpOutput"/>xmlNodeDumpOutput ()</h3><pre class="programlisting">void xmlNodeDumpOutput (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> int level, <br/> int format, <br/> const char * encoding)<br/>
</pre><p>Dump an XML node, recursive behaviour, children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml2-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>encoding</tt></i>:</span></td><td>an optional encoding string</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeGetBase"/>xmlNodeGetBase ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetBase (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeGetBase"/>xmlNodeGetBase ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetBase (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br/>
</pre><p>Searches for the BASE URL. The code should work on both XML and HTML document even if base mechanisms are completely different. It returns the base as defined in RFC 2396 sections 5.1.1. Base URI within Document Content and 5.1.2. Base URI from the Encapsulating Entity However it does not return the document base (5.1.3), use doc-&gt;URL in this case</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document the node pertains to</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the base URL, or NULL if not found It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeGetContent"/>xmlNodeGetContent ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetContent (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeGetContent"/>xmlNodeGetContent ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetContent (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br/>
</pre><p>Read the value of a node, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlChar * or NULL if no content is available. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeGetLang"/>xmlNodeGetLang ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetLang (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeGetLang"/>xmlNodeGetLang ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetLang (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br/>
</pre><p>Searches the language of a node, i.e. the values of the xml:lang <a href="libxml2-SAX.html#attribute">attribute</a> or the one carried by the nearest ancestor.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the lang value, or NULL if not found It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeGetSpacePreserve"/>xmlNodeGetSpacePreserve ()</h3><pre class="programlisting">int xmlNodeGetSpacePreserve (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeGetSpacePreserve"/>xmlNodeGetSpacePreserve ()</h3><pre class="programlisting">int xmlNodeGetSpacePreserve (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br/>
</pre><p>Searches the space preserving behaviour of a node, i.e. the values of the xml:space <a href="libxml2-SAX.html#attribute">attribute</a> or the one carried by the nearest ancestor.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 if xml:space is not inherited, 0 if "default", 1 if "preserve"</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeIsText"/>xmlNodeIsText ()</h3><pre class="programlisting">int xmlNodeIsText (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeIsText"/>xmlNodeIsText ()</h3><pre class="programlisting">int xmlNodeIsText (const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br/>
</pre><p>Is this node a Text node ?</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeListGetRawString"/>xmlNodeListGetRawString ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetRawString (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br/> int inLine)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeListGetRawString"/>xmlNodeListGetRawString ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetRawString (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br/> int inLine)<br/>
</pre><p>Builds the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs, contrary to xmlNodeListGetString() this function doesn't do any character encoding handling.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>a Node list</td></tr><tr><td><span class="term"><i><tt>inLine</tt></i>:</span></td><td>should we replace entity contents or show their external form</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the string copy, the caller must free it with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlNodeListGetString"/>xmlNodeListGetString ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetString (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br/> int inLine)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNodeListGetString"/>xmlNodeListGetString ()</h3><pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetString (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br/> int inLine)<br/>
</pre><p>Build the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>a Node list</td></tr><tr><td><span class="term"><i><tt>inLine</tt></i>:</span></td><td>should we replace entity contents or show their external form</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the string copy, the caller must free it with xmlFree().</td></tr></tbody></table></div></div>
<hr/>
@@ -1497,13 +1545,13 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlSplitQName3"/>xmlSplitQName3 ()</h3><pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlSplitQName3 (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int * len)<br/>
</pre><p>parse an XML qualified name string,i</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an int *</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer to the start of the name without the prefix</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an int *</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if it is not a Qualified Name, otherwise, update len with the length in byte of the prefix and return a pointer to the start of the name without the prefix</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlStringGetNodeList"/>xmlStringGetNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringGetNodeList (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlStringGetNodeList"/>xmlStringGetNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringGetNodeList (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br/>
</pre><p>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml2-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the first child</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlStringLenGetNodeList"/>xmlStringLenGetNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringLenGetNodeList (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int len)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlStringLenGetNodeList"/>xmlStringLenGetNodeList ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringLenGetNodeList (const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br/> int len)<br/>
</pre><p>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the text</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the string value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the first child</td></tr></tbody></table></div></div>
<hr/>
@@ -1516,7 +1564,7 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>first</tt></i>:</span></td><td>the first text node</td></tr><tr><td><span class="term"><i><tt>second</tt></i>:</span></td><td>the second text node being merged</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the first text node augmented</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlUnlinkNode"/>xmlUnlinkNode ()</h3><pre class="programlisting">void xmlUnlinkNode (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br/>
-</pre><p>Unlink a node from it's current context, the node is not freed If one need to free the node, use xmlFreeNode() routine after the unlink to discard it.</p>
+</pre><p>Unlink a node from it's current context, the node is not freed If one need to free the node, use xmlFreeNode() routine after the unlink to discard it. Note that namespace nodes can't be unlinked as they do not have pointer to their parent.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlUnsetNsProp"/>xmlUnsetNsProp ()</h3><pre class="programlisting">int xmlUnsetNsProp (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
diff --git a/doc/devhelp/libxml2-valid.html b/doc/devhelp/libxml2-valid.html
index 3480214..fcb68e7 100644
--- a/doc/devhelp/libxml2-valid.html
+++ b/doc/devhelp/libxml2-valid.html
@@ -512,7 +512,7 @@ The content of this structure is not made public by the API.
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlValidatePushCData"/>xmlValidatePushCData ()</h3><pre class="programlisting">int xmlValidatePushCData (<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br/> int len)<br/>
</pre><p>check the CData parsed for validation in the current stack</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the lenght of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlValidatePushElement"/>xmlValidatePushElement ()</h3><pre class="programlisting">int xmlValidatePushElement (<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * qname)<br/>
</pre><p>Push a new element start on the validation stack.</p>
diff --git a/doc/devhelp/libxml2-xmlIO.html b/doc/devhelp/libxml2-xmlIO.html
index 8c41d1d..5bccc27 100644
--- a/doc/devhelp/libxml2-xmlIO.html
+++ b/doc/devhelp/libxml2-xmlIO.html
@@ -82,9 +82,11 @@ void * <a href="#xmlIOHTTPOpen">xmlIOHTTPOpen</a> (const char * filename);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path);
typedef int <a href="#xmlInputReadCallback">xmlInputReadCallback</a> (void * context, <br/> char * buffer, <br/> int len);
<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> <a href="#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a> (const char * mem, <br/> int size, <br/> <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
+const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a> (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
int <a href="#xmlIOHTTPClose">xmlIOHTTPClose</a> (void * context);
int <a href="#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a> (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/> <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escaping);
<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> <a href="#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a> (const char * URI, <br/> <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder, <br/> int compression);
+size_t <a href="#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a> (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
void <a href="#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a> (void);
typedef void * <a href="#xmlInputOpenCallback">xmlInputOpenCallback</a> (char const * filename);
int <a href="#xmlParserInputBufferRead">xmlParserInputBufferRead</a> (<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br/> int len);
@@ -255,6 +257,14 @@ void * <a href="#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a> (const char * post_uri, <b
</pre><p>flushes the output I/O channel</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>a buffered output</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of byte written or -1 in case of error.</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlOutputBufferGetContent"/>xmlOutputBufferGetContent ()</h3><pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xmlOutputBufferGetContent (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br/>
+</pre><p>Gives a pointer to the data currently held in the output buffer</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>an <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the data or NULL in case of error</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlOutputBufferGetSize"/>xmlOutputBufferGetSize ()</h3><pre class="programlisting">size_t xmlOutputBufferGetSize (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br/>
+</pre><p>Gives the length of the data currently held in the output buffer</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>an <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case or error or no data is held, the size otherwise</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlOutputBufferWrite"/>xmlOutputBufferWrite ()</h3><pre class="programlisting">int xmlOutputBufferWrite (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br/> int len, <br/> const char * buf)<br/>
</pre><p>Write the content of the array in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>a buffered parser output</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the size in bytes of the array.</td></tr><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>an char array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of chars immediately written, or -1 in case of error.</td></tr></tbody></table></div></div>
diff --git a/doc/devhelp/libxml2-xmlerror.html b/doc/devhelp/libxml2-xmlerror.html
index cf445dd..13bab8a 100644
--- a/doc/devhelp/libxml2-xmlerror.html
+++ b/doc/devhelp/libxml2-xmlerror.html
@@ -84,7 +84,7 @@ void <a href="#xmlResetError">xmlResetError</a> (<a href="libxml2-xmlerror.htm
char * str2 : extra string information
char * str3 : extra string information
int int1 : extra number information
- int int2 : column number of the error or 0 if N/A (todo: rename this field when
+ int int2 : error column # or 0 if N/A (todo: rename field when we would brk ABI)
void * ctxt : the parser context if available
void * node : the node in the tree
} xmlError;
@@ -120,7 +120,9 @@ void <a href="#xmlResetError">xmlResetError</a> (<a href="libxml2-xmlerror.htm
<a name="XML_FROM_WRITER">XML_FROM_WRITER</a> = 25 /* The xmlwriter module */
<a name="XML_FROM_MODULE">XML_FROM_MODULE</a> = 26 /* The dynamically loaded module modul */
<a name="XML_FROM_I18N">XML_FROM_I18N</a> = 27 /* The module handling character conversion */
- <a name="XML_FROM_SCHEMATRONV">XML_FROM_SCHEMATRONV</a> = 28 /* The Schematron validator module */
+ <a name="XML_FROM_SCHEMATRONV">XML_FROM_SCHEMATRONV</a> = 28 /* The Schematron validator module */
+ <a name="XML_FROM_BUFFER">XML_FROM_BUFFER</a> = 29 /* The buffers module */
+ <a name="XML_FROM_URI">XML_FROM_URI</a> = 30 /* The URI module */
};
</pre><p/>
</div>
@@ -249,6 +251,8 @@ void <a href="#xmlResetError">xmlResetError</a> (<a href="libxml2-xmlerror.htm
<a name="XML_WAR_ENTITY_REDEFINED">XML_WAR_ENTITY_REDEFINED</a> = 107 /* 107 */
<a name="XML_ERR_UNKNOWN_VERSION">XML_ERR_UNKNOWN_VERSION</a> = 108 /* 108 */
<a name="XML_ERR_VERSION_MISMATCH">XML_ERR_VERSION_MISMATCH</a> = 109 /* 109 */
+ <a name="XML_ERR_NAME_TOO_LONG">XML_ERR_NAME_TOO_LONG</a> = 110 /* 110 */
+ <a name="XML_ERR_USER_STOP">XML_ERR_USER_STOP</a> = 111 /* 111 */
<a name="XML_NS_ERR_XML_NAMESPACE">XML_NS_ERR_XML_NAMESPACE</a> = 200
<a name="XML_NS_ERR_UNDEFINED_NAMESPACE">XML_NS_ERR_UNDEFINED_NAMESPACE</a> = 201 /* 201 */
<a name="XML_NS_ERR_QNAME">XML_NS_ERR_QNAME</a> = 202 /* 202 */
@@ -870,8 +874,7 @@ void <a href="#xmlResetError">xmlResetError</a> (<a href="libxml2-xmlerror.htm
<a name="XML_I18N_EXCESS_HANDLER">XML_I18N_EXCESS_HANDLER</a> = 6002 /* 6002 */
<a name="XML_I18N_CONV_FAILED">XML_I18N_CONV_FAILED</a> = 6003 /* 6003 */
<a name="XML_I18N_NO_OUTPUT">XML_I18N_NO_OUTPUT</a> = 6004 /* 6004 */
- <a name="XML_CHECK_">XML_CHECK_</a> = 6005 /* 5033 */
- <a name="XML_CHECK_X">XML_CHECK_X</a> = 6006 /* 503 */
+ <a name="XML_BUF_OVERFLOW">XML_BUF_OVERFLOW</a> = 7000
};
</pre><p/>
</div>
diff --git a/doc/devhelp/libxml2-xmlmodule.html b/doc/devhelp/libxml2-xmlmodule.html
index 554cd91..08bb4ef 100644
--- a/doc/devhelp/libxml2-xmlmodule.html
+++ b/doc/devhelp/libxml2-xmlmodule.html
@@ -84,11 +84,11 @@ The content of this structure is not made public by the API.
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>module</tt></i>:</span></td><td>the module handle</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of argument error</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlModuleOpen"/>xmlModuleOpen ()</h3><pre class="programlisting"><a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> xmlModuleOpen (const char * name, <br/> int options)<br/>
-</pre><p>Opens a module/shared library given its name or path TODO: options are not yet implemented.</p>
+</pre><p>Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * . TODO: options are not yet implemented.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the module name</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a set of <a href="libxml2-xmlmodule.html#xmlModuleOption">xmlModuleOption</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a handle for the module or NULL in case of error</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlModuleSymbol"/>xmlModuleSymbol ()</h3><pre class="programlisting">int xmlModuleSymbol (<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module, <br/> const char * name, <br/> void ** symbol)<br/>
-</pre><p>Lookup for a symbol address in the given module</p>
+</pre><p>Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * .</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>module</tt></i>:</span></td><td>the module</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the symbol</td></tr><tr><td><span class="term"><i><tt>symbol</tt></i>:</span></td><td>the resulting symbol address</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the symbol was found, or -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
</div>
diff --git a/doc/devhelp/libxml2-xmlregexp.html b/doc/devhelp/libxml2-xmlregexp.html
index 4d11966..9427a34 100644
--- a/doc/devhelp/libxml2-xmlregexp.html
+++ b/doc/devhelp/libxml2-xmlregexp.html
@@ -180,11 +180,11 @@ The content of this structure is not made public by the API.
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlExpGetLanguage"/>xmlExpGetLanguage ()</h3><pre class="programlisting">int xmlExpGetLanguage (<a href="libxml2-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** langList, <br/> int len)<br/>
</pre><p>Find all the strings used in @exp and store them in @list</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>langList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated lenght of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>langList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated length of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlExpGetStart"/>xmlExpGetStart ()</h3><pre class="programlisting">int xmlExpGetStart (<a href="libxml2-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** tokList, <br/> int len)<br/>
</pre><p>Find all the strings that appears at the start of the languages accepted by @exp and store them in @list. E.g. for (a, b) | c it will return the list [a, c]</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>tokList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated lenght of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>tokList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated length of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlExpIsNillable"/>xmlExpIsNillable ()</h3><pre class="programlisting">int xmlExpIsNillable (<a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br/>
</pre><p>Finds if the expression is nillable, i.e. if it accepts the empty sequqnce</p>
@@ -196,7 +196,7 @@ The content of this structure is not made public by the API.
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlExpNewAtom"/>xmlExpNewAtom ()</h3><pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewAtom (<a href="libxml2-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> int len)<br/>
</pre><p>Get the atom associated to this name from that context</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name lenght in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name length in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlExpNewCtxt"/>xmlExpNewCtxt ()</h3><pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> xmlExpNewCtxt (int maxNodes, <br/> <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br/>
</pre><p>Creates a new context for manipulating expressions</p>
diff --git a/doc/devhelp/libxml2-xmlschemas.html b/doc/devhelp/libxml2-xmlschemas.html
index cc49dfa..533c114 100644
--- a/doc/devhelp/libxml2-xmlschemas.html
+++ b/doc/devhelp/libxml2-xmlschemas.html
@@ -57,12 +57,14 @@ typedef struct _xmlSchemaValidCtxt <a href="#xmlSchemaValidCtxt">xmlSchemaValidC
int <a href="#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a> (<a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a> plug);
<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> <a href="#xmlSchemaParse">xmlSchemaParse</a> (<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt);
void <a href="#xmlSchemaFreeParserCtxt">xmlSchemaFreeParserCtxt</a> (<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt);
+void <a href="#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br/> const char * filename);
<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> <a href="#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a> (const char * URL);
int <a href="#xmlSchemaIsValid">xmlSchemaIsValid</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt);
typedef void <a href="#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> (void * ctx, <br/> const char * msg, <br/> ... ...);
<a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a> <a href="#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> * sax, <br/> void ** user_data);
int <a href="#xmlSchemaValidateStream">xmlSchemaValidateStream</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br/> <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br/> <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br/> void * user_data);
int <a href="#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a> (<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> * err, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> * warn, <br/> void ** ctx);
+void <a href="#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> f, <br/> void * ctxt);
int <a href="#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
void <a href="#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br/> void * ctx);
void <a href="#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br/> void * ctx);
@@ -71,6 +73,7 @@ int <a href="#xmlSchemaValidateFile">xmlSchemaValidateFile</a> (<a href="libxml
int <a href="#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
void <a href="#xmlSchemaFree">xmlSchemaFree</a> (<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema);
<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> <a href="#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a> (const char * buffer, <br/> int size);
+typedef int <a href="#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> (void * ctx, <br/> const char ** file, <br/> unsigned long * line);
int <a href="#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> * err, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> * warn, <br/> void ** ctx);
int <a href="#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a> (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> int options);
void <a href="#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a> (<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br/> void * ctx);
@@ -189,6 +192,10 @@ The content of this structure is not made public by the API.
</pre><p>Signature of an error callback from an XSD validation</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>msg</tt></i>:</span></td><td>the message</td></tr><tr><td><span class="term"><i><tt>...</tt></i>:</span></td><td>extra arguments</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlSchemaValidityLocatorFunc"/>Function type xmlSchemaValidityLocatorFunc</h3><pre class="programlisting">int xmlSchemaValidityLocatorFunc (void * ctx, <br/> const char ** file, <br/> unsigned long * line)<br/>
+</pre><p>A schemas validation locator, a callback called by the validator. This is used when file or node informations are not available to find out what file and line number are affected</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>user provided context</td></tr><tr><td><span class="term"><i><tt>file</tt></i>:</span></td><td>returned file information</td></tr><tr><td><span class="term"><i><tt>line</tt></i>:</span></td><td>returned line information</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlSchemaValidityWarningFunc"/>Function type xmlSchemaValidityWarningFunc</h3><pre class="programlisting">void xmlSchemaValidityWarningFunc (void * ctx, <br/> const char * msg, <br/> ... ...)<br/>
</pre><p>Signature of a warning callback from an XSD validation</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>msg</tt></i>:</span></td><td>the message</td></tr><tr><td><span class="term"><i><tt>...</tt></i>:</span></td><td>extra arguments</td></tr></tbody></table></div></div>
@@ -289,6 +296,14 @@ The content of this structure is not made public by the API.
</pre><p>Validate a branch of a tree, starting with the given @elem.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the element and its subtree is valid, a positive error code number otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlSchemaValidateSetFilename"/>xmlSchemaValidateSetFilename ()</h3><pre class="programlisting">void xmlSchemaValidateSetFilename (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br/> const char * filename)<br/>
+</pre><p>Workaround to provide file error reporting information when this is not provided by current APIs</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vctxt</tt></i>:</span></td><td>the schema validation context</td></tr><tr><td><span class="term"><i><tt>filename</tt></i>:</span></td><td>the file name</td></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlSchemaValidateSetLocator"/>xmlSchemaValidateSetLocator ()</h3><pre class="programlisting">void xmlSchemaValidateSetLocator (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br/> <a href="libxml2-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> f, <br/> void * ctxt)<br/>
+</pre><p>Allows to set a locator function to the validation context, which will be used to provide file and line information since those are not provided as part of the SAX validation flow Setting @f to NULL disable the locator.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the locator function pointer</td></tr><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the locator context</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlSchemaValidateStream"/>xmlSchemaValidateStream ()</h3><pre class="programlisting">int xmlSchemaValidateStream (<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br/> <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br/> <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br/> void * user_data)<br/>
</pre><p>Validate an input based on a flow of SAX event from the parser and forward the events to the @sax handler with the provided @user_data the user provided @sax handler must be a SAX2 one.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>the input to use for reading the data</td></tr><tr><td><span class="term"><i><tt>enc</tt></i>:</span></td><td>an optional encoding information</td></tr><tr><td><span class="term"><i><tt>sax</tt></i>:</span></td><td>a SAX handler for the resulting events</td></tr><tr><td><span class="term"><i><tt>user_data</tt></i>:</span></td><td>the context to provide to the SAX handler.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the document is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div></div>
diff --git a/doc/devhelp/libxml2-xmlschemastypes.html b/doc/devhelp/libxml2-xmlschemastypes.html
index c9e778a..36a59f8 100644
--- a/doc/devhelp/libxml2-xmlschemastypes.html
+++ b/doc/devhelp/libxml2-xmlschemastypes.html
@@ -136,11 +136,11 @@ int <a href="#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a> (<a href="libxml2-sc
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the type of the built in type</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the type if found, NULL otherwise.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlSchemaGetCanonValue"/>xmlSchemaGetCanonValue ()</h3><pre class="programlisting">int xmlSchemaGetCanonValue (<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** retValue)<br/>
-</pre><p>Get a the cononical lexical representation of the value. The caller has to FREE the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of "???". TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</p>
+</pre><p>Get the canonical lexical representation of the value. The caller has to FREE the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of "???". TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>retValue</tt></i>:</span></td><td>the returned value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value could be built, 1 if the value type is not supported yet and -1 in case of API errors.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlSchemaGetCanonValueWhtsp"/>xmlSchemaGetCanonValueWhtsp ()</h3><pre class="programlisting">int xmlSchemaGetCanonValueWhtsp (<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** retValue, <br/> <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)<br/>
-</pre><p>Get a the cononical representation of the value. The caller has to free the returned @retValue.</p>
+</pre><p>Get the canonical representation of the value. The caller has to free the returned @retValue.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>retValue</tt></i>:</span></td><td>the returned value</td></tr><tr><td><span class="term"><i><tt>ws</tt></i>:</span></td><td>the whitespace type of the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value could be built, 1 if the value type is not supported yet and -1 in case of API errors.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlSchemaGetFacetValueAsULong"/>xmlSchemaGetFacetValueAsULong ()</h3><pre class="programlisting">unsigned long xmlSchemaGetFacetValueAsULong (<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet)<br/>
diff --git a/doc/devhelp/libxml2-xmlversion.html b/doc/devhelp/libxml2-xmlversion.html
index 69a04e2..8178614 100644
--- a/doc/devhelp/libxml2-xmlversion.html
+++ b/doc/devhelp/libxml2-xmlversion.html
@@ -83,6 +83,7 @@
#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a>;
#define <a href="#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a>;
#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a>;
+#define <a href="#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a>;
#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a>;
#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a>;
#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a>;
@@ -221,6 +222,10 @@ void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version);
</pre><p>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</p>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="LIBXML_THREAD_ALLOC_ENABLED">Macro </a>LIBXML_THREAD_ALLOC_ENABLED</h3><pre class="programlisting">#define <a href="#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a>;
+</pre><p>Whether the allocation hooks are per-thread</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="LIBXML_THREAD_ENABLED">Macro </a>LIBXML_THREAD_ENABLED</h3><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a>;
</pre><p>Whether the thread support is configured in</p>
</div>
diff --git a/doc/devhelp/libxml2-xmlwriter.html b/doc/devhelp/libxml2-xmlwriter.html
index 358c9e6..7c2be92 100644
--- a/doc/devhelp/libxml2-xmlwriter.html
+++ b/doc/devhelp/libxml2-xmlwriter.html
@@ -51,7 +51,7 @@ int <a href="#xmlTextWriterStartDocument">xmlTextWriterStartDocument</a> (<a hre
int <a href="#xmlTextWriterEndPI">xmlTextWriterEndPI</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
int <a href="#xmlTextWriterWriteBase64">xmlTextWriterWriteBase64</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const char * data, <br/> int start, <br/> int len);
int <a href="#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-void <a href="#xmlFreeTextWriter">xmlFreeTextWriter</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
+int <a href="#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
int <a href="#xmlTextWriterEndComment">xmlTextWriterEndComment</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
int <a href="#xmlTextWriterWriteRawLen">xmlTextWriterWriteRawLen</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
int <a href="#xmlTextWriterWriteDTDExternalEntityContents">xmlTextWriterWriteDTDExternalEntityContents</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid);
@@ -73,7 +73,7 @@ int <a href="#xmlTextWriterEndCDATA">xmlTextWriterEndCDATA</a> (<a href="libxml
int <a href="#xmlTextWriterStartElementNS">xmlTextWriterStartElementNS</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI);
int <a href="#xmlTextWriterEndDTDEntity">xmlTextWriterEndDTDEntity</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> <a href="#xmlNewTextWriter">xmlNewTextWriter</a> (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
-int <a href="#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+void <a href="#xmlFreeTextWriter">xmlFreeTextWriter</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
int <a href="#xmlTextWriterWriteVFormatDTDAttlist">xmlTextWriterWriteVFormatDTDAttlist</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const char * format, <br/> va_list argptr);
int <a href="#xmlTextWriterStartPI">xmlTextWriterStartPI</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target);
int <a href="#xmlTextWriterStartElement">xmlTextWriterStartElement</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
@@ -99,8 +99,9 @@ int <a href="#xmlTextWriterWriteDTDInternalEntity">xmlTextWriterWriteDTDInternal
int <a href="#xmlTextWriterWriteVFormatElementNS">xmlTextWriterWriteVFormatElementNS</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br/> const char * format, <br/> va_list argptr);
int <a href="#xmlTextWriterWriteDTDNotation">xmlTextWriterWriteDTDNotation</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid);
int <a href="#xmlTextWriterWriteFormatElement">xmlTextWriterWriteFormatElement</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const char * format, <br/> ... ...);
-int <a href="#xmlTextWriterWriteElementNS">xmlTextWriterWriteElementNS</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
+int <a href="#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> quotechar);
int <a href="#xmlTextWriterWriteString">xmlTextWriterWriteString</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
+int <a href="#xmlTextWriterWriteElementNS">xmlTextWriterWriteElementNS</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
int <a href="#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
int <a href="#xmlTextWriterWriteVFormatAttributeNS">xmlTextWriterWriteVFormatAttributeNS</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br/> const char * format, <br/> va_list argptr);
int <a href="#xmlTextWriterFlush">xmlTextWriterFlush</a> (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
@@ -236,6 +237,10 @@ The content of this structure is not made public by the API.
</pre><p>Set string indentation.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 on error or 0 otherwise.</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlTextWriterSetQuoteChar"/>xmlTextWriterSetQuoteChar ()</h3><pre class="programlisting">int xmlTextWriterSetQuoteChar (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> quotechar)<br/>
+</pre><p>Set the character used for quoting attributes.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>quotechar</tt></i>:</span></td><td>the quote character</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 on error or 0 otherwise.</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlTextWriterStartAttribute"/>xmlTextWriterStartAttribute ()</h3><pre class="programlisting">int xmlTextWriterStartAttribute (<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br/>
</pre><p>Start an xml attribute.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>element name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the bytes written (may be 0 because of buffering) or -1 in case of error</td></tr></tbody></table></div></div>
diff --git a/doc/devhelp/libxml2-xpath.html b/doc/devhelp/libxml2-xpath.html
index 7efa7bc..640c715 100644
--- a/doc/devhelp/libxml2-xpath.html
+++ b/doc/devhelp/libxml2-xpath.html
@@ -70,6 +70,7 @@ typedef <a href="libxml2-xpath.html#xmlXPathAxis">xmlXPathAxis</a> * <a href="#x
typedef struct _xmlXPathParserContext <a href="#xmlXPathParserContext">xmlXPathParserContext</a>;
int <a href="#xmlXPathCastNodeSetToBoolean">xmlXPathCastNodeSetToBoolean</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
typedef <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> <a href="#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a> (void * ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
+<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathNodeEval">xmlXPathNodeEval</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/> <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlXPathCastNodeToString">xmlXPathCastNodeToString</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
int <a href="#xmlXPathIsNaN">xmlXPathIsNaN</a> (double val);
int <a href="#xmlXPathContextSetCache">xmlXPathContextSetCache</a> (<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br/> int active, <br/> int value, <br/> int options);
@@ -104,6 +105,7 @@ int <a href="#xmlXPathCmpNodes">xmlXPathCmpNodes</a> (<a href="libxml2-tree.htm
<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> <a href="#xmlXPathCtxtCompile">xmlXPathCtxtCompile</a> (<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
typedef void <a href="#xmlXPathEvalFunc">xmlXPathEvalFunc</a> (<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br/> int nargs);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlXPathCastBooleanToString">xmlXPathCastBooleanToString</a> (int val);
+int <a href="#xmlXPathSetContextNode">xmlXPathSetContextNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
int <a href="#xmlXPathCastNumberToBoolean">xmlXPathCastNumberToBoolean</a> (double val);
void <a href="#xmlXPathFreeNodeSet">xmlXPathFreeNodeSet</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> obj);
void <a href="#xmlXPathFreeCompExpr">xmlXPathFreeCompExpr</a> (<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp);
@@ -246,6 +248,7 @@ The content of this structure is not made public by the API.
<a name="XPATH_INVALID_CHAR_ERROR">XPATH_INVALID_CHAR_ERROR</a> = 21
<a name="XPATH_INVALID_CTXT">XPATH_INVALID_CTXT</a> = 22
<a name="XPATH_STACK_ERROR">XPATH_STACK_ERROR</a> = 23
+ <a name="XPATH_FORBID_VARIABLE_ERROR">XPATH_FORBID_VARIABLE_ERROR</a> = 24
};
</pre><p/>
</div>
@@ -513,6 +516,10 @@ The content of this structure is not made public by the API.
</pre><p>Create a new <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a></p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the XML document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a> just allocated. The caller will need to free it.</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeEval"/>xmlXPathNodeEval ()</h3><pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathNodeEval (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/> <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br/>
+</pre><p>Evaluate the XPath Location Path in the given context. The node 'node' is set as the context node. The context node is not restored.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to to use as the context node</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the XPath expression</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetCreate"/>xmlXPathNodeSetCreate ()</h3><pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> xmlXPathNodeSetCreate (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br/>
</pre><p>Create a new <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> of type double and of value @val</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>an initial xmlNodePtr, or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created object.</td></tr></tbody></table></div></div>
@@ -525,6 +532,10 @@ The content of this structure is not made public by the API.
</pre><p>Call this routine to speed up XPath computation on static documents. This stamps all the element nodes with the document order Like for line information, the order is kept in the element-&gt;content field, the value stored is actually - the node number (starting at -1) to be able to differentiate from line numbers.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>an input document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements found in the document or -1 in case of error.</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlXPathSetContextNode"/>xmlXPathSetContextNode ()</h3><pre class="programlisting">int xmlXPathSetContextNode (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br/>
+</pre><p>Sets 'node' as the context node. The node must be in the same document as that associated with the context.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to to use as the context node</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error or 0 if successful</td></tr></tbody></table></div></div>
+ <hr/>
</div>
</div>
</body>
diff --git a/doc/devhelp/libxml2-xpathInternals.html b/doc/devhelp/libxml2-xpathInternals.html
index 6200688..0597343 100644
--- a/doc/devhelp/libxml2-xpathInternals.html
+++ b/doc/devhelp/libxml2-xpathInternals.html
@@ -153,7 +153,7 @@ void <a href="#xmlXPathModValues">xmlXPathModValues</a> (<a href="libxml2-xpath
<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathWrapString">xmlXPathWrapString</a> (<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
void <a href="#xmlXPathLangFunction">xmlXPathLangFunction</a> (<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br/> int nargs);
int <a href="#xmlXPathRegisterFuncNS">xmlXPathRegisterFuncNS</a> (<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri, <br/> <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> f);
-void <a href="#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns);
+int <a href="#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns);
void <a href="#xmlXPathLocalNameFunction">xmlXPathLocalNameFunction</a> (<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br/> int nargs);
<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathDifference">xmlXPathDifference</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br/> <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br/> <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
@@ -171,8 +171,8 @@ void <a href="#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a
<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathWrapCString">xmlXPathWrapCString</a> (char * val);
void <a href="#xmlXPathFreeParserContext">xmlXPathFreeParserContext</a> (<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-void <a href="#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-void <a href="#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
+int <a href="#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
+int <a href="#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathNewValueTree">xmlXPathNewValueTree</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathDistinct">xmlXPathDistinct</a> (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes);
<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathVariableLookup">xmlXPathVariableLookup</a> (<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
@@ -549,17 +549,17 @@ void <a href="#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a> (FILE * out
</pre><p>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>nodes</tt></i>:</span></td><td>a node-set, sorted by document order</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetAdd"/>xmlXPathNodeSetAdd ()</h3><pre class="programlisting">void xmlXPathNodeSetAdd (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetAdd"/>xmlXPathNodeSetAdd ()</h3><pre class="programlisting">int xmlXPathNodeSetAdd (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br/>
</pre><p>add a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> to an existing NodeSet</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, and -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetAddNs"/>xmlXPathNodeSetAddNs ()</h3><pre class="programlisting">void xmlXPathNodeSetAddNs (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetAddNs"/>xmlXPathNodeSetAddNs ()</h3><pre class="programlisting">int xmlXPathNodeSetAddNs (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br/>
</pre><p>add a new namespace node to an existing NodeSet</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the hosting node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>a the namespace node</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the hosting node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>a the namespace node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetAddUnique"/>xmlXPathNodeSetAddUnique ()</h3><pre class="programlisting">void xmlXPathNodeSetAddUnique (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetAddUnique"/>xmlXPathNodeSetAddUnique ()</h3><pre class="programlisting">int xmlXPathNodeSetAddUnique (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br/>
</pre><p>add a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> to an existing NodeSet, optimized version when we are sure the node is not already in the set.</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlXPathNodeSetContains"/>xmlXPathNodeSetContains ()</h3><pre class="programlisting">int xmlXPathNodeSetContains (<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br/>
</pre><p>checks whether @cur contains @val</p>
diff --git a/doc/devhelp/libxml2.devhelp b/doc/devhelp/libxml2.devhelp
index e564951..282546a 100644
--- a/doc/devhelp/libxml2.devhelp
+++ b/doc/devhelp/libxml2.devhelp
@@ -91,6 +91,7 @@
<function name="IS_LETTER_CH" link="libxml2-parserInternals.html#IS_LETTER_CH"/>
<function name="IS_PUBIDCHAR" link="libxml2-parserInternals.html#IS_PUBIDCHAR"/>
<function name="IS_PUBIDCHAR_CH" link="libxml2-parserInternals.html#IS_PUBIDCHAR_CH"/>
+ <function name="LIBXML2_NEW_BUFFER" link="libxml2-tree.html#LIBXML2_NEW_BUFFER"/>
<function name="LIBXML_ATTR_ALLOC_SIZE" link="libxml2-xmlversion.html#LIBXML_ATTR_ALLOC_SIZE"/>
<function name="LIBXML_ATTR_FORMAT" link="libxml2-xmlversion.html#LIBXML_ATTR_FORMAT"/>
<function name="LIBXML_AUTOMATA_ENABLED" link="libxml2-xmlversion.html#LIBXML_AUTOMATA_ENABLED"/>
@@ -121,6 +122,7 @@
<function name="LIBXML_SCHEMAS_ENABLED" link="libxml2-xmlversion.html#LIBXML_SCHEMAS_ENABLED"/>
<function name="LIBXML_SCHEMATRON_ENABLED" link="libxml2-xmlversion.html#LIBXML_SCHEMATRON_ENABLED"/>
<function name="LIBXML_TEST_VERSION" link="libxml2-xmlversion.html#LIBXML_TEST_VERSION"/>
+ <function name="LIBXML_THREAD_ALLOC_ENABLED" link="libxml2-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED"/>
<function name="LIBXML_THREAD_ENABLED" link="libxml2-xmlversion.html#LIBXML_THREAD_ENABLED"/>
<function name="LIBXML_TREE_ENABLED" link="libxml2-xmlversion.html#LIBXML_TREE_ENABLED"/>
<function name="LIBXML_UNICODE_ENABLED" link="libxml2-xmlversion.html#LIBXML_UNICODE_ENABLED"/>
@@ -164,7 +166,10 @@
<function name="XML_GET_CONTENT" link="libxml2-tree.html#XML_GET_CONTENT"/>
<function name="XML_GET_LINE" link="libxml2-tree.html#XML_GET_LINE"/>
<function name="XML_LOCAL_NAMESPACE" link="libxml2-tree.html#XML_LOCAL_NAMESPACE"/>
+ <function name="XML_MAX_DICTIONARY_LIMIT" link="libxml2-parserInternals.html#XML_MAX_DICTIONARY_LIMIT"/>
+ <function name="XML_MAX_LOOKUP_LIMIT" link="libxml2-parserInternals.html#XML_MAX_LOOKUP_LIMIT"/>
<function name="XML_MAX_NAMELEN" link="libxml2-parserInternals.html#XML_MAX_NAMELEN"/>
+ <function name="XML_MAX_NAME_LENGTH" link="libxml2-parserInternals.html#XML_MAX_NAME_LENGTH"/>
<function name="XML_MAX_TEXT_LENGTH" link="libxml2-parserInternals.html#XML_MAX_TEXT_LENGTH"/>
<function name="XML_SAX2_MAGIC" link="libxml2-parser.html#XML_SAX2_MAGIC"/>
<function name="XML_SCHEMAS_ANYATTR_LAX" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYATTR_LAX"/>
@@ -351,6 +356,7 @@
<function name="XML_BUFFER_ALLOC_HYBRID" link="libxml2-tree.html#XML_BUFFER_ALLOC_HYBRID"/>
<function name="XML_BUFFER_ALLOC_IMMUTABLE" link="libxml2-tree.html#XML_BUFFER_ALLOC_IMMUTABLE"/>
<function name="XML_BUFFER_ALLOC_IO" link="libxml2-tree.html#XML_BUFFER_ALLOC_IO"/>
+ <function name="XML_BUF_OVERFLOW" link="libxml2-xmlerror.html#XML_BUF_OVERFLOW"/>
<function name="XML_C14N_1_0" link="libxml2-c14n.html#XML_C14N_1_0"/>
<function name="XML_C14N_1_1" link="libxml2-c14n.html#XML_C14N_1_1"/>
<function name="XML_C14N_CREATE_CTXT" link="libxml2-xmlerror.html#XML_C14N_CREATE_CTXT"/>
@@ -397,7 +403,6 @@
<function name="XML_CHAR_ENCODING_UTF16BE" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF16BE"/>
<function name="XML_CHAR_ENCODING_UTF16LE" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF16LE"/>
<function name="XML_CHAR_ENCODING_UTF8" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF8"/>
- <function name="XML_CHECK_" link="libxml2-xmlerror.html#XML_CHECK_"/>
<function name="XML_CHECK_ENTITY_TYPE" link="libxml2-xmlerror.html#XML_CHECK_ENTITY_TYPE"/>
<function name="XML_CHECK_FOUND_ATTRIBUTE" link="libxml2-xmlerror.html#XML_CHECK_FOUND_ATTRIBUTE"/>
<function name="XML_CHECK_FOUND_CDATA" link="libxml2-xmlerror.html#XML_CHECK_FOUND_CDATA"/>
@@ -436,7 +441,6 @@
<function name="XML_CHECK_WRONG_NEXT" link="libxml2-xmlerror.html#XML_CHECK_WRONG_NEXT"/>
<function name="XML_CHECK_WRONG_PARENT" link="libxml2-xmlerror.html#XML_CHECK_WRONG_PARENT"/>
<function name="XML_CHECK_WRONG_PREV" link="libxml2-xmlerror.html#XML_CHECK_WRONG_PREV"/>
- <function name="XML_CHECK_X" link="libxml2-xmlerror.html#XML_CHECK_X"/>
<function name="XML_COMMENT_NODE" link="libxml2-tree.html#XML_COMMENT_NODE"/>
<function name="XML_DOCB_DOCUMENT_NODE" link="libxml2-tree.html#XML_DOCB_DOCUMENT_NODE"/>
<function name="XML_DOCUMENT_FRAG_NODE" link="libxml2-tree.html#XML_DOCUMENT_FRAG_NODE"/>
@@ -574,6 +578,7 @@
<function name="XML_ERR_MIXED_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_MIXED_NOT_FINISHED"/>
<function name="XML_ERR_MIXED_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_MIXED_NOT_STARTED"/>
<function name="XML_ERR_NAME_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_NAME_REQUIRED"/>
+ <function name="XML_ERR_NAME_TOO_LONG" link="libxml2-xmlerror.html#XML_ERR_NAME_TOO_LONG"/>
<function name="XML_ERR_NMTOKEN_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_NMTOKEN_REQUIRED"/>
<function name="XML_ERR_NONE" link="libxml2-xmlerror.html#XML_ERR_NONE"/>
<function name="XML_ERR_NOTATION_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_NOTATION_NOT_FINISHED"/>
@@ -610,6 +615,7 @@
<function name="XML_ERR_UNSUPPORTED_ENCODING" link="libxml2-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING"/>
<function name="XML_ERR_URI_FRAGMENT" link="libxml2-xmlerror.html#XML_ERR_URI_FRAGMENT"/>
<function name="XML_ERR_URI_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_URI_REQUIRED"/>
+ <function name="XML_ERR_USER_STOP" link="libxml2-xmlerror.html#XML_ERR_USER_STOP"/>
<function name="XML_ERR_VALUE_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_VALUE_REQUIRED"/>
<function name="XML_ERR_VERSION_MISMATCH" link="libxml2-xmlerror.html#XML_ERR_VERSION_MISMATCH"/>
<function name="XML_ERR_VERSION_MISSING" link="libxml2-xmlerror.html#XML_ERR_VERSION_MISSING"/>
@@ -625,6 +631,7 @@
<function name="XML_EXTERNAL_GENERAL_PARSED_ENTITY" link="libxml2-entities.html#XML_EXTERNAL_GENERAL_PARSED_ENTITY"/>
<function name="XML_EXTERNAL_GENERAL_UNPARSED_ENTITY" link="libxml2-entities.html#XML_EXTERNAL_GENERAL_UNPARSED_ENTITY"/>
<function name="XML_EXTERNAL_PARAMETER_ENTITY" link="libxml2-entities.html#XML_EXTERNAL_PARAMETER_ENTITY"/>
+ <function name="XML_FROM_BUFFER" link="libxml2-xmlerror.html#XML_FROM_BUFFER"/>
<function name="XML_FROM_C14N" link="libxml2-xmlerror.html#XML_FROM_C14N"/>
<function name="XML_FROM_CATALOG" link="libxml2-xmlerror.html#XML_FROM_CATALOG"/>
<function name="XML_FROM_CHECK" link="libxml2-xmlerror.html#XML_FROM_CHECK"/>
@@ -648,6 +655,7 @@
<function name="XML_FROM_SCHEMASV" link="libxml2-xmlerror.html#XML_FROM_SCHEMASV"/>
<function name="XML_FROM_SCHEMATRONV" link="libxml2-xmlerror.html#XML_FROM_SCHEMATRONV"/>
<function name="XML_FROM_TREE" link="libxml2-xmlerror.html#XML_FROM_TREE"/>
+ <function name="XML_FROM_URI" link="libxml2-xmlerror.html#XML_FROM_URI"/>
<function name="XML_FROM_VALID" link="libxml2-xmlerror.html#XML_FROM_VALID"/>
<function name="XML_FROM_WRITER" link="libxml2-xmlerror.html#XML_FROM_WRITER"/>
<function name="XML_FROM_XINCLUDE" link="libxml2-xmlerror.html#XML_FROM_XINCLUDE"/>
@@ -767,6 +775,7 @@
<function name="XML_PARSER_SUBST_ENTITIES" link="libxml2-xmlreader.html#XML_PARSER_SUBST_ENTITIES"/>
<function name="XML_PARSER_SYSTEM_LITERAL" link="libxml2-parser.html#XML_PARSER_SYSTEM_LITERAL"/>
<function name="XML_PARSER_VALIDATE" link="libxml2-xmlreader.html#XML_PARSER_VALIDATE"/>
+ <function name="XML_PARSE_BIG_LINES" link="libxml2-parser.html#XML_PARSE_BIG_LINES"/>
<function name="XML_PARSE_COMPACT" link="libxml2-parser.html#XML_PARSE_COMPACT"/>
<function name="XML_PARSE_DOM" link="libxml2-parser.html#XML_PARSE_DOM"/>
<function name="XML_PARSE_DTDATTR" link="libxml2-parser.html#XML_PARSE_DTDATTR"/>
@@ -1509,6 +1518,7 @@
<function name="XPATH_ENCODING_ERROR" link="libxml2-xpath.html#XPATH_ENCODING_ERROR"/>
<function name="XPATH_EXPRESSION_OK" link="libxml2-xpath.html#XPATH_EXPRESSION_OK"/>
<function name="XPATH_EXPR_ERROR" link="libxml2-xpath.html#XPATH_EXPR_ERROR"/>
+ <function name="XPATH_FORBID_VARIABLE_ERROR" link="libxml2-xpath.html#XPATH_FORBID_VARIABLE_ERROR"/>
<function name="XPATH_INVALID_ARITY" link="libxml2-xpath.html#XPATH_INVALID_ARITY"/>
<function name="XPATH_INVALID_CHAR_ERROR" link="libxml2-xpath.html#XPATH_INVALID_CHAR_ERROR"/>
<function name="XPATH_INVALID_CTXT" link="libxml2-xpath.html#XPATH_INVALID_CTXT"/>
@@ -1573,6 +1583,7 @@
<function name="xmlAttributeType" link="libxml2-tree.html#xmlAttributeType"/>
<function name="xmlAutomataPtr" link="libxml2-xmlautomata.html#xmlAutomataPtr"/>
<function name="xmlAutomataStatePtr" link="libxml2-xmlautomata.html#xmlAutomataStatePtr"/>
+ <function name="xmlBufPtr" link="libxml2-tree.html#xmlBufPtr"/>
<function name="xmlBufferAllocationScheme" link="libxml2-tree.html#xmlBufferAllocationScheme"/>
<function name="xmlBufferPtr" link="libxml2-tree.html#xmlBufferPtr"/>
<function name="xmlC14NMode" link="libxml2-c14n.html#xmlC14NMode"/>
@@ -1710,6 +1721,7 @@
<function name="xmlAttributeTable" link="libxml2-valid.html#xmlAttributeTable"/>
<function name="xmlAutomata" link="libxml2-xmlautomata.html#xmlAutomata"/>
<function name="xmlAutomataState" link="libxml2-xmlautomata.html#xmlAutomataState"/>
+ <function name="xmlBuf" link="libxml2-tree.html#xmlBuf"/>
<function name="xmlBuffer" link="libxml2-tree.html#xmlBuffer"/>
<function name="xmlCatalog" link="libxml2-catalog.html#xmlCatalog"/>
<function name="xmlChLRange" link="libxml2-chvalid.html#xmlChLRange"/>
@@ -1868,6 +1880,7 @@
<function name="xmlRelaxNGValidityErrorFunc" link="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc"/>
<function name="xmlRelaxNGValidityWarningFunc" link="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc"/>
<function name="xmlSchemaValidityErrorFunc" link="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc"/>
+ <function name="xmlSchemaValidityLocatorFunc" link="libxml2-xmlschemas.html#xmlSchemaValidityLocatorFunc"/>
<function name="xmlSchemaValidityWarningFunc" link="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc"/>
<function name="xmlSchematronValidityErrorFunc" link="libxml2-schematron.html#xmlSchematronValidityErrorFunc"/>
<function name="xmlSchematronValidityWarningFunc" link="libxml2-schematron.html#xmlSchematronValidityWarningFunc"/>
@@ -2097,6 +2110,12 @@
<function name="xmlAutomataNewTransition2 ()" link="libxml2-xmlautomata.html#xmlAutomataNewTransition2"/>
<function name="xmlAutomataSetFinalState ()" link="libxml2-xmlautomata.html#xmlAutomataSetFinalState"/>
<function name="xmlBoolToText ()" link="libxml2-debugXML.html#xmlBoolToText"/>
+ <function name="xmlBufContent ()" link="libxml2-tree.html#xmlBufContent"/>
+ <function name="xmlBufEnd ()" link="libxml2-tree.html#xmlBufEnd"/>
+ <function name="xmlBufGetNodeContent ()" link="libxml2-tree.html#xmlBufGetNodeContent"/>
+ <function name="xmlBufNodeDump ()" link="libxml2-tree.html#xmlBufNodeDump"/>
+ <function name="xmlBufShrink ()" link="libxml2-tree.html#xmlBufShrink"/>
+ <function name="xmlBufUse ()" link="libxml2-tree.html#xmlBufUse"/>
<function name="xmlBufferAdd ()" link="libxml2-tree.html#xmlBufferAdd"/>
<function name="xmlBufferAddHead ()" link="libxml2-tree.html#xmlBufferAddHead"/>
<function name="xmlBufferCCat ()" link="libxml2-tree.html#xmlBufferCCat"/>
@@ -2238,10 +2257,12 @@
<function name="xmlDictCreateSub ()" link="libxml2-dict.html#xmlDictCreateSub"/>
<function name="xmlDictExists ()" link="libxml2-dict.html#xmlDictExists"/>
<function name="xmlDictFree ()" link="libxml2-dict.html#xmlDictFree"/>
+ <function name="xmlDictGetUsage ()" link="libxml2-dict.html#xmlDictGetUsage"/>
<function name="xmlDictLookup ()" link="libxml2-dict.html#xmlDictLookup"/>
<function name="xmlDictOwns ()" link="libxml2-dict.html#xmlDictOwns"/>
<function name="xmlDictQLookup ()" link="libxml2-dict.html#xmlDictQLookup"/>
<function name="xmlDictReference ()" link="libxml2-dict.html#xmlDictReference"/>
+ <function name="xmlDictSetLimit ()" link="libxml2-dict.html#xmlDictSetLimit"/>
<function name="xmlDictSize ()" link="libxml2-dict.html#xmlDictSize"/>
<function name="xmlDllMain ()" link="libxml2-threads.html#xmlDllMain"/>
<function name="xmlDocCopyNode ()" link="libxml2-tree.html#xmlDocCopyNode"/>
@@ -2602,6 +2623,8 @@
<function name="xmlOutputBufferCreateFilenameDefault ()" link="libxml2-globals.html#xmlOutputBufferCreateFilenameDefault"/>
<function name="xmlOutputBufferCreateIO ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateIO"/>
<function name="xmlOutputBufferFlush ()" link="libxml2-xmlIO.html#xmlOutputBufferFlush"/>
+ <function name="xmlOutputBufferGetContent ()" link="libxml2-xmlIO.html#xmlOutputBufferGetContent"/>
+ <function name="xmlOutputBufferGetSize ()" link="libxml2-xmlIO.html#xmlOutputBufferGetSize"/>
<function name="xmlOutputBufferWrite ()" link="libxml2-xmlIO.html#xmlOutputBufferWrite"/>
<function name="xmlOutputBufferWriteEscape ()" link="libxml2-xmlIO.html#xmlOutputBufferWriteEscape"/>
<function name="xmlOutputBufferWriteString ()" link="libxml2-xmlIO.html#xmlOutputBufferWriteString"/>
@@ -2897,6 +2920,8 @@
<function name="xmlSchemaValidateListSimpleTypeFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet"/>
<function name="xmlSchemaValidateOneElement ()" link="libxml2-xmlschemas.html#xmlSchemaValidateOneElement"/>
<function name="xmlSchemaValidatePredefinedType ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidatePredefinedType"/>
+ <function name="xmlSchemaValidateSetFilename ()" link="libxml2-xmlschemas.html#xmlSchemaValidateSetFilename"/>
+ <function name="xmlSchemaValidateSetLocator ()" link="libxml2-xmlschemas.html#xmlSchemaValidateSetLocator"/>
<function name="xmlSchemaValidateStream ()" link="libxml2-xmlschemas.html#xmlSchemaValidateStream"/>
<function name="xmlSchemaValueAppend ()" link="libxml2-xmlschemastypes.html#xmlSchemaValueAppend"/>
<function name="xmlSchemaValueGetAsBoolean ()" link="libxml2-xmlschemastypes.html#xmlSchemaValueGetAsBoolean"/>
@@ -3069,6 +3094,7 @@
<function name="xmlTextWriterFullEndElement ()" link="libxml2-xmlwriter.html#xmlTextWriterFullEndElement"/>
<function name="xmlTextWriterSetIndent ()" link="libxml2-xmlwriter.html#xmlTextWriterSetIndent"/>
<function name="xmlTextWriterSetIndentString ()" link="libxml2-xmlwriter.html#xmlTextWriterSetIndentString"/>
+ <function name="xmlTextWriterSetQuoteChar ()" link="libxml2-xmlwriter.html#xmlTextWriterSetQuoteChar"/>
<function name="xmlTextWriterStartAttribute ()" link="libxml2-xmlwriter.html#xmlTextWriterStartAttribute"/>
<function name="xmlTextWriterStartAttributeNS ()" link="libxml2-xmlwriter.html#xmlTextWriterStartAttributeNS"/>
<function name="xmlTextWriterStartCDATA ()" link="libxml2-xmlwriter.html#xmlTextWriterStartCDATA"/>
@@ -3457,6 +3483,7 @@
<function name="xmlXPathNextPreceding ()" link="libxml2-xpathInternals.html#xmlXPathNextPreceding"/>
<function name="xmlXPathNextPrecedingSibling ()" link="libxml2-xpathInternals.html#xmlXPathNextPrecedingSibling"/>
<function name="xmlXPathNextSelf ()" link="libxml2-xpathInternals.html#xmlXPathNextSelf"/>
+ <function name="xmlXPathNodeEval ()" link="libxml2-xpath.html#xmlXPathNodeEval"/>
<function name="xmlXPathNodeLeading ()" link="libxml2-xpathInternals.html#xmlXPathNodeLeading"/>
<function name="xmlXPathNodeLeadingSorted ()" link="libxml2-xpathInternals.html#xmlXPathNodeLeadingSorted"/>
<function name="xmlXPathNodeSetAdd ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetAdd"/>
@@ -3499,6 +3526,7 @@
<function name="xmlXPathRegisteredVariablesCleanup ()" link="libxml2-xpathInternals.html#xmlXPathRegisteredVariablesCleanup"/>
<function name="xmlXPathRoot ()" link="libxml2-xpathInternals.html#xmlXPathRoot"/>
<function name="xmlXPathRoundFunction ()" link="libxml2-xpathInternals.html#xmlXPathRoundFunction"/>
+ <function name="xmlXPathSetContextNode ()" link="libxml2-xpath.html#xmlXPathSetContextNode"/>
<function name="xmlXPathStartsWithFunction ()" link="libxml2-xpathInternals.html#xmlXPathStartsWithFunction"/>
<function name="xmlXPathStringEvalNumber ()" link="libxml2-xpathInternals.html#xmlXPathStringEvalNumber"/>
<function name="xmlXPathStringFunction ()" link="libxml2-xpathInternals.html#xmlXPathStringFunction"/>
diff --git a/doc/docs.html b/doc/docs.html
index de24444..dd59a37 100644
--- a/doc/docs.html
+++ b/doc/docs.html
@@ -7,7 +7,8 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Developer Menu</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Developer Menu</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>There are several on-line resources related to using libxml:</p><ol><li>Use the <a href="search.php">search engine</a> to look up
+</style><title>Developer Menu</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Developer Menu</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>There are several on-line resources related to using libxml:</p><ol>
+ <li>Use the <a href="search.php">search engine</a> to look up
information.</li>
<li>Check the <a href="FAQ.html">FAQ.</a></li>
<li>Check the <a href="http://xmlsoft.org/html/libxml-lib.html">extensive
@@ -20,7 +21,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<li>John Fleck's libxml2 tutorial: <a href="tutorial/index.html">html</a>
or <a href="tutorial/xmltutorial.pdf">pdf</a>.</li>
<li>If you need to parse large files, check the <a href="xmlreader.html">xmlReader</a> API tutorial</li>
- <li><a href="mailto:james@daa.com.au">James Henstridge</a> wrote <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">some nice
+ <li><a href="mailto:james@daa.com.au">James Henstridge</a> wrote <a href="http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.html">some nice
documentation</a> explaining how to use the libxml SAX interface.</li>
<li>George Lebl wrote <a href="http://www-106.ibm.com/developerworks/library/l-gnome3/">an article
for IBM developerWorks</a> about using libxml.</li>
diff --git a/doc/downloads.html b/doc/downloads.html
index f3ba4d0..20f9e57 100644
--- a/doc/downloads.html
+++ b/doc/downloads.html
@@ -12,7 +12,8 @@ mirrors (<a href="ftp://fr.rpmfind.net/pub/libxml/">France</a> and
Antonin Sprinzl also provide <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
mirror in Austria</a>). (NOTE that you need both the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml(2)</a> and <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml(2)-devel</a>
packages installed to compile applications using libxml if using RPMs.)</p><p>You can find all the history of libxml(2) and libxslt releases in the <a href="http://xmlsoft.org/sources/old/">old</a> directory. The precompiled
-Windows binaries made by Igor Zlatovic are available in the <a href="http://xmlsoft.org/sources/win32/">win32</a> directory.</p><p>Binary ports:</p><ul><li>RPMs for x86_64 are available directly on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>, the source RPM will compile on
+Windows binaries made by Igor Zlatovic are available in the <a href="http://xmlsoft.org/sources/win32/">win32</a> directory.</p><p>Binary ports:</p><ul>
+ <li>RPMs for x86_64 are available directly on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a>, the source RPM will compile on
any architecture supported.</li>
<li><a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a> is now the
maintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
@@ -24,11 +25,13 @@ Windows binaries made by Igor Zlatovic are available in the <a href="http://xmls
<li>The HP-UX porting center provides <a href="http://hpux.connect.org.uk/hppd/hpux/Gnome/">HP-UX binaries</a></li>
<li>Bull provides precompiled <a href="http://gnome.bullfreeware.com/new_index.html">RPMs for AIX</a> as
patr of their GNOME packages</li>
-</ul><p>If you know other supported binary ports, please <a href="http://veillard.com/">contact me</a>.</p><p><a name="Snapshot" id="Snapshot">Snapshot:</a></p><ul><li>Code from the GNOME GIT base libxml2 module, updated hourly <a href="ftp://xmlsoft.org/libxml2/libxml2-git-snapshot.tar.gz">libxml2-git-snapshot.tar.gz</a>.</li>
+</ul><p>If you know other supported binary ports, please <a href="http://veillard.com/">contact me</a>.</p><p><a name="Snapshot" id="Snapshot">Snapshot:</a></p><ul>
+ <li>Code from the GNOME GIT base libxml2 module, updated hourly <a href="ftp://xmlsoft.org/libxml2/libxml2-git-snapshot.tar.gz">libxml2-git-snapshot.tar.gz</a>.</li>
<li>Docs, content of the web site, the list archive included <a href="ftp://xmlsoft.org/libxml2/libxml-docs.tar.gz">libxml-docs.tar.gz</a>.</li>
</ul><p><a name="Contribs" id="Contribs">Contributions:</a></p><p>I do accept external contributions, especially if compiling on another
platform, get in touch with the list to upload the package, wrappers for
-various languages have been provided, and can be found in the <a href="python.html">bindings section</a></p><p>Libxml2 is also available from GIT:</p><ul><li><p>See <a href="http://git.gnome.org/browse/libxml2/">libxml2 Git web</a>.
+various languages have been provided, and can be found in the <a href="python.html">bindings section</a></p><p>Libxml2 is also available from GIT:</p><ul>
+ <li><p>See <a href="http://git.gnome.org/browse/libxml2/">libxml2 Git web</a>.
To checkout a local tree use:</p>
<pre>git clone git://git.gnome.org/libxml2</pre>
</li>
diff --git a/doc/encoding.html b/doc/encoding.html
index 93de5bf..7c7953f 100644
--- a/doc/encoding.html
+++ b/doc/encoding.html
@@ -13,7 +13,8 @@ by Tim Bray on Unicode and why you should care about it.</p><p>If you don't unde
without knowing what encoding it uses</b>, then as Joel Spolsky said <a href="http://www.joelonsoftware.com/articles/Unicode.html">please do not
write another line of code until you finish reading that article.</a>. It is
a prerequisite to understand this page, and avoid a lot of problems with
-libxml2, XML or text processing in general.</p><p>Table of Content:</p><ol><li><a href="encoding.html#What">What does internationalization support
+libxml2, XML or text processing in general.</p><p>Table of Content:</p><ol>
+ <li><a href="encoding.html#What">What does internationalization support
mean ?</a></li>
<li><a href="encoding.html#internal">The internal encoding, how and
why</a></li>
@@ -33,7 +34,8 @@ allows the document to be encoded in other encodings at the condition that
they are clearly labeled as such. For example the following is a wellformed
XML document encoded in ISO-8859-1 and using accentuated letters that we
French like for both markup and content:</p><pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
-&lt;très&gt;là &lt;/très&gt;</pre><p>Having internationalization support in libxml2 means the following:</p><ul><li>the document is properly parsed</li>
+&lt;très&gt;là &lt;/très&gt;</pre><p>Having internationalization support in libxml2 means the following:</p><ul>
+ <li>the document is properly parsed</li>
<li>information about it's encoding is saved</li>
<li>it can be modified</li>
<li>it can be saved in its original encoding</li>
@@ -54,7 +56,8 @@ an internationalized fashion by libxml2 too:</p><pre>&lt;!DOCTYPE HTML PUBLIC "-
&lt;p&gt;W3C crée des standards pour le Web.&lt;/body&gt;
&lt;/html&gt;</pre><h3><a name="internal" id="internal">The internal encoding, how and why</a></h3><p>One of the core decisions was to force all documents to be converted to a
default internal encoding, and that encoding to be UTF-8, here are the
-rationales for those choices:</p><ul><li>keeping the native encoding in the internal form would force the libxml
+rationales for those choices:</p><ul>
+ <li>keeping the native encoding in the internal form would force the libxml
users (or the code associated) to be fully aware of the encoding of the
original document, for examples when adding a text node to a document,
the content would have to be provided in the document encoding, i.e. the
@@ -67,7 +70,8 @@ rationales for those choices:</p><ul><li>keeping the native encoding in the inte
considered an intelligent choice too since it's a direct Unicode mapping
support. I selected UTF-8 on the basis of efficiency and compatibility
with surrounding software:
- <ul><li>UTF-8 while a bit more complex to convert from/to (i.e. slightly
+ <ul>
+ <li>UTF-8 while a bit more complex to convert from/to (i.e. slightly
more costly to import and export CPU wise) is also far more compact
than UTF-16 (and UCS-4) for a majority of the documents I see it used
for right now (RPM RDF catalogs, advogato data, various configuration
@@ -86,8 +90,10 @@ rationales for those choices:</p><ul><li>keeping the native encoding in the inte
upcoming Gnome text widget, and a lot of Unix code (yet another place
where Unix programmer base takes a different approach from Microsoft
- they are using UTF-16)</li>
- </ul></li>
-</ul><p>What does this mean in practice for the libxml2 user:</p><ul><li>xmlChar, the libxml2 data type is a byte, those bytes must be assembled
+ </ul>
+ </li>
+</ul><p>What does this mean in practice for the libxml2 user:</p><ul>
+ <li>xmlChar, the libxml2 data type is a byte, those bytes must be assembled
as UTF-8 valid strings. The proper way to terminate an xmlChar * string
is simply to append 0 byte, as usual.</li>
<li>One just need to make sure that when using chars outside the ASCII set,
@@ -95,7 +101,8 @@ rationales for those choices:</p><ul><li>keeping the native encoding in the inte
</ul><h3><a name="implemente" id="implemente">How is it implemented ?</a></h3><p>Let's describe how all this works within libxml, basically the I18N
(internationalization) support get triggered only during I/O operation, i.e.
when reading a document or saving one. Let's look first at the reading
-sequence:</p><ol><li>when a document is processed, we usually don't know the encoding, a
+sequence:</p><ol>
+ <li>when a document is processed, we usually don't know the encoding, a
simple heuristic allows to detect UTF-16 and UCS-4 from encodings where
the ASCII range (0-0x7F) maps with ASCII</li>
<li>the xml declaration if available is parsed, including the encoding
@@ -136,7 +143,8 @@ err2.xml:1: error: Unsupported encoding UnsupportedEnc
collected/built an xmlDoc DOM like structure) ? It depends on the function
called, xmlSaveFile() will just try to save in the original encoding, while
xmlSaveFileTo() and xmlSaveFileEnc() can optionally save to a given
-encoding:</p><ol><li>if no encoding is given, libxml2 will look for an encoding value
+encoding:</p><ol>
+ <li>if no encoding is given, libxml2 will look for an encoding value
associated to the document and if it exists will try to save to that
encoding,
<p>otherwise everything is written in the internal form, i.e. UTF-8</p>
@@ -175,7 +183,8 @@ so a couple of functions htmlGetMetaEncoding() and htmlSetMetaEncoding() have
been provided. The parser also attempts to switch encoding on the fly when
detecting such a tag on input. Except for that the processing is the same
(and again reuses the same code).</p><h3><a name="Default" id="Default">Default supported encodings</a></h3><p>libxml2 has a set of default converters for the following encodings
-(located in encoding.c):</p><ol><li>UTF-8 is supported by default (null handlers)</li>
+(located in encoding.c):</p><ol>
+ <li>UTF-8 is supported by default (null handlers)</li>
<li>UTF-16, both little and big endian</li>
<li>ISO-Latin-1 (ISO-8859-1) covering most western languages</li>
<li>ASCII, useful mostly for saving</li>
@@ -193,7 +202,8 @@ goal is to be able to parse document whose encoding is supported but where
the name differs (for example from the default set of names accepted by
iconv). The following functions allow to register and handle new aliases for
existing encodings. Once registered libxml2 will automatically lookup the
-aliases when handling a document:</p><ul><li>int xmlAddEncodingAlias(const char *name, const char *alias);</li>
+aliases when handling a document:</p><ul>
+ <li>int xmlAddEncodingAlias(const char *name, const char *alias);</li>
<li>int xmlDelEncodingAlias(const char *alias);</li>
<li>const char * xmlGetEncodingAlias(const char *alias);</li>
<li>void xmlCleanupEncodingAliases(void);</li>
diff --git a/doc/example.html b/doc/example.html
index d5f71b0..50668bf 100644
--- a/doc/example.html
+++ b/doc/example.html
@@ -113,7 +113,8 @@ DEBUG("parsePerson\n");
}
return(ret);
-}</pre><p>Here are a couple of things to notice:</p><ul><li>Usually a recursive parsing style is the more convenient one: XML data
+}</pre><p>Here are a couple of things to notice:</p><ul>
+ <li>Usually a recursive parsing style is the more convenient one: XML data
is by nature subject to repetitive constructs and usually exhibits highly
structured patterns.</li>
<li>The two arguments of type <em>xmlDocPtr</em> and <em>xmlNsPtr</em>,
diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
index bdac7bb..57af9c2 100644
--- a/doc/examples/Makefile.am
+++ b/doc/examples/Makefile.am
@@ -1,134 +1,135 @@
-# Beware this is autogenerated by index.py
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
-DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
+##
+## This file is auto-generated by index.py
+## DO NOT EDIT !!!
+##
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)/include
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS)
+LDADD = $(RDL_LIBS) $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(ICONV_LIBS) -lm $(WIN32_EXTRA_LIBADD)
+
+CLEANFILES = *.tmp
+
+if REBUILD_DOCS
rebuild: examples.xml index.html
+.PHONY: rebuild
-examples.xml: index.py *.c
- -@($(srcdir)/index.py)
+examples.xml: index.py $(noinst_PROGRAMS:=.c)
+ cd $(srcdir) && $(PYTHON) index.py
+ $(MAKE) Makefile
index.html: examples.xml examples.xsl
- -@(xsltproc examples.xsl examples.xml && echo "Rebuilt web page" && xmllint --valid --noout index.html)
+ cd $(srcdir) && xsltproc examples.xsl examples.xml && echo "Rebuilt web page"
+ -cd $(srcdir) && xmllint --valid --noout index.html
+endif
install-data-local:
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
-
-EXTRA_DIST=examples.xsl index.py examples.xml writer.xml test3.xml tst.xml test1.xml test2.xml io2.res xpath2.res tree1.res reader4.res io1.res tree2.res reader3.res xpath1.res reader1.res
-
-noinst_PROGRAMS=xpath2 reader1 reader4 parse2 reader2 parse3 reader3 tree2 parse4 io2 testWriter io1 xpath1 parse1 tree1
-
-xpath2_SOURCES=xpath2.c
-xpath2_LDFLAGS=
-xpath2_DEPENDENCIES= $(DEPS)
-xpath2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-reader1_SOURCES=reader1.c
-reader1_LDFLAGS=
-reader1_DEPENDENCIES= $(DEPS)
-reader1_LDADD= @RDL_LIBS@ $(LDADDS)
-
-reader4_SOURCES=reader4.c
-reader4_LDFLAGS=
-reader4_DEPENDENCIES= $(DEPS)
-reader4_LDADD= @RDL_LIBS@ $(LDADDS)
-
-parse2_SOURCES=parse2.c
-parse2_LDFLAGS=
-parse2_DEPENDENCIES= $(DEPS)
-parse2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-reader2_SOURCES=reader2.c
-reader2_LDFLAGS=
-reader2_DEPENDENCIES= $(DEPS)
-reader2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-parse3_SOURCES=parse3.c
-parse3_LDFLAGS=
-parse3_DEPENDENCIES= $(DEPS)
-parse3_LDADD= @RDL_LIBS@ $(LDADDS)
-
-reader3_SOURCES=reader3.c
-reader3_LDFLAGS=
-reader3_DEPENDENCIES= $(DEPS)
-reader3_LDADD= @RDL_LIBS@ $(LDADDS)
-
-tree2_SOURCES=tree2.c
-tree2_LDFLAGS=
-tree2_DEPENDENCIES= $(DEPS)
-tree2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-parse4_SOURCES=parse4.c
-parse4_LDFLAGS=
-parse4_DEPENDENCIES= $(DEPS)
-parse4_LDADD= @RDL_LIBS@ $(LDADDS)
-
-io2_SOURCES=io2.c
-io2_LDFLAGS=
-io2_DEPENDENCIES= $(DEPS)
-io2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-testWriter_SOURCES=testWriter.c
-testWriter_LDFLAGS=
-testWriter_DEPENDENCIES= $(DEPS)
-testWriter_LDADD= @RDL_LIBS@ $(LDADDS)
-
-io1_SOURCES=io1.c
-io1_LDFLAGS=
-io1_DEPENDENCIES= $(DEPS)
-io1_LDADD= @RDL_LIBS@ $(LDADDS)
-
-xpath1_SOURCES=xpath1.c
-xpath1_LDFLAGS=
-xpath1_DEPENDENCIES= $(DEPS)
-xpath1_LDADD= @RDL_LIBS@ $(LDADDS)
-
-parse1_SOURCES=parse1.c
-parse1_LDFLAGS=
-parse1_DEPENDENCIES= $(DEPS)
-parse1_LDADD= @RDL_LIBS@ $(LDADDS)
-
-tree1_SOURCES=tree1.c
-tree1_LDFLAGS=
-tree1_DEPENDENCIES= $(DEPS)
-tree1_LDADD= @RDL_LIBS@ $(LDADDS)
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
+
+clean-local:
+ test -f Makefile.am || rm -f test?.xml
+
+EXTRA_DIST = \
+ examples.xml \
+ examples.xsl \
+ index.html \
+ index.py \
+ io1.res \
+ io2.res \
+ reader1.res \
+ reader3.res \
+ reader4.res \
+ test1.xml \
+ test2.xml \
+ test3.xml \
+ tree1.res \
+ tree2.res \
+ tst.xml \
+ writer.xml \
+ xpath1.res \
+ xpath2.res
+
+noinst_PROGRAMS = \
+ io1 \
+ io2 \
+ parse1 \
+ parse2 \
+ parse3 \
+ parse4 \
+ reader1 \
+ reader2 \
+ reader3 \
+ reader4 \
+ testWriter \
+ tree1 \
+ tree2 \
+ xpath1 \
+ xpath2
+
+io1_SOURCES = io1.c
+
+io2_SOURCES = io2.c
+
+parse1_SOURCES = parse1.c
+
+parse2_SOURCES = parse2.c
+
+parse3_SOURCES = parse3.c
+
+parse4_SOURCES = parse4.c
+
+reader1_SOURCES = reader1.c
+
+reader2_SOURCES = reader2.c
+
+reader3_SOURCES = reader3.c
+
+reader4_SOURCES = reader4.c
+
+testWriter_SOURCES = testWriter.c
+
+tree1_SOURCES = tree1.c
+
+tree2_SOURCES = tree2.c
+
+xpath1_SOURCES = xpath1.c
+
+xpath2_SOURCES = xpath2.c
valgrind:
$(MAKE) CHECKER='valgrind' tests
tests: $(noinst_PROGRAMS)
+ test -f Makefile.am || test -f test1.xml || $(LN_S) $(srcdir)/test?.xml .
@(echo '## examples regression tests')
@(echo > .memdump)
- @($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse2 test2.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse3)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse4 test3.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse1 test1.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-
-
+ $(CHECKER) ./io1 > io1.tmp && diff io1.tmp $(srcdir)/io1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./io2 > io2.tmp && diff io2.tmp $(srcdir)/io2.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse1 test1.xml
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse2 test2.xml
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse3
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse4 test3.xml
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader1 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader2 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader3 > reader3.tmp && diff reader3.tmp $(srcdir)/reader3.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp && diff reader4.tmp $(srcdir)/reader4.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./testWriter && for i in 1 2 3 4 ; do diff $(srcdir)/writer.xml writer$$i.tmp || break ; done
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./tree1 test2.xml > tree1.tmp && diff tree1.tmp $(srcdir)/tree1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./tree2 > tree2.tmp && diff tree2.tmp $(srcdir)/tree2.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./xpath1 test3.xml '//child2' > xpath1.tmp && diff xpath1.tmp $(srcdir)/xpath1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp && diff xpath2.tmp $(srcdir)/xpath2.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
diff --git a/doc/examples/Makefile.in b/doc/examples/Makefile.in
index 9d08434..7b66627 100644
--- a/doc/examples/Makefile.in
+++ b/doc/examples/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -34,18 +78,19 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-noinst_PROGRAMS = xpath2$(EXEEXT) reader1$(EXEEXT) reader4$(EXEEXT) \
- parse2$(EXEEXT) reader2$(EXEEXT) parse3$(EXEEXT) \
- reader3$(EXEEXT) tree2$(EXEEXT) parse4$(EXEEXT) io2$(EXEEXT) \
- testWriter$(EXEEXT) io1$(EXEEXT) xpath1$(EXEEXT) \
- parse1$(EXEEXT) tree1$(EXEEXT)
+noinst_PROGRAMS = io1$(EXEEXT) io2$(EXEEXT) parse1$(EXEEXT) \
+ parse2$(EXEEXT) parse3$(EXEEXT) parse4$(EXEEXT) \
+ reader1$(EXEEXT) reader2$(EXEEXT) reader3$(EXEEXT) \
+ reader4$(EXEEXT) testWriter$(EXEEXT) tree1$(EXEEXT) \
+ tree2$(EXEEXT) xpath1$(EXEEXT) xpath2$(EXEEXT)
subdir = doc/examples
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@@ -55,84 +100,126 @@ CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_io1_OBJECTS = io1.$(OBJEXT)
io1_OBJECTS = $(am_io1_OBJECTS)
+io1_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+io1_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
-io1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(io1_LDFLAGS) $(LDFLAGS) -o $@
+am__v_lt_1 =
am_io2_OBJECTS = io2.$(OBJEXT)
io2_OBJECTS = $(am_io2_OBJECTS)
-io2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(io2_LDFLAGS) $(LDFLAGS) -o $@
+io2_LDADD = $(LDADD)
+io2_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_parse1_OBJECTS = parse1.$(OBJEXT)
parse1_OBJECTS = $(am_parse1_OBJECTS)
-parse1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(parse1_LDFLAGS) $(LDFLAGS) -o $@
+parse1_LDADD = $(LDADD)
+parse1_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_parse2_OBJECTS = parse2.$(OBJEXT)
parse2_OBJECTS = $(am_parse2_OBJECTS)
-parse2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(parse2_LDFLAGS) $(LDFLAGS) -o $@
+parse2_LDADD = $(LDADD)
+parse2_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_parse3_OBJECTS = parse3.$(OBJEXT)
parse3_OBJECTS = $(am_parse3_OBJECTS)
-parse3_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(parse3_LDFLAGS) $(LDFLAGS) -o $@
+parse3_LDADD = $(LDADD)
+parse3_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_parse4_OBJECTS = parse4.$(OBJEXT)
parse4_OBJECTS = $(am_parse4_OBJECTS)
-parse4_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(parse4_LDFLAGS) $(LDFLAGS) -o $@
+parse4_LDADD = $(LDADD)
+parse4_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_reader1_OBJECTS = reader1.$(OBJEXT)
reader1_OBJECTS = $(am_reader1_OBJECTS)
-reader1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(reader1_LDFLAGS) $(LDFLAGS) -o $@
+reader1_LDADD = $(LDADD)
+reader1_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_reader2_OBJECTS = reader2.$(OBJEXT)
reader2_OBJECTS = $(am_reader2_OBJECTS)
-reader2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(reader2_LDFLAGS) $(LDFLAGS) -o $@
+reader2_LDADD = $(LDADD)
+reader2_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_reader3_OBJECTS = reader3.$(OBJEXT)
reader3_OBJECTS = $(am_reader3_OBJECTS)
-reader3_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(reader3_LDFLAGS) $(LDFLAGS) -o $@
+reader3_LDADD = $(LDADD)
+reader3_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_reader4_OBJECTS = reader4.$(OBJEXT)
reader4_OBJECTS = $(am_reader4_OBJECTS)
-reader4_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(reader4_LDFLAGS) $(LDFLAGS) -o $@
+reader4_LDADD = $(LDADD)
+reader4_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_testWriter_OBJECTS = testWriter.$(OBJEXT)
testWriter_OBJECTS = $(am_testWriter_OBJECTS)
-testWriter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(testWriter_LDFLAGS) $(LDFLAGS) -o $@
+testWriter_LDADD = $(LDADD)
+testWriter_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_tree1_OBJECTS = tree1.$(OBJEXT)
tree1_OBJECTS = $(am_tree1_OBJECTS)
-tree1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(tree1_LDFLAGS) $(LDFLAGS) -o $@
+tree1_LDADD = $(LDADD)
+tree1_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_tree2_OBJECTS = tree2.$(OBJEXT)
tree2_OBJECTS = $(am_tree2_OBJECTS)
-tree2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(tree2_LDFLAGS) $(LDFLAGS) -o $@
+tree2_LDADD = $(LDADD)
+tree2_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_xpath1_OBJECTS = xpath1.$(OBJEXT)
xpath1_OBJECTS = $(am_xpath1_OBJECTS)
-xpath1_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(xpath1_LDFLAGS) $(LDFLAGS) -o $@
+xpath1_LDADD = $(LDADD)
+xpath1_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_xpath2_OBJECTS = xpath2.$(OBJEXT)
xpath2_OBJECTS = $(am_xpath2_OBJECTS)
-xpath2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(xpath2_LDFLAGS) $(LDFLAGS) -o $@
+xpath2_LDADD = $(LDADD)
+xpath2_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -143,22 +230,18 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(io1_SOURCES) $(io2_SOURCES) $(parse1_SOURCES) \
$(parse2_SOURCES) $(parse3_SOURCES) $(parse4_SOURCES) \
$(reader1_SOURCES) $(reader2_SOURCES) $(reader3_SOURCES) \
@@ -169,6 +252,28 @@ DIST_SOURCES = $(io1_SOURCES) $(io2_SOURCES) $(parse1_SOURCES) \
$(reader1_SOURCES) $(reader2_SOURCES) $(reader3_SOURCES) \
$(reader4_SOURCES) $(testWriter_SOURCES) $(tree1_SOURCES) \
$(tree2_SOURCES) $(xpath1_SOURCES) $(xpath2_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -176,7 +281,6 @@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -213,6 +317,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -257,6 +362,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -268,7 +376,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -293,7 +400,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -326,6 +432,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -399,72 +506,45 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)/include
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS)
+LDADD = $(RDL_LIBS) $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(ICONV_LIBS) -lm $(WIN32_EXTRA_LIBADD)
+CLEANFILES = *.tmp
+EXTRA_DIST = \
+ examples.xml \
+ examples.xsl \
+ index.html \
+ index.py \
+ io1.res \
+ io2.res \
+ reader1.res \
+ reader3.res \
+ reader4.res \
+ test1.xml \
+ test2.xml \
+ test3.xml \
+ tree1.res \
+ tree2.res \
+ tst.xml \
+ writer.xml \
+ xpath1.res \
+ xpath2.res
-# Beware this is autogenerated by index.py
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
-DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
-EXTRA_DIST = examples.xsl index.py examples.xml writer.xml test3.xml tst.xml test1.xml test2.xml io2.res xpath2.res tree1.res reader4.res io1.res tree2.res reader3.res xpath1.res reader1.res
-xpath2_SOURCES = xpath2.c
-xpath2_LDFLAGS =
-xpath2_DEPENDENCIES = $(DEPS)
-xpath2_LDADD = @RDL_LIBS@ $(LDADDS)
-reader1_SOURCES = reader1.c
-reader1_LDFLAGS =
-reader1_DEPENDENCIES = $(DEPS)
-reader1_LDADD = @RDL_LIBS@ $(LDADDS)
-reader4_SOURCES = reader4.c
-reader4_LDFLAGS =
-reader4_DEPENDENCIES = $(DEPS)
-reader4_LDADD = @RDL_LIBS@ $(LDADDS)
+io1_SOURCES = io1.c
+io2_SOURCES = io2.c
+parse1_SOURCES = parse1.c
parse2_SOURCES = parse2.c
-parse2_LDFLAGS =
-parse2_DEPENDENCIES = $(DEPS)
-parse2_LDADD = @RDL_LIBS@ $(LDADDS)
-reader2_SOURCES = reader2.c
-reader2_LDFLAGS =
-reader2_DEPENDENCIES = $(DEPS)
-reader2_LDADD = @RDL_LIBS@ $(LDADDS)
parse3_SOURCES = parse3.c
-parse3_LDFLAGS =
-parse3_DEPENDENCIES = $(DEPS)
-parse3_LDADD = @RDL_LIBS@ $(LDADDS)
-reader3_SOURCES = reader3.c
-reader3_LDFLAGS =
-reader3_DEPENDENCIES = $(DEPS)
-reader3_LDADD = @RDL_LIBS@ $(LDADDS)
-tree2_SOURCES = tree2.c
-tree2_LDFLAGS =
-tree2_DEPENDENCIES = $(DEPS)
-tree2_LDADD = @RDL_LIBS@ $(LDADDS)
parse4_SOURCES = parse4.c
-parse4_LDFLAGS =
-parse4_DEPENDENCIES = $(DEPS)
-parse4_LDADD = @RDL_LIBS@ $(LDADDS)
-io2_SOURCES = io2.c
-io2_LDFLAGS =
-io2_DEPENDENCIES = $(DEPS)
-io2_LDADD = @RDL_LIBS@ $(LDADDS)
+reader1_SOURCES = reader1.c
+reader2_SOURCES = reader2.c
+reader3_SOURCES = reader3.c
+reader4_SOURCES = reader4.c
testWriter_SOURCES = testWriter.c
-testWriter_LDFLAGS =
-testWriter_DEPENDENCIES = $(DEPS)
-testWriter_LDADD = @RDL_LIBS@ $(LDADDS)
-io1_SOURCES = io1.c
-io1_LDFLAGS =
-io1_DEPENDENCIES = $(DEPS)
-io1_LDADD = @RDL_LIBS@ $(LDADDS)
-xpath1_SOURCES = xpath1.c
-xpath1_LDFLAGS =
-xpath1_DEPENDENCIES = $(DEPS)
-xpath1_LDADD = @RDL_LIBS@ $(LDADDS)
-parse1_SOURCES = parse1.c
-parse1_LDFLAGS =
-parse1_DEPENDENCIES = $(DEPS)
-parse1_LDADD = @RDL_LIBS@ $(LDADDS)
tree1_SOURCES = tree1.c
-tree1_LDFLAGS =
-tree1_DEPENDENCIES = $(DEPS)
-tree1_LDADD = @RDL_LIBS@ $(LDADDS)
+tree2_SOURCES = tree2.c
+xpath1_SOURCES = xpath1.c
+xpath2_SOURCES = xpath2.c
all: all-am
.SUFFIXES:
@@ -508,51 +588,66 @@ clean-noinstPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
-io1$(EXEEXT): $(io1_OBJECTS) $(io1_DEPENDENCIES)
+
+io1$(EXEEXT): $(io1_OBJECTS) $(io1_DEPENDENCIES) $(EXTRA_io1_DEPENDENCIES)
@rm -f io1$(EXEEXT)
- $(AM_V_CCLD)$(io1_LINK) $(io1_OBJECTS) $(io1_LDADD) $(LIBS)
-io2$(EXEEXT): $(io2_OBJECTS) $(io2_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(io1_OBJECTS) $(io1_LDADD) $(LIBS)
+
+io2$(EXEEXT): $(io2_OBJECTS) $(io2_DEPENDENCIES) $(EXTRA_io2_DEPENDENCIES)
@rm -f io2$(EXEEXT)
- $(AM_V_CCLD)$(io2_LINK) $(io2_OBJECTS) $(io2_LDADD) $(LIBS)
-parse1$(EXEEXT): $(parse1_OBJECTS) $(parse1_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(io2_OBJECTS) $(io2_LDADD) $(LIBS)
+
+parse1$(EXEEXT): $(parse1_OBJECTS) $(parse1_DEPENDENCIES) $(EXTRA_parse1_DEPENDENCIES)
@rm -f parse1$(EXEEXT)
- $(AM_V_CCLD)$(parse1_LINK) $(parse1_OBJECTS) $(parse1_LDADD) $(LIBS)
-parse2$(EXEEXT): $(parse2_OBJECTS) $(parse2_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(parse1_OBJECTS) $(parse1_LDADD) $(LIBS)
+
+parse2$(EXEEXT): $(parse2_OBJECTS) $(parse2_DEPENDENCIES) $(EXTRA_parse2_DEPENDENCIES)
@rm -f parse2$(EXEEXT)
- $(AM_V_CCLD)$(parse2_LINK) $(parse2_OBJECTS) $(parse2_LDADD) $(LIBS)
-parse3$(EXEEXT): $(parse3_OBJECTS) $(parse3_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(parse2_OBJECTS) $(parse2_LDADD) $(LIBS)
+
+parse3$(EXEEXT): $(parse3_OBJECTS) $(parse3_DEPENDENCIES) $(EXTRA_parse3_DEPENDENCIES)
@rm -f parse3$(EXEEXT)
- $(AM_V_CCLD)$(parse3_LINK) $(parse3_OBJECTS) $(parse3_LDADD) $(LIBS)
-parse4$(EXEEXT): $(parse4_OBJECTS) $(parse4_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(parse3_OBJECTS) $(parse3_LDADD) $(LIBS)
+
+parse4$(EXEEXT): $(parse4_OBJECTS) $(parse4_DEPENDENCIES) $(EXTRA_parse4_DEPENDENCIES)
@rm -f parse4$(EXEEXT)
- $(AM_V_CCLD)$(parse4_LINK) $(parse4_OBJECTS) $(parse4_LDADD) $(LIBS)
-reader1$(EXEEXT): $(reader1_OBJECTS) $(reader1_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(parse4_OBJECTS) $(parse4_LDADD) $(LIBS)
+
+reader1$(EXEEXT): $(reader1_OBJECTS) $(reader1_DEPENDENCIES) $(EXTRA_reader1_DEPENDENCIES)
@rm -f reader1$(EXEEXT)
- $(AM_V_CCLD)$(reader1_LINK) $(reader1_OBJECTS) $(reader1_LDADD) $(LIBS)
-reader2$(EXEEXT): $(reader2_OBJECTS) $(reader2_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(reader1_OBJECTS) $(reader1_LDADD) $(LIBS)
+
+reader2$(EXEEXT): $(reader2_OBJECTS) $(reader2_DEPENDENCIES) $(EXTRA_reader2_DEPENDENCIES)
@rm -f reader2$(EXEEXT)
- $(AM_V_CCLD)$(reader2_LINK) $(reader2_OBJECTS) $(reader2_LDADD) $(LIBS)
-reader3$(EXEEXT): $(reader3_OBJECTS) $(reader3_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(reader2_OBJECTS) $(reader2_LDADD) $(LIBS)
+
+reader3$(EXEEXT): $(reader3_OBJECTS) $(reader3_DEPENDENCIES) $(EXTRA_reader3_DEPENDENCIES)
@rm -f reader3$(EXEEXT)
- $(AM_V_CCLD)$(reader3_LINK) $(reader3_OBJECTS) $(reader3_LDADD) $(LIBS)
-reader4$(EXEEXT): $(reader4_OBJECTS) $(reader4_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(reader3_OBJECTS) $(reader3_LDADD) $(LIBS)
+
+reader4$(EXEEXT): $(reader4_OBJECTS) $(reader4_DEPENDENCIES) $(EXTRA_reader4_DEPENDENCIES)
@rm -f reader4$(EXEEXT)
- $(AM_V_CCLD)$(reader4_LINK) $(reader4_OBJECTS) $(reader4_LDADD) $(LIBS)
-testWriter$(EXEEXT): $(testWriter_OBJECTS) $(testWriter_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(reader4_OBJECTS) $(reader4_LDADD) $(LIBS)
+
+testWriter$(EXEEXT): $(testWriter_OBJECTS) $(testWriter_DEPENDENCIES) $(EXTRA_testWriter_DEPENDENCIES)
@rm -f testWriter$(EXEEXT)
- $(AM_V_CCLD)$(testWriter_LINK) $(testWriter_OBJECTS) $(testWriter_LDADD) $(LIBS)
-tree1$(EXEEXT): $(tree1_OBJECTS) $(tree1_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(testWriter_OBJECTS) $(testWriter_LDADD) $(LIBS)
+
+tree1$(EXEEXT): $(tree1_OBJECTS) $(tree1_DEPENDENCIES) $(EXTRA_tree1_DEPENDENCIES)
@rm -f tree1$(EXEEXT)
- $(AM_V_CCLD)$(tree1_LINK) $(tree1_OBJECTS) $(tree1_LDADD) $(LIBS)
-tree2$(EXEEXT): $(tree2_OBJECTS) $(tree2_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(tree1_OBJECTS) $(tree1_LDADD) $(LIBS)
+
+tree2$(EXEEXT): $(tree2_OBJECTS) $(tree2_DEPENDENCIES) $(EXTRA_tree2_DEPENDENCIES)
@rm -f tree2$(EXEEXT)
- $(AM_V_CCLD)$(tree2_LINK) $(tree2_OBJECTS) $(tree2_LDADD) $(LIBS)
-xpath1$(EXEEXT): $(xpath1_OBJECTS) $(xpath1_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(tree2_OBJECTS) $(tree2_LDADD) $(LIBS)
+
+xpath1$(EXEEXT): $(xpath1_OBJECTS) $(xpath1_DEPENDENCIES) $(EXTRA_xpath1_DEPENDENCIES)
@rm -f xpath1$(EXEEXT)
- $(AM_V_CCLD)$(xpath1_LINK) $(xpath1_OBJECTS) $(xpath1_LDADD) $(LIBS)
-xpath2$(EXEEXT): $(xpath2_OBJECTS) $(xpath2_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(xpath1_OBJECTS) $(xpath1_LDADD) $(LIBS)
+
+xpath2$(EXEEXT): $(xpath2_OBJECTS) $(xpath2_DEPENDENCIES) $(EXTRA_xpath2_DEPENDENCIES)
@rm -f xpath2$(EXEEXT)
- $(AM_V_CCLD)$(xpath2_LINK) $(xpath2_OBJECTS) $(xpath2_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(xpath2_OBJECTS) $(xpath2_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -579,26 +674,23 @@ distclean-compile:
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
@@ -606,26 +698,15 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -637,15 +718,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -654,6 +731,21 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -702,13 +794,19 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -719,7 +817,7 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \
mostlyclean-am
distclean: distclean-am
@@ -790,69 +888,76 @@ uninstall-am:
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-data-local install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-local clean-noinstPROGRAMS cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am
+ tags tags-am uninstall uninstall-am
-rebuild: examples.xml index.html
+@REBUILD_DOCS_TRUE@rebuild: examples.xml index.html
+@REBUILD_DOCS_TRUE@.PHONY: rebuild
-examples.xml: index.py *.c
- -@($(srcdir)/index.py)
+@REBUILD_DOCS_TRUE@examples.xml: index.py $(noinst_PROGRAMS:=.c)
+@REBUILD_DOCS_TRUE@ cd $(srcdir) && $(PYTHON) index.py
+@REBUILD_DOCS_TRUE@ $(MAKE) Makefile
-index.html: examples.xml examples.xsl
- -@(xsltproc examples.xsl examples.xml && echo "Rebuilt web page" && xmllint --valid --noout index.html)
+@REBUILD_DOCS_TRUE@index.html: examples.xml examples.xsl
+@REBUILD_DOCS_TRUE@ cd $(srcdir) && xsltproc examples.xsl examples.xml && echo "Rebuilt web page"
+@REBUILD_DOCS_TRUE@ -cd $(srcdir) && xmllint --valid --noout index.html
install-data-local:
- @MKDIR_P@ $(DESTDIR)$(HTML_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
+
+clean-local:
+ test -f Makefile.am || rm -f test?.xml
valgrind:
$(MAKE) CHECKER='valgrind' tests
tests: $(noinst_PROGRAMS)
+ test -f Makefile.am || test -f test1.xml || $(LN_S) $(srcdir)/test?.xml .
@(echo '## examples regression tests')
@(echo > .memdump)
- @($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse2 test2.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse3)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse4 test3.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse1 test1.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ $(CHECKER) ./io1 > io1.tmp && diff io1.tmp $(srcdir)/io1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./io2 > io2.tmp && diff io2.tmp $(srcdir)/io2.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse1 test1.xml
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse2 test2.xml
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse3
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./parse4 test3.xml
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader1 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader2 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader3 > reader3.tmp && diff reader3.tmp $(srcdir)/reader3.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp && diff reader4.tmp $(srcdir)/reader4.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./testWriter && for i in 1 2 3 4 ; do diff $(srcdir)/writer.xml writer$$i.tmp || break ; done
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./tree1 test2.xml > tree1.tmp && diff tree1.tmp $(srcdir)/tree1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./tree2 > tree2.tmp && diff tree2.tmp $(srcdir)/tree2.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./xpath1 test3.xml '//child2' > xpath1.tmp && diff xpath1.tmp $(srcdir)/xpath1.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
+ $(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp && diff xpath2.tmp $(srcdir)/xpath2.res
+ @grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/doc/examples/examples.xml b/doc/examples/examples.xml
index a237a0e..28929cc 100644
--- a/doc/examples/examples.xml
+++ b/doc/examples/examples.xml
@@ -1,74 +1,9 @@
<examples>
- <example filename='reader2.c'>
- <synopsis>Parse and validate an XML file with an xmlReader</synopsis>
- <purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file validating the content in the process and activating options like entities substitution, and DTD attributes defaulting. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
- <usage>reader2 &lt;valid_xml_filename&gt;</usage>
- <test>reader2 test2.xml &gt; reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp</test>
- <author>Daniel Veillard</author>
- <copy>see Copyright for the status of this software. </copy>
- <section>xmlReader</section>
- <includes>
- <include>&lt;libxml/xmlreader.h&gt;</include>
- </includes>
- <uses>
- <function line='45' file='xmlstring' name='xmlStrlen'/>
- <function line='109' file='parser' name='xmlCleanupParser'/>
- <function line='38' file='xmlreader' name='xmlTextReaderNodeType'/>
- <typedef line='60' file='xmlreader' name='xmlTextReaderPtr'/>
- <function line='113' file='xmlmemory' name='xmlMemoryDump'/>
- <function line='34' file='xmlreader' name='xmlTextReaderConstValue'/>
- <enum line='70' file='parser' name='XML_PARSE_NOENT'/>
- <function line='37' file='xmlreader' name='xmlTextReaderDepth'/>
- <enum line='71' file='parser' name='XML_PARSE_DTDVALID'/>
- <enum line='69' file='parser' name='XML_PARSE_DTDATTR'/>
- <function line='84' file='xmlreader' name='xmlFreeTextReader'/>
- <macro line='104' file='xmlversion' name='LIBXML_TEST_VERSION'/>
- <function line='30' file='xmlreader' name='xmlTextReaderConstName'/>
- <function line='41' file='xmlreader' name='xmlTextReaderHasValue'/>
- <function line='76' file='xmlreader' name='xmlTextReaderRead'/>
- <function line='40' file='xmlreader' name='xmlTextReaderIsEmptyElement'/>
- <function line='68' file='xmlreader' name='xmlReaderForFile'/>
- <function line='81' file='xmlreader' name='xmlTextReaderIsValid'/>
- </uses>
- </example>
- <example filename='xpath2.c'>
- <synopsis>Load a document, locate subelements with XPath, modify said elements and save the resulting document.</synopsis>
- <purpose>Shows how to make a full round-trip from a load/edit/save</purpose>
- <usage>xpath2 &lt;xml-file&gt; &lt;xpath-expr&gt; &lt;new-value&gt;</usage>
- <test>xpath2 test3.xml &apos;//discarded&apos; discarded &gt; xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp</test>
- <author>Aleksey Sanin and Daniel Veillard</author>
- <copy>see Copyright for the status of this software. </copy>
- <section>XPath</section>
- <includes>
- <include>&lt;libxml/parser.h&gt;</include>
- <include>&lt;libxml/xpath.h&gt;</include>
- <include>&lt;libxml/xpathInternals.h&gt;</include>
- <include>&lt;libxml/tree.h&gt;</include>
- </includes>
- <uses>
- <function line='162' file='tree' name='xmlNodeSetContent'/>
- <function line='127' file='tree' name='xmlDocDump'/>
- <typedef line='88' file='xpath' name='xmlXPathObjectPtr'/>
- <function line='56' file='xmlmemory' name='xmlMemoryDump'/>
- <function line='110' file='xpath' name='xmlXPathEvalExpression'/>
- <function line='95' file='parser' name='xmlParseFile'/>
- <function line='123' file='xpath' name='xmlXPathFreeObject'/>
- <function line='102' file='xpath' name='xmlXPathNewContext'/>
- <function line='51' file='parser' name='xmlCleanupParser'/>
- <macro line='45' file='xmlversion' name='LIBXML_TEST_VERSION'/>
- <typedef line='87' file='xpath' name='xmlXPathContextPtr'/>
- <function line='124' file='xpath' name='xmlXPathFreeContext'/>
- <function line='41' file='parser' name='xmlInitParser'/>
- <function line='131' file='tree' name='xmlFreeDoc'/>
- <enum line='180' file='tree' name='XML_NAMESPACE_DECL'/>
- <typedef line='86' file='tree' name='xmlDocPtr'/>
- </uses>
- </example>
<example filename='xpath1.c'>
<synopsis>Evaluate XPath expression and prints result node set.</synopsis>
<purpose>Shows how to evaluate XPath expression and register known namespaces in XPath context.</purpose>
<usage>xpath1 &lt;xml-file&gt; &lt;xpath-expr&gt; [&lt;known-ns-list&gt;]</usage>
- <test>./xpath1 test3.xml &apos;//child2&apos; &gt; xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp</test>
+ <test>xpath1 test3.xml &apos;//child2&apos; &gt; xpath1.tmp &amp;&amp; diff xpath1.tmp $(srcdir)/xpath1.res</test>
<author>Aleksey Sanin</author>
<copy>see Copyright for the status of this software. </copy>
<section>XPath</section>
@@ -123,34 +58,43 @@
<typedef line='27' file='tree' name='xmlDocPtr'/>
</uses>
</example>
- <example filename='io2.c'>
- <synopsis>Output to char buffer</synopsis>
- <purpose>Demonstrate the use of xmlDocDumpMemory to output document to a character buffer</purpose>
- <usage>io2</usage>
- <test>io2 &gt; io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp</test>
- <author>John Fleck</author>
+ <example filename='reader2.c'>
+ <synopsis>Parse and validate an XML file with an xmlReader</synopsis>
+ <purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file validating the content in the process and activating options like entities substitution, and DTD attributes defaulting. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
+ <usage>reader2 &lt;valid_xml_filename&gt;</usage>
+ <test>reader2 test2.xml &gt; reader1.tmp &amp;&amp; diff reader1.tmp $(srcdir)/reader1.res</test>
+ <author>Daniel Veillard</author>
<copy>see Copyright for the status of this software. </copy>
- <section>InputOutput</section>
+ <section>xmlReader</section>
<includes>
- <include>&lt;libxml/parser.h&gt;</include>
+ <include>&lt;libxml/xmlreader.h&gt;</include>
</includes>
<uses>
- <function line='29' file='tree' name='xmlNodeSetContent'/>
- <function line='36' file='tree' name='xmlDocDumpFormatMemory'/>
- <variable line='42' file='globals' name='xmlFree'/>
- <function line='30' file='tree' name='xmlDocSetRootElement'/>
- <typedef line='20' file='tree' name='xmlDocPtr'/>
- <function line='43' file='tree' name='xmlFreeDoc'/>
- <typedef line='19' file='tree' name='xmlNodePtr'/>
- <function line='27' file='tree' name='xmlNewDoc'/>
- <function line='28' file='tree' name='xmlNewNode'/>
+ <function line='45' file='xmlstring' name='xmlStrlen'/>
+ <function line='109' file='parser' name='xmlCleanupParser'/>
+ <function line='38' file='xmlreader' name='xmlTextReaderNodeType'/>
+ <typedef line='60' file='xmlreader' name='xmlTextReaderPtr'/>
+ <function line='113' file='xmlmemory' name='xmlMemoryDump'/>
+ <function line='34' file='xmlreader' name='xmlTextReaderConstValue'/>
+ <enum line='70' file='parser' name='XML_PARSE_NOENT'/>
+ <function line='37' file='xmlreader' name='xmlTextReaderDepth'/>
+ <enum line='71' file='parser' name='XML_PARSE_DTDVALID'/>
+ <enum line='69' file='parser' name='XML_PARSE_DTDATTR'/>
+ <function line='84' file='xmlreader' name='xmlFreeTextReader'/>
+ <macro line='104' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+ <function line='30' file='xmlreader' name='xmlTextReaderConstName'/>
+ <function line='41' file='xmlreader' name='xmlTextReaderHasValue'/>
+ <function line='76' file='xmlreader' name='xmlTextReaderRead'/>
+ <function line='40' file='xmlreader' name='xmlTextReaderIsEmptyElement'/>
+ <function line='68' file='xmlreader' name='xmlReaderForFile'/>
+ <function line='81' file='xmlreader' name='xmlTextReaderIsValid'/>
</uses>
</example>
<example filename='tree2.c'>
<synopsis>Creates a tree</synopsis>
<purpose>Shows how to create document, nodes and dump it to stdout or file.</purpose>
<usage>tree2 &lt;filename&gt; -Default output: stdout</usage>
- <test>tree2 &gt; tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp</test>
+ <test>tree2 &gt; tree2.tmp &amp;&amp; diff tree2.tmp $(srcdir)/tree2.res</test>
<author>Lucas Brasilino &lt;brasilino@recife.pe.gov.br&gt;</author>
<copy>see Copyright for the status of this software </copy>
<section>Tree</section>
@@ -174,11 +118,113 @@
<function line='39' file='tree' name='xmlNewDoc'/>
</uses>
</example>
+ <example filename='io1.c'>
+ <synopsis>Example of custom Input/Output</synopsis>
+ <purpose>Demonstrate the use of xmlRegisterInputCallbacks to build a custom I/O layer, this is used in an XInclude method context to show how dynamic document can be built in a clean way.</purpose>
+ <usage>io1</usage>
+ <test>io1 &gt; io1.tmp &amp;&amp; diff io1.tmp $(srcdir)/io1.res</test>
+ <author>Daniel Veillard</author>
+ <copy>see Copyright for the status of this software. </copy>
+ <section>InputOutput</section>
+ <includes>
+ <include>&lt;libxml/parser.h&gt;</include>
+ <include>&lt;libxml/xmlIO.h&gt;</include>
+ <include>&lt;libxml/xinclude.h&gt;</include>
+ <include>&lt;libxml/tree.h&gt;</include>
+ </includes>
+ <uses>
+ <function line='143' file='tree' name='xmlDocDump'/>
+ <function line='158' file='xmlmemory' name='xmlMemoryDump'/>
+ <function line='149' file='tree' name='xmlFreeDoc'/>
+ <function line='154' file='parser' name='xmlCleanupParser'/>
+ <macro line='117' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+ <function line='134' file='xinclude' name='xmlXIncludeProcess'/>
+ <function line='117' file='xmlIO' name='xmlRegisterInputCallbacks'/>
+ <function line='124' file='parser' name='xmlReadMemory'/>
+ <typedef line='105' file='tree' name='xmlDocPtr'/>
+ </uses>
+ </example>
+ <example filename='parse4.c'>
+ <synopsis>Parse an XML document chunk by chunk to a tree and free it</synopsis>
+ <purpose>Demonstrate the use of xmlCreatePushParserCtxt() and xmlParseChunk() to read an XML file progressively into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
+ <usage>parse4 test3.xml</usage>
+ <test>parse4 test3.xml</test>
+ <author>Daniel Veillard</author>
+ <copy>see Copyright for the status of this software. </copy>
+ <section>Parsing</section>
+ <includes>
+ <include>&lt;libxml/tree.h&gt;</include>
+ <include>&lt;libxml/parser.h&gt;</include>
+ </includes>
+ <uses>
+ <function line='94' file='parser' name='xmlFreeParserCtxt'/>
+ <function line='86' file='parser' name='xmlParseChunk'/>
+ <function line='103' file='tree' name='xmlFreeDoc'/>
+ <function line='135' file='xmlmemory' name='xmlMemoryDump'/>
+ <function line='67' file='parser' name='xmlCreatePushParserCtxt'/>
+ <function line='131' file='parser' name='xmlCleanupParser'/>
+ <macro line='120' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+ <typedef line='45' file='tree' name='xmlParserCtxtPtr'/>
+ <typedef line='47' file='tree' name='xmlDocPtr'/>
+ </uses>
+ </example>
+ <example filename='xpath2.c'>
+ <synopsis>Load a document, locate subelements with XPath, modify said elements and save the resulting document.</synopsis>
+ <purpose>Shows how to make a full round-trip from a load/edit/save</purpose>
+ <usage>xpath2 &lt;xml-file&gt; &lt;xpath-expr&gt; &lt;new-value&gt;</usage>
+ <test>xpath2 test3.xml &apos;//discarded&apos; discarded &gt; xpath2.tmp &amp;&amp; diff xpath2.tmp $(srcdir)/xpath2.res</test>
+ <author>Aleksey Sanin and Daniel Veillard</author>
+ <copy>see Copyright for the status of this software. </copy>
+ <section>XPath</section>
+ <includes>
+ <include>&lt;libxml/parser.h&gt;</include>
+ <include>&lt;libxml/xpath.h&gt;</include>
+ <include>&lt;libxml/xpathInternals.h&gt;</include>
+ <include>&lt;libxml/tree.h&gt;</include>
+ </includes>
+ <uses>
+ <function line='162' file='tree' name='xmlNodeSetContent'/>
+ <function line='127' file='tree' name='xmlDocDump'/>
+ <typedef line='88' file='xpath' name='xmlXPathObjectPtr'/>
+ <function line='110' file='xpath' name='xmlXPathEvalExpression'/>
+ <function line='95' file='parser' name='xmlParseFile'/>
+ <function line='123' file='xpath' name='xmlXPathFreeObject'/>
+ <function line='102' file='xpath' name='xmlXPathNewContext'/>
+ <typedef line='87' file='xpath' name='xmlXPathContextPtr'/>
+ <function line='124' file='xpath' name='xmlXPathFreeContext'/>
+ <function line='41' file='parser' name='xmlInitParser'/>
+ <function line='131' file='tree' name='xmlFreeDoc'/>
+ <enum line='180' file='tree' name='XML_NAMESPACE_DECL'/>
+ <typedef line='86' file='tree' name='xmlDocPtr'/>
+ </uses>
+ </example>
+ <example filename='io2.c'>
+ <synopsis>Output to char buffer</synopsis>
+ <purpose>Demonstrate the use of xmlDocDumpMemory to output document to a character buffer</purpose>
+ <usage>io2</usage>
+ <test>io2 &gt; io2.tmp &amp;&amp; diff io2.tmp $(srcdir)/io2.res</test>
+ <author>John Fleck</author>
+ <copy>see Copyright for the status of this software. </copy>
+ <section>InputOutput</section>
+ <includes>
+ <include>&lt;libxml/parser.h&gt;</include>
+ </includes>
+ <uses>
+ <function line='29' file='tree' name='xmlNodeSetContent'/>
+ <function line='36' file='tree' name='xmlDocDumpFormatMemory'/>
+ <variable line='42' file='globals' name='xmlFree'/>
+ <function line='30' file='tree' name='xmlDocSetRootElement'/>
+ <typedef line='20' file='tree' name='xmlDocPtr'/>
+ <typedef line='19' file='tree' name='xmlNodePtr'/>
+ <function line='27' file='tree' name='xmlNewDoc'/>
+ <function line='28' file='tree' name='xmlNewNode'/>
+ </uses>
+ </example>
<example filename='reader1.c'>
<synopsis>Parse an XML file with an xmlReader</synopsis>
<purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file and dump the informations about the nodes found in the process. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
<usage>reader1 &lt;filename&gt;</usage>
- <test>reader1 test2.xml &gt; reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp</test>
+ <test>reader1 test2.xml &gt; reader1.tmp &amp;&amp; diff reader1.tmp $(srcdir)/reader1.res</test>
<author>Daniel Veillard</author>
<copy>see Copyright for the status of this software. </copy>
<section>xmlReader</section>
@@ -187,14 +233,11 @@
</includes>
<uses>
<function line='44' file='xmlstring' name='xmlStrlen'/>
- <function line='94' file='parser' name='xmlCleanupParser'/>
<function line='37' file='xmlreader' name='xmlTextReaderNodeType'/>
<typedef line='59' file='xmlreader' name='xmlTextReaderPtr'/>
- <function line='98' file='xmlmemory' name='xmlMemoryDump'/>
<function line='33' file='xmlreader' name='xmlTextReaderConstValue'/>
<function line='36' file='xmlreader' name='xmlTextReaderDepth'/>
<function line='69' file='xmlreader' name='xmlFreeTextReader'/>
- <macro line='89' file='xmlversion' name='LIBXML_TEST_VERSION'/>
<function line='29' file='xmlreader' name='xmlTextReaderConstName'/>
<function line='40' file='xmlreader' name='xmlTextReaderHasValue'/>
<function line='67' file='xmlreader' name='xmlTextReaderRead'/>
@@ -202,77 +245,29 @@
<function line='62' file='xmlreader' name='xmlReaderForFile'/>
</uses>
</example>
- <example filename='testWriter.c'>
- <synopsis>use various APIs for the xmlWriter</synopsis>
- <purpose>tests a number of APIs for the xmlWriter, especially the various methods to write to a filename, to a memory buffer, to a new document, or to a subtree. It shows how to do encoding string conversions too. The resulting documents are then serialized.</purpose>
- <usage>testWriter</usage>
- <test>testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res</test>
- <author>Alfred Mickautsch</author>
- <copy>see Copyright for the status of this software. </copy>
- <section>xmlWriter</section>
- <includes>
- <include>&lt;libxml/encoding.h&gt;</include>
- <include>&lt;libxml/xmlwriter.h&gt;</include>
- </includes>
- <uses>
- <function line='913' file='xmlwriter' name='xmlTextWriterStartDocument'/>
- <function line='1121' file='xmlwriter' name='xmlTextWriterEndDocument'/>
- <variable line='1183' file='globals' name='xmlRealloc'/>
- <function line='925' file='xmlwriter' name='xmlTextWriterWriteComment'/>
- <function line='1156' file='encoding' name='xmlFindCharEncodingHandler'/>
- <variable line='1166' file='globals' name='xmlMalloc'/>
- <typedef line='879' file='tree' name='xmlDocPtr'/>
- <typedef line='341' file='tree' name='xmlBufferPtr'/>
- <macro line='885' file='parser' name='XML_DEFAULT_VERSION'/>
- <function line='901' file='tree' name='xmlDocSetRootElement'/>
- <function line='1127' file='xmlwriter' name='xmlFreeTextWriter'/>
- <function line='1096' file='xmlwriter' name='xmlTextWriterStartElement'/>
- <function line='347' file='tree' name='xmlBufferCreate'/>
- <function line='1111' file='xmlwriter' name='xmlTextWriterEndElement'/>
- <function line='76' file='xmlwriter' name='xmlNewTextWriterFilename'/>
- <function line='959' file='xmlwriter' name='xmlTextWriterWriteFormatComment'/>
- <function line='1073' file='xmlwriter' name='xmlTextWriterWriteFormatElement'/>
- <typedef line='1151' file='encoding' name='xmlCharEncodingHandlerPtr'/>
- <function line='1131' file='tree' name='xmlFreeDoc'/>
- <typedef line='880' file='tree' name='xmlNodePtr'/>
- <function line='949' file='xmlwriter' name='xmlTextWriterWriteAttribute'/>
- <function line='632' file='xmlwriter' name='xmlNewTextWriterDoc'/>
- <function line='894' file='tree' name='xmlNewDocNode'/>
- <function line='1129' file='tree' name='xmlSaveFileEnc'/>
- <function line='904' file='xmlwriter' name='xmlNewTextWriterTree'/>
- <function line='355' file='xmlwriter' name='xmlNewTextWriterMemory'/>
- <variable line='1180' file='globals' name='xmlFree'/>
- <function line='613' file='tree' name='xmlBufferFree'/>
- <typedef line='878' file='xmlwriter' name='xmlTextWriterPtr'/>
- <function line='1103' file='xmlwriter' name='xmlTextWriterWriteElement'/>
- <function line='885' file='tree' name='xmlNewDoc'/>
- </uses>
- </example>
- <example filename='parse4.c'>
- <synopsis>Parse an XML document chunk by chunk to a tree and free it</synopsis>
- <purpose>Demonstrate the use of xmlCreatePushParserCtxt() and xmlParseChunk() to read an XML file progressively into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
- <usage>parse4 test3.xml</usage>
- <test>parse4 test3.xml</test>
- <author>Daniel Veillard</author>
+ <example filename='tree1.c'>
+ <synopsis>Navigates a tree to print element names</synopsis>
+ <purpose>Parse a file to a tree, use xmlDocGetRootElement() to get the root element, then walk the document and print all the element name in document order.</purpose>
+ <usage>tree1 filename_or_URL</usage>
+ <test>tree1 test2.xml &gt; tree1.tmp &amp;&amp; diff tree1.tmp $(srcdir)/tree1.res</test>
+ <author>Dodji Seketeli</author>
<copy>see Copyright for the status of this software. </copy>
- <section>Parsing</section>
+ <section>Tree</section>
<includes>
<include>&lt;libxml/tree.h&gt;</include>
<include>&lt;libxml/parser.h&gt;</include>
</includes>
<uses>
- <function line='94' file='parser' name='xmlFreeParserCtxt'/>
- <function line='86' file='parser' name='xmlParseChunk'/>
- <function line='67' file='parser' name='xmlCreatePushParserCtxt'/>
- <typedef line='45' file='tree' name='xmlParserCtxtPtr'/>
- <typedef line='47' file='tree' name='xmlDocPtr'/>
+ <enum line='36' file='tree' name='XML_ELEMENT_NODE'/>
+ <function line='74' file='tree' name='xmlDocGetRootElement'/>
+ <function line='67' file='parser' name='xmlReadFile'/>
</uses>
</example>
<example filename='reader3.c'>
<synopsis>Show how to extract subdocuments with xmlReader</synopsis>
<purpose>Demonstrate the use of xmlTextReaderPreservePattern() to parse an XML file with the xmlReader while collecting only some subparts of the document. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
<usage>reader3</usage>
- <test>reader3 &gt; reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp</test>
+ <test>reader3 &gt; reader3.tmp &amp;&amp; diff reader3.tmp $(srcdir)/reader3.res</test>
<author>Daniel Veillard</author>
<copy>see Copyright for the status of this software. </copy>
<section>xmlReader</section>
@@ -289,25 +284,24 @@
<function line='38' file='xmlreader' name='xmlReaderForFile'/>
</uses>
</example>
- <example filename='io1.c'>
- <synopsis>Example of custom Input/Output</synopsis>
- <purpose>Demonstrate the use of xmlRegisterInputCallbacks to build a custom I/O layer, this is used in an XInclude method context to show how dynamic document can be built in a clean way.</purpose>
- <usage>io1</usage>
- <test>io1 &gt; io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp</test>
+ <example filename='parse2.c'>
+ <synopsis>Parse and validate an XML file to a tree and free the result</synopsis>
+ <purpose>Create a parser context for an XML file, then parse and validate the file, creating a tree, check the validation result and xmlFreeDoc() to free the resulting tree.</purpose>
+ <usage>parse2 test2.xml</usage>
+ <test>parse2 test2.xml</test>
<author>Daniel Veillard</author>
<copy>see Copyright for the status of this software. </copy>
- <section>InputOutput</section>
+ <section>Parsing</section>
<includes>
- <include>&lt;libxml/parser.h&gt;</include>
- <include>&lt;libxml/xmlIO.h&gt;</include>
- <include>&lt;libxml/xinclude.h&gt;</include>
<include>&lt;libxml/tree.h&gt;</include>
+ <include>&lt;libxml/parser.h&gt;</include>
</includes>
<uses>
- <function line='143' file='tree' name='xmlDocDump'/>
- <function line='134' file='xinclude' name='xmlXIncludeProcess'/>
- <function line='117' file='xmlIO' name='xmlRegisterInputCallbacks'/>
- <function line='124' file='parser' name='xmlReadMemory'/>
+ <function line='47' file='parser' name='xmlFreeParserCtxt'/>
+ <enum line='35' file='parser' name='XML_PARSE_DTDVALID'/>
+ <function line='29' file='parser' name='xmlNewParserCtxt'/>
+ <typedef line='25' file='tree' name='xmlParserCtxtPtr'/>
+ <function line='35' file='parser' name='xmlCtxtReadFile'/>
</uses>
</example>
<example filename='parse1.c'>
@@ -326,29 +320,11 @@
<function line='26' file='parser' name='xmlReadFile'/>
</uses>
</example>
- <example filename='tree1.c'>
- <synopsis>Navigates a tree to print element names</synopsis>
- <purpose>Parse a file to a tree, use xmlDocGetRootElement() to get the root element, then walk the document and print all the element name in document order.</purpose>
- <usage>tree1 filename_or_URL</usage>
- <test>tree1 test2.xml &gt; tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp</test>
- <author>Dodji Seketeli</author>
- <copy>see Copyright for the status of this software. </copy>
- <section>Tree</section>
- <includes>
- <include>&lt;libxml/tree.h&gt;</include>
- <include>&lt;libxml/parser.h&gt;</include>
- </includes>
- <uses>
- <enum line='36' file='tree' name='XML_ELEMENT_NODE'/>
- <function line='74' file='tree' name='xmlDocGetRootElement'/>
- <function line='67' file='parser' name='xmlReadFile'/>
- </uses>
- </example>
<example filename='reader4.c'>
<synopsis>Parse multiple XML files reusing an xmlReader</synopsis>
<purpose>Demonstrate the use of xmlReaderForFile() and xmlReaderNewFile to parse XML files while reusing the reader object and parser context. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
<usage>reader4 &lt;filename&gt; [ filename ... ]</usage>
- <test>reader4 test1.xml test2.xml test3.xml &gt; reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp</test>
+ <test>reader4 test1.xml test2.xml test3.xml &gt; reader4.tmp &amp;&amp; diff reader4.tmp $(srcdir)/reader4.res</test>
<author>Graham Bennett</author>
<copy>see Copyright for the status of this software. </copy>
<section>xmlReader</section>
@@ -364,34 +340,58 @@
<function line='72' file='xmlreader' name='xmlReaderForFile'/>
</uses>
</example>
- <example filename='parse2.c'>
- <synopsis>Parse and validate an XML file to a tree and free the result</synopsis>
- <purpose>Create a parser context for an XML file, then parse and validate the file, creating a tree, check the validation result and xmlFreeDoc() to free the resulting tree.</purpose>
- <usage>parse2 test2.xml</usage>
- <test>parse2 test2.xml</test>
- <author>Daniel Veillard</author>
+ <example filename='testWriter.c'>
+ <synopsis>use various APIs for the xmlWriter</synopsis>
+ <purpose>tests a number of APIs for the xmlWriter, especially the various methods to write to a filename, to a memory buffer, to a new document, or to a subtree. It shows how to do encoding string conversions too. The resulting documents are then serialized.</purpose>
+ <usage>testWriter</usage>
+ <test>testWriter &amp;&amp; for i in 1 2 3 4 ; do diff $(srcdir)/writer.xml writer$$i.tmp || break ; done</test>
+ <author>Alfred Mickautsch</author>
<copy>see Copyright for the status of this software. </copy>
- <section>Parsing</section>
+ <section>xmlWriter</section>
<includes>
- <include>&lt;libxml/tree.h&gt;</include>
- <include>&lt;libxml/parser.h&gt;</include>
+ <include>&lt;libxml/encoding.h&gt;</include>
+ <include>&lt;libxml/xmlwriter.h&gt;</include>
</includes>
<uses>
- <function line='47' file='parser' name='xmlFreeParserCtxt'/>
- <enum line='35' file='parser' name='XML_PARSE_DTDVALID'/>
- <function line='29' file='parser' name='xmlNewParserCtxt'/>
- <typedef line='25' file='tree' name='xmlParserCtxtPtr'/>
- <function line='35' file='parser' name='xmlCtxtReadFile'/>
+ <function line='913' file='xmlwriter' name='xmlTextWriterStartDocument'/>
+ <function line='1121' file='xmlwriter' name='xmlTextWriterEndDocument'/>
+ <variable line='1183' file='globals' name='xmlRealloc'/>
+ <function line='925' file='xmlwriter' name='xmlTextWriterWriteComment'/>
+ <function line='1156' file='encoding' name='xmlFindCharEncodingHandler'/>
+ <variable line='1166' file='globals' name='xmlMalloc'/>
+ <typedef line='341' file='tree' name='xmlBufferPtr'/>
+ <macro line='885' file='parser' name='XML_DEFAULT_VERSION'/>
+ <function line='901' file='tree' name='xmlDocSetRootElement'/>
+ <function line='1127' file='xmlwriter' name='xmlFreeTextWriter'/>
+ <function line='1096' file='xmlwriter' name='xmlTextWriterStartElement'/>
+ <function line='347' file='tree' name='xmlBufferCreate'/>
+ <function line='1111' file='xmlwriter' name='xmlTextWriterEndElement'/>
+ <function line='76' file='xmlwriter' name='xmlNewTextWriterFilename'/>
+ <function line='959' file='xmlwriter' name='xmlTextWriterWriteFormatComment'/>
+ <function line='1073' file='xmlwriter' name='xmlTextWriterWriteFormatElement'/>
+ <typedef line='1151' file='encoding' name='xmlCharEncodingHandlerPtr'/>
+ <typedef line='880' file='tree' name='xmlNodePtr'/>
+ <function line='949' file='xmlwriter' name='xmlTextWriterWriteAttribute'/>
+ <function line='632' file='xmlwriter' name='xmlNewTextWriterDoc'/>
+ <function line='894' file='tree' name='xmlNewDocNode'/>
+ <function line='1129' file='tree' name='xmlSaveFileEnc'/>
+ <function line='904' file='xmlwriter' name='xmlNewTextWriterTree'/>
+ <function line='355' file='xmlwriter' name='xmlNewTextWriterMemory'/>
+ <variable line='1180' file='globals' name='xmlFree'/>
+ <function line='613' file='tree' name='xmlBufferFree'/>
+ <typedef line='878' file='xmlwriter' name='xmlTextWriterPtr'/>
+ <function line='1103' file='xmlwriter' name='xmlTextWriterWriteElement'/>
+ <function line='885' file='tree' name='xmlNewDoc'/>
</uses>
</example>
<symbols>
<symbol name='LIBXML_TEST_VERSION'>
- <ref filename='reader2.c'/>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
<ref filename='parse3.c'/>
+ <ref filename='reader2.c'/>
<ref filename='tree2.c'/>
- <ref filename='reader1.c'/>
+ <ref filename='io1.c'/>
+ <ref filename='parse4.c'/>
</symbol>
<symbol name='XML_DEFAULT_VERSION'>
<ref filename='testWriter.c'/>
@@ -401,8 +401,8 @@
<ref filename='tree1.c'/>
</symbol>
<symbol name='XML_NAMESPACE_DECL'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='XML_PARSE_DTDATTR'>
<ref filename='reader2.c'/>
@@ -430,12 +430,12 @@
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlCleanupParser'>
- <ref filename='reader2.c'/>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
<ref filename='parse3.c'/>
+ <ref filename='reader2.c'/>
<ref filename='tree2.c'/>
- <ref filename='reader1.c'/>
+ <ref filename='io1.c'/>
+ <ref filename='parse4.c'/>
</symbol>
<symbol name='xmlCreateIntSubset'>
<ref filename='tree2.c'/>
@@ -447,9 +447,9 @@
<ref filename='parse2.c'/>
</symbol>
<symbol name='xmlDocDump'>
+ <ref filename='io1.c'/>
<ref filename='xpath2.c'/>
<ref filename='reader3.c'/>
- <ref filename='io1.c'/>
</symbol>
<symbol name='xmlDocDumpFormatMemory'>
<ref filename='io2.c'/>
@@ -458,16 +458,16 @@
<ref filename='tree1.c'/>
</symbol>
<symbol name='xmlDocPtr'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
<ref filename='parse3.c'/>
- <ref filename='io2.c'/>
- <ref filename='testWriter.c'/>
+ <ref filename='io1.c'/>
<ref filename='parse4.c'/>
+ <ref filename='xpath2.c'/>
+ <ref filename='io2.c'/>
</symbol>
<symbol name='xmlDocSetRootElement'>
- <ref filename='io2.c'/>
<ref filename='tree2.c'/>
+ <ref filename='io2.c'/>
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlFindCharEncodingHandler'>
@@ -479,12 +479,12 @@
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlFreeDoc'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
<ref filename='parse3.c'/>
- <ref filename='io2.c'/>
<ref filename='tree2.c'/>
- <ref filename='testWriter.c'/>
+ <ref filename='io1.c'/>
+ <ref filename='parse4.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlFreeParserCtxt'>
<ref filename='parse4.c'/>
@@ -500,34 +500,34 @@
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlInitParser'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlMalloc'>
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlMemoryDump'>
- <ref filename='reader2.c'/>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
<ref filename='parse3.c'/>
+ <ref filename='reader2.c'/>
<ref filename='tree2.c'/>
- <ref filename='reader1.c'/>
+ <ref filename='io1.c'/>
+ <ref filename='parse4.c'/>
</symbol>
<symbol name='xmlNewChild'>
<ref filename='tree2.c'/>
</symbol>
<symbol name='xmlNewDoc'>
- <ref filename='io2.c'/>
<ref filename='tree2.c'/>
+ <ref filename='io2.c'/>
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlNewDocNode'>
<ref filename='testWriter.c'/>
</symbol>
<symbol name='xmlNewNode'>
- <ref filename='io2.c'/>
<ref filename='tree2.c'/>
+ <ref filename='io2.c'/>
</symbol>
<symbol name='xmlNewParserCtxt'>
<ref filename='parse2.c'/>
@@ -566,16 +566,16 @@
<ref filename='parse4.c'/>
</symbol>
<symbol name='xmlParseFile'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlParserCtxtPtr'>
<ref filename='parse4.c'/>
<ref filename='parse2.c'/>
</symbol>
<symbol name='xmlReadFile'>
- <ref filename='parse1.c'/>
<ref filename='tree1.c'/>
+ <ref filename='parse1.c'/>
</symbol>
<symbol name='xmlReadMemory'>
<ref filename='parse3.c'/>
@@ -692,28 +692,28 @@
<ref filename='io1.c'/>
</symbol>
<symbol name='xmlXPathContextPtr'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlXPathEvalExpression'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlXPathFreeContext'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlXPathFreeObject'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlXPathNewContext'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlXPathObjectPtr'>
- <ref filename='xpath2.c'/>
<ref filename='xpath1.c'/>
+ <ref filename='xpath2.c'/>
</symbol>
<symbol name='xmlXPathRegisterNs'>
<ref filename='xpath1.c'/>
@@ -721,22 +721,22 @@
</symbols>
<sections>
<section name='InputOutput'>
- <example filename='io2.c'/>
<example filename='io1.c'/>
+ <example filename='io2.c'/>
</section>
<section name='Parsing'>
<example filename='parse3.c'/>
<example filename='parse4.c'/>
- <example filename='parse1.c'/>
<example filename='parse2.c'/>
+ <example filename='parse1.c'/>
</section>
<section name='Tree'>
<example filename='tree2.c'/>
<example filename='tree1.c'/>
</section>
<section name='XPath'>
- <example filename='xpath2.c'/>
<example filename='xpath1.c'/>
+ <example filename='xpath2.c'/>
</section>
<section name='xmlReader'>
<example filename='reader2.c'/>
diff --git a/doc/examples/index.html b/doc/examples/index.html
new file mode 100644
index 0000000..c9314a3
--- /dev/null
+++ b/doc/examples/index.html
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
+TD {font-family: Verdana,Arial,Helvetica}
+BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
+H1 {font-family: Verdana,Arial,Helvetica}
+H2 {font-family: Verdana,Arial,Helvetica}
+H3 {font-family: Verdana,Arial,Helvetica}
+A:link, A:visited, A:active { text-decoration: underline }
+</style><title>Libxml2 set of examples</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Libxml2 set of examples</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Examples Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="../index.html">Home</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../html/index.html">API Menu</a></li><li><a href="#InputOutput">InputOutput Examples</a></li><li><a href="#Parsing">Parsing Examples</a></li><li><a href="#Tree">Tree Examples</a></li><li><a href="#XPath">XPath Examples</a></li><li><a href="#xmlReader">xmlReader Examples</a></li><li><a href="#xmlWriter">xmlWriter Examples</a></li><li><a href="../guidelines.html">XML Guidelines</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p> The examples are stored per section depending on the main focus
+ of the example:</p><ul><li><p><a href="#xmlWriter">xmlWriter</a> :</p><ul><li><a href="#testWriter.c">testWriter.c</a>: use various APIs for the xmlWriter</li></ul></li><li><p><a href="#InputOutput">InputOutput</a> :</p><ul><li><a href="#io1.c">io1.c</a>: Example of custom Input/Output</li><li><a href="#io2.c">io2.c</a>: Output to char buffer</li></ul></li><li><p><a href="#Tree">Tree</a> :</p><ul><li><a href="#tree2.c">tree2.c</a>: Creates a tree</li><li><a href="#tree1.c">tree1.c</a>: Navigates a tree to print element names</li></ul></li><li><p><a href="#XPath">XPath</a> :</p><ul><li><a href="#xpath1.c">xpath1.c</a>: Evaluate XPath expression and prints result node set.</li><li><a href="#xpath2.c">xpath2.c</a>: Load a document, locate subelements with XPath, modify said elements and save the resulting document.</li></ul></li><li><p><a href="#Parsing">Parsing</a> :</p><ul><li><a href="#parse3.c">parse3.c</a>: Parse an XML document in memory to a tree and free it</li><li><a href="#parse4.c">parse4.c</a>: Parse an XML document chunk by chunk to a tree and free it</li><li><a href="#parse2.c">parse2.c</a>: Parse and validate an XML file to a tree and free the result</li><li><a href="#parse1.c">parse1.c</a>: Parse an XML file to a tree and free it</li></ul></li><li><p><a href="#xmlReader">xmlReader</a> :</p><ul><li><a href="#reader2.c">reader2.c</a>: Parse and validate an XML file with an xmlReader</li><li><a href="#reader1.c">reader1.c</a>: Parse an XML file with an xmlReader</li><li><a href="#reader3.c">reader3.c</a>: Show how to extract subdocuments with xmlReader</li><li><a href="#reader4.c">reader4.c</a>: Parse multiple XML files reusing an xmlReader</li></ul></li></ul><p> Getting the compilation options and libraries dependancies needed
+to generate binaries from the examples is best done on Linux/Unix by using
+the xml2-config script which should have been installed as part of <i>make
+install</i> step or when installing the libxml2 development package:</p><pre>gcc -o example `xml2-config --cflags` example.c `xml2-config --libs`</pre><h2><a name="InputOutput" id="InputOutput"></a>InputOutput Examples</h2><h3><a name="io1.c" href="io1.c" id="io1.c">io1.c</a>: Example of custom Input/Output</h3><p>Demonstrate the use of xmlRegisterInputCallbacks to build a custom I/O layer, this is used in an XInclude method context to show how dynamic document can be built in a clean way.</p><p>Includes:</p><ul><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li><li><a href="../html/libxml-xmlIO.html">&lt;libxml/xmlIO.h&gt;</a></li><li><a href="../html/libxml-xinclude.html">&lt;libxml/xinclude.h&gt;</a></li><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 105: Type <a href="../html/libxml-tree.html#xmlDocPtr">xmlDocPtr</a> from tree.h</li><li> line 117: Macro <a href="../html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a> from xmlversion.h</li><li> line 117: Function <a href="../html/libxml-xmlIO.html#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a> from xmlIO.h</li><li> line 124: Function <a href="../html/libxml-parser.html#xmlReadMemory">xmlReadMemory</a> from parser.h</li><li> line 134: Function <a href="../html/libxml-xinclude.html#xmlXIncludeProcess">xmlXIncludeProcess</a> from xinclude.h</li><li> line 143: Function <a href="../html/libxml-tree.html#xmlDocDump">xmlDocDump</a> from tree.h</li><li> line 149: Function <a href="../html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a> from tree.h</li><li> line 154: Function <a href="../html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a> from parser.h</li><li> line 158: Function <a href="../html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a> from xmlmemory.h</li></ul><p>Usage:</p><p>io1</p><p>Author: Daniel Veillard</p><h3><a name="io2.c" href="io2.c" id="io2.c">io2.c</a>: Output to char buffer</h3><p>Demonstrate the use of xmlDocDumpMemory to output document to a character buffer</p><p>Includes:</p><ul><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 19: Type <a href="../html/libxml-tree.html#xmlNodePtr">xmlNodePtr</a> from tree.h</li><li> line 20: Type <a href="../html/libxml-tree.html#xmlDocPtr">xmlDocPtr</a> from tree.h</li><li> line 27: Function <a href="../html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a> from tree.h</li><li> line 28: Function <a href="../html/libxml-tree.html#xmlNewNode">xmlNewNode</a> from tree.h</li><li> line 29: Function <a href="../html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a> from tree.h</li><li> line 30: Function <a href="../html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a> from tree.h</li><li> line 36: Function <a href="../html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a> from tree.h</li></ul><p>Usage:</p><p>io2</p><p>Author: John Fleck</p><h2><a name="Parsing" id="Parsing"></a>Parsing Examples</h2><h3><a name="parse3.c" href="parse3.c" id="parse3.c">parse3.c</a>: Parse an XML document in memory to a tree and free it</h3><p>Demonstrate the use of xmlReadMemory() to read an XML file into a tree and and xmlFreeDoc() to free the resulting tree</p><p>Includes:</p><ul><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 27: Type <a href="../html/libxml-tree.html#xmlDocPtr">xmlDocPtr</a> from tree.h</li><li> line 33: Function <a href="../html/libxml-parser.html#xmlReadMemory">xmlReadMemory</a> from parser.h</li><li> line 38: Function <a href="../html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a> from tree.h</li><li> line 49: Macro <a href="../html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a> from xmlversion.h</li><li> line 54: Function <a href="../html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a> from parser.h</li><li> line 58: Function <a href="../html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a> from xmlmemory.h</li></ul><p>Usage:</p><p>parse3</p><p>Author: Daniel Veillard</p><h3><a name="parse4.c" href="parse4.c" id="parse4.c">parse4.c</a>: Parse an XML document chunk by chunk to a tree and free it</h3><p>Demonstrate the use of xmlCreatePushParserCtxt() and xmlParseChunk() to read an XML file progressively into a tree and and xmlFreeDoc() to free the resulting tree</p><p>Includes:</p><ul><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 45: Type <a href="../html/libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> from tree.h</li><li> line 47: Type <a href="../html/libxml-tree.html#xmlDocPtr">xmlDocPtr</a> from tree.h</li><li> line 67: Function <a href="../html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a> from parser.h</li><li> line 86: Function <a href="../html/libxml-parser.html#xmlParseChunk">xmlParseChunk</a> from parser.h</li><li> line 94: Function <a href="../html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a> from parser.h</li><li> line 103: Function <a href="../html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a> from tree.h</li><li> line 120: Macro <a href="../html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a> from xmlversion.h</li><li> line 131: Function <a href="../html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a> from parser.h</li><li> line 135: Function <a href="../html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a> from xmlmemory.h</li></ul><p>Usage:</p><p>parse4 test3.xml</p><p>Author: Daniel Veillard</p><h3><a name="parse2.c" href="parse2.c" id="parse2.c">parse2.c</a>: Parse and validate an XML file to a tree and free the result</h3><p>Create a parser context for an XML file, then parse and validate the file, creating a tree, check the validation result and xmlFreeDoc() to free the resulting tree.</p><p>Includes:</p><ul><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 25: Type <a href="../html/libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> from tree.h</li><li> line 29: Function <a href="../html/libxml-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a> from parser.h</li><li> line 35: Function <a href="../html/libxml-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a> from parser.h</li><li> line 47: Function <a href="../html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a> from parser.h</li></ul><p>Usage:</p><p>parse2 test2.xml</p><p>Author: Daniel Veillard</p><h3><a name="parse1.c" href="parse1.c" id="parse1.c">parse1.c</a>: Parse an XML file to a tree and free it</h3><p>Demonstrate the use of xmlReadFile() to read an XML file into a tree and and xmlFreeDoc() to free the resulting tree</p><p>Includes:</p><ul><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 26: Function <a href="../html/libxml-parser.html#xmlReadFile">xmlReadFile</a> from parser.h</li></ul><p>Usage:</p><p>parse1 test1.xml</p><p>Author: Daniel Veillard</p><h2><a name="Tree" id="Tree"></a>Tree Examples</h2><h3><a name="tree2.c" href="tree2.c" id="tree2.c">tree2.c</a>: Creates a tree</h3><p>Shows how to create document, nodes and dump it to stdout or file.</p><p>Includes:</p><ul><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 34: Macro <a href="../html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a> from xmlversion.h</li><li> line 39: Function <a href="../html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a> from tree.h</li><li> line 41: Function <a href="../html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a> from tree.h</li><li> line 46: Function <a href="../html/libxml-tree.html#xmlCreateIntSubset">xmlCreateIntSubset</a> from tree.h</li><li> line 74: Function <a href="../html/libxml-tree.html#xmlNewNode">xmlNewNode</a> from tree.h</li><li> line 75: Function <a href="../html/libxml-tree.html#xmlNewText">xmlNewText</a> from tree.h</li><li> line 78: Function <a href="../html/libxml-tree.html#xmlAddChild">xmlAddChild</a> from tree.h</li><li> line 88: Function <a href="../html/libxml-tree.html#xmlNewChild">xmlNewChild</a> from tree.h</li><li> line 89: Function <a href="../html/libxml-tree.html#xmlNewProp">xmlNewProp</a> from tree.h</li><li> line 96: Function <a href="../html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a> from tree.h</li><li> line 99: Function <a href="../html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a> from tree.h</li><li> line 105: Function <a href="../html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a> from parser.h</li><li> line 110: Function <a href="../html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a> from xmlmemory.h</li></ul><p>Usage:</p><p>tree2 &lt;filename&gt; -Default output: stdout</p><p>Author: Lucas Brasilino &lt;brasilino@recife.pe.gov.br&gt;</p><h3><a name="tree1.c" href="tree1.c" id="tree1.c">tree1.c</a>: Navigates a tree to print element names</h3><p>Parse a file to a tree, use xmlDocGetRootElement() to get the root element, then walk the document and print all the element name in document order.</p><p>Includes:</p><ul><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 67: Function <a href="../html/libxml-parser.html#xmlReadFile">xmlReadFile</a> from parser.h</li><li> line 74: Function <a href="../html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a> from tree.h</li></ul><p>Usage:</p><p>tree1 filename_or_URL</p><p>Author: Dodji Seketeli</p><h2><a name="XPath" id="XPath"></a>XPath Examples</h2><h3><a name="xpath1.c" href="xpath1.c" id="xpath1.c">xpath1.c</a>: Evaluate XPath expression and prints result node set.</h3><p>Shows how to evaluate XPath expression and register known namespaces in XPath context.</p><p>Includes:</p><ul><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li><li><a href="../html/libxml-xpath.html">&lt;libxml/xpath.h&gt;</a></li><li><a href="../html/libxml-xpathInternals.html">&lt;libxml/xpathInternals.h&gt;</a></li><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 39: Function <a href="../html/libxml-parser.html#xmlInitParser">xmlInitParser</a> from parser.h</li><li> line 43: Macro <a href="../html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a> from xmlversion.h</li><li> line 49: Function <a href="../html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a> from parser.h</li><li> line 54: Function <a href="../html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a> from xmlmemory.h</li><li> line 86: Type <a href="../html/libxml-tree.html#xmlDocPtr">xmlDocPtr</a> from tree.h</li><li> line 87: Type <a href="../html/libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> from xpath.h</li><li> line 88: Type <a href="../html/libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> from xpath.h</li><li> line 94: Function <a href="../html/libxml-parser.html#xmlParseFile">xmlParseFile</a> from parser.h</li><li> line 101: Function <a href="../html/libxml-xpath.html#xmlXPathNewContext">xmlXPathNewContext</a> from xpath.h</li><li> line 117: Function <a href="../html/libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a> from xpath.h</li><li> line 129: Function <a href="../html/libxml-xpath.html#xmlXPathFreeObject">xmlXPathFreeObject</a> from xpath.h</li><li> line 130: Function <a href="../html/libxml-xpath.html#xmlXPathFreeContext">xmlXPathFreeContext</a> from xpath.h</li><li> line 131: Function <a href="../html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a> from tree.h</li><li> line 156: Function <a href="../html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a> from xmlstring.h</li><li> line 180: Function <a href="../html/libxml-xmlstring.html#xmlStrchr">xmlStrchr</a> from xmlstring.h</li><li> line 186: Function <a href="../html/libxml-xpathInternals.html#xmlXPathRegisterNs">xmlXPathRegisterNs</a> from xpathInternals.h</li><li> line 206: Type <a href="../html/libxml-tree.html#xmlNodePtr">xmlNodePtr</a> from tree.h</li><li> line 218: Type <a href="../html/libxml-tree.html#xmlNsPtr">xmlNsPtr</a> from tree.h</li></ul><p>Usage:</p><p>xpath1 &lt;xml-file&gt; &lt;xpath-expr&gt; [&lt;known-ns-list&gt;]</p><p>Author: Aleksey Sanin</p><h3><a name="xpath2.c" href="xpath2.c" id="xpath2.c">xpath2.c</a>: Load a document, locate subelements with XPath, modify said elements and save the resulting document.</h3><p>Shows how to make a full round-trip from a load/edit/save</p><p>Includes:</p><ul><li><a href="../html/libxml-parser.html">&lt;libxml/parser.h&gt;</a></li><li><a href="../html/libxml-xpath.html">&lt;libxml/xpath.h&gt;</a></li><li><a href="../html/libxml-xpathInternals.html">&lt;libxml/xpathInternals.h&gt;</a></li><li><a href="../html/libxml-tree.html">&lt;libxml/tree.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 41: Function <a href="../html/libxml-parser.html#xmlInitParser">xmlInitParser</a> from parser.h</li><li> line 86: Type <a href="../html/libxml-tree.html#xmlDocPtr">xmlDocPtr</a> from tree.h</li><li> line 87: Type <a href="../html/libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> from xpath.h</li><li> line 88: Type <a href="../html/libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> from xpath.h</li><li> line 95: Function <a href="../html/libxml-parser.html#xmlParseFile">xmlParseFile</a> from parser.h</li><li> line 102: Function <a href="../html/libxml-xpath.html#xmlXPathNewContext">xmlXPathNewContext</a> from xpath.h</li><li> line 110: Function <a href="../html/libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a> from xpath.h</li><li> line 123: Function <a href="../html/libxml-xpath.html#xmlXPathFreeObject">xmlXPathFreeObject</a> from xpath.h</li><li> line 124: Function <a href="../html/libxml-xpath.html#xmlXPathFreeContext">xmlXPathFreeContext</a> from xpath.h</li><li> line 127: Function <a href="../html/libxml-tree.html#xmlDocDump">xmlDocDump</a> from tree.h</li><li> line 131: Function <a href="../html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a> from tree.h</li><li> line 162: Function <a href="../html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a> from tree.h</li></ul><p>Usage:</p><p>xpath2 &lt;xml-file&gt; &lt;xpath-expr&gt; &lt;new-value&gt;</p><p>Author: Aleksey Sanin and Daniel Veillard</p><h2><a name="xmlReader" id="xmlReader"></a>xmlReader Examples</h2><h3><a name="reader2.c" href="reader2.c" id="reader2.c">reader2.c</a>: Parse and validate an XML file with an xmlReader</h3><p>Demonstrate the use of xmlReaderForFile() to parse an XML file validating the content in the process and activating options like entities substitution, and DTD attributes defaulting. (Note that the XMLReader functions require libxml2 version later than 2.6.)</p><p>Includes:</p><ul><li><a href="../html/libxml-xmlreader.html">&lt;libxml/xmlreader.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 30: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderConstName">xmlTextReaderConstName</a> from xmlreader.h</li><li> line 34: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderConstValue">xmlTextReaderConstValue</a> from xmlreader.h</li><li> line 37: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderDepth">xmlTextReaderDepth</a> from xmlreader.h</li><li> line 38: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a> from xmlreader.h</li><li> line 40: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderIsEmptyElement">xmlTextReaderIsEmptyElement</a> from xmlreader.h</li><li> line 41: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderHasValue">xmlTextReaderHasValue</a> from xmlreader.h</li><li> line 45: Function <a href="../html/libxml-xmlstring.html#xmlStrlen">xmlStrlen</a> from xmlstring.h</li><li> line 60: Type <a href="../html/libxml-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> from xmlreader.h</li><li> line 68: Function <a href="../html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a> from xmlreader.h</li><li> line 76: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a> from xmlreader.h</li><li> line 81: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderIsValid">xmlTextReaderIsValid</a> from xmlreader.h</li><li> line 84: Function <a href="../html/libxml-xmlreader.html#xmlFreeTextReader">xmlFreeTextReader</a> from xmlreader.h</li><li> line 104: Macro <a href="../html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a> from xmlversion.h</li><li> line 109: Function <a href="../html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a> from parser.h</li><li> line 113: Function <a href="../html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a> from xmlmemory.h</li></ul><p>Usage:</p><p>reader2 &lt;valid_xml_filename&gt;</p><p>Author: Daniel Veillard</p><h3><a name="reader1.c" href="reader1.c" id="reader1.c">reader1.c</a>: Parse an XML file with an xmlReader</h3><p>Demonstrate the use of xmlReaderForFile() to parse an XML file and dump the informations about the nodes found in the process. (Note that the XMLReader functions require libxml2 version later than 2.6.)</p><p>Includes:</p><ul><li><a href="../html/libxml-xmlreader.html">&lt;libxml/xmlreader.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 29: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderConstName">xmlTextReaderConstName</a> from xmlreader.h</li><li> line 33: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderConstValue">xmlTextReaderConstValue</a> from xmlreader.h</li><li> line 36: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderDepth">xmlTextReaderDepth</a> from xmlreader.h</li><li> line 37: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a> from xmlreader.h</li><li> line 39: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderIsEmptyElement">xmlTextReaderIsEmptyElement</a> from xmlreader.h</li><li> line 40: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderHasValue">xmlTextReaderHasValue</a> from xmlreader.h</li><li> line 44: Function <a href="../html/libxml-xmlstring.html#xmlStrlen">xmlStrlen</a> from xmlstring.h</li><li> line 59: Type <a href="../html/libxml-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> from xmlreader.h</li><li> line 62: Function <a href="../html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a> from xmlreader.h</li><li> line 67: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a> from xmlreader.h</li><li> line 69: Function <a href="../html/libxml-xmlreader.html#xmlFreeTextReader">xmlFreeTextReader</a> from xmlreader.h</li></ul><p>Usage:</p><p>reader1 &lt;filename&gt;</p><p>Author: Daniel Veillard</p><h3><a name="reader3.c" href="reader3.c" id="reader3.c">reader3.c</a>: Show how to extract subdocuments with xmlReader</h3><p>Demonstrate the use of xmlTextReaderPreservePattern() to parse an XML file with the xmlReader while collecting only some subparts of the document. (Note that the XMLReader functions require libxml2 version later than 2.6.)</p><p>Includes:</p><ul><li><a href="../html/libxml-xmlreader.html">&lt;libxml/xmlreader.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 32: Type <a href="../html/libxml-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> from xmlreader.h</li><li> line 38: Function <a href="../html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a> from xmlreader.h</li><li> line 43: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a> from xmlreader.h</li><li> line 52: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a> from xmlreader.h</li><li> line 62: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a> from xmlreader.h</li><li> line 66: Function <a href="../html/libxml-xmlreader.html#xmlFreeTextReader">xmlFreeTextReader</a> from xmlreader.h</li><li> line 96: Function <a href="../html/libxml-tree.html#xmlDocDump">xmlDocDump</a> from tree.h</li></ul><p>Usage:</p><p>reader3</p><p>Author: Daniel Veillard</p><h3><a name="reader4.c" href="reader4.c" id="reader4.c">reader4.c</a>: Parse multiple XML files reusing an xmlReader</h3><p>Demonstrate the use of xmlReaderForFile() and xmlReaderNewFile to parse XML files while reusing the reader object and parser context. (Note that the XMLReader functions require libxml2 version later than 2.6.)</p><p>Includes:</p><ul><li><a href="../html/libxml-xmlreader.html">&lt;libxml/xmlreader.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 26: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a> from xmlreader.h</li><li> line 54: Type <a href="../html/libxml-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> from xmlreader.h</li><li> line 72: Function <a href="../html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a> from xmlreader.h</li><li> line 83: Function <a href="../html/libxml-xmlreader.html#xmlReaderNewFile">xmlReaderNewFile</a> from xmlreader.h</li><li> line 97: Function <a href="../html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a> from xmlreader.h</li><li> line 104: Function <a href="../html/libxml-xmlreader.html#xmlFreeTextReader">xmlFreeTextReader</a> from xmlreader.h</li></ul><p>Usage:</p><p>reader4 &lt;filename&gt; [ filename ... ]</p><p>Author: Graham Bennett</p><h2><a name="xmlWriter" id="xmlWriter"></a>xmlWriter Examples</h2><h3><a name="testWriter.c" href="testWriter.c" id="testWriter.c">testWriter.c</a>: use various APIs for the xmlWriter</h3><p>tests a number of APIs for the xmlWriter, especially the various methods to write to a filename, to a memory buffer, to a new document, or to a subtree. It shows how to do encoding string conversions too. The resulting documents are then serialized.</p><p>Includes:</p><ul><li><a href="../html/libxml-encoding.html">&lt;libxml/encoding.h&gt;</a></li><li><a href="../html/libxml-xmlwriter.html">&lt;libxml/xmlwriter.h&gt;</a></li></ul><p>Uses:</p><ul><li> line 76: Function <a href="../html/libxml-xmlwriter.html#xmlNewTextWriterFilename">xmlNewTextWriterFilename</a> from xmlwriter.h</li><li> line 341: Type <a href="../html/libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> from tree.h</li><li> line 347: Function <a href="../html/libxml-tree.html#xmlBufferCreate">xmlBufferCreate</a> from tree.h</li><li> line 355: Function <a href="../html/libxml-xmlwriter.html#xmlNewTextWriterMemory">xmlNewTextWriterMemory</a> from xmlwriter.h</li><li> line 613: Function <a href="../html/libxml-tree.html#xmlBufferFree">xmlBufferFree</a> from tree.h</li><li> line 632: Function <a href="../html/libxml-xmlwriter.html#xmlNewTextWriterDoc">xmlNewTextWriterDoc</a> from xmlwriter.h</li><li> line 878: Type <a href="../html/libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> from xmlwriter.h</li><li> line 880: Type <a href="../html/libxml-tree.html#xmlNodePtr">xmlNodePtr</a> from tree.h</li><li> line 885: Macro <a href="../html/libxml-parser.html#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a> from parser.h</li><li> line 885: Function <a href="../html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a> from tree.h</li><li> line 894: Function <a href="../html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a> from tree.h</li><li> line 901: Function <a href="../html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a> from tree.h</li><li> line 904: Function <a href="../html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a> from xmlwriter.h</li><li> line 913: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterStartDocument">xmlTextWriterStartDocument</a> from xmlwriter.h</li><li> line 925: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterWriteComment">xmlTextWriterWriteComment</a> from xmlwriter.h</li><li> line 949: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterWriteAttribute">xmlTextWriterWriteAttribute</a> from xmlwriter.h</li><li> line 959: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterWriteFormatComment">xmlTextWriterWriteFormatComment</a> from xmlwriter.h</li><li> line 1073: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterWriteFormatElement">xmlTextWriterWriteFormatElement</a> from xmlwriter.h</li><li> line 1096: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterStartElement">xmlTextWriterStartElement</a> from xmlwriter.h</li><li> line 1103: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterWriteElement">xmlTextWriterWriteElement</a> from xmlwriter.h</li><li> line 1111: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterEndElement">xmlTextWriterEndElement</a> from xmlwriter.h</li><li> line 1121: Function <a href="../html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a> from xmlwriter.h</li><li> line 1127: Function <a href="../html/libxml-xmlwriter.html#xmlFreeTextWriter">xmlFreeTextWriter</a> from xmlwriter.h</li><li> line 1129: Function <a href="../html/libxml-tree.html#xmlSaveFileEnc">xmlSaveFileEnc</a> from tree.h</li><li> line 1151: Type <a href="../html/libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> from encoding.h</li><li> line 1156: Function <a href="../html/libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a> from encoding.h</li></ul><p>Usage:</p><p>testWriter</p><p>Author: Alfred Mickautsch</p><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/examples/index.py b/doc/examples/index.py
index 11df6f0..7e0efaa 100755
--- a/doc/examples/index.py
+++ b/doc/examples/index.py
@@ -13,7 +13,7 @@ sys.path.insert(0, "..")
from apibuild import CParser, escape
examples = []
-extras = ['examples.xsl', 'index.py']
+extras = ['examples.xsl', 'index.html', 'index.py']
tests = []
sections = {}
symbols = {}
@@ -177,10 +177,10 @@ def parse(filename, output):
type = id.get_type()
output.write(" <%s line='%d' name='%s'/>\n" % (type,
line, name))
-
+
output.write(" </uses>\n")
output.write(" </example>\n")
-
+
return idx
def dump_symbols(output):
@@ -220,43 +220,59 @@ def dump_Makefile():
extras.append(file)
for file in glob.glob('*.res'):
extras.append(file)
- Makefile="""# Beware this is autogenerated by index.py
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
-DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
+ Makefile="""##
+## This file is auto-generated by index.py
+## DO NOT EDIT !!!
+##
+
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)/include
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS)
+LDADD = $(RDL_LIBS) $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(ICONV_LIBS) -lm $(WIN32_EXTRA_LIBADD)
+CLEANFILES = *.tmp
+
+if REBUILD_DOCS
rebuild: examples.xml index.html
+.PHONY: rebuild
-examples.xml: index.py *.c
- -@($(srcdir)/index.py)
+examples.xml: index.py $(noinst_PROGRAMS:=.c)
+ cd $(srcdir) && $(PYTHON) index.py
+ $(MAKE) Makefile
index.html: examples.xml examples.xsl
- -@(xsltproc examples.xsl examples.xml && echo "Rebuilt web page" && xmllint --valid --noout index.html)
+ cd $(srcdir) && xsltproc examples.xsl examples.xml && echo "Rebuilt web page"
+ -cd $(srcdir) && xmllint --valid --noout index.html
+endif
install-data-local:
- $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
- -@INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
+ $(MKDIR_P) $(DESTDIR)$(HTML_DIR)
+ -$(INSTALL) -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
+
+clean-local:
+ test -f Makefile.am || rm -f test?.xml
"""
+ examples.sort()
+ extras.sort()
+ tests.sort()
EXTRA_DIST=""
for extra in extras:
- EXTRA_DIST = EXTRA_DIST + extra + " "
- Makefile = Makefile + "EXTRA_DIST=%s\n\n" % (EXTRA_DIST)
+ EXTRA_DIST = EXTRA_DIST + " \\\n\t" + extra
+ Makefile = Makefile + "EXTRA_DIST =%s\n\n" % (EXTRA_DIST)
noinst_PROGRAMS=""
for example in examples:
- noinst_PROGRAMS = noinst_PROGRAMS + example + " "
- Makefile = Makefile + "noinst_PROGRAMS=%s\n\n" % (noinst_PROGRAMS)
+ noinst_PROGRAMS = noinst_PROGRAMS + " \\\n\t" + example
+ Makefile = Makefile + "noinst_PROGRAMS =%s\n\n" % (noinst_PROGRAMS)
for example in examples:
- Makefile = Makefile + "%s_SOURCES=%s.c\n%s_LDFLAGS=\n%s_DEPENDENCIES= $(DEPS)\n%s_LDADD= @RDL_LIBS@ $(LDADDS)\n\n" % (example, example, example,
- example, example)
+ Makefile = Makefile + "%s_SOURCES = %s.c\n\n" % (example, example)
Makefile = Makefile + "valgrind: \n\t$(MAKE) CHECKER='valgrind' tests\n\n"
Makefile = Makefile + "tests: $(noinst_PROGRAMS)\n"
+ Makefile = Makefile + "\ttest -f Makefile.am || test -f test1.xml || $(LN_S) $(srcdir)/test?.xml .\n"
Makefile = Makefile + "\t@(echo '## examples regression tests')\n"
Makefile = Makefile + "\t@(echo > .memdump)\n"
for test in tests:
- Makefile = Makefile + "\t@($(CHECKER) %s)\n" % (test)
- Makefile = Makefile + '\t@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)\n'
- Makefile = Makefile + "\n\n"
+ Makefile = Makefile + "\t$(CHECKER) %s\n" % (test)
+ Makefile = Makefile + '\t@grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0\n'
try:
old = open("Makefile.am", "r").read()
if old != Makefile:
@@ -264,23 +280,23 @@ install-data-local:
print "Updated Makefile.am"
except:
print "Failed to read or save Makefile.am"
- #
- # Autogenerate the .cvsignore too ...
- #
- ignore = """.memdump
-Makefile.in
-Makefile
-"""
- for example in examples:
- ignore = ignore + "%s\n" % (example)
- try:
- old = open(".cvsignore", "r").read()
- if old != ignore:
- n = open(".cvsignore", "w").write(ignore)
- print "Updated .cvsignore"
- except:
- print "Failed to read or save .cvsignore"
-
+# #
+# # Autogenerate the .cvsignore too ... DEPRECATED
+# #
+# ignore = """.memdump
+#Makefile.in
+#Makefile
+#"""
+# for example in examples:
+# ignore = ignore + "%s\n" % (example)
+# try:
+# old = open(".cvsignore", "r").read()
+# if old != ignore:
+# n = open(".cvsignore", "w").write(ignore)
+# print "Updated .cvsignore"
+# except:
+# print "Failed to read or save .cvsignore"
+
if __name__ == "__main__":
load_api()
output = open("examples.xml", "w")
diff --git a/doc/examples/io1.c b/doc/examples/io1.c
index c8a47e3..d077cd8 100644
--- a/doc/examples/io1.c
+++ b/doc/examples/io1.c
@@ -6,7 +6,7 @@
* XInclude method context to show how dynamic document can
* be built in a clean way.
* usage: io1
- * test: io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp
+ * test: io1 > io1.tmp && diff io1.tmp $(srcdir)/io1.res
* author: Daniel Veillard
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/io1.res b/doc/examples/io1.res
index 4a4c036..adf65c7 100644
--- a/doc/examples/io1.res
+++ b/doc/examples/io1.res
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<document xmlns:xi="http://www.w3.org/2003/XInclude">
<p>List of people:</p>
- <list><people>a</people><people>b</people></list>
+ <list xml:base="sql://select_name_from_people"><people>a</people><people>b</people></list>
</document>
diff --git a/doc/examples/io2.c b/doc/examples/io2.c
index 814a27e..4676f4a 100644
--- a/doc/examples/io2.c
+++ b/doc/examples/io2.c
@@ -4,7 +4,7 @@
* purpose: Demonstrate the use of xmlDocDumpMemory
* to output document to a character buffer
* usage: io2
- * test: io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp
+ * test: io2 > io2.tmp && diff io2.tmp $(srcdir)/io2.res
* author: John Fleck
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/reader1.c b/doc/examples/reader1.c
index 90db2a1..e8a005a 100644
--- a/doc/examples/reader1.c
+++ b/doc/examples/reader1.c
@@ -6,7 +6,7 @@
* (Note that the XMLReader functions require libxml2 version later
* than 2.6.)
* usage: reader1 <filename>
- * test: reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp
+ * test: reader1 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
* author: Daniel Veillard
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/reader2.c b/doc/examples/reader2.c
index c32ada5..043b137 100644
--- a/doc/examples/reader2.c
+++ b/doc/examples/reader2.c
@@ -7,7 +7,7 @@
* (Note that the XMLReader functions require libxml2 version later
* than 2.6.)
* usage: reader2 <valid_xml_filename>
- * test: reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp
+ * test: reader2 test2.xml > reader1.tmp && diff reader1.tmp $(srcdir)/reader1.res
* author: Daniel Veillard
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/reader3.c b/doc/examples/reader3.c
index 51f9d3b..3eeb61f 100644
--- a/doc/examples/reader3.c
+++ b/doc/examples/reader3.c
@@ -7,7 +7,7 @@
* (Note that the XMLReader functions require libxml2 version later
* than 2.6.)
* usage: reader3
- * test: reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp
+ * test: reader3 > reader3.tmp && diff reader3.tmp $(srcdir)/reader3.res
* author: Daniel Veillard
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/reader4.c b/doc/examples/reader4.c
index ed2726a..1289d0d 100644
--- a/doc/examples/reader4.c
+++ b/doc/examples/reader4.c
@@ -6,7 +6,7 @@
* and parser context. (Note that the XMLReader functions require
* libxml2 version later than 2.6.)
* usage: reader4 <filename> [ filename ... ]
- * test: reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp
+ * test: reader4 test1.xml test2.xml test3.xml > reader4.tmp && diff reader4.tmp $(srcdir)/reader4.res
* author: Graham Bennett
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/testWriter.c b/doc/examples/testWriter.c
index 9bf590f..f662f76 100644
--- a/doc/examples/testWriter.c
+++ b/doc/examples/testWriter.c
@@ -7,7 +7,7 @@
* do encoding string conversions too. The resulting
* documents are then serialized.
* usage: testWriter
- * test: testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res
+ * test: testWriter && for i in 1 2 3 4 ; do diff $(srcdir)/writer.xml writer$$i.tmp || break ; done
* author: Alfred Mickautsch
* copy: see Copyright for the status of this software.
*/
@@ -37,16 +37,16 @@ main(void)
LIBXML_TEST_VERSION
/* first, the file version */
- testXmlwriterFilename("writer1.res");
+ testXmlwriterFilename("writer1.tmp");
/* next, the memory version */
- testXmlwriterMemory("writer2.res");
+ testXmlwriterMemory("writer2.tmp");
/* next, the DOM version */
- testXmlwriterDoc("writer3.res");
+ testXmlwriterDoc("writer3.tmp");
/* next, the tree version */
- testXmlwriterTree("writer4.res");
+ testXmlwriterTree("writer4.tmp");
/*
* Cleanup function for the XML library.
diff --git a/doc/examples/tree1.c b/doc/examples/tree1.c
index 8644cf1..e6faefc 100644
--- a/doc/examples/tree1.c
+++ b/doc/examples/tree1.c
@@ -5,7 +5,7 @@
* get the root element, then walk the document and print
* all the element name in document order.
* usage: tree1 filename_or_URL
- * test: tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp
+ * test: tree1 test2.xml > tree1.tmp && diff tree1.tmp $(srcdir)/tree1.res
* author: Dodji Seketeli
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/tree2.c b/doc/examples/tree2.c
index c40fc55..1cd1abe 100644
--- a/doc/examples/tree2.c
+++ b/doc/examples/tree2.c
@@ -3,7 +3,7 @@
* synopsis: Creates a tree
* purpose: Shows how to create document, nodes and dump it to stdout or file.
* usage: tree2 <filename> -Default output: stdout
- * test: tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp
+ * test: tree2 > tree2.tmp && diff tree2.tmp $(srcdir)/tree2.res
* author: Lucas Brasilino <brasilino@recife.pe.gov.br>
* copy: see Copyright for the status of this software
*/
diff --git a/doc/examples/xpath1.c b/doc/examples/xpath1.c
index f2f7406..0a31650 100644
--- a/doc/examples/xpath1.c
+++ b/doc/examples/xpath1.c
@@ -4,7 +4,7 @@
* purpose: Shows how to evaluate XPath expression and register
* known namespaces in XPath context.
* usage: xpath1 <xml-file> <xpath-expr> [<known-ns-list>]
- * test: ./xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp
+ * test: xpath1 test3.xml '//child2' > xpath1.tmp && diff xpath1.tmp $(srcdir)/xpath1.res
* author: Aleksey Sanin
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/examples/xpath2.c b/doc/examples/xpath2.c
index 6ff4008..f604114 100644
--- a/doc/examples/xpath2.c
+++ b/doc/examples/xpath2.c
@@ -4,7 +4,7 @@
* said elements and save the resulting document.
* purpose: Shows how to make a full round-trip from a load/edit/save
* usage: xpath2 <xml-file> <xpath-expr> <new-value>
- * test: xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp
+ * test: xpath2 test3.xml '//discarded' discarded > xpath2.tmp && diff xpath2.tmp $(srcdir)/xpath2.res
* author: Aleksey Sanin and Daniel Veillard
* copy: see Copyright for the status of this software.
*/
diff --git a/doc/help.html b/doc/help.html
index db9967e..1f1df2a 100644
--- a/doc/help.html
+++ b/doc/help.html
@@ -9,7 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>How to help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>How to help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>You can help the project in various ways, the best thing to do first is to
subscribe to the mailing-list as explained before, check the <a href="http://mail.gnome.org/archives/xml/">archives </a>and the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnome bug
-database</a>:</p><ol><li>Provide patches when you find problems.</li>
+database</a>:</p><ol>
+ <li>Provide patches when you find problems.</li>
<li>Provide the diffs when you port libxml2 to a new platform. They may not
be integrated in all cases but help pinpointing portability problems
and</li>
diff --git a/doc/html/book1.html b/doc/html/book1.html
index 6771189..1a58210 100644
--- a/doc/html/book1.html
+++ b/doc/html/book1.html
@@ -10,4 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+ </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/index.html b/doc/html/index.html
index 6771189..1a58210 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -10,4 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+ </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-dict.html b/doc/html/libxml-dict.html
index 2de32b0..bdd21f4 100644
--- a/doc/html/libxml-dict.html
+++ b/doc/html/libxml-dict.html
@@ -18,10 +18,12 @@ The content of this structure is not made public by the API.
<pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> <a href="#xmlDictCreateSub">xmlDictCreateSub</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> sub)</pre>
<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlDictExists">xmlDictExists</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)</pre>
<pre class="programlisting">void <a href="#xmlDictFree">xmlDictFree</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
+<pre class="programlisting">size_t <a href="#xmlDictGetUsage">xmlDictGetUsage</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlDictLookup">xmlDictLookup</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)</pre>
<pre class="programlisting">int <a href="#xmlDictOwns">xmlDictOwns</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)</pre>
<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlDictQLookup">xmlDictQLookup</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting">int <a href="#xmlDictReference">xmlDictReference</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
+<pre class="programlisting">size_t <a href="#xmlDictSetLimit">xmlDictSetLimit</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> size_t limit)</pre>
<pre class="programlisting">int <a href="#xmlDictSize">xmlDictSize</a> (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
<pre class="programlisting">int <a href="#xmlInitializeDict">xmlInitializeDict</a> (void)</pre>
<h2>Description</h2>
@@ -37,7 +39,9 @@ The content of this structure is not made public by the API.
</pre><p>Check if the @name exists in the dictionnary @dict.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the userdata</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the name, if -1 it is recomputed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal copy of the name or NULL if not found.</td></tr></tbody></table></div><h3><a name="xmlDictFree" id="xmlDictFree"></a>Function: xmlDictFree</h3><pre class="programlisting">void xmlDictFree (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
</pre><p>Free the hash @dict and its contents. The userdata is deallocated with @f if provided.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr></tbody></table></div><h3><a name="xmlDictLookup" id="xmlDictLookup"></a>Function: xmlDictLookup</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlDictLookup (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr></tbody></table></div><h3><a name="xmlDictGetUsage" id="xmlDictGetUsage"></a>Function: xmlDictGetUsage</h3><pre class="programlisting">size_t xmlDictGetUsage (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+</pre><p>Get how much memory is used by a dictionary for strings Added in 2.9.0</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the amount of strings allocated</td></tr></tbody></table></div><h3><a name="xmlDictLookup" id="xmlDictLookup"></a>Function: xmlDictLookup</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlDictLookup (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)<br />
</pre><p>Add the @name to the dictionnary @dict if not present.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the userdata</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the name, if -1 it is recomputed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal copy of the name or NULL in case of internal error</td></tr></tbody></table></div><h3><a name="xmlDictOwns" id="xmlDictOwns"></a>Function: xmlDictOwns</h3><pre class="programlisting">int xmlDictOwns (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)<br />
</pre><p>check if a string is owned by the disctionary</p>
@@ -45,8 +49,10 @@ The content of this structure is not made public by the API.
</pre><p>Add the QName @prefix:@name to the hash @dict if not present.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal copy of the QName or NULL in case of internal error</td></tr></tbody></table></div><h3><a name="xmlDictReference" id="xmlDictReference"></a>Function: xmlDictReference</h3><pre class="programlisting">int xmlDictReference (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
</pre><p>Increment the <a href="libxml-SAX.html#reference">reference</a> counter of a dictionary</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlDictSize" id="xmlDictSize"></a>Function: xmlDictSize</h3><pre class="programlisting">int xmlDictSize (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlDictSetLimit" id="xmlDictSetLimit"></a>Function: xmlDictSetLimit</h3><pre class="programlisting">size_t xmlDictSetLimit (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br /> size_t limit)<br />
+</pre><p>Set a size limit for the dictionary Added in 2.9.0</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>limit</tt></i>:</span></td><td>the limit in bytes</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous limit of the dictionary or 0</td></tr></tbody></table></div><h3><a name="xmlDictSize" id="xmlDictSize"></a>Function: xmlDictSize</h3><pre class="programlisting">int xmlDictSize (<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
</pre><p>Query the number of elements installed in the hash @dict.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>the dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements in the dictionnary or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlInitializeDict" id="xmlInitializeDict"></a>Function: xmlInitializeDict</h3><pre class="programlisting">int xmlInitializeDict (void)<br />
-</pre><p>Do the dictionary mutex initialization. this function is not thread safe, initialization should preferably be done once at startup</p>
+</pre><p>Do the dictionary mutex initialization. this function is deprecated</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if initialization was already done, and 1 if that call led to the initialization</td></tr></tbody></table></div><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-entities.html b/doc/html/libxml-entities.html
index 989805a..b7d1455 100644
--- a/doc/html/libxml-entities.html
+++ b/doc/html/libxml-entities.html
@@ -23,9 +23,9 @@ The content of this structure is not made public by the API.
<pre class="programlisting">void <a href="#xmlDumpEntityDecl">xmlDumpEntityDecl</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> ent)</pre>
<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeEntities">xmlEncodeEntities</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)</pre>
<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)</pre>
<pre class="programlisting">void <a href="#xmlFreeEntitiesTable">xmlFreeEntitiesTable</a> (<a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetDocEntity">xmlGetDocEntity</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetDocEntity">xmlGetDocEntity</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetDtdEntity">xmlGetDtdEntity</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetParameterEntity">xmlGetParameterEntity</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#xmlGetPredefinedEntity">xmlGetPredefinedEntity</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
@@ -60,11 +60,11 @@ The content of this structure is not made public by the API.
</pre><p>TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary compatibility People must migrate their code to <a href="libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a> ! This routine will issue a warning when encountered.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document containing the string</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>A string to convert to XML.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL</td></tr></tbody></table></div><h3><a name="xmlEncodeEntitiesReentrant" id="xmlEncodeEntitiesReentrant"></a>Function: xmlEncodeEntitiesReentrant</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlEncodeEntitiesReentrant (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)<br />
</pre><p>Do a global encoding of a string, replacing the predefined entities and non ASCII values with their entities and CharRef counterparts. Contrary to xmlEncodeEntities, this routine is reentrant, and result must be deallocated.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document containing the string</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>A string to convert to XML.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>A newly allocated string with the substitution done.</td></tr></tbody></table></div><h3><a name="xmlEncodeSpecialChars" id="xmlEncodeSpecialChars"></a>Function: xmlEncodeSpecialChars</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlEncodeSpecialChars (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document containing the string</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>A string to convert to XML.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>A newly allocated string with the substitution done.</td></tr></tbody></table></div><h3><a name="xmlEncodeSpecialChars" id="xmlEncodeSpecialChars"></a>Function: xmlEncodeSpecialChars</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlEncodeSpecialChars (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * input)<br />
</pre><p>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document containing the string</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>A string to convert to XML.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>A newly allocated string with the substitution done.</td></tr></tbody></table></div><h3><a name="xmlFreeEntitiesTable" id="xmlFreeEntitiesTable"></a>Function: xmlFreeEntitiesTable</h3><pre class="programlisting">void xmlFreeEntitiesTable (<a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)<br />
</pre><p>Deallocate the memory used by an entities hash table.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An entity table</td></tr></tbody></table></div><h3><a name="xmlGetDocEntity" id="xmlGetDocEntity"></a>Function: xmlGetDocEntity</h3><pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> xmlGetDocEntity (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An entity table</td></tr></tbody></table></div><h3><a name="xmlGetDocEntity" id="xmlGetDocEntity"></a>Function: xmlGetDocEntity</h3><pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> xmlGetDocEntity (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Do an entity lookup in the document entity hash table and</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document referencing the entity</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the entity name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the corresponding entity, otherwise a lookup is done in the predefined entities too. Returns A pointer to the entity structure or NULL if not found.</td></tr></tbody></table></div><h3><a name="xmlGetDtdEntity" id="xmlGetDtdEntity"></a>Function: xmlGetDtdEntity</h3><pre class="programlisting"><a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> xmlGetDtdEntity (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Do an entity lookup in the DTD entity hash table and</p>
diff --git a/doc/html/libxml-lib.html b/doc/html/libxml-lib.html
index 6771189..1a58210 100644
--- a/doc/html/libxml-lib.html
+++ b/doc/html/libxml-lib.html
@@ -10,4 +10,4 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+ </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-parser.html b/doc/html/libxml-parser.html
index 461b3fb..98123f7 100644
--- a/doc/html/libxml-parser.html
+++ b/doc/html/libxml-parser.html
@@ -289,6 +289,7 @@ void <a href="#xmlParserInputDeallocate">xmlParserInputDeallocate</a> (<a href="
<a name="XML_PARSE_HUGE" id="XML_PARSE_HUGE">XML_PARSE_HUGE</a> = 524288 : relax any hardcoded limit from the parser
<a name="XML_PARSE_OLDSAX" id="XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> = 1048576 : parse using SAX2 interface before 2.7.0
<a name="XML_PARSE_IGNORE_ENC" id="XML_PARSE_IGNORE_ENC">XML_PARSE_IGNORE_ENC</a> = 2097152 : ignore internal document encoding hint
+ <a name="XML_PARSE_BIG_LINES" id="XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> = 4194304 : Store big lines numbers in text PSVI field
}
</pre><h3><a name="xmlSAXHandlerV1" id="xmlSAXHandlerV1">Structure xmlSAXHandlerV1</a></h3><pre class="programlisting">Structure xmlSAXHandlerV1<br />struct _xmlSAXHandlerV1 {
<a href="libxml-parser.html#internalSubsetSAXFunc">internalSubsetSAXFunc</a> internalSubset
@@ -507,9 +508,9 @@ void xmlParserInputDeallocate (<a href="libxml-xmlstring.html#xmlChar">xmlChar</
</pre><p>Callback for freeing some parser input allocations.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string to deallocate</td></tr></tbody></table></div><br />
<h3><a name="xmlParserInputGrow" id="xmlParserInputGrow"></a>Function: xmlParserInputGrow</h3><pre class="programlisting">int xmlParserInputGrow (<a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br /> int len)<br />
</pre><p>This function increase the input for the parser. It tries to preserve pointers to the input buffer, and keep already read data</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity</td></tr></tbody></table></div><h3><a name="xmlParserInputRead" id="xmlParserInputRead"></a>Function: xmlParserInputRead</h3><pre class="programlisting">int xmlParserInputRead (<a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br /> int len)<br />
-</pre><p>This function refresh the input for the parser. It doesn't try to preserve pointers to the input buffer, and discard already read data</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity</td></tr></tbody></table></div><h3><a name="xmlPedanticParserDefault" id="xmlPedanticParserDefault"></a>Function: xmlPedanticParserDefault</h3><pre class="programlisting">int xmlPedanticParserDefault (int val)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the amount of char read, or -1 in case of error, 0 indicate the end of this entity</td></tr></tbody></table></div><h3><a name="xmlParserInputRead" id="xmlParserInputRead"></a>Function: xmlParserInputRead</h3><pre class="programlisting">int xmlParserInputRead (<a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br /> int len)<br />
+</pre><p>This function was internal and is deprecated.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>in</tt></i>:</span></td><td>an XML parser input</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an indicative size for the lookahead</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 as this is an error to use it.</td></tr></tbody></table></div><h3><a name="xmlPedanticParserDefault" id="xmlPedanticParserDefault"></a>Function: xmlPedanticParserDefault</h3><pre class="programlisting">int xmlPedanticParserDefault (int val)<br />
</pre><p>Set and return the previous value for enabling pedantic warnings.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>int 0 or 1</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last value for 0 for no substitution, 1 for substitution.</td></tr></tbody></table></div><h3><a name="xmlReadDoc" id="xmlReadDoc"></a>Function: xmlReadDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> xmlReadDoc (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur, <br /> const char * URL, <br /> const char * encoding, <br /> int options)<br />
</pre><p>parse an XML in-memory document and build a tree.</p>
diff --git a/doc/html/libxml-parserInternals.html b/doc/html/libxml-parserInternals.html
index 681057f..4d1292b 100644
--- a/doc/html/libxml-parserInternals.html
+++ b/doc/html/libxml-parserInternals.html
@@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Module parserInternals from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module parserInternals from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-parser.html">parser</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-pattern.html">pattern</a></th><td><a accesskey="n" href="libxml-pattern.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#INPUT_CHUNK">INPUT_CHUNK</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_DIGIT">IS_ASCII_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_BASECHAR">IS_BASECHAR</a></pre><pre class="programlisting">#define <a href="#IS_BLANK">IS_BLANK</a></pre><pre class="programlisting">#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a></pre><pre class="programlisting">#define <a href="#IS_BYTE_CHAR">IS_BYTE_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR">IS_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR_CH">IS_CHAR_CH</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING">IS_COMBINING</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING_CH">IS_COMBINING_CH</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT">IS_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT_CH">IS_DIGIT_CH</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER">IS_EXTENDER</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a></pre><pre class="programlisting">#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a></pre><pre class="programlisting">#define <a href="#IS_LETTER">IS_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR">IS_PUBIDCHAR</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a></pre><pre class="programlisting">#define <a href="#MOVETO_ENDTAG">MOVETO_ENDTAG</a></pre><pre class="programlisting">#define <a href="#MOVETO_STARTTAG">MOVETO_STARTTAG</a></pre><pre class="programlisting">#define <a href="#SKIP_EOL">SKIP_EOL</a></pre><pre class="programlisting">#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a></pre><pre class="programlisting">#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a></pre><pre class="programlisting"><a href="libxml-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> <a href="#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a> (const char * filename, <br /> const char * encoding)</pre>
+ </style><title>Module parserInternals from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module parserInternals from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-parser.html">parser</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-pattern.html">pattern</a></th><td><a accesskey="n" href="libxml-pattern.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#INPUT_CHUNK">INPUT_CHUNK</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_DIGIT">IS_ASCII_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_BASECHAR">IS_BASECHAR</a></pre><pre class="programlisting">#define <a href="#IS_BLANK">IS_BLANK</a></pre><pre class="programlisting">#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a></pre><pre class="programlisting">#define <a href="#IS_BYTE_CHAR">IS_BYTE_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR">IS_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR_CH">IS_CHAR_CH</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING">IS_COMBINING</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING_CH">IS_COMBINING_CH</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT">IS_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT_CH">IS_DIGIT_CH</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER">IS_EXTENDER</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a></pre><pre class="programlisting">#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a></pre><pre class="programlisting">#define <a href="#IS_LETTER">IS_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR">IS_PUBIDCHAR</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a></pre><pre class="programlisting">#define <a href="#MOVETO_ENDTAG">MOVETO_ENDTAG</a></pre><pre class="programlisting">#define <a href="#MOVETO_STARTTAG">MOVETO_STARTTAG</a></pre><pre class="programlisting">#define <a href="#SKIP_EOL">SKIP_EOL</a></pre><pre class="programlisting">#define <a href="#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a></pre><pre class="programlisting">#define <a href="#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a></pre><pre class="programlisting">#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a></pre><pre class="programlisting">#define <a href="#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a></pre><pre class="programlisting">#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a></pre><pre class="programlisting"><a href="libxml-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> <a href="#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a> (const char * filename, <br /> const char * encoding)</pre>
<pre class="programlisting">void <a href="#htmlInitAutoClose">htmlInitAutoClose</a> (void)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> <a href="#inputPop">inputPop</a> (<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)</pre>
<pre class="programlisting">int <a href="#inputPush">inputPush</a> (<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> value)</pre>
@@ -127,8 +127,11 @@ void <a href="#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a> (<a href="lib
<h3><a name="MOVETO_ENDTAG" id="MOVETO_ENDTAG"></a>Macro: MOVETO_ENDTAG</h3><pre>#define MOVETO_ENDTAG</pre><p>Skips to the next '&gt;' char.</p>
<h3><a name="MOVETO_STARTTAG" id="MOVETO_STARTTAG"></a>Macro: MOVETO_STARTTAG</h3><pre>#define MOVETO_STARTTAG</pre><p>Skips to the next '&lt;' char.</p>
<h3><a name="SKIP_EOL" id="SKIP_EOL"></a>Macro: SKIP_EOL</h3><pre>#define SKIP_EOL</pre><p>Skips the end of line chars.</p>
+<h3><a name="XML_MAX_DICTIONARY_LIMIT" id="XML_MAX_DICTIONARY_LIMIT"></a>Macro: XML_MAX_DICTIONARY_LIMIT</h3><pre>#define XML_MAX_DICTIONARY_LIMIT</pre><p>Maximum size allowed by the parser for a dictionary by default This is not a limitation of the parser but a safety boundary feature, use <a href="libxml-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Introduced in 2.9.0</p>
+<h3><a name="XML_MAX_LOOKUP_LIMIT" id="XML_MAX_LOOKUP_LIMIT"></a>Macro: XML_MAX_LOOKUP_LIMIT</h3><pre>#define XML_MAX_LOOKUP_LIMIT</pre><p>Maximum size allowed by the parser for ahead lookup This is an upper boundary enforced by the parser to avoid bad behaviour on "unfriendly' content Introduced in 2.9.0</p>
<h3><a name="XML_MAX_NAMELEN" id="XML_MAX_NAMELEN"></a>Macro: XML_MAX_NAMELEN</h3><pre>#define XML_MAX_NAMELEN</pre><p>Identifiers can be longer, but this will be more costly at runtime.</p>
-<h3><a name="XML_MAX_TEXT_LENGTH" id="XML_MAX_TEXT_LENGTH"></a>Macro: XML_MAX_TEXT_LENGTH</h3><pre>#define XML_MAX_TEXT_LENGTH</pre><p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it.</p>
+<h3><a name="XML_MAX_NAME_LENGTH" id="XML_MAX_NAME_LENGTH"></a>Macro: XML_MAX_NAME_LENGTH</h3><pre>#define XML_MAX_NAME_LENGTH</pre><p>Maximum size allowed for a markup identitier This is not a limitation of the parser but a safety boundary feature, use <a href="libxml-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Note that with the use of parsing dictionaries overriding the limit may result in more runtime memory usage in face of "unfriendly' content Introduced in 2.9.0</p>
+<h3><a name="XML_MAX_TEXT_LENGTH" id="XML_MAX_TEXT_LENGTH"></a>Macro: XML_MAX_TEXT_LENGTH</h3><pre>#define XML_MAX_TEXT_LENGTH</pre><p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Introduced in 2.9.0</p>
<h3><a name="XML_SUBSTITUTE_BOTH" id="XML_SUBSTITUTE_BOTH"></a>Macro: XML_SUBSTITUTE_BOTH</h3><pre>#define XML_SUBSTITUTE_BOTH</pre><p>Both general and parameter entities need to be substituted.</p>
<h3><a name="XML_SUBSTITUTE_NONE" id="XML_SUBSTITUTE_NONE"></a>Macro: XML_SUBSTITUTE_NONE</h3><pre>#define XML_SUBSTITUTE_NONE</pre><p>If no entities need to be substituted.</p>
<h3><a name="XML_SUBSTITUTE_PEREF" id="XML_SUBSTITUTE_PEREF"></a>Macro: XML_SUBSTITUTE_PEREF</h3><pre>#define XML_SUBSTITUTE_PEREF</pre><p>Whether parameter entities need to be substituted.</p>
diff --git a/doc/html/libxml-relaxng.html b/doc/html/libxml-relaxng.html
index 6d0ce42..1ec3192 100644
--- a/doc/html/libxml-relaxng.html
+++ b/doc/html/libxml-relaxng.html
@@ -149,7 +149,7 @@ The content of this structure is not made public by the API.
</pre><p>Pop the element end from the RelaxNG validation stack.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the RelaxNG validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element instance</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidatePushCData" id="xmlRelaxNGValidatePushCData"></a>Function: xmlRelaxNGValidatePushCData</h3><pre class="programlisting">int xmlRelaxNGValidatePushCData (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * data, <br /> int len)<br />
</pre><p>check the CData parsed for validation in the current stack</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the RelaxNG validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the lenght of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or -1 otherwise</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidatePushElement" id="xmlRelaxNGValidatePushElement"></a>Function: xmlRelaxNGValidatePushElement</h3><pre class="programlisting">int xmlRelaxNGValidatePushElement (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the RelaxNG validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or -1 otherwise</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidatePushElement" id="xmlRelaxNGValidatePushElement"></a>Function: xmlRelaxNGValidatePushElement</h3><pre class="programlisting">int xmlRelaxNGValidatePushElement (<a href="libxml-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br />
</pre><p>Push a new element start on the RelaxNG validation stack.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element instance</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 if validating the element requires a full node, and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlRelaxNGValidityErrorFunc" id="xmlRelaxNGValidityErrorFunc"></a>Function type: xmlRelaxNGValidityErrorFunc</h3><pre class="programlisting">Function type: xmlRelaxNGValidityErrorFunc
void xmlRelaxNGValidityErrorFunc (void * ctx, <br /> const char * msg, <br /> ... ...)
diff --git a/doc/html/libxml-tree.html b/doc/html/libxml-tree.html
index eb7c2bc..e2081cc 100644
--- a/doc/html/libxml-tree.html
+++ b/doc/html/libxml-tree.html
@@ -10,12 +10,15 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Module tree from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module tree from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-threads.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-threads.html">threads</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-uri.html">uri</a></th><td><a accesskey="n" href="libxml-uri.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>this module describes the structures found in an tree resulting from an XML or HTML parsing, as well as the API provided for various processing on that tree </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#BASE_BUFFER_SIZE">BASE_BUFFER_SIZE</a></pre><pre class="programlisting">#define <a href="#XML_GET_CONTENT">XML_GET_CONTENT</a></pre><pre class="programlisting">#define <a href="#XML_GET_LINE">XML_GET_LINE</a></pre><pre class="programlisting">#define <a href="#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XML_XML_ID">XML_XML_ID</a></pre><pre class="programlisting">#define <a href="#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#xmlChildrenNode">xmlChildrenNode</a></pre><pre class="programlisting">#define <a href="#xmlRootNode">xmlRootNode</a></pre><pre class="programlisting">Structure <a href="#xmlAttr">xmlAttr</a><br />struct _xmlAttr
+ </style><title>Module tree from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module tree from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-threads.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-threads.html">threads</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-uri.html">uri</a></th><td><a accesskey="n" href="libxml-uri.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>this module describes the structures found in an tree resulting from an XML or HTML parsing, as well as the API provided for various processing on that tree </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#BASE_BUFFER_SIZE">BASE_BUFFER_SIZE</a></pre><pre class="programlisting">#define <a href="#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a></pre><pre class="programlisting">#define <a href="#XML_GET_CONTENT">XML_GET_CONTENT</a></pre><pre class="programlisting">#define <a href="#XML_GET_LINE">XML_GET_LINE</a></pre><pre class="programlisting">#define <a href="#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XML_XML_ID">XML_XML_ID</a></pre><pre class="programlisting">#define <a href="#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#xmlChildrenNode">xmlChildrenNode</a></pre><pre class="programlisting">#define <a href="#xmlRootNode">xmlRootNode</a></pre><pre class="programlisting">Structure <a href="#xmlAttr">xmlAttr</a><br />struct _xmlAttr
</pre><pre class="programlisting">Typedef <a href="libxml-tree.html#xmlAttr">xmlAttr</a> * <a name="xmlAttrPtr" id="xmlAttrPtr">xmlAttrPtr</a>
</pre><pre class="programlisting">Structure <a href="#xmlAttribute">xmlAttribute</a><br />struct _xmlAttribute
</pre><pre class="programlisting">Enum <a href="#xmlAttributeDefault">xmlAttributeDefault</a>
</pre><pre class="programlisting">Typedef <a href="libxml-tree.html#xmlAttribute">xmlAttribute</a> * <a name="xmlAttributePtr" id="xmlAttributePtr">xmlAttributePtr</a>
</pre><pre class="programlisting">Enum <a href="#xmlAttributeType">xmlAttributeType</a>
+</pre><pre class="programlisting">Structure <a href="#xmlBuf">xmlBuf</a><br />struct _xmlBuf
+The content of this structure is not made public by the API.
+</pre><pre class="programlisting">Typedef <a href="libxml-tree.html#xmlBuf">xmlBuf</a> * <a name="xmlBufPtr" id="xmlBufPtr">xmlBufPtr</a>
</pre><pre class="programlisting">Structure <a href="#xmlBuffer">xmlBuffer</a><br />struct _xmlBuffer
</pre><pre class="programlisting">Enum <a href="#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a>
</pre><pre class="programlisting">Typedef <a href="libxml-tree.html#xmlBuffer">xmlBuffer</a> * <a name="xmlBufferPtr" id="xmlBufferPtr">xmlBufferPtr</a>
@@ -67,11 +70,17 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddPrevSibling">xmlAddPrevSibling</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddSibling">xmlAddSibling</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)</pre>
<pre class="programlisting">void <a href="#xmlAttrSerializeTxtContent">xmlAttrSerializeTxtContent</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * string)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufContent">xmlBufContent</a> (const <a href="libxml-tree.html#xmlBuf">xmlBuf</a> * buf)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufEnd">xmlBufEnd</a> (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf)</pre>
+<pre class="programlisting">int <a href="#xmlBufGetNodeContent">xmlBufGetNodeContent</a> (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)</pre>
+<pre class="programlisting">size_t <a href="#xmlBufNodeDump">xmlBufNodeDump</a> (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int level, <br /> int format)</pre>
+<pre class="programlisting">size_t <a href="#xmlBufShrink">xmlBufShrink</a> (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br /> size_t len)</pre>
+<pre class="programlisting">size_t <a href="#xmlBufUse">xmlBufUse</a> (const <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf)</pre>
<pre class="programlisting">int <a href="#xmlBufferAdd">xmlBufferAdd</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)</pre>
<pre class="programlisting">int <a href="#xmlBufferAddHead">xmlBufferAddHead</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)</pre>
<pre class="programlisting">int <a href="#xmlBufferCCat">xmlBufferCCat</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const char * str)</pre>
<pre class="programlisting">int <a href="#xmlBufferCat">xmlBufferCat</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)</pre>
-<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufferContent">xmlBufferContent</a> (const <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)</pre>
+<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufferContent">xmlBufferContent</a> (const <a href="libxml-tree.html#xmlBuffer">xmlBuffer</a> * buf)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> <a href="#xmlBufferCreate">xmlBufferCreate</a> (void)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> <a href="#xmlBufferCreateSize">xmlBufferCreateSize</a> (size_t size)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> <a href="#xmlBufferCreateStatic">xmlBufferCreateStatic</a> (void * mem, <br /> size_t size)</pre>
@@ -80,7 +89,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting">void <a href="#xmlBufferEmpty">xmlBufferEmpty</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)</pre>
<pre class="programlisting">void <a href="#xmlBufferFree">xmlBufferFree</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)</pre>
<pre class="programlisting">int <a href="#xmlBufferGrow">xmlBufferGrow</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> unsigned int len)</pre>
-<pre class="programlisting">int <a href="#xmlBufferLength">xmlBufferLength</a> (const <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)</pre>
+<pre class="programlisting">int <a href="#xmlBufferLength">xmlBufferLength</a> (const <a href="libxml-tree.html#xmlBuffer">xmlBuffer</a> * buf)</pre>
<pre class="programlisting">int <a href="#xmlBufferResize">xmlBufferResize</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> unsigned int size)</pre>
<pre class="programlisting">void <a href="#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme)</pre>
<pre class="programlisting">int <a href="#xmlBufferShrink">xmlBufferShrink</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> unsigned int len)</pre>
@@ -93,8 +102,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlCopyDtd">xmlCopyDtd</a> (<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlCopyNamespace">xmlCopyNamespace</a> (<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlCopyNamespaceList">xmlCopyNamespaceList</a> (<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> cur)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNode">xmlCopyNode</a> (const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> int extended)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNodeList">xmlCopyNodeList</a> (const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNode">xmlCopyNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> int extended)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlCopyNodeList">xmlCopyNodeList</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlCopyProp">xmlCopyProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br /> <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlCopyPropList">xmlCopyPropList</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br /> <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlCreateIntSubset">xmlCreateIntSubset</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)</pre>
@@ -107,15 +116,15 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> <a href="#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a> (void)</pre>
<pre class="programlisting">int <a href="#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a> (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br /> int options)</pre>
<pre class="programlisting">int <a href="#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a> (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> int options)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNode">xmlDocCopyNode</a> (const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int extended)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNodeList">xmlDocCopyNodeList</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNode">xmlDocCopyNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int extended)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocCopyNodeList">xmlDocCopyNodeList</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting">int <a href="#xmlDocDump">xmlDocDump</a> (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)</pre>
<pre class="programlisting">void <a href="#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br /> int * size, <br /> int format)</pre>
<pre class="programlisting">void <a href="#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br /> int * doc_txt_len, <br /> const char * txt_encoding, <br /> int format)</pre>
<pre class="programlisting">void <a href="#xmlDocDumpMemory">xmlDocDumpMemory</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br /> int * size)</pre>
<pre class="programlisting">void <a href="#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br /> int * doc_txt_len, <br /> const char * txt_encoding)</pre>
<pre class="programlisting">int <a href="#xmlDocFormatDump">xmlDocFormatDump</a> (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br /> int format)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocGetRootElement">xmlDocGetRootElement</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocGetRootElement">xmlDocGetRootElement</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocSetRootElement">xmlDocSetRootElement</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> root)</pre>
<pre class="programlisting">void <a href="#xmlElemDump">xmlElemDump</a> (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlFirstElementChild">xmlFirstElementChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
@@ -129,18 +138,18 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting">void <a href="#xmlFreePropList">xmlFreePropList</a> (<a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> <a href="#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a> (void)</pre>
<pre class="programlisting">int <a href="#xmlGetCompressMode">xmlGetCompressMode</a> (void)</pre>
-<pre class="programlisting">int <a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlGetIntSubset">xmlGetIntSubset</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlGetLastChild">xmlGetLastChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
-<pre class="programlisting">long <a href="#xmlGetLineNo">xmlGetLineNo</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNoNsProp">xmlGetNoNsProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNodePath">xmlGetNodePath</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> * <a href="#xmlGetNsList">xmlGetNsList</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNsProp">xmlGetNsProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetProp">xmlGetProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasNsProp">xmlHasNsProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasProp">xmlHasProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
-<pre class="programlisting">int <a href="#xmlIsBlankNode">xmlIsBlankNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
+<pre class="programlisting">int <a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlGetIntSubset">xmlGetIntSubset</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlGetLastChild">xmlGetLastChild</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * parent)</pre>
+<pre class="programlisting">long <a href="#xmlGetLineNo">xmlGetLineNo</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNoNsProp">xmlGetNoNsProp</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNodePath">xmlGetNodePath</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> * <a href="#xmlGetNsList">xmlGetNsList</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNsProp">xmlGetNsProp</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetProp">xmlGetProp</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasNsProp">xmlHasNsProp</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasProp">xmlHasProp</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
+<pre class="programlisting">int <a href="#xmlIsBlankNode">xmlIsBlankNode</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)</pre>
<pre class="programlisting">int <a href="#xmlIsXHTML">xmlIsXHTML</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * publicID)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlLastElementChild">xmlLastElementChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewCDataBlock">xmlNewCDataBlock</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
@@ -155,7 +164,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocPI">xmlNewDocPI</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewDocProp">xmlNewDocProp</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocRawNode">xmlNewDocRawNode</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocText">xmlNewDocText</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocText">xmlNewDocText</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewDocTextLen">xmlNewDocTextLen</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlNewDtd">xmlNewDtd</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlNewGlobalNs">xmlNewGlobalNs</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * href, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix)</pre>
@@ -166,23 +175,23 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewNsPropEatName">xmlNewNsPropEatName</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewPI">xmlNewPI</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlNewProp">xmlNewProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewReference">xmlNewReference</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewReference">xmlNewReference</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewText">xmlNewText</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewTextChild">xmlNewTextChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewTextLen">xmlNewTextLen</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNextElementSibling">xmlNextElementSibling</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting">void <a href="#xmlNodeAddContent">xmlNodeAddContent</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting">void <a href="#xmlNodeAddContentLen">xmlNodeAddContentLen</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
-<pre class="programlisting">int <a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
+<pre class="programlisting">int <a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)</pre>
<pre class="programlisting">int <a href="#xmlNodeDump">xmlNodeDump</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int level, <br /> int format)</pre>
<pre class="programlisting">void <a href="#xmlNodeDumpOutput">xmlNodeDumpOutput</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int level, <br /> int format, <br /> const char * encoding)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetBase">xmlNodeGetBase</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetContent">xmlNodeGetContent</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetLang">xmlNodeGetLang</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
-<pre class="programlisting">int <a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
-<pre class="programlisting">int <a href="#xmlNodeIsText">xmlNodeIsText</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetRawString">xmlNodeListGetRawString</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br /> int inLine)</pre>
-<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetString">xmlNodeListGetString</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br /> int inLine)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetBase">xmlNodeGetBase</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetContent">xmlNodeGetContent</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetLang">xmlNodeGetLang</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)</pre>
+<pre class="programlisting">int <a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)</pre>
+<pre class="programlisting">int <a href="#xmlNodeIsText">xmlNodeIsText</a> (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetRawString">xmlNodeListGetRawString</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * list, <br /> int inLine)</pre>
+<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeListGetString">xmlNodeListGetString</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * list, <br /> int inLine)</pre>
<pre class="programlisting">void <a href="#xmlNodeSetBase">xmlNodeSetBase</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * uri)</pre>
<pre class="programlisting">void <a href="#xmlNodeSetContent">xmlNodeSetContent</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting">void <a href="#xmlNodeSetContentLen">xmlNodeSetContentLen</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
@@ -211,8 +220,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting">void <a href="#xmlSetTreeDoc">xmlSetTreeDoc</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlSplitQName2">xmlSplitQName2</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** prefix)</pre>
<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlSplitQName3">xmlSplitQName3</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int * len)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringGetNodeList">xmlStringGetNodeList</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br /> int len)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringGetNodeList">xmlStringGetNodeList</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a> (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br /> int len)</pre>
<pre class="programlisting">int <a href="#xmlTextConcat">xmlTextConcat</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlTextMerge">xmlTextMerge</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> first, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> second)</pre>
<pre class="programlisting">void <a href="#xmlUnlinkNode">xmlUnlinkNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -224,6 +233,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting">int <a href="#xmlValidateQName">xmlValidateQName</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br /> int space)</pre>
<h2>Description</h2>
<h3><a name="BASE_BUFFER_SIZE" id="BASE_BUFFER_SIZE"></a>Macro: BASE_BUFFER_SIZE</h3><pre>#define BASE_BUFFER_SIZE</pre><p>default buffer size 4000.</p>
+<h3><a name="LIBXML2_NEW_BUFFER" id="LIBXML2_NEW_BUFFER"></a>Macro: LIBXML2_NEW_BUFFER</h3><pre>#define LIBXML2_NEW_BUFFER</pre><p>Macro used to express that the API use the new buffers for <a href="libxml-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a> and xmlOutputBuffer. The change was introduced in 2.9.0.</p>
<h3><a name="XML_GET_CONTENT" id="XML_GET_CONTENT"></a>Macro: XML_GET_CONTENT</h3><pre>#define XML_GET_CONTENT</pre><p>Macro to extract the content pointer of a node.</p>
<h3><a name="XML_GET_LINE" id="XML_GET_LINE"></a>Macro: XML_GET_LINE</h3><pre>#define XML_GET_LINE</pre><p>Macro to extract the line number of an element node.</p>
<h3><a name="XML_LOCAL_NAMESPACE" id="XML_LOCAL_NAMESPACE"></a>Macro: XML_LOCAL_NAMESPACE</h3><pre>#define XML_LOCAL_NAMESPACE</pre><p>A namespace declaration node.</p>
@@ -279,7 +289,11 @@ A:link, A:visited, A:active { text-decoration: underline }
<a name="XML_ATTRIBUTE_ENUMERATION" id="XML_ATTRIBUTE_ENUMERATION">XML_ATTRIBUTE_ENUMERATION</a> = 9
<a name="XML_ATTRIBUTE_NOTATION" id="XML_ATTRIBUTE_NOTATION">XML_ATTRIBUTE_NOTATION</a> = 10
}
-</pre><h3><a name="xmlBuffer" id="xmlBuffer">Structure xmlBuffer</a></h3><pre class="programlisting">Structure xmlBuffer<br />struct _xmlBuffer {
+</pre><h3><a name="xmlBuf" id="xmlBuf">Structure xmlBuf</a></h3><pre class="programlisting">Structure xmlBuf<br />struct _xmlBuf {
+The content of this structure is not made public by the API.
+}</pre>
+ A pointer to a buffer structure, the actual structure internals are not public
+ <h3><a name="xmlBuffer" id="xmlBuffer">Structure xmlBuffer</a></h3><pre class="programlisting">Structure xmlBuffer<br />struct _xmlBuffer {
<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content : The buffer content UTF8
unsigned int use : The buffer size used
unsigned int size : The buffer size
@@ -478,8 +492,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="libxml-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> writecallback
<a href="libxml-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> closecallback
<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder : I18N conversions to UTF-8
- <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer : Local buffer encoded in UTF-8 or ISOLat
- <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> conv : if encoder != NULL buffer for output
+ <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buffer : Local buffer encoded in UTF-8 or ISOLat
+ <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> conv : if encoder != NULL buffer for output
int written : total number of byte written
int error
}</pre><h3><a name="xmlParserCtxt" id="xmlParserCtxt">Structure xmlParserCtxt</a></h3><pre class="programlisting">Structure xmlParserCtxt<br />struct _xmlParserCtxt {
@@ -571,6 +585,7 @@ A:link, A:visited, A:active { text-decoration: underline }
int nodeInfoMax : Max depth of the parsing stack
<a href="libxml-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> * nodeInfoTab : array of nodeInfos
int input_id : we need to label inputs
+ unsigned long sizeentcopy : volume of entity copy
}</pre><h3><a name="xmlParserInput" id="xmlParserInput">Structure xmlParserInput</a></h3><pre class="programlisting">Structure xmlParserInput<br />struct _xmlParserInput {
<a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> buf : UTF-8 encoded buffer
const char * filename : The file analyzed, if any
@@ -592,8 +607,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="libxml-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> readcallback
<a href="libxml-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> closecallback
<a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder : I18N conversions to UTF-8
- <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer : Local buffer encoded in UTF-8
- <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> raw : if encoder != NULL buffer for raw input
+ <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buffer : Local buffer encoded in UTF-8
+ <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> raw : if encoder != NULL buffer for raw input
int compressed : -1=unknown, 0=not compressed, 1=compres
int error
unsigned long rawconsumed : amount consumed from raw
@@ -653,7 +668,19 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Add a new element @elem to the list of siblings of @cur merging adjacent TEXT nodes (@elem may be freed) If the new element was already inserted in a document it is first unlinked from its existing context.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the child node</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>the new node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new element or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlAttrSerializeTxtContent" id="xmlAttrSerializeTxtContent"></a>Function: xmlAttrSerializeTxtContent</h3><pre class="programlisting">void xmlAttrSerializeTxtContent (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * string)<br />
</pre><p>Serialize text <a href="libxml-SAX.html#attribute">attribute</a> values to an xml simple buffer</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> node</td></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>the text content</td></tr></tbody></table></div><h3><a name="xmlBufferAdd" id="xmlBufferAdd"></a>Function: xmlBufferAdd</h3><pre class="programlisting">int xmlBufferAdd (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> node</td></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>the text content</td></tr></tbody></table></div><h3><a name="xmlBufContent" id="xmlBufContent"></a>Function: xmlBufContent</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlBufContent (const <a href="libxml-tree.html#xmlBuf">xmlBuf</a> * buf)<br />
+</pre><p>Function to extract the content of a buffer</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal content</td></tr></tbody></table></div><h3><a name="xmlBufEnd" id="xmlBufEnd"></a>Function: xmlBufEnd</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlBufEnd (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf)<br />
+</pre><p>Function to extract the end of the content of a buffer</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the end of the internal content or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlBufGetNodeContent" id="xmlBufGetNodeContent"></a>Function: xmlBufGetNodeContent</h3><pre class="programlisting">int xmlBufGetNodeContent (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)<br />
+</pre><p>Read the value of a node @cur, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buf with this value</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>a buffer <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a></td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlBufNodeDump" id="xmlBufNodeDump"></a>Function: xmlBufNodeDump</h3><pre class="programlisting">size_t xmlBufNodeDump (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int level, <br /> int format)<br />
+</pre><p>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written to the buffer, in case of error 0 is returned or @buf stores the error</td></tr></tbody></table></div><h3><a name="xmlBufShrink" id="xmlBufShrink"></a>Function: xmlBufShrink</h3><pre class="programlisting">size_t xmlBufShrink (<a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br /> size_t len)<br />
+</pre><p>Remove the beginning of an XML buffer. NOTE that this routine behaviour differs from xmlBufferShrink() as it will return 0 on error instead of -1 due to size_t being used as the return type.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to dump</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the number of <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> to remove</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of byte removed or 0 in case of failure</td></tr></tbody></table></div><h3><a name="xmlBufUse" id="xmlBufUse"></a>Function: xmlBufUse</h3><pre class="programlisting">size_t xmlBufUse (const <a href="libxml-tree.html#xmlBufPtr">xmlBufPtr</a> buf)<br />
+</pre><p>Function to get the length of a buffer</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the length of data in the internal content</td></tr></tbody></table></div><h3><a name="xmlBufferAdd" id="xmlBufferAdd"></a>Function: xmlBufferAdd</h3><pre class="programlisting">int xmlBufferAdd (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)<br />
</pre><p>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to dump</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the #xmlChar string</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the number of #xmlChar to add</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlBufferAddHead" id="xmlBufferAddHead"></a>Function: xmlBufferAddHead</h3><pre class="programlisting">int xmlBufferAddHead (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> int len)<br />
</pre><p>Add a string range to the beginning of an XML buffer. if len == -1, the length of @str is recomputed.</p>
@@ -661,7 +688,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Append a zero terminated C string to an XML buffer.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to dump</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the C char string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlBufferCat" id="xmlBufferCat"></a>Function: xmlBufferCat</h3><pre class="programlisting">int xmlBufferCat (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)<br />
</pre><p>Append a zero terminated string to an XML buffer.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to add to</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the #xmlChar string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlBufferContent" id="xmlBufferContent"></a>Function: xmlBufferContent</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlBufferContent (const <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to add to</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the #xmlChar string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlBufferContent" id="xmlBufferContent"></a>Function: xmlBufferContent</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlBufferContent (const <a href="libxml-tree.html#xmlBuffer">xmlBuffer</a> * buf)<br />
</pre><p>Function to extract the content of a buffer</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the internal content</td></tr></tbody></table></div><h3><a name="xmlBufferCreate" id="xmlBufferCreate"></a>Function: xmlBufferCreate</h3><pre class="programlisting"><a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> xmlBufferCreate (void)<br />
</pre><p>routine to create an XML buffer.</p>
@@ -679,7 +706,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Frees an XML buffer. It frees both the content and the structure which encapsulate it.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer to free</td></tr></tbody></table></div><h3><a name="xmlBufferGrow" id="xmlBufferGrow"></a>Function: xmlBufferGrow</h3><pre class="programlisting">int xmlBufferGrow (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> unsigned int len)<br />
</pre><p>Grow the available space of an XML buffer.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the minimum free size to allocate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new available space or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlBufferLength" id="xmlBufferLength"></a>Function: xmlBufferLength</h3><pre class="programlisting">int xmlBufferLength (const <a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the minimum free size to allocate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new available space or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlBufferLength" id="xmlBufferLength"></a>Function: xmlBufferLength</h3><pre class="programlisting">int xmlBufferLength (const <a href="libxml-tree.html#xmlBuffer">xmlBuffer</a> * buf)<br />
</pre><p>Function to get the length of a buffer</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the length of data in the internal content</td></tr></tbody></table></div><h3><a name="xmlBufferResize" id="xmlBufferResize"></a>Function: xmlBufferResize</h3><pre class="programlisting">int xmlBufferResize (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> unsigned int size)<br />
</pre><p>Resize a buffer to accommodate minimum size of @size.</p>
@@ -705,9 +732,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Do a copy of the namespace.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNsPtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyNamespaceList" id="xmlCopyNamespaceList"></a>Function: xmlCopyNamespaceList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> xmlCopyNamespaceList (<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> cur)<br />
</pre><p>Do a copy of an namespace list.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the first namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNsPtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyNode" id="xmlCopyNode"></a>Function: xmlCopyNode</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNode (const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> int extended)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the first namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNsPtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyNode" id="xmlCopyNode"></a>Function: xmlCopyNode</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNode (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> int extended)<br />
</pre><p>Do a copy of the node.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>extended</tt></i>:</span></td><td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyNodeList" id="xmlCopyNodeList"></a>Function: xmlCopyNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNodeList (const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>extended</tt></i>:</span></td><td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyNodeList" id="xmlCopyNodeList"></a>Function: xmlCopyNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlCopyNodeList (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
</pre><p>Do a recursive copy of the node list. Use xmlDocCopyNodeList() if possible to ensure string interning.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the first node in the list.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyProp" id="xmlCopyProp"></a>Function: xmlCopyProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlCopyProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br /> <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br />
</pre><p>Do a copy of the attribute.</p>
@@ -719,20 +746,20 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> xmlDOMWrapAcquireNsFunction (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nsName, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nsPrefix)
</pre><p>A function called to acquire namespaces (xmlNs) from the wrapper.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a DOM wrapper context</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the context node (element or attribute)</td></tr><tr><td><span class="term"><i><tt>nsName</tt></i>:</span></td><td>the requested namespace name</td></tr><tr><td><span class="term"><i><tt>nsPrefix</tt></i>:</span></td><td>the requested namespace prefix</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> or NULL in case of an error.</td></tr></tbody></table></div><br />
<h3><a name="xmlDOMWrapAdoptNode" id="xmlDOMWrapAdoptNode"></a>Function: xmlDOMWrapAdoptNode</h3><pre class="programlisting">int xmlDOMWrapAdoptNode (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br /> int options)<br />
-</pre><p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unliked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml-SAX.html#attribute">attribute</a> values or element content. NOTE: This function was not intensively tested.</p>
+</pre><p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unlinked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml-SAX.html#attribute">attribute</a> values or element content. NOTE: This function was not intensively tested.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the optional context for custom processing</td></tr><tr><td><span class="term"><i><tt>sourceDoc</tt></i>:</span></td><td>the optional sourceDoc</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to start with</td></tr><tr><td><span class="term"><i><tt>destDoc</tt></i>:</span></td><td>the destination doc</td></tr><tr><td><span class="term"><i><tt>destParent</tt></i>:</span></td><td>the optional new parent of @node in @destDoc</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>option flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the operation succeeded, 1 if a node of unsupported type was given, 2 if a node of not yet supported type was given and -1 on API/internal errors.</td></tr></tbody></table></div><h3><a name="xmlDOMWrapCloneNode" id="xmlDOMWrapCloneNode"></a>Function: xmlDOMWrapCloneNode</h3><pre class="programlisting">int xmlDOMWrapCloneNode (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> * resNode, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br /> int deep, <br /> int options)<br />
</pre><p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used. This is the case when you don't know already where the cloned branch will be added to. If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml-SAX.html#attribute">attribute</a> values or element content. TODO: 1) What to do with XInclude? Currently this returns an error for XInclude.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the optional context for custom processing</td></tr><tr><td><span class="term"><i><tt>sourceDoc</tt></i>:</span></td><td>the optional sourceDoc</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to start with</td></tr><tr><td><span class="term"><i><tt>resNode</tt></i>:</span></td><td>the clone of the given @node</td></tr><tr><td><span class="term"><i><tt>destDoc</tt></i>:</span></td><td>the destination doc</td></tr><tr><td><span class="term"><i><tt>destParent</tt></i>:</span></td><td>the optional new parent of @node in @destDoc</td></tr><tr><td><span class="term"><i><tt>deep</tt></i>:</span></td><td>descend into child if set</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>option flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the operation succeeded, 1 if a node of unsupported (or not yet supported) type was given, -1 on API/internal errors.</td></tr></tbody></table></div><h3><a name="xmlDOMWrapFreeCtxt" id="xmlDOMWrapFreeCtxt"></a>Function: xmlDOMWrapFreeCtxt</h3><pre class="programlisting">void xmlDOMWrapFreeCtxt (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt)<br />
</pre><p>Frees the DOM-wrapper context.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the DOM-wrapper context</td></tr></tbody></table></div><h3><a name="xmlDOMWrapNewCtxt" id="xmlDOMWrapNewCtxt"></a>Function: xmlDOMWrapNewCtxt</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> xmlDOMWrapNewCtxt (void)<br />
</pre><p>Allocates and initializes a new DOM-wrapper context.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> or NULL in case of an internal errror.</td></tr></tbody></table></div><h3><a name="xmlDOMWrapReconcileNamespaces" id="xmlDOMWrapReconcileNamespaces"></a>Function: xmlDOMWrapReconcileNamespaces</h3><pre class="programlisting">int xmlDOMWrapReconcileNamespaces (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br /> int options)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> or NULL in case of an internal error.</td></tr></tbody></table></div><h3><a name="xmlDOMWrapReconcileNamespaces" id="xmlDOMWrapReconcileNamespaces"></a>Function: xmlDOMWrapReconcileNamespaces</h3><pre class="programlisting">int xmlDOMWrapReconcileNamespaces (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br /> int options)<br />
</pre><p>Ensures that ns-references point to ns-decls hold on element-nodes. Ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in <a href="libxml-SAX.html#attribute">attribute</a> values or element content. NOTE: This function was not intensively tested.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>DOM wrapper context, unused at the moment</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>the element-node</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>option flags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if succeeded, -1 otherwise and on API/internal errors.</td></tr></tbody></table></div><h3><a name="xmlDOMWrapRemoveNode" id="xmlDOMWrapRemoveNode"></a>Function: xmlDOMWrapRemoveNode</h3><pre class="programlisting">int xmlDOMWrapRemoveNode (<a href="libxml-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> int options)<br />
</pre><p>Unlinks the given node from its owner. This will substitute ns-references to node-&gt;nsDef for ns-references to doc-&gt;oldNs, thus ensuring the removed branch to be autark wrt ns-references. NOTE: This function was not intensively tested.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a DOM wrapper context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the doc</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to be removed.</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>set of options, unused at the moment</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, 1 if the node is not supported, -1 on API and internal errors.</td></tr></tbody></table></div><h3><a name="xmlDocCopyNode" id="xmlDocCopyNode"></a>Function: xmlDocCopyNode</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNode (const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int extended)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a DOM wrapper context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the doc</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to be removed.</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>set of options, unused at the moment</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, 1 if the node is not supported, -1 on API and internal errors.</td></tr></tbody></table></div><h3><a name="xmlDocCopyNode" id="xmlDocCopyNode"></a>Function: xmlDocCopyNode</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNode (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int extended)<br />
</pre><p>Do a copy of the node to a given document.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>extended</tt></i>:</span></td><td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlDocCopyNodeList" id="xmlDocCopyNodeList"></a>Function: xmlDocCopyNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>extended</tt></i>:</span></td><td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlDocCopyNodeList" id="xmlDocCopyNodeList"></a>Function: xmlDocCopyNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocCopyNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
</pre><p>Do a recursive copy of the node list.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the target document</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the first node in the list.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlNodePtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlDocDump" id="xmlDocDump"></a>Function: xmlDocDump</h3><pre class="programlisting">int xmlDocDump (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br />
</pre><p>Dump an XML document to an open FILE.</p>
@@ -746,7 +773,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Dump the current DOM tree into memory using the character encoding specified by the caller. Note it is up to the caller of this function to free the allocated memory with xmlFree().</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>out_doc</tt></i>:</span></td><td>Document to generate XML text from</td></tr><tr><td><span class="term"><i><tt>doc_txt_ptr</tt></i>:</span></td><td>Memory pointer for allocated XML text</td></tr><tr><td><span class="term"><i><tt>doc_txt_len</tt></i>:</span></td><td>Length of the generated XML text</td></tr><tr><td><span class="term"><i><tt>txt_encoding</tt></i>:</span></td><td>Character encoding to use when generating XML text</td></tr></tbody></table></div><h3><a name="xmlDocFormatDump" id="xmlDocFormatDump"></a>Function: xmlDocFormatDump</h3><pre class="programlisting">int xmlDocFormatDump (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br /> int format)<br />
</pre><p>Dump an XML document to an open FILE.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE*</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>should formatting spaces been added</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of failure. Note that @format = 1 provide node indenting only if <a href="libxml-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</td></tr></tbody></table></div><h3><a name="xmlDocGetRootElement" id="xmlDocGetRootElement"></a>Function: xmlDocGetRootElement</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocGetRootElement (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE*</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>should formatting spaces been added</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of failure. Note that @format = 1 provide node indenting only if <a href="libxml-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</td></tr></tbody></table></div><h3><a name="xmlDocGetRootElement" id="xmlDocGetRootElement"></a>Function: xmlDocGetRootElement</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocGetRootElement (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc)<br />
</pre><p>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the #xmlNodePtr for the root or NULL</td></tr></tbody></table></div><h3><a name="xmlDocSetRootElement" id="xmlDocSetRootElement"></a>Function: xmlDocSetRootElement</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlDocSetRootElement (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> root)<br />
</pre><p>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</p>
@@ -774,29 +801,29 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Types are <a href="libxml-tree.html#XML_BUFFER_ALLOC_EXACT">XML_BUFFER_ALLOC_EXACT</a> - use exact sizes, keeps memory usage down <a href="libxml-tree.html#XML_BUFFER_ALLOC_DOUBLEIT">XML_BUFFER_ALLOC_DOUBLEIT</a> - double buffer when extra needed, improves performance <a href="libxml-tree.html#XML_BUFFER_ALLOC_HYBRID">XML_BUFFER_ALLOC_HYBRID</a> - use exact sizes on small strings to keep memory usage tight in normal usage, and doubleit on large strings to avoid pathological performance.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the current allocation scheme</td></tr></tbody></table></div><h3><a name="xmlGetCompressMode" id="xmlGetCompressMode"></a>Function: xmlGetCompressMode</h3><pre class="programlisting">int xmlGetCompressMode (void)<br />
</pre><p>get the default compression mode used, ZLIB based.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 (uncompressed) to 9 (max compression)</td></tr></tbody></table></div><h3><a name="xmlGetDocCompressMode" id="xmlGetDocCompressMode"></a>Function: xmlGetDocCompressMode</h3><pre class="programlisting">int xmlGetDocCompressMode (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 (uncompressed) to 9 (max compression)</td></tr></tbody></table></div><h3><a name="xmlGetDocCompressMode" id="xmlGetDocCompressMode"></a>Function: xmlGetDocCompressMode</h3><pre class="programlisting">int xmlGetDocCompressMode (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc)<br />
</pre><p>get the compression ratio for a document, ZLIB based</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 (uncompressed) to 9 (max compression)</td></tr></tbody></table></div><h3><a name="xmlGetIntSubset" id="xmlGetIntSubset"></a>Function: xmlGetIntSubset</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlGetIntSubset (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 (uncompressed) to 9 (max compression)</td></tr></tbody></table></div><h3><a name="xmlGetIntSubset" id="xmlGetIntSubset"></a>Function: xmlGetIntSubset</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlGetIntSubset (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc)<br />
</pre><p>Get the internal subset of a document</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document pointer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the DTD structure or NULL if not found</td></tr></tbody></table></div><h3><a name="xmlGetLastChild" id="xmlGetLastChild"></a>Function: xmlGetLastChild</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlGetLastChild (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document pointer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the DTD structure or NULL if not found</td></tr></tbody></table></div><h3><a name="xmlGetLastChild" id="xmlGetLastChild"></a>Function: xmlGetLastChild</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlGetLastChild (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * parent)<br />
</pre><p>Search the last child of a node.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last child or NULL if none.</td></tr></tbody></table></div><h3><a name="xmlGetLineNo" id="xmlGetLineNo"></a>Function: xmlGetLineNo</h3><pre class="programlisting">long xmlGetLineNo (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
-</pre><p>Get line number of @node. This requires activation of this option before invoking the parser by calling xmlLineNumbersDefault(1)</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>valid node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the line number if successful, -1 otherwise</td></tr></tbody></table></div><h3><a name="xmlGetNoNsProp" id="xmlGetNoNsProp"></a>Function: xmlGetNoNsProp</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNoNsProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last child or NULL if none.</td></tr></tbody></table></div><h3><a name="xmlGetLineNo" id="xmlGetLineNo"></a>Function: xmlGetLineNo</h3><pre class="programlisting">long xmlGetLineNo (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)<br />
+</pre><p>Get line number of @node. Try to override the limitation of lines being store in 16 bits ints if <a href="libxml-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> parser option was used</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>valid node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the line number if successful, -1 otherwise</td></tr></tbody></table></div><h3><a name="xmlGetNoNsProp" id="xmlGetNoNsProp"></a>Function: xmlGetNoNsProp</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNoNsProp (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Search and get the value of an <a href="libxml-SAX.html#attribute">attribute</a> associated to a node This does the entity substitution. This function looks in DTD <a href="libxml-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off. This function is similar to <a href="libxml-tree.html#xmlGetProp">xmlGetProp</a> except it will accept only an <a href="libxml-SAX.html#attribute">attribute</a> in no namespace.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlGetNodePath" id="xmlGetNodePath"></a>Function: xmlGetNodePath</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNodePath (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlGetNodePath" id="xmlGetNodePath"></a>Function: xmlGetNodePath</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNodePath (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)<br />
</pre><p>Build a structure based Path for the given node</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new path or NULL in case of error. The caller must free the returned string</td></tr></tbody></table></div><h3><a name="xmlGetNsList" id="xmlGetNsList"></a>Function: xmlGetNsList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> * xmlGetNsList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new path or NULL in case of error. The caller must free the returned string</td></tr></tbody></table></div><h3><a name="xmlGetNsList" id="xmlGetNsList"></a>Function: xmlGetNsList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> * xmlGetNsList (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)<br />
</pre><p>Search all the namespace applying to a given element.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an NULL terminated array of all the #xmlNsPtr found that need to be freed by the caller or NULL if no namespace if defined</td></tr></tbody></table></div><h3><a name="xmlGetNsProp" id="xmlGetNsProp"></a>Function: xmlGetNsProp</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNsProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an NULL terminated array of all the #xmlNsPtr found that need to be freed by the caller or NULL if no namespace if defined</td></tr></tbody></table></div><h3><a name="xmlGetNsProp" id="xmlGetNsProp"></a>Function: xmlGetNsProp</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetNsProp (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br />
</pre><p>Search and get the value of an <a href="libxml-SAX.html#attribute">attribute</a> associated to a node This <a href="libxml-SAX.html#attribute">attribute</a> has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD <a href="libxml-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlGetProp" id="xmlGetProp"></a>Function: xmlGetProp</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlGetProp" id="xmlGetProp"></a>Function: xmlGetProp</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlGetProp (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Search and get the value of an <a href="libxml-SAX.html#attribute">attribute</a> associated to a node This does the entity substitution. This function looks in DTD <a href="libxml-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off. NOTE: this function acts independently of namespaces associated to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp() for namespace aware processing.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlHasNsProp" id="xmlHasNsProp"></a>Function: xmlHasNsProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasNsProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value or NULL if not found. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlHasNsProp" id="xmlHasNsProp"></a>Function: xmlHasNsProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasNsProp (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br />
</pre><p>Search for an <a href="libxml-SAX.html#attribute">attribute</a> associated to a node This <a href="libxml-SAX.html#attribute">attribute</a> has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD <a href="libxml-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off. Note that a namespace of NULL indicates to use the default namespace.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> or the <a href="libxml-SAX.html#attribute">attribute</a> declaration or NULL if neither was found.</td></tr></tbody></table></div><h3><a name="xmlHasProp" id="xmlHasProp"></a>Function: xmlHasProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> or the <a href="libxml-SAX.html#attribute">attribute</a> declaration or NULL if neither was found.</td></tr></tbody></table></div><h3><a name="xmlHasProp" id="xmlHasProp"></a>Function: xmlHasProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlHasProp (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Search an <a href="libxml-SAX.html#attribute">attribute</a> associated to a node This function also looks in DTD <a href="libxml-SAX.html#attribute">attribute</a> declaration for #FIXED or default declaration values unless DTD use has been turned off.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> or the <a href="libxml-SAX.html#attribute">attribute</a> declaration or NULL if neither was found.</td></tr></tbody></table></div><h3><a name="xmlIsBlankNode" id="xmlIsBlankNode"></a>Function: xmlIsBlankNode</h3><pre class="programlisting">int xmlIsBlankNode (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> or the <a href="libxml-SAX.html#attribute">attribute</a> declaration or NULL if neither was found.</td></tr></tbody></table></div><h3><a name="xmlIsBlankNode" id="xmlIsBlankNode"></a>Function: xmlIsBlankNode</h3><pre class="programlisting">int xmlIsBlankNode (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)<br />
</pre><p>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div><h3><a name="xmlIsXHTML" id="xmlIsXHTML"></a>Function: xmlIsXHTML</h3><pre class="programlisting">int xmlIsXHTML (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * publicID)<br />
</pre><p>Try to find if the document correspond to an XHTML DTD</p>
@@ -826,7 +853,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Create a new property carried by a document.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the <a href="libxml-SAX.html#attribute">attribute</a></td></tr></tbody></table></div><h3><a name="xmlNewDocRawNode" id="xmlNewDocRawNode"></a>Function: xmlNewDocRawNode</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewDocRawNode (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
</pre><p>Creation of a new node element within a document. @ns and @content are optional (NULL).</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the node name</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content if any</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewDocText" id="xmlNewDocText"></a>Function: xmlNewDocText</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewDocText (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the node name</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content if any</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewDocText" id="xmlNewDocText"></a>Function: xmlNewDocText</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewDocText (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
</pre><p>Creation of a new text node within a document.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewDocTextLen" id="xmlNewDocTextLen"></a>Function: xmlNewDocTextLen</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewDocTextLen (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
</pre><p>Creation of a new text node with an extra content length parameter. The text node pertain to a given document.</p>
@@ -839,7 +866,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the node name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object. Uses xmlStrdup() to make copy of @name.</td></tr></tbody></table></div><h3><a name="xmlNewNodeEatName" id="xmlNewNodeEatName"></a>Function: xmlNewNodeEatName</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewNodeEatName (<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Creation of a new node element. @ns is optional (NULL).</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the node name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object, with pointer @name as new node's name. Use xmlNewNode() if a copy of @name string is is needed as new node's name.</td></tr></tbody></table></div><h3><a name="xmlNewNs" id="xmlNewNs"></a>Function: xmlNewNs</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> xmlNewNs (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * href, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br />
-</pre><p>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. We use href==NULL in the case of an element creation where the namespace was not defined.</p>
+</pre><p>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. Note that for a default namespace, @prefix should be NULL. We use href==NULL in the case of an element creation where the namespace was not defined.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the element carrying the namespace</td></tr><tr><td><span class="term"><i><tt>href</tt></i>:</span></td><td>the URI associated</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix for the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new namespace pointer or NULL</td></tr></tbody></table></div><h3><a name="xmlNewNsProp" id="xmlNewNsProp"></a>Function: xmlNewNsProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlNewNsProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br />
</pre><p>Create a new property tagged with a namespace and carried by a node.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the holding node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>the namespace</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the <a href="libxml-SAX.html#attribute">attribute</a></td></tr></tbody></table></div><h3><a name="xmlNewNsPropEatName" id="xmlNewNsPropEatName"></a>Function: xmlNewNsPropEatName</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlNewNsPropEatName (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br />
@@ -848,7 +875,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Creation of a processing instruction element. Use xmlDocNewPI preferably to get string interning</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the processing instruction name</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the PI content</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewProp" id="xmlNewProp"></a>Function: xmlNewProp</h3><pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> xmlNewProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br />
</pre><p>Create a new property carried by a node.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the holding node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the <a href="libxml-SAX.html#attribute">attribute</a></td></tr></tbody></table></div><h3><a name="xmlNewReference" id="xmlNewReference"></a>Function: xmlNewReference</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewReference (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the holding node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the <a href="libxml-SAX.html#attribute">attribute</a></td></tr></tbody></table></div><h3><a name="xmlNewReference" id="xmlNewReference"></a>Function: xmlNewReference</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewReference (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Creation of a new <a href="libxml-SAX.html#reference">reference</a> node.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#reference">reference</a> name, or the <a href="libxml-SAX.html#reference">reference</a> string with &amp; and ;</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewText" id="xmlNewText"></a>Function: xmlNewText</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewText (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
</pre><p>Creation of a new text node.</p>
@@ -862,25 +889,25 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr></tbody></table></div><h3><a name="xmlNodeAddContentLen" id="xmlNodeAddContentLen"></a>Function: xmlNodeAddContentLen</h3><pre class="programlisting">void xmlNodeAddContentLen (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
</pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the size of @content</td></tr></tbody></table></div><h3><a name="xmlNodeBufGetContent" id="xmlNodeBufGetContent"></a>Function: xmlNodeBufGetContent</h3><pre class="programlisting">int xmlNodeBufGetContent (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the size of @content</td></tr></tbody></table></div><h3><a name="xmlNodeBufGetContent" id="xmlNodeBufGetContent"></a>Function: xmlNodeBufGetContent</h3><pre class="programlisting">int xmlNodeBufGetContent (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)<br />
</pre><p>Read the value of a node @cur, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buffer with this value</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buffer</tt></i>:</span></td><td>a buffer</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlNodeDump" id="xmlNodeDump"></a>Function: xmlNodeDump</h3><pre class="programlisting">int xmlNodeDump (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int level, <br /> int format)<br />
-</pre><p>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</p>
+</pre><p>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called Since this is using <a href="libxml-tree.html#xmlBuffer">xmlBuffer</a> structures it is limited to 2GB and somehow deprecated, use xmlBufNodeDump() instead.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written to the buffer or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlNodeDumpOutput" id="xmlNodeDumpOutput"></a>Function: xmlNodeDumpOutput</h3><pre class="programlisting">void xmlNodeDumpOutput (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int level, <br /> int format, <br /> const char * encoding)<br />
</pre><p>Dump an XML node, recursive behaviour, children are printed too. Note that @format = 1 provide node indenting only if <a href="libxml-globals.html#xmlIndentTreeOutput">xmlIndentTreeOutput</a> = 1 or xmlKeepBlanksDefault(0) was called</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>encoding</tt></i>:</span></td><td>an optional encoding string</td></tr></tbody></table></div><h3><a name="xmlNodeGetBase" id="xmlNodeGetBase"></a>Function: xmlNodeGetBase</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetBase (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>level</tt></i>:</span></td><td>the imbrication level for indenting</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>is formatting allowed</td></tr><tr><td><span class="term"><i><tt>encoding</tt></i>:</span></td><td>an optional encoding string</td></tr></tbody></table></div><h3><a name="xmlNodeGetBase" id="xmlNodeGetBase"></a>Function: xmlNodeGetBase</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetBase (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)<br />
</pre><p>Searches for the BASE URL. The code should work on both XML and HTML document even if base mechanisms are completely different. It returns the base as defined in RFC 2396 sections 5.1.1. Base URI within Document Content and 5.1.2. Base URI from the Encapsulating Entity However it does not return the document base (5.1.3), use doc-&gt;URL in this case</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document the node pertains to</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the base URL, or NULL if not found It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeGetContent" id="xmlNodeGetContent"></a>Function: xmlNodeGetContent</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetContent (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document the node pertains to</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the base URL, or NULL if not found It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeGetContent" id="xmlNodeGetContent"></a>Function: xmlNodeGetContent</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetContent (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)<br />
</pre><p>Read the value of a node, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlChar * or NULL if no content is available. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeGetLang" id="xmlNodeGetLang"></a>Function: xmlNodeGetLang</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetLang (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being read</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlChar * or NULL if no content is available. It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeGetLang" id="xmlNodeGetLang"></a>Function: xmlNodeGetLang</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeGetLang (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)<br />
</pre><p>Searches the language of a node, i.e. the values of the xml:lang <a href="libxml-SAX.html#attribute">attribute</a> or the one carried by the nearest ancestor.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the lang value, or NULL if not found It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeGetSpacePreserve" id="xmlNodeGetSpacePreserve"></a>Function: xmlNodeGetSpacePreserve</h3><pre class="programlisting">int xmlNodeGetSpacePreserve (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the lang value, or NULL if not found It's up to the caller to free the memory with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeGetSpacePreserve" id="xmlNodeGetSpacePreserve"></a>Function: xmlNodeGetSpacePreserve</h3><pre class="programlisting">int xmlNodeGetSpacePreserve (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * cur)<br />
</pre><p>Searches the space preserving behaviour of a node, i.e. the values of the xml:space <a href="libxml-SAX.html#attribute">attribute</a> or the one carried by the nearest ancestor.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 if xml:space is not inherited, 0 if "default", 1 if "preserve"</td></tr></tbody></table></div><h3><a name="xmlNodeIsText" id="xmlNodeIsText"></a>Function: xmlNodeIsText</h3><pre class="programlisting">int xmlNodeIsText (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being checked</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 if xml:space is not inherited, 0 if "default", 1 if "preserve"</td></tr></tbody></table></div><h3><a name="xmlNodeIsText" id="xmlNodeIsText"></a>Function: xmlNodeIsText</h3><pre class="programlisting">int xmlNodeIsText (const <a href="libxml-tree.html#xmlNode">xmlNode</a> * node)<br />
</pre><p>Is this node a Text node ?</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div><h3><a name="xmlNodeListGetRawString" id="xmlNodeListGetRawString"></a>Function: xmlNodeListGetRawString</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetRawString (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br /> int inLine)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div><h3><a name="xmlNodeListGetRawString" id="xmlNodeListGetRawString"></a>Function: xmlNodeListGetRawString</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetRawString (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * list, <br /> int inLine)<br />
</pre><p>Builds the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs, contrary to xmlNodeListGetString() this function doesn't do any character encoding handling.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>a Node list</td></tr><tr><td><span class="term"><i><tt>inLine</tt></i>:</span></td><td>should we replace entity contents or show their external form</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the string copy, the caller must free it with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeListGetString" id="xmlNodeListGetString"></a>Function: xmlNodeListGetString</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetString (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br /> int inLine)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>a Node list</td></tr><tr><td><span class="term"><i><tt>inLine</tt></i>:</span></td><td>should we replace entity contents or show their external form</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the string copy, the caller must free it with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeListGetString" id="xmlNodeListGetString"></a>Function: xmlNodeListGetString</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlNodeListGetString (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-tree.html#xmlNode">xmlNode</a> * list, <br /> int inLine)<br />
</pre><p>Build the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>a Node list</td></tr><tr><td><span class="term"><i><tt>inLine</tt></i>:</span></td><td>should we replace entity contents or show their external form</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the string copy, the caller must free it with xmlFree().</td></tr></tbody></table></div><h3><a name="xmlNodeSetBase" id="xmlNodeSetBase"></a>Function: xmlNodeSetBase</h3><pre class="programlisting">void xmlNodeSetBase (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * uri)<br />
</pre><p>Set (or reset) the base URI of a node, i.e. the value of the xml:base attribute.</p>
@@ -938,16 +965,16 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>parse an XML qualified name string [NS 5] QName ::= (Prefix ':')? LocalPart [NS 6] Prefix ::= NCName [NS 7] LocalPart ::= NCName</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>a <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> **</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if not a QName, otherwise the local part, and prefix is updated to get the Prefix if any.</td></tr></tbody></table></div><h3><a name="xmlSplitQName3" id="xmlSplitQName3"></a>Function: xmlSplitQName3</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlSplitQName3 (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int * len)<br />
</pre><p>parse an XML qualified name string,i</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an int *</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer to the start of the name without the prefix</td></tr></tbody></table></div><h3><a name="xmlStringGetNodeList" id="xmlStringGetNodeList"></a>Function: xmlStringGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringGetNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the full QName</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>an int *</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if it is not a Qualified Name, otherwise, update len with the length in byte of the prefix and return a pointer to the start of the name without the prefix</td></tr></tbody></table></div><h3><a name="xmlStringGetNodeList" id="xmlStringGetNodeList"></a>Function: xmlStringGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringGetNodeList (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br />
</pre><p>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the first child</td></tr></tbody></table></div><h3><a name="xmlStringLenGetNodeList" id="xmlStringLenGetNodeList"></a>Function: xmlStringLenGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringLenGetNodeList (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br /> int len)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the first child</td></tr></tbody></table></div><h3><a name="xmlStringLenGetNodeList" id="xmlStringLenGetNodeList"></a>Function: xmlStringLenGetNodeList</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlStringLenGetNodeList (const <a href="libxml-tree.html#xmlDoc">xmlDoc</a> * doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br /> int len)<br />
</pre><p>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value of the text</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the string value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the first child</td></tr></tbody></table></div><h3><a name="xmlTextConcat" id="xmlTextConcat"></a>Function: xmlTextConcat</h3><pre class="programlisting">int xmlTextConcat (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
</pre><p>Concat the given string at the end of the existing node content</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>@content length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlTextMerge" id="xmlTextMerge"></a>Function: xmlTextMerge</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlTextMerge (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> first, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> second)<br />
</pre><p>Merge two text nodes into one</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>first</tt></i>:</span></td><td>the first text node</td></tr><tr><td><span class="term"><i><tt>second</tt></i>:</span></td><td>the second text node being merged</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the first text node augmented</td></tr></tbody></table></div><h3><a name="xmlUnlinkNode" id="xmlUnlinkNode"></a>Function: xmlUnlinkNode</h3><pre class="programlisting">void xmlUnlinkNode (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
-</pre><p>Unlink a node from it's current context, the node is not freed If one need to free the node, use xmlFreeNode() routine after the unlink to discard it.</p>
+</pre><p>Unlink a node from it's current context, the node is not freed If one need to free the node, use xmlFreeNode() routine after the unlink to discard it. Note that namespace nodes can't be unlinked as they do not have pointer to their parent.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node</td></tr></tbody></table></div><h3><a name="xmlUnsetNsProp" id="xmlUnsetNsProp"></a>Function: xmlUnsetNsProp</h3><pre class="programlisting">int xmlUnsetNsProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Remove an <a href="libxml-SAX.html#attribute">attribute</a> carried by a node.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>the namespace definition</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if successful, -1 if not found</td></tr></tbody></table></div><h3><a name="xmlUnsetProp" id="xmlUnsetProp"></a>Function: xmlUnsetProp</h3><pre class="programlisting">int xmlUnsetProp (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
diff --git a/doc/html/libxml-valid.html b/doc/html/libxml-valid.html
index 5c15ace..94df436 100644
--- a/doc/html/libxml-valid.html
+++ b/doc/html/libxml-valid.html
@@ -276,7 +276,7 @@ The content of this structure is not made public by the API.
</pre><p>Pop the element end from the validation stack.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element instance</td></tr><tr><td><span class="term"><i><tt>qname</tt></i>:</span></td><td>the qualified name as appearing in the serialization</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidatePushCData" id="xmlValidatePushCData"></a>Function: xmlValidatePushCData</h3><pre class="programlisting">int xmlValidatePushCData (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * data, <br /> int len)<br />
</pre><p>check the CData parsed for validation in the current stack</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the lenght of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidatePushElement" id="xmlValidatePushElement"></a>Function: xmlValidatePushElement</h3><pre class="programlisting">int xmlValidatePushElement (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * qname)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>data</tt></i>:</span></td><td>some character data read</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidatePushElement" id="xmlValidatePushElement"></a>Function: xmlValidatePushElement</h3><pre class="programlisting">int xmlValidatePushElement (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * qname)<br />
</pre><p>Push a new element start on the validation stack.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element instance</td></tr><tr><td><span class="term"><i><tt>qname</tt></i>:</span></td><td>the qualified name as appearing in the serialization</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if no validation problem was found or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidateRoot" id="xmlValidateRoot"></a>Function: xmlValidateRoot</h3><pre class="programlisting">int xmlValidateRoot (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
</pre><p>Try to validate a the root element basically it does the following check as described by the XML-1.0 recommendation: - [ VC: Root Element Type ] it doesn't try to recurse or apply other check to the element</p>
diff --git a/doc/html/libxml-xmlIO.html b/doc/html/libxml-xmlIO.html
index e296535..2d2724c 100644
--- a/doc/html/libxml-xmlIO.html
+++ b/doc/html/libxml-xmlIO.html
@@ -51,6 +51,8 @@ int <a href="#xmlInputReadCallback">xmlInputReadCallback</a> (void * context, <
<pre class="programlisting"><a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> <a href="#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a> (const char * URI, <br /> <a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder, <br /> int compression)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> <a href="#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a> (<a href="libxml-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br /> <a href="libxml-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br /> void * ioctx, <br /> <a href="libxml-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder)</pre>
<pre class="programlisting">int <a href="#xmlOutputBufferFlush">xmlOutputBufferFlush</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)</pre>
+<pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)</pre>
+<pre class="programlisting">size_t <a href="#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)</pre>
<pre class="programlisting">int <a href="#xmlOutputBufferWrite">xmlOutputBufferWrite</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br /> int len, <br /> const char * buf)</pre>
<pre class="programlisting">int <a href="#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> <a href="libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escaping)</pre>
<pre class="programlisting">int <a href="#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a> (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br /> const char * str)</pre>
@@ -153,7 +155,11 @@ int xmlInputReadCallback (void * context, <br /> char * buffer, <br />
</pre><p>Create a buffered output for the progressive saving to an I/O handler</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>iowrite</tt></i>:</span></td><td>an I/O write function</td></tr><tr><td><span class="term"><i><tt>ioclose</tt></i>:</span></td><td>an I/O close function</td></tr><tr><td><span class="term"><i><tt>ioctx</tt></i>:</span></td><td>an I/O handler</td></tr><tr><td><span class="term"><i><tt>encoder</tt></i>:</span></td><td>the charset encoding if known</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new parser output or NULL</td></tr></tbody></table></div><h3><a name="xmlOutputBufferFlush" id="xmlOutputBufferFlush"></a>Function: xmlOutputBufferFlush</h3><pre class="programlisting">int xmlOutputBufferFlush (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br />
</pre><p>flushes the output I/O channel</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>a buffered output</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of byte written or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlOutputBufferWrite" id="xmlOutputBufferWrite"></a>Function: xmlOutputBufferWrite</h3><pre class="programlisting">int xmlOutputBufferWrite (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br /> int len, <br /> const char * buf)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>a buffered output</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of byte written or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlOutputBufferGetContent" id="xmlOutputBufferGetContent"></a>Function: xmlOutputBufferGetContent</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlOutputBufferGetContent (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br />
+</pre><p>Gives a pointer to the data currently held in the output buffer</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>an <a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the data or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlOutputBufferGetSize" id="xmlOutputBufferGetSize"></a>Function: xmlOutputBufferGetSize</h3><pre class="programlisting">size_t xmlOutputBufferGetSize (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br />
+</pre><p>Gives the length of the data currently held in the output buffer</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>an <a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case or error or no data is held, the size otherwise</td></tr></tbody></table></div><h3><a name="xmlOutputBufferWrite" id="xmlOutputBufferWrite"></a>Function: xmlOutputBufferWrite</h3><pre class="programlisting">int xmlOutputBufferWrite (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br /> int len, <br /> const char * buf)<br />
</pre><p>Write the content of the array in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>out</tt></i>:</span></td><td>a buffered parser output</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the size in bytes of the array.</td></tr><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>an char array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of chars immediately written, or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlOutputBufferWriteEscape" id="xmlOutputBufferWriteEscape"></a>Function: xmlOutputBufferWriteEscape</h3><pre class="programlisting">int xmlOutputBufferWriteEscape (<a href="libxml-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> <a href="libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escaping)<br />
</pre><p>Write the content of the string in the output I/O buffer This routine escapes the caracters and then handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</p>
diff --git a/doc/html/libxml-xmlerror.html b/doc/html/libxml-xmlerror.html
index c0ccb53..5c3a104 100644
--- a/doc/html/libxml-xmlerror.html
+++ b/doc/html/libxml-xmlerror.html
@@ -48,7 +48,7 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD
char * str2 : extra string information
char * str3 : extra string information
int int1 : extra number information
- int int2 : column number of the error or 0 if N/A
+ int int2 : error column # or 0 if N/A (todo: renam
void * ctxt : the parser context if available
void * node : the node in the tree
}</pre><h3>Enum <a name="xmlErrorDomain" id="xmlErrorDomain">xmlErrorDomain</a></h3><pre class="programlisting">Enum xmlErrorDomain {
@@ -81,6 +81,8 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD
<a name="XML_FROM_MODULE" id="XML_FROM_MODULE">XML_FROM_MODULE</a> = 26 : The dynamically loaded module modul
<a name="XML_FROM_I18N" id="XML_FROM_I18N">XML_FROM_I18N</a> = 27 : The module handling character conversion
<a name="XML_FROM_SCHEMATRONV" id="XML_FROM_SCHEMATRONV">XML_FROM_SCHEMATRONV</a> = 28 : The Schematron validator module
+ <a name="XML_FROM_BUFFER" id="XML_FROM_BUFFER">XML_FROM_BUFFER</a> = 29 : The buffers module
+ <a name="XML_FROM_URI" id="XML_FROM_URI">XML_FROM_URI</a> = 30 : The URI module
}
</pre><h3>Enum <a name="xmlErrorLevel" id="xmlErrorLevel">xmlErrorLevel</a></h3><pre class="programlisting">Enum xmlErrorLevel {
<a name="XML_ERR_NONE" id="XML_ERR_NONE">XML_ERR_NONE</a> = 0
@@ -199,6 +201,8 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD
<a name="XML_WAR_ENTITY_REDEFINED" id="XML_WAR_ENTITY_REDEFINED">XML_WAR_ENTITY_REDEFINED</a> = 107 : 107
<a name="XML_ERR_UNKNOWN_VERSION" id="XML_ERR_UNKNOWN_VERSION">XML_ERR_UNKNOWN_VERSION</a> = 108 : 108
<a name="XML_ERR_VERSION_MISMATCH" id="XML_ERR_VERSION_MISMATCH">XML_ERR_VERSION_MISMATCH</a> = 109 : 109
+ <a name="XML_ERR_NAME_TOO_LONG" id="XML_ERR_NAME_TOO_LONG">XML_ERR_NAME_TOO_LONG</a> = 110 : 110
+ <a name="XML_ERR_USER_STOP" id="XML_ERR_USER_STOP">XML_ERR_USER_STOP</a> = 111 : 111
<a name="XML_NS_ERR_XML_NAMESPACE" id="XML_NS_ERR_XML_NAMESPACE">XML_NS_ERR_XML_NAMESPACE</a> = 200
<a name="XML_NS_ERR_UNDEFINED_NAMESPACE" id="XML_NS_ERR_UNDEFINED_NAMESPACE">XML_NS_ERR_UNDEFINED_NAMESPACE</a> = 201 : 201
<a name="XML_NS_ERR_QNAME" id="XML_NS_ERR_QNAME">XML_NS_ERR_QNAME</a> = 202 : 202
@@ -820,8 +824,7 @@ void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> (void * userD
<a name="XML_I18N_EXCESS_HANDLER" id="XML_I18N_EXCESS_HANDLER">XML_I18N_EXCESS_HANDLER</a> = 6002 : 6002
<a name="XML_I18N_CONV_FAILED" id="XML_I18N_CONV_FAILED">XML_I18N_CONV_FAILED</a> = 6003 : 6003
<a name="XML_I18N_NO_OUTPUT" id="XML_I18N_NO_OUTPUT">XML_I18N_NO_OUTPUT</a> = 6004 : 6004
- <a name="XML_CHECK_" id="XML_CHECK_">XML_CHECK_</a> = 6005 : 5033
- <a name="XML_CHECK_X" id="XML_CHECK_X">XML_CHECK_X</a> = 6006 : 503
+ <a name="XML_BUF_OVERFLOW" id="XML_BUF_OVERFLOW">XML_BUF_OVERFLOW</a> = 7000
}
</pre><h3><a name="initGenericErrorDefaultFunc" id="initGenericErrorDefaultFunc"></a>Function: initGenericErrorDefaultFunc</h3><pre class="programlisting">void initGenericErrorDefaultFunc (<a href="libxml-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> * handler)<br />
</pre><p>Set or reset (if NULL) the default handler for generic errors to the builtin error function.</p>
diff --git a/doc/html/libxml-xmlmodule.html b/doc/html/libxml-xmlmodule.html
index c28c54b..1e25a92 100644
--- a/doc/html/libxml-xmlmodule.html
+++ b/doc/html/libxml-xmlmodule.html
@@ -32,7 +32,7 @@ The content of this structure is not made public by the API.
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>module</tt></i>:</span></td><td>the module handle</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of argument error and -2 if the module could not be closed/unloaded.</td></tr></tbody></table></div><h3><a name="xmlModuleFree" id="xmlModuleFree"></a>Function: xmlModuleFree</h3><pre class="programlisting">int xmlModuleFree (<a href="libxml-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module)<br />
</pre><p>The free operations free the data associated to the module but does not unload the associated shared library which may still be in use.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>module</tt></i>:</span></td><td>the module handle</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of argument error</td></tr></tbody></table></div><h3><a name="xmlModuleOpen" id="xmlModuleOpen"></a>Function: xmlModuleOpen</h3><pre class="programlisting"><a href="libxml-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> xmlModuleOpen (const char * name, <br /> int options)<br />
-</pre><p>Opens a module/shared library given its name or path TODO: options are not yet implemented.</p>
+</pre><p>Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * . TODO: options are not yet implemented.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the module name</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a set of <a href="libxml-xmlmodule.html#xmlModuleOption">xmlModuleOption</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a handle for the module or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlModuleSymbol" id="xmlModuleSymbol"></a>Function: xmlModuleSymbol</h3><pre class="programlisting">int xmlModuleSymbol (<a href="libxml-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module, <br /> const char * name, <br /> void ** symbol)<br />
-</pre><p>Lookup for a symbol address in the given module</p>
+</pre><p>Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * .</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>module</tt></i>:</span></td><td>the module</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the symbol</td></tr><tr><td><span class="term"><i><tt>symbol</tt></i>:</span></td><td>the resulting symbol address</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the symbol was found, or -1 in case of error</td></tr></tbody></table></div><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-xmlregexp.html b/doc/html/libxml-xmlregexp.html
index f69cdab..8dda699 100644
--- a/doc/html/libxml-xmlregexp.html
+++ b/doc/html/libxml-xmlregexp.html
@@ -91,15 +91,15 @@ The content of this structure is not made public by the API.
</pre><p>Free an expression context</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an expression context</td></tr></tbody></table></div><h3><a name="xmlExpGetLanguage" id="xmlExpGetLanguage"></a>Function: xmlExpGetLanguage</h3><pre class="programlisting">int xmlExpGetLanguage (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** langList, <br /> int len)<br />
</pre><p>Find all the strings used in @exp and store them in @list</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>langList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated lenght of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div><h3><a name="xmlExpGetStart" id="xmlExpGetStart"></a>Function: xmlExpGetStart</h3><pre class="programlisting">int xmlExpGetStart (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** tokList, <br /> int len)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>langList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated length of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div><h3><a name="xmlExpGetStart" id="xmlExpGetStart"></a>Function: xmlExpGetStart</h3><pre class="programlisting">int xmlExpGetStart (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** tokList, <br /> int len)<br />
</pre><p>Find all the strings that appears at the start of the languages accepted by @exp and store them in @list. E.g. for (a, b) | c it will return the list [a, c]</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>tokList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated lenght of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div><h3><a name="xmlExpIsNillable" id="xmlExpIsNillable"></a>Function: xmlExpIsNillable</h3><pre class="programlisting">int xmlExpIsNillable (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>tokList</tt></i>:</span></td><td>where to store the tokens</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the allocated length of @list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of unique strings found, -1 in case of errors and -2 if there is more than @len strings</td></tr></tbody></table></div><h3><a name="xmlExpIsNillable" id="xmlExpIsNillable"></a>Function: xmlExpIsNillable</h3><pre class="programlisting">int xmlExpIsNillable (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> exp)<br />
</pre><p>Finds if the expression is nillable, i.e. if it accepts the empty sequqnce</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>exp</tt></i>:</span></td><td>the expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if nillable, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpMaxToken" id="xmlExpMaxToken"></a>Function: xmlExpMaxToken</h3><pre class="programlisting">int xmlExpMaxToken (<a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> expr)<br />
</pre><p>Indicate the maximum number of input a expression can accept</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>expr</tt></i>:</span></td><td>a compiled expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the maximum length or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewAtom" id="xmlExpNewAtom"></a>Function: xmlExpNewAtom</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewAtom (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> int len)<br />
</pre><p>Get the atom associated to this name from that context</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name lenght in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewCtxt" id="xmlExpNewCtxt"></a>Function: xmlExpNewCtxt</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> xmlExpNewCtxt (int maxNodes, <br /> <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name length in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewCtxt" id="xmlExpNewCtxt"></a>Function: xmlExpNewCtxt</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> xmlExpNewCtxt (int maxNodes, <br /> <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
</pre><p>Creates a new context for manipulating expressions</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionnary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewOr" id="xmlExpNewOr"></a>Function: xmlExpNewOr</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> xmlExpNewOr (<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br /> <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br />
</pre><p>Get the atom associated to the choice @left | @right Note that @left and @right are consumed in the operation, to keep an handle on them use xmlExpRef() and use xmlExpFree() to release them, this is true even in case of failure (unless ctxt == NULL).</p>
diff --git a/doc/html/libxml-xmlschemas.html b/doc/html/libxml-xmlschemas.html
index 18402a0..8cb42a1 100644
--- a/doc/html/libxml-xmlschemas.html
+++ b/doc/html/libxml-xmlschemas.html
@@ -47,10 +47,15 @@ The content of this structure is not made public by the API.
<pre class="programlisting">int <a href="#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
<pre class="programlisting">int <a href="#xmlSchemaValidateFile">xmlSchemaValidateFile</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> const char * filename, <br /> int options)</pre>
<pre class="programlisting">int <a href="#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)</pre>
+<pre class="programlisting">void <a href="#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br /> const char * filename)</pre>
+<pre class="programlisting">void <a href="#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br /> <a href="libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> f, <br /> void * ctxt)</pre>
<pre class="programlisting">int <a href="#xmlSchemaValidateStream">xmlSchemaValidateStream</a> (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br /> <a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br /> void * user_data)</pre>
<pre class="programlisting">Function type: <a href="#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a>
void <a href="#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> (void * ctx, <br /> const char * msg, <br /> ... ...)
</pre>
+<pre class="programlisting">Function type: <a href="#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a>
+int <a href="#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> (void * ctx, <br /> const char ** file, <br /> unsigned long * line)
+</pre>
<pre class="programlisting">Function type: <a href="#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a>
void <a href="#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> (void * ctx, <br /> const char * msg, <br /> ... ...)
</pre>
@@ -162,11 +167,18 @@ The content of this structure is not made public by the API.
</pre><p>Do a schemas validation of the given resource, it will use the SAX streamable validation internally.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>filename</tt></i>:</span></td><td>the URI of the instance</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a future set of options, currently unused</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the document is valid, a positive error code number otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateOneElement" id="xmlSchemaValidateOneElement"></a>Function: xmlSchemaValidateOneElement</h3><pre class="programlisting">int xmlSchemaValidateOneElement (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br />
</pre><p>Validate a branch of a tree, starting with the given @elem.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the element and its subtree is valid, a positive error code number otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateStream" id="xmlSchemaValidateStream"></a>Function: xmlSchemaValidateStream</h3><pre class="programlisting">int xmlSchemaValidateStream (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br /> <a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br /> void * user_data)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>an element node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the element and its subtree is valid, a positive error code number otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateSetFilename" id="xmlSchemaValidateSetFilename"></a>Function: xmlSchemaValidateSetFilename</h3><pre class="programlisting">void xmlSchemaValidateSetFilename (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br /> const char * filename)<br />
+</pre><p>Workaround to provide file error reporting information when this is not provided by current APIs</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vctxt</tt></i>:</span></td><td>the schema validation context</td></tr><tr><td><span class="term"><i><tt>filename</tt></i>:</span></td><td>the file name</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateSetLocator" id="xmlSchemaValidateSetLocator"></a>Function: xmlSchemaValidateSetLocator</h3><pre class="programlisting">void xmlSchemaValidateSetLocator (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br /> <a href="libxml-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> f, <br /> void * ctxt)<br />
+</pre><p>Allows to set a locator function to the validation context, which will be used to provide file and line information since those are not provided as part of the SAX validation flow Setting @f to NULL disable the locator.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the locator function pointer</td></tr><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the locator context</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateStream" id="xmlSchemaValidateStream"></a>Function: xmlSchemaValidateStream</h3><pre class="programlisting">int xmlSchemaValidateStream (<a href="libxml-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br /> <a href="libxml-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br /> <a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br /> void * user_data)<br />
</pre><p>Validate an input based on a flow of SAX event from the parser and forward the events to the @sax handler with the provided @user_data the user provided @sax handler must be a SAX2 one.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a schema validation context</td></tr><tr><td><span class="term"><i><tt>input</tt></i>:</span></td><td>the input to use for reading the data</td></tr><tr><td><span class="term"><i><tt>enc</tt></i>:</span></td><td>an optional encoding information</td></tr><tr><td><span class="term"><i><tt>sax</tt></i>:</span></td><td>a SAX handler for the resulting events</td></tr><tr><td><span class="term"><i><tt>user_data</tt></i>:</span></td><td>the context to provide to the SAX handler.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the document is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidityErrorFunc" id="xmlSchemaValidityErrorFunc"></a>Function type: xmlSchemaValidityErrorFunc</h3><pre class="programlisting">Function type: xmlSchemaValidityErrorFunc
void xmlSchemaValidityErrorFunc (void * ctx, <br /> const char * msg, <br /> ... ...)
</pre><p>Signature of an error callback from an XSD validation</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>msg</tt></i>:</span></td><td>the message</td></tr><tr><td><span class="term"><i><tt>...</tt></i>:</span></td><td>extra arguments</td></tr></tbody></table></div><br />
+<h3><a name="xmlSchemaValidityLocatorFunc" id="xmlSchemaValidityLocatorFunc"></a>Function type: xmlSchemaValidityLocatorFunc</h3><pre class="programlisting">Function type: xmlSchemaValidityLocatorFunc
+int xmlSchemaValidityLocatorFunc (void * ctx, <br /> const char ** file, <br /> unsigned long * line)
+</pre><p>A schemas validation locator, a callback called by the validator. This is used when file or node informations are not available to find out what file and line number are affected</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>user provided context</td></tr><tr><td><span class="term"><i><tt>file</tt></i>:</span></td><td>returned file information</td></tr><tr><td><span class="term"><i><tt>line</tt></i>:</span></td><td>returned line information</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div><br />
<h3><a name="xmlSchemaValidityWarningFunc" id="xmlSchemaValidityWarningFunc"></a>Function type: xmlSchemaValidityWarningFunc</h3><pre class="programlisting">Function type: xmlSchemaValidityWarningFunc
void xmlSchemaValidityWarningFunc (void * ctx, <br /> const char * msg, <br /> ... ...)
</pre><p>Signature of a warning callback from an XSD validation</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>msg</tt></i>:</span></td><td>the message</td></tr><tr><td><span class="term"><i><tt>...</tt></i>:</span></td><td>extra arguments</td></tr></tbody></table></div><br />
diff --git a/doc/html/libxml-xmlschemastypes.html b/doc/html/libxml-xmlschemastypes.html
index 1d08141..6925cfa 100644
--- a/doc/html/libxml-xmlschemastypes.html
+++ b/doc/html/libxml-xmlschemastypes.html
@@ -73,9 +73,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the built-in simple type.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the item type of @type as defined by the built-in datatype hierarchy of XML Schema Part 2: Datatypes, or NULL in case of an error.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetBuiltInType" id="xmlSchemaGetBuiltInType"></a>Function: xmlSchemaGetBuiltInType</h3><pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> xmlSchemaGetBuiltInType (<a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> type)<br />
</pre><p>Gives you the type struct for a built-in type by its type id.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the type of the built in type</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the type if found, NULL otherwise.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetCanonValue" id="xmlSchemaGetCanonValue"></a>Function: xmlSchemaGetCanonValue</h3><pre class="programlisting">int xmlSchemaGetCanonValue (<a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** retValue)<br />
-</pre><p>Get a the cononical lexical representation of the value. The caller has to FREE the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of "???". TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</p>
+</pre><p>Get the canonical lexical representation of the value. The caller has to FREE the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of "???". TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>retValue</tt></i>:</span></td><td>the returned value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value could be built, 1 if the value type is not supported yet and -1 in case of API errors.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetCanonValueWhtsp" id="xmlSchemaGetCanonValueWhtsp"></a>Function: xmlSchemaGetCanonValueWhtsp</h3><pre class="programlisting">int xmlSchemaGetCanonValueWhtsp (<a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** retValue, <br /> <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)<br />
-</pre><p>Get a the cononical representation of the value. The caller has to free the returned @retValue.</p>
+</pre><p>Get the canonical representation of the value. The caller has to free the returned @retValue.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>retValue</tt></i>:</span></td><td>the returned value</td></tr><tr><td><span class="term"><i><tt>ws</tt></i>:</span></td><td>the whitespace type of the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value could be built, 1 if the value type is not supported yet and -1 in case of API errors.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetFacetValueAsULong" id="xmlSchemaGetFacetValueAsULong"></a>Function: xmlSchemaGetFacetValueAsULong</h3><pre class="programlisting">unsigned long xmlSchemaGetFacetValueAsULong (<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet)<br />
</pre><p>Extract the value of a facet</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>an schemas type facet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the value as a long</td></tr></tbody></table></div><h3><a name="xmlSchemaGetPredefinedType" id="xmlSchemaGetPredefinedType"></a>Function: xmlSchemaGetPredefinedType</h3><pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> xmlSchemaGetPredefinedType (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns)<br />
diff --git a/doc/html/libxml-xmlversion.html b/doc/html/libxml-xmlversion.html
index 2da967c..30e9f0e 100644
--- a/doc/html/libxml-xmlversion.html
+++ b/doc/html/libxml-xmlversion.html
@@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Module xmlversion from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlversion from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlunicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlunicode.html">xmlunicode</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="n" href="libxml-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>compile-time version informations for the XML library </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a></pre><pre class="programlisting">#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a></pre><pre class="programlisting">#define <a href="#LIBXML_ATTR_ALLOC_SIZE">LIBXML_ATTR_ALLOC_SIZE</a></pre><pre class="programlisting">#define <a href="#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a></pre><pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICU_ENABLED">LIBXML_ICU_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LZMA_ENABLED">LIBXML_LZMA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a></pre><pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a></pre><pre class="programlisting">#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a></pre><pre class="programlisting">#define <a href="#WITH_TRIO">WITH_TRIO</a></pre><pre class="programlisting">void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version)</pre>
+ </style><title>Module xmlversion from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlversion from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlunicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlunicode.html">xmlunicode</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="n" href="libxml-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>compile-time version informations for the XML library </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a></pre><pre class="programlisting">#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a></pre><pre class="programlisting">#define <a href="#LIBXML_ATTR_ALLOC_SIZE">LIBXML_ATTR_ALLOC_SIZE</a></pre><pre class="programlisting">#define <a href="#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a></pre><pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICU_ENABLED">LIBXML_ICU_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LZMA_ENABLED">LIBXML_LZMA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a></pre><pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a></pre><pre class="programlisting">#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a></pre><pre class="programlisting">#define <a href="#WITH_TRIO">WITH_TRIO</a></pre><pre class="programlisting">void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version)</pre>
<h2>Description</h2>
<h3><a name="ATTRIBUTE_UNUSED" id="ATTRIBUTE_UNUSED"></a>Macro: ATTRIBUTE_UNUSED</h3><pre>#define ATTRIBUTE_UNUSED</pre><p>Macro used to signal to GCC unused function parameters</p>
<h3><a name="DEBUG_MEMORY_LOCATION" id="DEBUG_MEMORY_LOCATION"></a>Macro: DEBUG_MEMORY_LOCATION</h3><pre>#define DEBUG_MEMORY_LOCATION</pre><p>Whether the memory debugging is configured in</p>
@@ -43,6 +43,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<h3><a name="LIBXML_SCHEMAS_ENABLED" id="LIBXML_SCHEMAS_ENABLED"></a>Macro: LIBXML_SCHEMAS_ENABLED</h3><pre>#define LIBXML_SCHEMAS_ENABLED</pre><p>Whether the Schemas validation interfaces are compiled in</p>
<h3><a name="LIBXML_SCHEMATRON_ENABLED" id="LIBXML_SCHEMATRON_ENABLED"></a>Macro: LIBXML_SCHEMATRON_ENABLED</h3><pre>#define LIBXML_SCHEMATRON_ENABLED</pre><p>Whether the Schematron validation interfaces are compiled in</p>
<h3><a name="LIBXML_TEST_VERSION" id="LIBXML_TEST_VERSION"></a>Macro: LIBXML_TEST_VERSION</h3><pre>#define LIBXML_TEST_VERSION</pre><p>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</p>
+<h3><a name="LIBXML_THREAD_ALLOC_ENABLED" id="LIBXML_THREAD_ALLOC_ENABLED"></a>Macro: LIBXML_THREAD_ALLOC_ENABLED</h3><pre>#define LIBXML_THREAD_ALLOC_ENABLED</pre><p>Whether the allocation hooks are per-thread</p>
<h3><a name="LIBXML_THREAD_ENABLED" id="LIBXML_THREAD_ENABLED"></a>Macro: LIBXML_THREAD_ENABLED</h3><pre>#define LIBXML_THREAD_ENABLED</pre><p>Whether the thread support is configured in</p>
<h3><a name="LIBXML_TREE_ENABLED" id="LIBXML_TREE_ENABLED"></a>Macro: LIBXML_TREE_ENABLED</h3><pre>#define LIBXML_TREE_ENABLED</pre><p>Whether the DOM like tree manipulation API support is configured in</p>
<h3><a name="LIBXML_UNICODE_ENABLED" id="LIBXML_UNICODE_ENABLED"></a>Macro: LIBXML_UNICODE_ENABLED</h3><pre>#define LIBXML_UNICODE_ENABLED</pre><p>Whether the Unicode related interfaces are compiled in</p>
diff --git a/doc/html/libxml-xmlwriter.html b/doc/html/libxml-xmlwriter.html
index 3fef445..e09ff59 100644
--- a/doc/html/libxml-xmlwriter.html
+++ b/doc/html/libxml-xmlwriter.html
@@ -34,6 +34,7 @@ The content of this structure is not made public by the API.
<pre class="programlisting">int <a href="#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)</pre>
<pre class="programlisting">int <a href="#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> int indent)</pre>
<pre class="programlisting">int <a href="#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)</pre>
+<pre class="programlisting">int <a href="#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> quotechar)</pre>
<pre class="programlisting">int <a href="#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting">int <a href="#xmlTextWriterStartAttributeNS">xmlTextWriterStartAttributeNS</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI)</pre>
<pre class="programlisting">int <a href="#xmlTextWriterStartCDATA">xmlTextWriterStartCDATA</a> (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)</pre>
@@ -139,7 +140,9 @@ The content of this structure is not made public by the API.
</pre><p>Set indentation output. indent = 0 do not indentation. indent &gt; 0 do indentation.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>indent</tt></i>:</span></td><td>do indentation?</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 on error or 0 otherwise.</td></tr></tbody></table></div><h3><a name="xmlTextWriterSetIndentString" id="xmlTextWriterSetIndentString"></a>Function: xmlTextWriterSetIndentString</h3><pre class="programlisting">int xmlTextWriterSetIndentString (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)<br />
</pre><p>Set string indentation.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 on error or 0 otherwise.</td></tr></tbody></table></div><h3><a name="xmlTextWriterStartAttribute" id="xmlTextWriterStartAttribute"></a>Function: xmlTextWriterStartAttribute</h3><pre class="programlisting">int xmlTextWriterStartAttribute (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> string</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 on error or 0 otherwise.</td></tr></tbody></table></div><h3><a name="xmlTextWriterSetQuoteChar" id="xmlTextWriterSetQuoteChar"></a>Function: xmlTextWriterSetQuoteChar</h3><pre class="programlisting">int xmlTextWriterSetQuoteChar (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> quotechar)<br />
+</pre><p>Set the character used for quoting attributes.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>quotechar</tt></i>:</span></td><td>the quote character</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 on error or 0 otherwise.</td></tr></tbody></table></div><h3><a name="xmlTextWriterStartAttribute" id="xmlTextWriterStartAttribute"></a>Function: xmlTextWriterStartAttribute</h3><pre class="programlisting">int xmlTextWriterStartAttribute (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Start an xml attribute.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>writer</tt></i>:</span></td><td>the <a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a></td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>element name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the bytes written (may be 0 because of buffering) or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlTextWriterStartAttributeNS" id="xmlTextWriterStartAttributeNS"></a>Function: xmlTextWriterStartAttributeNS</h3><pre class="programlisting">int xmlTextWriterStartAttributeNS (<a href="libxml-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI)<br />
</pre><p>Start an xml <a href="libxml-SAX.html#attribute">attribute</a> with namespace support.</p>
diff --git a/doc/html/libxml-xpath.html b/doc/html/libxml-xpath.html
index 1731b2a..e47e600 100644
--- a/doc/html/libxml-xpath.html
+++ b/doc/html/libxml-xpath.html
@@ -81,9 +81,11 @@ void <a href="#xmlXPathFunction">xmlXPathFunction</a> (<a href="libxml-xpath.ht
<pre class="programlisting">int <a href="#xmlXPathIsInf">xmlXPathIsInf</a> (double val)</pre>
<pre class="programlisting">int <a href="#xmlXPathIsNaN">xmlXPathIsNaN</a> (double val)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> <a href="#xmlXPathNewContext">xmlXPathNewContext</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
+<pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathNodeEval">xmlXPathNodeEval</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathNodeSetCreate">xmlXPathNodeSetCreate</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathObjectCopy">xmlXPathObjectCopy</a> (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)</pre>
<pre class="programlisting">long <a href="#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
+<pre class="programlisting">int <a href="#xmlXPathSetContextNode">xmlXPathSetContextNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)</pre>
<pre class="programlisting">Function type: <a href="#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a>
<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a> (void * ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)
</pre>
@@ -167,6 +169,7 @@ The content of this structure is not made public by the API.
<a name="XPATH_INVALID_CHAR_ERROR" id="XPATH_INVALID_CHAR_ERROR">XPATH_INVALID_CHAR_ERROR</a> = 21
<a name="XPATH_INVALID_CTXT" id="XPATH_INVALID_CTXT">XPATH_INVALID_CTXT</a> = 22
<a name="XPATH_STACK_ERROR" id="XPATH_STACK_ERROR">XPATH_STACK_ERROR</a> = 23
+ <a name="XPATH_FORBID_VARIABLE_ERROR" id="XPATH_FORBID_VARIABLE_ERROR">XPATH_FORBID_VARIABLE_ERROR</a> = 24
}
</pre><h3><a name="xmlXPathFunct" id="xmlXPathFunct">Structure xmlXPathFunct</a></h3><pre class="programlisting">Structure xmlXPathFunct<br />struct _xmlXPathFunct {
const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name : the function name
@@ -297,13 +300,17 @@ void xmlXPathFunction (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xml
</pre><p>Provides a portable isnan() function to detect whether a double is a NotaNumber. Based on trio code http://sourceforge.net/projects/ctrio/</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a double value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if the value is a NaN, 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlXPathNewContext" id="xmlXPathNewContext"></a>Function: xmlXPathNewContext</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> xmlXPathNewContext (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
</pre><p>Create a new <a href="libxml-xpath.html#xmlXPathContext">xmlXPathContext</a></p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the XML document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-xpath.html#xmlXPathContext">xmlXPathContext</a> just allocated. The caller will need to free it.</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetCreate" id="xmlXPathNodeSetCreate"></a>Function: xmlXPathNodeSetCreate</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> xmlXPathNodeSetCreate (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the XML document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-xpath.html#xmlXPathContext">xmlXPathContext</a> just allocated. The caller will need to free it.</td></tr></tbody></table></div><h3><a name="xmlXPathNodeEval" id="xmlXPathNodeEval"></a>Function: xmlXPathNodeEval</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathNodeEval (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br /> <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br />
+</pre><p>Evaluate the XPath Location Path in the given context. The node 'node' is set as the context node. The context node is not restored.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to to use as the context node</td></tr><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the XPath expression</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetCreate" id="xmlXPathNodeSetCreate"></a>Function: xmlXPathNodeSetCreate</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> xmlXPathNodeSetCreate (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
</pre><p>Create a new <a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> of type double and of value @val</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>an initial xmlNodePtr, or NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created object.</td></tr></tbody></table></div><h3><a name="xmlXPathObjectCopy" id="xmlXPathObjectCopy"></a>Function: xmlXPathObjectCopy</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathObjectCopy (<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br />
</pre><p>allocate a new copy of a given object</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the original object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created object.</td></tr></tbody></table></div><h3><a name="xmlXPathOrderDocElems" id="xmlXPathOrderDocElems"></a>Function: xmlXPathOrderDocElems</h3><pre class="programlisting">long xmlXPathOrderDocElems (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
</pre><p>Call this routine to speed up XPath computation on static documents. This stamps all the element nodes with the document order Like for line information, the order is kept in the element-&gt;content field, the value stored is actually - the node number (starting at -1) to be able to differentiate from line numbers.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>an input document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements found in the document or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlXPathVariableLookupFunc" id="xmlXPathVariableLookupFunc"></a>Function type: xmlXPathVariableLookupFunc</h3><pre class="programlisting">Function type: xmlXPathVariableLookupFunc
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>an input document</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements found in the document or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlXPathSetContextNode" id="xmlXPathSetContextNode"></a>Function: xmlXPathSetContextNode</h3><pre class="programlisting">int xmlXPathSetContextNode (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br />
+</pre><p>Sets 'node' as the context node. The node must be in the same document as that associated with the context.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node to to use as the context node</td></tr><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the XPath context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error or 0 if successful</td></tr></tbody></table></div><h3><a name="xmlXPathVariableLookupFunc" id="xmlXPathVariableLookupFunc"></a>Function type: xmlXPathVariableLookupFunc</h3><pre class="programlisting">Function type: xmlXPathVariableLookupFunc
<a href="libxml-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> xmlXPathVariableLookupFunc (void * ctxt, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)
</pre><p>Prototype for callbacks used to plug variable lookup in the XPath engine.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XPath context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>name of the variable</td></tr><tr><td><span class="term"><i><tt>ns_uri</tt></i>:</span></td><td>the namespace name hosting this variable</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the XPath object value or NULL if not found.</td></tr></tbody></table></div><br />
<p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-xpathInternals.html b/doc/html/libxml-xpathInternals.html
index 4a6bb2e..f12d808 100644
--- a/doc/html/libxml-xpathInternals.html
+++ b/doc/html/libxml-xpathInternals.html
@@ -69,9 +69,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlXPathNextSelf">xmlXPathNextSelf</a> (<a href="libxml-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathNodeLeading">xmlXPathNodeLeading</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> <a href="#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
-<pre class="programlisting">void <a href="#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
-<pre class="programlisting">void <a href="#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns)</pre>
-<pre class="programlisting">void <a href="#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
+<pre class="programlisting">int <a href="#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
+<pre class="programlisting">int <a href="#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns)</pre>
+<pre class="programlisting">int <a href="#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
<pre class="programlisting">int <a href="#xmlXPathNodeSetContains">xmlXPathNodeSetContains</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
<pre class="programlisting">void <a href="#xmlXPathNodeSetDel">xmlXPathNodeSetDel</a> (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)</pre>
<pre class="programlisting">void <a href="#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a> (<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns)</pre>
@@ -275,13 +275,13 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes is sorted by document order, then #exslSetsNodeLeadingSorted is called.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>nodes</tt></i>:</span></td><td>a node-set</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td></tr></tbody></table></div><h3><a name="xmlXPathNodeLeadingSorted" id="xmlXPathNodeLeadingSorted"></a>Function: xmlXPathNodeLeadingSorted</h3><pre class="programlisting"><a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> xmlXPathNodeLeadingSorted (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
</pre><p>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>nodes</tt></i>:</span></td><td>a node-set, sorted by document order</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetAdd" id="xmlXPathNodeSetAdd"></a>Function: xmlXPathNodeSetAdd</h3><pre class="programlisting">void xmlXPathNodeSetAdd (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>nodes</tt></i>:</span></td><td>a node-set, sorted by document order</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>a node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetAdd" id="xmlXPathNodeSetAdd"></a>Function: xmlXPathNodeSetAdd</h3><pre class="programlisting">int xmlXPathNodeSetAdd (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
</pre><p>add a new <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> to an existing NodeSet</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetAddNs" id="xmlXPathNodeSetAddNs"></a>Function: xmlXPathNodeSetAddNs</h3><pre class="programlisting">void xmlXPathNodeSetAddNs (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetAddNs" id="xmlXPathNodeSetAddNs"></a>Function: xmlXPathNodeSetAddNs</h3><pre class="programlisting">int xmlXPathNodeSetAddNs (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br />
</pre><p>add a new namespace node to an existing NodeSet</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the hosting node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>a the namespace node</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetAddUnique" id="xmlXPathNodeSetAddUnique"></a>Function: xmlXPathNodeSetAddUnique</h3><pre class="programlisting">void xmlXPathNodeSetAddUnique (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the hosting node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>a the namespace node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetAddUnique" id="xmlXPathNodeSetAddUnique"></a>Function: xmlXPathNodeSetAddUnique</h3><pre class="programlisting">int xmlXPathNodeSetAddUnique (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
</pre><p>add a new <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> to an existing NodeSet, optimized version when we are sure the node is not already in the set.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetContains" id="xmlXPathNodeSetContains"></a>Function: xmlXPathNodeSetContains</h3><pre class="programlisting">int xmlXPathNodeSetContains (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the initial node set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a new <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetContains" id="xmlXPathNodeSetContains"></a>Function: xmlXPathNodeSetContains</h3><pre class="programlisting">int xmlXPathNodeSetContains (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
</pre><p>checks whether @cur contains @val</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node-set</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true (1) if @cur contains @val, false (0) otherwise</td></tr></tbody></table></div><h3><a name="xmlXPathNodeSetDel" id="xmlXPathNodeSetDel"></a>Function: xmlXPathNodeSetDel</h3><pre class="programlisting">void xmlXPathNodeSetDel (<a href="libxml-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br />
</pre><p>Removes an <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> from an existing NodeSet</p>
diff --git a/doc/index.html b/doc/index.html
index b285394..803b795 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <link rel="SHORTCUT ICON" href="/favicon.ico" />
- <style type="text/css">
+<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
@@ -12,233 +9,23 @@ H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style>
- <title>The XML C parser and toolkit of Gnome</title>
- </head>
- <body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
- <table border="0" width="100%" cellpadding="5" cellspacing="0" align="center">
- <tr>
- <td width="120">
- <a href="http://swpat.ffii.org/">
- <img src="epatents.png" alt="Action against software patents" />
- </a>
- </td>
- <td width="180">
- <a href="http://www.gnome.org/">
- <img src="gnome2.png" alt="Gnome2 Logo" />
- </a>
- <a href="http://www.w3.org/Status">
- <img src="w3c.png" alt="W3C Logo" />
- </a>
- <a href="http://www.redhat.com/">
- <img src="redhat.gif" alt="Red Hat Logo" />
- </a>
- <div align="left">
- <a href="http://xmlsoft.org/">
- <img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" />
- </a>
- </div>
- </td>
- <td>
- <table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000">
- <tr>
- <td>
- <table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd">
- <tr>
- <td align="center">
- <h1>The XML C parser and toolkit of Gnome</h1>
- <h2>libxml</h2>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
- <tr>
- <td bgcolor="#8b7765">
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr>
- <td valign="top" width="200" bgcolor="#8b7765">
- <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
- <tr>
- <td>
- <table width="100%" border="0" cellspacing="1" cellpadding="3">
- <tr>
- <td colspan="1" bgcolor="#eecfa1" align="center">
- <center>
- <b>Main Menu</b>
- </center>
- </td>
- </tr>
- <tr>
- <td bgcolor="#fffacd">
- <form action="search.php" enctype="application/x-www-form-urlencoded" method="get">
- <input name="query" type="text" size="20" value="" />
- <input name="submit" type="submit" value="Search ..." />
- </form>
- <ul>
- <li>
- <a href="index.html">Home</a>
- </li>
- <li>
- <a href="html/index.html">Reference Manual</a>
- </li>
- <li>
- <a href="intro.html">Introduction</a>
- </li>
- <li>
- <a href="FAQ.html">FAQ</a>
- </li>
- <li>
- <a href="docs.html" style="font-weight:bold">Developer Menu</a>
- </li>
- <li>
- <a href="bugs.html">Reporting bugs and getting help</a>
- </li>
- <li>
- <a href="help.html">How to help</a>
- </li>
- <li>
- <a href="downloads.html">Downloads</a>
- </li>
- <li>
- <a href="news.html">Releases</a>
- </li>
- <li>
- <a href="XMLinfo.html">XML</a>
- </li>
- <li>
- <a href="XSLT.html">XSLT</a>
- </li>
- <li>
- <a href="xmldtd.html">Validation &amp; DTDs</a>
- </li>
- <li>
- <a href="encoding.html">Encodings support</a>
- </li>
- <li>
- <a href="catalog.html">Catalog support</a>
- </li>
- <li>
- <a href="namespaces.html">Namespaces</a>
- </li>
- <li>
- <a href="contribs.html">Contributions</a>
- </li>
- <li>
- <a href="examples/index.html" style="font-weight:bold">Code Examples</a>
- </li>
- <li>
- <a href="html/index.html" style="font-weight:bold">API Menu</a>
- </li>
- <li>
- <a href="guidelines.html">XML Guidelines</a>
- </li>
- <li>
- <a href="ChangeLog.html">Recent Changes</a>
- </li>
- </ul>
- </td>
- </tr>
- </table>
- <table width="100%" border="0" cellspacing="1" cellpadding="3">
- <tr>
- <td colspan="1" bgcolor="#eecfa1" align="center">
- <center>
- <b>Related links</b>
- </center>
- </td>
- </tr>
- <tr>
- <td bgcolor="#fffacd">
- <ul>
- <li>
- <a href="http://mail.gnome.org/archives/xml/">Mail archive</a>
- </li>
- <li>
- <a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a>
- </li>
- <li>
- <a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a>
- </li>
- <li>
- <a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a>
- </li>
- <li>
- <a href="ftp://xmlsoft.org/">FTP</a>
- </li>
- <li>
- <a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a>
- </li>
- <li>
- <a href="http://opencsw.org/packages/libxml2">Solaris binaries</a>
- </li>
- <li>
- <a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a>
- </li>
- <li>
- <a href="http://lxml.de/">lxml Python bindings</a>
- </li>
- <li>
- <a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a>
- </li>
- <li>
- <a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a>
- </li>
- <li>
- <a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a>
- </li>
- <li>
- <a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a>
- </li>
- <li>
- <a href="http://libxml.rubyforge.org/">Ruby bindings</a>
- </li>
- <li>
- <a href="http://tclxml.sourceforge.net/">Tcl bindings</a>
- </li>
- <li>
- <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a>
- </li>
- </ul>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- <td valign="top" bgcolor="#8b7765">
- <table border="0" cellspacing="0" cellpadding="1" width="100%">
- <tr>
- <td>
- <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
- <tr>
- <td>
- <table border="0" cellpadding="3" cellspacing="1" width="100%">
- <tr>
- <td bgcolor="#fffacd">
- <p></p>
- <p style="text-align: right; font-style: italic; font-size: 10pt">"Programming
+ <title>The XML C parser and toolkit of Gnome</title>
+
+</head>
+<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>libxml</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p></p><p style="text-align: right; font-style: italic; font-size: 10pt">"Programming
with libxml2 is like the thrilling embrace of an exotic stranger." <a href="http://diveintomark.org/archives/2004/02/18/libxml2">Mark
-Pilgrim</a></p>
- <p>Libxml2 is the XML C parser and toolkit developed for the Gnome project
+Pilgrim</a></p><p>Libxml2 is the XML C parser and toolkit developed for the Gnome project
(but usable outside of the Gnome platform), it is free software available
under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
License</a>. XML itself is a metalanguage to design markup languages, i.e.
text language where semantic and structure are added to the content using
extra "markup" information enclosed between angle brackets. HTML is the most
well-known markup language. Though the library is written in C <a href="python.html">a variety of language bindings</a> make it available in
-other environments.</p>
- <p>Libxml2 is known to be very portable, the library should build and work
+other environments.</p><p>Libxml2 is known to be very portable, the library should build and work
without serious troubles on a variety of systems (Linux, Unix, Windows,
-CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, VxWorks, ...)</p>
- <p>Libxml2 implements a number of existing standards related to markup
-languages:</p>
- <ul><li>the XML standard: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></li>
+CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, VxWorks, ...)</p><p>Libxml2 implements a number of existing standards related to markup
+languages:</p><ul>
+ <li>the XML standard: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></li>
<li>Namespaces in XML: <a href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a></li>
<li>XML Base: <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a></li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC 2396</a> :
@@ -259,14 +46,12 @@ languages:</p>
2001</a></li>
<li>W3C <a href="http://www.w3.org/TR/xml-id/">xml:id</a> Working Draft 7
April 2004</li>
-</ul>
- <p>In most cases libxml2 tries to implement the specifications in a
+</ul><p>In most cases libxml2 tries to implement the specifications in a
relatively strictly compliant way. As of release 2.4.16, libxml2 passed all
1800+ tests from the <a href="http://www.oasis-open.org/committees/xml-conformance/">OASIS XML Tests
-Suite</a>.</p>
- <p>To some extent libxml2 provides support for the following additional
-specifications but doesn't claim to implement them completely:</p>
- <ul><li>Document Object Model (DOM) <a href="http://www.w3.org/TR/DOM-Level-2-Core/">http://www.w3.org/TR/DOM-Level-2-Core/</a>
+Suite</a>.</p><p>To some extent libxml2 provides support for the following additional
+specifications but doesn't claim to implement them completely:</p><ul>
+ <li>Document Object Model (DOM) <a href="http://www.w3.org/TR/DOM-Level-2-Core/">http://www.w3.org/TR/DOM-Level-2-Core/</a>
the document model, but it doesn't implement the API itself, gdome2 does
this on top of libxml2</li>
<li><a href="http://www.cis.ohio-state.edu/rfc/rfc959.txt">RFC 959</a> :
@@ -275,12 +60,10 @@ specifications but doesn't claim to implement them completely:</p>
HTTP/1.0, again a basic HTTP client code</li>
<li>SAX: a SAX2 like interface and a minimal SAX1 implementation compatible
with early expat versions</li>
-</ul>
- <p>A partial implementation of <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schemas Part
+</ul><p>A partial implementation of <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schemas Part
1: Structure</a> is being worked on but it would be far too early to make any
-conformance statement about it at the moment.</p>
- <p>Separate documents:</p>
- <ul><li><a href="http://xmlsoft.org/XSLT/">the libxslt page</a> providing an
+conformance statement about it at the moment.</p><p>Separate documents:</p><ul>
+ <li><a href="http://xmlsoft.org/XSLT/">the libxslt page</a> providing an
implementation of XSLT 1.0 and common extensions like EXSLT for
libxml2</li>
<li><a href="http://gdome2.cs.unibo.it/">the gdome2 page</a>
@@ -290,26 +73,5 @@ conformance statement about it at the moment.</p>
Digital Signature</a> for libxml2</li>
<li>also check the related links section for more related and active
projects.</li>
-</ul>
- <p> Hosting sponsored by <a href="http://www.aoemedia.de/opensource-cms.html">Open Source CMS services</a> from AOE media.</p>
- <p>Logo designed by <a href="mailto:liyanage@access.ch">Marc Liyanage</a>.</p>
- <p>
- <a href="bugs.html">Daniel Veillard</a>
- </p>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
+</ul><p> Hosting sponsored by <a href="http://www.aoemedia.de/opensource-cms.html">Open Source CMS services</a> from AOE media.</p><p>Logo designed by <a href="mailto:liyanage@access.ch">Marc Liyanage</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body>
</html>
diff --git a/doc/interface.html b/doc/interface.html
index 13cc949..ce1caf3 100644
--- a/doc/interface.html
+++ b/doc/interface.html
@@ -13,7 +13,7 @@ loaded using libxml), it's better to use the SAX interface of libxml. SAX is
a <strong>callback-based interface</strong> to the parser. Before parsing,
the application layer registers a customized set of callbacks which are
called by the library as it progresses through the XML input.</p><p>To get more detailed step-by-step guidance on using the SAX interface of
-libxml, see the <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">nice
+libxml, see the <a href="http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.html">nice
documentation</a>.written by <a href="mailto:james@daa.com.au">James
Henstridge</a>.</p><p>You can debug the SAX behaviour by using the <strong>testSAX</strong>
program located in the gnome-xml module (it's usually not shipped in the
diff --git a/doc/intro.html b/doc/intro.html
index def9829..551bea4 100644
--- a/doc/intro.html
+++ b/doc/intro.html
@@ -9,7 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Introduction</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Introduction</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This document describes libxml, the <a href="http://www.w3.org/XML/">XML</a> C parser and toolkit developed for the
<a href="http://www.gnome.org/">Gnome</a> project. <a href="http://www.w3.org/XML/">XML is a standard</a> for building tag-based
-structured documents/data.</p><p>Here are some key points about libxml:</p><ul><li>Libxml2 exports Push (progressive) and Pull (blocking) type parser
+structured documents/data.</p><p>Here are some key points about libxml:</p><ul>
+ <li>Libxml2 exports Push (progressive) and Pull (blocking) type parser
interfaces for both XML and HTML.</li>
<li>Libxml2 can do DTD validation at parse time, using a parsed document
instance, or with an arbitrary DTD.</li>
diff --git a/doc/library.html b/doc/library.html
index 92f1a05..e51139a 100644
--- a/doc/library.html
+++ b/doc/library.html
@@ -16,10 +16,12 @@ API should <a href="#DOM">look at DOM</a>.</p><p>The <a href="html/libxml-parser
separated from the <a href="html/libxml-htmlparser.html">HTML parser
interfaces</a>. Let's have a look at how the XML parser can be called:</p><h3><a name="Invoking" id="Invoking">Invoking the parser : the pull method</a></h3><p>Usually, the first thing to do is to read an XML input. The parser accepts
documents either from in-memory strings or from files. The functions are
-defined in "parser.h":</p><dl><dt><code>xmlDocPtr xmlParseMemory(char *buffer, int size);</code></dt>
+defined in "parser.h":</p><dl>
+ <dt><code>xmlDocPtr xmlParseMemory(char *buffer, int size);</code></dt>
<dd><p>Parse a null-terminated string containing the document.</p>
</dd>
-</dl><dl><dt><code>xmlDocPtr xmlParseFile(const char *filename);</code></dt>
+</dl><dl>
+ <dt><code>xmlDocPtr xmlParseFile(const char *filename);</code></dt>
<dd><p>Parse an XML document contained in a (possibly compressed)
file.</p>
</dd>
@@ -88,18 +90,21 @@ adventure".</p><p><strong>NOTE</strong>: XML allows <em>PI</em>s and <em>comment
present before the document root, so <code>doc-&gt;children</code> may point
to an element which is not the document Root Element; a function
<code>xmlDocGetRootElement()</code> was added for this purpose.</p><h3><a name="Modifying" id="Modifying">Modifying the tree</a></h3><p>Functions are provided for reading and writing the document content. Here
-is an excerpt from the <a href="html/libxml-tree.html">tree API</a>:</p><dl><dt><code>xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar *name, const
+is an excerpt from the <a href="html/libxml-tree.html">tree API</a>:</p><dl>
+ <dt><code>xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar *name, const
xmlChar *value);</code></dt>
<dd><p>This sets (or changes) an attribute carried by an ELEMENT node.
The value can be NULL.</p>
</dd>
-</dl><dl><dt><code>const xmlChar *xmlGetProp(xmlNodePtr node, const xmlChar
+</dl><dl>
+ <dt><code>const xmlChar *xmlGetProp(xmlNodePtr node, const xmlChar
*name);</code></dt>
<dd><p>This function returns a pointer to new copy of the property
content. Note that the user must deallocate the result.</p>
</dd>
</dl><p>Two functions are provided for reading and writing the text associated
-with elements:</p><dl><dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const xmlChar
+with elements:</p><dl>
+ <dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const xmlChar
*value);</code></dt>
<dd><p>This function takes an "external" string and converts it to one
text node or possibly to a list of entity and text nodes. All
@@ -107,7 +112,8 @@ with elements:</p><dl><dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, c
internally as entity nodes, hence the result of the function may not be
a single node.</p>
</dd>
-</dl><dl><dt><code>xmlChar *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int
+</dl><dl>
+ <dt><code>xmlChar *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int
inLine);</code></dt>
<dd><p>This function is the inverse of
<code>xmlStringGetNodeList()</code>. It generates a new string
@@ -117,29 +123,36 @@ with elements:</p><dl><dt><code>xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, c
XML encoding in the string, it will substitute it with its value (say,
"GNU Network Object Model Environment").</p>
</dd>
-</dl><h3><a name="Saving" id="Saving">Saving a tree</a></h3><p>Basically 3 options are possible:</p><dl><dt><code>void xmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int
+</dl><h3><a name="Saving" id="Saving">Saving a tree</a></h3><p>Basically 3 options are possible:</p><dl>
+ <dt><code>void xmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int
*size);</code></dt>
<dd><p>Returns a buffer into which the document has been saved.</p>
</dd>
-</dl><dl><dt><code>extern void xmlDocDump(FILE *f, xmlDocPtr doc);</code></dt>
+</dl><dl>
+ <dt><code>extern void xmlDocDump(FILE *f, xmlDocPtr doc);</code></dt>
<dd><p>Dumps a document to an open file descriptor.</p>
</dd>
-</dl><dl><dt><code>int xmlSaveFile(const char *filename, xmlDocPtr cur);</code></dt>
+</dl><dl>
+ <dt><code>int xmlSaveFile(const char *filename, xmlDocPtr cur);</code></dt>
<dd><p>Saves the document to a file. In this case, the compression
interface is triggered if it has been turned on.</p>
</dd>
</dl><h3><a name="Compressio" id="Compressio">Compression</a></h3><p>The library transparently handles compression when doing file-based
accesses. The level of compression on saves can be turned on either globally
-or individually for one file:</p><dl><dt><code>int xmlGetDocCompressMode (xmlDocPtr doc);</code></dt>
+or individually for one file:</p><dl>
+ <dt><code>int xmlGetDocCompressMode (xmlDocPtr doc);</code></dt>
<dd><p>Gets the document compression ratio (0-9).</p>
</dd>
-</dl><dl><dt><code>void xmlSetDocCompressMode (xmlDocPtr doc, int mode);</code></dt>
+</dl><dl>
+ <dt><code>void xmlSetDocCompressMode (xmlDocPtr doc, int mode);</code></dt>
<dd><p>Sets the document compression ratio.</p>
</dd>
-</dl><dl><dt><code>int xmlGetCompressMode(void);</code></dt>
+</dl><dl>
+ <dt><code>int xmlGetCompressMode(void);</code></dt>
<dd><p>Gets the default compression ratio.</p>
</dd>
-</dl><dl><dt><code>void xmlSetCompressMode(int mode);</code></dt>
+</dl><dl>
+ <dt><code>void xmlSetCompressMode(int mode);</code></dt>
<dd><p>Sets the default compression ratio.</p>
</dd>
</dl><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index 3bca246..f83d14f 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -372,10 +372,12 @@
<author>Daniel Veillard </author>
<exports symbol='xmlDict' type='typedef'/>
<exports symbol='xmlDictPtr' type='typedef'/>
+ <exports symbol='xmlDictGetUsage' type='function'/>
<exports symbol='xmlDictReference' type='function'/>
<exports symbol='xmlDictCleanup' type='function'/>
<exports symbol='xmlDictSize' type='function'/>
<exports symbol='xmlDictExists' type='function'/>
+ <exports symbol='xmlDictSetLimit' type='function'/>
<exports symbol='xmlDictOwns' type='function'/>
<exports symbol='xmlDictQLookup' type='function'/>
<exports symbol='xmlInitializeDict' type='function'/>
@@ -715,10 +717,11 @@
<exports symbol='XML_PARSER_EOF' type='enum'/>
<exports symbol='XML_PARSER_CDATA_SECTION' type='enum'/>
<exports symbol='XML_WITH_LEGACY' type='enum'/>
+ <exports symbol='XML_WITH_OUTPUT' type='enum'/>
<exports symbol='XML_PARSE_XINCLUDE' type='enum'/>
<exports symbol='XML_PARSE_NOCDATA' type='enum'/>
<exports symbol='XML_PARSE_NOBASEFIX' type='enum'/>
- <exports symbol='XML_WITH_OUTPUT' type='enum'/>
+ <exports symbol='XML_PARSE_BIG_LINES' type='enum'/>
<exports symbol='XML_WITH_XINCLUDE' type='enum'/>
<exports symbol='XML_WITH_PUSH' type='enum'/>
<exports symbol='XML_PARSE_READER' type='enum'/>
@@ -880,7 +883,7 @@
<exports symbol='xmlSetExternalEntityLoader' type='function'/>
</file>
<file name='parserInternals'>
- <summary>internals routines exported by the parser.</summary>
+ <summary>internals routines and limits exported by the parser.</summary>
<description>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </description>
<author>Daniel Veillard </author>
<exports symbol='XML_SUBSTITUTE_REF' type='macro'/>
@@ -895,14 +898,17 @@
<exports symbol='IS_LETTER' type='macro'/>
<exports symbol='IS_IDEOGRAPHIC' type='macro'/>
<exports symbol='MOVETO_STARTTAG' type='macro'/>
+ <exports symbol='XML_MAX_NAME_LENGTH' type='macro'/>
<exports symbol='IS_ASCII_LETTER' type='macro'/>
<exports symbol='IS_DIGIT' type='macro'/>
+ <exports symbol='XML_MAX_DICTIONARY_LIMIT' type='macro'/>
<exports symbol='XML_SUBSTITUTE_PEREF' type='macro'/>
<exports symbol='MOVETO_ENDTAG' type='macro'/>
<exports symbol='SKIP_EOL' type='macro'/>
<exports symbol='IS_EXTENDER_CH' type='macro'/>
<exports symbol='IS_BLANK_CH' type='macro'/>
<exports symbol='IS_LETTER_CH' type='macro'/>
+ <exports symbol='XML_MAX_LOOKUP_LIMIT' type='macro'/>
<exports symbol='XML_MAX_TEXT_LENGTH' type='macro'/>
<exports symbol='XML_SUBSTITUTE_NONE' type='macro'/>
<exports symbol='IS_COMBINING' type='macro'/>
@@ -1406,13 +1412,14 @@
<description>this module describes the structures found in an tree resulting from an XML or HTML parsing, as well as the API provided for various processing on that tree </description>
<author>Daniel Veillard </author>
<exports symbol='XML_LOCAL_NAMESPACE' type='macro'/>
- <exports symbol='XML_XML_NAMESPACE' type='macro'/>
+ <exports symbol='BASE_BUFFER_SIZE' type='macro'/>
<exports symbol='XML_XML_ID' type='macro'/>
<exports symbol='xmlRootNode' type='macro'/>
<exports symbol='XML_GET_LINE' type='macro'/>
<exports symbol='XML_GET_CONTENT' type='macro'/>
<exports symbol='xmlChildrenNode' type='macro'/>
- <exports symbol='BASE_BUFFER_SIZE' type='macro'/>
+ <exports symbol='XML_XML_NAMESPACE' type='macro'/>
+ <exports symbol='LIBXML2_NEW_BUFFER' type='macro'/>
<exports symbol='XML_ATTRIBUTE_IMPLIED' type='enum'/>
<exports symbol='XML_ELEMENT_CONTENT_ELEMENT' type='enum'/>
<exports symbol='XML_ENTITY_REF_NODE' type='enum'/>
@@ -1475,7 +1482,7 @@
<exports symbol='XML_ELEMENT_CONTENT_MULT' type='enum'/>
<exports symbol='XML_ELEMENT_CONTENT_PLUS' type='enum'/>
<exports symbol='xmlNs' type='typedef'/>
- <exports symbol='xmlBufferPtr' type='typedef'/>
+ <exports symbol='xmlElementContent' type='typedef'/>
<exports symbol='xmlEnumerationPtr' type='typedef'/>
<exports symbol='xmlBuffer' type='typedef'/>
<exports symbol='xmlParserInputPtr' type='typedef'/>
@@ -1486,7 +1493,7 @@
<exports symbol='xmlBufferAllocationScheme' type='typedef'/>
<exports symbol='xmlNode' type='typedef'/>
<exports symbol='xmlDocPtr' type='typedef'/>
- <exports symbol='xmlElementContent' type='typedef'/>
+ <exports symbol='xmlBufferPtr' type='typedef'/>
<exports symbol='xmlDOMWrapCtxtPtr' type='typedef'/>
<exports symbol='xmlRefPtr' type='typedef'/>
<exports symbol='xmlParserInputBuffer' type='typedef'/>
@@ -1496,6 +1503,7 @@
<exports symbol='xmlParserCtxt' type='typedef'/>
<exports symbol='xmlDtdPtr' type='typedef'/>
<exports symbol='xmlAttributeDefault' type='typedef'/>
+ <exports symbol='xmlBuf' type='typedef'/>
<exports symbol='xmlNotation' type='typedef'/>
<exports symbol='xmlElementType' type='typedef'/>
<exports symbol='xmlEntity' type='typedef'/>
@@ -1504,6 +1512,7 @@
<exports symbol='xmlElementTypeVal' type='typedef'/>
<exports symbol='xmlNotationPtr' type='typedef'/>
<exports symbol='xmlElementPtr' type='typedef'/>
+ <exports symbol='xmlBufPtr' type='typedef'/>
<exports symbol='xmlElementContentOccur' type='typedef'/>
<exports symbol='xmlAttrPtr' type='typedef'/>
<exports symbol='xmlDoc' type='typedef'/>
@@ -1541,8 +1550,9 @@
<exports symbol='_xmlElementContent' type='struct'/>
<exports symbol='xmlDocCopyNode' type='function'/>
<exports symbol='xmlNewDocRawNode' type='function'/>
- <exports symbol='xmlGetProp' type='function'/>
+ <exports symbol='xmlBufContent' type='function'/>
<exports symbol='xmlNewNsPropEatName' type='function'/>
+ <exports symbol='xmlStringGetNodeList' type='function'/>
<exports symbol='xmlNewCDataBlock' type='function'/>
<exports symbol='xmlBufferWriteCHAR' type='function'/>
<exports symbol='xmlNodeGetBase' type='function'/>
@@ -1554,15 +1564,16 @@
<exports symbol='xmlBufferCreate' type='function'/>
<exports symbol='xmlNewDocFragment' type='function'/>
<exports symbol='xmlDocGetRootElement' type='function'/>
- <exports symbol='xmlStringGetNodeList' type='function'/>
+ <exports symbol='xmlGetProp' type='function'/>
<exports symbol='xmlValidateName' type='function'/>
- <exports symbol='xmlSetBufferAllocationScheme' type='function'/>
+ <exports symbol='xmlBufEnd' type='function'/>
<exports symbol='xmlValidateQName' type='function'/>
<exports symbol='xmlHasNsProp' type='function'/>
<exports symbol='xmlAddPrevSibling' type='function'/>
<exports symbol='xmlBufferAddHead' type='function'/>
<exports symbol='xmlNewPI' type='function'/>
<exports symbol='xmlDocDumpFormatMemoryEnc' type='function'/>
+ <exports symbol='xmlSetProp' type='function'/>
<exports symbol='xmlChildElementCount' type='function'/>
<exports symbol='xmlElemDump' type='function'/>
<exports symbol='xmlSaveFormatFileTo' type='function'/>
@@ -1608,6 +1619,7 @@
<exports symbol='xmlCopyDoc' type='function'/>
<exports symbol='xmlDOMWrapNewCtxt' type='function'/>
<exports symbol='xmlDocDumpMemoryEnc' type='function'/>
+ <exports symbol='xmlBufGetNodeContent' type='function'/>
<exports symbol='xmlTextMerge' type='function'/>
<exports symbol='xmlDocDumpMemory' type='function'/>
<exports symbol='xmlNewDocPI' type='function'/>
@@ -1631,6 +1643,7 @@
<exports symbol='xmlUnlinkNode' type='function'/>
<exports symbol='xmlSplitQName3' type='function'/>
<exports symbol='xmlDOMWrapAcquireNsFunction' type='function'/>
+ <exports symbol='xmlBufUse' type='function'/>
<exports symbol='xmlDocSetRootElement' type='function'/>
<exports symbol='xmlGetLineNo' type='function'/>
<exports symbol='xmlBufferContent' type='function'/>
@@ -1638,6 +1651,7 @@
<exports symbol='xmlLastElementChild' type='function'/>
<exports symbol='xmlNodeGetLang' type='function'/>
<exports symbol='xmlGetDocCompressMode' type='function'/>
+ <exports symbol='xmlBufNodeDump' type='function'/>
<exports symbol='xmlGetNsProp' type='function'/>
<exports symbol='xmlNewDocProp' type='function'/>
<exports symbol='xmlFreeNode' type='function'/>
@@ -1682,12 +1696,13 @@
<exports symbol='xmlGetNsList' type='function'/>
<exports symbol='xmlBufferGrow' type='function'/>
<exports symbol='xmlNodeIsText' type='function'/>
- <exports symbol='xmlSetProp' type='function'/>
+ <exports symbol='xmlSetBufferAllocationScheme' type='function'/>
<exports symbol='xmlIsXHTML' type='function'/>
<exports symbol='xmlNodeSetLang' type='function'/>
<exports symbol='xmlFreeDtd' type='function'/>
<exports symbol='xmlFreeNodeList' type='function'/>
<exports symbol='xmlFreeDoc' type='function'/>
+ <exports symbol='xmlBufShrink' type='function'/>
<exports symbol='xmlNewDocNode' type='function'/>
<exports symbol='xmlSaveFileEnc' type='function'/>
<exports symbol='xmlSetNsProp' type='function'/>
@@ -1922,9 +1937,11 @@
<exports symbol='xmlNormalizeWindowsPath' type='function'/>
<exports symbol='xmlInputReadCallback' type='function'/>
<exports symbol='xmlParserInputBufferCreateStatic' type='function'/>
+ <exports symbol='xmlOutputBufferGetContent' type='function'/>
<exports symbol='xmlIOHTTPClose' type='function'/>
<exports symbol='xmlOutputBufferWriteEscape' type='function'/>
<exports symbol='xmlOutputBufferCreateFilename' type='function'/>
+ <exports symbol='xmlOutputBufferGetSize' type='function'/>
<exports symbol='xmlCleanupOutputCallbacks' type='function'/>
<exports symbol='xmlInputOpenCallback' type='function'/>
<exports symbol='xmlParserInputBufferRead' type='function'/>
@@ -2030,7 +2047,7 @@
<exports symbol='XML_RNGP_ELEM_CONTENT_EMPTY' type='enum'/>
<exports symbol='XML_SCHEMAP_WARN_UNLOCATED_SCHEMA' type='enum'/>
<exports symbol='XML_IO_EMLINK' type='enum'/>
- <exports symbol='XML_CHECK_X' type='enum'/>
+ <exports symbol='XML_ERR_NMTOKEN_REQUIRED' type='enum'/>
<exports symbol='XML_RNGP_ANYNAME_ATTR_ANCESTOR' type='enum'/>
<exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_3_1' type='enum'/>
<exports symbol='XML_ERR_PI_NOT_STARTED' type='enum'/>
@@ -2274,6 +2291,7 @@
<exports symbol='XML_C14N_RELATIVE_NAMESPACE' type='enum'/>
<exports symbol='XML_SCHEMAP_FAILED_LOAD' type='enum'/>
<exports symbol='XML_ERR_ATTRIBUTE_WITHOUT_VALUE' type='enum'/>
+ <exports symbol='XML_ERR_NAME_TOO_LONG' type='enum'/>
<exports symbol='XML_XPTR_SYNTAX_ERROR' type='enum'/>
<exports symbol='XML_SCHEMAP_UNKNOWN_TYPE' type='enum'/>
<exports symbol='XML_CHECK_WRONG_DOC' type='enum'/>
@@ -2379,7 +2397,6 @@
<exports symbol='XML_RNGP_PAT_START_ATTR' type='enum'/>
<exports symbol='XML_CHECK_WRONG_NAME' type='enum'/>
<exports symbol='XML_SCHEMAV_NOTEMPTY' type='enum'/>
- <exports symbol='XML_ERR_NMTOKEN_REQUIRED' type='enum'/>
<exports symbol='XML_IO_EROFS' type='enum'/>
<exports symbol='XML_IO_EXDEV' type='enum'/>
<exports symbol='XML_XINCLUDE_NO_FALLBACK' type='enum'/>
@@ -2449,7 +2466,7 @@
<exports symbol='XML_RNGP_INCLUDE_FAILURE' type='enum'/>
<exports symbol='XML_ERR_COMMENT_NOT_FINISHED' type='enum'/>
<exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2' type='enum'/>
- <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1' type='enum'/>
+ <exports symbol='XML_BUF_OVERFLOW' type='enum'/>
<exports symbol='XML_IO_EMSGSIZE' type='enum'/>
<exports symbol='XML_FROM_CATALOG' type='enum'/>
<exports symbol='XML_SCHEMAV_ATTRINVALID' type='enum'/>
@@ -2576,6 +2593,7 @@
<exports symbol='XML_RNGP_EMPTY_CONTENT' type='enum'/>
<exports symbol='XML_IO_EALREADY' type='enum'/>
<exports symbol='XML_IO_ERANGE' type='enum'/>
+ <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1' type='enum'/>
<exports symbol='XML_IO_ENOSYS' type='enum'/>
<exports symbol='XML_SCHEMAP_NOTHING_TO_PARSE' type='enum'/>
<exports symbol='XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE' type='enum'/>
@@ -2591,7 +2609,7 @@
<exports symbol='XML_SCHEMAP_INVALID_MINOCCURS' type='enum'/>
<exports symbol='XML_SCHEMAV_CVC_ELT_1' type='enum'/>
<exports symbol='XML_SCHEMAP_COS_ALL_LIMITED' type='enum'/>
- <exports symbol='XML_CHECK_' type='enum'/>
+ <exports symbol='XML_SCHEMATRONV_REPORT' type='enum'/>
<exports symbol='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID' type='enum'/>
<exports symbol='XML_IO_EPIPE' type='enum'/>
<exports symbol='XML_SCHEMAP_NOTYPE_NOREF' type='enum'/>
@@ -2666,7 +2684,6 @@
<exports symbol='XML_ERR_NS_DECL_ERROR' type='enum'/>
<exports symbol='XML_ERR_INTERNAL_ERROR' type='enum'/>
<exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1' type='enum'/>
- <exports symbol='XML_SCHEMATRONV_REPORT' type='enum'/>
<exports symbol='XML_ERR_ELEMCONTENT_NOT_FINISHED' type='enum'/>
<exports symbol='XML_FROM_NAMESPACE' type='enum'/>
<exports symbol='XML_IO_EBUSY' type='enum'/>
@@ -2674,6 +2691,7 @@
<exports symbol='XML_ERR_INVALID_URI' type='enum'/>
<exports symbol='XML_IO_ESRCH' type='enum'/>
<exports symbol='XML_FROM_XPOINTER' type='enum'/>
+ <exports symbol='XML_FROM_BUFFER' type='enum'/>
<exports symbol='XML_ERR_PEREF_IN_PROLOG' type='enum'/>
<exports symbol='XML_RNGP_TEXT_HAS_CHILD' type='enum'/>
<exports symbol='XML_SCHEMAV_NOTNILLABLE' type='enum'/>
@@ -2688,6 +2706,7 @@
<exports symbol='XML_RNGP_FOREIGN_ELEMENT' type='enum'/>
<exports symbol='XML_SCHEMAP_DEF_AND_PREFIX' type='enum'/>
<exports symbol='XML_ERR_MIXED_NOT_STARTED' type='enum'/>
+ <exports symbol='XML_ERR_USER_STOP' type='enum'/>
<exports symbol='XML_CHECK_FOUND_CDATA' type='enum'/>
<exports symbol='XML_SCHEMAP_INTERNAL' type='enum'/>
<exports symbol='XML_SCHEMAV_INVALIDELEM' type='enum'/>
@@ -2730,6 +2749,7 @@
<exports symbol='XML_IO_EEXIST' type='enum'/>
<exports symbol='XML_SCHEMAP_MG_PROPS_CORRECT_2' type='enum'/>
<exports symbol='XML_SCHEMAP_MG_PROPS_CORRECT_1' type='enum'/>
+ <exports symbol='XML_FROM_URI' type='enum'/>
<exports symbol='XML_RNGP_PAT_LIST_ELEM' type='enum'/>
<exports symbol='XML_SCHEMAV_UNDECLAREDELEM' type='enum'/>
<exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2' type='enum'/>
@@ -3076,12 +3096,14 @@
<exports symbol='xmlSchemaSAXUnplug' type='function'/>
<exports symbol='xmlSchemaParse' type='function'/>
<exports symbol='xmlSchemaFreeParserCtxt' type='function'/>
+ <exports symbol='xmlSchemaValidateSetFilename' type='function'/>
<exports symbol='xmlSchemaNewParserCtxt' type='function'/>
<exports symbol='xmlSchemaIsValid' type='function'/>
<exports symbol='xmlSchemaValidityErrorFunc' type='function'/>
<exports symbol='xmlSchemaSAXPlug' type='function'/>
<exports symbol='xmlSchemaValidateStream' type='function'/>
<exports symbol='xmlSchemaGetParserErrors' type='function'/>
+ <exports symbol='xmlSchemaValidateSetLocator' type='function'/>
<exports symbol='xmlSchemaValidateOneElement' type='function'/>
<exports symbol='xmlSchemaSetValidStructuredErrors' type='function'/>
<exports symbol='xmlSchemaSetValidErrors' type='function'/>
@@ -3090,6 +3112,7 @@
<exports symbol='xmlSchemaValidateDoc' type='function'/>
<exports symbol='xmlSchemaFree' type='function'/>
<exports symbol='xmlSchemaNewMemParserCtxt' type='function'/>
+ <exports symbol='xmlSchemaValidityLocatorFunc' type='function'/>
<exports symbol='xmlSchemaGetValidErrors' type='function'/>
<exports symbol='xmlSchemaSetValidOptions' type='function'/>
<exports symbol='xmlSchemaSetParserErrors' type='function'/>
@@ -3396,6 +3419,7 @@
<exports symbol='DEBUG_MEMORY_LOCATION' type='macro'/>
<exports symbol='LIBXML_ATTR_FORMAT' type='macro'/>
<exports symbol='LIBXML_TEST_VERSION' type='macro'/>
+ <exports symbol='LIBXML_THREAD_ALLOC_ENABLED' type='macro'/>
<exports symbol='LIBXML_XPATH_ENABLED' type='macro'/>
<exports symbol='LIBXML_PATTERN_ENABLED' type='macro'/>
<exports symbol='LIBXML_VALID_ENABLED' type='macro'/>
@@ -3415,7 +3439,7 @@
<exports symbol='xmlTextWriterEndPI' type='function'/>
<exports symbol='xmlTextWriterWriteBase64' type='function'/>
<exports symbol='xmlTextWriterSetIndentString' type='function'/>
- <exports symbol='xmlFreeTextWriter' type='function'/>
+ <exports symbol='xmlTextWriterStartAttribute' type='function'/>
<exports symbol='xmlTextWriterEndComment' type='function'/>
<exports symbol='xmlTextWriterWriteRawLen' type='function'/>
<exports symbol='xmlTextWriterWriteDTDExternalEntityContents' type='function'/>
@@ -3437,7 +3461,7 @@
<exports symbol='xmlTextWriterStartElementNS' type='function'/>
<exports symbol='xmlTextWriterEndDTDEntity' type='function'/>
<exports symbol='xmlNewTextWriter' type='function'/>
- <exports symbol='xmlTextWriterStartAttribute' type='function'/>
+ <exports symbol='xmlFreeTextWriter' type='function'/>
<exports symbol='xmlTextWriterWriteVFormatDTDAttlist' type='function'/>
<exports symbol='xmlTextWriterStartPI' type='function'/>
<exports symbol='xmlTextWriterStartElement' type='function'/>
@@ -3463,8 +3487,9 @@
<exports symbol='xmlTextWriterWriteVFormatElementNS' type='function'/>
<exports symbol='xmlTextWriterWriteDTDNotation' type='function'/>
<exports symbol='xmlTextWriterWriteFormatElement' type='function'/>
- <exports symbol='xmlTextWriterWriteElementNS' type='function'/>
+ <exports symbol='xmlTextWriterSetQuoteChar' type='function'/>
<exports symbol='xmlTextWriterWriteString' type='function'/>
+ <exports symbol='xmlTextWriterWriteElementNS' type='function'/>
<exports symbol='xmlTextWriterFullEndElement' type='function'/>
<exports symbol='xmlTextWriterWriteVFormatAttributeNS' type='function'/>
<exports symbol='xmlTextWriterFlush' type='function'/>
@@ -3527,6 +3552,7 @@
<exports symbol='XPATH_INVALID_PREDICATE_ERROR' type='enum'/>
<exports symbol='XPATH_XSLT_TREE' type='enum'/>
<exports symbol='XPATH_EXPR_ERROR' type='enum'/>
+ <exports symbol='XPATH_FORBID_VARIABLE_ERROR' type='enum'/>
<exports symbol='XPATH_INVALID_TYPE' type='enum'/>
<exports symbol='XPATH_INVALID_CTXT_POSITION' type='enum'/>
<exports symbol='XPATH_UNDEFINED' type='enum'/>
@@ -3567,6 +3593,7 @@
<exports symbol='xmlXPathNINF' type='variable'/>
<exports symbol='xmlXPathCastNodeSetToBoolean' type='function'/>
<exports symbol='xmlXPathFuncLookupFunc' type='function'/>
+ <exports symbol='xmlXPathNodeEval' type='function'/>
<exports symbol='xmlXPathCastNodeToString' type='function'/>
<exports symbol='xmlXPathIsNaN' type='function'/>
<exports symbol='xmlXPathContextSetCache' type='function'/>
@@ -3601,6 +3628,7 @@
<exports symbol='xmlXPathCtxtCompile' type='function'/>
<exports symbol='xmlXPathEvalFunc' type='function'/>
<exports symbol='xmlXPathCastBooleanToString' type='function'/>
+ <exports symbol='xmlXPathSetContextNode' type='function'/>
<exports symbol='xmlXPathCastNumberToBoolean' type='function'/>
<exports symbol='xmlXPathFreeNodeSet' type='function'/>
<exports symbol='xmlXPathFreeCompExpr' type='function'/>
@@ -3931,6 +3959,9 @@
<info>Same as IS_PUBIDCHAR but for single-byte value</info>
<arg name='c' info='an xmlChar value (normally unsigned char)'/>
</macro>
+ <macro name='LIBXML2_NEW_BUFFER' file='tree'>
+ <info>Macro used to express that the API use the new buffers for xmlParserInputBuffer and xmlOutputBuffer. The change was introduced in 2.9.0.</info>
+ </macro>
<macro name='LIBXML_ATTR_ALLOC_SIZE' file='xmlversion'>
<info>Macro used to indicate to GCC this is an allocator function</info>
</macro>
@@ -4020,6 +4051,9 @@
<macro name='LIBXML_TEST_VERSION' file='xmlversion'>
<info>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</info>
</macro>
+ <macro name='LIBXML_THREAD_ALLOC_ENABLED' file='xmlversion'>
+ <info>Whether the allocation hooks are per-thread</info>
+ </macro>
<macro name='LIBXML_THREAD_ENABLED' file='xmlversion'>
<info>Whether the thread support is configured in</info>
</macro>
@@ -4149,11 +4183,20 @@
<macro name='XML_LOCAL_NAMESPACE' file='tree'>
<info>A namespace declaration node.</info>
</macro>
+ <macro name='XML_MAX_DICTIONARY_LIMIT' file='parserInternals'>
+ <info>Maximum size allowed by the parser for a dictionary by default This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Introduced in 2.9.0</info>
+ </macro>
+ <macro name='XML_MAX_LOOKUP_LIMIT' file='parserInternals'>
+ <info>Maximum size allowed by the parser for ahead lookup This is an upper boundary enforced by the parser to avoid bad behaviour on &quot;unfriendly&apos; content Introduced in 2.9.0</info>
+ </macro>
<macro name='XML_MAX_NAMELEN' file='parserInternals'>
<info>Identifiers can be longer, but this will be more costly at runtime.</info>
</macro>
+ <macro name='XML_MAX_NAME_LENGTH' file='parserInternals'>
+ <info>Maximum size allowed for a markup identitier This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Note that with the use of parsing dictionaries overriding the limit may result in more runtime memory usage in face of &quot;unfriendly&apos; content Introduced in 2.9.0</info>
+ </macro>
<macro name='XML_MAX_TEXT_LENGTH' file='parserInternals'>
- <info>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it.</info>
+ <info>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Introduced in 2.9.0</info>
</macro>
<macro name='XML_SAX2_MAGIC' file='parser'>
<info>Special constant found in SAX2 blocks initialized fields</info>
@@ -4664,6 +4707,7 @@
<enum name='XML_BUFFER_ALLOC_HYBRID' file='tree' value='5' type='xmlBufferAllocationScheme' info=' exact up to a threshold, and doubleit thereafter'/>
<enum name='XML_BUFFER_ALLOC_IMMUTABLE' file='tree' value='3' type='xmlBufferAllocationScheme' info='immutable buffer'/>
<enum name='XML_BUFFER_ALLOC_IO' file='tree' value='4' type='xmlBufferAllocationScheme' info='special allocation scheme used for I/O'/>
+ <enum name='XML_BUF_OVERFLOW' file='xmlerror' value='7000' type='xmlParserErrors'/>
<enum name='XML_C14N_1_0' file='c14n' value='0' type='xmlC14NMode' info='Origianal C14N 1.0 spec'/>
<enum name='XML_C14N_1_1' file='c14n' value='2' type='xmlC14NMode' info=' C14N 1.1 spec'/>
<enum name='XML_C14N_CREATE_CTXT' file='xmlerror' value='1950' type='xmlParserErrors'/>
@@ -4710,7 +4754,6 @@
<enum name='XML_CHAR_ENCODING_UTF16BE' file='encoding' value='3' type='xmlCharEncoding' info='UTF-16 big endian'/>
<enum name='XML_CHAR_ENCODING_UTF16LE' file='encoding' value='2' type='xmlCharEncoding' info='UTF-16 little endian'/>
<enum name='XML_CHAR_ENCODING_UTF8' file='encoding' value='1' type='xmlCharEncoding' info='UTF-8'/>
- <enum name='XML_CHECK_' file='xmlerror' value='6005' type='xmlParserErrors' info='5033'/>
<enum name='XML_CHECK_ENTITY_TYPE' file='xmlerror' value='5012' type='xmlParserErrors' info='5012'/>
<enum name='XML_CHECK_FOUND_ATTRIBUTE' file='xmlerror' value='5001' type='xmlParserErrors' info='5001'/>
<enum name='XML_CHECK_FOUND_CDATA' file='xmlerror' value='5003' type='xmlParserErrors' info='5003'/>
@@ -4749,7 +4792,6 @@
<enum name='XML_CHECK_WRONG_NEXT' file='xmlerror' value='5021' type='xmlParserErrors' info='5021'/>
<enum name='XML_CHECK_WRONG_PARENT' file='xmlerror' value='5029' type='xmlParserErrors' info='5029'/>
<enum name='XML_CHECK_WRONG_PREV' file='xmlerror' value='5019' type='xmlParserErrors' info='5019'/>
- <enum name='XML_CHECK_X' file='xmlerror' value='6006' type='xmlParserErrors' info=' 503'/>
<enum name='XML_COMMENT_NODE' file='tree' value='8' type='xmlElementType'/>
<enum name='XML_DOCB_DOCUMENT_NODE' file='tree' value='21' type='xmlElementType'/>
<enum name='XML_DOCUMENT_FRAG_NODE' file='tree' value='11' type='xmlElementType'/>
@@ -4888,6 +4930,7 @@ and not by parsing an instance'/>
<enum name='XML_ERR_MIXED_NOT_FINISHED' file='xmlerror' value='53' type='xmlParserErrors' info='53'/>
<enum name='XML_ERR_MIXED_NOT_STARTED' file='xmlerror' value='52' type='xmlParserErrors' info='52'/>
<enum name='XML_ERR_NAME_REQUIRED' file='xmlerror' value='68' type='xmlParserErrors' info='68'/>
+ <enum name='XML_ERR_NAME_TOO_LONG' file='xmlerror' value='110' type='xmlParserErrors' info='110'/>
<enum name='XML_ERR_NMTOKEN_REQUIRED' file='xmlerror' value='67' type='xmlParserErrors' info='67'/>
<enum name='XML_ERR_NONE' file='xmlerror' value='0' type='xmlErrorLevel'/>
<enum name='XML_ERR_NOTATION_NOT_FINISHED' file='xmlerror' value='49' type='xmlParserErrors' info='49'/>
@@ -4924,6 +4967,7 @@ and not by parsing an instance'/>
<enum name='XML_ERR_UNSUPPORTED_ENCODING' file='xmlerror' value='32' type='xmlParserErrors' info='32'/>
<enum name='XML_ERR_URI_FRAGMENT' file='xmlerror' value='92' type='xmlParserErrors' info='92'/>
<enum name='XML_ERR_URI_REQUIRED' file='xmlerror' value='70' type='xmlParserErrors' info='70'/>
+ <enum name='XML_ERR_USER_STOP' file='xmlerror' value='111' type='xmlParserErrors' info='111'/>
<enum name='XML_ERR_VALUE_REQUIRED' file='xmlerror' value='84' type='xmlParserErrors' info='84'/>
<enum name='XML_ERR_VERSION_MISMATCH' file='xmlerror' value='109' type='xmlParserErrors' info='109'/>
<enum name='XML_ERR_VERSION_MISSING' file='xmlerror' value='96' type='xmlParserErrors' info='96'/>
@@ -4939,6 +4983,7 @@ and not by parsing an instance'/>
<enum name='XML_EXTERNAL_GENERAL_PARSED_ENTITY' file='entities' value='2' type='xmlEntityType'/>
<enum name='XML_EXTERNAL_GENERAL_UNPARSED_ENTITY' file='entities' value='3' type='xmlEntityType'/>
<enum name='XML_EXTERNAL_PARAMETER_ENTITY' file='entities' value='5' type='xmlEntityType'/>
+ <enum name='XML_FROM_BUFFER' file='xmlerror' value='29' type='xmlErrorDomain' info='The buffers module'/>
<enum name='XML_FROM_C14N' file='xmlerror' value='21' type='xmlErrorDomain' info='The Canonicalization module'/>
<enum name='XML_FROM_CATALOG' file='xmlerror' value='20' type='xmlErrorDomain' info='The Catalog module'/>
<enum name='XML_FROM_CHECK' file='xmlerror' value='24' type='xmlErrorDomain' info='The error checking module'/>
@@ -4960,8 +5005,9 @@ and not by parsing an instance'/>
<enum name='XML_FROM_RELAXNGV' file='xmlerror' value='19' type='xmlErrorDomain' info='The Relax-NG validator module'/>
<enum name='XML_FROM_SCHEMASP' file='xmlerror' value='16' type='xmlErrorDomain' info='The W3C XML Schemas parser module'/>
<enum name='XML_FROM_SCHEMASV' file='xmlerror' value='17' type='xmlErrorDomain' info='The W3C XML Schemas validation module'/>
- <enum name='XML_FROM_SCHEMATRONV' file='xmlerror' value='28' type='xmlErrorDomain' info=' The Schematron validator module'/>
+ <enum name='XML_FROM_SCHEMATRONV' file='xmlerror' value='28' type='xmlErrorDomain' info='The Schematron validator module'/>
<enum name='XML_FROM_TREE' file='xmlerror' value='2' type='xmlErrorDomain' info='The tree module'/>
+ <enum name='XML_FROM_URI' file='xmlerror' value='30' type='xmlErrorDomain' info=' The URI module'/>
<enum name='XML_FROM_VALID' file='xmlerror' value='23' type='xmlErrorDomain' info='The XML DTD validation with valid context'/>
<enum name='XML_FROM_WRITER' file='xmlerror' value='25' type='xmlErrorDomain' info='The xmlwriter module'/>
<enum name='XML_FROM_XINCLUDE' file='xmlerror' value='11' type='xmlErrorDomain' info='The XInclude processing'/>
@@ -5081,6 +5127,7 @@ and not by parsing an instance'/>
<enum name='XML_PARSER_SUBST_ENTITIES' file='xmlreader' value='4' type='xmlParserProperties'/>
<enum name='XML_PARSER_SYSTEM_LITERAL' file='parser' value='13' type='xmlParserInputState' info='within a SYSTEM value'/>
<enum name='XML_PARSER_VALIDATE' file='xmlreader' value='3' type='xmlParserProperties'/>
+ <enum name='XML_PARSE_BIG_LINES' file='parser' value='4194304' type='xmlParserOption' info=' Store big lines numbers in text PSVI field'/>
<enum name='XML_PARSE_COMPACT' file='parser' value='65536' type='xmlParserOption' info='compact small text nodes; no modification of
the tree allowed afterwards (will possibly
crash if you try to modify the tree)'/>
@@ -5089,7 +5136,7 @@ crash if you try to modify the tree)'/>
<enum name='XML_PARSE_DTDLOAD' file='parser' value='4' type='xmlParserOption' info='load the external subset'/>
<enum name='XML_PARSE_DTDVALID' file='parser' value='16' type='xmlParserOption' info='validate with the DTD'/>
<enum name='XML_PARSE_HUGE' file='parser' value='524288' type='xmlParserOption' info='relax any hardcoded limit from the parser'/>
- <enum name='XML_PARSE_IGNORE_ENC' file='parser' value='2097152' type='xmlParserOption' info=' ignore internal document encoding hint'/>
+ <enum name='XML_PARSE_IGNORE_ENC' file='parser' value='2097152' type='xmlParserOption' info='ignore internal document encoding hint'/>
<enum name='XML_PARSE_NOBASEFIX' file='parser' value='262144' type='xmlParserOption' info='do not fixup XINCLUDE xml:base uris'/>
<enum name='XML_PARSE_NOBLANKS' file='parser' value='256' type='xmlParserOption' info='remove blank nodes'/>
<enum name='XML_PARSE_NOCDATA' file='parser' value='16384' type='xmlParserOption' info='merge CDATA as text nodes'/>
@@ -5827,6 +5874,7 @@ crash if you try to modify the tree)'/>
<enum name='XPATH_ENCODING_ERROR' file='xpath' value='20' type='xmlXPathError'/>
<enum name='XPATH_EXPRESSION_OK' file='xpath' value='0' type='xmlXPathError'/>
<enum name='XPATH_EXPR_ERROR' file='xpath' value='7' type='xmlXPathError'/>
+ <enum name='XPATH_FORBID_VARIABLE_ERROR' file='xpath' value='24' type='xmlXPathError'/>
<enum name='XPATH_INVALID_ARITY' file='xpath' value='12' type='xmlXPathError'/>
<enum name='XPATH_INVALID_CHAR_ERROR' file='xpath' value='21' type='xmlXPathError'/>
<enum name='XPATH_INVALID_CTXT' file='xpath' value='22' type='xmlXPathError'/>
@@ -5970,6 +6018,10 @@ if necessary or NULL'/>
<typedef name='xmlAutomataStatePtr' file='xmlautomata' type='xmlAutomataState *'>
<info>A state int the automata description,</info>
</typedef>
+ <struct name='xmlBuf' file='tree' type='struct _xmlBuf'/>
+ <typedef name='xmlBufPtr' file='tree' type='xmlBuf *'>
+ <info>A pointer to a buffer structure, the actual structure internals are not public</info>
+ </typedef>
<struct name='xmlBuffer' file='tree' type='struct _xmlBuffer'>
<field name='content' type='xmlChar *' info=' The buffer content UTF8'/>
<field name='use' type='unsigned int' info=' The buffer size used'/>
@@ -6139,8 +6191,9 @@ set at the end of parsing'/>
<field name='nexte' type='struct _xmlEntity *' info=' unused'/>
<field name='URI' type='const xmlChar *' info=' the full URI as computed'/>
<field name='owner' type='int' info=' does the entity own the childrens'/>
- <field name='checked' type='int' info=' was the entity content checked this is also used to count entites
-* references done from that entity'/>
+ <field name='checked' type='int' info=' was the entity content checked this is also used to count entities
+* references done from that entity
+* and if it contains &apos;&lt;&apos;'/>
</struct>
<typedef name='xmlEntityPtr' file='tree' type='xmlEntity *'/>
<typedef name='xmlEntityType' file='entities' type='enum'/>
@@ -6160,7 +6213,7 @@ set at the end of parsing'/>
<field name='str2' type='char *' info=' extra string information'/>
<field name='str3' type='char *' info=' extra string information'/>
<field name='int1' type='int' info=' extra number information'/>
- <field name='int2' type='int' info=' column number of the error or 0 if N/A (todo: rename this field when we would break ABI)'/>
+ <field name='int2' type='int' info=' error column # or 0 if N/A (todo: rename field when we would brk ABI)'/>
<field name='ctxt' type='void *' info=' the parser context if available'/>
<field name='node' type='void *' info=' the node in the tree'/>
</struct>
@@ -6287,8 +6340,8 @@ set at the end of parsing'/>
<field name='writecallback' type='xmlOutputWriteCallback' info=''/>
<field name='closecallback' type='xmlOutputCloseCallback' info=''/>
<field name='encoder' type='xmlCharEncodingHandlerPtr' info=' I18N conversions to UTF-8'/>
- <field name='buffer' type='xmlBufferPtr' info=' Local buffer encoded in UTF-8 or ISOLatin'/>
- <field name='conv' type='xmlBufferPtr' info=' if encoder != NULL buffer for output'/>
+ <field name='buffer' type='xmlBufPtr' info=' Local buffer encoded in UTF-8 or ISOLatin'/>
+ <field name='conv' type='xmlBufPtr' info=' if encoder != NULL buffer for output'/>
<field name='written' type='int' info=' total number of byte written'/>
<field name='error' type='int' info=''/>
</struct>
@@ -6390,6 +6443,7 @@ actually an xmlCharEncoding'/>
<field name='nodeInfoMax' type='int' info=' Max depth of the parsing stack'/>
<field name='nodeInfoTab' type='xmlParserNodeInfo *' info=' array of nodeInfos'/>
<field name='input_id' type='int' info=' we need to label inputs'/>
+ <field name='sizeentcopy' type='unsigned long' info=' volume of entity copy'/>
</struct>
<typedef name='xmlParserCtxtPtr' file='tree' type='xmlParserCtxt *'/>
<typedef name='xmlParserErrors' file='xmlerror' type='enum'/>
@@ -6418,8 +6472,8 @@ actually an xmlCharEncoding'/>
<field name='readcallback' type='xmlInputReadCallback' info=''/>
<field name='closecallback' type='xmlInputCloseCallback' info=''/>
<field name='encoder' type='xmlCharEncodingHandlerPtr' info=' I18N conversions to UTF-8'/>
- <field name='buffer' type='xmlBufferPtr' info=' Local buffer encoded in UTF-8'/>
- <field name='raw' type='xmlBufferPtr' info=' if encoder != NULL buffer for raw input'/>
+ <field name='buffer' type='xmlBufPtr' info=' Local buffer encoded in UTF-8'/>
+ <field name='raw' type='xmlBufPtr' info=' if encoder != NULL buffer for raw input'/>
<field name='compressed' type='int' info=' -1=unknown, 0=not compressed, 1=compressed'/>
<field name='error' type='int' info=''/>
<field name='rawconsumed' type='unsigned long' info=' amount consumed from raw'/>
@@ -8305,7 +8359,7 @@ Could we use @subtypes for this?'/>
<arg name='SystemID' type='const xmlChar *' info='the system identifier or NULL'/>
</function>
<function name='xmlAddPrevSibling' file='tree' module='tree'>
- <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
+ <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)</cond>
<info>Add a new node @elem as the previous sibling of @cur merging adjacent TEXT nodes (@elem may be freed) If the new node was already inserted in a document it is first unlinked from its existing context. If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
<return type='xmlNodePtr' info='the new node or NULL in case of error.'/>
<arg name='cur' type='xmlNodePtr' info='the child node'/>
@@ -8507,6 +8561,43 @@ Could we use @subtypes for this?'/>
<return type='const char *' info='a pointer to either &quot;True&quot; or &quot;False&quot;'/>
<arg name='boolval' type='int' info='a bool to turn into text'/>
</function>
+ <function name='xmlBufContent' file='tree' module='buf'>
+ <info>Function to extract the content of a buffer</info>
+ <return type='xmlChar *' info='the internal content'/>
+ <arg name='buf' type='const xmlBuf *' info='the buffer'/>
+ </function>
+ <function name='xmlBufEnd' file='tree' module='buf'>
+ <info>Function to extract the end of the content of a buffer</info>
+ <return type='xmlChar *' info='the end of the internal content or NULL in case of error'/>
+ <arg name='buf' type='xmlBufPtr' info='the buffer'/>
+ </function>
+ <function name='xmlBufGetNodeContent' file='tree' module='tree'>
+ <info>Read the value of a node @cur, this can be either the text carried directly by this node if it&apos;s a TEXT node or the aggregate string of the values carried by this node child&apos;s (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buf with this value</info>
+ <return type='int' info='0 in case of success and -1 in case of error.'/>
+ <arg name='buf' type='xmlBufPtr' info='a buffer xmlBufPtr'/>
+ <arg name='cur' type='const xmlNode *' info='the node being read'/>
+ </function>
+ <function name='xmlBufNodeDump' file='tree' module='xmlsave'>
+ <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
+ <info>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
+ <return type='size_t' info='the number of bytes written to the buffer, in case of error 0 is returned or @buf stores the error'/>
+ <arg name='buf' type='xmlBufPtr' info='the XML buffer output'/>
+ <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='cur' type='xmlNodePtr' info='the current node'/>
+ <arg name='level' type='int' info='the imbrication level for indenting'/>
+ <arg name='format' type='int' info='is formatting allowed'/>
+ </function>
+ <function name='xmlBufShrink' file='tree' module='buf'>
+ <info>Remove the beginning of an XML buffer. NOTE that this routine behaviour differs from xmlBufferShrink() as it will return 0 on error instead of -1 due to size_t being used as the return type.</info>
+ <return type='size_t' info='the number of byte removed or 0 in case of failure'/>
+ <arg name='buf' type='xmlBufPtr' info='the buffer to dump'/>
+ <arg name='len' type='size_t' info='the number of xmlChar to remove'/>
+ </function>
+ <function name='xmlBufUse' file='tree' module='buf'>
+ <info>Function to get the length of a buffer</info>
+ <return type='size_t' info='the length of data in the internal content'/>
+ <arg name='buf' type='const xmlBufPtr' info='the buffer'/>
+ </function>
<function name='xmlBufferAdd' file='tree' module='tree'>
<info>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</info>
<return type='int' info='0 successful, a positive error code number otherwise and -1 in case of internal or API error.'/>
@@ -8536,7 +8627,7 @@ Could we use @subtypes for this?'/>
<function name='xmlBufferContent' file='tree' module='tree'>
<info>Function to extract the content of a buffer</info>
<return type='const xmlChar *' info='the internal content'/>
- <arg name='buf' type='const xmlBufferPtr' info='the buffer'/>
+ <arg name='buf' type='const xmlBuffer *' info='the buffer'/>
</function>
<function name='xmlBufferCreate' file='tree' module='tree'>
<info>routine to create an XML buffer.</info>
@@ -8583,7 +8674,7 @@ Could we use @subtypes for this?'/>
<function name='xmlBufferLength' file='tree' module='tree'>
<info>Function to get the length of a buffer</info>
<return type='int' info='the length of data in the internal content'/>
- <arg name='buf' type='const xmlBufferPtr' info='the buffer'/>
+ <arg name='buf' type='const xmlBuffer *' info='the buffer'/>
</function>
<function name='xmlBufferResize' file='tree' module='tree'>
<info>Resize a buffer to accommodate minimum size of @size.</info>
@@ -9054,13 +9145,13 @@ Could we use @subtypes for this?'/>
<function name='xmlCopyNode' file='tree' module='tree'>
<info>Do a copy of the node.</info>
<return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
- <arg name='node' type='const xmlNodePtr' info='the node'/>
+ <arg name='node' type='xmlNodePtr' info='the node'/>
<arg name='extended' type='int' info='if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)'/>
</function>
<function name='xmlCopyNodeList' file='tree' module='tree'>
<info>Do a recursive copy of the node list. Use xmlDocCopyNodeList() if possible to ensure string interning.</info>
<return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
- <arg name='node' type='const xmlNodePtr' info='the first node in the list.'/>
+ <arg name='node' type='xmlNodePtr' info='the first node in the list.'/>
</function>
<function name='xmlCopyNotationTable' file='valid' module='valid'>
<cond>defined(LIBXML_TREE_ENABLED)</cond>
@@ -9242,7 +9333,7 @@ Could we use @subtypes for this?'/>
<arg name='nsPrefix' type='const xmlChar *' info='the requested namespace prefix'/>
</functype>
<function name='xmlDOMWrapAdoptNode' file='tree' module='tree'>
- <info>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unliked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</info>
+ <info>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unlinked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</info>
<return type='int' info='0 if the operation succeeded, 1 if a node of unsupported type was given, 2 if a node of not yet supported type was given and -1 on API/internal errors.'/>
<arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the optional context for custom processing'/>
<arg name='sourceDoc' type='xmlDocPtr' info='the optional sourceDoc'/>
@@ -9270,7 +9361,7 @@ Could we use @subtypes for this?'/>
</function>
<function name='xmlDOMWrapNewCtxt' file='tree' module='tree'>
<info>Allocates and initializes a new DOM-wrapper context.</info>
- <return type='xmlDOMWrapCtxtPtr' info='the xmlDOMWrapCtxtPtr or NULL in case of an internal errror.'/>
+ <return type='xmlDOMWrapCtxtPtr' info='the xmlDOMWrapCtxtPtr or NULL in case of an internal error.'/>
</function>
<function name='xmlDOMWrapReconcileNamespaces' file='tree' module='tree'>
<info>Ensures that ns-references point to ns-decls hold on element-nodes. Ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</info>
@@ -9430,6 +9521,11 @@ Could we use @subtypes for this?'/>
<return type='void'/>
<arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
</function>
+ <function name='xmlDictGetUsage' file='dict' module='dict'>
+ <info>Get how much memory is used by a dictionary for strings Added in 2.9.0</info>
+ <return type='size_t' info='the amount of strings allocated'/>
+ <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+ </function>
<function name='xmlDictLookup' file='dict' module='dict'>
<info>Add the @name to the dictionnary @dict if not present.</info>
<return type='const xmlChar *' info='the internal copy of the name or NULL in case of internal error'/>
@@ -9455,6 +9551,12 @@ Could we use @subtypes for this?'/>
<return type='int' info='0 in case of success and -1 in case of error'/>
<arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
</function>
+ <function name='xmlDictSetLimit' file='dict' module='dict'>
+ <info>Set a size limit for the dictionary Added in 2.9.0</info>
+ <return type='size_t' info='the previous limit of the dictionary or 0'/>
+ <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+ <arg name='limit' type='size_t' info='the limit in bytes'/>
+ </function>
<function name='xmlDictSize' file='dict' module='dict'>
<info>Query the number of elements installed in the hash @dict.</info>
<return type='int' info='the number of elements in the dictionnary or -1 in case of error'/>
@@ -9470,7 +9572,7 @@ Could we use @subtypes for this?'/>
<function name='xmlDocCopyNode' file='tree' module='tree'>
<info>Do a copy of the node to a given document.</info>
<return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
- <arg name='node' type='const xmlNodePtr' info='the node'/>
+ <arg name='node' type='xmlNodePtr' info='the node'/>
<arg name='doc' type='xmlDocPtr' info='the document'/>
<arg name='extended' type='int' info='if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)'/>
</function>
@@ -9478,7 +9580,7 @@ Could we use @subtypes for this?'/>
<info>Do a recursive copy of the node list.</info>
<return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
<arg name='doc' type='xmlDocPtr' info='the target document'/>
- <arg name='node' type='const xmlNodePtr' info='the first node in the list.'/>
+ <arg name='node' type='xmlNodePtr' info='the first node in the list.'/>
</function>
<function name='xmlDocDump' file='tree' module='xmlsave'>
<cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
@@ -9534,7 +9636,7 @@ Could we use @subtypes for this?'/>
<function name='xmlDocGetRootElement' file='tree' module='tree'>
<info>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
<return type='xmlNodePtr' info='the #xmlNodePtr for the root or NULL'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
</function>
<function name='xmlDocSetRootElement' file='tree' module='tree'>
<cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)</cond>
@@ -9623,7 +9725,7 @@ Could we use @subtypes for this?'/>
<function name='xmlEncodeSpecialChars' file='entities' module='entities'>
<info>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.</info>
<return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
- <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
+ <arg name='doc' type='const xmlDoc *' info='the document containing the string'/>
<arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
</function>
<functype name='xmlEntityReferenceFunc' file='parserInternals' module='parserInternals'>
@@ -9687,7 +9789,7 @@ Could we use @subtypes for this?'/>
<arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
<arg name='exp' type='xmlExpNodePtr' info='the expression'/>
<arg name='langList' type='const xmlChar **' info='where to store the tokens'/>
- <arg name='len' type='int' info='the allocated lenght of @list'/>
+ <arg name='len' type='int' info='the allocated length of @list'/>
</function>
<function name='xmlExpGetStart' file='xmlregexp' module='xmlregexp'>
<cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
@@ -9696,7 +9798,7 @@ Could we use @subtypes for this?'/>
<arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
<arg name='exp' type='xmlExpNodePtr' info='the expression'/>
<arg name='tokList' type='const xmlChar **' info='where to store the tokens'/>
- <arg name='len' type='int' info='the allocated lenght of @list'/>
+ <arg name='len' type='int' info='the allocated length of @list'/>
</function>
<function name='xmlExpIsNillable' file='xmlregexp' module='xmlregexp'>
<cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
@@ -9716,7 +9818,7 @@ Could we use @subtypes for this?'/>
<return type='xmlExpNodePtr' info='the node or NULL in case of error'/>
<arg name='ctxt' type='xmlExpCtxtPtr' info='the expression context'/>
<arg name='name' type='const xmlChar *' info='the atom name'/>
- <arg name='len' type='int' info='the atom name lenght in byte (or -1);'/>
+ <arg name='len' type='int' info='the atom name length in byte (or -1);'/>
</function>
<function name='xmlExpNewCtxt' file='xmlregexp' module='xmlregexp'>
<cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
@@ -10035,12 +10137,12 @@ Could we use @subtypes for this?'/>
<function name='xmlGetDocCompressMode' file='tree' module='tree'>
<info>get the compression ratio for a document, ZLIB based</info>
<return type='int' info='0 (uncompressed) to 9 (max compression)'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
</function>
<function name='xmlGetDocEntity' file='entities' module='entities'>
<info>Do an entity lookup in the document entity hash table and</info>
<return type='xmlEntityPtr' info='the corresponding entity, otherwise a lookup is done in the predefined entities too. Returns A pointer to the entity structure or NULL if not found.'/>
- <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
+ <arg name='doc' type='const xmlDoc *' info='the document referencing the entity'/>
<arg name='name' type='const xmlChar *' info='the entity name'/>
</function>
<function name='xmlGetDtdAttrDesc' file='valid' module='valid'>
@@ -10120,45 +10222,45 @@ Could we use @subtypes for this?'/>
<function name='xmlGetIntSubset' file='tree' module='tree'>
<info>Get the internal subset of a document</info>
<return type='xmlDtdPtr' info='a pointer to the DTD structure or NULL if not found'/>
- <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
+ <arg name='doc' type='const xmlDoc *' info='the document pointer'/>
</function>
<function name='xmlGetLastChild' file='tree' module='tree'>
<info>Search the last child of a node.</info>
<return type='xmlNodePtr' info='the last child or NULL if none.'/>
- <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+ <arg name='parent' type='const xmlNode *' info='the parent node'/>
</function>
<function name='xmlGetLastError' file='xmlerror' module='error'>
<info>Get the last global error registered. This is per thread if compiled with thread support.</info>
<return type='xmlErrorPtr' info='NULL if no error occured or a pointer to the error'/>
</function>
<function name='xmlGetLineNo' file='tree' module='tree'>
- <info>Get line number of @node. This requires activation of this option before invoking the parser by calling xmlLineNumbersDefault(1)</info>
+ <info>Get line number of @node. Try to override the limitation of lines being store in 16 bits ints if XML_PARSE_BIG_LINES parser option was used</info>
<return type='long' info='the line number if successful, -1 otherwise'/>
- <arg name='node' type='xmlNodePtr' info='valid node'/>
+ <arg name='node' type='const xmlNode *' info='valid node'/>
</function>
<function name='xmlGetNoNsProp' file='tree' module='tree'>
<info>Search and get the value of an attribute associated to a node This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. This function is similar to xmlGetProp except it will accept only an attribute in no namespace.</info>
<return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
</function>
<function name='xmlGetNodePath' file='tree' module='tree'>
<cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)</cond>
<info>Build a structure based Path for the given node</info>
<return type='xmlChar *' info='the new path or NULL in case of error. The caller must free the returned string'/>
- <arg name='node' type='xmlNodePtr' info='a node'/>
+ <arg name='node' type='const xmlNode *' info='a node'/>
</function>
<function name='xmlGetNsList' file='tree' module='tree'>
<cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
<info>Search all the namespace applying to a given element.</info>
<return type='xmlNsPtr *' info='an NULL terminated array of all the #xmlNsPtr found that need to be freed by the caller or NULL if no namespace if defined'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
- <arg name='node' type='xmlNodePtr' info='the current node'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
+ <arg name='node' type='const xmlNode *' info='the current node'/>
</function>
<function name='xmlGetNsProp' file='tree' module='tree'>
<info>Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
<return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
<arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
</function>
@@ -10176,7 +10278,7 @@ Could we use @subtypes for this?'/>
<function name='xmlGetProp' file='tree' module='tree'>
<info>Search and get the value of an attribute associated to a node This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. NOTE: this function acts independently of namespaces associated to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp() for namespace aware processing.</info>
<return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
</function>
<function name='xmlGetRefs' file='valid' module='valid'>
@@ -10210,14 +10312,14 @@ Could we use @subtypes for this?'/>
<function name='xmlHasNsProp' file='tree' module='tree'>
<info>Search for an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. Note that a namespace of NULL indicates to use the default namespace.</info>
<return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
<arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
</function>
<function name='xmlHasProp' file='tree' module='tree'>
<info>Search an attribute associated to a node This function also looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
<return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
</function>
<function name='xmlHashAddEntry' file='hash' module='hash'>
@@ -10536,7 +10638,7 @@ Could we use @subtypes for this?'/>
<return type='void'/>
</function>
<function name='xmlInitializeDict' file='dict' module='dict'>
- <info>Do the dictionary mutex initialization. this function is not thread safe, initialization should preferably be done once at startup</info>
+ <info>Do the dictionary mutex initialization. this function is deprecated</info>
<return type='int' info='0 if initialization was already done, and 1 if that call led to the initialization'/>
</function>
<function name='xmlInitializeGlobalState' file='globals' module='globals'>
@@ -10584,7 +10686,7 @@ Could we use @subtypes for this?'/>
<function name='xmlIsBlankNode' file='tree' module='tree'>
<info>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</info>
<return type='int' info='1 yes, 0 no'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
</function>
<function name='xmlIsChar' file='chvalid' module='chvalid'>
<info>This function is DEPRECATED. Use xmlIsChar_ch or xmlIsCharQ instead</info>
@@ -10984,14 +11086,14 @@ Could we use @subtypes for this?'/>
</function>
<function name='xmlModuleOpen' file='xmlmodule' module='xmlmodule'>
<cond>defined(LIBXML_MODULES_ENABLED)</cond>
- <info>Opens a module/shared library given its name or path TODO: options are not yet implemented.</info>
+ <info>Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * . TODO: options are not yet implemented.</info>
<return type='xmlModulePtr' info='a handle for the module or NULL in case of error'/>
<arg name='name' type='const char *' info='the module name'/>
<arg name='options' type='int' info='a set of xmlModuleOption'/>
</function>
<function name='xmlModuleSymbol' file='xmlmodule' module='xmlmodule'>
<cond>defined(LIBXML_MODULES_ENABLED)</cond>
- <info>Lookup for a symbol address in the given module</info>
+ <info>Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We canot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * .</info>
<return type='int' info='0 if the symbol was found, or -1 in case of error'/>
<arg name='module' type='xmlModulePtr' info='the module'/>
<arg name='name' type='const char *' info='the name of the symbol'/>
@@ -11403,7 +11505,7 @@ Could we use @subtypes for this?'/>
<function name='xmlNewDocText' file='tree' module='tree'>
<info>Creation of a new text node within a document.</info>
<return type='xmlNodePtr' info='a pointer to the new node object.'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
<arg name='content' type='const xmlChar *' info='the text content'/>
</function>
<function name='xmlNewDocTextLen' file='tree' module='tree'>
@@ -11486,7 +11588,7 @@ Could we use @subtypes for this?'/>
<arg name='name' type='xmlChar *' info='the node name'/>
</function>
<function name='xmlNewNs' file='tree' module='tree'>
- <info>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. We use href==NULL in the case of an element creation where the namespace was not defined.</info>
+ <info>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. Note that for a default namespace, @prefix should be NULL. We use href==NULL in the case of an element creation where the namespace was not defined.</info>
<return type='xmlNsPtr' info='a new namespace pointer or NULL'/>
<arg name='node' type='xmlNodePtr' info='the element carrying the namespace'/>
<arg name='href' type='const xmlChar *' info='the URI associated'/>
@@ -11533,7 +11635,7 @@ Could we use @subtypes for this?'/>
<function name='xmlNewReference' file='tree' module='tree'>
<info>Creation of a new reference node.</info>
<return type='xmlNodePtr' info='a pointer to the new node object.'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
<arg name='name' type='const xmlChar *' info='the reference name, or the reference string with &amp; and ;'/>
</function>
<function name='xmlNewStringInputStream' file='parserInternals' module='parserInternals'>
@@ -11657,11 +11759,11 @@ Could we use @subtypes for this?'/>
<info>Read the value of a node @cur, this can be either the text carried directly by this node if it&apos;s a TEXT node or the aggregate string of the values carried by this node child&apos;s (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buffer with this value</info>
<return type='int' info='0 in case of success and -1 in case of error.'/>
<arg name='buffer' type='xmlBufferPtr' info='a buffer'/>
- <arg name='cur' type='xmlNodePtr' info='the node being read'/>
+ <arg name='cur' type='const xmlNode *' info='the node being read'/>
</function>
<function name='xmlNodeDump' file='tree' module='xmlsave'>
<cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
- <info>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
+ <info>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called Since this is using xmlBuffer structures it is limited to 2GB and somehow deprecated, use xmlBufNodeDump() instead.</info>
<return type='int' info='the number of bytes written to the buffer or -1 in case of error'/>
<arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
<arg name='doc' type='xmlDocPtr' info='the document'/>
@@ -11683,42 +11785,42 @@ Could we use @subtypes for this?'/>
<function name='xmlNodeGetBase' file='tree' module='tree'>
<info>Searches for the BASE URL. The code should work on both XML and HTML document even if base mechanisms are completely different. It returns the base as defined in RFC 2396 sections 5.1.1. Base URI within Document Content and 5.1.2. Base URI from the Encapsulating Entity However it does not return the document base (5.1.3), use doc-&gt;URL in this case</info>
<return type='xmlChar *' info='a pointer to the base URL, or NULL if not found It&apos;s up to the caller to free the memory with xmlFree().'/>
- <arg name='doc' type='xmlDocPtr' info='the document the node pertains to'/>
- <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
+ <arg name='doc' type='const xmlDoc *' info='the document the node pertains to'/>
+ <arg name='cur' type='const xmlNode *' info='the node being checked'/>
</function>
<function name='xmlNodeGetContent' file='tree' module='tree'>
<info>Read the value of a node, this can be either the text carried directly by this node if it&apos;s a TEXT node or the aggregate string of the values carried by this node child&apos;s (TEXT and ENTITY_REF). Entity references are substituted.</info>
<return type='xmlChar *' info='a new #xmlChar * or NULL if no content is available. It&apos;s up to the caller to free the memory with xmlFree().'/>
- <arg name='cur' type='xmlNodePtr' info='the node being read'/>
+ <arg name='cur' type='const xmlNode *' info='the node being read'/>
</function>
<function name='xmlNodeGetLang' file='tree' module='tree'>
<info>Searches the language of a node, i.e. the values of the xml:lang attribute or the one carried by the nearest ancestor.</info>
<return type='xmlChar *' info='a pointer to the lang value, or NULL if not found It&apos;s up to the caller to free the memory with xmlFree().'/>
- <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
+ <arg name='cur' type='const xmlNode *' info='the node being checked'/>
</function>
<function name='xmlNodeGetSpacePreserve' file='tree' module='tree'>
<info>Searches the space preserving behaviour of a node, i.e. the values of the xml:space attribute or the one carried by the nearest ancestor.</info>
<return type='int' info='-1 if xml:space is not inherited, 0 if &quot;default&quot;, 1 if &quot;preserve&quot;'/>
- <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
+ <arg name='cur' type='const xmlNode *' info='the node being checked'/>
</function>
<function name='xmlNodeIsText' file='tree' module='tree'>
<info>Is this node a Text node ?</info>
<return type='int' info='1 yes, 0 no'/>
- <arg name='node' type='xmlNodePtr' info='the node'/>
+ <arg name='node' type='const xmlNode *' info='the node'/>
</function>
<function name='xmlNodeListGetRawString' file='tree' module='tree'>
<cond>defined(LIBXML_TREE_ENABLED)</cond>
<info>Builds the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs, contrary to xmlNodeListGetString() this function doesn&apos;t do any character encoding handling.</info>
<return type='xmlChar *' info='a pointer to the string copy, the caller must free it with xmlFree().'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
- <arg name='list' type='xmlNodePtr' info='a Node list'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
+ <arg name='list' type='const xmlNode *' info='a Node list'/>
<arg name='inLine' type='int' info='should we replace entity contents or show their external form'/>
</function>
<function name='xmlNodeListGetString' file='tree' module='tree'>
<info>Build the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs</info>
<return type='xmlChar *' info='a pointer to the string copy, the caller must free it with xmlFree().'/>
<arg name='doc' type='xmlDocPtr' info='the document'/>
- <arg name='list' type='xmlNodePtr' info='a Node list'/>
+ <arg name='list' type='const xmlNode *' info='a Node list'/>
<arg name='inLine' type='int' info='should we replace entity contents or show their external form'/>
</function>
<function name='xmlNodeSetBase' file='tree' module='tree'>
@@ -11835,6 +11937,18 @@ Could we use @subtypes for this?'/>
<return type='int' info='the number of byte written or -1 in case of error.'/>
<arg name='out' type='xmlOutputBufferPtr' info='a buffered output'/>
</function>
+ <function name='xmlOutputBufferGetContent' file='xmlIO' module='xmlIO'>
+ <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
+ <info>Gives a pointer to the data currently held in the output buffer</info>
+ <return type='const xmlChar *' info='a pointer to the data or NULL in case of error'/>
+ <arg name='out' type='xmlOutputBufferPtr' info='an xmlOutputBufferPtr'/>
+ </function>
+ <function name='xmlOutputBufferGetSize' file='xmlIO' module='xmlIO'>
+ <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
+ <info>Gives the length of the data currently held in the output buffer</info>
+ <return type='size_t' info='0 in case or error or no data is held, the size otherwise'/>
+ <arg name='out' type='xmlOutputBufferPtr' info='an xmlOutputBufferPtr'/>
+ </function>
<function name='xmlOutputBufferWrite' file='xmlIO' module='xmlIO'>
<cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
<info>Write the content of the array in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
@@ -12382,13 +12496,13 @@ Could we use @subtypes for this?'/>
</functype>
<function name='xmlParserInputGrow' file='parser' module='parserInternals'>
<info>This function increase the input for the parser. It tries to preserve pointers to the input buffer, and keep already read data</info>
- <return type='int' info='the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity'/>
+ <return type='int' info='the amount of char read, or -1 in case of error, 0 indicate the end of this entity'/>
<arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
<arg name='len' type='int' info='an indicative size for the lookahead'/>
</function>
<function name='xmlParserInputRead' file='parser' module='parserInternals'>
- <info>This function refresh the input for the parser. It doesn&apos;t try to preserve pointers to the input buffer, and discard already read data</info>
- <return type='int' info='the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity'/>
+ <info>This function was internal and is deprecated.</info>
+ <return type='int' info='-1 as this is an error to use it.'/>
<arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
<arg name='len' type='int' info='an indicative size for the lookahead'/>
</function>
@@ -13008,7 +13122,7 @@ Could we use @subtypes for this?'/>
<return type='int' info='1 if no validation problem was found or -1 otherwise'/>
<arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the RelaxNG validation context'/>
<arg name='data' type='const xmlChar *' info='some character data read'/>
- <arg name='len' type='int' info='the lenght of the data'/>
+ <arg name='len' type='int' info='the length of the data'/>
</function>
<function name='xmlRelaxNGValidatePushElement' file='relaxng' module='relaxng'>
<cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
@@ -13119,7 +13233,7 @@ Could we use @subtypes for this?'/>
<arg name='ctx' type='void *' info='the user data (XML parser context)'/>
</function>
<function name='xmlSAX2EndElement' file='SAX2' module='SAX2'>
- <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)</cond>
+ <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)</cond>
<info>called when the end of an element has been detected.</info>
<return type='void'/>
<arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -13271,7 +13385,7 @@ Could we use @subtypes for this?'/>
<arg name='ctx' type='void *' info='the user data (XML parser context)'/>
</function>
<function name='xmlSAX2StartElement' file='SAX2' module='SAX2'>
- <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)</cond>
+ <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)</cond>
<info>called when an opening tag has been processed.</info>
<return type='void'/>
<arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -13627,14 +13741,14 @@ Could we use @subtypes for this?'/>
</function>
<function name='xmlSchemaGetCanonValue' file='xmlschemastypes' module='xmlschemastypes'>
<cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
- <info>Get a the cononical lexical representation of the value. The caller has to FREE the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of &quot;???&quot;. TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</info>
+ <info>Get the canonical lexical representation of the value. The caller has to FREE the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of &quot;???&quot;. TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</info>
<return type='int' info='0 if the value could be built, 1 if the value type is not supported yet and -1 in case of API errors.'/>
<arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
<arg name='retValue' type='const xmlChar **' info='the returned value'/>
</function>
<function name='xmlSchemaGetCanonValueWhtsp' file='xmlschemastypes' module='xmlschemastypes'>
<cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
- <info>Get a the cononical representation of the value. The caller has to free the returned @retValue.</info>
+ <info>Get the canonical representation of the value. The caller has to free the returned @retValue.</info>
<return type='int' info='0 if the value could be built, 1 if the value type is not supported yet and -1 in case of API errors.'/>
<arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
<arg name='retValue' type='const xmlChar **' info='the returned value'/>
@@ -13917,6 +14031,21 @@ Could we use @subtypes for this?'/>
<arg name='value' type='const xmlChar *' info='the value to check'/>
<arg name='val' type='xmlSchemaValPtr *' info='the return computed value'/>
</function>
+ <function name='xmlSchemaValidateSetFilename' file='xmlschemas' module='xmlschemas'>
+ <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
+ <info>Workaround to provide file error reporting information when this is not provided by current APIs</info>
+ <return type='void'/>
+ <arg name='vctxt' type='xmlSchemaValidCtxtPtr' info='the schema validation context'/>
+ <arg name='filename' type='const char *' info='the file name'/>
+ </function>
+ <function name='xmlSchemaValidateSetLocator' file='xmlschemas' module='xmlschemas'>
+ <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
+ <info>Allows to set a locator function to the validation context, which will be used to provide file and line information since those are not provided as part of the SAX validation flow Setting @f to NULL disable the locator.</info>
+ <return type='void'/>
+ <arg name='vctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
+ <arg name='f' type='xmlSchemaValidityLocatorFunc' info='the locator function pointer'/>
+ <arg name='ctxt' type='void *' info='the locator context'/>
+ </function>
<function name='xmlSchemaValidateStream' file='xmlschemas' module='xmlschemas'>
<cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
<info>Validate an input based on a flow of SAX event from the parser and forward the events to the @sax handler with the provided @user_data the user provided @sax handler must be a SAX2 one.</info>
@@ -13935,6 +14064,14 @@ Could we use @subtypes for this?'/>
<arg name='msg' type='const char *' info='the message'/>
<arg name='...' type='...' info='extra arguments'/>
</functype>
+ <functype name='xmlSchemaValidityLocatorFunc' file='xmlschemas' module='xmlschemas'>
+ <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
+ <info>A schemas validation locator, a callback called by the validator. This is used when file or node informations are not available to find out what file and line number are affected</info>
+ <return type='int' info='0 in case of success and -1 in case of error'/>
+ <arg name='ctx' type='void *' info='user provided context'/>
+ <arg name='file' type='const char **' info='returned file information'/>
+ <arg name='line' type='unsigned long *' info='returned line information'/>
+ </functype>
<functype name='xmlSchemaValidityWarningFunc' file='xmlschemas' module='xmlschemas'>
<cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
<info>Signature of a warning callback from an XSD validation</info>
@@ -14320,7 +14457,7 @@ Could we use @subtypes for this?'/>
</function>
<function name='xmlSplitQName3' file='tree' module='tree'>
<info>parse an XML qualified name string,i</info>
- <return type='const xmlChar *' info='NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer to the start of the name without the prefix'/>
+ <return type='const xmlChar *' info='NULL if it is not a Qualified Name, otherwise, update len with the length in byte of the prefix and return a pointer to the start of the name without the prefix'/>
<arg name='name' type='const xmlChar *' info='the full QName'/>
<arg name='len' type='int *' info='an int *'/>
</function>
@@ -14463,7 +14600,7 @@ Could we use @subtypes for this?'/>
<function name='xmlStringGetNodeList' file='tree' module='tree'>
<info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
<return type='xmlNodePtr' info='a pointer to the first child'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
<arg name='value' type='const xmlChar *' info='the value of the attribute'/>
</function>
<function name='xmlStringLenDecodeEntities' file='parserInternals' module='parser'>
@@ -14480,7 +14617,7 @@ Could we use @subtypes for this?'/>
<function name='xmlStringLenGetNodeList' file='tree' module='tree'>
<info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
<return type='xmlNodePtr' info='a pointer to the first child'/>
- <arg name='doc' type='xmlDocPtr' info='the document'/>
+ <arg name='doc' type='const xmlDoc *' info='the document'/>
<arg name='value' type='const xmlChar *' info='the value of the text'/>
<arg name='len' type='int' info='the length of the string value'/>
</function>
@@ -15133,6 +15270,13 @@ Could we use @subtypes for this?'/>
<arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
<arg name='str' type='const xmlChar *' info='the xmlChar string'/>
</function>
+ <function name='xmlTextWriterSetQuoteChar' file='xmlwriter' module='xmlwriter'>
+ <cond>defined(LIBXML_WRITER_ENABLED)</cond>
+ <info>Set the character used for quoting attributes.</info>
+ <return type='int' info='-1 on error or 0 otherwise.'/>
+ <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
+ <arg name='quotechar' type='xmlChar' info='the quote character'/>
+ </function>
<function name='xmlTextWriterStartAttribute' file='xmlwriter' module='xmlwriter'>
<cond>defined(LIBXML_WRITER_ENABLED)</cond>
<info>Start an xml attribute.</info>
@@ -16799,7 +16943,7 @@ Could we use @subtypes for this?'/>
<arg name='len' type='int' info='total number to copy'/>
</function>
<function name='xmlUnlinkNode' file='tree' module='tree'>
- <info>Unlink a node from it&apos;s current context, the node is not freed If one need to free the node, use xmlFreeNode() routine after the unlink to discard it.</info>
+ <info>Unlink a node from it&apos;s current context, the node is not freed If one need to free the node, use xmlFreeNode() routine after the unlink to discard it. Note that namespace nodes can&apos;t be unlinked as they do not have pointer to their parent.</info>
<return type='void'/>
<arg name='cur' type='xmlNodePtr' info='the node'/>
</function>
@@ -16927,7 +17071,7 @@ Could we use @subtypes for this?'/>
<arg name='elem' type='xmlElementPtr' info='an element definition'/>
</function>
<function name='xmlValidateNCName' file='tree' module='tree'>
- <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)</cond>
+ <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)</cond>
<info>Check that a value conforms to the lexical space of NCName</info>
<return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
<arg name='value' type='const xmlChar *' info='the value to check'/>
@@ -17031,7 +17175,7 @@ Could we use @subtypes for this?'/>
<return type='int' info='1 if no validation problem was found or 0 otherwise'/>
<arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
<arg name='data' type='const xmlChar *' info='some character data read'/>
- <arg name='len' type='int' info='the lenght of the data'/>
+ <arg name='len' type='int' info='the length of the data'/>
</function>
<function name='xmlValidatePushElement' file='valid' module='valid'>
<cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
@@ -17765,6 +17909,14 @@ Could we use @subtypes for this?'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
</function>
+ <function name='xmlXPathNodeEval' file='xpath' module='xpath'>
+ <cond>defined(LIBXML_XPATH_ENABLED)</cond>
+ <info>Evaluate the XPath Location Path in the given context. The node &apos;node&apos; is set as the context node. The context node is not restored.</info>
+ <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
+ <arg name='node' type='xmlNodePtr' info='the node to to use as the context node'/>
+ <arg name='str' type='const xmlChar *' info='the XPath expression'/>
+ <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
+ </function>
<function name='xmlXPathNodeLeading' file='xpathInternals' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes is sorted by document order, then #exslSetsNodeLeadingSorted is called.</info>
@@ -17782,14 +17934,14 @@ Could we use @subtypes for this?'/>
<function name='xmlXPathNodeSetAdd' file='xpathInternals' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>add a new xmlNodePtr to an existing NodeSet</info>
- <return type='void'/>
+ <return type='int' info='0 in case of success, and -1 in case of error'/>
<arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
<arg name='val' type='xmlNodePtr' info='a new xmlNodePtr'/>
</function>
<function name='xmlXPathNodeSetAddNs' file='xpathInternals' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>add a new namespace node to an existing NodeSet</info>
- <return type='void'/>
+ <return type='int' info='0 in case of success and -1 in case of error'/>
<arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
<arg name='node' type='xmlNodePtr' info='the hosting node'/>
<arg name='ns' type='xmlNsPtr' info='a the namespace node'/>
@@ -17797,7 +17949,7 @@ Could we use @subtypes for this?'/>
<function name='xmlXPathNodeSetAddUnique' file='xpathInternals' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>add a new xmlNodePtr to an existing NodeSet, optimized version when we are sure the node is not already in the set.</info>
- <return type='void'/>
+ <return type='int' info='0 in case of success and -1 in case of failure'/>
<arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
<arg name='val' type='xmlNodePtr' info='a new xmlNodePtr'/>
</function>
@@ -18051,6 +18203,13 @@ Could we use @subtypes for this?'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
+ <function name='xmlXPathSetContextNode' file='xpath' module='xpath'>
+ <cond>defined(LIBXML_XPATH_ENABLED)</cond>
+ <info>Sets &apos;node&apos; as the context node. The node must be in the same document as that associated with the context.</info>
+ <return type='int' info='-1 in case of error or 0 if successful'/>
+ <arg name='node' type='xmlNodePtr' info='the node to to use as the context node'/>
+ <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
+ </function>
<function name='xmlXPathStartsWithFunction' file='xpathInternals' module='xpath'>
<cond>defined(LIBXML_XPATH_ENABLED)</cond>
<info>Implement the starts-with() XPath function boolean starts-with(string, string) The starts-with function returns true if the first argument string starts with the second argument string, and otherwise returns false.</info>
diff --git a/doc/libxml2.xsa b/doc/libxml2.xsa
index 574f83b..da61d57 100644
--- a/doc/libxml2.xsa
+++ b/doc/libxml2.xsa
@@ -8,59 +8,95 @@
</vendor>
<product id="libxml2">
<name>libxml2</name>
- <version>2.7.8</version>
- <last-release> Nov 4 2010</last-release>
+ <version>2.9.1</version>
+ <last-release> Apr 19 2013</last-release>
<info-url>http://xmlsoft.org/</info-url>
<changes> - Features:
- 480323 add code to plug in ICU converters by default (Giuseppe Iuculano),
- Add xmlSaveOption XML_SAVE_WSNONSIG (Adam Spragg)
+ Support for Python3 (Daniel Veillard),
+ Add xmlXPathSetContextNode and xmlXPathNodeEval (Alex Bligh)
- Documentation:
- Fix devhelp documentation installation (Mike Hommey),
- Fix web site encoding problems (Daniel Veillard),
- Fix a couple of typo in HTML parser error messages (Michael Day),
- Forgot to update the news page for 0.7.7 (Daniel Veillard)
+ Add documentation for xmllint --xpath (Daniel Veillard),
+ Fix the URL of the SAX documentation from James (Daniel Veillard),
+ Fix spelling of "length". (Michael Wood)
- Portability:
- 607273 Fix python detection on MSys/Windows (LRN),
- 614087 Fix Socket API usage to allow Windows64 compilation (Ozkan Sezer),
- Fix compilation with Clang (Koop Mast),
- Fix Win32 build (Rob Richards)
+ Fix python bindings with versions older than 2.7 (Daniel Veillard),
+ rebuild docs:Makefile.am (Roumen Petrov),
+ elfgcchack.h after rebuild in doc (Roumen Petrov),
+ elfgcchack for buf module (Roumen Petrov),
+ Fix a uneeded and wrong extra link parameter (Daniel Veillard),
+ Few cleanup patches for Windows (Denis Pauk),
+ Fix rpmbuild --nocheck (Mark Salter),
+ Fix for win32/configure.js and WITH_THREAD_ALLOC (Daniel Richard),
+ Fix Broken multi-arch support in xml2-config (Daniel Veillard),
+ Fix a portability issue for GCC &lt; 3.4.0 (Daniel Veillard),
+ Windows build fixes (Daniel Richard),
+ Fix a thread portability problem (Friedrich Haubensak),
+ Downgrade autoconf requirement to 2.63 (Daniel Veillard)
- Bug Fixes:
- 595789 fix a remaining potential Solaris problem (Daniel Veillard),
- 617468 fix progressive HTML parsing with style using "'" (Denis Pauk),
- 616478 Fix xmllint shell write command (Gwenn Kahz),
- 614005 Possible erroneous HTML parsing on unterminated script (Pierre Belzile),
- 627987 Fix XSD IDC errors in imported schemas (Jim Panetta),
- 629325 XPath rounding errors first cleanup (Phil Shafer),
- 630140 fix iso995x encoding error (Daniel Veillard),
- make sure htmlCtxtReset do reset the disableSAX field (Daniel Veillard),
- Fix a change of semantic on XPath preceding and following axis (Daniel Veillard),
- Fix a potential segfault due to weak symbols on pthreads (Mike Hommey),
- Fix a leak in XPath compilation (Daniel Veillard),
- Fix the semantic of XPath axis for namespace/attribute context nodes (Daniel Veillard),
- Avoid a descriptor leak in catalog loading code (Carlo Bramini),
- Fix a small bug in XPath evaluation code (Marius Wachtler),
- Fix handling of XML-1.0 XML namespace declaration (Daniel Veillard),
- Fix errors in XSD double validation check (Csaba Raduly),
- Fix handling of apos in URIs (Daniel Veillard),
- xmlTextReaderReadOuterXml should handle DTD (Rob Richards),
- Autogen.sh needs to create m4 directory (Rob Richards)
+ Fix a linking error for python bindings (Daniel Veillard),
+ Fix a couple of return without value (Jüri Aedla),
+ Improve the hashing functions (Daniel Franke),
+ Improve handling of xmlStopParser() (Daniel Veillard),
+ Remove risk of lockup in dictionary initialization (Daniel Veillard),
+ Activate detection of encoding in external subset (Daniel Veillard),
+ Fix an output buffer flushing conversion bug (Mikhail Titov),
+ Fix an old bug in xmlSchemaValidateOneElement (Csaba László),
+ Fix configure cannot remove messages (Gilles Espinasse),
+ fix schema validation in combination with xsi:nil (Daniel Veillard),
+ xmlCtxtReadFile doesn't work with literal IPv6 URLs (Steve Wolf),
+ Fix a few problems with setEntityLoader (Alexey Neyman),
+ Detect excessive entities expansion upon replacement (Daniel Veillard),
+ Fix the flushing out of raw buffers on encoding conversions (Daniel,
+Veillard),
+ Fix some buffer conversion issues (Daniel Veillard),
+ When calling xmlNodeDump make sure we grow the buffer quickly (Daniel,
+Veillard),
+ Fix an error in the progressive DTD parsing code (Dan Winship),
+ xmllint should not load DTD by default when using the reader (Daniel,
+Veillard),
+ Try IBM-037 when looking for EBCDIC handlers (Petr Sumbera),
+ Fix potential out of bound access (Daniel Veillard),
+ Fix large parse of file from memory (Daniel Veillard),
+ Fix a bug in the nsclean option of the parser (Daniel Veillard),
+ Fix a regression in 2.9.0 breaking validation while streaming (Daniel,
+Veillard),
+ Remove potential calls to exit() (Daniel Veillard)
- Improvements:
- 606592 update language ID parser to RFC 5646 (Daniel Veillard),
- Sort python generated stubs (Mike Hommey),
- Add an HTML parser option to avoid a default doctype (Daniel Veillard)
+ Regenerated API, and testapi, rebuild documentation (Daniel Veillard),
+ Fix tree iterators broken by 2to3 script (Daniel Veillard),
+ update all tests for Python3 and Python2 (Daniel Veillard),
+ A few more fixes for python 3 affecting libxml2.py (Daniel Veillard),
+ Fix compilation on Python3 (Daniel Veillard),
+ Converting apibuild.py to python3 (Daniel Veillard),
+ First pass at starting porting to python3 (Daniel Veillard),
+ updated configure.in for python3 (Daniel Veillard),
+ Add support for xpathRegisterVariable in Python (Shaun McCance),
+ Added a regression tests from bug 694228 data (Daniel Veillard),
+ Cache presence of '&lt;' in entities content (Daniel Veillard),
+ Avoid extra processing on entities (Daniel Veillard),
+ Python binding for xmlRegisterInputCallback (Alexey Neyman),
+ Python bindings: DOM casts everything to xmlNode (Alexey Neyman),
+ Define LIBXML_THREAD_ALLOC_ENABLED via xmlversion.h (Tim Starling),
+ Adding streaming validation to runtest checks (Daniel Veillard),
+ Add a --pushsmall option to xmllint (Daniel Veillard)
- Cleanups:
- 618831 don't ship generated files in git (Adrian Bunk),
- Switch from the obsolete mkinstalldirs to AC_PROG_MKDIR_P (Adrian Bunk),
- Various cleanups on encoding handling (Daniel Veillard),
- Fix xmllint to use format=1 for default formatting (Adam Spragg),
- Force _xmlSaveCtxt.format to be 0 or 1 (Adam Spragg),
- Cleanup encoding pointer comparison (Nikolay Sivov),
- Small code cleanup on previous patch (Daniel Veillard)
+ Switched comment in file to UTF-8 encoding (Daniel Veillard),
+ Extend gitignore (Daniel Veillard),
+ Silent the new python test on input (Alexey Neyman),
+ Cleanup of a duplicate test (Daniel Veillard),
+ Cleanup on duplicate test expressions (Daniel Veillard),
+ Fix compiler warning after 153cf15905cf4ec080612ada6703757d10caba1e (Patrick,
+Gansterer),
+ Spec cleanups and a fix for multiarch support (Daniel Veillard),
+ Silence a clang warning (Daniel Veillard),
+ Cleanup the Copyright to be pure MIT Licence wording (Daniel Veillard),
+ rand_seed should be static in dict.c (Wouter Van Rooy),
+ Fix typos in parser comments (Jan Pokorný)
</changes>
diff --git a/doc/news.html b/doc/news.html
index 1e7da8e..5c03ba3 100644
--- a/doc/news.html
+++ b/doc/news.html
@@ -7,13 +7,417 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Releases</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Releases</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Items not finished and worked on, get in touch with the list if you want
-to help those</p><ul><li>More testing on RelaxNG</li>
- <li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML
- Schemas</a></li>
-</ul><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</p><p>Here is the list of public releases:</p><h3>2.8.0: May 23 2012</h3><ul><li>Features:
-- add lzma compression support (Anders F Bjorklund)
+</style><title>Releases</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Releases</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
+to the <a href="http://git.gnome.org/browse/libxml2/">GIT</a> code base.</p><p>Here is the list of public releases:</p><h3>2.9.2: Oct 16 2014</h3><ul>
+ <li>Security:<br />
+ Fix for CVE-2014-3660 billion laugh variant (Daniel Veillard),<br />
+ CVE-2014-0191 Do not fetch external parameter entities (Daniel Veillard)<br />
+ </li>
+
+ <li>Bug Fixes:<br />
+ fix memory leak xml header encoding field with XML_PARSE_IGNORE_ENC (Bart De Schuymer),<br />
+ xmlmemory: handle realloc properly (Yegor Yefremov),<br />
+ Python generator bug raised by the const change (Daniel Veillard),<br />
+ Windows Critical sections not released correctly (Daniel Veillard),<br />
+ Parser error on repeated recursive entity expansion containing &amp;lt; (Daniel Veillard),<br />
+ xpointer : fixing Null Pointers (Gaurav Gupta),<br />
+ Remove Unnecessary Null check in xpointer.c (Gaurav Gupta),<br />
+ parser bug on misformed namespace attributes (Dennis Filder),<br />
+ Pointer dereferenced before null check (Daniel Veillard),<br />
+ Leak of struct addrinfo in xmlNanoFTPConnect() (Gaurav Gupta),<br />
+ Possible overflow in HTMLParser.c (Daniel Veillard),<br />
+ python/tests/sync.py assumes Python dictionaries are ordered (John Beck),<br />
+ Fix Enum check and missing break (Gaurav Gupta),<br />
+ xmlIO: Handle error returns from dup() (Philip Withnall),<br />
+ Fix a problem properly saving URIs (Daniel Veillard),<br />
+ wrong error column in structured error when parsing attribute values (Juergen Keil),<br />
+ wrong error column in structured error when skipping whitespace in xml decl (Juergen Keil),<br />
+ no error column in structured error handler for xml schema validation errors (Juergen Keil),<br />
+ Couple of Missing Null checks (Gaurav Gupta),<br />
+ Add couple of missing Null checks (Daniel Veillard),<br />
+ xmlschemastypes: Fix potential array overflow (Philip Withnall),<br />
+ runtest: Fix a memory leak on parse failure (Philip Withnall),<br />
+ xmlIO: Fix an FD leak on gzdopen() failure (Philip Withnall),<br />
+ xmlcatalog: Fix a memory leak on quit (Philip Withnall),<br />
+ HTMLparser: Correctly initialise a stack allocated structure (Philip Withnall),<br />
+ Check for tmon in _xmlSchemaDateAdd() is incorrect (David Kilzer),<br />
+ Avoid Possible Null Pointer in trio.c (Gaurav Gupta),<br />
+ Fix processing in SAX2 in case of an allocation failure (Daniel Veillard),<br />
+ XML Shell command "cd" does not handle "/" at end of path (Daniel Veillard),<br />
+ Fix various Missing Null checks (Gaurav Gupta),<br />
+ Fix a potential NULL dereference (Daniel Veillard),<br />
+ Add a couple of misisng check in xmlRelaxNGCleanupTree (Gaurav Gupta),<br />
+ Add a missing argument check (Gaurav Gupta),<br />
+ Adding a check in case of allocation error (Gaurav Gupta),<br />
+ xmlSaveUri() incorrectly recomposes URIs with rootless paths (Dennis Filder),<br />
+ Adding some missing NULL checks (Gaurav),<br />
+ Fixes for xmlInitParserCtxt (Daniel Veillard),<br />
+ Fix regressions introduced by CVE-2014-0191 patch (Daniel Veillard),<br />
+ erroneously ignores a validation error if no error callback set (Daniel Veillard),<br />
+ xmllint was not parsing the --c14n11 flag (Sérgio Batista),<br />
+ Avoid Possible null pointer dereference in memory debug mode (Gaurav),<br />
+ Avoid Double Null Check (Gaurav),<br />
+ Restore context size and position after XPATH_OP_ARG (Nick Wellnhofer),<br />
+ Fix xmlParseInNodeContext() if node is not element (Daniel Veillard),<br />
+ Avoid a possible NULL pointer dereference (Gaurav),<br />
+ Fix xmlTextWriterWriteElement when a null content is given (Daniel Veillard),<br />
+ Fix an typo 'onrest' in htmlScriptAttributes (Daniel Veillard),<br />
+ fixing a ptotential uninitialized access (Daniel Veillard),<br />
+ Fix an fd leak in an error case (Daniel Veillard),<br />
+ Missing initialization for the catalog module (Daniel Veillard),<br />
+ Handling of XPath function arguments in error case (Nick Wellnhofer),<br />
+ Fix a couple of missing NULL checks (Gaurav),<br />
+ Avoid a possibility of dangling encoding handler (Gaurav),<br />
+ Fix HTML push parser to accept HTML_PARSE_NODEFDTD (Arnold Hendriks),<br />
+ Fix a bug loading some compressed files (Mike Alexander),<br />
+ Fix XPath node comparison bug (Gaurav),<br />
+ Type mismatch in xmlschemas.c (Gaurav),<br />
+ Type mismatch in xmlschemastypes.c (Gaurav),<br />
+ Avoid a deadcode in catalog.c (Daniel Veillard),<br />
+ run close socket on Solaris, same as we do on other platforms (Denis Pauk),<br />
+ Fix pointer dereferenced before null check (Gaurav),<br />
+ Fix a potential NULL dereference in tree code (Daniel Veillard),<br />
+ Fix potential NULL pointer dereferences in regexp code (Gaurav),<br />
+ xmllint --pretty crashed without following numeric argument (Tim Galeckas),<br />
+ Fix XPath expressions of the form '@ns:*' (Nick Wellnhofer),<br />
+ Fix XPath '//' optimization with predicates (Nick Wellnhofer),<br />
+ Clear up a potential NULL dereference (Daniel Veillard),<br />
+ Fix a possible NULL dereference (Gaurav),<br />
+ Avoid crash if allocation fails (Daniel Veillard),<br />
+ Remove occasional leading space in XPath number formatting (Daniel Veillard),<br />
+ Fix handling of mmap errors (Daniel Veillard),<br />
+ Catch malloc error and exit accordingly (Daniel Veillard),<br />
+ missing else in xlink.c (Ami Fischman),<br />
+ Fix a parsing bug on non-ascii element and CR/LF usage (Daniel Veillard),<br />
+ Fix a regression in xmlGetDocCompressMode() (Daniel Veillard),<br />
+ properly quote the namespace uris written out during c14n (Aleksey Sanin),<br />
+ Remove premature XInclude check on URI being relative (Alexey Neyman),<br />
+ Fix missing break on last() function for attributes (dcb),<br />
+ Do not URI escape in server side includes (Romain Bondue),<br />
+ Fix an error in xmlCleanupParser (Alexander Pastukhov)<br />
+ </li>
+
+ <li>Documentation:<br />
+ typo in error messages "colon are forbidden from..." (Daniel Veillard),<br />
+ Fix a link to James SAX documentation old page (Daniel Veillard),<br />
+ Fix typos in relaxng.c (Jan Pokorný),<br />
+ Fix a doc typo (Daniel Veillard),<br />
+ Fix typos in {tree,xpath}.c (errror) (Jan Pokorný),<br />
+ Add limitations about encoding conversion (Daniel Veillard),<br />
+ Fix typos in xmlschemas{,types}.c (Jan Pokorný),<br />
+ Fix incorrect spelling entites-&gt;entities (Jan Pokorný),<br />
+ Forgot to document 2.9.1 release, regenerate docs (Daniel Veillard)<br />
+ </li>
+
+ <li>Portability:<br />
+ AC_CONFIG_FILES and executable bit (Roumen Petrov),<br />
+ remove HAVE_CONFIG_H dependency in testlimits.c (Roumen Petrov),<br />
+ fix some tabs mixing incompatible with python3 (Roumen Petrov),<br />
+ Visual Studio 14 CTP defines snprintf() (Francis Dupont),<br />
+ OS400: do not try to copy unexisting doc files (Patrick Monnerat),<br />
+ OS400: use either configure.ac or configure.in. (Patrick Monnerat),<br />
+ os400: make-src.sh: create physical file with target CCSID (Patrick Monnerat),<br />
+ OS400: Add some more C macros equivalent procedures. (Patrick Monnerat),<br />
+ OS400: use C macros to implement equivalent RPG support procedures. (Patrick Monnerat),<br />
+ OS400: implement XPath macros as procedures for ILE/RPG support. (Patrick Monnerat),<br />
+ OS400: include in distribution tarball. (Patrick Monnerat),<br />
+ OS400: Add README: compilation directives and OS/400 specific stuff. (Patrick Monnerat),<br />
+ OS400: Add compilation scripts. (Patrick Monnerat),<br />
+ OS400: ILE RPG language header files. (Patrick Monnerat),<br />
+ OS400: implement some macros as functions for ILE/RPG language support (that as no macros). (Patrick Monnerat),<br />
+ OS400: UTF8&lt;--&gt;EBCDIC wrappers for system and external library calls (Patrick Monnerat),<br />
+ OS400: Easy character transcoding support (Patrick Monnerat),<br />
+ OS400: iconv functions compatibility wrappers and table builder. (Patrick Monnerat),<br />
+ OS400: create architecture directory. Implement dlfcn emulation. (Patrick Monnerat),<br />
+ Fix building when configuring without xpath and xptr (Daniel Veillard),<br />
+ configure: Add --with-python-install-dir (Jonas Eriksson),<br />
+ Fix compilation with minimum and xinclude. (Nicolas Le Cam),<br />
+ Compile out use of xmlValidateNCName() when not available. (Nicolas Le Cam),<br />
+ Fix compilation with minimum and schematron. (Nicolas Le Cam),<br />
+ Legacy needs xmlSAX2StartElement() and xmlSAX2EndElement(). (Nicolas Le Cam),<br />
+ Don't use xmlValidateName() when not available. (Nicolas Le Cam),<br />
+ Fix a portability issue on Windows (Longstreth Jon),<br />
+ Various portability patches for OpenVMS (Jacob (Jouk) Jansen),<br />
+ Use specific macros for portability to OS/400 (Patrick Monnerat),<br />
+ Add macros needed for OS/400 portability (Patrick Monnerat),<br />
+ Portability patch for fopen on OS/400 (Patrick Monnerat),<br />
+ Portability fixes for OS/400 (Patrick Monnerat),<br />
+ Improve va_list portability (Patrick Monnerat),<br />
+ Portability fix (Patrick Monnerat),<br />
+ Portability fix (Patrick Monnerat),<br />
+ Generic portability fix (Patrick Monnerat),<br />
+ Shortening lines in headers (Patrick Monnerat),<br />
+ build: Use pkg-config to find liblzma in preference to AC_CHECK_LIB (Philip Withnall),<br />
+ build: Add @LZMA_LIBS@ to libxml’s pkg-config files (Philip Withnall),<br />
+ fix some tabs mixing incompatible with python3 (Daniel Veillard),<br />
+ add additional defines checks for support "./configure --with-minimum" (Denis Pauk),<br />
+ Another round of fixes for older versions of Python (Arfrever Frehtes Taifersar Arahesis),<br />
+ python: fix drv_libxml2.py for python3 compatibility (Alexandre Rostovtsev),<br />
+ python: Fix compiler warnings when building python3 bindings (Armin K),<br />
+ Fix for compilation with python 2.6.8 (Petr Sumbera)<br />
+ </li>
+
+ <li>Improvements:<br />
+ win32/libxml2.def.src after rebuild in doc (Roumen Petrov),<br />
+ elfgcchack.h: more legacy needs xmlSAX2StartElement() and xmlSAX2EndElement() (Roumen Petrov),<br />
+ elfgcchack.h: add xmlXPathNodeEval and xmlXPathSetContextNode (Roumen Petrov),<br />
+ Provide cmake module (Samuel Martin),<br />
+ Fix a couple of issues raised by make dist (Daniel Veillard),<br />
+ Fix and add const qualifiers (Kurt Roeckx),<br />
+ Preparing for upcoming release of 2.9.2 (Daniel Veillard),<br />
+ Fix zlib and lzma libraries check via command line (Dmitriy),<br />
+ wrong error column in structured error when parsing end tag (Juergen Keil),<br />
+ doc/news.html: small update to avoid line join while generating NEWS. (Patrick Monnerat),<br />
+ Add methods for python3 iterator (Ron Angeles),<br />
+ Support element node traversal in document fragments. (Kyle VanderBeek),<br />
+ xmlNodeSetName: Allow setting the name to a substring of the currently set name (Tristan Van Berkom),<br />
+ Added macros for argument casts (Eric Zurcher),<br />
+ adding init calls to xml and html Read parsing entry points (Daniel Veillard),<br />
+ Get rid of 'REPLACEMENT CHARACTER' Unicode chars in xmlschemas.c (Jan Pokorný),<br />
+ Implement choice for name classes on attributes (Shaun McCance),<br />
+ Two small namespace tweaks (Daniel Veillard),<br />
+ xmllint --memory should fail on empty files (Daniel Veillard),<br />
+ Cast encoding name to char pointer to match arg type (Nikolay Sivov)<br />
+ </li>
+
+ <li>Cleanups:<br />
+ Removal of old configure.in (Daniel Veillard),<br />
+ Unreachable code in tree.c (Gaurav Gupta),<br />
+ Remove a couple of dead conditions (Gaurav Gupta),<br />
+ Avoid some dead code and cleanup in relaxng.c (Gaurav),<br />
+ Drop not needed checks (Denis Pauk),<br />
+ Fix a wrong test (Daniel Veillard)<br />
+ </li>
+</ul><h3>2.9.1: Apr 19 2013</h3><ul>
+ <li> Features:<br />
+ Support for Python3 (Daniel Veillard),<br />
+ Add xmlXPathSetContextNode and xmlXPathNodeEval (Alex Bligh)<br />
+ </li>
+
+ <li> Documentation:<br />
+ Add documentation for xmllint --xpath (Daniel Veillard),<br />
+ Fix the URL of the SAX documentation from James (Daniel Veillard),<br />
+ Fix spelling of "length". (Michael Wood)<br />
+ </li>
+
+ <li> Portability:<br />
+ Fix python bindings with versions older than 2.7 (Daniel Veillard),<br />
+ rebuild docs:Makefile.am (Roumen Petrov),<br />
+ elfgcchack.h after rebuild in doc (Roumen Petrov),<br />
+ elfgcchack for buf module (Roumen Petrov),<br />
+ Fix a uneeded and wrong extra link parameter (Daniel Veillard),<br />
+ Few cleanup patches for Windows (Denis Pauk),<br />
+ Fix rpmbuild --nocheck (Mark Salter),<br />
+ Fix for win32/configure.js and WITH_THREAD_ALLOC (Daniel Richard),<br />
+ Fix Broken multi-arch support in xml2-config (Daniel Veillard),<br />
+ Fix a portability issue for GCC &lt; 3.4.0 (Daniel Veillard),<br />
+ Windows build fixes (Daniel Richard),<br />
+ Fix a thread portability problem (Friedrich Haubensak),<br />
+ Downgrade autoconf requirement to 2.63 (Daniel Veillard)<br />
+ </li>
+
+ <li> Bug Fixes:<br />
+ Fix a linking error for python bindings (Daniel Veillard),<br />
+ Fix a couple of return without value (Jüri Aedla),<br />
+ Improve the hashing functions (Daniel Franke),<br />
+ Improve handling of xmlStopParser() (Daniel Veillard),<br />
+ Remove risk of lockup in dictionary initialization (Daniel Veillard),<br />
+ Activate detection of encoding in external subset (Daniel Veillard),<br />
+ Fix an output buffer flushing conversion bug (Mikhail Titov),<br />
+ Fix an old bug in xmlSchemaValidateOneElement (Csaba László),<br />
+ Fix configure cannot remove messages (Gilles Espinasse),<br />
+ fix schema validation in combination with xsi:nil (Daniel Veillard),<br />
+ xmlCtxtReadFile doesn't work with literal IPv6 URLs (Steve Wolf),<br />
+ Fix a few problems with setEntityLoader (Alexey Neyman),<br />
+ Detect excessive entities expansion upon replacement (Daniel Veillard),<br />
+ Fix the flushing out of raw buffers on encoding conversions (Daniel,<br />
+Veillard),<br />
+ Fix some buffer conversion issues (Daniel Veillard),<br />
+ When calling xmlNodeDump make sure we grow the buffer quickly (Daniel,<br />
+Veillard),<br />
+ Fix an error in the progressive DTD parsing code (Dan Winship),<br />
+ xmllint should not load DTD by default when using the reader (Daniel,<br />
+Veillard),<br />
+ Try IBM-037 when looking for EBCDIC handlers (Petr Sumbera),<br />
+ Fix potential out of bound access (Daniel Veillard),<br />
+ Fix large parse of file from memory (Daniel Veillard),<br />
+ Fix a bug in the nsclean option of the parser (Daniel Veillard),<br />
+ Fix a regression in 2.9.0 breaking validation while streaming (Daniel,<br />
+Veillard),<br />
+ Remove potential calls to exit() (Daniel Veillard)<br />
+ </li>
+
+ <li> Improvements:<br />
+ Regenerated API, and testapi, rebuild documentation (Daniel Veillard),<br />
+ Fix tree iterators broken by 2to3 script (Daniel Veillard),<br />
+ update all tests for Python3 and Python2 (Daniel Veillard),<br />
+ A few more fixes for python 3 affecting libxml2.py (Daniel Veillard),<br />
+ Fix compilation on Python3 (Daniel Veillard),<br />
+ Converting apibuild.py to python3 (Daniel Veillard),<br />
+ First pass at starting porting to python3 (Daniel Veillard),<br />
+ updated configure.in for python3 (Daniel Veillard),<br />
+ Add support for xpathRegisterVariable in Python (Shaun McCance),<br />
+ Added a regression tests from bug 694228 data (Daniel Veillard),<br />
+ Cache presence of '&lt;' in entities content (Daniel Veillard),<br />
+ Avoid extra processing on entities (Daniel Veillard),<br />
+ Python binding for xmlRegisterInputCallback (Alexey Neyman),<br />
+ Python bindings: DOM casts everything to xmlNode (Alexey Neyman),<br />
+ Define LIBXML_THREAD_ALLOC_ENABLED via xmlversion.h (Tim Starling),<br />
+ Adding streaming validation to runtest checks (Daniel Veillard),<br />
+ Add a --pushsmall option to xmllint (Daniel Veillard)<br />
+ </li>
+
+ <li> Cleanups:<br />
+ Switched comment in file to UTF-8 encoding (Daniel Veillard),<br />
+ Extend gitignore (Daniel Veillard),<br />
+ Silent the new python test on input (Alexey Neyman),<br />
+ Cleanup of a duplicate test (Daniel Veillard),<br />
+ Cleanup on duplicate test expressions (Daniel Veillard),<br />
+ Fix compiler warning after 153cf15905cf4ec080612ada6703757d10caba1e (Patrick,<br />
+Gansterer),<br />
+ Spec cleanups and a fix for multiarch support (Daniel Veillard),<br />
+ Silence a clang warning (Daniel Veillard),<br />
+ Cleanup the Copyright to be pure MIT Licence wording (Daniel Veillard),<br />
+ rand_seed should be static in dict.c (Wouter Van Rooy),<br />
+ Fix typos in parser comments (Jan Pokorný)<br />
+ </li>
+</ul><h3>2.9.0: Sep 11 2012</h3><ul>
+ <li> Features:<br />
+ A few new API entry points,<br />
+ More resilient push parser mode,<br />
+ A lot of portability improvement,<br />
+ Faster XPath evaluation<br />
+ </li>
+
+ <li> Documentation:<br />
+ xml2-config.1 markup error (Christian Weisgerber),<br />
+ libxml(3) manpage typo fix (John Bradshaw),<br />
+ More cleanups to the documentation part of libxml2 (Daniel Richard G)<br />
+ </li>
+
+ <li> Portability:<br />
+ Bug 676544 - fails to build with --without-sax1 (Akira TAGOH),<br />
+ fix builds not having stdint.h (Rob Richards),<br />
+ GetProcAddressA is available only on WinCE (Daniel Veillard),<br />
+ More updates and cleanups on autotools and Makefiles (Daniel Richard G),<br />
+ More changes for Win32 compilation (Eric Zurcher),<br />
+ Basic changes for Win32 builds of release 2.9.0: compile buf.c (Eric Zurcher),<br />
+ Bundles all generated files for python into the distribution (Daniel Richard G),<br />
+ Fix compiler warnings of wincecompat.c (Patrick Gansterer),<br />
+ Fix non __GNUC__ build (Patrick Gansterer),<br />
+ Fix windows unicode build (Patrick Gansterer),<br />
+ clean redefinition of {v}snprintf in C-source (Roumen Petrov),<br />
+ use xmlBuf... if DEBUG_INPUT is defined (Roumen Petrov),<br />
+ fix runtests to use pthreads support for various Unix platforms (Daniel Richard G),<br />
+ Various "make distcheck" and portability fixups 2nd part (Daniel Richard G),<br />
+ Various "make distcheck" and portability fixups (Daniel Richard G),<br />
+ Fix compilation on older Visual Studio (Daniel Veillard)<br />
+ </li>
+
+ <li> Bug Fixes:<br />
+ Change the XPath code to percolate allocation errors (Daniel Veillard),<br />
+ Fix reuse of xmlInitParser (Daniel Veillard),<br />
+ Fix potential crash on entities errors (Daniel Veillard),<br />
+ initialize var (Rob Richards),<br />
+ Fix the XPath arity check to also check the XPath stack limits (Daniel Veillard),<br />
+ Fix problem with specific and generic error handlers (Pietro Cerutti),<br />
+ Avoid a potential infinite recursion (Daniel Veillard),<br />
+ Fix an XSD error when generating internal automata (Daniel Veillard),<br />
+ Patch for xinclude of text using multibyte characters (Vitaly Ostanin),<br />
+ Fix a segfault on XSD validation on pattern error (Daniel Veillard),<br />
+ Fix missing xmlsave.h module which was ignored in recent builds (Daniel Veillard),<br />
+ Add a missing element check (Daniel Veillard),<br />
+ Adding various checks on node type though the API (Daniel Veillard),<br />
+ Namespace nodes can't be unlinked with xmlUnlinkNode (Daniel Veillard),<br />
+ Fix make dist to include new private header files (Daniel Veillard),<br />
+ More fixups on the push parser behaviour (Daniel Veillard),<br />
+ Strengthen behaviour of the push parser in problematic situations (Daniel Veillard),<br />
+ Enforce XML_PARSER_EOF state handling through the parser (Daniel Veillard),<br />
+ Fixup limits parser (Daniel Veillard),<br />
+ Do not fetch external parsed entities (Daniel Veillard),<br />
+ Fix an error in previous commit (Aron Xu),<br />
+ Fix entities local buffers size problems (Daniel Veillard),<br />
+ Fix parser local buffers size problems (Daniel Veillard),<br />
+ Fix a failure to report xmlreader parsing failures (Daniel Veillard)<br />
+ </li>
+
+ <li> Improvements:<br />
+ Keep libxml2.syms when running "make distclean" (Daniel Veillard),<br />
+ Allow to set the quoting character of an xmlWriter (Csaba Raduly),<br />
+ Keep non-significant blanks node in HTML parser (Daniel Veillard),<br />
+ Add a forbidden variable error number and message to XPath (Daniel Veillard),<br />
+ Support long path names on WNT (Michael Stahl),<br />
+ Improve HTML escaping of attribute on output (Daniel Veillard),<br />
+ Handle ICU_LIBS as LIBADD, not LDFLAGS to prevent linking errors (Arfrever Frehtes Taifersar Arahesis),<br />
+ Switching XPath node sorting to Timsort (Vojtech Fried),<br />
+ Optimizing '//' in XPath expressions (Nick Wellnhofer),<br />
+ Expose xmlBufShrink in the public tree API (Daniel Veillard),<br />
+ Visible HTML elements close the head tag (Conrad Irwin),<br />
+ Fix file and line report for XSD SAX and reader streaming validation (Daniel Veillard),<br />
+ Fix const qualifyer to definition of xmlBufferDetach (Daniel Veillard),<br />
+ minimize use of HAVE_CONFIG_H (Roumen Petrov),<br />
+ fixup regression in Various "make distcheck" and portability fixups (Roumen Petrov),<br />
+ Add support for big line numbers in error reporting (Daniel Veillard),<br />
+ Avoid using xmlBuffer for serialization (Daniel Veillard),<br />
+ Improve compatibility between xmlBuf and xmlBuffer (Daniel Veillard),<br />
+ Provide new accessors for xmlOutputBuffer (Daniel Veillard),<br />
+ Improvements for old buffer compatibility (Daniel Veillard),<br />
+ Expand the limit test program (Daniel Veillard),<br />
+ Improve error reporting on parser errors (Daniel Veillard),<br />
+ Implement some default limits in the XPath module (Daniel Veillard),<br />
+ Introduce some default parser limits (Daniel Veillard),<br />
+ Cleanups and new limit APIs for dictionaries (Daniel Veillard),<br />
+ Fixup for buf.c (Daniel Veillard),<br />
+ Cleanup URI module memory allocation code (Daniel Veillard),<br />
+ Extend testlimits (Daniel Veillard),<br />
+ More avoid quadratic behaviour (Daniel Veillard),<br />
+ Impose a reasonable limit on PI size (Daniel Veillard),<br />
+ first version of testlimits new test (Daniel Veillard),<br />
+ Avoid quadratic behaviour in some push parsing cases (Daniel Veillard),<br />
+ Impose a reasonable limit on comment size (Daniel Veillard),<br />
+ Impose a reasonable limit on attribute size (Daniel Veillard),<br />
+ Harden the buffer code and make it more compatible (Daniel Veillard),<br />
+ More cleanups for input/buffers code (Daniel Veillard),<br />
+ Cleanup function xmlBufResetInput(),<br /> to set input from Buffer (Daniel Veillard)
+ Swicth the test program for characters to new input buffers (Daniel Veillard),<br />
+ Convert the HTML tree module to the new buffers (Daniel Veillard),<br />
+ Convert of the HTML parser to new input buffers (Daniel Veillard),<br />
+ Convert the writer to new output buffer and save APIs (Daniel Veillard),<br />
+ Convert XMLReader to the new input buffers (Daniel Veillard),<br />
+ New saving functions using xmlBuf and conversion (Daniel Veillard),<br />
+ Provide new xmlBuf based saving functions (Daniel Veillard),<br />
+ Convert XInclude to the new input buffers (Daniel Veillard),<br />
+ Convert catalog code to the new input buffers (Daniel Veillard),<br />
+ Convert C14N to the new Input buffer (Daniel Veillard),<br />
+ Convert xmlIO.c to the new input and output buffers (Daniel Veillard),<br />
+ Convert XML parser to the new input buffers (Daniel Veillard),<br />
+ Incompatible change to the Input and Output buffers (Daniel Veillard),<br />
+ Adding new encoding function to deal with the new structures (Daniel Veillard),<br />
+ Convert XPath to xmlBuf (Daniel Veillard),<br />
+ Adding a new buf module for buffers (Daniel Veillard),<br />
+ Memory error within SAX2 reuse common framework (Daniel Veillard),<br />
+ Fix xmllint --xpath node initialization (Daniel Veillard)<br />
+ </li>
+
+ <li> Cleanups:<br />
+ Various cleanups to avoid compiler warnings (Daniel Veillard),<br />
+ Big space and tab cleanup (Daniel Veillard),<br />
+ Followup to LibXML2 docs/examples cleanup patch (Daniel Veillard),<br />
+ Second round of cleanups for LibXML2 docs/examples (Daniel Richard),<br />
+ Remove all .cvsignore as they are not used anymore (Daniel Veillard),<br />
+ Fix a Timsort function helper comment (Daniel Veillard),<br />
+ Small cleanup for valgrind target (Daniel Veillard),<br />
+ Patch for portability of latin characters in C files (Daniel Veillard),<br />
+ Cleanup some of the parser code (Daniel Veillard),<br />
+ Fix a variable name in comment (Daniel Veillard),<br />
+ Regenerated testapi.c (Daniel Veillard),<br />
+ Regenerating docs and API files (Daniel Veillard),<br />
+ Small cleanup of unused variables in test (Daniel Veillard),<br />
+ Expand .gitignore with more files (Daniel Veillard)<br />
+ </li>
+</ul><h3>2.8.0: May 23 2012</h3><ul>
+ <li>Features:
+ add lzma compression support (Anders F Bjorklund)
</li>
<li>Documentation:
@@ -151,7 +555,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
configure: acconfig.h is deprecated since autoconf-2.50 (Stefan Kost),
xpath: remove unused variable (Stefan Kost)
</li>
-</ul><h3>2.7.8: Nov 4 2010</h3><ul><li> Features:
+</ul><h3>2.7.8: Nov 4 2010</h3><ul>
+ <li> Features:
480323 add code to plug in ICU converters by default (Giuseppe Iuculano),
Add xmlSaveOption XML_SAVE_WSNONSIG (Adam Spragg)
</li>
@@ -202,7 +607,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
Cleanup encoding pointer comparison (Nikolay Sivov),
Small code cleanup on previous patch (Daniel Veillard)
</li>
-</ul><h3>2.7.7: Mar 15 2010</h3><ul><li> Improvements:
+</ul><h3>2.7.7: Mar 15 2010</h3><ul>
+ <li> Improvements:
Adding a --xpath option to xmllint (Daniel Veillard),
Make HTML parser non-recursive (Eugene Pimenov)
</li>
@@ -245,12 +651,14 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li> Cleanups:
Cleanup a couple of weirdness in HTML parser (Eugene Pimenov)
</li>
-</ul><h3>2.7.6: Oct 6 2009</h3><ul><li> Bug Fixes:
+</ul><h3>2.7.6: Oct 6 2009</h3><ul>
+ <li> Bug Fixes:
Restore thread support in default configuration (Andrew W. Nosenko),
URI with no path parsing problem (Daniel Veillard),
Minor patch for conditional defines in threads.c (Eric Zurcher)
</li>
-</ul><h3>2.7.5: Sep 24 2009</h3><ul><li> Bug Fixes:
+</ul><h3>2.7.5: Sep 24 2009</h3><ul>
+ <li> Bug Fixes:
Restore behavior of --with-threads without argument (Andrew W. Nosenko),
Fix memory leak when doc is NULL (Rob Richards),
595792 fixing a RelaxNG bug introduced in 2.7.4 (Daniel Veillard),
@@ -262,7 +670,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li> Cleanup:
Adding symbols.xml to EXTRA_DIST (Daniel Veillard)
</li>
-</ul><h3>2.7.4: Sep 10 2009</h3><ul><li>Improvements:
+</ul><h3>2.7.4: Sep 10 2009</h3><ul>
+ <li>Improvements:
Switch to GIT (GNOME),
Add symbol versioning to libxml2 shared libs (Daniel Veillard)
</li>
@@ -382,7 +791,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
570806 changed include of config.h (William M. Brack),
cleanups and error reports when xmlTextWriterVSprintf fails (Jinmei Tatuya)
</li>
-</ul><h3>2.7.3: Jan 18 2009</h3><ul><li>Build fix: fix build when HTML support is not included.</li>
+</ul><h3>2.7.3: Jan 18 2009</h3><ul>
+ <li>Build fix: fix build when HTML support is not included.</li>
<li>Bug fixes: avoid memory overflow in gigantic text nodes,
indentation problem on the writed (Rob Richards),
xmlAddChildList pointer problem (Rob Richards and Kevin Milburn),
@@ -394,19 +804,22 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
APIs, add a parser option to enable pre 2.7 SAX behavior (Rob Richards),
add gcc malloc checking (Marcus Meissner), add gcc printf like functions
parameters checking (Marcus Meissner).</li>
-</ul><h3>2.7.2: Oct 3 2008</h3><ul><li>Portability fix: fix solaris compilation problem, fix compilation
+</ul><h3>2.7.2: Oct 3 2008</h3><ul>
+ <li>Portability fix: fix solaris compilation problem, fix compilation
if XPath is not configured in</li>
<li>Bug fixes: nasty entity bug introduced in 2.7.0, restore old behaviour
when saving an HTML doc with an xml dump function, HTML UTF-8 parsing
bug, fix reader custom error handlers (Riccardo Scussat)
</li><li>Improvement: xmlSave options for more flexibility to save as
XML/HTML/XHTML, handle leading BOM in HTML documents</li>
-</ul><h3>2.7.1: Sep 1 2008</h3><ul><li>Portability fix: Borland C fix (Moritz Both)</li>
+</ul><h3>2.7.1: Sep 1 2008</h3><ul>
+ <li>Portability fix: Borland C fix (Moritz Both)</li>
<li>Bug fixes: python serialization wrappers, XPath QName corner
case handking and leaks (Martin)</li>
<li>Improvement: extend the xmlSave to handle HTML documents and trees</li>
<li>Cleanup: python serialization wrappers</li>
-</ul><h3>2.7.0: Aug 30 2008</h3><ul><li>Documentation: switch ChangeLog to UTF-8, improve mutithreads and
+</ul><h3>2.7.0: Aug 30 2008</h3><ul>
+ <li>Documentation: switch ChangeLog to UTF-8, improve mutithreads and
xmlParserCleanup docs</li>
<li>Portability fixes: Older Win32 platforms (Rob Richards), MSVC
porting fix (Rob Richards), Mac OS X regression tests (Sven Herzberg),
@@ -430,7 +843,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
regression test tools and code coverage display, better algorithms
to detect various versions of the billion laughts attacks, make
arbitrary parser limits avoidable as a parser option</li>
-</ul><h3>2.6.32: Apr 8 2008</h3><ul><li>Documentation: returning heap memory to kernel (Wolfram Sang),
+</ul><h3>2.6.32: Apr 8 2008</h3><ul>
+ <li>Documentation: returning heap memory to kernel (Wolfram Sang),
trying to clarify xmlCleanupParser() use, xmlXPathContext improvement
(Jack Jansen), improve the *Recover* functions documentation,
XmlNodeType doc link fix (Martijn Arts)</li>
@@ -463,7 +877,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
(Ashwin), VMS makefile fix (Tycho Hilhorst)</li>
<li>improvements: better plug of schematron in the normal error handling
(Tobias Minich)</li>
-</ul><h3>2.6.31: Jan 11 2008</h3><ul><li>Security fix: missing of checks in UTF-8 parsing</li>
+</ul><h3>2.6.31: Jan 11 2008</h3><ul>
+ <li>Security fix: missing of checks in UTF-8 parsing</li>
<li>Bug fixes: regexp bug, dump attribute from XHTML document, fix
xmlFree(NULL) to not crash in debug mode, Schematron parsing crash
(Rob Richards), global lock free on Windows (Marc-Antoine Ruel),
@@ -480,7 +895,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
some make distcheck realted fixes (John Carr)</li>
<li>Improvements: HTTP Header: includes port number (William Brack),
testURI --debug option, </li>
-</ul><h3>2.6.30: Aug 23 2007</h3><ul><li>Portability: Solaris crash on error handling, windows path fixes
+</ul><h3>2.6.30: Aug 23 2007</h3><ul>
+ <li>Portability: Solaris crash on error handling, windows path fixes
(Roland Schwarz and Rob Richards), mingw build (Roland Schwarz)</li>
<li>Bugfixes: xmlXPathNodeSetSort problem (William Brack), leak when
reusing a writer for a new document (Dodji Seketeli), Schemas
@@ -490,7 +906,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
generation for complex regexp counts problems, Schemas IDC import
problems (Frank Gross), xpath predicate evailation error handling
(William Brack)</li>
-</ul><h3>2.6.29: Jun 12 2007</h3><ul><li>Portability: patches from Andreas Stricke for WinCEi,
+</ul><h3>2.6.29: Jun 12 2007</h3><ul>
+ <li>Portability: patches from Andreas Stricke for WinCEi,
fix compilation warnings (William Brack), avoid warnings on Apple OS/X
(Wendy Doyle and Mark Rowe), Windows compilation and threading
improvements (Rob Richards), compilation against old Python versions,
@@ -513,7 +930,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
the name, IDness of name in HTML (Dagfinn I. Mannsåker) </li>
<li>Improvement: keep URI query parts in raw form (Richard Jones),
embed tag support in HTML (Michael Day) </li>
-</ul><h3>2.6.28: Apr 17 2007</h3><ul><li>Documentation: comment fixes (Markus Keim), xpath comments fixes too
+</ul><h3>2.6.28: Apr 17 2007</h3><ul>
+ <li>Documentation: comment fixes (Markus Keim), xpath comments fixes too
(James Dennett)</li>
<li>Bug fixes: XPath bug (William Brack), HTML parser autoclose stack usage
(Usamah Malik), various regexp bug fixes (DV and William), path conversion
@@ -536,7 +954,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
(Michael Day), catalog patch for Win32 (Christian Ehrlicher),
Windows CE fixes (Andreas Stricke)</li>
<li>Various CVS to SVN infrastructure changes</li>
-</ul><h3>2.6.27: Oct 25 2006</h3><ul><li>Portability fixes: file names on windows (Roland Schwingel,
+</ul><h3>2.6.27: Oct 25 2006</h3><ul>
+ <li>Portability fixes: file names on windows (Roland Schwingel,
Emelyanov Alexey), windows compile fixup (Rob Richards),
AIX iconv() is apparently case sensitive</li>
<li>improvements: Python XPath types mapping (Nic Ferrier), XPath optimization
@@ -586,7 +1005,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
fix xmlXPathCastToString documentation, improve man pages for
xmllitn and xmlcatalog (Daniel Leidert), fixed comments of a few
functions</li>
-</ul><h3>2.6.26: Jun 6 2006</h3><ul><li>portability fixes: Python detection (Joseph Sacco), compilation
+</ul><h3>2.6.26: Jun 6 2006</h3><ul>
+ <li>portability fixes: Python detection (Joseph Sacco), compilation
error(William Brack and Graham Bennett), LynxOS patch (Olli Savia)</li>
<li>bug fixes: encoding buffer problem, mix of code and data in
xmlIO.c(Kjartan Maraas), entities in XSD validation (Kasimier Buchcik),
@@ -596,7 +1016,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
selfdocument.</li>
<li>improvements: Xpath optimizations (Kasimier), XPath object
cache(Kasimier)</li>
-</ul><h3>2.6.25: Jun 6 2006:</h3><p>Do not use or package 2.6.25</p><h3>2.6.24: Apr 28 2006</h3><ul><li>Portability fixes: configure on Windows, testapi compile on windows
+</ul><h3>2.6.25: Jun 6 2006:</h3><p>Do not use or package 2.6.25</p><h3>2.6.24: Apr 28 2006</h3><ul>
+ <li>Portability fixes: configure on Windows, testapi compile on windows
(Kasimier Buchcik, venkat naidu), Borland C++ 6 compile (Eric Zurcher),
HP-UX compiler workaround (Rick Jones), xml2-config bugfix, gcc-4.1
cleanups, Python detection scheme (Joseph Sacco), UTF-8 file paths on
@@ -620,7 +1041,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
line break in writer after end PI (Jason Viers). </li>
<li>Documentation: man pages updates and cleanups (Daniel Leidert).</li>
<li>New features: Relax NG structure error handlers.</li>
-</ul><h3>2.6.23: Jan 5 2006</h3><ul><li>portability fixes: Windows (Rob Richards), getaddrinfo on Windows
+</ul><h3>2.6.23: Jan 5 2006</h3><ul>
+ <li>portability fixes: Windows (Rob Richards), getaddrinfo on Windows
(Kolja Nowak, Rob Richards), icc warnings (Kjartan Maraas),
--with-minimum compilation fixes (William Brack), error case handling fix
on Solaris (Albert Chin), don't use 'list' as parameter name reported by
@@ -662,7 +1084,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
htmlDocDumpMemoryFormat. (Rob Richards),</li>
<li>documentation: typo (Michael Day), libxml man page (Albert Chin), save
function to XML buffer (Geert Jansen), small doc fix (Aron Stansvik),</li>
-</ul><h3>2.6.22: Sep 12 2005</h3><ul><li>build fixes: compile without schematron (Stéphane Bidoul)</li>
+</ul><h3>2.6.22: Sep 12 2005</h3><ul>
+ <li>build fixes: compile without schematron (Stéphane Bidoul)</li>
<li>bug fixes: xmlDebugDumpNode on namespace node (Oleg Paraschenko)i,
CDATA push parser bug, xmlElemDump problem with XHTML1 doc,
XML_FEATURE_xxx clash with expat headers renamed XML_WITH_xxx, fix some
@@ -674,7 +1097,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
derive (Kasimier Buchcik).</li>
<li>documentation: generation of gtk-doc like docs, integration with
devhelp.</li>
-</ul><h3>2.6.21: Sep 4 2005</h3><ul><li>build fixes: Cygwin portability fixes (Gerrit P. Haase), calling
+</ul><h3>2.6.21: Sep 4 2005</h3><ul>
+ <li>build fixes: Cygwin portability fixes (Gerrit P. Haase), calling
convention problems on Windows (Marcus Boerger), cleanups based on Linus'
sparse tool, update of win32/configure.js (Rob Richards), remove warnings
on Windows(Marcus Boerger), compilation without SAX1, detection of the
@@ -710,7 +1134,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
yet, more lax mode for the HTML parser, parser XML_PARSE_COMPACT option
for text nodes allocation.</li>
<li>documentation: xmllint man page had --nonet duplicated</li>
-</ul><h3>2.6.20: Jul 10 2005</h3><ul><li>build fixes: Windows build (Rob Richards), Mingw compilation (Igor
+</ul><h3>2.6.20: Jul 10 2005</h3><ul>
+ <li>build fixes: Windows build (Rob Richards), Mingw compilation (Igor
Zlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier and
andriy@google.com), use gcc weak references to pthread to avoid the
pthread dependancy on Linux, compilation problem (Steve Nairn), compiling
@@ -745,7 +1170,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
standalone testing tools (Kasimier and William),
xmlSchemaValidateStream() xmlSchemaSAXPlug() and xmlSchemaSAXUnplug() SAX
Schemas APIs, Schemas xmlReader support.</li>
-</ul><h3>2.6.19: Apr 02 2005</h3><ul><li>build fixes: drop .la from RPMs, --with-minimum build fix (William
+</ul><h3>2.6.19: Apr 02 2005</h3><ul>
+ <li>build fixes: drop .la from RPMs, --with-minimum build fix (William
Brack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks with AIX
5.3 compiler, fixed elfgcchack.h generation and PLT reduction code on
Linux/ELF/gcc4</li>
@@ -763,7 +1189,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>improvements: lot of work on Schemas by Kasimier Buchcik on facets
checking and also mixed handling.</li>
<li></li>
-</ul><h3>2.6.18: Mar 13 2005</h3><ul><li>build fixes: warnings (Peter Breitenlohner), testapi.c generation,
+</ul><h3>2.6.18: Mar 13 2005</h3><ul>
+ <li>build fixes: warnings (Peter Breitenlohner), testapi.c generation,
Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed),
some gcc4 fixes, HP-UX portability fixes (Rick Jones).</li>
<li>bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and
@@ -786,7 +1213,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
values handling (Kasimier), add xmlTextReaderByteConsumed (Aron
Stansvik),</li>
<li>Documentation: Wiki support (Joel Reed)</li>
-</ul><h3>2.6.17: Jan 16 2005</h3><ul><li>build fixes: Windows, warnings removal (William Brack),
+</ul><h3>2.6.17: Jan 16 2005</h3><ul>
+ <li>build fixes: Windows, warnings removal (William Brack),
maintainer-clean dependency(William), build in a different directory
(William), fixing --with-minimum configure build (William), BeOS build
(Marcin Konicki), Python-2.4 detection (William), compilation on AIX (Dan
@@ -810,7 +1238,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
(Phil Shafer)</li>
<li>documentation: site improvement (John Fleck), FAQ entries
(William).</li>
-</ul><h3>2.6.16: Nov 10 2004</h3><ul><li>general hardening and bug fixing crossing all the API based on new
+</ul><h3>2.6.16: Nov 10 2004</h3><ul>
+ <li>general hardening and bug fixing crossing all the API based on new
automated regression testing</li>
<li>build fix: IPv6 build and test on AIX (Dodji Seketeli)</li>
<li>bug fixes: problem with XML::Libxml reported by Petr Pajas, encoding
@@ -820,7 +1249,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
were updated.</li>
<li>improvements: DTD validation APIs provided at the Python level (Brent
Hendricks)</li>
-</ul><h3>2.6.15: Oct 27 2004</h3><ul><li>security fixes on the nanoftp and nanohttp modules</li>
+</ul><h3>2.6.15: Oct 27 2004</h3><ul>
+ <li>security fixes on the nanoftp and nanohttp modules</li>
<li>build fixes: xmllint detection bug in configure, building outside the
source tree (Thomas Fitzsimmons)</li>
<li>bug fixes: HTML parser on broken ASCII chars in names (William), Python
@@ -835,7 +1265,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>improvements: better XInclude error reports (William), tree debugging
module and tests, convenience functions at the Reader API (Graham
Bennett), add support for PI in the HTML parser.</li>
-</ul><h3>2.6.14: Sep 29 2004</h3><ul><li>build fixes: configure paths for xmllint and xsltproc, compilation
+</ul><h3>2.6.14: Sep 29 2004</h3><ul>
+ <li>build fixes: configure paths for xmllint and xsltproc, compilation
without HTML parser, compilation warning cleanups (William Brack &amp;
Malcolm Tredinnick), VMS makefile update (Craig Berry),</li>
<li>bug fixes: xmlGetUTF8Char (William Brack), QName properties (Kasimier
@@ -850,7 +1281,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
(Malcolm Tredinnick), Python libxml2 driver improvement (Malcolm
Tredinnick), Schemas support for xsi:schemaLocation,
xsi:noNamespaceSchemaLocation, xsi:type (Kasimier Buchcik)</li>
-</ul><h3>2.6.13: Aug 31 2004</h3><ul><li>build fixes: Windows and zlib (Igor Zlatkovic), -O flag with gcc,
+</ul><h3>2.6.13: Aug 31 2004</h3><ul>
+ <li>build fixes: Windows and zlib (Igor Zlatkovic), -O flag with gcc,
Solaris compiler warning, fixing RPM BuildRequires,</li>
<li>fixes: DTD loading on Windows (Igor), Schemas error reports APIs
(Kasimier Buchcik), Schemas validation crash, xmlCheckUTF8 (William Brack
@@ -860,7 +1292,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>Improvements: Schemas validity improvements (Kasimier), added --path
and --load-trace options to xmllint</li>
<li>documentation: tutorial update (John Fleck)</li>
-</ul><h3>2.6.12: Aug 22 2004</h3><ul><li>build fixes: fix --with-minimum, elfgcchack.h fixes (Peter
+</ul><h3>2.6.12: Aug 22 2004</h3><ul>
+ <li>build fixes: fix --with-minimum, elfgcchack.h fixes (Peter
Breitenlohner), perl path lookup (William), diff on Solaris (Albert
Chin), some 64bits cleanups.</li>
<li>Python: avoid a warning with 2.3 (William Brack), tab and space mixes
@@ -885,7 +1318,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
tag (William)</li>
<li>documentation: web pages fixes, validity API docs fixes (William)
schemas API fix (Eric Haszlakiewicz), xmllint man page (John Fleck)</li>
-</ul><h3>2.6.11: July 5 2004</h3><ul><li>Schemas: a lot of changes and improvements by Kasimier Buchcik for
+</ul><h3>2.6.11: July 5 2004</h3><ul>
+ <li>Schemas: a lot of changes and improvements by Kasimier Buchcik for
attributes, namespaces and simple types.</li>
<li>build fixes: --with-minimum (William Brack), some gcc cleanup
(William), --with-thread-alloc (William)</li>
@@ -912,7 +1346,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>performance: hack done with Arjan van de Ven to reduce ELF footprint
and generated code on Linux, plus use gcc runtime profiling to optimize
the code generated in the RPM packages.</li>
-</ul><h3>2.6.10: May 17 2004</h3><ul><li>Web page generated for ChangeLog</li>
+</ul><h3>2.6.10: May 17 2004</h3><ul>
+ <li>Web page generated for ChangeLog</li>
<li>build fixes: --without-html problems, make check without make all</li>
<li>portability: problem with xpath.c on Windows (MSC and Borland), memcmp
vs. strncmp on Solaris, XPath tests on Windows (Mark Vakoc), C++ do not
@@ -929,7 +1364,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
Buchcik), XInclude fallback problem (William), weird problems with DTD
(William), structured error handler callback context (William), reverse
xmlEncodeSpecialChars() behaviour back to escaping '"'</li>
-</ul><h3>2.6.9: Apr 18 2004</h3><ul><li>implement xml:id Working Draft, relaxed XPath id() checking</li>
+</ul><h3>2.6.9: Apr 18 2004</h3><ul>
+ <li>implement xml:id Working Draft, relaxed XPath id() checking</li>
<li>bugfixes: xmlCtxtReset (Brent Hendricks), line number and CDATA (Dave
Beckett), Relax-NG compilation (William Brack), Regexp patches (with
William), xmlUriEscape (Mark Vakoc), a Relax-NG notAllowed problem (with
@@ -946,7 +1382,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
example (load, xpath, modify, save), xmlCatalogDump() comments,</li>
<li>Windows: Borland C++ builder (Eric Zurcher), work around Microsoft
compiler NaN handling bug (Mark Vakoc)</li>
-</ul><h3>2.6.8: Mar 23 2004</h3><ul><li>First step of the cleanup of the serialization code and APIs</li>
+</ul><h3>2.6.8: Mar 23 2004</h3><ul>
+ <li>First step of the cleanup of the serialization code and APIs</li>
<li>XML Schemas: mixed content (Adam Dickmeiss), QName handling fixes (Adam
Dickmeiss), anyURI for "" (John Belmonte)</li>
<li>Python: Canonicalization C14N support added (Anthony Carrico)</li>
@@ -968,7 +1405,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
(Peter Breitenlohner), MingW patch (Roland Schwingel), cross-compilation
to Windows (Christophe de Vienne), --with-html-dir fixup (Julio Merino
Vidal), Windows build (Eric Zurcher)</li>
-</ul><h3>2.6.7: Feb 23 2004</h3><ul><li>documentation: tutorial updates (John Fleck), benchmark results</li>
+</ul><h3>2.6.7: Feb 23 2004</h3><ul>
+ <li>documentation: tutorial updates (John Fleck), benchmark results</li>
<li>xmlWriter: updates and fixes (Alfred Mickautsch, Lucas Brasilino)</li>
<li>XPath optimization (Petr Pajas)</li>
<li>DTD ID handling optimization</li>
@@ -978,7 +1416,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
handling NULL, trying to fix Relax-NG/Perl interface.</li>
<li>python: 2.3 compatibility, whitespace fixes (Malcolm Tredinnick)</li>
<li>Added relaxng option to xmllint --shell</li>
-</ul><h3>2.6.6: Feb 12 2004</h3><ul><li>nanohttp and nanoftp: buffer overflow error on URI parsing (Igor and
+</ul><h3>2.6.6: Feb 12 2004</h3><ul>
+ <li>nanohttp and nanoftp: buffer overflow error on URI parsing (Igor and
William) reported by Yuuichi Teranishi</li>
<li>bugfixes: make test and path issues, xmlWriter attribute serialization
(William Brack), xmlWriter indentation (William), schemas validation
@@ -1000,7 +1439,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
patch</li>
<li>Parsers: added xmlByteConsumed(ctxt) API to get the byte offest in
input.</li>
-</ul><h3>2.6.5: Jan 25 2004</h3><ul><li>Bugfixes: dictionnaries for schemas (William Brack), regexp segfault
+</ul><h3>2.6.5: Jan 25 2004</h3><ul>
+ <li>Bugfixes: dictionnaries for schemas (William Brack), regexp segfault
(William), xs:all problem (William), a number of XPointer bugfixes
(William), xmllint error go to stderr, DTD validation problem with
namespace, memory leak (William), SAX1 cleanup and minimal options fixes
@@ -1021,7 +1461,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>Windows: compiler patches (Mark Vakoc)</li>
<li>Parser optimizations, a few new XPath and dictionnary APIs for future
XSLT optimizations.</li>
-</ul><h3>2.6.4: Dec 24 2003</h3><ul><li>Windows build fixes (Igor Zlatkovic)</li>
+</ul><h3>2.6.4: Dec 24 2003</h3><ul>
+ <li>Windows build fixes (Igor Zlatkovic)</li>
<li>Some serious XInclude problems reported by Oleg Paraschenko and</li>
<li>Unix and Makefile packaging fixes (me, William Brack,</li>
<li>Documentation improvements (John Fleck, William Brack), example fix
@@ -1032,7 +1473,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
again (William Brack), xmlGetNodePath() generating '(null)' (William
Brack), DTD validation and namespace bug (William Brack), XML Schemas
double inclusion behaviour</li>
-</ul><h3>2.6.3: Dec 10 2003</h3><ul><li>documentation updates and cleanup (DV, William Brack, John Fleck)</li>
+</ul><h3>2.6.3: Dec 10 2003</h3><ul>
+ <li>documentation updates and cleanup (DV, William Brack, John Fleck)</li>
<li>added a repository of examples, examples from Aleksey Sanin, Dodji
Seketeli, Alfred Mickautsch</li>
<li>Windows updates: Mark Vakoc, Igor Zlatkovic, Eric Zurcher, Mingw
@@ -1056,7 +1498,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
constraints), added xmlTextReaderPreservePattern() to collect subdocument
when streaming.</li>
<li>various fixes in the structured error handling</li>
-</ul><h3>2.6.2: Nov 4 2003</h3><ul><li>XPath context unregistration fixes</li>
+</ul><h3>2.6.2: Nov 4 2003</h3><ul>
+ <li>XPath context unregistration fixes</li>
<li>text node coalescing fixes (Mark Lilback)</li>
<li>API to screate a W3C Schemas from an existing document (Steve Ball)</li>
<li>BeOS patches (Marcin 'Shard' Konicki)</li>
@@ -1076,7 +1519,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>fixed xmllint --html to use the HTML serializer on output (added
--xmlout to implement the previous behaviour of saving it using the XML
serializer)</li>
-</ul><h3>2.6.1: Oct 28 2003</h3><ul><li>Mostly bugfixes after the big 2.6.0 changes</li>
+</ul><h3>2.6.1: Oct 28 2003</h3><ul>
+ <li>Mostly bugfixes after the big 2.6.0 changes</li>
<li>Unix compilation patches: libxml.m4 (Patrick Welche), warnings cleanup
(William Brack)</li>
<li>Windows compilation patches (Joachim Bauch, Stephane Bidoul, Igor
@@ -1095,7 +1539,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>general bug fixes: mandatory encoding in text decl, serializing
Document Fragment nodes, xmlSearchNs 2.6.0 problem (Kasimier Buchcik),
XPath errors not reported, slow HTML parsing of large documents.</li>
-</ul><h3>2.6.0: Oct 20 2003</h3><ul><li>Major revision release: should be API and ABI compatible but got a lot
+</ul><h3>2.6.0: Oct 20 2003</h3><ul>
+ <li>Major revision release: should be API and ABI compatible but got a lot
of change</li>
<li>Increased the library modularity, far more options can be stripped out,
a --with-minimum configuration will weight around 160KBytes</li>
@@ -1159,9 +1604,11 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>libxml-2.0-uninstalled.pc from Malcolm Tredinnick</li>
<li>deactivated the broken docBook SGML parser code and plugged the XML
parser instead.</li>
-</ul><h3>2.5.11: Sep 9 2003</h3><p>A bugfix only release:</p><ul><li>risk of crash in Relax-NG</li>
+</ul><h3>2.5.11: Sep 9 2003</h3><p>A bugfix only release:</p><ul>
+ <li>risk of crash in Relax-NG</li>
<li>risk of crash when using multithreaded programs</li>
-</ul><h3>2.5.10: Aug 15 2003</h3><p>A bugfixes only release</p><ul><li>Windows Makefiles (William Brack)</li>
+</ul><h3>2.5.10: Aug 15 2003</h3><p>A bugfixes only release</p><ul>
+ <li>Windows Makefiles (William Brack)</li>
<li>UTF-16 support fixes (Mark Itzcovitz)</li>
<li>Makefile and portability (William Brack) automake, Linux alpha, Mingw
on Windows (Mikhail Grushinskiy)</li>
@@ -1170,7 +1617,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>XML parser performance problem reported by Grant Goodale</li>
<li>xmlSAXParseDTD() bug fix from Malcolm Tredinnick</li>
<li>and a couple other cleanup</li>
-</ul><h3>2.5.9: Aug 9 2003</h3><ul><li>bugfixes: IPv6 portability, xmlHasNsProp (Markus Keim), Windows build
+</ul><h3>2.5.9: Aug 9 2003</h3><ul>
+ <li>bugfixes: IPv6 portability, xmlHasNsProp (Markus Keim), Windows build
(Wiliam Brake, Jesse Pelton, Igor), Schemas (Peter Sobisch), threading
(Rob Richards), hexBinary type (), UTF-16 BOM (Dodji Seketeli),
xmlReader, Relax-NG schemas compilation, namespace handling, EXSLT (Sean
@@ -1186,7 +1634,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>xmlTextReader cleanup + enum for node types (Bjorn Reese)</li>
<li>general compilation/warning cleanup Solaris/HP-UX/... (William
Brack)</li>
-</ul><h3>2.5.8: Jul 6 2003</h3><ul><li>bugfixes: XPath, XInclude, file/URI mapping, UTF-16 save (Mark
+</ul><h3>2.5.8: Jul 6 2003</h3><ul>
+ <li>bugfixes: XPath, XInclude, file/URI mapping, UTF-16 save (Mark
Itzcovitz), UTF-8 checking, URI saving, error printing (William Brack),
PI related memleak, compilation without schemas or without xpath (Joerg
Schmitz-Linneweber/Garry Pennington), xmlUnlinkNode problem with DTDs,
@@ -1203,7 +1652,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
generator</li>
<li>added --nonet option to xmllint</li>
<li>documentation improvements (John Fleck)</li>
-</ul><h3>2.5.7: Apr 25 2003</h3><ul><li>Relax-NG: Compiling to regexp and streaming validation on top of the
+</ul><h3>2.5.7: Apr 25 2003</h3><ul>
+ <li>Relax-NG: Compiling to regexp and streaming validation on top of the
xmlReader interface, added to xmllint --stream</li>
<li>xmlReader: Expand(), Next() and DOM access glue, bug fixes</li>
<li>Support for large files: RGN validated a 4.5GB instance</li>
@@ -1220,7 +1670,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
xmlReader interfaces, removed excessive thread locking</li>
<li>Documentation: man page (John Fleck), xmlReader documentation</li>
<li>Python: adding binding for xmlCatalogAddLocal (Brent M Hendricks)</li>
-</ul><h3>2.5.6: Apr 1 2003</h3><ul><li>Fixed W3C XML Schemas datatype, should be compliant now except for
+</ul><h3>2.5.6: Apr 1 2003</h3><ul>
+ <li>Fixed W3C XML Schemas datatype, should be compliant now except for
binHex and base64 which are not supported yet.</li>
<li>bug fixes: non-ASCII IDs, HTML output, XInclude on large docs and
XInclude entities handling, encoding detection on external subsets, XML
@@ -1229,7 +1680,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>documentation: added --relaxng option to xmllint man page (John)</li>
<li>improved error reporting: xml:space, start/end tag mismatches, Relax NG
errors</li>
-</ul><h3>2.5.5: Mar 24 2003</h3><ul><li>Lot of fixes on the Relax NG implementation. More testing including
+</ul><h3>2.5.5: Mar 24 2003</h3><ul>
+ <li>Lot of fixes on the Relax NG implementation. More testing including
DocBook and TEI examples.</li>
<li>Increased the support for W3C XML Schemas datatype</li>
<li>Several bug fixes in the URI handling layer</li>
@@ -1237,7 +1689,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
conversion, line counting in the parser.</li>
<li>Added support for $XMLLINT_INDENT environment variable, FTP delete</li>
<li>Fixed the RPM spec file name</li>
-</ul><h3>2.5.4: Feb 20 2003</h3><ul><li>Conformance testing and lot of fixes on Relax NG and XInclude
+</ul><h3>2.5.4: Feb 20 2003</h3><ul>
+ <li>Conformance testing and lot of fixes on Relax NG and XInclude
implementation</li>
<li>Implementation of XPointer element() scheme</li>
<li>Bug fixes: XML parser, XInclude entities merge, validity checking on
@@ -1248,13 +1701,15 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>Portability: windows updates and path canonicalization (Igor)</li>
<li>A few typo fixes (Kjartan Maraas)</li>
<li>Python bindings generator fixes (Stephane Bidoul)</li>
-</ul><h3>2.5.3: Feb 10 2003</h3><ul><li>RelaxNG and XML Schemas datatypes improvements, and added a first
+</ul><h3>2.5.3: Feb 10 2003</h3><ul>
+ <li>RelaxNG and XML Schemas datatypes improvements, and added a first
version of RelaxNG Python bindings</li>
<li>Fixes: XLink (Sean Chittenden), XInclude (Sean Chittenden), API fix for
serializing namespace nodes, encoding conversion bug, XHTML1
serialization</li>
<li>Portability fixes: Windows (Igor), AMD 64bits RPM spec file</li>
-</ul><h3>2.5.2: Feb 5 2003</h3><ul><li>First implementation of RelaxNG, added --relaxng flag to xmllint</li>
+</ul><h3>2.5.2: Feb 5 2003</h3><ul>
+ <li>First implementation of RelaxNG, added --relaxng flag to xmllint</li>
<li>Schemas support now compiled in by default.</li>
<li>Bug fixes: DTD validation, namespace checking, XInclude and entities,
delegateURI in XML Catalogs, HTML parser, XML reader (Stéphane Bidoul),
@@ -1268,10 +1723,12 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>Added python bindings for XPointer, contextual error reporting
(Stéphane Bidoul)</li>
<li>URI/file escaping problems (Stefano Zacchiroli)</li>
-</ul><h3>2.5.1: Jan 8 2003</h3><ul><li>Fixes a memory leak and configuration/compilation problems in 2.5.0</li>
+</ul><h3>2.5.1: Jan 8 2003</h3><ul>
+ <li>Fixes a memory leak and configuration/compilation problems in 2.5.0</li>
<li>documentation updates (John)</li>
<li>a couple of XmlTextReader fixes</li>
-</ul><h3>2.5.0: Jan 6 2003</h3><ul><li>New <a href="xmlreader.html">XmltextReader interface</a> based on C#
+</ul><h3>2.5.0: Jan 6 2003</h3><ul>
+ <li>New <a href="xmlreader.html">XmltextReader interface</a> based on C#
API (with help of Stéphane Bidoul)</li>
<li>Windows: more exports, including the new API (Igor)</li>
<li>XInclude fallback fix</li>
@@ -1286,10 +1743,12 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>new API to optionally track node creation and deletion (Lukas
Schroeder)</li>
<li>Added documentation for the XmltextReader interface and some <a href="guidelines.html">XML guidelines</a></li>
-</ul><h3>2.4.30: Dec 12 2002</h3><ul><li>2.4.29 broke the python bindings, rereleasing</li>
+</ul><h3>2.4.30: Dec 12 2002</h3><ul>
+ <li>2.4.29 broke the python bindings, rereleasing</li>
<li>Improvement/fixes of the XML API generator, and couple of minor code
fixes.</li>
-</ul><h3>2.4.29: Dec 11 2002</h3><ul><li>Windows fixes (Igor): Windows CE port, pthread linking, python bindings
+</ul><h3>2.4.29: Dec 11 2002</h3><ul>
+ <li>Windows fixes (Igor): Windows CE port, pthread linking, python bindings
(Stéphane Bidoul), Mingw (Magnus Henoch), and export list updates</li>
<li>Fix for prev in python bindings (ERDI Gergo)</li>
<li>Fix for entities handling (Marcus Clarke)</li>
@@ -1300,14 +1759,16 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>added an TextXmlReader (C#) like API (work in progress)</li>
<li>Rewrote the API in XML generation script, includes a C parser and saves
more information needed for C# bindings</li>
-</ul><h3>2.4.28: Nov 22 2002</h3><ul><li>a couple of python binding fixes</li>
+</ul><h3>2.4.28: Nov 22 2002</h3><ul>
+ <li>a couple of python binding fixes</li>
<li>2 bug fixes in the XML push parser</li>
<li>potential memory leak removed (Martin Stoilov)</li>
<li>fix to the configure script for Unix (Dimitri Papadopoulos)</li>
<li>added encoding support for XInclude parse="text"</li>
<li>autodetection of XHTML1 and specific serialization rules added</li>
<li>nasty threading bug fixed (William Brack)</li>
-</ul><h3>2.4.27: Nov 17 2002</h3><ul><li>fixes for the Python bindings</li>
+</ul><h3>2.4.27: Nov 17 2002</h3><ul>
+ <li>fixes for the Python bindings</li>
<li>a number of bug fixes: SGML catalogs, xmlParseBalancedChunkMemory(),
HTML parser, Schemas (Charles Bozeman), document fragment support
(Christian Glahn), xmlReconciliateNs (Brian Stafford), XPointer,
@@ -1319,11 +1780,13 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
better thread support on Windows</li>
<li>cleanup of Unix Makefiles and spec file</li>
<li>Improvements to the documentation (John Fleck)</li>
-</ul><h3>2.4.26: Oct 18 2002</h3><ul><li>Patches for Windows CE port, improvements on Windows paths handling</li>
+</ul><h3>2.4.26: Oct 18 2002</h3><ul>
+ <li>Patches for Windows CE port, improvements on Windows paths handling</li>
<li>Fixes to the validation code (DTD and Schemas), xmlNodeGetPath() ,
HTML serialization, Namespace compliance, and a number of small
problems</li>
-</ul><h3>2.4.25: Sep 26 2002</h3><ul><li>A number of bug fixes: XPath, validation, Python bindings, DOM and
+</ul><h3>2.4.25: Sep 26 2002</h3><ul>
+ <li>A number of bug fixes: XPath, validation, Python bindings, DOM and
tree, xmlI/O, Html</li>
<li>Serious rewrite of XInclude</li>
<li>Made XML Schemas regexp part of the default build and APIs, small fix
@@ -1340,7 +1803,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>removal of all stderr/perror use for error reporting</li>
<li>Better error reporting: XPath and DTD validation</li>
<li>update of the trio portability layer (Bjorn Reese)</li>
-</ul><p><strong>2.4.24: Aug 22 2002</strong></p><ul><li>XPath fixes (William), xf:escape-uri() (Wesley Terpstra)</li>
+</ul><p><strong>2.4.24: Aug 22 2002</strong></p><ul>
+ <li>XPath fixes (William), xf:escape-uri() (Wesley Terpstra)</li>
<li>Python binding fixes: makefiles (William), generator, rpm build, x86-64
(fcrozat)</li>
<li>HTML &lt;style&gt; and boolean attributes serializer fixes</li>
@@ -1348,7 +1812,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>doc cleanups: Rick Jones</li>
<li>Windows compiler makefile updates: Igor and Elizabeth Barham</li>
<li>XInclude: implementation of fallback and xml:base fixup added</li>
-</ul><h3>2.4.23: July 6 2002</h3><ul><li>performances patches: Peter Jacobi</li>
+</ul><h3>2.4.23: July 6 2002</h3><ul>
+ <li>performances patches: Peter Jacobi</li>
<li>c14n fixes, testsuite and performances: Aleksey Sanin</li>
<li>added xmlDocFormatDump: Chema Celorio</li>
<li>new tutorial: John Fleck</li>
@@ -1357,7 +1822,8 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
<li>a number of bug fixes: XPath (William Brack, Richard Jinks), XML and
HTML parsers, ID lookup function</li>
<li>removal of all remaining sprintf: Aleksey Sanin</li>
-</ul><h3>2.4.22: May 27 2002</h3><ul><li>a number of bug fixes: configure scripts, base handling, parser, memory
+</ul><h3>2.4.22: May 27 2002</h3><ul>
+ <li>a number of bug fixes: configure scripts, base handling, parser, memory
usage, HTML parser, XPath, documentation (Christian Cornelssen),
indentation, URI parsing</li>
<li>Optimizations for XMLSec, fixing and making public some of the network
@@ -1369,39 +1835,48 @@ to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</
Schemas <a href="http://www.w3.org/TR/xmlschema-1/">structures</a> and <a href="http://www.w3.org/TR/xmlschema-2/">datatypes</a> code, beware, all
interfaces are likely to change, there is huge holes, it is clearly a work in
progress and don't even think of putting this code in a production system,
-it's actually not compiled in by default. The real fixes are:</p><ul><li>a couple of bugs or limitations introduced in 2.4.20</li>
+it's actually not compiled in by default. The real fixes are:
+</p><ul>
+ <li>a couple of bugs or limitations introduced in 2.4.20</li>
<li>patches for Borland C++ and MSC by Igor</li>
<li>some fixes on XPath strings and conformance patches by Richard
Jinks</li>
<li>patch from Aleksey for the ExcC14N specification</li>
<li>OSF/1 bug fix by Bjorn</li>
-</ul><h3>2.4.20: Apr 15 2002</h3><ul><li>bug fixes: file descriptor leak, XPath, HTML output, DTD validation</li>
+</ul><h3>2.4.20: Apr 15 2002</h3><ul>
+ <li>bug fixes: file descriptor leak, XPath, HTML output, DTD validation</li>
<li>XPath conformance testing by Richard Jinks</li>
<li>Portability fixes: Solaris, MPE/iX, Windows, OSF/1, python bindings,
libxml.m4</li>
-</ul><h3>2.4.19: Mar 25 2002</h3><ul><li>bug fixes: half a dozen XPath bugs, Validation, ISO-Latin to UTF8
+</ul><h3>2.4.19: Mar 25 2002</h3><ul>
+ <li>bug fixes: half a dozen XPath bugs, Validation, ISO-Latin to UTF8
encoder</li>
<li>portability fixes in the HTTP code</li>
<li>memory allocation checks using valgrind, and profiling tests</li>
<li>revamp of the Windows build and Makefiles</li>
-</ul><h3>2.4.18: Mar 18 2002</h3><ul><li>bug fixes: tree, SAX, canonicalization, validation, portability,
+</ul><h3>2.4.18: Mar 18 2002</h3><ul>
+ <li>bug fixes: tree, SAX, canonicalization, validation, portability,
XPath</li>
<li>removed the --with-buffer option it was becoming unmaintainable</li>
<li>serious cleanup of the Python makefiles</li>
<li>speedup patch to XPath very effective for DocBook stylesheets</li>
<li>Fixes for Windows build, cleanup of the documentation</li>
-</ul><h3>2.4.17: Mar 8 2002</h3><ul><li>a lot of bug fixes, including "namespace nodes have no parents in
+</ul><h3>2.4.17: Mar 8 2002</h3><ul>
+ <li>a lot of bug fixes, including "namespace nodes have no parents in
XPath"</li>
<li>fixed/improved the Python wrappers, added more examples and more
regression tests, XPath extension functions can now return node-sets</li>
<li>added the XML Canonicalization support from Aleksey Sanin</li>
-</ul><h3>2.4.16: Feb 20 2002</h3><ul><li>a lot of bug fixes, most of them were triggered by the XML Testsuite
+</ul><h3>2.4.16: Feb 20 2002</h3><ul>
+ <li>a lot of bug fixes, most of them were triggered by the XML Testsuite
from OASIS and W3C. Compliance has been significantly improved.</li>
<li>a couple of portability fixes too.</li>
-</ul><h3>2.4.15: Feb 11 2002</h3><ul><li>Fixed the Makefiles, especially the python module ones</li>
+</ul><h3>2.4.15: Feb 11 2002</h3><ul>
+ <li>Fixed the Makefiles, especially the python module ones</li>
<li>A few bug fixes and cleanup</li>
<li>Includes cleanup</li>
-</ul><h3>2.4.14: Feb 8 2002</h3><ul><li>Change of License to the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
+</ul><h3>2.4.14: Feb 8 2002</h3><ul>
+ <li>Change of License to the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
License</a> basically for integration in XFree86 codebase, and removing
confusion around the previous dual-licensing</li>
<li>added Python bindings, beta software but should already be quite
@@ -1410,35 +1885,42 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
manipulations</li>
<li>cleanup of the headers, generation of a reference API definition in
XML</li>
-</ul><h3>2.4.13: Jan 14 2002</h3><ul><li>update of the documentation: John Fleck and Charlie Bozeman</li>
+</ul><h3>2.4.13: Jan 14 2002</h3><ul>
+ <li>update of the documentation: John Fleck and Charlie Bozeman</li>
<li>cleanup of timing code from Justin Fletcher</li>
<li>fixes for Windows and initial thread support on Win32: Igor and Serguei
Narojnyi</li>
<li>Cygwin patch from Robert Collins</li>
<li>added xmlSetEntityReferenceFunc() for Keith Isdale work on xsldbg</li>
-</ul><h3>2.4.12: Dec 7 2001</h3><ul><li>a few bug fixes: thread (Gary Pennington), xmllint (Geert Kloosterman),
+</ul><h3>2.4.12: Dec 7 2001</h3><ul>
+ <li>a few bug fixes: thread (Gary Pennington), xmllint (Geert Kloosterman),
XML parser (Robin Berjon), XPointer (Danny Jamshy), I/O cleanups
(robert)</li>
<li>Eric Lavigne contributed project files for MacOS</li>
<li>some makefiles cleanups</li>
-</ul><h3>2.4.11: Nov 26 2001</h3><ul><li>fixed a couple of errors in the includes, fixed a few bugs, some code
+</ul><h3>2.4.11: Nov 26 2001</h3><ul>
+ <li>fixed a couple of errors in the includes, fixed a few bugs, some code
cleanups</li>
<li>xmllint man pages improvement by Heiko Rupp</li>
<li>updated VMS build instructions from John A Fotheringham</li>
<li>Windows Makefiles updates from Igor</li>
-</ul><h3>2.4.10: Nov 10 2001</h3><ul><li>URI escaping fix (Joel Young)</li>
+</ul><h3>2.4.10: Nov 10 2001</h3><ul>
+ <li>URI escaping fix (Joel Young)</li>
<li>added xmlGetNodePath() (for paths or XPointers generation)</li>
<li>Fixes namespace handling problems when using DTD and validation</li>
<li>improvements on xmllint: Morus Walter patches for --format and
--encode, Stefan Kost and Heiko Rupp improvements on the --shell</li>
<li>fixes for xmlcatalog linking pointed by Weiqi Gao</li>
<li>fixes to the HTML parser</li>
-</ul><h3>2.4.9: Nov 6 2001</h3><ul><li>fixes more catalog bugs</li>
+</ul><h3>2.4.9: Nov 6 2001</h3><ul>
+ <li>fixes more catalog bugs</li>
<li>avoid a compilation problem, improve xmlGetLineNo()</li>
-</ul><h3>2.4.8: Nov 4 2001</h3><ul><li>fixed SGML catalogs broken in previous release, updated xmlcatalog
+</ul><h3>2.4.8: Nov 4 2001</h3><ul>
+ <li>fixed SGML catalogs broken in previous release, updated xmlcatalog
tool</li>
<li>fixed a compile errors and some includes troubles.</li>
-</ul><h3>2.4.7: Oct 30 2001</h3><ul><li>exported some debugging interfaces</li>
+</ul><h3>2.4.7: Oct 30 2001</h3><ul>
+ <li>exported some debugging interfaces</li>
<li>serious rewrite of the catalog code</li>
<li>integrated Gary Pennington thread safety patch, added configure option
and regression tests</li>
@@ -1450,40 +1932,49 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>general bug fixes</li>
<li>updated xmllint man page by John Fleck</li>
<li>some VMS and Windows updates</li>
-</ul><h3>2.4.6: Oct 10 2001</h3><ul><li>added an updated man pages by John Fleck</li>
+</ul><h3>2.4.6: Oct 10 2001</h3><ul>
+ <li>added an updated man pages by John Fleck</li>
<li>portability and configure fixes</li>
<li>an infinite loop on the HTML parser was removed (William)</li>
<li>Windows makefile patches from Igor</li>
<li>fixed half a dozen bugs reported for libxml or libxslt</li>
<li>updated xmlcatalog to be able to modify SGML super catalogs</li>
-</ul><h3>2.4.5: Sep 14 2001</h3><ul><li>Remove a few annoying bugs in 2.4.4</li>
+</ul><h3>2.4.5: Sep 14 2001</h3><ul>
+ <li>Remove a few annoying bugs in 2.4.4</li>
<li>forces the HTML serializer to output decimal charrefs since some
version of Netscape can't handle hexadecimal ones</li>
-</ul><h3>1.8.16: Sep 14 2001</h3><ul><li>maintenance release of the old libxml1 branch, couple of bug and
+</ul><h3>1.8.16: Sep 14 2001</h3><ul>
+ <li>maintenance release of the old libxml1 branch, couple of bug and
portability fixes</li>
-</ul><h3>2.4.4: Sep 12 2001</h3><ul><li>added --convert to xmlcatalog, bug fixes and cleanups of XML
+</ul><h3>2.4.4: Sep 12 2001</h3><ul>
+ <li>added --convert to xmlcatalog, bug fixes and cleanups of XML
Catalog</li>
<li>a few bug fixes and some portability changes</li>
<li>some documentation cleanups</li>
-</ul><h3>2.4.3: Aug 23 2001</h3><ul><li>XML Catalog support see the doc</li>
+</ul><h3>2.4.3: Aug 23 2001</h3><ul>
+ <li>XML Catalog support see the doc</li>
<li>New NaN/Infinity floating point code</li>
<li>A few bug fixes</li>
-</ul><h3>2.4.2: Aug 15 2001</h3><ul><li>adds xmlLineNumbersDefault() to control line number generation</li>
+</ul><h3>2.4.2: Aug 15 2001</h3><ul>
+ <li>adds xmlLineNumbersDefault() to control line number generation</li>
<li>lot of bug fixes</li>
<li>the Microsoft MSC projects files should now be up to date</li>
<li>inheritance of namespaces from DTD defaulted attributes</li>
<li>fixes a serious potential security bug</li>
<li>added a --format option to xmllint</li>
-</ul><h3>2.4.1: July 24 2001</h3><ul><li>possibility to keep line numbers in the tree</li>
+</ul><h3>2.4.1: July 24 2001</h3><ul>
+ <li>possibility to keep line numbers in the tree</li>
<li>some computation NaN fixes</li>
<li>extension of the XPath API</li>
<li>cleanup for alpha and ia64 targets</li>
<li>patch to allow saving through HTTP PUT or POST</li>
-</ul><h3>2.4.0: July 10 2001</h3><ul><li>Fixed a few bugs in XPath, validation, and tree handling.</li>
+</ul><h3>2.4.0: July 10 2001</h3><ul>
+ <li>Fixed a few bugs in XPath, validation, and tree handling.</li>
<li>Fixed XML Base implementation, added a couple of examples to the
regression tests</li>
<li>A bit of cleanup</li>
-</ul><h3>2.3.14: July 5 2001</h3><ul><li>fixed some entities problems and reduce memory requirement when
+</ul><h3>2.3.14: July 5 2001</h3><ul>
+ <li>fixed some entities problems and reduce memory requirement when
substituting them</li>
<li>lots of improvements in the XPath queries interpreter can be
substantially faster</li>
@@ -1491,11 +1982,14 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>Fixes to XPath variable eval, and compare on empty node set</li>
<li>HTML tag closing bug fixed</li>
<li>Fixed an URI reference computation problem when validating</li>
-</ul><h3>2.3.13: June 28 2001</h3><ul><li>2.3.12 configure.in was broken as well as the push mode XML parser</li>
+</ul><h3>2.3.13: June 28 2001</h3><ul>
+ <li>2.3.12 configure.in was broken as well as the push mode XML parser</li>
<li>a few more fixes for compilation on Windows MSC by Yon Derek</li>
-</ul><h3>1.8.14: June 28 2001</h3><ul><li>Zbigniew Chyla gave a patch to use the old XML parser in push mode</li>
+</ul><h3>1.8.14: June 28 2001</h3><ul>
+ <li>Zbigniew Chyla gave a patch to use the old XML parser in push mode</li>
<li>Small Makefile fix</li>
-</ul><h3>2.3.12: June 26 2001</h3><ul><li>lots of cleanup</li>
+</ul><h3>2.3.12: June 26 2001</h3><ul>
+ <li>lots of cleanup</li>
<li>a couple of validation fix</li>
<li>fixed line number counting</li>
<li>fixed serious problems in the XInclude processing</li>
@@ -1507,7 +2001,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
compilation on Windows MSC</li>
<li>update of libxml-doc.el (Felix Natter)</li>
<li>fixed 2 bugs in URI normalization code</li>
-</ul><h3>2.3.11: June 17 2001</h3><ul><li>updates to trio, Makefiles and configure should fix some portability
+</ul><h3>2.3.11: June 17 2001</h3><ul>
+ <li>updates to trio, Makefiles and configure should fix some portability
problems (alpha)</li>
<li>fixed some HTML serialization problems (pre, script, and block/inline
handling), added encoding aware APIs, cleanup of this code</li>
@@ -1520,11 +2015,14 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>fixed XInclude routine to implement the recursive behaviour</li>
<li>fixed xmlFreeNode problem when libxml is included statically twice</li>
<li>added --version to xmllint for bug reports</li>
-</ul><h3>2.3.10: June 1 2001</h3><ul><li>fixed the SGML catalog support</li>
+</ul><h3>2.3.10: June 1 2001</h3><ul>
+ <li>fixed the SGML catalog support</li>
<li>a number of reported bugs got fixed, in XPath, iconv detection,
XInclude processing</li>
<li>XPath string function should now handle unicode correctly</li>
-</ul><h3>2.3.9: May 19 2001</h3><p>Lots of bugfixes, and added a basic SGML catalog support:</p><ul><li>HTML push bugfix #54891 and another patch from Jonas Borgström</li>
+</ul><h3>2.3.9: May 19 2001</h3><p>Lots of bugfixes, and added a basic SGML catalog support:
+</p><ul>
+ <li>HTML push bugfix #54891 and another patch from Jonas Borgstrom</li>
<li>some serious speed optimization again</li>
<li>some documentation cleanups</li>
<li>trying to get better linking on Solaris (-R)</li>
@@ -1538,8 +2036,10 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>bugfix in xmlNodeGetLang()</li>
<li>fixed a small configure portability problem</li>
<li>fixed an inversion of SYSTEM and PUBLIC identifier in HTML document</li>
-</ul><h3>1.8.13: May 14 2001</h3><ul><li>bugfixes release of the old libxml1 branch used by Gnome</li>
-</ul><h3>2.3.8: May 3 2001</h3><ul><li>Integrated an SGML DocBook parser for the Gnome project</li>
+</ul><h3>1.8.13: May 14 2001</h3><ul>
+ <li>bugfixes release of the old libxml1 branch used by Gnome</li>
+</ul><h3>2.3.8: May 3 2001</h3><ul>
+ <li>Integrated an SGML DocBook parser for the Gnome project</li>
<li>Fixed a few things in the HTML parser</li>
<li>Fixed some XPath bugs raised by XSLT use, tried to fix the floating
point portability issue</li>
@@ -1549,7 +2049,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>added xmlSaveFormatFile()</li>
<li>fixed problems in copying nodes with entities references (gdome)</li>
<li>removed some troubles surrounding the new validation module</li>
-</ul><h3>2.3.7: April 22 2001</h3><ul><li>lots of small bug fixes, corrected XPointer</li>
+</ul><h3>2.3.7: April 22 2001</h3><ul>
+ <li>lots of small bug fixes, corrected XPointer</li>
<li>Non deterministic content model validation support</li>
<li>added xmlDocCopyNode for gdome2</li>
<li>revamped the way the HTML parser handles end of tags</li>
@@ -1559,7 +2060,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>Improved validation speed sensible for DocBook</li>
<li>fixed a big bug with ID declared in external parsed entities</li>
<li>portability fixes, update of Trio from Bjorn Reese</li>
-</ul><h3>2.3.6: April 8 2001</h3><ul><li>Code cleanup using extreme gcc compiler warning options, found and
+</ul><h3>2.3.6: April 8 2001</h3><ul>
+ <li>Code cleanup using extreme gcc compiler warning options, found and
cleared half a dozen potential problem</li>
<li>the Eazel team found an XML parser bug</li>
<li>cleaned up the user of some of the string formatting function. used the
@@ -1568,12 +2070,14 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>xpath: removed a memory leak and fixed the predicate evaluation
problem, extended the testsuite and cleaned up the result. XPointer seems
broken ...</li>
-</ul><h3>2.3.5: Mar 23 2001</h3><ul><li>Biggest change is separate parsing and evaluation of XPath expressions,
+</ul><h3>2.3.5: Mar 23 2001</h3><ul>
+ <li>Biggest change is separate parsing and evaluation of XPath expressions,
there is some new APIs for this too</li>
<li>included a number of bug fixes(XML push parser, 51876, notations,
52299)</li>
<li>Fixed some portability issues</li>
-</ul><h3>2.3.4: Mar 10 2001</h3><ul><li>Fixed bugs #51860 and #51861</li>
+</ul><h3>2.3.4: Mar 10 2001</h3><ul>
+ <li>Fixed bugs #51860 and #51861</li>
<li>Added a global variable xmlDefaultBufferSize to allow default buffer
size to be application tunable.</li>
<li>Some cleanup in the validation code, still a bug left and this part
@@ -1585,19 +2089,23 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>Fixed a loop reported in the HTML parsing</li>
<li>blank space are reported even if the Dtd content model proves that they
are formatting spaces, this is for XML conformance</li>
-</ul><h3>2.3.3: Mar 1 2001</h3><ul><li>small change in XPath for XSLT</li>
+</ul><h3>2.3.3: Mar 1 2001</h3><ul>
+ <li>small change in XPath for XSLT</li>
<li>documentation cleanups</li>
<li>fix in validation by Gary Pennington</li>
<li>serious parsing performances improvements</li>
-</ul><h3>2.3.2: Feb 24 2001</h3><ul><li>chasing XPath bugs, found a bunch, completed some TODO</li>
+</ul><h3>2.3.2: Feb 24 2001</h3><ul>
+ <li>chasing XPath bugs, found a bunch, completed some TODO</li>
<li>fixed a Dtd parsing bug</li>
<li>fixed a bug in xmlNodeGetContent</li>
<li>ID/IDREF support partly rewritten by Gary Pennington</li>
-</ul><h3>2.3.1: Feb 15 2001</h3><ul><li>some XPath and HTML bug fixes for XSLT</li>
+</ul><h3>2.3.1: Feb 15 2001</h3><ul>
+ <li>some XPath and HTML bug fixes for XSLT</li>
<li>small extension of the hash table interfaces for DOM gdome2
implementation</li>
<li>A few bug fixes</li>
-</ul><h3>2.3.0: Feb 8 2001 (2.2.12 was on 25 Jan but I didn't kept track)</h3><ul><li>Lots of XPath bug fixes</li>
+</ul><h3>2.3.0: Feb 8 2001 (2.2.12 was on 25 Jan but I didn't kept track)</h3><ul>
+ <li>Lots of XPath bug fixes</li>
<li>Add a mode with Dtd lookup but without validation error reporting for
XSLT</li>
<li>Add support for text node without escaping (XSLT)</li>
@@ -1611,30 +2119,36 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>tree copying bugfixes</li>
<li>updates to Windows makefiles</li>
<li>optimization patch from Bjorn Reese</li>
-</ul><h3>2.2.11: Jan 4 2001</h3><ul><li>bunch of bug fixes (memory I/O, xpath, ftp/http, ...)</li>
+</ul><h3>2.2.11: Jan 4 2001</h3><ul>
+ <li>bunch of bug fixes (memory I/O, xpath, ftp/http, ...)</li>
<li>added htmlHandleOmittedElem()</li>
<li>Applied Bjorn Reese's IPV6 first patch</li>
<li>Applied Paul D. Smith patches for validation of XInclude results</li>
<li>added XPointer xmlns() new scheme support</li>
-</ul><h3>2.2.10: Nov 25 2000</h3><ul><li>Fix the Windows problems of 2.2.8</li>
+</ul><h3>2.2.10: Nov 25 2000</h3><ul>
+ <li>Fix the Windows problems of 2.2.8</li>
<li>integrate OpenVMS patches</li>
<li>better handling of some nasty HTML input</li>
<li>Improved the XPointer implementation</li>
<li>integrate a number of provided patches</li>
-</ul><h3>2.2.9: Nov 25 2000</h3><ul><li>erroneous release :-(</li>
-</ul><h3>2.2.8: Nov 13 2000</h3><ul><li>First version of <a href="http://www.w3.org/TR/xinclude">XInclude</a>
+</ul><h3>2.2.9: Nov 25 2000</h3><ul>
+ <li>erroneous release :-(</li>
+</ul><h3>2.2.8: Nov 13 2000</h3><ul>
+ <li>First version of <a href="http://www.w3.org/TR/xinclude">XInclude</a>
support</li>
<li>Patch in conditional section handling</li>
<li>updated MS compiler project</li>
<li>fixed some XPath problems</li>
<li>added an URI escaping function</li>
<li>some other bug fixes</li>
-</ul><h3>2.2.7: Oct 31 2000</h3><ul><li>added message redirection</li>
+</ul><h3>2.2.7: Oct 31 2000</h3><ul>
+ <li>added message redirection</li>
<li>XPath improvements (thanks TOM !)</li>
<li>xmlIOParseDTD() added</li>
<li>various small fixes in the HTML, URI, HTTP and XPointer support</li>
<li>some cleanup of the Makefile, autoconf and the distribution content</li>
-</ul><h3>2.2.6: Oct 25 2000:</h3><ul><li>Added an hash table module, migrated a number of internal structure to
+</ul><h3>2.2.6: Oct 25 2000:</h3><ul>
+ <li>Added an hash table module, migrated a number of internal structure to
those</li>
<li>Fixed a posteriori validation problems</li>
<li>HTTP module cleanups</li>
@@ -1642,7 +2156,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
normalization)</li>
<li>coalescing of adjacent text nodes</li>
<li>couple of XPath bug fixes, exported the internal API</li>
-</ul><h3>2.2.5: Oct 15 2000:</h3><ul><li>XPointer implementation and testsuite</li>
+</ul><h3>2.2.5: Oct 15 2000:</h3><ul>
+ <li>XPointer implementation and testsuite</li>
<li>Lot of XPath fixes, added variable and functions registration, more
tests</li>
<li>Portability fixes, lots of enhancements toward an easy Windows build
@@ -1651,24 +2166,30 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>Integrated a lot of contributed patches</li>
<li>added memory management docs</li>
<li>a performance problem when using large buffer seems fixed</li>
-</ul><h3>2.2.4: Oct 1 2000:</h3><ul><li>main XPath problem fixed</li>
+</ul><h3>2.2.4: Oct 1 2000:</h3><ul>
+ <li>main XPath problem fixed</li>
<li>Integrated portability patches for Windows</li>
<li>Serious bug fixes on the URI and HTML code</li>
-</ul><h3>2.2.3: Sep 17 2000</h3><ul><li>bug fixes</li>
+</ul><h3>2.2.3: Sep 17 2000</h3><ul>
+ <li>bug fixes</li>
<li>cleanup of entity handling code</li>
<li>overall review of all loops in the parsers, all sprintf usage has been
checked too</li>
<li>Far better handling of larges Dtd. Validating against DocBook XML Dtd
works smoothly now.</li>
-</ul><h3>1.8.10: Sep 6 2000</h3><ul><li>bug fix release for some Gnome projects</li>
-</ul><h3>2.2.2: August 12 2000</h3><ul><li>mostly bug fixes</li>
+</ul><h3>1.8.10: Sep 6 2000</h3><ul>
+ <li>bug fix release for some Gnome projects</li>
+</ul><h3>2.2.2: August 12 2000</h3><ul>
+ <li>mostly bug fixes</li>
<li>started adding routines to access xml parser context options</li>
-</ul><h3>2.2.1: July 21 2000</h3><ul><li>a purely bug fixes release</li>
+</ul><h3>2.2.1: July 21 2000</h3><ul>
+ <li>a purely bug fixes release</li>
<li>fixed an encoding support problem when parsing from a memory block</li>
<li>fixed a DOCTYPE parsing problem</li>
<li>removed a bug in the function allowing to override the memory
allocation routines</li>
-</ul><h3>2.2.0: July 14 2000</h3><ul><li>applied a lot of portability fixes</li>
+</ul><h3>2.2.0: July 14 2000</h3><ul>
+ <li>applied a lot of portability fixes</li>
<li>better encoding support/cleanup and saving (content is now always
encoded in UTF-8)</li>
<li>the HTML parser now correctly handles encodings</li>
@@ -1678,25 +2199,31 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>cleanup, bugfixes, etc ...</li>
<li>Added a page about <a href="encoding.html">libxml Internationalization
support</a></li>
-</ul><h3>1.8.9: July 9 2000</h3><ul><li>fixed the spec the RPMs should be better</li>
+</ul><h3>1.8.9: July 9 2000</h3><ul>
+ <li>fixed the spec the RPMs should be better</li>
<li>fixed a serious bug in the FTP implementation, released 1.8.9 to solve
rpmfind users problem</li>
-</ul><h3>2.1.1: July 1 2000</h3><ul><li>fixes a couple of bugs in the 2.1.0 packaging</li>
+</ul><h3>2.1.1: July 1 2000</h3><ul>
+ <li>fixes a couple of bugs in the 2.1.0 packaging</li>
<li>improvements on the HTML parser</li>
-</ul><h3>2.1.0 and 1.8.8: June 29 2000</h3><ul><li>1.8.8 is mostly a commodity package for upgrading to libxml2 according
+</ul><h3>2.1.0 and 1.8.8: June 29 2000</h3><ul>
+ <li>1.8.8 is mostly a commodity package for upgrading to libxml2 according
to <a href="upgrade.html">new instructions</a>. It fixes a nasty problem
about &amp;#38; charref parsing</li>
<li>2.1.0 also ease the upgrade from libxml v1 to the recent version. it
also contains numerous fixes and enhancements:
- <ul><li>added xmlStopParser() to stop parsing</li>
+ <ul>
+ <li>added xmlStopParser() to stop parsing</li>
<li>improved a lot parsing speed when there is large CDATA blocs</li>
<li>includes XPath patches provided by Picdar Technology</li>
<li>tried to fix as much as possible DTD validation and namespace
related problems</li>
<li>output to a given encoding has been added/tested</li>
<li>lot of various fixes</li>
- </ul></li>
-</ul><h3>2.0.0: Apr 12 2000</h3><ul><li>First public release of libxml2. If you are using libxml, it's a good
+ </ul>
+ </li>
+</ul><h3>2.0.0: Apr 12 2000</h3><ul>
+ <li>First public release of libxml2. If you are using libxml, it's a good
idea to check the 1.x to 2.x upgrade instructions. NOTE: while initially
scheduled for Apr 3 the release occurred only on Apr 12 due to massive
workload.</li>
@@ -1720,7 +2247,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
number of the libxml module in use</li>
<li>a number of optional features of libxml can now be excluded at
configure time (FTP/HTTP/HTML/XPath/Debug)</li>
-</ul><h3>2.0.0beta: Mar 14 2000</h3><ul><li>This is a first Beta release of libxml version 2</li>
+</ul><h3>2.0.0beta: Mar 14 2000</h3><ul>
+ <li>This is a first Beta release of libxml version 2</li>
<li>It's available only from<a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org
FTP</a>, it's packaged as libxml2-2.0.0beta and available as tar and
RPMs</li>
@@ -1731,7 +2259,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<a href="upgrade.html">upgrade page</a></li>
<li>Some interfaces may changes (especially a bit about encoding).</li>
<li>the updates includes:
- <ul><li>fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
+ <ul>
+ <li>fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly
handled now</li>
<li>Better handling of entities, especially well-formedness checking
and proper PEref extensions in external subsets</li>
@@ -1739,12 +2268,14 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>Validation now correctly handle entities content</li>
<li><a href="http://rpmfind.net/tools/gdome/messages/0039.html">change
structures to accommodate DOM</a></li>
- </ul></li>
+ </ul>
+ </li>
<li>Serious progress were made toward compliance, <a href="conf/result.html">here are the result of the test</a> against the
OASIS testsuite (except the Japanese tests since I don't support that
encoding yet). This URL is rebuilt every couple of hours using the CVS
head version.</li>
-</ul><h3>1.8.7: Mar 6 2000</h3><ul><li>This is a bug fix release:</li>
+</ul><h3>1.8.7: Mar 6 2000</h3><ul>
+ <li>This is a bug fix release:</li>
<li>It is possible to disable the ignorable blanks heuristic used by
libxml-1.x, a new function xmlKeepBlanksDefault(0) will allow this. Note
that for adherence to XML spec, this behaviour will be disabled by
@@ -1756,20 +2287,24 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
compilation on some platforms has been fixed</li>
<li>nanoftp.c nanohttp.c: Fixed '#' and '?' stripping when processing
URIs</li>
-</ul><h3>1.8.6: Jan 31 2000</h3><ul><li>added a nanoFTP transport module, debugged until the new version of <a href="http://rpmfind.net/linux/rpm2html/rpmfind.html">rpmfind</a> can use
+</ul><h3>1.8.6: Jan 31 2000</h3><ul>
+ <li>added a nanoFTP transport module, debugged until the new version of <a href="http://rpmfind.net/linux/rpm2html/rpmfind.html">rpmfind</a> can use
it without troubles</li>
-</ul><h3>1.8.5: Jan 21 2000</h3><ul><li>adding APIs to parse a well balanced chunk of XML (production <a href="http://www.w3.org/TR/REC-xml#NT-content">[43] content</a> of the
+</ul><h3>1.8.5: Jan 21 2000</h3><ul>
+ <li>adding APIs to parse a well balanced chunk of XML (production <a href="http://www.w3.org/TR/REC-xml#NT-content">[43] content</a> of the
XML spec)</li>
<li>fixed a hideous bug in xmlGetProp pointed by Rune.Djurhuus@fast.no</li>
<li>Jody Goldberg &lt;jgoldberg@home.com&gt; provided another patch trying
to solve the zlib checks problems</li>
<li>The current state in gnome CVS base is expected to ship as 1.8.5 with
gnumeric soon</li>
-</ul><h3>1.8.4: Jan 13 2000</h3><ul><li>bug fixes, reintroduced xmlNewGlobalNs(), fixed xmlNewNs()</li>
+</ul><h3>1.8.4: Jan 13 2000</h3><ul>
+ <li>bug fixes, reintroduced xmlNewGlobalNs(), fixed xmlNewNs()</li>
<li>all exit() call should have been removed from libxml</li>
<li>fixed a problem with INCLUDE_WINSOCK on WIN32 platform</li>
<li>added newDocFragment()</li>
-</ul><h3>1.8.3: Jan 5 2000</h3><ul><li>a Push interface for the XML and HTML parsers</li>
+</ul><h3>1.8.3: Jan 5 2000</h3><ul>
+ <li>a Push interface for the XML and HTML parsers</li>
<li>a shell-like interface to the document tree (try tester --shell :-)</li>
<li>lots of bug fixes and improvement added over XMas holidays</li>
<li>fixed the DTD parsing code to work with the xhtml DTD</li>
@@ -1778,13 +2313,15 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>External entity loading code has been revamped, now it uses
xmlLoadExternalEntity(), some fix on entities processing were added</li>
<li>cleaned up WIN32 includes of socket stuff</li>
-</ul><h3>1.8.2: Dec 21 1999</h3><ul><li>I got another problem with includes and C++, I hope this issue is fixed
+</ul><h3>1.8.2: Dec 21 1999</h3><ul>
+ <li>I got another problem with includes and C++, I hope this issue is fixed
for good this time</li>
<li>Added a few tree modification functions: xmlReplaceNode,
xmlAddPrevSibling, xmlAddNextSibling, xmlNodeSetName and
xmlDocSetRootElement</li>
<li>Tried to improve the HTML output with help from <a href="mailto:clahey@umich.edu">Chris Lahey</a></li>
-</ul><h3>1.8.1: Dec 18 1999</h3><ul><li>various patches to avoid troubles when using libxml with C++ compilers
+</ul><h3>1.8.1: Dec 18 1999</h3><ul>
+ <li>various patches to avoid troubles when using libxml with C++ compilers
the "namespace" keyword and C escaping in include files</li>
<li>a problem in one of the core macros IS_CHAR was corrected</li>
<li>fixed a bug introduced in 1.8.0 breaking default namespace processing,
@@ -1792,7 +2329,8 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>fixed a posteriori validation (validation after parsing, or by using a
Dtd not specified in the original document)</li>
<li>fixed a bug in</li>
-</ul><h3>1.8.0: Dec 12 1999</h3><ul><li>cleanup, especially memory wise</li>
+</ul><h3>1.8.0: Dec 12 1999</h3><ul>
+ <li>cleanup, especially memory wise</li>
<li>the parser should be more reliable, especially the HTML one, it should
not crash, whatever the input !</li>
<li>Integrated various patches, especially a speedup improvement for large
@@ -1801,21 +2339,25 @@ it's actually not compiled in by default. The real fixes are:</p><ul><li>a coupl
<li>attribute normalization, oops should have been added long ago !</li>
<li>attributes defaulted from DTDs should be available, xmlSetProp() now
does entities escaping by default.</li>
-</ul><h3>1.7.4: Oct 25 1999</h3><ul><li>Lots of HTML improvement</li>
+</ul><h3>1.7.4: Oct 25 1999</h3><ul>
+ <li>Lots of HTML improvement</li>
<li>Fixed some errors when saving both XML and HTML</li>
<li>More examples, the regression tests should now look clean</li>
<li>Fixed a bug with contiguous charref</li>
-</ul><h3>1.7.3: Sep 29 1999</h3><ul><li>portability problems fixed</li>
+</ul><h3>1.7.3: Sep 29 1999</h3><ul>
+ <li>portability problems fixed</li>
<li>snprintf was used unconditionally, leading to link problems on system
were it's not available, fixed</li>
-</ul><h3>1.7.1: Sep 24 1999</h3><ul><li>The basic type for strings manipulated by libxml has been renamed in
+</ul><h3>1.7.1: Sep 24 1999</h3><ul>
+ <li>The basic type for strings manipulated by libxml has been renamed in
1.7.1 from <strong>CHAR</strong> to <strong>xmlChar</strong>. The reason
is that CHAR was conflicting with a predefined type on Windows. However
on non WIN32 environment, compatibility is provided by the way of a
<strong>#define </strong>.</li>
<li>Changed another error : the use of a structure field called errno, and
leading to troubles on platforms where it's a macro</li>
-</ul><h3>1.7.0: Sep 23 1999</h3><ul><li>Added the ability to fetch remote DTD or parsed entities, see the <a href="html/libxml-nanohttp.html">nanohttp</a> module.</li>
+</ul><h3>1.7.0: Sep 23 1999</h3><ul>
+ <li>Added the ability to fetch remote DTD or parsed entities, see the <a href="html/libxml-nanohttp.html">nanohttp</a> module.</li>
<li>Added an errno to report errors by another mean than a simple printf
like callback</li>
<li>Finished ID/IDREF support and checking when validation</li>
diff --git a/doc/python.html b/doc/python.html
index e7e955b..bd52649 100644
--- a/doc/python.html
+++ b/doc/python.html
@@ -11,7 +11,8 @@ A:link, A:visited, A:active { text-decoration: underline }
libxml2, the list below is not exhaustive. Please contact the <a href="http://mail.gnome.org/mailman/listinfo/xml-bindings">xml-bindings@gnome.org</a>
(<a href="http://mail.gnome.org/archives/xml-bindings/">archives</a>) in
order to get updates to this list or to discuss the specific topic of libxml2
-or libxslt wrappers or bindings:</p><ul><li><a href="http://libxmlplusplus.sourceforge.net/">Libxml++</a> seems the
+or libxslt wrappers or bindings:</p><ul>
+ <li><a href="http://libxmlplusplus.sourceforge.net/">Libxml++</a> seems the
most up-to-date C++ bindings for libxml2, check the <a href="http://libxmlplusplus.sourceforge.net/reference/html/hierarchy.html">documentation</a>
and the <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/libxmlplusplus/libxml%2b%2b/examples/">examples</a>.</li>
<li>There is another <a href="http://libgdome-cpp.berlios.de/">C++ wrapper
@@ -62,7 +63,8 @@ of the Python bindings</a>.</p><p>Note to people interested in building bindings
<a href="libxml2-api.xml">an XML API description file</a> which allows to
automate a large part of the Python bindings, this includes function
descriptions, enums, structures, typedefs, etc... The Python script used to
-build the bindings is python/generator.py in the source distribution.</p><p>To install the Python bindings there are 2 options:</p><ul><li>If you use an RPM based distribution, simply install the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-python">libxml2-python
+build the bindings is python/generator.py in the source distribution.</p><p>To install the Python bindings there are 2 options:</p><ul>
+ <li>If you use an RPM based distribution, simply install the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-python">libxml2-python
RPM</a> (and if needed the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxslt-python">libxslt-python
RPM</a>).</li>
<li>Otherwise use the <a href="ftp://xmlsoft.org/libxml2/python/">libxml2-python
@@ -89,7 +91,8 @@ if child.name != "foo":
doc.freeDoc()</pre><p>The Python module is called libxml2; parseFile is the equivalent of
xmlParseFile (most of the bindings are automatically generated, and the xml
prefix is removed and the casing convention are kept). All node seen at the
-binding level share the same subset of accessors:</p><ul><li><code>name</code> : returns the node name</li>
+binding level share the same subset of accessors:</p><ul>
+ <li><code>name</code> : returns the node name</li>
<li><code>type</code> : returns a string indicating the node type</li>
<li><code>content</code> : returns the content of the node, it is based on
xmlNodeGetContent() and hence is recursive.</li>
diff --git a/doc/symbols.xml b/doc/symbols.xml
index 1695bb3..ec275e7 100644
--- a/doc/symbols.xml
+++ b/doc/symbols.xml
@@ -1746,4 +1746,23 @@
<symbol file="tree">xmlBufferDetach</symbol>
<symbol file="dict">xmlInitializeDict</symbol>
</release>
+ <release version="2.9.0">
+ <symbol file="tree">xmlBufContent</symbol>
+ <symbol file="tree">xmlBufEnd</symbol>
+ <symbol file="tree">xmlBufGetNodeContent</symbol>
+ <symbol file="tree">xmlBufNodeDump</symbol>
+ <symbol file="tree">xmlBufShrink</symbol>
+ <symbol file="tree">xmlBufUse</symbol>
+ <symbol file="dict">xmlDictGetUsage</symbol>
+ <symbol file="dict">xmlDictSetLimit</symbol>
+ <symbol file="xmlschemas">xmlSchemaValidateSetFilename</symbol>
+ <symbol file="xmlschemas">xmlSchemaValidateSetLocator</symbol>
+ <symbol file="xmlIO">xmlOutputBufferGetContent</symbol>
+ <symbol file="xmlIO">xmlOutputBufferGetSize</symbol>
+ <symbol file="xmlwriter">xmlTextWriterSetQuoteChar</symbol>
+ </release>
+ <release version="2.9.1">
+ <symbol file="xpath">xmlXPathNodeEval</symbol>
+ <symbol file="xpath">xmlXPathSetContextNode</symbol>
+ </release>
</symbols>
diff --git a/doc/threads.html b/doc/threads.html
index d206f54..f7ac957 100644
--- a/doc/threads.html
+++ b/doc/threads.html
@@ -9,13 +9,15 @@ H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Thread safety</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Thread safety</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Starting with 2.4.7, libxml2 makes provisions to ensure that concurrent
threads can safely work in parallel parsing different documents. There is
-however a couple of things to do to ensure it:</p><ul><li>configure the library accordingly using the --with-threads options</li>
+however a couple of things to do to ensure it:</p><ul>
+ <li>configure the library accordingly using the --with-threads options</li>
<li>call xmlInitParser() in the "main" thread before using any of the
libxml2 API (except possibly selecting a different memory allocator)</li>
</ul><p>Note that the thread safety cannot be ensured for multiple threads sharing
the same document, the locking must be done at the application level, libxml
exports a basic mutex and reentrant mutexes API in &lt;libxml/threads.h&gt;.
-The parts of the library checked for thread safety are:</p><ul><li>concurrent loading</li>
+The parts of the library checked for thread safety are:</p><ul>
+ <li>concurrent loading</li>
<li>file access resolution</li>
<li>catalog access</li>
<li>catalog building</li>
diff --git a/doc/upgrade.html b/doc/upgrade.html
index b649178..569c3c1 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -8,7 +8,8 @@ H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Upgrading 1.x code</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Upgrading 1.x code</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Incompatible changes:</p><p>Version 2 of libxml2 is the first version introducing serious backward
-incompatible changes. The main goals were:</p><ul><li>a general cleanup. A number of mistakes inherited from the very early
+incompatible changes. The main goals were:</p><ul>
+ <li>a general cleanup. A number of mistakes inherited from the very early
versions couldn't be changed due to compatibility constraints. Example
the "childs" element in the nodes.</li>
<li>Uniformization of the various nodes, at least for their header and link
@@ -24,7 +25,8 @@ incompatible changes. The main goals were:</p><ul><li>a general cleanup. A numbe
changed to compile against version 2.x of libxml. Here is a list of changes
that I have collected, they may not be sufficient, so in case you find other
change which are required, <a href="mailto:Daniel.Veillard@w3.org">drop me a
-mail</a>:</p><ol><li>The package name have changed from libxml to libxml2, the library name
+mail</a>:</p><ol>
+ <li>The package name have changed from libxml to libxml2, the library name
is now -lxml2 . There is a new xml2-config script which should be used to
select the right parameters libxml2</li>
<li>Node <strong>childs</strong> field has been renamed
@@ -44,7 +46,8 @@ mail</a>:</p><ol><li>The package name have changed from libxml to libxml2, the l
and formatting the document content becomes significant. So they are
reported by SAX and if your using the DOM tree, corresponding nodes are
generated. Too approach can be taken:
- <ol><li>lazy one, use the compatibility call
+ <ol>
+ <li>lazy one, use the compatibility call
<strong>xmlKeepBlanksDefault(0)</strong> but be aware that you are
relying on a special (and possibly broken) set of heuristics of
libxml to detect ignorable blanks. Don't complain if it breaks or
@@ -54,7 +57,8 @@ mail</a>:</p><ol><li>The package name have changed from libxml to libxml2, the l
nodes. You can spot them using the commodity function
<strong>xmlIsBlankNode(node)</strong> returning 1 for such blank
nodes.</li>
- </ol><p>Note also that with the new default the output functions don't add any
+ </ol>
+ <p>Note also that with the new default the output functions don't add any
extra indentation when saving a tree in order to be able to round trip
(read and save) without inflating the document with extra formatting
chars.</p>
@@ -70,7 +74,8 @@ mail</a>:</p><ol><li>The package name have changed from libxml to libxml2, the l
byte of the head of the document available for character detection.</li>
</ol><h3>Ensuring both libxml-1.x and libxml-2.x compatibility</h3><p>Two new version of libxml (1.8.11) and libxml2 (2.3.4) have been released
to allow smooth upgrade of existing libxml v1code while retaining
-compatibility. They offers the following:</p><ol><li>similar include naming, one should use
+compatibility. They offers the following:</p><ol>
+ <li>similar include naming, one should use
<strong>#include&lt;libxml/...&gt;</strong> in both cases.</li>
<li>similar identifiers defined via macros for the child and root fields:
respectively <strong>xmlChildrenNode</strong> and
@@ -78,7 +83,8 @@ compatibility. They offers the following:</p><ol><li>similar include naming, one
<li>a new macro <strong>LIBXML_TEST_VERSION</strong> which should be
inserted once in the client code</li>
</ol><p>So the roadmap to upgrade your existing libxml applications is the
-following:</p><ol><li>install the libxml-1.8.8 (and libxml-devel-1.8.8) packages</li>
+following:</p><ol>
+ <li>install the libxml-1.8.8 (and libxml-devel-1.8.8) packages</li>
<li>find all occurrences where the xmlDoc <strong>root</strong> field is
used and change it to <strong>xmlRootNode</strong></li>
<li>similarly find all occurrences where the xmlNode
diff --git a/doc/xml.html b/doc/xml.html
index 2f73b54..373285d 100644
--- a/doc/xml.html
+++ b/doc/xml.html
@@ -508,7 +508,7 @@ xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
<li>If you need to parse large files, check the <a
href="xmlreader.html">xmlReader</a> API tutorial</li>
<li><a href="mailto:james@daa.com.au">James Henstridge</a> wrote <a
- href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">some nice
+ href="http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.html">some nice
documentation</a> explaining how to use the libxml SAX interface.</li>
<li>George Lebl wrote <a
href="http://www-106.ibm.com/developerworks/library/l-gnome3/">an article
@@ -704,23 +704,428 @@ href="python.html">bindings section</a></p>
<h2><a name="News">Releases</a></h2>
-<p>Items not finished and worked on, get in touch with the list if you want
-to help those</p>
+<p>The <a href="ChangeLog.html">change log</a> describes the recents commits
+to the <a href="http://git.gnome.org/browse/libxml2/">GIT</a> code base.</p>
+
+<p>Here is the list of public releases:</p>
+
+<h3>2.9.2: Oct 16 2014</h3>
<ul>
- <li>More testing on RelaxNG</li>
- <li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML
- Schemas</a></li>
+ <li>Security:<br/>
+ Fix for CVE-2014-3660 billion laugh variant (Daniel Veillard),<br/>
+ CVE-2014-0191 Do not fetch external parameter entities (Daniel Veillard)<br/>
+ </li>
+
+ <li>Bug Fixes:<br/>
+ fix memory leak xml header encoding field with XML_PARSE_IGNORE_ENC (Bart De Schuymer),<br/>
+ xmlmemory: handle realloc properly (Yegor Yefremov),<br/>
+ Python generator bug raised by the const change (Daniel Veillard),<br/>
+ Windows Critical sections not released correctly (Daniel Veillard),<br/>
+ Parser error on repeated recursive entity expansion containing &amp;lt; (Daniel Veillard),<br/>
+ xpointer : fixing Null Pointers (Gaurav Gupta),<br/>
+ Remove Unnecessary Null check in xpointer.c (Gaurav Gupta),<br/>
+ parser bug on misformed namespace attributes (Dennis Filder),<br/>
+ Pointer dereferenced before null check (Daniel Veillard),<br/>
+ Leak of struct addrinfo in xmlNanoFTPConnect() (Gaurav Gupta),<br/>
+ Possible overflow in HTMLParser.c (Daniel Veillard),<br/>
+ python/tests/sync.py assumes Python dictionaries are ordered (John Beck),<br/>
+ Fix Enum check and missing break (Gaurav Gupta),<br/>
+ xmlIO: Handle error returns from dup() (Philip Withnall),<br/>
+ Fix a problem properly saving URIs (Daniel Veillard),<br/>
+ wrong error column in structured error when parsing attribute values (Juergen Keil),<br/>
+ wrong error column in structured error when skipping whitespace in xml decl (Juergen Keil),<br/>
+ no error column in structured error handler for xml schema validation errors (Juergen Keil),<br/>
+ Couple of Missing Null checks (Gaurav Gupta),<br/>
+ Add couple of missing Null checks (Daniel Veillard),<br/>
+ xmlschemastypes: Fix potential array overflow (Philip Withnall),<br/>
+ runtest: Fix a memory leak on parse failure (Philip Withnall),<br/>
+ xmlIO: Fix an FD leak on gzdopen() failure (Philip Withnall),<br/>
+ xmlcatalog: Fix a memory leak on quit (Philip Withnall),<br/>
+ HTMLparser: Correctly initialise a stack allocated structure (Philip Withnall),<br/>
+ Check for tmon in _xmlSchemaDateAdd() is incorrect (David Kilzer),<br/>
+ Avoid Possible Null Pointer in trio.c (Gaurav Gupta),<br/>
+ Fix processing in SAX2 in case of an allocation failure (Daniel Veillard),<br/>
+ XML Shell command "cd" does not handle "/" at end of path (Daniel Veillard),<br/>
+ Fix various Missing Null checks (Gaurav Gupta),<br/>
+ Fix a potential NULL dereference (Daniel Veillard),<br/>
+ Add a couple of misisng check in xmlRelaxNGCleanupTree (Gaurav Gupta),<br/>
+ Add a missing argument check (Gaurav Gupta),<br/>
+ Adding a check in case of allocation error (Gaurav Gupta),<br/>
+ xmlSaveUri() incorrectly recomposes URIs with rootless paths (Dennis Filder),<br/>
+ Adding some missing NULL checks (Gaurav),<br/>
+ Fixes for xmlInitParserCtxt (Daniel Veillard),<br/>
+ Fix regressions introduced by CVE-2014-0191 patch (Daniel Veillard),<br/>
+ erroneously ignores a validation error if no error callback set (Daniel Veillard),<br/>
+ xmllint was not parsing the --c14n11 flag (Sérgio Batista),<br/>
+ Avoid Possible null pointer dereference in memory debug mode (Gaurav),<br/>
+ Avoid Double Null Check (Gaurav),<br/>
+ Restore context size and position after XPATH_OP_ARG (Nick Wellnhofer),<br/>
+ Fix xmlParseInNodeContext() if node is not element (Daniel Veillard),<br/>
+ Avoid a possible NULL pointer dereference (Gaurav),<br/>
+ Fix xmlTextWriterWriteElement when a null content is given (Daniel Veillard),<br/>
+ Fix an typo 'onrest' in htmlScriptAttributes (Daniel Veillard),<br/>
+ fixing a ptotential uninitialized access (Daniel Veillard),<br/>
+ Fix an fd leak in an error case (Daniel Veillard),<br/>
+ Missing initialization for the catalog module (Daniel Veillard),<br/>
+ Handling of XPath function arguments in error case (Nick Wellnhofer),<br/>
+ Fix a couple of missing NULL checks (Gaurav),<br/>
+ Avoid a possibility of dangling encoding handler (Gaurav),<br/>
+ Fix HTML push parser to accept HTML_PARSE_NODEFDTD (Arnold Hendriks),<br/>
+ Fix a bug loading some compressed files (Mike Alexander),<br/>
+ Fix XPath node comparison bug (Gaurav),<br/>
+ Type mismatch in xmlschemas.c (Gaurav),<br/>
+ Type mismatch in xmlschemastypes.c (Gaurav),<br/>
+ Avoid a deadcode in catalog.c (Daniel Veillard),<br/>
+ run close socket on Solaris, same as we do on other platforms (Denis Pauk),<br/>
+ Fix pointer dereferenced before null check (Gaurav),<br/>
+ Fix a potential NULL dereference in tree code (Daniel Veillard),<br/>
+ Fix potential NULL pointer dereferences in regexp code (Gaurav),<br/>
+ xmllint --pretty crashed without following numeric argument (Tim Galeckas),<br/>
+ Fix XPath expressions of the form '@ns:*' (Nick Wellnhofer),<br/>
+ Fix XPath '//' optimization with predicates (Nick Wellnhofer),<br/>
+ Clear up a potential NULL dereference (Daniel Veillard),<br/>
+ Fix a possible NULL dereference (Gaurav),<br/>
+ Avoid crash if allocation fails (Daniel Veillard),<br/>
+ Remove occasional leading space in XPath number formatting (Daniel Veillard),<br/>
+ Fix handling of mmap errors (Daniel Veillard),<br/>
+ Catch malloc error and exit accordingly (Daniel Veillard),<br/>
+ missing else in xlink.c (Ami Fischman),<br/>
+ Fix a parsing bug on non-ascii element and CR/LF usage (Daniel Veillard),<br/>
+ Fix a regression in xmlGetDocCompressMode() (Daniel Veillard),<br/>
+ properly quote the namespace uris written out during c14n (Aleksey Sanin),<br/>
+ Remove premature XInclude check on URI being relative (Alexey Neyman),<br/>
+ Fix missing break on last() function for attributes (dcb),<br/>
+ Do not URI escape in server side includes (Romain Bondue),<br/>
+ Fix an error in xmlCleanupParser (Alexander Pastukhov)<br/>
+ </li>
+
+ <li>Documentation:<br/>
+ typo in error messages "colon are forbidden from..." (Daniel Veillard),<br/>
+ Fix a link to James SAX documentation old page (Daniel Veillard),<br/>
+ Fix typos in relaxng.c (Jan Pokorný),<br/>
+ Fix a doc typo (Daniel Veillard),<br/>
+ Fix typos in {tree,xpath}.c (errror) (Jan Pokorný),<br/>
+ Add limitations about encoding conversion (Daniel Veillard),<br/>
+ Fix typos in xmlschemas{,types}.c (Jan Pokorný),<br/>
+ Fix incorrect spelling entites-&gt;entities (Jan Pokorný),<br/>
+ Forgot to document 2.9.1 release, regenerate docs (Daniel Veillard)<br/>
+ </li>
+
+ <li>Portability:<br/>
+ AC_CONFIG_FILES and executable bit (Roumen Petrov),<br/>
+ remove HAVE_CONFIG_H dependency in testlimits.c (Roumen Petrov),<br/>
+ fix some tabs mixing incompatible with python3 (Roumen Petrov),<br/>
+ Visual Studio 14 CTP defines snprintf() (Francis Dupont),<br/>
+ OS400: do not try to copy unexisting doc files (Patrick Monnerat),<br/>
+ OS400: use either configure.ac or configure.in. (Patrick Monnerat),<br/>
+ os400: make-src.sh: create physical file with target CCSID (Patrick Monnerat),<br/>
+ OS400: Add some more C macros equivalent procedures. (Patrick Monnerat),<br/>
+ OS400: use C macros to implement equivalent RPG support procedures. (Patrick Monnerat),<br/>
+ OS400: implement XPath macros as procedures for ILE/RPG support. (Patrick Monnerat),<br/>
+ OS400: include in distribution tarball. (Patrick Monnerat),<br/>
+ OS400: Add README: compilation directives and OS/400 specific stuff. (Patrick Monnerat),<br/>
+ OS400: Add compilation scripts. (Patrick Monnerat),<br/>
+ OS400: ILE RPG language header files. (Patrick Monnerat),<br/>
+ OS400: implement some macros as functions for ILE/RPG language support (that as no macros). (Patrick Monnerat),<br/>
+ OS400: UTF8&lt;--&gt;EBCDIC wrappers for system and external library calls (Patrick Monnerat),<br/>
+ OS400: Easy character transcoding support (Patrick Monnerat),<br/>
+ OS400: iconv functions compatibility wrappers and table builder. (Patrick Monnerat),<br/>
+ OS400: create architecture directory. Implement dlfcn emulation. (Patrick Monnerat),<br/>
+ Fix building when configuring without xpath and xptr (Daniel Veillard),<br/>
+ configure: Add --with-python-install-dir (Jonas Eriksson),<br/>
+ Fix compilation with minimum and xinclude. (Nicolas Le Cam),<br/>
+ Compile out use of xmlValidateNCName() when not available. (Nicolas Le Cam),<br/>
+ Fix compilation with minimum and schematron. (Nicolas Le Cam),<br/>
+ Legacy needs xmlSAX2StartElement() and xmlSAX2EndElement(). (Nicolas Le Cam),<br/>
+ Don't use xmlValidateName() when not available. (Nicolas Le Cam),<br/>
+ Fix a portability issue on Windows (Longstreth Jon),<br/>
+ Various portability patches for OpenVMS (Jacob (Jouk) Jansen),<br/>
+ Use specific macros for portability to OS/400 (Patrick Monnerat),<br/>
+ Add macros needed for OS/400 portability (Patrick Monnerat),<br/>
+ Portability patch for fopen on OS/400 (Patrick Monnerat),<br/>
+ Portability fixes for OS/400 (Patrick Monnerat),<br/>
+ Improve va_list portability (Patrick Monnerat),<br/>
+ Portability fix (Patrick Monnerat),<br/>
+ Portability fix (Patrick Monnerat),<br/>
+ Generic portability fix (Patrick Monnerat),<br/>
+ Shortening lines in headers (Patrick Monnerat),<br/>
+ build: Use pkg-config to find liblzma in preference to AC_CHECK_LIB (Philip Withnall),<br/>
+ build: Add @LZMA_LIBS@ to libxml’s pkg-config files (Philip Withnall),<br/>
+ fix some tabs mixing incompatible with python3 (Daniel Veillard),<br/>
+ add additional defines checks for support "./configure --with-minimum" (Denis Pauk),<br/>
+ Another round of fixes for older versions of Python (Arfrever Frehtes Taifersar Arahesis),<br/>
+ python: fix drv_libxml2.py for python3 compatibility (Alexandre Rostovtsev),<br/>
+ python: Fix compiler warnings when building python3 bindings (Armin K),<br/>
+ Fix for compilation with python 2.6.8 (Petr Sumbera)<br/>
+ </li>
+
+ <li>Improvements:<br/>
+ win32/libxml2.def.src after rebuild in doc (Roumen Petrov),<br/>
+ elfgcchack.h: more legacy needs xmlSAX2StartElement() and xmlSAX2EndElement() (Roumen Petrov),<br/>
+ elfgcchack.h: add xmlXPathNodeEval and xmlXPathSetContextNode (Roumen Petrov),<br/>
+ Provide cmake module (Samuel Martin),<br/>
+ Fix a couple of issues raised by make dist (Daniel Veillard),<br/>
+ Fix and add const qualifiers (Kurt Roeckx),<br/>
+ Preparing for upcoming release of 2.9.2 (Daniel Veillard),<br/>
+ Fix zlib and lzma libraries check via command line (Dmitriy),<br/>
+ wrong error column in structured error when parsing end tag (Juergen Keil),<br/>
+ doc/news.html: small update to avoid line join while generating NEWS. (Patrick Monnerat),<br/>
+ Add methods for python3 iterator (Ron Angeles),<br/>
+ Support element node traversal in document fragments. (Kyle VanderBeek),<br/>
+ xmlNodeSetName: Allow setting the name to a substring of the currently set name (Tristan Van Berkom),<br/>
+ Added macros for argument casts (Eric Zurcher),<br/>
+ adding init calls to xml and html Read parsing entry points (Daniel Veillard),<br/>
+ Get rid of 'REPLACEMENT CHARACTER' Unicode chars in xmlschemas.c (Jan Pokorný),<br/>
+ Implement choice for name classes on attributes (Shaun McCance),<br/>
+ Two small namespace tweaks (Daniel Veillard),<br/>
+ xmllint --memory should fail on empty files (Daniel Veillard),<br/>
+ Cast encoding name to char pointer to match arg type (Nikolay Sivov)<br/>
+ </li>
+
+ <li>Cleanups:<br/>
+ Removal of old configure.in (Daniel Veillard),<br/>
+ Unreachable code in tree.c (Gaurav Gupta),<br/>
+ Remove a couple of dead conditions (Gaurav Gupta),<br/>
+ Avoid some dead code and cleanup in relaxng.c (Gaurav),<br/>
+ Drop not needed checks (Denis Pauk),<br/>
+ Fix a wrong test (Daniel Veillard)<br/>
+ </li>
</ul>
+<h3>2.9.1: Apr 19 2013</h3>
+<ul>
+ <li> Features:<br/>
+ Support for Python3 (Daniel Veillard),<br/>
+ Add xmlXPathSetContextNode and xmlXPathNodeEval (Alex Bligh)<br/>
+ </li>
-<p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://svn.gnome.org/viewvc/libxml2/trunk/">SVN</a> code base.</p>
+ <li> Documentation:<br/>
+ Add documentation for xmllint --xpath (Daniel Veillard),<br/>
+ Fix the URL of the SAX documentation from James (Daniel Veillard),<br/>
+ Fix spelling of "length". (Michael Wood)<br/>
+ </li>
-<p>Here is the list of public releases:</p>
+ <li> Portability:<br/>
+ Fix python bindings with versions older than 2.7 (Daniel Veillard),<br/>
+ rebuild docs:Makefile.am (Roumen Petrov),<br/>
+ elfgcchack.h after rebuild in doc (Roumen Petrov),<br/>
+ elfgcchack for buf module (Roumen Petrov),<br/>
+ Fix a uneeded and wrong extra link parameter (Daniel Veillard),<br/>
+ Few cleanup patches for Windows (Denis Pauk),<br/>
+ Fix rpmbuild --nocheck (Mark Salter),<br/>
+ Fix for win32/configure.js and WITH_THREAD_ALLOC (Daniel Richard),<br/>
+ Fix Broken multi-arch support in xml2-config (Daniel Veillard),<br/>
+ Fix a portability issue for GCC &lt; 3.4.0 (Daniel Veillard),<br/>
+ Windows build fixes (Daniel Richard),<br/>
+ Fix a thread portability problem (Friedrich Haubensak),<br/>
+ Downgrade autoconf requirement to 2.63 (Daniel Veillard)<br/>
+ </li>
+ <li> Bug Fixes:<br/>
+ Fix a linking error for python bindings (Daniel Veillard),<br/>
+ Fix a couple of return without value (Jüri Aedla),<br/>
+ Improve the hashing functions (Daniel Franke),<br/>
+ Improve handling of xmlStopParser() (Daniel Veillard),<br/>
+ Remove risk of lockup in dictionary initialization (Daniel Veillard),<br/>
+ Activate detection of encoding in external subset (Daniel Veillard),<br/>
+ Fix an output buffer flushing conversion bug (Mikhail Titov),<br/>
+ Fix an old bug in xmlSchemaValidateOneElement (Csaba László),<br/>
+ Fix configure cannot remove messages (Gilles Espinasse),<br/>
+ fix schema validation in combination with xsi:nil (Daniel Veillard),<br/>
+ xmlCtxtReadFile doesn't work with literal IPv6 URLs (Steve Wolf),<br/>
+ Fix a few problems with setEntityLoader (Alexey Neyman),<br/>
+ Detect excessive entities expansion upon replacement (Daniel Veillard),<br/>
+ Fix the flushing out of raw buffers on encoding conversions (Daniel,<br/>
+Veillard),<br/>
+ Fix some buffer conversion issues (Daniel Veillard),<br/>
+ When calling xmlNodeDump make sure we grow the buffer quickly (Daniel,<br/>
+Veillard),<br/>
+ Fix an error in the progressive DTD parsing code (Dan Winship),<br/>
+ xmllint should not load DTD by default when using the reader (Daniel,<br/>
+Veillard),<br/>
+ Try IBM-037 when looking for EBCDIC handlers (Petr Sumbera),<br/>
+ Fix potential out of bound access (Daniel Veillard),<br/>
+ Fix large parse of file from memory (Daniel Veillard),<br/>
+ Fix a bug in the nsclean option of the parser (Daniel Veillard),<br/>
+ Fix a regression in 2.9.0 breaking validation while streaming (Daniel,<br/>
+Veillard),<br/>
+ Remove potential calls to exit() (Daniel Veillard)<br/>
+ </li>
+
+ <li> Improvements:<br/>
+ Regenerated API, and testapi, rebuild documentation (Daniel Veillard),<br/>
+ Fix tree iterators broken by 2to3 script (Daniel Veillard),<br/>
+ update all tests for Python3 and Python2 (Daniel Veillard),<br/>
+ A few more fixes for python 3 affecting libxml2.py (Daniel Veillard),<br/>
+ Fix compilation on Python3 (Daniel Veillard),<br/>
+ Converting apibuild.py to python3 (Daniel Veillard),<br/>
+ First pass at starting porting to python3 (Daniel Veillard),<br/>
+ updated configure.in for python3 (Daniel Veillard),<br/>
+ Add support for xpathRegisterVariable in Python (Shaun McCance),<br/>
+ Added a regression tests from bug 694228 data (Daniel Veillard),<br/>
+ Cache presence of '&lt;' in entities content (Daniel Veillard),<br/>
+ Avoid extra processing on entities (Daniel Veillard),<br/>
+ Python binding for xmlRegisterInputCallback (Alexey Neyman),<br/>
+ Python bindings: DOM casts everything to xmlNode (Alexey Neyman),<br/>
+ Define LIBXML_THREAD_ALLOC_ENABLED via xmlversion.h (Tim Starling),<br/>
+ Adding streaming validation to runtest checks (Daniel Veillard),<br/>
+ Add a --pushsmall option to xmllint (Daniel Veillard)<br/>
+ </li>
+
+ <li> Cleanups:<br/>
+ Switched comment in file to UTF-8 encoding (Daniel Veillard),<br/>
+ Extend gitignore (Daniel Veillard),<br/>
+ Silent the new python test on input (Alexey Neyman),<br/>
+ Cleanup of a duplicate test (Daniel Veillard),<br/>
+ Cleanup on duplicate test expressions (Daniel Veillard),<br/>
+ Fix compiler warning after 153cf15905cf4ec080612ada6703757d10caba1e (Patrick,<br/>
+Gansterer),<br/>
+ Spec cleanups and a fix for multiarch support (Daniel Veillard),<br/>
+ Silence a clang warning (Daniel Veillard),<br/>
+ Cleanup the Copyright to be pure MIT Licence wording (Daniel Veillard),<br/>
+ rand_seed should be static in dict.c (Wouter Van Rooy),<br/>
+ Fix typos in parser comments (Jan Pokorný)<br/>
+ </li>
+</ul>
+<h3>2.9.0: Sep 11 2012</h3>
+<ul>
+ <li> Features:<br/>
+ A few new API entry points,<br/>
+ More resilient push parser mode,<br/>
+ A lot of portability improvement,<br/>
+ Faster XPath evaluation<br/>
+ </li>
+
+ <li> Documentation:<br/>
+ xml2-config.1 markup error (Christian Weisgerber),<br/>
+ libxml(3) manpage typo fix (John Bradshaw),<br/>
+ More cleanups to the documentation part of libxml2 (Daniel Richard G)<br/>
+ </li>
+
+ <li> Portability:<br/>
+ Bug 676544 - fails to build with --without-sax1 (Akira TAGOH),<br/>
+ fix builds not having stdint.h (Rob Richards),<br/>
+ GetProcAddressA is available only on WinCE (Daniel Veillard),<br/>
+ More updates and cleanups on autotools and Makefiles (Daniel Richard G),<br/>
+ More changes for Win32 compilation (Eric Zurcher),<br/>
+ Basic changes for Win32 builds of release 2.9.0: compile buf.c (Eric Zurcher),<br/>
+ Bundles all generated files for python into the distribution (Daniel Richard G),<br/>
+ Fix compiler warnings of wincecompat.c (Patrick Gansterer),<br/>
+ Fix non __GNUC__ build (Patrick Gansterer),<br/>
+ Fix windows unicode build (Patrick Gansterer),<br/>
+ clean redefinition of {v}snprintf in C-source (Roumen Petrov),<br/>
+ use xmlBuf... if DEBUG_INPUT is defined (Roumen Petrov),<br/>
+ fix runtests to use pthreads support for various Unix platforms (Daniel Richard G),<br/>
+ Various "make distcheck" and portability fixups 2nd part (Daniel Richard G),<br/>
+ Various "make distcheck" and portability fixups (Daniel Richard G),<br/>
+ Fix compilation on older Visual Studio (Daniel Veillard)<br/>
+ </li>
+
+ <li> Bug Fixes:<br/>
+ Change the XPath code to percolate allocation errors (Daniel Veillard),<br/>
+ Fix reuse of xmlInitParser (Daniel Veillard),<br/>
+ Fix potential crash on entities errors (Daniel Veillard),<br/>
+ initialize var (Rob Richards),<br/>
+ Fix the XPath arity check to also check the XPath stack limits (Daniel Veillard),<br/>
+ Fix problem with specific and generic error handlers (Pietro Cerutti),<br/>
+ Avoid a potential infinite recursion (Daniel Veillard),<br/>
+ Fix an XSD error when generating internal automata (Daniel Veillard),<br/>
+ Patch for xinclude of text using multibyte characters (Vitaly Ostanin),<br/>
+ Fix a segfault on XSD validation on pattern error (Daniel Veillard),<br/>
+ Fix missing xmlsave.h module which was ignored in recent builds (Daniel Veillard),<br/>
+ Add a missing element check (Daniel Veillard),<br/>
+ Adding various checks on node type though the API (Daniel Veillard),<br/>
+ Namespace nodes can't be unlinked with xmlUnlinkNode (Daniel Veillard),<br/>
+ Fix make dist to include new private header files (Daniel Veillard),<br/>
+ More fixups on the push parser behaviour (Daniel Veillard),<br/>
+ Strengthen behaviour of the push parser in problematic situations (Daniel Veillard),<br/>
+ Enforce XML_PARSER_EOF state handling through the parser (Daniel Veillard),<br/>
+ Fixup limits parser (Daniel Veillard),<br/>
+ Do not fetch external parsed entities (Daniel Veillard),<br/>
+ Fix an error in previous commit (Aron Xu),<br/>
+ Fix entities local buffers size problems (Daniel Veillard),<br/>
+ Fix parser local buffers size problems (Daniel Veillard),<br/>
+ Fix a failure to report xmlreader parsing failures (Daniel Veillard)<br/>
+ </li>
+
+ <li> Improvements:<br/>
+ Keep libxml2.syms when running "make distclean" (Daniel Veillard),<br/>
+ Allow to set the quoting character of an xmlWriter (Csaba Raduly),<br/>
+ Keep non-significant blanks node in HTML parser (Daniel Veillard),<br/>
+ Add a forbidden variable error number and message to XPath (Daniel Veillard),<br/>
+ Support long path names on WNT (Michael Stahl),<br/>
+ Improve HTML escaping of attribute on output (Daniel Veillard),<br/>
+ Handle ICU_LIBS as LIBADD, not LDFLAGS to prevent linking errors (Arfrever Frehtes Taifersar Arahesis),<br/>
+ Switching XPath node sorting to Timsort (Vojtech Fried),<br/>
+ Optimizing '//' in XPath expressions (Nick Wellnhofer),<br/>
+ Expose xmlBufShrink in the public tree API (Daniel Veillard),<br/>
+ Visible HTML elements close the head tag (Conrad Irwin),<br/>
+ Fix file and line report for XSD SAX and reader streaming validation (Daniel Veillard),<br/>
+ Fix const qualifyer to definition of xmlBufferDetach (Daniel Veillard),<br/>
+ minimize use of HAVE_CONFIG_H (Roumen Petrov),<br/>
+ fixup regression in Various "make distcheck" and portability fixups (Roumen Petrov),<br/>
+ Add support for big line numbers in error reporting (Daniel Veillard),<br/>
+ Avoid using xmlBuffer for serialization (Daniel Veillard),<br/>
+ Improve compatibility between xmlBuf and xmlBuffer (Daniel Veillard),<br/>
+ Provide new accessors for xmlOutputBuffer (Daniel Veillard),<br/>
+ Improvements for old buffer compatibility (Daniel Veillard),<br/>
+ Expand the limit test program (Daniel Veillard),<br/>
+ Improve error reporting on parser errors (Daniel Veillard),<br/>
+ Implement some default limits in the XPath module (Daniel Veillard),<br/>
+ Introduce some default parser limits (Daniel Veillard),<br/>
+ Cleanups and new limit APIs for dictionaries (Daniel Veillard),<br/>
+ Fixup for buf.c (Daniel Veillard),<br/>
+ Cleanup URI module memory allocation code (Daniel Veillard),<br/>
+ Extend testlimits (Daniel Veillard),<br/>
+ More avoid quadratic behaviour (Daniel Veillard),<br/>
+ Impose a reasonable limit on PI size (Daniel Veillard),<br/>
+ first version of testlimits new test (Daniel Veillard),<br/>
+ Avoid quadratic behaviour in some push parsing cases (Daniel Veillard),<br/>
+ Impose a reasonable limit on comment size (Daniel Veillard),<br/>
+ Impose a reasonable limit on attribute size (Daniel Veillard),<br/>
+ Harden the buffer code and make it more compatible (Daniel Veillard),<br/>
+ More cleanups for input/buffers code (Daniel Veillard),<br/>
+ Cleanup function xmlBufResetInput(),<br/> to set input from Buffer (Daniel Veillard)
+ Swicth the test program for characters to new input buffers (Daniel Veillard),<br/>
+ Convert the HTML tree module to the new buffers (Daniel Veillard),<br/>
+ Convert of the HTML parser to new input buffers (Daniel Veillard),<br/>
+ Convert the writer to new output buffer and save APIs (Daniel Veillard),<br/>
+ Convert XMLReader to the new input buffers (Daniel Veillard),<br/>
+ New saving functions using xmlBuf and conversion (Daniel Veillard),<br/>
+ Provide new xmlBuf based saving functions (Daniel Veillard),<br/>
+ Convert XInclude to the new input buffers (Daniel Veillard),<br/>
+ Convert catalog code to the new input buffers (Daniel Veillard),<br/>
+ Convert C14N to the new Input buffer (Daniel Veillard),<br/>
+ Convert xmlIO.c to the new input and output buffers (Daniel Veillard),<br/>
+ Convert XML parser to the new input buffers (Daniel Veillard),<br/>
+ Incompatible change to the Input and Output buffers (Daniel Veillard),<br/>
+ Adding new encoding function to deal with the new structures (Daniel Veillard),<br/>
+ Convert XPath to xmlBuf (Daniel Veillard),<br/>
+ Adding a new buf module for buffers (Daniel Veillard),<br/>
+ Memory error within SAX2 reuse common framework (Daniel Veillard),<br/>
+ Fix xmllint --xpath node initialization (Daniel Veillard)<br/>
+ </li>
+
+ <li> Cleanups:<br/>
+ Various cleanups to avoid compiler warnings (Daniel Veillard),<br/>
+ Big space and tab cleanup (Daniel Veillard),<br/>
+ Followup to LibXML2 docs/examples cleanup patch (Daniel Veillard),<br/>
+ Second round of cleanups for LibXML2 docs/examples (Daniel Richard),<br/>
+ Remove all .cvsignore as they are not used anymore (Daniel Veillard),<br/>
+ Fix a Timsort function helper comment (Daniel Veillard),<br/>
+ Small cleanup for valgrind target (Daniel Veillard),<br/>
+ Patch for portability of latin characters in C files (Daniel Veillard),<br/>
+ Cleanup some of the parser code (Daniel Veillard),<br/>
+ Fix a variable name in comment (Daniel Veillard),<br/>
+ Regenerated testapi.c (Daniel Veillard),<br/>
+ Regenerating docs and API files (Daniel Veillard),<br/>
+ Small cleanup of unused variables in test (Daniel Veillard),<br/>
+ Expand .gitignore with more files (Daniel Veillard)<br/>
+ </li>
+</ul>
<h3>2.8.0: May 23 2012</h3>
<ul>
<li>Features:
-- add lzma compression support (Anders F Bjorklund)
+ add lzma compression support (Anders F Bjorklund)
</li>
<li>Documentation:
@@ -2326,7 +2731,9 @@ Schemas <a href="http://www.w3.org/TR/xmlschema-1/">structures</a> and <a
href="http://www.w3.org/TR/xmlschema-2/">datatypes</a> code, beware, all
interfaces are likely to change, there is huge holes, it is clearly a work in
progress and don't even think of putting this code in a production system,
-it's actually not compiled in by default. The real fixes are:</p>
+it's actually not compiled in by default. The real fixes are:
+</p>
+
<ul>
<li>a couple of bugs or limitations introduced in 2.4.20</li>
<li>patches for Borland C++ and MSC by Igor</li>
@@ -2600,9 +3007,10 @@ it's actually not compiled in by default. The real fixes are:</p>
<h3>2.3.9: May 19 2001</h3>
-<p>Lots of bugfixes, and added a basic SGML catalog support:</p>
+<p>Lots of bugfixes, and added a basic SGML catalog support:
+</p>
<ul>
- <li>HTML push bugfix #54891 and another patch from Jonas Borgström</li>
+ <li>HTML push bugfix #54891 and another patch from Jonas Borgstrom</li>
<li>some serious speed optimization again</li>
<li>some documentation cleanups</li>
<li>trying to get better linking on Solaris (-R)</li>
@@ -3563,7 +3971,7 @@ called by the library as it progresses through the XML input.</p>
<p>To get more detailed step-by-step guidance on using the SAX interface of
libxml, see the <a
-href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">nice
+href="http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.html">nice
documentation</a>.written by <a href="mailto:james@daa.com.au">James
Henstridge</a>.</p>
diff --git a/doc/xmldtd.html b/doc/xmldtd.html
index 603bb26..36333f0 100644
--- a/doc/xmldtd.html
+++ b/doc/xmldtd.html
@@ -7,13 +7,16 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Validation &amp; DTDs</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Validation &amp; DTDs</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol><li><a href="#General5">General overview</a></li>
+</style><title>Validation &amp; DTDs</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Validation &amp; DTDs</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol>
+ <li><a href="#General5">General overview</a></li>
<li><a href="#definition">The definition</a></li>
<li><a href="#Simple">Simple rules</a>
- <ol><li><a href="#reference">How to reference a DTD from a document</a></li>
+ <ol>
+ <li><a href="#reference">How to reference a DTD from a document</a></li>
<li><a href="#Declaring">Declaring elements</a></li>
<li><a href="#Declaring1">Declaring attributes</a></li>
- </ol></li>
+ </ol>
+ </li>
<li><a href="#Some">Some examples</a></li>
<li><a href="#validate">How to validate</a></li>
<li><a href="#Other">Other resources</a></li>
@@ -28,7 +31,8 @@ found within your document, what is the formal shape of your document tree
expression for the allowed list of children, or mixed content i.e. both text
and children). The DTD also defines the valid attributes for all elements and
the types of those attributes.</p><h3><a name="definition1" id="definition1">The definition</a></h3><p>The <a href="http://www.w3.org/TR/REC-xml">W3C XML Recommendation</a> (<a href="http://www.xml.com/axml/axml.html">Tim Bray's annotated version of
-Rev1</a>):</p><ul><li><a href="http://www.w3.org/TR/REC-xml#elemdecls">Declaring
+Rev1</a>):</p><ul>
+ <li><a href="http://www.w3.org/TR/REC-xml#elemdecls">Declaring
elements</a></li>
<li><a href="http://www.w3.org/TR/REC-xml#attdecls">Declaring
attributes</a></li>
@@ -40,7 +44,8 @@ harder to design. I will just focus on DTDs for a formats with a fixed simple
structure. It is just a set of basic rules, and definitely not exhaustive nor
usable for complex DTD design.</p><h4><a name="reference1" id="reference1">How to reference a DTD from a document</a>:</h4><p>Assuming the top element of the document is <code>spec</code> and the dtd
is placed in the file <code>mydtd</code> in the subdirectory
-<code>dtds</code> of the directory from where the document were loaded:</p><p><code>&lt;!DOCTYPE spec SYSTEM "dtds/mydtd"&gt;</code></p><p>Notes:</p><ul><li>The system string is actually an URI-Reference (as defined in <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>) so you can use a
+<code>dtds</code> of the directory from where the document were loaded:</p><p><code>&lt;!DOCTYPE spec SYSTEM "dtds/mydtd"&gt;</code></p><p>Notes:</p><ul>
+ <li>The system string is actually an URI-Reference (as defined in <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>) so you can use a
full URL string indicating the location of your DTD on the Web. This is a
really good thing to do if you want others to validate your document.</li>
<li>It is also possible to associate a <code>PUBLIC</code> identifier (a
@@ -76,7 +81,8 @@ of type <code>ID</code>, usable for reference from attribute of type
IDREF:</p><p><code>&lt;!ATTLIST chapter id ID #IMPLIED&gt;</code></p><p>The last value of an attribute definition can be <code>#REQUIRED
</code>meaning that the attribute has to be given, <code>#IMPLIED</code>
meaning that it is optional, or the default value (possibly prefixed by
-<code>#FIXED</code> if it is the only allowed).</p><p>Notes:</p><ul><li>Usually the attributes pertaining to a given element are declared in a
+<code>#FIXED</code> if it is the only allowed).</p><p>Notes:</p><ul>
+ <li>Usually the attributes pertaining to a given element are declared in a
single expression, but it is just a convention adopted by a lot of DTD
writers:
<pre>&lt;!ATTLIST termdef
@@ -94,7 +100,8 @@ For example the following validates a copy of the first revision of the XML
1.0 specification:</p><p><code>xmllint --valid --noout test/valid/REC-xml-19980210.xml</code></p><p>the -- noout is used to disable output of the resulting tree.</p><p>The <code>--dtdvalid dtd</code> allows validation of the document(s)
against a given DTD.</p><p>Libxml2 exports an API to handle DTDs and validation, check the <a href="http://xmlsoft.org/html/libxml-valid.html">associated
description</a>.</p><h3><a name="Other1" id="Other1">Other resources</a></h3><p>DTDs are as old as SGML. So there may be a number of examples on-line, I
-will just list one for now, others pointers welcome:</p><ul><li><a href="http://www.xml101.com:8081/dtd/">XML-101 DTD</a></li>
+will just list one for now, others pointers welcome:</p><ul>
+ <li><a href="http://www.xml101.com:8081/dtd/">XML-101 DTD</a></li>
</ul><p>I suggest looking at the examples found under test/valid/dtd and any of
the large number of books available on XML. The dia example in test/valid
should be both simple and complete enough to allow you to build your own.</p><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/xmlio.html b/doc/xmlio.html
index 31f5df5..51bb646 100644
--- a/doc/xmlio.html
+++ b/doc/xmlio.html
@@ -7,14 +7,16 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>I/O Interfaces</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>I/O Interfaces</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol><li><a href="#General1">General overview</a></li>
+</style><title>I/O Interfaces</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>I/O Interfaces</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol>
+ <li><a href="#General1">General overview</a></li>
<li><a href="#basic">The basic buffer type</a></li>
<li><a href="#Input">Input I/O handlers</a></li>
<li><a href="#Output">Output I/O handlers</a></li>
<li><a href="#entities">The entities loader</a></li>
<li><a href="#Example2">Example of customized I/O</a></li>
</ol><h3><a name="General1" id="General1">General overview</a></h3><p>The module <code><a href="http://xmlsoft.org/html/libxml-xmlio.html">xmlIO.h</a></code> provides
-the interfaces to the libxml2 I/O system. This consists of 4 main parts:</p><ul><li>Entities loader, this is a routine which tries to fetch the entities
+the interfaces to the libxml2 I/O system. This consists of 4 main parts:</p><ul>
+ <li>Entities loader, this is a routine which tries to fetch the entities
(files) based on their PUBLIC and SYSTEM identifiers. The default loader
don't look at the public identifier since libxml2 do not maintain a
catalog. You can redefine you own entity loader by using
@@ -33,7 +35,8 @@ the interfaces to the libxml2 I/O system. This consists of 4 main parts:</p><ul>
handlers for certain names.</p>
</li>
</ul><p>The general mechanism used when loading http://rpmfind.net/xml.html for
-example in the HTML parser is the following:</p><ol><li>The default entity loader calls <code>xmlNewInputFromFile()</code> with
+example in the HTML parser is the following:</p><ol>
+ <li>The default entity loader calls <code>xmlNewInputFromFile()</code> with
the parsing context and the URI string.</li>
<li>the URI string is checked against the existing registered handlers
using their match() callback function, if the HTTP module was compiled
@@ -102,7 +105,8 @@ int main(..) {
}</pre><h3><a name="Example2" id="Example2">Example of customized I/O</a></h3><p>This example come from <a href="http://xmlsoft.org/messages/0708.html">a
real use case</a>, xmlDocDump() closes the FILE * passed by the application
and this was a problem. The <a href="http://xmlsoft.org/messages/0711.html">solution</a> was to redefine a
-new output handler with the closing call deactivated:</p><ol><li>First define a new I/O output allocator where the output don't close
+new output handler with the closing call deactivated:</p><ol>
+ <li>First define a new I/O output allocator where the output don't close
the file:
<pre>xmlOutputBufferPtr
xmlOutputBufferCreateOwn(FILE *file, xmlCharEncodingHandlerPtr encoder) {
diff --git a/doc/xmllint.1 b/doc/xmllint.1
index 10caf40..540a114 100644
--- a/doc/xmllint.1
+++ b/doc/xmllint.1
@@ -1,18 +1,38 @@
-.\" ** You probably do not want to edit this file directly **
-.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
-.\" Instead of manually editing it, you probably should edit the DocBook XML
-.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "XMLLINT" "1" "$Date$" "libxml2" ""
+'\" t
+.\" Title: xmllint
+.\" Author: John Fleck <jfleck@inkstain.net>
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: $Date$
+.\" Manual: xmllint Manual
+.\" Source: libxml2
+.\" Language: English
+.\"
+.TH "XMLLINT" "1" "$Date$" "libxml2" "xmllint Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
.SH "NAME"
xmllint \- command line XML tool
.SH "SYNOPSIS"
-.HP 8
-\fBxmllint\fR [\fB\-\-version\fR \fB\-\-debug\fR \fB\-\-shell\fR \fB\-\-debugent\fR \fB\-\-copy\fR \fB\-\-recover\fR \fB\-\-noent\fR \fB\-\-noout\fR \fB\-\-nonet\fR \fB\-\-path\ "\fR\fB\fIPATH(S)\fR\fR\fB"\fR \fB\-\-load\-trace\fR \fB\-\-htmlout\fR \fB\-\-nowrap\fR \fB\-\-valid\fR \fB\-\-postvalid\fR \fB\-\-dtdvalid\ \fR\fB\fIURL\fR\fR \fB\-\-dtdvalidfpi\ \fR\fB\fIFPI\fR\fR \fB\-\-timing\fR \fB\-\-output\ \fR\fB\fIFILE\fR\fR \fB\-\-repeat\fR \fB\-\-insert\fR \fB\-\-compress\fR \fB\-\-html\fR \fB\-\-xmlout\fR \fB\-\-push\fR \fB\-\-memory\fR \fB\-\-maxmem\ \fR\fB\fINBBYTES\fR\fR \fB\-\-nowarning\fR \fB\-\-noblanks\fR \fB\-\-nocdata\fR \fB\-\-format\fR \fB\-\-encode\ \fR\fB\fIENCODING\fR\fR \fB\-\-dropdtd\fR \fB\-\-nsclean\fR \fB\-\-testIO\fR \fB\-\-catalogs\fR \fB\-\-nocatalogs\fR \fB\-\-auto\fR \fB\-\-xinclude\fR \fB\-\-noxincludenode\fR \fB\-\-loaddtd\fR \fB\-\-dtdattr\fR \fB\-\-stream\fR \fB\-\-walker\fR \fB\-\-pattern\ \fR\fB\fIPATTERNVALUE\fR\fR \fB\-\-chkregister\fR \fB\-\-relaxng\ \fR\fB\fISCHEMA\fR\fR \fB\-\-schema\ \fR\fB\fISCHEMA\fR\fR \fB\-\-c14n\fR] {\fIXML\-FILE(S)\fR... \-}
-.HP 8
+.HP \w'\fBxmllint\fR\ 'u
+\fBxmllint\fR [\fB\-\-version\fR | \fB\-\-debug\fR | \fB\-\-shell\fR | \fB\-\-xpath\ "\fR\fB\fIXPath_expression\fR\fR\fB"\fR | \fB\-\-debugent\fR | \fB\-\-copy\fR | \fB\-\-recover\fR | \fB\-\-noent\fR | \fB\-\-noout\fR | \fB\-\-nonet\fR | \fB\-\-path\ "\fR\fB\fIPATH(S)\fR\fR\fB"\fR | \fB\-\-load\-trace\fR | \fB\-\-htmlout\fR | \fB\-\-nowrap\fR | \fB\-\-valid\fR | \fB\-\-postvalid\fR | \fB\-\-dtdvalid\ \fR\fB\fIURL\fR\fR | \fB\-\-dtdvalidfpi\ \fR\fB\fIFPI\fR\fR | \fB\-\-timing\fR | \fB\-\-output\ \fR\fB\fIFILE\fR\fR | \fB\-\-repeat\fR | \fB\-\-insert\fR | \fB\-\-compress\fR | \fB\-\-html\fR | \fB\-\-xmlout\fR | \fB\-\-push\fR | \fB\-\-memory\fR | \fB\-\-maxmem\ \fR\fB\fINBBYTES\fR\fR | \fB\-\-nowarning\fR | \fB\-\-noblanks\fR | \fB\-\-nocdata\fR | \fB\-\-format\fR | \fB\-\-encode\ \fR\fB\fIENCODING\fR\fR | \fB\-\-dropdtd\fR | \fB\-\-nsclean\fR | \fB\-\-testIO\fR | \fB\-\-catalogs\fR | \fB\-\-nocatalogs\fR | \fB\-\-auto\fR | \fB\-\-xinclude\fR | \fB\-\-noxincludenode\fR | \fB\-\-loaddtd\fR | \fB\-\-dtdattr\fR | \fB\-\-stream\fR | \fB\-\-walker\fR | \fB\-\-pattern\ \fR\fB\fIPATTERNVALUE\fR\fR | \fB\-\-chkregister\fR | \fB\-\-relaxng\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-schema\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-c14n\fR] {\fIXML\-FILE(S)\fR... | \-}
+.HP \w'\fBxmllint\fR\ 'u
\fBxmllint\fR \fB\-\-help\fR
.SH "DESCRIPTION"
.PP
@@ -24,404 +44,604 @@ files, specified on the command line as
\fIXML\-FILE\fR
(or the standard input if the filename provided is
\fB\-\fR
-). It prints various types of output, depending upon the options selected. It is useful for detecting errors both in
+)\&. It prints various types of output, depending upon the options selected\&. It is useful for detecting errors both in
XML
code and in the
XML
-parser itself.
+parser itself\&.
.PP
\fBxmllint\fR
is included in
-\fBlibxml\fR(3).
+\fBlibxml\fR(3)\&.
.SH "OPTIONS"
.PP
\fBxmllint\fR
accepts the following options (in alphabetical order):
-.TP
+.PP
\fB\-\-auto\fR
-Generate a small document for testing purposes.
-.TP
+.RS 4
+Generate a small document for testing purposes\&.
+.RE
+.PP
\fB\-\-catalogs\fR
+.RS 4
Use the
SGML
catalog(s) from
-\fBSGML_CATALOG_FILES\fR. Otherwise
+\fBSGML_CATALOG_FILES\fR\&. Otherwise
XML
catalogs starting from
-\fI/etc/xml/catalog\fR
-are used by default.
-.TP
+/etc/xml/catalog
+are used by default\&.
+.RE
+.PP
\fB\-\-chkregister\fR
-Turn on node registration. Useful for developers testing
+.RS 4
+Turn on node registration\&. Useful for developers testing
\fBlibxml\fR(3)
-node tracking code.
-.TP
+node tracking code\&.
+.RE
+.PP
\fB\-\-compress\fR
+.RS 4
Turn on
\fBgzip\fR(1)
-compression of output.
-.TP
+compression of output\&.
+.RE
+.PP
\fB\-\-copy\fR
-Test the internal copy implementation.
-.TP
+.RS 4
+Test the internal copy implementation\&.
+.RE
+.PP
\fB\-\-c14n\fR
+.RS 4
Use the W3C
XML
Canonicalisation (C14N) to serialize the result of parsing to
-\fIstdout\fR. It keeps comments in the result.
-.TP
+stdout\&. It keeps comments in the result\&.
+.RE
+.PP
\fB\-\-dtdvalid \fR\fB\fIURL\fR\fR
+.RS 4
Use the
DTD
specified by an
\fIURL\fR
-for validation.
-.TP
+for validation\&.
+.RE
+.PP
\fB\-\-dtdvalidfpi \fR\fB\fIFPI\fR\fR
+.RS 4
Use the
DTD
specified by a Formal Public Identifier
\fIFPI\fR
-for validation, note that this will require a catalog exporting that Formal Public Identifier to work.
-.TP
+for validation, note that this will require a catalog exporting that Formal Public Identifier to work\&.
+.RE
+.PP
\fB\-\-debug\fR
-Parse a file and output an annotated tree of the in\-memory version of the document.
-.TP
+.RS 4
+Parse a file and output an annotated tree of the in\-memory version of the document\&.
+.RE
+.PP
\fB\-\-debugent\fR
-Debug the entities defined in the document.
-.TP
+.RS 4
+Debug the entities defined in the document\&.
+.RE
+.PP
\fB\-\-dropdtd\fR
+.RS 4
Remove
DTD
-from output.
-.TP
+from output\&.
+.RE
+.PP
\fB\-\-dtdattr\fR
+.RS 4
Fetch external
DTD
-and populate the tree with inherited attributes.
-.TP
+and populate the tree with inherited attributes\&.
+.RE
+.PP
\fB\-\-encode \fR\fB\fIENCODING\fR\fR
-Output in the given encoding.
-.TP
+.RS 4
+Output in the given encoding\&. Note that this works for full document not fragments or result from XPath queries\&.
+.RE
+.PP
\fB\-\-format\fR
-Reformat and reindent the output. The
+.RS 4
+Reformat and reindent the output\&. The
\fBXMLLINT_INDENT\fR
-environment variable controls the indentation. The default value is two spaces " ").
-.TP
+environment variable controls the indentation\&. The default value is two spaces " ")\&.
+.RE
+.PP
\fB\-\-help\fR
+.RS 4
Print out a short usage summary for
-\fBxmllint\fR.
-.TP
+\fBxmllint\fR\&.
+.RE
+.PP
\fB\-\-html\fR
+.RS 4
Use the
HTML
-parser.
-.TP
+parser\&.
+.RE
+.PP
\fB\-\-htmlout\fR
+.RS 4
Output results as an
HTML
-file. This causes
+file\&. This causes
\fBxmllint\fR
to output the necessary
HTML
-tags surrounding the result tree output so the results can be displayed/viewed in a browser.
-.TP
+tags surrounding the result tree output so the results can be displayed/viewed in a browser\&.
+.RE
+.PP
\fB\-\-insert\fR
-Test for valid insertions.
-.TP
+.RS 4
+Test for valid insertions\&.
+.RE
+.PP
\fB\-\-loaddtd\fR
+.RS 4
Fetch an external
-DTD.
-.TP
+DTD\&.
+.RE
+.PP
\fB\-\-load\-trace\fR
+.RS 4
Display all the documents loaded during the processing to
-\fIstderr\fR.
-.TP
+stderr\&.
+.RE
+.PP
\fB\-\-maxmem \fR\fB\fINNBYTES\fR\fR
-Test the parser memory support.
+.RS 4
+Test the parser memory support\&.
\fINNBYTES\fR
-is the maximum number of bytes the library is allowed to allocate. This can also be used to make sure batch processing of
+is the maximum number of bytes the library is allowed to allocate\&. This can also be used to make sure batch processing of
XML
-files will not exhaust the virtual memory of the server running them.
-.TP
+files will not exhaust the virtual memory of the server running them\&.
+.RE
+.PP
\fB\-\-memory\fR
-Parse from memory.
-.TP
+.RS 4
+Parse from memory\&.
+.RE
+.PP
\fB\-\-noblanks\fR
-Drop ignorable blank spaces.
-.TP
+.RS 4
+Drop ignorable blank spaces\&.
+.RE
+.PP
\fB\-\-nocatalogs\fR
-Do not use any catalogs.
-.TP
+.RS 4
+Do not use any catalogs\&.
+.RE
+.PP
\fB\-\-nocdata\fR
-Substitute CDATA section by equivalent text nodes.
-.TP
+.RS 4
+Substitute CDATA section by equivalent text nodes\&.
+.RE
+.PP
\fB\-\-noent\fR
-Substitute entity values for entity references. By default,
+.RS 4
+Substitute entity values for entity references\&. By default,
\fBxmllint\fR
-leaves entity references in place.
-.TP
+leaves entity references in place\&.
+.RE
+.PP
\fB\-\-nonet\fR
+.RS 4
Do not use the Internet to fetch
-DTDs or entities.
-.TP
+DTDs or entities\&.
+.RE
+.PP
\fB\-\-noout\fR
-Suppress output. By default,
+.RS 4
+Suppress output\&. By default,
\fBxmllint\fR
-outputs the result tree.
-.TP
+outputs the result tree\&.
+.RE
+.PP
\fB\-\-nowarning\fR
-Do not emit warnings from the parser and/or validator.
-.TP
+.RS 4
+Do not emit warnings from the parser and/or validator\&.
+.RE
+.PP
\fB\-\-nowrap\fR
+.RS 4
Do not output
HTML
-doc wrapper.
-.TP
+doc wrapper\&.
+.RE
+.PP
\fB\-\-noxincludenode\fR
-Do XInclude processing but do not generate XInclude start and end nodes.
-.TP
+.RS 4
+Do XInclude processing but do not generate XInclude start and end nodes\&.
+.RE
+.PP
\fB\-\-nsclean\fR
-Remove redundant namespace declarations.
-.TP
+.RS 4
+Remove redundant namespace declarations\&.
+.RE
+.PP
\fB\-\-output \fR\fB\fIFILE\fR\fR
+.RS 4
Define a file path where
\fBxmllint\fR
-will save the result of parsing. Usually the programs build a tree and save it on
-\fIstdout\fR, with this option the result
+will save the result of parsing\&. Usually the programs build a tree and save it on
+stdout, with this option the result
XML
-instance will be saved onto a file.
-.TP
+instance will be saved onto a file\&.
+.RE
+.PP
\fB\-\-path "\fR\fB\fIPATH(S)\fR\fR\fB"\fR
+.RS 4
Use the (space\- or colon\-separated) list of filesystem paths specified by
\fIPATHS\fR
to load
-DTDs or entities. Enclose space\-separated lists by quotation marks.
-.TP
+DTDs or entities\&. Enclose space\-separated lists by quotation marks\&.
+.RE
+.PP
\fB\-\-pattern \fR\fB\fIPATTERNVALUE\fR\fR
-Used to exercise the pattern recognition engine, which can be used with the reader interface to the parser. It allows to select some nodes in the document based on an XPath (subset) expression. Used for debugging.
-.TP
+.RS 4
+Used to exercise the pattern recognition engine, which can be used with the reader interface to the parser\&. It allows to select some nodes in the document based on an XPath (subset) expression\&. Used for debugging\&.
+.RE
+.PP
\fB\-\-postvalid\fR
-Validate after parsing has completed.
-.TP
+.RS 4
+Validate after parsing has completed\&.
+.RE
+.PP
\fB\-\-push\fR
-Use the push mode of the parser.
-.TP
+.RS 4
+Use the push mode of the parser\&.
+.RE
+.PP
\fB\-\-recover\fR
-Output any parsable portions of an invalid document.
-.TP
+.RS 4
+Output any parsable portions of an invalid document\&.
+.RE
+.PP
\fB\-\-relaxng \fR\fB\fISCHEMA\fR\fR
+.RS 4
Use RelaxNG file named
\fISCHEMA\fR
-for validation.
-.TP
+for validation\&.
+.RE
+.PP
\fB\-\-repeat\fR
-Repeat 100 times, for timing or profiling.
-.TP
+.RS 4
+Repeat 100 times, for timing or profiling\&.
+.RE
+.PP
\fB\-\-schema \fR\fB\fISCHEMA\fR\fR
+.RS 4
Use a W3C
XML
Schema file named
\fISCHEMA\fR
-for validation.
-.TP
+for validation\&.
+.RE
+.PP
\fB\-\-shell\fR
-Run a navigating shell. Details on available commands in shell mode are below (see
-the section called \(lqSHELL COMMANDS\(rq).
-.TP
+.RS 4
+Run a navigating shell\&. Details on available commands in shell mode are below (see
+the section called \(lqSHELL COMMANDS\(rq)\&.
+.RE
+.PP
+\fB\-\-xpath "\fR\fB\fIXPath_expression\fR\fR\fB"\fR
+.RS 4
+Run an XPath expression given as argument and print the result\&. In case of a nodeset result, each node in the node set is serialized in full in the output\&. In case of an empty node set the "XPath set is empty" result will be shown and an error exit code will be returned\&.
+.RE
+.PP
\fB\-\-stream\fR
+.RS 4
Use streaming
API
\- useful when used in combination with
\fB\-\-relaxng\fR
or
\fB\-\-valid\fR
-options for validation of files that are too large to be held in memory.
-.TP
+options for validation of files that are too large to be held in memory\&.
+.RE
+.PP
\fB\-\-testIO\fR
-Test user input/output support.
-.TP
+.RS 4
+Test user input/output support\&.
+.RE
+.PP
\fB\-\-timing\fR
+.RS 4
Output information about the time it takes
\fBxmllint\fR
-to perform the various steps.
-.TP
+to perform the various steps\&.
+.RE
+.PP
\fB\-\-valid\fR
-Determine if the document is a valid instance of the included Document Type Definition (DTD). A
+.RS 4
+Determine if the document is a valid instance of the included Document Type Definition (DTD)\&. A
DTD
to be validated against also can be specified at the command line using the
\fB\-\-dtdvalid\fR
-option. By default,
+option\&. By default,
\fBxmllint\fR
-also checks to determine if the document is well\-formed.
-.TP
+also checks to determine if the document is well\-formed\&.
+.RE
+.PP
\fB\-\-version\fR
+.RS 4
Display the version of
\fBlibxml\fR(3)
-used.
-.TP
+used\&.
+.RE
+.PP
\fB\-\-walker\fR
+.RS 4
Test the walker module, which is a reader interface but for a document tree, instead of using the reader
API
-on an unparsed document it works on an existing in\-memory tree. Used for debugging.
-.TP
+on an unparsed document it works on an existing in\-memory tree\&. Used for debugging\&.
+.RE
+.PP
\fB\-\-xinclude\fR
-Do XInclude processing.
-.TP
+.RS 4
+Do XInclude processing\&.
+.RE
+.PP
\fB\-\-xmlout\fR
+.RS 4
Used in conjunction with
-\fB\-\-html\fR. Usually when
+\fB\-\-html\fR\&. Usually when
HTML
is parsed the document is saved with the
HTML
-serializer. But with this option the resulting document is saved with the
+serializer\&. But with this option the resulting document is saved with the
XML
-serializer. This is primarily used to generate
+serializer\&. This is primarily used to generate
XHTML
from
HTML
-input.
+input\&.
+.RE
.SH "SHELL COMMANDS"
.PP
\fBxmllint\fR
offers an interactive shell mode invoked with the
\fB\-\-shell\fR
-command. Available commands in shell mode include (in alphabetical order):
-.TP
+command\&. Available commands in shell mode include (in alphabetical order):
+.PP
\fBbase\fR
+.RS 4
Display
XML
-base of the node.
-.TP
+base of the node\&.
+.RE
+.PP
\fBbye\fR
-Leave the shell.
-.TP
+.RS 4
+Leave the shell\&.
+.RE
+.PP
\fBcat \fR\fB\fINODE\fR\fR
-Display the given node or the current one.
-.TP
+.RS 4
+Display the given node or the current one\&.
+.RE
+.PP
\fBcd \fR\fB\fIPATH\fR\fR
-Change the current node to the given path (if unique) or root if no argument is given.
-.TP
+.RS 4
+Change the current node to the given path (if unique) or root if no argument is given\&.
+.RE
+.PP
\fBdir \fR\fB\fIPATH\fR\fR
-Dumps information about the node (namespace, attributes, content).
-.TP
+.RS 4
+Dumps information about the node (namespace, attributes, content)\&.
+.RE
+.PP
\fBdu \fR\fB\fIPATH\fR\fR
-Show the structure of the subtree under the given path or the current node.
-.TP
+.RS 4
+Show the structure of the subtree under the given path or the current node\&.
+.RE
+.PP
\fBexit\fR
-Leave the shell.
-.TP
+.RS 4
+Leave the shell\&.
+.RE
+.PP
\fBhelp\fR
-Show this help.
-.TP
+.RS 4
+Show this help\&.
+.RE
+.PP
\fBfree\fR
-Display memory usage.
-.TP
+.RS 4
+Display memory usage\&.
+.RE
+.PP
\fBload \fR\fB\fIFILENAME\fR\fR
-Load a new document with the given filename.
-.TP
+.RS 4
+Load a new document with the given filename\&.
+.RE
+.PP
\fBls \fR\fB\fIPATH\fR\fR
-List contents of the given path or the current directory.
-.TP
+.RS 4
+List contents of the given path or the current directory\&.
+.RE
+.PP
\fBpwd\fR
-Display the path to the current node.
-.TP
+.RS 4
+Display the path to the current node\&.
+.RE
+.PP
\fBquit\fR
-Leave the shell.
-.TP
+.RS 4
+Leave the shell\&.
+.RE
+.PP
\fBsave \fR\fB\fIFILENAME\fR\fR
-Save the current document to the given filename or to the original name.
-.TP
+.RS 4
+Save the current document to the given filename or to the original name\&.
+.RE
+.PP
\fBvalidate\fR
-Check the document for errors.
-.TP
+.RS 4
+Check the document for errors\&.
+.RE
+.PP
\fBwrite \fR\fB\fIFILENAME\fR\fR
-Write the current node to the given filename.
+.RS 4
+Write the current node to the given filename\&.
+.RE
.SH "ENVIRONMENT"
-.TP
+.PP
\fBSGML_CATALOG_FILES\fR
+.RS 4
SGML
-catalog behavior can be changed by redirecting queries to the user's own set of catalogs. This can be done by setting the
+catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the
\fBSGML_CATALOG_FILES\fR
-environment variable to a list of catalogs. An empty one should deactivate loading the default
-\fI/etc/sgml/catalog\fR
-catalog.
-.TP
+environment variable to a list of catalogs\&. An empty one should deactivate loading the default
+/etc/sgml/catalog
+catalog\&.
+.RE
+.PP
\fBXML_CATALOG_FILES\fR
+.RS 4
XML
-catalog behavior can be changed by redirecting queries to the user's own set of catalogs. This can be done by setting the
+catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the
\fBXML_CATALOG_FILES\fR
-environment variable to a list of catalogs. An empty one should deactivate loading the default
-\fI/etc/xml/catalog\fR
-catalog.
-.TP
+environment variable to a list of catalogs\&. An empty one should deactivate loading the default
+/etc/xml/catalog
+catalog\&.
+.RE
+.PP
\fBXML_DEBUG_CATALOG\fR
+.RS 4
Setting the environment variable
\fBXML_DEBUG_CATALOG\fR
to
\fInon\-zero\fR
using the
\fBexport\fR
-command outputs debugging information related to catalog operations.
-.TP
+command outputs debugging information related to catalog operations\&.
+.RE
+.PP
\fBXMLLINT_INDENT\fR
+.RS 4
Setting the environment variable
\fBXMLLINT_INDENT\fR
-controls the indentation. The default value is two spaces " ".
+controls the indentation\&. The default value is two spaces " "\&.
+.RE
.SH "DIAGNOSTICS"
.PP
\fBxmllint\fR
-return codes provide information that can be used when calling it from scripts.
-.TP
+return codes provide information that can be used when calling it from scripts\&.
+.PP
\fB0\fR
+.RS 4
No error
-.TP
+.RE
+.PP
\fB1\fR
+.RS 4
Unclassified
-.TP
+.RE
+.PP
\fB2\fR
+.RS 4
Error in
DTD
-.TP
+.RE
+.PP
\fB3\fR
+.RS 4
Validation error
-.TP
+.RE
+.PP
\fB4\fR
+.RS 4
Validation error
-.TP
+.RE
+.PP
\fB5\fR
+.RS 4
Error in schema compilation
-.TP
+.RE
+.PP
\fB6\fR
+.RS 4
Error writing output
-.TP
+.RE
+.PP
\fB7\fR
+.RS 4
Error in pattern (generated when
\fB\-\-pattern\fR
option is used)
-.TP
+.RE
+.PP
\fB8\fR
+.RS 4
Error in Reader registration (generated when
\fB\-\-chkregister\fR
option is used)
-.TP
+.RE
+.PP
\fB9\fR
+.RS 4
Out of memory error
+.RE
.SH "SEE ALSO"
.PP
\fBlibxml\fR(3)
.PP
More information can be found at
-.TP 3
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fBlibxml\fR(3)
web page
-\fI\%http://www.xmlsoft.org/\fR
-.TP
-\(bu
+\m[blue]\fB\%http://www.xmlsoft.org/\fR\m[]
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
W3C
XSLT
page
-\fI\%http://www.w3.org/TR/xslt\fR
-.SH "AUTHOR"
-John Fleck <jfleck@inkstain.net>, Ziying Sherwin <sherwin@nlm.nih.gov>, Heiko Rupp <hwr@pilhuhn.de>.
+\m[blue]\fB\%http://www.w3.org/TR/xslt\fR\m[]
+.RE
+.sp
+.SH "AUTHORS"
+.PP
+\fBJohn Fleck\fR <\&jfleck@inkstain\&.net\&>
+.RS 4
+Author.
+.RE
+.PP
+\fBZiying Sherwin\fR <\&sherwin@nlm\&.nih\&.gov\&>
+.RS 4
+Author.
+.RE
+.PP
+\fBHeiko Rupp\fR <\&hwr@pilhuhn\&.de\&>
+.RS 4
+Author.
+.RE
+.SH "COPYRIGHT"
+.br
+Copyright \(co 2001, 2004
+.br
diff --git a/doc/xmllint.xml b/doc/xmllint.xml
index 9a41b4e..1008179 100644
--- a/doc/xmllint.xml
+++ b/doc/xmllint.xml
@@ -69,6 +69,7 @@
<arg choice="plain"><option>--version</option></arg>
<arg choice="plain"><option>--debug</option></arg>
<arg choice="plain"><option>--shell</option></arg>
+ <arg choice="plain"><option>--xpath "<replaceable class="option">XPath_expression</replaceable>"</option></arg>
<arg choice="plain"><option>--debugent</option></arg>
<arg choice="plain"><option>--copy</option></arg>
<arg choice="plain"><option>--recover</option></arg>
@@ -270,7 +271,7 @@
<varlistentry>
<term><option>--encode <replaceable class="option">ENCODING</replaceable></option></term>
<listitem>
- <para>Output in the given encoding.</para>
+ <para>Output in the given encoding. Note that this works for full document not fragments or result from XPath queries.</para>
</listitem>
</varlistentry>
@@ -528,6 +529,19 @@
</varlistentry>
<varlistentry>
+ <term><option>--xpath "<replaceable class="option">XPath_expression</replaceable>"</option></term>
+ <listitem>
+ <para>
+ Run an XPath expression given as argument and print the
+ result. In case of a nodeset result, each node in the
+ node set is serialized in full in the output. In case
+ of an empty node set the "XPath set is empty" result
+ will be shown and an error exit code will be returned.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>--stream</option></term>
<listitem>
<para>
diff --git a/doc/xmlmem.html b/doc/xmlmem.html
index a979f7d..ba9e517 100644
--- a/doc/xmlmem.html
+++ b/doc/xmlmem.html
@@ -7,21 +7,24 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Memory Management</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Memory Management</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol><li><a href="#General3">General overview</a></li>
+</style><title>Memory Management</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Memory Management</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Content:</p><ol>
+ <li><a href="#General3">General overview</a></li>
<li><a href="#setting">Setting libxml2 set of memory routines</a></li>
<li><a href="#cleanup">Cleaning up after using the library</a></li>
<li><a href="#Debugging">Debugging routines</a></li>
<li><a href="#General4">General memory requirements</a></li>
<li><a href="#Compacting">Returning memory to the kernel</a></li>
</ol><h3><a name="General3" id="General3">General overview</a></h3><p>The module <code><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlmemory.h</a></code>
-provides the interfaces to the libxml2 memory system:</p><ul><li>libxml2 does not use the libc memory allocator directly but xmlFree(),
+provides the interfaces to the libxml2 memory system:</p><ul>
+ <li>libxml2 does not use the libc memory allocator directly but xmlFree(),
xmlMalloc() and xmlRealloc()</li>
<li>those routines can be reallocated to a specific set of routine, by
default the libc ones i.e. free(), malloc() and realloc()</li>
<li>the xmlmemory.c module includes a set of debugging routine</li>
</ul><h3><a name="setting" id="setting">Setting libxml2 set of memory routines</a></h3><p>It is sometimes useful to not use the default memory allocator, either for
debugging, analysis or to implement a specific behaviour on memory management
-(like on embedded systems). Two function calls are available to do so:</p><ul><li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemGet
+(like on embedded systems). Two function calls are available to do so:</p><ul>
+ <li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemGet
()</a> which return the current set of functions in use by the parser</li>
<li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemSetup()</a>
which allow to set up a new set of memory allocation functions</li>
@@ -31,7 +34,8 @@ compatibles).</p><h3><a name="cleanup" id="cleanup">Cleaning up after using the
allocation before the parser is fully functional (some encoding structures
for example). This also mean that once parsing is finished there is a tiny
amount of memory (a few hundred bytes) which can be recollected if you don't
-reuse the library or any document built with it:</p><ul><li><a href="http://xmlsoft.org/html/libxml-parser.html">xmlCleanupParser
+reuse the library or any document built with it:</p><ul>
+ <li><a href="http://xmlsoft.org/html/libxml-parser.html">xmlCleanupParser
()</a> is a centralized routine to free the library state and data. Note
that it won't deallocate any produced tree if any (use the xmlFreeDoc()
and related routines for this). This should be called only when the library
@@ -47,7 +51,8 @@ of the consequences in multithreaded applications.</p><h3><a name="Debugging" id
a set of memory allocation debugging routines keeping track of all allocated
blocks and the location in the code where the routine was called. A couple of
other debugging routines allow to dump the memory allocated infos to a file
-or call a specific routine when a given block number is allocated:</p><ul><li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMallocLoc()</a>
+or call a specific routine when a given block number is allocated:</p><ul>
+ <li><a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMallocLoc()</a>
<a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlReallocLoc()</a>
and <a href="http://xmlsoft.org/html/libxml-xmlmemory.html">xmlMemStrdupLoc()</a>
are the memory debugging replacement allocation routines</li>
@@ -63,7 +68,8 @@ resulting in major portability problems!).</p><p>If the .memdump reports a leak,
also tries to give some information about the content and structure of the
allocated blocks left. This is sufficient in most cases to find the culprit,
but not always. Assuming the allocation problem is reproducible, it is
-possible to find more easily:</p><ol><li>write down the block number xxxx not allocated</li>
+possible to find more easily:</p><ol>
+ <li>write down the block number xxxx not allocated</li>
<li>export the environment variable XML_MEM_BREAKPOINT=xxxx , the easiest
when using GDB is to simply give the command
<p><code>set environment XML_MEM_BREAKPOINT xxxx</code></p>
@@ -81,7 +87,8 @@ used and proved extremely efficient until now. Lately I have also used <a href="
success, it is tied to the i386 architecture since it works by emulating the
processor and instruction set, it is slow but extremely efficient, i.e. it
spot memory usage errors in a very precise way.</p><h3><a name="General4" id="General4">General memory requirements</a></h3><p>How much libxml2 memory require ? It's hard to tell in average it depends
-of a number of things:</p><ul><li>the parser itself should work in a fixed amount of memory, except for
+of a number of things:</p><ul>
+ <li>the parser itself should work in a fixed amount of memory, except for
information maintained about the stacks of names and entities locations.
The I/O and encoding handlers will probably account for a few KBytes.
This is true for both the XML and HTML parser (though the HTML parser
diff --git a/elfgcchack.h b/elfgcchack.h
index 84e8151..8c52884 100644
--- a/elfgcchack.h
+++ b/elfgcchack.h
@@ -1061,7 +1061,7 @@ extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl__internal_alias __attrib
#endif
#endif
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
#ifdef bottom_tree
#undef xmlAddPrevSibling
extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling __attribute((alias("xmlAddPrevSibling__internal_alias")));
@@ -1343,6 +1343,68 @@ extern __typeof (xmlBoolToText) xmlBoolToText__internal_alias __attribute((visib
#endif
#endif
+#ifdef bottom_buf
+#undef xmlBufContent
+extern __typeof (xmlBufContent) xmlBufContent __attribute((alias("xmlBufContent__internal_alias")));
+#else
+#ifndef xmlBufContent
+extern __typeof (xmlBufContent) xmlBufContent__internal_alias __attribute((visibility("hidden")));
+#define xmlBufContent xmlBufContent__internal_alias
+#endif
+#endif
+
+#ifdef bottom_buf
+#undef xmlBufEnd
+extern __typeof (xmlBufEnd) xmlBufEnd __attribute((alias("xmlBufEnd__internal_alias")));
+#else
+#ifndef xmlBufEnd
+extern __typeof (xmlBufEnd) xmlBufEnd__internal_alias __attribute((visibility("hidden")));
+#define xmlBufEnd xmlBufEnd__internal_alias
+#endif
+#endif
+
+#ifdef bottom_tree
+#undef xmlBufGetNodeContent
+extern __typeof (xmlBufGetNodeContent) xmlBufGetNodeContent __attribute((alias("xmlBufGetNodeContent__internal_alias")));
+#else
+#ifndef xmlBufGetNodeContent
+extern __typeof (xmlBufGetNodeContent) xmlBufGetNodeContent__internal_alias __attribute((visibility("hidden")));
+#define xmlBufGetNodeContent xmlBufGetNodeContent__internal_alias
+#endif
+#endif
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlBufNodeDump
+extern __typeof (xmlBufNodeDump) xmlBufNodeDump __attribute((alias("xmlBufNodeDump__internal_alias")));
+#else
+#ifndef xmlBufNodeDump
+extern __typeof (xmlBufNodeDump) xmlBufNodeDump__internal_alias __attribute((visibility("hidden")));
+#define xmlBufNodeDump xmlBufNodeDump__internal_alias
+#endif
+#endif
+#endif
+
+#ifdef bottom_buf
+#undef xmlBufShrink
+extern __typeof (xmlBufShrink) xmlBufShrink __attribute((alias("xmlBufShrink__internal_alias")));
+#else
+#ifndef xmlBufShrink
+extern __typeof (xmlBufShrink) xmlBufShrink__internal_alias __attribute((visibility("hidden")));
+#define xmlBufShrink xmlBufShrink__internal_alias
+#endif
+#endif
+
+#ifdef bottom_buf
+#undef xmlBufUse
+extern __typeof (xmlBufUse) xmlBufUse __attribute((alias("xmlBufUse__internal_alias")));
+#else
+#ifndef xmlBufUse
+extern __typeof (xmlBufUse) xmlBufUse__internal_alias __attribute((visibility("hidden")));
+#define xmlBufUse xmlBufUse__internal_alias
+#endif
+#endif
+
#ifdef bottom_tree
#undef xmlBufferAdd
extern __typeof (xmlBufferAdd) xmlBufferAdd __attribute((alias("xmlBufferAdd__internal_alias")));
@@ -1424,6 +1486,16 @@ extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic__internal_alias __
#endif
#ifdef bottom_tree
+#undef xmlBufferDetach
+extern __typeof (xmlBufferDetach) xmlBufferDetach __attribute((alias("xmlBufferDetach__internal_alias")));
+#else
+#ifndef xmlBufferDetach
+extern __typeof (xmlBufferDetach) xmlBufferDetach__internal_alias __attribute((visibility("hidden")));
+#define xmlBufferDetach xmlBufferDetach__internal_alias
+#endif
+#endif
+
+#ifdef bottom_tree
#undef xmlBufferDump
extern __typeof (xmlBufferDump) xmlBufferDump __attribute((alias("xmlBufferDump__internal_alias")));
#else
@@ -2840,6 +2912,16 @@ extern __typeof (xmlDictFree) xmlDictFree__internal_alias __attribute((visibilit
#endif
#ifdef bottom_dict
+#undef xmlDictGetUsage
+extern __typeof (xmlDictGetUsage) xmlDictGetUsage __attribute((alias("xmlDictGetUsage__internal_alias")));
+#else
+#ifndef xmlDictGetUsage
+extern __typeof (xmlDictGetUsage) xmlDictGetUsage__internal_alias __attribute((visibility("hidden")));
+#define xmlDictGetUsage xmlDictGetUsage__internal_alias
+#endif
+#endif
+
+#ifdef bottom_dict
#undef xmlDictLookup
extern __typeof (xmlDictLookup) xmlDictLookup __attribute((alias("xmlDictLookup__internal_alias")));
#else
@@ -2880,6 +2962,16 @@ extern __typeof (xmlDictReference) xmlDictReference__internal_alias __attribute(
#endif
#ifdef bottom_dict
+#undef xmlDictSetLimit
+extern __typeof (xmlDictSetLimit) xmlDictSetLimit __attribute((alias("xmlDictSetLimit__internal_alias")));
+#else
+#ifndef xmlDictSetLimit
+extern __typeof (xmlDictSetLimit) xmlDictSetLimit__internal_alias __attribute((visibility("hidden")));
+#define xmlDictSetLimit xmlDictSetLimit__internal_alias
+#endif
+#endif
+
+#ifdef bottom_dict
#undef xmlDictSize
extern __typeof (xmlDictSize) xmlDictSize __attribute((alias("xmlDictSize__internal_alias")));
#else
@@ -4601,6 +4693,16 @@ extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog__internal_alias __at
#endif
#endif
+#ifdef bottom_dict
+#undef xmlInitializeDict
+extern __typeof (xmlInitializeDict) xmlInitializeDict __attribute((alias("xmlInitializeDict__internal_alias")));
+#else
+#ifndef xmlInitializeDict
+extern __typeof (xmlInitializeDict) xmlInitializeDict__internal_alias __attribute((visibility("hidden")));
+#define xmlInitializeDict xmlInitializeDict__internal_alias
+#endif
+#endif
+
#ifdef bottom_globals
#undef xmlInitializeGlobalState
extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState __attribute((alias("xmlInitializeGlobalState__internal_alias")));
@@ -6757,6 +6859,30 @@ extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush__internal_alias __at
#if defined(LIBXML_OUTPUT_ENABLED)
#ifdef bottom_xmlIO
+#undef xmlOutputBufferGetContent
+extern __typeof (xmlOutputBufferGetContent) xmlOutputBufferGetContent __attribute((alias("xmlOutputBufferGetContent__internal_alias")));
+#else
+#ifndef xmlOutputBufferGetContent
+extern __typeof (xmlOutputBufferGetContent) xmlOutputBufferGetContent__internal_alias __attribute((visibility("hidden")));
+#define xmlOutputBufferGetContent xmlOutputBufferGetContent__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferGetSize
+extern __typeof (xmlOutputBufferGetSize) xmlOutputBufferGetSize __attribute((alias("xmlOutputBufferGetSize__internal_alias")));
+#else
+#ifndef xmlOutputBufferGetSize
+extern __typeof (xmlOutputBufferGetSize) xmlOutputBufferGetSize__internal_alias __attribute((visibility("hidden")));
+#define xmlOutputBufferGetSize xmlOutputBufferGetSize__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
#undef xmlOutputBufferWrite
extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite __attribute((alias("xmlOutputBufferWrite__internal_alias")));
#else
@@ -8759,7 +8885,7 @@ extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument__internal_alias __attrib
#endif
#endif
-#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef bottom_SAX2
#undef xmlSAX2EndElement
extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement __attribute((alias("xmlSAX2EndElement__internal_alias")));
@@ -9005,7 +9131,7 @@ extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument__internal_alias __at
#endif
#endif
-#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef bottom_SAX2
#undef xmlSAX2StartElement
extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement __attribute((alias("xmlSAX2StartElement__internal_alias")));
@@ -10043,6 +10169,30 @@ extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedTyp
#if defined(LIBXML_SCHEMAS_ENABLED)
#ifdef bottom_xmlschemas
+#undef xmlSchemaValidateSetFilename
+extern __typeof (xmlSchemaValidateSetFilename) xmlSchemaValidateSetFilename __attribute((alias("xmlSchemaValidateSetFilename__internal_alias")));
+#else
+#ifndef xmlSchemaValidateSetFilename
+extern __typeof (xmlSchemaValidateSetFilename) xmlSchemaValidateSetFilename__internal_alias __attribute((visibility("hidden")));
+#define xmlSchemaValidateSetFilename xmlSchemaValidateSetFilename__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaValidateSetLocator
+extern __typeof (xmlSchemaValidateSetLocator) xmlSchemaValidateSetLocator __attribute((alias("xmlSchemaValidateSetLocator__internal_alias")));
+#else
+#ifndef xmlSchemaValidateSetLocator
+extern __typeof (xmlSchemaValidateSetLocator) xmlSchemaValidateSetLocator__internal_alias __attribute((visibility("hidden")));
+#define xmlSchemaValidateSetLocator xmlSchemaValidateSetLocator__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
#undef xmlSchemaValidateStream
extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream __attribute((alias("xmlSchemaValidateStream__internal_alias")));
#else
@@ -11715,6 +11865,18 @@ extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate__int
#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
#ifdef bottom_xmlreader
+#undef xmlTextReaderRelaxNGValidateCtxt
+extern __typeof (xmlTextReaderRelaxNGValidateCtxt) xmlTextReaderRelaxNGValidateCtxt __attribute((alias("xmlTextReaderRelaxNGValidateCtxt__internal_alias")));
+#else
+#ifndef xmlTextReaderRelaxNGValidateCtxt
+extern __typeof (xmlTextReaderRelaxNGValidateCtxt) xmlTextReaderRelaxNGValidateCtxt__internal_alias __attribute((visibility("hidden")));
+#define xmlTextReaderRelaxNGValidateCtxt xmlTextReaderRelaxNGValidateCtxt__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlreader
#undef xmlTextReaderSchemaValidate
extern __typeof (xmlTextReaderSchemaValidate) xmlTextReaderSchemaValidate __attribute((alias("xmlTextReaderSchemaValidate__internal_alias")));
#else
@@ -12003,6 +12165,18 @@ extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString__int
#if defined(LIBXML_WRITER_ENABLED)
#ifdef bottom_xmlwriter
+#undef xmlTextWriterSetQuoteChar
+extern __typeof (xmlTextWriterSetQuoteChar) xmlTextWriterSetQuoteChar __attribute((alias("xmlTextWriterSetQuoteChar__internal_alias")));
+#else
+#ifndef xmlTextWriterSetQuoteChar
+extern __typeof (xmlTextWriterSetQuoteChar) xmlTextWriterSetQuoteChar__internal_alias __attribute((visibility("hidden")));
+#define xmlTextWriterSetQuoteChar xmlTextWriterSetQuoteChar__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
#undef xmlTextWriterStartAttribute
extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute __attribute((alias("xmlTextWriterStartAttribute__internal_alias")));
#else
@@ -15189,7 +15363,7 @@ extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl__internal_alias
#endif
#endif
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef bottom_tree
#undef xmlValidateNCName
extern __typeof (xmlValidateNCName) xmlValidateNCName __attribute((alias("xmlValidateNCName__internal_alias")));
@@ -16595,6 +16769,18 @@ extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf__internal_alias __attribute(
#if defined(LIBXML_XPATH_ENABLED)
#ifdef bottom_xpath
+#undef xmlXPathNodeEval
+extern __typeof (xmlXPathNodeEval) xmlXPathNodeEval __attribute((alias("xmlXPathNodeEval__internal_alias")));
+#else
+#ifndef xmlXPathNodeEval
+extern __typeof (xmlXPathNodeEval) xmlXPathNodeEval__internal_alias __attribute((visibility("hidden")));
+#define xmlXPathNodeEval xmlXPathNodeEval__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
#undef xmlXPathNodeLeading
extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading __attribute((alias("xmlXPathNodeLeading__internal_alias")));
#else
@@ -17099,6 +17285,18 @@ extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction__internal_alias __
#if defined(LIBXML_XPATH_ENABLED)
#ifdef bottom_xpath
+#undef xmlXPathSetContextNode
+extern __typeof (xmlXPathSetContextNode) xmlXPathSetContextNode __attribute((alias("xmlXPathSetContextNode__internal_alias")));
+#else
+#ifndef xmlXPathSetContextNode
+extern __typeof (xmlXPathSetContextNode) xmlXPathSetContextNode__internal_alias __attribute((visibility("hidden")));
+#define xmlXPathSetContextNode xmlXPathSetContextNode__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
#undef xmlXPathStartsWithFunction
extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction __attribute((alias("xmlXPathStartsWithFunction__internal_alias")));
#else
diff --git a/enc.h b/enc.h
new file mode 100644
index 0000000..057d206
--- /dev/null
+++ b/enc.h
@@ -0,0 +1,32 @@
+/*
+ * Summary: Internal Interfaces for encoding in libxml2
+ * Description: this module describes a few interfaces which were
+ * addded along with the API changes in 2.9.0
+ * those are private routines at this point
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Daniel Veillard
+ */
+
+#ifndef __XML_ENC_H__
+#define __XML_ENC_H__
+
+#include <libxml/tree.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out,
+ xmlBufferPtr in, int len);
+int xmlCharEncFirstLineInput(xmlParserInputBufferPtr input, int len);
+int xmlCharEncInput(xmlParserInputBufferPtr input, int flush);
+int xmlCharEncOutput(xmlOutputBufferPtr output, int init);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __XML_ENC_H__ */
+
+
diff --git a/encoding.c b/encoding.c
index d486dd6..574e1ae 100644
--- a/encoding.c
+++ b/encoding.c
@@ -24,6 +24,7 @@
#include "libxml.h"
#include <string.h>
+#include <limits.h>
#ifdef HAVE_CTYPE_H
#include <ctype.h>
@@ -44,6 +45,9 @@
#include <libxml/globals.h>
#include <libxml/xmlerror.h>
+#include "buf.h"
+#include "enc.h"
+
static xmlCharEncodingHandlerPtr xmlUTF16LEHandler = NULL;
static xmlCharEncodingHandlerPtr xmlUTF16BEHandler = NULL;
@@ -1513,6 +1517,8 @@ xmlGetCharEncodingHandler(xmlCharEncoding enc) {
if (handler != NULL) return(handler);
handler = xmlFindCharEncodingHandler("EBCDIC-US");
if (handler != NULL) return(handler);
+ handler = xmlFindCharEncodingHandler("IBM-037");
+ if (handler != NULL) return(handler);
break;
case XML_CHAR_ENCODING_UCS4BE:
handler = xmlFindCharEncodingHandler("ISO-10646-UCS-4");
@@ -1825,7 +1831,7 @@ xmlIconvWrapper(iconv_t cd, unsigned char *out, int *outlen,
/************************************************************************
* *
- * ICU based generic conversion functions *
+ * ICU based generic conversion functions *
* *
************************************************************************/
@@ -1897,9 +1903,6 @@ xmlUconvWrapper(uconv_t *cd, int toUnicode, unsigned char *out, int *outlen,
* The real API used by libxml for on-the-fly conversion *
* *
************************************************************************/
-int
-xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out,
- xmlBufferPtr in, int len);
/**
* xmlCharEncFirstLineInt:
@@ -1946,7 +1949,7 @@ xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out,
toconv = 180;
}
if (toconv * 2 >= written) {
- xmlBufferGrow(out, toconv);
+ xmlBufferGrow(out, toconv * 2);
written = out->size - out->use - 1;
}
@@ -2029,6 +2032,252 @@ xmlCharEncFirstLine(xmlCharEncodingHandler *handler, xmlBufferPtr out,
}
/**
+ * xmlCharEncFirstLineInput:
+ * @input: a parser input buffer
+ * @len: number of bytes to convert for the first line, or -1
+ *
+ * Front-end for the encoding handler input function, but handle only
+ * the very first line. Point is that this is based on autodetection
+ * of the encoding and once that first line is converted we may find
+ * out that a different decoder is needed to process the input.
+ *
+ * Returns the number of byte written if success, or
+ * -1 general error
+ * -2 if the transcoding fails (for *in is not valid utf8 string or
+ * the result of transformation can't fit into the encoding we want), or
+ */
+int
+xmlCharEncFirstLineInput(xmlParserInputBufferPtr input, int len)
+{
+ int ret = -2;
+ size_t written;
+ size_t toconv;
+ int c_in;
+ int c_out;
+ xmlBufPtr in;
+ xmlBufPtr out;
+
+ if ((input == NULL) || (input->encoder == NULL) ||
+ (input->buffer == NULL) || (input->raw == NULL))
+ return (-1);
+ out = input->buffer;
+ in = input->raw;
+
+ toconv = xmlBufUse(in);
+ if (toconv == 0)
+ return (0);
+ written = xmlBufAvail(out) - 1; /* count '\0' */
+ /*
+ * echo '<?xml version="1.0" encoding="UCS4"?>' | wc -c => 38
+ * 45 chars should be sufficient to reach the end of the encoding
+ * declaration without going too far inside the document content.
+ * on UTF-16 this means 90bytes, on UCS4 this means 180
+ * The actual value depending on guessed encoding is passed as @len
+ * if provided
+ */
+ if (len >= 0) {
+ if (toconv > (unsigned int) len)
+ toconv = len;
+ } else {
+ if (toconv > 180)
+ toconv = 180;
+ }
+ if (toconv * 2 >= written) {
+ xmlBufGrow(out, toconv * 2);
+ written = xmlBufAvail(out) - 1;
+ }
+ if (written > 360)
+ written = 360;
+
+ c_in = toconv;
+ c_out = written;
+ if (input->encoder->input != NULL) {
+ ret = input->encoder->input(xmlBufEnd(out), &c_out,
+ xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ }
+#ifdef LIBXML_ICONV_ENABLED
+ else if (input->encoder->iconv_in != NULL) {
+ ret = xmlIconvWrapper(input->encoder->iconv_in, xmlBufEnd(out),
+ &c_out, xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ if (ret == -1)
+ ret = -3;
+ }
+#endif /* LIBXML_ICONV_ENABLED */
+#ifdef LIBXML_ICU_ENABLED
+ else if (input->encoder->uconv_in != NULL) {
+ ret = xmlUconvWrapper(input->encoder->uconv_in, 1, xmlBufEnd(out),
+ &c_out, xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ if (ret == -1)
+ ret = -3;
+ }
+#endif /* LIBXML_ICU_ENABLED */
+ switch (ret) {
+ case 0:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of input\n",
+ c_in, c_out);
+#endif
+ break;
+ case -1:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of input, %d left\n",
+ c_in, c_out, (int)xmlBufUse(in));
+#endif
+ break;
+ case -3:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of input, %d left\n",
+ c_in, c_out, (int)xmlBufUse(in));
+#endif
+ break;
+ case -2: {
+ char buf[50];
+ const xmlChar *content = xmlBufContent(in);
+
+ snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X",
+ content[0], content[1],
+ content[2], content[3]);
+ buf[49] = 0;
+ xmlEncodingErr(XML_I18N_CONV_FAILED,
+ "input conversion failed due to input error, bytes %s\n",
+ buf);
+ }
+ }
+ /*
+ * Ignore when input buffer is not on a boundary
+ */
+ if (ret == -3) ret = 0;
+ if (ret == -1) ret = 0;
+ return(ret);
+}
+
+/**
+ * xmlCharEncInput:
+ * @input: a parser input buffer
+ * @flush: try to flush all the raw buffer
+ *
+ * Generic front-end for the encoding handler on parser input
+ *
+ * Returns the number of byte written if success, or
+ * -1 general error
+ * -2 if the transcoding fails (for *in is not valid utf8 string or
+ * the result of transformation can't fit into the encoding we want), or
+ */
+int
+xmlCharEncInput(xmlParserInputBufferPtr input, int flush)
+{
+ int ret = -2;
+ size_t written;
+ size_t toconv;
+ int c_in;
+ int c_out;
+ xmlBufPtr in;
+ xmlBufPtr out;
+
+ if ((input == NULL) || (input->encoder == NULL) ||
+ (input->buffer == NULL) || (input->raw == NULL))
+ return (-1);
+ out = input->buffer;
+ in = input->raw;
+
+ toconv = xmlBufUse(in);
+ if (toconv == 0)
+ return (0);
+ if ((toconv > 64 * 1024) && (flush == 0))
+ toconv = 64 * 1024;
+ written = xmlBufAvail(out);
+ if (written > 0)
+ written--; /* count '\0' */
+ if (toconv * 2 >= written) {
+ xmlBufGrow(out, toconv * 2);
+ written = xmlBufAvail(out);
+ if (written > 0)
+ written--; /* count '\0' */
+ }
+ if ((written > 128 * 1024) && (flush == 0))
+ written = 128 * 1024;
+
+ c_in = toconv;
+ c_out = written;
+ if (input->encoder->input != NULL) {
+ ret = input->encoder->input(xmlBufEnd(out), &c_out,
+ xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ }
+#ifdef LIBXML_ICONV_ENABLED
+ else if (input->encoder->iconv_in != NULL) {
+ ret = xmlIconvWrapper(input->encoder->iconv_in, xmlBufEnd(out),
+ &c_out, xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ if (ret == -1)
+ ret = -3;
+ }
+#endif /* LIBXML_ICONV_ENABLED */
+#ifdef LIBXML_ICU_ENABLED
+ else if (input->encoder->uconv_in != NULL) {
+ ret = xmlUconvWrapper(input->encoder->uconv_in, 1, xmlBufEnd(out),
+ &c_out, xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ if (ret == -1)
+ ret = -3;
+ }
+#endif /* LIBXML_ICU_ENABLED */
+ switch (ret) {
+ case 0:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of input\n",
+ c_in, c_out);
+#endif
+ break;
+ case -1:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of input, %d left\n",
+ c_in, c_out, (int)xmlBufUse(in));
+#endif
+ break;
+ case -3:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of input, %d left\n",
+ c_in, c_out, (int)xmlBufUse(in));
+#endif
+ break;
+ case -2: {
+ char buf[50];
+ const xmlChar *content = xmlBufContent(in);
+
+ snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X",
+ content[0], content[1],
+ content[2], content[3]);
+ buf[49] = 0;
+ xmlEncodingErr(XML_I18N_CONV_FAILED,
+ "input conversion failed due to input error, bytes %s\n",
+ buf);
+ }
+ }
+ /*
+ * Ignore when input buffer is not on a boundary
+ */
+ if (ret == -3)
+ ret = 0;
+ return (c_out? c_out : ret);
+}
+
+/**
* xmlCharEncInFunc:
* @handler: char encoding transformation data structure
* @out: an xmlBuffer for the output.
@@ -2135,6 +2384,237 @@ xmlCharEncInFunc(xmlCharEncodingHandler * handler, xmlBufferPtr out,
return (written? written : ret);
}
+#ifdef LIBXML_OUTPUT_ENABLED
+/**
+ * xmlCharEncOutput:
+ * @output: a parser output buffer
+ * @init: is this an initialization call without data
+ *
+ * Generic front-end for the encoding handler on parser output
+ * a first call with @init == 1 has to be made first to initiate the
+ * output in case of non-stateless encoding needing to initiate their
+ * state or the output (like the BOM in UTF16).
+ * In case of UTF8 sequence conversion errors for the given encoder,
+ * the content will be automatically remapped to a CharRef sequence.
+ *
+ * Returns the number of byte written if success, or
+ * -1 general error
+ * -2 if the transcoding fails (for *in is not valid utf8 string or
+ * the result of transformation can't fit into the encoding we want), or
+ */
+int
+xmlCharEncOutput(xmlOutputBufferPtr output, int init)
+{
+ int ret = -2;
+ size_t written;
+ size_t writtentot = 0;
+ size_t toconv;
+ int c_in;
+ int c_out;
+ xmlBufPtr in;
+ xmlBufPtr out;
+ int charref_len = 0;
+
+ if ((output == NULL) || (output->encoder == NULL) ||
+ (output->buffer == NULL) || (output->conv == NULL))
+ return (-1);
+ out = output->conv;
+ in = output->buffer;
+
+retry:
+
+ written = xmlBufAvail(out);
+ if (written > 0)
+ written--; /* count '\0' */
+
+ /*
+ * First specific handling of the initialization call
+ */
+ if (init) {
+ c_in = 0;
+ c_out = written;
+ if (output->encoder->output != NULL) {
+ ret = output->encoder->output(xmlBufEnd(out), &c_out,
+ NULL, &c_in);
+ if (ret > 0) /* Gennady: check return value */
+ xmlBufAddLen(out, c_out);
+ }
+#ifdef LIBXML_ICONV_ENABLED
+ else if (output->encoder->iconv_out != NULL) {
+ ret = xmlIconvWrapper(output->encoder->iconv_out, xmlBufEnd(out),
+ &c_out, NULL, &c_in);
+ xmlBufAddLen(out, c_out);
+ }
+#endif /* LIBXML_ICONV_ENABLED */
+#ifdef LIBXML_ICU_ENABLED
+ else if (output->encoder->uconv_out != NULL) {
+ ret = xmlUconvWrapper(output->encoder->uconv_out, 0, xmlBufEnd(out),
+ &c_out, NULL, &c_in);
+ xmlBufAddLen(out, c_out);
+ }
+#endif /* LIBXML_ICU_ENABLED */
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "initialized encoder\n");
+#endif
+ return(0);
+ }
+
+ /*
+ * Conversion itself.
+ */
+ toconv = xmlBufUse(in);
+ if (toconv == 0)
+ return (0);
+ if (toconv > 64 * 1024)
+ toconv = 64 * 1024;
+ if (toconv * 4 >= written) {
+ xmlBufGrow(out, toconv * 4);
+ written = xmlBufAvail(out) - 1;
+ }
+ if (written > 256 * 1024)
+ written = 256 * 1024;
+
+ c_in = toconv;
+ c_out = written;
+ if (output->encoder->output != NULL) {
+ ret = output->encoder->output(xmlBufEnd(out), &c_out,
+ xmlBufContent(in), &c_in);
+ if (c_out > 0) {
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ writtentot += c_out;
+ }
+ }
+#ifdef LIBXML_ICONV_ENABLED
+ else if (output->encoder->iconv_out != NULL) {
+ ret = xmlIconvWrapper(output->encoder->iconv_out, xmlBufEnd(out),
+ &c_out, xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ writtentot += c_out;
+ if (ret == -1) {
+ if (c_out > 0) {
+ /*
+ * Can be a limitation of iconv
+ */
+ charref_len = 0;
+ goto retry;
+ }
+ ret = -3;
+ }
+ }
+#endif /* LIBXML_ICONV_ENABLED */
+#ifdef LIBXML_ICU_ENABLED
+ else if (output->encoder->uconv_out != NULL) {
+ ret = xmlUconvWrapper(output->encoder->uconv_out, 0, xmlBufEnd(out),
+ &c_out, xmlBufContent(in), &c_in);
+ xmlBufShrink(in, c_in);
+ xmlBufAddLen(out, c_out);
+ writtentot += c_out;
+ if (ret == -1) {
+ if (c_out > 0) {
+ /*
+ * Can be a limitation of uconv
+ */
+ charref_len = 0;
+ goto retry;
+ }
+ ret = -3;
+ }
+ }
+#endif /* LIBXML_ICU_ENABLED */
+ else {
+ xmlEncodingErr(XML_I18N_NO_OUTPUT,
+ "xmlCharEncOutFunc: no output function !\n", NULL);
+ return(-1);
+ }
+
+ if (ret >= 0) output += ret;
+
+ /*
+ * Attempt to handle error cases
+ */
+ switch (ret) {
+ case 0:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "converted %d bytes to %d bytes of output\n",
+ c_in, c_out);
+#endif
+ break;
+ case -1:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "output conversion failed by lack of space\n");
+#endif
+ break;
+ case -3:
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,"converted %d bytes to %d bytes of output %d left\n",
+ c_in, c_out, (int) xmlBufUse(in));
+#endif
+ break;
+ case -2: {
+ int len = (int) xmlBufUse(in);
+ xmlChar *content = xmlBufContent(in);
+ int cur;
+
+ cur = xmlGetUTF8Char(content, &len);
+ if ((charref_len != 0) && (c_out < charref_len)) {
+ /*
+ * We attempted to insert a character reference and failed.
+ * Undo what was written and skip the remaining charref.
+ */
+ xmlBufErase(out, c_out);
+ writtentot -= c_out;
+ xmlBufShrink(in, charref_len - c_out);
+ charref_len = 0;
+
+ ret = -1;
+ break;
+ } else if (cur > 0) {
+ xmlChar charref[20];
+
+#ifdef DEBUG_ENCODING
+ xmlGenericError(xmlGenericErrorContext,
+ "handling output conversion error\n");
+ xmlGenericError(xmlGenericErrorContext,
+ "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
+ content[0], content[1],
+ content[2], content[3]);
+#endif
+ /*
+ * Removes the UTF8 sequence, and replace it by a charref
+ * and continue the transcoding phase, hoping the error
+ * did not mangle the encoder state.
+ */
+ charref_len = snprintf((char *) &charref[0], sizeof(charref),
+ "&#%d;", cur);
+ xmlBufShrink(in, len);
+ xmlBufAddHead(in, charref, -1);
+
+ goto retry;
+ } else {
+ char buf[50];
+
+ snprintf(&buf[0], 49, "0x%02X 0x%02X 0x%02X 0x%02X",
+ content[0], content[1],
+ content[2], content[3]);
+ buf[49] = 0;
+ xmlEncodingErr(XML_I18N_CONV_FAILED,
+ "output conversion failed due to conv error, bytes %s\n",
+ buf);
+ if (xmlBufGetAllocationScheme(in) != XML_BUFFER_ALLOC_IMMUTABLE)
+ content[0] = ' ';
+ }
+ break;
+ }
+ }
+ return(ret);
+}
+#endif
+
/**
* xmlCharEncOutFunc:
* @handler: char enconding transformation data structure
@@ -2198,7 +2678,7 @@ retry:
else if (handler->uconv_out != NULL) {
ret = xmlUconvWrapper(handler->uconv_out, 0,
&out->content[out->use],
- &written, NULL, &toconv);
+ &written, NULL, &toconv);
out->use += written;
out->content[out->use] = 0;
}
@@ -2373,14 +2853,25 @@ int
xmlCharEncCloseFunc(xmlCharEncodingHandler *handler) {
int ret = 0;
int tofree = 0;
+ int i, handler_in_list = 0;
+
if (handler == NULL) return(-1);
if (handler->name == NULL) return(-1);
+ if (handlers != NULL) {
+ for (i = 0;i < nbCharEncodingHandler; i++) {
+ if (handler == handlers[i]) {
+ handler_in_list = 1;
+ break;
+ }
+ }
+ }
#ifdef LIBXML_ICONV_ENABLED
/*
* Iconv handlers can be used only once, free the whole block.
* and the associated icon resources.
*/
- if ((handler->iconv_out != NULL) || (handler->iconv_in != NULL)) {
+ if ((handler_in_list == 0) &&
+ ((handler->iconv_out != NULL) || (handler->iconv_in != NULL))) {
tofree = 1;
if (handler->iconv_out != NULL) {
if (iconv_close(handler->iconv_out))
@@ -2395,7 +2886,8 @@ xmlCharEncCloseFunc(xmlCharEncodingHandler *handler) {
}
#endif /* LIBXML_ICONV_ENABLED */
#ifdef LIBXML_ICU_ENABLED
- if ((handler->uconv_out != NULL) || (handler->uconv_in != NULL)) {
+ if ((handler_in_list == 0) &&
+ ((handler->uconv_out != NULL) || (handler->uconv_in != NULL))) {
tofree = 1;
if (handler->uconv_out != NULL) {
closeIcuConverter(handler->uconv_out);
@@ -2619,7 +3111,7 @@ UTF8ToISO8859x(unsigned char* out, int *outlen,
c2 = c2 & 0x3F;
d = d & 0x0F;
d = xlattable [48 + c2 + xlattable [48 + c1 +
- xlattable [32 + d] * 64] * 64];
+ xlattable [32 + d] * 64] * 64];
if (d == 0) {
/* not in character set */
*outlen = out - outstart;
diff --git a/entities.c b/entities.c
index 6aef49f..a72afb3 100644
--- a/entities.c
+++ b/entities.c
@@ -22,41 +22,43 @@
#include <libxml/globals.h>
#include <libxml/dict.h>
+#include "save.h"
+
/*
* The XML predefined entities.
*/
static xmlEntity xmlEntityLt = {
NULL, XML_ENTITY_DECL, BAD_CAST "lt",
- NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
BAD_CAST "<", BAD_CAST "<", 1,
XML_INTERNAL_PREDEFINED_ENTITY,
NULL, NULL, NULL, NULL, 0, 1
};
static xmlEntity xmlEntityGt = {
NULL, XML_ENTITY_DECL, BAD_CAST "gt",
- NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
BAD_CAST ">", BAD_CAST ">", 1,
XML_INTERNAL_PREDEFINED_ENTITY,
NULL, NULL, NULL, NULL, 0, 1
};
static xmlEntity xmlEntityAmp = {
NULL, XML_ENTITY_DECL, BAD_CAST "amp",
- NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
BAD_CAST "&", BAD_CAST "&", 1,
XML_INTERNAL_PREDEFINED_ENTITY,
NULL, NULL, NULL, NULL, 0, 1
};
static xmlEntity xmlEntityQuot = {
NULL, XML_ENTITY_DECL, BAD_CAST "quot",
- NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
BAD_CAST "\"", BAD_CAST "\"", 1,
XML_INTERNAL_PREDEFINED_ENTITY,
NULL, NULL, NULL, NULL, 0, 1
};
static xmlEntity xmlEntityApos = {
NULL, XML_ENTITY_DECL, BAD_CAST "apos",
- NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
BAD_CAST "'", BAD_CAST "'", 1,
XML_INTERNAL_PREDEFINED_ENTITY,
NULL, NULL, NULL, NULL, 0, 1
@@ -426,7 +428,7 @@ xmlNewEntity(xmlDocPtr doc, const xmlChar *name, int type,
*
* Do an entity lookup in the table.
* returns the corresponding parameter entity, if found.
- *
+ *
* Returns A pointer to the entity structure or NULL if not found.
*/
static xmlEntityPtr
@@ -441,7 +443,7 @@ xmlGetEntityFromTable(xmlEntitiesTablePtr table, const xmlChar *name) {
*
* Do an entity lookup in the internal and external subsets and
* returns the corresponding parameter entity, if found.
- *
+ *
* Returns A pointer to the entity structure or NULL if not found.
*/
xmlEntityPtr
@@ -472,7 +474,7 @@ xmlGetParameterEntity(xmlDocPtr doc, const xmlChar *name) {
* Do an entity lookup in the DTD entity hash table and
* returns the corresponding entity, if found.
* Note: the first argument is the document node, not the DTD node.
- *
+ *
* Returns A pointer to the entity structure or NULL if not found.
*/
xmlEntityPtr
@@ -496,11 +498,11 @@ xmlGetDtdEntity(xmlDocPtr doc, const xmlChar *name) {
* Do an entity lookup in the document entity hash table and
* returns the corresponding entity, otherwise a lookup is done
* in the predefined entities too.
- *
+ *
* Returns A pointer to the entity structure or NULL if not found.
*/
xmlEntityPtr
-xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) {
+xmlGetDocEntity(const xmlDoc *doc, const xmlChar *name) {
xmlEntityPtr cur;
xmlEntitiesTablePtr table;
@@ -528,20 +530,20 @@ xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) {
* Macro used to grow the current buffer.
*/
#define growBufferReentrant() { \
- buffer_size *= 2; \
- buffer = (xmlChar *) \
- xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \
- if (buffer == NULL) { \
- xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: realloc failed");\
- return(NULL); \
- } \
+ xmlChar *tmp; \
+ size_t new_size = buffer_size * 2; \
+ if (new_size < buffer_size) goto mem_error; \
+ tmp = (xmlChar *) xmlRealloc(buffer, new_size); \
+ if (tmp == NULL) goto mem_error; \
+ buffer = tmp; \
+ buffer_size = new_size; \
}
-
/**
- * xmlEncodeEntitiesReentrant:
+ * xmlEncodeEntitiesInternal:
* @doc: the document containing the string
* @input: A string to convert to XML.
+ * @attr: are we handling an atrbute value
*
* Do a global encoding of a string, replacing the predefined entities
* and non ASCII values with their entities and CharRef counterparts.
@@ -550,12 +552,12 @@ xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) {
*
* Returns A newly allocated string with the substitution done.
*/
-xmlChar *
-xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
+static xmlChar *
+xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input, int attr) {
const xmlChar *cur = input;
xmlChar *buffer = NULL;
xmlChar *out = NULL;
- int buffer_size = 0;
+ size_t buffer_size = 0;
int html = 0;
if (input == NULL) return(NULL);
@@ -568,14 +570,14 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
buffer_size = 1000;
buffer = (xmlChar *) xmlMalloc(buffer_size * sizeof(xmlChar));
if (buffer == NULL) {
- xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: malloc failed");
+ xmlEntitiesErrMemory("xmlEncodeEntities: malloc failed");
return(NULL);
}
out = buffer;
while (*cur != '\0') {
- if (out - buffer > buffer_size - 100) {
- int indx = out - buffer;
+ size_t indx = out - buffer;
+ if (indx + 100 > buffer_size) {
growBufferReentrant();
out = &buffer[indx];
@@ -585,6 +587,27 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
* By default one have to encode at least '<', '>', '"' and '&' !
*/
if (*cur == '<') {
+ const xmlChar *end;
+
+ /*
+ * Special handling of server side include in HTML attributes
+ */
+ if (html && attr &&
+ (cur[1] == '!') && (cur[2] == '-') && (cur[3] == '-') &&
+ ((end = xmlStrstr(cur, BAD_CAST "-->")) != NULL)) {
+ while (cur != end) {
+ *out++ = *cur++;
+ indx = out - buffer;
+ if (indx + 100 > buffer_size) {
+ growBufferReentrant();
+ out = &buffer[indx];
+ }
+ }
+ *out++ = *cur++;
+ *out++ = *cur++;
+ *out++ = *cur++;
+ continue;
+ }
*out++ = '&';
*out++ = 'l';
*out++ = 't';
@@ -595,6 +618,23 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
*out++ = 't';
*out++ = ';';
} else if (*cur == '&') {
+ /*
+ * Special handling of &{...} construct from HTML 4, see
+ * http://www.w3.org/TR/html401/appendix/notes.html#h-B.7.1
+ */
+ if (html && attr && (cur[1] == '{') &&
+ (strchr((const char *) cur, '}'))) {
+ while (*cur != '}') {
+ *out++ = *cur++;
+ indx = out - buffer;
+ if (indx + 100 > buffer_size) {
+ growBufferReentrant();
+ out = &buffer[indx];
+ }
+ }
+ *out++ = *cur++;
+ continue;
+ }
*out++ = '&';
*out++ = 'a';
*out++ = 'm';
@@ -609,7 +649,7 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
} else if (*cur >= 0x80) {
if (((doc != NULL) && (doc->encoding != NULL)) || (html)) {
/*
- * Bjørn Reese <br@sseusa.com> provided the patch
+ * Bjørn Reese <br@sseusa.com> provided the patch
xmlChar xc;
xc = (*cur & 0x3F) << 6;
if (cur[1] != 0) {
@@ -627,7 +667,7 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
if (*cur < 0xC0) {
xmlEntitiesErr(XML_CHECK_NOT_UTF8,
- "xmlEncodeEntitiesReentrant : input not UTF-8");
+ "xmlEncodeEntities: input not UTF-8");
if (doc != NULL)
doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1");
snprintf(buf, sizeof(buf), "&#%d;", *cur);
@@ -660,7 +700,7 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
}
if ((l == 1) || (!IS_CHAR(val))) {
xmlEntitiesErr(XML_ERR_INVALID_CHAR,
- "xmlEncodeEntitiesReentrant : char out of range\n");
+ "xmlEncodeEntities: char out of range\n");
if (doc != NULL)
doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1");
snprintf(buf, sizeof(buf), "&#%d;", *cur);
@@ -692,6 +732,44 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
}
*out = 0;
return(buffer);
+
+mem_error:
+ xmlEntitiesErrMemory("xmlEncodeEntities: realloc failed");
+ xmlFree(buffer);
+ return(NULL);
+}
+
+/**
+ * xmlEncodeAttributeEntities:
+ * @doc: the document containing the string
+ * @input: A string to convert to XML.
+ *
+ * Do a global encoding of a string, replacing the predefined entities
+ * and non ASCII values with their entities and CharRef counterparts for
+ * attribute values.
+ *
+ * Returns A newly allocated string with the substitution done.
+ */
+xmlChar *
+xmlEncodeAttributeEntities(xmlDocPtr doc, const xmlChar *input) {
+ return xmlEncodeEntitiesInternal(doc, input, 1);
+}
+
+/**
+ * xmlEncodeEntitiesReentrant:
+ * @doc: the document containing the string
+ * @input: A string to convert to XML.
+ *
+ * Do a global encoding of a string, replacing the predefined entities
+ * and non ASCII values with their entities and CharRef counterparts.
+ * Contrary to xmlEncodeEntities, this routine is reentrant, and result
+ * must be deallocated.
+ *
+ * Returns A newly allocated string with the substitution done.
+ */
+xmlChar *
+xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
+ return xmlEncodeEntitiesInternal(doc, input, 0);
}
/**
@@ -705,11 +783,11 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
* Returns A newly allocated string with the substitution done.
*/
xmlChar *
-xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
+xmlEncodeSpecialChars(const xmlDoc *doc ATTRIBUTE_UNUSED, const xmlChar *input) {
const xmlChar *cur = input;
xmlChar *buffer = NULL;
xmlChar *out = NULL;
- int buffer_size = 0;
+ size_t buffer_size = 0;
if (input == NULL) return(NULL);
/*
@@ -724,8 +802,8 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
out = buffer;
while (*cur != '\0') {
- if (out - buffer > buffer_size - 10) {
- int indx = out - buffer;
+ size_t indx = out - buffer;
+ if (indx + 10 > buffer_size) {
growBufferReentrant();
out = &buffer[indx];
@@ -774,6 +852,11 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
}
*out = 0;
return(buffer);
+
+mem_error:
+ xmlEntitiesErrMemory("xmlEncodeSpecialChars: realloc failed");
+ xmlFree(buffer);
+ return(NULL);
}
/**
@@ -820,7 +903,7 @@ xmlFreeEntitiesTable(xmlEntitiesTablePtr table) {
* @ent: An entity
*
* Build a copy of an entity
- *
+ *
* Returns the new xmlEntitiesPtr or NULL in case of error.
*/
static xmlEntityPtr
@@ -856,7 +939,7 @@ xmlCopyEntity(xmlEntityPtr ent) {
* @table: An entity table
*
* Build a copy of an entity table.
- *
+ *
* Returns the new xmlEntitiesTablePtr or NULL in case of error.
*/
xmlEntitiesTablePtr
@@ -1005,7 +1088,7 @@ static void
xmlDumpEntityDeclScan(xmlEntityPtr ent, xmlBufferPtr buf) {
xmlDumpEntityDecl(buf, ent);
}
-
+
/**
* xmlDumpEntitiesTable:
* @buf: An XML buffer.
diff --git a/error.c b/error.c
index a891faa..cbcf5c9 100644
--- a/error.c
+++ b/error.c
@@ -33,7 +33,7 @@ void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED,
\
while (size < 64000) { \
va_start(ap, msg); \
- chars = vsnprintf(str, size, msg, ap); \
+ chars = vsnprintf(str, size, msg, ap); \
va_end(ap); \
if ((chars > -1) && (chars < size)) { \
if (prev_size == chars) { \
@@ -54,9 +54,9 @@ void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED,
}
/************************************************************************
- * *
- * Handling of out of context errors *
- * *
+ * *
+ * Handling of out of context errors *
+ * *
************************************************************************/
/**
@@ -64,7 +64,7 @@ void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED,
* @ctx: an error context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Default handler for out of context error messages.
*/
void XMLCDECL
@@ -82,7 +82,7 @@ xmlGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
/**
* initGenericErrorDefaultFunc:
* @handler: the handler
- *
+ *
* Set or reset (if NULL) the default handler for generic errors
* to the builtin error function.
*/
@@ -137,15 +137,15 @@ xmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) {
}
/************************************************************************
- * *
- * Handling of parsing errors *
- * *
+ * *
+ * Handling of parsing errors *
+ * *
************************************************************************/
/**
* xmlParserPrintFileInfo:
* @input: an xmlParserInputPtr input
- *
+ *
* Displays the associated file and line informations for the current input
*/
@@ -165,12 +165,12 @@ xmlParserPrintFileInfo(xmlParserInputPtr input) {
/**
* xmlParserPrintFileContext:
* @input: an xmlParserInputPtr input
- *
+ *
* Displays current context within the input content for error tracking
*/
static void
-xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
+xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
xmlGenericErrorFunc channel, void *data ) {
const xmlChar *cur, *base;
unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */
@@ -186,8 +186,8 @@ xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
}
n = 0;
/* search backwards for beginning-of-line (to max buff size) */
- while ((n++ < (sizeof(content)-1)) && (cur > base) &&
- (*(cur) != '\n') && (*(cur) != '\r'))
+ while ((n++ < (sizeof(content)-1)) && (cur > base) &&
+ (*(cur) != '\n') && (*(cur) != '\r'))
cur--;
if ((*(cur) == '\n') || (*(cur) == '\r')) cur++;
/* calculate the error position in terms of the current position */
@@ -196,8 +196,8 @@ xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
n = 0;
ctnt = content;
/* copy selected text to our buffer */
- while ((*cur != 0) && (*(cur) != '\n') &&
- (*(cur) != '\r') && (n < sizeof(content)-1)) {
+ while ((*cur != 0) && (*(cur) != '\n') &&
+ (*(cur) != '\r') && (n < sizeof(content)-1)) {
*ctnt++ = *cur++;
n++;
}
@@ -221,7 +221,7 @@ xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
/**
* xmlParserPrintFileContext:
* @input: an xmlParserInputPtr input
- *
+ *
* Displays current context within the input content for error tracking
*/
void
@@ -292,7 +292,10 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str,
} else {
if (file != NULL)
channel(data, "%s:%d: ", file, line);
- else if ((line != 0) && (domain == XML_FROM_PARSER))
+ else if ((line != 0) &&
+ ((domain == XML_FROM_PARSER) || (domain == XML_FROM_SCHEMASV)||
+ (domain == XML_FROM_SCHEMASP)||(domain == XML_FROM_DTD) ||
+ (domain == XML_FROM_RELAXNGP)||(domain == XML_FROM_RELAXNGV)))
channel(data, "Entity: line %d: ", line);
}
if (name != NULL) {
@@ -360,6 +363,15 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str,
case XML_FROM_I18N:
channel(data, "encoding ");
break;
+ case XML_FROM_SCHEMATRONV:
+ channel(data, "schematron ");
+ break;
+ case XML_FROM_BUFFER:
+ channel(data, "internal buffer ");
+ break;
+ case XML_FROM_URI:
+ channel(data, "URI ");
+ break;
default:
break;
}
@@ -429,7 +441,7 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str,
* @str2: extra string info
* @str3: extra string info
* @int1: extra int info
- * @col: column number of the error or 0 if N/A
+ * @col: column number of the error or 0 if N/A
* @msg: the message to display/transmit
* @...: extra parameters for the message display
*
@@ -521,6 +533,8 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel,
if ((node != NULL) && (node->type == XML_ELEMENT_NODE))
line = node->line;
+ if ((line == 0) || (line == 65535))
+ line = xmlGetLineNo(node);
}
/*
@@ -601,8 +615,11 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel,
data = ctxt->userData;
} else if (channel == NULL) {
channel = xmlGenericError;
- if (!data)
+ if (ctxt != NULL) {
+ data = ctxt;
+ } else {
data = xmlGenericErrorContext;
+ }
}
if (channel == NULL)
return;
@@ -654,7 +671,7 @@ __xmlSimpleError(int domain, int code, xmlNodePtr node,
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format an error messages, gives file, line, position and
* extra parameters.
*/
@@ -697,7 +714,7 @@ xmlParserError(void *ctx, const char *msg, ...)
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format a warning messages, gives file, line, position and
* extra parameters.
*/
@@ -718,7 +735,7 @@ xmlParserWarning(void *ctx, const char *msg, ...)
}
xmlParserPrintFileInfo(input);
}
-
+
xmlGenericError(xmlGenericErrorContext, "warning: ");
XML_GET_VAR_STR(msg, str);
xmlGenericError(xmlGenericErrorContext, "%s", str);
@@ -736,9 +753,9 @@ xmlParserWarning(void *ctx, const char *msg, ...)
}
/************************************************************************
- * *
- * Handling of validation errors *
- * *
+ * *
+ * Handling of validation errors *
+ * *
************************************************************************/
/**
@@ -746,7 +763,7 @@ xmlParserWarning(void *ctx, const char *msg, ...)
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format an validity error messages, gives file,
* line, position and extra parameters.
*/
@@ -764,7 +781,7 @@ xmlParserValidityError(void *ctx, const char *msg, ...)
input = ctxt->input;
if ((input->filename == NULL) && (ctxt->inputNr > 1))
input = ctxt->inputTab[ctxt->inputNr - 2];
-
+
if (had_info == 0) {
xmlParserPrintFileInfo(input);
}
@@ -790,7 +807,7 @@ xmlParserValidityError(void *ctx, const char *msg, ...)
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format a validity warning messages, gives file, line,
* position and extra parameters.
*/
@@ -809,7 +826,7 @@ xmlParserValidityWarning(void *ctx, const char *msg, ...)
xmlParserPrintFileInfo(input);
}
-
+
xmlGenericError(xmlGenericErrorContext, "validity warning: ");
XML_GET_VAR_STR(msg, str);
xmlGenericError(xmlGenericErrorContext, "%s", str);
diff --git a/example/Makefile.am b/example/Makefile.am
index 9eb6a76..488ee6e 100644
--- a/example/Makefile.am
+++ b/example/Makefile.am
@@ -1,10 +1,7 @@
noinst_PROGRAMS = gjobread
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
-DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)/include
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS)
+LDADD = $(RDL_LIBS) $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(ICONV_LIBS) -lm $(WIN32_EXTRA_LIBADD)
gjobread_SOURCES=gjobread.c
-gjobread_LDFLAGS=
-gjobread_DEPENDENCIES= $(DEPS)
-gjobread_LDADD= @RDL_LIBS@ $(LDADDS)
diff --git a/example/Makefile.in b/example/Makefile.in
index ad7643f..dea6d65 100644
--- a/example/Makefile.in
+++ b/example/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -36,12 +80,13 @@ build_triplet = @build@
host_triplet = @host@
noinst_PROGRAMS = gjobread$(EXEEXT)
subdir = example
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@@ -51,14 +96,28 @@ CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_gjobread_OBJECTS = gjobread.$(OBJEXT)
gjobread_OBJECTS = $(am_gjobread_OBJECTS)
+gjobread_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+gjobread_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
-gjobread_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(gjobread_LDFLAGS) $(LDFLAGS) -o $@
+am__v_lt_1 =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -69,24 +128,42 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
SOURCES = $(gjobread_SOURCES)
DIST_SOURCES = $(gjobread_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -94,7 +171,6 @@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -131,6 +207,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -175,6 +252,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -186,7 +266,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -211,7 +290,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -244,6 +322,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -317,13 +396,10 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
-DEPS = $(top_builddir)/libxml2.la
-LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)/include
+AM_CFLAGS = $(THREAD_CFLAGS) $(Z_CFLAGS)
+LDADD = $(RDL_LIBS) $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(ICONV_LIBS) -lm $(WIN32_EXTRA_LIBADD)
gjobread_SOURCES = gjobread.c
-gjobread_LDFLAGS =
-gjobread_DEPENDENCIES = $(DEPS)
-gjobread_LDADD = @RDL_LIBS@ $(LDADDS)
all: all-am
.SUFFIXES:
@@ -367,9 +443,10 @@ clean-noinstPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
-gjobread$(EXEEXT): $(gjobread_OBJECTS) $(gjobread_DEPENDENCIES)
+
+gjobread$(EXEEXT): $(gjobread_OBJECTS) $(gjobread_DEPENDENCIES) $(EXTRA_gjobread_DEPENDENCIES)
@rm -f gjobread$(EXEEXT)
- $(AM_V_CCLD)$(gjobread_LINK) $(gjobread_OBJECTS) $(gjobread_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(LINK) $(gjobread_OBJECTS) $(gjobread_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -382,26 +459,23 @@ distclean-compile:
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
@@ -409,26 +483,15 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -440,15 +503,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -457,6 +516,21 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -505,10 +579,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -593,18 +672,19 @@ uninstall-am:
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/globals.c b/globals.c
index 69002f0..e351b03 100644
--- a/globals.c
+++ b/globals.c
@@ -65,9 +65,9 @@ void xmlCleanupGlobals(void)
}
/************************************************************************
- * *
+ * *
* All the user accessible global variables of the library *
- * *
+ * *
************************************************************************/
/*
@@ -246,7 +246,7 @@ static int xmlPedanticParserDefaultValueThrDef = 0;
* xmlLineNumbersDefaultValue:
*
* Global setting, indicate that the parser should store the line number
- * in the content field of elements in the DOM tree.
+ * in the content field of elements in the DOM tree.
* Disabled by default since this may not be safe for old classes of
* applicaton.
*/
@@ -509,7 +509,7 @@ xmlInitializeGlobalState(xmlGlobalStatePtr gs)
#if defined(LIBXML_DOCB_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED)
initdocbDefaultSAXHandler(&gs->docbDefaultSAXHandler);
#endif
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED)
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED)
inithtmlDefaultSAXHandler(&gs->htmlDefaultSAXHandler);
#endif
@@ -523,7 +523,7 @@ xmlInitializeGlobalState(xmlGlobalStatePtr gs)
gs->xmlDefaultSAXLocator.getSystemId = xmlSAX2GetSystemId;
gs->xmlDefaultSAXLocator.getLineNumber = xmlSAX2GetLineNumber;
gs->xmlDefaultSAXLocator.getColumnNumber = xmlSAX2GetColumnNumber;
- gs->xmlDoValidityCheckingDefaultValue =
+ gs->xmlDoValidityCheckingDefaultValue =
xmlDoValidityCheckingDefaultValueThrDef;
#if defined(DEBUG_MEMORY_LOCATION) | defined(DEBUG_MEMORY)
gs->xmlFree = (xmlFreeFunc) xmlMemFree;
@@ -548,7 +548,7 @@ xmlInitializeGlobalState(xmlGlobalStatePtr gs)
gs->xmlParserVersion = LIBXML_VERSION_STRING;
gs->xmlPedanticParserDefaultValue = xmlPedanticParserDefaultValueThrDef;
gs->xmlSaveNoEmptyTags = xmlSaveNoEmptyTagsThrDef;
- gs->xmlSubstituteEntitiesDefaultValue =
+ gs->xmlSubstituteEntitiesDefaultValue =
xmlSubstituteEntitiesDefaultValueThrDef;
gs->xmlGenericError = xmlGenericErrorThrDef;
@@ -600,7 +600,7 @@ xmlRegisterNodeFunc
xmlRegisterNodeDefault(xmlRegisterNodeFunc func)
{
xmlRegisterNodeFunc old = xmlRegisterNodeDefaultValue;
-
+
__xmlRegisterCallbacks = 1;
xmlRegisterNodeDefaultValue = func;
return(old);
@@ -610,10 +610,10 @@ xmlRegisterNodeFunc
xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func)
{
xmlRegisterNodeFunc old;
-
+
xmlMutexLock(xmlThrDefMutex);
old = xmlRegisterNodeDefaultValueThrDef;
-
+
__xmlRegisterCallbacks = 1;
xmlRegisterNodeDefaultValueThrDef = func;
xmlMutexUnlock(xmlThrDefMutex);
@@ -633,7 +633,7 @@ xmlDeregisterNodeFunc
xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func)
{
xmlDeregisterNodeFunc old = xmlDeregisterNodeDefaultValue;
-
+
__xmlRegisterCallbacks = 1;
xmlDeregisterNodeDefaultValue = func;
return(old);
@@ -646,7 +646,7 @@ xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func)
xmlMutexLock(xmlThrDefMutex);
old = xmlDeregisterNodeDefaultValueThrDef;
-
+
__xmlRegisterCallbacks = 1;
xmlDeregisterNodeDefaultValueThrDef = func;
xmlMutexUnlock(xmlThrDefMutex);
@@ -658,7 +658,7 @@ xmlParserInputBufferCreateFilenameFunc
xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func)
{
xmlParserInputBufferCreateFilenameFunc old;
-
+
xmlMutexLock(xmlThrDefMutex);
old = xmlParserInputBufferCreateFilenameValueThrDef;
if (old == NULL) {
@@ -675,7 +675,7 @@ xmlOutputBufferCreateFilenameFunc
xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func)
{
xmlOutputBufferCreateFilenameFunc old;
-
+
xmlMutexLock(xmlThrDefMutex);
old = xmlOutputBufferCreateFilenameValueThrDef;
#ifdef LIBXML_OUTPUT_ENABLED
@@ -732,7 +732,7 @@ __xmlMalloc(void){
if (IS_MAIN_THREAD)
return (&xmlMalloc);
else
- return (&xmlGetGlobalState()->xmlMalloc);
+ return (&xmlGetGlobalState()->xmlMalloc);
}
#undef xmlMallocAtomic
diff --git a/hash.c b/hash.c
index 15e1efe..f9a2017 100644
--- a/hash.c
+++ b/hash.c
@@ -83,7 +83,7 @@ xmlHashComputeKey(xmlHashTablePtr table, const xmlChar *name,
const xmlChar *name2, const xmlChar *name3) {
unsigned long value = 0L;
char ch;
-
+
#ifdef HASH_RANDOMIZATION
value = table->random_seed;
#endif
@@ -93,11 +93,13 @@ xmlHashComputeKey(xmlHashTablePtr table, const xmlChar *name,
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
}
}
+ value = value ^ ((value << 5) + (value >> 3));
if (name2 != NULL) {
while ((ch = *name2++) != 0) {
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
}
}
+ value = value ^ ((value << 5) + (value >> 3));
if (name3 != NULL) {
while ((ch = *name3++) != 0) {
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
@@ -113,7 +115,7 @@ xmlHashComputeQKey(xmlHashTablePtr table,
const xmlChar *prefix3, const xmlChar *name3) {
unsigned long value = 0L;
char ch;
-
+
#ifdef HASH_RANDOMIZATION
value = table->random_seed;
#endif
@@ -133,6 +135,7 @@ xmlHashComputeQKey(xmlHashTablePtr table,
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
}
}
+ value = value ^ ((value << 5) + (value >> 3));
if (prefix2 != NULL) {
while ((ch = *prefix2++) != 0) {
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
@@ -144,6 +147,7 @@ xmlHashComputeQKey(xmlHashTablePtr table,
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
}
}
+ value = value ^ ((value << 5) + (value >> 3));
if (prefix3 != NULL) {
while ((ch = *prefix3++) != 0) {
value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
@@ -169,10 +173,10 @@ xmlHashComputeQKey(xmlHashTablePtr table,
xmlHashTablePtr
xmlHashCreate(int size) {
xmlHashTablePtr table;
-
+
if (size <= 0)
size = 256;
-
+
table = xmlMalloc(sizeof(xmlHashTable));
if (table) {
table->dict = NULL;
@@ -180,11 +184,11 @@ xmlHashCreate(int size) {
table->nbElems = 0;
table->table = xmlMalloc(size * sizeof(xmlHashEntry));
if (table->table) {
- memset(table->table, 0, size * sizeof(xmlHashEntry));
+ memset(table->table, 0, size * sizeof(xmlHashEntry));
#ifdef HASH_RANDOMIZATION
table->random_seed = __xmlRandom();
#endif
- return(table);
+ return(table);
}
xmlFree(table);
}
@@ -230,7 +234,7 @@ xmlHashGrow(xmlHashTablePtr table, int size) {
#ifdef DEBUG_GROW
unsigned long nbElem = 0;
#endif
-
+
if (table == NULL)
return(-1);
if (size < 8)
@@ -242,7 +246,7 @@ xmlHashGrow(xmlHashTablePtr table, int size) {
oldtable = table->table;
if (oldtable == NULL)
return(-1);
-
+
table->table = xmlMalloc(size * sizeof(xmlHashEntry));
if (table->table == NULL) {
table->table = oldtable;
@@ -252,13 +256,13 @@ xmlHashGrow(xmlHashTablePtr table, int size) {
table->size = size;
/* If the two loops are merged, there would be situations where
- a new entry needs to allocated and data copied into it from
+ a new entry needs to allocated and data copied into it from
the main table. So instead, we run through the array twice, first
copying all the elements in the main array (where we can't get
conflicts) and then the rest, so we only free (and don't allocate)
*/
for (i = 0; i < oldsize; i++) {
- if (oldtable[i].valid == 0)
+ if (oldtable[i].valid == 0)
continue;
key = xmlHashComputeKey(table, oldtable[i].name, oldtable[i].name2,
oldtable[i].name3);
@@ -282,8 +286,8 @@ xmlHashGrow(xmlHashTablePtr table, int size) {
table->table[key].next = NULL;
xmlFree(iter);
} else {
- iter->next = table->table[key].next;
- table->table[key].next = iter;
+ iter->next = table->table[key].next;
+ table->table[key].next = iter;
}
#ifdef DEBUG_GROW
@@ -599,7 +603,7 @@ xmlHashAddEntry3(xmlHashTablePtr table, const xmlChar *name,
entry->valid = 1;
- if (insert != NULL)
+ if (insert != NULL)
insert->next = entry;
table->nbElems++;
@@ -748,7 +752,7 @@ xmlHashUpdateEntry3(xmlHashTablePtr table, const xmlChar *name,
* Returns the a pointer to the userdata
*/
void *
-xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name,
+xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name,
const xmlChar *name2, const xmlChar *name3) {
unsigned long key;
xmlHashEntryPtr entry;
@@ -821,14 +825,14 @@ typedef struct {
void *data;
} stubData;
-static void
-stubHashScannerFull (void *payload, void *data, const xmlChar *name,
+static void
+stubHashScannerFull (void *payload, void *data, const xmlChar *name,
const xmlChar *name2 ATTRIBUTE_UNUSED,
const xmlChar *name3 ATTRIBUTE_UNUSED) {
stubData *stubdata = (stubData *) data;
stubdata->hashscanner (payload, stubdata->data, (xmlChar *) name);
-}
-
+}
+
/**
* xmlHashScan:
* @table: the hash table
@@ -841,7 +845,7 @@ void
xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data) {
stubData stubdata;
stubdata.data = data;
- stubdata.hashscanner = f;
+ stubdata.hashscanner = f;
xmlHashScanFull (table, stubHashScannerFull, &stubdata);
}
@@ -866,7 +870,7 @@ xmlHashScanFull(xmlHashTablePtr table, xmlHashScannerFull f, void *data) {
if (table->table) {
for(i = 0; i < table->size; i++) {
- if (table->table[i].valid == 0)
+ if (table->table[i].valid == 0)
continue;
iter = &(table->table[i]);
while (iter) {
@@ -905,7 +909,7 @@ xmlHashScanFull(xmlHashTablePtr table, xmlHashScannerFull f, void *data) {
* the comparison is considered to match.
*/
void
-xmlHashScan3(xmlHashTablePtr table, const xmlChar *name,
+xmlHashScan3(xmlHashTablePtr table, const xmlChar *name,
const xmlChar *name2, const xmlChar *name3,
xmlHashScanner f, void *data) {
xmlHashScanFull3 (table, name, name2, name3,
@@ -926,7 +930,7 @@ xmlHashScan3(xmlHashTablePtr table, const xmlChar *name,
* the comparison is considered to match.
*/
void
-xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name,
+xmlHashScanFull3(xmlHashTablePtr table, const xmlChar *name,
const xmlChar *name2, const xmlChar *name3,
xmlHashScannerFull f, void *data) {
int i;
@@ -980,6 +984,9 @@ xmlHashCopy(xmlHashTablePtr table, xmlHashCopier f) {
return(NULL);
ret = xmlHashCreate(table->size);
+ if (ret == NULL)
+ return(NULL);
+
if (table->table) {
for(i = 0; i < table->size; i++) {
if (table->table[i].valid == 0)
diff --git a/include/Makefile.in b/include/Makefile.in
index 18ab34d..c7aea1b 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -34,38 +78,70 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
@@ -99,7 +175,6 @@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -136,6 +211,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -180,6 +256,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -191,7 +270,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -216,7 +294,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -249,6 +326,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -365,22 +443,25 @@ clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -395,57 +476,12 @@ $(RECURSIVE_TARGETS):
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -461,12 +497,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -478,15 +509,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -495,6 +522,21 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -531,13 +573,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -572,10 +611,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -653,22 +697,20 @@ ps-am:
uninstall-am:
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic clean-libtool \
- ctags ctags-recursive distclean distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/include/libxml/DOCBparser.h b/include/libxml/DOCBparser.h
index 461d4ee..9394fa7 100644
--- a/include/libxml/DOCBparser.h
+++ b/include/libxml/DOCBparser.h
@@ -47,44 +47,44 @@ XMLPUBFUN int XMLCALL
const unsigned char *in,
int *inlen, int quoteChar);
-XMLPUBFUN docbDocPtr XMLCALL
+XMLPUBFUN docbDocPtr XMLCALL
docbSAXParseDoc (xmlChar *cur,
const char *encoding,
docbSAXHandlerPtr sax,
void *userData);
-XMLPUBFUN docbDocPtr XMLCALL
+XMLPUBFUN docbDocPtr XMLCALL
docbParseDoc (xmlChar *cur,
const char *encoding);
-XMLPUBFUN docbDocPtr XMLCALL
+XMLPUBFUN docbDocPtr XMLCALL
docbSAXParseFile (const char *filename,
const char *encoding,
docbSAXHandlerPtr sax,
void *userData);
-XMLPUBFUN docbDocPtr XMLCALL
+XMLPUBFUN docbDocPtr XMLCALL
docbParseFile (const char *filename,
const char *encoding);
/**
* Interfaces for the Push mode.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
docbFreeParserCtxt (docbParserCtxtPtr ctxt);
-XMLPUBFUN docbParserCtxtPtr XMLCALL
+XMLPUBFUN docbParserCtxtPtr XMLCALL
docbCreatePushParserCtxt(docbSAXHandlerPtr sax,
void *user_data,
const char *chunk,
int size,
const char *filename,
xmlCharEncoding enc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
docbParseChunk (docbParserCtxtPtr ctxt,
const char *chunk,
int size,
int terminate);
-XMLPUBFUN docbParserCtxtPtr XMLCALL
+XMLPUBFUN docbParserCtxtPtr XMLCALL
docbCreateFileParserCtxt(const char *filename,
const char *encoding);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
docbParseDocument (docbParserCtxtPtr ctxt);
#ifdef __cplusplus
diff --git a/include/libxml/HTMLparser.h b/include/libxml/HTMLparser.h
index 10a3d65..551186c 100644
--- a/include/libxml/HTMLparser.h
+++ b/include/libxml/HTMLparser.h
@@ -83,87 +83,87 @@ struct _htmlEntityDesc {
/*
* There is only few public functions.
*/
-XMLPUBFUN const htmlElemDesc * XMLCALL
+XMLPUBFUN const htmlElemDesc * XMLCALL
htmlTagLookup (const xmlChar *tag);
-XMLPUBFUN const htmlEntityDesc * XMLCALL
+XMLPUBFUN const htmlEntityDesc * XMLCALL
htmlEntityLookup(const xmlChar *name);
-XMLPUBFUN const htmlEntityDesc * XMLCALL
+XMLPUBFUN const htmlEntityDesc * XMLCALL
htmlEntityValueLookup(unsigned int value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlIsAutoClosed(htmlDocPtr doc,
htmlNodePtr elem);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlAutoCloseTag(htmlDocPtr doc,
const xmlChar *name,
htmlNodePtr elem);
-XMLPUBFUN const htmlEntityDesc * XMLCALL
+XMLPUBFUN const htmlEntityDesc * XMLCALL
htmlParseEntityRef(htmlParserCtxtPtr ctxt,
const xmlChar **str);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlParseCharRef(htmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlParseElement(htmlParserCtxtPtr ctxt);
-XMLPUBFUN htmlParserCtxtPtr XMLCALL
+XMLPUBFUN htmlParserCtxtPtr XMLCALL
htmlNewParserCtxt(void);
-XMLPUBFUN htmlParserCtxtPtr XMLCALL
+XMLPUBFUN htmlParserCtxtPtr XMLCALL
htmlCreateMemoryParserCtxt(const char *buffer,
int size);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlParseDocument(htmlParserCtxtPtr ctxt);
-XMLPUBFUN htmlDocPtr XMLCALL
+XMLPUBFUN htmlDocPtr XMLCALL
htmlSAXParseDoc (xmlChar *cur,
const char *encoding,
htmlSAXHandlerPtr sax,
void *userData);
-XMLPUBFUN htmlDocPtr XMLCALL
+XMLPUBFUN htmlDocPtr XMLCALL
htmlParseDoc (xmlChar *cur,
const char *encoding);
-XMLPUBFUN htmlDocPtr XMLCALL
+XMLPUBFUN htmlDocPtr XMLCALL
htmlSAXParseFile(const char *filename,
const char *encoding,
htmlSAXHandlerPtr sax,
void *userData);
-XMLPUBFUN htmlDocPtr XMLCALL
+XMLPUBFUN htmlDocPtr XMLCALL
htmlParseFile (const char *filename,
const char *encoding);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
UTF8ToHtml (unsigned char *out,
int *outlen,
const unsigned char *in,
int *inlen);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlEncodeEntities(unsigned char *out,
int *outlen,
const unsigned char *in,
int *inlen, int quoteChar);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlIsScriptAttribute(const xmlChar *name);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlHandleOmittedElem(int val);
#ifdef LIBXML_PUSH_ENABLED
/**
* Interfaces for the Push mode.
*/
-XMLPUBFUN htmlParserCtxtPtr XMLCALL
+XMLPUBFUN htmlParserCtxtPtr XMLCALL
htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax,
void *user_data,
const char *chunk,
int size,
const char *filename,
xmlCharEncoding enc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlParseChunk (htmlParserCtxtPtr ctxt,
const char *chunk,
int size,
int terminate);
#endif /* LIBXML_PUSH_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlFreeParserCtxt (htmlParserCtxtPtr ctxt);
/*
diff --git a/include/libxml/HTMLtree.h b/include/libxml/HTMLtree.h
index 6ea8207..c0e1103 100644
--- a/include/libxml/HTMLtree.h
+++ b/include/libxml/HTMLtree.h
@@ -62,78 +62,78 @@ extern "C" {
XMLPUBFUN htmlDocPtr XMLCALL
htmlNewDoc (const xmlChar *URI,
const xmlChar *ExternalID);
-XMLPUBFUN htmlDocPtr XMLCALL
+XMLPUBFUN htmlDocPtr XMLCALL
htmlNewDocNoDtD (const xmlChar *URI,
const xmlChar *ExternalID);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
htmlGetMetaEncoding (htmlDocPtr doc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlSetMetaEncoding (htmlDocPtr doc,
const xmlChar *encoding);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlDocDumpMemory (xmlDocPtr cur,
xmlChar **mem,
int *size);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlDocDumpMemoryFormat (xmlDocPtr cur,
xmlChar **mem,
int *size,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlDocDump (FILE *f,
xmlDocPtr cur);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlSaveFile (const char *filename,
xmlDocPtr cur);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlNodeDump (xmlBufferPtr buf,
xmlDocPtr doc,
xmlNodePtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlNodeDumpFile (FILE *out,
xmlDocPtr doc,
xmlNodePtr cur);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlNodeDumpFileFormat (FILE *out,
xmlDocPtr doc,
xmlNodePtr cur,
const char *encoding,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlSaveFileEnc (const char *filename,
xmlDocPtr cur,
const char *encoding);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlSaveFileFormat (const char *filename,
xmlDocPtr cur,
const char *encoding,
int format);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf,
xmlDocPtr doc,
xmlNodePtr cur,
const char *encoding,
int format);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlDocContentDumpOutput(xmlOutputBufferPtr buf,
xmlDocPtr cur,
const char *encoding);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf,
xmlDocPtr cur,
const char *encoding,
int format);
-XMLPUBFUN void XMLCALL
- htmlNodeDumpOutput (xmlOutputBufferPtr buf,
+XMLPUBFUN void XMLCALL
+ htmlNodeDumpOutput (xmlOutputBufferPtr buf,
xmlDocPtr doc,
- xmlNodePtr cur,
+ xmlNodePtr cur,
const char *encoding);
#endif /* LIBXML_OUTPUT_ENABLED */
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
htmlIsBooleanAttr (const xmlChar *name);
diff --git a/include/libxml/Makefile.in b/include/libxml/Makefile.in
index a45d8ca..ce84b54 100644
--- a/include/libxml/Makefile.in
+++ b/include/libxml/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -35,27 +79,38 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = include/libxml
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(srcdir)/xmlversion.h.in $(xmlinc_HEADERS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = xmlversion.h
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -77,8 +132,31 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(xmlincdir)"
HEADERS = $(xmlinc_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -86,7 +164,6 @@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -123,6 +200,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -167,6 +245,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -178,7 +259,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -203,7 +283,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -236,6 +315,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -403,8 +483,11 @@ clean-libtool:
-rm -rf .libs _libs
install-xmlincHEADERS: $(xmlinc_HEADERS)
@$(NORMAL_INSTALL)
- test -z "$(xmlincdir)" || $(MKDIR_P) "$(DESTDIR)$(xmlincdir)"
@list='$(xmlinc_HEADERS)'; test -n "$(xmlincdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(xmlincdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(xmlincdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -418,30 +501,17 @@ uninstall-xmlincHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(xmlinc_HEADERS)'; test -n "$(xmlincdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(xmlincdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(xmlincdir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+ dir='$(DESTDIR)$(xmlincdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -453,15 +523,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -470,6 +536,21 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -521,10 +602,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -604,18 +690,18 @@ uninstall-am: uninstall-xmlincHEADERS
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool ctags distclean distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip install-xmlincHEADERS \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-xmlincHEADERS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool cscopelist-am ctags ctags-am distclean \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ install-xmlincHEADERS installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-xmlincHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/include/libxml/SAX.h b/include/libxml/SAX.h
index 0ca161b..20093ce 100644
--- a/include/libxml/SAX.h
+++ b/include/libxml/SAX.h
@@ -25,53 +25,53 @@ extern "C" {
#endif
XMLPUBFUN const xmlChar * XMLCALL
getPublicId (void *ctx);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
getSystemId (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
setDocumentLocator (void *ctx,
xmlSAXLocatorPtr loc);
-
-XMLPUBFUN int XMLCALL
+
+XMLPUBFUN int XMLCALL
getLineNumber (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
getColumnNumber (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
isStandalone (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
hasInternalSubset (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
hasExternalSubset (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
internalSubset (void *ctx,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
externalSubset (void *ctx,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN xmlEntityPtr XMLCALL
+XMLPUBFUN xmlEntityPtr XMLCALL
getEntity (void *ctx,
const xmlChar *name);
-XMLPUBFUN xmlEntityPtr XMLCALL
+XMLPUBFUN xmlEntityPtr XMLCALL
getParameterEntity (void *ctx,
const xmlChar *name);
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
resolveEntity (void *ctx,
const xmlChar *publicId,
const xmlChar *systemId);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
entityDecl (void *ctx,
const xmlChar *name,
int type,
const xmlChar *publicId,
const xmlChar *systemId,
xmlChar *content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
attributeDecl (void *ctx,
const xmlChar *elem,
const xmlChar *fullname,
@@ -79,87 +79,87 @@ XMLPUBFUN void XMLCALL
int def,
const xmlChar *defaultValue,
xmlEnumerationPtr tree);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
elementDecl (void *ctx,
const xmlChar *name,
int type,
xmlElementContentPtr content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
notationDecl (void *ctx,
const xmlChar *name,
const xmlChar *publicId,
const xmlChar *systemId);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
unparsedEntityDecl (void *ctx,
const xmlChar *name,
const xmlChar *publicId,
const xmlChar *systemId,
const xmlChar *notationName);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
startDocument (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
endDocument (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
attribute (void *ctx,
const xmlChar *fullname,
const xmlChar *value);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
startElement (void *ctx,
const xmlChar *fullname,
const xmlChar **atts);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
endElement (void *ctx,
const xmlChar *name);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
reference (void *ctx,
const xmlChar *name);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
characters (void *ctx,
const xmlChar *ch,
int len);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
ignorableWhitespace (void *ctx,
const xmlChar *ch,
int len);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
processingInstruction (void *ctx,
const xmlChar *target,
const xmlChar *data);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
globalNamespace (void *ctx,
const xmlChar *href,
const xmlChar *prefix);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
setNamespace (void *ctx,
const xmlChar *name);
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
getNamespace (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
checkNamespace (void *ctx,
xmlChar *nameSpace);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
namespaceDecl (void *ctx,
const xmlChar *href,
const xmlChar *prefix);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
comment (void *ctx,
const xmlChar *value);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
cdataBlock (void *ctx,
const xmlChar *value,
int len);
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr,
int warning);
#ifdef LIBXML_HTML_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
#endif
#ifdef LIBXML_DOCB_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
initdocbDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
#endif
#endif /* LIBXML_SAX1_ENABLED */
diff --git a/include/libxml/SAX2.h b/include/libxml/SAX2.h
index 8d2db02..a55212e 100644
--- a/include/libxml/SAX2.h
+++ b/include/libxml/SAX2.h
@@ -23,53 +23,53 @@ extern "C" {
#endif
XMLPUBFUN const xmlChar * XMLCALL
xmlSAX2GetPublicId (void *ctx);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlSAX2GetSystemId (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2SetDocumentLocator (void *ctx,
xmlSAXLocatorPtr loc);
-
-XMLPUBFUN int XMLCALL
+
+XMLPUBFUN int XMLCALL
xmlSAX2GetLineNumber (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSAX2GetColumnNumber (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSAX2IsStandalone (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSAX2HasInternalSubset (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSAX2HasExternalSubset (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2InternalSubset (void *ctx,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2ExternalSubset (void *ctx,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN xmlEntityPtr XMLCALL
+XMLPUBFUN xmlEntityPtr XMLCALL
xmlSAX2GetEntity (void *ctx,
const xmlChar *name);
-XMLPUBFUN xmlEntityPtr XMLCALL
+XMLPUBFUN xmlEntityPtr XMLCALL
xmlSAX2GetParameterEntity (void *ctx,
const xmlChar *name);
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlSAX2ResolveEntity (void *ctx,
const xmlChar *publicId,
const xmlChar *systemId);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2EntityDecl (void *ctx,
const xmlChar *name,
int type,
const xmlChar *publicId,
const xmlChar *systemId,
xmlChar *content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2AttributeDecl (void *ctx,
const xmlChar *elem,
const xmlChar *fullname,
@@ -77,36 +77,38 @@ XMLPUBFUN void XMLCALL
int def,
const xmlChar *defaultValue,
xmlEnumerationPtr tree);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2ElementDecl (void *ctx,
const xmlChar *name,
int type,
xmlElementContentPtr content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2NotationDecl (void *ctx,
const xmlChar *name,
const xmlChar *publicId,
const xmlChar *systemId);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2UnparsedEntityDecl (void *ctx,
const xmlChar *name,
const xmlChar *publicId,
const xmlChar *systemId,
const xmlChar *notationName);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2StartDocument (void *ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2EndDocument (void *ctx);
-#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
-XMLPUBFUN void XMLCALL
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
+ defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || \
+ defined(LIBXML_LEGACY_ENABLED)
+XMLPUBFUN void XMLCALL
xmlSAX2StartElement (void *ctx,
const xmlChar *fullname,
const xmlChar **atts);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2EndElement (void *ctx,
const xmlChar *name);
-#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED */
+#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED or LIBXML_LEGACY_ENABLED */
XMLPUBFUN void XMLCALL
xmlSAX2StartElementNs (void *ctx,
const xmlChar *localname,
@@ -122,25 +124,25 @@ XMLPUBFUN void XMLCALL
const xmlChar *localname,
const xmlChar *prefix,
const xmlChar *URI);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2Reference (void *ctx,
const xmlChar *name);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2Characters (void *ctx,
const xmlChar *ch,
int len);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2IgnorableWhitespace (void *ctx,
const xmlChar *ch,
int len);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2ProcessingInstruction (void *ctx,
const xmlChar *target,
const xmlChar *data);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2Comment (void *ctx,
const xmlChar *value);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2CDataBlock (void *ctx,
const xmlChar *value,
int len);
@@ -153,22 +155,22 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN int XMLCALL
xmlSAXVersion (xmlSAXHandler *hdlr,
int version);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr,
int warning);
#ifdef LIBXML_HTML_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
htmlDefaultSAXHandlerInit (void);
#endif
#ifdef LIBXML_DOCB_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
docbDefaultSAXHandlerInit (void);
#endif
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDefaultSAXHandlerInit (void);
#ifdef __cplusplus
}
diff --git a/include/libxml/c14n.h b/include/libxml/c14n.h
index 3011af7..b8971d9 100644
--- a/include/libxml/c14n.h
+++ b/include/libxml/c14n.h
@@ -54,7 +54,7 @@ extern "C" {
/*
* xmlC14NMode:
- *
+ *
* Predefined values for C14N modes
*
*/
diff --git a/include/libxml/catalog.h b/include/libxml/catalog.h
index b444137..5a13f51 100644
--- a/include/libxml/catalog.h
+++ b/include/libxml/catalog.h
@@ -68,111 +68,111 @@ typedef xmlCatalog *xmlCatalogPtr;
*/
XMLPUBFUN xmlCatalogPtr XMLCALL
xmlNewCatalog (int sgml);
-XMLPUBFUN xmlCatalogPtr XMLCALL
+XMLPUBFUN xmlCatalogPtr XMLCALL
xmlLoadACatalog (const char *filename);
-XMLPUBFUN xmlCatalogPtr XMLCALL
+XMLPUBFUN xmlCatalogPtr XMLCALL
xmlLoadSGMLSuperCatalog (const char *filename);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlConvertSGMLCatalog (xmlCatalogPtr catal);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlACatalogAdd (xmlCatalogPtr catal,
const xmlChar *type,
const xmlChar *orig,
const xmlChar *replace);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlACatalogRemove (xmlCatalogPtr catal,
const xmlChar *value);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlACatalogResolve (xmlCatalogPtr catal,
const xmlChar *pubID,
const xmlChar *sysID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlACatalogResolveSystem(xmlCatalogPtr catal,
const xmlChar *sysID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlACatalogResolvePublic(xmlCatalogPtr catal,
const xmlChar *pubID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlACatalogResolveURI (xmlCatalogPtr catal,
const xmlChar *URI);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlACatalogDump (xmlCatalogPtr catal,
FILE *out);
#endif /* LIBXML_OUTPUT_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeCatalog (xmlCatalogPtr catal);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCatalogIsEmpty (xmlCatalogPtr catal);
/*
* Global operations.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlInitializeCatalog (void);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlLoadCatalog (const char *filename);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlLoadCatalogs (const char *paths);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCatalogCleanup (void);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCatalogDump (FILE *out);
#endif /* LIBXML_OUTPUT_ENABLED */
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlCatalogResolve (const xmlChar *pubID,
const xmlChar *sysID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlCatalogResolveSystem (const xmlChar *sysID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlCatalogResolvePublic (const xmlChar *pubID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlCatalogResolveURI (const xmlChar *URI);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCatalogAdd (const xmlChar *type,
const xmlChar *orig,
const xmlChar *replace);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCatalogRemove (const xmlChar *value);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlParseCatalogFile (const char *filename);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCatalogConvert (void);
/*
* Strictly minimal interfaces for per-document catalogs used
* by the parser.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCatalogFreeLocal (void *catalogs);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlCatalogAddLocal (void *catalogs,
const xmlChar *URL);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlCatalogLocalResolve (void *catalogs,
const xmlChar *pubID,
const xmlChar *sysID);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlCatalogLocalResolveURI(void *catalogs,
const xmlChar *URI);
/*
* Preference settings.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCatalogSetDebug (int level);
-XMLPUBFUN xmlCatalogPrefer XMLCALL
+XMLPUBFUN xmlCatalogPrefer XMLCALL
xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCatalogSetDefaults (xmlCatalogAllow allow);
-XMLPUBFUN xmlCatalogAllow XMLCALL
+XMLPUBFUN xmlCatalogAllow XMLCALL
xmlCatalogGetDefaults (void);
/* DEPRECATED interfaces */
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlCatalogGetSystem (const xmlChar *sysID);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlCatalogGetPublic (const xmlChar *pubID);
#ifdef __cplusplus
diff --git a/include/libxml/debugXML.h b/include/libxml/debugXML.h
index 5a9d20b..5b3be13 100644
--- a/include/libxml/debugXML.h
+++ b/include/libxml/debugXML.h
@@ -25,18 +25,18 @@ extern "C" {
/*
* The standard Dump routines.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDebugDumpString (FILE *output,
const xmlChar *str);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDebugDumpAttr (FILE *output,
xmlAttrPtr attr,
int depth);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDebugDumpAttrList (FILE *output,
xmlAttrPtr attr,
int depth);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDebugDumpOneNode (FILE *output,
xmlNodePtr node,
int depth);
@@ -54,16 +54,16 @@ XMLPUBFUN void XMLCALL
XMLPUBFUN void XMLCALL
xmlDebugDumpDocument (FILE *output,
xmlDocPtr doc);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDebugDumpDTD (FILE *output,
xmlDtdPtr dtd);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDebugDumpEntities (FILE *output,
xmlDocPtr doc);
/****************************************************************
* *
- * Checking routines *
+ * Checking routines *
* *
****************************************************************/
@@ -73,16 +73,16 @@ XMLPUBFUN int XMLCALL
/****************************************************************
* *
- * XML shell helpers *
+ * XML shell helpers *
* *
****************************************************************/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlLsOneNode (FILE *output, xmlNodePtr node);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlLsCountNode (xmlNodePtr node);
-XMLPUBFUN const char * XMLCALL
+XMLPUBFUN const char * XMLCALL
xmlBoolToText (int boolval);
/****************************************************************
@@ -136,63 +136,63 @@ typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt,
xmlNodePtr node,
xmlNodePtr node2);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlShellPrintXPathError (int errorType,
const char *arg);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlShellPrintXPathResult(xmlXPathObjectPtr list);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellList (xmlShellCtxtPtr ctxt,
char *arg,
xmlNodePtr node,
xmlNodePtr node2);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellBase (xmlShellCtxtPtr ctxt,
char *arg,
xmlNodePtr node,
xmlNodePtr node2);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellDir (xmlShellCtxtPtr ctxt,
char *arg,
xmlNodePtr node,
xmlNodePtr node2);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellLoad (xmlShellCtxtPtr ctxt,
char *filename,
xmlNodePtr node,
xmlNodePtr node2);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlShellPrintNode (xmlNodePtr node);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellCat (xmlShellCtxtPtr ctxt,
char *arg,
xmlNodePtr node,
xmlNodePtr node2);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellWrite (xmlShellCtxtPtr ctxt,
char *filename,
xmlNodePtr node,
xmlNodePtr node2);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellSave (xmlShellCtxtPtr ctxt,
char *filename,
xmlNodePtr node,
xmlNodePtr node2);
#endif /* LIBXML_OUTPUT_ENABLED */
#ifdef LIBXML_VALID_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellValidate (xmlShellCtxtPtr ctxt,
char *dtd,
xmlNodePtr node,
xmlNodePtr node2);
#endif /* LIBXML_VALID_ENABLED */
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellDu (xmlShellCtxtPtr ctxt,
char *arg,
xmlNodePtr tree,
xmlNodePtr node2);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlShellPwd (xmlShellCtxtPtr ctxt,
char *buffer,
xmlNodePtr node,
@@ -201,12 +201,12 @@ XMLPUBFUN int XMLCALL
/*
* The Shell interface.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlShell (xmlDocPtr doc,
char *filename,
xmlShellReadlineFunc input,
FILE *output);
-
+
#endif /* LIBXML_XPATH_ENABLED */
#ifdef __cplusplus
diff --git a/include/libxml/dict.h b/include/libxml/dict.h
index 5994868..7022ec8 100644
--- a/include/libxml/dict.h
+++ b/include/libxml/dict.h
@@ -11,6 +11,7 @@
#ifndef __XML_DICT_H__
#define __XML_DICT_H__
+#include <limits.h>
#include <libxml/xmlversion.h>
#include <libxml/tree.h>
@@ -34,6 +35,11 @@ XMLPUBFUN int XMLCALL xmlInitializeDict(void);
*/
XMLPUBFUN xmlDictPtr XMLCALL
xmlDictCreate (void);
+XMLPUBFUN size_t XMLCALL
+ xmlDictSetLimit (xmlDictPtr dict,
+ size_t limit);
+XMLPUBFUN size_t XMLCALL
+ xmlDictGetUsage (xmlDictPtr dict);
XMLPUBFUN xmlDictPtr XMLCALL
xmlDictCreateSub(xmlDictPtr sub);
XMLPUBFUN int XMLCALL
diff --git a/include/libxml/encoding.h b/include/libxml/encoding.h
index 3a3b9b2..7967cc6 100644
--- a/include/libxml/encoding.h
+++ b/include/libxml/encoding.h
@@ -163,32 +163,32 @@ extern "C" {
/*
* Interfaces for encoding handlers.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlInitCharEncodingHandlers (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCleanupCharEncodingHandlers (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler);
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL
xmlGetCharEncodingHandler (xmlCharEncoding enc);
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL
xmlFindCharEncodingHandler (const char *name);
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL
- xmlNewCharEncodingHandler (const char *name,
- xmlCharEncodingInputFunc input,
- xmlCharEncodingOutputFunc output);
+ xmlNewCharEncodingHandler (const char *name,
+ xmlCharEncodingInputFunc input,
+ xmlCharEncodingOutputFunc output);
/*
* Interfaces for encoding names and aliases.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlAddEncodingAlias (const char *name,
const char *alias);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlDelEncodingAlias (const char *alias);
XMLPUBFUN const char * XMLCALL
xmlGetEncodingAlias (const char *alias);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCleanupEncodingAliases (void);
XMLPUBFUN xmlCharEncoding XMLCALL
xmlParseCharEncoding (const char *name);
@@ -202,12 +202,12 @@ XMLPUBFUN xmlCharEncoding XMLCALL
xmlDetectCharEncoding (const unsigned char *in,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCharEncOutFunc (xmlCharEncodingHandler *handler,
xmlBufferPtr out,
xmlBufferPtr in);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCharEncInFunc (xmlCharEncodingHandler *handler,
xmlBufferPtr out,
xmlBufferPtr in);
@@ -215,20 +215,20 @@ XMLPUBFUN int XMLCALL
xmlCharEncFirstLine (xmlCharEncodingHandler *handler,
xmlBufferPtr out,
xmlBufferPtr in);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCharEncCloseFunc (xmlCharEncodingHandler *handler);
/*
* Export a few useful functions
*/
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
UTF8Toisolat1 (unsigned char *out,
int *outlen,
const unsigned char *in,
int *inlen);
#endif /* LIBXML_OUTPUT_ENABLED */
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
isolat1ToUTF8 (unsigned char *out,
int *outlen,
const unsigned char *in,
diff --git a/include/libxml/entities.h b/include/libxml/entities.h
index cefb97f..47b4573 100644
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -57,8 +57,9 @@ struct _xmlEntity {
const xmlChar *URI; /* the full URI as computed */
int owner; /* does the entity own the childrens */
int checked; /* was the entity content checked */
- /* this is also used to count entites
- * references done from that entity */
+ /* this is also used to count entities
+ * references done from that entity
+ * and if it contains '<' */
};
/*
@@ -102,7 +103,7 @@ XMLPUBFUN xmlEntityPtr XMLCALL
XMLPUBFUN xmlEntityPtr XMLCALL
xmlGetPredefinedEntity (const xmlChar *name);
XMLPUBFUN xmlEntityPtr XMLCALL
- xmlGetDocEntity (xmlDocPtr doc,
+ xmlGetDocEntity (const xmlDoc *doc,
const xmlChar *name);
XMLPUBFUN xmlEntityPtr XMLCALL
xmlGetDtdEntity (xmlDocPtr doc,
@@ -119,7 +120,7 @@ XMLPUBFUN xmlChar * XMLCALL
xmlEncodeEntitiesReentrant(xmlDocPtr doc,
const xmlChar *input);
XMLPUBFUN xmlChar * XMLCALL
- xmlEncodeSpecialChars (xmlDocPtr doc,
+ xmlEncodeSpecialChars (const xmlDoc *doc,
const xmlChar *input);
XMLPUBFUN xmlEntitiesTablePtr XMLCALL
xmlCreateEntitiesTable (void);
diff --git a/include/libxml/globals.h b/include/libxml/globals.h
index 9d688e0..a9305aa 100644
--- a/include/libxml/globals.h
+++ b/include/libxml/globals.h
@@ -39,7 +39,9 @@ XMLPUBFUN void XMLCALL xmlCleanupGlobals(void);
* Returns the new xmlParserInputBufferPtr in case of success or NULL if no
* method was found.
*/
-typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, xmlCharEncoding enc);
+typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI,
+ xmlCharEncoding enc);
+
/**
* xmlOutputBufferCreateFilenameFunc:
@@ -52,7 +54,9 @@ typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const
* Returns the new xmlOutputBufferPtr in case of success or NULL if no
* method was found.
*/
-typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression);
+typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI,
+ xmlCharEncodingHandlerPtr encoder,
+ int compression);
XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func);
@@ -185,7 +189,8 @@ XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregi
XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL
xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func);
XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL
- xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func);
+ xmlThrDefParserInputBufferCreateFilenameDefault(
+ xmlParserInputBufferCreateFilenameFunc func);
/** DOC_DISABLE */
/*
@@ -297,7 +302,8 @@ XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void);
#else
XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme;
#endif
-XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
+XMLPUBFUN xmlBufferAllocationScheme XMLCALL
+ xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void);
#ifdef LIBXML_THREAD_ENABLED
@@ -479,7 +485,8 @@ XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void);
XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
#endif
-XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL __xmlParserInputBufferCreateFilenameValue(void);
+XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \
+ __xmlParserInputBufferCreateFilenameValue(void);
#ifdef LIBXML_THREAD_ENABLED
#define xmlParserInputBufferCreateFilenameValue \
(*(__xmlParserInputBufferCreateFilenameValue()))
diff --git a/include/libxml/hash.h b/include/libxml/hash.h
index 7fe4be7..dc8ab7e 100644
--- a/include/libxml/hash.h
+++ b/include/libxml/hash.h
@@ -1,7 +1,7 @@
/*
* Summary: Chained hash tables
- * Description: This module implements the hash table support used in
- * various places in the library.
+ * Description: This module implements the hash table support used in
+ * various places in the library.
*
* Copy: See Copyright for the status of this software.
*
@@ -108,40 +108,40 @@ XMLPUBFUN xmlHashTablePtr XMLCALL
XMLPUBFUN xmlHashTablePtr XMLCALL
xmlHashCreateDict(int size,
xmlDictPtr dict);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlHashFree (xmlHashTablePtr table,
xmlHashDeallocator f);
/*
* Add a new entry to the hash table.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashAddEntry (xmlHashTablePtr table,
const xmlChar *name,
void *userdata);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashUpdateEntry(xmlHashTablePtr table,
const xmlChar *name,
void *userdata,
xmlHashDeallocator f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashAddEntry2(xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
void *userdata);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashUpdateEntry2(xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
void *userdata,
xmlHashDeallocator f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashAddEntry3(xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
const xmlChar *name3,
void *userdata);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashUpdateEntry3(xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
@@ -152,13 +152,13 @@ XMLPUBFUN int XMLCALL
/*
* Remove an entry from the hash table.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
xmlHashDeallocator f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
const xmlChar *name2, xmlHashDeallocator f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
const xmlChar *name2, const xmlChar *name3,
xmlHashDeallocator f);
@@ -166,29 +166,29 @@ XMLPUBFUN int XMLCALL
/*
* Retrieve the userdata.
*/
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlHashLookup (xmlHashTablePtr table,
const xmlChar *name);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlHashLookup2 (xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlHashLookup3 (xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
const xmlChar *name3);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlHashQLookup (xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *prefix);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlHashQLookup2 (xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *prefix,
const xmlChar *name2,
const xmlChar *prefix2);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlHashQLookup3 (xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *prefix,
@@ -200,27 +200,27 @@ XMLPUBFUN void * XMLCALL
/*
* Helpers.
*/
-XMLPUBFUN xmlHashTablePtr XMLCALL
+XMLPUBFUN xmlHashTablePtr XMLCALL
xmlHashCopy (xmlHashTablePtr table,
xmlHashCopier f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlHashSize (xmlHashTablePtr table);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlHashScan (xmlHashTablePtr table,
xmlHashScanner f,
void *data);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlHashScan3 (xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
const xmlChar *name3,
xmlHashScanner f,
void *data);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlHashScanFull (xmlHashTablePtr table,
xmlHashScannerFull f,
void *data);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlHashScanFull3(xmlHashTablePtr table,
const xmlChar *name,
const xmlChar *name2,
diff --git a/include/libxml/list.h b/include/libxml/list.h
index 1d83482..0504e0c 100644
--- a/include/libxml/list.h
+++ b/include/libxml/list.h
@@ -1,6 +1,6 @@
/*
* Summary: lists interfaces
- * Description: this module implement the list support used in
+ * Description: this module implement the list support used in
* various place in the library.
*
* Copy: See Copyright for the status of this software.
@@ -55,76 +55,76 @@ typedef int (*xmlListWalker) (const void *data, const void *user);
XMLPUBFUN xmlListPtr XMLCALL
xmlListCreate (xmlListDeallocator deallocator,
xmlListDataCompare compare);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListDelete (xmlListPtr l);
/* Basic Operators */
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlListSearch (xmlListPtr l,
void *data);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlListReverseSearch (xmlListPtr l,
void *data);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListInsert (xmlListPtr l,
void *data) ;
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListAppend (xmlListPtr l,
void *data) ;
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListRemoveFirst (xmlListPtr l,
void *data);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListRemoveLast (xmlListPtr l,
void *data);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListRemoveAll (xmlListPtr l,
void *data);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListClear (xmlListPtr l);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListEmpty (xmlListPtr l);
-XMLPUBFUN xmlLinkPtr XMLCALL
+XMLPUBFUN xmlLinkPtr XMLCALL
xmlListFront (xmlListPtr l);
-XMLPUBFUN xmlLinkPtr XMLCALL
+XMLPUBFUN xmlLinkPtr XMLCALL
xmlListEnd (xmlListPtr l);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListSize (xmlListPtr l);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListPopFront (xmlListPtr l);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListPopBack (xmlListPtr l);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListPushFront (xmlListPtr l,
void *data);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListPushBack (xmlListPtr l,
void *data);
/* Advanced Operators */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListReverse (xmlListPtr l);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListSort (xmlListPtr l);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListWalk (xmlListPtr l,
xmlListWalker walker,
const void *user);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListReverseWalk (xmlListPtr l,
xmlListWalker walker,
const void *user);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlListMerge (xmlListPtr l1,
xmlListPtr l2);
-XMLPUBFUN xmlListPtr XMLCALL
+XMLPUBFUN xmlListPtr XMLCALL
xmlListDup (const xmlListPtr old);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlListCopy (xmlListPtr cur,
const xmlListPtr old);
/* Link operators */
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlLinkGetData (xmlLinkPtr lk);
/* xmlListUnique() */
diff --git a/include/libxml/nanoftp.h b/include/libxml/nanoftp.h
index 397bbba..abb4bf7 100644
--- a/include/libxml/nanoftp.h
+++ b/include/libxml/nanoftp.h
@@ -31,6 +31,7 @@
* macro used to provide portability of code to windows sockets
* the value to be used when the socket is not valid
*/
+#undef INVALID_SOCKET
#define INVALID_SOCKET (-1)
#endif
diff --git a/include/libxml/nanohttp.h b/include/libxml/nanohttp.h
index 1d8ac24..22b8fb4 100644
--- a/include/libxml/nanohttp.h
+++ b/include/libxml/nanohttp.h
@@ -7,7 +7,7 @@
*
* Author: Daniel Veillard
*/
-
+
#ifndef __NANO_HTTP_H__
#define __NANO_HTTP_H__
@@ -20,22 +20,22 @@ extern "C" {
#endif
XMLPUBFUN void XMLCALL
xmlNanoHTTPInit (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNanoHTTPCleanup (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNanoHTTPScanProxy (const char *URL);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlNanoHTTPFetch (const char *URL,
const char *filename,
char **contentType);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlNanoHTTPMethod (const char *URL,
const char *method,
const char *input,
char **contentType,
const char *headers,
int ilen);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlNanoHTTPMethodRedir (const char *URL,
const char *method,
const char *input,
@@ -43,16 +43,16 @@ XMLPUBFUN void * XMLCALL
char **redir,
const char *headers,
int ilen);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlNanoHTTPOpen (const char *URL,
char **contentType);
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlNanoHTTPOpenRedir (const char *URL,
char **contentType,
char **redir);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlNanoHTTPReturnCode (void *ctx);
-XMLPUBFUN const char * XMLCALL
+XMLPUBFUN const char * XMLCALL
xmlNanoHTTPAuthHeader (void *ctx);
XMLPUBFUN const char * XMLCALL
xmlNanoHTTPRedir (void *ctx);
@@ -62,16 +62,16 @@ XMLPUBFUN const char * XMLCALL
xmlNanoHTTPEncoding (void *ctx);
XMLPUBFUN const char * XMLCALL
xmlNanoHTTPMimeType (void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlNanoHTTPRead (void *ctx,
void *dest,
int len);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlNanoHTTPSave (void *ctxt,
const char *filename);
#endif /* LIBXML_OUTPUT_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNanoHTTPClose (void *ctx);
#ifdef __cplusplus
}
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index 04edb9d..3f5730d 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -80,7 +80,7 @@ struct _xmlParserInput {
* xmlParserNodeInfo:
*
* The parser can be asked to collect Node informations, i.e. at what
- * place in the file they were detected.
+ * place in the file they were detected.
* NOTE: This is off by default and not very well tested.
*/
typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
@@ -125,9 +125,9 @@ typedef enum {
XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */
XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */
XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */
- XML_PARSER_EPILOG, /* the Misc* after the last end tag */
+ XML_PARSER_EPILOG, /* the Misc* after the last end tag */
XML_PARSER_IGNORE, /* within an IGNORED section */
- XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */
+ XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */
} xmlParserInputState;
/**
@@ -221,7 +221,7 @@ struct _xmlParserCtxt {
xmlValidCtxt vctxt; /* The validity context */
xmlParserInputState instate; /* current type of input */
- int token; /* next char look-ahead */
+ int token; /* next char look-ahead */
char *directory; /* the data directory */
@@ -310,6 +310,7 @@ struct _xmlParserCtxt {
xmlParserNodeInfo *nodeInfoTab; /* array of nodeInfos */
int input_id; /* we need to label inputs */
+ unsigned long sizeentcopy; /* volume of entity copy */
};
/**
@@ -400,8 +401,8 @@ typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
/**
* entityDeclSAXFunc:
* @ctx: the user data (XML parser context)
- * @name: the entity name
- * @type: the entity type
+ * @name: the entity name
+ * @type: the entity type
* @publicId: The public ID of the entity
* @systemId: The system ID of the entity
* @content: the entity value (without processing).
@@ -431,8 +432,8 @@ typedef void (*notationDeclSAXFunc)(void *ctx,
* attributeDeclSAXFunc:
* @ctx: the user data (XML parser context)
* @elem: the name of the element
- * @fullname: the attribute name
- * @type: the attribute type
+ * @fullname: the attribute name
+ * @type: the attribute type
* @def: the type of default value
* @defaultValue: the attribute default value
* @tree: the tree of enumerated value set
@@ -449,8 +450,8 @@ typedef void (*attributeDeclSAXFunc)(void *ctx,
/**
* elementDeclSAXFunc:
* @ctx: the user data (XML parser context)
- * @name: the element name
- * @type: the element type
+ * @name: the element name
+ * @type: the element type
* @content: the element value tree
*
* An element definition has been parsed.
@@ -537,7 +538,7 @@ typedef void (*attributeSAXFunc) (void *ctx,
* @ctx: the user data (XML parser context)
* @name: The entity name
*
- * Called when an entity reference is detected.
+ * Called when an entity reference is detected.
*/
typedef void (*referenceSAXFunc) (void *ctx,
const xmlChar *name);
@@ -601,7 +602,7 @@ typedef void (*cdataBlockSAXFunc) (
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format a warning messages, callback.
*/
typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
@@ -611,7 +612,7 @@ typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format an error messages, callback.
*/
typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
@@ -621,7 +622,7 @@ typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
* @ctx: an XML parser context
* @msg: the message to display/transmit
* @...: extra parameters for the message display
- *
+ *
* Display and format fatal error messages, callback.
* Note: so far fatalError() SAX callbacks are not used, error()
* get all the callbacks for errors.
@@ -697,7 +698,7 @@ typedef void (*startElementNsSAX2Func) (void *ctx,
int nb_attributes,
int nb_defaulted,
const xmlChar **attributes);
-
+
/**
* endElementNsSAX2Func:
* @ctx: the user data (XML parser context)
@@ -792,7 +793,7 @@ struct _xmlSAXHandlerV1 {
* xmlExternalEntityLoader:
* @URL: The System ID of the resource requested
* @ID: The Public ID of the resource requested
- * @context: the XML parser context
+ * @context: the XML parser context
*
* External entity loaders types.
*
@@ -818,18 +819,18 @@ extern "C" {
/*
* Init/Cleanup
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlInitParser (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCleanupParser (void);
/*
* Input functions
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParserInputRead (xmlParserInputPtr in,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParserInputGrow (xmlParserInputPtr in,
int len);
@@ -837,101 +838,101 @@ XMLPUBFUN int XMLCALL
* Basic parsing Interfaces
*/
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlParseDoc (const xmlChar *cur);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlParseFile (const char *filename);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlParseMemory (const char *buffer,
int size);
#endif /* LIBXML_SAX1_ENABLED */
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSubstituteEntitiesDefault(int val);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlKeepBlanksDefault (int val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlStopParser (xmlParserCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlPedanticParserDefault(int val);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlLineNumbersDefault (int val);
#ifdef LIBXML_SAX1_ENABLED
/*
- * Recovery mode
+ * Recovery mode
*/
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlRecoverDoc (const xmlChar *cur);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlRecoverMemory (const char *buffer,
int size);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlRecoverFile (const char *filename);
#endif /* LIBXML_SAX1_ENABLED */
/*
* Less common routines and SAX interfaces
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseDocument (xmlParserCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
void *user_data,
const char *filename);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
void *user_data,
const char *buffer,
int size);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlSAXParseDoc (xmlSAXHandlerPtr sax,
const xmlChar *cur,
int recovery);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlSAXParseMemory (xmlSAXHandlerPtr sax,
const char *buffer,
- int size,
+ int size,
int recovery);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
const char *buffer,
- int size,
+ int size,
int recovery,
void *data);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlSAXParseFile (xmlSAXHandlerPtr sax,
const char *filename,
int recovery);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
const char *filename,
int recovery,
void *data);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlSAXParseEntity (xmlSAXHandlerPtr sax,
const char *filename);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlParseEntity (const char *filename);
#endif /* LIBXML_SAX1_ENABLED */
#ifdef LIBXML_VALID_ENABLED
-XMLPUBFUN xmlDtdPtr XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
xmlSAXParseDTD (xmlSAXHandlerPtr sax,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
xmlParseDTD (const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
xmlIOParseDTD (xmlSAXHandlerPtr sax,
xmlParserInputBufferPtr input,
xmlCharEncoding enc);
#endif /* LIBXML_VALID_ENABLE */
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseBalancedChunkMemory(xmlDocPtr doc,
xmlSAXHandlerPtr sax,
void *user_data,
@@ -946,7 +947,7 @@ XMLPUBFUN xmlParserErrors XMLCALL
int options,
xmlNodePtr *lst);
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
xmlSAXHandlerPtr sax,
void *user_data,
@@ -954,7 +955,7 @@ XMLPUBFUN int XMLCALL
const xmlChar *string,
xmlNodePtr *lst,
int recover);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseExternalEntity (xmlDocPtr doc,
xmlSAXHandlerPtr sax,
void *user_data,
@@ -963,7 +964,7 @@ XMLPUBFUN int XMLCALL
const xmlChar *ID,
xmlNodePtr *lst);
#endif /* LIBXML_SAX1_ENABLED */
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
const xmlChar *URL,
const xmlChar *ID,
@@ -972,35 +973,35 @@ XMLPUBFUN int XMLCALL
/*
* Parser contexts handling.
*/
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlNewParserCtxt (void);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
const xmlChar* buffer,
const char *filename);
#endif /* LIBXML_SAX1_ENABLED */
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreateDocParserCtxt (const xmlChar *cur);
#ifdef LIBXML_LEGACY_ENABLED
/*
* Reading/setting optional parsing features.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlGetFeaturesList (int *len,
const char **result);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlGetFeature (xmlParserCtxtPtr ctxt,
const char *name,
void *result);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSetFeature (xmlParserCtxtPtr ctxt,
const char *name,
void *value);
@@ -1010,13 +1011,13 @@ XMLPUBFUN int XMLCALL
/*
* Interfaces for the Push mode.
*/
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
void *user_data,
const char *chunk,
int size,
const char *filename);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseChunk (xmlParserCtxtPtr ctxt,
const char *chunk,
int size,
@@ -1027,7 +1028,7 @@ XMLPUBFUN int XMLCALL
* Special I/O mode.
*/
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
void *user_data,
xmlInputReadCallback ioread,
@@ -1035,7 +1036,7 @@ XMLPUBFUN xmlParserCtxtPtr XMLCALL
void *ioctx,
xmlCharEncoding enc);
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
xmlParserInputBufferPtr input,
xmlCharEncoding enc);
@@ -1046,14 +1047,14 @@ XMLPUBFUN xmlParserInputPtr XMLCALL
XMLPUBFUN const xmlParserNodeInfo* XMLCALL
xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt,
const xmlNodePtr node);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
-XMLPUBFUN unsigned long XMLCALL
+XMLPUBFUN unsigned long XMLCALL
xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
const xmlNodePtr node);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
const xmlParserNodeInfoPtr info);
@@ -1061,7 +1062,7 @@ XMLPUBFUN void XMLCALL
* External entities handling actually implemented in xmlIO.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
XMLPUBFUN xmlExternalEntityLoader XMLCALL
xmlGetExternalEntityLoader(void);
@@ -1109,7 +1110,8 @@ typedef enum {
XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
XML_PARSE_HUGE = 1<<19,/* relax any hardcoded limit from the parser */
XML_PARSE_OLDSAX = 1<<20,/* parse using SAX2 interface before 2.7.0 */
- XML_PARSE_IGNORE_ENC= 1<<21 /* ignore internal document encoding hint */
+ XML_PARSE_IGNORE_ENC= 1<<21,/* ignore internal document encoding hint */
+ XML_PARSE_BIG_LINES = 1<<22 /* Store big lines numbers in text PSVI field */
} xmlParserOption;
XMLPUBFUN void XMLCALL
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index a5e75b5..6065320 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -1,5 +1,5 @@
/*
- * Summary: internals routines exported by the parser.
+ * Summary: internals routines and limits exported by the parser.
* Description: this module exports a number of internal parsing routines
* they are not really all intended for applications but
* can prove useful doing low level processing.
@@ -36,10 +36,43 @@ XMLPUBVAR unsigned int xmlParserMaxDepth;
* Maximum size allowed for a single text node when building a tree.
* This is not a limitation of the parser but a safety boundary feature,
* use XML_PARSE_HUGE option to override it.
+ * Introduced in 2.9.0
*/
#define XML_MAX_TEXT_LENGTH 10000000
/**
+ * XML_MAX_NAME_LENGTH:
+ *
+ * Maximum size allowed for a markup identitier
+ * This is not a limitation of the parser but a safety boundary feature,
+ * use XML_PARSE_HUGE option to override it.
+ * Note that with the use of parsing dictionaries overriding the limit
+ * may result in more runtime memory usage in face of "unfriendly' content
+ * Introduced in 2.9.0
+ */
+#define XML_MAX_NAME_LENGTH 50000
+
+/**
+ * XML_MAX_DICTIONARY_LIMIT:
+ *
+ * Maximum size allowed by the parser for a dictionary by default
+ * This is not a limitation of the parser but a safety boundary feature,
+ * use XML_PARSE_HUGE option to override it.
+ * Introduced in 2.9.0
+ */
+#define XML_MAX_DICTIONARY_LIMIT 10000000
+
+/**
+ * XML_MAX_LOOKUP_LIMIT:
+ *
+ * Maximum size allowed by the parser for ahead lookup
+ * This is an upper boundary enforced by the parser to avoid bad
+ * behaviour on "unfriendly' content
+ * Introduced in 2.9.0
+ */
+#define XML_MAX_LOOKUP_LIMIT 10000000
+
+/**
* XML_MAX_NAMELEN:
*
* Identifiers can be longer, but this will be more costly
@@ -57,7 +90,7 @@ XMLPUBVAR unsigned int xmlParserMaxDepth;
/************************************************************************
* *
- * UNICODE version of the macros. *
+ * UNICODE version of the macros. *
* *
************************************************************************/
/**
@@ -153,7 +186,7 @@ XMLPUBVAR unsigned int xmlParserMaxDepth;
*
* Always false (all combining chars > 0xff)
*/
-#define IS_COMBINING_CH(c) 0
+#define IS_COMBINING_CH(c) 0
/**
* IS_EXTENDER:
@@ -194,7 +227,7 @@ XMLPUBVAR unsigned int xmlParserMaxDepth;
* Macro to check the following production in the XML spec:
*
*
- * [84] Letter ::= BaseChar | Ideographic
+ * [84] Letter ::= BaseChar | Ideographic
*/
#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
@@ -251,7 +284,7 @@ XMLPUBVAR unsigned int xmlParserMaxDepth;
*
* Skips the end of line chars.
*/
-#define SKIP_EOL(p) \
+#define SKIP_EOL(p) \
if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \
if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; }
@@ -288,25 +321,25 @@ XMLPUBFUN int XMLCALL xmlIsLetter (int c);
/**
* Parser context.
*/
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreateFileParserCtxt (const char *filename);
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreateURLParserCtxt (const char *filename,
int options);
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreateMemoryParserCtxt(const char *buffer,
int size);
-XMLPUBFUN xmlParserCtxtPtr XMLCALL
+XMLPUBFUN xmlParserCtxtPtr XMLCALL
xmlCreateEntityParserCtxt(const xmlChar *URL,
const xmlChar *ID,
const xmlChar *base);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSwitchEncoding (xmlParserCtxtPtr ctxt,
xmlCharEncoding enc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSwitchToEncoding (xmlParserCtxtPtr ctxt,
xmlCharEncodingHandlerPtr handler);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt,
xmlParserInputPtr input,
xmlCharEncodingHandlerPtr handler);
@@ -324,29 +357,29 @@ XMLPUBFUN void XMLCALL
/**
* Input Streams.
*/
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlNewStringInputStream (xmlParserCtxtPtr ctxt,
const xmlChar *buffer);
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlNewEntityInputStream (xmlParserCtxtPtr ctxt,
xmlEntityPtr entity);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlPushInput (xmlParserCtxtPtr ctxt,
xmlParserInputPtr input);
-XMLPUBFUN xmlChar XMLCALL
+XMLPUBFUN xmlChar XMLCALL
xmlPopInput (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeInputStream (xmlParserInputPtr input);
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlNewInputFromFile (xmlParserCtxtPtr ctxt,
const char *filename);
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlNewInputStream (xmlParserCtxtPtr ctxt);
/**
* Namespaces.
*/
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlSplitQName (xmlParserCtxtPtr ctxt,
const xmlChar *name,
xmlChar **prefix);
@@ -354,112 +387,112 @@ XMLPUBFUN xmlChar * XMLCALL
/**
* Generic production rules.
*/
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlParseName (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseNmtoken (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseEntityValue (xmlParserCtxtPtr ctxt,
xmlChar **orig);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseAttValue (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseSystemLiteral (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParsePubidLiteral (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseCharData (xmlParserCtxtPtr ctxt,
int cdata);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseExternalID (xmlParserCtxtPtr ctxt,
xmlChar **publicID,
int strict);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseComment (xmlParserCtxtPtr ctxt);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlParsePITarget (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParsePI (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseNotationDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseEntityDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseDefaultDecl (xmlParserCtxtPtr ctxt,
xmlChar **value);
-XMLPUBFUN xmlEnumerationPtr XMLCALL
+XMLPUBFUN xmlEnumerationPtr XMLCALL
xmlParseNotationType (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlEnumerationPtr XMLCALL
+XMLPUBFUN xmlEnumerationPtr XMLCALL
xmlParseEnumerationType (xmlParserCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseEnumeratedType (xmlParserCtxtPtr ctxt,
xmlEnumerationPtr *tree);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseAttributeType (xmlParserCtxtPtr ctxt,
xmlEnumerationPtr *tree);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlElementContentPtr XMLCALL
+XMLPUBFUN xmlElementContentPtr XMLCALL
xmlParseElementMixedContentDecl
(xmlParserCtxtPtr ctxt,
int inputchk);
-XMLPUBFUN xmlElementContentPtr XMLCALL
+XMLPUBFUN xmlElementContentPtr XMLCALL
xmlParseElementChildrenContentDecl
(xmlParserCtxtPtr ctxt,
int inputchk);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
const xmlChar *name,
xmlElementContentPtr *result);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseElementDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseMarkupDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseCharRef (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlEntityPtr XMLCALL
+XMLPUBFUN xmlEntityPtr XMLCALL
xmlParseEntityRef (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseReference (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParsePEReference (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt);
#ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlParseAttribute (xmlParserCtxtPtr ctxt,
xmlChar **value);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlParseStartTag (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseEndTag (xmlParserCtxtPtr ctxt);
#endif /* LIBXML_SAX1_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseCDSect (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseContent (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseElement (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseVersionNum (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseVersionInfo (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseEncName (xmlParserCtxtPtr ctxt);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlParseEncodingDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParseSDDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseXMLDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseTextDecl (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseMisc (xmlParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParseExternalSubset (xmlParserCtxtPtr ctxt,
const xmlChar *ExternalID,
- const xmlChar *SystemID);
+ const xmlChar *SystemID);
/**
* XML_SUBSTITUTE_NONE:
*
@@ -483,7 +516,7 @@ XMLPUBFUN void XMLCALL
*
* Both general and parameter entities need to be substituted.
*/
-#define XML_SUBSTITUTE_BOTH 3
+#define XML_SUBSTITUTE_BOTH 3
XMLPUBFUN xmlChar * XMLCALL
xmlStringDecodeEntities (xmlParserCtxtPtr ctxt,
@@ -563,21 +596,21 @@ XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filenam
typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent,
xmlNodePtr firstNode,
xmlNodePtr lastNode);
-
+
XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlParseQuotedString (xmlParserCtxtPtr ctxt);
XMLPUBFUN void XMLCALL
xmlParseNamespace (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlScanName (xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt);
XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlNamespaceParseQName (xmlParserCtxtPtr ctxt,
xmlChar **prefix);
/**
@@ -590,7 +623,7 @@ XMLPUBFUN xmlChar * XMLCALL
xmlChar end,
xmlChar end2,
xmlChar end3);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlHandleEntity (xmlParserCtxtPtr ctxt,
xmlEntityPtr entity);
diff --git a/include/libxml/relaxng.h b/include/libxml/relaxng.h
index bdb0a7d..f269c9e 100644
--- a/include/libxml/relaxng.h
+++ b/include/libxml/relaxng.h
@@ -32,7 +32,9 @@ typedef xmlRelaxNG *xmlRelaxNGPtr;
*
* Signature of an error callback from a Relax-NG validation
*/
-typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
+typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
+ const char *msg,
+ ...) LIBXML_ATTR_FORMAT(2,3);
/**
* xmlRelaxNGValidityWarningFunc:
@@ -42,7 +44,9 @@ typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg
*
* Signature of a warning callback from a Relax-NG validation
*/
-typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
+typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
+ const char *msg,
+ ...) LIBXML_ATTR_FORMAT(2,3);
/**
* A schemas validation context
diff --git a/include/libxml/schemasInternals.h b/include/libxml/schemasInternals.h
index b68a6e1..4f0ca9a 100644
--- a/include/libxml/schemasInternals.h
+++ b/include/libxml/schemasInternals.h
@@ -104,8 +104,8 @@ typedef enum {
XML_SCHEMA_TYPE_IDC_UNIQUE,
XML_SCHEMA_TYPE_IDC_KEY,
XML_SCHEMA_TYPE_IDC_KEYREF,
- XML_SCHEMA_TYPE_PARTICLE = 25,
- XML_SCHEMA_TYPE_ATTRIBUTE_USE,
+ XML_SCHEMA_TYPE_PARTICLE = 25,
+ XML_SCHEMA_TYPE_ATTRIBUTE_USE,
XML_SCHEMA_FACET_MININCLUSIVE = 1000,
XML_SCHEMA_FACET_MINEXCLUSIVE,
XML_SCHEMA_FACET_MAXINCLUSIVE,
diff --git a/include/libxml/schematron.h b/include/libxml/schematron.h
index f442826..364eaec 100644
--- a/include/libxml/schematron.h
+++ b/include/libxml/schematron.h
@@ -69,17 +69,17 @@ typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr;
/*
* Interfaces for parsing.
*/
-XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
+XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
xmlSchematronNewParserCtxt (const char *URL);
-XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
+XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
xmlSchematronNewMemParserCtxt(const char *buffer,
int size);
XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
xmlSchematronNewDocParserCtxt(xmlDocPtr doc);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSchematronFreeParserCtxt (xmlSchematronParserCtxtPtr ctxt);
/*****
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt,
xmlSchematronValidityErrorFunc err,
xmlSchematronValidityWarningFunc warn,
@@ -92,9 +92,9 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN int XMLCALL
xmlSchematronIsValid (xmlSchematronValidCtxtPtr ctxt);
*****/
-XMLPUBFUN xmlSchematronPtr XMLCALL
+XMLPUBFUN xmlSchematronPtr XMLCALL
xmlSchematronParse (xmlSchematronParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSchematronFree (xmlSchematronPtr schema);
/*
* Interfaces for validating
@@ -105,7 +105,7 @@ XMLPUBFUN void XMLCALL
xmlStructuredErrorFunc serror,
void *ctx);
/******
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSchematronSetValidErrors (xmlSchematronValidCtxtPtr ctxt,
xmlSchematronValidityErrorFunc err,
xmlSchematronValidityWarningFunc warn,
@@ -125,12 +125,12 @@ XMLPUBFUN int XMLCALL
xmlNodePtr elem);
*******/
-XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL
+XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL
xmlSchematronNewValidCtxt (xmlSchematronPtr schema,
- int options);
-XMLPUBFUN void XMLCALL
+ int options);
+XMLPUBFUN void XMLCALL
xmlSchematronFreeValidCtxt (xmlSchematronValidCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSchematronValidateDoc (xmlSchematronValidCtxtPtr ctxt,
xmlDocPtr instance);
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index 2196f8d..2f90717 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -13,6 +13,7 @@
#define __XML_TREE_H__
#include <stdio.h>
+#include <limits.h>
#include <libxml/xmlversion.h>
#include <libxml/xmlstring.h>
@@ -81,7 +82,8 @@ typedef enum {
/**
* xmlBuffer:
*
- * A buffer structure.
+ * A buffer structure, this old construct is limited to 2GB and
+ * is being deprecated, use API with xmlBuf instead
*/
typedef struct _xmlBuffer xmlBuffer;
typedef xmlBuffer *xmlBufferPtr;
@@ -94,6 +96,41 @@ struct _xmlBuffer {
};
/**
+ * xmlBuf:
+ *
+ * A buffer structure, new one, the actual structure internals are not public
+ */
+
+typedef struct _xmlBuf xmlBuf;
+
+/**
+ * xmlBufPtr:
+ *
+ * A pointer to a buffer structure, the actual structure internals are not
+ * public
+ */
+
+typedef xmlBuf *xmlBufPtr;
+
+/*
+ * A few public routines for xmlBuf. As those are expected to be used
+ * mostly internally the bulk of the routines are internal in buf.h
+ */
+XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf);
+XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf);
+XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf);
+XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len);
+
+/*
+ * LIBXML2_NEW_BUFFER:
+ *
+ * Macro used to express that the API use the new buffers for
+ * xmlParserInputBuffer and xmlOutputBuffer. The change was
+ * introduced in 2.9.0.
+ */
+#define LIBXML2_NEW_BUFFER
+
+/**
* XML_XML_NAMESPACE:
*
* This is the namespace for the special xml: prefix predefined in the
@@ -480,7 +517,7 @@ struct _xmlNode {
/**
* XML_GET_LINE:
*
- * Macro to extract the line number of an element node.
+ * Macro to extract the line number of an element node.
*/
#define XML_GET_LINE(n) \
(xmlGetLineNo(n))
@@ -523,7 +560,7 @@ struct _xmlDoc {
/* End of common part */
int compression;/* level of zlib compression */
- int standalone; /* standalone document (no external refs)
+ int standalone; /* standalone document (no external refs)
1 if standalone="yes"
0 if standalone="no"
-1 if there is no XML declaration
@@ -554,9 +591,9 @@ typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
/**
* xmlDOMWrapAcquireNsFunction:
* @ctxt: a DOM wrapper context
- * @node: the context node (element or attribute)
+ * @node: the context node (element or attribute)
* @nsName: the requested namespace name
- * @nsPrefix: the requested namespace prefix
+ * @nsPrefix: the requested namespace prefix
*
* A function called to acquire namespaces (xmlNs) from the wrapper.
*
@@ -603,7 +640,7 @@ struct _xmlDOMWrapCtxt {
/**
* xmlRootNode:
*
- * Macro for compatibility naming layer with libxml1. Maps
+ * Macro for compatibility naming layer with libxml1. Maps
* to "children".
*/
#ifndef xmlRootNode
@@ -617,438 +654,450 @@ struct _xmlDOMWrapCtxt {
/*
* Some helper functions
*/
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \
+ defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \
+ defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \
+ defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \
+ defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
XMLPUBFUN int XMLCALL
xmlValidateNCName (const xmlChar *value,
int space);
#endif
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateQName (const xmlChar *value,
int space);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateName (const xmlChar *value,
int space);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNMToken (const xmlChar *value,
int space);
#endif
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlBuildQName (const xmlChar *ncname,
const xmlChar *prefix,
xmlChar *memory,
int len);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlSplitQName2 (const xmlChar *name,
xmlChar **prefix);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlSplitQName3 (const xmlChar *name,
int *len);
/*
- * Handling Buffers.
+ * Handling Buffers, the old ones see @xmlBuf for the new ones.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
-XMLPUBFUN xmlBufferAllocationScheme XMLCALL
+XMLPUBFUN xmlBufferAllocationScheme XMLCALL
xmlGetBufferAllocationScheme(void);
-XMLPUBFUN xmlBufferPtr XMLCALL
+XMLPUBFUN xmlBufferPtr XMLCALL
xmlBufferCreate (void);
-XMLPUBFUN xmlBufferPtr XMLCALL
+XMLPUBFUN xmlBufferPtr XMLCALL
xmlBufferCreateSize (size_t size);
-XMLPUBFUN xmlBufferPtr XMLCALL
+XMLPUBFUN xmlBufferPtr XMLCALL
xmlBufferCreateStatic (void *mem,
size_t size);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferResize (xmlBufferPtr buf,
unsigned int size);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlBufferFree (xmlBufferPtr buf);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferDump (FILE *file,
xmlBufferPtr buf);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferAdd (xmlBufferPtr buf,
const xmlChar *str,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferAddHead (xmlBufferPtr buf,
const xmlChar *str,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferCat (xmlBufferPtr buf,
const xmlChar *str);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferCCat (xmlBufferPtr buf,
const char *str);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferShrink (xmlBufferPtr buf,
unsigned int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlBufferGrow (xmlBufferPtr buf,
unsigned int len);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlBufferEmpty (xmlBufferPtr buf);
-XMLPUBFUN const xmlChar* XMLCALL
- xmlBufferContent (const xmlBufferPtr buf);
+XMLPUBFUN const xmlChar* XMLCALL
+ xmlBufferContent (const xmlBuffer *buf);
XMLPUBFUN xmlChar* XMLCALL
- xmlBufferDetach (const xmlBufferPtr buf);
-XMLPUBFUN void XMLCALL
+ xmlBufferDetach (xmlBufferPtr buf);
+XMLPUBFUN void XMLCALL
xmlBufferSetAllocationScheme(xmlBufferPtr buf,
xmlBufferAllocationScheme scheme);
-XMLPUBFUN int XMLCALL
- xmlBufferLength (const xmlBufferPtr buf);
+XMLPUBFUN int XMLCALL
+ xmlBufferLength (const xmlBuffer *buf);
/*
* Creating/freeing new structures.
*/
-XMLPUBFUN xmlDtdPtr XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
xmlCreateIntSubset (xmlDocPtr doc,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
xmlNewDtd (xmlDocPtr doc,
const xmlChar *name,
const xmlChar *ExternalID,
const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr XMLCALL
- xmlGetIntSubset (xmlDocPtr doc);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
+ xmlGetIntSubset (const xmlDoc *doc);
+XMLPUBFUN void XMLCALL
xmlFreeDtd (xmlDtdPtr cur);
#ifdef LIBXML_LEGACY_ENABLED
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
xmlNewGlobalNs (xmlDocPtr doc,
const xmlChar *href,
const xmlChar *prefix);
#endif /* LIBXML_LEGACY_ENABLED */
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
xmlNewNs (xmlNodePtr node,
const xmlChar *href,
const xmlChar *prefix);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeNs (xmlNsPtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeNsList (xmlNsPtr cur);
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlNewDoc (const xmlChar *version);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeDoc (xmlDocPtr cur);
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlNewDocProp (xmlDocPtr doc,
const xmlChar *name,
const xmlChar *value);
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlNewProp (xmlNodePtr node,
const xmlChar *name,
const xmlChar *value);
#endif
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlNewNsProp (xmlNodePtr node,
xmlNsPtr ns,
const xmlChar *name,
const xmlChar *value);
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlNewNsPropEatName (xmlNodePtr node,
xmlNsPtr ns,
xmlChar *name,
const xmlChar *value);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreePropList (xmlAttrPtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeProp (xmlAttrPtr cur);
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlCopyProp (xmlNodePtr target,
xmlAttrPtr cur);
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlCopyPropList (xmlNodePtr target,
xmlAttrPtr cur);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlDtdPtr XMLCALL
+XMLPUBFUN xmlDtdPtr XMLCALL
xmlCopyDtd (xmlDtdPtr dtd);
#endif /* LIBXML_TREE_ENABLED */
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN xmlDocPtr XMLCALL
+XMLPUBFUN xmlDocPtr XMLCALL
xmlCopyDoc (xmlDocPtr doc,
int recursive);
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
/*
* Creating new nodes.
*/
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocNode (xmlDocPtr doc,
xmlNsPtr ns,
const xmlChar *name,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocNodeEatName (xmlDocPtr doc,
xmlNsPtr ns,
xmlChar *name,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewNode (xmlNsPtr ns,
const xmlChar *name);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewNodeEatName (xmlNsPtr ns,
xmlChar *name);
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewChild (xmlNodePtr parent,
xmlNsPtr ns,
const xmlChar *name,
const xmlChar *content);
#endif
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlNewDocText (xmlDocPtr doc,
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlNewDocText (const xmlDoc *doc,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewText (const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocPI (xmlDocPtr doc,
const xmlChar *name,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewPI (const xmlChar *name,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocTextLen (xmlDocPtr doc,
const xmlChar *content,
int len);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewTextLen (const xmlChar *content,
int len);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocComment (xmlDocPtr doc,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewComment (const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewCDataBlock (xmlDocPtr doc,
const xmlChar *content,
int len);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewCharRef (xmlDocPtr doc,
const xmlChar *name);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlNewReference (xmlDocPtr doc,
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlNewReference (const xmlDoc *doc,
const xmlChar *name);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlCopyNode (const xmlNodePtr node,
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlCopyNode (xmlNodePtr node,
int recursive);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlDocCopyNode (const xmlNodePtr node,
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlDocCopyNode (xmlNodePtr node,
xmlDocPtr doc,
int recursive);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlDocCopyNodeList (xmlDocPtr doc,
- const xmlNodePtr node);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlCopyNodeList (const xmlNodePtr node);
+ xmlNodePtr node);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlCopyNodeList (xmlNodePtr node);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewTextChild (xmlNodePtr parent,
xmlNsPtr ns,
const xmlChar *name,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocRawNode (xmlDocPtr doc,
xmlNsPtr ns,
const xmlChar *name,
const xmlChar *content);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlNewDocFragment (xmlDocPtr doc);
#endif /* LIBXML_TREE_ENABLED */
/*
* Navigating.
*/
-XMLPUBFUN long XMLCALL
- xmlGetLineNo (xmlNodePtr node);
+XMLPUBFUN long XMLCALL
+ xmlGetLineNo (const xmlNode *node);
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
-XMLPUBFUN xmlChar * XMLCALL
- xmlGetNodePath (xmlNodePtr node);
+XMLPUBFUN xmlChar * XMLCALL
+ xmlGetNodePath (const xmlNode *node);
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlDocGetRootElement (xmlDocPtr doc);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlGetLastChild (xmlNodePtr parent);
-XMLPUBFUN int XMLCALL
- xmlNodeIsText (xmlNodePtr node);
-XMLPUBFUN int XMLCALL
- xmlIsBlankNode (xmlNodePtr node);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlDocGetRootElement (const xmlDoc *doc);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlGetLastChild (const xmlNode *parent);
+XMLPUBFUN int XMLCALL
+ xmlNodeIsText (const xmlNode *node);
+XMLPUBFUN int XMLCALL
+ xmlIsBlankNode (const xmlNode *node);
/*
* Changing the structure.
*/
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlDocSetRootElement (xmlDocPtr doc,
xmlNodePtr root);
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeSetName (xmlNodePtr cur,
const xmlChar *name);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlAddChild (xmlNodePtr parent,
xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlAddChildList (xmlNodePtr parent,
xmlNodePtr cur);
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlReplaceNode (xmlNodePtr old,
xmlNodePtr cur);
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
- defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN xmlNodePtr XMLCALL
+ defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+XMLPUBFUN xmlNodePtr XMLCALL
xmlAddPrevSibling (xmlNodePtr cur,
xmlNodePtr elem);
#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlAddSibling (xmlNodePtr cur,
xmlNodePtr elem);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlAddNextSibling (xmlNodePtr cur,
xmlNodePtr elem);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlUnlinkNode (xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr XMLCALL
+XMLPUBFUN xmlNodePtr XMLCALL
xmlTextMerge (xmlNodePtr first,
xmlNodePtr second);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlTextConcat (xmlNodePtr node,
const xmlChar *content,
int len);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeNodeList (xmlNodePtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeNode (xmlNodePtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetTreeDoc (xmlNodePtr tree,
xmlDocPtr doc);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetListDoc (xmlNodePtr list,
xmlDocPtr doc);
/*
* Namespaces.
*/
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
xmlSearchNs (xmlDocPtr doc,
xmlNodePtr node,
const xmlChar *nameSpace);
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
xmlSearchNsByHref (xmlDocPtr doc,
xmlNodePtr node,
const xmlChar *href);
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN xmlNsPtr * XMLCALL
- xmlGetNsList (xmlDocPtr doc,
- xmlNodePtr node);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \
+ defined(LIBXML_SCHEMAS_ENABLED)
+XMLPUBFUN xmlNsPtr * XMLCALL
+ xmlGetNsList (const xmlDoc *doc,
+ const xmlNode *node);
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetNs (xmlNodePtr node,
xmlNsPtr ns);
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
xmlCopyNamespace (xmlNsPtr cur);
-XMLPUBFUN xmlNsPtr XMLCALL
+XMLPUBFUN xmlNsPtr XMLCALL
xmlCopyNamespaceList (xmlNsPtr cur);
/*
* Changing the content.
*/
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
-XMLPUBFUN xmlAttrPtr XMLCALL
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \
+ defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlSetProp (xmlNodePtr node,
const xmlChar *name,
const xmlChar *value);
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlSetNsProp (xmlNodePtr node,
xmlNsPtr ns,
const xmlChar *name,
const xmlChar *value);
-#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
-XMLPUBFUN xmlChar * XMLCALL
- xmlGetNoNsProp (xmlNodePtr node,
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \
+ defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+XMLPUBFUN xmlChar * XMLCALL
+ xmlGetNoNsProp (const xmlNode *node,
const xmlChar *name);
-XMLPUBFUN xmlChar * XMLCALL
- xmlGetProp (xmlNodePtr node,
+XMLPUBFUN xmlChar * XMLCALL
+ xmlGetProp (const xmlNode *node,
const xmlChar *name);
-XMLPUBFUN xmlAttrPtr XMLCALL
- xmlHasProp (xmlNodePtr node,
+XMLPUBFUN xmlAttrPtr XMLCALL
+ xmlHasProp (const xmlNode *node,
const xmlChar *name);
-XMLPUBFUN xmlAttrPtr XMLCALL
- xmlHasNsProp (xmlNodePtr node,
+XMLPUBFUN xmlAttrPtr XMLCALL
+ xmlHasNsProp (const xmlNode *node,
const xmlChar *name,
const xmlChar *nameSpace);
-XMLPUBFUN xmlChar * XMLCALL
- xmlGetNsProp (xmlNodePtr node,
+XMLPUBFUN xmlChar * XMLCALL
+ xmlGetNsProp (const xmlNode *node,
const xmlChar *name,
const xmlChar *nameSpace);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlStringGetNodeList (xmlDocPtr doc,
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlStringGetNodeList (const xmlDoc *doc,
const xmlChar *value);
-XMLPUBFUN xmlNodePtr XMLCALL
- xmlStringLenGetNodeList (xmlDocPtr doc,
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlStringLenGetNodeList (const xmlDoc *doc,
const xmlChar *value,
int len);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlNodeListGetString (xmlDocPtr doc,
- xmlNodePtr list,
+ const xmlNode *list,
int inLine);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlChar * XMLCALL
- xmlNodeListGetRawString (xmlDocPtr doc,
- xmlNodePtr list,
+XMLPUBFUN xmlChar * XMLCALL
+ xmlNodeListGetRawString (const xmlDoc *doc,
+ const xmlNode *list,
int inLine);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeSetContent (xmlNodePtr cur,
const xmlChar *content);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeSetContentLen (xmlNodePtr cur,
const xmlChar *content,
int len);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeAddContent (xmlNodePtr cur,
const xmlChar *content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeAddContentLen (xmlNodePtr cur,
const xmlChar *content,
int len);
-XMLPUBFUN xmlChar * XMLCALL
- xmlNodeGetContent (xmlNodePtr cur);
+XMLPUBFUN xmlChar * XMLCALL
+ xmlNodeGetContent (const xmlNode *cur);
+
XMLPUBFUN int XMLCALL
xmlNodeBufGetContent (xmlBufferPtr buffer,
- xmlNodePtr cur);
-XMLPUBFUN xmlChar * XMLCALL
- xmlNodeGetLang (xmlNodePtr cur);
-XMLPUBFUN int XMLCALL
- xmlNodeGetSpacePreserve (xmlNodePtr cur);
+ const xmlNode *cur);
+XMLPUBFUN int XMLCALL
+ xmlBufGetNodeContent (xmlBufPtr buf,
+ const xmlNode *cur);
+
+XMLPUBFUN xmlChar * XMLCALL
+ xmlNodeGetLang (const xmlNode *cur);
+XMLPUBFUN int XMLCALL
+ xmlNodeGetSpacePreserve (const xmlNode *cur);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeSetLang (xmlNodePtr cur,
const xmlChar *lang);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeSetSpacePreserve (xmlNodePtr cur,
int val);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN xmlChar * XMLCALL
- xmlNodeGetBase (xmlDocPtr doc,
- xmlNodePtr cur);
+XMLPUBFUN xmlChar * XMLCALL
+ xmlNodeGetBase (const xmlDoc *doc,
+ const xmlNode *cur);
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeSetBase (xmlNodePtr cur,
const xmlChar *uri);
#endif
@@ -1056,14 +1105,14 @@ XMLPUBFUN void XMLCALL
/*
* Removing content.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRemoveProp (xmlAttrPtr cur);
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlUnsetNsProp (xmlNodePtr node,
xmlNsPtr ns,
const xmlChar *name);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlUnsetProp (xmlNodePtr node,
const xmlChar *name);
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
@@ -1071,13 +1120,13 @@ XMLPUBFUN int XMLCALL
/*
* Internal, don't use.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlBufferWriteCHAR (xmlBufferPtr buf,
const xmlChar *string);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlBufferWriteChar (xmlBufferPtr buf,
const char *string);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlBufferWriteQuotedString(xmlBufferPtr buf,
const xmlChar *string);
@@ -1092,7 +1141,7 @@ XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
/*
* Namespace handling.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlReconciliateNs (xmlDocPtr doc,
xmlNodePtr tree);
#endif
@@ -1101,61 +1150,67 @@ XMLPUBFUN int XMLCALL
/*
* Saving.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDocDumpFormatMemory (xmlDocPtr cur,
xmlChar **mem,
int *size,
int format);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDocDumpMemory (xmlDocPtr cur,
xmlChar **mem,
int *size);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
xmlChar **doc_txt_ptr,
int * doc_txt_len,
const char *txt_encoding);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
xmlChar **doc_txt_ptr,
int * doc_txt_len,
const char *txt_encoding,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlDocFormatDump (FILE *f,
xmlDocPtr cur,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlDocDump (FILE *f,
xmlDocPtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlElemDump (FILE *f,
xmlDocPtr doc,
xmlNodePtr cur);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSaveFile (const char *filename,
xmlDocPtr cur);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSaveFormatFile (const char *filename,
xmlDocPtr cur,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN size_t XMLCALL
+ xmlBufNodeDump (xmlBufPtr buf,
+ xmlDocPtr doc,
+ xmlNodePtr cur,
+ int level,
+ int format);
+XMLPUBFUN int XMLCALL
xmlNodeDump (xmlBufferPtr buf,
xmlDocPtr doc,
xmlNodePtr cur,
int level,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSaveFileTo (xmlOutputBufferPtr buf,
xmlDocPtr cur,
const char *encoding);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
xmlDocPtr cur,
const char *encoding,
int format);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlNodeDumpOutput (xmlOutputBufferPtr buf,
xmlDocPtr doc,
xmlNodePtr cur,
@@ -1163,13 +1218,13 @@ XMLPUBFUN void XMLCALL
int format,
const char *encoding);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSaveFormatFileEnc (const char *filename,
xmlDocPtr cur,
const char *encoding,
int format);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSaveFileEnc (const char *filename,
xmlDocPtr cur,
const char *encoding);
@@ -1178,21 +1233,21 @@ XMLPUBFUN int XMLCALL
/*
* XHTML
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlIsXHTML (const xmlChar *systemID,
const xmlChar *publicID);
/*
* Compression.
*/
-XMLPUBFUN int XMLCALL
- xmlGetDocCompressMode (xmlDocPtr doc);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN int XMLCALL
+ xmlGetDocCompressMode (const xmlDoc *doc);
+XMLPUBFUN void XMLCALL
xmlSetDocCompressMode (xmlDocPtr doc,
int mode);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlGetCompressMode (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetCompressMode (int mode);
/*
@@ -1210,7 +1265,7 @@ XMLPUBFUN int XMLCALL
xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
xmlDocPtr sourceDoc,
xmlNodePtr node,
- xmlDocPtr destDoc,
+ xmlDocPtr destDoc,
xmlNodePtr destParent,
int options);
XMLPUBFUN int XMLCALL
diff --git a/include/libxml/valid.h b/include/libxml/valid.h
index a2307f1..2bc7b38 100644
--- a/include/libxml/valid.h
+++ b/include/libxml/valid.h
@@ -150,55 +150,55 @@ typedef struct _xmlHashTable xmlRefTable;
typedef xmlRefTable *xmlRefTablePtr;
/* Notation */
-XMLPUBFUN xmlNotationPtr XMLCALL
+XMLPUBFUN xmlNotationPtr XMLCALL
xmlAddNotationDecl (xmlValidCtxtPtr ctxt,
xmlDtdPtr dtd,
const xmlChar *name,
const xmlChar *PublicID,
const xmlChar *SystemID);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlNotationTablePtr XMLCALL
+XMLPUBFUN xmlNotationTablePtr XMLCALL
xmlCopyNotationTable (xmlNotationTablePtr table);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeNotationTable (xmlNotationTablePtr table);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDumpNotationDecl (xmlBufferPtr buf,
xmlNotationPtr nota);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDumpNotationTable (xmlBufferPtr buf,
xmlNotationTablePtr table);
#endif /* LIBXML_OUTPUT_ENABLED */
/* Element Content */
/* the non Doc version are being deprecated */
-XMLPUBFUN xmlElementContentPtr XMLCALL
+XMLPUBFUN xmlElementContentPtr XMLCALL
xmlNewElementContent (const xmlChar *name,
xmlElementContentType type);
-XMLPUBFUN xmlElementContentPtr XMLCALL
+XMLPUBFUN xmlElementContentPtr XMLCALL
xmlCopyElementContent (xmlElementContentPtr content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeElementContent (xmlElementContentPtr cur);
/* the new versions with doc argument */
-XMLPUBFUN xmlElementContentPtr XMLCALL
+XMLPUBFUN xmlElementContentPtr XMLCALL
xmlNewDocElementContent (xmlDocPtr doc,
const xmlChar *name,
xmlElementContentType type);
-XMLPUBFUN xmlElementContentPtr XMLCALL
+XMLPUBFUN xmlElementContentPtr XMLCALL
xmlCopyDocElementContent(xmlDocPtr doc,
xmlElementContentPtr content);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeDocElementContent(xmlDocPtr doc,
xmlElementContentPtr cur);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSnprintfElementContent(char *buf,
int size,
xmlElementContentPtr content,
int englob);
#ifdef LIBXML_OUTPUT_ENABLED
/* DEPRECATED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSprintfElementContent(char *buf,
xmlElementContentPtr content,
int englob);
@@ -206,39 +206,39 @@ XMLPUBFUN void XMLCALL
/* DEPRECATED */
/* Element */
-XMLPUBFUN xmlElementPtr XMLCALL
+XMLPUBFUN xmlElementPtr XMLCALL
xmlAddElementDecl (xmlValidCtxtPtr ctxt,
xmlDtdPtr dtd,
const xmlChar *name,
xmlElementTypeVal type,
xmlElementContentPtr content);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlElementTablePtr XMLCALL
+XMLPUBFUN xmlElementTablePtr XMLCALL
xmlCopyElementTable (xmlElementTablePtr table);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeElementTable (xmlElementTablePtr table);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDumpElementTable (xmlBufferPtr buf,
xmlElementTablePtr table);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDumpElementDecl (xmlBufferPtr buf,
xmlElementPtr elem);
#endif /* LIBXML_OUTPUT_ENABLED */
/* Enumeration */
-XMLPUBFUN xmlEnumerationPtr XMLCALL
+XMLPUBFUN xmlEnumerationPtr XMLCALL
xmlCreateEnumeration (const xmlChar *name);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeEnumeration (xmlEnumerationPtr cur);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlEnumerationPtr XMLCALL
+XMLPUBFUN xmlEnumerationPtr XMLCALL
xmlCopyEnumeration (xmlEnumerationPtr cur);
#endif /* LIBXML_TREE_ENABLED */
/* Attribute */
-XMLPUBFUN xmlAttributePtr XMLCALL
+XMLPUBFUN xmlAttributePtr XMLCALL
xmlAddAttributeDecl (xmlValidCtxtPtr ctxt,
xmlDtdPtr dtd,
const xmlChar *elem,
@@ -249,55 +249,55 @@ XMLPUBFUN xmlAttributePtr XMLCALL
const xmlChar *defaultValue,
xmlEnumerationPtr tree);
#ifdef LIBXML_TREE_ENABLED
-XMLPUBFUN xmlAttributeTablePtr XMLCALL
+XMLPUBFUN xmlAttributeTablePtr XMLCALL
xmlCopyAttributeTable (xmlAttributeTablePtr table);
#endif /* LIBXML_TREE_ENABLED */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeAttributeTable (xmlAttributeTablePtr table);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDumpAttributeTable (xmlBufferPtr buf,
xmlAttributeTablePtr table);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlDumpAttributeDecl (xmlBufferPtr buf,
xmlAttributePtr attr);
#endif /* LIBXML_OUTPUT_ENABLED */
/* IDs */
-XMLPUBFUN xmlIDPtr XMLCALL
+XMLPUBFUN xmlIDPtr XMLCALL
xmlAddID (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
const xmlChar *value,
xmlAttrPtr attr);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeIDTable (xmlIDTablePtr table);
-XMLPUBFUN xmlAttrPtr XMLCALL
+XMLPUBFUN xmlAttrPtr XMLCALL
xmlGetID (xmlDocPtr doc,
const xmlChar *ID);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlIsID (xmlDocPtr doc,
xmlNodePtr elem,
xmlAttrPtr attr);
-XMLPUBFUN int XMLCALL
- xmlRemoveID (xmlDocPtr doc,
+XMLPUBFUN int XMLCALL
+ xmlRemoveID (xmlDocPtr doc,
xmlAttrPtr attr);
/* IDREFs */
-XMLPUBFUN xmlRefPtr XMLCALL
+XMLPUBFUN xmlRefPtr XMLCALL
xmlAddRef (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
const xmlChar *value,
xmlAttrPtr attr);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeRefTable (xmlRefTablePtr table);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlIsRef (xmlDocPtr doc,
xmlNodePtr elem,
xmlAttrPtr attr);
-XMLPUBFUN int XMLCALL
- xmlRemoveRef (xmlDocPtr doc,
+XMLPUBFUN int XMLCALL
+ xmlRemoveRef (xmlDocPtr doc,
xmlAttrPtr attr);
-XMLPUBFUN xmlListPtr XMLCALL
+XMLPUBFUN xmlListPtr XMLCALL
xmlGetRefs (xmlDocPtr doc,
const xmlChar *ID);
@@ -306,146 +306,146 @@ XMLPUBFUN xmlListPtr XMLCALL
*/
#ifdef LIBXML_VALID_ENABLED
/* Allocate/Release Validation Contexts */
-XMLPUBFUN xmlValidCtxtPtr XMLCALL
+XMLPUBFUN xmlValidCtxtPtr XMLCALL
xmlNewValidCtxt(void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeValidCtxt(xmlValidCtxtPtr);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateRoot (xmlValidCtxtPtr ctxt,
xmlDocPtr doc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlElementPtr elem);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlValidNormalizeAttributeValue(xmlDocPtr doc,
xmlNodePtr elem,
const xmlChar *name,
const xmlChar *value);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem,
const xmlChar *name,
const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlAttributePtr attr);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateAttributeValue(xmlAttributeType type,
const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNotationPtr nota);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateDtd (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlDtdPtr dtd);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateDtdFinal (xmlValidCtxtPtr ctxt,
xmlDocPtr doc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateDocument (xmlValidCtxtPtr ctxt,
xmlDocPtr doc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateElement (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateOneElement (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem,
xmlAttrPtr attr,
const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateOneNamespace (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem,
const xmlChar *prefix,
xmlNsPtr ns,
const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
xmlDocPtr doc);
#endif /* LIBXML_VALID_ENABLED */
#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
const xmlChar *notationName);
#endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlIsMixedElement (xmlDocPtr doc,
const xmlChar *name);
-XMLPUBFUN xmlAttributePtr XMLCALL
+XMLPUBFUN xmlAttributePtr XMLCALL
xmlGetDtdAttrDesc (xmlDtdPtr dtd,
const xmlChar *elem,
const xmlChar *name);
-XMLPUBFUN xmlAttributePtr XMLCALL
+XMLPUBFUN xmlAttributePtr XMLCALL
xmlGetDtdQAttrDesc (xmlDtdPtr dtd,
const xmlChar *elem,
const xmlChar *name,
const xmlChar *prefix);
-XMLPUBFUN xmlNotationPtr XMLCALL
+XMLPUBFUN xmlNotationPtr XMLCALL
xmlGetDtdNotationDesc (xmlDtdPtr dtd,
const xmlChar *name);
-XMLPUBFUN xmlElementPtr XMLCALL
+XMLPUBFUN xmlElementPtr XMLCALL
xmlGetDtdQElementDesc (xmlDtdPtr dtd,
const xmlChar *name,
const xmlChar *prefix);
-XMLPUBFUN xmlElementPtr XMLCALL
+XMLPUBFUN xmlElementPtr XMLCALL
xmlGetDtdElementDesc (xmlDtdPtr dtd,
const xmlChar *name);
#ifdef LIBXML_VALID_ENABLED
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidGetPotentialChildren(xmlElementContent *ctree,
const xmlChar **names,
int *len,
int max);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidGetValidElements(xmlNode *prev,
xmlNode *next,
const xmlChar **names,
int max);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNameValue (const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNamesValue (const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNmtokenValue (const xmlChar *value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidateNmtokensValue(const xmlChar *value);
#ifdef LIBXML_REGEXP_ENABLED
/*
* Validation based on the regexp support
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
xmlElementPtr elem);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidatePushElement (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem,
const xmlChar *qname);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidatePushCData (xmlValidCtxtPtr ctxt,
const xmlChar *data,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlValidatePopElement (xmlValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem,
diff --git a/include/libxml/xlink.h b/include/libxml/xlink.h
index 083c7ed..a209a99 100644
--- a/include/libxml/xlink.h
+++ b/include/libxml/xlink.h
@@ -57,7 +57,7 @@ typedef enum {
* xlinkNodeDetectFunc:
* @ctx: user data pointer
* @node: the node to check
- *
+ *
* This is the prototype for the link detection routine.
* It calls the default link detection callbacks upon link detection.
*/
@@ -157,26 +157,26 @@ struct _xlinkHandler {
/*
* The default detection routine, can be overridden, they call the default
- * detection callbacks.
+ * detection callbacks.
*/
-XMLPUBFUN xlinkNodeDetectFunc XMLCALL
+XMLPUBFUN xlinkNodeDetectFunc XMLCALL
xlinkGetDefaultDetect (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
/*
* Routines to set/get the default handlers.
*/
-XMLPUBFUN xlinkHandlerPtr XMLCALL
+XMLPUBFUN xlinkHandlerPtr XMLCALL
xlinkGetDefaultHandler (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xlinkSetDefaultHandler (xlinkHandlerPtr handler);
/*
* Link detection module itself.
*/
-XMLPUBFUN xlinkType XMLCALL
+XMLPUBFUN xlinkType XMLCALL
xlinkIsLink (xmlDocPtr doc,
xmlNodePtr node);
diff --git a/include/libxml/xmlIO.h b/include/libxml/xmlIO.h
index eea9ed6..3e41744 100644
--- a/include/libxml/xmlIO.h
+++ b/include/libxml/xmlIO.h
@@ -26,7 +26,7 @@ extern "C" {
* xmlInputMatchCallback:
* @filename: the filename or URI
*
- * Callback used in the I/O Input API to detect if the current handler
+ * Callback used in the I/O Input API to detect if the current handler
* can provide input fonctionnalities for this resource.
*
* Returns 1 if yes and 0 if another Input module should be used
@@ -72,7 +72,7 @@ typedef int (XMLCALL *xmlInputCloseCallback) (void * context);
* xmlOutputMatchCallback:
* @filename: the filename or URI
*
- * Callback used in the I/O Output API to detect if the current handler
+ * Callback used in the I/O Output API to detect if the current handler
* can provide output fonctionnalities for this resource.
*
* Returns 1 if yes and 0 if another Output module should be used
@@ -126,11 +126,11 @@ struct _xmlParserInputBuffer {
void* context;
xmlInputReadCallback readcallback;
xmlInputCloseCallback closecallback;
-
+
xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
-
- xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */
- xmlBufferPtr raw; /* if encoder != NULL buffer for raw input */
+
+ xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */
+ xmlBufPtr raw; /* if encoder != NULL buffer for raw input */
int compressed; /* -1=unknown, 0=not compressed, 1=compressed */
int error;
unsigned long rawconsumed;/* amount consumed from raw */
@@ -142,11 +142,11 @@ struct _xmlOutputBuffer {
void* context;
xmlOutputWriteCallback writecallback;
xmlOutputCloseCallback closecallback;
-
+
xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
-
- xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */
- xmlBufferPtr conv; /* if encoder != NULL buffer for output */
+
+ xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */
+ xmlBufPtr conv; /* if encoder != NULL buffer for output */
int written; /* total number of byte written */
int error;
};
@@ -155,13 +155,13 @@ struct _xmlOutputBuffer {
/*
* Interfaces for input
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCleanupInputCallbacks (void);
XMLPUBFUN int XMLCALL
xmlPopInputCallbacks (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRegisterDefaultInputCallbacks (void);
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
xmlAllocParserInputBuffer (xmlCharEncoding enc);
@@ -186,22 +186,22 @@ XMLPUBFUN xmlParserInputBufferPtr XMLCALL
xmlInputCloseCallback ioclose,
void *ioctx,
xmlCharEncoding enc);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParserInputBufferRead (xmlParserInputBufferPtr in,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlParserInputBufferPush (xmlParserInputBufferPtr in,
int len,
const char *buf);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
-XMLPUBFUN char * XMLCALL
+XMLPUBFUN char * XMLCALL
xmlParserGetDirectory (const char *filename);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
xmlInputOpenCallback openFunc,
xmlInputReadCallback readFunc,
@@ -209,15 +209,15 @@ XMLPUBFUN int XMLCALL
xmlParserInputBufferPtr
__xmlParserInputBufferCreateFilename(const char *URI,
- xmlCharEncoding enc);
+ xmlCharEncoding enc);
#ifdef LIBXML_OUTPUT_ENABLED
/*
* Interfaces for output
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlCleanupOutputCallbacks (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRegisterDefaultOutputCallbacks(void);
XMLPUBFUN xmlOutputBufferPtr XMLCALL
xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
@@ -245,24 +245,30 @@ XMLPUBFUN xmlOutputBufferPtr XMLCALL
void *ioctx,
xmlCharEncodingHandlerPtr encoder);
-XMLPUBFUN int XMLCALL
+/* Couple of APIs to get the output without digging into the buffers */
+XMLPUBFUN const xmlChar * XMLCALL
+ xmlOutputBufferGetContent (xmlOutputBufferPtr out);
+XMLPUBFUN size_t XMLCALL
+ xmlOutputBufferGetSize (xmlOutputBufferPtr out);
+
+XMLPUBFUN int XMLCALL
xmlOutputBufferWrite (xmlOutputBufferPtr out,
int len,
const char *buf);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlOutputBufferWriteString (xmlOutputBufferPtr out,
const char *str);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlOutputBufferWriteEscape (xmlOutputBufferPtr out,
const xmlChar *str,
xmlCharEncodingOutputFunc escaping);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlOutputBufferFlush (xmlOutputBufferPtr out);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlOutputBufferClose (xmlOutputBufferPtr out);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
xmlOutputOpenCallback openFunc,
xmlOutputWriteCallback writeFunc,
@@ -275,10 +281,10 @@ xmlOutputBufferPtr
#ifdef LIBXML_HTTP_ENABLED
/* This function only exists if HTTP support built into the library */
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRegisterHTTPPostCallbacks (void );
#endif /* LIBXML_HTTP_ENABLED */
-
+
#endif /* LIBXML_OUTPUT_ENABLED */
XMLPUBFUN xmlParserInputPtr XMLCALL
@@ -288,69 +294,69 @@ XMLPUBFUN xmlParserInputPtr XMLCALL
/*
* A predefined entity loader disabling network accesses
*/
-XMLPUBFUN xmlParserInputPtr XMLCALL
+XMLPUBFUN xmlParserInputPtr XMLCALL
xmlNoNetExternalEntityLoader (const char *URL,
const char *ID,
xmlParserCtxtPtr ctxt);
-/*
- * xmlNormalizeWindowsPath is obsolete, don't use it.
+/*
+ * xmlNormalizeWindowsPath is obsolete, don't use it.
* Check xmlCanonicPath in uri.h for a better alternative.
*/
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlNormalizeWindowsPath (const xmlChar *path);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlCheckFilename (const char *path);
/**
- * Default 'file://' protocol callbacks
+ * Default 'file://' protocol callbacks
*/
-XMLPUBFUN int XMLCALL
- xmlFileMatch (const char *filename);
-XMLPUBFUN void * XMLCALL
- xmlFileOpen (const char *filename);
-XMLPUBFUN int XMLCALL
- xmlFileRead (void * context,
- char * buffer,
+XMLPUBFUN int XMLCALL
+ xmlFileMatch (const char *filename);
+XMLPUBFUN void * XMLCALL
+ xmlFileOpen (const char *filename);
+XMLPUBFUN int XMLCALL
+ xmlFileRead (void * context,
+ char * buffer,
int len);
-XMLPUBFUN int XMLCALL
- xmlFileClose (void * context);
+XMLPUBFUN int XMLCALL
+ xmlFileClose (void * context);
/**
- * Default 'http://' protocol callbacks
+ * Default 'http://' protocol callbacks
*/
#ifdef LIBXML_HTTP_ENABLED
-XMLPUBFUN int XMLCALL
- xmlIOHTTPMatch (const char *filename);
-XMLPUBFUN void * XMLCALL
- xmlIOHTTPOpen (const char *filename);
+XMLPUBFUN int XMLCALL
+ xmlIOHTTPMatch (const char *filename);
+XMLPUBFUN void * XMLCALL
+ xmlIOHTTPOpen (const char *filename);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void * XMLCALL
+XMLPUBFUN void * XMLCALL
xmlIOHTTPOpenW (const char * post_uri,
int compression );
#endif /* LIBXML_OUTPUT_ENABLED */
-XMLPUBFUN int XMLCALL
- xmlIOHTTPRead (void * context,
- char * buffer,
+XMLPUBFUN int XMLCALL
+ xmlIOHTTPRead (void * context,
+ char * buffer,
int len);
-XMLPUBFUN int XMLCALL
- xmlIOHTTPClose (void * context);
+XMLPUBFUN int XMLCALL
+ xmlIOHTTPClose (void * context);
#endif /* LIBXML_HTTP_ENABLED */
/**
- * Default 'ftp://' protocol callbacks
+ * Default 'ftp://' protocol callbacks
*/
-#ifdef LIBXML_FTP_ENABLED
-XMLPUBFUN int XMLCALL
- xmlIOFTPMatch (const char *filename);
-XMLPUBFUN void * XMLCALL
- xmlIOFTPOpen (const char *filename);
-XMLPUBFUN int XMLCALL
- xmlIOFTPRead (void * context,
- char * buffer,
+#ifdef LIBXML_FTP_ENABLED
+XMLPUBFUN int XMLCALL
+ xmlIOFTPMatch (const char *filename);
+XMLPUBFUN void * XMLCALL
+ xmlIOFTPOpen (const char *filename);
+XMLPUBFUN int XMLCALL
+ xmlIOFTPRead (void * context,
+ char * buffer,
int len);
-XMLPUBFUN int XMLCALL
- xmlIOFTPClose (void * context);
+XMLPUBFUN int XMLCALL
+ xmlIOFTPClose (void * context);
#endif /* LIBXML_FTP_ENABLED */
#ifdef __cplusplus
diff --git a/include/libxml/xmlautomata.h b/include/libxml/xmlautomata.h
index f98b55e..bf1b131 100644
--- a/include/libxml/xmlautomata.h
+++ b/include/libxml/xmlautomata.h
@@ -40,25 +40,25 @@ typedef xmlAutomataState *xmlAutomataStatePtr;
/*
* Building API
*/
-XMLPUBFUN xmlAutomataPtr XMLCALL
+XMLPUBFUN xmlAutomataPtr XMLCALL
xmlNewAutomata (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlFreeAutomata (xmlAutomataPtr am);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataGetInitState (xmlAutomataPtr am);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlAutomataSetFinalState (xmlAutomataPtr am,
xmlAutomataStatePtr state);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewState (xmlAutomataPtr am);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewTransition (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
const xmlChar *token,
void *data);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewTransition2 (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
@@ -73,7 +73,7 @@ XMLPUBFUN xmlAutomataStatePtr XMLCALL
const xmlChar *token2,
void *data);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewCountTrans (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
@@ -81,7 +81,7 @@ XMLPUBFUN xmlAutomataStatePtr XMLCALL
int min,
int max,
void *data);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewCountTrans2 (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
@@ -90,7 +90,7 @@ XMLPUBFUN xmlAutomataStatePtr XMLCALL
int min,
int max,
void *data);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewOnceTrans (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
@@ -99,46 +99,46 @@ XMLPUBFUN xmlAutomataStatePtr XMLCALL
int max,
void *data);
XMLPUBFUN xmlAutomataStatePtr XMLCALL
- xmlAutomataNewOnceTrans2 (xmlAutomataPtr am,
+ xmlAutomataNewOnceTrans2 (xmlAutomataPtr am,
xmlAutomataStatePtr from,
- xmlAutomataStatePtr to,
+ xmlAutomataStatePtr to,
const xmlChar *token,
const xmlChar *token2,
- int min,
- int max,
+ int min,
+ int max,
void *data);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewAllTrans (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
int lax);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewEpsilon (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewCountedTrans (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
int counter);
-XMLPUBFUN xmlAutomataStatePtr XMLCALL
+XMLPUBFUN xmlAutomataStatePtr XMLCALL
xmlAutomataNewCounterTrans (xmlAutomataPtr am,
xmlAutomataStatePtr from,
xmlAutomataStatePtr to,
int counter);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlAutomataNewCounter (xmlAutomataPtr am,
int min,
int max);
-XMLPUBFUN xmlRegexpPtr XMLCALL
+XMLPUBFUN xmlRegexpPtr XMLCALL
xmlAutomataCompile (xmlAutomataPtr am);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlAutomataIsDeterminist (xmlAutomataPtr am);
#ifdef __cplusplus
}
-#endif
+#endif
#endif /* LIBXML_AUTOMATA_ENABLED */
#endif /* LIBXML_REGEXP_ENABLED */
diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h
index e924211..43e68ca 100644
--- a/include/libxml/xmlerror.h
+++ b/include/libxml/xmlerror.h
@@ -62,7 +62,9 @@ typedef enum {
XML_FROM_WRITER, /* The xmlwriter module */
XML_FROM_MODULE, /* The dynamically loaded module module*/
XML_FROM_I18N, /* The module handling character conversion */
- XML_FROM_SCHEMATRONV /* The Schematron validator module */
+ XML_FROM_SCHEMATRONV,/* The Schematron validator module */
+ XML_FROM_BUFFER, /* The buffers module */
+ XML_FROM_URI /* The URI module */
} xmlErrorDomain;
/**
@@ -84,7 +86,7 @@ struct _xmlError {
char *str2; /* extra string information */
char *str3; /* extra string information */
int int1; /* extra number information */
- int int2; /* column number of the error or 0 if N/A (todo: rename this field when we would break ABI) */
+ int int2; /* error column # or 0 if N/A (todo: rename field when we would brk ABI) */
void *ctxt; /* the parser context if available */
void *node; /* the node in the tree */
};
@@ -205,6 +207,8 @@ typedef enum {
XML_WAR_ENTITY_REDEFINED, /* 107 */
XML_ERR_UNKNOWN_VERSION, /* 108 */
XML_ERR_VERSION_MISMATCH, /* 109 */
+ XML_ERR_NAME_TOO_LONG, /* 110 */
+ XML_ERR_USER_STOP, /* 111 */
XML_NS_ERR_XML_NAMESPACE = 200,
XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */
XML_NS_ERR_QNAME, /* 202 */
@@ -825,11 +829,8 @@ typedef enum {
XML_I18N_NO_HANDLER, /* 6001 */
XML_I18N_EXCESS_HANDLER, /* 6002 */
XML_I18N_CONV_FAILED, /* 6003 */
- XML_I18N_NO_OUTPUT /* 6004 */
-#if 0
- XML_CHECK_, /* 5033 */
- XML_CHECK_X /* 503 */
-#endif
+ XML_I18N_NO_OUTPUT, /* 6004 */
+ XML_BUF_OVERFLOW = 7000
} xmlParserErrors;
/**
diff --git a/include/libxml/xmlexports.h b/include/libxml/xmlexports.h
index c6516b4..2c79f81 100644
--- a/include/libxml/xmlexports.h
+++ b/include/libxml/xmlexports.h
@@ -43,7 +43,7 @@
/**
* XMLCDECL:
*
- * Macro which declares the calling convention for exported functions that
+ * Macro which declares the calling convention for exported functions that
* use '...'.
*/
#define XMLCDECL
diff --git a/include/libxml/xmlmodule.h b/include/libxml/xmlmodule.h
index 8f4a560..9667820 100644
--- a/include/libxml/xmlmodule.h
+++ b/include/libxml/xmlmodule.h
@@ -50,7 +50,7 @@ XMLPUBFUN int XMLCALL xmlModuleFree (xmlModulePtr module);
#ifdef __cplusplus
}
-#endif
+#endif
#endif /* LIBXML_MODULES_ENABLED */
diff --git a/include/libxml/xmlreader.h b/include/libxml/xmlreader.h
index f24e9bb..2c99e3a 100644
--- a/include/libxml/xmlreader.h
+++ b/include/libxml/xmlreader.h
@@ -130,16 +130,16 @@ XMLPUBFUN int XMLCALL
#ifdef LIBXML_WRITER_ENABLED
XMLPUBFUN xmlChar * XMLCALL
- xmlTextReaderReadInnerXml (xmlTextReaderPtr reader);
+ xmlTextReaderReadInnerXml(xmlTextReaderPtr reader);
XMLPUBFUN xmlChar * XMLCALL
- xmlTextReaderReadOuterXml (xmlTextReaderPtr reader);
+ xmlTextReaderReadOuterXml(xmlTextReaderPtr reader);
#endif
XMLPUBFUN xmlChar * XMLCALL
- xmlTextReaderReadString (xmlTextReaderPtr reader);
+ xmlTextReaderReadString (xmlTextReaderPtr reader);
XMLPUBFUN int XMLCALL
- xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
+ xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader);
/*
* Attributes of the node
@@ -397,27 +397,26 @@ typedef void * xmlTextReaderLocatorPtr;
*
* Signature of an error callback from a reader parser
*/
-typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
- const char *msg,
- xmlParserSeverities severity,
- xmlTextReaderLocatorPtr locator);
+typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
+ const char *msg,
+ xmlParserSeverities severity,
+ xmlTextReaderLocatorPtr locator);
XMLPUBFUN int XMLCALL
- xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
-/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
+ xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
XMLPUBFUN xmlChar * XMLCALL
- xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
+ xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
XMLPUBFUN void XMLCALL
- xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
- xmlTextReaderErrorFunc f,
- void *arg);
+ xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
+ xmlTextReaderErrorFunc f,
+ void *arg);
XMLPUBFUN void XMLCALL
- xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
- xmlStructuredErrorFunc f,
- void *arg);
+ xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
+ xmlStructuredErrorFunc f,
+ void *arg);
XMLPUBFUN void XMLCALL
- xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
- xmlTextReaderErrorFunc *f,
- void **arg);
+ xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
+ xmlTextReaderErrorFunc *f,
+ void **arg);
#endif /* LIBXML_READER_ENABLED */
diff --git a/include/libxml/xmlschemas.h b/include/libxml/xmlschemas.h
index 752bc3a..97930c7 100644
--- a/include/libxml/xmlschemas.h
+++ b/include/libxml/xmlschemas.h
@@ -92,7 +92,8 @@ typedef xmlSchema *xmlSchemaPtr;
*
* Signature of an error callback from an XSD validation
*/
-typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
+typedef void (XMLCDECL *xmlSchemaValidityErrorFunc)
+ (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
/**
* xmlSchemaValidityWarningFunc:
@@ -102,7 +103,8 @@ typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg,
*
* Signature of a warning callback from an XSD validation
*/
-typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
+typedef void (XMLCDECL *xmlSchemaValidityWarningFunc)
+ (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
/**
* A schemas validation context
@@ -113,6 +115,22 @@ typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
+/**
+ * xmlSchemaValidityLocatorFunc:
+ * @ctx: user provided context
+ * @file: returned file information
+ * @line: returned line information
+ *
+ * A schemas validation locator, a callback called by the validator.
+ * This is used when file or node informations are not available
+ * to find out what file and line number are affected
+ *
+ * Returns: 0 in case of success and -1 in case of error
+ */
+
+typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx,
+ const char **file, unsigned long *line);
+
/*
* Interfaces for parsing.
*/
@@ -171,6 +189,9 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN int XMLCALL
xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt,
int options);
+XMLPUBFUN void XMLCALL
+ xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt,
+ const char *filename);
XMLPUBFUN int XMLCALL
xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
@@ -210,6 +231,13 @@ XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL
void **user_data);
XMLPUBFUN int XMLCALL
xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug);
+
+
+XMLPUBFUN void XMLCALL
+ xmlSchemaValidateSetLocator (xmlSchemaValidCtxtPtr vctxt,
+ xmlSchemaValidityLocatorFunc f,
+ void *ctxt);
+
#ifdef __cplusplus
}
#endif
diff --git a/include/libxml/xmlschemastypes.h b/include/libxml/xmlschemastypes.h
index 9a3a7a1..35d48d4 100644
--- a/include/libxml/xmlschemastypes.h
+++ b/include/libxml/xmlschemastypes.h
@@ -30,23 +30,23 @@ typedef enum {
XML_SCHEMA_WHITESPACE_COLLAPSE = 3
} xmlSchemaWhitespaceValueType;
-XMLPUBFUN void XMLCALL
- xmlSchemaInitTypes (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
+ xmlSchemaInitTypes (void);
+XMLPUBFUN void XMLCALL
xmlSchemaCleanupTypes (void);
-XMLPUBFUN xmlSchemaTypePtr XMLCALL
+XMLPUBFUN xmlSchemaTypePtr XMLCALL
xmlSchemaGetPredefinedType (const xmlChar *name,
const xmlChar *ns);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSchemaValidatePredefinedType (xmlSchemaTypePtr type,
const xmlChar *value,
xmlSchemaValPtr *val);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSchemaValPredefTypeNode (xmlSchemaTypePtr type,
const xmlChar *value,
xmlSchemaValPtr *val,
xmlNodePtr node);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSchemaValidateFacet (xmlSchemaTypePtr base,
xmlSchemaFacetPtr facet,
const xmlChar *value,
@@ -54,25 +54,25 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN int XMLCALL
xmlSchemaValidateFacetWhtsp (xmlSchemaFacetPtr facet,
xmlSchemaWhitespaceValueType fws,
- xmlSchemaValType valType,
+ xmlSchemaValType valType,
const xmlChar *value,
xmlSchemaValPtr val,
xmlSchemaWhitespaceValueType ws);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSchemaFreeValue (xmlSchemaValPtr val);
-XMLPUBFUN xmlSchemaFacetPtr XMLCALL
+XMLPUBFUN xmlSchemaFacetPtr XMLCALL
xmlSchemaNewFacet (void);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSchemaCheckFacet (xmlSchemaFacetPtr facet,
xmlSchemaTypePtr typeDecl,
xmlSchemaParserCtxtPtr ctxt,
const xmlChar *name);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSchemaFreeFacet (xmlSchemaFacetPtr facet);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlSchemaCompareValues (xmlSchemaValPtr x,
xmlSchemaValPtr y);
-XMLPUBFUN xmlSchemaTypePtr XMLCALL
+XMLPUBFUN xmlSchemaTypePtr XMLCALL
xmlSchemaGetBuiltInListSimpleTypeItemType (xmlSchemaTypePtr type);
XMLPUBFUN int XMLCALL
xmlSchemaValidateListSimpleTypeFacet (xmlSchemaFacetPtr facet,
@@ -82,7 +82,7 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN xmlSchemaTypePtr XMLCALL
xmlSchemaGetBuiltInType (xmlSchemaValType type);
XMLPUBFUN int XMLCALL
- xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type,
+ xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type,
int facetType);
XMLPUBFUN xmlChar * XMLCALL
xmlSchemaCollapseString (const xmlChar *value);
@@ -91,7 +91,7 @@ XMLPUBFUN xmlChar * XMLCALL
XMLPUBFUN unsigned long XMLCALL
xmlSchemaGetFacetValueAsULong (xmlSchemaFacetPtr facet);
XMLPUBFUN int XMLCALL
- xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type,
+ xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type,
xmlSchemaFacetPtr facet,
const xmlChar *value,
xmlSchemaValPtr val,
@@ -100,19 +100,19 @@ XMLPUBFUN int XMLCALL
xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
xmlSchemaValType valType,
const xmlChar *value,
- xmlSchemaValPtr val,
+ xmlSchemaValPtr val,
unsigned long *length,
xmlSchemaWhitespaceValueType ws);
XMLPUBFUN int XMLCALL
- xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
+ xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
const xmlChar *value,
- xmlSchemaValPtr *val,
+ xmlSchemaValPtr *val,
xmlNodePtr node);
XMLPUBFUN int XMLCALL
xmlSchemaGetCanonValue (xmlSchemaValPtr val,
const xmlChar **retValue);
XMLPUBFUN int XMLCALL
- xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val,
+ xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val,
const xmlChar **retValue,
xmlSchemaWhitespaceValueType ws);
XMLPUBFUN int XMLCALL
diff --git a/include/libxml/xmlstring.h b/include/libxml/xmlstring.h
index 0bc6888..2036236 100644
--- a/include/libxml/xmlstring.h
+++ b/include/libxml/xmlstring.h
@@ -113,16 +113,16 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN int XMLCALL
xmlUTF8Strsize (const xmlChar *utf,
int len);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlUTF8Strndup (const xmlChar *utf,
int len);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlUTF8Strpos (const xmlChar *utf,
int pos);
XMLPUBFUN int XMLCALL
xmlUTF8Strloc (const xmlChar *utf,
const xmlChar *utfchar);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlUTF8Strsub (const xmlChar *utf,
int start,
int len);
diff --git a/include/libxml/xmlversion.h b/include/libxml/xmlversion.h
index 863c422..ffd42ea 100644
--- a/include/libxml/xmlversion.h
+++ b/include/libxml/xmlversion.h
@@ -29,28 +29,28 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
*
* the version string like "1.2.3"
*/
-#define LIBXML_DOTTED_VERSION "2.8.0"
+#define LIBXML_DOTTED_VERSION "2.9.2"
/**
* LIBXML_VERSION:
*
* the version number: 1.2.3 value is 10203
*/
-#define LIBXML_VERSION 20800
+#define LIBXML_VERSION 20902
/**
* LIBXML_VERSION_STRING:
*
* the version number string, 1.2.3 value is "10203"
*/
-#define LIBXML_VERSION_STRING "20800"
+#define LIBXML_VERSION_STRING "20902"
/**
* LIBXML_VERSION_EXTRA:
*
* extra version information, used to show a CVS compilation
*/
-#define LIBXML_VERSION_EXTRA "-GITv2.8.0-rc2-1-g22030ef"
+#define LIBXML_VERSION_EXTRA "-GITv2.9.2-rc2-10-gbe2a7ed"
/**
* LIBXML_TEST_VERSION:
@@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
* Macro to check that the libxml version in use is compatible with
* the version the software has been compiled against
*/
-#define LIBXML_TEST_VERSION xmlCheckVersion(20800);
+#define LIBXML_TEST_VERSION xmlCheckVersion(20902);
#ifndef VMS
#if 0
@@ -98,6 +98,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
#endif
/**
+ * LIBXML_THREAD_ALLOC_ENABLED:
+ *
+ * Whether the allocation hooks are per-thread
+ */
+#if 0
+#define LIBXML_THREAD_ALLOC_ENABLED
+#endif
+
+/**
* LIBXML_TREE_ENABLED:
*
* Whether the DOM like tree manipulation API support is configured in
@@ -412,7 +421,11 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
*/
#ifndef ATTRIBUTE_UNUSED
-#define ATTRIBUTE_UNUSED __attribute__((unused))
+# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)))
+# define ATTRIBUTE_UNUSED __attribute__((unused))
+# else
+# define ATTRIBUTE_UNUSED
+# endif
#endif
/**
diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in
index ddd4633..00a836f 100644
--- a/include/libxml/xmlversion.h.in
+++ b/include/libxml/xmlversion.h.in
@@ -98,6 +98,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
#endif
/**
+ * LIBXML_THREAD_ALLOC_ENABLED:
+ *
+ * Whether the allocation hooks are per-thread
+ */
+#if @WITH_THREAD_ALLOC@
+#define LIBXML_THREAD_ALLOC_ENABLED
+#endif
+
+/**
* LIBXML_TREE_ENABLED:
*
* Whether the DOM like tree manipulation API support is configured in
@@ -412,7 +421,11 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
*/
#ifndef ATTRIBUTE_UNUSED
-#define ATTRIBUTE_UNUSED __attribute__((unused))
+# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)))
+# define ATTRIBUTE_UNUSED __attribute__((unused))
+# else
+# define ATTRIBUTE_UNUSED
+# endif
#endif
/**
diff --git a/include/libxml/xmlwriter.h b/include/libxml/xmlwriter.h
index 91e683c..dd5add3 100644
--- a/include/libxml/xmlwriter.h
+++ b/include/libxml/xmlwriter.h
@@ -1,4 +1,3 @@
-
/*
* Summary: text writing API for XML
* Description: text writing API for XML
@@ -471,6 +470,10 @@ extern "C" {
xmlTextWriterSetIndentString(xmlTextWriterPtr writer,
const xmlChar * str);
+ XMLPUBFUN int XMLCALL
+ xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar);
+
+
/*
* misc
*/
diff --git a/include/libxml/xpath.h b/include/libxml/xpath.h
index ddd9dd8..d96776c 100644
--- a/include/libxml/xpath.h
+++ b/include/libxml/xpath.h
@@ -33,7 +33,7 @@
extern "C" {
#endif
#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */
-
+
#ifdef LIBXML_XPATH_ENABLED
typedef struct _xmlXPathContext xmlXPathContext;
@@ -69,7 +69,8 @@ typedef enum {
XPATH_ENCODING_ERROR,
XPATH_INVALID_CHAR_ERROR,
XPATH_INVALID_CTXT,
- XPATH_STACK_ERROR
+ XPATH_STACK_ERROR,
+ XPATH_FORBID_VARIABLE_ERROR
} xmlXPathError;
/*
@@ -272,11 +273,11 @@ typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
*
* Expression evaluation occurs with respect to a context.
* he context consists of:
- * - a node (the context node)
- * - a node list (the context node list)
- * - a set of variable bindings
- * - a function library
- * - the set of namespace declarations in scope for the expression
+ * - a node (the context node)
+ * - a node list (the context node list)
+ * - a set of variable bindings
+ * - a function library
+ * - the set of namespace declarations in scope for the expression
* Following the switch to hash tables, this need to be trimmed up at
* the next binary incompatible release.
* The node may be modified when the context is passed to libxml2
@@ -420,7 +421,7 @@ XMLPUBVAR double xmlXPathNINF;
* @index is out of range (0 to length-1)
*/
#define xmlXPathNodeSetItem(ns, index) \
- ((((ns) != NULL) && \
+ ((((ns) != NULL) && \
((index) >= 0) && ((index) < (ns)->nodeNr)) ? \
(ns)->nodeTab[(index)] \
: NULL)
@@ -436,64 +437,64 @@ XMLPUBVAR double xmlXPathNINF;
(((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathFreeObject (xmlXPathObjectPtr obj);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeSetCreate (xmlNodePtr val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathFreeNodeSet (xmlNodeSetPtr obj);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathObjectCopy (xmlXPathObjectPtr val);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathCmpNodes (xmlNodePtr node1,
xmlNodePtr node2);
/**
* Conversion functions to basic types.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathCastNumberToBoolean (double val);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathCastStringToBoolean (const xmlChar * val);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathCastToBoolean (xmlXPathObjectPtr val);
-XMLPUBFUN double XMLCALL
+XMLPUBFUN double XMLCALL
xmlXPathCastBooleanToNumber (int val);
-XMLPUBFUN double XMLCALL
+XMLPUBFUN double XMLCALL
xmlXPathCastStringToNumber (const xmlChar * val);
-XMLPUBFUN double XMLCALL
+XMLPUBFUN double XMLCALL
xmlXPathCastNodeToNumber (xmlNodePtr node);
-XMLPUBFUN double XMLCALL
+XMLPUBFUN double XMLCALL
xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns);
-XMLPUBFUN double XMLCALL
+XMLPUBFUN double XMLCALL
xmlXPathCastToNumber (xmlXPathObjectPtr val);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathCastBooleanToString (int val);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathCastNumberToString (double val);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathCastNodeToString (xmlNodePtr node);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathCastNodeSetToString (xmlNodeSetPtr ns);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathCastToString (xmlXPathObjectPtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathConvertBoolean (xmlXPathObjectPtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathConvertNumber (xmlXPathObjectPtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathConvertString (xmlXPathObjectPtr val);
/**
* Context handling.
*/
-XMLPUBFUN xmlXPathContextPtr XMLCALL
+XMLPUBFUN xmlXPathContextPtr XMLCALL
xmlXPathNewContext (xmlDocPtr doc);
XMLPUBFUN void XMLCALL
xmlXPathFreeContext (xmlXPathContextPtr ctxt);
@@ -505,36 +506,43 @@ XMLPUBFUN int XMLCALL
/**
* Evaluation functions.
*/
-XMLPUBFUN long XMLCALL
+XMLPUBFUN long XMLCALL
xmlXPathOrderDocElems (xmlDocPtr doc);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN int XMLCALL
+ xmlXPathSetContextNode (xmlNodePtr node,
+ xmlXPathContextPtr ctx);
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
+ xmlXPathNodeEval (xmlNodePtr node,
+ const xmlChar *str,
+ xmlXPathContextPtr ctx);
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathEval (const xmlChar *str,
xmlXPathContextPtr ctx);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathEvalExpression (const xmlChar *str,
xmlXPathContextPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathEvalPredicate (xmlXPathContextPtr ctxt,
xmlXPathObjectPtr res);
/**
* Separate compilation/evaluation entry points.
*/
-XMLPUBFUN xmlXPathCompExprPtr XMLCALL
+XMLPUBFUN xmlXPathCompExprPtr XMLCALL
xmlXPathCompile (const xmlChar *str);
-XMLPUBFUN xmlXPathCompExprPtr XMLCALL
+XMLPUBFUN xmlXPathCompExprPtr XMLCALL
xmlXPathCtxtCompile (xmlXPathContextPtr ctxt,
- const xmlChar *str);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+ const xmlChar *str);
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathCompiledEval (xmlXPathCompExprPtr comp,
xmlXPathContextPtr ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
xmlXPathContextPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp);
#endif /* LIBXML_XPATH_ENABLED */
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathInit (void);
XMLPUBFUN int XMLCALL
xmlXPathIsNaN (double val);
diff --git a/include/libxml/xpathInternals.h b/include/libxml/xpathInternals.h
index dcd5243..70c9db9 100644
--- a/include/libxml/xpathInternals.h
+++ b/include/libxml/xpathInternals.h
@@ -100,16 +100,16 @@ extern "C" {
*/
#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN double XMLCALL
- xmlXPathPopNumber (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
- xmlXPathPopString (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
- xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void * XMLCALL
- xmlXPathPopExternal (xmlXPathParserContextPtr ctxt);
+XMLPUBFUN double XMLCALL
+ xmlXPathPopNumber (xmlXPathParserContextPtr ctxt);
+XMLPUBFUN xmlChar * XMLCALL
+ xmlXPathPopString (xmlXPathParserContextPtr ctxt);
+XMLPUBFUN xmlNodeSetPtr XMLCALL
+ xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt);
+XMLPUBFUN void * XMLCALL
+ xmlXPathPopExternal (xmlXPathParserContextPtr ctxt);
/**
* xmlXPathReturnBoolean:
@@ -296,7 +296,9 @@ XMLPUBFUN void * XMLCALL
#define CHECK_ARITY(x) \
if (ctxt == NULL) return; \
if (nargs != (x)) \
- XP_ERROR(XPATH_INVALID_ARITY);
+ XP_ERROR(XPATH_INVALID_ARITY); \
+ if (ctxt->valueNr < ctxt->valueFrame + (x)) \
+ XP_ERROR(XPATH_STACK_ERROR);
/**
* CAST_TO_STRING:
@@ -329,7 +331,7 @@ XMLPUBFUN void * XMLCALL
* Variable Lookup forwarding.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt,
xmlXPathVariableLookupFunc f,
void *data);
@@ -338,7 +340,7 @@ XMLPUBFUN void XMLCALL
* Function Lookup forwarding.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
xmlXPathFuncLookupFunc f,
void *funcCtxt);
@@ -346,7 +348,7 @@ XMLPUBFUN void XMLCALL
/*
* Error reporting.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPatherror (xmlXPathParserContextPtr ctxt,
const char *file,
int line,
@@ -357,11 +359,11 @@ XMLPUBFUN void XMLCALL
int error);
#ifdef LIBXML_DEBUG_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathDebugDumpObject (FILE *output,
xmlXPathObjectPtr cur,
int depth);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathDebugDumpCompExpr(FILE *output,
xmlXPathCompExprPtr comp,
int depth);
@@ -369,48 +371,48 @@ XMLPUBFUN void XMLCALL
/**
* NodeSet handling.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathNodeSetContains (xmlNodeSetPtr cur,
xmlNodePtr val);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathDifference (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathIntersection (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathDistinctSorted (xmlNodeSetPtr nodes);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathDistinct (xmlNodeSetPtr nodes);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathHasSameNodes (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes,
xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathLeadingSorted (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeLeading (xmlNodeSetPtr nodes,
xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathLeading (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes,
xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathTrailingSorted (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeTrailing (xmlNodeSetPtr nodes,
xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
+XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathTrailing (xmlNodeSetPtr nodes1,
xmlNodeSetPtr nodes2);
@@ -419,51 +421,51 @@ XMLPUBFUN xmlNodeSetPtr XMLCALL
* Extending a context.
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathRegisterNs (xmlXPathContextPtr ctxt,
const xmlChar *prefix,
const xmlChar *ns_uri);
-XMLPUBFUN const xmlChar * XMLCALL
+XMLPUBFUN const xmlChar * XMLCALL
xmlXPathNsLookup (xmlXPathContextPtr ctxt,
const xmlChar *prefix);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathRegisterFunc (xmlXPathContextPtr ctxt,
const xmlChar *name,
xmlXPathFunction f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt,
const xmlChar *name,
const xmlChar *ns_uri,
xmlXPathFunction f);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathRegisterVariable (xmlXPathContextPtr ctxt,
const xmlChar *name,
xmlXPathObjectPtr value);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt,
const xmlChar *name,
const xmlChar *ns_uri,
xmlXPathObjectPtr value);
-XMLPUBFUN xmlXPathFunction XMLCALL
+XMLPUBFUN xmlXPathFunction XMLCALL
xmlXPathFunctionLookup (xmlXPathContextPtr ctxt,
const xmlChar *name);
-XMLPUBFUN xmlXPathFunction XMLCALL
+XMLPUBFUN xmlXPathFunction XMLCALL
xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt,
const xmlChar *name,
const xmlChar *ns_uri);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathVariableLookup (xmlXPathContextPtr ctxt,
const xmlChar *name);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt,
const xmlChar *name,
const xmlChar *ns_uri);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
/**
@@ -471,79 +473,79 @@ XMLPUBFUN void XMLCALL
*/
XMLPUBFUN xmlXPathParserContextPtr XMLCALL
xmlXPathNewParserContext (const xmlChar *str,
- xmlXPathContextPtr ctxt);
-XMLPUBFUN void XMLCALL
+ xmlXPathContextPtr ctxt);
+XMLPUBFUN void XMLCALL
xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt);
/* TODO: remap to xmlXPathValuePop and Push. */
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
valuePop (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
valuePush (xmlXPathParserContextPtr ctxt,
- xmlXPathObjectPtr value);
+ xmlXPathObjectPtr value);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewString (const xmlChar *val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewCString (const char *val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapString (xmlChar *val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapCString (char * val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewFloat (double val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewBoolean (int val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewNodeSet (xmlNodePtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewValueTree (xmlNodePtr val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathNodeSetAdd (xmlNodeSetPtr cur,
xmlNodePtr val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN int XMLCALL
xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur,
xmlNodePtr val);
-XMLPUBFUN void XMLCALL
- xmlXPathNodeSetAddNs (xmlNodeSetPtr cur,
- xmlNodePtr node,
+XMLPUBFUN int XMLCALL
+ xmlXPathNodeSetAddNs (xmlNodeSetPtr cur,
+ xmlNodePtr node,
xmlNsPtr ns);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathNodeSetSort (xmlNodeSetPtr set);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRoot (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathParseName (xmlXPathParserContextPtr ctxt);
-XMLPUBFUN xmlChar * XMLCALL
+XMLPUBFUN xmlChar * XMLCALL
xmlXPathParseNCName (xmlXPathParserContextPtr ctxt);
/*
* Existing functions.
*/
-XMLPUBFUN double XMLCALL
+XMLPUBFUN double XMLCALL
xmlXPathStringEvalNumber (const xmlChar *str);
-XMLPUBFUN int XMLCALL
- xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
+XMLPUBFUN int XMLCALL
+ xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
xmlXPathObjectPtr res);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt);
-XMLPUBFUN xmlNodeSetPtr XMLCALL
- xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
+XMLPUBFUN xmlNodeSetPtr XMLCALL
+ xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
xmlNodeSetPtr val2);
-XMLPUBFUN void XMLCALL
- xmlXPathNodeSetDel (xmlNodeSetPtr cur,
+XMLPUBFUN void XMLCALL
+ xmlXPathNodeSetDel (xmlNodeSetPtr cur,
xmlNodePtr val);
-XMLPUBFUN void XMLCALL
- xmlXPathNodeSetRemove (xmlNodeSetPtr cur,
+XMLPUBFUN void XMLCALL
+ xmlXPathNodeSetRemove (xmlNodeSetPtr cur,
int val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewNodeSetList (xmlNodeSetPtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapNodeSet (xmlNodeSetPtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapExternal (void *val);
XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
@@ -621,7 +623,7 @@ XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, in
* Really internal functions
*/
XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
-
+
#ifdef __cplusplus
}
#endif
diff --git a/include/libxml/xpointer.h b/include/libxml/xpointer.h
index dde1dfb..b99112b 100644
--- a/include/libxml/xpointer.h
+++ b/include/libxml/xpointer.h
@@ -7,7 +7,7 @@
*
* Added support for the element() scheme described in:
* W3C Proposed Recommendation 13 November 2002
- * http://www.w3.org/TR/2002/PR-xptr-element-20021113/
+ * http://www.w3.org/TR/2002/PR-xptr-element-20021113/
*
* Copy: See Copyright for the status of this software.
*
@@ -43,68 +43,68 @@ struct _xmlLocationSet {
* Handling of location sets.
*/
-XMLPUBFUN xmlLocationSetPtr XMLCALL
+XMLPUBFUN xmlLocationSetPtr XMLCALL
xmlXPtrLocationSetCreate (xmlXPathObjectPtr val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPtrFreeLocationSet (xmlLocationSetPtr obj);
-XMLPUBFUN xmlLocationSetPtr XMLCALL
+XMLPUBFUN xmlLocationSetPtr XMLCALL
xmlXPtrLocationSetMerge (xmlLocationSetPtr val1,
xmlLocationSetPtr val2);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewRange (xmlNodePtr start,
int startindex,
xmlNodePtr end,
int endindex);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewRangePoints (xmlXPathObjectPtr start,
xmlXPathObjectPtr end);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewRangeNodePoint (xmlNodePtr start,
xmlXPathObjectPtr end);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewRangePointNode (xmlXPathObjectPtr start,
xmlNodePtr end);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewRangeNodes (xmlNodePtr start,
xmlNodePtr end);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewLocationSetNodes (xmlNodePtr start,
xmlNodePtr end);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewRangeNodeObject (xmlNodePtr start,
xmlXPathObjectPtr end);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrNewCollapsedRange (xmlNodePtr start);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPtrLocationSetAdd (xmlLocationSetPtr cur,
xmlXPathObjectPtr val);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrWrapLocationSet (xmlLocationSetPtr val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPtrLocationSetDel (xmlLocationSetPtr cur,
xmlXPathObjectPtr val);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPtrLocationSetRemove (xmlLocationSetPtr cur,
int val);
/*
* Functions.
*/
-XMLPUBFUN xmlXPathContextPtr XMLCALL
+XMLPUBFUN xmlXPathContextPtr XMLCALL
xmlXPtrNewContext (xmlDocPtr doc,
xmlNodePtr here,
xmlNodePtr origin);
-XMLPUBFUN xmlXPathObjectPtr XMLCALL
+XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPtrEval (const xmlChar *str,
xmlXPathContextPtr ctx);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt,
- int nargs);
-XMLPUBFUN xmlNodePtr XMLCALL
+ int nargs);
+XMLPUBFUN xmlNodePtr XMLCALL
xmlXPtrBuildNodeList (xmlXPathObjectPtr obj);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt);
#ifdef __cplusplus
}
diff --git a/include/win32config.h b/include/win32config.h
index 3fc9be5..40cf7df 100644
--- a/include/win32config.h
+++ b/include/win32config.h
@@ -5,6 +5,8 @@
#define HAVE_STDARG_H
#define HAVE_MALLOC_H
#define HAVE_ERRNO_H
+#define SEND_ARG2_CAST
+#define GETHOSTBYNAME_ARG_CAST
#if defined(_WIN32_WCE)
#undef HAVE_ERRNO_H
@@ -95,7 +97,9 @@ static int isnan (double d) {
#if defined(_MSC_VER)
#define mkdir(p,m) _mkdir(p)
+#if _MSC_VER < 1900
#define snprintf _snprintf
+#endif
#if _MSC_VER < 1500
#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
#endif
diff --git a/include/wsockcompat.h b/include/wsockcompat.h
index c762a64..e6a1a99 100644
--- a/include/wsockcompat.h
+++ b/include/wsockcompat.h
@@ -41,7 +41,7 @@
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ESHUTDOWN WSAESHUTDOWN
-#ifndef _MSC_VER
+#if (!defined(_MSC_VER) || (_MSC_VER < 1600))
#define EINPROGRESS WSAEINPROGRESS
#define EALREADY WSAEALREADY
#define ENOTSOCK WSAENOTSOCK
diff --git a/install-sh b/install-sh
index 6781b98..377bb86 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2009-04-28.21; # UTC
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
@@ -156,6 +156,10 @@ while test $# -ne 0; do
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
shift;;
-T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
@@ -194,13 +202,17 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for 'test' and other utilities.
case $src in
- -*) src=./$src;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
echo "$0: no destination specified." >&2
exit 1
fi
-
dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
@@ -347,7 +354,7 @@ do
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
+ # other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
@@ -385,7 +392,7 @@ do
case $dstdir in
/*) prefix='/';;
- -*) prefix='./';;
+ [-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
@@ -403,7 +410,7 @@ do
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
diff --git a/legacy.c b/legacy.c
index e75178a..86362bf 100644
--- a/legacy.c
+++ b/legacy.c
@@ -393,7 +393,7 @@ xmlSetFeature(xmlParserCtxtPtr ctxt, const char *name, void *value)
* @end: an end marker xmlChar, 0 if none
* @end2: an end marker xmlChar, 0 if none
* @end3: an end marker xmlChar, 0 if none
- *
+ *
* This function is deprecated, we now always process entities content
* through xmlStringDecodeEntities
*
@@ -456,7 +456,7 @@ xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
/**
* xmlNamespaceParseQName:
* @ctxt: an XML parser context
- * @prefix: a xmlChar **
+ * @prefix: a xmlChar **
*
* TODO: this seems not in use anymore, the namespace handling is done on
* top of the SAX interfaces, i.e. not on raw input.
@@ -603,7 +603,7 @@ xmlScanName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
/**
* xmlParserHandleReference:
* @ctxt: the parser context
- *
+ *
* TODO: Remove, now deprecated ... the test is done directly in the
* content parsing
* routines.
@@ -615,7 +615,7 @@ xmlScanName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
* [ WFC: Entity Declared ]
* the Name given in the entity reference must match that in an entity
* declaration, except that well-formed documents need not declare any
- * of the following entities: amp, lt, gt, apos, quot.
+ * of the following entities: amp, lt, gt, apos, quot.
*
* [ WFC: Parsed Entity ]
* An entity reference must not contain the name of an unparsed entity
@@ -624,7 +624,7 @@ xmlScanName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
* '&#x' [0-9a-fA-F]+ ';'
*
* A PEReference may have been detected in the current input stream
- * the handling is done accordingly to
+ * the handling is done accordingly to
* http://www.w3.org/TR/REC-xml#entproc
*/
void
@@ -693,7 +693,7 @@ xmlNewGlobalNs(xmlDocPtr doc ATTRIBUTE_UNUSED,
/**
* xmlUpgradeOldNs:
* @doc: a document pointer
- *
+ *
* Upgrade old style Namespaces (PI) and move them to the root of the document.
* DEPRECATED
*/
@@ -719,7 +719,7 @@ xmlUpgradeOldNs(xmlDocPtr doc ATTRIBUTE_UNUSED)
*
* People must migrate their code to xmlEncodeEntitiesReentrant !
* This routine will issue a warning when encountered.
- *
+ *
* Returns NULL
*/
const xmlChar *
@@ -740,7 +740,7 @@ xmlEncodeEntities(xmlDocPtr doc ATTRIBUTE_UNUSED,
/************************************************************************
* *
- * Old set of SAXv1 functions *
+ * Old set of SAXv1 functions *
* *
************************************************************************/
static int deprecated_v1_msg = 0;
@@ -961,8 +961,8 @@ getParameterEntity(void *ctx, const xmlChar * name)
/**
* entityDecl:
* @ctx: the user data (XML parser context)
- * @name: the entity name
- * @type: the entity type
+ * @name: the entity name
+ * @type: the entity type
* @publicId: The public ID of the entity
* @systemId: The system ID of the entity
* @content: the entity value (without processing).
@@ -983,8 +983,8 @@ entityDecl(void *ctx, const xmlChar * name, int type,
* attributeDecl:
* @ctx: the user data (XML parser context)
* @elem: the name of the element
- * @fullname: the attribute name
- * @type: the attribute type
+ * @fullname: the attribute name
+ * @type: the attribute type
* @def: the type of default value
* @defaultValue: the attribute default value
* @tree: the tree of enumerated value set
@@ -1005,8 +1005,8 @@ attributeDecl(void *ctx, const xmlChar * elem, const xmlChar * fullname,
/**
* elementDecl:
* @ctx: the user data (XML parser context)
- * @name: the element name
- * @type: the element type
+ * @name: the element name
+ * @type: the element type
* @content: the element value tree
*
* An element definition has been parsed
@@ -1151,7 +1151,7 @@ void
endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED)
{
DEPRECATED("endElement")
- xmlSAX2EndElement(ctx, name);
+ xmlSAX2EndElement(ctx, name);
}
/**
@@ -1159,7 +1159,7 @@ endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED)
* @ctx: the user data (XML parser context)
* @name: The entity name
*
- * called when an entity reference is detected.
+ * called when an entity reference is detected.
* DEPRECATED: use xmlSAX2Reference()
*/
void
diff --git a/libxml-2.0-uninstalled.pc.in b/libxml-2.0-uninstalled.pc.in
index 0a4c833..60b886b 100644
--- a/libxml-2.0-uninstalled.pc.in
+++ b/libxml-2.0-uninstalled.pc.in
@@ -8,5 +8,5 @@ Name: libXML
Version: @VERSION@
Description: libXML library version2.
Requires:
-Libs: -L${libdir} -lxml2 @THREAD_LIBS@ @Z_LIBS@ @ICONV_LIBS@ @M_LIBS@ @LIBS@
+Libs: -L${libdir} -lxml2 @ICU_LIBS@ @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ @ICONV_LIBS@ @M_LIBS@ @LIBS@
Cflags: -I${includedir} @XML_INCLUDEDIR@ @XML_CFLAGS@
diff --git a/libxml-2.0.pc.in b/libxml-2.0.pc.in
index 31a1b8c..2653a7c 100644
--- a/libxml-2.0.pc.in
+++ b/libxml-2.0.pc.in
@@ -9,5 +9,5 @@ Version: @VERSION@
Description: libXML library version2.
Requires:
Libs: -L${libdir} -lxml2
-Libs.private: @THREAD_LIBS@ @Z_LIBS@ @ICONV_LIBS@ @M_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@
+Libs.private: @ICU_LIBS@ @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ @ICONV_LIBS@ @M_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@
Cflags: @XML_INCLUDEDIR@ @XML_CFLAGS@
diff --git a/libxml.3 b/libxml.3
index 88d3eee..b3e9fef 100644
--- a/libxml.3
+++ b/libxml.3
@@ -5,7 +5,7 @@ libxml \- library used to parse XML files
The
.I libxml
library is used to parse XML files.
-Its internal document repesentation is as close as possible to the
+Its internal document representation is as close as possible to the
.I DOM
(Document Object Model) interface,
an API for accessing XML or HTML structured documents.
diff --git a/libxml.h b/libxml.h
index fa3aea4..2da9044 100644
--- a/libxml.h
+++ b/libxml.h
@@ -29,6 +29,11 @@
#include <win32config.h>
#include <libxml/xmlversion.h>
#else
+/*
+ * Currently supported platforms use either autoconf or
+ * copy to config.h own "preset" configuration file.
+ * As result ifdef HAVE_CONFIG_H is omited here.
+ */
#include "config.h"
#include <libxml/xmlversion.h>
#endif
@@ -79,6 +84,8 @@ void __xmlGlobalInitMutexLock(void);
void __xmlGlobalInitMutexUnlock(void);
void __xmlGlobalInitMutexDestroy(void);
+int __xmlInitializeDict(void);
+
#if defined(HAVE_RAND) && defined(HAVE_SRAND) && defined(HAVE_TIME)
/*
* internal thread safe random function
@@ -86,6 +93,8 @@ void __xmlGlobalInitMutexDestroy(void);
int __xmlRandom(void);
#endif
+int xmlNop(void);
+
#ifdef IN_LIBXML
#ifdef __GNUC__
#ifdef PIC
diff --git a/libxml.spec.in b/libxml.spec.in
index 03eb24e..242a4fe 100644
--- a/libxml.spec.in
+++ b/libxml.spec.in
@@ -1,22 +1,22 @@
Summary: Library providing XML and HTML support
Name: libxml2
Version: @VERSION@
-Release: 1
+Release: 1%{?dist}%{?extra_release}
License: MIT
Group: Development/Libraries
Source: ftp://xmlsoft.org/libxml2/libxml2-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
BuildRequires: python python-devel zlib-devel pkgconfig xz-devel
URL: http://xmlsoft.org/
%description
-This library allows to manipulate XML files. It includes support
+This library allows to manipulate XML files. It includes support
to read, modify and write XML and HTML files. There is DTDs support
this includes parsing and validation even with complex DtDs, either
at parse time or later once the document has been modified. The output
can be a simple SAX stream or and in-memory DOM like representations.
In this case one can use the built-in XPath and XPointer implementation
-to select subnodes or ranges. A flexible Input/Output mechanism is
+to select sub nodes or ranges. A flexible Input/Output mechanism is
available, with existing HTTP and FTP modules and combined to an
URI library.
@@ -30,28 +30,36 @@ Requires: pkgconfig
%description devel
Libraries, include files, etc you can use to develop XML applications.
-This library allows to manipulate XML files. It includes support
+This library allows to manipulate XML files. It includes support
to read, modify and write XML and HTML files. There is DTDs support
this includes parsing and validation even with complex DtDs, either
at parse time or later once the document has been modified. The output
can be a simple SAX stream or and in-memory DOM like representations.
In this case one can use the built-in XPath and XPointer implementation
-to select subnodes or ranges. A flexible Input/Output mechanism is
+to select sub nodes or ranges. A flexible Input/Output mechanism is
available, with existing HTTP and FTP modules and combined to an
URI library.
+%package static
+Summary: Static library for libxml2
+Group: Development/Libraries
+Requires: libxml2 = %{version}-%{release}
+
+%description static
+Static library for libxml2 provided for specific uses or shaving a few
+microseconds when parsing, do not link to them for generic purpose packages.
+
%package python
Summary: Python bindings for the libxml2 library
Group: Development/Libraries
Requires: libxml2 = %{version}-%{release}
-Requires: python
%description python
The libxml2-python package contains a module that permits applications
written in the Python programming language to use the interface
supplied by the libxml2 library to manipulate XML files.
-This library allows to manipulate XML files. It includes support
+This library allows to manipulate XML files. It includes support
to read, modify and write XML and HTML files. There is DTDs support
this includes parsing and validation even with complex DTDs, either
at parse time or later once the document has been modified.
@@ -62,29 +70,34 @@ at parse time or later once the document has been modified.
%build
%configure
make %{_smp_mflags}
-gzip -9 ChangeLog
%install
rm -fr %{buildroot}
-%makeinstall
-(cd doc/examples ; make clean ; rm -rf .deps Makefile)
-gzip -9 doc/libxml2-api.xml
+make install DESTDIR=%{buildroot}
+
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la
+rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libxml2-%{version}/*
+rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libxml2-python-%{version}/*
+(cd doc/examples ; make clean ; rm -rf .deps Makefile)
+gzip -9 -c doc/libxml2-api.xml > doc/libxml2-api.xml.gz
+
+%check
+make runtests
%clean
rm -fr %{buildroot}
-%post
-/sbin/ldconfig
+%post -p /sbin/ldconfig
-%postun
-/sbin/ldconfig
+%postun -p /sbin/ldconfig
%files
%defattr(-, root, root)
-%doc AUTHORS ChangeLog.gz NEWS README Copyright TODO
+%doc AUTHORS NEWS README Copyright TODO
%doc %{_mandir}/man1/xmllint.1*
%doc %{_mandir}/man1/xmlcatalog.1*
%doc %{_mandir}/man3/libxml.3*
@@ -97,7 +110,7 @@ rm -fr %{buildroot}
%defattr(-, root, root)
%doc %{_mandir}/man1/xml2-config.1*
-%doc AUTHORS ChangeLog.gz NEWS README Copyright
+%doc AUTHORS NEWS README Copyright
%doc doc/*.html doc/html doc/*.gif doc/*.png
%doc doc/tutorial doc/libxml2-api.xml.gz
%doc doc/examples
@@ -108,16 +121,21 @@ rm -fr %{buildroot}
%doc %{_datadir}/gtk-doc/html/libxml2/*.css
%{_libdir}/lib*.so
-%{_libdir}/*a
%{_libdir}/*.sh
%{_includedir}/*
%{_bindir}/xml2-config
%{_datadir}/aclocal/libxml.m4
%{_libdir}/pkgconfig/libxml-2.0.pc
+%{_libdir}/cmake/libxml2/libxml2-config.cmake
+
+%files static
+%defattr(-, root, root)
+
+%{_libdir}/*a
+
%files python
%defattr(-, root, root)
-%doc AUTHORS ChangeLog.gz NEWS README Copyright
%{_libdir}/python*/site-packages/libxml2.py*
%{_libdir}/python*/site-packages/drv_libxml2.py*
%{_libdir}/python*/site-packages/libxml2mod*
diff --git a/libxml2-config.cmake.in b/libxml2-config.cmake.in
new file mode 100644
index 0000000..ac29329
--- /dev/null
+++ b/libxml2-config.cmake.in
@@ -0,0 +1,50 @@
+# libxml2-config.cmake
+# --------------------
+#
+# Libxml2 cmake module.
+# THis module sets the following variables:
+#
+# ::
+#
+# LIBXML2_INCLUDE_DIRS - Directory where libxml2 headers are located.
+# LIBXML2_LIBRARIES - xml2 libraries to link against.
+# LIBXML2_VERSION_MAJOR - The major version of libxml2.
+# LIBXML2_VERSION_MINOR - The minor version of libxml2.
+# LIBXML2_VERSION_PATCH - The patch version of libxml2.
+# LIBXML2_VERSION_STRING - version number as a string (ex: "2.3.4")
+# LIBXML2_MODULES - whether libxml2 as dso support
+
+get_filename_component(_libxml2_rootdir ${CMAKE_CURRENT_LIST_DIR}/../../../ ABSOLUTE)
+
+set(LIBXML2_VERSION_MAJOR @LIBXML_MAJOR_VERSION@)
+set(LIBXML2_VERSION_MINOR @LIBXML_MINOR_VERSION@)
+set(LIBXML2_VERSION_MICRO @LIBXML_MICRO_VERSION@)
+set(LIBXML2_VERSION_STRING "@VERSION@")
+set(LIBXML2_INSTALL_PREFIX ${_libxml2_rootdir})
+set(LIBXML2_INCLUDE_DIRS ${_libxml2_rootdir}/include)
+set(LIBXML2_LIBRARY_DIR ${_libxml2_rootdir}/lib)
+set(LIBXML2_LIBRARIES -L${LIBXML2_LIBRARY_DIR} -lxml2)
+
+if(@WITH_THREADS@)
+ find_package(Threads REQUIRED)
+ list(APPEND LIBXML2_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+endif()
+
+if(@WITH_LZMA@)
+ find_package(LibLZMA REQUIRED)
+ list(APPEND LIBXML2_LIBRARIES ${LIBLZMA_LIBRARIES})
+ list(APPEND LIBXML2_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIRS})
+endif()
+
+if(@WITH_ZLIB@)
+ find_package(ZLIB REQUIRED)
+ list(APPEND LIBXML2_LIBRARIES ${ZLIB_LIBRARIES})
+ list(APPEND LIBXML2_INCLUDE_DIRS ${ZLIB_INCLUDE_DIRS})
+endif()
+
+list(APPEND LIBXML2_LIBRARIES @ICU_LIBS@ @ICONV_LIBS@ @M_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@)
+
+# whether libxml2 has dso support
+set(LIBXML2_MODULES @WITH_MODULES@)
+
+mark_as_advanced( LIBXML2_INCLUDE_DIRS LIBXML2_LIBRARIES )
diff --git a/libxml2.spec b/libxml2.spec
index 0e4cdaf..130cda7 100644
--- a/libxml2.spec
+++ b/libxml2.spec
@@ -1,22 +1,22 @@
Summary: Library providing XML and HTML support
Name: libxml2
-Version: 2.8.0
-Release: 1
+Version: 2.9.2
+Release: 1%{?dist}%{?extra_release}
License: MIT
Group: Development/Libraries
Source: ftp://xmlsoft.org/libxml2/libxml2-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
BuildRequires: python python-devel zlib-devel pkgconfig xz-devel
URL: http://xmlsoft.org/
%description
-This library allows to manipulate XML files. It includes support
+This library allows to manipulate XML files. It includes support
to read, modify and write XML and HTML files. There is DTDs support
this includes parsing and validation even with complex DtDs, either
at parse time or later once the document has been modified. The output
can be a simple SAX stream or and in-memory DOM like representations.
In this case one can use the built-in XPath and XPointer implementation
-to select subnodes or ranges. A flexible Input/Output mechanism is
+to select sub nodes or ranges. A flexible Input/Output mechanism is
available, with existing HTTP and FTP modules and combined to an
URI library.
@@ -30,28 +30,36 @@ Requires: pkgconfig
%description devel
Libraries, include files, etc you can use to develop XML applications.
-This library allows to manipulate XML files. It includes support
+This library allows to manipulate XML files. It includes support
to read, modify and write XML and HTML files. There is DTDs support
this includes parsing and validation even with complex DtDs, either
at parse time or later once the document has been modified. The output
can be a simple SAX stream or and in-memory DOM like representations.
In this case one can use the built-in XPath and XPointer implementation
-to select subnodes or ranges. A flexible Input/Output mechanism is
+to select sub nodes or ranges. A flexible Input/Output mechanism is
available, with existing HTTP and FTP modules and combined to an
URI library.
+%package static
+Summary: Static library for libxml2
+Group: Development/Libraries
+Requires: libxml2 = %{version}-%{release}
+
+%description static
+Static library for libxml2 provided for specific uses or shaving a few
+microseconds when parsing, do not link to them for generic purpose packages.
+
%package python
Summary: Python bindings for the libxml2 library
Group: Development/Libraries
Requires: libxml2 = %{version}-%{release}
-Requires: python
%description python
The libxml2-python package contains a module that permits applications
written in the Python programming language to use the interface
supplied by the libxml2 library to manipulate XML files.
-This library allows to manipulate XML files. It includes support
+This library allows to manipulate XML files. It includes support
to read, modify and write XML and HTML files. There is DTDs support
this includes parsing and validation even with complex DTDs, either
at parse time or later once the document has been modified.
@@ -62,29 +70,34 @@ at parse time or later once the document has been modified.
%build
%configure
make %{_smp_mflags}
-gzip -9 ChangeLog
%install
rm -fr %{buildroot}
-%makeinstall
-(cd doc/examples ; make clean ; rm -rf .deps Makefile)
-gzip -9 doc/libxml2-api.xml
+make install DESTDIR=%{buildroot}
+
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la
+rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libxml2-%{version}/*
+rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libxml2-python-%{version}/*
+(cd doc/examples ; make clean ; rm -rf .deps Makefile)
+gzip -9 -c doc/libxml2-api.xml > doc/libxml2-api.xml.gz
+
+%check
+make runtests
%clean
rm -fr %{buildroot}
-%post
-/sbin/ldconfig
+%post -p /sbin/ldconfig
-%postun
-/sbin/ldconfig
+%postun -p /sbin/ldconfig
%files
%defattr(-, root, root)
-%doc AUTHORS ChangeLog.gz NEWS README Copyright TODO
+%doc AUTHORS NEWS README Copyright TODO
%doc %{_mandir}/man1/xmllint.1*
%doc %{_mandir}/man1/xmlcatalog.1*
%doc %{_mandir}/man3/libxml.3*
@@ -97,7 +110,7 @@ rm -fr %{buildroot}
%defattr(-, root, root)
%doc %{_mandir}/man1/xml2-config.1*
-%doc AUTHORS ChangeLog.gz NEWS README Copyright
+%doc AUTHORS NEWS README Copyright
%doc doc/*.html doc/html doc/*.gif doc/*.png
%doc doc/tutorial doc/libxml2-api.xml.gz
%doc doc/examples
@@ -108,16 +121,21 @@ rm -fr %{buildroot}
%doc %{_datadir}/gtk-doc/html/libxml2/*.css
%{_libdir}/lib*.so
-%{_libdir}/*a
%{_libdir}/*.sh
%{_includedir}/*
%{_bindir}/xml2-config
%{_datadir}/aclocal/libxml.m4
%{_libdir}/pkgconfig/libxml-2.0.pc
+%{_libdir}/cmake/libxml2/libxml2-config.cmake
+
+%files static
+%defattr(-, root, root)
+
+%{_libdir}/*a
+
%files python
%defattr(-, root, root)
-%doc AUTHORS ChangeLog.gz NEWS README Copyright
%{_libdir}/python*/site-packages/libxml2.py*
%{_libdir}/python*/site-packages/drv_libxml2.py*
%{_libdir}/python*/site-packages/libxml2mod*
@@ -128,6 +146,6 @@ rm -fr %{buildroot}
%doc doc/python.html
%changelog
-* Wed May 23 2012 Daniel Veillard <veillard@redhat.com>
-- upstream release 2.8.0 see http://xmlsoft.org/news.html
+* Thu Oct 16 2014 Daniel Veillard <veillard@redhat.com>
+- upstream release 2.9.2 see http://xmlsoft.org/news.html
diff --git a/libxml2.syms b/libxml2.syms
index 93eff53..370dcf1 100644
--- a/libxml2.syms
+++ b/libxml2.syms
@@ -2244,3 +2244,38 @@ LIBXML2_2.8.0 {
xmlInitializeDict;
} LIBXML2_2.7.4;
+LIBXML2_2.9.0 {
+ global:
+
+# tree
+ xmlBufContent;
+ xmlBufEnd;
+ xmlBufGetNodeContent;
+ xmlBufNodeDump;
+ xmlBufShrink;
+ xmlBufUse;
+
+# dict
+ xmlDictGetUsage;
+ xmlDictSetLimit;
+
+# xmlschemas
+ xmlSchemaValidateSetFilename;
+ xmlSchemaValidateSetLocator;
+
+# xmlIO
+ xmlOutputBufferGetContent;
+ xmlOutputBufferGetSize;
+
+# xmlwriter
+ xmlTextWriterSetQuoteChar;
+} LIBXML2_2.8.0;
+
+LIBXML2_2.9.1 {
+ global:
+
+# xpath
+ xmlXPathNodeEval;
+ xmlXPathSetContextNode;
+} LIBXML2_2.9.0;
+
diff --git a/list.c b/list.c
index 5c01c83..d33d928 100644
--- a/list.c
+++ b/list.c
@@ -94,15 +94,15 @@ xmlLinkCompare(const void *data0, const void *data1)
*
* Returns the link containing the data or NULL
*/
-static xmlLinkPtr
-xmlListLowerSearch(xmlListPtr l, void *data)
+static xmlLinkPtr
+xmlListLowerSearch(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
if (l == NULL)
return(NULL);
for(lk = l->sentinel->next;lk != l->sentinel && l->linkCompare(lk->data, data) <0 ;lk = lk->next);
- return lk;
+ return lk;
}
/**
@@ -114,15 +114,15 @@ xmlListLowerSearch(xmlListPtr l, void *data)
*
* Returns the link containing the data or NULL
*/
-static xmlLinkPtr
-xmlListHigherSearch(xmlListPtr l, void *data)
+static xmlLinkPtr
+xmlListHigherSearch(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
if (l == NULL)
return(NULL);
for(lk = l->sentinel->prev;lk != l->sentinel && l->linkCompare(lk->data, data) >0 ;lk = lk->prev);
- return lk;
+ return lk;
}
/**
@@ -134,8 +134,8 @@ xmlListHigherSearch(xmlListPtr l, void *data)
*
* Returns the link containing the data or NULL
*/
-static xmlLinkPtr
-xmlListLinkSearch(xmlListPtr l, void *data)
+static xmlLinkPtr
+xmlListLinkSearch(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
if (l == NULL)
@@ -159,8 +159,8 @@ xmlListLinkSearch(xmlListPtr l, void *data)
*
* Returns the link containing the data or NULL
*/
-static xmlLinkPtr
-xmlListLinkReverseSearch(xmlListPtr l, void *data)
+static xmlLinkPtr
+xmlListLinkReverseSearch(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
if (l == NULL)
@@ -189,16 +189,16 @@ xmlListCreate(xmlListDeallocator deallocator, xmlListDataCompare compare)
{
xmlListPtr l;
if (NULL == (l = (xmlListPtr )xmlMalloc( sizeof(xmlList)))) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Cannot initialize memory for list");
return (NULL);
}
/* Initialize the list to NULL */
memset(l, 0, sizeof(xmlList));
-
+
/* Add the sentinel */
if (NULL ==(l->sentinel = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Cannot initialize memory for sentinel");
xmlFree(l);
return (NULL);
@@ -206,7 +206,7 @@ xmlListCreate(xmlListDeallocator deallocator, xmlListDataCompare compare)
l->sentinel->next = l->sentinel;
l->sentinel->prev = l->sentinel;
l->sentinel->data = NULL;
-
+
/* If there is a link deallocator, use it */
if (deallocator != NULL)
l->linkDeallocator = deallocator;
@@ -217,7 +217,7 @@ xmlListCreate(xmlListDeallocator deallocator, xmlListDataCompare compare)
l->linkCompare = xmlLinkCompare;
return l;
}
-
+
/**
* xmlListSearch:
* @l: a list
@@ -228,7 +228,7 @@ xmlListCreate(xmlListDeallocator deallocator, xmlListDataCompare compare)
* Returns the value associated to @data or NULL in case of error
*/
void *
-xmlListSearch(xmlListPtr l, void *data)
+xmlListSearch(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
if (l == NULL)
@@ -249,7 +249,7 @@ xmlListSearch(xmlListPtr l, void *data)
* Returns the value associated to @data or NULL in case of error
*/
void *
-xmlListReverseSearch(xmlListPtr l, void *data)
+xmlListReverseSearch(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
if (l == NULL)
@@ -270,7 +270,7 @@ xmlListReverseSearch(xmlListPtr l, void *data)
* Returns 0 in case of success, 1 in case of failure
*/
int
-xmlListInsert(xmlListPtr l, void *data)
+xmlListInsert(xmlListPtr l, void *data)
{
xmlLinkPtr lkPlace, lkNew;
@@ -280,7 +280,7 @@ xmlListInsert(xmlListPtr l, void *data)
/* Add the new link */
lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink));
if (lkNew == NULL) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Cannot initialize memory for new link");
return (1);
}
@@ -302,7 +302,7 @@ xmlListInsert(xmlListPtr l, void *data)
*
* Returns 0 in case of success, 1 in case of failure
*/
-int xmlListAppend(xmlListPtr l, void *data)
+int xmlListAppend(xmlListPtr l, void *data)
{
xmlLinkPtr lkPlace, lkNew;
@@ -312,7 +312,7 @@ int xmlListAppend(xmlListPtr l, void *data)
/* Add the new link */
lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink));
if (lkNew == NULL) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Cannot initialize memory for new link");
return (1);
}
@@ -353,7 +353,7 @@ int
xmlListRemoveFirst(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
-
+
if (l == NULL)
return(0);
/*Find the first instance of this data */
@@ -378,7 +378,7 @@ int
xmlListRemoveLast(xmlListPtr l, void *data)
{
xmlLinkPtr lk;
-
+
if (l == NULL)
return(0);
/*Find the last instance of this data */
@@ -403,7 +403,7 @@ int
xmlListRemoveAll(xmlListPtr l, void *data)
{
int count=0;
-
+
if (l == NULL)
return(0);
@@ -422,7 +422,7 @@ void
xmlListClear(xmlListPtr l)
{
xmlLinkPtr lk;
-
+
if (l == NULL)
return;
lk = l->sentinel->next;
@@ -458,14 +458,14 @@ xmlListEmpty(xmlListPtr l)
*
* Returns the first element in the list, or NULL
*/
-xmlLinkPtr
+xmlLinkPtr
xmlListFront(xmlListPtr l)
{
if (l == NULL)
return(NULL);
return (l->sentinel->next);
}
-
+
/**
* xmlListEnd:
* @l: a list
@@ -474,14 +474,14 @@ xmlListFront(xmlListPtr l)
*
* Returns the last element in the list, or NULL
*/
-xmlLinkPtr
+xmlLinkPtr
xmlListEnd(xmlListPtr l)
{
if (l == NULL)
return(NULL);
return (l->sentinel->prev);
}
-
+
/**
* xmlListSize:
* @l: a list
@@ -539,7 +539,7 @@ xmlListPopBack(xmlListPtr l)
* Returns 1 if successful, 0 otherwise
*/
int
-xmlListPushFront(xmlListPtr l, void *data)
+xmlListPushFront(xmlListPtr l, void *data)
{
xmlLinkPtr lkPlace, lkNew;
@@ -549,7 +549,7 @@ xmlListPushFront(xmlListPtr l, void *data)
/* Add the new link */
lkNew = (xmlLinkPtr) xmlMalloc(sizeof(xmlLink));
if (lkNew == NULL) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Cannot initialize memory for new link");
return (0);
}
@@ -571,7 +571,7 @@ xmlListPushFront(xmlListPtr l, void *data)
* Returns 1 if successful, 0 otherwise
*/
int
-xmlListPushBack(xmlListPtr l, void *data)
+xmlListPushBack(xmlListPtr l, void *data)
{
xmlLinkPtr lkPlace, lkNew;
@@ -580,7 +580,7 @@ xmlListPushBack(xmlListPtr l, void *data)
lkPlace = l->sentinel->prev;
/* Add the new link */
if (NULL ==(lkNew = (xmlLinkPtr )xmlMalloc(sizeof(xmlLink)))) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Cannot initialize memory for new link");
return (0);
}
@@ -643,7 +643,7 @@ void
xmlListSort(xmlListPtr l)
{
xmlListPtr lTemp;
-
+
if (l == NULL)
return;
if(xmlListEmpty(l))
@@ -725,10 +725,10 @@ xmlListMerge(xmlListPtr l1, xmlListPtr l2)
* @old: the list
*
* Duplicate the list
- *
+ *
* Returns a new copy of the list or NULL in case of error
*/
-xmlListPtr
+xmlListPtr
xmlListDup(const xmlListPtr old)
{
xmlListPtr cur;
@@ -754,7 +754,7 @@ xmlListDup(const xmlListPtr old)
* @old: the old list
*
* Move all the element from the old list in the new list
- *
+ *
* Returns 0 in case of success 1 in case of error
*/
int
@@ -771,7 +771,7 @@ xmlListCopy(xmlListPtr cur, const xmlListPtr old)
return (1);
}
}
- return (0);
+ return (0);
}
/* xmlListUnique() */
/* xmlListSwap */
diff --git a/ltmain.sh b/ltmain.sh
index aa5624c..63ae69d 100755..100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,9 @@
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -41,6 +41,7 @@
# --quiet, --silent don't print informational messages
# --no-quiet, --no-silent
# print informational messages (default)
+# --no-warn don't display warning messages
# --tag=TAG use configuration variables from tag TAG
# -v, --verbose print more informational messages than default
# --no-verbose don't print the extra informational messages
@@ -69,7 +70,7 @@
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4
+# $progname: (GNU libtool) 2.4.2
# automake: $automake_version
# autoconf: $autoconf_version
#
@@ -79,9 +80,9 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION=2.4
+VERSION=2.4.2
TIMESTAMP=""
-package_revision=1.3293
+package_revision=1.3337
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@ progpath="$0"
: ${CP="cp -f"}
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
: ${MAKE="make"}
: ${MKDIR="mkdir"}
: ${MV="mv -f"}
: ${RM="rm -f"}
-: ${SED="/bin/sed"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
: ${Xsed="$SED -e 1s/^X//"}
@@ -387,7 +383,7 @@ case $progpath in
;;
*)
save_IFS="$IFS"
- IFS=:
+ IFS=${PATH_SEPARATOR-:}
for progdir in $PATH; do
IFS="$save_IFS"
test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@ func_help ()
s*\$LTCFLAGS*'"$LTCFLAGS"'*
s*\$LD*'"$LD"'*
s/\$with_gnu_ld/'"$with_gnu_ld"'/
- s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
p
d
}
@@ -1052,6 +1048,7 @@ opt_finish=false
opt_help=false
opt_help_all=false
opt_silent=:
+opt_warning=:
opt_verbose=:
opt_silent=false
opt_verbose=false
@@ -1120,6 +1117,10 @@ esac
opt_silent=false
func_append preserve_args " $opt"
;;
+ --no-warning|--no-warn)
+ opt_warning=false
+func_append preserve_args " $opt"
+ ;;
--no-verbose)
opt_verbose=false
func_append preserve_args " $opt"
@@ -2059,7 +2060,7 @@ func_mode_compile ()
*.[cCFSifmso] | \
*.ada | *.adb | *.ads | *.asm | \
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
- *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
func_xform "$libobj"
libobj=$func_xform_result
;;
@@ -3201,11 +3202,13 @@ func_mode_install ()
# Set up the ranlib parameters.
oldlib="$destdir/$name"
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
if test -n "$stripme" && test -n "$old_striplib"; then
- func_show_eval "$old_striplib $oldlib" 'exit $?'
+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
fi
# Do each command in the postinstall commands.
@@ -3470,7 +3473,7 @@ static const void *lt_preloaded_setup() {
# linked before any other PIC object. But we must not use
# pic_flag when linking with -static. The problem exists in
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
*-*-hpux*)
pic_flag_for_symtable=" $pic_flag" ;;
@@ -3982,14 +3985,17 @@ func_exec_program_core ()
# launches target application with the remaining arguments.
func_exec_program ()
{
- for lt_wr_arg
- do
- case \$lt_wr_arg in
- --lt-*) ;;
- *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
- esac
- shift
- done
+ case \" \$* \" in
+ *\\ --lt-*)
+ for lt_wr_arg
+ do
+ case \$lt_wr_arg in
+ --lt-*) ;;
+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+ esac
+ shift
+ done ;;
+ esac
func_exec_program_core \${1+\"\$@\"}
}
@@ -5057,9 +5063,15 @@ void lt_dump_script (FILE* f)
{
EOF
func_emit_wrapper yes |
- $SED -e 's/\([\\"]\)/\\\1/g' \
- -e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
-
+ $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/ fputs ("\1", f);/p
+g
+D'
cat <<"EOF"
}
EOF
@@ -5643,7 +5655,8 @@ func_mode_link ()
continue
;;
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
@@ -6147,7 +6160,8 @@ func_mode_link ()
lib=
found=no
case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
@@ -6831,7 +6845,7 @@ func_mode_link ()
test "$hardcode_direct_absolute" = no; then
add="$dir/$linklib"
elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$dir"
+ add_dir="-L$absdir"
# Try looking first in the location we're being installed to.
if test -n "$inst_prefix_dir"; then
case $libdir in
@@ -7316,6 +7330,7 @@ func_mode_link ()
# which has an extra 1 added just for fun
#
case $version_type in
+ # correct linux to gnu/linux during the next big refactor
darwin|linux|osf|windows|none)
func_arith $number_major + $number_minor
current=$func_arith_result
@@ -7432,7 +7447,7 @@ func_mode_link ()
versuffix="$major.$revision"
;;
- linux)
+ linux) # correct to gnu/linux during the next big refactor
func_arith $current - $age
major=.$func_arith_result
versuffix="$major.$age.$revision"
@@ -8020,6 +8035,11 @@ EOF
# Test again, we may have decided not to build it any more
if test "$build_libtool_libs" = yes; then
+ # Remove ${wl} instances when linking with ld.
+ # FIXME: should test the right _cmds variable.
+ case $archive_cmds in
+ *\$LD\ *) wl= ;;
+ esac
if test "$hardcode_into_libs" = yes; then
# Hardcode the library paths
hardcode_libdirs=
@@ -8050,7 +8070,7 @@ EOF
elif test -n "$runpath_var"; then
case "$perm_rpath " in
*" $libdir "*) ;;
- *) func_apped perm_rpath " $libdir" ;;
+ *) func_append perm_rpath " $libdir" ;;
esac
fi
done
@@ -8058,11 +8078,7 @@ EOF
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
- if test -n "$hardcode_libdir_flag_spec_ld"; then
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
- else
- eval dep_rpath=\"$hardcode_libdir_flag_spec\"
- fi
+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
fi
if test -n "$runpath_var" && test -n "$perm_rpath"; then
# We should set the runpath_var.
@@ -9152,6 +9168,8 @@ EOF
esac
done
fi
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
eval cmds=\"$old_archive_cmds\"
func_len " $cmds"
@@ -9261,7 +9279,8 @@ EOF
*.la)
func_basename "$deplib"
name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ func_resolve_sysroot "$deplib"
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
test -z "$libdir" && \
func_fatal_error "\`$deplib' is not a valid libtool archive"
func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 88de383..f12cfdf 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,8 +1,8 @@
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
@@ -11,8 +11,8 @@
m4_define([_LT_COPYING], [dnl
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
_LT_DECL([], [host_alias], [0], [The host system])dnl
_LT_DECL([], [host], [0])dnl
_LT_DECL([], [host_os], [0])dnl
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
m4_case([$1],
[C], [_LT_LANG(C)],
[C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
[Java], [_LT_LANG(GCJ)],
[Fortran 77], [_LT_LANG(F77)],
[Fortran], [_LT_LANG(FC)],
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
])# _LT_LANG
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
# _LT_LANG_DEFAULT_CONFIG
# -----------------------
m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
m4_ifdef([LT_PROG_GCJ],
[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
AC_PROVIDE_IFELSE([LT_PROG_RC],
[LT_LANG(RC)],
[m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
rm -rf libconftest.dylib*
rm -f conftest.*
fi])
+
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
[lt_cv_ld_exported_symbols_list],
[lt_cv_ld_exported_symbols_list=no
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
[lt_cv_ld_exported_symbols_list=no])
LDFLAGS="$save_LDFLAGS"
])
+
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
[lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
@@ -990,7 +1030,9 @@ _LT_EOF
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
_lt_result=$?
- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
lt_cv_ld_force_load=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1035,8 +1077,8 @@ _LT_EOF
])
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
# Checks for linker and compiler features on darwin
m4_defun([_LT_DARWIN_LINKER_FEATURES],
[
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
if test "$lt_cv_ld_force_load" = "yes"; then
_LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
else
_LT_TAGVAR(whole_archive_flag_spec, $1)=''
fi
@@ -1268,7 +1312,7 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@@ -1282,7 +1326,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
- ppc64-*linux*|powerpc64-*linux*)
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@@ -1301,7 +1348,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
- ppc*-*linux*|powerpc*-*linux*)
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
LD="${LD-ld} -m elf64ppc"
;;
s390*-*linux*|s390*-*tpf*)
@@ -1330,14 +1380,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
@@ -1414,13 +1477,13 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -1600,6 +1663,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1639,7 +1707,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
# If test is not a shell built-in, we'll probably end up computing a
# maximum length that is only half of the actual maximum length, but
# we can't tell.
- while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
test $i != 17 # 1/2 MB should be enough
do
@@ -2185,7 +2253,7 @@ need_version=unknown
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
@@ -2194,7 +2262,7 @@ aix3*)
;;
aix[[4-9]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
@@ -2259,7 +2327,7 @@ beos*)
;;
bsdi[[45]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
@@ -2398,7 +2466,7 @@ m4_if([$1], [],[
;;
dgux*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2406,10 +2474,6 @@ dgux*)
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
@@ -2417,7 +2481,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[[123]]*) objformat=aout ;;
+ freebsd[[23]].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -2435,7 +2499,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2455,17 +2519,18 @@ freebsd* | dragonfly*)
;;
gnu*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
@@ -2526,7 +2591,7 @@ hpux9* | hpux10* | hpux11*)
;;
interix[[3-9]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2542,7 +2607,7 @@ irix5* | irix6* | nonstopux*)
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
@@ -2579,9 +2644,9 @@ linux*oldld* | linux*aout* | linux*coff*)
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2648,7 +2713,7 @@ netbsd*)
;;
newsos6)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -2717,7 +2782,7 @@ rdos*)
;;
solaris*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2742,7 +2807,7 @@ sunos4*)
;;
sysv4 | sysv4.3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -2766,7 +2831,7 @@ sysv4 | sysv4.3*)
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
soname_spec='$libname${shared_ext}.$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -2797,7 +2862,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2807,7 +2872,7 @@ tpf*)
;;
uts4*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LD_LIBRARY_PATH
@@ -3229,7 +3294,7 @@ irix5* | irix6* | nonstopux*)
lt_cv_deplibs_check_method=pass_all
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3649,6 +3714,7 @@ for ac_symprfx in "" "_"; do
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK ['"\
" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -4233,7 +4299,9 @@ m4_if([$1], [CXX], [
case $cc_basename in
nvcc*) # Cuda Compiler Driver 2.2
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+ fi
;;
esac
else
@@ -4325,18 +4393,33 @@ m4_if([$1], [CXX], [
;;
*)
case `$CC -V 2>&1 | sed 5q` in
- *Sun\ F* | *Sun*Fortran*)
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
_LT_TAGVAR(lt_prog_compiler_wl, $1)=''
;;
+ *Sun\ F* | *Sun*Fortran*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
*Sun\ C*)
# Sun C 5.9
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
;;
+ *Intel*\ [[CF]]*Compiler*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ *Portland\ Group*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
esac
;;
esac
@@ -4496,7 +4579,9 @@ m4_if([$1], [CXX], [
;;
cygwin* | mingw* | cegcc*)
case $cc_basename in
- cl*) ;;
+ cl*)
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -4521,7 +4606,6 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4772,8 +4856,7 @@ _LT_EOF
xlf* | bgf* | bgxlf* | mpixlf*)
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
if test "x$supports_anon_versioning" = xyes; then
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -5068,6 +5151,7 @@ _LT_EOF
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
# Don't use ranlib
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -5114,10 +5198,6 @@ _LT_EOF
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
;;
- freebsd1*)
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
# support. Future versions do this automatically, but an explicit c++rt0.o
# does not break anything, and helps significantly (at the cost of a little
@@ -5130,7 +5210,7 @@ _LT_EOF
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5169,7 +5249,6 @@ _LT_EOF
fi
if test "$with_gnu_ld" = no; then
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -5611,9 +5690,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
[Flag to hardcode $libdir into a binary during linking.
This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
- [[If ld is used when linking, flag to hardcode $libdir into a binary
- during linking. This must work even if $libdir does not exist]])
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
[Whether we need a single "-rpath" flag with a separated argument])
_LT_TAGDECL([], [hardcode_direct], [0],
@@ -5771,7 +5847,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -6141,7 +6216,7 @@ if test "$_lt_caught_CXX_error" != yes; then
esac
;;
- freebsd[[12]]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
_LT_TAGVAR(ld_shlibs, $1)=no
@@ -6902,12 +6977,18 @@ public class foo {
}
};
_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
])
_lt_libdeps_save_CFLAGS=$CFLAGS
case "$CC $CFLAGS " in #(
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
esac
dnl Parse the compiler output and extract the necessary
@@ -7104,7 +7185,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7237,7 +7317,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7424,6 +7503,77 @@ CFLAGS=$lt_save_CFLAGS
])# _LT_LANG_GCJ_CONFIG
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
# _LT_LANG_RC_CONFIG([TAG])
# -------------------------
# Ensure that the configuration variables for the Windows resource compiler
@@ -7493,6 +7643,13 @@ dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
# LT_PROG_RC
# ----------
AC_DEFUN([LT_PROG_RC],
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 17cfd51..5d9acd8 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
m4_define([_LT_WITH_PIC],
[AC_ARG_WITH([pic],
- [AS_HELP_STRING([--with-pic],
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [pic_mode="$withval"],
+ [lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
[pic_mode=default])
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 9c7b5d4..07a8602 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -9,15 +9,15 @@
# @configure_input@
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
+[macro_version='2.4.2'
+macro_revision='1.3337'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/missing b/missing
index 28055d2..cdea514 100755
--- a/missing
+++ b/missing
@@ -1,11 +1,10 @@
#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-06-26.16; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# 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
@@ -26,69 +25,40 @@ scriptversion=2009-04-28.21; # UTC
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
+case $1 in
-msg="missing on your system"
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
-case $1 in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
@@ -100,272 +70,141 @@ Send bug reports to <bug-automake@gnu.org>."
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
-# normalize program name to check for.
-program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program). This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
- lex*|yacc*)
- # Not GNU programs, they don't have --version.
- ;;
-
- tar*)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case $f in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te*)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison*|yacc*)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
- eval LASTARG="\${$#}"
- case $LASTARG in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if test ! -f y.tab.h; then
- echo >y.tab.h
- fi
- if test ! -f y.tab.c; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex*|flex*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if test $# -ne 1; then
- eval LASTARG="\${$#}"
- case $LASTARG in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if test ! -f lex.yy.c; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit $?
- fi
- ;;
-
- makeinfo*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
-
- tar*)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case $firstarg in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case $firstarg in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
-exit 0
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'automa4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
+ ;;
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/nanoftp.c b/nanoftp.c
index 9b32d66..2135ab9 100644
--- a/nanoftp.c
+++ b/nanoftp.c
@@ -41,7 +41,7 @@
#include <netdb.h>
#endif
#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
+#include <fcntl.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
@@ -188,7 +188,7 @@ void
xmlNanoFTPInit(void) {
const char *env;
#ifdef _WINSOCKAPI_
- WSADATA wsaData;
+ WSADATA wsaData;
#endif
if (initialized)
@@ -305,15 +305,15 @@ xmlNanoFTPScanURL(void *ctx, const char *URL) {
/*
* Clear any existing data from the context
*/
- if (ctxt->protocol != NULL) {
+ if (ctxt->protocol != NULL) {
xmlFree(ctxt->protocol);
ctxt->protocol = NULL;
}
- if (ctxt->hostname != NULL) {
+ if (ctxt->hostname != NULL) {
xmlFree(ctxt->hostname);
ctxt->hostname = NULL;
}
- if (ctxt->path != NULL) {
+ if (ctxt->path != NULL) {
xmlFree(ctxt->path);
ctxt->path = NULL;
}
@@ -327,7 +327,7 @@ xmlNanoFTPScanURL(void *ctx, const char *URL) {
xmlFreeURI(uri);
return;
}
-
+
ctxt->protocol = xmlMemStrdup(uri->scheme);
ctxt->hostname = xmlMemStrdup(uri->server);
if (uri->path != NULL)
@@ -358,7 +358,7 @@ xmlNanoFTPScanURL(void *ctx, const char *URL) {
* @URL: The URL used to update the context
*
* Update an FTP context by parsing the URL and finding
- * new path it indicates. If there is an error in the
+ * new path it indicates. If there is an error in the
* protocol, hostname, port or other information, the
* error is raised. It indicates a new connection has to
* be established.
@@ -403,7 +403,7 @@ xmlNanoFTPUpdateURL(void *ctx, const char *URL) {
ctxt->path = NULL;
}
- if (uri->path == NULL)
+ if (uri->path == NULL)
ctxt->path = xmlMemStrdup("/");
else
ctxt->path = xmlMemStrdup(uri->path);
@@ -427,7 +427,7 @@ void
xmlNanoFTPScanProxy(const char *URL) {
xmlURIPtr uri;
- if (proxy != NULL) {
+ if (proxy != NULL) {
xmlFree(proxy);
proxy = NULL;
}
@@ -451,7 +451,7 @@ xmlNanoFTPScanProxy(const char *URL) {
xmlFreeURI(uri);
return;
}
-
+
proxy = xmlMemStrdup(uri->server);
if (uri->port != 0)
proxyPort = uri->port;
@@ -523,7 +523,7 @@ xmlNanoFTPFreeCtxt(void * ctx) {
* xmlNanoFTPParseResponse:
* @buf: the buffer containing the response
* @len: the buffer length
- *
+ *
* Parsing of the server answer, we just extract the code.
*
* returns 0 for errors
@@ -535,22 +535,22 @@ xmlNanoFTPParseResponse(char *buf, int len) {
int val = 0;
if (len < 3) return(-1);
- if ((*buf >= '0') && (*buf <= '9'))
+ if ((*buf >= '0') && (*buf <= '9'))
val = val * 10 + (*buf - '0');
else
return(0);
buf++;
- if ((*buf >= '0') && (*buf <= '9'))
+ if ((*buf >= '0') && (*buf <= '9'))
val = val * 10 + (*buf - '0');
else
return(0);
buf++;
- if ((*buf >= '0') && (*buf <= '9'))
+ if ((*buf >= '0') && (*buf <= '9'))
val = val * 10 + (*buf - '0');
else
return(0);
buf++;
- if (*buf == '-')
+ if (*buf == '-')
return(-val);
return(val);
}
@@ -749,7 +749,7 @@ xmlNanoFTPCheckResponse(void *ctx) {
case -1:
__xmlIOErr(XML_FROM_FTP, 0, "select");
return(-1);
-
+
}
return(xmlNanoFTPReadResponse(ctx));
@@ -775,7 +775,7 @@ xmlNanoFTPSendUser(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
return(res);
@@ -803,7 +803,7 @@ xmlNanoFTPSendPasswd(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
return(res);
@@ -834,7 +834,7 @@ xmlNanoFTPQuit(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf); /* Just to be consistent, even though we know it can't have a % in it */
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
return(res);
@@ -908,6 +908,8 @@ xmlNanoFTPConnect(void *ctx) {
return (-1);
}
if (tmp->ai_addrlen > sizeof(ctxt->ftpAddr)) {
+ if (result)
+ freeaddrinfo (result);
__xmlIOErr(XML_FROM_FTP, 0, "gethostbyname address mismatch");
return (-1);
}
@@ -928,9 +930,9 @@ xmlNanoFTPConnect(void *ctx) {
#endif
{
if (proxy)
- hp = gethostbyname (proxy);
+ hp = gethostbyname (GETHOSTBYNAME_ARG_CAST proxy);
else
- hp = gethostbyname (ctxt->hostname);
+ hp = gethostbyname (GETHOSTBYNAME_ARG_CAST ctxt->hostname);
if (hp == NULL) {
__xmlIOErr(XML_FROM_FTP, 0, "gethostbyname failed");
return (-1);
@@ -1028,7 +1030,7 @@ xmlNanoFTPConnect(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->controlFd);
@@ -1050,7 +1052,7 @@ xmlNanoFTPConnect(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->controlFd);
@@ -1091,7 +1093,7 @@ xmlNanoFTPConnect(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
@@ -1103,7 +1105,7 @@ xmlNanoFTPConnect(void *ctx) {
/* we assume it worked :-\ 1 is error for SITE command */
proxyType = 1;
break;
- }
+ }
if (proxyType == 1) {
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
ctxt->controlFd = INVALID_SOCKET;
@@ -1122,7 +1124,7 @@ xmlNanoFTPConnect(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
@@ -1134,7 +1136,7 @@ xmlNanoFTPConnect(void *ctx) {
/* we assume it worked :-\ */
proxyType = 2;
return(0);
- }
+ }
if (ctxt->passwd == NULL)
snprintf(buf, sizeof(buf), "PASS anonymous@\r\n");
else
@@ -1144,7 +1146,7 @@ xmlNanoFTPConnect(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->controlFd); ctxt->controlFd = INVALID_SOCKET;
@@ -1239,12 +1241,18 @@ xmlNanoFTPConnectTo(const char *server, int port) {
int res;
xmlNanoFTPInit();
- if (server == NULL)
+ if (server == NULL)
return(NULL);
if (port <= 0)
return(NULL);
ctxt = (xmlNanoFTPCtxtPtr) xmlNanoFTPNewCtxt(NULL);
+ if (ctxt == NULL)
+ return(NULL);
ctxt->hostname = xmlMemStrdup(server);
+ if (ctxt->hostname == NULL) {
+ xmlNanoFTPFreeCtxt(ctxt);
+ return(NULL);
+ }
if (port != 0)
ctxt->port = port;
res = xmlNanoFTPConnect(ctxt);
@@ -1288,7 +1296,7 @@ xmlNanoFTPCwd(void *ctx, const char *directory) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
return(res);
@@ -1321,8 +1329,8 @@ xmlNanoFTPDele(void *ctx, const char *file) {
int len;
int res;
- if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET) || (file == NULL)) return(-1);
- if (file == NULL) return (0);
+ if ((ctxt == NULL) || (ctxt->controlFd == INVALID_SOCKET) ||
+ (file == NULL)) return(-1);
/*
* Expected response code for DELE:
@@ -1332,14 +1340,14 @@ xmlNanoFTPDele(void *ctx, const char *file) {
* 450, 550
* 500, 501, 502, 421, 530
*/
-
+
snprintf(buf, sizeof(buf), "DELE %s\r\n", file);
buf[sizeof(buf) - 1] = 0;
len = strlen(buf);
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
return(res);
@@ -1411,7 +1419,7 @@ xmlNanoFTPGetConnection(void *ctx) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
@@ -1430,7 +1438,7 @@ xmlNanoFTPGetConnection(void *ctx) {
ctxt->passive = 0;
}
}
- cur = &ctxt->controlBuf[ctxt->controlBufAnswer];
+ cur = &ctxt->controlBuf[ctxt->controlBufAnswer];
while (((*cur < '0') || (*cur > '9')) && *cur != '\0') cur++;
#ifdef SUPPORT_IP6
if ((ctxt->ftpAddr).ss_family == AF_INET6) {
@@ -1512,7 +1520,7 @@ xmlNanoFTPGetConnection(void *ctx) {
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
@@ -1525,7 +1533,7 @@ xmlNanoFTPGetConnection(void *ctx) {
}
}
return(ctxt->dataFd);
-
+
}
/**
@@ -1583,7 +1591,7 @@ xmlNanoFTPCloseConnection(void *ctx) {
* @callback: the user callback
* @userData: the user callback data
*
- * Parse at most one entry from the listing.
+ * Parse at most one entry from the listing.
*
* Returns -1 incase of error, the length of data parsed otherwise
*/
@@ -1620,7 +1628,7 @@ xmlNanoFTPParseList(const char *list, ftpListCallback callback, void *userData)
if (*cur == 0) return(0);
i = 0;
while (*cur != ' ') {
- if (i < 10)
+ if (i < 10)
attrib[i++] = *cur;
cur++;
if (*cur == 0) return(0);
@@ -1634,7 +1642,7 @@ xmlNanoFTPParseList(const char *list, ftpListCallback callback, void *userData)
if (*cur == 0) return(0);
i = 0;
while (*cur != ' ') {
- if (i < 10)
+ if (i < 10)
owner[i++] = *cur;
cur++;
if (*cur == 0) return(0);
@@ -1644,7 +1652,7 @@ xmlNanoFTPParseList(const char *list, ftpListCallback callback, void *userData)
if (*cur == 0) return(0);
i = 0;
while (*cur != ' ') {
- if (i < 10)
+ if (i < 10)
group[i++] = *cur;
cur++;
if (*cur == 0) return(0);
@@ -1749,7 +1757,7 @@ xmlNanoFTPList(void *ctx, ftpListCallback callback, void *userData,
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
@@ -1844,7 +1852,7 @@ xmlNanoFTPGetSocket(void *ctx, const char *filename) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
@@ -1864,7 +1872,7 @@ xmlNanoFTPGetSocket(void *ctx, const char *filename) {
#ifdef DEBUG_FTP
xmlGenericError(xmlGenericErrorContext, "%s", buf);
#endif
- res = send(ctxt->controlFd, buf, len, 0);
+ res = send(ctxt->controlFd, SEND_ARG2_CAST buf, len, 0);
if (res < 0) {
__xmlIOErr(XML_FROM_FTP, 0, "send failed");
closesocket(ctxt->dataFd); ctxt->dataFd = INVALID_SOCKET;
@@ -1986,7 +1994,7 @@ xmlNanoFTPRead(void *ctx, void *dest, int len) {
*
* Start to fetch the given ftp:// resource
*
- * Returns an FTP context, or NULL
+ * Returns an FTP context, or NULL
*/
void*
@@ -2043,9 +2051,9 @@ xmlNanoFTPClose(void *ctx) {
#ifdef STANDALONE
/************************************************************************
- * *
- * Basic test in Standalone mode *
- * *
+ * *
+ * Basic test in Standalone mode *
+ * *
************************************************************************/
static
void ftpList(void *userData, const char *filename, const char* attrib,
@@ -2060,7 +2068,7 @@ void ftpData(void *userData, const char *data, int len) {
if (len <= 0) {
fclose((FILE*)userData);
return;
- }
+ }
fwrite(data, len, 1, (FILE*)userData);
}
@@ -2092,7 +2100,7 @@ int main(int argc, char **argv) {
if (xmlNanoFTPGet(ctxt, ftpData, (void *) output, tstfile) < 0)
xmlGenericError(xmlGenericErrorContext,
"Failed to get file\n");
-
+
}
xmlNanoFTPClose(ctxt);
xmlMemoryDump();
diff --git a/nanohttp.c b/nanohttp.c
index 2437fed..e109ad7 100644
--- a/nanohttp.c
+++ b/nanohttp.c
@@ -10,7 +10,7 @@
*
* daniel@veillard.com
*/
-
+
#define NEED_SOCKETS
#define IN_LIBXML
#include "libxml.h"
@@ -46,7 +46,7 @@
#include <resolv.h>
#endif
#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
+#include <fcntl.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
@@ -213,7 +213,7 @@ void
xmlNanoHTTPInit(void) {
const char *env;
#ifdef _WINSOCKAPI_
- WSADATA wsaData;
+ WSADATA wsaData;
#endif
if (initialized)
@@ -276,22 +276,24 @@ xmlNanoHTTPCleanup(void) {
static void
xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) {
xmlURIPtr uri;
+ int len;
+
/*
* Clear any existing data from the context
*/
- if (ctxt->protocol != NULL) {
+ if (ctxt->protocol != NULL) {
xmlFree(ctxt->protocol);
ctxt->protocol = NULL;
}
- if (ctxt->hostname != NULL) {
+ if (ctxt->hostname != NULL) {
xmlFree(ctxt->hostname);
ctxt->hostname = NULL;
}
- if (ctxt->path != NULL) {
+ if (ctxt->path != NULL) {
xmlFree(ctxt->path);
ctxt->path = NULL;
}
- if (ctxt->query != NULL) {
+ if (ctxt->query != NULL) {
xmlFree(ctxt->query);
ctxt->query = NULL;
}
@@ -305,9 +307,17 @@ xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) {
xmlFreeURI(uri);
return;
}
-
+
ctxt->protocol = xmlMemStrdup(uri->scheme);
- ctxt->hostname = xmlMemStrdup(uri->server);
+ /* special case of IPv6 addresses, the [] need to be removed */
+ if ((uri->server != NULL) && (*uri->server == '[')) {
+ len = strlen(uri->server);
+ if ((len > 2) && (uri->server[len - 1] == ']')) {
+ ctxt->hostname = (char *) xmlCharStrndup(uri->server + 1, len -2);
+ } else
+ ctxt->hostname = xmlMemStrdup(uri->server);
+ } else
+ ctxt->hostname = xmlMemStrdup(uri->server);
if (uri->path != NULL)
ctxt->path = xmlMemStrdup(uri->path);
else
@@ -334,7 +344,7 @@ void
xmlNanoHTTPScanProxy(const char *URL) {
xmlURIPtr uri;
- if (proxy != NULL) {
+ if (proxy != NULL) {
xmlFree(proxy);
proxy = NULL;
}
@@ -358,7 +368,7 @@ xmlNanoHTTPScanProxy(const char *URL) {
xmlFreeURI(uri);
return;
}
-
+
proxy = xmlMemStrdup(uri->server);
if (uri->port != 0)
proxyPort = uri->port;
@@ -451,7 +461,7 @@ xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char *xmt_ptr, int outlen)
if ((ctxt->state & XML_NANO_HTTP_WRITE) && (xmt_ptr != NULL)) {
while (total_sent < outlen) {
- int nsent = send(ctxt->fd, xmt_ptr + total_sent,
+ int nsent = send(ctxt->fd, SEND_ARG2_CAST (xmt_ptr + total_sent),
outlen - total_sent, 0);
if (nsent > 0)
@@ -644,7 +654,7 @@ xmlNanoHTTPReadLine(xmlNanoHTTPCtxtPtr ctxt) {
char buf[4096];
char *bp = buf;
int rc;
-
+
while (bp - buf < 4095) {
if (ctxt->inrptr == ctxt->inptr) {
if ( (rc = xmlNanoHTTPRecv(ctxt)) == 0) {
@@ -781,9 +791,9 @@ xmlNanoHTTPScanAnswer(xmlNanoHTTPCtxtPtr ctxt, const char *line) {
xmlFree(ctxt->location);
if (*cur == '/') {
xmlChar *tmp_http = xmlStrdup(BAD_CAST "http://");
- xmlChar *tmp_loc =
+ xmlChar *tmp_loc =
xmlStrcat(tmp_http, (const xmlChar *) ctxt->hostname);
- ctxt->location =
+ ctxt->location =
(char *) xmlStrcat (tmp_loc, (const xmlChar *) cur);
} else {
ctxt->location = xmlMemStrdup(cur);
@@ -993,6 +1003,7 @@ xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
0) {
/* Solaris error code */
__xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n");
+ closesocket(s);
return INVALID_SOCKET;
}
#endif
@@ -1111,7 +1122,7 @@ xmlNanoHTTPConnectHost(const char *host, int port)
#endif
#if !defined(HAVE_GETADDRINFO) || !defined(_WIN32)
{
- h = gethostbyname (host);
+ h = gethostbyname (GETHOSTBYNAME_ARG_CAST host);
if (h == NULL) {
/*
@@ -1267,7 +1278,7 @@ xmlNanoHTTPRead(void *ctx, void *dest, int len) {
#ifdef HAVE_ZLIB_H
if (ctxt->usesGzip == 1) {
if (ctxt->strm == NULL) return(0);
-
+
ctxt->strm->next_out = dest;
ctxt->strm->avail_out = len;
ctxt->strm->avail_in = ctxt->inptr - ctxt->inrptr;
@@ -1346,23 +1357,23 @@ xmlNanoHTTPMethodRedir(const char *URL, const char *method, const char *input,
#ifdef DEBUG_HTTP
int xmt_bytes;
#endif
-
+
if (URL == NULL) return(NULL);
if (method == NULL) method = "GET";
xmlNanoHTTPInit();
retry:
- if (redirURL == NULL)
+ if (redirURL == NULL) {
ctxt = xmlNanoHTTPNewCtxt(URL);
- else {
+ if (ctxt == NULL)
+ return(NULL);
+ } else {
ctxt = xmlNanoHTTPNewCtxt(redirURL);
+ if (ctxt == NULL)
+ return(NULL);
ctxt->location = xmlMemStrdup(redirURL);
}
- if ( ctxt == NULL ) {
- return ( NULL );
- }
-
if ((ctxt->protocol == NULL) || (strcmp(ctxt->protocol, "http"))) {
__xmlIOErr(XML_FROM_HTTP, XML_HTTP_URL_SYNTAX, "Not a valid HTTP URI");
xmlNanoHTTPFreeCtxt(ctxt);
@@ -1427,13 +1438,13 @@ retry:
if (proxy) {
if (ctxt->port != 80) {
- p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s",
+ p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s",
method, ctxt->hostname,
- ctxt->port, ctxt->path );
+ ctxt->port, ctxt->path );
}
- else
+ else
p += snprintf( p, blen - (p - bp), "%s http://%s%s", method,
- ctxt->hostname, ctxt->path);
+ ctxt->hostname, ctxt->path);
}
else
p += snprintf( p, blen - (p - bp), "%s %s", method, ctxt->path);
@@ -1442,7 +1453,7 @@ retry:
p += snprintf( p, blen - (p - bp), "?%s", ctxt->query);
if (ctxt->port == 80) {
- p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n",
+ p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n",
ctxt->hostname);
} else {
p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s:%d\r\n",
@@ -1453,7 +1464,7 @@ retry:
p += snprintf(p, blen - (p - bp), "Accept-Encoding: gzip\r\n");
#endif
- if (contentType != NULL && *contentType)
+ if (contentType != NULL && *contentType)
p += snprintf(p, blen - (p - bp), "Content-Type: %s\r\n", *contentType);
if (headers != NULL)
@@ -1492,7 +1503,7 @@ retry:
if ( xmt_bytes != ilen )
xmlGenericError( xmlGenericErrorContext,
- "xmlNanoHTTPMethodRedir: Only %d of %d %s %s\n",
+ "xmlNanoHTTPMethodRedir: Only %d of %d %s %s\n",
xmt_bytes, ilen,
"bytes of HTTP content sent to host",
ctxt->hostname );
@@ -1620,7 +1631,7 @@ xmlNanoHTTPFetch(const char *URL, const char *filename, char **contentType) {
ctxt = xmlNanoHTTPOpen(URL, contentType);
if (ctxt == NULL) return(-1);
- if (!strcmp(filename, "-"))
+ if (!strcmp(filename, "-"))
fd = 0;
else {
fd = open(filename, O_CREAT | O_WRONLY, 00644);
@@ -1666,7 +1677,7 @@ xmlNanoHTTPSave(void *ctxt, const char *filename) {
if ((ctxt == NULL) || (filename == NULL)) return(-1);
- if (!strcmp(filename, "-"))
+ if (!strcmp(filename, "-"))
fd = 0;
else {
fd = open(filename, O_CREAT | O_WRONLY, 0666);
@@ -1795,7 +1806,7 @@ xmlNanoHTTPMimeType( void * ctx ) {
* Check if all the content was read
*
* Returns 0 if all the content was read and available, returns
- * -1 if received content length was less than specified or an error
+ * -1 if received content length was less than specified or an error
* occurred.
*/
static int
@@ -1849,7 +1860,7 @@ int main(int argc, char **argv) {
char *contentType = NULL;
if (argv[1] != NULL) {
- if (argv[2] != NULL)
+ if (argv[2] != NULL)
xmlNanoHTTPFetch(argv[1], argv[2], &contentType);
else
xmlNanoHTTPFetch(argv[1], "-", &contentType);
diff --git a/os400/README400 b/os400/README400
new file mode 100644
index 0000000..6c16de9
--- /dev/null
+++ b/os400/README400
@@ -0,0 +1,214 @@
+
+Implementation notes:
+
+ This is a true OS/400 implementation, not a PASE implementation (for PASE,
+use an AIX implementation).
+
+ The biggest problem with OS/400 is EBCDIC. The current libxml2 implementation
+uses UTF-8 internally. To ease encoding conversion between the calling
+applications and libxml2, supplementary "convert and latch" functions are
+provided (See below). To bind the EBCDIC OS/400 system calls and libxml2,
+an ASCII run-time environment (QADRT) has been used and wrapper functions have
+been designed.
+
+Other problems are:
+- Source code line length: to be stored in DB2 members, source files may not
+ have lines longer than 100 characters. Some header and documentation files
+ have been modified accordingly.
+- va_list dereferencing: the OS/400 implementation of va_list type is an array
+ but the compiler forbids explicit array dereferencing. Source files have
+ been updated accordingly.
+- Depending on the compilation/execution environment, it is possible that
+ stdin/stdout/stderr are not associated with a file descriptor; as a side
+ effect, open() may return a file descriptor value 0, 1 or 2 that is NOT
+ a C standard file. Thus using such a number may be inaccurate.
+- iconv_open() arguments: OS/400 uses non-standard encoding names and does not
+ support standard names. For this reason, a name wrapper has been designed.
+- dlopen() (support for xmodule): the function and its corollaries are not
+ provided by the OS/400 library. However a local implementation is provided.
+
+
+Compiling on OS/400:
+
+_ As a prerequisite, QADRT development environment must be installed.
+_ Install the libxml2 source directory in IFS.
+_ Enter shell (QSH)
+_ Change current directory to the libxml2 installation directory
+_ Change current directory to ./os400
+_ Edit file iniscript.sh. You may want to change tunable configuration
+ parameters, like debug info generation, optimisation level, listing option,
+ target library, zlib availability, etc.
+_ Copy any file in the current directory to makelog (i.e.:
+ cp initscript.sh makelog): this is intended to create the makelog file with
+ an ASCII CCSID!
+_ Enter the command "sh make.sh >makelog 2>&1'
+_ Examine the makelog file to check for compilation errors.
+
+ Leaving file initscript.sh unchanged, this will produce the following
+OS/400 objects:
+_ Library LIBXML2. All other objects will be stored in this library.
+_ Modules for all libxml2 units, with full debug info and no code optimization.
+_ Binding directory LIBXML2_A, to be used at calling program link time for
+ statically binding the modules (specify BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)
+ when creating a program using LIBXML2_A).
+_ Service program LIBXML2. To be used at calling program run-time
+ when this program has dynamically bound libxml2 at link time.
+_ Binding directory LIBXML2. To be used to dynamically bind libxml2 when
+ linking a calling program.
+_ Source file LIBXML. It contains all the header members needed to compile a
+ C/C++ module using libxml2.
+_ Standard and additional C/C++ libxml2 header members (possibly renamed) in
+ file LIBXML.
+_ IFS directory /libxml2 with subdirectory include/libxml containing all
+ C/C++ header files for IFS-based compilation.
+_ Source file LIBXMLRPG. It contains all the include members needed to compile a
+ ILE/RPG module/program using libxml2 (ILE/RPG binding).
+_ ILE/RPG binding include members (possibly renamed) in file LIBXMLRPG.
+_ IFS subdirectory /libxml2/include/libxmlrpg containing all ILE/RPG include
+ files for IFS-based compilation.
+
+
+Renamed header files in DB2 members:
+ DB2 member names are limited to 10 characters, thus the following C/C++
+header members are renamed as:
+ parserInternals.h --> PARSERINTE
+ schemasInternals.h --> SCHEMASINT
+ xmlautomata.h --> XMLAUTOMAT
+ xmlschemastype.h --> SCHMTYPES
+ xpathInternals.h --> XPATHINTER
+IFS header files are NOT renamed.
+ILE/RPG headers are processed likewise.
+
+
+Special programming consideration:
+
+QADRT being used, the following points must be considered:
+_ If static binding is used, service program QADRTTS must be linked too.
+_ The EBCDIC CCSID used by QADRT is 37 by default, NOT THE JOB'S CCSID. If
+ another EBCDIC CCSID is required, it must be set via a locale through a call
+ to setlocale_a (QADRT's setlocale() ASCII wrapper) with category LC_ALL or
+ LC_CTYPE, or by setting environment variable QADRT_ENV_LOCALE to the locale
+ object path before executing the program.
+_ Always use *IFSIO or *IFS64IO to compile calling programs.
+
+
+
+Supplementary (non libxml2 standard) support procedures for OS/400.
+
+ As cited above, there are some procedures to ease encoding conversion of
+libxml2 function arguments and results: the mechanism is based on
+dictionaries. The functions convert a string, latch the result in a dictionary
+to ensure its persistence and return its address. It is the caller's
+responsibility to clean the dictionary when it becomes too big or disappears.
+
+The procedures are:
+
+#include <libxml/transcode.h>
+
+const char * xmlTranscodeResult(const xmlChar * s,
+ const char * encoding,
+ xmlDictPtr * dict,
+ void (*freeproc)(const void *));
+
+const xmlChar * xmlTranscodeString(const char * s,
+ const char * encoding,
+ xmlDictPtr * dict);
+
+const xmlChar * xmlTranscodeWString(const char * s,
+ const char * encoding,
+ xmlDictPtr * dict);
+
+const xmlChar * xmlTranscodeWString(const char * s,
+ const char * encoding,
+ xmlDictPtr * dict);
+
+where:
+s is the string to translate.
+encoding is the alternate character encoding. If null, the current job's
+ encoding (CCSID) is used.
+dict is the address of the latching directory. If NULL, the procedure
+ functions as a simple non-latching encoding converter and
+ its result value should be freed by the caller.
+freeproc is a procedure to release the original string, or NULL.
+
+xmlTranscodeResult() converts from UTF-8 to the given alternate encoding.
+xmlTranscodeString() converts from the given 8-bit encoding to UTF-8 (note that
+ UTF-8 itself is considered as a 8-bit encoding).
+xmlTranscodeWString() converts from the given 16-bit encoding to UTF-8.
+xmlTranscodeHString() converts from the given 32-bit encoding to UTF-8.
+
+
+To shorten statements using these functions, shorthands are defined:
+
+xmlTR for xmlTranscodeResult
+xmlTS for xmlTranscodeString
+xmlTW for xmlTranscodeWString
+xmlTH for xmlTranscodeHstring
+
+These shorthands may be disabled by defining XML_NO_SHORT_NAMES before
+libxml/transcode.h inclusion.
+
+A directory pointer must be preset to NULL before the first call using it to
+one of the above procedure.
+
+To release a latching directory, use function
+
+void xmlZapDict(xmlDictPtr * dict);
+
+
+Example:
+
+#include <libxml/transcode.h>
+#include <libxml/tree.h>
+
+xmlDocPtr mySimpleXMLDoc(char * element, char * text)
+{
+ xmlDocPtr doc;
+ xmlNodePtr node;
+ xmlDictPtr dict = NULL;
+
+ /* element and text are encoded in the current job's encoding. */
+
+ doc = xmlNewDoc();
+ xmlNewTextChild((xmlNodePtr) doc, NULL, xmlTS(element, NULL,
+ &dict), xmlTS(text, NULL, &dict));
+ xmlZapDict(&dict);
+ return doc;
+}
+
+
+Additionally, a formatter into latched/dynamic storage is provided:
+
+const char * xmlVasprintf(xmlDictPtr * dict,
+ const char * encoding,
+ const xmlChar * fmt,
+ va_list args);
+
+
+
+ILE/RPG binding:
+
+ All standard types and procedures are provided. Since ILE/RPG does not
+support macros, they have not been ported, with the exceptions of the more
+useful ones and the global/threaded variables access macros. These variables
+can be read with function get_xxx(void), where xxxx is the name of the
+variable; they may be set by calling function set_xxxx(value), where value is
+of the same type as the variable.
+
+ The C va_list is not implemented as such in ILE/RPG. Functions implementing
+va_list and associated methods are provided:
+
+ /include "libxmlrpg/xmlstdarg"
+
+ d xmlVaStart pr
+ d list like(xmlVaList)
+ d lastargaddr * value
+ d lastargsize 10u 0 value
+
+ d xmlVaArg pr
+ d list like(xmlVaList)
+ d dest * value
+ d argsize 10i 0 value
+
+ d xmlVaEnd pr
+ d list like(xmlVaList)
diff --git a/os400/dlfcn/dlfcn.c b/os400/dlfcn/dlfcn.c
new file mode 100644
index 0000000..1488e12
--- /dev/null
+++ b/os400/dlfcn/dlfcn.c
@@ -0,0 +1,1213 @@
+/**
+*** dlopen(), dlclose() dlsym(), dlerror() emulation for OS/400.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <dirent.h>
+#include <pthread.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <except.h> /* AS400 exceptions. */
+#include <miptrnam.h> /* MI pointers support. */
+#include <qusec.h> /* Error structures. */
+#include <qp0lstdi.h> /* Path to QSYS object name. */
+#include <qp0z1170.h> /* For Qp0zInitEnv(). */
+#include <qleawi.h> /* For QleActBndPgmLong() definitions. */
+#include <qsy.h> /* Qualified name structure. */
+#include <qmhrtvm.h> /* Retrieve message from message file. */
+
+#include <mih/rinzstat.h>
+#include <mih/matactex.h>
+
+#include "libxml/hash.h"
+#include "dlfcn.h"
+
+
+/**
+*** Maximum internal path length.
+**/
+
+#define MAXPATHLEN 5120
+
+
+/**
+*** Maximum error string length.
+**/
+
+#define MAX_ERR_STR 511
+
+
+/**
+*** Field address macro.
+**/
+
+#define offset_by(t, b, o) ((t *) ((char *) (b) + (unsigned int) (o)))
+
+
+/**
+*** Global flags.
+**/
+
+#define INITED 000001 /* Package has been initialized. */
+#define THREADS 000002 /* Multithreaded job. */
+#define MULTIBUF 000004 /* One error buffer per thread. */
+
+
+/**
+*** DLL handle private structure.
+**/
+
+typedef struct {
+ Qle_ABP_Info_Long_t actinfo; /* Activation information. */
+ _SYSPTR pointer; /* Pointer to DLL object. */
+ unsigned int actcount; /* Activation count. */
+} dlinfo;
+
+
+/**
+*** Per-thread structure.
+**/
+
+typedef struct {
+ unsigned int lockcount; /* Mutex lock count. */
+ unsigned int iserror; /* Flag error present. */
+ char str[MAX_ERR_STR + 1]; /* Error string buffer. */
+} dlts_t;
+
+
+static pthread_mutex_t dlmutex = PTHREAD_MUTEX_INITIALIZER;
+static xmlHashTablePtr dldir = (xmlHashTablePtr) NULL; /* DLL directory. */
+static unsigned int dlflags = 0; /* Package flags. */
+static pthread_key_t dlkey;
+static dlts_t static_buf; /* Static error buffer. */
+
+
+
+static void
+dlthreadterm(void * mem)
+
+{
+ free(mem);
+ pthread_setspecific(dlkey, NULL);
+}
+
+
+static void
+dlterm(void)
+
+{
+ void * p;
+
+ if (dlflags & MULTIBUF) {
+ p = pthread_getspecific(dlkey);
+
+ if (p)
+ dlthreadterm(p);
+ }
+
+ if (dlflags & THREADS)
+ pthread_mutex_lock(&dlmutex);
+
+ if (dldir) {
+ xmlHashFree(dldir, (xmlHashDeallocator) NULL);
+ dldir = NULL;
+ }
+
+ if (dlflags & MULTIBUF)
+ pthread_key_delete(dlkey);
+
+ dlflags |= ~(INITED | MULTIBUF);
+ pthread_mutex_unlock(&dlmutex);
+ pthread_mutex_destroy(&dlmutex);
+}
+
+
+static void
+dlinit(void)
+
+{
+ int locked;
+
+ /**
+ *** Initialize the package.
+ *** Should be call once per process.
+ **/
+
+ locked = !pthread_mutex_lock(&dlmutex);
+
+ if (!(dlflags & INITED)) {
+ dlflags &= ~THREADS;
+
+ if (locked)
+ dlflags |= THREADS;
+
+ Qp0zInitEnv();
+ dldir = xmlHashCreate(16);
+ dlflags &= ~MULTIBUF;
+
+ if (dlflags & THREADS)
+ if (!pthread_key_create(&dlkey, dlthreadterm))
+ dlflags |= MULTIBUF;
+
+ atexit(dlterm);
+ dlflags |= INITED;
+ }
+
+ if (locked)
+ pthread_mutex_unlock(&dlmutex);
+}
+
+
+static void
+dlthreadinit(void)
+
+{
+ dlts_t * p;
+
+ if (!(dlflags & INITED))
+ dlinit();
+
+ if (dlflags & MULTIBUF) {
+ p = pthread_getspecific(dlkey);
+
+ if (!p) {
+ p = (dlts_t *) malloc(sizeof *p);
+
+ if (p) {
+ p->lockcount = 0;
+ p->iserror = 0;
+
+ if (pthread_setspecific(dlkey, p))
+ free(p);
+ }
+ }
+ }
+}
+
+
+static void
+dllock(void)
+
+{
+ dlts_t * p;
+
+ if (!(dlflags & THREADS))
+ return;
+
+ if (dlflags & MULTIBUF) {
+ p = pthread_getspecific(dlkey);
+
+ if (p && p->lockcount) {
+ p->lockcount++;
+ return;
+ }
+ }
+ else
+ p = (dlts_t *) NULL;
+
+ if (pthread_mutex_lock(&dlmutex))
+ return;
+
+ if (p)
+ p->lockcount++;
+}
+
+
+static void
+dlunlock(void)
+
+{
+ dlts_t * p;
+
+ if (!(dlflags & THREADS))
+ return;
+
+ if (dlflags & MULTIBUF) {
+ p = pthread_getspecific(dlkey);
+
+ if (p && p->lockcount > 1) {
+ p->lockcount--;
+ return;
+ }
+ }
+ else
+ p = (dlts_t *) NULL;
+
+ if (pthread_mutex_unlock(&dlmutex))
+ return;
+
+ if (p)
+ p->lockcount--;
+}
+
+
+const char *
+dlerror(void)
+
+{
+ dlts_t * p;
+
+ dlthreadinit();
+
+ if (!(dlflags & MULTIBUF))
+ p = &static_buf;
+ else if (!(p = (dlts_t *) pthread_getspecific(dlkey)))
+ p = &static_buf;
+
+ if (!p->iserror)
+ return (const char *) NULL;
+
+ p->iserror = 0;
+ return p->str;
+}
+
+
+static void
+dlseterror_from_errno(unsigned int err_no)
+
+{
+ dlts_t * p;
+
+ if (!(dlflags & MULTIBUF))
+ p = &static_buf;
+ else if (!(p = (dlts_t *) pthread_getspecific(dlkey)))
+ p = &static_buf;
+
+ strcpy(p->str, strerror(err_no));
+ p->iserror = 1;
+}
+
+
+static void
+dlseterror_from_exception(volatile _INTRPT_Hndlr_Parms_T * excp)
+
+{
+ int i;
+ Qmh_Rtvm_RTVM0300_t * imp;
+ char * cp;
+ _INTRPT_Hndlr_Parms_T * p;
+ dlts_t * q;
+ char rtvmbuf[30000];
+ Qus_EC_t errinfo;
+
+ p = (_INTRPT_Hndlr_Parms_T *) excp;
+ errinfo.Bytes_Provided = 0; /* Exception on error. */
+ QMHRTVM(rtvmbuf, sizeof rtvmbuf, "RTVM0300", p->Msg_Id,
+ "QCPFMSG QSYS ", p->Ex_Data, p->Msg_Data_Len,
+ "*YES ", "*NO ", &errinfo);
+ imp = offset_by(Qmh_Rtvm_RTVM0300_t, rtvmbuf, 0);
+
+ if (!(dlflags & MULTIBUF))
+ q = &static_buf;
+ else if (!(q = (dlts_t *) pthread_getspecific(dlkey)))
+ q = &static_buf;
+
+ if (i = imp->Length_Message_Returned)
+ cp = offset_by(char, imp, imp->Offset_Message_Returned);
+ else if (i = imp->Length_Help_Returned)
+ cp = offset_by(char, imp, imp->Offset_Help_Returned);
+ else {
+ q->iserror = 0;
+ return;
+ }
+
+ q->iserror = 1;
+
+ if (i > sizeof q->str - 1)
+ i = sizeof q->str - 1;
+
+ memcpy(q->str, cp, i);
+ q->str[i] = '\0';
+}
+
+
+static int
+dlparentpath(const char * path, size_t len)
+
+{
+ if (len <= 1)
+ return len;
+
+ while (path[--len] != '/')
+ ;
+
+ return len? len: 1;
+}
+
+
+static int
+dlmakepath(char * path, size_t pathlen, const char * tail, size_t taillen)
+
+{
+ int i;
+
+ if (taillen && tail[0] == '/')
+ pathlen = 0;
+
+ for (;;) {
+ while (taillen && *tail == '/') {
+ tail++;
+ taillen--;
+ }
+
+ if (!taillen)
+ break;
+
+ for (i = 0; i < taillen; i++)
+ if (tail[i] == '/')
+ break;
+
+ if (*tail == '.')
+ switch (i) {
+
+ case 2:
+ if (tail[1] != '.')
+ break;
+
+ pathlen = dlparentpath(path, pathlen);
+
+ case 1:
+ tail += i;
+ taillen -= i;
+ continue;
+ }
+
+ if (pathlen + i + 1 >= MAXPATHLEN) {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+
+ path[pathlen++] = '/';
+ memcpy(path + pathlen, tail, i);
+ pathlen += i;
+ }
+
+ if (!pathlen)
+ path[pathlen++] = '/';
+
+ path[pathlen] = '\0';
+ return pathlen;
+}
+
+
+static int
+dlresolveLink(const char * path, char * buf, size_t bufsiz)
+
+{
+ int n;
+ int l1;
+ int l2;
+ struct stat sbuf;
+ char buf1[MAXPATHLEN + 1];
+ char buf2[MAXPATHLEN + 1];
+
+ /**
+ *** Resolve symbolic link to IFS object name.
+ **/
+
+ if (!buf) {
+ errno = EFAULT;
+ return -1;
+ }
+
+ if (!path || !*path || !bufsiz) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (*path != '/') {
+ if (!getcwd(buf1, sizeof buf1))
+ return -1;
+
+ l1 = strlen(buf1);
+ }
+ else
+ l1 = 0;
+
+ l1 = dlmakepath(buf1, l1, path, strlen(path));
+ n = 0;
+
+ for (;;) {
+ if (l1 < 0)
+ return -1;
+
+ if (n++ >= 256) {
+ errno = ELOOP;
+ return -1;
+ }
+
+ if (lstat(buf1, &sbuf)) {
+ if (errno == ENOENT)
+ break;
+
+ return -1;
+ }
+
+ if (!S_ISLNK(sbuf.st_mode))
+ break;
+
+ if (sbuf.st_size > MAXPATHLEN) {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+
+ l2 = readlink(buf1, buf2, MAXPATHLEN + 1);
+
+ if (l2 < 0)
+ return -1;
+
+ if (buf2[0] != '/')
+ l1 = dlparentpath(buf1, l1);
+
+ l1 = dlmakepath(buf1, l1, buf2, l2);
+ }
+
+ if (l1 >= bufsiz) {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+
+ memcpy(buf, buf1, l1 + 1);
+ return l1;
+}
+
+
+static int
+dlGetObjectName(Qp0l_QSYS_Info_t * qsysinfo, const char * dir,
+ int dirlen, const char * link)
+
+{
+ int n;
+ char * namebuf;
+ Qlg_Path_Name_T * qptp;
+ char pathbuf[sizeof(Qlg_Path_Name_T) + _QP0L_DIR_NAME_LG + 4];
+ Qus_EC_t errinfo;
+ struct stat sbuf;
+
+ /**
+ *** Get QSYS object library/name/member and type corresponding to
+ *** the symbolic `link' in directory `dir'.
+ **/
+
+ if (!qsysinfo) {
+ errno = EFAULT;
+ return -1;
+ }
+
+ if (!dir && !link) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ qptp = (Qlg_Path_Name_T *) pathbuf;
+ namebuf = pathbuf + sizeof(Qlg_Path_Name_T);
+ n = 0;
+
+ /**
+ *** Build full path.
+ **/
+
+ if (dir) {
+ if (dirlen < 0 || dirlen > _QP0L_DIR_NAME_LG + 4)
+ dirlen = _QP0L_DIR_NAME_LG + 4;
+
+ while (*dir && n < dirlen)
+ namebuf[n++] = *dir++;
+ }
+
+ if (n && namebuf[n - 1] == '/')
+ n--;
+
+ if (link) {
+ if (*link && *link != '/' && n < _QP0L_DIR_NAME_LG + 4)
+ namebuf[n++] = '/';
+
+ while (*link && n < _QP0L_DIR_NAME_LG + 4)
+ namebuf[n++] = *link++;
+ }
+
+ if (!n || n > _QP0L_DIR_NAME_LG) {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+
+ namebuf[n] = '\0';
+ n = dlresolveLink(namebuf, namebuf, _QP0L_DIR_NAME_LG + 1);
+
+ if (n == -1)
+ return -1;
+
+ if (stat(namebuf, &sbuf))
+ return -1;
+
+ memset((char *) qptp, 0, sizeof *qptp);
+ qptp->Path_Length = n;
+ qptp->Path_Name_Delimiter[0] = '/';
+ errinfo.Bytes_Provided = sizeof errinfo;
+ Qp0lCvtPathToQSYSObjName(qptp, qsysinfo, "QSYS0100", sizeof *qsysinfo,
+ 0, &errinfo);
+ return errinfo.Bytes_Available? -1: 0;
+}
+
+
+static const char *
+getcomponent(char * dst, const char * src)
+
+{
+ int i;
+
+ /**
+ *** Get a path component of at most 10 characters and
+ *** map it to upper case.
+ *** Return the address of the next delimiter in source.
+ **/
+
+ for (i = 0;; src++) {
+ if (!*src || *src == ' ' || *src == '/') {
+ *dst = '\0';
+ return src;
+ }
+
+ if (i < 10) {
+ *dst++ = toupper(*src);
+ i++;
+ }
+ }
+}
+
+
+static int
+dlpath2QSYS(Qp0l_QSYS_Info_t * qsysinfo, const char * path, const char * dftlib)
+
+{
+ unsigned int flags;
+ char * cp;
+
+ /**
+ *** Convert the given path to a QSYS object name.
+ *** Syntax rules for paths are:
+ ***
+ *** '/'+ [ <library> [ '/'+ <file> [ '/'+ <member> ] ] '/'* ]
+ *** <library> '/'+ <file> [ '/'+ <member> ] '/'*
+ *** <file> '/'*
+ ***
+ *** If default library is not given, *LIBL is assumed.
+ *** Components may no contain spaces. They are translated to
+ *** uppercase. Only the first 10 characters are significant.
+ *** There is no check for the validity of the given components and
+ *** for the object existence.
+ *** Component types are not in the path, but generated internally.
+ *** CCSID is not processed.
+ ***
+ *** Return 0 upon success, else -1.
+ **/
+
+ if (!qsysinfo || !path) {
+ errno = EFAULT;
+ return -1;
+ }
+
+ /**
+ *** Strip leading spaces.
+ **/
+
+ while (*path == ' ')
+ path++;
+
+ /**
+ *** Check for null path.
+ **/
+
+ if (!*path) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /**
+ *** Preset the result structure.
+ **/
+
+ memset((char *) qsysinfo, 0, sizeof *qsysinfo);
+
+ /**
+ *** Determine the format.
+ **/
+
+ if (*path == '/') {
+ /**
+ *** Library component present.
+ **/
+
+ while (*++path == '/')
+ ;
+
+ if (!*path || *path == ' ')
+ strcpy(qsysinfo->Lib_Name, "QSYS");
+ else
+ path = getcomponent(qsysinfo->Lib_Name, path);
+
+ /**
+ *** Check for file component and get it.
+ **/
+
+ if (*path == '/') {
+ while (*++path == '/')
+ ;
+
+ if (*path && *path != ' ')
+ path = getcomponent(qsysinfo->Obj_Name, path);
+ }
+ }
+ else {
+ /**
+ *** The mandatory component is the <file>.
+ **/
+
+ path = getcomponent(qsysinfo->Obj_Name, path);
+
+ while (*path == '/')
+ path++;
+
+ /**
+ *** If there is a second component, move the first to
+ *** the library name and parse the file name.
+ **/
+
+ if (*path && *path != ' ') {
+ strcpy(qsysinfo->Lib_Name, qsysinfo->Obj_Name);
+ memset(qsysinfo->Obj_Name, 0,
+ sizeof qsysinfo->Obj_Name);
+ path = getcomponent(qsysinfo->Obj_Name, path);
+ }
+ else
+ strcpy(qsysinfo->Lib_Name, dftlib? dftlib: "*LIBL");
+ }
+
+ /**
+ *** Check and set-up member.
+ **/
+
+ while (*path == '/')
+ path++;
+
+ if (*path && *path != ' ') {
+ path = getcomponent(qsysinfo->Mbr_Name, path);
+ strcpy(qsysinfo->Mbr_Type, "*MBR");
+
+ while (*path == '/')
+ path++;
+ }
+
+ strcpy(qsysinfo->Lib_Type, "*LIB");
+
+ if (qsysinfo->Obj_Name[0])
+ strcpy(qsysinfo->Obj_Type, "*FILE");
+
+ qsysinfo->Bytes_Returned = sizeof *qsysinfo;
+ qsysinfo->Bytes_Available = sizeof *qsysinfo;
+
+ /**
+ *** Strip trailing spaces.
+ **/
+
+ while (*path == ' ')
+ path++;
+
+ if (*path) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ return 0;
+}
+
+
+static int
+dl_ifs_link(Qp0l_QSYS_Info_t * qsysinfo, const char * pathname)
+
+{
+ /**
+ *** If `pathname' is a link found in IFS, set `qsysinfo' to its
+ *** DB2 name.
+ *** Return 0 if OK, else -1.
+ **/
+
+ return dlGetObjectName(qsysinfo, (const char *) NULL, 0, pathname);
+}
+
+
+static int
+dl_path_link(Qp0l_QSYS_Info_t * qsysinfo, const char * pathvar,
+ const char * filename, int (* testproc)(const Qp0l_QSYS_Info_t *))
+
+{
+ const char * p;
+ const char * q;
+ unsigned int i;
+ const char * path;
+
+ /**
+ *** If `filename' is not a path and is a link found in one of the
+ *** colon-separated paths in environment variable `pathvar',
+ *** set `qsysinfo' to its DB2 name.
+ *** Return 0 if OK, else -1.
+ **/
+
+ i = _QP0L_DIR_NAME_LG;
+
+ for (p = filename; *p; p++)
+ if (*p == '/' || !--i)
+ return -1; /* Too long or a path. */
+
+ /**
+ *** Make sure we have the LD_LIBRARY_PATH environment
+ *** variable value.
+ **/
+
+ path = getenv(pathvar);
+
+ if (!path)
+ return -1; /* No path list. */
+
+ /**
+ *** Try in each path listed.
+ **/
+
+ q = path;
+
+ if (!*q)
+ return -1; /* No path list. */
+
+ for (;;) {
+ for (p = q; *p && *p != ':'; p++)
+ ;
+
+ if (p > q) /* Ignore null path. */
+ if (!dlGetObjectName(qsysinfo, q, p - q, filename))
+ if (!testproc || (*testproc)(qsysinfo))
+ return 0; /* Found: return. */
+
+ if (!*p)
+ break;
+
+ q = p + 1;
+ }
+
+ errno = ENOENT;
+ return -1;
+}
+
+
+static int
+dl_DB2_path(Qp0l_QSYS_Info_t * qsysinfo, const char * pathname)
+
+{
+ if (dlpath2QSYS(qsysinfo, pathname, (const char *) NULL))
+ return -1;
+
+ if (qsysinfo->Mbr_Type[0])
+ return -1; /* Service program may not have members. */
+
+ if (!qsysinfo->Obj_Type[0])
+ return -1; /* Object must be specified. */
+
+ strcpy(qsysinfo->Obj_Type, "*SRVPGM"); /* Set our object type. */
+ return 0;
+}
+
+
+static int
+dl_DB2_name(char * dst, const char * name)
+
+{
+ int i;
+
+ for (i = 0; i < 10; i++) {
+ switch (*name) {
+
+ default:
+ if (!islower(*name))
+ break;
+
+ case '\0':
+ case '/':
+ case ' ':
+ return -1;
+ }
+
+ *dst++ = *name++;
+ }
+
+ if (!i)
+ return -1;
+
+ *dst = '\0';
+ return 0;
+}
+
+
+static int
+dl_qualified_object(Qp0l_QSYS_Info_t * qsysinfo, const char * pathname)
+
+{
+ memset((char *) qsysinfo, 0, sizeof *qsysinfo);
+
+ if (dl_DB2_name(qsysinfo->Obj_Name, pathname) ||
+ dl_DB2_name(qsysinfo->Lib_Name, pathname + 10))
+ return -1;
+
+ strcpy(qsysinfo->Lib_Type, "*LIB");
+ strcpy(qsysinfo->Obj_Type, "*SRVPGM");
+ return 0;
+}
+
+
+static int
+dl_lib_object(Qp0l_QSYS_Info_t * qsysinfo,
+ const char * libname, const char * pathname)
+
+{
+ int i;
+ char * cp;
+
+ strcpy(qsysinfo->Lib_Name, libname);
+ strcpy(qsysinfo->Lib_Type, "*LIB");
+ strcpy(qsysinfo->Obj_Type, "*SRVPGM");
+ cp = qsysinfo->Obj_Name;
+
+ while (*pathname == ' ')
+ pathname++;
+
+ for (i = 0;; pathname++) {
+ switch (*pathname) {
+
+ case '\0':
+ case ' ':
+ break;
+
+ case '/':
+ return -1;
+
+ default:
+ if (i < 10)
+ *cp++ = toupper(*pathname);
+
+ i++;
+ continue;
+ }
+
+ break;
+ }
+
+ while (*pathname == ' ')
+ pathname++;
+
+ if (!i || *pathname)
+ return -1;
+
+ *cp = '\0';
+ return 0;
+}
+
+
+static int
+dl_is_srvpgm(const Qp0l_QSYS_Info_t * qsysinfo)
+
+{
+ struct stat sbuf;
+ char namebuf[100];
+
+ if (!qsysinfo->Lib_Name[0] || strcmp(qsysinfo->Lib_Type, "*LIB") ||
+ !qsysinfo->Obj_Name[0] || strcmp(qsysinfo->Obj_Type, "*SRVPGM") ||
+ qsysinfo->Mbr_Name[0] || qsysinfo->Mbr_Type[0])
+ return 0;
+
+ /**
+ *** Build the IFS path name for the DB2 object.
+ **/
+
+ sprintf(namebuf, "%s/%s.LIB/%s.SRVPGM",
+ strcmp(qsysinfo->Lib_Name, "QSYS")? "/QSYS.LIB": "",
+ qsysinfo->Lib_Name, qsysinfo->Obj_Name);
+
+ return stat(namebuf, &sbuf) == 0;
+}
+
+
+static int
+dlreinit(dlinfo * dlip)
+
+{
+ RINZ_TEMPL_T t;
+ RINZ_TEMPL_T * p;
+ volatile _INTRPT_Hndlr_Parms_T excbuf;
+
+ if (dlip->actinfo.Flags & QLE_ABP_WAS_ACTIVE)
+ return 0;
+
+ /**
+ *** Attempt to reinitialize the service program that was loaded.
+ *** The service program must be created to allow re-initialization:
+ *** ALWRINZ(*YES) for this to work. The default is
+ *** ALWRINZ(*NO).
+ **/
+
+#pragma exception_handler(err, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG)
+ p = &t;
+ t.rinz_pgm = dlip->pointer;
+ t.rinz_agpmk = dlip->actinfo.Act_Grp_Mark;
+ _RINZSTAT(p);
+#pragma disable_handler
+
+ return 0;
+
+err:
+ if (!memcmp((char *) excbuf.Msg_Id, "MCH4421", 7))
+ return 0; /* Program cannot be reinitialized. */
+
+ dlseterror_from_exception(&excbuf);
+ return -1;
+}
+
+
+void *
+dlsym(void * handle, const char * symbol)
+
+{
+ dlinfo * dlip;
+ void * p;
+ int export_type;
+ Qus_EC_t errinfo;
+ volatile _INTRPT_Hndlr_Parms_T excbuf;
+ static int zero = 0;
+
+ dlthreadinit();
+
+ if (!handle || !symbol) {
+ dlseterror_from_errno(EFAULT);
+ return (void *) NULL;
+ }
+
+ dlip = (dlinfo *) handle;
+
+#pragma exception_handler(error, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG)
+ errinfo.Bytes_Provided = 0;
+ QleGetExpLong(&dlip->actinfo.Act_Mark, &zero, &zero,
+ (char *) symbol, &p, &export_type, &errinfo);
+ return p;
+#pragma disable_handler
+
+error:
+ dlseterror_from_exception(&excbuf);
+ return (void *) NULL;
+}
+
+
+int
+dlclose(void * handle)
+
+{
+ dlinfo * dlip;
+ void (* _fini)(void);
+
+ dlthreadinit();
+
+ if (!handle) {
+ dlseterror_from_errno(EFAULT);
+ return -1;
+ }
+
+ dlip = (dlinfo *) handle;
+
+ if (dlip->actcount) {
+ if (--(dlip->actcount))
+ return 0;
+
+ if (_fini = dlsym(handle, "_fini"))
+ (*_fini)();
+ }
+
+ return dlreinit(dlip);
+}
+
+
+static void *
+dlopenqsys(const Qp0l_QSYS_Info_t * dllinfo)
+
+{
+ dlinfo * dlip;
+ dlinfo * dlip2;
+ void (* _init)(void);
+ unsigned int i;
+ _SYSPTR pgmptr;
+ unsigned long long actmark;
+ Qus_EC_t errinfo;
+ char actmarkstr[2 * sizeof actmark + 1];
+ static int actinfo_size = sizeof dlip->actinfo;
+ volatile _INTRPT_Hndlr_Parms_T excbuf;
+
+ /**
+ *** Capture any type of error and if any occurs,
+ *** return not found.
+ **/
+
+#pragma exception_handler(error1, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG)
+ pgmptr = rslvsp(WLI_SRVPGM, (char *) dllinfo->Obj_Name,
+ (char *) dllinfo->Lib_Name ,_AUTH_NONE);
+
+ if (!pgmptr) {
+ errno = ENOENT;
+ return (void *) NULL;
+ }
+
+ /**
+ *** Create a new DLL info block.
+ **/
+
+ dlip = (dlinfo *) malloc(sizeof *dlip);
+
+ if (!dlip)
+ return (void *) NULL; /* Cannot create block. */
+#pragma disable_handler
+
+ dllock();
+
+#pragma exception_handler(error2, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG)
+ memset((char *) dlip, 0, sizeof *dlip);
+ dlip->pointer = pgmptr;
+
+ /**
+ *** Activate the DLL.
+ **/
+
+ errinfo.Bytes_Provided = 0;
+ QleActBndPgmLong(&pgmptr, &actmark,
+ &dlip->actinfo, &actinfo_size, &errinfo);
+ dlip->actinfo.Act_Mark = actmark;
+
+ /**
+ *** Dummy string encoding activation mark to use as hash table key.
+ **/
+
+ for (i = 0; actmark; actmark >>= 6)
+ actmarkstr[i++] = 0x40 + (actmark & 0x3F);
+
+ actmarkstr[i] = '\0';
+
+ /**
+ *** Check if already activated.
+ **/
+
+ dlip2 = (dlinfo *) xmlHashLookup(dldir, actmarkstr);
+
+ if (dlip2) {
+ free((char *) dlip);
+ dlip = dlip2;
+ }
+ else if (xmlHashAddEntry(dldir, (const xmlChar *) actmarkstr, dlip)) {
+ dlreinit(dlip);
+ free((char *) dlip);
+ dlunlock();
+ return (void *) NULL;
+ }
+#pragma disable_handler
+
+#pragma exception_handler(error2, excbuf, 0, _C2_MH_ESCAPE, _CTLA_HANDLE_NO_MSG)
+
+ /**
+ *** Bump activation counter.
+ **/
+
+ if (!(dlip->actcount++) && (_init = dlsym(dlip, "_init")))
+ (*_init)();
+
+ dlunlock();
+
+ /**
+ *** Return the handle.
+ **/
+
+ return (void *) dlip;
+#pragma disable_handler
+
+error2:
+ free((char *) dlip);
+ dlunlock();
+
+error1:
+ dlseterror_from_exception(&excbuf);
+ return (void *) NULL;
+}
+
+
+void *
+dlopen(const char * filename, int flag)
+
+{
+ void * dlhandle;
+ int sverrno;
+ Qp0l_QSYS_Info_t dllinfo;
+
+ sverrno = errno;
+ errno = 0;
+
+ dlthreadinit();
+
+ if (!filename) {
+ dlseterror_from_errno(EFAULT);
+ errno = sverrno;
+ return NULL;
+ }
+
+ /**
+ *** Try to locate the object in the following order:
+ *** _ `filename' is an IFS path.
+ *** _ `filename' is not a path and resides in one of
+ *** LD_LIBRARY_PATH colon-separated paths.
+ *** _ `filename' is not a path and resides in one of
+ *** PATH colon-separated paths.
+ *** _ `filename' is a DB2 path (as /library/object).
+ *** _ `filename' is a qualified object name.
+ *** _ `filename' is an object in *CURLIB.
+ *** _ `filename' is an object in *LIBL.
+ **/
+
+ if (!dl_ifs_link(&dllinfo, filename) && dl_is_srvpgm(&dllinfo))
+ dlhandle = dlopenqsys(&dllinfo);
+ else if (!dl_path_link(&dllinfo,
+ "LD_LIBRARY_PATH", filename, dl_is_srvpgm))
+ dlhandle = dlopenqsys(&dllinfo);
+ else if (!dl_path_link(&dllinfo, "PATH", filename, dl_is_srvpgm))
+ dlhandle = dlopenqsys(&dllinfo);
+ else if (!dl_DB2_path(&dllinfo, filename) && dl_is_srvpgm(&dllinfo))
+ dlhandle = dlopenqsys(&dllinfo);
+ else if (!dl_qualified_object(&dllinfo, filename) &&
+ dl_is_srvpgm(&dllinfo))
+ dlhandle = dlopenqsys(&dllinfo);
+ else if (!dl_lib_object(&dllinfo, "*CURLIB", filename) &&
+ dl_is_srvpgm(&dllinfo))
+ dlhandle = dlopenqsys(&dllinfo);
+ else if (!dl_lib_object(&dllinfo, "*LIBL", filename) &&
+ dl_is_srvpgm(&dllinfo))
+ dlhandle = dlopenqsys(&dllinfo);
+ else
+ dlhandle = NULL;
+
+ if (!dlhandle && errno)
+ dlseterror_from_errno(errno);
+
+ errno = sverrno;
+ return dlhandle;
+}
diff --git a/os400/dlfcn/dlfcn.h b/os400/dlfcn/dlfcn.h
new file mode 100644
index 0000000..0cf691e
--- /dev/null
+++ b/os400/dlfcn/dlfcn.h
@@ -0,0 +1,32 @@
+/**
+*** dlopen(), dlclose() dlsym(), dlerror() emulation for OS/400.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#ifndef _DLFCN_H_
+#define _DLFCN_H_
+
+
+/**
+*** Flags for dlopen().
+*** Ignored for OS400.
+**/
+
+#define RTLD_LAZY 000
+#define RTLD_NOW 001
+#define RTLD_GLOBAL 010
+
+
+/**
+*** Prototypes.
+**/
+
+extern void * dlopen(const char * filename, int flag);
+extern void * dlsym(void * handle, const char * symbol);
+extern const char * dlerror(void);
+extern int dlclose(void * handle);
+
+#endif
diff --git a/os400/iconv/README.iconv b/os400/iconv/README.iconv
new file mode 100644
index 0000000..4950d59
--- /dev/null
+++ b/os400/iconv/README.iconv
@@ -0,0 +1,47 @@
+IBM OS/400 implements iconv in an odd way:
+- Type iconv_t is a structure: therefore objects of this type cannot be
+ compared to (iconv_t) -1.
+- Supported character sets names are all of the form IBMCCSIDccsid..., where
+ ccsid is a decimal 5-digit integer identifying an IBM coded character set.
+ In addition, character set names have to be given in EBCDIC.
+ Standard character set names like "UTF-8" are NOT recognized.
+- The prototype of iconv_open() does not declare parameters as const, although
+ they are not altered.
+
+ Since libiconv does not support EBCDIC, use of this package here as a
+replacement is not a solution.
+
+ For these reasons, the code in this directory implements a wrapper to the
+OS/400 iconv implementation. The wrapper performs the following transformations:
+- Type iconv_t is an pointer. Although OS/400 pointers are odd, comparing
+ with (iconv_t) -1 is OK.
+- All IANA character set names are recognized in a coding- and case-insensitive
+ way, providing an equivalent CCSID exists. see
+ http://www.iana.org/assignments/character-sets/character-sets.xhtml
+- All CCSIDs from the association file can be expressed as IBMCCSIDxxxxx where
+ xxxxx is the 5 digit CCSID; no null terminator is required. Alternate codes
+ are of the form ibm-xxx (null-terminated), where xxx is the integer CCSID with
+ leading zeroes stripped.
+- If a IANA BIBenum is defined for a CCSID, the name iana-xxx can be used,
+ where xxx is the integer MIBenum without leading zeroes.
+- In addition, some aliases are also taken from the association file. Examples
+ are: ASCII, EBCDIC, UTF8.
+- Prototype of iconv_open() has const parameters.
+- Character code names can be given in any code.
+
+Character set names to CCSID conversion.
+- http://www.iana.org/assignments/character-sets/character-sets.xhtml provides
+ all IANA registered character set names and aliases associated with a
+ MIBenum, that is a unique character set identifier.
+- A hand-maintained file ccsid_mibenum.xml associates IBM CCSIDs to
+ IANA MBenums.
+- An OS/400 C program (in subdirectory bldcsndfa) generates a deterministic
+ finite automaton from the files mentioned above into a C file for all
+ possible character set name and associating each of them with its
+ corresponding CCSID. This program can only be run on OS/400 since it uses
+ the native iconv support for EBCDIC.
+- Since these operations are tedious and the table generation needs bootstraping
+ with libxml2, the generated automaton is stored within sources and need not
+ be rebuilt at each compilation. However, source is provided here to allow
+ new table generation with conversion tables that were not available at the
+ time of original generation.
diff --git a/os400/iconv/bldcsndfa/bldcsndfa.c b/os400/iconv/bldcsndfa/bldcsndfa.c
new file mode 100644
index 0000000..48afd54
--- /dev/null
+++ b/os400/iconv/bldcsndfa/bldcsndfa.c
@@ -0,0 +1,1953 @@
+/**
+*** Build a deterministic finite automaton to associate CCSIDs with
+*** character set names.
+***
+*** Compile on OS/400 with options SYSIFCOPT(*IFSIO).
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <ctype.h>
+
+#include <iconv.h>
+
+
+#ifdef OLDXML
+#include "xml.h"
+#else
+#include <libxml/hash.h>
+#include <libxml/parser.h>
+#include <libxml/xpath.h>
+#include <libxml/xpathInternals.h>
+#endif
+
+
+#ifdef __OS400__
+#define iconv_open_error(cd) ((cd).return_value == -1)
+#define set_iconv_open_error(cd) ((cd).return_value = -1)
+#else
+#define iconv_open_error(cd) ((cd) == (iconv_t) -1)
+#define set_iconv_open_error(cd) ((cd) = (iconv_t) -1)
+#endif
+
+
+#define C_SOURCE_CCSID 500
+#define C_UTF8_CCSID 1208
+
+
+#define UTF8_SPACE 0x20
+#define UTF8_HT 0x09
+#define UTF8_0 0x30
+#define UTF8_9 0x39
+#define UTF8_A 0x41
+#define UTF8_Z 0x5A
+#define UTF8_a 0x61
+#define UTF8_z 0x7A
+
+
+#define GRANULE 128 /* Memory allocation granule. */
+
+#define EPSILON 0x100 /* Token for empty transition. */
+
+
+#ifndef OFFSETOF
+#define OFFSETOF(t, f) ((unsigned int) ((char *) &((t *) 0)->f - (char *) 0))
+#endif
+
+#ifndef OFFSETBY
+#define OFFSETBY(t, p, o) ((t *) ((char *) (p) + (unsigned int) (o)))
+#endif
+
+
+typedef struct t_transition t_transition; /* NFA/DFA transition. */
+typedef struct t_state t_state; /* NFA/DFA state node. */
+typedef struct t_symlist t_symlist; /* Symbol (i.e.: name) list. */
+typedef struct t_chset t_chset; /* Character set. */
+typedef struct t_stategroup t_stategroup; /* Optimization group. */
+typedef unsigned char utf8char; /* UTF-8 character byte. */
+typedef unsigned char byte; /* Untyped data byte. */
+
+
+typedef struct { /* Set of pointers. */
+ unsigned int p_size; /* Current allocated size. */
+ unsigned int p_card; /* Current element count. */
+ void * p_set[1]; /* Element array. */
+} t_powerset;
+
+
+struct t_transition {
+ t_transition * t_forwprev; /* Head of forward transition list. */
+ t_transition * t_forwnext; /* Tail of forward transition list. */
+ t_transition * t_backprev; /* Head of backward transition list. */
+ t_transition * t_backnext; /* Tail of backward transition list. */
+ t_state * t_from; /* Incoming state. */
+ t_state * t_to; /* Destination state. */
+ unsigned short t_token; /* Transition token. */
+ unsigned int t_index; /* Transition array index. */
+};
+
+
+struct t_state {
+ t_state * s_next; /* Next state (for DFA construction). */
+ t_state * s_stack; /* Unprocessed DFA states stack. */
+ t_transition * s_forward; /* Forward transitions. */
+ t_transition * s_backward; /* Backward transitions. */
+ t_chset * s_final; /* Recognized character set. */
+ t_powerset * s_nfastates; /* Corresponding NFA states. */
+ unsigned int s_index; /* State index. */
+};
+
+
+struct t_symlist {
+ t_symlist * l_next; /* Next name in list. */
+ utf8char l_symbol[1]; /* Name bytes. */
+};
+
+
+struct t_chset {
+ t_chset * c_next; /* Next character set. */
+ t_symlist * c_names; /* Character set name list. */
+ iconv_t c_fromUTF8; /* Conversion from UTF-8. */
+ unsigned int c_ccsid; /* IBM character set code. */
+ unsigned int c_mibenum; /* IANA character code. */
+};
+
+
+struct t_stategroup {
+ t_stategroup * g_next; /* Next group. */
+ t_state * g_member; /* Group member (s_stack) list. */
+ unsigned int g_id; /* Group ident. */
+};
+
+
+
+t_chset * chset_list; /* Character set list. */
+t_state * initial_state; /* Initial NFA state. */
+iconv_t job2utf8; /* Job CCSID to UTF-8 conversion. */
+iconv_t utf82job; /* UTF-8 to job CCSID conversion. */
+t_state * dfa_states; /* List of DFA states. */
+unsigned int groupid; /* Group ident counter. */
+
+
+/**
+*** UTF-8 strings.
+**/
+
+#pragma convert(819)
+
+static const utf8char utf8_MIBenum[] = "MIBenum";
+static const utf8char utf8_mibenum[] = "mibenum";
+static const utf8char utf8_ibm_[] = "ibm-";
+static const utf8char utf8_IBMCCSID[] = "IBMCCSID";
+static const utf8char utf8_iana_[] = "iana-";
+static const utf8char utf8_Name[] = "Name";
+static const utf8char utf8_Pref_MIME_Name[] = "Preferred MIME Name";
+static const utf8char utf8_Aliases[] = "Aliases";
+static const utf8char utf8_html[] = "html";
+static const utf8char utf8_htmluri[] = "http://www.w3.org/1999/xhtml";
+static const utf8char utf8_A[] = "A";
+static const utf8char utf8_C[] = "C";
+static const utf8char utf8_M[] = "M";
+static const utf8char utf8_N[] = "N";
+static const utf8char utf8_P[] = "P";
+static const utf8char utf8_T[] = "T";
+static const utf8char utf8_ccsid[] = "ccsid";
+static const utf8char utf8_EBCDIC[] = "EBCDIC";
+static const utf8char utf8_ASCII[] = "ASCII";
+static const utf8char utf8_assocnodes[] = "/ccsid_mibenum/assoc[@ccsid]";
+static const utf8char utf8_aliastext[] =
+ "/ccsid_mibenum/assoc[@ccsid=$C]/alias/text()";
+#ifdef OLDXML
+static const utf8char utf8_tablerows[] =
+ "//table[@id='table-character-sets-1']/*/tr";
+static const utf8char utf8_headerpos[] =
+ "count(th[text()=$T]/preceding-sibling::th)+1";
+static const utf8char utf8_getmibenum[] = "number(td[$M])";
+static const utf8char utf8_getprefname[] = "string(td[$P])";
+static const utf8char utf8_getname[] = "string(td[$N])";
+static const utf8char utf8_getaliases[] = "td[$A]/text()";
+#else
+static const utf8char utf8_tablerows[] =
+ "//html:table[@id='table-character-sets-1']/*/html:tr";
+static const utf8char utf8_headerpos[] =
+ "count(html:th[text()=$T]/preceding-sibling::html:th)+1";
+static const utf8char utf8_getmibenum[] = "number(html:td[$M])";
+static const utf8char utf8_getprefname[] = "string(html:td[$P])";
+static const utf8char utf8_getname[] = "string(html:td[$N])";
+static const utf8char utf8_getaliases[] = "html:td[$A]/text()";
+#endif
+
+#pragma convert(0)
+
+
+/**
+*** UTF-8 character length table.
+***
+*** Index is first character byte, value is the character byte count.
+**/
+
+static signed char utf8_chlen[] = {
+/* 00-07 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 08-0F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 10-17 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 18-1F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 20-27 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 28-2F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 30-37 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 38-3F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 40-47 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 48-4F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 50-57 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 58-5F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 60-67 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 68-6F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 70-77 */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 78-7F */ 1, 1, 1, 1, 1, 1, 1, 1,
+/* 80-87 */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* 88-8F */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* 90-97 */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* 98-9F */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* A0-A7 */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* A8-AF */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* B0-B7 */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* B8-BF */ -1, -1, -1, -1, -1, -1, -1, -1,
+/* C0-C7 */ 2, 2, 2, 2, 2, 2, 2, 2,
+/* C8-CF */ 2, 2, 2, 2, 2, 2, 2, 2,
+/* D0-D7 */ 2, 2, 2, 2, 2, 2, 2, 2,
+/* D8-DF */ 2, 2, 2, 2, 2, 2, 2, 2,
+/* E0-E7 */ 3, 3, 3, 3, 3, 3, 3, 3,
+/* E8-EF */ 3, 3, 3, 3, 3, 3, 3, 3,
+/* F0-F7 */ 4, 4, 4, 4, 4, 4, 4, 4,
+/* F8-FF */ 5, 5, 5, 5, 6, 6, -1, -1
+};
+
+
+
+void
+chknull(void * p)
+
+{
+ if (p)
+ return;
+
+ fprintf(stderr, "Not enough memory\n");
+ exit(1);
+}
+
+
+void
+makecode(char * buf, unsigned int ccsid)
+
+{
+ ccsid &= 0xFFFF;
+ memset(buf, 0, 32);
+ sprintf(buf, "IBMCCSID%05u0000000", ccsid);
+}
+
+
+iconv_t
+iconv_open_ccsid(unsigned int ccsidout,
+ unsigned int ccsidin, unsigned int nullflag)
+
+{
+ char fromcode[33];
+ char tocode[33];
+
+ makecode(fromcode, ccsidin);
+ makecode(tocode, ccsidout);
+ memset(tocode + 13, 0, sizeof tocode - 13);
+
+ if (nullflag)
+ fromcode[18] = '1';
+
+ return iconv_open(tocode, fromcode);
+}
+
+
+unsigned int
+getnum(char * * cpp)
+
+{
+ unsigned int n;
+ char * cp;
+
+ cp = *cpp;
+ n = 0;
+
+ while (isdigit(*cp))
+ n = 10 * n + *cp++ - '0';
+
+ *cpp = cp;
+ return n;
+}
+
+
+const utf8char *
+hashBinaryKey(const byte * bytes, unsigned int len)
+
+{
+ const byte * bp;
+ utf8char * key;
+ utf8char * cp;
+ unsigned int n;
+ unsigned int n4;
+ unsigned int i;
+
+ /**
+ *** Encode binary data in character form to be used as hash
+ *** table key.
+ **/
+
+ n = (4 * len + 2) / 3;
+ key = (utf8char *) malloc(n + 1);
+ chknull(key);
+ bp = bytes;
+ cp = key;
+
+ for (n4 = n >> 2; n4; n4--) {
+ i = (bp[0] << 16) | (bp[1] << 8) | bp[2];
+ *cp++ = 0x21 + ((i >> 18) & 0x3F);
+ *cp++ = 0x21 + ((i >> 12) & 0x3F);
+ *cp++ = 0x21 + ((i >> 6) & 0x3F);
+ *cp++ = 0x21 + (i & 0x3F);
+ bp += 3;
+ }
+
+ switch (n & 0x3) {
+
+ case 2:
+ *cp++ = 0x21 + ((*bp >> 2) & 0x3F);
+ *cp++ = 0x21 + ((*bp << 4) & 0x3F);
+ break;
+
+ case 3:
+ i = (bp[0] << 8) | bp[1];
+ *cp++ = 0x21 + ((i >> 10) & 0x3F);
+ *cp++ = 0x21 + ((i >> 4) & 0x3F);
+ *cp++ = 0x21 + ((i << 2) & 0x3F);
+ break;
+ }
+
+ *cp = '\0';
+ return key;
+}
+
+
+void *
+hash_get(xmlHashTablePtr h, const void * binkey, unsigned int len)
+
+{
+ const utf8char * key;
+ void * result;
+
+ key = hashBinaryKey((const byte *) binkey, len);
+ result = xmlHashLookup(h, key);
+ free((char *) key);
+ return result;
+}
+
+
+int
+hash_add(xmlHashTablePtr h, const void * binkey, unsigned int len, void * data)
+
+{
+ const utf8char * key;
+ int result;
+
+ key = hashBinaryKey((const byte *) binkey, len);
+ result = xmlHashAddEntry(h, key, data);
+ free((char *) key);
+ return result;
+}
+
+
+xmlDocPtr
+loadXMLFile(const char * filename)
+
+{
+ struct stat sbuf;
+ byte * databuf;
+ int fd;
+ int i;
+ xmlDocPtr doc;
+
+ if (stat(filename, &sbuf))
+ return (xmlDocPtr) NULL;
+
+ databuf = malloc(sbuf.st_size + 4);
+
+ if (!databuf)
+ return (xmlDocPtr) NULL;
+
+ fd = open(filename, O_RDONLY
+#ifdef O_BINARY
+ | O_BINARY
+#endif
+ );
+
+ if (fd < 0) {
+ free((char *) databuf);
+ return (xmlDocPtr) NULL;
+ }
+
+ i = read(fd, (char *) databuf, sbuf.st_size);
+ close(fd);
+
+ if (i != sbuf.st_size) {
+ free((char *) databuf);
+ return (xmlDocPtr) NULL;
+ }
+
+ databuf[i] = databuf[i + 1] = databuf[i + 2] = databuf[i + 3] = 0;
+ doc = xmlParseMemory((xmlChar *) databuf, i);
+ free((char *) databuf);
+ return doc;
+}
+
+
+int
+match(char * * cpp, char * s)
+
+{
+ char * cp;
+ int c1;
+ int c2;
+
+ cp = *cpp;
+
+ for (cp = *cpp; c2 = *s++; cp++) {
+ c1 = *cp;
+
+ if (c1 != c2) {
+ if (isupper(c1))
+ c1 = tolower(c1);
+
+ if (isupper(c2))
+ c2 = tolower(c2);
+ }
+
+ if (c1 != c2)
+ return 0;
+ }
+
+ c1 = *cp;
+
+ while (c1 == ' ' || c1 == '\t')
+ c1 = *++cp;
+
+ *cpp = cp;
+ return 1;
+}
+
+
+t_state *
+newstate(void)
+
+{
+ t_state * s;
+
+ s = (t_state *) malloc(sizeof *s);
+ chknull(s);
+ memset((char *) s, 0, sizeof *s);
+ return s;
+}
+
+
+void
+unlink_transition(t_transition * t)
+
+{
+ if (t->t_backnext)
+ t->t_backnext->t_backprev = t->t_backprev;
+
+ if (t->t_backprev)
+ t->t_backprev->t_backnext = t->t_backnext;
+ else if (t->t_to)
+ t->t_to->s_backward = t->t_backnext;
+
+ if (t->t_forwnext)
+ t->t_forwnext->t_forwprev = t->t_forwprev;
+
+ if (t->t_forwprev)
+ t->t_forwprev->t_forwnext = t->t_forwnext;
+ else if (t->t_from)
+ t->t_from->s_forward = t->t_forwnext;
+
+ t->t_backprev = (t_transition *) NULL;
+ t->t_backnext = (t_transition *) NULL;
+ t->t_forwprev = (t_transition *) NULL;
+ t->t_forwnext = (t_transition *) NULL;
+ t->t_from = (t_state *) NULL;
+ t->t_to = (t_state *) NULL;
+}
+
+
+void
+link_transition(t_transition * t, t_state * from, t_state * to)
+
+{
+ if (!from)
+ from = t->t_from;
+
+ if (!to)
+ to = t->t_to;
+
+ unlink_transition(t);
+
+ if ((t->t_from = from)) {
+ if ((t->t_forwnext = from->s_forward))
+ t->t_forwnext->t_forwprev = t;
+
+ from->s_forward = t;
+ }
+
+ if ((t->t_to = to)) {
+ if ((t->t_backnext = to->s_backward))
+ t->t_backnext->t_backprev = t;
+
+ to->s_backward = t;
+ }
+}
+
+
+t_transition *
+newtransition(unsigned int token, t_state * from, t_state * to)
+
+{
+ t_transition * t;
+
+ t = (t_transition *) malloc(sizeof *t);
+ chknull(t);
+ memset((char *) t, 0, sizeof *t);
+ t->t_token = token;
+ link_transition(t, from, to);
+ return t;
+}
+
+
+t_transition *
+uniquetransition(unsigned int token, t_state * from, t_state * to)
+
+{
+ t_transition * t;
+
+ for (t = from->s_forward; t; t = t->t_forwnext)
+ if (t->t_token == token && (t->t_to == to || !to))
+ return t;
+
+ return to? newtransition(token, from, to): (t_transition *) NULL;
+}
+
+
+int
+set_position(t_powerset * s, void * e)
+
+{
+ unsigned int l;
+ unsigned int h;
+ unsigned int m;
+ int i;
+
+ l = 0;
+ h = s->p_card;
+
+ while (l < h) {
+ m = (l + h) >> 1;
+
+ /**
+ *** If both pointers belong to different allocation arenas,
+ *** native comparison may find them neither
+ *** equal, nor greater, nor smaller.
+ *** We thus compare using memcmp() to get an orthogonal
+ *** result.
+ **/
+
+ i = memcmp(&e, s->p_set + m, sizeof e);
+
+ if (i < 0)
+ h = m;
+ else if (!i)
+ return m;
+ else
+ l = m + 1;
+ }
+
+ return l;
+}
+
+
+t_powerset *
+set_include(t_powerset * s, void * e)
+
+{
+ unsigned int pos;
+ unsigned int n;
+
+ if (!s) {
+ s = (t_powerset *) malloc(sizeof *s +
+ GRANULE * sizeof s->p_set);
+ chknull(s);
+ s->p_size = GRANULE;
+ s->p_set[GRANULE] = (t_state *) NULL;
+ s->p_set[0] = e;
+ s->p_card = 1;
+ return s;
+ }
+
+ pos = set_position(s, e);
+
+ if (pos < s->p_card && s->p_set[pos] == e)
+ return s;
+
+ if (s->p_card >= s->p_size) {
+ s->p_size += GRANULE;
+ s = (t_powerset *) realloc(s,
+ sizeof *s + s->p_size * sizeof s->p_set);
+ chknull(s);
+ s->p_set[s->p_size] = (t_state *) NULL;
+ }
+
+ n = s->p_card - pos;
+
+ if (n)
+ memmove((char *) (s->p_set + pos + 1),
+ (char *) (s->p_set + pos), n * sizeof s->p_set[0]);
+
+ s->p_set[pos] = e;
+ s->p_card++;
+ return s;
+}
+
+
+t_state *
+nfatransition(t_state * to, byte token)
+
+{
+ t_state * from;
+
+ from = newstate();
+ newtransition(token, from, to);
+ return from;
+}
+
+
+static t_state * nfadevelop(t_state * from, t_state * final, iconv_t icc,
+ const utf8char * name, unsigned int len);
+
+
+void
+nfaslice(t_state * * from, t_state * * to, iconv_t icc,
+ const utf8char * chr, unsigned int chlen,
+ const utf8char * name, unsigned int len, t_state * final)
+
+{
+ char * srcp;
+ char * dstp;
+ size_t srcc;
+ size_t dstc;
+ unsigned int cnt;
+ t_state * f;
+ t_state * t;
+ t_transition * tp;
+ byte bytebuf[8];
+
+ srcp = (char *) chr;
+ srcc = chlen;
+ dstp = (char *) bytebuf;
+ dstc = sizeof bytebuf;
+ iconv(icc, &srcp, &srcc, &dstp, &dstc);
+ dstp = (char *) bytebuf;
+ cnt = sizeof bytebuf - dstc;
+ t = *to;
+ f = *from;
+
+ /**
+ *** Check for end of string.
+ **/
+
+ if (!len)
+ if (t && t != final)
+ uniquetransition(EPSILON, t, final);
+ else
+ t = final;
+
+ if (f)
+ while (cnt) {
+ tp = uniquetransition(*dstp, f, (t_state *) NULL);
+
+ if (!tp)
+ break;
+
+ f = tp->t_to;
+ dstp++;
+ cnt--;
+ }
+
+ if (!cnt) {
+ if (!t)
+ t = nfadevelop(f, final, icc, name, len);
+
+ *to = t;
+ return;
+ }
+
+ if (!t) {
+ t = nfadevelop((t_state *) NULL, final, icc, name, len);
+ *to = t;
+ }
+
+ if (!f)
+ *from = f = newstate();
+
+ while (cnt > 1)
+ t = nfatransition(t, dstp[--cnt]);
+
+ newtransition(*dstp, f, t);
+}
+
+
+t_state *
+nfadevelop(t_state * from, t_state * final, iconv_t icc,
+ const utf8char * name, unsigned int len)
+
+{
+ int chlen;
+ int i;
+ t_state * to;
+ int uccnt;
+ int lccnt;
+ utf8char chr;
+
+ chlen = utf8_chlen[*name];
+
+ for (i = 1; i < chlen; i++)
+ if ((name[i] & 0xC0) != 0x80)
+ break;
+
+ if (i != chlen) {
+ fprintf(stderr,
+ "Invalid UTF8 character in character set name\n");
+ return (t_state *) NULL;
+ }
+
+ to = (t_state *) NULL;
+ nfaslice(&from, &to,
+ icc, name, chlen, name + chlen, len - chlen, final);
+
+ if (*name >= UTF8_a && *name <= UTF8_z)
+ chr = *name - UTF8_a + UTF8_A;
+ else if (*name >= UTF8_A && *name <= UTF8_Z)
+ chr = *name - UTF8_A + UTF8_a;
+ else
+ return from;
+
+ nfaslice(&from, &to, icc, &chr, 1, name + chlen, len - chlen, final);
+ return from;
+}
+
+
+
+void
+nfaenter(const utf8char * name, int len, t_chset * charset)
+
+{
+ t_chset * s;
+ t_state * final;
+ t_state * sp;
+ t_symlist * lp;
+
+ /**
+ *** Enter case-insensitive `name' in NFA in all known
+ *** character codes.
+ *** Redundant shift state changes as well as shift state
+ *** differences between uppercase and lowercase are
+ *** not handled.
+ **/
+
+ if (len < 0)
+ len = strlen(name) + 1;
+
+ for (lp = charset->c_names; lp; lp = lp->l_next)
+ if (!memcmp(name, lp->l_symbol, len))
+ return; /* Already entered. */
+
+ lp = (t_symlist *) malloc(sizeof *lp + len);
+ chknull(lp);
+ memcpy(lp->l_symbol, name, len);
+ lp->l_symbol[len] = '\0';
+ lp->l_next = charset->c_names;
+ charset->c_names = lp;
+ final = newstate();
+ final->s_final = charset;
+
+ for (s = chset_list; s; s = s->c_next)
+ if (!iconv_open_error(s->c_fromUTF8))
+ sp = nfadevelop(initial_state, final,
+ s->c_fromUTF8, name, len);
+}
+
+
+unsigned int
+utf8_utostr(utf8char * s, unsigned int v)
+
+{
+ unsigned int d;
+ unsigned int i;
+
+ d = v / 10;
+ v -= d * 10;
+ i = d? utf8_utostr(s, d): 0;
+ s[i++] = v + UTF8_0;
+ s[i] = '\0';
+ return i;
+}
+
+
+unsigned int
+utf8_utostrpad(utf8char * s, unsigned int v, int digits)
+
+{
+ unsigned int i = utf8_utostr(s, v);
+ utf8char pad = UTF8_SPACE;
+
+ if (digits < 0) {
+ pad = UTF8_0;
+ digits = -digits;
+ }
+
+ if (i >= digits)
+ return i;
+
+ memmove(s + digits - i, s, i + 1);
+ memset(s, pad, digits - i);
+ return digits;
+}
+
+
+unsigned int
+utf8_strtou(const utf8char * s)
+
+{
+ unsigned int v;
+
+ while (*s == UTF8_SPACE || *s == UTF8_HT)
+ s++;
+
+ for (v = 0; *s >= UTF8_0 && *s <= UTF8_9;)
+ v = 10 * v + *s++ - UTF8_0;
+
+ return v;
+}
+
+
+unsigned int
+getNumAttr(xmlNodePtr node, const xmlChar * name)
+
+{
+ const xmlChar * s;
+ unsigned int val;
+
+ s = xmlGetProp(node, name);
+
+ if (!s)
+ return 0;
+
+ val = utf8_strtou(s);
+ xmlFree((xmlChar *) s);
+ return val;
+}
+
+
+void
+read_assocs(const char * filename)
+
+{
+ xmlDocPtr doc;
+ xmlXPathContextPtr ctxt;
+ xmlXPathObjectPtr obj;
+ xmlNodePtr node;
+ t_chset * sp;
+ int i;
+ unsigned int ccsid;
+ unsigned int mibenum;
+ utf8char symbuf[32];
+
+ doc = loadXMLFile(filename);
+
+ if (!doc) {
+ fprintf(stderr, "Cannot load file %s\n", filename);
+ exit(1);
+ }
+
+ ctxt = xmlXPathNewContext(doc);
+ obj = xmlXPathEval(utf8_assocnodes, ctxt);
+
+ if (!obj || obj->type != XPATH_NODESET || !obj->nodesetval ||
+ !obj->nodesetval->nodeTab || !obj->nodesetval->nodeNr) {
+ fprintf(stderr, "No association found in %s\n", filename);
+ exit(1);
+ }
+
+ for (i = 0; i < obj->nodesetval->nodeNr; i++) {
+ node = obj->nodesetval->nodeTab[i];
+ ccsid = getNumAttr(node, utf8_ccsid);
+ mibenum = getNumAttr(node, utf8_mibenum);
+
+ /**
+ *** Check for duplicate.
+ **/
+
+ for (sp = chset_list; sp; sp = sp->c_next)
+ if (ccsid && ccsid == sp->c_ccsid ||
+ mibenum && mibenum == sp->c_mibenum) {
+ fprintf(stderr, "Duplicate character set: ");
+ fprintf(stderr, "CCSID = %u/%u, ",
+ ccsid, sp->c_ccsid);
+ fprintf(stderr, "MIBenum = %u/%u\n",
+ mibenum, sp->c_mibenum);
+ break;
+ }
+
+ if (sp)
+ continue;
+
+ /**
+ *** Allocate the new character set.
+ **/
+
+ sp = (t_chset *) malloc(sizeof *sp);
+ chknull(sp);
+ memset(sp, 0, sizeof *sp);
+
+ if (!ccsid) /* Do not attempt with current job CCSID. */
+ set_iconv_open_error(sp->c_fromUTF8);
+ else {
+ sp->c_fromUTF8 =
+ iconv_open_ccsid(ccsid, C_UTF8_CCSID, 0);
+
+ if (iconv_open_error(sp->c_fromUTF8) == -1)
+ fprintf(stderr,
+ "Cannot convert into CCSID %u: ignored\n",
+ ccsid);
+ }
+
+ sp->c_ccsid = ccsid;
+ sp->c_mibenum = mibenum;
+ sp->c_next = chset_list;
+ chset_list = sp;
+ }
+
+ xmlXPathFreeObject(obj);
+
+ /**
+ *** Enter aliases.
+ **/
+
+ for (sp = chset_list; sp; sp = sp->c_next) {
+ strcpy(symbuf, utf8_ibm_);
+ utf8_utostr(symbuf + 4, sp->c_ccsid);
+ nfaenter(symbuf, -1, sp);
+ strcpy(symbuf, utf8_IBMCCSID);
+ utf8_utostrpad(symbuf + 8, sp->c_ccsid, -5);
+ nfaenter(symbuf, 13, sp); /* Not null-terminated. */
+
+ if (sp->c_mibenum) {
+ strcpy(symbuf, utf8_iana_);
+ utf8_utostr(symbuf + 5, sp->c_mibenum);
+ nfaenter(symbuf, -1, sp);
+ }
+
+ xmlXPathRegisterVariable(ctxt, utf8_C,
+ xmlXPathNewFloat((double) sp->c_ccsid));
+ obj = xmlXPathEval(utf8_aliastext, ctxt);
+
+ if (!obj || obj->type != XPATH_NODESET) {
+ fprintf(stderr, "getAlias failed in %s\n", filename);
+ exit(1);
+ }
+
+ if (obj->nodesetval &&
+ obj->nodesetval->nodeTab && obj->nodesetval->nodeNr) {
+ for (i = 0; i < obj->nodesetval->nodeNr; i++) {
+ node = obj->nodesetval->nodeTab[i];
+ nfaenter(node->content, -1, sp);
+ }
+ }
+
+ xmlXPathFreeObject(obj);
+ }
+
+ xmlXPathFreeContext(ctxt);
+ xmlFreeDoc(doc);
+}
+
+
+unsigned int
+columnPosition(xmlXPathContextPtr ctxt, const xmlChar * header)
+
+{
+ xmlXPathObjectPtr obj;
+ unsigned int res = 0;
+
+ xmlXPathRegisterVariable(ctxt, utf8_T, xmlXPathNewString(header));
+ obj = xmlXPathEval(utf8_headerpos, ctxt);
+
+ if (obj) {
+ if (obj->type == XPATH_NUMBER)
+ res = (unsigned int) obj->floatval;
+
+ xmlXPathFreeObject(obj);
+ }
+
+ return res;
+}
+
+
+void
+read_iana(const char * filename)
+
+{
+ xmlDocPtr doc;
+ xmlXPathContextPtr ctxt;
+ xmlXPathObjectPtr obj1;
+ xmlXPathObjectPtr obj2;
+ xmlNodePtr node;
+ int prefnamecol;
+ int namecol;
+ int mibenumcol;
+ int aliascol;
+ int mibenum;
+ t_chset * sp;
+ int n;
+ int i;
+
+ doc = loadXMLFile(filename);
+
+ if (!doc) {
+ fprintf(stderr, "Cannot load file %s\n", filename);
+ exit(1);
+ }
+
+ ctxt = xmlXPathNewContext(doc);
+
+#ifndef OLDXML
+ xmlXPathRegisterNs(ctxt, utf8_html, utf8_htmluri);
+#endif
+
+ obj1 = xmlXPathEval(utf8_tablerows, ctxt);
+
+ if (!obj1 || obj1->type != XPATH_NODESET || !obj1->nodesetval ||
+ !obj1->nodesetval->nodeTab || obj1->nodesetval->nodeNr <= 1) {
+ fprintf(stderr, "No data in %s\n", filename);
+ exit(1);
+ }
+
+ /**
+ *** Identify columns.
+ **/
+
+ xmlXPathSetContextNode(obj1->nodesetval->nodeTab[0], ctxt);
+ prefnamecol = columnPosition(ctxt, utf8_Pref_MIME_Name);
+ namecol = columnPosition(ctxt, utf8_Name);
+ mibenumcol = columnPosition(ctxt, utf8_MIBenum);
+ aliascol = columnPosition(ctxt, utf8_Aliases);
+
+ if (!prefnamecol || !namecol || !mibenumcol || !aliascol) {
+ fprintf(stderr, "Key column(s) missing in %s\n", filename);
+ exit(1);
+ }
+
+ xmlXPathRegisterVariable(ctxt, utf8_P,
+ xmlXPathNewFloat((double) prefnamecol));
+ xmlXPathRegisterVariable(ctxt, utf8_N,
+ xmlXPathNewFloat((double) namecol));
+ xmlXPathRegisterVariable(ctxt, utf8_M,
+ xmlXPathNewFloat((double) mibenumcol));
+ xmlXPathRegisterVariable(ctxt, utf8_A,
+ xmlXPathNewFloat((double) aliascol));
+
+ /**
+ *** Process each row.
+ **/
+
+ for (n = 1; n < obj1->nodesetval->nodeNr; n++) {
+ xmlXPathSetContextNode(obj1->nodesetval->nodeTab[n], ctxt);
+
+ /**
+ *** Get the MIBenum from current row.
+ */
+
+ obj2 = xmlXPathEval(utf8_getmibenum, ctxt);
+
+ if (!obj2 || obj2->type != XPATH_NUMBER) {
+ fprintf(stderr, "get MIBenum failed at row %u\n", n);
+ exit(1);
+ }
+
+ if (xmlXPathIsNaN(obj2->floatval) ||
+ obj2->floatval < 1.0 || obj2->floatval > 65535.0 ||
+ ((unsigned int) obj2->floatval) != obj2->floatval) {
+ fprintf(stderr, "invalid MIBenum at row %u\n", n);
+ xmlXPathFreeObject(obj2);
+ continue;
+ }
+
+ mibenum = obj2->floatval;
+ xmlXPathFreeObject(obj2);
+
+ /**
+ *** Search the associations for a corresponding CCSID.
+ **/
+
+ for (sp = chset_list; sp; sp = sp->c_next)
+ if (sp->c_mibenum == mibenum)
+ break;
+
+ if (!sp)
+ continue; /* No CCSID for this MIBenum. */
+
+ /**
+ *** Process preferred MIME name.
+ **/
+
+ obj2 = xmlXPathEval(utf8_getprefname, ctxt);
+
+ if (!obj2 || obj2->type != XPATH_STRING) {
+ fprintf(stderr,
+ "get Preferred_MIME_Name failed at row %u\n", n);
+ exit(1);
+ }
+
+ if (obj2->stringval && obj2->stringval[0])
+ nfaenter(obj2->stringval, -1, sp);
+
+ xmlXPathFreeObject(obj2);
+
+ /**
+ *** Process name.
+ **/
+
+ obj2 = xmlXPathEval(utf8_getname, ctxt);
+
+ if (!obj2 || obj2->type != XPATH_STRING) {
+ fprintf(stderr, "get name failed at row %u\n", n);
+ exit(1);
+ }
+
+ if (obj2->stringval && obj2->stringval[0])
+ nfaenter(obj2->stringval, -1, sp);
+
+ xmlXPathFreeObject(obj2);
+
+ /**
+ *** Process aliases.
+ **/
+
+ obj2 = xmlXPathEval(utf8_getaliases, ctxt);
+
+ if (!obj2 || obj2->type != XPATH_NODESET) {
+ fprintf(stderr, "get aliases failed at row %u\n", n);
+ exit(1);
+ }
+
+ if (obj2->nodesetval && obj2->nodesetval->nodeTab)
+ for (i = 0; i < obj2->nodesetval->nodeNr; i++) {
+ node = obj2->nodesetval->nodeTab[i];
+
+ if (node && node->content && node->content[0])
+ nfaenter(node->content, -1, sp);
+ }
+
+ xmlXPathFreeObject(obj2);
+ }
+
+ xmlXPathFreeObject(obj1);
+ xmlXPathFreeContext(ctxt);
+ xmlFreeDoc(doc);
+}
+
+
+t_powerset * closureset(t_powerset * dst, t_powerset * src);
+
+
+t_powerset *
+closure(t_powerset * dst, t_state * src)
+
+{
+ t_transition * t;
+ unsigned int oldcard;
+
+ if (src->s_nfastates) {
+ /**
+ *** Is a DFA state: return closure of set of equivalent
+ *** NFA states.
+ **/
+
+ return closureset(dst, src->s_nfastates);
+ }
+
+ /**
+ *** Compute closure of NFA state.
+ **/
+
+ dst = set_include(dst, src);
+
+ for (t = src->s_forward; t; t = t->t_forwnext)
+ if (t->t_token == EPSILON) {
+ oldcard = dst->p_card;
+ dst = set_include(dst, t->t_to);
+
+ if (oldcard != dst->p_card)
+ dst = closure(dst, t->t_to);
+ }
+
+ return dst;
+}
+
+
+t_powerset *
+closureset(t_powerset * dst, t_powerset * src)
+
+{
+ unsigned int i;
+
+ for (i = 0; i < src->p_card; i++)
+ dst = closure(dst, (t_state *) src->p_set[i]);
+
+ return dst;
+}
+
+
+t_state *
+get_dfa_state(t_state * * stack,
+ t_powerset * nfastates, xmlHashTablePtr sethash)
+
+{
+ t_state * s;
+
+ if (s = hash_get(sethash, nfastates->p_set,
+ nfastates->p_card * sizeof nfastates->p_set[0])) {
+ /**
+ *** DFA state already present.
+ *** Release the NFA state set and return
+ *** the address of the old DFA state.
+ **/
+
+ free((char *) nfastates);
+ return s;
+ }
+
+ /**
+ *** Build the new state.
+ **/
+
+ s = newstate();
+ s->s_nfastates = nfastates;
+ s->s_next = dfa_states;
+ dfa_states = s;
+ s->s_stack = *stack;
+ *stack = s;
+
+ /**
+ *** Enter it in hash.
+ **/
+
+ if (hash_add(sethash, nfastates->p_set,
+ nfastates->p_card * sizeof nfastates->p_set[0], s))
+ chknull(NULL); /* Memory allocation error. */
+
+ return s;
+}
+
+
+int
+transcmp(const void * p1, const void * p2)
+
+{
+ t_transition * t1;
+ t_transition * t2;
+
+ t1 = *(t_transition * *) p1;
+ t2 = *(t_transition * *) p2;
+ return ((int) t1->t_token) - ((int) t2->t_token);
+}
+
+
+void
+builddfa(void)
+
+{
+ t_powerset * transset;
+ t_powerset * stateset;
+ t_state * s;
+ t_state * s2;
+ unsigned int n;
+ unsigned int i;
+ unsigned int token;
+ t_transition * t;
+ t_state * stack;
+ xmlHashTablePtr sethash;
+ unsigned int nst;
+
+ transset = set_include(NULL, NULL);
+ chknull(transset);
+ stateset = set_include(NULL, NULL);
+ chknull(stateset);
+ sethash = xmlHashCreate(1);
+ chknull(sethash);
+ dfa_states = (t_state *) NULL;
+ stack = (t_state *) NULL;
+ nst = 0;
+
+ /**
+ *** Build the DFA initial state.
+ **/
+
+ get_dfa_state(&stack, closure(NULL, initial_state), sethash);
+
+ /**
+ *** Build the other DFA states by looking at each
+ *** possible transition from stacked DFA states.
+ **/
+
+ do {
+ if (!(++nst % 100))
+ fprintf(stderr, "%u DFA states\n", nst);
+
+ s = stack;
+ stack = s->s_stack;
+ s->s_stack = (t_state *) NULL;
+
+ /**
+ *** Build a set of all non-epsilon transitions from this
+ *** state.
+ **/
+
+ transset->p_card = 0;
+
+ for (n = 0; n < s->s_nfastates->p_card; n++) {
+ s2 = s->s_nfastates->p_set[n];
+
+ for (t = s2->s_forward; t; t = t->t_forwnext)
+ if (t->t_token != EPSILON) {
+ transset = set_include(transset, t);
+ chknull(transset);
+ }
+ }
+
+ /**
+ *** Sort transitions by token.
+ **/
+
+ qsort(transset->p_set, transset->p_card,
+ sizeof transset->p_set[0], transcmp);
+
+ /**
+ *** Process all transitions, grouping them by token.
+ **/
+
+ stateset->p_card = 0;
+ token = EPSILON;
+
+ for (i = 0; i < transset->p_card; i++) {
+ t = transset->p_set[i];
+
+ if (token != t->t_token) {
+ if (stateset->p_card) {
+ /**
+ *** Get the equivalent DFA state
+ *** and create transition.
+ **/
+
+ newtransition(token, s,
+ get_dfa_state(&stack,
+ closureset(NULL, stateset),
+ sethash));
+ stateset->p_card = 0;
+ }
+
+ token = t->t_token;
+ }
+
+ stateset = set_include(stateset, t->t_to);
+ }
+
+ if (stateset->p_card)
+ newtransition(token, s, get_dfa_state(&stack,
+ closureset(NULL, stateset), sethash));
+ } while (stack);
+
+ free((char *) transset);
+ free((char *) stateset);
+ xmlHashFree(sethash, NULL);
+
+ /**
+ *** Reverse the state list to get the initial state first,
+ *** check for ambiguous prefixes, determine final states,
+ *** destroy NFA state sets.
+ **/
+
+ while (s = dfa_states) {
+ dfa_states = s->s_next;
+ s->s_next = stack;
+ stack = s;
+ stateset = s->s_nfastates;
+ s->s_nfastates = (t_powerset *) NULL;
+
+ for (n = 0; n < stateset->p_card; n++) {
+ s2 = (t_state *) stateset->p_set[n];
+
+ if (s2->s_final) {
+ if (s->s_final && s->s_final != s2->s_final)
+ fprintf(stderr,
+ "Ambiguous name for CCSIDs %u/%u\n",
+ s->s_final->c_ccsid,
+ s2->s_final->c_ccsid);
+
+ s->s_final = s2->s_final;
+ }
+ }
+
+ free((char *) stateset);
+ }
+
+ dfa_states = stack;
+}
+
+
+void
+deletenfa(void)
+
+{
+ t_transition * t;
+ t_state * s;
+ t_state * u;
+ t_state * stack;
+
+ stack = initial_state;
+ stack->s_stack = (t_state *) NULL;
+
+ while ((s = stack)) {
+ stack = s->s_stack;
+
+ while ((t = s->s_forward)) {
+ u = t->t_to;
+ unlink_transition(t);
+ free((char *) t);
+
+ if (!u->s_backward) {
+ u->s_stack = stack;
+ stack = u;
+ }
+ }
+
+ free((char *) s);
+ }
+}
+
+
+t_stategroup *
+newgroup(void)
+
+{
+ t_stategroup * g;
+
+ g = (t_stategroup *) malloc(sizeof *g);
+ chknull(g);
+ memset((char *) g, 0, sizeof *g);
+ g->g_id = groupid++;
+ return g;
+}
+
+
+void
+optimizedfa(void)
+
+{
+ unsigned int i;
+ xmlHashTablePtr h;
+ t_state * s1;
+ t_state * s2;
+ t_state * finstates;
+ t_state * * sp;
+ t_stategroup * g1;
+ t_stategroup * g2;
+ t_stategroup * ghead;
+ t_transition * t1;
+ t_transition * t2;
+ unsigned int done;
+ unsigned int startgroup;
+ unsigned int gtrans[1 << (8 * sizeof(unsigned char))];
+
+ /**
+ *** Reduce DFA state count.
+ **/
+
+ groupid = 0;
+ ghead = (t_stategroup *) NULL;
+
+ /**
+ *** First split: non-final and each distinct final states.
+ **/
+
+ h = xmlHashCreate(4);
+ chknull(h);
+
+ for (s1 = dfa_states; s1; s1 = s1->s_next) {
+ if (!(g1 = hash_get(h, &s1->s_final, sizeof s1->s_final))) {
+ g1 = newgroup();
+ g1->g_next = ghead;
+ ghead = g1;
+
+ if (hash_add(h, &s1->s_final, sizeof s1->s_final, g1))
+ chknull(NULL); /* Memory allocation error. */
+ }
+
+ s1->s_index = g1->g_id;
+ s1->s_stack = g1->g_member;
+ g1->g_member = s1;
+ }
+
+ xmlHashFree(h, NULL);
+
+ /**
+ *** Subsequent splits: states that have the same forward
+ *** transition tokens to states in the same group.
+ **/
+
+ do {
+ done = 1;
+
+ for (g2 = ghead; g2; g2 = g2->g_next) {
+ s1 = g2->g_member;
+
+ if (!s1->s_stack)
+ continue;
+
+ h = xmlHashCreate(1);
+ chknull(h);
+
+ /**
+ *** Build the group transition map.
+ **/
+
+ memset((char *) gtrans, ~0, sizeof gtrans);
+
+ for (t1 = s1->s_forward; t1; t1 = t1->t_forwnext)
+ gtrans[t1->t_token] = t1->t_to->s_index;
+
+ if (hash_add(h, gtrans, sizeof gtrans, g2))
+ chknull(NULL);
+
+ /**
+ *** Process other states in group.
+ **/
+
+ sp = &s1->s_stack;
+ s1 = *sp;
+
+ do {
+ *sp = s1->s_stack;
+
+ /**
+ *** Build the transition map.
+ **/
+
+ memset((char *) gtrans, ~0, sizeof gtrans);
+
+ for (t1 = s1->s_forward;
+ t1; t1 = t1->t_forwnext)
+ gtrans[t1->t_token] = t1->t_to->s_index;
+
+ g1 = hash_get(h, gtrans, sizeof gtrans);
+
+ if (g1 == g2) {
+ *sp = s1;
+ sp = &s1->s_stack;
+ }
+ else {
+ if (!g1) {
+ g1 = newgroup();
+ g1->g_next = ghead;
+ ghead = g1;
+
+ if (hash_add(h, gtrans,
+ sizeof gtrans, g1))
+ chknull(NULL);
+ }
+
+ s1->s_index = g1->g_id;
+ s1->s_stack = g1->g_member;
+ g1->g_member = s1;
+ done = 0;
+ }
+ } while (s1 = *sp);
+
+ xmlHashFree(h, NULL);
+ }
+ } while (!done);
+
+ /**
+ *** Establish group leaders and remap transitions.
+ **/
+
+ startgroup = dfa_states->s_index;
+
+ for (g1 = ghead; g1; g1 = g1->g_next)
+ for (s1 = g1->g_member->s_stack; s1; s1 = s1->s_stack)
+ for (t1 = s1->s_backward; t1; t1 = t2) {
+ t2 = t1->t_backnext;
+ link_transition(t1, NULL, g1->g_member);
+ }
+
+ /**
+ *** Remove redundant states and transitions.
+ **/
+
+ for (g1 = ghead; g1; g1 = g1->g_next) {
+ g1->g_member->s_next = (t_state *) NULL;
+
+ while ((s1 = g1->g_member->s_stack)) {
+ g1->g_member->s_stack = s1->s_stack;
+
+ for (t1 = s1->s_forward; t1; t1 = t2) {
+ t2 = t1->t_forwnext;
+ unlink_transition(t1);
+ free((char *) t1);
+ }
+
+ free((char *) s1);
+ }
+ }
+
+ /**
+ *** Remove group support and relink DFA states.
+ **/
+
+ dfa_states = (t_state *) NULL;
+ s2 = (t_state *) NULL;
+ finstates = (t_state *) NULL;
+
+ while (g1 = ghead) {
+ ghead = g1->g_next;
+ s1 = g1->g_member;
+
+ if (g1->g_id == startgroup)
+ dfa_states = s1; /* Keep start state first. */
+ else if (s1->s_final) { /* Then final states. */
+ s1->s_next = finstates;
+ finstates = s1;
+ }
+ else { /* Finish with non-final states. */
+ s1->s_next = s2;
+ s2 = s1;
+ }
+
+ free((char *) g1);
+ }
+
+ for (dfa_states->s_next = finstates; finstates->s_next;)
+ finstates = finstates->s_next;
+
+ finstates->s_next = s2;
+}
+
+
+const char *
+inttype(unsigned long max)
+
+{
+ int i;
+
+ for (i = 0; max; i++)
+ max >>= 1;
+
+ if (i > 8 * sizeof(unsigned int))
+ return "unsigned long";
+
+ if (i > 8 * sizeof(unsigned short))
+ return "unsigned int";
+
+ if (i > 8 * sizeof(unsigned char))
+ return "unsigned short";
+
+ return "unsigned char";
+}
+
+
+listids(FILE * fp)
+
+{
+ unsigned int pos;
+ t_chset * cp;
+ t_symlist * lp;
+ char * srcp;
+ char * dstp;
+ size_t srcc;
+ size_t dstc;
+ char buf[80];
+
+ fprintf(fp, "/**\n*** CCSID For arg Recognized name.\n");
+ pos = 0;
+
+ for (cp = chset_list; cp; cp = cp->c_next) {
+ if (pos) {
+ fprintf(fp, "\n");
+ pos = 0;
+ }
+
+ if (!cp->c_names)
+ continue;
+
+ pos = fprintf(fp, "*** %5u %c ", cp->c_ccsid,
+ iconv_open_error(cp->c_fromUTF8)? ' ': 'X');
+
+ for (lp = cp->c_names; lp; lp = lp->l_next) {
+ srcp = (char *) lp->l_symbol;
+ srcc = strlen(srcp);
+ dstp = buf;
+ dstc = sizeof buf;
+ iconv(utf82job, &srcp, &srcc, &dstp, &dstc);
+ srcc = dstp - buf;
+
+ if (pos + srcc > 79) {
+ fprintf(fp, "\n***%22c", ' ');
+ pos = 25;
+ }
+
+ pos += fprintf(fp, " %.*s", srcc, buf);
+ }
+ }
+
+ if (pos)
+ fprintf(fp, "\n");
+
+ fprintf(fp, "**/\n\n");
+}
+
+
+void
+generate(FILE * fp)
+
+{
+ unsigned int nstates;
+ unsigned int ntrans;
+ unsigned int maxfinal;
+ t_state * s;
+ t_transition * t;
+ unsigned int i;
+ unsigned int pos;
+ char * ns;
+
+ /**
+ *** Assign indexes to states and transitions.
+ **/
+
+ nstates = 0;
+ ntrans = 0;
+ maxfinal = 0;
+
+ for (s = dfa_states; s; s = s->s_next) {
+ s->s_index = nstates++;
+
+ if (s->s_final)
+ maxfinal = nstates;
+
+ for (t = s->s_forward; t; t = t->t_forwnext)
+ t->t_index = ntrans++;
+ }
+
+ fprintf(fp,
+ "/**\n*** %u states, %u finals, %u transitions.\n**/\n\n",
+ nstates, maxfinal, ntrans);
+ fprintf(stderr, "%u states, %u finals, %u transitions.\n",
+ nstates, maxfinal, ntrans);
+
+ /**
+ *** Generate types.
+ **/
+
+ fprintf(fp, "typedef unsigned short t_ccsid;\n");
+ fprintf(fp, "typedef %-23s t_staterange;\n", inttype(nstates));
+ fprintf(fp, "typedef %-23s t_transrange;\n\n", inttype(ntrans));
+
+ /**
+ *** Generate first transition index for each state.
+ **/
+
+ fprintf(fp, "static t_transrange trans_array[] = {\n");
+ pos = 0;
+ ntrans = 0;
+
+ for (s = dfa_states; s; s = s->s_next) {
+ pos += fprintf(fp, " %u,", ntrans);
+
+ if (pos > 72) {
+ fprintf(fp, "\n");
+ pos = 0;
+ }
+
+ for (t = s->s_forward; t; t = t->t_forwnext)
+ ntrans++;
+ }
+
+ fprintf(fp, " %u\n};\n\n", ntrans);
+
+ /**
+ *** Generate final state info.
+ **/
+
+ fprintf(fp, "static t_ccsid final_array[] = {\n");
+ pos = 0;
+ ns ="";
+ i = 0;
+
+ for (s = dfa_states; s && i++ < maxfinal; s = s->s_next) {
+ pos += fprintf(fp, "%s", ns);
+ ns = ",";
+
+ if (pos > 72) {
+ fprintf(fp, "\n");
+ pos = 0;
+ }
+
+ pos += fprintf(fp, " %u",
+ s->s_final? s->s_final->c_ccsid + 1: 0);
+ }
+
+ fprintf(fp, "\n};\n\n");
+
+ /**
+ *** Generate goto table.
+ **/
+
+ fprintf(fp, "static t_staterange goto_array[] = {\n");
+ pos = 0;
+
+ for (s = dfa_states; s; s = s->s_next)
+ for (t = s->s_forward; t; t = t->t_forwnext) {
+ pos += fprintf(fp, " %u,", t->t_to->s_index);
+
+ if (pos > 72) {
+ fprintf(fp, "\n");
+ pos = 0;
+ }
+ }
+
+ fprintf(fp, " %u\n};\n\n", nstates);
+
+ /**
+ *** Generate transition label table.
+ **/
+
+ fprintf(fp, "static unsigned char label_array[] = {\n");
+ pos = 0;
+ ns ="";
+
+ for (s = dfa_states; s; s = s->s_next)
+ for (t = s->s_forward; t; t = t->t_forwnext) {
+ pos += fprintf(fp, "%s", ns);
+ ns = ",";
+
+ if (pos > 72) {
+ fprintf(fp, "\n");
+ pos = 0;
+ }
+
+ pos += fprintf(fp, " 0x%02X", t->t_token);
+ }
+
+ fprintf(fp, "\n};\n", nstates);
+}
+
+
+main(argc, argv)
+int argc;
+char * * argv;
+
+{
+ FILE * fp;
+ t_chset * csp;
+ char symbuf[20];
+
+ chset_list = (t_chset *) NULL;
+ initial_state = newstate();
+ job2utf8 = iconv_open_ccsid(C_UTF8_CCSID, C_SOURCE_CCSID, 0);
+ utf82job = iconv_open_ccsid(C_SOURCE_CCSID, C_UTF8_CCSID, 0);
+
+ if (argc != 4) {
+ fprintf(stderr, "Usage: %s <ccsid-mibenum file> ", *argv);
+ fprintf(stderr, "<iana-character-set file> <output file>\n");
+ exit(1);
+ }
+
+ /**
+ *** Read CCSID/MIBenum associations. Define special names.
+ **/
+
+ read_assocs(argv[1]);
+
+ /**
+ *** Read character set names and establish the case-independent
+ *** name DFA in all possible CCSIDs.
+ **/
+
+ read_iana(argv[2]);
+
+ /**
+ *** Build DFA from NFA.
+ **/
+
+ builddfa();
+
+ /**
+ *** Delete NFA.
+ **/
+
+ deletenfa();
+
+ /**
+ *** Minimize the DFA state count.
+ **/
+
+ optimizedfa();
+
+ /**
+ *** Generate the table.
+ **/
+
+ fp = fopen(argv[3], "w+");
+
+ if (!fp) {
+ perror(argv[3]);
+ exit(1);
+ }
+
+ fprintf(fp, "/**\n");
+ fprintf(fp, "*** Character set names table.\n");
+ fprintf(fp, "*** Generated by program BLDCSNDFA from");
+ fprintf(fp, " IANA character set assignment file\n");
+ fprintf(fp, "*** and CCSID/MIBenum equivalence file.\n");
+ fprintf(fp, "*** *** Do not edit by hand ***\n");
+ fprintf(fp, "**/\n\n");
+ listids(fp);
+ generate(fp);
+
+ if (ferror(fp)) {
+ perror(argv[3]);
+ fclose(fp);
+ exit(1);
+ }
+
+ fclose(fp);
+ iconv_close(job2utf8);
+ iconv_close(utf82job);
+ exit(0);
+}
diff --git a/os400/iconv/bldcsndfa/ccsid_mibenum.dtd b/os400/iconv/bldcsndfa/ccsid_mibenum.dtd
new file mode 100644
index 0000000..0c834ec
--- /dev/null
+++ b/os400/iconv/bldcsndfa/ccsid_mibenum.dtd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+--- DTD for CCSID/MIBEnum association documents.
+---
+--- See Copyright for the status of this software.
+---
+--- Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+-->
+<!ELEMENT ccsid_mibenum (assoc)*>
+<!ELEMENT assoc (alias)*>
+<!ATTLIST assoc
+ ccsid CDATA #IMPLIED
+ mibenum CDATA #IMPLIED
+>
+<!ELEMENT alias (#PCDATA)>
diff --git a/os400/iconv/bldcsndfa/ccsid_mibenum.xml b/os400/iconv/bldcsndfa/ccsid_mibenum.xml
new file mode 100644
index 0000000..8af38b4
--- /dev/null
+++ b/os400/iconv/bldcsndfa/ccsid_mibenum.xml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ccsid_mibenum SYSTEM "ccsid_mibenum.dtd">
+<!--
+--- CCSID/MIBEnum associations.
+---
+--- See Copyright for the status of this software.
+---
+--- Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+-->
+<ccsid_mibenum>
+ <assoc ccsid="0"><!-- Curent job's CCSID. --></assoc>
+ <assoc ccsid="37" mibenum="2028"><!-- EBCDIC-US -->
+ <alias>EBCDIC</alias>
+ </assoc>
+ <assoc ccsid="256"><!-- Netherlands ? --></assoc>
+ <assoc ccsid="273" mibenum="2030"><!-- EBCDIC-DE --></assoc>
+ <assoc ccsid="277" mibenum="2033"><!-- EBCDIC-DK/NO --></assoc>
+ <assoc ccsid="278" mibenum="2034"><!-- EBCDIC-FI/SE --></assoc>
+ <assoc ccsid="280" mibenum="2035"><!-- EBCDIC-IT --></assoc>
+ <assoc ccsid="284" mibenum="2037"><!-- EBCDIC-ES --></assoc>
+ <assoc ccsid="285" mibenum="2038"><!-- EBCDIC-GB --></assoc>
+ <assoc ccsid="290" mibenum="2039"><!-- EBCDIC-JP-Kana --></assoc>
+ <assoc ccsid="297" mibenum="2040"><!-- EBCDIC-FR --></assoc>
+ <assoc ccsid="300"><!-- Japan English ? --></assoc>
+ <assoc ccsid="301"><!-- PC DATA Japanese --></assoc>
+ <assoc ccsid="367" mibenum="3"><!-- ANSI X3.4 ASCII -->
+ <alias>ASCII</alias>
+ </assoc>
+ <assoc ccsid="420" mibenum="2041"><!-- EBCDIC-Arab --></assoc>
+ <assoc ccsid="423" mibenum="2042"><!-- EBCDIC-GR --></assoc>
+ <assoc ccsid="424" mibenum="2043"><!-- EBCDIC-Hebrew --></assoc>
+ <assoc ccsid="437" mibenum="2011"><!-- 8-bit PC ASCII --></assoc>
+ <assoc ccsid="500" mibenum="2044"><!-- EBCDIC-BE/CH international latin 1 --></assoc>
+ <assoc ccsid="720"><!-- MSDOS Arabic ? --></assoc>
+ <assoc ccsid="737"><!-- MSDOS Greek PC DATA ? --></assoc>
+ <assoc ccsid="775" mibenum="2087"><!-- MSDOS Baltic PC DATA --></assoc>
+ <assoc ccsid="813" mibenum="10"><!-- ISO-8859-7 --></assoc>
+ <assoc ccsid="819" mibenum="4"><!-- ISO-8859-1 --></assoc>
+ <assoc ccsid="833"><!-- Korea (extended range) --></assoc>
+ <assoc ccsid="835"><!-- Korea host double byte --></assoc>
+ <assoc ccsid="836"><!-- Simplified chinese (extended range) --></assoc>
+ <assoc ccsid="837"><!-- Simplified chinese --></assoc>
+ <assoc ccsid="838" mibenum="2016"><!-- IBM-Thai --></assoc>
+ <assoc ccsid="850" mibenum="2009"><!-- PC DATA international latin 1 --></assoc>
+ <assoc ccsid="851" mibenum="2045"><!-- PC DATA greek --></assoc>
+ <assoc ccsid="852" mibenum="2010"><!-- PC DATA latin-2 multilingual --></assoc>
+ <assoc ccsid="855" mibenum="2046"><!-- PC DATA ROECE cyrillic --></assoc>
+ <assoc ccsid="857" mibenum="2047"><!-- PC DATA Turkey latin-5 --></assoc>
+ <assoc ccsid="858" mibenum="2089"><!-- PC-Multilingual-850+Euro --></assoc>
+ <assoc ccsid="860" mibenum="2048"><!-- PC DATA Portugal --></assoc>
+ <assoc ccsid="861" mibenum="2049"><!-- PC DATA Iceland --></assoc>
+ <assoc ccsid="862" mibenum="2013"><!-- PC DATA Hebrew --></assoc>
+ <assoc ccsid="863" mibenum="2050"><!-- PC DATA Canada --></assoc>
+ <assoc ccsid="864" mibenum="2051"><!-- PC DATA Arabic --></assoc>
+ <assoc ccsid="865" mibenum="2052"><!-- PC DATA DK/NO --></assoc>
+ <assoc ccsid="866" mibenum="2086"><!-- PC DATA cyrillic 2 --></assoc>
+ <assoc ccsid="868" mibenum="2053"><!-- PC DATA Urdu --></assoc>
+ <assoc ccsid="869" mibenum="2054"><!-- PC DATA greek (2?) --></assoc>
+ <assoc ccsid="870" mibenum="2055"><!-- EBCDIC-Latin2-Multilingual --></assoc>
+ <assoc ccsid="871" mibenum="2056"><!-- EBCDIC-IS --></assoc>
+ <assoc ccsid="874" mibenum="2259"><!-- TIS-620 -->
+ <alias>EUC-TH></alias>
+ <alias>eucTH</alias>
+ <alias>csEUCTH</alias>
+ </assoc>
+ <assoc ccsid="875"><!-- Greece --></assoc>
+ <assoc ccsid="878" mibenum="2084"><!-- KOI8-R --></assoc>
+ <assoc ccsid="880" mibenum="2057"><!-- EBCDIC-Cyrillic --></assoc>
+ <assoc ccsid="891" mibenum="2058"><!-- PC DATA corean (non-extended) --></assoc>
+ <assoc ccsid="896"><!-- Japan 7-bit Katakana --></assoc>
+ <assoc ccsid="897" mibenum="15"><!-- JIS_X0201 --></assoc>
+ <assoc ccsid="903" mibenum="2059"><!-- PC DATA simplified chinese (non-extended) --></assoc>
+ <assoc ccsid="904" mibenum="2060"><!-- PC DATA traditional chinese --></assoc>
+ <assoc ccsid="905" mibenum="2061"><!-- EBCDIC-TR latin 3 --></assoc>
+ <assoc ccsid="912" mibenum="5"><!-- ISO-8859-2 --></assoc>
+ <assoc ccsid="913" mibenum="6"><!-- ISO-8859-3 --></assoc>
+ <assoc ccsid="914" mibenum="7"><!-- ISO-8859-4 --></assoc>
+ <assoc ccsid="915" mibenum="8"><!-- ISO-8859-5 --></assoc>
+ <assoc ccsid="916" mibenum="11"><!-- ISO-8859-8 --></assoc>
+ <assoc ccsid="918" mibenum="2062"><!-- IBM918 --></assoc>
+ <assoc ccsid="920" mibenum="12"><!-- ISO-8859-9 --></assoc>
+ <assoc ccsid="921" mibenum="109"><!-- ISO-8859-13 --></assoc>
+ <assoc ccsid="922"><!-- Estonia, 8-bit --></assoc>
+ <assoc ccsid="923" mibenum="111"><!-- ISO-8859-15 --></assoc>
+ <assoc ccsid="924" mibenum="2090"><!-- EBCDIC-Latin9+Euro --></assoc>
+ <assoc ccsid="926"><!-- Korean PC DATA DBCS, UDC 1880 --></assoc>
+ <assoc ccsid="927"><!-- Traditional chinese PC DATA DBCS, UDC 6204 --></assoc>
+ <assoc ccsid="928"><!-- Simplified chinese PC DATA DBCS, UDC 1880 --></assoc>
+ <assoc ccsid="930"><!-- Japan Katakana (extended range) 4370 UDC (User Defined Characters) --></assoc>
+ <assoc ccsid="932"><!-- Japan PC DATA Mixed --></assoc>
+ <assoc ccsid="933"><!-- Korea (extended range), 1880 UDC --></assoc>
+ <assoc ccsid="934"><!-- Korean PC DATA --></assoc>
+ <assoc ccsid="935"><!-- Simplified Chinese (extended range) --></assoc>
+ <assoc ccsid="936"><!-- Simplified Chinese (non-extended) --></assoc>
+ <assoc ccsid="937"><!-- Traditional Chinese (extended range) --></assoc>
+ <assoc ccsid="938"><!-- Traditional Chinese (non-extended) --></assoc>
+ <assoc ccsid="939"><!-- Japan English (extended range) 4370 UDC --></assoc>
+ <assoc ccsid="942"><!-- Japanese PC DATA Mixed --></assoc>
+ <assoc ccsid="943" mibenum="17"><!-- Shift_JIS --></assoc>
+ <assoc ccsid="944"><!-- Korean PC DATA Mixed --></assoc>
+ <assoc ccsid="946"><!-- Simplified Chinese PC DATA Mixed --></assoc>
+ <assoc ccsid="947"><!-- Traditional Chinese PC DATA Mixed 6204 UDC (User Defined Characters) --></assoc>
+ <assoc ccsid="949"><!-- Republic of Korea National Standard Graphic Character Set (KS). PC DATA mixed-byte including 1800 UDC --></assoc>
+ <assoc ccsid="950"><!-- Traditional Chinese PC DATA Mixed for Big5 --></assoc>
+ <assoc ccsid="951"><!-- Republic of Korea National Standard Graphic Character Set (KS). PC DATA double-byte including 1800 UDC --></assoc>
+ <assoc ccsid="956"><!-- JIS X201 Roman for CP 00895; JIS X208-1983 for CP 00952 --></assoc>
+ <assoc ccsid="957"><!-- JIS X201 Roman for CP 00895; JIS X208-1978 for CP 00955 --></assoc>
+ <assoc ccsid="958"><!-- ASCII for CP 00367; JIS X208-1983 for CP 00952 --></assoc>
+ <assoc ccsid="959"><!-- ASCII for CP 00367; JIS X208-1978 for CP 00955 --></assoc>
+ <assoc ccsid="964"><!-- G0 - ASCII for CP 00367; G1-CNS 11643 plane 1 for CP 960 --></assoc>
+ <assoc ccsid="965"><!-- ASCII for CP 00367; CNS 11643 plane 1 for CP 960 --></assoc>
+ <assoc ccsid="970" mibenum="38"><!-- EUC-KR --></assoc>
+ <assoc ccsid="1008"><!-- Arabic 8-bit ISO/ASCII --></assoc>
+ <assoc ccsid="1009"><!-- IRV --></assoc>
+ <assoc ccsid="1010"><!-- France --></assoc>
+ <assoc ccsid="1011"><!-- Germany --></assoc>
+ <assoc ccsid="1012"><!-- Italy --></assoc>
+ <assoc ccsid="1013"><!-- United Kingdom --></assoc>
+ <assoc ccsid="1014"><!-- Spain --></assoc>
+ <assoc ccsid="1015"><!-- Portugal --></assoc>
+ <assoc ccsid="1016"><!-- Norway --></assoc>
+ <assoc ccsid="1017"><!-- Denmark --></assoc>
+ <assoc ccsid="1018"><!-- Finland and Sweden --></assoc>
+ <assoc ccsid="1019"><!-- Belgium and Netherlands --></assoc>
+ <assoc ccsid="1025"><!-- Cyrillic Multilingual --></assoc>
+ <assoc ccsid="1026" mibenum="2063"><!-- Turkey latin 5 CECP --></assoc>
+ <assoc ccsid="1027"><!-- Japan english (extended range) --></assoc>
+ <assoc ccsid="1040"><!-- Korean Latin PC DATA extended --></assoc>
+ <assoc ccsid="1041"><!-- Japanese PC DATA extended --></assoc>
+ <assoc ccsid="1042"><!-- Simplified Chinese PC DATA extended --></assoc>
+ <assoc ccsid="1043"><!-- Traditional Chinese PC DATA extended --></assoc>
+ <assoc ccsid="1046"><!-- PC DATA - Arabic Extended --></assoc>
+ <assoc ccsid="1047" mibenum="2102"><!-- Latin open sys EBCDIC --></assoc>
+ <assoc ccsid="1051" mibenum="2004"><!-- hp-roman8 --></assoc>
+ <assoc ccsid="1088"><!-- Korean PC DATA single-byte --></assoc>
+ <assoc ccsid="1089" mibenum="9"><!-- ISO 8859-6: Arabic --></assoc>
+ <assoc ccsid="1097"><!-- Farsi --></assoc>
+ <assoc ccsid="1098"><!-- Farsi (IBM-PC) --></assoc>
+ <assoc ccsid="1112"><!-- Baltic, Multilingual --></assoc>
+ <assoc ccsid="1114"><!-- Traditional Chinese, Taiwan Industry Graphic Character Set (Big5) --></assoc>
+ <assoc ccsid="1115"><!-- Simplified Chinese, People&#x27;s Republic of China National. Standard (GB), personal computer SBCS --></assoc>
+ <assoc ccsid="1122"><!-- Estonia --></assoc>
+ <assoc ccsid="1123"/>
+ <assoc ccsid="1129"><!-- ISO-8 Vietnamese --></assoc>
+ <assoc ccsid="1130"><!-- EBCDIC Vietnamese --></assoc>
+ <assoc ccsid="1132"><!-- EBCDIC Lao --></assoc>
+ <assoc ccsid="1133"><!-- ISO-8 Lao --></assoc>
+ <assoc ccsid="1137"/>
+ <assoc ccsid="1140" mibenum="2091"><!-- EBCDIC-US-37+Euro --></assoc>
+ <assoc ccsid="1141" mibenum="2092"><!-- EBCDIC-DE-273+Euro --></assoc>
+ <assoc ccsid="1142" mibenum="2093"><!-- EBCDIC-DK/NO-277+Euro --></assoc>
+ <assoc ccsid="1143" mibenum="2094"><!-- EBCDIC-FI/SE-278+Euro --></assoc>
+ <assoc ccsid="1144" mibenum="2095"><!-- EBCDIC-IT-280+Euro --></assoc>
+ <assoc ccsid="1145" mibenum="2096"><!-- EBCDIC-ES-284+Euro --></assoc>
+ <assoc ccsid="1146" mibenum="2097"><!-- EBCDIC-GB-285+Euro --></assoc>
+ <assoc ccsid="1147" mibenum="2098"><!-- EBCDIC-FR-297+Euro --></assoc>
+ <assoc ccsid="1148" mibenum="2099"><!-- EBCDIC-INT-500+Euro --></assoc>
+ <assoc ccsid="1149" mibenum="2100"><!-- EBCDIC-IS-871+Euro --></assoc>
+ <assoc ccsid="1153"/>
+ <assoc ccsid="1154"/>
+ <assoc ccsid="1155"/>
+ <assoc ccsid="1156"/>
+ <assoc ccsid="1157"/>
+ <assoc ccsid="1158"/>
+ <assoc ccsid="1160"/>
+ <assoc ccsid="1164"/>
+ <assoc ccsid="1201" mibenum="1013"><!-- UTF-16BE -->
+ <alias>UTF16-BE</alias>
+ <alias>UTF16BE</alias>
+ <alias>UTF-16-BE</alias>
+ </assoc>
+ <assoc ccsid="1203" mibenum="1014"><!-- UTF-16LE -->
+ <alias>UTF16-LE</alias>
+ <alias>UTF16LE</alias>
+ <alias>UTF-16-LE</alias>
+ </assoc>
+ <assoc ccsid="1208" mibenum="106"><!-- UTF-8 -->
+ <alias>UTF8</alias>
+ </assoc>
+ <assoc ccsid="1233" mibenum="1018"><!-- UTF-32BE -->
+ <alias>UTF32-BE</alias>
+ <alias>UTF32BE</alias>
+ <alias>UTF-32-BE</alias>
+ </assoc>
+ <assoc ccsid="1235" mibenum="1019"><!-- UTF-32LE -->
+ <alias>UTF32-LE</alias>
+ <alias>UTF32LE</alias>
+ <alias>UTF-32-LE</alias>
+ </assoc>
+ <assoc ccsid="1250" mibenum="2002"><!-- Windows Latin 2 --></assoc>
+ <assoc ccsid="1251"><!-- Windows Cyrillic --></assoc>
+ <assoc ccsid="1252" mibenum="2001"><!-- Windows Latin 1 --></assoc>
+ <assoc ccsid="1253"><!-- Windows Greek --></assoc>
+ <assoc ccsid="1254"><!-- Windows Turkish --></assoc>
+ <assoc ccsid="1255"><!-- Windows Hebrew --></assoc>
+ <assoc ccsid="1256"><!-- Windows Arabic --></assoc>
+ <assoc ccsid="1257"><!-- Windows Baltic Rim --></assoc>
+ <assoc ccsid="1258"><!-- Windows Vietnamese --></assoc>
+ <assoc ccsid="1275"><!-- Apple, Latin-1 --></assoc>
+ <assoc ccsid="1276" mibenum="2005"><!-- Adobe-Standard-Encoding --></assoc>
+ <assoc ccsid="1280"><!-- Apple, Greek --></assoc>
+ <assoc ccsid="1281"><!-- Apple, Turkey --></assoc>
+ <assoc ccsid="1282"><!-- Apple, Central European (Latin-2) --></assoc>
+ <assoc ccsid="1283"><!-- Apple, Cyrillic --></assoc>
+ <assoc ccsid="1363" mibenum="36"><!-- KS_C_5601-1987 -->
+ <alias>korean</alias>
+ </assoc>
+ <assoc ccsid="1364"/>
+ <assoc ccsid="1373"><!-- Windows-950 --></assoc>
+ <assoc ccsid="1375" mibenum="2101"><!-- Big5-HKSCS --></assoc>
+ <assoc ccsid="1380"><!-- Simplified Chinese DBCS PC --></assoc>
+ <assoc ccsid="1381"><!-- Simplified Chinese PC DATA Mixed --></assoc>
+ <assoc ccsid="1383" mibenum="2025"><!-- GB2312 -->
+ <alias>EUC-CN</alias>
+ </assoc>
+ <assoc ccsid="1386" mibenum="113"><!-- GBK --></assoc>
+ <assoc ccsid="1388"><!-- Simplified Chinese DBCS-Host DATA GBK mixed --></assoc>
+ <assoc ccsid="1392"><!-- S-ch PC Dara mixed GB18030 --></assoc>
+ <assoc ccsid="1399" />
+ <assoc ccsid="4396"><!-- Japanese Host DB including 1880 --></assoc>
+ <assoc ccsid="4948"><!-- Latin 2 PC DATA Multilingual --></assoc>
+ <assoc ccsid="4951"><!-- Cyrillic PC DATA Multilingual --></assoc>
+ <assoc ccsid="4952"><!-- Hebrew PC DATA --></assoc>
+ <assoc ccsid="4953"><!-- Turkey PC DATA Latin 5 --></assoc>
+ <assoc ccsid="4960"><!-- Arabic PC DATA --></assoc>
+ <assoc ccsid="4965"><!-- Greek PC DATA --></assoc>
+ <assoc ccsid="4971"/>
+ <assoc ccsid="5026"><!-- Japan Katakana (extended range) 1880 UDC --></assoc>
+ <assoc ccsid="5035"><!-- Japan English (extended range) 1880 UDC --></assoc>
+ <assoc ccsid="5050"><!-- G0 - JIS X201 Roman for CP 895; G1 JIS X208-1990 for CP 952 --></assoc>
+ <assoc ccsid="5052"><!-- JIS X201 Roman for CP 895; JIS X208-1983 for CP 952 --></assoc>
+ <assoc ccsid="5053"><!-- JIS X201 Roman for CP 895; JIS X208-1978 for CP 955 --></assoc>
+ <assoc ccsid="5054"><!-- ASCII for CP 367; JIS X208-1983 for CP 952 --></assoc>
+ <assoc ccsid="5055"><!-- ASCII for CP 367; JIS X208-1978 for CP 955 --></assoc>
+ <assoc ccsid="5354" mibenum="2258"><!-- windows-1258 --></assoc>
+ <assoc ccsid="5346" mibenum="2250"><!-- windows-1250 --></assoc>
+ <assoc ccsid="5347" mibenum="2251"><!-- windows-1251 --></assoc>
+ <assoc ccsid="5348" mibenum="2252"><!-- windows-1252 --></assoc>
+ <assoc ccsid="5349" mibenum="2253"><!-- windows-1253 --></assoc>
+ <assoc ccsid="5350" mibenum="2254"><!-- windows-1254 --></assoc>
+ <assoc ccsid="5123"/>
+ <assoc ccsid="5478" mibenum="57"><!-- GB_2312-80 -->
+ <alias>chinese</alias>
+ </assoc>
+ <assoc ccsid="8612"><!-- Arabic (base shapes only) --></assoc>
+ <assoc ccsid="9030"><!-- Thai Host Extended SBCS --></assoc>
+ <assoc ccsid="9056"><!-- PC DATA: Arabic PC Storage/Interchange --></assoc>
+ <assoc ccsid="9066"><!-- Thai PC DATA Extended SBCS --></assoc>
+ <assoc ccsid="9447" mibenum="2255"><!-- windows-1255 --></assoc>
+ <assoc ccsid="9448" mibenum="2256"><!-- windows-1256 --></assoc>
+ <assoc ccsid="9449" mibenum="2257"><!-- windows-1257 --></assoc>
+ <assoc ccsid="12708"/>
+ <assoc ccsid="13121"/>
+ <assoc ccsid="13124"/>
+ <assoc ccsid="13488" mibenum="1000"><!-- ISO-10646-UCS-2 -->
+ <alias>UCS-2</alias>
+ <alias>UCS2</alias>
+ </assoc>
+ <assoc ccsid="17354"><!-- G0 - ASCII for CP 00367; G1 -KSC X5601-1989 (including 188 UDCs) for --></assoc>
+ <assoc ccsid="25546"><!-- Korean 2022-KR TCP ASCII --></assoc>
+ <assoc ccsid="28709"><!-- Traditional Chinese (extended range) --></assoc>
+ <assoc ccsid="33722" mibenum="18"><!-- EUC-JP --></assoc>
+ <assoc ccsid="57345"><!-- All Japanese 2022 characters --></assoc>
+ <assoc ccsid="61952"><!-- AS/400 specific UCS level 2. --></assoc>
+ <assoc ccsid="62211"/>
+ <assoc ccsid="62224"/>
+ <assoc ccsid="62235"/>
+ <assoc ccsid="62245"/>
+ <assoc mibenum="27"><!-- ISO-10646-UTF-1 --></assoc>
+</ccsid_mibenum>
diff --git a/os400/iconv/bldcsndfa/character-sets.xhtml b/os400/iconv/bldcsndfa/character-sets.xhtml
new file mode 100644
index 0000000..e1d5a3b
--- /dev/null
+++ b/os400/iconv/bldcsndfa/character-sets.xhtml
@@ -0,0 +1,3077 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:iana="http://www.iana.org/assignments">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ASCII" />
+ <link rel="stylesheet" href="../_support/iana-registry.css" type="text/css" />
+ <script type="text/javascript" src="../_support/jquery.js"></script>
+ <script type="text/javascript" src="../_support/sort.js"></script>
+ <title>Character Sets</title>
+ </head>
+ <body>
+ <h1>Character Sets</h1>
+ <dl>
+ <dt>Last Updated</dt>
+ <dd>2013-01-23</dd>
+ <dt>Registration Procedure(s)</dt>
+ <dd>
+ <pre>Expert Review</pre>
+ </dd>
+ <dt>Expert(s)</dt>
+ <dd>
+ <pre>Primary Expert Ned Freed and Secondary Expert Martin D&#252;rst</pre>
+ </dd>
+ <dt>Reference</dt>
+ <dd>[<a href="http://www.iana.org/go/rfc2978">RFC2978</a>]</dd>
+ <dt>Note</dt>
+ <dd>
+ <pre>These are the official names for character sets that may be used in
+the Internet and may be referred to in Internet documentation. These
+names are expressed in ANSI_X3.4-1968 which is commonly called
+US-ASCII or simply ASCII. The character set most commonly use in the
+Internet and used especially in protocol standards is US-ASCII, this
+is strongly encouraged. The use of the name US-ASCII is also
+encouraged.
+
+The character set names may be up to 40 characters taken from the
+printable characters of US-ASCII. However, no distinction is made
+between use of upper and lower case letters.
+
+The MIBenum value is a unique value for use in MIBs to identify coded
+character sets.
+
+The value space for MIBenum values has been divided into three
+regions. The first region (3-999) consists of coded character sets
+that have been standardized by some standard setting organization.
+This region is intended for standards that do not have subset
+implementations. The second region (1000-1999) is for the Unicode and
+ISO/IEC 10646 coded character sets together with a specification of a
+(set of) sub-repertoires that may occur. The third region (&gt;1999) is
+intended for vendor specific coded character sets.
+
+ Assigned MIB enum Numbers
+ -------------------------
+ 0-2 Reserved
+ 3-999 Set By Standards Organizations
+ 1000-1999 Unicode / 10646
+ 2000-2999 Vendor
+
+The aliases that start with "cs" have been added for use with the
+IANA-CHARSET-MIB as originally defined in [<a href="http://www.iana.org/go/rfc3808">RFC3808</a>], and as currently
+maintained by IANA at [<a href="http://www.iana.org/assignments/ianacharset-mib">IANA registry <i>ianacharset-mib</i></a>].
+Note that the ianacharset-mib needs to be kept in sync with this
+registry. These aliases that start with "cs" contain the standard
+numbers along with suggestive names in order to facilitate applications
+that want to display the names in user interfaces. The "cs" stands
+for character set and is provided for applications that need a lower
+case first letter but want to use mixed case thereafter that cannot
+contain any special characters, such as underbar ("_") and dash ("-").
+
+If the character set is from an ISO standard, its cs alias is the ISO
+standard number or name. If the character set is not from an ISO
+standard, but is registered with ISO (IPSJ/ITSCJ is the current ISO
+Registration Authority), the ISO Registry number is specified as
+ISOnnn followed by letters suggestive of the name or standards number
+of the code set. When a national or international standard is
+revised, the year of revision is added to the cs alias of the new
+character set entry in the IANA Registry in order to distinguish the
+revised character set from the original character set.</pre>
+ </dd>
+ <dt>Alternative Formats</dt>
+ <dd>
+ <a class="altformat" href="character-sets.txt"><img src="/_img/icons/text-plain.png" /><br />Plain text</a>
+ </dd>
+ </dl>
+ <dl>
+ <dt>Alternative Formats</dt>
+ <dd>
+ <a class="altformat" href="character-sets-1.csv"><img src="/_img/icons/text-csv.png" /><br />CSV</a>
+ </dd>
+ </dl>
+ <table id="table-character-sets-1" class="sortable">
+ <thead>
+ <tr>
+ <th>Preferred MIME Name</th>
+ <th>Name</th>
+ <th>MIBenum</th>
+ <th>Source</th>
+ <th>Reference</th>
+ <th>Aliases</th>
+ <th>Note</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>US-ASCII</td>
+ <td>US-ASCII</td>
+ <td>3</td>
+ <td>ANSI X3.4-1986</td>
+ <td>[<a href="http://www.iana.org/go/rfc2046">RFC2046</a>]</td>
+ <td>iso-ir-6<br />ANSI_X3.4-1968<br />ANSI_X3.4-1986<br />ISO_646.irv:1991<br />ISO646-US<br />US-ASCII<br />us<br />IBM367<br />cp367<br />csASCII</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-1</td>
+ <td>ISO_8859-1:1987</td>
+ <td>4</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-100<br />ISO_8859-1<br />ISO-8859-1<br />latin1<br />l1<br />IBM819<br />CP819<br />csISOLatin1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-2</td>
+ <td>ISO_8859-2:1987</td>
+ <td>5</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-101<br />ISO_8859-2<br />ISO-8859-2<br />latin2<br />l2<br />csISOLatin2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-3</td>
+ <td>ISO_8859-3:1988</td>
+ <td>6</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-109<br />ISO_8859-3<br />ISO-8859-3<br />latin3<br />l3<br />csISOLatin3</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-4</td>
+ <td>ISO_8859-4:1988</td>
+ <td>7</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-110<br />ISO_8859-4<br />ISO-8859-4<br />latin4<br />l4<br />csISOLatin4</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-5</td>
+ <td>ISO_8859-5:1988</td>
+ <td>8</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-144<br />ISO_8859-5<br />ISO-8859-5<br />cyrillic<br />csISOLatinCyrillic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-6</td>
+ <td>ISO_8859-6:1987</td>
+ <td>9</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-127<br />ISO_8859-6<br />ISO-8859-6<br />ECMA-114<br />ASMO-708<br />arabic<br />csISOLatinArabic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-7</td>
+ <td>ISO_8859-7:1987</td>
+ <td>10</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1947">RFC1947</a>][<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-126<br />ISO_8859-7<br />ISO-8859-7<br />ELOT_928<br />ECMA-118<br />greek<br />greek8<br />csISOLatinGreek</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-8</td>
+ <td>ISO_8859-8:1988</td>
+ <td>11</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-138<br />ISO_8859-8<br />ISO-8859-8<br />hebrew<br />csISOLatinHebrew</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-9</td>
+ <td>ISO_8859-9:1989</td>
+ <td>12</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-148<br />ISO_8859-9<br />ISO-8859-9<br />latin5<br />l5<br />csISOLatin5</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-10</td>
+ <td>ISO-8859-10</td>
+ <td>13</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-157<br />l6<br />ISO_8859-10:1992<br />csISOLatin6<br />latin6</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_6937-2-add</td>
+ <td>14</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>] and ISO 6937-2:1983<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-142<br />csISOTextComm</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_X0201</td>
+ <td>15</td>
+ <td>JIS X 0201-1976. One byte only, this is equivalent to
+JIS/Roman (similar to ASCII) plus eight-bit half-width
+Katakana</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>X0201<br />csHalfWidthKatakana</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_Encoding</td>
+ <td>16</td>
+ <td>JIS X 0202-1991. Uses ISO 2022 escape sequences to
+shift code sets as documented in JIS X 0202-1991.</td>
+ <td></td>
+ <td>csJISEncoding</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Shift_JIS</td>
+ <td>Shift_JIS</td>
+ <td>17</td>
+ <td>This charset is an extension of csHalfWidthKatakana by
+adding graphic characters in JIS X 0208. The CCS's are
+JIS X0201:1997 and JIS X0208:1997. The
+complete definition is shown in Appendix 1 of JIS
+X0208:1997.
+This charset can be used for the top-level media type "text".</td>
+ <td></td>
+ <td>MS_Kanji<br />csShiftJIS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>EUC-JP</td>
+ <td>Extended_UNIX_Code_Packed_Format_for_Japanese</td>
+ <td>18</td>
+ <td>Standardized by OSF, UNIX International, and UNIX Systems
+Laboratories Pacific. Uses ISO 2022 rules to select
+code set 0: US-ASCII (a single 7-bit byte set)
+code set 1: JIS X0208-1990 (a double 8-bit byte set)
+restricted to A0-FF in both bytes
+code set 2: Half Width Katakana (a single 7-bit byte set)
+requiring SS2 as the character prefix
+code set 3: JIS X0212-1990 (a double 7-bit byte set)
+restricted to A0-FF in both bytes
+requiring SS3 as the character prefix</td>
+ <td></td>
+ <td>csEUCPkdFmtJapanese<br />EUC-JP</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Extended_UNIX_Code_Fixed_Width_for_Japanese</td>
+ <td>19</td>
+ <td>Used in Japan. Each character is 2 octets.
+code set 0: US-ASCII (a single 7-bit byte set)
+1st byte = 00
+2nd byte = 20-7E
+code set 1: JIS X0208-1990 (a double 7-bit byte set)
+restricted to A0-FF in both bytes
+code set 2: Half Width Katakana (a single 7-bit byte set)
+1st byte = 00
+2nd byte = A0-FF
+code set 3: JIS X0212-1990 (a double 7-bit byte set)
+restricted to A0-FF in
+the first byte
+and 21-7E in the second byte</td>
+ <td></td>
+ <td>csEUCFixWidJapanese</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>BS_4730</td>
+ <td>20</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-4<br />ISO646-GB<br />gb<br />uk<br />csISO4UnitedKingdom</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>SEN_850200_C</td>
+ <td>21</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-11<br />ISO646-SE2<br />se2<br />csISO11SwedishForNames</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IT</td>
+ <td>22</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-15<br />ISO646-IT<br />csISO15Italian</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ES</td>
+ <td>23</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-17<br />ISO646-ES<br />csISO17Spanish</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>DIN_66003</td>
+ <td>24</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-21<br />de<br />ISO646-DE<br />csISO21German</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NS_4551-1</td>
+ <td>25</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-60<br />ISO646-NO<br />no<br />csISO60DanishNorwegian<br />csISO60Norwegian1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NF_Z_62-010</td>
+ <td>26</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-69<br />ISO646-FR<br />fr<br />csISO69French</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-10646-UTF-1</td>
+ <td>27</td>
+ <td>Universal Transfer Format (1), this is the multibyte
+encoding, that subsets ASCII-7. It does not have byte
+ordering issues.</td>
+ <td></td>
+ <td>csISO10646UTF1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_646.basic:1983</td>
+ <td>28</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>ref<br />csISO646basic1983</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>INVARIANT</td>
+ <td>29</td>
+ <td></td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csINVARIANT</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_646.irv:1983</td>
+ <td>30</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-2<br />irv<br />csISO2IntlRefVersion</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NATS-SEFI</td>
+ <td>31</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-8-1<br />csNATSSEFI</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NATS-SEFI-ADD</td>
+ <td>32</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-8-2<br />csNATSSEFIADD</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NATS-DANO</td>
+ <td>33</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-9-1<br />csNATSDANO</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NATS-DANO-ADD</td>
+ <td>34</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-9-2<br />csNATSDANOADD</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>SEN_850200_B</td>
+ <td>35</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-10<br />FI<br />ISO646-FI<br />ISO646-SE<br />se<br />csISO10Swedish</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>KS_C_5601-1987</td>
+ <td>36</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-149<br />KS_C_5601-1989<br />KSC_5601<br />korean<br />csKSC56011987</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-2022-KR</td>
+ <td>ISO-2022-KR</td>
+ <td>37</td>
+ <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>] (see also KS_C_5601-1987)</td>
+ <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>][<a href="#Woohyong_Choi">Woohyong_Choi</a>]</td>
+ <td>csISO2022KR</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>EUC-KR</td>
+ <td>EUC-KR</td>
+ <td>38</td>
+ <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>] (see also KS_C_5861-1992)</td>
+ <td>[<a href="http://www.iana.org/go/rfc1557">RFC1557</a>][<a href="#Woohyong_Choi">Woohyong_Choi</a>]</td>
+ <td>csEUCKR</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-2022-JP</td>
+ <td>ISO-2022-JP</td>
+ <td>39</td>
+ <td>[<a href="http://www.iana.org/go/rfc1468">RFC1468</a>] (see also [<a href="http://www.iana.org/go/rfc2237">RFC2237</a>])</td>
+ <td>[<a href="http://www.iana.org/go/rfc1468">RFC1468</a>][<a href="#Jun_Murai">Jun_Murai</a>]</td>
+ <td>csISO2022JP</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-2022-JP-2</td>
+ <td>ISO-2022-JP-2</td>
+ <td>40</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1554">RFC1554</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1554">RFC1554</a>][<a href="#Masataka_Ohta">Masataka_Ohta</a>]</td>
+ <td>csISO2022JP2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6220-1969-jp</td>
+ <td>41</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>JIS_C6220-1969<br />iso-ir-13<br />katakana<br />x0201-7<br />csISO13JISC6220jp</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6220-1969-ro</td>
+ <td>42</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-14<br />jp<br />ISO646-JP<br />csISO14JISC6220ro</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>PT</td>
+ <td>43</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-16<br />ISO646-PT<br />csISO16Portuguese</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>greek7-old</td>
+ <td>44</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-18<br />csISO18Greek7Old</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>latin-greek</td>
+ <td>45</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-19<br />csISO19LatinGreek</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NF_Z_62-010_(1973)</td>
+ <td>46</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-25<br />ISO646-FR1<br />csISO25French</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Latin-greek-1</td>
+ <td>47</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-27<br />csISO27LatinGreek1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_5427</td>
+ <td>48</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-37<br />csISO5427Cyrillic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6226-1978</td>
+ <td>49</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-42<br />csISO42JISC62261978</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>BS_viewdata</td>
+ <td>50</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-47<br />csISO47BSViewdata</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>INIS</td>
+ <td>51</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-49<br />csISO49INIS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>INIS-8</td>
+ <td>52</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-50<br />csISO50INIS8</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>INIS-cyrillic</td>
+ <td>53</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-51<br />csISO51INISCyrillic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_5427:1981</td>
+ <td>54</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-54<br />ISO5427Cyrillic1981<br />csISO54271981</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_5428:1980</td>
+ <td>55</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-55<br />csISO5428Greek</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>GB_1988-80</td>
+ <td>56</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-57<br />cn<br />ISO646-CN<br />csISO57GB1988</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>GB_2312-80</td>
+ <td>57</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-58<br />chinese<br />csISO58GB231280</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NS_4551-2</td>
+ <td>58</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>ISO646-NO2<br />iso-ir-61<br />no2<br />csISO61Norwegian2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>videotex-suppl</td>
+ <td>59</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-70<br />csISO70VideotexSupp1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>PT2</td>
+ <td>60</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-84<br />ISO646-PT2<br />csISO84Portuguese2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ES2</td>
+ <td>61</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-85<br />ISO646-ES2<br />csISO85Spanish2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>MSZ_7795.3</td>
+ <td>62</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-86<br />ISO646-HU<br />hu<br />csISO86Hungarian</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6226-1983</td>
+ <td>63</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-87<br />x0208<br />JIS_X0208-1983<br />csISO87JISX0208</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>greek7</td>
+ <td>64</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-88<br />csISO88Greek7</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ASMO_449</td>
+ <td>65</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>ISO_9036<br />arabic7<br />iso-ir-89<br />csISO89ASMO449</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>iso-ir-90</td>
+ <td>66</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csISO90</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6229-1984-a</td>
+ <td>67</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-91<br />jp-ocr-a<br />csISO91JISC62291984a</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6229-1984-b</td>
+ <td>68</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-92<br />ISO646-JP-OCR-B<br />jp-ocr-b<br />csISO92JISC62991984b</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6229-1984-b-add</td>
+ <td>69</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-93<br />jp-ocr-b-add<br />csISO93JIS62291984badd</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6229-1984-hand</td>
+ <td>70</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-94<br />jp-ocr-hand<br />csISO94JIS62291984hand</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6229-1984-hand-add</td>
+ <td>71</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-95<br />jp-ocr-hand-add<br />csISO95JIS62291984handadd</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_C6229-1984-kana</td>
+ <td>72</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-96<br />csISO96JISC62291984kana</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_2033-1983</td>
+ <td>73</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-98<br />e13b<br />csISO2033</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ANSI_X3.110-1983</td>
+ <td>74</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-99<br />CSA_T500-1983<br />NAPLPS<br />csISO99NAPLPS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>T.61-7bit</td>
+ <td>75</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-102<br />csISO102T617bit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>T.61-8bit</td>
+ <td>76</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>T.61<br />iso-ir-103<br />csISO103T618bit</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ECMA-cyrillic</td>
+ <td>77</td>
+ <td>[<a href="http://www.itscj.ipsj.or.jp/ISO-IR/111.pdf">ISO registry</a>]
+ (formerly [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ECMA
+ registry</a>])</td>
+ <td></td>
+ <td>iso-ir-111<br />KOI8-E<br />csISO111ECMACyrillic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CSA_Z243.4-1985-1</td>
+ <td>78</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-121<br />ISO646-CA<br />csa7-1<br />csa71<br />ca<br />csISO121Canadian1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CSA_Z243.4-1985-2</td>
+ <td>79</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-122<br />ISO646-CA2<br />csa7-2<br />csa72<br />csISO122Canadian2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CSA_Z243.4-1985-gr</td>
+ <td>80</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-123<br />csISO123CSAZ24341985gr</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-6-E</td>
+ <td>ISO_8859-6-E</td>
+ <td>81</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#IANA">IANA</a>]</td>
+ <td>csISO88596E<br />ISO-8859-6-E</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-6-I</td>
+ <td>ISO_8859-6-I</td>
+ <td>82</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#IANA">IANA</a>]</td>
+ <td>csISO88596I<br />ISO-8859-6-I</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>T.101-G2</td>
+ <td>83</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-128<br />csISO128T101G2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-8-E</td>
+ <td>ISO_8859-8-E</td>
+ <td>84</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#Hank_Nussbacher">Hank_Nussbacher</a>]</td>
+ <td>csISO88598E<br />ISO-8859-8-E</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>ISO-8859-8-I</td>
+ <td>ISO_8859-8-I</td>
+ <td>85</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1556">RFC1556</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1556">RFC1556</a>][<a href="#Hank_Nussbacher">Hank_Nussbacher</a>]</td>
+ <td>csISO88598I<br />ISO-8859-8-I</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CSN_369103</td>
+ <td>86</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-139<br />csISO139CSN369103</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JUS_I.B1.002</td>
+ <td>87</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-141<br />ISO646-YU<br />js<br />yu<br />csISO141JUSIB1002</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IEC_P27-1</td>
+ <td>88</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-143<br />csISO143IECP271</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JUS_I.B1.003-serb</td>
+ <td>89</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-146<br />serbian<br />csISO146Serbian</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JUS_I.B1.003-mac</td>
+ <td>90</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>macedonian<br />iso-ir-147<br />csISO147Macedonian</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>greek-ccitt</td>
+ <td>91</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-150<br />csISO150<br />csISO150GreekCCITT</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>NC_NC00-10:81</td>
+ <td>92</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cuba<br />iso-ir-151<br />ISO646-CU<br />csISO151Cuba</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_6937-2-25</td>
+ <td>93</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-152<br />csISO6937Add</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>GOST_19768-74</td>
+ <td>94</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>ST_SEV_358-88<br />iso-ir-153<br />csISO153GOST1976874</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_8859-supp</td>
+ <td>95</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-154<br />latin1-2-5<br />csISO8859Supp</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO_10367-box</td>
+ <td>96</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>iso-ir-155<br />csISO10367Box</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>latin-lap</td>
+ <td>97</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>lap<br />iso-ir-158<br />csISO158Lap</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>JIS_X0212-1990</td>
+ <td>98</td>
+ <td>
+ [<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">ISO-IR: International Register of Escape Sequences</a>]<br />
+ Note: The current registration authority is IPSJ/ITSCJ, Japan.
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>x0212<br />iso-ir-159<br />csISO159JISX02121990</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>DS_2089</td>
+ <td>99</td>
+ <td>Danish Standard, DS 2089, February 1974</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>DS2089<br />ISO646-DK<br />dk<br />csISO646Danish</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>us-dk</td>
+ <td>100</td>
+ <td></td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csUSDK</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>dk-us</td>
+ <td>101</td>
+ <td></td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csDKUS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>KSC5636</td>
+ <td>102</td>
+ <td></td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>ISO646-KR<br />csKSC5636</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UNICODE-1-1-UTF-7</td>
+ <td>103</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1642">RFC1642</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1642">RFC1642</a>]</td>
+ <td>csUnicode11UTF7</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-2022-CN</td>
+ <td>104</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1922">RFC1922</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1922">RFC1922</a>]</td>
+ <td>csISO2022CN</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-2022-CN-EXT</td>
+ <td>105</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1922">RFC1922</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1922">RFC1922</a>]</td>
+ <td>csISO2022CNEXT</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-8</td>
+ <td>106</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc3629">RFC3629</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc3629">RFC3629</a>]</td>
+ <td>csUTF8</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-13</td>
+ <td>109</td>
+ <td>ISO See [<a href="http://www.iana.org/assignments/charset-reg/ISO-8859-13">http://www.iana.org/assignments/charset-reg/ISO-8859-13</a>][<a href="#Vladas_Tumasonis">Vladas_Tumasonis</a>]</td>
+ <td></td>
+ <td>csISO885913</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-14</td>
+ <td>110</td>
+ <td>ISO See [<a href="http://www.iana.org/assignments/charset-reg/ISO-8859-14">http://www.iana.org/assignments/charset-reg/ISO-8859-14</a>] [<a href="#Keld_Simonsen_2">Keld_Simonsen_2</a>]</td>
+ <td></td>
+ <td>iso-ir-199<br />ISO_8859-14:1998<br />ISO_8859-14<br />latin8<br />iso-celtic<br />l8<br />csISO885914</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-15</td>
+ <td>111</td>
+ <td>ISO
+Please see: [<a href="http://www.iana.org/assignments/charset-reg/ISO-8859-15">http://www.iana.org/assignments/charset-reg/ISO-8859-15</a>]</td>
+ <td></td>
+ <td>ISO_8859-15<br />Latin-9<br />csISO885915</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-16</td>
+ <td>112</td>
+ <td>ISO</td>
+ <td></td>
+ <td>iso-ir-226<br />ISO_8859-16:2001<br />ISO_8859-16<br />latin10<br />l10<br />csISO885916</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>GBK</td>
+ <td>113</td>
+ <td>Chinese IT Standardization Technical Committee
+Please see: [<a href="http://www.iana.org/assignments/charset-reg/GBK">http://www.iana.org/assignments/charset-reg/GBK</a>]</td>
+ <td></td>
+ <td>CP936<br />MS936<br />windows-936<br />csGBK</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>GB18030</td>
+ <td>114</td>
+ <td>Chinese IT Standardization Technical Committee
+Please see: [<a href="http://www.iana.org/assignments/charset-reg/GB18030">http://www.iana.org/assignments/charset-reg/GB18030</a>]</td>
+ <td></td>
+ <td>csGB18030</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>OSD_EBCDIC_DF04_15</td>
+ <td>115</td>
+ <td>Fujitsu-Siemens standard mainframe EBCDIC encoding
+Please see: [<a href="http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15">http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15</a>]</td>
+ <td></td>
+ <td>csOSDEBCDICDF0415</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>OSD_EBCDIC_DF03_IRV</td>
+ <td>116</td>
+ <td>Fujitsu-Siemens standard mainframe EBCDIC encoding
+Please see: [<a href="http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV">http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV</a>]</td>
+ <td></td>
+ <td>csOSDEBCDICDF03IRV</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>OSD_EBCDIC_DF04_1</td>
+ <td>117</td>
+ <td>Fujitsu-Siemens standard mainframe EBCDIC encoding
+Please see: [<a href="http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1">http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1</a>]</td>
+ <td></td>
+ <td>csOSDEBCDICDF041</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-11548-1</td>
+ <td>118</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/ISO-11548-1">http://www.iana.org/assignments/charset-reg/ISO-11548-1</a>] [<a href="#Samuel_Thibault">Samuel_Thibault</a>]</td>
+ <td></td>
+ <td>ISO_11548-1<br />ISO_TR_11548-1<br />csISO115481</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>KZ-1048</td>
+ <td>119</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/KZ-1048">http://www.iana.org/assignments/charset-reg/KZ-1048</a>] [<a href="#Sairan_M_Kikkarin">Sairan_M_Kikkarin</a>][<a href="#Alexei_Veremeev">Alexei_Veremeev</a>]</td>
+ <td></td>
+ <td>STRK1048-2002<br />RK1048<br />csKZ1048</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-10646-UCS-2</td>
+ <td>1000</td>
+ <td>the 2-octet Basic Multilingual Plane, aka Unicode
+this needs to specify network byte order: the standard
+does not specify (it is a 16-bit integer space)</td>
+ <td></td>
+ <td>csUnicode</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-10646-UCS-4</td>
+ <td>1001</td>
+ <td>the full code space. (same comment about byte order,
+these are 31-bit numbers.</td>
+ <td></td>
+ <td>csUCS4</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-10646-UCS-Basic</td>
+ <td>1002</td>
+ <td>ASCII subset of Unicode. Basic Latin = collection 1
+See ISO 10646, Appendix A</td>
+ <td></td>
+ <td>csUnicodeASCII</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-10646-Unicode-Latin1</td>
+ <td>1003</td>
+ <td>ISO Latin-1 subset of Unicode. Basic Latin and Latin-1
+Supplement = collections 1 and 2. See ISO 10646,
+Appendix A. See [<a href="http://www.iana.org/go/rfc1815">RFC1815</a>].</td>
+ <td></td>
+ <td>csUnicodeLatin1<br />ISO-10646</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-10646-J-1</td>
+ <td>1004</td>
+ <td>ISO 10646 Japanese, see [<a href="http://www.iana.org/go/rfc1815">RFC1815</a>].</td>
+ <td></td>
+ <td>csUnicodeJapanese</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-Unicode-IBM-1261</td>
+ <td>1005</td>
+ <td>IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261</td>
+ <td></td>
+ <td>csUnicodeIBM1261</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-Unicode-IBM-1268</td>
+ <td>1006</td>
+ <td>IBM Latin-4 Extended Presentation Set, GCSGID: 1268</td>
+ <td></td>
+ <td>csUnicodeIBM1268</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-Unicode-IBM-1276</td>
+ <td>1007</td>
+ <td>IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276</td>
+ <td></td>
+ <td>csUnicodeIBM1276</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-Unicode-IBM-1264</td>
+ <td>1008</td>
+ <td>IBM Arabic Presentation Set, GCSGID: 1264</td>
+ <td></td>
+ <td>csUnicodeIBM1264</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-Unicode-IBM-1265</td>
+ <td>1009</td>
+ <td>IBM Hebrew Presentation Set, GCSGID: 1265</td>
+ <td></td>
+ <td>csUnicodeIBM1265</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UNICODE-1-1</td>
+ <td>1010</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1641">RFC1641</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1641">RFC1641</a>]</td>
+ <td>csUnicode11</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>SCSU</td>
+ <td>1011</td>
+ <td>SCSU See [<a href="http://www.iana.org/assignments/charset-reg/SCSU">http://www.iana.org/assignments/charset-reg/SCSU</a>] [<a href="#Markus_Scherer">Markus_Scherer</a>]</td>
+ <td></td>
+ <td>csSCSU</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-7</td>
+ <td>1012</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc2152">RFC2152</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc2152">RFC2152</a>]</td>
+ <td>csUTF7</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-16BE</td>
+ <td>1013</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]</td>
+ <td>csUTF16BE</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-16LE</td>
+ <td>1014</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]</td>
+ <td>csUTF16LE</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-16</td>
+ <td>1015</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc2781">RFC2781</a>]</td>
+ <td>csUTF16</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CESU-8</td>
+ <td>1016</td>
+ <td>
+ [<a href="http://www.unicode.org/unicode/reports/tr26">http://www.unicode.org/unicode/reports/tr26</a>]
+ </td>
+ <td>[<a href="#Toby_Phipps">Toby_Phipps</a>]</td>
+ <td>csCESU8<br />csCESU-8</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-32</td>
+ <td>1017</td>
+ <td>
+ [<a href="http://www.unicode.org/unicode/reports/tr19/">http://www.unicode.org/unicode/reports/tr19/</a>]
+ </td>
+ <td>[<a href="#Mark_Davis">Mark_Davis</a>]</td>
+ <td>csUTF32</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-32BE</td>
+ <td>1018</td>
+ <td>
+ [<a href="http://www.unicode.org/unicode/reports/tr19/">http://www.unicode.org/unicode/reports/tr19/</a>]
+ </td>
+ <td>[<a href="#Mark_Davis">Mark_Davis</a>]</td>
+ <td>csUTF32BE</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UTF-32LE</td>
+ <td>1019</td>
+ <td>
+ [<a href="http://www.unicode.org/unicode/reports/tr19/">http://www.unicode.org/unicode/reports/tr19/</a>]
+ </td>
+ <td>[<a href="#Mark_Davis">Mark_Davis</a>]</td>
+ <td>csUTF32LE</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>BOCU-1</td>
+ <td>1020</td>
+ <td>
+ [<a href="http://www.unicode.org/notes/tn6/">http://www.unicode.org/notes/tn6/</a>]
+ </td>
+ <td>[<a href="#Markus_Scherer">Markus_Scherer</a>]</td>
+ <td>csBOCU1<br />csBOCU-1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-1-Windows-3.0-Latin-1</td>
+ <td>2000</td>
+ <td>Extended ISO 8859-1 Latin-1 for Windows 3.0.
+PCL Symbol Set id: 9U</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csWindows30Latin1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-1-Windows-3.1-Latin-1</td>
+ <td>2001</td>
+ <td>Extended ISO 8859-1 Latin-1 for Windows 3.1.
+PCL Symbol Set id: 19U</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csWindows31Latin1</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-2-Windows-Latin-2</td>
+ <td>2002</td>
+ <td>Extended ISO 8859-2. Latin-2 for Windows 3.1.
+PCL Symbol Set id: 9E</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csWindows31Latin2</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>ISO-8859-9-Windows-Latin-5</td>
+ <td>2003</td>
+ <td>Extended ISO 8859-9. Latin-5 for Windows 3.1
+PCL Symbol Set id: 5T</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csWindows31Latin5</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>hp-roman8</td>
+ <td>2004</td>
+ <td>LaserJet IIP Printer User's Manual,
+HP part no 33471-90901, Hewlet-Packard, June 1989.</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.][<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>roman8<br />r8<br />csHPRoman8</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Adobe-Standard-Encoding</td>
+ <td>2005</td>
+ <td>PostScript Language Reference Manual
+PCL Symbol Set id: 10J</td>
+ <td>[Adobe Systems Incorporated, PostScript Language Reference
+Manual, second edition, Addison-Wesley Publishing Company,
+Inc., 1990.]</td>
+ <td>csAdobeStandardEncoding</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Ventura-US</td>
+ <td>2006</td>
+ <td>Ventura US. ASCII plus characters typically used in
+publishing, like pilcrow, copyright, registered, trade mark,
+section, dagger, and double dagger in the range A0 (hex)
+to FF (hex).
+PCL Symbol Set id: 14J</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csVenturaUS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Ventura-International</td>
+ <td>2007</td>
+ <td>Ventura International. ASCII plus coded characters similar
+to Roman8.
+PCL Symbol Set id: 13J</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csVenturaInternational</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>DEC-MCS</td>
+ <td>2008</td>
+ <td>VAX/VMS User's Manual,
+Order Number: AI-Y517A-TE, April 1986.</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>dec<br />csDECMCS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM850</td>
+ <td>2009</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp850<br />850<br />csPC850Multilingual</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>PC8-Danish-Norwegian</td>
+ <td>2012</td>
+ <td>PC Danish Norwegian
+8-bit PC set for Danish Norwegian
+PCL Symbol Set id: 11U</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csPC8DanishNorwegian</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM862</td>
+ <td>2013</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp862<br />862<br />csPC862LatinHebrew</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>PC8-Turkish</td>
+ <td>2014</td>
+ <td>PC Latin Turkish. PCL Symbol Set id: 9T</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csPC8Turkish</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM-Symbols</td>
+ <td>2015</td>
+ <td>Presentation Set, CPGID: 259</td>
+ <td>[IBM Corporation, "ABOUT TYPE: IBM's Technical Reference
+for Core Interchange Digitized Type", Publication number
+S544-3708-01]</td>
+ <td>csIBMSymbols</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM-Thai</td>
+ <td>2016</td>
+ <td>Presentation Set, CPGID: 838</td>
+ <td>[IBM Corporation, "ABOUT TYPE: IBM's Technical Reference
+for Core Interchange Digitized Type", Publication number
+S544-3708-01]</td>
+ <td>csIBMThai</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>HP-Legal</td>
+ <td>2017</td>
+ <td>PCL 5 Comparison Guide, Hewlett-Packard,
+HP part number 5961-0510, October 1992
+PCL Symbol Set id: 1U</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csHPLegal</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>HP-Pi-font</td>
+ <td>2018</td>
+ <td>PCL 5 Comparison Guide, Hewlett-Packard,
+HP part number 5961-0510, October 1992
+PCL Symbol Set id: 15U</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csHPPiFont</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>HP-Math8</td>
+ <td>2019</td>
+ <td>PCL 5 Comparison Guide, Hewlett-Packard,
+HP part number 5961-0510, October 1992
+PCL Symbol Set id: 8M</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csHPMath8</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Adobe-Symbol-Encoding</td>
+ <td>2020</td>
+ <td>PostScript Language Reference Manual
+PCL Symbol Set id: 5M</td>
+ <td>[Adobe Systems Incorporated, PostScript Language Reference
+Manual, second edition, Addison-Wesley Publishing Company,
+Inc., 1990.]</td>
+ <td>csHPPSMath</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>HP-DeskTop</td>
+ <td>2021</td>
+ <td>PCL 5 Comparison Guide, Hewlett-Packard,
+HP part number 5961-0510, October 1992
+PCL Symbol Set id: 7J</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csHPDesktop</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Ventura-Math</td>
+ <td>2022</td>
+ <td>PCL 5 Comparison Guide, Hewlett-Packard,
+HP part number 5961-0510, October 1992
+PCL Symbol Set id: 6M</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csVenturaMath</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Microsoft-Publishing</td>
+ <td>2023</td>
+ <td>PCL 5 Comparison Guide, Hewlett-Packard,
+HP part number 5961-0510, October 1992
+PCL Symbol Set id: 6J</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>csMicrosoftPublishing</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Windows-31J</td>
+ <td>2024</td>
+ <td>Windows Japanese. A further extension of Shift_JIS
+to include NEC special characters (Row 13), NEC
+selection of IBM extensions (Rows 89 to 92), and IBM
+extensions (Rows 115 to 119). The CCS's are
+JIS X0201:1997, JIS X0208:1997, and these extensions.
+This charset can be used for the top-level media type "text",
+but it is of limited or specialized use (see [<a href="http://www.iana.org/go/rfc2278">RFC2278</a>]).
+PCL Symbol Set id: 19K</td>
+ <td></td>
+ <td>csWindows31J</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>GB2312</td>
+ <td>GB2312</td>
+ <td>2025</td>
+ <td>Chinese for People's Republic of China (PRC) mixed one byte,
+two byte set:
+20-7E = one byte ASCII
+A1-FE = two byte PRC Kanji
+See GB 2312-80
+PCL Symbol Set Id: 18C</td>
+ <td></td>
+ <td>csGB2312</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Big5</td>
+ <td>Big5</td>
+ <td>2026</td>
+ <td>Chinese for Taiwan Multi-byte set.
+PCL Symbol Set Id: 18T</td>
+ <td></td>
+ <td>csBig5</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>macintosh</td>
+ <td>2027</td>
+ <td>The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>mac<br />csMacintosh</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM037</td>
+ <td>2028</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp037<br />ebcdic-cp-us<br />ebcdic-cp-ca<br />ebcdic-cp-wt<br />ebcdic-cp-nl<br />csIBM037</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM038</td>
+ <td>2029</td>
+ <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>EBCDIC-INT<br />cp038<br />csIBM038</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM273</td>
+ <td>2030</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP273<br />csIBM273</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM274</td>
+ <td>2031</td>
+ <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>EBCDIC-BE<br />CP274<br />csIBM274</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM275</td>
+ <td>2032</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>EBCDIC-BR<br />cp275<br />csIBM275</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM277</td>
+ <td>2033</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>EBCDIC-CP-DK<br />EBCDIC-CP-NO<br />csIBM277</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM278</td>
+ <td>2034</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP278<br />ebcdic-cp-fi<br />ebcdic-cp-se<br />csIBM278</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM280</td>
+ <td>2035</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP280<br />ebcdic-cp-it<br />csIBM280</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM281</td>
+ <td>2036</td>
+ <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>EBCDIC-JP-E<br />cp281<br />csIBM281</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM284</td>
+ <td>2037</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP284<br />ebcdic-cp-es<br />csIBM284</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM285</td>
+ <td>2038</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP285<br />ebcdic-cp-gb<br />csIBM285</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM290</td>
+ <td>2039</td>
+ <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp290<br />EBCDIC-JP-kana<br />csIBM290</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM297</td>
+ <td>2040</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp297<br />ebcdic-cp-fr<br />csIBM297</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM420</td>
+ <td>2041</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990,
+IBM NLS RM p 11-11</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp420<br />ebcdic-cp-ar1<br />csIBM420</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM423</td>
+ <td>2042</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp423<br />ebcdic-cp-gr<br />csIBM423</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM424</td>
+ <td>2043</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp424<br />ebcdic-cp-he<br />csIBM424</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM437</td>
+ <td>2011</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp437<br />437<br />csPC8CodePage437</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM500</td>
+ <td>2044</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP500<br />ebcdic-cp-be<br />ebcdic-cp-ch<br />csIBM500</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM851</td>
+ <td>2045</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp851<br />851<br />csIBM851</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM852</td>
+ <td>2010</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp852<br />852<br />csPCp852</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM855</td>
+ <td>2046</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp855<br />855<br />csIBM855</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM857</td>
+ <td>2047</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp857<br />857<br />csIBM857</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM860</td>
+ <td>2048</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp860<br />860<br />csIBM860</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM861</td>
+ <td>2049</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp861<br />861<br />cp-is<br />csIBM861</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM863</td>
+ <td>2050</td>
+ <td>IBM Keyboard layouts and code pages, PN 07G4586 June 1991</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp863<br />863<br />csIBM863</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM864</td>
+ <td>2051</td>
+ <td>IBM Keyboard layouts and code pages, PN 07G4586 June 1991</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp864<br />csIBM864</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM865</td>
+ <td>2052</td>
+ <td>IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp865<br />865<br />csIBM865</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM868</td>
+ <td>2053</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP868<br />cp-ar<br />csIBM868</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM869</td>
+ <td>2054</td>
+ <td>IBM Keyboard layouts and code pages, PN 07G4586 June 1991</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp869<br />869<br />cp-gr<br />csIBM869</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM870</td>
+ <td>2055</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP870<br />ebcdic-cp-roece<br />ebcdic-cp-yu<br />csIBM870</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM871</td>
+ <td>2056</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP871<br />ebcdic-cp-is<br />csIBM871</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM880</td>
+ <td>2057</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp880<br />EBCDIC-Cyrillic<br />csIBM880</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM891</td>
+ <td>2058</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp891<br />csIBM891</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM903</td>
+ <td>2059</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp903<br />csIBM903</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM904</td>
+ <td>2060</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>cp904<br />904<br />csIBBM904</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM905</td>
+ <td>2061</td>
+ <td>IBM 3174 Character Set Ref, GA27-3831-02, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP905<br />ebcdic-cp-tr<br />csIBM905</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM918</td>
+ <td>2062</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP918<br />ebcdic-cp-ar2<br />csIBM918</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM1026</td>
+ <td>2063</td>
+ <td>IBM NLS RM Vol2 SE09-8002-01, March 1990</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>CP1026<br />csIBM1026</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-AT-DE</td>
+ <td>2064</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csIBMEBCDICATDE</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-AT-DE-A</td>
+ <td>2065</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICATDEA</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-CA-FR</td>
+ <td>2066</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICCAFR</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-DK-NO</td>
+ <td>2067</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICDKNO</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-DK-NO-A</td>
+ <td>2068</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICDKNOA</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-FI-SE</td>
+ <td>2069</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICFISE</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-FI-SE-A</td>
+ <td>2070</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICFISEA</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-FR</td>
+ <td>2071</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICFR</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-IT</td>
+ <td>2072</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICIT</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-PT</td>
+ <td>2073</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICPT</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-ES</td>
+ <td>2074</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICES</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-ES-A</td>
+ <td>2075</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICESA</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-ES-S</td>
+ <td>2076</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICESS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-UK</td>
+ <td>2077</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICUK</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>EBCDIC-US</td>
+ <td>2078</td>
+ <td>IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csEBCDICUS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>UNKNOWN-8BIT</td>
+ <td>2079</td>
+ <td></td>
+ <td>[<a href="http://www.iana.org/go/rfc1428">RFC1428</a>]</td>
+ <td>csUnknown8BiT</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>MNEMONIC</td>
+ <td>2080</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>], also known as "mnemonic+ascii+38"</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csMnemonic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>MNEM</td>
+ <td>2081</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>], also known as "mnemonic+ascii+8200"</td>
+ <td>[<a href="http://www.iana.org/go/rfc1345">RFC1345</a>][<a href="#Keld_Simonsen">Keld_Simonsen</a>]</td>
+ <td>csMnem</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>VISCII</td>
+ <td>2082</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1456">RFC1456</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1456">RFC1456</a>]</td>
+ <td>csVISCII</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>VIQR</td>
+ <td>2083</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc1456">RFC1456</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc1456">RFC1456</a>]</td>
+ <td>csVIQR</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>KOI8-R</td>
+ <td>KOI8-R</td>
+ <td>2084</td>
+ <td>[<a href="http://www.iana.org/go/rfc1489">RFC1489</a>], based on GOST-19768-74, ISO-6937/8,
+INIS-Cyrillic, ISO-5427.</td>
+ <td>[<a href="http://www.iana.org/go/rfc1489">RFC1489</a>]</td>
+ <td>csKOI8R</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>HZ-GB-2312</td>
+ <td>2085</td>
+ <td>[<a href="http://www.iana.org/go/rfc1842">RFC1842</a>], [<a href="http://www.iana.org/go/rfc1843">RFC1843</a>][<a href="http://www.iana.org/go/rfc1843">RFC1843</a>][<a href="http://www.iana.org/go/rfc1842">RFC1842</a>]</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM866</td>
+ <td>2086</td>
+ <td>IBM NLDG Volume 2 (SE09-8002-03) August 1994</td>
+ <td>[<a href="#Rick_Pond">Rick_Pond</a>]</td>
+ <td>cp866<br />866<br />csIBM866</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM775</td>
+ <td>2087</td>
+ <td>HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996</td>
+ <td>[Hewlett-Packard Company, "HP PCL 5 Comparison Guide",
+(P/N 5021-0329) pp B-13, 1996.]</td>
+ <td>cp775<br />csPC775Baltic</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>KOI8-U</td>
+ <td>2088</td>
+ <td>
+ [<a href="http://www.iana.org/go/rfc2319">RFC2319</a>]
+ </td>
+ <td>[<a href="http://www.iana.org/go/rfc2319">RFC2319</a>]</td>
+ <td>csKOI8U</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM00858</td>
+ <td>2089</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM00858">http://www.iana.org/assignments/charset-reg/IBM00858</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID00858<br />CP00858<br />PC-Multilingual-850+euro<br />csIBM00858</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM00924</td>
+ <td>2090</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM00924">http://www.iana.org/assignments/charset-reg/IBM00924</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID00924<br />CP00924<br />ebcdic-Latin9--euro<br />csIBM00924</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01140</td>
+ <td>2091</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01140">http://www.iana.org/assignments/charset-reg/IBM01140</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01140<br />CP01140<br />ebcdic-us-37+euro<br />csIBM01140</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01141</td>
+ <td>2092</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01141">http://www.iana.org/assignments/charset-reg/IBM01141</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01141<br />CP01141<br />ebcdic-de-273+euro<br />csIBM01141</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01142</td>
+ <td>2093</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01142">http://www.iana.org/assignments/charset-reg/IBM01142</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01142<br />CP01142<br />ebcdic-dk-277+euro<br />ebcdic-no-277+euro<br />csIBM01142</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01143</td>
+ <td>2094</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01143">http://www.iana.org/assignments/charset-reg/IBM01143</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01143<br />CP01143<br />ebcdic-fi-278+euro<br />ebcdic-se-278+euro<br />csIBM01143</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01144</td>
+ <td>2095</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01144">http://www.iana.org/assignments/charset-reg/IBM01144</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01144<br />CP01144<br />ebcdic-it-280+euro<br />csIBM01144</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01145</td>
+ <td>2096</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01145">http://www.iana.org/assignments/charset-reg/IBM01145</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01145<br />CP01145<br />ebcdic-es-284+euro<br />csIBM01145</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01146</td>
+ <td>2097</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01146">http://www.iana.org/assignments/charset-reg/IBM01146</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01146<br />CP01146<br />ebcdic-gb-285+euro<br />csIBM01146</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01147</td>
+ <td>2098</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01147">http://www.iana.org/assignments/charset-reg/IBM01147</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01147<br />CP01147<br />ebcdic-fr-297+euro<br />csIBM01147</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01148</td>
+ <td>2099</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01148">http://www.iana.org/assignments/charset-reg/IBM01148</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01148<br />CP01148<br />ebcdic-international-500+euro<br />csIBM01148</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM01149</td>
+ <td>2100</td>
+ <td>IBM See [<a href="http://www.iana.org/assignments/charset-reg/IBM01149">http://www.iana.org/assignments/charset-reg/IBM01149</a>] [<a href="#Tamer_Mahdi">Tamer_Mahdi</a>]</td>
+ <td></td>
+ <td>CCSID01149<br />CP01149<br />ebcdic-is-871+euro<br />csIBM01149</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Big5-HKSCS</td>
+ <td>2101</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/Big5-HKSCS">http://www.iana.org/assignments/charset-reg/Big5-HKSCS</a>]</td>
+ <td>[<a href="#Nicky_Yick">Nicky_Yick</a>]</td>
+ <td>csBig5HKSCS</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>IBM1047</td>
+ <td>2102</td>
+ <td>IBM1047 (EBCDIC Latin 1/Open Systems)
+[<a href="http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf">http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf</a>]</td>
+ <td>[<a href="#Reuel_Robrigado">Reuel_Robrigado</a>]</td>
+ <td>IBM-1047<br />csIBM1047</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>PTCP154</td>
+ <td>2103</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/PTCP154">http://www.iana.org/assignments/charset-reg/PTCP154</a>]</td>
+ <td>[<a href="#Alexander_Uskov">Alexander_Uskov</a>]</td>
+ <td>csPTCP154<br />PT154<br />CP154<br />Cyrillic-Asian<br />csPTCP154</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Amiga-1251</td>
+ <td>2104</td>
+ <td>See [<a href="http://www.amiga.ultranet.ru/Amiga-1251.html">http://www.amiga.ultranet.ru/Amiga-1251.html</a>]</td>
+ <td></td>
+ <td>Ami1251<br />Amiga1251<br />Ami-1251<br />csAmiga1251
+(Aliases are provided for historical reasons and should not be used) [Malyshev]</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>KOI7-switched</td>
+ <td>2105</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/KOI7-switched">http://www.iana.org/assignments/charset-reg/KOI7-switched</a>]</td>
+ <td></td>
+ <td>csKOI7switched</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>BRF</td>
+ <td>2106</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/BRF">http://www.iana.org/assignments/charset-reg/BRF</a>] [<a href="#Samuel_Thibault">Samuel_Thibault</a>]</td>
+ <td></td>
+ <td>csBRF</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>TSCII</td>
+ <td>2107</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/TSCII">http://www.iana.org/assignments/charset-reg/TSCII</a>] [<a href="#Kuppuswamy_Kalyanasu">Kuppuswamy_Kalyanasu</a>]</td>
+ <td></td>
+ <td>csTSCII</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CP51932</td>
+ <td>2108</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/CP51932">http://www.iana.org/assignments/charset-reg/CP51932</a>] [<a href="#Yui_Naruse">Yui_Naruse</a>]</td>
+ <td></td>
+ <td>csCP51932</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-874</td>
+ <td>2109</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/windows-874">http://www.iana.org/assignments/charset-reg/windows-874</a>] [<a href="#Shawn_Steele">Shawn_Steele</a>]</td>
+ <td></td>
+ <td>cswindows874</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1250</td>
+ <td>2250</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1250">http://www.iana.org/assignments/charset-reg/windows-1250</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1250</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1251</td>
+ <td>2251</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1251">http://www.iana.org/assignments/charset-reg/windows-1251</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1251</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1252</td>
+ <td>2252</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1252">http://www.iana.org/assignments/charset-reg/windows-1252</a>] [<a href="#Chris_Wendt">Chris_Wendt</a>]</td>
+ <td></td>
+ <td>cswindows1252</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1253</td>
+ <td>2253</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1253">http://www.iana.org/assignments/charset-reg/windows-1253</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1253</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1254</td>
+ <td>2254</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1254">http://www.iana.org/assignments/charset-reg/windows-1254</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1254</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1255</td>
+ <td>2255</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1255">http://www.iana.org/assignments/charset-reg/windows-1255</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1255</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1256</td>
+ <td>2256</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1256">http://www.iana.org/assignments/charset-reg/windows-1256</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1256</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1257</td>
+ <td>2257</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1257">http://www.iana.org/assignments/charset-reg/windows-1257</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1257</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>windows-1258</td>
+ <td>2258</td>
+ <td>Microsoft [<a href="http://www.iana.org/assignments/charset-reg/windows-1258">http://www.iana.org/assignments/charset-reg/windows-1258</a>] [<a href="#Katya_Lazhintseva">Katya_Lazhintseva</a>]</td>
+ <td></td>
+ <td>cswindows1258</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>TIS-620</td>
+ <td>2259</td>
+ <td>Thai Industrial Standards Institute (TISI) [<a href="#Trin_Tantsetthi">Trin_Tantsetthi</a>]</td>
+ <td></td>
+ <td>csTIS620</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>CP50220</td>
+ <td>2260</td>
+ <td>See [<a href="http://www.iana.org/assignments/charset-reg/CP50220">http://www.iana.org/assignments/charset-reg/CP50220</a>] [<a href="#Yui_Naruse">Yui_Naruse</a>]</td>
+ <td></td>
+ <td>csCP50220</td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ <h1 class="people">People</h1>
+ <table class="sortable">
+ <thead>
+ <tr>
+ <th>ID</th>
+ <th>Name</th>
+ <th>Contact URI</th>
+ <th>Last Updated</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <a name="Alexander_Uskov" id="Alexander_Uskov">[Alexander_Uskov]</a>
+ </td>
+ <td>Alexander Uskov</td>
+ <td>
+ <a href="mailto:auskov&amp;idc.kz">mailto:auskov&amp;idc.kz</a>
+ </td>
+ <td>2002-09</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Alexei_Veremeev" id="Alexei_Veremeev">[Alexei_Veremeev]</a>
+ </td>
+ <td>Alexei Veremeev</td>
+ <td>
+ <a href="mailto:Alexey.Veremeev&amp;oracle.com">mailto:Alexey.Veremeev&amp;oracle.com</a>
+ </td>
+ <td>2006-12-07</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Chris_Wendt" id="Chris_Wendt">[Chris_Wendt]</a>
+ </td>
+ <td>Chris Wendt</td>
+ <td>
+ <a href="mailto:christw&amp;microsoft.com">mailto:christw&amp;microsoft.com</a>
+ </td>
+ <td>1999-12</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Hank_Nussbacher" id="Hank_Nussbacher">[Hank_Nussbacher]</a>
+ </td>
+ <td>Hank Nussbacher</td>
+ <td>
+ <a href="mailto:hank&amp;vm.tau.ac.il">mailto:hank&amp;vm.tau.ac.il</a>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <a name="IANA" id="IANA">[IANA]</a>
+ </td>
+ <td>Internet Assigned Numbers Authority</td>
+ <td>
+ <a href="mailto:iana&amp;iana.org">mailto:iana&amp;iana.org</a>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Jun_Murai" id="Jun_Murai">[Jun_Murai]</a>
+ </td>
+ <td>Jun Murai</td>
+ <td>
+ <a href="mailto:jun&amp;wide.ad.jp">mailto:jun&amp;wide.ad.jp</a>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Katya_Lazhintseva" id="Katya_Lazhintseva">[Katya_Lazhintseva]</a>
+ </td>
+ <td>Katya Lazhintseva</td>
+ <td>
+ <a href="mailto:katyal&amp;microsoft.com">mailto:katyal&amp;microsoft.com</a>
+ </td>
+ <td>1996-05</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Keld_Simonsen" id="Keld_Simonsen">[Keld_Simonsen]</a>
+ </td>
+ <td>Keld Simonsen</td>
+ <td>
+ <a href="mailto:Keld.Simonsen&amp;dkuug.dk">mailto:Keld.Simonsen&amp;dkuug.dk</a>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Keld_Simonsen_2" id="Keld_Simonsen_2">[Keld_Simonsen_2]</a>
+ </td>
+ <td>Keld Simonsen</td>
+ <td>
+ <a href="mailto:Keld.Simonsen&amp;rap.dk">mailto:Keld.Simonsen&amp;rap.dk</a>
+ </td>
+ <td>2000-08</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Kuppuswamy_Kalyanasu" id="Kuppuswamy_Kalyanasu">[Kuppuswamy_Kalyanasu]</a>
+ </td>
+ <td>Kuppuswamy Kalyanasundaram</td>
+ <td>
+ <a href="mailto:kalyan.geo&amp;yahoo.com">mailto:kalyan.geo&amp;yahoo.com</a>
+ </td>
+ <td>2007-05-14</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Mark_Davis" id="Mark_Davis">[Mark_Davis]</a>
+ </td>
+ <td>Mark Davis</td>
+ <td>
+ <a href="mailto:mark&amp;unicode.org">mailto:mark&amp;unicode.org</a>
+ </td>
+ <td>2002-04</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Markus_Scherer" id="Markus_Scherer">[Markus_Scherer]</a>
+ </td>
+ <td>Markus Scherer</td>
+ <td>
+ <a href="mailto:markus.scherer&amp;jtcsv.com">mailto:markus.scherer&amp;jtcsv.com</a>
+ </td>
+ <td>2002-09</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Masataka_Ohta" id="Masataka_Ohta">[Masataka_Ohta]</a>
+ </td>
+ <td>Masataka Ohta</td>
+ <td>
+ <a href="mailto:mohta&amp;cc.titech.ac.jp">mailto:mohta&amp;cc.titech.ac.jp</a>
+ </td>
+ <td>1995-07</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Nicky_Yick" id="Nicky_Yick">[Nicky_Yick]</a>
+ </td>
+ <td>Nicky Yick</td>
+ <td>
+ <a href="mailto:cliac&amp;itsd.gcn.gov.hk">mailto:cliac&amp;itsd.gcn.gov.hk</a>
+ </td>
+ <td>2000-10</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Reuel_Robrigado" id="Reuel_Robrigado">[Reuel_Robrigado]</a>
+ </td>
+ <td>Reuel Robrigado</td>
+ <td>
+ <a href="mailto:reuelr&amp;ca.ibm.com">mailto:reuelr&amp;ca.ibm.com</a>
+ </td>
+ <td>2002-09</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Rick_Pond" id="Rick_Pond">[Rick_Pond]</a>
+ </td>
+ <td>Rick Pond</td>
+ <td>
+ <a href="mailto:rickpond&amp;vnet.ibm.com">mailto:rickpond&amp;vnet.ibm.com</a>
+ </td>
+ <td>1997-03</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Sairan_M_Kikkarin" id="Sairan_M_Kikkarin">[Sairan_M_Kikkarin]</a>
+ </td>
+ <td>Sairan M. Kikkarin</td>
+ <td>
+ <a href="mailto:sairan&amp;sci.kz">mailto:sairan&amp;sci.kz</a>
+ </td>
+ <td>2006-12-07</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Samuel_Thibault" id="Samuel_Thibault">[Samuel_Thibault]</a>
+ </td>
+ <td>Samuel Thibault</td>
+ <td>
+ <a href="mailto:samuel.thibault&amp;ens-lyon.org">mailto:samuel.thibault&amp;ens-lyon.org</a>
+ </td>
+ <td>2006-12-07</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Shawn_Steele" id="Shawn_Steele">[Shawn_Steele]</a>
+ </td>
+ <td>Shawn Steele</td>
+ <td>
+ <a href="mailto:Shawn.Steele&amp;microsoft.com">mailto:Shawn.Steele&amp;microsoft.com</a>
+ </td>
+ <td>2010-11-04</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Tamer_Mahdi" id="Tamer_Mahdi">[Tamer_Mahdi]</a>
+ </td>
+ <td>Tamer Mahdi</td>
+ <td>
+ <a href="mailto:tamer&amp;ca.ibm.com">mailto:tamer&amp;ca.ibm.com</a>
+ </td>
+ <td>2000-08</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Toby_Phipps" id="Toby_Phipps">[Toby_Phipps]</a>
+ </td>
+ <td>Toby Phipps</td>
+ <td>
+ <a href="mailto:tphipps&amp;peoplesoft.com">mailto:tphipps&amp;peoplesoft.com</a>
+ </td>
+ <td>2002-03</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Trin_Tantsetthi" id="Trin_Tantsetthi">[Trin_Tantsetthi]</a>
+ </td>
+ <td>Trin Tantsetthi</td>
+ <td>
+ <a href="mailto:trin&amp;mozart.inet.co.th">mailto:trin&amp;mozart.inet.co.th</a>
+ </td>
+ <td>1998-09</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Vladas_Tumasonis" id="Vladas_Tumasonis">[Vladas_Tumasonis]</a>
+ </td>
+ <td>Vladas Tumasonis</td>
+ <td>
+ <a href="mailto:vladas.tumasonis&amp;maf.vu.lt">mailto:vladas.tumasonis&amp;maf.vu.lt</a>
+ </td>
+ <td>2000-08</td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Woohyong_Choi" id="Woohyong_Choi">[Woohyong_Choi]</a>
+ </td>
+ <td>Woohyong Choi</td>
+ <td>
+ <a href="mailto:whchoi&amp;cosmos.kaist.ac.kr">mailto:whchoi&amp;cosmos.kaist.ac.kr</a>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <a name="Yui_Naruse" id="Yui_Naruse">[Yui_Naruse]</a>
+ </td>
+ <td>Yui Naruse</td>
+ <td>
+ <a href="mailto:naruse&amp;airemix.jp">mailto:naruse&amp;airemix.jp</a>
+ </td>
+ <td>2011-09-23</td>
+ </tr>
+ </tbody>
+ </table>
+ </body>
+</html>
diff --git a/os400/iconv/ianatables.c b/os400/iconv/ianatables.c
new file mode 100644
index 0000000..44b29c6
--- /dev/null
+++ b/os400/iconv/ianatables.c
@@ -0,0 +1,4609 @@
+/**
+*** Character set names table.
+*** Generated by program BLDCSNDFA from IANA character set assignment file
+*** and CCSID/MIBenum equivalence file.
+*** *** Do not edit by hand ***
+**/
+
+/**
+*** CCSID For arg Recognized name.
+*** 62245 X IBMCCSID62245 ibm-62245
+*** 62235 X IBMCCSID62235 ibm-62235
+*** 62224 X IBMCCSID62224 ibm-62224
+*** 62211 X IBMCCSID62211 ibm-62211
+*** 61952 X IBMCCSID61952 ibm-61952
+*** 57345 IBMCCSID57345 ibm-57345
+*** 33722 X csEUCPkdFmtJapanese
+*** Extended_UNIX_Code_Packed_Format_for_Japanese EUC-JP
+*** iana-18 IBMCCSID33722 ibm-33722
+*** 28709 X IBMCCSID28709 ibm-28709
+*** 25546 IBMCCSID25546 ibm-25546
+*** 17354 X IBMCCSID17354 ibm-17354
+*** 13488 X csUnicode ISO-10646-UCS-2 UCS2 UCS-2 iana-1000
+*** IBMCCSID13488 ibm-13488
+*** 13124 X IBMCCSID13124 ibm-13124
+*** 13121 X IBMCCSID13121 ibm-13121
+*** 12708 X IBMCCSID12708 ibm-12708
+*** 9449 cswindows1257 windows-1257 iana-2257 IBMCCSID09449
+*** ibm-9449
+*** 9448 cswindows1256 windows-1256 iana-2256 IBMCCSID09448
+*** ibm-9448
+*** 9447 cswindows1255 windows-1255 iana-2255 IBMCCSID09447
+*** ibm-9447
+*** 9066 X IBMCCSID09066 ibm-9066
+*** 9056 X IBMCCSID09056 ibm-9056
+*** 9030 X IBMCCSID09030 ibm-9030
+*** 8612 X IBMCCSID08612 ibm-8612
+*** 5478 csISO58GB231280 iso-ir-58 GB_2312-80 chinese iana-57
+*** IBMCCSID05478 ibm-5478
+*** 5123 X IBMCCSID05123 ibm-5123
+*** 5350 X cswindows1254 windows-1254 iana-2254 IBMCCSID05350
+*** ibm-5350
+*** 5349 X cswindows1253 windows-1253 iana-2253 IBMCCSID05349
+*** ibm-5349
+*** 5348 X cswindows1252 windows-1252 iana-2252 IBMCCSID05348
+*** ibm-5348
+*** 5347 X cswindows1251 windows-1251 iana-2251 IBMCCSID05347
+*** ibm-5347
+*** 5346 X cswindows1250 windows-1250 iana-2250 IBMCCSID05346
+*** ibm-5346
+*** 5354 cswindows1258 windows-1258 iana-2258 IBMCCSID05354
+*** ibm-5354
+*** 5055 X IBMCCSID05055 ibm-5055
+*** 5054 X IBMCCSID05054 ibm-5054
+*** 5053 X IBMCCSID05053 ibm-5053
+*** 5052 X IBMCCSID05052 ibm-5052
+*** 5050 X IBMCCSID05050 ibm-5050
+*** 5035 X IBMCCSID05035 ibm-5035
+*** 5026 X IBMCCSID05026 ibm-5026
+*** 4971 X IBMCCSID04971 ibm-4971
+*** 4965 IBMCCSID04965 ibm-4965
+*** 4960 X IBMCCSID04960 ibm-4960
+*** 4953 IBMCCSID04953 ibm-4953
+*** 4952 X IBMCCSID04952 ibm-4952
+*** 4951 X IBMCCSID04951 ibm-4951
+*** 4948 X IBMCCSID04948 ibm-4948
+*** 4396 X IBMCCSID04396 ibm-4396
+*** 1399 X IBMCCSID01399 ibm-1399
+*** 1392 X IBMCCSID01392 ibm-1392
+*** 1388 X IBMCCSID01388 ibm-1388
+*** 1386 X csGBK windows-936 MS936 CP936 GBK iana-113
+*** IBMCCSID01386 ibm-1386
+*** 1383 X csGB2312 GB2312 EUC-CN iana-2025 IBMCCSID01383
+*** ibm-1383
+*** 1381 X IBMCCSID01381 ibm-1381
+*** 1380 X IBMCCSID01380 ibm-1380
+*** 1375 csBig5HKSCS Big5-HKSCS iana-2101 IBMCCSID01375
+*** ibm-1375
+*** 1373 IBMCCSID01373 ibm-1373
+*** 1364 X IBMCCSID01364 ibm-1364
+*** 1363 X csKSC56011987 KSC_5601 KS_C_5601-1989 iso-ir-149
+*** KS_C_5601-1987 korean iana-36 IBMCCSID01363 ibm-1363
+*** 1283 X IBMCCSID01283 ibm-1283
+*** 1282 X IBMCCSID01282 ibm-1282
+*** 1281 X IBMCCSID01281 ibm-1281
+*** 1280 X IBMCCSID01280 ibm-1280
+*** 1276 csAdobeStandardEncoding Adobe-Standard-Encoding
+*** iana-2005 IBMCCSID01276 ibm-1276
+*** 1275 X IBMCCSID01275 ibm-1275
+*** 1258 X IBMCCSID01258 ibm-1258
+*** 1257 X IBMCCSID01257 ibm-1257
+*** 1256 X IBMCCSID01256 ibm-1256
+*** 1255 X IBMCCSID01255 ibm-1255
+*** 1254 X IBMCCSID01254 ibm-1254
+*** 1253 X IBMCCSID01253 ibm-1253
+*** 1252 X csWindows31Latin1 ISO-8859-1-Windows-3.1-Latin-1
+*** iana-2001 IBMCCSID01252 ibm-1252
+*** 1251 X IBMCCSID01251 ibm-1251
+*** 1250 X csWindows31Latin2 ISO-8859-2-Windows-Latin-2 iana-2002
+*** IBMCCSID01250 ibm-1250
+*** 1235 csUTF32LE UTF-32LE UTF-32-LE UTF32LE UTF32-LE
+*** iana-1019 IBMCCSID01235 ibm-1235
+*** 1233 csUTF32BE UTF-32BE UTF-32-BE UTF32BE UTF32-BE
+*** iana-1018 IBMCCSID01233 ibm-1233
+*** 1208 X csUTF8 UTF-8 UTF8 iana-106 IBMCCSID01208 ibm-1208
+*** 1203 csUTF16LE UTF-16LE UTF-16-LE UTF16LE UTF16-LE
+*** iana-1014 IBMCCSID01203 ibm-1203
+*** 1201 csUTF16BE UTF-16BE UTF-16-BE UTF16BE UTF16-BE
+*** iana-1013 IBMCCSID01201 ibm-1201
+*** 1164 X IBMCCSID01164 ibm-1164
+*** 1160 X IBMCCSID01160 ibm-1160
+*** 1158 X IBMCCSID01158 ibm-1158
+*** 1157 X IBMCCSID01157 ibm-1157
+*** 1156 X IBMCCSID01156 ibm-1156
+*** 1155 X IBMCCSID01155 ibm-1155
+*** 1154 X IBMCCSID01154 ibm-1154
+*** 1153 X IBMCCSID01153 ibm-1153
+*** 1149 X csIBM01149 ebcdic-is-871+euro CP01149 CCSID01149
+*** IBM01149 iana-2100 IBMCCSID01149 ibm-1149
+*** 1148 X csIBM01148 ebcdic-international-500+euro CP01148
+*** CCSID01148 IBM01148 iana-2099 IBMCCSID01148 ibm-1148
+*** 1147 X csIBM01147 ebcdic-fr-297+euro CP01147 CCSID01147
+*** IBM01147 iana-2098 IBMCCSID01147 ibm-1147
+*** 1146 X csIBM01146 ebcdic-gb-285+euro CP01146 CCSID01146
+*** IBM01146 iana-2097 IBMCCSID01146 ibm-1146
+*** 1145 X csIBM01145 ebcdic-es-284+euro CP01145 CCSID01145
+*** IBM01145 iana-2096 IBMCCSID01145 ibm-1145
+*** 1144 X csIBM01144 ebcdic-it-280+euro CP01144 CCSID01144
+*** IBM01144 iana-2095 IBMCCSID01144 ibm-1144
+*** 1143 X csIBM01143 ebcdic-se-278+euro ebcdic-fi-278+euro
+*** CP01143 CCSID01143 IBM01143 iana-2094 IBMCCSID01143
+*** ibm-1143
+*** 1142 X csIBM01142 ebcdic-no-277+euro ebcdic-dk-277+euro
+*** CP01142 CCSID01142 IBM01142 iana-2093 IBMCCSID01142
+*** ibm-1142
+*** 1141 X csIBM01141 ebcdic-de-273+euro CP01141 CCSID01141
+*** IBM01141 iana-2092 IBMCCSID01141 ibm-1141
+*** 1140 X csIBM01140 ebcdic-us-37+euro CP01140 CCSID01140
+*** IBM01140 iana-2091 IBMCCSID01140 ibm-1140
+*** 1137 X IBMCCSID01137 ibm-1137
+*** 1133 IBMCCSID01133 ibm-1133
+*** 1132 X IBMCCSID01132 ibm-1132
+*** 1130 X IBMCCSID01130 ibm-1130
+*** 1129 X IBMCCSID01129 ibm-1129
+*** 1123 X IBMCCSID01123 ibm-1123
+*** 1122 X IBMCCSID01122 ibm-1122
+*** 1115 IBMCCSID01115 ibm-1115
+*** 1114 IBMCCSID01114 ibm-1114
+*** 1112 X IBMCCSID01112 ibm-1112
+*** 1098 X IBMCCSID01098 ibm-1098
+*** 1097 X IBMCCSID01097 ibm-1097
+*** 1089 X csISOLatinArabic arabic ASMO-708 ECMA-114 ISO_8859-6
+*** iso-ir-127 ISO_8859-6:1987 ISO-8859-6 iana-9
+*** IBMCCSID01089 ibm-1089
+*** 1088 IBMCCSID01088 ibm-1088
+*** 1051 X csHPRoman8 r8 roman8 hp-roman8 iana-2004 IBMCCSID01051
+*** ibm-1051
+*** 1047 X csIBM1047 IBM-1047 IBM1047 iana-2102 IBMCCSID01047
+*** ibm-1047
+*** 1046 X IBMCCSID01046 ibm-1046
+*** 1043 IBMCCSID01043 ibm-1043
+*** 1042 IBMCCSID01042 ibm-1042
+*** 1041 IBMCCSID01041 ibm-1041
+*** 1040 IBMCCSID01040 ibm-1040
+*** 1027 X IBMCCSID01027 ibm-1027
+*** 1026 X csIBM1026 CP1026 IBM1026 iana-2063 IBMCCSID01026
+*** ibm-1026
+*** 1025 X IBMCCSID01025 ibm-1025
+*** 1019 X IBMCCSID01019 ibm-1019
+*** 1018 X IBMCCSID01018 ibm-1018
+*** 1017 X IBMCCSID01017 ibm-1017
+*** 1016 X IBMCCSID01016 ibm-1016
+*** 1015 X IBMCCSID01015 ibm-1015
+*** 1014 X IBMCCSID01014 ibm-1014
+*** 1013 X IBMCCSID01013 ibm-1013
+*** 1012 X IBMCCSID01012 ibm-1012
+*** 1011 X IBMCCSID01011 ibm-1011
+*** 1010 X IBMCCSID01010 ibm-1010
+*** 1009 X IBMCCSID01009 ibm-1009
+*** 1008 IBMCCSID01008 ibm-1008
+*** 970 X csEUCKR EUC-KR iana-38 IBMCCSID00970 ibm-970
+*** 965 X IBMCCSID00965 ibm-965
+*** 964 X IBMCCSID00964 ibm-964
+*** 959 X IBMCCSID00959 ibm-959
+*** 958 X IBMCCSID00958 ibm-958
+*** 957 X IBMCCSID00957 ibm-957
+*** 956 X IBMCCSID00956 ibm-956
+*** 951 X IBMCCSID00951 ibm-951
+*** 950 X IBMCCSID00950 ibm-950
+*** 949 X IBMCCSID00949 ibm-949
+*** 947 X IBMCCSID00947 ibm-947
+*** 946 X IBMCCSID00946 ibm-946
+*** 944 X IBMCCSID00944 ibm-944
+*** 943 X csShiftJIS MS_Kanji Shift_JIS iana-17 IBMCCSID00943
+*** ibm-943
+*** 942 X IBMCCSID00942 ibm-942
+*** 939 X IBMCCSID00939 ibm-939
+*** 938 X IBMCCSID00938 ibm-938
+*** 937 X IBMCCSID00937 ibm-937
+*** 936 IBMCCSID00936 ibm-936
+*** 935 X IBMCCSID00935 ibm-935
+*** 934 X IBMCCSID00934 ibm-934
+*** 933 X IBMCCSID00933 ibm-933
+*** 932 X IBMCCSID00932 ibm-932
+*** 930 X IBMCCSID00930 ibm-930
+*** 928 X IBMCCSID00928 ibm-928
+*** 927 X IBMCCSID00927 ibm-927
+*** 926 X IBMCCSID00926 ibm-926
+*** 924 X csIBM00924 ebcdic-Latin9--euro CP00924 CCSID00924
+*** IBM00924 iana-2090 IBMCCSID00924 ibm-924
+*** 923 X csISO885915 Latin-9 ISO_8859-15 ISO-8859-15 iana-111
+*** IBMCCSID00923 ibm-923
+*** 922 X IBMCCSID00922 ibm-922
+*** 921 X csISO885913 ISO-8859-13 iana-109 IBMCCSID00921 ibm-921
+*** 920 X csISOLatin5 l5 latin5 ISO_8859-9 iso-ir-148
+*** ISO_8859-9:1989 ISO-8859-9 iana-12 IBMCCSID00920
+*** ibm-920
+*** 918 X csIBM918 ebcdic-cp-ar2 CP918 IBM918 iana-2062
+*** IBMCCSID00918 ibm-918
+*** 916 X csISOLatinHebrew hebrew ISO_8859-8 iso-ir-138
+*** ISO_8859-8:1988 ISO-8859-8 iana-11 IBMCCSID00916
+*** ibm-916
+*** 915 X csISOLatinCyrillic cyrillic ISO_8859-5 iso-ir-144
+*** ISO_8859-5:1988 ISO-8859-5 iana-8 IBMCCSID00915
+*** ibm-915
+*** 914 X csISOLatin4 l4 latin4 ISO_8859-4 iso-ir-110
+*** ISO_8859-4:1988 ISO-8859-4 iana-7 IBMCCSID00914
+*** ibm-914
+*** 913 csISOLatin3 l3 latin3 ISO_8859-3 iso-ir-109
+*** ISO_8859-3:1988 ISO-8859-3 iana-6 IBMCCSID00913
+*** ibm-913
+*** 912 X csISOLatin2 l2 latin2 ISO_8859-2 iso-ir-101
+*** ISO_8859-2:1987 ISO-8859-2 iana-5 IBMCCSID00912
+*** ibm-912
+*** 905 X csIBM905 ebcdic-cp-tr CP905 IBM905 iana-2061
+*** IBMCCSID00905 ibm-905
+*** 904 csIBBM904 904 cp904 IBM904 iana-2060 IBMCCSID00904
+*** ibm-904
+*** 903 csIBM903 cp903 IBM903 iana-2059 IBMCCSID00903 ibm-903
+*** 897 X csHalfWidthKatakana X0201 JIS_X0201 iana-15
+*** IBMCCSID00897 ibm-897
+*** 896 IBMCCSID00896 ibm-896
+*** 891 X csIBM891 cp891 IBM891 iana-2058 IBMCCSID00891 ibm-891
+*** 880 X csIBM880 EBCDIC-Cyrillic cp880 IBM880 iana-2057
+*** IBMCCSID00880 ibm-880
+*** 878 X csKOI8R KOI8-R iana-2084 IBMCCSID00878 ibm-878
+*** 875 X IBMCCSID00875 ibm-875
+*** 874 X csTIS620 TIS-620 csEUCTH eucTH EUC-TH> iana-2259
+*** IBMCCSID00874 ibm-874
+*** 871 X csIBM871 ebcdic-cp-is CP871 IBM871 iana-2056
+*** IBMCCSID00871 ibm-871
+*** 870 X csIBM870 ebcdic-cp-yu ebcdic-cp-roece CP870 IBM870
+*** iana-2055 IBMCCSID00870 ibm-870
+*** 869 X csIBM869 cp-gr 869 cp869 IBM869 iana-2054
+*** IBMCCSID00869 ibm-869
+*** 868 X csIBM868 cp-ar CP868 IBM868 iana-2053 IBMCCSID00868
+*** ibm-868
+*** 866 X csIBM866 866 cp866 IBM866 iana-2086 IBMCCSID00866
+*** ibm-866
+*** 865 X csIBM865 865 cp865 IBM865 iana-2052 IBMCCSID00865
+*** ibm-865
+*** 864 X csIBM864 cp864 IBM864 iana-2051 IBMCCSID00864 ibm-864
+*** 863 X csIBM863 863 cp863 IBM863 iana-2050 IBMCCSID00863
+*** ibm-863
+*** 862 X csPC862LatinHebrew 862 cp862 IBM862 iana-2013
+*** IBMCCSID00862 ibm-862
+*** 861 X csIBM861 cp-is 861 cp861 IBM861 iana-2049
+*** IBMCCSID00861 ibm-861
+*** 860 X csIBM860 860 cp860 IBM860 iana-2048 IBMCCSID00860
+*** ibm-860
+*** 858 csIBM00858 PC-Multilingual-850+euro CP00858 CCSID00858
+*** IBM00858 iana-2089 IBMCCSID00858 ibm-858
+*** 857 X csIBM857 857 cp857 IBM857 iana-2047 IBMCCSID00857
+*** ibm-857
+*** 855 X csIBM855 855 cp855 IBM855 iana-2046 IBMCCSID00855
+*** ibm-855
+*** 852 X csPCp852 852 cp852 IBM852 iana-2010 IBMCCSID00852
+*** ibm-852
+*** 851 X csIBM851 851 cp851 IBM851 iana-2045 IBMCCSID00851
+*** ibm-851
+*** 850 X csPC850Multilingual 850 cp850 IBM850 iana-2009
+*** IBMCCSID00850 ibm-850
+*** 838 X csIBMThai IBM-Thai iana-2016 IBMCCSID00838 ibm-838
+*** 837 X IBMCCSID00837 ibm-837
+*** 836 X IBMCCSID00836 ibm-836
+*** 835 X IBMCCSID00835 ibm-835
+*** 833 X IBMCCSID00833 ibm-833
+*** 819 X csISOLatin1 CP819 IBM819 l1 latin1 ISO_8859-1
+*** iso-ir-100 ISO_8859-1:1987 ISO-8859-1 iana-4
+*** IBMCCSID00819 ibm-819
+*** 813 X csISOLatinGreek greek8 greek ECMA-118 ELOT_928
+*** ISO_8859-7 iso-ir-126 ISO_8859-7:1987 ISO-8859-7
+*** iana-10 IBMCCSID00813 ibm-813
+*** 775 X csPC775Baltic cp775 IBM775 iana-2087 IBMCCSID00775
+*** ibm-775
+*** 737 X IBMCCSID00737 ibm-737
+*** 720 X IBMCCSID00720 ibm-720
+*** 500 X csIBM500 ebcdic-cp-ch ebcdic-cp-be CP500 IBM500
+*** iana-2044 IBMCCSID00500 ibm-500
+*** 437 X csPC8CodePage437 437 cp437 IBM437 iana-2011
+*** IBMCCSID00437 ibm-437
+*** 424 X csIBM424 ebcdic-cp-he cp424 IBM424 iana-2043
+*** IBMCCSID00424 ibm-424
+*** 423 X csIBM423 ebcdic-cp-gr cp423 IBM423 iana-2042
+*** IBMCCSID00423 ibm-423
+*** 420 X csIBM420 ebcdic-cp-ar1 cp420 IBM420 iana-2041
+*** IBMCCSID00420 ibm-420
+*** 367 X csASCII cp367 IBM367 us ISO646-US ISO_646.irv:1991
+*** ANSI_X3.4-1986 ANSI_X3.4-1968 iso-ir-6 US-ASCII ASCII
+*** iana-3 IBMCCSID00367 ibm-367
+*** 301 X IBMCCSID00301 ibm-301
+*** 300 X IBMCCSID00300 ibm-300
+*** 297 X csIBM297 ebcdic-cp-fr cp297 IBM297 iana-2040
+*** IBMCCSID00297 ibm-297
+*** 290 X csIBM290 EBCDIC-JP-kana cp290 IBM290 iana-2039
+*** IBMCCSID00290 ibm-290
+*** 285 X csIBM285 ebcdic-cp-gb CP285 IBM285 iana-2038
+*** IBMCCSID00285 ibm-285
+*** 284 X csIBM284 ebcdic-cp-es CP284 IBM284 iana-2037
+*** IBMCCSID00284 ibm-284
+*** 280 X csIBM280 ebcdic-cp-it CP280 IBM280 iana-2035
+*** IBMCCSID00280 ibm-280
+*** 278 X csIBM278 ebcdic-cp-se ebcdic-cp-fi CP278 IBM278
+*** iana-2034 IBMCCSID00278 ibm-278
+*** 277 X csIBM277 EBCDIC-CP-NO EBCDIC-CP-DK IBM277 iana-2033
+*** IBMCCSID00277 ibm-277
+*** 273 X csIBM273 CP273 IBM273 iana-2030 IBMCCSID00273 ibm-273
+*** 256 X IBMCCSID00256 ibm-256
+*** 37 X csIBM037 ebcdic-cp-nl ebcdic-cp-wt ebcdic-cp-ca
+*** ebcdic-cp-us cp037 IBM037 EBCDIC iana-2028
+*** IBMCCSID00037 ibm-37
+*** 0 IBMCCSID00000 ibm-0
+**/
+
+/**
+*** 13499 states, 229 finals, 20020 transitions.
+**/
+
+typedef unsigned short t_ccsid;
+typedef unsigned short t_staterange;
+typedef unsigned short t_transrange;
+
+static t_transrange trans_array[] = {
+ 0, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 153,
+ 154, 156, 157, 159, 160, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174,
+ 176, 177, 179, 180, 182, 183, 185, 186, 188, 189, 191, 192, 194, 195, 197,
+ 198, 199, 200, 202, 203, 205, 206, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 233, 234, 235, 236, 238, 239, 241, 242, 243, 245, 246, 248, 249, 251, 252,
+ 254, 256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271,
+ 275, 276, 277, 278, 279, 287, 288, 289, 291, 292, 294, 295, 297, 298, 300,
+ 301, 303, 304, 305, 306, 307, 308, 310, 311, 313, 314, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 357, 358,
+ 359, 360, 361, 362, 363, 365, 366, 367, 368, 370, 371, 373, 374, 376, 377,
+ 378, 380, 381, 383, 384, 386, 387, 389, 390, 392, 393, 394, 396, 398, 400,
+ 401, 402, 403, 409, 410, 411, 412, 413, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 435, 438, 439, 440,
+ 441, 442, 444, 445, 446, 447, 450, 451, 452, 453, 454, 455, 456, 457, 458,
+ 459, 462, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
+ 477, 478, 479, 480, 489, 490, 491, 492, 493, 495, 496, 497, 498, 499, 500,
+ 501, 502, 503, 504, 505, 506, 512, 513, 514, 515, 516, 519, 520, 521, 522,
+ 523, 524, 525, 526, 527, 528, 531, 532, 533, 534, 535, 536, 537, 538, 539,
+ 540, 541, 551, 553, 554, 556, 557, 559, 560, 562, 563, 565, 566, 568, 569,
+ 571, 572, 574, 575, 577, 578, 580, 581, 583, 585, 586, 587, 591, 592, 593,
+ 595, 596, 598, 599, 600, 602, 603, 604, 606, 607, 609, 610, 612, 613, 615,
+ 616, 618, 619, 621, 622, 624, 625, 627, 628, 630, 631, 633, 634, 636, 637,
+ 639, 640, 642, 643, 644, 646, 647, 648, 649, 655, 656, 658, 659, 661, 662,
+ 663, 664, 665, 666, 667, 668, 669, 672, 673, 675, 676, 677, 679, 680, 682,
+ 683, 685, 686, 688, 689, 691, 692, 694, 695, 697, 698, 700, 701, 703, 704,
+ 706, 707, 709, 710, 712, 713, 715, 716, 718, 719, 721, 722, 723, 724, 725,
+ 727, 728, 730, 731, 733, 734, 736, 737, 739, 740, 741, 745, 746, 747, 748,
+ 750, 751, 752, 753, 754, 756, 757, 758, 759, 760, 763, 764, 767, 768, 771,
+ 779, 780, 781, 786, 788, 789, 791, 792, 793, 795, 796, 798, 799, 801, 802,
+ 803, 804, 805, 806, 807, 816, 817, 818, 822, 823, 824, 825, 826, 827, 828,
+ 829, 830, 831, 832, 833, 834, 836, 837, 839, 840, 841, 842, 843, 844, 845,
+ 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 861, 862,
+ 863, 865, 866, 868, 869, 871, 872, 874, 875, 877, 878, 880, 881, 883, 884,
+ 885, 887, 888, 890, 891, 893, 894, 896, 897, 898, 900, 901, 903, 904, 906,
+ 907, 909, 910, 912, 913, 914, 915, 916, 917, 918, 919, 920, 933, 934, 936,
+ 937, 939, 940, 942, 943, 945, 946, 947, 948, 952, 953, 955, 956, 957, 961,
+ 962, 963, 965, 966, 967, 968, 970, 971, 972, 973, 974, 975, 976, 977, 978,
+ 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 990, 991, 992, 996, 998,
+ 999, 1001, 1002, 1004, 1005, 1007, 1008, 1010, 1011, 1013, 1014, 1015, 1016,
+ 1017, 1019, 1020, 1022, 1023, 1025, 1026, 1028, 1029, 1031, 1032, 1034, 1035,
+ 1037, 1038, 1040, 1041, 1043, 1044, 1046, 1047, 1049, 1050, 1052, 1053, 1054,
+ 1056, 1057, 1059, 1060, 1062, 1063, 1065, 1066, 1068, 1069, 1071, 1072, 1074,
+ 1075, 1077, 1078, 1080, 1081, 1083, 1084, 1086, 1087, 1088, 1089, 1090, 1091,
+ 1093, 1094, 1096, 1097, 1099, 1100, 1102, 1103, 1105, 1106, 1108, 1109, 1111,
+ 1112, 1113, 1114, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1130,
+ 1131, 1133, 1134, 1135, 1137, 1138, 1140, 1141, 1143, 1144, 1146, 1147, 1149,
+ 1150, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1163, 1164, 1166,
+ 1167, 1168, 1170, 1171, 1173, 1174, 1176, 1177, 1179, 1180, 1182, 1183, 1184,
+ 1186, 1187, 1188, 1190, 1191, 1192, 1196, 1197, 1198, 1199, 1200, 1202, 1203,
+ 1204, 1206, 1207, 1208, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1221, 1222,
+ 1224, 1225, 1226, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
+ 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1257, 1258, 1259, 1260,
+ 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1270, 1271, 1273, 1274, 1276, 1277,
+ 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1288, 1289, 1291, 1292, 1294, 1295,
+ 1297, 1298, 1300, 1301, 1303, 1304, 1306, 1307, 1308, 1309, 1310, 1311, 1312,
+ 1313, 1314, 1315, 1316, 1317, 1318, 1342, 1343, 1344, 1346, 1347, 1349, 1350,
+ 1352, 1353, 1355, 1356, 1358, 1359, 1361, 1362, 1363, 1364, 1365, 1366, 1376,
+ 1378, 1379, 1381, 1383, 1387, 1389, 1391, 1395, 1399, 1401, 1405, 1409, 1411,
+ 1412, 1414, 1415, 1417, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1431, 1432,
+ 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445,
+ 1446, 1478, 1479, 1480, 1482, 1483, 1485, 1486, 1488, 1489, 1491, 1492, 1494,
+ 1495, 1497, 1498, 1499, 1503, 1505, 1506, 1508, 1509, 1511, 1512, 1514, 1515,
+ 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1526, 1527, 1529, 1530,
+ 1532, 1533, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545,
+ 1546, 1547, 1551, 1553, 1554, 1556, 1557, 1559, 1560, 1562, 1563, 1564, 1565,
+ 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575, 1577, 1578, 1580, 1581,
+ 1583, 1584, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596,
+ 1598, 1599, 1601, 1602, 1604, 1605, 1607, 1608, 1609, 1610, 1611, 1612, 1613,
+ 1614, 1615, 1616, 1617, 1618, 1619, 1623, 1625, 1626, 1628, 1629, 1631, 1632,
+ 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1647,
+ 1649, 1650, 1652, 1653, 1655, 1656, 1658, 1659, 1660, 1661, 1662, 1663, 1664,
+ 1665, 1666, 1667, 1668, 1669, 1671, 1672, 1674, 1675, 1677, 1678, 1680, 1681,
+ 1683, 1684, 1686, 1687, 1689, 1690, 1692, 1693, 1695, 1696, 1698, 1699, 1701,
+ 1703, 1704, 1706, 1707, 1709, 1710, 1712, 1713, 1714, 1715, 1716, 1717, 1718,
+ 1719, 1720, 1721, 1722, 1724, 1725, 1727, 1728, 1730, 1731, 1733, 1734, 1735,
+ 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1752, 1754,
+ 1755, 1757, 1758, 1760, 1761, 1763, 1764, 1765, 1766, 1768, 1770, 1771, 1773,
+ 1774, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1788, 1789,
+ 1791, 1792, 1794, 1795, 1797, 1799, 1801, 1803, 1804, 1806, 1807, 1809, 1810,
+ 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1823, 1824, 1825,
+ 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1856, 1857, 1859, 1860,
+ 1862, 1863, 1865, 1866, 1868, 1869, 1871, 1873, 1874, 1875, 1876, 1877, 1878,
+ 1879, 1880, 1882, 1883, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893,
+ 1895, 1896, 1898, 1900, 1902, 1903, 1904, 1906, 1907, 1908, 1909, 1917, 1918,
+ 1921, 1922, 1924, 1925, 1926, 1928, 1929, 1931, 1932, 1934, 1935, 1936, 1937,
+ 1939, 1940, 1942, 1943, 1945, 1946, 1948, 1949, 1951, 1952, 1954, 1955, 1956,
+ 1957, 1959, 1960, 1962, 1963, 1965, 1966, 1968, 1969, 1971, 1972, 1974, 1975,
+ 1976, 1977, 1979, 1980, 1982, 1983, 1985, 1986, 1988, 1989, 1990, 1991, 1993,
+ 1994, 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2010, 2011,
+ 2013, 2014, 2016, 2017, 2019, 2020, 2022, 2023, 2024, 2025, 2026, 2027, 2037,
+ 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2051, 2053, 2054,
+ 2056, 2057, 2059, 2060, 2062, 2063, 2064, 2068, 2069, 2070, 2074, 2075, 2079,
+ 2080, 2081, 2086, 2089, 2090, 2091, 2092, 2093, 2099, 2104, 2108, 2110, 2117,
+ 2127, 2137, 2141, 2145, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163,
+ 2164, 2173, 2176, 2177, 2178, 2188, 2189, 2190, 2191, 2192, 2193, 2196, 2199,
+ 2201, 2202, 2203, 2204, 2205, 2214, 2215, 2216, 2217, 2219, 2220, 2222, 2223,
+ 2224, 2225, 2226, 2227, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237,
+ 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2259,
+ 2260, 2261, 2262, 2263, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274,
+ 2275, 2276, 2282, 2283, 2284, 2285, 2287, 2288, 2289, 2290, 2291, 2293, 2294,
+ 2295, 2296, 2297, 2298, 2299, 2300, 2307, 2308, 2309, 2310, 2311, 2312, 2313,
+ 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2325, 2326, 2327, 2328, 2329, 2330,
+ 2331, 2332, 2333, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346,
+ 2347, 2348, 2349, 2355, 2356, 2357, 2358, 2359, 2361, 2362, 2363, 2364, 2365,
+ 2366, 2372, 2375, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386,
+ 2387, 2388, 2389, 2390, 2391, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2409,
+ 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2421, 2422, 2423, 2424, 2425,
+ 2426, 2431, 2432, 2433, 2434, 2435, 2437, 2438, 2439, 2440, 2441, 2442, 2443,
+ 2444, 2446, 2447, 2448, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2461, 2462,
+ 2463, 2464, 2465, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2479, 2480, 2481,
+ 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2496, 2497, 2498,
+ 2499, 2500, 2501, 2502, 2503, 2504, 2506, 2507, 2508, 2509, 2510, 2511, 2512,
+ 2516, 2517, 2518, 2522, 2523, 2524, 2525, 2526, 2528, 2529, 2530, 2531, 2532,
+ 2533, 2534, 2535, 2539, 2540, 2541, 2542, 2543, 2545, 2546, 2547, 2548, 2549,
+ 2550, 2551, 2552, 2553, 2554, 2557, 2558, 2559, 2560, 2561, 2563, 2564, 2565,
+ 2566, 2567, 2568, 2569, 2570, 2574, 2575, 2576, 2579, 2580, 2581, 2582, 2583,
+ 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2600,
+ 2601, 2602, 2603, 2607, 2608, 2609, 2610, 2611, 2612, 2616, 2618, 2619, 2620,
+ 2622, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634,
+ 2635, 2636, 2637, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651,
+ 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664,
+ 2665, 2669, 2670, 2671, 2672, 2673, 2675, 2676, 2677, 2678, 2679, 2680, 2681,
+ 2682, 2683, 2686, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2701,
+ 2707, 2708, 2709, 2711, 2712, 2721, 2722, 2723, 2728, 2729, 2730, 2733, 2734,
+ 2735, 2736, 2737, 2738, 2739, 2746, 2747, 2748, 2750, 2751, 2752, 2754, 2755,
+ 2756, 2757, 2758, 2759, 2760, 2764, 2770, 2771, 2772, 2773, 2774, 2775, 2776,
+ 2777, 2778, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796,
+ 2797, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2813, 2814, 2818, 2819, 2820,
+ 2821, 2822, 2823, 2824, 2825, 2826, 2832, 2833, 2834, 2835, 2836, 2837, 2838,
+ 2839, 2840, 2841, 2842, 2843, 2844, 2850, 2851, 2852, 2853, 2854, 2856, 2857,
+ 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865, 2873, 2874, 2875, 2876, 2877,
+ 2878, 2879, 2880, 2881, 2882, 2883, 2895, 2897, 2898, 2899, 2900, 2901, 2903,
+ 2904, 2907, 2910, 2912, 2913, 2914, 2915, 2916, 2920, 2922, 2923, 2924, 2925,
+ 2927, 2930, 2931, 2932, 2933, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942,
+ 2943, 2944, 2947, 2949, 2954, 2960, 2969, 2974, 2975, 2978, 2979, 2980, 2981,
+ 2982, 2983, 2984, 2985, 2992, 2995, 3001, 3009, 3018, 3024, 3030, 3032, 3033,
+ 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3049, 3050, 3051, 3052, 3053,
+ 3054, 3055, 3056, 3057, 3065, 3067, 3077, 3080, 3086, 3087, 3089, 3091, 3092,
+ 3093, 3094, 3095, 3096, 3097, 3098, 3105, 3108, 3111, 3115, 3125, 3131, 3133,
+ 3134, 3135, 3136, 3137, 3138, 3139, 3145, 3148, 3150, 3159, 3161, 3165, 3166,
+ 3167, 3168, 3169, 3170, 3175, 3177, 3179, 3184, 3186, 3187, 3188, 3189, 3190,
+ 3194, 3195, 3196, 3197, 3198, 3202, 3203, 3204, 3205, 3206, 3209, 3211, 3212,
+ 3213, 3214, 3215, 3216, 3220, 3221, 3222, 3224, 3225, 3226, 3231, 3232, 3233,
+ 3234, 3237, 3238, 3239, 3240, 3244, 3246, 3247, 3248, 3250, 3251, 3252, 3253,
+ 3254, 3255, 3256, 3257, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269,
+ 3270, 3271, 3272, 3275, 3278, 3279, 3280, 3281, 3282, 3284, 3285, 3286, 3287,
+ 3288, 3289, 3290, 3296, 3297, 3298, 3299, 3300, 3301, 3303, 3304, 3305, 3306,
+ 3307, 3308, 3309, 3310, 3312, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320,
+ 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334, 3335,
+ 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349,
+ 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362,
+ 3363, 3364, 3368, 3369, 3370, 3371, 3372, 3374, 3375, 3376, 3377, 3378, 3379,
+ 3380, 3386, 3387, 3389, 3390, 3392, 3393, 3395, 3396, 3398, 3399, 3400, 3401,
+ 3413, 3414, 3416, 3417, 3418, 3419, 3420, 3422, 3423, 3425, 3426, 3428, 3429,
+ 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442,
+ 3444, 3445, 3447, 3448, 3450, 3451, 3453, 3454, 3456, 3457, 3458, 3459, 3460,
+ 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3469, 3470, 3472, 3473, 3475, 3476,
+ 3478, 3479, 3481, 3482, 3484, 3485, 3487, 3488, 3492, 3493, 3494, 3495, 3496,
+ 3498, 3499, 3501, 3502, 3504, 3505, 3507, 3508, 3510, 3511, 3512, 3513, 3515,
+ 3516, 3518, 3519, 3521, 3522, 3524, 3525, 3527, 3528, 3530, 3531, 3533, 3534,
+ 3536, 3537, 3538, 3547, 3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555, 3558,
+ 3559, 3561, 3562, 3565, 3566, 3567, 3568, 3569, 3570, 3575, 3576, 3579, 3580,
+ 3581, 3582, 3584, 3585, 3586, 3587, 3591, 3593, 3594, 3596, 3597, 3598, 3599,
+ 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612,
+ 3614, 3615, 3617, 3618, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628,
+ 3629, 3630, 3631, 3632, 3633, 3634, 3637, 3638, 3639, 3640, 3641, 3642, 3643,
+ 3644, 3645, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3657, 3658,
+ 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3667, 3668, 3669, 3670, 3671, 3672,
+ 3673, 3674, 3675, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3687,
+ 3688, 3689, 3690, 3691, 3692, 3693, 3694, 3695, 3697, 3698, 3699, 3700, 3701,
+ 3702, 3703, 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, 3715, 3716,
+ 3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3733, 3734, 3735, 3736, 3737,
+ 3738, 3739, 3740, 3741, 3742, 3743, 3745, 3746, 3747, 3748, 3751, 3752, 3754,
+ 3755, 3756, 3757, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3773,
+ 3774, 3775, 3776, 3778, 3779, 3781, 3782, 3783, 3784, 3786, 3787, 3789, 3790,
+ 3792, 3793, 3794, 3798, 3799, 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807,
+ 3809, 3810, 3811, 3812, 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821,
+ 3822, 3823, 3824, 3825, 3826, 3827, 3828, 3830, 3831, 3832, 3835, 3836, 3837,
+ 3841, 3842, 3843, 3849, 3850, 3852, 3853, 3855, 3856, 3858, 3859, 3866, 3867,
+ 3869, 3870, 3872, 3873, 3875, 3876, 3878, 3879, 3881, 3882, 3883, 3885, 3886,
+ 3888, 3890, 3891, 3893, 3894, 3896, 3897, 3899, 3900, 3901, 3902, 3903, 3904,
+ 3905, 3906, 3907, 3908, 3909, 3910, 3912, 3913, 3915, 3916, 3918, 3919, 3921,
+ 3922, 3924, 3925, 3927, 3928, 3930, 3931, 3933, 3934, 3936, 3937, 3939, 3940,
+ 3942, 3943, 3945, 3946, 3947, 3948, 3950, 3953, 3954, 3955, 3957, 3958, 3960,
+ 3961, 3963, 3964, 3966, 3967, 3968, 3970, 3971, 3973, 3975, 3976, 3978, 3980,
+ 3981, 3983, 3984, 3986, 3991, 3992, 3993, 3998, 3999, 4000, 4001, 4002, 4005,
+ 4006, 4010, 4011, 4013, 4014, 4015, 4016, 4022, 4024, 4025, 4026, 4027, 4029,
+ 4030, 4032, 4033, 4035, 4036, 4038, 4039, 4041, 4042, 4044, 4045, 4046, 4047,
+ 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060,
+ 4061, 4062, 4063, 4064, 4065, 4066, 4067, 4068, 4069, 4074, 4075, 4076, 4083,
+ 4084, 4085, 4086, 4087, 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, 4097,
+ 4098, 4100, 4101, 4102, 4103, 4105, 4106, 4107, 4108, 4110, 4111, 4112, 4113,
+ 4115, 4116, 4117, 4118, 4120, 4121, 4122, 4123, 4125, 4126, 4127, 4128, 4130,
+ 4131, 4132, 4133, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4142, 4144, 4145,
+ 4146, 4147, 4149, 4150, 4151, 4152, 4154, 4155, 4156, 4157, 4159, 4160, 4161,
+ 4162, 4164, 4165, 4166, 4167, 4169, 4170, 4171, 4172, 4174, 4175, 4176, 4177,
+ 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4188, 4189, 4190, 4191, 4193,
+ 4194, 4195, 4196, 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207,
+ 4208, 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221,
+ 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, 4234,
+ 4235, 4236, 4237, 4239, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4248, 4249,
+ 4250, 4251, 4253, 4254, 4255, 4257, 4258, 4259, 4260, 4262, 4263, 4264, 4265,
+ 4267, 4268, 4269, 4270, 4272, 4273, 4274, 4276, 4277, 4278, 4279, 4281, 4282,
+ 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295,
+ 4296, 4297, 4298, 4299, 4301, 4302, 4303, 4304, 4305, 4309, 4310, 4311, 4312,
+ 4313, 4314, 4315, 4323, 4324, 4325, 4327, 4328, 4329, 4330, 4332, 4333, 4334,
+ 4335, 4337, 4338, 4339, 4340, 4342, 4343, 4344, 4345, 4347, 4348, 4349, 4350,
+ 4351, 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4360, 4361, 4362, 4363, 4365,
+ 4366, 4367, 4368, 4369, 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378,
+ 4379, 4380, 4381, 4382, 4383, 4385, 4386, 4387, 4397, 4398, 4399, 4400, 4401,
+ 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4411, 4412, 4413, 4414, 4415,
+ 4416, 4417, 4418, 4420, 4421, 4422, 4423, 4425, 4426, 4427, 4428, 4430, 4431,
+ 4432, 4434, 4435, 4436, 4437, 4439, 4440, 4441, 4442, 4444, 4445, 4446, 4447,
+ 4449, 4450, 4451, 4452, 4454, 4455, 4456, 4458, 4459, 4460, 4462, 4463, 4464,
+ 4466, 4467, 4468, 4469, 4470, 4471, 4477, 4478, 4479, 4480, 4481, 4482, 4483,
+ 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4494, 4495, 4496, 4497, 4498,
+ 4499, 4501, 4502, 4503, 4506, 4507, 4508, 4510, 4511, 4512, 4513, 4514, 4515,
+ 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4530, 4531, 4532,
+ 4533, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, 4546,
+ 4547, 4548, 4549, 4550, 4551, 4552, 4553, 4554, 4563, 4564, 4565, 4567, 4568,
+ 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4577, 4578, 4579, 4580, 4586,
+ 4587, 4588, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601,
+ 4602, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616,
+ 4617, 4627, 4628, 4629, 4631, 4632, 4633, 4634, 4636, 4637, 4638, 4639, 4641,
+ 4642, 4643, 4644, 4646, 4647, 4648, 4649, 4651, 4652, 4653, 4654, 4656, 4657,
+ 4658, 4659, 4661, 4662, 4663, 4664, 4666, 4667, 4668, 4669, 4671, 4672, 4673,
+ 4674, 4676, 4677, 4678, 4679, 4681, 4682, 4683, 4685, 4686, 4687, 4688, 4689,
+ 4693, 4694, 4695, 4696, 4697, 4698, 4699, 4701, 4702, 4703, 4704, 4706, 4707,
+ 4708, 4710, 4711, 4712, 4714, 4715, 4716, 4717, 4719, 4720, 4721, 4722, 4724,
+ 4725, 4726, 4727, 4729, 4730, 4731, 4732, 4734, 4735, 4736, 4737, 4739, 4740,
+ 4741, 4742, 4744, 4745, 4746, 4747, 4749, 4750, 4751, 4752, 4754, 4755, 4756,
+ 4757, 4759, 4760, 4761, 4762, 4764, 4765, 4766, 4767, 4769, 4770, 4771, 4772,
+ 4774, 4775, 4776, 4778, 4779, 4780, 4781, 4782, 4783, 4789, 4790, 4791, 4792,
+ 4794, 4795, 4796, 4797, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807,
+ 4808, 4809, 4810, 4811, 4812, 4813, 4816, 4817, 4818, 4819, 4821, 4822, 4823,
+ 4825, 4826, 4827, 4828, 4830, 4831, 4832, 4833, 4835, 4836, 4837, 4838, 4840,
+ 4841, 4842, 4843, 4845, 4846, 4847, 4848, 4850, 4851, 4852, 4853, 4855, 4856,
+ 4857, 4858, 4860, 4861, 4862, 4863, 4865, 4866, 4867, 4868, 4870, 4871, 4872,
+ 4873, 4875, 4876, 4877, 4878, 4880, 4881, 4882, 4883, 4885, 4886, 4887, 4888,
+ 4890, 4891, 4892, 4893, 4895, 4896, 4897, 4898, 4899, 4900, 4901, 4903, 4904,
+ 4905, 4906, 4908, 4909, 4910, 4911, 4913, 4914, 4915, 4916, 4918, 4919, 4920,
+ 4921, 4923, 4924, 4925, 4926, 4927, 4931, 4932, 4933, 4934, 4935, 4936, 4937,
+ 4938, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4948, 4949, 4950, 4951, 4952,
+ 4953, 4954, 4957, 4958, 4959, 4960, 4963, 4964, 4965, 4966, 4967, 4968, 4971,
+ 4972, 4973, 4981, 4982, 4983, 4984, 4985, 4990, 4991, 4992, 4994, 4995, 4996,
+ 4997, 4999, 5000, 5001, 5003, 5004, 5005, 5006, 5008, 5009, 5010, 5011, 5013,
+ 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5030, 5031, 5032, 5033, 5034,
+ 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050,
+ 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063,
+ 5064, 5066, 5067, 5068, 5069, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5079,
+ 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092,
+ 5093, 5094, 5095, 5096, 5097, 5099, 5100, 5101, 5103, 5104, 5105, 5106, 5108,
+ 5109, 5110, 5111, 5113, 5114, 5115, 5116, 5118, 5119, 5120, 5121, 5123, 5124,
+ 5125, 5126, 5128, 5129, 5130, 5131, 5133, 5134, 5135, 5137, 5138, 5139, 5140,
+ 5142, 5143, 5144, 5145, 5147, 5148, 5149, 5150, 5152, 5153, 5154, 5156, 5157,
+ 5158, 5159, 5161, 5162, 5163, 5164, 5166, 5167, 5168, 5169, 5171, 5172, 5173,
+ 5174, 5176, 5177, 5178, 5179, 5180, 5181, 5182, 5195, 5196, 5197, 5198, 5200,
+ 5201, 5202, 5203, 5205, 5206, 5207, 5208, 5210, 5211, 5212, 5213, 5215, 5216,
+ 5217, 5218, 5219, 5220, 5224, 5225, 5226, 5227, 5229, 5230, 5231, 5232, 5233,
+ 5237, 5238, 5239, 5241, 5242, 5243, 5244, 5245, 5246, 5247, 5248, 5250, 5251,
+ 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, 5263, 5264,
+ 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277,
+ 5278, 5279, 5280, 5281, 5282, 5283, 5284, 5286, 5287, 5288, 5289, 5290, 5294,
+ 5295, 5296, 5298, 5299, 5300, 5301, 5303, 5304, 5305, 5306, 5308, 5309, 5310,
+ 5311, 5313, 5314, 5315, 5316, 5318, 5319, 5320, 5321, 5323, 5324, 5325, 5326,
+ 5327, 5328, 5329, 5330, 5331, 5332, 5333, 5335, 5336, 5337, 5338, 5340, 5341,
+ 5342, 5343, 5345, 5346, 5347, 5348, 5350, 5351, 5352, 5353, 5355, 5356, 5357,
+ 5358, 5360, 5361, 5362, 5363, 5365, 5366, 5367, 5368, 5370, 5371, 5372, 5373,
+ 5375, 5376, 5377, 5378, 5380, 5381, 5382, 5383, 5385, 5386, 5387, 5388, 5390,
+ 5391, 5392, 5393, 5394, 5395, 5396, 5398, 5399, 5400, 5401, 5403, 5404, 5405,
+ 5406, 5408, 5409, 5410, 5411, 5413, 5414, 5415, 5416, 5418, 5419, 5420, 5421,
+ 5423, 5424, 5425, 5426, 5428, 5429, 5430, 5431, 5433, 5434, 5435, 5436, 5438,
+ 5439, 5440, 5441, 5443, 5444, 5445, 5446, 5448, 5449, 5450, 5451, 5452, 5453,
+ 5454, 5455, 5456, 5457, 5458, 5459, 5461, 5462, 5463, 5464, 5466, 5467, 5468,
+ 5469, 5471, 5472, 5473, 5474, 5476, 5477, 5478, 5479, 5481, 5482, 5483, 5484,
+ 5486, 5487, 5488, 5489, 5491, 5492, 5493, 5494, 5495, 5496, 5500, 5501, 5502,
+ 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515,
+ 5516, 5520, 5521, 5522, 5523, 5525, 5526, 5527, 5529, 5530, 5531, 5532, 5534,
+ 5535, 5536, 5537, 5539, 5540, 5541, 5542, 5544, 5545, 5546, 5547, 5549, 5550,
+ 5551, 5552, 5554, 5555, 5556, 5557, 5559, 5560, 5561, 5562, 5563, 5564, 5565,
+ 5566, 5567, 5568, 5569, 5570, 5571, 5572, 5573, 5575, 5576, 5577, 5578, 5580,
+ 5581, 5582, 5584, 5585, 5586, 5587, 5589, 5590, 5591, 5592, 5594, 5595, 5596,
+ 5597, 5599, 5600, 5601, 5602, 5604, 5605, 5606, 5608, 5609, 5610, 5612, 5613,
+ 5614, 5615, 5616, 5620, 5621, 5622, 5623, 5624, 5625, 5626, 5628, 5629, 5630,
+ 5632, 5633, 5634, 5635, 5636, 5640, 5641, 5642, 5643, 5644, 5645, 5646, 5647,
+ 5648, 5651, 5652, 5653, 5654, 5656, 5657, 5658, 5659, 5660, 5664, 5665, 5666,
+ 5675, 5676, 5677, 5678, 5679, 5680, 5681, 5682, 5683, 5684, 5685, 5687, 5688,
+ 5689, 5690, 5692, 5693, 5694, 5695, 5697, 5698, 5699, 5700, 5702, 5703, 5704,
+ 5705, 5707, 5708, 5709, 5710, 5712, 5713, 5714, 5715, 5716, 5717, 5718, 5719,
+ 5720, 5722, 5723, 5724, 5725, 5727, 5728, 5729, 5730, 5732, 5733, 5734, 5735,
+ 5737, 5738, 5739, 5740, 5742, 5743, 5744, 5745, 5747, 5748, 5749, 5750, 5752,
+ 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5760, 5761, 5762, 5763, 5764, 5765,
+ 5766, 5790, 5791, 5792, 5794, 5795, 5796, 5797, 5799, 5800, 5801, 5802, 5804,
+ 5805, 5806, 5807, 5809, 5810, 5811, 5812, 5814, 5815, 5816, 5817, 5819, 5820,
+ 5821, 5822, 5823, 5824, 5825, 5826, 5836, 5837, 5838, 5840, 5841, 5842, 5843,
+ 5845, 5846, 5847, 5849, 5850, 5851, 5855, 5856, 5857, 5859, 5860, 5861, 5863,
+ 5864, 5865, 5869, 5870, 5871, 5875, 5876, 5877, 5879, 5880, 5881, 5885, 5886,
+ 5887, 5891, 5892, 5893, 5895, 5896, 5897, 5898, 5900, 5901, 5902, 5903, 5905,
+ 5906, 5907, 5908, 5910, 5911, 5912, 5914, 5915, 5916, 5918, 5919, 5920, 5922,
+ 5923, 5924, 5926, 5927, 5928, 5930, 5931, 5932, 5933, 5934, 5935, 5936, 5937,
+ 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, 5947, 5948, 5980, 5981,
+ 5982, 5983, 5984, 5985, 5986, 5988, 5989, 5990, 5991, 5993, 5994, 5995, 5996,
+ 5998, 5999, 6000, 6001, 6003, 6004, 6005, 6006, 6008, 6009, 6010, 6011, 6013,
+ 6014, 6015, 6016, 6017, 6021, 6022, 6023, 6025, 6026, 6027, 6028, 6030, 6031,
+ 6032, 6033, 6035, 6036, 6037, 6038, 6040, 6041, 6042, 6043, 6044, 6045, 6046,
+ 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059,
+ 6060, 6061, 6062, 6064, 6065, 6066, 6067, 6069, 6070, 6071, 6072, 6074, 6075,
+ 6076, 6077, 6079, 6080, 6081, 6082, 6083, 6084, 6085, 6086, 6087, 6088, 6089,
+ 6090, 6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, 6102,
+ 6103, 6107, 6108, 6109, 6111, 6112, 6113, 6114, 6116, 6117, 6118, 6119, 6121,
+ 6122, 6123, 6124, 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135,
+ 6136, 6137, 6138, 6139, 6140, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148,
+ 6149, 6151, 6152, 6153, 6155, 6156, 6157, 6158, 6160, 6161, 6162, 6163, 6165,
+ 6166, 6167, 6168, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179,
+ 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 6189, 6190, 6191, 6192,
+ 6194, 6195, 6196, 6197, 6199, 6200, 6201, 6202, 6204, 6205, 6206, 6207, 6209,
+ 6210, 6211, 6212, 6213, 6214, 6215, 6216, 6217, 6218, 6219, 6220, 6221, 6222,
+ 6223, 6224, 6225, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6233, 6237, 6238,
+ 6239, 6241, 6242, 6243, 6244, 6246, 6247, 6248, 6249, 6251, 6252, 6253, 6254,
+ 6256, 6257, 6258, 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6266, 6267, 6268,
+ 6269, 6270, 6271, 6272, 6273, 6274, 6275, 6276, 6277, 6278, 6279, 6281, 6282,
+ 6283, 6285, 6286, 6287, 6288, 6290, 6291, 6292, 6293, 6295, 6296, 6297, 6298,
+ 6300, 6301, 6302, 6303, 6304, 6305, 6306, 6307, 6308, 6309, 6310, 6311, 6312,
+ 6313, 6314, 6315, 6316, 6317, 6318, 6319, 6320, 6321, 6322, 6323, 6325, 6326,
+ 6327, 6328, 6330, 6331, 6332, 6333, 6335, 6336, 6337, 6338, 6340, 6341, 6342,
+ 6343, 6345, 6346, 6347, 6348, 6350, 6351, 6352, 6353, 6355, 6356, 6357, 6358,
+ 6360, 6361, 6362, 6363, 6365, 6366, 6367, 6368, 6370, 6371, 6372, 6373, 6375,
+ 6376, 6377, 6379, 6380, 6381, 6382, 6384, 6385, 6386, 6387, 6389, 6390, 6391,
+ 6392, 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, 6402, 6403, 6404, 6405,
+ 6406, 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6418, 6419,
+ 6420, 6421, 6423, 6424, 6425, 6426, 6428, 6429, 6430, 6431, 6433, 6434, 6435,
+ 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 6444, 6445, 6446, 6447, 6448,
+ 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6464, 6465, 6466,
+ 6468, 6469, 6470, 6471, 6473, 6474, 6475, 6476, 6478, 6479, 6480, 6481, 6483,
+ 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6492, 6493, 6494, 6496, 6497, 6498,
+ 6499, 6501, 6502, 6503, 6504, 6506, 6507, 6508, 6509, 6511, 6512, 6513, 6514,
+ 6515, 6516, 6517, 6518, 6519, 6520, 6521, 6522, 6523, 6524, 6525, 6526, 6528,
+ 6529, 6530, 6531, 6533, 6534, 6535, 6536, 6538, 6539, 6540, 6541, 6543, 6544,
+ 6545, 6547, 6548, 6549, 6551, 6552, 6553, 6555, 6556, 6557, 6558, 6560, 6561,
+ 6562, 6563, 6565, 6566, 6567, 6568, 6570, 6571, 6572, 6573, 6574, 6575, 6576,
+ 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585, 6586, 6587, 6588, 6589,
+ 6591, 6592, 6593, 6594, 6595, 6596, 6597, 6598, 6599, 6600, 6601, 6602, 6603,
+ 6604, 6626, 6627, 6628, 6629, 6630, 6631, 6632, 6634, 6636, 6637, 6638, 6639,
+ 6641, 6642, 6643, 6644, 6646, 6647, 6648, 6649, 6651, 6652, 6653, 6655, 6656,
+ 6657, 6658, 6659, 6660, 6661, 6662, 6663, 6664, 6665, 6666, 6667, 6668, 6669,
+ 6670, 6672, 6673, 6674, 6675, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684,
+ 6685, 6686, 6687, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 6695, 6697, 6698,
+ 6699, 6700, 6702, 6703, 6704, 6706, 6707, 6708, 6710, 6711, 6712, 6713, 6714,
+ 6715, 6716, 6718, 6719, 6720, 6721, 6722, 6723, 6731, 6732, 6733, 6734, 6737,
+ 6738, 6739, 6740, 6742, 6743, 6744, 6745, 6746, 6747, 6748, 6750, 6751, 6752,
+ 6753, 6755, 6756, 6757, 6758, 6760, 6761, 6762, 6763, 6764, 6765, 6766, 6767,
+ 6769, 6770, 6771, 6772, 6774, 6775, 6776, 6777, 6779, 6780, 6781, 6782, 6784,
+ 6785, 6786, 6787, 6789, 6790, 6791, 6792, 6794, 6795, 6796, 6797, 6798, 6799,
+ 6800, 6801, 6803, 6804, 6805, 6806, 6808, 6809, 6810, 6811, 6813, 6814, 6815,
+ 6816, 6818, 6819, 6820, 6821, 6823, 6824, 6825, 6826, 6828, 6829, 6830, 6831,
+ 6832, 6833, 6834, 6835, 6837, 6838, 6839, 6840, 6842, 6843, 6844, 6845, 6847,
+ 6848, 6849, 6850, 6852, 6853, 6854, 6855, 6856, 6857, 6858, 6859, 6861, 6862,
+ 6863, 6864, 6866, 6867, 6868, 6869, 6871, 6872, 6873, 6874, 6876, 6877, 6878,
+ 6879, 6880, 6881, 6882, 6883, 6885, 6886, 6887, 6888, 6890, 6891, 6892, 6893,
+ 6895, 6896, 6897, 6898, 6900, 6901, 6902, 6903, 6905, 6906, 6907, 6908, 6910,
+ 6911, 6912, 6913, 6914, 6915, 6916, 6917, 6927, 6928, 6929, 6930, 6931, 6932,
+ 6933, 6934, 6935, 6936, 6937, 6938, 6939, 6940, 6941, 6942, 6943, 6944, 6945,
+ 6946, 6947, 6948, 6949, 6953, 6954, 6955, 6957, 6959, 6960, 6961, 6962, 6964,
+ 6965, 6966, 6967, 6969, 6970, 6971, 6972, 6973, 6977, 6978, 6979, 6980, 6981,
+ 6982, 6983, 6987, 6988, 6989, 6990, 6991, 6992, 6996, 6997, 6998, 6999, 7000,
+ 7004, 7005, 7006, 7008, 7009, 7010, 7012, 7014, 7020, 7021, 7022, 7027, 7028,
+ 7029, 7033, 7034, 7035, 7037, 7038, 7039, 7046, 7047, 7048, 7058, 7059, 7060,
+ 7070, 7071, 7072, 7076, 7077, 7078, 7082, 7083, 7084, 7094, 7095, 7096, 7097,
+ 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7114, 7115, 7116, 7119, 7120,
+ 7121, 7122, 7123, 7124, 7125, 7135, 7136, 7137, 7138, 7139, 7140, 7141, 7142,
+ 7143, 7144, 7147, 7148, 7149, 7151, 7152, 7153, 7154, 7155, 7156, 7158, 7160,
+ 7161, 7162, 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, 7180, 7181, 7182,
+ 7183, 7185, 7186, 7187, 7189, 7190, 7191, 7201, 7202, 7203, 7206, 7207, 7208,
+ 7214, 7215, 7216, 7217, 7218, 7219, 7221, 7222, 7223, 7225, 7226, 7227, 7228,
+ 7229, 7230, 7231, 7232, 7233, 7234, 7241, 7242, 7243, 7246, 7247, 7248, 7251,
+ 7252, 7253, 7257, 7258, 7259, 7265, 7266, 7267, 7269, 7270, 7271, 7272, 7273,
+ 7274, 7275, 7276, 7282, 7283, 7284, 7287, 7288, 7289, 7291, 7292, 7293, 7302,
+ 7303, 7304, 7305, 7306, 7307, 7308, 7311, 7312, 7313, 7317, 7318, 7319, 7320,
+ 7321, 7322, 7323, 7324, 7329, 7330, 7331, 7333, 7334, 7335, 7336, 7337, 7338,
+ 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, 7348, 7349, 7350, 7352, 7353,
+ 7354, 7359, 7360, 7361, 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, 7371,
+ 7377, 7378, 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, 7387, 7388, 7389,
+ 7390, 7391, 7392, 7393, 7394, 7395, 7400, 7401, 7402, 7403, 7404, 7405, 7406,
+ 7407, 7408, 7409, 7410, 7412, 7413, 7414, 7415, 7416, 7417, 7418, 7419, 7420,
+ 7421, 7422, 7426, 7427, 7428, 7429, 7430, 7434, 7435, 7436, 7438, 7439, 7440,
+ 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453,
+ 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7465, 7466, 7467, 7468, 7469, 7470,
+ 7473, 7474, 7475, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486,
+ 7490, 7491, 7492, 7493, 7494, 7497, 7498, 7499, 7500, 7501, 7502, 7503, 7504,
+ 7505, 7510, 7511, 7512, 7513, 7514, 7515, 7519, 7520, 7521, 7522, 7523, 7524,
+ 7525, 7526, 7527, 7528, 7532, 7533, 7534, 7536, 7537, 7538, 7539, 7540, 7542,
+ 7543, 7544, 7545, 7546, 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, 7555,
+ 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7572,
+ 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580, 7581, 7582, 7583, 7584, 7585,
+ 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, 7595, 7596, 7597, 7598,
+ 7599, 7600, 7601, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613, 7615,
+ 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7628, 7629, 7630,
+ 7632, 7633, 7634, 7639, 7640, 7641, 7647, 7648, 7649, 7650, 7651, 7652, 7654,
+ 7663, 7664, 7665, 7670, 7671, 7672, 7675, 7676, 7677, 7678, 7679, 7680, 7681,
+ 7682, 7683, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700,
+ 7701, 7702, 7704, 7706, 7710, 7711, 7712, 7718, 7719, 7720, 7728, 7729, 7730,
+ 7739, 7740, 7741, 7744, 7745, 7746, 7748, 7754, 7755, 7756, 7762, 7763, 7764,
+ 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778,
+ 7779, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7795, 7796, 7797, 7798,
+ 7810, 7811, 7812, 7814, 7815, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7824,
+ 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835, 7836, 7837,
+ 7838, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7852, 7853, 7854,
+ 7855, 7856, 7857, 7858, 7859, 7860, 7862, 7863, 7864, 7865, 7866, 7867, 7868,
+ 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7882, 7883,
+ 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896,
+ 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7912, 7913, 7914, 7915,
+ 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928,
+ 7929, 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7937, 7938, 7946, 7947, 7948,
+ 7949, 7950, 7951, 7952, 7953, 7954, 7955, 7956, 7964, 7965, 7966, 7967, 7968,
+ 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7976, 7977, 7978, 7979, 7980, 7981,
+ 7982, 7983, 7984, 7985, 7986, 7987, 7994, 7995, 7996, 7997, 7998, 7999, 8000,
+ 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013,
+ 8014, 8020, 8021, 8022, 8023, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031,
+ 8032, 8033, 8034, 8035, 8036, 8037, 8042, 8043, 8044, 8045, 8046, 8047, 8048,
+ 8049, 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8060, 8061, 8062, 8063, 8064,
+ 8065, 8066, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080,
+ 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8094, 8095, 8096,
+ 8097, 8098, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8110,
+ 8111, 8114, 8115, 8116, 8117, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8125,
+ 8126, 8127, 8128, 8130, 8131, 8132, 8133, 8134, 8135, 8136, 8137, 8138, 8139,
+ 8140, 8141, 8142, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155,
+ 8156, 8157, 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8170,
+ 8171, 8172, 8173, 8174, 8175, 8176, 8177, 8178, 8179, 8180, 8182, 8183, 8184,
+ 8185, 8186, 8187, 8188, 8189, 8190, 8196, 8197, 8198, 8199, 8200, 8201, 8202,
+ 8203, 8204, 8205, 8206, 8207, 8208, 8209, 8210, 8211, 8212, 8213, 8214, 8215,
+ 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8227, 8228, 8229,
+ 8230, 8231, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239, 8242, 8243, 8244,
+ 8245, 8246, 8247, 8248, 8249, 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8257,
+ 8258, 8259, 8260, 8261, 8262, 8263, 8264, 8265, 8266, 8268, 8269, 8270, 8271,
+ 8272, 8273, 8274, 8275, 8276, 8277, 8278, 8279, 8280, 8281, 8282, 8283, 8284,
+ 8285, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297,
+ 8298, 8299, 8300, 8301, 8302, 8303, 8304, 8305, 8306, 8307, 8308, 8309, 8310,
+ 8311, 8312, 8313, 8314, 8315, 8316, 8317, 8318, 8319, 8320, 8324, 8325, 8326,
+ 8327, 8328, 8329, 8330, 8331, 8332, 8334, 8335, 8336, 8337, 8338, 8339, 8340,
+ 8341, 8342, 8348, 8349, 8350, 8351, 8353, 8354, 8355, 8356, 8358, 8359, 8360,
+ 8361, 8363, 8364, 8365, 8366, 8368, 8369, 8370, 8371, 8372, 8373, 8385, 8386,
+ 8387, 8388, 8390, 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400,
+ 8402, 8403, 8404, 8405, 8407, 8408, 8409, 8410, 8412, 8413, 8414, 8415, 8416,
+ 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429,
+ 8430, 8431, 8432, 8433, 8434, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442,
+ 8444, 8445, 8446, 8447, 8449, 8450, 8451, 8452, 8454, 8455, 8456, 8457, 8459,
+ 8460, 8461, 8462, 8464, 8465, 8466, 8467, 8468, 8469, 8470, 8471, 8472, 8473,
+ 8474, 8475, 8476, 8477, 8478, 8479, 8480, 8481, 8482, 8483, 8484, 8485, 8486,
+ 8487, 8489, 8490, 8491, 8492, 8494, 8495, 8496, 8497, 8499, 8500, 8501, 8502,
+ 8504, 8505, 8506, 8507, 8509, 8510, 8511, 8512, 8514, 8515, 8516, 8517, 8519,
+ 8520, 8521, 8522, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534,
+ 8535, 8537, 8538, 8539, 8540, 8542, 8543, 8544, 8545, 8547, 8548, 8549, 8550,
+ 8552, 8553, 8554, 8555, 8557, 8558, 8559, 8560, 8561, 8562, 8563, 8564, 8566,
+ 8567, 8568, 8569, 8571, 8572, 8573, 8574, 8576, 8577, 8578, 8579, 8581, 8582,
+ 8583, 8584, 8586, 8587, 8588, 8589, 8591, 8592, 8593, 8594, 8596, 8597, 8598,
+ 8599, 8600, 8601, 8602, 8604, 8606, 8615, 8616, 8617, 8618, 8619, 8620, 8621,
+ 8622, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631, 8632, 8633, 8636,
+ 8637, 8638, 8639, 8640, 8641, 8643, 8644, 8645, 8646, 8647, 8648, 8651, 8652,
+ 8653, 8654, 8655, 8656, 8657, 8658, 8663, 8664, 8665, 8666, 8669, 8670, 8671,
+ 8672, 8673, 8674, 8675, 8676, 8678, 8679, 8680, 8681, 8682, 8683, 8687, 8688,
+ 8689, 8691, 8692, 8693, 8694, 8696, 8697, 8698, 8699, 8700, 8701, 8702, 8703,
+ 8704, 8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712, 8713, 8714, 8715, 8716,
+ 8717, 8718, 8719, 8720, 8721, 8722, 8723, 8724, 8725, 8726, 8727, 8728, 8729,
+ 8730, 8732, 8733, 8734, 8735, 8737, 8738, 8739, 8740, 8742, 8743, 8744, 8745,
+ 8746, 8747, 8748, 8749, 8750, 8751, 8752, 8753, 8754, 8755, 8756, 8757, 8758,
+ 8759, 8760, 8761, 8762, 8763, 8764, 8765, 8766, 8767, 8768, 8769, 8770, 8771,
+ 8772, 8774, 8775, 8776, 8777, 8778, 8779, 8780, 8781, 8782, 8783, 8784, 8785,
+ 8786, 8787, 8788, 8789, 8790, 8791, 8792, 8793, 8794, 8795, 8796, 8797, 8798,
+ 8799, 8800, 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8811,
+ 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, 8824,
+ 8825, 8826, 8827, 8828, 8829, 8830, 8831, 8832, 8833, 8834, 8835, 8836, 8837,
+ 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845, 8846, 8847, 8848, 8849, 8850,
+ 8851, 8852, 8853, 8854, 8855, 8856, 8857, 8858, 8859, 8860, 8861, 8862, 8863,
+ 8864, 8865, 8866, 8867, 8868, 8869, 8870, 8871, 8872, 8873, 8874, 8875, 8876,
+ 8877, 8878, 8879, 8880, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889,
+ 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8901, 8902,
+ 8903, 8904, 8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915,
+ 8916, 8917, 8918, 8919, 8920, 8921, 8922, 8923, 8924, 8926, 8928, 8930, 8932,
+ 8934, 8936, 8938, 8940, 8942, 8951, 8952, 8953, 8954, 8955, 8956, 8957, 8958,
+ 8959, 8960, 8961, 8962, 8963, 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8971,
+ 8973, 8974, 8975, 8976, 8977, 8978, 8981, 8982, 8983, 8984, 8986, 8987, 8988,
+ 8989, 8990, 8991, 8997, 8998, 8999, 9000, 9001, 9002, 9003, 9004, 9005, 9006,
+ 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9017, 9018, 9019, 9020,
+ 9021, 9022, 9023, 9024, 9026, 9027, 9028, 9029, 9031, 9032, 9033, 9034, 9035,
+ 9036, 9037, 9038, 9039, 9040, 9042, 9043, 9044, 9045, 9047, 9048, 9049, 9050,
+ 9052, 9053, 9054, 9055, 9056, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067,
+ 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080,
+ 9081, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094,
+ 9095, 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, 9106, 9107,
+ 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120,
+ 9121, 9122, 9124, 9125, 9126, 9127, 9128, 9131, 9132, 9133, 9134, 9135, 9139,
+ 9140, 9141, 9142, 9143, 9144, 9145, 9151, 9152, 9153, 9154, 9156, 9157, 9158,
+ 9159, 9161, 9162, 9163, 9164, 9166, 9167, 9168, 9169, 9176, 9177, 9178, 9179,
+ 9180, 9181, 9183, 9184, 9185, 9186, 9188, 9189, 9190, 9191, 9193, 9194, 9195,
+ 9196, 9198, 9199, 9200, 9201, 9203, 9204, 9205, 9206, 9207, 9209, 9210, 9211,
+ 9212, 9214, 9215, 9216, 9218, 9219, 9220, 9221, 9223, 9224, 9225, 9226, 9228,
+ 9229, 9230, 9231, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242,
+ 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255,
+ 9256, 9258, 9259, 9260, 9261, 9263, 9264, 9265, 9266, 9268, 9269, 9270, 9271,
+ 9273, 9274, 9275, 9276, 9278, 9279, 9280, 9281, 9283, 9284, 9285, 9286, 9288,
+ 9289, 9290, 9291, 9293, 9294, 9295, 9296, 9298, 9299, 9300, 9301, 9303, 9304,
+ 9305, 9306, 9308, 9309, 9310, 9311, 9313, 9314, 9315, 9316, 9317, 9318, 9319,
+ 9320, 9322, 9323, 9324, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9335, 9336,
+ 9337, 9338, 9340, 9341, 9342, 9343, 9345, 9346, 9347, 9348, 9350, 9351, 9352,
+ 9353, 9354, 9355, 9356, 9358, 9359, 9360, 9361, 9363, 9364, 9365, 9367, 9368,
+ 9369, 9370, 9372, 9373, 9374, 9376, 9377, 9378, 9379, 9381, 9382, 9383, 9384,
+ 9385, 9386, 9387, 9392, 9393, 9394, 9395, 9396, 9397, 9398, 9403, 9404, 9405,
+ 9406, 9407, 9408, 9409, 9410, 9411, 9414, 9415, 9416, 9417, 9421, 9422, 9423,
+ 9424, 9426, 9427, 9428, 9429, 9431, 9432, 9438, 9439, 9440, 9442, 9443, 9444,
+ 9445, 9446, 9447, 9448, 9449, 9451, 9452, 9453, 9454, 9456, 9457, 9458, 9459,
+ 9461, 9462, 9463, 9464, 9466, 9467, 9468, 9469, 9471, 9472, 9473, 9474, 9476,
+ 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487, 9488, 9489,
+ 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502,
+ 9503, 9504, 9505, 9506, 9507, 9508, 9510, 9511, 9512, 9513, 9514, 9515, 9516,
+ 9517, 9518, 9519, 9520, 9521, 9523, 9524, 9525, 9526, 9528, 9529, 9530, 9531,
+ 9533, 9534, 9535, 9536, 9538, 9539, 9540, 9541, 9543, 9544, 9545, 9546, 9548,
+ 9549, 9550, 9551, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9562, 9563,
+ 9564, 9565, 9567, 9568, 9569, 9570, 9572, 9573, 9574, 9575, 9577, 9578, 9579,
+ 9580, 9582, 9583, 9584, 9585, 9587, 9588, 9589, 9590, 9592, 9593, 9594, 9595,
+ 9597, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9606, 9607, 9608, 9609, 9611,
+ 9612, 9613, 9614, 9616, 9617, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9626,
+ 9627, 9628, 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639,
+ 9640, 9641, 9642, 9643, 9644, 9645, 9646, 9647, 9648, 9649, 9650, 9651, 9652,
+ 9653, 9655, 9656, 9657, 9658, 9659, 9660, 9661, 9662, 9664, 9665, 9666, 9667,
+ 9669, 9670, 9671, 9672, 9673, 9674, 9676, 9677, 9678, 9679, 9681, 9682, 9683,
+ 9684, 9686, 9687, 9688, 9689, 9690, 9691, 9693, 9694, 9695, 9696, 9697, 9698,
+ 9699, 9700, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9708, 9709, 9710, 9712,
+ 9713, 9714, 9715, 9716, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 9734, 9735,
+ 9736, 9737, 9738, 9739, 9741, 9742, 9743, 9744, 9746, 9747, 9748, 9749, 9751,
+ 9752, 9753, 9754, 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 9765,
+ 9766, 9767, 9769, 9770, 9771, 9772, 9774, 9775, 9776, 9777, 9778, 9779, 9780,
+ 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788, 9789, 9790, 9792, 9793, 9794,
+ 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9808,
+ 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9817, 9818, 9819, 9820, 9822, 9823,
+ 9824, 9825, 9827, 9828, 9829, 9830, 9831, 9832, 9834, 9835, 9836, 9837, 9839,
+ 9840, 9841, 9842, 9844, 9845, 9846, 9847, 9849, 9850, 9851, 9852, 9853, 9854,
+ 9855, 9856, 9857, 9858, 9859, 9860, 9866, 9867, 9868, 9869, 9870, 9871, 9874,
+ 9875, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887,
+ 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9898, 9899, 9900, 9901, 9902,
+ 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9911, 9912, 9913, 9914, 9915, 9916,
+ 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9925, 9926, 9927, 9928, 9929,
+ 9930, 9931, 9932, 9933, 9934, 9935, 9936, 9937, 9938, 9939, 9940, 9946, 9947,
+ 9948, 9949, 9950, 9951, 9952, 9953, 9954, 9955, 9956, 9957, 9960, 9961, 9962,
+ 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9982, 9983, 9984,
+ 9986, 9987, 9988, 9989, 9991, 9992, 9993, 9994, 9996, 9997, 9998, 9999, 10001,
+ 10002, 10003, 10004, 10006, 10007, 10008, 10009, 10011, 10012, 10013, 10014,
+ 10016, 10017, 10018, 10019, 10021, 10022, 10023, 10024, 10026, 10027, 10028,
+ 10029, 10031, 10032, 10033, 10034, 10036, 10037, 10038, 10040, 10041, 10042,
+ 10043, 10044, 10048, 10049, 10050, 10051, 10052, 10053, 10054, 10056, 10057,
+ 10058, 10059, 10061, 10062, 10063, 10064, 10065, 10066, 10067, 10068, 10070,
+ 10071, 10072, 10073, 10075, 10076, 10077, 10078, 10080, 10081, 10082, 10083,
+ 10085, 10086, 10087, 10088, 10090, 10091, 10092, 10093, 10095, 10096, 10097,
+ 10098, 10100, 10101, 10102, 10103, 10105, 10106, 10107, 10108, 10110, 10111,
+ 10112, 10113, 10115, 10116, 10117, 10118, 10120, 10121, 10122, 10123, 10125,
+ 10126, 10127, 10128, 10129, 10130, 10131, 10132, 10138, 10139, 10140, 10141,
+ 10143, 10144, 10145, 10146, 10148, 10149, 10150, 10151, 10152, 10153, 10154,
+ 10155, 10156, 10157, 10158, 10159, 10160, 10161, 10164, 10165, 10166, 10167,
+ 10169, 10170, 10171, 10172, 10173, 10174, 10176, 10177, 10178, 10179, 10181,
+ 10182, 10183, 10184, 10186, 10187, 10188, 10189, 10191, 10192, 10193, 10194,
+ 10196, 10197, 10198, 10199, 10201, 10202, 10203, 10204, 10206, 10207, 10208,
+ 10209, 10211, 10212, 10213, 10214, 10216, 10217, 10218, 10219, 10221, 10222,
+ 10223, 10224, 10226, 10227, 10228, 10229, 10231, 10232, 10233, 10234, 10236,
+ 10237, 10238, 10239, 10241, 10242, 10243, 10244, 10245, 10246, 10248, 10249,
+ 10250, 10251, 10253, 10254, 10255, 10256, 10258, 10259, 10260, 10261, 10263,
+ 10264, 10265, 10266, 10268, 10269, 10270, 10271, 10272, 10276, 10277, 10278,
+ 10279, 10280, 10281, 10282, 10283, 10285, 10286, 10287, 10288, 10289, 10290,
+ 10292, 10293, 10294, 10295, 10296, 10297, 10298, 10299, 10300, 10301, 10304,
+ 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313, 10314, 10315,
+ 10320, 10321, 10322, 10323, 10324, 10325, 10327, 10328, 10329, 10330, 10331,
+ 10332, 10334, 10335, 10336, 10337, 10339, 10340, 10341, 10342, 10343, 10344,
+ 10345, 10346, 10347, 10356, 10357, 10358, 10359, 10360, 10364, 10365, 10366,
+ 10367, 10368, 10369, 10370, 10371, 10372, 10373, 10374, 10375, 10376, 10377,
+ 10378, 10379, 10380, 10381, 10382, 10383, 10384, 10385, 10386, 10387, 10388,
+ 10389, 10391, 10392, 10393, 10394, 10396, 10397, 10398, 10399, 10400, 10401,
+ 10402, 10403, 10404, 10405, 10406, 10407, 10408, 10409, 10410, 10411, 10412,
+ 10413, 10414, 10415, 10416, 10417, 10418, 10419, 10420, 10422, 10423, 10424,
+ 10425, 10426, 10427, 10429, 10430, 10431, 10432, 10434, 10435, 10436, 10437,
+ 10439, 10440, 10441, 10442, 10444, 10445, 10446, 10447, 10449, 10450, 10451,
+ 10452, 10454, 10455, 10456, 10457, 10458, 10459, 10461, 10462, 10463, 10464,
+ 10466, 10467, 10468, 10469, 10471, 10472, 10473, 10474, 10475, 10476, 10478,
+ 10479, 10480, 10481, 10483, 10484, 10485, 10486, 10488, 10489, 10490, 10491,
+ 10493, 10494, 10495, 10496, 10497, 10498, 10499, 10512, 10513, 10514, 10515,
+ 10517, 10518, 10519, 10520, 10522, 10523, 10524, 10525, 10527, 10528, 10529,
+ 10530, 10532, 10533, 10534, 10535, 10536, 10537, 10541, 10542, 10543, 10544,
+ 10546, 10547, 10548, 10549, 10550, 10554, 10555, 10556, 10557, 10558, 10559,
+ 10560, 10561, 10562, 10563, 10565, 10566, 10567, 10568, 10569, 10570, 10571,
+ 10572, 10573, 10574, 10575, 10576, 10577, 10578, 10579, 10580, 10581, 10582,
+ 10583, 10584, 10585, 10586, 10587, 10588, 10589, 10590, 10591, 10592, 10593,
+ 10594, 10595, 10596, 10597, 10598, 10600, 10601, 10602, 10603, 10604, 10608,
+ 10609, 10610, 10611, 10612, 10613, 10615, 10616, 10617, 10618, 10620, 10621,
+ 10622, 10623, 10625, 10626, 10627, 10628, 10630, 10631, 10632, 10633, 10635,
+ 10636, 10637, 10638, 10639, 10640, 10641, 10642, 10643, 10644, 10645, 10646,
+ 10647, 10648, 10650, 10651, 10652, 10653, 10655, 10656, 10657, 10658, 10660,
+ 10661, 10662, 10663, 10665, 10666, 10667, 10668, 10670, 10671, 10672, 10673,
+ 10675, 10676, 10677, 10678, 10680, 10681, 10682, 10683, 10685, 10686, 10687,
+ 10688, 10690, 10691, 10692, 10693, 10695, 10696, 10697, 10698, 10700, 10701,
+ 10702, 10703, 10704, 10705, 10706, 10707, 10708, 10709, 10711, 10712, 10713,
+ 10714, 10716, 10717, 10718, 10719, 10721, 10722, 10723, 10724, 10726, 10727,
+ 10728, 10729, 10731, 10732, 10733, 10734, 10736, 10737, 10738, 10739, 10741,
+ 10742, 10743, 10744, 10746, 10747, 10748, 10749, 10751, 10752, 10753, 10754,
+ 10756, 10757, 10758, 10759, 10760, 10761, 10762, 10763, 10764, 10765, 10766,
+ 10767, 10769, 10770, 10771, 10772, 10774, 10775, 10776, 10777, 10779, 10780,
+ 10781, 10782, 10784, 10785, 10786, 10787, 10789, 10790, 10791, 10792, 10794,
+ 10795, 10796, 10797, 10799, 10800, 10801, 10802, 10803, 10804, 10808, 10809,
+ 10810, 10811, 10812, 10813, 10814, 10815, 10816, 10817, 10818, 10819, 10820,
+ 10821, 10822, 10823, 10827, 10828, 10829, 10830, 10832, 10833, 10834, 10835,
+ 10836, 10837, 10839, 10840, 10841, 10842, 10844, 10845, 10846, 10847, 10849,
+ 10850, 10851, 10852, 10854, 10855, 10856, 10857, 10859, 10860, 10861, 10862,
+ 10864, 10865, 10866, 10867, 10868, 10869, 10870, 10871, 10872, 10873, 10874,
+ 10875, 10876, 10877, 10879, 10880, 10881, 10882, 10884, 10885, 10886, 10887,
+ 10888, 10889, 10891, 10892, 10893, 10894, 10896, 10897, 10898, 10899, 10901,
+ 10902, 10903, 10904, 10906, 10907, 10908, 10909, 10910, 10911, 10912, 10913,
+ 10914, 10918, 10919, 10920, 10921, 10922, 10923, 10924, 10925, 10926, 10927,
+ 10928, 10929, 10930, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 10941,
+ 10942, 10945, 10946, 10947, 10948, 10950, 10951, 10952, 10953, 10954, 10958,
+ 10959, 10960, 10961, 10962, 10963, 10964, 10965, 10966, 10967, 10968, 10969,
+ 10970, 10971, 10972, 10973, 10975, 10976, 10977, 10978, 10980, 10981, 10982,
+ 10983, 10985, 10986, 10987, 10988, 10990, 10991, 10992, 10993, 10995, 10996,
+ 10997, 10998, 10999, 11000, 11001, 11002, 11003, 11005, 11006, 11007, 11008,
+ 11010, 11011, 11012, 11013, 11015, 11016, 11017, 11018, 11020, 11021, 11022,
+ 11023, 11025, 11026, 11027, 11028, 11030, 11031, 11032, 11033, 11035, 11036,
+ 11037, 11038, 11039, 11040, 11041, 11042, 11043, 11044, 11045, 11046, 11047,
+ 11048, 11049, 11073, 11074, 11075, 11076, 11077, 11078, 11080, 11081, 11082,
+ 11083, 11085, 11086, 11087, 11088, 11090, 11091, 11092, 11093, 11095, 11096,
+ 11097, 11098, 11100, 11101, 11102, 11103, 11104, 11105, 11106, 11107, 11117,
+ 11118, 11119, 11120, 11121, 11122, 11124, 11125, 11126, 11127, 11128, 11129,
+ 11130, 11131, 11132, 11133, 11134, 11135, 11136, 11137, 11138, 11139, 11140,
+ 11141, 11142, 11143, 11144, 11145, 11146, 11147, 11149, 11150, 11151, 11152,
+ 11154, 11155, 11156, 11157, 11159, 11160, 11161, 11162, 11163, 11164, 11165,
+ 11166, 11167, 11168, 11169, 11170, 11171, 11172, 11173, 11174, 11175, 11176,
+ 11177, 11178, 11179, 11180, 11181, 11182, 11183, 11184, 11185, 11186, 11187,
+ 11219, 11220, 11221, 11222, 11223, 11224, 11225, 11226, 11227, 11228, 11230,
+ 11231, 11232, 11233, 11235, 11236, 11237, 11238, 11240, 11241, 11242, 11243,
+ 11245, 11246, 11247, 11248, 11250, 11251, 11252, 11253, 11254, 11258, 11259,
+ 11260, 11261, 11262, 11263, 11265, 11266, 11267, 11268, 11270, 11271, 11272,
+ 11273, 11275, 11276, 11277, 11278, 11279, 11280, 11281, 11282, 11283, 11284,
+ 11285, 11286, 11287, 11288, 11289, 11290, 11291, 11292, 11293, 11294, 11295,
+ 11296, 11297, 11298, 11299, 11300, 11302, 11303, 11304, 11305, 11307, 11308,
+ 11309, 11310, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320,
+ 11321, 11322, 11323, 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331,
+ 11332, 11333, 11334, 11335, 11336, 11340, 11341, 11342, 11343, 11344, 11345,
+ 11347, 11348, 11349, 11350, 11352, 11353, 11354, 11355, 11357, 11358, 11359,
+ 11360, 11361, 11362, 11363, 11364, 11365, 11366, 11367, 11368, 11369, 11370,
+ 11371, 11372, 11373, 11374, 11375, 11376, 11377, 11378, 11379, 11380, 11382,
+ 11383, 11384, 11385, 11386, 11387, 11389, 11390, 11391, 11392, 11394, 11395,
+ 11396, 11397, 11399, 11400, 11401, 11402, 11403, 11404, 11405, 11406, 11407,
+ 11408, 11409, 11410, 11411, 11412, 11413, 11414, 11415, 11416, 11417, 11418,
+ 11419, 11420, 11421, 11422, 11423, 11424, 11426, 11427, 11428, 11429, 11431,
+ 11432, 11433, 11434, 11436, 11437, 11438, 11439, 11440, 11441, 11442, 11443,
+ 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454,
+ 11455, 11456, 11457, 11458, 11459, 11460, 11464, 11465, 11466, 11467, 11468,
+ 11469, 11471, 11472, 11473, 11474, 11476, 11477, 11478, 11479, 11481, 11482,
+ 11483, 11484, 11485, 11486, 11487, 11488, 11489, 11490, 11491, 11492, 11493,
+ 11494, 11495, 11496, 11497, 11498, 11499, 11500, 11501, 11502, 11503, 11504,
+ 11506, 11507, 11508, 11509, 11510, 11511, 11513, 11514, 11515, 11516, 11518,
+ 11519, 11520, 11521, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530,
+ 11531, 11532, 11533, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541,
+ 11542, 11543, 11544, 11545, 11546, 11548, 11549, 11550, 11551, 11553, 11554,
+ 11555, 11556, 11558, 11559, 11560, 11561, 11563, 11564, 11565, 11566, 11568,
+ 11569, 11570, 11571, 11573, 11574, 11575, 11576, 11578, 11579, 11580, 11581,
+ 11583, 11584, 11585, 11586, 11588, 11589, 11590, 11591, 11593, 11594, 11595,
+ 11596, 11598, 11599, 11600, 11601, 11602, 11603, 11605, 11606, 11607, 11608,
+ 11610, 11611, 11612, 11613, 11615, 11616, 11617, 11618, 11619, 11620, 11621,
+ 11622, 11623, 11624, 11625, 11626, 11627, 11628, 11629, 11630, 11631, 11632,
+ 11633, 11634, 11635, 11636, 11637, 11638, 11639, 11640, 11642, 11643, 11644,
+ 11645, 11647, 11648, 11649, 11650, 11652, 11653, 11654, 11655, 11656, 11657,
+ 11658, 11659, 11660, 11661, 11662, 11663, 11664, 11665, 11666, 11667, 11668,
+ 11669, 11670, 11671, 11672, 11673, 11674, 11675, 11676, 11677, 11683, 11684,
+ 11685, 11686, 11687, 11688, 11690, 11691, 11692, 11693, 11695, 11696, 11697,
+ 11698, 11700, 11701, 11702, 11703, 11704, 11705, 11706, 11707, 11709, 11710,
+ 11711, 11712, 11713, 11714, 11716, 11717, 11718, 11719, 11721, 11722, 11723,
+ 11724, 11726, 11727, 11728, 11729, 11730, 11731, 11732, 11733, 11734, 11735,
+ 11736, 11737, 11738, 11739, 11740, 11741, 11743, 11744, 11745, 11746, 11748,
+ 11749, 11750, 11751, 11753, 11754, 11755, 11756, 11758, 11759, 11760, 11762,
+ 11763, 11764, 11766, 11767, 11768, 11769, 11770, 11771, 11773, 11774, 11775,
+ 11776, 11778, 11779, 11780, 11781, 11783, 11784, 11785, 11786, 11787, 11788,
+ 11789, 11790, 11791, 11792, 11793, 11794, 11795, 11796, 11797, 11798, 11799,
+ 11800, 11801, 11802, 11804, 11805, 11806, 11807, 11808, 11809, 11810, 11811,
+ 11812, 11813, 11814, 11815, 11816, 11817, 11839, 11840, 11841, 11842, 11843,
+ 11844, 11845, 11847, 11849, 11850, 11851, 11852, 11854, 11855, 11856, 11857,
+ 11859, 11860, 11861, 11862, 11864, 11865, 11866, 11867, 11868, 11869, 11870,
+ 11871, 11872, 11873, 11874, 11875, 11876, 11877, 11878, 11879, 11880, 11881,
+ 11883, 11884, 11885, 11886, 11888, 11889, 11890, 11891, 11892, 11893, 11894,
+ 11895, 11896, 11897, 11898, 11899, 11900, 11901, 11902, 11903, 11904, 11905,
+ 11907, 11908, 11909, 11910, 11912, 11913, 11914, 11915, 11916, 11917, 11918,
+ 11919, 11920, 11921, 11923, 11924, 11925, 11926, 11927, 11928, 11936, 11937,
+ 11938, 11939, 11942, 11943, 11944, 11945, 11947, 11948, 11949, 11950, 11951,
+ 11952, 11953, 11955, 11956, 11957, 11958, 11960, 11961, 11962, 11963, 11965,
+ 11966, 11967, 11968, 11969, 11970, 11971, 11972, 11974, 11975, 11976, 11977,
+ 11979, 11980, 11981, 11982, 11984, 11985, 11986, 11987, 11989, 11990, 11991,
+ 11992, 11994, 11995, 11996, 11997, 11999, 12000, 12001, 12002, 12003, 12004,
+ 12005, 12006, 12008, 12009, 12010, 12011, 12013, 12014, 12015, 12016, 12018,
+ 12019, 12020, 12021, 12023, 12024, 12025, 12026, 12028, 12029, 12030, 12031,
+ 12033, 12034, 12035, 12036, 12037, 12038, 12039, 12040, 12042, 12043, 12044,
+ 12045, 12047, 12048, 12049, 12050, 12052, 12053, 12054, 12055, 12057, 12058,
+ 12059, 12060, 12061, 12062, 12063, 12064, 12066, 12067, 12068, 12069, 12071,
+ 12072, 12073, 12074, 12076, 12077, 12078, 12079, 12081, 12082, 12083, 12084,
+ 12085, 12086, 12087, 12088, 12090, 12091, 12092, 12093, 12095, 12096, 12097,
+ 12098, 12100, 12101, 12102, 12103, 12105, 12106, 12107, 12108, 12110, 12111,
+ 12112, 12113, 12115, 12116, 12117, 12118, 12119, 12120, 12121, 12122, 12132,
+ 12133, 12134, 12135, 12136, 12137, 12138, 12139, 12140, 12141, 12142, 12143,
+ 12144, 12145, 12146, 12147, 12148, 12149, 12150, 12151, 12152, 12153, 12154,
+ 12158, 12159, 12160, 12162, 12164, 12165, 12166, 12167, 12169, 12170, 12171,
+ 12172, 12174, 12175, 12176, 12177, 12178, 12182, 12183, 12184, 12185, 12186,
+ 12187, 12188, 12192, 12193, 12194, 12195, 12196, 12197, 12198, 12199, 12200,
+ 12204, 12205, 12206, 12207, 12208, 12210, 12212, 12218, 12219, 12220, 12221,
+ 12222, 12223, 12224, 12225, 12226, 12227, 12228, 12229, 12230, 12231, 12232,
+ 12233, 12234, 12235, 12236, 12237, 12238, 12239, 12240, 12241, 12242, 12243,
+ 12244, 12245, 12246, 12247, 12256, 12257, 12258, 12259, 12260, 12261, 12262,
+ 12263, 12264, 12265, 12266, 12267, 12268, 12269, 12270, 12271, 12272, 12273,
+ 12276, 12277, 12278, 12279, 12280, 12281, 12282, 12284, 12286, 12287, 12288,
+ 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12304, 12306, 12307, 12308,
+ 12309, 12311, 12312, 12313, 12314, 12315, 12316, 12317, 12318, 12319, 12320,
+ 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12330, 12331,
+ 12332, 12333, 12334, 12341, 12342, 12343, 12344, 12345, 12346, 12347, 12348,
+ 12349, 12350, 12351, 12352, 12353, 12354, 12355, 12356, 12357, 12358, 12364,
+ 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375,
+ 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12387, 12392,
+ 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12400, 12401, 12402, 12403,
+ 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414,
+ 12415, 12416, 12417, 12418, 12419, 12420, 12426, 12427, 12428, 12429, 12430,
+ 12431, 12432, 12433, 12434, 12435, 12436, 12437, 12438, 12439, 12440, 12441,
+ 12442, 12443, 12448, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456,
+ 12457, 12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468,
+ 12472, 12473, 12474, 12475, 12476, 12480, 12481, 12482, 12483, 12484, 12485,
+ 12486, 12487, 12488, 12489, 12490, 12491, 12492, 12493, 12494, 12495, 12496,
+ 12500, 12501, 12502, 12503, 12504, 12505, 12507, 12508, 12509, 12510, 12511,
+ 12512, 12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12525,
+ 12526, 12527, 12528, 12529, 12532, 12533, 12534, 12535, 12536, 12537, 12538,
+ 12539, 12540, 12541, 12542, 12543, 12547, 12548, 12549, 12550, 12551, 12552,
+ 12553, 12554, 12555, 12556, 12557, 12558, 12559, 12560, 12561, 12563, 12564,
+ 12565, 12566, 12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575,
+ 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 12586,
+ 12591, 12592, 12593, 12594, 12595, 12596, 12597, 12598, 12599, 12600, 12601,
+ 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12611, 12612,
+ 12613, 12614, 12615, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626,
+ 12627, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12640,
+ 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649, 12650, 12652,
+ 12661, 12662, 12663, 12664, 12665, 12666, 12667, 12668, 12669, 12670, 12671,
+ 12672, 12673, 12680, 12681, 12682, 12683, 12684, 12685, 12686, 12687, 12688,
+ 12689, 12691, 12693, 12697, 12698, 12699, 12700, 12701, 12702, 12703, 12704,
+ 12705, 12706, 12707, 12709, 12715, 12716, 12717, 12718, 12719, 12720, 12721,
+ 12722, 12723, 12724, 12725, 12726, 12727, 12728, 12729, 12730, 12731, 12739,
+ 12740, 12741, 12742, 12743, 12744, 12745, 12746, 12747, 12748, 12749, 12750,
+ 12762, 12763, 12764, 12766, 12767, 12768, 12769, 12770, 12771, 12772, 12773,
+ 12774, 12776, 12777, 12778, 12779, 12780, 12781, 12782, 12783, 12784, 12785,
+ 12786, 12787, 12788, 12789, 12790, 12794, 12795, 12796, 12797, 12798, 12799,
+ 12800, 12801, 12802, 12804, 12805, 12806, 12807, 12808, 12809, 12810, 12811,
+ 12812, 12814, 12815, 12816, 12817, 12818, 12819, 12820, 12821, 12822, 12823,
+ 12824, 12825, 12826, 12827, 12828, 12829, 12830, 12831, 12834, 12835, 12836,
+ 12837, 12838, 12839, 12840, 12841, 12842, 12843, 12844, 12845, 12846, 12847,
+ 12848, 12849, 12850, 12851, 12852, 12853, 12854, 12855, 12856, 12857, 12864,
+ 12865, 12866, 12867, 12868, 12869, 12870, 12871, 12872, 12873, 12874, 12875,
+ 12876, 12877, 12878, 12879, 12880, 12881, 12882, 12883, 12884, 12885, 12886,
+ 12887, 12888, 12889, 12890, 12898, 12899, 12900, 12901, 12902, 12903, 12904,
+ 12905, 12906, 12907, 12908, 12916, 12917, 12918, 12919, 12920, 12921, 12922,
+ 12923, 12924, 12925, 12926, 12927, 12928, 12929, 12930, 12931, 12932, 12933,
+ 12934, 12935, 12936, 12937, 12938, 12939, 12946, 12947, 12948, 12949, 12950,
+ 12951, 12952, 12953, 12954, 12955, 12956, 12957, 12958, 12959, 12960, 12961,
+ 12962, 12963, 12964, 12965, 12966, 12972, 12973, 12974, 12975, 12976, 12977,
+ 12978, 12979, 12980, 12981, 12982, 12983, 12984, 12985, 12986, 12987, 12988,
+ 12989, 12994, 12995, 12996, 12997, 12998, 12999, 13000, 13001, 13002, 13003,
+ 13004, 13005, 13006, 13007, 13008, 13012, 13013, 13014, 13015, 13016, 13017,
+ 13018, 13022, 13023, 13024, 13025, 13026, 13027, 13028, 13029, 13030, 13031,
+ 13032, 13033, 13034, 13035, 13036, 13037, 13038, 13039, 13040, 13041, 13042,
+ 13046, 13047, 13048, 13049, 13050, 13052, 13053, 13054, 13055, 13056, 13057,
+ 13058, 13059, 13060, 13061, 13062, 13063, 13066, 13067, 13068, 13069, 13070,
+ 13071, 13072, 13073, 13074, 13075, 13076, 13077, 13078, 13079, 13080, 13082,
+ 13083, 13084, 13085, 13086, 13087, 13088, 13089, 13090, 13091, 13092, 13093,
+ 13094, 13098, 13099, 13100, 13101, 13102, 13103, 13104, 13105, 13106, 13107,
+ 13108, 13109, 13110, 13111, 13112, 13113, 13114, 13115, 13116, 13117, 13118,
+ 13119, 13122, 13123, 13124, 13125, 13126, 13127, 13128, 13129, 13130, 13131,
+ 13132, 13134, 13135, 13136, 13137, 13138, 13139, 13140, 13141, 13142, 13148,
+ 13149, 13150, 13151, 13152, 13153, 13154, 13155, 13156, 13157, 13158, 13159,
+ 13160, 13161, 13162, 13163, 13164, 13165, 13166, 13167, 13168, 13169, 13170,
+ 13171, 13172, 13173, 13174, 13176, 13177, 13178, 13179, 13180, 13181, 13182,
+ 13183, 13184, 13185, 13186, 13187, 13188, 13189, 13190, 13191, 13194, 13195,
+ 13196, 13197, 13198, 13199, 13200, 13201, 13202, 13203, 13204, 13205, 13206,
+ 13207, 13208, 13209, 13210, 13211, 13212, 13213, 13214, 13215, 13216, 13217,
+ 13218, 13220, 13221, 13222, 13223, 13224, 13225, 13226, 13227, 13228, 13229,
+ 13230, 13231, 13232, 13233, 13234, 13235, 13236, 13237, 13238, 13239, 13240,
+ 13241, 13242, 13243, 13244, 13245, 13246, 13247, 13248, 13249, 13250, 13251,
+ 13252, 13253, 13254, 13255, 13256, 13257, 13258, 13259, 13260, 13261, 13262,
+ 13263, 13264, 13265, 13266, 13267, 13268, 13269, 13270, 13271, 13272, 13276,
+ 13277, 13278, 13279, 13280, 13281, 13282, 13283, 13284, 13286, 13287, 13288,
+ 13289, 13290, 13291, 13292, 13293, 13294, 13300, 13301, 13302, 13303, 13305,
+ 13306, 13307, 13308, 13310, 13311, 13312, 13313, 13315, 13316, 13317, 13318,
+ 13320, 13321, 13322, 13323, 13324, 13325, 13337, 13338, 13339, 13340, 13342,
+ 13343, 13344, 13345, 13346, 13347, 13348, 13349, 13350, 13351, 13353, 13354,
+ 13355, 13356, 13358, 13359, 13360, 13361, 13363, 13364, 13365, 13366, 13367,
+ 13368, 13369, 13370, 13371, 13372, 13373, 13374, 13375, 13376, 13377, 13378,
+ 13379, 13380, 13381, 13382, 13383, 13384, 13385, 13386, 13387, 13388, 13389,
+ 13390, 13391, 13392, 13394, 13395, 13396, 13397, 13399, 13400, 13401, 13402,
+ 13404, 13405, 13406, 13407, 13409, 13410, 13411, 13412, 13414, 13415, 13416,
+ 13417, 13418, 13419, 13420, 13421, 13422, 13423, 13424, 13425, 13426, 13427,
+ 13428, 13429, 13430, 13431, 13432, 13433, 13434, 13435, 13436, 13437, 13439,
+ 13440, 13441, 13442, 13444, 13445, 13446, 13447, 13449, 13450, 13451, 13452,
+ 13454, 13455, 13456, 13457, 13459, 13460, 13461, 13462, 13464, 13465, 13466,
+ 13467, 13469, 13470, 13471, 13472, 13475, 13476, 13477, 13478, 13479, 13480,
+ 13481, 13482, 13483, 13484, 13486, 13487, 13488, 13489, 13491, 13492, 13493,
+ 13494, 13496, 13497, 13498, 13499, 13501, 13502, 13503, 13504, 13506, 13507,
+ 13508, 13509, 13510, 13511, 13512, 13513, 13515, 13516, 13517, 13518, 13520,
+ 13521, 13522, 13523, 13525, 13526, 13527, 13528, 13530, 13531, 13532, 13533,
+ 13535, 13536, 13537, 13538, 13540, 13541, 13542, 13543, 13545, 13546, 13547,
+ 13548, 13549, 13550, 13551, 13553, 13555, 13564, 13565, 13566, 13567, 13568,
+ 13569, 13570, 13571, 13572, 13573, 13574, 13575, 13576, 13577, 13578, 13579,
+ 13580, 13581, 13582, 13583, 13584, 13585, 13586, 13587, 13588, 13589, 13590,
+ 13591, 13592, 13593, 13594, 13595, 13596, 13597, 13602, 13603, 13604, 13605,
+ 13608, 13609, 13610, 13611, 13612, 13613, 13614, 13615, 13617, 13618, 13619,
+ 13620, 13621, 13622, 13626, 13627, 13628, 13629, 13630, 13631, 13633, 13634,
+ 13635, 13636, 13637, 13638, 13639, 13640, 13641, 13642, 13643, 13644, 13645,
+ 13646, 13647, 13648, 13649, 13650, 13651, 13652, 13653, 13654, 13655, 13656,
+ 13657, 13658, 13659, 13660, 13661, 13662, 13663, 13664, 13665, 13666, 13668,
+ 13669, 13670, 13671, 13673, 13674, 13675, 13676, 13678, 13679, 13680, 13681,
+ 13682, 13683, 13684, 13685, 13686, 13687, 13688, 13689, 13690, 13691, 13692,
+ 13693, 13694, 13695, 13696, 13697, 13698, 13699, 13700, 13701, 13702, 13703,
+ 13704, 13705, 13706, 13707, 13709, 13710, 13711, 13712, 13713, 13714, 13715,
+ 13716, 13717, 13718, 13719, 13720, 13721, 13722, 13723, 13724, 13725, 13726,
+ 13727, 13728, 13729, 13730, 13731, 13732, 13733, 13734, 13735, 13736, 13737,
+ 13738, 13739, 13740, 13741, 13742, 13743, 13744, 13745, 13746, 13747, 13748,
+ 13749, 13750, 13751, 13752, 13753, 13754, 13755, 13756, 13757, 13758, 13759,
+ 13760, 13761, 13762, 13763, 13764, 13765, 13766, 13767, 13768, 13769, 13770,
+ 13771, 13772, 13773, 13774, 13775, 13776, 13777, 13778, 13779, 13780, 13781,
+ 13782, 13783, 13784, 13785, 13786, 13787, 13788, 13789, 13790, 13791, 13792,
+ 13793, 13794, 13795, 13796, 13797, 13798, 13799, 13800, 13801, 13802, 13803,
+ 13804, 13805, 13806, 13807, 13808, 13809, 13810, 13811, 13812, 13813, 13814,
+ 13815, 13816, 13817, 13818, 13819, 13820, 13821, 13822, 13823, 13824, 13825,
+ 13826, 13827, 13828, 13829, 13830, 13831, 13832, 13833, 13834, 13835, 13836,
+ 13837, 13838, 13839, 13840, 13841, 13842, 13843, 13844, 13845, 13846, 13847,
+ 13848, 13849, 13850, 13851, 13852, 13854, 13856, 13858, 13860, 13862, 13864,
+ 13866, 13868, 13870, 13879, 13880, 13881, 13882, 13883, 13884, 13885, 13886,
+ 13887, 13888, 13889, 13890, 13891, 13892, 13893, 13894, 13895, 13896, 13897,
+ 13898, 13899, 13901, 13902, 13903, 13904, 13905, 13906, 13909, 13910, 13911,
+ 13912, 13914, 13915, 13916, 13917, 13918, 13919, 13925, 13926, 13927, 13928,
+ 13929, 13930, 13931, 13932, 13933, 13934, 13935, 13936, 13937, 13938, 13939,
+ 13940, 13941, 13942, 13944, 13945, 13946, 13947, 13948, 13949, 13950, 13951,
+ 13953, 13954, 13955, 13956, 13958, 13959, 13960, 13961, 13962, 13963, 13964,
+ 13965, 13966, 13967, 13968, 13969, 13970, 13972, 13973, 13974, 13975, 13977,
+ 13978, 13979, 13980, 13981, 13985, 13986, 13987, 13988, 13989, 13990, 13991,
+ 13992, 13993, 13994, 13995, 13996, 13997, 13998, 13999, 14000, 14001, 14002,
+ 14003, 14004, 14005, 14006, 14007, 14008, 14009, 14010, 14011, 14012, 14013,
+ 14014, 14015, 14016, 14017, 14018, 14019, 14020, 14021, 14022, 14023, 14024,
+ 14025, 14026, 14027, 14028, 14029, 14030, 14031, 14032, 14033, 14034, 14035,
+ 14036, 14037, 14038, 14039, 14040, 14041, 14042, 14043, 14044, 14046, 14047,
+ 14048, 14049, 14050, 14053, 14054, 14055, 14056, 14057, 14061, 14062, 14063,
+ 14064, 14065, 14066, 14072, 14073, 14074, 14075, 14077, 14078, 14079, 14080,
+ 14082, 14083, 14084, 14085, 14087, 14088, 14089, 14090, 14097, 14098, 14099,
+ 14100, 14101, 14102, 14103, 14104, 14105, 14107, 14108, 14109, 14110, 14112,
+ 14113, 14114, 14115, 14117, 14118, 14119, 14120, 14122, 14123, 14124, 14125,
+ 14126, 14128, 14129, 14130, 14131, 14133, 14134, 14135, 14136, 14137, 14138,
+ 14140, 14141, 14142, 14143, 14145, 14146, 14147, 14148, 14150, 14151, 14152,
+ 14153, 14154, 14155, 14156, 14157, 14158, 14159, 14160, 14161, 14162, 14163,
+ 14164, 14165, 14166, 14167, 14168, 14169, 14170, 14171, 14172, 14173, 14175,
+ 14176, 14177, 14178, 14180, 14181, 14182, 14183, 14185, 14186, 14187, 14188,
+ 14190, 14191, 14192, 14193, 14195, 14196, 14197, 14198, 14200, 14201, 14202,
+ 14203, 14205, 14206, 14207, 14208, 14210, 14211, 14212, 14213, 14215, 14216,
+ 14217, 14218, 14220, 14221, 14222, 14223, 14225, 14226, 14227, 14228, 14230,
+ 14231, 14232, 14233, 14234, 14235, 14236, 14237, 14239, 14240, 14241, 14244,
+ 14245, 14246, 14247, 14248, 14249, 14250, 14252, 14253, 14254, 14255, 14257,
+ 14258, 14259, 14260, 14262, 14263, 14264, 14265, 14267, 14268, 14269, 14270,
+ 14271, 14272, 14273, 14275, 14276, 14277, 14278, 14280, 14281, 14282, 14284,
+ 14285, 14286, 14287, 14289, 14290, 14291, 14293, 14294, 14295, 14296, 14298,
+ 14299, 14300, 14301, 14302, 14303, 14304, 14309, 14310, 14311, 14312, 14313,
+ 14314, 14315, 14320, 14321, 14322, 14323, 14324, 14325, 14326, 14327, 14328,
+ 14331, 14332, 14333, 14334, 14338, 14339, 14340, 14341, 14343, 14344, 14345,
+ 14346, 14348, 14349, 14355, 14356, 14357, 14359, 14360, 14361, 14362, 14363,
+ 14364, 14365, 14366, 14368, 14369, 14370, 14371, 14373, 14374, 14375, 14376,
+ 14378, 14379, 14380, 14381, 14383, 14384, 14385, 14386, 14388, 14389, 14390,
+ 14391, 14393, 14394, 14395, 14396, 14397, 14398, 14399, 14400, 14401, 14402,
+ 14403, 14404, 14405, 14406, 14407, 14408, 14409, 14410, 14411, 14412, 14413,
+ 14452, 14491, 14493, 14495, 14497, 14499, 14501, 14503, 14505, 14507, 14508,
+ 14510, 14512, 14514, 14516, 14518, 14520, 14522, 14524, 14525, 14527, 14529,
+ 14531, 14532, 14533, 14534, 14535, 14536, 14537, 14539, 14540, 14542, 14544,
+ 14546, 14547, 14548, 14549, 14551, 14553, 14557, 14559, 14561, 14563, 14565,
+ 14567, 14569, 14571, 14572, 14573, 14575, 14576, 14577, 14578, 14579, 14581,
+ 14583, 14584, 14586, 14588, 14590, 14592, 14594, 14595, 14598, 14604, 14605,
+ 14606, 14608, 14609, 14612, 14613, 14616, 14622, 14624, 14626, 14628, 14630,
+ 14632, 14634, 14636, 14638, 14640, 14642, 14644, 14646, 14647, 14649, 14651,
+ 14653, 14655, 14657, 14659, 14661, 14663, 14665, 14667, 14669, 14671, 14673,
+ 14679, 14681, 14682, 14683, 14686, 14688, 14690, 14692, 14694, 14696, 14698,
+ 14700, 14702, 14704, 14706, 14708, 14710, 14712, 14714, 14716, 14718, 14720,
+ 14722, 14724, 14725, 14726, 14728, 14730, 14732, 14734, 14739, 14740, 14743,
+ 14744, 14753, 14755, 14756, 14757, 14758, 14759, 14760, 14762, 14764, 14765,
+ 14766, 14767, 14769, 14771, 14773, 14775, 14777, 14779, 14781, 14783, 14785,
+ 14787, 14789, 14791, 14793, 14795, 14808, 14810, 14812, 14814, 14816, 14817,
+ 14818, 14822, 14824, 14828, 14829, 14830, 14831, 14832, 14833, 14834, 14835,
+ 14836, 14838, 14840, 14842, 14844, 14846, 14848, 14850, 14851, 14853, 14855,
+ 14857, 14859, 14861, 14863, 14865, 14867, 14869, 14871, 14873, 14875, 14877,
+ 14879, 14881, 14883, 14885, 14887, 14889, 14891, 14893, 14894, 14895, 14897,
+ 14899, 14901, 14903, 14905, 14907, 14909, 14910, 14911, 14912, 14913, 14917,
+ 14918, 14922, 14924, 14926, 14928, 14930, 14932, 14933, 14934, 14936, 14938,
+ 14940, 14942, 14946, 14950, 14951, 14952, 14955, 14957, 14959, 14960, 14962,
+ 14964, 14966, 14968, 14970, 14971, 14972, 14974, 14976, 14978, 14980, 14982,
+ 14984, 14986, 14990, 14992, 14994, 14996, 15000, 15004, 15008, 15010, 15012,
+ 15014, 15018, 15020, 15022, 15024, 15026, 15028, 15052, 15062, 15064, 15066,
+ 15068, 15070, 15072, 15074, 15106, 15108, 15110, 15112, 15114, 15116, 15117,
+ 15119, 15121, 15123, 15124, 15125, 15126, 15127, 15129, 15131, 15133, 15134,
+ 15135, 15136, 15137, 15138, 15139, 15141, 15143, 15145, 15146, 15147, 15148,
+ 15149, 15150, 15152, 15154, 15156, 15157, 15158, 15159, 15160, 15162, 15164,
+ 15166, 15167, 15168, 15169, 15170, 15171, 15172, 15174, 15176, 15178, 15179,
+ 15180, 15181, 15182, 15183, 15185, 15187, 15189, 15190, 15191, 15192, 15193,
+ 15194, 15196, 15198, 15200, 15202, 15204, 15206, 15208, 15210, 15212, 15214,
+ 15216, 15218, 15220, 15221, 15222, 15223, 15224, 15226, 15228, 15230, 15231,
+ 15232, 15233, 15234, 15235, 15236, 15238, 15240, 15242, 15244, 15245, 15247,
+ 15249, 15251, 15252, 15253, 15254, 15256, 15258, 15260, 15262, 15264, 15266,
+ 15267, 15268, 15269, 15270, 15272, 15274, 15276, 15278, 15280, 15286, 15288,
+ 15292, 15294, 15298, 15302, 15324, 15326, 15328, 15330, 15332, 15333, 15334,
+ 15335, 15337, 15338, 15339, 15340, 15342, 15344, 15352, 15355, 15356, 15358,
+ 15360, 15362, 15363, 15365, 15367, 15369, 15371, 15373, 15375, 15376, 15378,
+ 15380, 15382, 15384, 15386, 15388, 15389, 15391, 15393, 15395, 15397, 15398,
+ 15400, 15402, 15404, 15406, 15407, 15409, 15411, 15413, 15415, 15417, 15419,
+ 15421, 15423, 15425, 15427, 15428, 15429, 15430, 15431, 15432, 15434, 15436,
+ 15438, 15440, 15444, 15446, 15448, 15450, 15452, 15453, 15456, 15461, 15462,
+ 15463, 15472, 15474, 15477, 15480, 15486, 15495, 15496, 15498, 15501, 15502,
+ 15503, 15504, 15505, 15511, 15516, 15522, 15529, 15530, 15531, 15535, 15537,
+ 15538, 15539, 15543, 15545, 15546, 15547, 15548, 15550, 15551, 15555, 15556,
+ 15560, 15561, 15562, 15564, 15573, 15575, 15577, 15581, 15587, 15591, 15599,
+ 15606, 15609, 15611, 15616, 15619, 15623, 15627, 15632, 15640, 15647, 15650,
+ 15651, 15653, 15655, 15659, 15661, 15665, 15670, 15676, 15683, 15687, 15688,
+ 15689, 15691, 15692, 15695, 15696, 15697, 15700, 15702, 15703, 15707, 15709,
+ 15713, 15721, 15722, 15723, 15724, 15725, 15726, 15728, 15729, 15730, 15731,
+ 15732, 15733, 15734, 15735, 15736, 15737, 15738, 15742, 15743, 15744, 15746,
+ 15747, 15748, 15750, 15753, 15759, 15765, 15767, 15769, 15771, 15773, 15775,
+ 15787, 15799, 15800, 15802, 15804, 15806, 15807, 15808, 15809, 15810, 15811,
+ 15813, 15815, 15817, 15819, 15821, 15822, 15823, 15824, 15825, 15826, 15828,
+ 15830, 15832, 15834, 15836, 15838, 15840, 15841, 15843, 15845, 15847, 15849,
+ 15851, 15852, 15854, 15856, 15858, 15860, 15862, 15864, 15866, 15868, 15872,
+ 15881, 15882, 15883, 15884, 15889, 15892, 15893, 15895, 15896, 15897, 15899,
+ 15900, 15901, 15902, 15903, 15904, 15905, 15907, 15909, 15911, 15912, 15913,
+ 15914, 15915, 15916, 15917, 15918, 15919, 15920, 15921, 15922, 15923, 15924,
+ 15925, 15926, 15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934, 15935,
+ 15936, 15937, 15938, 15939, 15940, 15942, 15944, 15946, 15948, 15950, 15952,
+ 15954, 15956, 15959, 15968, 15969, 15970, 15971, 15972, 15973, 15975, 15976,
+ 15980, 15983, 15985, 15987, 15989, 15990, 15992, 15994, 15996, 15998, 16000,
+ 16001, 16003, 16005, 16007, 16009, 16010, 16011, 16012, 16014, 16015, 16017,
+ 16018, 16020, 16022, 16023, 16024, 16025, 16026, 16027, 16028, 16029, 16030,
+ 16031, 16032, 16033, 16034, 16035, 16037, 16038, 16041, 16045, 16051, 16053,
+ 16055, 16057, 16059, 16061, 16063, 16065, 16066, 16068, 16070, 16072, 16074,
+ 16075, 16076, 16077, 16078, 16079, 16081, 16083, 16085, 16087, 16089, 16091,
+ 16093, 16095, 16097, 16099, 16101, 16103, 16104, 16105, 16106, 16107, 16108,
+ 16111, 16112, 16115, 16116, 16118, 16120, 16122, 16123, 16125, 16127, 16129,
+ 16131, 16136, 16141, 16142, 16143, 16146, 16150, 16152, 16154, 16156, 16158,
+ 16159, 16161, 16163, 16165, 16167, 16169, 16171, 16173, 16175, 16177, 16179,
+ 16181, 16183, 16185, 16186, 16188, 16190, 16192, 16194, 16196, 16198, 16200,
+ 16202, 16203, 16205, 16207, 16208, 16209, 16211, 16212, 16213, 16214, 16215,
+ 16216, 16217, 16220, 16221, 16224, 16226, 16228, 16230, 16232, 16234, 16236,
+ 16238, 16240, 16241, 16243, 16245, 16247, 16249, 16251, 16253, 16255, 16257,
+ 16258, 16260, 16262, 16264, 16266, 16268, 16270, 16272, 16274, 16277, 16278,
+ 16279, 16280, 16281, 16284, 16287, 16293, 16295, 16297, 16299, 16302, 16304,
+ 16306, 16308, 16310, 16312, 16314, 16316, 16318, 16319, 16321, 16322, 16323,
+ 16326, 16327, 16328, 16329, 16337, 16342, 16344, 16345, 16349, 16350, 16352,
+ 16353, 16354, 16355, 16361, 16363, 16365, 16367, 16369, 16371, 16373, 16375,
+ 16377, 16379, 16381, 16383, 16385, 16387, 16389, 16391, 16393, 16395, 16397,
+ 16399, 16400, 16402, 16404, 16406, 16408, 16410, 16412, 16414, 16416, 16418,
+ 16420, 16422, 16424, 16426, 16428, 16430, 16432, 16438, 16440, 16441, 16442,
+ 16443, 16446, 16448, 16450, 16452, 16454, 16456, 16458, 16460, 16462, 16464,
+ 16466, 16468, 16470, 16472, 16474, 16476, 16477, 16478, 16479, 16481, 16483,
+ 16484, 16485, 16486, 16487, 16497, 16498, 16499, 16501, 16502, 16503, 16505,
+ 16508, 16511, 16512, 16514, 16522, 16525, 16526, 16528, 16530, 16535, 16536,
+ 16537, 16540, 16541, 16544, 16546, 16555, 16557, 16559, 16561, 16563, 16565,
+ 16567, 16569, 16571, 16573, 16575, 16577, 16579, 16581, 16583, 16596, 16598,
+ 16600, 16602, 16603, 16604, 16605, 16606, 16607, 16608, 16610, 16612, 16614,
+ 16615, 16616, 16617, 16618, 16619, 16621, 16625, 16627, 16631, 16633, 16634,
+ 16635, 16636, 16637, 16638, 16639, 16640, 16641, 16642, 16644, 16646, 16647,
+ 16648, 16650, 16652, 16654, 16656, 16658, 16660, 16661, 16662, 16663, 16665,
+ 16667, 16669, 16671, 16673, 16675, 16677, 16679, 16681, 16683, 16685, 16687,
+ 16689, 16691, 16693, 16695, 16697, 16699, 16701, 16703, 16705, 16707, 16709,
+ 16711, 16713, 16715, 16717, 16719, 16721, 16722, 16723, 16725, 16729, 16730,
+ 16731, 16735, 16737, 16739, 16741, 16743, 16745, 16747, 16748, 16749, 16750,
+ 16752, 16754, 16756, 16758, 16760, 16762, 16764, 16768, 16770, 16772, 16776,
+ 16777, 16778, 16781, 16783, 16785, 16794, 16795, 16797, 16799, 16801, 16803,
+ 16805, 16807, 16808, 16809, 16811, 16813, 16815, 16817, 16819, 16821, 16823,
+ 16827, 16829, 16831, 16833, 16837, 16841, 16845, 16847, 16849, 16851, 16855,
+ 16857, 16859, 16861, 16863, 16865, 16867, 16891, 16899, 16901, 16903, 16905,
+ 16907, 16909, 16911, 16913, 16915, 16917, 16919, 16921, 16923, 16927, 16929,
+ 16933, 16937, 16939, 16943, 16945, 16947, 16977, 16978, 16980, 16982, 16984,
+ 16986, 16987, 16988, 16989, 16990, 16992, 16994, 16996, 16998, 16999, 17000,
+ 17001, 17002, 17003, 17004, 17006, 17008, 17010, 17012, 17013, 17014, 17015,
+ 17016, 17017, 17019, 17021, 17023, 17025, 17026, 17027, 17028, 17029, 17031,
+ 17033, 17035, 17037, 17038, 17039, 17040, 17041, 17042, 17043, 17045, 17047,
+ 17049, 17051, 17052, 17053, 17054, 17055, 17056, 17058, 17060, 17062, 17064,
+ 17065, 17066, 17067, 17068, 17069, 17071, 17073, 17075, 17077, 17079, 17081,
+ 17083, 17085, 17087, 17089, 17091, 17093, 17095, 17097, 17098, 17099, 17100,
+ 17101, 17103, 17105, 17107, 17109, 17110, 17111, 17112, 17113, 17114, 17115,
+ 17117, 17119, 17121, 17123, 17125, 17127, 17129, 17132, 17133, 17135, 17137,
+ 17139, 17141, 17142, 17143, 17144, 17146, 17148, 17150, 17152, 17154, 17156,
+ 17157, 17158, 17159, 17161, 17163, 17165, 17167, 17169, 17171, 17173, 17175,
+ 17177, 17179, 17181, 17183, 17185, 17189, 17191, 17195, 17199, 17201, 17205,
+ 17207, 17209, 17214, 17217, 17251, 17253, 17255, 17257, 17259, 17261, 17263,
+ 17265, 17267, 17269, 17271, 17273, 17275, 17276, 17278, 17280, 17282, 17284,
+ 17285, 17286, 17287, 17288, 17290, 17292, 17294, 17296, 17297, 17298, 17299,
+ 17300, 17301, 17302, 17304, 17306, 17308, 17310, 17311, 17312, 17313, 17314,
+ 17315, 17317, 17319, 17321, 17323, 17324, 17325, 17326, 17327, 17329, 17331,
+ 17333, 17335, 17336, 17337, 17338, 17339, 17340, 17341, 17343, 17345, 17347,
+ 17349, 17350, 17351, 17352, 17353, 17354, 17356, 17358, 17360, 17362, 17363,
+ 17364, 17365, 17366, 17367, 17369, 17371, 17373, 17375, 17377, 17379, 17381,
+ 17383, 17385, 17387, 17389, 17391, 17393, 17395, 17396, 17397, 17398, 17399,
+ 17401, 17403, 17405, 17407, 17408, 17409, 17410, 17411, 17412, 17413, 17415,
+ 17417, 17419, 17421, 17423, 17424, 17425, 17426, 17427, 17429, 17431, 17433,
+ 17435, 17436, 17437, 17438, 17439, 17441, 17443, 17445, 17447, 17449, 17455,
+ 17457, 17461, 17463, 17467, 17473, 17475, 17478, 17481, 17487, 17489, 17493,
+ 17495, 17499, 17501, 17534, 17536, 17539, 17542, 17545, 17547, 17548, 17549,
+ 17550, 17553, 17554, 17555, 17556, 17557, 17560, 17561, 17564, 17567, 17570,
+ 17573, 17576, 17588, 17592, 17594, 17596, 17598, 17600, 17602, 17604, 17606,
+ 17608, 17609, 17611, 17613, 17615, 17616, 17618, 17620, 17622, 17624, 17626,
+ 17628, 17629, 17631, 17633, 17635, 17637, 17639, 17641, 17642, 17644, 17646,
+ 17648, 17650, 17651, 17653, 17655, 17657, 17659, 17660, 17662, 17664, 17666,
+ 17668, 17670, 17671, 17673, 17675, 17677, 17678, 17680, 17682, 17684, 17686,
+ 17688, 17690, 17691, 17693, 17695, 17697, 17699, 17701, 17703, 17704, 17706,
+ 17708, 17710, 17712, 17713, 17715, 17717, 17719, 17721, 17722, 17724, 17726,
+ 17728, 17730, 17732, 17734, 17736, 17739, 17742, 17745, 17748, 17752, 17753,
+ 17756, 17761, 17771, 17775, 17779, 17789, 17799, 17806, 17808, 17812, 17817,
+ 17820, 17830, 17831, 17832, 17841, 17843, 17846, 17849, 17855, 17864, 17865,
+ 17867, 17869, 17871, 17872, 17878, 17881, 17891, 17893, 17895, 17901, 17905,
+ 17908, 17911, 17912, 17916, 17919, 17928, 17930, 17933, 17935, 17936, 17938,
+ 17943, 17945, 17947, 17948, 17949, 17950, 17951, 17952, 17958, 17963, 17969,
+ 17976, 17977, 17978, 17979, 17980, 17984, 17986, 17987, 17988, 17989, 17991,
+ 17992, 17993, 17995, 17998, 17999, 18003, 18005, 18010, 18011, 18012, 18013,
+ 18015, 18019, 18020, 18021, 18022, 18023, 18024, 18026, 18027, 18031, 18032,
+ 18033, 18034, 18035, 18036, 18037, 18041, 18042, 18043, 18044, 18045, 18047,
+ 18050, 18055, 18064, 18070, 18075, 18077, 18078, 18080, 18082, 18086, 18087,
+ 18089, 18095, 18101, 18110, 18118, 18124, 18128, 18136, 18143, 18146, 18148,
+ 18153, 18156, 18160, 18164, 18169, 18179, 18180, 18183, 18184, 18186, 18187,
+ 18190, 18195, 18198, 18199, 18201, 18203, 18204, 18206, 18208, 18210, 18212,
+ 18214, 18216, 18218, 18223, 18225, 18227, 18229, 18230, 18231, 18233, 18235,
+ 18237, 18239, 18241, 18242, 18243, 18245, 18247, 18249, 18250, 18253, 18256,
+ 18258, 18260, 18262, 18263, 18265, 18274, 18275, 18276, 18279, 18282, 18288,
+ 18291, 18292, 18298, 18300, 18302, 18304, 18306, 18308, 18310, 18312, 18314,
+ 18316, 18318, 18320, 18322, 18324, 18326, 18328, 18330, 18332, 18334, 18335,
+ 18337, 18339, 18341, 18343, 18345, 18347, 18349, 18351, 18357, 18359, 18362,
+ 18364, 18366, 18368, 18370, 18372, 18374, 18376, 18378, 18380, 18382, 18384,
+ 18386, 18388, 18390, 18392, 18394, 18396, 18398, 18400, 18402, 18404, 18406,
+ 18408, 18417, 18419, 18421, 18423, 18425, 18427, 18429, 18431, 18433, 18435,
+ 18437, 18439, 18441, 18443, 18445, 18447, 18449, 18451, 18453, 18466, 18468,
+ 18470, 18472, 18474, 18476, 18477, 18479, 18483, 18485, 18489, 18491, 18492,
+ 18494, 18496, 18498, 18500, 18502, 18504, 18506, 18508, 18509, 18511, 18513,
+ 18515, 18517, 18519, 18521, 18523, 18525, 18527, 18529, 18531, 18533, 18535,
+ 18537, 18539, 18541, 18543, 18545, 18547, 18549, 18551, 18553, 18555, 18557,
+ 18559, 18561, 18563, 18565, 18567, 18568, 18569, 18571, 18575, 18576, 18580,
+ 18582, 18584, 18586, 18588, 18590, 18592, 18594, 18596, 18598, 18600, 18602,
+ 18604, 18606, 18610, 18612, 18614, 18618, 18619, 18620, 18623, 18625, 18627,
+ 18629, 18631, 18633, 18635, 18637, 18638, 18640, 18642, 18644, 18646, 18648,
+ 18650, 18652, 18656, 18658, 18660, 18662, 18666, 18670, 18674, 18676, 18678,
+ 18680, 18684, 18686, 18688, 18690, 18692, 18694, 18696, 18720, 18722, 18732,
+ 18735, 18736, 18737, 18738, 18739, 18740, 18742, 18744, 18746, 18751, 18752,
+ 18755, 18756, 18757, 18759, 18762, 18765, 18766, 18767, 18769, 18770, 18773,
+ 18774, 18775, 18776, 18777, 18780, 18781, 18786, 18795, 18801, 18806, 18808,
+ 18809, 18811, 18817, 18823, 18832, 18840, 18846, 18849, 18857, 18864, 18867,
+ 18868, 18870, 18872, 18876, 18878, 18880, 18882, 18883, 18889, 18892, 18902,
+ 18904, 18906, 18912, 18922, 18926, 18929, 18932, 18936, 18938, 18947, 18949,
+ 18952, 18954, 18959, 18961, 18963, 18967, 18972, 18978, 18985, 18986, 18987,
+ 18989, 18992, 18993, 18997, 18998, 19003, 19004, 19005, 19006, 19008, 19012,
+ 19013, 19014, 19016, 19017, 19020, 19021, 19022, 19023, 19024, 19025, 19028,
+ 19029, 19032, 19034, 19035, 19039, 19041, 19045, 19053, 19054, 19055, 19057,
+ 19058, 19059, 19060, 19061, 19062, 19063, 19065, 19066, 19067, 19068, 19069,
+ 19070, 19071, 19072, 19073, 19074, 19075, 19076, 19077, 19078, 19079, 19080,
+ 19081, 19082, 19083, 19084, 19088, 19089, 19090, 19092, 19093, 19094, 19096,
+ 19099, 19105, 19111, 19114, 19117, 19120, 19122, 19125, 19138, 19151, 19153,
+ 19154, 19155, 19158, 19161, 19164, 19165, 19166, 19167, 19168, 19169, 19170,
+ 19172, 19174, 19176, 19178, 19180, 19181, 19182, 19183, 19184, 19185, 19187,
+ 19189, 19191, 19193, 19195, 19197, 19199, 19201, 19203, 19204, 19205, 19206,
+ 19207, 19208, 19210, 19212, 19214, 19216, 19218, 19220, 19223, 19226, 19227,
+ 19228, 19230, 19232, 19234, 19236, 19238, 19239, 19241, 19243, 19245, 19247,
+ 19249, 19251, 19253, 19255, 19257, 19258, 19260, 19262, 19264, 19266, 19268,
+ 19270, 19273, 19276, 19278, 19282, 19291, 19292, 19293, 19294, 19295, 19296,
+ 19298, 19299, 19300, 19301, 19302, 19303, 19305, 19307, 19309, 19311, 19314,
+ 19315, 19316, 19317, 19318, 19319, 19320, 19321, 19322, 19323, 19324, 19325,
+ 19326, 19327, 19328, 19329, 19330, 19331, 19332, 19333, 19334, 19335, 19336,
+ 19337, 19338, 19339, 19340, 19341, 19342, 19343, 19344, 19345, 19346, 19347,
+ 19348, 19349, 19350, 19351, 19353, 19355, 19357, 19359, 19361, 19363, 19365,
+ 19367, 19370, 19379, 19380, 19381, 19382, 19383, 19384, 19387, 19390, 19391,
+ 19392, 19393, 19395, 19399, 19402, 19405, 19407, 19410, 19413, 19414, 19416,
+ 19418, 19420, 19421, 19422, 19423, 19424, 19425, 19427, 19428, 19429, 19430,
+ 19431, 19432, 19433, 19434, 19435, 19436, 19439, 19440, 19444, 19449, 19450,
+ 19451, 19453, 19455, 19461, 19463, 19465, 19467, 19469, 19471, 19473, 19475,
+ 19477, 19479, 19481, 19484, 19485, 19488, 19490, 19492, 19494, 19496, 19498,
+ 19499, 19500, 19501, 19502, 19503, 19505, 19507, 19509, 19511, 19513, 19515,
+ 19517, 19519, 19521, 19523, 19525, 19527, 19529, 19530, 19531, 19532, 19533,
+ 19534, 19536, 19538, 19540, 19542, 19544, 19546, 19548, 19550, 19552, 19554,
+ 19556, 19559, 19562, 19563, 19564, 19566, 19568, 19569, 19571, 19573, 19575,
+ 19577, 19578, 19581, 19583, 19586, 19589, 19592, 19595, 19598, 19604, 19611,
+ 19614, 19617, 19623, 19630, 19631, 19632, 19635, 19639, 19642, 19644, 19647,
+ 19649, 19650, 19652, 19654, 19656, 19658, 19660, 19662, 19664, 19666, 19668,
+ 19670, 19677, 19678, 19679, 19680, 19681, 19682, 19683, 19684, 19685, 19686,
+ 19687, 19688, 19689, 19690, 19691, 19692, 19693, 19694, 19695, 19696, 19697,
+ 19698, 19699, 19700, 19701, 19702, 19703, 19704, 19705, 19706, 19707, 19708,
+ 19709, 19710, 19711, 19712, 19713, 19714, 19715, 19716, 19717, 19718, 19719,
+ 19720, 19721, 19722, 19723, 19724, 19725, 19726, 19727, 19728, 19729, 19730,
+ 19731, 19732, 19733, 19734, 19735, 19736, 19737, 19738, 19739, 19740, 19741,
+ 19742, 19743, 19744, 19745, 19746, 19747, 19748, 19749, 19750, 19751, 19752,
+ 19753, 19754, 19756, 19758, 19760, 19769, 19772, 19775, 19778, 19781, 19784,
+ 19787, 19795, 19801, 19809, 19813, 19818, 19830, 19833, 19840, 19842, 19848,
+ 19863, 19871, 19883, 19885, 19891, 19893, 19895, 19901, 19903, 19905, 19912,
+ 19916, 19918, 19928, 19934, 19938, 19948, 19958, 19960, 19968, 19970, 19971,
+ 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019, 20020
+};
+
+static t_ccsid final_array[] = {
+ 0, 62246, 368, 916, 898, 33723, 905, 870, 867, 866, 864, 863, 862, 861, 858,
+ 856, 853, 852, 851, 438, 1387, 5355, 9450, 9449, 9448, 5351, 5350, 5349,
+ 5348, 5347, 1209, 1236, 1234, 1204, 1202, 13489, 875, 944, 1052, 859, 921,
+ 915, 914, 913, 820, 924, 1364, 879, 917, 814, 1090, 1251, 922, 1253, 5479,
+ 971, 1048, 1376, 1150, 1149, 1148, 1147, 1146, 1145, 1144, 1143, 1142, 1141,
+ 925, 776, 1027, 919, 906, 904, 892, 881, 872, 871, 869, 865, 501, 425, 424,
+ 421, 298, 291, 286, 285, 281, 279, 278, 274, 38, 1384, 839, 1277, 62236,
+ 62225, 62212, 61953, 57346, 28710, 25547, 17355, 13122, 13125, 12709, 9067,
+ 9057, 9031, 8613, 5124, 5051, 5053, 5054, 5055, 5056, 5036, 5027, 4972, 4961,
+ 4966, 4952, 4953, 4954, 4949, 4397, 1393, 1400, 1381, 1382, 1389, 1374, 1365,
+ 1281, 1282, 1283, 1284, 1276, 1252, 1254, 1255, 1256, 1257, 1258, 1259, 1161,
+ 1165, 1154, 1155, 1156, 1157, 1158, 1159, 1131, 1133, 1134, 1138, 1123, 1124,
+ 1130, 1113, 1115, 1116, 1098, 1099, 1089, 1041, 1042, 1043, 1044, 1047, 1026,
+ 1028, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1009, 1010,
+ 965, 966, 951, 952, 957, 958, 959, 960, 943, 945, 947, 948, 950, 931, 933,
+ 934, 935, 936, 937, 938, 939, 940, 923, 927, 928, 929, 897, 876, 834, 836,
+ 837, 838, 738, 721, 301, 302, 257, 1, 898, 916, 368, 368, 62246
+};
+
+static t_staterange goto_array[] = {
+ 13445, 11977, 13446, 12066, 11793, 13448, 13449, 13450, 13451, 13453, 13454,
+ 13455, 13456, 13457, 13473, 13458, 13459, 13460, 13466, 13461, 13462, 13468,
+ 11793, 13447, 13449, 13450, 13451, 11793, 13448, 13449, 13450, 13451, 13452,
+ 13453, 13454, 13455, 13456, 13457, 13473, 13458, 13459, 13460, 13466, 13461,
+ 13462, 13468, 11735, 13469, 13470, 13463, 13464, 13473, 13465, 13474, 13475,
+ 13476, 13477, 13478, 13479, 13480, 13481, 13466, 13482, 13467, 13483, 13468,
+ 13485, 11735, 13469, 13470, 13471, 13472, 13473, 13474, 13475, 13476, 13477,
+ 13478, 13479, 13480, 13481, 13482, 13483, 13484, 13485, 11147, 13486, 11230,
+ 13487, 13488, 13426, 13419, 13420, 13496, 13423, 13498, 19, 229, 230, 231,
+ 232, 18, 17, 16, 15, 14, 238, 237, 236, 235, 234, 239, 240, 241, 242, 243,
+ 13, 12, 11, 10, 9, 8, 7, 251, 250, 249, 248, 247, 246, 245, 252, 253, 254,
+ 255, 256, 257, 258, 259, 244, 261, 260, 6, 263, 264, 265, 266, 95, 268, 269,
+ 269, 270, 271, 271, 272, 273, 273, 274, 275, 275, 276, 277, 277, 278, 279,
+ 279, 280, 281, 281, 282, 283, 283, 284, 285, 286, 287, 287, 288, 289, 289,
+ 290, 291, 291, 292, 293, 293, 294, 295, 295, 296, 297, 297, 298, 299, 299,
+ 300, 301, 301, 302, 303, 304, 305, 305, 306, 307, 307, 308, 309, 309, 227,
+ 311, 13494, 2, 314, 315, 316, 313, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 332, 333, 334, 335, 336, 336, 337,
+ 338, 338, 50, 340, 341, 341, 342, 343, 343, 344, 345, 345, 346, 347, 347,
+ 315, 315, 349, 350, 350, 341, 352, 353, 354, 355, 356, 357, 358, 359, 359,
+ 360, 351, 362, 362, 361, 361, 363, 348, 339, 310, 365, 365, 364, 366, 367,
+ 364, 366, 367, 57, 369, 370, 370, 371, 372, 372, 373, 374, 374, 375, 376,
+ 376, 377, 378, 378, 379, 380, 381, 382, 383, 384, 384, 385, 386, 386, 39,
+ 388, 389, 390, 391, 68, 393, 394, 395, 396, 397, 392, 398, 399, 67, 66, 65,
+ 64, 63, 62, 61, 60, 59, 58, 410, 409, 408, 407, 406, 405, 404, 403, 402,
+ 401, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 400, 426, 427, 428, 429, 430, 431, 431, 432, 433, 433, 434, 435, 435,
+ 54, 437, 438, 438, 439, 440, 440, 441, 442, 442, 443, 444, 444, 445, 446,
+ 446, 78, 448, 449, 449, 252, 252, 257, 257, 452, 451, 450, 453, 454, 455,
+ 453, 454, 455, 92, 457, 458, 459, 460, 426, 427, 70, 462, 463, 464, 465,
+ 466, 467, 91, 89, 470, 469, 471, 472, 88, 87, 86, 476, 475, 474, 477, 478,
+ 479, 85, 84, 482, 481, 483, 484, 485, 480, 473, 486, 487, 488, 315, 490,
+ 491, 83, 82, 81, 495, 494, 493, 496, 497, 498, 499, 232, 500, 80, 502, 503,
+ 504, 505, 69, 507, 508, 509, 510, 44, 512, 513, 79, 515, 252, 449, 253, 254,
+ 516, 255, 256, 257, 258, 77, 76, 519, 518, 520, 521, 75, 523, 524, 74, 526,
+ 527, 528, 525, 522, 517, 514, 529, 530, 531, 532, 261, 533, 73, 72, 536,
+ 535, 537, 264, 538, 71, 540, 541, 20, 543, 544, 545, 542, 539, 546, 547,
+ 548, 549, 534, 511, 506, 501, 492, 489, 468, 461, 456, 551, 552, 553, 554,
+ 555, 558, 550, 556, 557, 559, 285, 285, 561, 562, 562, 563, 564, 564, 565,
+ 566, 566, 567, 568, 568, 569, 570, 570, 571, 572, 572, 573, 574, 574, 575,
+ 576, 576, 577, 578, 578, 579, 580, 580, 362, 362, 582, 581, 583, 583, 584,
+ 584, 380, 586, 587, 587, 588, 589, 589, 55, 591, 592, 592, 5, 594, 595, 595,
+ 596, 597, 597, 598, 599, 599, 600, 601, 601, 602, 603, 603, 604, 605, 605,
+ 606, 607, 607, 608, 609, 609, 610, 611, 611, 612, 613, 613, 614, 615, 615,
+ 616, 617, 617, 618, 619, 619, 36, 621, 622, 622, 623, 620, 593, 624, 624,
+ 626, 626, 625, 625, 627, 628, 628, 629, 630, 630, 93, 632, 633, 634, 635,
+ 636, 637, 638, 544, 544, 639, 640, 641, 641, 224, 643, 644, 644, 645, 646,
+ 646, 647, 648, 648, 649, 650, 650, 651, 652, 652, 653, 654, 654, 655, 656,
+ 656, 657, 658, 658, 659, 660, 660, 661, 662, 662, 663, 664, 664, 665, 666,
+ 666, 667, 668, 668, 669, 670, 670, 671, 672, 672, 38, 674, 675, 676, 677,
+ 677, 678, 679, 679, 680, 681, 681, 682, 683, 683, 684, 685, 685, 686, 673,
+ 687, 687, 688, 688, 267, 690, 691, 692, 692, 56, 694, 695, 696, 697, 465,
+ 698, 699, 90, 701, 471, 702, 472, 703, 486, 487, 704, 500, 239, 240, 242,
+ 252, 253, 254, 255, 257, 258, 449, 516, 708, 707, 529, 530, 531, 709, 710,
+ 537, 538, 712, 547, 713, 94, 715, 716, 716, 717, 718, 718, 719, 720, 720,
+ 721, 714, 711, 706, 705, 700, 553, 558, 722, 722, 726, 727, 723, 724, 725,
+ 728, 693, 729, 730, 729, 730, 438, 732, 733, 734, 735, 736, 737, 738, 739,
+ 740, 741, 742, 743, 743, 744, 745, 745, 746, 747, 52, 45, 750, 749, 751,
+ 752, 753, 754, 755, 756, 757, 758, 759, 760, 43, 42, 41, 40, 365, 365, 225,
+ 767, 768, 768, 769, 770, 770, 771, 772, 772, 773, 774, 774, 775, 776, 776,
+ 777, 778, 778, 779, 780, 780, 49, 782, 783, 783, 784, 785, 785, 786, 787,
+ 787, 788, 789, 789, 48, 791, 792, 792, 793, 794, 794, 795, 796, 796, 797,
+ 798, 798, 799, 800, 800, 801, 790, 781, 766, 765, 764, 763, 762, 513, 806,
+ 807, 808, 809, 802, 803, 804, 805, 802, 803, 804, 805, 810, 811, 811, 812,
+ 813, 813, 814, 815, 815, 816, 817, 817, 818, 761, 748, 819, 819, 820, 821,
+ 822, 823, 823, 824, 731, 825, 826, 825, 826, 47, 828, 829, 829, 830, 831,
+ 832, 833, 833, 46, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845,
+ 846, 847, 848, 849, 850, 851, 852, 852, 853, 834, 854, 855, 854, 855, 508,
+ 508, 857, 858, 858, 859, 860, 860, 861, 862, 862, 863, 864, 864, 865, 866,
+ 866, 867, 868, 869, 870, 243, 243, 872, 873, 873, 874, 875, 875, 876, 877,
+ 877, 878, 879, 879, 880, 881, 881, 882, 883, 883, 884, 885, 885, 886, 887,
+ 887, 888, 889, 889, 890, 891, 891, 892, 893, 893, 894, 895, 256, 256, 897,
+ 898, 898, 899, 900, 900, 901, 902, 902, 903, 904, 904, 905, 906, 906, 907,
+ 908, 908, 909, 910, 910, 911, 912, 912, 913, 914, 914, 915, 916, 916, 917,
+ 918, 233, 920, 921, 922, 922, 923, 924, 924, 925, 926, 926, 927, 928, 928,
+ 929, 930, 930, 931, 932, 932, 933, 934, 934, 935, 919, 896, 936, 936, 937,
+ 938, 241, 940, 941, 942, 943, 944, 939, 871, 945, 945, 946, 947, 948, 949,
+ 949, 37, 951, 952, 952, 953, 954, 954, 955, 956, 956, 957, 958, 958, 959,
+ 960, 960, 961, 962, 962, 963, 964, 964, 622, 966, 967, 968, 969, 970, 971,
+ 971, 972, 973, 973, 35, 975, 976, 976, 977, 978, 978, 979, 980, 980, 981,
+ 982, 982, 983, 984, 984, 34, 986, 987, 987, 33, 989, 990, 990, 991, 988,
+ 992, 992, 993, 993, 994, 995, 32, 997, 998, 998, 31, 1000, 1001, 1001, 1002,
+ 999, 1003, 1003, 1004, 1004, 1005, 1006, 30, 1008, 1007, 996, 1009, 1010,
+ 1011, 1012, 1013, 1013, 1014, 985, 1015, 1016, 1015, 1016, 29, 28, 27, 26,
+ 25, 24, 23, 22, 21, 1026, 1025, 1024, 1023, 1022, 1021, 1020, 1019, 1018,
+ 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
+ 53, 51, 1042, 1041, 1043, 1044, 1045, 1046, 1046, 1047, 1048, 1048, 1049,
+ 1050, 1050, 1051, 1052, 1052, 1053, 1054, 1054, 1055, 1056, 1057, 1040, 1059,
+ 1058, 1060, 1061, 1061, 1062, 1063, 1063, 1064, 1065, 1065, 1066, 1067, 1067,
+ 1068, 1069, 1069, 1070, 1071, 1071, 1072, 1017, 974, 965, 950, 856, 827,
+ 689, 642, 631, 590, 585, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080,
+ 1081, 1082, 1083, 1084, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
+ 1082, 1083, 1084, 3, 1086, 1087, 1087, 1088, 1089, 1089, 1090, 1091, 1091,
+ 1092, 1093, 1093, 1094, 1095, 1095, 1096, 1097, 1097, 1098, 1085, 560, 447,
+ 436, 1099, 1100, 1101, 1102, 1103, 1099, 1100, 1101, 1102, 1103, 498, 541,
+ 1105, 1106, 1106, 503, 503, 458, 458, 503, 503, 702, 702, 478, 478, 471,
+ 471, 483, 483, 477, 477, 497, 497, 496, 496, 479, 479, 520, 520, 458, 458,
+ 702, 702, 521, 521, 1117, 1118, 1118, 1119, 1120, 1120, 1121, 1122, 1122,
+ 471, 471, 537, 537, 458, 458, 458, 458, 521, 521, 1128, 1127, 1126, 1125,
+ 1124, 1123, 1116, 1115, 1114, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1129,
+ 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142,
+ 1143, 1144, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
+ 1140, 1141, 1142, 1143, 1144, 1145, 1146, 524, 524, 1148, 1149, 1149, 1150,
+ 1151, 1151, 1152, 1153, 1153, 1154, 1155, 1155, 1156, 1157, 1157, 1158, 1147,
+ 1159, 1160, 1159, 1160, 419, 419, 1162, 1163, 1163, 1164, 1165, 1165, 1166,
+ 1167, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 418,
+ 418, 1179, 1180, 1180, 1181, 1182, 1182, 1183, 1184, 1184, 1185, 1186, 1187,
+ 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1178, 1196, 1196, 1197, 1197,
+ 415, 415, 1199, 1200, 1200, 1201, 1202, 1202, 1203, 1204, 1204, 1205, 1206,
+ 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1216, 417, 417,
+ 1218, 1219, 1219, 1220, 1221, 1221, 1222, 1223, 1223, 1224, 1225, 1226, 1227,
+ 1228, 1229, 1230, 1231, 1232, 1233, 413, 413, 1235, 1236, 1236, 1237, 1238,
+ 1238, 1239, 1240, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249,
+ 1250, 1251, 1234, 1253, 1253, 1252, 1252, 414, 414, 1255, 1256, 1256, 1257,
+ 1258, 1258, 1259, 1260, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
+ 1269, 1270, 1271, 1272, 1272, 412, 412, 1274, 1275, 1275, 1276, 1277, 1277,
+ 1278, 1279, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289,
+ 1290, 1291, 1291, 1292, 1293, 1293, 1294, 1295, 1295, 1296, 1297, 1297, 1298,
+ 1299, 1299, 1300, 1301, 1301, 1302, 1303, 1303, 1304, 1305, 1305, 1306, 1307,
+ 1307, 1308, 1309, 1309, 1310, 1311, 1311, 411, 411, 1313, 1314, 1314, 1315,
+ 1316, 1316, 1317, 1318, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326,
+ 1327, 1328, 416, 416, 1330, 1331, 1331, 1332, 1333, 1333, 1334, 1335, 1335,
+ 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1329, 1312,
+ 1347, 1348, 1349, 1347, 1348, 1349, 484, 484, 1351, 1352, 1352, 1353, 1354,
+ 1354, 1355, 1356, 1356, 1357, 1358, 1359, 1360, 1360, 394, 394, 1362, 1363,
+ 1363, 1364, 1365, 1365, 1366, 1367, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
+ 1374, 1375, 1375, 1376, 1377, 1377, 1378, 1379, 1379, 1380, 1381, 1381, 1196,
+ 1196, 1253, 1253, 420, 420, 1385, 1386, 1386, 1387, 1388, 1388, 1389, 1390,
+ 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1400, 1401,
+ 1384, 1383, 1382, 1361, 1350, 1273, 1254, 1217, 1198, 1161, 1402, 1403, 1404,
+ 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1402, 1403, 1404, 1405, 1406,
+ 1407, 1408, 1409, 1410, 1411, 1412, 1413, 92, 1414, 1415, 1416, 1416, 1417,
+ 1418, 1418, 1419, 1420, 1420, 1421, 1422, 1422, 341, 783, 1424, 1425, 1426,
+ 1427, 1428, 1429, 1430, 1431, 1431, 1432, 1433, 1433, 783, 1435, 1436, 1437,
+ 1438, 1439, 1440, 1441, 1442, 1442, 1443, 1444, 1444, 633, 633, 595, 595,
+ 622, 1448, 1449, 1449, 1450, 1447, 1446, 1451, 626, 1452, 1453, 1451, 626,
+ 1452, 1453, 1454, 624, 624, 1455, 1456, 1457, 1457, 611, 1459, 1460, 1460,
+ 1461, 1462, 1462, 1463, 1464, 1464, 1465, 1466, 1467, 1468, 1468, 1469, 1470,
+ 1470, 1471, 1472, 1472, 1473, 1474, 1474, 1475, 1476, 1476, 1477, 1478, 1478,
+ 1479, 1480, 1481, 1482, 1482, 1483, 1484, 1484, 1485, 1486, 1486, 1487, 1488,
+ 1488, 1489, 1490, 1490, 1491, 1492, 1492, 1493, 1494, 1495, 1496, 1496, 1497,
+ 1498, 1498, 1499, 1500, 1500, 1501, 1502, 1502, 1503, 1504, 1505, 1506, 1506,
+ 1507, 1508, 1508, 1509, 1510, 1510, 1511, 1512, 1512, 1513, 1514, 1515, 1516,
+ 1516, 1517, 1518, 1518, 1519, 1520, 1520, 1521, 1522, 1522, 1523, 1524, 1524,
+ 1525, 1526, 1526, 1527, 1458, 1445, 1434, 1423, 1528, 1529, 1530, 1531, 1532,
+ 1528, 1529, 1530, 1531, 1532, 735, 1534, 1535, 1536, 1537, 1538, 1539, 1540,
+ 1541, 1542, 544, 544, 1543, 639, 49, 783, 1545, 1546, 1546, 1547, 1548, 1548,
+ 1549, 1550, 1550, 1551, 1544, 1552, 1553, 1552, 1553, 687, 1555, 1556, 800,
+ 1556, 800, 976, 987, 990, 998, 1001, 1559, 1558, 49, 752, 1009, 1560, 1561,
+ 48, 544, 751, 4, 1564, 1563, 1562, 595, 806, 952, 1565, 1566, 1567, 243,
+ 269, 675, 1043, 1044, 230, 241, 256, 716, 458, 633, 471, 472, 477, 478, 479,
+ 484, 702, 239, 240, 242, 257, 258, 483, 496, 497, 498, 503, 252, 254, 255,
+ 449, 516, 520, 521, 524, 527, 538, 264, 463, 537, 541, 253, 389, 508, 829,
+ 394, 412, 413, 414, 415, 416, 417, 418, 419, 420, 1577, 1576, 1575, 1574,
+ 1573, 1572, 1571, 1570, 1569, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585,
+ 1586, 370, 411, 695, 1588, 1589, 622, 1027, 1028, 1029, 1030, 1031, 1032,
+ 1033, 1034, 1035, 1591, 1592, 1593, 1590, 1587, 1594, 1595, 1596, 2, 592,
+ 836, 43, 438, 1599, 1598, 1597, 1568, 341, 513, 807, 808, 1087, 1600, 1601,
+ 1602, 1603, 1604, 1605, 1606, 1607, 1607, 1608, 1609, 1609, 223, 184, 185,
+ 1613, 1612, 1614, 1615, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618, 1617, 1627, 1628, 1629,
+ 1630, 1631, 1632, 1633, 1634, 1635, 1636, 172, 173, 1639, 1638, 463, 1640,
+ 1641, 167, 168, 169, 170, 171, 1647, 1646, 1645, 1644, 1643, 695, 1648, 1649,
+ 1650, 1651, 1652, 675, 166, 1655, 341, 1656, 164, 165, 1659, 1658, 1660,
+ 1661, 1662, 1657, 1654, 1653, 1642, 1637, 1616, 1663, 1664, 1665, 1666, 1667,
+ 1668, 1669, 161, 162, 163, 1673, 1672, 1671, 1674, 1675, 1676, 158, 159,
+ 160, 1680, 1679, 1678, 1681, 1682, 1683, 154, 155, 156, 157, 1688, 1687,
+ 1686, 1685, 1689, 1690, 1691, 1692, 148, 149, 150, 151, 152, 153, 1699, 1698,
+ 1697, 1696, 1695, 1694, 1700, 1701, 1702, 1703, 1704, 1705, 146, 147, 1708,
+ 1707, 1709, 1710, 1711, 1706, 1693, 1684, 1677, 422, 1712, 1713, 1714, 1715,
+ 1716, 987, 990, 1009, 998, 1001, 139, 140, 141, 142, 143, 144, 145, 1726,
+ 1725, 1724, 1723, 1722, 1721, 1720, 1043, 1044, 1727, 1728, 1729, 1730, 1731,
+ 1732, 1733, 106, 1735, 1736, 138, 1738, 1737, 269, 1739, 1740, 134, 135,
+ 136, 137, 1745, 1744, 1743, 1742, 1746, 1747, 1748, 1749, 1750, 1741, 1734,
+ 1719, 1718, 1751, 1752, 1753, 1754, 1755, 104, 105, 1758, 1757, 1759, 1760,
+ 1761, 1762, 976, 1764, 1765, 133, 1767, 836, 1768, 132, 1770, 370, 1771,
+ 129, 130, 131, 1775, 1774, 1773, 544, 1776, 633, 1777, 1778, 127, 128, 1781,
+ 1780, 1782, 1783, 1784, 1779, 1772, 1769, 1766, 1763, 1785, 1786, 1787, 1788,
+ 1789, 1790, 103, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1791, 1756, 1717,
+ 1670, 1799, 1800, 1801, 1802, 1803, 102, 1805, 1806, 1807, 1808, 222, 1810,
+ 1809, 1811, 1812, 101, 1814, 1815, 1816, 1817, 1818, 477, 478, 479, 1819,
+ 1820, 1813, 486, 704, 1821, 1822, 220, 221, 1825, 1824, 1826, 1827, 595,
+ 1829, 1830, 1831, 1832, 1833, 1828, 458, 491, 1834, 1835, 126, 1837, 1838,
+ 1839, 230, 1840, 125, 1842, 1843, 122, 123, 124, 1847, 1846, 1845, 1848,
+ 1849, 1850, 120, 121, 1853, 1852, 1854, 1855, 119, 1857, 1858, 1859, 1856,
+ 1851, 1844, 1860, 1861, 1862, 1863, 1864, 1841, 500, 1865, 1866, 118, 1868,
+ 1869, 117, 1871, 1872, 112, 113, 114, 115, 116, 1878, 1877, 1876, 1875, 1874,
+ 1879, 1880, 1881, 1882, 1883, 1884, 1873, 1870, 503, 1885, 1886, 1887, 111,
+ 1889, 1890, 1891, 1892, 1032, 1033, 1034, 1035, 1027, 1031, 1895, 1894, 1896,
+ 1897, 438, 1899, 1900, 100, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1901,
+ 1898, 1893, 1888, 1909, 1910, 1911, 1912, 1913, 99, 1915, 1916, 1917, 1918,
+ 1919, 1920, 98, 1922, 1923, 97, 1925, 1926, 96, 1928, 1929, 228, 1931, 1932,
+ 1933, 1930, 1927, 1924, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1921, 1941,
+ 1942, 219, 1944, 1945, 218, 1947, 1948, 1949, 1946, 510, 1950, 1951, 513,
+ 783, 214, 215, 216, 217, 1957, 1956, 1955, 1954, 716, 1958, 1959, 1960, 1961,
+ 239, 240, 241, 242, 243, 389, 110, 1964, 12, 1965, 1966, 252, 253, 254, 255,
+ 256, 258, 449, 516, 1967, 213, 1969, 520, 521, 622, 829, 1970, 212, 1972,
+ 527, 1565, 1973, 1974, 1971, 1968, 1963, 1962, 1953, 530, 1975, 1976, 1977,
+ 1978, 1979, 1980, 109, 1982, 73, 1983, 108, 1985, 72, 1986, 107, 1988, 1989,
+ 1990, 1987, 1984, 264, 1991, 1992, 1993, 541, 792, 807, 808, 809, 1087, 208,
+ 209, 210, 211, 1999, 1998, 1997, 1996, 394, 751, 752, 806, 2000, 2001, 2002,
+ 2003, 199, 200, 201, 202, 203, 204, 205, 206, 207, 2013, 2012, 2011, 2010,
+ 2009, 2008, 2007, 2006, 2005, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
+ 2022, 194, 1028, 1029, 1030, 195, 196, 197, 198, 2028, 2027, 2026, 2025,
+ 2024, 952, 2029, 2030, 2031, 2032, 2033, 188, 189, 190, 191, 192, 193, 2040,
+ 2039, 2038, 2037, 2036, 2035, 2041, 2042, 2043, 2044, 2045, 2046, 186, 187,
+ 2049, 2048, 2050, 2051, 592, 2053, 2052, 2047, 2034, 2023, 2004, 1995, 1994,
+ 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 1981, 1952, 1943, 1914,
+ 1867, 1836, 1823, 1804, 1611, 722, 722, 2063, 2064, 2065, 2066, 2067, 2068,
+ 2069, 2070, 2071, 2072, 547, 548, 223, 92, 2076, 2075, 2077, 2078, 222, 89,
+ 90, 91, 86, 87, 88, 84, 85, 2083, 2082, 2081, 2080, 2084, 2085, 2086, 2087,
+ 220, 221, 2, 2090, 2089, 2091, 2092, 81, 82, 83, 19, 2095, 2094, 2096, 2097,
+ 80, 2099, 2100, 219, 218, 69, 2104, 2103, 2102, 2105, 2106, 2107, 44, 49,
+ 94, 214, 215, 216, 217, 14, 15, 16, 17, 18, 39, 7, 8, 9, 10, 11, 12, 13,
+ 78, 79, 36, 47, 76, 77, 213, 75, 4, 74, 212, 2115, 2114, 2113, 2112, 2111,
+ 2110, 2109, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 6, 72, 73, 3, 41, 42,
+ 43, 48, 71, 40, 45, 52, 68, 208, 209, 210, 211, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 37, 194, 195, 196, 197, 198, 188, 189, 190, 191, 192,
+ 193, 186, 187, 55, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124, 2132,
+ 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2123, 2108, 2101, 2098, 2093,
+ 2088, 2079, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 184, 185, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 70, 172, 173, 56, 167, 168,
+ 169, 170, 171, 38, 50, 166, 164, 165, 2156, 2155, 2154, 2153, 2152, 2151,
+ 2150, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 161, 162, 163, 158, 159,
+ 160, 154, 155, 156, 157, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 148, 149,
+ 150, 151, 152, 153, 146, 147, 2170, 2169, 2168, 2167, 2166, 2165, 2171, 2172,
+ 2173, 2174, 2175, 2176, 30, 33, 34, 31, 32, 51, 53, 139, 140, 141, 142, 143,
+ 144, 145, 95, 138, 134, 135, 136, 137, 2182, 2181, 2180, 2179, 2178, 2183,
+ 2184, 2185, 2186, 2187, 46, 133, 57, 132, 20, 93, 129, 130, 131, 127, 128,
+ 2192, 2191, 2190, 2189, 2193, 2194, 2195, 2196, 2197, 2188, 2177, 2164, 2198,
+ 2199, 2200, 2201, 126, 2203, 2204, 125, 122, 123, 124, 120, 121, 119, 2209,
+ 2208, 2207, 2206, 2210, 2211, 2212, 2213, 2214, 2205, 2215, 2216, 118, 117,
+ 112, 113, 114, 115, 116, 2220, 2219, 2218, 2221, 2222, 2223, 111, 2225, 2226,
+ 26, 27, 28, 29, 21, 25, 2229, 2228, 2230, 2231, 54, 2233, 2234, 2235, 2232,
+ 2227, 2224, 2236, 2237, 2238, 2239, 110, 2241, 2242, 2243, 2244, 109, 108,
+ 107, 2248, 2247, 2246, 2249, 2250, 2251, 22, 23, 24, 2253, 2254, 2255, 2252,
+ 2256, 2257, 2258, 2245, 2240, 2217, 2202, 2149, 2259, 2260, 2261, 2262, 2263,
+ 2264, 106, 2266, 2267, 2268, 2269, 104, 105, 2271, 2272, 35, 2274, 2275,
+ 2276, 2273, 2277, 2278, 103, 2280, 2281, 2282, 2283, 2284, 2279, 2270, 2285,
+ 2286, 2287, 102, 2289, 2290, 2291, 2292, 101, 2294, 2295, 2296, 2297, 2298,
+ 2293, 2299, 2300, 5, 2302, 2303, 2304, 2305, 2306, 2307, 100, 2309, 2310,
+ 2311, 2312, 2313, 2314, 99, 2316, 2317, 2318, 2319, 98, 97, 96, 1, 2324,
+ 2323, 2322, 2321, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2320, 2332, 2333,
+ 2334, 2315, 2308, 2301, 2288, 2265, 2335, 2336, 2337, 2338, 2339, 2340, 2341,
+ 2342, 2342, 2343, 2344, 2344, 2345, 2346, 2346, 2347, 2348, 2348, 2349, 2074,
+ 2073, 2350, 2350, 2351, 551, 552, 553, 554, 555, 726, 727, 558, 2352, 2353,
+ 2354, 2354, 976, 2356, 2357, 2358, 2359, 2359, 2360, 2361, 2361, 2362, 2363,
+ 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 1044, 2375,
+ 2376, 2377, 2378, 2378, 2379, 2380, 2380, 2381, 2382, 2382, 2383, 2384, 2384,
+ 2385, 2386, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396,
+ 2397, 2398, 2398, 2399, 2400, 2400, 2401, 2402, 2402, 2403, 2404, 2404, 2405,
+ 2406, 2406, 2407, 2408, 2408, 2409, 2410, 2410, 2411, 44, 751, 752, 2412,
+ 1043, 2414, 2415, 2416, 2417, 2417, 2418, 2419, 2419, 2420, 2421, 2421, 2422,
+ 2423, 2423, 2424, 2425, 2425, 2426, 2427, 2428, 2429, 2429, 2430, 2431, 2431,
+ 2432, 2433, 2433, 2434, 2435, 2435, 2436, 2437, 2437, 2438, 2439, 2439, 2440,
+ 2441, 2441, 2442, 43, 2443, 2444, 2413, 341, 783, 792, 806, 807, 808, 1087,
+ 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 513, 808, 809,
+ 807, 341, 783, 792, 806, 836, 1087, 2460, 2459, 2458, 2457, 2456, 2462, 2461,
+ 2463, 2464, 2465, 2466, 315, 1900, 2467, 2468, 2469, 2470, 2471, 2471, 2472,
+ 2455, 2374, 2473, 2473, 2474, 2475, 315, 315, 2477, 2478, 2478, 2479, 2480,
+ 2481, 2482, 2483, 2484, 312, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493,
+ 2494, 2495, 2495, 2496, 2497, 2497, 2498, 2499, 2499, 2500, 2501, 2502, 2503,
+ 2504, 2505, 513, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 44, 751, 2514,
+ 809, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 43, 2523, 808, 2525, 2526,
+ 2527, 2528, 2529, 2530, 2531, 42, 2532, 807, 2534, 2535, 2536, 2537, 2538,
+ 2539, 2540, 41, 2541, 1087, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 3,
+ 2550, 341, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 50, 2559, 783, 2561,
+ 2562, 2563, 2564, 2565, 2566, 2567, 49, 2568, 2462, 2570, 2571, 2572, 2573,
+ 2574, 48, 2575, 806, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 40, 2584,
+ 2585, 2576, 2569, 2560, 2551, 2542, 2533, 2524, 2515, 2586, 2587, 2588, 2589,
+ 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602,
+ 2603, 2506, 2604, 2605, 2606, 2485, 2476, 2607, 2608, 2609, 2610, 2611, 2611,
+ 2612, 2355, 1610, 2613, 2614, 2615, 2613, 2614, 2615, 1565, 2617, 2618, 2619,
+ 2620, 2621, 2622, 2623, 2624, 2624, 2625, 2626, 2627, 2628, 2628, 2629, 2630,
+ 2630, 831, 2632, 2633, 836, 836, 2635, 2636, 2636, 2637, 2638, 2638, 2639,
+ 2634, 2640, 2641, 2640, 2641, 836, 2643, 2644, 2645, 2646, 2647, 2648, 2649,
+ 2650, 836, 836, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660, 2661,
+ 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671, 2671, 2672, 2651,
+ 2674, 2673, 2674, 2675, 2642, 2676, 2677, 2676, 2677, 751, 2679, 513, 806,
+ 807, 808, 809, 2680, 2681, 2682, 2682, 2683, 2684, 2684, 2685, 2686, 2686,
+ 2687, 2688, 2688, 806, 807, 808, 809, 513, 546, 952, 952, 2691, 2692, 2692,
+ 2693, 2694, 2694, 2695, 2696, 2696, 2697, 2698, 2698, 2699, 2690, 2701, 2700,
+ 2702, 2703, 2703, 389, 389, 2705, 2706, 2706, 2707, 2708, 2708, 2709, 2710,
+ 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722,
+ 2722, 2723, 2724, 2724, 2725, 2726, 2726, 2727, 2728, 2728, 2729, 2730, 2730,
+ 2731, 2732, 2732, 2733, 2734, 2734, 2735, 2736, 2736, 2737, 2738, 2738, 2739,
+ 2740, 2740, 2741, 2742, 2742, 2743, 2744, 2744, 2745, 2746, 2747, 2748, 2748,
+ 683, 683, 675, 958, 2751, 2752, 2752, 2753, 2754, 2754, 2755, 2756, 2756,
+ 2757, 2758, 2758, 971, 2760, 2761, 2761, 2762, 2763, 2763, 976, 2357, 2765,
+ 2766, 2766, 583, 583, 2768, 2769, 2769, 2770, 2, 2771, 992, 993, 992, 993,
+ 995, 2773, 2774, 1003, 1004, 1003, 1004, 1006, 2776, 2777, 2778, 2775, 1009,
+ 2779, 2780, 2781, 1009, 2779, 2780, 2782, 2783, 2784, 2784, 2785, 2772, 2767,
+ 2786, 2787, 2788, 2786, 2787, 2788, 2701, 1059, 2790, 2791, 2792, 2793, 2793,
+ 2794, 2795, 2795, 2796, 2797, 2797, 2798, 2799, 2799, 2800, 2801, 2801, 2802,
+ 2803, 2803, 2804, 2789, 2764, 2759, 2750, 2749, 2704, 2689, 2678, 2631, 2616,
+ 1557, 1554, 1533, 1104, 387, 368, 262, 229, 2823, 2824, 2825, 2826, 2827,
+ 2828, 234, 235, 236, 237, 238, 2830, 2831, 245, 246, 247, 248, 249, 250,
+ 251, 2833, 2834, 2835, 2832, 2837, 2836, 2838, 2839, 263, 2841, 2842, 2843,
+ 2844, 2845, 2846, 268, 268, 2848, 2849, 2850, 2851, 2851, 2852, 2853, 2854,
+ 2855, 2855, 2856, 2857, 2858, 2859, 2859, 2860, 2861, 2862, 2863, 2863, 2864,
+ 2865, 2866, 2867, 2867, 2868, 2869, 2870, 2871, 2871, 2872, 2873, 2874, 2875,
+ 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2883, 2884, 2885, 2886,
+ 2887, 2887, 2888, 2889, 2890, 2891, 2891, 2892, 2893, 2894, 2895, 2895, 2896,
+ 2897, 2898, 2899, 2899, 2900, 2901, 2902, 2903, 2903, 2904, 2905, 2906, 2907,
+ 2907, 2908, 2909, 2910, 2911, 2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918,
+ 2919, 2919, 2920, 2921, 2922, 2923, 2923, 2924, 2925, 2926, 2927, 2927, 2928,
+ 2929, 13491, 2931, 2932, 314, 2934, 2935, 2936, 2933, 2937, 2938, 2939, 2940,
+ 2941, 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953,
+ 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966,
+ 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2974, 2975, 2976, 2977,
+ 2978, 2978, 2979, 2980, 340, 340, 2982, 2983, 2984, 2985, 2985, 2986, 2987,
+ 2988, 2989, 2989, 2990, 2991, 2992, 2993, 2993, 2994, 2995, 314, 314, 2997,
+ 2998, 2999, 3000, 3000, 3001, 3002, 340, 3004, 3005, 3006, 3007, 3008, 3009,
+ 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3019, 3020, 3021,
+ 3022, 3003, 3024, 3024, 3023, 3023, 3025, 3026, 3027, 2996, 2981, 2930, 3029,
+ 3029, 3028, 3030, 3031, 3028, 3030, 3031, 3032, 3033, 369, 369, 3035, 3036,
+ 3037, 3038, 3038, 3039, 3040, 3041, 3042, 3042, 3043, 3044, 3045, 3046, 3046,
+ 3047, 3048, 3049, 3050, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058,
+ 3059, 3060, 3061, 3062, 3062, 3063, 3064, 3065, 3066, 3066, 3067, 3068, 388,
+ 3070, 3071, 3072, 3073, 3074, 3075, 393, 3077, 3078, 3079, 3080, 3081, 3082,
+ 3083, 3076, 3084, 3085, 3086, 3087, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 3089, 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099,
+ 3088, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3109, 3110,
+ 3111, 3112, 3113, 3113, 3114, 3115, 3116, 3117, 3117, 3118, 3119, 437, 437,
+ 3121, 3122, 3123, 3124, 3124, 3125, 3126, 3127, 3128, 3128, 3129, 3130, 3131,
+ 3132, 3132, 3133, 3134, 3135, 3136, 3136, 3137, 3138, 448, 448, 3140, 3141,
+ 251, 251, 3143, 3144, 246, 246, 3146, 3147, 3148, 3145, 3142, 3149, 3150,
+ 3151, 3149, 3150, 3151, 3152, 3153, 457, 3155, 3156, 3157, 3158, 3100, 3101,
+ 3159, 3160, 462, 3162, 3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170, 3171,
+ 469, 470, 3173, 3174, 474, 475, 476, 3176, 3177, 481, 482, 3179, 3180, 3181,
+ 3178, 3175, 3182, 3183, 3184, 3185, 3186, 314, 3188, 3189, 3190, 3191, 3192,
+ 3193, 493, 494, 495, 3195, 3196, 3197, 2826, 3198, 3199, 3200, 502, 3202,
+ 3203, 3204, 3205, 3206, 3207, 507, 3209, 3210, 3211, 3212, 3213, 3214, 512,
+ 3216, 3217, 245, 246, 247, 248, 249, 250, 251, 448, 515, 3219, 3220, 518,
+ 519, 3222, 3223, 523, 3225, 3226, 526, 3228, 3229, 3230, 3227, 3224, 3221,
+ 3218, 3231, 3232, 3233, 3234, 2837, 3235, 3236, 3237, 263, 535, 536, 3239,
+ 3240, 540, 3242, 3243, 543, 3245, 3246, 3247, 3244, 3241, 3248, 3249, 3250,
+ 3251, 3252, 3253, 3238, 3215, 3208, 3201, 3194, 3187, 3172, 3161, 3154, 3255,
+ 3256, 3257, 3258, 3259, 3262, 3254, 3260, 3261, 3263, 3264, 3265, 2879, 2879,
+ 3267, 3268, 3269, 3270, 3270, 3271, 3272, 3273, 3274, 3274, 3275, 3276, 3277,
+ 3278, 3278, 3279, 3280, 3281, 3282, 3282, 3283, 3284, 3285, 3286, 3286, 3287,
+ 3288, 3289, 3290, 3290, 3291, 3292, 3293, 3294, 3294, 3295, 3296, 3297, 3298,
+ 3298, 3299, 3300, 3301, 3302, 3302, 3303, 3304, 3305, 3306, 3306, 3307, 3308,
+ 3024, 3024, 3310, 3311, 3312, 3309, 3313, 3313, 3314, 3314, 3315, 3316, 3054,
+ 3318, 3319, 3320, 3321, 3321, 3322, 3323, 3324, 3325, 3325, 3326, 3327, 591,
+ 591, 3329, 3330, 594, 594, 3332, 3333, 3334, 3335, 3335, 3336, 3337, 3338,
+ 3339, 3339, 3340, 3341, 3342, 3343, 3343, 3344, 3345, 3346, 3347, 3347, 3348,
+ 3349, 3350, 3351, 3351, 3352, 3353, 3354, 3355, 3355, 3356, 3357, 3358, 3359,
+ 3359, 3360, 3361, 3362, 3363, 3363, 3364, 3365, 3366, 3367, 3367, 3368, 3369,
+ 3370, 3371, 3371, 3372, 3373, 3374, 3375, 3375, 3376, 3377, 3378, 3379, 3379,
+ 3380, 3381, 621, 621, 3383, 3384, 3385, 3382, 3331, 3386, 3386, 3388, 3388,
+ 3387, 3387, 3389, 3390, 3391, 3392, 3392, 3393, 3394, 3395, 3396, 3396, 3397,
+ 3398, 632, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410,
+ 543, 543, 3411, 3412, 3413, 3414, 3415, 3415, 3416, 3417, 643, 643, 3419,
+ 3420, 3421, 3422, 3422, 3423, 3424, 3425, 3426, 3426, 3427, 3428, 3429, 3430,
+ 3430, 3431, 3432, 3433, 3434, 3434, 3435, 3436, 3437, 3438, 3438, 3439, 3440,
+ 3441, 3442, 3442, 3443, 3444, 3445, 3446, 3446, 3447, 3448, 3449, 3450, 3450,
+ 3451, 3452, 3453, 3454, 3454, 3455, 3456, 3457, 3458, 3458, 3459, 3460, 3461,
+ 3462, 3462, 3463, 3464, 3465, 3466, 3466, 3467, 3468, 3469, 3470, 3470, 3471,
+ 3472, 3473, 3474, 3474, 3475, 3476, 674, 3478, 3479, 3480, 3481, 3481, 3482,
+ 3483, 3484, 3485, 3485, 3486, 3487, 3488, 3489, 3489, 3490, 3491, 3492, 3493,
+ 3493, 3494, 3495, 3496, 3497, 3497, 3498, 3499, 3500, 3477, 3501, 3501, 3502,
+ 3502, 3503, 3504, 2847, 3506, 3507, 3508, 3509, 3510, 3510, 3511, 3512, 694,
+ 3514, 3515, 3516, 3517, 3165, 3518, 3519, 3520, 3521, 3522, 3523, 469, 470,
+ 701, 3525, 3526, 3527, 3182, 3183, 3528, 3529, 3530, 3198, 3532, 3533, 235,
+ 237, 238, 3535, 3536, 245, 246, 248, 249, 250, 251, 448, 515, 3538, 3539,
+ 3540, 3537, 3231, 3232, 3233, 3541, 3542, 3543, 3544, 535, 536, 3546, 3547,
+ 3548, 3249, 3549, 3550, 3551, 715, 715, 3553, 3554, 3555, 3556, 3556, 3557,
+ 3558, 3559, 3560, 3560, 3561, 3562, 3563, 3552, 3545, 3534, 3531, 3524, 3257,
+ 3262, 3564, 3564, 3568, 3569, 3565, 3566, 3567, 3570, 3571, 3572, 3513, 3573,
+ 3574, 3573, 3574, 3575, 3576, 437, 3578, 3579, 3580, 3581, 3582, 3583, 3584,
+ 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597,
+ 3598, 3599, 3600, 3601, 3601, 3602, 3603, 3604, 3605, 3605, 3606, 3607, 3608,
+ 3609, 3610, 3611, 749, 750, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620,
+ 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630, 3029, 3029, 3632,
+ 3633, 767, 767, 3635, 3636, 3637, 3638, 3638, 3639, 3640, 3641, 3642, 3642,
+ 3643, 3644, 3645, 3646, 3646, 3647, 3648, 3649, 3650, 3650, 3651, 3652, 3653,
+ 3654, 3654, 3655, 3656, 3657, 3658, 3658, 3659, 3660, 782, 782, 3662, 3663,
+ 3664, 3665, 3665, 3666, 3667, 3668, 3669, 3669, 3670, 3671, 3672, 3673, 3673,
+ 3674, 3675, 791, 791, 3677, 3678, 3679, 3680, 3680, 3681, 3682, 3683, 3684,
+ 3684, 3685, 3686, 3687, 3688, 3688, 3689, 3690, 3691, 3692, 3692, 3693, 3694,
+ 3695, 3676, 3661, 3634, 512, 762, 763, 764, 765, 3696, 3697, 3698, 3699,
+ 3696, 3697, 3698, 3699, 3700, 3701, 3702, 3703, 3703, 3704, 3705, 3706, 3707,
+ 3707, 3708, 3709, 3710, 3711, 3711, 3712, 3713, 3714, 3715, 3715, 3716, 3717,
+ 3718, 3631, 3612, 3719, 3719, 3720, 3721, 3722, 3723, 3724, 3725, 3725, 3726,
+ 3727, 3728, 3577, 3729, 3730, 3729, 3730, 3731, 3732, 828, 828, 3734, 3735,
+ 3736, 3737, 3738, 3739, 3740, 3741, 3741, 3742, 3743, 835, 3745, 3746, 3747,
+ 3748, 3749, 3750, 3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760,
+ 3761, 3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771, 3772, 3773,
+ 3774, 3775, 3776, 3776, 3777, 3778, 3779, 3744, 3780, 3781, 3780, 3781, 3782,
+ 3783, 507, 507, 3785, 3786, 3787, 3788, 3788, 3789, 3790, 3791, 3792, 3792,
+ 3793, 3794, 3795, 3796, 3796, 3797, 3798, 3799, 3800, 3800, 3801, 3802, 3803,
+ 3804, 3804, 3805, 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3813, 3814, 234,
+ 234, 3816, 3817, 3818, 3819, 3819, 3820, 3821, 3822, 3823, 3823, 3824, 3825,
+ 3826, 3827, 3827, 3828, 3829, 3830, 3831, 3831, 3832, 3833, 3834, 3835, 3835,
+ 3836, 3837, 3838, 3839, 3839, 3840, 3841, 3842, 3843, 3843, 3844, 3845, 3846,
+ 3847, 3847, 3848, 3849, 3850, 3851, 3851, 3852, 3853, 3854, 3855, 3855, 3856,
+ 3857, 3858, 3859, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 247, 247, 3867,
+ 3868, 3869, 3870, 3870, 3871, 3872, 3873, 3874, 3874, 3875, 3876, 3877, 3878,
+ 3878, 3879, 3880, 3881, 3882, 3882, 3883, 3884, 3885, 3886, 3886, 3887, 3888,
+ 3889, 3890, 3890, 3891, 3892, 3893, 3894, 3894, 3895, 3896, 3897, 3898, 3898,
+ 3899, 3900, 3901, 3902, 3902, 3903, 3904, 3905, 3906, 3906, 3907, 3908, 3909,
+ 3910, 3911, 3912, 2829, 3914, 3915, 3916, 3917, 3918, 3918, 3919, 3920, 3921,
+ 3922, 3922, 3923, 3924, 3925, 3926, 3926, 3927, 3928, 3929, 3930, 3930, 3931,
+ 3932, 3933, 3934, 3934, 3935, 3936, 3937, 3938, 3938, 3939, 3940, 3941, 3942,
+ 3942, 3943, 3944, 3945, 3913, 3866, 3946, 3946, 3947, 3948, 3949, 3950, 236,
+ 3952, 3953, 3954, 3955, 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3951, 3815,
+ 3963, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3969, 3970, 3971, 951, 951,
+ 3973, 3974, 3975, 3976, 3976, 3977, 3978, 3979, 3980, 3980, 3981, 3982, 3983,
+ 3984, 3984, 3985, 3986, 3987, 3988, 3988, 3989, 3990, 3991, 3992, 3992, 3993,
+ 3994, 3995, 3996, 3996, 3997, 3998, 621, 4000, 4001, 4002, 4003, 4004, 4005,
+ 4006, 4007, 4008, 4009, 4010, 4011, 4011, 4012, 4013, 4014, 4015, 4015, 4016,
+ 4017, 975, 975, 4019, 4020, 4021, 4022, 4022, 4023, 4024, 4025, 4026, 4026,
+ 4027, 4028, 4029, 4030, 4030, 4031, 4032, 4033, 4034, 4034, 4035, 4036, 986,
+ 986, 4038, 4039, 989, 989, 4041, 4042, 4043, 4040, 4044, 4044, 4045, 4045,
+ 4046, 4047, 4048, 4049, 4050, 4051, 997, 997, 4053, 4054, 1000, 1000, 4056,
+ 4057, 4058, 4055, 4059, 4059, 4060, 4060, 4061, 4062, 4063, 4064, 4065, 4066,
+ 4067, 4052, 1008, 4068, 4069, 4070, 4071, 4072, 4073, 4073, 4074, 4075, 4076,
+ 4037, 4077, 4078, 4077, 4078, 4079, 4080, 1018, 1019, 1020, 1021, 1022, 1023,
+ 1024, 1025, 1026, 4082, 4083, 4084, 4085, 4086, 4087, 4088, 4089, 4090, 4091,
+ 1041, 1042, 4093, 4094, 4095, 4096, 4096, 4097, 4098, 4099, 4100, 4100, 4101,
+ 4102, 4103, 4104, 4104, 4105, 4106, 4107, 4108, 4108, 4109, 4110, 4111, 4112,
+ 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4092, 4121, 4120, 4122, 4123,
+ 4124, 4125, 4125, 4126, 4127, 4128, 4129, 4129, 4130, 4131, 4132, 4133, 4133,
+ 4134, 4135, 4136, 4137, 4137, 4138, 4139, 4140, 4141, 4141, 4142, 4143, 4144,
+ 4145, 4145, 4146, 4147, 4148, 4081, 4018, 3999, 3972, 3784, 3733, 3505, 3418,
+ 3399, 3328, 3317, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158,
+ 4159, 4160, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157, 4158, 4159,
+ 4160, 4161, 4162, 1086, 1086, 4164, 4165, 4166, 4167, 4167, 4168, 4169, 4170,
+ 4171, 4171, 4172, 4173, 4174, 4175, 4175, 4176, 4177, 4178, 4179, 4179, 4180,
+ 4181, 4182, 4183, 4183, 4184, 4185, 4186, 4163, 3266, 3139, 3120, 4187, 4188,
+ 4189, 4190, 4191, 4187, 4188, 4189, 4190, 4191, 4192, 4193, 493, 540, 4195,
+ 4196, 4197, 4198, 4198, 4199, 4200, 502, 502, 4202, 4203, 457, 457, 502,
+ 502, 4205, 4206, 701, 701, 4208, 4209, 475, 475, 4211, 4212, 470, 470, 482,
+ 482, 4214, 4215, 476, 476, 494, 494, 4217, 4218, 495, 495, 4220, 4221, 474,
+ 474, 519, 519, 4223, 4224, 457, 457, 701, 701, 4226, 4227, 518, 518, 4229,
+ 4230, 4231, 4232, 4232, 4233, 4234, 4235, 4236, 4236, 4237, 4238, 4239, 4240,
+ 4240, 4241, 4242, 470, 470, 4244, 4245, 536, 536, 4247, 4248, 457, 457, 4250,
+ 4251, 457, 457, 4253, 4254, 518, 518, 4256, 4257, 4258, 4255, 4252, 4249,
+ 4246, 4243, 4228, 4225, 4222, 4219, 4216, 4213, 4210, 4207, 4204, 4201, 4259,
+ 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272,
+ 4273, 4274, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269,
+ 4270, 4271, 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 523, 523,
+ 4282, 4283, 4284, 4285, 4285, 4286, 4287, 4288, 4289, 4289, 4290, 4291, 4292,
+ 4293, 4293, 4294, 4295, 4296, 4297, 4297, 4298, 4299, 4300, 4301, 4301, 4302,
+ 4303, 4304, 4281, 4305, 4306, 4305, 4306, 4307, 4308, 402, 402, 4310, 4311,
+ 4312, 4313, 4313, 4314, 4315, 4316, 4317, 4317, 4318, 4319, 4320, 4321, 4321,
+ 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334,
+ 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 403, 403, 4345, 4346,
+ 4347, 4348, 4348, 4349, 4350, 4351, 4352, 4352, 4353, 4354, 4355, 4356, 4356,
+ 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369,
+ 4370, 4371, 4372, 4373, 4374, 4375, 4376, 4377, 4378, 4379, 4344, 4380, 4380,
+ 4381, 4381, 4382, 4383, 406, 406, 4385, 4386, 4387, 4388, 4388, 4389, 4390,
+ 4391, 4392, 4392, 4393, 4394, 4395, 4396, 4396, 4397, 4398, 4399, 4400, 4401,
+ 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413, 4414,
+ 4415, 4416, 4417, 4418, 4419, 4420, 4420, 4421, 4422, 404, 404, 4424, 4425,
+ 4426, 4427, 4427, 4428, 4429, 4430, 4431, 4431, 4432, 4433, 4434, 4435, 4435,
+ 4436, 4437, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 4446, 4447, 4448,
+ 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 408, 408, 4459, 4460,
+ 4461, 4462, 4462, 4463, 4464, 4465, 4466, 4466, 4467, 4468, 4469, 4470, 4470,
+ 4471, 4472, 4473, 4474, 4475, 4476, 4477, 4478, 4479, 4480, 4481, 4482, 4483,
+ 4484, 4485, 4486, 4487, 4488, 4489, 4490, 4491, 4492, 4493, 4458, 4495, 4495,
+ 4494, 4494, 4496, 4497, 407, 407, 4499, 4500, 4501, 4502, 4502, 4503, 4504,
+ 4505, 4506, 4506, 4507, 4508, 4509, 4510, 4510, 4511, 4512, 4513, 4514, 4515,
+ 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4528,
+ 4529, 4530, 4531, 4532, 4533, 4534, 4534, 4535, 4536, 409, 409, 4538, 4539,
+ 4540, 4541, 4541, 4542, 4543, 4544, 4545, 4545, 4546, 4547, 4548, 4549, 4549,
+ 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562,
+ 4563, 4564, 4565, 4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4573, 4574,
+ 4575, 4576, 4577, 4577, 4578, 4579, 4580, 4581, 4581, 4582, 4583, 4584, 4585,
+ 4585, 4586, 4587, 4588, 4589, 4589, 4590, 4591, 4592, 4593, 4593, 4594, 4595,
+ 4596, 4597, 4597, 4598, 4599, 4600, 4601, 4601, 4602, 4603, 4604, 4605, 4605,
+ 4606, 4607, 4608, 4609, 4609, 4610, 4611, 4612, 4613, 4613, 4614, 4615, 410,
+ 410, 4617, 4618, 4619, 4620, 4620, 4621, 4622, 4623, 4624, 4624, 4625, 4626,
+ 4627, 4628, 4628, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4638,
+ 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, 405,
+ 405, 4652, 4653, 4654, 4655, 4655, 4656, 4657, 4658, 4659, 4659, 4660, 4661,
+ 4662, 4663, 4663, 4664, 4665, 4666, 4667, 4668, 4669, 4670, 4671, 4672, 4673,
+ 4674, 4675, 4676, 4677, 4678, 4679, 4680, 4681, 4682, 4683, 4684, 4685, 4686,
+ 4651, 4616, 4687, 4688, 4689, 4687, 4688, 4689, 4690, 4691, 481, 481, 4693,
+ 4694, 4695, 4696, 4696, 4697, 4698, 4699, 4700, 4700, 4701, 4702, 4703, 4704,
+ 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4712, 4713, 4714, 393,
+ 393, 4716, 4717, 4718, 4719, 4719, 4720, 4721, 4722, 4723, 4723, 4724, 4725,
+ 4726, 4727, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737,
+ 4738, 4739, 4740, 4741, 4742, 4743, 4743, 4744, 4745, 4746, 4747, 4747, 4748,
+ 4749, 4750, 4751, 4751, 4752, 4753, 4754, 4755, 4755, 4756, 4757, 4380, 4380,
+ 4759, 4760, 4495, 4495, 4762, 4763, 401, 401, 4765, 4766, 4767, 4768, 4768,
+ 4769, 4770, 4771, 4772, 4772, 4773, 4774, 4775, 4776, 4776, 4777, 4778, 4779,
+ 4780, 4781, 4782, 4783, 4784, 4785, 4786, 4787, 4788, 4789, 4790, 4791, 4792,
+ 4793, 4794, 4795, 4796, 4796, 4797, 4798, 4799, 4764, 4761, 4758, 4715, 4692,
+ 4537, 4498, 4423, 4384, 4309, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807,
+ 4808, 4809, 4810, 4800, 4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809,
+ 4810, 4811, 4812, 4813, 4814, 4815, 4816, 92, 4817, 4818, 4818, 4819, 4820,
+ 4821, 4822, 4822, 4823, 4824, 4825, 4826, 4826, 4827, 4828, 4829, 4830, 4830,
+ 4831, 4832, 340, 782, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842,
+ 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4849, 4850, 4851, 4852, 4853, 4853,
+ 4854, 4855, 782, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866,
+ 4867, 4868, 4869, 4870, 4871, 4872, 4872, 4873, 4874, 4875, 4876, 4876, 4877,
+ 4878, 632, 632, 4880, 4881, 594, 594, 4883, 4884, 621, 4886, 4887, 4888,
+ 4889, 4889, 4890, 4891, 4892, 4885, 4882, 4893, 3388, 4894, 4895, 4893, 3388,
+ 4894, 4895, 4896, 4897, 4898, 3386, 3386, 4899, 4900, 4901, 4902, 4903, 4903,
+ 4904, 4905, 3363, 4907, 4908, 4909, 4910, 4910, 4911, 4912, 4913, 4914, 4914,
+ 4915, 4916, 4917, 4918, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 4925, 4926,
+ 4926, 4927, 4928, 4929, 4930, 4930, 4931, 4932, 4933, 4934, 4934, 4935, 4936,
+ 4937, 4938, 4938, 4939, 4940, 4941, 4942, 4942, 4943, 4944, 4945, 4946, 4946,
+ 4947, 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4954, 4955, 4956, 4957, 4958,
+ 4958, 4959, 4960, 4961, 4962, 4962, 4963, 4964, 4965, 4966, 4966, 4967, 4968,
+ 4969, 4970, 4970, 4971, 4972, 4973, 4974, 4974, 4975, 4976, 4977, 4978, 4979,
+ 4980, 4981, 4982, 4982, 4983, 4984, 4985, 4986, 4986, 4987, 4988, 4989, 4990,
+ 4990, 4991, 4992, 4993, 4994, 4994, 4995, 4996, 4997, 4998, 4999, 5000, 5001,
+ 5002, 5002, 5003, 5004, 5005, 5006, 5006, 5007, 5008, 5009, 5010, 5010, 5011,
+ 5012, 5013, 5014, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5022,
+ 5023, 5024, 5025, 5026, 5026, 5027, 5028, 5029, 5030, 5030, 5031, 5032, 5033,
+ 5034, 5034, 5035, 5036, 5037, 5038, 5038, 5039, 5040, 5041, 5042, 5042, 5043,
+ 5044, 5045, 4906, 4879, 4856, 4833, 5046, 5047, 5048, 5049, 5050, 5046, 5047,
+ 5048, 5049, 5050, 5051, 5052, 3585, 5054, 5055, 5056, 5057, 5058, 5059, 5060,
+ 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 543,
+ 543, 5073, 3411, 5074, 5075, 49, 4859, 5077, 5077, 5078, 5079, 5080, 5081,
+ 5081, 5082, 5083, 5084, 5085, 5085, 5086, 5087, 5088, 5076, 5089, 5090, 5089,
+ 5090, 5091, 5092, 3501, 5094, 5095, 5096, 5097, 3692, 5097, 3692, 5098, 5099,
+ 975, 5101, 5102, 986, 989, 997, 1000, 5104, 5105, 5106, 5103, 749, 1008,
+ 5107, 5108, 5109, 5110, 543, 750, 5112, 5113, 48, 5114, 49, 5111, 594, 765,
+ 951, 1564, 5115, 5116, 5117, 5118, 234, 268, 674, 1041, 1042, 5120, 5121,
+ 229, 236, 247, 715, 5123, 5124, 457, 632, 5126, 5127, 469, 470, 474, 475,
+ 476, 481, 701, 5129, 5130, 235, 237, 238, 245, 246, 482, 493, 494, 495, 502,
+ 5132, 5133, 248, 249, 251, 448, 515, 518, 519, 523, 526, 535, 5135, 5136,
+ 263, 462, 536, 540, 5138, 5139, 250, 388, 507, 828, 5141, 5142, 393, 401,
+ 402, 403, 404, 405, 406, 407, 408, 409, 5144, 5145, 5146, 5143, 5140, 5137,
+ 5134, 5131, 5128, 5125, 5122, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154,
+ 5155, 5156, 5157, 369, 410, 694, 5159, 5160, 5161, 5162, 5163, 5164, 621,
+ 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 5166, 5167, 5168, 5169,
+ 5170, 5171, 5172, 5165, 5158, 5173, 5174, 5175, 5176, 5177, 591, 835, 5179,
+ 5180, 437, 5182, 5183, 43, 5184, 2, 5181, 5178, 5119, 340, 512, 763, 764,
+ 1086, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196,
+ 5196, 5197, 5198, 5199, 5200, 5200, 5201, 5202, 1612, 1613, 5204, 5205, 1617,
+ 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 5207, 5208, 462, 1638,
+ 1639, 5210, 5211, 694, 1643, 1644, 1645, 1646, 1647, 5213, 5214, 674, 5216,
+ 5217, 340, 1655, 5219, 5220, 1658, 1659, 5222, 5223, 5224, 5221, 5218, 5215,
+ 5212, 5209, 5206, 5225, 5226, 5227, 5228, 5229, 5230, 5231, 5232, 5233, 1671,
+ 1672, 1673, 5235, 5236, 1678, 1679, 1680, 5238, 5239, 1685, 1686, 1687, 1688,
+ 5241, 5242, 1694, 1695, 1696, 1697, 1698, 1699, 5244, 5245, 1707, 1708, 5247,
+ 5248, 5249, 5246, 5243, 5240, 5237, 3092, 5250, 5251, 5252, 5253, 5254, 5255,
+ 5256, 986, 989, 1008, 5258, 5259, 997, 1000, 5261, 5262, 1041, 1042, 1720,
+ 1721, 1722, 1723, 1724, 1725, 1726, 5264, 5265, 1735, 5267, 5268, 5269, 268,
+ 1738, 5270, 5271, 5272, 1742, 1743, 1744, 1745, 5274, 5275, 5276, 5273, 5266,
+ 5263, 5260, 5277, 5278, 5279, 5280, 5281, 5282, 5283, 1757, 1758, 5285, 5286,
+ 5287, 5288, 5289, 5290, 975, 5292, 5293, 5294, 5295, 5296, 5297, 835, 1767,
+ 5299, 5300, 369, 1770, 5302, 5303, 543, 632, 1773, 1774, 1775, 5305, 5306,
+ 1780, 1781, 5308, 5309, 5310, 5307, 5304, 5301, 5298, 5291, 5311, 5312, 5313,
+ 5314, 5315, 5316, 5317, 5318, 1792, 5320, 5321, 5322, 5323, 5324, 5325, 5326,
+ 5327, 5328, 5329, 5330, 5319, 5284, 5257, 5234, 5331, 5332, 5333, 5334, 5335,
+ 5336, 5337, 1805, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 1810, 5346, 5347,
+ 5348, 1814, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 474, 475, 476, 5357,
+ 5358, 5359, 5360, 5349, 3182, 3528, 5361, 5362, 5363, 5364, 1824, 1825, 5366,
+ 5367, 594, 5369, 5370, 5371, 5372, 5373, 5374, 5375, 5376, 5377, 5378, 5379,
+ 5368, 457, 3191, 5380, 5381, 5382, 5383, 1837, 5385, 5386, 5387, 229, 5388,
+ 5389, 5390, 1842, 5392, 5393, 1845, 1846, 1847, 5395, 5396, 1852, 1853, 5398,
+ 5399, 1857, 5401, 5402, 5403, 5400, 5397, 5394, 5404, 5405, 5406, 5407, 5408,
+ 5409, 5410, 5391, 3198, 5411, 5412, 5413, 5414, 1868, 5416, 5417, 1871, 5419,
+ 5420, 1874, 1875, 1876, 1877, 1878, 5422, 5423, 5424, 5421, 5418, 502, 5425,
+ 5426, 5427, 5428, 5429, 1889, 5431, 5432, 5433, 5434, 5435, 5436, 1018, 1019,
+ 1020, 1021, 5438, 5439, 1022, 1026, 5441, 5442, 5443, 5440, 5444, 5445, 5446,
+ 5447, 437, 5449, 5450, 5451, 5452, 5453, 5454, 1902, 5456, 5457, 5458, 5459,
+ 5460, 5461, 5462, 5463, 5464, 5465, 5466, 5455, 5448, 5437, 5430, 5467, 5468,
+ 5469, 5470, 5471, 5472, 5473, 1915, 5475, 5476, 5477, 5478, 5479, 5480, 5481,
+ 5482, 5483, 5484, 1922, 5486, 5487, 1925, 5489, 5490, 1928, 5492, 5493, 1931,
+ 5495, 5496, 5497, 5494, 5491, 5488, 5498, 5499, 5500, 5501, 5502, 5503, 5504,
+ 5505, 5506, 5507, 5508, 5485, 5509, 5510, 5511, 5512, 1944, 5514, 5515, 1947,
+ 5517, 5518, 5519, 5516, 3212, 5520, 5521, 5522, 5523, 512, 782, 5525, 5526,
+ 715, 1954, 1955, 1956, 1957, 5528, 5529, 234, 235, 236, 237, 238, 388, 5531,
+ 5532, 1964, 5534, 5535, 12, 5536, 245, 247, 248, 249, 250, 251, 448, 515,
+ 5537, 5538, 5539, 518, 519, 621, 828, 1969, 5541, 5542, 526, 1564, 1972,
+ 5544, 5545, 5546, 5543, 5540, 5533, 5530, 5527, 3232, 5547, 5548, 5549, 5550,
+ 5551, 5552, 5553, 5554, 1982, 5556, 5557, 1985, 5559, 5560, 1988, 5562, 5563,
+ 5564, 72, 5561, 73, 5558, 263, 5565, 5566, 5567, 5568, 5569, 540, 762, 763,
+ 764, 791, 1086, 5571, 5572, 393, 749, 750, 765, 1996, 1997, 1998, 1999, 5574,
+ 5575, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 5577, 5578, 1023,
+ 1024, 1025, 5580, 5581, 5582, 195, 951, 2024, 2026, 2027, 2028, 5583, 5584,
+ 5585, 2035, 2036, 2037, 2038, 2039, 2040, 5587, 5588, 2048, 2049, 5590, 5591,
+ 591, 5593, 5594, 5595, 5592, 5589, 5586, 5579, 5576, 5573, 5570, 5596, 5597,
+ 5598, 5599, 5600, 5601, 5602, 5603, 5604, 5605, 5606, 5555, 5524, 5513, 5474,
+ 5415, 5384, 5365, 5338, 1611, 3564, 3564, 5607, 5608, 5609, 5610, 5611, 5612,
+ 5613, 5614, 5615, 5616, 5617, 3249, 3250, 5619, 5620, 2075, 5622, 2076, 5624,
+ 5625, 5623, 5626, 5627, 5628, 5629, 2080, 5631, 2081, 5633, 2082, 5635, 2083,
+ 5637, 5638, 5636, 5634, 5632, 5639, 5640, 5641, 5642, 5643, 5644, 2089, 5646,
+ 2090, 5648, 5649, 5647, 5650, 5651, 5652, 5653, 2094, 5655, 2095, 5657, 5658,
+ 5656, 5659, 5660, 5661, 5662, 2099, 5664, 5665, 5666, 5667, 5668, 2102, 5670,
+ 2103, 5672, 2104, 5674, 5675, 5673, 5671, 5676, 5677, 5678, 5679, 5680, 2109,
+ 5682, 2110, 5684, 2111, 5686, 2112, 5688, 2113, 5690, 2114, 5692, 2115, 5694,
+ 5695, 5693, 5691, 5689, 5687, 5685, 5683, 5696, 5697, 5698, 5699, 5700, 5701,
+ 5702, 5703, 5704, 2124, 5706, 2125, 5708, 2126, 5710, 2127, 5712, 2128, 5714,
+ 2129, 5716, 2130, 5718, 2131, 5720, 5721, 5719, 5717, 5715, 5713, 5711, 5709,
+ 5707, 5722, 5723, 5724, 5725, 5726, 5727, 5728, 5729, 5730, 5731, 5732, 5705,
+ 5681, 5669, 5663, 5654, 5645, 5630, 5733, 5734, 5735, 5736, 5737, 5738, 5739,
+ 5740, 5741, 5742, 2150, 5744, 2151, 5746, 2152, 5748, 2153, 5750, 2154, 5752,
+ 2155, 5754, 2156, 5756, 5757, 5755, 5753, 5751, 5749, 5747, 5745, 5758, 5759,
+ 5760, 5761, 5762, 5763, 5764, 5765, 5766, 2165, 5768, 2166, 5770, 2167, 5772,
+ 2168, 5774, 2169, 5776, 2170, 5778, 5779, 5777, 5775, 5773, 5771, 5769, 5780,
+ 5781, 5782, 5783, 5784, 5785, 5786, 5787, 2178, 5789, 2179, 5791, 2180, 5793,
+ 2181, 5795, 2182, 5797, 5798, 5796, 5794, 5792, 5790, 5799, 5800, 5801, 5802,
+ 5803, 5804, 5805, 2189, 5807, 2190, 5809, 2191, 5811, 2192, 5813, 5814, 5812,
+ 5810, 5808, 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5806, 5788, 5767, 5822,
+ 5823, 5824, 5825, 5826, 5827, 2203, 5829, 5830, 5831, 5832, 5833, 2206, 5835,
+ 2207, 5837, 2208, 5839, 2209, 5841, 5842, 5840, 5838, 5836, 5843, 5844, 5845,
+ 5846, 5847, 5848, 5849, 5834, 5850, 5851, 5852, 5853, 2218, 5855, 2219, 5857,
+ 2220, 5859, 5860, 5858, 5856, 5861, 5862, 5863, 5864, 5865, 2225, 5867, 5868,
+ 5869, 5870, 5871, 2228, 5873, 2229, 5875, 5876, 5874, 5877, 5878, 5879, 5880,
+ 2233, 5882, 5883, 5884, 5885, 5886, 5887, 5881, 5872, 5866, 5888, 5889, 5890,
+ 5891, 5892, 5893, 2241, 5895, 5896, 5897, 5898, 5899, 5900, 5901, 5902, 5903,
+ 2246, 5905, 2247, 5907, 2248, 5909, 5910, 5908, 5906, 5911, 5912, 5913, 5914,
+ 5915, 2253, 5917, 5918, 5919, 5920, 5921, 5922, 5916, 5923, 5924, 5925, 5926,
+ 5927, 5904, 5894, 5854, 5828, 5743, 5928, 5929, 5930, 5931, 5932, 5933, 5934,
+ 5935, 2266, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 2271, 5947,
+ 5948, 5949, 5950, 5951, 2274, 5953, 5954, 5955, 5956, 5957, 5958, 5952, 5959,
+ 5960, 5961, 5962, 2280, 5964, 5965, 5966, 5967, 5968, 5969, 5970, 5971, 5972,
+ 5973, 5963, 5946, 5974, 5975, 5976, 5977, 5978, 2289, 5980, 5981, 5982, 5983,
+ 5984, 5985, 5986, 5987, 5988, 2294, 5990, 5991, 5992, 5993, 5994, 5995, 5996,
+ 5997, 5998, 5999, 5989, 6000, 6001, 6002, 6003, 2302, 6005, 6006, 6007, 6008,
+ 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 2309, 6019, 6020, 6021,
+ 6022, 6023, 6024, 6025, 6026, 6027, 6028, 6029, 6030, 6031, 2316, 6033, 6034,
+ 6035, 6036, 6037, 6038, 6039, 6040, 6041, 2321, 6043, 2322, 6045, 2323, 6047,
+ 2324, 6049, 6050, 6048, 6046, 6044, 6051, 6052, 6053, 6054, 6055, 6056, 6057,
+ 6058, 6059, 6060, 6061, 6042, 6062, 6063, 6064, 6065, 6066, 6032, 6018, 6004,
+ 5979, 5936, 6067, 6068, 6069, 6070, 6071, 6072, 6073, 6074, 6075, 6076, 6076,
+ 6077, 6078, 6079, 6080, 6080, 6081, 6082, 6083, 6084, 6084, 6085, 6086, 6087,
+ 6088, 6088, 6089, 6090, 6091, 5621, 5618, 6092, 6092, 6093, 3255, 3256, 3257,
+ 3258, 3259, 3568, 3569, 3262, 6094, 6095, 6096, 6097, 6098, 6098, 6099, 6100,
+ 975, 6102, 6103, 6104, 6105, 6106, 6107, 6108, 6109, 6109, 6110, 6111, 6112,
+ 6113, 6113, 6114, 6115, 6116, 6117, 6117, 6118, 6119, 6120, 6121, 6122, 6123,
+ 6124, 6125, 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6133, 6134, 6135, 6136,
+ 6137, 6138, 6139, 1041, 6141, 6142, 6143, 6144, 6145, 6146, 6147, 6148, 6148,
+ 6149, 6150, 6151, 6152, 6152, 6153, 6154, 6155, 6156, 6156, 6157, 6158, 6159,
+ 6160, 6160, 6161, 6162, 6163, 6164, 6164, 6165, 6166, 6167, 6168, 6169, 6170,
+ 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183,
+ 6184, 6185, 6186, 6187, 6188, 6188, 6189, 6190, 6191, 6192, 6192, 6193, 6194,
+ 6195, 6196, 6196, 6197, 6198, 6199, 6200, 6200, 6201, 6202, 6203, 6204, 6204,
+ 6205, 6206, 6207, 6208, 6208, 6209, 6210, 6211, 6212, 6212, 6213, 6214, 6215,
+ 749, 750, 6216, 6217, 6218, 1042, 6220, 6221, 6222, 6223, 6224, 6225, 6226,
+ 6227, 6227, 6228, 6229, 6230, 6231, 6231, 6232, 6233, 6234, 6235, 6235, 6236,
+ 6237, 6238, 6239, 6239, 6240, 6241, 6242, 6243, 6243, 6244, 6245, 6246, 6247,
+ 6248, 6249, 6250, 6251, 6251, 6252, 6253, 6254, 6255, 6255, 6256, 6257, 6258,
+ 6259, 6259, 6260, 6261, 6262, 6263, 6263, 6264, 6265, 6266, 6267, 6267, 6268,
+ 6269, 6270, 6271, 6271, 6272, 6273, 6274, 6275, 6275, 6276, 6277, 6278, 6279,
+ 6280, 6281, 43, 6282, 44, 6219, 340, 763, 764, 765, 782, 791, 1086, 6283,
+ 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, 6294, 6295, 6296,
+ 6297, 6298, 6299, 6300, 6301, 6302, 512, 762, 763, 6304, 6305, 764, 6307,
+ 6308, 340, 782, 6310, 6311, 791, 6313, 6314, 765, 835, 1086, 6316, 6317,
+ 6318, 6315, 6312, 6309, 6306, 6320, 6319, 6321, 6322, 6323, 6324, 6325, 6326,
+ 314, 5452, 6327, 6328, 6329, 6330, 6331, 6332, 6333, 6334, 6335, 6335, 6336,
+ 6337, 6338, 6303, 6140, 6339, 6339, 6340, 6341, 6342, 6343, 314, 314, 6345,
+ 6346, 6347, 6348, 6348, 6349, 6350, 6351, 6352, 6353, 6354, 6355, 6356, 6357,
+ 6358, 6359, 6360, 6361, 6362, 311, 6364, 6365, 6366, 6367, 6368, 6369, 6370,
+ 6371, 6372, 6373, 6374, 6375, 6376, 6377, 6378, 6379, 6380, 6381, 6382, 6383,
+ 6383, 6384, 6385, 6386, 6387, 6387, 6388, 6389, 6390, 6391, 6391, 6392, 6393,
+ 6394, 6395, 6396, 6397, 6398, 6399, 6400, 6401, 6402, 6403, 6404, 6405, 512,
+ 6407, 6408, 6409, 6410, 6411, 6412, 6413, 6414, 6415, 6416, 6417, 6418, 6419,
+ 6420, 6421, 750, 6422, 6423, 6424, 762, 6426, 6427, 6428, 6429, 6430, 6431,
+ 6432, 6433, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 763,
+ 6445, 6446, 6447, 6448, 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457,
+ 6458, 6459, 6460, 6461, 6462, 764, 6464, 6465, 6466, 6467, 6468, 6469, 6470,
+ 6471, 6472, 6473, 6474, 6475, 6476, 6477, 6478, 6479, 6480, 6481, 1086, 6483,
+ 6484, 6485, 6486, 6487, 6488, 6489, 6490, 6491, 6492, 6493, 6494, 6495, 6496,
+ 6497, 6498, 6499, 6500, 340, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509,
+ 6510, 6511, 6512, 6513, 6514, 6515, 6516, 6517, 6518, 6519, 782, 6521, 6522,
+ 6523, 6524, 6525, 6526, 6527, 6528, 6529, 6530, 6531, 6532, 6533, 6534, 6535,
+ 6536, 6537, 6538, 6320, 6540, 6541, 6542, 6543, 6544, 6545, 6546, 6547, 6548,
+ 6549, 6550, 6551, 6552, 6553, 765, 6555, 6556, 6557, 6558, 6559, 6560, 6561,
+ 6562, 6563, 6564, 6565, 6566, 6567, 6568, 6569, 6570, 6571, 6572, 40, 6573,
+ 48, 6554, 49, 6539, 50, 6520, 3, 6501, 41, 6482, 42, 6463, 43, 6444, 44,
+ 6425, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6581, 6582, 6583, 6584, 6585,
+ 6586, 6587, 6588, 6589, 6590, 6591, 6592, 6593, 6594, 6595, 6596, 6597, 6598,
+ 6599, 6600, 6601, 6406, 6602, 6603, 6604, 6605, 6606, 6363, 6344, 6607, 6608,
+ 6609, 6610, 6611, 6612, 6613, 6613, 6614, 6615, 6616, 6101, 5203, 6617, 6618,
+ 6619, 6617, 6618, 6619, 6620, 6621, 1564, 6623, 6624, 6625, 6626, 6627, 6628,
+ 6629, 6630, 6631, 6632, 6633, 6634, 6635, 6636, 6637, 6638, 6638, 6639, 6640,
+ 6641, 6642, 6643, 6644, 6645, 6646, 6646, 6647, 6648, 6649, 6650, 6650, 6651,
+ 6652, 3737, 6654, 6655, 6656, 6657, 6658, 6659, 835, 835, 6661, 6662, 6663,
+ 6664, 6664, 6665, 6666, 6667, 6668, 6668, 6669, 6670, 6671, 6660, 6672, 6673,
+ 6672, 6673, 6674, 6675, 835, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684,
+ 6685, 6686, 6687, 6688, 6689, 6690, 6691, 6692, 6693, 6694, 835, 835, 6696,
+ 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, 6705, 6706, 6707, 6708, 6709,
+ 6710, 6711, 6712, 6713, 6714, 6715, 6716, 6717, 6718, 6719, 6720, 6721, 6722,
+ 6723, 6724, 6725, 6726, 6727, 6728, 6729, 6730, 6731, 6732, 6733, 6734, 6735,
+ 6735, 6736, 6737, 6738, 6695, 6740, 6739, 6740, 6741, 6742, 6743, 6676, 6744,
+ 6745, 6744, 6745, 6746, 6747, 750, 6749, 6750, 6751, 512, 762, 763, 764,
+ 765, 6752, 6753, 6754, 6755, 6756, 6756, 6757, 6758, 6759, 6760, 6760, 6761,
+ 6762, 6763, 6764, 6764, 6765, 6766, 6767, 512, 762, 763, 764, 765, 6768,
+ 6768, 6769, 6770, 3248, 6772, 6773, 951, 951, 6775, 6776, 6777, 6778, 6778,
+ 6779, 6780, 6781, 6782, 6782, 6783, 6784, 6785, 6786, 6786, 6787, 6788, 6789,
+ 6790, 6790, 6791, 6792, 6793, 6774, 6795, 6794, 6796, 6797, 6798, 6799, 6799,
+ 6800, 6801, 388, 388, 6803, 6804, 6805, 6806, 6806, 6807, 6808, 6809, 6810,
+ 6810, 6811, 6812, 6813, 6814, 6814, 6815, 6816, 6817, 6818, 6819, 6820, 6821,
+ 6822, 6823, 6824, 6825, 6826, 6827, 6828, 6829, 6830, 6831, 6832, 6833, 6834,
+ 6835, 6836, 6837, 6838, 6838, 6839, 6840, 6841, 6842, 6842, 6843, 6844, 6845,
+ 6846, 6846, 6847, 6848, 6849, 6850, 6850, 6851, 6852, 6853, 6854, 6854, 6855,
+ 6856, 6857, 6858, 6858, 6859, 6860, 6861, 6862, 6862, 6863, 6864, 6865, 6866,
+ 6866, 6867, 6868, 6869, 6870, 6870, 6871, 6872, 6873, 6874, 6874, 6875, 6876,
+ 6877, 6878, 6878, 6879, 6880, 6881, 6882, 6882, 6883, 6884, 6885, 6886, 6887,
+ 6888, 6889, 6890, 6890, 6891, 6892, 674, 3493, 3493, 6894, 6895, 3984, 6897,
+ 6898, 6899, 6900, 6900, 6901, 6902, 6903, 6904, 6904, 6905, 6906, 6907, 6908,
+ 6908, 6909, 6910, 6911, 6912, 6912, 6913, 6914, 4011, 6916, 6917, 6918, 6919,
+ 6919, 6920, 6921, 6922, 6923, 6923, 6924, 6925, 975, 6105, 6927, 6928, 6929,
+ 6930, 6930, 6931, 6932, 3313, 3313, 6934, 6935, 6936, 6937, 6937, 6938, 6939,
+ 6940, 6941, 6942, 6943, 4044, 4045, 4044, 4045, 4049, 6945, 6946, 6947, 6948,
+ 6949, 6950, 4059, 4060, 4059, 4060, 4064, 6952, 6953, 6954, 6955, 6956, 6957,
+ 6958, 6951, 1008, 6959, 6960, 6961, 6962, 6963, 1008, 6959, 6960, 6964, 6965,
+ 6966, 6967, 6968, 6968, 6969, 6970, 6971, 2, 6944, 6933, 6972, 6973, 6974,
+ 6972, 6973, 6974, 6975, 6976, 6795, 4121, 6978, 6979, 6980, 6981, 6982, 6983,
+ 6984, 6985, 6985, 6986, 6987, 6988, 6989, 6989, 6990, 6991, 6992, 6993, 6993,
+ 6994, 6995, 6996, 6997, 6997, 6998, 6999, 7000, 7001, 7001, 7002, 7003, 7004,
+ 7005, 7005, 7006, 7007, 7008, 6977, 6926, 6915, 6896, 6893, 6802, 6771, 6748,
+ 6653, 6622, 5100, 5093, 5053, 4194, 3069, 3034, 2840, 2823, 7027, 7028, 7029,
+ 7030, 7031, 2830, 7033, 2833, 7035, 7036, 7034, 7038, 7037, 7039, 7040, 2841,
+ 7042, 7043, 7044, 7045, 7046, 2848, 7048, 7049, 7050, 7050, 7051, 7052, 7053,
+ 7054, 7054, 7055, 7056, 7057, 7058, 7058, 7059, 7060, 7061, 7062, 7062, 7063,
+ 7064, 7065, 7066, 7066, 7067, 7068, 7069, 7070, 7070, 7071, 7072, 7073, 7074,
+ 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7082, 7083, 7084, 7085,
+ 7086, 7086, 7087, 7088, 7089, 7090, 7090, 7091, 7092, 7093, 7094, 7094, 7095,
+ 7096, 7097, 7098, 7098, 7099, 7100, 7101, 7102, 7102, 7103, 7104, 7105, 7106,
+ 7106, 7107, 7108, 7109, 7110, 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117,
+ 7118, 7118, 7119, 7120, 7121, 7122, 7122, 7123, 7124, 7125, 7126, 7126, 7127,
+ 7128, 2931, 7130, 2934, 7132, 7133, 7131, 7134, 7135, 7136, 7137, 7138, 7139,
+ 7140, 7141, 7142, 7143, 7144, 7145, 7146, 7147, 7148, 7149, 7150, 7151, 7152,
+ 7153, 7154, 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, 7163, 7163, 7164,
+ 7165, 7166, 7167, 7168, 7169, 7170, 7171, 7171, 7172, 7173, 7174, 7175, 7175,
+ 7176, 7177, 2982, 7179, 7180, 7181, 7181, 7182, 7183, 7184, 7185, 7185, 7186,
+ 7187, 7188, 7189, 7189, 7190, 7191, 2997, 7193, 7194, 7195, 7195, 7196, 7197,
+ 3004, 7199, 7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210,
+ 7211, 7212, 7213, 7213, 7214, 7215, 7216, 7198, 7218, 7218, 7217, 7217, 7219,
+ 7220, 7221, 7192, 7178, 7129, 7223, 7223, 7222, 7224, 7225, 7222, 7224, 7225,
+ 7226, 7227, 3035, 7229, 7230, 7231, 7231, 7232, 7233, 7234, 7235, 7235, 7236,
+ 7237, 7238, 7239, 7239, 7240, 7241, 7242, 7243, 7243, 7244, 7245, 7246, 7247,
+ 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7255, 7256, 7257, 7258, 7259,
+ 7259, 7260, 7261, 3070, 7263, 7264, 7265, 7266, 7267, 3077, 7269, 7270, 7271,
+ 7272, 7273, 7274, 7268, 7275, 7276, 7277, 7278, 3089, 7280, 7281, 7282, 7283,
+ 7284, 7285, 7286, 7287, 7288, 7289, 7279, 7290, 7291, 7292, 7293, 7294, 7295,
+ 7296, 7297, 7298, 7299, 7299, 7300, 7301, 7302, 7303, 7303, 7304, 7305, 7306,
+ 7307, 7307, 7308, 7309, 3121, 7311, 7312, 7313, 7313, 7314, 7315, 7316, 7317,
+ 7317, 7318, 7319, 7320, 7321, 7321, 7322, 7323, 7324, 7325, 7325, 7326, 7327,
+ 3140, 7329, 3143, 7331, 3146, 7333, 7334, 7332, 7330, 7335, 7336, 7337, 7335,
+ 7336, 7337, 7338, 7339, 3155, 7341, 7342, 7343, 7290, 7291, 7344, 7345, 3162,
+ 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, 7355, 3173, 7357, 3176, 7359,
+ 3179, 7361, 7362, 7360, 7358, 7363, 7364, 7365, 7366, 7367, 3188, 7369, 7370,
+ 7371, 7372, 7373, 3195, 7375, 7376, 7029, 7377, 7378, 7379, 3202, 7381, 7382,
+ 7383, 7384, 7385, 3209, 7387, 7388, 7389, 7390, 7391, 3216, 7393, 3219, 7395,
+ 3222, 7397, 3225, 7399, 3228, 7401, 7402, 7400, 7398, 7396, 7394, 7403, 7404,
+ 7405, 7406, 7038, 7407, 7408, 7409, 3239, 7411, 3242, 7413, 3245, 7415, 7416,
+ 7414, 7412, 7417, 7418, 7419, 7420, 7421, 7422, 7410, 7392, 7386, 7380, 7374,
+ 7368, 7356, 7346, 7340, 7424, 7425, 7426, 7427, 7428, 7431, 7423, 7429, 7430,
+ 7432, 7433, 7434, 7078, 7078, 7436, 7437, 7438, 7439, 7439, 7440, 7441, 7442,
+ 7443, 7443, 7444, 7445, 7446, 7447, 7447, 7448, 7449, 7450, 7451, 7451, 7452,
+ 7453, 7454, 7455, 7455, 7456, 7457, 7458, 7459, 7459, 7460, 7461, 7462, 7463,
+ 7463, 7464, 7465, 7466, 7467, 7467, 7468, 7469, 7470, 7471, 7471, 7472, 7473,
+ 7474, 7475, 7475, 7476, 7477, 7218, 7218, 7479, 7480, 7481, 7478, 7482, 7482,
+ 7483, 7483, 7484, 7485, 7247, 7487, 7488, 7489, 7490, 7490, 7491, 7492, 7493,
+ 7494, 7494, 7495, 7496, 3329, 7498, 3332, 7500, 7501, 7502, 7502, 7503, 7504,
+ 7505, 7506, 7506, 7507, 7508, 7509, 7510, 7510, 7511, 7512, 7513, 7514, 7514,
+ 7515, 7516, 7517, 7518, 7518, 7519, 7520, 7521, 7522, 7522, 7523, 7524, 7525,
+ 7526, 7526, 7527, 7528, 7529, 7530, 7530, 7531, 7532, 7533, 7534, 7534, 7535,
+ 7536, 7537, 7538, 7538, 7539, 7540, 7541, 7542, 7542, 7543, 7544, 7545, 7546,
+ 7546, 7547, 7548, 3383, 7550, 7551, 7549, 7499, 7552, 7552, 7554, 7554, 7553,
+ 7553, 7555, 7556, 7557, 7558, 7558, 7559, 7560, 7561, 7562, 7562, 7563, 7564,
+ 3400, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 543, 543,
+ 7576, 7577, 7578, 7579, 7580, 7580, 7581, 7582, 3419, 7584, 7585, 7586, 7586,
+ 7587, 7588, 7589, 7590, 7590, 7591, 7592, 7593, 7594, 7594, 7595, 7596, 7597,
+ 7598, 7598, 7599, 7600, 7601, 7602, 7602, 7603, 7604, 7605, 7606, 7606, 7607,
+ 7608, 7609, 7610, 7610, 7611, 7612, 7613, 7614, 7614, 7615, 7616, 7617, 7618,
+ 7618, 7619, 7620, 7621, 7622, 7622, 7623, 7624, 7625, 7626, 7626, 7627, 7628,
+ 7629, 7630, 7630, 7631, 7632, 7633, 7634, 7634, 7635, 7636, 7637, 7638, 7638,
+ 7639, 7640, 3478, 7642, 7643, 7644, 7644, 7645, 7646, 7647, 7648, 7648, 7649,
+ 7650, 7651, 7652, 7652, 7653, 7654, 7655, 7656, 7656, 7657, 7658, 7659, 7660,
+ 7660, 7661, 7662, 7663, 7641, 7664, 7664, 7665, 7665, 7666, 7667, 7047, 7669,
+ 7670, 7671, 7672, 7673, 7673, 7674, 7675, 3514, 7677, 7678, 7679, 7349, 7680,
+ 7681, 7682, 7683, 7684, 7685, 3525, 7687, 7688, 7363, 7364, 7689, 7690, 7691,
+ 7377, 7693, 7694, 3535, 7696, 3538, 7698, 7699, 7697, 7403, 7404, 7405, 7700,
+ 7701, 7702, 7703, 3546, 7705, 7706, 7418, 7707, 7708, 7709, 3553, 7711, 7712,
+ 7713, 7713, 7714, 7715, 7716, 7717, 7717, 7718, 7719, 7720, 7710, 7704, 7695,
+ 7692, 7686, 7426, 7431, 7721, 7721, 7725, 7726, 7722, 7723, 7724, 7727, 7728,
+ 7729, 7676, 7730, 7731, 7730, 7731, 7732, 7733, 3578, 7735, 7736, 7737, 7738,
+ 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751,
+ 7752, 7753, 7754, 7755, 7756, 7757, 7757, 7758, 7759, 7760, 7761, 7761, 7762,
+ 7763, 7764, 7765, 7766, 7767, 3613, 7769, 7770, 7771, 7772, 7773, 7774, 7775,
+ 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7223, 7223, 7787,
+ 7788, 3635, 7790, 7791, 7792, 7792, 7793, 7794, 7795, 7796, 7796, 7797, 7798,
+ 7799, 7800, 7800, 7801, 7802, 7803, 7804, 7804, 7805, 7806, 7807, 7808, 7808,
+ 7809, 7810, 7811, 7812, 7812, 7813, 7814, 3662, 7816, 7817, 7818, 7818, 7819,
+ 7820, 7821, 7822, 7822, 7823, 7824, 7825, 7826, 7826, 7827, 7828, 3677, 7830,
+ 7831, 7832, 7832, 7833, 7834, 7835, 7836, 7836, 7837, 7838, 7839, 7840, 7840,
+ 7841, 7842, 7843, 7844, 7844, 7845, 7846, 7847, 7829, 7815, 7789, 512, 762,
+ 763, 764, 765, 7848, 7849, 7850, 7851, 7848, 7849, 7850, 7851, 7852, 7853,
+ 7854, 7855, 7855, 7856, 7857, 7858, 7859, 7859, 7860, 7861, 7862, 7863, 7863,
+ 7864, 7865, 7866, 7867, 7867, 7868, 7869, 7870, 7786, 7768, 7871, 7871, 7872,
+ 7873, 7874, 7875, 7876, 7877, 7877, 7878, 7879, 7880, 7734, 7881, 7882, 7881,
+ 7882, 7883, 7884, 3734, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7892, 7893,
+ 7894, 3745, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906,
+ 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919,
+ 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7926, 7927, 7928, 7929, 7895, 7930,
+ 7931, 7930, 7931, 7932, 7933, 3785, 7935, 7936, 7937, 7937, 7938, 7939, 7940,
+ 7941, 7941, 7942, 7943, 7944, 7945, 7945, 7946, 7947, 7948, 7949, 7949, 7950,
+ 7951, 7952, 7953, 7953, 7954, 7955, 7956, 7957, 7958, 7959, 7960, 7961, 7962,
+ 7963, 3816, 7965, 7966, 7967, 7967, 7968, 7969, 7970, 7971, 7971, 7972, 7973,
+ 7974, 7975, 7975, 7976, 7977, 7978, 7979, 7979, 7980, 7981, 7982, 7983, 7983,
+ 7984, 7985, 7986, 7987, 7987, 7988, 7989, 7990, 7991, 7991, 7992, 7993, 7994,
+ 7995, 7995, 7996, 7997, 7998, 7999, 7999, 8000, 8001, 8002, 8003, 8003, 8004,
+ 8005, 8006, 8007, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 3867, 8015, 8016,
+ 8017, 8017, 8018, 8019, 8020, 8021, 8021, 8022, 8023, 8024, 8025, 8025, 8026,
+ 8027, 8028, 8029, 8029, 8030, 8031, 8032, 8033, 8033, 8034, 8035, 8036, 8037,
+ 8037, 8038, 8039, 8040, 8041, 8041, 8042, 8043, 8044, 8045, 8045, 8046, 8047,
+ 8048, 8049, 8049, 8050, 8051, 8052, 8053, 8053, 8054, 8055, 8056, 8057, 8058,
+ 8059, 7032, 8061, 8062, 8063, 8064, 8065, 8065, 8066, 8067, 8068, 8069, 8069,
+ 8070, 8071, 8072, 8073, 8073, 8074, 8075, 8076, 8077, 8077, 8078, 8079, 8080,
+ 8081, 8081, 8082, 8083, 8084, 8085, 8085, 8086, 8087, 8088, 8089, 8089, 8090,
+ 8091, 8092, 8060, 8014, 8093, 8093, 8094, 8095, 8096, 8097, 3952, 8099, 8100,
+ 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8098, 7964, 8109, 8109, 8110,
+ 8111, 8112, 8113, 8114, 8115, 8115, 8116, 8117, 3973, 8119, 8120, 8121, 8121,
+ 8122, 8123, 8124, 8125, 8125, 8126, 8127, 8128, 8129, 8129, 8130, 8131, 8132,
+ 8133, 8133, 8134, 8135, 8136, 8137, 8137, 8138, 8139, 8140, 8141, 8141, 8142,
+ 8143, 4000, 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155,
+ 8155, 8156, 8157, 8158, 8159, 8159, 8160, 8161, 4019, 8163, 8164, 8165, 8165,
+ 8166, 8167, 8168, 8169, 8169, 8170, 8171, 8172, 8173, 8173, 8174, 8175, 8176,
+ 8177, 8177, 8178, 8179, 4038, 8181, 4041, 8183, 8184, 8182, 8185, 8185, 8186,
+ 8186, 8187, 8188, 8189, 8190, 8191, 8192, 4053, 8194, 4056, 8196, 8197, 8195,
+ 8198, 8198, 8199, 8199, 8200, 8201, 8202, 8203, 8204, 8205, 8206, 8193, 1008,
+ 8207, 8208, 8209, 8210, 8211, 8212, 8212, 8213, 8214, 8215, 8180, 8216, 8217,
+ 8216, 8217, 8218, 8219, 4082, 8221, 8222, 8223, 8224, 8225, 8226, 8227, 8228,
+ 8229, 4093, 8231, 8232, 8233, 8233, 8234, 8235, 8236, 8237, 8237, 8238, 8239,
+ 8240, 8241, 8241, 8242, 8243, 8244, 8245, 8245, 8246, 8247, 8248, 8249, 8249,
+ 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8230, 8258, 8257, 8259, 8260, 8261,
+ 8262, 8262, 8263, 8264, 8265, 8266, 8266, 8267, 8268, 8269, 8270, 8270, 8271,
+ 8272, 8273, 8274, 8274, 8275, 8276, 8277, 8278, 8278, 8279, 8280, 8281, 8282,
+ 8282, 8283, 8284, 8285, 8220, 8162, 8144, 8118, 7934, 7885, 7668, 7583, 7565,
+ 7497, 7486, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296,
+ 8297, 8286, 8287, 8288, 8289, 8290, 8291, 8292, 8293, 8294, 8295, 8296, 8297,
+ 8298, 8299, 4164, 8301, 8302, 8303, 8303, 8304, 8305, 8306, 8307, 8307, 8308,
+ 8309, 8310, 8311, 8311, 8312, 8313, 8314, 8315, 8315, 8316, 8317, 8318, 8319,
+ 8319, 8320, 8321, 8322, 8300, 7435, 7328, 7310, 8323, 8324, 8325, 8326, 8327,
+ 8323, 8324, 8325, 8326, 8327, 8328, 8329, 4195, 8331, 8332, 8333, 8333, 8334,
+ 8335, 4202, 8337, 4205, 8339, 4208, 8341, 4211, 8343, 4214, 8345, 4217, 8347,
+ 4220, 8349, 4223, 8351, 4226, 8353, 4229, 8355, 8356, 8357, 8357, 8358, 8359,
+ 8360, 8361, 8361, 8362, 8363, 8364, 8365, 8365, 8366, 8367, 4244, 8369, 4247,
+ 8371, 4250, 8373, 4253, 8375, 4256, 8377, 8378, 8376, 8374, 8372, 8370, 8368,
+ 8354, 8352, 8350, 8348, 8346, 8344, 8342, 8340, 8338, 8336, 8379, 8380, 8381,
+ 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, 8392, 8393, 8394,
+ 8379, 8380, 8381, 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391,
+ 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8399, 8400, 4282, 8402, 8403, 8404,
+ 8404, 8405, 8406, 8407, 8408, 8408, 8409, 8410, 8411, 8412, 8412, 8413, 8414,
+ 8415, 8416, 8416, 8417, 8418, 8419, 8420, 8420, 8421, 8422, 8423, 8401, 8424,
+ 8425, 8424, 8425, 8426, 8427, 4310, 8429, 8430, 8431, 8431, 8432, 8433, 8434,
+ 8435, 8435, 8436, 8437, 8438, 8439, 8439, 8440, 8441, 8442, 8443, 8444, 8445,
+ 8446, 8447, 8448, 8449, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458,
+ 8459, 8460, 8461, 4345, 8463, 8464, 8465, 8465, 8466, 8467, 8468, 8469, 8469,
+ 8470, 8471, 8472, 8473, 8473, 8474, 8475, 8476, 8477, 8478, 8479, 8480, 8481,
+ 8482, 8483, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8491, 8492, 8493, 8494,
+ 8495, 8496, 8462, 8497, 8497, 8498, 8498, 8499, 8500, 4385, 8502, 8503, 8504,
+ 8504, 8505, 8506, 8507, 8508, 8508, 8509, 8510, 8511, 8512, 8512, 8513, 8514,
+ 8515, 8516, 8517, 8518, 8519, 8520, 8521, 8522, 8523, 8524, 8525, 8526, 8527,
+ 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8536, 8537, 8538, 4424,
+ 8540, 8541, 8542, 8542, 8543, 8544, 8545, 8546, 8546, 8547, 8548, 8549, 8550,
+ 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8561, 8562,
+ 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 4459, 8574, 8575,
+ 8576, 8576, 8577, 8578, 8579, 8580, 8580, 8581, 8582, 8583, 8584, 8584, 8585,
+ 8586, 8587, 8588, 8589, 8590, 8591, 8592, 8593, 8594, 8595, 8596, 8597, 8598,
+ 8599, 8600, 8601, 8602, 8603, 8604, 8605, 8606, 8607, 8573, 8609, 8609, 8608,
+ 8608, 8610, 8611, 4499, 8613, 8614, 8615, 8615, 8616, 8617, 8618, 8619, 8619,
+ 8620, 8621, 8622, 8623, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631,
+ 8632, 8633, 8634, 8635, 8636, 8637, 8638, 8639, 8640, 8641, 8642, 8643, 8644,
+ 8645, 8646, 8647, 8647, 8648, 8649, 4538, 8651, 8652, 8653, 8653, 8654, 8655,
+ 8656, 8657, 8657, 8658, 8659, 8660, 8661, 8661, 8662, 8663, 8664, 8665, 8666,
+ 8667, 8668, 8669, 8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679,
+ 8680, 8681, 8682, 8683, 8684, 8685, 8685, 8686, 8687, 8688, 8689, 8689, 8690,
+ 8691, 8692, 8693, 8693, 8694, 8695, 8696, 8697, 8697, 8698, 8699, 8700, 8701,
+ 8701, 8702, 8703, 8704, 8705, 8705, 8706, 8707, 8708, 8709, 8709, 8710, 8711,
+ 8712, 8713, 8713, 8714, 8715, 8716, 8717, 8717, 8718, 8719, 8720, 8721, 8721,
+ 8722, 8723, 8724, 8725, 8725, 8726, 8727, 4617, 8729, 8730, 8731, 8731, 8732,
+ 8733, 8734, 8735, 8735, 8736, 8737, 8738, 8739, 8739, 8740, 8741, 8742, 8743,
+ 8744, 8745, 8746, 8747, 8748, 8749, 8750, 8751, 8752, 8753, 8754, 8755, 8756,
+ 8757, 8758, 8759, 8760, 8761, 4652, 8763, 8764, 8765, 8765, 8766, 8767, 8768,
+ 8769, 8769, 8770, 8771, 8772, 8773, 8773, 8774, 8775, 8776, 8777, 8778, 8779,
+ 8780, 8781, 8782, 8783, 8784, 8785, 8786, 8787, 8788, 8789, 8790, 8791, 8792,
+ 8793, 8794, 8795, 8796, 8762, 8728, 8797, 8798, 8799, 8797, 8798, 8799, 8800,
+ 8801, 4693, 8803, 8804, 8805, 8805, 8806, 8807, 8808, 8809, 8809, 8810, 8811,
+ 8812, 8813, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8821, 8822,
+ 8823, 4716, 8825, 8826, 8827, 8827, 8828, 8829, 8830, 8831, 8831, 8832, 8833,
+ 8834, 8835, 8835, 8836, 8837, 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845,
+ 8846, 8847, 8848, 8849, 8850, 8851, 8851, 8852, 8853, 8854, 8855, 8855, 8856,
+ 8857, 8858, 8859, 8859, 8860, 8861, 8862, 8863, 8863, 8864, 8865, 8497, 8497,
+ 8867, 8868, 8609, 8609, 8870, 8871, 4765, 8873, 8874, 8875, 8875, 8876, 8877,
+ 8878, 8879, 8879, 8880, 8881, 8882, 8883, 8883, 8884, 8885, 8886, 8887, 8888,
+ 8889, 8890, 8891, 8892, 8893, 8894, 8895, 8896, 8897, 8898, 8899, 8900, 8901,
+ 8902, 8903, 8903, 8904, 8905, 8906, 8872, 8869, 8866, 8824, 8802, 8650, 8612,
+ 8539, 8501, 8428, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, 8916,
+ 8917, 8907, 8908, 8909, 8910, 8911, 8912, 8913, 8914, 8915, 8916, 8917, 8918,
+ 8919, 8920, 8921, 8922, 8923, 92, 8924, 8925, 8925, 8926, 8927, 8928, 8929,
+ 8929, 8930, 8931, 8932, 8933, 8933, 8934, 8935, 8936, 8937, 8937, 8938, 8939,
+ 4834, 8941, 8942, 8943, 8944, 8945, 8946, 8947, 8948, 8949, 8950, 8951, 8952,
+ 8953, 8954, 8955, 8955, 8956, 8957, 8958, 8959, 8959, 8960, 8961, 4857, 8963,
+ 8964, 8965, 8966, 8967, 8968, 8969, 8970, 8971, 8972, 8973, 8974, 8975, 8976,
+ 8977, 8977, 8978, 8979, 8980, 8981, 8981, 8982, 8983, 4880, 8985, 4883, 8987,
+ 4886, 8989, 8990, 8991, 8991, 8992, 8993, 8994, 8988, 8986, 8995, 7554, 8996,
+ 8997, 8995, 7554, 8996, 8997, 8998, 8999, 9000, 7552, 7552, 9001, 9002, 9003,
+ 9004, 9005, 9005, 9006, 9007, 7530, 9009, 9010, 9011, 9012, 9012, 9013, 9014,
+ 9015, 9016, 9016, 9017, 9018, 9019, 9020, 9020, 9021, 9022, 9023, 9024, 9025,
+ 9026, 9027, 9028, 9028, 9029, 9030, 9031, 9032, 9032, 9033, 9034, 9035, 9036,
+ 9036, 9037, 9038, 9039, 9040, 9040, 9041, 9042, 9043, 9044, 9044, 9045, 9046,
+ 9047, 9048, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9056, 9057,
+ 9058, 9059, 9060, 9060, 9061, 9062, 9063, 9064, 9064, 9065, 9066, 9067, 9068,
+ 9068, 9069, 9070, 9071, 9072, 9072, 9073, 9074, 9075, 9076, 9076, 9077, 9078,
+ 9079, 9080, 9081, 9082, 9083, 9084, 9084, 9085, 9086, 9087, 9088, 9088, 9089,
+ 9090, 9091, 9092, 9092, 9093, 9094, 9095, 9096, 9096, 9097, 9098, 9099, 9100,
+ 9101, 9102, 9103, 9104, 9104, 9105, 9106, 9107, 9108, 9108, 9109, 9110, 9111,
+ 9112, 9112, 9113, 9114, 9115, 9116, 9116, 9117, 9118, 9119, 9120, 9121, 9122,
+ 9123, 9124, 9124, 9125, 9126, 9127, 9128, 9128, 9129, 9130, 9131, 9132, 9132,
+ 9133, 9134, 9135, 9136, 9136, 9137, 9138, 9139, 9140, 9140, 9141, 9142, 9143,
+ 9144, 9144, 9145, 9146, 9147, 9008, 8984, 8962, 8940, 9148, 9149, 9150, 9151,
+ 9152, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 7741, 9156, 9157, 9158, 9159,
+ 9160, 9161, 9162, 9163, 9164, 9165, 9166, 9167, 9168, 9169, 9170, 9171, 9172,
+ 9173, 9174, 543, 543, 9175, 7576, 9176, 9177, 49, 8964, 9179, 9179, 9180,
+ 9181, 9182, 9183, 9183, 9184, 9185, 9186, 9187, 9187, 9188, 9189, 9190, 9178,
+ 9191, 9192, 9191, 9192, 9193, 9194, 7664, 9196, 9197, 9198, 9199, 7844, 9199,
+ 7844, 9200, 9201, 5101, 9203, 5104, 9205, 9206, 9204, 749, 1008, 9207, 9208,
+ 9209, 9210, 5112, 9212, 48, 9213, 49, 9211, 594, 765, 951, 1564, 9214, 9215,
+ 9216, 9217, 5120, 9219, 5123, 9221, 5126, 9223, 5129, 9225, 5132, 9227, 5135,
+ 9229, 5138, 9231, 5141, 9233, 5144, 9235, 9236, 9234, 9232, 9230, 9228, 9226,
+ 9224, 9222, 9220, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246,
+ 9247, 5159, 9249, 9250, 9251, 9252, 9253, 5166, 9255, 9256, 9257, 9258, 9259,
+ 9260, 9254, 9248, 9261, 9262, 9263, 9264, 9265, 5179, 9267, 5182, 9269, 43,
+ 9270, 2, 9268, 9266, 9218, 340, 512, 763, 764, 1086, 9271, 9272, 9273, 9274,
+ 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9282, 9283, 9284, 9285, 9286,
+ 9286, 9287, 9288, 5204, 9290, 5207, 9292, 5210, 9294, 5213, 9296, 5216, 9298,
+ 5219, 9300, 5222, 9302, 9303, 9301, 9299, 9297, 9295, 9293, 9291, 9304, 9305,
+ 9306, 9307, 9308, 9309, 9310, 9311, 9312, 5235, 9314, 5238, 9316, 5241, 9318,
+ 5244, 9320, 5247, 9322, 9323, 9321, 9319, 9317, 9315, 7282, 9324, 9325, 9326,
+ 9327, 9328, 9329, 9330, 5258, 9332, 5261, 9334, 5264, 9336, 5267, 9338, 9339,
+ 268, 1738, 9340, 9341, 9342, 5274, 9344, 9345, 9343, 9337, 9335, 9333, 9346,
+ 9347, 9348, 9349, 9350, 9351, 9352, 5285, 9354, 9355, 9356, 9357, 9358, 5292,
+ 9360, 9361, 9362, 9363, 9364, 5299, 9366, 5302, 9368, 5305, 9370, 5308, 9372,
+ 9373, 9371, 9369, 9367, 9365, 9359, 9374, 9375, 9376, 9377, 9378, 9379, 9380,
+ 9381, 5320, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9382,
+ 9353, 9331, 9313, 9393, 9394, 9395, 9396, 9397, 9398, 9399, 5339, 9401, 9402,
+ 9403, 9404, 9405, 9406, 1810, 9407, 9408, 9409, 5350, 9411, 9412, 9413, 9414,
+ 9415, 9416, 474, 475, 476, 9417, 9418, 9419, 9420, 9410, 7363, 7689, 9421,
+ 9422, 9423, 9424, 5366, 9426, 5369, 9428, 9429, 9430, 9431, 9432, 9433, 9434,
+ 9435, 9436, 9437, 9427, 457, 7371, 9438, 9439, 9440, 9441, 5385, 9443, 9444,
+ 229, 9445, 9446, 9447, 5392, 9449, 5395, 9451, 5398, 9453, 5401, 9455, 9456,
+ 9454, 9452, 9450, 9457, 9458, 9459, 9460, 9461, 9462, 9463, 9448, 7377, 9464,
+ 9465, 9466, 9467, 5416, 9469, 5419, 9471, 5422, 9473, 9474, 9472, 9470, 502,
+ 9475, 9476, 9477, 9478, 9479, 5431, 9481, 9482, 9483, 9484, 9485, 5438, 9487,
+ 5441, 9489, 9490, 9488, 9491, 9492, 9493, 9494, 5449, 9496, 9497, 9498, 9499,
+ 9500, 5456, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9501,
+ 9495, 9486, 9480, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 5475, 9520, 9521,
+ 9522, 9523, 9524, 9525, 9526, 9527, 9528, 5486, 9530, 5489, 9532, 5492, 9534,
+ 5495, 9536, 9537, 9535, 9533, 9531, 9538, 9539, 9540, 9541, 9542, 9543, 9544,
+ 9545, 9546, 9547, 9548, 9529, 9549, 9550, 9551, 9552, 5514, 9554, 5517, 9556,
+ 9557, 9555, 7389, 9558, 9559, 9560, 9561, 5525, 9563, 5528, 9565, 5531, 9567,
+ 5534, 9569, 12, 9570, 245, 247, 248, 249, 250, 251, 448, 515, 9571, 9572,
+ 9573, 5541, 9575, 5544, 9577, 9578, 9576, 9574, 9568, 9566, 9564, 7404, 9579,
+ 9580, 9581, 9582, 9583, 9584, 9585, 9586, 5556, 9588, 5559, 9590, 5562, 9592,
+ 9593, 72, 9591, 73, 9589, 263, 9594, 9595, 9596, 9597, 9598, 5571, 9600,
+ 5574, 9602, 5577, 9604, 5580, 9606, 9607, 195, 951, 2024, 2026, 2027, 2028,
+ 9608, 9609, 9610, 5587, 9612, 5590, 9614, 5593, 9616, 9617, 9615, 9613, 9611,
+ 9605, 9603, 9601, 9599, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9625, 9626,
+ 9627, 9628, 9587, 9562, 9553, 9519, 9468, 9442, 9425, 9400, 1611, 7721, 7721,
+ 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639, 7418, 7419,
+ 9641, 9642, 2075, 9644, 2076, 9646, 9647, 9645, 9648, 9649, 9650, 9651, 2080,
+ 9653, 2081, 9655, 2082, 9657, 2083, 9659, 9660, 9658, 9656, 9654, 9661, 9662,
+ 9663, 9664, 9665, 9666, 2089, 9668, 2090, 9670, 9671, 9669, 9672, 9673, 9674,
+ 9675, 2094, 9677, 2095, 9679, 9680, 9678, 9681, 9682, 9683, 9684, 2099, 9686,
+ 9687, 9688, 9689, 9690, 2102, 9692, 2103, 9694, 2104, 9696, 9697, 9695, 9693,
+ 9698, 9699, 9700, 9701, 9702, 2109, 9704, 2110, 9706, 2111, 9708, 2112, 9710,
+ 2113, 9712, 2114, 9714, 2115, 9716, 9717, 9715, 9713, 9711, 9709, 9707, 9705,
+ 9718, 9719, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 2124, 9728, 2125, 9730,
+ 2126, 9732, 2127, 9734, 2128, 9736, 2129, 9738, 2130, 9740, 2131, 9742, 9743,
+ 9741, 9739, 9737, 9735, 9733, 9731, 9729, 9744, 9745, 9746, 9747, 9748, 9749,
+ 9750, 9751, 9752, 9753, 9754, 9727, 9703, 9691, 9685, 9676, 9667, 9652, 9755,
+ 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 2150, 9766, 2151, 9768,
+ 2152, 9770, 2153, 9772, 2154, 9774, 2155, 9776, 2156, 9778, 9779, 9777, 9775,
+ 9773, 9771, 9769, 9767, 9780, 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788,
+ 2165, 9790, 2166, 9792, 2167, 9794, 2168, 9796, 2169, 9798, 2170, 9800, 9801,
+ 9799, 9797, 9795, 9793, 9791, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809,
+ 2178, 9811, 2179, 9813, 2180, 9815, 2181, 9817, 2182, 9819, 9820, 9818, 9816,
+ 9814, 9812, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 2189, 9829, 2190, 9831,
+ 2191, 9833, 2192, 9835, 9836, 9834, 9832, 9830, 9837, 9838, 9839, 9840, 9841,
+ 9842, 9843, 9828, 9810, 9789, 9844, 9845, 9846, 9847, 9848, 9849, 2203, 9851,
+ 9852, 9853, 9854, 9855, 2206, 9857, 2207, 9859, 2208, 9861, 2209, 9863, 9864,
+ 9862, 9860, 9858, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9856, 9872, 9873,
+ 9874, 9875, 2218, 9877, 2219, 9879, 2220, 9881, 9882, 9880, 9878, 9883, 9884,
+ 9885, 9886, 9887, 2225, 9889, 9890, 9891, 9892, 9893, 2228, 9895, 2229, 9897,
+ 9898, 9896, 9899, 9900, 9901, 9902, 2233, 9904, 9905, 9906, 9907, 9908, 9909,
+ 9903, 9894, 9888, 9910, 9911, 9912, 9913, 9914, 9915, 2241, 9917, 9918, 9919,
+ 9920, 9921, 9922, 9923, 9924, 9925, 2246, 9927, 2247, 9929, 2248, 9931, 9932,
+ 9930, 9928, 9933, 9934, 9935, 9936, 9937, 2253, 9939, 9940, 9941, 9942, 9943,
+ 9944, 9938, 9945, 9946, 9947, 9948, 9949, 9926, 9916, 9876, 9850, 9765, 9950,
+ 9951, 9952, 9953, 9954, 9955, 9956, 9957, 2266, 9959, 9960, 9961, 9962, 9963,
+ 9964, 9965, 9966, 9967, 2271, 9969, 9970, 9971, 9972, 9973, 2274, 9975, 9976,
+ 9977, 9978, 9979, 9980, 9974, 9981, 9982, 9983, 9984, 2280, 9986, 9987, 9988,
+ 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9985, 9968, 9996, 9997, 9998, 9999,
+ 10000, 2289, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010,
+ 2294, 10012, 10013, 10014, 10015, 10016, 10017, 10018, 10019, 10020, 10021,
+ 10011, 10022, 10023, 10024, 10025, 2302, 10027, 10028, 10029, 10030, 10031,
+ 10032, 10033, 10034, 10035, 10036, 10037, 10038, 10039, 2309, 10041, 10042,
+ 10043, 10044, 10045, 10046, 10047, 10048, 10049, 10050, 10051, 10052, 10053,
+ 2316, 10055, 10056, 10057, 10058, 10059, 10060, 10061, 10062, 10063, 2321,
+ 10065, 2322, 10067, 2323, 10069, 2324, 10071, 10072, 10070, 10068, 10066,
+ 10073, 10074, 10075, 10076, 10077, 10078, 10079, 10080, 10081, 10082, 10083,
+ 10064, 10084, 10085, 10086, 10087, 10088, 10054, 10040, 10026, 10001, 9958,
+ 10089, 10090, 10091, 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10098,
+ 10099, 10100, 10101, 10102, 10102, 10103, 10104, 10105, 10106, 10106, 10107,
+ 10108, 10109, 10110, 10110, 10111, 10112, 10113, 9643, 9640, 10114, 10114,
+ 10115, 7424, 7425, 7426, 7427, 7428, 7725, 7726, 7431, 10116, 10117, 10118,
+ 10119, 10120, 10120, 10121, 10122, 6102, 10124, 10125, 10126, 10127, 10128,
+ 10129, 10130, 10130, 10131, 10132, 10133, 10134, 10134, 10135, 10136, 10137,
+ 10138, 10138, 10139, 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147,
+ 10148, 10149, 10150, 10151, 10152, 10153, 10154, 10155, 10156, 10157, 10158,
+ 10159, 10160, 6141, 10162, 10163, 10164, 10165, 10166, 10167, 10168, 10168,
+ 10169, 10170, 10171, 10172, 10172, 10173, 10174, 10175, 10176, 10176, 10177,
+ 10178, 10179, 10180, 10180, 10181, 10182, 10183, 10184, 10184, 10185, 10186,
+ 10187, 10188, 10189, 10190, 10191, 10192, 10193, 10194, 10195, 10196, 10197,
+ 10198, 10199, 10200, 10201, 10202, 10203, 10204, 10205, 10206, 10207, 10208,
+ 10208, 10209, 10210, 10211, 10212, 10212, 10213, 10214, 10215, 10216, 10216,
+ 10217, 10218, 10219, 10220, 10220, 10221, 10222, 10223, 10224, 10224, 10225,
+ 10226, 10227, 10228, 10228, 10229, 10230, 10231, 10232, 10232, 10233, 10234,
+ 10235, 749, 750, 10236, 10237, 10238, 6220, 10240, 10241, 10242, 10243, 10244,
+ 10245, 10246, 10246, 10247, 10248, 10249, 10250, 10250, 10251, 10252, 10253,
+ 10254, 10254, 10255, 10256, 10257, 10258, 10258, 10259, 10260, 10261, 10262,
+ 10262, 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10270, 10271,
+ 10272, 10273, 10274, 10274, 10275, 10276, 10277, 10278, 10278, 10279, 10280,
+ 10281, 10282, 10282, 10283, 10284, 10285, 10286, 10286, 10287, 10288, 10289,
+ 10290, 10290, 10291, 10292, 10293, 10294, 10294, 10295, 10296, 10297, 10298,
+ 10299, 10300, 43, 10301, 44, 10239, 340, 763, 764, 765, 782, 791, 1086, 10302,
+ 10303, 10304, 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313,
+ 10314, 10315, 10316, 10317, 10318, 10319, 10320, 10321, 6304, 10323, 6307,
+ 10325, 6310, 10327, 6313, 10329, 6316, 10331, 10332, 10330, 10328, 10326,
+ 10324, 10334, 10333, 10335, 10336, 10337, 10338, 10339, 10340, 314, 9498,
+ 10341, 10342, 10343, 10344, 10345, 10346, 10347, 10348, 10349, 10349, 10350,
+ 10351, 10352, 10322, 10161, 10353, 10353, 10354, 10355, 10356, 10357, 6345,
+ 10359, 10360, 10361, 10361, 10362, 10363, 10364, 10365, 10366, 10367, 10368,
+ 10369, 10370, 10371, 10372, 10373, 10374, 10375, 6364, 10377, 10378, 10379,
+ 10380, 10381, 10382, 10383, 10384, 10385, 10386, 10387, 10388, 10389, 10390,
+ 10391, 10392, 10393, 10394, 10395, 10395, 10396, 10397, 10398, 10399, 10399,
+ 10400, 10401, 10402, 10403, 10403, 10404, 10405, 10406, 10407, 10408, 10409,
+ 10410, 10411, 10412, 10413, 10414, 10415, 10416, 10417, 6407, 10419, 10420,
+ 10421, 10422, 10423, 10424, 10425, 10426, 10427, 10428, 10429, 10430, 10431,
+ 10432, 750, 10433, 10434, 10435, 6426, 10437, 10438, 10439, 10440, 10441,
+ 10442, 10443, 10444, 10445, 10446, 10447, 10448, 10449, 10450, 10451, 10452,
+ 10453, 6445, 10455, 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463,
+ 10464, 10465, 10466, 10467, 10468, 10469, 10470, 10471, 6464, 10473, 10474,
+ 10475, 10476, 10477, 10478, 10479, 10480, 10481, 10482, 10483, 10484, 10485,
+ 10486, 10487, 10488, 10489, 6483, 10491, 10492, 10493, 10494, 10495, 10496,
+ 10497, 10498, 10499, 10500, 10501, 10502, 10503, 10504, 10505, 10506, 10507,
+ 6502, 10509, 10510, 10511, 10512, 10513, 10514, 10515, 10516, 10517, 10518,
+ 10519, 10520, 10521, 10522, 10523, 10524, 10525, 6521, 10527, 10528, 10529,
+ 10530, 10531, 10532, 10533, 10534, 10535, 10536, 10537, 10538, 10539, 10540,
+ 10541, 10542, 10543, 10334, 10545, 10546, 10547, 10548, 10549, 10550, 10551,
+ 10552, 10553, 10554, 10555, 10556, 10557, 10558, 6555, 10560, 10561, 10562,
+ 10563, 10564, 10565, 10566, 10567, 10568, 10569, 10570, 10571, 10572, 10573,
+ 10574, 10575, 10576, 40, 10577, 48, 10559, 49, 10544, 50, 10526, 3, 10508,
+ 41, 10490, 42, 10472, 43, 10454, 44, 10436, 10578, 10579, 10580, 10581, 10582,
+ 10583, 10584, 10585, 10586, 10587, 10588, 10589, 10590, 10591, 10592, 10593,
+ 10594, 10595, 10596, 10597, 10598, 10599, 10600, 10601, 10602, 10603, 10604,
+ 10605, 10418, 10606, 10607, 10608, 10609, 10610, 10376, 10358, 10611, 10612,
+ 10613, 10614, 10615, 10616, 10617, 10617, 10618, 10619, 10620, 10123, 9289,
+ 10621, 10622, 10623, 10621, 10622, 10623, 10624, 10625, 6623, 10627, 10628,
+ 10629, 10630, 10631, 10632, 10633, 10634, 10635, 10636, 10637, 10638, 10639,
+ 10640, 10641, 10641, 10642, 10643, 10644, 10645, 10646, 10647, 10648, 10649,
+ 10649, 10650, 10651, 10652, 10653, 10653, 10654, 10655, 7888, 10657, 10658,
+ 10659, 10660, 10661, 10662, 6661, 10664, 10665, 10666, 10666, 10667, 10668,
+ 10669, 10670, 10670, 10671, 10672, 10673, 10663, 10674, 10675, 10674, 10675,
+ 10676, 10677, 6677, 10679, 10680, 10681, 10682, 10683, 10684, 10685, 10686,
+ 10687, 10688, 10689, 10690, 10691, 10692, 10693, 10694, 10695, 6696, 10697,
+ 10698, 10699, 10700, 10701, 10702, 10703, 10704, 10705, 10706, 10707, 10708,
+ 10709, 10710, 10711, 10712, 10713, 10714, 10715, 10716, 10717, 10718, 10719,
+ 10720, 10721, 10722, 10723, 10724, 10725, 10726, 10727, 10728, 10729, 10730,
+ 10731, 10732, 10733, 10734, 10735, 10735, 10736, 10737, 10738, 10696, 10740,
+ 10739, 10740, 10741, 10742, 10743, 10678, 10744, 10745, 10744, 10745, 10746,
+ 10747, 6749, 10749, 10750, 512, 762, 763, 764, 765, 10751, 10752, 10753,
+ 10754, 10755, 10755, 10756, 10757, 10758, 10759, 10759, 10760, 10761, 10762,
+ 10763, 10763, 10764, 10765, 10766, 512, 762, 763, 764, 765, 10767, 10767,
+ 10768, 10769, 7417, 10771, 10772, 6775, 10774, 10775, 10776, 10776, 10777,
+ 10778, 10779, 10780, 10780, 10781, 10782, 10783, 10784, 10784, 10785, 10786,
+ 10787, 10788, 10788, 10789, 10790, 10791, 10773, 10793, 10792, 10794, 10795,
+ 10796, 10797, 10797, 10798, 10799, 6803, 10801, 10802, 10803, 10803, 10804,
+ 10805, 10806, 10807, 10807, 10808, 10809, 10810, 10811, 10811, 10812, 10813,
+ 10814, 10815, 10816, 10817, 10818, 10819, 10820, 10821, 10822, 10823, 10824,
+ 10825, 10826, 10827, 10828, 10829, 10830, 10831, 10832, 10833, 10834, 10835,
+ 10835, 10836, 10837, 10838, 10839, 10839, 10840, 10841, 10842, 10843, 10843,
+ 10844, 10845, 10846, 10847, 10847, 10848, 10849, 10850, 10851, 10851, 10852,
+ 10853, 10854, 10855, 10855, 10856, 10857, 10858, 10859, 10859, 10860, 10861,
+ 10862, 10863, 10863, 10864, 10865, 10866, 10867, 10867, 10868, 10869, 10870,
+ 10871, 10871, 10872, 10873, 10874, 10875, 10875, 10876, 10877, 10878, 10879,
+ 10879, 10880, 10881, 10882, 10883, 10884, 10885, 10886, 10887, 10887, 10888,
+ 10889, 674, 7656, 7656, 10891, 10892, 8129, 10894, 10895, 10896, 10897, 10897,
+ 10898, 10899, 10900, 10901, 10901, 10902, 10903, 10904, 10905, 10905, 10906,
+ 10907, 10908, 10909, 10909, 10910, 10911, 8155, 10913, 10914, 10915, 10916,
+ 10916, 10917, 10918, 10919, 10920, 10920, 10921, 10922, 975, 10126, 10924,
+ 10925, 10926, 10927, 10927, 10928, 10929, 7482, 7482, 10931, 10932, 10933,
+ 10934, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 8185, 8186, 8185,
+ 8186, 8190, 10942, 10943, 10944, 10945, 10946, 10947, 8198, 8199, 8198, 8199,
+ 8203, 10949, 10950, 10951, 10952, 10953, 10954, 10955, 10948, 1008, 10956,
+ 10957, 10958, 10959, 10960, 1008, 10956, 10957, 10961, 10962, 10963, 10964,
+ 10965, 10965, 10966, 10967, 10968, 2, 10941, 10930, 10969, 10970, 10971,
+ 10969, 10970, 10971, 10972, 10973, 10793, 8258, 10975, 10976, 10977, 10978,
+ 10979, 10980, 10981, 10982, 10982, 10983, 10984, 10985, 10986, 10986, 10987,
+ 10988, 10989, 10990, 10990, 10991, 10992, 10993, 10994, 10994, 10995, 10996,
+ 10997, 10998, 10998, 10999, 11000, 11001, 11002, 11002, 11003, 11004, 11005,
+ 10974, 10923, 10912, 10893, 10890, 10800, 10770, 10748, 10656, 10626, 9202,
+ 9195, 9155, 8330, 7262, 7228, 7041, 10641, 11006, 11007, 11008, 11009, 11010,
+ 11011, 11012, 11013, 11014, 11015, 11016, 11017, 11018, 11019, 11020, 11021,
+ 11022, 10641, 11006, 11007, 11008, 11009, 11010, 11011, 11012, 11013, 11014,
+ 11015, 11016, 11017, 11018, 11019, 11020, 11021, 11022, 7669, 11023, 8061,
+ 6638, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020,
+ 7021, 7022, 7023, 7024, 7025, 6638, 7009, 7010, 7011, 7012, 7013, 7014, 7015,
+ 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 3506, 7026, 3914,
+ 11024, 11025, 2848, 2848, 11027, 11027, 11028, 11028, 11029, 11029, 11030,
+ 11030, 11031, 11031, 11032, 11032, 11033, 11034, 11034, 11035, 11035, 11036,
+ 11036, 11037, 11037, 11038, 11038, 11039, 11039, 11040, 11040, 11041, 11041,
+ 11042, 11043, 11043, 11044, 11044, 2934, 2931, 11046, 11047, 11048, 11049,
+ 11050, 11051, 11052, 11052, 11053, 11054, 11054, 2982, 2982, 11056, 11056,
+ 3004, 11058, 11059, 11060, 11060, 2997, 2997, 11062, 11062, 11061, 11061,
+ 11057, 11057, 11055, 11055, 11045, 11045, 3035, 3035, 11067, 11067, 11068,
+ 11068, 11069, 11069, 11070, 11071, 11072, 11072, 3077, 3070, 3089, 11076,
+ 11074, 11075, 11077, 11078, 11079, 11080, 11080, 11081, 11081, 3121, 3121,
+ 11083, 11083, 11084, 11084, 3162, 3239, 3242, 3245, 3228, 3225, 3222, 3219,
+ 2830, 3216, 3209, 3202, 2823, 3195, 3188, 3176, 3179, 3173, 11086, 3155,
+ 11077, 11078, 3146, 3143, 3140, 3146, 3143, 3140, 11033, 11033, 11097, 11097,
+ 11098, 11098, 11099, 11099, 11100, 11100, 11101, 11101, 11102, 11102, 11103,
+ 11103, 11104, 11104, 11105, 11105, 11062, 11062, 11106, 11106, 11070, 11109,
+ 11109, 3332, 3332, 11111, 11111, 11112, 11112, 11113, 11113, 11114, 11114,
+ 11115, 11115, 11116, 11116, 11117, 11117, 11118, 11118, 11119, 11119, 11120,
+ 11120, 11121, 11121, 3329, 3329, 3383, 3383, 11122, 11122, 11123, 11123,
+ 3400, 11125, 543, 543, 11126, 3419, 3419, 11128, 11128, 11129, 11129, 11130,
+ 11130, 11131, 11131, 11132, 11132, 11133, 11133, 11134, 11134, 11135, 11135,
+ 11136, 11136, 11137, 11137, 11138, 11138, 11139, 11139, 3478, 3478, 11141,
+ 11141, 11142, 11142, 11143, 11143, 11144, 11144, 11140, 11140, 2841, 11147,
+ 3514, 3162, 3553, 3553, 11150, 11150, 3242, 3546, 3222, 3225, 3228, 3538,
+ 3535, 3195, 3179, 3176, 3525, 11149, 11090, 11095, 11151, 11151, 11155, 11156,
+ 11152, 11153, 11154, 11148, 11148, 3578, 11159, 11160, 11161, 11162, 11163,
+ 11163, 11164, 11164, 3613, 11166, 11167, 3635, 3635, 11169, 11169, 11170,
+ 11170, 11171, 11171, 11172, 11172, 3662, 3662, 11174, 11174, 3677, 3677,
+ 11176, 11176, 11177, 11177, 11178, 11178, 11175, 11175, 11173, 11173, 11064,
+ 11064, 512, 762, 763, 764, 765, 11179, 11180, 11181, 11182, 11179, 11180,
+ 11181, 11182, 11183, 11183, 11184, 11184, 11185, 11185, 11186, 11186, 11168,
+ 11165, 11187, 11187, 11188, 11189, 11190, 11190, 11157, 11158, 11157, 11158,
+ 3734, 3745, 11194, 11195, 11196, 11197, 11198, 11199, 11200, 11200, 11193,
+ 11193, 3785, 3785, 11203, 11203, 11204, 11204, 11205, 11205, 11206, 11206,
+ 11207, 3816, 3816, 11209, 11209, 11210, 11210, 11211, 11211, 11212, 11212,
+ 11213, 11213, 11214, 11214, 11215, 11215, 11216, 11216, 11217, 11217, 11218,
+ 11218, 3867, 3867, 11220, 11220, 11221, 11221, 11222, 11222, 11223, 11223,
+ 11224, 11224, 11225, 11225, 11226, 11226, 11227, 11227, 11228, 11228, 2823,
+ 11230, 11231, 11231, 11232, 11232, 11233, 11233, 11234, 11234, 11235, 11235,
+ 11236, 11236, 11237, 11237, 11229, 11219, 3952, 11241, 11238, 11238, 11239,
+ 11240, 11208, 11242, 11242, 11243, 11244, 3973, 3973, 11246, 11246, 11247,
+ 11247, 11248, 11248, 11249, 11249, 4000, 11251, 11252, 11252, 4019, 4019,
+ 11254, 11254, 11255, 11255, 4038, 4038, 4041, 4041, 4053, 4053, 4056, 4056,
+ 11258, 11257, 1008, 11259, 11260, 11261, 11261, 11256, 11256, 4082, 4093,
+ 4093, 11265, 11265, 11266, 11266, 11267, 11267, 11268, 11268, 11269, 11264,
+ 11271, 11270, 11272, 11272, 11273, 11273, 11274, 11274, 11275, 11275, 11276,
+ 11276, 11277, 11277, 11262, 11263, 11262, 11263, 11253, 11253, 11250, 11250,
+ 11245, 11245, 11201, 11202, 11201, 11202, 11191, 11192, 11191, 11192, 11145,
+ 11145, 11146, 11146, 11127, 11127, 11124, 11124, 11110, 11110, 11107, 11107,
+ 11108, 11108, 4164, 4164, 11290, 11290, 11291, 11291, 11292, 11292, 11293,
+ 11293, 11278, 11279, 11280, 11281, 11282, 11283, 11284, 11285, 11286, 11287,
+ 11288, 11289, 11278, 11279, 11280, 11281, 11282, 11283, 11284, 11285, 11286,
+ 11287, 11288, 11289, 11088, 11089, 11090, 11091, 11092, 11095, 11087, 11093,
+ 11094, 11096, 11085, 11085, 11082, 11082, 4229, 4229, 11299, 11299, 11300,
+ 11300, 4195, 4195, 4256, 4253, 4250, 4247, 4244, 11301, 4226, 4223, 4220,
+ 4217, 4214, 4211, 4208, 4205, 4202, 11302, 4256, 4253, 4250, 4247, 4244,
+ 11301, 4226, 4223, 4220, 4217, 4214, 4211, 4208, 4205, 4202, 11302, 4282,
+ 4282, 11304, 11304, 11305, 11305, 11306, 11306, 11307, 11307, 11303, 4310,
+ 4310, 11310, 11310, 11311, 11311, 11312, 11313, 11314, 11315, 4345, 4345,
+ 11317, 11317, 11318, 11318, 11319, 11320, 11321, 11322, 11323, 11316, 4385,
+ 4385, 11326, 11326, 11327, 11327, 11328, 11329, 11330, 11331, 11332, 4424,
+ 4424, 11334, 11334, 11335, 11335, 11336, 11337, 11338, 11339, 4459, 4459,
+ 11341, 11341, 11342, 11342, 11343, 11344, 11345, 11346, 11347, 11340, 4499,
+ 4499, 11350, 11350, 11351, 11351, 11352, 11353, 11354, 11355, 11356, 4538,
+ 4538, 11358, 11358, 11359, 11359, 11360, 11361, 11362, 11363, 11364, 11365,
+ 11365, 11366, 11366, 11367, 11367, 11368, 11368, 11369, 11369, 11370, 11370,
+ 11371, 11371, 11372, 11372, 11373, 11373, 11374, 11374, 4617, 4617, 11376,
+ 11376, 11377, 11377, 11378, 11379, 11380, 11381, 4652, 4652, 11383, 11383,
+ 11384, 11384, 11385, 11386, 11387, 11388, 11389, 11382, 11375, 11375, 4693,
+ 4693, 11393, 11393, 11394, 11394, 11395, 4716, 4716, 11397, 11397, 11398,
+ 11398, 11399, 11400, 11401, 11402, 11402, 11403, 11403, 11404, 11404, 4765,
+ 4765, 11406, 11406, 11407, 11407, 11408, 11409, 11410, 11411, 11412, 11412,
+ 11349, 11349, 11324, 11324, 11405, 11405, 11396, 11396, 11390, 11391, 11392,
+ 11390, 11391, 11392, 11357, 11357, 11349, 11349, 11348, 11348, 11333, 11333,
+ 11324, 11324, 11325, 11325, 11308, 11309, 11308, 11309, 11413, 11414, 11415,
+ 11416, 11417, 11418, 11419, 11420, 11421, 11422, 11423, 11413, 11414, 11415,
+ 11416, 11417, 11418, 11419, 11420, 11421, 11422, 11423, 92, 11424, 11425,
+ 11425, 11426, 11426, 11427, 11427, 4834, 11429, 11430, 11431, 11431, 4857,
+ 11433, 11434, 11435, 11435, 4886, 4886, 11437, 3329, 4883, 4880, 11437, 3329,
+ 4883, 4880, 3383, 3383, 11438, 11117, 11440, 11440, 11441, 11441, 11442,
+ 11442, 11443, 11444, 11444, 11445, 11445, 11446, 11446, 11447, 11447, 11448,
+ 11448, 11449, 11449, 11450, 11451, 11451, 11452, 11452, 11453, 11453, 11454,
+ 11454, 11455, 11455, 11456, 11456, 11457, 11458, 11458, 11459, 11459, 11460,
+ 11460, 11461, 11461, 11462, 11463, 11463, 11464, 11464, 11465, 11465, 11466,
+ 11466, 11467, 11468, 11468, 11469, 11469, 11470, 11470, 11471, 11471, 11472,
+ 11472, 11473, 11473, 11439, 11439, 11436, 11436, 11432, 11432, 11428, 11428,
+ 11159, 11479, 11480, 11481, 11482, 49, 782, 11484, 11484, 11485, 11485, 11486,
+ 11486, 543, 543, 11483, 11126, 49, 782, 11489, 11489, 11490, 11490, 11491,
+ 11491, 11145, 48, 543, 750, 49, 749, 1008, 5104, 5101, 5166, 5159, 5144,
+ 5141, 5138, 5135, 5132, 5129, 5126, 5123, 5120, 43, 437, 2, 591, 835, 11496,
+ 11497, 11498, 594, 765, 951, 1564, 11494, 11495, 340, 512, 763, 764, 1086,
+ 11499, 11500, 11501, 11502, 11503, 11504, 11504, 268, 1738, 5267, 5292, 5285,
+ 5320, 11509, 5308, 5305, 5302, 5299, 11507, 11508, 5274, 11506, 5264, 5261,
+ 5258, 3089, 5247, 5244, 5241, 5238, 5235, 5222, 5219, 5216, 5213, 5210, 5207,
+ 5204, 5339, 5350, 474, 475, 476, 11516, 1810, 11515, 5369, 11519, 5401, 5398,
+ 5395, 5392, 229, 5385, 5456, 11523, 5449, 5441, 5438, 5431, 502, 5422, 5419,
+ 5416, 5475, 5495, 5492, 5489, 5486, 11530, 11529, 12, 1964, 245, 247, 248,
+ 249, 250, 251, 448, 515, 11533, 72, 1985, 73, 1982, 1023, 1024, 1025, 195,
+ 951, 2024, 2026, 2027, 2028, 11537, 263, 5562, 11535, 11536, 5593, 5590,
+ 5587, 11538, 5577, 5574, 5571, 11539, 3225, 5544, 5541, 11534, 5531, 5528,
+ 5525, 3209, 5517, 5514, 11531, 11532, 11524, 11525, 11526, 11527, 11528,
+ 3195, 11521, 11522, 457, 3188, 11520, 5366, 3179, 3525, 11517, 11518, 11510,
+ 11511, 11512, 11513, 11514, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124,
+ 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2104, 2103, 2102, 2099, 2095, 2094,
+ 2090, 2089, 2083, 2082, 2081, 2080, 2076, 2075, 2192, 2191, 2190, 2189, 2182,
+ 2181, 2180, 2179, 2178, 2170, 2169, 2168, 2167, 2166, 2165, 2156, 2155, 2154,
+ 2153, 2152, 2151, 2150, 2209, 2208, 2207, 2206, 2203, 2233, 2229, 2228, 2225,
+ 2220, 2219, 2218, 2241, 2253, 2248, 2247, 2246, 11568, 11569, 11567, 11563,
+ 11564, 11565, 11566, 11561, 11562, 11557, 11558, 11559, 11560, 11549, 11550,
+ 11551, 11552, 11553, 11554, 11555, 11556, 2266, 2274, 2271, 2280, 11579,
+ 11577, 11578, 11576, 2289, 2294, 11584, 11583, 2302, 11587, 2309, 11589,
+ 2316, 2324, 2323, 2322, 2321, 11592, 11591, 11593, 11594, 11590, 11588, 11585,
+ 11586, 11580, 11581, 11582, 11570, 11571, 11572, 11573, 11574, 11575, 11595,
+ 11596, 11597, 11598, 11599, 11600, 11601, 11601, 11602, 11602, 11603, 11603,
+ 11604, 11604, 3242, 3239, 1611, 11151, 11151, 11540, 11541, 11542, 11543,
+ 11544, 11545, 11546, 11547, 11548, 11605, 11605, 11606, 11088, 11089, 11090,
+ 11091, 11092, 11155, 11156, 11095, 11607, 6102, 11609, 11609, 11610, 11610,
+ 11611, 11611, 11612, 11613, 11614, 11615, 6141, 11617, 11617, 11618, 11618,
+ 11619, 11619, 11620, 11620, 11621, 11621, 11622, 11623, 11624, 11625, 11626,
+ 11627, 11627, 11628, 11628, 11629, 11629, 11630, 11630, 11631, 11631, 11632,
+ 11632, 11633, 11633, 6220, 11635, 11635, 11636, 11636, 11637, 11637, 11638,
+ 11638, 11639, 11639, 11640, 11641, 11641, 11642, 11642, 11643, 11643, 11644,
+ 11644, 11645, 11645, 11646, 11646, 11647, 11647, 43, 11648, 44, 749, 750,
+ 11634, 340, 763, 764, 765, 782, 791, 1086, 11649, 11650, 11651, 11652, 11653,
+ 6313, 6316, 6310, 6307, 6304, 314, 5449, 11655, 11656, 11657, 11657, 11654,
+ 11616, 6345, 6345, 11661, 11662, 6364, 11664, 11665, 11666, 11667, 11667,
+ 11668, 11668, 11669, 11669, 11670, 11671, 6407, 11673, 11674, 6426, 11676,
+ 11677, 6445, 11679, 11680, 6464, 11682, 11683, 6483, 11685, 11686, 6502,
+ 11688, 11689, 6521, 11691, 11692, 6313, 11694, 11695, 6555, 11697, 11698,
+ 40, 11699, 48, 11696, 49, 11693, 50, 11690, 3, 11687, 41, 11684, 42, 11681,
+ 43, 11678, 44, 750, 11675, 11700, 11701, 11702, 11703, 11704, 11705, 11706,
+ 11707, 11708, 11709, 11710, 11711, 11712, 11672, 11713, 11714, 11663, 11658,
+ 11658, 11659, 11660, 11715, 11716, 11717, 791, 791, 11719, 11719, 11720,
+ 11720, 674, 11722, 11722, 11723, 11723, 11724, 11724, 11725, 11725, 11726,
+ 11726, 11727, 11721, 11721, 11718, 11718, 11608, 11608, 11505, 11505, 6623,
+ 11733, 11734, 11735, 11735, 11736, 11737, 11737, 3734, 6661, 6661, 11740,
+ 11740, 11739, 6677, 11743, 11744, 6696, 11746, 11747, 11748, 11749, 11750,
+ 11751, 11752, 11753, 11754, 11754, 11745, 11756, 11755, 11756, 11741, 11742,
+ 11741, 11742, 512, 762, 763, 764, 765, 6749, 11759, 11759, 11760, 11760,
+ 11761, 11761, 6775, 6775, 11763, 11763, 11764, 11764, 11765, 11765, 3245,
+ 11767, 11766, 6803, 6803, 11769, 11769, 11770, 11770, 11771, 11772, 11773,
+ 11774, 11775, 11776, 11776, 11777, 11777, 11778, 11778, 11779, 11779, 11780,
+ 11780, 11781, 11781, 11782, 11782, 11783, 11783, 11784, 11784, 11785, 11785,
+ 11786, 11786, 11787, 11787, 11788, 1564, 11790, 11791, 11792, 11793, 11793,
+ 11793, 11794, 11795, 11795, 11795, 11247, 11797, 11797, 11798, 11798, 11799,
+ 11799, 11252, 11801, 11801, 975, 6102, 11107, 11107, 11804, 11804, 4041,
+ 4038, 4041, 4038, 11257, 4056, 4053, 4056, 4053, 11258, 11807, 11806, 1008,
+ 11808, 11809, 1008, 11808, 11809, 11810, 11811, 11811, 2, 11805, 11803, 11803,
+ 11767, 11271, 11815, 11816, 11816, 11817, 11817, 11818, 11818, 11819, 11819,
+ 11820, 11820, 268, 268, 11822, 11822, 11823, 11823, 11824, 11824, 11825,
+ 11825, 11826, 11826, 11827, 11827, 11828, 11828, 11829, 11830, 11830, 11831,
+ 11831, 11832, 11832, 11833, 11833, 11834, 11834, 11835, 11835, 11836, 11836,
+ 11837, 11837, 11838, 11839, 11839, 11840, 11840, 314, 13491, 11842, 11843,
+ 11844, 11845, 11846, 11847, 11848, 11849, 11850, 11850, 11850, 11851, 11852,
+ 11852, 11852, 268, 268, 11854, 11854, 11855, 11855, 11856, 11856, 11857,
+ 11857, 11858, 11858, 11859, 11859, 11860, 11860, 11861, 11862, 11862, 11863,
+ 11863, 11864, 11864, 11865, 11865, 11866, 11866, 11867, 11867, 11868, 11868,
+ 11869, 11869, 11870, 11871, 11871, 11872, 11872, 340, 340, 11874, 11874,
+ 11875, 11875, 340, 340, 11877, 11877, 11878, 11878, 314, 314, 314, 340, 11881,
+ 11882, 11883, 11884, 11884, 11884, 11880, 11880, 11880, 11886, 11886, 11886,
+ 11885, 11885, 11885, 11879, 11879, 11876, 11876, 11873, 11873, 11853, 11853,
+ 11853, 11841, 11841, 437, 437, 11893, 11893, 11894, 11894, 11895, 11895,
+ 246, 246, 251, 251, 448, 448, 457, 481, 482, 314, 229, 493, 494, 495, 507,
+ 526, 523, 245, 246, 247, 248, 249, 250, 251, 515, 238, 237, 236, 235, 234,
+ 263, 535, 11910, 11906, 11907, 11909, 11908, 11905, 11903, 11904, 11902,
+ 11901, 11900, 11897, 11898, 11899, 11897, 11898, 11899, 11829, 11829, 11919,
+ 11919, 11920, 11920, 11921, 11921, 11922, 11922, 11923, 11923, 11924, 11924,
+ 11925, 11925, 11926, 11926, 11927, 11927, 314, 314, 11929, 11929, 11930,
+ 11930, 11928, 11928, 369, 369, 11933, 11933, 11934, 11934, 11935, 11935,
+ 11936, 11936, 11937, 11938, 11938, 594, 594, 11940, 11940, 11941, 11941,
+ 11942, 11942, 11943, 11943, 11944, 11944, 11945, 11945, 11946, 11946, 11947,
+ 11947, 11948, 11948, 11949, 11949, 11950, 11950, 621, 621, 11951, 11951,
+ 591, 591, 11952, 11953, 11954, 11952, 11953, 11954, 11955, 11955, 632, 11957,
+ 11958, 543, 543, 11959, 643, 643, 11961, 11961, 11962, 11962, 11963, 11963,
+ 11964, 11964, 11965, 11965, 11966, 11966, 11967, 11967, 11968, 11968, 11969,
+ 11969, 11970, 11970, 11971, 11971, 11972, 11972, 11973, 11973, 11974, 11974,
+ 263, 11976, 11977, 715, 715, 11979, 11979, 388, 393, 11982, 11981, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 11985, 11986, 11983, 11984, 694,
+ 462, 11989, 11990, 474, 475, 476, 469, 470, 701, 502, 518, 519, 245, 246,
+ 248, 249, 250, 251, 448, 515, 235, 237, 238, 540, 535, 536, 11998, 11999,
+ 11906, 11907, 11995, 11996, 11997, 11994, 11904, 11901, 11992, 11993, 11991,
+ 11900, 11987, 11988, 11980, 11980, 12000, 12001, 12002, 12003, 12004, 12005,
+ 12006, 12007, 12007, 11978, 11978, 767, 767, 12010, 12010, 12011, 12011,
+ 12012, 12012, 12013, 12013, 12014, 12014, 782, 782, 12016, 12016, 12017,
+ 12017, 11729, 11729, 12018, 12018, 12015, 12015, 11888, 11888, 512, 762,
+ 763, 764, 765, 12019, 12020, 12021, 12022, 12019, 12020, 12021, 12022, 12023,
+ 12023, 12024, 12024, 12025, 12025, 437, 12027, 12028, 12029, 12030, 12031,
+ 12032, 12032, 12033, 12033, 749, 750, 12035, 12036, 12037, 12038, 12034,
+ 12026, 12026, 12039, 12040, 12041, 12041, 12042, 12042, 12008, 12009, 12008,
+ 12009, 828, 828, 12045, 835, 12047, 12048, 12049, 12050, 12051, 12052, 12053,
+ 12054, 12054, 12046, 12046, 236, 12057, 507, 507, 12059, 12059, 12060, 12060,
+ 12061, 12061, 12062, 12062, 12063, 12063, 12064, 11903, 12066, 12067, 12067,
+ 12068, 12068, 12069, 12069, 12070, 12070, 12071, 12071, 12072, 12072, 234,
+ 234, 12074, 12074, 12075, 12075, 12076, 12076, 12077, 12077, 12078, 12078,
+ 12079, 12079, 12080, 12080, 12081, 12081, 12082, 12082, 12083, 12083, 12084,
+ 12084, 247, 247, 12086, 12086, 12087, 12087, 12088, 12088, 12089, 12089,
+ 12090, 12090, 12091, 12091, 12092, 12092, 12093, 12093, 12094, 12094, 12095,
+ 12095, 12096, 12085, 12073, 12073, 12097, 12098, 12099, 12099, 12065, 12058,
+ 12102, 12102, 12100, 12101, 951, 951, 12104, 12104, 12105, 12105, 12106,
+ 12106, 12107, 12107, 12108, 12108, 621, 12110, 12111, 12112, 12112, 975,
+ 975, 12114, 12114, 12115, 12115, 12116, 12116, 989, 989, 986, 986, 12118,
+ 12119, 12118, 12119, 1000, 1000, 997, 997, 12121, 12122, 12121, 12122, 12123,
+ 12120, 1008, 12124, 12125, 12126, 12126, 12117, 12117, 1026, 1025, 1024,
+ 1023, 1022, 1021, 1020, 1019, 1018, 12129, 1041, 1042, 12131, 12131, 12132,
+ 12132, 12133, 12133, 12134, 12134, 12135, 12135, 12136, 12130, 12138, 12137,
+ 12139, 12139, 12140, 12140, 12141, 12141, 12142, 12142, 12143, 12143, 12144,
+ 12144, 12127, 12128, 12127, 12128, 12113, 12113, 12109, 12109, 12103, 12103,
+ 12055, 12056, 12055, 12056, 12043, 12044, 12043, 12044, 11727, 11975, 11727,
+ 11975, 11960, 11960, 11956, 11956, 11939, 11939, 11931, 11932, 11931, 11932,
+ 1086, 1086, 12157, 12157, 12158, 12158, 12159, 12159, 12160, 12160, 12161,
+ 12161, 12145, 12146, 12147, 12148, 12149, 12150, 12151, 12152, 12153, 12154,
+ 12155, 12156, 12145, 12146, 12147, 12148, 12149, 12150, 12151, 12152, 12153,
+ 12154, 12155, 12156, 11913, 11914, 11915, 11911, 11912, 11916, 11917, 11918,
+ 11896, 11896, 493, 540, 518, 518, 12167, 12167, 12168, 12168, 518, 518, 457,
+ 457, 457, 457, 536, 536, 470, 470, 12169, 12169, 457, 457, 474, 474, 519,
+ 519, 495, 495, 476, 476, 494, 494, 470, 470, 482, 482, 475, 475, 457, 457,
+ 502, 502, 502, 502, 12166, 12166, 12170, 12171, 12172, 12173, 12174, 12175,
+ 12176, 12177, 12178, 12179, 12180, 12181, 12182, 12183, 12184, 12170, 12171,
+ 12172, 12173, 12174, 12175, 12176, 12177, 12178, 12179, 12180, 12181, 12182,
+ 12183, 12184, 12185, 402, 402, 12187, 12187, 12188, 12188, 12189, 12189,
+ 12190, 12191, 12192, 12193, 403, 403, 12195, 12195, 12196, 12196, 12197,
+ 12197, 12198, 12199, 12200, 12201, 12202, 12194, 406, 406, 12205, 12205,
+ 12206, 12206, 12207, 12207, 12208, 12209, 12210, 12211, 12212, 404, 404,
+ 12214, 12214, 12215, 12215, 12216, 12216, 12217, 12218, 12219, 12220, 408,
+ 408, 12222, 12222, 12223, 12223, 12224, 12224, 12225, 12226, 12227, 12228,
+ 12229, 12221, 407, 407, 12232, 12232, 12233, 12233, 12234, 12234, 12235,
+ 12236, 12237, 12238, 12239, 409, 409, 12241, 12241, 12242, 12242, 12243,
+ 12243, 12244, 12245, 12246, 12247, 12248, 12249, 12249, 12250, 12250, 12251,
+ 12251, 12252, 12252, 12253, 12253, 12254, 12254, 12255, 12255, 12256, 12256,
+ 12257, 12257, 12258, 12258, 410, 410, 12260, 12260, 12261, 12261, 12262,
+ 12262, 12263, 12264, 12265, 12266, 405, 405, 12268, 12268, 12269, 12269,
+ 12270, 12270, 12271, 12272, 12273, 12274, 12275, 12267, 12259, 12259, 481,
+ 481, 12279, 12279, 481, 481, 12281, 12281, 12282, 12282, 12280, 12280, 12283,
+ 12283, 12284, 12285, 393, 393, 12287, 12287, 12288, 12288, 12289, 12289,
+ 12290, 12291, 12292, 12293, 12293, 12294, 12294, 393, 393, 12296, 12296,
+ 12297, 12297, 12298, 12298, 12299, 12300, 12301, 12302, 12302, 12303, 12303,
+ 12304, 12304, 12295, 12295, 518, 518, 12307, 12307, 12308, 12308, 518, 518,
+ 457, 457, 457, 457, 536, 536, 470, 470, 12309, 12309, 474, 474, 519, 519,
+ 495, 495, 476, 476, 494, 494, 470, 470, 482, 482, 475, 475, 457, 457, 502,
+ 502, 502, 502, 12166, 12166, 457, 457, 701, 701, 701, 701, 701, 701, 12310,
+ 12311, 12312, 12313, 12314, 12315, 12324, 12316, 12317, 12318, 12319, 12320,
+ 12325, 12321, 12322, 12323, 12310, 12311, 12312, 12313, 12314, 12315, 12324,
+ 12316, 12317, 12318, 12319, 12320, 12325, 12321, 12322, 12323, 12324, 12325,
+ 523, 523, 12327, 12327, 12328, 12328, 12329, 12329, 12330, 12330, 523, 523,
+ 12332, 12332, 12333, 12333, 12334, 12334, 12335, 12335, 12336, 12336, 12331,
+ 12331, 12326, 402, 402, 12340, 12340, 12341, 12341, 12342, 12342, 12343,
+ 12344, 12345, 12346, 403, 403, 12348, 12348, 12349, 12349, 12350, 12350,
+ 12351, 12352, 12353, 12354, 12355, 12347, 406, 406, 12358, 12358, 12359,
+ 12359, 12360, 12360, 12361, 12362, 12363, 12364, 12365, 404, 404, 12367,
+ 12367, 12368, 12368, 12369, 12369, 12370, 12371, 12372, 12373, 408, 408,
+ 12375, 12375, 12376, 12376, 12377, 12377, 12378, 12379, 12380, 12381, 12382,
+ 12374, 407, 407, 12385, 12385, 12386, 12386, 12387, 12387, 12388, 12389,
+ 12390, 12391, 12392, 409, 409, 12394, 12394, 12395, 12395, 12396, 12396,
+ 12397, 12398, 12399, 12400, 12401, 12402, 12402, 12403, 12403, 12404, 12404,
+ 12405, 12405, 12406, 12406, 12407, 12407, 12408, 12408, 12409, 12409, 12410,
+ 12410, 12411, 12411, 410, 410, 12413, 12413, 12414, 12414, 12415, 12415,
+ 12416, 12417, 12418, 12419, 405, 405, 12421, 12421, 12422, 12422, 12423,
+ 12423, 12424, 12425, 12426, 12427, 12428, 12420, 12412, 12412, 401, 401,
+ 12432, 12432, 12433, 12433, 12434, 12434, 12435, 12436, 12437, 12438, 401,
+ 401, 12440, 12440, 12441, 12441, 12442, 12442, 12443, 12444, 12445, 12446,
+ 12447, 12447, 12231, 12231, 12439, 12439, 12384, 12384, 12356, 12356, 12429,
+ 12430, 12431, 12429, 12430, 12431, 12393, 12393, 12384, 12384, 12383, 12383,
+ 12366, 12366, 12356, 12356, 12357, 12357, 12338, 12339, 12337, 12338, 12339,
+ 12339, 12203, 12203, 12305, 12305, 12306, 12286, 12286, 12286, 12276, 12277,
+ 12278, 12276, 12277, 12278, 12240, 12240, 12231, 12231, 12230, 12230, 12213,
+ 12213, 12203, 12203, 12204, 12204, 12186, 12186, 12450, 12451, 12452, 12460,
+ 12461, 12453, 12454, 12455, 12456, 12457, 12458, 12448, 12449, 12450, 12451,
+ 12452, 12460, 12461, 12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460,
+ 12461, 12462, 12463, 12464, 12465, 12466, 12467, 92, 12468, 12469, 12469,
+ 12469, 12470, 12470, 12470, 12471, 12471, 12471, 340, 782, 12473, 12474,
+ 12475, 12476, 12476, 12476, 782, 12478, 12479, 12480, 12481, 12481, 12481,
+ 621, 12483, 12483, 12483, 591, 591, 591, 594, 594, 594, 632, 632, 632, 621,
+ 621, 621, 12484, 12485, 12486, 12487, 12484, 12484, 12485, 12486, 12487,
+ 12485, 12486, 12487, 12488, 12488, 12488, 12489, 594, 594, 12491, 12491,
+ 12492, 12492, 12493, 12493, 12494, 12494, 12495, 12495, 12496, 12496, 12497,
+ 12497, 12498, 12499, 12499, 12500, 12500, 12501, 12501, 12502, 12503, 12503,
+ 12504, 12504, 12505, 12505, 12506, 12506, 12507, 12507, 12508, 12508, 12509,
+ 12510, 12510, 12511, 12511, 12512, 12512, 12513, 12513, 12514, 12514, 12515,
+ 12515, 12516, 12517, 12517, 12518, 12518, 12519, 12519, 12520, 12520, 12521,
+ 12522, 12522, 12523, 12523, 12524, 12524, 12525, 12525, 12526, 12527, 12527,
+ 12528, 12528, 12529, 12529, 12530, 12530, 12531, 12531, 11947, 12533, 12533,
+ 12534, 12534, 12535, 12535, 12536, 12537, 12537, 12538, 12538, 12539, 12539,
+ 12540, 12540, 12541, 12541, 12542, 12542, 12543, 12544, 12544, 12545, 12545,
+ 12546, 12546, 12547, 12547, 12548, 12548, 12549, 12549, 12550, 12551, 12551,
+ 12552, 12552, 12553, 12553, 12554, 12554, 12555, 12556, 12556, 12557, 12557,
+ 12558, 12558, 12559, 12559, 12560, 12561, 12561, 12562, 12562, 12563, 12563,
+ 12564, 12564, 12565, 12565, 12566, 12566, 12532, 12532, 12490, 12490, 12490,
+ 12482, 12482, 12482, 12477, 12477, 12477, 12472, 12472, 12472, 986, 989,
+ 997, 1000, 975, 48, 543, 750, 49, 749, 1008, 12573, 12574, 409, 408, 407,
+ 406, 405, 404, 403, 402, 401, 393, 250, 388, 828, 507, 263, 462, 540, 536,
+ 248, 249, 251, 535, 526, 523, 519, 518, 448, 515, 235, 237, 238, 245, 246,
+ 502, 495, 494, 493, 482, 481, 476, 475, 474, 470, 701, 469, 457, 632, 229,
+ 236, 247, 715, 234, 674, 1041, 1042, 268, 694, 369, 410, 621, 1018, 1019,
+ 1020, 1021, 1022, 1023, 1024, 1025, 1026, 12587, 12586, 12577, 12578, 12579,
+ 12580, 12581, 12582, 12583, 12584, 12585, 43, 437, 2, 835, 591, 12588, 12589,
+ 12590, 765, 951, 1564, 594, 12575, 12576, 340, 512, 763, 764, 1086, 12591,
+ 12592, 12593, 12594, 12595, 12596, 12596, 1659, 1658, 340, 1655, 674, 694,
+ 1647, 1646, 1645, 1644, 1643, 462, 1639, 1638, 1626, 1625, 1624, 1623, 1622,
+ 1621, 1620, 1619, 1618, 1617, 1613, 1612, 1708, 1707, 1699, 1698, 1697, 1696,
+ 1695, 1694, 1688, 1687, 1686, 1685, 1680, 1679, 1678, 1673, 1672, 1671, 1735,
+ 1745, 1744, 1743, 1742, 268, 1738, 12610, 1041, 1042, 1726, 1725, 1724, 1723,
+ 1722, 1721, 1720, 997, 1000, 986, 989, 1008, 1758, 1757, 975, 1781, 1780,
+ 543, 632, 1775, 1774, 1773, 369, 1770, 835, 1767, 12617, 12616, 1792, 12624,
+ 12625, 12618, 12619, 12620, 12621, 12622, 12623, 12611, 12612, 12613, 12614,
+ 12615, 11985, 12605, 12606, 12607, 12608, 12609, 12598, 12599, 12600, 12601,
+ 12602, 12603, 12604, 1805, 12631, 1814, 12633, 474, 475, 476, 12634, 1810,
+ 12632, 594, 12637, 12638, 1825, 1824, 1837, 1857, 1853, 1852, 1847, 1846,
+ 1845, 1842, 12642, 12643, 12644, 12645, 229, 12641, 1878, 1877, 1876, 1875,
+ 1874, 1871, 1868, 1889, 1022, 1026, 1018, 1019, 1020, 1021, 437, 1902, 12655,
+ 12656, 12654, 12652, 12653, 12651, 502, 12648, 12649, 12650, 1915, 12662,
+ 1931, 1928, 1925, 1922, 12664, 12665, 12666, 12667, 12668, 12663, 1947, 1944,
+ 12, 1964, 526, 1564, 1972, 518, 519, 621, 828, 1969, 245, 247, 248, 249,
+ 250, 251, 448, 515, 12673, 234, 235, 236, 237, 238, 388, 715, 1957, 1956,
+ 1955, 1954, 512, 782, 1988, 72, 1985, 73, 1982, 1023, 1024, 1025, 195, 591,
+ 2049, 2048, 2040, 2039, 2038, 2037, 2036, 2035, 951, 2028, 2027, 2026, 12683,
+ 2024, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 393, 749, 750,
+ 765, 1999, 1998, 1997, 1996, 540, 762, 763, 764, 791, 1086, 263, 12680, 12681,
+ 12682, 12684, 12685, 12686, 12687, 12688, 12689, 12690, 12691, 11907, 12674,
+ 12675, 12676, 12677, 12678, 12679, 11905, 12671, 12672, 12669, 12670, 12657,
+ 12658, 12659, 12660, 12661, 11904, 12646, 12647, 457, 11902, 12639, 12640,
+ 11901, 11993, 12635, 12636, 12626, 12627, 12628, 12629, 12630, 1611, 12692,
+ 12693, 12694, 12695, 12696, 12697, 12698, 12699, 12700, 12701, 765, 835,
+ 1086, 791, 340, 782, 764, 512, 762, 763, 12704, 12703, 12705, 12706, 12707,
+ 314, 12654, 12708, 12709, 12710, 12710, 12711, 12711, 12712, 12713, 12713,
+ 12702, 12702, 12597, 12597, 835, 835, 12717, 12717, 12718, 12718, 12719,
+ 12719, 512, 762, 763, 764, 765, 12721, 12721, 12722, 12722, 12723, 12723,
+ 11937, 12725, 369, 369, 12727, 12727, 12728, 12728, 12729, 12729, 12730,
+ 12730, 12731, 12732, 12733, 12733, 12726, 12726, 11987, 11988, 12736, 12737,
+ 12737, 12737, 12738, 12738, 12738, 246, 246, 251, 251, 448, 448, 11990, 469,
+ 470, 245, 246, 247, 248, 249, 250, 251, 448, 515, 512, 543, 263, 535, 536,
+ 11998, 12747, 12748, 11909, 11906, 11907, 11995, 12745, 12746, 11901, 11992,
+ 12744, 12743, 12740, 12741, 12742, 12740, 12741, 12742, 437, 437, 12754,
+ 12754, 12755, 12755, 12756, 12756, 11861, 11861, 12758, 12758, 12759, 12759,
+ 12760, 12760, 12761, 12761, 12762, 12762, 12763, 12763, 12764, 12764, 12765,
+ 12765, 12766, 12766, 314, 314, 12768, 12768, 12769, 12769, 12767, 12767,
+ 12731, 12772, 12772, 12498, 12498, 12774, 12774, 12775, 12775, 12776, 12776,
+ 621, 621, 12777, 12777, 591, 591, 12778, 12779, 12780, 12778, 12779, 12780,
+ 12781, 12781, 543, 543, 11959, 643, 643, 12784, 12784, 12785, 12785, 12786,
+ 12786, 12787, 12787, 12788, 12788, 12789, 12789, 12790, 12790, 12791, 12791,
+ 12792, 12792, 12793, 12793, 12794, 12794, 12795, 12795, 12796, 12796, 11722,
+ 11722, 12798, 12798, 12799, 12799, 12800, 12800, 12801, 12801, 12797, 12797,
+ 715, 715, 12804, 12804, 12805, 12805, 12002, 12004, 12005, 12006, 12000,
+ 12001, 12003, 12806, 12806, 11978, 11978, 767, 767, 12809, 12809, 12810,
+ 12810, 12811, 12811, 12812, 12812, 12813, 12813, 782, 782, 12815, 12815,
+ 12816, 12816, 791, 791, 12818, 12818, 12819, 12819, 12820, 12820, 12821,
+ 12821, 12817, 12817, 12814, 12814, 11889, 11889, 512, 762, 763, 764, 765,
+ 12822, 12823, 12824, 12825, 12822, 12823, 12824, 12825, 12826, 12826, 12827,
+ 12827, 12828, 12828, 12032, 12032, 12830, 12830, 12831, 12829, 12829, 12039,
+ 12832, 12833, 12833, 12834, 12834, 12807, 12808, 12807, 12808, 828, 828,
+ 12837, 12054, 12054, 12838, 12838, 507, 507, 12841, 12841, 12842, 12842,
+ 12843, 12843, 12844, 12844, 12845, 12845, 12846, 12067, 12067, 12848, 12848,
+ 12849, 12849, 12850, 12850, 12851, 12851, 12852, 12852, 234, 234, 12854,
+ 12854, 12855, 12855, 12856, 12856, 12857, 12857, 12858, 12858, 12859, 12859,
+ 12860, 12860, 12861, 12861, 12862, 12862, 12863, 12863, 12864, 12864, 247,
+ 247, 12866, 12866, 12867, 12867, 12868, 12868, 12869, 12869, 12870, 12870,
+ 12871, 12871, 12872, 12872, 12873, 12873, 12874, 12874, 12875, 12875, 12876,
+ 12865, 12853, 12853, 12877, 12878, 12879, 12879, 12847, 12880, 12881, 12102,
+ 12102, 951, 951, 12883, 12883, 12884, 12884, 12885, 12885, 12886, 12886,
+ 12887, 12887, 12112, 12112, 975, 975, 12890, 12890, 12891, 12891, 12892,
+ 12892, 989, 989, 986, 986, 12894, 12895, 12894, 12895, 1000, 1000, 997, 997,
+ 12897, 12898, 12897, 12898, 12899, 12896, 1008, 12900, 12901, 12902, 12902,
+ 12893, 12893, 12131, 12131, 12905, 12905, 12906, 12906, 12907, 12907, 12908,
+ 12908, 12909, 12138, 12910, 12911, 12911, 12912, 12912, 12913, 12913, 12914,
+ 12914, 12915, 12915, 12916, 12916, 12903, 12904, 12903, 12904, 12889, 12889,
+ 12888, 12888, 12882, 12882, 12839, 12840, 12839, 12840, 12835, 12836, 12835,
+ 12836, 12802, 12802, 12803, 12803, 12783, 12783, 12782, 12782, 12773, 12773,
+ 12770, 12771, 12770, 12771, 1086, 1086, 12929, 12929, 12930, 12930, 12931,
+ 12931, 12932, 12932, 12933, 12933, 12917, 12918, 12919, 12920, 12921, 12922,
+ 12923, 12924, 12925, 12926, 12927, 12928, 12917, 12918, 12919, 12920, 12921,
+ 12922, 12923, 12924, 12925, 12926, 12927, 12928, 12757, 12757, 11913, 11914,
+ 11915, 12002, 12006, 12750, 12749, 12751, 12752, 12753, 12739, 12739, 12739,
+ 12028, 12939, 12940, 12941, 12942, 11489, 11489, 12944, 12944, 12945, 12945,
+ 543, 543, 543, 11959, 12943, 12802, 12805, 12805, 11980, 92, 223, 84, 85,
+ 86, 87, 88, 89, 90, 91, 222, 2, 220, 221, 19, 81, 82, 83, 80, 69, 218, 219,
+ 4, 74, 212, 75, 36, 47, 76, 77, 213, 7, 8, 9, 10, 11, 12, 13, 78, 79, 14,
+ 15, 16, 17, 18, 39, 94, 214, 215, 216, 217, 44, 49, 55, 186, 187, 188, 189,
+ 190, 191, 192, 193, 37, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 40, 45, 52, 68, 208, 209, 210, 211, 3, 41, 42, 43, 48,
+ 71, 6, 72, 73, 12971, 12972, 12973, 12974, 12975, 12976, 12977, 12978, 12964,
+ 12965, 12966, 12967, 12968, 12969, 12970, 12961, 12962, 12963, 12960, 12958,
+ 12959, 12956, 12957, 12952, 12953, 12954, 12955, 12950, 12951, 164, 165,
+ 50, 166, 38, 56, 167, 168, 169, 170, 171, 70, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 146, 147, 148, 149, 150, 151, 152,
+ 153, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 134, 135, 136, 137, 95, 138, 51, 53, 139, 140, 141, 142,
+ 143, 144, 145, 31, 32, 30, 33, 34, 127, 128, 20, 93, 129, 130, 131, 57, 132,
+ 46, 133, 13005, 13006, 13007, 13008, 13000, 13001, 13002, 13003, 13004, 12994,
+ 12995, 12996, 12997, 12998, 12999, 12987, 12988, 12989, 12990, 12991, 12992,
+ 12993, 126, 119, 120, 121, 122, 123, 124, 125, 13014, 13015, 13016, 13017,
+ 13013, 112, 113, 114, 115, 116, 117, 118, 111, 21, 25, 26, 27, 28, 29, 54,
+ 13026, 13024, 13025, 13023, 13020, 13021, 13022, 110, 13031, 107, 108, 109,
+ 22, 23, 24, 13036, 13033, 13034, 13035, 13037, 13038, 13032, 13027, 13028,
+ 13029, 13030, 13018, 13019, 13009, 13010, 13011, 13012, 12979, 12980, 12981,
+ 12982, 12983, 12984, 12985, 12986, 106, 13045, 104, 105, 35, 13048, 13047,
+ 103, 13051, 13052, 13049, 13050, 13046, 102, 13056, 101, 13058, 13059, 13057,
+ 5, 13062, 13063, 100, 13065, 13066, 99, 13068, 1, 96, 97, 98, 13070, 13071,
+ 13072, 13073, 13074, 13069, 13075, 13076, 13067, 13064, 13060, 13061, 13053,
+ 13054, 13055, 13039, 13040, 13041, 13042, 13043, 13044, 13077, 13078, 13079,
+ 13080, 13081, 13082, 13083, 13083, 13083, 13084, 13084, 13084, 13085, 13085,
+ 13085, 11998, 12748, 13086, 13086, 13086, 12692, 12693, 12694, 12695, 12696,
+ 12697, 12698, 12699, 12700, 1611, 12949, 12949, 12949, 13087, 12750, 11913,
+ 12002, 11914, 11915, 12004, 12005, 12006, 13088, 13088, 13088, 13089, 12596,
+ 12596, 975, 13092, 13093, 13093, 13093, 13094, 13094, 13094, 13095, 13095,
+ 13095, 13096, 13097, 13098, 13099, 1041, 13101, 13102, 13102, 13103, 13103,
+ 13104, 13104, 13105, 13105, 13106, 13106, 13107, 13108, 13109, 13110, 13111,
+ 13112, 13112, 13113, 13113, 13114, 13114, 13115, 13115, 13102, 13102, 13117,
+ 13117, 13118, 13118, 13119, 13119, 13120, 13120, 13121, 13122, 13123, 13124,
+ 13125, 13126, 13126, 13127, 13127, 13128, 13128, 13129, 13129, 13130, 13130,
+ 13116, 13116, 13131, 13131, 13132, 13133, 13133, 13133, 1042, 13135, 13136,
+ 13136, 13137, 13137, 13138, 13138, 13139, 13139, 13140, 13140, 13141, 13142,
+ 13142, 13143, 13143, 13144, 13144, 13145, 13145, 13136, 13136, 13147, 13147,
+ 13148, 13148, 13149, 13149, 13150, 13150, 13151, 13152, 13152, 13153, 13153,
+ 13154, 13154, 13155, 13155, 13156, 13156, 13146, 13146, 13157, 13157, 13158,
+ 13159, 13159, 13159, 43, 13160, 44, 750, 749, 13134, 340, 763, 764, 765,
+ 782, 791, 1086, 13161, 13162, 13163, 13164, 13165, 13166, 13100, 12710, 12710,
+ 311, 13170, 13171, 13172, 13173, 13174, 13174, 13174, 13174, 13176, 13176,
+ 13175, 13175, 13177, 13177, 13178, 13179, 13180, 512, 13182, 13183, 13184,
+ 762, 13186, 13187, 13188, 763, 13190, 13191, 13192, 764, 13194, 13195, 13196,
+ 1086, 13198, 13199, 13200, 340, 13202, 13203, 13204, 782, 13206, 13207, 13208,
+ 12704, 13210, 13211, 765, 13213, 13214, 13215, 40, 13216, 48, 13212, 49,
+ 13209, 50, 13205, 3, 13201, 41, 13197, 42, 13193, 43, 13189, 44, 750, 13185,
+ 13217, 13218, 13219, 13220, 13221, 13222, 13223, 13224, 13225, 13226, 13227,
+ 13228, 13229, 13181, 314, 314, 314, 13232, 13232, 13232, 13233, 13234, 13235,
+ 13230, 13231, 13167, 13168, 13169, 13169, 13236, 13237, 13238, 13239, 13239,
+ 13239, 13091, 13091, 13090, 13090, 13090, 828, 828, 828, 13243, 835, 835,
+ 13245, 13245, 13246, 13246, 13244, 835, 13249, 13250, 13251, 835, 835, 13253,
+ 13254, 13255, 13256, 13257, 13258, 13259, 13260, 13261, 13262, 13262, 13262,
+ 13252, 13264, 13264, 13263, 13264, 13247, 13248, 13247, 13248, 13248, 750,
+ 13267, 13268, 13268, 13269, 13269, 512, 762, 763, 764, 765, 13267, 13271,
+ 13271, 13272, 13272, 13273, 13273, 13270, 13270, 951, 951, 13276, 13276,
+ 951, 951, 13278, 13278, 13279, 13279, 13277, 13277, 13280, 13280, 13281,
+ 12747, 13282, 13282, 13282, 13283, 13284, 388, 388, 13286, 13286, 13287,
+ 13287, 13288, 13288, 13289, 13290, 13291, 13292, 13293, 13294, 13294, 13295,
+ 13295, 13296, 13296, 13297, 13297, 13298, 13298, 13299, 13299, 13300, 13300,
+ 13301, 13301, 13302, 13302, 388, 388, 13304, 13304, 13305, 13305, 13306,
+ 13306, 13307, 13308, 13309, 13310, 13311, 13312, 13312, 13313, 13313, 13314,
+ 13314, 13315, 13315, 13316, 13316, 13317, 13317, 13318, 13318, 13319, 13319,
+ 13320, 13320, 13321, 13321, 13303, 13303, 13323, 13322, 13323, 13324, 13324,
+ 13324, 13325, 12106, 13327, 13327, 13328, 13328, 12885, 13330, 13330, 13331,
+ 13331, 13332, 13332, 13329, 13329, 12112, 13335, 13335, 13335, 975, 13092,
+ 11886, 11886, 11886, 13338, 13338, 13338, 13339, 13339, 13339, 989, 989,
+ 989, 986, 986, 986, 13341, 13341, 13341, 13342, 13342, 13342, 13341, 13342,
+ 13341, 13342, 13341, 13342, 13343, 1000, 1000, 1000, 997, 997, 997, 13345,
+ 13345, 13345, 13346, 13346, 13346, 13345, 13346, 13345, 13346, 13345, 13346,
+ 13347, 13348, 13344, 1008, 13349, 13350, 1008, 13349, 13350, 13351, 13352,
+ 13352, 13352, 2, 13340, 13337, 13337, 13337, 13283, 12138, 13356, 13357,
+ 13357, 13358, 13358, 13359, 13359, 13360, 13360, 13361, 13361, 13357, 13357,
+ 13363, 13363, 13364, 13364, 13365, 13365, 13366, 13366, 251, 250, 249, 248,
+ 247, 246, 245, 5, 13369, 13370, 13371, 13372, 13373, 13374, 13375, 13376,
+ 13377, 13378, 13379, 13380, 13381, 13382, 13383, 13384, 13385, 13386, 13387,
+ 13388, 13389, 13390, 13391, 13392, 13393, 13394, 13395, 13396, 13397, 13398,
+ 13399, 13400, 13401, 13402, 13403, 13404, 13405, 13406, 13407, 13408, 13409,
+ 13410, 13411, 13412, 13413, 13414, 13415, 13416, 13417, 13418, 224, 225,
+ 13421, 13422, 226, 13424, 13425, 228, 13427, 13428, 13429, 13430, 13431,
+ 13432, 13433, 13434, 13435, 13436, 13437, 13438, 13439, 13440, 13441, 13442,
+ 13443, 13444, 13368, 11909, 13367, 13367, 13362, 13362, 13353, 13354, 13355,
+ 13353, 13354, 13353, 13354, 13355, 13355, 13336, 13336, 13336, 13333, 13333,
+ 13334, 674, 11725, 11725, 674, 12800, 12800, 13326, 13326, 13326, 13285,
+ 13285, 13285, 765, 764, 763, 762, 512, 13274, 13274, 13275, 13265, 13266,
+ 13265, 13265, 13266, 13266, 13240, 13242, 13241, 13240, 13240, 13242, 13241,
+ 13242, 12948, 12821, 12948, 12821, 12946, 12947, 12946, 12947, 12947, 12934,
+ 12935, 12937, 12936, 12938, 12934, 12935, 12937, 12936, 12938, 12937, 12938,
+ 12734, 12734, 12735, 512, 762, 763, 764, 765, 12724, 12724, 12720, 12720,
+ 12714, 12715, 12716, 12714, 12715, 12716, 12568, 12569, 12570, 12571, 12572,
+ 12567, 12569, 12568, 12569, 12570, 12571, 12572, 12570, 12571, 12572, 12162,
+ 12163, 12164, 12165, 12162, 12163, 12164, 12165, 11888, 11889, 11889, 11887,
+ 11891, 11890, 11887, 11887, 11891, 11890, 11891, 11892, 11821, 11821, 11812,
+ 11813, 11814, 11812, 11813, 11814, 11802, 11802, 11800, 11800, 674, 11796,
+ 11796, 11796, 11143, 11143, 11789, 11789, 11768, 11768, 512, 762, 763, 764,
+ 765, 11762, 11762, 11757, 11758, 11757, 11758, 11738, 11738, 11729, 11729,
+ 11728, 11728, 11730, 11731, 11732, 11730, 11731, 11732, 11492, 11492, 11493,
+ 11178, 11493, 11178, 11487, 11488, 11487, 11488, 11474, 11475, 11476, 11477,
+ 11478, 11474, 11475, 11476, 11477, 11478, 11294, 11295, 11296, 11297, 11298,
+ 11294, 11295, 11296, 11297, 11298, 11073, 11073, 11064, 11064, 11063, 11065,
+ 11066, 11063, 11065, 11066, 2830, 2833, 11026, 2624, 2805, 2806, 2807, 2808,
+ 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821,
+ 2624, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816,
+ 2817, 2818, 2819, 2820, 2821, 690, 2822, 920, 1, 227, 226, 13489, 13490,
+ 13491, 13492, 13493, 13495, 13497, 13499
+};
+
+static unsigned char label_array[] = {
+ 0xFE, 0xF9, 0xF8, 0xF4, 0xE7, 0xE6, 0xE4, 0xE3, 0xE2, 0xD9, 0xD7, 0xD4, 0xD3,
+ 0xD2, 0xD1, 0xC9, 0xC8, 0xC7, 0xC5, 0xC3, 0xC2, 0xC1, 0xB7, 0xB6, 0xB4, 0xB3,
+ 0xAB, 0xA7, 0xA6, 0xA4, 0xA3, 0xA2, 0x9B, 0x99, 0x97, 0x94, 0x93, 0x92, 0x91,
+ 0x89, 0x88, 0x87, 0x85, 0x83, 0x82, 0x81, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72,
+ 0x71, 0x70, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63,
+ 0x62, 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A,
+ 0x49, 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, 0x39, 0x38, 0x34, 0x1B, 0x00, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x37, 0x00, 0x33, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x35, 0x32, 0x31, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x39, 0x36, 0x35, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x35, 0x36, 0x00, 0x00,
+ 0x34, 0x00, 0x30, 0x00, 0x00, 0x47, 0x67, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49,
+ 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x63, 0x43, 0x00, 0x6E, 0x4E, 0x00,
+ 0x65, 0x45, 0x00, 0x2D, 0x00, 0x64, 0x44, 0x00, 0x72, 0x52, 0x00, 0x61, 0x41,
+ 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x74, 0x54, 0x00,
+ 0x73, 0x53, 0x00, 0x2D, 0x00, 0x65, 0x45, 0x00, 0x62, 0x42, 0x00, 0x6F, 0x4F,
+ 0x00, 0x00, 0x38, 0x00, 0x00, 0x36, 0x00, 0x00, 0x38, 0x36, 0x00, 0x39, 0x00,
+ 0x31, 0x00, 0x2D, 0x00, 0x34, 0x00, 0x2E, 0x00, 0x33, 0x00, 0x78, 0x58, 0x00,
+ 0x5F, 0x00, 0x69, 0x49, 0x00, 0x73, 0x53, 0x00, 0x00, 0x43, 0x63, 0x00, 0x69,
+ 0x49, 0x00, 0x62, 0x42, 0x00, 0x61, 0x41, 0x69, 0x49, 0x00, 0x69, 0x49, 0x38,
+ 0x00, 0x30, 0x00, 0x37, 0x00, 0x2D, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x43, 0x63,
+ 0x6D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x52, 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E,
+ 0x44, 0x00, 0x00, 0x53, 0x73, 0x00, 0x63, 0x43, 0x00, 0x73, 0x53, 0x00, 0x6B,
+ 0x4B, 0x00, 0x68, 0x48, 0x00, 0x2D, 0x00, 0x35, 0x00, 0x67, 0x47, 0x00, 0x69,
+ 0x49, 0x00, 0x00, 0x38, 0x00, 0x35, 0x00, 0x00, 0x34, 0x00, 0x32, 0x00, 0x00,
+ 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36,
+ 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x34, 0x00, 0x31, 0x00, 0x00, 0x31,
+ 0x30, 0x00, 0x30, 0x00, 0x64, 0x44, 0x00, 0x69, 0x49, 0x00, 0x73, 0x53, 0x00,
+ 0x00, 0x45, 0x65, 0x00, 0x73, 0x53, 0x00, 0x65, 0x45, 0x00, 0x6E, 0x4E, 0x00,
+ 0x69, 0x49, 0x00, 0x00, 0x52, 0x72, 0x52, 0x72, 0x53, 0x73, 0x00, 0x00, 0x00,
+ 0x69, 0x67, 0x61, 0x49, 0x47, 0x41, 0x00, 0x00, 0x37, 0x00, 0x33, 0x31, 0x30,
+ 0x00, 0x00, 0x36, 0x00, 0x32, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x33,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x37, 0x30, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x37, 0x00, 0x36, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x30, 0x00, 0x33, 0x32, 0x00, 0x00, 0x30,
+ 0x00, 0x30, 0x00, 0x00, 0x35, 0x00, 0x37, 0x00, 0x00, 0x39, 0x00, 0x00, 0x39,
+ 0x38, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x31,
+ 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39,
+ 0x38, 0x37, 0x36, 0x35, 0x31, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x33, 0x00,
+ 0x00, 0x38, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x33, 0x31, 0x30, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x35, 0x34, 0x33,
+ 0x30, 0x39, 0x32, 0x31, 0x2D, 0x64, 0x44, 0x00, 0x72, 0x52, 0x00, 0x61, 0x41,
+ 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x74, 0x54, 0x00,
+ 0x73, 0x53, 0x00, 0x65, 0x45, 0x00, 0x62, 0x42, 0x00, 0x6F, 0x4F, 0x63, 0x43,
+ 0x00, 0x00, 0x53, 0x73, 0x64, 0x44, 0x35, 0x00, 0x67, 0x47, 0x00, 0x69, 0x49,
+ 0x00, 0x00, 0x52, 0x72, 0x00, 0x00, 0x45, 0x65, 0x00, 0x73, 0x53, 0x00, 0x65,
+ 0x45, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x70, 0x50, 0x00, 0x61, 0x41,
+ 0x00, 0x6A, 0x4A, 0x00, 0x54, 0x74, 0x00, 0x6D, 0x4D, 0x00, 0x66, 0x46, 0x00,
+ 0x64, 0x44, 0x00, 0x6B, 0x4B, 0x00, 0x00, 0x48, 0x68, 0x00, 0x00, 0x00, 0x54,
+ 0x74, 0x4B, 0x6B, 0x70, 0x50, 0x00, 0x63, 0x43, 0x00, 0x75, 0x55, 0x00, 0x00,
+ 0x32, 0x00, 0x31, 0x00, 0x33, 0x00, 0x4B, 0x6B, 0x32, 0x00, 0x62, 0x42, 0x00,
+ 0x00, 0x61, 0x41, 0x00, 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00,
+ 0x61, 0x41, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, 0x68,
+ 0x48, 0x00, 0x74, 0x54, 0x00, 0x64, 0x44, 0x00, 0x69, 0x49, 0x00, 0x77, 0x57,
+ 0x00, 0x66, 0x46, 0x00, 0x6C, 0x4C, 0x00, 0x00, 0x38, 0x00, 0x6E, 0x4E, 0x00,
+ 0x61, 0x41, 0x00, 0x6D, 0x4D, 0x00, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x00,
+ 0x50, 0x70, 0x61, 0x41, 0x00, 0x39, 0x00, 0x6D, 0x4D, 0x00, 0x00, 0x37, 0x00,
+ 0x34, 0x32, 0x00, 0x30, 0x00, 0x00, 0x38, 0x37, 0x33, 0x00, 0x39, 0x38, 0x37,
+ 0x32, 0x37, 0x35, 0x31, 0x39, 0x36, 0x35, 0x33, 0x31, 0x30, 0x38, 0x34, 0x00,
+ 0x00, 0x39, 0x38, 0x37, 0x36, 0x35, 0x35, 0x33, 0x00, 0x31, 0x30, 0x00, 0x00,
+ 0x69, 0x49, 0x00, 0x61, 0x41, 0x00, 0x68, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x35, 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x00, 0x00, 0x6D,
+ 0x62, 0x4D, 0x42, 0x30, 0x00, 0x38, 0x00, 0x32, 0x00, 0x31, 0x00, 0x33, 0x00,
+ 0x32, 0x00, 0x62, 0x42, 0x00, 0x67, 0x47, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
+ 0x35, 0x33, 0x00, 0x31, 0x00, 0x39, 0x00, 0x35, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x00, 0x72, 0x52, 0x00, 0x00, 0x63, 0x43, 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C,
+ 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, 0x72, 0x52, 0x00, 0x79, 0x59, 0x00,
+ 0x00, 0x4B, 0x6B, 0x00, 0x65, 0x45, 0x00, 0x65, 0x45, 0x00, 0x72, 0x52, 0x00,
+ 0x00, 0x57, 0x77, 0x00, 0x65, 0x45, 0x00, 0x72, 0x52, 0x00, 0x62, 0x42, 0x00,
+ 0x45, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x35, 0x34,
+ 0x33, 0x32, 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, 0x41, 0x00, 0x6E, 0x4E,
+ 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x00, 0x00, 0x6C,
+ 0x4C, 0x38, 0x35, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x73, 0x62, 0x53, 0x42, 0x00,
+ 0x00, 0x72, 0x52, 0x00, 0x38, 0x00, 0x69, 0x49, 0x00, 0x00, 0x37, 0x00, 0x38,
+ 0x00, 0x39, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x36, 0x00, 0x35, 0x00,
+ 0x63, 0x43, 0x00, 0x00, 0x73, 0x6F, 0x53, 0x4F, 0x43, 0x63, 0x00, 0x69, 0x49,
+ 0x00, 0x74, 0x54, 0x00, 0x6C, 0x4C, 0x00, 0x61, 0x41, 0x00, 0x62, 0x42, 0x00,
+ 0x35, 0x00, 0x37, 0x4C, 0x6C, 0x00, 0x61, 0x41, 0x00, 0x75, 0x55, 0x00, 0x67,
+ 0x47, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49,
+ 0x00, 0x74, 0x54, 0x00, 0x6C, 0x4C, 0x00, 0x75, 0x55, 0x00, 0x6D, 0x4D, 0x00,
+ 0x30, 0x57, 0x77, 0x00, 0x65, 0x45, 0x00, 0x72, 0x52, 0x00, 0x62, 0x42, 0x00,
+ 0x65, 0x45, 0x00, 0x68, 0x48, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74,
+ 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, 0x00, 0x32, 0x00, 0x34, 0x00, 0x65,
+ 0x45, 0x00, 0x67, 0x47, 0x00, 0x61, 0x41, 0x00, 0x70, 0x50, 0x00, 0x65, 0x45,
+ 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x00, 0x63, 0x43, 0x36, 0x35,
+ 0x32, 0x00, 0x35, 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x50, 0x38, 0x37, 0x00,
+ 0x63, 0x43, 0x00, 0x00, 0x73, 0x53, 0x00, 0x69, 0x49, 0x00, 0x6A, 0x4A, 0x00,
+ 0x54, 0x74, 0x00, 0x66, 0x46, 0x00, 0x69, 0x49, 0x00, 0x68, 0x48, 0x30, 0x00,
+ 0x32, 0x00, 0x36, 0x00, 0x53, 0x73, 0x00, 0x69, 0x49, 0x00, 0x00, 0x45, 0x65,
+ 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x63, 0x43, 0x00, 0x69, 0x49, 0x00,
+ 0x00, 0x65, 0x45, 0x00, 0x00, 0x65, 0x45, 0x00, 0x00, 0x4C, 0x6C, 0x42, 0x62,
+ 0x00, 0x36, 0x00, 0x00, 0x65, 0x45, 0x00, 0x00, 0x65, 0x45, 0x00, 0x00, 0x4C,
+ 0x6C, 0x42, 0x62, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x38, 0x33, 0x31, 0x00,
+ 0x66, 0x46, 0x00, 0x00, 0x74, 0x6E, 0x54, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x35, 0x00, 0x32,
+ 0x00, 0x00, 0x00, 0x00, 0x32, 0x31, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00,
+ 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, 0x00, 0x31, 0x00, 0x00, 0x31,
+ 0x33, 0x00, 0x73, 0x53, 0x00, 0x77, 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, 0x44,
+ 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x75, 0x74, 0x73, 0x70, 0x6B, 0x69, 0x68,
+ 0x67, 0x65, 0x62, 0x61, 0x57, 0x55, 0x54, 0x53, 0x50, 0x4B, 0x49, 0x48, 0x47,
+ 0x45, 0x42, 0x41, 0x00, 0x00, 0x43, 0x63, 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C,
+ 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, 0x72, 0x52, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, 0x50, 0x48, 0x43, 0x31, 0x32,
+ 0x00, 0x72, 0x52, 0x45, 0x65, 0x41, 0x61, 0x48, 0x68, 0x4B, 0x6B, 0x53, 0x73,
+ 0x49, 0x69, 0x52, 0x72, 0x42, 0x62, 0x52, 0x72, 0x45, 0x65, 0x54, 0x74, 0x53,
+ 0x73, 0x4C, 0x6C, 0x4F, 0x6F, 0x45, 0x65, 0x00, 0x63, 0x43, 0x00, 0x65, 0x45,
+ 0x00, 0x6F, 0x4F, 0x45, 0x65, 0x52, 0x72, 0x53, 0x73, 0x54, 0x74, 0x55, 0x75,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72, 0x6E, 0x69, 0x68, 0x67,
+ 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55, 0x54, 0x53, 0x52, 0x4E,
+ 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x00, 0x2D, 0x43, 0x63,
+ 0x00, 0x69, 0x49, 0x00, 0x6C, 0x4C, 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00,
+ 0x72, 0x52, 0x00, 0x00, 0x79, 0x70, 0x59, 0x50, 0x4F, 0x6F, 0x00, 0x72, 0x52,
+ 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x33, 0x00, 0x37, 0x00,
+ 0x32, 0x00, 0x2D, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65,
+ 0x45, 0x00, 0x2B, 0x00, 0x37, 0x00, 0x37, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x00,
+ 0x4B, 0x6B, 0x65, 0x45, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00,
+ 0x65, 0x45, 0x00, 0x2B, 0x00, 0x34, 0x00, 0x38, 0x00, 0x32, 0x00, 0x2D, 0x00,
+ 0x73, 0x53, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45,
+ 0x00, 0x2B, 0x00, 0x38, 0x00, 0x37, 0x00, 0x32, 0x00, 0x2D, 0x4F, 0x6F, 0x00,
+ 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x37, 0x00,
+ 0x39, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x00, 0x49, 0x69, 0x72, 0x52, 0x4F, 0x6F,
+ 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x35,
+ 0x00, 0x38, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x62, 0x42, 0x4F, 0x6F, 0x00, 0x72,
+ 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x30, 0x00, 0x30,
+ 0x00, 0x35, 0x00, 0x2D, 0x00, 0x6C, 0x4C, 0x00, 0x61, 0x41, 0x00, 0x6E, 0x4E,
+ 0x00, 0x6F, 0x4F, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00,
+ 0x6E, 0x4E, 0x00, 0x72, 0x52, 0x00, 0x65, 0x45, 0x00, 0x74, 0x54, 0x4F, 0x6F,
+ 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x31,
+ 0x00, 0x37, 0x00, 0x38, 0x00, 0x2D, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75,
+ 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x30, 0x00, 0x38, 0x00, 0x32, 0x00,
+ 0x2D, 0x00, 0x00, 0x00, 0x74, 0x73, 0x6E, 0x54, 0x53, 0x4E, 0x41, 0x61, 0x00,
+ 0x6E, 0x4E, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, 0x2D, 0x00, 0x70, 0x50,
+ 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2D,
+ 0x00, 0x2D, 0x00, 0x39, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54,
+ 0x00, 0x61, 0x41, 0x6F, 0x4F, 0x65, 0x45, 0x4F, 0x6F, 0x00, 0x72, 0x52, 0x00,
+ 0x75, 0x55, 0x00, 0x65, 0x45, 0x00, 0x2B, 0x00, 0x37, 0x00, 0x33, 0x00, 0x2D,
+ 0x00, 0x73, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55,
+ 0x53, 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x00, 0x00, 0x2D,
+ 0x00, 0x63, 0x43, 0x00, 0x69, 0x49, 0x00, 0x64, 0x44, 0x00, 0x63, 0x43, 0x34,
+ 0x38, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x61, 0x41, 0x00, 0x6D, 0x4D,
+ 0x38, 0x00, 0x32, 0x00, 0x39, 0x00, 0x5F, 0x00, 0x74, 0x54, 0x00, 0x6F, 0x4F,
+ 0x4E, 0x6E, 0x50, 0x70, 0x3E, 0x00, 0x68, 0x48, 0x00, 0x00, 0x00, 0x74, 0x6B,
+ 0x6A, 0x63, 0x54, 0x4B, 0x4A, 0x43, 0x00, 0x74, 0x54, 0x2D, 0x00, 0x63, 0x43,
+ 0x5F, 0x00, 0x72, 0x52, 0x00, 0x6F, 0x4F, 0x00, 0x66, 0x46, 0x00, 0x5F, 0x00,
+ 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6D, 0x4D, 0x00, 0x72, 0x52, 0x00, 0x6F,
+ 0x4F, 0x00, 0x66, 0x46, 0x00, 0x5F, 0x00, 0x64, 0x44, 0x00, 0x65, 0x45, 0x00,
+ 0x6B, 0x4B, 0x00, 0x63, 0x43, 0x00, 0x61, 0x41, 0x00, 0x70, 0x50, 0x00, 0x5F,
+ 0x00, 0x65, 0x45, 0x00, 0x64, 0x44, 0x00, 0x6F, 0x4F, 0x00, 0x63, 0x43, 0x00,
+ 0x5F, 0x00, 0x78, 0x58, 0x00, 0x69, 0x49, 0x00, 0x6E, 0x4E, 0x00, 0x75, 0x55,
+ 0x00, 0x5F, 0x00, 0x64, 0x44, 0x00, 0x65, 0x45, 0x00, 0x64, 0x44, 0x00, 0x6E,
+ 0x4E, 0x00, 0x65, 0x45, 0x00, 0x74, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+ 0x75, 0x6C, 0x63, 0x62, 0x58, 0x55, 0x4C, 0x43, 0x42, 0x2D, 0x00, 0x32, 0x00,
+ 0x31, 0x00, 0x33, 0x00, 0x32, 0x00, 0x4B, 0x6B, 0x5F, 0x32, 0x00, 0x38, 0x00,
+ 0x6B, 0x4B, 0x00, 0x65, 0x45, 0x00, 0x65, 0x45, 0x00, 0x00, 0x72, 0x62, 0x52,
+ 0x42, 0x2D, 0x00, 0x70, 0x65, 0x50, 0x45, 0x30, 0x33, 0x34, 0x38, 0x39, 0x00,
+ 0x00, 0x00, 0x39, 0x36, 0x31, 0x30, 0x00, 0x33, 0x31, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x32, 0x37, 0x35, 0x31, 0x30, 0x39, 0x35, 0x34, 0x32, 0x31, 0x31, 0x30,
+ 0x33, 0x36, 0x38, 0x35, 0x34, 0x30, 0x38, 0x37, 0x35, 0x39, 0x33, 0x37, 0x36,
+ 0x35, 0x39, 0x38, 0x30, 0x33, 0x32, 0x31, 0x34, 0x34, 0x32, 0x30, 0x33, 0x31,
+ 0x36, 0x35, 0x37, 0x38, 0x39, 0x30, 0x33, 0x31, 0x32, 0x36, 0x39, 0x37, 0x34,
+ 0x30, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, 0x32,
+ 0x31, 0x30, 0x31, 0x30, 0x32, 0x00, 0x30, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34,
+ 0x33, 0x32, 0x31, 0x30, 0x00, 0x35, 0x00, 0x00, 0x00, 0x32, 0x31, 0x30, 0x00,
+ 0x38, 0x36, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x39, 0x34, 0x37, 0x36, 0x38,
+ 0x35, 0x33, 0x32, 0x31, 0x00, 0x2D, 0x00, 0x61, 0x41, 0x00, 0x6E, 0x4E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x36, 0x37, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x37, 0x36, 0x33, 0x32, 0x31, 0x30, 0x31, 0x00, 0x00, 0x39, 0x38, 0x00,
+ 0x00, 0x00, 0x00, 0x38, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39,
+ 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35,
+ 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x33, 0x32, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x36, 0x35,
+ 0x34, 0x33, 0x00, 0x00, 0x00, 0x00, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x34, 0x36, 0x35, 0x33, 0x32, 0x31, 0x31, 0x33, 0x38, 0x33, 0x35, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+ 0x32, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x31, 0x00, 0x00, 0x38, 0x00, 0x00,
+ 0x00, 0x36, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33,
+ 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x35, 0x33, 0x30,
+ 0x00, 0x00, 0x00, 0x00, 0x34, 0x31, 0x00, 0x32, 0x38, 0x00, 0x38, 0x00, 0x00,
+ 0x33, 0x34, 0x00, 0x00, 0x35, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36,
+ 0x38, 0x33, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x39, 0x32, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x34, 0x31, 0x00, 0x00, 0x34, 0x00,
+ 0x35, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x31, 0x30,
+ 0x00, 0x00, 0x36, 0x00, 0x34, 0x00, 0x00, 0x00, 0x36, 0x35, 0x00, 0x00, 0x39,
+ 0x00, 0x30, 0x00, 0x35, 0x34, 0x30, 0x37, 0x00, 0x00, 0x39, 0x37, 0x38, 0x35,
+ 0x00, 0x00, 0x00, 0x00, 0x31, 0x30, 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x00,
+ 0x37, 0x36, 0x33, 0x30, 0x00, 0x00, 0x36, 0x00, 0x37, 0x39, 0x00, 0x00, 0x38,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0x31, 0x00, 0x00, 0x00, 0x00,
+ 0x35, 0x30, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x37, 0x36, 0x35, 0x34,
+ 0x00, 0x00, 0x32, 0x39, 0x33, 0x00, 0x00, 0x36, 0x00, 0x00, 0x35, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x33, 0x32, 0x30,
+ 0x00, 0x00, 0x00, 0x30, 0x35, 0x33, 0x32, 0x00, 0x00, 0x33, 0x00, 0x32, 0x39,
+ 0x38, 0x37, 0x36, 0x34, 0x30, 0x00, 0x00, 0x35, 0x34, 0x38, 0x00, 0x37, 0x00,
+ 0x00, 0x35, 0x00, 0x34, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x34,
+ 0x33, 0x31, 0x30, 0x00, 0x00, 0x32, 0x00, 0x35, 0x00, 0x39, 0x00, 0x00, 0x31,
+ 0x00, 0x00, 0x34, 0x00, 0x00, 0x35, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00,
+ 0x34, 0x33, 0x32, 0x31, 0x00, 0x32, 0x00, 0x00, 0x32, 0x31, 0x00, 0x00, 0x30,
+ 0x00, 0x00, 0x37, 0x00, 0x00, 0x37, 0x33, 0x32, 0x39, 0x33, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37, 0x36, 0x35, 0x33, 0x37, 0x35, 0x32,
+ 0x31, 0x30, 0x38, 0x00, 0x00, 0x00, 0x32, 0x00, 0x39, 0x36, 0x35, 0x33, 0x32,
+ 0x30, 0x38, 0x34, 0x31, 0x00, 0x00, 0x31, 0x30, 0x34, 0x38, 0x35, 0x00, 0x00,
+ 0x31, 0x37, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x39, 0x37, 0x36,
+ 0x35, 0x33, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00,
+ 0x36, 0x00, 0x00, 0x00, 0x34, 0x36, 0x35, 0x33, 0x38, 0x36, 0x34, 0x33, 0x32,
+ 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x31, 0x30,
+ 0x38, 0x37, 0x36, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36,
+ 0x35, 0x34, 0x33, 0x32, 0x30, 0x00, 0x39, 0x38, 0x37, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x39, 0x37, 0x36, 0x34, 0x32, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37,
+ 0x36, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x35, 0x34, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x54, 0x39,
+ 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x31, 0x30, 0x30, 0x37,
+ 0x00, 0x00, 0x33, 0x30, 0x36, 0x38, 0x37, 0x33, 0x35, 0x34, 0x30, 0x37, 0x30,
+ 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x35, 0x30, 0x31, 0x37, 0x00, 0x00,
+ 0x36, 0x30, 0x34, 0x33, 0x30, 0x37, 0x00, 0x00, 0x33, 0x32, 0x30, 0x00, 0x30,
+ 0x30, 0x37, 0x35, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x39, 0x33, 0x38, 0x33,
+ 0x35, 0x36, 0x37, 0x37, 0x35, 0x32, 0x31, 0x30, 0x38, 0x39, 0x36, 0x35, 0x33,
+ 0x32, 0x31, 0x30, 0x38, 0x34, 0x34, 0x38, 0x31, 0x30, 0x35, 0x30, 0x37, 0x31,
+ 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x35,
+ 0x33, 0x31, 0x34, 0x35, 0x33, 0x35, 0x34, 0x33, 0x32, 0x36, 0x38, 0x30, 0x33,
+ 0x31, 0x34, 0x32, 0x36, 0x37, 0x38, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x33, 0x32, 0x34, 0x36, 0x37, 0x39, 0x30, 0x31, 0x36, 0x37, 0x38,
+ 0x39, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37,
+ 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x30, 0x38, 0x39, 0x30,
+ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x36, 0x35, 0x37, 0x37,
+ 0x30, 0x31, 0x32, 0x33, 0x36, 0x31, 0x39, 0x38, 0x37, 0x38, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x32, 0x34,
+ 0x35, 0x32, 0x33, 0x39, 0x30, 0x32, 0x33, 0x37, 0x39, 0x38, 0x37, 0x36, 0x35,
+ 0x34, 0x33, 0x32, 0x31, 0x30, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x30, 0x34,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x38,
+ 0x33, 0x31, 0x35, 0x33, 0x30, 0x32, 0x31, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+ 0x36, 0x35, 0x30, 0x31, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x37,
+ 0x35, 0x33, 0x30, 0x33, 0x34, 0x35, 0x33, 0x36, 0x33, 0x30, 0x31, 0x38, 0x32,
+ 0x39, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x00, 0x00, 0x00, 0x00,
+ 0x33, 0x32, 0x31, 0x30, 0x36, 0x00, 0x39, 0x38, 0x31, 0x32, 0x33, 0x30, 0x35,
+ 0x31, 0x00, 0x00, 0x00, 0x00, 0x37, 0x36, 0x35, 0x34, 0x00, 0x00, 0x39, 0x33,
+ 0x36, 0x35, 0x30, 0x32, 0x33, 0x34, 0x35, 0x00, 0x00, 0x00, 0x35, 0x33, 0x32,
+ 0x33, 0x00, 0x32, 0x39, 0x38, 0x37, 0x36, 0x34, 0x30, 0x00, 0x00, 0x35, 0x34,
+ 0x38, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x31, 0x30, 0x32, 0x00,
+ 0x31, 0x00, 0x36, 0x30, 0x36, 0x36, 0x00, 0x00, 0x00, 0x36, 0x35, 0x33, 0x39,
+ 0x38, 0x37, 0x00, 0x34, 0x00, 0x00, 0x34, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x39, 0x38, 0x35, 0x34, 0x31, 0x30, 0x38, 0x00, 0x30, 0x00, 0x37, 0x31,
+ 0x34, 0x00, 0x32, 0x38, 0x00, 0x38, 0x00, 0x00, 0x34, 0x31, 0x34, 0x00, 0x35,
+ 0x00, 0x33, 0x00, 0x00, 0x00, 0x37, 0x33, 0x32, 0x36, 0x00, 0x34, 0x00, 0x35,
+ 0x39, 0x00, 0x30, 0x00, 0x37, 0x00, 0x00, 0x38, 0x35, 0x32, 0x00, 0x32, 0x00,
+ 0x37, 0x00, 0x33, 0x35, 0x00, 0x34, 0x00, 0x33, 0x00, 0x37, 0x32, 0x00, 0x35,
+ 0x00, 0x39, 0x31, 0x34, 0x35, 0x35, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x32,
+ 0x31, 0x00, 0x32, 0x00, 0x00, 0x32, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x36, 0x35, 0x33, 0x32, 0x31, 0x30, 0x00, 0x64, 0x44, 0x00, 0x69, 0x49, 0x00,
+ 0x73, 0x53, 0x00, 0x63, 0x43, 0x00, 0x00, 0x00, 0x63, 0x43, 0x39, 0x38, 0x37,
+ 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2D, 0x00, 0x6D, 0x4D, 0x32, 0x00, 0x2D,
+ 0x00, 0x73, 0x53, 0x00, 0x63, 0x43, 0x00, 0x75, 0x55, 0x00, 0x2D, 0x00, 0x36,
+ 0x00, 0x34, 0x00, 0x36, 0x00, 0x30, 0x31, 0x00, 0x2D, 0x00, 0x6E, 0x4E, 0x00,
+ 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C, 0x00, 0x2D,
+ 0x00, 0x31, 0x00, 0x2E, 0x00, 0x33, 0x00, 0x2D, 0x00, 0x73, 0x53, 0x00, 0x77,
+ 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49,
+ 0x00, 0x77, 0x57, 0x00, 0x00, 0x35, 0x33, 0x2D, 0x32, 0x00, 0x2D, 0x00, 0x6E,
+ 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41, 0x00, 0x6C, 0x4C,
+ 0x00, 0x2D, 0x00, 0x73, 0x53, 0x00, 0x77, 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64,
+ 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x77, 0x57, 0x00, 0x00, 0x2D,
+ 0x00, 0x00, 0x36, 0x37, 0x38, 0x39, 0x34, 0x33, 0x35, 0x32, 0x31, 0x00, 0x2D,
+ 0x00, 0x39, 0x00, 0x35, 0x00, 0x38, 0x30, 0x39, 0x31, 0x30, 0x37, 0x36, 0x38,
+ 0x38, 0x39, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x34, 0x32, 0x31, 0x30,
+ 0x00, 0x36, 0x35, 0x31, 0x00, 0x2D, 0x00, 0x72, 0x52, 0x00, 0x00, 0x00, 0x69,
+ 0x49, 0x38, 0x31, 0x53, 0x73, 0x00, 0x75, 0x55, 0x00, 0x2D, 0x00, 0x36, 0x00,
+ 0x34, 0x31, 0x00, 0x39, 0x00, 0x39, 0x00, 0x31, 0x00, 0x3A, 0x00, 0x76, 0x56,
+ 0x00, 0x72, 0x52, 0x00, 0x69, 0x49, 0x00, 0x2E, 0x00, 0x36, 0x00, 0x34, 0x37,
+ 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x35, 0x3A, 0x37, 0x00, 0x38,
+ 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00,
+ 0x31, 0x00, 0x00, 0x3A, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00,
+ 0x3A, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x37, 0x00,
+ 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x37, 0x00, 0x38, 0x00, 0x39,
+ 0x00, 0x31, 0x00, 0x00, 0x3A, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A,
+ 0x39, 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33,
+ 0x32, 0x31, 0x00, 0x2D, 0x00, 0x39, 0x00, 0x35, 0x00, 0x38, 0x00, 0x00, 0x38,
+ 0x36, 0x00, 0x00, 0x00, 0x5F, 0x36, 0x2D, 0x00, 0x6F, 0x4F, 0x00, 0x00, 0x00,
+ 0x73, 0x62, 0x61, 0x53, 0x42, 0x41, 0x31, 0x00, 0x30, 0x00, 0x32, 0x00, 0x30,
+ 0x00, 0x58, 0x78, 0x00, 0x5F, 0x00, 0x73, 0x53, 0x00, 0x69, 0x49, 0x2D, 0x00,
+ 0x38, 0x4E, 0x6E, 0x00, 0x61, 0x41, 0x00, 0x65, 0x45, 0x00, 0x00, 0x72, 0x69,
+ 0x52, 0x49, 0x31, 0x00, 0x30, 0x00, 0x36, 0x00, 0x35, 0x00, 0x5F, 0x39, 0x37,
+ 0x00, 0x38, 0x00, 0x39, 0x00, 0x31, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x30, 0x00,
+ 0x36, 0x00, 0x35, 0x00, 0x5F, 0x00, 0x63, 0x43, 0x00, 0x00, 0x63, 0x5F, 0x43,
+ 0x00, 0x00, 0x73, 0x6F, 0x53, 0x4F, 0x39, 0x00, 0x31, 0x35, 0x34, 0x33, 0x32,
+ 0x2D, 0x00, 0x6E, 0x4E, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x61, 0x41,
+ 0x35, 0x34, 0x33, 0x32, 0x31, 0x33, 0x49, 0x69, 0x00, 0x6A, 0x4A, 0x00, 0x6E,
+ 0x4E, 0x00, 0x61, 0x41, 0x00, 0x6B, 0x4B, 0x00, 0x00, 0x39, 0x5F, 0x00, 0x73,
+ 0x53, 0x6F, 0x4F, 0x00, 0x72, 0x52, 0x00, 0x75, 0x55, 0x00, 0x65, 0x45, 0x00,
+ 0x2B, 0x00, 0x30, 0x00, 0x35, 0x00, 0x38, 0x00, 0x2D, 0x00, 0x6C, 0x4C, 0x00,
+ 0x61, 0x41, 0x00, 0x75, 0x55, 0x00, 0x67, 0x47, 0x00, 0x6E, 0x4E, 0x00, 0x69,
+ 0x49, 0x00, 0x6C, 0x4C, 0x00, 0x69, 0x49, 0x00, 0x74, 0x54, 0x00, 0x6C, 0x4C,
+ 0x00, 0x75, 0x55, 0x00, 0x6D, 0x4D, 0x00, 0x2D, 0x00, 0x63, 0x43, 0x6F, 0x4F,
+ 0x38, 0x5F, 0x00, 0x74, 0x54, 0x00, 0x66, 0x46, 0x00, 0x69, 0x49, 0x00, 0x68,
+ 0x48, 0x2D, 0x00, 0x73, 0x53, 0x00, 0x69, 0x49, 0x32, 0x2D, 0x00, 0x73, 0x53,
+ 0x73, 0x53, 0x00, 0x61, 0x41, 0x00, 0x00, 0x2D, 0x6C, 0x62, 0x4C, 0x42, 0x2D,
+ 0x00, 0x36, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x00, 0x32, 0x00, 0x00, 0x38, 0x33,
+ 0x31, 0x00, 0x38, 0x33, 0x31, 0x2D, 0x00, 0x66, 0x46, 0x00, 0x00, 0x00, 0x74,
+ 0x73, 0x63, 0x54, 0x53, 0x43, 0x39, 0x31, 0x00, 0x2D, 0x00, 0x73, 0x53, 0x00,
+ 0x77, 0x57, 0x00, 0x6F, 0x4F, 0x00, 0x64, 0x44, 0x00, 0x6E, 0x4E, 0x00, 0x69,
+ 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28,
+ 0x30, 0x31, 0x32, 0x35, 0x37, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36,
+ 0x39, 0x42, 0x28, 0x1B, 0x1B, 0x35, 0x36, 0x42, 0x28, 0x34, 0x42, 0x28, 0x1B,
+ 0x30, 0x42, 0x28, 0x47, 0x67, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B,
+ 0x69, 0x49, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42,
+ 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x65,
+ 0x45, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B,
+ 0x72, 0x52, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x74,
+ 0x54, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B,
+ 0x65, 0x45, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42,
+ 0x28, 0x38, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x38, 0x36, 0x42, 0x28,
+ 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B,
+ 0x34, 0x42, 0x28, 0x1B, 0x2E, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x78,
+ 0x58, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B,
+ 0x73, 0x53, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28,
+ 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x49, 0x69, 0x42,
+ 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28,
+ 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28,
+ 0x1B, 0x1B, 0x43, 0x63, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x52,
+ 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, 0x44, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28,
+ 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x6B, 0x4B,
+ 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x35,
+ 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x38,
+ 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x34, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28,
+ 0x1B, 0x1B, 0x39, 0x38, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
+ 0x37, 0x38, 0x39, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28,
+ 0x1B, 0x1B, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x64, 0x44,
+ 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x45,
+ 0x65, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28,
+ 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x52, 0x72, 0x42,
+ 0x28, 0x52, 0x72, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x69,
+ 0x67, 0x61, 0x49, 0x47, 0x41, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x33, 0x31,
+ 0x30, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x30, 0x42,
+ 0x28, 0x33, 0x38, 0x42, 0x28, 0x30, 0x34, 0x35, 0x42, 0x28, 0x30, 0x37, 0x42,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B,
+ 0x36, 0x42, 0x28, 0x30, 0x33, 0x34, 0x42, 0x28, 0x1B, 0x33, 0x32, 0x42, 0x28,
+ 0x30, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x35, 0x42, 0x28, 0x1B, 0x37, 0x42,
+ 0x28, 0x39, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, 0x39, 0x38, 0x34,
+ 0x42, 0x28, 0x30, 0x31, 0x42, 0x28, 0x30, 0x42, 0x28, 0x31, 0x42, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x31, 0x42, 0x28, 0x34,
+ 0x33, 0x35, 0x42, 0x28, 0x38, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x33, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x34, 0x33, 0x30, 0x39, 0x32, 0x31, 0x2D, 0x42,
+ 0x28, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x61, 0x41,
+ 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B,
+ 0x61, 0x41, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42,
+ 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x6F,
+ 0x4F, 0x42, 0x28, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x1B, 0x53, 0x73, 0x64, 0x44,
+ 0x42, 0x28, 0x35, 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x69, 0x49,
+ 0x42, 0x28, 0x52, 0x72, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x73, 0x53,
+ 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B,
+ 0x61, 0x41, 0x42, 0x28, 0x1B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42,
+ 0x28, 0x1B, 0x6A, 0x4A, 0x42, 0x28, 0x1B, 0x54, 0x74, 0x42, 0x28, 0x1B, 0x6D,
+ 0x4D, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28,
+ 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x48, 0x68, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x54,
+ 0x74, 0x4B, 0x6B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B,
+ 0x75, 0x55, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x33,
+ 0x42, 0x28, 0x1B, 0x4B, 0x6B, 0x32, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28,
+ 0x41, 0x61, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42,
+ 0x28, 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x74,
+ 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6B, 0x4B, 0x42, 0x28,
+ 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x64, 0x44,
+ 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B,
+ 0x66, 0x46, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B,
+ 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42,
+ 0x28, 0x1B, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B,
+ 0x50, 0x70, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x6D, 0x4D,
+ 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x34, 0x32, 0x42, 0x28, 0x1B, 0x30, 0x42,
+ 0x28, 0x33, 0x38, 0x37, 0x42, 0x28, 0x1B, 0x39, 0x38, 0x37, 0x42, 0x28, 0x32,
+ 0x42, 0x28, 0x31, 0x35, 0x37, 0x42, 0x28, 0x30, 0x31, 0x33, 0x35, 0x36, 0x39,
+ 0x38, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x42, 0x28,
+ 0x33, 0x35, 0x42, 0x28, 0x1B, 0x31, 0x30, 0x42, 0x28, 0x49, 0x69, 0x42, 0x28,
+ 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x35, 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x42,
+ 0x28, 0x1B, 0x1B, 0x6D, 0x62, 0x4D, 0x42, 0x42, 0x28, 0x30, 0x42, 0x28, 0x1B,
+ 0x38, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x33,
+ 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x67,
+ 0x47, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x33, 0x35, 0x42, 0x28, 0x1B, 0x31,
+ 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42,
+ 0x28, 0x72, 0x52, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x79, 0x59, 0x42, 0x28,
+ 0x4B, 0x6B, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42,
+ 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x57, 0x77, 0x42, 0x28, 0x1B, 0x65, 0x45,
+ 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B,
+ 0x45, 0x65, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35,
+ 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, 0x41, 0x42, 0x28, 0x1B, 0x6E, 0x4E,
+ 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B,
+ 0x61, 0x41, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x6C, 0x4C, 0x38, 0x35, 0x42, 0x28,
+ 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x1B, 0x73, 0x62, 0x53, 0x42, 0x42, 0x28,
+ 0x52, 0x72, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28,
+ 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31,
+ 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x42,
+ 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x1B, 0x73,
+ 0x6F, 0x53, 0x4F, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x61,
+ 0x41, 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B,
+ 0x37, 0x42, 0x28, 0x4C, 0x6C, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B,
+ 0x75, 0x55, 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42,
+ 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28,
+ 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x30, 0x42,
+ 0x28, 0x57, 0x77, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x72, 0x52,
+ 0x42, 0x28, 0x1B, 0x62, 0x42, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B,
+ 0x68, 0x48, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6C,
+ 0x4C, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x65,
+ 0x45, 0x42, 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28,
+ 0x1B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x64, 0x44,
+ 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x63, 0x43, 0x36,
+ 0x35, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x70, 0x50, 0x38, 0x37, 0x42, 0x28, 0x1B, 0x63, 0x43,
+ 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x6A,
+ 0x4A, 0x42, 0x28, 0x1B, 0x54, 0x74, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28,
+ 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x30, 0x42, 0x28,
+ 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x53, 0x73, 0x42, 0x28,
+ 0x1B, 0x69, 0x49, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42,
+ 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x1B,
+ 0x4C, 0x6C, 0x42, 0x62, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x45, 0x65, 0x42,
+ 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x1B, 0x4C, 0x6C, 0x42, 0x62, 0x42, 0x28,
+ 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x38, 0x33, 0x31, 0x42, 0x28, 0x1B, 0x66,
+ 0x46, 0x42, 0x28, 0x1B, 0x1B, 0x74, 0x6E, 0x54, 0x4E, 0x42, 0x28, 0x30, 0x31,
+ 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28,
+ 0x1B, 0x32, 0x42, 0x28, 0x31, 0x32, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28,
+ 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41,
+ 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x1B,
+ 0x31, 0x33, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42,
+ 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E,
+ 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x77, 0x75, 0x74, 0x73, 0x70, 0x6B,
+ 0x69, 0x68, 0x67, 0x65, 0x62, 0x61, 0x57, 0x55, 0x54, 0x53, 0x50, 0x4B, 0x49,
+ 0x48, 0x47, 0x45, 0x42, 0x41, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28,
+ 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, 0x50, 0x48, 0x43, 0x42,
+ 0x28, 0x31, 0x32, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x45, 0x65, 0x42,
+ 0x28, 0x41, 0x61, 0x48, 0x68, 0x42, 0x28, 0x4B, 0x6B, 0x42, 0x28, 0x53, 0x73,
+ 0x42, 0x28, 0x49, 0x69, 0x52, 0x72, 0x42, 0x28, 0x42, 0x62, 0x52, 0x72, 0x42,
+ 0x28, 0x45, 0x65, 0x42, 0x28, 0x54, 0x74, 0x53, 0x73, 0x42, 0x28, 0x4C, 0x6C,
+ 0x4F, 0x6F, 0x42, 0x28, 0x45, 0x65, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28,
+ 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x45, 0x65, 0x42,
+ 0x28, 0x52, 0x72, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x54, 0x74, 0x42, 0x28,
+ 0x55, 0x75, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72,
+ 0x6E, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55,
+ 0x54, 0x53, 0x52, 0x4E, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
+ 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x43, 0x63, 0x42, 0x28, 0x1B, 0x69, 0x49,
+ 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B,
+ 0x69, 0x49, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, 0x79, 0x70,
+ 0x59, 0x50, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28,
+ 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42,
+ 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28,
+ 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42,
+ 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x1B, 0x4B, 0x6B, 0x65, 0x45, 0x42, 0x28, 0x4F,
+ 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28,
+ 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28,
+ 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B,
+ 0x73, 0x53, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28,
+ 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42,
+ 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28,
+ 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42,
+ 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x1B, 0x49, 0x69, 0x72, 0x52, 0x42, 0x28, 0x4F,
+ 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28,
+ 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28,
+ 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B,
+ 0x62, 0x42, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28,
+ 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42,
+ 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28,
+ 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x65, 0x45,
+ 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72,
+ 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28,
+ 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B,
+ 0x38, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72,
+ 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28,
+ 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B,
+ 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x74, 0x73, 0x6E,
+ 0x54, 0x53, 0x4E, 0x42, 0x28, 0x41, 0x61, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42,
+ 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x1B, 0x2D,
+ 0x42, 0x28, 0x1B, 0x70, 0x50, 0x42, 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72,
+ 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B,
+ 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42,
+ 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x6F, 0x4F, 0x42, 0x28, 0x65, 0x45, 0x42,
+ 0x28, 0x4F, 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55,
+ 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x37,
+ 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53,
+ 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55, 0x53,
+ 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x28, 0x1B, 0x2D,
+ 0x42, 0x28, 0x00, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28,
+ 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x34, 0x38, 0x42,
+ 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28,
+ 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x38, 0x42, 0x28,
+ 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B,
+ 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x4E, 0x6E, 0x42, 0x28,
+ 0x50, 0x70, 0x42, 0x28, 0x3E, 0x42, 0x28, 0x1B, 0x68, 0x48, 0x42, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x74, 0x6B, 0x6A, 0x63, 0x54, 0x4B, 0x4A, 0x43, 0x42, 0x28, 0x1B,
+ 0x74, 0x54, 0x2D, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x5F, 0x42, 0x28,
+ 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x66, 0x46,
+ 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61,
+ 0x41, 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28,
+ 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, 0x1B, 0x5F, 0x42,
+ 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x6B,
+ 0x4B, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28,
+ 0x1B, 0x70, 0x50, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42,
+ 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x63,
+ 0x43, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x78, 0x58, 0x42, 0x28, 0x1B,
+ 0x69, 0x49, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42,
+ 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x65, 0x45,
+ 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B,
+ 0x65, 0x45, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x78, 0x75, 0x6C, 0x63, 0x62, 0x58, 0x55, 0x4C, 0x43, 0x42, 0x42, 0x28,
+ 0x2D, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x33,
+ 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x4B, 0x6B, 0x5F, 0x32, 0x42, 0x28,
+ 0x00, 0x1B, 0x6B, 0x4B, 0x42, 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x65,
+ 0x45, 0x42, 0x28, 0x1B, 0x1B, 0x72, 0x62, 0x52, 0x42, 0x42, 0x28, 0x2D, 0x42,
+ 0x28, 0x1B, 0x70, 0x65, 0x50, 0x45, 0x42, 0x28, 0x30, 0x42, 0x28, 0x33, 0x34,
+ 0x38, 0x39, 0x42, 0x28, 0x1B, 0x1B, 0x39, 0x36, 0x31, 0x30, 0x42, 0x28, 0x33,
+ 0x31, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x38, 0x32, 0x37, 0x35, 0x31, 0x30,
+ 0x42, 0x28, 0x39, 0x35, 0x34, 0x31, 0x32, 0x42, 0x28, 0x31, 0x30, 0x33, 0x36,
+ 0x42, 0x28, 0x38, 0x35, 0x42, 0x28, 0x30, 0x34, 0x35, 0x37, 0x38, 0x39, 0x33,
+ 0x42, 0x28, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x42,
+ 0x28, 0x30, 0x32, 0x34, 0x33, 0x31, 0x35, 0x36, 0x37, 0x38, 0x39, 0x42, 0x28,
+ 0x30, 0x33, 0x31, 0x32, 0x42, 0x28, 0x36, 0x39, 0x37, 0x34, 0x42, 0x28, 0x30,
+ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33,
+ 0x32, 0x31, 0x30, 0x42, 0x28, 0x31, 0x30, 0x32, 0x42, 0x28, 0x1B, 0x30, 0x42,
+ 0x28, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28,
+ 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x32, 0x31, 0x30, 0x42, 0x28, 0x38,
+ 0x36, 0x42, 0x28, 0x37, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x1B, 0x1B, 0x39,
+ 0x34, 0x36, 0x37, 0x38, 0x35, 0x33, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42,
+ 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x38, 0x39,
+ 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x42,
+ 0x28, 0x36, 0x35, 0x37, 0x42, 0x28, 0x37, 0x30, 0x31, 0x32, 0x33, 0x36, 0x42,
+ 0x28, 0x31, 0x42, 0x28, 0x39, 0x38, 0x42, 0x28, 0x37, 0x38, 0x42, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30,
+ 0x42, 0x28, 0x32, 0x34, 0x35, 0x42, 0x28, 0x32, 0x33, 0x39, 0x42, 0x28, 0x30,
+ 0x32, 0x33, 0x37, 0x42, 0x28, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28,
+ 0x30, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x36, 0x35, 0x33,
+ 0x32, 0x31, 0x42, 0x28, 0x31, 0x33, 0x38, 0x42, 0x28, 0x33, 0x35, 0x42, 0x28,
+ 0x32, 0x30, 0x31, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x28, 0x38, 0x42,
+ 0x28, 0x1B, 0x36, 0x35, 0x30, 0x42, 0x28, 0x30, 0x31, 0x32, 0x33, 0x42, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x33, 0x30, 0x42, 0x28, 0x31,
+ 0x34, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42,
+ 0x28, 0x33, 0x34, 0x42, 0x28, 0x35, 0x33, 0x42, 0x28, 0x36, 0x33, 0x30, 0x31,
+ 0x38, 0x42, 0x28, 0x32, 0x39, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x39, 0x38, 0x37, 0x36, 0x34, 0x31, 0x42, 0x28, 0x34, 0x42, 0x28, 0x1B, 0x35,
+ 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x33,
+ 0x32, 0x31, 0x30, 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B,
+ 0x36, 0x35, 0x42, 0x28, 0x39, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x30,
+ 0x34, 0x35, 0x37, 0x42, 0x28, 0x1B, 0x1B, 0x39, 0x37, 0x38, 0x35, 0x42, 0x28,
+ 0x30, 0x31, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x37,
+ 0x42, 0x28, 0x1B, 0x1B, 0x37, 0x36, 0x33, 0x30, 0x42, 0x28, 0x36, 0x42, 0x28,
+ 0x1B, 0x37, 0x39, 0x42, 0x28, 0x38, 0x42, 0x28, 0x31, 0x32, 0x33, 0x42, 0x28,
+ 0x30, 0x35, 0x42, 0x28, 0x31, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36,
+ 0x35, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x32, 0x39, 0x33, 0x42, 0x28, 0x36, 0x42,
+ 0x28, 0x35, 0x42, 0x28, 0x30, 0x32, 0x33, 0x34, 0x35, 0x42, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x30, 0x35, 0x33, 0x32, 0x42, 0x28, 0x33, 0x42, 0x28, 0x1B, 0x32, 0x42,
+ 0x28, 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, 0x30, 0x34, 0x42, 0x28, 0x1B, 0x1B,
+ 0x35, 0x34, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x35, 0x42,
+ 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x37, 0x34, 0x33, 0x31, 0x30, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x35,
+ 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x31, 0x42, 0x28, 0x34, 0x42, 0x28, 0x35,
+ 0x42, 0x28, 0x35, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x32, 0x31,
+ 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x32, 0x31, 0x42, 0x28, 0x30,
+ 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x1B, 0x37, 0x33, 0x32, 0x42, 0x28, 0x39,
+ 0x33, 0x42, 0x28, 0x38, 0x33, 0x35, 0x36, 0x37, 0x42, 0x28, 0x30, 0x31, 0x32,
+ 0x35, 0x37, 0x38, 0x42, 0x28, 0x32, 0x42, 0x28, 0x00, 0x1B, 0x30, 0x32, 0x33,
+ 0x35, 0x36, 0x39, 0x38, 0x34, 0x31, 0x42, 0x28, 0x30, 0x31, 0x34, 0x38, 0x35,
+ 0x42, 0x28, 0x31, 0x37, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x38, 0x39, 0x37, 0x36, 0x35, 0x33, 0x31, 0x42, 0x28, 0x30, 0x42, 0x28, 0x36,
+ 0x42, 0x28, 0x36, 0x42, 0x28, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x34, 0x36, 0x35,
+ 0x33, 0x42, 0x28, 0x38, 0x32, 0x33, 0x34, 0x36, 0x35, 0x42, 0x28, 0x34, 0x31,
+ 0x33, 0x30, 0x32, 0x36, 0x37, 0x38, 0x42, 0x28, 0x30, 0x32, 0x33, 0x34, 0x35,
+ 0x36, 0x37, 0x38, 0x39, 0x42, 0x28, 0x37, 0x38, 0x39, 0x42, 0x28, 0x1B, 0x00,
+ 0x33, 0x32, 0x36, 0x37, 0x39, 0x34, 0x42, 0x28, 0x30, 0x31, 0x36, 0x37, 0x38,
+ 0x39, 0x42, 0x28, 0x34, 0x35, 0x42, 0x28, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,
+ 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x30, 0x74,
+ 0x54, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x42, 0x28, 0x31,
+ 0x30, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x33, 0x30, 0x42, 0x28,
+ 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39,
+ 0x38, 0x37, 0x35, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x36, 0x30,
+ 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x33, 0x32, 0x42, 0x28, 0x42,
+ 0x28, 0x1B, 0x30, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x37, 0x33, 0x32, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x33, 0x31, 0x42, 0x28, 0x42, 0x28, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33,
+ 0x32, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x30, 0x42, 0x28, 0x42, 0x28, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x33, 0x30, 0x42, 0x28, 0x42, 0x28, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36,
+ 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x33, 0x32, 0x31, 0x30, 0x42, 0x28, 0x42,
+ 0x28, 0x1B, 0x39, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x39,
+ 0x33, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x35,
+ 0x33, 0x32, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x42, 0x28, 0x42,
+ 0x28, 0x1B, 0x1B, 0x35, 0x34, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x31, 0x30, 0x42, 0x28, 0x42, 0x28, 0x1B,
+ 0x31, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x34, 0x42,
+ 0x28, 0x1B, 0x1B, 0x34, 0x30, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x39, 0x38, 0x35, 0x34, 0x31, 0x30, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x30, 0x42,
+ 0x28, 0x1B, 0x37, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x42, 0x28,
+ 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x1B, 0x34, 0x31, 0x42, 0x28, 0x42, 0x28, 0x1B,
+ 0x35, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x37, 0x33, 0x32,
+ 0x42, 0x28, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x42,
+ 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B, 0x1B, 0x38, 0x35,
+ 0x42, 0x28, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x37, 0x42, 0x28, 0x1B,
+ 0x33, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28,
+ 0x1B, 0x37, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x39, 0x42,
+ 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x34, 0x33, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x32,
+ 0x31, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x32,
+ 0x31, 0x30, 0x42, 0x28, 0x1B, 0x64, 0x44, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x63, 0x43, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2D,
+ 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x32, 0x42, 0x28, 0x1B, 0x2D, 0x42,
+ 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28, 0x1B, 0x75,
+ 0x55, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x34,
+ 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x31, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6C,
+ 0x4C, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2E,
+ 0x42, 0x28, 0x1B, 0x33, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53,
+ 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B,
+ 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x33, 0x35, 0x2D, 0x42, 0x28, 0x32,
+ 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28,
+ 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42,
+ 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x64,
+ 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28,
+ 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B,
+ 0x36, 0x33, 0x34, 0x39, 0x37, 0x38, 0x35, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x2D,
+ 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42,
+ 0x28, 0x30, 0x31, 0x39, 0x42, 0x28, 0x30, 0x42, 0x28, 0x37, 0x36, 0x42, 0x28,
+ 0x38, 0x42, 0x28, 0x38, 0x39, 0x34, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x33, 0x34, 0x32, 0x31, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x35, 0x31, 0x42, 0x28,
+ 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x69,
+ 0x49, 0x38, 0x31, 0x42, 0x28, 0x53, 0x73, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42,
+ 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28,
+ 0x31, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31,
+ 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x1B, 0x76, 0x56, 0x42, 0x28, 0x1B, 0x72,
+ 0x52, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x2E, 0x42, 0x28, 0x1B,
+ 0x36, 0x42, 0x28, 0x1B, 0x34, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42,
+ 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x35, 0x3A, 0x42,
+ 0x28, 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B,
+ 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42,
+ 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28,
+ 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31,
+ 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x38, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28,
+ 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x37,
+ 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42,
+ 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x37, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B,
+ 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x38, 0x42,
+ 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28,
+ 0x39, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31,
+ 0x42, 0x28, 0x1B, 0x3A, 0x42, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00,
+ 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x39, 0x38,
+ 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28,
+ 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B,
+ 0x1B, 0x38, 0x36, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x5F, 0x36, 0x2D, 0x42, 0x28,
+ 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B, 0x1B, 0x1B, 0x73, 0x62, 0x61, 0x53, 0x42,
+ 0x41, 0x42, 0x28, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x32, 0x42,
+ 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x58, 0x78, 0x42, 0x28, 0x1B, 0x5F, 0x42,
+ 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x2D, 0x42,
+ 0x28, 0x1B, 0x38, 0x42, 0x28, 0x4E, 0x6E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42,
+ 0x28, 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x1B, 0x72, 0x69, 0x52, 0x49, 0x42,
+ 0x28, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x1B,
+ 0x35, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x39, 0x37, 0x42, 0x28, 0x1B, 0x38,
+ 0x42, 0x28, 0x1B, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42,
+ 0x28, 0x1B, 0x31, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28,
+ 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x5F, 0x42, 0x28, 0x1B, 0x63, 0x43, 0x42, 0x28,
+ 0x1B, 0x1B, 0x63, 0x5F, 0x43, 0x42, 0x28, 0x1B, 0x1B, 0x73, 0x6F, 0x53, 0x4F,
+ 0x42, 0x28, 0x39, 0x42, 0x28, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2D, 0x42,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28, 0x1B, 0x74,
+ 0x54, 0x42, 0x28, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35, 0x61, 0x41, 0x42, 0x28,
+ 0x33, 0x42, 0x28, 0x49, 0x69, 0x42, 0x28, 0x1B, 0x6A, 0x4A, 0x42, 0x28, 0x1B,
+ 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x6B, 0x4B, 0x42,
+ 0x28, 0x1B, 0x1B, 0x39, 0x5F, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28, 0x4F,
+ 0x6F, 0x42, 0x28, 0x1B, 0x72, 0x52, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42, 0x28,
+ 0x1B, 0x65, 0x45, 0x42, 0x28, 0x1B, 0x2B, 0x42, 0x28, 0x1B, 0x30, 0x42, 0x28,
+ 0x1B, 0x35, 0x42, 0x28, 0x1B, 0x38, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B,
+ 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x75, 0x55, 0x42,
+ 0x28, 0x1B, 0x67, 0x47, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69,
+ 0x49, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28,
+ 0x1B, 0x74, 0x54, 0x42, 0x28, 0x1B, 0x6C, 0x4C, 0x42, 0x28, 0x1B, 0x75, 0x55,
+ 0x42, 0x28, 0x1B, 0x6D, 0x4D, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x63,
+ 0x43, 0x42, 0x28, 0x38, 0x6F, 0x4F, 0x42, 0x28, 0x5F, 0x42, 0x28, 0x1B, 0x74,
+ 0x54, 0x42, 0x28, 0x1B, 0x66, 0x46, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42, 0x28,
+ 0x1B, 0x68, 0x48, 0x42, 0x28, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42, 0x28,
+ 0x1B, 0x69, 0x49, 0x42, 0x28, 0x32, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53, 0x42,
+ 0x28, 0x73, 0x53, 0x42, 0x28, 0x1B, 0x61, 0x41, 0x42, 0x28, 0x1B, 0x2D, 0x42,
+ 0x28, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x42, 0x28, 0x1B, 0x36, 0x42, 0x28, 0x6C,
+ 0x62, 0x4C, 0x42, 0x2D, 0x42, 0x28, 0x1B, 0x32, 0x42, 0x28, 0x1B, 0x1B, 0x38,
+ 0x33, 0x31, 0x42, 0x28, 0x1B, 0x38, 0x33, 0x31, 0x2D, 0x42, 0x28, 0x1B, 0x66,
+ 0x46, 0x42, 0x28, 0x1B, 0x00, 0x1B, 0x1B, 0x74, 0x73, 0x63, 0x54, 0x53, 0x43,
+ 0x42, 0x28, 0x39, 0x31, 0x42, 0x28, 0x1B, 0x2D, 0x42, 0x28, 0x1B, 0x73, 0x53,
+ 0x42, 0x28, 0x1B, 0x77, 0x57, 0x42, 0x28, 0x1B, 0x6F, 0x4F, 0x42, 0x28, 0x1B,
+ 0x64, 0x44, 0x42, 0x28, 0x1B, 0x6E, 0x4E, 0x42, 0x28, 0x1B, 0x69, 0x49, 0x42,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x35, 0x36, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A,
+ 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x63,
+ 0x43, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28,
+ 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A,
+ 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6E,
+ 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28,
+ 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A,
+ 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x38, 0x36, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x2E,
+ 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x78, 0x58, 0x4A, 0x28, 0x1B, 0x5F,
+ 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x61,
+ 0x41, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x30, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x6F,
+ 0x4F, 0x4A, 0x28, 0x1B, 0x1B, 0x43, 0x63, 0x6D, 0x4D, 0x4A, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x52, 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, 0x44, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x6B,
+ 0x4B, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B,
+ 0x35, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x39, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x31,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B,
+ 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28,
+ 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x69, 0x67, 0x61, 0x49, 0x47, 0x41, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x33, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32,
+ 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35,
+ 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x33,
+ 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x38, 0x37, 0x35, 0x34, 0x33, 0x30, 0x39, 0x32, 0x31, 0x2D, 0x4A, 0x28,
+ 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A,
+ 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61,
+ 0x41, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28,
+ 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x6F, 0x4F,
+ 0x4A, 0x28, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x53, 0x73, 0x64, 0x44, 0x4A,
+ 0x28, 0x35, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x65, 0x45,
+ 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B,
+ 0x70, 0x50, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6A, 0x4A, 0x4A,
+ 0x28, 0x1B, 0x54, 0x74, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x1B, 0x66,
+ 0x46, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x54, 0x74, 0x4B, 0x6B, 0x70, 0x50, 0x4A, 0x28,
+ 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x4B, 0x6B, 0x32, 0x4A, 0x28,
+ 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B,
+ 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A,
+ 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6B,
+ 0x4B, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28,
+ 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x77, 0x57,
+ 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6D,
+ 0x4D, 0x4A, 0x28, 0x1B, 0x4F, 0x6F, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x50, 0x70, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B,
+ 0x6D, 0x4D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x32, 0x4A, 0x28, 0x1B, 0x30,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x39, 0x38, 0x37, 0x4A, 0x28, 0x32, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x35, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A,
+ 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x35,
+ 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x4A, 0x28, 0x1B, 0x1B, 0x6D,
+ 0x62, 0x4D, 0x42, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x32,
+ 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x32, 0x4A,
+ 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x38,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B,
+ 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x72, 0x52, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x6C, 0x4C,
+ 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B,
+ 0x79, 0x59, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x65,
+ 0x45, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x65, 0x45,
+ 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B,
+ 0x45, 0x65, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x31, 0x32, 0x33, 0x34, 0x35,
+ 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43, 0x41, 0x4A, 0x28, 0x1B, 0x6E, 0x4E,
+ 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B,
+ 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x6C, 0x4C, 0x38, 0x35, 0x4A, 0x28,
+ 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x1B, 0x73, 0x62, 0x53, 0x42, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x35,
+ 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x73, 0x6F, 0x53, 0x4F,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A,
+ 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x62,
+ 0x42, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x67, 0x47,
+ 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B,
+ 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A,
+ 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x6D,
+ 0x4D, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A,
+ 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x62, 0x42, 0x4A, 0x28, 0x1B, 0x65,
+ 0x45, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28,
+ 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41,
+ 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x34,
+ 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B,
+ 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x70, 0x50, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A,
+ 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x63, 0x43, 0x36, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28,
+ 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x70, 0x50, 0x38, 0x37, 0x4A, 0x28,
+ 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B,
+ 0x6A, 0x4A, 0x4A, 0x28, 0x1B, 0x54, 0x74, 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A,
+ 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x53, 0x73, 0x4A, 0x28,
+ 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B,
+ 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x4C, 0x6C, 0x42, 0x62, 0x4A, 0x28,
+ 0x1B, 0x36, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x4C, 0x6C, 0x42,
+ 0x62, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x1B, 0x38, 0x33, 0x31, 0x4A,
+ 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x1B, 0x74, 0x6E, 0x54, 0x4E, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54,
+ 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x1B, 0x31, 0x33, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A,
+ 0x28, 0x1B, 0x77, 0x57, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x64,
+ 0x44, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x77,
+ 0x75, 0x74, 0x73, 0x70, 0x6B, 0x69, 0x68, 0x67, 0x65, 0x62, 0x61, 0x57, 0x55,
+ 0x54, 0x53, 0x50, 0x4B, 0x49, 0x48, 0x47, 0x45, 0x42, 0x41, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x6C,
+ 0x4C, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53, 0x50,
+ 0x48, 0x43, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x65, 0x45,
+ 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72,
+ 0x6E, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55,
+ 0x54, 0x53, 0x52, 0x4E, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
+ 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28,
+ 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x69, 0x49,
+ 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x1B, 0x79, 0x70, 0x59, 0x50,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A,
+ 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x33, 0x4A,
+ 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B,
+ 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B,
+ 0x37, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x1B,
+ 0x4B, 0x6B, 0x65, 0x45, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28,
+ 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A,
+ 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28,
+ 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72,
+ 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28,
+ 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B,
+ 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A,
+ 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B,
+ 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x32, 0x4A,
+ 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x1B, 0x49, 0x69, 0x72, 0x52, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B,
+ 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B,
+ 0x38, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x62,
+ 0x42, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55,
+ 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x30,
+ 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6E,
+ 0x4E, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28,
+ 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6E, 0x4E,
+ 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B,
+ 0x74, 0x54, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75,
+ 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x2D,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A,
+ 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x30, 0x4A,
+ 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x1B, 0x74, 0x73, 0x6E, 0x54, 0x53, 0x4E, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6B, 0x4B,
+ 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x70, 0x50, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45,
+ 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x39, 0x4A,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74,
+ 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x6F, 0x4F, 0x4A, 0x28, 0x65,
+ 0x45, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75, 0x55,
+ 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B, 0x37,
+ 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55, 0x53,
+ 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x4A, 0x28, 0x1B, 0x2D,
+ 0x4A, 0x28, 0x00, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28,
+ 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x61,
+ 0x41, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A,
+ 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A,
+ 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x68, 0x48, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x74, 0x6B, 0x6A, 0x63, 0x54, 0x4B,
+ 0x4A, 0x43, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x2D, 0x4A, 0x28, 0x1B, 0x63, 0x43,
+ 0x4A, 0x28, 0x5F, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x6F, 0x4F,
+ 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x74,
+ 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28,
+ 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x66, 0x46,
+ 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x65,
+ 0x45, 0x4A, 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28,
+ 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x70, 0x50, 0x4A, 0x28, 0x1B, 0x5F, 0x4A,
+ 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6F,
+ 0x4F, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B,
+ 0x78, 0x58, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A,
+ 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x5F, 0x4A, 0x28, 0x1B, 0x64, 0x44,
+ 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B,
+ 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x78, 0x75, 0x6C, 0x63, 0x62, 0x58, 0x55,
+ 0x4C, 0x43, 0x42, 0x4A, 0x28, 0x2D, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x4B,
+ 0x6B, 0x5F, 0x32, 0x4A, 0x28, 0x00, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x65,
+ 0x45, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x1B, 0x72, 0x62, 0x52,
+ 0x42, 0x4A, 0x28, 0x2D, 0x4A, 0x28, 0x1B, 0x70, 0x65, 0x50, 0x45, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x36, 0x31, 0x30, 0x4A, 0x28, 0x4A,
+ 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x38, 0x32, 0x37, 0x35, 0x31, 0x30, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x00, 0x1B, 0x00,
+ 0x1B, 0x1B, 0x1B, 0x39, 0x34, 0x36, 0x37, 0x38, 0x35, 0x33, 0x32, 0x31, 0x4A,
+ 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6E, 0x4E,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35,
+ 0x34, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x36, 0x35, 0x33, 0x32,
+ 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x36,
+ 0x35, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x38, 0x37,
+ 0x35, 0x33, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x34, 0x31, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x37, 0x33, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34,
+ 0x4A, 0x28, 0x1B, 0x36, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28,
+ 0x1B, 0x30, 0x34, 0x35, 0x37, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x37, 0x38, 0x35,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x37, 0x4A,
+ 0x28, 0x1B, 0x1B, 0x37, 0x36, 0x33, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x37,
+ 0x39, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x4A, 0x28, 0x1B, 0x1B, 0x32, 0x39, 0x33,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x30, 0x35,
+ 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x1B, 0x35, 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28,
+ 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x37, 0x34, 0x33, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35,
+ 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x32,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x32, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x37, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x00, 0x1B, 0x30, 0x32, 0x33, 0x35, 0x36, 0x39, 0x38, 0x34, 0x31, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x38, 0x39,
+ 0x37, 0x36, 0x35, 0x33, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x34, 0x36, 0x35, 0x33, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x00, 0x33, 0x32, 0x36, 0x37, 0x39,
+ 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x4A,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x30, 0x74, 0x54,
+ 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, 0x31, 0x30,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x33, 0x30, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38,
+ 0x37, 0x35, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x36, 0x30, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x37, 0x33, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x39, 0x38, 0x37, 0x36, 0x35, 0x33, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32,
+ 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39,
+ 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x38, 0x37, 0x35, 0x33, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x39, 0x38, 0x37, 0x36, 0x4A,
+ 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x33, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x39, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x37, 0x36, 0x35, 0x34, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x33,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x35, 0x33,
+ 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x35, 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x34, 0x33, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x31,
+ 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x34, 0x30, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x39,
+ 0x38, 0x35, 0x34, 0x31, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28,
+ 0x1B, 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x38, 0x4A, 0x28, 0x1B, 0x1B, 0x34, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35,
+ 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x37, 0x33, 0x32, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x1B, 0x38, 0x35, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x37, 0x4A, 0x28, 0x1B, 0x33,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x1B, 0x33, 0x4A, 0x28, 0x1B,
+ 0x37, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28,
+ 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x34,
+ 0x33, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28, 0x1B, 0x1B, 0x32, 0x31,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x36, 0x35, 0x33, 0x32, 0x31,
+ 0x30, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28,
+ 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x1B,
+ 0x63, 0x43, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B,
+ 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A,
+ 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28,
+ 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74,
+ 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28,
+ 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x2E, 0x4A, 0x28, 0x1B,
+ 0x33, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B,
+ 0x77, 0x57, 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A,
+ 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x77,
+ 0x57, 0x4A, 0x28, 0x1B, 0x33, 0x35, 0x2D, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x2D,
+ 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B,
+ 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A,
+ 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x77, 0x57,
+ 0x4A, 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B,
+ 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x77, 0x57, 0x4A,
+ 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x36, 0x33, 0x34, 0x39,
+ 0x37, 0x38, 0x35, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x39,
+ 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x4A,
+ 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x33,
+ 0x34, 0x32, 0x31, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x35, 0x31, 0x4A, 0x28, 0x1B,
+ 0x2D, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x69, 0x49,
+ 0x38, 0x31, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x2D,
+ 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x39, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A,
+ 0x4A, 0x28, 0x1B, 0x76, 0x56, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B,
+ 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x2E, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B,
+ 0x34, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28,
+ 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x35, 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38,
+ 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A,
+ 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31,
+ 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B,
+ 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x4A, 0x28,
+ 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B,
+ 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28,
+ 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A,
+ 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28,
+ 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x3A,
+ 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B,
+ 0x31, 0x4A, 0x28, 0x1B, 0x3A, 0x4A, 0x28, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B,
+ 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x39,
+ 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x39, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x38, 0x36, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x5F, 0x36, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x6F, 0x4F, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x73, 0x62, 0x61, 0x53,
+ 0x42, 0x41, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x32, 0x4A,
+ 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x58, 0x78, 0x4A, 0x28, 0x1B, 0x5F, 0x4A,
+ 0x28, 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B,
+ 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x1B, 0x72, 0x69, 0x52, 0x49, 0x4A, 0x28, 0x4A,
+ 0x28, 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28,
+ 0x1B, 0x5F, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x39, 0x4A,
+ 0x28, 0x1B, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28, 0x1B, 0x31, 0x4A, 0x28,
+ 0x1B, 0x30, 0x4A, 0x28, 0x1B, 0x36, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B,
+ 0x5F, 0x4A, 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x1B, 0x1B, 0x63, 0x5F, 0x43,
+ 0x4A, 0x28, 0x1B, 0x1B, 0x73, 0x6F, 0x53, 0x4F, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x31, 0x32, 0x33, 0x34, 0x35, 0x2D, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28,
+ 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x31, 0x32,
+ 0x33, 0x34, 0x35, 0x61, 0x41, 0x4A, 0x28, 0x33, 0x4A, 0x28, 0x4A, 0x28, 0x1B,
+ 0x6A, 0x4A, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A,
+ 0x28, 0x1B, 0x6B, 0x4B, 0x4A, 0x28, 0x1B, 0x1B, 0x39, 0x5F, 0x4A, 0x28, 0x1B,
+ 0x73, 0x53, 0x4A, 0x28, 0x4A, 0x28, 0x1B, 0x72, 0x52, 0x4A, 0x28, 0x1B, 0x75,
+ 0x55, 0x4A, 0x28, 0x1B, 0x65, 0x45, 0x4A, 0x28, 0x1B, 0x2B, 0x4A, 0x28, 0x1B,
+ 0x30, 0x4A, 0x28, 0x1B, 0x35, 0x4A, 0x28, 0x1B, 0x38, 0x4A, 0x28, 0x1B, 0x2D,
+ 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28, 0x1B,
+ 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x67, 0x47, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A,
+ 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28, 0x1B, 0x69,
+ 0x49, 0x4A, 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x6C, 0x4C, 0x4A, 0x28,
+ 0x1B, 0x75, 0x55, 0x4A, 0x28, 0x1B, 0x6D, 0x4D, 0x4A, 0x28, 0x1B, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x63, 0x43, 0x4A, 0x28, 0x38, 0x6F, 0x4F, 0x4A, 0x28, 0x5F, 0x4A,
+ 0x28, 0x1B, 0x74, 0x54, 0x4A, 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x69,
+ 0x49, 0x4A, 0x28, 0x1B, 0x68, 0x48, 0x4A, 0x28, 0x2D, 0x4A, 0x28, 0x1B, 0x73,
+ 0x53, 0x4A, 0x28, 0x1B, 0x69, 0x49, 0x4A, 0x28, 0x32, 0x2D, 0x4A, 0x28, 0x1B,
+ 0x73, 0x53, 0x4A, 0x28, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x61, 0x41, 0x4A, 0x28,
+ 0x1B, 0x2D, 0x4A, 0x28, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x4A, 0x28, 0x1B, 0x36,
+ 0x4A, 0x28, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x4A, 0x28, 0x1B, 0x32, 0x4A, 0x28,
+ 0x1B, 0x1B, 0x38, 0x33, 0x31, 0x4A, 0x28, 0x1B, 0x38, 0x33, 0x31, 0x2D, 0x4A,
+ 0x28, 0x1B, 0x66, 0x46, 0x4A, 0x28, 0x1B, 0x00, 0x1B, 0x1B, 0x74, 0x73, 0x63,
+ 0x54, 0x53, 0x43, 0x4A, 0x28, 0x39, 0x31, 0x4A, 0x28, 0x1B, 0x2D, 0x4A, 0x28,
+ 0x1B, 0x73, 0x53, 0x4A, 0x28, 0x1B, 0x77, 0x57, 0x4A, 0x28, 0x1B, 0x6F, 0x4F,
+ 0x4A, 0x28, 0x1B, 0x64, 0x44, 0x4A, 0x28, 0x1B, 0x6E, 0x4E, 0x4A, 0x28, 0x1B,
+ 0x69, 0x49, 0x4A, 0x28, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x78, 0x77, 0x75, 0x74,
+ 0x73, 0x72, 0x70, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x65, 0x63, 0x62,
+ 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
+ 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, 0x39, 0x38, 0x34, 0x78, 0x77, 0x75, 0x74,
+ 0x73, 0x72, 0x70, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x65, 0x63, 0x62,
+ 0x61, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
+ 0x48, 0x47, 0x45, 0x43, 0x42, 0x41, 0x39, 0x38, 0x34, 0x4A, 0x42, 0x6E, 0x4E,
+ 0x69, 0x49, 0x64, 0x44, 0x6F, 0x4F, 0x63, 0x43, 0x6E, 0x4E, 0x65, 0x45, 0x2D,
+ 0x64, 0x44, 0x72, 0x52, 0x61, 0x41, 0x64, 0x44, 0x6E, 0x4E, 0x61, 0x41, 0x74,
+ 0x54, 0x73, 0x53, 0x2D, 0x65, 0x45, 0x62, 0x42, 0x38, 0x36, 0x39, 0x31, 0x2D,
+ 0x34, 0x2E, 0x33, 0x78, 0x58, 0x5F, 0x69, 0x49, 0x69, 0x49, 0x62, 0x42, 0x30,
+ 0x37, 0x2D, 0x6F, 0x4F, 0x69, 0x49, 0x43, 0x63, 0x6D, 0x4D, 0x61, 0x41, 0x73,
+ 0x53, 0x6F, 0x4F, 0x63, 0x43, 0x73, 0x53, 0x6B, 0x4B, 0x68, 0x48, 0x2D, 0x35,
+ 0x67, 0x47, 0x32, 0x35, 0x34, 0x31, 0x39, 0x38, 0x31, 0x30, 0x30, 0x64, 0x44,
+ 0x69, 0x49, 0x73, 0x53, 0x65, 0x45, 0x6E, 0x4E, 0x32, 0x30, 0x31, 0x33, 0x39,
+ 0x38, 0x37, 0x36, 0x35, 0x31, 0x37, 0x30, 0x33, 0x32, 0x36, 0x38, 0x39, 0x37,
+ 0x30, 0x33, 0x31, 0x30, 0x69, 0x67, 0x61, 0x49, 0x47, 0x41, 0x64, 0x44, 0x72,
+ 0x52, 0x61, 0x41, 0x64, 0x44, 0x6E, 0x4E, 0x61, 0x41, 0x74, 0x54, 0x73, 0x53,
+ 0x65, 0x45, 0x62, 0x42, 0x63, 0x43, 0x6F, 0x4F, 0x35, 0x67, 0x47, 0x73, 0x53,
+ 0x65, 0x45, 0x6E, 0x4E, 0x61, 0x41, 0x70, 0x50, 0x61, 0x41, 0x6A, 0x4A, 0x54,
+ 0x74, 0x6D, 0x4D, 0x66, 0x46, 0x64, 0x44, 0x6B, 0x4B, 0x4B, 0x6B, 0x54, 0x74,
+ 0x70, 0x50, 0x63, 0x43, 0x31, 0x33, 0x4B, 0x6B, 0x32, 0x6E, 0x4E, 0x61, 0x41,
+ 0x6B, 0x4B, 0x61, 0x41, 0x74, 0x54, 0x61, 0x41, 0x6B, 0x4B, 0x68, 0x48, 0x74,
+ 0x54, 0x64, 0x44, 0x69, 0x49, 0x77, 0x57, 0x66, 0x46, 0x6E, 0x4E, 0x61, 0x41,
+ 0x6D, 0x4D, 0x4F, 0x6F, 0x72, 0x52, 0x6C, 0x4C, 0x30, 0x39, 0x34, 0x32, 0x61,
+ 0x41, 0x68, 0x48, 0x31, 0x30, 0x37, 0x38, 0x39, 0x36, 0x35, 0x32, 0x39, 0x38,
+ 0x37, 0x30, 0x35, 0x30, 0x54, 0x74, 0x32, 0x31, 0x39, 0x38, 0x34, 0x6D, 0x4D,
+ 0x38, 0x32, 0x31, 0x33, 0x32, 0x62, 0x42, 0x67, 0x47, 0x31, 0x39, 0x35, 0x69,
+ 0x49, 0x6C, 0x4C, 0x6C, 0x4C, 0x69, 0x49, 0x72, 0x52, 0x65, 0x45, 0x65, 0x45,
+ 0x65, 0x45, 0x72, 0x52, 0x62, 0x42, 0x45, 0x65, 0x72, 0x52, 0x79, 0x59, 0x72,
+ 0x52, 0x31, 0x32, 0x33, 0x34, 0x35, 0x68, 0x67, 0x63, 0x61, 0x48, 0x47, 0x43,
+ 0x41, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x38, 0x38, 0x6C, 0x4C,
+ 0x38, 0x35, 0x6F, 0x4F, 0x6D, 0x62, 0x4D, 0x42, 0x38, 0x38, 0x39, 0x31, 0x31,
+ 0x30, 0x36, 0x35, 0x63, 0x43, 0x69, 0x49, 0x69, 0x49, 0x74, 0x54, 0x6C, 0x4C,
+ 0x61, 0x41, 0x62, 0x42, 0x35, 0x61, 0x41, 0x75, 0x55, 0x67, 0x47, 0x6E, 0x4E,
+ 0x69, 0x49, 0x6C, 0x4C, 0x69, 0x49, 0x74, 0x54, 0x6C, 0x4C, 0x75, 0x55, 0x6D,
+ 0x4D, 0x65, 0x45, 0x72, 0x52, 0x62, 0x42, 0x65, 0x45, 0x68, 0x48, 0x6E, 0x4E,
+ 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x6C, 0x4C, 0x33, 0x34, 0x65, 0x45, 0x67,
+ 0x47, 0x61, 0x41, 0x70, 0x50, 0x65, 0x45, 0x64, 0x44, 0x6F, 0x4F, 0x32, 0x30,
+ 0x35, 0x38, 0x63, 0x43, 0x36, 0x35, 0x37, 0x70, 0x50, 0x38, 0x37, 0x69, 0x49,
+ 0x6A, 0x4A, 0x54, 0x74, 0x66, 0x46, 0x69, 0x49, 0x32, 0x36, 0x53, 0x73, 0x64,
+ 0x44, 0x6F, 0x4F, 0x63, 0x43, 0x42, 0x62, 0x4C, 0x6C, 0x42, 0x62, 0x4C, 0x6C,
+ 0x32, 0x36, 0x38, 0x33, 0x31, 0x66, 0x46, 0x69, 0x49, 0x35, 0x6E, 0x4E, 0x69,
+ 0x49, 0x74, 0x54, 0x61, 0x41, 0x6C, 0x4C, 0x31, 0x32, 0x31, 0x33, 0x73, 0x53,
+ 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x6E, 0x54,
+ 0x4E, 0x69, 0x49, 0x68, 0x48, 0x63, 0x43, 0x73, 0x6F, 0x53, 0x4F, 0x73, 0x62,
+ 0x53, 0x42, 0x50, 0x70, 0x61, 0x41, 0x62, 0x42, 0x75, 0x55, 0x69, 0x49, 0x53,
+ 0x73, 0x64, 0x44, 0x69, 0x49, 0x6C, 0x4C, 0x6C, 0x4C, 0x69, 0x49, 0x72, 0x52,
+ 0x77, 0x75, 0x74, 0x73, 0x70, 0x6B, 0x69, 0x68, 0x67, 0x65, 0x62, 0x61, 0x57,
+ 0x55, 0x54, 0x53, 0x50, 0x4B, 0x49, 0x48, 0x47, 0x45, 0x42, 0x41, 0x38, 0x37,
+ 0x35, 0x34, 0x33, 0x30, 0x39, 0x32, 0x31, 0x2D, 0x69, 0x49, 0x73, 0x53, 0x63,
+ 0x43, 0x65, 0x45, 0x6F, 0x4F, 0x72, 0x52, 0x79, 0x77, 0x75, 0x74, 0x73, 0x72,
+ 0x6E, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x59, 0x57, 0x55,
+ 0x54, 0x53, 0x52, 0x4E, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
+ 0x69, 0x49, 0x6C, 0x4C, 0x6C, 0x4C, 0x69, 0x49, 0x72, 0x52, 0x2D, 0x72, 0x52,
+ 0x75, 0x55, 0x65, 0x45, 0x2B, 0x33, 0x37, 0x32, 0x72, 0x52, 0x75, 0x55, 0x65,
+ 0x45, 0x2B, 0x37, 0x37, 0x32, 0x2D, 0x2D, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45,
+ 0x2B, 0x34, 0x38, 0x32, 0x2D, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x38,
+ 0x37, 0x32, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x37, 0x39, 0x32, 0x2D,
+ 0x2D, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x35, 0x38, 0x32, 0x2D, 0x72,
+ 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x30, 0x30, 0x35, 0x2D, 0x6C, 0x4C, 0x61,
+ 0x41, 0x6E, 0x4E, 0x6F, 0x4F, 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x6E, 0x4E,
+ 0x72, 0x52, 0x65, 0x45, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x31, 0x37,
+ 0x38, 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x30, 0x38, 0x32, 0x2D, 0x2D,
+ 0x74, 0x54, 0x6E, 0x4E, 0x61, 0x41, 0x6B, 0x4B, 0x2D, 0x72, 0x52, 0x75, 0x55,
+ 0x65, 0x45, 0x2D, 0x2D, 0x39, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, 0x72, 0x52,
+ 0x75, 0x55, 0x65, 0x45, 0x2B, 0x37, 0x33, 0x2D, 0x73, 0x53, 0x65, 0x45, 0x6F,
+ 0x4F, 0x61, 0x41, 0x70, 0x50, 0x74, 0x73, 0x6E, 0x54, 0x53, 0x4E, 0x62, 0x42,
+ 0x49, 0x69, 0x72, 0x52, 0x73, 0x53, 0x4B, 0x6B, 0x65, 0x45, 0x79, 0x70, 0x59,
+ 0x50, 0x75, 0x73, 0x6E, 0x6C, 0x6A, 0x69, 0x67, 0x66, 0x65, 0x64, 0x63, 0x55,
+ 0x53, 0x4E, 0x4C, 0x4A, 0x49, 0x47, 0x46, 0x45, 0x44, 0x43, 0x00, 0x2D, 0x63,
+ 0x43, 0x69, 0x49, 0x64, 0x44, 0x31, 0x31, 0x2D, 0x61, 0x41, 0x32, 0x39, 0x5F,
+ 0x74, 0x54, 0x68, 0x48, 0x74, 0x6B, 0x6A, 0x63, 0x54, 0x4B, 0x4A, 0x43, 0x74,
+ 0x54, 0x2D, 0x5F, 0x72, 0x52, 0x6F, 0x4F, 0x66, 0x46, 0x5F, 0x74, 0x54, 0x61,
+ 0x41, 0x6D, 0x4D, 0x72, 0x52, 0x6F, 0x4F, 0x66, 0x46, 0x5F, 0x64, 0x44, 0x65,
+ 0x45, 0x6B, 0x4B, 0x63, 0x43, 0x61, 0x41, 0x70, 0x50, 0x5F, 0x65, 0x45, 0x64,
+ 0x44, 0x6F, 0x4F, 0x63, 0x43, 0x5F, 0x78, 0x58, 0x69, 0x49, 0x6E, 0x4E, 0x75,
+ 0x55, 0x5F, 0x64, 0x44, 0x65, 0x45, 0x64, 0x44, 0x6E, 0x4E, 0x65, 0x45, 0x74,
+ 0x54, 0x63, 0x43, 0x6F, 0x4F, 0x6D, 0x4D, 0x63, 0x43, 0x2D, 0x32, 0x31, 0x33,
+ 0x32, 0x00, 0x38, 0x6B, 0x4B, 0x65, 0x45, 0x65, 0x45, 0x4B, 0x6B, 0x5F, 0x32,
+ 0x00, 0xF8, 0x73, 0xD2, 0xC5, 0x66, 0xC5, 0x66, 0x2D, 0x00, 0x33, 0x31, 0x00,
+ 0x39, 0x36, 0x31, 0x30, 0x35, 0x30, 0x39, 0x38, 0x36, 0x35, 0x34, 0x33, 0x32,
+ 0x31, 0x30, 0x00, 0x37, 0x00, 0x38, 0x36, 0x32, 0x31, 0x30, 0x38, 0x32, 0x37,
+ 0x35, 0x31, 0x30, 0x39, 0x34, 0x36, 0x37, 0x38, 0x35, 0x33, 0x32, 0x31, 0x2D,
+ 0x61, 0x41, 0x36, 0x35, 0x30, 0x38, 0x32, 0x35, 0x33, 0x39, 0x38, 0x37, 0x36,
+ 0x34, 0x31, 0x38, 0x37, 0x35, 0x33, 0x30, 0x34, 0x36, 0x35, 0x33, 0x32, 0x31,
+ 0x39, 0x38, 0x35, 0x34, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x34, 0x35, 0x37,
+ 0x36, 0x35, 0x32, 0x37, 0x37, 0x36, 0x35, 0x34, 0x37, 0x39, 0x34, 0x33, 0x37,
+ 0x35, 0x34, 0x32, 0x30, 0x35, 0x33, 0x32, 0x35, 0x34, 0x33, 0x32, 0x31, 0x32,
+ 0x39, 0x00, 0x32, 0x30, 0x32, 0x33, 0x35, 0x36, 0x39, 0x38, 0x34, 0x31, 0x00,
+ 0x36, 0x00, 0x30, 0x37, 0x38, 0x39, 0x00, 0x33, 0x32, 0x36, 0x37, 0x39, 0x34,
+ 0x34, 0x36, 0x35, 0x33, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x38,
+ 0x39, 0x37, 0x36, 0x35, 0x33, 0x31, 0x37, 0x33, 0x32, 0x32, 0x31, 0x37, 0x34,
+ 0x33, 0x31, 0x30, 0x32, 0x39, 0x33, 0x37, 0x36, 0x33, 0x30, 0x39, 0x37, 0x38,
+ 0x35, 0x37, 0x33, 0x32, 0x31, 0x30, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
+ 0x30, 0x39, 0x38, 0x37, 0x36, 0x35, 0x33, 0x31, 0x37, 0x33, 0x32, 0x30, 0x33,
+ 0x32, 0x36, 0x30, 0x39, 0x38, 0x37, 0x35, 0x33, 0x30, 0x39, 0x38, 0x37, 0x36,
+ 0x38, 0x37, 0x35, 0x33, 0x30, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x39, 0x38,
+ 0x35, 0x34, 0x32, 0x31, 0x30, 0x37, 0x36, 0x35, 0x34, 0x39, 0x37, 0x35, 0x34,
+ 0x32, 0x35, 0x33, 0x32, 0x31, 0x34, 0x36, 0x35, 0x33, 0x34, 0x30, 0x36, 0x34,
+ 0x33, 0x31, 0x30, 0x39, 0x33, 0x33, 0x32, 0x31, 0x30, 0x39, 0x38, 0x37, 0x35,
+ 0x34, 0x33, 0x32, 0x30, 0x30, 0x38, 0x32, 0x35, 0x33, 0x34, 0x31, 0x37, 0x34,
+ 0x30, 0x37, 0x35, 0x32, 0x37, 0x34, 0x33, 0x35, 0x34, 0x33, 0x32, 0x31, 0x32,
+ 0x39, 0x32, 0x31, 0x37, 0x33, 0x38, 0x35, 0x37, 0x33, 0x32, 0x39, 0x38, 0x35,
+ 0x34, 0x31, 0x30, 0x36, 0x35, 0x33, 0x32, 0x31, 0x30, 0x64, 0x44, 0x69, 0x49,
+ 0x73, 0x53, 0x63, 0x43, 0x31, 0x30, 0x30, 0x74, 0x54, 0x39, 0x38, 0x37, 0x36,
+ 0x35, 0x34, 0x33, 0x32, 0x31, 0x63, 0x43, 0x39, 0x38, 0x37, 0x35, 0x34, 0x33,
+ 0x32, 0x31, 0x30, 0x2D, 0x2D, 0x73, 0x53, 0x63, 0x43, 0x75, 0x55, 0x2D, 0x36,
+ 0x34, 0x36, 0x2D, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54, 0x61, 0x41, 0x6C, 0x4C,
+ 0x2D, 0x31, 0x2E, 0x33, 0x2D, 0x73, 0x53, 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44,
+ 0x6E, 0x4E, 0x69, 0x49, 0x77, 0x57, 0x2D, 0x6E, 0x4E, 0x69, 0x49, 0x74, 0x54,
+ 0x61, 0x41, 0x6C, 0x4C, 0x2D, 0x73, 0x53, 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44,
+ 0x6E, 0x4E, 0x69, 0x49, 0x77, 0x57, 0x00, 0x2D, 0x00, 0x33, 0x35, 0x2D, 0x36,
+ 0x33, 0x34, 0x39, 0x37, 0x38, 0x35, 0x32, 0x31, 0x2D, 0x39, 0x35, 0x33, 0x34,
+ 0x32, 0x31, 0x30, 0x36, 0x35, 0x31, 0x2D, 0x72, 0x52, 0x38, 0x30, 0x75, 0x55,
+ 0x2D, 0x36, 0x39, 0x39, 0x31, 0x3A, 0x76, 0x56, 0x72, 0x52, 0x69, 0x49, 0x2E,
+ 0x36, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31,
+ 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38, 0x39, 0x31, 0x38,
+ 0x39, 0x31, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00,
+ 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x35, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35,
+ 0x34, 0x33, 0x32, 0x31, 0x2D, 0x39, 0x35, 0x38, 0x34, 0x38, 0x36, 0x34, 0x69,
+ 0x49, 0x38, 0x31, 0x5F, 0x36, 0x2D, 0xB6, 0xE6, 0xC5, 0x66, 0xD9, 0x9B, 0xF8,
+ 0xD5, 0x76, 0xC1, 0x62, 0xD4, 0x75, 0x77, 0xD6, 0xD9, 0x9B, 0x60, 0xC2, 0x63,
+ 0x6F, 0x4F, 0x6D, 0x4D, 0x6E, 0x4E, 0x30, 0x32, 0x30, 0x58, 0x78, 0x5F, 0x73,
+ 0x53, 0x2D, 0x61, 0x41, 0x65, 0x45, 0x38, 0x30, 0x36, 0x35, 0x38, 0x39, 0x31,
+ 0x2D, 0x31, 0x30, 0x36, 0x35, 0x5F, 0x63, 0x43, 0x5F, 0x63, 0x5F, 0x43, 0x72,
+ 0x69, 0x52, 0x49, 0x31, 0x32, 0x33, 0x34, 0x35, 0x2D, 0x6E, 0x4E, 0x69, 0x49,
+ 0x74, 0x54, 0x6A, 0x4A, 0x6E, 0x4E, 0x61, 0x41, 0x6B, 0x4B, 0x33, 0x39, 0x5F,
+ 0x72, 0x52, 0x75, 0x55, 0x65, 0x45, 0x2B, 0x30, 0x35, 0x38, 0x2D, 0x6C, 0x4C,
+ 0x61, 0x41, 0x75, 0x55, 0x67, 0x47, 0x6E, 0x4E, 0x69, 0x49, 0x6C, 0x4C, 0x69,
+ 0x49, 0x74, 0x54, 0x6C, 0x4C, 0x75, 0x55, 0x6D, 0x4D, 0x2D, 0xF1, 0xF0, 0xF2,
+ 0xF0, 0xA7, 0xB7, 0xE7, 0x6D, 0xE2, 0xAB, 0xA2, 0x5F, 0x74, 0x54, 0x66, 0x46,
+ 0x69, 0x49, 0x2D, 0x73, 0x53, 0x32, 0x2D, 0x73, 0x53, 0x61, 0x41, 0x6C, 0x62,
+ 0x4C, 0x42, 0x2D, 0x6C, 0x62, 0x4C, 0x42, 0x2D, 0x32, 0x36, 0x38, 0x33, 0x31,
+ 0x38, 0x33, 0x31, 0x2D, 0x66, 0x46, 0x00, 0x2D, 0x73, 0x53, 0x39, 0x31, 0x2D,
+ 0x73, 0x53, 0x77, 0x57, 0x6F, 0x4F, 0x64, 0x44, 0x6E, 0x4E, 0x68, 0xC7, 0xD5,
+ 0x76, 0xC9, 0x71, 0xC4, 0x65, 0xD6, 0x77, 0xC3, 0x64, 0xD5, 0x76, 0xC5, 0x66,
+ 0x60, 0xC4, 0x65, 0xD9, 0x9B, 0xC1, 0x62, 0xC4, 0x65, 0xD5, 0x76, 0xC1, 0x62,
+ 0xE3, 0xB3, 0xE2, 0xAB, 0x60, 0xC5, 0x66, 0xC2, 0x63, 0xF6, 0xF8, 0xF8, 0xF6,
+ 0xF9, 0xF1, 0x60, 0xF4, 0x4B, 0xF3, 0xE7, 0xB7, 0xA7, 0x6D, 0xC9, 0x89, 0x71,
+ 0x87, 0xC7, 0xD5, 0x95, 0xC9, 0x89, 0xC4, 0x84, 0xD6, 0x96, 0xC3, 0x83, 0xD5,
+ 0x95, 0xC5, 0x85, 0x60, 0xC4, 0x84, 0xD9, 0x99, 0xC1, 0x81, 0xC4, 0x84, 0xD5,
+ 0x95, 0xC1, 0x81, 0xE3, 0xA3, 0xE2, 0xA2, 0x60, 0xC5, 0x85, 0xC2, 0x82, 0x83,
+ 0xC3, 0xC9, 0x89, 0xC2, 0x82, 0x64, 0xC3, 0xC9, 0x71, 0xC2, 0x63, 0xC9, 0x89,
+ 0x71, 0xF8, 0xF0, 0xF7, 0x60, 0xD6, 0x96, 0x77, 0xC9, 0x89, 0x71, 0x64, 0x83,
+ 0xC3, 0xD4, 0x94, 0x75, 0xC1, 0x62, 0xC1, 0x81, 0xD6, 0x96, 0xE2, 0xAB, 0xA2,
+ 0xD6, 0x77, 0x66, 0xC5, 0xE2, 0xAB, 0xC5, 0x66, 0xD5, 0x76, 0xAB, 0xE2, 0x9B,
+ 0xD9, 0x9B, 0xD9, 0xF7, 0xF0, 0xF7, 0xF7, 0xF7, 0xF0, 0xF3, 0xF4, 0xF5, 0xF1,
+ 0xF0, 0xF0, 0xF1, 0xF2, 0xF3, 0xF5, 0xF6, 0xF9, 0xF4, 0xF7, 0xF5, 0xF2, 0xF1,
+ 0xF0, 0xF4, 0xF3, 0xF0, 0xF9, 0xF8, 0xF5, 0xF6, 0xF7, 0xF3, 0xF2, 0xF6, 0xF9,
+ 0xF3, 0xC9, 0xC7, 0xC1, 0x71, 0x68, 0x62, 0xC4, 0x65, 0xD9, 0x9B, 0xC1, 0x62,
+ 0xC4, 0x65, 0xD5, 0x76, 0xC1, 0x62, 0xE3, 0xB3, 0xE2, 0xAB, 0xC5, 0x66, 0xC2,
+ 0x63, 0x71, 0xC9, 0xC9, 0x71, 0xC3, 0x64, 0xD6, 0x77, 0xAB, 0xE2, 0xC3, 0x64,
+ 0xE2, 0xAB, 0xD2, 0x73, 0xC8, 0x69, 0xF5, 0xC7, 0x68, 0x66, 0xC5, 0xE2, 0xAB,
+ 0xC5, 0x66, 0xD5, 0x76, 0xC1, 0x62, 0xD7, 0x78, 0xC1, 0x62, 0xD1, 0x72, 0xB3,
+ 0xE3, 0xD4, 0x75, 0xC6, 0x67, 0xC4, 0x65, 0x69, 0xC8, 0xD2, 0x73, 0x9B, 0xD9,
+ 0xE3, 0xD7, 0xD2, 0xB3, 0x78, 0x73, 0xC3, 0x64, 0xF2, 0xF1, 0xF3, 0x73, 0xD2,
+ 0xF2, 0x62, 0xC1, 0xD5, 0x76, 0xC1, 0x62, 0xD2, 0x73, 0xC1, 0x62, 0xE3, 0xB3,
+ 0xC1, 0x62, 0xD2, 0x73, 0xC8, 0x69, 0xE3, 0xB3, 0xC4, 0x65, 0xC9, 0x71, 0xE6,
+ 0xB6, 0xC6, 0x67, 0xD3, 0x74, 0xF4, 0xF0, 0xF9, 0x71, 0xC9, 0xC1, 0x62, 0xF8,
+ 0xF4, 0xF2, 0xF5, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9,
+ 0xF4, 0xF1, 0xF9, 0xF8, 0xF7, 0xF6, 0xF4, 0xF2, 0xF0, 0xF4, 0xF5, 0xF3, 0xF8,
+ 0xF7, 0xF0, 0xF0, 0xF1, 0xF0, 0xF1, 0xF3, 0xF5, 0xF6, 0xF9, 0xF8, 0xF4, 0xF1,
+ 0xF5, 0xF7, 0xF8, 0xF3, 0xF5, 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF0,
+ 0xF2, 0xF9, 0xF8, 0xF7, 0xF0, 0xF3, 0xF1, 0xF0, 0x69, 0xC8, 0xF9, 0xF8, 0xF5,
+ 0xF4, 0xF2, 0xF1, 0xF0, 0xE3, 0xB3, 0x75, 0xD4, 0x64, 0xC3, 0xC9, 0x71, 0xD3,
+ 0x74, 0xD3, 0x74, 0xC9, 0x71, 0xD9, 0x9B, 0x73, 0xD2, 0xC5, 0x66, 0xC5, 0x66,
+ 0xC5, 0x66, 0xD9, 0x9B, 0xE8, 0xB8, 0xD9, 0x9B, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
+ 0xC8, 0xC7, 0xC3, 0xC1, 0x69, 0x68, 0x64, 0x62, 0xD5, 0x76, 0xC9, 0x71, 0xE3,
+ 0xB3, 0xF0, 0xF8, 0xF2, 0xF1, 0xF3, 0xF2, 0x63, 0xC2, 0xC7, 0x68, 0xF3, 0xF5,
+ 0xF1, 0xF9, 0xF5, 0xF8, 0xF8, 0xC1, 0x62, 0xF8, 0xF5, 0xD3, 0x74, 0xD6, 0x77,
+ 0xD4, 0xC2, 0x75, 0x63, 0x9B, 0xD9, 0xF8, 0xF7, 0xF8, 0xF9, 0xF1, 0xF1, 0xF0,
+ 0xF6, 0xF5, 0x64, 0xC3, 0xC9, 0x71, 0xF2, 0xF5, 0x64, 0xC3, 0xC9, 0x71, 0xE3,
+ 0xB3, 0xD3, 0x74, 0xC1, 0x62, 0xC2, 0x63, 0xF5, 0xF3, 0xF4, 0x66, 0xC5, 0xC7,
+ 0x68, 0xC1, 0x62, 0xD7, 0x78, 0xC5, 0x66, 0xC4, 0x65, 0x74, 0xD3, 0xC1, 0x62,
+ 0xE4, 0xB4, 0xC7, 0x68, 0xD5, 0x76, 0xC9, 0x71, 0xD3, 0x74, 0xC9, 0x71, 0xE3,
+ 0xB3, 0xD3, 0x74, 0xE4, 0xB4, 0xD4, 0x75, 0xB6, 0xE6, 0xC5, 0x66, 0xD9, 0x9B,
+ 0xC2, 0x63, 0xC5, 0x66, 0xC8, 0x69, 0xD5, 0x76, 0xC9, 0x71, 0xE3, 0xB3, 0xC1,
+ 0x62, 0xD3, 0x74, 0xF2, 0xF0, 0xD6, 0x77, 0xF6, 0xF5, 0xC3, 0x64, 0xF7, 0xF8,
+ 0x78, 0xD7, 0xF8, 0xF7, 0xAB, 0xE2, 0xC9, 0x71, 0xD1, 0x72, 0xB3, 0xE3, 0xC6,
+ 0x67, 0xC9, 0x71, 0xF0, 0xF2, 0xF6, 0xAB, 0xE2, 0x66, 0xC5, 0xC4, 0x65, 0xD6,
+ 0x77, 0xC3, 0x64, 0x66, 0xC5, 0x66, 0xC5, 0xD3, 0xC2, 0x74, 0x63, 0x66, 0xC5,
+ 0x66, 0xC5, 0xD3, 0xC2, 0x74, 0x63, 0xF2, 0xF6, 0xF8, 0xF3, 0xF1, 0xC6, 0x67,
+ 0xC9, 0x71, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF5, 0xF1,
+ 0xF2, 0x76, 0xD5, 0xC9, 0x71, 0xE3, 0xB3, 0xC1, 0x62, 0xD3, 0x74, 0xF1, 0xF2,
+ 0xF1, 0xF3, 0xE2, 0xAB, 0xE6, 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, 0x76, 0xC9,
+ 0x71, 0xE3, 0xD5, 0xB3, 0x76, 0xC9, 0x71, 0xC8, 0x69, 0xC3, 0x64, 0xE2, 0xD6,
+ 0xAB, 0x77, 0xE2, 0xC2, 0xAB, 0x63, 0xD7, 0xC1, 0x78, 0x62, 0xC2, 0x63, 0xE4,
+ 0xB4, 0xC9, 0x71, 0xE2, 0xC4, 0xAB, 0x65, 0x64, 0xC3, 0xC9, 0x71, 0xD3, 0x74,
+ 0xD3, 0x74, 0xC9, 0x71, 0xD9, 0x9B, 0xE6, 0xE4, 0xE3, 0xE2, 0xD7, 0xD2, 0xC9,
+ 0xC8, 0xC7, 0xC5, 0xC2, 0xC1, 0xB6, 0xB4, 0xB3, 0xAB, 0x78, 0x73, 0x71, 0x69,
+ 0x68, 0x66, 0x63, 0x62, 0xF7, 0xF4, 0xF3, 0xF9, 0xF8, 0xF2, 0xF0, 0x60, 0xC9,
+ 0x71, 0xF1, 0xF2, 0x66, 0xC5, 0xC3, 0x64, 0xC5, 0x66, 0xB4, 0xE4, 0xB3, 0xE3,
+ 0xAB, 0xE2, 0x9B, 0xD9, 0x66, 0xC5, 0xD6, 0x77, 0x74, 0xD3, 0xB3, 0xE3, 0xAB,
+ 0xE2, 0x66, 0xC5, 0x63, 0xC2, 0x9B, 0xD9, 0x71, 0xC9, 0x9B, 0xD9, 0xAB, 0xE2,
+ 0x62, 0xC1, 0x69, 0xC8, 0x66, 0xC5, 0x9B, 0xD9, 0xE8, 0xE6, 0xE4, 0xE3, 0xE2,
+ 0xD9, 0xD5, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC3, 0xC2, 0xC1, 0xB8, 0xB6, 0xB4,
+ 0xB3, 0xAB, 0x9B, 0x76, 0x71, 0x69, 0x68, 0x67, 0x66, 0x64, 0x63, 0x62, 0x60,
+ 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF3, 0xF7, 0xF2, 0x77,
+ 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF7, 0xF7, 0xF2, 0x60, 0x60,
+ 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF4, 0xF8, 0xF2, 0x60,
+ 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF8, 0xF7, 0xF2, 0x77,
+ 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF7, 0xF9, 0xF2, 0x60, 0x60,
+ 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF5, 0xF8, 0xF2, 0x60,
+ 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x4E, 0xF0, 0xF0, 0xF5, 0x60,
+ 0xD3, 0x74, 0xC1, 0x62, 0xD5, 0x76, 0xD6, 0x77, 0xC9, 0x71, 0xE3, 0xB3, 0xC1,
+ 0x62, 0xD5, 0x76, 0xD9, 0x9B, 0xC5, 0x66, 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4,
+ 0xC5, 0x66, 0x4E, 0xF1, 0xF7, 0xF8, 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5,
+ 0x66, 0x4E, 0xF0, 0xF8, 0xF2, 0x60, 0x60, 0xE3, 0xB3, 0x62, 0xC1, 0xD5, 0x76,
+ 0x81, 0xC1, 0xD5, 0x95, 0xC1, 0x81, 0xC1, 0x62, 0xD2, 0x92, 0x73, 0x60, 0x77,
+ 0xD6, 0xD9, 0x9B, 0xE4, 0xB4, 0xC5, 0x66, 0x60, 0x60, 0xF9, 0xD5, 0x76, 0xC9,
+ 0x71, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x60, 0x60, 0xF9, 0xD5,
+ 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xE3, 0xB3, 0x85, 0xC5, 0xC3, 0x83, 0xC5, 0x85,
+ 0xA4, 0xE4, 0xA3, 0xE3, 0xA2, 0xE2, 0x99, 0xD9, 0x85, 0xC5, 0xD6, 0x96, 0xA3,
+ 0xE3, 0xA2, 0xE2, 0x85, 0xC5, 0x82, 0xC2, 0x99, 0xD9, 0x89, 0xC9, 0x99, 0xD9,
+ 0xA2, 0xE2, 0x81, 0xC1, 0x88, 0xC8, 0x85, 0xC5, 0xD9, 0x99, 0x93, 0xD3, 0x77,
+ 0x96, 0xD6, 0x73, 0x92, 0xD2, 0xE8, 0xE6, 0xE4, 0xE3, 0xE2, 0xD9, 0xD5, 0xC9,
+ 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC3, 0xC2, 0xC1, 0xA8, 0xA6, 0xA4, 0xA3, 0xA2,
+ 0x99, 0x95, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x76, 0x65,
+ 0x83, 0xC3, 0xC9, 0x89, 0xD3, 0x93, 0xD3, 0x93, 0xC9, 0x89, 0x64, 0xC3, 0xC9,
+ 0x71, 0xD3, 0x74, 0xD3, 0x74, 0xC9, 0x71, 0xD9, 0x9B, 0xD9, 0x99, 0x60, 0x96,
+ 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF3, 0xF7, 0xF2, 0x96, 0xD6,
+ 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF7, 0xF7, 0xF2, 0x60, 0x60, 0x96,
+ 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF4, 0xF8, 0xF2, 0x60, 0x96,
+ 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF8, 0xF7, 0xF2, 0x96, 0xD6,
+ 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF7, 0xF9, 0xF2, 0x60, 0x60, 0x96,
+ 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF5, 0xF8, 0xF2, 0x60, 0x96,
+ 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF0, 0xF0, 0xF5, 0x60, 0xD3,
+ 0x93, 0xC1, 0x81, 0xD5, 0x95, 0xD6, 0x96, 0xC9, 0x89, 0xE3, 0xA3, 0xC1, 0x81,
+ 0xD5, 0x95, 0xD9, 0x99, 0xC5, 0x85, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5,
+ 0x85, 0x4E, 0xF1, 0xF7, 0xF8, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85,
+ 0x4E, 0xF0, 0xF8, 0xF2, 0x60, 0x60, 0xE3, 0xA3, 0x96, 0xD6, 0xD9, 0x99, 0xE4,
+ 0xA4, 0xC5, 0x85, 0x4E, 0xF7, 0xF3, 0x60, 0x77, 0xD6, 0xD9, 0x9B, 0xE4, 0xB4,
+ 0xC5, 0x66, 0x4E, 0xF7, 0xF3, 0x60, 0xE2, 0xAB, 0xC5, 0x66, 0xE2, 0xA2, 0xC5,
+ 0x85, 0xD6, 0x96, 0xE3, 0xE2, 0xD5, 0xA3, 0xA2, 0x95, 0xC2, 0x82, 0x89, 0xC9,
+ 0xD9, 0x99, 0xE2, 0xA2, 0x92, 0xD2, 0xC5, 0x85, 0xE8, 0xD7, 0xB8, 0xA8, 0x97,
+ 0x78, 0xD6, 0x77, 0xC1, 0x81, 0x62, 0xD7, 0x97, 0x78, 0xE3, 0xE2, 0xD5, 0xB3,
+ 0xAB, 0x76, 0xC2, 0x63, 0x71, 0xC9, 0xD9, 0x9B, 0xE2, 0xAB, 0x73, 0xD2, 0xC5,
+ 0x66, 0xD7, 0x78, 0xE4, 0xE2, 0xD5, 0xD3, 0xD1, 0xC9, 0xC7, 0xC6, 0xC5, 0xC4,
+ 0xC3, 0xB4, 0xAB, 0xA4, 0xA2, 0x95, 0x93, 0x91, 0x89, 0x87, 0x86, 0x85, 0x84,
+ 0x83, 0x76, 0x74, 0x72, 0x71, 0x68, 0x67, 0x66, 0x65, 0x64, 0x00, 0x60, 0xC3,
+ 0x83, 0x64, 0xC9, 0x89, 0x71, 0xC4, 0x84, 0x65, 0xF4, 0xF8, 0xF1, 0xF1, 0x60,
+ 0xC1, 0x81, 0x62, 0xF8, 0xF2, 0xF9, 0x6D, 0xE3, 0xB3, 0xA3, 0x6E, 0xC8, 0x88,
+ 0x69, 0x99, 0x9B, 0xD9, 0x78, 0x97, 0xD7, 0x76, 0x95, 0xD5, 0x69, 0x88, 0xC8,
+ 0xE3, 0xD2, 0xD1, 0xC3, 0xB3, 0xA3, 0x92, 0x91, 0x83, 0x73, 0x72, 0x64, 0xE3,
+ 0xB3, 0xA3, 0x60, 0x85, 0xC5, 0xE2, 0xA2, 0xC5, 0x85, 0xD5, 0x95, 0xC1, 0x81,
+ 0xD7, 0x97, 0xC1, 0x81, 0xD1, 0x91, 0x6D, 0xD9, 0x99, 0xD6, 0x96, 0xC6, 0x86,
+ 0x6D, 0xE3, 0xA3, 0xC1, 0x81, 0xD4, 0x94, 0xD9, 0x99, 0xD6, 0x96, 0xC6, 0x86,
+ 0x6D, 0xC4, 0x84, 0xC5, 0x85, 0xD2, 0x92, 0xC3, 0x83, 0xC1, 0x81, 0xD7, 0x97,
+ 0x6D, 0xC5, 0x85, 0xC4, 0x84, 0xD6, 0x96, 0xC3, 0x83, 0x6D, 0xE7, 0xA7, 0xC9,
+ 0x89, 0xD5, 0x95, 0xE4, 0xA4, 0x6D, 0xC4, 0x84, 0xC5, 0x85, 0xC4, 0x84, 0xD5,
+ 0x95, 0xC5, 0x85, 0x6D, 0xD9, 0x9B, 0xD6, 0x77, 0xC6, 0x67, 0x6D, 0xE3, 0xB3,
+ 0xC1, 0x62, 0xD4, 0x75, 0xD9, 0x9B, 0xD6, 0x77, 0xC6, 0x67, 0x6D, 0xC4, 0x65,
+ 0xC5, 0x66, 0xD2, 0x73, 0xC3, 0x64, 0xC1, 0x62, 0xD7, 0x78, 0x6D, 0xC5, 0x66,
+ 0xC4, 0x65, 0xD6, 0x77, 0xC3, 0x64, 0x6D, 0xE7, 0xB7, 0xC9, 0x71, 0xD5, 0x76,
+ 0xE4, 0xB4, 0x6D, 0xC4, 0x65, 0xC5, 0x66, 0xC4, 0x65, 0xD5, 0x76, 0xC5, 0x66,
+ 0xE3, 0xB3, 0xE3, 0xA3, 0xC3, 0x83, 0x64, 0xD6, 0x96, 0x77, 0xD4, 0x94, 0x75,
+ 0xC3, 0x83, 0x64, 0xF3, 0xF4, 0xF8, 0xF9, 0xF0, 0x00, 0xF3, 0xF1, 0x00, 0xF9,
+ 0xF6, 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0,
+ 0xF6, 0xF9, 0xF4, 0xF7, 0xF0, 0xF3, 0xF2, 0xF1, 0xF0, 0xF2, 0xF4, 0xF9, 0xF8,
+ 0xF7, 0xF6, 0xF5, 0xF3, 0xF1, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF4, 0xF3, 0xF2,
+ 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF5, 0xF4, 0xF3, 0xF0, 0xF8, 0xF5, 0xF1, 0xF0,
+ 0xF3, 0xF6, 0xF9, 0xF4, 0xF1, 0xF2, 0xF5, 0xF2, 0xF1, 0xF0, 0xF9, 0xF0, 0xF1,
+ 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF5, 0xF0, 0xF9, 0xF8, 0xF6, 0xF5,
+ 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0x00, 0xF7, 0x00, 0xF6, 0xF8, 0xF2, 0xF1, 0xF0,
+ 0xF2, 0xF7, 0xF5, 0xF8, 0xF1, 0xF0, 0xF9, 0xF4, 0xF6, 0xF7, 0xF8, 0xF5, 0xF3,
+ 0xF2, 0xF1, 0x60, 0x62, 0xC1, 0xF8, 0xF7, 0xF9, 0xF8, 0xF1, 0xF7, 0xF6, 0xF3,
+ 0xF2, 0xF1, 0xF0, 0xF6, 0xF7, 0xF5, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3,
+ 0xF2, 0xF1, 0xF0, 0xF9, 0xF8, 0xF4, 0xF0, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3,
+ 0xF7, 0xF3, 0xF2, 0xF0, 0xF9, 0xF3, 0xF2, 0xF5, 0xF4, 0xF2, 0xF8, 0xF3, 0xF2,
+ 0xF1, 0xF0, 0xF6, 0xF5, 0xF0, 0xF2, 0xF0, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3,
+ 0xF1, 0xF3, 0xF5, 0xF1, 0xF3, 0xF8, 0xF4, 0xF1, 0xF8, 0xF9, 0xF2, 0xF6, 0xF3,
+ 0xF8, 0xF1, 0xF0, 0xF5, 0xF3, 0xF3, 0xF4, 0xF8, 0xF2, 0xF4, 0xF5, 0xF3, 0xF9,
+ 0xF8, 0xF7, 0xF6, 0xF4, 0xF1, 0xF8, 0xF7, 0xF5, 0xF3, 0xF0, 0xF4, 0xF6, 0xF5,
+ 0xF3, 0xF2, 0xF1, 0xF9, 0xF8, 0xF5, 0xF4, 0xF2, 0xF1, 0xF0, 0xF6, 0xF4, 0xF9,
+ 0xF0, 0xF0, 0xF4, 0xF5, 0xF7, 0xF6, 0xF5, 0xF2, 0xF2, 0xF7, 0xF1, 0xF0, 0xF6,
+ 0xF1, 0xF5, 0xF0, 0xF3, 0xF2, 0xF1, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF7, 0xF9,
+ 0xF5, 0xF4, 0xF3, 0xF2, 0xF0, 0xF5, 0xF6, 0xF3, 0xF0, 0xF4, 0xF6, 0xF7, 0xF8,
+ 0xF9, 0xF8, 0xF5, 0xF4, 0xF3, 0xF7, 0xF5, 0xF4, 0xF2, 0xF0, 0xF5, 0xF3, 0xF2,
+ 0xF2, 0xF5, 0xF5, 0xF5, 0xF4, 0xF1, 0xF4, 0xF3, 0xF2, 0xF1, 0xF2, 0xF9, 0xF7,
+ 0xF0, 0x00, 0xF2, 0xF1, 0xF7, 0xF6, 0xF0, 0xF1, 0xF4, 0xF8, 0xF5, 0xF0, 0xF2,
+ 0xF3, 0xF5, 0xF6, 0xF9, 0xF8, 0xF4, 0xF1, 0xF0, 0xF1, 0xF2, 0xF5, 0xF7, 0xF8,
+ 0xF8, 0xF7, 0xF6, 0xF5, 0xF3, 0xF9, 0xF3, 0xF6, 0x00, 0xF6, 0x00, 0xF0, 0xF7,
+ 0xF8, 0xF9, 0x00, 0xF0, 0xF5, 0xF4, 0xF9, 0xF8, 0xF7, 0xF6, 0xF1, 0xF0, 0xF3,
+ 0xF9, 0xF7, 0xF6, 0xF4, 0xF2, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2,
+ 0xF0, 0xF4, 0xF1, 0xF3, 0xF0, 0xF8, 0xF7, 0xF6, 0xF2, 0xF8, 0xF2, 0xF3, 0xF4,
+ 0xF6, 0xF5, 0xF4, 0xF6, 0xF5, 0xF3, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1,
+ 0xF0, 0xF8, 0xF9, 0xF7, 0xF6, 0xF5, 0xF3, 0xF1, 0xF7, 0xF3, 0xF2, 0xF2, 0xF1,
+ 0xF7, 0xF4, 0xF3, 0xF1, 0xF0, 0xF2, 0xF9, 0xF3, 0xF7, 0xF6, 0xF3, 0xF0, 0xF9,
+ 0xF7, 0xF8, 0xF5, 0xF7, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6,
+ 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0x60, 0xF8, 0xF9, 0xF4, 0xF8, 0xF7, 0xF6, 0xF0,
+ 0xF0, 0xF1, 0xF9, 0xF3, 0xF4, 0xF2, 0xF1, 0xF0, 0xF6, 0xF5, 0xF1, 0x60, 0x9B,
+ 0xD9, 0xC9, 0x71, 0x60, 0xD6, 0x77, 0xD4, 0x75, 0xD5, 0x76, 0x76, 0xD5, 0xC1,
+ 0x62, 0xC5, 0x66, 0xD9, 0x9B, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xD5, 0x76, 0xC9,
+ 0x71, 0xE3, 0xB3, 0x60, 0xF5, 0xA2, 0xE2, 0xC3, 0x83, 0xE2, 0xA2, 0xD2, 0x92,
+ 0xC8, 0x88, 0x60, 0xF5, 0xC7, 0x87, 0xC7, 0x68, 0xF1, 0xF0, 0xF0, 0xC4, 0x84,
+ 0x65, 0xC9, 0x89, 0x71, 0xA2, 0xE2, 0x99, 0xD9, 0x99, 0xD9, 0xF2, 0xF3, 0xF8,
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF5, 0xF6, 0xF9, 0xF8, 0xF4, 0xF9, 0xF6, 0xF4, 0xF3,
+ 0xF5, 0xF1, 0xF3, 0xF0, 0xF5, 0xF9, 0xF8, 0xF7, 0xF6, 0xF1, 0xF9, 0xF8, 0xF7,
+ 0xF0, 0xC9, 0xC7, 0xC1, 0x89, 0x87, 0x81, 0x85, 0xC5, 0xE2, 0xA2, 0xC5, 0x85,
+ 0xD5, 0x95, 0xC4, 0x84, 0xD9, 0x99, 0xC1, 0x81, 0xC4, 0x84, 0xD5, 0x95, 0xC1,
+ 0x81, 0xE3, 0xA3, 0xE2, 0xA2, 0xC5, 0x85, 0xC2, 0x82, 0x89, 0xC9, 0xC9, 0x89,
+ 0xC3, 0x83, 0xD6, 0x96, 0xF5, 0xC7, 0x87, 0xE3, 0xA3, 0xD4, 0x94, 0xC6, 0x86,
+ 0xC4, 0x84, 0x88, 0xC8, 0xD2, 0x92, 0x99, 0xD9, 0xE3, 0xD7, 0xD2, 0xA3, 0x97,
+ 0x92, 0xC3, 0x83, 0x92, 0xD2, 0xF2, 0xC1, 0x81, 0xD5, 0x95, 0xC1, 0x81, 0xD2,
+ 0x92, 0xC1, 0x81, 0xE3, 0xA3, 0xC1, 0x81, 0xD2, 0x92, 0xC8, 0x88, 0xE3, 0xA3,
+ 0xC4, 0x84, 0xC9, 0x89, 0xE6, 0xA6, 0xC6, 0x86, 0x95, 0xD5, 0xC1, 0x81, 0xD4,
+ 0x94, 0x96, 0xD6, 0xD9, 0x99, 0xD3, 0x93, 0x89, 0xC9, 0xC1, 0x81, 0x88, 0xC8,
+ 0xF5, 0xF2, 0xF1, 0xF0, 0xF9, 0xF8, 0xF4, 0xE3, 0xA3, 0xD4, 0x94, 0xC3, 0x83,
+ 0xC9, 0x89, 0xD3, 0x93, 0xD3, 0x93, 0xC9, 0x89, 0xD9, 0x99, 0x92, 0xD2, 0xC5,
+ 0x85, 0xC5, 0x85, 0xA6, 0xE6, 0xC5, 0x85, 0xD9, 0x99, 0xC2, 0x82, 0x85, 0xC5,
+ 0xD9, 0x99, 0xE8, 0xA8, 0xD9, 0x99, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xC8, 0xC7,
+ 0xC3, 0xC1, 0x88, 0x87, 0x83, 0x81, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xC2,
+ 0x82, 0xC7, 0x87, 0xF8, 0xC1, 0x81, 0xF8, 0xF5, 0xD3, 0x93, 0xD6, 0x96, 0xD4,
+ 0xC2, 0x94, 0x82, 0x99, 0xD9, 0xF8, 0xC3, 0x83, 0xC9, 0x89, 0x83, 0xC3, 0xC9,
+ 0x89, 0xE3, 0xA3, 0xD3, 0x93, 0xC1, 0x81, 0xC2, 0x82, 0xF5, 0xC5, 0x85, 0xC7,
+ 0x87, 0xC1, 0x81, 0xD7, 0x97, 0xC5, 0x85, 0xC4, 0x84, 0x93, 0xD3, 0xC1, 0x81,
+ 0xE4, 0xA4, 0xC7, 0x87, 0xD5, 0x95, 0xC9, 0x89, 0xD3, 0x93, 0xC9, 0x89, 0xE3,
+ 0xA3, 0xD3, 0x93, 0xE4, 0xA4, 0xD4, 0x94, 0xA6, 0xE6, 0xC5, 0x85, 0xD9, 0x99,
+ 0xC2, 0x82, 0xC5, 0x85, 0xC8, 0x88, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xC1,
+ 0x81, 0xD3, 0x93, 0xF2, 0xF0, 0xD6, 0x96, 0xF6, 0xF5, 0xC3, 0x83, 0xF7, 0xF8,
+ 0xF7, 0xD7, 0x97, 0xE2, 0xA2, 0xC9, 0x89, 0xD1, 0x91, 0xA3, 0xE3, 0xC6, 0x86,
+ 0xC9, 0x89, 0xA2, 0xE2, 0x85, 0xC5, 0xC4, 0x84, 0xD6, 0x96, 0xC3, 0x83, 0x85,
+ 0xC5, 0x85, 0xC5, 0xD3, 0xC2, 0x93, 0x82, 0x85, 0xC5, 0x85, 0xC5, 0xD3, 0xC2,
+ 0x93, 0x82, 0xF2, 0xF6, 0xF8, 0xF3, 0xF1, 0xC6, 0x86, 0xC9, 0x89, 0xD5, 0x95,
+ 0xC9, 0x89, 0xE3, 0xA3, 0xC1, 0x81, 0xD3, 0x93, 0xF1, 0xF1, 0xF3, 0xE2, 0xA2,
+ 0xE6, 0xA6, 0xD6, 0x96, 0xC4, 0x84, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xD5, 0xA3,
+ 0x95, 0xC9, 0x89, 0xC8, 0x88, 0xC3, 0x83, 0xE2, 0xD6, 0xA2, 0x96, 0xE2, 0xC2,
+ 0xA2, 0x82, 0x97, 0xD7, 0xC1, 0x81, 0xC2, 0x82, 0xE4, 0xA4, 0xC9, 0x89, 0xE2,
+ 0xC4, 0xA2, 0x84, 0x83, 0xC3, 0xC9, 0x89, 0xD3, 0x93, 0xD3, 0x93, 0xC9, 0x89,
+ 0xD9, 0x99, 0xE6, 0xE4, 0xE3, 0xE2, 0xD7, 0xD2, 0xC9, 0xC8, 0xC7, 0xC5, 0xC2,
+ 0xC1, 0xA6, 0xA4, 0xA3, 0xA2, 0x97, 0x92, 0x89, 0x88, 0x87, 0x85, 0x82, 0x81,
+ 0xC9, 0x89, 0xF7, 0xF4, 0xF3, 0xF5, 0xF0, 0xF8, 0xF9, 0xF2, 0xF1, 0x60, 0xE2,
+ 0xAB, 0xA2, 0x60, 0xF2, 0xF1, 0xF3, 0xF2, 0xD2, 0x92, 0xC5, 0x85, 0xC5, 0x85,
+ 0x73, 0x92, 0xD2, 0xF2, 0x6D, 0x60, 0xC8, 0x88, 0x69, 0xF7, 0xF0, 0xF7, 0xF0,
+ 0xF5, 0xF4, 0xF0, 0xF8, 0xF7, 0xF3, 0xF6, 0xF7, 0xF0, 0xF1, 0xF7, 0xF4, 0xF3,
+ 0xF0, 0xF0, 0xF5, 0xF7, 0xF0, 0xF7, 0xF1, 0xF6, 0xF0, 0xF4, 0xF8, 0xF1, 0xF0,
+ 0xF5, 0xF9, 0xF6, 0xF5, 0xF3, 0xF2, 0xF1, 0xF0, 0xF8, 0xF4, 0xF7, 0xF5, 0xF2,
+ 0xF1, 0xF0, 0xF8, 0xF8, 0xF3, 0xF5, 0xF6, 0xF7, 0xF9, 0xF3, 0xF0, 0xF4, 0xF5,
+ 0xF0, 0xF1, 0xF6, 0xF7, 0xF8, 0xF9, 0xF3, 0xF2, 0xF4, 0xF6, 0xF7, 0xF9, 0xF0,
+ 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF0, 0xF3, 0xF1, 0xF4, 0xF2,
+ 0xF6, 0xF7, 0xF8, 0xF5, 0xF4, 0xF3, 0xF2, 0xF6, 0xF8, 0xF4, 0xF5, 0xF3, 0xF7,
+ 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF3,
+ 0xF1, 0xF7, 0xF3, 0xF2, 0xF0, 0xF3, 0xF2, 0xF6, 0xF0, 0xF9, 0xF8, 0xF7, 0xF5,
+ 0xF3, 0xF0, 0xF7, 0xF8, 0xF9, 0xF8, 0xF1, 0xF7, 0xF0, 0xF1, 0xF2, 0xF3, 0xF6,
+ 0xF6, 0xF5, 0xF7, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9,
+ 0xF8, 0xF9, 0xF0, 0xF4, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xF8, 0xF7,
+ 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xF2, 0xF3, 0xF7, 0xF2, 0xF3,
+ 0xF9, 0xF2, 0xF4, 0xF5, 0xF0, 0xF1, 0xF2, 0xF3, 0xF6, 0xF5, 0xF0, 0xF2, 0xF1,
+ 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF5, 0xF3, 0xF8, 0xF3, 0xF1, 0xF2, 0xF9,
+ 0xF6, 0xF3, 0xF0, 0xF1, 0xF8, 0xF5, 0xF3, 0xF3, 0xF4, 0xF9, 0xF8, 0xF7, 0xF6,
+ 0xF8, 0xF7, 0xF5, 0xF3, 0xF0, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF9, 0xF8,
+ 0xF5, 0xF4, 0xF2, 0xF1, 0xF0, 0xF6, 0xF1, 0xF0, 0xF5, 0xF1, 0xF2, 0xF3, 0xF8,
+ 0xF7, 0xF6, 0xF5, 0xF4, 0xF9, 0xF0, 0xF2, 0xF3, 0xF4, 0xF5, 0xF5, 0xF6, 0xF3,
+ 0xF4, 0xF0, 0xF9, 0xF8, 0xF7, 0xF6, 0xF8, 0xF7, 0xF5, 0xF4, 0xF2, 0xF5, 0xF3,
+ 0xF2, 0xF2, 0xF1, 0xF6, 0xF6, 0xF0, 0xF9, 0xF8, 0xF7, 0xF4, 0xF6, 0xF5, 0xF3,
+ 0xF4, 0xF0, 0xF6, 0xF4, 0xF3, 0xF1, 0xF0, 0xF9, 0xF3, 0xF3, 0xF2, 0xF1, 0xF0,
+ 0xF9, 0xF8, 0xF7, 0xF5, 0xF4, 0xF3, 0xF2, 0xF0, 0xF8, 0xF0, 0xF1, 0xF4, 0xF8,
+ 0xF8, 0xF2, 0xF4, 0xF5, 0xF3, 0xF4, 0xF1, 0xF7, 0xF6, 0xF4, 0xF9, 0xF0, 0xF7,
+ 0xF5, 0xF2, 0xF2, 0xF7, 0xF5, 0xF4, 0xF3, 0xF2, 0xF5, 0xF5, 0xF5, 0xF4, 0xF1,
+ 0xF4, 0xF3, 0xF2, 0xF1, 0xF2, 0xF9, 0xF2, 0xF1, 0xF7, 0xF3, 0xF8, 0xF5, 0xF7,
+ 0xF3, 0xF2, 0xF9, 0xF8, 0xF5, 0xF4, 0xF1, 0xF0, 0xF6, 0xF5, 0xF3, 0xF2, 0xF1,
+ 0xF0, 0xC4, 0x84, 0x65, 0xC9, 0x89, 0x71, 0xE2, 0xAB, 0xA2, 0xF1, 0xF0, 0xC3,
+ 0x83, 0x64, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xE3,
+ 0xB3, 0xA3, 0xF9, 0xF8, 0xF7, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xC3, 0x83,
+ 0x64, 0x60, 0xC1, 0x81, 0xF2, 0x60, 0xE2, 0xAB, 0xA2, 0xC3, 0x83, 0x64, 0xE4,
+ 0xB4, 0xA4, 0x60, 0xF6, 0xF4, 0xF6, 0xF1, 0x60, 0x76, 0xD5, 0xC9, 0x71, 0xE3,
+ 0xB3, 0xC1, 0x62, 0xD3, 0x74, 0x60, 0xF1, 0x4B, 0xF3, 0x60, 0xE2, 0xAB, 0xE6,
+ 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xC1, 0x81,
+ 0xD3, 0x93, 0x60, 0xF1, 0x4B, 0xF3, 0x60, 0xE2, 0xA2, 0xE6, 0xA6, 0xD6, 0x96,
+ 0xC4, 0x84, 0xD5, 0x95, 0xD5, 0x76, 0xC9, 0x89, 0x71, 0xE6, 0xB6, 0xA6, 0xF2,
+ 0x60, 0x76, 0xD5, 0xC9, 0x71, 0xE3, 0xB3, 0xC1, 0x62, 0xD3, 0x74, 0x60, 0xE2,
+ 0xAB, 0xE6, 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3,
+ 0xC1, 0x81, 0xD3, 0x93, 0x60, 0xE2, 0xA2, 0xE6, 0xA6, 0xD6, 0x96, 0xC4, 0x84,
+ 0xD5, 0x95, 0xD5, 0x76, 0xC9, 0x89, 0x71, 0xE6, 0xB6, 0xA6, 0x00, 0x60, 0x00,
+ 0xF5, 0xF3, 0x60, 0xF6, 0xF3, 0xF4, 0xF9, 0xF7, 0xF8, 0xF5, 0xF2, 0xF1, 0x60,
+ 0xF9, 0xF5, 0xF8, 0xF0, 0xD9, 0x99, 0xF1, 0xF9, 0xF9, 0xF1, 0x7A, 0xB5, 0xE5,
+ 0xE5, 0xA5, 0xD9, 0x99, 0xD9, 0x9B, 0xC9, 0x89, 0x71, 0x4B, 0xF6, 0xF7, 0xF8,
+ 0xF9, 0xF1, 0xF7, 0xF8, 0xF9, 0xF1, 0xF8, 0xF8, 0xF9, 0xF1, 0xF8, 0xF8, 0xF9,
+ 0xF1, 0xF8, 0xF8, 0xF9, 0xF1, 0xF7, 0xF8, 0xF9, 0xF1, 0xF7, 0xF8, 0xF9, 0xF1,
+ 0xF8, 0xF9, 0xF1, 0xF9, 0xF8, 0xF9, 0xF1, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A,
+ 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0x7A, 0x00, 0xF5, 0x7A,
+ 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0x60, 0xF9, 0xF5, 0xF8,
+ 0xF4, 0xA2, 0xAB, 0xE2, 0xE4, 0xB4, 0xA4, 0x60, 0xF6, 0xF4, 0xF8, 0xF6, 0xF8,
+ 0xF1, 0xC9, 0x89, 0xF6, 0x6D, 0x60, 0xD6, 0x96, 0x77, 0xD5, 0x95, 0xD4, 0x94,
+ 0x75, 0xD9, 0x9B, 0x99, 0x60, 0x95, 0xD5, 0xC1, 0x81, 0xC5, 0x85, 0xF8, 0xF1,
+ 0xF0, 0xF6, 0xF5, 0xF9, 0xF7, 0xF8, 0xF9, 0xF1, 0x60, 0xF1, 0xF0, 0xF6, 0xF5,
+ 0x6D, 0xC3, 0x83, 0x64, 0x6D, 0xC3, 0x83, 0x6D, 0x64, 0xD9, 0xC9, 0x99, 0x89,
+ 0x71, 0xF9, 0x60, 0xD5, 0x76, 0xC9, 0x71, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x60,
+ 0xD5, 0x95, 0xC9, 0x89, 0xE3, 0xA3, 0xE3, 0xB3, 0x71, 0xC9, 0xD1, 0x72, 0x89,
+ 0xC9, 0xD1, 0x91, 0xD5, 0x95, 0xD5, 0x76, 0xC1, 0x81, 0x62, 0xF3, 0xD2, 0x92,
+ 0x73, 0xF9, 0x6D, 0x96, 0xD6, 0xD9, 0x99, 0xE4, 0xA4, 0xC5, 0x85, 0x4E, 0xF0,
+ 0xF5, 0xF8, 0x60, 0xD3, 0x93, 0xC1, 0x81, 0xE4, 0xA4, 0xC7, 0x87, 0xD5, 0x95,
+ 0xC9, 0x89, 0xD3, 0x93, 0xC9, 0x89, 0xE3, 0xA3, 0xD6, 0x77, 0xD9, 0x9B, 0xE4,
+ 0xB4, 0xC5, 0x66, 0x4E, 0xF0, 0xF5, 0xF8, 0x60, 0xD3, 0x74, 0xC1, 0x62, 0xE4,
+ 0xB4, 0xC7, 0x68, 0xD5, 0x76, 0xC9, 0x71, 0xD3, 0x74, 0xC9, 0x71, 0xE3, 0xB3,
+ 0xD3, 0x74, 0xD3, 0x93, 0xE4, 0xB4, 0xA4, 0xD4, 0x94, 0x75, 0x60, 0x6D, 0xE3,
+ 0xB3, 0xC6, 0x67, 0x6D, 0xE3, 0xA3, 0xC6, 0x86, 0xC9, 0x89, 0xC9, 0x71, 0x60,
+ 0xE2, 0xAB, 0xA2, 0xF2, 0x60, 0xC3, 0x83, 0x64, 0xE2, 0xAB, 0xA2, 0xC1, 0x81,
+ 0x62, 0xC5, 0x85, 0x66, 0xC5, 0x85, 0x66, 0x74, 0x93, 0xD3, 0x63, 0x82, 0xC2,
+ 0xD3, 0xC2, 0x93, 0x82, 0x74, 0x63, 0x60, 0xC5, 0x85, 0x66, 0xC5, 0x85, 0x66,
+ 0x74, 0x93, 0xD3, 0x63, 0x82, 0xC2, 0xD3, 0xC2, 0x93, 0x82, 0x74, 0x63, 0x60,
+ 0xF2, 0xF6, 0xF8, 0xF3, 0xF1, 0xF8, 0xF3, 0xF1, 0x60, 0xC6, 0x86, 0x67, 0x00,
+ 0x60, 0xE2, 0xAB, 0xA2, 0xF9, 0xF1, 0x60, 0xA2, 0xE2, 0xE6, 0xA6, 0xD6, 0x96,
+ 0xC4, 0x84, 0xD5, 0x95, 0xE2, 0xAB, 0xE6, 0xB6, 0xD6, 0x77, 0xC4, 0x65, 0xD5,
+ 0x76, 0xF9, 0xF6, 0xF5, 0xF3, 0xF2, 0xF1, 0xF0, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF6, 0xF5, 0xC9, 0x71, 0xC9, 0x89,
+ 0xE3, 0xE2, 0xC3, 0xB3, 0xAB, 0xA3, 0xA2, 0x83, 0x64, 0xC9, 0x89, 0x71, 0xC8,
+ 0x88, 0x69, 0xF8, 0xD6, 0x77, 0xF8, 0xD6, 0x96, 0xC3, 0x83, 0x64, 0xE2, 0xAB,
+ 0xA2, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xC1, 0x81, 0x62, 0xE2, 0xD6, 0xAB, 0xA2,
+ 0x96, 0x77, 0xE2, 0xC2, 0xC1, 0xAB, 0xA2, 0x82, 0x81, 0x63, 0xD7, 0xC5, 0x97,
+ 0x85, 0xD9, 0xC2, 0x99, 0x82, 0x63, 0xE8, 0xE2, 0xD7, 0xC8, 0xC3, 0xA8, 0xA2,
+ 0x97, 0x88, 0x83, 0x78, 0x64, 0xC9, 0x89, 0x71, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
+ 0xC1, 0x62, 0xD6, 0x77, 0xE2, 0xC2, 0xC1, 0xAB, 0x63, 0x62, 0xE7, 0xE4, 0xD3,
+ 0xC3, 0xC2, 0xB7, 0xB4, 0xA7, 0xA4, 0x93, 0x83, 0x82, 0x74, 0x64, 0x63, 0xE8,
+ 0xE2, 0xD7, 0xC8, 0xB8, 0xAB, 0x78, 0x69, 0x9B, 0x99, 0xD9, 0xE2, 0xD5, 0xC4,
+ 0xAB, 0xA2, 0x95, 0x84, 0x76, 0x65, 0x69, 0x49, 0x74, 0x73, 0x63, 0x54, 0x53,
+ 0x43, 0x69, 0x49, 0x68, 0x48, 0x38, 0xC9, 0x89, 0x71, 0x6F, 0x4F, 0x63, 0x43,
+ 0x73, 0x53, 0x31, 0x32, 0x33, 0x34, 0x35, 0x61, 0x41, 0x73, 0x6F, 0x53, 0x4F,
+ 0x69, 0x49, 0x66, 0xC5, 0xD7, 0x78, 0x73, 0x62, 0x61, 0x53, 0x42, 0x41, 0xD9,
+ 0x9B, 0x70, 0x65, 0x50, 0x45, 0x72, 0x62, 0x52, 0x42, 0x78, 0x75, 0x6C, 0x63,
+ 0x62, 0x58, 0x55, 0x4C, 0x43, 0x42, 0x79, 0x73, 0x70, 0x68, 0x63, 0x59, 0x53,
+ 0x50, 0x48, 0x43, 0x69, 0x49, 0x52, 0x72, 0x73, 0x6E, 0x64, 0x53, 0x4E, 0x44,
+ 0x35, 0x36, 0x28, 0x78, 0x77, 0x75, 0x74, 0x73, 0x72, 0x70, 0x6D, 0x6C, 0x6B,
+ 0x6A, 0x69, 0x68, 0x67, 0x65, 0x63, 0x62, 0x61, 0x58, 0x57, 0x55, 0x54, 0x53,
+ 0x52, 0x50, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x45, 0x43, 0x42, 0x41,
+ 0x39, 0x38, 0x34, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE
+};
diff --git a/os400/iconv/iconv.c b/os400/iconv/iconv.c
new file mode 100644
index 0000000..c85c268
--- /dev/null
+++ b/os400/iconv/iconv.c
@@ -0,0 +1,154 @@
+/**
+*** iconv_open(), iconv(), iconv_close() wrappers for the OS/400.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "/QIBM/include/iconv.h" /* Force system definition. */
+
+#define USE_SYSTEM_ICONV
+#include "iconv.h" /* Use local definitions. */
+
+
+
+/**
+*** Bring-in the name-->CCSID mapping DFA tables.
+**/
+
+#include "ianatables.c"
+
+
+
+static int
+findEncoding(const unsigned char * * namep)
+
+{
+ t_staterange curstate;
+ t_ccsid ccsid;
+ t_ccsid final;
+ t_transrange l;
+ t_transrange h;
+ const unsigned char * name;
+
+ /**
+ *** Get the CCSID correspong to the name at *`namep'.
+ *** If success, update pointer at `namep' to 1st byte after matched
+ *** name and return the CCSID.
+ *** If failure, set errno and return -1.
+ **/
+
+ if (!namep || !(name = *namep)) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ curstate = 0;
+ final = 0;
+
+ for (;;) {
+ if (curstate < sizeof final_array / sizeof final_array[0])
+ if (final_array[curstate]) {
+ final = final_array[curstate];
+ *namep = name;
+ }
+
+ l = trans_array[curstate] - 1;
+ h = trans_array[curstate + 1];
+
+ do {
+ if (++l >= h) {
+ if (!final) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ return final - 1;
+ }
+ } while (label_array[l] != *name);
+
+ curstate = goto_array[l];
+ name++;
+ }
+
+ /* NOTREACHED. */
+}
+
+
+static void
+makeos400codename(char * buf, unsigned int ccsid)
+
+{
+ ccsid &= 0xFFFF;
+ memset(buf, 0, 32);
+ sprintf(buf, "IBMCCSID%05u0000000", ccsid);
+}
+
+
+Iconv_t
+IconvOpen(const char * tocode, const char * fromcode)
+
+{
+ int toccsid = findEncoding(&tocode);
+ int fromccsid = findEncoding(&fromcode);
+ char fromibmccsid[33];
+ char toibmccsid[33];
+ iconv_t * cd;
+
+ if (toccsid < 0 || fromccsid < 0)
+ return (Iconv_t) -1;
+
+ makeos400codename(fromibmccsid, fromccsid);
+ makeos400codename(toibmccsid, toccsid);
+ memset(toibmccsid + 13, 0, sizeof toibmccsid - 13);
+
+ cd = (iconv_t *) malloc(sizeof *cd);
+
+ if (!cd)
+ return (Iconv_t) -1;
+
+ *cd = iconv_open(toibmccsid, fromibmccsid);
+
+ if (cd->return_value) {
+ free((char *) cd);
+ return (Iconv_t) -1;
+ }
+
+ return (Iconv_t) cd;
+}
+
+
+size_t
+Iconv(Iconv_t cd, char * * inbuf, size_t * inbytesleft,
+ char * * outbuf, size_t * outbytesleft)
+
+{
+ if (!cd || cd == (Iconv_t) -1) {
+ errno = EINVAL;
+ return (size_t) -1;
+ }
+
+ return iconv(*(iconv_t *) cd, inbuf, inbytesleft, outbuf, outbytesleft);
+}
+
+
+int
+IconvClose(Iconv_t cd)
+
+{
+ if (!cd || cd == (Iconv_t) -1) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (iconv_close(*(iconv_t *) cd))
+ return -1;
+
+ free((char *) cd);
+ return 0;
+}
diff --git a/os400/iconv/iconv.h b/os400/iconv/iconv.h
new file mode 100644
index 0000000..87a8bbc
--- /dev/null
+++ b/os400/iconv/iconv.h
@@ -0,0 +1,40 @@
+/**
+*** Declarations for the iconv wrappers.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#ifndef __ICONV_H_
+#define __ICONV_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h> /* For size_t. */
+
+
+typedef void * Iconv_t;
+
+
+Iconv_t IconvOpen(const char * tocode, const char * fromcode);
+size_t Iconv(Iconv_t cd, char * * inbuf, size_t * inbytesleft,
+ char * * outbuf, size_t * outbytesleft);
+int IconvClose(Iconv_t cd);
+
+
+#ifndef USE_SYSTEM_ICONV
+#define iconv_t Iconv_t
+#define iconv_open IconvOpen
+#define iconv Iconv
+#define iconv_close IconvClose
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/os400/initscript.sh b/os400/initscript.sh
new file mode 100644
index 0000000..fb80507
--- /dev/null
+++ b/os400/initscript.sh
@@ -0,0 +1,290 @@
+#!/bin/sh
+#
+# Compilation scripts initialization for the OS/400 implementation.
+#
+# See Copyright for the status of this software.
+#
+# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+#
+
+
+case "${SCRIPTDIR}" in
+/*) ;;
+*) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
+esac
+
+while true
+do case "${SCRIPTDIR}" in
+ */.) SCRIPTDIR="${SCRIPTDIR%/.}";;
+ *) break;;
+ esac
+done
+
+# The script directory is supposed to be in $TOPDIR/os400.
+
+TOPDIR=`dirname "${SCRIPTDIR}"`
+export SCRIPTDIR TOPDIR
+
+
+setenv()
+
+{
+ # Define and export.
+
+ eval ${1}="${2}"
+ export ${1}
+}
+
+
+################################################################################
+#
+# Tunable configuration parameters.
+#
+################################################################################
+
+setenv TARGETLIB 'LIBXML2' # Target OS/400 program library.
+setenv STATBNDDIR 'LIBXML2_A' # Static binding directory.
+setenv DYNBNDDIR 'LIBXML2' # Dynamic binding directory.
+setenv SRVPGM "LIBXML2" # Service program.
+setenv TGTCCSID '500' # Target CCSID of objects.
+setenv DEBUG '*ALL' # Debug level.
+setenv OPTIMIZE '10' # Optimisation level.
+setenv OUTPUT '*NONE' # Compilation output option.
+setenv TGTRLS 'V5R3M0' # Target OS release.
+setenv IFSDIR '/libxml2' # Installation IFS directory.
+
+
+################################################################################
+#
+# Conditional compilation parameters.
+#
+################################################################################
+
+setenv WITH_TRIO 1 # Configure trio support.
+setenv WITH_THREADS 1 # Configure thread support.
+setenv WITH_THREAD_ALLOC 1 # Whether allocation hooks are per-thread.
+setenv WITH_TREE 1 # Compile DOM tree API.
+setenv WITH_OUTPUT 1 # Compile serialization/saving support.
+setenv WITH_PUSH 1 # Compile push parser.
+setenv WITH_READER 1 # Compile parsing interface.
+setenv WITH_PATTERN 1 # Compile pattern node selection interface.
+setenv WITH_WRITER 1 # Compile saving interface.
+setenv WITH_SAX1 1 # Compile SAX version 1 interface.
+setenv WITH_FTP 1 # Compile FTP support.
+setenv WITH_HTTP 1 # Compile HTTP support.
+setenv WITH_VALID 1 # Compile DTD validation support.
+setenv WITH_HTML 1 # Compile HTML support.
+setenv WITH_LEGACY 1 # Compile deprecated API.
+setenv WITH_C14N 1 # Compile canonicalization support.
+setenv WITH_CATALOG 1 # Compile catalog support.
+setenv WITH_DOCB 1 # Compile SGML Docbook support.
+setenv WITH_XPATH 1 # Compile XPath support.
+setenv WITH_XPTR 1 # Compile XPointer support.
+setenv WITH_XINCLUDE 1 # Compile XInclude support.
+setenv WITH_ICONV 1 # Whether iconv support is available.
+setenv WITH_ICU 0 # Whether icu support is available.
+setenv WITH_ISO8859X 1 # Compile ISO-8859-* support if no iconv.
+setenv WITH_DEBUG 1 # Compile debugging module.
+setenv WITH_MEM_DEBUG 1 # Compile memory debugging module.
+setenv WITH_RUN_DEBUG 1 # Compile runtime debugging.
+setenv WITH_REGEXPS 1 # Compile regular expression interfaces.
+setenv WITH_SCHEMAS 1 # Compile schema validation interface.
+setenv WITH_SCHEMATRON 1 # Compile schematron validation interface.
+setenv WITH_MODULES 1 # Compile module interfaces.
+setenv WITH_ZLIB 0 # Whether zlib is available.
+setenv WITH_LZMA 0 # Whether LZMA is available.
+
+# Define ZLIB locations. This is ignored if WITH_ZLIB is 0.
+
+setenv ZLIB_INCLUDE '/zlib/include' # ZLIB include IFS directory.
+setenv ZLIB_LIB 'ZLIB' # ZLIB library.
+setenv ZLIB_BNDDIR 'ZLIB_A' # ZLIB binding directory.
+
+################################################################################
+#
+# OS/400 specific definitions.
+#
+################################################################################
+
+setenv LIBIFSNAME "/QSYS.LIB/${TARGETLIB}.LIB"
+setenv MODULE_EXTENSION '.SRVPGM'
+
+
+################################################################################
+#
+# Extract version information.
+#
+################################################################################
+
+
+# Transitional: get file name of configure script.
+
+AUTOCONFSCRIPT="${TOPDIR}/configure.ac"
+
+if [ ! -f "${AUTOCONFSCRIPT}" ]
+then AUTOCONFSCRIPT="${TOPDIR}/configure.in"
+fi
+
+# Need to get the version definitions.
+
+eval "`grep '^LIBXML_[A-Z]*_VERSION=' \"${AUTOCONFSCRIPT}\"`"
+eval "`grep '^LIBXML_MICRO_VERSION_SUFFIX=' \"${AUTOCONFSCRIPT}\"`"
+LIBXML_VERSION="${LIBXML_MAJOR_VERSION}.${LIBXML_MINOR_VERSION}"
+LIBXML_VERSION="${LIBXML_VERSION}.${LIBXML_MICRO_VERSION}"
+LIBXML_VERSION="${LIBXML_VERSION}${LIBXML_MICRO_VERSION_SUFFIX}"
+LIBXML_VERSION_NUMBER=`expr "${LIBXML_MAJOR_VERSION}" \* 10000 + \
+ "${LIBXML_MINOR_VERSION}" \* 100 + \
+ "${LIBXML_MICRO_VERSION}"`
+export LIBXML_MAJOR_VERSION LIBXML_MINOR_VERSION
+export LIBXML_MICRO_VERSION LIBXML_MICROVERSION_SUFFIX
+export LIBXML_VERSION LIBXML_VERSION_NUMBER
+setenv LIBXML_VERSION_EXTRA ''
+setenv VERSION "${LIBXML_VERSION}"
+
+
+################################################################################
+#
+# Procedures.
+#
+################################################################################
+
+# action_needed dest [src]
+#
+# dest is an object to build
+# if specified, src is an object on which dest depends.
+#
+# exit 0 (succeeds) if some action has to be taken, else 1.
+
+action_needed()
+
+{
+ [ ! -e "${1}" ] && return 0
+ [ "${2}" ] || return 1
+ [ "${1}" -ot "${2}" ] && return 0
+ return 1
+}
+
+
+# make_module module_name source_name [additional_definitions]
+#
+# Compile source name into ASCII module if needed.
+# As side effect, append the module name to variable MODULES.
+# Set LINK to "YES" if the module has been compiled.
+
+make_module()
+
+{
+ MODULES="${MODULES} ${1}"
+ MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
+ action_needed "${MODIFSNAME}" "${2}" || return 0;
+
+ # #pragma convert has to be in the source file itself, i.e.
+ # putting it in an include file makes it only active
+ # for that include file.
+ # Thus we build a temporary file with the pragma prepended to
+ # the source file and we compile that temporary file.
+
+ rm -f __tmpsrcf.c
+ if [ "${4}" != 'ebcdic' ]
+ then echo "#line 1 \"${2}\"" >> __tmpsrcf.c
+ echo "#pragma convert(819)" >> __tmpsrcf.c
+ echo '#include "wrappers.h"' >> __tmpsrcf.c
+ fi
+ echo "#line 1 \"${2}\"" >> __tmpsrcf.c
+ cat "${2}" >> __tmpsrcf.c
+ CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('__tmpsrcf.c')"
+# CMD="${CMD} OPTION(*INCDIRFIRST *SHOWINC *SHOWSYS)"
+ CMD="${CMD} OPTION(*INCDIRFIRST)"
+ CMD="${CMD} SYSIFCOPT(*IFS64IO) LANGLVL(*EXTENDED) LOCALETYPE(*LOCALE)"
+ CMD="${CMD} INCDIR("
+ CMD="${CMD} '${TOPDIR}/os400/iconv'"
+ if [ "${4}" != 'ebcdic' ]
+ then CMD="${CMD} '/qibm/proddata/qadrt/include'"
+ fi
+ CMD="${CMD} '${TOPDIR}/os400' '${TOPDIR}/os400/dlfcn'"
+ CMD="${CMD} '${IFSDIR}/include/libxml' '${IFSDIR}/include'"
+ if [ "${ZLIB_INCLUDE}" ]
+ then CMD="${CMD} '${ZLIB_INCLUDE}'"
+ fi
+ CMD="${CMD} '${TOPDIR}' ${INCLUDES})"
+ CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
+ CMD="${CMD} OUTPUT(${OUTPUT})"
+ CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
+ CMD="${CMD} DBGVIEW(${DEBUG})"
+ CMD="${CMD} DEFINE('_REENTRANT' 'TRIO_HAVE_CONFIG_H' 'NDEBUG' ${3})"
+
+ system "${CMD}"
+ rm -f __tmpsrcf.c
+ LINK=YES
+}
+
+
+# Determine DB2 object name from IFS name.
+
+db2_name()
+
+{
+ if [ "${2}" = 'nomangle' ]
+ then basename "${1}" |
+ tr 'a-z-' 'A-Z_' |
+ sed -e 's/\..*//' \
+ -e 's/^\(..........\).*$/\1/'
+ else basename "${1}" |
+ tr 'a-z-' 'A-Z_' |
+ sed -e 's/\..*//' \
+ -e 's/^TEST/T/' \
+ -e 's/^XML/X/' \
+ -e 's/^\(.\).*\(.........\)$/\1\2/'
+ fi
+}
+
+
+# Copy IFS file replacing version & configuration info.
+
+versioned_copy()
+
+{
+ sed -e "s/@LIBXML_VERSION@/${LIBXML_VERSION}/g" \
+ \
+ -e "s#@LIBXML_MAJOR_VERSION@#${LIBXML_MAJOR_VERSION}#g" \
+ -e "s#@LIBXML_MINOR_VERSION@#${LIBXML_MINOR_VERSION}#g" \
+ -e "s#@LIBXML_MICRO_VERSION@#${LIBXML_MICRO_VERSION}#g" \
+ -e "s#@LIBXML_MICRO_VERSION_SUFFIX@#${LIBXML_MICRO_VERSION_SUFFIX}#g" \
+ -e "s#@LIBXML_VERSION@#${LIBXML_VERSION}#g" \
+ -e "s#@LIBXML_VERSION_NUMBER@#${LIBXML_VERSION_NUMBER}#g" \
+ -e "s#@LIBXML_VERSION_EXTRA@#${LIBXML_VERSION_EXTRA}#g" \
+ -e "s#@VERSION@#${VERSION}#g" \
+ -e "s#@WITH_TRIO@#${WITH_TRIO}#g" \
+ -e "s#@WITH_THREADS@#${WITH_THREADS}#g" \
+ -e "s#@WITH_THREAD_ALLOC@#${WITH_THREAD_ALLOC}#g" \
+ -e "s#@WITH_TREE@#${WITH_TREE}#g" \
+ -e "s#@WITH_OUTPUT@#${WITH_OUTPUT}#g" \
+ -e "s#@WITH_PUSH@#${WITH_PUSH}#g" \
+ -e "s#@WITH_READER@#${WITH_READER}#g" \
+ -e "s#@WITH_PATTERN@#${WITH_PATTERN}#g" \
+ -e "s#@WITH_WRITER@#${WITH_WRITER}#g" \
+ -e "s#@WITH_SAX1@#${WITH_SAX1}#g" \
+ -e "s#@WITH_FTP@#${WITH_FTP}#g" \
+ -e "s#@WITH_HTTP@#${WITH_HTTP}#g" \
+ -e "s#@WITH_VALID@#${WITH_VALID}#g" \
+ -e "s#@WITH_HTML@#${WITH_HTML}#g" \
+ -e "s#@WITH_LEGACY@#${WITH_LEGACY}#g" \
+ -e "s#@WITH_C14N@#${WITH_C14N}#g" \
+ -e "s#@WITH_CATALOG@#${WITH_CATALOG}#g" \
+ -e "s#@WITH_DOCB@#${WITH_DOCB}#g" \
+ -e "s#@WITH_XPATH@#${WITH_XPATH}#g" \
+ -e "s#@WITH_XPTR@#${WITH_XPTR}#g" \
+ -e "s#@WITH_XINCLUDE@#${WITH_XINCLUDE}#g" \
+ -e "s#@WITH_ICONV@#${WITH_ICONV}#g" \
+ -e "s#@WITH_ICU@#${WITH_ICU}#g" \
+ -e "s#@WITH_ISO8859X@#${WITH_ISO8859X}#g" \
+ -e "s#@WITH_DEBUG@#${WITH_DEBUG}#g" \
+ -e "s#@WITH_MEM_DEBUG@#${WITH_MEM_DEBUG}#g" \
+ -e "s#@WITH_RUN_DEBUG@#${WITH_RUN_DEBUG}#g" \
+ -e "s#@WITH_REGEXPS@#${WITH_REGEXPS}#g" \
+ -e "s#@WITH_SCHEMAS@#${WITH_SCHEMAS}#g" \
+ -e "s#@WITH_SCHEMATRON@#${WITH_SCHEMATRON}#g" \
+ -e "s#@WITH_MODULES@#${WITH_MODULES}#g" \
+ -e "s#@WITH_ZLIB@#${WITH_ZLIB}#g" \
+ -e "s#@WITH_LZMA@#${WITH_LZMA}#g"
+}
diff --git a/os400/libxmlrpg/DOCBparser.rpgle b/os400/libxmlrpg/DOCBparser.rpgle
new file mode 100644
index 0000000..bf5aaa2
--- /dev/null
+++ b/os400/libxmlrpg/DOCBparser.rpgle
@@ -0,0 +1,116 @@
+ * Summary: old DocBook SGML parser
+ * Description: interface for a DocBook SGML non-verifying parser
+ * This code is DEPRECATED, and should not be used anymore.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(DOCB_PARSER_H__)
+ /define DOCB_PARSER_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_DOCB_ENABLED)
+
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/parserInternals"
+
+ * Most of the back-end structures from XML and SGML are shared.
+
+ d docbParserCtxtPtr...
+ d s based(######typedef######)
+ d like(xmlParserCtxtPtr)
+
+ d docbParserCtxt ds based(docbParserCtxtPtr)
+ d likeds(xmlParserCtxt)
+
+ d docbSAXHandlerPtr...
+ d s based(######typedef######)
+ d like(xmlSAXHandlerPtr)
+
+ d docbSAXHandler ds based(docbSAXHandlerPtr)
+ d likeds(xmlSAXHandler)
+
+ d docbParserInputPtr...
+ d s based(######typedef######)
+ d like(xmlParserInputPtr)
+
+ d docbParserInput...
+ d ds based(docbParserInputPtr)
+ d likeds(xmlParserInput)
+
+ d docbDocPtr s based(######typedef######)
+ d like(xmlDocPtr)
+
+ * There is only few public functions.
+
+ d docbEncodeEntities...
+ d pr 10i 0 extproc('docbEncodeEntities')
+ d out * value options(*string) unsigned char *
+ d outlen * value int *
+ d in * value options(*string) const unsigned char
+ d *
+ d inlen * value int *
+ d quoteChar 10i 0 value
+
+ d docbSAXParseDoc...
+ d pr extproc('docbSAXParseDoc')
+ d like(docbDocPtr)
+ d cur * value options(*string) xmlChar *
+ d encoding * value options(*string) const char *
+ d sax value like(docbSAXHandlerPtr)
+ d userData * value void *
+
+ d docbParseDoc pr extproc('docbParseDoc')
+ d like(docbDocPtr)
+ d cur * value options(*string) xmlChar *
+ d encoding * value options(*string) const char *
+
+ d docbSAXParseFile...
+ d pr extproc('docbSAXParseFile')
+ d like(docbDocPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d sax value like(docbSAXHandlerPtr)
+ d userData * value void *
+
+ d docbParseFile pr extproc('docbParseFile')
+ d like(docbDocPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+
+ * Interfaces for the Push mode.
+
+ d docbFreeParserCtxt...
+ d pr extproc('docbFreeParserCtxt')
+ d ctxt value like(docbParserCtxtPtr)
+
+ d docbCreatePushParserCtxt...
+ d pr extproc('docbCreatePushParserCtxt')
+ d like(docbParserCtxtPtr)
+ d sax value like(docbSAXHandlerPtr)
+ d user_data * value void *
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d filename * value options(*string) const char *
+ d enc value like(xmlCharEncoding)
+
+ d docbParseChunk pr 10i 0 extproc('docbParseChunk')
+ d ctxt value like(docbParserCtxtPtr)
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d terminate 10i 0 value
+
+ d docbCreateFileParserCtxt...
+ d pr extproc('docbCreateFileParserCtxt')
+ d like(docbParserCtxtPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+
+ d docbParseDocument...
+ d pr 10i 0 extproc('docbParseDocument')
+ d ctxt value like(docbParserCtxtPtr)
+
+ /endif LIBXML_DOCB_ENABLED
+ /endif DOCB_PARSER_H__
diff --git a/os400/libxmlrpg/HTMLparser.rpgle b/os400/libxmlrpg/HTMLparser.rpgle
new file mode 100644
index 0000000..7b4a626
--- /dev/null
+++ b/os400/libxmlrpg/HTMLparser.rpgle
@@ -0,0 +1,403 @@
+ * Summary: interface for an HTML 4.0 non-verifying parser
+ * Description: this module implements an HTML 4.0 non-verifying parser
+ * with API compatible with the XML parser ones. It should
+ * be able to parse "real world" HTML, even if severely
+ * broken from a specification point of view.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(HTML_PARSER_H__)
+ /define HTML_PARSER_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/parser"
+
+ /if defined(LIBXML_HTML_ENABLED)
+
+ * Most of the back-end structures from XML and HTML are shared.
+
+ d htmlParserCtxtPtr...
+ d s based(######typedef######)
+ d like(xmlParserCtxtPtr)
+
+ d htmlParserCtxt ds based(htmlParserCtxtPtr)
+ d likeds(xmlParserCtxt)
+
+ d htmlParserNodeInfoPtr...
+ d s based(######typedef######)
+ d like(xmlParserNodeInfoPtr)
+
+ d htmlParserNodeInfo...
+ d ds based(htmlParserNodeInfoPtr)
+ d likeds(xmlParserNodeInfo)
+
+ d htmlSAXHandlerPtr...
+ d s based(######typedef######)
+ d like(xmlSAXHandlerPtr)
+
+ d htmlSAXHandler ds based(htmlSAXHandlerPtr)
+ d likeds(xmlSAXHandler)
+
+ d htmlParserInputPtr...
+ d s based(######typedef######)
+ d like(xmlParserInputPtr)
+
+ d htmlParserInput...
+ d ds based(htmlParserInputPtr)
+ d likeds(xmlParserInput)
+
+ d htmlDocPtr s based(######typedef######)
+ d like(xmlDocPtr)
+
+ d htmlNodePtr s based(######typedef######)
+ d like(xmlNodePtr)
+
+ * Internal description of an HTML element, representing HTML 4.01
+ * and XHTML 1.0 (which share the same structure).
+
+ d htmlElemDescPtr...
+ d s * based(######typedef######)
+
+ d htmlElemDesc ds based(htmlElemDescPtr)
+ d align qualified
+ d name * const char *
+ d startTag 3u 0 Start tag implied ?
+ d endTag 3u 0 End tag implied ?
+ d saveEndTag 3u 0 Save end tag ?
+ d empty 3u 0 Empty element ?
+ d depr 3u 0 Deprecated element ?
+ d dtd 3u 0 Loose DTD/Frameset
+ d isinline 3u 0 Block 0/inline elem?
+ d desc * const char *
+ *
+ * New fields encapsulating HTML structure
+ *
+ * Bugs:
+ * This is a very limited representation. It fails to tell us when
+ * an element *requires* subelements (we only have whether they're
+ * allowed or not), and it doesn't tell us where CDATA and PCDATA
+ * are allowed. Some element relationships are not fully represented:
+ * these are flagged with the word MODIFIER
+ *
+ d subelts * const char * *
+ d defaultsubelt * const char *
+ d attrs_opt * const char * *
+ d attrs_depr * const char * *
+ d attrs_req * const char * *
+
+ * Internal description of an HTML entity.
+
+ d htmlEntityDescPtr...
+ d s * based(######typedef######)
+
+ d htmlEntityDesc...
+ d ds based(htmlEntityDescPtr)
+ d align qualified
+ d value 10u 0 Unicode char value
+ d name * const char *
+ d desc * const char *
+
+ * There is only few public functions.
+
+ d htmlTagLookup pr extproc('htmlTagLookup')
+ d like(htmlElemDescPtr) const
+ d tag * value options(*string) const xmlChar *
+
+ d htmlEntityLookup...
+ d pr extproc('htmlEntityLookup')
+ d like(htmlEntityDescPtr) const
+ d name * value options(*string) const xmlChar *
+
+ d htmlEntityValueLookup...
+ d pr extproc('htmlEntityValueLookup')
+ d like(htmlEntityDescPtr) const
+ d value 10u 0 value
+
+ d htmlIsAutoClosed...
+ d pr 10i 0 extproc('htmlIsAutoClosed')
+ d doc value like(htmlDocPtr)
+ d elem value like(htmlNodePtr)
+
+ d htmlAutoCloseTag...
+ d pr 10i 0 extproc('htmlAutoCloseTag')
+ d doc value like(htmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d elem value like(htmlNodePtr)
+
+ d htmlParseEntityRef...
+ d pr extproc('htmlParseEntityRef')
+ d like(htmlEntityDescPtr) const
+ d ctxt value like(htmlParserCtxtPtr)
+ d str * const xmlChar *(*)
+
+ d htmlParseCharRef...
+ d pr 10i 0 extproc('htmlParseCharRef')
+ d ctxt value like(htmlParserCtxtPtr)
+
+ d htmlParseElement...
+ d pr extproc('htmlParseElement')
+ d ctxt value like(htmlParserCtxtPtr)
+
+ d htmlNewParserCtxt...
+ d pr extproc('htmlNewParserCtxt')
+ d like(htmlParserCtxtPtr)
+
+ d htmlCreateMemoryParserCtxt...
+ d pr extproc('htmlCreateMemoryParserCtxt')
+ d like(htmlParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d htmlParseDocument...
+ d pr 10i 0 extproc('htmlParseDocument')
+ d ctxt value like(htmlParserCtxtPtr)
+
+ d htmlSAXParseDoc...
+ d pr extproc('htmlSAXParseDoc')
+ d like(htmlDocPtr)
+ d cur * value options(*string) xmlChar *
+ d encoding * value options(*string) const char *
+ d sax value like(htmlSAXHandlerPtr)
+ d userData * value void *
+
+ d htmlParseDoc pr extproc('htmlParseDoc')
+ d like(htmlDocPtr)
+ d cur * value options(*string) xmlChar *
+ d encoding * value options(*string) const char *
+
+ d htmlSAXParseFile...
+ d pr extproc('htmlSAXParseFile')
+ d like(htmlDocPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d sax value like(htmlSAXHandlerPtr)
+ d userData * value void *
+
+ d htmlParseFile pr extproc('htmlParseFile')
+ d like(htmlDocPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+
+ d UTF8ToHtml pr 10i 0 extproc('UTF8ToHtml')
+ d out 65535 options(*varsize) unsigned char []
+ d outlen 10i 0
+ d in * value options(*string) const unsigned char*
+ d inlen 10i 0
+
+ d htmlEncodeEntities...
+ d pr 10i 0 extproc('htmlEncodeEntities')
+ d out 65535 options(*varsize) unsigned char []
+ d outlen 10i 0
+ d in * value options(*string) const unsigned char*
+ d inlen 10i 0
+ d quoteChar 10i 0 value
+
+ d htmlIsScriptAttribute...
+ d pr 10i 0 extproc('htmlIsScriptAttribute')
+ d name * value options(*string) const xmlChar *
+
+ d htmlHandleOmittedElem...
+ d pr 10i 0 extproc('htmlHandleOmittedElem')
+ d val 10i 0 value
+
+ /if defined(LIBXML_PUSH_ENABLED)
+
+ * Interfaces for the Push mode.
+
+ d htmlCreatePushParserCtxt...
+ d pr extproc('htmlCreatePushParserCtxt')
+ d like(htmlParserCtxtPtr)
+ d sax value like(htmlSAXHandlerPtr)
+ d user_data * value void *
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d filename * value options(*string) const char *
+ d enc value like(xmlCharEncoding)
+
+ d htmlParseChunk pr 10i 0 extproc('htmlParseChunk')
+ d ctxt value like(htmlParserCtxtPtr)
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d terminate 10i 0 value
+ /endif LIBXML_PUSH_ENABLED
+
+ d htmlFreeParserCtxt...
+ d pr extproc('htmlFreeParserCtxt')
+ d ctxt value like(htmlParserCtxtPtr)
+
+ * New set of simpler/more flexible APIs
+
+ * xmlParserOption:
+ *
+ * This is the set of XML parser options that can be passed down
+ * to the xmlReadDoc() and similar calls.
+
+ d htmlParserOption...
+ d s 10i 0 based(######typedef######) enum
+ d HTML_PARSE_RECOVER... Relaxed parsing
+ d c X'00000001'
+ d HTML_PARSE_NODEFDTD... No default doctype
+ d c X'00000004'
+ d HTML_PARSE_NOERROR... No error reports
+ d c X'00000020'
+ d HTML_PARSE_NOWARNING... No warning reports
+ d c X'00000040'
+ d HTML_PARSE_PEDANTIC... Pedantic err reports
+ d c X'00000080'
+ d HTML_PARSE_NOBLANKS... Remove blank nodes
+ d c X'00000100'
+ d HTML_PARSE_NONET... Forbid net access
+ d c X'00000800'
+ d HTML_PARSE_NOIMPLIED... No implied html/body
+ d c X'00002000'
+ d HTML_PARSE_COMPACT... compact small txtnod
+ d c X'00010000'
+ d HTML_PARSE_IGNORE_ENC... Ignore encoding hint
+ d c X'00200000'
+
+ d htmlCtxtReset pr extproc('htmlCtxtReset')
+ d ctxt value like(htmlParserCtxtPtr)
+
+ d htmlCtxtUseOptions...
+ d pr 10i 0 extproc('htmlCtxtUseOptions')
+ d ctxt value like(htmlParserCtxtPtr)
+ d options 10i 0 value
+
+ d htmlReadDoc pr extproc('htmlReadDoc')
+ d like(htmlDocPtr)
+ d cur * value options(*string) const xmlChar *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlReadFile pr extproc('htmlReadFile')
+ d like(htmlDocPtr)
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlReadMemory pr extproc('htmlReadMemory')
+ d like(htmlDocPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlReadFd pr extproc('htmlReadFd')
+ d like(htmlDocPtr)
+ d fd 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlReadIO pr extproc('htmlReadIO')
+ d like(htmlDocPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlCtxtReadDoc...
+ d pr extproc('htmlCtxtReadDoc')
+ d like(htmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d cur * value options(*string) const xmlChar *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlCtxtReadFile...
+ d pr extproc('htmlCtxtReadFile')
+ d like(htmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlCtxtReadMemory...
+ d pr extproc('htmlCtxtReadMemory')
+ d like(htmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlCtxtReadFd pr extproc('htmlCtxtReadFd')
+ d like(htmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d fd 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d htmlCtxtReadIO pr extproc('htmlCtxtReadIO')
+ d like(htmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ * Further knowledge of HTML structure
+
+ d htmlStatus s 10i 0 based(######typedef######) enum
+ d HTML_NA c X'0000' No check at all
+ d HTML_INVALID c X'0001'
+ d HTML_DEPRECATED...
+ d c X'0002'
+ d HTML_VALID c X'0004'
+ d HTML_REQUIRED c X'000C' HTML_VALID ored-in
+
+ * Using htmlElemDesc rather than name here, to emphasise the fact
+ * that otherwise there's a lookup overhead
+
+ d htmlAttrAllowed...
+ d pr extproc('htmlAttrAllowed')
+ d like(htmlStatus)
+ d #param1 value like(htmlElemDescPtr) const
+ d #param2 * value options(*string) const xmlChar *
+ d #param3 10i 0 value
+
+ d htmlElementAllowedHere...
+ d pr 10i 0 extproc('htmlElementAllowedHere')
+ d #param1 value like(htmlElemDescPtr) const
+ d #param2 * value options(*string) const xmlChar *
+
+ d htmlElementStatusHere...
+ d pr extproc('htmlElementStatusHere')
+ d like(htmlStatus)
+ d #param1 value like(htmlElemDescPtr) const
+ d #param2 value like(htmlElemDescPtr) const
+
+ d htmlNodeStatus pr extproc('htmlNodeStatus')
+ d like(htmlStatus)
+ d #param1 value like(htmlNodePtr)
+ d #param2 10i 0 value
+
+ * C macros implemented as procedures for ILE/RPG support.
+
+ d htmlDefaultSubelement...
+ d pr * extproc('__htmlDefaultSubelement') const char *
+ d elt * value const htmlElemDesc *
+
+ d htmlElementAllowedHereDesc...
+ d pr 10i 0 extproc(
+ d '__htmlElementAllowedHereDesc')
+ d parent * value const htmlElemDesc *
+ d elt * value const htmlElemDesc *
+
+ d htmlRequiredAttrs...
+ d pr * extproc('__htmlRequiredAttrs') const char * *
+ d elt * value const htmlElemDesc *
+
+ /endif LIBXML_HTML_ENABLED
+ /endif HTML_PARSER_H__
diff --git a/os400/libxmlrpg/HTMLtree.rpgle b/os400/libxmlrpg/HTMLtree.rpgle
new file mode 100644
index 0000000..82a11ca
--- /dev/null
+++ b/os400/libxmlrpg/HTMLtree.rpgle
@@ -0,0 +1,166 @@
+ * Summary: specific APIs to process HTML tree, especially serialization
+ * Description: this module implements a few function needed to process
+ * tree in an HTML specific way.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(HTML_TREE_H__)
+ /define HTML_TREE_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/HTMLparser"
+
+ /if defined(LIBXML_HTML_ENABLED)
+
+ * HTML_TEXT_NODE:
+ *
+ * Macro. A text node in a HTML document is really implemented
+ * the same way as a text node in an XML document.
+
+ d HTML_TEXT_NODE c 3
+
+ * HTML_ENTITY_REF_NODE:
+ *
+ * Macro. An entity reference in a HTML document is really implemented
+ * the same way as an entity reference in an XML document.
+
+ d HTML_ENTITY_REF_NODE...
+ d c 5
+
+ * HTML_COMMENT_NODE:
+ *
+ * Macro. A comment in a HTML document is really implemented
+ * the same way as a comment in an XML document.
+
+ d HTML_COMMENT_NODE...
+ d c 8
+
+ * HTML_PRESERVE_NODE:
+ *
+ * Macro. A preserved node in a HTML document is really implemented
+ * the same way as a CDATA section in an XML document.
+
+ d HTML_PRESERVE_NODE...
+ d c 4
+
+ * HTML_PI_NODE:
+ *
+ * Macro. A processing instruction in a HTML document is really implemented
+ * the same way as a processing instruction in an XML document.
+
+ d HTML_PI_NODE c 7
+
+ d htmlNewDoc pr extproc('htmlNewDoc')
+ d like(htmlDocPtr)
+ d URI * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+
+ d htmlNewDocNoDtD...
+ d pr extproc('htmlNewDocNoDtD')
+ d like(htmlDocPtr)
+ d URI * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+
+ d htmlGetMetaEncoding...
+ d pr * extproc('htmlGetMetaEncoding') const xmlChar *
+ d doc value like(htmlDocPtr)
+
+ d htmlSetMetaEncoding...
+ d pr 10i 0 extproc('htmlSetMetaEncoding')
+ d doc value like(htmlDocPtr)
+ d encoding * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d htmlDocDumpMemory...
+ d pr extproc('htmlDocDumpMemory')
+ d cur value like(xmlDocPtr)
+ d mem * value xmlChar * *
+ d size 10i 0
+
+ d htmlDocDumpMemoryFormat...
+ d pr extproc('htmlDocDumpMemoryFormat')
+ d cur value like(xmlDocPtr)
+ d mem * value xmlChar * *
+ d size 10i 0
+ d format 10i 0 value
+
+ d htmlDocDump pr 10i 0 extproc('htmlDocDump')
+ d f * value FILE *
+ d cur value like(xmlDocPtr)
+
+ d htmlSaveFile pr 10i 0 extproc('htmlSaveFile')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+
+ d htmlNodeDump pr 10i 0 extproc('htmlNodeDump')
+ d buf value like(xmlBufferPtr)
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+
+ d htmlNodeDumpFile...
+ d pr extproc('htmlNodeDumpFile')
+ d out * value FILE *
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+
+ d htmlNodeDumpFileFormat...
+ d pr 10i 0 extproc('htmlNodeDumpFileFormat')
+ d out * value FILE *
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+ d encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d htmlSaveFileEnc...
+ d pr 10i 0 extproc('htmlSaveFileEnc')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+
+ d htmlSaveFileFormat...
+ d pr 10i 0 extproc('htmlSaveFileFormat')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d htmlNodeDumpFormatOutput...
+ d pr extproc('htmlNodeDumpFormatOutput')
+ d buf value like(xmlOutputBufferPtr)
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+ d encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d htmlDocContentDumpOutput...
+ d pr extproc('htmlDocContentDumpOutput')
+ d buf value like(xmlOutputBufferPtr)
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+
+ d htmlDocContentDumpFormatOutput...
+ d pr extproc(
+ d 'htmlDocContentDumpFormatOutput')
+ d buf value like(xmlOutputBufferPtr)
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d htmlNodeDumpOutput...
+ d pr extproc('htmlNodeDumpOutput')
+ d buf value like(xmlOutputBufferPtr)
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+ d encoding * value options(*string) const char *
+
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d htmlIsBooleanAttr...
+ d pr 10i 0 extproc('htmlIsBooleanAttr')
+ d name * value options(*string) const xmlChar *
+
+ /endif LIBXML_HTML_ENABLED
+ /endif HTML_TREE_H__
diff --git a/os400/libxmlrpg/SAX.rpgle b/os400/libxmlrpg/SAX.rpgle
new file mode 100644
index 0000000..18f851d
--- /dev/null
+++ b/os400/libxmlrpg/SAX.rpgle
@@ -0,0 +1,207 @@
+ * Summary: Old SAX version 1 handler, deprecated
+ * Description: DEPRECATED set of SAX version 1 interfaces used to
+ * build the DOM tree.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_SAX_H__)
+ /define XML_SAX_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/xlink"
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+
+ d getPublicId pr * extproc('getPublicId') const xmlChar *
+ d ctx * value void *
+
+ d getSystemId pr * extproc('getSystemId') const xmlChar *
+ d ctx * value void *
+
+ d setDocumentLocator...
+ d pr extproc('setDocumentLocator')
+ d ctx * value void *
+ d loc value like(xmlSAXLocatorPtr)
+
+ d getLineNumber pr 10i 0 extproc('getLineNumber')
+ d ctx * value void *
+
+ d getColumnNumber...
+ d pr 10i 0 extproc('getColumnNumber')
+ d ctx * value void *
+
+ d isStandalone pr 10i 0 extproc('isStandalone')
+ d ctx * value void *
+
+ d hasInternalSubset...
+ d pr 10i 0 extproc('hasInternalSubset')
+ d ctx * value void *
+
+ d hasExternalSubset...
+ d pr 10i 0 extproc('hasExternalSubset')
+ d ctx * value void *
+
+ d internalSubset pr extproc('internalSubset')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ d externalSubset pr extproc('externalSubset')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ d getEntity pr extproc('getEntity')
+ d like(xmlEntityPtr)
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d getParameterEntity...
+ d pr extproc('getParameterEntity')
+ d like(xmlEntityPtr)
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d resolveEntity pr extproc('resolveEntity')
+ d like(xmlParserInputPtr)
+ d ctx * value void *
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+
+ d entityDecl pr extproc('entityDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+ d content * value options(*string) xmlChar *
+
+ d attributeDecl pr extproc('attributeDecl')
+ d ctx * value void *
+ d elem * value options(*string) const xmlChar *
+ d fullname * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d def 10i 0 value
+ d defaultValue * value options(*string) const xmlChar *
+ d tree value like(xmlEnumerationPtr)
+
+ d elementDecl pr extproc('elementDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d content value like(xmlElementContentPtr)
+
+ d notationDecl pr extproc('notationDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+
+ d unparsedEntityDecl...
+ d pr extproc('unparsedEntityDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+ d notationName * value options(*string) const xmlChar *
+
+ d startDocument pr extproc('startDocument')
+ d ctx * value void *
+
+ d endDocument pr extproc('endDocument')
+ d ctx * value void *
+
+ d attribute pr extproc('attribute')
+ d ctx * value void *
+ d fullname * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d startElement pr extproc('startElement')
+ d ctx * value void *
+ d fullname * value options(*string) const xmlChar *
+ d atts * const xmlChar *(*)
+
+ d endElement pr extproc('endElement')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d reference pr extproc('reference')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d characters pr extproc('characters')
+ d ctx * value void *
+ d ch * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d ignorableWhitespace...
+ d pr extproc('ignorableWhitespace')
+ d ctx * value void *
+ d ch * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d processingInstruction...
+ d pr extproc('processingInstruction')
+ d ctx * value void *
+ d target * value options(*string) const xmlChar *
+ d data * value options(*string) const xmlChar *
+
+ d globalNamespace...
+ d pr extproc('globalNamespace')
+ d ctx * value void *
+ d href * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+
+ d setNamespace pr extproc('setNamespace')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d getNamespace pr extproc('getNamespace')
+ d like(xmlNsPtr)
+ d ctx * value void *
+
+ d checkNamespace pr 10i 0 extproc('checkNamespace')
+ d ctx * value void *
+ d nameSpace * value options(*string) xmlChar *
+
+ d namespaceDecl pr extproc('namespaceDecl')
+ d ctx * value void *
+ d href * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+
+ d comment pr extproc('comment')
+ d ctx * value void *
+ d value * value options(*string) const xmlChar *
+
+ d cdataBlock pr extproc('cdataBlock')
+ d ctx * value void *
+ d value * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d initxmlDefaultSAXHandler...
+ d pr extproc('initxmlDefaultSAXHandler')
+ d hdlr like(xmlSAXHandlerV1)
+ d warning 10i 0 value
+
+ /if defined(LIBXML_HTML_ENABLED)
+ d inithtmlDefaultSAXHandler...
+ d pr extproc('inithtmlDefaultSAXHandler')
+ d hdlr like(xmlSAXHandlerV1)
+ /endif
+
+ /if defined(LIBXML_DOCB_ENABLED)
+ d initdocbDefaultSAXHandler...
+ d pr extproc('initdocbDefaultSAXHandler')
+ d hdlr like(xmlSAXHandlerV1)
+ /endif
+ /endif LIBXML_SAX1_ENABLED
+
+ /endif LIBXML_LEGACY_ENABLD
+
+ /endif XML_SAX_H__
diff --git a/os400/libxmlrpg/SAX2.rpgle b/os400/libxmlrpg/SAX2.rpgle
new file mode 100644
index 0000000..c9ab9d1
--- /dev/null
+++ b/os400/libxmlrpg/SAX2.rpgle
@@ -0,0 +1,248 @@
+ * Summary: SAX2 parser interface used to build the DOM tree
+ * Description: those are the default SAX2 interfaces used by
+ * the library when building DOM tree.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_SAX2_H__)
+ /define XML_SAX2_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/xlink"
+
+ d xmlSAX2GetPublicId...
+ d pr * extproc('xmlSAX2getPublicId') const xmlChar *
+ d ctx * value void *
+
+ d xmlSAX2GetSystemId...
+ d pr * extproc('xmlSAX2getSystemId') const xmlChar *
+ d ctx * value void *
+
+ d xmlSAX2SetDocumentLocator...
+ d pr extproc('xmlSAX2SetDocumentLocator')
+ d ctx * value void *
+ d loc value like(xmlSAXLocatorPtr)
+
+ d xmlSAX2GetLineNumber...
+ d pr 10i 0 extproc('xmlSAX2GetLineNumber')
+ d ctx * value void *
+
+ d xmlSAX2GetColumnNumber...
+ d pr 10i 0 extproc('xmlSAX2GetColumnNumber')
+ d ctx * value void *
+
+ d xmlSAX2IsStandalone...
+ d pr 10i 0 extproc('xmlSAX2IsStandalone')
+ d ctx * value void *
+
+ d xmlSAX2HasInternalSubset...
+ d pr 10i 0 extproc('xmlSAX2HasInternalSubset')
+ d ctx * value void *
+
+ d xmlSAX2HasExternalSubset...
+ d pr 10i 0 extproc('xmlSAX2HasExternalSubset')
+ d ctx * value void *
+
+ d xmlSAX2InternalSubset...
+ d pr extproc('xmlSAX2InternalSubset')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ d xmlSAX2ExternalSubset...
+ d pr extproc('xmlSAX2ExternalSubset')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ d xmlSAX2GetEntity...
+ d pr extproc('xmlSAX2GetEntity')
+ d like(xmlEntityPtr)
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d xmlSAX2GetParameterEntity...
+ d pr extproc('xmlSAX2GetParameterEntity')
+ d like(xmlEntityPtr)
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d xmlSAX2ResolveEntity...
+ d pr extproc('xmlSAX2ResolveEntity')
+ d like(xmlParserInputPtr)
+ d ctx * value void *
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+
+ d xmlSAX2EntityDecl...
+ d pr extproc('xmlSAX2EntityDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+ d content * value options(*string) xmlChar *
+
+ d xmlSAX2AttributeDecl...
+ d pr extproc('xmlSAX2AttributeDecl')
+ d ctx * value void *
+ d elem * value options(*string) const xmlChar *
+ d fullname * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d def 10i 0 value
+ d defaultValue * value options(*string) const xmlChar *
+ d tree value like(xmlEnumerationPtr)
+
+ d xmlSAX2ElementDecl...
+ d pr extproc('xmlSAX2ElementDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d content value like(xmlElementContentPtr)
+
+ d xmlSAX2NotationDecl...
+ d pr extproc('xmlSAX2NotationDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+
+ d xmlSAX2UnparsedEntityDecl...
+ d pr extproc('xmlSAX2UnparsedEntityDecl')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+ d publicId * value options(*string) const xmlChar *
+ d systemId * value options(*string) const xmlChar *
+ d notationName * value options(*string) xmlChar *
+
+ d xmlSAX2StartDocument...
+ d pr extproc('xmlSAX2StartDocument')
+ d ctx * value void *
+
+ d xmlSAX2EndDocument...
+ d pr extproc('xmlSAX2EndDocument')
+ d ctx * value void *
+
+ /undefine XML_TESTVAL
+ /if defined(LIBXML_SAX1_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_HTML_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_WRITER_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_DOCB_ENABLED)
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlSAX2StartElement...
+ d pr extproc('xmlSAX2StartElement')
+ d ctx * value void *
+ d fullname * value options(*string) const xmlChar *
+ d atts * const xmlChar *(*)
+
+ d xmlSAX2EndElement...
+ d pr extproc('xmlSAX2EndElement')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlSAX2StartElementNs...
+ d pr extproc('xmlSAX2StartElementNs')
+ d ctx * value void *
+ d localname * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+ d URI * value options(*string) const xmlChar *
+ d nb_namespaces 10i 0 value
+ d namespaces * value const xmlChar *(*)
+ d nb_attributes 10i 0 value
+ d nb_defaulted 10i 0 value
+ d attributes * const xmlChar *(*)
+
+ d xmlSAX2EndElementNs...
+ d pr extproc('xmlSAX2EndElementNs')
+ d ctx * value void *
+ d localname * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+ d URI * value options(*string) const xmlChar *
+
+ d xmlSAX2Reference...
+ d pr extproc('xmlSAX2Reference')
+ d ctx * value void *
+ d name * value options(*string) const xmlChar *
+
+ d xmlSAX2Characters...
+ d pr extproc('xmlSAX2Characters')
+ d ctx * value void *
+ d ch * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlSAX2IgnorableWhitespace...
+ d pr extproc('xmlSAX2IgnorableWhitespace')
+ d ctx * value void *
+ d ch * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlSAX2ProcessingInstruction...
+ d pr extproc(
+ d 'xmlSAX2ProcessingInstruction')
+ d ctx * value void *
+ d target * value options(*string) const xmlChar *
+ d data * value options(*string) const xmlChar *
+
+ d xmlSAX2Comment...
+ d pr extproc('xmlSAX2Comment')
+ d ctx * value void *
+ d value * value options(*string) const xmlChar *
+
+ d xmlSAX2CDataBlock...
+ d pr extproc('xmlSAX2CDataBlock')
+ d ctx * value void *
+ d value * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlSAXDefaultVersion...
+ d pr 10i 0 extproc('xmlSAXDefaultVersion')
+ d version 10i 0 value
+ /endif LIBXML_SAX1_ENABLED
+
+ d xmlSAXVersion pr 10i 0 extproc('xmlSAXVersion')
+ d hdlr like(xmlSAXHandler)
+ d version 10i 0 value
+
+ d xmlSAX2InitDefaultSAXHandler...
+ d pr extproc(
+ d 'xmlSAX2InitDefaultSAXHandler')
+ d hdlr like(xmlSAXHandler)
+ d warning 10i 0 value
+
+ /if defined(LIBXML_HTML_ENABLED)
+ d xmlSAX2InitHtmlDefaultSAXHandler...
+ d pr extproc(
+ d 'xmlSAX2InitHtmlDefaultSAXHandler')
+ d hdlr like(xmlSAXHandler)
+
+ d htmlDefaultSAXHandlerInit...
+ d pr extproc('htmlDefaultSAXHandlerInit')
+ /endif
+
+ /if defined(LIBXML_DOCB_ENABLED)
+ d xmlSAX2InitDocbDefaultSAXHandler...
+ d pr extproc(
+ d 'xmlSAX2InitDocbDefaultSAXHandler')
+ d hdlr like(xmlSAXHandler)
+
+ d docbDefaultSAXHandlerInit...
+ d pr extproc('docbDefaultSAXHandlerInit')
+ /endif
+
+ d xmlDefaultSAXHandlerInit...
+ d pr extproc('xmlDefaultSAXHandlerInit')
+
+ /endif XML_SAX2_H__
diff --git a/os400/libxmlrpg/c14n.rpgle b/os400/libxmlrpg/c14n.rpgle
new file mode 100644
index 0000000..b64efb2
--- /dev/null
+++ b/os400/libxmlrpg/c14n.rpgle
@@ -0,0 +1,119 @@
+ * Summary: Provide Canonical XML and Exclusive XML Canonicalization
+ * Description: the c14n modules provides a
+ *
+ * "Canonical XML" implementation
+ * http://www.w3.org/TR/xml-c14n
+ *
+ * and an
+ *
+ * "Exclusive XML Canonicalization" implementation
+ * http://www.w3.org/TR/xml-exc-c14n
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_C14N_H__)
+ /define XML_C14N_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_C14N_ENABLED)
+ /if defined(LIBXML_OUTPUT_ENABLED)
+
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/xpath"
+
+ * XML Canonicazation
+ * http://www.w3.org/TR/xml-c14n
+ *
+ * Exclusive XML Canonicazation
+ * http://www.w3.org/TR/xml-exc-c14n
+ *
+ * Canonical form of an XML document could be created if and only if
+ * a) default attributes (if any) are added to all nodes
+ * b) all character and parsed entity references are resolved
+ * In order to achive this in libxml2 the document MUST be loaded with
+ * following global setings:
+ *
+ * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS ã XML_COMPLETE_ATTRS;
+ * xmlSubstituteEntitiesDefault(1);
+ *
+ * or corresponding parser context setting:
+ * xmlParserCtxtPtr ctxt;
+ *
+ * ...
+ * ctxt->loadsubset = XML_DETECT_IDS ã XML_COMPLETE_ATTRS;
+ * ctxt->replaceEntities = 1;
+ * ...
+
+ * xmlC14NMode:
+ *
+ * Predefined values for C14N modes
+
+ d xmlBufferAllocationScheme...
+ d xmlC14NMode s 10i 0 based(######typedef######) enum
+ d XML_C14N_1_0 c 0 Original C14N 1.0
+ d XML_C14N_EXCLUSIVE_1_0... Exclusive C14N 1.0
+ d c 1
+ d XML_C14N_1_1 c 2 C14N 1.1 spec
+
+ d xmlC14NDocSaveTo...
+ d pr 10i 0 extproc('xmlC14NDocSaveTo')
+ d doc value like(xmlDocPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d mode 10i 0 value
+ d inclusive_ns_prefixes...
+ d * xmlChar *(*)
+ d with_comments 10i 0 value
+ d buf value like(xmlOutputBufferPtr)
+
+ d xmlC14NDocDumpMemory...
+ d pr 10i 0 extproc('xmlC14NDocDumpMemory')
+ d doc value like(xmlDocPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d mode 10i 0 value
+ d inclusive_ns_prefixes...
+ d * xmlChar *(*)
+ d with_comments 10i 0 value
+ d doc_txt_ptr * xmlChar *(*)
+
+ d xmlC14NDocSave pr 10i 0 extproc('xmlC14NDocSave')
+ d doc value like(xmlDocPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d mode 10i 0 value
+ d inclusive_ns_prefixes...
+ d * xmlChar *(*)
+ d with_comments 10i 0 value
+ d filename * value options(*string) const char *
+ d compression 10i 0 value
+
+ * This is the core C14N function
+
+ * xmlC14NIsVisibleCallback:
+ * @user_data: user data
+ * @node: the curent node
+ * @parent: the parent node
+ *
+ * Signature for a C14N callback on visible nodes
+ *
+ * Returns 1 if the node should be included
+
+ d xmlC14NIsVisibleCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ d xmlC14NExecute pr 10i 0 extproc('xmlC14NExecute')
+ d doc value like(xmlDocPtr)
+ d is_visible_callback...
+ d value like(xmlC14NIsVisibleCallback)
+ d user_data * value void *
+ d mode 10i 0 value
+ d inclusive_ns_prefixes...
+ d * xmlChar *(*)
+ d with_comments 10i 0 value
+ d buf value like(xmlOutputBufferPtr)
+
+ /endif LIBXML_OUTPUT_ENABLD
+ /endif LIBXML_C14N_ENABLED
+ /endif XML_C14N_H__
diff --git a/os400/libxmlrpg/catalog.rpgle b/os400/libxmlrpg/catalog.rpgle
new file mode 100644
index 0000000..52baf4e
--- /dev/null
+++ b/os400/libxmlrpg/catalog.rpgle
@@ -0,0 +1,235 @@
+ * Summary: interfaces to the Catalog handling system
+ * Description: the catalog module implements the support for
+ * XML Catalogs and SGML catalogs
+ *
+ * SGML Open Technical Resolution TR9401:1997.
+ * http://www.jclark.com/sp/catalog.htm
+ *
+ * XML Catalogs Working Draft 06 August 2001
+ * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_CATALOG_H__)
+ /define XML_CATALOG_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/xmlstring"
+ /include "libxmlrpg/tree"
+
+ /if defined(LIBXML_CATALOG_ENABLED)
+
+ * XML_CATALOGS_NAMESPACE:
+ *
+ * The namespace for the XML Catalogs elements.
+
+ d XML_CATALOGS_NAMESPACE...
+ d c 'urn:oasis:names:+
+ d tc:entity:xmlns:xml:catalog'
+
+ * XML_CATALOG_PI:
+ *
+ * The specific XML Catalog Processing Instuction name.
+
+ d XML_CATALOG_PI c 'oasis-xml-catalog'
+
+ * The API is voluntarily limited to general cataloging.
+
+ d xmlCatalogPrefer...
+ d s 10u 0 based(######typedef######) enum type
+ d XML_CATA_PREFER_NONE...
+ d c 0
+ d XML_CATA_PREFER_PUBLIC...
+ d c 1
+ d XML_CATA_PREFER_SYSTEM...
+ d c 2
+
+ d xmlCatalogAllow...
+ d s 10u 0 based(######typedef######) enum type
+ d XML_CATA_ALLOW_NONE...
+ d c 0
+ d XML_CATA_ALLOW_GLOBAL...
+ d c 1
+ d XML_CATA_ALLOW_DOCUMENT...
+ d c 2
+ d XML_CATA_ALLOW_ALL...
+ d c 3
+
+ d xmlCatalogPtr s * based(######typedef######)
+
+ * Operations on a given catalog.
+
+ d xmlNewCatalog pr extproc('xmlNewCatalog')
+ d like(xmlCatalogPtr)
+ d sgml 10i 0 value
+
+ d xmlLoadACatalog...
+ d pr extproc('xmlLoadACatalog')
+ d like(xmlCatalogPtr)
+ d filename * value options(*string) const char *
+
+ d xmlLoadSGMLSuperCatalog...
+ d pr extproc('xmlLoadSGMLSuperCatalog')
+ d like(xmlCatalogPtr)
+ d filename * value options(*string) const char *
+
+ d xmlConvertSGMLCatalog...
+ d pr 10i 0 extproc('xmlConvertSGMLCatalog')
+ d catal value like(xmlCatalogPtr)
+
+ d xmlACatalogAdd pr 10i 0 extproc('xmlACatalogAdd')
+ d catal value like(xmlCatalogPtr)
+ d type * value options(*string) const xmlChar *
+ d orig * value options(*string) const xmlChar *
+ d replace * value options(*string) const xmlChar *
+
+ d xmlACatalogRemove...
+ d pr 10i 0 extproc('xmlACatalogRemove')
+ d catal value like(xmlCatalogPtr)
+ d value * value options(*string) const xmlChar *
+
+ d xmlACatalogResolve...
+ d pr * extproc('xmlACatalogResolve') xmlChar *
+ d catal value like(xmlCatalogPtr)
+ d pubID * value options(*string) const xmlChar *
+ d sysID * value options(*string) const xmlChar *
+
+ d xmlACatalogResolveSystem...
+ d pr * extproc('xmlACatalogResolveSystem') xmlChar *
+ d catal value like(xmlCatalogPtr)
+ d sysID * value options(*string) const xmlChar *
+
+ d xmlACatalogResolvePublic...
+ d pr * extproc('xmlACatalogResolvePublic') xmlChar *
+ d catal value like(xmlCatalogPtr)
+ d pubID * value options(*string) const xmlChar *
+
+ d xmlACatalogResolveURI...
+ d pr * extproc('xmlACatalogResolveURI') xmlChar *
+ d catal value like(xmlCatalogPtr)
+ d URI * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlACatalogDump...
+ d pr extproc('xmlACatalogDump')
+ d catal value like(xmlCatalogPtr)
+ d out * value FILE *
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d xmlFreeCatalog pr extproc('xmlFreeCatalog')
+ d catal value like(xmlCatalogPtr)
+
+ d xmlCatalogIsEmpty...
+ d pr 10i 0 extproc('xmlCatalogIsEmpty')
+ d catal value like(xmlCatalogPtr)
+
+ * Global operations.
+
+ d xmlInitializeCatalog...
+ d pr extproc('xmlInitializeCatalog')
+
+ d xmlLoadCatalog pr 10i 0 extproc('xmlLoadCatalog')
+ d filename * value options(*string) const char *
+
+ d xmlLoadCatalogs...
+ d pr extproc('xmlLoadCatalogs')
+ d paths * value options(*string) const char *
+
+ d xmlCatalogCleanup...
+ d pr extproc('xmlCatalogCleanup')
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlCatalogDump pr extproc('xmlCatalogDump')
+ d out * value FILE *
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d xmlCatalogResolve...
+ d pr * extproc('xmlCatalogResolve') xmlChar *
+ d pubID * value options(*string) const xmlChar *
+ d sysID * value options(*string) const xmlChar *
+
+ d xmlCatalogResolveSystem...
+ d pr * extproc('xmlCatalogResolveSystem') xmlChar *
+ d sysID * value options(*string) const xmlChar *
+
+ d xmlCatalogResolvePublic...
+ d pr * extproc('xmlCatalogResolvePublic') xmlChar *
+ d pubID * value options(*string) const xmlChar *
+
+ d xmlCatalogResolveURI...
+ d pr * extproc('xmlCatalogResolveURI') xmlChar *
+ d URI * value options(*string) const xmlChar *
+
+ d xmlCatalogAdd pr 10i 0 extproc('xmlCatalogAdd')
+ d type * value options(*string) const xmlChar *
+ d orig * value options(*string) const xmlChar *
+ d replace * value options(*string) const xmlChar *
+
+ d xmlCatalogRemove...
+ d pr 10i 0 extproc('xmlCatalogRemove')
+ d value * value options(*string) const xmlChar *
+
+ d xmlParseCatalogFile...
+ d pr extproc('xmlParseCatalogFile')
+ d like(xmlDocPtr)
+ d filename * value options(*string) const char *
+
+ d xmlCatalogConvert...
+ d pr 10i 0 extproc('xmlCatalogConvert')
+
+ * Strictly minimal interfaces for per-document catalogs used
+ * by the parser.
+
+ d xmlCatalogFreeLocal...
+ d pr extproc('xmlCatalogFreeLocal')
+ d catalogs * value void *
+
+ d xmlCatalogAddLocal...
+ d pr * extproc('xmlCatalogAddLocal') void *
+ d catalogs * value void *
+ d URL * value options(*string) const xmlChar *
+
+ d xmlCatalogLocalResolve...
+ d pr * extproc('xmlCatalogLocalResolve') xmlChar *
+ d catalogs * value void *
+ d pubID * value options(*string) const xmlChar *
+ d sysID * value options(*string) const xmlChar *
+
+ d xmlCatalogLocalResolveURI...
+ d pr * extproc('xmlCatalogLocalResolveURI') xmlChar *
+ d catalogs * value void *
+ d URI * value options(*string) const xmlChar *
+
+ * Preference settings.
+
+ d xmlCatalogSetDebug...
+ d pr 10i 0 extproc('xmlCatalogSetDebug')
+ d level 10i 0 value
+
+ d xmlCatalogSetDefaultPrefer...
+ d pr extproc('xmlCatalogSetDefaultPrefer')
+ d like(xmlCatalogPrefer)
+ d prefer value like(xmlCatalogPrefer)
+
+ d xmlCatalogSetDefaults...
+ d pr extproc('xmlCatalogSetDefaults')
+ d allow value like(xmlCatalogAllow)
+
+ d xmlCatalogGetDefaults...
+ d pr extproc('xmlCatalogGetDefaults')
+ d like(xmlCatalogAllow)
+
+ * DEPRECATED interfaces
+
+ d xmlCatalogGetSystem...
+ d pr * extproc('xmlCatalogGetSystem') const xmlChar *
+ d sysID * value options(*string) const xmlChar *
+
+ d xmlCatalogGetPublic...
+ d pr * extproc('xmlCatalogGetPublic') const xmlChar *
+ d pubID * value options(*string) const xmlChar *
+
+ /endif LIBXML_CATALOG_ENBLD
+ /endif XML_CATALOG_H__
diff --git a/os400/libxmlrpg/chvalid.rpgle b/os400/libxmlrpg/chvalid.rpgle
new file mode 100644
index 0000000..33393f6
--- /dev/null
+++ b/os400/libxmlrpg/chvalid.rpgle
@@ -0,0 +1,97 @@
+ * Summary: Unicode character range checking
+ * Description: this module exports interfaces for the character
+ * range validation APIs
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_CHVALID_H__)
+ /define XML_CHVALID_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/xmlstring"
+
+ * Define our typedefs and structures
+
+ d xmlChSRangePtr s * based(######typedef######)
+
+ d xmlChSRange ds based(xmlChSRangePtr)
+ d align qualified
+ d low 5u 0
+ d high 5u 0
+
+ d xmlChLRangePtr s * based(######typedef######)
+
+ d xmlChLRange ds based(xmlChLRangePtr)
+ d align qualified
+ d low 10u 0
+ d high 10u 0
+
+ d xmlChRangeGroupPtr...
+ d s * based(######typedef######)
+
+ d xmlChRangeGroup...
+ d ds based(xmlChRangeGroupPtr)
+ d align qualified
+ d nbShortRange 10i 0
+ d nbLongRange 10i 0
+ d shortRange like(xmlChSRangePtr)
+ d longRange like(xmlChLRangePtr)
+
+ * Range checking routine
+
+ d xmlCharInRange pr 10i 0 extproc('xmlCharInRange')
+ d val 10u 0 value
+ d group like(xmlChRangeGroupPtr) const
+
+ d xmlIsBaseCharGroup...
+ d ds import('xmlIsBaseCharGroup')
+ d likeds(xmlChRangeGroup) const
+
+ d xmlIsCharGroup...
+ d ds import('xmlIsCharGroup')
+ d likeds(xmlChRangeGroup) const
+
+ d xmlIsCombiningGroup...
+ d ds import('xmlIsCombiningGroup')
+ d likeds(xmlChRangeGroup) const
+
+ d xmlIsDigitGroup...
+ d ds import('xmlIsDigitGroup')
+ d likeds(xmlChRangeGroup) const
+
+ d xmlIsExtenderGroup...
+ d ds import('xmlIsExtenderGroup')
+ d likeds(xmlChRangeGroup) const
+
+ d xmlIsIdeographicGroup...
+ d ds import('xmlIsIdeographicGroup')
+ d likeds(xmlChRangeGroup) const
+
+ d xmlIsBaseChar pr 10i 0 extproc('xmlIsBaseChar')
+ d ch 10u 0 value
+
+ d xmlIsBlank pr 10i 0 extproc('xmlIsBlank')
+ d ch 10u 0 value
+
+ d xmlIsChar pr 10i 0 extproc('xmlIsChar')
+ d ch 10u 0 value
+
+ d xmlIsCombining pr 10i 0 extproc('xmlIsCombining')
+ d ch 10u 0 value
+
+ d xmlIsDigit pr 10i 0 extproc('xmlIsDigit')
+ d ch 10u 0 value
+
+ d xmlIsExtender pr 10i 0 extproc('xmlIsExtender')
+ d ch 10u 0 value
+
+ d xmlIsIdeographic...
+ d pr 10i 0 extproc('xmlIsIdeographic')
+ d ch 10u 0 value
+
+ d xmlIsPubidChar pr 10i 0 extproc('xmlIsPubidChar')
+ d ch 10u 0 value
+
+ /endif XML_CHVALID_H__
diff --git a/os400/libxmlrpg/debugXML.rpgle b/os400/libxmlrpg/debugXML.rpgle
new file mode 100644
index 0000000..5005a2d
--- /dev/null
+++ b/os400/libxmlrpg/debugXML.rpgle
@@ -0,0 +1,241 @@
+ * Summary: Tree debugging APIs
+ * Description: Interfaces to a set of routines used for debugging the tree
+ * produced by the XML parser.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(DEBUG_XML__)
+ /define DEBUG_XML__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ /if defined(LIBXML_DEBUG_ENABLED)
+
+ /include "libxmlrpg/xpath"
+
+ * The standard Dump routines.
+
+ d xmlDebugDumpString...
+ d pr extproc('xmlDebugDumpString')
+ d output * value FILE *
+ d str * value options(*string) const xmlChar *
+
+ d xmlDebugDumpAttr...
+ d pr extproc('xmlDebugDumpAttr')
+ d output * value FILE *
+ d attr value like(xmlAttrPtr)
+ d depth 10i 0 value
+
+ d xmlDebugDumpAttrList...
+ d pr extproc('xmlDebugDumpAttrList')
+ d output * value FILE *
+ d attr value like(xmlAttrPtr)
+ d depth 10i 0 value
+
+ d xmlDebugDumpOneNode...
+ d pr extproc('xmlDebugDumpOneNode')
+ d output * value FILE *
+ d node value like(xmlNodePtr)
+ d depth 10i 0 value
+
+ d xmlDebugDumpNode...
+ d pr extproc('xmlDebugDumpNode')
+ d output * value FILE *
+ d node value like(xmlNodePtr)
+ d depth 10i 0 value
+
+ d xmlDebugDumpNodeList...
+ d pr extproc('xmlDebugDumpNodeList')
+ d output * value FILE *
+ d node value like(xmlNodePtr)
+ d depth 10i 0 value
+
+ d xmlDebugDumpDocumentHead...
+ d pr extproc('xmlDebugDumpDocumentHead')
+ d output * value FILE *
+ d doc value like(xmlDocPtr)
+
+ d xmlDebugDumpDocument...
+ d pr extproc('xmlDebugDumpDocument')
+ d output * value FILE *
+ d doc value like(xmlDocPtr)
+
+ d xmlDebugDumpDTD...
+ d pr extproc('xmlDebugDumpDTD')
+ d output * value FILE *
+ d dtd value like(xmlDtdPtr)
+
+ d xmlDebugDumpEntities...
+ d pr extproc('xmlDebugDumpEntities')
+ d output * value FILE *
+ d doc value like(xmlDocPtr)
+
+ ****************************************************************
+ * *
+ * Checking routines *
+ * *
+ ****************************************************************
+
+ d xmlDebugCheckDocument...
+ d pr 10i 0 extproc('xmlDebugCheckDocument')
+ d output * value FILE *
+ d doc value like(xmlDocPtr)
+
+ ****************************************************************
+ * *
+ * XML shell helpers *
+ * *
+ ****************************************************************
+
+ d xmlLsOneNode pr extproc('xmlLsOneNode')
+ d output * value FILE *
+ d node value like(xmlNodePtr)
+
+ d xmlLsCountNode pr 10i 0 extproc('xmlLsCountNode')
+ d node value like(xmlNodePtr)
+
+ d xmlBoolToText pr * extproc('xmlBoolToText') const char *
+ d boolval 10i 0 value
+
+ ****************************************************************
+ * *
+ * The XML shell related structures and functions *
+ * *
+ ****************************************************************
+
+ /if defined(LIBXML_XPATH_ENABLED)
+
+ * xmlShellReadlineFunc:
+ * @prompt: a string prompt
+ *
+ * This is a generic signature for the XML shell input function.
+ *
+ * Returns a string which will be freed by the Shell.
+
+ d xmlShellReadlineFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlShellCtxt:
+ *
+ * A debugging shell context.
+ * TODO: add the defined function tables.
+
+ d xmlShellCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlSchellCtxt ds based(xmlShellCtxtPtr)
+ d align qualified
+ d filename * char *
+ d doc like(xmlDocPtr)
+ d node like(xmlNodePtr)
+ d pctxt like(xmlXPathContextPtr)
+ d loaded 10i 0
+ d output * FILE *
+ d input like(xmlShellReadlineFunc)
+
+ * xmlShellCmd:
+ * @ctxt: a shell context
+ * @arg: a string argument
+ * @node: a first node
+ * @node2: a second node
+ *
+ * This is a generic signature for the XML shell functions.
+ *
+ * Returns an int, negative returns indicating errors.
+
+ d xmlShellCmd s * based(######typedef######)
+ d procptr
+
+ d xmlShellPrintXPathError...
+ d pr extproc('xmlShellPrintXPathError')
+ d errorType 10i 0 value
+ d arg * value options(*string) const char *
+
+ d xmlShellPrintXPathResult...
+ d pr extproc('xmlShellPrintXPathResult')
+ d list value like(xmlXPathObjectPtr)
+
+ d xmlShellList pr 10i 0 extproc('xmlShellList')
+ d ctxt value like(xmlShellCtxtPtr)
+ d arg * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ d xmlShellBase pr 10i 0 extproc('xmlShellBase')
+ d ctxt value like(xmlShellCtxtPtr)
+ d arg * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ d xmlShellDir pr 10i 0 extproc('xmlShellDir')
+ d ctxt value like(xmlShellCtxtPtr)
+ d arg * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ d xmlShellLoad pr 10i 0 extproc('xmlShellLoad')
+ d ctxt value like(xmlShellCtxtPtr)
+ d filename * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlShellPrintNode...
+ d pr extproc('xmlShellPrintNode')
+ d node value like(xmlNodePtr)
+
+ d xmlShellCat pr 10i 0 extproc('xmlShellCat')
+ d ctxt value like(xmlShellCtxtPtr)
+ d arg * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ d xmlShellWrite pr 10i 0 extproc('xmlShellWrite')
+ d ctxt value like(xmlShellCtxtPtr)
+ d filename * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ d xmlShellSave pr 10i 0 extproc('xmlShellSave')
+ d ctxt value like(xmlShellCtxtPtr)
+ d filename * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ /if defined(LIBXML_VALID_ENABLED)
+ d xmlShellValidate...
+ d pr 10i 0 extproc('xmlShellValidate')
+ d ctxt value like(xmlShellCtxtPtr)
+ d dtd * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+ /endif LIBXML_VALID_ENABLED
+
+ d xmlShellDu pr 10i 0 extproc('xmlShellDu')
+ d ctxt value like(xmlShellCtxtPtr)
+ d arg * value options(*string) char *
+ d tree value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ d xmlShellPwd pr 10i 0 extproc('xmlShellPwd')
+ d ctxt value like(xmlShellCtxtPtr)
+ d buffer * value options(*string) char *
+ d node value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ * The Shell interface.
+
+ d xmlShell pr extproc('xmlShell')
+ d doc value like(xmlDocPtr)
+ d filename * value options(*string) char *
+ d input value like(xmlShellReadlineFunc)
+ d output * value FILE *
+
+ /endif LIBXML_XPATH_ENABLED
+ /endif LIBXML_DEBUG_ENABLED
+ /endif DEBUG_XML__
diff --git a/os400/libxmlrpg/dict.rpgle b/os400/libxmlrpg/dict.rpgle
new file mode 100644
index 0000000..cd36f50
--- /dev/null
+++ b/os400/libxmlrpg/dict.rpgle
@@ -0,0 +1,78 @@
+ * Summary: string dictionary
+ * Description: dictionary of reusable strings, just used to avoid
+ * allocation and freeing operations.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_DICT_H__)
+ /define XML_DICT_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ * The dictionary.
+
+ d xmlDictPtr s * based(######typedef######)
+
+ * Initializer
+
+ d xmlInitializeDict...
+ d pr 10i 0 extproc('xmlInitializeDict')
+
+ * Constructor and destructor.
+
+ d xmlDictCreate pr extproc('xmlDictCreate')
+ d like(xmlDictPtr)
+
+ d xmlDictSetLimit...
+ d pr 10u 0 extproc('xmlDictSetLimit') size_t
+ d dict value like(xmlDictPtr)
+ d limit 10u 0 value size_t
+
+ d xmlDictGetUsage...
+ d pr 10u 0 extproc('xmlDictGetUsage') size_t
+ d dict value like(xmlDictPtr)
+
+ d xmlDictCreateSub...
+ d pr extproc('xmlDictCreateSub')
+ d like(xmlDictPtr)
+ d sub value like(xmlDictPtr)
+
+ d xmlDictReference...
+ d pr 10i 0 extproc('xmlDictGetReference')
+ d dict value like(xmlDictPtr)
+
+ d xmlDictFree pr extproc('xmlDictFree')
+ d dict value like(xmlDictPtr)
+
+ * Lookup of entry in the dictionary.
+
+ d xmlDictLookup pr * extproc('xmlDictLookup') const xmlChar *
+ d dict value like(xmlDictPtr)
+ d name * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlDictExists pr * extproc('xmlDictExists') const xmlChar *
+ d dict value like(xmlDictPtr)
+ d name * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlDictQLookup pr * extproc('xmlDictQLookup') const xmlChar *
+ d dict value like(xmlDictPtr)
+ d name * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+
+ d xmlDictOwns pr 10i 0 extproc('xmlDictOwns')
+ d dict value like(xmlDictPtr)
+ d str * value options(*string) const xmlChar *
+
+ d xmlDictSize pr 10i 0 extproc('xmlDictSize')
+ d dict value like(xmlDictPtr)
+
+ * Cleanup function
+
+ d xmlDictCleanup pr extproc('xmlDictCleanup')
+
+ /endif ! XML_DICT_H__
diff --git a/os400/libxmlrpg/encoding.rpgle b/os400/libxmlrpg/encoding.rpgle
new file mode 100644
index 0000000..80970fb
--- /dev/null
+++ b/os400/libxmlrpg/encoding.rpgle
@@ -0,0 +1,274 @@
+ * Summary: interface for the encoding conversion functions
+ * Description: interface for the encoding conversion functions needed for
+ * XML basic encoding and iconv() support.
+ *
+ * Related specs are
+ * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies
+ * [ISO-10646] UTF-8 and UTF-16 in Annexes
+ * [ISO-8859-1] ISO Latin-1 characters codes.
+ * [UNICODE] The Unicode Consortium, "The Unicode Standard --
+ * Worldwide Character Encoding -- Version 1.0", Addison-
+ * Wesley, Volume 1, 1991, Volume 2, 1992. UTF-8 is
+ * described in Unicode Technical Report #4.
+ * [US-ASCII] Coded Character Set--7-bit American Standard Code for
+ * Information Interchange, ANSI X3.4-1986.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_CHAR_ENCODING_H__)
+ /define XML_CHAR_ENCODING_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ * xmlCharEncoding:
+ *
+ * Predefined values for some standard encodings.
+ * Libxml does not do beforehand translation on UTF8 and ISOLatinX.
+ * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default.
+ *
+ * Anything else would have to be translated to UTF8 before being
+ * given to the parser itself. The BOM for UTF16 and the encoding
+ * declaration are looked at and a converter is looked for at that
+ * point. If not found the parser stops here as asked by the XML REC. A
+ * converter can be registered by the user
+ * xmlRegisterCharEncodingHandler but the current form doesn't allow
+ * stateful transcoding (a serious problem agreed !). If iconv has been
+ * found it will be used automatically and allow stateful transcoding,
+ * the simplest is then to be sure to enable iconv and to provide iconv
+ * libs for the encoding support needed.
+ *
+ * Note that the generic "UTF-16" is not a predefined value. Instead, only
+ * the specific UTF-16LE and UTF-16BE are present.
+
+ d xmlCharEncoding...
+ d s 10i 0 based(######typedef######) enum
+ d XML_CHAR_ENCODING_ERROR... No encoding detected
+ d c -1
+ d XML_CHAR_ENCODING_NONE... No encoding detected
+ d c 0
+ d XML_CHAR_ENCODING_UTF8... UTF-8
+ d c 1
+ d XML_CHAR_ENCODING_UTF16LE... UTF-16 little endian
+ d c 2
+ d XML_CHAR_ENCODING_UTF16BE... UTF-16 big endian
+ d c 3
+ d XML_CHAR_ENCODING_UCS4LE... UCS-4 little endian
+ d c 4
+ d XML_CHAR_ENCODING_UCS4BE... UCS-4 big endian
+ d c 5
+ d XML_CHAR_ENCODING_EBCDIC... EBCDIC uh!
+ d c 6
+ d XML_CHAR_ENCODING_UCS4_2143... UCS-4 unusual order
+ d c 7
+ d XML_CHAR_ENCODING_UCS4_3412... UCS-4 unusual order
+ d c 8
+ d XML_CHAR_ENCODING_UCS2... UCS-2
+ d c 9
+ d XML_CHAR_ENCODING_8859_1... ISO-8859-1 ISOLatin1
+ d c 10
+ d XML_CHAR_ENCODING_8859_2... ISO-8859-2 ISOLatin2
+ d c 11
+ d XML_CHAR_ENCODING_8859_3... ISO-8859-3
+ d c 12
+ d XML_CHAR_ENCODING_8859_4... ISO-8859-4
+ d c 13
+ d XML_CHAR_ENCODING_8859_5... ISO-8859-5
+ d c 14
+ d XML_CHAR_ENCODING_8859_6... ISO-8859-6
+ d c 15
+ d XML_CHAR_ENCODING_8859_7... ISO-8859-7
+ d c 16
+ d XML_CHAR_ENCODING_8859_8... ISO-8859-8
+ d c 17
+ d XML_CHAR_ENCODING_8859_9... ISO-8859-9
+ d c 18
+ d XML_CHAR_ENCODING_2022_JP... ISO-2022-JP
+ d c 19
+ d XML_CHAR_ENCODING_SHIFT_JIS... Shift_JIS
+ d c 20
+ d XML_CHAR_ENCODING_EUC_JP... EUC-JP
+ d c 21
+ d XML_CHAR_ENCODING_ASCII... Pure ASCII
+ d c 22
+
+ * xmlCharEncodingInputFunc:
+ * @out: a pointer to an array of bytes to store the UTF-8 result
+ * @outlen: the length of @out
+ * @in: a pointer to an array of chars in the original encoding
+ * @inlen: the length of @in
+ *
+ * Take a block of chars in the original encoding and try to convert
+ * it to an UTF-8 block of chars out.
+ *
+ * Returns the number of bytes written, -1 if lack of space, or -2
+ * if the transcoding failed.
+ * The value of @inlen after return is the number of octets consumed
+ * if the return value is positive, else unpredictiable.
+ * The value of @outlen after return is the number of octets consumed.
+
+ d xmlCharEncodingInputFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlCharEncodingOutputFunc:
+ * @out: a pointer to an array of bytes to store the result
+ * @outlen: the length of @out
+ * @in: a pointer to an array of UTF-8 chars
+ * @inlen: the length of @in
+ *
+ * Take a block of UTF-8 chars in and try to convert it to another
+ * encoding.
+ * Note: a first call designed to produce heading info is called with
+ * in = NULL. If stateful this should also initialize the encoder state.
+ *
+ * Returns the number of bytes written, -1 if lack of space, or -2
+ * if the transcoding failed.
+ * The value of @inlen after return is the number of octets consumed
+ * if the return value is positive, else unpredictiable.
+ * The value of @outlen after return is the number of octets produced.
+
+ d xmlCharEncodingOutputFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * Block defining the handlers for non UTF-8 encodings.
+ * If iconv is supported, there are two extra fields.
+
+ /if defined(LIBXML_ICU_ENABLED)
+ d uconv_t ds based(######typedef######)
+ d align qualified
+ d uconv * UConverter *
+ d utf8 * UConverter *
+ /endif
+
+ d xmlCharEncodingHandlerPtr...
+ d s * based(######typedef######)
+
+ d xmlCharEncodingHandler...
+ d ds based(xmlCharEncodingHandlerPtr)
+ d align qualified
+ d name * char *
+ d input like(xmlCharEncodingInputFunc)
+ d output like(xmlCharEncodingOutputFunc)
+ *
+ /if defined(LIBXML_ICONV_ENABLED)
+ d iconv_in * iconv_t
+ d iconv_out * iconv_t
+ /endif LIBXML_ICONV_ENABLED
+ *
+ /if defined(LIBXML_ICU_ENABLED)
+ d uconv_in * uconv_t *
+ d uconv_out * uconv_t *
+ /endif LIBXML_ICU_ENABLED
+
+ /include "libxmlrpg/tree"
+
+ * Interfaces for encoding handlers.
+
+ d xmlInitCharEncodingHandlers...
+ d pr extproc(
+ d 'xmlInitCharEncodingHandlers')
+
+ d xmlCleanupCharEncodingHandlers...
+ d pr extproc(
+ d 'xmlCleanupCharEncodingHandlers')
+
+ d xmlRegisterCharEncodingHandler...
+ d pr extproc(
+ d 'xmlRegisterCharEncodingHandler')
+ d handler value like(xmlCharEncodingHandlerPtr)
+
+ d xmlGetCharEncodingHandler...
+ d pr extproc('xmlGetCharEncodingHandler')
+ d like(xmlCharEncodingHandlerPtr)
+ d enc value like(xmlCharEncoding)
+
+ d xmlFindCharEncodingHandler...
+ d pr extproc('xmlFindCharEncodingHandler')
+ d like(xmlCharEncodingHandlerPtr)
+ d name * value options(*string) const char *
+
+ d xmlNewCharEncodingHandler...
+ d pr extproc('xmlNewCharEncodingHandler')
+ d like(xmlCharEncodingHandlerPtr)
+ d name * value options(*string) const char *
+ d input value like(xmlCharEncodingInputFunc)
+ d output value like(xmlCharEncodingOutputFunc)
+
+ * Interfaces for encoding names and aliases.
+
+ d xmlAddEncodingAlias...
+ d pr 10i 0 extproc('xmlAddEncodingAlias')
+ d name * value options(*string) const char *
+ d alias * value options(*string) const char *
+
+ d xmlDelEncodingAlias...
+ d pr 10i 0 extproc('xmlDelEncodingAlias')
+ d alias * value options(*string) const char *
+
+ d xmlGetEncodingAlias...
+ d pr * extproc('xmlGetEncodingAlias') const char *
+ d alias * value options(*string) const char *
+
+ d xmlCleanupEncodingAliases...
+ d pr extproc('xmlCleanupEncodingAliases')
+
+ d xmlParseCharEncoding...
+ d pr extproc('xmlParseCharEncoding')
+ d like(xmlCharEncoding)
+ d name * value options(*string) const char *
+
+ d xmlGetCharEncodingName...
+ d pr * extproc('xmlGetCharEncodingName') const char *
+ d enc value like(xmlCharEncoding)
+
+ * Interfaces directly used by the parsers.
+
+ d xmlDetectCharEncoding...
+ d pr extproc('xmlDetectCharEncoding')
+ d like(xmlCharEncoding)
+ d in * value options(*string) const unsigned char*
+ d len 10i 0 value
+
+ d xmlCharEncOutFunc...
+ d pr 10i 0 extproc('xmlCharEncOutFunc')
+ d handler like(xmlCharEncodingHandler)
+ d out value like(xmlBufferPtr)
+ d in value like(xmlBufferPtr)
+
+ d xmlCharEncInFunc...
+ d pr 10i 0 extproc('xmlCharEncInFunc')
+ d handler like(xmlCharEncodingHandler)
+ d out value like(xmlBufferPtr)
+ d in value like(xmlBufferPtr)
+
+ d xmlCharEncFirstLine...
+ d pr 10i 0 extproc('xmlCharEncFirstLine')
+ d handler like(xmlCharEncodingHandler)
+ d out value like(xmlBufferPtr)
+ d in value like(xmlBufferPtr)
+
+ d xmlCharEncCloseFunc...
+ d pr 10i 0 extproc('xmlCharEncCloseFunc')
+ d handler like(xmlCharEncodingHandler)
+
+ * Export a few useful functions
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d UTF8Toisolat1 pr 10i 0 extproc('UTF8Toisolat1')
+ d out 65535 options(*varsize) unsigned char (*)
+ d outlen 10i 0
+ d in * value options(*string) const unsigned char*
+ d inlen 10i 0
+
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d isolat1ToUTF8 pr 10i 0 extproc('isolat1ToUTF8')
+ d out 65535 options(*varsize) unsigned char (*)
+ d outlen 10i 0
+ d in * value options(*string) const unsigned char*
+ d inlen 10i 0
+
+ /endif XML_CHAR_ENCODING_H
diff --git a/os400/libxmlrpg/entities.rpgle b/os400/libxmlrpg/entities.rpgle
new file mode 100644
index 0000000..8d97915
--- /dev/null
+++ b/os400/libxmlrpg/entities.rpgle
@@ -0,0 +1,174 @@
+ * Summary: interface for the XML entities handling
+ * Description: this module provides some of the entity API needed
+ * for the parser and applications.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_ENTITIES_H__)
+ /define XML_ENTITIES_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ * The different valid entity types.
+
+ d xmlEntityType s 10i 0 based(######typedef######) enum
+ d XML_INTERNAL_GENERAL_ENTITY...
+ d c 1
+ d XML_EXTERNAL_GENERAL_PARSED_ENTITY...
+ d c 2
+ d XML_EXTERNAL_GENERAL_UNPARSED_ENTITY...
+ d c 3
+ d XML_INTERNAL_PARAMETER_ENTITY...
+ d c 4
+ d XML_EXTERNAL_PARAMETER_ENTITY...
+ d c 5
+ d XML_INTERNAL_PREDEFINED_ENTITY...
+ d c 6
+
+ * An unit of storage for an entity, contains the string, the value
+ * and the linkind data needed for the linking in the hash table.
+
+ d xmlEntity ds based(xmlEntityPtr)
+ d align qualified
+ d #private * void *
+ d type like(xmlElementType) XML_ENTITY_DECL
+ d name * const xmlChar *
+ d children like(xmlNodePtr) First child link
+ d last like(xmlNodePtr) Last child link
+ d parent like(xmlDtdPtr) -> DTD
+ d next like(xmlNodePtr) next sibling link
+ d prev like(xmlNodePtr) prev sibling link
+ d doc like(xmlDocPtr) containing document
+ d orig * xmlChar *
+ d content * xmlChar *
+ d length 10i 0 content length
+ d etype like(xmlEntityType) The entity type
+ d ExternalID * const xmlChar *
+ d SystemlID * const xmlChar *
+ d nexte like(xmlEntityPtr) unused
+ d URI * const xmlChar *
+ d owner 10i 0 Owns children ?
+ d checked 10i 0 Content checked ?
+
+ * All entities are stored in an hash table.
+ * There is 2 separate hash tables for global and parameter entities.
+
+ d xmlEntitiesTablePtr...
+ d s * based(######typedef######)
+
+ * External functions:
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+ d xmlInitializePredefinedEntities...
+ d pr extproc(
+ d 'xmlInitializePredefinedEntities')
+ /endif LIBXML_LEGACY_ENABLD
+
+ d xmlNewEntity pr extproc('xmlNewEntity')
+ d like(xmlEntityPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlAddDocEntity...
+ d pr extproc('xmlAddDocEntity')
+ d like(xmlEntityPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlAddDtdEntity...
+ d pr extproc('xmlAddDtdEntity')
+ d like(xmlEntityPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d type 10i 0 value
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlGetPredefinedEntity...
+ d pr extproc('xmlGetPredefinedEntity')
+ d like(xmlEntityPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetDocEntity...
+ d pr extproc('xmlGetDocEntity')
+ d like(xmlEntityPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetDtdEntity...
+ d pr extproc('xmlGetDtdEntity')
+ d like(xmlEntityPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetParameterEntity...
+ d pr extproc('xmlGetParameterEntity')
+ d like(xmlEntityPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+ d xmlEncodeEntities...
+ d pr * extproc('xmlEncodeEntities') xmlChar *
+ d doc value like(xmlDocPtr)
+ d input * value options(*string) const xmlChar *
+ /endif LIBXML_LEGACY_ENABLD
+
+ d xmlEncodeEntitiesReentrant...
+ d pr * extproc( xmlChar *
+ d 'xmlEncodeEntitiesReentrant')
+ d doc value like(xmlDocPtr)
+ d input * value options(*string) const xmlChar *
+XMLPU
+ d xmlEncodeSpecialChars...
+ d pr * extproc('xmlSpecialChars') xmlChar *
+ d doc value like(xmlDocPtr)
+ d input * value options(*string) const xmlChar *
+XMLPU
+ d xmlCreateEntitiesTable...
+ d pr extproc('xmlCreateEntitiesTable')
+ d like(xmlEntitiesTablePtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlCopyEntitiesTable...
+ d pr extproc('xmlCopyEntitiesTable')
+ d like(xmlEntitiesTablePtr)
+ d table value like(xmlEntitiesTablePtr)
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlFreeEntitiesTable...
+ d pr extproc('xmlFreeEntitiesTable')
+ d table value like(xmlEntitiesTablePtr)
+XMLPU
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlDumpEntitiesTable...
+ d pr extproc('xmlDumpEntitiesTable')
+ d buf value like(xmlBufferPtr)
+ d table value like(xmlEntitiesTablePtr)
+XMLPU
+ d xmlDumpEntityDecl...
+ d pr extproc('xmlDumpEntityDecl')
+ d buf value like(xmlBufferPtr)
+ d ent value like(xmlEntityPtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+ d xmlCleanupPredefinedEntities...
+ d pr extproc(
+XMLPUd 'xmlCleanupPredefinedEntities')
+ /endif LIBXML_LEGACY_ENABLD
+
+ /endif XML_ENTITIES_H__
diff --git a/os400/libxmlrpg/globals.rpgle b/os400/libxmlrpg/globals.rpgle
new file mode 100644
index 0000000..80dadca
--- /dev/null
+++ b/os400/libxmlrpg/globals.rpgle
@@ -0,0 +1,557 @@
+ * Summary: interface for all global variables of the library
+ * Description: all the global variables and thread handling for
+ * those variables is handled by this module.
+ *
+ * The bottom of this file is automatically generated by build_glob.py
+ * based on the description file global.data
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_GLOBALS_H)
+ /define XML_GLOBALS_H
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/xmlerror"
+ /include "libxmlrpg/SAX"
+ /include "libxmlrpg/SAX2"
+ /include "libxmlrpg/xmlmemory"
+
+ d xmlInitGlobals pr extproc('xmlInitGlobals')
+
+ d xmlCleanupGlobals...
+ d pr extproc('xmlCleanupGlobals')
+
+ * xmlParserInputBufferCreateFilenameFunc:
+ * @URI: the URI to read from
+ * @enc: the requested source encoding
+ *
+ * Signature for the function doing the lookup for a suitable input method
+ * corresponding to an URI.
+ *
+ * Returns the new xmlParserInputBufferPtr in case of success or NULL if no
+ * method was found.
+
+ d xmlParserInputBufferCreateFilenameFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlOutputBufferCreateFilenameFunc:
+ * @URI: the URI to write to
+ * @enc: the requested target encoding
+ *
+ * Signature for the function doing the lookup for a suitable output method
+ * corresponding to an URI.
+ *
+ * Returns the new xmlOutputBufferPtr in case of success or NULL if no
+ * method was found.
+
+ d xmlOutputBufferCreateFilenameFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ d xmlParserInputBufferCreateFilenameDefault...
+ d pr extproc('xmlParserInputBufferCreate+
+ d FilenameDefault')
+ d like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+ d func value like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+
+ d xmlOutputBufferCreateFilenameDefault...
+ d pr extproc('xmlOutputBufferCreate+
+ d FilenameDefault')
+ d like(xmlOutputBuffer...
+ d CreateFilenameFunc)
+ d func value like(xmlOutputBuffer...
+ d CreateFilenameFunc)
+
+ * xmlRegisterNodeFunc:
+ * @node: the current node
+ *
+ * Signature for the registration callback of a created node
+
+ d xmlRegisterNodeFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlDeregisterNodeFunc:
+ * @node: the current node
+ *
+ * Signature for the deregistration callback of a discarded node
+
+ d xmlDeregisterNodeFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ d xmlGlobalStatePtr...
+ d s * based(######typedef######)
+
+ d xmlGlobalState ds based(xmlGlobalStatePtr)
+ d align qualified
+ d xmlParserVersion...
+ d * const char *
+ d xmlDefaultSAXLocator...
+ d like(xmlSAXLocator)
+ d xmlDefaultSAXHandler...
+ d like(xmlSAXHandlerV1)
+ d docbDefaultSAXHandler...
+ d like(xmlSAXHandlerV1)
+ d htmlDefaultSAXHandler...
+ d like(xmlSAXHandlerV1)
+ d xmlFree like(xmlFreeFunc)
+ d xmlMalloc like(xmlMallocFunc)
+ d xmlMemStrdup like(xmlStrdupFunc)
+ d xmlRealloc like(xmlReallocFunc)
+ d xmlGenericError...
+ d like(xmlGenericErrorFunc)
+ d xmlStructuredError...
+ d like(xmlStructuredErrorFunc)
+ d xmlGenericErrorContext...
+ d * void *
+ d oldXMLWDcompatibility...
+ d 10i 0
+ d xmlBufferAllocScheme...
+ d like(xmlBufferAllocationScheme)
+ d xmlDefaultBufferSize...
+ d 10i 0
+ d xmlSubstituteEntitiesDefaultValue...
+ d 10i 0
+ d xmlDoValidityCheckingDefaultValue...
+ d 10i 0
+ d xmlGetWarningsDefaultValue...
+ d 10i 0
+ d xmlKeepBlanksDefaultValue...
+ d 10i 0
+ d xmlLineNumbersDefaultValue...
+ d 10i 0
+ d xmlLoadExtDtdDefaultValue...
+ d 10i 0
+ d xmlParserDebugEntities...
+ d 10i 0
+ d xmlPedanticParserDefaultValue...
+ d 10i 0
+ d xmlSaveNoEmptyTags...
+ d 10i 0
+ d xmlIndentTreeOutput...
+ d 10i 0
+ d xmlTreeIndentString...
+ d * const char *
+ d xmlRegisterNodeDefaultValue...
+ d like(xmlRegisterNodeFunc)
+ d xmlDeregisterNodeDefaultValue...
+ d like(xmlDeregisterNodeFunc)
+ d xmlMallocAtomic...
+ d like(xmlMallocFunc)
+ d xmlLastError like(xmlError)
+ d xmlParserInputBufferCreateFilenameValue...
+ d like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+ d xmlOutputBufferCreateFilenameValue...
+ d like(xmlOutputBuffer...
+ d CreateFilenameFunc)
+ d xmlStructuredErrorContext...
+ d * void *
+
+ /include "libxmlrpg/threads"
+
+ d xmlInitializeGlobalState...
+ d pr extproc('xmlInitializeGlobalState')
+ d qs value like(xmlGlobalStatePtr)
+
+ d xmlThrDefSetGenericErrorFunc...
+ d pr extproc(
+ d 'xmlThrDefSetGenericErrorFunc')
+ d ctx * value void *
+ d handler value like(xmlGenericErrorFunc)
+
+ d xmlThrDefSetStructuredErrorFunc...
+ d pr extproc(
+ d 'xmlThrDefSetStructuredErrorFunc')
+ d ctx * value void *
+ d handler value like(xmlStructuredErrorFunc)
+
+ d xmlRegisterNodeDefault...
+ d pr extproc('xmlRegisterNodeDefault')
+ d like(xmlRegisterNodeFunc)
+ d func value like(xmlRegisterNodeFunc)
+
+ d xmlThrDefRegisterNodeDefault...
+ d pr extproc(
+ d 'xmlThrDefRegisterNodeDefault')
+ d like(xmlRegisterNodeFunc)
+ d func value like(xmlRegisterNodeFunc)
+
+ d xmlDeregisterNodeDefault...
+ d pr extproc('xmlDeregisterNodeDefault')
+ d like(xmlDeregisterNodeFunc)
+ d func value like(xmlDeregisterNodeFunc)
+
+ d xmlThrDefDeregisterNodeDefault...
+ d pr extproc(
+ d 'xmlThrDefDeregisterNodeDefault')
+ d like(xmlDeregisterNodeFunc)
+ d func value like(xmlDeregisterNodeFunc)
+
+ d xmlThrDefOutputBufferCreateFilenameDefault...
+ d pr extproc('xmlThrDefOutputBuffer+
+ d CreateFilenameDefault')
+ d like(xmlOutputBuffer...
+ d CreateFilenameFunc)
+ d func value like(xmlOutputBuffer...
+ d CreateFilenameFunc)
+
+ d xmlThrDefParserInputBufferCreateFilenameDefault...
+ d pr extproc('xmlThrDefParserInputBuffer+
+ d CreateFilenameDefault')
+ d like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+ d func value like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+
+ /if defined(LIBXML_DOCB_ENABLED)
+ d get_docbDefaultSAXHandler...
+ d pr extproc(
+ d '__get_docbDefaultSAXHandler')
+ d like(xmlSAXHandlerV1)
+
+ d set_docbDefaultSAXHandler...
+ d pr extproc(
+ d '__set_docbDefaultSAXHandler')
+ d value value like(xmlSAXHandlerV1)
+ /endif
+
+ /if defined(LIBXML_HTML_ENABLED)
+ d get_htmlDefaultSAXHandler...
+ d pr extproc(
+ d '__get_htmlDefaultSAXHandler')
+ d like(xmlSAXHandlerV1)
+
+ d set_htmlDefaultSAXHandler...
+ d pr extproc(
+ d '__set_htmlDefaultSAXHandler')
+ d value value like(xmlSAXHandlerV1)
+ /endif
+
+ d get_xmlLastError...
+ d pr extproc('__get_xmlLastError')
+ d like(xmlError)
+
+ d set_xmlLastError...
+ d pr extproc('__set_xmlLastError')
+ d value value like(xmlError)
+
+ d get_oldXMLWDcompatibility...
+ d pr 10i 0 extproc(
+ d '__get_oldXMLWDcompatibility')
+
+ d set_oldXMLWDcompatibility...
+ d pr extproc(
+ d '__set_oldXMLWDcompatibility')
+ d value 10i 0 value
+
+ d get_xmlBufferAllocScheme...
+ d pr extproc('__get_xmlBufferAllocScheme')
+ d like(xmlBufferAllocationScheme)
+
+ d set_xmlBufferAllocScheme...
+ d pr extproc('__set_xmlBufferAllocScheme')
+ d value value like(xmlBufferAllocationScheme)
+
+ d xmlThrDefBufferAllocScheme...
+ d pr extproc('xmlThrDefBufferAllocScheme')
+ d like(xmlBufferAllocationScheme)
+ d v value like(xmlBufferAllocationScheme)
+
+ d get_xmlDefaultBufferSize...
+ d pr 10i 0 extproc('__get_xmlDefaultBufferSize')
+
+ d set_xmlDefaultBufferSize...
+ d pr extproc('__set_xmlDefaultBufferSize')
+ d value 10i 0 value
+
+ d xmlThrDefDefaultBufferSize...
+ d pr 10i 0 extproc('xmlThrDefDefaultBufferSize')
+ d v 10i 0 value
+
+ d get_xmlDefaultSAXHandler...
+ d pr extproc('__get_xmlDefaultSAXHandler')
+ d like(xmlSAXHandlerV1)
+
+ d set_xmlDefaultSAXHandler...
+ d pr extproc('__set_xmlDefaultSAXHandler')
+ d value value like(xmlSAXHandlerV1)
+
+ d get_xmlDefaultSAXLocator...
+ d pr extproc('__get_xmlDefaultSAXLocator')
+ d like(xmlSAXLocator)
+
+ d set_xmlDefaultSAXLocator...
+ d pr extproc('__set_xmlDefaultSAXLocator')
+ d value value like(xmlSAXLocator)
+
+ d get_xmlDoValidityCheckingDefaultValue...
+ d pr 10i 0 extproc('__get_xmlDoValidity+
+ d CheckingDefaultValue')
+
+ d set_xmlDoValidityCheckingDefaultValue...
+ d pr extproc('__set_xmlDoValidity+
+ d CheckingDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefDoValidityCheckingDefaultValue...
+ d pr 10i 0 extproc('xmlThrDefDoValidity+
+ d CheckingDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlGenericError...
+ d pr extproc('__get_xmlGenericError')
+ d like(xmlGenericErrorFunc)
+
+ d set_xmlGenericError...
+ d pr extproc('__set_xmlGenericError')
+ d func value like(xmlGenericErrorFunc)
+
+ d get_xmlStructuredError...
+ d pr extproc('__get_xmlStructuredError')
+ d like(xmlStructuredErrorFunc)
+
+ d set_xmlStructuredError...
+ d pr extproc('__set_xmlStructuredError')
+ d func value like(xmlStructuredErrorFunc)
+
+ d xmlStructuredError...
+ d pr extproc('__call_xmlStructuredError')
+ d userData * value options(*string) void *
+ d error value like(xmlErrorPtr)
+
+ d get_xmlGenericErrorContext...
+ d pr extproc(
+ d '__get_xmlGenericErrorContext')
+ d * void *
+
+ d set_xmlGenericErrorContext...
+ d pr extproc(
+ d '__set_xmlGenericErrorContext')
+ d value * value options(*string) void *
+
+ d get_xmlStructuredErrorContext...
+ d pr extproc(
+ d '__get_xmlStructuredErrorContext')
+ d * void *
+
+ d set_xmlStructuredErrorContext...
+ d pr extproc(
+ d '__set_xmlStructuredErrorContext')
+ d value * value options(*string) void *
+
+ d get_xmlGetWarningsDefaultValue...
+ d pr 10i 0 extproc(
+ d '__get_xmlGetWarningsDefaultValue')
+
+ d set_xmlGetWarningsDefaultValue...
+ d pr extproc(
+ d '__set_xmlGetWarningsDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefGetWarningsDefaultValue...
+ d pr 10i 0 extproc(
+ d 'xmlThrDefGetWarningsDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlIndentTreeOutput...
+ d pr 10i 0 extproc('__get_xmlIndentTreeOutput')
+
+ d set_xmlIndentTreeOutput...
+ d pr extproc('__set_xmlIndentTreeOutput')
+ d value 10i 0 value
+
+ d xmlThrDefIndentTreeOutput...
+ d pr 10i 0 extproc('xmlThrDefIndentTreeOutput')
+ d v 10i 0 value
+
+ d get_xmlTreeIndentString...
+ d pr * extproc('__get_xmlTreeIndentString') const char *
+
+ d set_xmlTreeIndentString...
+ d pr extproc('__set_xmlTreeIndentString')
+ d value * value options(*string) const char *
+
+ d xmlThrDefTreeIndentString...
+ d pr * extproc('xmlThrDefTreeIndentString') const char *
+ d v * value options(*string) const char *
+
+ d get_xmlKeepBlanksDefaultValue...
+ d pr 10i 0 extproc(
+ d '__get_xmlKeepBlanksDefaultValue')
+
+ d set_xmlKeepBlanksDefaultValue...
+ d pr extproc(
+ d '__set_xmlKeepBlanksDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefKeepBlanksDefaultValue...
+ d pr 10i 0 extproc(
+ d 'xmlThrDefKeepBlanksDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlLineNumbersDefaultValue...
+ d pr 10i 0 extproc(
+ d '__get_xmlLineNumbersDefaultValue')
+
+ d set_xmlLineNumbersDefaultValue...
+ d pr extproc(
+ d '__set_xmlLineNumbersDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefLineNumbersDefaultValue...
+ d pr 10i 0 extproc(
+ d 'xmlThrDefLineNumbersDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlLoadExtDtdDefaultValue...
+ d pr 10i 0 extproc(
+ d '__get_xmlLoadExtDtdDefaultValue')
+
+ d set_xmlLoadExtDtdDefaultValue...
+ d pr extproc(
+ d '__set_xmlLoadExtDtdDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefLoadExtDtdDefaultValue...
+ d pr 10i 0 extproc(
+ d 'xmlThrDefLoadExtDtdDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlParserDebugEntities...
+ d pr 10i 0 extproc(
+ d '__get_xmlParserDebugEntities')
+
+ d set_xmlParserDebugEntities...
+ d pr extproc(
+ d '__set_xmlParserDebugEntities')
+ d value 10i 0 value
+
+ d xmlThrDefParserDebugEntities...
+ d pr 10i 0 extproc(
+ d 'xmlThrDefParserDebugEntities')
+ d v 10i 0 value
+
+ d get_xmlParserVersion...
+ d pr * extproc('__get_xmlParserVersion') const char *
+
+ d set_xmlParserVersion...
+ d pr extproc('__set_xmlParserVersion')
+ d value * value options(*string) const char *
+
+ d get_xmlPedanticParserDefaultValue...
+ d pr 10i 0 extproc('__get_xmlPedantic+
+ d ParserDefaultValue')
+
+ d set_xmlPedanticParserDefaultValue...
+ d pr extproc('__set_xmlPedantic+
+ d ParserDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefPedanticParserDefaultValue...
+ d pr 10i 0 extproc('xmlThrDefPedantic+
+ d ParserDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlSaveNoEmptyTags...
+ d pr 10i 0 extproc('__get_xmlSaveNoEmptyTags')
+
+ d set_xmlSaveNoEmptyTags...
+ d pr extproc('__set_xmlSaveNoEmptyTags')
+ d value 10i 0 value
+
+ d xmlThrDefSaveNoEmptyTags...
+ d pr 10i 0 extproc('xmlThrDefSaveNoEmptyTags')
+ d v 10i 0 value
+
+ d get_xmlSubstituteEntitiesDefaultValue...
+ d pr 10i 0 extproc('__get_xmlSubstitute+
+ d EntitiesDefaultValue')
+
+ d set_xmlSubstituteEntitiesDefaultValue...
+ d pr extproc('__set_xmlSubstitute+
+ d EntitiesDefaultValue')
+ d value 10i 0 value
+
+ d xmlThrDefSubstituteEntitiesDefaultValue...
+ d pr 10i 0 extproc('xmlThrDefSubstitute+
+ d EntitiesDefaultValue')
+ d v 10i 0 value
+
+ d get_xmlRegisterNodeDefaultValue...
+ d pr extproc('__get_xmlRegisterNode+
+ d DefaultValue')
+ d like(xmlRegisterNodeFunc)
+
+ d set_xmlRegisterNodeDefaultValue...
+ d pr extproc('__set_xmlRegisterNode+
+ d DefaultValue')
+ d value value like(xmlRegisterNodeFunc)
+
+ d xmlRegisterNodeDefaultValue...
+ d pr extproc('__call_xmlRegisterNode+
+ d DefaultValue')
+ d node value like(xmlNodePtr)
+
+ d get_xmlDeregisterNodeDefaultValue...
+ d pr extproc('__get_xmlDeregisterNode+
+ d DefaultValue')
+ d like(xmlDeregisterNodeFunc)
+
+ d set_xmlDeregisterNodeDefaultValue...
+ d pr extproc('__set_xmlDeregisterNode+
+ d DefaultValue')
+ d value value like(xmlDeregisterNodeFunc)
+
+ d xmlDeregisterNodeDefaultValue...
+ d pr extproc('__call_xmlDeregisterNode+
+ d DefaultValue')
+ d node value like(xmlNodePtr)
+
+ d get_xmlParserInputBufferCreateFilenameValue...
+ d pr extproc('__get_xmlParserInputBuffer+
+ d CreateFilenameValue')
+ d like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+
+ d set_xmlParserInputBufferCreateFilenameValue...
+ d pr extproc('__set_xmlParserInputBuffer+
+ d CreateFilenameValue')
+ d value value like(xmlParserInputBuffer...
+ d CreateFilenameFunc)
+
+ d xmlParserInputBufferCreateFilenameValue...
+ d pr extproc('__call_xmlParserInputBuffer+
+ d CreateFilenameValue')
+ d like(xmlParserInputBufferPtr)
+ d URI * value options(*string) const char *
+ d enc value like(xmlCharEncoding)
+
+ d get_xmlOutputBufferCreateFilenameValue...
+ d pr extproc('__get_xmlOutputBuffer+
+ d CreateFilenameValue')
+ d like(
+ d xmlOutputBufferCreateFilenameFunc)
+
+ d set_xmlOutputBufferCreateFilenameValue...
+ d pr extproc('__set_xmlOutputBuffer+
+ d CreateFilenameValue')
+ d value value like(
+ d xmlOutputBufferCreateFilenameFunc)
+
+ d xmlOutputBufferCreateFilenameValue...
+ d pr extproc('__call_xmlOutputBuffer+
+ d CreateFilenameValue')
+ d like(xmlOutputBufferPtr)
+ d URI * value options(*string) const char *
+ d encoder value like(xmlCharEncodingHandlerPtr)
+ d compression 10i 0 value
+
+ /endif XML_GLOBALS_H
diff --git a/os400/libxmlrpg/hash.rpgle b/os400/libxmlrpg/hash.rpgle
new file mode 100644
index 0000000..867f98f
--- /dev/null
+++ b/os400/libxmlrpg/hash.rpgle
@@ -0,0 +1,231 @@
+ * Summary: Chained hash tables
+ * Description: This module implements the hash table support used in
+ * various places in the library.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_HASH_H__)
+ /define XML_HASH_H__
+
+ * The hash table.
+
+ d xmlHashTablePtr...
+ d s * based(######typedef######)
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/dict"
+
+ * function types:
+
+ * xmlHashDeallocator:
+ * @payload: the data in the hash
+ * @name: the name associated
+ *
+ * Callback to free data from a hash.
+
+ d xmlHashDeallocator...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlHashCopier:
+ * @payload: the data in the hash
+ * @name: the name associated
+ *
+ * Callback to copy data from a hash.
+ *
+ * Returns a copy of the data or NULL in case of error.
+
+ d xmlHashCopier s * based(######typedef######)
+ d procptr
+
+ * xmlHashScanner:
+ * @payload: the data in the hash
+ * @data: extra scannner data
+ * @name: the name associated
+ *
+ * Callback when scanning data in a hash with the simple scanner.
+
+ d xmlHashScanner s * based(######typedef######)
+ d procptr
+
+ * xmlHashScannerFull:
+ * @payload: the data in the hash
+ * @data: extra scannner data
+ * @name: the name associated
+ * @name2: the second name associated
+ * @name3: the third name associated
+ *
+ * Callback when scanning data in a hash with the full scanner.
+
+ d xmlHashScannerFull...
+ d s * based(######typedef######)
+ d procptr
+
+ * Constructor and destructor.
+
+ d xmlHashCreate pr extproc('xmlHashCreate')
+ d like(xmlHashTablePtr)
+ d size 10i 0 value
+
+ d xmlHashCreateDict...
+ d pr extproc('xmlHashCreateDict')
+ d like(xmlHashTablePtr)
+ d size 10i 0 value
+ d dict value like(xmlDictPtr)
+
+ d xmlHashFree pr extproc('xmlHashFree')
+ d table value like(xmlHashTablePtr)
+ d f value like(xmlHashDeallocator)
+
+ * Add a new entry to the hash table.
+
+ d xmlHashAddEntry...
+ d pr 10i 0 extproc('xmlHashAddEntry')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d userdata * value options(*string) void *
+
+ d xmlHashUpdateEntry...
+ d pr 10i 0 extproc('xmlHashUpdateEntry')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d userdata * value options(*string) void *
+ d f value like(xmlHashDeallocator)
+
+ d xmlHashAddEntry2...
+ d pr 10i 0 extproc('xmlHashAddEntry2')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d userdata * value options(*string) void *
+
+ d xmlHashUpdateEntry2...
+ d pr 10i 0 extproc('xmlHashUpdateEntry2')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d userdata * value options(*string) void *
+ d f value like(xmlHashDeallocator)
+
+ d xmlHashAddEntry3...
+ d pr 10i 0 extproc('xmlHashAddEntry3')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+ d userdata * value options(*string) void *
+
+ d xmlHashUpdateEntry3...
+ d pr 10i 0 extproc('xmlHashUpdateEntry3')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+ d userdata * value options(*string) void *
+ d f value like(xmlHashDeallocator)
+
+ * Remove an entry from the hash table.
+
+ d xmlHashRemoveEntry...
+ d pr 10i 0 extproc('xmlHashRemoveEntry')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d f value like(xmlHashDeallocator)
+
+ d xmlHashRemoveEntry2...
+ d pr 10i 0 extproc('xmlHashRemoveEntry2')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d f value like(xmlHashDeallocator)
+
+ d xmlHashRemoveEntry3...
+ d pr 10i 0 extproc('xmlHashRemoveEntry3')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+ d f value like(xmlHashDeallocator)
+
+ * Retrieve the userdata.
+
+ d xmlHashLookup pr * extproc('xmlHashLookup') void *
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlHashLookup2 pr * extproc('xmlHashLookup2') void *
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+
+ d xmlHashLookup3 pr * extproc('xmlHashLookup3') void *
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+
+ d xmlHashQLookup pr * extproc('xmlHashQLookup') void *
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+
+ d xmlHashQLookup2...
+ d pr * extproc('xmlHashQLookup2') void *
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d prefix2 * value options(*string) const xmlChar *
+
+ d xmlHashQLookup3...
+ d pr * extproc('xmlHashQLookup3') void *
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d prefix2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+ d prefix3 * value options(*string) const xmlChar *
+
+ * Helpers.
+
+ d xmlHashCopy pr extproc('xmlHashCopy')
+ d like(xmlHashTablePtr)
+ d table value like(xmlHashTablePtr)
+ d f value like(xmlHashCopier)
+
+ d xmlHashSize pr 10i 0 extproc('xmlHashSize')
+ d table value like(xmlHashTablePtr)
+
+ d xmlHashScan pr extproc('xmlHashScan')
+ d table value like(xmlHashTablePtr)
+ d f value like(xmlHashScanner)
+ d data * value options(*string) void *
+
+ d xmlHashScan3 pr extproc('xmlHashScan3')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+ d f value like(xmlHashScanner)
+ d data * value options(*string) void *
+
+ d xmlHashScanFull...
+ d pr extproc('xmlHashScanFull')
+ d table value like(xmlHashTablePtr)
+ d f value like(xmlHashScannerFull)
+ d data * value options(*string) void *
+
+ d xmlHashScanFull3...
+ d pr extproc('xmlHashScanFull3')
+ d table value like(xmlHashTablePtr)
+ d name * value options(*string) const xmlChar *
+ d name2 * value options(*string) const xmlChar *
+ d name3 * value options(*string) const xmlChar *
+ d f value like(xmlHashScannerFull)
+ d data * value options(*string) void *
+
+ /endif XML_HASH_H__
diff --git a/os400/libxmlrpg/list.rpgle b/os400/libxmlrpg/list.rpgle
new file mode 100644
index 0000000..c62fcbd
--- /dev/null
+++ b/os400/libxmlrpg/list.rpgle
@@ -0,0 +1,168 @@
+ * Summary: lists interfaces
+ * Description: this module implement the list support used in
+ * various place in the library.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_LINK_INCLUDE__)
+ /define XML_LINK_INCLUDE__
+
+ /include "libxmlrpg/xmlversion"
+
+ d xmlLinkPtr s * based(######typedef######)
+
+ d xmlListPtr s * based(######typedef######)
+
+ * xmlListDeallocator:
+ * @lk: the data to deallocate
+ *
+ * Callback function used to free data from a list.
+
+ d xmlListDeallocator...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlListDataCompare:
+ * @data0: the first data
+ * @data1: the second data
+ *
+ * Callback function used to compare 2 data.
+ *
+ * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
+
+ d xmlListDataCompare...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlListWalker:
+ * @data: the data found in the list
+ * @user: extra user provided data to the walker
+ *
+ * Callback function used when walking a list with xmlListWalk().
+ *
+ * Returns 0 to stop walking the list, 1 otherwise.
+
+ d xmlListWalker s * based(######typedef######)
+ d procptr
+
+ * Creation/Deletion
+
+ d xmlListCreate pr extproc('xmlListCreate')
+ d like(xmlListPtr)
+ d deallocator value like(xmlListDeallocator)
+ d compare value like(xmlListDataCompare)
+
+ d xmlListDelete pr extproc('xmlListDelete')
+ d l value like(xmlListPtr)
+
+ * Basic Operators
+
+ d xmlListSearch pr * extproc('xmlListSearch') void *
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListReverseSearch...
+ d pr * extproc('xmlListReverseSearch') void *
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListInsert pr 10i 0 extproc('xmlListInsert')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListAppend pr 10i 0 extproc('xmlListAppend')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListRemoveFirst...
+ d pr 10i 0 extproc('xmlListRemoveFirst')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListRemoveLast...
+ d pr 10i 0 extproc('xmlListRemoveLast')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListRemoveAll...
+ d pr 10i 0 extproc('xmlListRemoveAll')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListClear pr extproc('xmlListClear')
+ d l value like(xmlListPtr)
+
+ d xmlListEmpty pr 10i 0 extproc('xmlListEmpty')
+ d l value like(xmlListPtr)
+
+ d xmlListFront pr extproc('xmlListFront')
+ d like(xmlLinkPtr)
+ d l value like(xmlListPtr)
+
+ d xmlListEnd pr extproc('xmlListEnd')
+ d like(xmlLinkPtr)
+ d l value like(xmlListPtr)
+
+ d xmlListSize pr 10i 0 extproc('xmlListSize')
+ d l value like(xmlListPtr)
+
+ d xmlListPopFront...
+ d pr extproc('xmlListPopFront')
+ d l value like(xmlListPtr)
+
+ d xmlListPopBack...
+ d pr extproc('xmlListPopBack')
+ d l value like(xmlListPtr)
+
+ d xmlListPushFront...
+ d pr 10i 0 extproc('xmlListPushFront')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ d xmlListPushBack...
+ d pr 10i 0 extproc('xmlListPushBack')
+ d l value like(xmlListPtr)
+ d data * value void *
+
+ * Advanced Operators
+
+ d xmlListReverse pr extproc('xmlListReverse')
+ d l value like(xmlListPtr)
+
+ d xmlListSort pr extproc('xmlListSort')
+ d l value like(xmlListPtr)
+
+ d xmlListWalk pr extproc('xmlListWalk')
+ d l value like(xmlListPtr)
+ d walker value like(xmlListWalker)
+ d user * value const void *
+
+ d xmlListReverseWalk...
+ d pr extproc('xmlListReverseWalk')
+ d l value like(xmlListPtr)
+ d walker value like(xmlListWalker)
+ d user * value const void *
+
+ d xmlListMerge pr extproc('xmlListMerge')
+ d l1 value like(xmlListPtr)
+ d l2 value like(xmlListPtr)
+
+ d xmlListDup pr extproc('xmlListDup')
+ d like(xmlListPtr)
+ d old value like(xmlListPtr)
+
+ d xmlListCopy pr 10i 0 extproc('xmlListCopy')
+ d cur value like(xmlListPtr)
+ d old value like(xmlListPtr) const
+
+ * Link operators
+
+ d xmlListGetData pr * extproc('xmlListGetData') void *
+ d lk value like(xmlLinkPtr)
+
+ * xmlListUnique()
+ * xmlListSwap
+
+ /endif XML_LINK_INCLUDE__
diff --git a/os400/libxmlrpg/nanoftp.rpgle b/os400/libxmlrpg/nanoftp.rpgle
new file mode 100644
index 0000000..0637562
--- /dev/null
+++ b/os400/libxmlrpg/nanoftp.rpgle
@@ -0,0 +1,156 @@
+ * Summary: minimal FTP implementation
+ * Description: minimal FTP implementation allowing to fetch resources
+ * like external subset.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(NANO_FTP_H__)
+ /define NANO_FTP_H__
+
+ /include /libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_FTP_ENABLED)
+
+ d INVALID_SOCKET c -1
+
+ * ftpListCallback:
+ * @userData: user provided data for the callback
+ * @filename: the file name (including "->" when links are shown)
+ * @attrib: the attribute string
+ * @owner: the owner string
+ * @group: the group string
+ * @size: the file size
+ * @links: the link count
+ * @year: the year
+ * @month: the month
+ * @day: the day
+ * @hour: the hour
+ * @minute: the minute
+ *
+ * A callback for the xmlNanoFTPList command.
+ * Note that only one of year and day:minute are specified.
+
+ d ftpListCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * ftpDataCallback:
+ * @userData: the user provided context
+ * @data: the data received
+ * @len: its size in bytes
+ *
+ * A callback for the xmlNanoFTPGet command.
+
+ d ftpDataCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * Init
+
+ d xmlNanoFTPInit pr extproc('xmlNanoFTPInit')
+
+ d xmlNanoFTPCleanup...
+ d pr extproc('xmlNanoFTPCleanup')
+
+ * Creating/freeing contexts.
+
+ d xmlNanoFTPNewCtxt...
+ d pr * extproc('xmlNanoFTPNewCtxt') void *
+ d URL * value options(*string) const char *
+
+ d xmlNanoFTPFreeCtxt...
+ d pr extproc('xmlNanoFTPFreeCtxt')
+ d ctx * value void *
+
+ d xmlNanoFTPConnectTo...
+ d pr * extproc('xmlNanoFTPConnectTo') void *
+ d server * value options(*string) const char *
+ d port 10i 0 value
+
+ * Opening/closing session connections.
+
+ d xmlNanoFTPOpen pr * extproc('xmlNanoFTPOpen') void *
+ d URL * value options(*string) const char *
+
+ d xmlNanoFTPConnect...
+ d pr 10i 0 extproc('xmlNanoFTPConnect')
+ d ctx * value void *
+
+ d xmlNanoFTPClose...
+ d pr 10i 0 extproc('xmlNanoFTPClose')
+ d ctx * value void *
+
+ d xmlNanoFTPQuit pr 10i 0 extproc('xmlNanoFTPQuit')
+ d ctx * value void *
+
+ d xmlNanoFTPScanProxy...
+ d pr extproc('xmlNanoFTPScanProxy')
+ d URL * value options(*string) const char *
+
+ d xmlNanoFTPProxy...
+ d pr extproc('xmlNanoFTPProxy')
+ d host * value options(*string) const char *
+ d port 10i 0 value
+ d user * value options(*string) const char *
+ d passwd * value options(*string) const char *
+ d type 10i 0 value
+
+ d xmlNanoFTPUpdateURL...
+ d pr 10i 0 extproc('xmlNanoFTPUpdateURL')
+ d ctx * value void *
+ d URL * value options(*string) const char *
+
+ * Rather internal commands.
+
+ d xmlNanoFTPGetResponse...
+ d pr 10i 0 extproc('xmlNanoFTPGetResponse')
+ d ctx * value void *
+
+ d xmlNanoFTPCheckResponse...
+ d pr 10i 0 extproc('xmlNanoFTPCheckResponse')
+ d ctx * value void *
+
+ * CD/DIR/GET handlers.
+
+ d xmlNanoFTPCwd pr 10i 0 extproc('xmlNanoFTPCwd')
+ d ctx * value void *
+ d directory * value options(*string) const char *
+
+ d xmlNanoFTPDele pr 10i 0 extproc('xmlNanoFTPDele')
+ d ctx * value void *
+ d file * value options(*string) const char *
+
+ d xmlNanoFTPGetConnection...
+ d pr 10i 0 extproc('xmlNanoFTPGetConnection') Socket descriptor
+ d ctx * value void *
+
+ d xmlNanoFTPCloseConnection...
+ d pr 10i 0 extproc('xmlNanoFTPCloseConnection')
+ d ctx * value void *
+
+ d xmlNanoFTPList pr 10i 0 extproc('xmlNanoFTPList')
+ d ctx * value void *
+ d callback value like(ftpListCallback)
+ d userData * value void *
+ d filename * value options(*string) const char *
+
+ d xmlNanoFTPGetSocket...
+ d pr 10i 0 extproc('xmlNanoFTPGetSocket') Socket descriptor
+ d ctx * value void *
+ d filename * value options(*string) const char *
+
+ d xmlNanoFTPGet pr 10i 0 extproc('xmlNanoFTPGet')
+ d ctx * value void *
+ d callback value like(ftpDataCallback)
+ d userData * value void *
+ d filename * value options(*string) const char *
+
+ d xmlNanoFTPRead pr 10i 0 extproc('xmlNanoFTPRead')
+ d ctx * value void *
+ d dest * value void *
+ d len 10i 0 value
+
+ /endif LIBXML_FTP_ENABLED
+ /endif NANO_FTP_H__
diff --git a/os400/libxmlrpg/nanohttp.rpgle b/os400/libxmlrpg/nanohttp.rpgle
new file mode 100644
index 0000000..4a076d2
--- /dev/null
+++ b/os400/libxmlrpg/nanohttp.rpgle
@@ -0,0 +1,103 @@
+ * Summary: minimal HTTP implementation
+ * Description: minimal HTTP implementation allowing to fetch resources
+ * like external subset.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(NANO_HTTP_H__)
+ /define NANO_HTTP_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_HTTP_ENABLED)
+
+ d xmlNanoHTTPInit...
+ d pr extproc('xmlNanoHTTPInit')
+
+ d xmlNanoHTTPCleanup...
+ d pr extproc('xmlNanoHTTPCleanup')
+
+ d xmlNanoHTTPScanProxy...
+ d pr extproc('xmlNanoHTTPScanProxy')
+ d URL * value options(*string) const char *
+
+ d xmlNanoHTTPFetch...
+ d pr 10i 0 extproc('xmlNanoHTTPFetch')
+ d URL * value options(*string) const char *
+ d filename * value options(*string) const char *
+
+ d xmlNanoHTTPMethod...
+ d pr * extproc('xmlNanoHTTPMethod') void *
+ d URL * value options(*string) const char *
+ d method * value options(*string) const char *
+ d input * value options(*string) const char *
+ d contentType * value char * *
+ d headers * value options(*string) const char *
+ d ilen 10i 0 value
+
+ d xmlNanoHTTPMethodRedir...
+ d pr * extproc('xmlNanoHTTPMethodRedir') void *
+ d URL * value options(*string) const char *
+ d method * value options(*string) const char *
+ d input * value options(*string) const char *
+ d contentType * value char * *
+ d redir * value char * *
+ d headers * value options(*string) const char *
+ d ilen 10i 0 value
+
+ d xmlNanoHTTPOpen...
+ d pr * extproc('xmlNanoHTTPOpen') void *
+ d URL * value options(*string) const char *
+ d contentType * char *(*)
+
+ d xmlNanoHTTPOpenRedir...
+ d pr * extproc('xmlNanoHTTPOpenRedir') void *
+ d URL * value options(*string) const char *
+ d contentType * value char * *
+ d redir * value char * *
+
+ d xmlNanoHTTPReturnCode...
+ d pr 10i 0 extproc('xmlNanoHTTPReturnCode')
+ d ctx * value void *
+
+ d xmlNanoHTTPAuthHeader...
+ d pr * extproc('xmlNanoHTTPAuthHeader') const char *
+ d ctx * value void *
+
+ d xmlNanoHTTPRedir...
+ d pr * extproc('xmlNanoHTTPRedir') const char *
+ d ctx * value void *
+
+ d xmlNanoHTTPContentLength...
+ d pr 10i 0 extproc('xmlNanoHTTPContentLength')
+ d ctx * value void *
+
+ d xmlNanoHTTPEncoding...
+ d pr * extproc('xmlNanoHTTPEncoding') const char *
+ d ctx * value void *
+
+ d xmlNanoHTTPMimeType...
+ d pr * extproc('xmlNanoHTTPMimeType') const char *
+ d ctx * value void *
+
+ d xmlNanoHTTPRead...
+ d pr 10i 0 extproc('xmlNanoHTTPRead')
+ d ctx * value void *
+ d dest * value void *
+ d len 10i 0 value
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlNanoHTTPSave...
+ d pr 10i 0 extproc('xmlNanoHTTPSave')
+ d ctxt * value void *
+ d filename * value options(*string) const char *
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d xmlNanoHTTPClose...
+ d pr extproc('xmlNanoHTTPClose')
+ d ctx * value void *
+
+ /endif LIBXML_HTTP_ENABLED
+ /endif NANO_HTTP_H__
diff --git a/os400/libxmlrpg/parser.rpgle b/os400/libxmlrpg/parser.rpgle
new file mode 100644
index 0000000..7f29e31
--- /dev/null
+++ b/os400/libxmlrpg/parser.rpgle
@@ -0,0 +1,1407 @@
+ * Summary: the core parser module
+ * Description: Interfaces, constants and types related to the XML parser
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_PARSER_H__)
+ /define XML_PARSER_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/dict"
+ /include "libxmlrpg/hash"
+ /include "libxmlrpg/valid"
+ /include "libxmlrpg/entities"
+ /include "libxmlrpg/xmlerror"
+ /include "libxmlrpg/xmlstring"
+
+ * XML_DEFAULT_VERSION:
+ *
+ * The default version of XML used: 1.0
+
+ d XML_DEFAULT_VERSION...
+ d c '1.0'
+
+ * xmlParserInput:
+ *
+ * An xmlParserInput is an input flow for the XML processor.
+ * Each entity parsed is associated an xmlParserInput (except the
+ * few predefined ones). This is the case both for internal entities
+ * - in which case the flow is already completely in memory - or
+ * external entities - in which case we use the buf structure for
+ * progressive reading and I18N conversions to the internal UTF-8 format.
+
+ * xmlParserInputDeallocate:
+ * @str: the string to deallocate
+ *
+ * Callback for freeing some parser input allocations.
+
+ d xmlParserInputDeallocate...
+ d s * based(######typedef######)
+ d procptr
+
+ * Input buffer
+
+ d xmlParserInput ds based(xmlParserInputPtr)
+ d align qualified
+ d buf like(xmlParserInputBufferPtr) UTF-8 encoded buffer
+ d filename * const char *
+ d directory * const char *
+ d base * const char *
+ d cur * const char *
+ d end * const char *
+ d length 10i 0 Length if known
+ d line 10i 0 Current line
+ d col 10i 0 Current column
+ *
+ * NOTE: consumed is only tested for equality in the parser code,
+ * so even if there is an overflow this should not give troubles
+ * for parsing very large instances.
+ *
+ d consumed 20u 0 # consumed xmlChars
+ d free like(xmlParserInputDeallocate) base deallocator
+ d encoding * const xmlChar *
+ d version * const xmlChar *
+ d standalone 10i 0 Standalone entity ?
+ d id 10i 0 Entity unique ID
+
+ * xmlParserNodeInfo:
+ *
+ * The parser can be asked to collect Node informations, i.e. at what
+ * place in the file they were detected.
+ * NOTE: This is off by default and not very well tested.
+
+ d xmlParserNodeInfoPtr...
+ d s * based(######typedef######)
+
+ d xmlParserNodeInfo...
+ d ds based(xmlParserNodeInfoPtr)
+ d align qualified
+ d node like(xmlNodePtr) const
+ * Position & line # that text that created the node begins & ends on
+ d begin_pos 20u 0
+ d begin_line 20u 0
+ d end_pos 20u 0
+ d end_line 20u 0
+
+ d xmlParserNodeInfoSeqPtr...
+ d s * based(######typedef######)
+
+ d xmlParserNodeInfoSeq...
+ d ds based(xmlParserNodeInfoSeqPtr)
+ d align qualified
+ d maximum 20u 0
+ d length 20u 0
+ d buffer like(xmlParserNodeInfoPtr)
+
+ * xmlParserInputState:
+ *
+ * The parser is now working also as a state based parser.
+ * The recursive one use the state info for entities processing.
+
+ d xmlParserInputState...
+ d s 10i 0 based(######typedef######) enum
+ d XML_PARSER_EOF... Nothing to parse
+ d c -1
+ d XML_PARSER_START... Nothing parsed
+ d c 0
+ d XML_PARSER_MISC... Misc* b4 int subset
+ d c 1
+ d XML_PARSER_PI c 2 In proc instr
+ d XML_PARSER_DTD... In some DTD content
+ d c 3
+ d XML_PARSER_PROLOG... Misc* after int sbst
+ d c 4
+ d XML_PARSER_COMMENT... Within a comment
+ d c 5
+ d XML_PARSER_START_TAG... Within a start tag
+ d c 6
+ d XML_PARSER_CONTENT... Within the content
+ d c 7
+ d XML_PARSER_CDATA_SECTION... Within a CDATA
+ d c 8
+ d XML_PARSER_END_TAG... Within a closing tag
+ d c 9
+ d XML_PARSER_ENTITY_DECL... In an entity decl
+ d c 10
+ d XML_PARSER_ENTITY_VALUE... In entity decl value
+ d c 11
+ d XML_PARSER_ATTRIBUTE_VALUE... In attribute value
+ d c 12
+ d XML_PARSER_SYSTEM_LITERAL... In a SYSTEM value
+ d c 13
+ d XML_PARSER_EPILOG... Last end tag Misc*
+ d c 14
+ d XML_PARSER_IGNORE... In IGNORED section
+ d c 15
+ d XML_PARSER_PUBLIC_LITERAL... In a PUBLIC value
+ d c 16
+
+ * XML_DETECT_IDS:
+ *
+ * Bit in the loadsubset context field to tell to do ID/REFs lookups.
+ * Use it to initialize xmlLoadExtDtdDefaultValue.
+
+ d XML_DETECT_IDS c 2
+
+ * XML_COMPLETE_ATTRS:
+ *
+ * Bit in the loadsubset context field to tell to do complete the
+ * elements attributes lists with the ones defaulted from the DTDs.
+ * Use it to initialize xmlLoadExtDtdDefaultValue.
+
+ d XML_COMPLETE_ATTRS...
+ d c 4
+
+ * XML_SKIP_IDS:
+ *
+ * Bit in the loadsubset context field to tell to not do ID/REFs
+ * registration.
+ * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
+
+ d XML_SKIP_IDS c 8
+
+ * xmlParserMode:
+ *
+ * A parser can operate in various modes
+
+ d xmlParserMode s 10i 0 based(######typedef######) enum
+ d XML_PARSE_UNKNOWN...
+ d c 0
+ d XML_PARSE_DOM...
+ d c 1
+ d XML_PARSE_SAX...
+ d c 2
+ d XML_PARSE_PUSH_DOM...
+ d c 3
+ d XML_PARSE_PUSH_SAX...
+ d c 4
+ d XML_PARSE_READER...
+ d c 5
+
+ * xmlParserCtxt:
+ *
+ * The parser context.
+ * NOTE This doesn't completely define the parser state, the (current ?)
+ * design of the parser uses recursive function calls since this allow
+ * and easy mapping from the production rules of the specification
+ * to the actual code. The drawback is that the actual function call
+ * also reflect the parser state. However most of the parsing routines
+ * takes as the only argument the parser context pointer, so migrating
+ * to a state based parser for progressive parsing shouldn't be too
+ * hard.
+
+ d xmlParserCtxt ds based(xmlParserCtxtPtr)
+ d align qualified
+ d sax like(xmlSAXHandlerPtr) The SAX handler
+ d userData * SAX only-4 DOM build
+ d myDoc like(xmlDocPtr) Document being built
+ d wellFormed 10i 0 Well formed doc ?
+ d replaceEntities... Replace entities ?
+ d 10i 0
+ d version * const xmlChar *
+ d encoding * const xmlChar *
+ d standalone 10i 0 Standalone document
+ d html 10i 0 HTML state/type
+ *
+ * Input stream stack
+ *
+ d input like(xmlParserInputPtr) Current input stream
+ d inputNr 10i 0 # current in streams
+ d inputMax 10i 0 Max # of in streams
+ d inputTab * xmlParserInputPtr *
+ *
+ * Node analysis stack only used for DOM building
+ *
+ d node like(xmlNodePtr) Current parsed node
+ d nodeNr 10i 0 Parsing stack depth
+ d nodeMax 10i 0 Max stack depth
+ d nodeTab * xmlNodePtr *
+ *
+ d record_info 10i 0 Keep node info ?
+ d node_seq like(xmlParserNodeInfoSeq) Parsed nodes info
+ *
+ d errNo 10i 0 Error code
+ *
+ d hasExternalSubset...
+ d 10i 0
+ d hashPErefs 10i 0
+ d external 10i 0 Parsing ext. entity?
+ *
+ d valid 10i 0 Valid document ?
+ d validate 10i 0 Try to validate ?
+ d vctxt like(xmlValidCtxt) Validity context
+ *
+ d instate like(xmlParserInputState) Current input type
+ d token 10i 0 Next look-ahead char
+ *
+ d directory * char *
+ *
+ * Node name stack
+ *
+ d name * const xmlChar *
+ d nameNr 10i 0 Parsing stack depth
+ d nameMax 10i 0 Max stack depth
+ d nameTab * const xmlChar * *
+ *
+ d nbChars 20i 0 # xmlChars processed
+ d checkIndex 20i 0 4 progressive parse
+ d keepBlanks 10i 0 Ugly but ...
+ d disableSAX 10i 0 Disable SAX cllbacks
+ d inSubset 10i 0 In int 1/ext 2 sbset
+ d intSubName * const xmlChar *
+ d extSubURI * const xmlChar *
+ d extSubSytem * const xmlChar *
+ *
+ * xml:space values
+ *
+ d space * int *
+ d spaceNr 10i 0 Parsing stack depth
+ d spaceMax 10i 0 Max stack depth
+ d spaceTab * int *
+ *
+ d depth 10i 0 To detect loops
+ d entity like(xmlParserInputPtr) To check boundaries
+ d charset 10i 0 In-memory content
+ d nodelen 10i 0 Speed up parsing
+ d nodemem 10i 0 Speed up parsing
+ d pedantic 10i 0 Enb. pedantic warng
+ d #private * void *
+ *
+ d loadsubset 10i 0 Load ext. subset ?
+ d linenumbers 10i 0 Set line numbers ?
+ d catalogs * void *
+ d recovery 10i 0 Run in recovery mode
+ d progressive 10i 0 Progressive parsing?
+ d dict like(xmlDictPtr) Parser dictionary
+ d atts * const xmlChar *
+ d maxatts 10i 0 Above array size
+ d docdict 10i 0 Use dictionary ?
+ *
+ * pre-interned strings
+ *
+ d str_xml * const xmlChar *
+ d str_xmlns * const xmlChar *
+ d str_xml_ms * const xmlChar *
+ *
+ * Everything below is used only by the new SAX mode
+ *
+ d sax2 10i 0 New SAX mode ?
+ d nsNr 10i 0 # inherited nmspaces
+ d nsMax 10i 0 Array size
+ d nsTab * const xmlChar *
+ d attallocs * int *
+ d pushTab * void *
+ d attsDefault like(xmlHashTablePtr) Defaulted attrs
+ d attsSpecial like(xmlHashTablePtr) non-CDATA attrs
+ d nsWellFormed 10i 0 Doc namespace OK ?
+ d options 10i 0 Extra options
+ *
+ * Those fields are needed only for treaming parsing so far
+ *
+ d dictNames 10i 0 Dict names in tree ?
+ d freeElemsNr 10i 0 # free element nodes
+ d freeElems like(xmlNodePtr) Free elem nodes list
+ d freeAttrsNr 10i 0 # free attr. nodes
+ d freeAttrs like(xmlAttrPtr) Free attr noes list
+ *
+ * the complete error informations for the last error.
+ *
+ d lastError like(xmlError)
+ d parseMode like(xmlParserMode) The parser mode
+ d nbentities 20u 0 # entity references
+ d sizeentities 20u 0 Parsed entities size
+ *
+ * for use by HTML non-recursive parser
+ *
+ d nodeInfo like(xmlParserNodeInfo) Current NodeInfo
+ d nodeInfoNr 10i 0 Parsing stack depth
+ d nodeInfoMax 10i 0 Max stack depth
+ d nodeInfoTab * xmlParserNodeInfo *
+ *
+ d input_id 10i 0 Label inputs ?
+ d sizeentcopy 20u 0 Entity copy volume
+
+ * xmlSAXLocator:
+ *
+ * A SAX Locator.
+
+ d xmlSAXLocator ds based(xmlSAXLocatorPtr)
+ d align qualified
+ d getPublicId * procptr
+ d getSystemId * procptr
+ d getLineNumber * procptr
+ d getColumnNumber...
+ d * procptr
+
+ * xmlSAXHandler:
+ *
+ * A SAX handler is bunch of callbacks called by the parser when
+ * processing of the input generate data or structure informations.
+
+ * resolveEntitySAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ *
+ * Callback:
+ * The entity loader, to control the loading of external entities,
+ * the application can either:
+ * - override this resolveEntity() callback in the SAX block
+ * - or better use the xmlSetExternalEntityLoader() function to
+ * set up it's own entity resolution routine
+ *
+ * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+
+ d resolveEntitySAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * internalSubsetSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: the root element name
+ * @ExternalID: the external ID
+ * @SystemID: the SYSTEM ID (e.g. filename or URL)
+ *
+ * Callback on internal subset declaration.
+
+ d internalSubsetSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * externalSubsetSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: the root element name
+ * @ExternalID: the external ID
+ * @SystemID: the SYSTEM ID (e.g. filename or URL)
+ *
+ * Callback on external subset declaration.
+
+ d externalSubsetSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * getEntitySAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The entity name
+ *
+ * Get an entity by name.
+ *
+ * Returns the xmlEntityPtr if found.
+
+ d getEntitySAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * getParameterEntitySAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The entity name
+ *
+ * Get a parameter entity by name.
+ *
+ * Returns the xmlEntityPtr if found.
+
+ d getParameterEntitySAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * entityDeclSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: the entity name
+ * @type: the entity type
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ * @content: the entity value (without processing).
+ *
+ * An entity definition has been parsed.
+
+ d entityDeclSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * notationDeclSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The name of the notation
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ *
+ * What to do when a notation declaration has been parsed.
+
+ d notationDeclSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * attributeDeclSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @elem: the name of the element
+ * @fullname: the attribute name
+ * @type: the attribute type
+ * @def: the type of default value
+ * @defaultValue: the attribute default value
+ * @tree: the tree of enumerated value set
+ *
+ * An attribute definition has been parsed.
+
+ d attributeDeclSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * elementDeclSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: the element name
+ * @type: the element type
+ * @content: the element value tree
+ *
+ * An element definition has been parsed.
+
+ d elementDeclSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * unparsedEntityDeclSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The name of the entity
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ * @notationName: the name of the notation
+ *
+ * What to do when an unparsed entity declaration is parsed.
+
+ d unparsedEntityDeclSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * setDocumentLocatorSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @loc: A SAX Locator
+ *
+ * Receive the document locator at startup, actually xmlDefaultSAXLocator.
+ * Everything is available on the context, so this is useless in our case.
+
+ d setDocumentLocatorSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * startDocumentSAXFunc:
+ * @ctx: the user data (XML parser context)
+ *
+ * Called when the document start being processed.
+
+ d startDocumentSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * endDocumentSAXFunc:
+ * @ctx: the user data (XML parser context)
+ *
+ * Called when the document end has been detected.
+
+ d endDocumentSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * startElementSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The element name, including namespace prefix
+ * @atts: An array of name/value attributes pairs, NULL terminated
+ *
+ * Called when an opening tag has been processed.
+
+ d startElementSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * endElementSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The element name
+ *
+ * Called when the end of an element has been detected.
+
+ d endElementSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * attributeSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The attribute name, including namespace prefix
+ * @value: The attribute value
+ *
+ * Handle an attribute that has been read by the parser.
+ * The default handling is to convert the attribute into an
+ * DOM subtree and past it in a new xmlAttr element added to
+ * the element.
+
+ d attributeSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * referenceSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @name: The entity name
+ *
+ * Called when an entity reference is detected.
+
+ d referenceSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * charactersSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @ch: a xmlChar string
+ * @len: the number of xmlChar
+ *
+ * Receiving some chars from the parser.
+
+ d charactersSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * ignorableWhitespaceSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @ch: a xmlChar string
+ * @len: the number of xmlChar
+ *
+ * Receiving some ignorable whitespaces from the parser.
+ * UNUSED: by default the DOM building will use characters.
+
+ d ignorableWhitespaceSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * processingInstructionSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @target: the target name
+ * @data: the PI data's
+ *
+ * A processing instruction has been parsed.
+
+ d processingInstructionSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * commentSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @value: the comment content
+ *
+ * A comment has been parsed.
+
+ d commentSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * cdataBlockSAXFunc:
+ * @ctx: the user data (XML parser context)
+ * @value: The pcdata content
+ * @len: the block length
+ *
+ * Called when a pcdata block has been parsed.
+
+ d cdataBlockSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * warningSAXFunc:
+ * @ctx: an XML parser context
+ * @msg: the message to display/transmit
+ * @...: extra parameters for the message display
+ *
+ * Display and format a warning messages, callback.
+
+ d warningSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * errorSAXFunc:
+ * @ctx: an XML parser context
+ * @msg: the message to display/transmit
+ * @...: extra parameters for the message display
+ *
+ * Display and format an error messages, callback.
+
+ d errorSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * fatalErrorSAXFunc:
+ * @ctx: an XML parser context
+ * @msg: the message to display/transmit
+ * @...: extra parameters for the message display
+ *
+ * Display and format fatal error messages, callback.
+ * Note: so far fatalError() SAX callbacks are not used, error()
+ * get all the callbacks for errors.
+
+ d fatalErrorSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * isStandaloneSAXFunc:
+ * @ctx: the user data (XML parser context)
+ *
+ * Is this document tagged standalone?
+ *
+ * Returns 1 if true
+
+ d isStandaloneSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * hasInternalSubsetSAXFunc:
+ * @ctx: the user data (XML parser context)
+ *
+ * Does this document has an internal subset.
+ *
+ * Returns 1 if true
+
+ d hasInternalSubsetSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * hasExternalSubsetSAXFunc:
+ * @ctx: the user data (XML parser context)
+ *
+ * Does this document has an external subset?
+ *
+ * Returns 1 if true
+
+ d hasExternalSubsetSAXFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ ************************************************************************
+ * *
+ * The SAX version 2 API extensions *
+ * *
+ ************************************************************************
+
+ * XML_SAX2_MAGIC:
+ *
+ * Special constant found in SAX2 blocks initialized fields
+
+ d XML_SAX2_MAGIC c X'DEEDBEAF'
+
+ * startElementNsSAX2Func:
+ * @ctx: the user data (XML parser context)
+ * @localname: the local name of the element
+ * @prefix: the element namespace prefix if available
+ * @URI: the element namespace name if available
+ * @nb_namespaces: number of namespace definitions on that node
+ * @namespaces: pointer to the array of prefix/URI pairs namespace
+ * definitions
+ * @nb_attributes: the number of attributes on that node
+ * @nb_defaulted: the number of defaulted attributes. The defaulted
+ * ones are at the end of the array
+ * @attributes: pointer to the array of
+ * (localname/prefix/URI/value/end) attribute values.
+ *
+ * SAX2 callback when an element start has been detected by the parser.
+ * It provides the namespace informations for the element, as well as
+ * the new namespace declarations on the element.
+
+ d startElementNsSAX2Func...
+ d s * based(######typedef######)
+ d procptr
+
+ * endElementNsSAX2Func:
+ * @ctx: the user data (XML parser context)
+ * @localname: the local name of the element
+ * @prefix: the element namespace prefix if available
+ * @URI: the element namespace name if available
+ *
+ * SAX2 callback when an element end has been detected by the parser.
+ * It provides the namespace informations for the element.
+
+ d endElementNsSAX2Func...
+ d s * based(######typedef######)
+ d procptr
+
+ d xmlSAXHandler ds based(xmlSAXHandlerPtr)
+ d align qualified
+ d internalSubset...
+ d like(internalSubsetSAXFunc)
+ d isStandalone like(isStandaloneSAXFunc)
+ d hasInternalSubset...
+ d like(hasInternalSubsetSAXFunc)
+ d hasExternalSubset...
+ d like(hasExternalSubsetSAXFunc)
+ d resolveEntity like(resolveEntitySAXFunc)
+ d getEntity like(getEntitySAXFunc)
+ d entityDecl like(entityDeclSAXFunc)
+ d notationDecl like(notationDeclSAXFunc)
+ d attributeDecl like(attributeDeclSAXFunc)
+ d elementDecl like(elementDeclSAXFunc)
+ d unparsedEntityDecl...
+ d like(unparsedEntityDeclSAXFunc)
+ d setDocumentLocator...
+ d like(setDocumentLocatorSAXFunc)
+ d startDocument like(startDocumentSAXFunc)
+ d endDocument like(endDocumentSAXFunc)
+ d startElement like(startElementSAXFunc)
+ d endElement like(endElementSAXFunc)
+ d reference like(referenceSAXFunc)
+ d characters like(charactersSAXFunc)
+ d ignorableWhitespace...
+ d like(ignorableWhitespaceSAXFunc)
+ d processingInstruction...
+ d like(processingInstructionSAXFunc)
+ d comment like(commentSAXFunc)
+ d warning like(warningSAXFunc)
+ d error like(errorSAXFunc)
+ d fatalError like(fatalErrorSAXFunc)
+ d getParameterEntity...
+ d like(getParameterEntitySAXFunc)
+ d cdataBlock like(cdataBlockSAXFunc)
+ d externalSubset...
+ d like(externalSubsetSAXFunc)
+ d initialized 10u 0
+ *
+ * The following fields are extensions available only on version 2
+ *
+ d #private * void *
+ d startElementNs...
+ d like(startElementNsSAX2Func)
+ d endELementNs like(endElementNsSAX2Func)
+ d serror like(xmlStructuredErrorFunc)
+
+ * SAX Version 1
+
+ d xmlSAXHandlerV1Ptr...
+ d s * based(######typedef######)
+
+ d xmlSAXHandlerV1...
+ d ds based(xmlSAXHandlerV1Ptr)
+ d align qualified
+ d internalSubset...
+ d like(internalSubsetSAXFunc)
+ d isStandalone like(isStandaloneSAXFunc)
+ d hasInternalSubset...
+ d like(hasInternalSubsetSAXFunc)
+ d hasExternalSubset...
+ d like(hasExternalSubsetSAXFunc)
+ d resolveEntity like(resolveEntitySAXFunc)
+ d getEntity like(getEntitySAXFunc)
+ d entityDecl like(entityDeclSAXFunc)
+ d notationDecl like(notationDeclSAXFunc)
+ d attributeDecl like(attributeDeclSAXFunc)
+ d elementDecl like(elementDeclSAXFunc)
+ d unparsedEntityDecl...
+ d like(unparsedEntityDeclSAXFunc)
+ d setDocumentLocator...
+ d like(setDocumentLocatorSAXFunc)
+ d startDocument like(startDocumentSAXFunc)
+ d endDocument like(endDocumentSAXFunc)
+ d startElement like(startElementSAXFunc)
+ d endElement like(endElementSAXFunc)
+ d reference like(referenceSAXFunc)
+ d characters like(charactersSAXFunc)
+ d ignorableWhitespace...
+ d like(ignorableWhitespaceSAXFunc)
+ d processingInstruction...
+ d like(processingInstructionSAXFunc)
+ d comment like(commentSAXFunc)
+ d warning like(warningSAXFunc)
+ d error like(errorSAXFunc)
+ d fatalError like(fatalErrorSAXFunc)
+ d getParameterEntity...
+ d like(getParameterEntitySAXFunc)
+ d cdataBlock like(cdataBlockSAXFunc)
+ d externalSubset...
+ d like(externalSubsetSAXFunc)
+ d initialized 10u 0
+
+ * xmlExternalEntityLoader:
+ * @URL: The System ID of the resource requested
+ * @ID: The Public ID of the resource requested
+ * @context: the XML parser context
+ *
+ * External entity loaders types.
+ *
+ * Returns the entity input parser.
+
+ d xmlExternalEntityLoader...
+ d s * based(######typedef######)
+ d procptr
+
+ /include "libxmlrpg/encoding"
+ /include "libxmlrpg/xmlIO"
+ /include "libxmlrpg/globals"
+
+ * Init/Cleanup
+
+ d xmlInitParser pr extproc('xmlInitParser')
+
+ d xmlCleanupParser...
+ d pr extproc('xmlCleanupParser')
+
+ * Input functions
+
+ d xmlParserInputRead...
+ d pr 10i 0 extproc('xmlParserInputRead')
+ d in value like(xmlParserInputPtr)
+ d len 10i 0 value
+
+ d xmlParserInputGrow...
+ d pr 10i 0 extproc('xmlParserInputGrow')
+ d in value like(xmlParserInputPtr)
+ d len 10i 0 value
+
+ * Basic parsing Interfaces
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlParseDoc pr extproc('xmlParseDoc')
+ d like(xmlDocPtr)
+ d cur * value options(*string) const xmlChar *
+
+ d xmlParseFile pr extproc('xmlParseFile')
+ d like(xmlDocPtr)
+ d filename * value options(*string) const char *
+
+ d xmlParseMemory pr extproc('xmlParseMemory')
+ d like(xmlDocPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ /endif LIBXML_SAX1_ENABLED
+
+ d xmlSubstituteEntitiesDefault...
+ d pr 10i 0 extproc(
+ d 'xmlSubstituteEntitiesDefault')
+ d val 10i 0 value
+
+ d xmlKeepBlanksDefault...
+ d pr 10i 0 extproc('xmlKeepBlanksDefault')
+ d val 10i 0 value
+
+ d xmlStopParser pr extproc('xmlStopParser')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlPedanticParserDefault...
+ d pr 10i 0 extproc('xmlPedanticParserDefault')
+ d val 10i 0 value
+
+ d xmlLineNumbersDefault...
+ d pr 10i 0 extproc('xmlLineNumbersDefault')
+ d val 10i 0 value
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ * Recovery mode
+
+ d xmlRecoverDoc pr extproc('xmlRecoverDoc')
+ d like(xmlDocPtr)
+ d cur * value options(*string) const xmlChar *
+
+ d xmlRecoverMemory...
+ d pr extproc('xmlRecoverMemory')
+ d like(xmlDocPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d xmlRecoverFile pr extproc('xmlRecoverFile')
+ d like(xmlDocPtr)
+ d filename * value options(*string) const char *
+ /endif LIBXML_SAX1_ENABLED
+
+ * Less common routines and SAX interfaces
+
+ d xmlParseDocument...
+ d pr 10i 0 extproc('xmlParseDocument')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseExtParsedEnt...
+ d pr 10i 0 extproc('xmlParseExtParsedEnt')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlSAXUserParseFile...
+ d pr 10i 0 extproc('xmlSAXUserParseFile')
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d filename * value options(*string) const char *
+
+ d xmlSAXUserParseMemory...
+ d pr 10i 0 extproc('xmlSAXUserParseMemory')
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d xmlSAXParseDoc pr extproc('xmlSAXParseDoc')
+ d like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d cur * value options(*string) const xmlChar *
+ d recovery 10i 0 value
+
+ d xmlSAXParseMemory...
+ d pr extproc('xmlSAXParseMemory')
+ d like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d recovery 10i 0 value
+
+ d xmlSAXParseMemoryWithData...
+ d pr extproc('xmlSAXParseMemoryWithData')
+ d like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d recovery 10i 0 value
+ d data * value void *
+
+ d xmlSAXParseFile...
+ d pr extproc('xmlSAXParseFile')
+ d like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d filename * value options(*string) const char *
+ d recovery 10i 0 value
+
+ d xmlSAXParseFileWithData...
+ d pr extproc('xmlSAXParseFileWithData')
+ d like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d filename * value options(*string) const char *
+ d recovery 10i 0 value
+ d data * value void *
+
+ d xmlSAXParseEntity...
+ d pr extproc('xmlSAXParseEntity')
+ d like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d filename * value options(*string) const char *
+
+ d xmlParseEntity...
+ d pr extproc('xmlParseEntity')
+ d like(xmlDocPtr)
+ d filename * value options(*string) const char *
+ /endif LIBXML_SAX1_ENABLED
+
+ /if defined(LIBXML_VALID_ENABLED)
+ d xmlSAXParseDTD pr extproc('xmlSAXParseDTD')
+ d like(xmlDtdPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ d xmlParseDTD pr extproc('xmlParseDTD')
+ d like(xmlDtdPtr)
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ d xmlIOParseDTD pr extproc('xmlIOParseDTD')
+ d like(xmlDtdPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d input value like(xmlParserInputBufferPtr)
+ d enc value like(xmlCharEncoding)
+ /endif LIBXML_VALID_ENABLED
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlParseBalancedChunkMemory...
+ d pr 10i 0 extproc(
+ d 'xmlParseBalancedChunkMemory')
+ d doc value like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d depth 10i 0 value
+ d user_data * value void *
+ d string * value options(*string) const xmlChar *
+ d lst * value xmlNodePtr *
+ /endif LIBXML_SAX1_ENABLED
+
+ d xmlParseInNodeContext...
+ d pr extproc('xmlParseInNodeContext')
+ d like(xmlParserErrors)
+ d node value like(xmlNodePtr)
+ d data * value options(*string) const char *
+ d datalen 10i 0 value
+ d options 10i 0 value
+ d lst * value xmlNodePtr *
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlParseBalancedChunkMemoryRecover...
+ d pr 10i 0 extproc(
+ d 'xmlParseBalancedChunkMemoryRecover')
+ d doc value like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d depth 10i 0 value
+ d string * value options(*string) const xmlChar *
+ d lst * value xmlNodePtr *
+ d recover 10i 0 value
+
+ d xmlParseExternalEntity...
+ d pr 10i 0 extproc('xmlParseExternalEntity')
+ d doc value like(xmlDocPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d depth 10i 0 value
+ d URL * value options(*string) const xmlChar *
+ d ID * value options(*string) const xmlChar *
+ d lst * value xmlNodePtr *
+ /endif LIBXML_SAX1_ENABLED
+
+ d xmlParseCtxtExternalEntity...
+ d pr 10i 0 extproc('xmlParseCtxtExternalEntity')
+ d sax value like(xmlSAXHandlerPtr)
+ d URL * value options(*string) const xmlChar *
+ d ID * value options(*string) const xmlChar *
+ d lst * value xmlNodePtr *
+
+ * Parser contexts handling.
+
+ d xmlNewParserCtxt...
+ d pr extproc('xmlNewParserCtxt')
+ d like(xmlParserCtxtPtr)
+
+ d xmlInitParserCtxt...
+ d pr 10i 0 extproc('xmlInitParserCtxt')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlClearParserCtxt...
+ d pr extproc('xmlClearParserCtxt')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlFreeParserCtxt...
+ d pr extproc('xmlFreeParserCtxt')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlSetupParserForBuffer...
+ d pr extproc('xmlSetupParserForBuffer')
+ d ctxt value like(xmlParserCtxtPtr)
+ d buffer * value options(*string) const xmlChar *
+ d filename * value options(*string) const char *
+ /endif LIBXML_SAX1_ENABLED
+
+ d xmlCreateDocParserCtxt...
+ d pr extproc('xmlCreateDocParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d cur * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+ * Reading/setting optional parsing features.
+
+ d xmlGetFeaturesList...
+ d pr 10i 0 extproc('xmlGetFeaturesList')
+ d len 10i 0
+ d result * const char *(*)
+
+ d xmlGetFeature pr 10i 0 extproc('xmlGetFeature')
+ d ctxt value like(xmlParserCtxtPtr)
+ d name * value options(*string) const char *
+ d result * value void *
+
+ d xmlSetFeature pr 10i 0 extproc('xmlSetFeature')
+ d ctxt value like(xmlParserCtxtPtr)
+ d name * value options(*string) const char *
+ d result * value void *
+ /endif LIBXML_LEGACY_ENABLD
+
+ /if defined(LIBXML_PUSH_ENABLED)
+ * Interfaces for the Push mode.
+
+ d xmlCreatePushParserCtxt...
+ d pr extproc('xmlCreatePushParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d filename * value options(*string) const char *
+
+ d xmlParseChunk pr 10i 0 extproc('xmlParseChunk')
+ d ctxt value like(xmlParserCtxtPtr)
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d terminate 10i 0 value
+ /endif LIBXML_PUSH_ENABLED
+
+ * Special I/O mode.
+
+ d xmlCreateIOParserCtxt...
+ d pr extproc('xmlCreateIOParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d enc value like(xmlCharEncoding)
+
+ d xmlNewIOInputStream...
+ d pr extproc('xmlNewIOInputStream')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d input value like(xmlParserInputBufferPtr)
+ d enc value like(xmlCharEncoding)
+
+ * Node infos.
+
+ d xmlParserFindNodeInfo...
+ d pr * extproc('xmlParserFindNodeInfo') xmlParserNodeInfo *
+ d ctxt value like(xmlParserCtxtPtr)
+ d node value like(xmlNodePtr) const
+
+ d xmlInitNodeInfoSeq...
+ d pr extproc('xmlInitNodeInfoSeq')
+ d seq value like(xmlParserNodeInfoSeqPtr)
+
+ d xmlClearNodeInfoSeq...
+ d pr extproc('xmlClearNodeInfoSeq')
+ d seq value like(xmlParserNodeInfoSeqPtr)
+
+ d xmlParserFindNodeInfoIndex...
+ d pr 20u 0 extproc('xmlParserFindNodeInfoIndex')
+ d seq value like(xmlParserNodeInfoSeqPtr)
+ d node value like(xmlNodePtr) const
+
+ d xmlParserAddNodeInfo...
+ d pr extproc('xmlParserAddNodeInfo')
+ d ctxt value like(xmlParserCtxtPtr)
+ d info value like(xmlParserNodeInfoPtr) const
+
+ * External entities handling actually implemented in xmlIO.
+
+ d xmlSetExternalEntityLoader...
+ d pr extproc('xmlSetExternalEntityLoader')
+ d f value like(xmlExternalEntityLoader)
+
+ d xmlGetExternalEntityLoader...
+ d pr extproc('xmlGetExternalEntityLoader')
+ d like(xmlExternalEntityLoader)
+
+ d xmlLoadExternalEntity...
+ d pr extproc('xmlLoadExternalEntity')
+ d like(xmlParserInputPtr)
+ d URL * value options(*string) const char *
+ d ID * value options(*string) const char *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ * Index lookup, actually implemented in the encoding module
+
+ d xmlByteConsumed...
+ d pr 20i 0 extproc('xmlByteConsumed')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ * New set of simpler/more flexible APIs
+
+ * xmlParserOption:
+ *
+ * This is the set of XML parser options that can be passed down
+ * to the xmlReadDoc() and similar calls.
+
+ d xmlParserOption...
+ d s 10i 0 based(######typedef######) enum
+ d XML_PARSE_RECOVER... Recover on errors
+ d c X'00000001'
+ d XML_PARSE_NOENT... Substitute entities
+ d c X'00000002'
+ d XML_PARSE_DTDLOAD... Load external subset
+ d c X'00000004'
+ d XML_PARSE_DTDATTR... Default DTD attrs
+ d c X'00000008'
+ d XML_PARSE_DTDVALID... Validate with DTD
+ d c X'00000010'
+ d XML_PARSE_NOERROR... Suppress err reports
+ d c X'00000020'
+ d XML_PARSE_NOWARNING... Suppr warn reports
+ d c X'00000040'
+ d XML_PARSE_PEDANTIC... Pedantic err report
+ d c X'00000080'
+ d XML_PARSE_NOBLANKS... Remove blank nodes
+ d c X'00000100'
+ d XML_PARSE_SAX1... Use SAX1 internally
+ d c X'00000200'
+ d XML_PARSE_XINCLUDE... Impl XInclude subst
+ d c X'00000400'
+ d XML_PARSE_NONET... Forbid netwrk access
+ d c X'00000800'
+ d XML_PARSE_NODICT... No contxt dict reuse
+ d c X'00001000'
+ d XML_PARSE_NSCLEAN... Rmv redndnt ns decls
+ d c X'00002000'
+ d XML_PARSE_NOCDATA... CDATA as text nodes
+ d c X'00004000'
+ d XML_PARSE_NOXINCNODE... No XINCL START/END
+ d c X'00008000'
+ d XML_PARSE_COMPACT... Compact text nodes
+ d c X'00010000'
+ d XML_PARSE_OLD10... B4 upd5 compatible
+ d c X'00020000'
+ d XML_PARSE_NOBASEFIX... No XINC xml:base fix
+ d c X'00040000'
+ d XML_PARSE_HUGE... No parsing limit
+ d c X'00080000'
+ d XML_PARSE_OLDSAX... Use SAX2 b4 2.7.0
+ d c X'00100000'
+ d XML_PARSE_IGNORE_ENC... No int doc code hint
+ d c X'00200000'
+ d XML_PARSE_BIG_LINES... Big line#-->PSVI fld
+ d c X'00400000'
+
+ d xmlCtxtReset pr extproc('xmlCtxtReset')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlCtxtResetPush...
+ d pr 10i 0 extproc('xmlCtxtResetPush')
+ d ctxt value like(xmlParserCtxtPtr)
+ d chunk * value options(*string) const char *
+ d size 10i 0 value
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+
+ d xmlCtxtUseOptions...
+ d pr 10i 0 extproc('xmlCtxtUseOptions')
+ d ctxt value like(xmlParserCtxtPtr)
+ d options 10i 0 value
+
+ d xmlReadDoc pr extproc('xmlReadDoc')
+ d like(xmlDocPtr)
+ d cur * value options(*string) const xmlChar *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReadFile pr extproc('xmlReadFile')
+ d like(xmlDocPtr)
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReadMemory pr extproc('xmlReadMemory')
+ d like(xmlDocPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReadFd pr extproc('xmlReadFd')
+ d like(xmlDocPtr)
+ d fd 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReadIO pr extproc('xmlReadIO')
+ d like(xmlDocPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlCtxtReadDoc pr extproc('xmlCtxtReadDoc')
+ d like(xmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d cur * value options(*string) const xmlChar *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlCtxtReadFile...
+ d pr extproc('xmlCtxtReadFile')
+ d like(xmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlCtxtReadMemory...
+ d pr extproc('xmlCtxtReadMemory')
+ d like(xmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlCtxtReadFd pr extproc('xmlCtxtReadFd')
+ d like(xmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d fd 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlCtxtReadIO pr extproc('xmlCtxtReadIO')
+ d like(xmlDocPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ * Library wide options
+
+ * xmlFeature:
+ *
+ * Used to examine the existance of features that can be enabled
+ * or disabled at compile-time.
+ * They used to be called XML_FEATURE_xxx but this clashed with Expat
+
+ d xmlFeature s 10i 0 based(######typedef######) enum
+ d XML_WITH_THREAD...
+ d c 1
+ d XML_WITH_TREE c 2
+ d XML_WITH_OUTPUT...
+ d c 3
+ d XML_WITH_PUSH c 4
+ d XML_WITH_READER...
+ d c 5
+ d XML_WITH_PATTERN...
+ d c 6
+ d XML_WITH_WRITER...
+ d c 7
+ d XML_WITH_SAX1 c 8
+ d XML_WITH_FTP c 9
+ d XML_WITH_HTTP c 10
+ d XML_WITH_VALID...
+ d c 11
+ d XML_WITH_HTML c 12
+ d XML_WITH_LEGACY...
+ d c 13
+ d XML_WITH_C14N c 14
+ d XML_WITH_CATALOG...
+ d c 15
+ d XML_WITH_XPATH...
+ d c 16
+ d XML_WITH_XPTR c 17
+ d XML_WITH_XINCLUDE...
+ d c 18
+ d XML_WITH_ICONV...
+ d c 19
+ d XML_WITH_ISO8859X...
+ d c 20
+ d XML_WITH_UNICODE...
+ d c 21
+ d XML_WITH_REGEXP...
+ d c 22
+ d XML_WITH_AUTOMATA...
+ d c 23
+ d XML_WITH_EXPR c 24
+ d XML_WITH_SCHEMAS...
+ d c 25
+ d XML_WITH_SCHEMATRON...
+ d c 26
+ d XML_WITH_MODULES...
+ d c 27
+ d XML_WITH_DEBUG...
+ d c 28
+ d XML_WITH_DEBUG_MEM...
+ d c 29
+ d XML_WITH_DEBUG_RUN...
+ d c 30
+ d XML_WITH_ZLIB c 31
+ d XML_WITH_ICU c 32
+ d XML_WITH_LZMA c 33
+ d XML_WITH_NONE c 99999
+
+ d xmlHasFeature pr 10i 0 extproc('xmlHasFeature')
+ d feature value like(xmlFeature)
+
+ /endif XML_PARSER_H__
diff --git a/os400/libxmlrpg/parserInternals.rpgle b/os400/libxmlrpg/parserInternals.rpgle
new file mode 100644
index 0000000..6942b7d
--- /dev/null
+++ b/os400/libxmlrpg/parserInternals.rpgle
@@ -0,0 +1,575 @@
+ * Summary: internals routines and limits exported by the parser.
+ * Description: this module exports a number of internal parsing routines
+ * they are not really all intended for applications but
+ * can prove useful doing low level processing.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_PARSER_INTERNALS_H__)
+ /define XML_PARSER_INTERNALS_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/HTMLparser"
+ /include "libxmlrpg/chvalid"
+
+ * xmlParserMaxDepth:
+ *
+ * arbitrary depth limit for the XML documents that we allow to
+ * process. This is not a limitation of the parser but a safety
+ * boundary feature, use XML_PARSE_HUGE option to override it.
+
+ d xmlParserMaxDepth...
+ d s 10u 0 import('xmlParserMaxDepth')
+
+ * XML_MAX_TEXT_LENGTH:
+ *
+ * Maximum size allowed for a single text node when building a tree.
+ * This is not a limitation of the parser but a safety boundary feature,
+ * use XML_PARSE_HUGE option to override it.
+ * Introduced in 2.9.0
+
+ d XML_MAX_TEXT_LENGTH...
+ d c 10000000
+
+ * XML_MAX_NAME_LENGTH:
+ *
+ * Maximum size allowed for a markup identitier
+ * This is not a limitation of the parser but a safety boundary feature,
+ * use XML_PARSE_HUGE option to override it.
+ * Note that with the use of parsing dictionaries overriding the limit
+ * may result in more runtime memory usage in face of "unfriendly' content
+ * Introduced in 2.9.0
+
+ d XML_MAX_NAME_LENGTH...
+ d c 50000
+
+ * XML_MAX_DICTIONARY_LIMIT:
+ *
+ * Maximum size allowed by the parser for a dictionary by default
+ * This is not a limitation of the parser but a safety boundary feature,
+ * use XML_PARSE_HUGE option to override it.
+ * Introduced in 2.9.0
+
+ d XML_MAX_DICTIONARY_LIMIT...
+ d c 10000000
+
+ * XML_MAX_LOOKUP_LIMIT:
+ *
+ * Maximum size allowed by the parser for ahead lookup
+ * This is an upper boundary enforced by the parser to avoid bad
+ * behaviour on "unfriendly' content
+ * Introduced in 2.9.0
+
+ d XML_MAX_LOOKUP_LIMIT...
+ d c 10000000
+
+ * XML_MAX_NAMELEN:
+ *
+ * Identifiers can be longer, but this will be more costly
+ * at runtime.
+
+ d XML_MAX_NAMELEN...
+ d c 100
+
+ * INPUT_CHUNK:
+ *
+ * The parser tries to always have that amount of input ready.
+ * One of the point is providing context when reporting errors.
+
+ d INPUT_CHUNK c 250
+
+ * Global variables used for predefined strings.
+
+ d xmlStringText s 4 import('xmlStringText') \0 in 5th byte
+
+ d xmlStringTextNoenc...
+ d s 9 import('xmlStringTextNoenc') \0 in 10th byte
+
+ d xmlStringComment...
+ d s 7 import('xmlStringTextComment') \0 in 8th byte
+
+ * Function to finish the work of the macros where needed.
+
+ d xmlIsLetter pr 10i 0 extproc('xmlIsLetter')
+ d c 10i 0 value
+
+ * Parser context.
+
+ d xmlCreateFileParserCtxt...
+ d pr extproc('xmlCreateFileParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d filename * value options(*string) const char *
+
+ d xmlCreateURLParserCtxt...
+ d pr extproc('xmlCreateURLParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d filename * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlCreateMemoryParserCtxt...
+ d pr extproc('xmlCreateMemoryParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d xmlCreateEntityParserCtxt...
+ d pr extproc('xmlCreateEntityParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d URL * value options(*string) const xmlChar *
+ d ID * value options(*string) const xmlChar *
+ d base * value options(*string) const xmlChar *
+
+ d xmlSwitchEncoding...
+ d pr 10i 0 extproc('xmlSwitchEncoding')
+ d ctxt value like(xmlParserCtxtPtr)
+ d enc value like(xmlCharEncoding)
+
+ d xmlSwitchToEncoding...
+ d pr 10i 0 extproc('xmlSwitchToEncoding')
+ d ctxt value like(xmlParserCtxtPtr)
+ d handler value like(xmlCharEncodingHandlerPtr)
+
+ d xmlSwitchInputEncoding...
+ d pr 10i 0 extproc('xmlSwitchInputEncoding')
+ d ctxt value like(xmlParserCtxtPtr)
+ d input value like(xmlParserInputPtr)
+ d handler value like(xmlCharEncodingHandlerPtr)
+
+ * Input Streams.
+
+ d xmlNewStringInputStream...
+ d pr extproc('xmlNewStringInputStream')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d buffer * value options(*string) const xmlChar *
+
+ d xmlNewEntityInputStream...
+ d pr extproc('xmlNewEntityInputStream')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d entity value like(xmlEntityPtr)
+
+ d xmlPushInput pr 10i 0 extproc('xmlPushInput')
+ d ctxt value like(xmlParserCtxtPtr)
+ d input value like(xmlParserInputPtr)
+
+ d xmlPopInput pr extproc('xmlPopInput')
+ d like(xmlChar)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlFreeInputStream...
+ d pr extproc('xmlFreeInputStream')
+ d input value like(xmlParserInputPtr)
+
+ d xmlNewInputFromFile...
+ d pr extproc('xmlNewInputFromFile')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d filename * value options(*string) const char *
+
+ d xmlNewInputStream...
+ d pr extproc('xmlNewInputStream')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ * Namespaces.
+
+ d xmlSplitQName pr * extproc('xmlSplitQName') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d name * value options(*string) const xmlChar *
+ d prefix * xmlChar *(*)
+
+ * Generic production rules.
+
+ d xmlParseName pr * extproc('xmlParseName') const xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseNmtoken...
+ d pr * extproc('xmlParseNmtoken') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEntityValue...
+ d pr * extproc('xmlParseEntityValue') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d orig * xmlChar *(*)
+
+ d xmlParseAttValue...
+ d pr * extproc('xmlParseAttValue') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseSystemLiteral...
+ d pr * extproc('xmlParseSystemLiteral') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParsePubidLiteral...
+ d pr * extproc('xmlParsePubidLiteral') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseCharData...
+ d pr extproc('xmlParseCharData')
+ d ctxt value like(xmlParserCtxtPtr)
+ d cdata 10i 0 value
+
+ d xmlParseExternalID...
+ d pr * extproc('xmlParseExternalID') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d publicID * xmlChar *(*)
+ d strict 10i 0 value
+
+ d xmlParseComment...
+ d pr extproc('xmlParseComment')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParsePITarget...
+ d pr * extproc('xmlParsePITarget') const xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParsePI pr extproc('xmlParsePI')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseNotationDecl...
+ d pr extproc('xmlParseNotationDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEntityDecl...
+ d pr extproc('xmlParseEntityDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseDefaultDecl...
+ d pr 10i 0 extproc('xmlParseDefaultDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+ d value * xmlChar *(*)
+
+ d xmlParseNotationType...
+ d pr extproc('xmlParseNotationType')
+ d like(xmlEnumerationPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEnumerationType...
+ d pr extproc('xmlParseEnumerationType')
+ d like(xmlEnumerationPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEnumeratedType...
+ d pr 10i 0 extproc('xmlParseEnumeratedType')
+ d ctxt value like(xmlParserCtxtPtr)
+ d tree * value xmlEnumerationPtr *
+
+ d xmlParseAttributeType...
+ d pr 10i 0 extproc('xmlParseAttributeType')
+ d ctxt value like(xmlParserCtxtPtr)
+ d tree * value xmlEnumerationPtr *
+
+ d xmlParseAttributeListDecl...
+ d pr extproc('xmlParseAttributeListDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseElementMixedContentDecl...
+ d pr extproc(
+ d 'xmlParseElementMixedContentDecl')
+ d like(xmlElementContentPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d inputchk 10i 0 value
+
+ d xmlParseElementChildrenContentDecl...
+ d pr extproc(
+ d 'xmlParseElementChildrenContentDecl')
+ d like(xmlElementContentPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d inputchk 10i 0 value
+
+ d xmlParseElementContentDecl...
+ d pr 10i 0 extproc('xmlParseElementContentDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+ d name * value options(*string) const xmlChar *
+ d result * value xmlElementContentPtr
+ d *
+
+ d xmlParseElementDecl...
+ d pr 10i 0 extproc('xmlParseElementDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseMarkupDecl...
+ d pr extproc('xmlParseMarkupDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseCharRef...
+ d pr 10i 0 extproc('xmlParseCharRef')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEntityRef...
+ d pr extproc('xmlParseEntityRef')
+ d like(xmlEntityPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseReference...
+ d pr extproc('xmlParseReference')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParsePEReference...
+ d pr extproc('xmlParsePEReference')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseDocTypeDecl...
+ d pr extproc('xmlParseDocTypeDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ /if defined(LIBXML_SAX1_ENABLED)
+ d xmlParseAttribute...
+ d pr * extproc('xmlParseAttribute') const xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d value * xmlChar *(*)
+
+ d xmlParseStartTag...
+ d pr * extproc('xmlParseStartTag') const xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEndTag pr extproc('xmlParseEndTag')
+ d ctxt value like(xmlParserCtxtPtr)
+ /endif LIBXML_SAX1_ENABLED
+
+ d xmlParseCDSect pr extproc('xmlParseCDSect')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseContent...
+ d pr extproc('xmlParseContent')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseElement...
+ d pr extproc('xmlParseElement')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseVersionNum...
+ d pr * extproc('xmlParseVersionNum') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseVersionInfo...
+ d pr * extproc('xmlParseVersionInfo') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEncName...
+ d pr * extproc('xmlParseEncName') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseEncodingDecl...
+ d pr * extproc('xmlParseEncodingDecl') const xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseSDDecl pr 10i 0 extproc('xmlParseSDDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseXMLDecl...
+ d pr extproc('xmlParseXMLDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseTextDecl...
+ d pr extproc('xmlParseTextDecl')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseMisc pr extproc('xmlParseMisc')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseExternalSubset...
+ d pr extproc('xmlParseExternalSubset')
+ d ctxt value like(xmlParserCtxtPtr)
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ * XML_SUBSTITUTE_NONE:
+ *
+ * If no entities need to be substituted.
+
+ d XML_SUBSTITUTE_NONE...
+ d c 0
+
+ * XML_SUBSTITUTE_REF:
+ *
+ * Whether general entities need to be substituted.
+
+ d XML_SUBSTITUTE_REF...
+ d c 1
+
+ * XML_SUBSTITUTE_PEREF:
+ *
+ * Whether parameter entities need to be substituted.
+
+ d XML_SUBSTITUTE_PEREF...
+ d c 2
+
+ * XML_SUBSTITUTE_BOTH:
+ *
+ * Both general and parameter entities need to be substituted.
+
+ d XML_SUBSTITUTE_BOTH...
+ d c 3
+
+ d xmlStringDecodeEntities...
+ d pr * extproc('xmlStringDecodeEntities') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d str * value options(*string) const xmlChar *
+ d what 10i 0 value
+ d end value like(xmlChar)
+ d end2 value like(xmlChar)
+ d end3 value like(xmlChar)
+
+ d xmlStringLenDecodeEntities...
+ d pr * extproc('xmlStringLenDecodeEntities')xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d str * value options(*string) const xmlChar *
+ d len 10i 0 value
+ d what 10i 0 value
+ d end value like(xmlChar)
+ d end2 value like(xmlChar)
+ d end3 value like(xmlChar)
+
+ * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
+
+ d nodePush pr 10i 0 extproc('nodePush')
+ d ctxt value like(xmlParserCtxtPtr)
+ d value value like(xmlNodePtr)
+
+ d nodePop pr extproc('nodePop')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d inputPush pr 10i 0 extproc('inputPush')
+ d ctxt value like(xmlParserCtxtPtr)
+ d value value like(xmlParserInputPtr)
+
+ d inputPop pr extproc('inputPop')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d namePop pr * extproc('namePop') const xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d namePush pr 10i 0 extproc('namePush')
+ d ctxt value like(xmlParserCtxtPtr)
+ d value * value options(*string) const xmlChar *
+
+ * other commodities shared between parser.c and parserInternals.
+
+ d xmlSkipBlankChars...
+ d pr 10i 0 extproc('xmlSkipBlankChars')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlStringCurrentChar...
+ d pr 10i 0 extproc('xmlStringCurrentChar')
+ d ctxt value like(xmlParserCtxtPtr)
+ d cur * value options(*string) const xmlChar *
+ d len * value int *
+
+ d xmlParserHandlePEReference...
+ d pr extproc('xmlParserHandlePEReference')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlCheckLanguageID...
+ d pr 10i 0 extproc('xmlCheckLanguageID')
+ d lang * value options(*string) const xmlChar *
+
+ * Really core function shared with HTML parser.
+
+ d xmlCurrentChar pr 10i 0 extproc('xmlCurrentChar')
+ d ctxt value like(xmlParserCtxtPtr)
+ d len * value int *
+
+ d xmlCopyCharMultiByte...
+ d pr 10i 0 extproc('xmlCopyCharMultiByte')
+ d out * value options(*string) xmlChar *
+ d val 10i 0 value
+
+ d xmlCopyChar pr 10i 0 extproc('xmlCopyChar')
+ d len 10i 0 value
+ d out * value options(*string) xmlChar *
+ d val 10i 0 value
+
+ d xmlNextChar pr extproc('xmlNextChar')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParserInputShrink...
+ d pr extproc('xmlParserInputShrink')
+ d in value like(xmlParserInputPtr)
+
+ /if defined(LIBXML_HTML_ENABLED)
+
+ * Actually comes from the HTML parser but launched from the init stuff.
+
+ d htmlInitAutoClose...
+ d pr extproc('htmlInitAutoClose')
+
+ d htmlCreateFileParserCtxt...
+ d pr extproc('htmlCreateFileParserCtxt')
+ d like(htmlParserCtxtPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ /endif
+
+ * Specific function to keep track of entities references
+ * and used by the XSLT debugger.
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+ * xmlEntityReferenceFunc:
+ * @ent: the entity
+ * @firstNode: the fist node in the chunk
+ * @lastNode: the last nod in the chunk
+ *
+ * Callback function used when one needs to be able to track back the
+ * provenance of a chunk of nodes inherited from an entity replacement.
+
+ d xmlEntityReferenceFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ d xmlSetEntityReferenceFunc...
+ d pr extproc('xmlSetEntityReferenceFunc')
+ d func value like(xmlEntityReferenceFunc)
+
+ d xmlParseQuotedString...
+ d pr * extproc('xmlParseQuotedString') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParseNamespace...
+ d pr extproc('xmlParseNamespace')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlNamespaceParseNSDef...
+ d pr * extproc('xmlNamespaceParseNSDef') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlScanName pr * extproc('xmlScanName') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlNamespaceParseNCName...
+ d pr * extproc('xmlNamespaceParseNCName') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlParserHandleReference...
+ d pr extproc('xmlParserHandleReference')
+ d ctxt value like(xmlParserCtxtPtr)
+
+ d xmlNamespaceParseQName...
+ d pr * extproc('xmlNamespaceParseQName') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d prefix * xmlChar *(*)
+
+ * Entities
+
+ d xmlDecodeEntities...
+ d pr * extproc('xmlDecodeEntities') xmlChar *
+ d ctxt value like(xmlParserCtxtPtr)
+ d len 10i 0 value
+ d what 10i 0 value
+ d end value like(xmlChar)
+ d end2 value like(xmlChar)
+ d end3 value like(xmlChar)
+
+ d xmlHandleEntity...
+ d pr extproc('xmlHandleEntity')
+ d ctxt value like(xmlParserCtxtPtr)
+ d entity value like(xmlEntityPtr)
+ /endif LIBXML_LEGACY_ENABLD
+
+ /endif
diff --git a/os400/libxmlrpg/pattern.rpgle b/os400/libxmlrpg/pattern.rpgle
new file mode 100644
index 0000000..2e881e5
--- /dev/null
+++ b/os400/libxmlrpg/pattern.rpgle
@@ -0,0 +1,117 @@
+ * Summary: pattern expression handling
+ * Description: allows to compile and test pattern expressions for nodes
+ * either in a tree or based on a parser state.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_PATTERN_H__)
+ /define XML_PATTERN_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/dict"
+
+ /if defined(LIBXML_PATTERN_ENABLED)
+
+ * xmlPattern:
+ *
+ * A compiled (XPath based) pattern to select nodes
+
+ d xmlPatternPtr...
+ d s * based(######typedef######)
+
+ * xmlPatternFlags:
+ *
+ * This is the set of options affecting the behaviour of pattern
+ * matching with this module
+
+ d xmlPatternFlags...
+ d s 10i 0 based(######typedef######) enum
+ d XML_PATTERN_DEFAULT... Simple pattern match
+ d c X'0000'
+ d XML_PATTERN_XPATH... Std XPath pattern
+ d c X'0001'
+ d XML_PATTERN_XSSEL... Schm sel XPth subset
+ d c X'0002'
+ d XML_PATTERN_XSFIELD... Schm fld XPth subset
+ d c X'0004'
+
+ d xmlFreePattern pr extproc('xmlFreePattern')
+ d comp value like(xmlPatternPtr)
+
+ d xmlFreePatternList...
+ d pr extproc('xmlFreePatternList')
+ d comp value like(xmlPatternPtr)
+
+ d xmlPatterncompile...
+ d pr extproc('xmlPatterncompile')
+ d like(xmlPatternPtr)
+ d pattern * value options(*string) const xmlChar *
+ d dict * value xmlDict *
+ d flags 10i 0 value
+ d namespaces * const xmlChar *(*)
+
+ d xmlPatternMatch...
+ d pr 10i 0 extproc('xmlPatternMatch')
+ d comp value like(xmlPatternPtr)
+ d node value like(xmlNodePtr)
+
+ * streaming interfaces
+
+ d xmlStreamCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlPatternStreamable...
+ d pr 10i 0 extproc('xmlPatternStreamable')
+ d comp value like(xmlPatternPtr)
+
+ d xmlPatternMaxDepth...
+ d pr 10i 0 extproc('xmlPatternMaxDepth')
+ d comp value like(xmlPatternPtr)
+
+ d xmlPatternMinDepth...
+ d pr 10i 0 extproc('xmlPatternMinDepth')
+ d comp value like(xmlPatternPtr)
+
+ d xmlPatternFromRoot...
+ d pr 10i 0 extproc('xmlPatternFromRoot')
+ d comp value like(xmlPatternPtr)
+
+ d xmlPatternGetStreamCtxt...
+ d pr extproc('xmlPatternGetStreamCtxt')
+ d like(xmlStreamCtxtPtr)
+ d comp value like(xmlPatternPtr)
+
+ d xmlFreeStreamCtxt...
+ d pr extproc('xmlFreeStreamCtxt')
+ d stream value like(xmlStreamCtxtPtr)
+
+ d xmlStreamPushNode...
+ d pr 10i 0 extproc('xmlStreamPushNode')
+ d stream value like(xmlStreamCtxtPtr)
+ d name * value options(*string) const xmlChar *
+ d ns * value options(*string) const xmlChar *
+ d nodeType 10i 0 value
+
+ d xmlStreamPush pr 10i 0 extproc('xmlStreamPush')
+ d stream value like(xmlStreamCtxtPtr)
+ d name * value options(*string) const xmlChar *
+ d ns * value options(*string) const xmlChar *
+
+ d xmlStreamPushAttr...
+ d pr 10i 0 extproc('xmlStreamPushAttr')
+ d stream value like(xmlStreamCtxtPtr)
+ d name * value options(*string) const xmlChar *
+ d ns * value options(*string) const xmlChar *
+
+ d xmlStreamPop pr 10i 0 extproc('xmlStreamPop')
+ d stream value like(xmlStreamCtxtPtr)
+
+ d xmlStreamWantsAnyNode...
+ d pr 10i 0 extproc('xmlStreamWantsAnyNode')
+ d stream value like(xmlStreamCtxtPtr)
+
+ /endif LIBXML_PATTERN_ENBLD
+ /endif XML_PATTERN_H__
diff --git a/os400/libxmlrpg/relaxng.rpgle b/os400/libxmlrpg/relaxng.rpgle
new file mode 100644
index 0000000..af662aa
--- /dev/null
+++ b/os400/libxmlrpg/relaxng.rpgle
@@ -0,0 +1,297 @@
+ * Summary: implementation of the Relax-NG validation
+ * Description: implementation of the Relax-NG validation
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_RELAX_NG__)
+ /define XML_RELAX_NG__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/hash"
+ /include "libxmlrpg/xmlstring"
+
+ /if defined(LIBXML_SCHEMAS_ENABLED)
+
+ d xmlRelaxNGPtr s * based(######typedef######)
+
+ * xmlRelaxNGValidityErrorFunc:
+ * @ctx: the validation context
+ * @msg: the message
+ * @...: extra arguments
+ *
+ * Signature of an error callback from a Relax-NG validation
+
+ d xmlRelaxNGValidityErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlRelaxNGValidityWarningFunc:
+ * @ctx: the validation context
+ * @msg: the message
+ * @...: extra arguments
+ *
+ * Signature of a warning callback from a Relax-NG validation
+
+ d xmlRelaxNGValidityWarningFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * A schemas validation context
+
+ d xmlRelaxNGParserCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlRelaxNGValidCtxtPtr...
+ d s * based(######typedef######)
+
+ * xmlRelaxNGValidErr:
+ *
+ * List of possible Relax NG validation errors
+
+ d xmlRelaxNGValidErr...
+ d s 10i 0 based(######typedef######) enum
+ d XML_RELAXNG_OK...
+ d c 0
+ d XML_RELAXNG_ERR_MEMORY...
+ d c 1
+ d XML_RELAXNG_ERR_TYPE...
+ d c 2
+ d XML_RELAXNG_ERR_TYPEVAL...
+ d c 3
+ d XML_RELAXNG_ERR_DUPID...
+ d c 4
+ d XML_RELAXNG_ERR_TYPECMP...
+ d c 5
+ d XML_RELAXNG_ERR_NOSTATE...
+ d c 6
+ d XML_RELAXNG_ERR_NODEFINE...
+ d c 7
+ d XML_RELAXNG_ERR_LISTEXTRA...
+ d c 8
+ d XML_RELAXNG_ERR_LISTEMPTY...
+ d c 9
+ d XML_RELAXNG_ERR_INTERNODATA...
+ d c 10
+ d XML_RELAXNG_ERR_INTERSEQ...
+ d c 11
+ d XML_RELAXNG_ERR_INTEREXTRA...
+ d c 12
+ d XML_RELAXNG_ERR_ELEMNAME...
+ d c 13
+ d XML_RELAXNG_ERR_ATTRNAME...
+ d c 14
+ d XML_RELAXNG_ERR_ELEMNONS...
+ d c 15
+ d XML_RELAXNG_ERR_ATTRNONS...
+ d c 16
+ d XML_RELAXNG_ERR_ELEMWRONGNS...
+ d c 17
+ d XML_RELAXNG_ERR_ATTRWRONGNS...
+ d c 18
+ d XML_RELAXNG_ERR_ELEMEXTRANS...
+ d c 19
+ d XML_RELAXNG_ERR_ATTREXTRANS...
+ d c 20
+ d XML_RELAXNG_ERR_ELEMNOTEMPTY...
+ d c 21
+ d XML_RELAXNG_ERR_NOELEM...
+ d c 22
+ d XML_RELAXNG_ERR_NOTELEM...
+ d c 23
+ d XML_RELAXNG_ERR_ATTRVALID...
+ d c 24
+ d XML_RELAXNG_ERR_CONTENTVALID...
+ d c 25
+ d XML_RELAXNG_ERR_EXTRACONTENT...
+ d c 26
+ d XML_RELAXNG_ERR_INVALIDATTR...
+ d c 27
+ d XML_RELAXNG_ERR_DATAELEM...
+ d c 28
+ d XML_RELAXNG_ERR_VALELEM...
+ d c 29
+ d XML_RELAXNG_ERR_LISTELEM...
+ d c 30
+ d XML_RELAXNG_ERR_DATATYPE...
+ d c 31
+ d XML_RELAXNG_ERR_VALUE...
+ d c 32
+ d XML_RELAXNG_ERR_LIST...
+ d c 33
+ d XML_RELAXNG_ERR_NOGRAMMAR...
+ d c 34
+ d XML_RELAXNG_ERR_EXTRADATA...
+ d c 35
+ d XML_RELAXNG_ERR_LACKDATA...
+ d c 36
+ d XML_RELAXNG_ERR_INTERNAL...
+ d c 37
+ d XML_RELAXNG_ERR_ELEMWRONG...
+ d c 38
+ d XML_RELAXNG_ERR_TEXTWRONG...
+ d c 39
+
+ * xmlRelaxNGParserFlags:
+ *
+ * List of possible Relax NG Parser flags
+
+ d xmlRelaxNGParserFlag...
+ d s 10i 0 based(######typedef######) enum
+ d XML_RELAXNGP_NONE...
+ d c 0
+ d XML_RELAXNGP_FREE_DOC...
+ d c 1
+ d XML_RELAXNGP_CRNG...
+ d c 2
+
+ d xmlRelaxNGInitTypes...
+ d pr 10i 0 extproc('xmlRelaxNGInitTypes')
+
+ d xmlRelaxNGCleanupTypes...
+ d pr extproc('xmlRelaxNGCleanupTypes')
+
+
+ * Interfaces for parsing.
+
+ d xmlRelaxNGNewParserCtxt...
+ d pr extproc('xmlRelaxNGNewParserCtxt')
+ d like(xmlRelaxNGParserCtxtPtr)
+ d URL * value options(*string) const char *
+
+ d xmlRelaxNGNewMemParserCtxt...
+ d pr extproc('xmlRelaxNGNewMemParserCtxt')
+ d like(xmlRelaxNGParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d xmlRelaxNGNewDocParserCtxt...
+ d pr extproc('xmlRelaxNGNewDocParserCtxt')
+ d like(xmlRelaxNGParserCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlRelaxParserSetFlag...
+ d pr 10i 0 extproc('xmlRelaxParserSetFlag')
+ d ctxt value like(xmlRelaxNGParserCtxtPtr)
+ d flag 10i 0 value
+
+ d xmlRelaxNGFreeParserCtxt...
+ d pr extproc('xmlRelaxNGFreeParserCtxt')
+ d ctxt value like(xmlRelaxNGParserCtxtPtr)
+
+ d xmlRelaxNGSetParserErrors...
+ d pr extproc('xmlRelaxNGSetParserErrors')
+ d ctxt value like(xmlRelaxNGParserCtxtPtr)
+ d err value
+ d like(xmlRelaxNGValidityErrorFunc)
+ d warn value
+ d like(xmlRelaxNGValidityWarningFunc)
+ d ctx * value void *
+
+ d xmlRelaxNGGetParserErrors...
+ d pr 10i 0 extproc('xmlRelaxNGGetParserErrors')
+ d ctxt value like(xmlRelaxNGParserCtxtPtr)
+ d err like(xmlRelaxNGValidityErrorFunc)
+ d warn like(xmlRelaxNGValidityWarningFunc)
+ d ctx * void *(*)
+
+ d xmlRelaxNGSetParserStructuredErrors...
+ d pr extproc(
+ d 'xmlRelaxNGSetParserStructuredErrors'
+ d )
+ d ctxt value like(xmlRelaxNGParserCtxtPtr)
+ d serror value like(xmlStructuredErrorFunc)
+ d ctx * value void *
+
+ d xmlRelaxNGParse...
+ d pr extproc('xmlRelaxNGParse')
+ d like(xmlRelaxNGPtr)
+ d ctxt value like(xmlRelaxNGParserCtxtPtr)
+
+ d xmlRelaxNGFree pr extproc('xmlRelaxNGFree')
+ d schema value like(xmlRelaxNGPtr)
+
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlRelaxNGDump pr extproc('xmlRelaxNGDump')
+ d output * value FILE *
+ d schema value like(xmlRelaxNGPtr)
+
+ d xmlRelaxNGDumpTree...
+ d pr extproc('xmlRelaxNGDumpTree')
+ d output * value FILE *
+ d schema value like(xmlRelaxNGPtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * Interfaces for validating
+
+ d xmlRelaxNGSetValidErrors...
+ d pr extproc('xmlRelaxNGSetValidErrors')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d err value
+ d like(xmlRelaxNGValidityErrorFunc)
+ d warn value
+ d like(xmlRelaxNGValidityWarningFunc)
+ d ctx * value void *
+
+ d xmlRelaxNGGetValidErrors...
+ d pr 10i 0 extproc('xmlRelaxNGGetValidErrors')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d err like(xmlRelaxNGValidityErrorFunc)
+ d warn like(xmlRelaxNGValidityWarningFunc)
+ d ctx * value void * *
+
+ d xmlRelaxNGSetValidStructuredErrors...
+ d pr extproc(
+ d 'xmlRelaxNGSetValidStructuredErrors')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d serror value like(xmlStructuredErrorFunc)
+ d ctx * value void *
+
+ d xmlRelaxNGNewValidCtxt...
+ d pr extproc('xmlRelaxNGNewValidCtxt')
+ d like(xmlRelaxNGValidCtxtPtr)
+ d schema value like(xmlRelaxNGPtr)
+
+ d xmlRelaxNGFreeValidCtxt...
+ d pr extproc('xmlRelaxNGFreeValidCtxt')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+
+ d xmlRelaxNGValidateDoc...
+ d pr 10i 0 extproc('xmlRelaxNGValidateDoc')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ * Interfaces for progressive validation when possible
+
+ d xmlRelaxNGValidatePushElement...
+ d pr 10i 0 extproc(
+ d 'xmlRelaxNGValidatePushElement')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlRelaxNGValidatePushCData...
+ d pr 10i 0 extproc(
+ d 'xmlRelaxNGValidatePushCData')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d data * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlRelaxNGValidatePopElement...
+ d pr 10i 0 extproc(
+ d 'xmlRelaxNGValidatePopElement')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlRelaxNGValidateFullElement...
+ d pr 10i 0 extproc(
+ d 'xmlRelaxNGValidateFullElement')
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+
+ /endif LIBXML_SCHEMAS_ENBLD
+ /endif XML_RELAX_NG__
diff --git a/os400/libxmlrpg/schemasInternals.rpgle b/os400/libxmlrpg/schemasInternals.rpgle
new file mode 100644
index 0000000..edeea5b
--- /dev/null
+++ b/os400/libxmlrpg/schemasInternals.rpgle
@@ -0,0 +1,1137 @@
+ * Summary: internal interfaces for XML Schemas
+ * Description: internal interfaces for the XML Schemas handling
+ * and schema validity checking
+ * The Schemas development is a Work In Progress.
+ * Some of those interfaces are not garanteed to be API or
+ * ABI stable !
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_SCHEMA_INTERNALS_H__)
+ /define XML_SCHEMA_INTERNALS_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_SCHEMAS_ENABLED)
+ /include "libxmlrpg/xmlregexp"
+ /include "libxmlrpg/hash"
+ /include "libxmlrpg/dict"
+
+ d xmlSchemaValType...
+ d s 10i 0 based(######typedef######) enum
+ d XML_SCHEMAS_UNKNOWN...
+ d c 0
+ d XML_SCHEMAS_STRING...
+ d c 1
+ d XML_SCHEMAS_NORMSTRING...
+ d c 2
+ d XML_SCHEMAS_DECIMAL...
+ d c 3
+ d XML_SCHEMAS_TIME...
+ d c 4
+ d XML_SCHEMAS_GDAY...
+ d c 5
+ d XML_SCHEMAS_GMONTH...
+ d c 6
+ d XML_SCHEMAS_GMONTHDAY...
+ d c 7
+ d XML_SCHEMAS_GYEAR...
+ d c 8
+ d XML_SCHEMAS_GYEARMONTH...
+ d c 9
+ d XML_SCHEMAS_DATE...
+ d c 10
+ d XML_SCHEMAS_DATETIME...
+ d c 11
+ d XML_SCHEMAS_DURATION...
+ d c 12
+ d XML_SCHEMAS_FLOAT...
+ d c 13
+ d XML_SCHEMAS_DOUBLE...
+ d c 14
+ d XML_SCHEMAS_BOOLEAN...
+ d c 15
+ d XML_SCHEMAS_TOKEN...
+ d c 16
+ d XML_SCHEMAS_LANGUAGE...
+ d c 17
+ d XML_SCHEMAS_NMTOKEN...
+ d c 18
+ d XML_SCHEMAS_NMTOKENS...
+ d c 19
+ d XML_SCHEMAS_NAME...
+ d c 20
+ d XML_SCHEMAS_QNAME...
+ d c 21
+ d XML_SCHEMAS_NCNAME...
+ d c 22
+ d XML_SCHEMAS_ID...
+ d c 23
+ d XML_SCHEMAS_IDREF...
+ d c 24
+ d XML_SCHEMAS_IDREFS...
+ d c 25
+ d XML_SCHEMAS_ENTITY...
+ d c 26
+ d XML_SCHEMAS_ENTITIES...
+ d c 27
+ d XML_SCHEMAS_NOTATION...
+ d c 28
+ d XML_SCHEMAS_ANYURI...
+ d c 29
+ d XML_SCHEMAS_INTEGER...
+ d c 30
+ d XML_SCHEMAS_NPINTEGER...
+ d c 31
+ d XML_SCHEMAS_NINTEGER...
+ d c 32
+ d XML_SCHEMAS_NNINTEGER...
+ d c 33
+ d XML_SCHEMAS_PINTEGER...
+ d c 34
+ d XML_SCHEMAS_INT...
+ d c 35
+ d XML_SCHEMAS_UINT...
+ d c 36
+ d XML_SCHEMAS_LONG...
+ d c 37
+ d XML_SCHEMAS_ULONG...
+ d c 38
+ d XML_SCHEMAS_SHORT...
+ d c 39
+ d XML_SCHEMAS_USHORT...
+ d c 40
+ d XML_SCHEMAS_BYTE...
+ d c 41
+ d XML_SCHEMAS_UBYTE...
+ d c 42
+ d XML_SCHEMAS_HEXBINARY...
+ d c 43
+ d XML_SCHEMAS_BASE64BINARY...
+ d c 44
+ d XML_SCHEMAS_ANYTYPE...
+ d c 45
+ d XML_SCHEMAS_ANYSIMPLETYPE...
+ d c 46
+
+ * XML Schemas defines multiple type of types.
+
+ d xmlSchemaTypeType...
+ d s 10i 0 based(######typedef######) enum
+ d XML_SCHEMA_TYPE_BASIC... A builtin datatype
+ d c 1
+ d XML_SCHEMA_TYPE_ANY...
+ d c 2
+ d XML_SCHEMA_TYPE_FACET...
+ d c 3
+ d XML_SCHEMA_TYPE_SIMPLE...
+ d c 4
+ d XML_SCHEMA_TYPE_COMPLEX...
+ d c 5
+ d XML_SCHEMA_TYPE_SEQUENCE...
+ d c 6
+ d XML_SCHEMA_TYPE_CHOICE...
+ d c 7
+ d XML_SCHEMA_TYPE_ALL...
+ d c 8
+ d XML_SCHEMA_TYPE_SIMPLE_CONTENT...
+ d c 9
+ d XML_SCHEMA_TYPE_COMPLEX_CONTENT...
+ d c 10
+ d XML_SCHEMA_TYPE_UR...
+ d c 11
+ d XML_SCHEMA_TYPE_RESTRICTION...
+ d c 12
+ d XML_SCHEMA_TYPE_EXTENSION...
+ d c 13
+ d XML_SCHEMA_TYPE_ELEMENT...
+ d c 14
+ d XML_SCHEMA_TYPE_ATTRIBUTE...
+ d c 15
+ d XML_SCHEMA_TYPE_ATTRIBUTEGROUP...
+ d c 16
+ d XML_SCHEMA_TYPE_GROUP...
+ d c 17
+ d XML_SCHEMA_TYPE_NOTATION...
+ d c 18
+ d XML_SCHEMA_TYPE_LIST...
+ d c 19
+ d XML_SCHEMA_TYPE_UNION...
+ d c 20
+ d XML_SCHEMA_TYPE_ANY_ATTRIBUTE...
+ d c 21
+ d XML_SCHEMA_TYPE_IDC_UNIQUE...
+ d c 22
+ d XML_SCHEMA_TYPE_IDC_KEY...
+ d c 23
+ d XML_SCHEMA_TYPE_IDC_KEYREF...
+ d c 24
+ d XML_SCHEMA_TYPE_PARTICLE...
+ d c 25
+ d XML_SCHEMA_TYPE_ATTRIBUTE_USE...
+ d c 26
+ d XML_SCHEMA_FACET_MININCLUSIVE...
+ d c 1000
+ d XML_SCHEMA_FACET_MINEXCLUSIVE...
+ d c 1001
+ d XML_SCHEMA_FACET_MAXINCLUSIVE...
+ d c 1002
+ d XML_SCHEMA_FACET_MAXEXCLUSIVE...
+ d c 1003
+ d XML_SCHEMA_FACET_TOTALDIGITS...
+ d c 1004
+ d XML_SCHEMA_FACET_FRACTIONDIGITS...
+ d c 1005
+ d XML_SCHEMA_FACET_PATTERN...
+ d c 1006
+ d XML_SCHEMA_FACET_ENUMERATION...
+ d c 1007
+ d XML_SCHEMA_FACET_WHITESPACE...
+ d c 1008
+ d XML_SCHEMA_FACET_LENGTH...
+ d c 1009
+ d XML_SCHEMA_FACET_MAXLENGTH...
+ d c 1010
+ d XML_SCHEMA_FACET_MINLENGTH...
+ d c 1011
+ d XML_SCHEMA_EXTRA_QNAMEREF...
+ d c 2000
+ d XML_SCHEMA_EXTRA_ATTR_USE_PROHIB...
+ d c 2001
+
+ d xmlSchemaContentType...
+ d s 10i 0 based(######typedef######) enum
+ d XML_SCHEMA_CONTENT_UNKNOWN...
+ d c 0
+ d XML_SCHEMA_CONTENT_EMPTY...
+ d c 1
+ d XML_SCHEMA_CONTENT_ELEMENTS...
+ d c 2
+ d XML_SCHEMA_CONTENT_MIXED...
+ d c 3
+ d XML_SCHEMA_CONTENT_SIMPLE...
+ d c 4
+ d XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS... Obsolete
+ d c 5
+ d XML_SCHEMA_CONTENT_BASIC...
+ d c 6
+ d XML_SCHEMA_CONTENT_ANY...
+ d c 7
+
+ d xmlSchemaValPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaTypePtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaFacetPtr...
+ d s * based(######typedef######)
+
+ * Annotation
+
+ d xmlSchemaAnnotPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaAnnot ds based(xmlSchemaAnnotPtr)
+ d align qualified
+ d next like(xmlSchemaAnnotPtr)
+ d content like(xmlNodePtr) The annotation
+
+ * XML_SCHEMAS_ANYATTR_SKIP:
+ *
+ * Skip unknown attribute from validation
+ * Obsolete, not used anymore.
+
+ d XML_SCHEMAS_ANYATTR_SKIP...
+ d c 1
+
+ * XML_SCHEMAS_ANYATTR_LAX:
+ *
+ * Ignore validation non definition on attributes
+ * Obsolete, not used anymore.
+
+ d XML_SCHEMAS_ANYATTR_LAX...
+ d c 2
+
+ * XML_SCHEMAS_ANYATTR_STRICT:
+ *
+ * Apply strict validation rules on attributes
+ * Obsolete, not used anymore.
+
+ d XML_SCHEMAS_ANYATTR_STRICT...
+ d c 3
+
+ * XML_SCHEMAS_ANY_SKIP:
+ *
+ * Skip unknown attribute from validation
+
+ d XML_SCHEMAS_ANY_SKIP...
+ d c 1
+
+ * XML_SCHEMAS_ANY_LAX:
+ *
+ * Used by wildcards.
+ * Validate if type found, don't worry if not found
+
+ d XML_SCHEMAS_ANY_LAX...
+ d c 2
+
+ * XML_SCHEMAS_ANY_STRICT:
+ *
+ * Used by wildcards.
+ * Apply strict validation rules
+
+ d XML_SCHEMAS_ANY_STRICT...
+ d c 3
+
+ * XML_SCHEMAS_ATTR_USE_PROHIBITED:
+ *
+ * Used by wildcards.
+ * The attribute is prohibited.
+
+ d XML_SCHEMAS_ATTR_USE_PROHIBITED...
+ d c 0
+
+ * XML_SCHEMAS_ATTR_USE_REQUIRED:
+ *
+ * The attribute is required.
+
+ d XML_SCHEMAS_ATTR_USE_REQUIRED...
+ d c 1
+
+ * XML_SCHEMAS_ATTR_USE_OPTIONAL:
+ *
+ * The attribute is optional.
+
+ d XML_SCHEMAS_ATTR_USE_OPTIONAL...
+ d c 2
+
+ * XML_SCHEMAS_ATTR_GLOBAL:
+ *
+ * allow elements in no namespace
+
+ d XML_SCHEMAS_ATTR_GLOBAL...
+ d c X'0001'
+
+ * XML_SCHEMAS_ATTR_NSDEFAULT:
+ *
+ * allow elements in no namespace
+
+ d XML_SCHEMAS_ATTR_NSDEFAULT...
+ d c X'0080'
+
+ * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
+ *
+ * this is set when the "type" and "ref" references
+ * have been resolved.
+
+ d XML_SCHEMAS_ATTR_INTERNAL_RESOLVED...
+ d c X'0100'
+
+ * XML_SCHEMAS_ATTR_FIXED:
+ *
+ * the attribute has a fixed value
+
+ d XML_SCHEMAS_ATTR_FIXED...
+ d c X'0200'
+
+ * xmlSchemaAttribute:
+ * An attribute definition.
+
+ d xmlSchemaAttributePtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaAttribute...
+ d ds based(xmlSchemaAttributePtr)
+ d align qualified
+ d type like(xmlSchemaTypeType)
+ d next like(xmlSchemaAttributePtr) Next attribute
+ d name * const xmlChar *
+ d id * const xmlChar *
+ d ref * const xmlChar *
+ d refNs * const xmlChar *
+ d typeName * const xmlChar *
+ d typeNs * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ *
+ d base like(xmlSchemaTypePtr) Deprecated
+ d occurs 10i 0 Deprecated
+ d defValue * const xmlChar *
+ d subtypes like(xmlSchemaTypePtr) The type definition
+ d node like(xmlNodePtr)
+ d targetNamespace... const xmlChar *
+ d *
+ d flags 10i 0
+ d refPrefix * const xmlChar *
+ d defVal like(xmlSchemaValPtr) Compiled constraint
+ d refDecl like(xmlSchemaAttributePtr) Deprecated
+
+ * xmlSchemaAttributeLink:
+ * Used to build a list of attribute uses on complexType definitions.
+ * WARNING: Deprecated; not used.
+
+ d xmlSchemaAttributeLinkPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaAttributeLink...
+ d ds based(xmlSchemaAttributeLinkPtr)
+ d align qualified
+ d next like(xmlSchemaAttributeLinkPtr) The next link
+ d attr like(xmlSchemaAttributePtr) The linked attribute
+
+ * XML_SCHEMAS_WILDCARD_COMPLETE:
+ *
+ * If the wildcard is complete.
+
+ d XML_SCHEMAS_WILDCARD_COMPLETE...
+ d c X'0001'
+
+ * xmlSchemaCharValueLink:
+ * Used to build a list of namespaces on wildcards.
+
+ d xmlSchemaWildcardNsPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaWildcardNs...
+ d ds based(xmlSchemaWildcardNsPtr)
+ d align qualified
+ d next like(xmlSchemaWildcardNsPtr) The next link
+ d value * const xmlChar *
+
+ * xmlSchemaWildcard.
+ * A wildcard.
+
+ d xmlSchemaWildcardPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaWildcard...
+ d ds based(xmlSchemaWildcardPtr)
+ d align qualified
+ d type like(xmlSchemaTypeType) Kind of type
+ d id * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ d node like(xmlNodePtr)
+ d minOccurs 10i 0 Deprecated; not used
+ d maxOccurs 10i 0 Deprecated; not used
+ d processContents...
+ d 10i 0
+ d any 10i 0 Ns constraint ##any?
+ d nsSet like(xmlSchemaWildcardNsPtr) Allowed namspce list
+ d negNsSet like(xmlSchemaWildcardNsPtr) Negated namespace
+ d flags 10i 0 Deprecated; not used
+
+ * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
+ *
+ * The attribute wildcard has been already builded.
+
+ d XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED...
+ d c X'0001'
+
+ * XML_SCHEMAS_ATTRGROUP_GLOBAL:
+ *
+ * The attribute wildcard has been already builded.
+
+ d XML_SCHEMAS_ATTRGROUP_GLOBAL...
+ d c X'0002'
+
+ * XML_SCHEMAS_ATTRGROUP_MARKED:
+ *
+ * Marks the attr group as marked; used for circular checks.
+
+ d XML_SCHEMAS_ATTRGROUP_MARKED...
+ d c X'0004'
+
+ * XML_SCHEMAS_ATTRGROUP_REDEFINED:
+ *
+ * The attr group was redefined.
+
+ d XML_SCHEMAS_ATTRGROUP_REDEFINED...
+ d c X'0008'
+
+ * XML_SCHEMAS_ATTRGROUP_HAS_REFS:
+ *
+ * Whether this attr. group contains attr. group references.
+
+ d XML_SCHEMAS_ATTRGROUP_HAS_REFS...
+ d c X'0010'
+
+ * An attribute group definition.
+ *
+ * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
+ * must be kept similar
+
+ d xmlSchemaAttributeGroupPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaAttributeGroup...
+ d ds based(xmlSchemaAttributeGroupPtr)
+ d align qualified
+ d type like(xmlSchemaTypeType) Kind of type
+ d next like(xmlSchemaAttributePtr) Next attribute
+ d name * const xmlChar *
+ d id * const xmlChar *
+ d ref * const xmlChar *
+ d refNs * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ *
+ d attributes like(xmlSchemaAttributePtr) Deprecated; not used
+ d node like(xmlNodePtr)
+ d flags 10i 0
+ d attributeWildcard...
+ d like(xmlSchemaWildcardPtr)
+ d refPrefix * const xmlChar *
+ d refItem like(xmlSchemaAttributeGroupPtr) Deprecated; not used
+ d targetNamespace...
+ d * const xmlChar *
+ d attrUses * void *
+
+ * xmlSchemaTypeLink:
+ * Used to build a list of types (e.g. member types of
+ * simpleType with variety "union").
+
+ d xmlSchemaTypeLinkPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaTypeLink...
+ d ds based(xmlSchemaTypeLinkPtr)
+ d align qualified
+ d next like(xmlSchemaTypeLinkPtr) Next type link
+ d type like(xmlSchemaTypePtr) Linked type
+
+ * xmlSchemaFacetLink:
+ * Used to build a list of facets.
+
+ d xmlSchemaFacetLinkPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaFacetLink...
+ d ds based(xmlSchemaFacetLinkPtr)
+ d align qualified
+ d next like(xmlSchemaFacetLinkPtr) Next facet link
+ d facet like(xmlSchemaFacetPtr) Linked facet
+
+ * XML_SCHEMAS_TYPE_MIXED:
+ *
+ * the element content type is mixed
+
+ d XML_SCHEMAS_TYPE_MIXED...
+ d c X'00000001'
+
+ * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
+ *
+ * the simple or complex type has a derivation method of "extension".
+
+ d XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION...
+ d c X'00000002'
+
+ * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
+ *
+ * the simple or complex type has a derivation method of "restriction".
+
+ d XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION...
+ d c X'00000004'
+
+ * XML_SCHEMAS_TYPE_GLOBAL:
+ *
+ * the type is global
+
+ d XML_SCHEMAS_TYPE_GLOBAL...
+ d c X'00000008'
+
+ * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
+ *
+ * the complexType owns an attribute wildcard, i.e.
+ * it can be freed by the complexType
+
+ d XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD... Obsolete.
+ d c X'00000010'
+
+ * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
+ *
+ * the simpleType has a variety of "absent".
+ * TODO: Actually not necessary :-/, since if
+ * none of the variety flags occur then it's
+ * automatically absent.
+
+ d XML_SCHEMAS_TYPE_VARIETY_ABSENT...
+ d c X'00000020'
+
+ * XML_SCHEMAS_TYPE_VARIETY_LIST:
+ *
+ * the simpleType has a variety of "list".
+
+ d XML_SCHEMAS_TYPE_VARIETY_LIST...
+ d c X'00000040'
+
+ * XML_SCHEMAS_TYPE_VARIETY_UNION:
+ *
+ * the simpleType has a variety of "union".
+
+ d XML_SCHEMAS_TYPE_VARIETY_UNION...
+ d c X'00000080'
+
+ * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
+ *
+ * the simpleType has a variety of "union".
+
+ d XML_SCHEMAS_TYPE_VARIETY_ATOMIC...
+ d c X'00000100'
+
+ * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
+ *
+ * the complexType has a final of "extension".
+
+ d XML_SCHEMAS_TYPE_FINAL_EXTENSION...
+ d c X'00000200'
+
+ * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
+ *
+ * the simpleType/complexType has a final of "restriction".
+
+ d XML_SCHEMAS_TYPE_FINAL_RESTRICTION...
+ d c X'00000400'
+
+ * XML_SCHEMAS_TYPE_FINAL_LIST:
+ *
+ * the simpleType has a final of "list".
+
+ d XML_SCHEMAS_TYPE_FINAL_LIST...
+ d c X'00000800'
+
+ * XML_SCHEMAS_TYPE_FINAL_UNION:
+ *
+ * the simpleType has a final of "union".
+
+ d XML_SCHEMAS_TYPE_FINAL_UNION...
+ d c X'00001000'
+
+ * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
+ *
+ * the simpleType has a final of "default".
+
+ d XML_SCHEMAS_TYPE_FINAL_DEFAULT...
+ d c X'00002000'
+
+ * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
+ *
+ * Marks the item as a builtin primitive.
+
+ d XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE...
+ d c X'00004000'
+
+ * XML_SCHEMAS_TYPE_MARKED:
+ *
+ * Marks the item as marked; used for circular checks.
+
+ d XML_SCHEMAS_TYPE_MARKED...
+ d c X'00010000'
+
+ * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
+ *
+ * the complexType did not specify 'block' so use the default of the
+ * <schema> item.
+
+ d XML_SCHEMAS_TYPE_BLOCK_DEFAULT...
+ d c X'00020000'
+
+ * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
+ *
+ * the complexType has a 'block' of "extension".
+
+ d XML_SCHEMAS_TYPE_BLOCK_EXTENSION...
+ d c X'00040000'
+
+ * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
+ *
+ * the complexType has a 'block' of "restriction".
+
+ d XML_SCHEMAS_TYPE_BLOCK_RESTRICTION...
+ d c X'00080000'
+
+ * XML_SCHEMAS_TYPE_ABSTRACT:
+ *
+ * the simple/complexType is abstract.
+
+ d XML_SCHEMAS_TYPE_ABSTRACT...
+ d c X'00100000'
+
+ * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
+ *
+ * indicates if the facets need a computed value
+
+ d XML_SCHEMAS_TYPE_FACETSNEEDVALUE...
+ d c X'00200000'
+
+ * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
+ *
+ * indicates that the type was typefixed
+
+ d XML_SCHEMAS_TYPE_INTERNAL_RESOLVED...
+ d c X'00400000'
+
+ * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
+ *
+ * indicates that the type is invalid
+
+ d XML_SCHEMAS_TYPE_INTERNAL_INVALID...
+ d c X'00800000'
+
+ * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
+ *
+ * a whitespace-facet value of "preserve"
+
+ d XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE...
+ d c X'01000000'
+
+ * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
+ *
+ * a whitespace-facet value of "replace"
+
+ d XML_SCHEMAS_TYPE_WHITESPACE_REPLACE...
+ d c X'02000000'
+
+ * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
+ *
+ * a whitespace-facet value of "collapse"
+
+ d XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE...
+ d c X'04000000'
+
+ * XML_SCHEMAS_TYPE_HAS_FACETS:
+ *
+ * has facets
+
+ d XML_SCHEMAS_TYPE_HAS_FACETS...
+ d c X'08000000'
+
+ * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
+ *
+ * indicates if the facets (pattern) need a normalized value
+
+ d XML_SCHEMAS_TYPE_NORMVALUENEEDED...
+ d c X'10000000'
+
+ * XML_SCHEMAS_TYPE_FIXUP_1:
+ *
+ * First stage of fixup was done.
+
+ d XML_SCHEMAS_TYPE_FIXUP_1...
+ d c X'20000000'
+
+ * XML_SCHEMAS_TYPE_REDEFINED:
+ *
+ * The type was redefined.
+
+ d XML_SCHEMAS_TYPE_REDEFINED...
+ d c X'40000000'
+
+ /if defined(DISABLED)
+ * XML_SCHEMAS_TYPE_REDEFINING:
+ *
+ * The type redefines an other type.
+
+ d XML_SCHEMAS_TYPE_REDEFINING...
+ d c X'80000000'
+ /endif
+
+ * _xmlSchemaType:
+ *
+ * Schemas type definition.
+
+ d xmlSchemaType...
+ d ds based(xmlSchemaTypePtr)
+ d align qualified
+ d type like(xmlSchemaTypeType) Kind of type
+ d next like(xmlSchemaTypePtr) Next type
+ d name * const xmlChar *
+ d id * const xmlChar *
+ d ref * const xmlChar *
+ d refNs * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ d subtypes like(xmlSchemaTypePtr)
+ d attributes like(xmlSchemaAttributePtr) Deprecated; not used
+ d node like(xmlNodePtr)
+ d minOccurs 10i 0 Deprecated; not used
+ d maxOccurs 10i 0 Deprecated; not used
+ *
+ d flags 10i 0
+ d contentType like(xmlSchemaContentType)
+ d base * const xmlChar *
+ d baseNs * const xmlChar *
+ d baseType like(xmlSchemaTypePtr) Base type component
+ d facets like(xmlSchemaFacetPtr) Local facets
+ d redef like(xmlSchemaTypePtr) Deprecated; not used
+ d recurse 10i 0 Obsolete
+ d attributeUses like(xmlSchemaAttributeLinkPtr) Deprecated; not used
+ d attributeWildcard...
+ d like(xmlSchemaWildcardPtr)
+ d builtInType 10i 0 Built-in types type
+ d memberTypes like(xmlSchemaTypeLinkPtr) Union member-types
+ d facetSet like(xmlSchemaFacetLinkPtr) All facets
+ d refPrefix * const xmlChar *
+ d contentTypeDef...
+ d like(xmlSchemaTypePtr)
+ d contModel like(xmlRegexpPtr) Content model autom.
+ d targetNamespace...
+ d * const xmlChar *
+ d attrUses * void *
+
+ * xmlSchemaElement:
+ * An element definition.
+ *
+ * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
+ * structures must be kept similar
+
+ * XML_SCHEMAS_ELEM_NILLABLE:
+ *
+ * the element is nillable
+
+ d XML_SCHEMAS_ELEM_NILLABLE...
+ d c X'00000001'
+
+ * XML_SCHEMAS_ELEM_GLOBAL:
+ *
+ * the element is global
+
+ d XML_SCHEMAS_ELEM_GLOBAL...
+ d c X'00000002'
+
+ * XML_SCHEMAS_ELEM_DEFAULT:
+ *
+ * the element has a default value
+
+ d XML_SCHEMAS_ELEM_DEFAULT...
+ d c X'00000004'
+
+ * XML_SCHEMAS_ELEM_FIXED:
+ *
+ * the element has a fixed value
+
+ d XML_SCHEMAS_ELEM_FIXED...
+ d c X'00000008'
+
+ * XML_SCHEMAS_ELEM_ABSTRACT:
+ *
+ * the element is abstract
+
+ d XML_SCHEMAS_ELEM_ABSTRACT...
+ d c X'00000010'
+
+ * XML_SCHEMAS_ELEM_TOPLEVEL:
+ *
+ * the element is top level
+ * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
+
+ d XML_SCHEMAS_ELEM_TOPLEVEL...
+ d c X'00000020'
+
+ * XML_SCHEMAS_ELEM_REF:
+ *
+ * the element is a reference to a type
+
+ d XML_SCHEMAS_ELEM_REF...
+ d c X'00000040'
+
+ * XML_SCHEMAS_ELEM_NSDEFAULT:
+ *
+ * allow elements in no namespace
+ * Obsolete, not used anymore.
+
+ d XML_SCHEMAS_ELEM_NSDEFAULT...
+ d c X'00000080'
+
+ * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
+ *
+ * this is set when "type", "ref", "substitutionGroup"
+ * references have been resolved.
+
+ d XML_SCHEMAS_ELEM_INTERNAL_RESOLVED...
+ d c X'00000100'
+
+ * XML_SCHEMAS_ELEM_CIRCULAR:
+ *
+ * a helper flag for the search of circular references.
+
+ d XML_SCHEMAS_ELEM_CIRCULAR...
+ d c X'00000200'
+
+ * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
+ *
+ * the "block" attribute is absent
+
+ d XML_SCHEMAS_ELEM_BLOCK_ABSENT...
+ d c X'00000400'
+
+ * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
+ *
+ * disallowed substitutions are absent
+
+ d XML_SCHEMAS_ELEM_BLOCK_EXTENSION...
+ d c X'00000800'
+
+ * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
+ *
+ * disallowed substitutions: "restriction"
+
+ d XML_SCHEMAS_ELEM_BLOCK_RESTRICTION...
+ d c X'00001000'
+
+ * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
+ *
+ * disallowed substitutions: "substituion"
+
+ d XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION...
+ d c X'00002000'
+
+ * XML_SCHEMAS_ELEM_FINAL_ABSENT:
+ *
+ * substitution group exclusions are absent
+
+ d XML_SCHEMAS_ELEM_FINAL_ABSENT...
+ d c X'00004000'
+
+ * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
+ *
+ * substitution group exclusions: "extension"
+
+ d XML_SCHEMAS_ELEM_FINAL_EXTENSION...
+ d c X'00008000'
+
+ * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
+ *
+ * substitution group exclusions: "restriction"
+
+ d XML_SCHEMAS_ELEM_FINAL_RESTRICTION...
+ d c X'00010000'
+
+ * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
+ *
+ * the declaration is a substitution group head
+
+ d XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD...
+ d c X'00020000'
+
+ * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
+ *
+ * this is set when the elem decl has been checked against
+ * all constraints
+
+ d XML_SCHEMAS_ELEM_INTERNAL_CHECKED...
+ d c X'00040000'
+
+ d xmlSchemaElementPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaElement...
+ d ds based(xmlSchemaElementPtr)
+ d align qualified
+ d type like(xmlSchemaTypeType) Kind of type
+ d next like(xmlSchemaElementPtr) Not used ?
+ d name * const xmlChar *
+ d id * const xmlChar *
+ d ref * const xmlChar *
+ d refNs * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ d subtypes like(xmlSchemaTypePtr)
+ d attributes like(xmlSchemaAttributePtr) Deprecated; not used
+ d node like(xmlNodePtr)
+ d minOccurs 10i 0 Deprecated; not used
+ d maxOccurs 10i 0 Deprecated; not used
+ *
+ d flags 10i 0
+ d targetNamespace...
+ d * const xmlChar *
+ d namedType * const xmlChar *
+ d namedTypeNs * const xmlChar *
+ d substGroup * const xmlChar *
+ d substGroupNs * const xmlChar *
+ d scope * const xmlChar *
+ d value * const xmlChar *
+ d refDecl like(xmlSchemaElementPtr)
+ d contModel like(xmlRegexpPtr)
+ d contentType like(xmlSchemaContentType)
+ d refPrefix * const xmlChar *
+ d devVal like(xmlSchemaValPtr) Comp val constraint
+ d idcs * void *
+
+ * XML_SCHEMAS_FACET_UNKNOWN:
+ *
+ * unknown facet handling
+
+ d XML_SCHEMAS_FACET_UNKNOWN...
+ d c 0
+
+ * XML_SCHEMAS_FACET_PRESERVE:
+ *
+ * preserve the type of the facet
+
+ d XML_SCHEMAS_FACET_PRESERVE...
+ d c 1
+
+ * XML_SCHEMAS_FACET_REPLACE:
+ *
+ * replace the type of the facet
+
+ d XML_SCHEMAS_FACET_REPLACE...
+ d c 2
+
+ * XML_SCHEMAS_FACET_COLLAPSE:
+ *
+ * collapse the types of the facet
+
+ d XML_SCHEMAS_FACET_COLLAPSE...
+ d c 3
+
+ * A facet definition.
+
+ d xmlSchemaFacet...
+ d ds based(xmlSchemaFacetPtr)
+ d align qualified
+ d type like(xmlSchemaTypeType) Kind of type
+ d next like(xmlSchemaFacetPtr) Next type in seq.
+ d value * const xmlChar *
+ d id * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ d node like(xmlNodePtr)
+ d fixed 10i 0 _FACET_PRESERVE, etc
+ d whitespace 10i 0
+ d val like(xmlSchemaValPtr) Compiled value
+ d regexp like(xmlRegexpPtr) Regexp for patterns
+
+ * A notation definition.
+
+ d xmlSchemaNotationPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaNotation...
+ d ds based(xmlSchemaNotationPtr)
+ d align qualified
+ d type like(xmlSchemaTypeType) Kind of type
+ d name * const xmlChar *
+ d annot like(xmlSchemaAnnotPtr)
+ d identifier * const xmlChar *
+ d targetNamespace...
+ d * const xmlChar *
+
+ * TODO: Actually all those flags used for the schema should sit
+ * on the schema parser context, since they are used only
+ * during parsing an XML schema document, and not available
+ * on the component level as per spec.
+
+ * XML_SCHEMAS_QUALIF_ELEM:
+ *
+ * Reflects elementFormDefault == qualified in
+ * an XML schema document.
+
+ d XML_SCHEMAS_QUALIF_ELEM...
+ d c X'00000001'
+
+ * XML_SCHEMAS_QUALIF_ATTR:
+ *
+ * Reflects attributeFormDefault == qualified in
+ * an XML schema document.
+
+ d XML_SCHEMAS_QUALIF_ATTR...
+ d c X'00000002'
+
+ * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
+ *
+ * the schema has "extension" in the set of finalDefault.
+
+ d XML_SCHEMAS_FINAL_DEFAULT_EXTENSION...
+ d c X'00000004'
+
+ * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
+ *
+ * the schema has "restriction" in the set of finalDefault.
+
+ d XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION...
+ d c X'00000008'
+
+ * XML_SCHEMAS_FINAL_DEFAULT_LIST:
+ *
+ * the cshema has "list" in the set of finalDefault.
+
+ d XML_SCHEMAS_FINAL_DEFAULT_LIST...
+ d c X'00000010'
+
+ * XML_SCHEMAS_FINAL_DEFAULT_UNION:
+ *
+ * the schema has "union" in the set of finalDefault.
+
+ d XML_SCHEMAS_FINAL_DEFAULT_UNION...
+ d c X'00000020'
+
+ * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
+ *
+ * the schema has "extension" in the set of blockDefault.
+
+ d XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION...
+ d c X'00000040'
+
+ * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
+ *
+ * the schema has "restriction" in the set of blockDefault.
+
+ d XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION...
+ d c X'00000080'
+
+ * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
+ *
+ * the schema has "substitution" in the set of blockDefault.
+
+ d XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION...
+ d c X'00000100'
+
+ * XML_SCHEMAS_INCLUDING_CONVERT_NS:
+ *
+ * the schema is currently including an other schema with
+ * no target namespace.
+
+ d XML_SCHEMAS_INCLUDING_CONVERT_NS...
+ d c X'00000200'
+
+ * _xmlSchema:
+ *
+ * A Schemas definition
+
+ d xmlSchema ds based(xmlSchemaPtr)
+ d align qualified
+ d name * const xmlChar *
+ d targetNamespace...
+ d * const xmlChar *
+ d version * const xmlChar *
+ d id * const xmlChar *
+ d doc like(xmlDocPtr)
+ d annot like(xmlSchemaAnnotPtr)
+ d flags 10i 0
+ *
+ d typeDecl like(xmlHashTablePtr)
+ d attrDecl like(xmlHashTablePtr)
+ d attrGrpDecl like(xmlHashTablePtr)
+ d elemDecl like(xmlHashTablePtr)
+ d notaDecl like(xmlHashTablePtr)
+ d schemasImports...
+ d like(xmlHashTablePtr)
+ *
+ d #private * void *
+ d groupDecl like(xmlHashTablePtr)
+ d dict like(xmlDictPtr)
+ d includes * void *
+ d preserve 10i 0 Do not free doc ?
+ d counter 10i 0 For name uniqueness
+ d idcDef like(xmlHashTablePtr) All id-constr. defs
+ d volatiles * void *
+
+ d xmlSchemaFreeType...
+ d pr extproc('xmlSchemaFreeType')
+ d type value like(xmlSchemaTypePtr)
+
+ d xmlSchemaFreeWildcard...
+ d pr extproc('xmlSchemaFreeWildcard')
+ d wildcard value like(xmlSchemaWildcardPtr)
+
+ /endif LIBXML_SCHEMAS_ENBLD
+ /endif SCHEMA_INTERNALS_H__
diff --git a/os400/libxmlrpg/schematron.rpgle b/os400/libxmlrpg/schematron.rpgle
new file mode 100644
index 0000000..ff8ea62
--- /dev/null
+++ b/os400/libxmlrpg/schematron.rpgle
@@ -0,0 +1,195 @@
+ * Summary: XML Schemastron implementation
+ * Description: interface to the XML Schematron validity checking.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_SCHEMATRON_H__)
+ /define XML_SCHEMATRON_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_SCHEMATRON_ENABLED)
+
+ /include "libxmlrpg/tree"
+
+ d xmlSchematronValidOptions...
+ d s 10i 0 based(######typedef######) enum
+ d XML_SCHEMATRON_OUT_QUIET... Quiet no report
+ d c X'0001'
+ d XML_SCHEMATRON_OUT_TEXT... Build textual report
+ d c X'0002'
+ d XML_SCHEMATRON_OUT_XML... Output SVRL
+ d c X'0004'
+ d XML_SCHEMATRON_OUT_ERROR... Output to error func
+ d c X'0008'
+ d XML_SCHEMATRON_OUT_FILE... Output to file descr
+ d c X'0100'
+ d XML_SCHEMATRON_OUT_BUFFER... Output to a buffer
+ d c X'0200'
+ d XML_SCHEMATRON_OUT_IO... Output to I/O mech
+ d c X'0400'
+
+ * The schemas related types are kept internal
+
+ d xmlSchematronPtr...
+ d s * based(######typedef######)
+
+ * xmlSchematronValidityErrorFunc:
+ * @ctx: the validation context
+ * @msg: the message
+ * @...: extra arguments
+ *
+ * Signature of an error callback from a Schematron validation
+
+ d xmlSchematronValidityErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlSchematronValidityWarningFunc:
+ * @ctx: the validation context
+ * @msg: the message
+ * @...: extra arguments
+ *
+ * Signature of a warning callback from a Schematron validation
+
+ d xmlSchematronValidityWarningFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * A schemas validation context
+
+ d xmlSchematronParserCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlSchematronValidCtxtPtr...
+ d s * based(######typedef######)
+
+ * Interfaces for parsing.
+
+ d xmlSchematronNewParserCtxt...
+ d pr extproc('xmlSchematronNewParserCtxt')
+ d like(xmlSchematronParserCtxtPtr)
+ d URL * value options(*string) const char *
+
+ d xmlSchematronNewMemParserCtxt...
+ d pr extproc(
+ d 'xmlSchematronNewMemParserCtxt')
+ d like(xmlSchematronParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d xmlSchematronNewDocParserCtxt...
+ d pr extproc(
+ d 'xmlSchematronNewDocParserCtxt')
+ d like(xmlSchematronParserCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlSchematronFreeParserCtxt...
+ d pr extproc(
+ d 'xmlSchematronFreeParserCtxt')
+ d ctxt value
+ d like(xmlSchematronParserCtxtPtr)
+
+ /if defined(DISABLED)
+ d xmlSchematronSetParserErrors...
+ d pr extproc(
+ d 'xmlSchematronSetParserErrors')
+ d ctxt value
+ d like(xmlSchematronParserCtxtPtr)
+ d err value
+ d like(xmlSchematronValidityErrorFunc)
+ d warn value like(
+ d xmlSchematronValidityWarningFunc)
+ d ctx * value void *
+
+ d xmlSchematronGetParserErrors...
+ d pr 10i 0 extproc(
+ d 'xmlSchematronGetParserErrors')
+ d ctxt value
+ d like(xmlSchematronParserCtxtPtr)
+ d err like(xmlSchematronValidityErrorFunc)
+ d warn like(
+ d xmlSchematronValidityWarningFunc)
+ d ctx * void *(*)
+
+ d xmlSchematronIsValid...
+ d pr 10i 0 extproc('xmlSchematronIsValid')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ /endif
+
+ d xmlSchematronParse...
+ d pr extproc('xmlSchematronParse')
+ d like(xmlSchematronPtr)
+ d ctxt value
+ d like(xmlSchematronParserCtxtPtr)
+
+ d xmlSchematronFree...
+ d pr extproc('xmlSchematronFree')
+ d schema value like(xmlSchematronPtr)
+
+ * Interfaces for validating
+
+ d xmlSchematronSetValidStructuredErrors...
+ d pr extproc('xmlSchematronSetValidStruct-
+ d uredErrors')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ d serror value like(xmlStructuredErrorFunc)
+ d ctx * value void *
+
+ /if defined(DISABLED)
+ d xmlSchematronSetValidErrors...
+ d pr extproc(
+ d 'xmlSchematronSetValidErrors')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ d err value
+ d like(xmlSchematronValidityErrorFunc)
+ d warn value like(
+ d xmlSchematronValidityWarningFunc)
+ d ctx * value void *
+
+ d xmlSchematronGetValidErrors...
+ d pr 10i 0 extproc(
+ d 'xmlSchematronGetValidErrors')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ d err like(xmlSchematronValidityErrorFunc)
+ d warn like(
+ d xmlSchematronValidityWarningFunc)
+ d ctx * void *(*)
+
+ d xmlSchematronSetValidOptions...
+ d pr 10i 0 extproc(
+ d 'xmlSchematronSetValidOptions')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ d options 10i 0 value
+
+ d xmlSchematronValidCtxtGetOptions...
+ d pr 10i 0 extproc(
+ d 'xmlSchematronValidCtxtGetOptions')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+
+ d xmlSchematronValidateOneElement...
+ d pr 10i 0 extproc(
+ d 'xmlSchematronValidateOneElement')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ d elem value like(xmlNodePtr)
+ /endif
+
+ d xmlSchematronNewValidCtxt...
+ d pr extproc('xmlSchematronNewValidCtxt')
+ d like(xmlSchematronValidCtxtPtr)
+ d schema value like(xmlSchematronPtr)
+ d options 10i 0 value
+
+ d xmlSchematronFreeValidCtxt...
+ d pr extproc('xmlSchematronFreeValidCtxt')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+
+ d xmlSchematronValidateDoc...
+ d pr 10i 0 extproc('xmlSchematronValidateDoc')
+ d ctxt value like(xmlSchematronValidCtxtPtr)
+ d instance value like(xmlDocPtr)
+
+ /endif _SCHEMATRON_ENABLED
+ /endif XML_SCHEMATRON_H__
diff --git a/os400/libxmlrpg/threads.rpgle b/os400/libxmlrpg/threads.rpgle
new file mode 100644
index 0000000..07d4278
--- /dev/null
+++ b/os400/libxmlrpg/threads.rpgle
@@ -0,0 +1,70 @@
+ * Summary: interfaces for thread handling
+ * Description: set of generic threading related routines
+ * should work with pthreads, Windows native or TLS threads
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_THREADS_H__)
+ /define XML_THREADS_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ * xmlMutex are a simple mutual exception locks.
+
+ d xmlMutexPtr s * based(######typedef######)
+
+ * xmlRMutex are reentrant mutual exception locks.
+
+ d xmlRMutexPtr s * based(######typedef######)
+
+ /include "libxmlrpg/globals"
+
+ d xmlNewMutex pr extproc('xmlNewMutex')
+ d like(xmlMutexPtr)
+
+ d xmlMutexLock pr extproc('xmlMutexLock')
+ d tok value like(xmlMutexPtr)
+
+ d xmlMutexUnlock pr extproc('xmlMutexUnlock')
+ d tok value like(xmlMutexPtr)
+
+ d xmlFreeMutex pr extproc('xmlFreeMutex')
+ d tok value like(xmlMutexPtr)
+
+ d xmlNewRMutex pr extproc('xmlNewRMutex')
+ d like(xmlRMutexPtr)
+
+ d xmlRMutexLock pr extproc('xmlRMutexLock')
+ d tok value like(xmlRMutexPtr)
+
+ d xmlRMutexUnlock...
+ d pr extproc('xmlRMutexUnlock')
+ d tok value like(xmlRMutexPtr)
+
+ d xmlFreeRMutex pr extproc('xmlFreeRMutex')
+ d tok value like(xmlRMutexPtr)
+
+ * Library wide APIs.
+
+ d xmlInitThreads pr extproc('xmlInitThreads')
+
+ d xmlLockLibrary pr extproc('xmlLockLibrary')
+
+ d xmlUnlockLibrary...
+ d pr extproc('xmlUnlockLibrary')
+
+ d xmlGetThreadId pr 10i 0 extproc('xmlGetThreadId')
+
+ d xmlIsMainThread...
+ d pr 10i 0 extproc('xmlIsMainThread')
+
+ d xmlCleanupThreads...
+ d pr extproc('xmlCleanupThreads')
+
+ d xmlGetGlobalState...
+ d pr extproc('xmlGetGlobalState')
+ d like(xmlGlobalStatePtr)
+
+ /endif XML_THREADS_H__
diff --git a/os400/libxmlrpg/transcode.rpgle b/os400/libxmlrpg/transcode.rpgle
new file mode 100644
index 0000000..b96e4e8
--- /dev/null
+++ b/os400/libxmlrpg/transcode.rpgle
@@ -0,0 +1,71 @@
+ * Supplementary character code conversion functions for
+ * EBCDIC environments.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(TRANSCODE_H__)
+ /define TRANSCODE_H__
+
+ /include "libxmlrpg/dict"
+ /include "libxmlrpg/xmlstdarg"
+
+ d xmlZapDict pr extproc('xmlZapDict')
+ d dict like(xmlDictPtr)
+
+ d xmlTranscodeResult...
+ d pr * extproc('xmlTranscodeResult') const char *
+ d s * value options(*string) const xmlChar *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+ d freeproc * value procptr
+
+ d xmlTranscodeString...
+ d pr * extproc('xmlTranscodeString') const xmlChar *
+ d s * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+
+ d xmlTranscodeWString...
+ d pr * extproc('xmlTranscodeWString') const xmlChar *
+ d s * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+
+ d xmlTranscodeHString...
+ d pr * extproc('xmlTranscodeHString') const xmlChar *
+ d s * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+
+ /if not defined(XML_NO_SHORT_NAMES)
+ d xmlTR pr * extproc('xmlTranscodeResult') const char *
+ d s * value options(*string) const xmlChar *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+ d freeproc * value procptr
+
+ d xmlTS pr * extproc('xmlTranscodeString') const xmlChar *
+ d s * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+
+ d xmlTW pr * extproc('xmlTranscodeWString') const xmlChar *
+ d s * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+
+ d xmlTH pr * extproc('xmlTranscodeHString') const xmlChar *
+ d s * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d dict like(xmlDictPtr) options(*omit)
+ /endif
+
+ d xmlVasprintf pr * extproc('xmlVasprintf')
+ d dict like(xmlDictPtr) options(*omit)
+ d encoding * value options(*string) const char *
+ d fmt * value options(*string) const xmlChar *
+ d args likeds(xmlVaList)
+
+ /endif
diff --git a/os400/libxmlrpg/tree.rpgle b/os400/libxmlrpg/tree.rpgle
new file mode 100644
index 0000000..8b4981a
--- /dev/null
+++ b/os400/libxmlrpg/tree.rpgle
@@ -0,0 +1,1628 @@
+ * Summary: interfaces for tree manipulation
+ * Description: this module describes the structures found in an tree
+ * resulting from an XML or HTML parsing, as well as the API
+ * provided for various processing on that tree
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_TREE_H__)
+ /define XML_TREE_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/xmlstring"
+
+
+ * Some of the basic types pointer to structures:
+
+ * xmlIO.h
+
+ d xmlParserInputBufferPtr...
+ d s * based(######typedef######)
+
+ d xmlOutputBufferPtr...
+ d s * based(######typedef######)
+
+ * parser.h
+
+ d xmlParserInputPtr...
+ d s * based(######typedef######)
+
+ d xmlParserCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlSAXLocatorPtr...
+ d s * based(######typedef######)
+
+ d xmlSAXHandlerPtr...
+ d s * based(######typedef######)
+
+ * entities.h
+
+ d xmlEntityPtr s * based(######typedef######)
+
+
+ * BASE_BUFFER_SIZE:
+ *
+ * default buffer size 4000.
+
+ d BASE_BUFFER_SIZE...
+ d c 4096
+
+ * LIBXML_NAMESPACE_DICT:
+ *
+ * Defines experimental behaviour:
+ * 1) xmlNs gets an additional field @context (a xmlDoc)
+ * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.
+
+ /if defined(DO_NOT_COMPILE)
+ /define LIBXML_NAMESPACE_DICT
+ /endif
+
+ * xmlBufferAllocationScheme:
+ *
+ * A buffer allocation scheme can be defined to either match exactly the
+ * need or double it's allocated size each time it is found too small.
+
+ d xmlBufferAllocationScheme...
+ d s 10i 0 based(######typedef######) enum
+ d XML_BUFFER_ALLOC_DOUBLEIT...
+ d c 0
+ d XML_BUFFER_ALLOC_EXACT...
+ d c 1
+ d XML_BUFFER_ALLOC_IMMUTABLE...
+ d c 2
+ d XML_BUFFER_ALLOC_IO...
+ d c 3
+ d XML_BUFFER_ALLOC_HYBRID...
+ d c 4
+
+ * xmlBuffer:
+ *
+ * A buffer structure, this old construct is limited to 2GB and
+ * is being deprecated, use API with xmlBuf instead
+
+ d xmlBufferPtr s * based(######typedef######)
+
+ d xmlBuffer ds based(xmlBufferPtr)
+ d align qualified
+ d content * xmlChar *
+ d use 10u 0 The buffer size used
+ d size 10u 0 The buffer size
+ d alloc like(xmlBufferAllocationScheme) The realloc method
+ d contentIO * xmlChar *
+
+ * xmlBufPtr:
+ *
+ * A pointer to a buffer structure, the actual structure internals are not
+ * public
+
+ d xmlBufPtr s * based(######typedef######)
+
+ * A few public routines for xmlBuf. As those are expected to be used
+ * mostly internally the bulk of the routines are internal in buf.h
+
+ d xmlBufContent pr * extproc('xmlBufContent') xmlChar *
+ d buf value like(xmlBufPtr) const
+
+ d xmlBufEnd pr * extproc('xmlBufEnd') xmlChar *
+ d buf value like(xmlBufPtr) const
+
+ d xmlBufUse pr 10u 0 extproc('xmlBufUse') size_t
+ d buf value like(xmlBufPtr) const
+
+ d xmlBufShrink pr 10u 0 extproc('xmlBufShrink') size_t
+ d buf value like(xmlBufPtr)
+ d len 10u 0 value size_t
+
+ * LIBXML2_NEW_BUFFER:
+ *
+ * Macro used to express that the API use the new buffers for
+ * xmlParserInputBuffer and xmlOutputBuffer. The change was
+ * introduced in 2.9.0.
+
+ /define LIBXML2_NEW_BUFFER
+
+ * XML_XML_NAMESPACE:
+ *
+ * This is the namespace for the special xml: prefix predefined in the
+ * XML Namespace specification.
+
+ d XML_XML_NAMESPACE...
+ d c 'http://www.w3.org/XML/1998/+
+ d namespace'
+
+ * XML_XML_ID:
+ *
+ * This is the name for the special xml:id attribute
+
+ d XML_XML_ID c 'xml:id'
+
+ * The different element types carried by an XML tree.
+ *
+ * NOTE: This is synchronized with DOM Level1 values
+ * See http://www.w3.org/TR/REC-DOM-Level-1/
+ *
+ * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
+ * be deprecated to use an XML_DTD_NODE.
+
+ d xmlElementType s 10i 0 based(######typedef######) enum
+ d XML_ELEMENT_NODE...
+ d c 1
+ d XML_ATTRIBUTE_NODE...
+ d c 2
+ d XML_TEXT_NODE c 3
+ d XML_CDATA_SECTION_NODE...
+ d c 4
+ d XML_ENTITY_REF_NODE...
+ d c 5
+ d XML_ENTITY_NODE...
+ d c 6
+ d XML_PI_NODE c 7
+ d XML_COMMENT_NODE...
+ d c 8
+ d XML_DOCUMENT_NODE...
+ d c 9
+ d XML_DOCUMENT_TYPE_NODE...
+ d c 10
+ d XML_DOCUMENT_FRAG_NODE...
+ d c 11
+ d XML_NOTATION_NODE...
+ d c 12
+ d XML_HTML_DOCUMENT_NODE...
+ d c 13
+ d XML_DTD_NODE c 14
+ d XML_ELEMENT_DECL...
+ d c 15
+ d XML_ATTRIBUTE_DECL...
+ d c 16
+ d XML_ENTITY_DECL...
+ d c 17
+ d XML_NAMESPACE_DECL...
+ d c 18
+ d XML_LOCAL_NAMESPACE...
+ d c 18 Alias
+ d XML_XINCLUDE_START...
+ d c 19
+ d XML_XINCLUDE_END...
+ d c 20
+ /if defined(LIBXML_DOCB_ENABLED)
+ d XML_DOCB_DOCUMENT_NODE...
+ d c 21
+ /endif
+
+ * xmlNotation:
+ *
+ * A DTD Notation definition.
+
+ d xmlNotationPtr s * based(######typedef######)
+
+ d xmlNotation ds based(xmlNotationPtr)
+ d align qualified
+ d name * const xmlChar *
+ d PublicID * const xmlChar *
+ d SystemID * const xmlChar *
+
+ * xmlAttributeType:
+ *
+ * A DTD Attribute type definition.
+
+ d xmlAttributeType...
+ d s 10i 0 based(######typedef######) enum
+ d XML_ATTRIBUTE_CDATA...
+ d c 1
+ d XML_ATTRIBUTE_ID...
+ d c 2
+ d XML_ATTRIBUTE_IDREF...
+ d c 3
+ d XML_ATTRIBUTE_IDREFS...
+ d c 4
+ d XML_ATTRIBUTE_ENTITY...
+ d c 5
+ d XML_ATTRIBUTE_ENTITIES...
+ d c 6
+ d XML_ATTRIBUTE_NMTOKEN...
+ d c 7
+ d XML_ATTRIBUTE_NMTOKENS...
+ d c 8
+ d XML_ATTRIBUTE_ENUMERATION...
+ d c 9
+ d XML_ATTRIBUTE_NOTATION...
+ d c 10
+
+ * xmlAttributeDefault:
+ *
+ * A DTD Attribute default definition.
+
+ d xmlAttributeDefault...
+ d s 10i 0 based(######typedef######) enum
+ d XML_ATTRIBUTE_NONE...
+ d c 1
+ d XML_ATTRIBUTE_REQUIRED...
+ d c 2
+ d XML_ATTRIBUTE_IMPLIED...
+ d c 3
+ d XML_ATTRIBUTE_FIXED...
+ d c 4
+
+ * xmlEnumeration:
+ *
+ * List structure used when there is an enumeration in DTDs.
+
+ d xmlEnumerationPtr...
+ d s * based(######typedef######)
+
+ d xmlEnumeration ds based(xmlEnumerationPtr)
+ d align qualified
+ d next like(xmlEnumerationPtr) Next one
+ d name * const xmlChar *
+
+ * Forward pointer declarations.
+
+ d xmlNodePtr s * based(######typedef######)
+ d xmlDocPtr s * based(######typedef######)
+ d xmlDtdPtr s * based(######typedef######)
+
+ * xmlAttribute:
+ *
+ * An Attribute declaration in a DTD.
+
+ d xmlAttributePtr...
+ d s * based(######typedef######)
+
+ d xmlAttribute ds based(xmlAttributePtr)
+ d align qualified
+ d #private * Application data
+ d type like(xmlElementType) XML_ATTRIBUTE_DECL
+ d name * const xmlChar *
+ d children like(xmlNodePtr) NULL
+ d last like(xmlNodePtr) NULL
+ d parent like(xmlDtdPtr) -> DTD
+ d next like(xmlNodePtr) next sibling link
+ d prev like(xmlNodePtr) previous sibling lnk
+ d doc like(xmlDocPtr) The containing doc
+ d nexth like(xmlAttributePtr) Next in hash table
+ d atype like(xmlAttributeType) The attribute type
+ d def like(xmlAttributeDefault) The default
+ d defaultValue * or const xmlChar *
+ d tree like(xmlEnumerationPtr) or enum tree
+ d prefix * const xmlChar *
+ d elem * const xmlChar *
+
+ * xmlElementContentType:
+ *
+ * Possible definitions of element content types.
+
+ d xmlElementContentType...
+ d s 10i 0 based(######typedef######) enum
+ d XML_ELEMENT_CONTENT_PCDATA...
+ d c 1
+ d XML_ELEMENT_CONTENT_ELEMENT...
+ d c 2
+ d XML_ELEMENT_CONTENT_SEQ...
+ d c 3
+ d XML_ELEMENT_CONTENT_OR...
+ d c 4
+
+ * xmlElementContentOccur:
+ *
+ * Possible definitions of element content occurrences.
+
+ d xmlElementContentOccur...
+ d s 10i 0 based(######typedef######) enum
+ d XML_ELEMENT_CONTENT_ONCE...
+ d c 1
+ d XML_ELEMENT_CONTENT_OPT...
+ d c 2
+ d XML_ELEMENT_CONTENT_MULT...
+ d c 3
+ d XML_ELEMENT_CONTENT_PLUS...
+ d c 4
+
+ * xmlElementContent:
+ *
+ * An XML Element content as stored after parsing an element definition
+ * in a DTD.
+
+ d xmlElementContentPtr...
+ d s * based(######typedef######)
+
+ d xmlElementContent...
+ d ds based(xmlElementContentPtr)
+ d align qualified
+ d type like(xmlElementContentType)
+ d ocur like(xmlElementContentOccur)
+ d name * const xmlChar *
+ d c1 like(xmlElementContentPtr) First child
+ d c2 like(xmlElementContentPtr) Second child
+ d parent like(xmlElementContentPtr) Parent
+ d prefix * const xmlChar *
+
+ * xmlElementTypeVal:
+ *
+ * The different possibilities for an element content type.
+
+ d xmlElementTypeVal...
+ d s 10i 0 based(######typedef######) enum
+ d XML_ELEMENT_TYPE_UNDEFINED...
+ d c 0
+ d XML_ELEMENT_TYPE_EMPTY...
+ d c 1
+ d XML_ELEMENT_TYPE_ANY...
+ d c 2
+ d XML_ELEMENT_TYPE_MIXED...
+ d c 3
+ d XML_ELEMENT_TYPE_ELEMENT...
+ d c 4
+
+ /include "libxmlrpg/xmlregexp"
+
+ * xmlElement:
+ *
+ * An XML Element declaration from a DTD.
+
+ d xmlElementPtr s * based(######typedef######)
+
+ d xmlElement ds based(xmlElementPtr)
+ d align qualified
+ d #private * Application data
+ d type like(xmlElementType) XML_ELEMENT_DECL
+ d name * const xmlChar *
+ d children like(xmlNodePtr) NULL
+ d last like(xmlNodePtr) NULL
+ d parent like(xmlDtdPtr) -> DTD
+ d next like(xmlNodePtr) next sibling link
+ d prev like(xmlNodePtr) previous sibling lnk
+ d doc like(xmlDocPtr) The containing doc
+ d etype like(xmlElementTypeVal) The type
+ d content like(xmlElementContentPtr) Allowed elem content
+ d attributes like(xmlAttributePtr) Declared attributes
+ d prefix * const xmlChar *
+ /if defined(LIBXML_REGEXP_ENABLED)
+ d contModel like(xmlRegexpPtr) Validating regexp
+ /else
+ d contModel *
+ /endif
+
+ * XML_LOCAL_NAMESPACE:
+ *
+ * A namespace declaration node.
+
+ * xmlNs:
+ *
+ * An XML namespace.
+ * Note that prefix == NULL is valid, it defines the default namespace
+ * within the subtree (until overridden).
+ *
+ * xmlNsType is unified with xmlElementType.
+
+ d xmlNsType s based(######typedef######) enum
+ d like(xmlElementType)
+
+ d xmlNsPtr s * based(######typedef######)
+
+ d xmlNs ds based(xmlNsPtr)
+ d align qualified
+ d next like(xmlNsPtr) next Ns link
+ d type like(xmlNsType) Global or local
+ d href * const xmlChar *
+ d prefix * const xmlChar *
+ d #private * Application data
+ d context like(xmlDocPtr) normally an xmlDoc
+
+ * xmlDtd:
+ *
+ * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
+ * the internal subset and for the external subset.
+
+ d xmlDtd ds based(xmlDtdPtr)
+ d align qualified
+ d #private * Application data
+ d type like(xmlElementType) XML_DTD_NODE
+ d name * const xmlChar *
+ d children like(xmlNodePtr) Property link value
+ d last like(xmlNodePtr) Last child link
+ d parent like(xmlDocPtr) Child->parent link
+ d next like(xmlNodePtr) next sibling link
+ d prev like(xmlNodePtr) previous sibling lnk
+ d doc like(xmlDocPtr) The containing doc
+ d notations * notations hash table
+ d elements * elements hash table
+ d entities * entities hash table
+ d ExternalID * const xmlChar *
+ d SystemID * const xmlChar *
+ d pentities * param. ent. h table
+
+ * xmlAttr:
+ *
+ * An attribute on an XML node.
+
+ d xmlAttrPtr s * based(######typedef######)
+
+ d xmlAttr ds based(xmlAttrPtr)
+ d align qualified
+ d #private * Application data
+ d type like(xmlElementType) XML_ATTRIBUTE_NODE
+ d name * const xmlChar *
+ d children like(xmlNodePtr) Property link value
+ d last like(xmlNodePtr) NULL
+ d parent like(xmlNodePtr) Child->parent link
+ d next like(xmlAttrPtr) next sibling link
+ d prev like(xmlAttrPtr) previous sibling lnk
+ d doc like(xmlDocPtr) The containing doc
+ d ns like(xmlNsPtr) Associated namespace
+ d atype like(xmlAttributeType) For validation
+ d psvi * Type/PSVI info
+
+ * xmlID:
+ *
+ * An XML ID instance.
+
+ d xmlIdPtr s * based(######typedef######)
+
+ d xmlID ds based(xmlIdPtr)
+ d align qualified
+ d next like(xmlIdPtr) Next ID
+ d attr like(xmlAttrPtr) Attribute holding it
+ d name * const xmlChar *
+ d lineno 10i 0 Line # if not avail
+ d doc like(xmlDocPtr) Doc holding ID
+
+ * xmlRef:
+ *
+ * An XML IDREF instance.
+
+ d xmlRefPtr s * based(######typedef######)
+
+ d xmlRef ds based(xmlRefPtr)
+ d align qualified
+ d next like(xmlRefPtr) Next Ref
+ d value * const xmlChar *
+ d attr like(xmlAttrPtr) Attribute holding it
+ d name * const xmlChar *
+ d lineno 10i 0 Line # if not avail
+
+ * xmlNode:
+ *
+ * A node in an XML tree.
+
+ d xmlNode ds based(xmlNodePtr)
+ d align qualified
+ d #private * Application data
+ d type like(xmlElementType)
+ d name * const xmlChar *
+ d children like(xmlNodePtr) Parent->children lnk
+ d last like(xmlNodePtr) Last child link
+ d parent like(xmlNodePtr) Child->parent link
+ d next like(xmlNodePtr) next sibling link
+ d prev like(xmlNodePtr) previous sibling lnk
+ d doc like(xmlDocPtr) The containing doc
+ d ns like(xmlNsPtr) Associated namespace
+ d content * xmlChar *
+ d properties like(xmlAttrPtr) Properties list
+ d nsDef like(xmlNsPtr) Node ns definitions
+ d psvi * Type/PSVI info
+ d line 5u 0 Line number
+ d extra 5u 0 Data for XPath/XSLT
+
+ * xmlDocProperty
+ *
+ * Set of properties of the document as found by the parser
+ * Some of them are linked to similary named xmlParserOption
+
+ d xmlDocProperties...
+ d s 10i 0 based(######typedef######) enum
+ d XML_DOC_WELLFORMED...
+ d c X'00000001'
+ d XML_DOC_NSVALID...
+ d c X'00000002'
+ d XML_DOC_OLD10 c X'00000004'
+ d XML_DOC_DTDVALID...
+ d c X'00000008'
+ d XML_DOC_XINCLUDE...
+ d c X'00000010'
+ d XML_DOC_USERBUILT...
+ d c X'00000020'
+ d XML_DOC_INTERNAL...
+ d c X'00000030'
+ d XML_DOC_HTML c X'00000080'
+
+ * xmlDoc:
+ *
+ * An XML document.
+
+ d xmlDoc ds based(xmlDocPtr)
+ d align qualified
+ d #private * Application data
+ d type like(xmlElementType) XML_DOCUMENT_NODE
+ d name * const xmlChar *
+ d children like(xmlNodePtr) The document tree
+ d last like(xmlNodePtr) Last child link
+ d parent like(xmlNodePtr) Child->parent link
+ d next like(xmlNodePtr) next sibling link
+ d prev like(xmlNodePtr) previous sibling lnk
+ d doc like(xmlDocPtr) Reference to itself
+ d compression 10i 0 zlib compression lev
+ d standalone 10i 0
+ d intSubset like(xmlDtdPtr) Internal subset
+ d extSubset like(xmlDtdPtr) External subset
+ d oldns like(xmlNsPtr) Global namespace
+ d version * const xmlChar *
+ d encoding * const xmlChar *
+ d ids * IDs hash table
+ d refs * IDREFs hash table
+ d URL * const xmlChar *
+ d charset 10i 0 In-memory encoding
+ d dict * xmlDictPtr for names
+ d psvi * Type/PSVI ino
+ d parseFlags 10i 0 xmlParserOption's
+ d properties 10i 0 xmlDocProperties
+
+ * xmlDOMWrapAcquireNsFunction:
+ * @ctxt: a DOM wrapper context
+ * @node: the context node (element or attribute)
+ * @nsName: the requested namespace name
+ * @nsPrefix: the requested namespace prefix
+ *
+ * A function called to acquire namespaces (xmlNs) from the wrapper.
+ *
+ * Returns an xmlNsPtr or NULL in case of an error.
+
+ d xmlDOMWrapAcquireNsFunction...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlDOMWrapCtxt:
+ *
+ * Context for DOM wrapper-operations.
+
+ d xmlDOMWrapCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlDOMWrapCtxt...
+ d ds based(xmlDOMWrapCtxtPtr)
+ d align qualified
+ d #private * void *
+ d type 10i 0
+ d namespaceMap * void *
+ d getNsForNodeFunc...
+ d like(xmlDOMWrapAcquireNsFunction)
+
+
+ * Variables.
+
+ * Some helper functions
+
+ /undefine XML_TESTVAL
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_XPATH_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_DEBUG_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_HTML_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SAX1_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_HTML_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_WRITER_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_DOCB_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlValidateNCName...
+ d pr 10i 0 extproc('xmlValidateNCName')
+ d value * value options(*string) const xmlChar *
+ d space 10i 0 value
+
+ /undefine XML_TESTVAL
+ /endif
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlValidateQName...
+ d pr 10i 0 extproc('xmlValidateQName')
+ d value * value options(*string) const xmlChar *
+ d space 10i 0 value
+
+ d xmlValidateName...
+ d pr 10i 0 extproc('xmlValidateName')
+ d value * value options(*string) const xmlChar *
+ d space 10i 0 value
+
+ d xmlValidateNMToken...
+ d pr 10i 0 extproc('xmlValidateNMToken')
+ d value * value options(*string) const xmlChar *
+ d space 10i 0 value
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlBuildQName pr * extproc('xmlBuildQName') xmlChar *
+ d ncname * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+ d memory 65535 options(*varsize: *omit) xmlChar[]
+ d len 10i 0 value memory length
+
+ d xmlSplitQName2 pr * extproc('xmlSplitQName2') xmlChar *
+ d name * value options(*string) const xmlChar *
+ d prefix * xmlChar *
+
+ d xmlSplitQName3 pr * extproc('xmlSplitQName3') const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d len 10i 0
+
+ * Handling Buffers, the old ones see @xmlBuf for the new ones.
+
+ d xmlSetBufferAllocationScheme...
+ d pr extproc(
+ d 'xmlSetBufferAllocationScheme')
+ d scheme value
+ d like(xmlBufferAllocationScheme)
+
+ d xmlGetBufferAllocationScheme...
+ d pr extproc(
+ d 'xmlGetBufferAllocationScheme')
+ d like(xmlBufferAllocationScheme)
+
+ d xmlBufferCreate...
+ d pr extproc('xmlBufferCreate')
+ d like(xmlBufferPtr)
+
+ d xmlBufferCreateSize...
+ d pr extproc('xmlBufferCreateSize')
+ d like(xmlBufferPtr)
+ d size 10u 0 value size_t
+
+ d xmlBufferCreateStatic...
+ d pr extproc('xmlBufferCreateStatic')
+ d like(xmlBufferPtr)
+ d mem * value
+ d size 10u 0 value size_t
+
+ d xmlBufferResize...
+ d pr 10i 0 extproc('xmlBufferResize')
+ d buf value like(xmlBufferPtr)
+ d size 10u 0 value size_t
+
+ d xmlBufferFree pr extproc('xmlBufferFree')
+ d buf value like(xmlBufferPtr)
+
+ d xmlBufferDump pr 10i 0 extproc('xmlBufferDump')
+ d file * value FILE *
+ d buf value like(xmlBufferPtr)
+
+ d xmlBufferAdd pr 10i 0 extproc('xmlBufferAdd')
+ d buf value like(xmlBufferPtr)
+ d str * value options(*string) const xmlChar *
+ d len 10i 0 value str length
+
+ d xmlBufferAddHead...
+ d pr 10i 0 extproc('xmlBufferAddHead')
+ d buf value like(xmlBufferPtr)
+ d str * value options(*string) const xmlChar *
+ d len 10i 0 value str length
+
+ d xmlBufferCat pr 10i 0 extproc('xmlBufferCat')
+ d buf value like(xmlBufferPtr)
+ d str * value options(*string) const xmlChar *
+
+ d xmlBufferCCat pr 10i 0 extproc('xmlBufferCCat')
+ d buf value like(xmlBufferPtr)
+ d str * value options(*string) const char *
+
+ d xmlBufferShrink...
+ d pr 10i 0 extproc('xmlBufferShrink')
+ d buf value like(xmlBufferPtr)
+ d len 10u 0 value str length
+
+ d xmlBufferGrow pr 10i 0 extproc('xmlBufferGrow')
+ d buf value like(xmlBufferPtr)
+ d len 10u 0 value str length
+
+ d xmlBufferEmpty pr extproc('xmlBufferEmpty')
+ d buf value like(xmlBufferPtr)
+
+ d xmlBufferContent...
+ d pr * extproc('xmlBufferContent') const xmlChar *
+ d buf value like(xmlBufferPtr)
+
+ d xmlBufferDetach...
+ d pr * extproc('xmlBufferDetach') xmlChar *
+ d buf value like(xmlBufferPtr)
+
+ d xmlBufferSetAllocationScheme...
+ d pr extproc(
+ d 'xmlBufferSetAllocationScheme')
+ d buf value like(xmlBufferPtr)
+ d scheme value
+ d like(xmlBufferAllocationScheme)
+
+ d xmlBufferLength...
+ d pr 10i 0 extproc('xmlBufferLength')
+ d buf value like(xmlBufferPtr)
+
+ * Creating/freeing new structures.
+
+ d xmlCreateIntSubset...
+ d pr extproc('xmlCreateIntSubset')
+ d like(xmlDtdPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemlID * value options(*string) const xmlChar *
+
+ d xmlNewDtd pr extproc('xmlNewDtd')
+ d like(xmlDtdPtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d ExternalID * value options(*string) const xmlChar *
+ d SystemlID * value options(*string) const xmlChar *
+
+ d xmlGetIntSubset...
+ d pr extproc('xmlGetIntSubset')
+ d like(xmlDtdPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlFreeDtd pr extproc('xmlFreeDtd')
+ d cur value like(xmlDtdPtr)
+
+ /if defined(LIBXML_LEGACY_ENABLED)
+ d xmlNewGlobalNs pr extproc('xmlNewGlobalNs')
+ d like(xmlNsPtr)
+ d doc value like(xmlDocPtr)
+ d href * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+ /endif LIBXML_LEGACY_ENABLD
+
+ d xmlNewNs pr extproc('xmlNewNs')
+ d like(xmlNsPtr)
+ d node value like(xmlNodePtr)
+ d href * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+
+ d xmlFreeNs pr extproc('xmlFreeNs')
+ d cur value like(xmlNsPtr)
+
+ d xmlFreeNsList pr extproc('xmlFreeNsList')
+ d cur value like(xmlNsPtr)
+
+ d xmlNewDoc pr extproc('xmlNewDoc')
+ d like(xmlDocPtr)
+ d version * value options(*string) const xmlChar *
+
+ d xmlFreeDoc pr extproc('xmlFreeDoc')
+ d cur value like(xmlDocPtr)
+
+ d xmlNewDocProp pr extproc('xmlNewDocProp')
+ d like(xmlAttrPtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_HTML_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlNewProp pr extproc('xmlNewProp')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlNewNsProp pr extproc('xmlNewNsProp')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlNewNsPropEatName...
+ d pr extproc('xmlNewNsPropEatName')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlFreePropList...
+ d pr extproc('xmlFreePropList')
+ d cur value like(xmlAttrPtr)
+
+ d xmlFreeProp pr extproc('xmlFreeProp')
+ d cur value like(xmlAttrPtr)
+
+ d xmlCopyProp pr extproc('xmlCopyProp')
+ d like(xmlAttrPtr)
+ d target value like(xmlNodePtr)
+ d cur value like(xmlAttrPtr)
+
+ d xmlCopyPropList...
+ d pr extproc('xmlCopyPropList')
+ d like(xmlAttrPtr)
+ d target value like(xmlNodePtr)
+ d cur value like(xmlAttrPtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlCopyDtd pr extproc('xmlCopyDtd')
+ d like(xmlDtdPtr)
+ d dtd value like(xmlDtdPtr)
+ /endif LIBXML_TREE_ENABLED
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlCopyDoc pr extproc('xmlCopyDoc')
+ d like(xmlDocPtr)
+ d doc value like(xmlDocPtr)
+ d recursive 10i 0 value
+
+ /undefine XML_TESTVAL
+ /endif
+
+ * Creating new nodes.
+
+ d xmlNewDocNode pr extproc('xmlNewDocNode')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewDocNodeEatName...
+ d pr extproc('xmlNewDocNodeEatName')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d ns value like(xmlNsPtr)
+ d name * value xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewNode pr extproc('xmlNewNode')
+ d like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlNewNodeEatName...
+ d pr extproc('xmlNewNodeEatName')
+ d like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value xmlChar *
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlNewChild pr extproc('xmlNewChild')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlNewDocText pr extproc('xmlNewDocText')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewText pr extproc('xmlNewText')
+ d like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewDocPI pr extproc('xmlNewDocPI')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewPI pr extproc('xmlNewPI')
+ d like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewDocTextLen...
+ d pr extproc('xmlNewDocTextLen')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlNewTextLen pr extproc('xmlNewTextLen')
+ d like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlNewDocComment...
+ d pr extproc('xmlNewDocComment')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewComment pr extproc('xmlNewComment')
+ d like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewCDataBlock...
+ d pr extproc('xmlNewCDataBlock')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlNewCharRef pr extproc('xmlNewCharRef')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlNewReference...
+ d pr extproc('xmlNewReference')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlCopyNode pr extproc('xmlCopyNode')
+ d like(xmlNodePtr)
+ d node value like(xmlNodePtr)
+ d recursive 10i 0 value
+
+ d xmlDocCopyNode pr extproc('xmlDocCopyNode')
+ d like(xmlNodePtr)
+ d node value like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d recursive 10i 0 value
+
+ d xmlDocCopyNodeList...
+ d pr extproc('xmlDocCopyNodeList')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlCopyNodeList...
+ d pr extproc('xmlCopyNodeList')
+ d like(xmlNodePtr)
+ d node value like(xmlNodePtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlNewTextChild...
+ d pr extproc('xmlNewTextChild')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewDocRawNode...
+ d pr extproc('xmlNewDocRawNode')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlNewDocFragment...
+ d pr extproc('xmlNewDocFragment')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ /endif LIBXML_TREE_ENABLED
+
+ * Navigating.
+
+ d xmlNewDocFragment...
+ d xmlGetLineNo pr 20i 0 extproc('xmlGetLineNo')
+ d node value like(xmlNodePtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_DEBUG_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlGetNodePath pr * extproc('xmlGetNodePath') xmlChar *
+ d node value like(xmlNodePtr)
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlDocGetRootElement...
+ d pr extproc('xmlDocGetRootElement')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlGetLastChild...
+ d pr extproc('xmlGetLastChild')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+
+ d xmlNodeIsText pr 10i 0 extproc('xmlNodeIsText')
+ d node value like(xmlNodePtr)
+
+ d xmlIsBlankNode pr 10i 0 extproc('xmlIsBlankNode')
+ d node value like(xmlNodePtr)
+
+ * Changing the structure.
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_WRITER_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlDocSetRootElement...
+ d pr extproc('xmlDocSetRootElement')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d root value like(xmlNodePtr)
+
+ /undefine XML_TESTVAL
+ /endif
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlNodeSetName pr extproc('xmlNodeSetName')
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlAddChild pr extproc('xmlAddChild')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlAddChildList...
+ d pr extproc('xmlAddChildList')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+ d cur value like(xmlNodePtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_WRITER_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlReplaceNode pr extproc('xmlReplaceNode')
+ d like(xmlNodePtr)
+ d old value like(xmlNodePtr)
+ d cur value like(xmlNodePtr)
+
+ /undefine XML_TESTVAL
+ /endif
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_HTML_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlAddPrevSibling...
+ d pr extproc('xmlAddPrevSibling')
+ d like(xmlNodePtr)
+ d cur value like(xmlNodePtr)
+ d elem value like(xmlNodePtr)
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlAddSibling pr extproc('xmlAddSibling')
+ d like(xmlNodePtr)
+ d cur value like(xmlNodePtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlAddNextSibling...
+ d pr extproc('xmlAddNextSibling')
+ d like(xmlNodePtr)
+ d cur value like(xmlNodePtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlUnlinkNode pr extproc('xmlUnlinkNode')
+ d cur value like(xmlNodePtr)
+
+ d xmlTextMerge pr extproc('xmlTextMerge')
+ d like(xmlNodePtr)
+ d first value like(xmlNodePtr)
+ d second value like(xmlNodePtr)
+
+ d xmlTextConcat pr 10i 0 extproc('xmlTextConcat')
+ d node value like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlFreeNodeList...
+ d pr extproc('xmlFreeNodeList')
+ d cur value like(xmlNodePtr)
+
+ d xmlFreeNode pr extproc('xmlFreeNode')
+ d cur value like(xmlNodePtr)
+
+ d xmlSetTreeDoc pr extproc('xmlSetTreeDoc')
+ d tree value like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlSetListDoc pr extproc('xmlSetListDoc')
+ d list value like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+
+ * Namespaces.
+
+ d xmlSearchNs pr extproc('xmlSearchNs')
+ d like(xmlNsPtr)
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d nameSpace * value options(*string) const xmlChar *
+
+ d xmlSearchNsByHref...
+ d pr extproc('xmlSearchNsByHref')
+ d like(xmlNsPtr)
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d href * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_XPATH_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlGetNsList pr * extproc('xmlGetNsList') xmlNsPtr *
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlSetNs pr extproc('xmlSetNs')
+ d node value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+
+ d xmlCopyNamespace...
+ d pr extproc('xmlCopyNamespace')
+ d like(xmlNsPtr)
+ d cur value like(xmlNsPtr)
+
+ d xmlCopyNamespaceList...
+ d pr extproc('xmlCopyNamespaceList')
+ d like(xmlNsPtr)
+ d cur value like(xmlNsPtr)
+
+ * Changing the content.
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_XINCLUDE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_HTML_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlSetProp pr extproc('xmlSetProp')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlSetNsProp pr extproc('xmlSetNsProp')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlGetNoNsProp pr * extproc('xmlGetNoNsProp') xmlChar *
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetProp pr * extproc('xmlGetProp') xmlChar *
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlHasProp pr extproc('xmlHasProp')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlHasNsProp pr extproc('xmlHasNsProp')
+ d like(xmlAttrPtr)
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d nameSpace * value options(*string) const xmlChar *
+
+ d xmlGetNsProp pr * extproc('xmlGetNsProp') xmlChar *
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d nameSpace * value options(*string) const xmlChar *
+
+ d xmlStringGetNodeList...
+ d pr extproc('xmlStringGetNodeList')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d value * value options(*string) const xmlChar *
+
+ d xmlStringLenGetNodeList...
+ d pr extproc('xmlStringLenGetNodeList')
+ d like(xmlNodePtr)
+ d doc value like(xmlDocPtr)
+ d value * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlNodeListGetString...
+ d pr * extproc('xmlNodeListGetString') xmlChar *
+ d doc value like(xmlDocPtr)
+ d list value like(xmlNodePtr)
+ d inLine 10i 0 value
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlNodeListGetRawString...
+ d pr * extproc('xmlNodeListGetRawString') xmlChar *
+ d doc value like(xmlDocPtr)
+ d list value like(xmlNodePtr)
+ d inLine 10i 0 value
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlNodeSetContent...
+ d pr extproc('xmlNodeSetContent')
+ d cur value like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlNodeSetContentLen...
+ d pr extproc('xmlNodeSetContentLen')
+ d cur value like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlNodeAddContent...
+ d pr extproc('xmlNodeAddContent')
+ d cur value like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlNodeAddContentLen...
+ d pr extproc('xmlNodeAddContentLen')
+ d cur value like(xmlNodePtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlNodeGetContent...
+ d pr * extproc('xmlNodeGetContent') xmlChar *
+ d cur value like(xmlNodePtr)
+
+ d xmlNodeBufGetContent...
+ d pr 10i 0 extproc('xmlNodeBufGetContent')
+ d buffer value like(xmlBufferPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlBufGetNodeContent...
+ d pr 10i 0 extproc('xmlBufGetNodeContent')
+ d buf value like(xmlBufPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlNodeGetLang pr * extproc('xmlNodeGetLang') xmlChar *
+ d cur value like(xmlNodePtr)
+
+ d xmlNodeGetSpacePreserve...
+ d pr 10i 0 extproc('xmlNodeGetSpacePreserve')
+ d cur value like(xmlNodePtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlNodeSetLang pr extproc('xmlNodeSetLang')
+ d cur value like(xmlNodePtr)
+ d lang * value options(*string) const xmlChar *
+
+ d xmlNodeSetSpacePreserve...
+ d pr extproc('xmlNodeSetSpacePreserve')
+ d cur value like(xmlNodePtr)
+ d val 10i 0 value
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlNodeGetBase pr * extproc('xmlNodeGetBase') xmlChar *
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_XINCLUDE_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlNodeSetBase pr extproc('xmlNodeSetBase')
+ d node value like(xmlNodePtr)
+ d uri * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ * Removing content.
+
+ d xmlRemoveProp pr 10i 0 extproc('xmlRemoveProp')
+ d cur value like(xmlAttrPtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlUnsetNsProp pr 10i 0 extproc('xmlUnsetNsProp')
+ d node value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlUnsetProp pr 10i 0 extproc('xmlUnsetProp')
+ d node value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ * Internal, don't use.
+
+ d xmlBufferWriteCharacter... Warning: renamed
+ d pr extproc('xmlBufferWriteCHAR')
+ d buf value like(xmlBufferPtr)
+ d string * value options(*string) const xmlChar *
+
+ d xmlBufferWriteChar...
+ d pr extproc('xmlBufferWriteChar')
+ d buf value like(xmlBufferPtr)
+ d string * value options(*string) const xmlChar *
+
+ d xmlBufferWriteQuotedString...
+ d pr extproc('xmlBufferWriteQuotedString')
+ d buf value like(xmlBufferPtr)
+ d string * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlAttrSerializeTxtContent...
+ d pr extproc('xmlAttrSerializeTxtContent')
+ d buf value like(xmlBufferPtr)
+ d attr value like(xmlAttrPtr)
+ d string * value options(*string) const xmlChar *
+ /endif LIBXML_OUTPUT_ENABLD
+
+ /if defined(LIBXML_TREE_ENABLED)
+
+ * Namespace handling.
+
+ d xmlReconciliateNs...
+ d pr 10i 0 extproc('xmlReconciliateNs')
+ d doc value like(xmlDocPtr)
+ d tree value like(xmlNodePtr)
+ /endif
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+
+ * Saving.
+
+ d xmlDocDumpFormatMemory...
+ d pr extproc('xmlDocDumpFormatMemory')
+ d cur value like(xmlDocPtr)
+ d mem * xmlChar * (*)
+ d size 10i 0
+ d format 10i 0 value
+
+ d xmlDocDumpMemory...
+ d pr extproc('xmlDocDumpMemory')
+ d cur value like(xmlDocPtr)
+ d mem * xmlChar * (*)
+ d size 10i 0
+
+ d xmlDocDumpMemoryEnc...
+ d pr extproc('xmlDocDumpMemoryEnc')
+ d out_doc value like(xmlDocPtr)
+ d doc_txt_ptr * xmlChar * (*)
+ d doc_txt_len 10i 0
+ d txt_encoding * value options(*string) const char *
+
+ d xmlDocDumpFormatMemoryEnc...
+ d pr extproc('xmlDocDumpFormatMemoryEnc')
+ d out_doc value like(xmlDocPtr)
+ d doc_txt_ptr * xmlChar * (*)
+ d doc_txt_len 10i 0
+ d txt_encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d xmlDocFormatDump...
+ d pr 10i 0 extproc('xmlDocFormatDump')
+ d f * value FILE *
+ d cur value like(xmlDocPtr)
+ d format 10i 0 value
+
+ d xmlDocDump pr 10i 0 extproc('xmlDocDump')
+ d f * value FILE *
+ d cur value like(xmlDocPtr)
+
+ d xmlElemDump pr extproc('xmlElemDump')
+ d f * value FILE *
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlSaveFile pr 10i 0 extproc('xmlSaveFile')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+
+ d xmlSaveFormatFile...
+ d pr 10i 0 extproc('xmlSaveFormatFile')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+ d format 10i 0 value
+
+ d xmlBufNodeDump pr 10u 0 extproc('xmlBufNodeDump') size_t
+ d buf value like(xmlBufPtr)
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+ d level 10i 0 value
+ d format 10i 0 value
+
+ d xmlNodeDump pr 10i 0 extproc('xmlNodeDump')
+ d buf value like(xmlBufferPtr)
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+ d level 10i 0 value
+ d format 10i 0 value
+
+ d xmlSaveFileTo pr 10i 0 extproc('xmlSaveFileTo')
+ d buf value like(xmlOutputBufferPtr)
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+
+ d xmlSaveFormatFileTo...
+ d pr 10i 0 extproc('xmlSaveFormatFileTo')
+ d buf value like(xmlOutputBufferPtr)
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d xmlNodeDumpOutput...
+ d pr extproc('xmlNodeDumpOutput')
+ d buf value like(xmlOutputBufferPtr)
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlNodePtr)
+ d level 10i 0 value
+ d format 10i 0 value
+ d encoding * value options(*string) const char *
+
+ d xmlSaveFormatFileEnc...
+ d pr 10i 0 extproc('xmlSaveFormatFileEnc')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+ d format 10i 0 value
+
+ d xmlSaveFileEnc pr 10i 0 extproc('xmlSaveFileEnc')
+ d filename * value options(*string) const char *
+ d cur value like(xmlDocPtr)
+ d encoding * value options(*string) const char *
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * XHTML
+
+ d xmlIsXHTML pr 10i 0 extproc('xmlIsXHTML')
+ d systemID * value options(*string) const xmlChar *
+ d publicID * value options(*string) const xmlChar *
+
+ * Compression.
+
+ d xmlGetDocCompressMode...
+ d pr 10i 0 extproc('xmlGetDocCompressMode')
+ d doc value like(xmlDocPtr)
+
+ d xmlSetDocCompressMode...
+ d pr extproc('xmlSetDocCompressMode')
+ d doc value like(xmlDocPtr)
+ d mode 10i 0 value
+
+ d xmlGetCompressMode...
+ d pr 10i 0 extproc('xmlGetCompressMode')
+
+ d xmlSetCompressMode...
+ d pr extproc('xmlSetCompressMode')
+ d mode 10i 0 value
+
+ * DOM-wrapper helper functions.
+
+ d xmlDOMWrapNewCtxt...
+ d pr extproc('xmlDOMWrapNewCtxt')
+ d like(xmlDOMWrapCtxtPtr)
+
+ d xmlDOMWrapFreeCtxt...
+ d pr extproc('xmlDOMWrapFreeCtxt')
+ d ctxt value like(xmlDOMWrapCtxtPtr)
+
+ d xmlDOMWrapReconcileNamespaces...
+ d pr 10i 0 extproc(
+ d 'xmlDOMWrapReconcileNamespaces')
+ d ctxt value like(xmlDOMWrapCtxtPtr)
+ d elem value like(xmlNodePtr)
+ d options 10i 0 value
+
+ d xmlDOMWrapAdoptNode...
+ d pr 10i 0 extproc('xmlDOMWrapAdoptNode')
+ d ctxt value like(xmlDOMWrapCtxtPtr)
+ d sourceDoc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d destDoc value like(xmlDocPtr)
+ d destParent value like(xmlNodePtr)
+ d options 10i 0 value
+
+ d xmlDOMWrapRemoveNode...
+ d pr 10i 0 extproc('xmlDOMWrapRemoveNode')
+ d ctxt value like(xmlDOMWrapCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d options 10i 0 value
+
+ d xmlDOMWrapCloneNode...
+ d pr 10i 0 extproc('xmlDOMWrapCloneNode')
+ d ctxt value like(xmlDOMWrapCtxtPtr)
+ d sourceDoc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d clonedNode like(xmlNodePtr)
+ d destDoc value like(xmlDocPtr)
+ d destParent value like(xmlNodePtr)
+ d options 10i 0 value
+
+ /if defined(LIBXML_TREE_ENABLED)
+
+ * 5 interfaces from DOM ElementTraversal, but different in entities
+ * traversal.
+
+ d xmlChildElementCount...
+ d pr 20u 0 extproc('xmlChildElementCount')
+ d parent value like(xmlNodePtr)
+
+ d xmlNextElementSibling...
+ d pr extproc('xmlNextElementSibling')
+ d like(xmlNodePtr)
+ d node value like(xmlNodePtr)
+
+ d xmlFirstElementChild...
+ d pr extproc('xmlFirstElementChild')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+
+ d xmlLastElementChild...
+ d pr extproc('xmlLastElementChild')
+ d like(xmlNodePtr)
+ d parent value like(xmlNodePtr)
+
+ d xmlPreviousElementSibling...
+ d pr extproc('xmlPreviousElementSibling')
+ d like(xmlNodePtr)
+ d node value like(xmlNodePtr)
+ /endif
+
+ /if not defined(XML_PARSER_H__)
+ /include "libxmlrpg/xmlmemory"
+ /endif
+
+ /endif XML_TREE_H__
diff --git a/os400/libxmlrpg/uri.rpgle b/os400/libxmlrpg/uri.rpgle
new file mode 100644
index 0000000..9a23d80
--- /dev/null
+++ b/os400/libxmlrpg/uri.rpgle
@@ -0,0 +1,100 @@
+ * Summary: library of generic URI related routines
+ * Description: library of generic URI related routines
+ * Implements RFC 2396
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_URI_H__)
+ /define XML_URI_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ * xmlURI:
+ *
+ * A parsed URI reference. This is a struct containing the various fields
+ * as described in RFC 2396 but separated for further processing.
+ *
+ * Note: query is a deprecated field which is incorrectly unescaped.
+ * query_raw takes precedence over query if the former is set.
+ * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127
+
+ d xmlURIPtr s * based(######typedef######)
+
+ d xmlURI ds based(xmlURIPtr)
+ d align qualified
+ d scheme * char *
+ d opaque * char *
+ d authority * char *
+ d server * char *
+ d user * char *
+ d port 10i 0
+ d path * char *
+ d query * char *
+ d fragment * char *
+ d cleanup 10i 0
+ d query_raw * char *
+
+ d xmlCreateURI pr extproc('xmlCreateURI')
+ d like(xmlURIPtr)
+
+ d xmlBuildURI pr * extproc('xmlBuildURI') xmlChar *
+ d URI * value options(*string) const xmlChar *
+ d base * value options(*string) const xmlChar *
+
+ d xmlBuildRelativeURI...
+ d pr * extproc('xmlBuildRelativeURI') xmlChar *
+ d URI * value options(*string) const xmlChar *
+ d base * value options(*string) const xmlChar *
+
+ d xmlParseURI pr extproc('xmlParseURI')
+ d like(xmlURIPtr)
+ d str * value options(*string) const char *
+
+ d xmlParseURIRaw pr extproc('xmlParseURIRaw')
+ d like(xmlURIPtr)
+ d str * value options(*string) const char *
+ d raw 10i 0 value
+
+ d xmlParseURIReference...
+ d pr 10i 0 extproc('xmlParseURIReference')
+ d uri value like(xmlURIPtr)
+ d str * value options(*string) const char *
+
+ d xmlSaveUri pr * extproc('xmlSaveUri') xmlChar *
+ d uri value like(xmlURIPtr)
+
+ d xmlPrintURI pr extproc('xmlPrintURI')
+ d stream * value FILE *
+ d uri value like(xmlURIPtr)
+
+ d xmlURIEscapeStr...
+ d pr * extproc('xmlURIEscapeStr') xmlChar *
+ d str * value options(*string) const xmlChar *
+ d list * value options(*string) const xmlChar *
+
+ d xmlURIUnescapeString...
+ d pr * extproc('xmlURIUnescapeString') char *
+ d str * value options(*string) const char *
+ d len 10i 0 value
+ d target * value options(*string) char *
+
+ d xmlNormalizeURIPath...
+ d pr 10i 0 extproc('xmlNormalizeURIPath')
+ d path * value options(*string) char *
+
+ d xmlURIEscape pr * extproc('xmlURIEscape') xmlChar *
+ d str * value options(*string) const xmlChar *
+
+ d xmlFreeURI pr extproc('xmlFreeURI')
+ d uri value like(xmlURIPtr)
+
+ d xmlCanonicPath pr * extproc('xmlCanonicPath') xmlChar *
+ d path * value options(*string) const xmlChar *
+
+ d xmlPathToURI pr * extproc('xmlPathToURI') xmlChar *
+ d path * value options(*string) const xmlChar *
+
+ /endif XML_URI_H__
diff --git a/os400/libxmlrpg/valid.rpgle b/os400/libxmlrpg/valid.rpgle
new file mode 100644
index 0000000..722b89d
--- /dev/null
+++ b/os400/libxmlrpg/valid.rpgle
@@ -0,0 +1,575 @@
+ * Summary: The DTD validation
+ * Description: API for the DTD handling and the validity checking
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_VALID_H__)
+ /define XML_VALID_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/xmlerror"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/list"
+ /include "libxmlrpg/xmlautomata"
+ /include "libxmlrpg/xmlregexp"
+
+ * Validation state added for non-determinist content model.
+
+ d xmlValidStatePtr...
+ d s * based(######typedef######)
+
+ * xmlValidityErrorFunc:
+ * @ctx: usually an xmlValidCtxtPtr to a validity error context,
+ * but comes from ctxt->userData (which normally contains such
+ * a pointer); ctxt->userData can be changed by the user.
+ * @msg: the string to format *printf like vararg
+ * @...: remaining arguments to the format
+ *
+ * Callback called when a validity error is found. This is a message
+ * oriented function similar to an *printf function.
+
+ d xmlValidityErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlValidityWarningFunc:
+ * @ctx: usually an xmlValidCtxtPtr to a validity error context,
+ * but comes from ctxt->userData (which normally contains such
+ * a pointer); ctxt->userData can be changed by the user.
+ * @msg: the string to format *printf like vararg
+ * @...: remaining arguments to the format
+ *
+ * Callback called when a validity warning is found. This is a message
+ * oriented function similar to an *printf function.
+
+ d xmlValidityWarningFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlValidCtxt:
+ * An xmlValidCtxt is used for error reporting when validating.
+
+ d xmlValidCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlValidCtxt ds based(xmlValidCtxtPtr)
+ d align qualified
+ d userdata * void *
+ d error like(xmlValidityErrorFunc) Error callback
+ d warning like(xmlValidityWarningFunc) Warning callback
+ *
+ * Node analysis stack used when validating within entities
+ *
+ d node like(xmlNodePtr) Current parsed Node
+ d nodeNr 10i 0 Parsing stack depth
+ d nodeMax 10i 0 Max stack depth
+ d nodeTab * xmlNodePtr *
+ *
+ d finishDtd 10u 0 Finish validtng DTD?
+ d doc like(xmlDocPtr) The document
+ d valid 10i 0 Temp check result
+ *
+ * state state used for non-determinist content validation
+ *
+ d vstate * xmlValidState *
+ d vstateNr 10i 0 Validat. stack depth
+ d vstateMax 10i 0 Max stack depth
+ d vstateTab * xmlValidState *
+ *
+ /if defined(LIBXML_REGEXP_ENABLED)
+ d am like(xmlAutomataPtr) The automata
+ d state like(xmlAutomataStatePtr) Automata build state
+ /else
+ d am *
+ d state *
+ /endif
+
+ * ALL notation declarations are stored in a table.
+ * There is one table per DTD.
+
+ d xmlNotationTablePtr...
+ d s * based(######typedef######)
+
+ * ALL element declarations are stored in a table.
+ * There is one table per DTD.
+
+ d xmlElementTablePtr...
+ d s * based(######typedef######)
+
+ * ALL attribute declarations are stored in a table.
+ * There is one table per DTD.
+
+ d xmlAttributeTablePtr...
+ d s * based(######typedef######)
+
+ * ALL IDs attributes are stored in a table.
+ * There is one table per document.
+
+ d xmlIDTablePtr s * based(######typedef######)
+
+ * ALL Refs attributes are stored in a table.
+ * There is one table per document.
+
+ d xmlRefTablePtr s * based(######typedef######)
+
+ * Notation
+
+ d xmlAddNotationDecl...
+ d pr extproc('xmlAddNotationDecl')
+ d like(xmlNotationPtr)
+ d ctxt value like(xmlValidCtxtPtr)
+ d dtd value like(xmlDtdPtr)
+ d name * value options(*string) const xmlChar *
+ d PublicID * value options(*string) const xmlChar *
+ d SystemID * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlCopyNotationTable...
+ d pr extproc('xmlCopyNotationTable')
+ d like(xmlNotationPtr)
+ d table value like(xmlNotationTablePtr)
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlFreeNotationTable...
+ d pr extproc('xmlFreeNotationTable')
+ d table value like(xmlNotationTablePtr)
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlDumpNotationDecl...
+ d pr extproc('xmlDumpNotationDecl')
+ d buf value like(xmlBufferPtr)
+ d nota value like(xmlNotationPtr)
+
+ d xmlDumpNotationTable...
+ d pr extproc('xmlDumpNotationTable')
+ d buf value like(xmlBufferPtr)
+ d table value like(xmlNotationTablePtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * Element Content
+ * the non Doc version are being deprecated
+
+ d xmlNewElementContent...
+ d pr extproc('xmlNewElementContent')
+ d like(xmlElementContentPtr)
+ d name * value const xmlChar *
+ d type value like(xmlElementContentType)
+
+ d xmlCopyElementContent...
+ d pr extproc('xmlCopyElementContent')
+ d like(xmlElementContentPtr)
+ d content value like(xmlElementContentPtr)
+
+ d xmlFreeElementContent...
+ d pr extproc('xmlFreeElementContent')
+ d cur value like(xmlElementContentPtr)
+
+ * the new versions with doc argument
+
+ d xmlNewDocElementContent...
+ d pr extproc('xmlNewDocElementContent')
+ d like(xmlElementContentPtr)
+ d doc value like(xmlDocPtr)
+ d name * value const xmlChar *
+ d type value like(xmlElementContentType)
+
+ d xmlCopyDocElementContent...
+ d pr extproc('xmlCopyDocElementContent')
+ d like(xmlElementContentPtr)
+ d doc value like(xmlDocPtr)
+ d content value like(xmlElementContentPtr)
+
+ d xmlFreeDocElementContent...
+ d pr extproc('xmlFreeDocElementContent')
+ d doc value like(xmlDocPtr)
+ d cur value like(xmlElementContentPtr)
+
+ d xmlSnprintfElementContent...
+ d pr extproc('xmlSnprintfElementContent')
+ d buf 65535 options(*varsize)
+ d size 10i 0 value
+ d content value like(xmlElementContentPtr)
+ d englob 10i 0 value
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ * DEPRECATED
+ d xmlSprintfElementContent...
+ d pr extproc('xmlSprintfElementContent')
+ d buf 65535 options(*varsize)
+ d content value like(xmlElementContentPtr)
+ d englob 10i 0 value
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * DEPRECATED
+
+ * Element
+
+ d xmlAddElementDecl...
+ d pr extproc('xmlAddElementDecl')
+ d like(xmlElementPtr)
+ d ctxt value like(xmlValidCtxtPtr)
+ d dtd value like(xmlDtdPtr)
+ d name * value options(*string) const xmlChar *
+ d type value like(xmlElementTypeVal)
+ d content value like(xmlElementContentPtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlCopyElementTable...
+ d pr extproc('xmlCopyElementTable')
+ d like(xmlElementTablePtr)
+ d table value like(xmlElementTablePtr)
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlFreeElementTable...
+ d pr extproc('xmlFreeElementTable')
+ d table value like(xmlElementTablePtr)
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlDumpElementTable...
+ d pr extproc('xmlDumpElementTable')
+ d buf value like(xmlBufferPtr)
+ d table value like(xmlElementTablePtr)
+
+ d xmlDumpElementDecl...
+ d pr extproc('xmlDumpElementDecl')
+ d buf value like(xmlBufferPtr)
+ d elem value like(xmlElementPtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * Enumeration
+
+ d xmlCreateEnumeration...
+ d pr extproc('xmlCreateEnumeration')
+ d like(xmlEnumerationPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlFreeEnumeration...
+ d pr extproc('xmlFreeEnumeration')
+ d cur value like(xmlEnumerationPtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlCopyEnumeration...
+ d pr extproc('xmlCopyEnumeration')
+ d like(xmlEnumerationPtr)
+ d cur value like(xmlEnumerationPtr)
+ /endif LIBXML_TREE_ENABLED
+
+ * Attribute
+
+ d xmlAddAttributeDecl...
+ d pr extproc('xmlAddAttributeDecl')
+ d like(xmlAttributePtr)
+ d ctxt value like(xmlValidCtxtPtr)
+ d dtd value like(xmlDtdPtr)
+ d elem * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d ns * value options(*string) const xmlChar *
+ d type value like(xmlAttributeType)
+ d def value like(xmlAttributeDefault)
+ d defaultValue * value options(*string) const xmlChar *
+ d tree value like(xmlEnumerationPtr)
+
+ /if defined(LIBXML_TREE_ENABLED)
+ d xmlCopyAttributeTable...
+ d pr extproc('xmlCopyAttributeTable')
+ d like(xmlAttributeTablePtr)
+ d table value like(xmlAttributeTablePtr)
+ /endif LIBXML_TREE_ENABLED
+
+ d xmlFreeAttributeTable...
+ d pr extproc('xmlFreeAttributeTable')
+ d table value like(xmlAttributeTablePtr)
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlDumpAttributeTable...
+ d pr extproc('xmlDumpAttributeTable')
+ d buf value like(xmlBufferPtr)
+ d table value like(xmlAttributeTablePtr)
+
+ d xmlDumpAttributeDecl...
+ d pr extproc('xmlDumpAttributeDecl')
+ d buf value like(xmlBufferPtr)
+ d attr value like(xmlAttributePtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * IDs
+
+ d xmlAddID pr extproc('xmlAddID')
+ d like(xmlIDPtr)
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d value * value options(*string) const xmlChar *
+ d attr value like(xmlAttrPtr)
+
+ d xmlFreeIdTable pr extproc('xmlFreeIDTable')
+ d table value like(xmlIDTablePtr)
+
+ d xmlGetID pr extproc('xmlGetID')
+ d like(xmlAttrPtr)
+ d doc value like(xmlDocPtr)
+ d ID * value options(*string) const xmlChar *
+
+ d xmlIsID pr 10i 0 extproc('xmlIsID')
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d attr value like(xmlAttrPtr)
+
+ d xmlRemoveID pr 10i 0 extproc('xmlRemoveID')
+ d doc value like(xmlDocPtr)
+ d attr value like(xmlAttrPtr)
+
+ * IDREFs
+
+ d xmlAddRef pr extproc('xmlAddRef')
+ d like(xmlRefPtr)
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d value * value options(*string) const xmlChar *
+ d attr value like(xmlAttrPtr)
+
+ d xmlFreeRefTable...
+ d pr extproc('xmlFreeRefTable')
+ d table value like(xmlRefTablePtr)
+
+ d xmlIsRef pr 10i 0 extproc('xmlIsRef')
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d attr value like(xmlAttrPtr)
+
+ d xmlRemoveRef pr 10i 0 extproc('xmlRemoveRef')
+ d doc value like(xmlDocPtr)
+ d attr value like(xmlAttrPtr)
+
+ d xmlGetRefs pr extproc('xmlGetRefs')
+ d like(xmlListPtr)
+ d doc value like(xmlDocPtr)
+ d ID * value options(*string) const xmlChar *
+
+ * The public function calls related to validity checking.
+
+ /if defined(LIBXML_VALID_ENABLED)
+ * Allocate/Release Validation Contexts
+
+ d xmlNewValidCtxt...
+ d pr extproc('xmlNewValidCtxt')
+ d like(xmlValidCtxtPtr)
+
+ d xmlFreeValidCtxt...
+ d pr extproc('xmlFreeValidCtxt')
+ d ctxt value like(xmlValidCtxtPtr)
+
+ d xmlValidateRoot...
+ d pr 10i 0 extproc('xmlValidateRoot')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlValidateElementDecl...
+ d pr 10i 0 extproc('xmlValidateElementDecl')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlElementPtr)
+
+ d xmlValidNormalizeAttributeValue...
+ d pr * extproc( xmlChar *
+ d 'xmlValidNormalizeAttributeValue')
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidCtxtNormalizeAttributeValue...
+ d pr * extproc('xmlValidCtxt+ xmlChar *
+ d NormalizeAttributeValue')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+ d name * value options(*string) const xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateAttributeDecl...
+ d pr 10i 0 extproc('xmlValidateAttributeDecl')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d attr value like(xmlAttributePtr)
+
+ d xmlValidateAttributeValue...
+ d pr 10i 0 extproc('xmlValidateAttributeValue')
+ d type value like(xmlAttributeType)
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateNotationDecl...
+ d pr 10i 0 extproc('xmlValidateNotationDecl')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d nota value like(xmlNotationPtr)
+
+ d xmlValidateDtd pr 10i 0 extproc('xmlValidateDtd')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d dtd value like(xmlDtdPtr)
+
+ d xmlValidateDtdFinal...
+ d pr 10i 0 extproc('xmlValidateDtdFinal')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlValidateDocument...
+ d pr 10i 0 extproc('xmlValidateDocument')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlValidateElement...
+ d pr 10i 0 extproc('xmlValidateElement')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlValidateOneElement...
+ d pr 10i 0 extproc('xmlValidateOneElement')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlValidateOneAttribute...
+ d pr 10i 0 extproc('xmlValidateOneAttribute')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+ d attr value like(xmlAttrPtr)
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateOneNamespace...
+ d pr 10i 0 extproc('xmlValidateOneNamespace')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+ d prefix * value options(*string) const xmlChar *
+ d ns value like(xmlNsPtr)
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateDocumentFinal...
+ d pr 10i 0 extproc('xmlValidateDocumentFinal')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ /endif LIBXML_VALID_ENABLED
+
+ /undefine XML_TESTVAL
+ /if defined(LIBXML_VALID_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlValidateNotationUse...
+ d pr 10i 0 extproc('xmlValidateNotationUse')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d notationName * value options(*string) const xmlChar *
+
+ /undefine XML_TESTVAL
+ /endif
+
+ d xmlIsMixedElement...
+ d pr 10i 0 extproc('xmlIsMixedElement')
+ d doc value like(xmlDocPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetDtdAttrDesc...
+ d pr extproc('xmlGetDtdAttrDesc')
+ d like(xmlAttributePtr)
+ d dtd value like(xmlDtdPtr)
+ d elem * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetDtdQAttrDesc...
+ d pr extproc('xmlGetDtdQAttrDesc')
+ d like(xmlAttributePtr)
+ d dtd value like(xmlDtdPtr)
+ d elem * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+
+ d xmlGetDtdNotationDesc...
+ d pr extproc('xmlGetDtdNotationDesc')
+ d like(xmlNotationPtr)
+ d dtd value like(xmlDtdPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlGetDtdQElementDesc...
+ d pr extproc('xmlGetDtdQElementDesc')
+ d like(xmlElementPtr)
+ d dtd value like(xmlDtdPtr)
+ d name * value options(*string) const xmlChar *
+ d prefix * value options(*string) const xmlChar *
+
+ d xmlGetDtdElementDesc...
+ d pr extproc('xmlGetDtdElementDesc')
+ d like(xmlElementPtr)
+ d dtd value like(xmlDtdPtr)
+ d name * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_VALID_ENABLED)
+ d xmlValidGetPotentialChildren...
+ d pr 10i 0 extproc(
+ d 'xmlValidGetPotentialChildren')
+ d ctree * value xmlElementContent *
+ d names * const xmlChar *(*)
+ d len 10i 0
+ d max 10i 0 value
+
+ d xmlValidGetValidElements...
+ d pr 10i 0 extproc('xmlValidGetValidElements')
+ d prev like(xmlNodePtr)
+ d next like(xmlNodePtr)
+ d names * const xmlChar *(*)
+ d max 10i 0 value
+
+ d xmlValidateNameValue...
+ d pr 10i 0 extproc('xmlValidateNameValue')
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateNamesValue...
+ d pr 10i 0 extproc('xmlValidateNamesValue')
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateNmtokenValue...
+ d pr 10i 0 extproc('xmlValidateNmtokenValue')
+ d value * value options(*string) const xmlChar *
+
+ d xmlValidateNmtokensValue...
+ d pr 10i 0 extproc('xmlValidateNmtokensValue')
+ d value * value options(*string) const xmlChar *
+
+ /if defined(LIBXML_REGEXP_ENABLED)
+ * Validation based on the regexp support
+
+ d xmlValidBuildContentModel...
+ d pr 10i 0 extproc('xmlValidBuildContentModel')
+ d ctxt value like(xmlValidCtxtPtr)
+ d elem value like(xmlElementPtr)
+
+ d xmlValidatePushElement...
+ d pr 10i 0 extproc('xmlValidatePushElement')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+ d qname * value options(*string) const xmlChar *
+
+ d xmlValidatePushCData...
+ d pr 10i 0 extproc('xmlValidatePushCData')
+ d ctxt value like(xmlValidCtxtPtr)
+ d data * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlValidatePopElement...
+ d pr 10i 0 extproc('xmlValidatePopElement')
+ d ctxt value like(xmlValidCtxtPtr)
+ d doc value like(xmlDocPtr)
+ d elem value like(xmlNodePtr)
+ d qname * value options(*string) const xmlChar *
+
+ /endif LIBXML_REGEXP_ENABLD
+ /endif LIBXML_VALID_ENABLED
+ /endif XML_VALID_H__
diff --git a/os400/libxmlrpg/xinclude.rpgle b/os400/libxmlrpg/xinclude.rpgle
new file mode 100644
index 0000000..c0b68ff
--- /dev/null
+++ b/os400/libxmlrpg/xinclude.rpgle
@@ -0,0 +1,147 @@
+ * Summary: implementation of XInclude
+ * Description: API to handle XInclude processing,
+ * implements the
+ * World Wide Web Consortium Last Call Working Draft 10 November 2003
+ * http://www.w3.org/TR/2003/WD-xinclude-20031110
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XINCLUDE_H__)
+ /define XML_XINCLUDE_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ /if defined(LIBXML_XINCLUDE_ENABLED)
+
+ * XINCLUDE_NS:
+ *
+ * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude
+
+ d XINCLUDE_NS c 'http://www.w3.org/2003/XInclude'
+
+
+ * XINCLUDE_OLD_NS:
+ *
+ * Define the draft Xinclude namespace: http://www.w3.org/2001/XInclude
+
+ d XINCLUDE_OLD_NS...
+ d c 'http://www.w3.org/2001/XInclude'
+
+ * XINCLUDE_NODE:
+ *
+ * Macro defining "include"
+
+ d XINCLUDE_NODE c 'include'
+
+ * XINCLUDE_FALLBACK:
+ *
+ * Macro defining "fallback"
+
+ d XINCLUDE_FALLBACK...
+ d c 'fallback'
+
+ * XINCLUDE_HREF:
+ *
+ * Macro defining "href"
+
+ d XINCLUDE_HREF c 'href'
+
+ * XINCLUDE_PARSE:
+ *
+ * Macro defining "parse"
+
+ d XINCLUDE_PARSE c 'parse'
+
+ * XINCLUDE_PARSE_XML:
+ *
+ * Macro defining "xml"
+
+ d XINCLUDE_PARSE_XML...
+ d c 'xml'
+
+ * XINCLUDE_PARSE_TEXT:
+ *
+ * Macro defining "text"
+
+ d XINCLUDE_PARSE_TEXT...
+ d c 'text'
+
+ * XINCLUDE_PARSE_ENCODING:
+ *
+ * Macro defining "encoding"
+
+ d XINCLUDE_PARSE_ENCODING...
+ d c 'encoding'
+
+ * XINCLUDE_PARSE_XPOINTER:
+ *
+ * Macro defining "xpointer"
+
+ d XINCLUDE_PARSE_XPOINTER...
+ d c 'xpointer'
+
+ d xmlXIncludeCtxtPtr...
+ d s * based(######typedef######)
+
+ * standalone processing
+
+ d xmlXIncludeProcess...
+ d pr 10i 0 extproc('xmlXIncludeProcess')
+ d doc value like(xmlDocPtr)
+
+ d xmlXIncludeProcessFlags...
+ d pr 10i 0 extproc('xmlXIncludeProcessFlags')
+ d doc value like(xmlDocPtr)
+ d flags 10i 0 value
+
+ d xmlXIncludeProcessFlagsData...
+ d pr 10i 0 extproc(
+ d 'xmlXIncludeProcessFlagsData')
+ d doc value like(xmlDocPtr)
+ d flags 10i 0 value
+ d data * value void *
+
+ d xmlXIncludeProcessTreeFlagsData...
+ d pr 10i 0 extproc(
+ d 'xmlXIncludeProcessTreeFlagsData')
+ d tree value like(xmlNodePtr)
+ d flags 10i 0 value
+ d data * value void *
+
+ d xmlXIncludeProcessTree...
+ d pr 10i 0 extproc('xmlXIncludeProcessTree')
+ d tree value like(xmlNodePtr)
+
+ d xmlXIncludeProcessTreeFlags...
+ d pr 10i 0 extproc(
+ d 'xmlXIncludeProcessTreeFlags')
+ d tree value like(xmlNodePtr)
+ d flags 10i 0 value
+
+
+ * contextual processing
+
+ d xmlXIncludeNewContext...
+ d pr extproc('xmlXIncludeNewContext')
+ d like(xmlXIncludeCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlXIncludeSetFlags...
+ d pr 10i 0 extproc('xmlXIncludeSetFlags')
+ d ctxt value like(xmlXIncludeCtxtPtr)
+ d flags 10i 0 value
+
+ d xmlXIncludeFreeContext...
+ d pr extproc('xmlXIncludeFreeContext')
+ d ctxt value like(xmlXIncludeCtxtPtr)
+
+ d xmlXIncludeProcessNode...
+ d pr 10i 0 extproc('xmlXIncludeProcessNode')
+ d ctxt value like(xmlXIncludeCtxtPtr)
+ d tree value like(xmlNodePtr)
+
+ /endif XINCLUDE_ENABLED
+ /endif XML_XINCLUDE_H__
diff --git a/os400/libxmlrpg/xlink.rpgle b/os400/libxmlrpg/xlink.rpgle
new file mode 100644
index 0000000..964e605
--- /dev/null
+++ b/os400/libxmlrpg/xlink.rpgle
@@ -0,0 +1,164 @@
+ * Summary: unfinished XLink detection module
+ * Description: unfinished XLink detection module
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XLINK_H__)
+ /define XML_XLINK_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ /if defined(LIBXML_XPTR_ENABLED)
+
+ * Various defines for the various Link properties.
+ *
+ * NOTE: the link detection layer will try to resolve QName expansion
+ * of namespaces. If "foo" is the prefix for "http://foo.com/"
+ * then the link detection layer will expand role="foo:myrole"
+ * to "http://foo.com/:myrole".
+ * NOTE: the link detection layer will expand URI-Refences found on
+ * href attributes by using the base mechanism if found.
+
+ d xlinkRef s * based(######typedef######) xmlChar *
+ d xlinkRole s * based(######typedef######) xmlChar *
+ d xlinkTitle s * based(######typedef######) xmlChar *
+
+ d xlinkType s 10i 0 based(######typedef######) enum
+ d XLINK_TYPE_NONE...
+ d c 0
+ d XLINK_TYPE_SIMPLE...
+ d c 1
+ d XLINK_TYPE_EXTENDED...
+ d c 2
+ d XLINK_TYPE_EXTENDED_SET...
+ d c 3
+
+ d xlinkShow s 10i 0 based(######typedef######) enum
+ d XLINK_SHOW_NONE...
+ d c 0
+ d XLINK_SHOW_NEW...
+ d c 1
+ d XLINK_SHOW_EMBED...
+ d c 2
+ d XLINK_SHOW_REPLACE...
+ d c 3
+
+ d xlinkActuate s 10i 0 based(######typedef######) enum
+ d XLINK_ACTUATE_NONE...
+ d c 0
+ d XLINK_ACTUATE_AUTO...
+ d c 1
+ d XLINK_ACTUATE_ONREQUEST...
+ d c 2
+
+ * xlinkNodeDetectFunc:
+ * @ctx: user data pointer
+ * @node: the node to check
+ *
+ * This is the prototype for the link detection routine.
+ * It calls the default link detection callbacks upon link detection.
+
+ d xlinkNodeDetectFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * The link detection module interact with the upper layers using
+ * a set of callback registered at parsing time.
+
+ * xlinkSimpleLinkFunk:
+ * @ctx: user data pointer
+ * @node: the node carrying the link
+ * @href: the target of the link
+ * @role: the role string
+ * @title: the link title
+ *
+ * This is the prototype for a simple link detection callback.
+
+ d xlinkSimpleLinkFunk...
+ d s * based(######typedef######)
+ d procptr
+
+ * xlinkExtendedLinkFunk:
+ * @ctx: user data pointer
+ * @node: the node carrying the link
+ * @nbLocators: the number of locators detected on the link
+ * @hrefs: pointer to the array of locator hrefs
+ * @roles: pointer to the array of locator roles
+ * @nbArcs: the number of arcs detected on the link
+ * @from: pointer to the array of source roles found on the arcs
+ * @to: pointer to the array of target roles found on the arcs
+ * @show: array of values for the show attributes found on the arcs
+ * @actuate: array of values for the actuate attributes found on the arcs
+ * @nbTitles: the number of titles detected on the link
+ * @title: array of titles detected on the link
+ * @langs: array of xml:lang values for the titles
+ *
+ * This is the prototype for a extended link detection callback.
+
+ d xlinkExtendedLinkFunk...
+ d s * based(######typedef######)
+ d procptr
+
+ * xlinkExtendedLinkSetFunk:
+ * @ctx: user data pointer
+ * @node: the node carrying the link
+ * @nbLocators: the number of locators detected on the link
+ * @hrefs: pointer to the array of locator hrefs
+ * @roles: pointer to the array of locator roles
+ * @nbTitles: the number of titles detected on the link
+ * @title: array of titles detected on the link
+ * @langs: array of xml:lang values for the titles
+ *
+ * This is the prototype for a extended link set detection callback.
+
+ d xlinkExtendedLinkSetFunk...
+ d s * based(######typedef######)
+ d procptr
+
+ * This is the structure containing a set of Links detection callbacks.
+ *
+ * There is no default xlink callbacks, if one want to get link
+ * recognition activated, those call backs must be provided before parsing.
+
+ d xlinkHandlerPtr...
+ d s * based(######typedef######) xmlChar *
+
+ d xlinkHandler ds based(xlinkHandlerPtr)
+ d align qualified
+ d simple like(xlinkSimpleLinkFunk)
+ d extended like(xlinkExtendedLinkFunk)
+ d set like(xlinkExtendedLinkSetFunk)
+
+ * The default detection routine, can be overridden, they call the default
+ * detection callbacks.
+
+ d xlinkGetDefaultDetect...
+ d pr extproc('xlinkGetDefaultDetect')
+ d like(xlinkNodeDetectFunc)
+
+ d xlinkSetDefaultDetect...
+ d pr extproc('xlinkSetDefaultDetect')
+ d func value like(xlinkNodeDetectFunc)
+
+ * Routines to set/get the default handlers.
+
+ d xlinkGetDefaultHandler...
+ d pr extproc('xlinkGetDefaultHandler')
+ d like(xlinkHandlerPtr)
+
+ d xlinkSetDefaultHandler...
+ d pr extproc('xlinkSetDefaultHandler')
+ d handler value like(xlinkHandlerPtr)
+
+ * Link detection module itself.
+
+ d xlinkIsLink pr extproc('xlinkIsLink')
+ d like(xlinkType)
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+
+ /endif LIBXML_XPTR_ENABLED
+ /endif XML_XLINK_H__
diff --git a/os400/libxmlrpg/xmlIO.rpgle b/os400/libxmlrpg/xmlIO.rpgle
new file mode 100644
index 0000000..72911bc
--- /dev/null
+++ b/os400/libxmlrpg/xmlIO.rpgle
@@ -0,0 +1,441 @@
+ * Summary: interface for the I/O interfaces used by the parser
+ * Description: interface for the I/O interfaces used by the parser
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_IO_H__)
+ /define XML_IO_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ * Those are the functions and datatypes for the parser input
+ * I/O structures.
+
+ * xmlInputMatchCallback:
+ * @filename: the filename or URI
+ *
+ * Callback used in the I/O Input API to detect if the current handler
+ * can provide input fonctionnalities for this resource.
+ *
+ * Returns 1 if yes and 0 if another Input module should be used
+
+ d xmlInputMatchCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlInputOpenCallback:
+ * @filename: the filename or URI
+ *
+ * Callback used in the I/O Input API to open the resource
+ *
+ * Returns an Input context or NULL in case or error
+
+ d xmlInputOpenCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlInputReadCallback:
+ * @context: an Input context
+ * @buffer: the buffer to store data read
+ * @len: the length of the buffer in bytes
+ *
+ * Callback used in the I/O Input API to read the resource
+ *
+ * Returns the number of bytes read or -1 in case of error
+
+ d xmlInputReadCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlInputCloseCallback:
+ * @context: an Input context
+ *
+ * Callback used in the I/O Input API to close the resource
+ *
+ * Returns 0 or -1 in case of error
+
+ d xmlInputCloseCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+
+ * Those are the functions and datatypes for the library output
+ * I/O structures.
+
+ * xmlOutputMatchCallback:
+ * @filename: the filename or URI
+ *
+ * Callback used in the I/O Output API to detect if the current handler
+ * can provide output fonctionnalities for this resource.
+ *
+ * Returns 1 if yes and 0 if another Output module should be used
+
+ d xmlOutputMatchCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlOutputOpenCallback:
+ * @filename: the filename or URI
+ *
+ * Callback used in the I/O Output API to open the resource
+ *
+ * Returns an Output context or NULL in case or error
+
+ d xmlOutputOpenCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlOutputWriteCallback:
+ * @context: an Output context
+ * @buffer: the buffer of data to write
+ * @len: the length of the buffer in bytes
+ *
+ * Callback used in the I/O Output API to write to the resource
+ *
+ * Returns the number of bytes written or -1 in case of error
+
+ d xmlOutputWriteCallback...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlOutputCloseCallback:
+ * @context: an Output context
+ *
+ * Callback used in the I/O Output API to close the resource
+ *
+ * Returns 0 or -1 in case of error
+
+ d xmlOutputCloseCallback...
+ d s * based(######typedef######)
+ d procptr
+ /endif LIBXML_OUTPUT_ENABLD
+
+ /include "libxmlrpg/globals"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/parser"
+ /include "libxmlrpg/encoding"
+
+ d xmlParserInputBuffer...
+ d ds based(xmlParserInputBufferPtr)
+ d align qualified
+ d context * void *
+ d readcallback like(xmlInputReadCallback)
+ d closecallback like(xmlInputCloseCallback)
+ *
+ d encoder like(xmlCharEncodingHandlerPtr) Conversions --> UTF8
+ *
+ d buffer like(xmlBufPtr) UTF-8 local buffer
+ d raw like(xmlBufPtr) Raw input buffer
+ d compressed 10i 0
+ d error 10i 0
+ d rawconsumed 20u 0
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlOutputBuffer...
+ d ds based(xmlOutputBufferPtr)
+ d align qualified
+ d context * void *
+ d writecallback like(xmlOutputWriteCallback)
+ d closecallback like(xmlOutputCloseCallback)
+ *
+ d encoder like(xmlCharEncodingHandlerPtr) Conversions --> UTF8
+ *
+ d buffer like(xmlBufPtr) UTF-8/ISOLatin local
+ d conv like(xmlBufPtr) Buffer for output
+ d written 10i 0 Total # byte written
+ d error 10i 0
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * Interfaces for input
+
+ d xmlCleanupInputCallbacks...
+ d pr extproc('xmlCleanupInputCallbacks')
+
+ d xmlPopInputCallbacks...
+ d pr 10i 0 extproc('xmlPopInputCallbacks')
+
+ d xmlRegisterDefaultInputCallbacks...
+ d pr extproc(
+ d 'xmlRegisterDefaultInputCallbacks')
+
+ d xmlAllocParserInputBuffer...
+ d pr extproc('xmlAllocParserInputBuffer')
+ d like(xmlParserInputBufferPtr)
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferCreateFilename...
+ d pr extproc(
+ d 'xmlParserInputBufferCreateFilename')
+ d like(xmlParserInputBufferPtr)
+ d URI * value options(*string) const char *
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferCreateFile...
+ d pr extproc(
+ d 'xmlParserInputBufferCreateFile')
+ d like(xmlParserInputBufferPtr)
+ d file * value FILE *
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferCreateFd...
+ d pr extproc(
+ d 'xmlParserInputBufferCreateFd')
+ d like(xmlParserInputBufferPtr)
+ d fd 10i 0 value
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferCreateMem...
+ d pr extproc(
+ d 'xmlParserInputBufferCreateMem')
+ d like(xmlParserInputBufferPtr)
+ d mem * value options(*string) const char *
+ d size 10i 0 value
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferCreateStatic...
+ d pr extproc(
+ d 'xmlParserInputBufferCreateStatic')
+ d like(xmlParserInputBufferPtr)
+ d mem * value options(*string) const char *
+ d size 10i 0 value
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferCreateIO...
+ d pr extproc(
+ d 'xmlParserInputBufferCreateIO')
+ d like(xmlParserInputBufferPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d enc value like(xmlCharEncoding)
+
+ d xmlParserInputBufferRead...
+ d pr 10i 0 extproc('xmlParserInputBufferRead')
+ d in value like(xmlParserInputBufferPtr)
+ d len 10i 0 value
+
+ d xmlParserInputBufferGrow...
+ d pr 10i 0 extproc('xmlParserInputBufferGrow')
+ d in value like(xmlParserInputBufferPtr)
+ d len 10i 0 value
+
+ d xmlParserInputBufferPush...
+ d pr 10i 0 extproc('xmlParserInputBufferPush')
+ d in value like(xmlParserInputBufferPtr)
+ d len 10i 0 value
+ d buf * value options(*string) const char *
+
+ d xmlFreeParserInputBuffer...
+ d pr extproc('xmlFreeParserInputBuffer')
+ d in value like(xmlParserInputBufferPtr)
+
+ d xmlParserGetDirectory...
+ d pr * extproc('xmlParserGetDirectory') char *
+ d filename * value options(*string) const char *
+
+ d xmlRegisterInputCallbacks...
+ d pr 10i 0 extproc('xmlRegisterInputCallbacks')
+ d matchFunc value like(xmlInputMatchCallback)
+ d openFunc value like(xmlInputOpenCallback)
+ d readFunc value like(xmlInputReadCallback)
+ d closeFunc value like(xmlInputCloseCallback)
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+
+ * Interfaces for output
+
+ d xmlCleanupOutputCallbacks...
+ d pr extproc('xmlCleanupOutputCallbacks')
+
+ d xmlRegisterDefaultOutputCallbacks...
+ d pr extproc(
+ d 'xmlRegisterDefaultOuputCallbacks')
+
+ d xmlAllocOutputBuffer...
+ d pr extproc('xmlAllocOutputBuffer')
+ d like(xmlOutputBufferPtr)
+ d encoder value
+ d like(xmlCharEncodingHandlerPtr)
+
+ d xmlOutputBufferCreateFilename...
+ d pr extproc(
+ d 'xmlOutputBufferCreateFilename')
+ d like(xmlOutputBufferPtr)
+ d URI * value options(*string) const char *
+ d encoder value
+ d like(xmlCharEncodingHandlerPtr)
+ d compression 10i 0 value
+
+ d xmlOutputBufferCreateFile...
+ d pr extproc('xmlOutputBufferCreateFile')
+ d like(xmlOutputBufferPtr)
+ d file * value FILE *
+ d encoder value
+ d like(xmlCharEncodingHandlerPtr)
+
+ d xmlOutputBufferCreateBuffer...
+ d pr extproc(
+ d 'xmlOutputBufferCreateBuffer')
+ d like(xmlOutputBufferPtr)
+ d buffer value like(xmlBufferPtr)
+ d encoder value
+ d like(xmlCharEncodingHandlerPtr)
+
+ d xmlOutputBufferCreateFd...
+ d pr extproc('xmlOutputBufferCreateFd')
+ d like(xmlOutputBufferPtr)
+ d fd 10i 0 value
+ d encoder value
+ d like(xmlCharEncodingHandlerPtr)
+
+ d xmlOutputBufferCreateIO...
+ d pr extproc('xmlOutputBufferCreateIO')
+ d like(xmlOutputBufferPtr)
+ d iowrite value like(xmlOutputWriteCallback)
+ d ioclose value like(xmlOutputCloseCallback)
+ d ioctx * value void *
+ d encoder value
+ d like(xmlCharEncodingHandlerPtr)
+
+ * Couple of APIs to get the output without digging into the buffers
+
+ d xmlOutputBufferGetContent...
+ d pr * extproc('xmlOutputBufferGetContent') const xmlChar *
+ d out value like(xmlOutputBufferPtr)
+
+ d xmlOutputBufferGetSize...
+ d pr 10u 0 extproc('xmlOutputBufferGetSize') size_t
+ d out value like(xmlOutputBufferPtr)
+
+ d xmlOutputBufferWrite...
+ d pr 10i 0 extproc('xmlOutputBufferWrite')
+ d out value like(xmlOutputBufferPtr)
+ d len 10i 0 value
+ d buf * value options(*string) const char *
+
+ d xmlOutputBufferWriteString...
+ d pr 10i 0 extproc('xmlOutputBufferWriteString')
+ d out value like(xmlOutputBufferPtr)
+ d str * value options(*string) const char *
+
+ d xmlOutputBufferWriteEscape...
+ d pr 10i 0 extproc('xmlOutputBufferWriteEscape')
+ d out value like(xmlOutputBufferPtr)
+ d str * value options(*string) const xmlChar *
+ d escaping value like(xmlCharEncodingOutputFunc)
+
+ d xmlOutputBufferFlush...
+ d pr 10i 0 extproc('xmlOutputBufferFlush')
+ d out value like(xmlOutputBufferPtr)
+
+ d xmlOutputBufferClose...
+ d pr 10i 0 extproc('xmlOutputBufferClose')
+ d out value like(xmlOutputBufferPtr)
+
+ d xmlRegisterOutputCallbacks...
+ d pr 10i 0 extproc('xmlRegisterOutputCallbacks')
+ d matchFunc value like(xmlOutputMatchCallback)
+ d openFunc value like(xmlOutputOpenCallback)
+ d writeFunc value like(xmlOutputWriteCallback)
+ d closeFunc value like(xmlOutputCloseCallback)
+
+ /if defined(LIBXML_HTTP_ENABLED)
+
+ * This function only exists if HTTP support built into the library
+
+ d xmlRegisterHTTPPostCallbacks...
+ d pr extproc(
+ d 'xmlRegisterHTTPPostCallbacks')
+
+ /endif LIBXML_HTTP_ENABLED
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d xmlCheckHTTPInput...
+ d pr extproc('xmlCheckHTTPInput')
+ d like(xmlParserInputPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d ret value like(xmlParserInputPtr)
+
+ * A predefined entity loader disabling network accesses
+
+ d xmlNoNetExternalEntityLoader...
+ d pr extproc(
+ d 'xmlNoNetExternalEntityLoader')
+ d like(xmlParserInputPtr)
+ d URL * value options(*string) const char *
+ d ID * value options(*string) const char *
+ d ctxt value like(xmlParserCtxtPtr)
+
+ * xmlNormalizeWindowsPath is obsolete, don't use it.
+ * Check xmlCanonicPath in uri.h for a better alternative.
+
+ d xmlNormalizeWindowsPath...
+ d pr * extproc('xmlNormalizeWindowsPath') xmlChar *
+ d path * value options(*string) const xmlChar *
+
+ d xmlCheckFilename...
+ d pr 10i 0 extproc('xmlCheckFilename')
+ d path * value options(*string) const char *
+
+ * Default 'file://' protocol callbacks
+
+ d xmlFileMatch pr 10i 0 extproc('xmlFileMatch')
+ d filename * value options(*string) const char *
+
+ d xmlFileOpen pr * extproc('xmlFileOpen') void *
+ d filename * value options(*string) const char *
+
+ d xmlFileRead pr 10i 0 extproc('xmlFileRead')
+ d context * value void *
+ d buffer 65535 options(*varsize)
+ d len 10i 0 value
+
+ d xmlFileClose pr 10i 0 extproc('xmlFileClose')
+ d context * value void *
+
+ * Default 'http://' protocol callbacks
+
+ /if defined(LIBXML_HTTP_ENABLED)
+ d xmlIOHTTPMatch pr 10i 0 extproc('xmlIOHTTPMatch')
+ d filename * value options(*string) const char *
+
+ d xmlIOHTTPOpen pr * extproc('xmlIOHTTPOpen') void *
+ d filename * value options(*string) const char *
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlIOHTTPOpenW pr * extproc('xmlIOHTTPOpenW') void *
+ d post_uri * value options(*string) const char *
+ d compression 10i 0 value
+ /endif LIBXML_OUTPUT_ENABLD
+
+ d xmlIOHTTPRead pr 10i 0 extproc('xmlIOHTTPRead')
+ d context * value void *
+ d buffer 65535 options(*varsize)
+ d len 10i 0 value
+
+ d xmlIOHTTPClose pr 10i 0 extproc('xmlIOHTTPClose')
+ d context * value void *
+ /endif LIBXML_HTTP_ENABLED
+
+ * Default 'ftp://' protocol callbacks
+
+ /if defined(LIBXML_FTP_ENABLED)
+ d xmlIOFTPMatch pr 10i 0 extproc('xmlIOFTPMatch')
+ d filename * value options(*string) const char *
+
+ d xmlIOFTPOpen pr * extproc('xmlIOFTPOpen') void *
+ d filename * value options(*string) const char *
+
+ d xmlIOFTPRead pr 10i 0 extproc('xmlIOFTPRead')
+ d context * value void *
+ d buffer 65535 options(*varsize)
+ d len 10i 0 value
+
+ d xmlIOFTPClose pr 10i 0 extproc('xmlIOFTPClose')
+ d context * value void *
+ /endif LIBXML_FTP_ENABLED
+
+ /endif XML_IO_H__
diff --git a/os400/libxmlrpg/xmlautomata.rpgle b/os400/libxmlrpg/xmlautomata.rpgle
new file mode 100644
index 0000000..4979725
--- /dev/null
+++ b/os400/libxmlrpg/xmlautomata.rpgle
@@ -0,0 +1,179 @@
+ * Summary: API to build regexp automata
+ * Description: the API to build regexp automata
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_AUTOMATA_H__)
+ /define XML_AUTOMATA_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+
+ /if defined(LIBXML_REGEXP_ENABLED)
+ /if defined(LIBXML_AUTOMATA_ENABLED)
+
+ /include "libxmlrpg/xmlregexp"
+
+ * xmlAutomataPtr:
+ *
+ * A libxml automata description, It can be compiled into a regexp
+
+ d xmlAutomataPtr s * based(######typedef######)
+
+ * xmlAutomataStatePtr:
+ *
+ * A state int the automata description,
+
+ d xmlAutomataStatePtr...
+ d s * based(######typedef######)
+
+ * Building API
+
+ d xmlNewAutomata pr extproc('xmlNewAutomata')
+ d like(xmlAutomataPtr)
+
+ d xmlFreeAutomata...
+ d pr extproc('xmlFreeAutomata')
+ d am value like(xmlAutomataPtr)
+
+ d xmlAutomataGetInitState...
+ d pr extproc('xmlAutomataGetInitState')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+
+ d xmlAutomataSetFinalState...
+ d pr 10i 0 extproc('xmlAutomataSetFinalState')
+ d am value like(xmlAutomataPtr)
+ d state value like(xmlAutomataStatePtr)
+
+ d xmlAutomataNewState...
+ d pr extproc('xmlAutomataNewState')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+
+ d xmlAutomataNewTransition...
+ d pr extproc('xmlAutomataNewTransition')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d data * value options(*string) void *
+
+ d xmlAutomataNewTransition2...
+ d pr extproc('xmlAutomataNewTransition2')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d token2 * value options(*string) const xmlChar *
+ d data * value options(*string) void *
+
+ d xmlAutomataNewNegTrans...
+ d pr extproc('xmlAutomataNewNegTrans')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d token2 * value options(*string) const xmlChar *
+ d data * value options(*string) void *
+
+ d xmlAutomataNewCountTrans...
+ d pr extproc('xmlAutomataNewCountTrans')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d min 10i 0 value
+ d max 10i 0 value
+ d data * value options(*string) void *
+
+ d xmlAutomataNewCountTrans2...
+ d pr extproc('xmlAutomataNewCountTrans2')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d token2 * value options(*string) const xmlChar *
+ d min 10i 0 value
+ d max 10i 0 value
+ d data * value options(*string) void *
+
+ d xmlAutomataNewOnceTrans...
+ d pr extproc('xmlAutomataNewOnceTrans')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d min 10i 0 value
+ d max 10i 0 value
+ d data * value options(*string) void *
+
+ d xmlAutomataNewOnceTrans2...
+ d pr extproc('xmlAutomataNewOnceTrans2')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d token * value options(*string) const xmlChar *
+ d token2 * value options(*string) const xmlChar *
+ d min 10i 0 value
+ d max 10i 0 value
+ d data * value options(*string) void *
+
+ d xmlAutomataNewAllTrans...
+ d pr extproc('xmlAutomataNewAllTrans')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d lax 10i 0 value
+
+ d xmlAutomataNewEpsilon...
+ d pr extproc('xmlAutomataNewEpsilon')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+
+ d xmlAutomataNewCountedTrans...
+ d pr extproc('xmlAutomataNewCountedTrans')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d counter 10i 0 value
+
+ d xmlAutomataNewCounterTrans...
+ d pr extproc('xmlAutomataNewCounterTrans')
+ d like(xmlAutomataStatePtr)
+ d am value like(xmlAutomataPtr)
+ d from value like(xmlAutomataStatePtr)
+ d to value like(xmlAutomataStatePtr)
+ d counter 10i 0 value
+
+ d xmlAutomataNewCounter...
+ d pr 10i 0 extproc('xmlAutomataNewCounter')
+ d am value like(xmlAutomataPtr)
+ d min 10i 0 value
+ d max 10i 0 value
+
+ d xmlAutomataCompile...
+ d pr extproc('xmlAutomataCompile')
+ d like(xmlRegexpPtr)
+ d am value like(xmlAutomataPtr)
+
+ d xmlAutomataIsDeterminist...
+ d pr 10i 0 extproc('xmlAutomataIsDeterminist')
+ d am value like(xmlAutomataPtr)
+
+ /endif AUTOMATA_ENABLED
+ /endif LIBXML_REGEXP_ENABLD
+ /endif XML_AUTOMATA_H__
diff --git a/os400/libxmlrpg/xmlerror.rpgle b/os400/libxmlrpg/xmlerror.rpgle
new file mode 100644
index 0000000..b77caad
--- /dev/null
+++ b/os400/libxmlrpg/xmlerror.rpgle
@@ -0,0 +1,1681 @@
+ * Summary: error handling
+ * Description: the API used to report errors
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /include "libxmlrpg/parser"
+
+ /if not defined(XML_ERROR_H__)
+ /define XML_ERROR_H__
+
+ * xmlErrorLevel:
+ *
+ * Indicates the level of an error
+
+ d xmlErrorLevel s 10i 0 based(######typedef######) enum
+ d XML_ERR_NONE c 0
+ d XML_ERR_WARNING... A simple warning
+ d c 1
+ d XML_ERR_ERROR c 2 A recoverable error
+ d XML_ERR_FATAL c 3 A fatal error
+
+ * xmlErrorDomain:
+ *
+ * Indicates where an error may have come from
+
+ d xmlErrorDomain s 10i 0 based(######typedef######) enum
+ d XML_FROM_NONE c 0
+ d XML_FROM_PARSER... XML parser
+ d c 1
+ d XML_FROM_TREE c 2 Tree module
+ d XML_FROM_NAMESPACE... XML Namespace module
+ d c 3
+ d XML_FROM_DTD c 4 DTD validation
+ d XML_FROM_HTML c 5 HTML parser
+ d XML_FROM_MEMORY... Memory allocator
+ d c 6
+ d XML_FROM_OUTPUT... serialization code
+ d c 7
+ d XML_FROM_IO c 8 Input/Output stack
+ d XML_FROM_FTP c 9 FTP module
+ d XML_FROM_HTTP c 10 HTTP module
+ d XML_FROM_XINCLUDE... XInclude processing
+ d c 11
+ d XML_FROM_XPATH... XPath module
+ d c 12
+ d XML_FROM_XPOINTER... XPointer module
+ d c 13
+ d XML_FROM_REGEXP... Regexp module
+ d c 14
+ d XML_FROM_DATATYPE... W3C XML Schm Dtatype
+ d c 15
+ d XML_FROM_SCHEMASP... W3C XML Schm parser
+ d c 16
+ d XML_FROM_SCHEMASV... W3C XML Schm valid.
+ d c 17
+ d XML_FROM_RELAXNGP... Relax-NG parser
+ d c 18
+ d XML_FROM_RELAXNGV... Relax-NG validator
+ d c 19
+ d XML_FROM_CATALOG... Catalog module
+ d c 20
+ d XML_FROM_C14N c 21 Canonicalization
+ d XML_FROM_XSLT c 22 Engine from libxslt
+ d XML_FROM_VALID... DTD valid. w/ ctxt
+ d c 23
+ d XML_FROM_CHECK... Error check module
+ d c 24
+ d XML_FROM_WRITER... xmlwriter module
+ d c 25
+ d XML_FROM_MODULE... Dyn. loaded module
+ d c 26
+ d XML_FROM_I18N c 27 Mod hdlg char conv
+ d XML_FROM_SCHEMATRONV... Schematron valid
+ d c 28
+ d XML_FROM_BUFFER... Buffers module
+ d c 29
+ d XML_FROM_URI c 30 URI module
+
+ * xmlError:
+ *
+ * An XML Error instance.
+
+ d xmlErrorPtr s * based(######typedef######)
+
+ d xmlError ds based(xmlErrorPtr)
+ d align qualified
+ d domain 10i 0 Libpart raising err
+ d code 10i 0 Error code
+ d message * char *
+ d level like(xmlErrorLevel) Error severity
+ d file * File name
+ d line 10i 0 Line number
+ d str1 * char *
+ d str2 * char *
+ d str3 * char *
+ d int1 10i 0 Extra number info
+ d int2 10i 0 Error column
+ d ctxt * void *
+ d node * void *
+
+ * xmlParserError:
+ *
+ * This is an error that the XML (or HTML) parser can generate
+
+ d xmlParserErrors...
+ d s 10i 0 based(######typedef######) enum
+ d XML_ERR_OK c 0
+ d XML_ERR_INTERNAL_ERROR...
+ d c 1
+ d XML_ERR_NO_MEMORY...
+ d c 2
+ d XML_ERR_DOCUMENT_START...
+ d c 3
+ d XML_ERR_DOCUMENT_EMPTY...
+ d c 4
+ d XML_ERR_DOCUMENT_END...
+ d c 5
+ d XML_ERR_INVALID_HEX_CHARREF...
+ d c 6
+ d XML_ERR_INVALID_DEC_CHARREF...
+ d c 7
+ d XML_ERR_INVALID_CHARREF...
+ d c 8
+ d XML_ERR_INVALID_CHAR...
+ d c 9
+ d XML_ERR_CHARREF_AT_EOF...
+ d c 10
+ d XML_ERR_CHARREF_IN_PROLOG...
+ d c 11
+ d XML_ERR_CHARREF_IN_EPILOG...
+ d c 12
+ d XML_ERR_CHARREF_IN_DTD...
+ d c 13
+ d XML_ERR_ENTITYREF_AT_EOF...
+ d c 14
+ d XML_ERR_ENTITYREF_IN_PROLOG...
+ d c 15
+ d XML_ERR_ENTITYREF_IN_EPILOG...
+ d c 16
+ d XML_ERR_ENTITYREF_IN_DTD...
+ d c 17
+ d XML_ERR_PEREF_AT_EOF...
+ d c 18
+ d XML_ERR_PEREF_IN_PROLOG...
+ d c 19
+ d XML_ERR_PEREF_IN_EPILOG...
+ d c 20
+ d XML_ERR_PEREF_IN_INT_SUBSET...
+ d c 21
+ d XML_ERR_ENTITYREF_NO_NAME...
+ d c 22
+ d XML_ERR_ENTITYREF_SEMICOL_MISSING...
+ d c 23
+ d XML_ERR_PEREF_NO_NAME...
+ d c 24
+ d XML_ERR_PEREF_SEMICOL_MISSING...
+ d c 25
+ d XML_ERR_UNDECLARED_ENTITY...
+ d c 26
+ d XML_WAR_UNDECLARED_ENTITY...
+ d c 27
+ d XML_ERR_UNPARSED_ENTITY...
+ d c 28
+ d XML_ERR_ENTITY_IS_EXTERNAL...
+ d c 29
+ d XML_ERR_ENTITY_IS_PARAMETER...
+ d c 30
+ d XML_ERR_UNKNOWN_ENCODING...
+ d c 31
+ d XML_ERR_UNSUPPORTED_ENCODING...
+ d c 32
+ d XML_ERR_STRING_NOT_STARTED...
+ d c 33
+ d XML_ERR_STRING_NOT_CLOSED...
+ d c 34
+ d XML_ERR_NS_DECL_ERROR...
+ d c 35
+ d XML_ERR_ENTITY_NOT_STARTED...
+ d c 36
+ d XML_ERR_ENTITY_NOT_FINISHED...
+ d c 37
+ d XML_ERR_LT_IN_ATTRIBUTE...
+ d c 38
+ d XML_ERR_ATTRIBUTE_NOT_STARTED...
+ d c 39
+ d XML_ERR_ATTRIBUTE_NOT_FINISHED...
+ d c 40
+ d XML_ERR_ATTRIBUTE_WITHOUT_VALUE...
+ d c 41
+ d XML_ERR_ATTRIBUTE_REDEFINED...
+ d c 42
+ d XML_ERR_LITERAL_NOT_STARTED...
+ d c 43
+ d XML_ERR_LITERAL_NOT_FINISHED...
+ d c 44
+ d XML_ERR_COMMENT_NOT_FINISHED...
+ d c 45
+ d XML_ERR_PI_NOT_STARTED...
+ d c 46
+ d XML_ERR_PI_NOT_FINISHED...
+ d c 47
+ d XML_ERR_NOTATION_NOT_STARTED...
+ d c 48
+ d XML_ERR_NOTATION_NOT_FINISHED...
+ d c 49
+ d XML_ERR_ATTLIST_NOT_STARTED...
+ d c 50
+ d XML_ERR_ATTLIST_NOT_FINISHED...
+ d c 51
+ d XML_ERR_MIXED_NOT_STARTED...
+ d c 52
+ d XML_ERR_MIXED_NOT_FINISHED...
+ d c 53
+ d XML_ERR_ELEMCONTENT_NOT_STARTED...
+ d c 54
+ d XML_ERR_ELEMCONTENT_NOT_FINISHED...
+ d c 55
+ d XML_ERR_XMLDECL_NOT_STARTED...
+ d c 56
+ d XML_ERR_XMLDECL_NOT_FINISHED...
+ d c 57
+ d XML_ERR_CONDSEC_NOT_STARTED...
+ d c 58
+ d XML_ERR_CONDSEC_NOT_FINISHED...
+ d c 59
+ d XML_ERR_EXT_SUBSET_NOT_FINISHED...
+ d c 60
+ d XML_ERR_DOCTYPE_NOT_FINISHED...
+ d c 61
+ d XML_ERR_MISPLACED_CDATA_END...
+ d c 62
+ d XML_ERR_CDATA_NOT_FINISHED...
+ d c 63
+ d XML_ERR_RESERVED_XML_NAME...
+ d c 64
+ d XML_ERR_SPACE_REQUIRED...
+ d c 65
+ d XML_ERR_SEPARATOR_REQUIRED...
+ d c 66
+ d XML_ERR_NMTOKEN_REQUIRED...
+ d c 67
+ d XML_ERR_NAME_REQUIRED...
+ d c 68
+ d XML_ERR_PCDATA_REQUIRED...
+ d c 69
+ d XML_ERR_URI_REQUIRED...
+ d c 70
+ d XML_ERR_PUBID_REQUIRED...
+ d c 71
+ d XML_ERR_LT_REQUIRED...
+ d c 72
+ d XML_ERR_GT_REQUIRED...
+ d c 73
+ d XML_ERR_LTSLASH_REQUIRED...
+ d c 74
+ d XML_ERR_EQUAL_REQUIRED...
+ d c 75
+ d XML_ERR_TAG_NAME_MISMATCH...
+ d c 76
+ d XML_ERR_TAG_NOT_FINISHED...
+ d c 77
+ d XML_ERR_STANDALONE_VALUE...
+ d c 78
+ d XML_ERR_ENCODING_NAME...
+ d c 79
+ d XML_ERR_HYPHEN_IN_COMMENT...
+ d c 80
+ d XML_ERR_INVALID_ENCODING...
+ d c 81
+ d XML_ERR_EXT_ENTITY_STANDALONE...
+ d c 82
+ d XML_ERR_CONDSEC_INVALID...
+ d c 83
+ d XML_ERR_VALUE_REQUIRED...
+ d c 84
+ d XML_ERR_NOT_WELL_BALANCED...
+ d c 85
+ d XML_ERR_EXTRA_CONTENT...
+ d c 86
+ d XML_ERR_ENTITY_CHAR_ERROR...
+ d c 87
+ d XML_ERR_ENTITY_PE_INTERNAL...
+ d c 88
+ d XML_ERR_ENTITY_LOOP...
+ d c 89
+ d XML_ERR_ENTITY_BOUNDARY...
+ d c 90
+ d XML_ERR_INVALID_URI...
+ d c 91
+ d XML_ERR_URI_FRAGMENT...
+ d c 92
+ d XML_WAR_CATALOG_PI...
+ d c 93
+ d XML_ERR_NO_DTD...
+ d c 94
+ d XML_ERR_CONDSEC_INVALID_KEYWORD...
+ d c 95
+ d XML_ERR_VERSION_MISSING...
+ d c 96
+ d XML_WAR_UNKNOWN_VERSION...
+ d c 97
+ d XML_WAR_LANG_VALUE...
+ d c 98
+ d XML_WAR_NS_URI...
+ d c 99
+ d XML_WAR_NS_URI_RELATIVE...
+ d c 100
+ d XML_ERR_MISSING_ENCODING...
+ d c 101
+ d XML_WAR_SPACE_VALUE...
+ d c 102
+ d XML_ERR_NOT_STANDALONE...
+ d c 103
+ d XML_ERR_ENTITY_PROCESSING...
+ d c 104
+ d XML_ERR_NOTATION_PROCESSING...
+ d c 105
+ d XML_WAR_NS_COLUMN...
+ d c 106
+ d XML_WAR_ENTITY_REDEFINED...
+ d c 107
+ d XML_ERR_UNKNOWN_VERSION...
+ d c 108
+ d XML_ERR_VERSION_MISMATCH...
+ d c 109
+ d XML_ERR_NAME_TOO_LONG...
+ d c 110
+ d XML_ERR_USER_STOP...
+ d c 111
+ d XML_NS_ERR_XML_NAMESPACE...
+ d c 200
+ d XML_NS_ERR_UNDEFINED_NAMESPACE...
+ d c 201
+ d XML_NS_ERR_QNAME...
+ d c 202
+ d XML_NS_ERR_ATTRIBUTE_REDEFINED...
+ d c 203
+ d XML_NS_ERR_EMPTY...
+ d c 204
+ d XML_NS_ERR_COLON...
+ d c 205
+ d XML_DTD_ATTRIBUTE_DEFAULT...
+ d c 500
+ d XML_DTD_ATTRIBUTE_REDEFINED...
+ d c 501
+ d XML_DTD_ATTRIBUTE_VALUE...
+ d c 502
+ d XML_DTD_CONTENT_ERROR...
+ d c 503
+ d XML_DTD_CONTENT_MODEL...
+ d c 504
+ d XML_DTD_CONTENT_NOT_DETERMINIST...
+ d c 505
+ d XML_DTD_DIFFERENT_PREFIX...
+ d c 506
+ d XML_DTD_ELEM_DEFAULT_NAMESPACE...
+ d c 507
+ d XML_DTD_ELEM_NAMESPACE...
+ d c 508
+ d XML_DTD_ELEM_REDEFINED...
+ d c 509
+ d XML_DTD_EMPTY_NOTATION...
+ d c 510
+ d XML_DTD_ENTITY_TYPE...
+ d c 511
+ d XML_DTD_ID_FIXED...
+ d c 512
+ d XML_DTD_ID_REDEFINED...
+ d c 513
+ d XML_DTD_ID_SUBSET...
+ d c 514
+ d XML_DTD_INVALID_CHILD...
+ d c 515
+ d XML_DTD_INVALID_DEFAULT...
+ d c 516
+ d XML_DTD_LOAD_ERROR...
+ d c 517
+ d XML_DTD_MISSING_ATTRIBUTE...
+ d c 518
+ d XML_DTD_MIXED_CORRUPT...
+ d c 519
+ d XML_DTD_MULTIPLE_ID...
+ d c 520
+ d XML_DTD_NO_DOC...
+ d c 521
+ d XML_DTD_NO_DTD...
+ d c 522
+ d XML_DTD_NO_ELEM_NAME...
+ d c 523
+ d XML_DTD_NO_PREFIX...
+ d c 524
+ d XML_DTD_NO_ROOT...
+ d c 525
+ d XML_DTD_NOTATION_REDEFINED...
+ d c 526
+ d XML_DTD_NOTATION_VALUE...
+ d c 527
+ d XML_DTD_NOT_EMPTY...
+ d c 528
+ d XML_DTD_NOT_PCDATA...
+ d c 529
+ d XML_DTD_NOT_STANDALONE...
+ d c 530
+ d XML_DTD_ROOT_NAME...
+ d c 531
+ d XML_DTD_STANDALONE_WHITE_SPACE...
+ d c 532
+ d XML_DTD_UNKNOWN_ATTRIBUTE...
+ d c 533
+ d XML_DTD_UNKNOWN_ELEM...
+ d c 534
+ d XML_DTD_UNKNOWN_ENTITY...
+ d c 535
+ d XML_DTD_UNKNOWN_ID...
+ d c 536
+ d XML_DTD_UNKNOWN_NOTATION...
+ d c 537
+ d XML_DTD_STANDALONE_DEFAULTED...
+ d c 538
+ d XML_DTD_XMLID_VALUE...
+ d c 539
+ d XML_DTD_XMLID_TYPE...
+ d c 540
+ d XML_DTD_DUP_TOKEN...
+ d c 541
+ d XML_HTML_STRUCURE_ERROR...
+ d c 800
+ d XML_HTML_UNKNOWN_TAG...
+ d c 801
+ d XML_RNGP_ANYNAME_ATTR_ANCESTOR...
+ d c 1000
+ d XML_RNGP_ATTR_CONFLICT...
+ d c 1001
+ d XML_RNGP_ATTRIBUTE_CHILDREN...
+ d c 1002
+ d XML_RNGP_ATTRIBUTE_CONTENT...
+ d c 1003
+ d XML_RNGP_ATTRIBUTE_EMPTY...
+ d c 1004
+ d XML_RNGP_ATTRIBUTE_NOOP...
+ d c 1005
+ d XML_RNGP_CHOICE_CONTENT...
+ d c 1006
+ d XML_RNGP_CHOICE_EMPTY...
+ d c 1007
+ d XML_RNGP_CREATE_FAILURE...
+ d c 1008
+ d XML_RNGP_DATA_CONTENT...
+ d c 1009
+ d XML_RNGP_DEF_CHOICE_AND_INTERLEAVE...
+ d c 1010
+ d XML_RNGP_DEFINE_CREATE_FAILED...
+ d c 1011
+ d XML_RNGP_DEFINE_EMPTY...
+ d c 1012
+ d XML_RNGP_DEFINE_MISSING...
+ d c 1013
+ d XML_RNGP_DEFINE_NAME_MISSING...
+ d c 1014
+ d XML_RNGP_ELEM_CONTENT_EMPTY...
+ d c 1015
+ d XML_RNGP_ELEM_CONTENT_ERROR...
+ d c 1016
+ d XML_RNGP_ELEMENT_EMPTY...
+ d c 1017
+ d XML_RNGP_ELEMENT_CONTENT...
+ d c 1018
+ d XML_RNGP_ELEMENT_NAME...
+ d c 1019
+ d XML_RNGP_ELEMENT_NO_CONTENT...
+ d c 1020
+ d XML_RNGP_ELEM_TEXT_CONFLICT...
+ d c 1021
+ d XML_RNGP_EMPTY...
+ d c 1022
+ d XML_RNGP_EMPTY_CONSTRUCT...
+ d c 1023
+ d XML_RNGP_EMPTY_CONTENT...
+ d c 1024
+ d XML_RNGP_EMPTY_NOT_EMPTY...
+ d c 1025
+ d XML_RNGP_ERROR_TYPE_LIB...
+ d c 1026
+ d XML_RNGP_EXCEPT_EMPTY...
+ d c 1027
+ d XML_RNGP_EXCEPT_MISSING...
+ d c 1028
+ d XML_RNGP_EXCEPT_MULTIPLE...
+ d c 1029
+ d XML_RNGP_EXCEPT_NO_CONTENT...
+ d c 1030
+ d XML_RNGP_EXTERNALREF_EMTPY...
+ d c 1031
+ d XML_RNGP_EXTERNAL_REF_FAILURE...
+ d c 1032
+ d XML_RNGP_EXTERNALREF_RECURSE...
+ d c 1033
+ d XML_RNGP_FORBIDDEN_ATTRIBUTE...
+ d c 1034
+ d XML_RNGP_FOREIGN_ELEMENT...
+ d c 1035
+ d XML_RNGP_GRAMMAR_CONTENT...
+ d c 1036
+ d XML_RNGP_GRAMMAR_EMPTY...
+ d c 1037
+ d XML_RNGP_GRAMMAR_MISSING...
+ d c 1038
+ d XML_RNGP_GRAMMAR_NO_START...
+ d c 1039
+ d XML_RNGP_GROUP_ATTR_CONFLICT...
+ d c 1040
+ d XML_RNGP_HREF_ERROR...
+ d c 1041
+ d XML_RNGP_INCLUDE_EMPTY...
+ d c 1042
+ d XML_RNGP_INCLUDE_FAILURE...
+ d c 1043
+ d XML_RNGP_INCLUDE_RECURSE...
+ d c 1044
+ d XML_RNGP_INTERLEAVE_ADD...
+ d c 1045
+ d XML_RNGP_INTERLEAVE_CREATE_FAILED...
+ d c 1046
+ d XML_RNGP_INTERLEAVE_EMPTY...
+ d c 1047
+ d XML_RNGP_INTERLEAVE_NO_CONTENT...
+ d c 1048
+ d XML_RNGP_INVALID_DEFINE_NAME...
+ d c 1049
+ d XML_RNGP_INVALID_URI...
+ d c 1050
+ d XML_RNGP_INVALID_VALUE...
+ d c 1051
+ d XML_RNGP_MISSING_HREF...
+ d c 1052
+ d XML_RNGP_NAME_MISSING...
+ d c 1053
+ d XML_RNGP_NEED_COMBINE...
+ d c 1054
+ d XML_RNGP_NOTALLOWED_NOT_EMPTY...
+ d c 1055
+ d XML_RNGP_NSNAME_ATTR_ANCESTOR...
+ d c 1056
+ d XML_RNGP_NSNAME_NO_NS...
+ d c 1057
+ d XML_RNGP_PARAM_FORBIDDEN...
+ d c 1058
+ d XML_RNGP_PARAM_NAME_MISSING...
+ d c 1059
+ d XML_RNGP_PARENTREF_CREATE_FAILED...
+ d c 1060
+ d XML_RNGP_PARENTREF_NAME_INVALID...
+ d c 1061
+ d XML_RNGP_PARENTREF_NO_NAME...
+ d c 1062
+ d XML_RNGP_PARENTREF_NO_PARENT...
+ d c 1063
+ d XML_RNGP_PARENTREF_NOT_EMPTY...
+ d c 1064
+ d XML_RNGP_PARSE_ERROR...
+ d c 1065
+ d XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME...
+ d c 1066
+ d XML_RNGP_PAT_ATTR_ATTR...
+ d c 1067
+ d XML_RNGP_PAT_ATTR_ELEM...
+ d c 1068
+ d XML_RNGP_PAT_DATA_EXCEPT_ATTR...
+ d c 1069
+ d XML_RNGP_PAT_DATA_EXCEPT_ELEM...
+ d c 1070
+ d XML_RNGP_PAT_DATA_EXCEPT_EMPTY...
+ d c 1071
+ d XML_RNGP_PAT_DATA_EXCEPT_GROUP...
+ d c 1072
+ d XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE...
+ d c 1073
+ d XML_RNGP_PAT_DATA_EXCEPT_LIST...
+ d c 1074
+ d XML_RNGP_PAT_DATA_EXCEPT_ONEMORE...
+ d c 1075
+ d XML_RNGP_PAT_DATA_EXCEPT_REF...
+ d c 1076
+ d XML_RNGP_PAT_DATA_EXCEPT_TEXT...
+ d c 1077
+ d XML_RNGP_PAT_LIST_ATTR...
+ d c 1078
+ d XML_RNGP_PAT_LIST_ELEM...
+ d c 1079
+ d XML_RNGP_PAT_LIST_INTERLEAVE...
+ d c 1080
+ d XML_RNGP_PAT_LIST_LIST...
+ d c 1081
+ d XML_RNGP_PAT_LIST_REF...
+ d c 1082
+ d XML_RNGP_PAT_LIST_TEXT...
+ d c 1083
+ d XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME...
+ d c 1084
+ d XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME...
+ d c 1085
+ d XML_RNGP_PAT_ONEMORE_GROUP_ATTR...
+ d c 1086
+ d XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR...
+ d c 1087
+ d XML_RNGP_PAT_START_ATTR...
+ d c 1088
+ d XML_RNGP_PAT_START_DATA...
+ d c 1089
+ d XML_RNGP_PAT_START_EMPTY...
+ d c 1090
+ d XML_RNGP_PAT_START_GROUP...
+ d c 1091
+ d XML_RNGP_PAT_START_INTERLEAVE...
+ d c 1092
+ d XML_RNGP_PAT_START_LIST...
+ d c 1093
+ d XML_RNGP_PAT_START_ONEMORE...
+ d c 1094
+ d XML_RNGP_PAT_START_TEXT...
+ d c 1095
+ d XML_RNGP_PAT_START_VALUE...
+ d c 1096
+ d XML_RNGP_PREFIX_UNDEFINED...
+ d c 1097
+ d XML_RNGP_REF_CREATE_FAILED...
+ d c 1098
+ d XML_RNGP_REF_CYCLE...
+ d c 1099
+ d XML_RNGP_REF_NAME_INVALID...
+ d c 1100
+ d XML_RNGP_REF_NO_DEF...
+ d c 1101
+ d XML_RNGP_REF_NO_NAME...
+ d c 1102
+ d XML_RNGP_REF_NOT_EMPTY...
+ d c 1103
+ d XML_RNGP_START_CHOICE_AND_INTERLEAVE...
+ d c 1104
+ d XML_RNGP_START_CONTENT...
+ d c 1105
+ d XML_RNGP_START_EMPTY...
+ d c 1106
+ d XML_RNGP_START_MISSING...
+ d c 1107
+ d XML_RNGP_TEXT_EXPECTED...
+ d c 1108
+ d XML_RNGP_TEXT_HAS_CHILD...
+ d c 1109
+ d XML_RNGP_TYPE_MISSING...
+ d c 1110
+ d XML_RNGP_TYPE_NOT_FOUND...
+ d c 1111
+ d XML_RNGP_TYPE_VALUE...
+ d c 1112
+ d XML_RNGP_UNKNOWN_ATTRIBUTE...
+ d c 1113
+ d XML_RNGP_UNKNOWN_COMBINE...
+ d c 1114
+ d XML_RNGP_UNKNOWN_CONSTRUCT...
+ d c 1115
+ d XML_RNGP_UNKNOWN_TYPE_LIB...
+ d c 1116
+ d XML_RNGP_URI_FRAGMENT...
+ d c 1117
+ d XML_RNGP_URI_NOT_ABSOLUTE...
+ d c 1118
+ d XML_RNGP_VALUE_EMPTY...
+ d c 1119
+ d XML_RNGP_VALUE_NO_CONTENT...
+ d c 1120
+ d XML_RNGP_XMLNS_NAME...
+ d c 1121
+ d XML_RNGP_XML_NS...
+ d c 1122
+ d XML_XPATH_EXPRESSION_OK...
+ d c 1200
+ d XML_XPATH_NUMBER_ERROR...
+ d c 1201
+ d XML_XPATH_UNFINISHED_LITERAL_ERROR...
+ d c 1202
+ d XML_XPATH_START_LITERAL_ERROR...
+ d c 1203
+ d XML_XPATH_VARIABLE_REF_ERROR...
+ d c 1204
+ d XML_XPATH_UNDEF_VARIABLE_ERROR...
+ d c 1205
+ d XML_XPATH_INVALID_PREDICATE_ERROR...
+ d c 1206
+ d XML_XPATH_EXPR_ERROR...
+ d c 1207
+ d XML_XPATH_UNCLOSED_ERROR...
+ d c 1208
+ d XML_XPATH_UNKNOWN_FUNC_ERROR...
+ d c 1209
+ d XML_XPATH_INVALID_OPERAND...
+ d c 1210
+ d XML_XPATH_INVALID_TYPE...
+ d c 1211
+ d XML_XPATH_INVALID_ARITY...
+ d c 1212
+ d XML_XPATH_INVALID_CTXT_SIZE...
+ d c 1213
+ d XML_XPATH_INVALID_CTXT_POSITION...
+ d c 1214
+ d XML_XPATH_MEMORY_ERROR...
+ d c 1215
+ d XML_XPTR_SYNTAX_ERROR...
+ d c 1216
+ d XML_XPTR_RESOURCE_ERROR...
+ d c 1217
+ d XML_XPTR_SUB_RESOURCE_ERROR...
+ d c 1218
+ d XML_XPATH_UNDEF_PREFIX_ERROR...
+ d c 1219
+ d XML_XPATH_ENCODING_ERROR...
+ d c 1220
+ d XML_XPATH_INVALID_CHAR_ERROR...
+ d c 1231
+ d XML_TREE_INVALID_HEX...
+ d c 1300
+ d XML_TREE_INVALID_DEC...
+ d c 1301
+ d XML_TREE_UNTERMINATED_ENTITY...
+ d c 1302
+ d XML_TREE_NOT_UTF8...
+ d c 1303
+ d XML_SAVE_NOT_UTF8...
+ d c 1400
+ d XML_SAVE_CHAR_INVALID...
+ d c 1401
+ d XML_SAVE_NO_DOCTYPE...
+ d c 1402
+ d XML_SAVE_UNKNOWN_ENCODING...
+ d c 1403
+ d XML_REGEXP_COMPILE_ERROR...
+ d c 1403
+ d XML_IO_UNKNOWN...
+ d c 1500
+ d XML_IO_EACCES c 1501
+ d XML_IO_EAGAIN c 1502
+ d XML_IO_EBADF c 1503
+ d XML_IO_EBADMSG...
+ d c 1504
+ d XML_IO_EBUSY c 1505
+ d XML_IO_ECANCELED...
+ d c 1506
+ d XML_IO_ECHILD c 1507
+ d XML_IO_EDEADLK...
+ d c 1508
+ d XML_IO_EDOM c 1509
+ d XML_IO_EEXIST c 1510
+ d XML_IO_EFAULT c 1511
+ d XML_IO_EFBIG c 1512
+ d XML_IO_EINPROGRESS...
+ d c 1513
+ d XML_IO_EINTR c 1514
+ d XML_IO_EINVAL c 1515
+ d XML_IO_EIO c 1516
+ d XML_IO_EISDIR c 1517
+ d XML_IO_EMFILE c 1518
+ d XML_IO_EMLINK c 1519
+ d XML_IO_EMSGSIZE...
+ d c 1520
+ d XML_IO_ENAMETOOLONG...
+ d c 1521
+ d XML_IO_ENFILE c 1522
+ d XML_IO_ENODEV c 1523
+ d XML_IO_ENOENT c 1524
+ d XML_IO_ENOEXEC...
+ d c 1525
+ d XML_IO_ENOLCK c 1526
+ d XML_IO_ENOMEM c 1527
+ d XML_IO_ENOSPC c 1528
+ d XML_IO_ENOSYS c 1529
+ d XML_IO_ENOTDIR...
+ d c 1530
+ d XML_IO_ENOTEMPTY...
+ d c 1531
+ d XML_IO_ENOTSUP...
+ d c 1532
+ d XML_IO_ENOTTY c 1533
+ d XML_IO_ENXIO c 1534
+ d XML_IO_EPERM c 1535
+ d XML_IO_EPIPE c 1536
+ d XML_IO_ERANGE c 1537
+ d XML_IO_EROFS c 1538
+ d XML_IO_ESPIPE c 1539
+ d XML_IO_ESRCH c 1540
+ d XML_IO_ETIMEDOUT...
+ d c 1541
+ d XML_IO_EXDEV c 1542
+ d XML_IO_NETWORK_ATTEMPT...
+ d c 1543
+ d XML_IO_ENCODER...
+ d c 1544
+ d XML_IO_FLUSH c 1545
+ d XML_IO_WRITE c 1546
+ d XML_IO_NO_INPUT...
+ d c 1547
+ d XML_IO_BUFFER_FULL...
+ d c 1548
+ d XML_IO_LOAD_ERROR...
+ d c 1549
+ d XML_IO_ENOTSOCK...
+ d c 1550
+ d XML_IO_EISCONN...
+ d c 1551
+ d XML_IO_ECONNREFUSED...
+ d c 1552
+ d XML_IO_ENETUNREACH...
+ d c 1553
+ d XML_IO_EADDRINUSE...
+ d c 1554
+ d XML_IO_EALREADY...
+ d c 1555
+ d XML_IO_EAFNOSUPPORT...
+ d c 1556
+ d XML_XINCLUDE_RECURSION...
+ d c 1600
+ d XML_XINCLUDE_PARSE_VALUE...
+ d c 1601
+ d XML_XINCLUDE_ENTITY_DEF_MISMATCH...
+ d c 1602
+ d XML_XINCLUDE_NO_HREF...
+ d c 1603
+ d XML_XINCLUDE_NO_FALLBACK...
+ d c 1604
+ d XML_XINCLUDE_HREF_URI...
+ d c 1605
+ d XML_XINCLUDE_TEXT_FRAGMENT...
+ d c 1606
+ d XML_XINCLUDE_TEXT_DOCUMENT...
+ d c 1607
+ d XML_XINCLUDE_INVALID_CHAR...
+ d c 1608
+ d XML_XINCLUDE_BUILD_FAILED...
+ d c 1609
+ d XML_XINCLUDE_UNKNOWN_ENCODING...
+ d c 1610
+ d XML_XINCLUDE_MULTIPLE_ROOT...
+ d c 1611
+ d XML_XINCLUDE_XPTR_FAILED...
+ d c 1612
+ d XML_XINCLUDE_XPTR_RESULT...
+ d c 1613
+ d XML_XINCLUDE_INCLUDE_IN_INCLUDE...
+ d c 1614
+ d XML_XINCLUDE_FALLBACKS_IN_INCLUDE...
+ d c 1615
+ d XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE...
+ d c 1616
+ d XML_XINCLUDE_DEPRECATED_NS...
+ d c 1617
+ d XML_XINCLUDE_FRAGMENT_ID...
+ d c 1618
+ d XML_CATALOG_MISSING_ATTR...
+ d c 1650
+ d XML_CATALOG_ENTRY_BROKEN...
+ d c 1651
+ d XML_CATALOG_PREFER_VALUE...
+ d c 1652
+ d XML_CATALOG_NOT_CATALOG...
+ d c 1653
+ d XML_CATALOG_RECURSION...
+ d c 1654
+ d XML_SCHEMAP_PREFIX_UNDEFINED...
+ d c 1700
+ d XML_SCHEMAP_ATTRFORMDEFAULT_VALUE...
+ d c 1701
+ d XML_SCHEMAP_ATTRGRP_NONAME_NOREF...
+ d c 1702
+ d XML_SCHEMAP_ATTR_NONAME_NOREF...
+ d c 1703
+ d XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF...
+ d c 1704
+ d XML_SCHEMAP_ELEMFORMDEFAULT_VALUE...
+ d c 1705
+ d XML_SCHEMAP_ELEM_NONAME_NOREF...
+ d c 1706
+ d XML_SCHEMAP_EXTENSION_NO_BASE...
+ d c 1707
+ d XML_SCHEMAP_FACET_NO_VALUE...
+ d c 1708
+ d XML_SCHEMAP_FAILED_BUILD_IMPORT...
+ d c 1709
+ d XML_SCHEMAP_GROUP_NONAME_NOREF...
+ d c 1710
+ d XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI...
+ d c 1711
+ d XML_SCHEMAP_IMPORT_REDEFINE_NSNAME...
+ d c 1712
+ d XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI...
+ d c 1713
+ d XML_SCHEMAP_INVALID_BOOLEAN...
+ d c 1714
+ d XML_SCHEMAP_INVALID_ENUM...
+ d c 1715
+ d XML_SCHEMAP_INVALID_FACET...
+ d c 1716
+ d XML_SCHEMAP_INVALID_FACET_VALUE...
+ d c 1717
+ d XML_SCHEMAP_INVALID_MAXOCCURS...
+ d c 1718
+ d XML_SCHEMAP_INVALID_MINOCCURS...
+ d c 1719
+ d XML_SCHEMAP_INVALID_REF_AND_SUBTYPE...
+ d c 1720
+ d XML_SCHEMAP_INVALID_WHITE_SPACE...
+ d c 1721
+ d XML_SCHEMAP_NOATTR_NOREF...
+ d c 1722
+ d XML_SCHEMAP_NOTATION_NO_NAME...
+ d c 1723
+ d XML_SCHEMAP_NOTYPE_NOREF...
+ d c 1724
+ d XML_SCHEMAP_REF_AND_SUBTYPE...
+ d c 1725
+ d XML_SCHEMAP_RESTRICTION_NONAME_NOREF...
+ d c 1726
+ d XML_SCHEMAP_SIMPLETYPE_NONAME...
+ d c 1727
+ d XML_SCHEMAP_TYPE_AND_SUBTYPE...
+ d c 1728
+ d XML_SCHEMAP_UNKNOWN_ALL_CHILD...
+ d c 1729
+ d XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD...
+ d c 1730
+ d XML_SCHEMAP_UNKNOWN_ATTR_CHILD...
+ d c 1731
+ d XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD...
+ d c 1732
+ d XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP...
+ d c 1733
+ d XML_SCHEMAP_UNKNOWN_BASE_TYPE...
+ d c 1734
+ d XML_SCHEMAP_UNKNOWN_CHOICE_CHILD...
+ d c 1735
+ d XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD...
+ d c 1736
+ d XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD...
+ d c 1737
+ d XML_SCHEMAP_UNKNOWN_ELEM_CHILD...
+ d c 1738
+ d XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD...
+ d c 1739
+ d XML_SCHEMAP_UNKNOWN_FACET_CHILD...
+ d c 1740
+ d XML_SCHEMAP_UNKNOWN_FACET_TYPE...
+ d c 1741
+ d XML_SCHEMAP_UNKNOWN_GROUP_CHILD...
+ d c 1742
+ d XML_SCHEMAP_UNKNOWN_IMPORT_CHILD...
+ d c 1743
+ d XML_SCHEMAP_UNKNOWN_LIST_CHILD...
+ d c 1744
+ d XML_SCHEMAP_UNKNOWN_NOTATION_CHILD...
+ d c 1745
+ d XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD...
+ d c 1746
+ d XML_SCHEMAP_UNKNOWN_REF...
+ d c 1747
+ d XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD...
+ d c 1748
+ d XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD...
+ d c 1749
+ d XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD...
+ d c 1750
+ d XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD...
+ d c 1751
+ d XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD...
+ d c 1752
+ d XML_SCHEMAP_UNKNOWN_TYPE...
+ d c 1753
+ d XML_SCHEMAP_UNKNOWN_UNION_CHILD...
+ d c 1754
+ d XML_SCHEMAP_ELEM_DEFAULT_FIXED...
+ d c 1755
+ d XML_SCHEMAP_REGEXP_INVALID...
+ d c 1756
+ d XML_SCHEMAP_FAILED_LOAD...
+ d c 1757
+ d XML_SCHEMAP_NOTHING_TO_PARSE...
+ d c 1758
+ d XML_SCHEMAP_NOROOT...
+ d c 1759
+ d XML_SCHEMAP_REDEFINED_GROUP...
+ d c 1760
+ d XML_SCHEMAP_REDEFINED_TYPE...
+ d c 1761
+ d XML_SCHEMAP_REDEFINED_ELEMENT...
+ d c 1762
+ d XML_SCHEMAP_REDEFINED_ATTRGROUP...
+ d c 1763
+ d XML_SCHEMAP_REDEFINED_ATTR...
+ d c 1764
+ d XML_SCHEMAP_REDEFINED_NOTATION...
+ d c 1765
+ d XML_SCHEMAP_FAILED_PARSE...
+ d c 1766
+ d XML_SCHEMAP_UNKNOWN_PREFIX...
+ d c 1767
+ d XML_SCHEMAP_DEF_AND_PREFIX...
+ d c 1768
+ d XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD...
+ d c 1769
+ d XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI...
+ d c 1770
+ d XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI...
+ d c 1771
+ d XML_SCHEMAP_NOT_SCHEMA...
+ d c 1772
+ d XML_SCHEMAP_UNKNOWN_MEMBER_TYPE...
+ d c 1773
+ d XML_SCHEMAP_INVALID_ATTR_USE...
+ d c 1774
+ d XML_SCHEMAP_RECURSIVE...
+ d c 1775
+ d XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE...
+ d c 1776
+ d XML_SCHEMAP_INVALID_ATTR_COMBINATION...
+ d c 1777
+ d XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION...
+ d c 1778
+ d XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD...
+ d c 1779
+ d XML_SCHEMAP_INVALID_ATTR_NAME...
+ d c 1780
+ d XML_SCHEMAP_REF_AND_CONTENT...
+ d c 1781
+ d XML_SCHEMAP_CT_PROPS_CORRECT_1...
+ d c 1782
+ d XML_SCHEMAP_CT_PROPS_CORRECT_2...
+ d c 1783
+ d XML_SCHEMAP_CT_PROPS_CORRECT_3...
+ d c 1784
+ d XML_SCHEMAP_CT_PROPS_CORRECT_4...
+ d c 1785
+ d XML_SCHEMAP_CT_PROPS_CORRECT_5...
+ d c 1786
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1...
+ d c 1787
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1...
+ d c 1788
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2...
+ d c 1789
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2...
+ d c 1790
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3...
+ d c 1791
+ d XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER...
+ d c 1792
+ d XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE...
+ d c 1793
+ d XML_SCHEMAP_UNION_NOT_EXPRESSIBLE...
+ d c 1794
+ d XML_SCHEMAP_SRC_IMPORT_3_1...
+ d c 1795
+ d XML_SCHEMAP_SRC_IMPORT_3_2...
+ d c 1796
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1...
+ d c 1797
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2...
+ d c 1798
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3...
+ d c 1799
+ d XML_SCHEMAP_COS_CT_EXTENDS_1_3...
+ d c 1800
+ d XML_SCHEMAV_NOROOT...
+ d c 1801
+ d XML_SCHEMAV_UNDECLAREDELEM...
+ d c 1802
+ d XML_SCHEMAV_NOTTOPLEVEL...
+ d c 1803
+ d XML_SCHEMAV_MISSING...
+ d c 1804
+ d XML_SCHEMAV_WRONGELEM...
+ d c 1805
+ d XML_SCHEMAV_NOTYPE...
+ d c 1806
+ d XML_SCHEMAV_NOROLLBACK...
+ d c 1807
+ d XML_SCHEMAV_ISABSTRACT...
+ d c 1808
+ d XML_SCHEMAV_NOTEMPTY...
+ d c 1809
+ d XML_SCHEMAV_ELEMCONT...
+ d c 1810
+ d XML_SCHEMAV_HAVEDEFAULT...
+ d c 1811
+ d XML_SCHEMAV_NOTNILLABLE...
+ d c 1812
+ d XML_SCHEMAV_EXTRACONTENT...
+ d c 1813
+ d XML_SCHEMAV_INVALIDATTR...
+ d c 1814
+ d XML_SCHEMAV_INVALIDELEM...
+ d c 1815
+ d XML_SCHEMAV_NOTDETERMINIST...
+ d c 1816
+ d XML_SCHEMAV_CONSTRUCT...
+ d c 1817
+ d XML_SCHEMAV_INTERNAL...
+ d c 1818
+ d XML_SCHEMAV_NOTSIMPLE...
+ d c 1819
+ d XML_SCHEMAV_ATTRUNKNOWN...
+ d c 1820
+ d XML_SCHEMAV_ATTRINVALID...
+ d c 1821
+ d XML_SCHEMAV_VALUE...
+ d c 1822
+ d XML_SCHEMAV_FACET...
+ d c 1823
+ d XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1...
+ d c 1824
+ d XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2...
+ d c 1825
+ d XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3...
+ d c 1826
+ d XML_SCHEMAV_CVC_TYPE_3_1_1...
+ d c 1827
+ d XML_SCHEMAV_CVC_TYPE_3_1_2...
+ d c 1828
+ d XML_SCHEMAV_CVC_FACET_VALID...
+ d c 1829
+ d XML_SCHEMAV_CVC_LENGTH_VALID...
+ d c 1830
+ d XML_SCHEMAV_CVC_MINLENGTH_VALID...
+ d c 1831
+ d XML_SCHEMAV_CVC_MAXLENGTH_VALID...
+ d c 1832
+ d XML_SCHEMAV_CVC_MININCLUSIVE_VALID...
+ d c 1833
+ d XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID...
+ d c 1834
+ d XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID...
+ d c 1835
+ d XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID...
+ d c 1836
+ d XML_SCHEMAV_CVC_TOTALDIGITS_VALID...
+ d c 1837
+ d XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID...
+ d c 1838
+ d XML_SCHEMAV_CVC_PATTERN_VALID...
+ d c 1839
+ d XML_SCHEMAV_CVC_ENUMERATION_VALID...
+ d c 1840
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1...
+ d c 1841
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2...
+ d c 1842
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3...
+ d c 1843
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4...
+ d c 1844
+ d XML_SCHEMAV_CVC_ELT_1...
+ d c 1845
+ d XML_SCHEMAV_CVC_ELT_2...
+ d c 1846
+ d XML_SCHEMAV_CVC_ELT_3_1...
+ d c 1847
+ d XML_SCHEMAV_CVC_ELT_3_2_1...
+ d c 1848
+ d XML_SCHEMAV_CVC_ELT_3_2_2...
+ d c 1849
+ d XML_SCHEMAV_CVC_ELT_4_1...
+ d c 1850
+ d XML_SCHEMAV_CVC_ELT_4_2...
+ d c 1851
+ d XML_SCHEMAV_CVC_ELT_4_3...
+ d c 1852
+ d XML_SCHEMAV_CVC_ELT_5_1_1...
+ d c 1853
+ d XML_SCHEMAV_CVC_ELT_5_1_2...
+ d c 1854
+ d XML_SCHEMAV_CVC_ELT_5_2_1...
+ d c 1855
+ d XML_SCHEMAV_CVC_ELT_5_2_2_1...
+ d c 1856
+ d XML_SCHEMAV_CVC_ELT_5_2_2_2_1...
+ d c 1857
+ d XML_SCHEMAV_CVC_ELT_5_2_2_2_2...
+ d c 1858
+ d XML_SCHEMAV_CVC_ELT_6...
+ d c 1859
+ d XML_SCHEMAV_CVC_ELT_7...
+ d c 1860
+ d XML_SCHEMAV_CVC_ATTRIBUTE_1...
+ d c 1861
+ d XML_SCHEMAV_CVC_ATTRIBUTE_2...
+ d c 1862
+ d XML_SCHEMAV_CVC_ATTRIBUTE_3...
+ d c 1863
+ d XML_SCHEMAV_CVC_ATTRIBUTE_4...
+ d c 1864
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1...
+ d c 1865
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1...
+ d c 1866
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2...
+ d c 1867
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_4...
+ d c 1868
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1...
+ d c 1869
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2...
+ d c 1870
+ d XML_SCHEMAV_ELEMENT_CONTENT...
+ d c 1871
+ d XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING...
+ d c 1872
+ d XML_SCHEMAV_CVC_COMPLEX_TYPE_1...
+ d c 1873
+ d XML_SCHEMAV_CVC_AU...
+ d c 1874
+ d XML_SCHEMAV_CVC_TYPE_1...
+ d c 1875
+ d XML_SCHEMAV_CVC_TYPE_2...
+ d c 1876
+ d XML_SCHEMAV_CVC_IDC...
+ d c 1877
+ d XML_SCHEMAV_CVC_WILDCARD...
+ d c 1878
+ d XML_SCHEMAV_MISC...
+ d c 1879
+ d XML_XPTR_UNKNOWN_SCHEME...
+ d c 1900
+ d XML_XPTR_CHILDSEQ_START...
+ d c 1901
+ d XML_XPTR_EVAL_FAILED...
+ d c 1902
+ d XML_XPTR_EXTRA_OBJECTS...
+ d c 1903
+ d XML_C14N_CREATE_CTXT...
+ d c 1950
+ d XML_C14N_REQUIRES_UTF8...
+ d c 1951
+ d XML_C14N_CREATE_STACK...
+ d c 1952
+ d XML_C14N_INVALID_NODE...
+ d c 1953
+ d XML_C14N_UNKNOW_NODE...
+ d c 1954
+ d XML_C14N_RELATIVE_NAMESPACE...
+ d c 1955
+ d XML_FTP_PASV_ANSWER...
+ d c 2000
+ d XML_FTP_EPSV_ANSWER...
+ d c 2001
+ d XML_FTP_ACCNT...
+ d c 2002
+ d XML_FTP_URL_SYNTAX...
+ d c 2003
+ d XML_HTTP_URL_SYNTAX...
+ d c 2020
+ d XML_HTTP_USE_IP...
+ d c 2021
+ d XML_HTTP_UNKNOWN_HOST...
+ d c 2022
+ d XML_SCHEMAP_SRC_SIMPLE_TYPE_1...
+ d c 3000
+ d XML_SCHEMAP_SRC_SIMPLE_TYPE_2...
+ d c 3001
+ d XML_SCHEMAP_SRC_SIMPLE_TYPE_3...
+ d c 3002
+ d XML_SCHEMAP_SRC_SIMPLE_TYPE_4...
+ d c 3003
+ d XML_SCHEMAP_SRC_RESOLVE...
+ d c 3004
+ d XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE...
+ d c 3005
+ d XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE...
+ d c 3006
+ d XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES...
+ d c 3007
+ d XML_SCHEMAP_ST_PROPS_CORRECT_1...
+ d c 3008
+ d XML_SCHEMAP_ST_PROPS_CORRECT_2...
+ d c 3009
+ d XML_SCHEMAP_ST_PROPS_CORRECT_3...
+ d c 3010
+ d XML_SCHEMAP_COS_ST_RESTRICTS_1_1...
+ d c 3011
+ d XML_SCHEMAP_COS_ST_RESTRICTS_1_2...
+ d c 3012
+ d XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1...
+ d c 3013
+ d XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2...
+ d c 3014
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_1...
+ d c 3015
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1...
+ d c 3016
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2...
+ d c 3017
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1...
+ d c 3018
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2...
+ d c 3019
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3...
+ d c 3020
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4...
+ d c 3021
+ d XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5...
+ d c 3022
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_1...
+ d c 3023
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1...
+ d c 3024
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2...
+ d c 3025
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2...
+ d c 3026
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1...
+ d c 3027
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3...
+ d c 3028
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4...
+ d c 3029
+ d XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5...
+ d c 3030
+ d XML_SCHEMAP_COS_ST_DERIVED_OK_2_1...
+ d c 3031
+ d XML_SCHEMAP_COS_ST_DERIVED_OK_2_2...
+ d c 3032
+ d XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED...
+ d c 3033
+ d XML_SCHEMAP_S4S_ELEM_MISSING...
+ d c 3034
+ d XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED...
+ d c 3035
+ d XML_SCHEMAP_S4S_ATTR_MISSING...
+ d c 3036
+ d XML_SCHEMAP_S4S_ATTR_INVALID_VALUE...
+ d c 3037
+ d XML_SCHEMAP_SRC_ELEMENT_1...
+ d c 3038
+ d XML_SCHEMAP_SRC_ELEMENT_2_1...
+ d c 3039
+ d XML_SCHEMAP_SRC_ELEMENT_2_2...
+ d c 3040
+ d XML_SCHEMAP_SRC_ELEMENT_3...
+ d c 3041
+ d XML_SCHEMAP_P_PROPS_CORRECT_1...
+ d c 3042
+ d XML_SCHEMAP_P_PROPS_CORRECT_2_1...
+ d c 3043
+ d XML_SCHEMAP_P_PROPS_CORRECT_2_2...
+ d c 3044
+ d XML_SCHEMAP_E_PROPS_CORRECT_2...
+ d c 3045
+ d XML_SCHEMAP_E_PROPS_CORRECT_3...
+ d c 3046
+ d XML_SCHEMAP_E_PROPS_CORRECT_4...
+ d c 3047
+ d XML_SCHEMAP_E_PROPS_CORRECT_5...
+ d c 3048
+ d XML_SCHEMAP_E_PROPS_CORRECT_6...
+ d c 3049
+ d XML_SCHEMAP_SRC_INCLUDE...
+ d c 3050
+ d XML_SCHEMAP_SRC_ATTRIBUTE_1...
+ d c 3051
+ d XML_SCHEMAP_SRC_ATTRIBUTE_2...
+ d c 3052
+ d XML_SCHEMAP_SRC_ATTRIBUTE_3_1...
+ d c 3053
+ d XML_SCHEMAP_SRC_ATTRIBUTE_3_2...
+ d c 3054
+ d XML_SCHEMAP_SRC_ATTRIBUTE_4...
+ d c 3055
+ d XML_SCHEMAP_NO_XMLNS...
+ d c 3056
+ d XML_SCHEMAP_NO_XSI...
+ d c 3057
+ d XML_SCHEMAP_COS_VALID_DEFAULT_1...
+ d c 3058
+ d XML_SCHEMAP_COS_VALID_DEFAULT_2_1...
+ d c 3059
+ d XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1...
+ d c 3060
+ d XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2...
+ d c 3061
+ d XML_SCHEMAP_CVC_SIMPLE_TYPE...
+ d c 3062
+ d XML_SCHEMAP_COS_CT_EXTENDS_1_1...
+ d c 3063
+ d XML_SCHEMAP_SRC_IMPORT_1_1...
+ d c 3064
+ d XML_SCHEMAP_SRC_IMPORT_1_2...
+ d c 3065
+ d XML_SCHEMAP_SRC_IMPORT_2...
+ d c 3066
+ d XML_SCHEMAP_SRC_IMPORT_2_1...
+ d c 3067
+ d XML_SCHEMAP_SRC_IMPORT_2_2...
+ d c 3068
+ d XML_SCHEMAP_INTERNAL... Non W3C
+ d c 3069
+ d XML_SCHEMAP_NOT_DETERMINISTIC...
+ d c 3070
+ d XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1...
+ d c 3071
+ d XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2...
+ d c 3072
+ d XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3...
+ d c 3073
+ d XML_SCHEMAP_MG_PROPS_CORRECT_1...
+ d c 3074
+ d XML_SCHEMAP_MG_PROPS_CORRECT_2...
+ d c 3075
+ d XML_SCHEMAP_SRC_CT_1...
+ d c 3076
+ d XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3...
+ d c 3077
+ d XML_SCHEMAP_AU_PROPS_CORRECT_2...
+ d c 3078
+ d XML_SCHEMAP_A_PROPS_CORRECT_2...
+ d c 3079
+ d XML_SCHEMAP_C_PROPS_CORRECT...
+ d c 3080
+ d XML_SCHEMAP_SRC_REDEFINE...
+ d c 3081
+ d XML_SCHEMAP_SRC_IMPORT...
+ d c 3082
+ d XML_SCHEMAP_WARN_SKIP_SCHEMA...
+ d c 3083
+ d XML_SCHEMAP_WARN_UNLOCATED_SCHEMA...
+ d c 3084
+ d XML_SCHEMAP_WARN_ATTR_REDECL_PROH...
+ d c 3085
+ d XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH...
+ d c 3086
+ d XML_SCHEMAP_AG_PROPS_CORRECT...
+ d c 3087
+ d XML_SCHEMAP_COS_CT_EXTENDS_1_2...
+ d c 3088
+ d XML_SCHEMAP_AU_PROPS_CORRECT...
+ d c 3089
+ d XML_SCHEMAP_A_PROPS_CORRECT_3...
+ d c 3090
+ d XML_SCHEMAP_COS_ALL_LIMITED...
+ d c 3091
+ d XML_SCHEMATRONV_ASSERT...
+ d c 4000
+ d XML_SCHEMATRONV_REPORT...
+ d c 4001
+ d XML_MODULE_OPEN...
+ d c 4900
+ d XML_MODULE_CLOSE...
+ d c 4901
+ d XML_CHECK_FOUND_ELEMENT...
+ d c 5000
+ d XML_CHECK_FOUND_ATTRIBUTE...
+ d c 5001
+ d XML_CHECK_FOUND_TEXT...
+ d c 5002
+ d XML_CHECK_FOUND_CDATA...
+ d c 5003
+ d XML_CHECK_FOUND_ENTITYREF...
+ d c 5004
+ d XML_CHECK_FOUND_ENTITY...
+ d c 5005
+ d XML_CHECK_FOUND_PI...
+ d c 5006
+ d XML_CHECK_FOUND_COMMENT...
+ d c 5007
+ d XML_CHECK_FOUND_DOCTYPE...
+ d c 5008
+ d XML_CHECK_FOUND_FRAGMENT...
+ d c 5009
+ d XML_CHECK_FOUND_NOTATION...
+ d c 5010
+ d XML_CHECK_UNKNOWN_NODE...
+ d c 5011
+ d XML_CHECK_ENTITY_TYPE...
+ d c 5012
+ d XML_CHECK_NO_PARENT...
+ d c 5013
+ d XML_CHECK_NO_DOC...
+ d c 5014
+ d XML_CHECK_NO_NAME...
+ d c 5015
+ d XML_CHECK_NO_ELEM...
+ d c 5016
+ d XML_CHECK_WRONG_DOC...
+ d c 5017
+ d XML_CHECK_NO_PREV...
+ d c 5018
+ d XML_CHECK_WRONG_PREV...
+ d c 5019
+ d XML_CHECK_NO_NEXT...
+ d c 5020
+ d XML_CHECK_WRONG_NEXT...
+ d c 5021
+ d XML_CHECK_NOT_DTD...
+ d c 5022
+ d XML_CHECK_NOT_ATTR...
+ d c 5023
+ d XML_CHECK_NOT_ATTR_DECL...
+ d c 5024
+ d XML_CHECK_NOT_ELEM_DECL...
+ d c 5025
+ d XML_CHECK_NOT_ENTITY_DECL...
+ d c 5026
+ d XML_CHECK_NOT_NS_DECL...
+ d c 5027
+ d XML_CHECK_NO_HREF...
+ d c 5028
+ d XML_CHECK_WRONG_PARENT...
+ d c 5029
+ d XML_CHECK_NS_SCOPE...
+ d c 5030
+ d XML_CHECK_NS_ANCESTOR...
+ d c 5031
+ d XML_CHECK_NOT_UTF8...
+ d c 5032
+ d XML_CHECK_NO_DICT...
+ d c 5033
+ d XML_CHECK_NOT_NCNAME...
+ d c 5034
+ d XML_CHECK_OUTSIDE_DICT...
+ d c 5035
+ d XML_CHECK_WRONG_NAME...
+ d c 5036
+ d XML_CHECK_NAME_NOT_NULL...
+ d c 5037
+ d XML_I18N_NO_NAME...
+ d c 6000
+ d XML_I18N_NO_HANDLER...
+ d c 6001
+ d XML_I18N_EXCESS_HANDLER...
+ d c 6002
+ d XML_I18N_CONV_FAILED...
+ d c 6003
+ d XML_I18N_NO_OUTPUT...
+ d c 6004
+ d XML_BUF_OVERFLOW...
+ d c 7000
+
+ * xmlGenericErrorFunc:
+ * @ctx: a parsing context
+ * @msg: the message
+ * @...: the extra arguments of the varags to format the message
+ *
+ * Signature of the function to use when there is an error and
+ * no parsing or validity context available .
+
+ d xmlGenericErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlStructuredErrorFunc:
+ * @userData: user provided data for the error callback
+ * @error: the error being raised.
+ *
+ * Signature of the function to use when there is an error and
+ * the module handles the new error reporting mechanism.
+
+ d xmlStructuredErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * Use the following function to reset the two global variables
+ * xmlGenericError and xmlGenericErrorContext.
+
+ d xmlSetGenericErrorFunc...
+ d pr extproc('xmlSetGenericErrorFunc')
+ d ctx * value void *
+ d handler value like(xmlGenericErrorFunc)
+
+ d initGenericErrorDefaultFunc...
+ d pr extproc(
+ d 'initGenericErrorDefaultFunc')
+ d handler like(xmlGenericErrorFunc)
+
+ d xmlSetStructuredErrorFunc...
+ d pr extproc('xmlSetStructuredErrorFunc')
+ d ctx * value void *
+ d handler value like(xmlGenericErrorFunc)
+
+ * Default message routines used by SAX and Valid context for error
+ * and warning reporting.
+ *
+ * These are vararg functions.
+ * The following prototypes support up to 8 pointer arguments.
+ * Other argument signature can be achieved by defining alternate
+ * prototypes redirected to the same function.
+
+ d xmlParserError pr extproc('xmlParserError')
+ d ctx * value void *
+ d msg * value options(*string) const char *
+ d handler value like(xmlGenericErrorFunc)
+ d arg1 * value options(*string: *nopass)
+ d arg2 * value options(*string: *nopass)
+ d arg3 * value options(*string: *nopass)
+ d arg4 * value options(*string: *nopass)
+ d arg5 * value options(*string: *nopass)
+ d arg6 * value options(*string: *nopass)
+ d arg7 * value options(*string: *nopass)
+ d arg8 * value options(*string: *nopass)
+
+ d xmlParserWarning...
+ d pr extproc('xmlParserWarning')
+ d ctx * value void *
+ d msg * value options(*string) const char *
+ d handler value like(xmlGenericErrorFunc)
+ d arg1 * value options(*string: *nopass)
+ d arg2 * value options(*string: *nopass)
+ d arg3 * value options(*string: *nopass)
+ d arg4 * value options(*string: *nopass)
+ d arg5 * value options(*string: *nopass)
+ d arg6 * value options(*string: *nopass)
+ d arg7 * value options(*string: *nopass)
+ d arg8 * value options(*string: *nopass)
+
+ d xmlParserValidityError...
+ d pr extproc('xmlParserValidityError')
+ d ctx * value void *
+ d msg * value options(*string) const char *
+ d handler value like(xmlGenericErrorFunc)
+ d arg1 * value options(*string: *nopass)
+ d arg2 * value options(*string: *nopass)
+ d arg3 * value options(*string: *nopass)
+ d arg4 * value options(*string: *nopass)
+ d arg5 * value options(*string: *nopass)
+ d arg6 * value options(*string: *nopass)
+ d arg7 * value options(*string: *nopass)
+ d arg8 * value options(*string: *nopass)
+
+ d xmlParserValidityWarning...
+ d pr extproc('xmlParserValidityWarning')
+ d ctx * value void *
+ d msg * value options(*string) const char *
+ d handler value like(xmlGenericErrorFunc)
+ d arg1 * value options(*string: *nopass)
+ d arg2 * value options(*string: *nopass)
+ d arg3 * value options(*string: *nopass)
+ d arg4 * value options(*string: *nopass)
+ d arg5 * value options(*string: *nopass)
+ d arg6 * value options(*string: *nopass)
+ d arg7 * value options(*string: *nopass)
+ d arg8 * value options(*string: *nopass)
+
+ d xmlParserPrintFileInfo...
+ d pr extproc('xmlParserPrintFileInfo')
+ d input value like(xmlParserInputPtr)
+
+ d xmlParserPrintFileContext...
+ d pr extproc('xmlParserPrintFileContext')
+ d input value like(xmlParserInputPtr)
+
+ * Extended error information routines
+
+ d xmlGetLastError...
+ d pr extproc('xmlGetLastError')
+ d like(xmlErrorPtr)
+
+ d xmlResetLastError...
+ d pr extproc('xmlResetLastError')
+
+ d xmlCtxtGetLastError...
+ d pr extproc('xmlCtxtGetLastError')
+ d like(xmlErrorPtr)
+ d ctx * value void *
+
+ d xmlCtxtResetLastError...
+ d pr extproc('xmlCtxtResetLastError')
+ d ctx * value void *
+
+ d xmlResetError pr extproc('xmlResetError')
+ d err value like(xmlErrorPtr)
+
+ d xmlCopyError pr 10i 0 extproc('xmlCopyError')
+ d from value like(xmlErrorPtr)
+ d to value like(xmlErrorPtr)
+
+ /endif XML_ERROR_H__
diff --git a/os400/libxmlrpg/xmlexports.rpgle b/os400/libxmlrpg/xmlexports.rpgle
new file mode 100644
index 0000000..9a6fd10
--- /dev/null
+++ b/os400/libxmlrpg/xmlexports.rpgle
@@ -0,0 +1,15 @@
+ * Summary: macros for marking symbols as exportable/importable.
+ * Description: macros for marking symbols as exportable/importable.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_EXPORTS_H__)
+ /define XML_EXPORTS_H__
+
+ * The definition in the original C header file are not appliable to
+ * ILE/RPG.
+ * Therefore this file is intentionally empty.
+
+ /endif XML_EXPORTS_H__
diff --git a/os400/libxmlrpg/xmlmemory.rpgle b/os400/libxmlrpg/xmlmemory.rpgle
new file mode 100644
index 0000000..165eaca
--- /dev/null
+++ b/os400/libxmlrpg/xmlmemory.rpgle
@@ -0,0 +1,239 @@
+ * Summary: interface for the memory allocator
+ * Description: provides interfaces for the memory allocator,
+ * including debugging capabilities.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(DEBUG_MEMORY_ALLOC__)
+ /define DEBUG_MEMORY_ALLOC__
+
+ /include "libxmlrpg/xmlversion"
+
+ * DEBUG_MEMORY:
+ *
+ * DEBUG_MEMORY replaces the allocator with a collect and debug
+ * shell to the libc allocator.
+ * DEBUG_MEMORY should only be activated when debugging
+ * libxml i.e. if libxml has been configured with --with-debug-mem too.
+
+ * /define DEBUG_MEMORY_FREED
+ * /define DEBUG_MEMORY_LOCATION
+
+ /if defined(DEBUG)
+ /if not defined(DEBUG_MEMORY)
+ /define DEBUG_MEMORY
+ /endif
+ /endif
+
+ * DEBUG_MEMORY_LOCATION:
+ *
+ * DEBUG_MEMORY_LOCATION should be activated only when debugging
+ * libxml i.e. if libxml has been configured with --with-debug-mem too.
+
+ /if defined(DEBUG_MEMORY_LOCATION)
+ /endif
+
+ * The XML memory wrapper support 4 basic overloadable functions.
+
+ * xmlFreeFunc:
+ * @mem: an already allocated block of memory
+ *
+ * Signature for a free() implementation.
+
+ d xmlFreeFunc s * based(######typedef######)
+ d procptr
+
+ * xmlMallocFunc:
+ * @size: the size requested in bytes
+ *
+ * Signature for a malloc() implementation.
+ *
+ * Returns a pointer to the newly allocated block or NULL in case of error.
+
+ d xmlMallocFunc s * based(######typedef######)
+ d procptr
+
+ * xmlReallocFunc:
+ * @mem: an already allocated block of memory
+ * @size: the new size requested in bytes
+ *
+ * Signature for a realloc() implementation.
+ *
+ * Returns a pointer to the newly reallocated block or NULL in case of error.
+
+ d xmlReallocFunc s * based(######typedef######)
+ d procptr
+
+ * xmlStrdupFunc:
+ * @str: a zero terminated string
+ *
+ * Signature for an strdup() implementation.
+ *
+ * Returns the copy of the string or NULL in case of error.
+
+ d xmlStrdupFunc s * based(######typedef######)
+ d procptr
+
+ * The 5 interfaces used for all memory handling within libxml.
+ * Since indirect calls are only supported via a based prototype,
+ * storage is accessed via functions.
+
+ d get_xmlFree pr extproc('__get_xmlFree')
+ d like(xmlFreeFunc)
+
+ d set_xmlFree pr extproc('__set_xmlFree')
+ d func value like(xmlFreeFunc)
+
+ d xmlFree pr extproc('__call_xmlFree')
+ d mem * value void *
+
+ d get_xmlMalloc pr extproc('__get_xmlMalloc')
+ d like(xmlMallocFunc)
+
+ d set_xmlMalloc pr extproc('__set_xmlMalloc')
+ d func value like(xmlMallocFunc)
+
+ d xmlMalloc pr * extproc('__call_xmlMalloc') void *
+ d size 10u 0 value size_t
+
+ d get_xmlMallocAtomic...
+ d pr extproc('__get_xmlMallocAtomic')
+ d like(xmlMallocFunc)
+
+ d set_xmlMallocAtomic...
+ d pr extproc('__set_xmlMallocAtomic')
+ d func value like(xmlMallocFunc)
+
+ d xmlMallocAtomic...
+ d pr * extproc('__call_xmlMallocAtomic') void *
+ d size 10u 0 value size_t
+
+ d get_xmlRealloc pr extproc('__get_xmlRealloc')
+ d like(xmlReallocFunc)
+
+ d set_xmlRealloc pr extproc('__set_xmlRealloc')
+ d func value like(xmlReallocFunc)
+
+ d xmlRealloc pr * extproc('__call_xmlRealloc') void *
+ d mem * value void *
+ d size 10u 0 value size_t
+
+ d get_xmlMemStrdup...
+ d pr extproc('__get_xmlMemStrdup')
+ d like(xmlStrdupFunc)
+
+ d set_xmlMemStrdup...
+ d pr extproc('__set_xmlMemstrdup')
+ d func value like(xmlStrdupFunc)
+
+ d xmlMemStrdup pr * extproc('__call_xmlMemStrdup') void *
+ d str * value options(*string) const char *
+
+ * The way to overload the existing functions.
+ * The xmlGc function have an extra entry for atomic block
+ * allocations useful for garbage collected memory allocators
+
+ d xmlMemSetup pr 10i 0 extproc('xmlMemSetup')
+ d freeFunc value like(xmlFreeFunc)
+ d mallocFunc value like(xmlMallocFunc)
+ d reallocFunc value like(xmlReallocFunc)
+ d strdupFunc value like(xmlStrdupFunc)
+
+ d xmlMemGet pr 10i 0 extproc('xmlMemGet')
+ d freeFunc like(xmlFreeFunc)
+ d mallocFunc like(xmlMallocFunc)
+ d reallocFunc like(xmlReallocFunc)
+ d strdupFunc like(xmlStrdupFunc)
+
+ d xmlGcMemSetup pr 10i 0 extproc('xmlGcMemSetup')
+ d freeFunc value like(xmlFreeFunc)
+ d mallocFunc value like(xmlMallocFunc)
+ d mallocAtomicFunc...
+ d value like(xmlMallocFunc)
+ d reallocFunc value like(xmlReallocFunc)
+ d strdupFunc value like(xmlStrdupFunc)
+
+ d xmlGcMemGet pr 10i 0 extproc('xmlGcMemGet')
+ d freeFunc like(xmlFreeFunc)
+ d mallocFunc like(xmlMallocFunc)
+ d mallocAtomicFunc...
+ d like(xmlMallocFunc)
+ d reallocFunc like(xmlReallocFunc)
+ d strdupFunc like(xmlStrdupFunc)
+
+ * Initialization of the memory layer.
+
+ d xmlInitMemory pr 10i 0 extproc('xmlInitMemory')
+
+ * Cleanup of the memory layer.
+
+ d xmlCleanupMemory...
+ d pr extproc('xmlCleanupMemory')
+
+ * These are specific to the XML debug memory wrapper.
+
+ d xmlMemUsed pr 10i 0 extproc('xmlMemUsed')
+
+ d xmlMemBlocks pr 10i 0 extproc('xmlMemBlocks')
+
+ d xmlMemDisplay pr extproc('xmlMemDisplay')
+ d fp * value FILE *
+
+ d xmlMmDisplayLast...
+ d pr extproc('xmlMemDisplayLast')
+ d fp * value FILE *
+ d nbBytes 20i 0 value
+
+ d xmlMemShow pr extproc('xmlMemShow')
+ d fp * value FILE *
+ d nr 10i 0 value
+
+ d xmlMemoryDump pr extproc('xmlMemoryDump')
+
+ d xmlMemMalloc pr * extproc('xmlMemMalloc') void *
+ d size 10u 0 value size_t
+
+ d xmlMemRealloc pr * extproc('xmlMemRealloc') void *
+ d ptr * value void *
+ d size 10u 0 value size_t
+
+ d xmlMemFree pr extproc('xmlMemFree')
+ d ptr * value void *
+
+ d xmlMemoryStrdup...
+ d pr * extproc('xmlMemoryStrdup') char *
+ d str * value options(*string) const char *
+
+ d xmlMallocLoc pr * extproc('xmlMallocLoc') void *
+ d size 10u 0 value size_t
+ d file * value options(*string) const char *
+ d line 10i 0 value
+
+ d xmlReallocLoc pr * extproc('xmlReallocLoc') void *
+ d ptr * value void *
+ d size 10u 0 value size_t
+ d file * value options(*string) const char *
+ d line 10i 0 value
+
+ d xmlMallocAtomicLoc...
+ d pr * extproc('xmlMallocAtomicLoc') void *
+ d size 10u 0 value size_t
+ d file * value options(*string) const char *
+ d line 10i 0 value
+
+ d xmlMemStrdupLoc...
+ d pr * extproc('xmlMemStrdupLoc') char *
+ d str * value options(*string) const char *
+ d file * value options(*string) const char *
+ d line 10i 0 value
+
+ /if not defined(XML_GLOBALS_H)
+ /if not defined(XML_THREADS_H__)
+ /include "libxmlrpg/threads"
+ /include "libxmlrpg/globals"
+ /endif
+ /endif
+
+ /endif DEBUG_MEMORY_ALLOC__
diff --git a/os400/libxmlrpg/xmlmodule.rpgle b/os400/libxmlrpg/xmlmodule.rpgle
new file mode 100644
index 0000000..09592a6
--- /dev/null
+++ b/os400/libxmlrpg/xmlmodule.rpgle
@@ -0,0 +1,51 @@
+ * Summary: dynamic module loading
+ * Description: basic API for dynamic module loading, used by
+ * libexslt added in 2.6.17
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_MODULE_H__)
+ /define XML_MODULE_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_MODULES_ENABLED)
+
+ * xmlModulePtr:
+ *
+ * A handle to a dynamically loaded module
+
+ d xmlModulePtr s * based(######typedef######)
+
+ * xmlModuleOption:
+ *
+ * enumeration of options that can be passed down to xmlModuleOpen()
+
+ d xmlModuleOption...
+ d s 10i 0 based(######typedef######) enum
+ d XML_MODULE_LAZY... Lazy binding
+ d c 1
+ d XML_MODULE_LOCAL... Local binding
+ d c 2
+
+ d xmlModuleOpen pr extproc('xmlModuleOpen')
+ d like(xmlModulePtr)
+ d filename * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlModuleSymbol...
+ d pr 10i 0 extproc('xmlModuleSymbol')
+ d module value like(xmlModulePtr)
+ d name * value options(*string) const char *
+ d result * void *(*)
+
+ d xmlModuleClose pr 10i 0 extproc('xmlModuleClose')
+ d module value like(xmlModulePtr)
+
+ d xmlModuleFree pr 10i 0 extproc('xmlModuleFree')
+ d module value like(xmlModulePtr)
+
+ /endif LIBXML_MODULES_ENBLD
+ /endif XML_MODULE_H__
diff --git a/os400/libxmlrpg/xmlreader.rpgle b/os400/libxmlrpg/xmlreader.rpgle
new file mode 100644
index 0000000..eccd37c
--- /dev/null
+++ b/os400/libxmlrpg/xmlreader.rpgle
@@ -0,0 +1,619 @@
+ * Summary: the XMLReader implementation
+ * Description: API of the XML streaming API based on C# interfaces.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XMLREADER_H__)
+ /define XML_XMLREADER_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/xmlIO"
+
+ /if defined(LIBXML_SCHEMAS_ENABLED)
+ /include "libxmlrpg/relaxng"
+ /include "libxmlrpg/xmlschemas"
+ /endif
+
+ * xmlParserSeverities:
+ *
+ * How severe an error callback is when the per-reader error callback API
+ * is used.
+
+ d xmlParserSeverities...
+ d s 10i 0 based(######typedef######) enum
+ d XML_PARSER_SEVERITY_VALIDITY_WARNING...
+ d c 1
+ d XML_PARSER_SEVERITY_VALIDITY_ERROR...
+ d c 2
+ d XML_PARSER_SEVERITY_WARNING...
+ d c 3
+ d XML_PARSER_SEVERITY_ERROR...
+ d c 4
+
+ /if defined(LIBXML_READER_ENABLED)
+
+ * xmlTextReaderMode:
+ *
+ * Internal state values for the reader.
+
+ d xmlTextReaderMode...
+ d s 10i 0 based(######typedef######) enum
+ d XML_TEXTREADER_MODE_INITIAL...
+ d c 0
+ d XML_TEXTREADER_MODE_INTERACTIVE...
+ d c 1
+ d XML_TEXTREADER_MODE_ERROR...
+ d c 2
+ d XML_TEXTREADER_MODE_EOF...
+ d c 3
+ d XML_TEXTREADER_MODE_CLOSED...
+ d c 4
+ d XML_TEXTREADER_MODE_READING...
+ d c 5
+
+ * xmlParserProperties:
+ *
+ * Some common options to use with xmlTextReaderSetParserProp, but it
+ * is better to use xmlParserOption and the xmlReaderNewxxx and
+ * xmlReaderForxxx APIs now.
+
+ d xmlParserProperties...
+ d s 10i 0 based(######typedef######) enum
+ d XML_PARSER_LOADDTD...
+ d c 1
+ d XML_PARSER_DEFAULTATTRS...
+ d c 2
+ d XML_PARSER_VALIDATE...
+ d c 3
+ d XML_PARSER_SUBST_ENTITIES...
+ d c 4
+
+ * xmlReaderTypes:
+ *
+ * Predefined constants for the different types of nodes.
+
+ d xmlReaderTypes s 10i 0 based(######typedef######) enum
+ d XML_READER_TYPE_NONE...
+ d c 0
+ d XML_READER_TYPE_ELEMENT...
+ d c 1
+ d XML_READER_TYPE_ATTRIBUTE...
+ d c 2
+ d XML_READER_TYPE_TEXT...
+ d c 3
+ d XML_READER_TYPE_CDATA...
+ d c 4
+ d XML_READER_TYPE_ENTITY_REFERENCE...
+ d c 5
+ d XML_READER_TYPE_ENTITY...
+ d c 6
+ d XML_READER_TYPE_PROCESSING_INSTRUCTION...
+ d c 7
+ d XML_READER_TYPE_COMMENT...
+ d c 8
+ d XML_READER_TYPE_DOCUMENT...
+ d c 9
+ d XML_READER_TYPE_DOCUMENT_TYPE...
+ d c 10
+ d XML_READER_TYPE_DOCUMENT_FRAGMENT...
+ d c 11
+ d XML_READER_TYPE_NOTATION...
+ d c 12
+ d XML_READER_TYPE_WHITESPACE...
+ d c 13
+ d XML_READER_TYPE_SIGNIFICANT_WHITESPACE...
+ d c 14
+ d XML_READER_TYPE_END_ELEMENT...
+ d c 15
+ d XML_READER_TYPE_END_ENTITY...
+ d c 16
+ d XML_READER_TYPE_XML_DECLARATION...
+ d c 17
+
+ * xmlTextReaderPtr:
+ *
+ * Pointer to an xmlReader context.
+
+ d xmlTextReaderPtr...
+ d s * based(######typedef######)
+
+ * Constructors & Destructor
+
+ d xmlNewTextReader...
+ d pr extproc('xmlNewTextReader')
+ d like(xmlTextReaderPtr)
+ d input value like(xmlParserInputBufferPtr)
+ d URI * value options(*string) const char *
+
+ d xmlNewTextReaderFilename...
+ d pr extproc('xmlNewTextReaderFilename')
+ d like(xmlTextReaderPtr)
+ d URI * value options(*string) const char *
+
+ d xmlFreeTextReader...
+ d pr extproc('xmlFreeTextReader')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderSetup...
+ d pr 10i 0 extproc('xmlTextReaderSetup')
+ d reader value like(xmlTextReaderPtr)
+ d input value like(xmlParserInputBufferPtr)
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ * Iterators
+
+ d xmlTextReaderRead...
+ d pr 10i 0 extproc('xmlTextReaderRead')
+ d reader value like(xmlTextReaderPtr)
+
+ /if defined(LIBXML_WRITER_ENABLED)
+ d xmlTextReaderReadInnerXml...
+ d pr * extproc('xmlTextReaderReadInnerXml') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderReadOuterXml...
+ d pr * extproc('xmlTextReaderReadOuterXml') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+ /endif
+
+ d xmlTextReaderReadString...
+ d pr * extproc('xmlTextReaderReadString') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderReadAttributeValue...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderReadAttributeValue')
+ d reader value like(xmlTextReaderPtr)
+
+ * Attributes of the node
+
+ d xmlTextReaderAttributeCount...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderAttributeCount')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderDepth...
+ d pr 10i 0 extproc('xmlTextReaderDepth')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderHasAttributes...
+ d pr 10i 0 extproc('xmlTextReaderHasAttributes')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderHasValue...
+ d pr 10i 0 extproc('xmlTextReaderHasValue')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderIsDefault...
+ d pr 10i 0 extproc('xmlTextReaderIsDefault')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderIsEmptyElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderIsEmptyElement')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderNodeType...
+ d pr 10i 0 extproc('xmlTextReaderNodeType')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderQuoteChar...
+ d pr 10i 0 extproc('xmlTextReaderQuoteChar')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderReadState...
+ d pr 10i 0 extproc('xmlTextReaderReadState')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderIsNamespaceDecl...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderIsNamespaceDecl')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstBaseUri...
+ d pr * extproc('xmlTextReaderConstBaseUri') const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstLocalName...
+ d pr * extproc( const xmlChar *
+ d 'xmlTextReaderConstLocalName')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstName...
+ d pr * extproc('xmlTextReaderConstName') const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstNamespaceUri...
+ d pr * extproc( const xmlChar *
+ d 'xmlTextReaderConstNamespaceUri')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstPrefix...
+ d pr * extproc('xmlTextReaderConstPrefix') const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstXmlLang...
+ d pr * extproc('xmlTextReaderConstXmlLang') const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstString...
+ d pr * extproc('xmlTextReaderConstString') const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+ d str * value options(*string) const xmlChar *
+
+ d xmlTextReaderConstValue...
+ d pr * extproc('xmlTextReaderConstValue') const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ * use the Const version of the routine for
+ * better performance and simpler code
+
+ d xmlTextReaderBaseUri...
+ d pr * extproc('xmlTextReaderBaseUri') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderLocalName...
+ d pr * extproc('xmlTextReaderLocalName') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderName...
+ d pr * extproc('xmlTextReaderName') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderNamespaceUri...
+ d pr * extproc('xmlTextReaderNamespaceUri') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderPrefix...
+ d pr * extproc('xmlTextReaderPrefix') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderXmlLang...
+ d pr * extproc('xmlTextReaderXmlLang') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderValue...
+ d pr * extproc('xmlTextReaderValue') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ * Methods of the XmlTextReader
+
+ d xmlTextReaderClose...
+ d pr 10i 0 extproc('xmlTextReaderClose')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderGetAttributeNo...
+ d pr * extproc( xmlChar *
+ d 'xmlTextReaderGetAttributeNo')
+ d reader value like(xmlTextReaderPtr)
+ d no 10i 0 value
+
+ d xmlTextReaderGetAttribute...
+ d pr * extproc('xmlTextReaderGetAttribute') xmlChar *
+ d reader value like(xmlTextReaderPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextReaderGetAttributeNs...
+ d pr * extproc( xmlChar *
+ d 'xmlTextReaderGetAttributeNs')
+ d reader value like(xmlTextReaderPtr)
+ d localName * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+
+ d xmlTextReaderGetRemainder...
+ d pr extproc('xmlTextReaderGetRemainder')
+ d like(xmlParserInputBufferPtr)
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderLookupNamespace...
+ d pr * extproc( xmlChar *
+ d 'xmlTextReaderLookupNamespace')
+ d reader value like(xmlTextReaderPtr)
+ d prefix * value options(*string) const xmlChar *
+
+ d xmlTextReaderMoveToAttributeNo...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderMoveToAttributeNo')
+ d reader value like(xmlTextReaderPtr)
+ d no 10i 0 value
+
+ d xmlTextReaderMoveToAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderMoveToAttribute')
+ d reader value like(xmlTextReaderPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextReaderMoveToAttributeNs...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderMoveToAttributeNs')
+ d reader value like(xmlTextReaderPtr)
+ d localName * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+
+ d xmlTextReaderMoveToFirstAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderMoveToFirstAttribute')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderMoveToNextAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderMoveToNextAttribute')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderMoveToElement...
+ d pr 10i 0 extproc('xmlTextReaderMoveToElement')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderNormalization...
+ d pr 10i 0 extproc('xmlTextReaderNormalization')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderConstEncoding...
+ d pr * extproc('xmlTextReaderConstEncoding')const xmlChar *
+ d reader value like(xmlTextReaderPtr)
+
+ * Extensions
+
+ d xmlTextReaderSetParserProp...
+ d pr 10i 0 extproc('xmlTextReaderSetParserProp')
+ d reader value like(xmlTextReaderPtr)
+ d prop 10i 0 value
+ d value 10i 0 value
+
+ d xmlTextReaderGetParserProp...
+ d pr 10i 0 extproc('xmlTextReaderGetParserProp')
+ d reader value like(xmlTextReaderPtr)
+ d prop 10i 0 value
+
+ d xmlTextReaderCurrentNode...
+ d pr extproc('xmlTextReaderCurrentNode')
+ d like(xmlNodePtr)
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderGetParserLineNumber...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderGetParserLineNumber')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderGetParserColumnNumber...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderGetParserColumnNumber')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderPreserve...
+ d pr extproc('xmlTextReaderPreserve')
+ d like(xmlNodePtr)
+ d reader value like(xmlTextReaderPtr)
+
+ /if defined(LIBXML_PATTERN_ENABLED)
+ d xmlTextReaderPreservePattern...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderPreservePattern')
+ d reader value like(xmlTextReaderPtr)
+ d pattern * value options(*string) const xmlChar *
+ d namespaces * const xmlChar *(*)
+ /endif LIBXML_PATTERN_ENBLD
+
+ d xmlTextReaderCurrentDoc...
+ d pr extproc('xmlTextReaderCurrentDoc')
+ d like(xmlDocPtr)
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderExpand...
+ d pr extproc('xmlTextReaderExpand')
+ d like(xmlNodePtr)
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderNext...
+ d pr 10i 0 extproc('xmlTextReaderNext')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderNextSibling...
+ d pr 10i 0 extproc('xmlTextReaderNextSibling')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderIsValid...
+ d pr 10i 0 extproc('xmlTextReaderIsValid')
+ d reader value like(xmlTextReaderPtr)
+
+ /if defined(LIBXML_SCHEMAS_ENABLED)
+ d xmlTextReaderRelaxNGValidate...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderRelaxNGValidate')
+ d reader value like(xmlTextReaderPtr)
+ d rng * value options(*string) const char *
+
+ d xmlTextReaderRelaxNGValidateCtxt...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderRelaxNGValidateCtxt')
+ d reader value like(xmlTextReaderPtr)
+ d ctxt value like(xmlRelaxNGValidCtxtPtr)
+ d options 10i 0 value
+
+ d xmlTextReaderRelaxNGSetSchema...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderRelaxNGSetSchema')
+ d reader value like(xmlTextReaderPtr)
+ d schema value like(xmlRelaxNGPtr)
+
+ d xmlTextReaderSchemaValidate...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderSchemaValidate')
+ d reader value like(xmlTextReaderPtr)
+ d xsd * value options(*string) const char *
+
+ d xmlTextReaderSchemaValidateCtxt...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderSchemaValidateCtxt')
+ d reader value like(xmlTextReaderPtr)
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d options 10i 0 value
+
+ d xmlTextReaderSetSchema...
+ d pr 10i 0 extproc('xmlTextReaderSetSchema')
+ d reader value like(xmlTextReaderPtr)
+ d schema value like(xmlSchemaPtr)
+ /endif
+
+ d xmlTextReaderConstXmlVersion...
+ d pr * extproc( const xmlChar *
+ d 'xmlTextReaderConstXmlVersion')
+ d reader value like(xmlTextReaderPtr)
+
+ d xmlTextReaderStandalone...
+ d pr 10i 0 extproc('xmlTextReaderStandalone')
+ d reader value like(xmlTextReaderPtr)
+
+ * Index lookup
+
+ d xmlTextReaderByteConsumed...
+ d pr 20i 0 extproc('xmlTextReaderByteConsumed')
+ d reader value like(xmlTextReaderPtr)
+
+ * New more complete APIs for simpler creation and reuse of readers
+
+ d xmlReaderWalker...
+ d pr extproc('xmlReaderWalker')
+ d like(xmlTextReaderPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlReaderForDoc...
+ d pr extproc('xmlReaderForDoc')
+ d like(xmlTextReaderPtr)
+ d cur * value options(*string) const xmlChar *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderForFile...
+ d pr extproc('xmlReaderForFile')
+ d like(xmlTextReaderPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderForMemory...
+ d pr extproc('xmlReaderForMemory')
+ d like(xmlTextReaderPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderForFd pr extproc('xmlReaderForFd')
+ d like(xmlTextReaderPtr)
+ d fd 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderForIO pr extproc('xmlReaderForIO')
+ d like(xmlTextReaderPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderNewWalker...
+ d pr 10i 0 extproc('xmlReaderNewWalker')
+ d reader value like(xmlTextReaderPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlReaderNewDoc...
+ d pr 10i 0 extproc('xmlReaderNewDoc')
+ d reader value like(xmlTextReaderPtr)
+ d cur * value options(*string) const xmlChar *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderNewFile...
+ d pr 10i 0 extproc('xmlReaderNewFile')
+ d reader value like(xmlTextReaderPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderNewMemory...
+ d pr 10i 0 extproc('xmlReaderNewMemory')
+ d reader value like(xmlTextReaderPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderNewFd pr 10i 0 extproc('xmlReaderNewFd')
+ d reader value like(xmlTextReaderPtr)
+ d fd 10i 0 value
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlReaderNewIO pr 10i 0 extproc('xmlReaderNewIO')
+ d reader value like(xmlTextReaderPtr)
+ d ioread value like(xmlInputReadCallback)
+ d ioclose value like(xmlInputCloseCallback)
+ d ioctx * value void *
+ d URL * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ * Error handling extensions
+
+ d xmlTextReaderLocatorPtr...
+ d s * based(######typedef######) void *
+
+ * xmlTextReaderErrorFunc:
+ * @arg: the user argument
+ * @msg: the message
+ * @severity: the severity of the error
+ * @locator: a locator indicating where the error occured
+ *
+ * Signature of an error callback from a reader parser
+
+ d xmlTextReaderErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ d xmlTextReaderLocatorLineNumber...
+ d pr 10i 0 extproc(
+ d 'xmlTextReaderLocatorLineNumber')
+ d locator value like(xmlTextReaderLocatorPtr)
+
+ d xmlTextReaderLocatorBaseURI...
+ d pr * extproc( xmlChar *
+ d 'xmlTextReaderLocatorBaseURI')
+ d locator value like(xmlTextReaderLocatorPtr)
+
+ d xmlTextReaderSetErrorHandler...
+ d pr extproc(
+ d 'xmlTextReaderSetErrorHandler')
+ d reader value like(xmlTextReaderPtr)
+ d f value like(xmlTextReaderErrorFunc)
+ d arg * value void *
+
+ d xmlTextReaderSetStructuredErrorHandler...
+ d pr extproc('xmlTextReaderSetStructuredE-
+ d rrorHandler')
+ d reader value like(xmlTextReaderPtr)
+ d f value like(xmlStructuredErrorFunc)
+ d arg * value void *
+
+ d xmlTextReaderGetErrorHandler...
+ d pr extproc(
+ d 'xmlTextReaderGetErrorHandler')
+ d reader value like(xmlTextReaderPtr)
+ d f like(xmlTextReaderErrorFunc)
+ d arg * void *(*)
+
+ /endif LIBXML_READER_ENABLD
+ /endif XML_XMLREADER_H__
diff --git a/os400/libxmlrpg/xmlregexp.rpgle b/os400/libxmlrpg/xmlregexp.rpgle
new file mode 100644
index 0000000..65c2d07
--- /dev/null
+++ b/os400/libxmlrpg/xmlregexp.rpgle
@@ -0,0 +1,246 @@
+ * Summary: regular expressions handling
+ * Description: basic API for libxml regular expressions handling used
+ * for XML Schemas and validation.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_REGEXP_H__)
+ /define XML_REGEXP_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_REGEXP_ENABLED)
+
+ * xmlRegexpPtr:
+ *
+ * A libxml regular expression, they can actually be far more complex
+ * thank the POSIX regex expressions.
+
+ d xmlRegexpPtr s * based(######typedef######)
+
+ * xmlRegExecCtxtPtr:
+ *
+ * A libxml progressive regular expression evaluation context
+
+ d xmlRegExecCtxtPtr...
+ d s * based(######typedef######)
+
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/dict"
+
+ * The POSIX like API
+
+ d xmlRegexpCompile...
+ d pr extproc('xmlRegexpCompile')
+ d like(xmlRegexpPtr)
+ d regexp * value options(*string) const xmlChar *
+
+ d xmlRegFreeRegexp...
+ d pr extproc('xmlRegFreeRegexp')
+ d regexp value like(xmlRegexpPtr)
+
+ d xmlRegexpExec pr 10i 0 extproc('xmlRegexpExec')
+ d comp value like(xmlRegexpPtr)
+ d value * value options(*string) const xmlChar *
+
+ d xmlRegexpPrint pr extproc('xmlRegexpPrint')
+ d output * value FILE *
+ d regexp value like(xmlRegexpPtr)
+
+ d xmlRegexpIsDeterminist...
+ d pr 10i 0 extproc('xmlRegexpIsDeterminist')
+ d comp value like(xmlRegexpPtr)
+
+ * xmlRegExecCallbacks:
+ * @exec: the regular expression context
+ * @token: the current token string
+ * @transdata: transition data
+ * @inputdata: input data
+ *
+ * Callback function when doing a transition in the automata
+
+ d xmlRegExecCallbacks...
+ d s * based(######typedef######)
+ d procptr
+
+ * The progressive API
+
+ d xmlRegNewExecCtxt...
+ d pr extproc('xmlRegNewExecCtxt')
+ d like(xmlRegExecCtxtPtr)
+ d comp value like(xmlRegexpPtr)
+ d callback value like(xmlRegExecCallbacks)
+ d data * value void *
+
+ d xmlRegFreeExecCtxt...
+ d pr extproc('xmlRegFreeExecCtxt')
+ d exec value like(xmlRegExecCtxtPtr)
+
+ d xmlRegExecPushString...
+ d pr 10i 0 extproc('xmlRegExecPushString')
+ d exec value like(xmlRegExecCtxtPtr)
+ d value * value options(*string) const xmlChar *
+ d data * value void *
+
+ d xmlRegExecPushString2...
+ d pr 10i 0 extproc('xmlRegExecPushString2')
+ d exec value like(xmlRegExecCtxtPtr)
+ d value * value options(*string) const xmlChar *
+ d value2 * value options(*string) const xmlChar *
+ d data * value void *
+
+ d xmlRegExecNextValues...
+ d pr 10i 0 extproc('xmlRegExecNextValues')
+ d exec value like(xmlRegExecCtxtPtr)
+ d nbval 10i 0
+ d nbneg 10i 0
+ d values * xmlChar * (*)
+ d terminal 10i 0
+
+ d xmlRegExecErrInfo...
+ d pr 10i 0 extproc('xmlRegExecErrInfo')
+ d exec value like(xmlRegExecCtxtPtr)
+ d string * const xmlChar * (*)
+ d nbval 10i 0
+ d nbneg 10i 0
+ d values * xmlChar * (*)
+ d terminal 10i 0
+
+ /if defined(LIBXML_EXPR_ENABLED)
+
+ * Formal regular expression handling
+ * Its goal is to do some formal work on content models
+
+ * expressions are used within a context
+
+ d xmlExpCtxtPtr s * based(######typedef######)
+
+ d xmlExpFreeCtxt pr extproc('xmlExpFreeCtxt')
+ d ctxt value like(xmlExpCtxtPtr)
+
+ d xmlExpNewCtxt pr extproc('xmlExpNewCtxt')
+ d like(xmlExpCtxtPtr)
+ d maxNodes 10i 0 value
+ d dict value like(xmlDictPtr)
+
+ d xmlExpCtxtNbNodes...
+ d pr 10i 0 extproc('xmlExpCtxtNbNodes')
+ d ctxt value like(xmlExpCtxtPtr)
+
+ d xmlExpCtxtNbCons...
+ d pr 10i 0 extproc('xmlExpCtxtNbCons')
+ d ctxt value like(xmlExpCtxtPtr)
+
+ * Expressions are trees but the tree is opaque
+
+ d xmlExpNodePtr s * based(######typedef######)
+
+ d xmlExpNodeType s 10i 0 based(######typedef######) enum
+ d XML_EXP_EMPTY c 0
+ d XML_EXP_FORBID...
+ d c 1
+ d XML_EXP_ATOM c 2
+ d XML_EXP_SEQ c 3
+ d XML_EXP_OR c 4
+ d XML_EXP_COUNT c 5
+
+ * 2 core expressions shared by all for the empty language set
+ * and for the set with just the empty token
+
+ d forbiddenExp s import('forbiddenExp')
+ d like(xmlExpNodePtr)
+
+ d emptyExp s import('emptyExp')
+ d like(xmlExpNodePtr)
+
+
+ * Expressions are reference counted internally
+
+ d xmlExpFree pr extproc('xmlExpFree')
+ d expr value like(xmlExpNodePtr)
+
+ d xmlExpRef pr extproc('xmlExpRef')
+ d expr value like(xmlExpNodePtr)
+
+ * constructors can be either manual or from a string
+
+ d xmlExpParse pr extproc('xmlExpParse')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d expr * value options(*string) const char *
+
+ d xmlExpNewAtom pr extproc('xmlExpNewAtom')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d name * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlExpNewOr pr extproc('xmlExpNewOr')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d left value like(xmlExpNodePtr)
+ d right value like(xmlExpNodePtr)
+
+ d xmlExpNewSeq pr extproc('xmlExpNewSeq')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d left value like(xmlExpNodePtr)
+ d right value like(xmlExpNodePtr)
+
+ d xmlExpNewRange pr extproc('xmlExpNewRange')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d subset value like(xmlExpNodePtr)
+ d min 10i 0 value
+ d max 10i 0 value
+
+ * The really interesting APIs
+
+ d xmlExpIsNillable...
+ d pr 10i 0 extproc('xmlExpIsNillable')
+ d expr value like(xmlExpNodePtr)
+
+ d xmlExpMaxToken pr 10i 0 extproc('xmlExpMaxToken')
+ d expr value like(xmlExpNodePtr)
+
+ d xmlExpGetLanguage...
+ d pr 10i 0 extproc('xmlExpGetLanguage')
+ d ctxt value like(xmlExpCtxtPtr)
+ d expr value like(xmlExpNodePtr)
+ d langList * const xmlChar *(*)
+ d len 10i 0 value
+
+ d xmlExpGetStart pr 10i 0 extproc('xmlExpGetStart')
+ d ctxt value like(xmlExpCtxtPtr)
+ d expr value like(xmlExpNodePtr)
+ d tokList * const xmlChar *(*)
+ d len 10i 0 value
+
+ d xmlExpStringDerive...
+ d pr extproc('xmlExpStringDerive')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d expr value like(xmlExpNodePtr)
+ d str * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlExpExpDerive...
+ d pr extproc('xmlExpExpDerive')
+ d like(xmlExpNodePtr)
+ d ctxt value like(xmlExpCtxtPtr)
+ d expr value like(xmlExpNodePtr)
+ d sub value like(xmlExpNodePtr)
+
+ d xmlExpSubsume pr 10i 0 extproc('xmlExpSubsume')
+ d ctxt value like(xmlExpCtxtPtr)
+ d expr value like(xmlExpNodePtr)
+ d sub value like(xmlExpNodePtr)
+
+ d xmlExpDump pr extproc('xmlExpDump')
+ d buf value like(xmlBufferPtr)
+ d expr value like(xmlExpNodePtr)
+ /endif LIBXML_EXPR_ENABLED
+ /endif LIBXML_REGEXP_ENABLD
+ /endif XML_REGEXP_H__
diff --git a/os400/libxmlrpg/xmlsave.rpgle b/os400/libxmlrpg/xmlsave.rpgle
new file mode 100644
index 0000000..efcb09f
--- /dev/null
+++ b/os400/libxmlrpg/xmlsave.rpgle
@@ -0,0 +1,96 @@
+ * Summary: the XML document serializer
+ * Description: API to save document or subtree of document
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XMLSAVE_H__)
+ /define XML_XMLSAVE_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/encoding"
+ /include "libxmlrpg/xmlIO"
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+
+ * xmlSaveOption:
+ *
+ * This is the set of XML save options that can be passed down
+ * to the xmlSaveToFd() and similar calls.
+
+ d xmlSaveOption s 10i 0 based(######typedef######) enum
+ d XML_SAVE_FORMAT... Format save output
+ d c X'0001'
+ d XML_SAVE_NO_DECL... Drop xml declaration
+ d c X'0002'
+ d XML_SAVE_NO_EMPTY... No empty tags
+ d c X'0004'
+ d XML_SAVE_NO_XHTML... No XHTML1 specific
+ d c X'0008'
+ d XML_SAVE_XHTML... Frce XHTML1 specific
+ d c X'0010'
+ d XML_SAVE_AS_XML... Frce XML on HTML doc
+ d c X'0020'
+ d XML_SAVE_AS_HTML... Frce HTML on XML doc
+ d c X'0040'
+ d XML_SAVE_WSNONSIG... Fmt w/ non-sig space
+ d c X'0080'
+
+ d xmlSaveCtxtPtr s * based(######typedef######)
+
+ d xmlSaveToFd pr extproc('xmlSaveToFd')
+ d like(xmlSaveCtxtPtr)
+ d fd 10i 0 value
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlSaveToFilename...
+ d pr extproc('xmlSaveToFilename')
+ d like(xmlSaveCtxtPtr)
+ d filename * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlSaveToBuffer...
+ d pr extproc('xmlSaveToBuffer')
+ d like(xmlSaveCtxtPtr)
+ d buffer value like(xmlBufferPtr)
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlSaveToIO pr extproc('xmlSaveToIO')
+ d like(xmlSaveCtxtPtr)
+ d iowrite value like(xmlOutputWriteCallback)
+ d ioclose value like(xmlOutputCloseCallback)
+ d ioctx * value void *
+ d encoding * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlSaveDoc pr 20i 0 extproc('xmlSaveDoc')
+ d ctxt value like(xmlSaveCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlSaveTree pr 20i 0 extproc('xmlSaveTree')
+ d ctxt value like(xmlSaveCtxtPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlSaveFlush pr 10i 0 extproc('xmlSaveFlush')
+ d ctxt value like(xmlSaveCtxtPtr)
+
+ d xmlSaveClose pr 10i 0 extproc('xmlSaveClose')
+ d ctxt value like(xmlSaveCtxtPtr)
+
+ d xmlSaveSetEscape...
+ d pr 10i 0 extproc('xmlSaveSetEscape')
+ d ctxt value like(xmlSaveCtxtPtr)
+ d escape value like(xmlCharEncodingOutputFunc)
+
+ d xmlSaveSetAttrEscape...
+ d pr 10i 0 extproc('xmlSaveSetAttrEscape')
+ d ctxt value like(xmlSaveCtxtPtr)
+ d escape value like(xmlCharEncodingOutputFunc)
+
+ /endif LIBXML_OUTPUT_ENABLD
+ /endif XML_XMLSAVE_H__
diff --git a/os400/libxmlrpg/xmlschemas.rpgle b/os400/libxmlrpg/xmlschemas.rpgle
new file mode 100644
index 0000000..865dd26
--- /dev/null
+++ b/os400/libxmlrpg/xmlschemas.rpgle
@@ -0,0 +1,318 @@
+ * Summary: incomplete XML Schemas structure implementation
+ * Description: interface to the XML Schemas handling and schema validity
+ * checking, it is incomplete right now.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_SCHEMA_H__)
+ /define XML_SCHEMA_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_SCHEMAS_ENABLED)
+
+ /include "libxmlrpg/tree"
+
+ * This error codes are obsolete; not used any more.
+
+ d xmlSchemaValidError...
+ d s 10i 0 based(######typedef######) enum
+ d XML_SCHEMAS_ERR_OK...
+ d c 0
+ d XML_SCHEMAS_ERR_NOROOT...
+ d c 1
+ d XML_SCHEMAS_ERR_UNDECLAREDELEM...
+ d c 2
+ d XML_SCHEMAS_ERR_NOTTOPLEVEL...
+ d c 3
+ d XML_SCHEMAS_ERR_MISSING...
+ d c 4
+ d XML_SCHEMAS_ERR_WRONGELEM...
+ d c 5
+ d XML_SCHEMAS_ERR_NOTYPE...
+ d c 6
+ d XML_SCHEMAS_ERR_NOROLLBACK...
+ d c 7
+ d XML_SCHEMAS_ERR_ISABSTRACT...
+ d c 8
+ d XML_SCHEMAS_ERR_NOTEMPTY...
+ d c 9
+ d XML_SCHEMAS_ERR_ELEMCONT...
+ d c 10
+ d XML_SCHEMAS_ERR_HAVEDEFAULT...
+ d c 11
+ d XML_SCHEMAS_ERR_NOTNILLABLE...
+ d c 12
+ d XML_SCHEMAS_ERR_EXTRACONTENT...
+ d c 13
+ d XML_SCHEMAS_ERR_INVALIDATTR...
+ d c 14
+ d XML_SCHEMAS_ERR_INVALIDELEM...
+ d c 15
+ d XML_SCHEMAS_ERR_NOTDETERMINIST...
+ d c 16
+ d XML_SCHEMAS_ERR_CONSTRUCT...
+ d c 17
+ d XML_SCHEMAS_ERR_INTERNAL...
+ d c 18
+ d XML_SCHEMAS_ERR_NOTSIMPLE...
+ d c 19
+ d XML_SCHEMAS_ERR_ATTRUNKNOWN...
+ d c 20
+ d XML_SCHEMAS_ERR_ATTRINVALID...
+ d c 21
+ d XML_SCHEMAS_ERR_VALUE...
+ d c 22
+ d XML_SCHEMAS_ERR_FACET...
+ d c 23
+ d XML_SCHEMAS_ERR_...
+ d c 24
+ d XML_SCHEMAS_ERR_XXX...
+ d c 25
+
+ * ATTENTION: Change xmlSchemaSetValidOptions's check
+ * for invalid values, if adding to the validation
+ * options below.
+
+ * xmlSchemaValidOption:
+ *
+ * This is the set of XML Schema validation options.
+
+ d xmlSchemaValidOption...
+ d s 10i 0 based(######typedef######) enum
+ *
+ * Default/fixed: create an attribute node
+ * or an element's text node on the instance.
+ *
+ d XML_SCHEMA_VAL_VC_I_CREATE...
+ d c X'0001'
+ /if defined(DISABLED)
+ *
+ * assemble schemata using
+ * xsi:schemaLocation and
+ * xsi:noNamespaceSchemaLocation
+ *
+ d XML_SCHEMA_VAL_XSI_ASSEMBLE...
+ d c X'0002'
+ /endif
+
+ * The schemas related types are kept internal
+
+ d xmlSchemaPtr s * based(######typedef######)
+
+ * xmlSchemaValidityErrorFunc:
+ * @ctx: the validation context
+ * @msg: the message
+ * @...: extra arguments
+ *
+ * Signature of an error callback from an XSD validation
+
+ d xmlSchemaValidityErrorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlSchemaValidityWarningFunc:
+ * @ctx: the validation context
+ * @msg: the message
+ * @...: extra arguments
+ *
+ * Signature of a warning callback from an XSD validation
+
+ d xmlSchemaValidityWarningFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * A schemas validation context
+
+ d xmlSchemaParserCtxtPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaValidCtxtPtr...
+ d s * based(######typedef######)
+
+ * xmlSchemaValidityLocatorFunc:
+ * @ctx: user provided context
+ * @file: returned file information
+ * @line: returned line information
+ *
+ * A schemas validation locator, a callback called by the validator.
+ * This is used when file or node informations are not available
+ * to find out what file and line number are affected
+ *
+ * Returns: 0 in case of success and -1 in case of error
+
+ d xmlSchemaValidityLocatorFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * Interfaces for parsing.
+
+ d xmlSchemaNewParserCtxt...
+ d pr extproc('xmlSchemaNewParserCtxt')
+ d like(xmlSchemaParserCtxtPtr)
+ d URL * value options(*string) const char *
+
+ d xmlSchemaNewMemParserCtxt...
+ d pr extproc('xmlSchemaNewMemParserCtxt')
+ d like(xmlSchemaParserCtxtPtr)
+ d buffer * value options(*string) const char *
+ d size 10i 0 value
+
+ d xmlSchemaNewDocParserCtxt...
+ d pr extproc('xmlSchemaNewDocParserCtxt')
+ d like(xmlSchemaParserCtxtPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlSchemaFreeParserCtxt...
+ d pr extproc('xmlSchemaFreeParserCtxt')
+ d ctxt value like(xmlSchemaParserCtxtPtr)
+
+ d xmlSchemaSetParserErrors...
+ d pr extproc('xmlSchemaSetParserErrors')
+ d ctxt value like(xmlSchemaParserCtxtPtr)
+ d err value
+ d like(xmlSchemaValidityErrorFunc)
+ d warn value
+ d like(xmlSchemaValidityWarningFunc)
+ d ctx * value void *
+
+ d xmlSchemaSetParserStructuredErrors...
+ d pr extproc(
+ d 'xmlSchemaSetParserStructuredErrors')
+ d ctxt value like(xmlSchemaParserCtxtPtr)
+ d serror value like(xmlStructuredErrorFunc)
+ d ctx * value void *
+
+ d xmlSchemaGetParserErrors...
+ d pr 10i 0 extproc('xmlSchemaGetParserErrors')
+ d ctxt value like(xmlSchemaParserCtxtPtr)
+ d err like(xmlSchemaValidityErrorFunc)
+ d warn like(xmlSchemaValidityWarningFunc)
+ d ctx * void *(*)
+
+ d xmlSchemaIsValid...
+ d pr 10i 0 extproc('xmlSchemaIsValid')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+
+ d xmlSchemaParse pr extproc('xmlSchemaParse')
+ d like(xmlSchemaPtr)
+ d ctxt value like(xmlSchemaParserCtxtPtr)
+
+ d xmlSchemaFree pr extproc('xmlSchemaFree')
+ d schema value like(xmlSchemaPtr)
+
+ /if defined(LIBXML_OUTPUT_ENABLED)
+ d xmlSchemaDump pr extproc('xmlSchemaDump')
+ d output * value FILE *
+ d schema value like(xmlSchemaPtr)
+ /endif LIBXML_OUTPUT_ENABLD
+
+ * Interfaces for validating
+
+ d xmlSchemaSetValidErrors...
+ d pr extproc('xmlSchemaSetValidErrors')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d err value
+ d like(xmlSchemaValidityErrorFunc)
+ d warn value
+ d like(xmlSchemaValidityWarningFunc)
+ d ctx * value void *
+
+ d xmlSchemaSetValidStructuredErrors...
+ d pr extproc(
+ d 'xmlSchemaSetValidStructuredErrors')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d serror value like(xmlStructuredErrorFunc)
+ d ctx * value void *
+
+ d xmlSchemaGetValidErrors...
+ d pr 10i 0 extproc('xmlSchemaGetValidErrors')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d err like(xmlSchemaValidityErrorFunc)
+ d warn like(xmlSchemaValidityWarningFunc)
+ d ctx * void *(*)
+
+ d xmlSchemaSetValidOptions...
+ d pr 10i 0 extproc('xmlSchemaSetValidOptions')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d options 10i 0 value
+
+ d xmlSchemaValidateSetFilename...
+ d pr extproc(
+ d 'xmlSchemaValidateSetFilename')
+ d vctxt value like(xmlSchemaValidCtxtPtr)
+ d filename * value options(*string) const char *
+
+ d xmlSchemaValidCtxtGetOptions...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValidCtxtGetOptions')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+
+ d xmlSchemaNewValidCtxt...
+ d pr extproc('xmlSchemaNewValidCtxt')
+ d like(xmlSchemaValidCtxtPtr)
+ d schema value like(xmlSchemaPtr)
+
+ d xmlSchemaFreeValidCtxt...
+ d pr extproc('xmlSchemaFreeValidCtxt')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+
+ d xmlSchemaValidateDoc...
+ d pr 10i 0 extproc('xmlSchemaValidateDoc')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d instance value like(xmlDocPtr)
+
+ d xmlSchemaValidateOneElement...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValidateOneElement')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d elem value like(xmlNodePtr)
+
+ d xmlSchemaValidateStream...
+ d pr 10i 0 extproc('xmlSchemaValidateStream')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d input value like(xmlParserInputBufferPtr)
+ d enc value like(xmlCharEncoding)
+ d sax value like(xmlSAXHandlerPtr)
+ d user_data * value void *
+
+ d xmlSchemaValidateFile...
+ d pr 10i 0 extproc('xmlSchemaValidateFile')
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d filename * value options(*string) const char *
+ d options 10i 0 value
+
+ d xmlSchemaValidCtxtGetParserCtxt...
+ d pr extproc(
+ d 'xmlSchemaValidCtxtGetParserCtxt')
+ d like(xmlParserCtxtPtr)
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+
+ * Interface to insert Schemas SAX validation in a SAX stream
+
+ d xmlSchemaSAXPlugPtr...
+ d s * based(######typedef######)
+
+ d xmlSchemaSAXPlug...
+ d pr extproc('xmlSchemaSAXPlug')
+ d like(xmlSchemaSAXPlugPtr)
+ d ctxt value like(xmlSchemaValidCtxtPtr)
+ d sax like(xmlSAXHandlerPtr)
+ d user_data * void *(*)
+
+ d xmlSchemaSAXUnplug...
+ d pr 10i 0 extproc('xmlSchemaSAXUnplug')
+ d plug value like(xmlSchemaSAXPlugPtr)
+
+ d xmlSchemaValidateSetLocator...
+ d pr extproc(
+ d 'xmlSchemaValidateSetLocator')
+ d vctxt value like(xmlSchemaValidCtxtPtr)
+ d f value
+ d like(xmlSchemaValidityLocatorFunc)
+ d ctxt * value void *
+
+ /endif LIBXML_SCHEMAS_ENBLD
+ /endif XML_SCHEMA_H__
diff --git a/os400/libxmlrpg/xmlschemastypes.rpgle b/os400/libxmlrpg/xmlschemastypes.rpgle
new file mode 100644
index 0000000..6433c32
--- /dev/null
+++ b/os400/libxmlrpg/xmlschemastypes.rpgle
@@ -0,0 +1,235 @@
+ * Summary: implementation of XML Schema Datatypes
+ * Description: module providing the XML Schema Datatypes implementation
+ * both definition and validity checking
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_SCHEMA_TYPES_H__)
+ /define XML_SCHEMA_TYPES_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_SCHEMAS_ENABLED)
+
+ /include "libxmlrpg/schemasInternals"
+ /include "libxmlrpg/xmlschemas"
+
+ d xmlSchemaWhitespaceValueType...
+ d s 10i 0 based(######typedef######) enum
+ d XML_SCHEMA_WHITESPACE_UNKNOWN...
+ d c 0
+ d XML_SCHEMA_WHITESPACE_PRESERVE...
+ d c 1
+ d XML_SCHEMA_WHITESPACE_REPLACE...
+ d c 2
+ d XML_SCHEMA_WHITESPACE_COLLAPSE...
+ d c 3
+
+ d xmlSchemaInitTypes...
+ d pr extproc('xmlSchemaInitTypes')
+
+ d xmlSchemaCleanupTypes...
+ d pr extproc('xmlSchemaCleanupTypes')
+
+ d xmlSchemaGetPredefinedType...
+ d pr extproc('xmlSchemaGetPredefinedType')
+ d like(xmlSchemaTypePtr)
+ d name * value options(*string) const xmlChar *
+ d ns * value options(*string) const xmlChar *
+
+ d xmlSchemaValidatePredefinedType...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValidatePredefinedType')
+ d type value like(xmlSchemaTypePtr)
+ d value * value options(*string) const xmlChar *
+ d val * value xmlSchemaValPtr *
+
+ d xmlSchemaValPredefTypeNode...
+ d pr 10i 0 extproc('xmlSchemaValPredefTypeNode')
+ d type value like(xmlSchemaTypePtr)
+ d value * value options(*string) const xmlChar *
+ d val * value xmlSchemaValPtr *
+ d node value like(xmlNodePtr)
+
+ d xmlSchemaValidateFacet...
+ d pr 10i 0 extproc('xmlSchemaValidateFacet')
+ d base value like(xmlSchemaTypePtr)
+ d facet value like(xmlSchemaFacetPtr)
+ d value * value options(*string) const xmlChar *
+ d val value like(xmlSchemaValPtr)
+
+ d xmlSchemaValidateFacetWhtsp...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValidateFacetWhtsp')
+ d facet value like(xmlSchemaFacetPtr)
+ d fws value
+ d like(xmlSchemaWhitespaceValueType)
+ d valType value like(xmlSchemaValType)
+ d value * value options(*string) const xmlChar *
+ d val value like(xmlSchemaValPtr)
+ d ws value
+ d like(xmlSchemaWhitespaceValueType)
+
+ d xmlSchemaFreeValue...
+ d pr extproc('xmlSchemaFreeValue')
+ d val value like(xmlSchemaValPtr)
+
+ d xmlSchemaNewFacet...
+ d pr extproc('xmlSchemaNewFacet')
+ d like(xmlSchemaFacetPtr)
+
+ d xmlSchemaCheckFacet...
+ d pr 10i 0 extproc('xmlSchemaCheckFacet')
+ d facet value like(xmlSchemaFacetPtr)
+ d typeDecl value like(xmlSchemaTypePtr)
+ d ctxt value like(xmlSchemaParserCtxtPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlSchemaFreeFacet...
+ d pr extproc('xmlSchemaFreeFacet')
+ d facet value like(xmlSchemaFacetPtr)
+
+ d xmlSchemaCompareValues...
+ d pr 10i 0 extproc('xmlSchemaCompareValues')
+ d x value like(xmlSchemaValPtr)
+ d y value like(xmlSchemaValPtr)
+
+ d xmlSchemaGetBuiltInListSimpleTypeItemType...
+ d pr extproc('xmlSchemaGetBuiltInListSimp-
+ d leTypeItemType')
+ d like(xmlSchemaTypePtr)
+ d type value like(xmlSchemaTypePtr)
+
+ d xmlSchemaValidateListSimpleTypeFacet...
+ d pr 10i 0 extproc('xmlSchemaValidateListSimple-
+ d TypeFacet')
+ d facet value like(xmlSchemaFacetPtr)
+ d value * value options(*string) const xmlChar *
+ d actualLen 20u 0 value
+ d expectedLen * value unsigned long *
+
+ d xmlSchemaGetBuiltInType...
+ d pr extproc('xmlSchemaGetBuiltInType')
+ d like(xmlSchemaTypePtr)
+ d type value like(xmlSchemaValType)
+
+ d xmlSchemaIsBuiltInTypeFacet...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaIsBuiltInTypeFacet')
+ d type value like(xmlSchemaTypePtr)
+ d facetType 10i 0 value
+
+ d xmlSchemaCollapseString...
+ d pr * extproc('xmlSchemaCollapseString') xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlSchemaWhiteSpaceReplace...
+ d pr * extproc('xmlSchemaWhiteSpaceReplace')xmlChar *
+ d value * value options(*string) const xmlChar *
+
+ d xmlSchemaGetFacetValueAsULong...
+ d pr 20u 0 extproc(
+ d 'xmlSchemaGetFacetValueAsULong')
+ d facet value like(xmlSchemaFacetPtr)
+
+ d xmlSchemaValidateLengthFacet...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValidateLengthFacet')
+ d type value like(xmlSchemaTypePtr)
+ d facet value like(xmlSchemaFacetPtr)
+ d value * value options(*string) const xmlChar *
+ d val value like(xmlSchemaValPtr)
+ d length 20u 0
+
+ d xmlSchemaValidateLengthFacetWhtsp...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValidateLengthFacetWhtsp')
+ d facet value like(xmlSchemaFacetPtr)
+ d valType value like(xmlSchemaValType)
+ d value * value options(*string) const xmlChar *
+ d val value like(xmlSchemaValPtr)
+ d length 20u 0
+ d ws value
+ d like(xmlSchemaWhitespaceValueType)
+
+ d xmlSchemaValPredefTypeNodeNoNorm...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaValPredefTypeNodeNoNorm')
+ d type value like(xmlSchemaTypePtr)
+ d value * value options(*string) const xmlChar *
+ d val like(xmlSchemaValPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlSchemaGetCanonValue...
+ d pr 10i 0 extproc('xmlSchemaGetCanonValue')
+ d val value like(xmlSchemaValPtr)
+ d retValue * value const xmlChar * *
+
+ d xmlSchemaGetCanonValueWhtsp...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaGetCanonValueWhtsp')
+ d val value like(xmlSchemaValPtr)
+ d retValue * value const xmlChar * *
+ d ws value
+ d like(xmlSchemaWhitespaceValueType)
+
+ d xmlSchemaValueAppend...
+ d pr 10i 0 extproc('xmlSchemaValueAppend')
+ d prev value like(xmlSchemaValPtr)
+ d cur value like(xmlSchemaValPtr)
+
+ d xmlSchemaValueGetNext...
+ d pr extproc('xmlSchemaValueGetNext')
+ d like(xmlSchemaValPtr)
+ d cur value like(xmlSchemaValPtr)
+
+ d xmlSchemaValueGetAsString...
+ d pr * extproc('xmlSchemaValueGetAsString') const xmlChar *
+ d val value like(xmlSchemaValPtr)
+
+ d xmlSchemaValueGetAsBoolean...
+ d pr 10i 0 extproc('xmlSchemaValueGetAsBoolean')
+ d val value like(xmlSchemaValPtr)
+
+ d xmlSchemaNewStringValue...
+ d pr extproc('xmlSchemaNewStringValue')
+ d like(xmlSchemaValPtr)
+ d type value like(xmlSchemaValType)
+ d value * value options(*string) const xmlChar *
+
+ d xmlSchemaNewNOTATIONValue...
+ d pr extproc('xmlSchemaNewNOTATIONValue')
+ d like(xmlSchemaValPtr)
+ d name * value options(*string) const xmlChar *
+ d ns * value options(*string) const xmlChar *
+
+ d xmlSchemaNewQNameValue...
+ d pr extproc('xmlSchemaNewQNameValue')
+ d like(xmlSchemaValPtr)
+ d namespaceName * value options(*string) const xmlChar *
+ d localName * value options(*string) const xmlChar *
+
+ d xmlSchemaCompareValuesWhtsp...
+ d pr 10i 0 extproc(
+ d 'xmlSchemaCompareValuesWhtsp')
+ d x value like(xmlSchemaValPtr)
+ d xws value
+ d like(xmlSchemaWhitespaceValueType)
+ d y value like(xmlSchemaValPtr)
+ d yws value
+ d like(xmlSchemaWhitespaceValueType)
+
+ d xmlSchemaCopyValue...
+ d pr extproc('xmlSchemaCopyValue')
+ d like(xmlSchemaValPtr)
+ d val value like(xmlSchemaValPtr)
+
+ d xmlSchemaGetValType...
+ d pr extproc('xmlSchemaGetValType')
+ d like(xmlSchemaValType)
+ d val value like(xmlSchemaValPtr)
+
+ /endif LIBXML_SCHEMAS_ENBLD
+ /endif XML_SCHEMA_TYPES_H__
diff --git a/os400/libxmlrpg/xmlstdarg.rpgle b/os400/libxmlrpg/xmlstdarg.rpgle
new file mode 100644
index 0000000..4e6f121
--- /dev/null
+++ b/os400/libxmlrpg/xmlstdarg.rpgle
@@ -0,0 +1,34 @@
+ * Summary: va_list support for ILE/RPG.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_STDARG_H__)
+ /define XML_STDARG_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ * The va_list object.
+
+ d xmlVaList ds based(######typedef######)
+ d align qualified
+ d current *
+ d next *
+
+ * Procedures.
+
+ d xmlVaStart pr extproc('__xmlVaStart')
+ d list like(xmlVaList)
+ d lastargaddr * value
+ d lastargsize 10u 0 value
+
+ d xmlVaArg pr * extproc('__xmlVaArg')
+ d list like(xmlVaList)
+ d dest * value
+ d argsize 10i 0 value
+
+ d xmlVaEnd pr extproc('__xmlVaEnd')
+ d list like(xmlVaList)
+
+ /endif XML_STDARG_H__
diff --git a/os400/libxmlrpg/xmlstring.rpgle b/os400/libxmlrpg/xmlstring.rpgle
new file mode 100644
index 0000000..41e9eb5
--- /dev/null
+++ b/os400/libxmlrpg/xmlstring.rpgle
@@ -0,0 +1,162 @@
+ * Summary: set of routines to process strings
+ * Description: type and interfaces needed for the internal string
+ * handling of the library, especially UTF8 processing.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_STRING_H__)
+ /define XML_STRING_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/xmlstdarg"
+
+ * xmlChar:
+ *
+ * This is a basic byte in an UTF-8 encoded string.
+ * It's unsigned allowing to pinpoint case where char * are assigned
+ * to xmlChar * (possibly making serialization back impossible).
+
+ d xmlChar s 3u 0 based(######typedef######)
+
+ * xmlChar handling
+
+ d xmlStrdup pr * extproc('xmlStrdup') xmlChar *
+ d cur * value options(*string) const xmlChar *
+
+ d xmlStrndup pr * extproc('xmlStrndup') xmlChar *
+ d cur * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlCharStrndup pr * extproc('xmlCharStrndup') xmlChar *
+ d cur * value options(*string) const char *
+ d len 10i 0 value
+
+ d xmlCharStrdup pr * extproc('xmlCharStrdup') xmlChar *
+ d cur * value options(*string) const char *
+
+ d xmlStrsub pr * extproc('xmlStrsub') const xmlChar *
+ d str * value options(*string) const xmlChar *
+ d start 10i 0 value
+ d len 10i 0 value
+
+ d xmlStrchr pr * extproc('xmlStrchr') const xmlChar *
+ d str * value options(*string) const xmlChar *
+ d val value like(xmlChar)
+
+ d xmlStrstr pr * extproc('xmlStrstr') const xmlChar *
+ d str * value options(*string) const xmlChar *
+ d val * value options(*string) const xmlChar *
+
+ d xmlStrcasestr pr * extproc('xmlStrcasestr') const xmlChar *
+ d str * value options(*string) const xmlChar *
+ d val * value options(*string) const xmlChar *
+
+ d xmlStrcmp pr 10i 0 extproc('xmlStrcmp')
+ d str1 * value options(*string) const xmlChar *
+ d str2 * value options(*string) const xmlChar *
+
+ d xmlStrncmp pr 10i 0 extproc('xmlStrncmp')
+ d str1 * value options(*string) const xmlChar *
+ d str2 * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlStrcasecmp pr 10i 0 extproc('xmlStrcasecmp')
+ d str1 * value options(*string) const xmlChar *
+ d str2 * value options(*string) const xmlChar *
+
+ d xmlStrncasecmp pr 10i 0 extproc('xmlStrncasecmp')
+ d str1 * value options(*string) const xmlChar *
+ d str2 * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlStrEqual pr 10i 0 extproc('xmlStrEqual')
+ d str1 * value options(*string) const xmlChar *
+ d str2 * value options(*string) const xmlChar *
+
+ d xmlStrQEqual pr 10i 0 extproc('xmlStrQEqual')
+ d pref * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d stre * value options(*string) const xmlChar *
+
+ d xmlStrlen pr 10i 0 extproc('xmlStrlen')
+ d str * value options(*string) const xmlChar *
+
+ d xmlStrcat pr * extproc('xmlStrcat') xmlChar *
+ d cur * value options(*string) xmlChar *
+ d add * value options(*string) const xmlChar *
+
+ d xmlStrncat pr * extproc('xmlStrncat') xmlChar *
+ d cur * value options(*string) xmlChar *
+ d add * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlStrncatNew pr * extproc('xmlStrncatNew') xmlChar *
+ d str1 * value options(*string) const xmlChar *
+ d str2 * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ * xmlStrPrintf() is a vararg function.
+ * The following prototype supports up to 8 pointer arguments.
+ * Other argument signature can be achieved by defining alternate
+ * prototypes redirected to the same function.
+
+ d xmlStrPrintf pr 10i 0 extproc('xmlStrPrintf')
+ d buf * value options(*string) xmlChar *
+ d len 10i 0 value
+ d msg * value options(*string) const xmlChar *
+ d arg1 * value options(*string: *nopass)
+ d arg2 * value options(*string: *nopass)
+ d arg3 * value options(*string: *nopass)
+ d arg4 * value options(*string: *nopass)
+ d arg5 * value options(*string: *nopass)
+ d arg6 * value options(*string: *nopass)
+ d arg7 * value options(*string: *nopass)
+ d arg8 * value options(*string: *nopass)
+
+ d xmlStrVPrintf pr 10i 0 extproc('xmlStrVPrintf')
+ d buf * value options(*string) xmlChar *
+ d len 10i 0 value
+ d msg * value options(*string) const xmlChar *
+ d ap likeds(xmlVaList)
+
+ d xmlGetUTF8Char pr 10i 0 extproc('xmlGetUTF8Char')
+ d utf * value options(*string) const uns. char *
+ d len 10i 0
+
+ d xmlCheckUTF8 pr 10i 0 extproc('xmlCheckUTF8')
+ d utf * value options(*string) const uns. char *
+
+ d xmlUTF8Strsize pr 10i 0 extproc('xmlUTF8Strsize')
+ d utf * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlUTF8Strndup pr * extproc('xmlUTF8Strndup') xmlChar *
+ d utf * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlUTF8Strpos pr * extproc('xmlUTF8Strpos') const xmlChar *
+ d utf * value options(*string) const xmlChar *
+ d pos 10i 0 value
+
+ d xmlUTF8Strloc pr 10i 0 extproc('xmlUTF8Strloc')
+ d utf * value options(*string) const xmlChar *
+ d utfchar * value options(*string) const xmlChar *
+
+ d xmlUTF8Strsub pr * extproc('xmlUTF8Strsub') xmlChar *
+ d utf * value options(*string) const xmlChar *
+ d start 10i 0 value
+ d len 10i 0 value
+
+ d xmlUTF8Strlen pr 10i 0 extproc('xmlUTF8Strlen')
+ d utf * value options(*string) const xmlChar *
+
+ d xmlUTF8Size pr 10i 0 extproc('xmlUTF8Size')
+ d utf * value options(*string) const xmlChar *
+
+ d xmlUTF8Charcmp pr 10i 0 extproc('xmlUTF8Charcmp')
+ d utf1 * value options(*string) const xmlChar *
+ d utf2 * value options(*string) const xmlChar *
+
+ /endif XML_STRING_H__
diff --git a/os400/libxmlrpg/xmlunicode.rpgle b/os400/libxmlrpg/xmlunicode.rpgle
new file mode 100644
index 0000000..64f7abf
--- /dev/null
+++ b/os400/libxmlrpg/xmlunicode.rpgle
@@ -0,0 +1,668 @@
+ * Summary: Unicode character APIs
+ * Description: API for the Unicode character APIs
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_UNICODE_H__)
+ /define XML_UNICODE_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_UNICODE_ENABLED)
+
+ d xmlUCSIsAegeanNumbers...
+ d pr 10i 0 extproc('xmlUCSIsAegeanNumbers')
+ d code 10i 0 value
+
+ d xmlUCSIsAlphabeticPresentationForms...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsAlphabeticPresentationForms'
+ d )
+ d code 10i 0 value
+
+ d xmlUCSIsArabic pr 10i 0 extproc('xmlUCSIsArabic')
+ d code 10i 0 value
+
+ d xmlUCSIsArabicPresentationFormsA...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsArabicPresentationFormsA')
+ d code 10i 0 value
+
+ d xmlUCSIsArabicPresentationFormsB...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsArabicPresentationFormsB')
+ d code 10i 0 value
+
+ d xmlUCSIsArmenian...
+ d pr 10i 0 extproc('xmlUCSIsArmenian')
+ d code 10i 0 value
+
+ d xmlUCSIsArrows pr 10i 0 extproc('xmlUCSIsArrows')
+ d code 10i 0 value
+
+ d xmlUCSIsBasicLatin...
+ d pr 10i 0 extproc('xmlUCSIsBasicLatin')
+ d code 10i 0 value
+
+ d xmlUCSIsBengali...
+ d pr 10i 0 extproc('xmlUCSIsBengali')
+ d code 10i 0 value
+
+ d xmlUCSIsBlockElements...
+ d pr 10i 0 extproc('xmlUCSIsBlockElements')
+ d code 10i 0 value
+
+ d xmlUCSIsBopomofo...
+ d pr 10i 0 extproc('xmlUCSIsBopomofo')
+ d code 10i 0 value
+
+ d xmlUCSIsBopomofoExtended...
+ d pr 10i 0 extproc('xmlUCSIsBopomofoExtended')
+ d code 10i 0 value
+
+ d xmlUCSIsBoxDrawing...
+ d pr 10i 0 extproc('xmlUCSIsBoxDrawing')
+ d code 10i 0 value
+
+ d xmlUCSIsBraillePatterns...
+ d pr 10i 0 extproc('xmlUCSIsBraillePatterns')
+ d code 10i 0 value
+
+ d xmlUCSIsBuhid pr 10i 0 extproc('xmlUCSIsBuhid')
+ d code 10i 0 value
+
+ d xmlUCSIsByzantineMusicalSymbols...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsByzantineMusicalSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKCompatibility...
+ d pr 10i 0 extproc('xmlUCSIsCJKCompatibility')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKCompatibilityForms...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCJKCompatibilityForms')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKCompatibilityIdeographs...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCJKCompatibilityIdeographs')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKCompatibilityIdeographsSupplement...
+ d pr 10i 0 extproc('xmlUCSIsCJKCompatibilityIde-
+ d ographsSupplement')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKRadicalsSupplement...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCJKRadicalsSupplement')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKSymbolsandPunctuation...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCJKSymbolsandPunctuation')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKUnifiedIdeographs...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCJKUnifiedIdeographs')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKUnifiedIdeographsExtensionA...
+ d pr 10i 0 extproc('xmlUCSIsCJKUnifiedIdeograph-
+ d sExtensionA')
+ d code 10i 0 value
+
+ d xmlUCSIsCJKUnifiedIdeographsExtensionB...
+ d pr 10i 0 extproc('xmlUCSIsCJKUnifiedIdeograph-
+ d sExtensionB')
+ d code 10i 0 value
+
+ d xmlUCSIsCherokee...
+ d pr 10i 0 extproc('xmlUCSIsCherokee')
+ d code 10i 0 value
+
+ d xmlUCSIsCombiningDiacriticalMarks...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCombiningDiacriticalMarks')
+ d code 10i 0 value
+
+ d xmlUCSIsCombiningDiacriticalMarksforSymbols...
+ d pr 10i 0 extproc('xmlUCSIsCombiningDiacritica-
+ d lMarksforSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsCombiningHalfMarks...
+ d pr 10i 0 extproc('xmlUCSIsCombiningHalfMarks')
+ d code 10i 0 value
+
+ d xmlUCSIsCombiningMarksforSymbols...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsCombiningMarksforSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsControlPictures...
+ d pr 10i 0 extproc('xmlUCSIsControlPictures')
+ d code 10i 0 value
+
+ d xmlUCSIsCurrencySymbols...
+ d pr 10i 0 extproc('xmlUCSIsCurrencySymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsCypriotSyllabary...
+ d pr 10i 0 extproc('xmlUCSIsCypriotSyllabary')
+ d code 10i 0 value
+
+ d xmlUCSIsCyrillic...
+ d pr 10i 0 extproc('xmlUCSIsCyrillic')
+ d code 10i 0 value
+
+ d xmlUCSIsCyrillicSupplement...
+ d pr 10i 0 extproc('xmlUCSIsCyrillicSupplement')
+ d code 10i 0 value
+
+ d xmlUCSIsDeseret...
+ d pr 10i 0 extproc('xmlUCSIsDeseret')
+ d code 10i 0 value
+
+ d xmlUCSIsDevanagari...
+ d pr 10i 0 extproc('xmlUCSIsDevanagari')
+ d code 10i 0 value
+
+ d xmlUCSIsDingbats...
+ d pr 10i 0 extproc('xmlUCSIsDingbats')
+ d code 10i 0 value
+
+ d xmlUCSIsEnclosedAlphanumerics...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsEnclosedAlphanumerics')
+ d code 10i 0 value
+
+ d xmlUCSIsEnclosedCJKLettersandMonths...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsEnclosedCJKLettersandMonths'
+ d )
+ d code 10i 0 value
+
+ d xmlUCSIsEthiopic...
+ d pr 10i 0 extproc('xmlUCSIsEthiopic')
+ d code 10i 0 value
+
+ d xmlUCSIsGeneralPunctuation...
+ d pr 10i 0 extproc('xmlUCSIsGeneralPunctuation')
+ d code 10i 0 value
+
+ d xmlUCSIsGeometricShapes...
+ d pr 10i 0 extproc('xmlUCSIsGeometricShapes')
+ d code 10i 0 value
+
+ d xmlUCSIsGeorgian...
+ d pr 10i 0 extproc('xmlUCSIsGeorgian')
+ d code 10i 0 value
+
+ d xmlUCSIsGothic pr 10i 0 extproc('xmlUCSIsGothic')
+ d code 10i 0 value
+
+ d xmlUCSIsGreek pr 10i 0 extproc('xmlUCSIsGreek')
+ d code 10i 0 value
+
+ d xmlUCSIsGreekExtended...
+ d pr 10i 0 extproc('xmlUCSIsGreekExtended')
+ d code 10i 0 value
+
+ d xmlUCSIsGreekandCoptic...
+ d pr 10i 0 extproc('xmlUCSIsGreekandCoptic')
+ d code 10i 0 value
+
+ d xmlUCSIsGujarati...
+ d pr 10i 0 extproc('xmlUCSIsGujarati')
+ d code 10i 0 value
+
+ d xmlUCSIsGurmukhi...
+ d pr 10i 0 extproc('xmlUCSIsGurmukhi')
+ d code 10i 0 value
+
+ d xmlUCSIsHalfwidthandFullwidthForms...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsHalfwidthandFullwidthForms')
+ d code 10i 0 value
+
+ d xmlUCSIsHangulCompatibilityJamo...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsHangulCompatibilityJamo')
+ d code 10i 0 value
+
+ d xmlUCSIsHangulJamo...
+ d pr 10i 0 extproc('xmlUCSIsHangulJamo')
+ d code 10i 0 value
+
+ d xmlUCSIsHangulSyllables...
+ d pr 10i 0 extproc('xmlUCSIsHangulSyllables')
+ d code 10i 0 value
+
+ d xmlUCSIsHanunoo...
+ d pr 10i 0 extproc('xmlUCSIsHanunoo')
+ d code 10i 0 value
+
+ d xmlUCSIsHebrew pr 10i 0 extproc('xmlUCSIsHebrew')
+ d code 10i 0 value
+
+ d xmlUCSIsHighPrivateUseSurrogates...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsHighPrivateUseSurrogates')
+ d code 10i 0 value
+
+ d xmlUCSIsHighSurrogates...
+ d pr 10i 0 extproc('xmlUCSIsHighSurrogates')
+ d code 10i 0 value
+
+ d xmlUCSIsHiragana...
+ d pr 10i 0 extproc('xmlUCSIsHiragana')
+ d code 10i 0 value
+
+ d xmlUCSIsIPAExtensions...
+ d pr 10i 0 extproc('xmlUCSIsIPAExtensions')
+ d code 10i 0 value
+
+ d xmlUCSIsIdeographicDescriptionCharacters...
+ d pr 10i 0 extproc('xmlUCSIsIdeographicDescript-
+ d ionCharacters')
+ d code 10i 0 value
+
+ d xmlUCSIsKanbun pr 10i 0 extproc('xmlUCSIsKanbun')
+ d code 10i 0 value
+
+ d xmlUCSIsKangxiRadicals...
+ d pr 10i 0 extproc('xmlUCSIsKangxiRadicals')
+ d code 10i 0 value
+
+ d xmlUCSIsKannada...
+ d pr 10i 0 extproc('xmlUCSIsKannada')
+ d code 10i 0 value
+
+ d xmlUCSIsKatakana...
+ d pr 10i 0 extproc('xmlUCSIsKatakana')
+ d code 10i 0 value
+
+ d xmlUCSIsKatakanaPhoneticExtensions...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsKatakanaPhoneticExtensions')
+ d code 10i 0 value
+
+ d xmlUCSIsKhmer pr 10i 0 extproc('xmlUCSIsKhmer')
+ d code 10i 0 value
+
+ d xmlUCSIsKhmerSymbols...
+ d pr 10i 0 extproc('xmlUCSIsKhmerSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsLao pr 10i 0 extproc('xmlUCSIsLao')
+ d code 10i 0 value
+
+ d xmlUCSIsLatin1Supplement...
+ d pr 10i 0 extproc('xmlUCSIsLatin1Supplement')
+ d code 10i 0 value
+
+ d xmlUCSIsLatinExtendedA...
+ d pr 10i 0 extproc('xmlUCSIsLatinExtendedA')
+ d code 10i 0 value
+
+ d xmlUCSIsLatinExtendedB...
+ d pr 10i 0 extproc('xmlUCSIsLatinExtendedB')
+ d code 10i 0 value
+
+ d xmlUCSIsLatinExtendedAdditional...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsLatinExtendedAdditional')
+ d code 10i 0 value
+
+ d xmlUCSIsLetterlikeSymbols...
+ d pr 10i 0 extproc('xmlUCSIsLetterlikeSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsLimbu pr 10i 0 extproc('xmlUCSIsLimbu')
+ d code 10i 0 value
+
+ d xmlUCSIsLinearBIdeograms...
+ d pr 10i 0 extproc('xmlUCSIsLinearBIdeograms')
+ d code 10i 0 value
+
+ d xmlUCSIsLinearBSyllabary...
+ d pr 10i 0 extproc('xmlUCSIsLinearBSyllabary')
+ d code 10i 0 value
+
+ d xmlUCSIsLowSurrogates...
+ d pr 10i 0 extproc('xmlUCSIsLowSurrogates')
+ d code 10i 0 value
+
+ d xmlUCSIsMalayalam...
+ d pr 10i 0 extproc('xmlUCSIsMalayalam')
+ d code 10i 0 value
+
+ d xmlUCSIsMathematicalAlphanumericSymbols...
+ d pr 10i 0 extproc('xmlUCSIsMathematicalAlphanu-
+ d mericSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsMathematicalOperators...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsMathematicalOperators')
+ d code 10i 0 value
+
+ d xmlUCSIsMiscellaneousMathematicalSymbolsA...
+ d pr 10i 0 extproc('xmlUCSIsMiscellaneousMathem-
+ d aticalSymbolsA')
+ d code 10i 0 value
+
+ d xmlUCSIsMiscellaneousMathematicalSymbolsB...
+ d pr 10i 0 extproc('xmlUCSIsMiscellaneousMathem-
+ d aticalSymbolsB')
+ d code 10i 0 value
+
+ d xmlUCSIsMiscellaneousSymbols...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsMiscellaneousSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsMiscellaneousSymbolsandArrows...
+ d pr 10i 0 extproc('xmlUCSIsMiscellaneousSymbol-
+ d sandArrows')
+ d code 10i 0 value
+
+ d xmlUCSIsMiscellaneousTechnical...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsMiscellaneousTechnical')
+ d code 10i 0 value
+
+ d xmlUCSIsMongolian...
+ d pr 10i 0 extproc('xmlUCSIsMongolian')
+ d code 10i 0 value
+
+ d xmlUCSIsMusicalSymbols...
+ d pr 10i 0 extproc('xmlUCSIsMusicalSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsMyanmar...
+ d pr 10i 0 extproc('xmlUCSIsMyanmar')
+ d code 10i 0 value
+
+ d xmlUCSIsNumberForms...
+ d pr 10i 0 extproc('xmlUCSIsNumberForms')
+ d code 10i 0 value
+
+ d xmlUCSIsOgham pr 10i 0 extproc('xmlUCSIsOgham')
+ d code 10i 0 value
+
+ d xmlUCSIsOldItalic...
+ d pr 10i 0 extproc('xmlUCSIsOldItalic')
+ d code 10i 0 value
+
+ d xmlUCSIsOpticalCharacterRecognition...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsOpticalCharacterRecognition'
+ d )
+ d code 10i 0 value
+
+ d xmlUCSIsOriya pr 10i 0 extproc('xmlUCSIsOriya')
+ d code 10i 0 value
+
+ d xmlUCSIsOsmanya...
+ d pr 10i 0 extproc('xmlUCSIsOsmanya')
+ d code 10i 0 value
+
+ d xmlUCSIsPhoneticExtensions...
+ d pr 10i 0 extproc('xmlUCSIsPhoneticExtensions')
+ d code 10i 0 value
+
+ d xmlUCSIsPrivateUse...
+ d pr 10i 0 extproc('xmlUCSIsPrivateUse')
+ d code 10i 0 value
+
+ d xmlUCSIsPrivateUseArea...
+ d pr 10i 0 extproc('xmlUCSIsPrivateUseArea')
+ d code 10i 0 value
+
+ d xmlUCSIsRunic pr 10i 0 extproc('xmlUCSIsRunic')
+ d code 10i 0 value
+
+ d xmlUCSIsShavian...
+ d pr 10i 0 extproc('xmlUCSIsShavian')
+ d code 10i 0 value
+
+ d xmlUCSIsSinhala...
+ d pr 10i 0 extproc('xmlUCSIsSinhala')
+ d code 10i 0 value
+
+ d xmlUCSIsSmallFormVariants...
+ d pr 10i 0 extproc('xmlUCSIsSmallFormVariants')
+ d code 10i 0 value
+
+ d xmlUCSIsSpacingModifierLetters...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsSpacingModifierLetters')
+ d code 10i 0 value
+
+ d xmlUCSIsSpecials...
+ d pr 10i 0 extproc('xmlUCSIsSpecials')
+ d code 10i 0 value
+
+ d xmlUCSIsSuperscriptsandSubscripts...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsSuperscriptsandSubscripts')
+ d code 10i 0 value
+
+ d xmlUCSIsSupplementalArrowsA...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsSupplementalArrowsA')
+ d code 10i 0 value
+
+ d xmlUCSIsSupplementalArrowsB...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsSupplementalArrowsB')
+ d code 10i 0 value
+
+ d xmlUCSIsSupplementalMathematicalOperators...
+ d pr 10i 0 extproc('xmlUCSIsSupplementalMathema-
+ d ticalOperators')
+ d code 10i 0 value
+
+ d xmlUCSIsSupplementaryPrivateUseAreaA...
+ d pr 10i 0 extproc('xmlUCSIsSupplementaryPrivat-
+ d eUseAreaA')
+ d code 10i 0 value
+
+ d xmlUCSIsSupplementaryPrivateUseAreaB...
+ d pr 10i 0 extproc('xmlUCSIsSupplementaryPrivat-
+ d eUseAreaB')
+ d code 10i 0 value
+
+ d xmlUCSIsSyriac pr 10i 0 extproc('xmlUCSIsSyriac')
+ d code 10i 0 value
+
+ d xmlUCSIsTagalog...
+ d pr 10i 0 extproc('xmlUCSIsTagalog')
+ d code 10i 0 value
+
+ d xmlUCSIsTagbanwa...
+ d pr 10i 0 extproc('xmlUCSIsTagbanwa')
+ d code 10i 0 value
+
+ d xmlUCSIsTags pr 10i 0 extproc('xmlUCSIsTags')
+ d code 10i 0 value
+
+ d xmlUCSIsTaiLe pr 10i 0 extproc('xmlUCSIsTaiLe')
+ d code 10i 0 value
+
+ d xmlUCSIsTaiXuanJingSymbols...
+ d pr 10i 0 extproc('xmlUCSIsTaiXuanJingSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsTamil pr 10i 0 extproc('xmlUCSIsTamil')
+ d code 10i 0 value
+
+ d xmlUCSIsTelugu pr 10i 0 extproc('xmlUCSIsTelugu')
+ d code 10i 0 value
+
+ d xmlUCSIsThaana pr 10i 0 extproc('xmlUCSIsThaana')
+ d code 10i 0 value
+
+ d xmlUCSIsThai pr 10i 0 extproc('xmlUCSIsThai')
+ d code 10i 0 value
+
+ d xmlUCSIsTibetan...
+ d pr 10i 0 extproc('xmlUCSIsTibetan')
+ d code 10i 0 value
+
+ d xmlUCSIsUgaritic...
+ d pr 10i 0 extproc('xmlUCSIsUgaritic')
+ d code 10i 0 value
+
+ d xmlUCSIsUnifiedCanadianAboriginalSyllabics...
+ d pr 10i 0 extproc('xmlUCSIsUnifiedCanadianAbor-
+ d iginalSyllabics')
+ d code 10i 0 value
+
+ d xmlUCSIsVariationSelectors...
+ d pr 10i 0 extproc('xmlUCSIsVariationSelectors')
+ d code 10i 0 value
+
+ d xmlUCSIsVariationSelectorsSupplement...
+ d pr 10i 0 extproc('xmlUCSIsVariationSelectorsS-
+ d upplement')
+ d code 10i 0 value
+
+ d xmlUCSIsYiRadicals...
+ d pr 10i 0 extproc('xmlUCSIsYiRadicals')
+ d code 10i 0 value
+
+ d xmlUCSIsYiSyllables...
+ d pr 10i 0 extproc('xmlUCSIsYiSyllables')
+ d code 10i 0 value
+
+ d xmlUCSIsYijingHexagramSymbols...
+ d pr 10i 0 extproc(
+ d 'xmlUCSIsYijingHexagramSymbols')
+ d code 10i 0 value
+
+ d xmlUCSIsBlock pr 10i 0 extproc('xmlUCSIsBlock')
+ d code 10i 0 value
+ d block * value options(*string) const char *
+
+ d xmlUCSIsCatC pr 10i 0 extproc('xmlUCSIsCatC')
+ d code 10i 0 value
+
+ d xmlUCSIsCatCc pr 10i 0 extproc('xmlUCSIsCatCc')
+ d code 10i 0 value
+
+ d xmlUCSIsCatCf pr 10i 0 extproc('xmlUCSIsCatCf')
+ d code 10i 0 value
+
+ d xmlUCSIsCatCo pr 10i 0 extproc('xmlUCSIsCatCo')
+ d code 10i 0 value
+
+ d xmlUCSIsCatCs pr 10i 0 extproc('xmlUCSIsCatCs')
+ d code 10i 0 value
+
+ d xmlUCSIsCatL pr 10i 0 extproc('xmlUCSIsCatL')
+ d code 10i 0 value
+
+ d xmlUCSIsCatLl pr 10i 0 extproc('xmlUCSIsCatLl')
+ d code 10i 0 value
+
+ d xmlUCSIsCatLm pr 10i 0 extproc('xmlUCSIsCatLm')
+ d code 10i 0 value
+
+ d xmlUCSIsCatLo pr 10i 0 extproc('xmlUCSIsCatLo')
+ d code 10i 0 value
+
+ d xmlUCSIsCatLt pr 10i 0 extproc('xmlUCSIsCatLt')
+ d code 10i 0 value
+
+ d xmlUCSIsCatLu pr 10i 0 extproc('xmlUCSIsCatLu')
+ d code 10i 0 value
+
+ d xmlUCSIsCatM pr 10i 0 extproc('xmlUCSIsCatM')
+ d code 10i 0 value
+
+ d xmlUCSIsCatMc pr 10i 0 extproc('xmlUCSIsCatMc')
+ d code 10i 0 value
+
+ d xmlUCSIsCatMe pr 10i 0 extproc('xmlUCSIsCatMe')
+ d code 10i 0 value
+
+ d xmlUCSIsCatMn pr 10i 0 extproc('xmlUCSIsCatMn')
+ d code 10i 0 value
+
+ d xmlUCSIsCatN pr 10i 0 extproc('xmlUCSIsCatN')
+ d code 10i 0 value
+
+ d xmlUCSIsCatNd pr 10i 0 extproc('xmlUCSIsCatNd')
+ d code 10i 0 value
+
+ d xmlUCSIsCatNl pr 10i 0 extproc('xmlUCSIsCatNl')
+ d code 10i 0 value
+
+ d xmlUCSIsCatNo pr 10i 0 extproc('xmlUCSIsCatNo')
+ d code 10i 0 value
+
+ d xmlUCSIsCatP pr 10i 0 extproc('xmlUCSIsCatP')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPc pr 10i 0 extproc('xmlUCSIsCatPc')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPd pr 10i 0 extproc('xmlUCSIsCatPd')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPe pr 10i 0 extproc('xmlUCSIsCatPe')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPf pr 10i 0 extproc('xmlUCSIsCatPf')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPi pr 10i 0 extproc('xmlUCSIsCatPi')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPo pr 10i 0 extproc('xmlUCSIsCatPo')
+ d code 10i 0 value
+
+ d xmlUCSIsCatPs pr 10i 0 extproc('xmlUCSIsCatPs')
+ d code 10i 0 value
+
+ d xmlUCSIsCatS pr 10i 0 extproc('xmlUCSIsCatS')
+ d code 10i 0 value
+
+ d xmlUCSIsCatSc pr 10i 0 extproc('xmlUCSIsCatSc')
+ d code 10i 0 value
+
+ d xmlUCSIsCatSk pr 10i 0 extproc('xmlUCSIsCatSk')
+ d code 10i 0 value
+
+ d xmlUCSIsCatSm pr 10i 0 extproc('xmlUCSIsCatSm')
+ d code 10i 0 value
+
+ d xmlUCSIsCatSo pr 10i 0 extproc('xmlUCSIsCatSo')
+ d code 10i 0 value
+
+ d xmlUCSIsCatZ pr 10i 0 extproc('xmlUCSIsCatZ')
+ d code 10i 0 value
+
+ d xmlUCSIsCatZl pr 10i 0 extproc('xmlUCSIsCatZl')
+ d code 10i 0 value
+
+ d xmlUCSIsCatZp pr 10i 0 extproc('xmlUCSIsCatZp')
+ d code 10i 0 value
+
+ d xmlUCSIsCatZs pr 10i 0 extproc('xmlUCSIsCatZs')
+ d code 10i 0 value
+
+ d xmlUCSIsCat pr 10i 0 extproc('xmlUCSIsCat')
+ d code 10i 0 value
+ d cat * value options(*string) const char *
+
+ /endif LIBXML_UNICODE_ENBLD
+ /endif XML_UNICODE_H__
diff --git a/os400/libxmlrpg/xmlversion.rpgle.in b/os400/libxmlrpg/xmlversion.rpgle.in
new file mode 100644
index 0000000..81676be
--- /dev/null
+++ b/os400/libxmlrpg/xmlversion.rpgle.in
@@ -0,0 +1,352 @@
+ * Summary: compile-time version informations
+ * Description: compile-time version informations for the XML library
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_VERSION_H__)
+ /define XML_VERSION_H__
+
+ /include "libxmlrpg/xmlexports"
+
+ * use those to be sure nothing nasty will happen if
+ * your library and includes mismatch
+
+
+ d xmlCheckVersion...
+ d pr extproc('xmlCheckVersion')
+ d version 10i 0 value
+
+ * LIBXML_DOTTED_VERSION:
+ *
+ * the version string like "1.2.3"
+
+ d LIBXML_DOTTED_VERSION...
+ d c '@VERSION@'
+
+ * LIBXML_VERSION:
+ *
+ * the version number: 1.2.3 value is 10203
+
+ d LIBXML_VERSION c @LIBXML_VERSION_NUMBER@
+
+ * LIBXML_VERSION_STRING:
+ *
+ * the version number string, 1.2.3 value is "10203"
+
+ d LIBXML_VERSION_STRING...
+ d c '@LIBXML_VERSION_NUMBER@'
+
+ * LIBXML_VERSION_EXTRA:
+ *
+ * extra version information, used to show a CVS compilation
+
+ d LIBXML_VERSION_EXTRA...
+ d c '@LIBXML_VERSION_EXTRA@'
+
+ * For conditional compilation
+ /define DEFINED_1
+ /undefine DEFINED_0
+
+ /if defined(DEFINED_@WITH_TRIO@)
+ * WITH_TRIO:
+ *
+ * defined if the trio support need to be configured in
+
+ /define WITH_TRIO
+ /else
+ * WITHOUT_TRIO:
+ *
+ * defined if the trio support should not be configured in
+
+ /define WITHOUT_TRIO
+ /endif
+
+ * LIBXML_THREAD_ENABLED:
+ *
+ * Whether the thread support is configured in
+
+ /if defined(DEFINED_@WITH_THREADS@)
+ /define LIBXML_THREAD_ENABLED
+ /endif
+
+ * LIBXML_THREAD_ALLOC_ENABLED:
+ *
+ * Whether the allocation hooks are per-thread
+
+ /if defined(DEFINED_@WITH_THREAD_ALLOC@)
+ /define LIBXML_THREAD_ALLOC_ENABLED
+ /endif
+
+ * LIBXML_TREE_ENABLED:
+ *
+ * Whether the DOM like tree manipulation API support is configured in
+
+ /if defined(DEFINED_@WITH_TREE@)
+ /define LIBXML_TREE_ENABLED
+ /endif
+
+ * LIBXML_OUTPUT_ENABLED:
+ *
+ * Whether the serialization/saving support is configured in
+
+ /if defined(DEFINED_@WITH_OUTPUT@)
+ /define LIBXML_OUTPUT_ENABLED
+ /endif
+
+ * LIBXML_PUSH_ENABLED:
+ *
+ * Whether the push parsing interfaces are configured in
+
+ /if defined(DEFINED_@WITH_PUSH@)
+ /define LIBXML_PUSH_ENABLED
+ /endif
+
+ * LIBXML_READER_ENABLED:
+ *
+ * Whether the xmlReader parsing interface is configured in
+
+ /if defined(DEFINED_@WITH_READER@)
+ /define LIBXML_READER_ENABLED
+ /endif
+
+ * LIBXML_PATTERN_ENABLED:
+ *
+ * Whether the xmlPattern node selection interface is configured in
+
+ /if defined(DEFINED_@WITH_PATTERN@)
+ /define LIBXML_PATTERN_ENABLED
+ /endif
+
+ * LIBXML_WRITER_ENABLED:
+ *
+ * Whether the xmlWriter saving interface is configured in
+
+ /if defined(DEFINED_@WITH_WRITER@)
+ /define LIBXML_WRITER_ENABLED
+ /endif
+
+ * LIBXML_SAX1_ENABLED:
+ *
+ * Whether the older SAX1 interface is configured in
+
+ /if defined(DEFINED_@WITH_SAX1@)
+ /define LIBXML_SAX1_ENABLED
+ /endif
+
+ * LIBXML_FTP_ENABLED:
+ *
+ * Whether the FTP support is configured in
+
+ /if defined(DEFINED_@WITH_FTP@)
+ /define LIBXML_FTP_ENABLED
+ /endif
+
+ * LIBXML_HTTP_ENABLED:
+ *
+ * Whether the HTTP support is configured in
+
+ /if defined(DEFINED_@WITH_HTTP@)
+ /define LIBXML_HTTP_ENABLED
+ /endif
+
+ * LIBXML_VALID_ENABLED:
+ *
+ * Whether the DTD validation support is configured in
+
+ /if defined(DEFINED_@WITH_VALID@)
+ /define LIBXML_VALID_ENABLED
+ /endif
+
+ * LIBXML_HTML_ENABLED:
+ *
+ * Whether the HTML support is configured in
+
+ /if defined(DEFINED_@WITH_HTML@)
+ /define LIBXML_HTML_ENABLED
+ /endif
+
+ * LIBXML_LEGACY_ENABLED:
+ *
+ * Whether the deprecated APIs are compiled in for compatibility
+
+ /if defined(DEFINED_@WITH_LEGACY@)
+ /define LIBXML_LEGACY_ENABLED
+ /endif
+
+ * LIBXML_C14N_ENABLED:
+ *
+ * Whether the Canonicalization support is configured in
+
+ /if defined(DEFINED_@WITH_C14N@)
+ /define LIBXML_C14N_ENABLED
+ /endif
+
+ * LIBXML_CATALOG_ENABLED:
+ *
+ * Whether the Catalog support is configured in
+
+ /if defined(DEFINED_@WITH_CATALOG@)
+ /define LIBXML_CATALOG_ENABLED
+ /endif
+
+ * LIBXML_DOCB_ENABLED:
+ *
+ * Whether the SGML Docbook support is configured in
+
+ /if defined(DEFINED_@WITH_DOCB@)
+ /define LIBXML_DOCB_ENABLED
+ /endif
+
+ * LIBXML_XPATH_ENABLED:
+ *
+ * Whether XPath is configured in
+
+ /if defined(DEFINED_@WITH_XPATH@)
+ /define LIBXML_XPATH_ENABLED
+ /endif
+
+ * LIBXML_XPTR_ENABLED:
+ *
+ * Whether XPointer is configured in
+
+ /if defined(DEFINED_@WITH_XPTR@)
+ /define LIBXML_XPTR_ENABLED
+ /endif
+
+ * LIBXML_XINCLUDE_ENABLED:
+ *
+ * Whether XInclude is configured in
+
+ /if defined(DEFINED_@WITH_XINCLUDE@)
+ /define LIBXML_XINCLUDE_ENABLED
+ /endif
+
+ * LIBXML_ICONV_ENABLED:
+ *
+ * Whether iconv support is available
+
+ /if defined(DEFINED_@WITH_ICONV@)
+ /define LIBXML_ICONV_ENABLED
+ /endif
+
+ * LIBXML_ICU_ENABLED:
+ *
+ * Whether icu support is available
+
+ /if defined(DEFINED_@WITH_ICU@)
+ /define LIBXML_ICU_ENABLED
+ /endif
+
+ * LIBXML_ISO8859X_ENABLED:
+ *
+ * Whether ISO-8859-* support is made available in case iconv is not
+
+ /if defined(DEFINED_@WITH_ISO8859X@)
+ /define LIBXML_ISO8859X_ENABLED
+ /endif
+
+ * LIBXML_DEBUG_ENABLED:
+ *
+ * Whether Debugging module is configured in
+
+ /if defined(DEFINED_@WITH_DEBUG@)
+ /define LIBXML_DEBUG_ENABLED
+ /endif
+
+ * DEBUG_MEMORY_LOCATION:
+ *
+ * Whether the memory debugging is configured in
+
+ /if defined(DEFINED_@WITH_MEM_DEBUG@)
+ /define DEBUG_MEMORY_LOCATION
+ /endif
+
+ * LIBXML_DEBUG_RUNTIME:
+ *
+ * Whether the runtime debugging is configured in
+
+ /if defined(DEFINED_@WITH_RUN_DEBUG@)
+ /define LIBXML_DEBUG_RUNTIME
+ /endif
+
+ * LIBXML_UNICODE_ENABLED:
+ *
+ * Whether the Unicode related interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_REGEXPS@)
+ /define LIBXML_UNICODE_ENABLED
+ /endif
+
+ * LIBXML_REGEXP_ENABLED:
+ *
+ * Whether the regular expressions interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_REGEXPS@)
+ /define LIBXML_REGEXP_ENABLED
+ /endif
+
+ * LIBXML_AUTOMATA_ENABLED:
+ *
+ * Whether the automata interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_REGEXPS@)
+ /define LIBXML_AUTOMATA_ENABLED
+ /endif
+
+ * LIBXML_EXPR_ENABLED:
+ *
+ * Whether the formal expressions interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_SCHEMAS@)
+ /define LIBXML_EXPR_ENABLED
+ /endif
+
+ * LIBXML_SCHEMAS_ENABLED:
+ *
+ * Whether the Schemas validation interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_SCHEMAS@)
+ /define LIBXML_SCHEMAS_ENABLED
+ /endif
+
+ * LIBXML_SCHEMATRON_ENABLED:
+ *
+ * Whether the Schematron validation interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_SCHEMATRON@)
+ /define LIBXML_SCHEMATRON_ENABLED
+ /endif
+
+ * LIBXML_MODULES_ENABLED:
+ *
+ * Whether the module interfaces are compiled in
+
+ /if defined(DEFINED_@WITH_MODULES@)
+ /define LIBXML_MODULES_ENABLED
+
+ * LIBXML_MODULE_EXTENSION:
+ *
+ * the string suffix used by dynamic modules (usually shared libraries)
+
+ d LIBXML_MODULE_EXTENSION...
+ d c '.SRVPGM'
+ /endif
+
+ * LIBXML_ZLIB_ENABLED:
+ *
+ * Whether the Zlib support is compiled in
+
+ /if defined(DEFINED_@WITH_ZLIB@)
+ /define LIBXML_ZLIB_ENABLED
+ /endif
+
+ * LIBXML_LZMA_ENABLED:
+ *
+ * Whether the Lzma support is compiled in
+
+ /if defined(DEFINED_@WITH_LZMA@)
+ /define LIBXML_LZMA_ENABLED
+ /endif
+ /endif
diff --git a/os400/libxmlrpg/xmlwriter.rpgle b/os400/libxmlrpg/xmlwriter.rpgle
new file mode 100644
index 0000000..f2d3d30
--- /dev/null
+++ b/os400/libxmlrpg/xmlwriter.rpgle
@@ -0,0 +1,725 @@
+ * Summary: text writing API for XML
+ * Description: text writing API for XML
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XMLWRITER_H__)
+ /define XML_XMLWRITER_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_WRITER_ENABLED)
+
+ /include "libxmlrpg/xmlstdarg"
+ /include "libxmlrpg/xmlIO"
+ /include "libxmlrpg/list"
+ /include "libxmlrpg/xmlstring"
+
+ d xmlTextWriterPtr...
+ d s * based(######typedef######)
+
+ * Constructors & Destructor
+
+ d xmlNewTextWriter...
+ d pr extproc('xmlNewTextWriter')
+ d like(xmlTextWriterPtr)
+ d out value like(xmlOutputBufferPtr)
+
+ d xmlNewTextWriterFilename...
+ d pr extproc('xmlNewTextWriterFilename')
+ d like(xmlTextWriterPtr)
+ d uri * value options(*string) const char *
+ d compression 10i 0 value
+
+ d xmlNewTextWriterMemory...
+ d pr extproc('xmlNewTextWriterMemory')
+ d like(xmlTextWriterPtr)
+ d buf value like(xmlBufferPtr)
+ d compression 10i 0 value
+
+ d xmlNewTextWriterPushParser...
+ d pr extproc('xmlNewTextWriterPushParser')
+ d like(xmlTextWriterPtr)
+ d ctxt value like(xmlParserCtxtPtr)
+ d compression 10i 0 value
+
+ d xmlNewTextWriterDoc...
+ d pr extproc('xmlNewTextWriterDoc')
+ d like(xmlTextWriterPtr)
+ d doc like(xmlDocPtr)
+ d compression 10i 0 value
+
+ d xmlNewTextWriterTree...
+ d pr extproc('xmlNewTextWriterTree')
+ d like(xmlTextWriterPtr)
+ d doc value like(xmlDocPtr)
+ d node value like(xmlNodePtr)
+ d compression 10i 0 value
+
+ d xmlFreeTextWriter...
+ d pr extproc('xmlFreeTextWriter')
+ d writer value like(xmlTextWriterPtr)
+
+ * Functions
+
+ * Document
+
+ d xmlTextWriterStartDocument...
+ d pr 10i 0 extproc('xmlTextWriterStartDocument')
+ d writer value like(xmlTextWriterPtr)
+ d version * value options(*string) const char *
+ d encoding * value options(*string) const char *
+ d standalone * value options(*string) const char *
+
+ d xmlTextWriterEndDocument...
+ d pr 10i 0 extproc('xmlTextWriterEndDocument')
+ d writer value like(xmlTextWriterPtr)
+
+ * Comments
+
+ d xmlTextWriterStartComment...
+ d pr 10i 0 extproc('xmlTextWriterStartComment')
+ d writer value like(xmlTextWriterPtr)
+
+ d xmlTextWriterEndComment...
+ d pr 10i 0 extproc('xmlTextWriterEndComment')
+ d writer value like(xmlTextWriterPtr)
+
+ d xmlTextWriterWriteFormatComment...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatComment')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string: *nopass) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatComment...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatComment')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteComment...
+ d pr 10i 0 extproc('xmlTextWriterWriteComment')
+ d writer value like(xmlTextWriterPtr)
+ d content * value options(*string) const xmlChar *
+
+ * Elements
+
+ d xmlTextWriterStartElement...
+ d pr 10i 0 extproc('xmlTextWriterStartElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextWriterStartElementNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterStartElementNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndElement...
+ d pr 10i 0 extproc('xmlTextWriterEndElement')
+ d writer value like(xmlTextWriterPtr)
+
+ d xmlTextWriterFullEndElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterFullEndElement')
+ d writer value like(xmlTextWriterPtr)
+
+ * Elements conveniency functions
+
+ d xmlTextWriterWriteFormatElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteElement...
+ d pr 10i 0 extproc('xmlTextWriterWriteElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteFormatElementNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatElementNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatElementNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatElementNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteElementNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteElementNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * Text
+
+ d xmlTextWriterWriteFormatRaw...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatRaw')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatRaw...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatRaw')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteRawLen...
+ d pr 10i 0 extproc('xmlTextWriterWriteRawLen')
+ d writer value like(xmlTextWriterPtr)
+ d content * value options(*string) const xmlChar *
+ d len 10i 0 value
+
+ d xmlTextWriterWriteRaw...
+ d pr 10i 0 extproc('xmlTextWriterWriteRaw')
+ d writer value like(xmlTextWriterPtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteFormatString...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatString')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatString...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatString')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteString...
+ d pr 10i 0 extproc('xmlTextWriterWriteString')
+ d writer value like(xmlTextWriterPtr)
+ d content * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteBase64...
+ d pr 10i 0 extproc('xmlTextWriterWriteBase64')
+ d writer value like(xmlTextWriterPtr)
+ d data * value options(*string) const char *
+ d start 10i 0 value
+ d len 10i 0 value
+
+ d xmlTextWriterWriteBinHex...
+ d pr 10i 0 extproc('xmlTextWriterWriteBinHex')
+ d writer value like(xmlTextWriterPtr)
+ d data * value options(*string) const char *
+ d start 10i 0 value
+ d len 10i 0 value
+
+ * Attributes
+
+ d xmlTextWriterStartAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterStartAttribute')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextWriterStartAttributeNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterStartAttributeNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndAttribute...
+ d pr 10i 0 extproc('xmlTextWriterEndAttribute')
+ d writer value like(xmlTextWriterPtr)
+
+ * Attributes conveniency functions
+
+ d xmlTextWriterWriteFormatAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatAttribute')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatAttribute')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteAttribute...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteAttribute')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteFormatAttributeNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatAttributeNS'
+ d )
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatAttributeNS...
+ d pr 10i 0 extproc('xmlTextWriterWriteVFormatAt-
+ d tributeNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteAttributeNS...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteAttributeNS')
+ d writer value like(xmlTextWriterPtr)
+ d prefix * value options(*string) const xmlChar *
+ d name * value options(*string) const xmlChar *
+ d namespaceURI * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * PI's
+
+ d xmlTextWriterStartPI...
+ d pr 10i 0 extproc('xmlTextWriterStartPI')
+ d writer value like(xmlTextWriterPtr)
+ d target * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndPI...
+ d pr 10i 0 extproc('xmlTextWriterEndPI')
+ d writer value like(xmlTextWriterPtr)
+
+ * PI conveniency functions
+
+ d xmlTextWriterWriteFormatPI...
+ d pr 10i 0 extproc('xmlTextWriterWriteFormatPI')
+ d writer value like(xmlTextWriterPtr)
+ d target * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatPI...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatPI')
+ d writer value like(xmlTextWriterPtr)
+ d target * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWritePI...
+ d pr 10i 0 extproc('xmlTextWriterWritePI')
+ d writer value like(xmlTextWriterPtr)
+ d target * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * xmlTextWriterWriteProcessingInstruction:
+ *
+ * This macro maps to xmlTextWriterWritePI
+
+ d xmlTextWriterWriteProcessingInstruction...
+ d pr 10i 0 extproc('xmlTextWriterWritePI')
+ d writer value like(xmlTextWriterPtr)
+ d target * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * CDATA
+
+ d xmlTextWriterStartCDATA...
+ d pr 10i 0 extproc('xmlTextWriterStartCDATA')
+ d writer value like(xmlTextWriterPtr)
+
+ d xmlTextWriterEndCDATA...
+ d pr 10i 0 extproc('xmlTextWriterEndCDATA')
+ d writer value like(xmlTextWriterPtr)
+
+ * CDATA conveniency functions
+
+ d xmlTextWriterWriteFormatCDATA...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatCDATA')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatCDATA...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatCDATA')
+ d writer value like(xmlTextWriterPtr)
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteCDATA...
+ d pr 10i 0 extproc('xmlTextWriterWriteCDATA')
+ d writer value like(xmlTextWriterPtr)
+ d content * value options(*string) const xmlChar *
+
+ * DTD
+
+ d xmlTextWriterStartDTD...
+ d pr 10i 0 extproc('xmlTextWriterStartDTD')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndDTD...
+ d pr 10i 0 extproc('xmlTextWriterEndDTD')
+ d writer value like(xmlTextWriterPtr)
+
+ * DTD conveniency functions
+
+ d xmlTextWriterWriteFormatDTD...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatDTD')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatDTD...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatDTD')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteDTD...
+ d pr 10i 0 extproc('xmlTextWriterWriteDTD')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d subset * value options(*string) const xmlChar *
+
+ * xmlTextWriterWriteDocType:
+ *
+ * this macro maps to xmlTextWriterWriteDTD
+
+ d xmlTextWriterWriteDocType...
+ d pr 10i 0 extproc('xmlTextWriterWriteDTD')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d subset * value options(*string) const xmlChar *
+
+ * DTD element definition
+
+ d xmlTextWriterStartDTDElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterStartDTDElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndDTDElement...
+ d pr 10i 0 extproc('xmlTextWriterEndDTDElement')
+ d writer value like(xmlTextWriterPtr)
+
+ * DTD element definition conveniency functions
+
+ d xmlTextWriterWriteFormatDTDElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatDTDElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatDTDElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatDTDElement'
+ d )
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteDTDElement...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteDTDElement')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * DTD attribute list definition
+
+ d xmlTextWriterStartDTDAttlist...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterStartDTDAttlist')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndDTDAttlist...
+ d pr 10i 0 extproc('xmlTextWriterEndDTDAttlist')
+ d writer value like(xmlTextWriterPtr)
+
+ * DTD attribute list definition conveniency functions
+
+ d xmlTextWriterWriteFormatDTDAttlist...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteFormatDTDAttlist')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatDTDAttlist...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteVFormatDTDAttlist'
+ d )
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteDTDAttlist...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteDTDAttlist')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * DTD entity definition
+
+ d xmlTextWriterStartDTDEntity...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterStartDTDEntity')
+ d writer value like(xmlTextWriterPtr)
+ d pe 10i 0 value
+ d name * value options(*string) const xmlChar *
+
+ d xmlTextWriterEndDTDEntity...
+ d pr 10i 0 extproc('xmlTextWriterEndDTDEntity')
+ d writer value like(xmlTextWriterPtr)
+
+ * DTD entity definition conveniency functions
+
+ d xmlTextWriterWriteFormatDTDInternalEntity...
+ d pr 10i 0 extproc('xmlTextWriterWriteFormatDTD-
+ d InternalEntity')
+ d writer value like(xmlTextWriterPtr)
+ d pe 10i 0 value
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d #vararg1 * value options(*string: *nopass) void *
+ d #vararg2 * value options(*string: *nopass) void *
+ d #vararg3 * value options(*string: *nopass) void *
+ d #vararg4 * value options(*string: *nopass) void *
+ d #vararg5 * value options(*string: *nopass) void *
+ d #vararg6 * value options(*string: *nopass) void *
+ d #vararg7 * value options(*string: *nopass) void *
+ d #vararg8 * value options(*string: *nopass) void *
+
+ d xmlTextWriterWriteVFormatDTDInternalEntity...
+ d pr 10i 0 extproc('xmlTextWriterWriteVFormatDT-
+ d DInternalEntity')
+ d writer value like(xmlTextWriterPtr)
+ d pe 10i 0 value
+ d name * value options(*string) const xmlChar *
+ d format * value options(*string) const char *
+ d argptr likeds(xmlVaList)
+
+ d xmlTextWriterWriteDTDInternalEntity...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteDTDInternalEntity'
+ d )
+ d writer value like(xmlTextWriterPtr)
+ d pe 10i 0 value
+ d name * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteDTDExternalEntity...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteDTDExternalEntity'
+ d )
+ d writer value like(xmlTextWriterPtr)
+ d pe 10i 0 value
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d ndataid * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteDTDExternalEntityContents...
+ d pr 10i 0 extproc('xmlTextWriterWriteDTDExtern-
+ d alEntityContents')
+ d writer value like(xmlTextWriterPtr)
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d ndataid * value options(*string) const xmlChar *
+
+ d xmlTextWriterWriteDTDEntity...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteDTDEntity')
+ d writer value like(xmlTextWriterPtr)
+ d pe 10i 0 value
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+ d ndataid * value options(*string) const xmlChar *
+ d content * value options(*string) const xmlChar *
+
+ * DTD notation definition
+
+ d xmlTextWriterWriteDTDNotation...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterWriteDTDNotation')
+ d writer value like(xmlTextWriterPtr)
+ d name * value options(*string) const xmlChar *
+ d pubid * value options(*string) const xmlChar *
+ d sysid * value options(*string) const xmlChar *
+
+ * Indentation
+
+ d xmlTextWriterSetIndent...
+ d pr 10i 0 extproc('xmlTextWriterSetIndent')
+ d writer value like(xmlTextWriterPtr)
+ d indent 10i 0 value
+
+ d xmlTextWriterSetIndentString...
+ d pr 10i 0 extproc(
+ d 'xmlTextWriterSetIndentString')
+ d writer value like(xmlTextWriterPtr)
+ d str * value options(*string) const xmlChar *
+
+ d xmlTextWriterSetQuoteChar...
+ d pr 10i 0 extproc('xmlTextWriterSetQuoteChar')
+ d writer value like(xmlTextWriterPtr)
+ d quotechar value like(xmlChar)
+
+ * misc
+
+ d xmlTextWriterFlush...
+ d pr 10i 0 extproc('xmlTextWriterFlush')
+ d writer value like(xmlTextWriterPtr)
+
+ /endif LIBXML_WRITER_ENABLD
+ /endif XML_XMLWRITER_H__
diff --git a/os400/libxmlrpg/xpath.rpgle b/os400/libxmlrpg/xpath.rpgle
new file mode 100644
index 0000000..3f3be32
--- /dev/null
+++ b/os400/libxmlrpg/xpath.rpgle
@@ -0,0 +1,649 @@
+ * Summary: XML Path Language implementation
+ * Description: API for the XML Path Language implementation
+ *
+ * XML Path Language implementation
+ * XPath is a language for addressing parts of an XML document,
+ * designed to be used by both XSLT and XPointer
+ * http://www.w3.org/TR/xpath
+ *
+ * Implements
+ * W3C Recommendation 16 November 1999
+ * http://www.w3.org/TR/1999/REC-xpath-19991116
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XPATH_H__)
+ /define XML_XPATH_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_XPATH_ENABLED)
+
+ /include "libxmlrpg/xmlerror"
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/hash"
+ /endif LIBXML_XPATH_ENABLED
+
+ /if defined(LIBXML_XPATH_ENABLED)
+
+ d xmlXPathContextPtr...
+ d s * based(######typedef######)
+
+ d xmlXPathParserContextPtr...
+ d s * based(######typedef######)
+
+ * The set of XPath error codes.
+
+ d xmlXPathError s 10i 0 based(######typedef######) enum
+ d XPATH_EXPRESSION_OK...
+ d c 0
+ d XPATH_NUMBER_ERROR...
+ d c 1
+ d XPATH_UNFINISHED_LITERAL_ERROR...
+ d c 2
+ d XPATH_START_LITERAL_ERROR...
+ d c 3
+ d XPATH_VARIABLE_REF_ERROR...
+ d c 4
+ d XPATH_UNDEF_VARIABLE_ERROR...
+ d c 5
+ d XPATH_INVALID_PREDICATE_ERROR...
+ d c 6
+ d XPATH_EXPR_ERROR...
+ d c 7
+ d XPATH_UNCLOSED_ERROR...
+ d c 8
+ d XPATH_UNKNOWN_FUNC_ERROR...
+ d c 9
+ d XPATH_INVALID_OPERAND...
+ d c 10
+ d XPATH_INVALID_TYPE...
+ d c 11
+ d XPATH_INVALID_ARITY...
+ d c 12
+ d XPATH_INVALID_CTXT_SIZE...
+ d c 13
+ d XPATH_INVALID_CTXT_POSITION...
+ d c 14
+ d XPATH_MEMORY_ERROR...
+ d c 15
+ d XPTR_SYNTAX_ERROR...
+ d c 16
+ d XPTR_RESOURCE_ERROR...
+ d c 17
+ d XPTR_SUB_RESOURCE_ERROR...
+ d c 18
+ d XPATH_UNDEF_PREFIX_ERROR...
+ d c 19
+ d XPATH_ENCODING_ERROR...
+ d c 20
+ d XPATH_INVALID_CHAR_ERROR...
+ d c 21
+ d XPATH_INVALID_CTXT...
+ d c 22
+ d XPATH_STACK_ERROR...
+ d c 23
+ d XPATH_FORBID_VARIABLE_ERROR...
+ d c 24
+
+ * A node-set (an unordered collection of nodes without duplicates).
+
+ d xmlNodeSetPtr s * based(######typedef######)
+
+ d xmlNodeSet ds based(xmlNodeSetPtr)
+ d align qualified
+ d nodeNr 10i 0 Set node count
+ d nodeMax 10i 0 Max # nodes in set
+ d nodeTab * xmlNodePtr *
+
+ * An expression is evaluated to yield an object, which
+ * has one of the following four basic types:
+ * - node-set
+ * - boolean
+ * - number
+ * - string
+ *
+ * @@ XPointer will add more types !
+
+ d xmlXPathObjectType...
+ d s 10i 0 based(######typedef######) enum
+ d XPATH_UNDEFINED...
+ d c 0
+ d XPATH_NODESET c 1
+ d XPATH_BOOLEAN c 2
+ d XPATH_NUMBER c 3
+ d XPATH_STRING c 4
+ d XPATH_POINT c 5
+ d XPATH_RANGE c 6
+ d XPATH_LOCATIONSET...
+ d c 7
+ d XPATH_USERS c 8
+ d XPATH_XSLT_TREE... R/O XSLT value tree
+ d c 9
+
+ d xmlXPathObjectPtr...
+ d s * based(######typedef######)
+
+ d xmlXPathObject ds based(xmlXPathObjectPtr)
+ d align qualified
+ d type like(xmlXPathObjectType)
+ d nodesetval like(xmlNodeSetPtr)
+ d boolval 10i 0
+ d floatval 8f
+ d stringval * xmlChar *
+ d user * void *
+ d index 10i 0
+ d user2 * void *
+ d index2 10i 0
+
+ * xmlXPathConvertFunc:
+ * @obj: an XPath object
+ * @type: the number of the target type
+ *
+ * A conversion function is associated to a type and used to cast
+ * the new type to primitive values.
+ *
+ * Returns -1 in case of error, 0 otherwise
+
+ d xmlXPathConvertFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * Extra type: a name and a conversion function.
+
+ d xmlXPathTypePtr...
+ d s * based(######typedef######)
+
+ d xmlXPathType ds based(xmlXPathTypePtr)
+ d align qualified
+ d name * The type name
+ d func like(xmlXPathConvertFunc) Conversion function
+
+ * Extra variable: a name and a value.
+
+ d xmlXPathVariablePtr...
+ d s * based(######typedef######)
+
+ d xmlXPathVariable...
+ d ds based(xmlXPathVariablePtr)
+ d align qualified
+ d name * The variable name
+ d value like(xmlXPathObjectPtr) The value
+
+ * xmlXPathEvalFunc:
+ * @ctxt: an XPath parser context
+ * @nargs: the number of arguments passed to the function
+ *
+ * An XPath evaluation function, the parameters are on the XPath
+ * context stack.
+
+ d xmlXPathEvalFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * Extra function: a name and an evaluation function.
+
+ d xmlXPathFuncPtr...
+ d s * based(######typedef######)
+
+ d xmlXPathFunct ds based(xmlXPathFuncPtr)
+ d align qualified
+ d name * The function name
+ d func like(xmlXPathEvalFunc) Evaluation function
+
+ * xmlXPathAxisFunc:
+ * @ctxt: the XPath interpreter context
+ * @cur: the previous node being explored on that axis
+ *
+ * An axis traversal function. To traverse an axis, the engine calls
+ * the first time with cur == NULL and repeat until the function returns
+ * NULL indicating the end of the axis traversal.
+ *
+ * Returns the next node in that axis or NULL if at the end of the axis.
+
+ d xmlXPathAxisFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * Extra axis: a name and an axis function.
+
+ d xmlXPathAxisPtr...
+ d s * based(######typedef######)
+
+ d xmlXPathAxis ds based(xmlXPathAxisPtr)
+ d align qualified
+ d name * The axis name
+ d func like(xmlXPathAxisFunc) The search function
+
+ * xmlXPathFunction:
+ * @ctxt: the XPath interprestation context
+ * @nargs: the number of arguments
+ *
+ * An XPath function.
+ * The arguments (if any) are popped out from the context stack
+ * and the result is pushed on the stack.
+
+ d xmlXPathFunction...
+ d s * based(######typedef######)
+ d procptr
+
+ * Function and Variable Lookup.
+
+ * xmlXPathVariableLookupFunc:
+ * @ctxt: an XPath context
+ * @name: name of the variable
+ * @ns_uri: the namespace name hosting this variable
+ *
+ * Prototype for callbacks used to plug variable lookup in the XPath
+ * engine.
+ *
+ * Returns the XPath object value or NULL if not found.
+
+ d xmlXPathVariableLookupFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlXPathFuncLookupFunc:
+ * @ctxt: an XPath context
+ * @name: name of the function
+ * @ns_uri: the namespace name hosting this function
+ *
+ * Prototype for callbacks used to plug function lookup in the XPath
+ * engine.
+ *
+ * Returns the XPath function or NULL if not found.
+
+ d xmlXPathFuncLookupFunc...
+ d s * based(######typedef######)
+ d procptr
+
+ * xmlXPathFlags:
+ * Flags for XPath engine compilation and runtime
+
+ * XML_XPATH_CHECKNS:
+ *
+ * check namespaces at compilation
+
+ d XML_XPATH_CHECKNS...
+ d c X'0001'
+
+ * XML_XPATH_NOVAR:
+ *
+ * forbid variables in expression
+
+ d XML_XPATH_NOVAR...
+ d c X'0002'
+
+ * xmlXPathContext:
+ *
+ * Expression evaluation occurs with respect to a context.
+ * he context consists of:
+ * - a node (the context node)
+ * - a node list (the context node list)
+ * - a set of variable bindings
+ * - a function library
+ * - the set of namespace declarations in scope for the expression
+ * Following the switch to hash tables, this need to be trimmed up at
+ * the next binary incompatible release.
+ * The node may be modified when the context is passed to libxml2
+ * for an XPath evaluation so you may need to initialize it again
+ * before the next call.
+
+ d xmlXPathContext...
+ d ds based(xmlXPathContextPtr)
+ d align qualified
+ d doc like(xmlDocPtr) Current document
+ d node like(xmlNodePtr) Current node
+ *
+ d nb_variables_unused... Unused (hash table)
+ d 10i 0
+ d max_variables_unused... Unused (hash table)
+ d 10i 0
+ d varHash like(xmlHashTablePtr) Defined variables
+ *
+ d nb_types 10i 0 # of defined types
+ d max_types 10i 0 Max number of types
+ d types like(xmlXPathTypePtr) Defined types array
+ *
+ d nb_funcs_unused... Unused (hash table)
+ d 10i 0
+ d max_funcs_unused... Unused (hash table)
+ d 10i 0
+ d funcHash like(xmlHashTablePtr) Defined functions
+ *
+ d nb_axis 10i 0 # of defined axis
+ d max_axis 10i 0 Max number of axis
+ d axis like(xmlXPathAxisPtr) Defined axis array
+ *
+ * the namespace nodes of the context node
+ *
+ d namespaces * xmlNsPtr *
+ d nsNr 10i 0 # scope namespaces
+ d user * procptr Function to free
+ *
+ * extra variables
+ *
+ d contextSize 10i 0 The context size
+ d proximityPosition...
+ d 10i 0
+ *
+ * extra stuff for XPointer
+ *
+ d xptr 10i 0 XPointer context ?
+ d here like(xmlNodePtr) For here()
+ d origin like(xmlNodePtr) For origin()
+ *
+ * the set of namespace declarations in scope for the expression
+ *
+ d nsHash like(xmlHashTablePtr) Namespace hashtable
+ d varLookupFunc like(xmlXPathVariableLookupFunc) Var lookup function
+ d varLookupData * void *
+ *
+ * Possibility to link in an extra item
+ *
+ d extra * void *
+ *
+ * The function name and URI when calling a function
+ *
+ d function * const xmlChar *
+ d functionURI * const xmlChar *
+ *
+ * function lookup function and data
+ *
+ d funcLookupFunc... Func lookup func
+ d like(xmlXPathVariableLookupFunc)
+ d funcLookupData... void *
+ d *
+ *
+ * temporary namespace lists kept for walking the namespace axis
+ *
+ d tmpNsList * xmlNsPtr *
+ d tmpNsNr 10i 0 # scope namespaces
+ *
+ * error reporting mechanism
+ *
+ d userData * void *
+ d error like(xmlStructuredErrorFunc) Error callback
+ d lastError like(xmlError) The last error
+ d debugNode like(xmlNodePtr) XSLT source node
+ *
+ * dictionary
+ *
+ d dict like(xmlDictPtr) Dictionary if any
+ *
+ d flags 10i 0 Compilation control
+ *
+ * Cache for reusal of XPath objects
+ *
+ d cache * void *
+
+ * The structure of a compiled expression form is not public.
+
+ d xmlXPathCompExprPtr...
+ d s * based(######typedef######)
+
+ * xmlXPathParserContext:
+ *
+ * An XPath parser context. It contains pure parsing informations,
+ * an xmlXPathContext, and the stack of objects.
+
+ d xmlXPathParserContext...
+ d ds based(xmlXPathParserContextPtr)
+ d align qualified
+ d cur * const xmlChar *
+ d base * const xmlChar *
+ *
+ d error 10i 0 Error code
+ *
+ d context like(xmlXPathContextPtr) Evaluation context
+ d value like(xmlXPathObjectPtr) The current value
+ d valueNr 10i 0 Value stack depth
+ d valueMax 10i 0 Max stack depth
+ d valueTab * xmlXPathObjectPtr *
+ *
+ d comp like(xmlXPathCompExprPtr) Precompiled expr.
+ d xptr 10i 0 XPointer expression?
+ d ancestor like(xmlNodePtr) To walk prec. axis
+ *
+ d valueFrame 10i 0 Limit stack pop
+
+ **************************************************************************
+ * *
+ * Public API *
+ * *
+ **************************************************************************
+
+ * Objects and Nodesets handling
+
+ d xmlXPathNAN s 8f import('xmlXPathNAN')
+ d xmlXPathPINF s 8f import('xmlXPathPINF')
+ d xmlXPathNINF s 8f import('xmlXPathNINF')
+
+ d xmlXPathFreeObject...
+ d pr extproc('xmlXPathFreeObject')
+ d obj value like(xmlXPathObjectPtr)
+
+ d xmlXPathNodeSetCreate...
+ d pr extproc('xmlXPathNodeSetCreate')
+ d like(xmlNodeSetPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathFreeNodeSetList...
+ d pr extproc('xmlXPathFreeNodeSetList')
+ d obj value like(xmlXPathObjectPtr)
+
+ d xmlXPathFreeNodeSet...
+ d pr extproc('xmlXPathFreeNodeSet')
+ d obj value like(xmlNodeSetPtr)
+
+ d xmlXPathObjectCopy...
+ d pr extproc('xmlXPathObjectCopy')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPathCmpNodes...
+ d pr 10i 0 extproc('xmlXPathCmpNodes')
+ d node1 value like(xmlNodePtr)
+ d node2 value like(xmlNodePtr)
+
+ * Conversion functions to basic types.
+
+ d xmlXPathCastNumberToBoolean...
+ d pr 10i 0 extproc(
+ d 'xmlXPathCastNumberToBoolean')
+ d val 8f value
+
+ d xmlXPathCastStringToBoolean...
+ d pr 10i 0 extproc(
+ d 'xmlXPathCastStringToBoolean')
+ d val * value options(*string) const xmlChar *
+
+ d xmlXPathCastNodeSetToBoolean...
+ d pr 10i 0 extproc(
+ d 'xmlXPathCastNodeSetToBoolean')
+ d ns value like(xmlNodeSetPtr)
+
+ d xmlXPathCastToBoolean...
+ d pr 10i 0 extproc('xmlXPathCastToBoolean')
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPathCastBooleanToNumber...
+ d pr extproc(
+ d 'xmlXPathCastBooleanToNumber')
+ d 8f
+ d val 10i 0 value
+
+ d xmlXPathCastStringToNumber...
+ d pr 8f extproc('xmlXPathCastStringToNumber')
+ d val * value options(*string) const xmlChar *
+
+ d xmlXPathCastNodeToNumber...
+ d pr 8f extproc('xmlXPathCastNodeToNumber')
+ d node value like(xmlNodePtr)
+
+ d xmlXPathCastNodeSetToNumber...
+ d pr 8f extproc(
+ d 'xmlXPathCastNodeSetToNumber')
+ d ns value like(xmlNodeSetPtr)
+
+ d xmlXPathCastToNumber...
+ d pr 8f extproc('xmlXPathCastToNumber')
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPathCastBooleanToString...
+ d pr * extproc( xmlChar *
+ d 'xmlXPathCastBooleanToString')
+ d val 10i 0 value
+
+ d xmlXPathCastNumberToString...
+ d pr * extproc('xmlXPathCastNumberToString')xmlChar *
+ d val 8f value
+
+ d xmlXPathCastNodeToString...
+ d pr * extproc('xmlXPathCastNodeToString') xmlChar *
+ d node value like(xmlNodePtr)
+
+ d xmlXPathCastNodeSetToString...
+ d pr * extproc('xmlXPathCastNodeSetToString'xmlChar *
+ d )
+ d ns value like(xmlNodeSetPtr)
+
+ d xmlXPathCastToString...
+ d pr * extproc('xmlXPathCastToString') xmlChar *
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPathConvertBoolean...
+ d pr extproc('xmlXPathConvertBoolean')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPathConvertNumber...
+ d pr extproc('xmlXPathConvertNumber')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPathConvertString...
+ d pr extproc('xmlXPathConvertString')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ * Context handling.
+
+ d xmlXPathNewContext...
+ d pr extproc('xmlXPathNewContext')
+ d like(xmlXPathContextPtr)
+ d doc value like(xmlDocPtr)
+
+ d xmlXPathFreeContext...
+ d pr extproc('xmlXPathFreeContext')
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathContextSetCache...
+ d pr 10i 0 extproc('xmlXPathContextSetCache')
+ d ctxt value like(xmlXPathContextPtr)
+ d active 10i 0 value
+ d value 10i 0 value
+ d options 10i 0 value
+
+ * Evaluation functions.
+
+ d xmlXPathOrderDocElems...
+ d pr 20i 0 extproc('xmlXPathOrderDocElems')
+ d doc value like(xmlDocPtr)
+
+ d xmlXPathSetContextNode...
+ d pr 10i 0 extproc('xmlXPathSetContextNode')
+ d node value like(xmlNodePtr)
+ d ctx value like(xmlXPathContextPtr)
+
+ d xmlXPathNodeEval...
+ d pr extproc('xmlXPathNodeEval')
+ d like(xmlXPathObjectPtr)
+ d node value like(xmlNodePtr)
+ d str * value options(*string) const xmlChar *
+ d ctx value like(xmlXPathContextPtr)
+
+ d xmlXPathEval pr extproc('xmlXPathEval')
+ d like(xmlXPathObjectPtr)
+ d str * value options(*string) const xmlChar *
+ d ctx value like(xmlXPathContextPtr)
+
+ d xmlXPathEvalExpression...
+ d pr extproc('xmlXPathEvalExpression')
+ d like(xmlXPathObjectPtr)
+ d str * value options(*string) const xmlChar *
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathEvalPredicate...
+ d pr 10i 0 extproc('xmlXPathEvalPredicate')
+ d ctxt value like(xmlXPathContextPtr)
+ d res value like(xmlXPathObjectPtr)
+
+ * Separate compilation/evaluation entry points.
+
+ d xmlXPathCompile...
+ d pr extproc('xmlXPathCompile')
+ d like(xmlXPathCompExprPtr)
+ d str * value options(*string) const xmlChar *
+
+ d xmlXPathCtxtCompile...
+ d pr extproc('xmlXPathCtxtCompile')
+ d like(xmlXPathCompExprPtr)
+ d ctxt value like(xmlXPathContextPtr)
+ d str * value options(*string) const xmlChar *
+
+ d xmlXPathCompiledEval...
+ d pr extproc('xmlXPathCompiledEval')
+ d like(xmlXPathObjectPtr)
+ d comp value like(xmlXPathCompExprPtr)
+ d ctx value like(xmlXPathContextPtr)
+
+ d xmlXPathCompiledEvalToBoolean...
+ d pr 10i 0 extproc(
+ d 'xmlXPathCompiledEvalToBoolean')
+ d comp value like(xmlXPathCompExprPtr)
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathFreeCompExpr...
+ d pr extproc('xmlXPathFreeCompExpr')
+ d comp value like(xmlXPathCompExprPtr)
+ /endif LIBXML_XPATH_ENABLED
+
+ /undefine XML_TESTVAL
+ /if defined(LIBXML_XPATH_ENABLED)
+ /define XML_TESTVAL
+ /elseif defined(LIBXML_SCHEMAS_ENABLED)
+ /define XML_TESTVAL
+ /endif
+ /if defined(XML_TESTVAL)
+ d xmlXPathInit pr extproc('xmlXPathInit')
+
+ d xmlXPathIsNaN pr 10i 0 extproc('xmlXPathIsNaN')
+ d val 8f value
+
+ d xmlXPathIsInf pr 10i 0 extproc('xmlXPathIsInf')
+ d val 8f value
+
+ /undefine XML_TESTVAL
+ /endif
+
+ * C macros implemented as procedures for ILE/RPG support.
+
+ /if defined(LIBXML_XPATH_ENABLED)
+ d xmlXPathNodeSetGetLength...
+ d pr 10i 0 extproc('__xmlXPathNodeSetGetLength')
+ d ns value like(xmlNodeSetPtr)
+
+ d xmlXPathNodeSetItem...
+ d pr extproc('__xmlXPathNodeSetItem')
+ d like(xmlNodePtr)
+ d ns value like(xmlNodeSetPtr)
+ d index 10i 0 value
+
+ d xmlXPathNodeSetIsEmpty...
+ d pr 10i 0 extproc('__xmlXPathNodeSetIsEmpty')
+ d ns value like(xmlNodeSetPtr)
+ /endif LIBXML_XPATH_ENABLED
+ /endif XML_XPATH_H__
diff --git a/os400/libxmlrpg/xpathInternals.rpgle b/os400/libxmlrpg/xpathInternals.rpgle
new file mode 100644
index 0000000..69f3ae0
--- /dev/null
+++ b/os400/libxmlrpg/xpathInternals.rpgle
@@ -0,0 +1,672 @@
+ * Summary: internal interfaces for XML Path Language implementation
+ * Description: internal interfaces for XML Path Language implementation
+ * used to build new modules on top of XPath like XPointer and
+ * XSLT
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XPATH_INTERNALS_H__)
+ /define XML_XPATH_INTERNALS_H__
+
+ /include "libxmlrpg/xmlversion"
+ /include "libxmlrpg/xpath"
+
+ /if defined(LIBXML_XPATH_ENABLED)
+
+ ************************************************************************
+ * *
+ * Helpers *
+ * *
+ ************************************************************************
+
+ * Many of these macros may later turn into functions. They
+ * shouldn't be used in #ifdef's preprocessor instructions.
+
+ d xmlXPathPopBoolean...
+ d pr 10i 0 extproc('xmlXPathPopBoolean')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathPopNumber...
+ d pr 8f extproc('xmlXPathPopNumber')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathPopString...
+ d pr * extproc('xmlXPathPopString') xmlChar *
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathPopNodeSet...
+ d pr extproc('xmlXPathPopNodeSet')
+ d like(xmlNodeSetPtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathPopExternal...
+ d pr * extproc('xmlXPathPopExternal') void *
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ * Variable Lookup forwarding.
+
+ d xmlXPathRegisterVariableLookup...
+ d pr extproc(
+ d 'xmlXPathRegisterVariableLookup')
+ d ctxt value like(xmlXPathContextPtr)
+ d f value
+ d like(xmlXPathVariableLookupFunc)
+ d data * value void *
+
+ * Function Lookup forwarding.
+
+ d xmlXPathRegisterFuncLookup...
+ d pr extproc('xmlXPathRegisterFuncLookup')
+ d ctxt value like(xmlXPathContextPtr)
+ d f value like(xmlXPathFuncLookupFunc)
+ d funcCtxt * value void *
+
+ * Error reporting.
+ * Note this procedure is renamed in RPG to avoid character case clash with
+ * data type xmlXPathError.
+
+ d xmlXPathReportError...
+ d pr extproc('xmlXPatherror')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d file * value options(*string) const char *
+ d line 10i 0 value
+ d no 10i 0 value
+
+ d xmlXPathErr pr extproc('xmlXPathErr')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d error 10i 0 value
+
+ /if defined(LIBXML_DEBUG_ENABLED)
+ d xmlXPathDebugDumpObject...
+ d pr extproc('xmlXPathDebugDumpObject')
+ d output * value FILE *
+ d cur value like(xmlXPathObjectPtr)
+ d depth 10i 0 value
+
+ d xmlXPathDebugDumpCompExpr...
+ d pr extproc('xmlXPathDebugDumpCompExpr')
+ d output * value FILE *
+ d comp value like(xmlXPathCompExprPtr)
+ d depth 10i 0 value
+ /endif
+
+ * NodeSet handling.
+
+ d xmlXPathNodeSetContains...
+ d pr 10i 0 extproc('xmlXPathNodeSetContains')
+ d cur value like(xmlNodeSetPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathDifference...
+ d pr extproc('xmlXPathDifference')
+ d like(xmlNodeSetPtr)
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ d xmlXPathIntersection...
+ d pr extproc('xmlXPathIntersection')
+ d like(xmlNodeSetPtr)
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ d xmlXPathDistinctSorted...
+ d pr extproc('xmlXPathDistinctSorted')
+ d like(xmlNodeSetPtr)
+ d nodes value like(xmlNodeSetPtr)
+
+ d xmlXPathDistinct...
+ d pr extproc('xmlXPathDistinct')
+ d like(xmlNodeSetPtr)
+ d nodes value like(xmlNodeSetPtr)
+
+ d xmlXPathHasSameNodes...
+ d pr 10i 0 extproc('xmlXPathHasSameNodes')
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ d xmlXPathNodeLeadingSorted...
+ d pr extproc('xmlXPathNodeLeadingSorted')
+ d like(xmlNodeSetPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlXPathLeadingSorted...
+ d pr extproc('xmlXPathLeadingSorted')
+ d like(xmlNodeSetPtr)
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ d xmlXPathNodeLeading...
+ d pr extproc('xmlXPathNodeLeading')
+ d like(xmlNodeSetPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlXPathLeading...
+ d pr extproc('xmlXPathLeading')
+ d like(xmlNodeSetPtr)
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ d xmlXPathNodeTrailingSorted...
+ d pr extproc('xmlXPathNodeTrailingSorted')
+ d like(xmlNodeSetPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlXPathTrailingSorted...
+ d pr extproc('xmlXPathTrailingSorted')
+ d like(xmlNodeSetPtr)
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ d xmlXPathNodeTrailing...
+ d pr extproc('xmlXPathNodeTrailing')
+ d like(xmlNodeSetPtr)
+ d nodes value like(xmlNodeSetPtr)
+ d node value like(xmlNodePtr)
+
+ d xmlXPathTrailing...
+ d pr extproc('xmlXPathTrailing')
+ d like(xmlNodeSetPtr)
+ d nodes1 value like(xmlNodeSetPtr)
+ d nodes2 value like(xmlNodeSetPtr)
+
+ * Extending a context.
+
+ d xmlXPathRegisterNs...
+ d pr 10i 0 extproc('xmlXPathRegisterNs')
+ d ctxt value like(xmlXPathContextPtr)
+ d prefix * value options(*string) const xmlChar *
+ d ns_uri * value options(*string) const xmlChar *
+
+ d xmlXPathNsLookup...
+ d pr * extproc('xmlXPathNsLookup') const xmlChar *
+ d ctxt value like(xmlXPathContextPtr)
+ d prefix * value options(*string) const xmlChar *
+
+ d xmlXPathRegisteredNsCleanup...
+ d pr extproc(
+ d 'xmlXPathRegisteredNsCleanup')
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathRegisterFunc...
+ d pr 10i 0 extproc('xmlXPathRegisterFunc')
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+ d f value like(xmlXPathFunction)
+
+ d xmlXPathRegisterFuncNS...
+ d pr 10i 0 extproc('xmlXPathRegisterFuncNS')
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+ d ns_uri * value options(*string) const xmlChar *
+ d f value like(xmlXPathFunction)
+
+ d xmlXPathRegisterVariable...
+ d pr 10i 0 extproc('xmlXPathRegisterVariable')
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+ d value value like(xmlXPathObjectPtr)
+
+ d xmlXPathRegisterVariableNS...
+ d pr 10i 0 extproc('xmlXPathRegisterVariableNS')
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+ d ns_uri * value options(*string) const xmlChar *
+ d value value like(xmlXPathObjectPtr)
+
+ d xmlXPathFunctionLookup...
+ d pr extproc('xmlXPathFunctionLookup')
+ d like(xmlXPathFunction)
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlXPathFunctionLookupNS...
+ d pr extproc('xmlXPathFunctionLookupNS')
+ d like(xmlXPathFunction)
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+ d ns_uri * value options(*string) const xmlChar *
+
+ d xmlXPathRegisteredFuncsCleanup...
+ d pr extproc(
+ d 'xmlXPathRegisteredFuncsCleanup')
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathVariableLookup...
+ d pr extproc('xmlXPathVariableLookup')
+ d like(xmlXPathObjectPtr)
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+
+ d xmlXPathVariableLookupNS...
+ d pr extproc('xmlXPathVariableLookupNS')
+ d like(xmlXPathObjectPtr)
+ d ctxt value like(xmlXPathContextPtr)
+ d name * value options(*string) const xmlChar *
+ d ns_uri * value options(*string) const xmlChar *
+
+ d xmlXPathRegisteredVariablesCleanup...
+ d pr extproc(
+ d 'xmlXPathRegisteredVariablesCleanup')
+ d ctxt value like(xmlXPathContextPtr)
+
+ * Utilities to extend XPath.
+
+ d xmlXPathNewParserContext...
+ d pr extproc('xmlXPathNewParserContext')
+ d like(xmlXPathParserContextPtr)
+ d str * value options(*string) const xmlChar *
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathFreeParserContext...
+ d pr extproc('xmlXPathFreeParserContext')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+
+ * TODO: remap to xmlXPathValuePop and Push.
+
+ d valuePop pr extproc('valuePop')
+ d like(xmlXPathObjectPtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d valuePush pr 10i 0 extproc('valuePush')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d value value like(xmlXPathObjectPtr)
+
+ d xmlXPathNewString...
+ d pr extproc('xmlXPathNewString')
+ d like(xmlXPathObjectPtr)
+ d val * value options(*string) const xmlChar *
+
+ d xmlXPathNewCString...
+ d pr extproc('xmlXPathNewCString')
+ d like(xmlXPathObjectPtr)
+ d val * value options(*string) const char *
+
+ d xmlXPathWrapString...
+ d pr extproc('xmlXPathWrapString')
+ d like(xmlXPathObjectPtr)
+ d val * value options(*string) xmlChar *
+
+ d xmlXPathWrapCString...
+ d pr extproc('xmlXPathWrapCString')
+ d like(xmlXPathObjectPtr)
+ d val * value options(*string) char *
+
+ d xmlXPathNewFloat...
+ d pr extproc('xmlXPathNewFloat')
+ d like(xmlXPathObjectPtr)
+ d val 8f value
+
+ d xmlXPathNewBoolean...
+ d pr extproc('xmlXPathNewBoolean')
+ d like(xmlXPathObjectPtr)
+ d val 10i 0 value
+
+ d xmlXPathNewNodeSet...
+ d pr extproc('xmlXPathNewNodeSet')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathNewValueTree...
+ d pr extproc('xmlXPathNewValueTree')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathNodeSetAdd...
+ d pr 10i 0 extproc('xmlXPathNodeSetAdd')
+ d cur value like(xmlNodeSetPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathNodeSetAddUnique...
+ d pr 10i 0 extproc('xmlXPathNodeSetAddUnique')
+ d cur value like(xmlNodeSetPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathNodeSetAddNs...
+ d pr 10i 0 extproc('xmlXPathNodeSetAddNs')
+ d cur value like(xmlNodeSetPtr)
+ d node value like(xmlNodePtr)
+ d ns value like(xmlNsPtr)
+
+ d xmlXPathNodeSetSort...
+ d pr extproc('xmlXPathNodeSetSort')
+ d set value like(xmlNodeSetPtr)
+
+ d xmlXPathRoot pr extproc('xmlXPathRoot')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathEvalExpr...
+ d pr extproc('xmlXPathEvalExpr')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathParseName...
+ d pr * extproc('xmlXPathParseName') xmlChar *
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathParseNCName...
+ d pr * extproc('xmlXPathParseNCName') xmlChar *
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ * Existing functions.
+
+ d xmlXPathStringEvalNumber...
+ d pr 8f extproc('xmlXPathStringEvalNumber')
+ d str * value options(*string) const xmlChar *
+
+ d xmlXPathEvaluatePredicateResult...
+ d pr 10i 0 extproc(
+ d 'xmlXPathEvaluatePredicateResult')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d res value like(xmlXPathObjectPtr)
+
+ d xmlXPathRegisterAllFunctions...
+ d pr extproc(
+ d 'xmlXPathRegisterAllFunctions')
+ d ctxt value like(xmlXPathContextPtr)
+
+ d xmlXPathNodeSetMerge...
+ d pr extproc('xmlXPathNodeSetMerge')
+ d like(xmlNodeSetPtr)
+ d val1 value like(xmlNodeSetPtr)
+ d val2 value like(xmlNodeSetPtr)
+
+ d xmlXPathNodeSetDel...
+ d pr extproc('xmlXPathNodeSetDel')
+ d cur value like(xmlNodeSetPtr)
+ d val value like(xmlNodePtr)
+
+ d xmlXPathNodeSetRemove...
+ d pr extproc('xmlXPathNodeSetRemove')
+ d cur value like(xmlNodeSetPtr)
+ d val 10i 0 value
+
+ d xmlXPathNewNodeSetList...
+ d pr extproc('xmlXPathNewNodeSetList')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlNodeSetPtr)
+
+ d xmlXPathWrapNodeSet...
+ d pr extproc('xmlXPathWrapNodeSet')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlNodeSetPtr)
+
+ d xmlXPathWrapExternal...
+ d pr extproc('xmlXPathWrapExternal')
+ d like(xmlXPathObjectPtr)
+ d val * value void *
+
+ d xmlXPathEqualValues...
+ d pr 10i 0 extproc('xmlXPathEqualValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathNotEqualValues...
+ d pr 10i 0 extproc('xmlXPathNotEqualValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathCompareValues...
+ d pr 10i 0 extproc('xmlXPathCompareValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d inf 10i 0 value
+ d strict 10i 0 value
+
+ d xmlXPathValueFlipSign...
+ d pr extproc('xmlXPathValueFlipSign')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathAddValues...
+ d pr extproc('xmlXPathAddValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathSubValues...
+ d pr extproc('xmlXPathSubValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathMultValues...
+ d pr extproc('xmlXPathMultValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathDivValues...
+ d pr extproc('xmlXPathDivValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathModValues...
+ d pr extproc('xmlXPathModValues')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ d xmlXPathIsNodeType...
+ d pr 10i 0 extproc('xmlXPathIsNodeType')
+ d name * value options(*string) const xmlChar *
+
+ * Some of the axis navigation routines.
+
+ d xmlXPathNextSelf...
+ d pr extproc('xmlXPathNextSelf')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextChild...
+ d pr extproc('xmlXPathNextChild')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextDescendant...
+ d pr extproc('xmlXPathNextDescendant')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextDescendantOrSelf...
+ d pr extproc(
+ d 'xmlXPathNextDescendantOrSelf')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextParent...
+ d pr extproc('xmlXPathNextParent')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextAncestorOrSelf...
+ d pr extproc('xmlXPathNextAncestorOrSelf')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextFollowingSibling...
+ d pr extproc(
+ d 'xmlXPathNextFollowingSibling')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextFollowing...
+ d pr extproc('xmlXPathNextFollowing')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextNamespace...
+ d pr extproc('xmlXPathNextNamespace')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextAttribute...
+ d pr extproc('xmlXPathNextAttribute')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextPreceding...
+ d pr extproc('xmlXPathNextPreceding')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextAncestor...
+ d pr extproc('xmlXPathNextAncestor')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ d xmlXPathNextPrecedingSibling...
+ d pr extproc(
+ d 'xmlXPathNextPrecedingSibling')
+ d like(xmlNodePtr)
+ d ctxt value like(xmlXPathParserContextPtr)
+ d cur value like(xmlNodePtr)
+
+ * The official core of XPath functions.
+
+ d xmlXPathLastFunction...
+ d pr extproc('xmlXPathLastFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathPositionFunction...
+ d pr extproc('xmlXPathPositionFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathCountFunction...
+ d pr extproc('xmlXPathCountFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathIdFunction...
+ d pr extproc('xmlXPathIdFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathLocalNameFunction...
+ d pr extproc('xmlXPathLocalNameFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathNamespaceURIFunction...
+ d pr extproc(
+ d 'xmlXPathNamespaceURIFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathStringFunction...
+ d pr extproc('xmlXPathStringFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathStringLengthFunction...
+ d pr extproc(
+ d 'xmlXPathStringLengthFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathConcatFunction...
+ d pr extproc('xmlXPathConcatFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathContainsFunction...
+ d pr extproc('xmlXPathContainsFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathStartsWithFunction...
+ d pr extproc('xmlXPathStartsWithFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathSubstringFunction...
+ d pr extproc('xmlXPathSubstringFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathSubstringBeforeFunction...
+ d pr extproc(
+ d 'xmlXPathSubstringBeforeFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathSubstringAfterFunction...
+ d pr extproc(
+ d 'xmlXPathSubstringAfterFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+
+ d xmlXPathNormalizeFunction...
+ d pr extproc('xmlXPathNormalizeFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathTranslateFunction...
+ d pr extproc('xmlXPathTranslateFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathNotFunction...
+ d pr extproc('xmlXPathNotFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathTrueFunction...
+ d pr extproc('xmlXPathTrueFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathFalseFunction...
+ d pr extproc('xmlXPathFalseFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathLangFunction...
+ d pr extproc('xmlXPathLangFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathNumberFunction...
+ d pr extproc('xmlXPathNumberFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathSumFunction...
+ d pr extproc('xmlXPathSumFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathFloorFunction...
+ d pr extproc('xmlXPathFloorFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathCeilingFunction...
+ d pr extproc('xmlXPathCeilingFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathRoundFunction...
+ d pr extproc('xmlXPathRoundFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPathBooleanFunction...
+ d pr extproc('xmlXPathBooleanFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ * Really internal functions
+
+ d xmlXPathNodeSetFreeNs...
+ d pr extproc('xmlXPathNodeSetFreeNs')
+ d ns value like(xmlNsPtr)
+
+ /endif LIBXML_XPATH_ENABLED
+ /endif XPATH_INTERNALS_H__
diff --git a/os400/libxmlrpg/xpointer.rpgle b/os400/libxmlrpg/xpointer.rpgle
new file mode 100644
index 0000000..6f43314
--- /dev/null
+++ b/os400/libxmlrpg/xpointer.rpgle
@@ -0,0 +1,157 @@
+ * Summary: API to handle XML Pointers
+ * Description: API to handle XML Pointers
+ * Base implementation was made accordingly to
+ * W3C Candidate Recommendation 7 June 2000
+ * http://www.w3.org/TR/2000/CR-xptr-20000607
+ *
+ * Added support for the element() scheme described in:
+ * W3C Proposed Recommendation 13 November 2002
+ * http://www.w3.org/TR/2002/PR-xptr-element-20021113/
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+
+ /if not defined(XML_XPTR_H__)
+ /define XML_XPTR_H__
+
+ /include "libxmlrpg/xmlversion"
+
+ /if defined(LIBXML_XPTR_ENABLED)
+
+ /include "libxmlrpg/tree"
+ /include "libxmlrpg/xpath"
+
+ * A Location Set
+
+ d xmlLocationSetPtr...
+ d s * based(######typedef######)
+
+ d xmlLocationSet ds based(xmlLocationSetPtr)
+ d align qualified
+ d locNr 10i 0 # locations in set
+ d locMax 10i 0 Max locations in set
+ d locTab * xmlXPathObjectPtr *
+
+ * Handling of location sets.
+
+ d xmlXPtrLocationSetCreate...
+ d pr extproc('xmlXPtrLocationSetCreate')
+ d like(xmlLocationSetPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPtrFreeLocationSet...
+ d pr extproc('xmlXPtrFreeLocationSet')
+ d obj value like(xmlLocationSetPtr)
+
+ d xmlXPtrLocationSetMerge...
+ d pr extproc('xmlXPtrLocationSetMerge')
+ d like(xmlLocationSetPtr)
+ d val1 value like(xmlLocationSetPtr)
+ d val2 value like(xmlLocationSetPtr)
+
+ d xmlXPtrNewRange...
+ d pr extproc('xmlXPtrNewRange')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlNodePtr)
+ d startindex 10i 0 value
+ d end value like(xmlNodePtr)
+ d endindex 10i 0 value
+
+ d xmlXPtrNewRangePoints...
+ d pr extproc('xmlXPtrNewRangePoints')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlXPathObjectPtr)
+ d end value like(xmlXPathObjectPtr)
+
+ d xmlXPtrNewRangeNodePoint...
+ d pr extproc('xmlXPtrNewRangeNodePoint')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlNodePtr)
+ d end value like(xmlXPathObjectPtr)
+
+ d xmlXPtrNewRangePointNode...
+ d pr extproc('xmlXPtrNewRangePointNode')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlXPathObjectPtr)
+ d end value like(xmlNodePtr)
+
+ d xmlXPtrNewRangeNodes...
+ d pr extproc('xmlXPtrNewRangeNodes')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlNodePtr)
+ d end value like(xmlNodePtr)
+
+ d xmlXPtrNewLocationSetNodes...
+ d pr extproc('xmlXPtrNewLocationSetNodes')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlNodePtr)
+ d end value like(xmlNodePtr)
+
+ d xmlXPtrNewLocationSetNodeSet...
+ d pr extproc(
+ d 'xmlXPtrNewLocationSetNodeSet')
+ d like(xmlXPathObjectPtr)
+ d set value like(xmlNodeSetPtr)
+
+ d xmlXPtrNewRangeNodeObject...
+ d pr extproc('xmlXPtrNewRangeNodeObject')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlNodePtr)
+ d end value like(xmlXPathObjectPtr)
+
+ d xmlXPtrNewCollapsedRange...
+ d pr extproc('xmlXPtrNewCollapsedRange')
+ d like(xmlXPathObjectPtr)
+ d start value like(xmlNodePtr)
+
+ d xmlXPtrLocationSetAdd...
+ d pr extproc('xmlXPtrLocationSetAdd')
+ d cur value like(xmlLocationSetPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPtrWrapLocationSet...
+ d pr extproc('xmlXPtrWrapLocationSet')
+ d like(xmlXPathObjectPtr)
+ d val value like(xmlLocationSetPtr)
+
+ d xmlXPtrLocationSetDel...
+ d pr extproc('xmlXPtrLocationSetDel')
+ d cur value like(xmlLocationSetPtr)
+ d val value like(xmlXPathObjectPtr)
+
+ d xmlXPtrLocationSetRemove...
+ d pr extproc('xmlXPtrLocationSetRemove')
+ d cur value like(xmlLocationSetPtr)
+ d val 10i 0 value
+
+ * Functions.
+
+ d xmlXPtrNewContext...
+ d pr extproc('xmlXPtrNewContext')
+ d like(xmlXPathContextPtr)
+ d doc value like(xmlDocPtr)
+ d here value like(xmlNodePtr)
+ d origin value like(xmlNodePtr)
+
+ d xmlXPtrEval pr extproc('xmlXPtrEval')
+ d like(xmlXPathObjectPtr)
+ d str * value options(*string) const xmlChar *
+ d ctx value like(xmlXPathContextPtr)
+
+ d xmlXPtrRangeToFunction...
+ d pr extproc('xmlXPtrRangeToFunction')
+ d ctxt value like(xmlXPathParserContextPtr)
+ d nargs 10i 0 value
+
+ d xmlXPtrBuildNodeList...
+ d pr extproc('xmlXPtrBuildNodeList')
+ d like(xmlNodePtr)
+ d obj value like(xmlXPathObjectPtr)
+
+ d xmlXPtrEvalRangePredicate...
+ d pr extproc('xmlXPtrEvalRangePredicate')
+ d ctxt value like(xmlXPathParserContextPtr)
+
+ /endif LIBXML_XPTR_ENABLED
+ /endif XML_XPTR_H__
diff --git a/os400/make-bldcsndfa.sh b/os400/make-bldcsndfa.sh
new file mode 100644
index 0000000..57cf012
--- /dev/null
+++ b/os400/make-bldcsndfa.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Compilation script for the iconv names DFA builer.
+#
+# See Copyright for the status of this software.
+#
+# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+#
+
+SCRIPTDIR=`dirname "${0}"`
+. "${SCRIPTDIR}/initscript.sh"
+cd "${TOPDIR}/os400/iconv/bldcsndfa"
+
+
+# This is for old XML library (bootstrapping).
+#rm -rf xml.h xml
+#ln -s /QSYS.LIB/XML.LIB/H.FILE/XML.MBR xml.h
+#mkdir xml
+#mkdir xml/h
+#ln -s /QSYS.LIB/XML.LIB/H.FILE/UTF8.MBR xml/h/utf8
+
+
+# Compile.
+
+CMD="CRTCMOD MODULE(${TARGETLIB}/BLDCSNDFA) SRCSTMF('bldcsndfa.c')"
+CMD="${CMD} SYSIFCOPT(*IFS64IO) LANGLVL(*EXTENDED) LOCALETYPE(*LOCALE)"
+CMD="${CMD} INCDIR("
+CMD="${CMD} '${IFSDIR}/include' ${INCLUDES})"
+CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
+CMD="${CMD} OUTPUT(${OUTPUT})"
+CMD="${CMD} OPTIMIZE(10)"
+CMD="${CMD} DBGVIEW(${DEBUG})"
+#CMD="${CMD} DEFINE('OLDXML' 'xmlXPathSetContextNode=xmlXPathSetCurrentNode')"
+
+system "${CMD}"
+
+# Link
+
+CMD="CRTPGM PGM(${TARGETLIB}/BLDCSNDFA) MODULE(${TARGETLIB}/BLDCSNDFA)"
+CMD="${CMD} BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
+#CMD="${CMD} BNDDIR(XML/XML)"
+CMD="${CMD} TGTRLS(${TGTRLS})"
+system "${CMD}"
diff --git a/os400/make-include.sh b/os400/make-include.sh
new file mode 100644
index 0000000..4e5b058
--- /dev/null
+++ b/os400/make-include.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+#
+# Installation of the C header files in the OS/400 library.
+#
+# See Copyright for the status of this software.
+#
+# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+#
+
+SCRIPTDIR=`dirname "${0}"`
+. "${SCRIPTDIR}/initscript.sh"
+cd "${TOPDIR}/include"
+
+
+# Create the OS/400 source program file for the C header files.
+
+SRCPF="${LIBIFSNAME}/LIBXML.FILE"
+
+if action_needed "${SRCPF}"
+then CMD="CRTSRCPF FILE(${TARGETLIB}/LIBXML) RCDLEN(112)"
+ CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: C/C++ header files')"
+ system "${CMD}"
+fi
+
+
+# Create the IFS directory for the C header files.
+
+if action_needed "${IFSDIR}/include/libxml"
+then mkdir -p "${IFSDIR}/include/libxml"
+fi
+
+
+
+# Enumeration values may be used as va_arg tagfields, so they MUST be
+# integers.
+
+copy_hfile()
+
+{
+ sed -e '1i\
+#pragma enum(int)\
+' "${@}" -e '$a\
+#pragma enum(pop)\
+'
+}
+
+# Copy the header files to DB2 library. Link from IFS include directory.
+
+for HFILE in "${TOPDIR}/os400/transcode.h" libxml/*.h libxml/*.h.in
+do CMD="cat \"${HFILE}\""
+ DEST="${SRCPF}/`db2_name \"${HFILE}\" nomangle`.MBR"
+
+ case "`basename \"${HFILE}\"`" in
+
+ xmlwin32version.h*)
+ continue;; # Not on M$W !
+
+ *.in) CMD="${CMD} | versioned_copy";;
+
+ xmlschemastypes.h) # Special case: rename colliding file.
+ DEST="${SRCPF}/SCHMTYPES.MBR";;
+
+ esac
+
+ if action_needed "${DEST}" "${HFILE}"
+ then eval "${CMD}" | copy_hfile > tmphdrfile
+
+ # Need to translate to target CCSID.
+
+ CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DEST}')"
+ CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
+ system "${CMD}"
+ fi
+
+ IFSFILE="${IFSDIR}/include/libxml/`basename \"${HFILE}\" .in`"
+
+ if action_needed "${IFSFILE}" "${DEST}"
+ then rm -f "${IFSFILE}"
+ ln -s "${DEST}" "${IFSFILE}"
+ fi
+done
diff --git a/os400/make-rpg.sh b/os400/make-rpg.sh
new file mode 100644
index 0000000..95d3249
--- /dev/null
+++ b/os400/make-rpg.sh
@@ -0,0 +1,97 @@
+#!/bin/sh
+#
+# Installation of the ILE/RPG header files in the OS/400 library.
+#
+# See Copyright for the status of this software.
+#
+# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+#
+
+SCRIPTDIR=`dirname "${0}"`
+. "${SCRIPTDIR}/initscript.sh"
+cd "${TOPDIR}/os400/libxmlrpg"
+
+
+# Create the OS/400 source program file for the ILE/RPG header files.
+
+SRCPF="${LIBIFSNAME}/LIBXMLRPG.FILE"
+
+if action_needed "${SRCPF}"
+then CMD="CRTSRCPF FILE(${TARGETLIB}/LIBXMLRPG) RCDLEN(112)"
+ CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: ILE/RPG header files')"
+ system "${CMD}"
+fi
+
+
+# Map file names to DB2 name syntax.
+
+> tmpsubstfile
+
+for HFILE in *.rpgle *.rpgle.in
+do NAME="`basename \"${HFILE}\" .in`"
+ VAR="`basename \"${NAME}\" .rpgle`"
+ VAL="`db2_name \"${NAME}\" nomangle`"
+
+ if [ "${VAR}" = 'xmlschemastypes' ]
+ then VAL=SCHMTYPES
+ fi
+
+ echo "s/${VAR}/${VAL}/g" >> tmpsubstfile
+ eval "VAR_${VAR}=\"${VAL}\""
+done
+
+
+change_include()
+
+{
+ sed -e '\#^....../include *"libxmlrpg/#{' \
+ -e 's///' \
+ -e 's/".*//' \
+ -f tmpsubstfile \
+ -e 's#.*# /include libxmlrpg,&#' \
+ -e '}'
+}
+
+
+# Create the IFS directory for the ILE/RPG header files.
+
+RPGIFSDIR="${IFSDIR}/include/libxmlrpg"
+
+if action_needed "${RPGIFSDIR}"
+then mkdir -p "${RPGIFSDIR}"
+fi
+
+# Copy the header files to IFS ILE/RPG include directory.
+# Copy them with include path editing to the DB2 library.
+
+for HFILE in *.rpgle *.rpgle.in
+do IFSCMD="cat \"${HFILE}\""
+ DB2CMD="change_include < \"${HFILE}\""
+ IFSFILE="`basename \"${HFILE}\" .in`"
+
+ case "${HFILE}" in
+
+ *.in) IFSCMD="${IFSCMD} | versioned_copy"
+ DB2CMD="${DB2CMD} | versioned_copy"
+ ;;
+ esac
+
+ IFSDEST="${RPGIFSDIR}/${IFSFILE}"
+
+ if action_needed "${IFSDEST}" "${HFILE}"
+ then eval "${IFSCMD}" > "${IFSDEST}"
+ fi
+
+ eval DB2MBR="\"\${VAR_`basename \"${IFSDEST}\" .rpgle`}\""
+ DB2DEST="${SRCPF}/${DB2MBR}.MBR"
+
+ if action_needed "${DB2DEST}" "${HFILE}"
+ then eval "${DB2CMD}" | change_include > tmphdrfile
+
+ # Need to translate to target CCSID.
+
+ CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DB2DEST}')"
+ CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
+ system "${CMD}"
+ fi
+done
diff --git a/os400/make-src.sh b/os400/make-src.sh
new file mode 100644
index 0000000..f06cfaf
--- /dev/null
+++ b/os400/make-src.sh
@@ -0,0 +1,241 @@
+#!/bin/sh
+#
+# libxml compilation script for the OS/400.
+#
+# See Copyright for the status of this software.
+#
+# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+#
+
+SCRIPTDIR=`dirname "${0}"`
+. "${SCRIPTDIR}/initscript.sh"
+cd "${TOPDIR}"
+
+
+# Create and compile the identification source file.
+
+echo '#pragma comment(user, "libxml2 version '"${LIBXML_VERSION}"'")' > os400.c
+echo '#pragma comment(user, __DATE__)' >> os400.c
+echo '#pragma comment(user, __TIME__)' >> os400.c
+echo '#pragma comment(copyright, "Copyright (C) 1998-2014 Daniel Veillard. OS/400 version by P. Monnerat.")' >> os400.c
+make_module OS400 os400.c
+LINK= # No need to rebuild service program yet.
+MODULES=
+
+
+# Get source list.
+
+foldlines()
+
+{
+ sed -e ':begin' \
+ -e '/\\$/{' \
+ -e 's/\\$/ /' \
+ -e 'N' \
+ -e 'bbegin' \
+ -e '}' \
+ -e 's/\n//g' \
+ -e 's/[[:space:]]*$//'
+}
+
+
+get_make_var()
+
+{
+ foldlines < Makefile.am |
+ sed -e "/^${1}[[:space:]]*=[[:space:]]*/{" \
+ -e 's///' \
+ -e 'q' \
+ -e '}' \
+ -e 'd'
+}
+
+
+docb_sources=`get_make_var docb_sources`
+trio_sources=`get_make_var trio_sources`
+CSOURCES=`eval echo "\`get_make_var libxml2_la_SOURCES | tr '()' '{}'\`"`
+
+
+# Compile the sources into modules.
+
+INCLUDES="'`pwd`'"
+
+# OS/400 specific modules first.
+
+make_module DLFCN "${SCRIPTDIR}/dlfcn/dlfcn.c" '' ebcdic
+make_module ICONV "${SCRIPTDIR}/iconv/iconv.c" '' ebcdic
+make_module WRAPPERS "${SCRIPTDIR}/wrappers.c" '' ebcdic
+make_module TRANSCODE "${SCRIPTDIR}/transcode.c"
+make_module RPGSUPPORT "${SCRIPTDIR}/rpgsupport.c"
+
+# Regular libxml2 modules.
+
+for SRC in ${CSOURCES}
+do MODULE=`db2_name "${SRC}"`
+ make_module "${MODULE}" "${SRC}"
+done
+
+
+# If needed, (re)create the static binding directory.
+
+if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
+then LINK=YES
+fi
+
+if [ "${LINK}" ]
+then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
+ CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
+ CMD="${CMD} TEXT('libxml2 static binding directory')"
+ system "${CMD}"
+
+ for MODULE in ${MODULES}
+ do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
+ CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
+ system "${CMD}"
+ done
+fi
+
+
+# The exportation file for service program creation must be in a DB2
+# source file, so make sure it exists.
+
+if action_needed "${LIBIFSNAME}/TOOLS.FILE"
+then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
+ CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: build tools')"
+ system "${CMD}"
+fi
+
+
+# Generate all exported symbol table versions in a binding source file.
+
+BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
+PGMEXPS=
+
+OS400SYMS=`cat os400/transcode.h os400/rpgsupport.h |
+ sed -e 'H' \
+ -e 'g' \
+ -e 's/\n/ /' \
+ -e 's/\\$/ /' \
+ -e 's/.*/& /' \
+ -e 's/\/\*.*\*\// /g' \
+ -e 'h' \
+ -e ':loop' \
+ -e 'g' \
+ -e '/\/\*/d' \
+ -e '/;/!d' \
+ -e 's/[^;]*;//' \
+ -e 'x' \
+ -e 's/[[:space:]]*;.*$//' \
+ -e '/XMLPUBFUN/{' \
+ -e 's/[[:space:]]*(.*$//' \
+ -e 's/.*[[:space:]*]//' \
+ -e 'p' \
+ -e 'bloop' \
+ -e '}' \
+ -e '/XMLPUBVAR/!bloop' \
+ -e ':loop2' \
+ -e '/\[[^][]*\]/{' \
+ -e 's///' \
+ -e 'bloop2' \
+ -e '}' \
+ -e 's/[[:space:]]*,[[:space:]]*/,/g' \
+ -e 's/[^,]*[[:space:]*]//' \
+ -e 's/[^[:alnum:]_,]//g' \
+ -e 's/,/\n/g' \
+ -e 'p' \
+ -e 'bloop'`
+
+sed -e 's/#.*//' \
+ -e 's/[[:space:]]*$//' \
+ -e 's/^[[:space:]]*//' \
+ -e '/^*global:$/d' \
+ -e '/^$/d' \
+ -e '/[[:space:]]*{$/{' \
+ -e 's///' \
+ -e 'h' \
+ -e 's/[^A-Za-z0-9]/_/g' \
+ -e 's/^[0-9]/_&/' \
+ -e 'x' \
+ -e 'G' \
+ -e 's/\(.*\)\n\(.*\)/\2_SIGNATURE="\1"/' \
+ -e 'p' \
+ -e 's/.*//' \
+ -e 'x' \
+ -e "s/.*/SONAME='&'/" \
+ -e 'b' \
+ -e '}' \
+ -e '/[[:space:]]*;$/!d' \
+ -e 's///' \
+ -e '/^xmlDllMain$/d' \
+ -e '/^}[[:space:]]*/!{' \
+ -e 'H' \
+ -e 'd' \
+ -e '}' \
+ -e 's///' \
+ -e '/^$/!{' \
+ -e 's/[^A-Za-z0-9]/_/g' \
+ -e 's/^[0-9]/_&/' \
+ -e 's/.*/${&}/' \
+ -e 'x' \
+ -e 'H' \
+ -e 's/.*//' \
+ -e '}' \
+ -e 'x' \
+ -e 's/\n/ /g' \
+ -e 's/^[[:space:]]*//' \
+ -e 's/.*/declare ${SONAME}="&"/' \
+ -e 's/.*/&; PGMEXPS="${SONAME} ${PGMEXPS}"/' \
+ < "${TOPDIR}/libxml2.syms" > bndvars
+. ./bndvars
+
+PGMLVL=CURRENT
+for PGMEXP in ${PGMEXPS}
+do SIGNATURE=`echo "${PGMEXP}" | sed 's/^LIBXML2_//'`
+ eval ENTRIES=\"\${${PGMEXP}}\"
+ echo " STRPGMEXP PGMLVL(*${PGMLVL}) SIGNATURE('${SIGNATURE}')"
+ for ENTRY in ${ENTRIES} ${OS400SYMS}
+ do echo " EXPORT SYMBOL('${ENTRY}')"
+ done
+ echo ' ENDPGMEXP'
+ PGMLVL=PRV
+done > "${BSF}"
+
+
+# Build the service program if needed.
+
+if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
+then LINK=YES
+fi
+
+if [ "${LINK}" ]
+then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
+ CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
+ CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
+ CMD="${CMD} BNDDIR((${TARGETLIB}/${STATBNDDIR})"
+ if [ "${WITH_ZLIB}" -ne 0 ]
+ then CMD="${CMD} (${ZLIB_LIB}/${ZLIB_BNDDIR})"
+ fi
+ CMD="${CMD})"
+ CMD="${CMD} BNDSRVPGM(QADRTTS)"
+ CMD="${CMD} TEXT('libxml2 dynamic library')"
+ CMD="${CMD} TGTRLS(${TGTRLS})"
+ system "${CMD}"
+ LINK=YES
+fi
+
+
+# If needed, (re)create the dynamic binding directory.
+
+if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
+then LINK=YES
+fi
+
+if [ "${LINK}" ]
+then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
+ CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
+ CMD="${CMD} TEXT('libxml2 dynamic binding directory')"
+ system "${CMD}"
+ CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
+ CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
+ system "${CMD}"
+fi
diff --git a/os400/make.sh b/os400/make.sh
new file mode 100644
index 0000000..864e72b
--- /dev/null
+++ b/os400/make.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# libxml2 compilation script for the OS/400.
+# This is a shell script since make is not a standard component of OS/400.
+#
+# See Copyright for the status of this software.
+#
+# Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+#
+
+SCRIPTDIR=`dirname "${0}"`
+. "${SCRIPTDIR}/initscript.sh"
+cd "${TOPDIR}"
+
+
+# Create the OS/400 library if it does not exist.
+
+if action_needed "${LIBIFSNAME}"
+then CMD="CRTLIB LIB(${TARGETLIB})"
+ CMD="${CMD} TEXT('libxml2: XML parser and toolkit API')"
+ system "${CMD}"
+fi
+
+
+# Create the DOCS source file if it does not exist.
+
+if action_needed "${LIBIFSNAME}/DOCS.FILE"
+then CMD="CRTSRCPF FILE(${TARGETLIB}/DOCS) RCDLEN(112)"
+ CMD="${CMD} CCSID(${TGTCCSID}) TEXT('Documentation texts')"
+ system "${CMD}"
+fi
+
+
+# Copy some documentation files if needed.
+
+for TEXT in "${TOPDIR}/AUTHORS" "${TOPDIR}/ChangeLog" \
+ "${TOPDIR}/Copyright" "${TOPDIR}/HACKING" "${TOPDIR}/README" \
+ "${TOPDIR}/MAINTAINERS" "${TOPDIR}/NEWS" "${TOPDIR}/TODO" \
+ "${TOPDIR}/TODO_SCHEMAS" "${TOPDIR}/os400/README400"
+do if [ -f "${TEXT}" ]
+ then MEMBER="`basename \"${TEXT}\" .OS400`"
+ MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${MEMBER}\"`.MBR"
+
+ if action_needed "${MEMBER}" "${TEXT}"
+ then CMD="CPY OBJ('${TEXT}') TOOBJ('${MEMBER}')"
+ CMD="${CMD} TOCCSID(${TGTCCSID})"
+ CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)"
+ system "${CMD}"
+ fi
+ fi
+done
+
+
+# Build files from template.
+
+configFile()
+
+{
+ args=`set | sed -e '/^[A-Za-z_][A-Za-z0-9_]*=/!d' \
+ -e 's/[\/\\\\&]/\\\\&/g' \
+ -e "s/'/'\\\\\\''/g" \
+ -e 's/^\([^=]*\)=\(.*\)$/-e '\''s\/@\1@\/\2\/g'\'/`
+ eval sed ${args} < "${1}".in > "${1}"
+}
+
+configFile include/libxml/xmlversion.h
+configFile os400/os400config.h
+mv os400/os400config.h config.h
+
+
+# Build in each directory.
+
+for SUBDIR in include rpg src
+do "${SCRIPTDIR}/make-${SUBDIR}.sh"
+done
diff --git a/os400/os400config.h.in b/os400/os400config.h.in
new file mode 100644
index 0000000..3966ac8
--- /dev/null
+++ b/os400/os400config.h.in
@@ -0,0 +1,353 @@
+/**
+*** Configuration parameters for the OS/400 implementation.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+/* Define to 1 if you have the <ansidecl.h> header file. */
+#undef HAVE_ANSIDECL_H
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Whether struct sockaddr::__ss_family exists */
+#undef HAVE_BROKEN_SS_FAMILY
+
+/* Define to 1 if you have the `class' function. */
+#undef HAVE_CLASS
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1 /* Locally emulated. */
+
+/* Have dlopen based dso */
+#define HAVE_DLOPEN 1 /* Locally emulated. */
+
+/* Define to 1 if you have the <dl.h> header file. */
+#undef HAVE_DL_H
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `finite' function. */
+#undef HAVE_FINITE
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `fpclass' function. */
+#undef HAVE_FPCLASS
+
+/* Define to 1 if you have the `fprintf' function. */
+#undef HAVE_FPRINTF /* Use trio. */
+
+/* Define to 1 if you have the `fp_class' function. */
+#undef HAVE_FP_CLASS
+
+/* Define to 1 if you have the <fp_class.h> header file. */
+#undef HAVE_FP_CLASS_H
+
+/* Define to 1 if you have the `ftime' function. */
+#undef HAVE_FTIME
+
+/* Define if getaddrinfo is there */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#undef HAVE_IEEEFP_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isascii' function. */
+#define HAVE_ISASCII 1
+
+/* Define if isinf is there */
+#undef HAVE_ISINF
+
+/* Define if isnan is there */
+#undef HAVE_ISNAN
+
+/* Define to 1 if you have the `isnand' function. */
+#undef HAVE_ISNAND
+
+/* Define if history library is there (-lhistory) */
+#undef HAVE_LIBHISTORY
+
+/* Have compression library */
+#undef HAVE_LIBLZMA
+
+/* Define if pthread library is there (-lpthread) */
+#undef HAVE_LIBPTHREAD
+
+/* Define if readline library is there (-lreadline) */
+#undef HAVE_LIBREADLINE
+
+/* Have compression library */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the `localtime' function. */
+#define HAVE_LOCALTIME 1
+
+/* Define to 1 if you have the <lzma.h> header file. */
+#undef HAVE_LZMA_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <math.h> header file. */
+#define HAVE_MATH_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `munmap' function. */
+#undef HAVE_MUNMAP
+
+/* mmap() is no good without munmap() */
+#if defined(HAVE_MMAP) && !defined(HAVE_MUNMAP)
+# undef /**/ HAVE_MMAP
+#endif
+
+/* Define to 1 if you have the <nan.h> header file. */
+#undef HAVE_NAN_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <poll.h> header file. */
+#undef HAVE_POLL_H
+
+/* Define to 1 if you have the `printf' function. */
+#undef HAVE_PRINTF /* Use trio. */
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF /* Use trio. */
+
+/* Define if <pthread.h> is there */
+#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if you have the `rand_r' function. */
+#define HAVE_RAND_R 1
+
+/* Define to 1 if you have the <resolv.h> header file. */
+#define HAVE_RESOLV_H 1
+
+/* Have shl_load based dso */
+#undef HAVE_SHLLOAD
+
+/* Define to 1 if you have the `signal' function. */
+#undef HAVE_SIGNAL
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF /* Use trio. */
+
+/* Define to 1 if you have the `sprintf' function. */
+#undef HAVE_SPRINTF /* Use trio. */
+
+/* Define to 1 if you have the `srand' function. */
+#define HAVE_SRAND 1
+
+/* Define to 1 if you have the `scanf' function. */
+#undef HAVE_SCANF /* Use trio. */
+
+/* Define to 1 if you have the `fscanf' function. */
+#undef HAVE_FSCANF /* Use trio. */
+
+/* Define to 1 if you have the `sscanf' function. */
+#undef HAVE_SSCANF /* Use trio. */
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1 /* Overloaded */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strndup' function. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Whether va_copy() is available */
+#undef HAVE_VA_COPY
+
+/* Define to 1 if you have the `vfprintf' function. */
+#undef HAVE_VFPRINTF /* Use trio. */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF /* Use trio. */
+
+/* Define to 1 if you have the `vsprintf' function. */
+#undef HAVE_VSPRINTF /* Use trio. */
+
+/* Define to 1 if you have the <zlib.h> header file. */
+/* Actually dependent on the compilation script. */
+#if @WITH_ZLIB@
+#define HAVE_ZLIB_H 1
+#else
+#undef HAVE_ZLIB_H
+#endif
+
+/* Define to 1 if you have the `_stat' function. */
+#undef HAVE__STAT
+
+/* Whether __va_copy() is available */
+#undef HAVE___VA_COPY
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#define PACKAGE "libxml2"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Support for IPv6 */
+#define SUPPORT_IP6
+
+/* Version number of package */
+#define VERSION "@VERSION@"
+
+/* Determine what socket length (socklen_t) data type is */
+#define XML_SOCKLEN_T socklen_t
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Using the Win32 Socket implementation */
+#undef _WINSOCKAPI_
+
+/* ss_family is not defined here, use __ss_family instead */
+#undef ss_family
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Type cast for the send() function 2nd arg */
+#define SEND_ARG2_CAST (char *)
+
+/* Type cast for the gethostbyname() argument */
+#define GETHOSTBYNAME_ARG_CAST (char *)
+
+/* Define if va_list is an array type */
+#define VA_LIST_IS_ARRAY 1
diff --git a/os400/rpgsupport.c b/os400/rpgsupport.c
new file mode 100644
index 0000000..a3609c0
--- /dev/null
+++ b/os400/rpgsupport.c
@@ -0,0 +1,270 @@
+/**
+*** Additional procedures for ILE/RPG support.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <sys/types.h>
+
+#include <stdarg.h>
+
+#include "libxml/xmlmemory.h"
+#include "libxml/xpath.h"
+#include "libxml/parser.h"
+#include "libxml/HTMLparser.h"
+
+#include "rpgsupport.h"
+
+
+/**
+*** ILE/RPG cannot directly derefence a pointer and has no macros.
+*** The following additional procedures supply these functions.
+*** In addition, the following code is adjusted for threads control at
+*** compile time via the C macros.
+**/
+
+#define THREADED_VAR(name, type) \
+ type __get_##name(void) { return name; } \
+ void __set_##name(type arg) { name = arg; }
+
+
+THREADED_VAR(xmlFree, xmlFreeFunc)
+
+void
+__call_xmlFree(void * mem)
+
+{
+ xmlFree(mem);
+}
+
+
+THREADED_VAR(xmlMalloc, xmlMallocFunc)
+
+void *
+__call_xmlMalloc(size_t size)
+
+{
+ return xmlMalloc(size);
+}
+
+
+THREADED_VAR(xmlMallocAtomic, xmlMallocFunc)
+
+void *
+__call_xmlMallocAtomic(size_t size)
+
+{
+ return xmlMallocAtomic(size);
+}
+
+
+THREADED_VAR(xmlRealloc, xmlReallocFunc)
+
+void *
+__call_xmlRealloc(void * mem, size_t size)
+
+{
+ return xmlRealloc(mem, size);
+}
+
+
+THREADED_VAR(xmlMemStrdup, xmlStrdupFunc)
+
+char *
+__call_xmlMemStrdup(const char * str)
+
+{
+ return xmlMemStrdup(str);
+}
+
+
+#ifdef LIBXML_DOCB_ENABLED
+THREADED_VAR(docbDefaultSAXHandler, xmlSAXHandlerV1)
+#endif
+
+
+#ifdef LIBXML_HTML_ENABLED
+THREADED_VAR(htmlDefaultSAXHandler, xmlSAXHandlerV1)
+#endif
+
+
+THREADED_VAR(xmlLastError, xmlError)
+
+THREADED_VAR(oldXMLWDcompatibility, int)
+THREADED_VAR(xmlBufferAllocScheme, xmlBufferAllocationScheme)
+THREADED_VAR(xmlDefaultBufferSize, int)
+THREADED_VAR(xmlDefaultSAXHandler, xmlSAXHandlerV1)
+THREADED_VAR(xmlDefaultSAXLocator, xmlSAXLocator)
+THREADED_VAR(xmlDoValidityCheckingDefaultValue, int)
+
+/* No caller to xmlGenericError() because the argument list is unknown. */
+THREADED_VAR(xmlGenericError, xmlGenericErrorFunc)
+
+
+THREADED_VAR(xmlStructuredError, xmlStructuredErrorFunc)
+
+void
+__call_xmlStructuredError(void * userData, xmlErrorPtr error)
+
+{
+ xmlStructuredError(userData, error);
+}
+
+THREADED_VAR(xmlGenericErrorContext, void *)
+THREADED_VAR(xmlStructuredErrorContext, void *)
+THREADED_VAR(xmlGetWarningsDefaultValue, int)
+THREADED_VAR(xmlIndentTreeOutput, int)
+THREADED_VAR(xmlTreeIndentString, const char *)
+THREADED_VAR(xmlKeepBlanksDefaultValue, int)
+THREADED_VAR(xmlLineNumbersDefaultValue, int)
+THREADED_VAR(xmlLoadExtDtdDefaultValue, int)
+THREADED_VAR(xmlParserDebugEntities, int)
+THREADED_VAR(xmlParserVersion, const char *)
+THREADED_VAR(xmlPedanticParserDefaultValue, int)
+THREADED_VAR(xmlSaveNoEmptyTags, int)
+THREADED_VAR(xmlSubstituteEntitiesDefaultValue, int)
+
+
+THREADED_VAR(xmlRegisterNodeDefaultValue, xmlRegisterNodeFunc)
+
+void
+__call_xmlRegisterNodeDefaultValue(xmlNodePtr node)
+
+{
+ xmlRegisterNodeDefaultValue(node);
+}
+
+
+THREADED_VAR(xmlDeregisterNodeDefaultValue, xmlDeregisterNodeFunc)
+
+void
+__call_xmlDeregisterNodeDefaultValue(xmlNodePtr node)
+
+{
+ xmlDeregisterNodeDefaultValue(node);
+}
+
+
+THREADED_VAR(xmlParserInputBufferCreateFilenameValue, xmlParserInputBufferCreateFilenameFunc)
+
+xmlParserInputBufferPtr
+__call_xmlParserInputBufferCreateFilenameValue(const char *URI,
+ xmlCharEncoding enc)
+
+{
+ return xmlParserInputBufferCreateFilenameValue(URI, enc);
+}
+
+
+THREADED_VAR(xmlOutputBufferCreateFilenameValue, xmlOutputBufferCreateFilenameFunc)
+
+xmlOutputBufferPtr
+__call_xmlOutputBufferCreateFilenameValue(const char *URI,
+ xmlCharEncodingHandlerPtr encoder, int compression)
+
+{
+ return xmlOutputBufferCreateFilenameValue(URI, encoder, compression);
+}
+
+
+
+/**
+*** va_list support.
+**/
+
+void
+__xmlVaStart(char * * list, char * lastargaddr, size_t lastargsize)
+
+{
+ list[1] = lastargaddr + lastargsize;
+}
+
+
+void *
+__xmlVaArg(char * * list, void * dest, size_t argsize)
+
+{
+ size_t align;
+
+ if (!argsize)
+ return (void *) NULL;
+
+ for (align = 16; align > argsize; align >>= 1)
+ ;
+
+ align--;
+ list[0] = list[1] + (align - (((size_t) list[0] - 1) & align));
+ list[1] = list[0] + argsize;
+
+ if (dest)
+ memcpy(dest, list[0], argsize);
+
+ return (void *) list[0];
+}
+
+
+void
+__xmlVaEnd(char * * list)
+
+{
+ /* Nothing to do. */
+}
+
+
+#ifdef LIBXML_XPATH_ENABLED
+
+int
+__xmlXPathNodeSetGetLength(const xmlNodeSet * ns)
+
+{
+ return xmlXPathNodeSetGetLength(ns);
+}
+
+
+xmlNodePtr
+__xmlXPathNodeSetItem(const xmlNodeSet * ns, int index)
+
+{
+ return xmlXPathNodeSetItem(ns, index);
+}
+
+
+int
+__xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns)
+
+{
+ return xmlXPathNodeSetIsEmpty(ns);
+}
+
+#endif
+
+
+#ifdef LIBXML_HTML_ENABLED
+
+const char *
+__htmlDefaultSubelement(const htmlElemDesc * elt)
+
+{
+ return htmlDefaultSubelement(elt);
+}
+
+
+int
+__htmlElementAllowedHereDesc(const htmlElemDesc * parent,
+ const htmlElemDesc * elt)
+
+{
+ return htmlElementAllowedHereDesc(parent, elt);
+}
+
+
+const char * *
+__htmlRequiredAttrs(const htmlElemDesc * elt)
+
+{
+ return htmlRequiredAttrs(elt);
+}
+
+#endif
diff --git a/os400/rpgsupport.h b/os400/rpgsupport.h
new file mode 100644
index 0000000..6725b59
--- /dev/null
+++ b/os400/rpgsupport.h
@@ -0,0 +1,157 @@
+/**
+*** Additional delarations for ILE/RPG support.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#ifndef __RPGSUPPORT_H__
+#define __RPGSUPPORT_H__
+
+#include <sys/types.h>
+
+#include <libxml/xmlmemory.h>
+#include <libxml/xpath.h>
+#include "libxml/HTMLparser.h"
+
+
+XMLPUBFUN xmlFreeFunc __get_xmlFree(void);
+XMLPUBFUN void __set_xmlFree(xmlFreeFunc freefunc);
+XMLPUBFUN void __call_xmlFree(void * mem);
+XMLPUBFUN xmlMallocFunc __get_xmlMalloc(void);
+XMLPUBFUN void __set_xmlMalloc(xmlMallocFunc allocfunc);
+XMLPUBFUN void * __call_xmlMalloc(size_t size);
+XMLPUBFUN xmlMallocFunc __get_xmlMallocAtomic(void);
+XMLPUBFUN void __set_xmlMallocAtomic(xmlMallocFunc allocfunc);
+XMLPUBFUN void * __call_xmlMallocAtomic(size_t size);
+XMLPUBFUN xmlReallocFunc __get_xmlRealloc(void);
+XMLPUBFUN void __set_xmlRealloc(xmlReallocFunc reallocfunc);
+XMLPUBFUN void * __call_xmlRealloc(void * mem, size_t size);
+XMLPUBFUN xmlStrdupFunc __get_xmlMemStrdup(void);
+XMLPUBFUN void __set_xmlMemStrdup(xmlStrdupFunc strdupfunc);
+XMLPUBFUN char * __call_xmlMemStrdup(const char * str);
+
+#ifdef LIBXML_DOCB_ENABLED
+XMLPUBFUN xmlSAXHandlerV1 __get_docbDefaultSAXHandler(void);
+XMLPUBFUN void __set_docbDefaultSAXHandler(xmlSAXHandlerV1 hdlr);
+#endif
+
+#ifdef LIBXML_HTML_ENABLED
+XMLPUBFUN xmlSAXHandlerV1 __get_htmlDefaultSAXHandler(void);
+XMLPUBFUN void __set_htmlDefaultSAXHandler(xmlSAXHandlerV1 hdlr);
+#endif
+
+XMLPUBFUN xmlError __get_xmlLastError(void);
+XMLPUBFUN void __set_xmlLastError(xmlError err);
+
+XMLPUBFUN int __get_oldXMLWDcompatibility(void);
+XMLPUBFUN void __set_oldXMLWDcompatibility(int val);
+
+XMLPUBFUN xmlBufferAllocationScheme __get_xmlBufferAllocScheme(void);
+XMLPUBFUN void __set_xmlBufferAllocScheme(xmlBufferAllocationScheme val);
+
+XMLPUBFUN int __get_xmlDefaultBufferSize(void);
+XMLPUBFUN void __set_xmlDefaultBufferSize(int val);
+
+XMLPUBFUN xmlSAXHandlerV1 __get_xmlDefaultSAXHandler(void);
+XMLPUBFUN void __set_xmlDefaultSAXHandler(xmlSAXHandlerV1 val);
+
+XMLPUBFUN xmlSAXLocator __get_xmlDefaultSAXLocator(void);
+XMLPUBFUN void __set_xmlDefaultSAXLocator(xmlSAXLocator val);
+
+XMLPUBFUN int __get_xmlDoValidityCheckingDefaultValue(void);
+XMLPUBFUN void __set_xmlDoValidityCheckingDefaultValue(int val);
+
+XMLPUBFUN xmlGenericErrorFunc __get_xmlGenericError(void);
+XMLPUBFUN void __set_xmlGenericError(xmlGenericErrorFunc val);
+
+XMLPUBFUN xmlStructuredErrorFunc __get_xmlStructuredError(void);
+XMLPUBFUN void __set_xmlStructuredError(xmlStructuredErrorFunc val);
+XMLPUBFUN void __call_xmlStructuredError(void *userData, xmlErrorPtr error);
+
+XMLPUBFUN void * __get_xmlGenericErrorContext(void);
+XMLPUBFUN void __set_xmlGenericErrorContext(void * val);
+
+XMLPUBFUN void * __get_xmlStructuredErrorContext(void);
+XMLPUBFUN void __set_xmlStructuredErrorContext(void * val);
+
+XMLPUBFUN int __get_xmlGetWarningsDefaultValue(void);
+XMLPUBFUN void __set_xmlGetWarningsDefaultValue(int val);
+
+XMLPUBFUN int __get_xmlIndentTreeOutput(void);
+XMLPUBFUN void __set_xmlIndentTreeOutput(int val);
+
+XMLPUBFUN const char * __get_xmlTreeIndentString(void);
+XMLPUBFUN void __set_xmlTreeIndentString(const char * val);
+
+XMLPUBFUN int __get_xmlKeepBlanksDefaultValue(void);
+XMLPUBFUN void __set_xmlKeepBlanksDefaultValue(int val);
+
+XMLPUBFUN int __get_xmlLineNumbersDefaultValue(void);
+XMLPUBFUN void __set_xmlLineNumbersDefaultValue(int val);
+
+XMLPUBFUN int __get_xmlLoadExtDtdDefaultValue(void);
+XMLPUBFUN void __set_xmlLoadExtDtdDefaultValue(int val);
+
+XMLPUBFUN int __get_xmlParserDebugEntities(void);
+XMLPUBFUN void __set_xmlParserDebugEntities(int val);
+
+XMLPUBFUN const char * __get_xmlParserVersion(void);
+XMLPUBFUN void __set_xmlParserVersion(const char * val);
+
+XMLPUBFUN int __get_xmlPedanticParserDefaultValue(void);
+XMLPUBFUN void __set_xmlPedanticParserDefaultValue(int val);
+
+XMLPUBFUN int __get_xmlSaveNoEmptyTags(void);
+XMLPUBFUN void __set_xmlSaveNoEmptyTags(int val);
+
+XMLPUBFUN int __get_xmlSubstituteEntitiesDefaultValue(void);
+XMLPUBFUN void __set_xmlSubstituteEntitiesDefaultValue(int val);
+
+XMLPUBFUN xmlRegisterNodeFunc __get_xmlRegisterNodeDefaultValue(void);
+XMLPUBFUN void __set_xmlRegisterNodeDefaultValue(xmlRegisterNodeFunc val);
+XMLPUBFUN void __call_xmlRegisterNodeDefaultValue(xmlNodePtr node);
+
+XMLPUBFUN xmlDeregisterNodeFunc __get_xmlDeregisterNodeDefaultValue(void);
+XMLPUBFUN void __set_xmlDeregisterNodeDefaultValue(xmlDeregisterNodeFunc val);
+XMLPUBFUN void __call_xmlDeregisterNodeDefaultValue(xmlNodePtr node);
+
+XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
+ __get_xmlParserInputBufferCreateFilenameValue(void);
+XMLPUBFUN void __set_xmlParserInputBufferCreateFilenameValue(
+ xmlParserInputBufferCreateFilenameFunc val);
+XMLPUBFUN xmlParserInputBufferPtr
+ __call_xmlParserInputBufferCreateFilenameValue(const char *URI,
+ xmlCharEncoding enc);
+
+XMLPUBFUN xmlOutputBufferCreateFilenameFunc
+ __get_xmlOutputBufferCreateFilenameValue(void);
+XMLPUBFUN void __set_xmlOutputBufferCreateFilenameValue(
+ xmlOutputBufferCreateFilenameFunc val);
+XMLPUBFUN xmlOutputBufferPtr
+ __call_xmlOutputBufferCreateFilenameValue(const char *URI,
+ xmlCharEncodingHandlerPtr encoder,
+ int compression);
+
+
+XMLPUBFUN void __xmlVaStart(char * * list,
+ char * lastargaddr, size_t lastargsize);
+XMLPUBFUN void * __xmlVaArg(char * * list, void * dest, size_t argsize);
+XMLPUBFUN void __xmlVaEnd(char * * list);
+
+#ifdef LIBXML_XPATH_ENABLED
+XMLPUBFUN int __xmlXPathNodeSetGetLength(xmlNodeSetPtr ns);
+XMLPUBFUN xmlNodePtr __xmlXPathNodeSetItem(xmlNodeSetPtr ns, int index);
+XMLPUBFUN int __xmlXPathNodeSetIsEmpty(xmlNodeSetPtr ns);
+#endif
+
+#ifdef LIBXML_HTML_ENABLED
+XMLPUBFUN const char * __htmlDefaultSubelement(const htmlElemDesc * elt);
+XMLPUBFUN int __htmlElementAllowedHereDesc(const htmlElemDesc * parent,
+ const htmlElemDesc * elt);
+XMLPUBFUN const char * *
+ __htmlRequiredAttrs(const htmlElemDesc * elt);
+#endif
+
+#endif
diff --git a/os400/transcode.c b/os400/transcode.c
new file mode 100644
index 0000000..bae6187
--- /dev/null
+++ b/os400/transcode.c
@@ -0,0 +1,268 @@
+/**
+*** Transcoding support and wrappers.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#define IN_LIBXML
+#include "libxml.h"
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "libxml/xmlmemory.h"
+#include "libxml/dict.h"
+#include "transcode.h"
+
+
+/**
+*** Destroy a dictionary and mark as destroyed.
+**/
+
+void
+xmlZapDict(xmlDictPtr * dict)
+
+{
+ if (dict && *dict) {
+ xmlDictFree(*dict);
+ *dict = (xmlDictPtr) NULL;
+ }
+}
+
+
+/**
+*** Support for inline conversion from/to UTF-8.
+*** This is targetted to function parameter encoding conversion.
+*** Method is:
+*** - Convert string from/to UTF-8.
+*** - Keep it in a dictionary.
+*** - Free original string if a release procedure is provided.
+*** Can also be called without dictionary to convert a string from/to UTF-8
+*** into xmlMalloc'ed dynamic storage.
+**/
+
+const char *
+xmlTranscodeResult(const xmlChar * s, const char * encoding,
+ xmlDictPtr * dict, void (*freeproc)(const void *))
+
+{
+ size_t l;
+ iconv_t cd;
+ char * srcp;
+ char * dstp;
+ size_t srcc;
+ size_t dstc;
+ char * ts;
+ const char * ret;
+ int err;
+ static const int nullstring[] = { 0 };
+
+ /* Convert from UTF-8. */
+
+ if (!s)
+ return (const char *) NULL;
+
+ ret = (const char *) NULL;
+ ts = (char *) NULL;
+ err = 0;
+ l = xmlStrlen(s);
+
+ if (!l && dict)
+ ret = (const char *) nullstring;
+ else {
+ if (dict && !*dict)
+ err = !(*dict = xmlDictCreate());
+
+ if (!err)
+ err = !(ts = xmlMalloc(4 * l + 4));
+
+ dstp = ts;
+ dstc = 4 * l;
+
+ if (!err && l) {
+ if (!encoding)
+ encoding = "ibm-0"; /* Job's encoding. */
+
+ cd = iconv_open(encoding, "UTF-8");
+
+ if (cd == (iconv_t) -1)
+ err = 1;
+ else {
+ srcp = (char *) s;
+ srcc = l;
+ srcc = iconv(cd, &srcp, &srcc, &dstp, &dstc);
+ iconv_close(cd);
+ err = srcc == (size_t) -1;
+ }
+ }
+
+ if (!err) {
+ dstp[0] = dstp[1] = dstp[2] = dstp[3] = '\0';
+
+ if (!dict) {
+ if (dstc)
+ ts = xmlRealloc(ts, (dstp - ts) + 4);
+
+ ret = (const char *) ts;
+ ts = (char *) NULL;
+ }
+ else
+ ret = (char *) xmlDictLookup(*dict,
+ (xmlChar *) ts, dstp - ts + 1);
+ }
+ }
+
+ if (ts)
+ xmlFree(ts);
+
+ if (freeproc)
+ (*freeproc)(s);
+
+ return ret;
+}
+
+
+/**
+*** Support for inline conversion to UTF-8.
+*** Method is:
+*** - Convert string to UTF-8.
+*** - Keep it in a dictionary.
+*** Can also be called without dictionary to convert a string to UTF-8 into
+*** xmlMalloc'ed dynamic storage.
+**/
+
+static const xmlChar *
+inTranscode(const char * s, size_t l, const char * encoding, xmlDictPtr * dict)
+
+{
+ iconv_t cd;
+ char * srcp;
+ char * dstp;
+ size_t srcc;
+ size_t dstc;
+ xmlChar * ts;
+ const xmlChar * ret;
+ static const xmlChar nullstring[] = { 0 };
+
+ if (!l && dict)
+ return nullstring;
+
+ if (dict && !*dict)
+ if (!(*dict = xmlDictCreate()))
+ return (const xmlChar *) NULL;
+
+ ts = (xmlChar *) xmlMalloc(6 * l + 1);
+
+ if (!ts)
+ return (const xmlChar *) NULL;
+
+ dstp = (char *) ts;
+ dstc = 6 * l;
+
+ if (l) {
+ if (!encoding)
+ encoding = "ibm-0"; /* Use job's encoding. */
+
+ cd = iconv_open("UTF-8", encoding);
+
+ if (cd == (iconv_t) -1) {
+ xmlFree((char *) ts);
+ return (const xmlChar *) NULL;
+ }
+
+ srcp = (char *) s;
+ srcc = l;
+ srcc = iconv(cd, &srcp, &srcc, &dstp, &dstc);
+ iconv_close(cd);
+
+ if (srcc == (size_t) -1) {
+ xmlFree((char *) ts);
+ return (const xmlChar *) NULL;
+ }
+ }
+
+ *dstp = '\0';
+
+ if (!dict) {
+ if (dstc)
+ ts = xmlRealloc(ts, (dstp - ts) + 1);
+
+ return ts;
+ }
+
+ ret = xmlDictLookup(*dict, ts, dstp - ts + 1);
+ xmlFree((char *) ts);
+ return ret;
+}
+
+
+/**
+*** Input 8-bit character string parameter.
+**/
+
+const xmlChar *
+xmlTranscodeString(const char * s, const char * encoding, xmlDictPtr * dict)
+
+{
+ if (!s)
+ return (const xmlChar *) NULL;
+
+ return inTranscode(s, xmlStrlen(s), encoding, dict);
+}
+
+
+/**
+*** Input 16-bit character string parameter.
+**/
+
+const xmlChar *
+xmlTranscodeWString(const char * s, const char * encoding, xmlDictPtr * dict)
+
+{
+ size_t i;
+
+ if (!s)
+ return (const xmlChar *) NULL;
+
+ for (i = 0; s[i] && s[i + 1]; i += 2)
+ ;
+
+ return inTranscode(s, i, encoding, dict);
+}
+
+
+/**
+*** Input 32-bit character string parameter.
+**/
+
+const xmlChar *
+xmlTranscodeHString(const char * s, const char * encoding, xmlDictPtr * dict)
+
+{
+ size_t i;
+
+ if (!s)
+ return (const xmlChar *) NULL;
+
+ for (i = 0; s[i] && s[i + 1] && s[i + 2] && s[i + 3]; i += 4)
+ ;
+
+ return inTranscode(s, i, encoding, dict);
+}
+
+
+/**
+*** vasprintf() implementation with result transcoding.
+**/
+
+const char *
+xmlVasprintf(xmlDictPtr * dict, const char * encoding,
+ const xmlChar * fmt, va_list args)
+
+{
+ char * s = NULL;
+
+ vasprintf(&s, fmt, args);
+ return xmlTranscodeResult((const xmlChar *) s, encoding, dict, free);
+}
diff --git a/os400/transcode.h b/os400/transcode.h
new file mode 100644
index 0000000..6ca5773
--- /dev/null
+++ b/os400/transcode.h
@@ -0,0 +1,43 @@
+/**
+*** Transcoding support declarations.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#ifndef _TRANSCODE_H_
+#define _TRANSCODE_H_
+
+#include <stdarg.h>
+#include <libxml/dict.h>
+
+
+XMLPUBFUN void xmlZapDict(xmlDictPtr * dict);
+XMLPUBFUN const char * xmlTranscodeResult(const xmlChar * s,
+ const char * encoding, xmlDictPtr * dict,
+ void (*freeproc)(const void *));
+XMLPUBFUN const xmlChar * xmlTranscodeString(const char * s,
+ const char * encoding, xmlDictPtr * dict);
+XMLPUBFUN const xmlChar * xmlTranscodeWString(const char * s,
+ const char * encoding, xmlDictPtr * dict);
+XMLPUBFUN const xmlChar * xmlTranscodeHString(const char * s,
+ const char * encoding, xmlDictPtr * dict);
+
+#ifndef XML_NO_SHORT_NAMES
+/**
+*** Since the above functions are generally called "inline" (i.e.: several
+*** times nested in a single expression), define shorthand names
+*** to minimize calling statement length.
+**/
+
+#define xmlTR xmlTranscodeResult
+#define xmlTS xmlTranscodeString
+#define xmlTW xmlTranscodeWString
+#define xmlTH xmlTranscodeHstring
+#endif
+
+XMLPUBFUN const char * xmlVasprintf(xmlDictPtr * dict, const char * encoding,
+ const xmlChar * fmt, va_list args);
+
+#endif
diff --git a/os400/wrappers.c b/os400/wrappers.c
new file mode 100644
index 0000000..9f592b7
--- /dev/null
+++ b/os400/wrappers.c
@@ -0,0 +1,170 @@
+/**
+*** UTF-8/EBCDIC wrappers to system and C library procedures.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+#include <netdb.h>
+#include <errno.h>
+
+#include "config.h"
+
+#include "libxml/xmlmemory.h"
+
+#include "transcode.h"
+
+
+static const char * lxdles = NULL;
+
+
+int
+_lx_getaddrinfo(const char * node, const char * service,
+ const struct addrinfo * hints, struct addrinfo * * res)
+
+{
+ xmlDictPtr d = NULL;
+ int i;
+
+ i = getaddrinfo(xmlTranscodeResult(node, NULL, &d, NULL),
+ xmlTranscodeResult(service, NULL, &d, NULL), hints, res);
+ xmlZapDict(&d);
+ return i;
+}
+
+
+const char *
+_lx_inet_ntop(int af, const void * src, char * dst, socklen_t size)
+
+{
+ const char * cp1 = inet_ntop(af, src, dst, size);
+ char const * cp2;
+ int i;
+
+ if (!cp1)
+ return cp1;
+
+ if (!(cp2 = xmlTranscodeString(cp1, NULL, NULL)))
+ return cp2;
+
+ i = strlen(cp2);
+
+ if (i >= size) {
+ xmlFree((char *) cp2);
+ errno = ENOSPC;
+ return (const char *) NULL;
+ }
+
+ memcpy(dst, cp2, i + 1);
+ xmlFree((char *) cp2);
+ return dst;
+}
+
+
+void *
+_lx_dlopen(const char * filename, int flag)
+
+{
+ xmlDictPtr d = NULL;
+ void * result;
+
+ result = dlopen(xmlTranscodeResult(filename, NULL, &d, NULL), flag);
+ xmlZapDict(&d);
+ return result;
+}
+
+
+void *
+_lx_dlsym(void * handle, const char * symbol)
+
+{
+ xmlDictPtr d = NULL;
+ void * result;
+
+ result = dlsym(handle, xmlTranscodeResult(symbol, NULL, &d, NULL));
+ xmlZapDict(&d);
+ return result;
+}
+
+
+char *
+_lx_dlerror(void)
+
+{
+ char * cp1 = (char *) dlerror();
+
+ if (!cp1)
+ return cp1;
+
+ if (lxdles)
+ xmlFree((char *) lxdles);
+
+ lxdles = (const char *) xmlTranscodeString(cp1, NULL, NULL);
+ return (char *) lxdles;
+}
+
+
+#ifdef HAVE_ZLIB_H
+#include <zlib.h>
+
+gzFile
+_lx_gzopen(const char * path, const char * mode)
+
+{
+ xmlDictPtr d = NULL;
+ gzFile f;
+
+ f = gzopen(xmlTranscodeResult(path, NULL, &d, NULL),
+ xmlTranscodeResult(mode, NULL, &d, NULL));
+ xmlZapDict(&d);
+ return f;
+}
+
+
+gzFile
+_lx_gzdopen(int fd, const char * mode)
+
+{
+ xmlDictPtr d = NULL;
+ gzFile f;
+
+ f = gzdopen(fd, xmlTranscodeResult(mode, NULL, &d, NULL));
+ xmlZapDict(&d);
+ return f;
+}
+
+int
+_lx_inflateInit2_(z_streamp strm, int windowBits,
+ const char * version, int stream_size)
+
+{
+ xmlDictPtr d = NULL;
+ int r;
+
+ r = inflateInit2_(strm, windowBits,
+ xmlTranscodeResult(version, NULL, &d, NULL), stream_size);
+ xmlZapDict(&d);
+ return r;
+}
+
+int
+_lx_deflateInit2_(z_streamp strm, int level, int method, int windowBits,
+ int memLevel, int strategy, const char * version, int stream_size)
+
+{
+ xmlDictPtr d = NULL;
+ int r;
+
+ r = deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
+ xmlTranscodeResult(version, NULL, &d, NULL), stream_size);
+ xmlZapDict(&d);
+ return r;
+}
+
+#endif
diff --git a/os400/wrappers.h b/os400/wrappers.h
new file mode 100644
index 0000000..388ec8c
--- /dev/null
+++ b/os400/wrappers.h
@@ -0,0 +1,70 @@
+/**
+*** Replace system/C library calls by EBCDIC wrappers.
+*** This is a layer inserted between libxml2 itself and the EBCDIC
+*** environment.
+***
+*** See Copyright for the status of this software.
+***
+*** Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#ifndef __WRAPPERS_H_
+#define __WRAPPERS_H_
+
+/**
+*** OS/400 specific defines.
+**/
+
+#define __cplusplus__strings__
+
+/**
+*** Force header inclusions before renaming procedures to UTF-8 wrappers.
+**/
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include "dlfcn.h"
+
+
+/**
+*** UTF-8 wrappers prototypes.
+**/
+
+extern int _lx_getaddrinfo(const char * node, const char * service,
+ const struct addrinfo * hints, struct addrinfo * * res);
+extern const char *
+ _lx_inet_ntop(int af,
+ const void * src, char * dst, socklen_t size);
+extern void * _lx_dlopen(const char * filename, int flag);
+extern void * _lx_dlsym(void * handle, const char * symbol);
+extern char * _lx_dlerror(void);
+
+
+#ifdef HAVE_ZLIB_H
+
+#include <zlib.h>
+
+extern gzFile _lx_gzopen(const char * path, const char * mode);
+extern gzFile _lx_gzdopen(int fd, const char * mode);
+
+#endif
+
+
+/**
+*** Rename data/procedures to UTF-8 wrappers.
+**/
+
+#define getaddrinfo _lx_getaddrinfo
+#define inet_ntop _lx_inet_ntop
+#define dlopen _lx_dlopen
+#define dlsym _lx_dlsym
+#define dlerror _lx_dlerror
+#define gzopen _lx_gzopen
+#define gzdopen _lx_gzdopen
+#define inflateInit2_ _lx_inflateInit2_
+#define deflateInit2_ _lx_deflateInit2_
+
+#endif
diff --git a/parser.c b/parser.c
index 2c38fae..1d93967 100644
--- a/parser.c
+++ b/parser.c
@@ -17,7 +17,7 @@
* parserInternals.c to reduce this file size.
* As much as possible the functions are associated with their relative
* production in the XML specification. A few productions defining the
- * different ranges of character are actually implanted either in
+ * different ranges of character are actually implanted either in
* parserInternals.h or parserInternals.c
* The DOM tree build is realized from the default SAX callbacks in
* the module SAX.c.
@@ -40,6 +40,7 @@
#endif
#include <stdlib.h>
+#include <limits.h>
#include <string.h>
#include <stdarg.h>
#include <libxml/xmlmemory.h>
@@ -83,6 +84,9 @@
#include <lzma.h>
#endif
+#include "buf.h"
+#include "enc.h"
+
static void
xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info);
@@ -117,16 +121,56 @@ xmlCreateEntityParserCtxtInternal(const xmlChar *URL, const xmlChar *ID,
* parser option.
*/
static int
-xmlParserEntityCheck(xmlParserCtxtPtr ctxt, unsigned long size,
- xmlEntityPtr ent)
+xmlParserEntityCheck(xmlParserCtxtPtr ctxt, size_t size,
+ xmlEntityPtr ent, size_t replacement)
{
- unsigned long consumed = 0;
+ size_t consumed = 0;
if ((ctxt == NULL) || (ctxt->options & XML_PARSE_HUGE))
return (0);
if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP)
return (1);
- if (size != 0) {
+
+ /*
+ * This may look absurd but is needed to detect
+ * entities problems
+ */
+ if ((ent != NULL) && (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) &&
+ (ent->content != NULL) && (ent->checked == 0)) {
+ unsigned long oldnbent = ctxt->nbentities;
+ xmlChar *rep;
+
+ ent->checked = 1;
+
+ rep = xmlStringDecodeEntities(ctxt, ent->content,
+ XML_SUBSTITUTE_REF, 0, 0, 0);
+
+ ent->checked = (ctxt->nbentities - oldnbent + 1) * 2;
+ if (rep != NULL) {
+ if (xmlStrchr(rep, '<'))
+ ent->checked |= 1;
+ xmlFree(rep);
+ rep = NULL;
+ }
+ }
+ if (replacement != 0) {
+ if (replacement < XML_MAX_TEXT_LENGTH)
+ return(0);
+
+ /*
+ * If the volume of entity copy reaches 10 times the
+ * amount of parsed data and over the large text threshold
+ * then that's very likely to be an abuse.
+ */
+ if (ctxt->input != NULL) {
+ consumed = ctxt->input->consumed +
+ (ctxt->input->cur - ctxt->input->base);
+ }
+ consumed += ctxt->sizeentities;
+
+ if (replacement < XML_PARSER_NON_LINEAR * consumed)
+ return(0);
+ } else if (size != 0) {
/*
* Do the check based on the replacement size of the entity
*/
@@ -149,7 +193,7 @@ xmlParserEntityCheck(xmlParserCtxtPtr ctxt, unsigned long size,
/*
* use the number of parsed entities in the replacement
*/
- size = ent->checked;
+ size = ent->checked / 2;
/*
* The amount of data parsed counting entities size only once
@@ -168,11 +212,13 @@ xmlParserEntityCheck(xmlParserCtxtPtr ctxt, unsigned long size,
return (0);
} else {
/*
- * strange we got no data for checking just return
+ * strange we got no data for checking
*/
- return (0);
+ if (((ctxt->lastError.code != XML_ERR_UNDECLARED_ENTITY) &&
+ (ctxt->lastError.code != XML_WAR_UNDECLARED_ENTITY)) ||
+ (ctxt->nbentities <= 10000))
+ return (0);
}
-
xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
return (1);
}
@@ -194,6 +240,17 @@ unsigned int xmlParserMaxDepth = 256;
#define XML_PARSER_BUFFER_SIZE 100
#define SAX_COMPAT_MODE BAD_CAST "SAX compatibility mode document"
+/**
+ * XML_PARSER_CHUNK_SIZE
+ *
+ * When calling GROW that's the minimal amount of data
+ * the parser expected to have received. It is not a hard
+ * limit but an optimization when reading strings like Names
+ * It is not strictly needed as long as inputs available characters
+ * are followed by 0, which should be provided by the I/O level
+ */
+#define XML_PARSER_CHUNK_SIZE 100
+
/*
* List of XML prefixed PI allowed by W3C specs
*/
@@ -233,7 +290,7 @@ xmlLoadEntityContent(xmlParserCtxtPtr ctxt, xmlEntityPtr entity);
/************************************************************************
* *
- * Some factorized error routines *
+ * Some factorized error routines *
* *
************************************************************************/
@@ -285,193 +342,201 @@ static void
xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info)
{
const char *errmsg;
+ char errstr[129] = "";
if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
(ctxt->instate == XML_PARSER_EOF))
return;
switch (error) {
case XML_ERR_INVALID_HEX_CHARREF:
- errmsg = "CharRef: invalid hexadecimal value\n";
+ errmsg = "CharRef: invalid hexadecimal value";
break;
case XML_ERR_INVALID_DEC_CHARREF:
- errmsg = "CharRef: invalid decimal value\n";
+ errmsg = "CharRef: invalid decimal value";
break;
case XML_ERR_INVALID_CHARREF:
- errmsg = "CharRef: invalid value\n";
+ errmsg = "CharRef: invalid value";
break;
case XML_ERR_INTERNAL_ERROR:
errmsg = "internal error";
break;
case XML_ERR_PEREF_AT_EOF:
- errmsg = "PEReference at end of document\n";
+ errmsg = "PEReference at end of document";
break;
case XML_ERR_PEREF_IN_PROLOG:
- errmsg = "PEReference in prolog\n";
+ errmsg = "PEReference in prolog";
break;
case XML_ERR_PEREF_IN_EPILOG:
- errmsg = "PEReference in epilog\n";
+ errmsg = "PEReference in epilog";
break;
case XML_ERR_PEREF_NO_NAME:
- errmsg = "PEReference: no name\n";
+ errmsg = "PEReference: no name";
break;
case XML_ERR_PEREF_SEMICOL_MISSING:
- errmsg = "PEReference: expecting ';'\n";
+ errmsg = "PEReference: expecting ';'";
break;
case XML_ERR_ENTITY_LOOP:
- errmsg = "Detected an entity reference loop\n";
+ errmsg = "Detected an entity reference loop";
break;
case XML_ERR_ENTITY_NOT_STARTED:
- errmsg = "EntityValue: \" or ' expected\n";
+ errmsg = "EntityValue: \" or ' expected";
break;
case XML_ERR_ENTITY_PE_INTERNAL:
- errmsg = "PEReferences forbidden in internal subset\n";
+ errmsg = "PEReferences forbidden in internal subset";
break;
case XML_ERR_ENTITY_NOT_FINISHED:
- errmsg = "EntityValue: \" or ' expected\n";
+ errmsg = "EntityValue: \" or ' expected";
break;
case XML_ERR_ATTRIBUTE_NOT_STARTED:
- errmsg = "AttValue: \" or ' expected\n";
+ errmsg = "AttValue: \" or ' expected";
break;
case XML_ERR_LT_IN_ATTRIBUTE:
- errmsg = "Unescaped '<' not allowed in attributes values\n";
+ errmsg = "Unescaped '<' not allowed in attributes values";
break;
case XML_ERR_LITERAL_NOT_STARTED:
- errmsg = "SystemLiteral \" or ' expected\n";
+ errmsg = "SystemLiteral \" or ' expected";
break;
case XML_ERR_LITERAL_NOT_FINISHED:
- errmsg = "Unfinished System or Public ID \" or ' expected\n";
+ errmsg = "Unfinished System or Public ID \" or ' expected";
break;
case XML_ERR_MISPLACED_CDATA_END:
- errmsg = "Sequence ']]>' not allowed in content\n";
+ errmsg = "Sequence ']]>' not allowed in content";
break;
case XML_ERR_URI_REQUIRED:
- errmsg = "SYSTEM or PUBLIC, the URI is missing\n";
+ errmsg = "SYSTEM or PUBLIC, the URI is missing";
break;
case XML_ERR_PUBID_REQUIRED:
- errmsg = "PUBLIC, the Public Identifier is missing\n";
+ errmsg = "PUBLIC, the Public Identifier is missing";
break;
case XML_ERR_HYPHEN_IN_COMMENT:
- errmsg = "Comment must not contain '--' (double-hyphen)\n";
+ errmsg = "Comment must not contain '--' (double-hyphen)";
break;
case XML_ERR_PI_NOT_STARTED:
- errmsg = "xmlParsePI : no target name\n";
+ errmsg = "xmlParsePI : no target name";
break;
case XML_ERR_RESERVED_XML_NAME:
- errmsg = "Invalid PI name\n";
+ errmsg = "Invalid PI name";
break;
case XML_ERR_NOTATION_NOT_STARTED:
- errmsg = "NOTATION: Name expected here\n";
+ errmsg = "NOTATION: Name expected here";
break;
case XML_ERR_NOTATION_NOT_FINISHED:
- errmsg = "'>' required to close NOTATION declaration\n";
+ errmsg = "'>' required to close NOTATION declaration";
break;
case XML_ERR_VALUE_REQUIRED:
- errmsg = "Entity value required\n";
+ errmsg = "Entity value required";
break;
case XML_ERR_URI_FRAGMENT:
errmsg = "Fragment not allowed";
break;
case XML_ERR_ATTLIST_NOT_STARTED:
- errmsg = "'(' required to start ATTLIST enumeration\n";
+ errmsg = "'(' required to start ATTLIST enumeration";
break;
case XML_ERR_NMTOKEN_REQUIRED:
- errmsg = "NmToken expected in ATTLIST enumeration\n";
+ errmsg = "NmToken expected in ATTLIST enumeration";
break;
case XML_ERR_ATTLIST_NOT_FINISHED:
- errmsg = "')' required to finish ATTLIST enumeration\n";
+ errmsg = "')' required to finish ATTLIST enumeration";
break;
case XML_ERR_MIXED_NOT_STARTED:
- errmsg = "MixedContentDecl : '|' or ')*' expected\n";
+ errmsg = "MixedContentDecl : '|' or ')*' expected";
break;
case XML_ERR_PCDATA_REQUIRED:
- errmsg = "MixedContentDecl : '#PCDATA' expected\n";
+ errmsg = "MixedContentDecl : '#PCDATA' expected";
break;
case XML_ERR_ELEMCONTENT_NOT_STARTED:
- errmsg = "ContentDecl : Name or '(' expected\n";
+ errmsg = "ContentDecl : Name or '(' expected";
break;
case XML_ERR_ELEMCONTENT_NOT_FINISHED:
- errmsg = "ContentDecl : ',' '|' or ')' expected\n";
+ errmsg = "ContentDecl : ',' '|' or ')' expected";
break;
case XML_ERR_PEREF_IN_INT_SUBSET:
errmsg =
- "PEReference: forbidden within markup decl in internal subset\n";
+ "PEReference: forbidden within markup decl in internal subset";
break;
case XML_ERR_GT_REQUIRED:
- errmsg = "expected '>'\n";
+ errmsg = "expected '>'";
break;
case XML_ERR_CONDSEC_INVALID:
- errmsg = "XML conditional section '[' expected\n";
+ errmsg = "XML conditional section '[' expected";
break;
case XML_ERR_EXT_SUBSET_NOT_FINISHED:
- errmsg = "Content error in the external subset\n";
+ errmsg = "Content error in the external subset";
break;
case XML_ERR_CONDSEC_INVALID_KEYWORD:
errmsg =
- "conditional section INCLUDE or IGNORE keyword expected\n";
+ "conditional section INCLUDE or IGNORE keyword expected";
break;
case XML_ERR_CONDSEC_NOT_FINISHED:
- errmsg = "XML conditional section not closed\n";
+ errmsg = "XML conditional section not closed";
break;
case XML_ERR_XMLDECL_NOT_STARTED:
- errmsg = "Text declaration '<?xml' required\n";
+ errmsg = "Text declaration '<?xml' required";
break;
case XML_ERR_XMLDECL_NOT_FINISHED:
- errmsg = "parsing XML declaration: '?>' expected\n";
+ errmsg = "parsing XML declaration: '?>' expected";
break;
case XML_ERR_EXT_ENTITY_STANDALONE:
- errmsg = "external parsed entities cannot be standalone\n";
+ errmsg = "external parsed entities cannot be standalone";
break;
case XML_ERR_ENTITYREF_SEMICOL_MISSING:
- errmsg = "EntityRef: expecting ';'\n";
+ errmsg = "EntityRef: expecting ';'";
break;
case XML_ERR_DOCTYPE_NOT_FINISHED:
- errmsg = "DOCTYPE improperly terminated\n";
+ errmsg = "DOCTYPE improperly terminated";
break;
case XML_ERR_LTSLASH_REQUIRED:
- errmsg = "EndTag: '</' not found\n";
+ errmsg = "EndTag: '</' not found";
break;
case XML_ERR_EQUAL_REQUIRED:
- errmsg = "expected '='\n";
+ errmsg = "expected '='";
break;
case XML_ERR_STRING_NOT_CLOSED:
- errmsg = "String not closed expecting \" or '\n";
+ errmsg = "String not closed expecting \" or '";
break;
case XML_ERR_STRING_NOT_STARTED:
- errmsg = "String not started expecting ' or \"\n";
+ errmsg = "String not started expecting ' or \"";
break;
case XML_ERR_ENCODING_NAME:
- errmsg = "Invalid XML encoding name\n";
+ errmsg = "Invalid XML encoding name";
break;
case XML_ERR_STANDALONE_VALUE:
- errmsg = "standalone accepts only 'yes' or 'no'\n";
+ errmsg = "standalone accepts only 'yes' or 'no'";
break;
case XML_ERR_DOCUMENT_EMPTY:
- errmsg = "Document is empty\n";
+ errmsg = "Document is empty";
break;
case XML_ERR_DOCUMENT_END:
- errmsg = "Extra content at the end of the document\n";
+ errmsg = "Extra content at the end of the document";
break;
case XML_ERR_NOT_WELL_BALANCED:
- errmsg = "chunk is not well balanced\n";
+ errmsg = "chunk is not well balanced";
break;
case XML_ERR_EXTRA_CONTENT:
- errmsg = "extra content at the end of well balanced chunk\n";
+ errmsg = "extra content at the end of well balanced chunk";
break;
case XML_ERR_VERSION_MISSING:
- errmsg = "Malformed declaration expecting version\n";
+ errmsg = "Malformed declaration expecting version";
+ break;
+ case XML_ERR_NAME_TOO_LONG:
+ errmsg = "Name too long use XML_PARSE_HUGE option";
break;
#if 0
case:
- errmsg = "\n";
+ errmsg = "";
break;
#endif
default:
- errmsg = "Unregistered error message\n";
+ errmsg = "Unregistered error message";
}
+ if (info == NULL)
+ snprintf(errstr, 128, "%s\n", errmsg);
+ else
+ snprintf(errstr, 128, "%s: %%s\n", errmsg);
if (ctxt != NULL)
ctxt->errNo = error;
__xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
- XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, errmsg,
+ XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, &errstr[0],
info);
if (ctxt != NULL) {
ctxt->wellFormed = 0;
@@ -626,7 +691,7 @@ xmlFatalErrMsgInt(xmlParserCtxtPtr ctxt, xmlParserErrors error,
*/
static void
xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
- const char *msg, const xmlChar *str1, int val,
+ const char *msg, const xmlChar *str1, int val,
const xmlChar *str2)
{
if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
@@ -754,7 +819,7 @@ xmlNsWarn(xmlParserCtxtPtr ctxt, xmlParserErrors error,
/************************************************************************
* *
- * Library wide options *
+ * Library wide options *
* *
************************************************************************/
@@ -978,7 +1043,7 @@ xmlHasFeature(xmlFeature feature)
/************************************************************************
* *
- * SAX2 defaulted attributes handling *
+ * SAX2 defaulted attributes handling *
* *
************************************************************************/
@@ -1002,8 +1067,8 @@ xmlDetectSAX2(xmlParserCtxtPtr ctxt) {
ctxt->str_xml = xmlDictLookup(ctxt->dict, BAD_CAST "xml", 3);
ctxt->str_xmlns = xmlDictLookup(ctxt->dict, BAD_CAST "xmlns", 5);
ctxt->str_xml_ns = xmlDictLookup(ctxt->dict, XML_XML_NAMESPACE, 36);
- if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) ||
- (ctxt->str_xml_ns == NULL)) {
+ if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) ||
+ (ctxt->str_xml_ns == NULL)) {
xmlErrMemory(ctxt, NULL);
}
}
@@ -1517,7 +1582,7 @@ nsPush(xmlParserCtxtPtr ctxt, const xmlChar *prefix, const xmlChar *URL)
{
if (ctxt->options & XML_PARSE_NSCLEAN) {
int i;
- for (i = 0;i < ctxt->nsNr;i += 2) {
+ for (i = ctxt->nsNr - 2;i >= 0;i -= 2) {
if (ctxt->nsTab[i] == prefix) {
/* in scope */
if (ctxt->nsTab[i + 1] == URL)
@@ -1922,7 +1987,7 @@ static int spacePop(xmlParserCtxtPtr ctxt) {
* to compare on ASCII based substring.
* SKIP(n) Skip n xmlChar, and must also be used only to skip ASCII defined
* strings without newlines within the parser.
- * NEXT1(l) Skip 1 xmlChar, and must also be used only to skip 1 non-newline ASCII
+ * NEXT1(l) Skip 1 xmlChar, and must also be used only to skip 1 non-newline ASCII
* defined char within the parser.
* Clean macros, not dependent of an ASCII context, expect UTF-8 encoding
*
@@ -1971,10 +2036,10 @@ static int spacePop(xmlParserCtxtPtr ctxt) {
#define SKIPL(val) do { \
int skipl; \
for(skipl=0; skipl<val; skipl++) { \
- if (*(ctxt->input->cur) == '\n') { \
+ if (*(ctxt->input->cur) == '\n') { \
ctxt->input->line++; ctxt->input->col = 1; \
- } else ctxt->input->col++; \
- ctxt->nbChars++; \
+ } else ctxt->input->col++; \
+ ctxt->nbChars++; \
ctxt->input->cur++; \
} \
if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \
@@ -2000,6 +2065,16 @@ static void xmlSHRINK (xmlParserCtxtPtr ctxt) {
xmlGROW (ctxt);
static void xmlGROW (xmlParserCtxtPtr ctxt) {
+ unsigned long curEnd = ctxt->input->end - ctxt->input->cur;
+ unsigned long curBase = ctxt->input->cur - ctxt->input->base;
+
+ if (((curEnd > (unsigned long) XML_MAX_LOOKUP_LIMIT) ||
+ (curBase > (unsigned long) XML_MAX_LOOKUP_LIMIT)) &&
+ ((ctxt->input->buf) && (ctxt->input->buf->readcallback != (xmlInputReadCallback) xmlNop)) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "Huge input lookup");
+ ctxt->instate = XML_PARSER_EOF;
+ }
xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
if ((ctxt->input->cur != NULL) && (*ctxt->input->cur == 0) &&
(xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0))
@@ -2060,6 +2135,8 @@ xmlSkipBlankChars(xmlParserCtxtPtr ctxt) {
while (IS_BLANK_CH(*cur)) {
if (*cur == '\n') {
ctxt->input->line++; ctxt->input->col = 1;
+ } else {
+ ctxt->input->col++;
}
cur++;
res++;
@@ -2144,6 +2221,8 @@ xmlPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr input) {
"Pushing input %d : %.30s\n", ctxt->inputNr+1, input->cur);
}
ret = inputPush(ctxt, input);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
GROW;
return(ret);
}
@@ -2159,7 +2238,7 @@ xmlPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr input) {
*
* [ WFC: Legal Character ]
* Characters referred to using character references must match the
- * production for Char.
+ * production for Char.
*
* Returns the value parsed (as an int), 0 in case of error
*/
@@ -2180,8 +2259,10 @@ xmlParseCharRef(xmlParserCtxtPtr ctxt) {
if (count++ > 20) {
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(0);
}
- if ((RAW >= '0') && (RAW <= '9'))
+ if ((RAW >= '0') && (RAW <= '9'))
val = val * 16 + (CUR - '0');
else if ((RAW >= 'a') && (RAW <= 'f') && (count < 20))
val = val * 16 + (CUR - 'a') + 10;
@@ -2211,8 +2292,10 @@ xmlParseCharRef(xmlParserCtxtPtr ctxt) {
if (count++ > 20) {
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(0);
}
- if ((RAW >= '0') && (RAW <= '9'))
+ if ((RAW >= '0') && (RAW <= '9'))
val = val * 10 + (CUR - '0');
else {
xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL);
@@ -2238,7 +2321,7 @@ xmlParseCharRef(xmlParserCtxtPtr ctxt) {
/*
* [ WFC: Legal Character ]
* Characters referred to using character references must match the
- * production for Char.
+ * production for Char.
*/
if ((IS_CHAR(val) && (outofrange == 0))) {
return(val);
@@ -2263,7 +2346,7 @@ xmlParseCharRef(xmlParserCtxtPtr ctxt) {
*
* [ WFC: Legal Character ]
* Characters referred to using character references must match the
- * production for Char.
+ * production for Char.
*
* Returns the value parsed (as an int), 0 in case of error, str will be
* updated to the current value of the index
@@ -2282,7 +2365,7 @@ xmlParseStringCharRef(xmlParserCtxtPtr ctxt, const xmlChar **str) {
ptr += 3;
cur = *ptr;
while (cur != ';') { /* Non input consuming loop */
- if ((cur >= '0') && (cur <= '9'))
+ if ((cur >= '0') && (cur <= '9'))
val = val * 16 + (cur - '0');
else if ((cur >= 'a') && (cur <= 'f'))
val = val * 16 + (cur - 'a') + 10;
@@ -2305,7 +2388,7 @@ xmlParseStringCharRef(xmlParserCtxtPtr ctxt, const xmlChar **str) {
ptr += 2;
cur = *ptr;
while (cur != ';') { /* Non input consuming loops */
- if ((cur >= '0') && (cur <= '9'))
+ if ((cur >= '0') && (cur <= '9'))
val = val * 10 + (cur - '0');
else {
xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL);
@@ -2329,7 +2412,7 @@ xmlParseStringCharRef(xmlParserCtxtPtr ctxt, const xmlChar **str) {
/*
* [ WFC: Legal Character ]
* Characters referred to using character references must match the
- * production for Char.
+ * production for Char.
*/
if ((IS_CHAR(val) && (outofrange == 0))) {
return(val);
@@ -2351,9 +2434,9 @@ xmlParseStringCharRef(xmlParserCtxtPtr ctxt, const xmlChar **str) {
*
* Returns the new input stream or NULL
*/
-
+
static void deallocblankswrapper (xmlChar *str) {xmlFree(str);}
-
+
static xmlParserInputPtr
xmlNewBlanksWrapperInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
xmlParserInputPtr input;
@@ -2376,7 +2459,7 @@ xmlNewBlanksWrapperInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
if (buffer == NULL) {
xmlErrMemory(ctxt, NULL);
xmlFree(input);
- return(NULL);
+ return(NULL);
}
buffer [0] = ' ';
buffer [1] = '%';
@@ -2395,12 +2478,12 @@ xmlNewBlanksWrapperInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
/**
* xmlParserHandlePEReference:
* @ctxt: the parser context
- *
+ *
* [69] PEReference ::= '%' Name ';'
*
* [ WFC: No Recursion ]
* A parsed entity must not contain a recursive
- * reference to itself, either directly or indirectly.
+ * reference to itself, either directly or indirectly.
*
* [ WFC: Entity Declared ]
* In a document without any DTD, a document with only an internal DTD
@@ -2418,9 +2501,9 @@ xmlNewBlanksWrapperInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
* NOTE: misleading but this is handled.
*
* A PEReference may have been detected in the current input stream
- * the handling is done accordingly to
+ * the handling is done accordingly to
* http://www.w3.org/TR/REC-xml#entproc
- * i.e.
+ * i.e.
* - Included in literal in entity values
* - Included as Parameter Entity reference within DTDs
*/
@@ -2497,8 +2580,10 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
NEXT;
if ((ctxt->sax != NULL) && (ctxt->sax->getParameterEntity != NULL))
entity = ctxt->sax->getParameterEntity(ctxt->userData, name);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
if (entity == NULL) {
-
+
/*
* [ WFC: Entity Declared ]
* In a document without any DTD, a document with only an
@@ -2524,12 +2609,13 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
xmlValidityError(ctxt, XML_WAR_UNDECLARED_ENTITY,
"PEReference: %%%s; not found\n",
name, NULL);
- } else
+ } else
xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY,
"PEReference: %%%s; not found\n",
name, NULL);
ctxt->valid = 0;
}
+ xmlParserEntityCheck(ctxt, 0, NULL, 0);
} else if (ctxt->input->free != deallocblankswrapper) {
input = xmlNewBlanksWrapperInputStream(ctxt, entity);
if (xmlPushInput(ctxt, input) < 0)
@@ -2541,6 +2627,23 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
xmlCharEncoding enc;
/*
+ * Note: external parameter entities will not be loaded, it
+ * is not required for a non-validating parser, unless the
+ * option of validating, or substituting entities were
+ * given. Doing so is far more secure as the parser will
+ * only process data coming from the document entity by
+ * default.
+ */
+ if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
+ ((ctxt->options & XML_PARSE_NOENT) == 0) &&
+ ((ctxt->options & XML_PARSE_DTDVALID) == 0) &&
+ ((ctxt->options & XML_PARSE_DTDLOAD) == 0) &&
+ ((ctxt->options & XML_PARSE_DTDATTR) == 0) &&
+ (ctxt->replaceEntities == 0) &&
+ (ctxt->validate == 0))
+ return;
+
+ /*
* handle the extra spaces added before and after
* c.f. http://www.w3.org/TR/REC-xml#as-PE
* this is done independently.
@@ -2549,7 +2652,7 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
if (xmlPushInput(ctxt, input) < 0)
return;
- /*
+ /*
* Get the 4 first bytes and decode the charset
* if enc != XML_CHAR_ENCODING_NONE
* plug some encoding conversion routines.
@@ -2559,6 +2662,8 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
* the amount of data in the buffer.
*/
GROW
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
if ((ctxt->input->end - ctxt->input->cur)>=4) {
start[0] = RAW;
start[1] = NXT(1);
@@ -2589,15 +2694,17 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
/*
* Macro used to grow the current buffer.
+ * buffer##_size is expected to be a size_t
+ * mem_error: is expected to handle memory allocation failures
*/
#define growBuffer(buffer, n) { \
xmlChar *tmp; \
- buffer##_size *= 2; \
- buffer##_size += n; \
- tmp = (xmlChar *) \
- xmlRealloc(buffer, buffer##_size * sizeof(xmlChar)); \
+ size_t new_size = buffer##_size * 2 + n; \
+ if (new_size < buffer##_size) goto mem_error; \
+ tmp = (xmlChar *) xmlRealloc(buffer, new_size); \
if (tmp == NULL) goto mem_error; \
buffer = tmp; \
+ buffer##_size = new_size; \
}
/**
@@ -2609,7 +2716,7 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
* @end: an end marker xmlChar, 0 if none
* @end2: an end marker xmlChar, 0 if none
* @end3: an end marker xmlChar, 0 if none
- *
+ *
* Takes a entity string content and process to do the adequate substitutions.
*
* [67] Reference ::= EntityRef | CharRef
@@ -2623,14 +2730,14 @@ xmlChar *
xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
int what, xmlChar end, xmlChar end2, xmlChar end3) {
xmlChar *buffer = NULL;
- int buffer_size = 0;
+ size_t buffer_size = 0;
+ size_t nbchars = 0;
xmlChar *current = NULL;
xmlChar *rep = NULL;
const xmlChar *last;
xmlEntityPtr ent;
int c,l;
- int nbchars = 0;
if ((ctxt == NULL) || (str == NULL) || (len < 0))
return(NULL);
@@ -2647,7 +2754,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
* allocate a translation buffer.
*/
buffer_size = XML_PARSER_BIG_BUFFER_SIZE;
- buffer = (xmlChar *) xmlMallocAtomic(buffer_size * sizeof(xmlChar));
+ buffer = (xmlChar *) xmlMallocAtomic(buffer_size);
if (buffer == NULL) goto mem_error;
/*
@@ -2667,7 +2774,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
if (val != 0) {
COPY_BUF(0,buffer,nbchars,val);
}
- if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) {
+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
}
} else if ((c == '&') && (what & XML_SUBSTITUTE_REF)) {
@@ -2679,13 +2786,14 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
if ((ctxt->lastError.code == XML_ERR_ENTITY_LOOP) ||
(ctxt->lastError.code == XML_ERR_INTERNAL_ERROR))
goto int_error;
+ xmlParserEntityCheck(ctxt, 0, ent, 0);
if (ent != NULL)
- ctxt->nbentities += ent->checked;
+ ctxt->nbentities += ent->checked / 2;
if ((ent != NULL) &&
(ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
if (ent->content != NULL) {
COPY_BUF(0,buffer,nbchars,ent->content[0]);
- if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) {
+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
}
} else {
@@ -2702,9 +2810,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
current = rep;
while (*current != 0) { /* non input consuming loop */
buffer[nbchars++] = *current++;
- if (nbchars >
- buffer_size - XML_PARSER_BUFFER_SIZE) {
- if (xmlParserEntityCheck(ctxt, nbchars, ent))
+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
+ if (xmlParserEntityCheck(ctxt, nbchars, ent, 0))
goto int_error;
growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
}
@@ -2717,7 +2824,7 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
const xmlChar *cur = ent->name;
buffer[nbchars++] = '&';
- if (nbchars > buffer_size - i - XML_PARSER_BUFFER_SIZE) {
+ if (nbchars + i + XML_PARSER_BUFFER_SIZE > buffer_size) {
growBuffer(buffer, i + XML_PARSER_BUFFER_SIZE);
}
for (;i > 0;i--)
@@ -2731,8 +2838,9 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
ent = xmlParseStringPEReference(ctxt, &str);
if (ctxt->lastError.code == XML_ERR_ENTITY_LOOP)
goto int_error;
+ xmlParserEntityCheck(ctxt, 0, ent, 0);
if (ent != NULL)
- ctxt->nbentities += ent->checked;
+ ctxt->nbentities += ent->checked / 2;
if (ent != NULL) {
if (ent->content == NULL) {
xmlLoadEntityContent(ctxt, ent);
@@ -2745,9 +2853,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
current = rep;
while (*current != 0) { /* non input consuming loop */
buffer[nbchars++] = *current++;
- if (nbchars >
- buffer_size - XML_PARSER_BUFFER_SIZE) {
- if (xmlParserEntityCheck(ctxt, nbchars, ent))
+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
+ if (xmlParserEntityCheck(ctxt, nbchars, ent, 0))
goto int_error;
growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
}
@@ -2759,8 +2866,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
} else {
COPY_BUF(l,buffer,nbchars,c);
str += l;
- if (nbchars > buffer_size - XML_PARSER_BUFFER_SIZE) {
- growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
+ if (nbchars + XML_PARSER_BUFFER_SIZE > buffer_size) {
+ growBuffer(buffer, XML_PARSER_BUFFER_SIZE);
}
}
if (str < last)
@@ -2789,7 +2896,7 @@ int_error:
* @end: an end marker xmlChar, 0 if none
* @end2: an end marker xmlChar, 0 if none
* @end3: an end marker xmlChar, 0 if none
- *
+ *
* Takes a entity string content and process to do the adequate substitutions.
*
* [67] Reference ::= EntityRef | CharRef
@@ -3152,7 +3259,7 @@ xmlIsNameChar(xmlParserCtxtPtr ctxt, int c) {
} else {
if ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
(c == '.') || (c == '-') ||
- (c == '_') || (c == ':') ||
+ (c == '_') || (c == ':') ||
(IS_COMBINING(c)) ||
(IS_EXTENDER(c)))
return(1);
@@ -3177,6 +3284,8 @@ xmlParseNameComplex(xmlParserCtxtPtr ctxt) {
* Handler for more complex cases
*/
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
c = CUR_CHAR(l);
if ((ctxt->options & XML_PARSE_OLD10) == 0) {
/*
@@ -3225,9 +3334,11 @@ xmlParseNameComplex(xmlParserCtxtPtr ctxt) {
((c >= 0xFDF0) && (c <= 0xFFFD)) ||
((c >= 0x10000) && (c <= 0xEFFFF))
)) {
- if (count++ > 100) {
+ if (count++ > XML_PARSER_CHUNK_SIZE) {
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
}
len += l;
NEXTL(l);
@@ -3246,18 +3357,32 @@ xmlParseNameComplex(xmlParserCtxtPtr ctxt) {
while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */
((IS_LETTER(c)) || (IS_DIGIT(c)) ||
(c == '.') || (c == '-') ||
- (c == '_') || (c == ':') ||
+ (c == '_') || (c == ':') ||
(IS_COMBINING(c)) ||
(IS_EXTENDER(c)))) {
- if (count++ > 100) {
+ if (count++ > XML_PARSER_CHUNK_SIZE) {
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
}
len += l;
NEXTL(l);
c = CUR_CHAR(l);
+ if (c == 0) {
+ count = 0;
+ GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
+ c = CUR_CHAR(l);
+ }
}
}
+ if ((len > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name");
+ return(NULL);
+ }
if ((*ctxt->input->cur == '\n') && (ctxt->input->cur[-1] == '\r'))
return(xmlDictLookup(ctxt->dict, ctxt->input->cur - (len + 1), len));
return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len));
@@ -3307,6 +3432,11 @@ xmlParseName(xmlParserCtxtPtr ctxt) {
in++;
if ((*in > 0) && (*in < 0x80)) {
count = in - ctxt->input->cur;
+ if ((count > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name");
+ return(NULL);
+ }
ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count);
ctxt->input->cur = in;
ctxt->nbChars += count;
@@ -3325,6 +3455,7 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
int len = 0, l;
int c;
int count = 0;
+ const xmlChar *end; /* needed because CUR_CHAR() can move cur on \r\n */
#ifdef DEBUG
nbParseNCNameComplex++;
@@ -3334,6 +3465,7 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
* Handler for more complex cases
*/
GROW;
+ end = ctxt->input->cur;
c = CUR_CHAR(l);
if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
(!xmlIsNameStartChar(ctxt, c) || (c == ':'))) {
@@ -3342,21 +3474,42 @@ xmlParseNCNameComplex(xmlParserCtxtPtr ctxt) {
while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */
(xmlIsNameChar(ctxt, c) && (c != ':'))) {
- if (count++ > 100) {
+ if (count++ > XML_PARSER_CHUNK_SIZE) {
+ if ((len > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
+ return(NULL);
+ }
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
}
len += l;
NEXTL(l);
+ end = ctxt->input->cur;
c = CUR_CHAR(l);
+ if (c == 0) {
+ count = 0;
+ GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
+ end = ctxt->input->cur;
+ c = CUR_CHAR(l);
+ }
}
- return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len));
+ if ((len > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
+ return(NULL);
+ }
+ return(xmlDictLookup(ctxt->dict, end - len, len));
}
/**
* xmlParseNCName:
* @ctxt: an XML parser context
- * @len: lenght of the string parsed
+ * @len: length of the string parsed
*
* parse an XML name.
*
@@ -3394,6 +3547,11 @@ xmlParseNCName(xmlParserCtxtPtr ctxt) {
in++;
if ((*in > 0) && (*in < 0x80)) {
count = in - ctxt->input->cur;
+ if ((count > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
+ return(NULL);
+ }
ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count);
ctxt->input->cur = in;
ctxt->nbChars += count;
@@ -3425,6 +3583,8 @@ xmlParseNameAndCompare(xmlParserCtxtPtr ctxt, xmlChar const *other) {
const xmlChar *ret;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
in = ctxt->input->cur;
while (*in != 0 && *in == *cmp) {
@@ -3460,7 +3620,7 @@ xmlParseNameAndCompare(xmlParserCtxtPtr ctxt, xmlChar const *other) {
*
* [6] Names ::= Name (#x20 Name)*
*
- * Returns the Name parsed or NULL. The @str pointer
+ * Returns the Name parsed or NULL. The @str pointer
* is updated to the current location in the string.
*/
@@ -3504,6 +3664,13 @@ xmlParseStringName(xmlParserCtxtPtr ctxt, const xmlChar** str) {
while (xmlIsNameChar(ctxt, c)) {
if (len + 10 > max) {
xmlChar *tmp;
+
+ if ((len > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
+ xmlFree(buffer);
+ return(NULL);
+ }
max *= 2;
tmp = (xmlChar *) xmlRealloc(buffer,
max * sizeof(xmlChar));
@@ -3523,6 +3690,11 @@ xmlParseStringName(xmlParserCtxtPtr ctxt, const xmlChar** str) {
return(buffer);
}
}
+ if ((len > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
+ return(NULL);
+ }
*str = cur;
return(xmlStrndup(buf, len));
}
@@ -3552,16 +3724,25 @@ xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
#endif
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
c = CUR_CHAR(l);
while (xmlIsNameChar(ctxt, c)) {
- if (count++ > 100) {
+ if (count++ > XML_PARSER_CHUNK_SIZE) {
count = 0;
GROW;
}
COPY_BUF(l,buf,len,c);
NEXTL(l);
c = CUR_CHAR(l);
+ if (c == 0) {
+ count = 0;
+ GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
+ c = CUR_CHAR(l);
+ }
if (len >= XML_MAX_NAMELEN) {
/*
* Okay someone managed to make a huge token, so he's ready to pay
@@ -3577,13 +3758,23 @@ xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
}
memcpy(buffer, buf, len);
while (xmlIsNameChar(ctxt, c)) {
- if (count++ > 100) {
+ if (count++ > XML_PARSER_CHUNK_SIZE) {
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buffer);
+ return(NULL);
+ }
}
if (len + 10 > max) {
xmlChar *tmp;
+ if ((max > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken");
+ xmlFree(buffer);
+ return(NULL);
+ }
max *= 2;
tmp = (xmlChar *) xmlRealloc(buffer,
max * sizeof(xmlChar));
@@ -3604,6 +3795,11 @@ xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
}
if (len == 0)
return(NULL);
+ if ((len > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NmToken");
+ return(NULL);
+ }
return(xmlStrndup(buf, len));
}
@@ -3650,6 +3846,10 @@ xmlParseEntityValue(xmlParserCtxtPtr ctxt, xmlChar **orig) {
ctxt->instate = XML_PARSER_ENTITY_VALUE;
input = ctxt->input;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return(NULL);
+ }
NEXT;
c = CUR_CHAR(l);
/*
@@ -3657,12 +3857,12 @@ xmlParseEntityValue(xmlParserCtxtPtr ctxt, xmlChar **orig) {
* When a parameter entity reference appears in a literal entity
* value, ... a single or double quote character in the replacement
* text is always treated as a normal data character and will not
- * terminate the literal.
+ * terminate the literal.
* In practice it means we stop the loop only when back at parsing
* the initial entity and the quote is found
*/
- while ((IS_CHAR(c)) && ((c != stop) || /* checked */
- (ctxt->input != input))) {
+ while (((IS_CHAR(c)) && ((c != stop) || /* checked */
+ (ctxt->input != input))) && (ctxt->instate != XML_PARSER_EOF)) {
if (len + 5 >= size) {
xmlChar *tmp;
@@ -3691,6 +3891,10 @@ xmlParseEntityValue(xmlParserCtxtPtr ctxt, xmlChar **orig) {
}
}
buf[len] = 0;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return(NULL);
+ }
/*
* Raise problem w.r.t. '&' and '%' being used in non-entities
@@ -3738,12 +3942,12 @@ xmlParseEntityValue(xmlParserCtxtPtr ctxt, xmlChar **orig) {
*/
ret = xmlStringDecodeEntities(ctxt, buf, XML_SUBSTITUTE_PEREF,
0, 0, 0);
- if (orig != NULL)
+ if (orig != NULL)
*orig = buf;
else
xmlFree(buf);
}
-
+
return(ret);
}
@@ -3764,8 +3968,8 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
xmlChar limit = 0;
xmlChar *buf = NULL;
xmlChar *rep = NULL;
- int len = 0;
- int buf_size = 0;
+ size_t len = 0;
+ size_t buf_size = 0;
int c, l, in_space = 0;
xmlChar *current = NULL;
xmlEntityPtr ent;
@@ -3787,15 +3991,26 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
* allocate a translation buffer.
*/
buf_size = XML_PARSER_BUFFER_SIZE;
- buf = (xmlChar *) xmlMallocAtomic(buf_size * sizeof(xmlChar));
+ buf = (xmlChar *) xmlMallocAtomic(buf_size);
if (buf == NULL) goto mem_error;
/*
* OK loop until we reach one of the ending char or a size limit.
*/
c = CUR_CHAR(l);
- while ((NXT(0) != limit) && /* checked */
- (IS_CHAR(c)) && (c != '<')) {
+ while (((NXT(0) != limit) && /* checked */
+ (IS_CHAR(c)) && (c != '<')) &&
+ (ctxt->instate != XML_PARSER_EOF)) {
+ /*
+ * Impose a reasonable limit on attribute size, unless XML_PARSE_HUGE
+ * special option is given
+ */
+ if ((len > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ goto mem_error;
+ }
if (c == 0) break;
if (c == '&') {
in_space = 0;
@@ -3804,7 +4019,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
if (val == '&') {
if (ctxt->replaceEntities) {
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
buf[len++] = '&';
@@ -3813,7 +4028,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
* The reparsing will be done in xmlStringGetNodeList()
* called by the attribute() function in SAX.c
*/
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
buf[len++] = '&';
@@ -3823,7 +4038,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
buf[len++] = ';';
}
} else if (val != 0) {
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
len += xmlCopyChar(0, &buf[len], val);
@@ -3835,7 +4050,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
ctxt->nbentities += ent->owner;
if ((ent != NULL) &&
(ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
if ((ctxt->replaceEntities == 0) &&
@@ -3848,7 +4063,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
} else {
buf[len++] = ent->content[0];
}
- } else if ((ent != NULL) &&
+ } else if ((ent != NULL) &&
(ctxt->replaceEntities != 0)) {
if (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) {
rep = xmlStringDecodeEntities(ctxt, ent->content,
@@ -3863,7 +4078,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
current++;
} else
buf[len++] = *current++;
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
}
@@ -3871,7 +4086,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
rep = NULL;
}
} else {
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
if (ent->content != NULL)
@@ -3886,10 +4101,16 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
* entities problems
*/
if ((ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) &&
- (ent->content != NULL)) {
+ (ent->content != NULL) && (ent->checked == 0)) {
+ unsigned long oldnbent = ctxt->nbentities;
+
rep = xmlStringDecodeEntities(ctxt, ent->content,
XML_SUBSTITUTE_REF, 0, 0, 0);
+
+ ent->checked = (ctxt->nbentities - oldnbent + 1) * 2;
if (rep != NULL) {
+ if (xmlStrchr(rep, '<'))
+ ent->checked |= 1;
xmlFree(rep);
rep = NULL;
}
@@ -3899,7 +4120,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
* Just output the reference
*/
buf[len++] = '&';
- while (len > buf_size - i - 10) {
+ while (len + i + 10 > buf_size) {
growBuffer(buf, i + 10);
}
for (;i > 0;i--)
@@ -3912,7 +4133,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
if ((len != 0) || (!normalize)) {
if ((!normalize) || (!in_space)) {
COPY_BUF(l,buf,len,0x20);
- while (len > buf_size - 10) {
+ while (len + 10 > buf_size) {
growBuffer(buf, 10);
}
}
@@ -3921,7 +4142,7 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
} else {
in_space = 0;
COPY_BUF(l,buf,len,c);
- if (len > buf_size - 10) {
+ if (len + 10 > buf_size) {
growBuffer(buf, 10);
}
}
@@ -3930,8 +4151,11 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
GROW;
c = CUR_CHAR(l);
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto error;
+
if ((in_space) && (normalize)) {
- while (buf[len - 1] == 0x20) len--;
+ while ((len > 0) && (buf[len - 1] == 0x20)) len--;
}
buf[len] = 0;
if (RAW == '<') {
@@ -3946,11 +4170,23 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) {
}
} else
NEXT;
- if (attlen != NULL) *attlen = len;
+
+ /*
+ * There we potentially risk an overflow, don't allow attribute value of
+ * length more than INT_MAX it is a very reasonnable assumption !
+ */
+ if (len >= INT_MAX) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ goto mem_error;
+ }
+
+ if (attlen != NULL) *attlen = (int) len;
return(buf);
mem_error:
xmlErrMemory(ctxt, NULL);
+error:
if (buf != NULL)
xmlFree(buf);
if (rep != NULL)
@@ -3971,20 +4207,20 @@ mem_error:
*
* 3.3.3 Attribute-Value Normalization:
* Before the value of an attribute is passed to the application or
- * checked for validity, the XML processor must normalize it as follows:
+ * checked for validity, the XML processor must normalize it as follows:
* - a character reference is processed by appending the referenced
* character to the attribute value
* - an entity reference is processed by recursively processing the
- * replacement text of the entity
+ * replacement text of the entity
* - a whitespace character (#x20, #xD, #xA, #x9) is processed by
* appending #x20 to the normalized value, except that only a single
* #x20 is appended for a "#xD#xA" sequence that is part of an external
- * parsed entity or the literal entity value of an internal parsed entity
- * - other characters are processed by appending them to the normalized value
+ * parsed entity or the literal entity value of an internal parsed entity
+ * - other characters are processed by appending them to the normalized value
* If the declared value is not CDATA, then the XML processor must further
* process the normalized attribute value by discarding any leading and
* trailing space (#x20) characters, and by replacing sequences of space
- * (#x20) characters by a single space (#x20) character.
+ * (#x20) characters by a single space (#x20) character.
* All attributes for which no declaration has been read should be treated
* by a non-validating parser as if declared CDATA.
*
@@ -4001,7 +4237,7 @@ xmlParseAttValue(xmlParserCtxtPtr ctxt) {
/**
* xmlParseSystemLiteral:
* @ctxt: an XML parser context
- *
+ *
* parse an XML Literal
*
* [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
@@ -4030,7 +4266,7 @@ xmlParseSystemLiteral(xmlParserCtxtPtr ctxt) {
xmlFatalErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, NULL);
return(NULL);
}
-
+
buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar));
if (buf == NULL) {
xmlErrMemory(ctxt, NULL);
@@ -4042,6 +4278,13 @@ xmlParseSystemLiteral(xmlParserCtxtPtr ctxt) {
if (len + 5 >= size) {
xmlChar *tmp;
+ if ((size > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "SystemLiteral");
+ xmlFree(buf);
+ ctxt->instate = (xmlParserInputState) state;
+ return(NULL);
+ }
size *= 2;
tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar));
if (tmp == NULL) {
@@ -4056,6 +4299,10 @@ xmlParseSystemLiteral(xmlParserCtxtPtr ctxt) {
if (count > 50) {
GROW;
count = 0;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return(NULL);
+ }
}
COPY_BUF(l,buf,len,cur);
NEXTL(l);
@@ -4119,6 +4366,12 @@ xmlParsePubidLiteral(xmlParserCtxtPtr ctxt) {
if (len + 1 >= size) {
xmlChar *tmp;
+ if ((size > XML_MAX_NAME_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Public ID");
+ xmlFree(buf);
+ return(NULL);
+ }
size *= 2;
tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar));
if (tmp == NULL) {
@@ -4133,6 +4386,10 @@ xmlParsePubidLiteral(xmlParserCtxtPtr ctxt) {
if (count > 50) {
GROW;
count = 0;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return(NULL);
+ }
}
NEXT;
cur = CUR;
@@ -4203,7 +4460,7 @@ static const unsigned char test_char_data[256] = {
* The right angle bracket (>) may be represented using the string "&gt;",
* and must, for compatibility, be escaped using "&gt;" or a character
* reference when it appears in the string "]]>" in content, when that
- * string is not marking the end of a CDATA section.
+ * string is not marking the end of a CDATA section.
*
* [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
*/
@@ -4339,6 +4596,8 @@ get_more:
}
SHRINK;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
in = ctxt->input->cur;
} while (((*in >= 0x20) && (*in <= 0x7F)) || (*in == 0x09));
nbchar = 0;
@@ -4368,7 +4627,7 @@ xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata) {
GROW;
cur = CUR_CHAR(l);
while ((cur != '<') && /* checked */
- (cur != '&') &&
+ (cur != '&') &&
(IS_CHAR(cur))) /* test also done in xmlCurrentChar() */ {
if ((cur == ']') && (NXT(1) == ']') &&
(NXT(2) == '>')) {
@@ -4407,6 +4666,8 @@ xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata) {
if (count > 50) {
GROW;
count = 0;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
}
NEXTL(l);
cur = CUR_CHAR(l);
@@ -4499,7 +4760,7 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) {
}
} else {
/*
- * We handle [83] so we return immediately, if
+ * We handle [83] so we return immediately, if
* "S SystemLiteral" is not detected. From a purely parsing
* point of view that's a nice mess.
*/
@@ -4508,7 +4769,7 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) {
ptr = CUR_PTR;
if (!IS_BLANK_CH(*ptr)) return(NULL);
-
+
while (IS_BLANK_CH(*ptr)) ptr++; /* TODO: dangerous, fix ! */
if ((*ptr != '\'') && (*ptr != '"')) return(NULL);
}
@@ -4536,11 +4797,12 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) {
* [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
*/
static void
-xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, int len, int size) {
+xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf,
+ size_t len, size_t size) {
int q, ql;
int r, rl;
int cur, l;
- int count = 0;
+ size_t count = 0;
int inputid;
inputid = ctxt->input->id;
@@ -4586,16 +4848,26 @@ xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, int len, int size) {
if ((r == '-') && (q == '-')) {
xmlFatalErr(ctxt, XML_ERR_HYPHEN_IN_COMMENT, NULL);
}
+ if ((len > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED,
+ "Comment too big found", NULL);
+ xmlFree (buf);
+ return;
+ }
if (len + 5 >= size) {
xmlChar *new_buf;
- size *= 2;
- new_buf = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar));
+ size_t new_size;
+
+ new_size = size * 2;
+ new_buf = (xmlChar *) xmlRealloc(buf, new_size);
if (new_buf == NULL) {
xmlFree (buf);
xmlErrMemory(ctxt, NULL);
return;
}
buf = new_buf;
+ size = new_size;
}
COPY_BUF(ql,buf,len,q);
q = r;
@@ -4607,6 +4879,10 @@ xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf, int len, int size) {
if (count > 50) {
GROW;
count = 0;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return;
+ }
}
NEXTL(l);
cur = CUR_CHAR(l);
@@ -4656,11 +4932,12 @@ not_terminated:
void
xmlParseComment(xmlParserCtxtPtr ctxt) {
xmlChar *buf = NULL;
- int size = XML_PARSER_BUFFER_SIZE;
- int len = 0;
+ size_t size = XML_PARSER_BUFFER_SIZE;
+ size_t len = 0;
xmlParserInputState state;
const xmlChar *in;
- int nbchar = 0, ccol;
+ size_t nbchar = 0;
+ int ccol;
int inputid;
/*
@@ -4740,6 +5017,13 @@ get_more:
buf[len] = 0;
}
}
+ if ((len > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsgStr(ctxt, XML_ERR_COMMENT_NOT_FINISHED,
+ "Comment too big found", NULL);
+ xmlFree (buf);
+ return;
+ }
ctxt->input->cur = in;
if (*in == 0xA) {
in++;
@@ -4757,6 +5041,10 @@ get_more:
}
SHRINK;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return;
+ }
in = ctxt->input->cur;
if (*in == '-') {
if (in[1] == '-') {
@@ -4775,7 +5063,8 @@ get_more:
}
if (buf != NULL)
xmlFree(buf);
- ctxt->instate = state;
+ if (ctxt->instate != XML_PARSER_EOF)
+ ctxt->instate = state;
return;
}
if (buf != NULL) {
@@ -4803,7 +5092,7 @@ get_more:
/**
* xmlParsePITarget:
* @ctxt: an XML parser context
- *
+ *
* parse the name of a PI
*
* [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
@@ -4840,8 +5129,8 @@ xmlParsePITarget(xmlParserCtxtPtr ctxt) {
NULL, NULL);
}
if ((name != NULL) && (xmlStrchr(name, ':') != NULL)) {
- xmlNsErr(ctxt, XML_NS_ERR_COLON,
- "colon are forbidden from PI names '%s'\n", name, NULL, NULL);
+ xmlNsErr(ctxt, XML_NS_ERR_COLON,
+ "colons are forbidden from PI names '%s'\n", name, NULL, NULL);
}
return(name);
}
@@ -4851,7 +5140,7 @@ xmlParsePITarget(xmlParserCtxtPtr ctxt) {
* xmlParseCatalogPI:
* @ctxt: an XML parser context
* @catalog: the PI value string
- *
+ *
* parse an XML Catalog Processing Instruction.
*
* <?oasis-xml-catalog catalog="http://example.com/catalog.xml"?>
@@ -4911,7 +5200,7 @@ error:
/**
* xmlParsePI:
* @ctxt: an XML parser context
- *
+ *
* parse an XML Processing Instruction.
*
* [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
@@ -4922,8 +5211,8 @@ error:
void
xmlParsePI(xmlParserCtxtPtr ctxt) {
xmlChar *buf = NULL;
- int len = 0;
- int size = XML_PARSER_BUFFER_SIZE;
+ size_t len = 0;
+ size_t size = XML_PARSER_BUFFER_SIZE;
int cur, l;
const xmlChar *target;
xmlParserInputState state;
@@ -4980,9 +5269,8 @@ xmlParsePI(xmlParserCtxtPtr ctxt) {
((cur != '?') || (NXT(1) != '>'))) {
if (len + 5 >= size) {
xmlChar *tmp;
-
- size *= 2;
- tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar));
+ size_t new_size = size * 2;
+ tmp = (xmlChar *) xmlRealloc(buf, new_size);
if (tmp == NULL) {
xmlErrMemory(ctxt, NULL);
xmlFree(buf);
@@ -4990,11 +5278,24 @@ xmlParsePI(xmlParserCtxtPtr ctxt) {
return;
}
buf = tmp;
+ size = new_size;
}
count++;
if (count > 50) {
GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return;
+ }
count = 0;
+ if ((len > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED,
+ "PI %s too big found", target);
+ xmlFree(buf);
+ ctxt->instate = state;
+ return;
+ }
}
COPY_BUF(l,buf,len,cur);
NEXTL(l);
@@ -5005,6 +5306,14 @@ xmlParsePI(xmlParserCtxtPtr ctxt) {
cur = CUR_CHAR(l);
}
}
+ if ((len > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED,
+ "PI %s too big found", target);
+ xmlFree(buf);
+ ctxt->instate = state;
+ return;
+ }
buf[len] = 0;
if (cur != '?') {
xmlFatalErrMsgStr(ctxt, XML_ERR_PI_NOT_FINISHED,
@@ -5066,7 +5375,7 @@ xmlParseNotationDecl(xmlParserCtxtPtr ctxt) {
const xmlChar *name;
xmlChar *Pubid;
xmlChar *Systemid;
-
+
if (CMP10(CUR_PTR, '<', '!', 'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N')) {
xmlParserInputPtr input = ctxt->input;
SHRINK;
@@ -5089,8 +5398,8 @@ xmlParseNotationDecl(xmlParserCtxtPtr ctxt) {
return;
}
if (xmlStrchr(name, ':') != NULL) {
- xmlNsErr(ctxt, XML_NS_ERR_COLON,
- "colon are forbidden from notation names '%s'\n",
+ xmlNsErr(ctxt, XML_NS_ERR_COLON,
+ "colons are forbidden from notation names '%s'\n",
name, NULL, NULL);
}
SKIP_BLANKS;
@@ -5149,7 +5458,7 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
int isParameter = 0;
xmlChar *orig = NULL;
int skipped;
-
+
/* GROW; done in the caller */
if (CMP8(CUR_PTR, '<', '!', 'E', 'N', 'T', 'I', 'T', 'Y')) {
xmlParserInputPtr input = ctxt->input;
@@ -5178,8 +5487,8 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
return;
}
if (xmlStrchr(name, ':') != NULL) {
- xmlNsErr(ctxt, XML_NS_ERR_COLON,
- "colon are forbidden from entities names '%s'\n",
+ xmlNsErr(ctxt, XML_NS_ERR_COLON,
+ "colons are forbidden from entities names '%s'\n",
name, NULL, NULL);
}
skipped = SKIP_BLANKS;
@@ -5343,6 +5652,8 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
}
}
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
SKIP_BLANKS;
if (RAW != '>') {
xmlFatalErrMsgStr(ctxt, XML_ERR_ENTITY_NOT_FINISHED,
@@ -5406,13 +5717,13 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
*
* [ VC: Fixed Attribute Default ]
* if an attribute has a default value declared with the #FIXED
- * keyword, instances of that attribute must match the default value.
+ * keyword, instances of that attribute must match the default value.
*
* [ WFC: No < in Attribute Values ]
* handled in xmlParseAttValue()
*
* returns: XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED
- * or XML_ATTRIBUTE_FIXED.
+ * or XML_ATTRIBUTE_FIXED.
*/
int
@@ -5461,7 +5772,7 @@ xmlParseDefaultDecl(xmlParserCtxtPtr ctxt, xmlChar **value) {
*
* [ VC: Notation Attributes ]
* Values of this type must match one of the notation names included
- * in the declaration; all notation names in the declaration must be declared.
+ * in the declaration; all notation names in the declaration must be declared.
*
* Returns: the notation attribute tree built while parsing
*/
@@ -5661,15 +5972,15 @@ xmlParseEnumeratedType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree) {
* [ VC: Entity Name ]
* Values of type ENTITY must match the Name production, values
* of type ENTITIES must match Names; each Entity Name must match the
- * name of an unparsed entity declared in the DTD.
+ * name of an unparsed entity declared in the DTD.
*
* [ VC: Name Token ]
* Values of type NMTOKEN must match the Nmtoken production; values
- * of type NMTOKENS must match Nmtokens.
+ * of type NMTOKENS must match Nmtokens.
*
* Returns the attribute type
*/
-int
+int
xmlParseAttributeType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree) {
SHRINK;
if (CMP5(CUR_PTR, 'C', 'D', 'A', 'T', 'A')) {
@@ -5734,7 +6045,7 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) {
}
SKIP_BLANKS;
GROW;
- while (RAW != '>') {
+ while ((RAW != '>') && (ctxt->instate != XML_PARSER_EOF)) {
const xmlChar *check = CUR_PTR;
int type;
int def;
@@ -5812,7 +6123,7 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) {
xmlFreeEnumeration(tree);
if ((ctxt->sax2) && (defaultValue != NULL) &&
- (def != XML_ATTRIBUTE_IMPLIED) &&
+ (def != XML_ATTRIBUTE_IMPLIED) &&
(def != XML_ATTRIBUTE_REQUIRED)) {
xmlAddDefAttrs(ctxt, elemName, attrName, defaultValue);
}
@@ -5841,7 +6152,7 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) {
*
* parse the declaration for a Mixed Element content
* The leading '(' and spaces have been skipped in xmlParseElementContentDecl
- *
+ *
* [51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' |
* '(' S? '#PCDATA' S? ')'
*
@@ -5849,7 +6160,7 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) {
*
* [ VC: No Duplicate Types ]
* The same name must not appear more than once in a single
- * mixed-content declaration.
+ * mixed-content declaration.
*
* returns: the list of the xmlElementContentPtr describing the element choices
*/
@@ -5883,7 +6194,7 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
ret = cur = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_PCDATA);
if (ret == NULL) return(NULL);
}
- while (RAW == '|') {
+ while ((RAW == '|') && (ctxt->instate != XML_PARSER_EOF)) {
NEXT;
if (elem == NULL) {
ret = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_OR);
@@ -5949,7 +6260,7 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
*
* parse the declaration for a Mixed Element content
* The leading '(' and spaces have been skipped in xmlParseElementContentDecl
- *
+ *
*
* [47] children ::= (choice | seq) ('?' | '*' | '+')?
*
@@ -5970,7 +6281,7 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
* be empty, and neither the first nor last non-blank character of
* the replacement text should be a connector (| or ,).
*
- * Returns the tree of xmlElementContentPtr describing the element
+ * Returns the tree of xmlElementContentPtr describing the element
* hierarchy.
*/
static xmlElementContentPtr
@@ -6027,7 +6338,7 @@ xmlParseElementChildrenContentDeclPriv(xmlParserCtxtPtr ctxt, int inputchk,
}
SKIP_BLANKS;
SHRINK;
- while (RAW != ')') {
+ while ((RAW != ')') && (ctxt->instate != XML_PARSER_EOF)) {
/*
* Each loop we parse one separator and one element.
*/
@@ -6283,7 +6594,7 @@ xmlParseElementChildrenContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
*
* parse the declaration for an Element content either Mixed or Children,
* the cases EMPTY and ANY are handled directly in xmlParseElementDecl
- *
+ *
* [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
*
* returns: the type of element content XML_ELEMENT_TYPE_xxx
@@ -6306,6 +6617,8 @@ xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, const xmlChar *name,
}
NEXT;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
SKIP_BLANKS;
if (CMP7(CUR_PTR, '#', 'P', 'C', 'D', 'A', 'T', 'A')) {
tree = xmlParseElementMixedContentDecl(ctxt, inputid);
@@ -6409,7 +6722,7 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) {
xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
"Element declaration doesn't start and stop in the same entity\n");
}
-
+
NEXT;
if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
(ctxt->sax->elementDecl != NULL)) {
@@ -6421,7 +6734,7 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) {
/*
* this is a trick: if xmlAddElementDecl is called,
* instead of copying the full tree it is plugged directly
- * if called from the parser. Avoid duplicating the
+ * if called from the parser. Avoid duplicating the
* interfaces or change the API/ABI
*/
xmlFreeDocElementContent(ctxt->myDoc, content);
@@ -6438,8 +6751,8 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) {
* xmlParseConditionalSections
* @ctxt: an XML parser context
*
- * [61] conditionalSect ::= includeSect | ignoreSect
- * [62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
+ * [61] conditionalSect ::= includeSect | ignoreSect
+ * [62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
* [63] ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
* [64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>' Ignore)*
* [65] Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)
@@ -6473,8 +6786,8 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) {
"Entering INCLUDE Conditional Section\n");
}
- while ((RAW != 0) && ((RAW != ']') || (NXT(1) != ']') ||
- (NXT(2) != '>'))) {
+ while (((RAW != 0) && ((RAW != ']') || (NXT(1) != ']') ||
+ (NXT(2) != '>'))) && (ctxt->instate != XML_PARSER_EOF)) {
const xmlChar *check = CUR_PTR;
unsigned int cons = ctxt->input->consumed;
@@ -6542,7 +6855,8 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) {
if (ctxt->recovery == 0) ctxt->disableSAX = 1;
ctxt->instate = XML_PARSER_IGNORE;
- while ((depth >= 0) && (RAW != 0)) {
+ while (((depth >= 0) && (RAW != 0)) &&
+ (ctxt->instate != XML_PARSER_EOF)) {
if ((RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
depth++;
SKIP(3);
@@ -6590,7 +6904,7 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) {
/**
* xmlParseMarkupDecl:
* @ctxt: an XML parser context
- *
+ *
* parse Markup declarations
*
* [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl |
@@ -6607,7 +6921,7 @@ xmlParseConditionalSections(xmlParserCtxtPtr ctxt) {
* In the internal DTD subset, parameter-entity references can occur
* only where markup declarations can occur, not within markup declarations.
* (This does not apply to references that occur in external parameter
- * entities or to the external subset.)
+ * entities or to the external subset.)
*/
void
xmlParseMarkupDecl(xmlParserCtxtPtr ctxt) {
@@ -6736,7 +7050,7 @@ xmlParseTextDecl(xmlParserCtxtPtr ctxt) {
* @ctxt: an XML parser context
* @ExternalID: the external identifier
* @SystemID: the system identifier (or URL)
- *
+ *
* parse Markup declarations from an external subset
*
* [30] extSubset ::= textDecl? extSubsetDecl
@@ -6813,7 +7127,7 @@ xmlParseExternalSubset(xmlParserCtxtPtr ctxt, const xmlChar *ExternalID,
break;
}
}
-
+
if (RAW != 0) {
xmlFatalErr(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED, NULL);
}
@@ -6915,8 +7229,15 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
* The first reference to the entity trigger a parsing phase
* where the ent->children is filled with the result from
* the parsing.
- */
- if (ent->checked == 0) {
+ * Note: external parsed entities will not be loaded, it is not
+ * required for a non-validating parser, unless the parsing option
+ * of validating, or substituting entities were given. Doing so is
+ * far more secure as the parser will only process data coming from
+ * the document entity by default.
+ */
+ if ((ent->checked == 0) &&
+ ((ent->etype != XML_EXTERNAL_GENERAL_PARSED_ENTITY) ||
+ (ctxt->options & (XML_PARSE_NOENT | XML_PARSE_DTDVALID)))) {
unsigned long oldnbent = ctxt->nbentities;
/*
@@ -6958,13 +7279,15 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
* Store the number of entities needing parsing for this entity
* content and do checkings
*/
- ent->checked = ctxt->nbentities - oldnbent;
+ ent->checked = (ctxt->nbentities - oldnbent + 1) * 2;
+ if ((ent->content != NULL) && (xmlStrchr(ent->content, '<')))
+ ent->checked |= 1;
if (ret == XML_ERR_ENTITY_LOOP) {
xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
xmlFreeNodeList(list);
return;
}
- if (xmlParserEntityCheck(ctxt, 0, ent)) {
+ if (xmlParserEntityCheck(ctxt, 0, ent, 0)) {
xmlFreeNodeList(list);
return;
}
@@ -7018,14 +7341,15 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
(ret != XML_WAR_UNDECLARED_ENTITY)) {
xmlFatalErrMsgStr(ctxt, XML_ERR_UNDECLARED_ENTITY,
"Entity '%s' failed to parse\n", ent->name);
+ xmlParserEntityCheck(ctxt, 0, ent, 0);
} else if (list != NULL) {
xmlFreeNodeList(list);
list = NULL;
}
if (ent->checked == 0)
- ent->checked = 1;
+ ent->checked = 2;
} else if (ent->checked != 1) {
- ctxt->nbentities += ent->checked;
+ ctxt->nbentities += ent->checked / 2;
}
/*
@@ -7116,14 +7440,19 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
* Seems we are generating the DOM content, do
* a simple tree copy for all references except the first
* In the first occurrence list contains the replacement.
- * progressive == 2 means we are operating on the Reader
- * and since nodes are discarded we must copy all the time.
*/
if (((list == NULL) && (ent->owner == 0)) ||
(ctxt->parseMode == XML_PARSE_READER)) {
xmlNodePtr nw = NULL, cur, firstChild = NULL;
/*
+ * We are copying here, make sure there is no abuse
+ */
+ ctxt->sizeentcopy += ent->length + 5;
+ if (xmlParserEntityCheck(ctxt, 0, ent, ctxt->sizeentcopy))
+ return;
+
+ /*
* when operating on a reader, the entities definitions
* are always owning the entities subtree.
if (ctxt->parseMode == XML_PARSE_READER)
@@ -7160,9 +7489,17 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
if (ent->etype == XML_EXTERNAL_GENERAL_PARSED_ENTITY)
xmlAddEntityReference(ent, firstChild, nw);
#endif /* LIBXML_LEGACY_ENABLED */
- } else if (list == NULL) {
+ } else if ((list == NULL) || (ctxt->inputNr > 0)) {
xmlNodePtr nw = NULL, cur, next, last,
firstChild = NULL;
+
+ /*
+ * We are copying here, make sure there is no abuse
+ */
+ ctxt->sizeentcopy += ent->length + 5;
+ if (xmlParserEntityCheck(ctxt, 0, ent, ctxt->sizeentcopy))
+ return;
+
/*
* Copy the entity child list and make it the new
* entity child list. The goal is to make sure any
@@ -7260,6 +7597,8 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
xmlEntityPtr ent = NULL;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
if (RAW != '&')
return(NULL);
@@ -7277,7 +7616,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
NEXT;
/*
- * Predefined entites override any extra definition
+ * Predefined entities override any extra definition
*/
if ((ctxt->options & XML_PARSE_OLDSAX) == 0) {
ent = xmlGetPredefinedEntity(name);
@@ -7286,7 +7625,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
}
/*
- * Increate the number of entity references parsed
+ * Increase the number of entity references parsed
*/
ctxt->nbentities++;
@@ -7297,7 +7636,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
if (ctxt->sax != NULL) {
if (ctxt->sax->getEntity != NULL)
ent = ctxt->sax->getEntity(ctxt->userData, name);
- if ((ctxt->wellFormed == 1 ) && (ent == NULL) &&
+ if ((ctxt->wellFormed == 1 ) && (ent == NULL) &&
(ctxt->options & XML_PARSE_OLDSAX))
ent = xmlGetPredefinedEntity(name);
if ((ctxt->wellFormed == 1 ) && (ent == NULL) &&
@@ -7305,6 +7644,8 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
ent = xmlSAX2GetEntity(ctxt, name);
}
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
/*
* [ WFC: Entity Declared ]
* In a document without any DTD, a document with only an
@@ -7341,6 +7682,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
ctxt->sax->reference(ctxt->userData, name);
}
}
+ xmlParserEntityCheck(ctxt, 0, ent, 0);
ctxt->valid = 0;
}
@@ -7368,14 +7710,16 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
* [ WFC: No < in Attribute Values ]
* The replacement text of any entity referred to directly or
* indirectly in an attribute value (other than "&lt;") must
- * not contain a <.
+ * not contain a <.
*/
else if ((ctxt->instate == XML_PARSER_ATTRIBUTE_VALUE) &&
- (ent != NULL) && (ent->content != NULL) &&
- (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) &&
- (xmlStrchr(ent->content, '<'))) {
- xmlFatalErrMsgStr(ctxt, XML_ERR_LT_IN_ATTRIBUTE,
- "'<' in entity '%s' is not allowed in attributes values\n", name);
+ (ent != NULL) &&
+ (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY)) {
+ if (((ent->checked & 1) || (ent->checked == 0)) &&
+ (ent->content != NULL) && (xmlStrchr(ent->content, '<'))) {
+ xmlFatalErrMsgStr(ctxt, XML_ERR_LT_IN_ATTRIBUTE,
+ "'<' in entity '%s' is not allowed in attributes values\n", name);
+ }
}
/*
@@ -7397,7 +7741,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
/*
* [ WFC: No Recursion ]
* A parsed entity must not contain a recursive reference
- * to itself, either directly or indirectly.
+ * to itself, either directly or indirectly.
* Done somewhere else
*/
return(ent);
@@ -7466,7 +7810,7 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
/*
- * Predefined entites override any extra definition
+ * Predefined entities override any extra definition
*/
if ((ctxt->options & XML_PARSE_OLDSAX) == 0) {
ent = xmlGetPredefinedEntity(name);
@@ -7495,6 +7839,10 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
ent = xmlSAX2GetEntity(ctxt, name);
}
}
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(name);
+ return(NULL);
+ }
/*
* [ WFC: Entity Declared ]
@@ -7515,7 +7863,7 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
* is not obligated to read and process their declarations;
* for such documents, the rule that an entity must be
* declared is a well-formedness constraint only if
- * standalone='yes'.
+ * standalone='yes'.
*/
if (ent == NULL) {
if ((ctxt->standalone == 1) ||
@@ -7528,6 +7876,7 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
"Entity '%s' not defined\n",
name);
}
+ xmlParserEntityCheck(ctxt, 0, ent, 0);
/* TODO ? check regressions ctxt->valid = 0; */
}
@@ -7606,7 +7955,7 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
*
* [ WFC: No Recursion ]
* A parsed entity must not contain a recursive
- * reference to itself, either directly or indirectly.
+ * reference to itself, either directly or indirectly.
*
* [ WFC: Entity Declared ]
* In a document without any DTD, a document with only an internal DTD
@@ -7656,8 +8005,9 @@ xmlParsePEReference(xmlParserCtxtPtr ctxt)
*/
if ((ctxt->sax != NULL) &&
(ctxt->sax->getParameterEntity != NULL))
- entity = ctxt->sax->getParameterEntity(ctxt->userData,
- name);
+ entity = ctxt->sax->getParameterEntity(ctxt->userData, name);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
if (entity == NULL) {
/*
* [ WFC: Entity Declared ]
@@ -7686,6 +8036,7 @@ xmlParsePEReference(xmlParserCtxtPtr ctxt)
name, NULL);
ctxt->valid = 0;
}
+ xmlParserEntityCheck(ctxt, 0, NULL, 0);
} else {
/*
* Internal checking in case the entity quest barfed
@@ -7787,12 +8138,25 @@ xmlLoadEntityContent(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
while ((ctxt->input == input) && (ctxt->input->cur < ctxt->input->end) &&
(IS_CHAR(c))) {
xmlBufferAdd(buf, ctxt->input->cur, l);
- if (count++ > 100) {
+ if (count++ > XML_PARSER_CHUNK_SIZE) {
count = 0;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlBufferFree(buf);
+ return(-1);
+ }
}
NEXTL(l);
c = CUR_CHAR(l);
+ if (c == 0) {
+ count = 0;
+ GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlBufferFree(buf);
+ return(-1);
+ }
+ c = CUR_CHAR(l);
+ }
}
if ((ctxt->input == input) && (ctxt->input->cur >= ctxt->input->end)) {
@@ -7881,8 +8245,11 @@ xmlParseStringPEReference(xmlParserCtxtPtr ctxt, const xmlChar **str) {
*/
if ((ctxt->sax != NULL) &&
(ctxt->sax->getParameterEntity != NULL))
- entity = ctxt->sax->getParameterEntity(ctxt->userData,
- name);
+ entity = ctxt->sax->getParameterEntity(ctxt->userData, name);
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(name);
+ return(NULL);
+ }
if (entity == NULL) {
/*
* [ WFC: Entity Declared ]
@@ -7909,6 +8276,7 @@ xmlParseStringPEReference(xmlParserCtxtPtr ctxt, const xmlChar **str) {
name, NULL);
ctxt->valid = 0;
}
+ xmlParserEntityCheck(ctxt, 0, NULL, 0);
} else {
/*
* Internal checking in case the entity quest barfed
@@ -7932,12 +8300,12 @@ xmlParseStringPEReference(xmlParserCtxtPtr ctxt, const xmlChar **str) {
*
* parse a DOCTYPE declaration
*
- * [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
+ * [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
* ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
*
* [ VC: Root Element Type ]
* The Name in the document type declaration must match the element
- * type of the root element.
+ * type of the root element.
*/
void
@@ -7984,6 +8352,8 @@ xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt) {
if ((ctxt->sax != NULL) && (ctxt->sax->internalSubset != NULL) &&
(!ctxt->disableSAX))
ctxt->sax->internalSubset(ctxt->userData, name, ExternalID, URI);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
/*
* Is there any internal subset declarations ?
@@ -8019,11 +8389,11 @@ xmlParseInternalSubset(xmlParserCtxtPtr ctxt) {
ctxt->instate = XML_PARSER_DTD;
NEXT;
/*
- * Parse the succession of Markup declarations and
+ * Parse the succession of Markup declarations and
* PEReferences.
* Subsequence (markupdecl | PEReference | S)*
*/
- while (RAW != ']') {
+ while ((RAW != ']') && (ctxt->instate != XML_PARSER_EOF)) {
const xmlChar *check = CUR_PTR;
unsigned int cons = ctxt->input->consumed;
@@ -8043,7 +8413,7 @@ xmlParseInternalSubset(xmlParserCtxtPtr ctxt) {
break;
}
}
- if (RAW == ']') {
+ if (RAW == ']') {
NEXT;
SKIP_BLANKS;
}
@@ -8074,8 +8444,8 @@ xmlParseInternalSubset(xmlParserCtxtPtr ctxt) {
*
* [ WFC: No < in Attribute Values ]
* The replacement text of any entity referred to directly or indirectly in
- * an attribute value (other than "&lt;") must not contain a <.
- *
+ * an attribute value (other than "&lt;") must not contain a <.
+ *
* [ VC: Attribute Value Type ]
* The attribute must have been declared; the value must be of the type
* declared for it.
@@ -8156,7 +8526,7 @@ xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlChar **value) {
/**
* xmlParseStartTag:
* @ctxt: an XML parser context
- *
+ *
* parse a start of tag either for rule element or
* EmptyElement. In both case we don't parse the tag closing chars.
*
@@ -8164,13 +8534,13 @@ xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlChar **value) {
*
* [ WFC: Unique Att Spec ]
* No attribute name may appear more than once in the same start-tag or
- * empty-element tag.
+ * empty-element tag.
*
* [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
*
* [ WFC: Unique Att Spec ]
* No attribute name may appear more than once in the same start-tag or
- * empty-element tag.
+ * empty-element tag.
*
* With namespace:
*
@@ -8209,9 +8579,9 @@ xmlParseStartTag(xmlParserCtxtPtr ctxt) {
SKIP_BLANKS;
GROW;
- while ((RAW != '>') &&
+ while (((RAW != '>') &&
((RAW != '/') || (NXT(1) != '>')) &&
- (IS_BYTE_CHAR(RAW))) {
+ (IS_BYTE_CHAR(RAW))) && (ctxt->instate != XML_PARSER_EOF)) {
const xmlChar *q = CUR_PTR;
unsigned int cons = ctxt->input->consumed;
@@ -8220,7 +8590,7 @@ xmlParseStartTag(xmlParserCtxtPtr ctxt) {
/*
* [ WFC: Unique Att Spec ]
* No attribute name may appear more than once in the same
- * start-tag or empty-element tag.
+ * start-tag or empty-element tag.
*/
for (i = 0; i < nbatts;i += 2) {
if (xmlStrEqual(atts[i], attname)) {
@@ -8269,7 +8639,7 @@ xmlParseStartTag(xmlParserCtxtPtr ctxt) {
xmlFree(attvalue);
}
-failed:
+failed:
GROW
if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
@@ -8351,7 +8721,7 @@ xmlParseEndTag1(xmlParserCtxtPtr ctxt, int line) {
/*
* [ WFC: Element Type Match ]
* The Name in an element's end-tag must match the element type in the
- * start-tag.
+ * start-tag.
*
*/
if (name != (xmlChar*)1) {
@@ -8447,7 +8817,7 @@ xmlParseQName(xmlParserCtxtPtr ctxt, const xmlChar **prefix) {
if (CUR == ':') {
l = xmlParseName(ctxt);
if (l != NULL) {
- xmlNsErr(ctxt, XML_NS_ERR_QNAME,
+ xmlNsErr(ctxt, XML_NS_ERR_QNAME,
"Failed to parse QName '%s'\n", l, NULL, NULL);
*prefix = NULL;
return(l);
@@ -8530,7 +8900,7 @@ xmlParseQNameAndCompare(xmlParserCtxtPtr ctxt, xmlChar const *name,
cmp = prefix;
while (*in != 0 && *in == *cmp) {
- ++in;
+ ++in;
++cmp;
}
if ((*cmp == 0) && (*in == ':')) {
@@ -8568,20 +8938,20 @@ xmlParseQNameAndCompare(xmlParserCtxtPtr ctxt, xmlChar const *name,
*
* 3.3.3 Attribute-Value Normalization:
* Before the value of an attribute is passed to the application or
- * checked for validity, the XML processor must normalize it as follows:
+ * checked for validity, the XML processor must normalize it as follows:
* - a character reference is processed by appending the referenced
* character to the attribute value
* - an entity reference is processed by recursively processing the
- * replacement text of the entity
+ * replacement text of the entity
* - a whitespace character (#x20, #xD, #xA, #x9) is processed by
* appending #x20 to the normalized value, except that only a single
* #x20 is appended for a "#xD#xA" sequence that is part of an external
- * parsed entity or the literal entity value of an internal parsed entity
- * - other characters are processed by appending them to the normalized value
+ * parsed entity or the literal entity value of an internal parsed entity
+ * - other characters are processed by appending them to the normalized value
* If the declared value is not CDATA, then the XML processor must further
* process the normalized attribute value by discarding any leading and
* trailing space (#x20) characters, and by replacing sequences of space
- * (#x20) characters by a single space (#x20) character.
+ * (#x20) characters by a single space (#x20) character.
* All attributes for which no declaration has been read should be treated
* by a non-validating parser as if declared CDATA.
*
@@ -8596,9 +8966,12 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc,
xmlChar limit = 0;
const xmlChar *in = NULL, *start, *end, *last;
xmlChar *ret = NULL;
+ int line, col;
GROW;
in = (xmlChar *) CUR_PTR;
+ line = ctxt->input->line;
+ col = ctxt->input->col;
if (*in != '"' && *in != '\'') {
xmlFatalErr(ctxt, XML_ERR_ATTRIBUTE_NOT_STARTED, NULL);
return (NULL);
@@ -8611,6 +8984,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc,
* pure ASCII.
*/
limit = *in++;
+ col++;
end = ctxt->input->end;
start = in;
if (in >= end) {
@@ -8627,34 +9001,56 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc,
/*
* Skip any leading spaces
*/
- while ((in < end) && (*in != limit) &&
+ while ((in < end) && (*in != limit) &&
((*in == 0x20) || (*in == 0x9) ||
(*in == 0xA) || (*in == 0xD))) {
+ if (*in == 0xA) {
+ line++; col = 1;
+ } else {
+ col++;
+ }
in++;
start = in;
if (in >= end) {
const xmlChar *oldbase = ctxt->input->base;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
if (oldbase != ctxt->input->base) {
long delta = ctxt->input->base - oldbase;
start = start + delta;
in = in + delta;
}
end = ctxt->input->end;
+ if (((in - start) > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ return(NULL);
+ }
}
}
while ((in < end) && (*in != limit) && (*in >= 0x20) &&
(*in <= 0x7f) && (*in != '&') && (*in != '<')) {
+ col++;
if ((*in++ == 0x20) && (*in == 0x20)) break;
if (in >= end) {
const xmlChar *oldbase = ctxt->input->base;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
if (oldbase != ctxt->input->base) {
long delta = ctxt->input->base - oldbase;
start = start + delta;
in = in + delta;
}
end = ctxt->input->end;
+ if (((in - start) > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ return(NULL);
+ }
}
}
last = in;
@@ -8662,13 +9058,20 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc,
* skip the trailing blanks
*/
while ((last[-1] == 0x20) && (last > start)) last--;
- while ((in < end) && (*in != limit) &&
+ while ((in < end) && (*in != limit) &&
((*in == 0x20) || (*in == 0x9) ||
(*in == 0xA) || (*in == 0xD))) {
+ if (*in == 0xA) {
+ line++, col = 1;
+ } else {
+ col++;
+ }
in++;
if (in >= end) {
const xmlChar *oldbase = ctxt->input->base;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
if (oldbase != ctxt->input->base) {
long delta = ctxt->input->base - oldbase;
start = start + delta;
@@ -8676,28 +9079,56 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc,
last = last + delta;
}
end = ctxt->input->end;
- }
- }
+ if (((in - start) > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ return(NULL);
+ }
+ }
+ }
+ if (((in - start) > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ return(NULL);
+ }
if (*in != limit) goto need_complex;
} else {
while ((in < end) && (*in != limit) && (*in >= 0x20) &&
(*in <= 0x7f) && (*in != '&') && (*in != '<')) {
in++;
+ col++;
if (in >= end) {
const xmlChar *oldbase = ctxt->input->base;
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(NULL);
if (oldbase != ctxt->input->base) {
long delta = ctxt->input->base - oldbase;
start = start + delta;
in = in + delta;
}
end = ctxt->input->end;
+ if (((in - start) > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ return(NULL);
+ }
}
}
last = in;
+ if (((in - start) > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ "AttValue length too long\n");
+ return(NULL);
+ }
if (*in != limit) goto need_complex;
}
in++;
+ col++;
if (len != NULL) {
*len = last - start;
ret = (xmlChar *) start;
@@ -8706,6 +9137,8 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc,
ret = xmlStrndup(start, last - start);
}
CUR_PTR = in;
+ ctxt->input->line = line;
+ ctxt->input->col = col;
if (alloc) *alloc = 0;
return ret;
need_complex:
@@ -8833,7 +9266,7 @@ xmlParseAttribute2(xmlParserCtxtPtr ctxt,
/**
* xmlParseStartTag2:
* @ctxt: an XML parser context
- *
+ *
* parse a start of tag either for rule element or
* EmptyElement. In both case we don't parse the tag closing chars.
* This routine is called when running SAX2 parsing
@@ -8842,13 +9275,13 @@ xmlParseAttribute2(xmlParserCtxtPtr ctxt,
*
* [ WFC: Unique Att Spec ]
* No attribute name may appear more than once in the same start-tag or
- * empty-element tag.
+ * empty-element tag.
*
* [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
*
* [ WFC: Unique Att Spec ]
* No attribute name may appear more than once in the same start-tag or
- * empty-element tag.
+ * empty-element tag.
*
* With namespace:
*
@@ -8917,9 +9350,9 @@ reparse:
GROW;
if (ctxt->input->base != base) goto base_changed;
- while ((RAW != '>') &&
+ while (((RAW != '>') &&
((RAW != '/') || (NXT(1) != '>')) &&
- (IS_BYTE_CHAR(RAW))) {
+ (IS_BYTE_CHAR(RAW))) && (ctxt->instate != XML_PARSER_EOF)) {
const xmlChar *q = CUR_PTR;
unsigned int cons = ctxt->input->consumed;
int len = -1, alloc = 0;
@@ -8938,6 +9371,12 @@ reparse:
const xmlChar *URL = xmlDictLookup(ctxt->dict, attvalue, len);
xmlURIPtr uri;
+ if (URL == NULL) {
+ xmlErrMemory(ctxt, "dictionary allocation failure");
+ if ((attvalue != NULL) && (alloc != 0))
+ xmlFree(attvalue);
+ return(NULL);
+ }
if (*URL != 0) {
uri = xmlParseURI((const char *) URL);
if (uri == NULL) {
@@ -8981,6 +9420,13 @@ reparse:
if (nsPush(ctxt, NULL, URL) > 0) nbNs++;
skip_default_ns:
if (alloc != 0) xmlFree(attvalue);
+ if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
+ break;
+ if (!IS_BLANK_CH(RAW)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
+ "attributes construct error\n");
+ break;
+ }
SKIP_BLANKS;
continue;
}
@@ -9054,6 +9500,13 @@ skip_default_ns:
if (nsPush(ctxt, attname, URL) > 0) nbNs++;
skip_ns:
if (alloc != 0) xmlFree(attvalue);
+ if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
+ break;
+ if (!IS_BLANK_CH(RAW)) {
+ xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
+ "attributes construct error\n");
+ break;
+ }
SKIP_BLANKS;
if (ctxt->input->base != base) goto base_changed;
continue;
@@ -9090,6 +9543,8 @@ skip_ns:
failed:
GROW
+ if (ctxt->instate == XML_PARSER_EOF)
+ break;
if (ctxt->input->base != base) goto base_changed;
if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
break;
@@ -9181,7 +9636,7 @@ failed:
atts[nbatts++] = defaults->values[5 * i + 3];
if ((ctxt->standalone == 1) &&
(defaults->values[5 * i + 4] != NULL)) {
- xmlValidityError(ctxt, XML_DTD_STANDALONE_DEFAULTED,
+ xmlValidityError(ctxt, XML_DTD_STANDALONE_DEFAULTED,
"standalone: attribute %s on %s defaulted from external subset\n",
attname, localname);
}
@@ -9211,7 +9666,7 @@ failed:
/*
* [ WFC: Unique Att Spec ]
* No attribute name may appear more than once in the same
- * start-tag or empty-element tag.
+ * start-tag or empty-element tag.
* As extended by the Namespace in XML REC.
*/
for (j = 0; j < i;j += 5) {
@@ -9312,9 +9767,11 @@ xmlParseEndTag2(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
if ((tlen > 0) && (xmlStrncmp(ctxt->input->cur, ctxt->name, tlen) == 0)) {
if (ctxt->input->cur[tlen] == '>') {
ctxt->input->cur += tlen + 1;
+ ctxt->input->col += tlen + 1;
goto done;
}
ctxt->input->cur += tlen;
+ ctxt->input->col += tlen;
name = (xmlChar*)1;
} else {
if (prefix == NULL)
@@ -9327,6 +9784,8 @@ xmlParseEndTag2(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
* We should definitely be at the ending "S? '>'" part
*/
GROW;
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
SKIP_BLANKS;
if ((!IS_BYTE_CHAR(RAW)) || (RAW != '>')) {
xmlFatalErr(ctxt, XML_ERR_GT_REQUIRED, NULL);
@@ -9336,7 +9795,7 @@ xmlParseEndTag2(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
/*
* [ WFC: Element Type Match ]
* The Name in an element's end-tag must match the element type in the
- * start-tag.
+ * start-tag.
*
*/
if (name != (xmlChar*)1) {
@@ -9365,7 +9824,7 @@ done:
/**
* xmlParseCDSect:
* @ctxt: an XML parser context
- *
+ *
* Parse escaped pure raw content.
*
* [18] CDSect ::= CDStart CData CDEnd
@@ -9418,14 +9877,21 @@ xmlParseCDSect(xmlParserCtxtPtr ctxt) {
if (len + 5 >= size) {
xmlChar *tmp;
- size *= 2;
- tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar));
+ if ((size > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErrMsgStr(ctxt, XML_ERR_CDATA_NOT_FINISHED,
+ "CData section too big found", NULL);
+ xmlFree (buf);
+ return;
+ }
+ tmp = (xmlChar *) xmlRealloc(buf, size * 2 * sizeof(xmlChar));
if (tmp == NULL) {
xmlFree(buf);
xmlErrMemory(ctxt, NULL);
return;
}
buf = tmp;
+ size *= 2;
}
COPY_BUF(rl,buf,len,r);
r = s;
@@ -9435,6 +9901,10 @@ xmlParseCDSect(xmlParserCtxtPtr ctxt) {
count++;
if (count > 50) {
GROW;
+ if (ctxt->instate == XML_PARSER_EOF) {
+ xmlFree(buf);
+ return;
+ }
count = 0;
}
NEXTL(l);
@@ -9514,7 +9984,7 @@ xmlParseContent(xmlParserCtxtPtr ctxt) {
/*
* Fifth case : a reference. If if has not been resolved,
- * parsing returns it's Name, create the node
+ * parsing returns it's Name, create the node
*/
else if (*cur == '&') {
@@ -9555,7 +10025,7 @@ xmlParseContent(xmlParserCtxtPtr ctxt) {
*
* [ WFC: Element Type Match ]
* The Name in an element's end-tag must match the element type in the
- * start-tag.
+ * start-tag.
*
*/
@@ -9614,7 +10084,7 @@ xmlParseElement(xmlParserCtxtPtr ctxt) {
/*
* [ VC: Root Element Type ]
* The Name in the document type declaration must match the element
- * type of the root element.
+ * type of the root element.
*/
if (ctxt->validate && ctxt->wellFormed && ctxt->myDoc &&
ctxt->node && (ctxt->node == ctxt->myDoc->children))
@@ -9683,6 +10153,8 @@ xmlParseElement(xmlParserCtxtPtr ctxt) {
* Parse the content of the element:
*/
xmlParseContent(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return;
if (!IS_BYTE_CHAR(RAW)) {
xmlFatalErrMsgStrIntStr(ctxt, XML_ERR_TAG_NOT_FINISHED,
"Premature end of data in tag %s line %d\n",
@@ -9895,7 +10367,7 @@ xmlParseEncName(xmlParserCtxtPtr ctxt) {
/**
* xmlParseEncodingDecl:
* @ctxt: an XML parser context
- *
+ *
* parse the XML encoding declaration
*
* [80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'")
@@ -9940,8 +10412,10 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ctxt) {
/*
* Non standard parsing, allowing the user to ignore encoding
*/
- if (ctxt->options & XML_PARSE_IGNORE_ENC)
- return(encoding);
+ if (ctxt->options & XML_PARSE_IGNORE_ENC) {
+ xmlFree((xmlChar *) encoding);
+ return(NULL);
+ }
/*
* UTF-16 encoding stwich has already taken place at this stage,
@@ -9952,7 +10426,7 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ctxt) {
(!xmlStrcasecmp(encoding, BAD_CAST "UTF16")))) {
/*
* If no encoding was passed to the parser, that we are
- * using UTF-16 and no decoder is present i.e. the
+ * using UTF-16 and no decoder is present i.e. the
* document is apparently UTF-8 compatible, then raise an
* encoding mismatch fatal error
*/
@@ -10003,7 +10477,7 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ctxt) {
* parse the XML standalone declaration
*
* [32] SDDecl ::= S 'standalone' Eq
- * (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no')'"'))
+ * (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no')'"'))
*
* [ VC: Standalone Document Declaration ]
* TODO The standalone document declaration must have the value "no"
@@ -10083,7 +10557,7 @@ xmlParseSDDecl(xmlParserCtxtPtr ctxt) {
/**
* xmlParseXMLDecl:
* @ctxt: an XML parser context
- *
+ *
* parse an XML declaration header
*
* [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
@@ -10197,7 +10671,7 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
/**
* xmlParseMisc:
* @ctxt: an XML parser context
- *
+ *
* parse an XML Misc* optional field.
*
* [27] Misc ::= Comment | PI | S
@@ -10205,9 +10679,10 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
void
xmlParseMisc(xmlParserCtxtPtr ctxt) {
- while (((RAW == '<') && (NXT(1) == '?')) ||
- (CMP4(CUR_PTR, '<', '!', '-', '-')) ||
- IS_BLANK_CH(CUR)) {
+ while ((ctxt->instate != XML_PARSER_EOF) &&
+ (((RAW == '<') && (NXT(1) == '?')) ||
+ (CMP4(CUR_PTR, '<', '!', '-', '-')) ||
+ IS_BLANK_CH(CUR))) {
if ((RAW == '<') && (NXT(1) == '?')) {
xmlParsePI(ctxt);
} else if (IS_BLANK_CH(CUR)) {
@@ -10220,7 +10695,7 @@ xmlParseMisc(xmlParserCtxtPtr ctxt) {
/**
* xmlParseDocument:
* @ctxt: an XML parser context
- *
+ *
* parse an XML document (and build a tree if using the standard SAX
* interface).
*
@@ -10254,10 +10729,12 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
*/
if ((ctxt->sax) && (ctxt->sax->setDocumentLocator))
ctxt->sax->setDocumentLocator(ctxt->userData, &xmlDefaultSAXLocator);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
if ((ctxt->encoding == NULL) &&
((ctxt->input->end - ctxt->input->cur) >= 4)) {
- /*
+ /*
* Get the 4 first bytes and decode the charset
* if enc != XML_CHAR_ENCODING_NONE
* plug some encoding conversion routines.
@@ -10305,6 +10782,12 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
}
if ((ctxt->sax) && (ctxt->sax->startDocument) && (!ctxt->disableSAX))
ctxt->sax->startDocument(ctxt->userData);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
+ if ((ctxt->myDoc != NULL) && (ctxt->input != NULL) &&
+ (ctxt->input->buf != NULL) && (ctxt->input->buf->compressed >= 0)) {
+ ctxt->myDoc->compression = ctxt->input->buf->compressed;
+ }
/*
* The Misc part of the Prolog
@@ -10324,6 +10807,8 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
if (RAW == '[') {
ctxt->instate = XML_PARSER_DTD;
xmlParseInternalSubset(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
}
/*
@@ -10334,6 +10819,8 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
(!ctxt->disableSAX))
ctxt->sax->externalSubset(ctxt->userData, ctxt->intSubName,
ctxt->extSubSystem, ctxt->extSubURI);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
ctxt->inSubset = 0;
xmlCleanSpecialAttr(ctxt);
@@ -10400,7 +10887,7 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) {
/**
* xmlParseExtParsedEnt:
* @ctxt: an XML parser context
- *
+ *
* parse a general parsed entity
* An external general parsed entity is well-formed if it matches the
* production labeled extParsedEnt.
@@ -10431,7 +10918,7 @@ xmlParseExtParsedEnt(xmlParserCtxtPtr ctxt) {
if ((ctxt->sax) && (ctxt->sax->setDocumentLocator))
ctxt->sax->setDocumentLocator(ctxt->userData, &xmlDefaultSAXLocator);
- /*
+ /*
* Get the 4 first bytes and decode the charset
* if enc != XML_CHAR_ENCODING_NONE
* plug some encoding conversion routines.
@@ -10474,6 +10961,8 @@ xmlParseExtParsedEnt(xmlParserCtxtPtr ctxt) {
}
if ((ctxt->sax) && (ctxt->sax->startDocument) && (!ctxt->disableSAX))
ctxt->sax->startDocument(ctxt->userData);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
/*
* Doing validity checking on chunk doesn't make sense
@@ -10484,7 +10973,9 @@ xmlParseExtParsedEnt(xmlParserCtxtPtr ctxt) {
ctxt->depth = 0;
xmlParseContent(ctxt);
-
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
+
if ((RAW == '<') && (NXT(1) == '/')) {
xmlFatalErr(ctxt, XML_ERR_NOT_WELL_BALANCED, NULL);
} else if (RAW != 0) {
@@ -10504,7 +10995,7 @@ xmlParseExtParsedEnt(xmlParserCtxtPtr ctxt) {
#ifdef LIBXML_PUSH_ENABLED
/************************************************************************
* *
- * Progressive parsing interfaces *
+ * Progressive parsing interfaces *
* *
************************************************************************/
@@ -10541,8 +11032,8 @@ xmlParseLookupSequence(xmlParserCtxtPtr ctxt, xmlChar first,
buf = in->base;
len = in->length;
} else {
- buf = in->buf->buffer->content;
- len = in->buf->buffer->use;
+ buf = xmlBufContent(in->buf->buffer);
+ len = xmlBufUse(in->buf->buffer);
}
/* take into account the sequence length */
if (third) len -= 2;
@@ -10565,7 +11056,7 @@ xmlParseLookupSequence(xmlParserCtxtPtr ctxt, xmlChar first,
xmlGenericError(xmlGenericErrorContext,
"PP: lookup '%c%c' found at %d\n",
first, next, base);
- else
+ else
xmlGenericError(xmlGenericErrorContext,
"PP: lookup '%c%c%c' found at %d\n",
first, next, third, base);
@@ -10581,7 +11072,7 @@ xmlParseLookupSequence(xmlParserCtxtPtr ctxt, xmlChar first,
else if (third == 0)
xmlGenericError(xmlGenericErrorContext,
"PP: lookup '%c%c' failed\n", first, next);
- else
+ else
xmlGenericError(xmlGenericErrorContext,
"PP: lookup '%c%c%c' failed\n", first, next, third);
#endif
@@ -10663,7 +11154,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
if ((utf == NULL) || (len <= 0))
return(0);
-
+
for (ix = 0; ix < len;) { /* string is 0-terminated */
c = utf[ix];
if ((c & 0x80) == 0x00) { /* 1-byte code, starts with 10 */
@@ -10791,11 +11282,11 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
}
xmlParseGetLasts(ctxt, &lastlt, &lastgt);
- while (1) {
+ while (ctxt->instate != XML_PARSER_EOF) {
if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX == 1))
return(0);
-
+
/*
* Pop-up of finished entities.
*/
@@ -10810,22 +11301,22 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
/*
* If we are operating on converted input, try to flush
* remainng chars to avoid them stalling in the non-converted
- * buffer.
+ * buffer. But do not do this in document start where
+ * encoding="..." may not have been read and we work on a
+ * guessed encoding.
*/
- if ((ctxt->input->buf->raw != NULL) &&
- (ctxt->input->buf->raw->use > 0)) {
- int base = ctxt->input->base -
- ctxt->input->buf->buffer->content;
- int current = ctxt->input->cur - ctxt->input->base;
+ if ((ctxt->instate != XML_PARSER_START) &&
+ (ctxt->input->buf->raw != NULL) &&
+ (xmlBufIsEmpty(ctxt->input->buf->raw) == 0)) {
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer,
+ ctxt->input);
+ size_t current = ctxt->input->cur - ctxt->input->base;
xmlParserInputBufferPush(ctxt->input->buf, 0, "");
- ctxt->input->base = ctxt->input->buf->buffer->content + base;
- ctxt->input->cur = ctxt->input->base + current;
- ctxt->input->end =
- &ctxt->input->buf->buffer->content[
- ctxt->input->buf->buffer->use];
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input,
+ base, current);
}
- avail = ctxt->input->buf->buffer->use -
+ avail = xmlBufUse(ctxt->input->buf->buffer) -
(ctxt->input->cur - ctxt->input->base);
}
if (avail < 1)
@@ -10847,7 +11338,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
if (avail < 4)
goto done;
- /*
+ /*
* Get the 4 first bytes and decode the charset
* if enc != XML_CHAR_ENCODING_NONE
* plug some encoding conversion routines,
@@ -11002,7 +11493,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
/*
* [ VC: Root Element Type ]
* The Name in the document type declaration must match
- * the element type of the root element.
+ * the element type of the root element.
*/
if (ctxt->validate && ctxt->wellFormed && ctxt->myDoc &&
ctxt->node && (ctxt->node == ctxt->myDoc->children))
@@ -11031,12 +11522,15 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
ctxt->sax->endElement(ctxt->userData, name);
#endif /* LIBXML_SAX1_ENABLED */
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
spacePop(ctxt);
if (ctxt->nameNr == 0) {
ctxt->instate = XML_PARSER_EPILOG;
} else {
ctxt->instate = XML_PARSER_CONTENT;
}
+ ctxt->progressive = 1;
break;
}
if (RAW == '>') {
@@ -11056,6 +11550,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
#endif /* LIBXML_SAX1_ENABLED */
ctxt->instate = XML_PARSER_CONTENT;
+ ctxt->progressive = 1;
break;
}
case XML_PARSER_CONTENT: {
@@ -11073,9 +11568,13 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
break;
} else if ((cur == '<') && (next == '?')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0))
+ (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0)) {
+ ctxt->progressive = XML_PARSER_PI;
goto done;
+ }
xmlParsePI(ctxt);
+ ctxt->instate = XML_PARSER_CONTENT;
+ ctxt->progressive = 1;
} else if ((cur == '<') && (next != '!')) {
ctxt->instate = XML_PARSER_START_TAG;
break;
@@ -11089,10 +11588,13 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
ctxt->input->cur += 4;
term = xmlParseLookupSequence(ctxt, '-', '-', '>');
ctxt->input->cur -= 4;
- if ((!terminate) && (term < 0))
+ if ((!terminate) && (term < 0)) {
+ ctxt->progressive = XML_PARSER_COMMENT;
goto done;
+ }
xmlParseComment(ctxt);
ctxt->instate = XML_PARSER_CONTENT;
+ ctxt->progressive = 1;
} else if ((cur == '<') && (ctxt->input->cur[1] == '!') &&
(ctxt->input->cur[2] == '[') &&
(ctxt->input->cur[3] == 'C') &&
@@ -11187,7 +11689,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
break;
case XML_PARSER_CDATA_SECTION: {
/*
- * The Push mode need to have the SAX callback for
+ * The Push mode need to have the SAX callback for
* cdataBlock merge back contiguous callbacks.
*/
int base;
@@ -11197,7 +11699,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
if (avail >= XML_PARSER_BIG_BUFFER_SIZE + 2) {
int tmp;
- tmp = xmlCheckCdataPush(ctxt->input->cur,
+ tmp = xmlCheckCdataPush(ctxt->input->cur,
XML_PARSER_BIG_BUFFER_SIZE);
if (tmp < 0) {
tmp = -tmp;
@@ -11212,6 +11714,8 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
ctxt->sax->characters(ctxt->userData,
ctxt->input->cur, tmp);
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
SKIPL(tmp);
ctxt->checkIndex = 0;
}
@@ -11247,6 +11751,8 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
ctxt->sax->characters(ctxt->userData,
ctxt->input->cur, base);
}
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
SKIPL(base + 3);
ctxt->checkIndex = 0;
ctxt->instate = XML_PARSER_CONTENT;
@@ -11263,7 +11769,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
avail = ctxt->input->length -
(ctxt->input->cur - ctxt->input->base);
else
- avail = ctxt->input->buf->buffer->use -
+ avail = xmlBufUse(ctxt->input->buf->buffer) -
(ctxt->input->cur - ctxt->input->base);
if (avail < 2)
goto done;
@@ -11271,26 +11777,37 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
next = ctxt->input->cur[1];
if ((cur == '<') && (next == '?')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0))
+ (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0)) {
+ ctxt->progressive = XML_PARSER_PI;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing PI\n");
#endif
xmlParsePI(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
+ ctxt->instate = XML_PARSER_MISC;
+ ctxt->progressive = 1;
ctxt->checkIndex = 0;
} else if ((cur == '<') && (next == '!') &&
(ctxt->input->cur[2] == '-') &&
(ctxt->input->cur[3] == '-')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0))
+ (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0)) {
+ ctxt->progressive = XML_PARSER_COMMENT;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing Comment\n");
#endif
xmlParseComment(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
ctxt->instate = XML_PARSER_MISC;
+ ctxt->progressive = 1;
ctxt->checkIndex = 0;
} else if ((cur == '<') && (next == '!') &&
(ctxt->input->cur[2] == 'D') &&
@@ -11301,14 +11818,20 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
(ctxt->input->cur[7] == 'P') &&
(ctxt->input->cur[8] == 'E')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '>', 0, 0) < 0))
+ (xmlParseLookupSequence(ctxt, '>', 0, 0) < 0)) {
+ ctxt->progressive = XML_PARSER_DTD;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing internal subset\n");
#endif
ctxt->inSubset = 1;
+ ctxt->progressive = 0;
+ ctxt->checkIndex = 0;
xmlParseDocTypeDecl(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
if (RAW == '[') {
ctxt->instate = XML_PARSER_DTD;
#ifdef DEBUG_PUSH
@@ -11338,7 +11861,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
goto done;
} else {
ctxt->instate = XML_PARSER_START_TAG;
- ctxt->progressive = 1;
+ ctxt->progressive = XML_PARSER_START_TAG;
xmlParseGetLasts(ctxt, &lastlt, &lastgt);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
@@ -11351,38 +11874,50 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
if (ctxt->input->buf == NULL)
avail = ctxt->input->length - (ctxt->input->cur - ctxt->input->base);
else
- avail = ctxt->input->buf->buffer->use - (ctxt->input->cur - ctxt->input->base);
- if (avail < 2)
+ avail = xmlBufUse(ctxt->input->buf->buffer) -
+ (ctxt->input->cur - ctxt->input->base);
+ if (avail < 2)
goto done;
cur = ctxt->input->cur[0];
next = ctxt->input->cur[1];
if ((cur == '<') && (next == '?')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0))
+ (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0)) {
+ ctxt->progressive = XML_PARSER_PI;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing PI\n");
#endif
xmlParsePI(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
+ ctxt->instate = XML_PARSER_PROLOG;
+ ctxt->progressive = 1;
} else if ((cur == '<') && (next == '!') &&
(ctxt->input->cur[2] == '-') && (ctxt->input->cur[3] == '-')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0))
+ (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0)) {
+ ctxt->progressive = XML_PARSER_COMMENT;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing Comment\n");
#endif
xmlParseComment(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
ctxt->instate = XML_PARSER_PROLOG;
+ ctxt->progressive = 1;
} else if ((cur == '<') && (next == '!') &&
(avail < 4)) {
goto done;
} else {
ctxt->instate = XML_PARSER_START_TAG;
if (ctxt->progressive == 0)
- ctxt->progressive = 1;
+ ctxt->progressive = XML_PARSER_START_TAG;
xmlParseGetLasts(ctxt, &lastlt, &lastgt);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
@@ -11395,32 +11930,43 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
if (ctxt->input->buf == NULL)
avail = ctxt->input->length - (ctxt->input->cur - ctxt->input->base);
else
- avail = ctxt->input->buf->buffer->use - (ctxt->input->cur - ctxt->input->base);
+ avail = xmlBufUse(ctxt->input->buf->buffer) -
+ (ctxt->input->cur - ctxt->input->base);
if (avail < 2)
goto done;
cur = ctxt->input->cur[0];
next = ctxt->input->cur[1];
if ((cur == '<') && (next == '?')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0))
+ (xmlParseLookupSequence(ctxt, '?', '>', 0) < 0)) {
+ ctxt->progressive = XML_PARSER_PI;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing PI\n");
#endif
xmlParsePI(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
ctxt->instate = XML_PARSER_EPILOG;
+ ctxt->progressive = 1;
} else if ((cur == '<') && (next == '!') &&
(ctxt->input->cur[2] == '-') && (ctxt->input->cur[3] == '-')) {
if ((!terminate) &&
- (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0))
+ (xmlParseLookupSequence(ctxt, '-', '-', '>') < 0)) {
+ ctxt->progressive = XML_PARSER_COMMENT;
goto done;
+ }
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext,
"PP: Parsing Comment\n");
#endif
xmlParseComment(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
ctxt->instate = XML_PARSER_EPILOG;
+ ctxt->progressive = 1;
} else if ((cur == '<') && (next == '!') &&
(avail < 4)) {
goto done;
@@ -11450,29 +11996,28 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
int base, i;
xmlChar *buf;
xmlChar quote = 0;
+ size_t use;
base = ctxt->input->cur - ctxt->input->base;
if (base < 0) return(0);
if (ctxt->checkIndex > base)
base = ctxt->checkIndex;
- buf = ctxt->input->buf->buffer->content;
- for (;(unsigned int) base < ctxt->input->buf->buffer->use;
- base++) {
+ buf = xmlBufContent(ctxt->input->buf->buffer);
+ use = xmlBufUse(ctxt->input->buf->buffer);
+ for (;(unsigned int) base < use; base++) {
if (quote != 0) {
if (buf[base] == quote)
quote = 0;
- continue;
+ continue;
}
if ((quote == 0) && (buf[base] == '<')) {
int found = 0;
/* special handling of comments */
- if (((unsigned int) base + 4 <
- ctxt->input->buf->buffer->use) &&
+ if (((unsigned int) base + 4 < use) &&
(buf[base + 1] == '!') &&
(buf[base + 2] == '-') &&
(buf[base + 3] == '-')) {
- for (;(unsigned int) base + 3 <
- ctxt->input->buf->buffer->use; base++) {
+ for (;(unsigned int) base + 3 < use; base++) {
if ((buf[base] == '-') &&
(buf[base + 1] == '-') &&
(buf[base + 2] == '>')) {
@@ -11503,17 +12048,14 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
fprintf(stderr, "%c%c%c%c: ", buf[base],
buf[base + 1], buf[base + 2], buf[base + 3]);
#endif
- if ((unsigned int) base +1 >=
- ctxt->input->buf->buffer->use)
+ if ((unsigned int) base +1 >= use)
break;
if (buf[base + 1] == ']') {
/* conditional crap, skip both ']' ! */
base++;
continue;
}
- for (i = 1;
- (unsigned int) base + i < ctxt->input->buf->buffer->use;
- i++) {
+ for (i = 1; (unsigned int) base + i < use; i++) {
if (buf[base + i] == '>') {
#if 0
fprintf(stderr, "found\n");
@@ -11531,7 +12073,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
fprintf(stderr, "end of stream\n");
#endif
break;
-
+
}
not_end_of_int_subset:
continue; /* for */
@@ -11539,6 +12081,10 @@ not_end_of_int_subset:
/*
* We didn't found the end of the Internal subset
*/
+ if (quote == 0)
+ ctxt->checkIndex = base;
+ else
+ ctxt->checkIndex = 0;
#ifdef DEBUG_PUSH
if (next == 0)
xmlGenericError(xmlGenericErrorContext,
@@ -11547,7 +12093,10 @@ not_end_of_int_subset:
goto done;
found_end_int_subset:
+ ctxt->checkIndex = 0;
xmlParseInternalSubset(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
ctxt->inSubset = 2;
if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
(ctxt->sax->externalSubset != NULL))
@@ -11555,6 +12104,8 @@ found_end_int_subset:
ctxt->extSubSystem, ctxt->extSubURI);
ctxt->inSubset = 0;
xmlCleanSpecialAttr(ctxt);
+ if (ctxt->instate == XML_PARSER_EOF)
+ goto done;
ctxt->instate = XML_PARSER_PROLOG;
ctxt->checkIndex = 0;
#ifdef DEBUG_PUSH
@@ -11637,7 +12188,7 @@ found_end_int_subset:
break;
}
}
-done:
+done:
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext, "PP: done %d\n", ret);
#endif
@@ -11657,6 +12208,55 @@ encoding_error:
}
/**
+ * xmlParseCheckTransition:
+ * @ctxt: an XML parser context
+ * @chunk: a char array
+ * @size: the size in byte of the chunk
+ *
+ * Check depending on the current parser state if the chunk given must be
+ * processed immediately or one need more data to advance on parsing.
+ *
+ * Returns -1 in case of error, 0 if the push is not needed and 1 if needed
+ */
+static int
+xmlParseCheckTransition(xmlParserCtxtPtr ctxt, const char *chunk, int size) {
+ if ((ctxt == NULL) || (chunk == NULL) || (size < 0))
+ return(-1);
+ if (ctxt->instate == XML_PARSER_START_TAG) {
+ if (memchr(chunk, '>', size) != NULL)
+ return(1);
+ return(0);
+ }
+ if (ctxt->progressive == XML_PARSER_COMMENT) {
+ if (memchr(chunk, '>', size) != NULL)
+ return(1);
+ return(0);
+ }
+ if (ctxt->instate == XML_PARSER_CDATA_SECTION) {
+ if (memchr(chunk, '>', size) != NULL)
+ return(1);
+ return(0);
+ }
+ if (ctxt->progressive == XML_PARSER_PI) {
+ if (memchr(chunk, '>', size) != NULL)
+ return(1);
+ return(0);
+ }
+ if (ctxt->instate == XML_PARSER_END_TAG) {
+ if (memchr(chunk, '>', size) != NULL)
+ return(1);
+ return(0);
+ }
+ if ((ctxt->progressive == XML_PARSER_DTD) ||
+ (ctxt->instate == XML_PARSER_DTD)) {
+ if (memchr(chunk, '>', size) != NULL)
+ return(1);
+ return(0);
+ }
+ return(1);
+}
+
+/**
* xmlParseChunk:
* @ctxt: an XML parser context
* @chunk: an char array
@@ -11672,11 +12272,15 @@ xmlParseChunk(xmlParserCtxtPtr ctxt, const char *chunk, int size,
int terminate) {
int end_in_lf = 0;
int remain = 0;
+ size_t old_avail = 0;
+ size_t avail = 0;
if (ctxt == NULL)
return(XML_ERR_INTERNAL_ERROR);
if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX == 1))
return(ctxt->errNo);
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(-1);
if (ctxt->instate == XML_PARSER_START)
xmlDetectSAX2(ctxt);
if ((size > 0) && (chunk != NULL) && (!terminate) &&
@@ -11689,10 +12293,11 @@ xmldecl_done:
if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) &&
(ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF)) {
- int base = ctxt->input->base - ctxt->input->buf->buffer->content;
- int cur = ctxt->input->cur - ctxt->input->base;
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input);
+ size_t cur = ctxt->input->cur - ctxt->input->base;
int res;
+ old_avail = xmlBufUse(ctxt->input->buf->buffer);
/*
* Specific handling if we autodetected an encoding, we should not
* push more than the first line ... which depend on the encoding
@@ -11728,16 +12333,13 @@ xmldecl_done:
remain = 0;
}
}
- res =xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
+ res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
if (res < 0) {
ctxt->errNo = XML_PARSER_EOF;
ctxt->disableSAX = 1;
return (XML_PARSER_EOF);
}
- ctxt->input->base = ctxt->input->buf->buffer->content + base;
- ctxt->input->cur = ctxt->input->base + cur;
- ctxt->input->end =
- &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use];
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext, "PP: pushed %d\n", size);
#endif
@@ -11748,21 +12350,48 @@ xmldecl_done:
if ((in->encoder != NULL) && (in->buffer != NULL) &&
(in->raw != NULL)) {
int nbchars;
+ size_t base = xmlBufGetInputBase(in->buffer, ctxt->input);
+ size_t current = ctxt->input->cur - ctxt->input->base;
- nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw);
+ nbchars = xmlCharEncInput(in, terminate);
if (nbchars < 0) {
/* TODO 2.6.0 */
xmlGenericError(xmlGenericErrorContext,
"xmlParseChunk: encoder error\n");
return(XML_ERR_INVALID_ENCODING);
}
+ xmlBufSetInputBaseCur(in->buffer, ctxt->input, base, current);
}
}
}
- if (remain != 0)
+ if (remain != 0) {
xmlParseTryOrFinish(ctxt, 0);
- else
- xmlParseTryOrFinish(ctxt, terminate);
+ } else {
+ if ((ctxt->input != NULL) && (ctxt->input->buf != NULL))
+ avail = xmlBufUse(ctxt->input->buf->buffer);
+ /*
+ * Depending on the current state it may not be such
+ * a good idea to try parsing if there is nothing in the chunk
+ * which would be worth doing a parser state transition and we
+ * need to wait for more data
+ */
+ if ((terminate) || (avail > XML_MAX_TEXT_LENGTH) ||
+ (old_avail == 0) || (avail == 0) ||
+ (xmlParseCheckTransition(ctxt,
+ (const char *)&ctxt->input->base[old_avail],
+ avail - old_avail)))
+ xmlParseTryOrFinish(ctxt, terminate);
+ }
+ if (ctxt->instate == XML_PARSER_EOF)
+ return(ctxt->errNo);
+
+ if ((ctxt->input != NULL) &&
+ (((ctxt->input->end - ctxt->input->cur) > XML_MAX_LOOKUP_LIMIT) ||
+ ((ctxt->input->cur - ctxt->input->base) > XML_MAX_LOOKUP_LIMIT)) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "Huge input lookup");
+ ctxt->instate = XML_PARSER_EOF;
+ }
if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX == 1))
return(ctxt->errNo);
@@ -11774,28 +12403,35 @@ xmldecl_done:
}
if ((end_in_lf == 1) && (ctxt->input != NULL) &&
(ctxt->input->buf != NULL)) {
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer,
+ ctxt->input);
+ size_t current = ctxt->input->cur - ctxt->input->base;
+
xmlParserInputBufferPush(ctxt->input->buf, 1, "\r");
+
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input,
+ base, current);
}
if (terminate) {
/*
* Check for termination
*/
- int avail = 0;
+ int cur_avail = 0;
if (ctxt->input != NULL) {
if (ctxt->input->buf == NULL)
- avail = ctxt->input->length -
- (ctxt->input->cur - ctxt->input->base);
+ cur_avail = ctxt->input->length -
+ (ctxt->input->cur - ctxt->input->base);
else
- avail = ctxt->input->buf->buffer->use -
- (ctxt->input->cur - ctxt->input->base);
+ cur_avail = xmlBufUse(ctxt->input->buf->buffer) -
+ (ctxt->input->cur - ctxt->input->base);
}
-
+
if ((ctxt->instate != XML_PARSER_EOF) &&
(ctxt->instate != XML_PARSER_EPILOG)) {
xmlFatalErr(ctxt, XML_ERR_DOCUMENT_END, NULL);
- }
- if ((ctxt->instate == XML_PARSER_EPILOG) && (avail > 0)) {
+ }
+ if ((ctxt->instate == XML_PARSER_EPILOG) && (cur_avail > 0)) {
xmlFatalErr(ctxt, XML_ERR_DOCUMENT_END, NULL);
}
if (ctxt->instate != XML_PARSER_EOF) {
@@ -11804,12 +12440,15 @@ xmldecl_done:
}
ctxt->instate = XML_PARSER_EOF;
}
- return((xmlParserErrors) ctxt->errNo);
+ if (ctxt->wellFormed == 0)
+ return((xmlParserErrors) ctxt->errNo);
+ else
+ return(0);
}
/************************************************************************
* *
- * I/O front end functions to the parser *
+ * I/O front end functions to the parser *
* *
************************************************************************/
@@ -11833,7 +12472,7 @@ xmldecl_done:
*/
xmlParserCtxtPtr
-xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
+xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
const char *chunk, int size, const char *filename) {
xmlParserCtxtPtr ctxt;
xmlParserInputPtr inputStream;
@@ -11882,7 +12521,7 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
memcpy(ctxt->sax, sax, sizeof(xmlSAXHandlerV1));
if (user_data != NULL)
ctxt->userData = user_data;
- }
+ }
if (filename == NULL) {
ctxt->directory = NULL;
} else {
@@ -11908,11 +12547,7 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
}
}
inputStream->buf = buf;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end =
- &inputStream->buf->buffer->content[inputStream->buf->buffer->use];
-
+ xmlBufResetInput(inputStream->buf->buffer, inputStream);
inputPush(ctxt, inputStream);
/*
@@ -11923,15 +12558,12 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
if ((size == 0) || (chunk == NULL)) {
ctxt->charset = XML_CHAR_ENCODING_NONE;
} else if ((ctxt->input != NULL) && (ctxt->input->buf != NULL)) {
- int base = ctxt->input->base - ctxt->input->buf->buffer->content;
- int cur = ctxt->input->cur - ctxt->input->base;
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input);
+ size_t cur = ctxt->input->cur - ctxt->input->base;
- xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
+ xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
- ctxt->input->base = ctxt->input->buf->buffer->content + base;
- ctxt->input->cur = ctxt->input->base + cur;
- ctxt->input->end =
- &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use];
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext, "PP: pushed %d\n", size);
#endif
@@ -11951,11 +12583,12 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
*
* Blocks further parser processing
*/
-void
+void
xmlStopParser(xmlParserCtxtPtr ctxt) {
if (ctxt == NULL)
return;
ctxt->instate = XML_PARSER_EOF;
+ ctxt->errNo = XML_ERR_USER_STOP;
ctxt->disableSAX = 1;
if (ctxt->input != NULL) {
ctxt->input->cur = BAD_CAST"";
@@ -12032,7 +12665,7 @@ xmlCreateIOParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
#ifdef LIBXML_VALID_ENABLED
/************************************************************************
* *
- * Front ends when parsing a DTD *
+ * Front ends when parsing a DTD *
* *
************************************************************************/
@@ -12043,7 +12676,7 @@ xmlCreateIOParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
* @enc: the charset encoding if known
*
* Load and parse a DTD
- *
+ *
* Returns the resulting xmlDtdPtr or NULL in case of error.
* @input will be freed by the function in any case.
*/
@@ -12065,10 +12698,13 @@ xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlParserInputBufferPtr input,
return(NULL);
}
+ /* We are loading a DTD */
+ ctxt->options |= XML_PARSE_DTDLOAD;
+
/*
* Set-up the SAX context
*/
- if (sax != NULL) {
+ if (sax != NULL) {
if (ctxt->sax != NULL)
xmlFree(ctxt->sax);
ctxt->sax = sax;
@@ -12122,7 +12758,7 @@ xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlParserInputBufferPtr input,
if ((enc == XML_CHAR_ENCODING_NONE) &&
((ctxt->input->end - ctxt->input->cur) >= 4)) {
- /*
+ /*
* Get the 4 first bytes and decode the charset
* if enc != XML_CHAR_ENCODING_NONE
* plug some encoding conversion routines.
@@ -12161,7 +12797,7 @@ xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlParserInputBufferPtr input,
}
if (sax != NULL) ctxt->sax = NULL;
xmlFreeParserCtxt(ctxt);
-
+
return(ret);
}
@@ -12172,7 +12808,7 @@ xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlParserInputBufferPtr input,
* @SystemID: a NAME* containing the URL to the DTD
*
* Load and parse an external subset.
- *
+ *
* Returns the resulting xmlDtdPtr or NULL in case of error.
*/
@@ -12192,16 +12828,19 @@ xmlSAXParseDTD(xmlSAXHandlerPtr sax, const xmlChar *ExternalID,
return(NULL);
}
+ /* We are loading a DTD */
+ ctxt->options |= XML_PARSE_DTDLOAD;
+
/*
* Set-up the SAX context
*/
- if (sax != NULL) {
+ if (sax != NULL) {
if (ctxt->sax != NULL)
xmlFree(ctxt->sax);
ctxt->sax = sax;
ctxt->userData = ctxt;
}
-
+
/*
* Canonicalise the system ID
*/
@@ -12312,7 +12951,7 @@ xmlParseDTD(const xmlChar *ExternalID, const xmlChar *SystemID) {
/************************************************************************
* *
- * Front ends when parsing an Entity *
+ * Front ends when parsing an Entity *
* *
************************************************************************/
@@ -12428,7 +13067,7 @@ xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx, const xmlChar *URL,
*/
if ((xmlStrEqual(ctx->version, BAD_CAST "1.0")) &&
(!xmlStrEqual(ctxt->input->version, BAD_CAST "1.0"))) {
- xmlFatalErrMsg(ctxt, XML_ERR_VERSION_MISMATCH,
+ xmlFatalErrMsg(ctxt, XML_ERR_VERSION_MISMATCH,
"Version mismatch between document and entity\n");
}
}
@@ -12711,7 +13350,7 @@ xmlParseExternalEntityPrivate(xmlDocPtr doc, xmlParserCtxtPtr oldctxt,
if (ctxt->lastError.code != XML_ERR_OK)
xmlCopyError(&ctxt->lastError, &oldctxt->lastError);
- if (sax != NULL)
+ if (sax != NULL)
ctxt->sax = oldsax;
oldctxt->node_seq.maximum = ctxt->node_seq.maximum;
oldctxt->node_seq.length = ctxt->node_seq.length;
@@ -13081,7 +13720,7 @@ xmlParseInNodeContext(xmlNodePtr node, const char *data, int datalen,
xmlFree((xmlChar *) ctxt->encoding);
ctxt->encoding = xmlStrdup((const xmlChar *) doc->encoding);
- hdlr = xmlFindCharEncodingHandler(doc->encoding);
+ hdlr = xmlFindCharEncodingHandler((const char *) doc->encoding);
if (hdlr != NULL) {
xmlSwitchToEncoding(ctxt, hdlr);
} else {
@@ -13092,6 +13731,8 @@ xmlParseInNodeContext(xmlNodePtr node, const char *data, int datalen,
xmlCtxtUseOptionsInternal(ctxt, options, NULL);
xmlDetectSAX2(ctxt);
ctxt->myDoc = doc;
+ /* parsing in context, i.e. as within existing content */
+ ctxt->instate = XML_PARSER_CONTENT;
fake = xmlNewComment(NULL);
if (fake == NULL) {
@@ -13127,7 +13768,6 @@ xmlParseInNodeContext(xmlNodePtr node, const char *data, int datalen,
}
cur = cur->parent;
}
- ctxt->instate = XML_PARSER_CONTENT;
}
if ((ctxt->validate) || (ctxt->replaceEntities != 0)) {
@@ -13530,7 +14170,7 @@ xmlCreateEntityParserCtxt(const xmlChar *URL, const xmlChar *ID,
* @filename: the filename or URL
* @options: a combination of xmlParserOption
*
- * Create a parser context for a file or URL content.
+ * Create a parser context for a file or URL content.
* Automatic support for ZLIB/Compress compressed document is provided
* by default if found at compile-time and for file accesses
*
@@ -13572,7 +14212,7 @@ xmlCreateURLParserCtxt(const char *filename, int options)
* xmlCreateFileParserCtxt:
* @filename: the filename
*
- * Create a parser context for a file content.
+ * Create a parser context for a file content.
* Automatic support for ZLIB/Compress compressed document is provided
* by default if found at compile-time.
*
@@ -13650,7 +14290,7 @@ xmlSAXParseFileWithData(xmlSAXHandlerPtr sax, const char *filename,
if (sax != NULL)
ctxt->sax = NULL;
xmlFreeParserCtxt(ctxt);
-
+
return(ret);
}
@@ -13750,7 +14390,7 @@ xmlSetupParserForBuffer(xmlParserCtxtPtr ctxt, const xmlChar* buffer,
xmlClearParserCtxt(ctxt);
return;
}
-
+
xmlClearParserCtxt(ctxt);
if (filename != NULL)
input->filename = (char *) xmlCanonicPath((const xmlChar *)filename);
@@ -13768,7 +14408,7 @@ xmlSetupParserForBuffer(xmlParserCtxtPtr ctxt, const xmlChar* buffer,
*
* parse an XML file and call the given SAX handler routines.
* Automatic support for ZLIB/Compress compressed document is provided
- *
+ *
* Returns 0 in case of success or a error number otherwise
*/
int
@@ -13776,7 +14416,7 @@ xmlSAXUserParseFile(xmlSAXHandlerPtr sax, void *user_data,
const char *filename) {
int ret = 0;
xmlParserCtxtPtr ctxt;
-
+
ctxt = xmlCreateFileParserCtxt(filename);
if (ctxt == NULL) return -1;
if (ctxt->sax != (xmlSAXHandlerPtr) &xmlDefaultSAXHandler)
@@ -13786,9 +14426,9 @@ xmlSAXUserParseFile(xmlSAXHandlerPtr sax, void *user_data,
if (user_data != NULL)
ctxt->userData = user_data;
-
+
xmlParseDocument(ctxt);
-
+
if (ctxt->wellFormed)
ret = 0;
else {
@@ -13804,14 +14444,14 @@ xmlSAXUserParseFile(xmlSAXHandlerPtr sax, void *user_data,
ctxt->myDoc = NULL;
}
xmlFreeParserCtxt(ctxt);
-
+
return ret;
}
#endif /* LIBXML_SAX1_ENABLED */
/************************************************************************
* *
- * Front ends when parsing from memory *
+ * Front ends when parsing from memory *
* *
************************************************************************/
@@ -13855,9 +14495,7 @@ xmlCreateMemoryParserCtxt(const char *buffer, int size) {
input->filename = NULL;
input->buf = buf;
- input->base = input->buf->buffer->content;
- input->cur = input->buf->buffer->content;
- input->end = &input->buf->buffer->content[input->buf->buffer->use];
+ xmlBufResetInput(input->buf->buffer, input);
inputPush(ctxt, input);
return(ctxt);
@@ -13913,7 +14551,7 @@ xmlSAXParseMemoryWithData(xmlSAXHandlerPtr sax, const char *buffer,
xmlFreeDoc(ctxt->myDoc);
ctxt->myDoc = NULL;
}
- if (sax != NULL)
+ if (sax != NULL)
ctxt->sax = NULL;
xmlFreeParserCtxt(ctxt);
@@ -13931,7 +14569,7 @@ xmlSAXParseMemoryWithData(xmlSAXHandlerPtr sax, const char *buffer,
* parse an XML in-memory block and use the given SAX function block
* to handle the parsing callback. If sax is NULL, fallback to the default
* DOM tree building routines.
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -13946,7 +14584,7 @@ xmlSAXParseMemory(xmlSAXHandlerPtr sax, const char *buffer,
* @size: the size of the array
*
* parse an XML in-memory block and build a tree.
- *
+ *
* Returns the resulting document tree
*/
@@ -14000,7 +14638,7 @@ int xmlSAXUserParseMemory(xmlSAXHandlerPtr sax, void *user_data,
ctxt->userData = user_data;
xmlParseDocument(ctxt);
-
+
if (ctxt->wellFormed)
ret = 0;
else {
@@ -14016,7 +14654,7 @@ int xmlSAXUserParseMemory(xmlSAXHandlerPtr sax, void *user_data,
ctxt->myDoc = NULL;
}
xmlFreeParserCtxt(ctxt);
-
+
return ret;
}
#endif /* LIBXML_SAX1_ENABLED */
@@ -14050,7 +14688,7 @@ xmlCreateDocParserCtxt(const xmlChar *cur) {
* parse an XML in-memory document and build a tree.
* It use the given SAX function block to handle the parsing callback.
* If sax is NULL, fallback to the default DOM tree building routines.
- *
+ *
* Returns the resulting document tree
*/
@@ -14065,7 +14703,7 @@ xmlSAXParseDoc(xmlSAXHandlerPtr sax, const xmlChar *cur, int recovery) {
ctxt = xmlCreateDocParserCtxt(cur);
if (ctxt == NULL) return(NULL);
- if (sax != NULL) {
+ if (sax != NULL) {
oldsax = ctxt->sax;
ctxt->sax = sax;
ctxt->userData = NULL;
@@ -14082,7 +14720,7 @@ xmlSAXParseDoc(xmlSAXHandlerPtr sax, const xmlChar *cur, int recovery) {
if (sax != NULL)
ctxt->sax = oldsax;
xmlFreeParserCtxt(ctxt);
-
+
return(ret);
}
@@ -14091,7 +14729,7 @@ xmlSAXParseDoc(xmlSAXHandlerPtr sax, const xmlChar *cur, int recovery) {
* @cur: a pointer to an array of xmlChar
*
* parse an XML in-memory document and build a tree.
- *
+ *
* Returns the resulting document tree
*/
@@ -14104,8 +14742,8 @@ xmlParseDoc(const xmlChar *cur) {
#ifdef LIBXML_LEGACY_ENABLED
/************************************************************************
* *
- * Specific function to keep track of entities references *
- * and used by the XSLT debugger *
+ * Specific function to keep track of entities references *
+ * and used by the XSLT debugger *
* *
************************************************************************/
@@ -14115,7 +14753,7 @@ static xmlEntityReferenceFunc xmlEntityRefFunc = NULL;
* xmlAddEntityReference:
* @ent : A valid entity
* @firstNode : A valid first node for children of entity
- * @lastNode : A valid last node of children entity
+ * @lastNode : A valid last node of children entity
*
* Notify of a reference to an entity of type XML_EXTERNAL_GENERAL_PARSED_ENTITY
*/
@@ -14144,7 +14782,7 @@ xmlSetEntityReferenceFunc(xmlEntityReferenceFunc func)
/************************************************************************
* *
- * Miscellaneous *
+ * Miscellaneous *
* *
************************************************************************/
@@ -14192,6 +14830,9 @@ xmlInitParser(void) {
#ifdef LIBXML_XPATH_ENABLED
xmlXPathInit();
#endif
+#ifdef LIBXML_CATALOG_ENABLED
+ xmlInitializeCatalog();
+#endif
xmlParserInitialized = 1;
#ifdef LIBXML_THREAD_ENABLED
}
@@ -14239,8 +14880,8 @@ xmlCleanupParser(void) {
xmlSchemaCleanupTypes();
xmlRelaxNGCleanupTypes();
#endif
- xmlCleanupGlobals();
xmlResetLastError();
+ xmlCleanupGlobals();
xmlCleanupThreads(); /* must be last if called not from the main thread */
xmlCleanupMemory();
xmlParserInitialized = 0;
@@ -14260,7 +14901,7 @@ xmlCleanupParser(void) {
* current scope
*/
#define DICT_FREE(str) \
- if ((str) && ((!dict) || \
+ if ((str) && ((!dict) || \
(xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \
xmlFree((char *)(str));
@@ -14275,7 +14916,7 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
{
xmlParserInputPtr input;
xmlDictPtr dict;
-
+
if (ctxt == NULL)
return;
@@ -14343,6 +14984,7 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
ctxt->catalogs = NULL;
ctxt->nbentities = 0;
ctxt->sizeentities = 0;
+ ctxt->sizeentcopy = 0;
xmlInitNodeInfoSeq(&ctxt->node_seq);
if (ctxt->attsDefault != NULL) {
@@ -14427,25 +15069,18 @@ xmlCtxtResetPush(xmlParserCtxtPtr ctxt, const char *chunk,
inputStream->filename = (char *)
xmlCanonicPath((const xmlChar *) filename);
inputStream->buf = buf;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end =
- &inputStream->buf->buffer->content[inputStream->buf->buffer->use];
+ xmlBufResetInput(buf->buffer, inputStream);
inputPush(ctxt, inputStream);
if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) &&
(ctxt->input->buf != NULL)) {
- int base = ctxt->input->base - ctxt->input->buf->buffer->content;
- int cur = ctxt->input->cur - ctxt->input->base;
+ size_t base = xmlBufGetInputBase(ctxt->input->buf->buffer, ctxt->input);
+ size_t cur = ctxt->input->cur - ctxt->input->base;
xmlParserInputBufferPush(ctxt->input->buf, size, chunk);
- ctxt->input->base = ctxt->input->buf->buffer->content + base;
- ctxt->input->cur = ctxt->input->base + cur;
- ctxt->input->end =
- &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->
- use];
+ xmlBufSetInputBaseCur(ctxt->input->buf->buffer, ctxt->input, base, cur);
#ifdef DEBUG_PUSH
xmlGenericError(xmlGenericErrorContext, "PP: pushed %d\n", size);
#endif
@@ -14596,6 +15231,8 @@ xmlCtxtUseOptionsInternal(xmlParserCtxtPtr ctxt, int options, const char *encodi
if (options & XML_PARSE_HUGE) {
ctxt->options |= XML_PARSE_HUGE;
options -= XML_PARSE_HUGE;
+ if (ctxt->dict != NULL)
+ xmlDictSetLimit(ctxt->dict, 0);
}
if (options & XML_PARSE_OLDSAX) {
ctxt->options |= XML_PARSE_OLDSAX;
@@ -14605,6 +15242,10 @@ xmlCtxtUseOptionsInternal(xmlParserCtxtPtr ctxt, int options, const char *encodi
ctxt->options |= XML_PARSE_IGNORE_ENC;
options -= XML_PARSE_IGNORE_ENC;
}
+ if (options & XML_PARSE_BIG_LINES) {
+ ctxt->options |= XML_PARSE_BIG_LINES;
+ options -= XML_PARSE_BIG_LINES;
+ }
ctxt->linenumbers = 1;
return (options);
}
@@ -14679,7 +15320,7 @@ xmlDoRead(xmlParserCtxtPtr ctxt, const char *URL, const char *encoding,
* @options: a combination of xmlParserOption
*
* parse an XML in-memory document and build a tree.
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14689,6 +15330,7 @@ xmlReadDoc(const xmlChar * cur, const char *URL, const char *encoding, int optio
if (cur == NULL)
return (NULL);
+ xmlInitParser();
ctxt = xmlCreateDocParserCtxt(cur);
if (ctxt == NULL)
@@ -14703,7 +15345,7 @@ xmlReadDoc(const xmlChar * cur, const char *URL, const char *encoding, int optio
* @options: a combination of xmlParserOption
*
* parse an XML file from the filesystem or the network.
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14711,6 +15353,7 @@ xmlReadFile(const char *filename, const char *encoding, int options)
{
xmlParserCtxtPtr ctxt;
+ xmlInitParser();
ctxt = xmlCreateURLParserCtxt(filename, options);
if (ctxt == NULL)
return (NULL);
@@ -14726,7 +15369,7 @@ xmlReadFile(const char *filename, const char *encoding, int options)
* @options: a combination of xmlParserOption
*
* parse an XML in-memory document and build a tree.
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14734,6 +15377,7 @@ xmlReadMemory(const char *buffer, int size, const char *URL, const char *encodin
{
xmlParserCtxtPtr ctxt;
+ xmlInitParser();
ctxt = xmlCreateMemoryParserCtxt(buffer, size);
if (ctxt == NULL)
return (NULL);
@@ -14750,7 +15394,7 @@ xmlReadMemory(const char *buffer, int size, const char *URL, const char *encodin
* parse an XML from a file descriptor and build a tree.
* NOTE that the file descriptor will not be closed when the
* reader is closed or reset.
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14762,6 +15406,7 @@ xmlReadFd(int fd, const char *URL, const char *encoding, int options)
if (fd < 0)
return (NULL);
+ xmlInitParser();
input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE);
if (input == NULL)
@@ -14805,6 +15450,7 @@ xmlReadIO(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose,
if (ioread == NULL)
return (NULL);
+ xmlInitParser();
input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx,
XML_CHAR_ENCODING_NONE);
@@ -14851,6 +15497,7 @@ xmlCtxtReadDoc(xmlParserCtxtPtr ctxt, const xmlChar * cur,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
xmlCtxtReset(ctxt);
@@ -14871,7 +15518,7 @@ xmlCtxtReadDoc(xmlParserCtxtPtr ctxt, const xmlChar * cur,
*
* parse an XML file from the filesystem or the network.
* This reuses the existing @ctxt parser context
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14884,6 +15531,7 @@ xmlCtxtReadFile(xmlParserCtxtPtr ctxt, const char *filename,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
xmlCtxtReset(ctxt);
@@ -14906,7 +15554,7 @@ xmlCtxtReadFile(xmlParserCtxtPtr ctxt, const char *filename,
*
* parse an XML in-memory document and build a tree.
* This reuses the existing @ctxt parser context
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14920,6 +15568,7 @@ xmlCtxtReadMemory(xmlParserCtxtPtr ctxt, const char *buffer, int size,
return (NULL);
if (buffer == NULL)
return (NULL);
+ xmlInitParser();
xmlCtxtReset(ctxt);
@@ -14950,7 +15599,7 @@ xmlCtxtReadMemory(xmlParserCtxtPtr ctxt, const char *buffer, int size,
* This reuses the existing @ctxt parser context
* NOTE that the file descriptor will not be closed when the
* reader is closed or reset.
- *
+ *
* Returns the resulting document tree
*/
xmlDocPtr
@@ -14964,6 +15613,7 @@ xmlCtxtReadFd(xmlParserCtxtPtr ctxt, int fd,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
xmlCtxtReset(ctxt);
@@ -15009,6 +15659,7 @@ xmlCtxtReadIO(xmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
return (NULL);
if (ctxt == NULL)
return (NULL);
+ xmlInitParser();
xmlCtxtReset(ctxt);
diff --git a/parserInternals.c b/parserInternals.c
index 746b7fd..df204fd 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -55,6 +55,9 @@
#include <libxml/globals.h>
#include <libxml/chvalid.h>
+#include "buf.h"
+#include "enc.h"
+
/*
* Various global defaults for parsing
*/
@@ -73,15 +76,15 @@ xmlCheckVersion(int version) {
xmlInitParser();
if ((myversion / 10000) != (version / 10000)) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Fatal: program compiled against libxml %d using libxml %d\n",
(version / 10000), (myversion / 10000));
- fprintf(stderr,
+ fprintf(stderr,
"Fatal: program compiled against libxml %d using libxml %d\n",
(version / 10000), (myversion / 10000));
}
if ((myversion / 100) < (version / 100)) {
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"Warning: program compiled against libxml %d using older %d\n",
(version / 100), (myversion / 100));
}
@@ -90,7 +93,7 @@ xmlCheckVersion(int version) {
/************************************************************************
* *
- * Some factorized error routines *
+ * Some factorized error routines *
* *
************************************************************************/
@@ -225,7 +228,7 @@ xmlIsLetter(int c) {
/************************************************************************
* *
- * Input handling functions for progressive parsing *
+ * Input handling functions for progressive parsing *
* *
************************************************************************/
@@ -242,7 +245,7 @@ xmlIsLetter(int c) {
static
void check_buffer(xmlParserInputPtr in) {
- if (in->base != in->buf->buffer->content) {
+ if (in->base != xmlBufContent(in->buf->buffer)) {
xmlGenericError(xmlGenericErrorContext,
"xmlParserInput: base mismatch problem\n");
}
@@ -250,17 +253,17 @@ void check_buffer(xmlParserInputPtr in) {
xmlGenericError(xmlGenericErrorContext,
"xmlParserInput: cur < base problem\n");
}
- if (in->cur > in->base + in->buf->buffer->use) {
+ if (in->cur > in->base + xmlBufUse(in->buf->buffer)) {
xmlGenericError(xmlGenericErrorContext,
"xmlParserInput: cur > base + use problem\n");
}
- xmlGenericError(xmlGenericErrorContext,"buffer %x : content %x, cur %d, use %d, size %d\n",
- (int) in, (int) in->buf->buffer->content, in->cur - in->base,
- in->buf->buffer->use, in->buf->buffer->size);
+ xmlGenericError(xmlGenericErrorContext,"buffer %x : content %x, cur %d, use %d\n",
+ (int) in, (int) xmlBufContent(in->buf->buffer), in->cur - in->base,
+ xmlBufUse(in->buf->buffer));
}
#else
-#define CHECK_BUFFER(in)
+#define CHECK_BUFFER(in)
#endif
@@ -269,50 +272,13 @@ void check_buffer(xmlParserInputPtr in) {
* @in: an XML parser input
* @len: an indicative size for the lookahead
*
- * This function refresh the input for the parser. It doesn't try to
- * preserve pointers to the input buffer, and discard already read data
+ * This function was internal and is deprecated.
*
- * Returns the number of xmlChars read, or -1 in case of error, 0 indicate the
- * end of this entity
+ * Returns -1 as this is an error to use it.
*/
int
-xmlParserInputRead(xmlParserInputPtr in, int len) {
- int ret;
- int used;
- int indx;
-
- if (in == NULL) return(-1);
-#ifdef DEBUG_INPUT
- xmlGenericError(xmlGenericErrorContext, "Read\n");
-#endif
- if (in->buf == NULL) return(-1);
- if (in->base == NULL) return(-1);
- if (in->cur == NULL) return(-1);
- if (in->buf->buffer == NULL) return(-1);
- if (in->buf->readcallback == NULL) return(-1);
-
- CHECK_BUFFER(in);
-
- used = in->cur - in->buf->buffer->content;
- ret = xmlBufferShrink(in->buf->buffer, used);
- if (ret > 0) {
- in->cur -= ret;
- in->consumed += ret;
- }
- ret = xmlParserInputBufferRead(in->buf, len);
- if (in->base != in->buf->buffer->content) {
- /*
- * the buffer has been reallocated
- */
- indx = in->cur - in->base;
- in->base = in->buf->buffer->content;
- in->cur = &in->buf->buffer->content[indx];
- }
- in->end = &in->buf->buffer->content[in->buf->buffer->use];
-
- CHECK_BUFFER(in);
-
- return(ret);
+xmlParserInputRead(xmlParserInputPtr in ATTRIBUTE_UNUSED, int len ATTRIBUTE_UNUSED) {
+ return(-1);
}
/**
@@ -323,15 +289,16 @@ xmlParserInputRead(xmlParserInputPtr in, int len) {
* This function increase the input for the parser. It tries to
* preserve pointers to the input buffer, and keep already read data
*
- * Returns the number of xmlChars read, or -1 in case of error, 0 indicate the
+ * Returns the amount of char read, or -1 in case of error, 0 indicate the
* end of this entity
*/
int
xmlParserInputGrow(xmlParserInputPtr in, int len) {
- int ret;
- int indx;
+ size_t ret;
+ size_t indx;
+ const xmlChar *content;
- if (in == NULL) return(-1);
+ if ((in == NULL) || (len < 0)) return(-1);
#ifdef DEBUG_INPUT
xmlGenericError(xmlGenericErrorContext, "Grow\n");
#endif
@@ -343,15 +310,15 @@ xmlParserInputGrow(xmlParserInputPtr in, int len) {
CHECK_BUFFER(in);
indx = in->cur - in->base;
- if (in->buf->buffer->use > (unsigned int) indx + INPUT_CHUNK) {
+ if (xmlBufUse(in->buf->buffer) > (unsigned int) indx + INPUT_CHUNK) {
CHECK_BUFFER(in);
return(0);
}
- if (in->buf->readcallback != NULL)
+ if (in->buf->readcallback != NULL) {
ret = xmlParserInputBufferGrow(in->buf, len);
- else
+ } else
return(0);
/*
@@ -360,15 +327,17 @@ xmlParserInputGrow(xmlParserInputPtr in, int len) {
* pointer arithmetic. Insure will raise it as a bug but in
* that specific case, that's not !
*/
- if (in->base != in->buf->buffer->content) {
+
+ content = xmlBufContent(in->buf->buffer);
+ if (in->base != content) {
/*
* the buffer has been reallocated
*/
indx = in->cur - in->base;
- in->base = in->buf->buffer->content;
- in->cur = &in->buf->buffer->content[indx];
+ in->base = content;
+ in->cur = &content[indx];
}
- in->end = &in->buf->buffer->content[in->buf->buffer->use];
+ in->end = xmlBufEnd(in->buf->buffer);
CHECK_BUFFER(in);
@@ -383,9 +352,10 @@ xmlParserInputGrow(xmlParserInputPtr in, int len) {
*/
void
xmlParserInputShrink(xmlParserInputPtr in) {
- int used;
- int ret;
- int indx;
+ size_t used;
+ size_t ret;
+ size_t indx;
+ const xmlChar *content;
#ifdef DEBUG_INPUT
xmlGenericError(xmlGenericErrorContext, "Shrink\n");
@@ -398,42 +368,43 @@ xmlParserInputShrink(xmlParserInputPtr in) {
CHECK_BUFFER(in);
- used = in->cur - in->buf->buffer->content;
+ used = in->cur - xmlBufContent(in->buf->buffer);
/*
* Do not shrink on large buffers whose only a tiny fraction
* was consumed
*/
if (used > INPUT_CHUNK) {
- ret = xmlBufferShrink(in->buf->buffer, used - LINE_LEN);
+ ret = xmlBufShrink(in->buf->buffer, used - LINE_LEN);
if (ret > 0) {
in->cur -= ret;
in->consumed += ret;
}
- in->end = &in->buf->buffer->content[in->buf->buffer->use];
+ in->end = xmlBufEnd(in->buf->buffer);
}
CHECK_BUFFER(in);
- if (in->buf->buffer->use > INPUT_CHUNK) {
+ if (xmlBufUse(in->buf->buffer) > INPUT_CHUNK) {
return;
}
xmlParserInputBufferRead(in->buf, 2 * INPUT_CHUNK);
- if (in->base != in->buf->buffer->content) {
+ content = xmlBufContent(in->buf->buffer);
+ if (in->base != content) {
/*
* the buffer has been reallocated
*/
indx = in->cur - in->base;
- in->base = in->buf->buffer->content;
- in->cur = &in->buf->buffer->content[indx];
+ in->base = content;
+ in->cur = &content[indx];
}
- in->end = &in->buf->buffer->content[in->buf->buffer->use];
+ in->end = xmlBufEnd(in->buf->buffer);
CHECK_BUFFER(in);
}
/************************************************************************
* *
- * UTF8 character input and related functions *
+ * UTF8 character input and related functions *
* *
************************************************************************/
@@ -484,7 +455,7 @@ xmlNextChar(xmlParserCtxtPtr ctxt)
* UCS-4 range (hex.) UTF-8 octet sequence (binary)
* 0000 0000-0000 007F 0xxxxxxx
* 0000 0080-0000 07FF 110xxxxx 10xxxxxx
- * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
+ * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
*
* Check for the 0x110000 limit too
*/
@@ -634,7 +605,7 @@ xmlCurrentChar(xmlParserCtxtPtr ctxt, int *len) {
* UCS-4 range (hex.) UTF-8 octet sequence (binary)
* 0000 0000-0000 007F 0xxxxxxx
* 0000 0080-0000 07FF 110xxxxx 10xxxxxx
- * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
+ * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
*
* Check for the 0x110000 limit too
*/
@@ -695,7 +666,7 @@ xmlCurrentChar(xmlParserCtxtPtr ctxt, int *len) {
if (!IS_CHAR(val)) {
xmlErrEncodingInt(ctxt, XML_ERR_INVALID_CHAR,
"Char 0x%X out of allowed range\n", val);
- }
+ }
return(val);
} else {
/* 1-byte code */
@@ -759,7 +730,7 @@ encoding_error:
"Input is not proper UTF-8, indicate encoding !\n%s",
BAD_CAST buffer, NULL);
}
- ctxt->charset = XML_CHAR_ENCODING_8859_1;
+ ctxt->charset = XML_CHAR_ENCODING_8859_1;
*len = 1;
return((int) *ctxt->input->cur);
}
@@ -788,7 +759,7 @@ xmlStringCurrentChar(xmlParserCtxtPtr ctxt, const xmlChar * cur, int *len)
* UCS-4 range (hex.) UTF-8 octet sequence (binary)
* 0000 0000-0000 007F 0xxxxxxx
* 0000 0080-0000 07FF 110xxxxx 10xxxxxx
- * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
+ * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
*
* Check for the 0x110000 limit too
*/
@@ -881,7 +852,7 @@ encoding_error:
* @out: pointer to an array of xmlChar
* @val: the char value
*
- * append the char value in the array
+ * append the char value in the array
*
* Returns the number of xmlChar written
*/
@@ -895,7 +866,7 @@ xmlCopyCharMultiByte(xmlChar *out, int val) {
* UCS-4 range (hex.) UTF-8 octet sequence (binary)
* 0000 0000-0000 007F 0xxxxxxx
* 0000 0080-0000 07FF 110xxxxx 10xxxxxx
- * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
+ * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
*/
if (val >= 0x80) {
xmlChar *savedout = out;
@@ -923,7 +894,7 @@ xmlCopyCharMultiByte(xmlChar *out, int val) {
* @out: pointer to an array of xmlChar
* @val: the char value
*
- * append the char value in the array
+ * append the char value in the array
*
* Returns the number of xmlChar written
*/
@@ -945,11 +916,6 @@ xmlCopyChar(int len ATTRIBUTE_UNUSED, xmlChar *out, int val) {
* *
************************************************************************/
-/* defined in encoding.c, not public */
-int
-xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out,
- xmlBufferPtr in, int len);
-
static int
xmlSwitchToEncodingInt(xmlParserCtxtPtr ctxt,
xmlCharEncodingHandlerPtr handler, int len);
@@ -1189,12 +1155,12 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
/*
* Is there already some content down the pipe to convert ?
*/
- if ((input->buf->buffer != NULL) && (input->buf->buffer->use > 0)) {
+ if (xmlBufIsEmpty(input->buf->buffer) == 0) {
int processed;
unsigned int use;
/*
- * Specific handling of the Byte Order Mark for
+ * Specific handling of the Byte Order Mark for
* UTF-16
*/
if ((handler->name != NULL) &&
@@ -1225,19 +1191,17 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
* Move it as the raw buffer and create a new input buffer
*/
processed = input->cur - input->base;
- xmlBufferShrink(input->buf->buffer, processed);
+ xmlBufShrink(input->buf->buffer, processed);
input->buf->raw = input->buf->buffer;
- input->buf->buffer = xmlBufferCreate();
+ input->buf->buffer = xmlBufCreate();
input->buf->rawconsumed = processed;
- use = input->buf->raw->use;
+ use = xmlBufUse(input->buf->raw);
if (ctxt->html) {
/*
* convert as much as possible of the buffer
*/
- nbchars = xmlCharEncInFunc(input->buf->encoder,
- input->buf->buffer,
- input->buf->raw);
+ nbchars = xmlCharEncInput(input->buf, 1);
} else {
/*
* convert just enough to get
@@ -1245,10 +1209,7 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
* parsed with the autodetected encoding
* into the parser reading buffer.
*/
- nbchars = xmlCharEncFirstLineInt(input->buf->encoder,
- input->buf->buffer,
- input->buf->raw,
- len);
+ nbchars = xmlCharEncFirstLineInput(input->buf, len);
}
if (nbchars < 0) {
xmlErrInternal(ctxt,
@@ -1256,10 +1217,8 @@ xmlSwitchInputEncodingInt(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
NULL);
return (-1);
}
- input->buf->rawconsumed += use - input->buf->raw->use;
- input->base = input->cur = input->buf->buffer->content;
- input->end = &input->base[input->buf->buffer->use];
-
+ input->buf->rawconsumed += use - xmlBufUse(input->buf->raw);
+ xmlBufResetInput(input->buf->buffer, input);
}
return (0);
} else if (input->length == 0) {
@@ -1294,7 +1253,7 @@ xmlSwitchInputEncoding(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
* xmlSwitchToEncodingInt:
* @ctxt: the parser context
* @handler: the encoding handler
- * @len: the lenght to convert or -1
+ * @len: the length to convert or -1
*
* change the input functions when discovering the character encoding
* of a given entity, and convert only @len bytes of the output, this
@@ -1336,7 +1295,7 @@ xmlSwitchToEncodingInt(xmlParserCtxtPtr ctxt,
* Returns 0 in case of success, -1 otherwise
*/
int
-xmlSwitchToEncoding(xmlParserCtxtPtr ctxt, xmlCharEncodingHandlerPtr handler)
+xmlSwitchToEncoding(xmlParserCtxtPtr ctxt, xmlCharEncodingHandlerPtr handler)
{
return (xmlSwitchToEncodingInt(ctxt, handler, -1));
}
@@ -1363,7 +1322,7 @@ xmlFreeInputStream(xmlParserInputPtr input) {
if (input->version != NULL) xmlFree((char *) input->version);
if ((input->free != NULL) && (input->base != NULL))
input->free((xmlChar *) input->base);
- if (input->buf != NULL)
+ if (input->buf != NULL)
xmlFreeParserInputBuffer(input->buf);
xmlFree(input);
}
@@ -1426,9 +1385,8 @@ xmlNewIOInputStream(xmlParserCtxtPtr ctxt, xmlParserInputBufferPtr input,
}
inputStream->filename = NULL;
inputStream->buf = input;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end = &inputStream->base[inputStream->buf->buffer->use];
+ xmlBufResetInput(inputStream->buf->buffer, inputStream);
+
if (enc != XML_CHAR_ENCODING_NONE) {
xmlSwitchEncoding(ctxt, enc);
}
@@ -1570,7 +1528,7 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
inputStream = xmlCheckHTTPInput(ctxt, inputStream);
if (inputStream == NULL)
return(NULL);
-
+
if (inputStream->filename == NULL)
URI = xmlStrdup((xmlChar *) filename);
else
@@ -1581,9 +1539,7 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
if (URI != NULL) xmlFree((char *) URI);
inputStream->directory = directory;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end = &inputStream->base[inputStream->buf->buffer->use];
+ xmlBufResetInput(inputStream->buf->buffer, inputStream);
if ((ctxt->directory == NULL) && (directory != NULL))
ctxt->directory = (char *) xmlStrdup((const xmlChar *) directory);
return(inputStream);
@@ -1622,6 +1578,8 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
xmlErrMemory(NULL, "cannot initialize parser context\n");
return(-1);
}
+ xmlDictSetLimit(ctxt->dict, XML_MAX_DICTIONARY_LIMIT);
+
if (ctxt->sax == NULL)
ctxt->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler));
if (ctxt->sax == NULL) {
@@ -1733,12 +1691,20 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
ctxt->nsWellFormed = 1;
ctxt->valid = 1;
ctxt->loadsubset = xmlLoadExtDtdDefaultValue;
+ if (ctxt->loadsubset) {
+ ctxt->options |= XML_PARSE_DTDLOAD;
+ }
ctxt->validate = xmlDoValidityCheckingDefaultValue;
ctxt->pedantic = xmlPedanticParserDefaultValue;
+ if (ctxt->pedantic) {
+ ctxt->options |= XML_PARSE_PEDANTIC;
+ }
ctxt->linenumbers = xmlLineNumbersDefaultValue;
ctxt->keepBlanks = xmlKeepBlanksDefaultValue;
- if (ctxt->keepBlanks == 0)
+ if (ctxt->keepBlanks == 0) {
ctxt->sax->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
+ ctxt->options |= XML_PARSE_NOBLANKS;
+ }
ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_0;
ctxt->vctxt.userData = ctxt;
@@ -1750,8 +1716,12 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
else
ctxt->vctxt.warning = xmlParserValidityWarning;
ctxt->vctxt.nodeMax = 0;
+ ctxt->options |= XML_PARSE_DTDVALID;
}
ctxt->replaceEntities = xmlSubstituteEntitiesDefaultValue;
+ if (ctxt->replaceEntities) {
+ ctxt->options |= XML_PARSE_NOENT;
+ }
ctxt->record_info = 0;
ctxt->nbChars = 0;
ctxt->checkIndex = 0;
@@ -1761,6 +1731,8 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
ctxt->charset = XML_CHAR_ENCODING_UTF8;
ctxt->catalogs = NULL;
ctxt->nbentities = 0;
+ ctxt->sizeentities = 0;
+ ctxt->sizeentcopy = 0;
ctxt->input_id = 1;
xmlInitNodeInfoSeq(&ctxt->node_seq);
return(0);
@@ -1807,7 +1779,7 @@ xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
if (ctxt->nsTab != NULL) xmlFree((char *) ctxt->nsTab);
if (ctxt->pushTab != NULL) xmlFree(ctxt->pushTab);
if (ctxt->attallocs != NULL) xmlFree(ctxt->attallocs);
- if (ctxt->attsDefault != NULL)
+ if (ctxt->attsDefault != NULL)
xmlHashFree(ctxt->attsDefault, (xmlHashDeallocator) xmlFree);
if (ctxt->attsSpecial != NULL)
xmlHashFree(ctxt->attsSpecial, NULL);
@@ -1907,7 +1879,7 @@ xmlClearParserCtxt(xmlParserCtxtPtr ctxt)
* @node: an XML node within the tree
*
* Find the parser node info struct for a given node
- *
+ *
* Returns an xmlParserNodeInfo block pointer or NULL
*/
const xmlParserNodeInfo *
@@ -1965,7 +1937,7 @@ xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq)
* @seq: a node info sequence pointer
* @node: an XML node pointer
*
- *
+ *
* xmlParserFindNodeInfoIndex : Find the index that the info record for
* the given node is or should be at in a sorted sequence
*
@@ -2022,7 +1994,7 @@ xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
pos = xmlParserFindNodeInfoIndex(&ctxt->node_seq, (xmlNodePtr)
info->node);
- if ((pos < ctxt->node_seq.length) &&
+ if ((pos < ctxt->node_seq.length) &&
(ctxt->node_seq.buffer != NULL) &&
(ctxt->node_seq.buffer[pos].node == info->node)) {
ctxt->node_seq.buffer[pos] = *info;
@@ -2030,7 +2002,8 @@ xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
/* Otherwise, we need to add new node to buffer */
else {
- if (ctxt->node_seq.length + 1 > ctxt->node_seq.maximum) {
+ if ((ctxt->node_seq.length + 1 > ctxt->node_seq.maximum) ||
+ (ctxt->node_seq.buffer == NULL)) {
xmlParserNodeInfo *tmp_buffer;
unsigned int byte_size;
@@ -2075,7 +2048,7 @@ xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
************************************************************************/
/**
* xmlPedanticParserDefault:
- * @val: int 0 or 1
+ * @val: int 0 or 1
*
* Set and return the previous value for enabling pedantic warnings.
*
@@ -2092,7 +2065,7 @@ xmlPedanticParserDefault(int val) {
/**
* xmlLineNumbersDefault:
- * @val: int 0 or 1
+ * @val: int 0 or 1
*
* Set and return the previous value for enabling line numbers in elements
* contents. This may break on old application and is turned off by default.
@@ -2110,7 +2083,7 @@ xmlLineNumbersDefault(int val) {
/**
* xmlSubstituteEntitiesDefault:
- * @val: int 0 or 1
+ * @val: int 0 or 1
*
* Set and return the previous value for default entity support.
* Initially the parser always keep entity references instead of substituting
@@ -2132,7 +2105,7 @@ xmlSubstituteEntitiesDefault(int val) {
/**
* xmlKeepBlanksDefault:
- * @val: int 0 or 1
+ * @val: int 0 or 1
*
* Set and return the previous value for default blanks text nodes support.
* The 1.x version of the parser used an heuristic to try to detect
@@ -2143,7 +2116,7 @@ xmlSubstituteEntitiesDefault(int val) {
* ignorableWhitespace() are only generated when running the parser in
* validating mode and when the current element doesn't allow CDATA or
* mixed content.
- * This function is provided as a way to force the standard behavior
+ * This function is provided as a way to force the standard behavior
* on 1.X libs and to switch back to the old mode for compatibility when
* running 1.X client code on 2.X . Upgrade of 1.X code should be done
* by using xmlIsBlankNode() commodity function to detect the "empty"
diff --git a/pattern.c b/pattern.c
index 1570001..33dee3a 100644
--- a/pattern.c
+++ b/pattern.c
@@ -3,7 +3,7 @@
*
* Reference:
* http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/
- * to some extent
+ * to some extent
* http://www.w3.org/TR/1999/REC-xml-19991116
*
* See Copyright for the status of this software.
@@ -56,7 +56,7 @@
* NOTE: Those private flags (XML_STREAM_xxx) are used
* in _xmlStreamCtxt->flag. They extend the public
* xmlPatternFlags, so be carefull not to interfere with the
-* reserved values for xmlPatternFlags.
+* reserved values for xmlPatternFlags.
*/
#define XML_STREAM_FINAL_IS_ANY_NODE 1<<14
#define XML_STREAM_FROM_ROOT 1<<15
@@ -162,7 +162,7 @@ struct _xmlStepOp {
#define PAT_FROM_CUR (1<<9)
struct _xmlPattern {
- void *data; /* the associated template */
+ void *data; /* the associated template */
xmlDictPtr dict; /* the optional dictionary */
struct _xmlPattern *next; /* next pattern if | is used */
const xmlChar *pattern; /* the pattern */
@@ -181,15 +181,15 @@ struct _xmlPatParserContext {
int error; /* error code */
xmlDictPtr dict; /* the dictionary if any */
xmlPatternPtr comp; /* the result */
- xmlNodePtr elem; /* the current node if any */
+ xmlNodePtr elem; /* the current node if any */
const xmlChar **namespaces; /* the namespaces definitions */
int nb_namespaces; /* the number of namespaces */
};
/************************************************************************
- * *
- * Type functions *
- * *
+ * *
+ * Type functions *
+ * *
************************************************************************/
/**
@@ -327,7 +327,7 @@ xmlNewPatParserContext(const xmlChar *pattern, xmlDictPtr dict,
static void
xmlFreePatParserContext(xmlPatParserContextPtr ctxt) {
if (ctxt == NULL)
- return;
+ return;
memset(ctxt, -1, sizeof(xmlPatParserContext));
xmlFree(ctxt);
}
@@ -455,9 +455,9 @@ xmlReversePattern(xmlPatternPtr comp) {
}
/************************************************************************
- * *
- * The interpreter for the precompiled patterns *
- * *
+ * *
+ * The interpreter for the precompiled patterns *
+ * *
************************************************************************/
static int
@@ -709,7 +709,7 @@ rollback:
* *
************************************************************************/
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -719,14 +719,14 @@ rollback:
#define PEEKPREV(val) ctxt->cur[-(val)]
#define CUR_PTR ctxt->cur
-#define SKIP_BLANKS \
+#define SKIP_BLANKS \
while (IS_BLANK_CH(CUR)) NEXT
#define CURRENT (*ctxt->cur)
#define NEXT ((*ctxt->cur) ? ctxt->cur++: ctxt->cur)
-#define PUSH(op, val, val2) \
+#define PUSH(op, val, val2) \
if (xmlPatternAdd(ctxt, ctxt->comp, (op), (val), (val2))) goto error;
#define XSLT_ERROR(X) \
@@ -772,7 +772,7 @@ xmlPatScanLiteral(xmlPatParserContextPtr ctxt) {
if (ctxt->dict)
ret = (xmlChar *) xmlDictLookup(ctxt->dict, q, cur - q);
else
- ret = xmlStrndup(q, cur - q);
+ ret = xmlStrndup(q, cur - q);
}
cur += len;
CUR_PTR = cur;
@@ -791,7 +791,7 @@ xmlPatScanLiteral(xmlPatParserContextPtr ctxt) {
if (ctxt->dict)
ret = (xmlChar *) xmlDictLookup(ctxt->dict, q, cur - q);
else
- ret = xmlStrndup(q, cur - q);
+ ret = xmlStrndup(q, cur - q);
}
cur += len;
CUR_PTR = cur;
@@ -808,7 +808,7 @@ xmlPatScanLiteral(xmlPatParserContextPtr ctxt) {
* xmlPatScanName:
* @ctxt: the XPath Parser context
*
- * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' |
+ * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' |
* CombiningChar | Extender
*
* [5] Name ::= (Letter | '_' | ':') (NameChar)*
@@ -833,7 +833,7 @@ xmlPatScanName(xmlPatParserContextPtr ctxt) {
while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
(val == '.') || (val == '-') ||
- (val == '_') ||
+ (val == '_') ||
(IS_COMBINING(val)) ||
(IS_EXTENDER(val))) {
cur += len;
@@ -842,7 +842,7 @@ xmlPatScanName(xmlPatParserContextPtr ctxt) {
if (ctxt->dict)
ret = (xmlChar *) xmlDictLookup(ctxt->dict, q, cur - q);
else
- ret = xmlStrndup(q, cur - q);
+ ret = xmlStrndup(q, cur - q);
CUR_PTR = cur;
return(ret);
}
@@ -922,7 +922,7 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
xmlChar *token = NULL;
xmlChar *name = NULL;
xmlChar *URL = NULL;
-
+
SKIP_BLANKS;
name = xmlPatScanNCName(ctxt);
if (name == NULL) {
@@ -939,10 +939,10 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
if (CUR == ':') {
int i;
xmlChar *prefix = name;
-
+
NEXT;
- if (IS_BLANK_CH(CUR)) {
+ if (IS_BLANK_CH(CUR)) {
ERROR5(NULL, NULL, NULL, "Invalid QName.\n", NULL);
XML_PAT_FREE_STRING(ctxt, prefix);
ctxt->error = 1;
@@ -957,11 +957,11 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
(prefix[2] == 'l') &&
(prefix[3] == 0))
{
- XML_PAT_COPY_NSNAME(ctxt, URL, XML_XML_NAMESPACE);
+ XML_PAT_COPY_NSNAME(ctxt, URL, XML_XML_NAMESPACE);
} else {
for (i = 0;i < ctxt->nb_namespaces;i++) {
if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) {
- XML_PAT_COPY_NSNAME(ctxt, URL, ctxt->namespaces[2 * i])
+ XML_PAT_COPY_NSNAME(ctxt, URL, ctxt->namespaces[2 * i])
break;
}
}
@@ -969,7 +969,7 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
ERROR5(NULL, NULL, NULL,
"xmlCompileAttributeTest : no namespace bound to prefix %s\n",
prefix);
- ctxt->error = 1;
+ ctxt->error = 1;
goto error;
}
}
@@ -983,7 +983,7 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
"xmlCompileAttributeTest : Name expected\n");
ctxt->error = 1;
goto error;
- }
+ }
} else {
PUSH(XML_OP_ATTR, token, URL);
}
@@ -993,7 +993,7 @@ xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
return;
error:
if (URL != NULL)
- XML_PAT_FREE_STRING(ctxt, URL)
+ XML_PAT_FREE_STRING(ctxt, URL)
if (token != NULL)
XML_PAT_FREE_STRING(ctxt, token);
}
@@ -1006,7 +1006,7 @@ error:
* form suitable for fast matching.
*
* [3] Step ::= '.' | NameTest
- * [4] NameTest ::= QName | '*' | NCName ':' '*'
+ * [4] NameTest ::= QName | '*' | NCName ':' '*'
*/
static void
@@ -1037,7 +1037,7 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
}
NEXT;
xmlCompileAttributeTest(ctxt);
- if (ctxt->error != 0)
+ if (ctxt->error != 0)
goto error;
return;
}
@@ -1062,7 +1062,7 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
NEXT;
if (CUR != ':') {
xmlChar *prefix = name;
- int i;
+ int i;
if (hasBlanks || IS_BLANK_CH(CUR)) {
ERROR5(NULL, NULL, NULL, "Invalid QName.\n", NULL);
@@ -1111,7 +1111,7 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
}
} else {
NEXT;
- if (xmlStrEqual(name, (const xmlChar *) "child")) {
+ if (xmlStrEqual(name, (const xmlChar *) "child")) {
XML_PAT_FREE_STRING(ctxt, name);
name = xmlPatScanName(ctxt);
if (name == NULL) {
@@ -1129,7 +1129,7 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
if (CUR == ':') {
xmlChar *prefix = name;
int i;
-
+
NEXT;
if (IS_BLANK_CH(CUR)) {
ERROR5(NULL, NULL, NULL, "Invalid QName.\n", NULL);
@@ -1145,11 +1145,11 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
(prefix[2] == 'l') &&
(prefix[3] == 0))
{
- XML_PAT_COPY_NSNAME(ctxt, URL, XML_XML_NAMESPACE)
+ XML_PAT_COPY_NSNAME(ctxt, URL, XML_XML_NAMESPACE)
} else {
for (i = 0;i < ctxt->nb_namespaces;i++) {
if (xmlStrEqual(ctxt->namespaces[2 * i + 1], prefix)) {
- XML_PAT_COPY_NSNAME(ctxt, URL, ctxt->namespaces[2 * i])
+ XML_PAT_COPY_NSNAME(ctxt, URL, ctxt->namespaces[2 * i])
break;
}
}
@@ -1197,7 +1197,7 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
"The 'element' or 'attribute' axis is expected.\n", NULL);
ctxt->error = 1;
goto error;
- }
+ }
}
} else if (CUR == '*') {
if (name != NULL) {
@@ -1212,7 +1212,7 @@ xmlCompileStepPattern(xmlPatParserContextPtr ctxt) {
return;
error:
if (URL != NULL)
- XML_PAT_FREE_STRING(ctxt, URL)
+ XML_PAT_FREE_STRING(ctxt, URL)
if (token != NULL)
XML_PAT_FREE_STRING(ctxt, token)
if (name != NULL)
@@ -1226,7 +1226,7 @@ error:
* Compile the Path Pattern and generates a precompiled
* form suitable for fast matching.
*
- * [5] Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ * [5] Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
*/
static void
xmlCompilePathPattern(xmlPatParserContextPtr ctxt) {
@@ -1236,7 +1236,7 @@ xmlCompilePathPattern(xmlPatParserContextPtr ctxt) {
} else if ((CUR == '.') || (ctxt->comp->flags & XML_PATTERN_NOTPATTERN)) {
ctxt->comp->flags |= PAT_FROM_CUR;
}
-
+
if ((CUR == '/') && (NXT(1) == '/')) {
PUSH(XML_OP_ANCESTOR, NULL, NULL);
NEXT;
@@ -1299,7 +1299,7 @@ xmlCompilePathPattern(xmlPatParserContextPtr ctxt) {
ERROR5(NULL, NULL, NULL,
"Incomplete expression '%s'.\n", ctxt->base);
ctxt->error = 1;
- goto error;
+ goto error;
}
xmlCompileStepPattern(ctxt);
if (ctxt->error != 0)
@@ -1323,7 +1323,7 @@ error:
* Compile the Path Pattern and generates a precompiled
* form suitable for fast matching.
*
- * [5] Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ * [5] Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
*/
static void
xmlCompileIDCXPathPath(xmlPatParserContextPtr ctxt) {
@@ -1378,7 +1378,7 @@ xmlCompileIDCXPathPath(xmlPatParserContextPtr ctxt) {
*/
do {
xmlCompileStepPattern(ctxt);
- if (ctxt->error != 0)
+ if (ctxt->error != 0)
goto error;
SKIP_BLANKS;
if (CUR != '/')
@@ -1397,7 +1397,7 @@ xmlCompileIDCXPathPath(xmlPatParserContextPtr ctxt) {
}
if (CUR == 0)
goto error_unfinished;
-
+
} while (CUR != 0);
if (CUR != 0) {
@@ -1413,7 +1413,7 @@ error:
error_unfinished:
ctxt->error = 1;
ERROR5(NULL, NULL, NULL,
- "Unfinished expression '%s'.\n", ctxt->base);
+ "Unfinished expression '%s'.\n", ctxt->base);
return;
}
@@ -1568,7 +1568,7 @@ xmlStreamCompAddStep(xmlStreamCompPtr comp, const xmlChar *name,
/**
* xmlStreamCompile:
* @comp: the precompiled pattern
- *
+ *
* Tries to stream compile a pattern
*
* Returns -1 in case of failure and 0 in case of success.
@@ -1605,7 +1605,7 @@ xmlStreamCompile(xmlPatternPtr comp) {
xmlDictReference(stream->dict);
}
- i = 0;
+ i = 0;
if (comp->flags & PAT_FROM_ROOT)
stream->flags |= XML_STREAM_FROM_ROOT;
@@ -1621,12 +1621,12 @@ xmlStreamCompile(xmlPatternPtr comp) {
break;
case XML_OP_NS:
s = xmlStreamCompAddStep(stream, NULL, step.value,
- XML_ELEMENT_NODE, flags);
+ XML_ELEMENT_NODE, flags);
if (s < 0)
goto error;
prevs = s;
- flags = 0;
- break;
+ flags = 0;
+ break;
case XML_OP_ATTR:
flags |= XML_STREAM_STEP_ATTR;
prevs = -1;
@@ -1636,7 +1636,7 @@ xmlStreamCompile(xmlPatternPtr comp) {
if (s < 0)
goto error;
break;
- case XML_OP_ELEM:
+ case XML_OP_ELEM:
if ((step.value == NULL) && (step.value2 == NULL)) {
/*
* We have a "." or "self::node()" here.
@@ -1655,7 +1655,7 @@ xmlStreamCompile(xmlPatternPtr comp) {
if (comp->nbStep == i + 1) {
stream->flags |= XML_STREAM_FINAL_IS_ANY_NODE;
}
- flags |= XML_STREAM_STEP_NODE;
+ flags |= XML_STREAM_STEP_NODE;
s = xmlStreamCompAddStep(stream, NULL, NULL,
XML_STREAM_ANY_NODE, flags);
if (s < 0)
@@ -1671,39 +1671,39 @@ xmlStreamCompile(xmlPatternPtr comp) {
stream->steps[prevs].flags |= XML_STREAM_STEP_IN_SET;
prevs = -1;
}
- break;
+ break;
} else {
/* Just skip this one. */
continue;
}
}
- /* An element node. */
+ /* An element node. */
s = xmlStreamCompAddStep(stream, step.value, step.value2,
- XML_ELEMENT_NODE, flags);
+ XML_ELEMENT_NODE, flags);
if (s < 0)
goto error;
prevs = s;
- flags = 0;
- break;
+ flags = 0;
+ break;
case XML_OP_CHILD:
/* An element node child. */
s = xmlStreamCompAddStep(stream, step.value, step.value2,
- XML_ELEMENT_NODE, flags);
+ XML_ELEMENT_NODE, flags);
if (s < 0)
goto error;
prevs = s;
flags = 0;
- break;
+ break;
case XML_OP_ALL:
s = xmlStreamCompAddStep(stream, NULL, NULL,
- XML_ELEMENT_NODE, flags);
+ XML_ELEMENT_NODE, flags);
if (s < 0)
goto error;
prevs = s;
flags = 0;
break;
- case XML_OP_PARENT:
+ case XML_OP_PARENT:
break;
case XML_OP_ANCESTOR:
/* Skip redundant continuations. */
@@ -1717,7 +1717,7 @@ xmlStreamCompile(xmlPatternPtr comp) {
stream->flags |= XML_STREAM_DESC;
break;
}
- }
+ }
if ((! root) && (comp->flags & XML_PATTERN_NOTPATTERN) == 0) {
/*
* If this should behave like a real pattern, we will mark
@@ -1729,7 +1729,7 @@ xmlStreamCompile(xmlPatternPtr comp) {
if (stream->nbStep > 0) {
if ((stream->steps[0].flags & XML_STREAM_STEP_DESC) == 0)
- stream->steps[0].flags |= XML_STREAM_STEP_DESC;
+ stream->steps[0].flags |= XML_STREAM_STEP_DESC;
}
}
if (stream->nbStep <= s)
@@ -1922,7 +1922,7 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
if ((nodeType != XML_ATTRIBUTE_NODE) &&
(((stream->flags & XML_PATTERN_NOTPATTERN) == 0) ||
(stream->level == 0))) {
- ret = 1;
+ ret = 1;
}
stream->level++;
goto stream_next;
@@ -1931,7 +1931,7 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
/*
* Skip blocked expressions.
*/
- stream->level++;
+ stream->level++;
goto stream_next;
}
@@ -1974,7 +1974,7 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
* If there are "//", then we need to process every "//"
* occuring in the states, plus any other state for this
* level.
- */
+ */
stepNr = stream->states[2 * i];
/* TODO: should not happen anymore: dead states */
@@ -1992,7 +1992,7 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
if ((tmp < stream->level) && (!desc))
goto next_state;
}
- /*
+ /*
* Check for correct node-type.
*/
step = comp->steps[stepNr];
@@ -2006,7 +2006,7 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
goto next_state;
} else if (step.nodeType != XML_STREAM_ANY_NODE)
goto next_state;
- }
+ }
/*
* Compare local/namespace-name.
*/
@@ -2027,9 +2027,9 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
xmlStrEqual(step.name, name) &&
((step.ns == ns) || xmlStrEqual(step.ns, ns)))
{
- match = 1;
- }
-#if 0
+ match = 1;
+ }
+#if 0
/*
* TODO: Pointer comparison won't work, since not guaranteed that the given
* values are in the same dict; especially if it's the namespace name,
@@ -2044,8 +2044,8 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
} else {
match = ((step.name == name) && (step.ns == ns));
}
-#endif /* if 0 ------------------------------------------------------- */
- if (match) {
+#endif /* if 0 ------------------------------------------------------- */
+ if (match) {
final = step.flags & XML_STREAM_STEP_FINAL;
if (desc) {
if (final) {
@@ -2070,7 +2070,7 @@ xmlStreamPushInternal(xmlStreamCtxtPtr stream,
*/
ret = 1;
}
- }
+ }
if (((comp->flags & XML_STREAM_DESC) == 0) &&
((! match) || final)) {
/*
@@ -2101,7 +2101,7 @@ next_state:
* Re/enter the expression if it is a "descendant" one,
* or if we are at the 1st level of evaluation.
*/
-
+
if (stream->level == 1) {
if (XML_STREAM_XS_IDC(stream)) {
/*
@@ -2111,7 +2111,7 @@ next_state:
goto stream_next;
} else
goto compare;
- }
+ }
/*
* A "//" is always reentrant.
*/
@@ -2121,14 +2121,14 @@ next_state:
/*
* XS-IDC: Process the 2nd level, since the missing
* "self::node()" is responsible for the 2nd level being
- * the real start level.
- */
+ * the real start level.
+ */
if ((stream->level == 2) && XML_STREAM_XS_IDC(stream))
goto compare;
goto stream_next;
}
-
+
compare:
/*
* Check expected node-type.
@@ -2137,7 +2137,7 @@ compare:
if (nodeType == XML_ATTRIBUTE_NODE)
goto stream_next;
else if (step.nodeType != XML_STREAM_ANY_NODE)
- goto stream_next;
+ goto stream_next;
}
/*
* Compare local/namespace-name.
@@ -2159,10 +2159,10 @@ compare:
xmlStrEqual(step.name, name) &&
((step.ns == ns) || xmlStrEqual(step.ns, ns)))
{
- match = 1;
- }
+ match = 1;
+ }
final = step.flags & XML_STREAM_STEP_FINAL;
- if (match) {
+ if (match) {
if (final)
ret = 1;
else
@@ -2187,7 +2187,7 @@ compare:
stream_next:
stream = stream->next;
} /* while stream != NULL */
-
+
if (err > 0)
ret = -1;
#ifdef DEBUG_STREAMING
@@ -2279,7 +2279,7 @@ xmlStreamPushAttr(xmlStreamCtxtPtr stream,
int
xmlStreamPop(xmlStreamCtxtPtr stream) {
int i, lev;
-
+
if (stream == NULL)
return(-1);
while (stream != NULL) {
@@ -2298,7 +2298,7 @@ xmlStreamPop(xmlStreamCtxtPtr stream) {
stream->level--;
/*
* Check evolution of existing states
- */
+ */
for (i = stream->nbState -1; i >= 0; i--) {
/* discard obsoleted states */
lev = stream->states[(2 * i) + 1];
@@ -2326,11 +2326,11 @@ xmlStreamPop(xmlStreamCtxtPtr stream) {
*/
int
xmlStreamWantsAnyNode(xmlStreamCtxtPtr streamCtxt)
-{
+{
if (streamCtxt == NULL)
return(-1);
while (streamCtxt != NULL) {
- if (streamCtxt->comp->flags & XML_STREAM_FINAL_IS_ANY_NODE)
+ if (streamCtxt->comp->flags & XML_STREAM_FINAL_IS_ANY_NODE)
return(1);
streamCtxt = streamCtxt->next;
}
@@ -2381,13 +2381,13 @@ xmlPatterncompile(const xmlChar *pattern, xmlDict *dict, int flags,
}
or++;
}
- if (ctxt == NULL) goto error;
+ if (ctxt == NULL) goto error;
cur = xmlNewPattern();
if (cur == NULL) goto error;
/*
* Assign string dict.
*/
- if (dict) {
+ if (dict) {
cur->dict = dict;
xmlDictReference(dict);
}
@@ -2570,7 +2570,7 @@ xmlPatternMaxDepth(xmlPatternPtr comp) {
* part of the set.
*
* Returns -1 in case of error otherwise the depth,
- *
+ *
*/
int
xmlPatternMinDepth(xmlPatternPtr comp) {
diff --git a/python/Makefile.am b/python/Makefile.am
index 68d2236..34aed96 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -1,67 +1,54 @@
# Makefile for libxml2 python library
AUTOMAKE_OPTIONS = 1.4 foreign
-SUBDIRS= . tests
-
-INCLUDES = \
- -I$(PYTHON_INCLUDES) \
- -I$(top_srcdir)/include \
- -I$(top_builddir)/include \
- -I$(top_builddir)/$(subdir)
+SUBDIRS = . tests
docsdir = $(datadir)/doc/libxml2-python-$(LIBXML_VERSION)
-# libxml2class.txt is generated
dist_docs_DATA = TODO
EXTRA_DIST = \
setup.py \
- setup.py.in \
generator.py \
- libxml_wrap.h \
libxml.py \
- libxml2-python-api.xml
-
-libxml2mod_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ -module -avoid-version
+ libxml2-export.c \
+ libxml2-python-api.xml \
+ libxml2class.py \
+ libxml2class.txt
if WITH_PYTHON
-mylibs = \
- $(top_builddir)/libxml2.la
+AM_CPPFLAGS = \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(PYTHON_INCLUDES)
python_LTLIBRARIES = libxml2mod.la
-libxml2mod_la_SOURCES = $(srcdir)/libxml.c $(srcdir)/types.c
-nodist_libxml2mod_la_SOURCES = libxml2-py.c
-libxml2mod_la_LIBADD = $(mylibs) @CYGWIN_EXTRA_PYTHON_LIBADD@ @WIN32_EXTRA_PYTHON_LIBADD@ @PYTHON_LIBS@ -lpython$(PYTHON_VERSION)
+libxml2mod_la_SOURCES = libxml.c libxml_wrap.h libxml2-py.h libxml2-py.c types.c
+libxml2mod_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(WIN32_EXTRA_LDFLAGS) -module -avoid-version \
+ $(top_builddir)/libxml2.la $(CYGWIN_EXTRA_PYTHON_LIBADD) $(WIN32_EXTRA_PYTHON_LIBADD) $(PYTHON_LIBS)
-$(srcdir)/libxml.c: libxml2-py.h # to generate before to compile
+BUILT_SOURCES = libxml2-export.c libxml2-py.h libxml2-py.c
+# libxml.c #includes libxml2-export.c
+libxml.$(OBJEXT): libxml2-export.c
libxml2.py: $(srcdir)/libxml.py libxml2class.py
- cat $(srcdir)/libxml.py libxml2class.py > $@
-
-python_DATA = \
- libxml2.py
+ cat $(srcdir)/libxml.py `test -f libxml2class.py || echo $(srcdir)/`libxml2class.py > $@
dist_python_DATA = \
- drv_libxml2.py
+ drv_libxml2.py \
+ libxml2.py
-GENERATE = generator.py
-API_DESC = $(top_srcdir)/doc/libxml2-api.xml $(srcdir)/libxml2-python-api.xml
-GENERATED= libxml2class.py \
- libxml2-export.c \
- libxml2class.txt \
- libxml2-py.c \
- libxml2-py.h
+CLEANFILES = *.pyc
-CLEANFILES= $(GENERATED) gen_prog libxml2.py
+MAINTAINERCLEANFILES = libxml2.py libxml2class.*
-$(GENERATED): gen_prog
+API_DESC = $(top_srcdir)/doc/libxml2-api.xml $(srcdir)/libxml2-python-api.xml
+GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES)
-gen_prog: $(srcdir)/$(GENERATE) $(API_DESC)
- $(PYTHON) $(srcdir)/$(GENERATE) $(srcdir)
- touch gen_prog
+$(GENERATED): $(srcdir)/generator.py $(API_DESC)
+ $(PYTHON) $(srcdir)/generator.py $(srcdir)
endif
tests test: all
- cd tests && $(MAKE) MAKEFLAGS+=--silent tests
-
+ cd tests && $(MAKE) tests
diff --git a/python/Makefile.in b/python/Makefile.in
index 7b19b89..03fbd5b 100644
--- a/python/Makefile.in
+++ b/python/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -17,6 +16,51 @@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -36,14 +80,14 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = python
-DIST_COMMON = README $(am__dist_python_DATA_DIST) $(dist_docs_DATA) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/setup.py.in TODO
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(srcdir)/setup.py.in $(top_srcdir)/depcomp $(dist_docs_DATA) \
+ $(am__dist_python_DATA_DIST) README TODO
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@@ -71,22 +115,41 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(docsdir)" \
- "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(pythondir)"
+ "$(DESTDIR)$(pythondir)"
LTLIBRARIES = $(python_LTLIBRARIES)
-@WITH_PYTHON_TRUE@libxml2mod_la_DEPENDENCIES = $(mylibs)
-am__libxml2mod_la_SOURCES_DIST = $(srcdir)/libxml.c $(srcdir)/types.c
-@WITH_PYTHON_TRUE@am_libxml2mod_la_OBJECTS = libxml.lo types.lo
-@WITH_PYTHON_TRUE@nodist_libxml2mod_la_OBJECTS = libxml2-py.lo
-libxml2mod_la_OBJECTS = $(am_libxml2mod_la_OBJECTS) \
- $(nodist_libxml2mod_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+libxml2mod_la_LIBADD =
+am__libxml2mod_la_SOURCES_DIST = libxml.c libxml_wrap.h libxml2-py.h \
+ libxml2-py.c types.c
+@WITH_PYTHON_TRUE@am_libxml2mod_la_OBJECTS = libxml.lo libxml2-py.lo \
+@WITH_PYTHON_TRUE@ types.lo
+libxml2mod_la_OBJECTS = $(am_libxml2mod_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
+am__v_lt_1 =
libxml2mod_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libxml2mod_la_LDFLAGS) $(LDFLAGS) -o $@
@WITH_PYTHON_TRUE@am_libxml2mod_la_rpath = -rpath $(pythondir)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -97,38 +160,60 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libxml2mod_la_SOURCES) $(nodist_libxml2mod_la_SOURCES)
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libxml2mod_la_SOURCES)
DIST_SOURCES = $(am__libxml2mod_la_SOURCES_DIST)
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-am__dist_python_DATA_DIST = drv_libxml2.py
-DATA = $(dist_docs_DATA) $(dist_python_DATA) $(python_DATA)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__dist_python_DATA_DIST = drv_libxml2.py libxml2.py
+DATA = $(dist_docs_DATA) $(dist_python_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
@@ -162,7 +247,6 @@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -199,6 +283,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -243,6 +328,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -254,7 +342,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -279,7 +366,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -312,6 +398,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -389,47 +476,38 @@ top_srcdir = @top_srcdir@
# Makefile for libxml2 python library
AUTOMAKE_OPTIONS = 1.4 foreign
SUBDIRS = . tests
-INCLUDES = \
- -I$(PYTHON_INCLUDES) \
- -I$(top_srcdir)/include \
- -I$(top_builddir)/include \
- -I$(top_builddir)/$(subdir)
-
docsdir = $(datadir)/doc/libxml2-python-$(LIBXML_VERSION)
-# libxml2class.txt is generated
dist_docs_DATA = TODO
EXTRA_DIST = \
setup.py \
- setup.py.in \
generator.py \
- libxml_wrap.h \
libxml.py \
- libxml2-python-api.xml
+ libxml2-export.c \
+ libxml2-python-api.xml \
+ libxml2class.py \
+ libxml2class.txt
-libxml2mod_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ -module -avoid-version
-@WITH_PYTHON_TRUE@mylibs = \
-@WITH_PYTHON_TRUE@ $(top_builddir)/libxml2.la
+@WITH_PYTHON_TRUE@AM_CPPFLAGS = \
+@WITH_PYTHON_TRUE@ -I$(top_builddir)/include \
+@WITH_PYTHON_TRUE@ -I$(top_srcdir)/include \
+@WITH_PYTHON_TRUE@ -I$(PYTHON_INCLUDES)
@WITH_PYTHON_TRUE@python_LTLIBRARIES = libxml2mod.la
-@WITH_PYTHON_TRUE@libxml2mod_la_SOURCES = $(srcdir)/libxml.c $(srcdir)/types.c
-@WITH_PYTHON_TRUE@nodist_libxml2mod_la_SOURCES = libxml2-py.c
-@WITH_PYTHON_TRUE@libxml2mod_la_LIBADD = $(mylibs) @CYGWIN_EXTRA_PYTHON_LIBADD@ @WIN32_EXTRA_PYTHON_LIBADD@ @PYTHON_LIBS@ -lpython$(PYTHON_VERSION)
-@WITH_PYTHON_TRUE@python_DATA = \
-@WITH_PYTHON_TRUE@ libxml2.py
+@WITH_PYTHON_TRUE@libxml2mod_la_SOURCES = libxml.c libxml_wrap.h libxml2-py.h libxml2-py.c types.c
+@WITH_PYTHON_TRUE@libxml2mod_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(WIN32_EXTRA_LDFLAGS) -module -avoid-version \
+@WITH_PYTHON_TRUE@ $(top_builddir)/libxml2.la $(CYGWIN_EXTRA_PYTHON_LIBADD) $(WIN32_EXTRA_PYTHON_LIBADD) $(PYTHON_LIBS)
+@WITH_PYTHON_TRUE@BUILT_SOURCES = libxml2-export.c libxml2-py.h libxml2-py.c
@WITH_PYTHON_TRUE@dist_python_DATA = \
-@WITH_PYTHON_TRUE@ drv_libxml2.py
+@WITH_PYTHON_TRUE@ drv_libxml2.py \
+@WITH_PYTHON_TRUE@ libxml2.py
-@WITH_PYTHON_TRUE@GENERATE = generator.py
+@WITH_PYTHON_TRUE@CLEANFILES = *.pyc
+@WITH_PYTHON_TRUE@MAINTAINERCLEANFILES = libxml2.py libxml2class.*
@WITH_PYTHON_TRUE@API_DESC = $(top_srcdir)/doc/libxml2-api.xml $(srcdir)/libxml2-python-api.xml
-@WITH_PYTHON_TRUE@GENERATED = libxml2class.py \
-@WITH_PYTHON_TRUE@ libxml2-export.c \
-@WITH_PYTHON_TRUE@ libxml2class.txt \
-@WITH_PYTHON_TRUE@ libxml2-py.c \
-@WITH_PYTHON_TRUE@ libxml2-py.h
-
-@WITH_PYTHON_TRUE@CLEANFILES = $(GENERATED) gen_prog libxml2.py
-all: all-recursive
+@WITH_PYTHON_TRUE@GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES)
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
@@ -465,9 +543,9 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
install-pythonLTLIBRARIES: $(python_LTLIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)"
@list='$(python_LTLIBRARIES)'; test -n "$(pythondir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
@@ -475,6 +553,8 @@ install-pythonLTLIBRARIES: $(python_LTLIBRARIES)
else :; fi; \
done; \
test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pythondir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pythondir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pythondir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pythondir)"; \
}
@@ -490,13 +570,16 @@ uninstall-pythonLTLIBRARIES:
clean-pythonLTLIBRARIES:
-test -z "$(python_LTLIBRARIES)" || rm -f $(python_LTLIBRARIES)
- @list='$(python_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libxml2mod.la: $(libxml2mod_la_OBJECTS) $(libxml2mod_la_DEPENDENCIES)
+ @list='$(python_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libxml2mod.la: $(libxml2mod_la_OBJECTS) $(libxml2mod_la_DEPENDENCIES) $(EXTRA_libxml2mod_la_DEPENDENCIES)
$(AM_V_CCLD)$(libxml2mod_la_LINK) $(am_libxml2mod_la_rpath) $(libxml2mod_la_OBJECTS) $(libxml2mod_la_LIBADD) $(LIBS)
mostlyclean-compile:
@@ -512,42 +595,23 @@ distclean-compile:
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-libxml.lo: $(srcdir)/libxml.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libxml.lo -MD -MP -MF $(DEPDIR)/libxml.Tpo -c -o libxml.lo `test -f '$(srcdir)/libxml.c' || echo '$(srcdir)/'`$(srcdir)/libxml.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxml.Tpo $(DEPDIR)/libxml.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/libxml.c' object='libxml.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxml.lo `test -f '$(srcdir)/libxml.c' || echo '$(srcdir)/'`$(srcdir)/libxml.c
-
-types.lo: $(srcdir)/types.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT types.lo -MD -MP -MF $(DEPDIR)/types.Tpo -c -o types.lo `test -f '$(srcdir)/types.c' || echo '$(srcdir)/'`$(srcdir)/types.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/types.Tpo $(DEPDIR)/types.Plo
-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/types.c' object='types.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o types.lo `test -f '$(srcdir)/types.c' || echo '$(srcdir)/'`$(srcdir)/types.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
@@ -556,8 +620,11 @@ clean-libtool:
-rm -rf .libs _libs
install-dist_docsDATA: $(dist_docs_DATA)
@$(NORMAL_INSTALL)
- test -z "$(docsdir)" || $(MKDIR_P) "$(DESTDIR)$(docsdir)"
@list='$(dist_docs_DATA)'; test -n "$(docsdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docsdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docsdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -571,13 +638,14 @@ uninstall-dist_docsDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_docs_DATA)'; test -n "$(docsdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(docsdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(docsdir)" && rm -f $$files
+ dir='$(DESTDIR)$(docsdir)'; $(am__uninstall_files_from_dir)
install-dist_pythonDATA: $(dist_python_DATA)
@$(NORMAL_INSTALL)
- test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)"
@list='$(dist_python_DATA)'; test -n "$(pythondir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pythondir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pythondir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -591,47 +659,28 @@ uninstall-dist_pythonDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_python_DATA)'; test -n "$(pythondir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(pythondir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(pythondir)" && rm -f $$files
-install-pythonDATA: $(python_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)"
- @list='$(python_DATA)'; test -n "$(pythondir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pythondir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(pythondir)" || exit $$?; \
- done
-
-uninstall-pythonDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(python_DATA)'; test -n "$(pythondir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(pythondir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(pythondir)" && rm -f $$files
+ dir='$(DESTDIR)$(pythondir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -646,57 +695,12 @@ $(RECURSIVE_TARGETS):
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -712,12 +716,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ $(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
@@ -729,15 +728,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$$unique; \
fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
@@ -746,6 +741,21 @@ GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -782,13 +792,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -809,14 +816,16 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
-check: check-recursive
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
all-am: Makefile $(LTLIBRARIES) $(DATA)
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(docsdir)" "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(pythondir)"; do \
+ for dir in "$(DESTDIR)$(pythondir)" "$(DESTDIR)$(docsdir)" "$(DESTDIR)$(pythondir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
-install: install-recursive
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
@@ -826,10 +835,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -842,6 +856,8 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-generic clean-libtool clean-pythonLTLIBRARIES \
@@ -866,7 +882,7 @@ info: info-recursive
info-am:
install-data-am: install-dist_docsDATA install-dist_pythonDATA \
- install-pythonDATA install-pythonLTLIBRARIES
+ install-pythonLTLIBRARIES
install-dvi: install-dvi-recursive
@@ -913,14 +929,14 @@ ps: ps-recursive
ps-am:
uninstall-am: uninstall-dist_docsDATA uninstall-dist_pythonDATA \
- uninstall-pythonDATA uninstall-pythonLTLIBRARIES
+ uninstall-pythonLTLIBRARIES
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
+.MAKE: $(am__recursive_targets) all check install install-am \
+ install-strip
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic clean-libtool \
- clean-pythonLTLIBRARIES ctags ctags-recursive distclean \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool \
+ clean-pythonLTLIBRARIES cscopelist-am ctags ctags-am distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
@@ -928,28 +944,25 @@ uninstall-am: uninstall-dist_docsDATA uninstall-dist_pythonDATA \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
- install-pythonDATA install-pythonLTLIBRARIES install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
- uninstall-dist_docsDATA uninstall-dist_pythonDATA \
- uninstall-pythonDATA uninstall-pythonLTLIBRARIES
+ install-pythonLTLIBRARIES install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-dist_docsDATA \
+ uninstall-dist_pythonDATA uninstall-pythonLTLIBRARIES
-@WITH_PYTHON_TRUE@$(srcdir)/libxml.c: libxml2-py.h # to generate before to compile
+# libxml.c #includes libxml2-export.c
+@WITH_PYTHON_TRUE@libxml.$(OBJEXT): libxml2-export.c
@WITH_PYTHON_TRUE@libxml2.py: $(srcdir)/libxml.py libxml2class.py
-@WITH_PYTHON_TRUE@ cat $(srcdir)/libxml.py libxml2class.py > $@
-
-@WITH_PYTHON_TRUE@$(GENERATED): gen_prog
+@WITH_PYTHON_TRUE@ cat $(srcdir)/libxml.py `test -f libxml2class.py || echo $(srcdir)/`libxml2class.py > $@
-@WITH_PYTHON_TRUE@gen_prog: $(srcdir)/$(GENERATE) $(API_DESC)
-@WITH_PYTHON_TRUE@ $(PYTHON) $(srcdir)/$(GENERATE) $(srcdir)
-@WITH_PYTHON_TRUE@ touch gen_prog
+@WITH_PYTHON_TRUE@$(GENERATED): $(srcdir)/generator.py $(API_DESC)
+@WITH_PYTHON_TRUE@ $(PYTHON) $(srcdir)/generator.py $(srcdir)
tests test: all
- cd tests && $(MAKE) MAKEFLAGS+=--silent tests
+ cd tests && $(MAKE) tests
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/python/drv_libxml2.py b/python/drv_libxml2.py
index e43fb1d..c2ec3e2 100644
--- a/python/drv_libxml2.py
+++ b/python/drv_libxml2.py
@@ -34,12 +34,18 @@ TODO
"""
-__author__ = u"Stéphane Bidoul <sbi@skynet.be>"
+__author__ = "Stéphane Bidoul <sbi@skynet.be>"
__version__ = "0.3"
+import sys
import codecs
-from types import StringType, UnicodeType
-StringTypes = (StringType,UnicodeType)
+
+if sys.version_info[0] < 3:
+ __author__ = codecs.unicode_escape_decode(__author__)[0]
+
+ StringTypes = (str, unicode)
+else:
+ StringTypes = str
from xml.sax._exceptions import *
from xml.sax import xmlreader, saxutils
@@ -65,9 +71,9 @@ def _d(s):
try:
import libxml2
-except ImportError, e:
+except ImportError:
raise SAXReaderNotAvailable("libxml2 not available: " \
- "import error was: %s" % e)
+ "import error was: %s" % sys.exc_info()[1])
class Locator(xmlreader.Locator):
"""SAX Locator adapter for libxml2.xmlTextReaderLocator"""
@@ -134,7 +140,7 @@ class LibXml2Reader(xmlreader.XMLReader):
self.__parsing = 1
try:
# prepare source and create reader
- if type(source) in StringTypes:
+ if isinstance(source, StringTypes):
reader = libxml2.newTextReaderFilename(source)
else:
source = saxutils.prepare_input_source(source)
diff --git a/python/generator.py b/python/generator.py
index 767c4bb..c0cb3ad 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -47,19 +47,19 @@ class docParser(xml.sax.handler.ContentHandler):
def close(self):
if debug:
- print "close"
+ print("close")
def getmethodname(self):
return self._methodname
def data(self, text):
if debug:
- print "data %s" % text
+ print("data %s" % text)
self._data.append(text)
def start(self, tag, attrs):
if debug:
- print "start %s, %s" % (tag, attrs)
+ print("start %s, %s" % (tag, attrs))
if tag == 'function':
self._data = []
self.in_function = 1
@@ -69,9 +69,9 @@ class docParser(xml.sax.handler.ContentHandler):
self.function_descr = None
self.function_return = None
self.function_file = None
- if attrs.has_key('name'):
+ if 'name' in attrs.keys():
self.function = attrs['name']
- if attrs.has_key('file'):
+ if 'file' in attrs.keys():
self.function_file = attrs['file']
elif tag == 'cond':
self._data = []
@@ -82,29 +82,29 @@ class docParser(xml.sax.handler.ContentHandler):
self.function_arg_name = None
self.function_arg_type = None
self.function_arg_info = None
- if attrs.has_key('name'):
+ if 'name' in attrs.keys():
self.function_arg_name = attrs['name']
- if attrs.has_key('type'):
+ if 'type' in attrs.keys():
self.function_arg_type = attrs['type']
- if attrs.has_key('info'):
+ if 'info' in attrs.keys():
self.function_arg_info = attrs['info']
elif tag == 'return':
if self.in_function == 1:
self.function_return_type = None
self.function_return_info = None
self.function_return_field = None
- if attrs.has_key('type'):
+ if 'type' in attrs.keys():
self.function_return_type = attrs['type']
- if attrs.has_key('info'):
+ if 'info' in attrs.keys():
self.function_return_info = attrs['info']
- if attrs.has_key('field'):
+ if 'field' in attrs.keys():
self.function_return_field = attrs['field']
elif tag == 'enum':
enum(attrs['type'],attrs['name'],attrs['value'])
def end(self, tag):
if debug:
- print "end %s" % tag
+ print("end %s" % tag)
if tag == 'function':
if self.function != None:
function(self.function, self.function_descr,
@@ -133,13 +133,13 @@ class docParser(xml.sax.handler.ContentHandler):
str = str + c
if self.in_function == 1:
self.function_cond = str
-
-
+
+
def function(name, desc, ret, args, file, cond):
functions[name] = (desc, ret, args, file, cond)
def enum(type, name, value):
- if not enums.has_key(type):
+ if type not in enums:
enums[type] = {}
enums[type][name] = value
@@ -339,6 +339,8 @@ def skip_function(name):
return 1
if name == "xmlValidateAttributeDecl":
return 1
+ if name == "xmlPopInputCallbacks":
+ return 1
return 0
@@ -351,10 +353,10 @@ def print_function_wrapper(name, output, export, include):
try:
(desc, ret, args, file, cond) = functions[name]
except:
- print "failed to get function %s infos"
+ print("failed to get function %s infos")
return
- if skipped_modules.has_key(file):
+ if file in skipped_modules:
return 0
if skip_function(name) == 1:
return 0
@@ -368,16 +370,17 @@ def print_function_wrapper(name, output, export, include):
c_args=""
c_return=""
c_convert=""
+ c_release=""
num_bufs=0
for arg in args:
# This should be correct
if arg[1][0:6] == "const ":
arg[1] = arg[1][6:]
c_args = c_args + " %s %s;\n" % (arg[1], arg[0])
- if py_types.has_key(arg[1]):
+ if arg[1] in py_types:
(f, t, n, c) = py_types[arg[1]]
if (f == 'z') and (name in foreign_encoding_args) and (num_bufs == 0):
- f = 't#'
+ f = 's#'
if f != None:
format = format + f
if t != None:
@@ -388,17 +391,20 @@ def print_function_wrapper(name, output, export, include):
arg[1], t, arg[0])
else:
format_args = format_args + ", &%s" % (arg[0])
- if f == 't#':
+ if f == 's#':
format_args = format_args + ", &py_buffsize%d" % num_bufs
c_args = c_args + " int py_buffsize%d;\n" % num_bufs
num_bufs = num_bufs + 1
if c_call != "":
c_call = c_call + ", "
c_call = c_call + "%s" % (arg[0])
+ if t == "File":
+ c_release = c_release + \
+ " PyFile_Release(%s);\n" % (arg[0])
else:
- if skipped_types.has_key(arg[1]):
+ if arg[1] in skipped_types:
return 0
- if unknown_types.has_key(arg[1]):
+ if arg[1] in unknown_types:
lst = unknown_types[arg[1]]
lst.append(name)
else:
@@ -420,25 +426,25 @@ def print_function_wrapper(name, output, export, include):
else:
c_call = "\n %s(%s);\n" % (name, c_call)
ret_convert = " Py_INCREF(Py_None);\n return(Py_None);\n"
- elif py_types.has_key(ret[0]):
+ elif ret[0] in py_types:
(f, t, n, c) = py_types[ret[0]]
- c_return = " %s c_retval;\n" % (ret[0])
+ c_return = c_return + " %s c_retval;\n" % (ret[0])
if file == "python_accessor" and ret[2] != None:
c_call = "\n c_retval = %s->%s;\n" % (args[0][0], ret[2])
else:
c_call = "\n c_retval = %s(%s);\n" % (name, c_call)
ret_convert = " py_retval = libxml_%sWrap((%s) c_retval);\n" % (n,c)
ret_convert = ret_convert + " return(py_retval);\n"
- elif py_return_types.has_key(ret[0]):
+ elif ret[0] in py_return_types:
(f, t, n, c) = py_return_types[ret[0]]
- c_return = " %s c_retval;\n" % (ret[0])
+ c_return = c_return + " %s c_retval;\n" % (ret[0])
c_call = "\n c_retval = %s(%s);\n" % (name, c_call)
ret_convert = " py_retval = libxml_%sWrap((%s) c_retval);\n" % (n,c)
ret_convert = ret_convert + " return(py_retval);\n"
else:
- if skipped_types.has_key(ret[0]):
+ if ret[0] in skipped_types:
return 0
- if unknown_types.has_key(ret[0]):
+ if ret[0] in unknown_types:
lst = unknown_types[ret[0]]
lst.append(name)
else:
@@ -489,8 +495,10 @@ def print_function_wrapper(name, output, export, include):
output.write(" return(NULL);\n")
if c_convert != "":
output.write(c_convert)
-
+
output.write(c_call)
+ if c_release != "":
+ output.write(c_release)
output.write(ret_convert)
output.write("}\n\n")
if cond != None and cond != "":
@@ -510,19 +518,19 @@ def buildStubs():
(parser, target) = getparser()
parser.feed(data)
parser.close()
- except IOError, msg:
+ except IOError as msg:
try:
f = open(os.path.join(srcPref,"..","doc","libxml2-api.xml"))
data = f.read()
(parser, target) = getparser()
parser.feed(data)
parser.close()
- except IOError, msg:
- print file, ":", msg
+ except IOError as msg:
+ print(file, ":", msg)
sys.exit(1)
- n = len(functions.keys())
- print "Found %d functions in libxml2-api.xml" % (n)
+ n = len(list(functions.keys()))
+ print("Found %d functions in libxml2-api.xml" % (n))
py_types['pythonObject'] = ('O', "pythonObject", "pythonObject", "pythonObject")
try:
@@ -531,12 +539,12 @@ def buildStubs():
(parser, target) = getparser()
parser.feed(data)
parser.close()
- except IOError, msg:
- print file, ":", msg
+ except IOError as msg:
+ print(file, ":", msg)
- print "Found %d functions in libxml2-python-api.xml" % (
- len(functions.keys()) - n)
+ print("Found %d functions in libxml2-python-api.xml" % (
+ len(list(functions.keys())) - n))
nb_wrap = 0
failed = 0
skipped = 0
@@ -567,12 +575,12 @@ def buildStubs():
export.close()
wrapper.close()
- print "Generated %d wrapper functions, %d failed, %d skipped\n" % (nb_wrap,
- failed, skipped)
- print "Missing type converters: "
- for type in unknown_types.keys():
- print "%s:%d " % (type, len(unknown_types[type])),
- print
+ print("Generated %d wrapper functions, %d failed, %d skipped\n" % (nb_wrap,
+ failed, skipped))
+ print("Missing type converters: ")
+ for type in list(unknown_types.keys()):
+ print("%s:%d " % (type, len(unknown_types[type])))
+ print()
#######################################################################
#
@@ -589,7 +597,7 @@ classes_type = {
"xmlNodePtr": ("._o", "xmlNode(_obj=%s)", "xmlNode"),
"xmlNode *": ("._o", "xmlNode(_obj=%s)", "xmlNode"),
"xmlDocPtr": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
- "xmlDocPtr *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
+ "xmlDoc *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
"htmlDocPtr": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
"htmlxmlDocPtr *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
"xmlAttrPtr": ("._o", "xmlAttr(_obj=%s)", "xmlAttr"),
@@ -697,40 +705,40 @@ def nameFixup(name, classe, type, file):
l = len(classe)
if name[0:l] == listname:
func = name[l:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:12] == "xmlParserGet" and file == "python_accessor":
func = name[12:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:12] == "xmlParserSet" and file == "python_accessor":
func = name[12:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:10] == "xmlNodeGet" and file == "python_accessor":
func = name[10:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:9] == "xmlURIGet" and file == "python_accessor":
func = name[9:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:9] == "xmlURISet" and file == "python_accessor":
func = name[6:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:11] == "xmlErrorGet" and file == "python_accessor":
func = name[11:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:17] == "xmlXPathParserGet" and file == "python_accessor":
func = name[17:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:11] == "xmlXPathGet" and file == "python_accessor":
func = name[11:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:11] == "xmlXPathSet" and file == "python_accessor":
func = name[8:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:15] == "xmlOutputBuffer" and file != "python":
func = name[15:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:20] == "xmlParserInputBuffer" and file != "python":
func = name[20:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:9] == "xmlRegexp" and file == "xmlregexp":
func = "regexp" + name[9:]
elif name[0:6] == "xmlReg" and file == "xmlregexp":
@@ -745,19 +753,19 @@ def nameFixup(name, classe, type, file):
func = name[9:]
elif name[0:11] == "xmlACatalog":
func = name[11:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:l] == classe:
func = name[l:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:7] == "libxml_":
func = name[7:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:6] == "xmlGet":
func = name[6:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
elif name[0:3] == "xml":
func = name[3:]
- func = string.lower(func[0:1]) + func[1:]
+ func = func[0:1].lower() + func[1:]
else:
func = name
if func[0:5] == "xPath":
@@ -795,11 +803,29 @@ def functionCompare(info1, info2):
return 1
return 0
+def cmp_to_key(mycmp):
+ 'Convert a cmp= function into a key= function'
+ class K(object):
+ def __init__(self, obj, *args):
+ self.obj = obj
+ def __lt__(self, other):
+ return mycmp(self.obj, other.obj) < 0
+ def __gt__(self, other):
+ return mycmp(self.obj, other.obj) > 0
+ def __eq__(self, other):
+ return mycmp(self.obj, other.obj) == 0
+ def __le__(self, other):
+ return mycmp(self.obj, other.obj) <= 0
+ def __ge__(self, other):
+ return mycmp(self.obj, other.obj) >= 0
+ def __ne__(self, other):
+ return mycmp(self.obj, other.obj) != 0
+ return K
def writeDoc(name, args, indent, output):
if functions[name][0] is None or functions[name][0] == "":
return
val = functions[name][0]
- val = string.replace(val, "NULL", "None")
+ val = val.replace("NULL", "None")
output.write(indent)
output.write('"""')
while len(val) > 60:
@@ -807,7 +833,7 @@ def writeDoc(name, args, indent, output):
val = val[1:]
continue
str = val[0:60]
- i = string.rfind(str, " ")
+ i = str.rfind(" ")
if i < 0:
i = 60
str = val[0:i]
@@ -857,13 +883,13 @@ def buildWrappers():
ctypes.append(type)
ctypes_processed[type] = ()
for type in sorted(classes_type.keys()):
- if ctypes_processed.has_key(type):
+ if type in ctypes_processed:
continue
tinfo = classes_type[type]
- if not classes_processed.has_key(tinfo[2]):
+ if tinfo[2] not in classes_processed:
classes_list.append(tinfo[2])
classes_processed[tinfo[2]] = ()
-
+
ctypes.append(type)
ctypes_processed[type] = ()
@@ -912,9 +938,9 @@ def buildWrappers():
txt.write(" Generated Classes for libxml2-python\n\n")
txt.write("#\n# Global functions of the module\n#\n\n")
- if function_classes.has_key("None"):
+ if "None" in function_classes:
flist = function_classes["None"]
- flist.sort(functionCompare)
+ flist = sorted(flist, key=cmp_to_key(functionCompare))
oldfile = ""
for info in flist:
(index, func, name, ret, args, file) = info
@@ -934,11 +960,17 @@ def buildWrappers():
writeDoc(name, args, ' ', classes)
for arg in args:
- if classes_type.has_key(arg[1]):
+ if arg[1] in classes_type:
classes.write(" if %s is None: %s__o = None\n" %
(arg[0], arg[0]))
classes.write(" else: %s__o = %s%s\n" %
(arg[0], arg[0], classes_type[arg[1]][0]))
+ if arg[1] in py_types:
+ (f, t, n, c) = py_types[arg[1]]
+ if t == "File":
+ classes.write(" if %s is not None: %s.flush()\n" % (
+ arg[0], arg[0]))
+
if ret[0] != "void":
classes.write(" ret = ")
else:
@@ -949,26 +981,36 @@ def buildWrappers():
if n != 0:
classes.write(", ")
classes.write("%s" % arg[0])
- if classes_type.has_key(arg[1]):
+ if arg[1] in classes_type:
classes.write("__o")
n = n + 1
classes.write(")\n")
+
+# This may be needed to reposition the I/O, but likely to cause more harm
+# than good. Those changes in Python3 really break the model.
+# for arg in args:
+# if arg[1] in py_types:
+# (f, t, n, c) = py_types[arg[1]]
+# if t == "File":
+# classes.write(" if %s is not None: %s.seek(0,0)\n"%(
+# arg[0], arg[0]))
+
if ret[0] != "void":
- if classes_type.has_key(ret[0]):
+ if ret[0] in classes_type:
#
# Raise an exception
#
- if functions_noexcept.has_key(name):
+ if name in functions_noexcept:
classes.write(" if ret is None:return None\n")
- elif string.find(name, "URI") >= 0:
+ elif name.find("URI") >= 0:
classes.write(
" if ret is None:raise uriError('%s() failed')\n"
% (name))
- elif string.find(name, "XPath") >= 0:
+ elif name.find("XPath") >= 0:
classes.write(
" if ret is None:raise xpathError('%s() failed')\n"
% (name))
- elif string.find(name, "Parse") >= 0:
+ elif name.find("Parse") >= 0:
classes.write(
" if ret is None:raise parserError('%s() failed')\n"
% (name))
@@ -988,7 +1030,7 @@ def buildWrappers():
if classname == "None":
pass
else:
- if classes_ancestor.has_key(classname):
+ if classname in classes_ancestor:
txt.write("\n\nClass %s(%s)\n" % (classname,
classes_ancestor[classname]))
classes.write("class %s(%s):\n" % (classname,
@@ -996,12 +1038,11 @@ def buildWrappers():
classes.write(" def __init__(self, _obj=None):\n")
if classes_ancestor[classname] == "xmlCore" or \
classes_ancestor[classname] == "xmlNode":
- classes.write(" if type(_obj).__name__ != ")
- classes.write("'PyCObject':\n")
- classes.write(" raise TypeError, ")
- classes.write("'%s needs a PyCObject argument'\n" % \
+ classes.write(" if checkWrapper(_obj) != 0:")
+ classes.write(" raise TypeError")
+ classes.write("('%s got a wrong wrapper object type')\n" % \
classname)
- if reference_keepers.has_key(classname):
+ if classname in reference_keepers:
rlist = reference_keepers[classname]
for ref in rlist:
classes.write(" self.%s = None\n" % ref[1])
@@ -1012,20 +1053,20 @@ def buildWrappers():
classes_ancestor[classname] == "xmlNode":
classes.write(" def __repr__(self):\n")
format = "<%s (%%s) object at 0x%%x>" % (classname)
- classes.write(" return \"%s\" %% (self.name, long(pos_id (self)))\n\n" % (
+ classes.write(" return \"%s\" %% (self.name, int(pos_id (self)))\n\n" % (
format))
else:
txt.write("Class %s()\n" % (classname))
classes.write("class %s:\n" % (classname))
classes.write(" def __init__(self, _obj=None):\n")
- if reference_keepers.has_key(classname):
+ if classname in reference_keepers:
list = reference_keepers[classname]
for ref in list:
classes.write(" self.%s = None\n" % ref[1])
classes.write(" if _obj != None:self._o = _obj;return\n")
classes.write(" self._o = None\n\n")
destruct=None
- if classes_destructors.has_key(classname):
+ if classname in classes_destructors:
classes.write(" def __del__(self):\n")
classes.write(" if self._o != None:\n")
classes.write(" libxml2mod.%s(self._o)\n" %
@@ -1033,7 +1074,7 @@ def buildWrappers():
classes.write(" self._o = None\n\n")
destruct=classes_destructors[classname]
flist = function_classes[classname]
- flist.sort(functionCompare)
+ flist = sorted(flist, key=cmp_to_key(functionCompare))
oldfile = ""
for info in flist:
(index, func, name, ret, args, file) = info
@@ -1065,7 +1106,7 @@ def buildWrappers():
writeDoc(name, args, ' ', classes)
n = 0
for arg in args:
- if classes_type.has_key(arg[1]):
+ if arg[1] in classes_type:
if n != index:
classes.write(" if %s is None: %s__o = None\n" %
(arg[0], arg[0]))
@@ -1083,31 +1124,31 @@ def buildWrappers():
classes.write(", ")
if n != index:
classes.write("%s" % arg[0])
- if classes_type.has_key(arg[1]):
+ if arg[1] in classes_type:
classes.write("__o")
else:
classes.write("self")
- if classes_type.has_key(arg[1]):
+ if arg[1] in classes_type:
classes.write(classes_type[arg[1]][0])
n = n + 1
classes.write(")\n")
if ret[0] != "void":
- if classes_type.has_key(ret[0]):
+ if ret[0] in classes_type:
#
# Raise an exception
#
- if functions_noexcept.has_key(name):
+ if name in functions_noexcept:
classes.write(
" if ret is None:return None\n")
- elif string.find(name, "URI") >= 0:
+ elif name.find("URI") >= 0:
classes.write(
" if ret is None:raise uriError('%s() failed')\n"
% (name))
- elif string.find(name, "XPath") >= 0:
+ elif name.find("XPath") >= 0:
classes.write(
" if ret is None:raise xpathError('%s() failed')\n"
% (name))
- elif string.find(name, "Parse") >= 0:
+ elif name.find("Parse") >= 0:
classes.write(
" if ret is None:raise parserError('%s() failed')\n"
% (name))
@@ -1129,7 +1170,7 @@ def buildWrappers():
# See reference_keepers for the list
#
tclass = classes_type[ret[0]][2]
- if reference_keepers.has_key(tclass):
+ if tclass in reference_keepers:
list = reference_keepers[tclass]
for pref in list:
if pref[0] == classname:
@@ -1139,22 +1180,22 @@ def buildWrappers():
# return the class
#
classes.write(" return __tmp\n")
- elif converter_type.has_key(ret[0]):
+ elif ret[0] in converter_type:
#
# Raise an exception
#
- if functions_noexcept.has_key(name):
+ if name in functions_noexcept:
classes.write(
" if ret is None:return None")
- elif string.find(name, "URI") >= 0:
+ elif name.find("URI") >= 0:
classes.write(
" if ret is None:raise uriError('%s() failed')\n"
% (name))
- elif string.find(name, "XPath") >= 0:
+ elif name.find("XPath") >= 0:
classes.write(
" if ret is None:raise xpathError('%s() failed')\n"
% (name))
- elif string.find(name, "Parse") >= 0:
+ elif name.find("Parse") >= 0:
classes.write(
" if ret is None:raise parserError('%s() failed')\n"
% (name))
@@ -1175,7 +1216,7 @@ def buildWrappers():
for type,enum in enums.items():
classes.write("# %s\n" % type)
items = enum.items()
- items.sort(lambda i1,i2: cmp(long(i1[1]),long(i2[1])))
+ items = sorted(items, key=(lambda i: int(i[1])))
for name,value in items:
classes.write("%s = %s\n" % (name,value))
classes.write("\n")
diff --git a/python/libxml.c b/python/libxml.c
index 9dabf89..30b71f3 100644
--- a/python/libxml.c
+++ b/python/libxml.c
@@ -28,9 +28,7 @@
#include "libxml_wrap.h"
#include "libxml2-py.h"
-#if defined(_MSC_VER) && !defined(vsnprintf)
-#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
-#elif defined(WITH_TRIO) && !defined(vsnprintf)
+#if defined(WITH_TRIO)
#include "trio.h"
#define vsnprintf trio_vsnprintf
#endif
@@ -43,7 +41,17 @@
/* #define DEBUG_FILES */
/* #define DEBUG_LOADER */
+#if PY_MAJOR_VERSION >= 3
+PyObject *PyInit_libxml2mod(void);
+
+#define PY_IMPORT_STRING_SIZE PyUnicode_FromStringAndSize
+#define PY_IMPORT_STRING PyUnicode_FromString
+#else
void initlibxml2mod(void);
+#define PY_IMPORT_STRING_SIZE PyString_FromStringAndSize
+#define PY_IMPORT_STRING PyString_FromString
+#endif
+
/**
* TODO:
@@ -282,18 +290,42 @@ xmlPythonFileReadRaw (void * context, char * buffer, int len) {
if (ret == NULL) {
printf("xmlPythonFileReadRaw: result is NULL\n");
return(-1);
- } else if (PyString_Check(ret)) {
- lenread = PyString_Size(ret);
- data = PyString_AsString(ret);
- if (lenread > len)
- memcpy(buffer, data, len);
- else
- memcpy(buffer, data, lenread);
- Py_DECREF(ret);
+ } else if (PyBytes_Check(ret)) {
+ lenread = PyBytes_Size(ret);
+ data = PyBytes_AsString(ret);
+#ifdef PyUnicode_Check
+ } else if PyUnicode_Check (ret) {
+#if PY_VERSION_HEX >= 0x03030000
+ Py_ssize_t size;
+ const char *tmp;
+
+ /* tmp doesn't need to be deallocated */
+ tmp = PyUnicode_AsUTF8AndSize(ret, &size);
+
+ lenread = (int) size;
+ data = (char *) tmp;
+#else
+ PyObject *b;
+ b = PyUnicode_AsUTF8String(ret);
+ if (b == NULL) {
+ printf("xmlPythonFileReadRaw: failed to convert to UTF-8\n");
+ return(-1);
+ }
+ lenread = PyBytes_Size(b);
+ data = PyBytes_AsString(b);
+ Py_DECREF(b);
+#endif
+#endif
} else {
printf("xmlPythonFileReadRaw: result is not a String\n");
Py_DECREF(ret);
+ return(-1);
}
+ if (lenread > len)
+ memcpy(buffer, data, len);
+ else
+ memcpy(buffer, data, lenread);
+ Py_DECREF(ret);
return(lenread);
}
@@ -323,18 +355,42 @@ xmlPythonFileRead (void * context, char * buffer, int len) {
if (ret == NULL) {
printf("xmlPythonFileRead: result is NULL\n");
return(-1);
- } else if (PyString_Check(ret)) {
- lenread = PyString_Size(ret);
- data = PyString_AsString(ret);
- if (lenread > len)
- memcpy(buffer, data, len);
- else
- memcpy(buffer, data, lenread);
- Py_DECREF(ret);
+ } else if (PyBytes_Check(ret)) {
+ lenread = PyBytes_Size(ret);
+ data = PyBytes_AsString(ret);
+#ifdef PyUnicode_Check
+ } else if PyUnicode_Check (ret) {
+#if PY_VERSION_HEX >= 0x03030000
+ Py_ssize_t size;
+ const char *tmp;
+
+ /* tmp doesn't need to be deallocated */
+ tmp = PyUnicode_AsUTF8AndSize(ret, &size);
+
+ lenread = (int) size;
+ data = (char *) tmp;
+#else
+ PyObject *b;
+ b = PyUnicode_AsUTF8String(ret);
+ if (b == NULL) {
+ printf("xmlPythonFileRead: failed to convert to UTF-8\n");
+ return(-1);
+ }
+ lenread = PyBytes_Size(b);
+ data = PyBytes_AsString(b);
+ Py_DECREF(b);
+#endif
+#endif
} else {
printf("xmlPythonFileRead: result is not a String\n");
Py_DECREF(ret);
+ return(-1);
}
+ if (lenread > len)
+ memcpy(buffer, data, len);
+ else
+ memcpy(buffer, data, lenread);
+ Py_DECREF(ret);
return(lenread);
}
@@ -360,7 +416,7 @@ xmlPythonFileWrite (void * context, const char * buffer, int len) {
#endif
file = (PyObject *) context;
if (file == NULL) return(-1);
- string = PyString_FromStringAndSize(buffer, len);
+ string = PY_IMPORT_STRING_SIZE(buffer, len);
if (string == NULL) return(-1);
if (PyObject_HasAttrString(file, (char *) "io_write")) {
ret = PyEval_CallMethod(file, (char *) "io_write", (char *) "(O)",
@@ -373,8 +429,8 @@ xmlPythonFileWrite (void * context, const char * buffer, int len) {
if (ret == NULL) {
printf("xmlPythonFileWrite: result is NULL\n");
return(-1);
- } else if (PyInt_Check(ret)) {
- written = (int) PyInt_AsLong(ret);
+ } else if (PyLong_Check(ret)) {
+ written = (int) PyLong_AsLong(ret);
Py_DECREF(ret);
} else if (ret == Py_None) {
written = len;
@@ -667,7 +723,7 @@ pythonExternalEntityLoader(const char *URL, const char *ID,
Py_XDECREF(ctxtobj);
#ifdef DEBUG_LOADER
printf("pythonExternalEntityLoader: result ");
- PyObject_Print(ret, stderr, 0);
+ PyObject_Print(ret, stdout, 0);
printf("\n");
#endif
@@ -713,19 +769,114 @@ libxml_xmlSetEntityLoader(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
&loader))
return(NULL);
+ if (!PyCallable_Check(loader)) {
+ PyErr_SetString(PyExc_ValueError, "entity loader is not callable");
+ return(NULL);
+ }
+
#ifdef DEBUG_LOADER
printf("libxml_xmlSetEntityLoader\n");
#endif
if (defaultExternalEntityLoader == NULL)
defaultExternalEntityLoader = xmlGetExternalEntityLoader();
+ Py_XDECREF(pythonExternalEntityLoaderObjext);
pythonExternalEntityLoaderObjext = loader;
+ Py_XINCREF(pythonExternalEntityLoaderObjext);
xmlSetExternalEntityLoader(pythonExternalEntityLoader);
- py_retval = PyInt_FromLong(0);
+ py_retval = PyLong_FromLong(0);
return(py_retval);
}
+/************************************************************************
+ * *
+ * Input callback registration *
+ * *
+ ************************************************************************/
+static PyObject *pythonInputOpenCallbackObject;
+static int pythonInputCallbackID = -1;
+
+static int
+pythonInputMatchCallback(ATTRIBUTE_UNUSED const char *URI)
+{
+ /* Always return success, real decision whether URI is supported will be
+ * made in open callback. */
+ return 1;
+}
+
+static void *
+pythonInputOpenCallback(const char *URI)
+{
+ PyObject *ret;
+
+ ret = PyObject_CallFunction(pythonInputOpenCallbackObject,
+ (char *)"s", URI);
+ if (ret == Py_None) {
+ Py_DECREF(Py_None);
+ return NULL;
+ }
+ return ret;
+}
+
+PyObject *
+libxml_xmlRegisterInputCallback(ATTRIBUTE_UNUSED PyObject *self,
+ PyObject *args) {
+ PyObject *cb;
+
+ if (!PyArg_ParseTuple(args,
+ (const char *)"O:libxml_xmlRegisterInputCallback", &cb))
+ return(NULL);
+
+ if (!PyCallable_Check(cb)) {
+ PyErr_SetString(PyExc_ValueError, "input callback is not callable");
+ return(NULL);
+ }
+
+ /* Python module registers a single callback and manages the list of
+ * all callbacks internally. This is necessitated by xmlInputMatchCallback
+ * API, which does not allow for passing of data objects to discriminate
+ * different Python methods. */
+ if (pythonInputCallbackID == -1) {
+ pythonInputCallbackID = xmlRegisterInputCallbacks(
+ pythonInputMatchCallback, pythonInputOpenCallback,
+ xmlPythonFileReadRaw, xmlPythonFileCloseRaw);
+ if (pythonInputCallbackID == -1)
+ return PyErr_NoMemory();
+ pythonInputOpenCallbackObject = cb;
+ Py_INCREF(pythonInputOpenCallbackObject);
+ }
+
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlUnregisterInputCallback(ATTRIBUTE_UNUSED PyObject *self,
+ ATTRIBUTE_UNUSED PyObject *args) {
+ int ret;
+
+ ret = xmlPopInputCallbacks();
+ if (pythonInputCallbackID != -1) {
+ /* Assert that the right input callback was popped. libxml's API does not
+ * allow removal by ID, so all that could be done is an assert. */
+ if (pythonInputCallbackID == ret) {
+ pythonInputCallbackID = -1;
+ Py_DECREF(pythonInputOpenCallbackObject);
+ pythonInputOpenCallbackObject = NULL;
+ } else {
+ PyErr_SetString(PyExc_AssertionError, "popped non-python input callback");
+ return(NULL);
+ }
+ } else if (ret == -1) {
+ /* No more callbacks to pop */
+ PyErr_SetString(PyExc_IndexError, "no input callbacks to pop");
+ return(NULL);
+ }
+
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
/************************************************************************
* *
@@ -766,10 +917,10 @@ pythonStartElement(void *user_data, const xmlChar * name,
} else {
dict = PyDict_New();
for (i = 0; attrs[i] != NULL; i++) {
- attrname = PyString_FromString((char *) attrs[i]);
+ attrname = PY_IMPORT_STRING((char *) attrs[i]);
i++;
if (attrs[i] != NULL) {
- attrvalue = PyString_FromString((char *) attrs[i]);
+ attrvalue = PY_IMPORT_STRING((char *) attrs[i]);
} else {
Py_XINCREF(Py_None);
attrvalue = Py_None;
@@ -1172,7 +1323,7 @@ pythonAttributeDecl(void *user_data,
nameList = PyList_New(count);
count = 0;
for (node = tree; node != NULL; node = node->next) {
- newName = PyString_FromString((char *) node->name);
+ newName = PY_IMPORT_STRING((char *) node->name);
PyList_SetItem(nameList, count, newName);
Py_DECREF(newName);
count++;
@@ -1367,6 +1518,7 @@ libxml_htmlCreatePushParser(ATTRIBUTE_UNUSED PyObject * self,
PyObject *
libxml_xmlSAXParseFile(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
{
+#ifdef LIBXML_SAX1_ENABLED
int recover;
const char *URI;
PyObject *pyobj_SAX = NULL;
@@ -1388,6 +1540,7 @@ libxml_xmlSAXParseFile(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
Py_INCREF(pyobj_SAX);
/* The reference is released in pythonEndDocument() */
xmlSAXUserParseFile(SAX, pyobj_SAX, URI);
+#endif /* LIBXML_SAX1_ENABLED */
Py_INCREF(Py_None);
return (Py_None);
}
@@ -2033,7 +2186,7 @@ libxml_xmlFreeTextReader(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeTextReader", &pyobj_reader))
return(NULL);
- if (!PyCObject_Check(pyobj_reader)) {
+ if (!PyCapsule_CheckExact(pyobj_reader)) {
Py_INCREF(Py_None);
return(Py_None);
}
@@ -2234,6 +2387,32 @@ libxml_xmlRegisterXPathFunction(ATTRIBUTE_UNUSED PyObject * self,
return (py_retval);
}
+PyObject *
+libxml_xmlXPathRegisterVariable(ATTRIBUTE_UNUSED PyObject * self,
+ PyObject * args)
+{
+ PyObject *py_retval;
+ int c_retval = 0;
+ xmlChar *name;
+ xmlChar *ns_uri;
+ xmlXPathContextPtr ctx;
+ xmlXPathObjectPtr val;
+ PyObject *pyobj_ctx;
+ PyObject *pyobj_value;
+
+ if (!PyArg_ParseTuple
+ (args, (char *) "OszO:xpathRegisterVariable", &pyobj_ctx, &name,
+ &ns_uri, &pyobj_value))
+ return (NULL);
+
+ ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+ val = libxml_xmlXPathObjectPtrConvert(pyobj_value);
+
+ c_retval = xmlXPathRegisterVariableNS(ctx, name, ns_uri, val);
+ py_retval = libxml_intWrap(c_retval);
+ return (py_retval);
+}
+
/************************************************************************
* *
* Global properties access *
@@ -2504,6 +2683,7 @@ libxml_last(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
xmlAttrPtr attr = (xmlAttrPtr) cur;
res = attr->last;
+ break;
}
default:
res = NULL;
@@ -2566,6 +2746,10 @@ libxml_type(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
if (!PyArg_ParseTuple(args, (char *) "O:last", &obj))
return NULL;
cur = PyxmlNode_Get(obj);
+ if (cur == NULL) {
+ Py_INCREF(Py_None);
+ return (Py_None);
+ }
#ifdef DEBUG
printf("libxml_type: cur = %p\n", cur);
@@ -2682,7 +2866,7 @@ libxml_xmlNodeRemoveNsDef(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
PyObject *pyobj_node;
xmlChar *href;
xmlNsPtr c_retval;
-
+
if (!PyArg_ParseTuple
(args, (char *) "Oz:xmlNodeRemoveNsDef", &pyobj_node, &href))
return (NULL);
@@ -2844,16 +3028,12 @@ libxml_saveNodeTo(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
&py_file, &encoding, &format))
return (NULL);
node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
-
if (node == NULL) {
- return (PyInt_FromLong((long) -1));
- }
- if ((py_file == NULL) || (!(PyFile_Check(py_file)))) {
- return (PyInt_FromLong((long) -1));
+ return (PyLong_FromLong((long) -1));
}
- output = PyFile_AsFile(py_file);
+ output = PyFile_Get(py_file);
if (output == NULL) {
- return (PyInt_FromLong((long) -1));
+ return (PyLong_FromLong((long) -1));
}
if (node->type == XML_DOCUMENT_NODE) {
@@ -2872,7 +3052,7 @@ libxml_saveNodeTo(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
if (encoding != NULL) {
handler = xmlFindCharEncodingHandler(encoding);
if (handler == NULL) {
- return (PyInt_FromLong((long) -1));
+ return (PyLong_FromLong((long) -1));
}
}
if (doc->type == XML_HTML_DOCUMENT_NODE) {
@@ -2897,7 +3077,8 @@ libxml_saveNodeTo(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
xmlNodeDumpOutput(buf, doc, node, 0, format, encoding);
len = xmlOutputBufferClose(buf);
}
- return (PyInt_FromLong((long) len));
+ PyFile_Release(output);
+ return (PyLong_FromLong((long) len));
}
#endif /* LIBXML_OUTPUT_ENABLED */
@@ -3403,7 +3584,7 @@ PystringSet_Convert(PyObject *py_strings, xmlChar *** result)
{
int idx;
for (idx=0; idx < count; ++idx) {
- char* s = PyString_AsString
+ char* s = PyBytes_AsString
(is_tuple
? PyTuple_GET_ITEM(py_strings, idx)
: PyList_GET_ITEM(py_strings, idx));
@@ -3492,8 +3673,8 @@ libxml_C14NDocDumpMemory(ATTRIBUTE_UNUSED PyObject * self,
return NULL;
}
else {
- py_retval = PyString_FromStringAndSize((const char *) doc_txt,
- result);
+ py_retval = PY_IMPORT_STRING_SIZE((const char *) doc_txt,
+ result);
xmlFree(doc_txt);
return py_retval;
}
@@ -3534,11 +3715,7 @@ libxml_C14NDocSaveTo(ATTRIBUTE_UNUSED PyObject * self,
return NULL;
}
- if ((py_file == NULL) || (!(PyFile_Check(py_file)))) {
- PyErr_SetString(PyExc_TypeError, "bad file.");
- return NULL;
- }
- output = PyFile_AsFile(py_file);
+ output = PyFile_Get(py_file);
if (output == NULL) {
PyErr_SetString(PyExc_TypeError, "bad file.");
return NULL;
@@ -3576,6 +3753,7 @@ libxml_C14NDocSaveTo(ATTRIBUTE_UNUSED PyObject * self,
xmlFree(prefixes);
}
+ PyFile_Release(output);
len = xmlOutputBufferClose(buf);
if (result < 0) {
@@ -3584,7 +3762,7 @@ libxml_C14NDocSaveTo(ATTRIBUTE_UNUSED PyObject * self,
return NULL;
}
else
- return PyInt_FromLong((long) len);
+ return PyLong_FromLong((long) len);
}
#endif
@@ -3598,7 +3776,7 @@ libxml_getObjDesc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
if (!PyArg_ParseTuple(args, (char *)"O:getObjDesc", &obj))
return NULL;
- str = PyCObject_GetDesc(obj);
+ str = PyCapsule_GetPointer(obj, PyCapsule_GetName(obj));
return Py_BuildValue((char *)"s", str);
}
@@ -3693,31 +3871,64 @@ static PyMethodDef libxmlMethods[] = {
{(char *) "getObjDesc", libxml_getObjDesc, METH_VARARGS, NULL},
{(char *) "compareNodesEqual", libxml_compareNodesEqual, METH_VARARGS, NULL},
{(char *) "nodeHash", libxml_nodeHash, METH_VARARGS, NULL},
+ {(char *) "xmlRegisterInputCallback", libxml_xmlRegisterInputCallback, METH_VARARGS, NULL},
+ {(char *) "xmlUnregisterInputCallback", libxml_xmlUnregisterInputCallback, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
};
+#if PY_MAJOR_VERSION >= 3
+#define INITERROR return NULL
+
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ "libxml2mod",
+ NULL,
+ -1,
+ libxmlMethods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+#else
+#define INITERROR return
+
#ifdef MERGED_MODULES
extern void initlibxsltmod(void);
#endif
-void
-initlibxml2mod(void)
-{
- static int initialized = 0;
+#endif
- if (initialized != 0)
- return;
+#if PY_MAJOR_VERSION >= 3
+PyObject *PyInit_libxml2mod(void)
+#else
+void initlibxml2mod(void)
+#endif
+{
+ PyObject *module;
+#if PY_MAJOR_VERSION >= 3
+ module = PyModule_Create(&moduledef);
+#else
/* intialize the python extension module */
- Py_InitModule((char *) "libxml2mod", libxmlMethods);
+ module = Py_InitModule((char *) "libxml2mod", libxmlMethods);
+#endif
+ if (module == NULL)
+ INITERROR;
/* initialize libxml2 */
xmlInitParser();
+ /* TODO this probably need to be revamped for Python3 */
libxml_xmlErrorInitialize();
- initialized = 1;
-
+#if PY_MAJOR_VERSION < 3
#ifdef MERGED_MODULES
initlibxsltmod();
#endif
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+ return module;
+#endif
}
diff --git a/python/libxml.py b/python/libxml.py
index c861a70..2466cc9 100644
--- a/python/libxml.py
+++ b/python/libxml.py
@@ -5,13 +5,23 @@ import sys
# The root of all libxml2 errors.
class libxmlError(Exception): pass
+# Type of the wrapper class for the C objects wrappers
+def checkWrapper(obj):
+ try:
+ n = type(_obj).__name__
+ if n != 'PyCObject' and n != 'PyCapsule':
+ return 1
+ except:
+ return 0
+ return 0
+
#
# id() is sometimes negative ...
#
def pos_id(o):
i = id(o)
if (i < 0):
- return (sys.maxint - i)
+ return (sys.maxsize - i)
return i
#
@@ -62,9 +72,20 @@ class ioWrapper:
def io_read(self, len = -1):
if self.__io == None:
return(-1)
- if len < 0:
- return(self.__io.read())
- return(self.__io.read(len))
+ try:
+ if len < 0:
+ ret = self.__io.read()
+ else:
+ ret = self.__io.read(len)
+ except Exception:
+ import sys
+ e = sys.exc_info()[1]
+ print("failed to read from Python:", type(e))
+ print("on IO:", self.__io)
+ self.__io == None
+ return(-1)
+
+ return(ret)
def io_write(self, str, len = -1):
if self.__io == None:
@@ -79,7 +100,7 @@ class ioReadWrapper(ioWrapper):
self._o = libxml2mod.xmlCreateInputBuffer(self, enc)
def __del__(self):
- print "__del__"
+ print("__del__")
self.io_close()
if self._o != None:
libxml2mod.xmlFreeParserInputBuffer(self._o)
@@ -95,12 +116,19 @@ class ioWriteWrapper(ioWrapper):
def __init__(self, _obj, enc = ""):
# print "ioWriteWrapper.__init__", _obj
if type(_obj) == type(''):
- print "write io from a string"
+ print("write io from a string")
self.o = None
- elif type(_obj) == types.InstanceType:
- print "write io from instance of %s" % (_obj.__class__)
- ioWrapper.__init__(self, _obj)
- self._o = libxml2mod.xmlCreateOutputBuffer(self, enc)
+ elif type(_obj).__name__ == 'PyCapsule':
+ file = libxml2mod.outputBufferGetPythonFile(_obj)
+ if file != None:
+ ioWrapper.__init__(self, file)
+ else:
+ ioWrapper.__init__(self, _obj)
+ self._o = _obj
+# elif type(_obj) == types.InstanceType:
+# print(("write io from instance of %s" % (_obj.__class__)))
+# ioWrapper.__init__(self, _obj)
+# self._o = libxml2mod.xmlCreateOutputBuffer(self, enc)
else:
file = libxml2mod.outputBufferGetPythonFile(_obj)
if file != None:
@@ -265,22 +293,22 @@ class xmlCore:
ret = libxml2mod.parent(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
def get_children(self):
ret = libxml2mod.children(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
def get_last(self):
ret = libxml2mod.last(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
def get_next(self):
ret = libxml2mod.next(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
def get_properties(self):
ret = libxml2mod.properties(self._o)
if ret == None:
@@ -290,7 +318,7 @@ class xmlCore:
ret = libxml2mod.prev(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
def get_content(self):
return libxml2mod.xmlNodeGetContent(self._o)
getContent = get_content # why is this duplicate naming needed ?
@@ -317,7 +345,7 @@ class xmlCore:
ret = libxml2mod.parent(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
elif attr == "properties":
ret = libxml2mod.properties(self._o)
if ret == None:
@@ -327,22 +355,22 @@ class xmlCore:
ret = libxml2mod.children(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
elif attr == "last":
ret = libxml2mod.last(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
elif attr == "next":
ret = libxml2mod.next(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
elif attr == "prev":
ret = libxml2mod.prev(self._o)
if ret == None:
return None
- return xmlNode(_obj=ret)
+ return nodeWrap(ret)
elif attr == "content":
return libxml2mod.xmlNodeGetContent(self._o)
elif attr == "name":
@@ -357,7 +385,7 @@ class xmlCore:
else:
return None
return xmlDoc(_obj=ret)
- raise AttributeError,attr
+ raise AttributeError(attr)
else:
parent = property(get_parent, None, None, "Parent node")
children = property(get_children, None, None, "First child node")
@@ -400,7 +428,7 @@ class xmlCore:
prefixes=None,
with_comments=0):
if nodes:
- nodes = map(lambda n: n._o, nodes)
+ nodes = [n._o for n in nodes]
return libxml2mod.xmlC14NDocDumpMemory(
self.get_doc()._o,
nodes,
@@ -414,7 +442,7 @@ class xmlCore:
prefixes=None,
with_comments=0):
if nodes:
- nodes = map(lambda n: n._o, nodes)
+ nodes = [n._o for n in nodes]
return libxml2mod.xmlC14NDocSaveTo(
self.get_doc()._o,
nodes,
@@ -502,7 +530,7 @@ class xmlCoreDepthFirstItertor:
self.parents = []
def __iter__(self):
return self
- def next(self):
+ def __next__(self):
while 1:
if self.node:
ret = self.node
@@ -514,6 +542,7 @@ class xmlCoreDepthFirstItertor:
except IndexError:
raise StopIteration
self.node = parent.next
+ next = __next__
#
# implements the breadth-first iterator for libxml2 DOM tree
@@ -524,7 +553,7 @@ class xmlCoreBreadthFirstItertor:
self.parents = []
def __iter__(self):
return self
- def next(self):
+ def __next__(self):
while 1:
if self.node:
ret = self.node
@@ -536,6 +565,7 @@ class xmlCoreBreadthFirstItertor:
except IndexError:
raise StopIteration
self.node = parent.children
+ next = __next__
#
# converters to present a nicer view of the XPath returns
@@ -564,10 +594,10 @@ def nodeWrap(o):
def xpathObjectRet(o):
otype = type(o)
if otype == type([]):
- ret = map(xpathObjectRet, o)
+ ret = list(map(xpathObjectRet, o))
return ret
elif otype == type(()):
- ret = map(xpathObjectRet, o)
+ ret = list(map(xpathObjectRet, o))
return tuple(ret)
elif otype == type('') or otype == type(0) or otype == type(0.0):
return o
@@ -603,7 +633,7 @@ def registerErrorHandler(f, ctx):
"""Register a Python written function to for error reporting.
The function is called back as f(ctx, error). """
import sys
- if not sys.modules.has_key('libxslt'):
+ if 'libxslt' not in sys.modules:
# normal behaviour when libxslt is not imported
ret = libxml2mod.xmlRegisterErrorHandler(f,ctx)
else:
@@ -682,8 +712,9 @@ class relaxNgValidCtxtCore:
libxml2mod.xmlRelaxNGSetValidErrors(self._o, err_func, warn_func, arg)
-def _xmlTextReaderErrorFunc((f,arg),msg,severity,locator):
+def _xmlTextReaderErrorFunc(xxx_todo_changeme,msg,severity,locator):
"""Intermediate callback to wrap the locator"""
+ (f,arg) = xxx_todo_changeme
return f(arg,msg,severity,xmlTextReaderLocator(locator))
class xmlTextReaderCore:
@@ -719,11 +750,35 @@ class xmlTextReaderCore:
return arg
#
-# The cleanup now goes though a wrappe in libxml.c
+# The cleanup now goes though a wrapper in libxml.c
#
def cleanupParser():
libxml2mod.xmlPythonCleanupParser()
+#
+# The interface to xmlRegisterInputCallbacks.
+# Since this API does not allow to pass a data object along with
+# match/open callbacks, it is necessary to maintain a list of all
+# Python callbacks.
+#
+__input_callbacks = []
+def registerInputCallback(func):
+ def findOpenCallback(URI):
+ for cb in reversed(__input_callbacks):
+ o = cb(URI)
+ if o is not None:
+ return o
+ libxml2mod.xmlRegisterInputCallback(findOpenCallback)
+ __input_callbacks.append(func)
+
+def popInputCallbacks():
+ # First pop python-level callbacks, when no more available - start
+ # popping built-in ones.
+ if len(__input_callbacks) > 0:
+ __input_callbacks.pop()
+ if len(__input_callbacks) == 0:
+ libxml2mod.xmlUnregisterInputCallback()
+
# WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
#
# Everything before this line comes from libxml.py
diff --git a/python/libxml2-export.c b/python/libxml2-export.c
new file mode 100644
index 0000000..84073ea
--- /dev/null
+++ b/python/libxml2-export.c
@@ -0,0 +1,2063 @@
+/* Generated */
+
+#if defined(LIBXML_DOCB_ENABLED)
+ { (char *)"docbDefaultSAXHandlerInit", libxml_docbDefaultSAXHandlerInit, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DOCB_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlAutoCloseTag", libxml_htmlAutoCloseTag, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCreateFileParserCtxt", libxml_htmlCreateFileParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCreateMemoryParserCtxt", libxml_htmlCreateMemoryParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCreatePushParser", libxml_htmlCreatePushParser, METH_VARARGS, NULL },
+#endif
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCtxtReadDoc", libxml_htmlCtxtReadDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCtxtReadFd", libxml_htmlCtxtReadFd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCtxtReadFile", libxml_htmlCtxtReadFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCtxtReadMemory", libxml_htmlCtxtReadMemory, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCtxtReset", libxml_htmlCtxtReset, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlCtxtUseOptions", libxml_htmlCtxtUseOptions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlDefaultSAXHandlerInit", libxml_htmlDefaultSAXHandlerInit, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlDocContentDumpFormatOutput", libxml_htmlDocContentDumpFormatOutput, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlDocContentDumpOutput", libxml_htmlDocContentDumpOutput, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlDocDump", libxml_htmlDocDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlFreeParserCtxt", libxml_htmlFreeParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlGetMetaEncoding", libxml_htmlGetMetaEncoding, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlHandleOmittedElem", libxml_htmlHandleOmittedElem, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlInitAutoClose", libxml_htmlInitAutoClose, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlIsAutoClosed", libxml_htmlIsAutoClosed, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlIsBooleanAttr", libxml_htmlIsBooleanAttr, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlIsScriptAttribute", libxml_htmlIsScriptAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlNewDoc", libxml_htmlNewDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlNewDocNoDtD", libxml_htmlNewDocNoDtD, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlNewParserCtxt", libxml_htmlNewParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlNodeDumpFile", libxml_htmlNodeDumpFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlNodeDumpFileFormat", libxml_htmlNodeDumpFileFormat, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlNodeDumpFormatOutput", libxml_htmlNodeDumpFormatOutput, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlNodeDumpOutput", libxml_htmlNodeDumpOutput, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlParseCharRef", libxml_htmlParseCharRef, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
+ { (char *)"htmlParseChunk", libxml_htmlParseChunk, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlParseDoc", libxml_htmlParseDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlParseDocument", libxml_htmlParseDocument, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlParseElement", libxml_htmlParseElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlParseFile", libxml_htmlParseFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlReadDoc", libxml_htmlReadDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlReadFd", libxml_htmlReadFd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlReadFile", libxml_htmlReadFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlReadMemory", libxml_htmlReadMemory, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlSAXParseFile", libxml_htmlSAXParseFile, METH_VARARGS, NULL },
+#endif
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlSaveFile", libxml_htmlSaveFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlSaveFileEnc", libxml_htmlSaveFileEnc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"htmlSaveFileFormat", libxml_htmlSaveFileFormat, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+ { (char *)"htmlSetMetaEncoding", libxml_htmlSetMetaEncoding, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTML_ENABLED) */
+ { (char *)"namePop", libxml_namePop, METH_VARARGS, NULL },
+ { (char *)"namePush", libxml_namePush, METH_VARARGS, NULL },
+ { (char *)"nodePop", libxml_nodePop, METH_VARARGS, NULL },
+ { (char *)"nodePush", libxml_nodePush, METH_VARARGS, NULL },
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"valuePop", libxml_valuePop, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlACatalogAdd", libxml_xmlACatalogAdd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlACatalogDump", libxml_xmlACatalogDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlACatalogRemove", libxml_xmlACatalogRemove, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlACatalogResolve", libxml_xmlACatalogResolve, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlACatalogResolvePublic", libxml_xmlACatalogResolvePublic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlACatalogResolveSystem", libxml_xmlACatalogResolveSystem, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlACatalogResolveURI", libxml_xmlACatalogResolveURI, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlAddChild", libxml_xmlAddChild, METH_VARARGS, NULL },
+ { (char *)"xmlAddChildList", libxml_xmlAddChildList, METH_VARARGS, NULL },
+ { (char *)"xmlAddDocEntity", libxml_xmlAddDocEntity, METH_VARARGS, NULL },
+ { (char *)"xmlAddDtdEntity", libxml_xmlAddDtdEntity, METH_VARARGS, NULL },
+ { (char *)"xmlAddEncodingAlias", libxml_xmlAddEncodingAlias, METH_VARARGS, NULL },
+ { (char *)"xmlAddNextSibling", libxml_xmlAddNextSibling, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+ { (char *)"xmlAddPrevSibling", libxml_xmlAddPrevSibling, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) */
+ { (char *)"xmlAddSibling", libxml_xmlAddSibling, METH_VARARGS, NULL },
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlBoolToText", libxml_xmlBoolToText, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+ { (char *)"xmlBuildQName", libxml_xmlBuildQName, METH_VARARGS, NULL },
+ { (char *)"xmlBuildRelativeURI", libxml_xmlBuildRelativeURI, METH_VARARGS, NULL },
+ { (char *)"xmlBuildURI", libxml_xmlBuildURI, METH_VARARGS, NULL },
+ { (char *)"xmlByteConsumed", libxml_xmlByteConsumed, METH_VARARGS, NULL },
+ { (char *)"xmlCanonicPath", libxml_xmlCanonicPath, METH_VARARGS, NULL },
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogAdd", libxml_xmlCatalogAdd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogCleanup", libxml_xmlCatalogCleanup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogConvert", libxml_xmlCatalogConvert, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlCatalogDump", libxml_xmlCatalogDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogGetPublic", libxml_xmlCatalogGetPublic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogGetSystem", libxml_xmlCatalogGetSystem, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogIsEmpty", libxml_xmlCatalogIsEmpty, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogRemove", libxml_xmlCatalogRemove, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogResolve", libxml_xmlCatalogResolve, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogResolvePublic", libxml_xmlCatalogResolvePublic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogResolveSystem", libxml_xmlCatalogResolveSystem, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogResolveURI", libxml_xmlCatalogResolveURI, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlCatalogSetDebug", libxml_xmlCatalogSetDebug, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlCharStrdup", libxml_xmlCharStrdup, METH_VARARGS, NULL },
+ { (char *)"xmlCharStrndup", libxml_xmlCharStrndup, METH_VARARGS, NULL },
+ { (char *)"xmlCheckFilename", libxml_xmlCheckFilename, METH_VARARGS, NULL },
+ { (char *)"xmlCheckLanguageID", libxml_xmlCheckLanguageID, METH_VARARGS, NULL },
+ { (char *)"xmlCheckUTF8", libxml_xmlCheckUTF8, METH_VARARGS, NULL },
+ { (char *)"xmlCheckVersion", libxml_xmlCheckVersion, METH_VARARGS, NULL },
+ { (char *)"xmlCleanupCharEncodingHandlers", libxml_xmlCleanupCharEncodingHandlers, METH_VARARGS, NULL },
+ { (char *)"xmlCleanupEncodingAliases", libxml_xmlCleanupEncodingAliases, METH_VARARGS, NULL },
+ { (char *)"xmlCleanupGlobals", libxml_xmlCleanupGlobals, METH_VARARGS, NULL },
+ { (char *)"xmlCleanupInputCallbacks", libxml_xmlCleanupInputCallbacks, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlCleanupOutputCallbacks", libxml_xmlCleanupOutputCallbacks, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlCleanupPredefinedEntities", libxml_xmlCleanupPredefinedEntities, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlClearParserCtxt", libxml_xmlClearParserCtxt, METH_VARARGS, NULL },
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlConvertSGMLCatalog", libxml_xmlConvertSGMLCatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlCopyChar", libxml_xmlCopyChar, METH_VARARGS, NULL },
+ { (char *)"xmlCopyCharMultiByte", libxml_xmlCopyCharMultiByte, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlCopyDoc", libxml_xmlCopyDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlCopyDtd", libxml_xmlCopyDtd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlCopyError", libxml_xmlCopyError, METH_VARARGS, NULL },
+ { (char *)"xmlCopyNamespace", libxml_xmlCopyNamespace, METH_VARARGS, NULL },
+ { (char *)"xmlCopyNamespaceList", libxml_xmlCopyNamespaceList, METH_VARARGS, NULL },
+ { (char *)"xmlCopyNode", libxml_xmlCopyNode, METH_VARARGS, NULL },
+ { (char *)"xmlCopyNodeList", libxml_xmlCopyNodeList, METH_VARARGS, NULL },
+ { (char *)"xmlCopyProp", libxml_xmlCopyProp, METH_VARARGS, NULL },
+ { (char *)"xmlCopyPropList", libxml_xmlCopyPropList, METH_VARARGS, NULL },
+ { (char *)"xmlCreateDocParserCtxt", libxml_xmlCreateDocParserCtxt, METH_VARARGS, NULL },
+ { (char *)"xmlCreateEntityParserCtxt", libxml_xmlCreateEntityParserCtxt, METH_VARARGS, NULL },
+ { (char *)"xmlCreateFileParserCtxt", libxml_xmlCreateFileParserCtxt, METH_VARARGS, NULL },
+ { (char *)"xmlCreateInputBuffer", libxml_xmlCreateInputBuffer, METH_VARARGS, NULL },
+ { (char *)"xmlCreateIntSubset", libxml_xmlCreateIntSubset, METH_VARARGS, NULL },
+ { (char *)"xmlCreateMemoryParserCtxt", libxml_xmlCreateMemoryParserCtxt, METH_VARARGS, NULL },
+ { (char *)"xmlCreateOutputBuffer", libxml_xmlCreateOutputBuffer, METH_VARARGS, NULL },
+ { (char *)"xmlCreatePushParser", libxml_xmlCreatePushParser, METH_VARARGS, NULL },
+ { (char *)"xmlCreateURI", libxml_xmlCreateURI, METH_VARARGS, NULL },
+ { (char *)"xmlCreateURLParserCtxt", libxml_xmlCreateURLParserCtxt, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtReadDoc", libxml_xmlCtxtReadDoc, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtReadFd", libxml_xmlCtxtReadFd, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtReadFile", libxml_xmlCtxtReadFile, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtReadMemory", libxml_xmlCtxtReadMemory, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtReset", libxml_xmlCtxtReset, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtResetPush", libxml_xmlCtxtResetPush, METH_VARARGS, NULL },
+ { (char *)"xmlCtxtUseOptions", libxml_xmlCtxtUseOptions, METH_VARARGS, NULL },
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugCheckDocument", libxml_xmlDebugCheckDocument, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpAttr", libxml_xmlDebugDumpAttr, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpAttrList", libxml_xmlDebugDumpAttrList, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpDTD", libxml_xmlDebugDumpDTD, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpDocument", libxml_xmlDebugDumpDocument, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpDocumentHead", libxml_xmlDebugDumpDocumentHead, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpEntities", libxml_xmlDebugDumpEntities, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpNode", libxml_xmlDebugDumpNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpNodeList", libxml_xmlDebugDumpNodeList, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpOneNode", libxml_xmlDebugDumpOneNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlDebugDumpString", libxml_xmlDebugDumpString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+ { (char *)"xmlDebugMemory", libxml_xmlDebugMemory, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlDecodeEntities", libxml_xmlDecodeEntities, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlDefaultSAXHandlerInit", libxml_xmlDefaultSAXHandlerInit, METH_VARARGS, NULL },
+ { (char *)"xmlDelEncodingAlias", libxml_xmlDelEncodingAlias, METH_VARARGS, NULL },
+ { (char *)"xmlDictCleanup", libxml_xmlDictCleanup, METH_VARARGS, NULL },
+ { (char *)"xmlDocCopyNode", libxml_xmlDocCopyNode, METH_VARARGS, NULL },
+ { (char *)"xmlDocCopyNodeList", libxml_xmlDocCopyNodeList, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlDocDump", libxml_xmlDocDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlDocFormatDump", libxml_xmlDocFormatDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+ { (char *)"xmlDocGetRootElement", libxml_xmlDocGetRootElement, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+ { (char *)"xmlDocSetRootElement", libxml_xmlDocSetRootElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
+ { (char *)"xmlDumpMemory", libxml_xmlDumpMemory, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlElemDump", libxml_xmlElemDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlEncodeEntities", libxml_xmlEncodeEntities, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlEncodeEntitiesReentrant", libxml_xmlEncodeEntitiesReentrant, METH_VARARGS, NULL },
+ { (char *)"xmlEncodeSpecialChars", libxml_xmlEncodeSpecialChars, METH_VARARGS, NULL },
+ { (char *)"xmlErrorGetCode", libxml_xmlErrorGetCode, METH_VARARGS, NULL },
+ { (char *)"xmlErrorGetDomain", libxml_xmlErrorGetDomain, METH_VARARGS, NULL },
+ { (char *)"xmlErrorGetFile", libxml_xmlErrorGetFile, METH_VARARGS, NULL },
+ { (char *)"xmlErrorGetLevel", libxml_xmlErrorGetLevel, METH_VARARGS, NULL },
+ { (char *)"xmlErrorGetLine", libxml_xmlErrorGetLine, METH_VARARGS, NULL },
+ { (char *)"xmlErrorGetMessage", libxml_xmlErrorGetMessage, METH_VARARGS, NULL },
+ { (char *)"xmlFileMatch", libxml_xmlFileMatch, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlFirstElementChild", libxml_xmlFirstElementChild, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlFreeCatalog", libxml_xmlFreeCatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlFreeDoc", libxml_xmlFreeDoc, METH_VARARGS, NULL },
+ { (char *)"xmlFreeDtd", libxml_xmlFreeDtd, METH_VARARGS, NULL },
+ { (char *)"xmlFreeNode", libxml_xmlFreeNode, METH_VARARGS, NULL },
+ { (char *)"xmlFreeNodeList", libxml_xmlFreeNodeList, METH_VARARGS, NULL },
+ { (char *)"xmlFreeNs", libxml_xmlFreeNs, METH_VARARGS, NULL },
+ { (char *)"xmlFreeNsList", libxml_xmlFreeNsList, METH_VARARGS, NULL },
+ { (char *)"xmlFreeParserInputBuffer", libxml_xmlFreeParserInputBuffer, METH_VARARGS, NULL },
+ { (char *)"xmlFreeProp", libxml_xmlFreeProp, METH_VARARGS, NULL },
+ { (char *)"xmlFreePropList", libxml_xmlFreePropList, METH_VARARGS, NULL },
+ { (char *)"xmlFreeURI", libxml_xmlFreeURI, METH_VARARGS, NULL },
+ { (char *)"xmlGetCompressMode", libxml_xmlGetCompressMode, METH_VARARGS, NULL },
+ { (char *)"xmlGetDocCompressMode", libxml_xmlGetDocCompressMode, METH_VARARGS, NULL },
+ { (char *)"xmlGetDocEntity", libxml_xmlGetDocEntity, METH_VARARGS, NULL },
+ { (char *)"xmlGetDtdAttrDesc", libxml_xmlGetDtdAttrDesc, METH_VARARGS, NULL },
+ { (char *)"xmlGetDtdElementDesc", libxml_xmlGetDtdElementDesc, METH_VARARGS, NULL },
+ { (char *)"xmlGetDtdEntity", libxml_xmlGetDtdEntity, METH_VARARGS, NULL },
+ { (char *)"xmlGetDtdQAttrDesc", libxml_xmlGetDtdQAttrDesc, METH_VARARGS, NULL },
+ { (char *)"xmlGetDtdQElementDesc", libxml_xmlGetDtdQElementDesc, METH_VARARGS, NULL },
+ { (char *)"xmlGetEncodingAlias", libxml_xmlGetEncodingAlias, METH_VARARGS, NULL },
+ { (char *)"xmlGetID", libxml_xmlGetID, METH_VARARGS, NULL },
+ { (char *)"xmlGetIntSubset", libxml_xmlGetIntSubset, METH_VARARGS, NULL },
+ { (char *)"xmlGetLastChild", libxml_xmlGetLastChild, METH_VARARGS, NULL },
+ { (char *)"xmlGetLastError", libxml_xmlGetLastError, METH_VARARGS, NULL },
+ { (char *)"xmlGetLineNo", libxml_xmlGetLineNo, METH_VARARGS, NULL },
+ { (char *)"xmlGetNoNsProp", libxml_xmlGetNoNsProp, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlGetNodePath", libxml_xmlGetNodePath, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
+ { (char *)"xmlGetNsProp", libxml_xmlGetNsProp, METH_VARARGS, NULL },
+ { (char *)"xmlGetParameterEntity", libxml_xmlGetParameterEntity, METH_VARARGS, NULL },
+ { (char *)"xmlGetPredefinedEntity", libxml_xmlGetPredefinedEntity, METH_VARARGS, NULL },
+ { (char *)"xmlGetProp", libxml_xmlGetProp, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlHandleEntity", libxml_xmlHandleEntity, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlHasNsProp", libxml_xmlHasNsProp, METH_VARARGS, NULL },
+ { (char *)"xmlHasProp", libxml_xmlHasProp, METH_VARARGS, NULL },
+#if defined(LIBXML_FTP_ENABLED)
+ { (char *)"xmlIOFTPMatch", libxml_xmlIOFTPMatch, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+ { (char *)"xmlIOHTTPMatch", libxml_xmlIOHTTPMatch, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+ { (char *)"xmlInitCharEncodingHandlers", libxml_xmlInitCharEncodingHandlers, METH_VARARGS, NULL },
+ { (char *)"xmlInitGlobals", libxml_xmlInitGlobals, METH_VARARGS, NULL },
+ { (char *)"xmlInitParser", libxml_xmlInitParser, METH_VARARGS, NULL },
+ { (char *)"xmlInitParserCtxt", libxml_xmlInitParserCtxt, METH_VARARGS, NULL },
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlInitializeCatalog", libxml_xmlInitializeCatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlInitializeDict", libxml_xmlInitializeDict, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlInitializePredefinedEntities", libxml_xmlInitializePredefinedEntities, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlIsBaseChar", libxml_xmlIsBaseChar, METH_VARARGS, NULL },
+ { (char *)"xmlIsBlank", libxml_xmlIsBlank, METH_VARARGS, NULL },
+ { (char *)"xmlIsBlankNode", libxml_xmlIsBlankNode, METH_VARARGS, NULL },
+ { (char *)"xmlIsChar", libxml_xmlIsChar, METH_VARARGS, NULL },
+ { (char *)"xmlIsCombining", libxml_xmlIsCombining, METH_VARARGS, NULL },
+ { (char *)"xmlIsDigit", libxml_xmlIsDigit, METH_VARARGS, NULL },
+ { (char *)"xmlIsExtender", libxml_xmlIsExtender, METH_VARARGS, NULL },
+ { (char *)"xmlIsID", libxml_xmlIsID, METH_VARARGS, NULL },
+ { (char *)"xmlIsIdeographic", libxml_xmlIsIdeographic, METH_VARARGS, NULL },
+ { (char *)"xmlIsLetter", libxml_xmlIsLetter, METH_VARARGS, NULL },
+ { (char *)"xmlIsMixedElement", libxml_xmlIsMixedElement, METH_VARARGS, NULL },
+ { (char *)"xmlIsPubidChar", libxml_xmlIsPubidChar, METH_VARARGS, NULL },
+ { (char *)"xmlIsRef", libxml_xmlIsRef, METH_VARARGS, NULL },
+ { (char *)"xmlIsXHTML", libxml_xmlIsXHTML, METH_VARARGS, NULL },
+ { (char *)"xmlKeepBlanksDefault", libxml_xmlKeepBlanksDefault, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlLastElementChild", libxml_xmlLastElementChild, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlLineNumbersDefault", libxml_xmlLineNumbersDefault, METH_VARARGS, NULL },
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlLoadACatalog", libxml_xmlLoadACatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlLoadCatalog", libxml_xmlLoadCatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlLoadCatalogs", libxml_xmlLoadCatalogs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlLoadSGMLSuperCatalog", libxml_xmlLoadSGMLSuperCatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlLsCountNode", libxml_xmlLsCountNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+ { (char *)"xmlLsOneNode", libxml_xmlLsOneNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+ { (char *)"xmlMemoryUsed", libxml_xmlMemoryUsed, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlNamespaceParseNCName", libxml_xmlNamespaceParseNCName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlNamespaceParseNSDef", libxml_xmlNamespaceParseNSDef, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+ { (char *)"xmlNanoFTPCleanup", libxml_xmlNanoFTPCleanup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+ { (char *)"xmlNanoFTPInit", libxml_xmlNanoFTPInit, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+ { (char *)"xmlNanoFTPProxy", libxml_xmlNanoFTPProxy, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+ { (char *)"xmlNanoFTPScanProxy", libxml_xmlNanoFTPScanProxy, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+ { (char *)"xmlNanoHTTPCleanup", libxml_xmlNanoHTTPCleanup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+ { (char *)"xmlNanoHTTPInit", libxml_xmlNanoHTTPInit, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+ { (char *)"xmlNanoHTTPScanProxy", libxml_xmlNanoHTTPScanProxy, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+ { (char *)"xmlNewCDataBlock", libxml_xmlNewCDataBlock, METH_VARARGS, NULL },
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlNewCatalog", libxml_xmlNewCatalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlNewCharRef", libxml_xmlNewCharRef, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlNewChild", libxml_xmlNewChild, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+ { (char *)"xmlNewComment", libxml_xmlNewComment, METH_VARARGS, NULL },
+ { (char *)"xmlNewDoc", libxml_xmlNewDoc, METH_VARARGS, NULL },
+ { (char *)"xmlNewDocComment", libxml_xmlNewDocComment, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNewDocFragment", libxml_xmlNewDocFragment, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlNewDocNode", libxml_xmlNewDocNode, METH_VARARGS, NULL },
+ { (char *)"xmlNewDocNodeEatName", libxml_xmlNewDocNodeEatName, METH_VARARGS, NULL },
+ { (char *)"xmlNewDocPI", libxml_xmlNewDocPI, METH_VARARGS, NULL },
+ { (char *)"xmlNewDocProp", libxml_xmlNewDocProp, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNewDocRawNode", libxml_xmlNewDocRawNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlNewDocText", libxml_xmlNewDocText, METH_VARARGS, NULL },
+ { (char *)"xmlNewDocTextLen", libxml_xmlNewDocTextLen, METH_VARARGS, NULL },
+ { (char *)"xmlNewDtd", libxml_xmlNewDtd, METH_VARARGS, NULL },
+ { (char *)"xmlNewEntity", libxml_xmlNewEntity, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlNewGlobalNs", libxml_xmlNewGlobalNs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL },
+ { (char *)"xmlNewNodeEatName", libxml_xmlNewNodeEatName, METH_VARARGS, NULL },
+ { (char *)"xmlNewNs", libxml_xmlNewNs, METH_VARARGS, NULL },
+ { (char *)"xmlNewNsProp", libxml_xmlNewNsProp, METH_VARARGS, NULL },
+ { (char *)"xmlNewNsPropEatName", libxml_xmlNewNsPropEatName, METH_VARARGS, NULL },
+ { (char *)"xmlNewPI", libxml_xmlNewPI, METH_VARARGS, NULL },
+ { (char *)"xmlNewParserCtxt", libxml_xmlNewParserCtxt, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlNewProp", libxml_xmlNewProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+ { (char *)"xmlNewReference", libxml_xmlNewReference, METH_VARARGS, NULL },
+ { (char *)"xmlNewText", libxml_xmlNewText, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNewTextChild", libxml_xmlNewTextChild, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlNewTextLen", libxml_xmlNewTextLen, METH_VARARGS, NULL },
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlNewTextReader", libxml_xmlNewTextReader, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlNewTextReaderFilename", libxml_xmlNewTextReaderFilename, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlNewValidCtxt", libxml_xmlNewValidCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+ { (char *)"xmlNextChar", libxml_xmlNextChar, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNextElementSibling", libxml_xmlNextElementSibling, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlNodeAddContent", libxml_xmlNodeAddContent, METH_VARARGS, NULL },
+ { (char *)"xmlNodeAddContentLen", libxml_xmlNodeAddContentLen, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlNodeDumpOutput", libxml_xmlNodeDumpOutput, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+ { (char *)"xmlNodeGetBase", libxml_xmlNodeGetBase, METH_VARARGS, NULL },
+ { (char *)"xmlNodeGetContent", libxml_xmlNodeGetContent, METH_VARARGS, NULL },
+ { (char *)"xmlNodeGetLang", libxml_xmlNodeGetLang, METH_VARARGS, NULL },
+ { (char *)"xmlNodeGetNs", libxml_xmlNodeGetNs, METH_VARARGS, NULL },
+ { (char *)"xmlNodeGetNsDefs", libxml_xmlNodeGetNsDefs, METH_VARARGS, NULL },
+ { (char *)"xmlNodeGetSpacePreserve", libxml_xmlNodeGetSpacePreserve, METH_VARARGS, NULL },
+ { (char *)"xmlNodeIsText", libxml_xmlNodeIsText, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNodeListGetRawString", libxml_xmlNodeListGetRawString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlNodeListGetString", libxml_xmlNodeListGetString, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+ { (char *)"xmlNodeSetBase", libxml_xmlNodeSetBase, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) */
+ { (char *)"xmlNodeSetContent", libxml_xmlNodeSetContent, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNodeSetContentLen", libxml_xmlNodeSetContentLen, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNodeSetLang", libxml_xmlNodeSetLang, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNodeSetName", libxml_xmlNodeSetName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlNodeSetSpacePreserve", libxml_xmlNodeSetSpacePreserve, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlNormalizeURIPath", libxml_xmlNormalizeURIPath, METH_VARARGS, NULL },
+ { (char *)"xmlNormalizeWindowsPath", libxml_xmlNormalizeWindowsPath, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlOutputBufferGetContent", libxml_xmlOutputBufferGetContent, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlOutputBufferWrite", libxml_xmlOutputBufferWrite, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlOutputBufferWriteString", libxml_xmlOutputBufferWriteString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+ { (char *)"xmlParseAttValue", libxml_xmlParseAttValue, METH_VARARGS, NULL },
+ { (char *)"xmlParseAttributeListDecl", libxml_xmlParseAttributeListDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParseCDSect", libxml_xmlParseCDSect, METH_VARARGS, NULL },
+#if defined(LIBXML_CATALOG_ENABLED)
+ { (char *)"xmlParseCatalogFile", libxml_xmlParseCatalogFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+ { (char *)"xmlParseCharData", libxml_xmlParseCharData, METH_VARARGS, NULL },
+ { (char *)"xmlParseCharRef", libxml_xmlParseCharRef, METH_VARARGS, NULL },
+#if defined(LIBXML_PUSH_ENABLED)
+ { (char *)"xmlParseChunk", libxml_xmlParseChunk, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_PUSH_ENABLED) */
+ { (char *)"xmlParseComment", libxml_xmlParseComment, METH_VARARGS, NULL },
+ { (char *)"xmlParseContent", libxml_xmlParseContent, METH_VARARGS, NULL },
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlParseDTD", libxml_xmlParseDTD, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlParseDoc", libxml_xmlParseDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+ { (char *)"xmlParseDocTypeDecl", libxml_xmlParseDocTypeDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParseDocument", libxml_xmlParseDocument, METH_VARARGS, NULL },
+ { (char *)"xmlParseElement", libxml_xmlParseElement, METH_VARARGS, NULL },
+ { (char *)"xmlParseElementDecl", libxml_xmlParseElementDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParseEncName", libxml_xmlParseEncName, METH_VARARGS, NULL },
+ { (char *)"xmlParseEncodingDecl", libxml_xmlParseEncodingDecl, METH_VARARGS, NULL },
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlParseEndTag", libxml_xmlParseEndTag, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlParseEntity", libxml_xmlParseEntity, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+ { (char *)"xmlParseEntityDecl", libxml_xmlParseEntityDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParseEntityRef", libxml_xmlParseEntityRef, METH_VARARGS, NULL },
+ { (char *)"xmlParseExtParsedEnt", libxml_xmlParseExtParsedEnt, METH_VARARGS, NULL },
+ { (char *)"xmlParseExternalSubset", libxml_xmlParseExternalSubset, METH_VARARGS, NULL },
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlParseFile", libxml_xmlParseFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+ { (char *)"xmlParseMarkupDecl", libxml_xmlParseMarkupDecl, METH_VARARGS, NULL },
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlParseMemory", libxml_xmlParseMemory, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+ { (char *)"xmlParseMisc", libxml_xmlParseMisc, METH_VARARGS, NULL },
+ { (char *)"xmlParseName", libxml_xmlParseName, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlParseNamespace", libxml_xmlParseNamespace, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlParseNmtoken", libxml_xmlParseNmtoken, METH_VARARGS, NULL },
+ { (char *)"xmlParseNotationDecl", libxml_xmlParseNotationDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParsePEReference", libxml_xmlParsePEReference, METH_VARARGS, NULL },
+ { (char *)"xmlParsePI", libxml_xmlParsePI, METH_VARARGS, NULL },
+ { (char *)"xmlParsePITarget", libxml_xmlParsePITarget, METH_VARARGS, NULL },
+ { (char *)"xmlParsePubidLiteral", libxml_xmlParsePubidLiteral, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlParseQuotedString", libxml_xmlParseQuotedString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlParseReference", libxml_xmlParseReference, METH_VARARGS, NULL },
+ { (char *)"xmlParseSDDecl", libxml_xmlParseSDDecl, METH_VARARGS, NULL },
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlParseStartTag", libxml_xmlParseStartTag, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+ { (char *)"xmlParseSystemLiteral", libxml_xmlParseSystemLiteral, METH_VARARGS, NULL },
+ { (char *)"xmlParseTextDecl", libxml_xmlParseTextDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParseURI", libxml_xmlParseURI, METH_VARARGS, NULL },
+ { (char *)"xmlParseURIRaw", libxml_xmlParseURIRaw, METH_VARARGS, NULL },
+ { (char *)"xmlParseURIReference", libxml_xmlParseURIReference, METH_VARARGS, NULL },
+ { (char *)"xmlParseVersionInfo", libxml_xmlParseVersionInfo, METH_VARARGS, NULL },
+ { (char *)"xmlParseVersionNum", libxml_xmlParseVersionNum, METH_VARARGS, NULL },
+ { (char *)"xmlParseXMLDecl", libxml_xmlParseXMLDecl, METH_VARARGS, NULL },
+ { (char *)"xmlParserGetDirectory", libxml_xmlParserGetDirectory, METH_VARARGS, NULL },
+ { (char *)"xmlParserGetDoc", libxml_xmlParserGetDoc, METH_VARARGS, NULL },
+ { (char *)"xmlParserGetIsValid", libxml_xmlParserGetIsValid, METH_VARARGS, NULL },
+ { (char *)"xmlParserGetWellFormed", libxml_xmlParserGetWellFormed, METH_VARARGS, NULL },
+ { (char *)"xmlParserHandlePEReference", libxml_xmlParserHandlePEReference, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlParserHandleReference", libxml_xmlParserHandleReference, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+ { (char *)"xmlParserInputBufferGrow", libxml_xmlParserInputBufferGrow, METH_VARARGS, NULL },
+ { (char *)"xmlParserInputBufferPush", libxml_xmlParserInputBufferPush, METH_VARARGS, NULL },
+ { (char *)"xmlParserInputBufferRead", libxml_xmlParserInputBufferRead, METH_VARARGS, NULL },
+ { (char *)"xmlParserSetLineNumbers", libxml_xmlParserSetLineNumbers, METH_VARARGS, NULL },
+ { (char *)"xmlParserSetLoadSubset", libxml_xmlParserSetLoadSubset, METH_VARARGS, NULL },
+ { (char *)"xmlParserSetPedantic", libxml_xmlParserSetPedantic, METH_VARARGS, NULL },
+ { (char *)"xmlParserSetReplaceEntities", libxml_xmlParserSetReplaceEntities, METH_VARARGS, NULL },
+ { (char *)"xmlParserSetValidate", libxml_xmlParserSetValidate, METH_VARARGS, NULL },
+ { (char *)"xmlPathToURI", libxml_xmlPathToURI, METH_VARARGS, NULL },
+ { (char *)"xmlPedanticParserDefault", libxml_xmlPedanticParserDefault, METH_VARARGS, NULL },
+ { (char *)"xmlPopInput", libxml_xmlPopInput, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlPreviousElementSibling", libxml_xmlPreviousElementSibling, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+ { (char *)"xmlPrintURI", libxml_xmlPrintURI, METH_VARARGS, NULL },
+ { (char *)"xmlPythonCleanupParser", libxml_xmlPythonCleanupParser, METH_VARARGS, NULL },
+ { (char *)"xmlReadDoc", libxml_xmlReadDoc, METH_VARARGS, NULL },
+ { (char *)"xmlReadFd", libxml_xmlReadFd, METH_VARARGS, NULL },
+ { (char *)"xmlReadFile", libxml_xmlReadFile, METH_VARARGS, NULL },
+ { (char *)"xmlReadMemory", libxml_xmlReadMemory, METH_VARARGS, NULL },
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderForDoc", libxml_xmlReaderForDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderForFd", libxml_xmlReaderForFd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderForFile", libxml_xmlReaderForFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderForMemory", libxml_xmlReaderForMemory, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderNewDoc", libxml_xmlReaderNewDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderNewFd", libxml_xmlReaderNewFd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderNewFile", libxml_xmlReaderNewFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderNewMemory", libxml_xmlReaderNewMemory, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderNewWalker", libxml_xmlReaderNewWalker, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlReaderWalker", libxml_xmlReaderWalker, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+ { (char *)"xmlReconciliateNs", libxml_xmlReconciliateNs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlRecoverDoc", libxml_xmlRecoverDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlRecoverFile", libxml_xmlRecoverFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlRecoverMemory", libxml_xmlRecoverMemory, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlRegFreeRegexp", libxml_xmlRegFreeRegexp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlRegexpCompile", libxml_xmlRegexpCompile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlRegexpExec", libxml_xmlRegexpExec, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlRegexpIsDeterminist", libxml_xmlRegexpIsDeterminist, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlRegexpPrint", libxml_xmlRegexpPrint, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+ { (char *)"xmlRegisterDefaultInputCallbacks", libxml_xmlRegisterDefaultInputCallbacks, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlRegisterDefaultOutputCallbacks", libxml_xmlRegisterDefaultOutputCallbacks, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED)
+ { (char *)"xmlRegisterHTTPPostCallbacks", libxml_xmlRegisterHTTPPostCallbacks, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlRegisterXPathFunction", libxml_xmlRegisterXPathFunction, METH_VARARGS, NULL },
+#endif
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGCleanupTypes", libxml_xmlRelaxNGCleanupTypes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlRelaxNGDump", libxml_xmlRelaxNGDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlRelaxNGDumpTree", libxml_xmlRelaxNGDumpTree, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGFree", libxml_xmlRelaxNGFree, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGFreeParserCtxt", libxml_xmlRelaxNGFreeParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGInitTypes", libxml_xmlRelaxNGInitTypes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGNewDocParserCtxt", libxml_xmlRelaxNGNewDocParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGNewMemParserCtxt", libxml_xmlRelaxNGNewMemParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGNewParserCtxt", libxml_xmlRelaxNGNewParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGNewValidCtxt", libxml_xmlRelaxNGNewValidCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGParse", libxml_xmlRelaxNGParse, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGValidateDoc", libxml_xmlRelaxNGValidateDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGValidateFullElement", libxml_xmlRelaxNGValidateFullElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGValidatePopElement", libxml_xmlRelaxNGValidatePopElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGValidatePushCData", libxml_xmlRelaxNGValidatePushCData, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxNGValidatePushElement", libxml_xmlRelaxNGValidatePushElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlRelaxParserSetFlag", libxml_xmlRelaxParserSetFlag, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+ { (char *)"xmlRemoveID", libxml_xmlRemoveID, METH_VARARGS, NULL },
+ { (char *)"xmlRemoveProp", libxml_xmlRemoveProp, METH_VARARGS, NULL },
+ { (char *)"xmlRemoveRef", libxml_xmlRemoveRef, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+ { (char *)"xmlReplaceNode", libxml_xmlReplaceNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
+ { (char *)"xmlResetError", libxml_xmlResetError, METH_VARARGS, NULL },
+ { (char *)"xmlResetLastError", libxml_xmlResetLastError, METH_VARARGS, NULL },
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlSAXDefaultVersion", libxml_xmlSAXDefaultVersion, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+ { (char *)"xmlSAXParseFile", libxml_xmlSAXParseFile, METH_VARARGS, NULL },
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlSaveFile", libxml_xmlSaveFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlSaveFileEnc", libxml_xmlSaveFileEnc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlSaveFormatFile", libxml_xmlSaveFormatFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlSaveFormatFileEnc", libxml_xmlSaveFormatFileEnc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+ { (char *)"xmlSaveUri", libxml_xmlSaveUri, METH_VARARGS, NULL },
+#if defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlScanName", libxml_xmlScanName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaCleanupTypes", libxml_xmlSchemaCleanupTypes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaCollapseString", libxml_xmlSchemaCollapseString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlSchemaDump", libxml_xmlSchemaDump, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaFree", libxml_xmlSchemaFree, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaFreeParserCtxt", libxml_xmlSchemaFreeParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaInitTypes", libxml_xmlSchemaInitTypes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaIsValid", libxml_xmlSchemaIsValid, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaNewDocParserCtxt", libxml_xmlSchemaNewDocParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaNewMemParserCtxt", libxml_xmlSchemaNewMemParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaNewParserCtxt", libxml_xmlSchemaNewParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaNewValidCtxt", libxml_xmlSchemaNewValidCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaParse", libxml_xmlSchemaParse, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaSetValidOptions", libxml_xmlSchemaSetValidOptions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaValidCtxtGetOptions", libxml_xmlSchemaValidCtxtGetOptions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaValidCtxtGetParserCtxt", libxml_xmlSchemaValidCtxtGetParserCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaValidateDoc", libxml_xmlSchemaValidateDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaValidateFile", libxml_xmlSchemaValidateFile, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaValidateOneElement", libxml_xmlSchemaValidateOneElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaValidateSetFilename", libxml_xmlSchemaValidateSetFilename, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlSchemaWhiteSpaceReplace", libxml_xmlSchemaWhiteSpaceReplace, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+ { (char *)"xmlSearchNs", libxml_xmlSearchNs, METH_VARARGS, NULL },
+ { (char *)"xmlSearchNsByHref", libxml_xmlSearchNsByHref, METH_VARARGS, NULL },
+ { (char *)"xmlSetCompressMode", libxml_xmlSetCompressMode, METH_VARARGS, NULL },
+ { (char *)"xmlSetDocCompressMode", libxml_xmlSetDocCompressMode, METH_VARARGS, NULL },
+ { (char *)"xmlSetEntityLoader", libxml_xmlSetEntityLoader, METH_VARARGS, NULL },
+ { (char *)"xmlSetListDoc", libxml_xmlSetListDoc, METH_VARARGS, NULL },
+ { (char *)"xmlSetNs", libxml_xmlSetNs, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+ { (char *)"xmlSetNsProp", libxml_xmlSetNsProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+ { (char *)"xmlSetProp", libxml_xmlSetProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+ { (char *)"xmlSetTreeDoc", libxml_xmlSetTreeDoc, METH_VARARGS, NULL },
+#if defined(LIBXML_SAX1_ENABLED)
+ { (char *)"xmlSetupParserForBuffer", libxml_xmlSetupParserForBuffer, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+ { (char *)"xmlShellPrintNode", libxml_xmlShellPrintNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlShellPrintXPathError", libxml_xmlShellPrintXPathError, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) */
+ { (char *)"xmlSkipBlankChars", libxml_xmlSkipBlankChars, METH_VARARGS, NULL },
+ { (char *)"xmlStopParser", libxml_xmlStopParser, METH_VARARGS, NULL },
+ { (char *)"xmlStrEqual", libxml_xmlStrEqual, METH_VARARGS, NULL },
+ { (char *)"xmlStrQEqual", libxml_xmlStrQEqual, METH_VARARGS, NULL },
+ { (char *)"xmlStrcasecmp", libxml_xmlStrcasecmp, METH_VARARGS, NULL },
+ { (char *)"xmlStrcasestr", libxml_xmlStrcasestr, METH_VARARGS, NULL },
+ { (char *)"xmlStrcat", libxml_xmlStrcat, METH_VARARGS, NULL },
+ { (char *)"xmlStrchr", libxml_xmlStrchr, METH_VARARGS, NULL },
+ { (char *)"xmlStrcmp", libxml_xmlStrcmp, METH_VARARGS, NULL },
+ { (char *)"xmlStrdup", libxml_xmlStrdup, METH_VARARGS, NULL },
+ { (char *)"xmlStringDecodeEntities", libxml_xmlStringDecodeEntities, METH_VARARGS, NULL },
+ { (char *)"xmlStringGetNodeList", libxml_xmlStringGetNodeList, METH_VARARGS, NULL },
+ { (char *)"xmlStringLenDecodeEntities", libxml_xmlStringLenDecodeEntities, METH_VARARGS, NULL },
+ { (char *)"xmlStringLenGetNodeList", libxml_xmlStringLenGetNodeList, METH_VARARGS, NULL },
+ { (char *)"xmlStrlen", libxml_xmlStrlen, METH_VARARGS, NULL },
+ { (char *)"xmlStrncasecmp", libxml_xmlStrncasecmp, METH_VARARGS, NULL },
+ { (char *)"xmlStrncat", libxml_xmlStrncat, METH_VARARGS, NULL },
+ { (char *)"xmlStrncatNew", libxml_xmlStrncatNew, METH_VARARGS, NULL },
+ { (char *)"xmlStrncmp", libxml_xmlStrncmp, METH_VARARGS, NULL },
+ { (char *)"xmlStrndup", libxml_xmlStrndup, METH_VARARGS, NULL },
+ { (char *)"xmlStrstr", libxml_xmlStrstr, METH_VARARGS, NULL },
+ { (char *)"xmlStrsub", libxml_xmlStrsub, METH_VARARGS, NULL },
+ { (char *)"xmlSubstituteEntitiesDefault", libxml_xmlSubstituteEntitiesDefault, METH_VARARGS, NULL },
+ { (char *)"xmlTextConcat", libxml_xmlTextConcat, METH_VARARGS, NULL },
+ { (char *)"xmlTextMerge", libxml_xmlTextMerge, METH_VARARGS, NULL },
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderAttributeCount", libxml_xmlTextReaderAttributeCount, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderByteConsumed", libxml_xmlTextReaderByteConsumed, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderClose", libxml_xmlTextReaderClose, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstBaseUri", libxml_xmlTextReaderConstBaseUri, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstEncoding", libxml_xmlTextReaderConstEncoding, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstLocalName", libxml_xmlTextReaderConstLocalName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstName", libxml_xmlTextReaderConstName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstNamespaceUri", libxml_xmlTextReaderConstNamespaceUri, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstPrefix", libxml_xmlTextReaderConstPrefix, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstString", libxml_xmlTextReaderConstString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstValue", libxml_xmlTextReaderConstValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstXmlLang", libxml_xmlTextReaderConstXmlLang, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderConstXmlVersion", libxml_xmlTextReaderConstXmlVersion, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderCurrentDoc", libxml_xmlTextReaderCurrentDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderCurrentNode", libxml_xmlTextReaderCurrentNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderDepth", libxml_xmlTextReaderDepth, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderExpand", libxml_xmlTextReaderExpand, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetAttribute", libxml_xmlTextReaderGetAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetAttributeNo", libxml_xmlTextReaderGetAttributeNo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetAttributeNs", libxml_xmlTextReaderGetAttributeNs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetParserColumnNumber", libxml_xmlTextReaderGetParserColumnNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetParserLineNumber", libxml_xmlTextReaderGetParserLineNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetParserProp", libxml_xmlTextReaderGetParserProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderGetRemainder", libxml_xmlTextReaderGetRemainder, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderHasAttributes", libxml_xmlTextReaderHasAttributes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderHasValue", libxml_xmlTextReaderHasValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderIsDefault", libxml_xmlTextReaderIsDefault, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderIsEmptyElement", libxml_xmlTextReaderIsEmptyElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderIsNamespaceDecl", libxml_xmlTextReaderIsNamespaceDecl, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderIsValid", libxml_xmlTextReaderIsValid, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderLocatorBaseURI", libxml_xmlTextReaderLocatorBaseURI, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderLocatorLineNumber", libxml_xmlTextReaderLocatorLineNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderLookupNamespace", libxml_xmlTextReaderLookupNamespace, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderMoveToAttribute", libxml_xmlTextReaderMoveToAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderMoveToAttributeNo", libxml_xmlTextReaderMoveToAttributeNo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderMoveToAttributeNs", libxml_xmlTextReaderMoveToAttributeNs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderMoveToElement", libxml_xmlTextReaderMoveToElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderMoveToFirstAttribute", libxml_xmlTextReaderMoveToFirstAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderMoveToNextAttribute", libxml_xmlTextReaderMoveToNextAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderNext", libxml_xmlTextReaderNext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderNextSibling", libxml_xmlTextReaderNextSibling, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderNodeType", libxml_xmlTextReaderNodeType, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderNormalization", libxml_xmlTextReaderNormalization, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderPreserve", libxml_xmlTextReaderPreserve, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderQuoteChar", libxml_xmlTextReaderQuoteChar, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderRead", libxml_xmlTextReaderRead, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderReadAttributeValue", libxml_xmlTextReaderReadAttributeValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED)
+ { (char *)"xmlTextReaderReadInnerXml", libxml_xmlTextReaderReadInnerXml, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED)
+ { (char *)"xmlTextReaderReadOuterXml", libxml_xmlTextReaderReadOuterXml, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderReadState", libxml_xmlTextReaderReadState, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderReadString", libxml_xmlTextReaderReadString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlTextReaderRelaxNGSetSchema", libxml_xmlTextReaderRelaxNGSetSchema, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlTextReaderRelaxNGValidate", libxml_xmlTextReaderRelaxNGValidate, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlTextReaderRelaxNGValidateCtxt", libxml_xmlTextReaderRelaxNGValidateCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlTextReaderSchemaValidate", libxml_xmlTextReaderSchemaValidate, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlTextReaderSchemaValidateCtxt", libxml_xmlTextReaderSchemaValidateCtxt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderSetParserProp", libxml_xmlTextReaderSetParserProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlTextReaderSetSchema", libxml_xmlTextReaderSetSchema, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderSetup", libxml_xmlTextReaderSetup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+ { (char *)"xmlTextReaderStandalone", libxml_xmlTextReaderStandalone, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_READER_ENABLED) */
+ { (char *)"xmlThrDefDefaultBufferSize", libxml_xmlThrDefDefaultBufferSize, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefDoValidityCheckingDefaultValue", libxml_xmlThrDefDoValidityCheckingDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefGetWarningsDefaultValue", libxml_xmlThrDefGetWarningsDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefIndentTreeOutput", libxml_xmlThrDefIndentTreeOutput, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefKeepBlanksDefaultValue", libxml_xmlThrDefKeepBlanksDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefLineNumbersDefaultValue", libxml_xmlThrDefLineNumbersDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefLoadExtDtdDefaultValue", libxml_xmlThrDefLoadExtDtdDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefParserDebugEntities", libxml_xmlThrDefParserDebugEntities, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefPedanticParserDefaultValue", libxml_xmlThrDefPedanticParserDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefSaveNoEmptyTags", libxml_xmlThrDefSaveNoEmptyTags, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefSubstituteEntitiesDefaultValue", libxml_xmlThrDefSubstituteEntitiesDefaultValue, METH_VARARGS, NULL },
+ { (char *)"xmlThrDefTreeIndentString", libxml_xmlThrDefTreeIndentString, METH_VARARGS, NULL },
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsAegeanNumbers", libxml_xmlUCSIsAegeanNumbers, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsAlphabeticPresentationForms", libxml_xmlUCSIsAlphabeticPresentationForms, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsArabic", libxml_xmlUCSIsArabic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsArabicPresentationFormsA", libxml_xmlUCSIsArabicPresentationFormsA, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsArabicPresentationFormsB", libxml_xmlUCSIsArabicPresentationFormsB, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsArmenian", libxml_xmlUCSIsArmenian, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsArrows", libxml_xmlUCSIsArrows, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBasicLatin", libxml_xmlUCSIsBasicLatin, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBengali", libxml_xmlUCSIsBengali, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBlock", libxml_xmlUCSIsBlock, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBlockElements", libxml_xmlUCSIsBlockElements, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBopomofo", libxml_xmlUCSIsBopomofo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBopomofoExtended", libxml_xmlUCSIsBopomofoExtended, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBoxDrawing", libxml_xmlUCSIsBoxDrawing, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBraillePatterns", libxml_xmlUCSIsBraillePatterns, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsBuhid", libxml_xmlUCSIsBuhid, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsByzantineMusicalSymbols", libxml_xmlUCSIsByzantineMusicalSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKCompatibility", libxml_xmlUCSIsCJKCompatibility, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKCompatibilityForms", libxml_xmlUCSIsCJKCompatibilityForms, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKCompatibilityIdeographs", libxml_xmlUCSIsCJKCompatibilityIdeographs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKCompatibilityIdeographsSupplement", libxml_xmlUCSIsCJKCompatibilityIdeographsSupplement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKRadicalsSupplement", libxml_xmlUCSIsCJKRadicalsSupplement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKSymbolsandPunctuation", libxml_xmlUCSIsCJKSymbolsandPunctuation, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKUnifiedIdeographs", libxml_xmlUCSIsCJKUnifiedIdeographs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKUnifiedIdeographsExtensionA", libxml_xmlUCSIsCJKUnifiedIdeographsExtensionA, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCJKUnifiedIdeographsExtensionB", libxml_xmlUCSIsCJKUnifiedIdeographsExtensionB, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCat", libxml_xmlUCSIsCat, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatC", libxml_xmlUCSIsCatC, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatCc", libxml_xmlUCSIsCatCc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatCf", libxml_xmlUCSIsCatCf, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatCo", libxml_xmlUCSIsCatCo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatCs", libxml_xmlUCSIsCatCs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatL", libxml_xmlUCSIsCatL, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatLl", libxml_xmlUCSIsCatLl, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatLm", libxml_xmlUCSIsCatLm, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatLo", libxml_xmlUCSIsCatLo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatLt", libxml_xmlUCSIsCatLt, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatLu", libxml_xmlUCSIsCatLu, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatM", libxml_xmlUCSIsCatM, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatMc", libxml_xmlUCSIsCatMc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatMe", libxml_xmlUCSIsCatMe, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatMn", libxml_xmlUCSIsCatMn, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatN", libxml_xmlUCSIsCatN, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatNd", libxml_xmlUCSIsCatNd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatNl", libxml_xmlUCSIsCatNl, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatNo", libxml_xmlUCSIsCatNo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatP", libxml_xmlUCSIsCatP, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPc", libxml_xmlUCSIsCatPc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPd", libxml_xmlUCSIsCatPd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPe", libxml_xmlUCSIsCatPe, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPf", libxml_xmlUCSIsCatPf, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPi", libxml_xmlUCSIsCatPi, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPo", libxml_xmlUCSIsCatPo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatPs", libxml_xmlUCSIsCatPs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatS", libxml_xmlUCSIsCatS, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatSc", libxml_xmlUCSIsCatSc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatSk", libxml_xmlUCSIsCatSk, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatSm", libxml_xmlUCSIsCatSm, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatSo", libxml_xmlUCSIsCatSo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatZ", libxml_xmlUCSIsCatZ, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatZl", libxml_xmlUCSIsCatZl, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatZp", libxml_xmlUCSIsCatZp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCatZs", libxml_xmlUCSIsCatZs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCherokee", libxml_xmlUCSIsCherokee, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCombiningDiacriticalMarks", libxml_xmlUCSIsCombiningDiacriticalMarks, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCombiningDiacriticalMarksforSymbols", libxml_xmlUCSIsCombiningDiacriticalMarksforSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCombiningHalfMarks", libxml_xmlUCSIsCombiningHalfMarks, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCombiningMarksforSymbols", libxml_xmlUCSIsCombiningMarksforSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsControlPictures", libxml_xmlUCSIsControlPictures, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCurrencySymbols", libxml_xmlUCSIsCurrencySymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCypriotSyllabary", libxml_xmlUCSIsCypriotSyllabary, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCyrillic", libxml_xmlUCSIsCyrillic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsCyrillicSupplement", libxml_xmlUCSIsCyrillicSupplement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsDeseret", libxml_xmlUCSIsDeseret, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsDevanagari", libxml_xmlUCSIsDevanagari, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsDingbats", libxml_xmlUCSIsDingbats, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsEnclosedAlphanumerics", libxml_xmlUCSIsEnclosedAlphanumerics, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsEnclosedCJKLettersandMonths", libxml_xmlUCSIsEnclosedCJKLettersandMonths, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsEthiopic", libxml_xmlUCSIsEthiopic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGeneralPunctuation", libxml_xmlUCSIsGeneralPunctuation, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGeometricShapes", libxml_xmlUCSIsGeometricShapes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGeorgian", libxml_xmlUCSIsGeorgian, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGothic", libxml_xmlUCSIsGothic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGreek", libxml_xmlUCSIsGreek, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGreekExtended", libxml_xmlUCSIsGreekExtended, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGreekandCoptic", libxml_xmlUCSIsGreekandCoptic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGujarati", libxml_xmlUCSIsGujarati, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsGurmukhi", libxml_xmlUCSIsGurmukhi, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHalfwidthandFullwidthForms", libxml_xmlUCSIsHalfwidthandFullwidthForms, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHangulCompatibilityJamo", libxml_xmlUCSIsHangulCompatibilityJamo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHangulJamo", libxml_xmlUCSIsHangulJamo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHangulSyllables", libxml_xmlUCSIsHangulSyllables, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHanunoo", libxml_xmlUCSIsHanunoo, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHebrew", libxml_xmlUCSIsHebrew, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHighPrivateUseSurrogates", libxml_xmlUCSIsHighPrivateUseSurrogates, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHighSurrogates", libxml_xmlUCSIsHighSurrogates, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsHiragana", libxml_xmlUCSIsHiragana, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsIPAExtensions", libxml_xmlUCSIsIPAExtensions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsIdeographicDescriptionCharacters", libxml_xmlUCSIsIdeographicDescriptionCharacters, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKanbun", libxml_xmlUCSIsKanbun, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKangxiRadicals", libxml_xmlUCSIsKangxiRadicals, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKannada", libxml_xmlUCSIsKannada, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKatakana", libxml_xmlUCSIsKatakana, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKatakanaPhoneticExtensions", libxml_xmlUCSIsKatakanaPhoneticExtensions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKhmer", libxml_xmlUCSIsKhmer, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsKhmerSymbols", libxml_xmlUCSIsKhmerSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLao", libxml_xmlUCSIsLao, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLatin1Supplement", libxml_xmlUCSIsLatin1Supplement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLatinExtendedA", libxml_xmlUCSIsLatinExtendedA, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLatinExtendedAdditional", libxml_xmlUCSIsLatinExtendedAdditional, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLatinExtendedB", libxml_xmlUCSIsLatinExtendedB, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLetterlikeSymbols", libxml_xmlUCSIsLetterlikeSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLimbu", libxml_xmlUCSIsLimbu, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLinearBIdeograms", libxml_xmlUCSIsLinearBIdeograms, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLinearBSyllabary", libxml_xmlUCSIsLinearBSyllabary, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsLowSurrogates", libxml_xmlUCSIsLowSurrogates, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMalayalam", libxml_xmlUCSIsMalayalam, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMathematicalAlphanumericSymbols", libxml_xmlUCSIsMathematicalAlphanumericSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMathematicalOperators", libxml_xmlUCSIsMathematicalOperators, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMiscellaneousMathematicalSymbolsA", libxml_xmlUCSIsMiscellaneousMathematicalSymbolsA, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMiscellaneousMathematicalSymbolsB", libxml_xmlUCSIsMiscellaneousMathematicalSymbolsB, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMiscellaneousSymbols", libxml_xmlUCSIsMiscellaneousSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMiscellaneousSymbolsandArrows", libxml_xmlUCSIsMiscellaneousSymbolsandArrows, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMiscellaneousTechnical", libxml_xmlUCSIsMiscellaneousTechnical, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMongolian", libxml_xmlUCSIsMongolian, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMusicalSymbols", libxml_xmlUCSIsMusicalSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsMyanmar", libxml_xmlUCSIsMyanmar, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsNumberForms", libxml_xmlUCSIsNumberForms, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsOgham", libxml_xmlUCSIsOgham, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsOldItalic", libxml_xmlUCSIsOldItalic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsOpticalCharacterRecognition", libxml_xmlUCSIsOpticalCharacterRecognition, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsOriya", libxml_xmlUCSIsOriya, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsOsmanya", libxml_xmlUCSIsOsmanya, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsPhoneticExtensions", libxml_xmlUCSIsPhoneticExtensions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsPrivateUse", libxml_xmlUCSIsPrivateUse, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsPrivateUseArea", libxml_xmlUCSIsPrivateUseArea, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsRunic", libxml_xmlUCSIsRunic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsShavian", libxml_xmlUCSIsShavian, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSinhala", libxml_xmlUCSIsSinhala, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSmallFormVariants", libxml_xmlUCSIsSmallFormVariants, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSpacingModifierLetters", libxml_xmlUCSIsSpacingModifierLetters, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSpecials", libxml_xmlUCSIsSpecials, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSuperscriptsandSubscripts", libxml_xmlUCSIsSuperscriptsandSubscripts, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSupplementalArrowsA", libxml_xmlUCSIsSupplementalArrowsA, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSupplementalArrowsB", libxml_xmlUCSIsSupplementalArrowsB, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSupplementalMathematicalOperators", libxml_xmlUCSIsSupplementalMathematicalOperators, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSupplementaryPrivateUseAreaA", libxml_xmlUCSIsSupplementaryPrivateUseAreaA, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSupplementaryPrivateUseAreaB", libxml_xmlUCSIsSupplementaryPrivateUseAreaB, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsSyriac", libxml_xmlUCSIsSyriac, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTagalog", libxml_xmlUCSIsTagalog, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTagbanwa", libxml_xmlUCSIsTagbanwa, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTags", libxml_xmlUCSIsTags, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTaiLe", libxml_xmlUCSIsTaiLe, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTaiXuanJingSymbols", libxml_xmlUCSIsTaiXuanJingSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTamil", libxml_xmlUCSIsTamil, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTelugu", libxml_xmlUCSIsTelugu, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsThaana", libxml_xmlUCSIsThaana, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsThai", libxml_xmlUCSIsThai, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsTibetan", libxml_xmlUCSIsTibetan, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsUgaritic", libxml_xmlUCSIsUgaritic, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsUnifiedCanadianAboriginalSyllabics", libxml_xmlUCSIsUnifiedCanadianAboriginalSyllabics, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsVariationSelectors", libxml_xmlUCSIsVariationSelectors, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsVariationSelectorsSupplement", libxml_xmlUCSIsVariationSelectorsSupplement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsYiRadicals", libxml_xmlUCSIsYiRadicals, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsYiSyllables", libxml_xmlUCSIsYiSyllables, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+ { (char *)"xmlUCSIsYijingHexagramSymbols", libxml_xmlUCSIsYijingHexagramSymbols, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+ { (char *)"xmlURIEscape", libxml_xmlURIEscape, METH_VARARGS, NULL },
+ { (char *)"xmlURIEscapeStr", libxml_xmlURIEscapeStr, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetAuthority", libxml_xmlURIGetAuthority, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetFragment", libxml_xmlURIGetFragment, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetOpaque", libxml_xmlURIGetOpaque, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetPath", libxml_xmlURIGetPath, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetPort", libxml_xmlURIGetPort, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetQuery", libxml_xmlURIGetQuery, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetQueryRaw", libxml_xmlURIGetQueryRaw, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetScheme", libxml_xmlURIGetScheme, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetServer", libxml_xmlURIGetServer, METH_VARARGS, NULL },
+ { (char *)"xmlURIGetUser", libxml_xmlURIGetUser, METH_VARARGS, NULL },
+ { (char *)"xmlURISetAuthority", libxml_xmlURISetAuthority, METH_VARARGS, NULL },
+ { (char *)"xmlURISetFragment", libxml_xmlURISetFragment, METH_VARARGS, NULL },
+ { (char *)"xmlURISetOpaque", libxml_xmlURISetOpaque, METH_VARARGS, NULL },
+ { (char *)"xmlURISetPath", libxml_xmlURISetPath, METH_VARARGS, NULL },
+ { (char *)"xmlURISetPort", libxml_xmlURISetPort, METH_VARARGS, NULL },
+ { (char *)"xmlURISetQuery", libxml_xmlURISetQuery, METH_VARARGS, NULL },
+ { (char *)"xmlURISetQueryRaw", libxml_xmlURISetQueryRaw, METH_VARARGS, NULL },
+ { (char *)"xmlURISetScheme", libxml_xmlURISetScheme, METH_VARARGS, NULL },
+ { (char *)"xmlURISetServer", libxml_xmlURISetServer, METH_VARARGS, NULL },
+ { (char *)"xmlURISetUser", libxml_xmlURISetUser, METH_VARARGS, NULL },
+ { (char *)"xmlURIUnescapeString", libxml_xmlURIUnescapeString, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Charcmp", libxml_xmlUTF8Charcmp, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Size", libxml_xmlUTF8Size, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Strlen", libxml_xmlUTF8Strlen, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Strloc", libxml_xmlUTF8Strloc, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Strndup", libxml_xmlUTF8Strndup, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Strpos", libxml_xmlUTF8Strpos, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Strsize", libxml_xmlUTF8Strsize, METH_VARARGS, NULL },
+ { (char *)"xmlUTF8Strsub", libxml_xmlUTF8Strsub, METH_VARARGS, NULL },
+ { (char *)"xmlUnlinkNode", libxml_xmlUnlinkNode, METH_VARARGS, NULL },
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlUnsetNsProp", libxml_xmlUnsetNsProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlUnsetProp", libxml_xmlUnsetProp, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidCtxtNormalizeAttributeValue", libxml_xmlValidCtxtNormalizeAttributeValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidNormalizeAttributeValue", libxml_xmlValidNormalizeAttributeValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateDocument", libxml_xmlValidateDocument, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateDocumentFinal", libxml_xmlValidateDocumentFinal, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateDtd", libxml_xmlValidateDtd, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateDtdFinal", libxml_xmlValidateDtdFinal, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateElement", libxml_xmlValidateElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
+ { (char *)"xmlValidateNCName", libxml_xmlValidateNCName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlValidateNMToken", libxml_xmlValidateNMToken, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlValidateName", libxml_xmlValidateName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateNameValue", libxml_xmlValidateNameValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateNamesValue", libxml_xmlValidateNamesValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateNmtokenValue", libxml_xmlValidateNmtokenValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateNmtokensValue", libxml_xmlValidateNmtokensValue, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlValidateNotationUse", libxml_xmlValidateNotationUse, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateOneAttribute", libxml_xmlValidateOneAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateOneElement", libxml_xmlValidateOneElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateOneNamespace", libxml_xmlValidateOneNamespace, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlValidatePopElement", libxml_xmlValidatePopElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlValidatePushCData", libxml_xmlValidatePushCData, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+ { (char *)"xmlValidatePushElement", libxml_xmlValidatePushElement, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlValidateQName", libxml_xmlValidateQName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+ { (char *)"xmlValidateRoot", libxml_xmlValidateRoot, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+ { (char *)"xmlXIncludeProcess", libxml_xmlXIncludeProcess, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+ { (char *)"xmlXIncludeProcessFlags", libxml_xmlXIncludeProcessFlags, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+ { (char *)"xmlXIncludeProcessTree", libxml_xmlXIncludeProcessTree, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+ { (char *)"xmlXIncludeProcessTreeFlags", libxml_xmlXIncludeProcessTreeFlags, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathAddValues", libxml_xmlXPathAddValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathBooleanFunction", libxml_xmlXPathBooleanFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastBooleanToNumber", libxml_xmlXPathCastBooleanToNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastBooleanToString", libxml_xmlXPathCastBooleanToString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastNodeToNumber", libxml_xmlXPathCastNodeToNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastNodeToString", libxml_xmlXPathCastNodeToString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastNumberToBoolean", libxml_xmlXPathCastNumberToBoolean, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastNumberToString", libxml_xmlXPathCastNumberToString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastStringToBoolean", libxml_xmlXPathCastStringToBoolean, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCastStringToNumber", libxml_xmlXPathCastStringToNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCeilingFunction", libxml_xmlXPathCeilingFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCmpNodes", libxml_xmlXPathCmpNodes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCompareValues", libxml_xmlXPathCompareValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathConcatFunction", libxml_xmlXPathConcatFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathContainsFunction", libxml_xmlXPathContainsFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathContextSetCache", libxml_xmlXPathContextSetCache, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathCountFunction", libxml_xmlXPathCountFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathDivValues", libxml_xmlXPathDivValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathEqualValues", libxml_xmlXPathEqualValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathErr", libxml_xmlXPathErr, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathEval", libxml_xmlXPathEval, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathEvalExpr", libxml_xmlXPathEvalExpr, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathEvalExpression", libxml_xmlXPathEvalExpression, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathFalseFunction", libxml_xmlXPathFalseFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathFloorFunction", libxml_xmlXPathFloorFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathFreeContext", libxml_xmlXPathFreeContext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathFreeParserContext", libxml_xmlXPathFreeParserContext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathGetContextDoc", libxml_xmlXPathGetContextDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathGetContextNode", libxml_xmlXPathGetContextNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathGetContextPosition", libxml_xmlXPathGetContextPosition, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathGetContextSize", libxml_xmlXPathGetContextSize, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathGetFunction", libxml_xmlXPathGetFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathGetFunctionURI", libxml_xmlXPathGetFunctionURI, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathIdFunction", libxml_xmlXPathIdFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlXPathInit", libxml_xmlXPathInit, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlXPathIsInf", libxml_xmlXPathIsInf, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+ { (char *)"xmlXPathIsNaN", libxml_xmlXPathIsNaN, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathIsNodeType", libxml_xmlXPathIsNodeType, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathLangFunction", libxml_xmlXPathLangFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathLastFunction", libxml_xmlXPathLastFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathLocalNameFunction", libxml_xmlXPathLocalNameFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathModValues", libxml_xmlXPathModValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathMultValues", libxml_xmlXPathMultValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNamespaceURIFunction", libxml_xmlXPathNamespaceURIFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewBoolean", libxml_xmlXPathNewBoolean, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewCString", libxml_xmlXPathNewCString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewContext", libxml_xmlXPathNewContext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewFloat", libxml_xmlXPathNewFloat, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewNodeSet", libxml_xmlXPathNewNodeSet, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewParserContext", libxml_xmlXPathNewParserContext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewString", libxml_xmlXPathNewString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNewValueTree", libxml_xmlXPathNewValueTree, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextAncestor", libxml_xmlXPathNextAncestor, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextAncestorOrSelf", libxml_xmlXPathNextAncestorOrSelf, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextAttribute", libxml_xmlXPathNextAttribute, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextChild", libxml_xmlXPathNextChild, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextDescendant", libxml_xmlXPathNextDescendant, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextDescendantOrSelf", libxml_xmlXPathNextDescendantOrSelf, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextFollowing", libxml_xmlXPathNextFollowing, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextFollowingSibling", libxml_xmlXPathNextFollowingSibling, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextNamespace", libxml_xmlXPathNextNamespace, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextParent", libxml_xmlXPathNextParent, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextPreceding", libxml_xmlXPathNextPreceding, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextPrecedingSibling", libxml_xmlXPathNextPrecedingSibling, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNextSelf", libxml_xmlXPathNextSelf, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNodeEval", libxml_xmlXPathNodeEval, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNodeSetFreeNs", libxml_xmlXPathNodeSetFreeNs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNormalizeFunction", libxml_xmlXPathNormalizeFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNotEqualValues", libxml_xmlXPathNotEqualValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNotFunction", libxml_xmlXPathNotFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNsLookup", libxml_xmlXPathNsLookup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathNumberFunction", libxml_xmlXPathNumberFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathOrderDocElems", libxml_xmlXPathOrderDocElems, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathParseNCName", libxml_xmlXPathParseNCName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathParseName", libxml_xmlXPathParseName, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathParserGetContext", libxml_xmlXPathParserGetContext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathPopBoolean", libxml_xmlXPathPopBoolean, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathPopNumber", libxml_xmlXPathPopNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathPopString", libxml_xmlXPathPopString, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathPositionFunction", libxml_xmlXPathPositionFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRegisterAllFunctions", libxml_xmlXPathRegisterAllFunctions, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRegisterNs", libxml_xmlXPathRegisterNs, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRegisterVariable", libxml_xmlXPathRegisterVariable, METH_VARARGS, NULL },
+#endif
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRegisteredFuncsCleanup", libxml_xmlXPathRegisteredFuncsCleanup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRegisteredNsCleanup", libxml_xmlXPathRegisteredNsCleanup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRegisteredVariablesCleanup", libxml_xmlXPathRegisteredVariablesCleanup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRoot", libxml_xmlXPathRoot, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathRoundFunction", libxml_xmlXPathRoundFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSetContextDoc", libxml_xmlXPathSetContextDoc, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSetContextNode", libxml_xmlXPathSetContextNode, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathStartsWithFunction", libxml_xmlXPathStartsWithFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathStringEvalNumber", libxml_xmlXPathStringEvalNumber, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathStringFunction", libxml_xmlXPathStringFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathStringLengthFunction", libxml_xmlXPathStringLengthFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSubValues", libxml_xmlXPathSubValues, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSubstringAfterFunction", libxml_xmlXPathSubstringAfterFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSubstringBeforeFunction", libxml_xmlXPathSubstringBeforeFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSubstringFunction", libxml_xmlXPathSubstringFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathSumFunction", libxml_xmlXPathSumFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathTranslateFunction", libxml_xmlXPathTranslateFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathTrueFunction", libxml_xmlXPathTrueFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathValueFlipSign", libxml_xmlXPathValueFlipSign, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathVariableLookup", libxml_xmlXPathVariableLookup, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPathVariableLookupNS", libxml_xmlXPathVariableLookupNS, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+ { (char *)"xmlXPatherror", libxml_xmlXPatherror, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrEval", libxml_xmlXPtrEval, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrEvalRangePredicate", libxml_xmlXPtrEvalRangePredicate, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrNewCollapsedRange", libxml_xmlXPtrNewCollapsedRange, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrNewContext", libxml_xmlXPtrNewContext, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrNewLocationSetNodes", libxml_xmlXPtrNewLocationSetNodes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrNewRange", libxml_xmlXPtrNewRange, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrNewRangeNodes", libxml_xmlXPtrNewRangeNodes, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+ { (char *)"xmlXPtrRangeToFunction", libxml_xmlXPtrRangeToFunction, METH_VARARGS, NULL },
+#endif /* defined(LIBXML_XPTR_ENABLED) */
diff --git a/python/libxml2-py.c b/python/libxml2-py.c
new file mode 100644
index 0000000..705c171
--- /dev/null
+++ b/python/libxml2-py.c
@@ -0,0 +1,14789 @@
+/* Generated */
+
+#include <Python.h>
+#include <libxml/xmlversion.h>
+#include <libxml/tree.h>
+#include <libxml/xmlschemastypes.h>
+#include "libxml_wrap.h"
+#include "libxml2-py.h"
+
+#if defined(LIBXML_DOCB_ENABLED)
+PyObject *
+libxml_docbDefaultSAXHandlerInit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ docbDefaultSAXHandlerInit();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DOCB_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlAutoCloseTag(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ htmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OzO:htmlAutoCloseTag", &pyobj_doc, &name, &pyobj_elem))
+ return(NULL);
+ doc = (htmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (htmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = htmlAutoCloseTag(doc, name, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCreateFileParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlParserCtxtPtr c_retval;
+ char * filename;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:htmlCreateFileParserCtxt", &filename, &encoding))
+ return(NULL);
+
+ c_retval = htmlCreateFileParserCtxt(filename, encoding);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCreateMemoryParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlParserCtxtPtr c_retval;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+
+ if (!PyArg_ParseTuple(args, (char *)"s#i:htmlCreateMemoryParserCtxt", &buffer, &py_buffsize0, &size))
+ return(NULL);
+
+ c_retval = htmlCreateMemoryParserCtxt(buffer, size);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+#endif
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCtxtReadDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * cur;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzzi:htmlCtxtReadDoc", &pyobj_ctxt, &cur, &URL, &encoding, &options))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlCtxtReadDoc(ctxt, cur, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCtxtReadFd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int fd;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oizzi:htmlCtxtReadFd", &pyobj_ctxt, &fd, &URL, &encoding, &options))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlCtxtReadFd(ctxt, fd, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCtxtReadFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * filename;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzi:htmlCtxtReadFile", &pyobj_ctxt, &filename, &encoding, &options))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlCtxtReadFile(ctxt, filename, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCtxtReadMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Os#izzi:htmlCtxtReadMemory", &pyobj_ctxt, &buffer, &py_buffsize0, &size, &URL, &encoding, &options))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlCtxtReadMemory(ctxt, buffer, size, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCtxtReset(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:htmlCtxtReset", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ htmlCtxtReset(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlCtxtUseOptions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:htmlCtxtUseOptions", &pyobj_ctxt, &options))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlCtxtUseOptions(ctxt, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlDefaultSAXHandlerInit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ htmlDefaultSAXHandlerInit();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlDocContentDumpFormatOutput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlOutputBufferPtr buf;
+ PyObject *pyobj_buf;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzi:htmlDocContentDumpFormatOutput", &pyobj_buf, &pyobj_cur, &encoding, &format))
+ return(NULL);
+ buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ htmlDocContentDumpFormatOutput(buf, cur, encoding, format);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlDocContentDumpOutput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlOutputBufferPtr buf;
+ PyObject *pyobj_buf;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOz:htmlDocContentDumpOutput", &pyobj_buf, &pyobj_cur, &encoding))
+ return(NULL);
+ buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ htmlDocContentDumpOutput(buf, cur, encoding);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlDocDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ FILE * f;
+ PyObject *pyobj_f;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:htmlDocDump", &pyobj_f, &pyobj_cur))
+ return(NULL);
+ f = (FILE *) PyFile_Get(pyobj_f);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = htmlDocDump(f, cur);
+ PyFile_Release(f);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlFreeParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:htmlFreeParserCtxt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ htmlFreeParserCtxt(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlGetMetaEncoding(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ htmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:htmlGetMetaEncoding", &pyobj_doc))
+ return(NULL);
+ doc = (htmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = htmlGetMetaEncoding(doc);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlHandleOmittedElem(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:htmlHandleOmittedElem", &val))
+ return(NULL);
+
+ c_retval = htmlHandleOmittedElem(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlInitAutoClose(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ htmlInitAutoClose();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlIsAutoClosed(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlDocPtr doc;
+ PyObject *pyobj_doc;
+ htmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:htmlIsAutoClosed", &pyobj_doc, &pyobj_elem))
+ return(NULL);
+ doc = (htmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (htmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = htmlIsAutoClosed(doc, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlIsBooleanAttr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:htmlIsBooleanAttr", &name))
+ return(NULL);
+
+ c_retval = htmlIsBooleanAttr(name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlIsScriptAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:htmlIsScriptAttribute", &name))
+ return(NULL);
+
+ c_retval = htmlIsScriptAttribute(name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlNewDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ xmlChar * URI;
+ xmlChar * ExternalID;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:htmlNewDoc", &URI, &ExternalID))
+ return(NULL);
+
+ c_retval = htmlNewDoc(URI, ExternalID);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlNewDocNoDtD(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ xmlChar * URI;
+ xmlChar * ExternalID;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:htmlNewDocNoDtD", &URI, &ExternalID))
+ return(NULL);
+
+ c_retval = htmlNewDocNoDtD(URI, ExternalID);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlNewParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ htmlParserCtxtPtr c_retval;
+
+ c_retval = htmlNewParserCtxt();
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlNodeDumpFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * out;
+ PyObject *pyobj_out;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:htmlNodeDumpFile", &pyobj_out, &pyobj_doc, &pyobj_cur))
+ return(NULL);
+ out = (FILE *) PyFile_Get(pyobj_out);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ htmlNodeDumpFile(out, doc, cur);
+ PyFile_Release(out);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlNodeDumpFileFormat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ FILE * out;
+ PyObject *pyobj_out;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOzi:htmlNodeDumpFileFormat", &pyobj_out, &pyobj_doc, &pyobj_cur, &encoding, &format))
+ return(NULL);
+ out = (FILE *) PyFile_Get(pyobj_out);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = htmlNodeDumpFileFormat(out, doc, cur, encoding, format);
+ PyFile_Release(out);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlNodeDumpFormatOutput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlOutputBufferPtr buf;
+ PyObject *pyobj_buf;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOzi:htmlNodeDumpFormatOutput", &pyobj_buf, &pyobj_doc, &pyobj_cur, &encoding, &format))
+ return(NULL);
+ buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlNodeDumpOutput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlOutputBufferPtr buf;
+ PyObject *pyobj_buf;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOz:htmlNodeDumpOutput", &pyobj_buf, &pyobj_doc, &pyobj_cur, &encoding))
+ return(NULL);
+ buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ htmlNodeDumpOutput(buf, doc, cur, encoding);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlParseCharRef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:htmlParseCharRef", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlParseCharRef(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
+PyObject *
+libxml_htmlParseChunk(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * chunk;
+ int py_buffsize0;
+ int size;
+ int terminate;
+
+ if (!PyArg_ParseTuple(args, (char *)"Os#ii:htmlParseChunk", &pyobj_ctxt, &chunk, &py_buffsize0, &size, &terminate))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlParseChunk(ctxt, chunk, size, terminate);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlParseDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ xmlChar * cur;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:htmlParseDoc", &cur, &encoding))
+ return(NULL);
+
+ c_retval = htmlParseDoc(cur, encoding);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlParseDocument(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:htmlParseDocument", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = htmlParseDocument(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlParseElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ htmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:htmlParseElement", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (htmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ htmlParseElement(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlParseFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ char * filename;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:htmlParseFile", &filename, &encoding))
+ return(NULL);
+
+ c_retval = htmlParseFile(filename, encoding);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlReadDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ xmlChar * cur;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzzi:htmlReadDoc", &cur, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = htmlReadDoc(cur, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlReadFd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ int fd;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"izzi:htmlReadFd", &fd, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = htmlReadFd(fd, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlReadFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ char * filename;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:htmlReadFile", &filename, &encoding, &options))
+ return(NULL);
+
+ c_retval = htmlReadFile(filename, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlReadMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ htmlDocPtr c_retval;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"s#izzi:htmlReadMemory", &buffer, &py_buffsize0, &size, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = htmlReadMemory(buffer, size, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+#endif
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlSaveFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"zO:htmlSaveFile", &filename, &pyobj_cur))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = htmlSaveFile(filename, cur);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlSaveFileEnc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"zOz:htmlSaveFileEnc", &filename, &pyobj_cur, &encoding))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = htmlSaveFileEnc(filename, cur, encoding);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_htmlSaveFileFormat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"zOzi:htmlSaveFileFormat", &filename, &pyobj_cur, &encoding, &format))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = htmlSaveFileFormat(filename, cur, encoding, format);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_htmlSetMetaEncoding(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ htmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:htmlSetMetaEncoding", &pyobj_doc, &encoding))
+ return(NULL);
+ doc = (htmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = htmlSetMetaEncoding(doc, encoding);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTML_ENABLED) */
+PyObject *
+libxml_namePop(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:namePop", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = namePop(ctxt);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_namePush(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:namePush", &pyobj_ctxt, &value))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = namePush(ctxt, value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_nodePop(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:nodePop", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = nodePop(ctxt);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_nodePush(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr value;
+ PyObject *pyobj_value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:nodePush", &pyobj_ctxt, &pyobj_value))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+ value = (xmlNodePtr) PyxmlNode_Get(pyobj_value);
+
+ c_retval = nodePush(ctxt, value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_valuePop(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:valuePop", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = valuePop(ctxt);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlACatalogAdd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ xmlChar * type;
+ xmlChar * orig;
+ xmlChar * replace;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzz:xmlACatalogAdd", &pyobj_catal, &type, &orig, &replace))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlACatalogAdd(catal, type, orig, replace);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlACatalogDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ FILE * out;
+ PyObject *pyobj_out;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlACatalogDump", &pyobj_catal, &pyobj_out))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+ out = (FILE *) PyFile_Get(pyobj_out);
+
+ xmlACatalogDump(catal, out);
+ PyFile_Release(out);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlACatalogRemove(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlACatalogRemove", &pyobj_catal, &value))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlACatalogRemove(catal, value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlACatalogResolve(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ xmlChar * pubID;
+ xmlChar * sysID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlACatalogResolve", &pyobj_catal, &pubID, &sysID))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlACatalogResolve(catal, pubID, sysID);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlACatalogResolvePublic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ xmlChar * pubID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlACatalogResolvePublic", &pyobj_catal, &pubID))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlACatalogResolvePublic(catal, pubID);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlACatalogResolveSystem(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ xmlChar * sysID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlACatalogResolveSystem", &pyobj_catal, &sysID))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlACatalogResolveSystem(catal, sysID);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlACatalogResolveURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+ xmlChar * URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlACatalogResolveURI", &pyobj_catal, &URI))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlACatalogResolveURI(catal, URI);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlAddChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr parent;
+ PyObject *pyobj_parent;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlAddChild", &pyobj_parent, &pyobj_cur))
+ return(NULL);
+ parent = (xmlNodePtr) PyxmlNode_Get(pyobj_parent);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlAddChild(parent, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlAddChildList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr parent;
+ PyObject *pyobj_parent;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlAddChildList", &pyobj_parent, &pyobj_cur))
+ return(NULL);
+ parent = (xmlNodePtr) PyxmlNode_Get(pyobj_parent);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlAddChildList(parent, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlAddDocEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ int type;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozizzz:xmlAddDocEntity", &pyobj_doc, &name, &type, &ExternalID, &SystemID, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlAddDocEntity(doc, name, type, ExternalID, SystemID, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlAddDtdEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ int type;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozizzz:xmlAddDtdEntity", &pyobj_doc, &name, &type, &ExternalID, &SystemID, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlAddDtdEntity(doc, name, type, ExternalID, SystemID, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlAddEncodingAlias(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * name;
+ char * alias;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlAddEncodingAlias", &name, &alias))
+ return(NULL);
+
+ c_retval = xmlAddEncodingAlias(name, alias);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlAddNextSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlAddNextSibling", &pyobj_cur, &pyobj_elem))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlAddNextSibling(cur, elem);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+PyObject *
+libxml_xmlAddPrevSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlAddPrevSibling", &pyobj_cur, &pyobj_elem))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlAddPrevSibling(cur, elem);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) */
+PyObject *
+libxml_xmlAddSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlAddSibling", &pyobj_cur, &pyobj_elem))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlAddSibling(cur, elem);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlBoolToText(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ int boolval;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlBoolToText", &boolval))
+ return(NULL);
+
+ c_retval = xmlBoolToText(boolval);
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+PyObject *
+libxml_xmlBuildQName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * ncname;
+ xmlChar * prefix;
+ xmlChar * memory;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzzi:xmlBuildQName", &ncname, &prefix, &memory, &len))
+ return(NULL);
+
+ c_retval = xmlBuildQName(ncname, prefix, memory, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlBuildRelativeURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * URI;
+ xmlChar * base;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlBuildRelativeURI", &URI, &base))
+ return(NULL);
+
+ c_retval = xmlBuildRelativeURI(URI, base);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlBuildURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * URI;
+ xmlChar * base;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlBuildURI", &URI, &base))
+ return(NULL);
+
+ c_retval = xmlBuildURI(URI, base);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlByteConsumed(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ long c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlByteConsumed", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlByteConsumed(ctxt);
+ py_retval = libxml_longWrap((long) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCanonicPath(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * path;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCanonicPath", &path))
+ return(NULL);
+
+ c_retval = xmlCanonicPath(path);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogAdd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * type;
+ xmlChar * orig;
+ xmlChar * replace;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzz:xmlCatalogAdd", &type, &orig, &replace))
+ return(NULL);
+
+ c_retval = xmlCatalogAdd(type, orig, replace);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCatalogCleanup();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogConvert(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ int c_retval;
+
+ c_retval = xmlCatalogConvert();
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlCatalogDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * out;
+ PyObject *pyobj_out;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCatalogDump", &pyobj_out))
+ return(NULL);
+ out = (FILE *) PyFile_Get(pyobj_out);
+
+ xmlCatalogDump(out);
+ PyFile_Release(out);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogGetPublic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlChar * pubID;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCatalogGetPublic", &pubID))
+ return(NULL);
+
+ c_retval = xmlCatalogGetPublic(pubID);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogGetSystem(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlChar * sysID;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCatalogGetSystem", &sysID))
+ return(NULL);
+
+ c_retval = xmlCatalogGetSystem(sysID);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogIsEmpty(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCatalogIsEmpty", &pyobj_catal))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlCatalogIsEmpty(catal);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogRemove(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCatalogRemove", &value))
+ return(NULL);
+
+ c_retval = xmlCatalogRemove(value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogResolve(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * pubID;
+ xmlChar * sysID;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlCatalogResolve", &pubID, &sysID))
+ return(NULL);
+
+ c_retval = xmlCatalogResolve(pubID, sysID);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogResolvePublic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * pubID;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCatalogResolvePublic", &pubID))
+ return(NULL);
+
+ c_retval = xmlCatalogResolvePublic(pubID);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogResolveSystem(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * sysID;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCatalogResolveSystem", &sysID))
+ return(NULL);
+
+ c_retval = xmlCatalogResolveSystem(sysID);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogResolveURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCatalogResolveURI", &URI))
+ return(NULL);
+
+ c_retval = xmlCatalogResolveURI(URI);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlCatalogSetDebug(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int level;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlCatalogSetDebug", &level))
+ return(NULL);
+
+ c_retval = xmlCatalogSetDebug(level);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlCharStrdup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ char * cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCharStrdup", &cur))
+ return(NULL);
+
+ c_retval = xmlCharStrdup(cur);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCharStrndup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ char * cur;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlCharStrndup", &cur, &len))
+ return(NULL);
+
+ c_retval = xmlCharStrndup(cur, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCheckFilename(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * path;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCheckFilename", &path))
+ return(NULL);
+
+ c_retval = xmlCheckFilename(path);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCheckLanguageID(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * lang;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCheckLanguageID", &lang))
+ return(NULL);
+
+ c_retval = xmlCheckLanguageID(lang);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCheckUTF8(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned char * utf;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCheckUTF8", &utf))
+ return(NULL);
+
+ c_retval = xmlCheckUTF8(utf);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCheckVersion(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ int version;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlCheckVersion", &version))
+ return(NULL);
+
+ xmlCheckVersion(version);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlCleanupCharEncodingHandlers(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCleanupCharEncodingHandlers();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlCleanupEncodingAliases(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCleanupEncodingAliases();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlCleanupGlobals(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCleanupGlobals();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlCleanupInputCallbacks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCleanupInputCallbacks();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlCleanupOutputCallbacks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCleanupOutputCallbacks();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlCleanupPredefinedEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlCleanupPredefinedEntities();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlClearParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlClearParserCtxt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlClearParserCtxt(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlConvertSGMLCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlConvertSGMLCatalog", &pyobj_catal))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ c_retval = xmlConvertSGMLCatalog(catal);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlCopyChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int len;
+ xmlChar * out;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"izi:xmlCopyChar", &len, &out, &val))
+ return(NULL);
+
+ c_retval = xmlCopyChar(len, out, val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyCharMultiByte(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * out;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlCopyCharMultiByte", &out, &val))
+ return(NULL);
+
+ c_retval = xmlCopyCharMultiByte(out, val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlCopyDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ int recursive;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlCopyDoc", &pyobj_doc, &recursive))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlCopyDoc(doc, recursive);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlCopyDtd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDtdPtr c_retval;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCopyDtd", &pyobj_dtd))
+ return(NULL);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ c_retval = xmlCopyDtd(dtd);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlCopyError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlErrorPtr from;
+ PyObject *pyobj_from;
+ xmlErrorPtr to;
+ PyObject *pyobj_to;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlCopyError", &pyobj_from, &pyobj_to))
+ return(NULL);
+ from = (xmlErrorPtr) PyError_Get(pyobj_from);
+ to = (xmlErrorPtr) PyError_Get(pyobj_to);
+
+ c_retval = xmlCopyError(from, to);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyNamespace(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNsPtr c_retval;
+ xmlNsPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCopyNamespace", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNsPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlCopyNamespace(cur);
+ py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyNamespaceList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNsPtr c_retval;
+ xmlNsPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCopyNamespaceList", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNsPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlCopyNamespaceList(cur);
+ py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ int extended;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlCopyNode", &pyobj_node, &extended))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlCopyNode(node, extended);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCopyNodeList", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlCopyNodeList(node);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr target;
+ PyObject *pyobj_target;
+ xmlAttrPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlCopyProp", &pyobj_target, &pyobj_cur))
+ return(NULL);
+ target = (xmlNodePtr) PyxmlNode_Get(pyobj_target);
+ cur = (xmlAttrPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlCopyProp(target, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCopyPropList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr target;
+ PyObject *pyobj_target;
+ xmlAttrPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlCopyPropList", &pyobj_target, &pyobj_cur))
+ return(NULL);
+ target = (xmlNodePtr) PyxmlNode_Get(pyobj_target);
+ cur = (xmlAttrPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlCopyPropList(target, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateDocParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+ xmlChar * cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCreateDocParserCtxt", &cur))
+ return(NULL);
+
+ c_retval = xmlCreateDocParserCtxt(cur);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateEntityParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+ xmlChar * URL;
+ xmlChar * ID;
+ xmlChar * base;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzz:xmlCreateEntityParserCtxt", &URL, &ID, &base))
+ return(NULL);
+
+ c_retval = xmlCreateEntityParserCtxt(URL, ID, base);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateFileParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlCreateFileParserCtxt", &filename))
+ return(NULL);
+
+ c_retval = xmlCreateFileParserCtxt(filename);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateIntSubset(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDtdPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzz:xmlCreateIntSubset", &pyobj_doc, &name, &ExternalID, &SystemID))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlCreateIntSubset(doc, name, ExternalID, SystemID);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateMemoryParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+
+ if (!PyArg_ParseTuple(args, (char *)"s#i:xmlCreateMemoryParserCtxt", &buffer, &py_buffsize0, &size))
+ return(NULL);
+
+ c_retval = xmlCreateMemoryParserCtxt(buffer, size);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ xmlURIPtr c_retval;
+
+ c_retval = xmlCreateURI();
+ py_retval = libxml_xmlURIPtrWrap((xmlURIPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCreateURLParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+ char * filename;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlCreateURLParserCtxt", &filename, &options))
+ return(NULL);
+
+ c_retval = xmlCreateURLParserCtxt(filename, options);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCtxtReadDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * cur;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzzi:xmlCtxtReadDoc", &pyobj_ctxt, &cur, &URL, &encoding, &options))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlCtxtReadDoc(ctxt, cur, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCtxtReadFd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int fd;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oizzi:xmlCtxtReadFd", &pyobj_ctxt, &fd, &URL, &encoding, &options))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlCtxtReadFd(ctxt, fd, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCtxtReadFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * filename;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzi:xmlCtxtReadFile", &pyobj_ctxt, &filename, &encoding, &options))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlCtxtReadFile(ctxt, filename, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCtxtReadMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Os#izzi:xmlCtxtReadMemory", &pyobj_ctxt, &buffer, &py_buffsize0, &size, &URL, &encoding, &options))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlCtxtReadMemory(ctxt, buffer, size, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCtxtReset(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlCtxtReset", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlCtxtReset(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlCtxtResetPush(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * chunk;
+ int py_buffsize0;
+ int size;
+ char * filename;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"Os#izz:xmlCtxtResetPush", &pyobj_ctxt, &chunk, &py_buffsize0, &size, &filename, &encoding))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlCtxtResetPush(ctxt, chunk, size, filename, encoding);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlCtxtUseOptions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlCtxtUseOptions", &pyobj_ctxt, &options))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlCtxtUseOptions(ctxt, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugCheckDocument(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDebugCheckDocument", &pyobj_output, &pyobj_doc))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlDebugCheckDocument(output, doc);
+ PyFile_Release(output);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpAttr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+ int depth;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDebugDumpAttr", &pyobj_output, &pyobj_attr, &depth))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ xmlDebugDumpAttr(output, attr, depth);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpAttrList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+ int depth;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDebugDumpAttrList", &pyobj_output, &pyobj_attr, &depth))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ xmlDebugDumpAttrList(output, attr, depth);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpDTD(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDebugDumpDTD", &pyobj_output, &pyobj_dtd))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ xmlDebugDumpDTD(output, dtd);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpDocument(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDebugDumpDocument", &pyobj_output, &pyobj_doc))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ xmlDebugDumpDocument(output, doc);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpDocumentHead(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDebugDumpDocumentHead", &pyobj_output, &pyobj_doc))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ xmlDebugDumpDocumentHead(output, doc);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDebugDumpEntities", &pyobj_output, &pyobj_doc))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ xmlDebugDumpEntities(output, doc);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ int depth;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDebugDumpNode", &pyobj_output, &pyobj_node, &depth))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ xmlDebugDumpNode(output, node, depth);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ int depth;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDebugDumpNodeList", &pyobj_output, &pyobj_node, &depth))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ xmlDebugDumpNodeList(output, node, depth);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpOneNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ int depth;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDebugDumpOneNode", &pyobj_output, &pyobj_node, &depth))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ xmlDebugDumpOneNode(output, node, depth);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlDebugDumpString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlChar * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlDebugDumpString", &pyobj_output, &str))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+
+ xmlDebugDumpString(output, str);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlDecodeEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int len;
+ int what;
+ xmlChar end;
+ xmlChar end2;
+ xmlChar end3;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oiiccc:xmlDecodeEntities", &pyobj_ctxt, &len, &what, &end, &end2, &end3))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlDecodeEntities(ctxt, len, what, end, end2, end3);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlDefaultSAXHandlerInit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlDefaultSAXHandlerInit();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlDelEncodingAlias(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * alias;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlDelEncodingAlias", &alias))
+ return(NULL);
+
+ c_retval = xmlDelEncodingAlias(alias);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlDictCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlDictCleanup();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlDocCopyNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ int extended;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDocCopyNode", &pyobj_node, &pyobj_doc, &extended))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlDocCopyNode(node, doc, extended);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlDocCopyNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDocCopyNodeList", &pyobj_doc, &pyobj_node))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlDocCopyNodeList(doc, node);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlDocDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ FILE * f;
+ PyObject *pyobj_f;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDocDump", &pyobj_f, &pyobj_cur))
+ return(NULL);
+ f = (FILE *) PyFile_Get(pyobj_f);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlDocDump(f, cur);
+ PyFile_Release(f);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlDocFormatDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ FILE * f;
+ PyObject *pyobj_f;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlDocFormatDump", &pyobj_f, &pyobj_cur, &format))
+ return(NULL);
+ f = (FILE *) PyFile_Get(pyobj_f);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlDocFormatDump(f, cur, format);
+ PyFile_Release(f);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject *
+libxml_xmlDocGetRootElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlDocGetRootElement", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlDocGetRootElement(doc);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+PyObject *
+libxml_xmlDocSetRootElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr root;
+ PyObject *pyobj_root;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlDocSetRootElement", &pyobj_doc, &pyobj_root))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ root = (xmlNodePtr) PyxmlNode_Get(pyobj_root);
+
+ c_retval = xmlDocSetRootElement(doc, root);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlElemDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * f;
+ PyObject *pyobj_f;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlElemDump", &pyobj_f, &pyobj_doc, &pyobj_cur))
+ return(NULL);
+ f = (FILE *) PyFile_Get(pyobj_f);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlElemDump(f, doc, cur);
+ PyFile_Release(f);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlEncodeEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * input;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlEncodeEntities", &pyobj_doc, &input))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlEncodeEntities(doc, input);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlEncodeEntitiesReentrant(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * input;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlEncodeEntitiesReentrant", &pyobj_doc, &input))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlEncodeEntitiesReentrant(doc, input);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlEncodeSpecialChars(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlChar * input;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlEncodeSpecialChars", &pyobj_doc, &input))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlEncodeSpecialChars(doc, input);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlErrorGetCode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlErrorPtr Error;
+ PyObject *pyobj_Error;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetCode", &pyobj_Error))
+ return(NULL);
+ Error = (xmlErrorPtr) PyError_Get(pyobj_Error);
+
+ c_retval = Error->code;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlErrorGetDomain(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlErrorPtr Error;
+ PyObject *pyobj_Error;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetDomain", &pyobj_Error))
+ return(NULL);
+ Error = (xmlErrorPtr) PyError_Get(pyobj_Error);
+
+ c_retval = Error->domain;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlErrorGetFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlErrorPtr Error;
+ PyObject *pyobj_Error;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetFile", &pyobj_Error))
+ return(NULL);
+ Error = (xmlErrorPtr) PyError_Get(pyobj_Error);
+
+ c_retval = Error->file;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlErrorGetLevel(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlErrorPtr Error;
+ PyObject *pyobj_Error;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetLevel", &pyobj_Error))
+ return(NULL);
+ Error = (xmlErrorPtr) PyError_Get(pyobj_Error);
+
+ c_retval = Error->level;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlErrorGetLine(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlErrorPtr Error;
+ PyObject *pyobj_Error;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetLine", &pyobj_Error))
+ return(NULL);
+ Error = (xmlErrorPtr) PyError_Get(pyobj_Error);
+
+ c_retval = Error->line;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlErrorGetMessage(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlErrorPtr Error;
+ PyObject *pyobj_Error;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlErrorGetMessage", &pyobj_Error))
+ return(NULL);
+ Error = (xmlErrorPtr) PyError_Get(pyobj_Error);
+
+ c_retval = Error->message;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlFileMatch(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlFileMatch", &filename))
+ return(NULL);
+
+ c_retval = xmlFileMatch(filename);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlFirstElementChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr parent;
+ PyObject *pyobj_parent;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFirstElementChild", &pyobj_parent))
+ return(NULL);
+ parent = (xmlNodePtr) PyxmlNode_Get(pyobj_parent);
+
+ c_retval = xmlFirstElementChild(parent);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlFreeCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlCatalogPtr catal;
+ PyObject *pyobj_catal;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeCatalog", &pyobj_catal))
+ return(NULL);
+ catal = (xmlCatalogPtr) Pycatalog_Get(pyobj_catal);
+
+ xmlFreeCatalog(catal);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlFreeDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeDoc", &pyobj_cur))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeDoc(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeDtd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlDtdPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeDtd", &pyobj_cur))
+ return(NULL);
+ cur = (xmlDtdPtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeDtd(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeNode", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeNode(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeNodeList", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeNodeList(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNsPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeNs", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNsPtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeNs(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeNsList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNsPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeNsList", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNsPtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeNsList(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeParserInputBuffer(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserInputBufferPtr in;
+ PyObject *pyobj_in;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeParserInputBuffer", &pyobj_in))
+ return(NULL);
+ in = (xmlParserInputBufferPtr) PyinputBuffer_Get(pyobj_in);
+
+ xmlFreeParserInputBuffer(in);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlAttrPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeProp", &pyobj_cur))
+ return(NULL);
+ cur = (xmlAttrPtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreeProp(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreePropList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlAttrPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreePropList", &pyobj_cur))
+ return(NULL);
+ cur = (xmlAttrPtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlFreePropList(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlFreeURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr uri;
+ PyObject *pyobj_uri;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeURI", &pyobj_uri))
+ return(NULL);
+ uri = (xmlURIPtr) PyURI_Get(pyobj_uri);
+
+ xmlFreeURI(uri);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlGetCompressMode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ int c_retval;
+
+ c_retval = xmlGetCompressMode();
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDocCompressMode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlGetDocCompressMode", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlGetDocCompressMode(doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDocEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetDocEntity", &pyobj_doc, &name))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlGetDocEntity(doc, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDtdAttrDesc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttributePtr c_retval;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+ xmlChar * elem;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlGetDtdAttrDesc", &pyobj_dtd, &elem, &name))
+ return(NULL);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ c_retval = xmlGetDtdAttrDesc(dtd, elem, name);
+ py_retval = libxml_xmlAttributePtrWrap((xmlAttributePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDtdElementDesc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlElementPtr c_retval;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetDtdElementDesc", &pyobj_dtd, &name))
+ return(NULL);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ c_retval = xmlGetDtdElementDesc(dtd, name);
+ py_retval = libxml_xmlElementPtrWrap((xmlElementPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDtdEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetDtdEntity", &pyobj_doc, &name))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlGetDtdEntity(doc, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDtdQAttrDesc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttributePtr c_retval;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+ xmlChar * elem;
+ xmlChar * name;
+ xmlChar * prefix;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzz:xmlGetDtdQAttrDesc", &pyobj_dtd, &elem, &name, &prefix))
+ return(NULL);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ c_retval = xmlGetDtdQAttrDesc(dtd, elem, name, prefix);
+ py_retval = libxml_xmlAttributePtrWrap((xmlAttributePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetDtdQElementDesc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlElementPtr c_retval;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+ xmlChar * name;
+ xmlChar * prefix;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlGetDtdQElementDesc", &pyobj_dtd, &name, &prefix))
+ return(NULL);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ c_retval = xmlGetDtdQElementDesc(dtd, name, prefix);
+ py_retval = libxml_xmlElementPtrWrap((xmlElementPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetEncodingAlias(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ char * alias;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlGetEncodingAlias", &alias))
+ return(NULL);
+
+ c_retval = xmlGetEncodingAlias(alias);
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetID(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * ID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetID", &pyobj_doc, &ID))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlGetID(doc, ID);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetIntSubset(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDtdPtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlGetIntSubset", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlGetIntSubset(doc);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetLastChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNode * parent;
+ PyObject *pyobj_parent;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlGetLastChild", &pyobj_parent))
+ return(NULL);
+ parent = (xmlNode *) PyxmlNode_Get(pyobj_parent);
+
+ c_retval = xmlGetLastChild(parent);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ xmlErrorPtr c_retval;
+
+ c_retval = xmlGetLastError();
+ py_retval = libxml_xmlErrorPtrWrap((xmlErrorPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetLineNo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ long c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlGetLineNo", &pyobj_node))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlGetLineNo(node);
+ py_retval = libxml_longWrap((long) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetNoNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetNoNsProp", &pyobj_node, &name))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlGetNoNsProp(node, name);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlGetNodePath(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlGetNodePath", &pyobj_node))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlGetNodePath(node);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
+PyObject *
+libxml_xmlGetNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+ xmlChar * nameSpace;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlGetNsProp", &pyobj_node, &name, &nameSpace))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlGetNsProp(node, name, nameSpace);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetParameterEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetParameterEntity", &pyobj_doc, &name))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlGetParameterEntity(doc, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetPredefinedEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlGetPredefinedEntity", &name))
+ return(NULL);
+
+ c_retval = xmlGetPredefinedEntity(name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlGetProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlGetProp", &pyobj_node, &name))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlGetProp(node, name);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlHandleEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlEntityPtr entity;
+ PyObject *pyobj_entity;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlHandleEntity", &pyobj_ctxt, &pyobj_entity))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+ entity = (xmlEntityPtr) PyxmlNode_Get(pyobj_entity);
+
+ xmlHandleEntity(ctxt, entity);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlHasNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+ xmlChar * nameSpace;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlHasNsProp", &pyobj_node, &name, &nameSpace))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlHasNsProp(node, name, nameSpace);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlHasProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlHasProp", &pyobj_node, &name))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlHasProp(node, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_FTP_ENABLED)
+PyObject *
+libxml_xmlIOFTPMatch(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlIOFTPMatch", &filename))
+ return(NULL);
+
+ c_retval = xmlIOFTPMatch(filename);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject *
+libxml_xmlIOHTTPMatch(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlIOHTTPMatch", &filename))
+ return(NULL);
+
+ c_retval = xmlIOHTTPMatch(filename);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+PyObject *
+libxml_xmlInitCharEncodingHandlers(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlInitCharEncodingHandlers();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlInitGlobals(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlInitGlobals();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlInitParser(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlInitParser();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlInitParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlInitParserCtxt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlInitParserCtxt(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlInitializeCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlInitializeCatalog();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlInitializeDict(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ int c_retval;
+
+ c_retval = xmlInitializeDict();
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlInitializePredefinedEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlInitializePredefinedEntities();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlIsBaseChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsBaseChar", &ch))
+ return(NULL);
+
+ c_retval = xmlIsBaseChar(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsBlank(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsBlank", &ch))
+ return(NULL);
+
+ c_retval = xmlIsBlank(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsBlankNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlIsBlankNode", &pyobj_node))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlIsBlankNode(node);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsChar", &ch))
+ return(NULL);
+
+ c_retval = xmlIsChar(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsCombining(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsCombining", &ch))
+ return(NULL);
+
+ c_retval = xmlIsCombining(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsDigit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsDigit", &ch))
+ return(NULL);
+
+ c_retval = xmlIsDigit(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsExtender(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsExtender", &ch))
+ return(NULL);
+
+ c_retval = xmlIsExtender(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsID(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlIsID", &pyobj_doc, &pyobj_elem, &pyobj_attr))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ c_retval = xmlIsID(doc, elem, attr);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsIdeographic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsIdeographic", &ch))
+ return(NULL);
+
+ c_retval = xmlIsIdeographic(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsLetter(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int c;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsLetter", &c))
+ return(NULL);
+
+ c_retval = xmlIsLetter(c);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsMixedElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlIsMixedElement", &pyobj_doc, &name))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlIsMixedElement(doc, name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsPubidChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ unsigned int ch;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlIsPubidChar", &ch))
+ return(NULL);
+
+ c_retval = xmlIsPubidChar(ch);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsRef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlIsRef", &pyobj_doc, &pyobj_elem, &pyobj_attr))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ c_retval = xmlIsRef(doc, elem, attr);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlIsXHTML(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * systemID;
+ xmlChar * publicID;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlIsXHTML", &systemID, &publicID))
+ return(NULL);
+
+ c_retval = xmlIsXHTML(systemID, publicID);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlKeepBlanksDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlKeepBlanksDefault", &val))
+ return(NULL);
+
+ c_retval = xmlKeepBlanksDefault(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlLastElementChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr parent;
+ PyObject *pyobj_parent;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlLastElementChild", &pyobj_parent))
+ return(NULL);
+ parent = (xmlNodePtr) PyxmlNode_Get(pyobj_parent);
+
+ c_retval = xmlLastElementChild(parent);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlLineNumbersDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlLineNumbersDefault", &val))
+ return(NULL);
+
+ c_retval = xmlLineNumbersDefault(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlLoadACatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlCatalogPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlLoadACatalog", &filename))
+ return(NULL);
+
+ c_retval = xmlLoadACatalog(filename);
+ py_retval = libxml_xmlCatalogPtrWrap((xmlCatalogPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlLoadCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlLoadCatalog", &filename))
+ return(NULL);
+
+ c_retval = xmlLoadCatalog(filename);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlLoadCatalogs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ char * pathss;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlLoadCatalogs", &pathss))
+ return(NULL);
+
+ xmlLoadCatalogs(pathss);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlLoadSGMLSuperCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlCatalogPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlLoadSGMLSuperCatalog", &filename))
+ return(NULL);
+
+ c_retval = xmlLoadSGMLSuperCatalog(filename);
+ py_retval = libxml_xmlCatalogPtrWrap((xmlCatalogPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlLsCountNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlLsCountNode", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlLsCountNode(node);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject *
+libxml_xmlLsOneNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlLsOneNode", &pyobj_output, &pyobj_node))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ xmlLsOneNode(output, node);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlNamespaceParseNCName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNamespaceParseNCName", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlNamespaceParseNCName(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlNamespaceParseNSDef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNamespaceParseNSDef", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlNamespaceParseNSDef(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject *
+libxml_xmlNanoFTPCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlNanoFTPCleanup();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject *
+libxml_xmlNanoFTPInit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlNanoFTPInit();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject *
+libxml_xmlNanoFTPProxy(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ char * host;
+ int port;
+ char * user;
+ char * passwd;
+ int type;
+
+ if (!PyArg_ParseTuple(args, (char *)"zizzi:xmlNanoFTPProxy", &host, &port, &user, &passwd, &type))
+ return(NULL);
+
+ xmlNanoFTPProxy(host, port, user, passwd, type);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject *
+libxml_xmlNanoFTPScanProxy(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ char * URL;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNanoFTPScanProxy", &URL))
+ return(NULL);
+
+ xmlNanoFTPScanProxy(URL);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject *
+libxml_xmlNanoHTTPCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlNanoHTTPCleanup();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject *
+libxml_xmlNanoHTTPInit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlNanoHTTPInit();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject *
+libxml_xmlNanoHTTPScanProxy(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ char * URL;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNanoHTTPScanProxy", &URL))
+ return(NULL);
+
+ xmlNanoHTTPScanProxy(URL);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+PyObject *
+libxml_xmlNewCDataBlock(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * content;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlNewCDataBlock", &pyobj_doc, &content, &len))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewCDataBlock(doc, content, len);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlNewCatalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlCatalogPtr c_retval;
+ int sgml;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlNewCatalog", &sgml))
+ return(NULL);
+
+ c_retval = xmlNewCatalog(sgml);
+ py_retval = libxml_xmlCatalogPtrWrap((xmlCatalogPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlNewCharRef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNewCharRef", &pyobj_doc, &name))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewCharRef(doc, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlNewChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr parent;
+ PyObject *pyobj_parent;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewChild", &pyobj_parent, &pyobj_ns, &name, &content))
+ return(NULL);
+ parent = (xmlNodePtr) PyxmlNode_Get(pyobj_parent);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewChild(parent, ns, name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject *
+libxml_xmlNewComment(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNewComment", &content))
+ return(NULL);
+
+ c_retval = xmlNewComment(content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlChar * version;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNewDoc", &version))
+ return(NULL);
+
+ c_retval = xmlNewDoc(version);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDocComment(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNewDocComment", &pyobj_doc, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDocComment(doc, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNewDocFragment(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNewDocFragment", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDocFragment(doc);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlNewDocNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewDocNode", &pyobj_doc, &pyobj_ns, &name, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewDocNode(doc, ns, name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDocNodeEatName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewDocNodeEatName", &pyobj_doc, &pyobj_ns, &name, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewDocNodeEatName(doc, ns, name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDocPI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlNewDocPI", &pyobj_doc, &name, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDocPI(doc, name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDocProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlNewDocProp", &pyobj_doc, &name, &value))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDocProp(doc, name, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNewDocRawNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewDocRawNode", &pyobj_doc, &pyobj_ns, &name, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewDocRawNode(doc, ns, name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlNewDocText(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNewDocText", &pyobj_doc, &content))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDocText(doc, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDocTextLen(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * content;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlNewDocTextLen", &pyobj_doc, &content, &len))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDocTextLen(doc, content, len);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewDtd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDtdPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzz:xmlNewDtd", &pyobj_doc, &name, &ExternalID, &SystemID))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewDtd(doc, name, ExternalID, SystemID);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+ int type;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozizzz:xmlNewEntity", &pyobj_doc, &name, &type, &ExternalID, &SystemID, &content))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewEntity(doc, name, type, ExternalID, SystemID, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlNewGlobalNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNsPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * href;
+ xmlChar * prefix;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlNewGlobalNs", &pyobj_doc, &href, &prefix))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewGlobalNs(doc, href, prefix);
+ py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlNewNodeEatName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNewNodeEatName", &pyobj_ns, &name))
+ return(NULL);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewNodeEatName(ns, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNsPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * href;
+ xmlChar * prefix;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlNewNs", &pyobj_node, &href, &prefix))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlNewNs(node, href, prefix);
+ py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewNsProp", &pyobj_node, &pyobj_ns, &name, &value))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewNsProp(node, ns, name, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewNsPropEatName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewNsPropEatName", &pyobj_node, &pyobj_ns, &name, &value))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewNsPropEatName(node, ns, name, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewPI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlNewPI", &name, &content))
+ return(NULL);
+
+ c_retval = xmlNewPI(name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+
+ c_retval = xmlNewParserCtxt();
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlNewProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlNewProp", &pyobj_node, &name, &value))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlNewProp(node, name, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject *
+libxml_xmlNewReference(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNewReference", &pyobj_doc, &name))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlNewReference(doc, name);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNewText(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNewText", &content))
+ return(NULL);
+
+ c_retval = xmlNewText(content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNewTextChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr parent;
+ PyObject *pyobj_parent;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlNewTextChild", &pyobj_parent, &pyobj_ns, &name, &content))
+ return(NULL);
+ parent = (xmlNodePtr) PyxmlNode_Get(pyobj_parent);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlNewTextChild(parent, ns, name, content);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlNewTextLen(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlChar * content;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlNewTextLen", &content, &len))
+ return(NULL);
+
+ c_retval = xmlNewTextLen(content, len);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlNewTextReader(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ xmlParserInputBufferPtr input;
+ PyObject *pyobj_input;
+ char * URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNewTextReader", &pyobj_input, &URI))
+ return(NULL);
+ input = (xmlParserInputBufferPtr) PyinputBuffer_Get(pyobj_input);
+
+ c_retval = xmlNewTextReader(input, URI);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlNewTextReaderFilename(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ char * URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNewTextReaderFilename", &URI))
+ return(NULL);
+
+ c_retval = xmlNewTextReaderFilename(URI);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlNewValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ xmlValidCtxtPtr c_retval;
+
+ c_retval = xmlNewValidCtxt();
+ py_retval = libxml_xmlValidCtxtPtrWrap((xmlValidCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+PyObject *
+libxml_xmlNextChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNextChar", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlNextChar(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNextElementSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNextElementSibling", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlNextElementSibling(node);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlNodeAddContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNodeAddContent", &pyobj_cur, &content))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeAddContent(cur, content);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlNodeAddContentLen(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * content;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlNodeAddContentLen", &pyobj_cur, &content, &len))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeAddContentLen(cur, content, len);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlNodeDumpOutput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlOutputBufferPtr buf;
+ PyObject *pyobj_buf;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ int level;
+ int format;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOiiz:xmlNodeDumpOutput", &pyobj_buf, &pyobj_doc, &pyobj_cur, &level, &format, &encoding))
+ return(NULL);
+ buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeDumpOutput(buf, doc, cur, level, format, encoding);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject *
+libxml_xmlNodeGetBase(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlNode * cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlNodeGetBase", &pyobj_doc, &pyobj_cur))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+ cur = (xmlNode *) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlNodeGetBase(doc, cur);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNodeGetContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNode * cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNodeGetContent", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNode *) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlNodeGetContent(cur);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNodeGetLang(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNode * cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNodeGetLang", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNode *) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlNodeGetLang(cur);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNodeGetSpacePreserve(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNode * cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNodeGetSpacePreserve", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNode *) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlNodeGetSpacePreserve(cur);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNodeIsText(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNode * node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlNodeIsText", &pyobj_node))
+ return(NULL);
+ node = (xmlNode *) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlNodeIsText(node);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNodeListGetRawString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlNode * list;
+ PyObject *pyobj_list;
+ int inLine;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlNodeListGetRawString", &pyobj_doc, &pyobj_list, &inLine))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+ list = (xmlNode *) PyxmlNode_Get(pyobj_list);
+
+ c_retval = xmlNodeListGetRawString(doc, list, inLine);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlNodeListGetString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNode * list;
+ PyObject *pyobj_list;
+ int inLine;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlNodeListGetString", &pyobj_doc, &pyobj_list, &inLine))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ list = (xmlNode *) PyxmlNode_Get(pyobj_list);
+
+ c_retval = xmlNodeListGetString(doc, list, inLine);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+PyObject *
+libxml_xmlNodeSetBase(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * uri;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNodeSetBase", &pyobj_cur, &uri))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeSetBase(cur, uri);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) */
+PyObject *
+libxml_xmlNodeSetContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNodeSetContent", &pyobj_cur, &content))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeSetContent(cur, content);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNodeSetContentLen(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * content;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlNodeSetContentLen", &pyobj_cur, &content, &len))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeSetContentLen(cur, content, len);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNodeSetLang(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * lang;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNodeSetLang", &pyobj_cur, &lang))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeSetLang(cur, lang);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNodeSetName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlNodeSetName", &pyobj_cur, &name))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeSetName(cur, name);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlNodeSetSpacePreserve(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlNodeSetSpacePreserve", &pyobj_cur, &val))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlNodeSetSpacePreserve(cur, val);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlNormalizeURIPath(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * path;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNormalizeURIPath", &path))
+ return(NULL);
+
+ c_retval = xmlNormalizeURIPath(path);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlNormalizeWindowsPath(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * path;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlNormalizeWindowsPath", &path))
+ return(NULL);
+
+ c_retval = xmlNormalizeWindowsPath(path);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlOutputBufferGetContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlOutputBufferPtr out;
+ PyObject *pyobj_out;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlOutputBufferGetContent", &pyobj_out))
+ return(NULL);
+ out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
+
+ c_retval = xmlOutputBufferGetContent(out);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlOutputBufferWrite(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlOutputBufferPtr out;
+ PyObject *pyobj_out;
+ int len;
+ char * buf;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oiz:xmlOutputBufferWrite", &pyobj_out, &len, &buf))
+ return(NULL);
+ out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
+
+ c_retval = xmlOutputBufferWrite(out, len, buf);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlOutputBufferWriteString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlOutputBufferPtr out;
+ PyObject *pyobj_out;
+ char * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlOutputBufferWriteString", &pyobj_out, &str))
+ return(NULL);
+ out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
+
+ c_retval = xmlOutputBufferWriteString(out, str);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject *
+libxml_xmlParseAttValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseAttValue", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseAttValue(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseAttributeListDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseAttributeListDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseAttributeListDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseCDSect(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseCDSect", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseCDSect(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject *
+libxml_xmlParseCatalogFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlParseCatalogFile", &filename))
+ return(NULL);
+
+ c_retval = xmlParseCatalogFile(filename);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject *
+libxml_xmlParseCharData(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int cdata;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParseCharData", &pyobj_ctxt, &cdata))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseCharData(ctxt, cdata);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseCharRef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseCharRef", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseCharRef(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_PUSH_ENABLED)
+PyObject *
+libxml_xmlParseChunk(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * chunk;
+ int py_buffsize0;
+ int size;
+ int terminate;
+
+ if (!PyArg_ParseTuple(args, (char *)"Os#ii:xmlParseChunk", &pyobj_ctxt, &chunk, &py_buffsize0, &size, &terminate))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseChunk(ctxt, chunk, size, terminate);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_PUSH_ENABLED) */
+PyObject *
+libxml_xmlParseComment(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseComment", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseComment(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseContent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseContent", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseContent(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlParseDTD(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDtdPtr c_retval;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlParseDTD", &ExternalID, &SystemID))
+ return(NULL);
+
+ c_retval = xmlParseDTD(ExternalID, SystemID);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlParseDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlChar * cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlParseDoc", &cur))
+ return(NULL);
+
+ c_retval = xmlParseDoc(cur);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject *
+libxml_xmlParseDocTypeDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseDocTypeDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseDocTypeDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseDocument(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseDocument", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseDocument(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseElement", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseElement(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseElementDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseElementDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseElementDecl(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseEncName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseEncName", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseEncName(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseEncodingDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseEncodingDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseEncodingDecl(ctxt);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlParseEndTag(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseEndTag", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseEndTag(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlParseEntity(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlParseEntity", &filename))
+ return(NULL);
+
+ c_retval = xmlParseEntity(filename);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject *
+libxml_xmlParseEntityDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseEntityDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseEntityDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseEntityRef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlEntityPtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseEntityRef", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseEntityRef(ctxt);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseExtParsedEnt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseExtParsedEnt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseExtParsedEnt(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseExternalSubset(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * ExternalID;
+ xmlChar * SystemID;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlParseExternalSubset", &pyobj_ctxt, &ExternalID, &SystemID))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseExternalSubset(ctxt, ExternalID, SystemID);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlParseFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlParseFile", &filename))
+ return(NULL);
+
+ c_retval = xmlParseFile(filename);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject *
+libxml_xmlParseMarkupDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseMarkupDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseMarkupDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlParseMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+
+ if (!PyArg_ParseTuple(args, (char *)"s#i:xmlParseMemory", &buffer, &py_buffsize0, &size))
+ return(NULL);
+
+ c_retval = xmlParseMemory(buffer, size);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject *
+libxml_xmlParseMisc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseMisc", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseMisc(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseName", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseName(ctxt);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlParseNamespace(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseNamespace", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseNamespace(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlParseNmtoken(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseNmtoken", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseNmtoken(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseNotationDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseNotationDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseNotationDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParsePEReference(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParsePEReference", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParsePEReference(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParsePI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParsePI", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParsePI(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParsePITarget(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParsePITarget", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParsePITarget(ctxt);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParsePubidLiteral(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParsePubidLiteral", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParsePubidLiteral(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlParseQuotedString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseQuotedString", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseQuotedString(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlParseReference(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseReference", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseReference(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseSDDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseSDDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseSDDecl(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlParseStartTag(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseStartTag", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseStartTag(ctxt);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject *
+libxml_xmlParseSystemLiteral(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseSystemLiteral", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseSystemLiteral(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseTextDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseTextDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseTextDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParseURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlURIPtr c_retval;
+ char * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlParseURI", &str))
+ return(NULL);
+
+ c_retval = xmlParseURI(str);
+ py_retval = libxml_xmlURIPtrWrap((xmlURIPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseURIRaw(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlURIPtr c_retval;
+ char * str;
+ int raw;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlParseURIRaw", &str, &raw))
+ return(NULL);
+
+ c_retval = xmlParseURIRaw(str, raw);
+ py_retval = libxml_xmlURIPtrWrap((xmlURIPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseURIReference(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlURIPtr uri;
+ PyObject *pyobj_uri;
+ char * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlParseURIReference", &pyobj_uri, &str))
+ return(NULL);
+ uri = (xmlURIPtr) PyURI_Get(pyobj_uri);
+
+ c_retval = xmlParseURIReference(uri, str);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseVersionInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseVersionInfo", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseVersionInfo(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseVersionNum(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseVersionNum", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlParseVersionNum(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParseXMLDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParseXMLDecl", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParseXMLDecl(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParserGetDirectory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ char * c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlParserGetDirectory", &filename))
+ return(NULL);
+
+ c_retval = xmlParserGetDirectory(filename);
+ py_retval = libxml_charPtrWrap((char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserGetDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParserGetDoc", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = ctxt->myDoc;
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserGetIsValid(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParserGetIsValid", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = ctxt->valid;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserGetWellFormed(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParserGetWellFormed", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = ctxt->wellFormed;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserHandlePEReference(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParserHandlePEReference", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParserHandlePEReference(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlParserHandleReference(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlParserHandleReference", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlParserHandleReference(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject *
+libxml_xmlParserInputBufferGrow(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserInputBufferPtr in;
+ PyObject *pyobj_in;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserInputBufferGrow", &pyobj_in, &len))
+ return(NULL);
+ in = (xmlParserInputBufferPtr) PyinputBuffer_Get(pyobj_in);
+
+ c_retval = xmlParserInputBufferGrow(in, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserInputBufferPush(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserInputBufferPtr in;
+ PyObject *pyobj_in;
+ int len;
+ char * buf;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oiz:xmlParserInputBufferPush", &pyobj_in, &len, &buf))
+ return(NULL);
+ in = (xmlParserInputBufferPtr) PyinputBuffer_Get(pyobj_in);
+
+ c_retval = xmlParserInputBufferPush(in, len, buf);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserInputBufferRead(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserInputBufferPtr in;
+ PyObject *pyobj_in;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserInputBufferRead", &pyobj_in, &len))
+ return(NULL);
+ in = (xmlParserInputBufferPtr) PyinputBuffer_Get(pyobj_in);
+
+ c_retval = xmlParserInputBufferRead(in, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlParserSetLineNumbers(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int linenumbers;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserSetLineNumbers", &pyobj_ctxt, &linenumbers))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ ctxt->linenumbers = linenumbers;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParserSetLoadSubset(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int loadsubset;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserSetLoadSubset", &pyobj_ctxt, &loadsubset))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ ctxt->loadsubset = loadsubset;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParserSetPedantic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int pedantic;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserSetPedantic", &pyobj_ctxt, &pedantic))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ ctxt->pedantic = pedantic;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParserSetReplaceEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int replaceEntities;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserSetReplaceEntities", &pyobj_ctxt, &replaceEntities))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ ctxt->replaceEntities = replaceEntities;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlParserSetValidate(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int validate;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlParserSetValidate", &pyobj_ctxt, &validate))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ ctxt->validate = validate;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlPathToURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * path;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlPathToURI", &path))
+ return(NULL);
+
+ c_retval = xmlPathToURI(path);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlPedanticParserDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlPedanticParserDefault", &val))
+ return(NULL);
+
+ c_retval = xmlPedanticParserDefault(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlPopInput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlPopInput", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlPopInput(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlPreviousElementSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlPreviousElementSibling", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlPreviousElementSibling(node);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject *
+libxml_xmlPrintURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * stream;
+ PyObject *pyobj_stream;
+ xmlURIPtr uri;
+ PyObject *pyobj_uri;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlPrintURI", &pyobj_stream, &pyobj_uri))
+ return(NULL);
+ stream = (FILE *) PyFile_Get(pyobj_stream);
+ uri = (xmlURIPtr) PyURI_Get(pyobj_uri);
+
+ xmlPrintURI(stream, uri);
+ PyFile_Release(stream);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlReadDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlChar * cur;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzzi:xmlReadDoc", &cur, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReadDoc(cur, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlReadFd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ int fd;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"izzi:xmlReadFd", &fd, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReadFd(fd, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlReadFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * filename;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:xmlReadFile", &filename, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReadFile(filename, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlReadMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"s#izzi:xmlReadMemory", &buffer, &py_buffsize0, &size, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReadMemory(buffer, size, URL, encoding, options);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderForDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ xmlChar * cur;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzzi:xmlReaderForDoc", &cur, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReaderForDoc(cur, URL, encoding, options);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderForFd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ int fd;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"izzi:xmlReaderForFd", &fd, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReaderForFd(fd, URL, encoding, options);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderForFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ char * filename;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:xmlReaderForFile", &filename, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReaderForFile(filename, encoding, options);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderForMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ char * buffer;
+ int size;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"zizzi:xmlReaderForMemory", &buffer, &size, &URL, &encoding, &options))
+ return(NULL);
+
+ c_retval = xmlReaderForMemory(buffer, size, URL, encoding, options);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderNewDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * cur;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzzi:xmlReaderNewDoc", &pyobj_reader, &cur, &URL, &encoding, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlReaderNewDoc(reader, cur, URL, encoding, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderNewFd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ int fd;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oizzi:xmlReaderNewFd", &pyobj_reader, &fd, &URL, &encoding, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlReaderNewFd(reader, fd, URL, encoding, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderNewFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ char * filename;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozzi:xmlReaderNewFile", &pyobj_reader, &filename, &encoding, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlReaderNewFile(reader, filename, encoding, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderNewMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ char * buffer;
+ int size;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozizzi:xmlReaderNewMemory", &pyobj_reader, &buffer, &size, &URL, &encoding, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlReaderNewMemory(reader, buffer, size, URL, encoding, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderNewWalker(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlReaderNewWalker", &pyobj_reader, &pyobj_doc))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlReaderNewWalker(reader, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlReaderWalker(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlTextReaderPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlReaderWalker", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlReaderWalker(doc);
+ py_retval = libxml_xmlTextReaderPtrWrap((xmlTextReaderPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject *
+libxml_xmlReconciliateNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr tree;
+ PyObject *pyobj_tree;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlReconciliateNs", &pyobj_doc, &pyobj_tree))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ tree = (xmlNodePtr) PyxmlNode_Get(pyobj_tree);
+
+ c_retval = xmlReconciliateNs(doc, tree);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlRecoverDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlChar * cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlRecoverDoc", &cur))
+ return(NULL);
+
+ c_retval = xmlRecoverDoc(cur);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlRecoverFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlRecoverFile", &filename))
+ return(NULL);
+
+ c_retval = xmlRecoverFile(filename);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlRecoverMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ char * buffer;
+ int py_buffsize0;
+ int size;
+
+ if (!PyArg_ParseTuple(args, (char *)"s#i:xmlRecoverMemory", &buffer, &py_buffsize0, &size))
+ return(NULL);
+
+ c_retval = xmlRecoverMemory(buffer, size);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlRegFreeRegexp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlRegexpPtr regexp;
+ PyObject *pyobj_regexp;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRegFreeRegexp", &pyobj_regexp))
+ return(NULL);
+ regexp = (xmlRegexpPtr) PyxmlReg_Get(pyobj_regexp);
+
+ xmlRegFreeRegexp(regexp);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlRegexpCompile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlRegexpPtr c_retval;
+ xmlChar * regexp;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlRegexpCompile", &regexp))
+ return(NULL);
+
+ c_retval = xmlRegexpCompile(regexp);
+ py_retval = libxml_xmlRegexpPtrWrap((xmlRegexpPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlRegexpExec(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRegexpPtr comp;
+ PyObject *pyobj_comp;
+ xmlChar * content;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlRegexpExec", &pyobj_comp, &content))
+ return(NULL);
+ comp = (xmlRegexpPtr) PyxmlReg_Get(pyobj_comp);
+
+ c_retval = xmlRegexpExec(comp, content);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlRegexpIsDeterminist(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRegexpPtr comp;
+ PyObject *pyobj_comp;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRegexpIsDeterminist", &pyobj_comp))
+ return(NULL);
+ comp = (xmlRegexpPtr) PyxmlReg_Get(pyobj_comp);
+
+ c_retval = xmlRegexpIsDeterminist(comp);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlRegexpPrint(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlRegexpPtr regexp;
+ PyObject *pyobj_regexp;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlRegexpPrint", &pyobj_output, &pyobj_regexp))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ regexp = (xmlRegexpPtr) PyxmlReg_Get(pyobj_regexp);
+
+ xmlRegexpPrint(output, regexp);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+PyObject *
+libxml_xmlRegisterDefaultInputCallbacks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlRegisterDefaultInputCallbacks();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlRegisterDefaultOutputCallbacks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlRegisterDefaultOutputCallbacks();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED)
+PyObject *
+libxml_xmlRegisterHTTPPostCallbacks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlRegisterHTTPPostCallbacks();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+#endif
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGCleanupTypes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlRelaxNGCleanupTypes();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlRelaxNGDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlRelaxNGPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlRelaxNGDump", &pyobj_output, &pyobj_schema))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ schema = (xmlRelaxNGPtr) PyrelaxNgSchema_Get(pyobj_schema);
+
+ xmlRelaxNGDump(output, schema);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlRelaxNGDumpTree(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlRelaxNGPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlRelaxNGDumpTree", &pyobj_output, &pyobj_schema))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ schema = (xmlRelaxNGPtr) PyrelaxNgSchema_Get(pyobj_schema);
+
+ xmlRelaxNGDumpTree(output, schema);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGFree(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlRelaxNGPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGFree", &pyobj_schema))
+ return(NULL);
+ schema = (xmlRelaxNGPtr) PyrelaxNgSchema_Get(pyobj_schema);
+
+ xmlRelaxNGFree(schema);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGFreeParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlRelaxNGParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGFreeParserCtxt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlRelaxNGParserCtxtPtr) PyrelaxNgParserCtxt_Get(pyobj_ctxt);
+
+ xmlRelaxNGFreeParserCtxt(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGInitTypes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+ PyObject *py_retval;
+ int c_retval;
+
+ c_retval = xmlRelaxNGInitTypes();
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGNewDocParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlRelaxNGParserCtxtPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGNewDocParserCtxt", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlRelaxNGNewDocParserCtxt(doc);
+ py_retval = libxml_xmlRelaxNGParserCtxtPtrWrap((xmlRelaxNGParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGNewMemParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlRelaxNGParserCtxtPtr c_retval;
+ char * buffer;
+ int size;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlRelaxNGNewMemParserCtxt", &buffer, &size))
+ return(NULL);
+
+ c_retval = xmlRelaxNGNewMemParserCtxt(buffer, size);
+ py_retval = libxml_xmlRelaxNGParserCtxtPtrWrap((xmlRelaxNGParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGNewParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlRelaxNGParserCtxtPtr c_retval;
+ char * URL;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlRelaxNGNewParserCtxt", &URL))
+ return(NULL);
+
+ c_retval = xmlRelaxNGNewParserCtxt(URL);
+ py_retval = libxml_xmlRelaxNGParserCtxtPtrWrap((xmlRelaxNGParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGNewValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlRelaxNGValidCtxtPtr c_retval;
+ xmlRelaxNGPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGNewValidCtxt", &pyobj_schema))
+ return(NULL);
+ schema = (xmlRelaxNGPtr) PyrelaxNgSchema_Get(pyobj_schema);
+
+ c_retval = xmlRelaxNGNewValidCtxt(schema);
+ py_retval = libxml_xmlRelaxNGValidCtxtPtrWrap((xmlRelaxNGValidCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGParse(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlRelaxNGPtr c_retval;
+ xmlRelaxNGParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGParse", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlRelaxNGParserCtxtPtr) PyrelaxNgParserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlRelaxNGParse(ctxt);
+ py_retval = libxml_xmlRelaxNGPtrWrap((xmlRelaxNGPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGValidateDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRelaxNGValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlRelaxNGValidateDoc", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlRelaxNGValidateDoc(ctxt, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGValidateFullElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRelaxNGValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlRelaxNGValidateFullElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem))
+ return(NULL);
+ ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlRelaxNGValidateFullElement(ctxt, doc, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGValidatePopElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRelaxNGValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlRelaxNGValidatePopElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem))
+ return(NULL);
+ ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlRelaxNGValidatePopElement(ctxt, doc, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGValidatePushCData(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRelaxNGValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * data;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlRelaxNGValidatePushCData", &pyobj_ctxt, &data, &len))
+ return(NULL);
+ ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlRelaxNGValidatePushCData(ctxt, data, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxNGValidatePushElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRelaxNGValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlRelaxNGValidatePushElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem))
+ return(NULL);
+ ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlRelaxNGValidatePushElement(ctxt, doc, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlRelaxParserSetFlag(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlRelaxNGParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int flags;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlRelaxParserSetFlag", &pyobj_ctxt, &flags))
+ return(NULL);
+ ctxt = (xmlRelaxNGParserCtxtPtr) PyrelaxNgParserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlRelaxParserSetFlag(ctxt, flags);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject *
+libxml_xmlRemoveID(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlRemoveID", &pyobj_doc, &pyobj_attr))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ c_retval = xmlRemoveID(doc, attr);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlRemoveProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlAttrPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlRemoveProp", &pyobj_cur))
+ return(NULL);
+ cur = (xmlAttrPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlRemoveProp(cur);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlRemoveRef(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlRemoveRef", &pyobj_doc, &pyobj_attr))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ c_retval = xmlRemoveRef(doc, attr);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+PyObject *
+libxml_xmlReplaceNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr old;
+ PyObject *pyobj_old;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlReplaceNode", &pyobj_old, &pyobj_cur))
+ return(NULL);
+ old = (xmlNodePtr) PyxmlNode_Get(pyobj_old);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlReplaceNode(old, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
+PyObject *
+libxml_xmlResetError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlErrorPtr err;
+ PyObject *pyobj_err;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlResetError", &pyobj_err))
+ return(NULL);
+ err = (xmlErrorPtr) PyError_Get(pyobj_err);
+
+ xmlResetError(err);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlResetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlResetLastError();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlSAXDefaultVersion(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int version;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlSAXDefaultVersion", &version))
+ return(NULL);
+
+ c_retval = xmlSAXDefaultVersion(version);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlSaveFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"zO:xmlSaveFile", &filename, &pyobj_cur))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlSaveFile(filename, cur);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlSaveFileEnc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+
+ if (!PyArg_ParseTuple(args, (char *)"zOz:xmlSaveFileEnc", &filename, &pyobj_cur, &encoding))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlSaveFileEnc(filename, cur, encoding);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlSaveFormatFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"zOi:xmlSaveFormatFile", &filename, &pyobj_cur, &format))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlSaveFormatFile(filename, cur, format);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlSaveFormatFileEnc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ char * filename;
+ xmlDocPtr cur;
+ PyObject *pyobj_cur;
+ char * encoding;
+ int format;
+
+ if (!PyArg_ParseTuple(args, (char *)"zOzi:xmlSaveFormatFileEnc", &filename, &pyobj_cur, &encoding, &format))
+ return(NULL);
+ cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlSaveFormatFileEnc(filename, cur, encoding, format);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject *
+libxml_xmlSaveUri(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlURIPtr uri;
+ PyObject *pyobj_uri;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSaveUri", &pyobj_uri))
+ return(NULL);
+ uri = (xmlURIPtr) PyURI_Get(pyobj_uri);
+
+ c_retval = xmlSaveUri(uri);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlScanName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlScanName", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlScanName(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaCleanupTypes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlSchemaCleanupTypes();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaCollapseString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlSchemaCollapseString", &value))
+ return(NULL);
+
+ c_retval = xmlSchemaCollapseString(value);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlSchemaDump(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ FILE * output;
+ PyObject *pyobj_output;
+ xmlSchemaPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlSchemaDump", &pyobj_output, &pyobj_schema))
+ return(NULL);
+ output = (FILE *) PyFile_Get(pyobj_output);
+ schema = (xmlSchemaPtr) PySchema_Get(pyobj_schema);
+
+ xmlSchemaDump(output, schema);
+ PyFile_Release(output);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaFree(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlSchemaPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaFree", &pyobj_schema))
+ return(NULL);
+ schema = (xmlSchemaPtr) PySchema_Get(pyobj_schema);
+
+ xmlSchemaFree(schema);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaFreeParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlSchemaParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaFreeParserCtxt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlSchemaParserCtxtPtr) PySchemaParserCtxt_Get(pyobj_ctxt);
+
+ xmlSchemaFreeParserCtxt(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaInitTypes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlSchemaInitTypes();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaIsValid(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaIsValid", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSchemaIsValid(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaNewDocParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlSchemaParserCtxtPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaNewDocParserCtxt", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlSchemaNewDocParserCtxt(doc);
+ py_retval = libxml_xmlSchemaParserCtxtPtrWrap((xmlSchemaParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaNewMemParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlSchemaParserCtxtPtr c_retval;
+ char * buffer;
+ int size;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlSchemaNewMemParserCtxt", &buffer, &size))
+ return(NULL);
+
+ c_retval = xmlSchemaNewMemParserCtxt(buffer, size);
+ py_retval = libxml_xmlSchemaParserCtxtPtrWrap((xmlSchemaParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaNewParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlSchemaParserCtxtPtr c_retval;
+ char * URL;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlSchemaNewParserCtxt", &URL))
+ return(NULL);
+
+ c_retval = xmlSchemaNewParserCtxt(URL);
+ py_retval = libxml_xmlSchemaParserCtxtPtrWrap((xmlSchemaParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaNewValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlSchemaValidCtxtPtr c_retval;
+ xmlSchemaPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaNewValidCtxt", &pyobj_schema))
+ return(NULL);
+ schema = (xmlSchemaPtr) PySchema_Get(pyobj_schema);
+
+ c_retval = xmlSchemaNewValidCtxt(schema);
+ py_retval = libxml_xmlSchemaValidCtxtPtrWrap((xmlSchemaValidCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaParse(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlSchemaPtr c_retval;
+ xmlSchemaParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaParse", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlSchemaParserCtxtPtr) PySchemaParserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSchemaParse(ctxt);
+ py_retval = libxml_xmlSchemaPtrWrap((xmlSchemaPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaSetValidOptions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlSchemaSetValidOptions", &pyobj_ctxt, &options))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSchemaSetValidOptions(ctxt, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaValidCtxtGetOptions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaValidCtxtGetOptions", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSchemaValidCtxtGetOptions(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaValidCtxtGetParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserCtxtPtr c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaValidCtxtGetParserCtxt", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSchemaValidCtxtGetParserCtxt(ctxt);
+ py_retval = libxml_xmlParserCtxtPtrWrap((xmlParserCtxtPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaValidateDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlSchemaValidateDoc", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlSchemaValidateDoc(ctxt, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaValidateFile(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * filename;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlSchemaValidateFile", &pyobj_ctxt, &filename, &options))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSchemaValidateFile(ctxt, filename, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaValidateOneElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlSchemaValidateOneElement", &pyobj_ctxt, &pyobj_elem))
+ return(NULL);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlSchemaValidateOneElement(ctxt, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaValidateSetFilename(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlSchemaValidCtxtPtr vctxt;
+ PyObject *pyobj_vctxt;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlSchemaValidateSetFilename", &pyobj_vctxt, &filename))
+ return(NULL);
+ vctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_vctxt);
+
+ xmlSchemaValidateSetFilename(vctxt, filename);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlSchemaWhiteSpaceReplace(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlSchemaWhiteSpaceReplace", &value))
+ return(NULL);
+
+ c_retval = xmlSchemaWhiteSpaceReplace(value);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject *
+libxml_xmlSearchNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNsPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * nameSpace;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOz:xmlSearchNs", &pyobj_doc, &pyobj_node, &nameSpace))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlSearchNs(doc, node, nameSpace);
+ py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlSearchNsByHref(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNsPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * href;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOz:xmlSearchNsByHref", &pyobj_doc, &pyobj_node, &href))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlSearchNsByHref(doc, node, href);
+ py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlSetCompressMode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ int mode;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlSetCompressMode", &mode))
+ return(NULL);
+
+ xmlSetCompressMode(mode);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlSetDocCompressMode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ int mode;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlSetDocCompressMode", &pyobj_doc, &mode))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ xmlSetDocCompressMode(doc, mode);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlSetListDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr list;
+ PyObject *pyobj_list;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlSetListDoc", &pyobj_list, &pyobj_doc))
+ return(NULL);
+ list = (xmlNodePtr) PyxmlNode_Get(pyobj_list);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ xmlSetListDoc(list, doc);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlSetNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlSetNs", &pyobj_node, &pyobj_ns))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ xmlSetNs(node, ns);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_xmlSetNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlSetNsProp", &pyobj_node, &pyobj_ns, &name, &value))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlSetNsProp(node, ns, name, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+PyObject *
+libxml_xmlSetProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlAttrPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlSetProp", &pyobj_node, &name, &value))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlSetProp(node, name, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+PyObject *
+libxml_xmlSetTreeDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr tree;
+ PyObject *pyobj_tree;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlSetTreeDoc", &pyobj_tree, &pyobj_doc))
+ return(NULL);
+ tree = (xmlNodePtr) PyxmlNode_Get(pyobj_tree);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ xmlSetTreeDoc(tree, doc);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject *
+libxml_xmlSetupParserForBuffer(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * buffer;
+ char * filename;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlSetupParserForBuffer", &pyobj_ctxt, &buffer, &filename))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlSetupParserForBuffer(ctxt, buffer, filename);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject *
+libxml_xmlShellPrintNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlShellPrintNode", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ xmlShellPrintNode(node);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlShellPrintXPathError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ int errorType;
+ char * arg;
+
+ if (!PyArg_ParseTuple(args, (char *)"iz:xmlShellPrintXPathError", &errorType, &arg))
+ return(NULL);
+
+ xmlShellPrintXPathError(errorType, arg);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) */
+PyObject *
+libxml_xmlSkipBlankChars(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlSkipBlankChars", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlSkipBlankChars(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStopParser(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlStopParser", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ xmlStopParser(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlStrEqual(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * str1;
+ xmlChar * str2;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlStrEqual", &str1, &str2))
+ return(NULL);
+
+ c_retval = xmlStrEqual(str1, str2);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrQEqual(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * pref;
+ xmlChar * name;
+ xmlChar * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzz:xmlStrQEqual", &pref, &name, &str))
+ return(NULL);
+
+ c_retval = xmlStrQEqual(pref, name, str);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrcasecmp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * str1;
+ xmlChar * str2;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlStrcasecmp", &str1, &str2))
+ return(NULL);
+
+ c_retval = xmlStrcasecmp(str1, str2);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrcasestr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlChar * str;
+ xmlChar * val;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlStrcasestr", &str, &val))
+ return(NULL);
+
+ c_retval = xmlStrcasestr(str, val);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrcat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * cur;
+ xmlChar * add;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlStrcat", &cur, &add))
+ return(NULL);
+
+ c_retval = xmlStrcat(cur, add);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrchr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlChar * str;
+ xmlChar val;
+
+ if (!PyArg_ParseTuple(args, (char *)"zc:xmlStrchr", &str, &val))
+ return(NULL);
+
+ c_retval = xmlStrchr(str, val);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrcmp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * str1;
+ xmlChar * str2;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlStrcmp", &str1, &str2))
+ return(NULL);
+
+ c_retval = xmlStrcmp(str1, str2);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrdup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlStrdup", &cur))
+ return(NULL);
+
+ c_retval = xmlStrdup(cur);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStringDecodeEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * str;
+ int what;
+ xmlChar end;
+ xmlChar end2;
+ xmlChar end3;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oziccc:xmlStringDecodeEntities", &pyobj_ctxt, &str, &what, &end, &end2, &end3))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlStringDecodeEntities(ctxt, str, what, end, end2, end3);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStringGetNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlStringGetNodeList", &pyobj_doc, &value))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlStringGetNodeList(doc, value);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStringLenDecodeEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlParserCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * str;
+ int len;
+ int what;
+ xmlChar end;
+ xmlChar end2;
+ xmlChar end3;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oziiccc:xmlStringLenDecodeEntities", &pyobj_ctxt, &str, &len, &what, &end, &end2, &end3))
+ return(NULL);
+ ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlStringLenDecodeEntities(ctxt, str, len, what, end, end2, end3);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStringLenGetNodeList(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlDoc * doc;
+ PyObject *pyobj_doc;
+ xmlChar * value;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlStringLenGetNodeList", &pyobj_doc, &value, &len))
+ return(NULL);
+ doc = (xmlDoc *) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlStringLenGetNodeList(doc, value, len);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrlen(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlStrlen", &str))
+ return(NULL);
+
+ c_retval = xmlStrlen(str);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrncasecmp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * str1;
+ xmlChar * str2;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:xmlStrncasecmp", &str1, &str2, &len))
+ return(NULL);
+
+ c_retval = xmlStrncasecmp(str1, str2, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrncat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * cur;
+ xmlChar * add;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:xmlStrncat", &cur, &add, &len))
+ return(NULL);
+
+ c_retval = xmlStrncat(cur, add, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrncatNew(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * str1;
+ xmlChar * str2;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:xmlStrncatNew", &str1, &str2, &len))
+ return(NULL);
+
+ c_retval = xmlStrncatNew(str1, str2, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrncmp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * str1;
+ xmlChar * str2;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zzi:xmlStrncmp", &str1, &str2, &len))
+ return(NULL);
+
+ c_retval = xmlStrncmp(str1, str2, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrndup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * cur;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlStrndup", &cur, &len))
+ return(NULL);
+
+ c_retval = xmlStrndup(cur, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrstr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlChar * str;
+ xmlChar * val;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlStrstr", &str, &val))
+ return(NULL);
+
+ c_retval = xmlStrstr(str, val);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlStrsub(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * str;
+ int start;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zii:xmlStrsub", &str, &start, &len))
+ return(NULL);
+
+ c_retval = xmlStrsub(str, start, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlSubstituteEntitiesDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlSubstituteEntitiesDefault", &val))
+ return(NULL);
+
+ c_retval = xmlSubstituteEntitiesDefault(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlTextConcat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * content;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlTextConcat", &pyobj_node, &content, &len))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlTextConcat(node, content, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlTextMerge(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlNodePtr first;
+ PyObject *pyobj_first;
+ xmlNodePtr second;
+ PyObject *pyobj_second;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlTextMerge", &pyobj_first, &pyobj_second))
+ return(NULL);
+ first = (xmlNodePtr) PyxmlNode_Get(pyobj_first);
+ second = (xmlNodePtr) PyxmlNode_Get(pyobj_second);
+
+ c_retval = xmlTextMerge(first, second);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderAttributeCount(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderAttributeCount", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderAttributeCount(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderByteConsumed(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ long c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderByteConsumed", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderByteConsumed(reader);
+ py_retval = libxml_longWrap((long) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderClose(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderClose", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderClose(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstBaseUri(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstBaseUri", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstBaseUri(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstEncoding(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstEncoding", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstEncoding(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstLocalName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstLocalName", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstLocalName(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstName", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstName(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstNamespaceUri(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstNamespaceUri", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstNamespaceUri(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstPrefix(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstPrefix", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstPrefix(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlTextReaderConstString", &pyobj_reader, &str))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstString(reader, str);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstValue", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstValue(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstXmlLang(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstXmlLang", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstXmlLang(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderConstXmlVersion(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderConstXmlVersion", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderConstXmlVersion(reader);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderCurrentDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderCurrentDoc", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderCurrentDoc(reader);
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderCurrentNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderCurrentNode", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderCurrentNode(reader);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderDepth(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderDepth", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderDepth(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderExpand(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderExpand", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderExpand(reader);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlTextReaderGetAttribute", &pyobj_reader, &name))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetAttribute(reader, name);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetAttributeNo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ int no;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlTextReaderGetAttributeNo", &pyobj_reader, &no))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetAttributeNo(reader, no);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetAttributeNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * localName;
+ xmlChar * namespaceURI;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlTextReaderGetAttributeNs", &pyobj_reader, &localName, &namespaceURI))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetAttributeNs(reader, localName, namespaceURI);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetParserColumnNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderGetParserColumnNumber", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetParserColumnNumber(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetParserLineNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderGetParserLineNumber", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetParserLineNumber(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetParserProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ int prop;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlTextReaderGetParserProp", &pyobj_reader, &prop))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetParserProp(reader, prop);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderGetRemainder(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlParserInputBufferPtr c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderGetRemainder", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderGetRemainder(reader);
+ py_retval = libxml_xmlParserInputBufferPtrWrap((xmlParserInputBufferPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderHasAttributes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderHasAttributes", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderHasAttributes(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderHasValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderHasValue", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderHasValue(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderIsDefault(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderIsDefault", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderIsDefault(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderIsEmptyElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderIsEmptyElement", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderIsEmptyElement(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderIsNamespaceDecl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderIsNamespaceDecl", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderIsNamespaceDecl(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderIsValid(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderIsValid", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderIsValid(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderLocatorBaseURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderLocatorPtr locator;
+ PyObject *pyobj_locator;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderLocatorBaseURI", &pyobj_locator))
+ return(NULL);
+ locator = (xmlTextReaderLocatorPtr) PyxmlTextReaderLocator_Get(pyobj_locator);
+
+ c_retval = xmlTextReaderLocatorBaseURI(locator);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderLocatorLineNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderLocatorPtr locator;
+ PyObject *pyobj_locator;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderLocatorLineNumber", &pyobj_locator))
+ return(NULL);
+ locator = (xmlTextReaderLocatorPtr) PyxmlTextReaderLocator_Get(pyobj_locator);
+
+ c_retval = xmlTextReaderLocatorLineNumber(locator);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderLookupNamespace(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * prefix;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlTextReaderLookupNamespace", &pyobj_reader, &prefix))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderLookupNamespace(reader, prefix);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderMoveToAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlTextReaderMoveToAttribute", &pyobj_reader, &name))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderMoveToAttribute(reader, name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderMoveToAttributeNo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ int no;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlTextReaderMoveToAttributeNo", &pyobj_reader, &no))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderMoveToAttributeNo(reader, no);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderMoveToAttributeNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlChar * localName;
+ xmlChar * namespaceURI;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlTextReaderMoveToAttributeNs", &pyobj_reader, &localName, &namespaceURI))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderMoveToAttributeNs(reader, localName, namespaceURI);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderMoveToElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderMoveToElement", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderMoveToElement(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderMoveToFirstAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderMoveToFirstAttribute", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderMoveToFirstAttribute(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderMoveToNextAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderMoveToNextAttribute", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderMoveToNextAttribute(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderNext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderNext", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderNext(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderNextSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderNextSibling", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderNextSibling(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderNodeType(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderNodeType", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderNodeType(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderNormalization(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderNormalization", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderNormalization(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderPreserve(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderPreserve", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderPreserve(reader);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderQuoteChar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderQuoteChar", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderQuoteChar(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderRead(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderRead", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderRead(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderReadAttributeValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderReadAttributeValue", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderReadAttributeValue(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED)
+PyObject *
+libxml_xmlTextReaderReadInnerXml(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderReadInnerXml", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderReadInnerXml(reader);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED)
+PyObject *
+libxml_xmlTextReaderReadOuterXml(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderReadOuterXml", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderReadOuterXml(reader);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderReadState(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderReadState", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderReadState(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderReadString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderReadString", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderReadString(reader);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlTextReaderRelaxNGSetSchema(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlRelaxNGPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlTextReaderRelaxNGSetSchema", &pyobj_reader, &pyobj_schema))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+ schema = (xmlRelaxNGPtr) PyrelaxNgSchema_Get(pyobj_schema);
+
+ c_retval = xmlTextReaderRelaxNGSetSchema(reader, schema);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlTextReaderRelaxNGValidate(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ char * rng;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlTextReaderRelaxNGValidate", &pyobj_reader, &rng))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderRelaxNGValidate(reader, rng);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlTextReaderRelaxNGValidateCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlRelaxNGValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlTextReaderRelaxNGValidateCtxt", &pyobj_reader, &pyobj_ctxt, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+ ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlTextReaderRelaxNGValidateCtxt(reader, ctxt, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlTextReaderSchemaValidate(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ char * xsd;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlTextReaderSchemaValidate", &pyobj_reader, &xsd))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderSchemaValidate(reader, xsd);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlTextReaderSchemaValidateCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlSchemaValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:xmlTextReaderSchemaValidateCtxt", &pyobj_reader, &pyobj_ctxt, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+ ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlTextReaderSchemaValidateCtxt(reader, ctxt, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderSetParserProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ int prop;
+ int value;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oii:xmlTextReaderSetParserProp", &pyobj_reader, &prop, &value))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderSetParserProp(reader, prop, value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlTextReaderSetSchema(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlSchemaPtr schema;
+ PyObject *pyobj_schema;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlTextReaderSetSchema", &pyobj_reader, &pyobj_schema))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+ schema = (xmlSchemaPtr) PySchema_Get(pyobj_schema);
+
+ c_retval = xmlTextReaderSetSchema(reader, schema);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderSetup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+ xmlParserInputBufferPtr input;
+ PyObject *pyobj_input;
+ char * URL;
+ char * encoding;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzzi:xmlTextReaderSetup", &pyobj_reader, &pyobj_input, &URL, &encoding, &options))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+ input = (xmlParserInputBufferPtr) PyinputBuffer_Get(pyobj_input);
+
+ c_retval = xmlTextReaderSetup(reader, input, URL, encoding, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject *
+libxml_xmlTextReaderStandalone(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlTextReaderPtr reader;
+ PyObject *pyobj_reader;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderStandalone", &pyobj_reader))
+ return(NULL);
+ reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+
+ c_retval = xmlTextReaderStandalone(reader);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_READER_ENABLED) */
+PyObject *
+libxml_xmlThrDefDefaultBufferSize(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefDefaultBufferSize", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefDefaultBufferSize(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefDoValidityCheckingDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefDoValidityCheckingDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefDoValidityCheckingDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefGetWarningsDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefGetWarningsDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefGetWarningsDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefIndentTreeOutput(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefIndentTreeOutput", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefIndentTreeOutput(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefKeepBlanksDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefKeepBlanksDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefKeepBlanksDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefLineNumbersDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefLineNumbersDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefLineNumbersDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefLoadExtDtdDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefLoadExtDtdDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefLoadExtDtdDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefParserDebugEntities(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefParserDebugEntities", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefParserDebugEntities(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefPedanticParserDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefPedanticParserDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefPedanticParserDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefSaveNoEmptyTags(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefSaveNoEmptyTags", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefSaveNoEmptyTags(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefSubstituteEntitiesDefaultValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int v;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlThrDefSubstituteEntitiesDefaultValue", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefSubstituteEntitiesDefaultValue(v);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlThrDefTreeIndentString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ char * v;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlThrDefTreeIndentString", &v))
+ return(NULL);
+
+ c_retval = xmlThrDefTreeIndentString(v);
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsAegeanNumbers(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsAegeanNumbers", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsAegeanNumbers(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsAlphabeticPresentationForms(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsAlphabeticPresentationForms", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsAlphabeticPresentationForms(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsArabic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsArabic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsArabic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsArabicPresentationFormsA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsArabicPresentationFormsA", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsArabicPresentationFormsA(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsArabicPresentationFormsB(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsArabicPresentationFormsB", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsArabicPresentationFormsB(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsArmenian(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsArmenian", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsArmenian(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsArrows(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsArrows", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsArrows(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBasicLatin(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBasicLatin", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBasicLatin(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBengali(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBengali", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBengali(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBlock(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+ char * block;
+
+ if (!PyArg_ParseTuple(args, (char *)"iz:xmlUCSIsBlock", &code, &block))
+ return(NULL);
+
+ c_retval = xmlUCSIsBlock(code, block);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBlockElements(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBlockElements", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBlockElements(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBopomofo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBopomofo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBopomofo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBopomofoExtended(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBopomofoExtended", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBopomofoExtended(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBoxDrawing(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBoxDrawing", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBoxDrawing(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBraillePatterns(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBraillePatterns", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBraillePatterns(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsBuhid(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsBuhid", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsBuhid(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsByzantineMusicalSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsByzantineMusicalSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsByzantineMusicalSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKCompatibility(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKCompatibility", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKCompatibility(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKCompatibilityForms(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKCompatibilityForms", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKCompatibilityForms(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKCompatibilityIdeographs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKCompatibilityIdeographs", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKCompatibilityIdeographs(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKCompatibilityIdeographsSupplement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKCompatibilityIdeographsSupplement", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKCompatibilityIdeographsSupplement(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKRadicalsSupplement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKRadicalsSupplement", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKRadicalsSupplement(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKSymbolsandPunctuation(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKSymbolsandPunctuation", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKSymbolsandPunctuation(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKUnifiedIdeographs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKUnifiedIdeographs", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKUnifiedIdeographs(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKUnifiedIdeographsExtensionA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKUnifiedIdeographsExtensionA", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKUnifiedIdeographsExtensionA(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCJKUnifiedIdeographsExtensionB(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCJKUnifiedIdeographsExtensionB", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCJKUnifiedIdeographsExtensionB(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+ char * cat;
+
+ if (!PyArg_ParseTuple(args, (char *)"iz:xmlUCSIsCat", &code, &cat))
+ return(NULL);
+
+ c_retval = xmlUCSIsCat(code, cat);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatC(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatC", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatC(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatCc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatCc", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatCc(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatCf(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatCf", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatCf(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatCo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatCo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatCo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatCs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatCs", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatCs(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatL(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatL", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatL(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatLl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatLl", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatLl(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatLm(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatLm", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatLm(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatLo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatLo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatLo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatLt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatLt", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatLt(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatLu(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatLu", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatLu(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatM(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatM", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatM(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatMc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatMc", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatMc(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatMe(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatMe", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatMe(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatMn(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatMn", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatMn(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatN(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatN", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatN(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatNd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatNd", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatNd(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatNl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatNl", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatNl(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatNo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatNo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatNo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatP(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatP", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatP(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPc", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPc(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPd", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPd(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPe(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPe", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPe(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPf(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPf", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPf(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPi(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPi", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPi(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatPs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatPs", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatPs(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatS(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatS", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatS(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatSc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatSc", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatSc(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatSk(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatSk", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatSk(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatSm(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatSm", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatSm(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatSo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatSo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatSo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatZ(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatZ", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatZ(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatZl(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatZl", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatZl(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatZp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatZp", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatZp(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCatZs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCatZs", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCatZs(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCherokee(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCherokee", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCherokee(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCombiningDiacriticalMarks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCombiningDiacriticalMarks", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCombiningDiacriticalMarks(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCombiningDiacriticalMarksforSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCombiningDiacriticalMarksforSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCombiningDiacriticalMarksforSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCombiningHalfMarks(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCombiningHalfMarks", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCombiningHalfMarks(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCombiningMarksforSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCombiningMarksforSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCombiningMarksforSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsControlPictures(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsControlPictures", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsControlPictures(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCurrencySymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCurrencySymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCurrencySymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCypriotSyllabary(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCypriotSyllabary", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCypriotSyllabary(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCyrillic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCyrillic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCyrillic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsCyrillicSupplement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsCyrillicSupplement", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsCyrillicSupplement(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsDeseret(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsDeseret", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsDeseret(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsDevanagari(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsDevanagari", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsDevanagari(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsDingbats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsDingbats", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsDingbats(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsEnclosedAlphanumerics(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsEnclosedAlphanumerics", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsEnclosedAlphanumerics(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsEnclosedCJKLettersandMonths(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsEnclosedCJKLettersandMonths", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsEnclosedCJKLettersandMonths(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsEthiopic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsEthiopic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsEthiopic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGeneralPunctuation(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGeneralPunctuation", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGeneralPunctuation(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGeometricShapes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGeometricShapes", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGeometricShapes(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGeorgian(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGeorgian", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGeorgian(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGothic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGothic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGothic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGreek(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGreek", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGreek(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGreekExtended(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGreekExtended", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGreekExtended(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGreekandCoptic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGreekandCoptic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGreekandCoptic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGujarati(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGujarati", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGujarati(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsGurmukhi(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsGurmukhi", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsGurmukhi(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHalfwidthandFullwidthForms(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHalfwidthandFullwidthForms", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHalfwidthandFullwidthForms(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHangulCompatibilityJamo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHangulCompatibilityJamo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHangulCompatibilityJamo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHangulJamo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHangulJamo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHangulJamo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHangulSyllables(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHangulSyllables", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHangulSyllables(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHanunoo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHanunoo", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHanunoo(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHebrew(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHebrew", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHebrew(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHighPrivateUseSurrogates(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHighPrivateUseSurrogates", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHighPrivateUseSurrogates(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHighSurrogates(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHighSurrogates", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHighSurrogates(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsHiragana(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsHiragana", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsHiragana(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsIPAExtensions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsIPAExtensions", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsIPAExtensions(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsIdeographicDescriptionCharacters(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsIdeographicDescriptionCharacters", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsIdeographicDescriptionCharacters(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKanbun(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKanbun", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKanbun(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKangxiRadicals(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKangxiRadicals", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKangxiRadicals(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKannada(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKannada", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKannada(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKatakana(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKatakana", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKatakana(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKatakanaPhoneticExtensions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKatakanaPhoneticExtensions", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKatakanaPhoneticExtensions(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKhmer(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKhmer", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKhmer(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsKhmerSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsKhmerSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsKhmerSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLao(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLao", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLao(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLatin1Supplement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLatin1Supplement", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLatin1Supplement(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLatinExtendedA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLatinExtendedA", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLatinExtendedA(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLatinExtendedAdditional(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLatinExtendedAdditional", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLatinExtendedAdditional(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLatinExtendedB(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLatinExtendedB", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLatinExtendedB(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLetterlikeSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLetterlikeSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLetterlikeSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLimbu(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLimbu", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLimbu(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLinearBIdeograms(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLinearBIdeograms", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLinearBIdeograms(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLinearBSyllabary(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLinearBSyllabary", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLinearBSyllabary(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsLowSurrogates(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsLowSurrogates", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsLowSurrogates(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMalayalam(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMalayalam", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMalayalam(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMathematicalAlphanumericSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMathematicalAlphanumericSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMathematicalAlphanumericSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMathematicalOperators(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMathematicalOperators", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMathematicalOperators(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMiscellaneousMathematicalSymbolsA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMiscellaneousMathematicalSymbolsA", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMiscellaneousMathematicalSymbolsA(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMiscellaneousMathematicalSymbolsB(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMiscellaneousMathematicalSymbolsB", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMiscellaneousMathematicalSymbolsB(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMiscellaneousSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMiscellaneousSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMiscellaneousSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMiscellaneousSymbolsandArrows(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMiscellaneousSymbolsandArrows", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMiscellaneousSymbolsandArrows(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMiscellaneousTechnical(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMiscellaneousTechnical", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMiscellaneousTechnical(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMongolian(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMongolian", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMongolian(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMusicalSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMusicalSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMusicalSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsMyanmar(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsMyanmar", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsMyanmar(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsNumberForms(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsNumberForms", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsNumberForms(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsOgham(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsOgham", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsOgham(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsOldItalic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsOldItalic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsOldItalic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsOpticalCharacterRecognition(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsOpticalCharacterRecognition", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsOpticalCharacterRecognition(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsOriya(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsOriya", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsOriya(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsOsmanya(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsOsmanya", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsOsmanya(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsPhoneticExtensions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsPhoneticExtensions", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsPhoneticExtensions(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsPrivateUse(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsPrivateUse", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsPrivateUse(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsPrivateUseArea(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsPrivateUseArea", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsPrivateUseArea(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsRunic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsRunic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsRunic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsShavian(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsShavian", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsShavian(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSinhala(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSinhala", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSinhala(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSmallFormVariants(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSmallFormVariants", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSmallFormVariants(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSpacingModifierLetters(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSpacingModifierLetters", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSpacingModifierLetters(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSpecials(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSpecials", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSpecials(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSuperscriptsandSubscripts(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSuperscriptsandSubscripts", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSuperscriptsandSubscripts(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSupplementalArrowsA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSupplementalArrowsA", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSupplementalArrowsA(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSupplementalArrowsB(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSupplementalArrowsB", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSupplementalArrowsB(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSupplementalMathematicalOperators(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSupplementalMathematicalOperators", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSupplementalMathematicalOperators(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSupplementaryPrivateUseAreaA(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSupplementaryPrivateUseAreaA", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSupplementaryPrivateUseAreaA(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSupplementaryPrivateUseAreaB(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSupplementaryPrivateUseAreaB", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSupplementaryPrivateUseAreaB(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsSyriac(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsSyriac", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsSyriac(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTagalog(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTagalog", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTagalog(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTagbanwa(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTagbanwa", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTagbanwa(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTags(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTags", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTags(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTaiLe(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTaiLe", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTaiLe(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTaiXuanJingSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTaiXuanJingSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTaiXuanJingSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTamil(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTamil", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTamil(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTelugu(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTelugu", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTelugu(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsThaana(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsThaana", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsThaana(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsThai(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsThai", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsThai(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsTibetan(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsTibetan", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsTibetan(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsUgaritic(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsUgaritic", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsUgaritic(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsUnifiedCanadianAboriginalSyllabics(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsUnifiedCanadianAboriginalSyllabics", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsUnifiedCanadianAboriginalSyllabics(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsVariationSelectors(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsVariationSelectors", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsVariationSelectors(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsVariationSelectorsSupplement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsVariationSelectorsSupplement", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsVariationSelectorsSupplement(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsYiRadicals(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsYiRadicals", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsYiRadicals(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsYiSyllables(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsYiSyllables", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsYiSyllables(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject *
+libxml_xmlUCSIsYijingHexagramSymbols(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ int code;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlUCSIsYijingHexagramSymbols", &code))
+ return(NULL);
+
+ c_retval = xmlUCSIsYijingHexagramSymbols(code);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+PyObject *
+libxml_xmlURIEscape(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlURIEscape", &str))
+ return(NULL);
+
+ c_retval = xmlURIEscape(str);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIEscapeStr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * str;
+ xmlChar * list;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlURIEscapeStr", &str, &list))
+ return(NULL);
+
+ c_retval = xmlURIEscapeStr(str, list);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetAuthority(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetAuthority", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->authority;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetFragment(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetFragment", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->fragment;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetOpaque(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetOpaque", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->opaque;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetPath(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetPath", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->path;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetPort(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetPort", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->port;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetQuery(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetQuery", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->query;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetQueryRaw(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetQueryRaw", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->query_raw;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetScheme(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetScheme", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->scheme;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetServer(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetServer", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->server;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURIGetUser(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const char * c_retval;
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlURIGetUser", &pyobj_URI))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ c_retval = URI->user;
+ py_retval = libxml_charPtrConstWrap((const char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlURISetAuthority(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * authority;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetAuthority", &pyobj_URI, &authority))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->authority != NULL) xmlFree(URI->authority);
+ URI->authority = (char *)xmlStrdup((const xmlChar *)authority);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetFragment(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * fragment;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetFragment", &pyobj_URI, &fragment))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->fragment != NULL) xmlFree(URI->fragment);
+ URI->fragment = (char *)xmlStrdup((const xmlChar *)fragment);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetOpaque(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * opaque;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetOpaque", &pyobj_URI, &opaque))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->opaque != NULL) xmlFree(URI->opaque);
+ URI->opaque = (char *)xmlStrdup((const xmlChar *)opaque);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetPath(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * path;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetPath", &pyobj_URI, &path))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->path != NULL) xmlFree(URI->path);
+ URI->path = (char *)xmlStrdup((const xmlChar *)path);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetPort(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ int port;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlURISetPort", &pyobj_URI, &port))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ URI->port = port;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetQuery(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * query;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetQuery", &pyobj_URI, &query))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->query != NULL) xmlFree(URI->query);
+ URI->query = (char *)xmlStrdup((const xmlChar *)query);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetQueryRaw(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * query_raw;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetQueryRaw", &pyobj_URI, &query_raw))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->query_raw != NULL) xmlFree(URI->query_raw);
+ URI->query_raw = (char *)xmlStrdup((const xmlChar *)query_raw);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetScheme(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * scheme;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetScheme", &pyobj_URI, &scheme))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->scheme != NULL) xmlFree(URI->scheme);
+ URI->scheme = (char *)xmlStrdup((const xmlChar *)scheme);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetServer(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * server;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetServer", &pyobj_URI, &server))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->server != NULL) xmlFree(URI->server);
+ URI->server = (char *)xmlStrdup((const xmlChar *)server);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURISetUser(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlURIPtr URI;
+ PyObject *pyobj_URI;
+ char * user;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlURISetUser", &pyobj_URI, &user))
+ return(NULL);
+ URI = (xmlURIPtr) PyURI_Get(pyobj_URI);
+
+ if (URI->user != NULL) xmlFree(URI->user);
+ URI->user = (char *)xmlStrdup((const xmlChar *)user);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+PyObject *
+libxml_xmlURIUnescapeString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ char * c_retval;
+ char * str;
+ int len;
+ char * target;
+
+ if (!PyArg_ParseTuple(args, (char *)"ziz:xmlURIUnescapeString", &str, &len, &target))
+ return(NULL);
+
+ c_retval = xmlURIUnescapeString(str, len, target);
+ py_retval = libxml_charPtrWrap((char *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Charcmp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * utf1;
+ xmlChar * utf2;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlUTF8Charcmp", &utf1, &utf2))
+ return(NULL);
+
+ c_retval = xmlUTF8Charcmp(utf1, utf2);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Size(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * utf;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlUTF8Size", &utf))
+ return(NULL);
+
+ c_retval = xmlUTF8Size(utf);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Strlen(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * utf;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlUTF8Strlen", &utf))
+ return(NULL);
+
+ c_retval = xmlUTF8Strlen(utf);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Strloc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * utf;
+ xmlChar * utfchar;
+
+ if (!PyArg_ParseTuple(args, (char *)"zz:xmlUTF8Strloc", &utf, &utfchar))
+ return(NULL);
+
+ c_retval = xmlUTF8Strloc(utf, utfchar);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Strndup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * utf;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlUTF8Strndup", &utf, &len))
+ return(NULL);
+
+ c_retval = xmlUTF8Strndup(utf, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Strpos(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlChar * utf;
+ int pos;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlUTF8Strpos", &utf, &pos))
+ return(NULL);
+
+ c_retval = xmlUTF8Strpos(utf, pos);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Strsize(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * utf;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlUTF8Strsize", &utf, &len))
+ return(NULL);
+
+ c_retval = xmlUTF8Strsize(utf, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUTF8Strsub(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlChar * utf;
+ int start;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"zii:xmlUTF8Strsub", &utf, &start, &len))
+ return(NULL);
+
+ c_retval = xmlUTF8Strsub(utf, start, len);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+PyObject *
+libxml_xmlUnlinkNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlUnlinkNode", &pyobj_cur))
+ return(NULL);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ xmlUnlinkNode(cur);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlUnsetNsProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOz:xmlUnsetNsProp", &pyobj_node, &pyobj_ns, &name))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlUnsetNsProp(node, ns, name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlUnsetProp(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlUnsetProp", &pyobj_node, &name))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlUnsetProp(node, name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidCtxtNormalizeAttributeValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOzz:xmlValidCtxtNormalizeAttributeValue", &pyobj_ctxt, &pyobj_doc, &pyobj_elem, &name, &value))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlValidCtxtNormalizeAttributeValue(ctxt, doc, elem, name, value);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidNormalizeAttributeValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlChar * name;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOzz:xmlValidNormalizeAttributeValue", &pyobj_doc, &pyobj_elem, &name, &value))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlValidNormalizeAttributeValue(doc, elem, name, value);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateDocument(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlValidateDocument", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlValidateDocument(ctxt, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateDocumentFinal(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlValidateDocumentFinal", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlValidateDocumentFinal(ctxt, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateDtd(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlDtdPtr dtd;
+ PyObject *pyobj_dtd;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlValidateDtd", &pyobj_ctxt, &pyobj_doc, &pyobj_dtd))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ dtd = (xmlDtdPtr) PyxmlNode_Get(pyobj_dtd);
+
+ c_retval = xmlValidateDtd(ctxt, doc, dtd);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateDtdFinal(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlValidateDtdFinal", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlValidateDtdFinal(ctxt, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlValidateElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlValidateElement(ctxt, doc, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
+PyObject *
+libxml_xmlValidateNCName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+ int space;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlValidateNCName", &value, &space))
+ return(NULL);
+
+ c_retval = xmlValidateNCName(value, space);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlValidateNMToken(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+ int space;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlValidateNMToken", &value, &space))
+ return(NULL);
+
+ c_retval = xmlValidateNMToken(value, space);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlValidateName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+ int space;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlValidateName", &value, &space))
+ return(NULL);
+
+ c_retval = xmlValidateName(value, space);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateNameValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlValidateNameValue", &value))
+ return(NULL);
+
+ c_retval = xmlValidateNameValue(value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateNamesValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlValidateNamesValue", &value))
+ return(NULL);
+
+ c_retval = xmlValidateNamesValue(value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateNmtokenValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlValidateNmtokenValue", &value))
+ return(NULL);
+
+ c_retval = xmlValidateNmtokenValue(value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateNmtokensValue(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlValidateNmtokensValue", &value))
+ return(NULL);
+
+ c_retval = xmlValidateNmtokensValue(value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlValidateNotationUse(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlChar * notationName;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOz:xmlValidateNotationUse", &pyobj_ctxt, &pyobj_doc, &notationName))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlValidateNotationUse(ctxt, doc, notationName);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateOneAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlAttrPtr attr;
+ PyObject *pyobj_attr;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOOz:xmlValidateOneAttribute", &pyobj_ctxt, &pyobj_doc, &pyobj_elem, &pyobj_attr, &value))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+ attr = (xmlAttrPtr) PyxmlNode_Get(pyobj_attr);
+
+ c_retval = xmlValidateOneAttribute(ctxt, doc, elem, attr, value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateOneElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlValidateOneElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlValidateOneElement(ctxt, doc, elem);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateOneNamespace(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlChar * prefix;
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+ xmlChar * value;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOzOz:xmlValidateOneNamespace", &pyobj_ctxt, &pyobj_doc, &pyobj_elem, &prefix, &pyobj_ns, &value))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ c_retval = xmlValidateOneNamespace(ctxt, doc, elem, prefix, ns, value);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlValidatePopElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlChar * qname;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOz:xmlValidatePopElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem, &qname))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlValidatePopElement(ctxt, doc, elem, qname);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlValidatePushCData(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * data;
+ int len;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozi:xmlValidatePushCData", &pyobj_ctxt, &data, &len))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+
+ c_retval = xmlValidatePushCData(ctxt, data, len);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+PyObject *
+libxml_xmlValidatePushElement(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr elem;
+ PyObject *pyobj_elem;
+ xmlChar * qname;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOOz:xmlValidatePushElement", &pyobj_ctxt, &pyobj_doc, &pyobj_elem, &qname))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ elem = (xmlNodePtr) PyxmlNode_Get(pyobj_elem);
+
+ c_retval = xmlValidatePushElement(ctxt, doc, elem, qname);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlValidateQName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * value;
+ int space;
+
+ if (!PyArg_ParseTuple(args, (char *)"zi:xmlValidateQName", &value, &space))
+ return(NULL);
+
+ c_retval = xmlValidateQName(value, space);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject *
+libxml_xmlValidateRoot(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlValidCtxtPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlValidateRoot", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlValidateRoot(ctxt, doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject *
+libxml_xmlXIncludeProcess(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXIncludeProcess", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlXIncludeProcess(doc);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject *
+libxml_xmlXIncludeProcessFlags(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ int flags;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXIncludeProcessFlags", &pyobj_doc, &flags))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlXIncludeProcessFlags(doc, flags);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject *
+libxml_xmlXIncludeProcessTree(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr tree;
+ PyObject *pyobj_tree;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXIncludeProcessTree", &pyobj_tree))
+ return(NULL);
+ tree = (xmlNodePtr) PyxmlNode_Get(pyobj_tree);
+
+ c_retval = xmlXIncludeProcessTree(tree);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject *
+libxml_xmlXIncludeProcessTreeFlags(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr tree;
+ PyObject *pyobj_tree;
+ int flags;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXIncludeProcessTreeFlags", &pyobj_tree, &flags))
+ return(NULL);
+ tree = (xmlNodePtr) PyxmlNode_Get(pyobj_tree);
+
+ c_retval = xmlXIncludeProcessTreeFlags(tree, flags);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathAddValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathAddValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathAddValues(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathBooleanFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathBooleanFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathBooleanFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastBooleanToNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ double c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlXPathCastBooleanToNumber", &val))
+ return(NULL);
+
+ c_retval = xmlXPathCastBooleanToNumber(val);
+ py_retval = libxml_doubleWrap((double) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastBooleanToString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlXPathCastBooleanToString", &val))
+ return(NULL);
+
+ c_retval = xmlXPathCastBooleanToString(val);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastNodeToNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ double c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathCastNodeToNumber", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlXPathCastNodeToNumber(node);
+ py_retval = libxml_doubleWrap((double) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastNodeToString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathCastNodeToString", &pyobj_node))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ c_retval = xmlXPathCastNodeToString(node);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastNumberToBoolean(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ double val;
+
+ if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathCastNumberToBoolean", &val))
+ return(NULL);
+
+ c_retval = xmlXPathCastNumberToBoolean(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastNumberToString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ double val;
+
+ if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathCastNumberToString", &val))
+ return(NULL);
+
+ c_retval = xmlXPathCastNumberToString(val);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastStringToBoolean(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * val;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlXPathCastStringToBoolean", &val))
+ return(NULL);
+
+ c_retval = xmlXPathCastStringToBoolean(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCastStringToNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ double c_retval;
+ xmlChar * val;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlXPathCastStringToNumber", &val))
+ return(NULL);
+
+ c_retval = xmlXPathCastStringToNumber(val);
+ py_retval = libxml_doubleWrap((double) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCeilingFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathCeilingFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathCeilingFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCmpNodes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlNodePtr node1;
+ PyObject *pyobj_node1;
+ xmlNodePtr node2;
+ PyObject *pyobj_node2;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathCmpNodes", &pyobj_node1, &pyobj_node2))
+ return(NULL);
+ node1 = (xmlNodePtr) PyxmlNode_Get(pyobj_node1);
+ node2 = (xmlNodePtr) PyxmlNode_Get(pyobj_node2);
+
+ c_retval = xmlXPathCmpNodes(node1, node2);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCompareValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int inf;
+ int strict;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oii:xmlXPathCompareValues", &pyobj_ctxt, &inf, &strict))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathCompareValues(ctxt, inf, strict);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathConcatFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathConcatFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathConcatFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathContainsFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathContainsFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathContainsFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathContextSetCache(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int active;
+ int value;
+ int options;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oiii:xmlXPathContextSetCache", &pyobj_ctxt, &active, &value, &options))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathContextSetCache(ctxt, active, value, options);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathCountFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathCountFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathCountFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathDivValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathDivValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathDivValues(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathEqualValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathEqualValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathEqualValues(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathErr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int error;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathErr", &pyobj_ctxt, &error))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathErr(ctxt, error);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathEval(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlChar * str;
+ xmlXPathContextPtr ctx;
+ PyObject *pyobj_ctx;
+
+ if (!PyArg_ParseTuple(args, (char *)"zO:xmlXPathEval", &str, &pyobj_ctx))
+ return(NULL);
+ ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+
+ c_retval = xmlXPathEval(str, ctx);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathEvalExpr(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathEvalExpr", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathEvalExpr(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathEvalExpression(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlChar * str;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"zO:xmlXPathEvalExpression", &str, &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathEvalExpression(str, ctxt);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathFalseFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathFalseFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathFalseFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathFloorFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathFloorFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathFloorFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathFreeContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathFreeContext", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ xmlXPathFreeContext(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathFreeParserContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathFreeParserContext", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathFreeParserContext(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathGetContextDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlDocPtr c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathGetContextDoc", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->doc;
+ py_retval = libxml_xmlDocPtrWrap((xmlDocPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathGetContextNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathGetContextNode", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->node;
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathGetContextPosition(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathGetContextPosition", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->proximityPosition;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathGetContextSize(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathGetContextSize", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->contextSize;
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathGetFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathGetFunction", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->function;
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathGetFunctionURI(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathGetFunctionURI", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->functionURI;
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathIdFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathIdFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathIdFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlXPathInit(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUTE_UNUSED) {
+
+ xmlXPathInit();
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlXPathIsInf(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ double val;
+
+ if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathIsInf", &val))
+ return(NULL);
+
+ c_retval = xmlXPathIsInf(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject *
+libxml_xmlXPathIsNaN(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ double val;
+
+ if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathIsNaN", &val))
+ return(NULL);
+
+ c_retval = xmlXPathIsNaN(val);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathIsNodeType(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlXPathIsNodeType", &name))
+ return(NULL);
+
+ c_retval = xmlXPathIsNodeType(name);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathLangFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathLangFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathLangFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathLastFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathLastFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathLastFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathLocalNameFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathLocalNameFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathLocalNameFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathModValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathModValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathModValues(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathMultValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathMultValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathMultValues(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNamespaceURIFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathNamespaceURIFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathNamespaceURIFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewBoolean(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ int val;
+
+ if (!PyArg_ParseTuple(args, (char *)"i:xmlXPathNewBoolean", &val))
+ return(NULL);
+
+ c_retval = xmlXPathNewBoolean(val);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewCString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ char * val;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlXPathNewCString", &val))
+ return(NULL);
+
+ c_retval = xmlXPathNewCString(val);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathContextPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathNewContext", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlXPathNewContext(doc);
+ py_retval = libxml_xmlXPathContextPtrWrap((xmlXPathContextPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewFloat(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ double val;
+
+ if (!PyArg_ParseTuple(args, (char *)"d:xmlXPathNewFloat", &val))
+ return(NULL);
+
+ c_retval = xmlXPathNewFloat(val);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewNodeSet(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr val;
+ PyObject *pyobj_val;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathNewNodeSet", &pyobj_val))
+ return(NULL);
+ val = (xmlNodePtr) PyxmlNode_Get(pyobj_val);
+
+ c_retval = xmlXPathNewNodeSet(val);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewParserContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathParserContextPtr c_retval;
+ xmlChar * str;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"zO:xmlXPathNewParserContext", &str, &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathNewParserContext(str, ctxt);
+ py_retval = libxml_xmlXPathParserContextPtrWrap((xmlXPathParserContextPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlChar * val;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlXPathNewString", &val))
+ return(NULL);
+
+ c_retval = xmlXPathNewString(val);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNewValueTree(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr val;
+ PyObject *pyobj_val;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathNewValueTree", &pyobj_val))
+ return(NULL);
+ val = (xmlNodePtr) PyxmlNode_Get(pyobj_val);
+
+ c_retval = xmlXPathNewValueTree(val);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextAncestor(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextAncestor", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextAncestor(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextAncestorOrSelf(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextAncestorOrSelf", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextAncestorOrSelf(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextAttribute(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextAttribute", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextAttribute(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextChild(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextChild", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextChild(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextDescendant(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextDescendant", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextDescendant(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextDescendantOrSelf(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextDescendantOrSelf", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextDescendantOrSelf(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextFollowing(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextFollowing", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextFollowing(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextFollowingSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextFollowingSibling", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextFollowingSibling(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextNamespace(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextNamespace", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextNamespace(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextParent(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextParent", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextParent(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextPreceding(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextPreceding", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextPreceding(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextPrecedingSibling(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextPrecedingSibling", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextPrecedingSibling(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNextSelf(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlNodePtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr cur;
+ PyObject *pyobj_cur;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathNextSelf", &pyobj_ctxt, &pyobj_cur))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+ cur = (xmlNodePtr) PyxmlNode_Get(pyobj_cur);
+
+ c_retval = xmlXPathNextSelf(ctxt, cur);
+ py_retval = libxml_xmlNodePtrWrap((xmlNodePtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNodeEval(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+ xmlChar * str;
+ xmlXPathContextPtr ctx;
+ PyObject *pyobj_ctx;
+
+ if (!PyArg_ParseTuple(args, (char *)"OzO:xmlXPathNodeEval", &pyobj_node, &str, &pyobj_ctx))
+ return(NULL);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+ ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+
+ c_retval = xmlXPathNodeEval(node, str, ctx);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNodeSetFreeNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlNsPtr ns;
+ PyObject *pyobj_ns;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathNodeSetFreeNs", &pyobj_ns))
+ return(NULL);
+ ns = (xmlNsPtr) PyxmlNode_Get(pyobj_ns);
+
+ xmlXPathNodeSetFreeNs(ns);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNormalizeFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathNormalizeFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathNormalizeFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNotEqualValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathNotEqualValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathNotEqualValues(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNotFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathNotFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathNotFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNsLookup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ const xmlChar * c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * prefix;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlXPathNsLookup", &pyobj_ctxt, &prefix))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathNsLookup(ctxt, prefix);
+ py_retval = libxml_xmlCharPtrConstWrap((const xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathNumberFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathNumberFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathNumberFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathOrderDocElems(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ long c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathOrderDocElems", &pyobj_doc))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ c_retval = xmlXPathOrderDocElems(doc);
+ py_retval = libxml_longWrap((long) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathParseNCName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathParseNCName", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathParseNCName(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathParseName(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathParseName", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathParseName(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathParserGetContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathContextPtr c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathParserGetContext", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = ctxt->context;
+ py_retval = libxml_xmlXPathContextPtrWrap((xmlXPathContextPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathPopBoolean(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathPopBoolean", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathPopBoolean(ctxt);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathPopNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ double c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathPopNumber", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathPopNumber(ctxt);
+ py_retval = libxml_doubleWrap((double) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathPopString(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlChar * c_retval;
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathPopString", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathPopString(ctxt);
+ py_retval = libxml_xmlCharPtrWrap((xmlChar *) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathPositionFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathPositionFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathPositionFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRegisterAllFunctions(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathRegisterAllFunctions", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ xmlXPathRegisterAllFunctions(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRegisterNs(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ int c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * prefix;
+ xmlChar * ns_uri;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlXPathRegisterNs", &pyobj_ctxt, &prefix, &ns_uri))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathRegisterNs(ctxt, prefix, ns_uri);
+ py_retval = libxml_intWrap((int) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+#endif
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRegisteredFuncsCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathRegisteredFuncsCleanup", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ xmlXPathRegisteredFuncsCleanup(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRegisteredNsCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathRegisteredNsCleanup", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ xmlXPathRegisteredNsCleanup(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRegisteredVariablesCleanup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathRegisteredVariablesCleanup", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ xmlXPathRegisteredVariablesCleanup(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRoot(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathRoot", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathRoot(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathRoundFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathRoundFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathRoundFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSetContextDoc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathSetContextDoc", &pyobj_ctxt, &pyobj_doc))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+
+ ctxt->doc = doc;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSetContextNode(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlNodePtr node;
+ PyObject *pyobj_node;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPathSetContextNode", &pyobj_ctxt, &pyobj_node))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+ node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+ ctxt->node = node;
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathStartsWithFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathStartsWithFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathStartsWithFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathStringEvalNumber(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ double c_retval;
+ xmlChar * str;
+
+ if (!PyArg_ParseTuple(args, (char *)"z:xmlXPathStringEvalNumber", &str))
+ return(NULL);
+
+ c_retval = xmlXPathStringEvalNumber(str);
+ py_retval = libxml_doubleWrap((double) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathStringFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathStringFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathStringFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathStringLengthFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathStringLengthFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathStringLengthFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSubValues(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathSubValues", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathSubValues(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSubstringAfterFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathSubstringAfterFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathSubstringAfterFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSubstringBeforeFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathSubstringBeforeFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathSubstringBeforeFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSubstringFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathSubstringFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathSubstringFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathSumFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathSumFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathSumFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathTranslateFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathTranslateFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathTranslateFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathTrueFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPathTrueFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathTrueFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathValueFlipSign(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPathValueFlipSign", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPathValueFlipSign(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathVariableLookup(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * name;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oz:xmlXPathVariableLookup", &pyobj_ctxt, &name))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathVariableLookup(ctxt, name);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPathVariableLookupNS(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlXPathContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ xmlChar * name;
+ xmlChar * ns_uri;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozz:xmlXPathVariableLookupNS", &pyobj_ctxt, &name, &ns_uri))
+ return(NULL);
+ ctxt = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctxt);
+
+ c_retval = xmlXPathVariableLookupNS(ctxt, name, ns_uri);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject *
+libxml_xmlXPatherror(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ char * file;
+ int line;
+ int no;
+
+ if (!PyArg_ParseTuple(args, (char *)"Ozii:xmlXPatherror", &pyobj_ctxt, &file, &line, &no))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPatherror(ctxt, file, line, no);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrEval(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlChar * str;
+ xmlXPathContextPtr ctx;
+ PyObject *pyobj_ctx;
+
+ if (!PyArg_ParseTuple(args, (char *)"zO:xmlXPtrEval", &str, &pyobj_ctx))
+ return(NULL);
+ ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+
+ c_retval = xmlXPtrEval(str, ctx);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrEvalRangePredicate(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPtrEvalRangePredicate", &pyobj_ctxt))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPtrEvalRangePredicate(ctxt);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrNewCollapsedRange(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr start;
+ PyObject *pyobj_start;
+
+ if (!PyArg_ParseTuple(args, (char *)"O:xmlXPtrNewCollapsedRange", &pyobj_start))
+ return(NULL);
+ start = (xmlNodePtr) PyxmlNode_Get(pyobj_start);
+
+ c_retval = xmlXPtrNewCollapsedRange(start);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrNewContext(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathContextPtr c_retval;
+ xmlDocPtr doc;
+ PyObject *pyobj_doc;
+ xmlNodePtr here;
+ PyObject *pyobj_here;
+ xmlNodePtr origin;
+ PyObject *pyobj_origin;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOO:xmlXPtrNewContext", &pyobj_doc, &pyobj_here, &pyobj_origin))
+ return(NULL);
+ doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+ here = (xmlNodePtr) PyxmlNode_Get(pyobj_here);
+ origin = (xmlNodePtr) PyxmlNode_Get(pyobj_origin);
+
+ c_retval = xmlXPtrNewContext(doc, here, origin);
+ py_retval = libxml_xmlXPathContextPtrWrap((xmlXPathContextPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrNewLocationSetNodes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr start;
+ PyObject *pyobj_start;
+ xmlNodePtr end;
+ PyObject *pyobj_end;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPtrNewLocationSetNodes", &pyobj_start, &pyobj_end))
+ return(NULL);
+ start = (xmlNodePtr) PyxmlNode_Get(pyobj_start);
+ end = (xmlNodePtr) PyxmlNode_Get(pyobj_end);
+
+ c_retval = xmlXPtrNewLocationSetNodes(start, end);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrNewRange(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr start;
+ PyObject *pyobj_start;
+ int startindex;
+ xmlNodePtr end;
+ PyObject *pyobj_end;
+ int endindex;
+
+ if (!PyArg_ParseTuple(args, (char *)"OiOi:xmlXPtrNewRange", &pyobj_start, &startindex, &pyobj_end, &endindex))
+ return(NULL);
+ start = (xmlNodePtr) PyxmlNode_Get(pyobj_start);
+ end = (xmlNodePtr) PyxmlNode_Get(pyobj_end);
+
+ c_retval = xmlXPtrNewRange(start, startindex, end, endindex);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrNewRangeNodes(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ PyObject *py_retval;
+ xmlXPathObjectPtr c_retval;
+ xmlNodePtr start;
+ PyObject *pyobj_start;
+ xmlNodePtr end;
+ PyObject *pyobj_end;
+
+ if (!PyArg_ParseTuple(args, (char *)"OO:xmlXPtrNewRangeNodes", &pyobj_start, &pyobj_end))
+ return(NULL);
+ start = (xmlNodePtr) PyxmlNode_Get(pyobj_start);
+ end = (xmlNodePtr) PyxmlNode_Get(pyobj_end);
+
+ c_retval = xmlXPtrNewRangeNodes(start, end);
+ py_retval = libxml_xmlXPathObjectPtrWrap((xmlXPathObjectPtr) c_retval);
+ return(py_retval);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject *
+libxml_xmlXPtrRangeToFunction(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+ xmlXPathParserContextPtr ctxt;
+ PyObject *pyobj_ctxt;
+ int nargs;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:xmlXPtrRangeToFunction", &pyobj_ctxt, &nargs))
+ return(NULL);
+ ctxt = (xmlXPathParserContextPtr) PyxmlXPathParserContext_Get(pyobj_ctxt);
+
+ xmlXPtrRangeToFunction(ctxt, nargs);
+ Py_INCREF(Py_None);
+ return(Py_None);
+}
+
+#endif /* defined(LIBXML_XPTR_ENABLED) */
diff --git a/python/libxml2-py.h b/python/libxml2-py.h
new file mode 100644
index 0000000..9787b0d
--- /dev/null
+++ b/python/libxml2-py.h
@@ -0,0 +1,2063 @@
+/* Generated */
+
+#if defined(LIBXML_DOCB_ENABLED)
+PyObject * libxml_docbDefaultSAXHandlerInit(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DOCB_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlAutoCloseTag(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCreateFileParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCreateMemoryParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCreatePushParser(PyObject *self, PyObject *args);
+#endif
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCtxtReadDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCtxtReadFd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCtxtReadFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCtxtReadMemory(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCtxtReset(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlCtxtUseOptions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlDefaultSAXHandlerInit(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlDocContentDumpFormatOutput(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlDocContentDumpOutput(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlDocDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlFreeParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlGetMetaEncoding(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlHandleOmittedElem(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlInitAutoClose(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlIsAutoClosed(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlIsBooleanAttr(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlIsScriptAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlNewDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlNewDocNoDtD(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlNewParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlNodeDumpFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlNodeDumpFileFormat(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlNodeDumpFormatOutput(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlNodeDumpOutput(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlParseCharRef(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
+PyObject * libxml_htmlParseChunk(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlParseDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlParseDocument(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlParseElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlParseFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlReadDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlReadFd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlReadFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlReadMemory(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlSAXParseFile(PyObject *self, PyObject *args);
+#endif
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlSaveFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlSaveFileEnc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_htmlSaveFileFormat(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_htmlSetMetaEncoding(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTML_ENABLED) */
+PyObject * libxml_namePop(PyObject *self, PyObject *args);
+PyObject * libxml_namePush(PyObject *self, PyObject *args);
+PyObject * libxml_nodePop(PyObject *self, PyObject *args);
+PyObject * libxml_nodePush(PyObject *self, PyObject *args);
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_valuePop(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlACatalogAdd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlACatalogDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlACatalogRemove(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlACatalogResolve(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlACatalogResolvePublic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlACatalogResolveSystem(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlACatalogResolveURI(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlAddChild(PyObject *self, PyObject *args);
+PyObject * libxml_xmlAddChildList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlAddDocEntity(PyObject *self, PyObject *args);
+PyObject * libxml_xmlAddDtdEntity(PyObject *self, PyObject *args);
+PyObject * libxml_xmlAddEncodingAlias(PyObject *self, PyObject *args);
+PyObject * libxml_xmlAddNextSibling(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+PyObject * libxml_xmlAddPrevSibling(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) */
+PyObject * libxml_xmlAddSibling(PyObject *self, PyObject *args);
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlBoolToText(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+PyObject * libxml_xmlBuildQName(PyObject *self, PyObject *args);
+PyObject * libxml_xmlBuildRelativeURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlBuildURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlByteConsumed(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCanonicPath(PyObject *self, PyObject *args);
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogAdd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogCleanup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogConvert(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlCatalogDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogGetPublic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogGetSystem(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogIsEmpty(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogRemove(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogResolve(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogResolvePublic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogResolveSystem(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogResolveURI(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlCatalogSetDebug(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlCharStrdup(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCharStrndup(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCheckFilename(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCheckLanguageID(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCheckUTF8(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCheckVersion(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCleanupCharEncodingHandlers(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCleanupEncodingAliases(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCleanupGlobals(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCleanupInputCallbacks(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlCleanupOutputCallbacks(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlCleanupPredefinedEntities(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlClearParserCtxt(PyObject *self, PyObject *args);
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlConvertSGMLCatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlCopyChar(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyCharMultiByte(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlCopyDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlCopyDtd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlCopyError(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyNamespace(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyNamespaceList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyNode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyNodeList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyProp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCopyPropList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateDocParserCtxt(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateEntityParserCtxt(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateFileParserCtxt(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateInputBuffer(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateIntSubset(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateMemoryParserCtxt(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateOutputBuffer(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreatePushParser(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCreateURLParserCtxt(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtReadDoc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtReadFd(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtReadFile(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtReadMemory(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtReset(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtResetPush(PyObject *self, PyObject *args);
+PyObject * libxml_xmlCtxtUseOptions(PyObject *self, PyObject *args);
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugCheckDocument(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpAttr(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpAttrList(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpDTD(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpDocument(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpDocumentHead(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpEntities(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpNodeList(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpOneNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlDebugDumpString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+PyObject * libxml_xmlDebugMemory(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlDecodeEntities(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlDefaultSAXHandlerInit(PyObject *self, PyObject *args);
+PyObject * libxml_xmlDelEncodingAlias(PyObject *self, PyObject *args);
+PyObject * libxml_xmlDictCleanup(PyObject *self, PyObject *args);
+PyObject * libxml_xmlDocCopyNode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlDocCopyNodeList(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlDocDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlDocFormatDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject * libxml_xmlDocGetRootElement(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+PyObject * libxml_xmlDocSetRootElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
+PyObject * libxml_xmlDumpMemory(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlElemDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlEncodeEntities(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlEncodeEntitiesReentrant(PyObject *self, PyObject *args);
+PyObject * libxml_xmlEncodeSpecialChars(PyObject *self, PyObject *args);
+PyObject * libxml_xmlErrorGetCode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlErrorGetDomain(PyObject *self, PyObject *args);
+PyObject * libxml_xmlErrorGetFile(PyObject *self, PyObject *args);
+PyObject * libxml_xmlErrorGetLevel(PyObject *self, PyObject *args);
+PyObject * libxml_xmlErrorGetLine(PyObject *self, PyObject *args);
+PyObject * libxml_xmlErrorGetMessage(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFileMatch(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlFirstElementChild(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlFreeCatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlFreeDoc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeDtd(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeNode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeNodeList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeNs(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeNsList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeParserInputBuffer(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeProp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreePropList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlFreeURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetCompressMode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDocCompressMode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDocEntity(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDtdAttrDesc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDtdElementDesc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDtdEntity(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDtdQAttrDesc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetDtdQElementDesc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetEncodingAlias(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetID(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetIntSubset(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetLastChild(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetLastError(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetLineNo(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetNoNsProp(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlGetNodePath(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
+PyObject * libxml_xmlGetNsProp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetParameterEntity(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetPredefinedEntity(PyObject *self, PyObject *args);
+PyObject * libxml_xmlGetProp(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlHandleEntity(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlHasNsProp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlHasProp(PyObject *self, PyObject *args);
+#if defined(LIBXML_FTP_ENABLED)
+PyObject * libxml_xmlIOFTPMatch(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject * libxml_xmlIOHTTPMatch(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+PyObject * libxml_xmlInitCharEncodingHandlers(PyObject *self, PyObject *args);
+PyObject * libxml_xmlInitGlobals(PyObject *self, PyObject *args);
+PyObject * libxml_xmlInitParser(PyObject *self, PyObject *args);
+PyObject * libxml_xmlInitParserCtxt(PyObject *self, PyObject *args);
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlInitializeCatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlInitializeDict(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlInitializePredefinedEntities(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlIsBaseChar(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsBlank(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsBlankNode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsChar(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsCombining(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsDigit(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsExtender(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsID(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsIdeographic(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsLetter(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsMixedElement(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsPubidChar(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsRef(PyObject *self, PyObject *args);
+PyObject * libxml_xmlIsXHTML(PyObject *self, PyObject *args);
+PyObject * libxml_xmlKeepBlanksDefault(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlLastElementChild(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlLineNumbersDefault(PyObject *self, PyObject *args);
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlLoadACatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlLoadCatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlLoadCatalogs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlLoadSGMLSuperCatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlLsCountNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED)
+PyObject * libxml_xmlLsOneNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) */
+PyObject * libxml_xmlMemoryUsed(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlNamespaceParseNCName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlNamespaceParseNSDef(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject * libxml_xmlNanoFTPCleanup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject * libxml_xmlNanoFTPInit(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject * libxml_xmlNanoFTPProxy(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_FTP_ENABLED)
+PyObject * libxml_xmlNanoFTPScanProxy(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_FTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject * libxml_xmlNanoHTTPCleanup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject * libxml_xmlNanoHTTPInit(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_HTTP_ENABLED)
+PyObject * libxml_xmlNanoHTTPScanProxy(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_HTTP_ENABLED) */
+PyObject * libxml_xmlNewCDataBlock(PyObject *self, PyObject *args);
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlNewCatalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlNewCharRef(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlNewChild(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject * libxml_xmlNewComment(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDoc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDocComment(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNewDocFragment(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlNewDocNode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDocNodeEatName(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDocPI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDocProp(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNewDocRawNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlNewDocText(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDocTextLen(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewDtd(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewEntity(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlNewGlobalNs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlNewNode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewNodeEatName(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewNs(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewNsProp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewNsPropEatName(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewPI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewParserCtxt(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlNewProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject * libxml_xmlNewReference(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNewText(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNewTextChild(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlNewTextLen(PyObject *self, PyObject *args);
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlNewTextReader(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlNewTextReaderFilename(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlNewValidCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+PyObject * libxml_xmlNextChar(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNextElementSibling(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlNodeAddContent(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeAddContentLen(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlNodeDumpOutput(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject * libxml_xmlNodeGetBase(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeGetContent(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeGetLang(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeGetNs(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeGetNsDefs(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeGetSpacePreserve(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeIsText(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNodeListGetRawString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlNodeListGetString(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+PyObject * libxml_xmlNodeSetBase(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) */
+PyObject * libxml_xmlNodeSetContent(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNodeSetContentLen(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNodeSetLang(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNodeSetName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlNodeSetSpacePreserve(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlNormalizeURIPath(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNormalizeWindowsPath(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlOutputBufferGetContent(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlOutputBufferWrite(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlOutputBufferWriteString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject * libxml_xmlParseAttValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseAttributeListDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseCDSect(PyObject *self, PyObject *args);
+#if defined(LIBXML_CATALOG_ENABLED)
+PyObject * libxml_xmlParseCatalogFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_CATALOG_ENABLED) */
+PyObject * libxml_xmlParseCharData(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseCharRef(PyObject *self, PyObject *args);
+#if defined(LIBXML_PUSH_ENABLED)
+PyObject * libxml_xmlParseChunk(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_PUSH_ENABLED) */
+PyObject * libxml_xmlParseComment(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseContent(PyObject *self, PyObject *args);
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlParseDTD(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlParseDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject * libxml_xmlParseDocTypeDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseDocument(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseElement(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseElementDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseEncName(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseEncodingDecl(PyObject *self, PyObject *args);
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlParseEndTag(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlParseEntity(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject * libxml_xmlParseEntityDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseEntityRef(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseExtParsedEnt(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseExternalSubset(PyObject *self, PyObject *args);
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlParseFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject * libxml_xmlParseMarkupDecl(PyObject *self, PyObject *args);
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlParseMemory(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject * libxml_xmlParseMisc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseName(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlParseNamespace(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlParseNmtoken(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseNotationDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParsePEReference(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParsePI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParsePITarget(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParsePubidLiteral(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlParseQuotedString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlParseReference(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseSDDecl(PyObject *self, PyObject *args);
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlParseStartTag(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject * libxml_xmlParseSystemLiteral(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseTextDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseURIRaw(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseURIReference(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseVersionInfo(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseVersionNum(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParseXMLDecl(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserGetDirectory(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserGetDoc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserGetIsValid(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserGetWellFormed(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserHandlePEReference(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlParserHandleReference(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+PyObject * libxml_xmlParserInputBufferGrow(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserInputBufferPush(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserInputBufferRead(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserSetLineNumbers(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserSetLoadSubset(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserSetPedantic(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserSetReplaceEntities(PyObject *self, PyObject *args);
+PyObject * libxml_xmlParserSetValidate(PyObject *self, PyObject *args);
+PyObject * libxml_xmlPathToURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlPedanticParserDefault(PyObject *self, PyObject *args);
+PyObject * libxml_xmlPopInput(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlPreviousElementSibling(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+PyObject * libxml_xmlPrintURI(PyObject *self, PyObject *args);
+PyObject * libxml_xmlPythonCleanupParser(PyObject *self, PyObject *args);
+PyObject * libxml_xmlReadDoc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlReadFd(PyObject *self, PyObject *args);
+PyObject * libxml_xmlReadFile(PyObject *self, PyObject *args);
+PyObject * libxml_xmlReadMemory(PyObject *self, PyObject *args);
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderForDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderForFd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderForFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderForMemory(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderNewDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderNewFd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderNewFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderNewMemory(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderNewWalker(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlReaderWalker(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED)
+PyObject * libxml_xmlReconciliateNs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlRecoverDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlRecoverFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlRecoverMemory(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlRegFreeRegexp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlRegexpCompile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlRegexpExec(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlRegexpIsDeterminist(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlRegexpPrint(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_REGEXP_ENABLED) */
+PyObject * libxml_xmlRegisterDefaultInputCallbacks(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlRegisterDefaultOutputCallbacks(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED)
+PyObject * libxml_xmlRegisterHTTPPostCallbacks(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlRegisterXPathFunction(PyObject *self, PyObject *args);
+#endif
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGCleanupTypes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlRelaxNGDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlRelaxNGDumpTree(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGFree(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGFreeParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGInitTypes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGNewDocParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGNewMemParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGNewParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGNewValidCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGParse(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGValidateDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGValidateFullElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGValidatePopElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGValidatePushCData(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxNGValidatePushElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlRelaxParserSetFlag(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject * libxml_xmlRemoveID(PyObject *self, PyObject *args);
+PyObject * libxml_xmlRemoveProp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlRemoveRef(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+PyObject * libxml_xmlReplaceNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
+PyObject * libxml_xmlResetError(PyObject *self, PyObject *args);
+PyObject * libxml_xmlResetLastError(PyObject *self, PyObject *args);
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlSAXDefaultVersion(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+PyObject * libxml_xmlSAXParseFile(PyObject *self, PyObject *args);
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlSaveFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlSaveFileEnc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlSaveFormatFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlSaveFormatFileEnc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_OUTPUT_ENABLED) */
+PyObject * libxml_xmlSaveUri(PyObject *self, PyObject *args);
+#if defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlScanName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaCleanupTypes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaCollapseString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlSchemaDump(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaFree(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaFreeParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaInitTypes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaIsValid(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaNewDocParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaNewMemParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaNewParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaNewValidCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaParse(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaSetValidOptions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaValidCtxtGetOptions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaValidCtxtGetParserCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaValidateDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaValidateFile(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaValidateOneElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaValidateSetFilename(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlSchemaWhiteSpaceReplace(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SCHEMAS_ENABLED) */
+PyObject * libxml_xmlSearchNs(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSearchNsByHref(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSetCompressMode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSetDocCompressMode(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSetEntityLoader(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSetListDoc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSetNs(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_xmlSetNsProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+PyObject * libxml_xmlSetProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
+PyObject * libxml_xmlSetTreeDoc(PyObject *self, PyObject *args);
+#if defined(LIBXML_SAX1_ENABLED)
+PyObject * libxml_xmlSetupParserForBuffer(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_SAX1_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+PyObject * libxml_xmlShellPrintNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED) */
+#if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlShellPrintXPathError(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) */
+PyObject * libxml_xmlSkipBlankChars(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStopParser(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrEqual(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrQEqual(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrcasecmp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrcasestr(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrcat(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrchr(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrcmp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrdup(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStringDecodeEntities(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStringGetNodeList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStringLenDecodeEntities(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStringLenGetNodeList(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrlen(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrncasecmp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrncat(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrncatNew(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrncmp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrndup(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrstr(PyObject *self, PyObject *args);
+PyObject * libxml_xmlStrsub(PyObject *self, PyObject *args);
+PyObject * libxml_xmlSubstituteEntitiesDefault(PyObject *self, PyObject *args);
+PyObject * libxml_xmlTextConcat(PyObject *self, PyObject *args);
+PyObject * libxml_xmlTextMerge(PyObject *self, PyObject *args);
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderAttributeCount(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderByteConsumed(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderClose(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstBaseUri(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstEncoding(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstLocalName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstNamespaceUri(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstPrefix(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstXmlLang(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderConstXmlVersion(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderCurrentDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderCurrentNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderDepth(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderExpand(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetAttributeNo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetAttributeNs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetParserColumnNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetParserLineNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetParserProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderGetRemainder(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderHasAttributes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderHasValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderIsDefault(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderIsEmptyElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderIsNamespaceDecl(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderIsValid(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderLocatorBaseURI(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderLocatorLineNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderLookupNamespace(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderMoveToAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderMoveToAttributeNo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderMoveToAttributeNs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderMoveToElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderMoveToFirstAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderMoveToNextAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderNext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderNextSibling(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderNodeType(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderNormalization(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderPreserve(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderQuoteChar(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderRead(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderReadAttributeValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED)
+PyObject * libxml_xmlTextReaderReadInnerXml(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED)
+PyObject * libxml_xmlTextReaderReadOuterXml(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_WRITER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderReadState(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderReadString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlTextReaderRelaxNGSetSchema(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlTextReaderRelaxNGValidate(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlTextReaderRelaxNGValidateCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlTextReaderSchemaValidate(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlTextReaderSchemaValidateCtxt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderSetParserProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlTextReaderSetSchema(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderSetup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+#if defined(LIBXML_READER_ENABLED)
+PyObject * libxml_xmlTextReaderStandalone(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_READER_ENABLED) */
+PyObject * libxml_xmlThrDefDefaultBufferSize(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefDoValidityCheckingDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefGetWarningsDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefIndentTreeOutput(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefKeepBlanksDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefLineNumbersDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefLoadExtDtdDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefParserDebugEntities(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefPedanticParserDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefSaveNoEmptyTags(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefSubstituteEntitiesDefaultValue(PyObject *self, PyObject *args);
+PyObject * libxml_xmlThrDefTreeIndentString(PyObject *self, PyObject *args);
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsAegeanNumbers(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsAlphabeticPresentationForms(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsArabic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsArabicPresentationFormsA(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsArabicPresentationFormsB(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsArmenian(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsArrows(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBasicLatin(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBengali(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBlock(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBlockElements(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBopomofo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBopomofoExtended(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBoxDrawing(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBraillePatterns(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsBuhid(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsByzantineMusicalSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKCompatibility(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKCompatibilityForms(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKCompatibilityIdeographs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKCompatibilityIdeographsSupplement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKRadicalsSupplement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKSymbolsandPunctuation(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKUnifiedIdeographs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKUnifiedIdeographsExtensionA(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCJKUnifiedIdeographsExtensionB(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCat(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatC(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatCc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatCf(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatCo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatCs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatL(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatLl(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatLm(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatLo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatLt(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatLu(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatM(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatMc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatMe(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatMn(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatN(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatNd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatNl(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatNo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatP(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPe(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPf(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPi(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatPs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatS(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatSc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatSk(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatSm(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatSo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatZ(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatZl(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatZp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCatZs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCherokee(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCombiningDiacriticalMarks(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCombiningDiacriticalMarksforSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCombiningHalfMarks(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCombiningMarksforSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsControlPictures(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCurrencySymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCypriotSyllabary(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCyrillic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsCyrillicSupplement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsDeseret(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsDevanagari(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsDingbats(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsEnclosedAlphanumerics(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsEnclosedCJKLettersandMonths(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsEthiopic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGeneralPunctuation(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGeometricShapes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGeorgian(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGothic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGreek(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGreekExtended(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGreekandCoptic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGujarati(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsGurmukhi(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHalfwidthandFullwidthForms(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHangulCompatibilityJamo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHangulJamo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHangulSyllables(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHanunoo(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHebrew(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHighPrivateUseSurrogates(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHighSurrogates(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsHiragana(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsIPAExtensions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsIdeographicDescriptionCharacters(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKanbun(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKangxiRadicals(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKannada(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKatakana(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKatakanaPhoneticExtensions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKhmer(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsKhmerSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLao(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLatin1Supplement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLatinExtendedA(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLatinExtendedAdditional(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLatinExtendedB(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLetterlikeSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLimbu(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLinearBIdeograms(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLinearBSyllabary(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsLowSurrogates(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMalayalam(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMathematicalAlphanumericSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMathematicalOperators(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMiscellaneousMathematicalSymbolsA(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMiscellaneousMathematicalSymbolsB(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMiscellaneousSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMiscellaneousSymbolsandArrows(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMiscellaneousTechnical(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMongolian(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMusicalSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsMyanmar(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsNumberForms(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsOgham(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsOldItalic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsOpticalCharacterRecognition(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsOriya(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsOsmanya(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsPhoneticExtensions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsPrivateUse(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsPrivateUseArea(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsRunic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsShavian(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSinhala(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSmallFormVariants(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSpacingModifierLetters(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSpecials(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSuperscriptsandSubscripts(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSupplementalArrowsA(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSupplementalArrowsB(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSupplementalMathematicalOperators(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSupplementaryPrivateUseAreaA(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSupplementaryPrivateUseAreaB(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsSyriac(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTagalog(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTagbanwa(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTags(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTaiLe(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTaiXuanJingSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTamil(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTelugu(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsThaana(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsThai(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsTibetan(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsUgaritic(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsUnifiedCanadianAboriginalSyllabics(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsVariationSelectors(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsVariationSelectorsSupplement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsYiRadicals(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsYiSyllables(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+#if defined(LIBXML_UNICODE_ENABLED)
+PyObject * libxml_xmlUCSIsYijingHexagramSymbols(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_UNICODE_ENABLED) */
+PyObject * libxml_xmlURIEscape(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIEscapeStr(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetAuthority(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetFragment(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetOpaque(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetPath(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetPort(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetQuery(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetQueryRaw(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetScheme(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetServer(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIGetUser(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetAuthority(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetFragment(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetOpaque(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetPath(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetPort(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetQuery(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetQueryRaw(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetScheme(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetServer(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURISetUser(PyObject *self, PyObject *args);
+PyObject * libxml_xmlURIUnescapeString(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Charcmp(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Size(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Strlen(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Strloc(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Strndup(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Strpos(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Strsize(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUTF8Strsub(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUnlinkNode(PyObject *self, PyObject *args);
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlUnsetNsProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlUnsetProp(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidCtxtNormalizeAttributeValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidNormalizeAttributeValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateDocument(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateDocumentFinal(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateDtd(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateDtdFinal(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
+PyObject * libxml_xmlValidateNCName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlValidateNMToken(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlValidateName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateNameValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateNamesValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateNmtokenValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateNmtokensValue(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlValidateNotationUse(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateOneAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateOneElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateOneNamespace(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlValidatePopElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlValidatePushCData(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+PyObject * libxml_xmlValidatePushElement(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED) */
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlValidateQName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_VALID_ENABLED)
+PyObject * libxml_xmlValidateRoot(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_VALID_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject * libxml_xmlXIncludeProcess(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject * libxml_xmlXIncludeProcessFlags(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject * libxml_xmlXIncludeProcessTree(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XINCLUDE_ENABLED)
+PyObject * libxml_xmlXIncludeProcessTreeFlags(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XINCLUDE_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathAddValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathBooleanFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastBooleanToNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastBooleanToString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastNodeToNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastNodeToString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastNumberToBoolean(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastNumberToString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastStringToBoolean(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCastStringToNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCeilingFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCmpNodes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCompareValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathConcatFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathContainsFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathContextSetCache(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathCountFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathDivValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathEqualValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathErr(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathEval(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathEvalExpr(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathEvalExpression(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathFalseFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathFloorFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathFreeContext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathFreeParserContext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathGetContextDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathGetContextNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathGetContextPosition(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathGetContextSize(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathGetFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathGetFunctionURI(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathIdFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlXPathInit(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlXPathIsInf(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+PyObject * libxml_xmlXPathIsNaN(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathIsNodeType(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathLangFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathLastFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathLocalNameFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathModValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathMultValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNamespaceURIFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewBoolean(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewCString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewContext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewFloat(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewNodeSet(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewParserContext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNewValueTree(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextAncestor(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextAncestorOrSelf(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextAttribute(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextChild(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextDescendant(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextDescendantOrSelf(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextFollowing(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextFollowingSibling(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextNamespace(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextParent(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextPreceding(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextPrecedingSibling(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNextSelf(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNodeEval(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNodeSetFreeNs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNormalizeFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNotEqualValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNotFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNsLookup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathNumberFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathOrderDocElems(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathParseNCName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathParseName(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathParserGetContext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathPopBoolean(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathPopNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathPopString(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathPositionFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRegisterAllFunctions(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRegisterNs(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRegisterVariable(PyObject *self, PyObject *args);
+#endif
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRegisteredFuncsCleanup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRegisteredNsCleanup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRegisteredVariablesCleanup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRoot(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathRoundFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSetContextDoc(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSetContextNode(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathStartsWithFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathStringEvalNumber(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathStringFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathStringLengthFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSubValues(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSubstringAfterFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSubstringBeforeFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSubstringFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathSumFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathTranslateFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathTrueFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathValueFlipSign(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathVariableLookup(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPathVariableLookupNS(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPATH_ENABLED)
+PyObject * libxml_xmlXPatherror(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPATH_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrEval(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrEvalRangePredicate(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrNewCollapsedRange(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrNewContext(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrNewLocationSetNodes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrNewRange(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrNewRangeNodes(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
+#if defined(LIBXML_XPTR_ENABLED)
+PyObject * libxml_xmlXPtrRangeToFunction(PyObject *self, PyObject *args);
+#endif /* defined(LIBXML_XPTR_ENABLED) */
diff --git a/python/libxml2-python-api.xml b/python/libxml2-python-api.xml
index 42f661d..032b44b 100644
--- a/python/libxml2-python-api.xml
+++ b/python/libxml2-python-api.xml
@@ -10,6 +10,15 @@
<arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
<arg name='f' type='pythonObject' info='the python function'/>
</function>
+ <function name='xmlXPathRegisterVariable' file='python'>
+ <cond>defined(LIBXML_XPATH_ENABLED)</cond>
+ <info>Register a variable with the XPath context</info>
+ <return type='int' info="1 in case of success, 0 or -1 in case of error"/>
+ <arg name='ctx' type='xmlXPathContextPtr' info='the xpathContext'/>
+ <arg name='name' type='xmlChar *' info='the variable name'/>
+ <arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
+ <arg name='value' type='pythonObject' info='the value'/>
+ </function>
<function name='xmlNewNode' file='python'>
<info>Create a new Node</info>
<return type='xmlNodePtr' info="A new element node"/>
diff --git a/python/libxml2.py b/python/libxml2.py
new file mode 100644
index 0000000..76b8dcd
--- /dev/null
+++ b/python/libxml2.py
@@ -0,0 +1,9319 @@
+import libxml2mod
+import types
+import sys
+
+# The root of all libxml2 errors.
+class libxmlError(Exception): pass
+
+# Type of the wrapper class for the C objects wrappers
+def checkWrapper(obj):
+ try:
+ n = type(_obj).__name__
+ if n != 'PyCObject' and n != 'PyCapsule':
+ return 1
+ except:
+ return 0
+ return 0
+
+#
+# id() is sometimes negative ...
+#
+def pos_id(o):
+ i = id(o)
+ if (i < 0):
+ return (sys.maxsize - i)
+ return i
+
+#
+# Errors raised by the wrappers when some tree handling failed.
+#
+class treeError(libxmlError):
+ def __init__(self, msg):
+ self.msg = msg
+ def __str__(self):
+ return self.msg
+
+class parserError(libxmlError):
+ def __init__(self, msg):
+ self.msg = msg
+ def __str__(self):
+ return self.msg
+
+class uriError(libxmlError):
+ def __init__(self, msg):
+ self.msg = msg
+ def __str__(self):
+ return self.msg
+
+class xpathError(libxmlError):
+ def __init__(self, msg):
+ self.msg = msg
+ def __str__(self):
+ return self.msg
+
+class ioWrapper:
+ def __init__(self, _obj):
+ self.__io = _obj
+ self._o = None
+
+ def io_close(self):
+ if self.__io == None:
+ return(-1)
+ self.__io.close()
+ self.__io = None
+ return(0)
+
+ def io_flush(self):
+ if self.__io == None:
+ return(-1)
+ self.__io.flush()
+ return(0)
+
+ def io_read(self, len = -1):
+ if self.__io == None:
+ return(-1)
+ try:
+ if len < 0:
+ ret = self.__io.read()
+ else:
+ ret = self.__io.read(len)
+ except Exception:
+ import sys
+ e = sys.exc_info()[1]
+ print("failed to read from Python:", type(e))
+ print("on IO:", self.__io)
+ self.__io == None
+ return(-1)
+
+ return(ret)
+
+ def io_write(self, str, len = -1):
+ if self.__io == None:
+ return(-1)
+ if len < 0:
+ return(self.__io.write(str))
+ return(self.__io.write(str, len))
+
+class ioReadWrapper(ioWrapper):
+ def __init__(self, _obj, enc = ""):
+ ioWrapper.__init__(self, _obj)
+ self._o = libxml2mod.xmlCreateInputBuffer(self, enc)
+
+ def __del__(self):
+ print("__del__")
+ self.io_close()
+ if self._o != None:
+ libxml2mod.xmlFreeParserInputBuffer(self._o)
+ self._o = None
+
+ def close(self):
+ self.io_close()
+ if self._o != None:
+ libxml2mod.xmlFreeParserInputBuffer(self._o)
+ self._o = None
+
+class ioWriteWrapper(ioWrapper):
+ def __init__(self, _obj, enc = ""):
+# print "ioWriteWrapper.__init__", _obj
+ if type(_obj) == type(''):
+ print("write io from a string")
+ self.o = None
+ elif type(_obj).__name__ == 'PyCapsule':
+ file = libxml2mod.outputBufferGetPythonFile(_obj)
+ if file != None:
+ ioWrapper.__init__(self, file)
+ else:
+ ioWrapper.__init__(self, _obj)
+ self._o = _obj
+# elif type(_obj) == types.InstanceType:
+# print(("write io from instance of %s" % (_obj.__class__)))
+# ioWrapper.__init__(self, _obj)
+# self._o = libxml2mod.xmlCreateOutputBuffer(self, enc)
+ else:
+ file = libxml2mod.outputBufferGetPythonFile(_obj)
+ if file != None:
+ ioWrapper.__init__(self, file)
+ else:
+ ioWrapper.__init__(self, _obj)
+ self._o = _obj
+
+ def __del__(self):
+# print "__del__"
+ self.io_close()
+ if self._o != None:
+ libxml2mod.xmlOutputBufferClose(self._o)
+ self._o = None
+
+ def flush(self):
+ self.io_flush()
+ if self._o != None:
+ libxml2mod.xmlOutputBufferClose(self._o)
+ self._o = None
+
+ def close(self):
+ self.io_flush()
+ if self._o != None:
+ libxml2mod.xmlOutputBufferClose(self._o)
+ self._o = None
+
+#
+# Example of a class to handle SAX events
+#
+class SAXCallback:
+ """Base class for SAX handlers"""
+ def startDocument(self):
+ """called at the start of the document"""
+ pass
+
+ def endDocument(self):
+ """called at the end of the document"""
+ pass
+
+ def startElement(self, tag, attrs):
+ """called at the start of every element, tag is the name of
+ the element, attrs is a dictionary of the element's attributes"""
+ pass
+
+ def endElement(self, tag):
+ """called at the start of every element, tag is the name of
+ the element"""
+ pass
+
+ def characters(self, data):
+ """called when character data have been read, data is the string
+ containing the data, multiple consecutive characters() callback
+ are possible."""
+ pass
+
+ def cdataBlock(self, data):
+ """called when CDATA section have been read, data is the string
+ containing the data, multiple consecutive cdataBlock() callback
+ are possible."""
+ pass
+
+ def reference(self, name):
+ """called when an entity reference has been found"""
+ pass
+
+ def ignorableWhitespace(self, data):
+ """called when potentially ignorable white spaces have been found"""
+ pass
+
+ def processingInstruction(self, target, data):
+ """called when a PI has been found, target contains the PI name and
+ data is the associated data in the PI"""
+ pass
+
+ def comment(self, content):
+ """called when a comment has been found, content contains the comment"""
+ pass
+
+ def externalSubset(self, name, externalID, systemID):
+ """called when a DOCTYPE declaration has been found, name is the
+ DTD name and externalID, systemID are the DTD public and system
+ identifier for that DTd if available"""
+ pass
+
+ def internalSubset(self, name, externalID, systemID):
+ """called when a DOCTYPE declaration has been found, name is the
+ DTD name and externalID, systemID are the DTD public and system
+ identifier for that DTD if available"""
+ pass
+
+ def entityDecl(self, name, type, externalID, systemID, content):
+ """called when an ENTITY declaration has been found, name is the
+ entity name and externalID, systemID are the entity public and
+ system identifier for that entity if available, type indicates
+ the entity type, and content reports it's string content"""
+ pass
+
+ def notationDecl(self, name, externalID, systemID):
+ """called when an NOTATION declaration has been found, name is the
+ notation name and externalID, systemID are the notation public and
+ system identifier for that notation if available"""
+ pass
+
+ def attributeDecl(self, elem, name, type, defi, defaultValue, nameList):
+ """called when an ATTRIBUTE definition has been found"""
+ pass
+
+ def elementDecl(self, name, type, content):
+ """called when an ELEMENT definition has been found"""
+ pass
+
+ def entityDecl(self, name, publicId, systemID, notationName):
+ """called when an unparsed ENTITY declaration has been found,
+ name is the entity name and publicId,, systemID are the entity
+ public and system identifier for that entity if available,
+ and notationName indicate the associated NOTATION"""
+ pass
+
+ def warning(self, msg):
+ #print msg
+ pass
+
+ def error(self, msg):
+ raise parserError(msg)
+
+ def fatalError(self, msg):
+ raise parserError(msg)
+
+#
+# This class is the ancestor of all the Node classes. It provides
+# the basic functionalities shared by all nodes (and handle
+# gracefylly the exception), like name, navigation in the tree,
+# doc reference, content access and serializing to a string or URI
+#
+class xmlCore:
+ def __init__(self, _obj=None):
+ if _obj != None:
+ self._o = _obj;
+ return
+ self._o = None
+
+ def __eq__(self, other):
+ if other == None:
+ return False
+ ret = libxml2mod.compareNodesEqual(self._o, other._o)
+ if ret == None:
+ return False
+ return ret == True
+ def __ne__(self, other):
+ if other == None:
+ return True
+ ret = libxml2mod.compareNodesEqual(self._o, other._o)
+ return not ret
+ def __hash__(self):
+ ret = libxml2mod.nodeHash(self._o)
+ return ret
+
+ def __str__(self):
+ return self.serialize()
+ def get_parent(self):
+ ret = libxml2mod.parent(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ def get_children(self):
+ ret = libxml2mod.children(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ def get_last(self):
+ ret = libxml2mod.last(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ def get_next(self):
+ ret = libxml2mod.next(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ def get_properties(self):
+ ret = libxml2mod.properties(self._o)
+ if ret == None:
+ return None
+ return xmlAttr(_obj=ret)
+ def get_prev(self):
+ ret = libxml2mod.prev(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ def get_content(self):
+ return libxml2mod.xmlNodeGetContent(self._o)
+ getContent = get_content # why is this duplicate naming needed ?
+ def get_name(self):
+ return libxml2mod.name(self._o)
+ def get_type(self):
+ return libxml2mod.type(self._o)
+ def get_doc(self):
+ ret = libxml2mod.doc(self._o)
+ if ret == None:
+ if self.type in ["document_xml", "document_html"]:
+ return xmlDoc(_obj=self._o)
+ else:
+ return None
+ return xmlDoc(_obj=ret)
+ #
+ # Those are common attributes to nearly all type of nodes
+ # defined as python2 properties
+ #
+ import sys
+ if float(sys.version[0:3]) < 2.2:
+ def __getattr__(self, attr):
+ if attr == "parent":
+ ret = libxml2mod.parent(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ elif attr == "properties":
+ ret = libxml2mod.properties(self._o)
+ if ret == None:
+ return None
+ return xmlAttr(_obj=ret)
+ elif attr == "children":
+ ret = libxml2mod.children(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ elif attr == "last":
+ ret = libxml2mod.last(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ elif attr == "next":
+ ret = libxml2mod.next(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ elif attr == "prev":
+ ret = libxml2mod.prev(self._o)
+ if ret == None:
+ return None
+ return nodeWrap(ret)
+ elif attr == "content":
+ return libxml2mod.xmlNodeGetContent(self._o)
+ elif attr == "name":
+ return libxml2mod.name(self._o)
+ elif attr == "type":
+ return libxml2mod.type(self._o)
+ elif attr == "doc":
+ ret = libxml2mod.doc(self._o)
+ if ret == None:
+ if self.type == "document_xml" or self.type == "document_html":
+ return xmlDoc(_obj=self._o)
+ else:
+ return None
+ return xmlDoc(_obj=ret)
+ raise AttributeError(attr)
+ else:
+ parent = property(get_parent, None, None, "Parent node")
+ children = property(get_children, None, None, "First child node")
+ last = property(get_last, None, None, "Last sibling node")
+ next = property(get_next, None, None, "Next sibling node")
+ prev = property(get_prev, None, None, "Previous sibling node")
+ properties = property(get_properties, None, None, "List of properies")
+ content = property(get_content, None, None, "Content of this node")
+ name = property(get_name, None, None, "Node name")
+ type = property(get_type, None, None, "Node type")
+ doc = property(get_doc, None, None, "The document this node belongs to")
+
+ #
+ # Serialization routines, the optional arguments have the following
+ # meaning:
+ # encoding: string to ask saving in a specific encoding
+ # indent: if 1 the serializer is asked to indent the output
+ #
+ def serialize(self, encoding = None, format = 0):
+ return libxml2mod.serializeNode(self._o, encoding, format)
+ def saveTo(self, file, encoding = None, format = 0):
+ return libxml2mod.saveNodeTo(self._o, file, encoding, format)
+
+ #
+ # Canonicalization routines:
+ #
+ # nodes: the node set (tuple or list) to be included in the
+ # canonized image or None if all document nodes should be
+ # included.
+ # exclusive: the exclusive flag (0 - non-exclusive
+ # canonicalization; otherwise - exclusive canonicalization)
+ # prefixes: the list of inclusive namespace prefixes (strings),
+ # or None if there is no inclusive namespaces (only for
+ # exclusive canonicalization, ignored otherwise)
+ # with_comments: include comments in the result (!=0) or not
+ # (==0)
+ def c14nMemory(self,
+ nodes=None,
+ exclusive=0,
+ prefixes=None,
+ with_comments=0):
+ if nodes:
+ nodes = [n._o for n in nodes]
+ return libxml2mod.xmlC14NDocDumpMemory(
+ self.get_doc()._o,
+ nodes,
+ exclusive != 0,
+ prefixes,
+ with_comments != 0)
+ def c14nSaveTo(self,
+ file,
+ nodes=None,
+ exclusive=0,
+ prefixes=None,
+ with_comments=0):
+ if nodes:
+ nodes = [n._o for n in nodes]
+ return libxml2mod.xmlC14NDocSaveTo(
+ self.get_doc()._o,
+ nodes,
+ exclusive != 0,
+ prefixes,
+ with_comments != 0,
+ file)
+
+ #
+ # Selecting nodes using XPath, a bit slow because the context
+ # is allocated/freed every time but convenient.
+ #
+ def xpathEval(self, expr):
+ doc = self.doc
+ if doc == None:
+ return None
+ ctxt = doc.xpathNewContext()
+ ctxt.setContextNode(self)
+ res = ctxt.xpathEval(expr)
+ ctxt.xpathFreeContext()
+ return res
+
+# #
+# # Selecting nodes using XPath, faster because the context
+# # is allocated just once per xmlDoc.
+# #
+# # Removed: DV memleaks c.f. #126735
+# #
+# def xpathEval2(self, expr):
+# doc = self.doc
+# if doc == None:
+# return None
+# try:
+# doc._ctxt.setContextNode(self)
+# except:
+# doc._ctxt = doc.xpathNewContext()
+# doc._ctxt.setContextNode(self)
+# res = doc._ctxt.xpathEval(expr)
+# return res
+ def xpathEval2(self, expr):
+ return self.xpathEval(expr)
+
+ # Remove namespaces
+ def removeNsDef(self, href):
+ """
+ Remove a namespace definition from a node. If href is None,
+ remove all of the ns definitions on that node. The removed
+ namespaces are returned as a linked list.
+
+ Note: If any child nodes referred to the removed namespaces,
+ they will be left with dangling links. You should call
+ renconciliateNs() to fix those pointers.
+
+ Note: This method does not free memory taken by the ns
+ definitions. You will need to free it manually with the
+ freeNsList() method on the returns xmlNs object.
+ """
+
+ ret = libxml2mod.xmlNodeRemoveNsDef(self._o, href)
+ if ret is None:return None
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ # support for python2 iterators
+ def walk_depth_first(self):
+ return xmlCoreDepthFirstItertor(self)
+ def walk_breadth_first(self):
+ return xmlCoreBreadthFirstItertor(self)
+ __iter__ = walk_depth_first
+
+ def free(self):
+ try:
+ self.doc._ctxt.xpathFreeContext()
+ except:
+ pass
+ libxml2mod.xmlFreeDoc(self._o)
+
+
+#
+# implements the depth-first iterator for libxml2 DOM tree
+#
+class xmlCoreDepthFirstItertor:
+ def __init__(self, node):
+ self.node = node
+ self.parents = []
+ def __iter__(self):
+ return self
+ def __next__(self):
+ while 1:
+ if self.node:
+ ret = self.node
+ self.parents.append(self.node)
+ self.node = self.node.children
+ return ret
+ try:
+ parent = self.parents.pop()
+ except IndexError:
+ raise StopIteration
+ self.node = parent.next
+ next = __next__
+
+#
+# implements the breadth-first iterator for libxml2 DOM tree
+#
+class xmlCoreBreadthFirstItertor:
+ def __init__(self, node):
+ self.node = node
+ self.parents = []
+ def __iter__(self):
+ return self
+ def __next__(self):
+ while 1:
+ if self.node:
+ ret = self.node
+ self.parents.append(self.node)
+ self.node = self.node.next
+ return ret
+ try:
+ parent = self.parents.pop()
+ except IndexError:
+ raise StopIteration
+ self.node = parent.children
+ next = __next__
+
+#
+# converters to present a nicer view of the XPath returns
+#
+def nodeWrap(o):
+ # TODO try to cast to the most appropriate node class
+ name = libxml2mod.type(o)
+ if name == "element" or name == "text":
+ return xmlNode(_obj=o)
+ if name == "attribute":
+ return xmlAttr(_obj=o)
+ if name[0:8] == "document":
+ return xmlDoc(_obj=o)
+ if name == "namespace":
+ return xmlNs(_obj=o)
+ if name == "elem_decl":
+ return xmlElement(_obj=o)
+ if name == "attribute_decl":
+ return xmlAttribute(_obj=o)
+ if name == "entity_decl":
+ return xmlEntity(_obj=o)
+ if name == "dtd":
+ return xmlDtd(_obj=o)
+ return xmlNode(_obj=o)
+
+def xpathObjectRet(o):
+ otype = type(o)
+ if otype == type([]):
+ ret = list(map(xpathObjectRet, o))
+ return ret
+ elif otype == type(()):
+ ret = list(map(xpathObjectRet, o))
+ return tuple(ret)
+ elif otype == type('') or otype == type(0) or otype == type(0.0):
+ return o
+ else:
+ return nodeWrap(o)
+
+#
+# register an XPath function
+#
+def registerXPathFunction(ctxt, name, ns_uri, f):
+ ret = libxml2mod.xmlRegisterXPathFunction(ctxt, name, ns_uri, f)
+
+#
+# For the xmlTextReader parser configuration
+#
+PARSER_LOADDTD=1
+PARSER_DEFAULTATTRS=2
+PARSER_VALIDATE=3
+PARSER_SUBST_ENTITIES=4
+
+#
+# For the error callback severities
+#
+PARSER_SEVERITY_VALIDITY_WARNING=1
+PARSER_SEVERITY_VALIDITY_ERROR=2
+PARSER_SEVERITY_WARNING=3
+PARSER_SEVERITY_ERROR=4
+
+#
+# register the libxml2 error handler
+#
+def registerErrorHandler(f, ctx):
+ """Register a Python written function to for error reporting.
+ The function is called back as f(ctx, error). """
+ import sys
+ if 'libxslt' not in sys.modules:
+ # normal behaviour when libxslt is not imported
+ ret = libxml2mod.xmlRegisterErrorHandler(f,ctx)
+ else:
+ # when libxslt is already imported, one must
+ # use libxst's error handler instead
+ import libxslt
+ ret = libxslt.registerErrorHandler(f,ctx)
+ return ret
+
+class parserCtxtCore:
+
+ def __init__(self, _obj=None):
+ if _obj != None:
+ self._o = _obj;
+ return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeParserCtxt(self._o)
+ self._o = None
+
+ def setErrorHandler(self,f,arg):
+ """Register an error handler that will be called back as
+ f(arg,msg,severity,reserved).
+
+ @reserved is currently always None."""
+ libxml2mod.xmlParserCtxtSetErrorHandler(self._o,f,arg)
+
+ def getErrorHandler(self):
+ """Return (f,arg) as previously registered with setErrorHandler
+ or (None,None)."""
+ return libxml2mod.xmlParserCtxtGetErrorHandler(self._o)
+
+ def addLocalCatalog(self, uri):
+ """Register a local catalog with the parser"""
+ return libxml2mod.addLocalCatalog(self._o, uri)
+
+
+class ValidCtxtCore:
+
+ def __init__(self, *args, **kw):
+ pass
+
+ def setValidityErrorHandler(self, err_func, warn_func, arg=None):
+ """
+ Register error and warning handlers for DTD validation.
+ These will be called back as f(msg,arg)
+ """
+ libxml2mod.xmlSetValidErrors(self._o, err_func, warn_func, arg)
+
+
+class SchemaValidCtxtCore:
+
+ def __init__(self, *args, **kw):
+ pass
+
+ def setValidityErrorHandler(self, err_func, warn_func, arg=None):
+ """
+ Register error and warning handlers for Schema validation.
+ These will be called back as f(msg,arg)
+ """
+ libxml2mod.xmlSchemaSetValidErrors(self._o, err_func, warn_func, arg)
+
+
+class relaxNgValidCtxtCore:
+
+ def __init__(self, *args, **kw):
+ pass
+
+ def setValidityErrorHandler(self, err_func, warn_func, arg=None):
+ """
+ Register error and warning handlers for RelaxNG validation.
+ These will be called back as f(msg,arg)
+ """
+ libxml2mod.xmlRelaxNGSetValidErrors(self._o, err_func, warn_func, arg)
+
+
+def _xmlTextReaderErrorFunc(xxx_todo_changeme,msg,severity,locator):
+ """Intermediate callback to wrap the locator"""
+ (f,arg) = xxx_todo_changeme
+ return f(arg,msg,severity,xmlTextReaderLocator(locator))
+
+class xmlTextReaderCore:
+
+ def __init__(self, _obj=None):
+ self.input = None
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeTextReader(self._o)
+ self._o = None
+
+ def SetErrorHandler(self,f,arg):
+ """Register an error handler that will be called back as
+ f(arg,msg,severity,locator)."""
+ if f is None:
+ libxml2mod.xmlTextReaderSetErrorHandler(\
+ self._o,None,None)
+ else:
+ libxml2mod.xmlTextReaderSetErrorHandler(\
+ self._o,_xmlTextReaderErrorFunc,(f,arg))
+
+ def GetErrorHandler(self):
+ """Return (f,arg) as previously registered with setErrorHandler
+ or (None,None)."""
+ f,arg = libxml2mod.xmlTextReaderGetErrorHandler(self._o)
+ if f is None:
+ return None,None
+ else:
+ # assert f is _xmlTextReaderErrorFunc
+ return arg
+
+#
+# The cleanup now goes though a wrapper in libxml.c
+#
+def cleanupParser():
+ libxml2mod.xmlPythonCleanupParser()
+
+#
+# The interface to xmlRegisterInputCallbacks.
+# Since this API does not allow to pass a data object along with
+# match/open callbacks, it is necessary to maintain a list of all
+# Python callbacks.
+#
+__input_callbacks = []
+def registerInputCallback(func):
+ def findOpenCallback(URI):
+ for cb in reversed(__input_callbacks):
+ o = cb(URI)
+ if o is not None:
+ return o
+ libxml2mod.xmlRegisterInputCallback(findOpenCallback)
+ __input_callbacks.append(func)
+
+def popInputCallbacks():
+ # First pop python-level callbacks, when no more available - start
+ # popping built-in ones.
+ if len(__input_callbacks) > 0:
+ __input_callbacks.pop()
+ if len(__input_callbacks) == 0:
+ libxml2mod.xmlUnregisterInputCallback()
+
+# WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
+#
+# Everything before this line comes from libxml.py
+# Everything after this line is automatically generated
+#
+# WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
+
+#
+# Functions from module HTMLparser
+#
+
+def htmlCreateMemoryParserCtxt(buffer, size):
+ """Create a parser context for an HTML in-memory document. """
+ ret = libxml2mod.htmlCreateMemoryParserCtxt(buffer, size)
+ if ret is None:raise parserError('htmlCreateMemoryParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlHandleOmittedElem(val):
+ """Set and return the previous value for handling HTML omitted
+ tags. """
+ ret = libxml2mod.htmlHandleOmittedElem(val)
+ return ret
+
+def htmlIsScriptAttribute(name):
+ """Check if an attribute is of content type Script """
+ ret = libxml2mod.htmlIsScriptAttribute(name)
+ return ret
+
+def htmlNewParserCtxt():
+ """Allocate and initialize a new parser context. """
+ ret = libxml2mod.htmlNewParserCtxt()
+ if ret is None:raise parserError('htmlNewParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlParseDoc(cur, encoding):
+ """parse an HTML in-memory document and build a tree. """
+ ret = libxml2mod.htmlParseDoc(cur, encoding)
+ if ret is None:raise parserError('htmlParseDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlParseFile(filename, encoding):
+ """parse an HTML file and build a tree. Automatic support for
+ ZLIB/Compress compressed document is provided by default if
+ found at compile-time. """
+ ret = libxml2mod.htmlParseFile(filename, encoding)
+ if ret is None:raise parserError('htmlParseFile() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadDoc(cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.htmlReadDoc(cur, URL, encoding, options)
+ if ret is None:raise treeError('htmlReadDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadFd(fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. """
+ ret = libxml2mod.htmlReadFd(fd, URL, encoding, options)
+ if ret is None:raise treeError('htmlReadFd() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadFile(filename, encoding, options):
+ """parse an XML file from the filesystem or the network. """
+ ret = libxml2mod.htmlReadFile(filename, encoding, options)
+ if ret is None:raise treeError('htmlReadFile() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadMemory(buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.htmlReadMemory(buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('htmlReadMemory() failed')
+ return xmlDoc(_obj=ret)
+
+#
+# Functions from module HTMLtree
+#
+
+def htmlIsBooleanAttr(name):
+ """Determine if a given attribute is a boolean attribute. """
+ ret = libxml2mod.htmlIsBooleanAttr(name)
+ return ret
+
+def htmlNewDoc(URI, ExternalID):
+ """Creates a new HTML document """
+ ret = libxml2mod.htmlNewDoc(URI, ExternalID)
+ if ret is None:raise treeError('htmlNewDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlNewDocNoDtD(URI, ExternalID):
+ """Creates a new HTML document without a DTD node if @URI and
+ @ExternalID are None """
+ ret = libxml2mod.htmlNewDocNoDtD(URI, ExternalID)
+ if ret is None:raise treeError('htmlNewDocNoDtD() failed')
+ return xmlDoc(_obj=ret)
+
+#
+# Functions from module SAX2
+#
+
+def SAXDefaultVersion(version):
+ """Set the default version of SAX used globally by the
+ library. By default, during initialization the default is
+ set to 2. Note that it is generally a better coding style
+ to use xmlSAXVersion() to set up the version explicitly for
+ a given parsing context. """
+ ret = libxml2mod.xmlSAXDefaultVersion(version)
+ return ret
+
+def defaultSAXHandlerInit():
+ """Initialize the default SAX2 handler """
+ libxml2mod.xmlDefaultSAXHandlerInit()
+
+def docbDefaultSAXHandlerInit():
+ """Initialize the default SAX handler """
+ libxml2mod.docbDefaultSAXHandlerInit()
+
+def htmlDefaultSAXHandlerInit():
+ """Initialize the default SAX handler """
+ libxml2mod.htmlDefaultSAXHandlerInit()
+
+#
+# Functions from module catalog
+#
+
+def catalogAdd(type, orig, replace):
+ """Add an entry in the catalog, it may overwrite existing but
+ different entries. If called before any other catalog
+ routine, allows to override the default shared catalog put
+ in place by xmlInitializeCatalog(); """
+ ret = libxml2mod.xmlCatalogAdd(type, orig, replace)
+ return ret
+
+def catalogCleanup():
+ """Free up all the memory associated with catalogs """
+ libxml2mod.xmlCatalogCleanup()
+
+def catalogConvert():
+ """Convert all the SGML catalog entries as XML ones """
+ ret = libxml2mod.xmlCatalogConvert()
+ return ret
+
+def catalogDump(out):
+ """Dump all the global catalog content to the given file. """
+ if out is not None: out.flush()
+ libxml2mod.xmlCatalogDump(out)
+
+def catalogGetPublic(pubID):
+ """Try to lookup the catalog reference associated to a public
+ ID DEPRECATED, use xmlCatalogResolvePublic() """
+ ret = libxml2mod.xmlCatalogGetPublic(pubID)
+ return ret
+
+def catalogGetSystem(sysID):
+ """Try to lookup the catalog reference associated to a system
+ ID DEPRECATED, use xmlCatalogResolveSystem() """
+ ret = libxml2mod.xmlCatalogGetSystem(sysID)
+ return ret
+
+def catalogRemove(value):
+ """Remove an entry from the catalog """
+ ret = libxml2mod.xmlCatalogRemove(value)
+ return ret
+
+def catalogResolve(pubID, sysID):
+ """Do a complete resolution lookup of an External Identifier """
+ ret = libxml2mod.xmlCatalogResolve(pubID, sysID)
+ return ret
+
+def catalogResolvePublic(pubID):
+ """Try to lookup the catalog reference associated to a public
+ ID """
+ ret = libxml2mod.xmlCatalogResolvePublic(pubID)
+ return ret
+
+def catalogResolveSystem(sysID):
+ """Try to lookup the catalog resource for a system ID """
+ ret = libxml2mod.xmlCatalogResolveSystem(sysID)
+ return ret
+
+def catalogResolveURI(URI):
+ """Do a complete resolution lookup of an URI """
+ ret = libxml2mod.xmlCatalogResolveURI(URI)
+ return ret
+
+def catalogSetDebug(level):
+ """Used to set the debug level for catalog operation, 0
+ disable debugging, 1 enable it """
+ ret = libxml2mod.xmlCatalogSetDebug(level)
+ return ret
+
+def initializeCatalog():
+ """Do the catalog initialization. this function is not thread
+ safe, catalog initialization should preferably be done once
+ at startup """
+ libxml2mod.xmlInitializeCatalog()
+
+def loadACatalog(filename):
+ """Load the catalog and build the associated data structures.
+ This can be either an XML Catalog or an SGML Catalog It
+ will recurse in SGML CATALOG entries. On the other hand XML
+ Catalogs are not handled recursively. """
+ ret = libxml2mod.xmlLoadACatalog(filename)
+ if ret is None:raise treeError('xmlLoadACatalog() failed')
+ return catalog(_obj=ret)
+
+def loadCatalog(filename):
+ """Load the catalog and makes its definitions effective for
+ the default external entity loader. It will recurse in SGML
+ CATALOG entries. this function is not thread safe, catalog
+ initialization should preferably be done once at startup """
+ ret = libxml2mod.xmlLoadCatalog(filename)
+ return ret
+
+def loadCatalogs(pathss):
+ """Load the catalogs and makes their definitions effective for
+ the default external entity loader. this function is not
+ thread safe, catalog initialization should preferably be
+ done once at startup """
+ libxml2mod.xmlLoadCatalogs(pathss)
+
+def loadSGMLSuperCatalog(filename):
+ """Load an SGML super catalog. It won't expand CATALOG or
+ DELEGATE references. This is only needed for manipulating
+ SGML Super Catalogs like adding and removing CATALOG or
+ DELEGATE entries. """
+ ret = libxml2mod.xmlLoadSGMLSuperCatalog(filename)
+ if ret is None:raise treeError('xmlLoadSGMLSuperCatalog() failed')
+ return catalog(_obj=ret)
+
+def newCatalog(sgml):
+ """create a new Catalog. """
+ ret = libxml2mod.xmlNewCatalog(sgml)
+ if ret is None:raise treeError('xmlNewCatalog() failed')
+ return catalog(_obj=ret)
+
+def parseCatalogFile(filename):
+ """parse an XML file and build a tree. It's like
+ xmlParseFile() except it bypass all catalog lookups. """
+ ret = libxml2mod.xmlParseCatalogFile(filename)
+ if ret is None:raise parserError('xmlParseCatalogFile() failed')
+ return xmlDoc(_obj=ret)
+
+#
+# Functions from module chvalid
+#
+
+def isBaseChar(ch):
+ """This function is DEPRECATED. Use xmlIsBaseChar_ch or
+ xmlIsBaseCharQ instead """
+ ret = libxml2mod.xmlIsBaseChar(ch)
+ return ret
+
+def isBlank(ch):
+ """This function is DEPRECATED. Use xmlIsBlank_ch or
+ xmlIsBlankQ instead """
+ ret = libxml2mod.xmlIsBlank(ch)
+ return ret
+
+def isChar(ch):
+ """This function is DEPRECATED. Use xmlIsChar_ch or xmlIsCharQ
+ instead """
+ ret = libxml2mod.xmlIsChar(ch)
+ return ret
+
+def isCombining(ch):
+ """This function is DEPRECATED. Use xmlIsCombiningQ instead """
+ ret = libxml2mod.xmlIsCombining(ch)
+ return ret
+
+def isDigit(ch):
+ """This function is DEPRECATED. Use xmlIsDigit_ch or
+ xmlIsDigitQ instead """
+ ret = libxml2mod.xmlIsDigit(ch)
+ return ret
+
+def isExtender(ch):
+ """This function is DEPRECATED. Use xmlIsExtender_ch or
+ xmlIsExtenderQ instead """
+ ret = libxml2mod.xmlIsExtender(ch)
+ return ret
+
+def isIdeographic(ch):
+ """This function is DEPRECATED. Use xmlIsIdeographicQ instead """
+ ret = libxml2mod.xmlIsIdeographic(ch)
+ return ret
+
+def isPubidChar(ch):
+ """This function is DEPRECATED. Use xmlIsPubidChar_ch or
+ xmlIsPubidCharQ instead """
+ ret = libxml2mod.xmlIsPubidChar(ch)
+ return ret
+
+#
+# Functions from module debugXML
+#
+
+def boolToText(boolval):
+ """Convenient way to turn bool into text """
+ ret = libxml2mod.xmlBoolToText(boolval)
+ return ret
+
+def debugDumpString(output, str):
+ """Dumps informations about the string, shorten it if necessary """
+ if output is not None: output.flush()
+ libxml2mod.xmlDebugDumpString(output, str)
+
+def shellPrintXPathError(errorType, arg):
+ """Print the xpath error to libxml default error channel """
+ libxml2mod.xmlShellPrintXPathError(errorType, arg)
+
+#
+# Functions from module dict
+#
+
+def dictCleanup():
+ """Free the dictionary mutex. Do not call unless sure the
+ library is not in use anymore ! """
+ libxml2mod.xmlDictCleanup()
+
+def initializeDict():
+ """Do the dictionary mutex initialization. this function is
+ deprecated """
+ ret = libxml2mod.xmlInitializeDict()
+ return ret
+
+#
+# Functions from module encoding
+#
+
+def addEncodingAlias(name, alias):
+ """Registers an alias @alias for an encoding named @name.
+ Existing alias will be overwritten. """
+ ret = libxml2mod.xmlAddEncodingAlias(name, alias)
+ return ret
+
+def cleanupCharEncodingHandlers():
+ """Cleanup the memory allocated for the char encoding support,
+ it unregisters all the encoding handlers and the aliases. """
+ libxml2mod.xmlCleanupCharEncodingHandlers()
+
+def cleanupEncodingAliases():
+ """Unregisters all aliases """
+ libxml2mod.xmlCleanupEncodingAliases()
+
+def delEncodingAlias(alias):
+ """Unregisters an encoding alias @alias """
+ ret = libxml2mod.xmlDelEncodingAlias(alias)
+ return ret
+
+def encodingAlias(alias):
+ """Lookup an encoding name for the given alias. """
+ ret = libxml2mod.xmlGetEncodingAlias(alias)
+ return ret
+
+def initCharEncodingHandlers():
+ """Initialize the char encoding support, it registers the
+ default encoding supported. NOTE: while public, this
+ function usually doesn't need to be called in normal
+ processing. """
+ libxml2mod.xmlInitCharEncodingHandlers()
+
+#
+# Functions from module entities
+#
+
+def cleanupPredefinedEntities():
+ """Cleanup up the predefined entities table. Deprecated call """
+ libxml2mod.xmlCleanupPredefinedEntities()
+
+def initializePredefinedEntities():
+ """Set up the predefined entities. Deprecated call """
+ libxml2mod.xmlInitializePredefinedEntities()
+
+def predefinedEntity(name):
+ """Check whether this name is an predefined entity. """
+ ret = libxml2mod.xmlGetPredefinedEntity(name)
+ if ret is None:raise treeError('xmlGetPredefinedEntity() failed')
+ return xmlEntity(_obj=ret)
+
+#
+# Functions from module globals
+#
+
+def cleanupGlobals():
+ """Additional cleanup for multi-threading """
+ libxml2mod.xmlCleanupGlobals()
+
+def initGlobals():
+ """Additional initialisation for multi-threading """
+ libxml2mod.xmlInitGlobals()
+
+def thrDefDefaultBufferSize(v):
+ ret = libxml2mod.xmlThrDefDefaultBufferSize(v)
+ return ret
+
+def thrDefDoValidityCheckingDefaultValue(v):
+ ret = libxml2mod.xmlThrDefDoValidityCheckingDefaultValue(v)
+ return ret
+
+def thrDefGetWarningsDefaultValue(v):
+ ret = libxml2mod.xmlThrDefGetWarningsDefaultValue(v)
+ return ret
+
+def thrDefIndentTreeOutput(v):
+ ret = libxml2mod.xmlThrDefIndentTreeOutput(v)
+ return ret
+
+def thrDefKeepBlanksDefaultValue(v):
+ ret = libxml2mod.xmlThrDefKeepBlanksDefaultValue(v)
+ return ret
+
+def thrDefLineNumbersDefaultValue(v):
+ ret = libxml2mod.xmlThrDefLineNumbersDefaultValue(v)
+ return ret
+
+def thrDefLoadExtDtdDefaultValue(v):
+ ret = libxml2mod.xmlThrDefLoadExtDtdDefaultValue(v)
+ return ret
+
+def thrDefParserDebugEntities(v):
+ ret = libxml2mod.xmlThrDefParserDebugEntities(v)
+ return ret
+
+def thrDefPedanticParserDefaultValue(v):
+ ret = libxml2mod.xmlThrDefPedanticParserDefaultValue(v)
+ return ret
+
+def thrDefSaveNoEmptyTags(v):
+ ret = libxml2mod.xmlThrDefSaveNoEmptyTags(v)
+ return ret
+
+def thrDefSubstituteEntitiesDefaultValue(v):
+ ret = libxml2mod.xmlThrDefSubstituteEntitiesDefaultValue(v)
+ return ret
+
+def thrDefTreeIndentString(v):
+ ret = libxml2mod.xmlThrDefTreeIndentString(v)
+ return ret
+
+#
+# Functions from module nanoftp
+#
+
+def nanoFTPCleanup():
+ """Cleanup the FTP protocol layer. This cleanup proxy
+ informations. """
+ libxml2mod.xmlNanoFTPCleanup()
+
+def nanoFTPInit():
+ """Initialize the FTP protocol layer. Currently it just checks
+ for proxy informations, and get the hostname """
+ libxml2mod.xmlNanoFTPInit()
+
+def nanoFTPProxy(host, port, user, passwd, type):
+ """Setup the FTP proxy informations. This can also be done by
+ using ftp_proxy ftp_proxy_user and ftp_proxy_password
+ environment variables. """
+ libxml2mod.xmlNanoFTPProxy(host, port, user, passwd, type)
+
+def nanoFTPScanProxy(URL):
+ """(Re)Initialize the FTP Proxy context by parsing the URL and
+ finding the protocol host port it indicates. Should be like
+ ftp://myproxy/ or ftp://myproxy:3128/ A None URL cleans up
+ proxy informations. """
+ libxml2mod.xmlNanoFTPScanProxy(URL)
+
+#
+# Functions from module nanohttp
+#
+
+def nanoHTTPCleanup():
+ """Cleanup the HTTP protocol layer. """
+ libxml2mod.xmlNanoHTTPCleanup()
+
+def nanoHTTPInit():
+ """Initialize the HTTP protocol layer. Currently it just
+ checks for proxy informations """
+ libxml2mod.xmlNanoHTTPInit()
+
+def nanoHTTPScanProxy(URL):
+ """(Re)Initialize the HTTP Proxy context by parsing the URL
+ and finding the protocol host port it indicates. Should be
+ like http://myproxy/ or http://myproxy:3128/ A None URL
+ cleans up proxy informations. """
+ libxml2mod.xmlNanoHTTPScanProxy(URL)
+
+#
+# Functions from module parser
+#
+
+def createDocParserCtxt(cur):
+ """Creates a parser context for an XML in-memory document. """
+ ret = libxml2mod.xmlCreateDocParserCtxt(cur)
+ if ret is None:raise parserError('xmlCreateDocParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def initParser():
+ """Initialization function for the XML parser. This is not
+ reentrant. Call once before processing in case of use in
+ multithreaded programs. """
+ libxml2mod.xmlInitParser()
+
+def keepBlanksDefault(val):
+ """Set and return the previous value for default blanks text
+ nodes support. The 1.x version of the parser used an
+ heuristic to try to detect ignorable white spaces. As a
+ result the SAX callback was generating
+ xmlSAX2IgnorableWhitespace() callbacks instead of
+ characters() one, and when using the DOM output text nodes
+ containing those blanks were not generated. The 2.x and
+ later version will switch to the XML standard way and
+ ignorableWhitespace() are only generated when running the
+ parser in validating mode and when the current element
+ doesn't allow CDATA or mixed content. This function is
+ provided as a way to force the standard behavior on 1.X
+ libs and to switch back to the old mode for compatibility
+ when running 1.X client code on 2.X . Upgrade of 1.X code
+ should be done by using xmlIsBlankNode() commodity function
+ to detect the "empty" nodes generated. This value also
+ affect autogeneration of indentation when saving code if
+ blanks sections are kept, indentation is not generated. """
+ ret = libxml2mod.xmlKeepBlanksDefault(val)
+ return ret
+
+def lineNumbersDefault(val):
+ """Set and return the previous value for enabling line numbers
+ in elements contents. This may break on old application and
+ is turned off by default. """
+ ret = libxml2mod.xmlLineNumbersDefault(val)
+ return ret
+
+def newParserCtxt():
+ """Allocate and initialize a new parser context. """
+ ret = libxml2mod.xmlNewParserCtxt()
+ if ret is None:raise parserError('xmlNewParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def parseDTD(ExternalID, SystemID):
+ """Load and parse an external subset. """
+ ret = libxml2mod.xmlParseDTD(ExternalID, SystemID)
+ if ret is None:raise parserError('xmlParseDTD() failed')
+ return xmlDtd(_obj=ret)
+
+def parseDoc(cur):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.xmlParseDoc(cur)
+ if ret is None:raise parserError('xmlParseDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def parseEntity(filename):
+ """parse an XML external entity out of context and build a
+ tree. [78] extParsedEnt ::= TextDecl? content This
+ correspond to a "Well Balanced" chunk """
+ ret = libxml2mod.xmlParseEntity(filename)
+ if ret is None:raise parserError('xmlParseEntity() failed')
+ return xmlDoc(_obj=ret)
+
+def parseFile(filename):
+ """parse an XML file and build a tree. Automatic support for
+ ZLIB/Compress compressed document is provided by default if
+ found at compile-time. """
+ ret = libxml2mod.xmlParseFile(filename)
+ if ret is None:raise parserError('xmlParseFile() failed')
+ return xmlDoc(_obj=ret)
+
+def parseMemory(buffer, size):
+ """parse an XML in-memory block and build a tree. """
+ ret = libxml2mod.xmlParseMemory(buffer, size)
+ if ret is None:raise parserError('xmlParseMemory() failed')
+ return xmlDoc(_obj=ret)
+
+def pedanticParserDefault(val):
+ """Set and return the previous value for enabling pedantic
+ warnings. """
+ ret = libxml2mod.xmlPedanticParserDefault(val)
+ return ret
+
+def readDoc(cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.xmlReadDoc(cur, URL, encoding, options)
+ if ret is None:raise treeError('xmlReadDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def readFd(fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. NOTE
+ that the file descriptor will not be closed when the reader
+ is closed or reset. """
+ ret = libxml2mod.xmlReadFd(fd, URL, encoding, options)
+ if ret is None:raise treeError('xmlReadFd() failed')
+ return xmlDoc(_obj=ret)
+
+def readFile(filename, encoding, options):
+ """parse an XML file from the filesystem or the network. """
+ ret = libxml2mod.xmlReadFile(filename, encoding, options)
+ if ret is None:raise treeError('xmlReadFile() failed')
+ return xmlDoc(_obj=ret)
+
+def readMemory(buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.xmlReadMemory(buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('xmlReadMemory() failed')
+ return xmlDoc(_obj=ret)
+
+def recoverDoc(cur):
+ """parse an XML in-memory document and build a tree. In the
+ case the document is not Well Formed, a attempt to build a
+ tree is tried anyway """
+ ret = libxml2mod.xmlRecoverDoc(cur)
+ if ret is None:raise treeError('xmlRecoverDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def recoverFile(filename):
+ """parse an XML file and build a tree. Automatic support for
+ ZLIB/Compress compressed document is provided by default if
+ found at compile-time. In the case the document is not Well
+ Formed, it attempts to build a tree anyway """
+ ret = libxml2mod.xmlRecoverFile(filename)
+ if ret is None:raise treeError('xmlRecoverFile() failed')
+ return xmlDoc(_obj=ret)
+
+def recoverMemory(buffer, size):
+ """parse an XML in-memory block and build a tree. In the case
+ the document is not Well Formed, an attempt to build a tree
+ is tried anyway """
+ ret = libxml2mod.xmlRecoverMemory(buffer, size)
+ if ret is None:raise treeError('xmlRecoverMemory() failed')
+ return xmlDoc(_obj=ret)
+
+def substituteEntitiesDefault(val):
+ """Set and return the previous value for default entity
+ support. Initially the parser always keep entity references
+ instead of substituting entity values in the output. This
+ function has to be used to change the default parser
+ behavior SAX::substituteEntities() has to be used for
+ changing that on a file by file basis. """
+ ret = libxml2mod.xmlSubstituteEntitiesDefault(val)
+ return ret
+
+#
+# Functions from module parserInternals
+#
+
+def checkLanguageID(lang):
+ """Checks that the value conforms to the LanguageID
+ production: NOTE: this is somewhat deprecated, those
+ productions were removed from the XML Second edition. [33]
+ LanguageID ::= Langcode ('-' Subcode)* [34] Langcode ::=
+ ISO639Code | IanaCode | UserCode [35] ISO639Code ::=
+ ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= ('i' |
+ 'I') '-' ([a-z] | [A-Z])+ [37] UserCode ::= ('x' | 'X') '-'
+ ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+ The
+ current REC reference the sucessors of RFC 1766, currently
+ 5646 http://www.rfc-editor.org/rfc/rfc5646.txt langtag
+ = language ["-" script] ["-" region] *("-" variant) *("-"
+ extension) ["-" privateuse] language = 2*3ALPHA
+ ; shortest ISO 639 code ["-" extlang] ; sometimes
+ followed by ; extended language subtags / 4ALPHA
+ ; or reserved for future use / 5*8ALPHA ; or
+ registered language subtag extlang = 3ALPHA
+ ; selected ISO 639 codes *2("-" 3ALPHA) ; permanently
+ reserved script = 4ALPHA ; ISO 15924
+ code region = 2ALPHA ; ISO 3166-1 code
+ / 3DIGIT ; UN M.49 code variant =
+ 5*8alphanum ; registered variants / (DIGIT
+ 3alphanum) extension = singleton 1*("-" (2*8alphanum))
+ ; Single alphanumerics ; "x" reserved for private use
+ singleton = DIGIT ; 0 - 9 / %x41-57
+ ; A - W / %x59-5A ; Y - Z / %x61-77
+ ; a - w / %x79-7A ; y - z it sounds right to
+ still allow Irregular i-xxx IANA and user codes too The
+ parser below doesn't try to cope with extension or
+ privateuse that could be added but that's not interoperable
+ anyway """
+ ret = libxml2mod.xmlCheckLanguageID(lang)
+ return ret
+
+def copyChar(len, out, val):
+ """append the char value in the array """
+ ret = libxml2mod.xmlCopyChar(len, out, val)
+ return ret
+
+def copyCharMultiByte(out, val):
+ """append the char value in the array """
+ ret = libxml2mod.xmlCopyCharMultiByte(out, val)
+ return ret
+
+def createEntityParserCtxt(URL, ID, base):
+ """Create a parser context for an external entity Automatic
+ support for ZLIB/Compress compressed document is provided
+ by default if found at compile-time. """
+ ret = libxml2mod.xmlCreateEntityParserCtxt(URL, ID, base)
+ if ret is None:raise parserError('xmlCreateEntityParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def createFileParserCtxt(filename):
+ """Create a parser context for a file content. Automatic
+ support for ZLIB/Compress compressed document is provided
+ by default if found at compile-time. """
+ ret = libxml2mod.xmlCreateFileParserCtxt(filename)
+ if ret is None:raise parserError('xmlCreateFileParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def createMemoryParserCtxt(buffer, size):
+ """Create a parser context for an XML in-memory document. """
+ ret = libxml2mod.xmlCreateMemoryParserCtxt(buffer, size)
+ if ret is None:raise parserError('xmlCreateMemoryParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def createURLParserCtxt(filename, options):
+ """Create a parser context for a file or URL content.
+ Automatic support for ZLIB/Compress compressed document is
+ provided by default if found at compile-time and for file
+ accesses """
+ ret = libxml2mod.xmlCreateURLParserCtxt(filename, options)
+ if ret is None:raise parserError('xmlCreateURLParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlCreateFileParserCtxt(filename, encoding):
+ """Create a parser context for a file content. Automatic
+ support for ZLIB/Compress compressed document is provided
+ by default if found at compile-time. """
+ ret = libxml2mod.htmlCreateFileParserCtxt(filename, encoding)
+ if ret is None:raise parserError('htmlCreateFileParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlInitAutoClose():
+ """Initialize the htmlStartCloseIndex for fast lookup of
+ closing tags names. This is not reentrant. Call
+ xmlInitParser() once before processing in case of use in
+ multithreaded programs. """
+ libxml2mod.htmlInitAutoClose()
+
+def isLetter(c):
+ """Check whether the character is allowed by the production
+ [84] Letter ::= BaseChar | Ideographic """
+ ret = libxml2mod.xmlIsLetter(c)
+ return ret
+
+def namePop(ctxt):
+ """Pops the top element name from the name stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.namePop(ctxt__o)
+ return ret
+
+def namePush(ctxt, value):
+ """Pushes a new element name on top of the name stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.namePush(ctxt__o, value)
+ return ret
+
+def nodePop(ctxt):
+ """Pops the top element node from the node stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.nodePop(ctxt__o)
+ if ret is None:raise treeError('nodePop() failed')
+ return xmlNode(_obj=ret)
+
+def nodePush(ctxt, value):
+ """Pushes a new element node on top of the node stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if value is None: value__o = None
+ else: value__o = value._o
+ ret = libxml2mod.nodePush(ctxt__o, value__o)
+ return ret
+
+#
+# Functions from module python
+#
+
+def SAXParseFile(SAX, URI, recover):
+ """Interface to parse an XML file or resource pointed by an
+ URI to build an event flow to the SAX object """
+ libxml2mod.xmlSAXParseFile(SAX, URI, recover)
+
+def createInputBuffer(file, encoding):
+ """Create a libxml2 input buffer from a Python file """
+ ret = libxml2mod.xmlCreateInputBuffer(file, encoding)
+ if ret is None:raise treeError('xmlCreateInputBuffer() failed')
+ return inputBuffer(_obj=ret)
+
+def createOutputBuffer(file, encoding):
+ """Create a libxml2 output buffer from a Python file """
+ ret = libxml2mod.xmlCreateOutputBuffer(file, encoding)
+ if ret is None:raise treeError('xmlCreateOutputBuffer() failed')
+ return outputBuffer(_obj=ret)
+
+def createPushParser(SAX, chunk, size, URI):
+ """Create a progressive XML parser context to build either an
+ event flow if the SAX object is not None, or a DOM tree
+ otherwise. """
+ ret = libxml2mod.xmlCreatePushParser(SAX, chunk, size, URI)
+ if ret is None:raise parserError('xmlCreatePushParser() failed')
+ return parserCtxt(_obj=ret)
+
+def debugMemory(activate):
+ """Switch on the generation of line number for elements nodes.
+ Also returns the number of bytes allocated and not freed by
+ libxml2 since memory debugging was switched on. """
+ ret = libxml2mod.xmlDebugMemory(activate)
+ return ret
+
+def dumpMemory():
+ """dump the memory allocated in the file .memdump """
+ libxml2mod.xmlDumpMemory()
+
+def htmlCreatePushParser(SAX, chunk, size, URI):
+ """Create a progressive HTML parser context to build either an
+ event flow if the SAX object is not None, or a DOM tree
+ otherwise. """
+ ret = libxml2mod.htmlCreatePushParser(SAX, chunk, size, URI)
+ if ret is None:raise parserError('htmlCreatePushParser() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlSAXParseFile(SAX, URI, encoding):
+ """Interface to parse an HTML file or resource pointed by an
+ URI to build an event flow to the SAX object """
+ libxml2mod.htmlSAXParseFile(SAX, URI, encoding)
+
+def memoryUsed():
+ """Returns the total amount of memory allocated by libxml2 """
+ ret = libxml2mod.xmlMemoryUsed()
+ return ret
+
+def newNode(name):
+ """Create a new Node """
+ ret = libxml2mod.xmlNewNode(name)
+ if ret is None:raise treeError('xmlNewNode() failed')
+ return xmlNode(_obj=ret)
+
+def pythonCleanupParser():
+ """Cleanup function for the XML library. It tries to reclaim
+ all parsing related global memory allocated for the library
+ processing. It doesn't deallocate any document related
+ memory. Calling this function should not prevent reusing
+ the library but one should call xmlCleanupParser() only
+ when the process has finished using the library or XML
+ document built with it. """
+ libxml2mod.xmlPythonCleanupParser()
+
+def setEntityLoader(resolver):
+ """Set the entity resolver as a python function """
+ ret = libxml2mod.xmlSetEntityLoader(resolver)
+ return ret
+
+#
+# Functions from module relaxng
+#
+
+def relaxNGCleanupTypes():
+ """Cleanup the default Schemas type library associated to
+ RelaxNG """
+ libxml2mod.xmlRelaxNGCleanupTypes()
+
+def relaxNGInitTypes():
+ """Initilize the default type libraries. """
+ ret = libxml2mod.xmlRelaxNGInitTypes()
+ return ret
+
+def relaxNGNewMemParserCtxt(buffer, size):
+ """Create an XML RelaxNGs parse context for that memory buffer
+ expected to contain an XML RelaxNGs file. """
+ ret = libxml2mod.xmlRelaxNGNewMemParserCtxt(buffer, size)
+ if ret is None:raise parserError('xmlRelaxNGNewMemParserCtxt() failed')
+ return relaxNgParserCtxt(_obj=ret)
+
+def relaxNGNewParserCtxt(URL):
+ """Create an XML RelaxNGs parse context for that file/resource
+ expected to contain an XML RelaxNGs file. """
+ ret = libxml2mod.xmlRelaxNGNewParserCtxt(URL)
+ if ret is None:raise parserError('xmlRelaxNGNewParserCtxt() failed')
+ return relaxNgParserCtxt(_obj=ret)
+
+#
+# Functions from module tree
+#
+
+def buildQName(ncname, prefix, memory, len):
+ """Builds the QName @prefix:@ncname in @memory if there is
+ enough space and prefix is not None nor empty, otherwise
+ allocate a new string. If prefix is None or empty it
+ returns ncname. """
+ ret = libxml2mod.xmlBuildQName(ncname, prefix, memory, len)
+ return ret
+
+def compressMode():
+ """get the default compression mode used, ZLIB based. """
+ ret = libxml2mod.xmlGetCompressMode()
+ return ret
+
+def isXHTML(systemID, publicID):
+ """Try to find if the document correspond to an XHTML DTD """
+ ret = libxml2mod.xmlIsXHTML(systemID, publicID)
+ return ret
+
+def newComment(content):
+ """Creation of a new node containing a comment. """
+ ret = libxml2mod.xmlNewComment(content)
+ if ret is None:raise treeError('xmlNewComment() failed')
+ return xmlNode(_obj=ret)
+
+def newDoc(version):
+ """Creates a new XML document """
+ ret = libxml2mod.xmlNewDoc(version)
+ if ret is None:raise treeError('xmlNewDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def newPI(name, content):
+ """Creation of a processing instruction element. Use
+ xmlDocNewPI preferably to get string interning """
+ ret = libxml2mod.xmlNewPI(name, content)
+ if ret is None:raise treeError('xmlNewPI() failed')
+ return xmlNode(_obj=ret)
+
+def newText(content):
+ """Creation of a new text node. """
+ ret = libxml2mod.xmlNewText(content)
+ if ret is None:raise treeError('xmlNewText() failed')
+ return xmlNode(_obj=ret)
+
+def newTextLen(content, len):
+ """Creation of a new text node with an extra parameter for the
+ content's length """
+ ret = libxml2mod.xmlNewTextLen(content, len)
+ if ret is None:raise treeError('xmlNewTextLen() failed')
+ return xmlNode(_obj=ret)
+
+def setCompressMode(mode):
+ """set the default compression mode used, ZLIB based Correct
+ values: 0 (uncompressed) to 9 (max compression) """
+ libxml2mod.xmlSetCompressMode(mode)
+
+def validateNCName(value, space):
+ """Check that a value conforms to the lexical space of NCName """
+ ret = libxml2mod.xmlValidateNCName(value, space)
+ return ret
+
+def validateNMToken(value, space):
+ """Check that a value conforms to the lexical space of NMToken """
+ ret = libxml2mod.xmlValidateNMToken(value, space)
+ return ret
+
+def validateName(value, space):
+ """Check that a value conforms to the lexical space of Name """
+ ret = libxml2mod.xmlValidateName(value, space)
+ return ret
+
+def validateQName(value, space):
+ """Check that a value conforms to the lexical space of QName """
+ ret = libxml2mod.xmlValidateQName(value, space)
+ return ret
+
+#
+# Functions from module uri
+#
+
+def URIEscape(str):
+ """Escaping routine, does not do validity checks ! It will try
+ to escape the chars needing this, but this is heuristic
+ based it's impossible to be sure. """
+ ret = libxml2mod.xmlURIEscape(str)
+ return ret
+
+def URIEscapeStr(str, list):
+ """This routine escapes a string to hex, ignoring reserved
+ characters (a-z) and the characters in the exception list. """
+ ret = libxml2mod.xmlURIEscapeStr(str, list)
+ return ret
+
+def URIUnescapeString(str, len, target):
+ """Unescaping routine, but does not check that the string is
+ an URI. The output is a direct unsigned char translation of
+ %XX values (no encoding) Note that the length of the result
+ can only be smaller or same size as the input string. """
+ ret = libxml2mod.xmlURIUnescapeString(str, len, target)
+ return ret
+
+def buildRelativeURI(URI, base):
+ """Expresses the URI of the reference in terms relative to the
+ base. Some examples of this operation include: base =
+ "http://site1.com/docs/book1.html" URI input
+ URI returned docs/pic1.gif pic1.gif
+ docs/img/pic1.gif img/pic1.gif img/pic1.gif
+ ../img/pic1.gif http://site1.com/docs/pic1.gif pic1.gif
+ http://site2.com/docs/pic1.gif
+ http://site2.com/docs/pic1.gif base = "docs/book1.html"
+ URI input URI returned docs/pic1.gif
+ pic1.gif docs/img/pic1.gif img/pic1.gif
+ img/pic1.gif ../img/pic1.gif
+ http://site1.com/docs/pic1.gif
+ http://site1.com/docs/pic1.gif Note: if the URI reference
+ is really wierd or complicated, it may be worthwhile to
+ first convert it into a "nice" one by calling xmlBuildURI
+ (using 'base') before calling this routine, since this
+ routine (for reasonable efficiency) assumes URI has already
+ been through some validation. """
+ ret = libxml2mod.xmlBuildRelativeURI(URI, base)
+ return ret
+
+def buildURI(URI, base):
+ """Computes he final URI of the reference done by checking
+ that the given URI is valid, and building the final URI
+ using the base URI. This is processed according to section
+ 5.2 of the RFC 2396 5.2. Resolving Relative References to
+ Absolute Form """
+ ret = libxml2mod.xmlBuildURI(URI, base)
+ return ret
+
+def canonicPath(path):
+ """Constructs a canonic path from the specified path. """
+ ret = libxml2mod.xmlCanonicPath(path)
+ return ret
+
+def createURI():
+ """Simply creates an empty xmlURI """
+ ret = libxml2mod.xmlCreateURI()
+ if ret is None:raise uriError('xmlCreateURI() failed')
+ return URI(_obj=ret)
+
+def normalizeURIPath(path):
+ """Applies the 5 normalization steps to a path string--that
+ is, RFC 2396 Section 5.2, steps 6.c through 6.g.
+ Normalization occurs directly on the string, no new
+ allocation is done """
+ ret = libxml2mod.xmlNormalizeURIPath(path)
+ return ret
+
+def parseURI(str):
+ """Parse an URI based on RFC 3986 URI-reference = [
+ absoluteURI | relativeURI ] [ "#" fragment ] """
+ ret = libxml2mod.xmlParseURI(str)
+ if ret is None:raise uriError('xmlParseURI() failed')
+ return URI(_obj=ret)
+
+def parseURIRaw(str, raw):
+ """Parse an URI but allows to keep intact the original
+ fragments. URI-reference = URI / relative-ref """
+ ret = libxml2mod.xmlParseURIRaw(str, raw)
+ if ret is None:raise uriError('xmlParseURIRaw() failed')
+ return URI(_obj=ret)
+
+def pathToURI(path):
+ """Constructs an URI expressing the existing path """
+ ret = libxml2mod.xmlPathToURI(path)
+ return ret
+
+#
+# Functions from module valid
+#
+
+def newValidCtxt():
+ """Allocate a validation context structure. """
+ ret = libxml2mod.xmlNewValidCtxt()
+ if ret is None:raise treeError('xmlNewValidCtxt() failed')
+ return ValidCtxt(_obj=ret)
+
+def validateNameValue(value):
+ """Validate that the given value match Name production """
+ ret = libxml2mod.xmlValidateNameValue(value)
+ return ret
+
+def validateNamesValue(value):
+ """Validate that the given value match Names production """
+ ret = libxml2mod.xmlValidateNamesValue(value)
+ return ret
+
+def validateNmtokenValue(value):
+ """Validate that the given value match Nmtoken production [
+ VC: Name Token ] """
+ ret = libxml2mod.xmlValidateNmtokenValue(value)
+ return ret
+
+def validateNmtokensValue(value):
+ """Validate that the given value match Nmtokens production [
+ VC: Name Token ] """
+ ret = libxml2mod.xmlValidateNmtokensValue(value)
+ return ret
+
+#
+# Functions from module xmlIO
+#
+
+def checkFilename(path):
+ """function checks to see if @path is a valid source (file,
+ socket...) for XML. if stat is not available on the target
+ machine, """
+ ret = libxml2mod.xmlCheckFilename(path)
+ return ret
+
+def cleanupInputCallbacks():
+ """clears the entire input callback table. this includes the
+ compiled-in I/O. """
+ libxml2mod.xmlCleanupInputCallbacks()
+
+def cleanupOutputCallbacks():
+ """clears the entire output callback table. this includes the
+ compiled-in I/O callbacks. """
+ libxml2mod.xmlCleanupOutputCallbacks()
+
+def fileMatch(filename):
+ """input from FILE * """
+ ret = libxml2mod.xmlFileMatch(filename)
+ return ret
+
+def iOFTPMatch(filename):
+ """check if the URI matches an FTP one """
+ ret = libxml2mod.xmlIOFTPMatch(filename)
+ return ret
+
+def iOHTTPMatch(filename):
+ """check if the URI matches an HTTP one """
+ ret = libxml2mod.xmlIOHTTPMatch(filename)
+ return ret
+
+def normalizeWindowsPath(path):
+ """This function is obsolete. Please see xmlURIFromPath in
+ uri.c for a better solution. """
+ ret = libxml2mod.xmlNormalizeWindowsPath(path)
+ return ret
+
+def parserGetDirectory(filename):
+ """lookup the directory for that file """
+ ret = libxml2mod.xmlParserGetDirectory(filename)
+ return ret
+
+def registerDefaultInputCallbacks():
+ """Registers the default compiled-in I/O handlers. """
+ libxml2mod.xmlRegisterDefaultInputCallbacks()
+
+def registerDefaultOutputCallbacks():
+ """Registers the default compiled-in I/O handlers. """
+ libxml2mod.xmlRegisterDefaultOutputCallbacks()
+
+def registerHTTPPostCallbacks():
+ """By default, libxml submits HTTP output requests using the
+ "PUT" method. Calling this method changes the HTTP output
+ method to use the "POST" method instead. """
+ libxml2mod.xmlRegisterHTTPPostCallbacks()
+
+#
+# Functions from module xmlerror
+#
+
+def lastError():
+ """Get the last global error registered. This is per thread if
+ compiled with thread support. """
+ ret = libxml2mod.xmlGetLastError()
+ if ret is None:raise treeError('xmlGetLastError() failed')
+ return Error(_obj=ret)
+
+def resetLastError():
+ """Cleanup the last global error registered. For parsing error
+ this does not change the well-formedness result. """
+ libxml2mod.xmlResetLastError()
+
+#
+# Functions from module xmlreader
+#
+
+def newTextReaderFilename(URI):
+ """Create an xmlTextReader structure fed with the resource at
+ @URI """
+ ret = libxml2mod.xmlNewTextReaderFilename(URI)
+ if ret is None:raise treeError('xmlNewTextReaderFilename() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForDoc(cur, URL, encoding, options):
+ """Create an xmltextReader for an XML in-memory document. The
+ parsing flags @options are a combination of xmlParserOption. """
+ ret = libxml2mod.xmlReaderForDoc(cur, URL, encoding, options)
+ if ret is None:raise treeError('xmlReaderForDoc() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForFd(fd, URL, encoding, options):
+ """Create an xmltextReader for an XML from a file descriptor.
+ The parsing flags @options are a combination of
+ xmlParserOption. NOTE that the file descriptor will not be
+ closed when the reader is closed or reset. """
+ ret = libxml2mod.xmlReaderForFd(fd, URL, encoding, options)
+ if ret is None:raise treeError('xmlReaderForFd() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForFile(filename, encoding, options):
+ """parse an XML file from the filesystem or the network. The
+ parsing flags @options are a combination of xmlParserOption. """
+ ret = libxml2mod.xmlReaderForFile(filename, encoding, options)
+ if ret is None:raise treeError('xmlReaderForFile() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForMemory(buffer, size, URL, encoding, options):
+ """Create an xmltextReader for an XML in-memory document. The
+ parsing flags @options are a combination of xmlParserOption. """
+ ret = libxml2mod.xmlReaderForMemory(buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('xmlReaderForMemory() failed')
+ return xmlTextReader(_obj=ret)
+
+#
+# Functions from module xmlregexp
+#
+
+def regexpCompile(regexp):
+ """Parses a regular expression conforming to XML Schemas Part
+ 2 Datatype Appendix F and builds an automata suitable for
+ testing strings against that regular expression """
+ ret = libxml2mod.xmlRegexpCompile(regexp)
+ if ret is None:raise treeError('xmlRegexpCompile() failed')
+ return xmlReg(_obj=ret)
+
+#
+# Functions from module xmlschemas
+#
+
+def schemaNewMemParserCtxt(buffer, size):
+ """Create an XML Schemas parse context for that memory buffer
+ expected to contain an XML Schemas file. """
+ ret = libxml2mod.xmlSchemaNewMemParserCtxt(buffer, size)
+ if ret is None:raise parserError('xmlSchemaNewMemParserCtxt() failed')
+ return SchemaParserCtxt(_obj=ret)
+
+def schemaNewParserCtxt(URL):
+ """Create an XML Schemas parse context for that file/resource
+ expected to contain an XML Schemas file. """
+ ret = libxml2mod.xmlSchemaNewParserCtxt(URL)
+ if ret is None:raise parserError('xmlSchemaNewParserCtxt() failed')
+ return SchemaParserCtxt(_obj=ret)
+
+#
+# Functions from module xmlschemastypes
+#
+
+def schemaCleanupTypes():
+ """Cleanup the default XML Schemas type library """
+ libxml2mod.xmlSchemaCleanupTypes()
+
+def schemaCollapseString(value):
+ """Removes and normalize white spaces in the string """
+ ret = libxml2mod.xmlSchemaCollapseString(value)
+ return ret
+
+def schemaInitTypes():
+ """Initialize the default XML Schemas type library """
+ libxml2mod.xmlSchemaInitTypes()
+
+def schemaWhiteSpaceReplace(value):
+ """Replaces 0xd, 0x9 and 0xa with a space. """
+ ret = libxml2mod.xmlSchemaWhiteSpaceReplace(value)
+ return ret
+
+#
+# Functions from module xmlstring
+#
+
+def UTF8Charcmp(utf1, utf2):
+ """compares the two UCS4 values """
+ ret = libxml2mod.xmlUTF8Charcmp(utf1, utf2)
+ return ret
+
+def UTF8Size(utf):
+ """calculates the internal size of a UTF8 character """
+ ret = libxml2mod.xmlUTF8Size(utf)
+ return ret
+
+def UTF8Strlen(utf):
+ """compute the length of an UTF8 string, it doesn't do a full
+ UTF8 checking of the content of the string. """
+ ret = libxml2mod.xmlUTF8Strlen(utf)
+ return ret
+
+def UTF8Strloc(utf, utfchar):
+ """a function to provide the relative location of a UTF8 char """
+ ret = libxml2mod.xmlUTF8Strloc(utf, utfchar)
+ return ret
+
+def UTF8Strndup(utf, len):
+ """a strndup for array of UTF8's """
+ ret = libxml2mod.xmlUTF8Strndup(utf, len)
+ return ret
+
+def UTF8Strpos(utf, pos):
+ """a function to provide the equivalent of fetching a
+ character from a string array """
+ ret = libxml2mod.xmlUTF8Strpos(utf, pos)
+ return ret
+
+def UTF8Strsize(utf, len):
+ """storage size of an UTF8 string the behaviour is not
+ garanteed if the input string is not UTF-8 """
+ ret = libxml2mod.xmlUTF8Strsize(utf, len)
+ return ret
+
+def UTF8Strsub(utf, start, len):
+ """Create a substring from a given UTF-8 string Note:
+ positions are given in units of UTF-8 chars """
+ ret = libxml2mod.xmlUTF8Strsub(utf, start, len)
+ return ret
+
+def checkUTF8(utf):
+ """Checks @utf for being valid UTF-8. @utf is assumed to be
+ null-terminated. This function is not super-strict, as it
+ will allow longer UTF-8 sequences than necessary. Note that
+ Java is capable of producing these sequences if provoked.
+ Also note, this routine checks for the 4-byte maximum size,
+ but does not check for 0x10ffff maximum value. """
+ ret = libxml2mod.xmlCheckUTF8(utf)
+ return ret
+
+#
+# Functions from module xmlunicode
+#
+
+def uCSIsAegeanNumbers(code):
+ """Check whether the character is part of AegeanNumbers UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsAegeanNumbers(code)
+ return ret
+
+def uCSIsAlphabeticPresentationForms(code):
+ """Check whether the character is part of
+ AlphabeticPresentationForms UCS Block """
+ ret = libxml2mod.xmlUCSIsAlphabeticPresentationForms(code)
+ return ret
+
+def uCSIsArabic(code):
+ """Check whether the character is part of Arabic UCS Block """
+ ret = libxml2mod.xmlUCSIsArabic(code)
+ return ret
+
+def uCSIsArabicPresentationFormsA(code):
+ """Check whether the character is part of
+ ArabicPresentationForms-A UCS Block """
+ ret = libxml2mod.xmlUCSIsArabicPresentationFormsA(code)
+ return ret
+
+def uCSIsArabicPresentationFormsB(code):
+ """Check whether the character is part of
+ ArabicPresentationForms-B UCS Block """
+ ret = libxml2mod.xmlUCSIsArabicPresentationFormsB(code)
+ return ret
+
+def uCSIsArmenian(code):
+ """Check whether the character is part of Armenian UCS Block """
+ ret = libxml2mod.xmlUCSIsArmenian(code)
+ return ret
+
+def uCSIsArrows(code):
+ """Check whether the character is part of Arrows UCS Block """
+ ret = libxml2mod.xmlUCSIsArrows(code)
+ return ret
+
+def uCSIsBasicLatin(code):
+ """Check whether the character is part of BasicLatin UCS Block """
+ ret = libxml2mod.xmlUCSIsBasicLatin(code)
+ return ret
+
+def uCSIsBengali(code):
+ """Check whether the character is part of Bengali UCS Block """
+ ret = libxml2mod.xmlUCSIsBengali(code)
+ return ret
+
+def uCSIsBlock(code, block):
+ """Check whether the character is part of the UCS Block """
+ ret = libxml2mod.xmlUCSIsBlock(code, block)
+ return ret
+
+def uCSIsBlockElements(code):
+ """Check whether the character is part of BlockElements UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsBlockElements(code)
+ return ret
+
+def uCSIsBopomofo(code):
+ """Check whether the character is part of Bopomofo UCS Block """
+ ret = libxml2mod.xmlUCSIsBopomofo(code)
+ return ret
+
+def uCSIsBopomofoExtended(code):
+ """Check whether the character is part of BopomofoExtended UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsBopomofoExtended(code)
+ return ret
+
+def uCSIsBoxDrawing(code):
+ """Check whether the character is part of BoxDrawing UCS Block """
+ ret = libxml2mod.xmlUCSIsBoxDrawing(code)
+ return ret
+
+def uCSIsBraillePatterns(code):
+ """Check whether the character is part of BraillePatterns UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsBraillePatterns(code)
+ return ret
+
+def uCSIsBuhid(code):
+ """Check whether the character is part of Buhid UCS Block """
+ ret = libxml2mod.xmlUCSIsBuhid(code)
+ return ret
+
+def uCSIsByzantineMusicalSymbols(code):
+ """Check whether the character is part of
+ ByzantineMusicalSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsByzantineMusicalSymbols(code)
+ return ret
+
+def uCSIsCJKCompatibility(code):
+ """Check whether the character is part of CJKCompatibility UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibility(code)
+ return ret
+
+def uCSIsCJKCompatibilityForms(code):
+ """Check whether the character is part of
+ CJKCompatibilityForms UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibilityForms(code)
+ return ret
+
+def uCSIsCJKCompatibilityIdeographs(code):
+ """Check whether the character is part of
+ CJKCompatibilityIdeographs UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibilityIdeographs(code)
+ return ret
+
+def uCSIsCJKCompatibilityIdeographsSupplement(code):
+ """Check whether the character is part of
+ CJKCompatibilityIdeographsSupplement UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibilityIdeographsSupplement(code)
+ return ret
+
+def uCSIsCJKRadicalsSupplement(code):
+ """Check whether the character is part of
+ CJKRadicalsSupplement UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKRadicalsSupplement(code)
+ return ret
+
+def uCSIsCJKSymbolsandPunctuation(code):
+ """Check whether the character is part of
+ CJKSymbolsandPunctuation UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKSymbolsandPunctuation(code)
+ return ret
+
+def uCSIsCJKUnifiedIdeographs(code):
+ """Check whether the character is part of CJKUnifiedIdeographs
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKUnifiedIdeographs(code)
+ return ret
+
+def uCSIsCJKUnifiedIdeographsExtensionA(code):
+ """Check whether the character is part of
+ CJKUnifiedIdeographsExtensionA UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKUnifiedIdeographsExtensionA(code)
+ return ret
+
+def uCSIsCJKUnifiedIdeographsExtensionB(code):
+ """Check whether the character is part of
+ CJKUnifiedIdeographsExtensionB UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKUnifiedIdeographsExtensionB(code)
+ return ret
+
+def uCSIsCat(code, cat):
+ """Check whether the character is part of the UCS Category """
+ ret = libxml2mod.xmlUCSIsCat(code, cat)
+ return ret
+
+def uCSIsCatC(code):
+ """Check whether the character is part of C UCS Category """
+ ret = libxml2mod.xmlUCSIsCatC(code)
+ return ret
+
+def uCSIsCatCc(code):
+ """Check whether the character is part of Cc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCc(code)
+ return ret
+
+def uCSIsCatCf(code):
+ """Check whether the character is part of Cf UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCf(code)
+ return ret
+
+def uCSIsCatCo(code):
+ """Check whether the character is part of Co UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCo(code)
+ return ret
+
+def uCSIsCatCs(code):
+ """Check whether the character is part of Cs UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCs(code)
+ return ret
+
+def uCSIsCatL(code):
+ """Check whether the character is part of L UCS Category """
+ ret = libxml2mod.xmlUCSIsCatL(code)
+ return ret
+
+def uCSIsCatLl(code):
+ """Check whether the character is part of Ll UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLl(code)
+ return ret
+
+def uCSIsCatLm(code):
+ """Check whether the character is part of Lm UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLm(code)
+ return ret
+
+def uCSIsCatLo(code):
+ """Check whether the character is part of Lo UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLo(code)
+ return ret
+
+def uCSIsCatLt(code):
+ """Check whether the character is part of Lt UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLt(code)
+ return ret
+
+def uCSIsCatLu(code):
+ """Check whether the character is part of Lu UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLu(code)
+ return ret
+
+def uCSIsCatM(code):
+ """Check whether the character is part of M UCS Category """
+ ret = libxml2mod.xmlUCSIsCatM(code)
+ return ret
+
+def uCSIsCatMc(code):
+ """Check whether the character is part of Mc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatMc(code)
+ return ret
+
+def uCSIsCatMe(code):
+ """Check whether the character is part of Me UCS Category """
+ ret = libxml2mod.xmlUCSIsCatMe(code)
+ return ret
+
+def uCSIsCatMn(code):
+ """Check whether the character is part of Mn UCS Category """
+ ret = libxml2mod.xmlUCSIsCatMn(code)
+ return ret
+
+def uCSIsCatN(code):
+ """Check whether the character is part of N UCS Category """
+ ret = libxml2mod.xmlUCSIsCatN(code)
+ return ret
+
+def uCSIsCatNd(code):
+ """Check whether the character is part of Nd UCS Category """
+ ret = libxml2mod.xmlUCSIsCatNd(code)
+ return ret
+
+def uCSIsCatNl(code):
+ """Check whether the character is part of Nl UCS Category """
+ ret = libxml2mod.xmlUCSIsCatNl(code)
+ return ret
+
+def uCSIsCatNo(code):
+ """Check whether the character is part of No UCS Category """
+ ret = libxml2mod.xmlUCSIsCatNo(code)
+ return ret
+
+def uCSIsCatP(code):
+ """Check whether the character is part of P UCS Category """
+ ret = libxml2mod.xmlUCSIsCatP(code)
+ return ret
+
+def uCSIsCatPc(code):
+ """Check whether the character is part of Pc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPc(code)
+ return ret
+
+def uCSIsCatPd(code):
+ """Check whether the character is part of Pd UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPd(code)
+ return ret
+
+def uCSIsCatPe(code):
+ """Check whether the character is part of Pe UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPe(code)
+ return ret
+
+def uCSIsCatPf(code):
+ """Check whether the character is part of Pf UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPf(code)
+ return ret
+
+def uCSIsCatPi(code):
+ """Check whether the character is part of Pi UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPi(code)
+ return ret
+
+def uCSIsCatPo(code):
+ """Check whether the character is part of Po UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPo(code)
+ return ret
+
+def uCSIsCatPs(code):
+ """Check whether the character is part of Ps UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPs(code)
+ return ret
+
+def uCSIsCatS(code):
+ """Check whether the character is part of S UCS Category """
+ ret = libxml2mod.xmlUCSIsCatS(code)
+ return ret
+
+def uCSIsCatSc(code):
+ """Check whether the character is part of Sc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSc(code)
+ return ret
+
+def uCSIsCatSk(code):
+ """Check whether the character is part of Sk UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSk(code)
+ return ret
+
+def uCSIsCatSm(code):
+ """Check whether the character is part of Sm UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSm(code)
+ return ret
+
+def uCSIsCatSo(code):
+ """Check whether the character is part of So UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSo(code)
+ return ret
+
+def uCSIsCatZ(code):
+ """Check whether the character is part of Z UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZ(code)
+ return ret
+
+def uCSIsCatZl(code):
+ """Check whether the character is part of Zl UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZl(code)
+ return ret
+
+def uCSIsCatZp(code):
+ """Check whether the character is part of Zp UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZp(code)
+ return ret
+
+def uCSIsCatZs(code):
+ """Check whether the character is part of Zs UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZs(code)
+ return ret
+
+def uCSIsCherokee(code):
+ """Check whether the character is part of Cherokee UCS Block """
+ ret = libxml2mod.xmlUCSIsCherokee(code)
+ return ret
+
+def uCSIsCombiningDiacriticalMarks(code):
+ """Check whether the character is part of
+ CombiningDiacriticalMarks UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningDiacriticalMarks(code)
+ return ret
+
+def uCSIsCombiningDiacriticalMarksforSymbols(code):
+ """Check whether the character is part of
+ CombiningDiacriticalMarksforSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningDiacriticalMarksforSymbols(code)
+ return ret
+
+def uCSIsCombiningHalfMarks(code):
+ """Check whether the character is part of CombiningHalfMarks
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningHalfMarks(code)
+ return ret
+
+def uCSIsCombiningMarksforSymbols(code):
+ """Check whether the character is part of
+ CombiningMarksforSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningMarksforSymbols(code)
+ return ret
+
+def uCSIsControlPictures(code):
+ """Check whether the character is part of ControlPictures UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsControlPictures(code)
+ return ret
+
+def uCSIsCurrencySymbols(code):
+ """Check whether the character is part of CurrencySymbols UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsCurrencySymbols(code)
+ return ret
+
+def uCSIsCypriotSyllabary(code):
+ """Check whether the character is part of CypriotSyllabary UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsCypriotSyllabary(code)
+ return ret
+
+def uCSIsCyrillic(code):
+ """Check whether the character is part of Cyrillic UCS Block """
+ ret = libxml2mod.xmlUCSIsCyrillic(code)
+ return ret
+
+def uCSIsCyrillicSupplement(code):
+ """Check whether the character is part of CyrillicSupplement
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsCyrillicSupplement(code)
+ return ret
+
+def uCSIsDeseret(code):
+ """Check whether the character is part of Deseret UCS Block """
+ ret = libxml2mod.xmlUCSIsDeseret(code)
+ return ret
+
+def uCSIsDevanagari(code):
+ """Check whether the character is part of Devanagari UCS Block """
+ ret = libxml2mod.xmlUCSIsDevanagari(code)
+ return ret
+
+def uCSIsDingbats(code):
+ """Check whether the character is part of Dingbats UCS Block """
+ ret = libxml2mod.xmlUCSIsDingbats(code)
+ return ret
+
+def uCSIsEnclosedAlphanumerics(code):
+ """Check whether the character is part of
+ EnclosedAlphanumerics UCS Block """
+ ret = libxml2mod.xmlUCSIsEnclosedAlphanumerics(code)
+ return ret
+
+def uCSIsEnclosedCJKLettersandMonths(code):
+ """Check whether the character is part of
+ EnclosedCJKLettersandMonths UCS Block """
+ ret = libxml2mod.xmlUCSIsEnclosedCJKLettersandMonths(code)
+ return ret
+
+def uCSIsEthiopic(code):
+ """Check whether the character is part of Ethiopic UCS Block """
+ ret = libxml2mod.xmlUCSIsEthiopic(code)
+ return ret
+
+def uCSIsGeneralPunctuation(code):
+ """Check whether the character is part of GeneralPunctuation
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsGeneralPunctuation(code)
+ return ret
+
+def uCSIsGeometricShapes(code):
+ """Check whether the character is part of GeometricShapes UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsGeometricShapes(code)
+ return ret
+
+def uCSIsGeorgian(code):
+ """Check whether the character is part of Georgian UCS Block """
+ ret = libxml2mod.xmlUCSIsGeorgian(code)
+ return ret
+
+def uCSIsGothic(code):
+ """Check whether the character is part of Gothic UCS Block """
+ ret = libxml2mod.xmlUCSIsGothic(code)
+ return ret
+
+def uCSIsGreek(code):
+ """Check whether the character is part of Greek UCS Block """
+ ret = libxml2mod.xmlUCSIsGreek(code)
+ return ret
+
+def uCSIsGreekExtended(code):
+ """Check whether the character is part of GreekExtended UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsGreekExtended(code)
+ return ret
+
+def uCSIsGreekandCoptic(code):
+ """Check whether the character is part of GreekandCoptic UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsGreekandCoptic(code)
+ return ret
+
+def uCSIsGujarati(code):
+ """Check whether the character is part of Gujarati UCS Block """
+ ret = libxml2mod.xmlUCSIsGujarati(code)
+ return ret
+
+def uCSIsGurmukhi(code):
+ """Check whether the character is part of Gurmukhi UCS Block """
+ ret = libxml2mod.xmlUCSIsGurmukhi(code)
+ return ret
+
+def uCSIsHalfwidthandFullwidthForms(code):
+ """Check whether the character is part of
+ HalfwidthandFullwidthForms UCS Block """
+ ret = libxml2mod.xmlUCSIsHalfwidthandFullwidthForms(code)
+ return ret
+
+def uCSIsHangulCompatibilityJamo(code):
+ """Check whether the character is part of
+ HangulCompatibilityJamo UCS Block """
+ ret = libxml2mod.xmlUCSIsHangulCompatibilityJamo(code)
+ return ret
+
+def uCSIsHangulJamo(code):
+ """Check whether the character is part of HangulJamo UCS Block """
+ ret = libxml2mod.xmlUCSIsHangulJamo(code)
+ return ret
+
+def uCSIsHangulSyllables(code):
+ """Check whether the character is part of HangulSyllables UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsHangulSyllables(code)
+ return ret
+
+def uCSIsHanunoo(code):
+ """Check whether the character is part of Hanunoo UCS Block """
+ ret = libxml2mod.xmlUCSIsHanunoo(code)
+ return ret
+
+def uCSIsHebrew(code):
+ """Check whether the character is part of Hebrew UCS Block """
+ ret = libxml2mod.xmlUCSIsHebrew(code)
+ return ret
+
+def uCSIsHighPrivateUseSurrogates(code):
+ """Check whether the character is part of
+ HighPrivateUseSurrogates UCS Block """
+ ret = libxml2mod.xmlUCSIsHighPrivateUseSurrogates(code)
+ return ret
+
+def uCSIsHighSurrogates(code):
+ """Check whether the character is part of HighSurrogates UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsHighSurrogates(code)
+ return ret
+
+def uCSIsHiragana(code):
+ """Check whether the character is part of Hiragana UCS Block """
+ ret = libxml2mod.xmlUCSIsHiragana(code)
+ return ret
+
+def uCSIsIPAExtensions(code):
+ """Check whether the character is part of IPAExtensions UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsIPAExtensions(code)
+ return ret
+
+def uCSIsIdeographicDescriptionCharacters(code):
+ """Check whether the character is part of
+ IdeographicDescriptionCharacters UCS Block """
+ ret = libxml2mod.xmlUCSIsIdeographicDescriptionCharacters(code)
+ return ret
+
+def uCSIsKanbun(code):
+ """Check whether the character is part of Kanbun UCS Block """
+ ret = libxml2mod.xmlUCSIsKanbun(code)
+ return ret
+
+def uCSIsKangxiRadicals(code):
+ """Check whether the character is part of KangxiRadicals UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsKangxiRadicals(code)
+ return ret
+
+def uCSIsKannada(code):
+ """Check whether the character is part of Kannada UCS Block """
+ ret = libxml2mod.xmlUCSIsKannada(code)
+ return ret
+
+def uCSIsKatakana(code):
+ """Check whether the character is part of Katakana UCS Block """
+ ret = libxml2mod.xmlUCSIsKatakana(code)
+ return ret
+
+def uCSIsKatakanaPhoneticExtensions(code):
+ """Check whether the character is part of
+ KatakanaPhoneticExtensions UCS Block """
+ ret = libxml2mod.xmlUCSIsKatakanaPhoneticExtensions(code)
+ return ret
+
+def uCSIsKhmer(code):
+ """Check whether the character is part of Khmer UCS Block """
+ ret = libxml2mod.xmlUCSIsKhmer(code)
+ return ret
+
+def uCSIsKhmerSymbols(code):
+ """Check whether the character is part of KhmerSymbols UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsKhmerSymbols(code)
+ return ret
+
+def uCSIsLao(code):
+ """Check whether the character is part of Lao UCS Block """
+ ret = libxml2mod.xmlUCSIsLao(code)
+ return ret
+
+def uCSIsLatin1Supplement(code):
+ """Check whether the character is part of Latin-1Supplement
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsLatin1Supplement(code)
+ return ret
+
+def uCSIsLatinExtendedA(code):
+ """Check whether the character is part of LatinExtended-A UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLatinExtendedA(code)
+ return ret
+
+def uCSIsLatinExtendedAdditional(code):
+ """Check whether the character is part of
+ LatinExtendedAdditional UCS Block """
+ ret = libxml2mod.xmlUCSIsLatinExtendedAdditional(code)
+ return ret
+
+def uCSIsLatinExtendedB(code):
+ """Check whether the character is part of LatinExtended-B UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLatinExtendedB(code)
+ return ret
+
+def uCSIsLetterlikeSymbols(code):
+ """Check whether the character is part of LetterlikeSymbols
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsLetterlikeSymbols(code)
+ return ret
+
+def uCSIsLimbu(code):
+ """Check whether the character is part of Limbu UCS Block """
+ ret = libxml2mod.xmlUCSIsLimbu(code)
+ return ret
+
+def uCSIsLinearBIdeograms(code):
+ """Check whether the character is part of LinearBIdeograms UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLinearBIdeograms(code)
+ return ret
+
+def uCSIsLinearBSyllabary(code):
+ """Check whether the character is part of LinearBSyllabary UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLinearBSyllabary(code)
+ return ret
+
+def uCSIsLowSurrogates(code):
+ """Check whether the character is part of LowSurrogates UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLowSurrogates(code)
+ return ret
+
+def uCSIsMalayalam(code):
+ """Check whether the character is part of Malayalam UCS Block """
+ ret = libxml2mod.xmlUCSIsMalayalam(code)
+ return ret
+
+def uCSIsMathematicalAlphanumericSymbols(code):
+ """Check whether the character is part of
+ MathematicalAlphanumericSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsMathematicalAlphanumericSymbols(code)
+ return ret
+
+def uCSIsMathematicalOperators(code):
+ """Check whether the character is part of
+ MathematicalOperators UCS Block """
+ ret = libxml2mod.xmlUCSIsMathematicalOperators(code)
+ return ret
+
+def uCSIsMiscellaneousMathematicalSymbolsA(code):
+ """Check whether the character is part of
+ MiscellaneousMathematicalSymbols-A UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousMathematicalSymbolsA(code)
+ return ret
+
+def uCSIsMiscellaneousMathematicalSymbolsB(code):
+ """Check whether the character is part of
+ MiscellaneousMathematicalSymbols-B UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousMathematicalSymbolsB(code)
+ return ret
+
+def uCSIsMiscellaneousSymbols(code):
+ """Check whether the character is part of MiscellaneousSymbols
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousSymbols(code)
+ return ret
+
+def uCSIsMiscellaneousSymbolsandArrows(code):
+ """Check whether the character is part of
+ MiscellaneousSymbolsandArrows UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousSymbolsandArrows(code)
+ return ret
+
+def uCSIsMiscellaneousTechnical(code):
+ """Check whether the character is part of
+ MiscellaneousTechnical UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousTechnical(code)
+ return ret
+
+def uCSIsMongolian(code):
+ """Check whether the character is part of Mongolian UCS Block """
+ ret = libxml2mod.xmlUCSIsMongolian(code)
+ return ret
+
+def uCSIsMusicalSymbols(code):
+ """Check whether the character is part of MusicalSymbols UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsMusicalSymbols(code)
+ return ret
+
+def uCSIsMyanmar(code):
+ """Check whether the character is part of Myanmar UCS Block """
+ ret = libxml2mod.xmlUCSIsMyanmar(code)
+ return ret
+
+def uCSIsNumberForms(code):
+ """Check whether the character is part of NumberForms UCS Block """
+ ret = libxml2mod.xmlUCSIsNumberForms(code)
+ return ret
+
+def uCSIsOgham(code):
+ """Check whether the character is part of Ogham UCS Block """
+ ret = libxml2mod.xmlUCSIsOgham(code)
+ return ret
+
+def uCSIsOldItalic(code):
+ """Check whether the character is part of OldItalic UCS Block """
+ ret = libxml2mod.xmlUCSIsOldItalic(code)
+ return ret
+
+def uCSIsOpticalCharacterRecognition(code):
+ """Check whether the character is part of
+ OpticalCharacterRecognition UCS Block """
+ ret = libxml2mod.xmlUCSIsOpticalCharacterRecognition(code)
+ return ret
+
+def uCSIsOriya(code):
+ """Check whether the character is part of Oriya UCS Block """
+ ret = libxml2mod.xmlUCSIsOriya(code)
+ return ret
+
+def uCSIsOsmanya(code):
+ """Check whether the character is part of Osmanya UCS Block """
+ ret = libxml2mod.xmlUCSIsOsmanya(code)
+ return ret
+
+def uCSIsPhoneticExtensions(code):
+ """Check whether the character is part of PhoneticExtensions
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsPhoneticExtensions(code)
+ return ret
+
+def uCSIsPrivateUse(code):
+ """Check whether the character is part of PrivateUse UCS Block """
+ ret = libxml2mod.xmlUCSIsPrivateUse(code)
+ return ret
+
+def uCSIsPrivateUseArea(code):
+ """Check whether the character is part of PrivateUseArea UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsPrivateUseArea(code)
+ return ret
+
+def uCSIsRunic(code):
+ """Check whether the character is part of Runic UCS Block """
+ ret = libxml2mod.xmlUCSIsRunic(code)
+ return ret
+
+def uCSIsShavian(code):
+ """Check whether the character is part of Shavian UCS Block """
+ ret = libxml2mod.xmlUCSIsShavian(code)
+ return ret
+
+def uCSIsSinhala(code):
+ """Check whether the character is part of Sinhala UCS Block """
+ ret = libxml2mod.xmlUCSIsSinhala(code)
+ return ret
+
+def uCSIsSmallFormVariants(code):
+ """Check whether the character is part of SmallFormVariants
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsSmallFormVariants(code)
+ return ret
+
+def uCSIsSpacingModifierLetters(code):
+ """Check whether the character is part of
+ SpacingModifierLetters UCS Block """
+ ret = libxml2mod.xmlUCSIsSpacingModifierLetters(code)
+ return ret
+
+def uCSIsSpecials(code):
+ """Check whether the character is part of Specials UCS Block """
+ ret = libxml2mod.xmlUCSIsSpecials(code)
+ return ret
+
+def uCSIsSuperscriptsandSubscripts(code):
+ """Check whether the character is part of
+ SuperscriptsandSubscripts UCS Block """
+ ret = libxml2mod.xmlUCSIsSuperscriptsandSubscripts(code)
+ return ret
+
+def uCSIsSupplementalArrowsA(code):
+ """Check whether the character is part of SupplementalArrows-A
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementalArrowsA(code)
+ return ret
+
+def uCSIsSupplementalArrowsB(code):
+ """Check whether the character is part of SupplementalArrows-B
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementalArrowsB(code)
+ return ret
+
+def uCSIsSupplementalMathematicalOperators(code):
+ """Check whether the character is part of
+ SupplementalMathematicalOperators UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementalMathematicalOperators(code)
+ return ret
+
+def uCSIsSupplementaryPrivateUseAreaA(code):
+ """Check whether the character is part of
+ SupplementaryPrivateUseArea-A UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementaryPrivateUseAreaA(code)
+ return ret
+
+def uCSIsSupplementaryPrivateUseAreaB(code):
+ """Check whether the character is part of
+ SupplementaryPrivateUseArea-B UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementaryPrivateUseAreaB(code)
+ return ret
+
+def uCSIsSyriac(code):
+ """Check whether the character is part of Syriac UCS Block """
+ ret = libxml2mod.xmlUCSIsSyriac(code)
+ return ret
+
+def uCSIsTagalog(code):
+ """Check whether the character is part of Tagalog UCS Block """
+ ret = libxml2mod.xmlUCSIsTagalog(code)
+ return ret
+
+def uCSIsTagbanwa(code):
+ """Check whether the character is part of Tagbanwa UCS Block """
+ ret = libxml2mod.xmlUCSIsTagbanwa(code)
+ return ret
+
+def uCSIsTags(code):
+ """Check whether the character is part of Tags UCS Block """
+ ret = libxml2mod.xmlUCSIsTags(code)
+ return ret
+
+def uCSIsTaiLe(code):
+ """Check whether the character is part of TaiLe UCS Block """
+ ret = libxml2mod.xmlUCSIsTaiLe(code)
+ return ret
+
+def uCSIsTaiXuanJingSymbols(code):
+ """Check whether the character is part of TaiXuanJingSymbols
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsTaiXuanJingSymbols(code)
+ return ret
+
+def uCSIsTamil(code):
+ """Check whether the character is part of Tamil UCS Block """
+ ret = libxml2mod.xmlUCSIsTamil(code)
+ return ret
+
+def uCSIsTelugu(code):
+ """Check whether the character is part of Telugu UCS Block """
+ ret = libxml2mod.xmlUCSIsTelugu(code)
+ return ret
+
+def uCSIsThaana(code):
+ """Check whether the character is part of Thaana UCS Block """
+ ret = libxml2mod.xmlUCSIsThaana(code)
+ return ret
+
+def uCSIsThai(code):
+ """Check whether the character is part of Thai UCS Block """
+ ret = libxml2mod.xmlUCSIsThai(code)
+ return ret
+
+def uCSIsTibetan(code):
+ """Check whether the character is part of Tibetan UCS Block """
+ ret = libxml2mod.xmlUCSIsTibetan(code)
+ return ret
+
+def uCSIsUgaritic(code):
+ """Check whether the character is part of Ugaritic UCS Block """
+ ret = libxml2mod.xmlUCSIsUgaritic(code)
+ return ret
+
+def uCSIsUnifiedCanadianAboriginalSyllabics(code):
+ """Check whether the character is part of
+ UnifiedCanadianAboriginalSyllabics UCS Block """
+ ret = libxml2mod.xmlUCSIsUnifiedCanadianAboriginalSyllabics(code)
+ return ret
+
+def uCSIsVariationSelectors(code):
+ """Check whether the character is part of VariationSelectors
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsVariationSelectors(code)
+ return ret
+
+def uCSIsVariationSelectorsSupplement(code):
+ """Check whether the character is part of
+ VariationSelectorsSupplement UCS Block """
+ ret = libxml2mod.xmlUCSIsVariationSelectorsSupplement(code)
+ return ret
+
+def uCSIsYiRadicals(code):
+ """Check whether the character is part of YiRadicals UCS Block """
+ ret = libxml2mod.xmlUCSIsYiRadicals(code)
+ return ret
+
+def uCSIsYiSyllables(code):
+ """Check whether the character is part of YiSyllables UCS Block """
+ ret = libxml2mod.xmlUCSIsYiSyllables(code)
+ return ret
+
+def uCSIsYijingHexagramSymbols(code):
+ """Check whether the character is part of
+ YijingHexagramSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsYijingHexagramSymbols(code)
+ return ret
+
+#
+# Functions from module xmlversion
+#
+
+def checkVersion(version):
+ """check the compiled lib version against the include one.
+ This can warn or immediately kill the application """
+ libxml2mod.xmlCheckVersion(version)
+
+#
+# Functions from module xpathInternals
+#
+
+def valuePop(ctxt):
+ """Pops the top XPath object from the value stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.valuePop(ctxt__o)
+ return ret
+
+class xmlNode(xmlCore):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlNode got a wrong wrapper object type')
+ self._o = _obj
+ xmlCore.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlNode (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ # accessors for xmlNode
+ def ns(self):
+ """Get the namespace of a node """
+ ret = libxml2mod.xmlNodeGetNs(self._o)
+ if ret is None:return None
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def nsDefs(self):
+ """Get the namespace of a node """
+ ret = libxml2mod.xmlNodeGetNsDefs(self._o)
+ if ret is None:return None
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ #
+ # xmlNode functions from module debugXML
+ #
+
+ def debugDumpNode(self, output, depth):
+ """Dumps debug information for the element node, it is
+ recursive """
+ libxml2mod.xmlDebugDumpNode(output, self._o, depth)
+
+ def debugDumpNodeList(self, output, depth):
+ """Dumps debug information for the list of element node, it is
+ recursive """
+ libxml2mod.xmlDebugDumpNodeList(output, self._o, depth)
+
+ def debugDumpOneNode(self, output, depth):
+ """Dumps debug information for the element node, it is not
+ recursive """
+ libxml2mod.xmlDebugDumpOneNode(output, self._o, depth)
+
+ def lsCountNode(self):
+ """Count the children of @node. """
+ ret = libxml2mod.xmlLsCountNode(self._o)
+ return ret
+
+ def lsOneNode(self, output):
+ """Dump to @output the type and name of @node. """
+ libxml2mod.xmlLsOneNode(output, self._o)
+
+ def shellPrintNode(self):
+ """Print node to the output FILE """
+ libxml2mod.xmlShellPrintNode(self._o)
+
+ #
+ # xmlNode functions from module tree
+ #
+
+ def addChild(self, cur):
+ """Add a new node to @parent, at the end of the child (or
+ property) list merging adjacent TEXT nodes (in which case
+ @cur is freed) If the new node is ATTRIBUTE, it is added
+ into properties instead of children. If there is an
+ attribute with equal name, it is first destroyed. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlAddChild(self._o, cur__o)
+ if ret is None:raise treeError('xmlAddChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addChildList(self, cur):
+ """Add a list of node at the end of the child list of the
+ parent merging adjacent TEXT nodes (@cur may be freed) """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlAddChildList(self._o, cur__o)
+ if ret is None:raise treeError('xmlAddChildList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addContent(self, content):
+ """Append the extra substring to the node content. NOTE: In
+ contrast to xmlNodeSetContent(), @content is supposed to be
+ raw text, so unescaped XML special chars are allowed,
+ entity references are not supported. """
+ libxml2mod.xmlNodeAddContent(self._o, content)
+
+ def addContentLen(self, content, len):
+ """Append the extra substring to the node content. NOTE: In
+ contrast to xmlNodeSetContentLen(), @content is supposed to
+ be raw text, so unescaped XML special chars are allowed,
+ entity references are not supported. """
+ libxml2mod.xmlNodeAddContentLen(self._o, content, len)
+
+ def addNextSibling(self, elem):
+ """Add a new node @elem as the next sibling of @cur If the new
+ node was already inserted in a document it is first
+ unlinked from its existing context. As a result of text
+ merging @elem may be freed. If the new node is ATTRIBUTE,
+ it is added into properties instead of children. If there
+ is an attribute with equal name, it is first destroyed. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlAddNextSibling(self._o, elem__o)
+ if ret is None:raise treeError('xmlAddNextSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addPrevSibling(self, elem):
+ """Add a new node @elem as the previous sibling of @cur
+ merging adjacent TEXT nodes (@elem may be freed) If the new
+ node was already inserted in a document it is first
+ unlinked from its existing context. If the new node is
+ ATTRIBUTE, it is added into properties instead of children.
+ If there is an attribute with equal name, it is first
+ destroyed. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlAddPrevSibling(self._o, elem__o)
+ if ret is None:raise treeError('xmlAddPrevSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addSibling(self, elem):
+ """Add a new element @elem to the list of siblings of @cur
+ merging adjacent TEXT nodes (@elem may be freed) If the new
+ element was already inserted in a document it is first
+ unlinked from its existing context. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlAddSibling(self._o, elem__o)
+ if ret is None:raise treeError('xmlAddSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyNode(self, extended):
+ """Do a copy of the node. """
+ ret = libxml2mod.xmlCopyNode(self._o, extended)
+ if ret is None:raise treeError('xmlCopyNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyNodeList(self):
+ """Do a recursive copy of the node list. Use
+ xmlDocCopyNodeList() if possible to ensure string interning. """
+ ret = libxml2mod.xmlCopyNodeList(self._o)
+ if ret is None:raise treeError('xmlCopyNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyProp(self, cur):
+ """Do a copy of the attribute. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlCopyProp(self._o, cur__o)
+ if ret is None:raise treeError('xmlCopyProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def copyPropList(self, cur):
+ """Do a copy of an attribute list. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlCopyPropList(self._o, cur__o)
+ if ret is None:raise treeError('xmlCopyPropList() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def docCopyNode(self, doc, extended):
+ """Do a copy of the node to a given document. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlDocCopyNode(self._o, doc__o, extended)
+ if ret is None:raise treeError('xmlDocCopyNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def docCopyNodeList(self, doc):
+ """Do a recursive copy of the node list. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlDocCopyNodeList(doc__o, self._o)
+ if ret is None:raise treeError('xmlDocCopyNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def docSetRootElement(self, doc):
+ """Set the root element of the document (doc->children is a
+ list containing possibly comments, PIs, etc ...). """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlDocSetRootElement(doc__o, self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def firstElementChild(self):
+ """Finds the first child node of that element which is a
+ Element node Note the handling of entities references is
+ different than in the W3C DOM element traversal spec since
+ we don't have back reference from entities content to
+ entities references. """
+ ret = libxml2mod.xmlFirstElementChild(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def freeNode(self):
+ """Free a node, this is a recursive behaviour, all the
+ children are freed too. This doesn't unlink the child from
+ the list, use xmlUnlinkNode() first. """
+ libxml2mod.xmlFreeNode(self._o)
+
+ def freeNodeList(self):
+ """Free a node and all its siblings, this is a recursive
+ behaviour, all the children are freed too. """
+ libxml2mod.xmlFreeNodeList(self._o)
+
+ def getBase(self, doc):
+ """Searches for the BASE URL. The code should work on both XML
+ and HTML document even if base mechanisms are completely
+ different. It returns the base as defined in RFC 2396
+ sections 5.1.1. Base URI within Document Content and 5.1.2.
+ Base URI from the Encapsulating Entity However it does not
+ return the document base (5.1.3), use doc->URL in this case """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNodeGetBase(doc__o, self._o)
+ return ret
+
+ def getContent(self):
+ """Read the value of a node, this can be either the text
+ carried directly by this node if it's a TEXT node or the
+ aggregate string of the values carried by this node child's
+ (TEXT and ENTITY_REF). Entity references are substituted. """
+ ret = libxml2mod.xmlNodeGetContent(self._o)
+ return ret
+
+ def getLang(self):
+ """Searches the language of a node, i.e. the values of the
+ xml:lang attribute or the one carried by the nearest
+ ancestor. """
+ ret = libxml2mod.xmlNodeGetLang(self._o)
+ return ret
+
+ def getSpacePreserve(self):
+ """Searches the space preserving behaviour of a node, i.e. the
+ values of the xml:space attribute or the one carried by the
+ nearest ancestor. """
+ ret = libxml2mod.xmlNodeGetSpacePreserve(self._o)
+ return ret
+
+ def hasNsProp(self, name, nameSpace):
+ """Search for an attribute associated to a node This attribute
+ has to be anchored in the namespace specified. This does
+ the entity substitution. This function looks in DTD
+ attribute declaration for #FIXED or default declaration
+ values unless DTD use has been turned off. Note that a
+ namespace of None indicates to use the default namespace. """
+ ret = libxml2mod.xmlHasNsProp(self._o, name, nameSpace)
+ if ret is None:return None
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def hasProp(self, name):
+ """Search an attribute associated to a node This function also
+ looks in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off. """
+ ret = libxml2mod.xmlHasProp(self._o, name)
+ if ret is None:return None
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def isBlankNode(self):
+ """Checks whether this node is an empty or whitespace only
+ (and possibly ignorable) text-node. """
+ ret = libxml2mod.xmlIsBlankNode(self._o)
+ return ret
+
+ def isText(self):
+ """Is this node a Text node ? """
+ ret = libxml2mod.xmlNodeIsText(self._o)
+ return ret
+
+ def lastChild(self):
+ """Search the last child of a node. """
+ ret = libxml2mod.xmlGetLastChild(self._o)
+ if ret is None:raise treeError('xmlGetLastChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def lastElementChild(self):
+ """Finds the last child node of that element which is a
+ Element node Note the handling of entities references is
+ different than in the W3C DOM element traversal spec since
+ we don't have back reference from entities content to
+ entities references. """
+ ret = libxml2mod.xmlLastElementChild(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def lineNo(self):
+ """Get line number of @node. Try to override the limitation of
+ lines being store in 16 bits ints if XML_PARSE_BIG_LINES
+ parser option was used """
+ ret = libxml2mod.xmlGetLineNo(self._o)
+ return ret
+
+ def listGetRawString(self, doc, inLine):
+ """Builds the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs, contrary to
+ xmlNodeListGetString() this function doesn't do any
+ character encoding handling. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNodeListGetRawString(doc__o, self._o, inLine)
+ return ret
+
+ def listGetString(self, doc, inLine):
+ """Build the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNodeListGetString(doc__o, self._o, inLine)
+ return ret
+
+ def newChild(self, ns, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child list containing the TEXTs and ENTITY_REFs node will
+ be created. NOTE: @content is supposed to be a piece of XML
+ CDATA, so it allows entity references. XML special chars
+ must be escaped first by using
+ xmlEncodeEntitiesReentrant(), or xmlNewTextChild() should
+ be used. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newNs(self, href, prefix):
+ """Creation of a new Namespace. This function will refuse to
+ create a namespace with a similar prefix than an existing
+ one present on this node. Note that for a default
+ namespace, @prefix should be None. We use href==None in
+ the case of an element creation where the namespace was not
+ defined. """
+ ret = libxml2mod.xmlNewNs(self._o, href, prefix)
+ if ret is None:raise treeError('xmlNewNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def newNsProp(self, ns, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewNsProp(self._o, ns__o, name, value)
+ if ret is None:raise treeError('xmlNewNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newNsPropEatName(self, ns, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewNsPropEatName(self._o, ns__o, name, value)
+ if ret is None:raise treeError('xmlNewNsPropEatName() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newProp(self, name, value):
+ """Create a new property carried by a node. """
+ ret = libxml2mod.xmlNewProp(self._o, name, value)
+ if ret is None:raise treeError('xmlNewProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newTextChild(self, ns, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child TEXT node will be created containing the string
+ @content. NOTE: Use xmlNewChild() if @content will contain
+ entities that need to be preserved. Use this function,
+ xmlNewTextChild(), if you need to ensure that reserved XML
+ chars that might appear in @content, such as the ampersand,
+ greater-than or less-than signs, are automatically replaced
+ by their XML escaped entity representations. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewTextChild(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewTextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def nextElementSibling(self):
+ """Finds the first closest next sibling of the node which is
+ an element node. Note the handling of entities references
+ is different than in the W3C DOM element traversal spec
+ since we don't have back reference from entities content to
+ entities references. """
+ ret = libxml2mod.xmlNextElementSibling(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def noNsProp(self, name):
+ """Search and get the value of an attribute associated to a
+ node This does the entity substitution. This function looks
+ in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off. This
+ function is similar to xmlGetProp except it will accept
+ only an attribute in no namespace. """
+ ret = libxml2mod.xmlGetNoNsProp(self._o, name)
+ return ret
+
+ def nodePath(self):
+ """Build a structure based Path for the given node """
+ ret = libxml2mod.xmlGetNodePath(self._o)
+ return ret
+
+ def nsProp(self, name, nameSpace):
+ """Search and get the value of an attribute associated to a
+ node This attribute has to be anchored in the namespace
+ specified. This does the entity substitution. This function
+ looks in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off. """
+ ret = libxml2mod.xmlGetNsProp(self._o, name, nameSpace)
+ return ret
+
+ def previousElementSibling(self):
+ """Finds the first closest previous sibling of the node which
+ is an element node. Note the handling of entities
+ references is different than in the W3C DOM element
+ traversal spec since we don't have back reference from
+ entities content to entities references. """
+ ret = libxml2mod.xmlPreviousElementSibling(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def prop(self, name):
+ """Search and get the value of an attribute associated to a
+ node This does the entity substitution. This function looks
+ in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off.
+ NOTE: this function acts independently of namespaces
+ associated to the attribute. Use xmlGetNsProp() or
+ xmlGetNoNsProp() for namespace aware processing. """
+ ret = libxml2mod.xmlGetProp(self._o, name)
+ return ret
+
+ def reconciliateNs(self, doc):
+ """This function checks that all the namespaces declared
+ within the given tree are properly declared. This is needed
+ for example after Copy or Cut and then paste operations.
+ The subtree may still hold pointers to namespace
+ declarations outside the subtree or invalid/masked. As much
+ as possible the function try to reuse the existing
+ namespaces found in the new environment. If not possible
+ the new namespaces are redeclared on @tree at the top of
+ the given subtree. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlReconciliateNs(doc__o, self._o)
+ return ret
+
+ def replaceNode(self, cur):
+ """Unlink the old node from its current context, prune the new
+ one at the same place. If @cur was already inserted in a
+ document it is first unlinked from its existing context. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlReplaceNode(self._o, cur__o)
+ if ret is None:raise treeError('xmlReplaceNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def searchNs(self, doc, nameSpace):
+ """Search a Ns registered under a given name space for a
+ document. recurse on the parents until it finds the defined
+ namespace or return None otherwise. @nameSpace can be None,
+ this is a search for the default namespace. We don't allow
+ to cross entities boundaries. If you don't declare the
+ namespace within those you will be in troubles !!! A
+ warning is generated to cover this case. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlSearchNs(doc__o, self._o, nameSpace)
+ if ret is None:raise treeError('xmlSearchNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def searchNsByHref(self, doc, href):
+ """Search a Ns aliasing a given URI. Recurse on the parents
+ until it finds the defined namespace or return None
+ otherwise. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlSearchNsByHref(doc__o, self._o, href)
+ if ret is None:raise treeError('xmlSearchNsByHref() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def setBase(self, uri):
+ """Set (or reset) the base URI of a node, i.e. the value of
+ the xml:base attribute. """
+ libxml2mod.xmlNodeSetBase(self._o, uri)
+
+ def setContent(self, content):
+ """Replace the content of a node. NOTE: @content is supposed
+ to be a piece of XML CDATA, so it allows entity references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant() resp. xmlEncodeSpecialChars(). """
+ libxml2mod.xmlNodeSetContent(self._o, content)
+
+ def setContentLen(self, content, len):
+ """Replace the content of a node. NOTE: @content is supposed
+ to be a piece of XML CDATA, so it allows entity references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant() resp. xmlEncodeSpecialChars(). """
+ libxml2mod.xmlNodeSetContentLen(self._o, content, len)
+
+ def setLang(self, lang):
+ """Set the language of a node, i.e. the values of the xml:lang
+ attribute. """
+ libxml2mod.xmlNodeSetLang(self._o, lang)
+
+ def setListDoc(self, doc):
+ """update all nodes in the list to point to the right document """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ libxml2mod.xmlSetListDoc(self._o, doc__o)
+
+ def setName(self, name):
+ """Set (or reset) the name of a node. """
+ libxml2mod.xmlNodeSetName(self._o, name)
+
+ def setNs(self, ns):
+ """Associate a namespace to a node, a posteriori. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ libxml2mod.xmlSetNs(self._o, ns__o)
+
+ def setNsProp(self, ns, name, value):
+ """Set (or reset) an attribute carried by a node. The ns
+ structure must be in scope, this is not checked """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlSetNsProp(self._o, ns__o, name, value)
+ if ret is None:raise treeError('xmlSetNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def setProp(self, name, value):
+ """Set (or reset) an attribute carried by a node. If @name has
+ a prefix, then the corresponding namespace-binding will be
+ used, if in scope; it is an error it there's no such
+ ns-binding for the prefix in scope. """
+ ret = libxml2mod.xmlSetProp(self._o, name, value)
+ if ret is None:raise treeError('xmlSetProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def setSpacePreserve(self, val):
+ """Set (or reset) the space preserving behaviour of a node,
+ i.e. the value of the xml:space attribute. """
+ libxml2mod.xmlNodeSetSpacePreserve(self._o, val)
+
+ def setTreeDoc(self, doc):
+ """update all nodes under the tree to point to the right
+ document """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ libxml2mod.xmlSetTreeDoc(self._o, doc__o)
+
+ def textConcat(self, content, len):
+ """Concat the given string at the end of the existing node
+ content """
+ ret = libxml2mod.xmlTextConcat(self._o, content, len)
+ return ret
+
+ def textMerge(self, second):
+ """Merge two text nodes into one """
+ if second is None: second__o = None
+ else: second__o = second._o
+ ret = libxml2mod.xmlTextMerge(self._o, second__o)
+ if ret is None:raise treeError('xmlTextMerge() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def unlinkNode(self):
+ """Unlink a node from it's current context, the node is not
+ freed If one need to free the node, use xmlFreeNode()
+ routine after the unlink to discard it. Note that namespace
+ nodes can't be unlinked as they do not have pointer to
+ their parent. """
+ libxml2mod.xmlUnlinkNode(self._o)
+
+ def unsetNsProp(self, ns, name):
+ """Remove an attribute carried by a node. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlUnsetNsProp(self._o, ns__o, name)
+ return ret
+
+ def unsetProp(self, name):
+ """Remove an attribute carried by a node. This handles only
+ attributes in no namespace. """
+ ret = libxml2mod.xmlUnsetProp(self._o, name)
+ return ret
+
+ #
+ # xmlNode functions from module valid
+ #
+
+ def isID(self, doc, attr):
+ """Determine whether an attribute is of type ID. In case we
+ have DTD(s) then this is done if DTD loading has been
+ requested. In the case of HTML documents parsed with the
+ HTML parser, then ID detection is done systematically. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsID(doc__o, self._o, attr__o)
+ return ret
+
+ def isRef(self, doc, attr):
+ """Determine whether an attribute is of type Ref. In case we
+ have DTD(s) then this is simple, otherwise we use an
+ heuristic: name Ref (upper or lowercase). """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsRef(doc__o, self._o, attr__o)
+ return ret
+
+ def validNormalizeAttributeValue(self, doc, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidNormalizeAttributeValue(doc__o, self._o, name, value)
+ return ret
+
+ #
+ # xmlNode functions from module xinclude
+ #
+
+ def xincludeProcessTree(self):
+ """Implement the XInclude substitution for the given subtree """
+ ret = libxml2mod.xmlXIncludeProcessTree(self._o)
+ return ret
+
+ def xincludeProcessTreeFlags(self, flags):
+ """Implement the XInclude substitution for the given subtree """
+ ret = libxml2mod.xmlXIncludeProcessTreeFlags(self._o, flags)
+ return ret
+
+ #
+ # xmlNode functions from module xmlschemas
+ #
+
+ def schemaValidateOneElement(self, ctxt):
+ """Validate a branch of a tree, starting with the given @elem. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlSchemaValidateOneElement(ctxt__o, self._o)
+ return ret
+
+ #
+ # xmlNode functions from module xpath
+ #
+
+ def xpathCastNodeToNumber(self):
+ """Converts a node to its number value """
+ ret = libxml2mod.xmlXPathCastNodeToNumber(self._o)
+ return ret
+
+ def xpathCastNodeToString(self):
+ """Converts a node to its string value. """
+ ret = libxml2mod.xmlXPathCastNodeToString(self._o)
+ return ret
+
+ def xpathCmpNodes(self, node2):
+ """Compare two nodes w.r.t document order """
+ if node2 is None: node2__o = None
+ else: node2__o = node2._o
+ ret = libxml2mod.xmlXPathCmpNodes(self._o, node2__o)
+ return ret
+
+ def xpathNodeEval(self, str, ctx):
+ """Evaluate the XPath Location Path in the given context. The
+ node 'node' is set as the context node. The context node is
+ not restored. """
+ if ctx is None: ctx__o = None
+ else: ctx__o = ctx._o
+ ret = libxml2mod.xmlXPathNodeEval(self._o, str, ctx__o)
+ if ret is None:raise xpathError('xmlXPathNodeEval() failed')
+ return xpathObjectRet(ret)
+
+ #
+ # xmlNode functions from module xpathInternals
+ #
+
+ def xpathNewNodeSet(self):
+ """Create a new xmlXPathObjectPtr of type NodeSet and
+ initialize it with the single Node @val """
+ ret = libxml2mod.xmlXPathNewNodeSet(self._o)
+ if ret is None:raise xpathError('xmlXPathNewNodeSet() failed')
+ return xpathObjectRet(ret)
+
+ def xpathNewValueTree(self):
+ """Create a new xmlXPathObjectPtr of type Value Tree (XSLT)
+ and initialize it with the tree root @val """
+ ret = libxml2mod.xmlXPathNewValueTree(self._o)
+ if ret is None:raise xpathError('xmlXPathNewValueTree() failed')
+ return xpathObjectRet(ret)
+
+ def xpathNextAncestor(self, ctxt):
+ """Traversal function for the "ancestor" direction the
+ ancestor axis contains the ancestors of the context node;
+ the ancestors of the context node consist of the parent of
+ context node and the parent's parent and so on; the nodes
+ are ordered in reverse document order; thus the parent is
+ the first node on the axis, and the parent's parent is the
+ second node on the axis """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextAncestor(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextAncestor() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAncestorOrSelf(self, ctxt):
+ """Traversal function for the "ancestor-or-self" direction he
+ ancestor-or-self axis contains the context node and
+ ancestors of the context node in reverse document order;
+ thus the context node is the first node on the axis, and
+ the context node's parent the second; parent here is
+ defined the same as with the parent axis. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextAncestorOrSelf(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextAncestorOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAttribute(self, ctxt):
+ """Traversal function for the "attribute" direction TODO:
+ support DTD inherited default attributes """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextAttribute(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextAttribute() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextChild(self, ctxt):
+ """Traversal function for the "child" direction The child axis
+ contains the children of the context node in document order. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextChild(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendant(self, ctxt):
+ """Traversal function for the "descendant" direction the
+ descendant axis contains the descendants of the context
+ node in document order; a descendant is a child or a child
+ of a child and so on. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextDescendant(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextDescendant() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendantOrSelf(self, ctxt):
+ """Traversal function for the "descendant-or-self" direction
+ the descendant-or-self axis contains the context node and
+ the descendants of the context node in document order; thus
+ the context node is the first node on the axis, and the
+ first child of the context node is the second node on the
+ axis """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextDescendantOrSelf(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextDescendantOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowing(self, ctxt):
+ """Traversal function for the "following" direction The
+ following axis contains all nodes in the same document as
+ the context node that are after the context node in
+ document order, excluding any descendants and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in document order """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextFollowing(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextFollowing() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowingSibling(self, ctxt):
+ """Traversal function for the "following-sibling" direction
+ The following-sibling axis contains the following siblings
+ of the context node in document order. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextFollowingSibling(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextFollowingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextNamespace(self, ctxt):
+ """Traversal function for the "namespace" direction the
+ namespace axis contains the namespace nodes of the context
+ node; the order of nodes on this axis is
+ implementation-defined; the axis will be empty unless the
+ context node is an element We keep the XML namespace node
+ at the end of the list. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextNamespace(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextNamespace() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextParent(self, ctxt):
+ """Traversal function for the "parent" direction The parent
+ axis contains the parent of the context node, if there is
+ one. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextParent(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextParent() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPreceding(self, ctxt):
+ """Traversal function for the "preceding" direction the
+ preceding axis contains all nodes in the same document as
+ the context node that are before the context node in
+ document order, excluding any ancestors and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in reverse document order """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextPreceding(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextPreceding() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPrecedingSibling(self, ctxt):
+ """Traversal function for the "preceding-sibling" direction
+ The preceding-sibling axis contains the preceding siblings
+ of the context node in reverse document order; the first
+ preceding sibling is first on the axis; the sibling
+ preceding that node is the second on the axis and so on. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextPrecedingSibling(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextPrecedingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextSelf(self, ctxt):
+ """Traversal function for the "self" direction The self axis
+ contains just the context node itself """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextSelf(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ #
+ # xmlNode functions from module xpointer
+ #
+
+ def xpointerNewCollapsedRange(self):
+ """Create a new xmlXPathObjectPtr of type range using a single
+ nodes """
+ ret = libxml2mod.xmlXPtrNewCollapsedRange(self._o)
+ if ret is None:raise treeError('xmlXPtrNewCollapsedRange() failed')
+ return xpathObjectRet(ret)
+
+ def xpointerNewContext(self, doc, origin):
+ """Create a new XPointer context """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if origin is None: origin__o = None
+ else: origin__o = origin._o
+ ret = libxml2mod.xmlXPtrNewContext(doc__o, self._o, origin__o)
+ if ret is None:raise treeError('xmlXPtrNewContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+ def xpointerNewLocationSetNodes(self, end):
+ """Create a new xmlXPathObjectPtr of type LocationSet and
+ initialize it with the single range made of the two nodes
+ @start and @end """
+ if end is None: end__o = None
+ else: end__o = end._o
+ ret = libxml2mod.xmlXPtrNewLocationSetNodes(self._o, end__o)
+ if ret is None:raise treeError('xmlXPtrNewLocationSetNodes() failed')
+ return xpathObjectRet(ret)
+
+ def xpointerNewRange(self, startindex, end, endindex):
+ """Create a new xmlXPathObjectPtr of type range """
+ if end is None: end__o = None
+ else: end__o = end._o
+ ret = libxml2mod.xmlXPtrNewRange(self._o, startindex, end__o, endindex)
+ if ret is None:raise treeError('xmlXPtrNewRange() failed')
+ return xpathObjectRet(ret)
+
+ def xpointerNewRangeNodes(self, end):
+ """Create a new xmlXPathObjectPtr of type range using 2 nodes """
+ if end is None: end__o = None
+ else: end__o = end._o
+ ret = libxml2mod.xmlXPtrNewRangeNodes(self._o, end__o)
+ if ret is None:raise treeError('xmlXPtrNewRangeNodes() failed')
+ return xpathObjectRet(ret)
+
+class xmlDoc(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlDoc got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlDoc (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlDoc functions from module HTMLparser
+ #
+
+ def htmlAutoCloseTag(self, name, elem):
+ """The HTML DTD allows a tag to implicitly close other tags.
+ The list is kept in htmlStartClose array. This function
+ checks if the element or one of it's children would
+ autoclose the given tag. """
+ ret = libxml2mod.htmlAutoCloseTag(self._o, name, elem)
+ return ret
+
+ def htmlIsAutoClosed(self, elem):
+ """The HTML DTD allows a tag to implicitly close other tags.
+ The list is kept in htmlStartClose array. This function
+ checks if a tag is autoclosed by one of it's child """
+ ret = libxml2mod.htmlIsAutoClosed(self._o, elem)
+ return ret
+
+ #
+ # xmlDoc functions from module HTMLtree
+ #
+
+ def htmlDocContentDumpFormatOutput(self, buf, encoding, format):
+ """Dump an HTML document. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ libxml2mod.htmlDocContentDumpFormatOutput(buf__o, self._o, encoding, format)
+
+ def htmlDocContentDumpOutput(self, buf, encoding):
+ """Dump an HTML document. Formating return/spaces are added. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ libxml2mod.htmlDocContentDumpOutput(buf__o, self._o, encoding)
+
+ def htmlDocDump(self, f):
+ """Dump an HTML document to an open FILE. """
+ ret = libxml2mod.htmlDocDump(f, self._o)
+ return ret
+
+ def htmlGetMetaEncoding(self):
+ """Encoding definition lookup in the Meta tags """
+ ret = libxml2mod.htmlGetMetaEncoding(self._o)
+ return ret
+
+ def htmlNodeDumpFile(self, out, cur):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too, and formatting returns are added. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpFile(out, self._o, cur__o)
+
+ def htmlNodeDumpFileFormat(self, out, cur, encoding, format):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too. TODO: if encoding == None try to save in the doc
+ encoding """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.htmlNodeDumpFileFormat(out, self._o, cur__o, encoding, format)
+ return ret
+
+ def htmlNodeDumpFormatOutput(self, buf, cur, encoding, format):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpFormatOutput(buf__o, self._o, cur__o, encoding, format)
+
+ def htmlNodeDumpOutput(self, buf, cur, encoding):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too, and formatting returns/spaces are added. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpOutput(buf__o, self._o, cur__o, encoding)
+
+ def htmlSaveFile(self, filename):
+ """Dump an HTML document to a file. If @filename is "-" the
+ stdout file is used. """
+ ret = libxml2mod.htmlSaveFile(filename, self._o)
+ return ret
+
+ def htmlSaveFileEnc(self, filename, encoding):
+ """Dump an HTML document to a file using a given encoding and
+ formatting returns/spaces are added. """
+ ret = libxml2mod.htmlSaveFileEnc(filename, self._o, encoding)
+ return ret
+
+ def htmlSaveFileFormat(self, filename, encoding, format):
+ """Dump an HTML document to a file using a given encoding. """
+ ret = libxml2mod.htmlSaveFileFormat(filename, self._o, encoding, format)
+ return ret
+
+ def htmlSetMetaEncoding(self, encoding):
+ """Sets the current encoding in the Meta tags NOTE: this will
+ not change the document content encoding, just the META
+ flag associated. """
+ ret = libxml2mod.htmlSetMetaEncoding(self._o, encoding)
+ return ret
+
+ #
+ # xmlDoc functions from module debugXML
+ #
+
+ def debugCheckDocument(self, output):
+ """Check the document for potential content problems, and
+ output the errors to @output """
+ ret = libxml2mod.xmlDebugCheckDocument(output, self._o)
+ return ret
+
+ def debugDumpDocument(self, output):
+ """Dumps debug information for the document, it's recursive """
+ libxml2mod.xmlDebugDumpDocument(output, self._o)
+
+ def debugDumpDocumentHead(self, output):
+ """Dumps debug information cncerning the document, not
+ recursive """
+ libxml2mod.xmlDebugDumpDocumentHead(output, self._o)
+
+ def debugDumpEntities(self, output):
+ """Dumps debug information for all the entities in use by the
+ document """
+ libxml2mod.xmlDebugDumpEntities(output, self._o)
+
+ #
+ # xmlDoc functions from module entities
+ #
+
+ def addDocEntity(self, name, type, ExternalID, SystemID, content):
+ """Register a new entity for this document. """
+ ret = libxml2mod.xmlAddDocEntity(self._o, name, type, ExternalID, SystemID, content)
+ if ret is None:raise treeError('xmlAddDocEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def addDtdEntity(self, name, type, ExternalID, SystemID, content):
+ """Register a new entity for this document DTD external subset. """
+ ret = libxml2mod.xmlAddDtdEntity(self._o, name, type, ExternalID, SystemID, content)
+ if ret is None:raise treeError('xmlAddDtdEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def docEntity(self, name):
+ """Do an entity lookup in the document entity hash table and """
+ ret = libxml2mod.xmlGetDocEntity(self._o, name)
+ if ret is None:raise treeError('xmlGetDocEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def dtdEntity(self, name):
+ """Do an entity lookup in the DTD entity hash table and """
+ ret = libxml2mod.xmlGetDtdEntity(self._o, name)
+ if ret is None:raise treeError('xmlGetDtdEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def encodeEntities(self, input):
+ """TODO: remove xmlEncodeEntities, once we are not afraid of
+ breaking binary compatibility People must migrate their
+ code to xmlEncodeEntitiesReentrant ! This routine will
+ issue a warning when encountered. """
+ ret = libxml2mod.xmlEncodeEntities(self._o, input)
+ return ret
+
+ def encodeEntitiesReentrant(self, input):
+ """Do a global encoding of a string, replacing the predefined
+ entities and non ASCII values with their entities and
+ CharRef counterparts. Contrary to xmlEncodeEntities, this
+ routine is reentrant, and result must be deallocated. """
+ ret = libxml2mod.xmlEncodeEntitiesReentrant(self._o, input)
+ return ret
+
+ def encodeSpecialChars(self, input):
+ """Do a global encoding of a string, replacing the predefined
+ entities this routine is reentrant, and result must be
+ deallocated. """
+ ret = libxml2mod.xmlEncodeSpecialChars(self._o, input)
+ return ret
+
+ def newEntity(self, name, type, ExternalID, SystemID, content):
+ """Create a new entity, this differs from xmlAddDocEntity()
+ that if the document is None or has no internal subset
+ defined, then an unlinked entity structure will be
+ returned, it is then the responsability of the caller to
+ link it to the document later or free it when not needed
+ anymore. """
+ ret = libxml2mod.xmlNewEntity(self._o, name, type, ExternalID, SystemID, content)
+ if ret is None:raise treeError('xmlNewEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def parameterEntity(self, name):
+ """Do an entity lookup in the internal and external subsets and """
+ ret = libxml2mod.xmlGetParameterEntity(self._o, name)
+ if ret is None:raise treeError('xmlGetParameterEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ #
+ # xmlDoc functions from module relaxng
+ #
+
+ def relaxNGNewDocParserCtxt(self):
+ """Create an XML RelaxNGs parser context for that document.
+ Note: since the process of compiling a RelaxNG schemas
+ modifies the document, the @doc parameter is duplicated
+ internally. """
+ ret = libxml2mod.xmlRelaxNGNewDocParserCtxt(self._o)
+ if ret is None:raise parserError('xmlRelaxNGNewDocParserCtxt() failed')
+ __tmp = relaxNgParserCtxt(_obj=ret)
+ return __tmp
+
+ def relaxNGValidateDoc(self, ctxt):
+ """Validate a document tree in memory. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlRelaxNGValidateDoc(ctxt__o, self._o)
+ return ret
+
+ def relaxNGValidateFullElement(self, ctxt, elem):
+ """Validate a full subtree when
+ xmlRelaxNGValidatePushElement() returned 0 and the content
+ of the node has been expanded. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidateFullElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def relaxNGValidatePopElement(self, ctxt, elem):
+ """Pop the element end from the RelaxNG validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePopElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def relaxNGValidatePushElement(self, ctxt, elem):
+ """Push a new element start on the RelaxNG validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePushElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ #
+ # xmlDoc functions from module tree
+ #
+
+ def copyDoc(self, recursive):
+ """Do a copy of the document info. If recursive, the content
+ tree will be copied too as well as DTD, namespaces and
+ entities. """
+ ret = libxml2mod.xmlCopyDoc(self._o, recursive)
+ if ret is None:raise treeError('xmlCopyDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def copyNode(self, node, extended):
+ """Do a copy of the node to a given document. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlDocCopyNode(node__o, self._o, extended)
+ if ret is None:raise treeError('xmlDocCopyNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyNodeList(self, node):
+ """Do a recursive copy of the node list. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlDocCopyNodeList(self._o, node__o)
+ if ret is None:raise treeError('xmlDocCopyNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def createIntSubset(self, name, ExternalID, SystemID):
+ """Create the internal subset of a document """
+ ret = libxml2mod.xmlCreateIntSubset(self._o, name, ExternalID, SystemID)
+ if ret is None:raise treeError('xmlCreateIntSubset() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def docCompressMode(self):
+ """get the compression ratio for a document, ZLIB based """
+ ret = libxml2mod.xmlGetDocCompressMode(self._o)
+ return ret
+
+ def dump(self, f):
+ """Dump an XML document to an open FILE. """
+ ret = libxml2mod.xmlDocDump(f, self._o)
+ return ret
+
+ def elemDump(self, f, cur):
+ """Dump an XML/HTML node, recursive behaviour, children are
+ printed too. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.xmlElemDump(f, self._o, cur__o)
+
+ def formatDump(self, f, format):
+ """Dump an XML document to an open FILE. """
+ ret = libxml2mod.xmlDocFormatDump(f, self._o, format)
+ return ret
+
+ def freeDoc(self):
+ """Free up all the structures used by a document, tree
+ included. """
+ libxml2mod.xmlFreeDoc(self._o)
+
+ def getRootElement(self):
+ """Get the root element of the document (doc->children is a
+ list containing possibly comments, PIs, etc ...). """
+ ret = libxml2mod.xmlDocGetRootElement(self._o)
+ if ret is None:raise treeError('xmlDocGetRootElement() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def intSubset(self):
+ """Get the internal subset of a document """
+ ret = libxml2mod.xmlGetIntSubset(self._o)
+ if ret is None:raise treeError('xmlGetIntSubset() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def newCDataBlock(self, content, len):
+ """Creation of a new node containing a CDATA block. """
+ ret = libxml2mod.xmlNewCDataBlock(self._o, content, len)
+ if ret is None:raise treeError('xmlNewCDataBlock() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newCharRef(self, name):
+ """Creation of a new character reference node. """
+ ret = libxml2mod.xmlNewCharRef(self._o, name)
+ if ret is None:raise treeError('xmlNewCharRef() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocComment(self, content):
+ """Creation of a new node containing a comment within a
+ document. """
+ ret = libxml2mod.xmlNewDocComment(self._o, content)
+ if ret is None:raise treeError('xmlNewDocComment() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocFragment(self):
+ """Creation of a new Fragment node. """
+ ret = libxml2mod.xmlNewDocFragment(self._o)
+ if ret is None:raise treeError('xmlNewDocFragment() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNode(self, ns, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewDocNode(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewDocNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNodeEatName(self, ns, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewDocNodeEatName(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewDocNodeEatName() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocPI(self, name, content):
+ """Creation of a processing instruction element. """
+ ret = libxml2mod.xmlNewDocPI(self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocPI() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocProp(self, name, value):
+ """Create a new property carried by a document. """
+ ret = libxml2mod.xmlNewDocProp(self._o, name, value)
+ if ret is None:raise treeError('xmlNewDocProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newDocRawNode(self, ns, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewDocRawNode(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewDocRawNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocText(self, content):
+ """Creation of a new text node within a document. """
+ ret = libxml2mod.xmlNewDocText(self._o, content)
+ if ret is None:raise treeError('xmlNewDocText() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocTextLen(self, content, len):
+ """Creation of a new text node with an extra content length
+ parameter. The text node pertain to a given document. """
+ ret = libxml2mod.xmlNewDocTextLen(self._o, content, len)
+ if ret is None:raise treeError('xmlNewDocTextLen() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDtd(self, name, ExternalID, SystemID):
+ """Creation of a new DTD for the external subset. To create an
+ internal subset, use xmlCreateIntSubset(). """
+ ret = libxml2mod.xmlNewDtd(self._o, name, ExternalID, SystemID)
+ if ret is None:raise treeError('xmlNewDtd() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def newGlobalNs(self, href, prefix):
+ """Creation of a Namespace, the old way using PI and without
+ scoping DEPRECATED !!! """
+ ret = libxml2mod.xmlNewGlobalNs(self._o, href, prefix)
+ if ret is None:raise treeError('xmlNewGlobalNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def newReference(self, name):
+ """Creation of a new reference node. """
+ ret = libxml2mod.xmlNewReference(self._o, name)
+ if ret is None:raise treeError('xmlNewReference() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def nodeDumpOutput(self, buf, cur, level, format, encoding):
+ """Dump an XML node, recursive behaviour, children are printed
+ too. Note that @format = 1 provide node indenting only if
+ xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was
+ called """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.xmlNodeDumpOutput(buf__o, self._o, cur__o, level, format, encoding)
+
+ def nodeGetBase(self, cur):
+ """Searches for the BASE URL. The code should work on both XML
+ and HTML document even if base mechanisms are completely
+ different. It returns the base as defined in RFC 2396
+ sections 5.1.1. Base URI within Document Content and 5.1.2.
+ Base URI from the Encapsulating Entity However it does not
+ return the document base (5.1.3), use doc->URL in this case """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlNodeGetBase(self._o, cur__o)
+ return ret
+
+ def nodeListGetRawString(self, list, inLine):
+ """Builds the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs, contrary to
+ xmlNodeListGetString() this function doesn't do any
+ character encoding handling. """
+ if list is None: list__o = None
+ else: list__o = list._o
+ ret = libxml2mod.xmlNodeListGetRawString(self._o, list__o, inLine)
+ return ret
+
+ def nodeListGetString(self, list, inLine):
+ """Build the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs """
+ if list is None: list__o = None
+ else: list__o = list._o
+ ret = libxml2mod.xmlNodeListGetString(self._o, list__o, inLine)
+ return ret
+
+ def reconciliateNs(self, tree):
+ """This function checks that all the namespaces declared
+ within the given tree are properly declared. This is needed
+ for example after Copy or Cut and then paste operations.
+ The subtree may still hold pointers to namespace
+ declarations outside the subtree or invalid/masked. As much
+ as possible the function try to reuse the existing
+ namespaces found in the new environment. If not possible
+ the new namespaces are redeclared on @tree at the top of
+ the given subtree. """
+ if tree is None: tree__o = None
+ else: tree__o = tree._o
+ ret = libxml2mod.xmlReconciliateNs(self._o, tree__o)
+ return ret
+
+ def saveFile(self, filename):
+ """Dump an XML document to a file. Will use compression if
+ compiled in and enabled. If @filename is "-" the stdout
+ file is used. """
+ ret = libxml2mod.xmlSaveFile(filename, self._o)
+ return ret
+
+ def saveFileEnc(self, filename, encoding):
+ """Dump an XML document, converting it to the given encoding """
+ ret = libxml2mod.xmlSaveFileEnc(filename, self._o, encoding)
+ return ret
+
+ def saveFileTo(self, buf, encoding):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ ret = libxml2mod.xmlSaveFileTo(buf__o, self._o, encoding)
+ return ret
+
+ def saveFormatFile(self, filename, format):
+ """Dump an XML document to a file. Will use compression if
+ compiled in and enabled. If @filename is "-" the stdout
+ file is used. If @format is set then the document will be
+ indented on output. Note that @format = 1 provide node
+ indenting only if xmlIndentTreeOutput = 1 or
+ xmlKeepBlanksDefault(0) was called """
+ ret = libxml2mod.xmlSaveFormatFile(filename, self._o, format)
+ return ret
+
+ def saveFormatFileEnc(self, filename, encoding, format):
+ """Dump an XML document to a file or an URL. """
+ ret = libxml2mod.xmlSaveFormatFileEnc(filename, self._o, encoding, format)
+ return ret
+
+ def saveFormatFileTo(self, buf, encoding, format):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ ret = libxml2mod.xmlSaveFormatFileTo(buf__o, self._o, encoding, format)
+ return ret
+
+ def searchNs(self, node, nameSpace):
+ """Search a Ns registered under a given name space for a
+ document. recurse on the parents until it finds the defined
+ namespace or return None otherwise. @nameSpace can be None,
+ this is a search for the default namespace. We don't allow
+ to cross entities boundaries. If you don't declare the
+ namespace within those you will be in troubles !!! A
+ warning is generated to cover this case. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlSearchNs(self._o, node__o, nameSpace)
+ if ret is None:raise treeError('xmlSearchNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def searchNsByHref(self, node, href):
+ """Search a Ns aliasing a given URI. Recurse on the parents
+ until it finds the defined namespace or return None
+ otherwise. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlSearchNsByHref(self._o, node__o, href)
+ if ret is None:raise treeError('xmlSearchNsByHref() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def setDocCompressMode(self, mode):
+ """set the compression ratio for a document, ZLIB based
+ Correct values: 0 (uncompressed) to 9 (max compression) """
+ libxml2mod.xmlSetDocCompressMode(self._o, mode)
+
+ def setListDoc(self, list):
+ """update all nodes in the list to point to the right document """
+ if list is None: list__o = None
+ else: list__o = list._o
+ libxml2mod.xmlSetListDoc(list__o, self._o)
+
+ def setRootElement(self, root):
+ """Set the root element of the document (doc->children is a
+ list containing possibly comments, PIs, etc ...). """
+ if root is None: root__o = None
+ else: root__o = root._o
+ ret = libxml2mod.xmlDocSetRootElement(self._o, root__o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def setTreeDoc(self, tree):
+ """update all nodes under the tree to point to the right
+ document """
+ if tree is None: tree__o = None
+ else: tree__o = tree._o
+ libxml2mod.xmlSetTreeDoc(tree__o, self._o)
+
+ def stringGetNodeList(self, value):
+ """Parse the value string and build the node list associated.
+ Should produce a flat tree with only TEXTs and ENTITY_REFs. """
+ ret = libxml2mod.xmlStringGetNodeList(self._o, value)
+ if ret is None:raise treeError('xmlStringGetNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def stringLenGetNodeList(self, value, len):
+ """Parse the value string and build the node list associated.
+ Should produce a flat tree with only TEXTs and ENTITY_REFs. """
+ ret = libxml2mod.xmlStringLenGetNodeList(self._o, value, len)
+ if ret is None:raise treeError('xmlStringLenGetNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ #
+ # xmlDoc functions from module valid
+ #
+
+ def ID(self, ID):
+ """Search the attribute declaring the given ID """
+ ret = libxml2mod.xmlGetID(self._o, ID)
+ if ret is None:raise treeError('xmlGetID() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def isID(self, elem, attr):
+ """Determine whether an attribute is of type ID. In case we
+ have DTD(s) then this is done if DTD loading has been
+ requested. In the case of HTML documents parsed with the
+ HTML parser, then ID detection is done systematically. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsID(self._o, elem__o, attr__o)
+ return ret
+
+ def isMixedElement(self, name):
+ """Search in the DtDs whether an element accept Mixed content
+ (or ANY) basically if it is supposed to accept text childs """
+ ret = libxml2mod.xmlIsMixedElement(self._o, name)
+ return ret
+
+ def isRef(self, elem, attr):
+ """Determine whether an attribute is of type Ref. In case we
+ have DTD(s) then this is simple, otherwise we use an
+ heuristic: name Ref (upper or lowercase). """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsRef(self._o, elem__o, attr__o)
+ return ret
+
+ def removeID(self, attr):
+ """Remove the given attribute from the ID table maintained
+ internally. """
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlRemoveID(self._o, attr__o)
+ return ret
+
+ def removeRef(self, attr):
+ """Remove the given attribute from the Ref table maintained
+ internally. """
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlRemoveRef(self._o, attr__o)
+ return ret
+
+ def validCtxtNormalizeAttributeValue(self, ctxt, elem, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character.
+ Also check VC: Standalone Document Declaration in P32, and
+ update ctxt->valid accordingly """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidCtxtNormalizeAttributeValue(ctxt__o, self._o, elem__o, name, value)
+ return ret
+
+ def validNormalizeAttributeValue(self, elem, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidNormalizeAttributeValue(self._o, elem__o, name, value)
+ return ret
+
+ def validateDocument(self, ctxt):
+ """Try to validate the document instance basically it does
+ the all the checks described by the XML Rec i.e. validates
+ the internal and external subset (if present) and validate
+ the document tree. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateDocument(ctxt__o, self._o)
+ return ret
+
+ def validateDocumentFinal(self, ctxt):
+ """Does the final step for the document validation once all
+ the incremental validation steps have been completed
+ basically it does the following checks described by the XML
+ Rec Check all the IDREF/IDREFS attributes definition for
+ validity """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateDocumentFinal(ctxt__o, self._o)
+ return ret
+
+ def validateDtd(self, ctxt, dtd):
+ """Try to validate the document against the dtd instance
+ Basically it does check all the definitions in the DtD.
+ Note the the internal subset (if present) is de-coupled
+ (i.e. not used), which could give problems if ID or IDREF
+ is present. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if dtd is None: dtd__o = None
+ else: dtd__o = dtd._o
+ ret = libxml2mod.xmlValidateDtd(ctxt__o, self._o, dtd__o)
+ return ret
+
+ def validateDtdFinal(self, ctxt):
+ """Does the final step for the dtds validation once all the
+ subsets have been parsed basically it does the following
+ checks described by the XML Rec - check that ENTITY and
+ ENTITIES type attributes default or possible values matches
+ one of the defined entities. - check that NOTATION type
+ attributes default or possible values matches one of the
+ defined notations. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateDtdFinal(ctxt__o, self._o)
+ return ret
+
+ def validateElement(self, ctxt, elem):
+ """Try to validate the subtree under an element """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def validateNotationUse(self, ctxt, notationName):
+ """Validate that the given name match a notation declaration.
+ - [ VC: Notation Declared ] """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateNotationUse(ctxt__o, self._o, notationName)
+ return ret
+
+ def validateOneAttribute(self, ctxt, elem, attr, value):
+ """Try to validate a single attribute for an element basically
+ it does the following checks as described by the XML-1.0
+ recommendation: - [ VC: Attribute Value Type ] - [ VC:
+ Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC:
+ Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity
+ Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlValidateOneAttribute(ctxt__o, self._o, elem__o, attr__o, value)
+ return ret
+
+ def validateOneElement(self, ctxt, elem):
+ """Try to validate a single element and it's attributes,
+ basically it does the following checks as described by the
+ XML-1.0 recommendation: - [ VC: Element Valid ] - [ VC:
+ Required Attribute ] Then call xmlValidateOneAttribute()
+ for each attribute present. The ID/IDREF checkings are
+ done separately """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateOneElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def validateOneNamespace(self, ctxt, elem, prefix, ns, value):
+ """Try to validate a single namespace declaration for an
+ element basically it does the following checks as described
+ by the XML-1.0 recommendation: - [ VC: Attribute Value Type
+ ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] -
+ [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC:
+ Entity Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlValidateOneNamespace(ctxt__o, self._o, elem__o, prefix, ns__o, value)
+ return ret
+
+ def validatePopElement(self, ctxt, elem, qname):
+ """Pop the element end from the validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePopElement(ctxt__o, self._o, elem__o, qname)
+ return ret
+
+ def validatePushElement(self, ctxt, elem, qname):
+ """Push a new element start on the validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePushElement(ctxt__o, self._o, elem__o, qname)
+ return ret
+
+ def validateRoot(self, ctxt):
+ """Try to validate a the root element basically it does the
+ following check as described by the XML-1.0 recommendation:
+ - [ VC: Root Element Type ] it doesn't try to recurse or
+ apply other check to the element """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateRoot(ctxt__o, self._o)
+ return ret
+
+ #
+ # xmlDoc functions from module xinclude
+ #
+
+ def xincludeProcess(self):
+ """Implement the XInclude substitution on the XML document @doc """
+ ret = libxml2mod.xmlXIncludeProcess(self._o)
+ return ret
+
+ def xincludeProcessFlags(self, flags):
+ """Implement the XInclude substitution on the XML document @doc """
+ ret = libxml2mod.xmlXIncludeProcessFlags(self._o, flags)
+ return ret
+
+ #
+ # xmlDoc functions from module xmlreader
+ #
+
+ def NewWalker(self, reader):
+ """Setup an xmltextReader to parse a preparsed XML document.
+ This reuses the existing @reader xmlTextReader. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlReaderNewWalker(reader__o, self._o)
+ return ret
+
+ def readerWalker(self):
+ """Create an xmltextReader for a preparsed document. """
+ ret = libxml2mod.xmlReaderWalker(self._o)
+ if ret is None:raise treeError('xmlReaderWalker() failed')
+ __tmp = xmlTextReader(_obj=ret)
+ return __tmp
+
+ #
+ # xmlDoc functions from module xmlschemas
+ #
+
+ def schemaNewDocParserCtxt(self):
+ """Create an XML Schemas parse context for that document. NB.
+ The document may be modified during the parsing process. """
+ ret = libxml2mod.xmlSchemaNewDocParserCtxt(self._o)
+ if ret is None:raise parserError('xmlSchemaNewDocParserCtxt() failed')
+ __tmp = SchemaParserCtxt(_obj=ret)
+ return __tmp
+
+ def schemaValidateDoc(self, ctxt):
+ """Validate a document tree in memory. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlSchemaValidateDoc(ctxt__o, self._o)
+ return ret
+
+ #
+ # xmlDoc functions from module xpath
+ #
+
+ def xpathNewContext(self):
+ """Create a new xmlXPathContext """
+ ret = libxml2mod.xmlXPathNewContext(self._o)
+ if ret is None:raise xpathError('xmlXPathNewContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+ def xpathOrderDocElems(self):
+ """Call this routine to speed up XPath computation on static
+ documents. This stamps all the element nodes with the
+ document order Like for line information, the order is kept
+ in the element->content field, the value stored is actually
+ - the node number (starting at -1) to be able to
+ differentiate from line numbers. """
+ ret = libxml2mod.xmlXPathOrderDocElems(self._o)
+ return ret
+
+ #
+ # xmlDoc functions from module xpointer
+ #
+
+ def xpointerNewContext(self, here, origin):
+ """Create a new XPointer context """
+ if here is None: here__o = None
+ else: here__o = here._o
+ if origin is None: origin__o = None
+ else: origin__o = origin._o
+ ret = libxml2mod.xmlXPtrNewContext(self._o, here__o, origin__o)
+ if ret is None:raise treeError('xmlXPtrNewContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+class parserCtxt(parserCtxtCore):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ parserCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeParserCtxt(self._o)
+ self._o = None
+
+ # accessors for parserCtxt
+ def doc(self):
+ """Get the document tree from a parser context. """
+ ret = libxml2mod.xmlParserGetDoc(self._o)
+ if ret is None:raise parserError('xmlParserGetDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def isValid(self):
+ """Get the validity information from a parser context. """
+ ret = libxml2mod.xmlParserGetIsValid(self._o)
+ return ret
+
+ def lineNumbers(self, linenumbers):
+ """Switch on the generation of line number for elements nodes. """
+ libxml2mod.xmlParserSetLineNumbers(self._o, linenumbers)
+
+ def loadSubset(self, loadsubset):
+ """Switch the parser to load the DTD without validating. """
+ libxml2mod.xmlParserSetLoadSubset(self._o, loadsubset)
+
+ def pedantic(self, pedantic):
+ """Switch the parser to be pedantic. """
+ libxml2mod.xmlParserSetPedantic(self._o, pedantic)
+
+ def replaceEntities(self, replaceEntities):
+ """Switch the parser to replace entities. """
+ libxml2mod.xmlParserSetReplaceEntities(self._o, replaceEntities)
+
+ def validate(self, validate):
+ """Switch the parser to validation mode. """
+ libxml2mod.xmlParserSetValidate(self._o, validate)
+
+ def wellFormed(self):
+ """Get the well formed information from a parser context. """
+ ret = libxml2mod.xmlParserGetWellFormed(self._o)
+ return ret
+
+ #
+ # parserCtxt functions from module HTMLparser
+ #
+
+ def htmlCtxtReadDoc(self, cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadDoc(self._o, cur, URL, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReadFd(self, fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadFd(self._o, fd, URL, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadFd() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReadFile(self, filename, encoding, options):
+ """parse an XML file from the filesystem or the network. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadFile(self._o, filename, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadFile() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReadMemory(self, buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadMemory(self._o, buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadMemory() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReset(self):
+ """Reset a parser context """
+ libxml2mod.htmlCtxtReset(self._o)
+
+ def htmlCtxtUseOptions(self, options):
+ """Applies the options to the parser context """
+ ret = libxml2mod.htmlCtxtUseOptions(self._o, options)
+ return ret
+
+ def htmlFreeParserCtxt(self):
+ """Free all the memory used by a parser context. However the
+ parsed document in ctxt->myDoc is not freed. """
+ libxml2mod.htmlFreeParserCtxt(self._o)
+
+ def htmlParseCharRef(self):
+ """parse Reference declarations [66] CharRef ::= '&#' [0-9]+
+ ';' | '&#x' [0-9a-fA-F]+ ';' """
+ ret = libxml2mod.htmlParseCharRef(self._o)
+ return ret
+
+ def htmlParseChunk(self, chunk, size, terminate):
+ """Parse a Chunk of memory """
+ ret = libxml2mod.htmlParseChunk(self._o, chunk, size, terminate)
+ return ret
+
+ def htmlParseDocument(self):
+ """parse an HTML document (and build a tree if using the
+ standard SAX interface). """
+ ret = libxml2mod.htmlParseDocument(self._o)
+ return ret
+
+ def htmlParseElement(self):
+ """parse an HTML element, this is highly recursive this is
+ kept for compatibility with previous code versions [39]
+ element ::= EmptyElemTag | STag content ETag [41]
+ Attribute ::= Name Eq AttValue """
+ libxml2mod.htmlParseElement(self._o)
+
+ #
+ # parserCtxt functions from module parser
+ #
+
+ def byteConsumed(self):
+ """This function provides the current index of the parser
+ relative to the start of the current entity. This function
+ is computed in bytes from the beginning starting at zero
+ and finishing at the size in byte of the file if parsing a
+ file. The function is of constant cost if the input is
+ UTF-8 but can be costly if run on non-UTF-8 input. """
+ ret = libxml2mod.xmlByteConsumed(self._o)
+ return ret
+
+ def clearParserCtxt(self):
+ """Clear (release owned resources) and reinitialize a parser
+ context """
+ libxml2mod.xmlClearParserCtxt(self._o)
+
+ def ctxtReadDoc(self, cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.xmlCtxtReadDoc(self._o, cur, URL, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReadFd(self, fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. This
+ reuses the existing @ctxt parser context NOTE that the file
+ descriptor will not be closed when the reader is closed or
+ reset. """
+ ret = libxml2mod.xmlCtxtReadFd(self._o, fd, URL, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadFd() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReadFile(self, filename, encoding, options):
+ """parse an XML file from the filesystem or the network. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.xmlCtxtReadFile(self._o, filename, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadFile() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReadMemory(self, buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.xmlCtxtReadMemory(self._o, buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadMemory() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReset(self):
+ """Reset a parser context """
+ libxml2mod.xmlCtxtReset(self._o)
+
+ def ctxtResetPush(self, chunk, size, filename, encoding):
+ """Reset a push parser context """
+ ret = libxml2mod.xmlCtxtResetPush(self._o, chunk, size, filename, encoding)
+ return ret
+
+ def ctxtUseOptions(self, options):
+ """Applies the options to the parser context """
+ ret = libxml2mod.xmlCtxtUseOptions(self._o, options)
+ return ret
+
+ def initParserCtxt(self):
+ """Initialize a parser context """
+ ret = libxml2mod.xmlInitParserCtxt(self._o)
+ return ret
+
+ def parseChunk(self, chunk, size, terminate):
+ """Parse a Chunk of memory """
+ ret = libxml2mod.xmlParseChunk(self._o, chunk, size, terminate)
+ return ret
+
+ def parseDocument(self):
+ """parse an XML document (and build a tree if using the
+ standard SAX interface). [1] document ::= prolog element
+ Misc* [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? """
+ ret = libxml2mod.xmlParseDocument(self._o)
+ return ret
+
+ def parseExtParsedEnt(self):
+ """parse a general parsed entity An external general parsed
+ entity is well-formed if it matches the production labeled
+ extParsedEnt. [78] extParsedEnt ::= TextDecl? content """
+ ret = libxml2mod.xmlParseExtParsedEnt(self._o)
+ return ret
+
+ def setupParserForBuffer(self, buffer, filename):
+ """Setup the parser context to parse a new buffer; Clears any
+ prior contents from the parser context. The buffer
+ parameter must not be None, but the filename parameter can
+ be """
+ libxml2mod.xmlSetupParserForBuffer(self._o, buffer, filename)
+
+ def stopParser(self):
+ """Blocks further parser processing """
+ libxml2mod.xmlStopParser(self._o)
+
+ #
+ # parserCtxt functions from module parserInternals
+ #
+
+ def decodeEntities(self, len, what, end, end2, end3):
+ """This function is deprecated, we now always process entities
+ content through xmlStringDecodeEntities TODO: remove it in
+ next major release. [67] Reference ::= EntityRef | CharRef
+ [69] PEReference ::= '%' Name ';' """
+ ret = libxml2mod.xmlDecodeEntities(self._o, len, what, end, end2, end3)
+ return ret
+
+ def handleEntity(self, entity):
+ """Default handling of defined entities, when should we define
+ a new input stream ? When do we just handle that as a set
+ of chars ? OBSOLETE: to be removed at some point. """
+ if entity is None: entity__o = None
+ else: entity__o = entity._o
+ libxml2mod.xmlHandleEntity(self._o, entity__o)
+
+ def namespaceParseNCName(self):
+ """parse an XML namespace name. TODO: this seems not in use
+ anymore, the namespace handling is done on top of the SAX
+ interfaces, i.e. not on raw input. [NS 3] NCName ::=
+ (Letter | '_') (NCNameChar)* [NS 4] NCNameChar ::= Letter
+ | Digit | '.' | '-' | '_' | CombiningChar | Extender """
+ ret = libxml2mod.xmlNamespaceParseNCName(self._o)
+ return ret
+
+ def namespaceParseNSDef(self):
+ """parse a namespace prefix declaration TODO: this seems not
+ in use anymore, the namespace handling is done on top of
+ the SAX interfaces, i.e. not on raw input. [NS 1] NSDef
+ ::= PrefixDef Eq SystemLiteral [NS 2] PrefixDef ::=
+ 'xmlns' (':' NCName)? """
+ ret = libxml2mod.xmlNamespaceParseNSDef(self._o)
+ return ret
+
+ def nextChar(self):
+ """Skip to the next char input char. """
+ libxml2mod.xmlNextChar(self._o)
+
+ def parseAttValue(self):
+ """parse a value for an attribute Note: the parser won't do
+ substitution of entities here, this will be handled later
+ in xmlStringGetNodeList [10] AttValue ::= '"' ([^<&"] |
+ Reference)* '"' | "'" ([^<&'] | Reference)* "'" 3.3.3
+ Attribute-Value Normalization: Before the value of an
+ attribute is passed to the application or checked for
+ validity, the XML processor must normalize it as follows: -
+ a character reference is processed by appending the
+ referenced character to the attribute value - an entity
+ reference is processed by recursively processing the
+ replacement text of the entity - a whitespace character
+ (#x20, #xD, #xA, #x9) is processed by appending #x20 to the
+ normalized value, except that only a single #x20 is
+ appended for a "#xD#xA" sequence that is part of an
+ external parsed entity or the literal entity value of an
+ internal parsed entity - other characters are processed by
+ appending them to the normalized value If the declared
+ value is not CDATA, then the XML processor must further
+ process the normalized attribute value by discarding any
+ leading and trailing space (#x20) characters, and by
+ replacing sequences of space (#x20) characters by a single
+ space (#x20) character. All attributes for which no
+ declaration has been read should be treated by a
+ non-validating parser as if declared CDATA. """
+ ret = libxml2mod.xmlParseAttValue(self._o)
+ return ret
+
+ def parseAttributeListDecl(self):
+ """: parse the Attribute list def for an element [52]
+ AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' [53]
+ AttDef ::= S Name S AttType S DefaultDecl """
+ libxml2mod.xmlParseAttributeListDecl(self._o)
+
+ def parseCDSect(self):
+ """Parse escaped pure raw content. [18] CDSect ::= CDStart
+ CData CDEnd [19] CDStart ::= '<![CDATA[' [20] Data ::=
+ (Char* - (Char* ']]>' Char*)) [21] CDEnd ::= ']]>' """
+ libxml2mod.xmlParseCDSect(self._o)
+
+ def parseCharData(self, cdata):
+ """parse a CharData section. if we are within a CDATA section
+ ']]>' marks an end of section. The right angle bracket (>)
+ may be represented using the string "&gt;", and must, for
+ compatibility, be escaped using "&gt;" or a character
+ reference when it appears in the string "]]>" in content,
+ when that string is not marking the end of a CDATA section.
+ [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) """
+ libxml2mod.xmlParseCharData(self._o, cdata)
+
+ def parseCharRef(self):
+ """parse Reference declarations [66] CharRef ::= '&#' [0-9]+
+ ';' | '&#x' [0-9a-fA-F]+ ';' [ WFC: Legal Character ]
+ Characters referred to using character references must
+ match the production for Char. """
+ ret = libxml2mod.xmlParseCharRef(self._o)
+ return ret
+
+ def parseComment(self):
+ """Skip an XML (SGML) comment <!-- .... --> The spec says that
+ "For compatibility, the string "--" (double-hyphen) must
+ not occur within comments. " [15] Comment ::= '<!--'
+ ((Char - '-') | ('-' (Char - '-')))* '-->' """
+ libxml2mod.xmlParseComment(self._o)
+
+ def parseContent(self):
+ """Parse a content: [43] content ::= (element | CharData |
+ Reference | CDSect | PI | Comment)* """
+ libxml2mod.xmlParseContent(self._o)
+
+ def parseDocTypeDecl(self):
+ """parse a DOCTYPE declaration [28] doctypedecl ::=
+ '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl |
+ PEReference | S)* ']' S?)? '>' [ VC: Root Element Type ]
+ The Name in the document type declaration must match the
+ element type of the root element. """
+ libxml2mod.xmlParseDocTypeDecl(self._o)
+
+ def parseElement(self):
+ """parse an XML element, this is highly recursive [39]
+ element ::= EmptyElemTag | STag content ETag [ WFC:
+ Element Type Match ] The Name in an element's end-tag must
+ match the element type in the start-tag. """
+ libxml2mod.xmlParseElement(self._o)
+
+ def parseElementDecl(self):
+ """parse an Element declaration. [45] elementdecl ::=
+ '<!ELEMENT' S Name S contentspec S? '>' [ VC: Unique
+ Element Type Declaration ] No element type may be declared
+ more than once """
+ ret = libxml2mod.xmlParseElementDecl(self._o)
+ return ret
+
+ def parseEncName(self):
+ """parse the XML encoding name [81] EncName ::= [A-Za-z]
+ ([A-Za-z0-9._] | '-')* """
+ ret = libxml2mod.xmlParseEncName(self._o)
+ return ret
+
+ def parseEncodingDecl(self):
+ """parse the XML encoding declaration [80] EncodingDecl ::= S
+ 'encoding' Eq ('"' EncName '"' | "'" EncName "'") this
+ setups the conversion filters. """
+ ret = libxml2mod.xmlParseEncodingDecl(self._o)
+ return ret
+
+ def parseEndTag(self):
+ """parse an end of tag [42] ETag ::= '</' Name S? '>' With
+ namespace [NS 9] ETag ::= '</' QName S? '>' """
+ libxml2mod.xmlParseEndTag(self._o)
+
+ def parseEntityDecl(self):
+ """parse <!ENTITY declarations [70] EntityDecl ::= GEDecl |
+ PEDecl [71] GEDecl ::= '<!ENTITY' S Name S EntityDef S?
+ '>' [72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
+ [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
+ [74] PEDef ::= EntityValue | ExternalID [76] NDataDecl ::=
+ S 'NDATA' S Name [ VC: Notation Declared ] The Name must
+ match the declared name of a notation. """
+ libxml2mod.xmlParseEntityDecl(self._o)
+
+ def parseEntityRef(self):
+ """parse ENTITY references declarations [68] EntityRef ::=
+ '&' Name ';' [ WFC: Entity Declared ] In a document
+ without any DTD, a document with only an internal DTD
+ subset which contains no parameter entity references, or a
+ document with "standalone='yes'", the Name given in the
+ entity reference must match that in an entity declaration,
+ except that well-formed documents need not declare any of
+ the following entities: amp, lt, gt, apos, quot. The
+ declaration of a parameter entity must precede any
+ reference to it. Similarly, the declaration of a general
+ entity must precede any reference to it which appears in a
+ default value in an attribute-list declaration. Note that
+ if entities are declared in the external subset or in
+ external parameter entities, a non-validating processor is
+ not obligated to read and process their declarations; for
+ such documents, the rule that an entity must be declared is
+ a well-formedness constraint only if standalone='yes'. [
+ WFC: Parsed Entity ] An entity reference must not contain
+ the name of an unparsed entity """
+ ret = libxml2mod.xmlParseEntityRef(self._o)
+ if ret is None:raise parserError('xmlParseEntityRef() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def parseExternalSubset(self, ExternalID, SystemID):
+ """parse Markup declarations from an external subset [30]
+ extSubset ::= textDecl? extSubsetDecl [31] extSubsetDecl
+ ::= (markupdecl | conditionalSect | PEReference | S) * """
+ libxml2mod.xmlParseExternalSubset(self._o, ExternalID, SystemID)
+
+ def parseMarkupDecl(self):
+ """parse Markup declarations [29] markupdecl ::= elementdecl
+ | AttlistDecl | EntityDecl | NotationDecl | PI | Comment [
+ VC: Proper Declaration/PE Nesting ] Parameter-entity
+ replacement text must be properly nested with markup
+ declarations. That is to say, if either the first character
+ or the last character of a markup declaration (markupdecl
+ above) is contained in the replacement text for a
+ parameter-entity reference, both must be contained in the
+ same replacement text. [ WFC: PEs in Internal Subset ] In
+ the internal DTD subset, parameter-entity references can
+ occur only where markup declarations can occur, not within
+ markup declarations. (This does not apply to references
+ that occur in external parameter entities or to the
+ external subset.) """
+ libxml2mod.xmlParseMarkupDecl(self._o)
+
+ def parseMisc(self):
+ """parse an XML Misc* optional field. [27] Misc ::= Comment |
+ PI | S """
+ libxml2mod.xmlParseMisc(self._o)
+
+ def parseName(self):
+ """parse an XML name. [4] NameChar ::= Letter | Digit | '.' |
+ '-' | '_' | ':' | CombiningChar | Extender [5] Name ::=
+ (Letter | '_' | ':') (NameChar)* [6] Names ::= Name (#x20
+ Name)* """
+ ret = libxml2mod.xmlParseName(self._o)
+ return ret
+
+ def parseNamespace(self):
+ """xmlParseNamespace: parse specific PI '<?namespace ...'
+ constructs. This is what the older xml-name Working Draft
+ specified, a bunch of other stuff may still rely on it, so
+ support is still here as if it was declared on the root of
+ the Tree:-( TODO: remove from library To be removed at
+ next drop of binary compatibility """
+ libxml2mod.xmlParseNamespace(self._o)
+
+ def parseNmtoken(self):
+ """parse an XML Nmtoken. [7] Nmtoken ::= (NameChar)+ [8]
+ Nmtokens ::= Nmtoken (#x20 Nmtoken)* """
+ ret = libxml2mod.xmlParseNmtoken(self._o)
+ return ret
+
+ def parseNotationDecl(self):
+ """parse a notation declaration [82] NotationDecl ::=
+ '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'
+ Hence there is actually 3 choices: 'PUBLIC' S PubidLiteral
+ 'PUBLIC' S PubidLiteral S SystemLiteral and 'SYSTEM' S
+ SystemLiteral See the NOTE on xmlParseExternalID(). """
+ libxml2mod.xmlParseNotationDecl(self._o)
+
+ def parsePEReference(self):
+ """parse PEReference declarations The entity content is
+ handled directly by pushing it's content as a new input
+ stream. [69] PEReference ::= '%' Name ';' [ WFC: No
+ Recursion ] A parsed entity must not contain a recursive
+ reference to itself, either directly or indirectly. [ WFC:
+ Entity Declared ] In a document without any DTD, a document
+ with only an internal DTD subset which contains no
+ parameter entity references, or a document with
+ "standalone='yes'", ... ... The declaration of a parameter
+ entity must precede any reference to it... [ VC: Entity
+ Declared ] In a document with an external subset or
+ external parameter entities with "standalone='no'", ...
+ ... The declaration of a parameter entity must precede any
+ reference to it... [ WFC: In DTD ] Parameter-entity
+ references may only appear in the DTD. NOTE: misleading but
+ this is handled. """
+ libxml2mod.xmlParsePEReference(self._o)
+
+ def parsePI(self):
+ """parse an XML Processing Instruction. [16] PI ::= '<?'
+ PITarget (S (Char* - (Char* '?>' Char*)))? '?>' The
+ processing is transfered to SAX once parsed. """
+ libxml2mod.xmlParsePI(self._o)
+
+ def parsePITarget(self):
+ """parse the name of a PI [17] PITarget ::= Name - (('X' |
+ 'x') ('M' | 'm') ('L' | 'l')) """
+ ret = libxml2mod.xmlParsePITarget(self._o)
+ return ret
+
+ def parsePubidLiteral(self):
+ """parse an XML public literal [12] PubidLiteral ::= '"'
+ PubidChar* '"' | "'" (PubidChar - "'")* "'" """
+ ret = libxml2mod.xmlParsePubidLiteral(self._o)
+ return ret
+
+ def parseQuotedString(self):
+ """Parse and return a string between quotes or doublequotes
+ TODO: Deprecated, to be removed at next drop of binary
+ compatibility """
+ ret = libxml2mod.xmlParseQuotedString(self._o)
+ return ret
+
+ def parseReference(self):
+ """parse and handle entity references in content, depending on
+ the SAX interface, this may end-up in a call to character()
+ if this is a CharRef, a predefined entity, if there is no
+ reference() callback. or if the parser was asked to switch
+ to that mode. [67] Reference ::= EntityRef | CharRef """
+ libxml2mod.xmlParseReference(self._o)
+
+ def parseSDDecl(self):
+ """parse the XML standalone declaration [32] SDDecl ::= S
+ 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' |
+ 'no')'"')) [ VC: Standalone Document Declaration ] TODO
+ The standalone document declaration must have the value
+ "no" if any external markup declarations contain
+ declarations of: - attributes with default values, if
+ elements to which these attributes apply appear in the
+ document without specifications of values for these
+ attributes, or - entities (other than amp, lt, gt, apos,
+ quot), if references to those entities appear in the
+ document, or - attributes with values subject to
+ normalization, where the attribute appears in the document
+ with a value which will change as a result of
+ normalization, or - element types with element content, if
+ white space occurs directly within any instance of those
+ types. """
+ ret = libxml2mod.xmlParseSDDecl(self._o)
+ return ret
+
+ def parseStartTag(self):
+ """parse a start of tag either for rule element or
+ EmptyElement. In both case we don't parse the tag closing
+ chars. [40] STag ::= '<' Name (S Attribute)* S? '>' [
+ WFC: Unique Att Spec ] No attribute name may appear more
+ than once in the same start-tag or empty-element tag. [44]
+ EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' [ WFC:
+ Unique Att Spec ] No attribute name may appear more than
+ once in the same start-tag or empty-element tag. With
+ namespace: [NS 8] STag ::= '<' QName (S Attribute)* S? '>'
+ [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>' """
+ ret = libxml2mod.xmlParseStartTag(self._o)
+ return ret
+
+ def parseSystemLiteral(self):
+ """parse an XML Literal [11] SystemLiteral ::= ('"' [^"]*
+ '"') | ("'" [^']* "'") """
+ ret = libxml2mod.xmlParseSystemLiteral(self._o)
+ return ret
+
+ def parseTextDecl(self):
+ """parse an XML declaration header for external entities [77]
+ TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>' """
+ libxml2mod.xmlParseTextDecl(self._o)
+
+ def parseVersionInfo(self):
+ """parse the XML version. [24] VersionInfo ::= S 'version' Eq
+ (' VersionNum ' | " VersionNum ") [25] Eq ::= S? '=' S? """
+ ret = libxml2mod.xmlParseVersionInfo(self._o)
+ return ret
+
+ def parseVersionNum(self):
+ """parse the XML version value. [26] VersionNum ::= '1.'
+ [0-9]+ In practice allow [0-9].[0-9]+ at that level """
+ ret = libxml2mod.xmlParseVersionNum(self._o)
+ return ret
+
+ def parseXMLDecl(self):
+ """parse an XML declaration header [23] XMLDecl ::= '<?xml'
+ VersionInfo EncodingDecl? SDDecl? S? '?>' """
+ libxml2mod.xmlParseXMLDecl(self._o)
+
+ def parserHandlePEReference(self):
+ """[69] PEReference ::= '%' Name ';' [ WFC: No Recursion ] A
+ parsed entity must not contain a recursive reference to
+ itself, either directly or indirectly. [ WFC: Entity
+ Declared ] In a document without any DTD, a document with
+ only an internal DTD subset which contains no parameter
+ entity references, or a document with "standalone='yes'",
+ ... ... The declaration of a parameter entity must precede
+ any reference to it... [ VC: Entity Declared ] In a
+ document with an external subset or external parameter
+ entities with "standalone='no'", ... ... The declaration
+ of a parameter entity must precede any reference to it...
+ [ WFC: In DTD ] Parameter-entity references may only appear
+ in the DTD. NOTE: misleading but this is handled. A
+ PEReference may have been detected in the current input
+ stream the handling is done accordingly to
+ http://www.w3.org/TR/REC-xml#entproc i.e. - Included in
+ literal in entity values - Included as Parameter Entity
+ reference within DTDs """
+ libxml2mod.xmlParserHandlePEReference(self._o)
+
+ def parserHandleReference(self):
+ """TODO: Remove, now deprecated ... the test is done directly
+ in the content parsing routines. [67] Reference ::=
+ EntityRef | CharRef [68] EntityRef ::= '&' Name ';' [
+ WFC: Entity Declared ] the Name given in the entity
+ reference must match that in an entity declaration, except
+ that well-formed documents need not declare any of the
+ following entities: amp, lt, gt, apos, quot. [ WFC: Parsed
+ Entity ] An entity reference must not contain the name of
+ an unparsed entity [66] CharRef ::= '&#' [0-9]+ ';' |
+ '&#x' [0-9a-fA-F]+ ';' A PEReference may have been
+ detected in the current input stream the handling is done
+ accordingly to http://www.w3.org/TR/REC-xml#entproc """
+ libxml2mod.xmlParserHandleReference(self._o)
+
+ def popInput(self):
+ """xmlPopInput: the current input pointed by ctxt->input came
+ to an end pop it and return the next char. """
+ ret = libxml2mod.xmlPopInput(self._o)
+ return ret
+
+ def scanName(self):
+ """Trickery: parse an XML name but without consuming the input
+ flow Needed for rollback cases. Used only when parsing
+ entities references. TODO: seems deprecated now, only used
+ in the default part of xmlParserHandleReference [4]
+ NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
+ CombiningChar | Extender [5] Name ::= (Letter | '_' | ':')
+ (NameChar)* [6] Names ::= Name (S Name)* """
+ ret = libxml2mod.xmlScanName(self._o)
+ return ret
+
+ def skipBlankChars(self):
+ """skip all blanks character found at that point in the input
+ streams. It pops up finished entities in the process if
+ allowable at that point. """
+ ret = libxml2mod.xmlSkipBlankChars(self._o)
+ return ret
+
+ def stringDecodeEntities(self, str, what, end, end2, end3):
+ """Takes a entity string content and process to do the
+ adequate substitutions. [67] Reference ::= EntityRef |
+ CharRef [69] PEReference ::= '%' Name ';' """
+ ret = libxml2mod.xmlStringDecodeEntities(self._o, str, what, end, end2, end3)
+ return ret
+
+ def stringLenDecodeEntities(self, str, len, what, end, end2, end3):
+ """Takes a entity string content and process to do the
+ adequate substitutions. [67] Reference ::= EntityRef |
+ CharRef [69] PEReference ::= '%' Name ';' """
+ ret = libxml2mod.xmlStringLenDecodeEntities(self._o, str, len, what, end, end2, end3)
+ return ret
+
+class xmlAttr(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlAttr got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlAttr (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlAttr functions from module debugXML
+ #
+
+ def debugDumpAttr(self, output, depth):
+ """Dumps debug information for the attribute """
+ libxml2mod.xmlDebugDumpAttr(output, self._o, depth)
+
+ def debugDumpAttrList(self, output, depth):
+ """Dumps debug information for the attribute list """
+ libxml2mod.xmlDebugDumpAttrList(output, self._o, depth)
+
+ #
+ # xmlAttr functions from module tree
+ #
+
+ def copyProp(self, target):
+ """Do a copy of the attribute. """
+ if target is None: target__o = None
+ else: target__o = target._o
+ ret = libxml2mod.xmlCopyProp(target__o, self._o)
+ if ret is None:raise treeError('xmlCopyProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def copyPropList(self, target):
+ """Do a copy of an attribute list. """
+ if target is None: target__o = None
+ else: target__o = target._o
+ ret = libxml2mod.xmlCopyPropList(target__o, self._o)
+ if ret is None:raise treeError('xmlCopyPropList() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def freeProp(self):
+ """Free one attribute, all the content is freed too """
+ libxml2mod.xmlFreeProp(self._o)
+
+ def freePropList(self):
+ """Free a property and all its siblings, all the children are
+ freed too. """
+ libxml2mod.xmlFreePropList(self._o)
+
+ def removeProp(self):
+ """Unlink and free one attribute, all the content is freed too
+ Note this doesn't work for namespace definition attributes """
+ ret = libxml2mod.xmlRemoveProp(self._o)
+ return ret
+
+ #
+ # xmlAttr functions from module valid
+ #
+
+ def removeID(self, doc):
+ """Remove the given attribute from the ID table maintained
+ internally. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlRemoveID(doc__o, self._o)
+ return ret
+
+ def removeRef(self, doc):
+ """Remove the given attribute from the Ref table maintained
+ internally. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlRemoveRef(doc__o, self._o)
+ return ret
+
+class xmlAttribute(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlAttribute got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlAttribute (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+class catalog:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeCatalog(self._o)
+ self._o = None
+
+ #
+ # catalog functions from module catalog
+ #
+
+ def add(self, type, orig, replace):
+ """Add an entry in the catalog, it may overwrite existing but
+ different entries. """
+ ret = libxml2mod.xmlACatalogAdd(self._o, type, orig, replace)
+ return ret
+
+ def catalogIsEmpty(self):
+ """Check is a catalog is empty """
+ ret = libxml2mod.xmlCatalogIsEmpty(self._o)
+ return ret
+
+ def convertSGMLCatalog(self):
+ """Convert all the SGML catalog entries as XML ones """
+ ret = libxml2mod.xmlConvertSGMLCatalog(self._o)
+ return ret
+
+ def dump(self, out):
+ """Dump the given catalog to the given file. """
+ libxml2mod.xmlACatalogDump(self._o, out)
+
+ def remove(self, value):
+ """Remove an entry from the catalog """
+ ret = libxml2mod.xmlACatalogRemove(self._o, value)
+ return ret
+
+ def resolve(self, pubID, sysID):
+ """Do a complete resolution lookup of an External Identifier """
+ ret = libxml2mod.xmlACatalogResolve(self._o, pubID, sysID)
+ return ret
+
+ def resolvePublic(self, pubID):
+ """Try to lookup the catalog local reference associated to a
+ public ID in that catalog """
+ ret = libxml2mod.xmlACatalogResolvePublic(self._o, pubID)
+ return ret
+
+ def resolveSystem(self, sysID):
+ """Try to lookup the catalog resource for a system ID """
+ ret = libxml2mod.xmlACatalogResolveSystem(self._o, sysID)
+ return ret
+
+ def resolveURI(self, URI):
+ """Do a complete resolution lookup of an URI """
+ ret = libxml2mod.xmlACatalogResolveURI(self._o, URI)
+ return ret
+
+class xmlDtd(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlDtd got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlDtd (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlDtd functions from module debugXML
+ #
+
+ def debugDumpDTD(self, output):
+ """Dumps debug information for the DTD """
+ libxml2mod.xmlDebugDumpDTD(output, self._o)
+
+ #
+ # xmlDtd functions from module tree
+ #
+
+ def copyDtd(self):
+ """Do a copy of the dtd. """
+ ret = libxml2mod.xmlCopyDtd(self._o)
+ if ret is None:raise treeError('xmlCopyDtd() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def freeDtd(self):
+ """Free a DTD structure. """
+ libxml2mod.xmlFreeDtd(self._o)
+
+ #
+ # xmlDtd functions from module valid
+ #
+
+ def dtdAttrDesc(self, elem, name):
+ """Search the DTD for the description of this attribute on
+ this element. """
+ ret = libxml2mod.xmlGetDtdAttrDesc(self._o, elem, name)
+ if ret is None:raise treeError('xmlGetDtdAttrDesc() failed')
+ __tmp = xmlAttribute(_obj=ret)
+ return __tmp
+
+ def dtdElementDesc(self, name):
+ """Search the DTD for the description of this element """
+ ret = libxml2mod.xmlGetDtdElementDesc(self._o, name)
+ if ret is None:raise treeError('xmlGetDtdElementDesc() failed')
+ __tmp = xmlElement(_obj=ret)
+ return __tmp
+
+ def dtdQAttrDesc(self, elem, name, prefix):
+ """Search the DTD for the description of this qualified
+ attribute on this element. """
+ ret = libxml2mod.xmlGetDtdQAttrDesc(self._o, elem, name, prefix)
+ if ret is None:raise treeError('xmlGetDtdQAttrDesc() failed')
+ __tmp = xmlAttribute(_obj=ret)
+ return __tmp
+
+ def dtdQElementDesc(self, name, prefix):
+ """Search the DTD for the description of this element """
+ ret = libxml2mod.xmlGetDtdQElementDesc(self._o, name, prefix)
+ if ret is None:raise treeError('xmlGetDtdQElementDesc() failed')
+ __tmp = xmlElement(_obj=ret)
+ return __tmp
+
+class xmlElement(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlElement got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlElement (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+class xmlEntity(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlEntity got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlEntity (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlEntity functions from module parserInternals
+ #
+
+ def handleEntity(self, ctxt):
+ """Default handling of defined entities, when should we define
+ a new input stream ? When do we just handle that as a set
+ of chars ? OBSOLETE: to be removed at some point. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ libxml2mod.xmlHandleEntity(ctxt__o, self._o)
+
+class Error:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ # accessors for Error
+ def code(self):
+ """The error code, e.g. an xmlParserError """
+ ret = libxml2mod.xmlErrorGetCode(self._o)
+ return ret
+
+ def domain(self):
+ """What part of the library raised this error """
+ ret = libxml2mod.xmlErrorGetDomain(self._o)
+ return ret
+
+ def file(self):
+ """the filename """
+ ret = libxml2mod.xmlErrorGetFile(self._o)
+ return ret
+
+ def level(self):
+ """how consequent is the error """
+ ret = libxml2mod.xmlErrorGetLevel(self._o)
+ return ret
+
+ def line(self):
+ """the line number if available """
+ ret = libxml2mod.xmlErrorGetLine(self._o)
+ return ret
+
+ def message(self):
+ """human-readable informative error message """
+ ret = libxml2mod.xmlErrorGetMessage(self._o)
+ return ret
+
+ #
+ # Error functions from module xmlerror
+ #
+
+ def copyError(self, to):
+ """Save the original error to the new place. """
+ if to is None: to__o = None
+ else: to__o = to._o
+ ret = libxml2mod.xmlCopyError(self._o, to__o)
+ return ret
+
+ def resetError(self):
+ """Cleanup the error. """
+ libxml2mod.xmlResetError(self._o)
+
+class xmlNs(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlNs got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlNs (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlNs functions from module tree
+ #
+
+ def copyNamespace(self):
+ """Do a copy of the namespace. """
+ ret = libxml2mod.xmlCopyNamespace(self._o)
+ if ret is None:raise treeError('xmlCopyNamespace() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def copyNamespaceList(self):
+ """Do a copy of an namespace list. """
+ ret = libxml2mod.xmlCopyNamespaceList(self._o)
+ if ret is None:raise treeError('xmlCopyNamespaceList() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def freeNs(self):
+ """Free up the structures associated to a namespace """
+ libxml2mod.xmlFreeNs(self._o)
+
+ def freeNsList(self):
+ """Free up all the structures associated to the chained
+ namespaces. """
+ libxml2mod.xmlFreeNsList(self._o)
+
+ def newChild(self, parent, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child list containing the TEXTs and ENTITY_REFs node will
+ be created. NOTE: @content is supposed to be a piece of XML
+ CDATA, so it allows entity references. XML special chars
+ must be escaped first by using
+ xmlEncodeEntitiesReentrant(), or xmlNewTextChild() should
+ be used. """
+ if parent is None: parent__o = None
+ else: parent__o = parent._o
+ ret = libxml2mod.xmlNewChild(parent__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNode(self, doc, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNewDocNode(doc__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNodeEatName(self, doc, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNewDocNodeEatName(doc__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocNodeEatName() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocRawNode(self, doc, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNewDocRawNode(doc__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocRawNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newNodeEatName(self, name):
+ """Creation of a new node element. @ns is optional (None). """
+ ret = libxml2mod.xmlNewNodeEatName(self._o, name)
+ if ret is None:raise treeError('xmlNewNodeEatName() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newNsProp(self, node, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlNewNsProp(node__o, self._o, name, value)
+ if ret is None:raise treeError('xmlNewNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newNsPropEatName(self, node, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlNewNsPropEatName(node__o, self._o, name, value)
+ if ret is None:raise treeError('xmlNewNsPropEatName() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newTextChild(self, parent, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child TEXT node will be created containing the string
+ @content. NOTE: Use xmlNewChild() if @content will contain
+ entities that need to be preserved. Use this function,
+ xmlNewTextChild(), if you need to ensure that reserved XML
+ chars that might appear in @content, such as the ampersand,
+ greater-than or less-than signs, are automatically replaced
+ by their XML escaped entity representations. """
+ if parent is None: parent__o = None
+ else: parent__o = parent._o
+ ret = libxml2mod.xmlNewTextChild(parent__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewTextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def setNs(self, node):
+ """Associate a namespace to a node, a posteriori. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ libxml2mod.xmlSetNs(node__o, self._o)
+
+ def setNsProp(self, node, name, value):
+ """Set (or reset) an attribute carried by a node. The ns
+ structure must be in scope, this is not checked """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlSetNsProp(node__o, self._o, name, value)
+ if ret is None:raise treeError('xmlSetNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def unsetNsProp(self, node, name):
+ """Remove an attribute carried by a node. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlUnsetNsProp(node__o, self._o, name)
+ return ret
+
+ #
+ # xmlNs functions from module xpathInternals
+ #
+
+ def xpathNodeSetFreeNs(self):
+ """Namespace nodes in libxml don't match the XPath semantic.
+ In a node set the namespace nodes are duplicated and the
+ next pointer is set to the parent node in the XPath
+ semantic. Check if such a node needs to be freed """
+ libxml2mod.xmlXPathNodeSetFreeNs(self._o)
+
+class outputBuffer(ioWriteWrapper):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ ioWriteWrapper.__init__(self, _obj=_obj)
+
+ #
+ # outputBuffer functions from module HTMLtree
+ #
+
+ def htmlDocContentDumpFormatOutput(self, cur, encoding, format):
+ """Dump an HTML document. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlDocContentDumpFormatOutput(self._o, cur__o, encoding, format)
+
+ def htmlDocContentDumpOutput(self, cur, encoding):
+ """Dump an HTML document. Formating return/spaces are added. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlDocContentDumpOutput(self._o, cur__o, encoding)
+
+ def htmlNodeDumpFormatOutput(self, doc, cur, encoding, format):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpFormatOutput(self._o, doc__o, cur__o, encoding, format)
+
+ def htmlNodeDumpOutput(self, doc, cur, encoding):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too, and formatting returns/spaces are added. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpOutput(self._o, doc__o, cur__o, encoding)
+
+ #
+ # outputBuffer functions from module tree
+ #
+
+ def nodeDumpOutput(self, doc, cur, level, format, encoding):
+ """Dump an XML node, recursive behaviour, children are printed
+ too. Note that @format = 1 provide node indenting only if
+ xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was
+ called """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.xmlNodeDumpOutput(self._o, doc__o, cur__o, level, format, encoding)
+
+ def saveFileTo(self, cur, encoding):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlSaveFileTo(self._o, cur__o, encoding)
+ return ret
+
+ def saveFormatFileTo(self, cur, encoding, format):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlSaveFormatFileTo(self._o, cur__o, encoding, format)
+ return ret
+
+ #
+ # outputBuffer functions from module xmlIO
+ #
+
+ def getContent(self):
+ """Gives a pointer to the data currently held in the output
+ buffer """
+ ret = libxml2mod.xmlOutputBufferGetContent(self._o)
+ return ret
+
+ def write(self, len, buf):
+ """Write the content of the array in the output I/O buffer
+ This routine handle the I18N transcoding from internal
+ UTF-8 The buffer is lossless, i.e. will store in case of
+ partial or delayed writes. """
+ ret = libxml2mod.xmlOutputBufferWrite(self._o, len, buf)
+ return ret
+
+ def writeString(self, str):
+ """Write the content of the string in the output I/O buffer
+ This routine handle the I18N transcoding from internal
+ UTF-8 The buffer is lossless, i.e. will store in case of
+ partial or delayed writes. """
+ ret = libxml2mod.xmlOutputBufferWriteString(self._o, str)
+ return ret
+
+class inputBuffer(ioReadWrapper):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ ioReadWrapper.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeParserInputBuffer(self._o)
+ self._o = None
+
+ #
+ # inputBuffer functions from module xmlIO
+ #
+
+ def grow(self, len):
+ """Grow up the content of the input buffer, the old data are
+ preserved This routine handle the I18N transcoding to
+ internal UTF-8 This routine is used when operating the
+ parser in normal (pull) mode TODO: one should be able to
+ remove one extra copy by copying directly onto in->buffer
+ or in->raw """
+ ret = libxml2mod.xmlParserInputBufferGrow(self._o, len)
+ return ret
+
+ def push(self, len, buf):
+ """Push the content of the arry in the input buffer This
+ routine handle the I18N transcoding to internal UTF-8 This
+ is used when operating the parser in progressive (push)
+ mode. """
+ ret = libxml2mod.xmlParserInputBufferPush(self._o, len, buf)
+ return ret
+
+ def read(self, len):
+ """Refresh the content of the input buffer, the old data are
+ considered consumed This routine handle the I18N
+ transcoding to internal UTF-8 """
+ ret = libxml2mod.xmlParserInputBufferRead(self._o, len)
+ return ret
+
+ #
+ # inputBuffer functions from module xmlreader
+ #
+
+ def Setup(self, reader, URL, encoding, options):
+ """Setup an XML reader with new options """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderSetup(reader__o, self._o, URL, encoding, options)
+ return ret
+
+ def newTextReader(self, URI):
+ """Create an xmlTextReader structure fed with @input """
+ ret = libxml2mod.xmlNewTextReader(self._o, URI)
+ if ret is None:raise treeError('xmlNewTextReader() failed')
+ __tmp = xmlTextReader(_obj=ret)
+ __tmp.input = self
+ return __tmp
+
+class xmlReg:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRegFreeRegexp(self._o)
+ self._o = None
+
+ #
+ # xmlReg functions from module xmlregexp
+ #
+
+ def regexpExec(self, content):
+ """Check if the regular expression generates the value """
+ ret = libxml2mod.xmlRegexpExec(self._o, content)
+ return ret
+
+ def regexpIsDeterminist(self):
+ """Check if the regular expression is determinist """
+ ret = libxml2mod.xmlRegexpIsDeterminist(self._o)
+ return ret
+
+ def regexpPrint(self, output):
+ """Print the content of the compiled regular expression """
+ libxml2mod.xmlRegexpPrint(output, self._o)
+
+class relaxNgParserCtxt:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRelaxNGFreeParserCtxt(self._o)
+ self._o = None
+
+ #
+ # relaxNgParserCtxt functions from module relaxng
+ #
+
+ def relaxNGParse(self):
+ """parse a schema definition resource and build an internal
+ XML Shema struture which can be used to validate instances. """
+ ret = libxml2mod.xmlRelaxNGParse(self._o)
+ if ret is None:raise parserError('xmlRelaxNGParse() failed')
+ __tmp = relaxNgSchema(_obj=ret)
+ return __tmp
+
+ def relaxParserSetFlag(self, flags):
+ """Semi private function used to pass informations to a parser
+ context which are a combination of xmlRelaxNGParserFlag . """
+ ret = libxml2mod.xmlRelaxParserSetFlag(self._o, flags)
+ return ret
+
+class relaxNgSchema:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRelaxNGFree(self._o)
+ self._o = None
+
+ #
+ # relaxNgSchema functions from module relaxng
+ #
+
+ def relaxNGDump(self, output):
+ """Dump a RelaxNG structure back """
+ libxml2mod.xmlRelaxNGDump(output, self._o)
+
+ def relaxNGDumpTree(self, output):
+ """Dump the transformed RelaxNG tree. """
+ libxml2mod.xmlRelaxNGDumpTree(output, self._o)
+
+ def relaxNGNewValidCtxt(self):
+ """Create an XML RelaxNGs validation context based on the
+ given schema """
+ ret = libxml2mod.xmlRelaxNGNewValidCtxt(self._o)
+ if ret is None:raise treeError('xmlRelaxNGNewValidCtxt() failed')
+ __tmp = relaxNgValidCtxt(_obj=ret)
+ __tmp.schema = self
+ return __tmp
+
+ #
+ # relaxNgSchema functions from module xmlreader
+ #
+
+ def RelaxNGSetSchema(self, reader):
+ """Use RelaxNG to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then RelaxNG validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderRelaxNGSetSchema(reader__o, self._o)
+ return ret
+
+class relaxNgValidCtxt(relaxNgValidCtxtCore):
+ def __init__(self, _obj=None):
+ self.schema = None
+ self._o = _obj
+ relaxNgValidCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRelaxNGFreeValidCtxt(self._o)
+ self._o = None
+
+ #
+ # relaxNgValidCtxt functions from module relaxng
+ #
+
+ def relaxNGValidateDoc(self, doc):
+ """Validate a document tree in memory. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlRelaxNGValidateDoc(self._o, doc__o)
+ return ret
+
+ def relaxNGValidateFullElement(self, doc, elem):
+ """Validate a full subtree when
+ xmlRelaxNGValidatePushElement() returned 0 and the content
+ of the node has been expanded. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidateFullElement(self._o, doc__o, elem__o)
+ return ret
+
+ def relaxNGValidatePopElement(self, doc, elem):
+ """Pop the element end from the RelaxNG validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePopElement(self._o, doc__o, elem__o)
+ return ret
+
+ def relaxNGValidatePushCData(self, data, len):
+ """check the CData parsed for validation in the current stack """
+ ret = libxml2mod.xmlRelaxNGValidatePushCData(self._o, data, len)
+ return ret
+
+ def relaxNGValidatePushElement(self, doc, elem):
+ """Push a new element start on the RelaxNG validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePushElement(self._o, doc__o, elem__o)
+ return ret
+
+ #
+ # relaxNgValidCtxt functions from module xmlreader
+ #
+
+ def RelaxNGValidateCtxt(self, reader, options):
+ """Use RelaxNG schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then RelaxNG schema validation is
+ deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderRelaxNGValidateCtxt(reader__o, self._o, options)
+ return ret
+
+class SchemaParserCtxt:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlSchemaFreeParserCtxt(self._o)
+ self._o = None
+
+ #
+ # SchemaParserCtxt functions from module xmlschemas
+ #
+
+ def schemaParse(self):
+ """parse a schema definition resource and build an internal
+ XML Shema struture which can be used to validate instances. """
+ ret = libxml2mod.xmlSchemaParse(self._o)
+ if ret is None:raise parserError('xmlSchemaParse() failed')
+ __tmp = Schema(_obj=ret)
+ return __tmp
+
+class Schema:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlSchemaFree(self._o)
+ self._o = None
+
+ #
+ # Schema functions from module xmlreader
+ #
+
+ def SetSchema(self, reader):
+ """Use XSD Schema to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then Schema validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderSetSchema(reader__o, self._o)
+ return ret
+
+ #
+ # Schema functions from module xmlschemas
+ #
+
+ def schemaDump(self, output):
+ """Dump a Schema structure. """
+ libxml2mod.xmlSchemaDump(output, self._o)
+
+ def schemaNewValidCtxt(self):
+ """Create an XML Schemas validation context based on the given
+ schema. """
+ ret = libxml2mod.xmlSchemaNewValidCtxt(self._o)
+ if ret is None:raise treeError('xmlSchemaNewValidCtxt() failed')
+ __tmp = SchemaValidCtxt(_obj=ret)
+ __tmp.schema = self
+ return __tmp
+
+class SchemaValidCtxt(SchemaValidCtxtCore):
+ def __init__(self, _obj=None):
+ self.schema = None
+ self._o = _obj
+ SchemaValidCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlSchemaFreeValidCtxt(self._o)
+ self._o = None
+
+ #
+ # SchemaValidCtxt functions from module xmlreader
+ #
+
+ def SchemaValidateCtxt(self, reader, options):
+ """Use W3C XSD schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then XML Schema validation is
+ deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderSchemaValidateCtxt(reader__o, self._o, options)
+ return ret
+
+ #
+ # SchemaValidCtxt functions from module xmlschemas
+ #
+
+ def schemaIsValid(self):
+ """Check if any error was detected during validation. """
+ ret = libxml2mod.xmlSchemaIsValid(self._o)
+ return ret
+
+ def schemaSetValidOptions(self, options):
+ """Sets the options to be used during the validation. """
+ ret = libxml2mod.xmlSchemaSetValidOptions(self._o, options)
+ return ret
+
+ def schemaValidCtxtGetOptions(self):
+ """Get the validation context options. """
+ ret = libxml2mod.xmlSchemaValidCtxtGetOptions(self._o)
+ return ret
+
+ def schemaValidCtxtGetParserCtxt(self):
+ """allow access to the parser context of the schema validation
+ context """
+ ret = libxml2mod.xmlSchemaValidCtxtGetParserCtxt(self._o)
+ if ret is None:raise parserError('xmlSchemaValidCtxtGetParserCtxt() failed')
+ __tmp = parserCtxt(_obj=ret)
+ return __tmp
+
+ def schemaValidateDoc(self, doc):
+ """Validate a document tree in memory. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlSchemaValidateDoc(self._o, doc__o)
+ return ret
+
+ def schemaValidateFile(self, filename, options):
+ """Do a schemas validation of the given resource, it will use
+ the SAX streamable validation internally. """
+ ret = libxml2mod.xmlSchemaValidateFile(self._o, filename, options)
+ return ret
+
+ def schemaValidateOneElement(self, elem):
+ """Validate a branch of a tree, starting with the given @elem. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlSchemaValidateOneElement(self._o, elem__o)
+ return ret
+
+ def schemaValidateSetFilename(self, filename):
+ """Workaround to provide file error reporting information when
+ this is not provided by current APIs """
+ libxml2mod.xmlSchemaValidateSetFilename(self._o, filename)
+
+class xmlTextReaderLocator:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ #
+ # xmlTextReaderLocator functions from module xmlreader
+ #
+
+ def BaseURI(self):
+ """Obtain the base URI for the given locator. """
+ ret = libxml2mod.xmlTextReaderLocatorBaseURI(self._o)
+ return ret
+
+ def LineNumber(self):
+ """Obtain the line number for the given locator. """
+ ret = libxml2mod.xmlTextReaderLocatorLineNumber(self._o)
+ return ret
+
+class xmlTextReader(xmlTextReaderCore):
+ def __init__(self, _obj=None):
+ self.input = None
+ self._o = _obj
+ xmlTextReaderCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeTextReader(self._o)
+ self._o = None
+
+ #
+ # xmlTextReader functions from module xmlreader
+ #
+
+ def AttributeCount(self):
+ """Provides the number of attributes of the current node """
+ ret = libxml2mod.xmlTextReaderAttributeCount(self._o)
+ return ret
+
+ def BaseUri(self):
+ """The base URI of the node. """
+ ret = libxml2mod.xmlTextReaderConstBaseUri(self._o)
+ return ret
+
+ def ByteConsumed(self):
+ """This function provides the current index of the parser used
+ by the reader, relative to the start of the current entity.
+ This function actually just wraps a call to
+ xmlBytesConsumed() for the parser context associated with
+ the reader. See xmlBytesConsumed() for more information. """
+ ret = libxml2mod.xmlTextReaderByteConsumed(self._o)
+ return ret
+
+ def Close(self):
+ """This method releases any resources allocated by the current
+ instance changes the state to Closed and close any
+ underlying input. """
+ ret = libxml2mod.xmlTextReaderClose(self._o)
+ return ret
+
+ def CurrentDoc(self):
+ """Hacking interface allowing to get the xmlDocPtr
+ correponding to the current document being accessed by the
+ xmlTextReader. NOTE: as a result of this call, the reader
+ will not destroy the associated XML document and calling
+ xmlFreeDoc() on the result is needed once the reader
+ parsing has finished. """
+ ret = libxml2mod.xmlTextReaderCurrentDoc(self._o)
+ if ret is None:raise treeError('xmlTextReaderCurrentDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def CurrentNode(self):
+ """Hacking interface allowing to get the xmlNodePtr
+ correponding to the current node being accessed by the
+ xmlTextReader. This is dangerous because the underlying
+ node may be destroyed on the next Reads. """
+ ret = libxml2mod.xmlTextReaderCurrentNode(self._o)
+ if ret is None:raise treeError('xmlTextReaderCurrentNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def Depth(self):
+ """The depth of the node in the tree. """
+ ret = libxml2mod.xmlTextReaderDepth(self._o)
+ return ret
+
+ def Encoding(self):
+ """Determine the encoding of the document being read. """
+ ret = libxml2mod.xmlTextReaderConstEncoding(self._o)
+ return ret
+
+ def Expand(self):
+ """Reads the contents of the current node and the full
+ subtree. It then makes the subtree available until the next
+ xmlTextReaderRead() call """
+ ret = libxml2mod.xmlTextReaderExpand(self._o)
+ if ret is None:raise treeError('xmlTextReaderExpand() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def GetAttribute(self, name):
+ """Provides the value of the attribute with the specified
+ qualified name. """
+ ret = libxml2mod.xmlTextReaderGetAttribute(self._o, name)
+ return ret
+
+ def GetAttributeNo(self, no):
+ """Provides the value of the attribute with the specified
+ index relative to the containing element. """
+ ret = libxml2mod.xmlTextReaderGetAttributeNo(self._o, no)
+ return ret
+
+ def GetAttributeNs(self, localName, namespaceURI):
+ """Provides the value of the specified attribute """
+ ret = libxml2mod.xmlTextReaderGetAttributeNs(self._o, localName, namespaceURI)
+ return ret
+
+ def GetParserColumnNumber(self):
+ """Provide the column number of the current parsing point. """
+ ret = libxml2mod.xmlTextReaderGetParserColumnNumber(self._o)
+ return ret
+
+ def GetParserLineNumber(self):
+ """Provide the line number of the current parsing point. """
+ ret = libxml2mod.xmlTextReaderGetParserLineNumber(self._o)
+ return ret
+
+ def GetParserProp(self, prop):
+ """Read the parser internal property. """
+ ret = libxml2mod.xmlTextReaderGetParserProp(self._o, prop)
+ return ret
+
+ def GetRemainder(self):
+ """Method to get the remainder of the buffered XML. this
+ method stops the parser, set its state to End Of File and
+ return the input stream with what is left that the parser
+ did not use. The implementation is not good, the parser
+ certainly procgressed past what's left in reader->input,
+ and there is an allocation problem. Best would be to
+ rewrite it differently. """
+ ret = libxml2mod.xmlTextReaderGetRemainder(self._o)
+ if ret is None:raise treeError('xmlTextReaderGetRemainder() failed')
+ __tmp = inputBuffer(_obj=ret)
+ return __tmp
+
+ def HasAttributes(self):
+ """Whether the node has attributes. """
+ ret = libxml2mod.xmlTextReaderHasAttributes(self._o)
+ return ret
+
+ def HasValue(self):
+ """Whether the node can have a text value. """
+ ret = libxml2mod.xmlTextReaderHasValue(self._o)
+ return ret
+
+ def IsDefault(self):
+ """Whether an Attribute node was generated from the default
+ value defined in the DTD or schema. """
+ ret = libxml2mod.xmlTextReaderIsDefault(self._o)
+ return ret
+
+ def IsEmptyElement(self):
+ """Check if the current node is empty """
+ ret = libxml2mod.xmlTextReaderIsEmptyElement(self._o)
+ return ret
+
+ def IsNamespaceDecl(self):
+ """Determine whether the current node is a namespace
+ declaration rather than a regular attribute. """
+ ret = libxml2mod.xmlTextReaderIsNamespaceDecl(self._o)
+ return ret
+
+ def IsValid(self):
+ """Retrieve the validity status from the parser context """
+ ret = libxml2mod.xmlTextReaderIsValid(self._o)
+ return ret
+
+ def LocalName(self):
+ """The local name of the node. """
+ ret = libxml2mod.xmlTextReaderConstLocalName(self._o)
+ return ret
+
+ def LookupNamespace(self, prefix):
+ """Resolves a namespace prefix in the scope of the current
+ element. """
+ ret = libxml2mod.xmlTextReaderLookupNamespace(self._o, prefix)
+ return ret
+
+ def MoveToAttribute(self, name):
+ """Moves the position of the current instance to the attribute
+ with the specified qualified name. """
+ ret = libxml2mod.xmlTextReaderMoveToAttribute(self._o, name)
+ return ret
+
+ def MoveToAttributeNo(self, no):
+ """Moves the position of the current instance to the attribute
+ with the specified index relative to the containing element. """
+ ret = libxml2mod.xmlTextReaderMoveToAttributeNo(self._o, no)
+ return ret
+
+ def MoveToAttributeNs(self, localName, namespaceURI):
+ """Moves the position of the current instance to the attribute
+ with the specified local name and namespace URI. """
+ ret = libxml2mod.xmlTextReaderMoveToAttributeNs(self._o, localName, namespaceURI)
+ return ret
+
+ def MoveToElement(self):
+ """Moves the position of the current instance to the node that
+ contains the current Attribute node. """
+ ret = libxml2mod.xmlTextReaderMoveToElement(self._o)
+ return ret
+
+ def MoveToFirstAttribute(self):
+ """Moves the position of the current instance to the first
+ attribute associated with the current node. """
+ ret = libxml2mod.xmlTextReaderMoveToFirstAttribute(self._o)
+ return ret
+
+ def MoveToNextAttribute(self):
+ """Moves the position of the current instance to the next
+ attribute associated with the current node. """
+ ret = libxml2mod.xmlTextReaderMoveToNextAttribute(self._o)
+ return ret
+
+ def Name(self):
+ """The qualified name of the node, equal to Prefix :LocalName. """
+ ret = libxml2mod.xmlTextReaderConstName(self._o)
+ return ret
+
+ def NamespaceUri(self):
+ """The URI defining the namespace associated with the node. """
+ ret = libxml2mod.xmlTextReaderConstNamespaceUri(self._o)
+ return ret
+
+ def NewDoc(self, cur, URL, encoding, options):
+ """Setup an xmltextReader to parse an XML in-memory document.
+ The parsing flags @options are a combination of
+ xmlParserOption. This reuses the existing @reader
+ xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewDoc(self._o, cur, URL, encoding, options)
+ return ret
+
+ def NewFd(self, fd, URL, encoding, options):
+ """Setup an xmltextReader to parse an XML from a file
+ descriptor. NOTE that the file descriptor will not be
+ closed when the reader is closed or reset. The parsing
+ flags @options are a combination of xmlParserOption. This
+ reuses the existing @reader xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewFd(self._o, fd, URL, encoding, options)
+ return ret
+
+ def NewFile(self, filename, encoding, options):
+ """parse an XML file from the filesystem or the network. The
+ parsing flags @options are a combination of
+ xmlParserOption. This reuses the existing @reader
+ xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewFile(self._o, filename, encoding, options)
+ return ret
+
+ def NewMemory(self, buffer, size, URL, encoding, options):
+ """Setup an xmltextReader to parse an XML in-memory document.
+ The parsing flags @options are a combination of
+ xmlParserOption. This reuses the existing @reader
+ xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewMemory(self._o, buffer, size, URL, encoding, options)
+ return ret
+
+ def NewWalker(self, doc):
+ """Setup an xmltextReader to parse a preparsed XML document.
+ This reuses the existing @reader xmlTextReader. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlReaderNewWalker(self._o, doc__o)
+ return ret
+
+ def Next(self):
+ """Skip to the node following the current one in document
+ order while avoiding the subtree if any. """
+ ret = libxml2mod.xmlTextReaderNext(self._o)
+ return ret
+
+ def NextSibling(self):
+ """Skip to the node following the current one in document
+ order while avoiding the subtree if any. Currently
+ implemented only for Readers built on a document """
+ ret = libxml2mod.xmlTextReaderNextSibling(self._o)
+ return ret
+
+ def NodeType(self):
+ """Get the node type of the current node Reference:
+ http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/Xm
+ lNodeType.html """
+ ret = libxml2mod.xmlTextReaderNodeType(self._o)
+ return ret
+
+ def Normalization(self):
+ """The value indicating whether to normalize white space and
+ attribute values. Since attribute value and end of line
+ normalizations are a MUST in the XML specification only the
+ value true is accepted. The broken bahaviour of accepting
+ out of range character entities like &#0; is of course not
+ supported either. """
+ ret = libxml2mod.xmlTextReaderNormalization(self._o)
+ return ret
+
+ def Prefix(self):
+ """A shorthand reference to the namespace associated with the
+ node. """
+ ret = libxml2mod.xmlTextReaderConstPrefix(self._o)
+ return ret
+
+ def Preserve(self):
+ """This tells the XML Reader to preserve the current node. The
+ caller must also use xmlTextReaderCurrentDoc() to keep an
+ handle on the resulting document once parsing has finished """
+ ret = libxml2mod.xmlTextReaderPreserve(self._o)
+ if ret is None:raise treeError('xmlTextReaderPreserve() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def QuoteChar(self):
+ """The quotation mark character used to enclose the value of
+ an attribute. """
+ ret = libxml2mod.xmlTextReaderQuoteChar(self._o)
+ return ret
+
+ def Read(self):
+ """Moves the position of the current instance to the next node
+ in the stream, exposing its properties. """
+ ret = libxml2mod.xmlTextReaderRead(self._o)
+ return ret
+
+ def ReadAttributeValue(self):
+ """Parses an attribute value into one or more Text and
+ EntityReference nodes. """
+ ret = libxml2mod.xmlTextReaderReadAttributeValue(self._o)
+ return ret
+
+ def ReadInnerXml(self):
+ """Reads the contents of the current node, including child
+ nodes and markup. """
+ ret = libxml2mod.xmlTextReaderReadInnerXml(self._o)
+ return ret
+
+ def ReadOuterXml(self):
+ """Reads the contents of the current node, including child
+ nodes and markup. """
+ ret = libxml2mod.xmlTextReaderReadOuterXml(self._o)
+ return ret
+
+ def ReadState(self):
+ """Gets the read state of the reader. """
+ ret = libxml2mod.xmlTextReaderReadState(self._o)
+ return ret
+
+ def ReadString(self):
+ """Reads the contents of an element or a text node as a string. """
+ ret = libxml2mod.xmlTextReaderReadString(self._o)
+ return ret
+
+ def RelaxNGSetSchema(self, schema):
+ """Use RelaxNG to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then RelaxNG validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if schema is None: schema__o = None
+ else: schema__o = schema._o
+ ret = libxml2mod.xmlTextReaderRelaxNGSetSchema(self._o, schema__o)
+ return ret
+
+ def RelaxNGValidate(self, rng):
+ """Use RelaxNG schema to validate the document as it is
+ processed. Activation is only possible before the first
+ Read(). If @rng is None, then RelaxNG schema validation is
+ deactivated. """
+ ret = libxml2mod.xmlTextReaderRelaxNGValidate(self._o, rng)
+ return ret
+
+ def RelaxNGValidateCtxt(self, ctxt, options):
+ """Use RelaxNG schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then RelaxNG schema validation is
+ deactivated. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlTextReaderRelaxNGValidateCtxt(self._o, ctxt__o, options)
+ return ret
+
+ def SchemaValidate(self, xsd):
+ """Use W3C XSD schema to validate the document as it is
+ processed. Activation is only possible before the first
+ Read(). If @xsd is None, then XML Schema validation is
+ deactivated. """
+ ret = libxml2mod.xmlTextReaderSchemaValidate(self._o, xsd)
+ return ret
+
+ def SchemaValidateCtxt(self, ctxt, options):
+ """Use W3C XSD schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then XML Schema validation is
+ deactivated. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlTextReaderSchemaValidateCtxt(self._o, ctxt__o, options)
+ return ret
+
+ def SetParserProp(self, prop, value):
+ """Change the parser processing behaviour by changing some of
+ its internal properties. Note that some properties can only
+ be changed before any read has been done. """
+ ret = libxml2mod.xmlTextReaderSetParserProp(self._o, prop, value)
+ return ret
+
+ def SetSchema(self, schema):
+ """Use XSD Schema to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then Schema validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if schema is None: schema__o = None
+ else: schema__o = schema._o
+ ret = libxml2mod.xmlTextReaderSetSchema(self._o, schema__o)
+ return ret
+
+ def Setup(self, input, URL, encoding, options):
+ """Setup an XML reader with new options """
+ if input is None: input__o = None
+ else: input__o = input._o
+ ret = libxml2mod.xmlTextReaderSetup(self._o, input__o, URL, encoding, options)
+ return ret
+
+ def Standalone(self):
+ """Determine the standalone status of the document being read. """
+ ret = libxml2mod.xmlTextReaderStandalone(self._o)
+ return ret
+
+ def String(self, str):
+ """Get an interned string from the reader, allows for example
+ to speedup string name comparisons """
+ ret = libxml2mod.xmlTextReaderConstString(self._o, str)
+ return ret
+
+ def Value(self):
+ """Provides the text value of the node if present """
+ ret = libxml2mod.xmlTextReaderConstValue(self._o)
+ return ret
+
+ def XmlLang(self):
+ """The xml:lang scope within which the node resides. """
+ ret = libxml2mod.xmlTextReaderConstXmlLang(self._o)
+ return ret
+
+ def XmlVersion(self):
+ """Determine the XML version of the document being read. """
+ ret = libxml2mod.xmlTextReaderConstXmlVersion(self._o)
+ return ret
+
+class URI:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeURI(self._o)
+ self._o = None
+
+ # accessors for URI
+ def authority(self):
+ """Get the authority part from an URI """
+ ret = libxml2mod.xmlURIGetAuthority(self._o)
+ return ret
+
+ def fragment(self):
+ """Get the fragment part from an URI """
+ ret = libxml2mod.xmlURIGetFragment(self._o)
+ return ret
+
+ def opaque(self):
+ """Get the opaque part from an URI """
+ ret = libxml2mod.xmlURIGetOpaque(self._o)
+ return ret
+
+ def path(self):
+ """Get the path part from an URI """
+ ret = libxml2mod.xmlURIGetPath(self._o)
+ return ret
+
+ def port(self):
+ """Get the port part from an URI """
+ ret = libxml2mod.xmlURIGetPort(self._o)
+ return ret
+
+ def query(self):
+ """Get the query part from an URI """
+ ret = libxml2mod.xmlURIGetQuery(self._o)
+ return ret
+
+ def queryRaw(self):
+ """Get the raw query part from an URI (i.e. the unescaped
+ form). """
+ ret = libxml2mod.xmlURIGetQueryRaw(self._o)
+ return ret
+
+ def scheme(self):
+ """Get the scheme part from an URI """
+ ret = libxml2mod.xmlURIGetScheme(self._o)
+ return ret
+
+ def server(self):
+ """Get the server part from an URI """
+ ret = libxml2mod.xmlURIGetServer(self._o)
+ return ret
+
+ def setAuthority(self, authority):
+ """Set the authority part of an URI. """
+ libxml2mod.xmlURISetAuthority(self._o, authority)
+
+ def setFragment(self, fragment):
+ """Set the fragment part of an URI. """
+ libxml2mod.xmlURISetFragment(self._o, fragment)
+
+ def setOpaque(self, opaque):
+ """Set the opaque part of an URI. """
+ libxml2mod.xmlURISetOpaque(self._o, opaque)
+
+ def setPath(self, path):
+ """Set the path part of an URI. """
+ libxml2mod.xmlURISetPath(self._o, path)
+
+ def setPort(self, port):
+ """Set the port part of an URI. """
+ libxml2mod.xmlURISetPort(self._o, port)
+
+ def setQuery(self, query):
+ """Set the query part of an URI. """
+ libxml2mod.xmlURISetQuery(self._o, query)
+
+ def setQueryRaw(self, query_raw):
+ """Set the raw query part of an URI (i.e. the unescaped form). """
+ libxml2mod.xmlURISetQueryRaw(self._o, query_raw)
+
+ def setScheme(self, scheme):
+ """Set the scheme part of an URI. """
+ libxml2mod.xmlURISetScheme(self._o, scheme)
+
+ def setServer(self, server):
+ """Set the server part of an URI. """
+ libxml2mod.xmlURISetServer(self._o, server)
+
+ def setUser(self, user):
+ """Set the user part of an URI. """
+ libxml2mod.xmlURISetUser(self._o, user)
+
+ def user(self):
+ """Get the user part from an URI """
+ ret = libxml2mod.xmlURIGetUser(self._o)
+ return ret
+
+ #
+ # URI functions from module uri
+ #
+
+ def parseURIReference(self, str):
+ """Parse an URI reference string based on RFC 3986 and fills
+ in the appropriate fields of the @uri structure
+ URI-reference = URI / relative-ref """
+ ret = libxml2mod.xmlParseURIReference(self._o, str)
+ return ret
+
+ def printURI(self, stream):
+ """Prints the URI in the stream @stream. """
+ libxml2mod.xmlPrintURI(stream, self._o)
+
+ def saveUri(self):
+ """Save the URI as an escaped string """
+ ret = libxml2mod.xmlSaveUri(self._o)
+ return ret
+
+class ValidCtxt(ValidCtxtCore):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ ValidCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeValidCtxt(self._o)
+ self._o = None
+
+ #
+ # ValidCtxt functions from module valid
+ #
+
+ def validCtxtNormalizeAttributeValue(self, doc, elem, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character.
+ Also check VC: Standalone Document Declaration in P32, and
+ update ctxt->valid accordingly """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidCtxtNormalizeAttributeValue(self._o, doc__o, elem__o, name, value)
+ return ret
+
+ def validateDocument(self, doc):
+ """Try to validate the document instance basically it does
+ the all the checks described by the XML Rec i.e. validates
+ the internal and external subset (if present) and validate
+ the document tree. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateDocument(self._o, doc__o)
+ return ret
+
+ def validateDocumentFinal(self, doc):
+ """Does the final step for the document validation once all
+ the incremental validation steps have been completed
+ basically it does the following checks described by the XML
+ Rec Check all the IDREF/IDREFS attributes definition for
+ validity """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateDocumentFinal(self._o, doc__o)
+ return ret
+
+ def validateDtd(self, doc, dtd):
+ """Try to validate the document against the dtd instance
+ Basically it does check all the definitions in the DtD.
+ Note the the internal subset (if present) is de-coupled
+ (i.e. not used), which could give problems if ID or IDREF
+ is present. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if dtd is None: dtd__o = None
+ else: dtd__o = dtd._o
+ ret = libxml2mod.xmlValidateDtd(self._o, doc__o, dtd__o)
+ return ret
+
+ def validateDtdFinal(self, doc):
+ """Does the final step for the dtds validation once all the
+ subsets have been parsed basically it does the following
+ checks described by the XML Rec - check that ENTITY and
+ ENTITIES type attributes default or possible values matches
+ one of the defined entities. - check that NOTATION type
+ attributes default or possible values matches one of the
+ defined notations. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateDtdFinal(self._o, doc__o)
+ return ret
+
+ def validateElement(self, doc, elem):
+ """Try to validate the subtree under an element """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateElement(self._o, doc__o, elem__o)
+ return ret
+
+ def validateNotationUse(self, doc, notationName):
+ """Validate that the given name match a notation declaration.
+ - [ VC: Notation Declared ] """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateNotationUse(self._o, doc__o, notationName)
+ return ret
+
+ def validateOneAttribute(self, doc, elem, attr, value):
+ """Try to validate a single attribute for an element basically
+ it does the following checks as described by the XML-1.0
+ recommendation: - [ VC: Attribute Value Type ] - [ VC:
+ Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC:
+ Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity
+ Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlValidateOneAttribute(self._o, doc__o, elem__o, attr__o, value)
+ return ret
+
+ def validateOneElement(self, doc, elem):
+ """Try to validate a single element and it's attributes,
+ basically it does the following checks as described by the
+ XML-1.0 recommendation: - [ VC: Element Valid ] - [ VC:
+ Required Attribute ] Then call xmlValidateOneAttribute()
+ for each attribute present. The ID/IDREF checkings are
+ done separately """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateOneElement(self._o, doc__o, elem__o)
+ return ret
+
+ def validateOneNamespace(self, doc, elem, prefix, ns, value):
+ """Try to validate a single namespace declaration for an
+ element basically it does the following checks as described
+ by the XML-1.0 recommendation: - [ VC: Attribute Value Type
+ ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] -
+ [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC:
+ Entity Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlValidateOneNamespace(self._o, doc__o, elem__o, prefix, ns__o, value)
+ return ret
+
+ def validatePopElement(self, doc, elem, qname):
+ """Pop the element end from the validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePopElement(self._o, doc__o, elem__o, qname)
+ return ret
+
+ def validatePushCData(self, data, len):
+ """check the CData parsed for validation in the current stack """
+ ret = libxml2mod.xmlValidatePushCData(self._o, data, len)
+ return ret
+
+ def validatePushElement(self, doc, elem, qname):
+ """Push a new element start on the validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePushElement(self._o, doc__o, elem__o, qname)
+ return ret
+
+ def validateRoot(self, doc):
+ """Try to validate a the root element basically it does the
+ following check as described by the XML-1.0 recommendation:
+ - [ VC: Root Element Type ] it doesn't try to recurse or
+ apply other check to the element """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateRoot(self._o, doc__o)
+ return ret
+
+class xpathContext:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ # accessors for xpathContext
+ def contextDoc(self):
+ """Get the doc from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextDoc(self._o)
+ if ret is None:raise xpathError('xmlXPathGetContextDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def contextNode(self):
+ """Get the current node from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextNode(self._o)
+ if ret is None:raise xpathError('xmlXPathGetContextNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def contextPosition(self):
+ """Get the current node from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextPosition(self._o)
+ return ret
+
+ def contextSize(self):
+ """Get the current node from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextSize(self._o)
+ return ret
+
+ def function(self):
+ """Get the current function name xpathContext """
+ ret = libxml2mod.xmlXPathGetFunction(self._o)
+ return ret
+
+ def functionURI(self):
+ """Get the current function name URI xpathContext """
+ ret = libxml2mod.xmlXPathGetFunctionURI(self._o)
+ return ret
+
+ def setContextDoc(self, doc):
+ """Set the doc of an xpathContext """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ libxml2mod.xmlXPathSetContextDoc(self._o, doc__o)
+
+ def setContextNode(self, node):
+ """Set the current node of an xpathContext """
+ if node is None: node__o = None
+ else: node__o = node._o
+ libxml2mod.xmlXPathSetContextNode(self._o, node__o)
+
+ #
+ # xpathContext functions from module python
+ #
+
+ def registerXPathFunction(self, name, ns_uri, f):
+ """Register a Python written function to the XPath interpreter """
+ ret = libxml2mod.xmlRegisterXPathFunction(self._o, name, ns_uri, f)
+ return ret
+
+ def xpathRegisterVariable(self, name, ns_uri, value):
+ """Register a variable with the XPath context """
+ ret = libxml2mod.xmlXPathRegisterVariable(self._o, name, ns_uri, value)
+ return ret
+
+ #
+ # xpathContext functions from module xpath
+ #
+
+ def xpathContextSetCache(self, active, value, options):
+ """Creates/frees an object cache on the XPath context. If
+ activates XPath objects (xmlXPathObject) will be cached
+ internally to be reused. @options: 0: This will set the
+ XPath object caching: @value: This will set the maximum
+ number of XPath objects to be cached per slot There are 5
+ slots for: node-set, string, number, boolean, and misc
+ objects. Use <0 for the default number (100). Other values
+ for @options have currently no effect. """
+ ret = libxml2mod.xmlXPathContextSetCache(self._o, active, value, options)
+ return ret
+
+ def xpathEval(self, str):
+ """Evaluate the XPath Location Path in the given context. """
+ ret = libxml2mod.xmlXPathEval(str, self._o)
+ if ret is None:raise xpathError('xmlXPathEval() failed')
+ return xpathObjectRet(ret)
+
+ def xpathEvalExpression(self, str):
+ """Evaluate the XPath expression in the given context. """
+ ret = libxml2mod.xmlXPathEvalExpression(str, self._o)
+ if ret is None:raise xpathError('xmlXPathEvalExpression() failed')
+ return xpathObjectRet(ret)
+
+ def xpathFreeContext(self):
+ """Free up an xmlXPathContext """
+ libxml2mod.xmlXPathFreeContext(self._o)
+
+ #
+ # xpathContext functions from module xpathInternals
+ #
+
+ def xpathNewParserContext(self, str):
+ """Create a new xmlXPathParserContext """
+ ret = libxml2mod.xmlXPathNewParserContext(str, self._o)
+ if ret is None:raise xpathError('xmlXPathNewParserContext() failed')
+ __tmp = xpathParserContext(_obj=ret)
+ return __tmp
+
+ def xpathNsLookup(self, prefix):
+ """Search in the namespace declaration array of the context
+ for the given namespace name associated to the given prefix """
+ ret = libxml2mod.xmlXPathNsLookup(self._o, prefix)
+ return ret
+
+ def xpathRegisterAllFunctions(self):
+ """Registers all default XPath functions in this context """
+ libxml2mod.xmlXPathRegisterAllFunctions(self._o)
+
+ def xpathRegisterNs(self, prefix, ns_uri):
+ """Register a new namespace. If @ns_uri is None it unregisters
+ the namespace """
+ ret = libxml2mod.xmlXPathRegisterNs(self._o, prefix, ns_uri)
+ return ret
+
+ def xpathRegisteredFuncsCleanup(self):
+ """Cleanup the XPath context data associated to registered
+ functions """
+ libxml2mod.xmlXPathRegisteredFuncsCleanup(self._o)
+
+ def xpathRegisteredNsCleanup(self):
+ """Cleanup the XPath context data associated to registered
+ variables """
+ libxml2mod.xmlXPathRegisteredNsCleanup(self._o)
+
+ def xpathRegisteredVariablesCleanup(self):
+ """Cleanup the XPath context data associated to registered
+ variables """
+ libxml2mod.xmlXPathRegisteredVariablesCleanup(self._o)
+
+ def xpathVariableLookup(self, name):
+ """Search in the Variable array of the context for the given
+ variable value. """
+ ret = libxml2mod.xmlXPathVariableLookup(self._o, name)
+ if ret is None:raise xpathError('xmlXPathVariableLookup() failed')
+ return xpathObjectRet(ret)
+
+ def xpathVariableLookupNS(self, name, ns_uri):
+ """Search in the Variable array of the context for the given
+ variable value. """
+ ret = libxml2mod.xmlXPathVariableLookupNS(self._o, name, ns_uri)
+ if ret is None:raise xpathError('xmlXPathVariableLookupNS() failed')
+ return xpathObjectRet(ret)
+
+ #
+ # xpathContext functions from module xpointer
+ #
+
+ def xpointerEval(self, str):
+ """Evaluate the XPath Location Path in the given context. """
+ ret = libxml2mod.xmlXPtrEval(str, self._o)
+ if ret is None:raise treeError('xmlXPtrEval() failed')
+ return xpathObjectRet(ret)
+
+class xpathParserContext:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ # accessors for xpathParserContext
+ def context(self):
+ """Get the xpathContext from an xpathParserContext """
+ ret = libxml2mod.xmlXPathParserGetContext(self._o)
+ if ret is None:raise xpathError('xmlXPathParserGetContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+ #
+ # xpathParserContext functions from module xpathInternals
+ #
+
+ def xpathAddValues(self):
+ """Implement the add operation on XPath objects: The numeric
+ operators convert their operands to numbers as if by
+ calling the number function. """
+ libxml2mod.xmlXPathAddValues(self._o)
+
+ def xpathBooleanFunction(self, nargs):
+ """Implement the boolean() XPath function boolean
+ boolean(object) The boolean function converts its argument
+ to a boolean as follows: - a number is true if and only if
+ it is neither positive or negative zero nor NaN - a
+ node-set is true if and only if it is non-empty - a string
+ is true if and only if its length is non-zero """
+ libxml2mod.xmlXPathBooleanFunction(self._o, nargs)
+
+ def xpathCeilingFunction(self, nargs):
+ """Implement the ceiling() XPath function number
+ ceiling(number) The ceiling function returns the smallest
+ (closest to negative infinity) number that is not less than
+ the argument and that is an integer. """
+ libxml2mod.xmlXPathCeilingFunction(self._o, nargs)
+
+ def xpathCompareValues(self, inf, strict):
+ """Implement the compare operation on XPath objects: @arg1 <
+ @arg2 (1, 1, ... @arg1 <= @arg2 (1, 0, ... @arg1 >
+ @arg2 (0, 1, ... @arg1 >= @arg2 (0, 0, ... When
+ neither object to be compared is a node-set and the
+ operator is <=, <, >=, >, then the objects are compared by
+ converted both objects to numbers and comparing the numbers
+ according to IEEE 754. The < comparison will be true if and
+ only if the first number is less than the second number.
+ The <= comparison will be true if and only if the first
+ number is less than or equal to the second number. The >
+ comparison will be true if and only if the first number is
+ greater than the second number. The >= comparison will be
+ true if and only if the first number is greater than or
+ equal to the second number. """
+ ret = libxml2mod.xmlXPathCompareValues(self._o, inf, strict)
+ return ret
+
+ def xpathConcatFunction(self, nargs):
+ """Implement the concat() XPath function string concat(string,
+ string, string*) The concat function returns the
+ concatenation of its arguments. """
+ libxml2mod.xmlXPathConcatFunction(self._o, nargs)
+
+ def xpathContainsFunction(self, nargs):
+ """Implement the contains() XPath function boolean
+ contains(string, string) The contains function returns true
+ if the first argument string contains the second argument
+ string, and otherwise returns false. """
+ libxml2mod.xmlXPathContainsFunction(self._o, nargs)
+
+ def xpathCountFunction(self, nargs):
+ """Implement the count() XPath function number count(node-set) """
+ libxml2mod.xmlXPathCountFunction(self._o, nargs)
+
+ def xpathDivValues(self):
+ """Implement the div operation on XPath objects @arg1 / @arg2:
+ The numeric operators convert their operands to numbers as
+ if by calling the number function. """
+ libxml2mod.xmlXPathDivValues(self._o)
+
+ def xpathEqualValues(self):
+ """Implement the equal operation on XPath objects content:
+ @arg1 == @arg2 """
+ ret = libxml2mod.xmlXPathEqualValues(self._o)
+ return ret
+
+ def xpathErr(self, error):
+ """Handle an XPath error """
+ libxml2mod.xmlXPathErr(self._o, error)
+
+ def xpathEvalExpr(self):
+ """Parse and evaluate an XPath expression in the given
+ context, then push the result on the context stack """
+ libxml2mod.xmlXPathEvalExpr(self._o)
+
+ def xpathFalseFunction(self, nargs):
+ """Implement the false() XPath function boolean false() """
+ libxml2mod.xmlXPathFalseFunction(self._o, nargs)
+
+ def xpathFloorFunction(self, nargs):
+ """Implement the floor() XPath function number floor(number)
+ The floor function returns the largest (closest to positive
+ infinity) number that is not greater than the argument and
+ that is an integer. """
+ libxml2mod.xmlXPathFloorFunction(self._o, nargs)
+
+ def xpathFreeParserContext(self):
+ """Free up an xmlXPathParserContext """
+ libxml2mod.xmlXPathFreeParserContext(self._o)
+
+ def xpathIdFunction(self, nargs):
+ """Implement the id() XPath function node-set id(object) The
+ id function selects elements by their unique ID (see [5.2.1
+ Unique IDs]). When the argument to id is of type node-set,
+ then the result is the union of the result of applying id
+ to the string value of each of the nodes in the argument
+ node-set. When the argument to id is of any other type, the
+ argument is converted to a string as if by a call to the
+ string function; the string is split into a
+ whitespace-separated list of tokens (whitespace is any
+ sequence of characters matching the production S); the
+ result is a node-set containing the elements in the same
+ document as the context node that have a unique ID equal to
+ any of the tokens in the list. """
+ libxml2mod.xmlXPathIdFunction(self._o, nargs)
+
+ def xpathLangFunction(self, nargs):
+ """Implement the lang() XPath function boolean lang(string)
+ The lang function returns true or false depending on
+ whether the language of the context node as specified by
+ xml:lang attributes is the same as or is a sublanguage of
+ the language specified by the argument string. The language
+ of the context node is determined by the value of the
+ xml:lang attribute on the context node, or, if the context
+ node has no xml:lang attribute, by the value of the
+ xml:lang attribute on the nearest ancestor of the context
+ node that has an xml:lang attribute. If there is no such
+ attribute, then lang """
+ libxml2mod.xmlXPathLangFunction(self._o, nargs)
+
+ def xpathLastFunction(self, nargs):
+ """Implement the last() XPath function number last() The last
+ function returns the number of nodes in the context node
+ list. """
+ libxml2mod.xmlXPathLastFunction(self._o, nargs)
+
+ def xpathLocalNameFunction(self, nargs):
+ """Implement the local-name() XPath function string
+ local-name(node-set?) The local-name function returns a
+ string containing the local part of the name of the node in
+ the argument node-set that is first in document order. If
+ the node-set is empty or the first node has no name, an
+ empty string is returned. If the argument is omitted it
+ defaults to the context node. """
+ libxml2mod.xmlXPathLocalNameFunction(self._o, nargs)
+
+ def xpathModValues(self):
+ """Implement the mod operation on XPath objects: @arg1 / @arg2
+ The numeric operators convert their operands to numbers as
+ if by calling the number function. """
+ libxml2mod.xmlXPathModValues(self._o)
+
+ def xpathMultValues(self):
+ """Implement the multiply operation on XPath objects: The
+ numeric operators convert their operands to numbers as if
+ by calling the number function. """
+ libxml2mod.xmlXPathMultValues(self._o)
+
+ def xpathNamespaceURIFunction(self, nargs):
+ """Implement the namespace-uri() XPath function string
+ namespace-uri(node-set?) The namespace-uri function returns
+ a string containing the namespace URI of the expanded name
+ of the node in the argument node-set that is first in
+ document order. If the node-set is empty, the first node
+ has no name, or the expanded name has no namespace URI, an
+ empty string is returned. If the argument is omitted it
+ defaults to the context node. """
+ libxml2mod.xmlXPathNamespaceURIFunction(self._o, nargs)
+
+ def xpathNextAncestor(self, cur):
+ """Traversal function for the "ancestor" direction the
+ ancestor axis contains the ancestors of the context node;
+ the ancestors of the context node consist of the parent of
+ context node and the parent's parent and so on; the nodes
+ are ordered in reverse document order; thus the parent is
+ the first node on the axis, and the parent's parent is the
+ second node on the axis """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextAncestor(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextAncestor() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAncestorOrSelf(self, cur):
+ """Traversal function for the "ancestor-or-self" direction he
+ ancestor-or-self axis contains the context node and
+ ancestors of the context node in reverse document order;
+ thus the context node is the first node on the axis, and
+ the context node's parent the second; parent here is
+ defined the same as with the parent axis. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextAncestorOrSelf(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextAncestorOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAttribute(self, cur):
+ """Traversal function for the "attribute" direction TODO:
+ support DTD inherited default attributes """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextAttribute(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextAttribute() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextChild(self, cur):
+ """Traversal function for the "child" direction The child axis
+ contains the children of the context node in document order. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextChild(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendant(self, cur):
+ """Traversal function for the "descendant" direction the
+ descendant axis contains the descendants of the context
+ node in document order; a descendant is a child or a child
+ of a child and so on. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextDescendant(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextDescendant() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendantOrSelf(self, cur):
+ """Traversal function for the "descendant-or-self" direction
+ the descendant-or-self axis contains the context node and
+ the descendants of the context node in document order; thus
+ the context node is the first node on the axis, and the
+ first child of the context node is the second node on the
+ axis """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextDescendantOrSelf(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextDescendantOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowing(self, cur):
+ """Traversal function for the "following" direction The
+ following axis contains all nodes in the same document as
+ the context node that are after the context node in
+ document order, excluding any descendants and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in document order """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextFollowing(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextFollowing() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowingSibling(self, cur):
+ """Traversal function for the "following-sibling" direction
+ The following-sibling axis contains the following siblings
+ of the context node in document order. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextFollowingSibling(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextFollowingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextNamespace(self, cur):
+ """Traversal function for the "namespace" direction the
+ namespace axis contains the namespace nodes of the context
+ node; the order of nodes on this axis is
+ implementation-defined; the axis will be empty unless the
+ context node is an element We keep the XML namespace node
+ at the end of the list. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextNamespace(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextNamespace() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextParent(self, cur):
+ """Traversal function for the "parent" direction The parent
+ axis contains the parent of the context node, if there is
+ one. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextParent(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextParent() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPreceding(self, cur):
+ """Traversal function for the "preceding" direction the
+ preceding axis contains all nodes in the same document as
+ the context node that are before the context node in
+ document order, excluding any ancestors and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in reverse document order """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextPreceding(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextPreceding() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPrecedingSibling(self, cur):
+ """Traversal function for the "preceding-sibling" direction
+ The preceding-sibling axis contains the preceding siblings
+ of the context node in reverse document order; the first
+ preceding sibling is first on the axis; the sibling
+ preceding that node is the second on the axis and so on. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextPrecedingSibling(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextPrecedingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextSelf(self, cur):
+ """Traversal function for the "self" direction The self axis
+ contains just the context node itself """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextSelf(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNormalizeFunction(self, nargs):
+ """Implement the normalize-space() XPath function string
+ normalize-space(string?) The normalize-space function
+ returns the argument string with white space normalized by
+ stripping leading and trailing whitespace and replacing
+ sequences of whitespace characters by a single space.
+ Whitespace characters are the same allowed by the S
+ production in XML. If the argument is omitted, it defaults
+ to the context node converted to a string, in other words
+ the value of the context node. """
+ libxml2mod.xmlXPathNormalizeFunction(self._o, nargs)
+
+ def xpathNotEqualValues(self):
+ """Implement the equal operation on XPath objects content:
+ @arg1 == @arg2 """
+ ret = libxml2mod.xmlXPathNotEqualValues(self._o)
+ return ret
+
+ def xpathNotFunction(self, nargs):
+ """Implement the not() XPath function boolean not(boolean) The
+ not function returns true if its argument is false, and
+ false otherwise. """
+ libxml2mod.xmlXPathNotFunction(self._o, nargs)
+
+ def xpathNumberFunction(self, nargs):
+ """Implement the number() XPath function number number(object?) """
+ libxml2mod.xmlXPathNumberFunction(self._o, nargs)
+
+ def xpathParseNCName(self):
+ """parse an XML namespace non qualified name. [NS 3] NCName
+ ::= (Letter | '_') (NCNameChar)* [NS 4] NCNameChar ::=
+ Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender """
+ ret = libxml2mod.xmlXPathParseNCName(self._o)
+ return ret
+
+ def xpathParseName(self):
+ """parse an XML name [4] NameChar ::= Letter | Digit | '.' |
+ '-' | '_' | ':' | CombiningChar | Extender [5] Name ::=
+ (Letter | '_' | ':') (NameChar)* """
+ ret = libxml2mod.xmlXPathParseName(self._o)
+ return ret
+
+ def xpathPopBoolean(self):
+ """Pops a boolean from the stack, handling conversion if
+ needed. Check error with #xmlXPathCheckError. """
+ ret = libxml2mod.xmlXPathPopBoolean(self._o)
+ return ret
+
+ def xpathPopNumber(self):
+ """Pops a number from the stack, handling conversion if
+ needed. Check error with #xmlXPathCheckError. """
+ ret = libxml2mod.xmlXPathPopNumber(self._o)
+ return ret
+
+ def xpathPopString(self):
+ """Pops a string from the stack, handling conversion if
+ needed. Check error with #xmlXPathCheckError. """
+ ret = libxml2mod.xmlXPathPopString(self._o)
+ return ret
+
+ def xpathPositionFunction(self, nargs):
+ """Implement the position() XPath function number position()
+ The position function returns the position of the context
+ node in the context node list. The first position is 1, and
+ so the last position will be equal to last(). """
+ libxml2mod.xmlXPathPositionFunction(self._o, nargs)
+
+ def xpathRoot(self):
+ """Initialize the context to the root of the document """
+ libxml2mod.xmlXPathRoot(self._o)
+
+ def xpathRoundFunction(self, nargs):
+ """Implement the round() XPath function number round(number)
+ The round function returns the number that is closest to
+ the argument and that is an integer. If there are two such
+ numbers, then the one that is even is returned. """
+ libxml2mod.xmlXPathRoundFunction(self._o, nargs)
+
+ def xpathStartsWithFunction(self, nargs):
+ """Implement the starts-with() XPath function boolean
+ starts-with(string, string) The starts-with function
+ returns true if the first argument string starts with the
+ second argument string, and otherwise returns false. """
+ libxml2mod.xmlXPathStartsWithFunction(self._o, nargs)
+
+ def xpathStringFunction(self, nargs):
+ """Implement the string() XPath function string
+ string(object?) The string function converts an object to a
+ string as follows: - A node-set is converted to a string by
+ returning the value of the node in the node-set that is
+ first in document order. If the node-set is empty, an empty
+ string is returned. - A number is converted to a string as
+ follows + NaN is converted to the string NaN + positive
+ zero is converted to the string 0 + negative zero is
+ converted to the string 0 + positive infinity is converted
+ to the string Infinity + negative infinity is converted to
+ the string -Infinity + if the number is an integer, the
+ number is represented in decimal form as a Number with no
+ decimal point and no leading zeros, preceded by a minus
+ sign (-) if the number is negative + otherwise, the number
+ is represented in decimal form as a Number including a
+ decimal point with at least one digit before the decimal
+ point and at least one digit after the decimal point,
+ preceded by a minus sign (-) if the number is negative;
+ there must be no leading zeros before the decimal point
+ apart possibly from the one required digit immediately
+ before the decimal point; beyond the one required digit
+ after the decimal point there must be as many, but only as
+ many, more digits as are needed to uniquely distinguish the
+ number from all other IEEE 754 numeric values. - The
+ boolean false value is converted to the string false. The
+ boolean true value is converted to the string true. If the
+ argument is omitted, it defaults to a node-set with the
+ context node as its only member. """
+ libxml2mod.xmlXPathStringFunction(self._o, nargs)
+
+ def xpathStringLengthFunction(self, nargs):
+ """Implement the string-length() XPath function number
+ string-length(string?) The string-length returns the number
+ of characters in the string (see [3.6 Strings]). If the
+ argument is omitted, it defaults to the context node
+ converted to a string, in other words the value of the
+ context node. """
+ libxml2mod.xmlXPathStringLengthFunction(self._o, nargs)
+
+ def xpathSubValues(self):
+ """Implement the subtraction operation on XPath objects: The
+ numeric operators convert their operands to numbers as if
+ by calling the number function. """
+ libxml2mod.xmlXPathSubValues(self._o)
+
+ def xpathSubstringAfterFunction(self, nargs):
+ """Implement the substring-after() XPath function string
+ substring-after(string, string) The substring-after
+ function returns the substring of the first argument string
+ that follows the first occurrence of the second argument
+ string in the first argument string, or the empty stringi
+ if the first argument string does not contain the second
+ argument string. For example,
+ substring-after("1999/04/01","/") returns 04/01, and
+ substring-after("1999/04/01","19") returns 99/04/01. """
+ libxml2mod.xmlXPathSubstringAfterFunction(self._o, nargs)
+
+ def xpathSubstringBeforeFunction(self, nargs):
+ """Implement the substring-before() XPath function string
+ substring-before(string, string) The substring-before
+ function returns the substring of the first argument string
+ that precedes the first occurrence of the second argument
+ string in the first argument string, or the empty string if
+ the first argument string does not contain the second
+ argument string. For example,
+ substring-before("1999/04/01","/") returns 1999. """
+ libxml2mod.xmlXPathSubstringBeforeFunction(self._o, nargs)
+
+ def xpathSubstringFunction(self, nargs):
+ """Implement the substring() XPath function string
+ substring(string, number, number?) The substring function
+ returns the substring of the first argument starting at the
+ position specified in the second argument with length
+ specified in the third argument. For example,
+ substring("12345",2,3) returns "234". If the third argument
+ is not specified, it returns the substring starting at the
+ position specified in the second argument and continuing to
+ the end of the string. For example, substring("12345",2)
+ returns "2345". More precisely, each character in the
+ string (see [3.6 Strings]) is considered to have a numeric
+ position: the position of the first character is 1, the
+ position of the second character is 2 and so on. The
+ returned substring contains those characters for which the
+ position of the character is greater than or equal to the
+ second argument and, if the third argument is specified,
+ less than the sum of the second and third arguments; the
+ comparisons and addition used for the above follow the
+ standard IEEE 754 rules. Thus: - substring("12345", 1.5,
+ 2.6) returns "234" - substring("12345", 0, 3) returns "12"
+ - substring("12345", 0 div 0, 3) returns "" -
+ substring("12345", 1, 0 div 0) returns "" -
+ substring("12345", -42, 1 div 0) returns "12345" -
+ substring("12345", -1 div 0, 1 div 0) returns "" """
+ libxml2mod.xmlXPathSubstringFunction(self._o, nargs)
+
+ def xpathSumFunction(self, nargs):
+ """Implement the sum() XPath function number sum(node-set) The
+ sum function returns the sum of the values of the nodes in
+ the argument node-set. """
+ libxml2mod.xmlXPathSumFunction(self._o, nargs)
+
+ def xpathTranslateFunction(self, nargs):
+ """Implement the translate() XPath function string
+ translate(string, string, string) The translate function
+ returns the first argument string with occurrences of
+ characters in the second argument string replaced by the
+ character at the corresponding position in the third
+ argument string. For example, translate("bar","abc","ABC")
+ returns the string BAr. If there is a character in the
+ second argument string with no character at a corresponding
+ position in the third argument string (because the second
+ argument string is longer than the third argument string),
+ then occurrences of that character in the first argument
+ string are removed. For example,
+ translate("--aaa--","abc-","ABC") """
+ libxml2mod.xmlXPathTranslateFunction(self._o, nargs)
+
+ def xpathTrueFunction(self, nargs):
+ """Implement the true() XPath function boolean true() """
+ libxml2mod.xmlXPathTrueFunction(self._o, nargs)
+
+ def xpathValueFlipSign(self):
+ """Implement the unary - operation on an XPath object The
+ numeric operators convert their operands to numbers as if
+ by calling the number function. """
+ libxml2mod.xmlXPathValueFlipSign(self._o)
+
+ def xpatherror(self, file, line, no):
+ """Formats an error message. """
+ libxml2mod.xmlXPatherror(self._o, file, line, no)
+
+ #
+ # xpathParserContext functions from module xpointer
+ #
+
+ def xpointerEvalRangePredicate(self):
+ """[8] Predicate ::= '[' PredicateExpr ']' [9]
+ PredicateExpr ::= Expr Evaluate a predicate as in
+ xmlXPathEvalPredicate() but for a Location Set instead of a
+ node set """
+ libxml2mod.xmlXPtrEvalRangePredicate(self._o)
+
+ def xpointerRangeToFunction(self, nargs):
+ """Implement the range-to() XPointer function """
+ libxml2mod.xmlXPtrRangeToFunction(self._o, nargs)
+
+# xlinkShow
+XLINK_SHOW_NONE = 0
+XLINK_SHOW_NEW = 1
+XLINK_SHOW_EMBED = 2
+XLINK_SHOW_REPLACE = 3
+
+# xmlRelaxNGParserFlag
+XML_RELAXNGP_NONE = 0
+XML_RELAXNGP_FREE_DOC = 1
+XML_RELAXNGP_CRNG = 2
+
+# xmlBufferAllocationScheme
+XML_BUFFER_ALLOC_DOUBLEIT = 1
+XML_BUFFER_ALLOC_EXACT = 2
+XML_BUFFER_ALLOC_IMMUTABLE = 3
+XML_BUFFER_ALLOC_IO = 4
+XML_BUFFER_ALLOC_HYBRID = 5
+
+# xmlParserSeverities
+XML_PARSER_SEVERITY_VALIDITY_WARNING = 1
+XML_PARSER_SEVERITY_VALIDITY_ERROR = 2
+XML_PARSER_SEVERITY_WARNING = 3
+XML_PARSER_SEVERITY_ERROR = 4
+
+# xmlAttributeDefault
+XML_ATTRIBUTE_NONE = 1
+XML_ATTRIBUTE_REQUIRED = 2
+XML_ATTRIBUTE_IMPLIED = 3
+XML_ATTRIBUTE_FIXED = 4
+
+# xmlSchemaValType
+XML_SCHEMAS_UNKNOWN = 0
+XML_SCHEMAS_STRING = 1
+XML_SCHEMAS_NORMSTRING = 2
+XML_SCHEMAS_DECIMAL = 3
+XML_SCHEMAS_TIME = 4
+XML_SCHEMAS_GDAY = 5
+XML_SCHEMAS_GMONTH = 6
+XML_SCHEMAS_GMONTHDAY = 7
+XML_SCHEMAS_GYEAR = 8
+XML_SCHEMAS_GYEARMONTH = 9
+XML_SCHEMAS_DATE = 10
+XML_SCHEMAS_DATETIME = 11
+XML_SCHEMAS_DURATION = 12
+XML_SCHEMAS_FLOAT = 13
+XML_SCHEMAS_DOUBLE = 14
+XML_SCHEMAS_BOOLEAN = 15
+XML_SCHEMAS_TOKEN = 16
+XML_SCHEMAS_LANGUAGE = 17
+XML_SCHEMAS_NMTOKEN = 18
+XML_SCHEMAS_NMTOKENS = 19
+XML_SCHEMAS_NAME = 20
+XML_SCHEMAS_QNAME = 21
+XML_SCHEMAS_NCNAME = 22
+XML_SCHEMAS_ID = 23
+XML_SCHEMAS_IDREF = 24
+XML_SCHEMAS_IDREFS = 25
+XML_SCHEMAS_ENTITY = 26
+XML_SCHEMAS_ENTITIES = 27
+XML_SCHEMAS_NOTATION = 28
+XML_SCHEMAS_ANYURI = 29
+XML_SCHEMAS_INTEGER = 30
+XML_SCHEMAS_NPINTEGER = 31
+XML_SCHEMAS_NINTEGER = 32
+XML_SCHEMAS_NNINTEGER = 33
+XML_SCHEMAS_PINTEGER = 34
+XML_SCHEMAS_INT = 35
+XML_SCHEMAS_UINT = 36
+XML_SCHEMAS_LONG = 37
+XML_SCHEMAS_ULONG = 38
+XML_SCHEMAS_SHORT = 39
+XML_SCHEMAS_USHORT = 40
+XML_SCHEMAS_BYTE = 41
+XML_SCHEMAS_UBYTE = 42
+XML_SCHEMAS_HEXBINARY = 43
+XML_SCHEMAS_BASE64BINARY = 44
+XML_SCHEMAS_ANYTYPE = 45
+XML_SCHEMAS_ANYSIMPLETYPE = 46
+
+# xmlParserInputState
+XML_PARSER_EOF = -1
+XML_PARSER_START = 0
+XML_PARSER_MISC = 1
+XML_PARSER_PI = 2
+XML_PARSER_DTD = 3
+XML_PARSER_PROLOG = 4
+XML_PARSER_COMMENT = 5
+XML_PARSER_START_TAG = 6
+XML_PARSER_CONTENT = 7
+XML_PARSER_CDATA_SECTION = 8
+XML_PARSER_END_TAG = 9
+XML_PARSER_ENTITY_DECL = 10
+XML_PARSER_ENTITY_VALUE = 11
+XML_PARSER_ATTRIBUTE_VALUE = 12
+XML_PARSER_SYSTEM_LITERAL = 13
+XML_PARSER_EPILOG = 14
+XML_PARSER_IGNORE = 15
+XML_PARSER_PUBLIC_LITERAL = 16
+
+# xmlEntityType
+XML_INTERNAL_GENERAL_ENTITY = 1
+XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2
+XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3
+XML_INTERNAL_PARAMETER_ENTITY = 4
+XML_EXTERNAL_PARAMETER_ENTITY = 5
+XML_INTERNAL_PREDEFINED_ENTITY = 6
+
+# xmlSaveOption
+XML_SAVE_FORMAT = 1
+XML_SAVE_NO_DECL = 2
+XML_SAVE_NO_EMPTY = 4
+XML_SAVE_NO_XHTML = 8
+XML_SAVE_XHTML = 16
+XML_SAVE_AS_XML = 32
+XML_SAVE_AS_HTML = 64
+XML_SAVE_WSNONSIG = 128
+
+# xmlPatternFlags
+XML_PATTERN_DEFAULT = 0
+XML_PATTERN_XPATH = 1
+XML_PATTERN_XSSEL = 2
+XML_PATTERN_XSFIELD = 4
+
+# xmlParserErrors
+XML_ERR_OK = 0
+XML_ERR_INTERNAL_ERROR = 1
+XML_ERR_NO_MEMORY = 2
+XML_ERR_DOCUMENT_START = 3
+XML_ERR_DOCUMENT_EMPTY = 4
+XML_ERR_DOCUMENT_END = 5
+XML_ERR_INVALID_HEX_CHARREF = 6
+XML_ERR_INVALID_DEC_CHARREF = 7
+XML_ERR_INVALID_CHARREF = 8
+XML_ERR_INVALID_CHAR = 9
+XML_ERR_CHARREF_AT_EOF = 10
+XML_ERR_CHARREF_IN_PROLOG = 11
+XML_ERR_CHARREF_IN_EPILOG = 12
+XML_ERR_CHARREF_IN_DTD = 13
+XML_ERR_ENTITYREF_AT_EOF = 14
+XML_ERR_ENTITYREF_IN_PROLOG = 15
+XML_ERR_ENTITYREF_IN_EPILOG = 16
+XML_ERR_ENTITYREF_IN_DTD = 17
+XML_ERR_PEREF_AT_EOF = 18
+XML_ERR_PEREF_IN_PROLOG = 19
+XML_ERR_PEREF_IN_EPILOG = 20
+XML_ERR_PEREF_IN_INT_SUBSET = 21
+XML_ERR_ENTITYREF_NO_NAME = 22
+XML_ERR_ENTITYREF_SEMICOL_MISSING = 23
+XML_ERR_PEREF_NO_NAME = 24
+XML_ERR_PEREF_SEMICOL_MISSING = 25
+XML_ERR_UNDECLARED_ENTITY = 26
+XML_WAR_UNDECLARED_ENTITY = 27
+XML_ERR_UNPARSED_ENTITY = 28
+XML_ERR_ENTITY_IS_EXTERNAL = 29
+XML_ERR_ENTITY_IS_PARAMETER = 30
+XML_ERR_UNKNOWN_ENCODING = 31
+XML_ERR_UNSUPPORTED_ENCODING = 32
+XML_ERR_STRING_NOT_STARTED = 33
+XML_ERR_STRING_NOT_CLOSED = 34
+XML_ERR_NS_DECL_ERROR = 35
+XML_ERR_ENTITY_NOT_STARTED = 36
+XML_ERR_ENTITY_NOT_FINISHED = 37
+XML_ERR_LT_IN_ATTRIBUTE = 38
+XML_ERR_ATTRIBUTE_NOT_STARTED = 39
+XML_ERR_ATTRIBUTE_NOT_FINISHED = 40
+XML_ERR_ATTRIBUTE_WITHOUT_VALUE = 41
+XML_ERR_ATTRIBUTE_REDEFINED = 42
+XML_ERR_LITERAL_NOT_STARTED = 43
+XML_ERR_LITERAL_NOT_FINISHED = 44
+XML_ERR_COMMENT_NOT_FINISHED = 45
+XML_ERR_PI_NOT_STARTED = 46
+XML_ERR_PI_NOT_FINISHED = 47
+XML_ERR_NOTATION_NOT_STARTED = 48
+XML_ERR_NOTATION_NOT_FINISHED = 49
+XML_ERR_ATTLIST_NOT_STARTED = 50
+XML_ERR_ATTLIST_NOT_FINISHED = 51
+XML_ERR_MIXED_NOT_STARTED = 52
+XML_ERR_MIXED_NOT_FINISHED = 53
+XML_ERR_ELEMCONTENT_NOT_STARTED = 54
+XML_ERR_ELEMCONTENT_NOT_FINISHED = 55
+XML_ERR_XMLDECL_NOT_STARTED = 56
+XML_ERR_XMLDECL_NOT_FINISHED = 57
+XML_ERR_CONDSEC_NOT_STARTED = 58
+XML_ERR_CONDSEC_NOT_FINISHED = 59
+XML_ERR_EXT_SUBSET_NOT_FINISHED = 60
+XML_ERR_DOCTYPE_NOT_FINISHED = 61
+XML_ERR_MISPLACED_CDATA_END = 62
+XML_ERR_CDATA_NOT_FINISHED = 63
+XML_ERR_RESERVED_XML_NAME = 64
+XML_ERR_SPACE_REQUIRED = 65
+XML_ERR_SEPARATOR_REQUIRED = 66
+XML_ERR_NMTOKEN_REQUIRED = 67
+XML_ERR_NAME_REQUIRED = 68
+XML_ERR_PCDATA_REQUIRED = 69
+XML_ERR_URI_REQUIRED = 70
+XML_ERR_PUBID_REQUIRED = 71
+XML_ERR_LT_REQUIRED = 72
+XML_ERR_GT_REQUIRED = 73
+XML_ERR_LTSLASH_REQUIRED = 74
+XML_ERR_EQUAL_REQUIRED = 75
+XML_ERR_TAG_NAME_MISMATCH = 76
+XML_ERR_TAG_NOT_FINISHED = 77
+XML_ERR_STANDALONE_VALUE = 78
+XML_ERR_ENCODING_NAME = 79
+XML_ERR_HYPHEN_IN_COMMENT = 80
+XML_ERR_INVALID_ENCODING = 81
+XML_ERR_EXT_ENTITY_STANDALONE = 82
+XML_ERR_CONDSEC_INVALID = 83
+XML_ERR_VALUE_REQUIRED = 84
+XML_ERR_NOT_WELL_BALANCED = 85
+XML_ERR_EXTRA_CONTENT = 86
+XML_ERR_ENTITY_CHAR_ERROR = 87
+XML_ERR_ENTITY_PE_INTERNAL = 88
+XML_ERR_ENTITY_LOOP = 89
+XML_ERR_ENTITY_BOUNDARY = 90
+XML_ERR_INVALID_URI = 91
+XML_ERR_URI_FRAGMENT = 92
+XML_WAR_CATALOG_PI = 93
+XML_ERR_NO_DTD = 94
+XML_ERR_CONDSEC_INVALID_KEYWORD = 95
+XML_ERR_VERSION_MISSING = 96
+XML_WAR_UNKNOWN_VERSION = 97
+XML_WAR_LANG_VALUE = 98
+XML_WAR_NS_URI = 99
+XML_WAR_NS_URI_RELATIVE = 100
+XML_ERR_MISSING_ENCODING = 101
+XML_WAR_SPACE_VALUE = 102
+XML_ERR_NOT_STANDALONE = 103
+XML_ERR_ENTITY_PROCESSING = 104
+XML_ERR_NOTATION_PROCESSING = 105
+XML_WAR_NS_COLUMN = 106
+XML_WAR_ENTITY_REDEFINED = 107
+XML_ERR_UNKNOWN_VERSION = 108
+XML_ERR_VERSION_MISMATCH = 109
+XML_ERR_NAME_TOO_LONG = 110
+XML_ERR_USER_STOP = 111
+XML_NS_ERR_XML_NAMESPACE = 200
+XML_NS_ERR_UNDEFINED_NAMESPACE = 201
+XML_NS_ERR_QNAME = 202
+XML_NS_ERR_ATTRIBUTE_REDEFINED = 203
+XML_NS_ERR_EMPTY = 204
+XML_NS_ERR_COLON = 205
+XML_DTD_ATTRIBUTE_DEFAULT = 500
+XML_DTD_ATTRIBUTE_REDEFINED = 501
+XML_DTD_ATTRIBUTE_VALUE = 502
+XML_DTD_CONTENT_ERROR = 503
+XML_DTD_CONTENT_MODEL = 504
+XML_DTD_CONTENT_NOT_DETERMINIST = 505
+XML_DTD_DIFFERENT_PREFIX = 506
+XML_DTD_ELEM_DEFAULT_NAMESPACE = 507
+XML_DTD_ELEM_NAMESPACE = 508
+XML_DTD_ELEM_REDEFINED = 509
+XML_DTD_EMPTY_NOTATION = 510
+XML_DTD_ENTITY_TYPE = 511
+XML_DTD_ID_FIXED = 512
+XML_DTD_ID_REDEFINED = 513
+XML_DTD_ID_SUBSET = 514
+XML_DTD_INVALID_CHILD = 515
+XML_DTD_INVALID_DEFAULT = 516
+XML_DTD_LOAD_ERROR = 517
+XML_DTD_MISSING_ATTRIBUTE = 518
+XML_DTD_MIXED_CORRUPT = 519
+XML_DTD_MULTIPLE_ID = 520
+XML_DTD_NO_DOC = 521
+XML_DTD_NO_DTD = 522
+XML_DTD_NO_ELEM_NAME = 523
+XML_DTD_NO_PREFIX = 524
+XML_DTD_NO_ROOT = 525
+XML_DTD_NOTATION_REDEFINED = 526
+XML_DTD_NOTATION_VALUE = 527
+XML_DTD_NOT_EMPTY = 528
+XML_DTD_NOT_PCDATA = 529
+XML_DTD_NOT_STANDALONE = 530
+XML_DTD_ROOT_NAME = 531
+XML_DTD_STANDALONE_WHITE_SPACE = 532
+XML_DTD_UNKNOWN_ATTRIBUTE = 533
+XML_DTD_UNKNOWN_ELEM = 534
+XML_DTD_UNKNOWN_ENTITY = 535
+XML_DTD_UNKNOWN_ID = 536
+XML_DTD_UNKNOWN_NOTATION = 537
+XML_DTD_STANDALONE_DEFAULTED = 538
+XML_DTD_XMLID_VALUE = 539
+XML_DTD_XMLID_TYPE = 540
+XML_DTD_DUP_TOKEN = 541
+XML_HTML_STRUCURE_ERROR = 800
+XML_HTML_UNKNOWN_TAG = 801
+XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000
+XML_RNGP_ATTR_CONFLICT = 1001
+XML_RNGP_ATTRIBUTE_CHILDREN = 1002
+XML_RNGP_ATTRIBUTE_CONTENT = 1003
+XML_RNGP_ATTRIBUTE_EMPTY = 1004
+XML_RNGP_ATTRIBUTE_NOOP = 1005
+XML_RNGP_CHOICE_CONTENT = 1006
+XML_RNGP_CHOICE_EMPTY = 1007
+XML_RNGP_CREATE_FAILURE = 1008
+XML_RNGP_DATA_CONTENT = 1009
+XML_RNGP_DEF_CHOICE_AND_INTERLEAVE = 1010
+XML_RNGP_DEFINE_CREATE_FAILED = 1011
+XML_RNGP_DEFINE_EMPTY = 1012
+XML_RNGP_DEFINE_MISSING = 1013
+XML_RNGP_DEFINE_NAME_MISSING = 1014
+XML_RNGP_ELEM_CONTENT_EMPTY = 1015
+XML_RNGP_ELEM_CONTENT_ERROR = 1016
+XML_RNGP_ELEMENT_EMPTY = 1017
+XML_RNGP_ELEMENT_CONTENT = 1018
+XML_RNGP_ELEMENT_NAME = 1019
+XML_RNGP_ELEMENT_NO_CONTENT = 1020
+XML_RNGP_ELEM_TEXT_CONFLICT = 1021
+XML_RNGP_EMPTY = 1022
+XML_RNGP_EMPTY_CONSTRUCT = 1023
+XML_RNGP_EMPTY_CONTENT = 1024
+XML_RNGP_EMPTY_NOT_EMPTY = 1025
+XML_RNGP_ERROR_TYPE_LIB = 1026
+XML_RNGP_EXCEPT_EMPTY = 1027
+XML_RNGP_EXCEPT_MISSING = 1028
+XML_RNGP_EXCEPT_MULTIPLE = 1029
+XML_RNGP_EXCEPT_NO_CONTENT = 1030
+XML_RNGP_EXTERNALREF_EMTPY = 1031
+XML_RNGP_EXTERNAL_REF_FAILURE = 1032
+XML_RNGP_EXTERNALREF_RECURSE = 1033
+XML_RNGP_FORBIDDEN_ATTRIBUTE = 1034
+XML_RNGP_FOREIGN_ELEMENT = 1035
+XML_RNGP_GRAMMAR_CONTENT = 1036
+XML_RNGP_GRAMMAR_EMPTY = 1037
+XML_RNGP_GRAMMAR_MISSING = 1038
+XML_RNGP_GRAMMAR_NO_START = 1039
+XML_RNGP_GROUP_ATTR_CONFLICT = 1040
+XML_RNGP_HREF_ERROR = 1041
+XML_RNGP_INCLUDE_EMPTY = 1042
+XML_RNGP_INCLUDE_FAILURE = 1043
+XML_RNGP_INCLUDE_RECURSE = 1044
+XML_RNGP_INTERLEAVE_ADD = 1045
+XML_RNGP_INTERLEAVE_CREATE_FAILED = 1046
+XML_RNGP_INTERLEAVE_EMPTY = 1047
+XML_RNGP_INTERLEAVE_NO_CONTENT = 1048
+XML_RNGP_INVALID_DEFINE_NAME = 1049
+XML_RNGP_INVALID_URI = 1050
+XML_RNGP_INVALID_VALUE = 1051
+XML_RNGP_MISSING_HREF = 1052
+XML_RNGP_NAME_MISSING = 1053
+XML_RNGP_NEED_COMBINE = 1054
+XML_RNGP_NOTALLOWED_NOT_EMPTY = 1055
+XML_RNGP_NSNAME_ATTR_ANCESTOR = 1056
+XML_RNGP_NSNAME_NO_NS = 1057
+XML_RNGP_PARAM_FORBIDDEN = 1058
+XML_RNGP_PARAM_NAME_MISSING = 1059
+XML_RNGP_PARENTREF_CREATE_FAILED = 1060
+XML_RNGP_PARENTREF_NAME_INVALID = 1061
+XML_RNGP_PARENTREF_NO_NAME = 1062
+XML_RNGP_PARENTREF_NO_PARENT = 1063
+XML_RNGP_PARENTREF_NOT_EMPTY = 1064
+XML_RNGP_PARSE_ERROR = 1065
+XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME = 1066
+XML_RNGP_PAT_ATTR_ATTR = 1067
+XML_RNGP_PAT_ATTR_ELEM = 1068
+XML_RNGP_PAT_DATA_EXCEPT_ATTR = 1069
+XML_RNGP_PAT_DATA_EXCEPT_ELEM = 1070
+XML_RNGP_PAT_DATA_EXCEPT_EMPTY = 1071
+XML_RNGP_PAT_DATA_EXCEPT_GROUP = 1072
+XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE = 1073
+XML_RNGP_PAT_DATA_EXCEPT_LIST = 1074
+XML_RNGP_PAT_DATA_EXCEPT_ONEMORE = 1075
+XML_RNGP_PAT_DATA_EXCEPT_REF = 1076
+XML_RNGP_PAT_DATA_EXCEPT_TEXT = 1077
+XML_RNGP_PAT_LIST_ATTR = 1078
+XML_RNGP_PAT_LIST_ELEM = 1079
+XML_RNGP_PAT_LIST_INTERLEAVE = 1080
+XML_RNGP_PAT_LIST_LIST = 1081
+XML_RNGP_PAT_LIST_REF = 1082
+XML_RNGP_PAT_LIST_TEXT = 1083
+XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME = 1084
+XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME = 1085
+XML_RNGP_PAT_ONEMORE_GROUP_ATTR = 1086
+XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR = 1087
+XML_RNGP_PAT_START_ATTR = 1088
+XML_RNGP_PAT_START_DATA = 1089
+XML_RNGP_PAT_START_EMPTY = 1090
+XML_RNGP_PAT_START_GROUP = 1091
+XML_RNGP_PAT_START_INTERLEAVE = 1092
+XML_RNGP_PAT_START_LIST = 1093
+XML_RNGP_PAT_START_ONEMORE = 1094
+XML_RNGP_PAT_START_TEXT = 1095
+XML_RNGP_PAT_START_VALUE = 1096
+XML_RNGP_PREFIX_UNDEFINED = 1097
+XML_RNGP_REF_CREATE_FAILED = 1098
+XML_RNGP_REF_CYCLE = 1099
+XML_RNGP_REF_NAME_INVALID = 1100
+XML_RNGP_REF_NO_DEF = 1101
+XML_RNGP_REF_NO_NAME = 1102
+XML_RNGP_REF_NOT_EMPTY = 1103
+XML_RNGP_START_CHOICE_AND_INTERLEAVE = 1104
+XML_RNGP_START_CONTENT = 1105
+XML_RNGP_START_EMPTY = 1106
+XML_RNGP_START_MISSING = 1107
+XML_RNGP_TEXT_EXPECTED = 1108
+XML_RNGP_TEXT_HAS_CHILD = 1109
+XML_RNGP_TYPE_MISSING = 1110
+XML_RNGP_TYPE_NOT_FOUND = 1111
+XML_RNGP_TYPE_VALUE = 1112
+XML_RNGP_UNKNOWN_ATTRIBUTE = 1113
+XML_RNGP_UNKNOWN_COMBINE = 1114
+XML_RNGP_UNKNOWN_CONSTRUCT = 1115
+XML_RNGP_UNKNOWN_TYPE_LIB = 1116
+XML_RNGP_URI_FRAGMENT = 1117
+XML_RNGP_URI_NOT_ABSOLUTE = 1118
+XML_RNGP_VALUE_EMPTY = 1119
+XML_RNGP_VALUE_NO_CONTENT = 1120
+XML_RNGP_XMLNS_NAME = 1121
+XML_RNGP_XML_NS = 1122
+XML_XPATH_EXPRESSION_OK = 1200
+XML_XPATH_NUMBER_ERROR = 1201
+XML_XPATH_UNFINISHED_LITERAL_ERROR = 1202
+XML_XPATH_START_LITERAL_ERROR = 1203
+XML_XPATH_VARIABLE_REF_ERROR = 1204
+XML_XPATH_UNDEF_VARIABLE_ERROR = 1205
+XML_XPATH_INVALID_PREDICATE_ERROR = 1206
+XML_XPATH_EXPR_ERROR = 1207
+XML_XPATH_UNCLOSED_ERROR = 1208
+XML_XPATH_UNKNOWN_FUNC_ERROR = 1209
+XML_XPATH_INVALID_OPERAND = 1210
+XML_XPATH_INVALID_TYPE = 1211
+XML_XPATH_INVALID_ARITY = 1212
+XML_XPATH_INVALID_CTXT_SIZE = 1213
+XML_XPATH_INVALID_CTXT_POSITION = 1214
+XML_XPATH_MEMORY_ERROR = 1215
+XML_XPTR_SYNTAX_ERROR = 1216
+XML_XPTR_RESOURCE_ERROR = 1217
+XML_XPTR_SUB_RESOURCE_ERROR = 1218
+XML_XPATH_UNDEF_PREFIX_ERROR = 1219
+XML_XPATH_ENCODING_ERROR = 1220
+XML_XPATH_INVALID_CHAR_ERROR = 1221
+XML_TREE_INVALID_HEX = 1300
+XML_TREE_INVALID_DEC = 1301
+XML_TREE_UNTERMINATED_ENTITY = 1302
+XML_TREE_NOT_UTF8 = 1303
+XML_SAVE_NOT_UTF8 = 1400
+XML_SAVE_CHAR_INVALID = 1401
+XML_SAVE_NO_DOCTYPE = 1402
+XML_SAVE_UNKNOWN_ENCODING = 1403
+XML_REGEXP_COMPILE_ERROR = 1450
+XML_IO_UNKNOWN = 1500
+XML_IO_EACCES = 1501
+XML_IO_EAGAIN = 1502
+XML_IO_EBADF = 1503
+XML_IO_EBADMSG = 1504
+XML_IO_EBUSY = 1505
+XML_IO_ECANCELED = 1506
+XML_IO_ECHILD = 1507
+XML_IO_EDEADLK = 1508
+XML_IO_EDOM = 1509
+XML_IO_EEXIST = 1510
+XML_IO_EFAULT = 1511
+XML_IO_EFBIG = 1512
+XML_IO_EINPROGRESS = 1513
+XML_IO_EINTR = 1514
+XML_IO_EINVAL = 1515
+XML_IO_EIO = 1516
+XML_IO_EISDIR = 1517
+XML_IO_EMFILE = 1518
+XML_IO_EMLINK = 1519
+XML_IO_EMSGSIZE = 1520
+XML_IO_ENAMETOOLONG = 1521
+XML_IO_ENFILE = 1522
+XML_IO_ENODEV = 1523
+XML_IO_ENOENT = 1524
+XML_IO_ENOEXEC = 1525
+XML_IO_ENOLCK = 1526
+XML_IO_ENOMEM = 1527
+XML_IO_ENOSPC = 1528
+XML_IO_ENOSYS = 1529
+XML_IO_ENOTDIR = 1530
+XML_IO_ENOTEMPTY = 1531
+XML_IO_ENOTSUP = 1532
+XML_IO_ENOTTY = 1533
+XML_IO_ENXIO = 1534
+XML_IO_EPERM = 1535
+XML_IO_EPIPE = 1536
+XML_IO_ERANGE = 1537
+XML_IO_EROFS = 1538
+XML_IO_ESPIPE = 1539
+XML_IO_ESRCH = 1540
+XML_IO_ETIMEDOUT = 1541
+XML_IO_EXDEV = 1542
+XML_IO_NETWORK_ATTEMPT = 1543
+XML_IO_ENCODER = 1544
+XML_IO_FLUSH = 1545
+XML_IO_WRITE = 1546
+XML_IO_NO_INPUT = 1547
+XML_IO_BUFFER_FULL = 1548
+XML_IO_LOAD_ERROR = 1549
+XML_IO_ENOTSOCK = 1550
+XML_IO_EISCONN = 1551
+XML_IO_ECONNREFUSED = 1552
+XML_IO_ENETUNREACH = 1553
+XML_IO_EADDRINUSE = 1554
+XML_IO_EALREADY = 1555
+XML_IO_EAFNOSUPPORT = 1556
+XML_XINCLUDE_RECURSION = 1600
+XML_XINCLUDE_PARSE_VALUE = 1601
+XML_XINCLUDE_ENTITY_DEF_MISMATCH = 1602
+XML_XINCLUDE_NO_HREF = 1603
+XML_XINCLUDE_NO_FALLBACK = 1604
+XML_XINCLUDE_HREF_URI = 1605
+XML_XINCLUDE_TEXT_FRAGMENT = 1606
+XML_XINCLUDE_TEXT_DOCUMENT = 1607
+XML_XINCLUDE_INVALID_CHAR = 1608
+XML_XINCLUDE_BUILD_FAILED = 1609
+XML_XINCLUDE_UNKNOWN_ENCODING = 1610
+XML_XINCLUDE_MULTIPLE_ROOT = 1611
+XML_XINCLUDE_XPTR_FAILED = 1612
+XML_XINCLUDE_XPTR_RESULT = 1613
+XML_XINCLUDE_INCLUDE_IN_INCLUDE = 1614
+XML_XINCLUDE_FALLBACKS_IN_INCLUDE = 1615
+XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE = 1616
+XML_XINCLUDE_DEPRECATED_NS = 1617
+XML_XINCLUDE_FRAGMENT_ID = 1618
+XML_CATALOG_MISSING_ATTR = 1650
+XML_CATALOG_ENTRY_BROKEN = 1651
+XML_CATALOG_PREFER_VALUE = 1652
+XML_CATALOG_NOT_CATALOG = 1653
+XML_CATALOG_RECURSION = 1654
+XML_SCHEMAP_PREFIX_UNDEFINED = 1700
+XML_SCHEMAP_ATTRFORMDEFAULT_VALUE = 1701
+XML_SCHEMAP_ATTRGRP_NONAME_NOREF = 1702
+XML_SCHEMAP_ATTR_NONAME_NOREF = 1703
+XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF = 1704
+XML_SCHEMAP_ELEMFORMDEFAULT_VALUE = 1705
+XML_SCHEMAP_ELEM_NONAME_NOREF = 1706
+XML_SCHEMAP_EXTENSION_NO_BASE = 1707
+XML_SCHEMAP_FACET_NO_VALUE = 1708
+XML_SCHEMAP_FAILED_BUILD_IMPORT = 1709
+XML_SCHEMAP_GROUP_NONAME_NOREF = 1710
+XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI = 1711
+XML_SCHEMAP_IMPORT_REDEFINE_NSNAME = 1712
+XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI = 1713
+XML_SCHEMAP_INVALID_BOOLEAN = 1714
+XML_SCHEMAP_INVALID_ENUM = 1715
+XML_SCHEMAP_INVALID_FACET = 1716
+XML_SCHEMAP_INVALID_FACET_VALUE = 1717
+XML_SCHEMAP_INVALID_MAXOCCURS = 1718
+XML_SCHEMAP_INVALID_MINOCCURS = 1719
+XML_SCHEMAP_INVALID_REF_AND_SUBTYPE = 1720
+XML_SCHEMAP_INVALID_WHITE_SPACE = 1721
+XML_SCHEMAP_NOATTR_NOREF = 1722
+XML_SCHEMAP_NOTATION_NO_NAME = 1723
+XML_SCHEMAP_NOTYPE_NOREF = 1724
+XML_SCHEMAP_REF_AND_SUBTYPE = 1725
+XML_SCHEMAP_RESTRICTION_NONAME_NOREF = 1726
+XML_SCHEMAP_SIMPLETYPE_NONAME = 1727
+XML_SCHEMAP_TYPE_AND_SUBTYPE = 1728
+XML_SCHEMAP_UNKNOWN_ALL_CHILD = 1729
+XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD = 1730
+XML_SCHEMAP_UNKNOWN_ATTR_CHILD = 1731
+XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD = 1732
+XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP = 1733
+XML_SCHEMAP_UNKNOWN_BASE_TYPE = 1734
+XML_SCHEMAP_UNKNOWN_CHOICE_CHILD = 1735
+XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD = 1736
+XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD = 1737
+XML_SCHEMAP_UNKNOWN_ELEM_CHILD = 1738
+XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD = 1739
+XML_SCHEMAP_UNKNOWN_FACET_CHILD = 1740
+XML_SCHEMAP_UNKNOWN_FACET_TYPE = 1741
+XML_SCHEMAP_UNKNOWN_GROUP_CHILD = 1742
+XML_SCHEMAP_UNKNOWN_IMPORT_CHILD = 1743
+XML_SCHEMAP_UNKNOWN_LIST_CHILD = 1744
+XML_SCHEMAP_UNKNOWN_NOTATION_CHILD = 1745
+XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD = 1746
+XML_SCHEMAP_UNKNOWN_REF = 1747
+XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD = 1748
+XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD = 1749
+XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD = 1750
+XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD = 1751
+XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD = 1752
+XML_SCHEMAP_UNKNOWN_TYPE = 1753
+XML_SCHEMAP_UNKNOWN_UNION_CHILD = 1754
+XML_SCHEMAP_ELEM_DEFAULT_FIXED = 1755
+XML_SCHEMAP_REGEXP_INVALID = 1756
+XML_SCHEMAP_FAILED_LOAD = 1757
+XML_SCHEMAP_NOTHING_TO_PARSE = 1758
+XML_SCHEMAP_NOROOT = 1759
+XML_SCHEMAP_REDEFINED_GROUP = 1760
+XML_SCHEMAP_REDEFINED_TYPE = 1761
+XML_SCHEMAP_REDEFINED_ELEMENT = 1762
+XML_SCHEMAP_REDEFINED_ATTRGROUP = 1763
+XML_SCHEMAP_REDEFINED_ATTR = 1764
+XML_SCHEMAP_REDEFINED_NOTATION = 1765
+XML_SCHEMAP_FAILED_PARSE = 1766
+XML_SCHEMAP_UNKNOWN_PREFIX = 1767
+XML_SCHEMAP_DEF_AND_PREFIX = 1768
+XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD = 1769
+XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI = 1770
+XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI = 1771
+XML_SCHEMAP_NOT_SCHEMA = 1772
+XML_SCHEMAP_UNKNOWN_MEMBER_TYPE = 1773
+XML_SCHEMAP_INVALID_ATTR_USE = 1774
+XML_SCHEMAP_RECURSIVE = 1775
+XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE = 1776
+XML_SCHEMAP_INVALID_ATTR_COMBINATION = 1777
+XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION = 1778
+XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD = 1779
+XML_SCHEMAP_INVALID_ATTR_NAME = 1780
+XML_SCHEMAP_REF_AND_CONTENT = 1781
+XML_SCHEMAP_CT_PROPS_CORRECT_1 = 1782
+XML_SCHEMAP_CT_PROPS_CORRECT_2 = 1783
+XML_SCHEMAP_CT_PROPS_CORRECT_3 = 1784
+XML_SCHEMAP_CT_PROPS_CORRECT_4 = 1785
+XML_SCHEMAP_CT_PROPS_CORRECT_5 = 1786
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1 = 1787
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1 = 1788
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2 = 1789
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2 = 1790
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3 = 1791
+XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER = 1792
+XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE = 1793
+XML_SCHEMAP_UNION_NOT_EXPRESSIBLE = 1794
+XML_SCHEMAP_SRC_IMPORT_3_1 = 1795
+XML_SCHEMAP_SRC_IMPORT_3_2 = 1796
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1 = 1797
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2 = 1798
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3 = 1799
+XML_SCHEMAP_COS_CT_EXTENDS_1_3 = 1800
+XML_SCHEMAV_NOROOT = 1801
+XML_SCHEMAV_UNDECLAREDELEM = 1802
+XML_SCHEMAV_NOTTOPLEVEL = 1803
+XML_SCHEMAV_MISSING = 1804
+XML_SCHEMAV_WRONGELEM = 1805
+XML_SCHEMAV_NOTYPE = 1806
+XML_SCHEMAV_NOROLLBACK = 1807
+XML_SCHEMAV_ISABSTRACT = 1808
+XML_SCHEMAV_NOTEMPTY = 1809
+XML_SCHEMAV_ELEMCONT = 1810
+XML_SCHEMAV_HAVEDEFAULT = 1811
+XML_SCHEMAV_NOTNILLABLE = 1812
+XML_SCHEMAV_EXTRACONTENT = 1813
+XML_SCHEMAV_INVALIDATTR = 1814
+XML_SCHEMAV_INVALIDELEM = 1815
+XML_SCHEMAV_NOTDETERMINIST = 1816
+XML_SCHEMAV_CONSTRUCT = 1817
+XML_SCHEMAV_INTERNAL = 1818
+XML_SCHEMAV_NOTSIMPLE = 1819
+XML_SCHEMAV_ATTRUNKNOWN = 1820
+XML_SCHEMAV_ATTRINVALID = 1821
+XML_SCHEMAV_VALUE = 1822
+XML_SCHEMAV_FACET = 1823
+XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1 = 1824
+XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2 = 1825
+XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3 = 1826
+XML_SCHEMAV_CVC_TYPE_3_1_1 = 1827
+XML_SCHEMAV_CVC_TYPE_3_1_2 = 1828
+XML_SCHEMAV_CVC_FACET_VALID = 1829
+XML_SCHEMAV_CVC_LENGTH_VALID = 1830
+XML_SCHEMAV_CVC_MINLENGTH_VALID = 1831
+XML_SCHEMAV_CVC_MAXLENGTH_VALID = 1832
+XML_SCHEMAV_CVC_MININCLUSIVE_VALID = 1833
+XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID = 1834
+XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID = 1835
+XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID = 1836
+XML_SCHEMAV_CVC_TOTALDIGITS_VALID = 1837
+XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID = 1838
+XML_SCHEMAV_CVC_PATTERN_VALID = 1839
+XML_SCHEMAV_CVC_ENUMERATION_VALID = 1840
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1 = 1841
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2 = 1842
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3 = 1843
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4 = 1844
+XML_SCHEMAV_CVC_ELT_1 = 1845
+XML_SCHEMAV_CVC_ELT_2 = 1846
+XML_SCHEMAV_CVC_ELT_3_1 = 1847
+XML_SCHEMAV_CVC_ELT_3_2_1 = 1848
+XML_SCHEMAV_CVC_ELT_3_2_2 = 1849
+XML_SCHEMAV_CVC_ELT_4_1 = 1850
+XML_SCHEMAV_CVC_ELT_4_2 = 1851
+XML_SCHEMAV_CVC_ELT_4_3 = 1852
+XML_SCHEMAV_CVC_ELT_5_1_1 = 1853
+XML_SCHEMAV_CVC_ELT_5_1_2 = 1854
+XML_SCHEMAV_CVC_ELT_5_2_1 = 1855
+XML_SCHEMAV_CVC_ELT_5_2_2_1 = 1856
+XML_SCHEMAV_CVC_ELT_5_2_2_2_1 = 1857
+XML_SCHEMAV_CVC_ELT_5_2_2_2_2 = 1858
+XML_SCHEMAV_CVC_ELT_6 = 1859
+XML_SCHEMAV_CVC_ELT_7 = 1860
+XML_SCHEMAV_CVC_ATTRIBUTE_1 = 1861
+XML_SCHEMAV_CVC_ATTRIBUTE_2 = 1862
+XML_SCHEMAV_CVC_ATTRIBUTE_3 = 1863
+XML_SCHEMAV_CVC_ATTRIBUTE_4 = 1864
+XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1 = 1865
+XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1 = 1866
+XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2 = 1867
+XML_SCHEMAV_CVC_COMPLEX_TYPE_4 = 1868
+XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1 = 1869
+XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2 = 1870
+XML_SCHEMAV_ELEMENT_CONTENT = 1871
+XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING = 1872
+XML_SCHEMAV_CVC_COMPLEX_TYPE_1 = 1873
+XML_SCHEMAV_CVC_AU = 1874
+XML_SCHEMAV_CVC_TYPE_1 = 1875
+XML_SCHEMAV_CVC_TYPE_2 = 1876
+XML_SCHEMAV_CVC_IDC = 1877
+XML_SCHEMAV_CVC_WILDCARD = 1878
+XML_SCHEMAV_MISC = 1879
+XML_XPTR_UNKNOWN_SCHEME = 1900
+XML_XPTR_CHILDSEQ_START = 1901
+XML_XPTR_EVAL_FAILED = 1902
+XML_XPTR_EXTRA_OBJECTS = 1903
+XML_C14N_CREATE_CTXT = 1950
+XML_C14N_REQUIRES_UTF8 = 1951
+XML_C14N_CREATE_STACK = 1952
+XML_C14N_INVALID_NODE = 1953
+XML_C14N_UNKNOW_NODE = 1954
+XML_C14N_RELATIVE_NAMESPACE = 1955
+XML_FTP_PASV_ANSWER = 2000
+XML_FTP_EPSV_ANSWER = 2001
+XML_FTP_ACCNT = 2002
+XML_FTP_URL_SYNTAX = 2003
+XML_HTTP_URL_SYNTAX = 2020
+XML_HTTP_USE_IP = 2021
+XML_HTTP_UNKNOWN_HOST = 2022
+XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000
+XML_SCHEMAP_SRC_SIMPLE_TYPE_2 = 3001
+XML_SCHEMAP_SRC_SIMPLE_TYPE_3 = 3002
+XML_SCHEMAP_SRC_SIMPLE_TYPE_4 = 3003
+XML_SCHEMAP_SRC_RESOLVE = 3004
+XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE = 3005
+XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE = 3006
+XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES = 3007
+XML_SCHEMAP_ST_PROPS_CORRECT_1 = 3008
+XML_SCHEMAP_ST_PROPS_CORRECT_2 = 3009
+XML_SCHEMAP_ST_PROPS_CORRECT_3 = 3010
+XML_SCHEMAP_COS_ST_RESTRICTS_1_1 = 3011
+XML_SCHEMAP_COS_ST_RESTRICTS_1_2 = 3012
+XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1 = 3013
+XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2 = 3014
+XML_SCHEMAP_COS_ST_RESTRICTS_2_1 = 3015
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1 = 3016
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2 = 3017
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1 = 3018
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2 = 3019
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3 = 3020
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4 = 3021
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5 = 3022
+XML_SCHEMAP_COS_ST_RESTRICTS_3_1 = 3023
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1 = 3024
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2 = 3025
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2 = 3026
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1 = 3027
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3 = 3028
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4 = 3029
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5 = 3030
+XML_SCHEMAP_COS_ST_DERIVED_OK_2_1 = 3031
+XML_SCHEMAP_COS_ST_DERIVED_OK_2_2 = 3032
+XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED = 3033
+XML_SCHEMAP_S4S_ELEM_MISSING = 3034
+XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED = 3035
+XML_SCHEMAP_S4S_ATTR_MISSING = 3036
+XML_SCHEMAP_S4S_ATTR_INVALID_VALUE = 3037
+XML_SCHEMAP_SRC_ELEMENT_1 = 3038
+XML_SCHEMAP_SRC_ELEMENT_2_1 = 3039
+XML_SCHEMAP_SRC_ELEMENT_2_2 = 3040
+XML_SCHEMAP_SRC_ELEMENT_3 = 3041
+XML_SCHEMAP_P_PROPS_CORRECT_1 = 3042
+XML_SCHEMAP_P_PROPS_CORRECT_2_1 = 3043
+XML_SCHEMAP_P_PROPS_CORRECT_2_2 = 3044
+XML_SCHEMAP_E_PROPS_CORRECT_2 = 3045
+XML_SCHEMAP_E_PROPS_CORRECT_3 = 3046
+XML_SCHEMAP_E_PROPS_CORRECT_4 = 3047
+XML_SCHEMAP_E_PROPS_CORRECT_5 = 3048
+XML_SCHEMAP_E_PROPS_CORRECT_6 = 3049
+XML_SCHEMAP_SRC_INCLUDE = 3050
+XML_SCHEMAP_SRC_ATTRIBUTE_1 = 3051
+XML_SCHEMAP_SRC_ATTRIBUTE_2 = 3052
+XML_SCHEMAP_SRC_ATTRIBUTE_3_1 = 3053
+XML_SCHEMAP_SRC_ATTRIBUTE_3_2 = 3054
+XML_SCHEMAP_SRC_ATTRIBUTE_4 = 3055
+XML_SCHEMAP_NO_XMLNS = 3056
+XML_SCHEMAP_NO_XSI = 3057
+XML_SCHEMAP_COS_VALID_DEFAULT_1 = 3058
+XML_SCHEMAP_COS_VALID_DEFAULT_2_1 = 3059
+XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1 = 3060
+XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2 = 3061
+XML_SCHEMAP_CVC_SIMPLE_TYPE = 3062
+XML_SCHEMAP_COS_CT_EXTENDS_1_1 = 3063
+XML_SCHEMAP_SRC_IMPORT_1_1 = 3064
+XML_SCHEMAP_SRC_IMPORT_1_2 = 3065
+XML_SCHEMAP_SRC_IMPORT_2 = 3066
+XML_SCHEMAP_SRC_IMPORT_2_1 = 3067
+XML_SCHEMAP_SRC_IMPORT_2_2 = 3068
+XML_SCHEMAP_INTERNAL = 3069
+XML_SCHEMAP_NOT_DETERMINISTIC = 3070
+XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1 = 3071
+XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2 = 3072
+XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3 = 3073
+XML_SCHEMAP_MG_PROPS_CORRECT_1 = 3074
+XML_SCHEMAP_MG_PROPS_CORRECT_2 = 3075
+XML_SCHEMAP_SRC_CT_1 = 3076
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3 = 3077
+XML_SCHEMAP_AU_PROPS_CORRECT_2 = 3078
+XML_SCHEMAP_A_PROPS_CORRECT_2 = 3079
+XML_SCHEMAP_C_PROPS_CORRECT = 3080
+XML_SCHEMAP_SRC_REDEFINE = 3081
+XML_SCHEMAP_SRC_IMPORT = 3082
+XML_SCHEMAP_WARN_SKIP_SCHEMA = 3083
+XML_SCHEMAP_WARN_UNLOCATED_SCHEMA = 3084
+XML_SCHEMAP_WARN_ATTR_REDECL_PROH = 3085
+XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH = 3086
+XML_SCHEMAP_AG_PROPS_CORRECT = 3087
+XML_SCHEMAP_COS_CT_EXTENDS_1_2 = 3088
+XML_SCHEMAP_AU_PROPS_CORRECT = 3089
+XML_SCHEMAP_A_PROPS_CORRECT_3 = 3090
+XML_SCHEMAP_COS_ALL_LIMITED = 3091
+XML_SCHEMATRONV_ASSERT = 4000
+XML_SCHEMATRONV_REPORT = 4001
+XML_MODULE_OPEN = 4900
+XML_MODULE_CLOSE = 4901
+XML_CHECK_FOUND_ELEMENT = 5000
+XML_CHECK_FOUND_ATTRIBUTE = 5001
+XML_CHECK_FOUND_TEXT = 5002
+XML_CHECK_FOUND_CDATA = 5003
+XML_CHECK_FOUND_ENTITYREF = 5004
+XML_CHECK_FOUND_ENTITY = 5005
+XML_CHECK_FOUND_PI = 5006
+XML_CHECK_FOUND_COMMENT = 5007
+XML_CHECK_FOUND_DOCTYPE = 5008
+XML_CHECK_FOUND_FRAGMENT = 5009
+XML_CHECK_FOUND_NOTATION = 5010
+XML_CHECK_UNKNOWN_NODE = 5011
+XML_CHECK_ENTITY_TYPE = 5012
+XML_CHECK_NO_PARENT = 5013
+XML_CHECK_NO_DOC = 5014
+XML_CHECK_NO_NAME = 5015
+XML_CHECK_NO_ELEM = 5016
+XML_CHECK_WRONG_DOC = 5017
+XML_CHECK_NO_PREV = 5018
+XML_CHECK_WRONG_PREV = 5019
+XML_CHECK_NO_NEXT = 5020
+XML_CHECK_WRONG_NEXT = 5021
+XML_CHECK_NOT_DTD = 5022
+XML_CHECK_NOT_ATTR = 5023
+XML_CHECK_NOT_ATTR_DECL = 5024
+XML_CHECK_NOT_ELEM_DECL = 5025
+XML_CHECK_NOT_ENTITY_DECL = 5026
+XML_CHECK_NOT_NS_DECL = 5027
+XML_CHECK_NO_HREF = 5028
+XML_CHECK_WRONG_PARENT = 5029
+XML_CHECK_NS_SCOPE = 5030
+XML_CHECK_NS_ANCESTOR = 5031
+XML_CHECK_NOT_UTF8 = 5032
+XML_CHECK_NO_DICT = 5033
+XML_CHECK_NOT_NCNAME = 5034
+XML_CHECK_OUTSIDE_DICT = 5035
+XML_CHECK_WRONG_NAME = 5036
+XML_CHECK_NAME_NOT_NULL = 5037
+XML_I18N_NO_NAME = 6000
+XML_I18N_NO_HANDLER = 6001
+XML_I18N_EXCESS_HANDLER = 6002
+XML_I18N_CONV_FAILED = 6003
+XML_I18N_NO_OUTPUT = 6004
+XML_BUF_OVERFLOW = 7000
+
+# xmlExpNodeType
+XML_EXP_EMPTY = 0
+XML_EXP_FORBID = 1
+XML_EXP_ATOM = 2
+XML_EXP_SEQ = 3
+XML_EXP_OR = 4
+XML_EXP_COUNT = 5
+
+# xmlElementContentType
+XML_ELEMENT_CONTENT_PCDATA = 1
+XML_ELEMENT_CONTENT_ELEMENT = 2
+XML_ELEMENT_CONTENT_SEQ = 3
+XML_ELEMENT_CONTENT_OR = 4
+
+# xmlParserProperties
+XML_PARSER_LOADDTD = 1
+XML_PARSER_DEFAULTATTRS = 2
+XML_PARSER_VALIDATE = 3
+XML_PARSER_SUBST_ENTITIES = 4
+
+# xmlReaderTypes
+XML_READER_TYPE_NONE = 0
+XML_READER_TYPE_ELEMENT = 1
+XML_READER_TYPE_ATTRIBUTE = 2
+XML_READER_TYPE_TEXT = 3
+XML_READER_TYPE_CDATA = 4
+XML_READER_TYPE_ENTITY_REFERENCE = 5
+XML_READER_TYPE_ENTITY = 6
+XML_READER_TYPE_PROCESSING_INSTRUCTION = 7
+XML_READER_TYPE_COMMENT = 8
+XML_READER_TYPE_DOCUMENT = 9
+XML_READER_TYPE_DOCUMENT_TYPE = 10
+XML_READER_TYPE_DOCUMENT_FRAGMENT = 11
+XML_READER_TYPE_NOTATION = 12
+XML_READER_TYPE_WHITESPACE = 13
+XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14
+XML_READER_TYPE_END_ELEMENT = 15
+XML_READER_TYPE_END_ENTITY = 16
+XML_READER_TYPE_XML_DECLARATION = 17
+
+# xmlCatalogPrefer
+XML_CATA_PREFER_NONE = 0
+XML_CATA_PREFER_PUBLIC = 1
+XML_CATA_PREFER_SYSTEM = 2
+
+# xmlElementType
+XML_ELEMENT_NODE = 1
+XML_ATTRIBUTE_NODE = 2
+XML_TEXT_NODE = 3
+XML_CDATA_SECTION_NODE = 4
+XML_ENTITY_REF_NODE = 5
+XML_ENTITY_NODE = 6
+XML_PI_NODE = 7
+XML_COMMENT_NODE = 8
+XML_DOCUMENT_NODE = 9
+XML_DOCUMENT_TYPE_NODE = 10
+XML_DOCUMENT_FRAG_NODE = 11
+XML_NOTATION_NODE = 12
+XML_HTML_DOCUMENT_NODE = 13
+XML_DTD_NODE = 14
+XML_ELEMENT_DECL = 15
+XML_ATTRIBUTE_DECL = 16
+XML_ENTITY_DECL = 17
+XML_NAMESPACE_DECL = 18
+XML_XINCLUDE_START = 19
+XML_XINCLUDE_END = 20
+XML_DOCB_DOCUMENT_NODE = 21
+
+# xlinkActuate
+XLINK_ACTUATE_NONE = 0
+XLINK_ACTUATE_AUTO = 1
+XLINK_ACTUATE_ONREQUEST = 2
+
+# xmlFeature
+XML_WITH_THREAD = 1
+XML_WITH_TREE = 2
+XML_WITH_OUTPUT = 3
+XML_WITH_PUSH = 4
+XML_WITH_READER = 5
+XML_WITH_PATTERN = 6
+XML_WITH_WRITER = 7
+XML_WITH_SAX1 = 8
+XML_WITH_FTP = 9
+XML_WITH_HTTP = 10
+XML_WITH_VALID = 11
+XML_WITH_HTML = 12
+XML_WITH_LEGACY = 13
+XML_WITH_C14N = 14
+XML_WITH_CATALOG = 15
+XML_WITH_XPATH = 16
+XML_WITH_XPTR = 17
+XML_WITH_XINCLUDE = 18
+XML_WITH_ICONV = 19
+XML_WITH_ISO8859X = 20
+XML_WITH_UNICODE = 21
+XML_WITH_REGEXP = 22
+XML_WITH_AUTOMATA = 23
+XML_WITH_EXPR = 24
+XML_WITH_SCHEMAS = 25
+XML_WITH_SCHEMATRON = 26
+XML_WITH_MODULES = 27
+XML_WITH_DEBUG = 28
+XML_WITH_DEBUG_MEM = 29
+XML_WITH_DEBUG_RUN = 30
+XML_WITH_ZLIB = 31
+XML_WITH_ICU = 32
+XML_WITH_LZMA = 33
+XML_WITH_NONE = 99999
+
+# xmlElementContentOccur
+XML_ELEMENT_CONTENT_ONCE = 1
+XML_ELEMENT_CONTENT_OPT = 2
+XML_ELEMENT_CONTENT_MULT = 3
+XML_ELEMENT_CONTENT_PLUS = 4
+
+# xmlXPathError
+XPATH_EXPRESSION_OK = 0
+XPATH_NUMBER_ERROR = 1
+XPATH_UNFINISHED_LITERAL_ERROR = 2
+XPATH_START_LITERAL_ERROR = 3
+XPATH_VARIABLE_REF_ERROR = 4
+XPATH_UNDEF_VARIABLE_ERROR = 5
+XPATH_INVALID_PREDICATE_ERROR = 6
+XPATH_EXPR_ERROR = 7
+XPATH_UNCLOSED_ERROR = 8
+XPATH_UNKNOWN_FUNC_ERROR = 9
+XPATH_INVALID_OPERAND = 10
+XPATH_INVALID_TYPE = 11
+XPATH_INVALID_ARITY = 12
+XPATH_INVALID_CTXT_SIZE = 13
+XPATH_INVALID_CTXT_POSITION = 14
+XPATH_MEMORY_ERROR = 15
+XPTR_SYNTAX_ERROR = 16
+XPTR_RESOURCE_ERROR = 17
+XPTR_SUB_RESOURCE_ERROR = 18
+XPATH_UNDEF_PREFIX_ERROR = 19
+XPATH_ENCODING_ERROR = 20
+XPATH_INVALID_CHAR_ERROR = 21
+XPATH_INVALID_CTXT = 22
+XPATH_STACK_ERROR = 23
+XPATH_FORBID_VARIABLE_ERROR = 24
+
+# xmlTextReaderMode
+XML_TEXTREADER_MODE_INITIAL = 0
+XML_TEXTREADER_MODE_INTERACTIVE = 1
+XML_TEXTREADER_MODE_ERROR = 2
+XML_TEXTREADER_MODE_EOF = 3
+XML_TEXTREADER_MODE_CLOSED = 4
+XML_TEXTREADER_MODE_READING = 5
+
+# xmlErrorLevel
+XML_ERR_NONE = 0
+XML_ERR_WARNING = 1
+XML_ERR_ERROR = 2
+XML_ERR_FATAL = 3
+
+# xmlCharEncoding
+XML_CHAR_ENCODING_ERROR = -1
+XML_CHAR_ENCODING_NONE = 0
+XML_CHAR_ENCODING_UTF8 = 1
+XML_CHAR_ENCODING_UTF16LE = 2
+XML_CHAR_ENCODING_UTF16BE = 3
+XML_CHAR_ENCODING_UCS4LE = 4
+XML_CHAR_ENCODING_UCS4BE = 5
+XML_CHAR_ENCODING_EBCDIC = 6
+XML_CHAR_ENCODING_UCS4_2143 = 7
+XML_CHAR_ENCODING_UCS4_3412 = 8
+XML_CHAR_ENCODING_UCS2 = 9
+XML_CHAR_ENCODING_8859_1 = 10
+XML_CHAR_ENCODING_8859_2 = 11
+XML_CHAR_ENCODING_8859_3 = 12
+XML_CHAR_ENCODING_8859_4 = 13
+XML_CHAR_ENCODING_8859_5 = 14
+XML_CHAR_ENCODING_8859_6 = 15
+XML_CHAR_ENCODING_8859_7 = 16
+XML_CHAR_ENCODING_8859_8 = 17
+XML_CHAR_ENCODING_8859_9 = 18
+XML_CHAR_ENCODING_2022_JP = 19
+XML_CHAR_ENCODING_SHIFT_JIS = 20
+XML_CHAR_ENCODING_EUC_JP = 21
+XML_CHAR_ENCODING_ASCII = 22
+
+# xmlErrorDomain
+XML_FROM_NONE = 0
+XML_FROM_PARSER = 1
+XML_FROM_TREE = 2
+XML_FROM_NAMESPACE = 3
+XML_FROM_DTD = 4
+XML_FROM_HTML = 5
+XML_FROM_MEMORY = 6
+XML_FROM_OUTPUT = 7
+XML_FROM_IO = 8
+XML_FROM_FTP = 9
+XML_FROM_HTTP = 10
+XML_FROM_XINCLUDE = 11
+XML_FROM_XPATH = 12
+XML_FROM_XPOINTER = 13
+XML_FROM_REGEXP = 14
+XML_FROM_DATATYPE = 15
+XML_FROM_SCHEMASP = 16
+XML_FROM_SCHEMASV = 17
+XML_FROM_RELAXNGP = 18
+XML_FROM_RELAXNGV = 19
+XML_FROM_CATALOG = 20
+XML_FROM_C14N = 21
+XML_FROM_XSLT = 22
+XML_FROM_VALID = 23
+XML_FROM_CHECK = 24
+XML_FROM_WRITER = 25
+XML_FROM_MODULE = 26
+XML_FROM_I18N = 27
+XML_FROM_SCHEMATRONV = 28
+XML_FROM_BUFFER = 29
+XML_FROM_URI = 30
+
+# htmlStatus
+HTML_NA = 0
+HTML_INVALID = 1
+HTML_DEPRECATED = 2
+HTML_VALID = 4
+HTML_REQUIRED = 12
+
+# xmlSchemaValidOption
+XML_SCHEMA_VAL_VC_I_CREATE = 1
+
+# xmlSchemaWhitespaceValueType
+XML_SCHEMA_WHITESPACE_UNKNOWN = 0
+XML_SCHEMA_WHITESPACE_PRESERVE = 1
+XML_SCHEMA_WHITESPACE_REPLACE = 2
+XML_SCHEMA_WHITESPACE_COLLAPSE = 3
+
+# htmlParserOption
+HTML_PARSE_RECOVER = 1
+HTML_PARSE_NODEFDTD = 4
+HTML_PARSE_NOERROR = 32
+HTML_PARSE_NOWARNING = 64
+HTML_PARSE_PEDANTIC = 128
+HTML_PARSE_NOBLANKS = 256
+HTML_PARSE_NONET = 2048
+HTML_PARSE_NOIMPLIED = 8192
+HTML_PARSE_COMPACT = 65536
+HTML_PARSE_IGNORE_ENC = 2097152
+
+# xmlRelaxNGValidErr
+XML_RELAXNG_OK = 0
+XML_RELAXNG_ERR_MEMORY = 1
+XML_RELAXNG_ERR_TYPE = 2
+XML_RELAXNG_ERR_TYPEVAL = 3
+XML_RELAXNG_ERR_DUPID = 4
+XML_RELAXNG_ERR_TYPECMP = 5
+XML_RELAXNG_ERR_NOSTATE = 6
+XML_RELAXNG_ERR_NODEFINE = 7
+XML_RELAXNG_ERR_LISTEXTRA = 8
+XML_RELAXNG_ERR_LISTEMPTY = 9
+XML_RELAXNG_ERR_INTERNODATA = 10
+XML_RELAXNG_ERR_INTERSEQ = 11
+XML_RELAXNG_ERR_INTEREXTRA = 12
+XML_RELAXNG_ERR_ELEMNAME = 13
+XML_RELAXNG_ERR_ATTRNAME = 14
+XML_RELAXNG_ERR_ELEMNONS = 15
+XML_RELAXNG_ERR_ATTRNONS = 16
+XML_RELAXNG_ERR_ELEMWRONGNS = 17
+XML_RELAXNG_ERR_ATTRWRONGNS = 18
+XML_RELAXNG_ERR_ELEMEXTRANS = 19
+XML_RELAXNG_ERR_ATTREXTRANS = 20
+XML_RELAXNG_ERR_ELEMNOTEMPTY = 21
+XML_RELAXNG_ERR_NOELEM = 22
+XML_RELAXNG_ERR_NOTELEM = 23
+XML_RELAXNG_ERR_ATTRVALID = 24
+XML_RELAXNG_ERR_CONTENTVALID = 25
+XML_RELAXNG_ERR_EXTRACONTENT = 26
+XML_RELAXNG_ERR_INVALIDATTR = 27
+XML_RELAXNG_ERR_DATAELEM = 28
+XML_RELAXNG_ERR_VALELEM = 29
+XML_RELAXNG_ERR_LISTELEM = 30
+XML_RELAXNG_ERR_DATATYPE = 31
+XML_RELAXNG_ERR_VALUE = 32
+XML_RELAXNG_ERR_LIST = 33
+XML_RELAXNG_ERR_NOGRAMMAR = 34
+XML_RELAXNG_ERR_EXTRADATA = 35
+XML_RELAXNG_ERR_LACKDATA = 36
+XML_RELAXNG_ERR_INTERNAL = 37
+XML_RELAXNG_ERR_ELEMWRONG = 38
+XML_RELAXNG_ERR_TEXTWRONG = 39
+
+# xmlCatalogAllow
+XML_CATA_ALLOW_NONE = 0
+XML_CATA_ALLOW_GLOBAL = 1
+XML_CATA_ALLOW_DOCUMENT = 2
+XML_CATA_ALLOW_ALL = 3
+
+# xmlAttributeType
+XML_ATTRIBUTE_CDATA = 1
+XML_ATTRIBUTE_ID = 2
+XML_ATTRIBUTE_IDREF = 3
+XML_ATTRIBUTE_IDREFS = 4
+XML_ATTRIBUTE_ENTITY = 5
+XML_ATTRIBUTE_ENTITIES = 6
+XML_ATTRIBUTE_NMTOKEN = 7
+XML_ATTRIBUTE_NMTOKENS = 8
+XML_ATTRIBUTE_ENUMERATION = 9
+XML_ATTRIBUTE_NOTATION = 10
+
+# xmlSchematronValidOptions
+XML_SCHEMATRON_OUT_QUIET = 1
+XML_SCHEMATRON_OUT_TEXT = 2
+XML_SCHEMATRON_OUT_XML = 4
+XML_SCHEMATRON_OUT_ERROR = 8
+XML_SCHEMATRON_OUT_FILE = 256
+XML_SCHEMATRON_OUT_BUFFER = 512
+XML_SCHEMATRON_OUT_IO = 1024
+
+# xmlSchemaContentType
+XML_SCHEMA_CONTENT_UNKNOWN = 0
+XML_SCHEMA_CONTENT_EMPTY = 1
+XML_SCHEMA_CONTENT_ELEMENTS = 2
+XML_SCHEMA_CONTENT_MIXED = 3
+XML_SCHEMA_CONTENT_SIMPLE = 4
+XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS = 5
+XML_SCHEMA_CONTENT_BASIC = 6
+XML_SCHEMA_CONTENT_ANY = 7
+
+# xmlSchemaTypeType
+XML_SCHEMA_TYPE_BASIC = 1
+XML_SCHEMA_TYPE_ANY = 2
+XML_SCHEMA_TYPE_FACET = 3
+XML_SCHEMA_TYPE_SIMPLE = 4
+XML_SCHEMA_TYPE_COMPLEX = 5
+XML_SCHEMA_TYPE_SEQUENCE = 6
+XML_SCHEMA_TYPE_CHOICE = 7
+XML_SCHEMA_TYPE_ALL = 8
+XML_SCHEMA_TYPE_SIMPLE_CONTENT = 9
+XML_SCHEMA_TYPE_COMPLEX_CONTENT = 10
+XML_SCHEMA_TYPE_UR = 11
+XML_SCHEMA_TYPE_RESTRICTION = 12
+XML_SCHEMA_TYPE_EXTENSION = 13
+XML_SCHEMA_TYPE_ELEMENT = 14
+XML_SCHEMA_TYPE_ATTRIBUTE = 15
+XML_SCHEMA_TYPE_ATTRIBUTEGROUP = 16
+XML_SCHEMA_TYPE_GROUP = 17
+XML_SCHEMA_TYPE_NOTATION = 18
+XML_SCHEMA_TYPE_LIST = 19
+XML_SCHEMA_TYPE_UNION = 20
+XML_SCHEMA_TYPE_ANY_ATTRIBUTE = 21
+XML_SCHEMA_TYPE_IDC_UNIQUE = 22
+XML_SCHEMA_TYPE_IDC_KEY = 23
+XML_SCHEMA_TYPE_IDC_KEYREF = 24
+XML_SCHEMA_TYPE_PARTICLE = 25
+XML_SCHEMA_TYPE_ATTRIBUTE_USE = 26
+XML_SCHEMA_FACET_MININCLUSIVE = 1000
+XML_SCHEMA_FACET_MINEXCLUSIVE = 1001
+XML_SCHEMA_FACET_MAXINCLUSIVE = 1002
+XML_SCHEMA_FACET_MAXEXCLUSIVE = 1003
+XML_SCHEMA_FACET_TOTALDIGITS = 1004
+XML_SCHEMA_FACET_FRACTIONDIGITS = 1005
+XML_SCHEMA_FACET_PATTERN = 1006
+XML_SCHEMA_FACET_ENUMERATION = 1007
+XML_SCHEMA_FACET_WHITESPACE = 1008
+XML_SCHEMA_FACET_LENGTH = 1009
+XML_SCHEMA_FACET_MAXLENGTH = 1010
+XML_SCHEMA_FACET_MINLENGTH = 1011
+XML_SCHEMA_EXTRA_QNAMEREF = 2000
+XML_SCHEMA_EXTRA_ATTR_USE_PROHIB = 2001
+
+# xmlModuleOption
+XML_MODULE_LAZY = 1
+XML_MODULE_LOCAL = 2
+
+# xmlParserMode
+XML_PARSE_UNKNOWN = 0
+XML_PARSE_DOM = 1
+XML_PARSE_SAX = 2
+XML_PARSE_PUSH_DOM = 3
+XML_PARSE_PUSH_SAX = 4
+XML_PARSE_READER = 5
+
+# xmlC14NMode
+XML_C14N_1_0 = 0
+XML_C14N_EXCLUSIVE_1_0 = 1
+XML_C14N_1_1 = 2
+
+# xmlParserOption
+XML_PARSE_RECOVER = 1
+XML_PARSE_NOENT = 2
+XML_PARSE_DTDLOAD = 4
+XML_PARSE_DTDATTR = 8
+XML_PARSE_DTDVALID = 16
+XML_PARSE_NOERROR = 32
+XML_PARSE_NOWARNING = 64
+XML_PARSE_PEDANTIC = 128
+XML_PARSE_NOBLANKS = 256
+XML_PARSE_SAX1 = 512
+XML_PARSE_XINCLUDE = 1024
+XML_PARSE_NONET = 2048
+XML_PARSE_NODICT = 4096
+XML_PARSE_NSCLEAN = 8192
+XML_PARSE_NOCDATA = 16384
+XML_PARSE_NOXINCNODE = 32768
+XML_PARSE_COMPACT = 65536
+XML_PARSE_OLD10 = 131072
+XML_PARSE_NOBASEFIX = 262144
+XML_PARSE_HUGE = 524288
+XML_PARSE_OLDSAX = 1048576
+XML_PARSE_IGNORE_ENC = 2097152
+XML_PARSE_BIG_LINES = 4194304
+
+# xmlElementTypeVal
+XML_ELEMENT_TYPE_UNDEFINED = 0
+XML_ELEMENT_TYPE_EMPTY = 1
+XML_ELEMENT_TYPE_ANY = 2
+XML_ELEMENT_TYPE_MIXED = 3
+XML_ELEMENT_TYPE_ELEMENT = 4
+
+# xmlDocProperties
+XML_DOC_WELLFORMED = 1
+XML_DOC_NSVALID = 2
+XML_DOC_OLD10 = 4
+XML_DOC_DTDVALID = 8
+XML_DOC_XINCLUDE = 16
+XML_DOC_USERBUILT = 32
+XML_DOC_INTERNAL = 64
+XML_DOC_HTML = 128
+
+# xlinkType
+XLINK_TYPE_NONE = 0
+XLINK_TYPE_SIMPLE = 1
+XLINK_TYPE_EXTENDED = 2
+XLINK_TYPE_EXTENDED_SET = 3
+
+# xmlXPathObjectType
+XPATH_UNDEFINED = 0
+XPATH_NODESET = 1
+XPATH_BOOLEAN = 2
+XPATH_NUMBER = 3
+XPATH_STRING = 4
+XPATH_POINT = 5
+XPATH_RANGE = 6
+XPATH_LOCATIONSET = 7
+XPATH_USERS = 8
+XPATH_XSLT_TREE = 9
+
+# xmlSchemaValidError
+XML_SCHEMAS_ERR_OK = 0
+XML_SCHEMAS_ERR_NOROOT = 1
+XML_SCHEMAS_ERR_UNDECLAREDELEM = 2
+XML_SCHEMAS_ERR_NOTTOPLEVEL = 3
+XML_SCHEMAS_ERR_MISSING = 4
+XML_SCHEMAS_ERR_WRONGELEM = 5
+XML_SCHEMAS_ERR_NOTYPE = 6
+XML_SCHEMAS_ERR_NOROLLBACK = 7
+XML_SCHEMAS_ERR_ISABSTRACT = 8
+XML_SCHEMAS_ERR_NOTEMPTY = 9
+XML_SCHEMAS_ERR_ELEMCONT = 10
+XML_SCHEMAS_ERR_HAVEDEFAULT = 11
+XML_SCHEMAS_ERR_NOTNILLABLE = 12
+XML_SCHEMAS_ERR_EXTRACONTENT = 13
+XML_SCHEMAS_ERR_INVALIDATTR = 14
+XML_SCHEMAS_ERR_INVALIDELEM = 15
+XML_SCHEMAS_ERR_NOTDETERMINIST = 16
+XML_SCHEMAS_ERR_CONSTRUCT = 17
+XML_SCHEMAS_ERR_INTERNAL = 18
+XML_SCHEMAS_ERR_NOTSIMPLE = 19
+XML_SCHEMAS_ERR_ATTRUNKNOWN = 20
+XML_SCHEMAS_ERR_ATTRINVALID = 21
+XML_SCHEMAS_ERR_VALUE = 22
+XML_SCHEMAS_ERR_FACET = 23
+XML_SCHEMAS_ERR_ = 24
+XML_SCHEMAS_ERR_XXX = 25
+
diff --git a/python/libxml2class.py b/python/libxml2class.py
new file mode 100644
index 0000000..4b718dc
--- /dev/null
+++ b/python/libxml2class.py
@@ -0,0 +1,8531 @@
+#
+# Functions from module HTMLparser
+#
+
+def htmlCreateMemoryParserCtxt(buffer, size):
+ """Create a parser context for an HTML in-memory document. """
+ ret = libxml2mod.htmlCreateMemoryParserCtxt(buffer, size)
+ if ret is None:raise parserError('htmlCreateMemoryParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlHandleOmittedElem(val):
+ """Set and return the previous value for handling HTML omitted
+ tags. """
+ ret = libxml2mod.htmlHandleOmittedElem(val)
+ return ret
+
+def htmlIsScriptAttribute(name):
+ """Check if an attribute is of content type Script """
+ ret = libxml2mod.htmlIsScriptAttribute(name)
+ return ret
+
+def htmlNewParserCtxt():
+ """Allocate and initialize a new parser context. """
+ ret = libxml2mod.htmlNewParserCtxt()
+ if ret is None:raise parserError('htmlNewParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlParseDoc(cur, encoding):
+ """parse an HTML in-memory document and build a tree. """
+ ret = libxml2mod.htmlParseDoc(cur, encoding)
+ if ret is None:raise parserError('htmlParseDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlParseFile(filename, encoding):
+ """parse an HTML file and build a tree. Automatic support for
+ ZLIB/Compress compressed document is provided by default if
+ found at compile-time. """
+ ret = libxml2mod.htmlParseFile(filename, encoding)
+ if ret is None:raise parserError('htmlParseFile() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadDoc(cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.htmlReadDoc(cur, URL, encoding, options)
+ if ret is None:raise treeError('htmlReadDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadFd(fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. """
+ ret = libxml2mod.htmlReadFd(fd, URL, encoding, options)
+ if ret is None:raise treeError('htmlReadFd() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadFile(filename, encoding, options):
+ """parse an XML file from the filesystem or the network. """
+ ret = libxml2mod.htmlReadFile(filename, encoding, options)
+ if ret is None:raise treeError('htmlReadFile() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlReadMemory(buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.htmlReadMemory(buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('htmlReadMemory() failed')
+ return xmlDoc(_obj=ret)
+
+#
+# Functions from module HTMLtree
+#
+
+def htmlIsBooleanAttr(name):
+ """Determine if a given attribute is a boolean attribute. """
+ ret = libxml2mod.htmlIsBooleanAttr(name)
+ return ret
+
+def htmlNewDoc(URI, ExternalID):
+ """Creates a new HTML document """
+ ret = libxml2mod.htmlNewDoc(URI, ExternalID)
+ if ret is None:raise treeError('htmlNewDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def htmlNewDocNoDtD(URI, ExternalID):
+ """Creates a new HTML document without a DTD node if @URI and
+ @ExternalID are None """
+ ret = libxml2mod.htmlNewDocNoDtD(URI, ExternalID)
+ if ret is None:raise treeError('htmlNewDocNoDtD() failed')
+ return xmlDoc(_obj=ret)
+
+#
+# Functions from module SAX2
+#
+
+def SAXDefaultVersion(version):
+ """Set the default version of SAX used globally by the
+ library. By default, during initialization the default is
+ set to 2. Note that it is generally a better coding style
+ to use xmlSAXVersion() to set up the version explicitly for
+ a given parsing context. """
+ ret = libxml2mod.xmlSAXDefaultVersion(version)
+ return ret
+
+def defaultSAXHandlerInit():
+ """Initialize the default SAX2 handler """
+ libxml2mod.xmlDefaultSAXHandlerInit()
+
+def docbDefaultSAXHandlerInit():
+ """Initialize the default SAX handler """
+ libxml2mod.docbDefaultSAXHandlerInit()
+
+def htmlDefaultSAXHandlerInit():
+ """Initialize the default SAX handler """
+ libxml2mod.htmlDefaultSAXHandlerInit()
+
+#
+# Functions from module catalog
+#
+
+def catalogAdd(type, orig, replace):
+ """Add an entry in the catalog, it may overwrite existing but
+ different entries. If called before any other catalog
+ routine, allows to override the default shared catalog put
+ in place by xmlInitializeCatalog(); """
+ ret = libxml2mod.xmlCatalogAdd(type, orig, replace)
+ return ret
+
+def catalogCleanup():
+ """Free up all the memory associated with catalogs """
+ libxml2mod.xmlCatalogCleanup()
+
+def catalogConvert():
+ """Convert all the SGML catalog entries as XML ones """
+ ret = libxml2mod.xmlCatalogConvert()
+ return ret
+
+def catalogDump(out):
+ """Dump all the global catalog content to the given file. """
+ if out is not None: out.flush()
+ libxml2mod.xmlCatalogDump(out)
+
+def catalogGetPublic(pubID):
+ """Try to lookup the catalog reference associated to a public
+ ID DEPRECATED, use xmlCatalogResolvePublic() """
+ ret = libxml2mod.xmlCatalogGetPublic(pubID)
+ return ret
+
+def catalogGetSystem(sysID):
+ """Try to lookup the catalog reference associated to a system
+ ID DEPRECATED, use xmlCatalogResolveSystem() """
+ ret = libxml2mod.xmlCatalogGetSystem(sysID)
+ return ret
+
+def catalogRemove(value):
+ """Remove an entry from the catalog """
+ ret = libxml2mod.xmlCatalogRemove(value)
+ return ret
+
+def catalogResolve(pubID, sysID):
+ """Do a complete resolution lookup of an External Identifier """
+ ret = libxml2mod.xmlCatalogResolve(pubID, sysID)
+ return ret
+
+def catalogResolvePublic(pubID):
+ """Try to lookup the catalog reference associated to a public
+ ID """
+ ret = libxml2mod.xmlCatalogResolvePublic(pubID)
+ return ret
+
+def catalogResolveSystem(sysID):
+ """Try to lookup the catalog resource for a system ID """
+ ret = libxml2mod.xmlCatalogResolveSystem(sysID)
+ return ret
+
+def catalogResolveURI(URI):
+ """Do a complete resolution lookup of an URI """
+ ret = libxml2mod.xmlCatalogResolveURI(URI)
+ return ret
+
+def catalogSetDebug(level):
+ """Used to set the debug level for catalog operation, 0
+ disable debugging, 1 enable it """
+ ret = libxml2mod.xmlCatalogSetDebug(level)
+ return ret
+
+def initializeCatalog():
+ """Do the catalog initialization. this function is not thread
+ safe, catalog initialization should preferably be done once
+ at startup """
+ libxml2mod.xmlInitializeCatalog()
+
+def loadACatalog(filename):
+ """Load the catalog and build the associated data structures.
+ This can be either an XML Catalog or an SGML Catalog It
+ will recurse in SGML CATALOG entries. On the other hand XML
+ Catalogs are not handled recursively. """
+ ret = libxml2mod.xmlLoadACatalog(filename)
+ if ret is None:raise treeError('xmlLoadACatalog() failed')
+ return catalog(_obj=ret)
+
+def loadCatalog(filename):
+ """Load the catalog and makes its definitions effective for
+ the default external entity loader. It will recurse in SGML
+ CATALOG entries. this function is not thread safe, catalog
+ initialization should preferably be done once at startup """
+ ret = libxml2mod.xmlLoadCatalog(filename)
+ return ret
+
+def loadCatalogs(pathss):
+ """Load the catalogs and makes their definitions effective for
+ the default external entity loader. this function is not
+ thread safe, catalog initialization should preferably be
+ done once at startup """
+ libxml2mod.xmlLoadCatalogs(pathss)
+
+def loadSGMLSuperCatalog(filename):
+ """Load an SGML super catalog. It won't expand CATALOG or
+ DELEGATE references. This is only needed for manipulating
+ SGML Super Catalogs like adding and removing CATALOG or
+ DELEGATE entries. """
+ ret = libxml2mod.xmlLoadSGMLSuperCatalog(filename)
+ if ret is None:raise treeError('xmlLoadSGMLSuperCatalog() failed')
+ return catalog(_obj=ret)
+
+def newCatalog(sgml):
+ """create a new Catalog. """
+ ret = libxml2mod.xmlNewCatalog(sgml)
+ if ret is None:raise treeError('xmlNewCatalog() failed')
+ return catalog(_obj=ret)
+
+def parseCatalogFile(filename):
+ """parse an XML file and build a tree. It's like
+ xmlParseFile() except it bypass all catalog lookups. """
+ ret = libxml2mod.xmlParseCatalogFile(filename)
+ if ret is None:raise parserError('xmlParseCatalogFile() failed')
+ return xmlDoc(_obj=ret)
+
+#
+# Functions from module chvalid
+#
+
+def isBaseChar(ch):
+ """This function is DEPRECATED. Use xmlIsBaseChar_ch or
+ xmlIsBaseCharQ instead """
+ ret = libxml2mod.xmlIsBaseChar(ch)
+ return ret
+
+def isBlank(ch):
+ """This function is DEPRECATED. Use xmlIsBlank_ch or
+ xmlIsBlankQ instead """
+ ret = libxml2mod.xmlIsBlank(ch)
+ return ret
+
+def isChar(ch):
+ """This function is DEPRECATED. Use xmlIsChar_ch or xmlIsCharQ
+ instead """
+ ret = libxml2mod.xmlIsChar(ch)
+ return ret
+
+def isCombining(ch):
+ """This function is DEPRECATED. Use xmlIsCombiningQ instead """
+ ret = libxml2mod.xmlIsCombining(ch)
+ return ret
+
+def isDigit(ch):
+ """This function is DEPRECATED. Use xmlIsDigit_ch or
+ xmlIsDigitQ instead """
+ ret = libxml2mod.xmlIsDigit(ch)
+ return ret
+
+def isExtender(ch):
+ """This function is DEPRECATED. Use xmlIsExtender_ch or
+ xmlIsExtenderQ instead """
+ ret = libxml2mod.xmlIsExtender(ch)
+ return ret
+
+def isIdeographic(ch):
+ """This function is DEPRECATED. Use xmlIsIdeographicQ instead """
+ ret = libxml2mod.xmlIsIdeographic(ch)
+ return ret
+
+def isPubidChar(ch):
+ """This function is DEPRECATED. Use xmlIsPubidChar_ch or
+ xmlIsPubidCharQ instead """
+ ret = libxml2mod.xmlIsPubidChar(ch)
+ return ret
+
+#
+# Functions from module debugXML
+#
+
+def boolToText(boolval):
+ """Convenient way to turn bool into text """
+ ret = libxml2mod.xmlBoolToText(boolval)
+ return ret
+
+def debugDumpString(output, str):
+ """Dumps informations about the string, shorten it if necessary """
+ if output is not None: output.flush()
+ libxml2mod.xmlDebugDumpString(output, str)
+
+def shellPrintXPathError(errorType, arg):
+ """Print the xpath error to libxml default error channel """
+ libxml2mod.xmlShellPrintXPathError(errorType, arg)
+
+#
+# Functions from module dict
+#
+
+def dictCleanup():
+ """Free the dictionary mutex. Do not call unless sure the
+ library is not in use anymore ! """
+ libxml2mod.xmlDictCleanup()
+
+def initializeDict():
+ """Do the dictionary mutex initialization. this function is
+ deprecated """
+ ret = libxml2mod.xmlInitializeDict()
+ return ret
+
+#
+# Functions from module encoding
+#
+
+def addEncodingAlias(name, alias):
+ """Registers an alias @alias for an encoding named @name.
+ Existing alias will be overwritten. """
+ ret = libxml2mod.xmlAddEncodingAlias(name, alias)
+ return ret
+
+def cleanupCharEncodingHandlers():
+ """Cleanup the memory allocated for the char encoding support,
+ it unregisters all the encoding handlers and the aliases. """
+ libxml2mod.xmlCleanupCharEncodingHandlers()
+
+def cleanupEncodingAliases():
+ """Unregisters all aliases """
+ libxml2mod.xmlCleanupEncodingAliases()
+
+def delEncodingAlias(alias):
+ """Unregisters an encoding alias @alias """
+ ret = libxml2mod.xmlDelEncodingAlias(alias)
+ return ret
+
+def encodingAlias(alias):
+ """Lookup an encoding name for the given alias. """
+ ret = libxml2mod.xmlGetEncodingAlias(alias)
+ return ret
+
+def initCharEncodingHandlers():
+ """Initialize the char encoding support, it registers the
+ default encoding supported. NOTE: while public, this
+ function usually doesn't need to be called in normal
+ processing. """
+ libxml2mod.xmlInitCharEncodingHandlers()
+
+#
+# Functions from module entities
+#
+
+def cleanupPredefinedEntities():
+ """Cleanup up the predefined entities table. Deprecated call """
+ libxml2mod.xmlCleanupPredefinedEntities()
+
+def initializePredefinedEntities():
+ """Set up the predefined entities. Deprecated call """
+ libxml2mod.xmlInitializePredefinedEntities()
+
+def predefinedEntity(name):
+ """Check whether this name is an predefined entity. """
+ ret = libxml2mod.xmlGetPredefinedEntity(name)
+ if ret is None:raise treeError('xmlGetPredefinedEntity() failed')
+ return xmlEntity(_obj=ret)
+
+#
+# Functions from module globals
+#
+
+def cleanupGlobals():
+ """Additional cleanup for multi-threading """
+ libxml2mod.xmlCleanupGlobals()
+
+def initGlobals():
+ """Additional initialisation for multi-threading """
+ libxml2mod.xmlInitGlobals()
+
+def thrDefDefaultBufferSize(v):
+ ret = libxml2mod.xmlThrDefDefaultBufferSize(v)
+ return ret
+
+def thrDefDoValidityCheckingDefaultValue(v):
+ ret = libxml2mod.xmlThrDefDoValidityCheckingDefaultValue(v)
+ return ret
+
+def thrDefGetWarningsDefaultValue(v):
+ ret = libxml2mod.xmlThrDefGetWarningsDefaultValue(v)
+ return ret
+
+def thrDefIndentTreeOutput(v):
+ ret = libxml2mod.xmlThrDefIndentTreeOutput(v)
+ return ret
+
+def thrDefKeepBlanksDefaultValue(v):
+ ret = libxml2mod.xmlThrDefKeepBlanksDefaultValue(v)
+ return ret
+
+def thrDefLineNumbersDefaultValue(v):
+ ret = libxml2mod.xmlThrDefLineNumbersDefaultValue(v)
+ return ret
+
+def thrDefLoadExtDtdDefaultValue(v):
+ ret = libxml2mod.xmlThrDefLoadExtDtdDefaultValue(v)
+ return ret
+
+def thrDefParserDebugEntities(v):
+ ret = libxml2mod.xmlThrDefParserDebugEntities(v)
+ return ret
+
+def thrDefPedanticParserDefaultValue(v):
+ ret = libxml2mod.xmlThrDefPedanticParserDefaultValue(v)
+ return ret
+
+def thrDefSaveNoEmptyTags(v):
+ ret = libxml2mod.xmlThrDefSaveNoEmptyTags(v)
+ return ret
+
+def thrDefSubstituteEntitiesDefaultValue(v):
+ ret = libxml2mod.xmlThrDefSubstituteEntitiesDefaultValue(v)
+ return ret
+
+def thrDefTreeIndentString(v):
+ ret = libxml2mod.xmlThrDefTreeIndentString(v)
+ return ret
+
+#
+# Functions from module nanoftp
+#
+
+def nanoFTPCleanup():
+ """Cleanup the FTP protocol layer. This cleanup proxy
+ informations. """
+ libxml2mod.xmlNanoFTPCleanup()
+
+def nanoFTPInit():
+ """Initialize the FTP protocol layer. Currently it just checks
+ for proxy informations, and get the hostname """
+ libxml2mod.xmlNanoFTPInit()
+
+def nanoFTPProxy(host, port, user, passwd, type):
+ """Setup the FTP proxy informations. This can also be done by
+ using ftp_proxy ftp_proxy_user and ftp_proxy_password
+ environment variables. """
+ libxml2mod.xmlNanoFTPProxy(host, port, user, passwd, type)
+
+def nanoFTPScanProxy(URL):
+ """(Re)Initialize the FTP Proxy context by parsing the URL and
+ finding the protocol host port it indicates. Should be like
+ ftp://myproxy/ or ftp://myproxy:3128/ A None URL cleans up
+ proxy informations. """
+ libxml2mod.xmlNanoFTPScanProxy(URL)
+
+#
+# Functions from module nanohttp
+#
+
+def nanoHTTPCleanup():
+ """Cleanup the HTTP protocol layer. """
+ libxml2mod.xmlNanoHTTPCleanup()
+
+def nanoHTTPInit():
+ """Initialize the HTTP protocol layer. Currently it just
+ checks for proxy informations """
+ libxml2mod.xmlNanoHTTPInit()
+
+def nanoHTTPScanProxy(URL):
+ """(Re)Initialize the HTTP Proxy context by parsing the URL
+ and finding the protocol host port it indicates. Should be
+ like http://myproxy/ or http://myproxy:3128/ A None URL
+ cleans up proxy informations. """
+ libxml2mod.xmlNanoHTTPScanProxy(URL)
+
+#
+# Functions from module parser
+#
+
+def createDocParserCtxt(cur):
+ """Creates a parser context for an XML in-memory document. """
+ ret = libxml2mod.xmlCreateDocParserCtxt(cur)
+ if ret is None:raise parserError('xmlCreateDocParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def initParser():
+ """Initialization function for the XML parser. This is not
+ reentrant. Call once before processing in case of use in
+ multithreaded programs. """
+ libxml2mod.xmlInitParser()
+
+def keepBlanksDefault(val):
+ """Set and return the previous value for default blanks text
+ nodes support. The 1.x version of the parser used an
+ heuristic to try to detect ignorable white spaces. As a
+ result the SAX callback was generating
+ xmlSAX2IgnorableWhitespace() callbacks instead of
+ characters() one, and when using the DOM output text nodes
+ containing those blanks were not generated. The 2.x and
+ later version will switch to the XML standard way and
+ ignorableWhitespace() are only generated when running the
+ parser in validating mode and when the current element
+ doesn't allow CDATA or mixed content. This function is
+ provided as a way to force the standard behavior on 1.X
+ libs and to switch back to the old mode for compatibility
+ when running 1.X client code on 2.X . Upgrade of 1.X code
+ should be done by using xmlIsBlankNode() commodity function
+ to detect the "empty" nodes generated. This value also
+ affect autogeneration of indentation when saving code if
+ blanks sections are kept, indentation is not generated. """
+ ret = libxml2mod.xmlKeepBlanksDefault(val)
+ return ret
+
+def lineNumbersDefault(val):
+ """Set and return the previous value for enabling line numbers
+ in elements contents. This may break on old application and
+ is turned off by default. """
+ ret = libxml2mod.xmlLineNumbersDefault(val)
+ return ret
+
+def newParserCtxt():
+ """Allocate and initialize a new parser context. """
+ ret = libxml2mod.xmlNewParserCtxt()
+ if ret is None:raise parserError('xmlNewParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def parseDTD(ExternalID, SystemID):
+ """Load and parse an external subset. """
+ ret = libxml2mod.xmlParseDTD(ExternalID, SystemID)
+ if ret is None:raise parserError('xmlParseDTD() failed')
+ return xmlDtd(_obj=ret)
+
+def parseDoc(cur):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.xmlParseDoc(cur)
+ if ret is None:raise parserError('xmlParseDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def parseEntity(filename):
+ """parse an XML external entity out of context and build a
+ tree. [78] extParsedEnt ::= TextDecl? content This
+ correspond to a "Well Balanced" chunk """
+ ret = libxml2mod.xmlParseEntity(filename)
+ if ret is None:raise parserError('xmlParseEntity() failed')
+ return xmlDoc(_obj=ret)
+
+def parseFile(filename):
+ """parse an XML file and build a tree. Automatic support for
+ ZLIB/Compress compressed document is provided by default if
+ found at compile-time. """
+ ret = libxml2mod.xmlParseFile(filename)
+ if ret is None:raise parserError('xmlParseFile() failed')
+ return xmlDoc(_obj=ret)
+
+def parseMemory(buffer, size):
+ """parse an XML in-memory block and build a tree. """
+ ret = libxml2mod.xmlParseMemory(buffer, size)
+ if ret is None:raise parserError('xmlParseMemory() failed')
+ return xmlDoc(_obj=ret)
+
+def pedanticParserDefault(val):
+ """Set and return the previous value for enabling pedantic
+ warnings. """
+ ret = libxml2mod.xmlPedanticParserDefault(val)
+ return ret
+
+def readDoc(cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.xmlReadDoc(cur, URL, encoding, options)
+ if ret is None:raise treeError('xmlReadDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def readFd(fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. NOTE
+ that the file descriptor will not be closed when the reader
+ is closed or reset. """
+ ret = libxml2mod.xmlReadFd(fd, URL, encoding, options)
+ if ret is None:raise treeError('xmlReadFd() failed')
+ return xmlDoc(_obj=ret)
+
+def readFile(filename, encoding, options):
+ """parse an XML file from the filesystem or the network. """
+ ret = libxml2mod.xmlReadFile(filename, encoding, options)
+ if ret is None:raise treeError('xmlReadFile() failed')
+ return xmlDoc(_obj=ret)
+
+def readMemory(buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. """
+ ret = libxml2mod.xmlReadMemory(buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('xmlReadMemory() failed')
+ return xmlDoc(_obj=ret)
+
+def recoverDoc(cur):
+ """parse an XML in-memory document and build a tree. In the
+ case the document is not Well Formed, a attempt to build a
+ tree is tried anyway """
+ ret = libxml2mod.xmlRecoverDoc(cur)
+ if ret is None:raise treeError('xmlRecoverDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def recoverFile(filename):
+ """parse an XML file and build a tree. Automatic support for
+ ZLIB/Compress compressed document is provided by default if
+ found at compile-time. In the case the document is not Well
+ Formed, it attempts to build a tree anyway """
+ ret = libxml2mod.xmlRecoverFile(filename)
+ if ret is None:raise treeError('xmlRecoverFile() failed')
+ return xmlDoc(_obj=ret)
+
+def recoverMemory(buffer, size):
+ """parse an XML in-memory block and build a tree. In the case
+ the document is not Well Formed, an attempt to build a tree
+ is tried anyway """
+ ret = libxml2mod.xmlRecoverMemory(buffer, size)
+ if ret is None:raise treeError('xmlRecoverMemory() failed')
+ return xmlDoc(_obj=ret)
+
+def substituteEntitiesDefault(val):
+ """Set and return the previous value for default entity
+ support. Initially the parser always keep entity references
+ instead of substituting entity values in the output. This
+ function has to be used to change the default parser
+ behavior SAX::substituteEntities() has to be used for
+ changing that on a file by file basis. """
+ ret = libxml2mod.xmlSubstituteEntitiesDefault(val)
+ return ret
+
+#
+# Functions from module parserInternals
+#
+
+def checkLanguageID(lang):
+ """Checks that the value conforms to the LanguageID
+ production: NOTE: this is somewhat deprecated, those
+ productions were removed from the XML Second edition. [33]
+ LanguageID ::= Langcode ('-' Subcode)* [34] Langcode ::=
+ ISO639Code | IanaCode | UserCode [35] ISO639Code ::=
+ ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= ('i' |
+ 'I') '-' ([a-z] | [A-Z])+ [37] UserCode ::= ('x' | 'X') '-'
+ ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+ The
+ current REC reference the sucessors of RFC 1766, currently
+ 5646 http://www.rfc-editor.org/rfc/rfc5646.txt langtag
+ = language ["-" script] ["-" region] *("-" variant) *("-"
+ extension) ["-" privateuse] language = 2*3ALPHA
+ ; shortest ISO 639 code ["-" extlang] ; sometimes
+ followed by ; extended language subtags / 4ALPHA
+ ; or reserved for future use / 5*8ALPHA ; or
+ registered language subtag extlang = 3ALPHA
+ ; selected ISO 639 codes *2("-" 3ALPHA) ; permanently
+ reserved script = 4ALPHA ; ISO 15924
+ code region = 2ALPHA ; ISO 3166-1 code
+ / 3DIGIT ; UN M.49 code variant =
+ 5*8alphanum ; registered variants / (DIGIT
+ 3alphanum) extension = singleton 1*("-" (2*8alphanum))
+ ; Single alphanumerics ; "x" reserved for private use
+ singleton = DIGIT ; 0 - 9 / %x41-57
+ ; A - W / %x59-5A ; Y - Z / %x61-77
+ ; a - w / %x79-7A ; y - z it sounds right to
+ still allow Irregular i-xxx IANA and user codes too The
+ parser below doesn't try to cope with extension or
+ privateuse that could be added but that's not interoperable
+ anyway """
+ ret = libxml2mod.xmlCheckLanguageID(lang)
+ return ret
+
+def copyChar(len, out, val):
+ """append the char value in the array """
+ ret = libxml2mod.xmlCopyChar(len, out, val)
+ return ret
+
+def copyCharMultiByte(out, val):
+ """append the char value in the array """
+ ret = libxml2mod.xmlCopyCharMultiByte(out, val)
+ return ret
+
+def createEntityParserCtxt(URL, ID, base):
+ """Create a parser context for an external entity Automatic
+ support for ZLIB/Compress compressed document is provided
+ by default if found at compile-time. """
+ ret = libxml2mod.xmlCreateEntityParserCtxt(URL, ID, base)
+ if ret is None:raise parserError('xmlCreateEntityParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def createFileParserCtxt(filename):
+ """Create a parser context for a file content. Automatic
+ support for ZLIB/Compress compressed document is provided
+ by default if found at compile-time. """
+ ret = libxml2mod.xmlCreateFileParserCtxt(filename)
+ if ret is None:raise parserError('xmlCreateFileParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def createMemoryParserCtxt(buffer, size):
+ """Create a parser context for an XML in-memory document. """
+ ret = libxml2mod.xmlCreateMemoryParserCtxt(buffer, size)
+ if ret is None:raise parserError('xmlCreateMemoryParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def createURLParserCtxt(filename, options):
+ """Create a parser context for a file or URL content.
+ Automatic support for ZLIB/Compress compressed document is
+ provided by default if found at compile-time and for file
+ accesses """
+ ret = libxml2mod.xmlCreateURLParserCtxt(filename, options)
+ if ret is None:raise parserError('xmlCreateURLParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlCreateFileParserCtxt(filename, encoding):
+ """Create a parser context for a file content. Automatic
+ support for ZLIB/Compress compressed document is provided
+ by default if found at compile-time. """
+ ret = libxml2mod.htmlCreateFileParserCtxt(filename, encoding)
+ if ret is None:raise parserError('htmlCreateFileParserCtxt() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlInitAutoClose():
+ """Initialize the htmlStartCloseIndex for fast lookup of
+ closing tags names. This is not reentrant. Call
+ xmlInitParser() once before processing in case of use in
+ multithreaded programs. """
+ libxml2mod.htmlInitAutoClose()
+
+def isLetter(c):
+ """Check whether the character is allowed by the production
+ [84] Letter ::= BaseChar | Ideographic """
+ ret = libxml2mod.xmlIsLetter(c)
+ return ret
+
+def namePop(ctxt):
+ """Pops the top element name from the name stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.namePop(ctxt__o)
+ return ret
+
+def namePush(ctxt, value):
+ """Pushes a new element name on top of the name stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.namePush(ctxt__o, value)
+ return ret
+
+def nodePop(ctxt):
+ """Pops the top element node from the node stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.nodePop(ctxt__o)
+ if ret is None:raise treeError('nodePop() failed')
+ return xmlNode(_obj=ret)
+
+def nodePush(ctxt, value):
+ """Pushes a new element node on top of the node stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if value is None: value__o = None
+ else: value__o = value._o
+ ret = libxml2mod.nodePush(ctxt__o, value__o)
+ return ret
+
+#
+# Functions from module python
+#
+
+def SAXParseFile(SAX, URI, recover):
+ """Interface to parse an XML file or resource pointed by an
+ URI to build an event flow to the SAX object """
+ libxml2mod.xmlSAXParseFile(SAX, URI, recover)
+
+def createInputBuffer(file, encoding):
+ """Create a libxml2 input buffer from a Python file """
+ ret = libxml2mod.xmlCreateInputBuffer(file, encoding)
+ if ret is None:raise treeError('xmlCreateInputBuffer() failed')
+ return inputBuffer(_obj=ret)
+
+def createOutputBuffer(file, encoding):
+ """Create a libxml2 output buffer from a Python file """
+ ret = libxml2mod.xmlCreateOutputBuffer(file, encoding)
+ if ret is None:raise treeError('xmlCreateOutputBuffer() failed')
+ return outputBuffer(_obj=ret)
+
+def createPushParser(SAX, chunk, size, URI):
+ """Create a progressive XML parser context to build either an
+ event flow if the SAX object is not None, or a DOM tree
+ otherwise. """
+ ret = libxml2mod.xmlCreatePushParser(SAX, chunk, size, URI)
+ if ret is None:raise parserError('xmlCreatePushParser() failed')
+ return parserCtxt(_obj=ret)
+
+def debugMemory(activate):
+ """Switch on the generation of line number for elements nodes.
+ Also returns the number of bytes allocated and not freed by
+ libxml2 since memory debugging was switched on. """
+ ret = libxml2mod.xmlDebugMemory(activate)
+ return ret
+
+def dumpMemory():
+ """dump the memory allocated in the file .memdump """
+ libxml2mod.xmlDumpMemory()
+
+def htmlCreatePushParser(SAX, chunk, size, URI):
+ """Create a progressive HTML parser context to build either an
+ event flow if the SAX object is not None, or a DOM tree
+ otherwise. """
+ ret = libxml2mod.htmlCreatePushParser(SAX, chunk, size, URI)
+ if ret is None:raise parserError('htmlCreatePushParser() failed')
+ return parserCtxt(_obj=ret)
+
+def htmlSAXParseFile(SAX, URI, encoding):
+ """Interface to parse an HTML file or resource pointed by an
+ URI to build an event flow to the SAX object """
+ libxml2mod.htmlSAXParseFile(SAX, URI, encoding)
+
+def memoryUsed():
+ """Returns the total amount of memory allocated by libxml2 """
+ ret = libxml2mod.xmlMemoryUsed()
+ return ret
+
+def newNode(name):
+ """Create a new Node """
+ ret = libxml2mod.xmlNewNode(name)
+ if ret is None:raise treeError('xmlNewNode() failed')
+ return xmlNode(_obj=ret)
+
+def pythonCleanupParser():
+ """Cleanup function for the XML library. It tries to reclaim
+ all parsing related global memory allocated for the library
+ processing. It doesn't deallocate any document related
+ memory. Calling this function should not prevent reusing
+ the library but one should call xmlCleanupParser() only
+ when the process has finished using the library or XML
+ document built with it. """
+ libxml2mod.xmlPythonCleanupParser()
+
+def setEntityLoader(resolver):
+ """Set the entity resolver as a python function """
+ ret = libxml2mod.xmlSetEntityLoader(resolver)
+ return ret
+
+#
+# Functions from module relaxng
+#
+
+def relaxNGCleanupTypes():
+ """Cleanup the default Schemas type library associated to
+ RelaxNG """
+ libxml2mod.xmlRelaxNGCleanupTypes()
+
+def relaxNGInitTypes():
+ """Initilize the default type libraries. """
+ ret = libxml2mod.xmlRelaxNGInitTypes()
+ return ret
+
+def relaxNGNewMemParserCtxt(buffer, size):
+ """Create an XML RelaxNGs parse context for that memory buffer
+ expected to contain an XML RelaxNGs file. """
+ ret = libxml2mod.xmlRelaxNGNewMemParserCtxt(buffer, size)
+ if ret is None:raise parserError('xmlRelaxNGNewMemParserCtxt() failed')
+ return relaxNgParserCtxt(_obj=ret)
+
+def relaxNGNewParserCtxt(URL):
+ """Create an XML RelaxNGs parse context for that file/resource
+ expected to contain an XML RelaxNGs file. """
+ ret = libxml2mod.xmlRelaxNGNewParserCtxt(URL)
+ if ret is None:raise parserError('xmlRelaxNGNewParserCtxt() failed')
+ return relaxNgParserCtxt(_obj=ret)
+
+#
+# Functions from module tree
+#
+
+def buildQName(ncname, prefix, memory, len):
+ """Builds the QName @prefix:@ncname in @memory if there is
+ enough space and prefix is not None nor empty, otherwise
+ allocate a new string. If prefix is None or empty it
+ returns ncname. """
+ ret = libxml2mod.xmlBuildQName(ncname, prefix, memory, len)
+ return ret
+
+def compressMode():
+ """get the default compression mode used, ZLIB based. """
+ ret = libxml2mod.xmlGetCompressMode()
+ return ret
+
+def isXHTML(systemID, publicID):
+ """Try to find if the document correspond to an XHTML DTD """
+ ret = libxml2mod.xmlIsXHTML(systemID, publicID)
+ return ret
+
+def newComment(content):
+ """Creation of a new node containing a comment. """
+ ret = libxml2mod.xmlNewComment(content)
+ if ret is None:raise treeError('xmlNewComment() failed')
+ return xmlNode(_obj=ret)
+
+def newDoc(version):
+ """Creates a new XML document """
+ ret = libxml2mod.xmlNewDoc(version)
+ if ret is None:raise treeError('xmlNewDoc() failed')
+ return xmlDoc(_obj=ret)
+
+def newPI(name, content):
+ """Creation of a processing instruction element. Use
+ xmlDocNewPI preferably to get string interning """
+ ret = libxml2mod.xmlNewPI(name, content)
+ if ret is None:raise treeError('xmlNewPI() failed')
+ return xmlNode(_obj=ret)
+
+def newText(content):
+ """Creation of a new text node. """
+ ret = libxml2mod.xmlNewText(content)
+ if ret is None:raise treeError('xmlNewText() failed')
+ return xmlNode(_obj=ret)
+
+def newTextLen(content, len):
+ """Creation of a new text node with an extra parameter for the
+ content's length """
+ ret = libxml2mod.xmlNewTextLen(content, len)
+ if ret is None:raise treeError('xmlNewTextLen() failed')
+ return xmlNode(_obj=ret)
+
+def setCompressMode(mode):
+ """set the default compression mode used, ZLIB based Correct
+ values: 0 (uncompressed) to 9 (max compression) """
+ libxml2mod.xmlSetCompressMode(mode)
+
+def validateNCName(value, space):
+ """Check that a value conforms to the lexical space of NCName """
+ ret = libxml2mod.xmlValidateNCName(value, space)
+ return ret
+
+def validateNMToken(value, space):
+ """Check that a value conforms to the lexical space of NMToken """
+ ret = libxml2mod.xmlValidateNMToken(value, space)
+ return ret
+
+def validateName(value, space):
+ """Check that a value conforms to the lexical space of Name """
+ ret = libxml2mod.xmlValidateName(value, space)
+ return ret
+
+def validateQName(value, space):
+ """Check that a value conforms to the lexical space of QName """
+ ret = libxml2mod.xmlValidateQName(value, space)
+ return ret
+
+#
+# Functions from module uri
+#
+
+def URIEscape(str):
+ """Escaping routine, does not do validity checks ! It will try
+ to escape the chars needing this, but this is heuristic
+ based it's impossible to be sure. """
+ ret = libxml2mod.xmlURIEscape(str)
+ return ret
+
+def URIEscapeStr(str, list):
+ """This routine escapes a string to hex, ignoring reserved
+ characters (a-z) and the characters in the exception list. """
+ ret = libxml2mod.xmlURIEscapeStr(str, list)
+ return ret
+
+def URIUnescapeString(str, len, target):
+ """Unescaping routine, but does not check that the string is
+ an URI. The output is a direct unsigned char translation of
+ %XX values (no encoding) Note that the length of the result
+ can only be smaller or same size as the input string. """
+ ret = libxml2mod.xmlURIUnescapeString(str, len, target)
+ return ret
+
+def buildRelativeURI(URI, base):
+ """Expresses the URI of the reference in terms relative to the
+ base. Some examples of this operation include: base =
+ "http://site1.com/docs/book1.html" URI input
+ URI returned docs/pic1.gif pic1.gif
+ docs/img/pic1.gif img/pic1.gif img/pic1.gif
+ ../img/pic1.gif http://site1.com/docs/pic1.gif pic1.gif
+ http://site2.com/docs/pic1.gif
+ http://site2.com/docs/pic1.gif base = "docs/book1.html"
+ URI input URI returned docs/pic1.gif
+ pic1.gif docs/img/pic1.gif img/pic1.gif
+ img/pic1.gif ../img/pic1.gif
+ http://site1.com/docs/pic1.gif
+ http://site1.com/docs/pic1.gif Note: if the URI reference
+ is really wierd or complicated, it may be worthwhile to
+ first convert it into a "nice" one by calling xmlBuildURI
+ (using 'base') before calling this routine, since this
+ routine (for reasonable efficiency) assumes URI has already
+ been through some validation. """
+ ret = libxml2mod.xmlBuildRelativeURI(URI, base)
+ return ret
+
+def buildURI(URI, base):
+ """Computes he final URI of the reference done by checking
+ that the given URI is valid, and building the final URI
+ using the base URI. This is processed according to section
+ 5.2 of the RFC 2396 5.2. Resolving Relative References to
+ Absolute Form """
+ ret = libxml2mod.xmlBuildURI(URI, base)
+ return ret
+
+def canonicPath(path):
+ """Constructs a canonic path from the specified path. """
+ ret = libxml2mod.xmlCanonicPath(path)
+ return ret
+
+def createURI():
+ """Simply creates an empty xmlURI """
+ ret = libxml2mod.xmlCreateURI()
+ if ret is None:raise uriError('xmlCreateURI() failed')
+ return URI(_obj=ret)
+
+def normalizeURIPath(path):
+ """Applies the 5 normalization steps to a path string--that
+ is, RFC 2396 Section 5.2, steps 6.c through 6.g.
+ Normalization occurs directly on the string, no new
+ allocation is done """
+ ret = libxml2mod.xmlNormalizeURIPath(path)
+ return ret
+
+def parseURI(str):
+ """Parse an URI based on RFC 3986 URI-reference = [
+ absoluteURI | relativeURI ] [ "#" fragment ] """
+ ret = libxml2mod.xmlParseURI(str)
+ if ret is None:raise uriError('xmlParseURI() failed')
+ return URI(_obj=ret)
+
+def parseURIRaw(str, raw):
+ """Parse an URI but allows to keep intact the original
+ fragments. URI-reference = URI / relative-ref """
+ ret = libxml2mod.xmlParseURIRaw(str, raw)
+ if ret is None:raise uriError('xmlParseURIRaw() failed')
+ return URI(_obj=ret)
+
+def pathToURI(path):
+ """Constructs an URI expressing the existing path """
+ ret = libxml2mod.xmlPathToURI(path)
+ return ret
+
+#
+# Functions from module valid
+#
+
+def newValidCtxt():
+ """Allocate a validation context structure. """
+ ret = libxml2mod.xmlNewValidCtxt()
+ if ret is None:raise treeError('xmlNewValidCtxt() failed')
+ return ValidCtxt(_obj=ret)
+
+def validateNameValue(value):
+ """Validate that the given value match Name production """
+ ret = libxml2mod.xmlValidateNameValue(value)
+ return ret
+
+def validateNamesValue(value):
+ """Validate that the given value match Names production """
+ ret = libxml2mod.xmlValidateNamesValue(value)
+ return ret
+
+def validateNmtokenValue(value):
+ """Validate that the given value match Nmtoken production [
+ VC: Name Token ] """
+ ret = libxml2mod.xmlValidateNmtokenValue(value)
+ return ret
+
+def validateNmtokensValue(value):
+ """Validate that the given value match Nmtokens production [
+ VC: Name Token ] """
+ ret = libxml2mod.xmlValidateNmtokensValue(value)
+ return ret
+
+#
+# Functions from module xmlIO
+#
+
+def checkFilename(path):
+ """function checks to see if @path is a valid source (file,
+ socket...) for XML. if stat is not available on the target
+ machine, """
+ ret = libxml2mod.xmlCheckFilename(path)
+ return ret
+
+def cleanupInputCallbacks():
+ """clears the entire input callback table. this includes the
+ compiled-in I/O. """
+ libxml2mod.xmlCleanupInputCallbacks()
+
+def cleanupOutputCallbacks():
+ """clears the entire output callback table. this includes the
+ compiled-in I/O callbacks. """
+ libxml2mod.xmlCleanupOutputCallbacks()
+
+def fileMatch(filename):
+ """input from FILE * """
+ ret = libxml2mod.xmlFileMatch(filename)
+ return ret
+
+def iOFTPMatch(filename):
+ """check if the URI matches an FTP one """
+ ret = libxml2mod.xmlIOFTPMatch(filename)
+ return ret
+
+def iOHTTPMatch(filename):
+ """check if the URI matches an HTTP one """
+ ret = libxml2mod.xmlIOHTTPMatch(filename)
+ return ret
+
+def normalizeWindowsPath(path):
+ """This function is obsolete. Please see xmlURIFromPath in
+ uri.c for a better solution. """
+ ret = libxml2mod.xmlNormalizeWindowsPath(path)
+ return ret
+
+def parserGetDirectory(filename):
+ """lookup the directory for that file """
+ ret = libxml2mod.xmlParserGetDirectory(filename)
+ return ret
+
+def registerDefaultInputCallbacks():
+ """Registers the default compiled-in I/O handlers. """
+ libxml2mod.xmlRegisterDefaultInputCallbacks()
+
+def registerDefaultOutputCallbacks():
+ """Registers the default compiled-in I/O handlers. """
+ libxml2mod.xmlRegisterDefaultOutputCallbacks()
+
+def registerHTTPPostCallbacks():
+ """By default, libxml submits HTTP output requests using the
+ "PUT" method. Calling this method changes the HTTP output
+ method to use the "POST" method instead. """
+ libxml2mod.xmlRegisterHTTPPostCallbacks()
+
+#
+# Functions from module xmlerror
+#
+
+def lastError():
+ """Get the last global error registered. This is per thread if
+ compiled with thread support. """
+ ret = libxml2mod.xmlGetLastError()
+ if ret is None:raise treeError('xmlGetLastError() failed')
+ return Error(_obj=ret)
+
+def resetLastError():
+ """Cleanup the last global error registered. For parsing error
+ this does not change the well-formedness result. """
+ libxml2mod.xmlResetLastError()
+
+#
+# Functions from module xmlreader
+#
+
+def newTextReaderFilename(URI):
+ """Create an xmlTextReader structure fed with the resource at
+ @URI """
+ ret = libxml2mod.xmlNewTextReaderFilename(URI)
+ if ret is None:raise treeError('xmlNewTextReaderFilename() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForDoc(cur, URL, encoding, options):
+ """Create an xmltextReader for an XML in-memory document. The
+ parsing flags @options are a combination of xmlParserOption. """
+ ret = libxml2mod.xmlReaderForDoc(cur, URL, encoding, options)
+ if ret is None:raise treeError('xmlReaderForDoc() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForFd(fd, URL, encoding, options):
+ """Create an xmltextReader for an XML from a file descriptor.
+ The parsing flags @options are a combination of
+ xmlParserOption. NOTE that the file descriptor will not be
+ closed when the reader is closed or reset. """
+ ret = libxml2mod.xmlReaderForFd(fd, URL, encoding, options)
+ if ret is None:raise treeError('xmlReaderForFd() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForFile(filename, encoding, options):
+ """parse an XML file from the filesystem or the network. The
+ parsing flags @options are a combination of xmlParserOption. """
+ ret = libxml2mod.xmlReaderForFile(filename, encoding, options)
+ if ret is None:raise treeError('xmlReaderForFile() failed')
+ return xmlTextReader(_obj=ret)
+
+def readerForMemory(buffer, size, URL, encoding, options):
+ """Create an xmltextReader for an XML in-memory document. The
+ parsing flags @options are a combination of xmlParserOption. """
+ ret = libxml2mod.xmlReaderForMemory(buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('xmlReaderForMemory() failed')
+ return xmlTextReader(_obj=ret)
+
+#
+# Functions from module xmlregexp
+#
+
+def regexpCompile(regexp):
+ """Parses a regular expression conforming to XML Schemas Part
+ 2 Datatype Appendix F and builds an automata suitable for
+ testing strings against that regular expression """
+ ret = libxml2mod.xmlRegexpCompile(regexp)
+ if ret is None:raise treeError('xmlRegexpCompile() failed')
+ return xmlReg(_obj=ret)
+
+#
+# Functions from module xmlschemas
+#
+
+def schemaNewMemParserCtxt(buffer, size):
+ """Create an XML Schemas parse context for that memory buffer
+ expected to contain an XML Schemas file. """
+ ret = libxml2mod.xmlSchemaNewMemParserCtxt(buffer, size)
+ if ret is None:raise parserError('xmlSchemaNewMemParserCtxt() failed')
+ return SchemaParserCtxt(_obj=ret)
+
+def schemaNewParserCtxt(URL):
+ """Create an XML Schemas parse context for that file/resource
+ expected to contain an XML Schemas file. """
+ ret = libxml2mod.xmlSchemaNewParserCtxt(URL)
+ if ret is None:raise parserError('xmlSchemaNewParserCtxt() failed')
+ return SchemaParserCtxt(_obj=ret)
+
+#
+# Functions from module xmlschemastypes
+#
+
+def schemaCleanupTypes():
+ """Cleanup the default XML Schemas type library """
+ libxml2mod.xmlSchemaCleanupTypes()
+
+def schemaCollapseString(value):
+ """Removes and normalize white spaces in the string """
+ ret = libxml2mod.xmlSchemaCollapseString(value)
+ return ret
+
+def schemaInitTypes():
+ """Initialize the default XML Schemas type library """
+ libxml2mod.xmlSchemaInitTypes()
+
+def schemaWhiteSpaceReplace(value):
+ """Replaces 0xd, 0x9 and 0xa with a space. """
+ ret = libxml2mod.xmlSchemaWhiteSpaceReplace(value)
+ return ret
+
+#
+# Functions from module xmlstring
+#
+
+def UTF8Charcmp(utf1, utf2):
+ """compares the two UCS4 values """
+ ret = libxml2mod.xmlUTF8Charcmp(utf1, utf2)
+ return ret
+
+def UTF8Size(utf):
+ """calculates the internal size of a UTF8 character """
+ ret = libxml2mod.xmlUTF8Size(utf)
+ return ret
+
+def UTF8Strlen(utf):
+ """compute the length of an UTF8 string, it doesn't do a full
+ UTF8 checking of the content of the string. """
+ ret = libxml2mod.xmlUTF8Strlen(utf)
+ return ret
+
+def UTF8Strloc(utf, utfchar):
+ """a function to provide the relative location of a UTF8 char """
+ ret = libxml2mod.xmlUTF8Strloc(utf, utfchar)
+ return ret
+
+def UTF8Strndup(utf, len):
+ """a strndup for array of UTF8's """
+ ret = libxml2mod.xmlUTF8Strndup(utf, len)
+ return ret
+
+def UTF8Strpos(utf, pos):
+ """a function to provide the equivalent of fetching a
+ character from a string array """
+ ret = libxml2mod.xmlUTF8Strpos(utf, pos)
+ return ret
+
+def UTF8Strsize(utf, len):
+ """storage size of an UTF8 string the behaviour is not
+ garanteed if the input string is not UTF-8 """
+ ret = libxml2mod.xmlUTF8Strsize(utf, len)
+ return ret
+
+def UTF8Strsub(utf, start, len):
+ """Create a substring from a given UTF-8 string Note:
+ positions are given in units of UTF-8 chars """
+ ret = libxml2mod.xmlUTF8Strsub(utf, start, len)
+ return ret
+
+def checkUTF8(utf):
+ """Checks @utf for being valid UTF-8. @utf is assumed to be
+ null-terminated. This function is not super-strict, as it
+ will allow longer UTF-8 sequences than necessary. Note that
+ Java is capable of producing these sequences if provoked.
+ Also note, this routine checks for the 4-byte maximum size,
+ but does not check for 0x10ffff maximum value. """
+ ret = libxml2mod.xmlCheckUTF8(utf)
+ return ret
+
+#
+# Functions from module xmlunicode
+#
+
+def uCSIsAegeanNumbers(code):
+ """Check whether the character is part of AegeanNumbers UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsAegeanNumbers(code)
+ return ret
+
+def uCSIsAlphabeticPresentationForms(code):
+ """Check whether the character is part of
+ AlphabeticPresentationForms UCS Block """
+ ret = libxml2mod.xmlUCSIsAlphabeticPresentationForms(code)
+ return ret
+
+def uCSIsArabic(code):
+ """Check whether the character is part of Arabic UCS Block """
+ ret = libxml2mod.xmlUCSIsArabic(code)
+ return ret
+
+def uCSIsArabicPresentationFormsA(code):
+ """Check whether the character is part of
+ ArabicPresentationForms-A UCS Block """
+ ret = libxml2mod.xmlUCSIsArabicPresentationFormsA(code)
+ return ret
+
+def uCSIsArabicPresentationFormsB(code):
+ """Check whether the character is part of
+ ArabicPresentationForms-B UCS Block """
+ ret = libxml2mod.xmlUCSIsArabicPresentationFormsB(code)
+ return ret
+
+def uCSIsArmenian(code):
+ """Check whether the character is part of Armenian UCS Block """
+ ret = libxml2mod.xmlUCSIsArmenian(code)
+ return ret
+
+def uCSIsArrows(code):
+ """Check whether the character is part of Arrows UCS Block """
+ ret = libxml2mod.xmlUCSIsArrows(code)
+ return ret
+
+def uCSIsBasicLatin(code):
+ """Check whether the character is part of BasicLatin UCS Block """
+ ret = libxml2mod.xmlUCSIsBasicLatin(code)
+ return ret
+
+def uCSIsBengali(code):
+ """Check whether the character is part of Bengali UCS Block """
+ ret = libxml2mod.xmlUCSIsBengali(code)
+ return ret
+
+def uCSIsBlock(code, block):
+ """Check whether the character is part of the UCS Block """
+ ret = libxml2mod.xmlUCSIsBlock(code, block)
+ return ret
+
+def uCSIsBlockElements(code):
+ """Check whether the character is part of BlockElements UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsBlockElements(code)
+ return ret
+
+def uCSIsBopomofo(code):
+ """Check whether the character is part of Bopomofo UCS Block """
+ ret = libxml2mod.xmlUCSIsBopomofo(code)
+ return ret
+
+def uCSIsBopomofoExtended(code):
+ """Check whether the character is part of BopomofoExtended UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsBopomofoExtended(code)
+ return ret
+
+def uCSIsBoxDrawing(code):
+ """Check whether the character is part of BoxDrawing UCS Block """
+ ret = libxml2mod.xmlUCSIsBoxDrawing(code)
+ return ret
+
+def uCSIsBraillePatterns(code):
+ """Check whether the character is part of BraillePatterns UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsBraillePatterns(code)
+ return ret
+
+def uCSIsBuhid(code):
+ """Check whether the character is part of Buhid UCS Block """
+ ret = libxml2mod.xmlUCSIsBuhid(code)
+ return ret
+
+def uCSIsByzantineMusicalSymbols(code):
+ """Check whether the character is part of
+ ByzantineMusicalSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsByzantineMusicalSymbols(code)
+ return ret
+
+def uCSIsCJKCompatibility(code):
+ """Check whether the character is part of CJKCompatibility UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibility(code)
+ return ret
+
+def uCSIsCJKCompatibilityForms(code):
+ """Check whether the character is part of
+ CJKCompatibilityForms UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibilityForms(code)
+ return ret
+
+def uCSIsCJKCompatibilityIdeographs(code):
+ """Check whether the character is part of
+ CJKCompatibilityIdeographs UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibilityIdeographs(code)
+ return ret
+
+def uCSIsCJKCompatibilityIdeographsSupplement(code):
+ """Check whether the character is part of
+ CJKCompatibilityIdeographsSupplement UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKCompatibilityIdeographsSupplement(code)
+ return ret
+
+def uCSIsCJKRadicalsSupplement(code):
+ """Check whether the character is part of
+ CJKRadicalsSupplement UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKRadicalsSupplement(code)
+ return ret
+
+def uCSIsCJKSymbolsandPunctuation(code):
+ """Check whether the character is part of
+ CJKSymbolsandPunctuation UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKSymbolsandPunctuation(code)
+ return ret
+
+def uCSIsCJKUnifiedIdeographs(code):
+ """Check whether the character is part of CJKUnifiedIdeographs
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKUnifiedIdeographs(code)
+ return ret
+
+def uCSIsCJKUnifiedIdeographsExtensionA(code):
+ """Check whether the character is part of
+ CJKUnifiedIdeographsExtensionA UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKUnifiedIdeographsExtensionA(code)
+ return ret
+
+def uCSIsCJKUnifiedIdeographsExtensionB(code):
+ """Check whether the character is part of
+ CJKUnifiedIdeographsExtensionB UCS Block """
+ ret = libxml2mod.xmlUCSIsCJKUnifiedIdeographsExtensionB(code)
+ return ret
+
+def uCSIsCat(code, cat):
+ """Check whether the character is part of the UCS Category """
+ ret = libxml2mod.xmlUCSIsCat(code, cat)
+ return ret
+
+def uCSIsCatC(code):
+ """Check whether the character is part of C UCS Category """
+ ret = libxml2mod.xmlUCSIsCatC(code)
+ return ret
+
+def uCSIsCatCc(code):
+ """Check whether the character is part of Cc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCc(code)
+ return ret
+
+def uCSIsCatCf(code):
+ """Check whether the character is part of Cf UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCf(code)
+ return ret
+
+def uCSIsCatCo(code):
+ """Check whether the character is part of Co UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCo(code)
+ return ret
+
+def uCSIsCatCs(code):
+ """Check whether the character is part of Cs UCS Category """
+ ret = libxml2mod.xmlUCSIsCatCs(code)
+ return ret
+
+def uCSIsCatL(code):
+ """Check whether the character is part of L UCS Category """
+ ret = libxml2mod.xmlUCSIsCatL(code)
+ return ret
+
+def uCSIsCatLl(code):
+ """Check whether the character is part of Ll UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLl(code)
+ return ret
+
+def uCSIsCatLm(code):
+ """Check whether the character is part of Lm UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLm(code)
+ return ret
+
+def uCSIsCatLo(code):
+ """Check whether the character is part of Lo UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLo(code)
+ return ret
+
+def uCSIsCatLt(code):
+ """Check whether the character is part of Lt UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLt(code)
+ return ret
+
+def uCSIsCatLu(code):
+ """Check whether the character is part of Lu UCS Category """
+ ret = libxml2mod.xmlUCSIsCatLu(code)
+ return ret
+
+def uCSIsCatM(code):
+ """Check whether the character is part of M UCS Category """
+ ret = libxml2mod.xmlUCSIsCatM(code)
+ return ret
+
+def uCSIsCatMc(code):
+ """Check whether the character is part of Mc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatMc(code)
+ return ret
+
+def uCSIsCatMe(code):
+ """Check whether the character is part of Me UCS Category """
+ ret = libxml2mod.xmlUCSIsCatMe(code)
+ return ret
+
+def uCSIsCatMn(code):
+ """Check whether the character is part of Mn UCS Category """
+ ret = libxml2mod.xmlUCSIsCatMn(code)
+ return ret
+
+def uCSIsCatN(code):
+ """Check whether the character is part of N UCS Category """
+ ret = libxml2mod.xmlUCSIsCatN(code)
+ return ret
+
+def uCSIsCatNd(code):
+ """Check whether the character is part of Nd UCS Category """
+ ret = libxml2mod.xmlUCSIsCatNd(code)
+ return ret
+
+def uCSIsCatNl(code):
+ """Check whether the character is part of Nl UCS Category """
+ ret = libxml2mod.xmlUCSIsCatNl(code)
+ return ret
+
+def uCSIsCatNo(code):
+ """Check whether the character is part of No UCS Category """
+ ret = libxml2mod.xmlUCSIsCatNo(code)
+ return ret
+
+def uCSIsCatP(code):
+ """Check whether the character is part of P UCS Category """
+ ret = libxml2mod.xmlUCSIsCatP(code)
+ return ret
+
+def uCSIsCatPc(code):
+ """Check whether the character is part of Pc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPc(code)
+ return ret
+
+def uCSIsCatPd(code):
+ """Check whether the character is part of Pd UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPd(code)
+ return ret
+
+def uCSIsCatPe(code):
+ """Check whether the character is part of Pe UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPe(code)
+ return ret
+
+def uCSIsCatPf(code):
+ """Check whether the character is part of Pf UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPf(code)
+ return ret
+
+def uCSIsCatPi(code):
+ """Check whether the character is part of Pi UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPi(code)
+ return ret
+
+def uCSIsCatPo(code):
+ """Check whether the character is part of Po UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPo(code)
+ return ret
+
+def uCSIsCatPs(code):
+ """Check whether the character is part of Ps UCS Category """
+ ret = libxml2mod.xmlUCSIsCatPs(code)
+ return ret
+
+def uCSIsCatS(code):
+ """Check whether the character is part of S UCS Category """
+ ret = libxml2mod.xmlUCSIsCatS(code)
+ return ret
+
+def uCSIsCatSc(code):
+ """Check whether the character is part of Sc UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSc(code)
+ return ret
+
+def uCSIsCatSk(code):
+ """Check whether the character is part of Sk UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSk(code)
+ return ret
+
+def uCSIsCatSm(code):
+ """Check whether the character is part of Sm UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSm(code)
+ return ret
+
+def uCSIsCatSo(code):
+ """Check whether the character is part of So UCS Category """
+ ret = libxml2mod.xmlUCSIsCatSo(code)
+ return ret
+
+def uCSIsCatZ(code):
+ """Check whether the character is part of Z UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZ(code)
+ return ret
+
+def uCSIsCatZl(code):
+ """Check whether the character is part of Zl UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZl(code)
+ return ret
+
+def uCSIsCatZp(code):
+ """Check whether the character is part of Zp UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZp(code)
+ return ret
+
+def uCSIsCatZs(code):
+ """Check whether the character is part of Zs UCS Category """
+ ret = libxml2mod.xmlUCSIsCatZs(code)
+ return ret
+
+def uCSIsCherokee(code):
+ """Check whether the character is part of Cherokee UCS Block """
+ ret = libxml2mod.xmlUCSIsCherokee(code)
+ return ret
+
+def uCSIsCombiningDiacriticalMarks(code):
+ """Check whether the character is part of
+ CombiningDiacriticalMarks UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningDiacriticalMarks(code)
+ return ret
+
+def uCSIsCombiningDiacriticalMarksforSymbols(code):
+ """Check whether the character is part of
+ CombiningDiacriticalMarksforSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningDiacriticalMarksforSymbols(code)
+ return ret
+
+def uCSIsCombiningHalfMarks(code):
+ """Check whether the character is part of CombiningHalfMarks
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningHalfMarks(code)
+ return ret
+
+def uCSIsCombiningMarksforSymbols(code):
+ """Check whether the character is part of
+ CombiningMarksforSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsCombiningMarksforSymbols(code)
+ return ret
+
+def uCSIsControlPictures(code):
+ """Check whether the character is part of ControlPictures UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsControlPictures(code)
+ return ret
+
+def uCSIsCurrencySymbols(code):
+ """Check whether the character is part of CurrencySymbols UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsCurrencySymbols(code)
+ return ret
+
+def uCSIsCypriotSyllabary(code):
+ """Check whether the character is part of CypriotSyllabary UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsCypriotSyllabary(code)
+ return ret
+
+def uCSIsCyrillic(code):
+ """Check whether the character is part of Cyrillic UCS Block """
+ ret = libxml2mod.xmlUCSIsCyrillic(code)
+ return ret
+
+def uCSIsCyrillicSupplement(code):
+ """Check whether the character is part of CyrillicSupplement
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsCyrillicSupplement(code)
+ return ret
+
+def uCSIsDeseret(code):
+ """Check whether the character is part of Deseret UCS Block """
+ ret = libxml2mod.xmlUCSIsDeseret(code)
+ return ret
+
+def uCSIsDevanagari(code):
+ """Check whether the character is part of Devanagari UCS Block """
+ ret = libxml2mod.xmlUCSIsDevanagari(code)
+ return ret
+
+def uCSIsDingbats(code):
+ """Check whether the character is part of Dingbats UCS Block """
+ ret = libxml2mod.xmlUCSIsDingbats(code)
+ return ret
+
+def uCSIsEnclosedAlphanumerics(code):
+ """Check whether the character is part of
+ EnclosedAlphanumerics UCS Block """
+ ret = libxml2mod.xmlUCSIsEnclosedAlphanumerics(code)
+ return ret
+
+def uCSIsEnclosedCJKLettersandMonths(code):
+ """Check whether the character is part of
+ EnclosedCJKLettersandMonths UCS Block """
+ ret = libxml2mod.xmlUCSIsEnclosedCJKLettersandMonths(code)
+ return ret
+
+def uCSIsEthiopic(code):
+ """Check whether the character is part of Ethiopic UCS Block """
+ ret = libxml2mod.xmlUCSIsEthiopic(code)
+ return ret
+
+def uCSIsGeneralPunctuation(code):
+ """Check whether the character is part of GeneralPunctuation
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsGeneralPunctuation(code)
+ return ret
+
+def uCSIsGeometricShapes(code):
+ """Check whether the character is part of GeometricShapes UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsGeometricShapes(code)
+ return ret
+
+def uCSIsGeorgian(code):
+ """Check whether the character is part of Georgian UCS Block """
+ ret = libxml2mod.xmlUCSIsGeorgian(code)
+ return ret
+
+def uCSIsGothic(code):
+ """Check whether the character is part of Gothic UCS Block """
+ ret = libxml2mod.xmlUCSIsGothic(code)
+ return ret
+
+def uCSIsGreek(code):
+ """Check whether the character is part of Greek UCS Block """
+ ret = libxml2mod.xmlUCSIsGreek(code)
+ return ret
+
+def uCSIsGreekExtended(code):
+ """Check whether the character is part of GreekExtended UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsGreekExtended(code)
+ return ret
+
+def uCSIsGreekandCoptic(code):
+ """Check whether the character is part of GreekandCoptic UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsGreekandCoptic(code)
+ return ret
+
+def uCSIsGujarati(code):
+ """Check whether the character is part of Gujarati UCS Block """
+ ret = libxml2mod.xmlUCSIsGujarati(code)
+ return ret
+
+def uCSIsGurmukhi(code):
+ """Check whether the character is part of Gurmukhi UCS Block """
+ ret = libxml2mod.xmlUCSIsGurmukhi(code)
+ return ret
+
+def uCSIsHalfwidthandFullwidthForms(code):
+ """Check whether the character is part of
+ HalfwidthandFullwidthForms UCS Block """
+ ret = libxml2mod.xmlUCSIsHalfwidthandFullwidthForms(code)
+ return ret
+
+def uCSIsHangulCompatibilityJamo(code):
+ """Check whether the character is part of
+ HangulCompatibilityJamo UCS Block """
+ ret = libxml2mod.xmlUCSIsHangulCompatibilityJamo(code)
+ return ret
+
+def uCSIsHangulJamo(code):
+ """Check whether the character is part of HangulJamo UCS Block """
+ ret = libxml2mod.xmlUCSIsHangulJamo(code)
+ return ret
+
+def uCSIsHangulSyllables(code):
+ """Check whether the character is part of HangulSyllables UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsHangulSyllables(code)
+ return ret
+
+def uCSIsHanunoo(code):
+ """Check whether the character is part of Hanunoo UCS Block """
+ ret = libxml2mod.xmlUCSIsHanunoo(code)
+ return ret
+
+def uCSIsHebrew(code):
+ """Check whether the character is part of Hebrew UCS Block """
+ ret = libxml2mod.xmlUCSIsHebrew(code)
+ return ret
+
+def uCSIsHighPrivateUseSurrogates(code):
+ """Check whether the character is part of
+ HighPrivateUseSurrogates UCS Block """
+ ret = libxml2mod.xmlUCSIsHighPrivateUseSurrogates(code)
+ return ret
+
+def uCSIsHighSurrogates(code):
+ """Check whether the character is part of HighSurrogates UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsHighSurrogates(code)
+ return ret
+
+def uCSIsHiragana(code):
+ """Check whether the character is part of Hiragana UCS Block """
+ ret = libxml2mod.xmlUCSIsHiragana(code)
+ return ret
+
+def uCSIsIPAExtensions(code):
+ """Check whether the character is part of IPAExtensions UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsIPAExtensions(code)
+ return ret
+
+def uCSIsIdeographicDescriptionCharacters(code):
+ """Check whether the character is part of
+ IdeographicDescriptionCharacters UCS Block """
+ ret = libxml2mod.xmlUCSIsIdeographicDescriptionCharacters(code)
+ return ret
+
+def uCSIsKanbun(code):
+ """Check whether the character is part of Kanbun UCS Block """
+ ret = libxml2mod.xmlUCSIsKanbun(code)
+ return ret
+
+def uCSIsKangxiRadicals(code):
+ """Check whether the character is part of KangxiRadicals UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsKangxiRadicals(code)
+ return ret
+
+def uCSIsKannada(code):
+ """Check whether the character is part of Kannada UCS Block """
+ ret = libxml2mod.xmlUCSIsKannada(code)
+ return ret
+
+def uCSIsKatakana(code):
+ """Check whether the character is part of Katakana UCS Block """
+ ret = libxml2mod.xmlUCSIsKatakana(code)
+ return ret
+
+def uCSIsKatakanaPhoneticExtensions(code):
+ """Check whether the character is part of
+ KatakanaPhoneticExtensions UCS Block """
+ ret = libxml2mod.xmlUCSIsKatakanaPhoneticExtensions(code)
+ return ret
+
+def uCSIsKhmer(code):
+ """Check whether the character is part of Khmer UCS Block """
+ ret = libxml2mod.xmlUCSIsKhmer(code)
+ return ret
+
+def uCSIsKhmerSymbols(code):
+ """Check whether the character is part of KhmerSymbols UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsKhmerSymbols(code)
+ return ret
+
+def uCSIsLao(code):
+ """Check whether the character is part of Lao UCS Block """
+ ret = libxml2mod.xmlUCSIsLao(code)
+ return ret
+
+def uCSIsLatin1Supplement(code):
+ """Check whether the character is part of Latin-1Supplement
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsLatin1Supplement(code)
+ return ret
+
+def uCSIsLatinExtendedA(code):
+ """Check whether the character is part of LatinExtended-A UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLatinExtendedA(code)
+ return ret
+
+def uCSIsLatinExtendedAdditional(code):
+ """Check whether the character is part of
+ LatinExtendedAdditional UCS Block """
+ ret = libxml2mod.xmlUCSIsLatinExtendedAdditional(code)
+ return ret
+
+def uCSIsLatinExtendedB(code):
+ """Check whether the character is part of LatinExtended-B UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLatinExtendedB(code)
+ return ret
+
+def uCSIsLetterlikeSymbols(code):
+ """Check whether the character is part of LetterlikeSymbols
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsLetterlikeSymbols(code)
+ return ret
+
+def uCSIsLimbu(code):
+ """Check whether the character is part of Limbu UCS Block """
+ ret = libxml2mod.xmlUCSIsLimbu(code)
+ return ret
+
+def uCSIsLinearBIdeograms(code):
+ """Check whether the character is part of LinearBIdeograms UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLinearBIdeograms(code)
+ return ret
+
+def uCSIsLinearBSyllabary(code):
+ """Check whether the character is part of LinearBSyllabary UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLinearBSyllabary(code)
+ return ret
+
+def uCSIsLowSurrogates(code):
+ """Check whether the character is part of LowSurrogates UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsLowSurrogates(code)
+ return ret
+
+def uCSIsMalayalam(code):
+ """Check whether the character is part of Malayalam UCS Block """
+ ret = libxml2mod.xmlUCSIsMalayalam(code)
+ return ret
+
+def uCSIsMathematicalAlphanumericSymbols(code):
+ """Check whether the character is part of
+ MathematicalAlphanumericSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsMathematicalAlphanumericSymbols(code)
+ return ret
+
+def uCSIsMathematicalOperators(code):
+ """Check whether the character is part of
+ MathematicalOperators UCS Block """
+ ret = libxml2mod.xmlUCSIsMathematicalOperators(code)
+ return ret
+
+def uCSIsMiscellaneousMathematicalSymbolsA(code):
+ """Check whether the character is part of
+ MiscellaneousMathematicalSymbols-A UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousMathematicalSymbolsA(code)
+ return ret
+
+def uCSIsMiscellaneousMathematicalSymbolsB(code):
+ """Check whether the character is part of
+ MiscellaneousMathematicalSymbols-B UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousMathematicalSymbolsB(code)
+ return ret
+
+def uCSIsMiscellaneousSymbols(code):
+ """Check whether the character is part of MiscellaneousSymbols
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousSymbols(code)
+ return ret
+
+def uCSIsMiscellaneousSymbolsandArrows(code):
+ """Check whether the character is part of
+ MiscellaneousSymbolsandArrows UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousSymbolsandArrows(code)
+ return ret
+
+def uCSIsMiscellaneousTechnical(code):
+ """Check whether the character is part of
+ MiscellaneousTechnical UCS Block """
+ ret = libxml2mod.xmlUCSIsMiscellaneousTechnical(code)
+ return ret
+
+def uCSIsMongolian(code):
+ """Check whether the character is part of Mongolian UCS Block """
+ ret = libxml2mod.xmlUCSIsMongolian(code)
+ return ret
+
+def uCSIsMusicalSymbols(code):
+ """Check whether the character is part of MusicalSymbols UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsMusicalSymbols(code)
+ return ret
+
+def uCSIsMyanmar(code):
+ """Check whether the character is part of Myanmar UCS Block """
+ ret = libxml2mod.xmlUCSIsMyanmar(code)
+ return ret
+
+def uCSIsNumberForms(code):
+ """Check whether the character is part of NumberForms UCS Block """
+ ret = libxml2mod.xmlUCSIsNumberForms(code)
+ return ret
+
+def uCSIsOgham(code):
+ """Check whether the character is part of Ogham UCS Block """
+ ret = libxml2mod.xmlUCSIsOgham(code)
+ return ret
+
+def uCSIsOldItalic(code):
+ """Check whether the character is part of OldItalic UCS Block """
+ ret = libxml2mod.xmlUCSIsOldItalic(code)
+ return ret
+
+def uCSIsOpticalCharacterRecognition(code):
+ """Check whether the character is part of
+ OpticalCharacterRecognition UCS Block """
+ ret = libxml2mod.xmlUCSIsOpticalCharacterRecognition(code)
+ return ret
+
+def uCSIsOriya(code):
+ """Check whether the character is part of Oriya UCS Block """
+ ret = libxml2mod.xmlUCSIsOriya(code)
+ return ret
+
+def uCSIsOsmanya(code):
+ """Check whether the character is part of Osmanya UCS Block """
+ ret = libxml2mod.xmlUCSIsOsmanya(code)
+ return ret
+
+def uCSIsPhoneticExtensions(code):
+ """Check whether the character is part of PhoneticExtensions
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsPhoneticExtensions(code)
+ return ret
+
+def uCSIsPrivateUse(code):
+ """Check whether the character is part of PrivateUse UCS Block """
+ ret = libxml2mod.xmlUCSIsPrivateUse(code)
+ return ret
+
+def uCSIsPrivateUseArea(code):
+ """Check whether the character is part of PrivateUseArea UCS
+ Block """
+ ret = libxml2mod.xmlUCSIsPrivateUseArea(code)
+ return ret
+
+def uCSIsRunic(code):
+ """Check whether the character is part of Runic UCS Block """
+ ret = libxml2mod.xmlUCSIsRunic(code)
+ return ret
+
+def uCSIsShavian(code):
+ """Check whether the character is part of Shavian UCS Block """
+ ret = libxml2mod.xmlUCSIsShavian(code)
+ return ret
+
+def uCSIsSinhala(code):
+ """Check whether the character is part of Sinhala UCS Block """
+ ret = libxml2mod.xmlUCSIsSinhala(code)
+ return ret
+
+def uCSIsSmallFormVariants(code):
+ """Check whether the character is part of SmallFormVariants
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsSmallFormVariants(code)
+ return ret
+
+def uCSIsSpacingModifierLetters(code):
+ """Check whether the character is part of
+ SpacingModifierLetters UCS Block """
+ ret = libxml2mod.xmlUCSIsSpacingModifierLetters(code)
+ return ret
+
+def uCSIsSpecials(code):
+ """Check whether the character is part of Specials UCS Block """
+ ret = libxml2mod.xmlUCSIsSpecials(code)
+ return ret
+
+def uCSIsSuperscriptsandSubscripts(code):
+ """Check whether the character is part of
+ SuperscriptsandSubscripts UCS Block """
+ ret = libxml2mod.xmlUCSIsSuperscriptsandSubscripts(code)
+ return ret
+
+def uCSIsSupplementalArrowsA(code):
+ """Check whether the character is part of SupplementalArrows-A
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementalArrowsA(code)
+ return ret
+
+def uCSIsSupplementalArrowsB(code):
+ """Check whether the character is part of SupplementalArrows-B
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementalArrowsB(code)
+ return ret
+
+def uCSIsSupplementalMathematicalOperators(code):
+ """Check whether the character is part of
+ SupplementalMathematicalOperators UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementalMathematicalOperators(code)
+ return ret
+
+def uCSIsSupplementaryPrivateUseAreaA(code):
+ """Check whether the character is part of
+ SupplementaryPrivateUseArea-A UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementaryPrivateUseAreaA(code)
+ return ret
+
+def uCSIsSupplementaryPrivateUseAreaB(code):
+ """Check whether the character is part of
+ SupplementaryPrivateUseArea-B UCS Block """
+ ret = libxml2mod.xmlUCSIsSupplementaryPrivateUseAreaB(code)
+ return ret
+
+def uCSIsSyriac(code):
+ """Check whether the character is part of Syriac UCS Block """
+ ret = libxml2mod.xmlUCSIsSyriac(code)
+ return ret
+
+def uCSIsTagalog(code):
+ """Check whether the character is part of Tagalog UCS Block """
+ ret = libxml2mod.xmlUCSIsTagalog(code)
+ return ret
+
+def uCSIsTagbanwa(code):
+ """Check whether the character is part of Tagbanwa UCS Block """
+ ret = libxml2mod.xmlUCSIsTagbanwa(code)
+ return ret
+
+def uCSIsTags(code):
+ """Check whether the character is part of Tags UCS Block """
+ ret = libxml2mod.xmlUCSIsTags(code)
+ return ret
+
+def uCSIsTaiLe(code):
+ """Check whether the character is part of TaiLe UCS Block """
+ ret = libxml2mod.xmlUCSIsTaiLe(code)
+ return ret
+
+def uCSIsTaiXuanJingSymbols(code):
+ """Check whether the character is part of TaiXuanJingSymbols
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsTaiXuanJingSymbols(code)
+ return ret
+
+def uCSIsTamil(code):
+ """Check whether the character is part of Tamil UCS Block """
+ ret = libxml2mod.xmlUCSIsTamil(code)
+ return ret
+
+def uCSIsTelugu(code):
+ """Check whether the character is part of Telugu UCS Block """
+ ret = libxml2mod.xmlUCSIsTelugu(code)
+ return ret
+
+def uCSIsThaana(code):
+ """Check whether the character is part of Thaana UCS Block """
+ ret = libxml2mod.xmlUCSIsThaana(code)
+ return ret
+
+def uCSIsThai(code):
+ """Check whether the character is part of Thai UCS Block """
+ ret = libxml2mod.xmlUCSIsThai(code)
+ return ret
+
+def uCSIsTibetan(code):
+ """Check whether the character is part of Tibetan UCS Block """
+ ret = libxml2mod.xmlUCSIsTibetan(code)
+ return ret
+
+def uCSIsUgaritic(code):
+ """Check whether the character is part of Ugaritic UCS Block """
+ ret = libxml2mod.xmlUCSIsUgaritic(code)
+ return ret
+
+def uCSIsUnifiedCanadianAboriginalSyllabics(code):
+ """Check whether the character is part of
+ UnifiedCanadianAboriginalSyllabics UCS Block """
+ ret = libxml2mod.xmlUCSIsUnifiedCanadianAboriginalSyllabics(code)
+ return ret
+
+def uCSIsVariationSelectors(code):
+ """Check whether the character is part of VariationSelectors
+ UCS Block """
+ ret = libxml2mod.xmlUCSIsVariationSelectors(code)
+ return ret
+
+def uCSIsVariationSelectorsSupplement(code):
+ """Check whether the character is part of
+ VariationSelectorsSupplement UCS Block """
+ ret = libxml2mod.xmlUCSIsVariationSelectorsSupplement(code)
+ return ret
+
+def uCSIsYiRadicals(code):
+ """Check whether the character is part of YiRadicals UCS Block """
+ ret = libxml2mod.xmlUCSIsYiRadicals(code)
+ return ret
+
+def uCSIsYiSyllables(code):
+ """Check whether the character is part of YiSyllables UCS Block """
+ ret = libxml2mod.xmlUCSIsYiSyllables(code)
+ return ret
+
+def uCSIsYijingHexagramSymbols(code):
+ """Check whether the character is part of
+ YijingHexagramSymbols UCS Block """
+ ret = libxml2mod.xmlUCSIsYijingHexagramSymbols(code)
+ return ret
+
+#
+# Functions from module xmlversion
+#
+
+def checkVersion(version):
+ """check the compiled lib version against the include one.
+ This can warn or immediately kill the application """
+ libxml2mod.xmlCheckVersion(version)
+
+#
+# Functions from module xpathInternals
+#
+
+def valuePop(ctxt):
+ """Pops the top XPath object from the value stack """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.valuePop(ctxt__o)
+ return ret
+
+class xmlNode(xmlCore):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlNode got a wrong wrapper object type')
+ self._o = _obj
+ xmlCore.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlNode (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ # accessors for xmlNode
+ def ns(self):
+ """Get the namespace of a node """
+ ret = libxml2mod.xmlNodeGetNs(self._o)
+ if ret is None:return None
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def nsDefs(self):
+ """Get the namespace of a node """
+ ret = libxml2mod.xmlNodeGetNsDefs(self._o)
+ if ret is None:return None
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ #
+ # xmlNode functions from module debugXML
+ #
+
+ def debugDumpNode(self, output, depth):
+ """Dumps debug information for the element node, it is
+ recursive """
+ libxml2mod.xmlDebugDumpNode(output, self._o, depth)
+
+ def debugDumpNodeList(self, output, depth):
+ """Dumps debug information for the list of element node, it is
+ recursive """
+ libxml2mod.xmlDebugDumpNodeList(output, self._o, depth)
+
+ def debugDumpOneNode(self, output, depth):
+ """Dumps debug information for the element node, it is not
+ recursive """
+ libxml2mod.xmlDebugDumpOneNode(output, self._o, depth)
+
+ def lsCountNode(self):
+ """Count the children of @node. """
+ ret = libxml2mod.xmlLsCountNode(self._o)
+ return ret
+
+ def lsOneNode(self, output):
+ """Dump to @output the type and name of @node. """
+ libxml2mod.xmlLsOneNode(output, self._o)
+
+ def shellPrintNode(self):
+ """Print node to the output FILE """
+ libxml2mod.xmlShellPrintNode(self._o)
+
+ #
+ # xmlNode functions from module tree
+ #
+
+ def addChild(self, cur):
+ """Add a new node to @parent, at the end of the child (or
+ property) list merging adjacent TEXT nodes (in which case
+ @cur is freed) If the new node is ATTRIBUTE, it is added
+ into properties instead of children. If there is an
+ attribute with equal name, it is first destroyed. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlAddChild(self._o, cur__o)
+ if ret is None:raise treeError('xmlAddChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addChildList(self, cur):
+ """Add a list of node at the end of the child list of the
+ parent merging adjacent TEXT nodes (@cur may be freed) """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlAddChildList(self._o, cur__o)
+ if ret is None:raise treeError('xmlAddChildList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addContent(self, content):
+ """Append the extra substring to the node content. NOTE: In
+ contrast to xmlNodeSetContent(), @content is supposed to be
+ raw text, so unescaped XML special chars are allowed,
+ entity references are not supported. """
+ libxml2mod.xmlNodeAddContent(self._o, content)
+
+ def addContentLen(self, content, len):
+ """Append the extra substring to the node content. NOTE: In
+ contrast to xmlNodeSetContentLen(), @content is supposed to
+ be raw text, so unescaped XML special chars are allowed,
+ entity references are not supported. """
+ libxml2mod.xmlNodeAddContentLen(self._o, content, len)
+
+ def addNextSibling(self, elem):
+ """Add a new node @elem as the next sibling of @cur If the new
+ node was already inserted in a document it is first
+ unlinked from its existing context. As a result of text
+ merging @elem may be freed. If the new node is ATTRIBUTE,
+ it is added into properties instead of children. If there
+ is an attribute with equal name, it is first destroyed. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlAddNextSibling(self._o, elem__o)
+ if ret is None:raise treeError('xmlAddNextSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addPrevSibling(self, elem):
+ """Add a new node @elem as the previous sibling of @cur
+ merging adjacent TEXT nodes (@elem may be freed) If the new
+ node was already inserted in a document it is first
+ unlinked from its existing context. If the new node is
+ ATTRIBUTE, it is added into properties instead of children.
+ If there is an attribute with equal name, it is first
+ destroyed. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlAddPrevSibling(self._o, elem__o)
+ if ret is None:raise treeError('xmlAddPrevSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def addSibling(self, elem):
+ """Add a new element @elem to the list of siblings of @cur
+ merging adjacent TEXT nodes (@elem may be freed) If the new
+ element was already inserted in a document it is first
+ unlinked from its existing context. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlAddSibling(self._o, elem__o)
+ if ret is None:raise treeError('xmlAddSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyNode(self, extended):
+ """Do a copy of the node. """
+ ret = libxml2mod.xmlCopyNode(self._o, extended)
+ if ret is None:raise treeError('xmlCopyNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyNodeList(self):
+ """Do a recursive copy of the node list. Use
+ xmlDocCopyNodeList() if possible to ensure string interning. """
+ ret = libxml2mod.xmlCopyNodeList(self._o)
+ if ret is None:raise treeError('xmlCopyNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyProp(self, cur):
+ """Do a copy of the attribute. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlCopyProp(self._o, cur__o)
+ if ret is None:raise treeError('xmlCopyProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def copyPropList(self, cur):
+ """Do a copy of an attribute list. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlCopyPropList(self._o, cur__o)
+ if ret is None:raise treeError('xmlCopyPropList() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def docCopyNode(self, doc, extended):
+ """Do a copy of the node to a given document. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlDocCopyNode(self._o, doc__o, extended)
+ if ret is None:raise treeError('xmlDocCopyNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def docCopyNodeList(self, doc):
+ """Do a recursive copy of the node list. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlDocCopyNodeList(doc__o, self._o)
+ if ret is None:raise treeError('xmlDocCopyNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def docSetRootElement(self, doc):
+ """Set the root element of the document (doc->children is a
+ list containing possibly comments, PIs, etc ...). """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlDocSetRootElement(doc__o, self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def firstElementChild(self):
+ """Finds the first child node of that element which is a
+ Element node Note the handling of entities references is
+ different than in the W3C DOM element traversal spec since
+ we don't have back reference from entities content to
+ entities references. """
+ ret = libxml2mod.xmlFirstElementChild(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def freeNode(self):
+ """Free a node, this is a recursive behaviour, all the
+ children are freed too. This doesn't unlink the child from
+ the list, use xmlUnlinkNode() first. """
+ libxml2mod.xmlFreeNode(self._o)
+
+ def freeNodeList(self):
+ """Free a node and all its siblings, this is a recursive
+ behaviour, all the children are freed too. """
+ libxml2mod.xmlFreeNodeList(self._o)
+
+ def getBase(self, doc):
+ """Searches for the BASE URL. The code should work on both XML
+ and HTML document even if base mechanisms are completely
+ different. It returns the base as defined in RFC 2396
+ sections 5.1.1. Base URI within Document Content and 5.1.2.
+ Base URI from the Encapsulating Entity However it does not
+ return the document base (5.1.3), use doc->URL in this case """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNodeGetBase(doc__o, self._o)
+ return ret
+
+ def getContent(self):
+ """Read the value of a node, this can be either the text
+ carried directly by this node if it's a TEXT node or the
+ aggregate string of the values carried by this node child's
+ (TEXT and ENTITY_REF). Entity references are substituted. """
+ ret = libxml2mod.xmlNodeGetContent(self._o)
+ return ret
+
+ def getLang(self):
+ """Searches the language of a node, i.e. the values of the
+ xml:lang attribute or the one carried by the nearest
+ ancestor. """
+ ret = libxml2mod.xmlNodeGetLang(self._o)
+ return ret
+
+ def getSpacePreserve(self):
+ """Searches the space preserving behaviour of a node, i.e. the
+ values of the xml:space attribute or the one carried by the
+ nearest ancestor. """
+ ret = libxml2mod.xmlNodeGetSpacePreserve(self._o)
+ return ret
+
+ def hasNsProp(self, name, nameSpace):
+ """Search for an attribute associated to a node This attribute
+ has to be anchored in the namespace specified. This does
+ the entity substitution. This function looks in DTD
+ attribute declaration for #FIXED or default declaration
+ values unless DTD use has been turned off. Note that a
+ namespace of None indicates to use the default namespace. """
+ ret = libxml2mod.xmlHasNsProp(self._o, name, nameSpace)
+ if ret is None:return None
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def hasProp(self, name):
+ """Search an attribute associated to a node This function also
+ looks in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off. """
+ ret = libxml2mod.xmlHasProp(self._o, name)
+ if ret is None:return None
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def isBlankNode(self):
+ """Checks whether this node is an empty or whitespace only
+ (and possibly ignorable) text-node. """
+ ret = libxml2mod.xmlIsBlankNode(self._o)
+ return ret
+
+ def isText(self):
+ """Is this node a Text node ? """
+ ret = libxml2mod.xmlNodeIsText(self._o)
+ return ret
+
+ def lastChild(self):
+ """Search the last child of a node. """
+ ret = libxml2mod.xmlGetLastChild(self._o)
+ if ret is None:raise treeError('xmlGetLastChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def lastElementChild(self):
+ """Finds the last child node of that element which is a
+ Element node Note the handling of entities references is
+ different than in the W3C DOM element traversal spec since
+ we don't have back reference from entities content to
+ entities references. """
+ ret = libxml2mod.xmlLastElementChild(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def lineNo(self):
+ """Get line number of @node. Try to override the limitation of
+ lines being store in 16 bits ints if XML_PARSE_BIG_LINES
+ parser option was used """
+ ret = libxml2mod.xmlGetLineNo(self._o)
+ return ret
+
+ def listGetRawString(self, doc, inLine):
+ """Builds the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs, contrary to
+ xmlNodeListGetString() this function doesn't do any
+ character encoding handling. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNodeListGetRawString(doc__o, self._o, inLine)
+ return ret
+
+ def listGetString(self, doc, inLine):
+ """Build the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNodeListGetString(doc__o, self._o, inLine)
+ return ret
+
+ def newChild(self, ns, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child list containing the TEXTs and ENTITY_REFs node will
+ be created. NOTE: @content is supposed to be a piece of XML
+ CDATA, so it allows entity references. XML special chars
+ must be escaped first by using
+ xmlEncodeEntitiesReentrant(), or xmlNewTextChild() should
+ be used. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewChild(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newNs(self, href, prefix):
+ """Creation of a new Namespace. This function will refuse to
+ create a namespace with a similar prefix than an existing
+ one present on this node. Note that for a default
+ namespace, @prefix should be None. We use href==None in
+ the case of an element creation where the namespace was not
+ defined. """
+ ret = libxml2mod.xmlNewNs(self._o, href, prefix)
+ if ret is None:raise treeError('xmlNewNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def newNsProp(self, ns, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewNsProp(self._o, ns__o, name, value)
+ if ret is None:raise treeError('xmlNewNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newNsPropEatName(self, ns, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewNsPropEatName(self._o, ns__o, name, value)
+ if ret is None:raise treeError('xmlNewNsPropEatName() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newProp(self, name, value):
+ """Create a new property carried by a node. """
+ ret = libxml2mod.xmlNewProp(self._o, name, value)
+ if ret is None:raise treeError('xmlNewProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newTextChild(self, ns, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child TEXT node will be created containing the string
+ @content. NOTE: Use xmlNewChild() if @content will contain
+ entities that need to be preserved. Use this function,
+ xmlNewTextChild(), if you need to ensure that reserved XML
+ chars that might appear in @content, such as the ampersand,
+ greater-than or less-than signs, are automatically replaced
+ by their XML escaped entity representations. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewTextChild(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewTextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def nextElementSibling(self):
+ """Finds the first closest next sibling of the node which is
+ an element node. Note the handling of entities references
+ is different than in the W3C DOM element traversal spec
+ since we don't have back reference from entities content to
+ entities references. """
+ ret = libxml2mod.xmlNextElementSibling(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def noNsProp(self, name):
+ """Search and get the value of an attribute associated to a
+ node This does the entity substitution. This function looks
+ in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off. This
+ function is similar to xmlGetProp except it will accept
+ only an attribute in no namespace. """
+ ret = libxml2mod.xmlGetNoNsProp(self._o, name)
+ return ret
+
+ def nodePath(self):
+ """Build a structure based Path for the given node """
+ ret = libxml2mod.xmlGetNodePath(self._o)
+ return ret
+
+ def nsProp(self, name, nameSpace):
+ """Search and get the value of an attribute associated to a
+ node This attribute has to be anchored in the namespace
+ specified. This does the entity substitution. This function
+ looks in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off. """
+ ret = libxml2mod.xmlGetNsProp(self._o, name, nameSpace)
+ return ret
+
+ def previousElementSibling(self):
+ """Finds the first closest previous sibling of the node which
+ is an element node. Note the handling of entities
+ references is different than in the W3C DOM element
+ traversal spec since we don't have back reference from
+ entities content to entities references. """
+ ret = libxml2mod.xmlPreviousElementSibling(self._o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def prop(self, name):
+ """Search and get the value of an attribute associated to a
+ node This does the entity substitution. This function looks
+ in DTD attribute declaration for #FIXED or default
+ declaration values unless DTD use has been turned off.
+ NOTE: this function acts independently of namespaces
+ associated to the attribute. Use xmlGetNsProp() or
+ xmlGetNoNsProp() for namespace aware processing. """
+ ret = libxml2mod.xmlGetProp(self._o, name)
+ return ret
+
+ def reconciliateNs(self, doc):
+ """This function checks that all the namespaces declared
+ within the given tree are properly declared. This is needed
+ for example after Copy or Cut and then paste operations.
+ The subtree may still hold pointers to namespace
+ declarations outside the subtree or invalid/masked. As much
+ as possible the function try to reuse the existing
+ namespaces found in the new environment. If not possible
+ the new namespaces are redeclared on @tree at the top of
+ the given subtree. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlReconciliateNs(doc__o, self._o)
+ return ret
+
+ def replaceNode(self, cur):
+ """Unlink the old node from its current context, prune the new
+ one at the same place. If @cur was already inserted in a
+ document it is first unlinked from its existing context. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlReplaceNode(self._o, cur__o)
+ if ret is None:raise treeError('xmlReplaceNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def searchNs(self, doc, nameSpace):
+ """Search a Ns registered under a given name space for a
+ document. recurse on the parents until it finds the defined
+ namespace or return None otherwise. @nameSpace can be None,
+ this is a search for the default namespace. We don't allow
+ to cross entities boundaries. If you don't declare the
+ namespace within those you will be in troubles !!! A
+ warning is generated to cover this case. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlSearchNs(doc__o, self._o, nameSpace)
+ if ret is None:raise treeError('xmlSearchNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def searchNsByHref(self, doc, href):
+ """Search a Ns aliasing a given URI. Recurse on the parents
+ until it finds the defined namespace or return None
+ otherwise. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlSearchNsByHref(doc__o, self._o, href)
+ if ret is None:raise treeError('xmlSearchNsByHref() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def setBase(self, uri):
+ """Set (or reset) the base URI of a node, i.e. the value of
+ the xml:base attribute. """
+ libxml2mod.xmlNodeSetBase(self._o, uri)
+
+ def setContent(self, content):
+ """Replace the content of a node. NOTE: @content is supposed
+ to be a piece of XML CDATA, so it allows entity references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant() resp. xmlEncodeSpecialChars(). """
+ libxml2mod.xmlNodeSetContent(self._o, content)
+
+ def setContentLen(self, content, len):
+ """Replace the content of a node. NOTE: @content is supposed
+ to be a piece of XML CDATA, so it allows entity references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant() resp. xmlEncodeSpecialChars(). """
+ libxml2mod.xmlNodeSetContentLen(self._o, content, len)
+
+ def setLang(self, lang):
+ """Set the language of a node, i.e. the values of the xml:lang
+ attribute. """
+ libxml2mod.xmlNodeSetLang(self._o, lang)
+
+ def setListDoc(self, doc):
+ """update all nodes in the list to point to the right document """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ libxml2mod.xmlSetListDoc(self._o, doc__o)
+
+ def setName(self, name):
+ """Set (or reset) the name of a node. """
+ libxml2mod.xmlNodeSetName(self._o, name)
+
+ def setNs(self, ns):
+ """Associate a namespace to a node, a posteriori. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ libxml2mod.xmlSetNs(self._o, ns__o)
+
+ def setNsProp(self, ns, name, value):
+ """Set (or reset) an attribute carried by a node. The ns
+ structure must be in scope, this is not checked """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlSetNsProp(self._o, ns__o, name, value)
+ if ret is None:raise treeError('xmlSetNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def setProp(self, name, value):
+ """Set (or reset) an attribute carried by a node. If @name has
+ a prefix, then the corresponding namespace-binding will be
+ used, if in scope; it is an error it there's no such
+ ns-binding for the prefix in scope. """
+ ret = libxml2mod.xmlSetProp(self._o, name, value)
+ if ret is None:raise treeError('xmlSetProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def setSpacePreserve(self, val):
+ """Set (or reset) the space preserving behaviour of a node,
+ i.e. the value of the xml:space attribute. """
+ libxml2mod.xmlNodeSetSpacePreserve(self._o, val)
+
+ def setTreeDoc(self, doc):
+ """update all nodes under the tree to point to the right
+ document """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ libxml2mod.xmlSetTreeDoc(self._o, doc__o)
+
+ def textConcat(self, content, len):
+ """Concat the given string at the end of the existing node
+ content """
+ ret = libxml2mod.xmlTextConcat(self._o, content, len)
+ return ret
+
+ def textMerge(self, second):
+ """Merge two text nodes into one """
+ if second is None: second__o = None
+ else: second__o = second._o
+ ret = libxml2mod.xmlTextMerge(self._o, second__o)
+ if ret is None:raise treeError('xmlTextMerge() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def unlinkNode(self):
+ """Unlink a node from it's current context, the node is not
+ freed If one need to free the node, use xmlFreeNode()
+ routine after the unlink to discard it. Note that namespace
+ nodes can't be unlinked as they do not have pointer to
+ their parent. """
+ libxml2mod.xmlUnlinkNode(self._o)
+
+ def unsetNsProp(self, ns, name):
+ """Remove an attribute carried by a node. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlUnsetNsProp(self._o, ns__o, name)
+ return ret
+
+ def unsetProp(self, name):
+ """Remove an attribute carried by a node. This handles only
+ attributes in no namespace. """
+ ret = libxml2mod.xmlUnsetProp(self._o, name)
+ return ret
+
+ #
+ # xmlNode functions from module valid
+ #
+
+ def isID(self, doc, attr):
+ """Determine whether an attribute is of type ID. In case we
+ have DTD(s) then this is done if DTD loading has been
+ requested. In the case of HTML documents parsed with the
+ HTML parser, then ID detection is done systematically. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsID(doc__o, self._o, attr__o)
+ return ret
+
+ def isRef(self, doc, attr):
+ """Determine whether an attribute is of type Ref. In case we
+ have DTD(s) then this is simple, otherwise we use an
+ heuristic: name Ref (upper or lowercase). """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsRef(doc__o, self._o, attr__o)
+ return ret
+
+ def validNormalizeAttributeValue(self, doc, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidNormalizeAttributeValue(doc__o, self._o, name, value)
+ return ret
+
+ #
+ # xmlNode functions from module xinclude
+ #
+
+ def xincludeProcessTree(self):
+ """Implement the XInclude substitution for the given subtree """
+ ret = libxml2mod.xmlXIncludeProcessTree(self._o)
+ return ret
+
+ def xincludeProcessTreeFlags(self, flags):
+ """Implement the XInclude substitution for the given subtree """
+ ret = libxml2mod.xmlXIncludeProcessTreeFlags(self._o, flags)
+ return ret
+
+ #
+ # xmlNode functions from module xmlschemas
+ #
+
+ def schemaValidateOneElement(self, ctxt):
+ """Validate a branch of a tree, starting with the given @elem. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlSchemaValidateOneElement(ctxt__o, self._o)
+ return ret
+
+ #
+ # xmlNode functions from module xpath
+ #
+
+ def xpathCastNodeToNumber(self):
+ """Converts a node to its number value """
+ ret = libxml2mod.xmlXPathCastNodeToNumber(self._o)
+ return ret
+
+ def xpathCastNodeToString(self):
+ """Converts a node to its string value. """
+ ret = libxml2mod.xmlXPathCastNodeToString(self._o)
+ return ret
+
+ def xpathCmpNodes(self, node2):
+ """Compare two nodes w.r.t document order """
+ if node2 is None: node2__o = None
+ else: node2__o = node2._o
+ ret = libxml2mod.xmlXPathCmpNodes(self._o, node2__o)
+ return ret
+
+ def xpathNodeEval(self, str, ctx):
+ """Evaluate the XPath Location Path in the given context. The
+ node 'node' is set as the context node. The context node is
+ not restored. """
+ if ctx is None: ctx__o = None
+ else: ctx__o = ctx._o
+ ret = libxml2mod.xmlXPathNodeEval(self._o, str, ctx__o)
+ if ret is None:raise xpathError('xmlXPathNodeEval() failed')
+ return xpathObjectRet(ret)
+
+ #
+ # xmlNode functions from module xpathInternals
+ #
+
+ def xpathNewNodeSet(self):
+ """Create a new xmlXPathObjectPtr of type NodeSet and
+ initialize it with the single Node @val """
+ ret = libxml2mod.xmlXPathNewNodeSet(self._o)
+ if ret is None:raise xpathError('xmlXPathNewNodeSet() failed')
+ return xpathObjectRet(ret)
+
+ def xpathNewValueTree(self):
+ """Create a new xmlXPathObjectPtr of type Value Tree (XSLT)
+ and initialize it with the tree root @val """
+ ret = libxml2mod.xmlXPathNewValueTree(self._o)
+ if ret is None:raise xpathError('xmlXPathNewValueTree() failed')
+ return xpathObjectRet(ret)
+
+ def xpathNextAncestor(self, ctxt):
+ """Traversal function for the "ancestor" direction the
+ ancestor axis contains the ancestors of the context node;
+ the ancestors of the context node consist of the parent of
+ context node and the parent's parent and so on; the nodes
+ are ordered in reverse document order; thus the parent is
+ the first node on the axis, and the parent's parent is the
+ second node on the axis """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextAncestor(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextAncestor() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAncestorOrSelf(self, ctxt):
+ """Traversal function for the "ancestor-or-self" direction he
+ ancestor-or-self axis contains the context node and
+ ancestors of the context node in reverse document order;
+ thus the context node is the first node on the axis, and
+ the context node's parent the second; parent here is
+ defined the same as with the parent axis. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextAncestorOrSelf(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextAncestorOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAttribute(self, ctxt):
+ """Traversal function for the "attribute" direction TODO:
+ support DTD inherited default attributes """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextAttribute(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextAttribute() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextChild(self, ctxt):
+ """Traversal function for the "child" direction The child axis
+ contains the children of the context node in document order. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextChild(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendant(self, ctxt):
+ """Traversal function for the "descendant" direction the
+ descendant axis contains the descendants of the context
+ node in document order; a descendant is a child or a child
+ of a child and so on. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextDescendant(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextDescendant() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendantOrSelf(self, ctxt):
+ """Traversal function for the "descendant-or-self" direction
+ the descendant-or-self axis contains the context node and
+ the descendants of the context node in document order; thus
+ the context node is the first node on the axis, and the
+ first child of the context node is the second node on the
+ axis """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextDescendantOrSelf(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextDescendantOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowing(self, ctxt):
+ """Traversal function for the "following" direction The
+ following axis contains all nodes in the same document as
+ the context node that are after the context node in
+ document order, excluding any descendants and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in document order """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextFollowing(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextFollowing() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowingSibling(self, ctxt):
+ """Traversal function for the "following-sibling" direction
+ The following-sibling axis contains the following siblings
+ of the context node in document order. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextFollowingSibling(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextFollowingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextNamespace(self, ctxt):
+ """Traversal function for the "namespace" direction the
+ namespace axis contains the namespace nodes of the context
+ node; the order of nodes on this axis is
+ implementation-defined; the axis will be empty unless the
+ context node is an element We keep the XML namespace node
+ at the end of the list. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextNamespace(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextNamespace() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextParent(self, ctxt):
+ """Traversal function for the "parent" direction The parent
+ axis contains the parent of the context node, if there is
+ one. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextParent(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextParent() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPreceding(self, ctxt):
+ """Traversal function for the "preceding" direction the
+ preceding axis contains all nodes in the same document as
+ the context node that are before the context node in
+ document order, excluding any ancestors and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in reverse document order """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextPreceding(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextPreceding() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPrecedingSibling(self, ctxt):
+ """Traversal function for the "preceding-sibling" direction
+ The preceding-sibling axis contains the preceding siblings
+ of the context node in reverse document order; the first
+ preceding sibling is first on the axis; the sibling
+ preceding that node is the second on the axis and so on. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextPrecedingSibling(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextPrecedingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextSelf(self, ctxt):
+ """Traversal function for the "self" direction The self axis
+ contains just the context node itself """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlXPathNextSelf(ctxt__o, self._o)
+ if ret is None:raise xpathError('xmlXPathNextSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ #
+ # xmlNode functions from module xpointer
+ #
+
+ def xpointerNewCollapsedRange(self):
+ """Create a new xmlXPathObjectPtr of type range using a single
+ nodes """
+ ret = libxml2mod.xmlXPtrNewCollapsedRange(self._o)
+ if ret is None:raise treeError('xmlXPtrNewCollapsedRange() failed')
+ return xpathObjectRet(ret)
+
+ def xpointerNewContext(self, doc, origin):
+ """Create a new XPointer context """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if origin is None: origin__o = None
+ else: origin__o = origin._o
+ ret = libxml2mod.xmlXPtrNewContext(doc__o, self._o, origin__o)
+ if ret is None:raise treeError('xmlXPtrNewContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+ def xpointerNewLocationSetNodes(self, end):
+ """Create a new xmlXPathObjectPtr of type LocationSet and
+ initialize it with the single range made of the two nodes
+ @start and @end """
+ if end is None: end__o = None
+ else: end__o = end._o
+ ret = libxml2mod.xmlXPtrNewLocationSetNodes(self._o, end__o)
+ if ret is None:raise treeError('xmlXPtrNewLocationSetNodes() failed')
+ return xpathObjectRet(ret)
+
+ def xpointerNewRange(self, startindex, end, endindex):
+ """Create a new xmlXPathObjectPtr of type range """
+ if end is None: end__o = None
+ else: end__o = end._o
+ ret = libxml2mod.xmlXPtrNewRange(self._o, startindex, end__o, endindex)
+ if ret is None:raise treeError('xmlXPtrNewRange() failed')
+ return xpathObjectRet(ret)
+
+ def xpointerNewRangeNodes(self, end):
+ """Create a new xmlXPathObjectPtr of type range using 2 nodes """
+ if end is None: end__o = None
+ else: end__o = end._o
+ ret = libxml2mod.xmlXPtrNewRangeNodes(self._o, end__o)
+ if ret is None:raise treeError('xmlXPtrNewRangeNodes() failed')
+ return xpathObjectRet(ret)
+
+class xmlDoc(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlDoc got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlDoc (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlDoc functions from module HTMLparser
+ #
+
+ def htmlAutoCloseTag(self, name, elem):
+ """The HTML DTD allows a tag to implicitly close other tags.
+ The list is kept in htmlStartClose array. This function
+ checks if the element or one of it's children would
+ autoclose the given tag. """
+ ret = libxml2mod.htmlAutoCloseTag(self._o, name, elem)
+ return ret
+
+ def htmlIsAutoClosed(self, elem):
+ """The HTML DTD allows a tag to implicitly close other tags.
+ The list is kept in htmlStartClose array. This function
+ checks if a tag is autoclosed by one of it's child """
+ ret = libxml2mod.htmlIsAutoClosed(self._o, elem)
+ return ret
+
+ #
+ # xmlDoc functions from module HTMLtree
+ #
+
+ def htmlDocContentDumpFormatOutput(self, buf, encoding, format):
+ """Dump an HTML document. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ libxml2mod.htmlDocContentDumpFormatOutput(buf__o, self._o, encoding, format)
+
+ def htmlDocContentDumpOutput(self, buf, encoding):
+ """Dump an HTML document. Formating return/spaces are added. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ libxml2mod.htmlDocContentDumpOutput(buf__o, self._o, encoding)
+
+ def htmlDocDump(self, f):
+ """Dump an HTML document to an open FILE. """
+ ret = libxml2mod.htmlDocDump(f, self._o)
+ return ret
+
+ def htmlGetMetaEncoding(self):
+ """Encoding definition lookup in the Meta tags """
+ ret = libxml2mod.htmlGetMetaEncoding(self._o)
+ return ret
+
+ def htmlNodeDumpFile(self, out, cur):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too, and formatting returns are added. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpFile(out, self._o, cur__o)
+
+ def htmlNodeDumpFileFormat(self, out, cur, encoding, format):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too. TODO: if encoding == None try to save in the doc
+ encoding """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.htmlNodeDumpFileFormat(out, self._o, cur__o, encoding, format)
+ return ret
+
+ def htmlNodeDumpFormatOutput(self, buf, cur, encoding, format):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpFormatOutput(buf__o, self._o, cur__o, encoding, format)
+
+ def htmlNodeDumpOutput(self, buf, cur, encoding):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too, and formatting returns/spaces are added. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpOutput(buf__o, self._o, cur__o, encoding)
+
+ def htmlSaveFile(self, filename):
+ """Dump an HTML document to a file. If @filename is "-" the
+ stdout file is used. """
+ ret = libxml2mod.htmlSaveFile(filename, self._o)
+ return ret
+
+ def htmlSaveFileEnc(self, filename, encoding):
+ """Dump an HTML document to a file using a given encoding and
+ formatting returns/spaces are added. """
+ ret = libxml2mod.htmlSaveFileEnc(filename, self._o, encoding)
+ return ret
+
+ def htmlSaveFileFormat(self, filename, encoding, format):
+ """Dump an HTML document to a file using a given encoding. """
+ ret = libxml2mod.htmlSaveFileFormat(filename, self._o, encoding, format)
+ return ret
+
+ def htmlSetMetaEncoding(self, encoding):
+ """Sets the current encoding in the Meta tags NOTE: this will
+ not change the document content encoding, just the META
+ flag associated. """
+ ret = libxml2mod.htmlSetMetaEncoding(self._o, encoding)
+ return ret
+
+ #
+ # xmlDoc functions from module debugXML
+ #
+
+ def debugCheckDocument(self, output):
+ """Check the document for potential content problems, and
+ output the errors to @output """
+ ret = libxml2mod.xmlDebugCheckDocument(output, self._o)
+ return ret
+
+ def debugDumpDocument(self, output):
+ """Dumps debug information for the document, it's recursive """
+ libxml2mod.xmlDebugDumpDocument(output, self._o)
+
+ def debugDumpDocumentHead(self, output):
+ """Dumps debug information cncerning the document, not
+ recursive """
+ libxml2mod.xmlDebugDumpDocumentHead(output, self._o)
+
+ def debugDumpEntities(self, output):
+ """Dumps debug information for all the entities in use by the
+ document """
+ libxml2mod.xmlDebugDumpEntities(output, self._o)
+
+ #
+ # xmlDoc functions from module entities
+ #
+
+ def addDocEntity(self, name, type, ExternalID, SystemID, content):
+ """Register a new entity for this document. """
+ ret = libxml2mod.xmlAddDocEntity(self._o, name, type, ExternalID, SystemID, content)
+ if ret is None:raise treeError('xmlAddDocEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def addDtdEntity(self, name, type, ExternalID, SystemID, content):
+ """Register a new entity for this document DTD external subset. """
+ ret = libxml2mod.xmlAddDtdEntity(self._o, name, type, ExternalID, SystemID, content)
+ if ret is None:raise treeError('xmlAddDtdEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def docEntity(self, name):
+ """Do an entity lookup in the document entity hash table and """
+ ret = libxml2mod.xmlGetDocEntity(self._o, name)
+ if ret is None:raise treeError('xmlGetDocEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def dtdEntity(self, name):
+ """Do an entity lookup in the DTD entity hash table and """
+ ret = libxml2mod.xmlGetDtdEntity(self._o, name)
+ if ret is None:raise treeError('xmlGetDtdEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def encodeEntities(self, input):
+ """TODO: remove xmlEncodeEntities, once we are not afraid of
+ breaking binary compatibility People must migrate their
+ code to xmlEncodeEntitiesReentrant ! This routine will
+ issue a warning when encountered. """
+ ret = libxml2mod.xmlEncodeEntities(self._o, input)
+ return ret
+
+ def encodeEntitiesReentrant(self, input):
+ """Do a global encoding of a string, replacing the predefined
+ entities and non ASCII values with their entities and
+ CharRef counterparts. Contrary to xmlEncodeEntities, this
+ routine is reentrant, and result must be deallocated. """
+ ret = libxml2mod.xmlEncodeEntitiesReentrant(self._o, input)
+ return ret
+
+ def encodeSpecialChars(self, input):
+ """Do a global encoding of a string, replacing the predefined
+ entities this routine is reentrant, and result must be
+ deallocated. """
+ ret = libxml2mod.xmlEncodeSpecialChars(self._o, input)
+ return ret
+
+ def newEntity(self, name, type, ExternalID, SystemID, content):
+ """Create a new entity, this differs from xmlAddDocEntity()
+ that if the document is None or has no internal subset
+ defined, then an unlinked entity structure will be
+ returned, it is then the responsability of the caller to
+ link it to the document later or free it when not needed
+ anymore. """
+ ret = libxml2mod.xmlNewEntity(self._o, name, type, ExternalID, SystemID, content)
+ if ret is None:raise treeError('xmlNewEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def parameterEntity(self, name):
+ """Do an entity lookup in the internal and external subsets and """
+ ret = libxml2mod.xmlGetParameterEntity(self._o, name)
+ if ret is None:raise treeError('xmlGetParameterEntity() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ #
+ # xmlDoc functions from module relaxng
+ #
+
+ def relaxNGNewDocParserCtxt(self):
+ """Create an XML RelaxNGs parser context for that document.
+ Note: since the process of compiling a RelaxNG schemas
+ modifies the document, the @doc parameter is duplicated
+ internally. """
+ ret = libxml2mod.xmlRelaxNGNewDocParserCtxt(self._o)
+ if ret is None:raise parserError('xmlRelaxNGNewDocParserCtxt() failed')
+ __tmp = relaxNgParserCtxt(_obj=ret)
+ return __tmp
+
+ def relaxNGValidateDoc(self, ctxt):
+ """Validate a document tree in memory. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlRelaxNGValidateDoc(ctxt__o, self._o)
+ return ret
+
+ def relaxNGValidateFullElement(self, ctxt, elem):
+ """Validate a full subtree when
+ xmlRelaxNGValidatePushElement() returned 0 and the content
+ of the node has been expanded. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidateFullElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def relaxNGValidatePopElement(self, ctxt, elem):
+ """Pop the element end from the RelaxNG validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePopElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def relaxNGValidatePushElement(self, ctxt, elem):
+ """Push a new element start on the RelaxNG validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePushElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ #
+ # xmlDoc functions from module tree
+ #
+
+ def copyDoc(self, recursive):
+ """Do a copy of the document info. If recursive, the content
+ tree will be copied too as well as DTD, namespaces and
+ entities. """
+ ret = libxml2mod.xmlCopyDoc(self._o, recursive)
+ if ret is None:raise treeError('xmlCopyDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def copyNode(self, node, extended):
+ """Do a copy of the node to a given document. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlDocCopyNode(node__o, self._o, extended)
+ if ret is None:raise treeError('xmlDocCopyNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def copyNodeList(self, node):
+ """Do a recursive copy of the node list. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlDocCopyNodeList(self._o, node__o)
+ if ret is None:raise treeError('xmlDocCopyNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def createIntSubset(self, name, ExternalID, SystemID):
+ """Create the internal subset of a document """
+ ret = libxml2mod.xmlCreateIntSubset(self._o, name, ExternalID, SystemID)
+ if ret is None:raise treeError('xmlCreateIntSubset() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def docCompressMode(self):
+ """get the compression ratio for a document, ZLIB based """
+ ret = libxml2mod.xmlGetDocCompressMode(self._o)
+ return ret
+
+ def dump(self, f):
+ """Dump an XML document to an open FILE. """
+ ret = libxml2mod.xmlDocDump(f, self._o)
+ return ret
+
+ def elemDump(self, f, cur):
+ """Dump an XML/HTML node, recursive behaviour, children are
+ printed too. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.xmlElemDump(f, self._o, cur__o)
+
+ def formatDump(self, f, format):
+ """Dump an XML document to an open FILE. """
+ ret = libxml2mod.xmlDocFormatDump(f, self._o, format)
+ return ret
+
+ def freeDoc(self):
+ """Free up all the structures used by a document, tree
+ included. """
+ libxml2mod.xmlFreeDoc(self._o)
+
+ def getRootElement(self):
+ """Get the root element of the document (doc->children is a
+ list containing possibly comments, PIs, etc ...). """
+ ret = libxml2mod.xmlDocGetRootElement(self._o)
+ if ret is None:raise treeError('xmlDocGetRootElement() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def intSubset(self):
+ """Get the internal subset of a document """
+ ret = libxml2mod.xmlGetIntSubset(self._o)
+ if ret is None:raise treeError('xmlGetIntSubset() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def newCDataBlock(self, content, len):
+ """Creation of a new node containing a CDATA block. """
+ ret = libxml2mod.xmlNewCDataBlock(self._o, content, len)
+ if ret is None:raise treeError('xmlNewCDataBlock() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newCharRef(self, name):
+ """Creation of a new character reference node. """
+ ret = libxml2mod.xmlNewCharRef(self._o, name)
+ if ret is None:raise treeError('xmlNewCharRef() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocComment(self, content):
+ """Creation of a new node containing a comment within a
+ document. """
+ ret = libxml2mod.xmlNewDocComment(self._o, content)
+ if ret is None:raise treeError('xmlNewDocComment() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocFragment(self):
+ """Creation of a new Fragment node. """
+ ret = libxml2mod.xmlNewDocFragment(self._o)
+ if ret is None:raise treeError('xmlNewDocFragment() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNode(self, ns, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewDocNode(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewDocNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNodeEatName(self, ns, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewDocNodeEatName(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewDocNodeEatName() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocPI(self, name, content):
+ """Creation of a processing instruction element. """
+ ret = libxml2mod.xmlNewDocPI(self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocPI() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocProp(self, name, value):
+ """Create a new property carried by a document. """
+ ret = libxml2mod.xmlNewDocProp(self._o, name, value)
+ if ret is None:raise treeError('xmlNewDocProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newDocRawNode(self, ns, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). """
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlNewDocRawNode(self._o, ns__o, name, content)
+ if ret is None:raise treeError('xmlNewDocRawNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocText(self, content):
+ """Creation of a new text node within a document. """
+ ret = libxml2mod.xmlNewDocText(self._o, content)
+ if ret is None:raise treeError('xmlNewDocText() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocTextLen(self, content, len):
+ """Creation of a new text node with an extra content length
+ parameter. The text node pertain to a given document. """
+ ret = libxml2mod.xmlNewDocTextLen(self._o, content, len)
+ if ret is None:raise treeError('xmlNewDocTextLen() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDtd(self, name, ExternalID, SystemID):
+ """Creation of a new DTD for the external subset. To create an
+ internal subset, use xmlCreateIntSubset(). """
+ ret = libxml2mod.xmlNewDtd(self._o, name, ExternalID, SystemID)
+ if ret is None:raise treeError('xmlNewDtd() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def newGlobalNs(self, href, prefix):
+ """Creation of a Namespace, the old way using PI and without
+ scoping DEPRECATED !!! """
+ ret = libxml2mod.xmlNewGlobalNs(self._o, href, prefix)
+ if ret is None:raise treeError('xmlNewGlobalNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def newReference(self, name):
+ """Creation of a new reference node. """
+ ret = libxml2mod.xmlNewReference(self._o, name)
+ if ret is None:raise treeError('xmlNewReference() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def nodeDumpOutput(self, buf, cur, level, format, encoding):
+ """Dump an XML node, recursive behaviour, children are printed
+ too. Note that @format = 1 provide node indenting only if
+ xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was
+ called """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.xmlNodeDumpOutput(buf__o, self._o, cur__o, level, format, encoding)
+
+ def nodeGetBase(self, cur):
+ """Searches for the BASE URL. The code should work on both XML
+ and HTML document even if base mechanisms are completely
+ different. It returns the base as defined in RFC 2396
+ sections 5.1.1. Base URI within Document Content and 5.1.2.
+ Base URI from the Encapsulating Entity However it does not
+ return the document base (5.1.3), use doc->URL in this case """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlNodeGetBase(self._o, cur__o)
+ return ret
+
+ def nodeListGetRawString(self, list, inLine):
+ """Builds the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs, contrary to
+ xmlNodeListGetString() this function doesn't do any
+ character encoding handling. """
+ if list is None: list__o = None
+ else: list__o = list._o
+ ret = libxml2mod.xmlNodeListGetRawString(self._o, list__o, inLine)
+ return ret
+
+ def nodeListGetString(self, list, inLine):
+ """Build the string equivalent to the text contained in the
+ Node list made of TEXTs and ENTITY_REFs """
+ if list is None: list__o = None
+ else: list__o = list._o
+ ret = libxml2mod.xmlNodeListGetString(self._o, list__o, inLine)
+ return ret
+
+ def reconciliateNs(self, tree):
+ """This function checks that all the namespaces declared
+ within the given tree are properly declared. This is needed
+ for example after Copy or Cut and then paste operations.
+ The subtree may still hold pointers to namespace
+ declarations outside the subtree or invalid/masked. As much
+ as possible the function try to reuse the existing
+ namespaces found in the new environment. If not possible
+ the new namespaces are redeclared on @tree at the top of
+ the given subtree. """
+ if tree is None: tree__o = None
+ else: tree__o = tree._o
+ ret = libxml2mod.xmlReconciliateNs(self._o, tree__o)
+ return ret
+
+ def saveFile(self, filename):
+ """Dump an XML document to a file. Will use compression if
+ compiled in and enabled. If @filename is "-" the stdout
+ file is used. """
+ ret = libxml2mod.xmlSaveFile(filename, self._o)
+ return ret
+
+ def saveFileEnc(self, filename, encoding):
+ """Dump an XML document, converting it to the given encoding """
+ ret = libxml2mod.xmlSaveFileEnc(filename, self._o, encoding)
+ return ret
+
+ def saveFileTo(self, buf, encoding):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ ret = libxml2mod.xmlSaveFileTo(buf__o, self._o, encoding)
+ return ret
+
+ def saveFormatFile(self, filename, format):
+ """Dump an XML document to a file. Will use compression if
+ compiled in and enabled. If @filename is "-" the stdout
+ file is used. If @format is set then the document will be
+ indented on output. Note that @format = 1 provide node
+ indenting only if xmlIndentTreeOutput = 1 or
+ xmlKeepBlanksDefault(0) was called """
+ ret = libxml2mod.xmlSaveFormatFile(filename, self._o, format)
+ return ret
+
+ def saveFormatFileEnc(self, filename, encoding, format):
+ """Dump an XML document to a file or an URL. """
+ ret = libxml2mod.xmlSaveFormatFileEnc(filename, self._o, encoding, format)
+ return ret
+
+ def saveFormatFileTo(self, buf, encoding, format):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if buf is None: buf__o = None
+ else: buf__o = buf._o
+ ret = libxml2mod.xmlSaveFormatFileTo(buf__o, self._o, encoding, format)
+ return ret
+
+ def searchNs(self, node, nameSpace):
+ """Search a Ns registered under a given name space for a
+ document. recurse on the parents until it finds the defined
+ namespace or return None otherwise. @nameSpace can be None,
+ this is a search for the default namespace. We don't allow
+ to cross entities boundaries. If you don't declare the
+ namespace within those you will be in troubles !!! A
+ warning is generated to cover this case. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlSearchNs(self._o, node__o, nameSpace)
+ if ret is None:raise treeError('xmlSearchNs() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def searchNsByHref(self, node, href):
+ """Search a Ns aliasing a given URI. Recurse on the parents
+ until it finds the defined namespace or return None
+ otherwise. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlSearchNsByHref(self._o, node__o, href)
+ if ret is None:raise treeError('xmlSearchNsByHref() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def setDocCompressMode(self, mode):
+ """set the compression ratio for a document, ZLIB based
+ Correct values: 0 (uncompressed) to 9 (max compression) """
+ libxml2mod.xmlSetDocCompressMode(self._o, mode)
+
+ def setListDoc(self, list):
+ """update all nodes in the list to point to the right document """
+ if list is None: list__o = None
+ else: list__o = list._o
+ libxml2mod.xmlSetListDoc(list__o, self._o)
+
+ def setRootElement(self, root):
+ """Set the root element of the document (doc->children is a
+ list containing possibly comments, PIs, etc ...). """
+ if root is None: root__o = None
+ else: root__o = root._o
+ ret = libxml2mod.xmlDocSetRootElement(self._o, root__o)
+ if ret is None:return None
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def setTreeDoc(self, tree):
+ """update all nodes under the tree to point to the right
+ document """
+ if tree is None: tree__o = None
+ else: tree__o = tree._o
+ libxml2mod.xmlSetTreeDoc(tree__o, self._o)
+
+ def stringGetNodeList(self, value):
+ """Parse the value string and build the node list associated.
+ Should produce a flat tree with only TEXTs and ENTITY_REFs. """
+ ret = libxml2mod.xmlStringGetNodeList(self._o, value)
+ if ret is None:raise treeError('xmlStringGetNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def stringLenGetNodeList(self, value, len):
+ """Parse the value string and build the node list associated.
+ Should produce a flat tree with only TEXTs and ENTITY_REFs. """
+ ret = libxml2mod.xmlStringLenGetNodeList(self._o, value, len)
+ if ret is None:raise treeError('xmlStringLenGetNodeList() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ #
+ # xmlDoc functions from module valid
+ #
+
+ def ID(self, ID):
+ """Search the attribute declaring the given ID """
+ ret = libxml2mod.xmlGetID(self._o, ID)
+ if ret is None:raise treeError('xmlGetID() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def isID(self, elem, attr):
+ """Determine whether an attribute is of type ID. In case we
+ have DTD(s) then this is done if DTD loading has been
+ requested. In the case of HTML documents parsed with the
+ HTML parser, then ID detection is done systematically. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsID(self._o, elem__o, attr__o)
+ return ret
+
+ def isMixedElement(self, name):
+ """Search in the DtDs whether an element accept Mixed content
+ (or ANY) basically if it is supposed to accept text childs """
+ ret = libxml2mod.xmlIsMixedElement(self._o, name)
+ return ret
+
+ def isRef(self, elem, attr):
+ """Determine whether an attribute is of type Ref. In case we
+ have DTD(s) then this is simple, otherwise we use an
+ heuristic: name Ref (upper or lowercase). """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlIsRef(self._o, elem__o, attr__o)
+ return ret
+
+ def removeID(self, attr):
+ """Remove the given attribute from the ID table maintained
+ internally. """
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlRemoveID(self._o, attr__o)
+ return ret
+
+ def removeRef(self, attr):
+ """Remove the given attribute from the Ref table maintained
+ internally. """
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlRemoveRef(self._o, attr__o)
+ return ret
+
+ def validCtxtNormalizeAttributeValue(self, ctxt, elem, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character.
+ Also check VC: Standalone Document Declaration in P32, and
+ update ctxt->valid accordingly """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidCtxtNormalizeAttributeValue(ctxt__o, self._o, elem__o, name, value)
+ return ret
+
+ def validNormalizeAttributeValue(self, elem, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidNormalizeAttributeValue(self._o, elem__o, name, value)
+ return ret
+
+ def validateDocument(self, ctxt):
+ """Try to validate the document instance basically it does
+ the all the checks described by the XML Rec i.e. validates
+ the internal and external subset (if present) and validate
+ the document tree. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateDocument(ctxt__o, self._o)
+ return ret
+
+ def validateDocumentFinal(self, ctxt):
+ """Does the final step for the document validation once all
+ the incremental validation steps have been completed
+ basically it does the following checks described by the XML
+ Rec Check all the IDREF/IDREFS attributes definition for
+ validity """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateDocumentFinal(ctxt__o, self._o)
+ return ret
+
+ def validateDtd(self, ctxt, dtd):
+ """Try to validate the document against the dtd instance
+ Basically it does check all the definitions in the DtD.
+ Note the the internal subset (if present) is de-coupled
+ (i.e. not used), which could give problems if ID or IDREF
+ is present. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if dtd is None: dtd__o = None
+ else: dtd__o = dtd._o
+ ret = libxml2mod.xmlValidateDtd(ctxt__o, self._o, dtd__o)
+ return ret
+
+ def validateDtdFinal(self, ctxt):
+ """Does the final step for the dtds validation once all the
+ subsets have been parsed basically it does the following
+ checks described by the XML Rec - check that ENTITY and
+ ENTITIES type attributes default or possible values matches
+ one of the defined entities. - check that NOTATION type
+ attributes default or possible values matches one of the
+ defined notations. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateDtdFinal(ctxt__o, self._o)
+ return ret
+
+ def validateElement(self, ctxt, elem):
+ """Try to validate the subtree under an element """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def validateNotationUse(self, ctxt, notationName):
+ """Validate that the given name match a notation declaration.
+ - [ VC: Notation Declared ] """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateNotationUse(ctxt__o, self._o, notationName)
+ return ret
+
+ def validateOneAttribute(self, ctxt, elem, attr, value):
+ """Try to validate a single attribute for an element basically
+ it does the following checks as described by the XML-1.0
+ recommendation: - [ VC: Attribute Value Type ] - [ VC:
+ Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC:
+ Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity
+ Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlValidateOneAttribute(ctxt__o, self._o, elem__o, attr__o, value)
+ return ret
+
+ def validateOneElement(self, ctxt, elem):
+ """Try to validate a single element and it's attributes,
+ basically it does the following checks as described by the
+ XML-1.0 recommendation: - [ VC: Element Valid ] - [ VC:
+ Required Attribute ] Then call xmlValidateOneAttribute()
+ for each attribute present. The ID/IDREF checkings are
+ done separately """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateOneElement(ctxt__o, self._o, elem__o)
+ return ret
+
+ def validateOneNamespace(self, ctxt, elem, prefix, ns, value):
+ """Try to validate a single namespace declaration for an
+ element basically it does the following checks as described
+ by the XML-1.0 recommendation: - [ VC: Attribute Value Type
+ ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] -
+ [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC:
+ Entity Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlValidateOneNamespace(ctxt__o, self._o, elem__o, prefix, ns__o, value)
+ return ret
+
+ def validatePopElement(self, ctxt, elem, qname):
+ """Pop the element end from the validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePopElement(ctxt__o, self._o, elem__o, qname)
+ return ret
+
+ def validatePushElement(self, ctxt, elem, qname):
+ """Push a new element start on the validation stack. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePushElement(ctxt__o, self._o, elem__o, qname)
+ return ret
+
+ def validateRoot(self, ctxt):
+ """Try to validate a the root element basically it does the
+ following check as described by the XML-1.0 recommendation:
+ - [ VC: Root Element Type ] it doesn't try to recurse or
+ apply other check to the element """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlValidateRoot(ctxt__o, self._o)
+ return ret
+
+ #
+ # xmlDoc functions from module xinclude
+ #
+
+ def xincludeProcess(self):
+ """Implement the XInclude substitution on the XML document @doc """
+ ret = libxml2mod.xmlXIncludeProcess(self._o)
+ return ret
+
+ def xincludeProcessFlags(self, flags):
+ """Implement the XInclude substitution on the XML document @doc """
+ ret = libxml2mod.xmlXIncludeProcessFlags(self._o, flags)
+ return ret
+
+ #
+ # xmlDoc functions from module xmlreader
+ #
+
+ def NewWalker(self, reader):
+ """Setup an xmltextReader to parse a preparsed XML document.
+ This reuses the existing @reader xmlTextReader. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlReaderNewWalker(reader__o, self._o)
+ return ret
+
+ def readerWalker(self):
+ """Create an xmltextReader for a preparsed document. """
+ ret = libxml2mod.xmlReaderWalker(self._o)
+ if ret is None:raise treeError('xmlReaderWalker() failed')
+ __tmp = xmlTextReader(_obj=ret)
+ return __tmp
+
+ #
+ # xmlDoc functions from module xmlschemas
+ #
+
+ def schemaNewDocParserCtxt(self):
+ """Create an XML Schemas parse context for that document. NB.
+ The document may be modified during the parsing process. """
+ ret = libxml2mod.xmlSchemaNewDocParserCtxt(self._o)
+ if ret is None:raise parserError('xmlSchemaNewDocParserCtxt() failed')
+ __tmp = SchemaParserCtxt(_obj=ret)
+ return __tmp
+
+ def schemaValidateDoc(self, ctxt):
+ """Validate a document tree in memory. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlSchemaValidateDoc(ctxt__o, self._o)
+ return ret
+
+ #
+ # xmlDoc functions from module xpath
+ #
+
+ def xpathNewContext(self):
+ """Create a new xmlXPathContext """
+ ret = libxml2mod.xmlXPathNewContext(self._o)
+ if ret is None:raise xpathError('xmlXPathNewContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+ def xpathOrderDocElems(self):
+ """Call this routine to speed up XPath computation on static
+ documents. This stamps all the element nodes with the
+ document order Like for line information, the order is kept
+ in the element->content field, the value stored is actually
+ - the node number (starting at -1) to be able to
+ differentiate from line numbers. """
+ ret = libxml2mod.xmlXPathOrderDocElems(self._o)
+ return ret
+
+ #
+ # xmlDoc functions from module xpointer
+ #
+
+ def xpointerNewContext(self, here, origin):
+ """Create a new XPointer context """
+ if here is None: here__o = None
+ else: here__o = here._o
+ if origin is None: origin__o = None
+ else: origin__o = origin._o
+ ret = libxml2mod.xmlXPtrNewContext(self._o, here__o, origin__o)
+ if ret is None:raise treeError('xmlXPtrNewContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+class parserCtxt(parserCtxtCore):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ parserCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeParserCtxt(self._o)
+ self._o = None
+
+ # accessors for parserCtxt
+ def doc(self):
+ """Get the document tree from a parser context. """
+ ret = libxml2mod.xmlParserGetDoc(self._o)
+ if ret is None:raise parserError('xmlParserGetDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def isValid(self):
+ """Get the validity information from a parser context. """
+ ret = libxml2mod.xmlParserGetIsValid(self._o)
+ return ret
+
+ def lineNumbers(self, linenumbers):
+ """Switch on the generation of line number for elements nodes. """
+ libxml2mod.xmlParserSetLineNumbers(self._o, linenumbers)
+
+ def loadSubset(self, loadsubset):
+ """Switch the parser to load the DTD without validating. """
+ libxml2mod.xmlParserSetLoadSubset(self._o, loadsubset)
+
+ def pedantic(self, pedantic):
+ """Switch the parser to be pedantic. """
+ libxml2mod.xmlParserSetPedantic(self._o, pedantic)
+
+ def replaceEntities(self, replaceEntities):
+ """Switch the parser to replace entities. """
+ libxml2mod.xmlParserSetReplaceEntities(self._o, replaceEntities)
+
+ def validate(self, validate):
+ """Switch the parser to validation mode. """
+ libxml2mod.xmlParserSetValidate(self._o, validate)
+
+ def wellFormed(self):
+ """Get the well formed information from a parser context. """
+ ret = libxml2mod.xmlParserGetWellFormed(self._o)
+ return ret
+
+ #
+ # parserCtxt functions from module HTMLparser
+ #
+
+ def htmlCtxtReadDoc(self, cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadDoc(self._o, cur, URL, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReadFd(self, fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadFd(self._o, fd, URL, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadFd() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReadFile(self, filename, encoding, options):
+ """parse an XML file from the filesystem or the network. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadFile(self._o, filename, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadFile() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReadMemory(self, buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.htmlCtxtReadMemory(self._o, buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('htmlCtxtReadMemory() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def htmlCtxtReset(self):
+ """Reset a parser context """
+ libxml2mod.htmlCtxtReset(self._o)
+
+ def htmlCtxtUseOptions(self, options):
+ """Applies the options to the parser context """
+ ret = libxml2mod.htmlCtxtUseOptions(self._o, options)
+ return ret
+
+ def htmlFreeParserCtxt(self):
+ """Free all the memory used by a parser context. However the
+ parsed document in ctxt->myDoc is not freed. """
+ libxml2mod.htmlFreeParserCtxt(self._o)
+
+ def htmlParseCharRef(self):
+ """parse Reference declarations [66] CharRef ::= '&#' [0-9]+
+ ';' | '&#x' [0-9a-fA-F]+ ';' """
+ ret = libxml2mod.htmlParseCharRef(self._o)
+ return ret
+
+ def htmlParseChunk(self, chunk, size, terminate):
+ """Parse a Chunk of memory """
+ ret = libxml2mod.htmlParseChunk(self._o, chunk, size, terminate)
+ return ret
+
+ def htmlParseDocument(self):
+ """parse an HTML document (and build a tree if using the
+ standard SAX interface). """
+ ret = libxml2mod.htmlParseDocument(self._o)
+ return ret
+
+ def htmlParseElement(self):
+ """parse an HTML element, this is highly recursive this is
+ kept for compatibility with previous code versions [39]
+ element ::= EmptyElemTag | STag content ETag [41]
+ Attribute ::= Name Eq AttValue """
+ libxml2mod.htmlParseElement(self._o)
+
+ #
+ # parserCtxt functions from module parser
+ #
+
+ def byteConsumed(self):
+ """This function provides the current index of the parser
+ relative to the start of the current entity. This function
+ is computed in bytes from the beginning starting at zero
+ and finishing at the size in byte of the file if parsing a
+ file. The function is of constant cost if the input is
+ UTF-8 but can be costly if run on non-UTF-8 input. """
+ ret = libxml2mod.xmlByteConsumed(self._o)
+ return ret
+
+ def clearParserCtxt(self):
+ """Clear (release owned resources) and reinitialize a parser
+ context """
+ libxml2mod.xmlClearParserCtxt(self._o)
+
+ def ctxtReadDoc(self, cur, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.xmlCtxtReadDoc(self._o, cur, URL, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReadFd(self, fd, URL, encoding, options):
+ """parse an XML from a file descriptor and build a tree. This
+ reuses the existing @ctxt parser context NOTE that the file
+ descriptor will not be closed when the reader is closed or
+ reset. """
+ ret = libxml2mod.xmlCtxtReadFd(self._o, fd, URL, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadFd() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReadFile(self, filename, encoding, options):
+ """parse an XML file from the filesystem or the network. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.xmlCtxtReadFile(self._o, filename, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadFile() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReadMemory(self, buffer, size, URL, encoding, options):
+ """parse an XML in-memory document and build a tree. This
+ reuses the existing @ctxt parser context """
+ ret = libxml2mod.xmlCtxtReadMemory(self._o, buffer, size, URL, encoding, options)
+ if ret is None:raise treeError('xmlCtxtReadMemory() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def ctxtReset(self):
+ """Reset a parser context """
+ libxml2mod.xmlCtxtReset(self._o)
+
+ def ctxtResetPush(self, chunk, size, filename, encoding):
+ """Reset a push parser context """
+ ret = libxml2mod.xmlCtxtResetPush(self._o, chunk, size, filename, encoding)
+ return ret
+
+ def ctxtUseOptions(self, options):
+ """Applies the options to the parser context """
+ ret = libxml2mod.xmlCtxtUseOptions(self._o, options)
+ return ret
+
+ def initParserCtxt(self):
+ """Initialize a parser context """
+ ret = libxml2mod.xmlInitParserCtxt(self._o)
+ return ret
+
+ def parseChunk(self, chunk, size, terminate):
+ """Parse a Chunk of memory """
+ ret = libxml2mod.xmlParseChunk(self._o, chunk, size, terminate)
+ return ret
+
+ def parseDocument(self):
+ """parse an XML document (and build a tree if using the
+ standard SAX interface). [1] document ::= prolog element
+ Misc* [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? """
+ ret = libxml2mod.xmlParseDocument(self._o)
+ return ret
+
+ def parseExtParsedEnt(self):
+ """parse a general parsed entity An external general parsed
+ entity is well-formed if it matches the production labeled
+ extParsedEnt. [78] extParsedEnt ::= TextDecl? content """
+ ret = libxml2mod.xmlParseExtParsedEnt(self._o)
+ return ret
+
+ def setupParserForBuffer(self, buffer, filename):
+ """Setup the parser context to parse a new buffer; Clears any
+ prior contents from the parser context. The buffer
+ parameter must not be None, but the filename parameter can
+ be """
+ libxml2mod.xmlSetupParserForBuffer(self._o, buffer, filename)
+
+ def stopParser(self):
+ """Blocks further parser processing """
+ libxml2mod.xmlStopParser(self._o)
+
+ #
+ # parserCtxt functions from module parserInternals
+ #
+
+ def decodeEntities(self, len, what, end, end2, end3):
+ """This function is deprecated, we now always process entities
+ content through xmlStringDecodeEntities TODO: remove it in
+ next major release. [67] Reference ::= EntityRef | CharRef
+ [69] PEReference ::= '%' Name ';' """
+ ret = libxml2mod.xmlDecodeEntities(self._o, len, what, end, end2, end3)
+ return ret
+
+ def handleEntity(self, entity):
+ """Default handling of defined entities, when should we define
+ a new input stream ? When do we just handle that as a set
+ of chars ? OBSOLETE: to be removed at some point. """
+ if entity is None: entity__o = None
+ else: entity__o = entity._o
+ libxml2mod.xmlHandleEntity(self._o, entity__o)
+
+ def namespaceParseNCName(self):
+ """parse an XML namespace name. TODO: this seems not in use
+ anymore, the namespace handling is done on top of the SAX
+ interfaces, i.e. not on raw input. [NS 3] NCName ::=
+ (Letter | '_') (NCNameChar)* [NS 4] NCNameChar ::= Letter
+ | Digit | '.' | '-' | '_' | CombiningChar | Extender """
+ ret = libxml2mod.xmlNamespaceParseNCName(self._o)
+ return ret
+
+ def namespaceParseNSDef(self):
+ """parse a namespace prefix declaration TODO: this seems not
+ in use anymore, the namespace handling is done on top of
+ the SAX interfaces, i.e. not on raw input. [NS 1] NSDef
+ ::= PrefixDef Eq SystemLiteral [NS 2] PrefixDef ::=
+ 'xmlns' (':' NCName)? """
+ ret = libxml2mod.xmlNamespaceParseNSDef(self._o)
+ return ret
+
+ def nextChar(self):
+ """Skip to the next char input char. """
+ libxml2mod.xmlNextChar(self._o)
+
+ def parseAttValue(self):
+ """parse a value for an attribute Note: the parser won't do
+ substitution of entities here, this will be handled later
+ in xmlStringGetNodeList [10] AttValue ::= '"' ([^<&"] |
+ Reference)* '"' | "'" ([^<&'] | Reference)* "'" 3.3.3
+ Attribute-Value Normalization: Before the value of an
+ attribute is passed to the application or checked for
+ validity, the XML processor must normalize it as follows: -
+ a character reference is processed by appending the
+ referenced character to the attribute value - an entity
+ reference is processed by recursively processing the
+ replacement text of the entity - a whitespace character
+ (#x20, #xD, #xA, #x9) is processed by appending #x20 to the
+ normalized value, except that only a single #x20 is
+ appended for a "#xD#xA" sequence that is part of an
+ external parsed entity or the literal entity value of an
+ internal parsed entity - other characters are processed by
+ appending them to the normalized value If the declared
+ value is not CDATA, then the XML processor must further
+ process the normalized attribute value by discarding any
+ leading and trailing space (#x20) characters, and by
+ replacing sequences of space (#x20) characters by a single
+ space (#x20) character. All attributes for which no
+ declaration has been read should be treated by a
+ non-validating parser as if declared CDATA. """
+ ret = libxml2mod.xmlParseAttValue(self._o)
+ return ret
+
+ def parseAttributeListDecl(self):
+ """: parse the Attribute list def for an element [52]
+ AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>' [53]
+ AttDef ::= S Name S AttType S DefaultDecl """
+ libxml2mod.xmlParseAttributeListDecl(self._o)
+
+ def parseCDSect(self):
+ """Parse escaped pure raw content. [18] CDSect ::= CDStart
+ CData CDEnd [19] CDStart ::= '<![CDATA[' [20] Data ::=
+ (Char* - (Char* ']]>' Char*)) [21] CDEnd ::= ']]>' """
+ libxml2mod.xmlParseCDSect(self._o)
+
+ def parseCharData(self, cdata):
+ """parse a CharData section. if we are within a CDATA section
+ ']]>' marks an end of section. The right angle bracket (>)
+ may be represented using the string "&gt;", and must, for
+ compatibility, be escaped using "&gt;" or a character
+ reference when it appears in the string "]]>" in content,
+ when that string is not marking the end of a CDATA section.
+ [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) """
+ libxml2mod.xmlParseCharData(self._o, cdata)
+
+ def parseCharRef(self):
+ """parse Reference declarations [66] CharRef ::= '&#' [0-9]+
+ ';' | '&#x' [0-9a-fA-F]+ ';' [ WFC: Legal Character ]
+ Characters referred to using character references must
+ match the production for Char. """
+ ret = libxml2mod.xmlParseCharRef(self._o)
+ return ret
+
+ def parseComment(self):
+ """Skip an XML (SGML) comment <!-- .... --> The spec says that
+ "For compatibility, the string "--" (double-hyphen) must
+ not occur within comments. " [15] Comment ::= '<!--'
+ ((Char - '-') | ('-' (Char - '-')))* '-->' """
+ libxml2mod.xmlParseComment(self._o)
+
+ def parseContent(self):
+ """Parse a content: [43] content ::= (element | CharData |
+ Reference | CDSect | PI | Comment)* """
+ libxml2mod.xmlParseContent(self._o)
+
+ def parseDocTypeDecl(self):
+ """parse a DOCTYPE declaration [28] doctypedecl ::=
+ '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl |
+ PEReference | S)* ']' S?)? '>' [ VC: Root Element Type ]
+ The Name in the document type declaration must match the
+ element type of the root element. """
+ libxml2mod.xmlParseDocTypeDecl(self._o)
+
+ def parseElement(self):
+ """parse an XML element, this is highly recursive [39]
+ element ::= EmptyElemTag | STag content ETag [ WFC:
+ Element Type Match ] The Name in an element's end-tag must
+ match the element type in the start-tag. """
+ libxml2mod.xmlParseElement(self._o)
+
+ def parseElementDecl(self):
+ """parse an Element declaration. [45] elementdecl ::=
+ '<!ELEMENT' S Name S contentspec S? '>' [ VC: Unique
+ Element Type Declaration ] No element type may be declared
+ more than once """
+ ret = libxml2mod.xmlParseElementDecl(self._o)
+ return ret
+
+ def parseEncName(self):
+ """parse the XML encoding name [81] EncName ::= [A-Za-z]
+ ([A-Za-z0-9._] | '-')* """
+ ret = libxml2mod.xmlParseEncName(self._o)
+ return ret
+
+ def parseEncodingDecl(self):
+ """parse the XML encoding declaration [80] EncodingDecl ::= S
+ 'encoding' Eq ('"' EncName '"' | "'" EncName "'") this
+ setups the conversion filters. """
+ ret = libxml2mod.xmlParseEncodingDecl(self._o)
+ return ret
+
+ def parseEndTag(self):
+ """parse an end of tag [42] ETag ::= '</' Name S? '>' With
+ namespace [NS 9] ETag ::= '</' QName S? '>' """
+ libxml2mod.xmlParseEndTag(self._o)
+
+ def parseEntityDecl(self):
+ """parse <!ENTITY declarations [70] EntityDecl ::= GEDecl |
+ PEDecl [71] GEDecl ::= '<!ENTITY' S Name S EntityDef S?
+ '>' [72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
+ [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
+ [74] PEDef ::= EntityValue | ExternalID [76] NDataDecl ::=
+ S 'NDATA' S Name [ VC: Notation Declared ] The Name must
+ match the declared name of a notation. """
+ libxml2mod.xmlParseEntityDecl(self._o)
+
+ def parseEntityRef(self):
+ """parse ENTITY references declarations [68] EntityRef ::=
+ '&' Name ';' [ WFC: Entity Declared ] In a document
+ without any DTD, a document with only an internal DTD
+ subset which contains no parameter entity references, or a
+ document with "standalone='yes'", the Name given in the
+ entity reference must match that in an entity declaration,
+ except that well-formed documents need not declare any of
+ the following entities: amp, lt, gt, apos, quot. The
+ declaration of a parameter entity must precede any
+ reference to it. Similarly, the declaration of a general
+ entity must precede any reference to it which appears in a
+ default value in an attribute-list declaration. Note that
+ if entities are declared in the external subset or in
+ external parameter entities, a non-validating processor is
+ not obligated to read and process their declarations; for
+ such documents, the rule that an entity must be declared is
+ a well-formedness constraint only if standalone='yes'. [
+ WFC: Parsed Entity ] An entity reference must not contain
+ the name of an unparsed entity """
+ ret = libxml2mod.xmlParseEntityRef(self._o)
+ if ret is None:raise parserError('xmlParseEntityRef() failed')
+ __tmp = xmlEntity(_obj=ret)
+ return __tmp
+
+ def parseExternalSubset(self, ExternalID, SystemID):
+ """parse Markup declarations from an external subset [30]
+ extSubset ::= textDecl? extSubsetDecl [31] extSubsetDecl
+ ::= (markupdecl | conditionalSect | PEReference | S) * """
+ libxml2mod.xmlParseExternalSubset(self._o, ExternalID, SystemID)
+
+ def parseMarkupDecl(self):
+ """parse Markup declarations [29] markupdecl ::= elementdecl
+ | AttlistDecl | EntityDecl | NotationDecl | PI | Comment [
+ VC: Proper Declaration/PE Nesting ] Parameter-entity
+ replacement text must be properly nested with markup
+ declarations. That is to say, if either the first character
+ or the last character of a markup declaration (markupdecl
+ above) is contained in the replacement text for a
+ parameter-entity reference, both must be contained in the
+ same replacement text. [ WFC: PEs in Internal Subset ] In
+ the internal DTD subset, parameter-entity references can
+ occur only where markup declarations can occur, not within
+ markup declarations. (This does not apply to references
+ that occur in external parameter entities or to the
+ external subset.) """
+ libxml2mod.xmlParseMarkupDecl(self._o)
+
+ def parseMisc(self):
+ """parse an XML Misc* optional field. [27] Misc ::= Comment |
+ PI | S """
+ libxml2mod.xmlParseMisc(self._o)
+
+ def parseName(self):
+ """parse an XML name. [4] NameChar ::= Letter | Digit | '.' |
+ '-' | '_' | ':' | CombiningChar | Extender [5] Name ::=
+ (Letter | '_' | ':') (NameChar)* [6] Names ::= Name (#x20
+ Name)* """
+ ret = libxml2mod.xmlParseName(self._o)
+ return ret
+
+ def parseNamespace(self):
+ """xmlParseNamespace: parse specific PI '<?namespace ...'
+ constructs. This is what the older xml-name Working Draft
+ specified, a bunch of other stuff may still rely on it, so
+ support is still here as if it was declared on the root of
+ the Tree:-( TODO: remove from library To be removed at
+ next drop of binary compatibility """
+ libxml2mod.xmlParseNamespace(self._o)
+
+ def parseNmtoken(self):
+ """parse an XML Nmtoken. [7] Nmtoken ::= (NameChar)+ [8]
+ Nmtokens ::= Nmtoken (#x20 Nmtoken)* """
+ ret = libxml2mod.xmlParseNmtoken(self._o)
+ return ret
+
+ def parseNotationDecl(self):
+ """parse a notation declaration [82] NotationDecl ::=
+ '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'
+ Hence there is actually 3 choices: 'PUBLIC' S PubidLiteral
+ 'PUBLIC' S PubidLiteral S SystemLiteral and 'SYSTEM' S
+ SystemLiteral See the NOTE on xmlParseExternalID(). """
+ libxml2mod.xmlParseNotationDecl(self._o)
+
+ def parsePEReference(self):
+ """parse PEReference declarations The entity content is
+ handled directly by pushing it's content as a new input
+ stream. [69] PEReference ::= '%' Name ';' [ WFC: No
+ Recursion ] A parsed entity must not contain a recursive
+ reference to itself, either directly or indirectly. [ WFC:
+ Entity Declared ] In a document without any DTD, a document
+ with only an internal DTD subset which contains no
+ parameter entity references, or a document with
+ "standalone='yes'", ... ... The declaration of a parameter
+ entity must precede any reference to it... [ VC: Entity
+ Declared ] In a document with an external subset or
+ external parameter entities with "standalone='no'", ...
+ ... The declaration of a parameter entity must precede any
+ reference to it... [ WFC: In DTD ] Parameter-entity
+ references may only appear in the DTD. NOTE: misleading but
+ this is handled. """
+ libxml2mod.xmlParsePEReference(self._o)
+
+ def parsePI(self):
+ """parse an XML Processing Instruction. [16] PI ::= '<?'
+ PITarget (S (Char* - (Char* '?>' Char*)))? '?>' The
+ processing is transfered to SAX once parsed. """
+ libxml2mod.xmlParsePI(self._o)
+
+ def parsePITarget(self):
+ """parse the name of a PI [17] PITarget ::= Name - (('X' |
+ 'x') ('M' | 'm') ('L' | 'l')) """
+ ret = libxml2mod.xmlParsePITarget(self._o)
+ return ret
+
+ def parsePubidLiteral(self):
+ """parse an XML public literal [12] PubidLiteral ::= '"'
+ PubidChar* '"' | "'" (PubidChar - "'")* "'" """
+ ret = libxml2mod.xmlParsePubidLiteral(self._o)
+ return ret
+
+ def parseQuotedString(self):
+ """Parse and return a string between quotes or doublequotes
+ TODO: Deprecated, to be removed at next drop of binary
+ compatibility """
+ ret = libxml2mod.xmlParseQuotedString(self._o)
+ return ret
+
+ def parseReference(self):
+ """parse and handle entity references in content, depending on
+ the SAX interface, this may end-up in a call to character()
+ if this is a CharRef, a predefined entity, if there is no
+ reference() callback. or if the parser was asked to switch
+ to that mode. [67] Reference ::= EntityRef | CharRef """
+ libxml2mod.xmlParseReference(self._o)
+
+ def parseSDDecl(self):
+ """parse the XML standalone declaration [32] SDDecl ::= S
+ 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' |
+ 'no')'"')) [ VC: Standalone Document Declaration ] TODO
+ The standalone document declaration must have the value
+ "no" if any external markup declarations contain
+ declarations of: - attributes with default values, if
+ elements to which these attributes apply appear in the
+ document without specifications of values for these
+ attributes, or - entities (other than amp, lt, gt, apos,
+ quot), if references to those entities appear in the
+ document, or - attributes with values subject to
+ normalization, where the attribute appears in the document
+ with a value which will change as a result of
+ normalization, or - element types with element content, if
+ white space occurs directly within any instance of those
+ types. """
+ ret = libxml2mod.xmlParseSDDecl(self._o)
+ return ret
+
+ def parseStartTag(self):
+ """parse a start of tag either for rule element or
+ EmptyElement. In both case we don't parse the tag closing
+ chars. [40] STag ::= '<' Name (S Attribute)* S? '>' [
+ WFC: Unique Att Spec ] No attribute name may appear more
+ than once in the same start-tag or empty-element tag. [44]
+ EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' [ WFC:
+ Unique Att Spec ] No attribute name may appear more than
+ once in the same start-tag or empty-element tag. With
+ namespace: [NS 8] STag ::= '<' QName (S Attribute)* S? '>'
+ [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>' """
+ ret = libxml2mod.xmlParseStartTag(self._o)
+ return ret
+
+ def parseSystemLiteral(self):
+ """parse an XML Literal [11] SystemLiteral ::= ('"' [^"]*
+ '"') | ("'" [^']* "'") """
+ ret = libxml2mod.xmlParseSystemLiteral(self._o)
+ return ret
+
+ def parseTextDecl(self):
+ """parse an XML declaration header for external entities [77]
+ TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>' """
+ libxml2mod.xmlParseTextDecl(self._o)
+
+ def parseVersionInfo(self):
+ """parse the XML version. [24] VersionInfo ::= S 'version' Eq
+ (' VersionNum ' | " VersionNum ") [25] Eq ::= S? '=' S? """
+ ret = libxml2mod.xmlParseVersionInfo(self._o)
+ return ret
+
+ def parseVersionNum(self):
+ """parse the XML version value. [26] VersionNum ::= '1.'
+ [0-9]+ In practice allow [0-9].[0-9]+ at that level """
+ ret = libxml2mod.xmlParseVersionNum(self._o)
+ return ret
+
+ def parseXMLDecl(self):
+ """parse an XML declaration header [23] XMLDecl ::= '<?xml'
+ VersionInfo EncodingDecl? SDDecl? S? '?>' """
+ libxml2mod.xmlParseXMLDecl(self._o)
+
+ def parserHandlePEReference(self):
+ """[69] PEReference ::= '%' Name ';' [ WFC: No Recursion ] A
+ parsed entity must not contain a recursive reference to
+ itself, either directly or indirectly. [ WFC: Entity
+ Declared ] In a document without any DTD, a document with
+ only an internal DTD subset which contains no parameter
+ entity references, or a document with "standalone='yes'",
+ ... ... The declaration of a parameter entity must precede
+ any reference to it... [ VC: Entity Declared ] In a
+ document with an external subset or external parameter
+ entities with "standalone='no'", ... ... The declaration
+ of a parameter entity must precede any reference to it...
+ [ WFC: In DTD ] Parameter-entity references may only appear
+ in the DTD. NOTE: misleading but this is handled. A
+ PEReference may have been detected in the current input
+ stream the handling is done accordingly to
+ http://www.w3.org/TR/REC-xml#entproc i.e. - Included in
+ literal in entity values - Included as Parameter Entity
+ reference within DTDs """
+ libxml2mod.xmlParserHandlePEReference(self._o)
+
+ def parserHandleReference(self):
+ """TODO: Remove, now deprecated ... the test is done directly
+ in the content parsing routines. [67] Reference ::=
+ EntityRef | CharRef [68] EntityRef ::= '&' Name ';' [
+ WFC: Entity Declared ] the Name given in the entity
+ reference must match that in an entity declaration, except
+ that well-formed documents need not declare any of the
+ following entities: amp, lt, gt, apos, quot. [ WFC: Parsed
+ Entity ] An entity reference must not contain the name of
+ an unparsed entity [66] CharRef ::= '&#' [0-9]+ ';' |
+ '&#x' [0-9a-fA-F]+ ';' A PEReference may have been
+ detected in the current input stream the handling is done
+ accordingly to http://www.w3.org/TR/REC-xml#entproc """
+ libxml2mod.xmlParserHandleReference(self._o)
+
+ def popInput(self):
+ """xmlPopInput: the current input pointed by ctxt->input came
+ to an end pop it and return the next char. """
+ ret = libxml2mod.xmlPopInput(self._o)
+ return ret
+
+ def scanName(self):
+ """Trickery: parse an XML name but without consuming the input
+ flow Needed for rollback cases. Used only when parsing
+ entities references. TODO: seems deprecated now, only used
+ in the default part of xmlParserHandleReference [4]
+ NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
+ CombiningChar | Extender [5] Name ::= (Letter | '_' | ':')
+ (NameChar)* [6] Names ::= Name (S Name)* """
+ ret = libxml2mod.xmlScanName(self._o)
+ return ret
+
+ def skipBlankChars(self):
+ """skip all blanks character found at that point in the input
+ streams. It pops up finished entities in the process if
+ allowable at that point. """
+ ret = libxml2mod.xmlSkipBlankChars(self._o)
+ return ret
+
+ def stringDecodeEntities(self, str, what, end, end2, end3):
+ """Takes a entity string content and process to do the
+ adequate substitutions. [67] Reference ::= EntityRef |
+ CharRef [69] PEReference ::= '%' Name ';' """
+ ret = libxml2mod.xmlStringDecodeEntities(self._o, str, what, end, end2, end3)
+ return ret
+
+ def stringLenDecodeEntities(self, str, len, what, end, end2, end3):
+ """Takes a entity string content and process to do the
+ adequate substitutions. [67] Reference ::= EntityRef |
+ CharRef [69] PEReference ::= '%' Name ';' """
+ ret = libxml2mod.xmlStringLenDecodeEntities(self._o, str, len, what, end, end2, end3)
+ return ret
+
+class xmlAttr(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlAttr got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlAttr (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlAttr functions from module debugXML
+ #
+
+ def debugDumpAttr(self, output, depth):
+ """Dumps debug information for the attribute """
+ libxml2mod.xmlDebugDumpAttr(output, self._o, depth)
+
+ def debugDumpAttrList(self, output, depth):
+ """Dumps debug information for the attribute list """
+ libxml2mod.xmlDebugDumpAttrList(output, self._o, depth)
+
+ #
+ # xmlAttr functions from module tree
+ #
+
+ def copyProp(self, target):
+ """Do a copy of the attribute. """
+ if target is None: target__o = None
+ else: target__o = target._o
+ ret = libxml2mod.xmlCopyProp(target__o, self._o)
+ if ret is None:raise treeError('xmlCopyProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def copyPropList(self, target):
+ """Do a copy of an attribute list. """
+ if target is None: target__o = None
+ else: target__o = target._o
+ ret = libxml2mod.xmlCopyPropList(target__o, self._o)
+ if ret is None:raise treeError('xmlCopyPropList() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def freeProp(self):
+ """Free one attribute, all the content is freed too """
+ libxml2mod.xmlFreeProp(self._o)
+
+ def freePropList(self):
+ """Free a property and all its siblings, all the children are
+ freed too. """
+ libxml2mod.xmlFreePropList(self._o)
+
+ def removeProp(self):
+ """Unlink and free one attribute, all the content is freed too
+ Note this doesn't work for namespace definition attributes """
+ ret = libxml2mod.xmlRemoveProp(self._o)
+ return ret
+
+ #
+ # xmlAttr functions from module valid
+ #
+
+ def removeID(self, doc):
+ """Remove the given attribute from the ID table maintained
+ internally. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlRemoveID(doc__o, self._o)
+ return ret
+
+ def removeRef(self, doc):
+ """Remove the given attribute from the Ref table maintained
+ internally. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlRemoveRef(doc__o, self._o)
+ return ret
+
+class xmlAttribute(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlAttribute got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlAttribute (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+class catalog:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeCatalog(self._o)
+ self._o = None
+
+ #
+ # catalog functions from module catalog
+ #
+
+ def add(self, type, orig, replace):
+ """Add an entry in the catalog, it may overwrite existing but
+ different entries. """
+ ret = libxml2mod.xmlACatalogAdd(self._o, type, orig, replace)
+ return ret
+
+ def catalogIsEmpty(self):
+ """Check is a catalog is empty """
+ ret = libxml2mod.xmlCatalogIsEmpty(self._o)
+ return ret
+
+ def convertSGMLCatalog(self):
+ """Convert all the SGML catalog entries as XML ones """
+ ret = libxml2mod.xmlConvertSGMLCatalog(self._o)
+ return ret
+
+ def dump(self, out):
+ """Dump the given catalog to the given file. """
+ libxml2mod.xmlACatalogDump(self._o, out)
+
+ def remove(self, value):
+ """Remove an entry from the catalog """
+ ret = libxml2mod.xmlACatalogRemove(self._o, value)
+ return ret
+
+ def resolve(self, pubID, sysID):
+ """Do a complete resolution lookup of an External Identifier """
+ ret = libxml2mod.xmlACatalogResolve(self._o, pubID, sysID)
+ return ret
+
+ def resolvePublic(self, pubID):
+ """Try to lookup the catalog local reference associated to a
+ public ID in that catalog """
+ ret = libxml2mod.xmlACatalogResolvePublic(self._o, pubID)
+ return ret
+
+ def resolveSystem(self, sysID):
+ """Try to lookup the catalog resource for a system ID """
+ ret = libxml2mod.xmlACatalogResolveSystem(self._o, sysID)
+ return ret
+
+ def resolveURI(self, URI):
+ """Do a complete resolution lookup of an URI """
+ ret = libxml2mod.xmlACatalogResolveURI(self._o, URI)
+ return ret
+
+class xmlDtd(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlDtd got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlDtd (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlDtd functions from module debugXML
+ #
+
+ def debugDumpDTD(self, output):
+ """Dumps debug information for the DTD """
+ libxml2mod.xmlDebugDumpDTD(output, self._o)
+
+ #
+ # xmlDtd functions from module tree
+ #
+
+ def copyDtd(self):
+ """Do a copy of the dtd. """
+ ret = libxml2mod.xmlCopyDtd(self._o)
+ if ret is None:raise treeError('xmlCopyDtd() failed')
+ __tmp = xmlDtd(_obj=ret)
+ return __tmp
+
+ def freeDtd(self):
+ """Free a DTD structure. """
+ libxml2mod.xmlFreeDtd(self._o)
+
+ #
+ # xmlDtd functions from module valid
+ #
+
+ def dtdAttrDesc(self, elem, name):
+ """Search the DTD for the description of this attribute on
+ this element. """
+ ret = libxml2mod.xmlGetDtdAttrDesc(self._o, elem, name)
+ if ret is None:raise treeError('xmlGetDtdAttrDesc() failed')
+ __tmp = xmlAttribute(_obj=ret)
+ return __tmp
+
+ def dtdElementDesc(self, name):
+ """Search the DTD for the description of this element """
+ ret = libxml2mod.xmlGetDtdElementDesc(self._o, name)
+ if ret is None:raise treeError('xmlGetDtdElementDesc() failed')
+ __tmp = xmlElement(_obj=ret)
+ return __tmp
+
+ def dtdQAttrDesc(self, elem, name, prefix):
+ """Search the DTD for the description of this qualified
+ attribute on this element. """
+ ret = libxml2mod.xmlGetDtdQAttrDesc(self._o, elem, name, prefix)
+ if ret is None:raise treeError('xmlGetDtdQAttrDesc() failed')
+ __tmp = xmlAttribute(_obj=ret)
+ return __tmp
+
+ def dtdQElementDesc(self, name, prefix):
+ """Search the DTD for the description of this element """
+ ret = libxml2mod.xmlGetDtdQElementDesc(self._o, name, prefix)
+ if ret is None:raise treeError('xmlGetDtdQElementDesc() failed')
+ __tmp = xmlElement(_obj=ret)
+ return __tmp
+
+class xmlElement(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlElement got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlElement (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+class xmlEntity(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlEntity got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlEntity (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlEntity functions from module parserInternals
+ #
+
+ def handleEntity(self, ctxt):
+ """Default handling of defined entities, when should we define
+ a new input stream ? When do we just handle that as a set
+ of chars ? OBSOLETE: to be removed at some point. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ libxml2mod.xmlHandleEntity(ctxt__o, self._o)
+
+class Error:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ # accessors for Error
+ def code(self):
+ """The error code, e.g. an xmlParserError """
+ ret = libxml2mod.xmlErrorGetCode(self._o)
+ return ret
+
+ def domain(self):
+ """What part of the library raised this error """
+ ret = libxml2mod.xmlErrorGetDomain(self._o)
+ return ret
+
+ def file(self):
+ """the filename """
+ ret = libxml2mod.xmlErrorGetFile(self._o)
+ return ret
+
+ def level(self):
+ """how consequent is the error """
+ ret = libxml2mod.xmlErrorGetLevel(self._o)
+ return ret
+
+ def line(self):
+ """the line number if available """
+ ret = libxml2mod.xmlErrorGetLine(self._o)
+ return ret
+
+ def message(self):
+ """human-readable informative error message """
+ ret = libxml2mod.xmlErrorGetMessage(self._o)
+ return ret
+
+ #
+ # Error functions from module xmlerror
+ #
+
+ def copyError(self, to):
+ """Save the original error to the new place. """
+ if to is None: to__o = None
+ else: to__o = to._o
+ ret = libxml2mod.xmlCopyError(self._o, to__o)
+ return ret
+
+ def resetError(self):
+ """Cleanup the error. """
+ libxml2mod.xmlResetError(self._o)
+
+class xmlNs(xmlNode):
+ def __init__(self, _obj=None):
+ if checkWrapper(_obj) != 0: raise TypeError('xmlNs got a wrong wrapper object type')
+ self._o = _obj
+ xmlNode.__init__(self, _obj=_obj)
+
+ def __repr__(self):
+ return "<xmlNs (%s) object at 0x%x>" % (self.name, int(pos_id (self)))
+
+ #
+ # xmlNs functions from module tree
+ #
+
+ def copyNamespace(self):
+ """Do a copy of the namespace. """
+ ret = libxml2mod.xmlCopyNamespace(self._o)
+ if ret is None:raise treeError('xmlCopyNamespace() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def copyNamespaceList(self):
+ """Do a copy of an namespace list. """
+ ret = libxml2mod.xmlCopyNamespaceList(self._o)
+ if ret is None:raise treeError('xmlCopyNamespaceList() failed')
+ __tmp = xmlNs(_obj=ret)
+ return __tmp
+
+ def freeNs(self):
+ """Free up the structures associated to a namespace """
+ libxml2mod.xmlFreeNs(self._o)
+
+ def freeNsList(self):
+ """Free up all the structures associated to the chained
+ namespaces. """
+ libxml2mod.xmlFreeNsList(self._o)
+
+ def newChild(self, parent, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child list containing the TEXTs and ENTITY_REFs node will
+ be created. NOTE: @content is supposed to be a piece of XML
+ CDATA, so it allows entity references. XML special chars
+ must be escaped first by using
+ xmlEncodeEntitiesReentrant(), or xmlNewTextChild() should
+ be used. """
+ if parent is None: parent__o = None
+ else: parent__o = parent._o
+ ret = libxml2mod.xmlNewChild(parent__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNode(self, doc, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNewDocNode(doc__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocNodeEatName(self, doc, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). NOTE: @content is supposed to
+ be a piece of XML CDATA, so it allow entities references,
+ but XML special chars need to be escaped first by using
+ xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you
+ don't need entities support. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNewDocNodeEatName(doc__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocNodeEatName() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newDocRawNode(self, doc, name, content):
+ """Creation of a new node element within a document. @ns and
+ @content are optional (None). """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlNewDocRawNode(doc__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewDocRawNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newNodeEatName(self, name):
+ """Creation of a new node element. @ns is optional (None). """
+ ret = libxml2mod.xmlNewNodeEatName(self._o, name)
+ if ret is None:raise treeError('xmlNewNodeEatName() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def newNsProp(self, node, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlNewNsProp(node__o, self._o, name, value)
+ if ret is None:raise treeError('xmlNewNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newNsPropEatName(self, node, name, value):
+ """Create a new property tagged with a namespace and carried
+ by a node. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlNewNsPropEatName(node__o, self._o, name, value)
+ if ret is None:raise treeError('xmlNewNsPropEatName() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def newTextChild(self, parent, name, content):
+ """Creation of a new child element, added at the end of
+ @parent children list. @ns and @content parameters are
+ optional (None). If @ns is None, the newly created element
+ inherits the namespace of @parent. If @content is non None,
+ a child TEXT node will be created containing the string
+ @content. NOTE: Use xmlNewChild() if @content will contain
+ entities that need to be preserved. Use this function,
+ xmlNewTextChild(), if you need to ensure that reserved XML
+ chars that might appear in @content, such as the ampersand,
+ greater-than or less-than signs, are automatically replaced
+ by their XML escaped entity representations. """
+ if parent is None: parent__o = None
+ else: parent__o = parent._o
+ ret = libxml2mod.xmlNewTextChild(parent__o, self._o, name, content)
+ if ret is None:raise treeError('xmlNewTextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def setNs(self, node):
+ """Associate a namespace to a node, a posteriori. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ libxml2mod.xmlSetNs(node__o, self._o)
+
+ def setNsProp(self, node, name, value):
+ """Set (or reset) an attribute carried by a node. The ns
+ structure must be in scope, this is not checked """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlSetNsProp(node__o, self._o, name, value)
+ if ret is None:raise treeError('xmlSetNsProp() failed')
+ __tmp = xmlAttr(_obj=ret)
+ return __tmp
+
+ def unsetNsProp(self, node, name):
+ """Remove an attribute carried by a node. """
+ if node is None: node__o = None
+ else: node__o = node._o
+ ret = libxml2mod.xmlUnsetNsProp(node__o, self._o, name)
+ return ret
+
+ #
+ # xmlNs functions from module xpathInternals
+ #
+
+ def xpathNodeSetFreeNs(self):
+ """Namespace nodes in libxml don't match the XPath semantic.
+ In a node set the namespace nodes are duplicated and the
+ next pointer is set to the parent node in the XPath
+ semantic. Check if such a node needs to be freed """
+ libxml2mod.xmlXPathNodeSetFreeNs(self._o)
+
+class outputBuffer(ioWriteWrapper):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ ioWriteWrapper.__init__(self, _obj=_obj)
+
+ #
+ # outputBuffer functions from module HTMLtree
+ #
+
+ def htmlDocContentDumpFormatOutput(self, cur, encoding, format):
+ """Dump an HTML document. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlDocContentDumpFormatOutput(self._o, cur__o, encoding, format)
+
+ def htmlDocContentDumpOutput(self, cur, encoding):
+ """Dump an HTML document. Formating return/spaces are added. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlDocContentDumpOutput(self._o, cur__o, encoding)
+
+ def htmlNodeDumpFormatOutput(self, doc, cur, encoding, format):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpFormatOutput(self._o, doc__o, cur__o, encoding, format)
+
+ def htmlNodeDumpOutput(self, doc, cur, encoding):
+ """Dump an HTML node, recursive behaviour,children are printed
+ too, and formatting returns/spaces are added. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.htmlNodeDumpOutput(self._o, doc__o, cur__o, encoding)
+
+ #
+ # outputBuffer functions from module tree
+ #
+
+ def nodeDumpOutput(self, doc, cur, level, format, encoding):
+ """Dump an XML node, recursive behaviour, children are printed
+ too. Note that @format = 1 provide node indenting only if
+ xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was
+ called """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ libxml2mod.xmlNodeDumpOutput(self._o, doc__o, cur__o, level, format, encoding)
+
+ def saveFileTo(self, cur, encoding):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlSaveFileTo(self._o, cur__o, encoding)
+ return ret
+
+ def saveFormatFileTo(self, cur, encoding, format):
+ """Dump an XML document to an I/O buffer. Warning ! This call
+ xmlOutputBufferClose() on buf which is not available after
+ this call. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlSaveFormatFileTo(self._o, cur__o, encoding, format)
+ return ret
+
+ #
+ # outputBuffer functions from module xmlIO
+ #
+
+ def getContent(self):
+ """Gives a pointer to the data currently held in the output
+ buffer """
+ ret = libxml2mod.xmlOutputBufferGetContent(self._o)
+ return ret
+
+ def write(self, len, buf):
+ """Write the content of the array in the output I/O buffer
+ This routine handle the I18N transcoding from internal
+ UTF-8 The buffer is lossless, i.e. will store in case of
+ partial or delayed writes. """
+ ret = libxml2mod.xmlOutputBufferWrite(self._o, len, buf)
+ return ret
+
+ def writeString(self, str):
+ """Write the content of the string in the output I/O buffer
+ This routine handle the I18N transcoding from internal
+ UTF-8 The buffer is lossless, i.e. will store in case of
+ partial or delayed writes. """
+ ret = libxml2mod.xmlOutputBufferWriteString(self._o, str)
+ return ret
+
+class inputBuffer(ioReadWrapper):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ ioReadWrapper.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeParserInputBuffer(self._o)
+ self._o = None
+
+ #
+ # inputBuffer functions from module xmlIO
+ #
+
+ def grow(self, len):
+ """Grow up the content of the input buffer, the old data are
+ preserved This routine handle the I18N transcoding to
+ internal UTF-8 This routine is used when operating the
+ parser in normal (pull) mode TODO: one should be able to
+ remove one extra copy by copying directly onto in->buffer
+ or in->raw """
+ ret = libxml2mod.xmlParserInputBufferGrow(self._o, len)
+ return ret
+
+ def push(self, len, buf):
+ """Push the content of the arry in the input buffer This
+ routine handle the I18N transcoding to internal UTF-8 This
+ is used when operating the parser in progressive (push)
+ mode. """
+ ret = libxml2mod.xmlParserInputBufferPush(self._o, len, buf)
+ return ret
+
+ def read(self, len):
+ """Refresh the content of the input buffer, the old data are
+ considered consumed This routine handle the I18N
+ transcoding to internal UTF-8 """
+ ret = libxml2mod.xmlParserInputBufferRead(self._o, len)
+ return ret
+
+ #
+ # inputBuffer functions from module xmlreader
+ #
+
+ def Setup(self, reader, URL, encoding, options):
+ """Setup an XML reader with new options """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderSetup(reader__o, self._o, URL, encoding, options)
+ return ret
+
+ def newTextReader(self, URI):
+ """Create an xmlTextReader structure fed with @input """
+ ret = libxml2mod.xmlNewTextReader(self._o, URI)
+ if ret is None:raise treeError('xmlNewTextReader() failed')
+ __tmp = xmlTextReader(_obj=ret)
+ __tmp.input = self
+ return __tmp
+
+class xmlReg:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRegFreeRegexp(self._o)
+ self._o = None
+
+ #
+ # xmlReg functions from module xmlregexp
+ #
+
+ def regexpExec(self, content):
+ """Check if the regular expression generates the value """
+ ret = libxml2mod.xmlRegexpExec(self._o, content)
+ return ret
+
+ def regexpIsDeterminist(self):
+ """Check if the regular expression is determinist """
+ ret = libxml2mod.xmlRegexpIsDeterminist(self._o)
+ return ret
+
+ def regexpPrint(self, output):
+ """Print the content of the compiled regular expression """
+ libxml2mod.xmlRegexpPrint(output, self._o)
+
+class relaxNgParserCtxt:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRelaxNGFreeParserCtxt(self._o)
+ self._o = None
+
+ #
+ # relaxNgParserCtxt functions from module relaxng
+ #
+
+ def relaxNGParse(self):
+ """parse a schema definition resource and build an internal
+ XML Shema struture which can be used to validate instances. """
+ ret = libxml2mod.xmlRelaxNGParse(self._o)
+ if ret is None:raise parserError('xmlRelaxNGParse() failed')
+ __tmp = relaxNgSchema(_obj=ret)
+ return __tmp
+
+ def relaxParserSetFlag(self, flags):
+ """Semi private function used to pass informations to a parser
+ context which are a combination of xmlRelaxNGParserFlag . """
+ ret = libxml2mod.xmlRelaxParserSetFlag(self._o, flags)
+ return ret
+
+class relaxNgSchema:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRelaxNGFree(self._o)
+ self._o = None
+
+ #
+ # relaxNgSchema functions from module relaxng
+ #
+
+ def relaxNGDump(self, output):
+ """Dump a RelaxNG structure back """
+ libxml2mod.xmlRelaxNGDump(output, self._o)
+
+ def relaxNGDumpTree(self, output):
+ """Dump the transformed RelaxNG tree. """
+ libxml2mod.xmlRelaxNGDumpTree(output, self._o)
+
+ def relaxNGNewValidCtxt(self):
+ """Create an XML RelaxNGs validation context based on the
+ given schema """
+ ret = libxml2mod.xmlRelaxNGNewValidCtxt(self._o)
+ if ret is None:raise treeError('xmlRelaxNGNewValidCtxt() failed')
+ __tmp = relaxNgValidCtxt(_obj=ret)
+ __tmp.schema = self
+ return __tmp
+
+ #
+ # relaxNgSchema functions from module xmlreader
+ #
+
+ def RelaxNGSetSchema(self, reader):
+ """Use RelaxNG to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then RelaxNG validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderRelaxNGSetSchema(reader__o, self._o)
+ return ret
+
+class relaxNgValidCtxt(relaxNgValidCtxtCore):
+ def __init__(self, _obj=None):
+ self.schema = None
+ self._o = _obj
+ relaxNgValidCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlRelaxNGFreeValidCtxt(self._o)
+ self._o = None
+
+ #
+ # relaxNgValidCtxt functions from module relaxng
+ #
+
+ def relaxNGValidateDoc(self, doc):
+ """Validate a document tree in memory. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlRelaxNGValidateDoc(self._o, doc__o)
+ return ret
+
+ def relaxNGValidateFullElement(self, doc, elem):
+ """Validate a full subtree when
+ xmlRelaxNGValidatePushElement() returned 0 and the content
+ of the node has been expanded. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidateFullElement(self._o, doc__o, elem__o)
+ return ret
+
+ def relaxNGValidatePopElement(self, doc, elem):
+ """Pop the element end from the RelaxNG validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePopElement(self._o, doc__o, elem__o)
+ return ret
+
+ def relaxNGValidatePushCData(self, data, len):
+ """check the CData parsed for validation in the current stack """
+ ret = libxml2mod.xmlRelaxNGValidatePushCData(self._o, data, len)
+ return ret
+
+ def relaxNGValidatePushElement(self, doc, elem):
+ """Push a new element start on the RelaxNG validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlRelaxNGValidatePushElement(self._o, doc__o, elem__o)
+ return ret
+
+ #
+ # relaxNgValidCtxt functions from module xmlreader
+ #
+
+ def RelaxNGValidateCtxt(self, reader, options):
+ """Use RelaxNG schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then RelaxNG schema validation is
+ deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderRelaxNGValidateCtxt(reader__o, self._o, options)
+ return ret
+
+class SchemaParserCtxt:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlSchemaFreeParserCtxt(self._o)
+ self._o = None
+
+ #
+ # SchemaParserCtxt functions from module xmlschemas
+ #
+
+ def schemaParse(self):
+ """parse a schema definition resource and build an internal
+ XML Shema struture which can be used to validate instances. """
+ ret = libxml2mod.xmlSchemaParse(self._o)
+ if ret is None:raise parserError('xmlSchemaParse() failed')
+ __tmp = Schema(_obj=ret)
+ return __tmp
+
+class Schema:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlSchemaFree(self._o)
+ self._o = None
+
+ #
+ # Schema functions from module xmlreader
+ #
+
+ def SetSchema(self, reader):
+ """Use XSD Schema to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then Schema validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderSetSchema(reader__o, self._o)
+ return ret
+
+ #
+ # Schema functions from module xmlschemas
+ #
+
+ def schemaDump(self, output):
+ """Dump a Schema structure. """
+ libxml2mod.xmlSchemaDump(output, self._o)
+
+ def schemaNewValidCtxt(self):
+ """Create an XML Schemas validation context based on the given
+ schema. """
+ ret = libxml2mod.xmlSchemaNewValidCtxt(self._o)
+ if ret is None:raise treeError('xmlSchemaNewValidCtxt() failed')
+ __tmp = SchemaValidCtxt(_obj=ret)
+ __tmp.schema = self
+ return __tmp
+
+class SchemaValidCtxt(SchemaValidCtxtCore):
+ def __init__(self, _obj=None):
+ self.schema = None
+ self._o = _obj
+ SchemaValidCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlSchemaFreeValidCtxt(self._o)
+ self._o = None
+
+ #
+ # SchemaValidCtxt functions from module xmlreader
+ #
+
+ def SchemaValidateCtxt(self, reader, options):
+ """Use W3C XSD schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then XML Schema validation is
+ deactivated. """
+ if reader is None: reader__o = None
+ else: reader__o = reader._o
+ ret = libxml2mod.xmlTextReaderSchemaValidateCtxt(reader__o, self._o, options)
+ return ret
+
+ #
+ # SchemaValidCtxt functions from module xmlschemas
+ #
+
+ def schemaIsValid(self):
+ """Check if any error was detected during validation. """
+ ret = libxml2mod.xmlSchemaIsValid(self._o)
+ return ret
+
+ def schemaSetValidOptions(self, options):
+ """Sets the options to be used during the validation. """
+ ret = libxml2mod.xmlSchemaSetValidOptions(self._o, options)
+ return ret
+
+ def schemaValidCtxtGetOptions(self):
+ """Get the validation context options. """
+ ret = libxml2mod.xmlSchemaValidCtxtGetOptions(self._o)
+ return ret
+
+ def schemaValidCtxtGetParserCtxt(self):
+ """allow access to the parser context of the schema validation
+ context """
+ ret = libxml2mod.xmlSchemaValidCtxtGetParserCtxt(self._o)
+ if ret is None:raise parserError('xmlSchemaValidCtxtGetParserCtxt() failed')
+ __tmp = parserCtxt(_obj=ret)
+ return __tmp
+
+ def schemaValidateDoc(self, doc):
+ """Validate a document tree in memory. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlSchemaValidateDoc(self._o, doc__o)
+ return ret
+
+ def schemaValidateFile(self, filename, options):
+ """Do a schemas validation of the given resource, it will use
+ the SAX streamable validation internally. """
+ ret = libxml2mod.xmlSchemaValidateFile(self._o, filename, options)
+ return ret
+
+ def schemaValidateOneElement(self, elem):
+ """Validate a branch of a tree, starting with the given @elem. """
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlSchemaValidateOneElement(self._o, elem__o)
+ return ret
+
+ def schemaValidateSetFilename(self, filename):
+ """Workaround to provide file error reporting information when
+ this is not provided by current APIs """
+ libxml2mod.xmlSchemaValidateSetFilename(self._o, filename)
+
+class xmlTextReaderLocator:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ #
+ # xmlTextReaderLocator functions from module xmlreader
+ #
+
+ def BaseURI(self):
+ """Obtain the base URI for the given locator. """
+ ret = libxml2mod.xmlTextReaderLocatorBaseURI(self._o)
+ return ret
+
+ def LineNumber(self):
+ """Obtain the line number for the given locator. """
+ ret = libxml2mod.xmlTextReaderLocatorLineNumber(self._o)
+ return ret
+
+class xmlTextReader(xmlTextReaderCore):
+ def __init__(self, _obj=None):
+ self.input = None
+ self._o = _obj
+ xmlTextReaderCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeTextReader(self._o)
+ self._o = None
+
+ #
+ # xmlTextReader functions from module xmlreader
+ #
+
+ def AttributeCount(self):
+ """Provides the number of attributes of the current node """
+ ret = libxml2mod.xmlTextReaderAttributeCount(self._o)
+ return ret
+
+ def BaseUri(self):
+ """The base URI of the node. """
+ ret = libxml2mod.xmlTextReaderConstBaseUri(self._o)
+ return ret
+
+ def ByteConsumed(self):
+ """This function provides the current index of the parser used
+ by the reader, relative to the start of the current entity.
+ This function actually just wraps a call to
+ xmlBytesConsumed() for the parser context associated with
+ the reader. See xmlBytesConsumed() for more information. """
+ ret = libxml2mod.xmlTextReaderByteConsumed(self._o)
+ return ret
+
+ def Close(self):
+ """This method releases any resources allocated by the current
+ instance changes the state to Closed and close any
+ underlying input. """
+ ret = libxml2mod.xmlTextReaderClose(self._o)
+ return ret
+
+ def CurrentDoc(self):
+ """Hacking interface allowing to get the xmlDocPtr
+ correponding to the current document being accessed by the
+ xmlTextReader. NOTE: as a result of this call, the reader
+ will not destroy the associated XML document and calling
+ xmlFreeDoc() on the result is needed once the reader
+ parsing has finished. """
+ ret = libxml2mod.xmlTextReaderCurrentDoc(self._o)
+ if ret is None:raise treeError('xmlTextReaderCurrentDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def CurrentNode(self):
+ """Hacking interface allowing to get the xmlNodePtr
+ correponding to the current node being accessed by the
+ xmlTextReader. This is dangerous because the underlying
+ node may be destroyed on the next Reads. """
+ ret = libxml2mod.xmlTextReaderCurrentNode(self._o)
+ if ret is None:raise treeError('xmlTextReaderCurrentNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def Depth(self):
+ """The depth of the node in the tree. """
+ ret = libxml2mod.xmlTextReaderDepth(self._o)
+ return ret
+
+ def Encoding(self):
+ """Determine the encoding of the document being read. """
+ ret = libxml2mod.xmlTextReaderConstEncoding(self._o)
+ return ret
+
+ def Expand(self):
+ """Reads the contents of the current node and the full
+ subtree. It then makes the subtree available until the next
+ xmlTextReaderRead() call """
+ ret = libxml2mod.xmlTextReaderExpand(self._o)
+ if ret is None:raise treeError('xmlTextReaderExpand() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def GetAttribute(self, name):
+ """Provides the value of the attribute with the specified
+ qualified name. """
+ ret = libxml2mod.xmlTextReaderGetAttribute(self._o, name)
+ return ret
+
+ def GetAttributeNo(self, no):
+ """Provides the value of the attribute with the specified
+ index relative to the containing element. """
+ ret = libxml2mod.xmlTextReaderGetAttributeNo(self._o, no)
+ return ret
+
+ def GetAttributeNs(self, localName, namespaceURI):
+ """Provides the value of the specified attribute """
+ ret = libxml2mod.xmlTextReaderGetAttributeNs(self._o, localName, namespaceURI)
+ return ret
+
+ def GetParserColumnNumber(self):
+ """Provide the column number of the current parsing point. """
+ ret = libxml2mod.xmlTextReaderGetParserColumnNumber(self._o)
+ return ret
+
+ def GetParserLineNumber(self):
+ """Provide the line number of the current parsing point. """
+ ret = libxml2mod.xmlTextReaderGetParserLineNumber(self._o)
+ return ret
+
+ def GetParserProp(self, prop):
+ """Read the parser internal property. """
+ ret = libxml2mod.xmlTextReaderGetParserProp(self._o, prop)
+ return ret
+
+ def GetRemainder(self):
+ """Method to get the remainder of the buffered XML. this
+ method stops the parser, set its state to End Of File and
+ return the input stream with what is left that the parser
+ did not use. The implementation is not good, the parser
+ certainly procgressed past what's left in reader->input,
+ and there is an allocation problem. Best would be to
+ rewrite it differently. """
+ ret = libxml2mod.xmlTextReaderGetRemainder(self._o)
+ if ret is None:raise treeError('xmlTextReaderGetRemainder() failed')
+ __tmp = inputBuffer(_obj=ret)
+ return __tmp
+
+ def HasAttributes(self):
+ """Whether the node has attributes. """
+ ret = libxml2mod.xmlTextReaderHasAttributes(self._o)
+ return ret
+
+ def HasValue(self):
+ """Whether the node can have a text value. """
+ ret = libxml2mod.xmlTextReaderHasValue(self._o)
+ return ret
+
+ def IsDefault(self):
+ """Whether an Attribute node was generated from the default
+ value defined in the DTD or schema. """
+ ret = libxml2mod.xmlTextReaderIsDefault(self._o)
+ return ret
+
+ def IsEmptyElement(self):
+ """Check if the current node is empty """
+ ret = libxml2mod.xmlTextReaderIsEmptyElement(self._o)
+ return ret
+
+ def IsNamespaceDecl(self):
+ """Determine whether the current node is a namespace
+ declaration rather than a regular attribute. """
+ ret = libxml2mod.xmlTextReaderIsNamespaceDecl(self._o)
+ return ret
+
+ def IsValid(self):
+ """Retrieve the validity status from the parser context """
+ ret = libxml2mod.xmlTextReaderIsValid(self._o)
+ return ret
+
+ def LocalName(self):
+ """The local name of the node. """
+ ret = libxml2mod.xmlTextReaderConstLocalName(self._o)
+ return ret
+
+ def LookupNamespace(self, prefix):
+ """Resolves a namespace prefix in the scope of the current
+ element. """
+ ret = libxml2mod.xmlTextReaderLookupNamespace(self._o, prefix)
+ return ret
+
+ def MoveToAttribute(self, name):
+ """Moves the position of the current instance to the attribute
+ with the specified qualified name. """
+ ret = libxml2mod.xmlTextReaderMoveToAttribute(self._o, name)
+ return ret
+
+ def MoveToAttributeNo(self, no):
+ """Moves the position of the current instance to the attribute
+ with the specified index relative to the containing element. """
+ ret = libxml2mod.xmlTextReaderMoveToAttributeNo(self._o, no)
+ return ret
+
+ def MoveToAttributeNs(self, localName, namespaceURI):
+ """Moves the position of the current instance to the attribute
+ with the specified local name and namespace URI. """
+ ret = libxml2mod.xmlTextReaderMoveToAttributeNs(self._o, localName, namespaceURI)
+ return ret
+
+ def MoveToElement(self):
+ """Moves the position of the current instance to the node that
+ contains the current Attribute node. """
+ ret = libxml2mod.xmlTextReaderMoveToElement(self._o)
+ return ret
+
+ def MoveToFirstAttribute(self):
+ """Moves the position of the current instance to the first
+ attribute associated with the current node. """
+ ret = libxml2mod.xmlTextReaderMoveToFirstAttribute(self._o)
+ return ret
+
+ def MoveToNextAttribute(self):
+ """Moves the position of the current instance to the next
+ attribute associated with the current node. """
+ ret = libxml2mod.xmlTextReaderMoveToNextAttribute(self._o)
+ return ret
+
+ def Name(self):
+ """The qualified name of the node, equal to Prefix :LocalName. """
+ ret = libxml2mod.xmlTextReaderConstName(self._o)
+ return ret
+
+ def NamespaceUri(self):
+ """The URI defining the namespace associated with the node. """
+ ret = libxml2mod.xmlTextReaderConstNamespaceUri(self._o)
+ return ret
+
+ def NewDoc(self, cur, URL, encoding, options):
+ """Setup an xmltextReader to parse an XML in-memory document.
+ The parsing flags @options are a combination of
+ xmlParserOption. This reuses the existing @reader
+ xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewDoc(self._o, cur, URL, encoding, options)
+ return ret
+
+ def NewFd(self, fd, URL, encoding, options):
+ """Setup an xmltextReader to parse an XML from a file
+ descriptor. NOTE that the file descriptor will not be
+ closed when the reader is closed or reset. The parsing
+ flags @options are a combination of xmlParserOption. This
+ reuses the existing @reader xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewFd(self._o, fd, URL, encoding, options)
+ return ret
+
+ def NewFile(self, filename, encoding, options):
+ """parse an XML file from the filesystem or the network. The
+ parsing flags @options are a combination of
+ xmlParserOption. This reuses the existing @reader
+ xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewFile(self._o, filename, encoding, options)
+ return ret
+
+ def NewMemory(self, buffer, size, URL, encoding, options):
+ """Setup an xmltextReader to parse an XML in-memory document.
+ The parsing flags @options are a combination of
+ xmlParserOption. This reuses the existing @reader
+ xmlTextReader. """
+ ret = libxml2mod.xmlReaderNewMemory(self._o, buffer, size, URL, encoding, options)
+ return ret
+
+ def NewWalker(self, doc):
+ """Setup an xmltextReader to parse a preparsed XML document.
+ This reuses the existing @reader xmlTextReader. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlReaderNewWalker(self._o, doc__o)
+ return ret
+
+ def Next(self):
+ """Skip to the node following the current one in document
+ order while avoiding the subtree if any. """
+ ret = libxml2mod.xmlTextReaderNext(self._o)
+ return ret
+
+ def NextSibling(self):
+ """Skip to the node following the current one in document
+ order while avoiding the subtree if any. Currently
+ implemented only for Readers built on a document """
+ ret = libxml2mod.xmlTextReaderNextSibling(self._o)
+ return ret
+
+ def NodeType(self):
+ """Get the node type of the current node Reference:
+ http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/Xm
+ lNodeType.html """
+ ret = libxml2mod.xmlTextReaderNodeType(self._o)
+ return ret
+
+ def Normalization(self):
+ """The value indicating whether to normalize white space and
+ attribute values. Since attribute value and end of line
+ normalizations are a MUST in the XML specification only the
+ value true is accepted. The broken bahaviour of accepting
+ out of range character entities like &#0; is of course not
+ supported either. """
+ ret = libxml2mod.xmlTextReaderNormalization(self._o)
+ return ret
+
+ def Prefix(self):
+ """A shorthand reference to the namespace associated with the
+ node. """
+ ret = libxml2mod.xmlTextReaderConstPrefix(self._o)
+ return ret
+
+ def Preserve(self):
+ """This tells the XML Reader to preserve the current node. The
+ caller must also use xmlTextReaderCurrentDoc() to keep an
+ handle on the resulting document once parsing has finished """
+ ret = libxml2mod.xmlTextReaderPreserve(self._o)
+ if ret is None:raise treeError('xmlTextReaderPreserve() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def QuoteChar(self):
+ """The quotation mark character used to enclose the value of
+ an attribute. """
+ ret = libxml2mod.xmlTextReaderQuoteChar(self._o)
+ return ret
+
+ def Read(self):
+ """Moves the position of the current instance to the next node
+ in the stream, exposing its properties. """
+ ret = libxml2mod.xmlTextReaderRead(self._o)
+ return ret
+
+ def ReadAttributeValue(self):
+ """Parses an attribute value into one or more Text and
+ EntityReference nodes. """
+ ret = libxml2mod.xmlTextReaderReadAttributeValue(self._o)
+ return ret
+
+ def ReadInnerXml(self):
+ """Reads the contents of the current node, including child
+ nodes and markup. """
+ ret = libxml2mod.xmlTextReaderReadInnerXml(self._o)
+ return ret
+
+ def ReadOuterXml(self):
+ """Reads the contents of the current node, including child
+ nodes and markup. """
+ ret = libxml2mod.xmlTextReaderReadOuterXml(self._o)
+ return ret
+
+ def ReadState(self):
+ """Gets the read state of the reader. """
+ ret = libxml2mod.xmlTextReaderReadState(self._o)
+ return ret
+
+ def ReadString(self):
+ """Reads the contents of an element or a text node as a string. """
+ ret = libxml2mod.xmlTextReaderReadString(self._o)
+ return ret
+
+ def RelaxNGSetSchema(self, schema):
+ """Use RelaxNG to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then RelaxNG validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if schema is None: schema__o = None
+ else: schema__o = schema._o
+ ret = libxml2mod.xmlTextReaderRelaxNGSetSchema(self._o, schema__o)
+ return ret
+
+ def RelaxNGValidate(self, rng):
+ """Use RelaxNG schema to validate the document as it is
+ processed. Activation is only possible before the first
+ Read(). If @rng is None, then RelaxNG schema validation is
+ deactivated. """
+ ret = libxml2mod.xmlTextReaderRelaxNGValidate(self._o, rng)
+ return ret
+
+ def RelaxNGValidateCtxt(self, ctxt, options):
+ """Use RelaxNG schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then RelaxNG schema validation is
+ deactivated. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlTextReaderRelaxNGValidateCtxt(self._o, ctxt__o, options)
+ return ret
+
+ def SchemaValidate(self, xsd):
+ """Use W3C XSD schema to validate the document as it is
+ processed. Activation is only possible before the first
+ Read(). If @xsd is None, then XML Schema validation is
+ deactivated. """
+ ret = libxml2mod.xmlTextReaderSchemaValidate(self._o, xsd)
+ return ret
+
+ def SchemaValidateCtxt(self, ctxt, options):
+ """Use W3C XSD schema context to validate the document as it
+ is processed. Activation is only possible before the first
+ Read(). If @ctxt is None, then XML Schema validation is
+ deactivated. """
+ if ctxt is None: ctxt__o = None
+ else: ctxt__o = ctxt._o
+ ret = libxml2mod.xmlTextReaderSchemaValidateCtxt(self._o, ctxt__o, options)
+ return ret
+
+ def SetParserProp(self, prop, value):
+ """Change the parser processing behaviour by changing some of
+ its internal properties. Note that some properties can only
+ be changed before any read has been done. """
+ ret = libxml2mod.xmlTextReaderSetParserProp(self._o, prop, value)
+ return ret
+
+ def SetSchema(self, schema):
+ """Use XSD Schema to validate the document as it is processed.
+ Activation is only possible before the first Read(). if
+ @schema is None, then Schema validation is desactivated. @
+ The @schema should not be freed until the reader is
+ deallocated or its use has been deactivated. """
+ if schema is None: schema__o = None
+ else: schema__o = schema._o
+ ret = libxml2mod.xmlTextReaderSetSchema(self._o, schema__o)
+ return ret
+
+ def Setup(self, input, URL, encoding, options):
+ """Setup an XML reader with new options """
+ if input is None: input__o = None
+ else: input__o = input._o
+ ret = libxml2mod.xmlTextReaderSetup(self._o, input__o, URL, encoding, options)
+ return ret
+
+ def Standalone(self):
+ """Determine the standalone status of the document being read. """
+ ret = libxml2mod.xmlTextReaderStandalone(self._o)
+ return ret
+
+ def String(self, str):
+ """Get an interned string from the reader, allows for example
+ to speedup string name comparisons """
+ ret = libxml2mod.xmlTextReaderConstString(self._o, str)
+ return ret
+
+ def Value(self):
+ """Provides the text value of the node if present """
+ ret = libxml2mod.xmlTextReaderConstValue(self._o)
+ return ret
+
+ def XmlLang(self):
+ """The xml:lang scope within which the node resides. """
+ ret = libxml2mod.xmlTextReaderConstXmlLang(self._o)
+ return ret
+
+ def XmlVersion(self):
+ """Determine the XML version of the document being read. """
+ ret = libxml2mod.xmlTextReaderConstXmlVersion(self._o)
+ return ret
+
+class URI:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeURI(self._o)
+ self._o = None
+
+ # accessors for URI
+ def authority(self):
+ """Get the authority part from an URI """
+ ret = libxml2mod.xmlURIGetAuthority(self._o)
+ return ret
+
+ def fragment(self):
+ """Get the fragment part from an URI """
+ ret = libxml2mod.xmlURIGetFragment(self._o)
+ return ret
+
+ def opaque(self):
+ """Get the opaque part from an URI """
+ ret = libxml2mod.xmlURIGetOpaque(self._o)
+ return ret
+
+ def path(self):
+ """Get the path part from an URI """
+ ret = libxml2mod.xmlURIGetPath(self._o)
+ return ret
+
+ def port(self):
+ """Get the port part from an URI """
+ ret = libxml2mod.xmlURIGetPort(self._o)
+ return ret
+
+ def query(self):
+ """Get the query part from an URI """
+ ret = libxml2mod.xmlURIGetQuery(self._o)
+ return ret
+
+ def queryRaw(self):
+ """Get the raw query part from an URI (i.e. the unescaped
+ form). """
+ ret = libxml2mod.xmlURIGetQueryRaw(self._o)
+ return ret
+
+ def scheme(self):
+ """Get the scheme part from an URI """
+ ret = libxml2mod.xmlURIGetScheme(self._o)
+ return ret
+
+ def server(self):
+ """Get the server part from an URI """
+ ret = libxml2mod.xmlURIGetServer(self._o)
+ return ret
+
+ def setAuthority(self, authority):
+ """Set the authority part of an URI. """
+ libxml2mod.xmlURISetAuthority(self._o, authority)
+
+ def setFragment(self, fragment):
+ """Set the fragment part of an URI. """
+ libxml2mod.xmlURISetFragment(self._o, fragment)
+
+ def setOpaque(self, opaque):
+ """Set the opaque part of an URI. """
+ libxml2mod.xmlURISetOpaque(self._o, opaque)
+
+ def setPath(self, path):
+ """Set the path part of an URI. """
+ libxml2mod.xmlURISetPath(self._o, path)
+
+ def setPort(self, port):
+ """Set the port part of an URI. """
+ libxml2mod.xmlURISetPort(self._o, port)
+
+ def setQuery(self, query):
+ """Set the query part of an URI. """
+ libxml2mod.xmlURISetQuery(self._o, query)
+
+ def setQueryRaw(self, query_raw):
+ """Set the raw query part of an URI (i.e. the unescaped form). """
+ libxml2mod.xmlURISetQueryRaw(self._o, query_raw)
+
+ def setScheme(self, scheme):
+ """Set the scheme part of an URI. """
+ libxml2mod.xmlURISetScheme(self._o, scheme)
+
+ def setServer(self, server):
+ """Set the server part of an URI. """
+ libxml2mod.xmlURISetServer(self._o, server)
+
+ def setUser(self, user):
+ """Set the user part of an URI. """
+ libxml2mod.xmlURISetUser(self._o, user)
+
+ def user(self):
+ """Get the user part from an URI """
+ ret = libxml2mod.xmlURIGetUser(self._o)
+ return ret
+
+ #
+ # URI functions from module uri
+ #
+
+ def parseURIReference(self, str):
+ """Parse an URI reference string based on RFC 3986 and fills
+ in the appropriate fields of the @uri structure
+ URI-reference = URI / relative-ref """
+ ret = libxml2mod.xmlParseURIReference(self._o, str)
+ return ret
+
+ def printURI(self, stream):
+ """Prints the URI in the stream @stream. """
+ libxml2mod.xmlPrintURI(stream, self._o)
+
+ def saveUri(self):
+ """Save the URI as an escaped string """
+ ret = libxml2mod.xmlSaveUri(self._o)
+ return ret
+
+class ValidCtxt(ValidCtxtCore):
+ def __init__(self, _obj=None):
+ self._o = _obj
+ ValidCtxtCore.__init__(self, _obj=_obj)
+
+ def __del__(self):
+ if self._o != None:
+ libxml2mod.xmlFreeValidCtxt(self._o)
+ self._o = None
+
+ #
+ # ValidCtxt functions from module valid
+ #
+
+ def validCtxtNormalizeAttributeValue(self, doc, elem, name, value):
+ """Does the validation related extra step of the normalization
+ of attribute values: If the declared value is not CDATA,
+ then the XML processor must further process the normalized
+ attribute value by discarding any leading and trailing
+ space (#x20) characters, and by replacing sequences of
+ space (#x20) characters by single space (#x20) character.
+ Also check VC: Standalone Document Declaration in P32, and
+ update ctxt->valid accordingly """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidCtxtNormalizeAttributeValue(self._o, doc__o, elem__o, name, value)
+ return ret
+
+ def validateDocument(self, doc):
+ """Try to validate the document instance basically it does
+ the all the checks described by the XML Rec i.e. validates
+ the internal and external subset (if present) and validate
+ the document tree. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateDocument(self._o, doc__o)
+ return ret
+
+ def validateDocumentFinal(self, doc):
+ """Does the final step for the document validation once all
+ the incremental validation steps have been completed
+ basically it does the following checks described by the XML
+ Rec Check all the IDREF/IDREFS attributes definition for
+ validity """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateDocumentFinal(self._o, doc__o)
+ return ret
+
+ def validateDtd(self, doc, dtd):
+ """Try to validate the document against the dtd instance
+ Basically it does check all the definitions in the DtD.
+ Note the the internal subset (if present) is de-coupled
+ (i.e. not used), which could give problems if ID or IDREF
+ is present. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if dtd is None: dtd__o = None
+ else: dtd__o = dtd._o
+ ret = libxml2mod.xmlValidateDtd(self._o, doc__o, dtd__o)
+ return ret
+
+ def validateDtdFinal(self, doc):
+ """Does the final step for the dtds validation once all the
+ subsets have been parsed basically it does the following
+ checks described by the XML Rec - check that ENTITY and
+ ENTITIES type attributes default or possible values matches
+ one of the defined entities. - check that NOTATION type
+ attributes default or possible values matches one of the
+ defined notations. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateDtdFinal(self._o, doc__o)
+ return ret
+
+ def validateElement(self, doc, elem):
+ """Try to validate the subtree under an element """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateElement(self._o, doc__o, elem__o)
+ return ret
+
+ def validateNotationUse(self, doc, notationName):
+ """Validate that the given name match a notation declaration.
+ - [ VC: Notation Declared ] """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateNotationUse(self._o, doc__o, notationName)
+ return ret
+
+ def validateOneAttribute(self, doc, elem, attr, value):
+ """Try to validate a single attribute for an element basically
+ it does the following checks as described by the XML-1.0
+ recommendation: - [ VC: Attribute Value Type ] - [ VC:
+ Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC:
+ Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity
+ Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if attr is None: attr__o = None
+ else: attr__o = attr._o
+ ret = libxml2mod.xmlValidateOneAttribute(self._o, doc__o, elem__o, attr__o, value)
+ return ret
+
+ def validateOneElement(self, doc, elem):
+ """Try to validate a single element and it's attributes,
+ basically it does the following checks as described by the
+ XML-1.0 recommendation: - [ VC: Element Valid ] - [ VC:
+ Required Attribute ] Then call xmlValidateOneAttribute()
+ for each attribute present. The ID/IDREF checkings are
+ done separately """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidateOneElement(self._o, doc__o, elem__o)
+ return ret
+
+ def validateOneNamespace(self, doc, elem, prefix, ns, value):
+ """Try to validate a single namespace declaration for an
+ element basically it does the following checks as described
+ by the XML-1.0 recommendation: - [ VC: Attribute Value Type
+ ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] -
+ [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC:
+ Entity Name ] - [ VC: Notation Attributes ] The ID/IDREF
+ uniqueness and matching are done separately """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ if ns is None: ns__o = None
+ else: ns__o = ns._o
+ ret = libxml2mod.xmlValidateOneNamespace(self._o, doc__o, elem__o, prefix, ns__o, value)
+ return ret
+
+ def validatePopElement(self, doc, elem, qname):
+ """Pop the element end from the validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePopElement(self._o, doc__o, elem__o, qname)
+ return ret
+
+ def validatePushCData(self, data, len):
+ """check the CData parsed for validation in the current stack """
+ ret = libxml2mod.xmlValidatePushCData(self._o, data, len)
+ return ret
+
+ def validatePushElement(self, doc, elem, qname):
+ """Push a new element start on the validation stack. """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ if elem is None: elem__o = None
+ else: elem__o = elem._o
+ ret = libxml2mod.xmlValidatePushElement(self._o, doc__o, elem__o, qname)
+ return ret
+
+ def validateRoot(self, doc):
+ """Try to validate a the root element basically it does the
+ following check as described by the XML-1.0 recommendation:
+ - [ VC: Root Element Type ] it doesn't try to recurse or
+ apply other check to the element """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ ret = libxml2mod.xmlValidateRoot(self._o, doc__o)
+ return ret
+
+class xpathContext:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ # accessors for xpathContext
+ def contextDoc(self):
+ """Get the doc from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextDoc(self._o)
+ if ret is None:raise xpathError('xmlXPathGetContextDoc() failed')
+ __tmp = xmlDoc(_obj=ret)
+ return __tmp
+
+ def contextNode(self):
+ """Get the current node from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextNode(self._o)
+ if ret is None:raise xpathError('xmlXPathGetContextNode() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def contextPosition(self):
+ """Get the current node from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextPosition(self._o)
+ return ret
+
+ def contextSize(self):
+ """Get the current node from an xpathContext """
+ ret = libxml2mod.xmlXPathGetContextSize(self._o)
+ return ret
+
+ def function(self):
+ """Get the current function name xpathContext """
+ ret = libxml2mod.xmlXPathGetFunction(self._o)
+ return ret
+
+ def functionURI(self):
+ """Get the current function name URI xpathContext """
+ ret = libxml2mod.xmlXPathGetFunctionURI(self._o)
+ return ret
+
+ def setContextDoc(self, doc):
+ """Set the doc of an xpathContext """
+ if doc is None: doc__o = None
+ else: doc__o = doc._o
+ libxml2mod.xmlXPathSetContextDoc(self._o, doc__o)
+
+ def setContextNode(self, node):
+ """Set the current node of an xpathContext """
+ if node is None: node__o = None
+ else: node__o = node._o
+ libxml2mod.xmlXPathSetContextNode(self._o, node__o)
+
+ #
+ # xpathContext functions from module python
+ #
+
+ def registerXPathFunction(self, name, ns_uri, f):
+ """Register a Python written function to the XPath interpreter """
+ ret = libxml2mod.xmlRegisterXPathFunction(self._o, name, ns_uri, f)
+ return ret
+
+ def xpathRegisterVariable(self, name, ns_uri, value):
+ """Register a variable with the XPath context """
+ ret = libxml2mod.xmlXPathRegisterVariable(self._o, name, ns_uri, value)
+ return ret
+
+ #
+ # xpathContext functions from module xpath
+ #
+
+ def xpathContextSetCache(self, active, value, options):
+ """Creates/frees an object cache on the XPath context. If
+ activates XPath objects (xmlXPathObject) will be cached
+ internally to be reused. @options: 0: This will set the
+ XPath object caching: @value: This will set the maximum
+ number of XPath objects to be cached per slot There are 5
+ slots for: node-set, string, number, boolean, and misc
+ objects. Use <0 for the default number (100). Other values
+ for @options have currently no effect. """
+ ret = libxml2mod.xmlXPathContextSetCache(self._o, active, value, options)
+ return ret
+
+ def xpathEval(self, str):
+ """Evaluate the XPath Location Path in the given context. """
+ ret = libxml2mod.xmlXPathEval(str, self._o)
+ if ret is None:raise xpathError('xmlXPathEval() failed')
+ return xpathObjectRet(ret)
+
+ def xpathEvalExpression(self, str):
+ """Evaluate the XPath expression in the given context. """
+ ret = libxml2mod.xmlXPathEvalExpression(str, self._o)
+ if ret is None:raise xpathError('xmlXPathEvalExpression() failed')
+ return xpathObjectRet(ret)
+
+ def xpathFreeContext(self):
+ """Free up an xmlXPathContext """
+ libxml2mod.xmlXPathFreeContext(self._o)
+
+ #
+ # xpathContext functions from module xpathInternals
+ #
+
+ def xpathNewParserContext(self, str):
+ """Create a new xmlXPathParserContext """
+ ret = libxml2mod.xmlXPathNewParserContext(str, self._o)
+ if ret is None:raise xpathError('xmlXPathNewParserContext() failed')
+ __tmp = xpathParserContext(_obj=ret)
+ return __tmp
+
+ def xpathNsLookup(self, prefix):
+ """Search in the namespace declaration array of the context
+ for the given namespace name associated to the given prefix """
+ ret = libxml2mod.xmlXPathNsLookup(self._o, prefix)
+ return ret
+
+ def xpathRegisterAllFunctions(self):
+ """Registers all default XPath functions in this context """
+ libxml2mod.xmlXPathRegisterAllFunctions(self._o)
+
+ def xpathRegisterNs(self, prefix, ns_uri):
+ """Register a new namespace. If @ns_uri is None it unregisters
+ the namespace """
+ ret = libxml2mod.xmlXPathRegisterNs(self._o, prefix, ns_uri)
+ return ret
+
+ def xpathRegisteredFuncsCleanup(self):
+ """Cleanup the XPath context data associated to registered
+ functions """
+ libxml2mod.xmlXPathRegisteredFuncsCleanup(self._o)
+
+ def xpathRegisteredNsCleanup(self):
+ """Cleanup the XPath context data associated to registered
+ variables """
+ libxml2mod.xmlXPathRegisteredNsCleanup(self._o)
+
+ def xpathRegisteredVariablesCleanup(self):
+ """Cleanup the XPath context data associated to registered
+ variables """
+ libxml2mod.xmlXPathRegisteredVariablesCleanup(self._o)
+
+ def xpathVariableLookup(self, name):
+ """Search in the Variable array of the context for the given
+ variable value. """
+ ret = libxml2mod.xmlXPathVariableLookup(self._o, name)
+ if ret is None:raise xpathError('xmlXPathVariableLookup() failed')
+ return xpathObjectRet(ret)
+
+ def xpathVariableLookupNS(self, name, ns_uri):
+ """Search in the Variable array of the context for the given
+ variable value. """
+ ret = libxml2mod.xmlXPathVariableLookupNS(self._o, name, ns_uri)
+ if ret is None:raise xpathError('xmlXPathVariableLookupNS() failed')
+ return xpathObjectRet(ret)
+
+ #
+ # xpathContext functions from module xpointer
+ #
+
+ def xpointerEval(self, str):
+ """Evaluate the XPath Location Path in the given context. """
+ ret = libxml2mod.xmlXPtrEval(str, self._o)
+ if ret is None:raise treeError('xmlXPtrEval() failed')
+ return xpathObjectRet(ret)
+
+class xpathParserContext:
+ def __init__(self, _obj=None):
+ if _obj != None:self._o = _obj;return
+ self._o = None
+
+ # accessors for xpathParserContext
+ def context(self):
+ """Get the xpathContext from an xpathParserContext """
+ ret = libxml2mod.xmlXPathParserGetContext(self._o)
+ if ret is None:raise xpathError('xmlXPathParserGetContext() failed')
+ __tmp = xpathContext(_obj=ret)
+ return __tmp
+
+ #
+ # xpathParserContext functions from module xpathInternals
+ #
+
+ def xpathAddValues(self):
+ """Implement the add operation on XPath objects: The numeric
+ operators convert their operands to numbers as if by
+ calling the number function. """
+ libxml2mod.xmlXPathAddValues(self._o)
+
+ def xpathBooleanFunction(self, nargs):
+ """Implement the boolean() XPath function boolean
+ boolean(object) The boolean function converts its argument
+ to a boolean as follows: - a number is true if and only if
+ it is neither positive or negative zero nor NaN - a
+ node-set is true if and only if it is non-empty - a string
+ is true if and only if its length is non-zero """
+ libxml2mod.xmlXPathBooleanFunction(self._o, nargs)
+
+ def xpathCeilingFunction(self, nargs):
+ """Implement the ceiling() XPath function number
+ ceiling(number) The ceiling function returns the smallest
+ (closest to negative infinity) number that is not less than
+ the argument and that is an integer. """
+ libxml2mod.xmlXPathCeilingFunction(self._o, nargs)
+
+ def xpathCompareValues(self, inf, strict):
+ """Implement the compare operation on XPath objects: @arg1 <
+ @arg2 (1, 1, ... @arg1 <= @arg2 (1, 0, ... @arg1 >
+ @arg2 (0, 1, ... @arg1 >= @arg2 (0, 0, ... When
+ neither object to be compared is a node-set and the
+ operator is <=, <, >=, >, then the objects are compared by
+ converted both objects to numbers and comparing the numbers
+ according to IEEE 754. The < comparison will be true if and
+ only if the first number is less than the second number.
+ The <= comparison will be true if and only if the first
+ number is less than or equal to the second number. The >
+ comparison will be true if and only if the first number is
+ greater than the second number. The >= comparison will be
+ true if and only if the first number is greater than or
+ equal to the second number. """
+ ret = libxml2mod.xmlXPathCompareValues(self._o, inf, strict)
+ return ret
+
+ def xpathConcatFunction(self, nargs):
+ """Implement the concat() XPath function string concat(string,
+ string, string*) The concat function returns the
+ concatenation of its arguments. """
+ libxml2mod.xmlXPathConcatFunction(self._o, nargs)
+
+ def xpathContainsFunction(self, nargs):
+ """Implement the contains() XPath function boolean
+ contains(string, string) The contains function returns true
+ if the first argument string contains the second argument
+ string, and otherwise returns false. """
+ libxml2mod.xmlXPathContainsFunction(self._o, nargs)
+
+ def xpathCountFunction(self, nargs):
+ """Implement the count() XPath function number count(node-set) """
+ libxml2mod.xmlXPathCountFunction(self._o, nargs)
+
+ def xpathDivValues(self):
+ """Implement the div operation on XPath objects @arg1 / @arg2:
+ The numeric operators convert their operands to numbers as
+ if by calling the number function. """
+ libxml2mod.xmlXPathDivValues(self._o)
+
+ def xpathEqualValues(self):
+ """Implement the equal operation on XPath objects content:
+ @arg1 == @arg2 """
+ ret = libxml2mod.xmlXPathEqualValues(self._o)
+ return ret
+
+ def xpathErr(self, error):
+ """Handle an XPath error """
+ libxml2mod.xmlXPathErr(self._o, error)
+
+ def xpathEvalExpr(self):
+ """Parse and evaluate an XPath expression in the given
+ context, then push the result on the context stack """
+ libxml2mod.xmlXPathEvalExpr(self._o)
+
+ def xpathFalseFunction(self, nargs):
+ """Implement the false() XPath function boolean false() """
+ libxml2mod.xmlXPathFalseFunction(self._o, nargs)
+
+ def xpathFloorFunction(self, nargs):
+ """Implement the floor() XPath function number floor(number)
+ The floor function returns the largest (closest to positive
+ infinity) number that is not greater than the argument and
+ that is an integer. """
+ libxml2mod.xmlXPathFloorFunction(self._o, nargs)
+
+ def xpathFreeParserContext(self):
+ """Free up an xmlXPathParserContext """
+ libxml2mod.xmlXPathFreeParserContext(self._o)
+
+ def xpathIdFunction(self, nargs):
+ """Implement the id() XPath function node-set id(object) The
+ id function selects elements by their unique ID (see [5.2.1
+ Unique IDs]). When the argument to id is of type node-set,
+ then the result is the union of the result of applying id
+ to the string value of each of the nodes in the argument
+ node-set. When the argument to id is of any other type, the
+ argument is converted to a string as if by a call to the
+ string function; the string is split into a
+ whitespace-separated list of tokens (whitespace is any
+ sequence of characters matching the production S); the
+ result is a node-set containing the elements in the same
+ document as the context node that have a unique ID equal to
+ any of the tokens in the list. """
+ libxml2mod.xmlXPathIdFunction(self._o, nargs)
+
+ def xpathLangFunction(self, nargs):
+ """Implement the lang() XPath function boolean lang(string)
+ The lang function returns true or false depending on
+ whether the language of the context node as specified by
+ xml:lang attributes is the same as or is a sublanguage of
+ the language specified by the argument string. The language
+ of the context node is determined by the value of the
+ xml:lang attribute on the context node, or, if the context
+ node has no xml:lang attribute, by the value of the
+ xml:lang attribute on the nearest ancestor of the context
+ node that has an xml:lang attribute. If there is no such
+ attribute, then lang """
+ libxml2mod.xmlXPathLangFunction(self._o, nargs)
+
+ def xpathLastFunction(self, nargs):
+ """Implement the last() XPath function number last() The last
+ function returns the number of nodes in the context node
+ list. """
+ libxml2mod.xmlXPathLastFunction(self._o, nargs)
+
+ def xpathLocalNameFunction(self, nargs):
+ """Implement the local-name() XPath function string
+ local-name(node-set?) The local-name function returns a
+ string containing the local part of the name of the node in
+ the argument node-set that is first in document order. If
+ the node-set is empty or the first node has no name, an
+ empty string is returned. If the argument is omitted it
+ defaults to the context node. """
+ libxml2mod.xmlXPathLocalNameFunction(self._o, nargs)
+
+ def xpathModValues(self):
+ """Implement the mod operation on XPath objects: @arg1 / @arg2
+ The numeric operators convert their operands to numbers as
+ if by calling the number function. """
+ libxml2mod.xmlXPathModValues(self._o)
+
+ def xpathMultValues(self):
+ """Implement the multiply operation on XPath objects: The
+ numeric operators convert their operands to numbers as if
+ by calling the number function. """
+ libxml2mod.xmlXPathMultValues(self._o)
+
+ def xpathNamespaceURIFunction(self, nargs):
+ """Implement the namespace-uri() XPath function string
+ namespace-uri(node-set?) The namespace-uri function returns
+ a string containing the namespace URI of the expanded name
+ of the node in the argument node-set that is first in
+ document order. If the node-set is empty, the first node
+ has no name, or the expanded name has no namespace URI, an
+ empty string is returned. If the argument is omitted it
+ defaults to the context node. """
+ libxml2mod.xmlXPathNamespaceURIFunction(self._o, nargs)
+
+ def xpathNextAncestor(self, cur):
+ """Traversal function for the "ancestor" direction the
+ ancestor axis contains the ancestors of the context node;
+ the ancestors of the context node consist of the parent of
+ context node and the parent's parent and so on; the nodes
+ are ordered in reverse document order; thus the parent is
+ the first node on the axis, and the parent's parent is the
+ second node on the axis """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextAncestor(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextAncestor() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAncestorOrSelf(self, cur):
+ """Traversal function for the "ancestor-or-self" direction he
+ ancestor-or-self axis contains the context node and
+ ancestors of the context node in reverse document order;
+ thus the context node is the first node on the axis, and
+ the context node's parent the second; parent here is
+ defined the same as with the parent axis. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextAncestorOrSelf(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextAncestorOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextAttribute(self, cur):
+ """Traversal function for the "attribute" direction TODO:
+ support DTD inherited default attributes """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextAttribute(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextAttribute() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextChild(self, cur):
+ """Traversal function for the "child" direction The child axis
+ contains the children of the context node in document order. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextChild(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextChild() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendant(self, cur):
+ """Traversal function for the "descendant" direction the
+ descendant axis contains the descendants of the context
+ node in document order; a descendant is a child or a child
+ of a child and so on. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextDescendant(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextDescendant() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextDescendantOrSelf(self, cur):
+ """Traversal function for the "descendant-or-self" direction
+ the descendant-or-self axis contains the context node and
+ the descendants of the context node in document order; thus
+ the context node is the first node on the axis, and the
+ first child of the context node is the second node on the
+ axis """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextDescendantOrSelf(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextDescendantOrSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowing(self, cur):
+ """Traversal function for the "following" direction The
+ following axis contains all nodes in the same document as
+ the context node that are after the context node in
+ document order, excluding any descendants and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in document order """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextFollowing(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextFollowing() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextFollowingSibling(self, cur):
+ """Traversal function for the "following-sibling" direction
+ The following-sibling axis contains the following siblings
+ of the context node in document order. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextFollowingSibling(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextFollowingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextNamespace(self, cur):
+ """Traversal function for the "namespace" direction the
+ namespace axis contains the namespace nodes of the context
+ node; the order of nodes on this axis is
+ implementation-defined; the axis will be empty unless the
+ context node is an element We keep the XML namespace node
+ at the end of the list. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextNamespace(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextNamespace() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextParent(self, cur):
+ """Traversal function for the "parent" direction The parent
+ axis contains the parent of the context node, if there is
+ one. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextParent(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextParent() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPreceding(self, cur):
+ """Traversal function for the "preceding" direction the
+ preceding axis contains all nodes in the same document as
+ the context node that are before the context node in
+ document order, excluding any ancestors and excluding
+ attribute nodes and namespace nodes; the nodes are ordered
+ in reverse document order """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextPreceding(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextPreceding() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextPrecedingSibling(self, cur):
+ """Traversal function for the "preceding-sibling" direction
+ The preceding-sibling axis contains the preceding siblings
+ of the context node in reverse document order; the first
+ preceding sibling is first on the axis; the sibling
+ preceding that node is the second on the axis and so on. """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextPrecedingSibling(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextPrecedingSibling() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNextSelf(self, cur):
+ """Traversal function for the "self" direction The self axis
+ contains just the context node itself """
+ if cur is None: cur__o = None
+ else: cur__o = cur._o
+ ret = libxml2mod.xmlXPathNextSelf(self._o, cur__o)
+ if ret is None:raise xpathError('xmlXPathNextSelf() failed')
+ __tmp = xmlNode(_obj=ret)
+ return __tmp
+
+ def xpathNormalizeFunction(self, nargs):
+ """Implement the normalize-space() XPath function string
+ normalize-space(string?) The normalize-space function
+ returns the argument string with white space normalized by
+ stripping leading and trailing whitespace and replacing
+ sequences of whitespace characters by a single space.
+ Whitespace characters are the same allowed by the S
+ production in XML. If the argument is omitted, it defaults
+ to the context node converted to a string, in other words
+ the value of the context node. """
+ libxml2mod.xmlXPathNormalizeFunction(self._o, nargs)
+
+ def xpathNotEqualValues(self):
+ """Implement the equal operation on XPath objects content:
+ @arg1 == @arg2 """
+ ret = libxml2mod.xmlXPathNotEqualValues(self._o)
+ return ret
+
+ def xpathNotFunction(self, nargs):
+ """Implement the not() XPath function boolean not(boolean) The
+ not function returns true if its argument is false, and
+ false otherwise. """
+ libxml2mod.xmlXPathNotFunction(self._o, nargs)
+
+ def xpathNumberFunction(self, nargs):
+ """Implement the number() XPath function number number(object?) """
+ libxml2mod.xmlXPathNumberFunction(self._o, nargs)
+
+ def xpathParseNCName(self):
+ """parse an XML namespace non qualified name. [NS 3] NCName
+ ::= (Letter | '_') (NCNameChar)* [NS 4] NCNameChar ::=
+ Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender """
+ ret = libxml2mod.xmlXPathParseNCName(self._o)
+ return ret
+
+ def xpathParseName(self):
+ """parse an XML name [4] NameChar ::= Letter | Digit | '.' |
+ '-' | '_' | ':' | CombiningChar | Extender [5] Name ::=
+ (Letter | '_' | ':') (NameChar)* """
+ ret = libxml2mod.xmlXPathParseName(self._o)
+ return ret
+
+ def xpathPopBoolean(self):
+ """Pops a boolean from the stack, handling conversion if
+ needed. Check error with #xmlXPathCheckError. """
+ ret = libxml2mod.xmlXPathPopBoolean(self._o)
+ return ret
+
+ def xpathPopNumber(self):
+ """Pops a number from the stack, handling conversion if
+ needed. Check error with #xmlXPathCheckError. """
+ ret = libxml2mod.xmlXPathPopNumber(self._o)
+ return ret
+
+ def xpathPopString(self):
+ """Pops a string from the stack, handling conversion if
+ needed. Check error with #xmlXPathCheckError. """
+ ret = libxml2mod.xmlXPathPopString(self._o)
+ return ret
+
+ def xpathPositionFunction(self, nargs):
+ """Implement the position() XPath function number position()
+ The position function returns the position of the context
+ node in the context node list. The first position is 1, and
+ so the last position will be equal to last(). """
+ libxml2mod.xmlXPathPositionFunction(self._o, nargs)
+
+ def xpathRoot(self):
+ """Initialize the context to the root of the document """
+ libxml2mod.xmlXPathRoot(self._o)
+
+ def xpathRoundFunction(self, nargs):
+ """Implement the round() XPath function number round(number)
+ The round function returns the number that is closest to
+ the argument and that is an integer. If there are two such
+ numbers, then the one that is even is returned. """
+ libxml2mod.xmlXPathRoundFunction(self._o, nargs)
+
+ def xpathStartsWithFunction(self, nargs):
+ """Implement the starts-with() XPath function boolean
+ starts-with(string, string) The starts-with function
+ returns true if the first argument string starts with the
+ second argument string, and otherwise returns false. """
+ libxml2mod.xmlXPathStartsWithFunction(self._o, nargs)
+
+ def xpathStringFunction(self, nargs):
+ """Implement the string() XPath function string
+ string(object?) The string function converts an object to a
+ string as follows: - A node-set is converted to a string by
+ returning the value of the node in the node-set that is
+ first in document order. If the node-set is empty, an empty
+ string is returned. - A number is converted to a string as
+ follows + NaN is converted to the string NaN + positive
+ zero is converted to the string 0 + negative zero is
+ converted to the string 0 + positive infinity is converted
+ to the string Infinity + negative infinity is converted to
+ the string -Infinity + if the number is an integer, the
+ number is represented in decimal form as a Number with no
+ decimal point and no leading zeros, preceded by a minus
+ sign (-) if the number is negative + otherwise, the number
+ is represented in decimal form as a Number including a
+ decimal point with at least one digit before the decimal
+ point and at least one digit after the decimal point,
+ preceded by a minus sign (-) if the number is negative;
+ there must be no leading zeros before the decimal point
+ apart possibly from the one required digit immediately
+ before the decimal point; beyond the one required digit
+ after the decimal point there must be as many, but only as
+ many, more digits as are needed to uniquely distinguish the
+ number from all other IEEE 754 numeric values. - The
+ boolean false value is converted to the string false. The
+ boolean true value is converted to the string true. If the
+ argument is omitted, it defaults to a node-set with the
+ context node as its only member. """
+ libxml2mod.xmlXPathStringFunction(self._o, nargs)
+
+ def xpathStringLengthFunction(self, nargs):
+ """Implement the string-length() XPath function number
+ string-length(string?) The string-length returns the number
+ of characters in the string (see [3.6 Strings]). If the
+ argument is omitted, it defaults to the context node
+ converted to a string, in other words the value of the
+ context node. """
+ libxml2mod.xmlXPathStringLengthFunction(self._o, nargs)
+
+ def xpathSubValues(self):
+ """Implement the subtraction operation on XPath objects: The
+ numeric operators convert their operands to numbers as if
+ by calling the number function. """
+ libxml2mod.xmlXPathSubValues(self._o)
+
+ def xpathSubstringAfterFunction(self, nargs):
+ """Implement the substring-after() XPath function string
+ substring-after(string, string) The substring-after
+ function returns the substring of the first argument string
+ that follows the first occurrence of the second argument
+ string in the first argument string, or the empty stringi
+ if the first argument string does not contain the second
+ argument string. For example,
+ substring-after("1999/04/01","/") returns 04/01, and
+ substring-after("1999/04/01","19") returns 99/04/01. """
+ libxml2mod.xmlXPathSubstringAfterFunction(self._o, nargs)
+
+ def xpathSubstringBeforeFunction(self, nargs):
+ """Implement the substring-before() XPath function string
+ substring-before(string, string) The substring-before
+ function returns the substring of the first argument string
+ that precedes the first occurrence of the second argument
+ string in the first argument string, or the empty string if
+ the first argument string does not contain the second
+ argument string. For example,
+ substring-before("1999/04/01","/") returns 1999. """
+ libxml2mod.xmlXPathSubstringBeforeFunction(self._o, nargs)
+
+ def xpathSubstringFunction(self, nargs):
+ """Implement the substring() XPath function string
+ substring(string, number, number?) The substring function
+ returns the substring of the first argument starting at the
+ position specified in the second argument with length
+ specified in the third argument. For example,
+ substring("12345",2,3) returns "234". If the third argument
+ is not specified, it returns the substring starting at the
+ position specified in the second argument and continuing to
+ the end of the string. For example, substring("12345",2)
+ returns "2345". More precisely, each character in the
+ string (see [3.6 Strings]) is considered to have a numeric
+ position: the position of the first character is 1, the
+ position of the second character is 2 and so on. The
+ returned substring contains those characters for which the
+ position of the character is greater than or equal to the
+ second argument and, if the third argument is specified,
+ less than the sum of the second and third arguments; the
+ comparisons and addition used for the above follow the
+ standard IEEE 754 rules. Thus: - substring("12345", 1.5,
+ 2.6) returns "234" - substring("12345", 0, 3) returns "12"
+ - substring("12345", 0 div 0, 3) returns "" -
+ substring("12345", 1, 0 div 0) returns "" -
+ substring("12345", -42, 1 div 0) returns "12345" -
+ substring("12345", -1 div 0, 1 div 0) returns "" """
+ libxml2mod.xmlXPathSubstringFunction(self._o, nargs)
+
+ def xpathSumFunction(self, nargs):
+ """Implement the sum() XPath function number sum(node-set) The
+ sum function returns the sum of the values of the nodes in
+ the argument node-set. """
+ libxml2mod.xmlXPathSumFunction(self._o, nargs)
+
+ def xpathTranslateFunction(self, nargs):
+ """Implement the translate() XPath function string
+ translate(string, string, string) The translate function
+ returns the first argument string with occurrences of
+ characters in the second argument string replaced by the
+ character at the corresponding position in the third
+ argument string. For example, translate("bar","abc","ABC")
+ returns the string BAr. If there is a character in the
+ second argument string with no character at a corresponding
+ position in the third argument string (because the second
+ argument string is longer than the third argument string),
+ then occurrences of that character in the first argument
+ string are removed. For example,
+ translate("--aaa--","abc-","ABC") """
+ libxml2mod.xmlXPathTranslateFunction(self._o, nargs)
+
+ def xpathTrueFunction(self, nargs):
+ """Implement the true() XPath function boolean true() """
+ libxml2mod.xmlXPathTrueFunction(self._o, nargs)
+
+ def xpathValueFlipSign(self):
+ """Implement the unary - operation on an XPath object The
+ numeric operators convert their operands to numbers as if
+ by calling the number function. """
+ libxml2mod.xmlXPathValueFlipSign(self._o)
+
+ def xpatherror(self, file, line, no):
+ """Formats an error message. """
+ libxml2mod.xmlXPatherror(self._o, file, line, no)
+
+ #
+ # xpathParserContext functions from module xpointer
+ #
+
+ def xpointerEvalRangePredicate(self):
+ """[8] Predicate ::= '[' PredicateExpr ']' [9]
+ PredicateExpr ::= Expr Evaluate a predicate as in
+ xmlXPathEvalPredicate() but for a Location Set instead of a
+ node set """
+ libxml2mod.xmlXPtrEvalRangePredicate(self._o)
+
+ def xpointerRangeToFunction(self, nargs):
+ """Implement the range-to() XPointer function """
+ libxml2mod.xmlXPtrRangeToFunction(self._o, nargs)
+
+# xlinkShow
+XLINK_SHOW_NONE = 0
+XLINK_SHOW_NEW = 1
+XLINK_SHOW_EMBED = 2
+XLINK_SHOW_REPLACE = 3
+
+# xmlRelaxNGParserFlag
+XML_RELAXNGP_NONE = 0
+XML_RELAXNGP_FREE_DOC = 1
+XML_RELAXNGP_CRNG = 2
+
+# xmlBufferAllocationScheme
+XML_BUFFER_ALLOC_DOUBLEIT = 1
+XML_BUFFER_ALLOC_EXACT = 2
+XML_BUFFER_ALLOC_IMMUTABLE = 3
+XML_BUFFER_ALLOC_IO = 4
+XML_BUFFER_ALLOC_HYBRID = 5
+
+# xmlParserSeverities
+XML_PARSER_SEVERITY_VALIDITY_WARNING = 1
+XML_PARSER_SEVERITY_VALIDITY_ERROR = 2
+XML_PARSER_SEVERITY_WARNING = 3
+XML_PARSER_SEVERITY_ERROR = 4
+
+# xmlAttributeDefault
+XML_ATTRIBUTE_NONE = 1
+XML_ATTRIBUTE_REQUIRED = 2
+XML_ATTRIBUTE_IMPLIED = 3
+XML_ATTRIBUTE_FIXED = 4
+
+# xmlSchemaValType
+XML_SCHEMAS_UNKNOWN = 0
+XML_SCHEMAS_STRING = 1
+XML_SCHEMAS_NORMSTRING = 2
+XML_SCHEMAS_DECIMAL = 3
+XML_SCHEMAS_TIME = 4
+XML_SCHEMAS_GDAY = 5
+XML_SCHEMAS_GMONTH = 6
+XML_SCHEMAS_GMONTHDAY = 7
+XML_SCHEMAS_GYEAR = 8
+XML_SCHEMAS_GYEARMONTH = 9
+XML_SCHEMAS_DATE = 10
+XML_SCHEMAS_DATETIME = 11
+XML_SCHEMAS_DURATION = 12
+XML_SCHEMAS_FLOAT = 13
+XML_SCHEMAS_DOUBLE = 14
+XML_SCHEMAS_BOOLEAN = 15
+XML_SCHEMAS_TOKEN = 16
+XML_SCHEMAS_LANGUAGE = 17
+XML_SCHEMAS_NMTOKEN = 18
+XML_SCHEMAS_NMTOKENS = 19
+XML_SCHEMAS_NAME = 20
+XML_SCHEMAS_QNAME = 21
+XML_SCHEMAS_NCNAME = 22
+XML_SCHEMAS_ID = 23
+XML_SCHEMAS_IDREF = 24
+XML_SCHEMAS_IDREFS = 25
+XML_SCHEMAS_ENTITY = 26
+XML_SCHEMAS_ENTITIES = 27
+XML_SCHEMAS_NOTATION = 28
+XML_SCHEMAS_ANYURI = 29
+XML_SCHEMAS_INTEGER = 30
+XML_SCHEMAS_NPINTEGER = 31
+XML_SCHEMAS_NINTEGER = 32
+XML_SCHEMAS_NNINTEGER = 33
+XML_SCHEMAS_PINTEGER = 34
+XML_SCHEMAS_INT = 35
+XML_SCHEMAS_UINT = 36
+XML_SCHEMAS_LONG = 37
+XML_SCHEMAS_ULONG = 38
+XML_SCHEMAS_SHORT = 39
+XML_SCHEMAS_USHORT = 40
+XML_SCHEMAS_BYTE = 41
+XML_SCHEMAS_UBYTE = 42
+XML_SCHEMAS_HEXBINARY = 43
+XML_SCHEMAS_BASE64BINARY = 44
+XML_SCHEMAS_ANYTYPE = 45
+XML_SCHEMAS_ANYSIMPLETYPE = 46
+
+# xmlParserInputState
+XML_PARSER_EOF = -1
+XML_PARSER_START = 0
+XML_PARSER_MISC = 1
+XML_PARSER_PI = 2
+XML_PARSER_DTD = 3
+XML_PARSER_PROLOG = 4
+XML_PARSER_COMMENT = 5
+XML_PARSER_START_TAG = 6
+XML_PARSER_CONTENT = 7
+XML_PARSER_CDATA_SECTION = 8
+XML_PARSER_END_TAG = 9
+XML_PARSER_ENTITY_DECL = 10
+XML_PARSER_ENTITY_VALUE = 11
+XML_PARSER_ATTRIBUTE_VALUE = 12
+XML_PARSER_SYSTEM_LITERAL = 13
+XML_PARSER_EPILOG = 14
+XML_PARSER_IGNORE = 15
+XML_PARSER_PUBLIC_LITERAL = 16
+
+# xmlEntityType
+XML_INTERNAL_GENERAL_ENTITY = 1
+XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2
+XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3
+XML_INTERNAL_PARAMETER_ENTITY = 4
+XML_EXTERNAL_PARAMETER_ENTITY = 5
+XML_INTERNAL_PREDEFINED_ENTITY = 6
+
+# xmlSaveOption
+XML_SAVE_FORMAT = 1
+XML_SAVE_NO_DECL = 2
+XML_SAVE_NO_EMPTY = 4
+XML_SAVE_NO_XHTML = 8
+XML_SAVE_XHTML = 16
+XML_SAVE_AS_XML = 32
+XML_SAVE_AS_HTML = 64
+XML_SAVE_WSNONSIG = 128
+
+# xmlPatternFlags
+XML_PATTERN_DEFAULT = 0
+XML_PATTERN_XPATH = 1
+XML_PATTERN_XSSEL = 2
+XML_PATTERN_XSFIELD = 4
+
+# xmlParserErrors
+XML_ERR_OK = 0
+XML_ERR_INTERNAL_ERROR = 1
+XML_ERR_NO_MEMORY = 2
+XML_ERR_DOCUMENT_START = 3
+XML_ERR_DOCUMENT_EMPTY = 4
+XML_ERR_DOCUMENT_END = 5
+XML_ERR_INVALID_HEX_CHARREF = 6
+XML_ERR_INVALID_DEC_CHARREF = 7
+XML_ERR_INVALID_CHARREF = 8
+XML_ERR_INVALID_CHAR = 9
+XML_ERR_CHARREF_AT_EOF = 10
+XML_ERR_CHARREF_IN_PROLOG = 11
+XML_ERR_CHARREF_IN_EPILOG = 12
+XML_ERR_CHARREF_IN_DTD = 13
+XML_ERR_ENTITYREF_AT_EOF = 14
+XML_ERR_ENTITYREF_IN_PROLOG = 15
+XML_ERR_ENTITYREF_IN_EPILOG = 16
+XML_ERR_ENTITYREF_IN_DTD = 17
+XML_ERR_PEREF_AT_EOF = 18
+XML_ERR_PEREF_IN_PROLOG = 19
+XML_ERR_PEREF_IN_EPILOG = 20
+XML_ERR_PEREF_IN_INT_SUBSET = 21
+XML_ERR_ENTITYREF_NO_NAME = 22
+XML_ERR_ENTITYREF_SEMICOL_MISSING = 23
+XML_ERR_PEREF_NO_NAME = 24
+XML_ERR_PEREF_SEMICOL_MISSING = 25
+XML_ERR_UNDECLARED_ENTITY = 26
+XML_WAR_UNDECLARED_ENTITY = 27
+XML_ERR_UNPARSED_ENTITY = 28
+XML_ERR_ENTITY_IS_EXTERNAL = 29
+XML_ERR_ENTITY_IS_PARAMETER = 30
+XML_ERR_UNKNOWN_ENCODING = 31
+XML_ERR_UNSUPPORTED_ENCODING = 32
+XML_ERR_STRING_NOT_STARTED = 33
+XML_ERR_STRING_NOT_CLOSED = 34
+XML_ERR_NS_DECL_ERROR = 35
+XML_ERR_ENTITY_NOT_STARTED = 36
+XML_ERR_ENTITY_NOT_FINISHED = 37
+XML_ERR_LT_IN_ATTRIBUTE = 38
+XML_ERR_ATTRIBUTE_NOT_STARTED = 39
+XML_ERR_ATTRIBUTE_NOT_FINISHED = 40
+XML_ERR_ATTRIBUTE_WITHOUT_VALUE = 41
+XML_ERR_ATTRIBUTE_REDEFINED = 42
+XML_ERR_LITERAL_NOT_STARTED = 43
+XML_ERR_LITERAL_NOT_FINISHED = 44
+XML_ERR_COMMENT_NOT_FINISHED = 45
+XML_ERR_PI_NOT_STARTED = 46
+XML_ERR_PI_NOT_FINISHED = 47
+XML_ERR_NOTATION_NOT_STARTED = 48
+XML_ERR_NOTATION_NOT_FINISHED = 49
+XML_ERR_ATTLIST_NOT_STARTED = 50
+XML_ERR_ATTLIST_NOT_FINISHED = 51
+XML_ERR_MIXED_NOT_STARTED = 52
+XML_ERR_MIXED_NOT_FINISHED = 53
+XML_ERR_ELEMCONTENT_NOT_STARTED = 54
+XML_ERR_ELEMCONTENT_NOT_FINISHED = 55
+XML_ERR_XMLDECL_NOT_STARTED = 56
+XML_ERR_XMLDECL_NOT_FINISHED = 57
+XML_ERR_CONDSEC_NOT_STARTED = 58
+XML_ERR_CONDSEC_NOT_FINISHED = 59
+XML_ERR_EXT_SUBSET_NOT_FINISHED = 60
+XML_ERR_DOCTYPE_NOT_FINISHED = 61
+XML_ERR_MISPLACED_CDATA_END = 62
+XML_ERR_CDATA_NOT_FINISHED = 63
+XML_ERR_RESERVED_XML_NAME = 64
+XML_ERR_SPACE_REQUIRED = 65
+XML_ERR_SEPARATOR_REQUIRED = 66
+XML_ERR_NMTOKEN_REQUIRED = 67
+XML_ERR_NAME_REQUIRED = 68
+XML_ERR_PCDATA_REQUIRED = 69
+XML_ERR_URI_REQUIRED = 70
+XML_ERR_PUBID_REQUIRED = 71
+XML_ERR_LT_REQUIRED = 72
+XML_ERR_GT_REQUIRED = 73
+XML_ERR_LTSLASH_REQUIRED = 74
+XML_ERR_EQUAL_REQUIRED = 75
+XML_ERR_TAG_NAME_MISMATCH = 76
+XML_ERR_TAG_NOT_FINISHED = 77
+XML_ERR_STANDALONE_VALUE = 78
+XML_ERR_ENCODING_NAME = 79
+XML_ERR_HYPHEN_IN_COMMENT = 80
+XML_ERR_INVALID_ENCODING = 81
+XML_ERR_EXT_ENTITY_STANDALONE = 82
+XML_ERR_CONDSEC_INVALID = 83
+XML_ERR_VALUE_REQUIRED = 84
+XML_ERR_NOT_WELL_BALANCED = 85
+XML_ERR_EXTRA_CONTENT = 86
+XML_ERR_ENTITY_CHAR_ERROR = 87
+XML_ERR_ENTITY_PE_INTERNAL = 88
+XML_ERR_ENTITY_LOOP = 89
+XML_ERR_ENTITY_BOUNDARY = 90
+XML_ERR_INVALID_URI = 91
+XML_ERR_URI_FRAGMENT = 92
+XML_WAR_CATALOG_PI = 93
+XML_ERR_NO_DTD = 94
+XML_ERR_CONDSEC_INVALID_KEYWORD = 95
+XML_ERR_VERSION_MISSING = 96
+XML_WAR_UNKNOWN_VERSION = 97
+XML_WAR_LANG_VALUE = 98
+XML_WAR_NS_URI = 99
+XML_WAR_NS_URI_RELATIVE = 100
+XML_ERR_MISSING_ENCODING = 101
+XML_WAR_SPACE_VALUE = 102
+XML_ERR_NOT_STANDALONE = 103
+XML_ERR_ENTITY_PROCESSING = 104
+XML_ERR_NOTATION_PROCESSING = 105
+XML_WAR_NS_COLUMN = 106
+XML_WAR_ENTITY_REDEFINED = 107
+XML_ERR_UNKNOWN_VERSION = 108
+XML_ERR_VERSION_MISMATCH = 109
+XML_ERR_NAME_TOO_LONG = 110
+XML_ERR_USER_STOP = 111
+XML_NS_ERR_XML_NAMESPACE = 200
+XML_NS_ERR_UNDEFINED_NAMESPACE = 201
+XML_NS_ERR_QNAME = 202
+XML_NS_ERR_ATTRIBUTE_REDEFINED = 203
+XML_NS_ERR_EMPTY = 204
+XML_NS_ERR_COLON = 205
+XML_DTD_ATTRIBUTE_DEFAULT = 500
+XML_DTD_ATTRIBUTE_REDEFINED = 501
+XML_DTD_ATTRIBUTE_VALUE = 502
+XML_DTD_CONTENT_ERROR = 503
+XML_DTD_CONTENT_MODEL = 504
+XML_DTD_CONTENT_NOT_DETERMINIST = 505
+XML_DTD_DIFFERENT_PREFIX = 506
+XML_DTD_ELEM_DEFAULT_NAMESPACE = 507
+XML_DTD_ELEM_NAMESPACE = 508
+XML_DTD_ELEM_REDEFINED = 509
+XML_DTD_EMPTY_NOTATION = 510
+XML_DTD_ENTITY_TYPE = 511
+XML_DTD_ID_FIXED = 512
+XML_DTD_ID_REDEFINED = 513
+XML_DTD_ID_SUBSET = 514
+XML_DTD_INVALID_CHILD = 515
+XML_DTD_INVALID_DEFAULT = 516
+XML_DTD_LOAD_ERROR = 517
+XML_DTD_MISSING_ATTRIBUTE = 518
+XML_DTD_MIXED_CORRUPT = 519
+XML_DTD_MULTIPLE_ID = 520
+XML_DTD_NO_DOC = 521
+XML_DTD_NO_DTD = 522
+XML_DTD_NO_ELEM_NAME = 523
+XML_DTD_NO_PREFIX = 524
+XML_DTD_NO_ROOT = 525
+XML_DTD_NOTATION_REDEFINED = 526
+XML_DTD_NOTATION_VALUE = 527
+XML_DTD_NOT_EMPTY = 528
+XML_DTD_NOT_PCDATA = 529
+XML_DTD_NOT_STANDALONE = 530
+XML_DTD_ROOT_NAME = 531
+XML_DTD_STANDALONE_WHITE_SPACE = 532
+XML_DTD_UNKNOWN_ATTRIBUTE = 533
+XML_DTD_UNKNOWN_ELEM = 534
+XML_DTD_UNKNOWN_ENTITY = 535
+XML_DTD_UNKNOWN_ID = 536
+XML_DTD_UNKNOWN_NOTATION = 537
+XML_DTD_STANDALONE_DEFAULTED = 538
+XML_DTD_XMLID_VALUE = 539
+XML_DTD_XMLID_TYPE = 540
+XML_DTD_DUP_TOKEN = 541
+XML_HTML_STRUCURE_ERROR = 800
+XML_HTML_UNKNOWN_TAG = 801
+XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000
+XML_RNGP_ATTR_CONFLICT = 1001
+XML_RNGP_ATTRIBUTE_CHILDREN = 1002
+XML_RNGP_ATTRIBUTE_CONTENT = 1003
+XML_RNGP_ATTRIBUTE_EMPTY = 1004
+XML_RNGP_ATTRIBUTE_NOOP = 1005
+XML_RNGP_CHOICE_CONTENT = 1006
+XML_RNGP_CHOICE_EMPTY = 1007
+XML_RNGP_CREATE_FAILURE = 1008
+XML_RNGP_DATA_CONTENT = 1009
+XML_RNGP_DEF_CHOICE_AND_INTERLEAVE = 1010
+XML_RNGP_DEFINE_CREATE_FAILED = 1011
+XML_RNGP_DEFINE_EMPTY = 1012
+XML_RNGP_DEFINE_MISSING = 1013
+XML_RNGP_DEFINE_NAME_MISSING = 1014
+XML_RNGP_ELEM_CONTENT_EMPTY = 1015
+XML_RNGP_ELEM_CONTENT_ERROR = 1016
+XML_RNGP_ELEMENT_EMPTY = 1017
+XML_RNGP_ELEMENT_CONTENT = 1018
+XML_RNGP_ELEMENT_NAME = 1019
+XML_RNGP_ELEMENT_NO_CONTENT = 1020
+XML_RNGP_ELEM_TEXT_CONFLICT = 1021
+XML_RNGP_EMPTY = 1022
+XML_RNGP_EMPTY_CONSTRUCT = 1023
+XML_RNGP_EMPTY_CONTENT = 1024
+XML_RNGP_EMPTY_NOT_EMPTY = 1025
+XML_RNGP_ERROR_TYPE_LIB = 1026
+XML_RNGP_EXCEPT_EMPTY = 1027
+XML_RNGP_EXCEPT_MISSING = 1028
+XML_RNGP_EXCEPT_MULTIPLE = 1029
+XML_RNGP_EXCEPT_NO_CONTENT = 1030
+XML_RNGP_EXTERNALREF_EMTPY = 1031
+XML_RNGP_EXTERNAL_REF_FAILURE = 1032
+XML_RNGP_EXTERNALREF_RECURSE = 1033
+XML_RNGP_FORBIDDEN_ATTRIBUTE = 1034
+XML_RNGP_FOREIGN_ELEMENT = 1035
+XML_RNGP_GRAMMAR_CONTENT = 1036
+XML_RNGP_GRAMMAR_EMPTY = 1037
+XML_RNGP_GRAMMAR_MISSING = 1038
+XML_RNGP_GRAMMAR_NO_START = 1039
+XML_RNGP_GROUP_ATTR_CONFLICT = 1040
+XML_RNGP_HREF_ERROR = 1041
+XML_RNGP_INCLUDE_EMPTY = 1042
+XML_RNGP_INCLUDE_FAILURE = 1043
+XML_RNGP_INCLUDE_RECURSE = 1044
+XML_RNGP_INTERLEAVE_ADD = 1045
+XML_RNGP_INTERLEAVE_CREATE_FAILED = 1046
+XML_RNGP_INTERLEAVE_EMPTY = 1047
+XML_RNGP_INTERLEAVE_NO_CONTENT = 1048
+XML_RNGP_INVALID_DEFINE_NAME = 1049
+XML_RNGP_INVALID_URI = 1050
+XML_RNGP_INVALID_VALUE = 1051
+XML_RNGP_MISSING_HREF = 1052
+XML_RNGP_NAME_MISSING = 1053
+XML_RNGP_NEED_COMBINE = 1054
+XML_RNGP_NOTALLOWED_NOT_EMPTY = 1055
+XML_RNGP_NSNAME_ATTR_ANCESTOR = 1056
+XML_RNGP_NSNAME_NO_NS = 1057
+XML_RNGP_PARAM_FORBIDDEN = 1058
+XML_RNGP_PARAM_NAME_MISSING = 1059
+XML_RNGP_PARENTREF_CREATE_FAILED = 1060
+XML_RNGP_PARENTREF_NAME_INVALID = 1061
+XML_RNGP_PARENTREF_NO_NAME = 1062
+XML_RNGP_PARENTREF_NO_PARENT = 1063
+XML_RNGP_PARENTREF_NOT_EMPTY = 1064
+XML_RNGP_PARSE_ERROR = 1065
+XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME = 1066
+XML_RNGP_PAT_ATTR_ATTR = 1067
+XML_RNGP_PAT_ATTR_ELEM = 1068
+XML_RNGP_PAT_DATA_EXCEPT_ATTR = 1069
+XML_RNGP_PAT_DATA_EXCEPT_ELEM = 1070
+XML_RNGP_PAT_DATA_EXCEPT_EMPTY = 1071
+XML_RNGP_PAT_DATA_EXCEPT_GROUP = 1072
+XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE = 1073
+XML_RNGP_PAT_DATA_EXCEPT_LIST = 1074
+XML_RNGP_PAT_DATA_EXCEPT_ONEMORE = 1075
+XML_RNGP_PAT_DATA_EXCEPT_REF = 1076
+XML_RNGP_PAT_DATA_EXCEPT_TEXT = 1077
+XML_RNGP_PAT_LIST_ATTR = 1078
+XML_RNGP_PAT_LIST_ELEM = 1079
+XML_RNGP_PAT_LIST_INTERLEAVE = 1080
+XML_RNGP_PAT_LIST_LIST = 1081
+XML_RNGP_PAT_LIST_REF = 1082
+XML_RNGP_PAT_LIST_TEXT = 1083
+XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME = 1084
+XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME = 1085
+XML_RNGP_PAT_ONEMORE_GROUP_ATTR = 1086
+XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR = 1087
+XML_RNGP_PAT_START_ATTR = 1088
+XML_RNGP_PAT_START_DATA = 1089
+XML_RNGP_PAT_START_EMPTY = 1090
+XML_RNGP_PAT_START_GROUP = 1091
+XML_RNGP_PAT_START_INTERLEAVE = 1092
+XML_RNGP_PAT_START_LIST = 1093
+XML_RNGP_PAT_START_ONEMORE = 1094
+XML_RNGP_PAT_START_TEXT = 1095
+XML_RNGP_PAT_START_VALUE = 1096
+XML_RNGP_PREFIX_UNDEFINED = 1097
+XML_RNGP_REF_CREATE_FAILED = 1098
+XML_RNGP_REF_CYCLE = 1099
+XML_RNGP_REF_NAME_INVALID = 1100
+XML_RNGP_REF_NO_DEF = 1101
+XML_RNGP_REF_NO_NAME = 1102
+XML_RNGP_REF_NOT_EMPTY = 1103
+XML_RNGP_START_CHOICE_AND_INTERLEAVE = 1104
+XML_RNGP_START_CONTENT = 1105
+XML_RNGP_START_EMPTY = 1106
+XML_RNGP_START_MISSING = 1107
+XML_RNGP_TEXT_EXPECTED = 1108
+XML_RNGP_TEXT_HAS_CHILD = 1109
+XML_RNGP_TYPE_MISSING = 1110
+XML_RNGP_TYPE_NOT_FOUND = 1111
+XML_RNGP_TYPE_VALUE = 1112
+XML_RNGP_UNKNOWN_ATTRIBUTE = 1113
+XML_RNGP_UNKNOWN_COMBINE = 1114
+XML_RNGP_UNKNOWN_CONSTRUCT = 1115
+XML_RNGP_UNKNOWN_TYPE_LIB = 1116
+XML_RNGP_URI_FRAGMENT = 1117
+XML_RNGP_URI_NOT_ABSOLUTE = 1118
+XML_RNGP_VALUE_EMPTY = 1119
+XML_RNGP_VALUE_NO_CONTENT = 1120
+XML_RNGP_XMLNS_NAME = 1121
+XML_RNGP_XML_NS = 1122
+XML_XPATH_EXPRESSION_OK = 1200
+XML_XPATH_NUMBER_ERROR = 1201
+XML_XPATH_UNFINISHED_LITERAL_ERROR = 1202
+XML_XPATH_START_LITERAL_ERROR = 1203
+XML_XPATH_VARIABLE_REF_ERROR = 1204
+XML_XPATH_UNDEF_VARIABLE_ERROR = 1205
+XML_XPATH_INVALID_PREDICATE_ERROR = 1206
+XML_XPATH_EXPR_ERROR = 1207
+XML_XPATH_UNCLOSED_ERROR = 1208
+XML_XPATH_UNKNOWN_FUNC_ERROR = 1209
+XML_XPATH_INVALID_OPERAND = 1210
+XML_XPATH_INVALID_TYPE = 1211
+XML_XPATH_INVALID_ARITY = 1212
+XML_XPATH_INVALID_CTXT_SIZE = 1213
+XML_XPATH_INVALID_CTXT_POSITION = 1214
+XML_XPATH_MEMORY_ERROR = 1215
+XML_XPTR_SYNTAX_ERROR = 1216
+XML_XPTR_RESOURCE_ERROR = 1217
+XML_XPTR_SUB_RESOURCE_ERROR = 1218
+XML_XPATH_UNDEF_PREFIX_ERROR = 1219
+XML_XPATH_ENCODING_ERROR = 1220
+XML_XPATH_INVALID_CHAR_ERROR = 1221
+XML_TREE_INVALID_HEX = 1300
+XML_TREE_INVALID_DEC = 1301
+XML_TREE_UNTERMINATED_ENTITY = 1302
+XML_TREE_NOT_UTF8 = 1303
+XML_SAVE_NOT_UTF8 = 1400
+XML_SAVE_CHAR_INVALID = 1401
+XML_SAVE_NO_DOCTYPE = 1402
+XML_SAVE_UNKNOWN_ENCODING = 1403
+XML_REGEXP_COMPILE_ERROR = 1450
+XML_IO_UNKNOWN = 1500
+XML_IO_EACCES = 1501
+XML_IO_EAGAIN = 1502
+XML_IO_EBADF = 1503
+XML_IO_EBADMSG = 1504
+XML_IO_EBUSY = 1505
+XML_IO_ECANCELED = 1506
+XML_IO_ECHILD = 1507
+XML_IO_EDEADLK = 1508
+XML_IO_EDOM = 1509
+XML_IO_EEXIST = 1510
+XML_IO_EFAULT = 1511
+XML_IO_EFBIG = 1512
+XML_IO_EINPROGRESS = 1513
+XML_IO_EINTR = 1514
+XML_IO_EINVAL = 1515
+XML_IO_EIO = 1516
+XML_IO_EISDIR = 1517
+XML_IO_EMFILE = 1518
+XML_IO_EMLINK = 1519
+XML_IO_EMSGSIZE = 1520
+XML_IO_ENAMETOOLONG = 1521
+XML_IO_ENFILE = 1522
+XML_IO_ENODEV = 1523
+XML_IO_ENOENT = 1524
+XML_IO_ENOEXEC = 1525
+XML_IO_ENOLCK = 1526
+XML_IO_ENOMEM = 1527
+XML_IO_ENOSPC = 1528
+XML_IO_ENOSYS = 1529
+XML_IO_ENOTDIR = 1530
+XML_IO_ENOTEMPTY = 1531
+XML_IO_ENOTSUP = 1532
+XML_IO_ENOTTY = 1533
+XML_IO_ENXIO = 1534
+XML_IO_EPERM = 1535
+XML_IO_EPIPE = 1536
+XML_IO_ERANGE = 1537
+XML_IO_EROFS = 1538
+XML_IO_ESPIPE = 1539
+XML_IO_ESRCH = 1540
+XML_IO_ETIMEDOUT = 1541
+XML_IO_EXDEV = 1542
+XML_IO_NETWORK_ATTEMPT = 1543
+XML_IO_ENCODER = 1544
+XML_IO_FLUSH = 1545
+XML_IO_WRITE = 1546
+XML_IO_NO_INPUT = 1547
+XML_IO_BUFFER_FULL = 1548
+XML_IO_LOAD_ERROR = 1549
+XML_IO_ENOTSOCK = 1550
+XML_IO_EISCONN = 1551
+XML_IO_ECONNREFUSED = 1552
+XML_IO_ENETUNREACH = 1553
+XML_IO_EADDRINUSE = 1554
+XML_IO_EALREADY = 1555
+XML_IO_EAFNOSUPPORT = 1556
+XML_XINCLUDE_RECURSION = 1600
+XML_XINCLUDE_PARSE_VALUE = 1601
+XML_XINCLUDE_ENTITY_DEF_MISMATCH = 1602
+XML_XINCLUDE_NO_HREF = 1603
+XML_XINCLUDE_NO_FALLBACK = 1604
+XML_XINCLUDE_HREF_URI = 1605
+XML_XINCLUDE_TEXT_FRAGMENT = 1606
+XML_XINCLUDE_TEXT_DOCUMENT = 1607
+XML_XINCLUDE_INVALID_CHAR = 1608
+XML_XINCLUDE_BUILD_FAILED = 1609
+XML_XINCLUDE_UNKNOWN_ENCODING = 1610
+XML_XINCLUDE_MULTIPLE_ROOT = 1611
+XML_XINCLUDE_XPTR_FAILED = 1612
+XML_XINCLUDE_XPTR_RESULT = 1613
+XML_XINCLUDE_INCLUDE_IN_INCLUDE = 1614
+XML_XINCLUDE_FALLBACKS_IN_INCLUDE = 1615
+XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE = 1616
+XML_XINCLUDE_DEPRECATED_NS = 1617
+XML_XINCLUDE_FRAGMENT_ID = 1618
+XML_CATALOG_MISSING_ATTR = 1650
+XML_CATALOG_ENTRY_BROKEN = 1651
+XML_CATALOG_PREFER_VALUE = 1652
+XML_CATALOG_NOT_CATALOG = 1653
+XML_CATALOG_RECURSION = 1654
+XML_SCHEMAP_PREFIX_UNDEFINED = 1700
+XML_SCHEMAP_ATTRFORMDEFAULT_VALUE = 1701
+XML_SCHEMAP_ATTRGRP_NONAME_NOREF = 1702
+XML_SCHEMAP_ATTR_NONAME_NOREF = 1703
+XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF = 1704
+XML_SCHEMAP_ELEMFORMDEFAULT_VALUE = 1705
+XML_SCHEMAP_ELEM_NONAME_NOREF = 1706
+XML_SCHEMAP_EXTENSION_NO_BASE = 1707
+XML_SCHEMAP_FACET_NO_VALUE = 1708
+XML_SCHEMAP_FAILED_BUILD_IMPORT = 1709
+XML_SCHEMAP_GROUP_NONAME_NOREF = 1710
+XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI = 1711
+XML_SCHEMAP_IMPORT_REDEFINE_NSNAME = 1712
+XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI = 1713
+XML_SCHEMAP_INVALID_BOOLEAN = 1714
+XML_SCHEMAP_INVALID_ENUM = 1715
+XML_SCHEMAP_INVALID_FACET = 1716
+XML_SCHEMAP_INVALID_FACET_VALUE = 1717
+XML_SCHEMAP_INVALID_MAXOCCURS = 1718
+XML_SCHEMAP_INVALID_MINOCCURS = 1719
+XML_SCHEMAP_INVALID_REF_AND_SUBTYPE = 1720
+XML_SCHEMAP_INVALID_WHITE_SPACE = 1721
+XML_SCHEMAP_NOATTR_NOREF = 1722
+XML_SCHEMAP_NOTATION_NO_NAME = 1723
+XML_SCHEMAP_NOTYPE_NOREF = 1724
+XML_SCHEMAP_REF_AND_SUBTYPE = 1725
+XML_SCHEMAP_RESTRICTION_NONAME_NOREF = 1726
+XML_SCHEMAP_SIMPLETYPE_NONAME = 1727
+XML_SCHEMAP_TYPE_AND_SUBTYPE = 1728
+XML_SCHEMAP_UNKNOWN_ALL_CHILD = 1729
+XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD = 1730
+XML_SCHEMAP_UNKNOWN_ATTR_CHILD = 1731
+XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD = 1732
+XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP = 1733
+XML_SCHEMAP_UNKNOWN_BASE_TYPE = 1734
+XML_SCHEMAP_UNKNOWN_CHOICE_CHILD = 1735
+XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD = 1736
+XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD = 1737
+XML_SCHEMAP_UNKNOWN_ELEM_CHILD = 1738
+XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD = 1739
+XML_SCHEMAP_UNKNOWN_FACET_CHILD = 1740
+XML_SCHEMAP_UNKNOWN_FACET_TYPE = 1741
+XML_SCHEMAP_UNKNOWN_GROUP_CHILD = 1742
+XML_SCHEMAP_UNKNOWN_IMPORT_CHILD = 1743
+XML_SCHEMAP_UNKNOWN_LIST_CHILD = 1744
+XML_SCHEMAP_UNKNOWN_NOTATION_CHILD = 1745
+XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD = 1746
+XML_SCHEMAP_UNKNOWN_REF = 1747
+XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD = 1748
+XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD = 1749
+XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD = 1750
+XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD = 1751
+XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD = 1752
+XML_SCHEMAP_UNKNOWN_TYPE = 1753
+XML_SCHEMAP_UNKNOWN_UNION_CHILD = 1754
+XML_SCHEMAP_ELEM_DEFAULT_FIXED = 1755
+XML_SCHEMAP_REGEXP_INVALID = 1756
+XML_SCHEMAP_FAILED_LOAD = 1757
+XML_SCHEMAP_NOTHING_TO_PARSE = 1758
+XML_SCHEMAP_NOROOT = 1759
+XML_SCHEMAP_REDEFINED_GROUP = 1760
+XML_SCHEMAP_REDEFINED_TYPE = 1761
+XML_SCHEMAP_REDEFINED_ELEMENT = 1762
+XML_SCHEMAP_REDEFINED_ATTRGROUP = 1763
+XML_SCHEMAP_REDEFINED_ATTR = 1764
+XML_SCHEMAP_REDEFINED_NOTATION = 1765
+XML_SCHEMAP_FAILED_PARSE = 1766
+XML_SCHEMAP_UNKNOWN_PREFIX = 1767
+XML_SCHEMAP_DEF_AND_PREFIX = 1768
+XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD = 1769
+XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI = 1770
+XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI = 1771
+XML_SCHEMAP_NOT_SCHEMA = 1772
+XML_SCHEMAP_UNKNOWN_MEMBER_TYPE = 1773
+XML_SCHEMAP_INVALID_ATTR_USE = 1774
+XML_SCHEMAP_RECURSIVE = 1775
+XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE = 1776
+XML_SCHEMAP_INVALID_ATTR_COMBINATION = 1777
+XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION = 1778
+XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD = 1779
+XML_SCHEMAP_INVALID_ATTR_NAME = 1780
+XML_SCHEMAP_REF_AND_CONTENT = 1781
+XML_SCHEMAP_CT_PROPS_CORRECT_1 = 1782
+XML_SCHEMAP_CT_PROPS_CORRECT_2 = 1783
+XML_SCHEMAP_CT_PROPS_CORRECT_3 = 1784
+XML_SCHEMAP_CT_PROPS_CORRECT_4 = 1785
+XML_SCHEMAP_CT_PROPS_CORRECT_5 = 1786
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1 = 1787
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1 = 1788
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2 = 1789
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2 = 1790
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3 = 1791
+XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER = 1792
+XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE = 1793
+XML_SCHEMAP_UNION_NOT_EXPRESSIBLE = 1794
+XML_SCHEMAP_SRC_IMPORT_3_1 = 1795
+XML_SCHEMAP_SRC_IMPORT_3_2 = 1796
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1 = 1797
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2 = 1798
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3 = 1799
+XML_SCHEMAP_COS_CT_EXTENDS_1_3 = 1800
+XML_SCHEMAV_NOROOT = 1801
+XML_SCHEMAV_UNDECLAREDELEM = 1802
+XML_SCHEMAV_NOTTOPLEVEL = 1803
+XML_SCHEMAV_MISSING = 1804
+XML_SCHEMAV_WRONGELEM = 1805
+XML_SCHEMAV_NOTYPE = 1806
+XML_SCHEMAV_NOROLLBACK = 1807
+XML_SCHEMAV_ISABSTRACT = 1808
+XML_SCHEMAV_NOTEMPTY = 1809
+XML_SCHEMAV_ELEMCONT = 1810
+XML_SCHEMAV_HAVEDEFAULT = 1811
+XML_SCHEMAV_NOTNILLABLE = 1812
+XML_SCHEMAV_EXTRACONTENT = 1813
+XML_SCHEMAV_INVALIDATTR = 1814
+XML_SCHEMAV_INVALIDELEM = 1815
+XML_SCHEMAV_NOTDETERMINIST = 1816
+XML_SCHEMAV_CONSTRUCT = 1817
+XML_SCHEMAV_INTERNAL = 1818
+XML_SCHEMAV_NOTSIMPLE = 1819
+XML_SCHEMAV_ATTRUNKNOWN = 1820
+XML_SCHEMAV_ATTRINVALID = 1821
+XML_SCHEMAV_VALUE = 1822
+XML_SCHEMAV_FACET = 1823
+XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1 = 1824
+XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2 = 1825
+XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3 = 1826
+XML_SCHEMAV_CVC_TYPE_3_1_1 = 1827
+XML_SCHEMAV_CVC_TYPE_3_1_2 = 1828
+XML_SCHEMAV_CVC_FACET_VALID = 1829
+XML_SCHEMAV_CVC_LENGTH_VALID = 1830
+XML_SCHEMAV_CVC_MINLENGTH_VALID = 1831
+XML_SCHEMAV_CVC_MAXLENGTH_VALID = 1832
+XML_SCHEMAV_CVC_MININCLUSIVE_VALID = 1833
+XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID = 1834
+XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID = 1835
+XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID = 1836
+XML_SCHEMAV_CVC_TOTALDIGITS_VALID = 1837
+XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID = 1838
+XML_SCHEMAV_CVC_PATTERN_VALID = 1839
+XML_SCHEMAV_CVC_ENUMERATION_VALID = 1840
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1 = 1841
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2 = 1842
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3 = 1843
+XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4 = 1844
+XML_SCHEMAV_CVC_ELT_1 = 1845
+XML_SCHEMAV_CVC_ELT_2 = 1846
+XML_SCHEMAV_CVC_ELT_3_1 = 1847
+XML_SCHEMAV_CVC_ELT_3_2_1 = 1848
+XML_SCHEMAV_CVC_ELT_3_2_2 = 1849
+XML_SCHEMAV_CVC_ELT_4_1 = 1850
+XML_SCHEMAV_CVC_ELT_4_2 = 1851
+XML_SCHEMAV_CVC_ELT_4_3 = 1852
+XML_SCHEMAV_CVC_ELT_5_1_1 = 1853
+XML_SCHEMAV_CVC_ELT_5_1_2 = 1854
+XML_SCHEMAV_CVC_ELT_5_2_1 = 1855
+XML_SCHEMAV_CVC_ELT_5_2_2_1 = 1856
+XML_SCHEMAV_CVC_ELT_5_2_2_2_1 = 1857
+XML_SCHEMAV_CVC_ELT_5_2_2_2_2 = 1858
+XML_SCHEMAV_CVC_ELT_6 = 1859
+XML_SCHEMAV_CVC_ELT_7 = 1860
+XML_SCHEMAV_CVC_ATTRIBUTE_1 = 1861
+XML_SCHEMAV_CVC_ATTRIBUTE_2 = 1862
+XML_SCHEMAV_CVC_ATTRIBUTE_3 = 1863
+XML_SCHEMAV_CVC_ATTRIBUTE_4 = 1864
+XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1 = 1865
+XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1 = 1866
+XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2 = 1867
+XML_SCHEMAV_CVC_COMPLEX_TYPE_4 = 1868
+XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1 = 1869
+XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2 = 1870
+XML_SCHEMAV_ELEMENT_CONTENT = 1871
+XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING = 1872
+XML_SCHEMAV_CVC_COMPLEX_TYPE_1 = 1873
+XML_SCHEMAV_CVC_AU = 1874
+XML_SCHEMAV_CVC_TYPE_1 = 1875
+XML_SCHEMAV_CVC_TYPE_2 = 1876
+XML_SCHEMAV_CVC_IDC = 1877
+XML_SCHEMAV_CVC_WILDCARD = 1878
+XML_SCHEMAV_MISC = 1879
+XML_XPTR_UNKNOWN_SCHEME = 1900
+XML_XPTR_CHILDSEQ_START = 1901
+XML_XPTR_EVAL_FAILED = 1902
+XML_XPTR_EXTRA_OBJECTS = 1903
+XML_C14N_CREATE_CTXT = 1950
+XML_C14N_REQUIRES_UTF8 = 1951
+XML_C14N_CREATE_STACK = 1952
+XML_C14N_INVALID_NODE = 1953
+XML_C14N_UNKNOW_NODE = 1954
+XML_C14N_RELATIVE_NAMESPACE = 1955
+XML_FTP_PASV_ANSWER = 2000
+XML_FTP_EPSV_ANSWER = 2001
+XML_FTP_ACCNT = 2002
+XML_FTP_URL_SYNTAX = 2003
+XML_HTTP_URL_SYNTAX = 2020
+XML_HTTP_USE_IP = 2021
+XML_HTTP_UNKNOWN_HOST = 2022
+XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000
+XML_SCHEMAP_SRC_SIMPLE_TYPE_2 = 3001
+XML_SCHEMAP_SRC_SIMPLE_TYPE_3 = 3002
+XML_SCHEMAP_SRC_SIMPLE_TYPE_4 = 3003
+XML_SCHEMAP_SRC_RESOLVE = 3004
+XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE = 3005
+XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE = 3006
+XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES = 3007
+XML_SCHEMAP_ST_PROPS_CORRECT_1 = 3008
+XML_SCHEMAP_ST_PROPS_CORRECT_2 = 3009
+XML_SCHEMAP_ST_PROPS_CORRECT_3 = 3010
+XML_SCHEMAP_COS_ST_RESTRICTS_1_1 = 3011
+XML_SCHEMAP_COS_ST_RESTRICTS_1_2 = 3012
+XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1 = 3013
+XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2 = 3014
+XML_SCHEMAP_COS_ST_RESTRICTS_2_1 = 3015
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1 = 3016
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2 = 3017
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1 = 3018
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2 = 3019
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3 = 3020
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4 = 3021
+XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5 = 3022
+XML_SCHEMAP_COS_ST_RESTRICTS_3_1 = 3023
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1 = 3024
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2 = 3025
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2 = 3026
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1 = 3027
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3 = 3028
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4 = 3029
+XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5 = 3030
+XML_SCHEMAP_COS_ST_DERIVED_OK_2_1 = 3031
+XML_SCHEMAP_COS_ST_DERIVED_OK_2_2 = 3032
+XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED = 3033
+XML_SCHEMAP_S4S_ELEM_MISSING = 3034
+XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED = 3035
+XML_SCHEMAP_S4S_ATTR_MISSING = 3036
+XML_SCHEMAP_S4S_ATTR_INVALID_VALUE = 3037
+XML_SCHEMAP_SRC_ELEMENT_1 = 3038
+XML_SCHEMAP_SRC_ELEMENT_2_1 = 3039
+XML_SCHEMAP_SRC_ELEMENT_2_2 = 3040
+XML_SCHEMAP_SRC_ELEMENT_3 = 3041
+XML_SCHEMAP_P_PROPS_CORRECT_1 = 3042
+XML_SCHEMAP_P_PROPS_CORRECT_2_1 = 3043
+XML_SCHEMAP_P_PROPS_CORRECT_2_2 = 3044
+XML_SCHEMAP_E_PROPS_CORRECT_2 = 3045
+XML_SCHEMAP_E_PROPS_CORRECT_3 = 3046
+XML_SCHEMAP_E_PROPS_CORRECT_4 = 3047
+XML_SCHEMAP_E_PROPS_CORRECT_5 = 3048
+XML_SCHEMAP_E_PROPS_CORRECT_6 = 3049
+XML_SCHEMAP_SRC_INCLUDE = 3050
+XML_SCHEMAP_SRC_ATTRIBUTE_1 = 3051
+XML_SCHEMAP_SRC_ATTRIBUTE_2 = 3052
+XML_SCHEMAP_SRC_ATTRIBUTE_3_1 = 3053
+XML_SCHEMAP_SRC_ATTRIBUTE_3_2 = 3054
+XML_SCHEMAP_SRC_ATTRIBUTE_4 = 3055
+XML_SCHEMAP_NO_XMLNS = 3056
+XML_SCHEMAP_NO_XSI = 3057
+XML_SCHEMAP_COS_VALID_DEFAULT_1 = 3058
+XML_SCHEMAP_COS_VALID_DEFAULT_2_1 = 3059
+XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1 = 3060
+XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2 = 3061
+XML_SCHEMAP_CVC_SIMPLE_TYPE = 3062
+XML_SCHEMAP_COS_CT_EXTENDS_1_1 = 3063
+XML_SCHEMAP_SRC_IMPORT_1_1 = 3064
+XML_SCHEMAP_SRC_IMPORT_1_2 = 3065
+XML_SCHEMAP_SRC_IMPORT_2 = 3066
+XML_SCHEMAP_SRC_IMPORT_2_1 = 3067
+XML_SCHEMAP_SRC_IMPORT_2_2 = 3068
+XML_SCHEMAP_INTERNAL = 3069
+XML_SCHEMAP_NOT_DETERMINISTIC = 3070
+XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1 = 3071
+XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2 = 3072
+XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3 = 3073
+XML_SCHEMAP_MG_PROPS_CORRECT_1 = 3074
+XML_SCHEMAP_MG_PROPS_CORRECT_2 = 3075
+XML_SCHEMAP_SRC_CT_1 = 3076
+XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3 = 3077
+XML_SCHEMAP_AU_PROPS_CORRECT_2 = 3078
+XML_SCHEMAP_A_PROPS_CORRECT_2 = 3079
+XML_SCHEMAP_C_PROPS_CORRECT = 3080
+XML_SCHEMAP_SRC_REDEFINE = 3081
+XML_SCHEMAP_SRC_IMPORT = 3082
+XML_SCHEMAP_WARN_SKIP_SCHEMA = 3083
+XML_SCHEMAP_WARN_UNLOCATED_SCHEMA = 3084
+XML_SCHEMAP_WARN_ATTR_REDECL_PROH = 3085
+XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH = 3086
+XML_SCHEMAP_AG_PROPS_CORRECT = 3087
+XML_SCHEMAP_COS_CT_EXTENDS_1_2 = 3088
+XML_SCHEMAP_AU_PROPS_CORRECT = 3089
+XML_SCHEMAP_A_PROPS_CORRECT_3 = 3090
+XML_SCHEMAP_COS_ALL_LIMITED = 3091
+XML_SCHEMATRONV_ASSERT = 4000
+XML_SCHEMATRONV_REPORT = 4001
+XML_MODULE_OPEN = 4900
+XML_MODULE_CLOSE = 4901
+XML_CHECK_FOUND_ELEMENT = 5000
+XML_CHECK_FOUND_ATTRIBUTE = 5001
+XML_CHECK_FOUND_TEXT = 5002
+XML_CHECK_FOUND_CDATA = 5003
+XML_CHECK_FOUND_ENTITYREF = 5004
+XML_CHECK_FOUND_ENTITY = 5005
+XML_CHECK_FOUND_PI = 5006
+XML_CHECK_FOUND_COMMENT = 5007
+XML_CHECK_FOUND_DOCTYPE = 5008
+XML_CHECK_FOUND_FRAGMENT = 5009
+XML_CHECK_FOUND_NOTATION = 5010
+XML_CHECK_UNKNOWN_NODE = 5011
+XML_CHECK_ENTITY_TYPE = 5012
+XML_CHECK_NO_PARENT = 5013
+XML_CHECK_NO_DOC = 5014
+XML_CHECK_NO_NAME = 5015
+XML_CHECK_NO_ELEM = 5016
+XML_CHECK_WRONG_DOC = 5017
+XML_CHECK_NO_PREV = 5018
+XML_CHECK_WRONG_PREV = 5019
+XML_CHECK_NO_NEXT = 5020
+XML_CHECK_WRONG_NEXT = 5021
+XML_CHECK_NOT_DTD = 5022
+XML_CHECK_NOT_ATTR = 5023
+XML_CHECK_NOT_ATTR_DECL = 5024
+XML_CHECK_NOT_ELEM_DECL = 5025
+XML_CHECK_NOT_ENTITY_DECL = 5026
+XML_CHECK_NOT_NS_DECL = 5027
+XML_CHECK_NO_HREF = 5028
+XML_CHECK_WRONG_PARENT = 5029
+XML_CHECK_NS_SCOPE = 5030
+XML_CHECK_NS_ANCESTOR = 5031
+XML_CHECK_NOT_UTF8 = 5032
+XML_CHECK_NO_DICT = 5033
+XML_CHECK_NOT_NCNAME = 5034
+XML_CHECK_OUTSIDE_DICT = 5035
+XML_CHECK_WRONG_NAME = 5036
+XML_CHECK_NAME_NOT_NULL = 5037
+XML_I18N_NO_NAME = 6000
+XML_I18N_NO_HANDLER = 6001
+XML_I18N_EXCESS_HANDLER = 6002
+XML_I18N_CONV_FAILED = 6003
+XML_I18N_NO_OUTPUT = 6004
+XML_BUF_OVERFLOW = 7000
+
+# xmlExpNodeType
+XML_EXP_EMPTY = 0
+XML_EXP_FORBID = 1
+XML_EXP_ATOM = 2
+XML_EXP_SEQ = 3
+XML_EXP_OR = 4
+XML_EXP_COUNT = 5
+
+# xmlElementContentType
+XML_ELEMENT_CONTENT_PCDATA = 1
+XML_ELEMENT_CONTENT_ELEMENT = 2
+XML_ELEMENT_CONTENT_SEQ = 3
+XML_ELEMENT_CONTENT_OR = 4
+
+# xmlParserProperties
+XML_PARSER_LOADDTD = 1
+XML_PARSER_DEFAULTATTRS = 2
+XML_PARSER_VALIDATE = 3
+XML_PARSER_SUBST_ENTITIES = 4
+
+# xmlReaderTypes
+XML_READER_TYPE_NONE = 0
+XML_READER_TYPE_ELEMENT = 1
+XML_READER_TYPE_ATTRIBUTE = 2
+XML_READER_TYPE_TEXT = 3
+XML_READER_TYPE_CDATA = 4
+XML_READER_TYPE_ENTITY_REFERENCE = 5
+XML_READER_TYPE_ENTITY = 6
+XML_READER_TYPE_PROCESSING_INSTRUCTION = 7
+XML_READER_TYPE_COMMENT = 8
+XML_READER_TYPE_DOCUMENT = 9
+XML_READER_TYPE_DOCUMENT_TYPE = 10
+XML_READER_TYPE_DOCUMENT_FRAGMENT = 11
+XML_READER_TYPE_NOTATION = 12
+XML_READER_TYPE_WHITESPACE = 13
+XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14
+XML_READER_TYPE_END_ELEMENT = 15
+XML_READER_TYPE_END_ENTITY = 16
+XML_READER_TYPE_XML_DECLARATION = 17
+
+# xmlCatalogPrefer
+XML_CATA_PREFER_NONE = 0
+XML_CATA_PREFER_PUBLIC = 1
+XML_CATA_PREFER_SYSTEM = 2
+
+# xmlElementType
+XML_ELEMENT_NODE = 1
+XML_ATTRIBUTE_NODE = 2
+XML_TEXT_NODE = 3
+XML_CDATA_SECTION_NODE = 4
+XML_ENTITY_REF_NODE = 5
+XML_ENTITY_NODE = 6
+XML_PI_NODE = 7
+XML_COMMENT_NODE = 8
+XML_DOCUMENT_NODE = 9
+XML_DOCUMENT_TYPE_NODE = 10
+XML_DOCUMENT_FRAG_NODE = 11
+XML_NOTATION_NODE = 12
+XML_HTML_DOCUMENT_NODE = 13
+XML_DTD_NODE = 14
+XML_ELEMENT_DECL = 15
+XML_ATTRIBUTE_DECL = 16
+XML_ENTITY_DECL = 17
+XML_NAMESPACE_DECL = 18
+XML_XINCLUDE_START = 19
+XML_XINCLUDE_END = 20
+XML_DOCB_DOCUMENT_NODE = 21
+
+# xlinkActuate
+XLINK_ACTUATE_NONE = 0
+XLINK_ACTUATE_AUTO = 1
+XLINK_ACTUATE_ONREQUEST = 2
+
+# xmlFeature
+XML_WITH_THREAD = 1
+XML_WITH_TREE = 2
+XML_WITH_OUTPUT = 3
+XML_WITH_PUSH = 4
+XML_WITH_READER = 5
+XML_WITH_PATTERN = 6
+XML_WITH_WRITER = 7
+XML_WITH_SAX1 = 8
+XML_WITH_FTP = 9
+XML_WITH_HTTP = 10
+XML_WITH_VALID = 11
+XML_WITH_HTML = 12
+XML_WITH_LEGACY = 13
+XML_WITH_C14N = 14
+XML_WITH_CATALOG = 15
+XML_WITH_XPATH = 16
+XML_WITH_XPTR = 17
+XML_WITH_XINCLUDE = 18
+XML_WITH_ICONV = 19
+XML_WITH_ISO8859X = 20
+XML_WITH_UNICODE = 21
+XML_WITH_REGEXP = 22
+XML_WITH_AUTOMATA = 23
+XML_WITH_EXPR = 24
+XML_WITH_SCHEMAS = 25
+XML_WITH_SCHEMATRON = 26
+XML_WITH_MODULES = 27
+XML_WITH_DEBUG = 28
+XML_WITH_DEBUG_MEM = 29
+XML_WITH_DEBUG_RUN = 30
+XML_WITH_ZLIB = 31
+XML_WITH_ICU = 32
+XML_WITH_LZMA = 33
+XML_WITH_NONE = 99999
+
+# xmlElementContentOccur
+XML_ELEMENT_CONTENT_ONCE = 1
+XML_ELEMENT_CONTENT_OPT = 2
+XML_ELEMENT_CONTENT_MULT = 3
+XML_ELEMENT_CONTENT_PLUS = 4
+
+# xmlXPathError
+XPATH_EXPRESSION_OK = 0
+XPATH_NUMBER_ERROR = 1
+XPATH_UNFINISHED_LITERAL_ERROR = 2
+XPATH_START_LITERAL_ERROR = 3
+XPATH_VARIABLE_REF_ERROR = 4
+XPATH_UNDEF_VARIABLE_ERROR = 5
+XPATH_INVALID_PREDICATE_ERROR = 6
+XPATH_EXPR_ERROR = 7
+XPATH_UNCLOSED_ERROR = 8
+XPATH_UNKNOWN_FUNC_ERROR = 9
+XPATH_INVALID_OPERAND = 10
+XPATH_INVALID_TYPE = 11
+XPATH_INVALID_ARITY = 12
+XPATH_INVALID_CTXT_SIZE = 13
+XPATH_INVALID_CTXT_POSITION = 14
+XPATH_MEMORY_ERROR = 15
+XPTR_SYNTAX_ERROR = 16
+XPTR_RESOURCE_ERROR = 17
+XPTR_SUB_RESOURCE_ERROR = 18
+XPATH_UNDEF_PREFIX_ERROR = 19
+XPATH_ENCODING_ERROR = 20
+XPATH_INVALID_CHAR_ERROR = 21
+XPATH_INVALID_CTXT = 22
+XPATH_STACK_ERROR = 23
+XPATH_FORBID_VARIABLE_ERROR = 24
+
+# xmlTextReaderMode
+XML_TEXTREADER_MODE_INITIAL = 0
+XML_TEXTREADER_MODE_INTERACTIVE = 1
+XML_TEXTREADER_MODE_ERROR = 2
+XML_TEXTREADER_MODE_EOF = 3
+XML_TEXTREADER_MODE_CLOSED = 4
+XML_TEXTREADER_MODE_READING = 5
+
+# xmlErrorLevel
+XML_ERR_NONE = 0
+XML_ERR_WARNING = 1
+XML_ERR_ERROR = 2
+XML_ERR_FATAL = 3
+
+# xmlCharEncoding
+XML_CHAR_ENCODING_ERROR = -1
+XML_CHAR_ENCODING_NONE = 0
+XML_CHAR_ENCODING_UTF8 = 1
+XML_CHAR_ENCODING_UTF16LE = 2
+XML_CHAR_ENCODING_UTF16BE = 3
+XML_CHAR_ENCODING_UCS4LE = 4
+XML_CHAR_ENCODING_UCS4BE = 5
+XML_CHAR_ENCODING_EBCDIC = 6
+XML_CHAR_ENCODING_UCS4_2143 = 7
+XML_CHAR_ENCODING_UCS4_3412 = 8
+XML_CHAR_ENCODING_UCS2 = 9
+XML_CHAR_ENCODING_8859_1 = 10
+XML_CHAR_ENCODING_8859_2 = 11
+XML_CHAR_ENCODING_8859_3 = 12
+XML_CHAR_ENCODING_8859_4 = 13
+XML_CHAR_ENCODING_8859_5 = 14
+XML_CHAR_ENCODING_8859_6 = 15
+XML_CHAR_ENCODING_8859_7 = 16
+XML_CHAR_ENCODING_8859_8 = 17
+XML_CHAR_ENCODING_8859_9 = 18
+XML_CHAR_ENCODING_2022_JP = 19
+XML_CHAR_ENCODING_SHIFT_JIS = 20
+XML_CHAR_ENCODING_EUC_JP = 21
+XML_CHAR_ENCODING_ASCII = 22
+
+# xmlErrorDomain
+XML_FROM_NONE = 0
+XML_FROM_PARSER = 1
+XML_FROM_TREE = 2
+XML_FROM_NAMESPACE = 3
+XML_FROM_DTD = 4
+XML_FROM_HTML = 5
+XML_FROM_MEMORY = 6
+XML_FROM_OUTPUT = 7
+XML_FROM_IO = 8
+XML_FROM_FTP = 9
+XML_FROM_HTTP = 10
+XML_FROM_XINCLUDE = 11
+XML_FROM_XPATH = 12
+XML_FROM_XPOINTER = 13
+XML_FROM_REGEXP = 14
+XML_FROM_DATATYPE = 15
+XML_FROM_SCHEMASP = 16
+XML_FROM_SCHEMASV = 17
+XML_FROM_RELAXNGP = 18
+XML_FROM_RELAXNGV = 19
+XML_FROM_CATALOG = 20
+XML_FROM_C14N = 21
+XML_FROM_XSLT = 22
+XML_FROM_VALID = 23
+XML_FROM_CHECK = 24
+XML_FROM_WRITER = 25
+XML_FROM_MODULE = 26
+XML_FROM_I18N = 27
+XML_FROM_SCHEMATRONV = 28
+XML_FROM_BUFFER = 29
+XML_FROM_URI = 30
+
+# htmlStatus
+HTML_NA = 0
+HTML_INVALID = 1
+HTML_DEPRECATED = 2
+HTML_VALID = 4
+HTML_REQUIRED = 12
+
+# xmlSchemaValidOption
+XML_SCHEMA_VAL_VC_I_CREATE = 1
+
+# xmlSchemaWhitespaceValueType
+XML_SCHEMA_WHITESPACE_UNKNOWN = 0
+XML_SCHEMA_WHITESPACE_PRESERVE = 1
+XML_SCHEMA_WHITESPACE_REPLACE = 2
+XML_SCHEMA_WHITESPACE_COLLAPSE = 3
+
+# htmlParserOption
+HTML_PARSE_RECOVER = 1
+HTML_PARSE_NODEFDTD = 4
+HTML_PARSE_NOERROR = 32
+HTML_PARSE_NOWARNING = 64
+HTML_PARSE_PEDANTIC = 128
+HTML_PARSE_NOBLANKS = 256
+HTML_PARSE_NONET = 2048
+HTML_PARSE_NOIMPLIED = 8192
+HTML_PARSE_COMPACT = 65536
+HTML_PARSE_IGNORE_ENC = 2097152
+
+# xmlRelaxNGValidErr
+XML_RELAXNG_OK = 0
+XML_RELAXNG_ERR_MEMORY = 1
+XML_RELAXNG_ERR_TYPE = 2
+XML_RELAXNG_ERR_TYPEVAL = 3
+XML_RELAXNG_ERR_DUPID = 4
+XML_RELAXNG_ERR_TYPECMP = 5
+XML_RELAXNG_ERR_NOSTATE = 6
+XML_RELAXNG_ERR_NODEFINE = 7
+XML_RELAXNG_ERR_LISTEXTRA = 8
+XML_RELAXNG_ERR_LISTEMPTY = 9
+XML_RELAXNG_ERR_INTERNODATA = 10
+XML_RELAXNG_ERR_INTERSEQ = 11
+XML_RELAXNG_ERR_INTEREXTRA = 12
+XML_RELAXNG_ERR_ELEMNAME = 13
+XML_RELAXNG_ERR_ATTRNAME = 14
+XML_RELAXNG_ERR_ELEMNONS = 15
+XML_RELAXNG_ERR_ATTRNONS = 16
+XML_RELAXNG_ERR_ELEMWRONGNS = 17
+XML_RELAXNG_ERR_ATTRWRONGNS = 18
+XML_RELAXNG_ERR_ELEMEXTRANS = 19
+XML_RELAXNG_ERR_ATTREXTRANS = 20
+XML_RELAXNG_ERR_ELEMNOTEMPTY = 21
+XML_RELAXNG_ERR_NOELEM = 22
+XML_RELAXNG_ERR_NOTELEM = 23
+XML_RELAXNG_ERR_ATTRVALID = 24
+XML_RELAXNG_ERR_CONTENTVALID = 25
+XML_RELAXNG_ERR_EXTRACONTENT = 26
+XML_RELAXNG_ERR_INVALIDATTR = 27
+XML_RELAXNG_ERR_DATAELEM = 28
+XML_RELAXNG_ERR_VALELEM = 29
+XML_RELAXNG_ERR_LISTELEM = 30
+XML_RELAXNG_ERR_DATATYPE = 31
+XML_RELAXNG_ERR_VALUE = 32
+XML_RELAXNG_ERR_LIST = 33
+XML_RELAXNG_ERR_NOGRAMMAR = 34
+XML_RELAXNG_ERR_EXTRADATA = 35
+XML_RELAXNG_ERR_LACKDATA = 36
+XML_RELAXNG_ERR_INTERNAL = 37
+XML_RELAXNG_ERR_ELEMWRONG = 38
+XML_RELAXNG_ERR_TEXTWRONG = 39
+
+# xmlCatalogAllow
+XML_CATA_ALLOW_NONE = 0
+XML_CATA_ALLOW_GLOBAL = 1
+XML_CATA_ALLOW_DOCUMENT = 2
+XML_CATA_ALLOW_ALL = 3
+
+# xmlAttributeType
+XML_ATTRIBUTE_CDATA = 1
+XML_ATTRIBUTE_ID = 2
+XML_ATTRIBUTE_IDREF = 3
+XML_ATTRIBUTE_IDREFS = 4
+XML_ATTRIBUTE_ENTITY = 5
+XML_ATTRIBUTE_ENTITIES = 6
+XML_ATTRIBUTE_NMTOKEN = 7
+XML_ATTRIBUTE_NMTOKENS = 8
+XML_ATTRIBUTE_ENUMERATION = 9
+XML_ATTRIBUTE_NOTATION = 10
+
+# xmlSchematronValidOptions
+XML_SCHEMATRON_OUT_QUIET = 1
+XML_SCHEMATRON_OUT_TEXT = 2
+XML_SCHEMATRON_OUT_XML = 4
+XML_SCHEMATRON_OUT_ERROR = 8
+XML_SCHEMATRON_OUT_FILE = 256
+XML_SCHEMATRON_OUT_BUFFER = 512
+XML_SCHEMATRON_OUT_IO = 1024
+
+# xmlSchemaContentType
+XML_SCHEMA_CONTENT_UNKNOWN = 0
+XML_SCHEMA_CONTENT_EMPTY = 1
+XML_SCHEMA_CONTENT_ELEMENTS = 2
+XML_SCHEMA_CONTENT_MIXED = 3
+XML_SCHEMA_CONTENT_SIMPLE = 4
+XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS = 5
+XML_SCHEMA_CONTENT_BASIC = 6
+XML_SCHEMA_CONTENT_ANY = 7
+
+# xmlSchemaTypeType
+XML_SCHEMA_TYPE_BASIC = 1
+XML_SCHEMA_TYPE_ANY = 2
+XML_SCHEMA_TYPE_FACET = 3
+XML_SCHEMA_TYPE_SIMPLE = 4
+XML_SCHEMA_TYPE_COMPLEX = 5
+XML_SCHEMA_TYPE_SEQUENCE = 6
+XML_SCHEMA_TYPE_CHOICE = 7
+XML_SCHEMA_TYPE_ALL = 8
+XML_SCHEMA_TYPE_SIMPLE_CONTENT = 9
+XML_SCHEMA_TYPE_COMPLEX_CONTENT = 10
+XML_SCHEMA_TYPE_UR = 11
+XML_SCHEMA_TYPE_RESTRICTION = 12
+XML_SCHEMA_TYPE_EXTENSION = 13
+XML_SCHEMA_TYPE_ELEMENT = 14
+XML_SCHEMA_TYPE_ATTRIBUTE = 15
+XML_SCHEMA_TYPE_ATTRIBUTEGROUP = 16
+XML_SCHEMA_TYPE_GROUP = 17
+XML_SCHEMA_TYPE_NOTATION = 18
+XML_SCHEMA_TYPE_LIST = 19
+XML_SCHEMA_TYPE_UNION = 20
+XML_SCHEMA_TYPE_ANY_ATTRIBUTE = 21
+XML_SCHEMA_TYPE_IDC_UNIQUE = 22
+XML_SCHEMA_TYPE_IDC_KEY = 23
+XML_SCHEMA_TYPE_IDC_KEYREF = 24
+XML_SCHEMA_TYPE_PARTICLE = 25
+XML_SCHEMA_TYPE_ATTRIBUTE_USE = 26
+XML_SCHEMA_FACET_MININCLUSIVE = 1000
+XML_SCHEMA_FACET_MINEXCLUSIVE = 1001
+XML_SCHEMA_FACET_MAXINCLUSIVE = 1002
+XML_SCHEMA_FACET_MAXEXCLUSIVE = 1003
+XML_SCHEMA_FACET_TOTALDIGITS = 1004
+XML_SCHEMA_FACET_FRACTIONDIGITS = 1005
+XML_SCHEMA_FACET_PATTERN = 1006
+XML_SCHEMA_FACET_ENUMERATION = 1007
+XML_SCHEMA_FACET_WHITESPACE = 1008
+XML_SCHEMA_FACET_LENGTH = 1009
+XML_SCHEMA_FACET_MAXLENGTH = 1010
+XML_SCHEMA_FACET_MINLENGTH = 1011
+XML_SCHEMA_EXTRA_QNAMEREF = 2000
+XML_SCHEMA_EXTRA_ATTR_USE_PROHIB = 2001
+
+# xmlModuleOption
+XML_MODULE_LAZY = 1
+XML_MODULE_LOCAL = 2
+
+# xmlParserMode
+XML_PARSE_UNKNOWN = 0
+XML_PARSE_DOM = 1
+XML_PARSE_SAX = 2
+XML_PARSE_PUSH_DOM = 3
+XML_PARSE_PUSH_SAX = 4
+XML_PARSE_READER = 5
+
+# xmlC14NMode
+XML_C14N_1_0 = 0
+XML_C14N_EXCLUSIVE_1_0 = 1
+XML_C14N_1_1 = 2
+
+# xmlParserOption
+XML_PARSE_RECOVER = 1
+XML_PARSE_NOENT = 2
+XML_PARSE_DTDLOAD = 4
+XML_PARSE_DTDATTR = 8
+XML_PARSE_DTDVALID = 16
+XML_PARSE_NOERROR = 32
+XML_PARSE_NOWARNING = 64
+XML_PARSE_PEDANTIC = 128
+XML_PARSE_NOBLANKS = 256
+XML_PARSE_SAX1 = 512
+XML_PARSE_XINCLUDE = 1024
+XML_PARSE_NONET = 2048
+XML_PARSE_NODICT = 4096
+XML_PARSE_NSCLEAN = 8192
+XML_PARSE_NOCDATA = 16384
+XML_PARSE_NOXINCNODE = 32768
+XML_PARSE_COMPACT = 65536
+XML_PARSE_OLD10 = 131072
+XML_PARSE_NOBASEFIX = 262144
+XML_PARSE_HUGE = 524288
+XML_PARSE_OLDSAX = 1048576
+XML_PARSE_IGNORE_ENC = 2097152
+XML_PARSE_BIG_LINES = 4194304
+
+# xmlElementTypeVal
+XML_ELEMENT_TYPE_UNDEFINED = 0
+XML_ELEMENT_TYPE_EMPTY = 1
+XML_ELEMENT_TYPE_ANY = 2
+XML_ELEMENT_TYPE_MIXED = 3
+XML_ELEMENT_TYPE_ELEMENT = 4
+
+# xmlDocProperties
+XML_DOC_WELLFORMED = 1
+XML_DOC_NSVALID = 2
+XML_DOC_OLD10 = 4
+XML_DOC_DTDVALID = 8
+XML_DOC_XINCLUDE = 16
+XML_DOC_USERBUILT = 32
+XML_DOC_INTERNAL = 64
+XML_DOC_HTML = 128
+
+# xlinkType
+XLINK_TYPE_NONE = 0
+XLINK_TYPE_SIMPLE = 1
+XLINK_TYPE_EXTENDED = 2
+XLINK_TYPE_EXTENDED_SET = 3
+
+# xmlXPathObjectType
+XPATH_UNDEFINED = 0
+XPATH_NODESET = 1
+XPATH_BOOLEAN = 2
+XPATH_NUMBER = 3
+XPATH_STRING = 4
+XPATH_POINT = 5
+XPATH_RANGE = 6
+XPATH_LOCATIONSET = 7
+XPATH_USERS = 8
+XPATH_XSLT_TREE = 9
+
+# xmlSchemaValidError
+XML_SCHEMAS_ERR_OK = 0
+XML_SCHEMAS_ERR_NOROOT = 1
+XML_SCHEMAS_ERR_UNDECLAREDELEM = 2
+XML_SCHEMAS_ERR_NOTTOPLEVEL = 3
+XML_SCHEMAS_ERR_MISSING = 4
+XML_SCHEMAS_ERR_WRONGELEM = 5
+XML_SCHEMAS_ERR_NOTYPE = 6
+XML_SCHEMAS_ERR_NOROLLBACK = 7
+XML_SCHEMAS_ERR_ISABSTRACT = 8
+XML_SCHEMAS_ERR_NOTEMPTY = 9
+XML_SCHEMAS_ERR_ELEMCONT = 10
+XML_SCHEMAS_ERR_HAVEDEFAULT = 11
+XML_SCHEMAS_ERR_NOTNILLABLE = 12
+XML_SCHEMAS_ERR_EXTRACONTENT = 13
+XML_SCHEMAS_ERR_INVALIDATTR = 14
+XML_SCHEMAS_ERR_INVALIDELEM = 15
+XML_SCHEMAS_ERR_NOTDETERMINIST = 16
+XML_SCHEMAS_ERR_CONSTRUCT = 17
+XML_SCHEMAS_ERR_INTERNAL = 18
+XML_SCHEMAS_ERR_NOTSIMPLE = 19
+XML_SCHEMAS_ERR_ATTRUNKNOWN = 20
+XML_SCHEMAS_ERR_ATTRINVALID = 21
+XML_SCHEMAS_ERR_VALUE = 22
+XML_SCHEMAS_ERR_FACET = 23
+XML_SCHEMAS_ERR_ = 24
+XML_SCHEMAS_ERR_XXX = 25
+
diff --git a/python/libxml2class.txt b/python/libxml2class.txt
new file mode 100644
index 0000000..ca88544
--- /dev/null
+++ b/python/libxml2class.txt
@@ -0,0 +1,1177 @@
+ Generated Classes for libxml2-python
+
+#
+# Global functions of the module
+#
+
+
+# functions from module HTMLparser
+htmlCreateMemoryParserCtxt()
+htmlHandleOmittedElem()
+htmlIsScriptAttribute()
+htmlNewParserCtxt()
+htmlParseDoc()
+htmlParseFile()
+htmlReadDoc()
+htmlReadFd()
+htmlReadFile()
+htmlReadMemory()
+
+# functions from module HTMLtree
+htmlIsBooleanAttr()
+htmlNewDoc()
+htmlNewDocNoDtD()
+
+# functions from module SAX2
+SAXDefaultVersion()
+defaultSAXHandlerInit()
+docbDefaultSAXHandlerInit()
+htmlDefaultSAXHandlerInit()
+
+# functions from module catalog
+catalogAdd()
+catalogCleanup()
+catalogConvert()
+catalogDump()
+catalogGetPublic()
+catalogGetSystem()
+catalogRemove()
+catalogResolve()
+catalogResolvePublic()
+catalogResolveSystem()
+catalogResolveURI()
+catalogSetDebug()
+initializeCatalog()
+loadACatalog()
+loadCatalog()
+loadCatalogs()
+loadSGMLSuperCatalog()
+newCatalog()
+parseCatalogFile()
+
+# functions from module chvalid
+isBaseChar()
+isBlank()
+isChar()
+isCombining()
+isDigit()
+isExtender()
+isIdeographic()
+isPubidChar()
+
+# functions from module debugXML
+boolToText()
+debugDumpString()
+shellPrintXPathError()
+
+# functions from module dict
+dictCleanup()
+initializeDict()
+
+# functions from module encoding
+addEncodingAlias()
+cleanupCharEncodingHandlers()
+cleanupEncodingAliases()
+delEncodingAlias()
+encodingAlias()
+initCharEncodingHandlers()
+
+# functions from module entities
+cleanupPredefinedEntities()
+initializePredefinedEntities()
+predefinedEntity()
+
+# functions from module globals
+cleanupGlobals()
+initGlobals()
+thrDefDefaultBufferSize()
+thrDefDoValidityCheckingDefaultValue()
+thrDefGetWarningsDefaultValue()
+thrDefIndentTreeOutput()
+thrDefKeepBlanksDefaultValue()
+thrDefLineNumbersDefaultValue()
+thrDefLoadExtDtdDefaultValue()
+thrDefParserDebugEntities()
+thrDefPedanticParserDefaultValue()
+thrDefSaveNoEmptyTags()
+thrDefSubstituteEntitiesDefaultValue()
+thrDefTreeIndentString()
+
+# functions from module nanoftp
+nanoFTPCleanup()
+nanoFTPInit()
+nanoFTPProxy()
+nanoFTPScanProxy()
+
+# functions from module nanohttp
+nanoHTTPCleanup()
+nanoHTTPInit()
+nanoHTTPScanProxy()
+
+# functions from module parser
+createDocParserCtxt()
+initParser()
+keepBlanksDefault()
+lineNumbersDefault()
+newParserCtxt()
+parseDTD()
+parseDoc()
+parseEntity()
+parseFile()
+parseMemory()
+pedanticParserDefault()
+readDoc()
+readFd()
+readFile()
+readMemory()
+recoverDoc()
+recoverFile()
+recoverMemory()
+substituteEntitiesDefault()
+
+# functions from module parserInternals
+checkLanguageID()
+copyChar()
+copyCharMultiByte()
+createEntityParserCtxt()
+createFileParserCtxt()
+createMemoryParserCtxt()
+createURLParserCtxt()
+htmlCreateFileParserCtxt()
+htmlInitAutoClose()
+isLetter()
+namePop()
+namePush()
+nodePop()
+nodePush()
+
+# functions from module python
+SAXParseFile()
+createInputBuffer()
+createOutputBuffer()
+createPushParser()
+debugMemory()
+dumpMemory()
+htmlCreatePushParser()
+htmlSAXParseFile()
+memoryUsed()
+newNode()
+pythonCleanupParser()
+setEntityLoader()
+
+# functions from module relaxng
+relaxNGCleanupTypes()
+relaxNGInitTypes()
+relaxNGNewMemParserCtxt()
+relaxNGNewParserCtxt()
+
+# functions from module tree
+buildQName()
+compressMode()
+isXHTML()
+newComment()
+newDoc()
+newPI()
+newText()
+newTextLen()
+setCompressMode()
+validateNCName()
+validateNMToken()
+validateName()
+validateQName()
+
+# functions from module uri
+URIEscape()
+URIEscapeStr()
+URIUnescapeString()
+buildRelativeURI()
+buildURI()
+canonicPath()
+createURI()
+normalizeURIPath()
+parseURI()
+parseURIRaw()
+pathToURI()
+
+# functions from module valid
+newValidCtxt()
+validateNameValue()
+validateNamesValue()
+validateNmtokenValue()
+validateNmtokensValue()
+
+# functions from module xmlIO
+checkFilename()
+cleanupInputCallbacks()
+cleanupOutputCallbacks()
+fileMatch()
+iOFTPMatch()
+iOHTTPMatch()
+normalizeWindowsPath()
+parserGetDirectory()
+registerDefaultInputCallbacks()
+registerDefaultOutputCallbacks()
+registerHTTPPostCallbacks()
+
+# functions from module xmlerror
+lastError()
+resetLastError()
+
+# functions from module xmlreader
+newTextReaderFilename()
+readerForDoc()
+readerForFd()
+readerForFile()
+readerForMemory()
+
+# functions from module xmlregexp
+regexpCompile()
+
+# functions from module xmlschemas
+schemaNewMemParserCtxt()
+schemaNewParserCtxt()
+
+# functions from module xmlschemastypes
+schemaCleanupTypes()
+schemaCollapseString()
+schemaInitTypes()
+schemaWhiteSpaceReplace()
+
+# functions from module xmlstring
+UTF8Charcmp()
+UTF8Size()
+UTF8Strlen()
+UTF8Strloc()
+UTF8Strndup()
+UTF8Strpos()
+UTF8Strsize()
+UTF8Strsub()
+checkUTF8()
+
+# functions from module xmlunicode
+uCSIsAegeanNumbers()
+uCSIsAlphabeticPresentationForms()
+uCSIsArabic()
+uCSIsArabicPresentationFormsA()
+uCSIsArabicPresentationFormsB()
+uCSIsArmenian()
+uCSIsArrows()
+uCSIsBasicLatin()
+uCSIsBengali()
+uCSIsBlock()
+uCSIsBlockElements()
+uCSIsBopomofo()
+uCSIsBopomofoExtended()
+uCSIsBoxDrawing()
+uCSIsBraillePatterns()
+uCSIsBuhid()
+uCSIsByzantineMusicalSymbols()
+uCSIsCJKCompatibility()
+uCSIsCJKCompatibilityForms()
+uCSIsCJKCompatibilityIdeographs()
+uCSIsCJKCompatibilityIdeographsSupplement()
+uCSIsCJKRadicalsSupplement()
+uCSIsCJKSymbolsandPunctuation()
+uCSIsCJKUnifiedIdeographs()
+uCSIsCJKUnifiedIdeographsExtensionA()
+uCSIsCJKUnifiedIdeographsExtensionB()
+uCSIsCat()
+uCSIsCatC()
+uCSIsCatCc()
+uCSIsCatCf()
+uCSIsCatCo()
+uCSIsCatCs()
+uCSIsCatL()
+uCSIsCatLl()
+uCSIsCatLm()
+uCSIsCatLo()
+uCSIsCatLt()
+uCSIsCatLu()
+uCSIsCatM()
+uCSIsCatMc()
+uCSIsCatMe()
+uCSIsCatMn()
+uCSIsCatN()
+uCSIsCatNd()
+uCSIsCatNl()
+uCSIsCatNo()
+uCSIsCatP()
+uCSIsCatPc()
+uCSIsCatPd()
+uCSIsCatPe()
+uCSIsCatPf()
+uCSIsCatPi()
+uCSIsCatPo()
+uCSIsCatPs()
+uCSIsCatS()
+uCSIsCatSc()
+uCSIsCatSk()
+uCSIsCatSm()
+uCSIsCatSo()
+uCSIsCatZ()
+uCSIsCatZl()
+uCSIsCatZp()
+uCSIsCatZs()
+uCSIsCherokee()
+uCSIsCombiningDiacriticalMarks()
+uCSIsCombiningDiacriticalMarksforSymbols()
+uCSIsCombiningHalfMarks()
+uCSIsCombiningMarksforSymbols()
+uCSIsControlPictures()
+uCSIsCurrencySymbols()
+uCSIsCypriotSyllabary()
+uCSIsCyrillic()
+uCSIsCyrillicSupplement()
+uCSIsDeseret()
+uCSIsDevanagari()
+uCSIsDingbats()
+uCSIsEnclosedAlphanumerics()
+uCSIsEnclosedCJKLettersandMonths()
+uCSIsEthiopic()
+uCSIsGeneralPunctuation()
+uCSIsGeometricShapes()
+uCSIsGeorgian()
+uCSIsGothic()
+uCSIsGreek()
+uCSIsGreekExtended()
+uCSIsGreekandCoptic()
+uCSIsGujarati()
+uCSIsGurmukhi()
+uCSIsHalfwidthandFullwidthForms()
+uCSIsHangulCompatibilityJamo()
+uCSIsHangulJamo()
+uCSIsHangulSyllables()
+uCSIsHanunoo()
+uCSIsHebrew()
+uCSIsHighPrivateUseSurrogates()
+uCSIsHighSurrogates()
+uCSIsHiragana()
+uCSIsIPAExtensions()
+uCSIsIdeographicDescriptionCharacters()
+uCSIsKanbun()
+uCSIsKangxiRadicals()
+uCSIsKannada()
+uCSIsKatakana()
+uCSIsKatakanaPhoneticExtensions()
+uCSIsKhmer()
+uCSIsKhmerSymbols()
+uCSIsLao()
+uCSIsLatin1Supplement()
+uCSIsLatinExtendedA()
+uCSIsLatinExtendedAdditional()
+uCSIsLatinExtendedB()
+uCSIsLetterlikeSymbols()
+uCSIsLimbu()
+uCSIsLinearBIdeograms()
+uCSIsLinearBSyllabary()
+uCSIsLowSurrogates()
+uCSIsMalayalam()
+uCSIsMathematicalAlphanumericSymbols()
+uCSIsMathematicalOperators()
+uCSIsMiscellaneousMathematicalSymbolsA()
+uCSIsMiscellaneousMathematicalSymbolsB()
+uCSIsMiscellaneousSymbols()
+uCSIsMiscellaneousSymbolsandArrows()
+uCSIsMiscellaneousTechnical()
+uCSIsMongolian()
+uCSIsMusicalSymbols()
+uCSIsMyanmar()
+uCSIsNumberForms()
+uCSIsOgham()
+uCSIsOldItalic()
+uCSIsOpticalCharacterRecognition()
+uCSIsOriya()
+uCSIsOsmanya()
+uCSIsPhoneticExtensions()
+uCSIsPrivateUse()
+uCSIsPrivateUseArea()
+uCSIsRunic()
+uCSIsShavian()
+uCSIsSinhala()
+uCSIsSmallFormVariants()
+uCSIsSpacingModifierLetters()
+uCSIsSpecials()
+uCSIsSuperscriptsandSubscripts()
+uCSIsSupplementalArrowsA()
+uCSIsSupplementalArrowsB()
+uCSIsSupplementalMathematicalOperators()
+uCSIsSupplementaryPrivateUseAreaA()
+uCSIsSupplementaryPrivateUseAreaB()
+uCSIsSyriac()
+uCSIsTagalog()
+uCSIsTagbanwa()
+uCSIsTags()
+uCSIsTaiLe()
+uCSIsTaiXuanJingSymbols()
+uCSIsTamil()
+uCSIsTelugu()
+uCSIsThaana()
+uCSIsThai()
+uCSIsTibetan()
+uCSIsUgaritic()
+uCSIsUnifiedCanadianAboriginalSyllabics()
+uCSIsVariationSelectors()
+uCSIsVariationSelectorsSupplement()
+uCSIsYiRadicals()
+uCSIsYiSyllables()
+uCSIsYijingHexagramSymbols()
+
+# functions from module xmlversion
+checkVersion()
+
+# functions from module xpathInternals
+valuePop()
+
+
+#
+# Set of classes of the module
+#
+
+
+
+Class xmlNode(xmlCore)
+ # accessors
+ ns()
+ nsDefs()
+
+ # functions from module debugXML
+ debugDumpNode()
+ debugDumpNodeList()
+ debugDumpOneNode()
+ lsCountNode()
+ lsOneNode()
+ shellPrintNode()
+
+ # functions from module tree
+ addChild()
+ addChildList()
+ addContent()
+ addContentLen()
+ addNextSibling()
+ addPrevSibling()
+ addSibling()
+ copyNode()
+ copyNodeList()
+ copyProp()
+ copyPropList()
+ docCopyNode()
+ docCopyNodeList()
+ docSetRootElement()
+ firstElementChild()
+ freeNode()
+ freeNodeList()
+ getBase()
+ getContent()
+ getLang()
+ getSpacePreserve()
+ hasNsProp()
+ hasProp()
+ isBlankNode()
+ isText()
+ lastChild()
+ lastElementChild()
+ lineNo()
+ listGetRawString()
+ listGetString()
+ newChild()
+ newNs()
+ newNsProp()
+ newNsPropEatName()
+ newProp()
+ newTextChild()
+ nextElementSibling()
+ noNsProp()
+ nodePath()
+ nsProp()
+ previousElementSibling()
+ prop()
+ reconciliateNs()
+ replaceNode()
+ searchNs()
+ searchNsByHref()
+ setBase()
+ setContent()
+ setContentLen()
+ setLang()
+ setListDoc()
+ setName()
+ setNs()
+ setNsProp()
+ setProp()
+ setSpacePreserve()
+ setTreeDoc()
+ textConcat()
+ textMerge()
+ unlinkNode()
+ unsetNsProp()
+ unsetProp()
+
+ # functions from module valid
+ isID()
+ isRef()
+ validNormalizeAttributeValue()
+
+ # functions from module xinclude
+ xincludeProcessTree()
+ xincludeProcessTreeFlags()
+
+ # functions from module xmlschemas
+ schemaValidateOneElement()
+
+ # functions from module xpath
+ xpathCastNodeToNumber()
+ xpathCastNodeToString()
+ xpathCmpNodes()
+ xpathNodeEval()
+
+ # functions from module xpathInternals
+ xpathNewNodeSet()
+ xpathNewValueTree()
+ xpathNextAncestor()
+ xpathNextAncestorOrSelf()
+ xpathNextAttribute()
+ xpathNextChild()
+ xpathNextDescendant()
+ xpathNextDescendantOrSelf()
+ xpathNextFollowing()
+ xpathNextFollowingSibling()
+ xpathNextNamespace()
+ xpathNextParent()
+ xpathNextPreceding()
+ xpathNextPrecedingSibling()
+ xpathNextSelf()
+
+ # functions from module xpointer
+ xpointerNewCollapsedRange()
+ xpointerNewContext()
+ xpointerNewLocationSetNodes()
+ xpointerNewRange()
+ xpointerNewRangeNodes()
+
+
+Class xmlDoc(xmlNode)
+
+ # functions from module HTMLparser
+ htmlAutoCloseTag()
+ htmlIsAutoClosed()
+
+ # functions from module HTMLtree
+ htmlDocContentDumpFormatOutput()
+ htmlDocContentDumpOutput()
+ htmlDocDump()
+ htmlGetMetaEncoding()
+ htmlNodeDumpFile()
+ htmlNodeDumpFileFormat()
+ htmlNodeDumpFormatOutput()
+ htmlNodeDumpOutput()
+ htmlSaveFile()
+ htmlSaveFileEnc()
+ htmlSaveFileFormat()
+ htmlSetMetaEncoding()
+
+ # functions from module debugXML
+ debugCheckDocument()
+ debugDumpDocument()
+ debugDumpDocumentHead()
+ debugDumpEntities()
+
+ # functions from module entities
+ addDocEntity()
+ addDtdEntity()
+ docEntity()
+ dtdEntity()
+ encodeEntities()
+ encodeEntitiesReentrant()
+ encodeSpecialChars()
+ newEntity()
+ parameterEntity()
+
+ # functions from module relaxng
+ relaxNGNewDocParserCtxt()
+ relaxNGValidateDoc()
+ relaxNGValidateFullElement()
+ relaxNGValidatePopElement()
+ relaxNGValidatePushElement()
+
+ # functions from module tree
+ copyDoc()
+ copyNode()
+ copyNodeList()
+ createIntSubset()
+ docCompressMode()
+ dump()
+ elemDump()
+ formatDump()
+ freeDoc()
+ getRootElement()
+ intSubset()
+ newCDataBlock()
+ newCharRef()
+ newDocComment()
+ newDocFragment()
+ newDocNode()
+ newDocNodeEatName()
+ newDocPI()
+ newDocProp()
+ newDocRawNode()
+ newDocText()
+ newDocTextLen()
+ newDtd()
+ newGlobalNs()
+ newReference()
+ nodeDumpOutput()
+ nodeGetBase()
+ nodeListGetRawString()
+ nodeListGetString()
+ reconciliateNs()
+ saveFile()
+ saveFileEnc()
+ saveFileTo()
+ saveFormatFile()
+ saveFormatFileEnc()
+ saveFormatFileTo()
+ searchNs()
+ searchNsByHref()
+ setDocCompressMode()
+ setListDoc()
+ setRootElement()
+ setTreeDoc()
+ stringGetNodeList()
+ stringLenGetNodeList()
+
+ # functions from module valid
+ ID()
+ isID()
+ isMixedElement()
+ isRef()
+ removeID()
+ removeRef()
+ validCtxtNormalizeAttributeValue()
+ validNormalizeAttributeValue()
+ validateDocument()
+ validateDocumentFinal()
+ validateDtd()
+ validateDtdFinal()
+ validateElement()
+ validateNotationUse()
+ validateOneAttribute()
+ validateOneElement()
+ validateOneNamespace()
+ validatePopElement()
+ validatePushElement()
+ validateRoot()
+
+ # functions from module xinclude
+ xincludeProcess()
+ xincludeProcessFlags()
+
+ # functions from module xmlreader
+ NewWalker()
+ readerWalker()
+
+ # functions from module xmlschemas
+ schemaNewDocParserCtxt()
+ schemaValidateDoc()
+
+ # functions from module xpath
+ xpathNewContext()
+ xpathOrderDocElems()
+
+ # functions from module xpointer
+ xpointerNewContext()
+
+
+Class parserCtxt(parserCtxtCore)
+ # accessors
+ doc()
+ isValid()
+ lineNumbers()
+ loadSubset()
+ pedantic()
+ replaceEntities()
+ validate()
+ wellFormed()
+
+ # functions from module HTMLparser
+ htmlCtxtReadDoc()
+ htmlCtxtReadFd()
+ htmlCtxtReadFile()
+ htmlCtxtReadMemory()
+ htmlCtxtReset()
+ htmlCtxtUseOptions()
+ htmlFreeParserCtxt()
+ htmlParseCharRef()
+ htmlParseChunk()
+ htmlParseDocument()
+ htmlParseElement()
+
+ # functions from module parser
+ byteConsumed()
+ clearParserCtxt()
+ ctxtReadDoc()
+ ctxtReadFd()
+ ctxtReadFile()
+ ctxtReadMemory()
+ ctxtReset()
+ ctxtResetPush()
+ ctxtUseOptions()
+ initParserCtxt()
+ parseChunk()
+ parseDocument()
+ parseExtParsedEnt()
+ setupParserForBuffer()
+ stopParser()
+
+ # functions from module parserInternals
+ decodeEntities()
+ handleEntity()
+ namespaceParseNCName()
+ namespaceParseNSDef()
+ nextChar()
+ parseAttValue()
+ parseAttributeListDecl()
+ parseCDSect()
+ parseCharData()
+ parseCharRef()
+ parseComment()
+ parseContent()
+ parseDocTypeDecl()
+ parseElement()
+ parseElementDecl()
+ parseEncName()
+ parseEncodingDecl()
+ parseEndTag()
+ parseEntityDecl()
+ parseEntityRef()
+ parseExternalSubset()
+ parseMarkupDecl()
+ parseMisc()
+ parseName()
+ parseNamespace()
+ parseNmtoken()
+ parseNotationDecl()
+ parsePEReference()
+ parsePI()
+ parsePITarget()
+ parsePubidLiteral()
+ parseQuotedString()
+ parseReference()
+ parseSDDecl()
+ parseStartTag()
+ parseSystemLiteral()
+ parseTextDecl()
+ parseVersionInfo()
+ parseVersionNum()
+ parseXMLDecl()
+ parserHandlePEReference()
+ parserHandleReference()
+ popInput()
+ scanName()
+ skipBlankChars()
+ stringDecodeEntities()
+ stringLenDecodeEntities()
+
+
+Class xmlAttr(xmlNode)
+
+ # functions from module debugXML
+ debugDumpAttr()
+ debugDumpAttrList()
+
+ # functions from module tree
+ copyProp()
+ copyPropList()
+ freeProp()
+ freePropList()
+ removeProp()
+
+ # functions from module valid
+ removeID()
+ removeRef()
+
+
+Class xmlAttribute(xmlNode)
+Class catalog()
+
+ # functions from module catalog
+ add()
+ catalogIsEmpty()
+ convertSGMLCatalog()
+ dump()
+ remove()
+ resolve()
+ resolvePublic()
+ resolveSystem()
+ resolveURI()
+
+
+Class xmlDtd(xmlNode)
+
+ # functions from module debugXML
+ debugDumpDTD()
+
+ # functions from module tree
+ copyDtd()
+ freeDtd()
+
+ # functions from module valid
+ dtdAttrDesc()
+ dtdElementDesc()
+ dtdQAttrDesc()
+ dtdQElementDesc()
+
+
+Class xmlElement(xmlNode)
+
+
+Class xmlEntity(xmlNode)
+
+ # functions from module parserInternals
+ handleEntity()
+Class Error()
+ # accessors
+ code()
+ domain()
+ file()
+ level()
+ line()
+ message()
+
+ # functions from module xmlerror
+ copyError()
+ resetError()
+
+
+Class xmlNs(xmlNode)
+
+ # functions from module tree
+ copyNamespace()
+ copyNamespaceList()
+ freeNs()
+ freeNsList()
+ newChild()
+ newDocNode()
+ newDocNodeEatName()
+ newDocRawNode()
+ newNodeEatName()
+ newNsProp()
+ newNsPropEatName()
+ newTextChild()
+ setNs()
+ setNsProp()
+ unsetNsProp()
+
+ # functions from module xpathInternals
+ xpathNodeSetFreeNs()
+
+
+Class outputBuffer(ioWriteWrapper)
+
+ # functions from module HTMLtree
+ htmlDocContentDumpFormatOutput()
+ htmlDocContentDumpOutput()
+ htmlNodeDumpFormatOutput()
+ htmlNodeDumpOutput()
+
+ # functions from module tree
+ nodeDumpOutput()
+ saveFileTo()
+ saveFormatFileTo()
+
+ # functions from module xmlIO
+ getContent()
+ write()
+ writeString()
+
+
+Class inputBuffer(ioReadWrapper)
+
+ # functions from module xmlIO
+ grow()
+ push()
+ read()
+
+ # functions from module xmlreader
+ Setup()
+ newTextReader()
+Class xmlReg()
+
+ # functions from module xmlregexp
+ regexpExec()
+ regexpIsDeterminist()
+ regexpPrint()
+Class relaxNgParserCtxt()
+
+ # functions from module relaxng
+ relaxNGParse()
+ relaxParserSetFlag()
+Class relaxNgSchema()
+
+ # functions from module relaxng
+ relaxNGDump()
+ relaxNGDumpTree()
+ relaxNGNewValidCtxt()
+
+ # functions from module xmlreader
+ RelaxNGSetSchema()
+
+
+Class relaxNgValidCtxt(relaxNgValidCtxtCore)
+
+ # functions from module relaxng
+ relaxNGValidateDoc()
+ relaxNGValidateFullElement()
+ relaxNGValidatePopElement()
+ relaxNGValidatePushCData()
+ relaxNGValidatePushElement()
+
+ # functions from module xmlreader
+ RelaxNGValidateCtxt()
+Class SchemaParserCtxt()
+
+ # functions from module xmlschemas
+ schemaParse()
+Class Schema()
+
+ # functions from module xmlreader
+ SetSchema()
+
+ # functions from module xmlschemas
+ schemaDump()
+ schemaNewValidCtxt()
+
+
+Class SchemaValidCtxt(SchemaValidCtxtCore)
+
+ # functions from module xmlreader
+ SchemaValidateCtxt()
+
+ # functions from module xmlschemas
+ schemaIsValid()
+ schemaSetValidOptions()
+ schemaValidCtxtGetOptions()
+ schemaValidCtxtGetParserCtxt()
+ schemaValidateDoc()
+ schemaValidateFile()
+ schemaValidateOneElement()
+ schemaValidateSetFilename()
+Class xmlTextReaderLocator()
+
+ # functions from module xmlreader
+ BaseURI()
+ LineNumber()
+
+
+Class xmlTextReader(xmlTextReaderCore)
+
+ # functions from module xmlreader
+ AttributeCount()
+ BaseUri()
+ ByteConsumed()
+ Close()
+ CurrentDoc()
+ CurrentNode()
+ Depth()
+ Encoding()
+ Expand()
+ GetAttribute()
+ GetAttributeNo()
+ GetAttributeNs()
+ GetParserColumnNumber()
+ GetParserLineNumber()
+ GetParserProp()
+ GetRemainder()
+ HasAttributes()
+ HasValue()
+ IsDefault()
+ IsEmptyElement()
+ IsNamespaceDecl()
+ IsValid()
+ LocalName()
+ LookupNamespace()
+ MoveToAttribute()
+ MoveToAttributeNo()
+ MoveToAttributeNs()
+ MoveToElement()
+ MoveToFirstAttribute()
+ MoveToNextAttribute()
+ Name()
+ NamespaceUri()
+ NewDoc()
+ NewFd()
+ NewFile()
+ NewMemory()
+ NewWalker()
+ Next()
+ NextSibling()
+ NodeType()
+ Normalization()
+ Prefix()
+ Preserve()
+ QuoteChar()
+ Read()
+ ReadAttributeValue()
+ ReadInnerXml()
+ ReadOuterXml()
+ ReadState()
+ ReadString()
+ RelaxNGSetSchema()
+ RelaxNGValidate()
+ RelaxNGValidateCtxt()
+ SchemaValidate()
+ SchemaValidateCtxt()
+ SetParserProp()
+ SetSchema()
+ Setup()
+ Standalone()
+ String()
+ Value()
+ XmlLang()
+ XmlVersion()
+Class URI()
+ # accessors
+ authority()
+ fragment()
+ opaque()
+ path()
+ port()
+ query()
+ queryRaw()
+ scheme()
+ server()
+ setAuthority()
+ setFragment()
+ setOpaque()
+ setPath()
+ setPort()
+ setQuery()
+ setQueryRaw()
+ setScheme()
+ setServer()
+ setUser()
+ user()
+
+ # functions from module uri
+ parseURIReference()
+ printURI()
+ saveUri()
+
+
+Class ValidCtxt(ValidCtxtCore)
+
+ # functions from module valid
+ validCtxtNormalizeAttributeValue()
+ validateDocument()
+ validateDocumentFinal()
+ validateDtd()
+ validateDtdFinal()
+ validateElement()
+ validateNotationUse()
+ validateOneAttribute()
+ validateOneElement()
+ validateOneNamespace()
+ validatePopElement()
+ validatePushCData()
+ validatePushElement()
+ validateRoot()
+Class xpathContext()
+ # accessors
+ contextDoc()
+ contextNode()
+ contextPosition()
+ contextSize()
+ function()
+ functionURI()
+ setContextDoc()
+ setContextNode()
+
+ # functions from module python
+ registerXPathFunction()
+ xpathRegisterVariable()
+
+ # functions from module xpath
+ xpathContextSetCache()
+ xpathEval()
+ xpathEvalExpression()
+ xpathFreeContext()
+
+ # functions from module xpathInternals
+ xpathNewParserContext()
+ xpathNsLookup()
+ xpathRegisterAllFunctions()
+ xpathRegisterNs()
+ xpathRegisteredFuncsCleanup()
+ xpathRegisteredNsCleanup()
+ xpathRegisteredVariablesCleanup()
+ xpathVariableLookup()
+ xpathVariableLookupNS()
+
+ # functions from module xpointer
+ xpointerEval()
+Class xpathParserContext()
+ # accessors
+ context()
+
+ # functions from module xpathInternals
+ xpathAddValues()
+ xpathBooleanFunction()
+ xpathCeilingFunction()
+ xpathCompareValues()
+ xpathConcatFunction()
+ xpathContainsFunction()
+ xpathCountFunction()
+ xpathDivValues()
+ xpathEqualValues()
+ xpathErr()
+ xpathEvalExpr()
+ xpathFalseFunction()
+ xpathFloorFunction()
+ xpathFreeParserContext()
+ xpathIdFunction()
+ xpathLangFunction()
+ xpathLastFunction()
+ xpathLocalNameFunction()
+ xpathModValues()
+ xpathMultValues()
+ xpathNamespaceURIFunction()
+ xpathNextAncestor()
+ xpathNextAncestorOrSelf()
+ xpathNextAttribute()
+ xpathNextChild()
+ xpathNextDescendant()
+ xpathNextDescendantOrSelf()
+ xpathNextFollowing()
+ xpathNextFollowingSibling()
+ xpathNextNamespace()
+ xpathNextParent()
+ xpathNextPreceding()
+ xpathNextPrecedingSibling()
+ xpathNextSelf()
+ xpathNormalizeFunction()
+ xpathNotEqualValues()
+ xpathNotFunction()
+ xpathNumberFunction()
+ xpathParseNCName()
+ xpathParseName()
+ xpathPopBoolean()
+ xpathPopNumber()
+ xpathPopString()
+ xpathPositionFunction()
+ xpathRoot()
+ xpathRoundFunction()
+ xpathStartsWithFunction()
+ xpathStringFunction()
+ xpathStringLengthFunction()
+ xpathSubValues()
+ xpathSubstringAfterFunction()
+ xpathSubstringBeforeFunction()
+ xpathSubstringFunction()
+ xpathSumFunction()
+ xpathTranslateFunction()
+ xpathTrueFunction()
+ xpathValueFlipSign()
+ xpatherror()
+
+ # functions from module xpointer
+ xpointerEvalRangePredicate()
+ xpointerRangeToFunction()
diff --git a/python/libxml_wrap.h b/python/libxml_wrap.h
index eaa5e96..53a0618 100644
--- a/python/libxml_wrap.h
+++ b/python/libxml_wrap.h
@@ -23,6 +23,25 @@
#include <libxml/xmlschemas.h>
#endif
+/*
+ * for older versions of Python, we don't use PyBytes, but keep PyString
+ * and don't use Capsule but CObjects
+ */
+#if PY_VERSION_HEX < 0x02070000
+#ifndef PyBytes_Check
+#define PyBytes_Check PyString_Check
+#define PyBytes_Size PyString_Size
+#define PyBytes_AsString PyString_AsString
+#define PyBytes_AS_STRING PyString_AS_STRING
+#define PyBytes_GET_SIZE PyString_GET_SIZE
+#endif
+#ifndef PyCapsule_New
+#define PyCapsule_New PyCObject_FromVoidPtrAndDesc
+#define PyCapsule_CheckExact PyCObject_Check
+#define PyCapsule_GetPointer(o, n) PyCObject_GetDesc((o))
+#endif
+#endif
+
/**
* ATTRIBUTE_UNUSED:
*
@@ -150,8 +169,16 @@ typedef struct {
} PyURI_Object;
/* FILE * have their own internal representation */
+#if PY_MAJOR_VERSION >= 3
+FILE *libxml_PyFileGet(PyObject *f);
+void libxml_PyFileRelease(FILE *f);
+#define PyFile_Get(v) (((v) == Py_None) ? NULL : libxml_PyFileGet(v))
+#define PyFile_Release(f) libxml_PyFileRelease(f)
+#else
#define PyFile_Get(v) (((v) == Py_None) ? NULL : \
(PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout))
+#define PyFile_Release(f)
+#endif
#ifdef LIBXML_SCHEMAS_ENABLED
typedef struct {
@@ -247,3 +274,6 @@ PyObject * libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid);
#endif /* LIBXML_SCHEMAS_ENABLED */
PyObject * libxml_xmlErrorPtrWrap(xmlErrorPtr error);
PyObject * libxml_xmlSchemaSetValidErrors(PyObject * self, PyObject * args);
+PyObject * libxml_xmlRegisterInputCallback(PyObject *self, PyObject *args);
+PyObject * libxml_xmlUnregisterInputCallback(PyObject *self, PyObject *args);
+PyObject * libxml_xmlNodeRemoveNsDef(PyObject * self, PyObject * args);
diff --git a/python/setup.py b/python/setup.py
index b985979..e504323 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -6,14 +6,14 @@ import sys, os
from distutils.core import setup, Extension
# Below ROOT, we expect to find include, include/libxml2, lib and bin.
-# On *nix, it is not needed (but should not harm),
+# On *nix, it is not needed (but should not harm),
# on Windows, it is set by configure.js.
-ROOT = r'/usr'
+ROOT = r'/usr'
# Thread-enabled libxml2
with_threads = 1
-# If this flag is set (windows only),
+# If this flag is set (windows only),
# a private copy of the dlls are included in the package.
# If this flag is not set, the libxml2 and libxslt
# dlls must be found somewhere in the PATH at runtime.
@@ -32,7 +32,7 @@ except:
if WITHDLLS:
# libxml dlls (expected in ROOT/bin)
dlls = [ 'iconv.dll','libxml2.dll','libxslt.dll','libexslt.dll' ]
- dlls = map(lambda dll: os.path.join(ROOT,'bin',dll),dlls)
+ dlls = [os.path.join(ROOT,'bin',dll) for dll in dlls]
# create __init__.py for the libxmlmods package
if not os.path.exists("libxmlmods"):
@@ -51,9 +51,9 @@ else:
libraryPrefix = ''
platformLibs = ["m","z"]
-# those are examined to find
+# those are examined to find
# - libxml2/libxml/tree.h
-# - iconv.h
+# - iconv.h
# - libxslt/xsltconfig.h
includes_dir = [
"/usr/include",
@@ -67,20 +67,20 @@ xml_includes=""
for dir in includes_dir:
if not missing(dir + "/libxml2/libxml/tree.h"):
xml_includes=dir + "/libxml2"
- break;
+ break;
if xml_includes == "":
- print "failed to find headers for libxml2: update includes_dir"
+ print("failed to find headers for libxml2: update includes_dir")
sys.exit(1)
iconv_includes=""
for dir in includes_dir:
if not missing(dir + "/iconv.h"):
iconv_includes=dir
- break;
+ break;
if iconv_includes == "":
- print "failed to find headers for libiconv: update includes_dir"
+ print("failed to find headers for libiconv: update includes_dir")
sys.exit(1)
# those are added in the linker search path for libraries
@@ -90,22 +90,22 @@ os.path.join(ROOT,'lib'),
xml_files = ["libxml2-api.xml", "libxml2-python-api.xml",
"libxml.c", "libxml.py", "libxml_wrap.h", "types.c",
- "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
+ "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
xslt_files = ["libxslt-api.xml", "libxslt-python-api.xml",
"libxslt.c", "libxsl.py", "libxslt_wrap.h",
- "xsltgenerator.py"]
+ "xsltgenerator.py"]
if missing("libxml2-py.c") or missing("libxml2.py"):
try:
- try:
- import xmlgenerator
- except:
- import generator
+ try:
+ import xmlgenerator
+ except:
+ import generator
except:
- print "failed to find and generate stubs for libxml2, aborting ..."
- print sys.exc_type, sys.exc_value
- sys.exit(1)
+ print("failed to find and generate stubs for libxml2, aborting ...")
+ print(sys.exc_info()[0], sys.exc_info()[1])
+ sys.exit(1)
head = open("libxml.py", "r")
generated = open("libxml2class.py", "r")
@@ -116,7 +116,7 @@ if missing("libxml2-py.c") or missing("libxml2.py"):
else:
result.write(line)
for line in generated.readlines():
- result.write(line)
+ result.write(line)
head.close()
generated.close()
result.close()
@@ -124,41 +124,41 @@ if missing("libxml2-py.c") or missing("libxml2.py"):
with_xslt=0
if missing("libxslt-py.c") or missing("libxslt.py"):
if missing("xsltgenerator.py") or missing("libxslt-api.xml"):
- print "libxslt stub generator not found, libxslt not built"
+ print("libxslt stub generator not found, libxslt not built")
else:
- try:
- import xsltgenerator
- except:
- print "failed to generate stubs for libxslt, aborting ..."
- print sys.exc_type, sys.exc_value
- else:
- head = open("libxsl.py", "r")
- generated = open("libxsltclass.py", "r")
- result = open("libxslt.py", "w")
- for line in head.readlines():
+ try:
+ import xsltgenerator
+ except:
+ print("failed to generate stubs for libxslt, aborting ...")
+ print(sys.exc_info()[0], sys.exc_info()[1])
+ else:
+ head = open("libxsl.py", "r")
+ generated = open("libxsltclass.py", "r")
+ result = open("libxslt.py", "w")
+ for line in head.readlines():
if WITHDLLS:
result.write(altImport(line))
else:
result.write(line)
- for line in generated.readlines():
- result.write(line)
- head.close()
- generated.close()
- result.close()
- with_xslt=1
+ for line in generated.readlines():
+ result.write(line)
+ head.close()
+ generated.close()
+ result.close()
+ with_xslt=1
else:
with_xslt=1
if with_xslt == 1:
xslt_includes=""
for dir in includes_dir:
- if not missing(dir + "/libxslt/xsltconfig.h"):
- xslt_includes=dir + "/libxslt"
- break;
+ if not missing(dir + "/libxslt/xsltconfig.h"):
+ xslt_includes=dir + "/libxslt"
+ break;
if xslt_includes == "":
- print "failed to find headers for libxslt: update includes_dir"
- with_xslt = 0
+ print("failed to find headers for libxslt: update includes_dir")
+ with_xslt = 0
descr = "libxml2 package"
@@ -194,11 +194,11 @@ if with_xslt == 1:
extens=[Extension('libxml2mod', c_files, include_dirs=includes,
- library_dirs=libdirs,
- libraries=libs, define_macros=macros)]
+ library_dirs=libdirs,
+ libraries=libs, define_macros=macros)]
if with_xslt == 1:
extens.append(Extension('libxsltmod', xslt_c_files, include_dirs=includes,
- library_dirs=libdirs,
+ library_dirs=libdirs,
libraries=libs, define_macros=macros))
if missing("MANIFEST"):
@@ -208,8 +208,8 @@ if missing("MANIFEST"):
for file in xml_files:
manifest.write(file + "\n")
if with_xslt == 1:
- for file in xslt_files:
- manifest.write(file + "\n")
+ for file in xslt_files:
+ manifest.write(file + "\n")
manifest.close()
if WITHDLLS:
@@ -226,7 +226,7 @@ else:
setup (name = "libxml2-python",
# On *nix, the version number is created from setup.py.in
# On windows, it is set by configure.js
- version = "2.8.0",
+ version = "2.9.2",
description = descr,
author = "Daniel Veillard",
author_email = "veillard@redhat.com",
diff --git a/python/setup.py.in b/python/setup.py.in
index 7eaf530..90c2114 100755
--- a/python/setup.py.in
+++ b/python/setup.py.in
@@ -6,14 +6,14 @@ import sys, os
from distutils.core import setup, Extension
# Below ROOT, we expect to find include, include/libxml2, lib and bin.
-# On *nix, it is not needed (but should not harm),
+# On *nix, it is not needed (but should not harm),
# on Windows, it is set by configure.js.
-ROOT = r'@prefix@'
+ROOT = r'@prefix@'
# Thread-enabled libxml2
with_threads = @WITH_THREADS@
-# If this flag is set (windows only),
+# If this flag is set (windows only),
# a private copy of the dlls are included in the package.
# If this flag is not set, the libxml2 and libxslt
# dlls must be found somewhere in the PATH at runtime.
@@ -32,7 +32,7 @@ except:
if WITHDLLS:
# libxml dlls (expected in ROOT/bin)
dlls = [ 'iconv.dll','libxml2.dll','libxslt.dll','libexslt.dll' ]
- dlls = map(lambda dll: os.path.join(ROOT,'bin',dll),dlls)
+ dlls = [os.path.join(ROOT,'bin',dll) for dll in dlls]
# create __init__.py for the libxmlmods package
if not os.path.exists("libxmlmods"):
@@ -51,9 +51,9 @@ else:
libraryPrefix = ''
platformLibs = ["m","z"]
-# those are examined to find
+# those are examined to find
# - libxml2/libxml/tree.h
-# - iconv.h
+# - iconv.h
# - libxslt/xsltconfig.h
includes_dir = [
"/usr/include",
@@ -67,20 +67,20 @@ xml_includes=""
for dir in includes_dir:
if not missing(dir + "/libxml2/libxml/tree.h"):
xml_includes=dir + "/libxml2"
- break;
+ break;
if xml_includes == "":
- print "failed to find headers for libxml2: update includes_dir"
+ print("failed to find headers for libxml2: update includes_dir")
sys.exit(1)
iconv_includes=""
for dir in includes_dir:
if not missing(dir + "/iconv.h"):
iconv_includes=dir
- break;
+ break;
if iconv_includes == "":
- print "failed to find headers for libiconv: update includes_dir"
+ print("failed to find headers for libiconv: update includes_dir")
sys.exit(1)
# those are added in the linker search path for libraries
@@ -90,22 +90,22 @@ os.path.join(ROOT,'lib'),
xml_files = ["libxml2-api.xml", "libxml2-python-api.xml",
"libxml.c", "libxml.py", "libxml_wrap.h", "types.c",
- "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
+ "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
xslt_files = ["libxslt-api.xml", "libxslt-python-api.xml",
"libxslt.c", "libxsl.py", "libxslt_wrap.h",
- "xsltgenerator.py"]
+ "xsltgenerator.py"]
if missing("libxml2-py.c") or missing("libxml2.py"):
try:
- try:
- import xmlgenerator
- except:
- import generator
+ try:
+ import xmlgenerator
+ except:
+ import generator
except:
- print "failed to find and generate stubs for libxml2, aborting ..."
- print sys.exc_type, sys.exc_value
- sys.exit(1)
+ print("failed to find and generate stubs for libxml2, aborting ...")
+ print(sys.exc_info()[0], sys.exc_info()[1])
+ sys.exit(1)
head = open("libxml.py", "r")
generated = open("libxml2class.py", "r")
@@ -116,7 +116,7 @@ if missing("libxml2-py.c") or missing("libxml2.py"):
else:
result.write(line)
for line in generated.readlines():
- result.write(line)
+ result.write(line)
head.close()
generated.close()
result.close()
@@ -124,41 +124,41 @@ if missing("libxml2-py.c") or missing("libxml2.py"):
with_xslt=0
if missing("libxslt-py.c") or missing("libxslt.py"):
if missing("xsltgenerator.py") or missing("libxslt-api.xml"):
- print "libxslt stub generator not found, libxslt not built"
+ print("libxslt stub generator not found, libxslt not built")
else:
- try:
- import xsltgenerator
- except:
- print "failed to generate stubs for libxslt, aborting ..."
- print sys.exc_type, sys.exc_value
- else:
- head = open("libxsl.py", "r")
- generated = open("libxsltclass.py", "r")
- result = open("libxslt.py", "w")
- for line in head.readlines():
+ try:
+ import xsltgenerator
+ except:
+ print("failed to generate stubs for libxslt, aborting ...")
+ print(sys.exc_info()[0], sys.exc_info()[1])
+ else:
+ head = open("libxsl.py", "r")
+ generated = open("libxsltclass.py", "r")
+ result = open("libxslt.py", "w")
+ for line in head.readlines():
if WITHDLLS:
result.write(altImport(line))
else:
result.write(line)
- for line in generated.readlines():
- result.write(line)
- head.close()
- generated.close()
- result.close()
- with_xslt=1
+ for line in generated.readlines():
+ result.write(line)
+ head.close()
+ generated.close()
+ result.close()
+ with_xslt=1
else:
with_xslt=1
if with_xslt == 1:
xslt_includes=""
for dir in includes_dir:
- if not missing(dir + "/libxslt/xsltconfig.h"):
- xslt_includes=dir + "/libxslt"
- break;
+ if not missing(dir + "/libxslt/xsltconfig.h"):
+ xslt_includes=dir + "/libxslt"
+ break;
if xslt_includes == "":
- print "failed to find headers for libxslt: update includes_dir"
- with_xslt = 0
+ print("failed to find headers for libxslt: update includes_dir")
+ with_xslt = 0
descr = "libxml2 package"
@@ -194,11 +194,11 @@ if with_xslt == 1:
extens=[Extension('libxml2mod', c_files, include_dirs=includes,
- library_dirs=libdirs,
- libraries=libs, define_macros=macros)]
+ library_dirs=libdirs,
+ libraries=libs, define_macros=macros)]
if with_xslt == 1:
extens.append(Extension('libxsltmod', xslt_c_files, include_dirs=includes,
- library_dirs=libdirs,
+ library_dirs=libdirs,
libraries=libs, define_macros=macros))
if missing("MANIFEST"):
@@ -208,8 +208,8 @@ if missing("MANIFEST"):
for file in xml_files:
manifest.write(file + "\n")
if with_xslt == 1:
- for file in xslt_files:
- manifest.write(file + "\n")
+ for file in xslt_files:
+ manifest.write(file + "\n")
manifest.close()
if WITHDLLS:
diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am
index 52c89fc..95ebead 100644
--- a/python/tests/Makefile.am
+++ b/python/tests/Makefile.am
@@ -19,6 +19,7 @@ PYTESTS= \
xpath.py \
outbuf.py \
inbuf.py \
+ input_callback.py \
resolver.py \
regexp.py \
reader.py \
@@ -55,8 +56,11 @@ XMLS= \
invalid.xml \
test.dtd
+CLEANFILES = core tmp.xml *.pyc
+
if WITH_PYTHON
tests: $(PYTESTS)
+ @for f in $(XMLS) ; do test -f $$f || $(LN_S) $(srcdir)/$$f . ; done
@echo "## running Python regression tests"
-@(PYTHONPATH="..:../.libs:$(srcdir)/..:$$PYTHONPATH" ; \
export PYTHONPATH; \
@@ -69,6 +73,3 @@ tests: $(PYTESTS)
else
tests:
endif
-
-clean:
- rm -f *.pyc core
diff --git a/python/tests/Makefile.in b/python/tests/Makefile.in
index a2aaf89..ffda69b 100644
--- a/python/tests/Makefile.in
+++ b/python/tests/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -16,6 +15,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -35,27 +79,38 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = python/tests
-DIST_COMMON = $(dist_example_DATA) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(dist_example_DATA)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -77,14 +132,20 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(exampledir)"
DATA = $(dist_example_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -121,6 +182,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -165,6 +227,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -176,7 +241,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -201,7 +265,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -234,6 +297,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -327,6 +391,7 @@ PYTESTS = \
xpath.py \
outbuf.py \
inbuf.py \
+ input_callback.py \
resolver.py \
regexp.py \
reader.py \
@@ -363,6 +428,7 @@ XMLS = \
invalid.xml \
test.dtd
+CLEANFILES = core tmp.xml *.pyc
all: all-am
.SUFFIXES:
@@ -404,8 +470,11 @@ clean-libtool:
-rm -rf .libs _libs
install-dist_exampleDATA: $(dist_example_DATA)
@$(NORMAL_INSTALL)
- test -z "$(exampledir)" || $(MKDIR_P) "$(DESTDIR)$(exampledir)"
@list='$(dist_example_DATA)'; test -n "$(exampledir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(exampledir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(exampledir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@@ -419,14 +488,12 @@ uninstall-dist_exampleDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_example_DATA)'; test -n "$(exampledir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(exampledir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(exampledir)" && rm -f $$files
-tags: TAGS
-TAGS:
+ dir='$(DESTDIR)$(exampledir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
distdir: $(DISTFILES)
@@ -476,13 +543,19 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -491,6 +564,8 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
@@ -558,19 +633,21 @@ uninstall-am: uninstall-dist_exampleDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dist_exampleDATA \
- install-dvi install-dvi-am install-exec install-exec-am \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
- ps ps-am uninstall uninstall-am uninstall-dist_exampleDATA
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_exampleDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-dist_exampleDATA
@WITH_PYTHON_TRUE@tests: $(PYTESTS)
+@WITH_PYTHON_TRUE@ @for f in $(XMLS) ; do test -f $$f || $(LN_S) $(srcdir)/$$f . ; done
@WITH_PYTHON_TRUE@ @echo "## running Python regression tests"
@WITH_PYTHON_TRUE@ -@(PYTHONPATH="..:../.libs:$(srcdir)/..:$$PYTHONPATH" ; \
@WITH_PYTHON_TRUE@ export PYTHONPATH; \
@@ -582,9 +659,6 @@ uninstall-am: uninstall-dist_exampleDATA
@WITH_PYTHON_TRUE@ echo "-- $$test" ; echo "$$log" ; fi ; done)
@WITH_PYTHON_FALSE@tests:
-clean:
- rm -f *.pyc core
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/python/tests/attribs.py b/python/tests/attribs.py
index 9331a27..99132c2 100755
--- a/python/tests/attribs.py
+++ b/python/tests/attribs.py
@@ -20,7 +20,7 @@ doc = libxml2.parseDoc(
elem = doc.getRootElement()
attr = elem.hasNsProp('attr', 'http://abc.org')
if attr == None or attr.serialize()[:-1] != """<!ATTLIST test abc:attr CDATA #FIXED "def">""":
- print "Failed to find defaulted attribute abc:attr"
+ print("Failed to find defaulted attribute abc:attr")
sys.exit(1)
doc.freeDoc()
@@ -28,7 +28,7 @@ doc.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/build.py b/python/tests/build.py
index bfc776c..b2d3f78 100755
--- a/python/tests/build.py
+++ b/python/tests/build.py
@@ -23,29 +23,29 @@ doc = libxml2.parseFile("tmp.xml")
comment = doc.children
if comment.type != "comment" or \
comment.content != "This is a generated document":
- print "error rereading comment"
+ print("error rereading comment")
sys.exit(1)
pi = comment.next
if pi.type != "pi" or pi.name != "test" or pi.content != "PI content":
- print "error rereading PI"
+ print("error rereading PI")
sys.exit(1)
root = pi.next
if root.name != "doc":
- print "error rereading root"
+ print("error rereading root")
sys.exit(1)
ns = root.ns()
if ns.name != "my" or ns.content != "http://example.com/doc":
- print "error rereading namespace"
+ print("error rereading namespace")
sys.exit(1)
elem = root.children
if elem.name != "foo":
- print "error rereading elem"
+ print("error rereading elem")
sys.exit(1)
if elem.getBase(None) != "http://example.com/imgs":
- print "error rereading base"
+ print("error rereading base")
sys.exit(1)
if elem.prop("img") != "image.gif":
- print "error rereading property"
+ print("error rereading property")
sys.exit(1)
doc.freeDoc()
@@ -53,7 +53,7 @@ doc.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/compareNodes.py b/python/tests/compareNodes.py
index ec04323..ca5a5a2 100755
--- a/python/tests/compareNodes.py
+++ b/python/tests/compareNodes.py
@@ -17,25 +17,25 @@ foonode2 = root.children
# Now check that [in]equality tests work ok
if not ( foonode1 == foonode2 ):
- print "Error comparing nodes with ==, nodes should be equal but are unequal"
+ print("Error comparing nodes with ==, nodes should be equal but are unequal")
sys.exit(1)
if not ( foonode1 != root ):
- print "Error comparing nodes with ==, nodes should not be equal but are equal"
+ print("Error comparing nodes with ==, nodes should not be equal but are equal")
sys.exit(1)
if not ( foonode1 != root ):
- print "Error comparing nodes with !=, nodes should not be equal but are equal"
+ print("Error comparing nodes with !=, nodes should not be equal but are equal")
if ( foonode1 != foonode2 ):
- print "Error comparing nodes with !=, nodes should be equal but are unequal"
+ print("Error comparing nodes with !=, nodes should be equal but are unequal")
# Next check that the hash function for the objects also works ok
if not (hash(foonode1) == hash(foonode2)):
- print "Error hash values for two equal nodes are different"
+ print("Error hash values for two equal nodes are different")
sys.exit(1)
if not (hash(foonode1) != hash(root)):
- print "Error hash values for two unequal nodes are not different"
+ print("Error hash values for two unequal nodes are not different")
sys.exit(1)
if hash(foonode1) == hash(root):
- print "Error hash values for two unequal nodes are equal"
+ print("Error hash values for two unequal nodes are equal")
sys.exit(1)
# Basic tests successful
@@ -44,7 +44,7 @@ doc.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/ctxterror.py b/python/tests/ctxterror.py
index f2a897a..416e384 100755
--- a/python/tests/ctxterror.py
+++ b/python/tests/ctxterror.py
@@ -23,7 +23,7 @@ s = """<x xmlns="foo"></y>"""
parserCtxt = libxml2.createPushParser(None,"",0,"test.xml")
parserCtxt.setErrorHandler(callback, "-->")
if parserCtxt.getErrorHandler() != (callback,"-->"):
- print "getErrorHandler failed"
+ print("getErrorHandler failed")
sys.exit(1)
parserCtxt.parseChunk(s,len(s),1)
doc = parserCtxt.doc()
@@ -31,9 +31,9 @@ doc.freeDoc()
parserCtxt = None
if err != expect:
- print "error"
- print "received %s" %(err)
- print "expected %s" %(expect)
+ print("error")
+ print("received %s" %(err))
+ print("expected %s" %(expect))
sys.exit(1)
i = 10000
@@ -50,7 +50,7 @@ while i > 0:
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/cutnpaste.py b/python/tests/cutnpaste.py
index 0f9665a..7787246 100755
--- a/python/tests/cutnpaste.py
+++ b/python/tests/cutnpaste.py
@@ -35,14 +35,14 @@ source.freeDoc()
# check the resulting tree
str = dest.serialize()
if str != """<root xmlns:foobar="http://example.org/bar" xmlns:default="http://example.org/include" xmlns:foo="http://example.org/foo"><default:fragment><foo:elem bar="tricky"/></default:fragment></root>""":
- print "reconciliateNs() failed"
+ print("reconciliateNs() failed")
sys.exit(1)
target.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/dtdvalid.py b/python/tests/dtdvalid.py
index 2011f2c..d4049b8 100755
--- a/python/tests/dtdvalid.py
+++ b/python/tests/dtdvalid.py
@@ -14,7 +14,7 @@ ctxt = libxml2.newValidCtxt()
doc = libxml2.parseDoc(instance)
ret = doc.validateDtd(ctxt, dtd)
if ret != 1:
- print "error doing DTD validation"
+ print("error doing DTD validation")
sys.exit(1)
doc.freeDoc()
@@ -25,8 +25,8 @@ del ctxt
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/error.py b/python/tests/error.py
index da6d0c1..530c2ee 100755
--- a/python/tests/error.py
+++ b/python/tests/error.py
@@ -24,13 +24,13 @@ except libxml2.parserError:
got_exc = 1
if got_exc == 0:
- print "Failed to get a parser exception"
+ print("Failed to get a parser exception")
sys.exit(1)
if err != expect:
- print "error"
- print "received %s" %(err)
- print "expected %s" %(expect)
+ print("error")
+ print("received %s" %(err))
+ print("expected %s" %(expect))
sys.exit(1)
i = 10000
@@ -45,7 +45,7 @@ while i > 0:
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/inbuf.py b/python/tests/inbuf.py
index a7cc7a6..0c16674 100755
--- a/python/tests/inbuf.py
+++ b/python/tests/inbuf.py
@@ -1,14 +1,19 @@
#!/usr/bin/python -u
import sys
import libxml2
-import StringIO
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
i = 0
while i < 5000:
- f = StringIO.StringIO("foobar")
+ f = str_io("foobar")
buf = libxml2.inputBuffer(f)
i = i + 1
@@ -18,8 +23,8 @@ del buf
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/indexes.py b/python/tests/indexes.py
index 8d7a7fc..e41a0d9 100755
--- a/python/tests/indexes.py
+++ b/python/tests/indexes.py
@@ -20,16 +20,16 @@ class callback:
def startDocument(self):
global ctxt
if ctxt.byteConsumed() != self.startd:
- print "document start at wrong index: %d expecting %d\n" % (
- ctxt.byteConsumed(), self.startd)
+ print("document start at wrong index: %d expecting %d\n" % (
+ ctxt.byteConsumed(), self.startd))
sys.exit(1)
def endDocument(self):
global ctxt
expect = self.ende + self.delta * (self.count - 1) + self.endd
if ctxt.byteConsumed() != expect:
- print "document end at wrong index: %d expecting %d\n" % (
- ctxt.byteConsumed(), expect)
+ print("document end at wrong index: %d expecting %d\n" % (
+ ctxt.byteConsumed(), expect))
sys.exit(1)
def startElement(self, tag, attrs):
@@ -37,8 +37,8 @@ class callback:
if tag == "bar1":
expect = self.starte + self.delta * self.count
if ctxt.byteConsumed() != expect:
- print "element start at wrong index: %d expecting %d\n" % (
- ctxt.byteConsumed(), expect)
+ print("element start at wrong index: %d expecting %d\n" % (
+ ctxt.byteConsumed(), expect))
sys.exit(1)
@@ -47,8 +47,8 @@ class callback:
if tag == "bar1":
expect = self.ende + self.delta * self.count
if ctxt.byteConsumed() != expect:
- print "element end at wrong index: %d expecting %d\n" % (
- ctxt.byteConsumed(), expect)
+ print("element end at wrong index: %d expecting %d\n" % (
+ ctxt.byteConsumed(), expect))
sys.exit(1)
self.count = self.count + 1
@@ -107,7 +107,7 @@ ctxt=None
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/input_callback.py b/python/tests/input_callback.py
new file mode 100755
index 0000000..495ab62
--- /dev/null
+++ b/python/tests/input_callback.py
@@ -0,0 +1,148 @@
+#!/usr/bin/python -u
+#
+# This tests custom input callbacks
+#
+import sys
+import libxml2
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
+
+# We implement a new scheme, py://strings/ that will reference this dictionary
+pystrings = {
+ 'catalogs/catalog.xml' :
+'''<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <rewriteSystem systemIdStartString="http://example.com/dtds/" rewritePrefix="../dtds/"/>
+</catalog>''',
+
+ 'xml/sample.xml' :
+'''<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE root SYSTEM "http://example.com/dtds/sample.dtd">
+<root>&sample.entity;</root>''',
+
+ 'dtds/sample.dtd' :
+'''
+<!ELEMENT root (#PCDATA)>
+<!ENTITY sample.entity "replacement text">'''
+}
+
+prefix = "py://strings/"
+startURL = prefix + "xml/sample.xml"
+catURL = prefix + "catalogs/catalog.xml"
+
+def my_input_cb(URI):
+ if not(URI.startswith(prefix)):
+ return None
+ path = URI[len(prefix):]
+ if path not in pystrings:
+ return None
+ return str_io(pystrings[path])
+
+
+def run_test(desc, docpath, catalog, exp_status="verified", exp_err=[], test_callback=None,
+ root_name="root", root_content="replacement text"):
+ opts = libxml2.XML_PARSE_DTDLOAD | libxml2.XML_PARSE_NONET | libxml2.XML_PARSE_COMPACT
+ actual_err = []
+
+ def my_global_error_cb(ctx, msg):
+ actual_err.append((-1, msg))
+ def my_ctx_error_cb(arg, msg, severity, reserved):
+ actual_err.append((severity, msg))
+
+ libxml2.registerErrorHandler(my_global_error_cb, None)
+ try:
+ parser = libxml2.createURLParserCtxt(docpath, opts)
+ parser.setErrorHandler(my_ctx_error_cb, None)
+ if catalog is not None:
+ parser.addLocalCatalog(catalog)
+ if test_callback is not None:
+ test_callback()
+ parser.parseDocument()
+ doc = parser.doc()
+ actual_status = "loaded"
+ e = doc.getRootElement()
+ if e.name == root_name and e.content == root_content:
+ actual_status = "verified"
+ doc.freeDoc()
+ except libxml2.parserError:
+ actual_status = "not loaded"
+
+ if actual_status != exp_status:
+ print("Test '%s' failed: expect status '%s', actual '%s'" % (desc, exp_status, actual_status))
+ sys.exit(1)
+ elif actual_err != exp_err:
+ print("Test '%s' failed" % desc)
+ print("Expect errors:")
+ for s,m in exp_err: print(" [%2d] '%s'" % (s,m))
+ print("Actual errors:")
+ for s,m in actual_err: print(" [%2d] '%s'" % (s,m))
+ sys.exit(1)
+
+
+# Check that we cannot read custom schema without custom callback
+run_test(desc="Loading entity without custom callback",
+ docpath=startURL, catalog=None,
+ exp_status="not loaded", exp_err=[
+ (-1, "I/O "),
+ (-1, "warning : "),
+ (-1, "failed to load external entity \"py://strings/xml/sample.xml\"\n")
+ ])
+
+# Register handler and try to load the same entity
+libxml2.registerInputCallback(my_input_cb)
+run_test(desc="Loading entity with custom callback",
+ docpath=startURL, catalog=None,
+ exp_status="loaded", exp_err=[
+ (-1, "Attempt to load network entity http://example.com/dtds/sample.dtd"),
+ ( 4, "Entity 'sample.entity' not defined\n")
+ ])
+
+# Register a catalog (also accessible via pystr://) and retry
+run_test(desc="Loading entity with custom callback and catalog",
+ docpath=startURL, catalog=catURL)
+
+# Unregister custom callback when parser is already created
+run_test(desc="Loading entity and unregistering callback",
+ docpath=startURL, catalog=catURL,
+ test_callback=lambda: libxml2.popInputCallbacks(),
+ exp_status="loaded", exp_err=[
+ ( 3, "failed to load external entity \"py://strings/dtds/sample.dtd\"\n"),
+ ( 4, "Entity 'sample.entity' not defined\n")
+ ])
+
+# Try to load the document again
+run_test(desc="Retry loading document after unregistering callback",
+ docpath=startURL, catalog=catURL,
+ exp_status="not loaded", exp_err=[
+ (-1, "I/O "),
+ (-1, "warning : "),
+ (-1, "failed to load external entity \"py://strings/xml/sample.xml\"\n")
+ ])
+
+# But should be able to read standard I/O yet...
+run_test(desc="Loading using standard i/o after unregistering callback",
+ docpath="tst.xml", catalog=None,
+ root_name='doc', root_content='bar')
+
+# Now pop ALL input callbacks, should fail to load even standard I/O
+try:
+ while True:
+ libxml2.popInputCallbacks()
+except IndexError:
+ pass
+
+run_test(desc="Loading using standard i/o after unregistering all callbacks",
+ docpath="tst.xml", catalog=None,
+ exp_status="not loaded", exp_err=[
+ (-1, "I/O "),
+ (-1, "warning : "),
+ (-1, "failed to load external entity \"tst.xml\"\n")
+ ])
+
+print("OK")
+sys.exit(0);
diff --git a/python/tests/nsdel.py b/python/tests/nsdel.py
index c06ded3..079399a 100755
--- a/python/tests/nsdel.py
+++ b/python/tests/nsdel.py
@@ -19,7 +19,7 @@ def checkNamespaceDefs(node, count):
nsList = list(namespaceDefs(node))
#print nsList
if len(nsList) != count :
- raise Exception, "Error: saw %d namespace declarations. Expected %d" % (len(nsList), count)
+ raise Exception("Error: saw %d namespace declarations. Expected %d" % (len(nsList), count))
# Memory debug specific
libxml2.debugMemory(1)
@@ -56,7 +56,7 @@ doc.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/outbuf.py b/python/tests/outbuf.py
index 09cd9b5..62761cc 100755
--- a/python/tests/outbuf.py
+++ b/python/tests/outbuf.py
@@ -1,17 +1,22 @@
#!/usr/bin/python -u
import sys
import libxml2
-import StringIO
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
def testSimpleBufferWrites():
- f = StringIO.StringIO()
+ f = str_io()
buf = libxml2.createOutputBuffer(f, "ISO-8859-1")
buf.write(3, "foo")
buf.writeString("bar")
buf.close()
-
+
if f.getvalue() != "foobar":
- print "Failed to save to StringIO"
+ print("Failed to save to StringIO")
sys.exit(1)
def testSaveDocToBuffer():
@@ -23,15 +28,15 @@ def testSaveDocToBuffer():
<?xml version="1.0" encoding="UTF-8"?>
<foo>Hello</foo>
'''
- f = StringIO.StringIO()
+ f = str_io()
buf = libxml2.createOutputBuffer(f, 'UTF-8')
doc = libxml2.parseDoc(input)
doc.saveFileTo(buf, 'UTF-8')
doc.freeDoc()
if f.getvalue() != expected:
- print 'xmlDoc.saveFileTo() call failed.'
- print ' got: %s' % repr(f.getvalue())
- print 'expected: %s' % repr(expected)
+ print('xmlDoc.saveFileTo() call failed.')
+ print(' got: %s' % repr(f.getvalue()))
+ print('expected: %s' % repr(expected))
sys.exit(1)
def testSaveFormattedDocToBuffer():
@@ -49,13 +54,13 @@ def testSaveFormattedDocToBuffer():
''')
doc = libxml2.parseDoc(input)
for i in (0, 1):
- f = StringIO.StringIO()
+ f = str_io()
buf = libxml2.createOutputBuffer(f, 'UTF-8')
doc.saveFormatFileTo(buf, 'UTF-8', i)
if f.getvalue() != expected[i]:
- print 'xmlDoc.saveFormatFileTo() call failed.'
- print ' got: %s' % repr(f.getvalue())
- print 'expected: %s' % repr(expected[i])
+ print('xmlDoc.saveFormatFileTo() call failed.')
+ print(' got: %s' % repr(f.getvalue()))
+ print('expected: %s' % repr(expected[i]))
sys.exit(1)
doc.freeDoc()
@@ -69,22 +74,22 @@ def testSaveIntoOutputBuffer():
<?xml version="1.0" encoding="UTF-8"?>
<foo>Hello</foo>
'''
- f = StringIO.StringIO()
+ f = str_io()
doc = libxml2.parseDoc(input)
buf = libxml2.createOutputBuffer(f, 'UTF-8')
buf.saveFileTo(doc, 'UTF-8')
if f.getvalue() != expected:
- print 'outputBuffer.saveFileTo() call failed.'
- print ' got: %s' % repr(f.getvalue())
- print 'expected: %s' % repr(expected)
+ print('outputBuffer.saveFileTo() call failed.')
+ print(' got: %s' % repr(f.getvalue()))
+ print('expected: %s' % repr(expected))
sys.exit(1)
- f = StringIO.StringIO()
+ f = str_io()
buf = libxml2.createOutputBuffer(f, 'UTF-8')
buf.saveFormatFileTo(doc, 'UTF-8', 1)
if f.getvalue() != expected:
- print 'outputBuffer.saveFormatFileTo() call failed.'
- print ' got: %s' % repr(f.getvalue())
- print 'expected: %s' % repr(expected)
+ print('outputBuffer.saveFormatFileTo() call failed.')
+ print(' got: %s' % repr(f.getvalue()))
+ print('expected: %s' % repr(expected))
sys.exit(1)
doc.freeDoc()
@@ -99,7 +104,7 @@ if __name__ == '__main__':
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/push.py b/python/tests/push.py
index 5b60a16..0edd61d 100755
--- a/python/tests/push.py
+++ b/python/tests/push.py
@@ -10,11 +10,11 @@ ctxt.parseChunk("/>", 2, 1)
doc = ctxt.doc()
ctxt=None
if doc.name != "test.xml":
- print "document name error"
+ print("document name error")
sys.exit(1)
root = doc.children
if root.name != "foo":
- print "root element name error"
+ print("root element name error")
sys.exit(1)
doc.freeDoc()
i = 10000
@@ -29,7 +29,7 @@ ctxt=None
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/pushSAX.py b/python/tests/pushSAX.py
index 1c1e786..48f6e82 100755
--- a/python/tests/pushSAX.py
+++ b/python/tests/pushSAX.py
@@ -51,14 +51,14 @@ ctxt=None
reference = "startDocument:startElement foo {'url': 'tst'}:characters: bar:endElement foo:endDocument:"
if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+ print("Error got: %s" % log)
+ print("Exprected: %s" % reference)
sys.exit(1)
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/pushSAXhtml.py b/python/tests/pushSAXhtml.py
index e6e89d9..159d308 100755
--- a/python/tests/pushSAXhtml.py
+++ b/python/tests/pushSAXhtml.py
@@ -52,14 +52,14 @@ ctxt=None
reference = """startDocument:startElement html None:startElement body None:startElement foo {'url': 'tst'}:error: Tag foo invalid
:characters: bar:endElement foo:endElement body:endElement html:endDocument:"""
if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+ print("Error got: %s" % log)
+ print("Exprected: %s" % reference)
sys.exit(1)
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader.py b/python/tests/reader.py
index 6c37762..173ce66 100755
--- a/python/tests/reader.py
+++ b/python/tests/reader.py
@@ -4,91 +4,96 @@
# this tests the basic APIs of the XmlTextReader interface
#
import libxml2
-import StringIO
import sys
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
-f = StringIO.StringIO("""<a><b b1="b1"/><c>content of c</c></a>""")
+f = str_io("""<a><b b1="b1"/><c>content of c</c></a>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test1")
ret = reader.Read()
if ret != 1:
- print "test1: Error reading to first element"
+ print("test1: Error reading to first element")
sys.exit(1)
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 1 or reader.HasAttributes() != 0:
- print "test1: Error reading the first element"
+ print("test1: Error reading the first element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test1: Error reading to second element"
+ print("test1: Error reading to second element")
sys.exit(1)
if reader.Name() != "b" or reader.IsEmptyElement() != 1 or \
reader.NodeType() != 1 or reader.HasAttributes() != 1:
- print "test1: Error reading the second element"
+ print("test1: Error reading the second element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test1: Error reading to third element"
+ print("test1: Error reading to third element")
sys.exit(1)
if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 1 or reader.HasAttributes() != 0:
- print "test1: Error reading the third element"
+ print("test1: Error reading the third element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test1: Error reading to text node"
+ print("test1: Error reading to text node")
sys.exit(1)
if reader.Name() != "#text" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 3 or reader.HasAttributes() != 0 or \
reader.Value() != "content of c":
- print "test1: Error reading the text node"
+ print("test1: Error reading the text node")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test1: Error reading to end of third element"
+ print("test1: Error reading to end of third element")
sys.exit(1)
if reader.Name() != "c" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 15 or reader.HasAttributes() != 0:
- print "test1: Error reading the end of third element"
+ print("test1: Error reading the end of third element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test1: Error reading to end of first element"
+ print("test1: Error reading to end of first element")
sys.exit(1)
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 15 or reader.HasAttributes() != 0:
- print "test1: Error reading the end of first element"
+ print("test1: Error reading the end of first element")
sys.exit(1)
ret = reader.Read()
if ret != 0:
- print "test1: Error reading to end of document"
+ print("test1: Error reading to end of document")
sys.exit(1)
#
# example from the XmlTextReader docs
#
-f = StringIO.StringIO("""<test xmlns:dt="urn:datatypes" dt:type="int"/>""")
+f = str_io("""<test xmlns:dt="urn:datatypes" dt:type="int"/>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test2")
ret = reader.Read()
if ret != 1:
- print "Error reading test element"
+ print("Error reading test element")
sys.exit(1)
if reader.GetAttributeNo(0) != "urn:datatypes" or \
reader.GetAttributeNo(1) != "int" or \
reader.GetAttributeNs("type", "urn:datatypes") != "int" or \
reader.GetAttribute("dt:type") != "int":
- print "error reading test attributes"
+ print("error reading test attributes")
sys.exit(1)
#
# example from the XmlTextReader docs
#
-f = StringIO.StringIO("""<root xmlns:a="urn:456">
+f = str_io("""<root xmlns:a="urn:456">
<item>
<ref href="a:b"/>
</item>
@@ -100,203 +105,203 @@ ret = reader.Read()
while ret == 1:
if reader.Name() == "ref":
if reader.LookupNamespace("a") != "urn:456":
- print "error resolving namespace prefix"
+ print("error resolving namespace prefix")
sys.exit(1)
break
ret = reader.Read()
if ret != 1:
- print "Error finding the ref element"
+ print("Error finding the ref element")
sys.exit(1)
#
# Home made example for the various attribute access functions
#
-f = StringIO.StringIO("""<testattr xmlns="urn:1" xmlns:a="urn:2" b="b" a:b="a:b"/>""")
+f = str_io("""<testattr xmlns="urn:1" xmlns:a="urn:2" b="b" a:b="a:b"/>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test4")
ret = reader.Read()
if ret != 1:
- print "Error reading the testattr element"
+ print("Error reading the testattr element")
sys.exit(1)
#
# Attribute exploration by index
#
if reader.MoveToAttributeNo(0) != 1:
- print "Failed moveToAttribute(0)"
+ print("Failed moveToAttribute(0)")
sys.exit(1)
if reader.Value() != "urn:1":
- print "Failed to read attribute(0)"
+ print("Failed to read attribute(0)")
sys.exit(1)
if reader.Name() != "xmlns":
- print "Failed to read attribute(0) name"
+ print("Failed to read attribute(0) name")
sys.exit(1)
if reader.MoveToAttributeNo(1) != 1:
- print "Failed moveToAttribute(1)"
+ print("Failed moveToAttribute(1)")
sys.exit(1)
if reader.Value() != "urn:2":
- print "Failed to read attribute(1)"
+ print("Failed to read attribute(1)")
sys.exit(1)
if reader.Name() != "xmlns:a":
- print "Failed to read attribute(1) name"
+ print("Failed to read attribute(1) name")
sys.exit(1)
if reader.MoveToAttributeNo(2) != 1:
- print "Failed moveToAttribute(2)"
+ print("Failed moveToAttribute(2)")
sys.exit(1)
if reader.Value() != "b":
- print "Failed to read attribute(2)"
+ print("Failed to read attribute(2)")
sys.exit(1)
if reader.Name() != "b":
- print "Failed to read attribute(2) name"
+ print("Failed to read attribute(2) name")
sys.exit(1)
if reader.MoveToAttributeNo(3) != 1:
- print "Failed moveToAttribute(3)"
+ print("Failed moveToAttribute(3)")
sys.exit(1)
if reader.Value() != "a:b":
- print "Failed to read attribute(3)"
+ print("Failed to read attribute(3)")
sys.exit(1)
if reader.Name() != "a:b":
- print "Failed to read attribute(3) name"
+ print("Failed to read attribute(3) name")
sys.exit(1)
#
# Attribute exploration by name
#
if reader.MoveToAttribute("xmlns") != 1:
- print "Failed moveToAttribute('xmlns')"
+ print("Failed moveToAttribute('xmlns')")
sys.exit(1)
if reader.Value() != "urn:1":
- print "Failed to read attribute('xmlns')"
+ print("Failed to read attribute('xmlns')")
sys.exit(1)
if reader.MoveToAttribute("xmlns:a") != 1:
- print "Failed moveToAttribute('xmlns')"
+ print("Failed moveToAttribute('xmlns')")
sys.exit(1)
if reader.Value() != "urn:2":
- print "Failed to read attribute('xmlns:a')"
+ print("Failed to read attribute('xmlns:a')")
sys.exit(1)
if reader.MoveToAttribute("b") != 1:
- print "Failed moveToAttribute('b')"
+ print("Failed moveToAttribute('b')")
sys.exit(1)
if reader.Value() != "b":
- print "Failed to read attribute('b')"
+ print("Failed to read attribute('b')")
sys.exit(1)
if reader.MoveToAttribute("a:b") != 1:
- print "Failed moveToAttribute('a:b')"
+ print("Failed moveToAttribute('a:b')")
sys.exit(1)
if reader.Value() != "a:b":
- print "Failed to read attribute('a:b')"
+ print("Failed to read attribute('a:b')")
sys.exit(1)
if reader.MoveToAttributeNs("b", "urn:2") != 1:
- print "Failed moveToAttribute('b', 'urn:2')"
+ print("Failed moveToAttribute('b', 'urn:2')")
sys.exit(1)
if reader.Value() != "a:b":
- print "Failed to read attribute('b', 'urn:2')"
+ print("Failed to read attribute('b', 'urn:2')")
sys.exit(1)
#
# Go back and read in sequence
#
if reader.MoveToElement() != 1:
- print "Failed to move back to element"
+ print("Failed to move back to element")
sys.exit(1)
if reader.MoveToFirstAttribute() != 1:
- print "Failed to move to first attribute"
+ print("Failed to move to first attribute")
sys.exit(1)
if reader.Value() != "urn:1":
- print "Failed to read attribute(0)"
+ print("Failed to read attribute(0)")
sys.exit(1)
if reader.Name() != "xmlns":
- print "Failed to read attribute(0) name"
+ print("Failed to read attribute(0) name")
sys.exit(1)
if reader.MoveToNextAttribute() != 1:
- print "Failed to move to next attribute"
+ print("Failed to move to next attribute")
sys.exit(1)
if reader.Value() != "urn:2":
- print "Failed to read attribute(1)"
+ print("Failed to read attribute(1)")
sys.exit(1)
if reader.Name() != "xmlns:a":
- print "Failed to read attribute(1) name"
+ print("Failed to read attribute(1) name")
sys.exit(1)
if reader.MoveToNextAttribute() != 1:
- print "Failed to move to next attribute"
+ print("Failed to move to next attribute")
sys.exit(1)
if reader.Value() != "b":
- print "Failed to read attribute(2)"
+ print("Failed to read attribute(2)")
sys.exit(1)
if reader.Name() != "b":
- print "Failed to read attribute(2) name"
+ print("Failed to read attribute(2) name")
sys.exit(1)
if reader.MoveToNextAttribute() != 1:
- print "Failed to move to next attribute"
+ print("Failed to move to next attribute")
sys.exit(1)
if reader.Value() != "a:b":
- print "Failed to read attribute(3)"
+ print("Failed to read attribute(3)")
sys.exit(1)
if reader.Name() != "a:b":
- print "Failed to read attribute(3) name"
+ print("Failed to read attribute(3) name")
sys.exit(1)
if reader.MoveToNextAttribute() != 0:
- print "Failed to detect last attribute"
+ print("Failed to detect last attribute")
sys.exit(1)
#
# a couple of tests for namespace nodes
#
-f = StringIO.StringIO("""<a xmlns="http://example.com/foo"/>""")
+f = str_io("""<a xmlns="http://example.com/foo"/>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test6")
ret = reader.Read()
if ret != 1:
- print "test6: failed to Read()"
+ print("test6: failed to Read()")
sys.exit(1)
ret = reader.MoveToFirstAttribute()
if ret != 1:
- print "test6: failed to MoveToFirstAttribute()"
+ print("test6: failed to MoveToFirstAttribute()")
sys.exit(1)
if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \
reader.LocalName() != "xmlns" or reader.Name() != "xmlns" or \
reader.Value() != "http://example.com/foo" or reader.NodeType() != 2:
- print "test6: failed to read the namespace node"
+ print("test6: failed to read the namespace node")
sys.exit(1)
-f = StringIO.StringIO("""<a xmlns:prefix="http://example.com/foo"/>""")
+f = str_io("""<a xmlns:prefix="http://example.com/foo"/>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test7")
ret = reader.Read()
if ret != 1:
- print "test7: failed to Read()"
+ print("test7: failed to Read()")
sys.exit(1)
ret = reader.MoveToFirstAttribute()
if ret != 1:
- print "test7: failed to MoveToFirstAttribute()"
+ print("test7: failed to MoveToFirstAttribute()")
sys.exit(1)
if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \
reader.LocalName() != "prefix" or reader.Name() != "xmlns:prefix" or \
reader.Value() != "http://example.com/foo" or reader.NodeType() != 2:
- print "test7: failed to read the namespace node"
+ print("test7: failed to read the namespace node")
sys.exit(1)
#
# Test for a limit case:
#
-f = StringIO.StringIO("""<a/>""")
+f = str_io("""<a/>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test8")
ret = reader.Read()
if ret != 1:
- print "test8: failed to read the node"
+ print("test8: failed to read the node")
sys.exit(1)
if reader.Name() != "a" or reader.IsEmptyElement() != 1:
- print "test8: failed to analyze the node"
+ print("test8: failed to analyze the node")
sys.exit(1)
ret = reader.Read()
if ret != 0:
- print "test8: failed to detect the EOF"
+ print("test8: failed to detect the EOF")
sys.exit(1)
#
# Another test provided by Stéphane Bidoul and checked with C#
#
def tst_reader(s):
- f = StringIO.StringIO(s)
+ f = str_io(s)
input = libxml2.inputBuffer(f)
reader = input.newTextReader("tst")
res = ""
@@ -322,8 +327,8 @@ expect="""1 (a) [None] 0 0
"""
res = tst_reader(doc)
if res != expect:
- print "test5 failed"
- print res
+ print("test5 failed")
+ print(res)
sys.exit(1)
doc="""<test><b/><c/></test>"""
@@ -334,8 +339,8 @@ expect="""1 (test) [None] 0 0
"""
res = tst_reader(doc)
if res != expect:
- print "test9 failed"
- print res
+ print("test9 failed")
+ print(res)
sys.exit(1)
doc="""<a><b>bbb</b><c>ccc</c></a>"""
@@ -350,8 +355,8 @@ expect="""1 (a) [None] 0 0
"""
res = tst_reader(doc)
if res != expect:
- print "test10 failed"
- print res
+ print("test10 failed")
+ print(res)
sys.exit(1)
doc="""<test a="a"/>"""
@@ -360,8 +365,8 @@ expect="""1 (test) [None] 1 0
"""
res = tst_reader(doc)
if res != expect:
- print "test11 failed"
- print res
+ print("test11 failed")
+ print(res)
sys.exit(1)
doc="""<test><a>aaa</a><b/></test>"""
@@ -374,8 +379,8 @@ expect="""1 (test) [None] 0 0
"""
res = tst_reader(doc)
if res != expect:
- print "test12 failed"
- print res
+ print("test12 failed")
+ print(res)
sys.exit(1)
doc="""<test><p></p></test>"""
@@ -386,8 +391,8 @@ expect="""1 (test) [None] 0 0
"""
res = tst_reader(doc)
if res != expect:
- print "test13 failed"
- print res
+ print("test13 failed")
+ print(res)
sys.exit(1)
doc="""<p></p>"""
@@ -396,8 +401,8 @@ expect="""1 (p) [None] 0 0
"""
res = tst_reader(doc)
if res != expect:
- print "test14 failed"
- print res
+ print("test14 failed")
+ print(res)
sys.exit(1)
#
@@ -421,8 +426,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"""
res = tst_reader(doc)
if res != expect:
- print "test15 failed"
- print res
+ print("test15 failed")
+ print(res)
sys.exit(1)
#
@@ -435,7 +440,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader2.py b/python/tests/reader2.py
index ea890ec..8570575 100755
--- a/python/tests/reader2.py
+++ b/python/tests/reader2.py
@@ -5,8 +5,13 @@
import sys
import glob
import string
-import StringIO
import libxml2
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
@@ -30,7 +35,11 @@ libxml2.registerErrorHandler(callback, "")
valid_files = glob.glob("../../test/valid/*.x*")
valid_files.sort()
for file in valid_files:
- if string.find(file, "t8") != -1:
+ if file.find("t8") != -1:
+ continue
+ if file == "../../test/valid/rss.xml":
+ continue
+ if file == "../../test/valid/xlink.xml":
continue
reader = libxml2.newTextReaderFilename(file)
#print "%s:" % (file)
@@ -39,11 +48,11 @@ for file in valid_files:
while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing and validating %s" % (file)
+ print("Error parsing and validating %s" % (file))
#sys.exit(1)
if err != expect:
- print err
+ print(err)
#
# another separate test based on Stephane Bidoul one
@@ -79,7 +88,7 @@ expect="""10,test
res=""
err=""
-input = libxml2.inputBuffer(StringIO.StringIO(s))
+input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test2")
reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
@@ -89,12 +98,12 @@ while reader.Read() == 1:
res = res + "%s,%s\n" % (reader.NodeType(),reader.Name())
if res != expect:
- print "test2 failed: unexpected output"
- print res
+ print("test2 failed: unexpected output")
+ print(res)
sys.exit(1)
if err != "":
- print "test2 failed: validation error found"
- print err
+ print("test2 failed: validation error found")
+ print(err)
sys.exit(1)
#
@@ -124,12 +133,12 @@ res=""
def myResolver(URL, ID, ctxt):
if URL == "tst.ent":
- return(StringIO.StringIO(tst_ent))
+ return(str_io(tst_ent))
return None
libxml2.setEntityLoader(myResolver)
-input = libxml2.inputBuffer(StringIO.StringIO(s))
+input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test3")
reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
@@ -139,12 +148,12 @@ while reader.Read() == 1:
res = res + "%s %s\n" % (reader.NodeType(),reader.Name())
if res != expect:
- print "test3 failed: unexpected output"
- print res
+ print("test3 failed: unexpected output")
+ print(res)
sys.exit(1)
if err != "":
- print "test3 failed: validation error found"
- print err
+ print("test3 failed: validation error found")
+ print(err)
sys.exit(1)
#
@@ -183,7 +192,7 @@ expect="""10 test 0
res=""
err=""
-input = libxml2.inputBuffer(StringIO.StringIO(s))
+input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test4")
reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
@@ -193,12 +202,12 @@ while reader.Read() == 1:
res = res + "%s %s %d\n" % (reader.NodeType(),reader.Name(),reader.Depth())
if res != expect:
- print "test4 failed: unexpected output"
- print res
+ print("test4 failed: unexpected output")
+ print(res)
sys.exit(1)
if err != "":
- print "test4 failed: validation error found"
- print err
+ print("test4 failed: validation error found")
+ print(err)
sys.exit(1)
#
@@ -228,18 +237,18 @@ expect="""10 test 0
res=""
err=""
-input = libxml2.inputBuffer(StringIO.StringIO(s))
+input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test5")
reader.SetParserProp(libxml2.PARSER_VALIDATE,1)
while reader.Read() == 1:
res = res + "%s %s %d\n" % (reader.NodeType(),reader.Name(),reader.Depth())
if res != expect:
- print "test5 failed: unexpected output"
- print res
+ print("test5 failed: unexpected output")
+ print(res)
if err != "":
- print "test5 failed: validation error found"
- print err
+ print("test5 failed: validation error found")
+ print(err)
#
# cleanup
@@ -250,7 +259,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader3.py b/python/tests/reader3.py
index 2458c89..4302b6c 100755
--- a/python/tests/reader3.py
+++ b/python/tests/reader3.py
@@ -3,8 +3,13 @@
# this tests the entities substitutions with the XmlTextReader interface
#
import sys
-import StringIO
import libxml2
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
docstr="""<?xml version='1.0'?>
<!DOCTYPE doc [
@@ -18,90 +23,90 @@ libxml2.debugMemory(1)
#
# First test, normal don't substitute entities.
#
-f = StringIO.StringIO(docstr)
+f = str_io(docstr)
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test_noent")
ret = reader.Read()
if ret != 1:
- print "Error reading to root"
+ print("Error reading to root")
sys.exit(1)
if reader.Name() == "doc" or reader.NodeType() == 10:
ret = reader.Read()
if ret != 1:
- print "Error reading to root"
+ print("Error reading to root")
sys.exit(1)
if reader.Name() != "doc" or reader.NodeType() != 1:
- print "test_normal: Error reading the root element"
+ print("test_normal: Error reading the root element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_normal: Error reading to the entity"
+ print("test_normal: Error reading to the entity")
sys.exit(1)
if reader.Name() != "tst" or reader.NodeType() != 5:
- print "test_normal: Error reading the entity"
+ print("test_normal: Error reading the entity")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_normal: Error reading to the end of root"
+ print("test_normal: Error reading to the end of root")
sys.exit(1)
if reader.Name() != "doc" or reader.NodeType() != 15:
- print "test_normal: Error reading the end of the root element"
+ print("test_normal: Error reading the end of the root element")
sys.exit(1)
ret = reader.Read()
if ret != 0:
- print "test_normal: Error detecting the end"
+ print("test_normal: Error detecting the end")
sys.exit(1)
#
# Second test, completely substitute the entities.
#
-f = StringIO.StringIO(docstr)
+f = str_io(docstr)
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test_noent")
reader.SetParserProp(libxml2.PARSER_SUBST_ENTITIES, 1)
ret = reader.Read()
if ret != 1:
- print "Error reading to root"
+ print("Error reading to root")
sys.exit(1)
if reader.Name() == "doc" or reader.NodeType() == 10:
ret = reader.Read()
if ret != 1:
- print "Error reading to root"
+ print("Error reading to root")
sys.exit(1)
if reader.Name() != "doc" or reader.NodeType() != 1:
- print "test_noent: Error reading the root element"
+ print("test_noent: Error reading the root element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_noent: Error reading to the entity content"
+ print("test_noent: Error reading to the entity content")
sys.exit(1)
if reader.Name() != "p" or reader.NodeType() != 1:
- print "test_noent: Error reading the p element from entity"
+ print("test_noent: Error reading the p element from entity")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_noent: Error reading to the text node"
+ print("test_noent: Error reading to the text node")
sys.exit(1)
if reader.NodeType() != 3 or reader.Value() != "test":
- print "test_noent: Error reading the text node"
+ print("test_noent: Error reading the text node")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_noent: Error reading to the end of p element"
+ print("test_noent: Error reading to the end of p element")
sys.exit(1)
if reader.Name() != "p" or reader.NodeType() != 15:
- print "test_noent: Error reading the end of the p element"
+ print("test_noent: Error reading the end of the p element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_noent: Error reading to the end of root"
+ print("test_noent: Error reading to the end of root")
sys.exit(1)
if reader.Name() != "doc" or reader.NodeType() != 15:
- print "test_noent: Error reading the end of the root element"
+ print("test_noent: Error reading the end of the root element")
sys.exit(1)
ret = reader.Read()
if ret != 0:
- print "test_noent: Error detecting the end"
+ print("test_noent: Error detecting the end")
sys.exit(1)
#
@@ -122,12 +127,12 @@ simplestruct2_ent="""<descr/>"""
def myResolver(URL, ID, ctxt):
if URL == "simplestruct2.ent":
- return(StringIO.StringIO(simplestruct2_ent))
+ return(str_io(simplestruct2_ent))
return None
libxml2.setEntityLoader(myResolver)
-input = libxml2.inputBuffer(StringIO.StringIO(s))
+input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test3")
reader.SetParserProp(libxml2.PARSER_SUBST_ENTITIES,1)
while reader.Read() == 1:
@@ -135,8 +140,8 @@ while reader.Read() == 1:
reader.Depth(),reader.IsEmptyElement())
if res != expect:
- print "test3 failed: unexpected output"
- print res
+ print("test3 failed: unexpected output")
+ print(res)
sys.exit(1)
#
@@ -149,7 +154,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader4.py b/python/tests/reader4.py
index 0824929..0bb3e3f 100755
--- a/python/tests/reader4.py
+++ b/python/tests/reader4.py
@@ -3,14 +3,19 @@
# this tests the basic APIs of the XmlTextReader interface
#
import libxml2
-import StringIO
import sys
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
def tst_reader(s):
- f = StringIO.StringIO(s)
+ f = str_io(s)
input = libxml2.inputBuffer(f)
reader = input.newTextReader("tst")
res = ""
@@ -32,14 +37,14 @@ expect="""1 (test) [None] 0
res = tst_reader("""<test><b/><c/></test>""")
if res != expect:
- print "Did not get the expected error message:"
- print res
+ print("Did not get the expected error message:")
+ print(res)
sys.exit(1)
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader5.py b/python/tests/reader5.py
index fcbad61..82d0dae 100755
--- a/python/tests/reader5.py
+++ b/python/tests/reader5.py
@@ -4,7 +4,6 @@
# this extract the Dragon bibliography entries from the XML specification
#
import libxml2
-import StringIO
import sys
# Memory debug specific
@@ -15,11 +14,11 @@ Ravi Sethi, and Jeffrey D. Ullman.
<emph>Compilers: Principles, Techniques, and Tools</emph>.
Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>"""
-f = open('../../test/valid/REC-xml-19980210.xml')
+f = open('../../test/valid/REC-xml-19980210.xml', 'rb')
input = libxml2.inputBuffer(f)
reader = input.newTextReader("REC")
res=""
-while reader.Read():
+while reader.Read() > 0:
while reader.Name() == 'bibl':
node = reader.Expand() # expand the subtree
if node.xpathEval("@id = 'Aho'"): # use XPath on it
@@ -28,9 +27,9 @@ while reader.Read():
break;
if res != expect:
- print "Error: didn't get the expected output"
- print "got '%s'" % (res)
- print "expected '%s'" % (expect)
+ print("Error: didn't get the expected output")
+ print("got '%s'" % (res))
+ print("expected '%s'" % (expect))
#
@@ -42,7 +41,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader6.py b/python/tests/reader6.py
index 7a34601..ef33b18 100755
--- a/python/tests/reader6.py
+++ b/python/tests/reader6.py
@@ -3,8 +3,13 @@
# this tests the entities substitutions with the XmlTextReader interface
#
import sys
-import StringIO
import libxml2
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
schema="""<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
@@ -41,7 +46,7 @@ docstr="""<foo>
<item>100</item>
</foo>"""
-f = StringIO.StringIO(docstr)
+f = str_io(docstr)
input = libxml2.inputBuffer(f)
reader = input.newTextReader("correct")
reader.RelaxNGSetSchema(rngs)
@@ -50,11 +55,11 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document"
+ print("Error parsing the document")
sys.exit(1)
if reader.IsValid() != 1:
- print "Document failed to validate"
+ print("Document failed to validate")
sys.exit(1)
#
@@ -84,7 +89,7 @@ def callback(ctx, str):
err = err + "%s" % (str)
libxml2.registerErrorHandler(callback, "")
-f = StringIO.StringIO(docstr)
+f = str_io(docstr)
input = libxml2.inputBuffer(f)
reader = input.newTextReader("error")
reader.RelaxNGSetSchema(rngs)
@@ -93,16 +98,16 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document"
+ print("Error parsing the document")
sys.exit(1)
if reader.IsValid() != 0:
- print "Document failed to detect the validation error"
+ print("Document failed to detect the validation error")
sys.exit(1)
if err != expect:
- print "Did not get the expected error message:"
- print err
+ print("Did not get the expected error message:")
+ print(err)
sys.exit(1)
#
@@ -117,7 +122,7 @@ libxml2.relaxNGCleanupTypes()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader7.py b/python/tests/reader7.py
index 35a426f..c88e370 100755
--- a/python/tests/reader7.py
+++ b/python/tests/reader7.py
@@ -3,7 +3,6 @@
# this tests the entities substitutions with the XmlTextReader interface
#
import sys
-import StringIO
import libxml2
# Memory debug specific
@@ -44,12 +43,12 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document test1"
+ print("Error parsing the document test1")
sys.exit(1)
if result != expect:
- print "Unexpected result for test1"
- print result
+ print("Unexpected result for test1")
+ print(result)
sys.exit(1)
#
@@ -80,12 +79,12 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document test2"
+ print("Error parsing the document test2")
sys.exit(1)
if result != expect:
- print "Unexpected result for test2"
- print result
+ print("Unexpected result for test2")
+ print(result)
sys.exit(1)
#
@@ -96,7 +95,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/reader8.py b/python/tests/reader8.py
index 53b7f27..de2dcd6 100755
--- a/python/tests/reader8.py
+++ b/python/tests/reader8.py
@@ -3,7 +3,6 @@
# this tests the entities substitutions with the XmlTextReader interface
#
import sys
-import StringIO
import libxml2
# Memory debug specific
@@ -23,7 +22,7 @@ ret = reader.Read()
ret = reader.Close()
if ret != 0:
- print "Error closing the document test1"
+ print("Error closing the document test1")
sys.exit(1)
del reader
@@ -31,7 +30,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/readererr.py b/python/tests/readererr.py
index 0dad36e..c8ceba5 100644..100755
--- a/python/tests/readererr.py
+++ b/python/tests/readererr.py
@@ -3,8 +3,13 @@
# this tests the basic APIs of the XmlTextReader interface
#
import libxml2
-import StringIO
import sys
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
@@ -17,7 +22,7 @@ def myErrorHandler(arg,msg,severity,locator):
global err
err = err + "%s (%d) %s:%d:%s" % (arg,severity,locator.BaseURI(),locator.LineNumber(),msg)
-f = StringIO.StringIO("""<a xmlns="foo"><b b1="b1"/><c>content of c</a>""")
+f = str_io("""<a xmlns="foo"><b b1="b1"/><c>content of c</a>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test1")
reader.SetErrorHandler(myErrorHandler,"-->")
@@ -25,14 +30,14 @@ while reader.Read() == 1:
pass
if err != expect:
- print "error"
- print "received %s" %(err)
- print "expected %s" %(expect)
+ print("error")
+ print("received %s" %(err))
+ print("expected %s" %(expect))
sys.exit(1)
reader.SetErrorHandler(None,None)
if reader.GetErrorHandler() != (None,None):
- print "GetErrorHandler failed"
+ print("GetErrorHandler failed")
sys.exit(1)
#
@@ -45,7 +50,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/readernext.py b/python/tests/readernext.py
index b01a49d..fcb9ae3 100755
--- a/python/tests/readernext.py
+++ b/python/tests/readernext.py
@@ -4,65 +4,70 @@
# this tests the next API of the XmlTextReader interface
#
import libxml2
-import StringIO
import sys
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
-f = StringIO.StringIO("""<a><b><c /></b><d>content of d</d></a>""")
+f = str_io("""<a><b><c /></b><d>content of d</d></a>""")
input = libxml2.inputBuffer(f)
reader = input.newTextReader("test_next")
ret = reader.Read()
if ret != 1:
- print "test_next: Error reading to first element"
+ print("test_next: Error reading to first element")
sys.exit(1)
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 1 or reader.HasAttributes() != 0:
- print "test_next: Error reading the first element"
+ print("test_next: Error reading the first element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_next: Error reading to second element"
+ print("test_next: Error reading to second element")
sys.exit(1)
if reader.Name() != "b" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 1 or reader.HasAttributes() != 0:
- print "test_next: Error reading the second element"
+ print("test_next: Error reading the second element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_next: Error reading to third element"
+ print("test_next: Error reading to third element")
sys.exit(1)
if reader.Name() != "c" or reader.NodeType() != 1 or \
reader.HasAttributes() != 0:
- print "test_next: Error reading the third element"
+ print("test_next: Error reading the third element")
sys.exit(1)
ret = reader.Read()
if ret != 1:
- print "test_next: Error reading to end of third element"
+ print("test_next: Error reading to end of third element")
sys.exit(1)
if reader.Name() != "b" or reader.NodeType() != 15:
- print "test_next: Error reading to end of second element"
+ print("test_next: Error reading to end of second element")
sys.exit(1)
ret = reader.Next()
if ret != 1:
- print "test_next: Error moving to third element"
+ print("test_next: Error moving to third element")
sys.exit(1)
if reader.Name() != "d" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 1 or reader.HasAttributes() != 0:
- print "test_next: Error reading third element"
+ print("test_next: Error reading third element")
sys.exit(1)
ret = reader.Next()
if ret != 1:
- print "test_next: Error reading to end of first element"
+ print("test_next: Error reading to end of first element")
sys.exit(1)
if reader.Name() != "a" or reader.IsEmptyElement() != 0 or \
reader.NodeType() != 15 or reader.HasAttributes() != 0:
- print "test_next: Error reading the end of first element"
+ print("test_next: Error reading the end of first element")
sys.exit(1)
ret = reader.Read()
if ret != 0:
- print "test_next: Error reading to end of document"
+ print("test_next: Error reading to end of document")
sys.exit(1)
#
@@ -75,7 +80,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/regexp.py b/python/tests/regexp.py
index 4c05502..a03e459 100644..100755
--- a/python/tests/regexp.py
+++ b/python/tests/regexp.py
@@ -6,19 +6,19 @@ libxml2.debugMemory(1)
re = libxml2.regexpCompile("a|b")
if re.regexpExec("a") != 1:
- print "error checking 'a'"
+ print("error checking 'a'")
sys.exit(1)
if re.regexpExec("b") != 1:
- print "error checking 'b'"
+ print("error checking 'b'")
sys.exit(1)
if re.regexpExec("ab") != 0:
- print "error checking 'ab'"
+ print("error checking 'ab'")
sys.exit(1)
if re.regexpExec("") != 0:
- print "error checking 'ab'"
+ print("error checking 'ab'")
sys.exit(1)
if re.regexpIsDeterminist() != 1:
- print "error checking determinism"
+ print("error checking determinism")
sys.exit(1)
del re
@@ -26,7 +26,7 @@ del re
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/relaxng.py b/python/tests/relaxng.py
index 2c83635..fa3d327 100755
--- a/python/tests/relaxng.py
+++ b/python/tests/relaxng.py
@@ -29,7 +29,7 @@ ctxt = rngs.relaxNGNewValidCtxt()
doc = libxml2.parseDoc(instance)
ret = doc.relaxNGValidateDoc(ctxt)
if ret != 0:
- print "error doing RelaxNG validation"
+ print("error doing RelaxNG validation")
sys.exit(1)
doc.freeDoc()
@@ -41,8 +41,8 @@ libxml2.relaxNGCleanupTypes()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/resolver.py b/python/tests/resolver.py
index 9f4a478..6f21f52 100755
--- a/python/tests/resolver.py
+++ b/python/tests/resolver.py
@@ -1,20 +1,25 @@
#!/usr/bin/python -u
import sys
import libxml2
-import StringIO
+try:
+ import StringIO
+ str_io = StringIO.StringIO
+except:
+ import io
+ str_io = io.StringIO
# Memory debug specific
libxml2.debugMemory(1)
def myResolver(URL, ID, ctxt):
- return(StringIO.StringIO("<foo/>"))
+ return(str_io("<foo/>"))
libxml2.setEntityLoader(myResolver)
doc = libxml2.parseFile("doesnotexist.xml")
root = doc.children
if root.name != "foo":
- print "root element name error"
+ print("root element name error")
sys.exit(1)
doc.freeDoc()
@@ -23,7 +28,7 @@ while i < 5000:
doc = libxml2.parseFile("doesnotexist.xml")
root = doc.children
if root.name != "foo":
- print "root element name error"
+ print("root element name error")
sys.exit(1)
doc.freeDoc()
i = i + 1
@@ -32,8 +37,8 @@ while i < 5000:
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/schema.py b/python/tests/schema.py
index bfa8423..8089272 100755
--- a/python/tests/schema.py
+++ b/python/tests/schema.py
@@ -33,7 +33,7 @@ ctxt_valid = ctxt_schema.schemaNewValidCtxt()
doc = libxml2.parseDoc(instance)
ret = doc.schemaValidateDoc(ctxt_valid)
if ret != 0:
- print "error doing schema validation"
+ print("error doing schema validation")
sys.exit(1)
doc.freeDoc()
@@ -45,8 +45,8 @@ libxml2.schemaCleanupTypes()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/serialize.py b/python/tests/serialize.py
index 91753e7..80b901a 100755
--- a/python/tests/serialize.py
+++ b/python/tests/serialize.py
@@ -13,13 +13,13 @@ str = doc.serialize()
if str != """<?xml version="1.0"?>
<root><foo>hello</foo></root>
""":
- print "error serializing XML document 1"
+ print("error serializing XML document 1")
sys.exit(1)
str = doc.serialize("iso-8859-1")
if str != """<?xml version="1.0" encoding="iso-8859-1"?>
<root><foo>hello</foo></root>
""":
- print "error serializing XML document 2"
+ print("error serializing XML document 2")
sys.exit(1)
str = doc.serialize(format=1)
if str != """<?xml version="1.0"?>
@@ -27,7 +27,7 @@ if str != """<?xml version="1.0"?>
<foo>hello</foo>
</root>
""":
- print "error serializing XML document 3"
+ print("error serializing XML document 3")
sys.exit(1)
str = doc.serialize("iso-8859-1", 1)
if str != """<?xml version="1.0" encoding="iso-8859-1"?>
@@ -35,7 +35,7 @@ if str != """<?xml version="1.0" encoding="iso-8859-1"?>
<foo>hello</foo>
</root>
""":
- print "error serializing XML document 4"
+ print("error serializing XML document 4")
sys.exit(1)
#
@@ -44,23 +44,23 @@ if str != """<?xml version="1.0" encoding="iso-8859-1"?>
root = doc.getRootElement()
str = root.serialize()
if str != """<root><foo>hello</foo></root>""":
- print "error serializing XML root 1"
+ print("error serializing XML root 1")
sys.exit(1)
str = root.serialize("iso-8859-1")
if str != """<root><foo>hello</foo></root>""":
- print "error serializing XML root 2"
+ print("error serializing XML root 2")
sys.exit(1)
str = root.serialize(format=1)
if str != """<root>
<foo>hello</foo>
</root>""":
- print "error serializing XML root 3"
+ print("error serializing XML root 3")
sys.exit(1)
str = root.serialize("iso-8859-1", 1)
if str != """<root>
<foo>hello</foo>
</root>""":
- print "error serializing XML root 4"
+ print("error serializing XML root 4")
sys.exit(1)
doc.freeDoc()
@@ -72,13 +72,13 @@ str = doc.serialize()
if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><title>Hello</title></head><body><p>hello</p></body></html>
""":
- print "error serializing HTML document 1"
+ print("error serializing HTML document 1")
sys.exit(1)
str = doc.serialize("ISO-8859-1")
if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>
""":
- print "error serializing HTML document 2"
+ print("error serializing HTML document 2")
sys.exit(1)
str = doc.serialize(format=1)
if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
@@ -90,7 +90,7 @@ if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http
<body><p>hello</p></body>
</html>
""":
- print "error serializing HTML document 3"
+ print("error serializing HTML document 3")
sys.exit(1)
str = doc.serialize("iso-8859-1", 1)
if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
@@ -102,7 +102,7 @@ if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http
<body><p>hello</p></body>
</html>
""":
- print "error serializing HTML document 4"
+ print("error serializing HTML document 4")
sys.exit(1)
#
@@ -112,11 +112,11 @@ doc.htmlSetMetaEncoding(None)
root = doc.getRootElement()
str = root.serialize()
if str != """<html><head><title>Hello</title></head><body><p>hello</p></body></html>""":
- print "error serializing HTML root 1"
+ print("error serializing HTML root 1")
sys.exit(1)
str = root.serialize("ISO-8859-1")
if str != """<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>""":
- print "error serializing HTML root 2"
+ print("error serializing HTML root 2")
sys.exit(1)
str = root.serialize(format=1)
if str != """<html>
@@ -126,7 +126,7 @@ if str != """<html>
</head>
<body><p>hello</p></body>
</html>""":
- print "error serializing HTML root 3"
+ print("error serializing HTML root 3")
sys.exit(1)
str = root.serialize("iso-8859-1", 1)
if str != """<html>
@@ -136,7 +136,7 @@ if str != """<html>
</head>
<body><p>hello</p></body>
</html>""":
- print "error serializing HTML root 4"
+ print("error serializing HTML root 4")
sys.exit(1)
doc.freeDoc()
@@ -144,7 +144,7 @@ doc.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/sync.py b/python/tests/sync.py
index 2141875..5a8609e 100755
--- a/python/tests/sync.py
+++ b/python/tests/sync.py
@@ -50,8 +50,8 @@ ctxt=None
reference = "startDocument:startElement foo None:startElement bar2 None:endElement bar2:"
if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
log=""
@@ -62,8 +62,8 @@ ctxt=None
reference = "startDocument:startElement foo None:startElement bar2 None:endElement bar2:"
if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
log=""
@@ -74,8 +74,8 @@ ctxt=None
reference = "startDocument:startElement foo None:startElement bar2 None:"
if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
log=""
@@ -84,10 +84,11 @@ ctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
ctxt.parseChunk(chunk, len(chunk), 0)
ctxt=None
-reference = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:endElement bar2:"
-if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+reference1 = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:endElement bar2:"
+reference2 = "startDocument:startElement foo None:startElement bar2 {'b': '2', 'a': '1'}:endElement bar2:"
+if log not in (reference1, reference2):
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
log=""
@@ -96,10 +97,11 @@ ctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
ctxt.parseChunk(chunk, len(chunk), 0)
ctxt=None
-reference = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:"
-if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+reference1 = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:"
+reference2 = "startDocument:startElement foo None:startElement bar2 {'b': '2', 'a': '1'}:"
+if log not in (reference1, reference2):
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
log=""
@@ -108,10 +110,11 @@ ctxt = libxml2.createPushParser(handler, None, 0, "test.xml")
ctxt.parseChunk(chunk, len(chunk), 0)
ctxt=None
-reference = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:endElement bar2:"
-if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+reference1 = "startDocument:startElement foo None:startElement bar2 {'a': '1', 'b': '2'}:endElement bar2:"
+reference2 = "startDocument:startElement foo None:startElement bar2 {'b': '2', 'a': '1'}:endElement bar2:"
+if log not in (reference1, reference2):
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
log=""
@@ -122,14 +125,14 @@ ctxt=None
reference = "startDocument:startElement foo None:"
if log != reference:
- print "Error got: %s" % log
- print "Exprected: %s" % reference
+ print("Error got: %s" % log)
+ print("Expected: %s" % reference)
sys.exit(1)
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/thread2.py b/python/tests/thread2.py
index c8ac5ed..2749eb0 100755
--- a/python/tests/thread2.py
+++ b/python/tests/thread2.py
@@ -1,6 +1,9 @@
#!/usr/bin/python -u
import string, sys, time
-import thread
+try:
+ from _thread import get_ident
+except:
+ from thread import get_ident
from threading import Thread, Lock
import libxml2
@@ -31,8 +34,8 @@ def test(expectedLineNumbersDefault):
# check a per thread-global
if expectedLineNumbersDefault != getLineNumbersDefault():
failed = 1
- print "FAILED to obtain correct value for " \
- "lineNumbersDefault in thread %d" % thread.get_ident()
+ print("FAILED to obtain correct value for " \
+ "lineNumbersDefault in thread %d" % get_ident())
# check ther global error handler
# (which is NOT per-thread in the python bindings)
try:
@@ -51,7 +54,7 @@ libxml2.lineNumbersDefault(1)
test(1)
ec = len(eh.errors)
if ec == 0:
- print "FAILED: should have obtained errors"
+ print("FAILED: should have obtained errors")
sys.exit(1)
ts = []
@@ -65,7 +68,7 @@ for t in ts:
t.join()
if len(eh.errors) != ec+THREADS_COUNT*ec:
- print "FAILED: did not obtain the correct number of errors"
+ print("FAILED: did not obtain the correct number of errors")
sys.exit(1)
# set lineNumbersDefault for future new threads
@@ -80,17 +83,17 @@ for t in ts:
t.join()
if len(eh.errors) != ec+THREADS_COUNT*ec*2:
- print "FAILED: did not obtain the correct number of errors"
+ print("FAILED: did not obtain the correct number of errors")
sys.exit(1)
if failed:
- print "FAILED"
+ print("FAILED")
sys.exit(1)
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/tst.py b/python/tests/tst.py
index 9540cda..57a7318 100755
--- a/python/tests/tst.py
+++ b/python/tests/tst.py
@@ -7,22 +7,22 @@ libxml2.debugMemory(1)
doc = libxml2.parseFile("tst.xml")
if doc.name != "tst.xml":
- print "doc.name failed"
+ print("doc.name failed")
sys.exit(1)
root = doc.children
if root.name != "doc":
- print "root.name failed"
+ print("root.name failed")
sys.exit(1)
child = root.children
if child.name != "foo":
- print "child.name failed"
+ print("child.name failed")
sys.exit(1)
doc.freeDoc()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/tstLastError.py b/python/tests/tstLastError.py
index d26e82c..d5f9be7 100755
--- a/python/tests/tstLastError.py
+++ b/python/tests/tstLastError.py
@@ -17,8 +17,8 @@ class TestCase(unittest.TestCase):
if libxml2.debugMemory(1) != 0:
libxml2.dumpMemory()
self.fail("Memory leak %d bytes" % (libxml2.debugMemory(1),))
- else:
- print "OK"
+ else:
+ print("OK")
def failUnlessXmlError(self,f,args,exc,domain,code,message,level,file,line):
"""Run function f, with arguments args and expect an exception exc;
@@ -27,19 +27,19 @@ class TestCase(unittest.TestCase):
# disable the default error handler
libxml2.registerErrorHandler(None,None)
try:
- apply(f,args)
+ f(*args)
except exc:
e = libxml2.lastError()
if e is None:
self.fail("lastError not set")
if 0:
- print "domain = ",e.domain()
- print "code = ",e.code()
- print "message =",repr(e.message())
- print "level =",e.level()
- print "file =",e.file()
- print "line =",e.line()
- print
+ print("domain = ",e.domain())
+ print("code = ",e.code())
+ print("message =",repr(e.message()))
+ print("level =",e.level())
+ print("file =",e.file())
+ print("line =",e.line())
+ print()
self.failUnlessEqual(domain,e.domain())
self.failUnlessEqual(code,e.code())
self.failUnlessEqual(message,e.message())
diff --git a/python/tests/tstURI.py b/python/tests/tstURI.py
index 58b7ad8..e4d58af 100755
--- a/python/tests/tstURI.py
+++ b/python/tests/tstURI.py
@@ -7,35 +7,35 @@ libxml2.debugMemory(1)
uri = libxml2.parseURI("http://example.org:8088/foo/bar?query=simple#fragid")
if uri.scheme() != 'http':
- print "Error parsing URI: wrong scheme"
+ print("Error parsing URI: wrong scheme")
sys.exit(1)
if uri.server() != 'example.org':
- print "Error parsing URI: wrong server"
+ print("Error parsing URI: wrong server")
sys.exit(1)
if uri.port() != 8088:
- print "Error parsing URI: wrong port"
+ print("Error parsing URI: wrong port")
sys.exit(1)
if uri.path() != '/foo/bar':
- print "Error parsing URI: wrong path"
+ print("Error parsing URI: wrong path")
sys.exit(1)
if uri.query() != 'query=simple':
- print "Error parsing URI: wrong query"
+ print("Error parsing URI: wrong query")
sys.exit(1)
if uri.fragment() != 'fragid':
- print "Error parsing URI: wrong query"
+ print("Error parsing URI: wrong query")
sys.exit(1)
uri.setScheme("https")
uri.setPort(223)
uri.setFragment(None)
result=uri.saveUri()
if result != "https://example.org:223/foo/bar?query=simple":
- print "Error modifying or saving the URI"
+ print("Error modifying or saving the URI")
uri = None
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/tstmem.py b/python/tests/tstmem.py
index 553096d..6b34cf3 100755
--- a/python/tests/tstmem.py
+++ b/python/tests/tstmem.py
@@ -19,7 +19,7 @@ libxml2mod.xmlSetValidErrors(ctxt._o, error, error)
doc = libxml2.parseDoc(instance)
ret = doc.validateDtd(ctxt, dtd)
if ret != 1:
- print "error doing DTD validation"
+ print("error doing DTD validation")
sys.exit(1)
doc.freeDoc()
@@ -30,7 +30,7 @@ del ctxt
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/tstxpath.py b/python/tests/tstxpath.py
index e47c34d..0ba5a6d 100755
--- a/python/tests/tstxpath.py
+++ b/python/tests/tstxpath.py
@@ -25,10 +25,10 @@ doc = libxml2.parseFile("tst.xml")
ctxt = doc.xpathNewContext()
res = ctxt.xpathEval("//*")
if len(res) != 2:
- print "xpath query: wrong node set size"
+ print("xpath query: wrong node set size")
sys.exit(1)
if res[0].name != "doc" or res[1].name != "foo":
- print "xpath query: wrong node set value"
+ print("xpath query: wrong node set value")
sys.exit(1)
libxml2.registerXPathFunction(ctxt._o, "foo", None, foo)
libxml2.registerXPathFunction(ctxt._o, "bar", None, bar)
@@ -36,28 +36,28 @@ i = 10000
while i > 0:
res = ctxt.xpathEval("foo(1)")
if res != 2:
- print "xpath extension failure"
+ print("xpath extension failure")
sys.exit(1)
i = i - 1
i = 10000
while i > 0:
res = ctxt.xpathEval("bar(1)")
if res != "3":
- print "xpath extension failure got %s expecting '3'"
+ print("xpath extension failure got %s expecting '3'")
sys.exit(1)
i = i - 1
doc.freeDoc()
ctxt.xpathFreeContext()
if called != "foo":
- print "xpath function: failed to access the context"
- print "xpath function: %s" % (called)
+ print("xpath function: failed to access the context")
+ print("xpath function: %s" % (called))
sys.exit(1)
#memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/validDTD.py b/python/tests/validDTD.py
index 1222f9f..4b03b8e 100755
--- a/python/tests/validDTD.py
+++ b/python/tests/validDTD.py
@@ -11,7 +11,7 @@ class ErrorHandler:
def handler(self, msg, data):
if data != ARG:
- raise Exception, "Error handler did not receive correct argument"
+ raise Exception("Error handler did not receive correct argument")
self.errors.append(msg)
@@ -34,7 +34,7 @@ ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
doc = libxml2.parseDoc(valid)
ret = doc.validateDtd(ctxt, dtd)
if ret != 1 or e.errors:
- print "error doing DTD validation"
+ print("error doing DTD validation")
sys.exit(1)
doc.freeDoc()
@@ -42,7 +42,7 @@ doc.freeDoc()
doc = libxml2.parseDoc(invalid)
ret = doc.validateDtd(ctxt, dtd)
if ret != 0 or not e.errors:
- print "Error: document supposed to be invalid"
+ print("Error: document supposed to be invalid")
doc.freeDoc()
dtd.freeDtd()
@@ -52,8 +52,8 @@ del ctxt
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/validRNG.py b/python/tests/validRNG.py
index 7022efe..57f13a4 100755
--- a/python/tests/validRNG.py
+++ b/python/tests/validRNG.py
@@ -11,7 +11,7 @@ class ErrorHandler:
def handler(self, msg, data):
if data != ARG:
- raise Exception, "Error handler did not receive correct argument"
+ raise Exception("Error handler did not receive correct argument")
self.errors.append(msg)
# Memory debug specific
@@ -49,7 +49,7 @@ ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
doc = libxml2.parseDoc(valid)
ret = doc.relaxNGValidateDoc(ctxt)
if ret != 0 or e.errors:
- print "error doing RelaxNG validation"
+ print("error doing RelaxNG validation")
sys.exit(1)
doc.freeDoc()
@@ -57,7 +57,7 @@ doc.freeDoc()
doc = libxml2.parseDoc(invalid)
ret = doc.relaxNGValidateDoc(ctxt)
if ret == 0 or not e.errors:
- print "Error: document supposed to be RelaxNG invalid"
+ print("Error: document supposed to be RelaxNG invalid")
sys.exit(1)
doc.freeDoc()
@@ -69,8 +69,8 @@ libxml2.relaxNGCleanupTypes()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/validSchemas.py b/python/tests/validSchemas.py
index d4d62b2..cc543f3 100755
--- a/python/tests/validSchemas.py
+++ b/python/tests/validSchemas.py
@@ -11,7 +11,7 @@ class ErrorHandler:
def handler(self, msg, data):
if data != ARG:
- raise Exception, "Error handler did not receive correct argument"
+ raise Exception("Error handler did not receive correct argument")
self.errors.append(msg)
# Memory debug specific
@@ -56,7 +56,7 @@ ctxt_valid.setValidityErrorHandler(e.handler, e.handler, ARG)
doc = libxml2.parseDoc(valid)
ret = doc.schemaValidateDoc(ctxt_valid)
if ret != 0 or e.errors:
- print "error doing schema validation"
+ print("error doing schema validation")
sys.exit(1)
doc.freeDoc()
@@ -64,7 +64,7 @@ doc.freeDoc()
doc = libxml2.parseDoc(invalid)
ret = doc.schemaValidateDoc(ctxt_valid)
if ret == 0 or not e.errors:
- print "Error: document supposer to be schema invalid"
+ print("Error: document supposer to be schema invalid")
sys.exit(1)
doc.freeDoc()
@@ -76,8 +76,8 @@ libxml2.schemaCleanupTypes()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/validate.py b/python/tests/validate.py
index 0dc86f4..16c0386 100755
--- a/python/tests/validate.py
+++ b/python/tests/validate.py
@@ -12,14 +12,14 @@ doc = ctxt.doc()
valid = ctxt.isValid()
if doc.name != "valid.xml":
- print "doc.name failed"
+ print("doc.name failed")
sys.exit(1)
root = doc.children
if root.name != "doc":
- print "root.name failed"
+ print("root.name failed")
sys.exit(1)
if valid != 1:
- print "validity chec failed"
+ print("validity chec failed")
sys.exit(1)
doc.freeDoc()
@@ -32,7 +32,7 @@ while i > 0:
valid = ctxt.isValid()
doc.freeDoc()
if valid != 1:
- print "validity check failed"
+ print("validity check failed")
sys.exit(1)
i = i - 1
@@ -48,14 +48,14 @@ ctxt.parseDocument()
doc = ctxt.doc()
valid = ctxt.isValid()
if doc.name != "invalid.xml":
- print "doc.name failed"
+ print("doc.name failed")
sys.exit(1)
root = doc.children
if root.name != "doc":
- print "root.name failed"
+ print("root.name failed")
sys.exit(1)
if valid != 0:
- print "validity chec failed"
+ print("validity chec failed")
sys.exit(1)
doc.freeDoc()
@@ -68,7 +68,7 @@ while i > 0:
valid = ctxt.isValid()
doc.freeDoc()
if valid != 0:
- print "validity check failed"
+ print("validity check failed")
sys.exit(1)
i = i - 1
del ctxt
@@ -76,7 +76,7 @@ del ctxt
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/walker.py b/python/tests/walker.py
index 3b5a62a..47f0557 100755
--- a/python/tests/walker.py
+++ b/python/tests/walker.py
@@ -3,7 +3,6 @@
# this tests the entities substitutions with the XmlTextReader interface
#
import sys
-import StringIO
import libxml2
# Memory debug specific
@@ -45,12 +44,12 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document test1"
+ print("Error parsing the document test1")
sys.exit(1)
if result != expect:
- print "Unexpected result for test1"
- print result
+ print("Unexpected result for test1")
+ print(result)
sys.exit(1)
doc.freeDoc()
@@ -85,12 +84,12 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document test2"
+ print("Error parsing the document test2")
sys.exit(1)
if result != expect:
- print "Unexpected result for test2"
- print result
+ print("Unexpected result for test2")
+ print(result)
sys.exit(1)
doc.freeDoc()
@@ -123,12 +122,12 @@ while ret == 1:
ret = reader.Read()
if ret != 0:
- print "Error parsing the document test3"
+ print("Error parsing the document test3")
sys.exit(1)
if result != expect:
- print "Unexpected result for test3"
- print result
+ print("Unexpected result for test3")
+ print(result)
sys.exit(1)
#
@@ -139,7 +138,7 @@ del reader
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/xpath.py b/python/tests/xpath.py
index 2e036e1..72e6c9d 100755
--- a/python/tests/xpath.py
+++ b/python/tests/xpath.py
@@ -11,24 +11,24 @@ libxml2.debugMemory(1)
doc = libxml2.parseFile("tst.xml")
if doc.name != "tst.xml":
- print "doc.name error"
+ print("doc.name error")
sys.exit(1);
ctxt = doc.xpathNewContext()
res = ctxt.xpathEval("//*")
if len(res) != 2:
- print "xpath query: wrong node set size"
+ print("xpath query: wrong node set size")
sys.exit(1)
if res[0].name != "doc" or res[1].name != "foo":
- print "xpath query: wrong node set value"
+ print("xpath query: wrong node set value")
sys.exit(1)
ctxt.setContextNode(res[0])
res = ctxt.xpathEval("foo")
if len(res) != 1:
- print "xpath query: wrong node set size"
+ print("xpath query: wrong node set size")
sys.exit(1)
if res[0].name != "foo":
- print "xpath query: wrong node set value"
+ print("xpath query: wrong node set value")
sys.exit(1)
doc.freeDoc()
ctxt.xpathFreeContext()
@@ -45,7 +45,7 @@ del ctxt
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/xpathext.py b/python/tests/xpathext.py
index 4769626..b83d283 100755
--- a/python/tests/xpathext.py
+++ b/python/tests/xpathext.py
@@ -15,10 +15,10 @@ doc = libxml2.parseFile("tst.xml")
ctxt = doc.xpathNewContext()
res = ctxt.xpathEval("//*")
if len(res) != 2:
- print "xpath query: wrong node set size"
+ print("xpath query: wrong node set size")
sys.exit(1)
if res[0].name != "doc" or res[1].name != "foo":
- print "xpath query: wrong node set value"
+ print("xpath query: wrong node set value")
sys.exit(1)
libxml2.registerXPathFunction(ctxt._o, "foo", None, foo)
@@ -27,14 +27,14 @@ i = 10000
while i > 0:
res = ctxt.xpathEval("foo(1)")
if res != 2:
- print "xpath extension failure"
+ print("xpath extension failure")
sys.exit(1)
i = i - 1
i = 10000
while i > 0:
res = ctxt.xpathEval("bar(1)")
if res != "3":
- print "xpath extension failure got %s expecting '3'"
+ print("xpath extension failure got %s expecting '3'")
sys.exit(1)
i = i - 1
doc.freeDoc()
@@ -43,7 +43,7 @@ ctxt.xpathFreeContext()
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/xpathleak.py b/python/tests/xpathleak.py
index 39f49e3..33ab61c 100644..100755
--- a/python/tests/xpathleak.py
+++ b/python/tests/xpathleak.py
@@ -42,24 +42,24 @@ badexprs = (
for expr in badexprs:
try:
ctxt.xpathEval(expr)
- except libxml2.xpathError, e:
+ except libxml2.xpathError:
pass
else:
- print "Unexpectedly legal expression:", expr
+ print("Unexpectedly legal expression:", expr)
ctxt.xpathFreeContext()
doc.freeDoc()
if err != expect:
- print "error"
- print "received %s" %(err)
- print "expected %s" %(expect)
+ print("error")
+ print("received %s" %(err))
+ print("expected %s" %(expect))
sys.exit(1)
libxml2.cleanupParser()
leakedbytes = libxml2.debugMemory(True)
if leakedbytes == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak", leakedbytes, "bytes"
+ print("Memory leak", leakedbytes, "bytes")
# drop file to .memdump file in cwd, but won't work if not compiled in
libxml2.dumpMemory()
diff --git a/python/tests/xpathns.py b/python/tests/xpathns.py
index e67e550..379535e 100755
--- a/python/tests/xpathns.py
+++ b/python/tests/xpathns.py
@@ -14,8 +14,8 @@ for n in d.xpathEval("//namespace::*"):
d.freeDoc()
if res != expect:
- print "test5 failed: unexpected output"
- print res
+ print("test5 failed: unexpected output")
+ print(res)
del res
del d
del n
@@ -23,7 +23,7 @@ del n
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/tests/xpathret.py b/python/tests/xpathret.py
index 2b5576a..11c8b32 100755
--- a/python/tests/xpathret.py
+++ b/python/tests/xpathret.py
@@ -27,21 +27,21 @@ ctxt = doc.xpathNewContext()
libxml2.registerXPathFunction(ctxt._o, "foo", None, foo)
res = ctxt.xpathEval("foo('hello')")
if type(res) != type([]):
- print "Failed to return a nodeset"
+ print("Failed to return a nodeset")
sys.exit(1)
if len(res) != 1:
- print "Unexpected nodeset size"
+ print("Unexpected nodeset size")
sys.exit(1)
node = res[0]
if node.name != 'p':
- print "Unexpected nodeset element result"
+ print("Unexpected nodeset element result")
sys.exit(1)
node = node.children
if node.type != 'text':
- print "Unexpected nodeset element children type"
+ print("Unexpected nodeset element children type")
sys.exit(1)
if node.content != 'hello':
- print "Unexpected nodeset element children content"
+ print("Unexpected nodeset element children content")
sys.exit(1)
doc.freeDoc()
@@ -51,7 +51,7 @@ ctxt.xpathFreeContext()
#memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
- print "OK"
+ print("OK")
else:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()
diff --git a/python/types.c b/python/types.c
index 54b50de..f237677 100644
--- a/python/types.c
+++ b/python/types.c
@@ -9,6 +9,83 @@
#include "libxml_wrap.h"
#include <libxml/xpathInternals.h>
+#if PY_MAJOR_VERSION >= 3
+#define PY_IMPORT_STRING_SIZE PyUnicode_FromStringAndSize
+#define PY_IMPORT_STRING PyUnicode_FromString
+#define PY_IMPORT_INT PyLong_FromLong
+#else
+#define PY_IMPORT_STRING_SIZE PyString_FromStringAndSize
+#define PY_IMPORT_STRING PyString_FromString
+#define PY_IMPORT_INT PyInt_FromLong
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+FILE *
+libxml_PyFileGet(PyObject *f) {
+ int fd, flags;
+ FILE *res;
+ const char *mode;
+
+ fd = PyObject_AsFileDescriptor(f);
+ if (!_PyVerify_fd(fd))
+ return(NULL);
+ /*
+ * Get the flags on the fd to understand how it was opened
+ */
+ flags = fcntl(fd, F_GETFL, 0);
+ switch (flags & O_ACCMODE) {
+ case O_RDWR:
+ if (flags & O_APPEND)
+ mode = "a+";
+ else
+ mode = "rw";
+ break;
+ case O_RDONLY:
+ if (flags & O_APPEND)
+ mode = "r+";
+ else
+ mode = "r";
+ break;
+ case O_WRONLY:
+ if (flags & O_APPEND)
+ mode = "a";
+ else
+ mode = "w";
+ break;
+ default:
+ return(NULL);
+ }
+
+ /*
+ * the FILE struct gets a new fd, so that it can be closed
+ * independently of the file descriptor given. The risk though is
+ * lack of sync. So at the python level sync must be implemented
+ * before and after a conversion took place. No way around it
+ * in the Python3 infrastructure !
+ * The duplicated fd and FILE * will be released in the subsequent
+ * call to libxml_PyFileRelease() which must be genrated accodingly
+ */
+ fd = dup(fd);
+ if (fd == -1)
+ return(NULL);
+ res = fdopen(fd, mode);
+ if (res == NULL) {
+ close(fd);
+ return(NULL);
+ }
+ return(res);
+}
+
+void libxml_PyFileRelease(FILE *f) {
+ if (f != NULL)
+ fclose(f);
+}
+#endif
+
PyObject *
libxml_intWrap(int val)
{
@@ -17,7 +94,7 @@ libxml_intWrap(int val)
#ifdef DEBUG
printf("libxml_intWrap: val = %d\n", val);
#endif
- ret = PyInt_FromLong((long) val);
+ ret = PY_IMPORT_INT((long) val);
return (ret);
}
@@ -29,7 +106,7 @@ libxml_longWrap(long val)
#ifdef DEBUG
printf("libxml_longWrap: val = %ld\n", val);
#endif
- ret = PyInt_FromLong(val);
+ ret = PyLong_FromLong(val);
return (ret);
}
@@ -57,8 +134,7 @@ libxml_charPtrWrap(char *str)
Py_INCREF(Py_None);
return (Py_None);
}
- /* TODO: look at deallocation */
- ret = PyString_FromString(str);
+ ret = PY_IMPORT_STRING(str);
xmlFree(str);
return (ret);
}
@@ -75,8 +151,7 @@ libxml_charPtrConstWrap(const char *str)
Py_INCREF(Py_None);
return (Py_None);
}
- /* TODO: look at deallocation */
- ret = PyString_FromString(str);
+ ret = PY_IMPORT_STRING(str);
return (ret);
}
@@ -92,8 +167,7 @@ libxml_xmlCharPtrWrap(xmlChar * str)
Py_INCREF(Py_None);
return (Py_None);
}
- /* TODO: look at deallocation */
- ret = PyString_FromString((char *) str);
+ ret = PY_IMPORT_STRING((char *) str);
xmlFree(str);
return (ret);
}
@@ -110,8 +184,7 @@ libxml_xmlCharPtrConstWrap(const xmlChar * str)
Py_INCREF(Py_None);
return (Py_None);
}
- /* TODO: look at deallocation */
- ret = PyString_FromString((char *) str);
+ ret = PY_IMPORT_STRING((char *) str);
return (ret);
}
@@ -127,8 +200,7 @@ libxml_constcharPtrWrap(const char *str)
Py_INCREF(Py_None);
return (Py_None);
}
- /* TODO: look at deallocation */
- ret = PyString_FromString(str);
+ ret = PY_IMPORT_STRING(str);
return (ret);
}
@@ -144,8 +216,7 @@ libxml_constxmlCharPtrWrap(const xmlChar * str)
Py_INCREF(Py_None);
return (Py_None);
}
- /* TODO: look at deallocation */
- ret = PyString_FromString((char *) str);
+ ret = PY_IMPORT_STRING((char *) str);
return (ret);
}
@@ -162,9 +233,7 @@ libxml_xmlDocPtrWrap(xmlDocPtr doc)
return (Py_None);
}
/* TODO: look at deallocation */
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) doc, (char *) "xmlDocPtr",
- NULL);
+ ret = PyCapsule_New((void *) doc, (char *) "xmlDocPtr", NULL);
return (ret);
}
@@ -180,9 +249,7 @@ libxml_xmlNodePtrWrap(xmlNodePtr node)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) node, (char *) "xmlNodePtr",
- NULL);
+ ret = PyCapsule_New((void *) node, (char *) "xmlNodePtr", NULL);
return (ret);
}
@@ -198,9 +265,7 @@ libxml_xmlURIPtrWrap(xmlURIPtr uri)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) uri, (char *) "xmlURIPtr",
- NULL);
+ ret = PyCapsule_New((void *) uri, (char *) "xmlURIPtr", NULL);
return (ret);
}
@@ -216,9 +281,7 @@ libxml_xmlNsPtrWrap(xmlNsPtr ns)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) ns, (char *) "xmlNsPtr",
- NULL);
+ ret = PyCapsule_New((void *) ns, (char *) "xmlNsPtr", NULL);
return (ret);
}
@@ -234,9 +297,7 @@ libxml_xmlAttrPtrWrap(xmlAttrPtr attr)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) attr, (char *) "xmlAttrPtr",
- NULL);
+ ret = PyCapsule_New((void *) attr, (char *) "xmlAttrPtr", NULL);
return (ret);
}
@@ -252,9 +313,7 @@ libxml_xmlAttributePtrWrap(xmlAttributePtr attr)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) attr,
- (char *) "xmlAttributePtr", NULL);
+ ret = PyCapsule_New((void *) attr, (char *) "xmlAttributePtr", NULL);
return (ret);
}
@@ -270,9 +329,7 @@ libxml_xmlElementPtrWrap(xmlElementPtr elem)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) elem,
- (char *) "xmlElementPtr", NULL);
+ ret = PyCapsule_New((void *) elem, (char *) "xmlElementPtr", NULL);
return (ret);
}
@@ -288,9 +345,7 @@ libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) ctxt,
- (char *) "xmlXPathContextPtr", NULL);
+ ret = PyCapsule_New((void *) ctxt, (char *) "xmlXPathContextPtr", NULL);
return (ret);
}
@@ -306,9 +361,7 @@ libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt)
Py_INCREF(Py_None);
return (Py_None);
}
- ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt,
- (char *) "xmlXPathParserContextPtr",
- NULL);
+ ret = PyCapsule_New((void *)ctxt, (char *)"xmlXPathParserContextPtr", NULL);
return (ret);
}
@@ -325,28 +378,35 @@ libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt)
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) ctxt,
- (char *) "xmlParserCtxtPtr", NULL);
+ ret = PyCapsule_New((void *) ctxt, (char *) "xmlParserCtxtPtr", NULL);
return (ret);
}
/**
* libxml_xmlXPathDestructNsNode:
- * cobj: xmlNsPtr namespace node
- * desc: ignored string
+ * cap: xmlNsPtr namespace node capsule object
*
* This function is called if and when a namespace node returned in
* an XPath node set is to be destroyed. That's the only kind of
* object returned in node set not directly linked to the original
* xmlDoc document, see xmlXPathNodeSetDupNs.
*/
+#if PY_VERSION_HEX < 0x02070000
+static void
+libxml_xmlXPathDestructNsNode(void *cap, void *desc ATTRIBUTE_UNUSED)
+#else
static void
-libxml_xmlXPathDestructNsNode(void *cobj, void *desc ATTRIBUTE_UNUSED) {
+libxml_xmlXPathDestructNsNode(PyObject *cap)
+#endif
+{
#ifdef DEBUG
- fprintf(stderr, "libxml_xmlXPathDestructNsNode called %p\n", cobj);
+ fprintf(stderr, "libxml_xmlXPathDestructNsNode called %p\n", cap);
+#endif
+#if PY_VERSION_HEX < 0x02070000
+ xmlXPathNodeSetFreeNs((xmlNsPtr) cap);
+#else
+ xmlXPathNodeSetFreeNs((xmlNsPtr) PyCapsule_GetPointer(cap, "xmlNsPtr"));
#endif
- xmlXPathNodeSetFreeNs((xmlNsPtr) cobj);
}
PyObject *
@@ -400,8 +460,7 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
for (i = 0; i < obj->nodesetval->nodeNr; i++) {
node = obj->nodesetval->nodeTab[i];
if (node->type == XML_NAMESPACE_DECL) {
- PyObject *ns =
- PyCObject_FromVoidPtrAndDesc((void *) node,
+ PyObject *ns = PyCapsule_New((void *) node,
(char *) "xmlNsPtr",
libxml_xmlXPathDestructNsNode);
PyList_SetItem(ret, i, ns);
@@ -414,13 +473,13 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
}
break;
case XPATH_BOOLEAN:
- ret = PyInt_FromLong((long) obj->boolval);
+ ret = PY_IMPORT_INT((long) obj->boolval);
break;
case XPATH_NUMBER:
ret = PyFloat_FromDouble(obj->floatval);
break;
case XPATH_STRING:
- ret = PyString_FromString((char *) obj->stringval);
+ ret = PY_IMPORT_STRING((char *) obj->stringval);
break;
case XPATH_POINT:
{
@@ -429,7 +488,7 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
PyObject *tuple;
node = libxml_xmlNodePtrWrap(obj->user);
- indexIntoNode = PyInt_FromLong((long) obj->index);
+ indexIntoNode = PY_IMPORT_INT((long) obj->index);
tuple = PyTuple_New(2);
PyTuple_SetItem(tuple, 0, node);
@@ -453,7 +512,7 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
list = PyList_New(1);
node = libxml_xmlNodePtrWrap(obj->user);
- indexIntoNode = PyInt_FromLong((long) obj->index);
+ indexIntoNode = PY_IMPORT_INT((long) obj->index);
tuple = PyTuple_New(2);
PyTuple_SetItem(tuple, 0, node);
@@ -471,7 +530,7 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
list = PyList_New(2);
node = libxml_xmlNodePtrWrap(obj->user);
- indexIntoNode = PyInt_FromLong((long) obj->index);
+ indexIntoNode = PY_IMPORT_INT((long) obj->index);
tuple = PyTuple_New(2);
PyTuple_SetItem(tuple, 0, node);
@@ -480,7 +539,7 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
PyList_SetItem(list, 0, tuple);
node = libxml_xmlNodePtrWrap(obj->user2);
- indexIntoNode = PyInt_FromLong((long) obj->index2);
+ indexIntoNode = PY_IMPORT_INT((long) obj->index2);
tuple = PyTuple_New(2);
PyTuple_SetItem(tuple, 0, node);
@@ -535,7 +594,7 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
}
xmlXPathObjectPtr
-libxml_xmlXPathObjectPtrConvert(PyObject * obj)
+libxml_xmlXPathObjectPtrConvert(PyObject *obj)
{
xmlXPathObjectPtr ret = NULL;
@@ -545,14 +604,14 @@ libxml_xmlXPathObjectPtrConvert(PyObject * obj)
if (obj == NULL) {
return (NULL);
}
- if PyFloat_Check
- (obj) {
+ if PyFloat_Check (obj) {
ret = xmlXPathNewFloat((double) PyFloat_AS_DOUBLE(obj));
-
- } else if PyInt_Check(obj) {
-
+ } else if PyLong_Check(obj) {
+#ifdef PyLong_AS_LONG
+ ret = xmlXPathNewFloat((double) PyLong_AS_LONG(obj));
+#else
ret = xmlXPathNewFloat((double) PyInt_AS_LONG(obj));
-
+#endif
#ifdef PyBool_Check
} else if PyBool_Check (obj) {
@@ -563,15 +622,37 @@ libxml_xmlXPathObjectPtrConvert(PyObject * obj)
ret = xmlXPathNewBoolean(0);
}
#endif
- } else if PyString_Check
- (obj) {
+ } else if PyBytes_Check (obj) {
xmlChar *str;
- str = xmlStrndup((const xmlChar *) PyString_AS_STRING(obj),
- PyString_GET_SIZE(obj));
+ str = xmlStrndup((const xmlChar *) PyBytes_AS_STRING(obj),
+ PyBytes_GET_SIZE(obj));
ret = xmlXPathWrapString(str);
- } else if PyList_Check
- (obj) {
+#ifdef PyUnicode_Check
+ } else if PyUnicode_Check (obj) {
+#if PY_VERSION_HEX >= 0x03030000
+ xmlChar *str;
+ const char *tmp;
+ Py_ssize_t size;
+
+ /* tmp doesn't need to be deallocated */
+ tmp = PyUnicode_AsUTF8AndSize(obj, &size);
+ str = xmlStrndup((const xmlChar *) tmp, (int) size);
+ ret = xmlXPathWrapString(str);
+#else
+ xmlChar *str = NULL;
+ PyObject *b;
+
+ b = PyUnicode_AsUTF8String(obj);
+ if (b != NULL) {
+ str = xmlStrndup((const xmlChar *) PyBytes_AS_STRING(b),
+ PyBytes_GET_SIZE(b));
+ Py_DECREF(b);
+ }
+ ret = xmlXPathWrapString(str);
+#endif
+#endif
+ } else if PyList_Check (obj) {
int i;
PyObject *node;
xmlNodePtr cur;
@@ -585,28 +666,18 @@ libxml_xmlXPathObjectPtrConvert(PyObject * obj)
continue;
cur = NULL;
- if (PyCObject_Check(node)) {
+ if (PyCapsule_CheckExact(node)) {
#ifdef DEBUG
- printf("Got a CObject\n");
+ printf("Got a Capsule\n");
#endif
cur = PyxmlNode_Get(node);
- } else if (PyInstance_Check(node)) {
- PyInstanceObject *inst = (PyInstanceObject *) node;
- PyObject *name = inst->in_class->cl_name;
-
- if PyString_Check
- (name) {
- char *type = PyString_AS_STRING(name);
- PyObject *wrapper;
-
- if (!strcmp(type, "xmlNode")) {
- wrapper =
- PyObject_GetAttrString(node, (char *) "_o");
- if (wrapper != NULL) {
- cur = PyxmlNode_Get(wrapper);
- }
- }
- }
+ } else if ((PyObject_HasAttrString(node, (char *) "_o")) &&
+ (PyObject_HasAttrString(node, (char *) "get_doc"))) {
+ PyObject *wrapper;
+
+ wrapper = PyObject_GetAttrString(node, (char *) "_o");
+ if (wrapper != NULL)
+ cur = PyxmlNode_Get(wrapper);
} else {
#ifdef DEBUG
printf("Unknown object in Python return list\n");
@@ -622,7 +693,6 @@ libxml_xmlXPathObjectPtrConvert(PyObject * obj)
printf("Unable to convert Python Object to XPath");
#endif
}
- Py_DECREF(obj);
return (ret);
}
@@ -630,7 +700,7 @@ PyObject *
libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid)
{
PyObject *ret;
-
+
#ifdef DEBUG
printf("libxml_xmlValidCtxtPtrWrap: valid = %p\n", valid);
#endif
@@ -640,7 +710,7 @@ libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid)
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) valid,
+ PyCapsule_New((void *) valid,
(char *) "xmlValidCtxtPtr", NULL);
return (ret);
@@ -659,7 +729,7 @@ libxml_xmlCatalogPtrWrap(xmlCatalogPtr catal)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) catal,
+ PyCapsule_New((void *) catal,
(char *) "xmlCatalogPtr", NULL);
return (ret);
}
@@ -677,7 +747,7 @@ libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) buffer,
+ PyCapsule_New((void *) buffer,
(char *) "xmlOutputBufferPtr", NULL);
return (ret);
}
@@ -695,7 +765,7 @@ libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) buffer,
+ PyCapsule_New((void *) buffer,
(char *) "xmlParserInputBufferPtr", NULL);
return (ret);
}
@@ -714,7 +784,7 @@ libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) regexp,
+ PyCapsule_New((void *) regexp,
(char *) "xmlRegexpPtr", NULL);
return (ret);
}
@@ -734,7 +804,7 @@ libxml_xmlTextReaderPtrWrap(xmlTextReaderPtr reader)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) reader,
+ PyCapsule_New((void *) reader,
(char *) "xmlTextReaderPtr", NULL);
return (ret);
}
@@ -752,7 +822,7 @@ libxml_xmlTextReaderLocatorPtrWrap(xmlTextReaderLocatorPtr locator)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) locator,
+ PyCapsule_New((void *) locator,
(char *) "xmlTextReaderLocatorPtr", NULL);
return (ret);
}
@@ -772,7 +842,7 @@ libxml_xmlRelaxNGPtrWrap(xmlRelaxNGPtr ctxt)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) ctxt,
+ PyCapsule_New((void *) ctxt,
(char *) "xmlRelaxNGPtr", NULL);
return (ret);
}
@@ -790,7 +860,7 @@ libxml_xmlRelaxNGParserCtxtPtrWrap(xmlRelaxNGParserCtxtPtr ctxt)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) ctxt,
+ PyCapsule_New((void *) ctxt,
(char *) "xmlRelaxNGParserCtxtPtr", NULL);
return (ret);
}
@@ -807,7 +877,7 @@ libxml_xmlRelaxNGValidCtxtPtrWrap(xmlRelaxNGValidCtxtPtr valid)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) valid,
+ PyCapsule_New((void *) valid,
(char *) "xmlRelaxNGValidCtxtPtr", NULL);
return (ret);
}
@@ -825,7 +895,7 @@ libxml_xmlSchemaPtrWrap(xmlSchemaPtr ctxt)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) ctxt,
+ PyCapsule_New((void *) ctxt,
(char *) "xmlSchemaPtr", NULL);
return (ret);
}
@@ -843,7 +913,7 @@ libxml_xmlSchemaParserCtxtPtrWrap(xmlSchemaParserCtxtPtr ctxt)
return (Py_None);
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) ctxt,
+ PyCapsule_New((void *) ctxt,
(char *) "xmlSchemaParserCtxtPtr", NULL);
return (ret);
@@ -863,7 +933,7 @@ libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid)
}
ret =
- PyCObject_FromVoidPtrAndDesc((void *) valid,
+ PyCapsule_New((void *) valid,
(char *) "xmlSchemaValidCtxtPtr", NULL);
return (ret);
@@ -882,8 +952,6 @@ libxml_xmlErrorPtrWrap(xmlErrorPtr error)
Py_INCREF(Py_None);
return (Py_None);
}
- ret =
- PyCObject_FromVoidPtrAndDesc((void *) error,
- (char *) "xmlErrorPtr", NULL);
+ ret = PyCapsule_New((void *) error, (char *) "xmlErrorPtr", NULL);
return (ret);
}
diff --git a/relaxng.c b/relaxng.c
index 18f6a0b..8d88e95 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -39,9 +39,10 @@
static const xmlChar *xmlRelaxNGNs = (const xmlChar *)
"http://relaxng.org/ns/structure/1.0";
-#define IS_RELAXNG(node, type) \
+#define IS_RELAXNG(node, typ) \
((node != NULL) && (node->ns != NULL) && \
- (xmlStrEqual(node->name, (const xmlChar *) type)) && \
+ (node->type == XML_ELEMENT_NODE) && \
+ (xmlStrEqual(node->name, (const xmlChar *) typ)) && \
(xmlStrEqual(node->ns->href, xmlRelaxNGNs)))
@@ -60,7 +61,7 @@ static const xmlChar *xmlRelaxNGNs = (const xmlChar *)
#define DEBUG_LIST 1
-#define DEBUG_INCLUDE 1
+#define DEBUG_INCLUDE 1
#define DEBUG_ERROR 1
@@ -71,7 +72,7 @@ static const xmlChar *xmlRelaxNGNs = (const xmlChar *)
#define MAX_ERROR 5
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -421,7 +422,7 @@ struct _xmlRelaxNGDocument {
/************************************************************************
* *
- * Some factorized error routines *
+ * Some factorized error routines *
* *
************************************************************************/
@@ -564,9 +565,9 @@ xmlRngVErr(xmlRelaxNGValidCtxtPtr ctxt, xmlNodePtr node, int error,
}
/************************************************************************
- * *
- * Preliminary type checking interfaces *
- * *
+ * *
+ * Preliminary type checking interfaces *
+ * *
************************************************************************/
/**
@@ -654,9 +655,9 @@ struct _xmlRelaxNGTypeLibrary {
};
/************************************************************************
- * *
- * Allocation functions *
- * *
+ * *
+ * Allocation functions *
+ * *
************************************************************************/
static void xmlRelaxNGFreeGrammar(xmlRelaxNGGrammarPtr grammar);
static void xmlRelaxNGFreeDefine(xmlRelaxNGDefinePtr define);
@@ -1094,7 +1095,7 @@ xmlRelaxNGAddStates(xmlRelaxNGValidCtxtPtr ctxt,
{
int i;
- if (state == NULL) {
+ if (state == NULL || states == NULL) {
return (-1);
}
if (states->nbState >= states->maxState) {
@@ -1397,9 +1398,9 @@ xmlRelaxNGFreeValidState(xmlRelaxNGValidCtxtPtr ctxt,
}
/************************************************************************
- * *
- * Semi internal functions *
- * *
+ * *
+ * Semi internal functions *
+ * *
************************************************************************/
/**
@@ -1429,9 +1430,9 @@ xmlRelaxParserSetFlag(xmlRelaxNGParserCtxtPtr ctxt, int flags)
}
/************************************************************************
- * *
- * Document functions *
- * *
+ * *
+ * Document functions *
+ * *
************************************************************************/
static xmlDocPtr xmlRelaxNGCleanupDoc(xmlRelaxNGParserCtxtPtr ctxt,
xmlDocPtr doc);
@@ -2007,9 +2008,9 @@ xmlRelaxNGLoadExternalRef(xmlRelaxNGParserCtxtPtr ctxt,
}
/************************************************************************
- * *
- * Error functions *
- * *
+ * *
+ * Error functions *
+ * *
************************************************************************/
#define VALID_ERR(a) xmlRelaxNGAddValidError(ctxt, a, NULL, NULL, 0);
@@ -2360,7 +2361,7 @@ xmlRelaxNGAddValidError(xmlRelaxNGValidCtxtPtr ctxt,
* generate the error directly
*/
if (((ctxt->flags & FLAGS_IGNORABLE) == 0) ||
- (ctxt->flags & FLAGS_NEGATIVE)) {
+ (ctxt->flags & FLAGS_NEGATIVE)) {
xmlNodePtr node, seq;
/*
@@ -2390,9 +2391,9 @@ xmlRelaxNGAddValidError(xmlRelaxNGValidCtxtPtr ctxt,
/************************************************************************
- * *
- * Type library hooks *
- * *
+ * *
+ * Type library hooks *
+ * *
************************************************************************/
static xmlChar *xmlRelaxNGNormalize(xmlRelaxNGValidCtxtPtr ctxt,
const xmlChar * str);
@@ -2594,13 +2595,10 @@ xmlRelaxNGSchemaTypeCompare(void *data ATTRIBUTE_UNUSED,
}
ret = xmlSchemaValPredefTypeNode(typ, value2, &res2, ctxt2);
if (ret != 0) {
- if ((comp1 == NULL) && (res1 != NULL))
+ if (res1 != (xmlSchemaValPtr) comp1)
xmlSchemaFreeValue(res1);
return (-1);
}
- if (res1 == NULL) {
- return (-1);
- }
ret = xmlSchemaCompareValues(res1, res2);
if (res1 != (xmlSchemaValPtr) comp1)
xmlSchemaFreeValue(res1);
@@ -2847,12 +2845,12 @@ xmlRelaxNGCleanupTypes(void)
}
/************************************************************************
- * *
- * Compiling element content into regexp *
- * *
+ * *
+ * Compiling element content into regexp *
+ * *
* Sometime the element content can be compiled into a pure regexp, *
* This allows a faster execution and streamability at that level *
- * *
+ * *
************************************************************************/
/* from automata.c but not exported */
@@ -3325,9 +3323,9 @@ xmlRelaxNGTryCompile(xmlRelaxNGParserCtxtPtr ctxt, xmlRelaxNGDefinePtr def)
}
/************************************************************************
- * *
- * Parsing functions *
- * *
+ * *
+ * Parsing functions *
+ * *
************************************************************************/
static xmlRelaxNGDefinePtr xmlRelaxNGParseAttribute(xmlRelaxNGParserCtxtPtr
@@ -6602,7 +6600,7 @@ xmlRelaxNGParseGrammar(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr nodes)
}
/*
- * Apply 4.17 mergingd rules to defines and starts
+ * Apply 4.17 merging rules to defines and starts
*/
xmlRelaxNGCombineStart(ctxt, ret);
if (ret->defs != NULL) {
@@ -6654,12 +6652,17 @@ xmlRelaxNGParseDocument(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
ctxt->define = NULL;
if (IS_RELAXNG(node, "grammar")) {
schema->topgrammar = xmlRelaxNGParseGrammar(ctxt, node->children);
+ if (schema->topgrammar == NULL) {
+ xmlRelaxNGFree(schema);
+ return (NULL);
+ }
} else {
xmlRelaxNGGrammarPtr tmp, ret;
schema->topgrammar = ret = xmlRelaxNGNewGrammar(ctxt);
if (schema->topgrammar == NULL) {
- return (schema);
+ xmlRelaxNGFree(schema);
+ return (NULL);
}
/*
* Link the new grammar in the tree
@@ -6705,9 +6708,9 @@ xmlRelaxNGParseDocument(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
}
/************************************************************************
- * *
- * Reading RelaxNGs *
- * *
+ * *
+ * Reading RelaxNGs *
+ * *
************************************************************************/
/**
@@ -7316,7 +7319,7 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root)
}
}
/*
- * Thisd is not an else since "include" is transformed
+ * This is not an else since "include" is transformed
* into a div
*/
if (xmlStrEqual(cur->name, BAD_CAST "div")) {
@@ -7345,13 +7348,13 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root)
if (ns != NULL)
xmlFree(ns);
/*
- * Since we are about to delete cur, if it's nsDef is non-NULL we
+ * Since we are about to delete cur, if its nsDef is non-NULL we
* need to preserve it (it contains the ns definitions for the
* children we just moved). We'll just stick it on to the end
* of cur->parent's list, since it's never going to be re-serialized
* (bug 143738).
*/
- if (cur->nsDef != NULL) {
+ if ((cur->nsDef != NULL) && (cur->parent != NULL)) {
xmlNsPtr parDef = (xmlNsPtr)&cur->parent->nsDef;
while (parDef->next != NULL)
parDef = parDef->next;
@@ -7369,7 +7372,8 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root)
else if ((cur->type == XML_TEXT_NODE) ||
(cur->type == XML_CDATA_SECTION_NODE)) {
if (IS_BLANK_NODE(cur)) {
- if (cur->parent->type == XML_ELEMENT_NODE) {
+ if ((cur->parent != NULL) &&
+ (cur->parent->type == XML_ELEMENT_NODE)) {
if ((!xmlStrEqual(cur->parent->name, BAD_CAST "value"))
&&
(!xmlStrEqual
@@ -7521,7 +7525,7 @@ xmlRelaxNGParse(xmlRelaxNGParserCtxtPtr ctxt)
xmlRngPErr(ctxt, (xmlNodePtr) doc,
XML_RNGP_EMPTY, "xmlRelaxNGParse: %s is empty\n",
(ctxt->URL ? ctxt->URL : BAD_CAST "schemas"), NULL);
-
+
xmlFreeDoc(ctxt->document);
ctxt->document = NULL;
return (NULL);
@@ -7663,9 +7667,9 @@ xmlRelaxNGSetParserStructuredErrors(xmlRelaxNGParserCtxtPtr ctxt,
#ifdef LIBXML_OUTPUT_ENABLED
/************************************************************************
- * *
- * Dump back a compiled form *
- * *
+ * *
+ * Dump back a compiled form *
+ * *
************************************************************************/
static void xmlRelaxNGDumpDefine(FILE * output,
xmlRelaxNGDefinePtr define);
@@ -7806,7 +7810,7 @@ xmlRelaxNGDumpDefine(FILE * output, xmlRelaxNGDefinePtr define)
* xmlRelaxNGDumpGrammar:
* @output: the file output
* @grammar: a grammar structure
- * @top: is this a top grammar
+ * @top: is this a top grammar
*
* Dump a RelaxNG structure back
*/
@@ -7899,9 +7903,9 @@ xmlRelaxNGDumpTree(FILE * output, xmlRelaxNGPtr schema)
#endif /* LIBXML_OUTPUT_ENABLED */
/************************************************************************
- * *
- * Validation of compiled content *
- * *
+ * *
+ * Validation of compiled content *
+ * *
************************************************************************/
static int xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt,
xmlRelaxNGDefinePtr define);
@@ -8044,9 +8048,9 @@ xmlRelaxNGValidateCompiledContent(xmlRelaxNGValidCtxtPtr ctxt,
}
/************************************************************************
- * *
- * Progressive validation of when possible *
- * *
+ * *
+ * Progressive validation of when possible *
+ * *
************************************************************************/
static int xmlRelaxNGValidateAttributeList(xmlRelaxNGValidCtxtPtr ctxt,
xmlRelaxNGDefinePtr defines);
@@ -8346,7 +8350,7 @@ xmlRelaxNGValidatePushElement(xmlRelaxNGValidCtxtPtr ctxt,
* xmlRelaxNGValidatePushCData:
* @ctxt: the RelaxNG validation context
* @data: some character data read
- * @len: the lenght of the data
+ * @len: the length of the data
*
* check the CData parsed for validation in the current stack
*
@@ -8480,9 +8484,9 @@ xmlRelaxNGValidateFullElement(xmlRelaxNGValidCtxtPtr ctxt,
}
/************************************************************************
- * *
- * Generic interpreted validation implementation *
- * *
+ * *
+ * Generic interpreted validation implementation *
+ * *
************************************************************************/
static int xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt,
xmlRelaxNGDefinePtr define);
@@ -9049,6 +9053,19 @@ xmlRelaxNGAttributeMatch(xmlRelaxNGValidCtxtPtr ctxt,
return (ret);
list = list->next;
}
+ } else if (define->type == XML_RELAXNG_CHOICE) {
+ xmlRelaxNGDefinePtr list;
+
+ list = define->nameClass;
+ while (list != NULL) {
+ ret = xmlRelaxNGAttributeMatch(ctxt, list, prop);
+ if (ret == 1)
+ return (1);
+ if (ret < 0)
+ return (ret);
+ list = list->next;
+ }
+ return (0);
} else {
TODO}
return (1);
@@ -9408,6 +9425,10 @@ xmlRelaxNGValidateInterleave(xmlRelaxNGValidCtxtPtr ctxt,
oldstate = ctxt->state;
for (i = 0; i < nbgroups; i++) {
ctxt->state = xmlRelaxNGCopyValidState(ctxt, oldstate);
+ if (ctxt->state == NULL) {
+ ret = -1;
+ break;
+ }
group = partitions->groups[i];
if (lasts[i] != NULL) {
last = lasts[i]->next;
@@ -10842,9 +10863,9 @@ xmlRelaxNGCleanPSVI(xmlNodePtr node) {
return;
}
/************************************************************************
- * *
- * Validation interfaces *
- * *
+ * *
+ * Validation interfaces *
+ * *
************************************************************************/
/**
diff --git a/result/HTML/53867.html b/result/HTML/53867.html
new file mode 100644
index 0000000..f4902af
--- /dev/null
+++ b/result/HTML/53867.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<style>
+.......
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+</style>
+</head>
+</html>
diff --git a/result/HTML/53867.html.err b/result/HTML/53867.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/53867.html.err
diff --git a/result/HTML/53867.html.sax b/result/HTML/53867.html.sax
new file mode 100644
index 0000000..81a9f15
--- /dev/null
+++ b/result/HTML/53867.html.sax
@@ -0,0 +1,26 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(style)
+SAX.cdata(
+.......
+....................., 1000)
+SAX.cdata(.............................., 1000)
+SAX.cdata(.............................., 1000)
+SAX.cdata(................
+............., 977)
+SAX.endElement(style)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/Down.html b/result/HTML/Down.html
new file mode 100644
index 0000000..8489033
--- /dev/null
+++ b/result/HTML/Down.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+ <title>This service is temporary down</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<h1 align="center">Sorry, this service is temporary down</h1>
+We are doing our best to get it back on-line,
+
+<p>The W3C system administrators</p>
+</body>
+</html>
diff --git a/result/HTML/Down.html.err b/result/HTML/Down.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/Down.html.err
diff --git a/result/HTML/Down.html.sax b/result/HTML/Down.html.sax
new file mode 100644
index 0000000..c23c332
--- /dev/null
+++ b/result/HTML/Down.html.sax
@@ -0,0 +1,37 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+ , 3)
+SAX.startElement(title)
+SAX.characters(This service is temporary down, 30)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.startElement(body, bgcolor='#FFFFFF')
+SAX.characters(
+, 1)
+SAX.startElement(h1, align='center')
+SAX.characters(Sorry, this service is tempora, 37)
+SAX.endElement(h1)
+SAX.characters(
+We are doing our best to get , 48)
+SAX.startElement(p)
+SAX.characters(The W3C system administrators, 29)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/attrents.html b/result/HTML/attrents.html
new file mode 100644
index 0000000..f7feaa6
--- /dev/null
+++ b/result/HTML/attrents.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<body bgcolor="#FFFFFF">
+ <a href="mailto:katherine@cbfanc.org,website@bis.doc.gov?subject=South%20San%20Francisco%20BIS%20Seminar%20-%20October%2016th"></a><br>
+</body>
+</html>
diff --git a/result/HTML/attrents.html.err b/result/HTML/attrents.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/attrents.html.err
diff --git a/result/HTML/attrents.html.sax b/result/HTML/attrents.html.sax
new file mode 100644
index 0000000..c1cfb42
--- /dev/null
+++ b/result/HTML/attrents.html.sax
@@ -0,0 +1,21 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(body, bgcolor='#FFFFFF')
+SAX.characters(
+ , 18)
+SAX.startElement(a, href='mailto:katherine@cbfanc.org,website@bis.doc.gov?subject=South San Francisco BIS Seminar - October 16th')
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 2)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 2)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 2)
+SAX.endDocument()
diff --git a/result/HTML/autoclose.html b/result/HTML/autoclose.html
new file mode 100644
index 0000000..cacf4ed
--- /dev/null
+++ b/result/HTML/autoclose.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html><body>
+<hr>
+</body></html>
diff --git a/result/HTML/autoclose.html.err b/result/HTML/autoclose.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/autoclose.html.err
diff --git a/result/HTML/autoclose.html.sax b/result/HTML/autoclose.html.sax
new file mode 100644
index 0000000..5a45627
--- /dev/null
+++ b/result/HTML/autoclose.html.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/autoclose2.html b/result/HTML/autoclose2.html
new file mode 100644
index 0000000..1ac8f99
--- /dev/null
+++ b/result/HTML/autoclose2.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html><body><p>toto
+</p></body></html>
diff --git a/result/HTML/autoclose2.html.err b/result/HTML/autoclose2.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/autoclose2.html.err
diff --git a/result/HTML/autoclose2.html.sax b/result/HTML/autoclose2.html.sax
new file mode 100644
index 0000000..d1e6abb
--- /dev/null
+++ b/result/HTML/autoclose2.html.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.startElement(p)
+SAX.characters(toto
+, 5)
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/autoclose3.html b/result/HTML/autoclose3.html
new file mode 100644
index 0000000..13461aa
--- /dev/null
+++ b/result/HTML/autoclose3.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html><body><ul>
+<li>item 1
+</li>
+<li>item 2
+</li>
+</ul></body></html>
diff --git a/result/HTML/autoclose3.html.err b/result/HTML/autoclose3.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/autoclose3.html.err
diff --git a/result/HTML/autoclose3.html.sax b/result/HTML/autoclose3.html.sax
new file mode 100644
index 0000000..25e06ea
--- /dev/null
+++ b/result/HTML/autoclose3.html.sax
@@ -0,0 +1,19 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.startElement(ul)
+SAX.characters(
+, 1)
+SAX.startElement(li)
+SAX.characters(item 1
+, 7)
+SAX.endElement(li)
+SAX.startElement(li)
+SAX.characters(item 2
+, 7)
+SAX.endElement(li)
+SAX.endElement(ul)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/cf_128.html b/result/HTML/cf_128.html
new file mode 100644
index 0000000..e2261ea
--- /dev/null
+++ b/result/HTML/cf_128.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<title>gnome-xml push mode bug</title>
+</head>
+<body>
+
+<table border="4">
+ <tr>
+ <td bgcolor="white">
+ Foo1
+ <table border="4">
+ <tr>
+ <td>Foo2<p></p>
+<p></p>
+</td>
+</tr>
+</table>
+ </td>
+ <td bgcolor="blue">Foo3</td>
+ </tr>
+ </table>
+ </body>
+</html>
diff --git a/result/HTML/cf_128.html.err b/result/HTML/cf_128.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/cf_128.html.err
diff --git a/result/HTML/cf_128.html.sax b/result/HTML/cf_128.html.sax
new file mode 100644
index 0000000..8f66a42
--- /dev/null
+++ b/result/HTML/cf_128.html.sax
@@ -0,0 +1,69 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(HTML, -//W3C//DTD HTML 4.0 Transitional//EN, http://www.w3.org/TR/REC-html40/strict.dtd)
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(gnome-xml push mode bug, 23)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+
+, 2)
+SAX.startElement(table, border='4')
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td, bgcolor='white')
+SAX.characters(
+ Foo1
+ , 8)
+SAX.startElement(table, border='4')
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td)
+SAX.characters(Foo2, 4)
+SAX.startElement(p)
+SAX.endElement(p)
+SAX.startElement(p)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(table)
+SAX.characters(
+ , 5)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.startElement(td, bgcolor='blue')
+SAX.characters(Foo3, 4)
+SAX.endElement(td)
+SAX.characters(
+ , 4)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.endElement(table)
+SAX.characters(
+ , 3)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 3)
+SAX.endDocument()
diff --git a/result/HTML/doc2.htm b/result/HTML/doc2.htm
new file mode 100644
index 0000000..4f959e9
--- /dev/null
+++ b/result/HTML/doc2.htm
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- saved from url=(0016)http://intranet/ --><!-- BEGIN Naviscope Javascript --><html>
+<head>
+<title>Welcome to Copernic.com</title>
+<script language="javascript">
+ NS_ActualOpen=window.open;
+ function NS_NullWindow(){this.window;}
+ function NS_NewOpen(url,nam,atr){return(new NS_NullWindow());}
+ window.open=NS_NewOpen;
+</script>
+<!-- END Naviscope Javascript --><!-- saved from url=(0027)http://www.agents-tech.com/ -->
+<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+<meta content="Copernic.com Inc. develops innovative agent technology solutions to efficiently access and manage the overwhelming quantity of information available on the Internet and intranets." name="DESCRIPTION">
+<meta content="agent,technology,intranet,extranet,management,filtering,ranking,solution,service,intelligent,intelligence,client,server,architecture,developer,development,information,telecommunication,announcement,press,product,profile,contact,multi-agent,meta-search,metasearch,multi-thread,mobile,wireless,shopping,robot,PCS,Copernic,engine,toolkit,CDK,EDK" name="KEYWORDS">
+<meta content="MSHTML 5.00.3103.1000" name="GENERATOR">
+</head>
+<frameset border="false" cols="172,*" frameborder="0" framespacing="0">
+<frame marginheight="0" marginwidth="0" name="left" noresize scrolling="no" src="doc2_files/side.htm" target="rtop">
+<frameset rows="43,*">
+<frame marginheight="0" marginwidth="0" name="rtop" noresize scrolling="no" src="doc2_files/top.htm" target="rbottom">
+<frame name="rbottom" noresize src="doc2_files/contents.htm" target="_top">
+</frameset>
+<noframes>
+
+ <body bgcolor="#FFFFFF" text="#000000" link="#000080" vlink="#000080" alink="#000080" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
+ <p>This page uses frames, but your browser doesn't support them.</p>
+ </body>
+ </noframes>
+</frameset>
+</html>
diff --git a/result/HTML/doc2.htm.err b/result/HTML/doc2.htm.err
new file mode 100644
index 0000000..5ac09cd
--- /dev/null
+++ b/result/HTML/doc2.htm.err
@@ -0,0 +1,3 @@
+./test/HTML/doc2.htm:10: HTML parser error : Misplaced DOCTYPE declaration
+<!-- END Naviscope Javascript --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Tra
+ ^
diff --git a/result/HTML/doc2.htm.sax b/result/HTML/doc2.htm.sax
new file mode 100644
index 0000000..7cbbc51
--- /dev/null
+++ b/result/HTML/doc2.htm.sax
@@ -0,0 +1,69 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(HTML, -//W3C//DTD HTML 4.0 Transitional//EN, )
+SAX.comment( saved from url=(0016)http://intranet/ )
+SAX.comment( BEGIN Naviscope Javascript )
+SAX.startElement(html)
+SAX.startElement(head)
+SAX.startElement(title)
+SAX.characters(Welcome to Copernic.com, 23)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(script, language='javascript')
+SAX.cdata(
+ NS_ActualOpen=windo, 194)
+SAX.endElement(script)
+SAX.ignorableWhitespace(
+, 1)
+SAX.comment( END Naviscope Javascript )
+SAX.error: Misplaced DOCTYPE declaration
+SAX.internalSubset(HTML, -//W3C//DTD HTML 4.0 Transitional//EN, )
+SAX.comment( saved from url=(0027)http://www.agents-tech.com/ )
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, content='text/html; charset=iso-8859-1', http-equiv='Content-Type')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, content='Copernic.com Inc. develops innovative agent technology solutions to efficiently access and manage the overwhelming quantity of information available on the Internet and intranets.', name='DESCRIPTION')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, content='agent,technology,intranet,extranet,management,filtering,ranking,solution,service,intelligent,intelligence,client,server,architecture,developer,development,information,telecommunication,announcement,press,product,profile,contact,multi-agent,meta-search,metasearch,multi-thread,mobile,wireless,shopping,robot,PCS,Copernic,engine,toolkit,CDK,EDK', name='KEYWORDS')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, content='MSHTML 5.00.3103.1000', name='GENERATOR')
+SAX.endElement(meta)
+SAX.endElement(head)
+SAX.startElement(frameset, border='false', cols='172,*', frameborder='0', framespacing='0')
+SAX.startElement(frame, marginheight='0', marginwidth='0', name='left', noresize, scrolling='no', src='doc2_files/side.htm', target='rtop')
+SAX.endElement(frame)
+SAX.startElement(frameset, rows='43,*')
+SAX.startElement(frame, marginheight='0', marginwidth='0', name='rtop', noresize, scrolling='no', src='doc2_files/top.htm', target='rbottom')
+SAX.endElement(frame)
+SAX.startElement(frame, name='rbottom', noresize, src='doc2_files/contents.htm', target='_top')
+SAX.endElement(frame)
+SAX.endElement(frameset)
+SAX.startElement(noframes)
+SAX.characters(
+
+ , 4)
+SAX.startElement(body, bgcolor='#FFFFFF', text='#000000', link='#000080', vlink='#000080', alink='#000080', topmargin='0', leftmargin='0', marginheight='0', marginwidth='0')
+SAX.characters(
+ , 3)
+SAX.startElement(p)
+SAX.characters(This page uses frames, but you, 61)
+SAX.endElement(p)
+SAX.characters(
+ , 3)
+SAX.endElement(body)
+SAX.characters(
+ , 3)
+SAX.endElement(noframes)
+SAX.endElement(frameset)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/doc3.htm b/result/HTML/doc3.htm
new file mode 100644
index 0000000..e9d5e44
--- /dev/null
+++ b/result/HTML/doc3.htm
@@ -0,0 +1,579 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- saved from url=(0025)http://bp6.gamesquad.net/ --><!-- BEGIN Naviscope Javascript --><html>
+<head>
+<title>BP6.com #1 online resource for the BP6 Mobo....</title>
+<script language="javascript">
+ NS_ActualOpen=window.open;
+ function NS_NullWindow(){this.window;}
+ function NS_NewOpen(url,nam,atr){return(new NS_NullWindow());}
+ window.open=NS_NewOpen;
+</script>
+<!-- END Naviscope Javascript --><!--last modified on Tuesday, February 22, 2000 11:47 PM -->
+<meta content="text/html;CHARSET=iso-8859-1" http-equiv="Content-Type">
+<meta content="Tim" name="Author">
+<style type="text/css">A.nav {
+ COLOR: #003399; TEXT-DECORATION: none
+}
+A.nav:hover {
+ COLOR: #3366cc; TEXT-DECORATION: underline
+}
+</style>
+
+<script language="JavaScript">
+<!-- Idea by: Nic Wolfe (Nic@TimelapseProductions.com) -->
+<!-- Web URL: http://fineline.xs.mw -->
+
+<!-- This script and many more are available free online at -->
+<!-- The JavaScript Source!! http://javascript.internet.com -->
+
+<!-- Begin
+function popUp(URL) {
+day = new Date();
+id = day.getTime();
+eval("page" + id + " = window.open(URL, '" + id + "', 'toolbars=0, scrollbars=0, location=0, statusbars=0, menubars=0, resizable=0, width=145, height=250');");
+}
+// End -->
+</script>
+
+<meta content="MSHTML 5.00.3103.1000" name="GENERATOR">
+</head>
+<body alink="red" bgcolor="black" link="red" text="white" vlink="red">
+<p>
+</p>
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="0" width="80%">
+ <tbody>
+ <tr>
+ <td valign="top" width="31"><a href="http://bp6.gamesquad.net/"><img align="bottom" border="0" height="74" src="doc3_files/logo.gif" width="252"></a></td>
+ <td align="left" bgcolor="#000000">
+<img height="15" src="doc3_files/spacer.gif" width="15"><!-- START GAMESQUAD.NET IFRAME RICH MEDIA CODE --> <!-- © 2000 GameSquad.net All Rights Reserved. --><iframe border="0" frameborder="no" height="60" marginheight="0" marginwidth="0" scrolling="no" src="doc3_files/adcycle.htm" width="468">
+<a href="http://ads.gamesquad.net/addclick.exe/adclick.cgi?REGION=game%7Ctech%7Cent&amp;id=1" target="_top"><img src="http://ads.gamesquad.net/addclick.exe/adcycle.cgi?group=52&amp;media=1&amp;id=1" width="468" height="60" border="0" alt="GSN ROS Ad"></a>
+</iframe><!-- END GAMESQUAD.NET IFRAME RICH MEDIA CODE --><br><img height="15" src="doc3_files/spacer.gif" width="400"> </td>
+</tr>
+ <tr>
+ <td bgcolor="#003399" colspan="2">
+ <p align="right"><img align="right" border="0" height="18" hspace="0" src="doc3_files/trcorner.gif" width="20"><img align="left" border="0" height="18" hspace="0" src="doc3_files/tlcorner.gif" width="20"><font face="Verdana" size="2">Monday, July 31st, 2000</font> </p>
+</td>
+</tr>
+ <tr>
+ <td colspan="2">
+ <table bgcolor="#003399" border="0" cellpadding="0" cellspacing="4" width="100%"><tbody>
+ <tr>
+ <td bgcolor="#666666" width="100%">
+ <center>
+ <p>
+ </p>
+<table bgcolor="black" border="0" cellpadding="0" cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td background="doc3_files/hscan.gif" bgcolor="#666666" width="100%">
+<img height="1" src="doc3_files/spacer.gif" width="738"><br>
+ <center>
+ <table border="0" cellpadding="2" cellspacing="0" width="91%">
+ <tbody>
+ <tr>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://bp6.gamesquad.net/specs.phtml"><img align="bottom" alt="Abit BP6 Motherboard specification and information." border="0" height="45" src="doc3_files/bp6icon.gif" width="70"></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/specs.phtml"><font color="white" face="Verdana" size="1">BP6 Specs</font></a>
+ </p>
+</td>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://bp6.gamesquad.net/bxcool.phtml"><img align="bottom" alt="How to cool the BX Chipset on your BP6." border="0" height="45" src="doc3_files/bxcool.gif" width="70"></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/uc.phtml"><font color="white" face="Verdana" size="1">BX Cooling</font></a>
+ </p>
+</td>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://bp6.gamesquad.net/contest.phtml"><img align="bottom" alt="The U;timate Gaming Contest - Coming Soon!" border="0" height="45" src="doc3_files/ugmcontest.gif" width="70"></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/contest.phtml"><font color="white" face="Verdana" size="1">UGM Contest</font></a>
+ </p>
+</td>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://bp6.gamesquad.net/uc.phtml"><img align="bottom" alt="Cooling &amp; Heatsink review for the BP6." border="0" height="45" src="doc3_files/alpha.gif" width="70"></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/uc.phtml"><font color="white" face="Verdana" size="1">Heatsinks</font></a>
+ </p>
+</td>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://bp6.gamesquad.net/101.phtml"><img align="bottom" alt="BP6 101 - Class is now in session. Welcome newbies!" border="0" height="45" src="doc3_files/bp6101.gif" width="70"></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/101.phtml"><font color="white" face="Verdana" size="1">BP6 101</font></a>
+ </p>
+</td>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://bp6.gamesquad.net/win2k_install.phtml"><img align="bottom" alt="Install guide for installing Windows 2000 on the BP6 " border="0" height="45" src="doc3_files/win2kht.gif" width="70"></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/win2k_install.phtml"><font color="white" face="Verdana" size="1">Win2k Install</font></a>
+ </p>
+</td>
+ <td valign="top" width="15%">
+ <p align="center"><a href="http://www.gentus.com/"><img align="bottom" alt="Taking a first look at the Abit Linux release called " border="0" height="45" src="doc3_files/gentusbox.gif" width="70" gentus></a><br><a href="http://www.gentus.com/"><font color="white" face="Verdana" size="1">Gentus</font></a>
+ </p>
+</td>
+</tr>
+</tbody>
+</table>
+</center>
+</td>
+</tr>
+</tbody>
+</table>
+</center>
+</td>
+</tr>
+</tbody></table>
+</td>
+</tr>
+</tbody>
+</table>
+<table bgcolor="#003399" border="0" cellspacing="6" width="80%">
+ <tbody>
+ <tr>
+ <td bgcolor="black" valign="top" width="10%">
+ <table border="0" cellpadding="3" cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td width="100%">
+<img height="1" src="doc3_files/spacer.gif" width="111"><br><b><font color="yellow" face="Verdana" size="2">REVIEWS</font></b><font face="Verdana" size="2"><br>
+ <hr align="center">
+ </font><a href="http://bp6.gamesquad.net/bp6reviews.phtml"><font color="white" face="Verdana" size="1">BP6 Reviews</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/h2o.phtml"><font color="white" face="Verdana" size="1">BP6 Watercooling</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/bxcool.phtml"><font color="white" face="Verdana" size="1">BX Chipset Cooling</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/benchmark.phtml"><font color="white" face="Verdana" size="1">Benchmarks</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/bp6fsb.phtml"><font color="white" face="Verdana" size="1">BP6FSB Utility</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/powerleap.phtml"><font color="white" face="Verdana" size="1">PowerLeap NEO S370</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/seti.phtml"><font color="white" face="Verdana" size="1">SETI on the BP6</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/orbs.phtml"><font color="white" face="Verdana" size="1">Golden Orbs I</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/orbs/orbs2.phtml"><font color="white" face="Verdana" size="1">Golden Orbs II</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/Q6fix.phtml"><font color="white" face="Verdana" size="1">VTT Solution</font></a><font face="Verdana" size="1"><br><br></font><b><font color="yellow" face="Verdana" size="2">NAVIGATE</font></b><font color="yellow" face="Verdana" size="2">
+ <hr align="center">
+ </font><a href="http://www.bp6.com/"><font color="white" face="Verdana" size="1">News</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/chat.phtml"><font color="white" face="Verdana" size="1">Online Text Chat</font></a><font face="Verdana" size="1"><br></font><a href="javascript:popUp('chat_popup.htm')"><font color="white" face="Verdana" size="1">Voice Chat</font></a><br><a href="http://216.247.220.192/Forum"><font color="white" face="Verdana" size="1">Messageboard</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/cooling"><font color="white" face="Verdana" size="1">Temp. Converter</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/uc.phtml"><font color="white" face="Verdana" size="1">Picture Gallery</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/bios.phtml"><font color="white" face="Verdana" size="1">Latest BIOS</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/files/"><font color="white" face="Verdana" size="1">Drivers &amp; Files</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/uc.phtml"><font color="white" face="Verdana" size="1">UGM of the week</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/contest.phtml"><font color="white" face="Verdana" size="1">BP6 Contest</font></a><font face="Verdana" size="1"><br><br></font><b><font color="yellow" face="Verdana" size="2">OTHER STUFF</font></b><font color="yellow" face="Verdana" size="2">
+
+ <hr align="center">
+ </font><a href="http://bp6.gamesquad.net/whois.phtml"><font color="white" face="Verdana" size="1">Who is Tim?</font></a><font face="Verdana" size="1"><br></font><a href="mailto:tim@bp6.com"><font color="white" face="Verdana" size="1">Contact BP6.com</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/uc.phtml"><font color="white" face="Verdana" size="1">Affiliates Section</font></a><font face="Verdana" size="1"><br></font><a href="http://bp6.gamesquad.net/uc.phtml"><font color="white" face="Verdana" size="1">Sponsors Section <br></font></a><a href="http://bp6.gamesquad.net/links.phtml"><font color="white" face="Verdana" size="1">Links<br><br></font></a><b><font color="yellow" face="Verdana" size="2">PC SPECIALS</font></b><font color="yellow" face="Verdana" size="2">
+ <hr align="center">
+ </font><a href="http://bp6.gamesquad.net/specials.phtml"><font color="white" face="Verdana" size="1">Vendor
+ Specials<br><br></font></a><br><b><font color="yellow" face="Verdana" size="2">Pic of the day</font></b>
+ <hr>
+
+ <center>
+ <p align="center"><font face="Verdana, Arial, Helvetica" size="1"><a href="http://bp6.gamesquad.net/cgi-bin/schlabo/potd.pl"><img alt="No picture is available for today." border="0" src="doc3_files/potd_na_110x83.gif"></a> </font></p>
+</center>
+<br>
+ <center></center>
+<br><!--<A HREF="code:javascript:ID_FTPWebView.InvokeHelp()"><FONT SIZE="1" COLOR="white" FACE="Verdana">FTP Help</FONT></A>-->
+</td>
+</tr>
+</tbody>
+</table>
+</td>
+ <td bgcolor="white" valign="top" width="80%">
+<img height="1" src="doc3_files/spacer.gif" width="490"><br>
+ <center>
+ <p>
+ </p>
+<table bgcolor="white" border="0" cellpadding="10" cellspacing="0" height="100%" width="100%">
+ <tbody>
+ <tr>
+ <td bgcolor="white" valign="top" width="100%">
+ <center>
+<a href="http://www.encounter2001.com/" target="_blank"><img border="0" height="60" src="doc3_files/banner2.gif" width="468"></a>
+ </center>
+<br><a name="news_top"></a><font color="#003366" face="verdana,arial" size="2"><b>Headlines</b></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem965012956,78924,">Chat
+ with ABIT - 8:09PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964766837,26344,">Fixed
+ wallpaper - 11:47PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964762841,25865,">Seti
+ update - 10:40PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964732235,45502,">Judge
+ gives Napster the Boot!! - 2:10PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964713289,83675,">Ram
+ Sinks.. more cooling for small places. - 8:54AM
+ PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964671589,7831,">is
+ it [H]ard? - 9:19PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964644047,60218,">WiLd
+ CaSe!! - 1:40PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964631110,84122,">What
+ the heck is a Peltier?!?! - 10:05AM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964587833,74573,">HELLO
+ EVERYONE!!! - 10:03PM PDT</a></font><br><font face="arial" size="1"><a class="nav" href="http://bp6.gamesquad.net/index.phtml#newsitem964429577,13375,">BP6
+ Q3 server up and running.. - 2:06AM PDT</a></font><br><br><!-- NP v3.7.5 --><a name="newsitem965012956,78924,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Sunday,
+ July 30, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">Chat with
+ ABIT</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 8:09PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/965012956,78924,.html"><img border="0" src="doc3_files/comments.gif">0 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">I&#8217;m slacking a little. All game no
+ work makes Holodeck2 a happy boy :-)<br><br>Wallpaper update: I got
+ off my lazy ass and redid the 1280x1024 wall paper, now it has the 2
+ celerons.<br><br><b><a href="http://fullon3d.com/chat/abit/" target="3d">Fullon3d had a live chat with that Eric guy from Abit.
+ </a></b>Submitted by: MJS<br><br>Here&#8217;s a little clip:<br>[Falcon]
+ BP6-2??<br>[EricBoeing] We already have a micro ATX dual flip-chip
+ board<br>[EricBoeing] but it's OEM only<br>[EricBoeing] the full ATX
+ version should be out Septemberish<br></font><br><br><a name="newsitem964766837,26344,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Thursday,
+ July 27, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">Fixed
+ wallpaper</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 11:47PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/964766837,26344,.html"><img border="0" src="doc3_files/comments.gif">5 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2"><b>Get them now!!</b><br>This is a
+ fixed bp6 wallpaper. In all the popular flavors, err...
+ resolutions.<br><img height="180" src="doc3_files/3-800.jpg" width="240"><br>It's still the Intels Inside one with a spelling
+ change; from "Mothboard" to "Motherboard"<br><br>Thanks to Matt for
+ pointing that out to me.<br>I would also like to thank Kevin for
+ hosting my last batch and Radu for the previous "DUEL"/"DUAL"
+ error.<br>And 1 more person, THANK YOU TIM for letting me borrow
+ your server space ;-)<br><br>If you need a weird resolution, feel
+ free to <a href="mailto:Holodeck2@home.com">e-mail</a> me requesting
+ for one.<br>If you have ideas or more errors to point out, <a href="mailto:Holodeck2@home.com">mailto:Holodeck2@home.com</a><br><br><a href="doc3_files/3-800.jpg" target="800">800x600 </a><br><a href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1024.jpg" target="800">1024x768 </a><br><a href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1152.jpg" target="800">1152x864 </a><br><a href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1280x1024.jpg" target="800">1280x1024 </a><br><a href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1600.jpg" target="800">1600x1200 </a><br>
+ <p>Enjoy :-)<br>
+ </p>
+<p><a href="mailto:Holodeck2@home.com">Holodeck2,</a><br>[H]ard at
+ work on the Brand Spanking New Wallpaper.<br></p></font><br><br><a name="newsitem964762841,25865,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">Seti update</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 10:40PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/964762841,25865,.html"><img border="0" src="doc3_files/comments.gif">5 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2"><img height="54" src="doc3_files/setiupdate.jpg" width="400"><br>You like the
+ pic?<br><br>Bp6 User Group Update:<br>Completed 61531
+ units!!<br><b>#168 on Top 200 All Groups</b> (Going to pass CLRC in
+ a few days)<br><b>#74 on Top 200 Teams</b> (Gaining fast on
+ Starfleet)<br><br>We are flying though at the speed of light (may be
+ a little slower).<br>Good job everyone!!<br><br>Check this page at
+ least once a day for new stuff :-)<br></font><br><br><a name="newsitem964732235,45502,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">Judge gives Napster the
+ Boot!!</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 2:10PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/964732235,45502,.html"><img border="0" src="doc3_files/comments.gif">0 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Good afternoon for everyone living in
+ EST. I was going to post today morning but I didn't. Here's my
+ story:<br>I woke up and thought about posting something but I
+ decided to wax my car before the sun came up (draw your own
+ conclusions), wax on, wax off, wax on,..., did that for about an
+ hour. Then I saw the sun rise (Aaahh I'm melting... not). I sat in
+ front of my comp and started to search for good news to post. Saw
+ that a stoopid judge temporally shuts down napster. Goes to room and
+ cry. and now I'm here :-)<br><br><a href="http://www.msnbc.com/news/437532.asp" target="Judge vs Napster">Judge shuts Napster down
+ <p><img height="143" src="doc3_files/669915.jpg" width="200"></p></a><br>Check out the Goofy guy in the suit<br>He's Sean
+ Fanning, founder of Napster.<br><br>Got news?? <a href="mailto:Holodeck2@home.com">mailto:Holodeck2@home.com</a><br></font><br><br><a name="newsitem964713289,83675,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">Ram Sinks.. more cooling for small
+ places.</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:tim@bp6.com">tim</a> @ 8:54AM PDT</small>  <a href="http://bp6.gamesquad.net/news/964713289,83675,.html"><img border="0" src="doc3_files/comments.gif">0 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Need some cooling for your Videocard
+ memory to get a little extra overclockability and FPS? <a href="http://www.overclockershideout.com/RamSinks.html" target="_BLANK">Overclockers Hiedout Ram Sinks</a> They just notified
+ me of their new design.<br><img border="1" src="doc3_files/ramsink.jpg"></font><br><br><a name="newsitem964671589,7831,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Wednesday, July 26,
+ 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">is it
+ [H]ard?</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 9:19PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/964671589,7831,.html"><img border="0" src="doc3_files/comments.gif">0 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Big heatsinks are good, very good. The
+ bigger the better.<br>You can never can have a too big of heatsink
+ on a small chip (CPU, GPU, CHIPSET, etc)<br><br><img height="173" src="doc3_files/voodooside2.jpg" width="230"><br>My overclocked
+ Voodoo3 2000 with a BIG mofo heatsink on top.<br>Peltier and
+ watercooling next up :-)<br>(if you pry off the heatsink you void
+ the warranty )<br><br>it was originally posted on <a href="http://www.hardocp.com/">[H]ardOCP </a><br>I&#8217;m not only a
+ BP6er but also a [H]ardOCPer<br></font><br><br><a name="newsitem964644047,60218,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">WiLd CaSe!!</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 1:40PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/964644047,60218,.html"><img border="0" src="doc3_files/comments.gif">8 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Now this person really knows how to
+ keep his case cool!!<br>Addin an 18" Fan!! WOW!!<br><br><a href="http://www.envador.com/Photos/PVCII/" target="_blank"><img src="doc3_files/TN_OpenedUp1.jpg"></a><br>Click to go to his
+ site.<br></font><br><br><a name="newsitem964631110,84122,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">What the heck is a
+ Peltier?!?!</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 10:05AM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/964631110,84122,.html"><img border="0" src="doc3_files/comments.gif">6 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">This is for all you people who wanted
+ to know what a peltier is.<br><br>The quest fo the Perfect
+ Peltier<br><a href="http://www.tweakmax.com/html/peltier/peltier-1.cfm" target="_blank"><img src="doc3_files/peltier.jpg"></a> <br>Thanks to
+ <a href="http://www.tweakmax.com/" target="_blank">TweakMax.com</a>
+ <br><br>Note: Today morning when I woke up I saw my whole screen
+ cluttered with a bunch of IMs!! I live in the USA on EST. If you
+ live somewhere else please check the time in my area. for example:
+ If you live in Europe and IM me in the morning your time I would be
+ sleeping it would be like 4 in the morning here. Just to let you
+ know <img src="doc3_files/smile.gif"><br>I'm not angry at anyone...
+ good thing I have a long fuse <img src="doc3_files/tongue.gif"><br></font><br><br><a name="newsitem964587833,74573,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Tuesday,
+ July 25, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">HELLO
+ EVERYONE!!!</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:Holodeck@bp6.com">Holodeck2</a> @ 10:03PM
+ PDT</small>  <br><font color="black" face="Arial" size="2">Hello
+ everyone, Woohoo!! I'm on!!<br>Who is this Holodeck2 person
+ anyways?!?! Read on :-)<br>I&#8217;m a regular on the bp6 messageboard,
+ trying to help people out with their problems.<br>I&#8217;m the
+ self-proclaimed bp6 cooling expert, If you have a cooling idea, I&#8217;ve
+ probably already done it and can offer some incite.<br>My computer
+ is always on so you can contact me whenever... problem is, I'm not
+ always in front of it. I'll try to update this page and keep
+ everyone happy :-)<br>Any Questions or comments, you can either
+ contact me or post it on the messageboard.<br><br>Ways to contact
+ me.<br>E-mail: <a href="mailto:Holodeck2@home.com">Holodeck2@home.com</a> (All E-mails
+ will be answered in 24 hours or less, I guarantee it.)<br>When you
+ write me an e-mail please put in the subject line "BP6" then the
+ rest of your subject so my e-mail program can sort it, thanks<br><a href="http://www.aol.com/aim">AIM: </a>Holodeck2 (instant response
+ if I&#8217;m in front of my comp and not trying to frag someone)<br><a href="http://www.icq.com/download">ICQ: </a>82640218 (rarely
+ on)<br><br>P.S. If someone named &#8220;Digital Vortex&#8221; on either Quake 3
+ or 2 frags you, it&#8217;s probably me. ;-)<br></font><br><br><a name="newsitem964429577,13375,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Monday,
+ July 24, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">BP6 Q3 server up and
+ running..</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:tim@bp6.com">tim</a> @ 2:06AM PDT</small>  <a href="http://bp6.gamesquad.net/news/964429577,13375,.html"><img border="0" src="doc3_files/comments.gif">3 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Setup a Q3 server for anyone wanting
+ to practice in preparation for Quakecon.. Connect to bp6.dyndns.org
+ default port. (SERVER: BP6 system, 256 MB ram, celeron 600 on a T3
+ connection)... Will be moved to another BP6 server eventually. This
+ is only a temporary test of the system and net connection. <br>(BTW-
+ there are a few bot's running around in there..)</font><br><br><a name="newsitem964425184,95812,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">BIOS Savior to the
+ rescue....</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:tim@bp6.com">tim</a> @ 12:53AM PDT</small>  <a href="http://bp6.gamesquad.net/news/964425184,95812,.html"><img border="0" src="doc3_files/comments.gif">2 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Do you sweat during the BIOS flashing
+ procedure on your BP6 mobo? If so then this little gadget maybe
+ worth a first look. It's called the "<b>RD1 BIOS Savior</b>" and it
+ plugs in between your BIOS ROM and the BIOS ROM socket on your mobo.
+ This device will backup your BIOS and and allow you to recover your
+ BIOS in the event that your flashing session goes wrong. In the
+ event of a bad flash, just flip a switch on the RDI and boot up your
+ system, and flash again. This is also good as a failsafe in case you
+ don't believe in Virus Protecting your computer. (Thanks to Fred for
+ link)<br><a href="http://www.ioss.com.tw/eg/rd1/RD1info0004.PDF" target="_NEW">Manufacturers Brochure</a> (PDF Format)<br><a href="http://192.216.185.10/mwave/doc/A06950.html" target='_BLANK"'>Another info page</a><br><a href="http://192.216.185.10/mwave/ProdMB-AC-MW.hmx?UID=&amp;CID=&amp;updepts=MB&amp;DNAME=%3Cb%3EMotherboards%3C%2Fb%3E&amp;Back=ProdMB-AC-MW.hmx?" target="_BLANK">Available for about $20</a><br><br><img src="doc3_files/rd1.jpg"></font><br><br><a name="newsitem963875853,12731,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Monday,
+ July 17, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">How To
+ Overclock</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 4:17PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963875853,12731,.html"><img border="0" src="doc3_files/comments.gif">3 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">For those of you who are new to
+ overclocking, this guide will explain to you how to overclock, and
+ what some of the terms are. Like 'FSB' (what the heck is that!?
+ :0))<br><br><a href="http://netkills.qgl.org/a_oc_comp.shtml" target="_blank">How To Overclock</a> </font><br><br><a name="newsitem963875485,23353,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">The Cardcooler
+ XT</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 4:11PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963875485,23353,.html"><img border="0" src="doc3_files/comments.gif">1 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Wow! I am impressed! Nevermind keeping
+ the CPU's cool... Keep your whole board cool!<br><br><i>Even if your
+ not overclocking your system (or planning on it), this unit will
+ provide system stability and longevity. What would happen one day of
+ your GeForce or CPU fan went dead? You can also think of this
+ cooling unit as a backup to essential cooling fans in your
+ system.</i><br><br>Check this out!<br><br><a href="http://www.brokenpixel.com/articles/coolerXT/cardcoolerXT_1.shtml" target="_blank">http://www.brokenpixel.com/articles/coolerXT/cardcoolerXT_1.shtml</a>
+ </font><br><br><a name="newsitem963859982,88982,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">'Nerd
+ Inside'</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 11:53AM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963859982,88982,.html"><img border="0" src="doc3_files/comments.gif">1 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">We all need to have some fun
+ sometimes! Check out this little web site that sells 'nerd' clothing
+ ;) (I like the bibs in the Junior Hackerz section) :-Þ<br><br>
+ <div align="center"><a href="http://www.nerdgear.com/" target="_blank"><img border="0" src="doc3_files/nerdinside.gif"></a></div></font><br><br><a name="newsitem963819796,9688,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">Dual PSU Wiring diagram... (preview to
+ Part 1 Watercooling Project)</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:tim@bp6.com">tim</a> @ 12:43AM PDT</small>  <a href="http://bp6.gamesquad.net/news/963819796,9688,.html"><img border="0" src="doc3_files/comments.gif">11 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">When is comes to overclocking your
+ system, cooling plays a big role. Powering all of those fans in your
+ system can cause quite a strain on your PSU (Power Supply Unit).
+ Depending on the number of peripherals in your system, adding a more
+ powerfull PSU or adding a second PSU may be neccesary. For
+ watercooling and using peltiers, dedicating a second PSU to power
+ the Peltiers (TEC's) is a good idea. Here I have come up with 2
+ diagrams on how I wired dual 300 watt ATX power supply units for the
+ Blizzard BP6 watercooling project. Consider this part of Step 1.
+ More will follow this week. BTW.. hacking up your PSU's is very
+ dangerous and is not recommended unless you know what you are doing.
+ <br><br>View Diagram 1 <a href="http://bp6.gamesquad.net/images/wiring.jpg" target="_BLANK">here</a>.<br>View Diagram 2 <a href="http://bp6.gamesquad.net/images/psu2.gif" target="_BLANK">here</a>.<br><br>I used Tap-In Squeeze Connectors and
+ 22 guage wire to connect the wires. You can get them at Radio Shack
+ Part# 64-3053 or <a href="http://www.radioshack.com/ProductCatalog/ProductDetail/Index/1,2098,,00.html?SKUString1=64&amp;SKUString2=3053" target="_blank">click here</a>.</font><br><br><a name="newsitem963766655,78511,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Sunday,
+ July 16, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">RAM Overclocking?
+ Hmmmmm.</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 9:57AM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963766655,78511,.html"><img border="0" src="doc3_files/comments.gif">3 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">I know we're pretty big overclockers
+ here at BP6.Com so, this is a post of choice ;-) I've seen the
+ question in the message boards, 'why can't I overclock any higher?'
+ Well, it's not always the CPU that's holding you back... Many other
+ things need to be taken care of to overclock such as your PCI
+ devices (can they handle the higher bus speed), the actual CPU, and
+ your RAM. I'm not saying that that a high quality stick of silicon
+ will enable you to overclock your 366MHz to 1 GHZ (I wish!), but, it
+ will certainly help =)<br><br>Extreme Overclocking has tested
+ (overclocked) PC133 RAM to there full potential. Here's a quote I
+ found and the link:<br><br><i>Well, the guys at Extreme Overclocking
+ have been hard at work again with their latest review. This time
+ they have put seven 128MB PC133 memory modules through the torture
+ tests to determine their maximum overclocking potential. Which one's
+ came out on top? Read the review to find out....</i><br><br><a href="http://www.extremeoverclocking.com/reviews/memory/ram_roundup_1.html" target="_blank">Cooked RAM... Yummie</a><br><br>The
+ ÐÐ.</font><br><br><a name="newsitem963764236,76720,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">CPU
+ Guide</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 9:17AM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963764236,76720,.html"><img border="0" src="doc3_files/comments.gif">0 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">A follow up on the 'Weekly CPU
+ Prices', this guide will help you determine which cpu is best for
+ you (and your board ;-)). Sent to me by Spanky, here's the
+ link:<br><br>
+ <li><a href="http://www6.tomshardware.com/howto/00q2/000412/index.html" target="_blank">http://www6.tomshardware.com/howto/00q2/000412/index.html</a></li></font><br><br><a name="newsitem963685749,28290,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Saturday,
+ July 15, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">Weekly CPU
+ Prices</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 11:29AM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963685749,28290,.html"><img border="0" src="doc3_files/comments.gif">2 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Wow, found this very useful! Wanting
+ to buy a new CPU? Check out this detailed price list!<br><br><a href="http://www.sharkyextreme.com/hardware/weekly_cpu/" target="_blank">Click Here.</a> <br><br>Thanks Sharky
+ Extreme!</font><br><br><a name="newsitem963679881,35277,"></a><b><u><font color="#003366" face="Verdana, Arial" size="2">Fast Wallpapers</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 9:51AM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963679881,35277,.html"><img border="0" src="doc3_files/comments.gif">0 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">FAST-MHz has released some wallpapers!
+ <a href="http://64.29.18.111/wallpaper/index.html" target="_blank">Click here</a> to view them. They come in sizes
+ 800x600 1024x768 and 1152x864. If you have your desktop set at a
+ larger size, just use the 'stretch' function in desktop properties
+ instead of 'center'. Works great.<br><br>In other news, we want to
+ finnish off all the sections at BP6.Com so, to start, we're going to
+ work on the <a href="http://bp6.gamesquad.net/uc.phtml" target="_blank">Picture Gallery</a>. To help us out, you can send in
+ all your cool, wierd, crazy pics that you may have to: <a href="mailto:thedaredevil@bp6.com">thedaredevil@bp6.com</a>. (The
+ topic being computers, duh! :0) And no... I don't want to recieve
+ any porno piccies in my mailbox! I have enough of those!) Kidding
+ guys.<br><br>Okay, that's all for now.<br><br>The
+ ÐÐ.</font><br><br><a name="newsitem963619505,3764,"></a>
+ <table bgcolor="#003399" width="100%">
+ <tbody>
+ <tr>
+ <td><font color="#ffffff" face="Verdana,arial" size="2"><b>Friday,
+ July 14, 2000</b></font></td>
+</tr>
+</tbody>
+</table>
+<br><!--<hr noshade width=100%>--><b><u><font color="#003366" face="Verdana, Arial" size="2">Hey
+ There!</font></u></b><br><font color="#0066cc" face="Arial" size="1"><small>Posted by <a class="nav" href="mailto:killz@i82hq.com">DareDevil</a> @ 5:05PM
+ PDT</small>  <a href="http://bp6.gamesquad.net/news/963619505,3764,.html"><img border="0" src="doc3_files/comments.gif">7 comments</a>
+  | <a href="http://bp6.gamesquad.net/#news_top">top</a></font> <br><font color="black" face="Arial" size="2">Hey guys, just wanted to introduce
+ myself, some of you may have already met me on the BP6.com board.
+ I'll be posting up news from time to time now so, if you'd like, you
+ may send me some news to be posted if you find any ( we don't want
+ to flood Tim ;-) ).<br><br>My e-mail address is <a href="mailto:killz@i82hq.com">killz@i82hq.com</a><br><br>Ciao for
+ now.<br><br>The ÐÐ.</font><br><br>
+ </font><center><iframe frameborder="0" height="60" marginheight="0" marginwidth="0" noresize scrolling="no" src="doc3_files/ad_iframe.htm" width="468"><a href="http://ads.adflight.com/go_static.asp?asid=7708" target="_top"><img width="468" height="60" border="0" alt="Advertisement" src="http://ads.adflight.com/ad_static.asp?pid=2097&amp;sid=1881&amp;asid=7708"></a></iframe></center>
+</td>
+</tr>
+</tbody>
+</table>
+</center>
+</td>
+ <td bgcolor="silver" valign="top" width="10%">
+ <center>
+ <p>
+ </p>
+<table bgcolor="silver" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td colstart="1">
+ <center>
+<!-- <FORM ACTION="/cgi-bin/subscribe.pl" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">
+ <IMG SRC="/images/spacer.gif" WIDTH="111" HEIGHT="1"><BR>
+ <P><B><FONT SIZE="2" COLOR="#000066" FACE="Verdana">Newsletter</FONT></B><FONT SIZE="1" FACE="Verdana"><BR>
+ <INPUT TYPE="TEXT" NAME="email" SIZE="10" VALUE="ur@email.com"><BR>
+ <INPUT TYPE="HIDDEN" NAME="subscribe" SIZE="-1" VALUE="subscribe"><INPUT TYPE="IMAGE" SRC="/images/subscribe.gif" WIDTH="80"
+ HEIGHT="27" ALIGN="BOTTOM" BORDER="0"></FONT>
+ </FORM> -->
+ <form action="http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?emaillist" method="post">
+<img height="1" src="doc3_files/spacer.gif" width="111"><br><font size="1">Newsletter<br><input name="npemail" size="13" value="e-mail addr."><br><input name="npsubscribe" style="BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold" type="submit" value="Subscribe"><br><!-- <input type="submit" name="npunsubscribe" value="Unsubscribe" style="font-size: xx-small; font-family: Verdana; font-weight: bold; color: #ffffff; background-color: #000000;"> --></font>
+</form>
+<font size="1">
+ <form action="http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?search" method="post">Search news<br><input name="searchstring" size="13"><br><input name="submit" style="BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold" type="submit" value="Submit"><br><a href="http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?newsall">News
+ archive</a>
+</form></font> </center>
+</td>
+</tr>
+</tbody>
+</table>
+<!-- <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%" BGCOLOR="silver">
+ <TR>
+ <TD WIDTH="100%">
+ <P ALIGN="CENTER"><A HREF="http://www.free56k.com" target="_blank"><IMG SRC="/images/free56k.gif" WIDTH="100" HEIGHT="49"
+ ALIGN="BOTTOM" BORDER="0"></A>
+ </TD>
+ </TR>
+ </TABLE>
+-->
+ <table bgcolor="silver" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td align="middle" width="100%">
+<!-- BEGIN GoTo.com Search Box -->
+ <script language="javascript" type="text/javascript">
+ <!--
+ if ((parseInt(navigator.appVersion) >= 3)
+ && (navigator.appName != "Netscape")) {
+ document.write("<IFRAME marginheight=0 frameborder=0 ");
+ document.write("marginwidth=0 scrolling=no width=100 height");
+ document.write("=90 ");
+ document.write("SRC=http://www.goto.com/d/ssn/dynconsole/?t");
+ document.write("ype=html&size=100x90&url=http://www.goto.co");
+ document.write("m/d/search/ssn/&target=_blank&Partner=SSN80");
+ document.write("42DF8478957377>");
+ } else if ((parseInt(navigator.appVersion) > 3)
+ && (navigator.appName == "Netscape")) {
+ document.write("<SCRIPT language=javascript type=text/javas");
+ document.write("cript ");
+ document.write("SRC=http://www.goto.com/d/ssn/dynconsole/?t");
+ document.write("ype=js&size=100x90&url=http://www.goto.com/");
+ document.write("d/search/ssn/&target=_blank&Partner=SSN8042");
+ document.write("DF8478957377>");
+ document.write("RIPT>");
+ } else {
+ document.write("<A TARGET=_blank ");
+ document.write("HREF=http://www.goto.com/d/search/ssn/?from");
+ document.write("GIF=true>");
+ document.write("<IMG ismap ");
+ document.write("SRC=http://www.goto.com/d/ssn/dynconsole/?t");
+ document.write("ype=gif&size=100x90>");
+ }
+ // -->
+ </script>
+ <b><noscript></noscript></b><a href="http://www.goto.com/d/search/ssn/?fromGIF=true" target="_blank"><img align="bottom" border="0" height="90" ismap src="doc3_files/100x90.gif" width="100"></a><b><a href="http://www.goto.com/d/search/ssn/?fromGIF=true" target="_blank">
+ </a></b><b></b><b><!-- END GoTo.com Search Box --></b><!-- Pricewatch Search Box -->
+ <form action="http://www.pricewatch.com/search/search.asp" method="get" target="_Blank">
+ <center>
+ <p><b><font color="white" face="ARIAL, HELVETICA" size="1">PC Price
+ Search<br></font></b><input maxlength="30" name="criteria" size="10"><br><input name="submit" style="BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold" type="submit" value="Search">
+ </p>
+</center>
+</form>
+<!-- Pricewatch Search Box --><a href="http://www.puicorp.com/bp6specials.htm" target="_BLANK"><img src="doc3_files/puibp6.gif"></a><br><br><br><br><a href="http://store.yahoo.com/dunamis-site/maxtor.html" target="_BLANK"><img alt="BP6.com Special - Enter CODE: BP6-hd in the order (notes) to receive a discount" src="doc3_files/hd5.gif"><font size="1"><br>BP6.COM
+ Special<br>Code:BP6-hd</font></a> </td>
+</tr>
+</tbody>
+</table>
+ <table bgcolor="silver" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
+ <tbody>
+ <tr>
+ <td width="100%"> </td>
+</tr>
+</tbody>
+</table>
+</center>
+</td>
+</tr>
+</tbody>
+</table>
+<!-- </TABLE>-->
+<center></center>
+<tr>
+<td colspan="3" valign="TOP" height="70"> </td> </tr>
+<table border="0" width="780">
+ <tbody>
+ <tr>
+ <td width="780">
+ <p align="center"><font color="#999999" face="verdana,arial" size="1">Copyright
+ ©1999-2000 BP6.com, All rights reserved.<br>Got news? Send it to </font><a href="mailto:tim@bp6.com"><font color="white" face="Verdana" size="1">Tim</font></a> </p>
+</td>
+</tr>
+<!-- <TR> <TD WIDTH="780"> <P ALIGN="CENTER"><FONT SIZE="1" COLOR="#999999" FACE="Verdana,arial">Site design by Tim Brinkley</FONT> </TD> </TR> -->
+</tbody>
+</table>
+</div>
+<script> window.open=NS_ActualOpen; </script>
+</body>
+</html>
diff --git a/result/HTML/doc3.htm.err b/result/HTML/doc3.htm.err
new file mode 100644
index 0000000..cdf715a
--- /dev/null
+++ b/result/HTML/doc3.htm.err
@@ -0,0 +1,81 @@
+./test/HTML/doc3.htm:10: HTML parser error : Misplaced DOCTYPE declaration
+<!-- END Naviscope Javascript --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN
+ ^
+./test/HTML/doc3.htm:52: HTML parser error : htmlParseEntityRef: expecting ';'
+ href="http://ads.gamesquad.net/addclick.exe/adclick.cgi?REGION=game|tech|ent&id
+ ^
+./test/HTML/doc3.htm:52: HTML parser error : htmlParseEntityRef: expecting ';'
+_top"><img src="http://ads.gamesquad.net/addclick.exe/adcycle.cgi?group=52&media
+ ^
+./test/HTML/doc3.htm:52: HTML parser error : htmlParseEntityRef: expecting ';'
+><img src="http://ads.gamesquad.net/addclick.exe/adcycle.cgi?group=52&media=1&id
+ ^
+./test/HTML/doc3.htm:145: HTML parser error : error parsing attribute name
+ width=70 Gentus?.?></A><BR><A
+ ^
+./test/HTML/doc3.htm:148: HTML parser error : Unexpected end tag : p
+ </P></TD></TR></TBODY></TABLE></CENTER></TD></TR></TBODY></TABLE></CENTER></P>
+ ^
+./test/HTML/doc3.htm:236: HTML parser error : Unexpected end tag : font
+ Specials<BR><BR></FONT></A><BR></FONT></A><B><FONT color=yellow
+ ^
+./test/HTML/doc3.htm:236: HTML parser error : Unexpected end tag : a
+ Specials<BR><BR></FONT></A><BR></FONT></A><B><FONT color=yellow
+ ^
+./test/HTML/doc3.htm:747: HTML parser error : htmlParseEntityRef: expecting ';'
+er=0 alt="Advertisement" src="http://ads.adflight.com/ad_static.asp?pid=2097&sid
+ ^
+./test/HTML/doc3.htm:747: HTML parser error : htmlParseEntityRef: expecting ';'
+Advertisement" src="http://ads.adflight.com/ad_static.asp?pid=2097&sid=1881&asid
+ ^
+./test/HTML/doc3.htm:747: HTML parser error : Unexpected end tag : li
+light.com/ad_static.asp?pid=2097&sid=1881&asid=7708"></a></IFRAME></CENTER></LI>
+ ^
+./test/HTML/doc3.htm:747: HTML parser error : Unexpected end tag : font
+om/ad_static.asp?pid=2097&sid=1881&asid=7708"></a></IFRAME></CENTER></LI></FONT>
+ ^
+./test/HTML/doc3.htm:747: HTML parser error : Unexpected end tag : p
+=7708"></a></IFRAME></CENTER></LI></FONT></TD></TR></TBODY></TABLE></CENTER></P>
+ ^
+./test/HTML/doc3.htm:772: HTML parser error : Unexpected end tag : form
+ archive</A></FONT> </FORM></CENTER></TD></TR></TBODY></TABLE><!--
+ ^
+./test/HTML/doc3.htm:795: HTML parser error : Unexpected end tag : iframe
+ document.write("42DF8478957377></IFRAME>");
+ ^
+./test/HTML/doc3.htm:803: HTML parser error : End tag : expected '>'
+ document.write("DF8478957377></SC");
+ ^
+./test/HTML/doc3.htm:803: HTML parser error : Unexpected end tag : sc
+ document.write("DF8478957377></SC");
+ ^
+./test/HTML/doc3.htm:811: HTML parser error : Unexpected end tag : a
+ document.write("ype=gif&size=100x90></A>");
+ ^
+./test/HTML/doc3.htm:820: HTML parser error : Unexpected end tag : a
+ </A></A></B><B></NOSCRIPT></B><B><!-- END GoTo.com Search Box --></B
+ ^
+./test/HTML/doc3.htm:820: HTML parser error : Unexpected end tag : noscript
+ </A></A></B><B></NOSCRIPT></B><B><!-- END GoTo.com Search Box --></B
+ ^
+./test/HTML/doc3.htm:826: HTML parser error : Opening and ending tag mismatch: form and center
+ </FORM><!-- Pricewatch Search Box --><A
+ ^
+./test/HTML/doc3.htm:833: HTML parser error : Unexpected end tag : p
+ Special<BR>Code:BP6-hd</FONT></A> </P></CENTER></TD></TR></TBODY></T
+ ^
+./test/HTML/doc3.htm:833: HTML parser error : Opening and ending tag mismatch: center and td
+ Special<BR>Code:BP6-hd</FONT></A> </P></CENTER></TD></TR></TBODY></T
+ ^
+./test/HTML/doc3.htm:839: HTML parser error : Unexpected end tag : p
+width="100%">&nbsp;</TD></TR></TBODY></TABLE></P></CENTER></TR></TBODY></TABLE><
+ ^
+./test/HTML/doc3.htm:840: HTML parser error : Unexpected end tag : td
+<CENTER></CENTER></TD></TR><TR><TD COLSPAN="3" VALIGN="TOP"
+ ^
+./test/HTML/doc3.htm:840: HTML parser error : Unexpected end tag : tr
+<CENTER></CENTER></TD></TR><TR><TD COLSPAN="3" VALIGN="TOP"
+ ^
+./test/HTML/doc3.htm:841: HTML parser error : Unexpected end tag : table
+HEIGHT="70">&nbsp;</TD> </TR></TABLE>
+ ^
diff --git a/result/HTML/doc3.htm.sax b/result/HTML/doc3.htm.sax
new file mode 100644
index 0000000..13477f1
--- /dev/null
+++ b/result/HTML/doc3.htm.sax
@@ -0,0 +1,2878 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(HTML, -//W3C//DTD HTML 4.0 Transitional//EN, )
+SAX.comment( saved from url=(0025)http://bp6.gamesquad.net/ )
+SAX.comment( BEGIN Naviscope Javascript )
+SAX.startElement(html)
+SAX.startElement(head)
+SAX.startElement(title)
+SAX.characters(BP6.com #1 online resource for, 47)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(script, language='javascript')
+SAX.cdata(
+ NS_ActualOpen=wind, 199)
+SAX.endElement(script)
+SAX.ignorableWhitespace(
+, 2)
+SAX.comment( END Naviscope Javascript )
+SAX.error: Misplaced DOCTYPE declaration
+SAX.internalSubset(HTML, -//W3C//DTD HTML 3.2//EN, )
+SAX.comment(last modified on Tuesday, February 22, 2000 11:47 PM )
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(meta, content='text/html;CHARSET=iso-8859-1', http-equiv='Content-Type')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(meta, content='Tim', name='Author')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(style, type='text/css')
+SAX.cdata(A.nav {
+ COLOR: #003399; TEXT, 115)
+SAX.endElement(style)
+SAX.ignorableWhitespace(
+
+, 4)
+SAX.startElement(script, language='JavaScript')
+SAX.cdata(
+&lt;!-- Idea by: Nic Wolfe (, 476)
+SAX.endElement(script)
+SAX.ignorableWhitespace(
+
+, 4)
+SAX.startElement(meta, content='MSHTML 5.00.3103.1000', name='GENERATOR')
+SAX.endElement(meta)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(body, alink='red', bgcolor='black', link='red', text='white', vlink='red')
+SAX.characters(
+, 2)
+SAX.startElement(p)
+SAX.characters(
+, 2)
+SAX.endElement(p)
+SAX.startElement(div, align='center')
+SAX.characters(
+, 2)
+SAX.startElement(table, border='0', cellpadding='0', cellspacing='0', width='80%')
+SAX.characters(
+ , 4)
+SAX.startElement(tbody)
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, valign='top', width='31')
+SAX.startElement(a, href='http://bp6.gamesquad.net/')
+SAX.startElement(img, align='bottom', border='0', height='74', src='doc3_files/logo.gif', width='252')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.endElement(td)
+SAX.characters(
+ , 6)
+SAX.startElement(td, align='left', bgcolor='#000000')
+SAX.startElement(img, height='15', src='doc3_files/spacer.gif', width='15')
+SAX.endElement(img)
+SAX.comment( START GAMESQUAD.NET IFRAME RICH MEDIA CODE )
+SAX.characters( , 1)
+SAX.comment( © 2000 GameSquad.net All Rights Reserved. )
+SAX.startElement(iframe, border='0', frameborder='no', height='60', marginheight='0', marginwidth='0', scrolling='no', src='doc3_files/adcycle.htm', width='468')
+SAX.characters(
+, 1)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(a, href='http://ads.gamesquad.net/addclick.exe/adclick.cgi?REGION=game|tech|ent&amp;id=1', target='_top')
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(img, src='http://ads.gamesquad.net/addclick.exe/adcycle.cgi?group=52&amp;media=1&amp;id=1', width='468', height='60', border='0', alt='GSN ROS Ad')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.endElement(iframe)
+SAX.comment( END GAMESQUAD.NET IFRAME RICH MEDIA CODE )
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, height='15', src='doc3_files/spacer.gif', width='400')
+SAX.endElement(img)
+SAX.characters( , 1)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#003399', colspan='2')
+SAX.characters(
+ , 8)
+SAX.startElement(p, align='right')
+SAX.startElement(img, align='right', border='0', height='18', hspace='0', src='doc3_files/trcorner.gif', width='20')
+SAX.endElement(img)
+SAX.startElement(img, align='left', border='0', height='18', hspace='0', src='doc3_files/tlcorner.gif', width='20')
+SAX.endElement(img)
+SAX.startElement(font, face='Verdana', size='2')
+SAX.characters(Monday, July 31st, 2000, 23)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, colspan='2')
+SAX.characters(
+ , 8)
+SAX.startElement(table, bgcolor='#003399', border='0', cellpadding='0', cellspacing='4', width='100%')
+SAX.startElement(tbody)
+SAX.characters(
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td, bgcolor='#666666', width='100%')
+SAX.characters(
+ , 14)
+SAX.startElement(center)
+SAX.characters(
+ , 14)
+SAX.startElement(p)
+SAX.characters(
+ , 14)
+SAX.endElement(p)
+SAX.startElement(table, bgcolor='black', border='0', cellpadding='0', cellspacing='1', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td, background='doc3_files/hscan.gif', bgcolor='#666666', width='100%')
+SAX.startElement(img, height='1', src='doc3_files/spacer.gif', width='738')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 20)
+SAX.startElement(center)
+SAX.characters(
+ , 20)
+SAX.startElement(table, border='0', cellpadding='2', cellspacing='0', width='91%')
+SAX.characters(
+ , 22)
+SAX.startElement(tbody)
+SAX.characters(
+ , 22)
+SAX.startElement(tr)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://bp6.gamesquad.net/specs.phtml')
+SAX.startElement(img, align='bottom', alt='Abit BP6 Motherboard specification and information.', border='0', height='45', src='doc3_files/bp6icon.gif', width='70')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/specs.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BP6 Specs, 9)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 25)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://bp6.gamesquad.net/bxcool.phtml')
+SAX.startElement(img, align='bottom', alt='How to cool the BX Chipset on your BP6.', border='0', height='45', src='doc3_files/bxcool.gif', width='70')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BX Cooling, 10)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 27)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://bp6.gamesquad.net/contest.phtml')
+SAX.startElement(img, align='bottom', alt='The U;timate Gaming Contest - Coming Soon!', border='0', height='45', src='doc3_files/ugmcontest.gif', width='70')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/contest.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(UGM Contest, 11)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 27)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(img, align='bottom', alt='Cooling &amp; Heatsink review for the BP6.', border='0', height='45', src='doc3_files/alpha.gif', width='70')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Heatsinks, 9)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 25)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://bp6.gamesquad.net/101.phtml')
+SAX.startElement(img, align='bottom', alt='BP6 101 - Class is now in session. Welcome newbies!', border='0', height='45', src='doc3_files/bp6101.gif', width='70')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/101.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BP6 101, 7)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 25)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://bp6.gamesquad.net/win2k_install.phtml')
+SAX.startElement(img, align='bottom', alt='Install guide for installing Windows 2000 on the BP6 ', border='0', height='45', src='doc3_files/win2kht.gif', width='70')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/win2k_install.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Win2k Install, 13)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 27)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 24)
+SAX.startElement(td, valign='top', width='15%')
+SAX.characters(
+ , 26)
+SAX.startElement(p, align='center')
+SAX.startElement(a, href='http://www.gentus.com/')
+SAX.error: error parsing attribute name
+SAX.startElement(img, align='bottom', alt='Taking a first look at the Abit Linux release called ', border='0', height='45', src='doc3_files/gentusbox.gif', width='70', gentus)
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.gentus.com/')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Gentus, 6)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters(
+ , 21)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.endElement(center)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.endElement(center)
+SAX.error: Unexpected end tag : p
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.characters(
+, 2)
+SAX.startElement(table, bgcolor='#003399', border='0', cellspacing='6', width='80%')
+SAX.characters(
+ , 4)
+SAX.startElement(tbody)
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='black', valign='top', width='10%')
+SAX.characters(
+ , 8)
+SAX.startElement(table, border='0', cellpadding='3', cellspacing='0', width='100%')
+SAX.characters(
+ , 10)
+SAX.startElement(tbody)
+SAX.characters(
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td, width='100%')
+SAX.startElement(img, height='1', src='doc3_files/spacer.gif', width='111')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(REVIEWS, 7)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.startElement(font, face='Verdana', size='2')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.startElement(hr, align='center')
+SAX.endElement(hr)
+SAX.characters(
+ , 14)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/bp6reviews.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BP6 Reviews, 11)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/h2o.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BP6 Watercooling, 16)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/bxcool.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BX Chipset Cooling, 18)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/benchmark.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Benchmarks, 10)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/bp6fsb.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BP6FSB Utility, 14)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/powerleap.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(PowerLeap NEO S370, 18)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/seti.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(SETI on the BP6, 15)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/orbs.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Golden Orbs I, 13)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/orbs/orbs2.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Golden Orbs II, 14)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/Q6fix.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(VTT Solution, 12)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(NAVIGATE, 8)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(
+ , 15)
+SAX.startElement(hr, align='center')
+SAX.endElement(hr)
+SAX.characters(
+ , 14)
+SAX.endElement(font)
+SAX.startElement(a, href='http://www.bp6.com/')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(News, 4)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/chat.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Online Text Chat, 16)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='javascript:popUp(&apos;chat_popup.htm&apos;)')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Voice Chat, 10)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://216.247.220.192/Forum')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Messageboard, 12)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/cooling')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Temp. Converter, 15)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Picture Gallery, 15)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/bios.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Latest BIOS, 11)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/files/')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Drivers , 8)
+SAX.characters(&amp;, 1)
+SAX.characters( Files, 6)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(UGM of the week, 15)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/contest.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(BP6 Contest, 11)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(OTHER STUFF, 11)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(
+
+ , 17)
+SAX.startElement(hr, align='center')
+SAX.endElement(hr)
+SAX.characters(
+ , 14)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/whois.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Who is Tim?, 11)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='mailto:tim@bp6.com')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Contact BP6.com, 15)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Affiliates Section, 18)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(font, face='Verdana', size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Sponsors Section , 17)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(a, href='http://bp6.gamesquad.net/links.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Links, 5)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(PC SPECIALS, 11)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(
+ , 15)
+SAX.startElement(hr, align='center')
+SAX.endElement(hr)
+SAX.characters(
+ , 14)
+SAX.endElement(font)
+SAX.startElement(a, href='http://bp6.gamesquad.net/specials.phtml')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Vendor
+ Specials, 29)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.error: Unexpected end tag : font
+SAX.error: Unexpected end tag : a
+SAX.startElement(b)
+SAX.startElement(font, color='yellow', face='Verdana', size='2')
+SAX.characters(Pic of the day, 14)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.characters(
+ , 14)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.characters(
+
+ , 29)
+SAX.startElement(center)
+SAX.characters(
+ , 14)
+SAX.startElement(p, align='center')
+SAX.startElement(font, face='Verdana, Arial, Helvetica', size='1')
+SAX.startElement(a, href='http://bp6.gamesquad.net/cgi-bin/schlabo/potd.pl')
+SAX.startElement(img, alt='No picture is available for today.', border='0', src='doc3_files/potd_na_110x83.gif')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.endElement(center)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.startElement(center)
+SAX.endElement(center)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<A HREF="code:javascript:ID_FTPWebView.InvokeHelp()"><FONT SIZE="1" COLOR="white" FACE="Verdana">FTP Help</FONT></A>)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='white', valign='top', width='80%')
+SAX.startElement(img, height='1', src='doc3_files/spacer.gif', width='490')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 8)
+SAX.startElement(center)
+SAX.characters(
+ , 8)
+SAX.startElement(p)
+SAX.characters(
+ , 8)
+SAX.endElement(p)
+SAX.startElement(table, bgcolor='white', border='0', cellpadding='10', cellspacing='0', height='100%', width='100%')
+SAX.characters(
+ , 10)
+SAX.startElement(tbody)
+SAX.characters(
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td, bgcolor='white', valign='top', width='100%')
+SAX.characters(
+ , 14)
+SAX.startElement(center)
+SAX.startElement(a, href='http://www.encounter2001.com/', target='_blank')
+SAX.startElement(img, border='0', height='60', src='doc3_files/banner2.gif', width='468')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.endElement(center)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='news_top')
+SAX.endElement(a)
+SAX.startElement(font, color='#003366', face='verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Headlines, 9)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem965012956,78924,')
+SAX.characters(Chat
+ with ABIT -, 41)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964766837,26344,')
+SAX.characters(Fixed
+ wallpaper , 43)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964762841,25865,')
+SAX.characters(Seti
+ update - 10, 39)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964732235,45502,')
+SAX.characters(Judge
+ gives Naps, 57)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964713289,83675,')
+SAX.characters(Ram
+ Sinks.. more, 83)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964671589,7831,')
+SAX.characters(is
+ it [H]ard? - , 40)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964644047,60218,')
+SAX.characters(WiLd
+ CaSe!! - 1:, 38)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964631110,84122,')
+SAX.characters(What
+ the heck is, 58)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964587833,74573,')
+SAX.characters(HELLO
+ EVERYONE!!, 45)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='arial', size='1')
+SAX.startElement(a, class='nav', href='http://bp6.gamesquad.net/index.phtml#newsitem964429577,13375,')
+SAX.characters(BP6
+ Q3 server up, 57)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( NP v3.7.5 )
+SAX.startElement(a, name='newsitem965012956,78924,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Sunday,
+ Ju, 41)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Chat with
+ ABIT, 28)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 8:09PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/965012956,78924,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(0 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(I, 1)
+SAX.characters(&rsquo;, 3)
+SAX.characters(m slacking a little. All game , 83)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Wallpaper update: I got
+ , 130)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(b)
+SAX.startElement(a, href='http://fullon3d.com/chat/abit/', target='3d')
+SAX.characters(Fullon3d had a live chat with , 69)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.characters(Submitted by: MJS, 17)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Here, 4)
+SAX.characters(&rsquo;, 3)
+SAX.characters(s a little clip:, 16)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters([Falcon]
+ BP6-2??, 30)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters([EricBoeing] We already have a, 75)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters([EricBoeing] but it's OEM only, 30)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters([EricBoeing] the full ATX
+ , 74)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964766837,26344,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Thursday,
+ , 43)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Fixed
+ wallpaper, 29)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 11:47PM
+ PDT, 28)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964766837,26344,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(5 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.startElement(b)
+SAX.characters(Get them now!!, 14)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(This is a
+ fixed , 106)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, height='180', src='doc3_files/3-800.jpg', width='240')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(It's still the Intels Inside o, 104)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Thanks to Matt for
+ , 57)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I would also like to thank Kev, 133)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(And 1 more person, THANK YOU T, 90)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(If you need a weird resolution, 59)
+SAX.startElement(a, href='mailto:Holodeck2@home.com')
+SAX.characters(e-mail, 6)
+SAX.endElement(a)
+SAX.characters( me requesting
+ f, 37)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(If you have ideas or more erro, 47)
+SAX.startElement(a, href='mailto:Holodeck2@home.com')
+SAX.characters(mailto:Holodeck2@home.com, 25)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='doc3_files/3-800.jpg', target='800')
+SAX.characters(800x600 , 8)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.bp6.com/pics/holodeck2/wallpaper/3-1024.jpg', target='800')
+SAX.characters(1024x768 , 9)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.bp6.com/pics/holodeck2/wallpaper/3-1152.jpg', target='800')
+SAX.characters(1152x864 , 9)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.bp6.com/pics/holodeck2/wallpaper/3-1280x1024.jpg', target='800')
+SAX.characters(1280x1024 , 10)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.bp6.com/pics/holodeck2/wallpaper/3-1600.jpg', target='800')
+SAX.characters(1600x1200 , 10)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.startElement(p)
+SAX.characters(Enjoy :-), 9)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.endElement(p)
+SAX.startElement(p)
+SAX.startElement(a, href='mailto:Holodeck2@home.com')
+SAX.characters(Holodeck2,, 10)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters([H]ard at
+ work o, 65)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(p)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964762841,25865,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Seti update, 11)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 10:40PM
+ PDT, 28)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964762841,25865,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(5 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.startElement(img, height='54', src='doc3_files/setiupdate.jpg', width='400')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(You like the
+ pic, 31)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Bp6 User Group Update:, 22)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Completed 61531
+ , 37)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(b)
+SAX.characters(#168 on Top 200 All Groups, 26)
+SAX.endElement(b)
+SAX.characters( (Going to pass CLRC in
+ , 49)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(b)
+SAX.characters(#74 on Top 200 Teams, 20)
+SAX.endElement(b)
+SAX.characters( (Gaining fast on
+ , 42)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(We are flying though at the sp, 82)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Good job everyone!!, 19)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Check this page at
+ , 67)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964732235,45502,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Judge gives Napster the
+ , 44)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 2:10PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964732235,45502,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(0 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Good afternoon for everyone li, 135)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I woke up and thought about po, 488)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.msnbc.com/news/437532.asp', target='Judge vs Napster')
+SAX.characters(Judge shuts Napster down
+ , 38)
+SAX.startElement(p)
+SAX.startElement(img, height='143', src='doc3_files/669915.jpg', width='200')
+SAX.endElement(img)
+SAX.endElement(p)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Check out the Goofy guy in the, 35)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(He's Sean
+ Fannin, 52)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Got news?? , 11)
+SAX.startElement(a, href='mailto:Holodeck2@home.com')
+SAX.characters(mailto:Holodeck2@home.com, 25)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964713289,83675,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Ram Sinks.. more cooling for s, 56)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:tim@bp6.com')
+SAX.characters(tim, 3)
+SAX.endElement(a)
+SAX.characters( @ 8:54AM PDT, 13)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964713289,83675,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(0 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Need some cooling for your Vid, 106)
+SAX.startElement(a, href='http://www.overclockershideout.com/RamSinks.html', target='_BLANK')
+SAX.characters(Overclockers Hiedout Ram Sinks, 30)
+SAX.endElement(a)
+SAX.characters( They just notified
+ , 57)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, border='1', src='doc3_files/ramsink.jpg')
+SAX.endElement(img)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964671589,7831,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Wednesday, July 26,
+ , 38)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(is it
+ [H]ard?, 27)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 9:19PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964671589,7831,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(0 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Big heatsinks are good, very g, 71)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(You can never can have a too b, 99)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, height='173', src='doc3_files/voodooside2.jpg', width='230')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(My overclocked
+ V, 74)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Peltier and
+ wate, 50)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters((if you pry off the heatsink y, 66)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(it was originally posted on , 28)
+SAX.startElement(a, href='http://www.hardocp.com/')
+SAX.characters([H]ardOCP , 10)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I, 1)
+SAX.characters(&rsquo;, 3)
+SAX.characters(m not only a
+ BP6, 55)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964644047,60218,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(WiLd CaSe!!, 11)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 1:40PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964644047,60218,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(8 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Now this person really knows h, 70)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Addin an 18" Fan!! WOW!!, 24)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.envador.com/Photos/PVCII/', target='_blank')
+SAX.startElement(img, src='doc3_files/TN_OpenedUp1.jpg')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Click to go to his
+ , 38)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964631110,84122,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(What the heck is a
+ , 44)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 10:05AM
+ PDT, 28)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964631110,84122,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(6 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(This is for all you people who, 78)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(The quest fo the Perfect
+ , 46)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.tweakmax.com/html/peltier/peltier-1.cfm', target='_blank')
+SAX.startElement(img, src='doc3_files/peltier.jpg')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Thanks to
+ , 24)
+SAX.startElement(a, href='http://www.tweakmax.com/', target='_blank')
+SAX.characters(TweakMax.com, 12)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Note: Today morning when I wok, 397)
+SAX.startElement(img, src='doc3_files/smile.gif')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I'm not angry at anyone...
+ , 71)
+SAX.startElement(img, src='doc3_files/tongue.gif')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964587833,74573,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Tuesday,
+ J, 42)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(HELLO
+ EVERYONE!!, 31)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:Holodeck@bp6.com')
+SAX.characters(Holodeck2, 9)
+SAX.endElement(a)
+SAX.characters( @ 10:03PM
+ PDT, 28)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Hello
+ everyone, , 47)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Who is this Holodeck2 person , 66)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I, 1)
+SAX.characters(&rsquo;, 3)
+SAX.characters(m a regular on the bp6 message, 97)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I, 1)
+SAX.characters(&rsquo;, 3)
+SAX.characters(m the
+ self-procl, 85)
+SAX.characters(&rsquo;, 3)
+SAX.characters(ve
+ probably alre, 68)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(My computer
+ is a, 200)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Any Questions or comments, you, 98)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Ways to contact
+ , 33)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(E-mail: , 8)
+SAX.startElement(a, href='mailto:Holodeck2@home.com')
+SAX.characters(Holodeck2@home.com, 18)
+SAX.endElement(a)
+SAX.characters( (All E-mails
+ wi, 82)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(When you
+ write m, 163)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.aol.com/aim')
+SAX.characters(AIM: , 5)
+SAX.endElement(a)
+SAX.characters(Holodeck2 (instant response
+, 46)
+SAX.characters(&rsquo;, 3)
+SAX.characters(m in front of my comp and not , 53)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.icq.com/download')
+SAX.characters(ICQ: , 5)
+SAX.endElement(a)
+SAX.characters(82640218 (rarely
+ , 34)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(P.S. If someone named , 22)
+SAX.characters(&ldquo;, 3)
+SAX.characters(Digital Vortex, 14)
+SAX.characters(&rdquo;, 3)
+SAX.characters( on either Quake 3
+ , 51)
+SAX.characters(&rsquo;, 3)
+SAX.characters(s probably me. ;-), 18)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964429577,13375,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Monday,
+ Ju, 41)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(BP6 Q3 server up and
+ , 44)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:tim@bp6.com')
+SAX.characters(tim, 3)
+SAX.endElement(a)
+SAX.characters( @ 2:06AM PDT, 13)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964429577,13375,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(3 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Setup a Q3 server for anyone w, 355)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters((BTW-
+ there are , 68)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem964425184,95812,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(BIOS Savior to the
+ , 43)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:tim@bp6.com')
+SAX.characters(tim, 3)
+SAX.endElement(a)
+SAX.characters( @ 12:53AM PDT, 14)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/964425184,95812,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(2 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Do you sweat during the BIOS f, 167)
+SAX.startElement(b)
+SAX.characters(RD1 BIOS Savior, 15)
+SAX.endElement(b)
+SAX.characters(" and it
+ plugs i, 520)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.ioss.com.tw/eg/rd1/RD1info0004.PDF', target='_NEW')
+SAX.characters(Manufacturers Brochure, 22)
+SAX.endElement(a)
+SAX.characters( (PDF Format), 13)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://192.216.185.10/mwave/doc/A06950.html', target='_BLANK"')
+SAX.characters(Another info page, 17)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://192.216.185.10/mwave/ProdMB-AC-MW.hmx?UID=&amp;CID=&amp;updepts=MB&amp;DNAME=%3Cb%3EMotherboards%3C%2Fb%3E&amp;Back=ProdMB-AC-MW.hmx?', target='_BLANK')
+SAX.characters(Available for about $20, 23)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, src='doc3_files/rd1.jpg')
+SAX.endElement(img)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963875853,12731,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Monday,
+ Ju, 41)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(How To
+ Overclock, 30)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 4:17PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963875853,12731,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(3 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(For those of you who are new t, 209)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://netkills.qgl.org/a_oc_comp.shtml', target='_blank')
+SAX.characters(How To Overclock, 16)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963875485,23353,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(The Cardcooler
+ X, 31)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 4:11PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963875485,23353,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(1 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Wow! I am impressed! Nevermind, 98)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Even if your
+ not, 345)
+SAX.endElement(i)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Check this out!, 15)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.brokenpixel.com/articles/coolerXT/cardcoolerXT_1.shtml', target='_blank')
+SAX.characters(http://www.brokenpixel.com/art, 65)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963859982,88982,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters('Nerd
+ Inside', 27)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 11:53AM
+ PDT, 28)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963859982,88982,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(1 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(We all need to have some fun , 181)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.startElement(div, align='center')
+SAX.startElement(a, href='http://www.nerdgear.com/', target='_blank')
+SAX.startElement(img, border='0', src='doc3_files/nerdinside.gif')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.endElement(div)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963819796,9688,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Dual PSU Wiring diagram... (pr, 81)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:tim@bp6.com')
+SAX.characters(tim, 3)
+SAX.endElement(a)
+SAX.characters( @ 12:43AM PDT, 14)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963819796,9688,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(11 comments, 11)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(When is comes to overclocking , 848)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(View Diagram 1 , 15)
+SAX.startElement(a, href='http://bp6.gamesquad.net/images/wiring.jpg', target='_BLANK')
+SAX.characters(here, 4)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(View Diagram 2 , 15)
+SAX.startElement(a, href='http://bp6.gamesquad.net/images/psu2.gif', target='_BLANK')
+SAX.characters(here, 4)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(I used Tap-In Squeeze Connecto, 150)
+SAX.startElement(a, href='http://www.radioshack.com/ProductCatalog/ProductDetail/Index/1,2098,,00.html?SKUString1=64&amp;SKUString2=3053', target='_blank')
+SAX.characters(click here, 10)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963766655,78511,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Sunday,
+ Ju, 41)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(RAM Overclocking?
+ , 39)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 9:57AM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963766655,78511,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(3 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(I know we're pretty big overcl, 636)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Extreme Overclocking has teste, 145)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Well, the guys at Extreme Over, 344)
+SAX.endElement(i)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.extremeoverclocking.com/reviews/memory/ram_roundup_1.html', target='_blank')
+SAX.characters(Cooked RAM... Yummie, 20)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(The
+ &ETH;&ETH;., 23)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963764236,76720,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(CPU
+ Guide, 23)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 9:17AM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963764236,76720,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(0 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(A follow up on the 'Weekly CPU, 203)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.startElement(li)
+SAX.startElement(a, href='http://www6.tomshardware.com/howto/00q2/000412/index.html', target='_blank')
+SAX.characters(http://www6.tomshardware.com/h, 57)
+SAX.endElement(a)
+SAX.endElement(li)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963685749,28290,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Saturday,
+ , 43)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Weekly CPU
+ Price, 31)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 11:29AM
+ PDT, 28)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963685749,28290,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(2 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Wow, found this very useful! W, 104)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.sharkyextreme.com/hardware/weekly_cpu/', target='_blank')
+SAX.characters(Click Here., 11)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Thanks Sharky
+ Ex, 36)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963679881,35277,')
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Fast Wallpapers, 15)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 9:51AM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963679881,35277,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(0 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(FAST-MHz has released some wal, 53)
+SAX.startElement(a, href='http://64.29.18.111/wallpaper/index.html', target='_blank')
+SAX.characters(Click here, 10)
+SAX.endElement(a)
+SAX.characters( to view them. They come in si, 241)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(In other news, we want to
+ , 135)
+SAX.startElement(a, href='http://bp6.gamesquad.net/uc.phtml', target='_blank')
+SAX.characters(Picture Gallery, 15)
+SAX.endElement(a)
+SAX.characters(. To help us out, you can send, 103)
+SAX.startElement(a, href='mailto:thedaredevil@bp6.com')
+SAX.characters(thedaredevil@bp6.com, 20)
+SAX.endElement(a)
+SAX.characters(. (The
+ topic bei, 186)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Okay, that's all for now., 25)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(The
+ &ETH;&ETH;., 23)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, name='newsitem963619505,3764,')
+SAX.endElement(a)
+SAX.characters(
+ , 14)
+SAX.startElement(table, bgcolor='#003399', width='100%')
+SAX.characters(
+ , 16)
+SAX.startElement(tbody)
+SAX.characters(
+ , 16)
+SAX.startElement(tr)
+SAX.characters(
+ , 18)
+SAX.startElement(td)
+SAX.startElement(font, color='#ffffff', face='Verdana,arial', size='2')
+SAX.startElement(b)
+SAX.characters(Friday,
+ Ju, 41)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment(<hr noshade width=100%>)
+SAX.startElement(b)
+SAX.startElement(u)
+SAX.startElement(font, color='#003366', face='Verdana, Arial', size='2')
+SAX.characters(Hey
+ There!, 24)
+SAX.endElement(font)
+SAX.endElement(u)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#0066cc', face='Arial', size='1')
+SAX.startElement(small)
+SAX.characters(Posted by , 10)
+SAX.startElement(a, class='nav', href='mailto:killz@i82hq.com')
+SAX.characters(DareDevil, 9)
+SAX.endElement(a)
+SAX.characters( @ 5:05PM
+ PDT, 27)
+SAX.endElement(small)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.startElement(a, href='http://bp6.gamesquad.net/news/963619505,3764,.html')
+SAX.startElement(img, border='0', src='doc3_files/comments.gif')
+SAX.endElement(img)
+SAX.characters(7 comments, 10)
+SAX.endElement(a)
+SAX.characters(
+ , 15)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(a, href='http://bp6.gamesquad.net/#news_top')
+SAX.characters(top, 3)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='black', face='Arial', size='2')
+SAX.characters(Hey guys, just wanted to intro, 312)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(My e-mail address is , 21)
+SAX.startElement(a, href='mailto:killz@i82hq.com')
+SAX.characters(killz@i82hq.com, 15)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Ciao for
+ now., 27)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(The &ETH;&ETH;., 9)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 14)
+SAX.endElement(font)
+SAX.startElement(center)
+SAX.startElement(iframe, frameborder='0', height='60', marginheight='0', marginwidth='0', noresize, scrolling='no', src='doc3_files/ad_iframe.htm', width='468')
+SAX.startElement(a, href='http://ads.adflight.com/go_static.asp?asid=7708', target='_top')
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(img, width='468', height='60', border='0', alt='Advertisement', src='http://ads.adflight.com/ad_static.asp?pid=2097&amp;sid=1881&amp;asid=7708')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.endElement(iframe)
+SAX.endElement(center)
+SAX.error: Unexpected end tag : li
+SAX.error: Unexpected end tag : font
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.endElement(center)
+SAX.error: Unexpected end tag : p
+SAX.endElement(td)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='silver', valign='top', width='10%')
+SAX.characters(
+ , 8)
+SAX.startElement(center)
+SAX.characters(
+ , 8)
+SAX.startElement(p)
+SAX.characters(
+ , 8)
+SAX.endElement(p)
+SAX.startElement(table, bgcolor='silver', border='0', cellpadding='0', cellspacing='0', width='100%')
+SAX.characters(
+ , 10)
+SAX.startElement(tbody)
+SAX.characters(
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td, colstart='1')
+SAX.characters(
+ , 14)
+SAX.startElement(center)
+SAX.comment( <FORM ACTION="/cgi-bin/subscribe.pl" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">
+ <IMG SRC="/images/spacer.gif" WIDTH="111" HEIGHT="1"><BR>
+ <P><B><FONT SIZE="2" COLOR="#000066" FACE="Verdana">Newsletter</FONT></B><FONT SIZE="1" FACE="Verdana"><BR>
+ <INPUT TYPE="TEXT" NAME="email" SIZE="10" VALUE="ur@email.com"><BR>
+ <INPUT TYPE="HIDDEN" NAME="subscribe" SIZE="-1" VALUE="subscribe"><INPUT TYPE="IMAGE" SRC="/images/subscribe.gif" WIDTH="80"
+ HEIGHT="27" ALIGN="BOTTOM" BORDER="0"></FONT>
+ </FORM> )
+SAX.characters(
+ , 14)
+SAX.startElement(form, action='http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?emaillist', method='post')
+SAX.startElement(img, height='1', src='doc3_files/spacer.gif', width='111')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(Newsletter, 10)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(input, name='npemail', size='13', value='e-mail addr.')
+SAX.endElement(input)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(input, name='npsubscribe', style='BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold', type='submit', value='Subscribe')
+SAX.endElement(input)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( <input type="submit" name="npunsubscribe" value="Unsubscribe" style="font-size: xx-small; font-family: Verdana; font-weight: bold; color: #ffffff; background-color: #000000;"> )
+SAX.endElement(font)
+SAX.endElement(form)
+SAX.startElement(font, size='1')
+SAX.characters(
+ , 14)
+SAX.startElement(form, action='http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?search', method='post')
+SAX.characters(Search news, 11)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(input, name='searchstring', size='13')
+SAX.endElement(input)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(input, name='submit', style='BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold', type='submit', value='Submit')
+SAX.endElement(input)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?newsall')
+SAX.characters(News
+ archive, 26)
+SAX.endElement(a)
+SAX.endElement(form)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.error: Unexpected end tag : form
+SAX.endElement(center)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.comment( <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%" BGCOLOR="silver">
+ <TR>
+ <TD WIDTH="100%">
+ <P ALIGN="CENTER"><A HREF="http://www.free56k.com" target="_blank"><IMG SRC="/images/free56k.gif" WIDTH="100" HEIGHT="49"
+ ALIGN="BOTTOM" BORDER="0"></A>
+ </TD>
+ </TR>
+ </TABLE>
+)
+SAX.characters(
+ , 8)
+SAX.startElement(table, bgcolor='silver', border='0', cellpadding='0', cellspacing='0', width='100%')
+SAX.characters(
+ , 10)
+SAX.startElement(tbody)
+SAX.characters(
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td, align='middle', width='100%')
+SAX.comment( BEGIN GoTo.com Search Box )
+SAX.characters(
+ , 14)
+SAX.startElement(script, language='javascript', type='text/javascript')
+SAX.cdata(
+ &lt;!--
+ if ((, 532)
+SAX.error: Unexpected end tag : iframe
+SAX.cdata(");
+ } else if ((parseI, 463)
+SAX.error: End tag : expected '>'
+SAX.error: Unexpected end tag : sc
+SAX.cdata(");
+ document.write("RI, 361)
+SAX.error: Unexpected end tag : a
+SAX.cdata(");
+ }
+ // --, 37)
+SAX.endElement(script)
+SAX.characters(
+ , 14)
+SAX.startElement(b)
+SAX.startElement(noscript)
+SAX.endElement(noscript)
+SAX.endElement(b)
+SAX.startElement(a, href='http://www.goto.com/d/search/ssn/?fromGIF=true', target='_blank')
+SAX.startElement(img, align='bottom', border='0', height='90', ismap, src='doc3_files/100x90.gif', width='100')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.goto.com/d/search/ssn/?fromGIF=true', target='_blank')
+SAX.characters(
+ , 15)
+SAX.endElement(a)
+SAX.error: Unexpected end tag : a
+SAX.endElement(b)
+SAX.startElement(b)
+SAX.error: Unexpected end tag : noscript
+SAX.endElement(b)
+SAX.startElement(b)
+SAX.comment( END GoTo.com Search Box )
+SAX.endElement(b)
+SAX.comment( Pricewatch Search Box )
+SAX.characters(
+ , 14)
+SAX.startElement(form, action='http://www.pricewatch.com/search/search.asp', method='get', target='_Blank')
+SAX.characters(
+ , 14)
+SAX.startElement(center)
+SAX.characters(
+ , 14)
+SAX.startElement(p)
+SAX.startElement(b)
+SAX.startElement(font, color='white', face='ARIAL, HELVETICA', size='1')
+SAX.characters(PC Price
+ Search, 29)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.startElement(input, maxlength='30', name='criteria', size='10')
+SAX.endElement(input)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(input, name='submit', style='BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold', type='submit', value='Search')
+SAX.endElement(input)
+SAX.characters(
+ , 15)
+SAX.endElement(p)
+SAX.error: Opening and ending tag mismatch: form and center
+SAX.endElement(center)
+SAX.endElement(form)
+SAX.comment( Pricewatch Search Box )
+SAX.startElement(a, href='http://www.puicorp.com/bp6specials.htm', target='_BLANK')
+SAX.startElement(img, src='doc3_files/puibp6.gif')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://store.yahoo.com/dunamis-site/maxtor.html', target='_BLANK')
+SAX.startElement(img, alt='BP6.com Special - Enter CODE: BP6-hd in the order (notes) to receive a discount', src='doc3_files/hd5.gif')
+SAX.endElement(img)
+SAX.startElement(font, size='1')
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(BP6.COM
+ Special, 29)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Code:BP6-hd, 11)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.error: Unexpected end tag : p
+SAX.error: Opening and ending tag mismatch: center and td
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.characters(
+ , 8)
+SAX.startElement(table, bgcolor='silver', border='0', cellpadding='0', cellspacing='0', height='100%', width='100%')
+SAX.characters(
+ , 10)
+SAX.startElement(tbody)
+SAX.characters(
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td, width='100%')
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.error: Unexpected end tag : p
+SAX.endElement(center)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.comment( </TABLE>)
+SAX.characters(
+, 2)
+SAX.startElement(center)
+SAX.endElement(center)
+SAX.error: Unexpected end tag : td
+SAX.error: Unexpected end tag : tr
+SAX.startElement(tr)
+SAX.startElement(td, colspan='3', valign='TOP', height='70')
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters( , 1)
+SAX.endElement(tr)
+SAX.error: Unexpected end tag : table
+SAX.characters(
+, 2)
+SAX.startElement(table, border='0', width='780')
+SAX.characters(
+ , 4)
+SAX.startElement(tbody)
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, width='780')
+SAX.characters(
+ , 8)
+SAX.startElement(p, align='center')
+SAX.startElement(font, color='#999999', face='verdana,arial', size='1')
+SAX.characters(Copyright
+ &copy;1999-2, 59)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Got news? Send it to , 21)
+SAX.endElement(font)
+SAX.startElement(a, href='mailto:tim@bp6.com')
+SAX.startElement(font, color='white', face='Verdana', size='1')
+SAX.characters(Tim, 3)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.comment( <TR> <TD WIDTH="780"> <P ALIGN="CENTER"><FONT SIZE="1" COLOR="#999999" FACE="Verdana,arial">Site design by Tim Brinkley</FONT> </TD> </TR> )
+SAX.endElement(tbody)
+SAX.endElement(table)
+SAX.endElement(div)
+SAX.characters(
+, 2)
+SAX.startElement(script)
+SAX.cdata( window.open=NS_ActualOpen; , 28)
+SAX.endElement(script)
+SAX.characters(
+, 2)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 2)
+SAX.endDocument()
diff --git a/result/HTML/entities.html b/result/HTML/entities.html
new file mode 100644
index 0000000..f84424c
--- /dev/null
+++ b/result/HTML/entities.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html><body>
+<p tst="a&amp;b" tst2="a&amp;b" tst3="a &amp; b">
+a&amp;b
+a&amp;b
+a &amp; b
+</p>
+</body></html>
diff --git a/result/HTML/entities.html.err b/result/HTML/entities.html.err
new file mode 100644
index 0000000..180fa9f
--- /dev/null
+++ b/result/HTML/entities.html.err
@@ -0,0 +1,12 @@
+./test/HTML/entities.html:1: HTML parser error : htmlParseEntityRef: expecting ';'
+<p tst="a&amp;b" tst2="a&b" tst3="a & b">
+ ^
+./test/HTML/entities.html:1: HTML parser error : htmlParseEntityRef: no name
+<p tst="a&amp;b" tst2="a&b" tst3="a & b">
+ ^
+./test/HTML/entities.html:3: HTML parser error : htmlParseEntityRef: expecting ';'
+a&b
+ ^
+./test/HTML/entities.html:4: HTML parser error : htmlParseEntityRef: no name
+a & b
+ ^
diff --git a/result/HTML/entities.html.sax b/result/HTML/entities.html.sax
new file mode 100644
index 0000000..709b60d
--- /dev/null
+++ b/result/HTML/entities.html.sax
@@ -0,0 +1,27 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: no name
+SAX.startElement(p, tst='a&amp;b', tst2='a&amp;b', tst3='a &amp; b')
+SAX.characters(
+a, 2)
+SAX.characters(&amp;, 1)
+SAX.characters(b
+a, 3)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.characters(&amp;, 1)
+SAX.characters(b, 1)
+SAX.characters(
+a , 3)
+SAX.error: htmlParseEntityRef: no name
+SAX.characters(&amp;, 1)
+SAX.characters( b
+, 3)
+SAX.endElement(p)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/entities2.html b/result/HTML/entities2.html
new file mode 100644
index 0000000..8e854d3
--- /dev/null
+++ b/result/HTML/entities2.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<body>
+<form>
+ <input type="text" name="test" value="&scaron;">
+</form>
+</body>
+</html>
diff --git a/result/HTML/entities2.html.err b/result/HTML/entities2.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/entities2.html.err
diff --git a/result/HTML/entities2.html.sax b/result/HTML/entities2.html.sax
new file mode 100644
index 0000000..c6efbe5
--- /dev/null
+++ b/result/HTML/entities2.html.sax
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(form)
+SAX.characters(
+ , 3)
+SAX.startElement(input, type='text', name='test', value='&scaron;')
+SAX.endElement(input)
+SAX.characters(
+, 1)
+SAX.endElement(form)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/fp40.htm b/result/HTML/fp40.htm
new file mode 100644
index 0000000..8affc19
--- /dev/null
+++ b/result/HTML/fp40.htm
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<title>README - Microsoft FrontPage 2000 Server Extensions</title>
+<meta name="Microsoft Theme" content="none">
+</head>
+
+<body>
+<font face="Verdana">
+<h1><a name="top">Microsoft FrontPage 2000 Server Extensions, UNIX</a></h1>
+
+<font size="2"><i>&copy; Copyright Microsoft Corporation, 1999&nbsp;</i></font>
+
+
+<p>The FrontPage Server Extensions are a set of programs on the Web server that support:
+
+</p>
+<ul>
+ <li>Authoring FrontPage webs</li>
+ <li>Administering FrontPage webs</li>
+ <li>Browse-time FrontPage web functionality</li>
+</ul>
+
+
+<h2>Contents&nbsp;</h2>
+
+<a href="#relnotes">Release Notes</a><br>
+<a href="#moreinfo">Resources for More Information</a>
+<p>&nbsp;</p>
+<hr>
+<h2><a name="relnotes">Release Notes</a></h2>
+
+<p>This section provides complementary or late-breaking
+information to supplement the Microsoft FrontPage Server Extensions documentation.</p>
+
+<p><a href="#apache">Apache 1.3.4 Support</a><br>
+<a href="#upgrading">Upgrading from previous version of FrontPage Server Extensions</a><br>
+<a href="#executables">Uploading files into executable folders</a></p>
+
+
+<p align="right"><font size="1"><a href="#top">Top of Page</a></font></p>
+
+
+<h3><a name="apache">Apache 1.3.4 Support</a></h3>
+
+<p>You need to take some special steps to run the FrontPage Server Extensions with Apache 1.3.4.
+FrontPage Server Extensions expect to find all resource directives in the main server
+configuration file, usually http.conf. To prevent the server extensions from using any secondary
+configuration files (access.conf, srm.conf), add the following lines to http.conf:</p>
+
+
+</font>
+<blockquote>
+ <font face="Courier New">
+ResourceConfig /dev/null&nbsp;<br>
+AccessConfig /dev/null</font>
+</blockquote>
+<font face="Verdana">
+
+
+<p>If you have some settings stored in secondary configuration files, move them to http.conf.</p>
+
+<p>You must stop and restart the web server for your changes to http.conf to take effect.</p>
+
+
+
+<p align="right"><font size="1"><a href="#relnotes">Top of Section</a></font></p>
+
+
+
+<h3><a name="upgrading">Upgrading from previous version of FrontPage Server Extensions</a></h3>
+
+<p>Custom entries in frontpage.cnf are not migrated to FrontPage 2000.</p>
+
+<p>When you install FrontPage 2000 Server Extensions, a new frontpage.cnf file is created in the /usr/local/frontpage/version4.0 directory.
+Any custom settings stored in a previous-version frontpage.cnf are not used. However, you can copy
+your custom settings from the previous-version frontpage.cnf file after you install the FrontPage 2000 Server Extensions.</p>
+
+<p>Do not overwrite the FrontPage 2000 frontpage.cnf file with a frontpage.cnf file from an
+earlier version of the FrontPage Server Extensions.</p>
+
+
+
+<p align="right"><font size="1"><a href="#relnotes">Top of Section</a></font></p>
+
+
+
+<h3><a name="executables">Uploading files into executable folders</a></h3>
+
+
+<p>After upgrading to FrontPage 2000, FrontPage authors will not be able to upload files into
+executable folders. For security reasons, the default setting on FrontPage 2000 webs does not
+allow authors to upload executable files into executable folders in a FrontPage web. This
+setting protects servers so that authors do not inadvertently upload a program containing a bug
+or a virus.</p>
+
+<p>To allow FrontPage authors to upload executables, set the NoExecutableCgiUpload configuration
+variable to zero (0). For information about FrontPage Server Extension configuration variables,
+see the FrontPage 2000 Server Extensions Resource Kit at <a href="http://officeupdate.microsoft.com/frontpage/wpp/serk/">http://officeupdate.microsoft.com/frontpage/wpp/serk/</a>.</p>
+
+
+
+<p align="right"><font size="1"><a href="#relnotes">Top of Section</a></font></p>
+
+
+
+<hr>
+
+
+
+<h2><a name="moreinfo">Resources for More Information</a></h2>
+
+<p>This section lists sources of more information about the
+FrontPage Server Extensions.</p>
+
+<p><a href="#serk">Server Extensions Resource Kit</a><br>
+<a href="#serkupdate">Server Extensions Resource Kit Update</a><br>
+<a href="#kb">Knowledge Base</a></p>
+
+
+<p align="right"><font size="1"><a href="#top">Top of Page</a></font></p>
+
+
+<h3><a name="serk">Server Extensions Resource Kit</a></h3>
+
+<p>The FrontPage 2000 Server Extensions include a full set of documentation: the Server
+Extensions Resource Kit. This is an HTML document installed on the server machine (by
+default) in /usr/local/frontpage/version4.0/serk. To view the Server Extensions Resource
+Kit, open /usr/local/frontpage/version4.0/serk/default.htm in your Web browser.</p>
+
+<p>The Server Extensions Resource Kit contains detailed information about installing and
+administering the FrontPage Server Extensions along with an overview of the Server
+Extensions, a detailed discussion of Server Extensions security on UNIX and Windows,
+troubleshooting information, and a full set of appendixes.</p>
+
+<p align="right"><font size="1"><a href="#moreinfo">Top of Section</a></font></p>
+
+
+<h3><a name="serkupdate">Server Extensions Resource Kit Update</a></h3>
+
+<p>For updated information about installing, setting up, and administrating the FrontPage Server
+Extensions, see the Server Extensions Resource Kit Update at: <a href="http://officeupdate.microsoft.com/frontpage/wpp/serk/">http://officeupdate.microsoft.com/frontpage/wpp/serk/</a>.</p>
+
+
+<p align="right"><font size="1"><a href="#moreinfo">Top of Section</a></font></p>
+
+
+<h3><a name="kb">Microsoft Knowledge Base</a></h3>
+
+<p>For further technical information on FrontPage, please consult Support Online. Use Support
+Online to easily search Microsoft Product Support Services' collection of resources including
+technical articles from Microsoft's extensive Knowledge Base, FAQs, &amp; troubleshooters to find
+fast, accurate answers. You can also customize the site to control your search using either
+keywords or the site's natural language search engine, which uses normal everyday language for
+answering inquiries, so you can write your question in your own words. To begin, go to
+<a href="http://support.microsoft.com/support/">http://support.microsoft.com/support/</a>.</p>
+
+<p align="right"><font size="1"><a href="#moreinfo">Top of Section</a></font></p>
+
+
+<p>&nbsp;</p>
+
+</font>
+</body>
+</html>
diff --git a/result/HTML/fp40.htm.err b/result/HTML/fp40.htm.err
new file mode 100644
index 0000000..6ab388f
--- /dev/null
+++ b/result/HTML/fp40.htm.err
@@ -0,0 +1,3 @@
+./test/HTML/fp40.htm:153: HTML parser error : htmlParseEntityRef: no name
+technical articles from Microsoft's extensive Knowledge Base, FAQs, & troublesho
+ ^
diff --git a/result/HTML/fp40.htm.sax b/result/HTML/fp40.htm.sax
new file mode 100644
index 0000000..6f77794
--- /dev/null
+++ b/result/HTML/fp40.htm.sax
@@ -0,0 +1,463 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//IETF//DTD HTML//EN, )
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, name='GENERATOR', content='Microsoft FrontPage 4.0')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(README - Microsoft FrontPage 2, 51)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, name='Microsoft Theme', content='none')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(font, face='Verdana')
+SAX.characters(
+, 1)
+SAX.startElement(h1)
+SAX.startElement(a, name='top')
+SAX.characters(Microsoft FrontPage 2000 Serve, 48)
+SAX.endElement(a)
+SAX.endElement(h1)
+SAX.characters(
+
+, 2)
+SAX.startElement(font, size='2')
+SAX.startElement(i)
+SAX.characters(&copy; Copyright Microsoft Cor, 40)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p)
+SAX.characters(The FrontPage Server Extension, 88)
+SAX.endElement(p)
+SAX.startElement(ul)
+SAX.characters(
+ , 3)
+SAX.startElement(li)
+SAX.characters(Authoring FrontPage webs, 24)
+SAX.endElement(li)
+SAX.characters(
+ , 3)
+SAX.startElement(li)
+SAX.characters(Administering FrontPage webs, 28)
+SAX.endElement(li)
+SAX.characters(
+ , 3)
+SAX.startElement(li)
+SAX.characters(Browse-time FrontPage web func, 39)
+SAX.endElement(li)
+SAX.characters(
+, 1)
+SAX.endElement(ul)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(h2)
+SAX.characters(Contents, 8)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(h2)
+SAX.characters(
+
+, 2)
+SAX.startElement(a, href='#relnotes')
+SAX.characters(Release Notes, 13)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='#moreinfo')
+SAX.characters(Resources for More Information, 30)
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.characters(
+, 1)
+SAX.startElement(h2)
+SAX.startElement(a, name='relnotes')
+SAX.characters(Release Notes, 13)
+SAX.endElement(a)
+SAX.endElement(h2)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(This section provides compleme, 136)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.startElement(a, href='#apache')
+SAX.characters(Apache 1.3.4 Support, 20)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='#upgrading')
+SAX.characters(Upgrading from previous versio, 62)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='#executables')
+SAX.characters(Uploading files into executabl, 39)
+SAX.endElement(a)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#top')
+SAX.characters(Top of Page, 11)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(h3)
+SAX.startElement(a, name='apache')
+SAX.characters(Apache 1.3.4 Support, 20)
+SAX.endElement(a)
+SAX.endElement(h3)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(You need to take some special , 360)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.startElement(blockquote)
+SAX.characters(
+ , 3)
+SAX.startElement(font, face='Courier New')
+SAX.characters(
+ResourceConfig /dev/null, 25)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+AccessConfig /dev/null, 23)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.endElement(blockquote)
+SAX.characters(
+, 1)
+SAX.startElement(font, face='Verdana')
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p)
+SAX.characters(If you have some settings stor, 90)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(You must stop and restart the , 86)
+SAX.endElement(p)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#relnotes')
+SAX.characters(Top of Section, 14)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(h3)
+SAX.startElement(a, name='upgrading')
+SAX.characters(Upgrading from previous versio, 62)
+SAX.endElement(a)
+SAX.endElement(h3)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(Custom entries in frontpage.cn, 67)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(When you install FrontPage 200, 359)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(Do not overwrite the FrontPage, 141)
+SAX.endElement(p)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#relnotes')
+SAX.characters(Top of Section, 14)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(h3)
+SAX.startElement(a, name='executables')
+SAX.characters(Uploading files into executabl, 39)
+SAX.endElement(a)
+SAX.endElement(h3)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p)
+SAX.characters(After upgrading to FrontPage 2, 385)
+SAX.endElement(p)
+SAX.characters(
+
+, 3)
+SAX.startElement(p)
+SAX.characters(To allow FrontPage authors to , 249)
+SAX.startElement(a, href='http://officeupdate.microsoft.com/frontpage/wpp/serk/')
+SAX.characters(http://officeupdate.microsoft., 53)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.endElement(p)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#relnotes')
+SAX.characters(Top of Section, 14)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.characters(
+
+
+
+, 4)
+SAX.startElement(h2)
+SAX.startElement(a, name='moreinfo')
+SAX.characters(Resources for More Information, 30)
+SAX.endElement(a)
+SAX.endElement(h2)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(This section lists sources of , 85)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.startElement(a, href='#serk')
+SAX.characters(Server Extensions Resource Kit, 30)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='#serkupdate')
+SAX.characters(Server Extensions Resource Kit, 37)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='#kb')
+SAX.characters(Knowledge Base, 14)
+SAX.endElement(a)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#top')
+SAX.characters(Top of Page, 11)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(h3)
+SAX.startElement(a, name='serk')
+SAX.characters(Server Extensions Resource Kit, 30)
+SAX.endElement(a)
+SAX.endElement(h3)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(The FrontPage 2000 Server Exte, 339)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(The Server Extensions Resource, 312)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#moreinfo')
+SAX.characters(Top of Section, 14)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(h3)
+SAX.startElement(a, name='serkupdate')
+SAX.characters(Server Extensions Resource Kit, 37)
+SAX.endElement(a)
+SAX.endElement(h3)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(For updated information about , 157)
+SAX.startElement(a, href='http://officeupdate.microsoft.com/frontpage/wpp/serk/')
+SAX.characters(http://officeupdate.microsoft., 53)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#moreinfo')
+SAX.characters(Top of Section, 14)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(h3)
+SAX.startElement(a, name='kb')
+SAX.characters(Microsoft Knowledge Base, 24)
+SAX.endElement(a)
+SAX.endElement(h3)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.characters(For further technical informat, 254)
+SAX.error: htmlParseEntityRef: no name
+SAX.characters(&amp;, 1)
+SAX.characters( troubleshooters to find
+fast, 302)
+SAX.startElement(a, href='http://support.microsoft.com/support/')
+SAX.characters(http://support.microsoft.com/s, 37)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.endElement(p)
+SAX.characters(
+
+, 4)
+SAX.startElement(p, align='right')
+SAX.startElement(font, size='1')
+SAX.startElement(a, href='#moreinfo')
+SAX.characters(Top of Section, 14)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(p)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(p)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(p)
+SAX.characters(
+
+, 4)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/html5_enc.html b/result/HTML/html5_enc.html
new file mode 100644
index 0000000..44ceebc
--- /dev/null
+++ b/result/HTML/html5_enc.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<meta charset="iso-8859-1">
+</head>
+<body>
+ <p>tr&egrave;s</p>
+</body>
+</html>
diff --git a/result/HTML/html5_enc.html.err b/result/HTML/html5_enc.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/html5_enc.html.err
diff --git a/result/HTML/html5_enc.html.sax b/result/HTML/html5_enc.html.sax
new file mode 100644
index 0000000..292be57
--- /dev/null
+++ b/result/HTML/html5_enc.html.sax
@@ -0,0 +1,30 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, charset='iso-8859-1')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+ , 3)
+SAX.startElement(p)
+SAX.characters(tr&egrave;s, 5)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/liclose.html b/result/HTML/liclose.html
new file mode 100644
index 0000000..62391dc
--- /dev/null
+++ b/result/HTML/liclose.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+ <title></title>
+</head>
+<body>
+<ul>
+<li>First item
+</li>
+<li>Second item, closes the first one
+</li>
+</ul>
+
+</body>
+</html>
diff --git a/result/HTML/liclose.html.err b/result/HTML/liclose.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/liclose.html.err
diff --git a/result/HTML/liclose.html.sax b/result/HTML/liclose.html.sax
new file mode 100644
index 0000000..eabcdf6
--- /dev/null
+++ b/result/HTML/liclose.html.sax
@@ -0,0 +1,38 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(HTML, -//W3C//DTD HTML 4.0 Transitional//EN, http://www.w3.org/TR/REC-html40/loose.dtd)
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+ , 3)
+SAX.startElement(title)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(ul)
+SAX.characters(
+, 1)
+SAX.startElement(li)
+SAX.characters(First item
+, 11)
+SAX.endElement(li)
+SAX.startElement(li)
+SAX.characters(Second item, closes the first , 34)
+SAX.endElement(li)
+SAX.endElement(ul)
+SAX.characters(
+
+, 2)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/lt.html b/result/HTML/lt.html
new file mode 100644
index 0000000..c29f74f
--- /dev/null
+++ b/result/HTML/lt.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<meta name="Author" content="Root &lt;root@aol.com&gt;">
+</head>
+</html>
diff --git a/result/HTML/lt.html.err b/result/HTML/lt.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/lt.html.err
diff --git a/result/HTML/lt.html.sax b/result/HTML/lt.html.sax
new file mode 100644
index 0000000..a4ab5e3
--- /dev/null
+++ b/result/HTML/lt.html.sax
@@ -0,0 +1,19 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, name='Author', content='Root &lt;root@aol.com&gt;')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/noscript.html b/result/HTML/noscript.html
new file mode 100644
index 0000000..454e943
--- /dev/null
+++ b/result/HTML/noscript.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>omg</title>
+ <noscript><link rel="stylesheet" href="http://foo.com"></noscript>
+ </head>
+ <body id="xxx">
+ <p>yo</p>
+ </body>
+</html>
diff --git a/result/HTML/noscript.html.err b/result/HTML/noscript.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/noscript.html.err
diff --git a/result/HTML/noscript.html.sax b/result/HTML/noscript.html.sax
new file mode 100644
index 0000000..b69396f
--- /dev/null
+++ b/result/HTML/noscript.html.sax
@@ -0,0 +1,38 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, , )
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+ , 5)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+ , 9)
+SAX.startElement(title)
+SAX.characters(omg, 3)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+ , 9)
+SAX.startElement(noscript)
+SAX.startElement(link, rel='stylesheet', href='http://foo.com')
+SAX.endElement(link)
+SAX.endElement(noscript)
+SAX.ignorableWhitespace(
+ , 5)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+ , 5)
+SAX.startElement(body, id='xxx')
+SAX.characters(
+ , 9)
+SAX.startElement(p)
+SAX.characters(yo, 2)
+SAX.endElement(p)
+SAX.characters(
+ , 5)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/pre.html b/result/HTML/pre.html
new file mode 100644
index 0000000..f83a7cb
--- /dev/null
+++ b/result/HTML/pre.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<body>
+<pre><a href="toto"></a><img src="titi"></pre>
+</body>
+</html>
diff --git a/result/HTML/pre.html.err b/result/HTML/pre.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/pre.html.err
diff --git a/result/HTML/pre.html.sax b/result/HTML/pre.html.sax
new file mode 100644
index 0000000..f8782b7
--- /dev/null
+++ b/result/HTML/pre.html.sax
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(pre)
+SAX.startElement(a, href='toto')
+SAX.endElement(a)
+SAX.startElement(img, src='titi')
+SAX.endElement(img)
+SAX.endElement(pre)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/python.html b/result/HTML/python.html
new file mode 100644
index 0000000..ea0be18
--- /dev/null
+++ b/result/HTML/python.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<?xml-stylesheet href="./css/ht2html.css" type="text/css"?><html>
+<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
+<head>
+<title>Python Programming Language</title>
+</head>
+<body>
+</body>
+</html>
diff --git a/result/HTML/python.html.err b/result/HTML/python.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/python.html.err
diff --git a/result/HTML/python.html.sax b/result/HTML/python.html.sax
new file mode 100644
index 0000000..665539c
--- /dev/null
+++ b/result/HTML/python.html.sax
@@ -0,0 +1,29 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//W3C//DTD HTML 4.01 Transitional//EN, http://www.w3.org/TR/html4/loose.dtd)
+SAX.processingInstruction(xml-stylesheet, href="./css/ht2html.css" type="text/css"?)
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.comment( THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. )
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(Python Programming Language, 27)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/reg1.html b/result/HTML/reg1.html
new file mode 100644
index 0000000..893d6a2
--- /dev/null
+++ b/result/HTML/reg1.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<title>Regression test 1</title>
+</head>
+<body>
+<h1>Regression test 1</h1>
+<p>
+Ok file no problem
+</p>
+</body>
+</html>
diff --git a/result/HTML/reg1.html.err b/result/HTML/reg1.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/reg1.html.err
diff --git a/result/HTML/reg1.html.sax b/result/HTML/reg1.html.sax
new file mode 100644
index 0000000..c8ee3ac
--- /dev/null
+++ b/result/HTML/reg1.html.sax
@@ -0,0 +1,36 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(Regression test 1, 17)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(h1)
+SAX.characters(Regression test 1, 17)
+SAX.endElement(h1)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+Ok file no problem
+, 20)
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/reg2.html b/result/HTML/reg2.html
new file mode 100644
index 0000000..88cf9d3
--- /dev/null
+++ b/result/HTML/reg2.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<title>Regression test 2</title>
+</head>
+<body>
+<h1>Regression test 2</h1>
+<p>
+Autoclose of tag P
+</p>
+<p>
+Ok file no problem
+</p>
+</body>
+</html>
diff --git a/result/HTML/reg2.html.err b/result/HTML/reg2.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/reg2.html.err
diff --git a/result/HTML/reg2.html.sax b/result/HTML/reg2.html.sax
new file mode 100644
index 0000000..f85691e
--- /dev/null
+++ b/result/HTML/reg2.html.sax
@@ -0,0 +1,41 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(Regression test 2, 17)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(h1)
+SAX.characters(Regression test 2, 17)
+SAX.endElement(h1)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+Autoclose of tag P
+, 20)
+SAX.endElement(p)
+SAX.startElement(p)
+SAX.characters(
+Ok file no problem
+, 20)
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/reg3.html b/result/HTML/reg3.html
new file mode 100644
index 0000000..d35ac0d
--- /dev/null
+++ b/result/HTML/reg3.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<title>Regression test 3</title>
+</head>
+<body>
+<h1>Regression test 3</h1>
+<p>
+Autoclose of tag P
+</p>
+<hr>
+<p>
+Ok file no problem
+</p>
+</body>
+</html>
diff --git a/result/HTML/reg3.html.err b/result/HTML/reg3.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/reg3.html.err
diff --git a/result/HTML/reg3.html.sax b/result/HTML/reg3.html.sax
new file mode 100644
index 0000000..ec0f039
--- /dev/null
+++ b/result/HTML/reg3.html.sax
@@ -0,0 +1,45 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(Regression test 3, 17)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(h1)
+SAX.characters(Regression test 3, 17)
+SAX.endElement(h1)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+Autoclose of tag P
+, 20)
+SAX.endElement(p)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+Ok file no problem
+, 20)
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/reg4.html b/result/HTML/reg4.html
new file mode 100644
index 0000000..eb1ba09
--- /dev/null
+++ b/result/HTML/reg4.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<title>Regression test 4</title>
+</head>
+<body>
+<h1>Regression test 4</h1>
+<p>
+Wrong close of tag P
+</p>
+<hr>
+
+</body>
+</html>
diff --git a/result/HTML/reg4.html.err b/result/HTML/reg4.html.err
new file mode 100644
index 0000000..6515f70
--- /dev/null
+++ b/result/HTML/reg4.html.err
@@ -0,0 +1,3 @@
+./test/HTML/reg4.html:10: HTML parser error : Unexpected end tag : p
+</p>
+ ^
diff --git a/result/HTML/reg4.html.sax b/result/HTML/reg4.html.sax
new file mode 100644
index 0000000..4c5147c
--- /dev/null
+++ b/result/HTML/reg4.html.sax
@@ -0,0 +1,43 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(Regression test 4, 17)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(h1)
+SAX.characters(Regression test 4, 17)
+SAX.endElement(h1)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+Wrong close of tag P
+, 22)
+SAX.endElement(p)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.characters(
+, 1)
+SAX.error: Unexpected end tag : p
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/repeat.html b/result/HTML/repeat.html
new file mode 100644
index 0000000..71cf72e
--- /dev/null
+++ b/result/HTML/repeat.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html><body>
+<td></td>
+<td>
+<!-- <a><b> -->
+</td>
+</body></html>
diff --git a/result/HTML/repeat.html.err b/result/HTML/repeat.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/repeat.html.err
diff --git a/result/HTML/repeat.html.sax b/result/HTML/repeat.html.sax
new file mode 100644
index 0000000..2dbf35c
--- /dev/null
+++ b/result/HTML/repeat.html.sax
@@ -0,0 +1,14 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.startElement(td)
+SAX.endElement(td)
+SAX.startElement(td)
+SAX.comment( <a><b> )
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(td)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/script.html b/result/HTML/script.html
new file mode 100644
index 0000000..5b95a1f
--- /dev/null
+++ b/result/HTML/script.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head><title>Script tests</title></head>
+<body>
+<script language="javascript">
+ if (window.open<max) ;
+</script>
+<input onclick="if(window.open&lt;max);">
+</body>
+</html>
diff --git a/result/HTML/script.html.err b/result/HTML/script.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/script.html.err
diff --git a/result/HTML/script.html.sax b/result/HTML/script.html.sax
new file mode 100644
index 0000000..b259f7f
--- /dev/null
+++ b/result/HTML/script.html.sax
@@ -0,0 +1,32 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(head)
+SAX.startElement(title)
+SAX.characters(Script tests, 12)
+SAX.endElement(title)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(script, language='javascript')
+SAX.cdata(
+ if (window.open&lt;max) ;, 28)
+SAX.endElement(script)
+SAX.characters(
+, 1)
+SAX.startElement(input, onclick='if(window.open&lt;max);')
+SAX.endElement(input)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/script2.html b/result/HTML/script2.html
new file mode 100644
index 0000000..2ad9b95
--- /dev/null
+++ b/result/HTML/script2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Test Page</title>
+</head>
+<body>
+<div id="portal">
+<script type="text/javascript">
+ documen.write("PříliÅ¡ žluÅ¥ouÄký kůň úpÄ›l Äábelksé ódy");
+</script>
+ <p>
+ PříliÅ¡ žluÅ¥ouÄký kůň úpÄ›l Äábelksé ódy;
+ </p>
+</div>
+</body>
+</html>
diff --git a/result/HTML/script2.html.err b/result/HTML/script2.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/script2.html.err
diff --git a/result/HTML/script2.html.sax b/result/HTML/script2.html.sax
new file mode 100644
index 0000000..1971991
--- /dev/null
+++ b/result/HTML/script2.html.sax
@@ -0,0 +1,50 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.startElement(html, xmlns='http://www.w3.org/1999/xhtml')
+SAX.ignorableWhitespace(
+ , 2)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+ , 3)
+SAX.startElement(meta, http-equiv='Content-Type', content='text/html; charset=UTF-8')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(Test Page, 9)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body)
+SAX.characters(
+, 1)
+SAX.startElement(div, id='portal')
+SAX.characters(
+, 1)
+SAX.startElement(script, type='text/javascript')
+SAX.cdata(
+ documen.write("P&#345;, 74)
+SAX.endElement(script)
+SAX.characters(
+ , 2)
+SAX.startElement(p)
+SAX.characters(
+ P&#345;&iacute;li&scaron; , 58)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(div)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.endDocument()
diff --git a/result/HTML/test2.html b/result/HTML/test2.html
new file mode 100644
index 0000000..eaa8864
--- /dev/null
+++ b/result/HTML/test2.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head> <title>Linux Today</title>
+</head>
+<body bgcolor="White" link="Blue" text="Black" vlink="Black" alink="Red">
+
+<center>
+<table border="0" width="100%" cellspacing="0" cellpadding="0">
+ <tr bgcolor="#FFFFFF">
+ <td height="90">
+<a href="http://linuxtoday.com/cgi-bin/click.pl?adnum=49"><img src="/pics/door_linux.gif" border="0" width="468" height="60" alt="Atipa Linux solutions. Your reliable cluster, server, and workstation solution. Win a Free Celeron Linux Workstation!"></a>
+
+ </td>
+ <td>
+<img src="/pics/lt.gif" vspace="5" alt="Linux Today Logo"><br><font size="-1"><a href="http://linux.com">linux.com</a> partner</font><p></p>
+</td>
+
+ </tr>
+</table>
+<font size="2" face="Helvetica">
+[ <a href="http://linuxtoday.com/">headlines</a> |
+<a href="http://features.linuxtoday.com/">features</a> |
+<a href="http://commercial.linuxtoday.com/">commercial</a> |
+<a href="http://security.linuxtoday.com/">security</a> |
+<a href="http://jobs.linuxtoday.com/">jobs</a> |
+<a href="http://linuxtoday.com/volt/">volt</a> |
+<a href="http://linuxtoday.com/contrib.pl">contribute/submit</a> |
+<a href="http://linuxtoday.com/advertise/">advertise</a> |
+<a href="http://linuxtoday.com/search.html">search</a> |
+<a href="http://linuxtoday.com/digests/">site digests</a> |
+<a href="http://linuxtoday.com/mail-lists">mailing lists</a> |
+<a href="http://linuxtoday.com/about/">about us</a> |
+<a href="http://linuxtoday.com/linkus.html">link us</a> ]</font>
+</center>
+<p>
+</p>
+</body>
+</html>
diff --git a/result/HTML/test2.html.err b/result/HTML/test2.html.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/HTML/test2.html.err
diff --git a/result/HTML/test2.html.sax b/result/HTML/test2.html.sax
new file mode 100644
index 0000000..78bb090
--- /dev/null
+++ b/result/HTML/test2.html.sax
@@ -0,0 +1,145 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(HTML, -//W3C//DTD HTML 4.0 Transitional//EN, http://www.w3.org/TR/REC-html40/loose.dtd)
+SAX.startElement(html)
+SAX.startElement(head)
+SAX.ignorableWhitespace( , 1)
+SAX.startElement(title)
+SAX.characters(Linux Today, 11)
+SAX.endElement(title)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(body, bgcolor='White', link='Blue', text='Black', vlink='Black', alink='Red')
+SAX.characters(
+
+, 2)
+SAX.startElement(center)
+SAX.characters(
+, 1)
+SAX.startElement(table, border='0', width='100%', cellspacing='0', cellpadding='0')
+SAX.characters(
+ , 9)
+SAX.startElement(tr, bgcolor='#FFFFFF')
+SAX.characters(
+ , 17)
+SAX.startElement(td, height='90')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://linuxtoday.com/cgi-bin/click.pl?adnum=49')
+SAX.startElement(img, src='/pics/door_linux.gif', border='0', width='468', height='60', alt='Atipa Linux solutions. Your reliable cluster, server, and workstation solution. Win a Free Celeron Linux Workstation!')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.characters(
+
+ , 18)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.startElement(td)
+SAX.startElement(img, src='/pics/lt.gif', vspace='5', alt='Linux Today Logo')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='-1')
+SAX.startElement(a, href='http://linux.com')
+SAX.characters(linux.com, 9)
+SAX.endElement(a)
+SAX.characters( partner, 8)
+SAX.endElement(font)
+SAX.startElement(p)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+
+ , 10)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.endElement(table)
+SAX.characters(
+, 1)
+SAX.startElement(font, size='2', face='Helvetica')
+SAX.characters(
+[ , 3)
+SAX.startElement(a, href='http://linuxtoday.com/')
+SAX.characters(headlines, 9)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://features.linuxtoday.com/')
+SAX.characters(features, 8)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://commercial.linuxtoday.com/')
+SAX.characters(commercial, 10)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://security.linuxtoday.com/')
+SAX.characters(security, 8)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://jobs.linuxtoday.com/')
+SAX.characters(jobs, 4)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/volt/')
+SAX.characters(volt, 4)
+SAX.endElement(a)
+SAX.characters( |
+, 4)
+SAX.startElement(a, href='http://linuxtoday.com/contrib.pl')
+SAX.characters(contribute/submit, 17)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/advertise/')
+SAX.characters(advertise, 9)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/search.html')
+SAX.characters(search, 6)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/digests/')
+SAX.characters(site digests, 12)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/mail-lists')
+SAX.characters(mailing lists, 13)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/about/')
+SAX.characters(about us, 8)
+SAX.endElement(a)
+SAX.characters( |
+, 3)
+SAX.startElement(a, href='http://linuxtoday.com/linkus.html')
+SAX.characters(link us, 7)
+SAX.endElement(a)
+SAX.characters( ], 2)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.endElement(center)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endDocument()
diff --git a/result/HTML/test3.html b/result/HTML/test3.html
new file mode 100644
index 0000000..b37a1c7
--- /dev/null
+++ b/result/HTML/test3.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+<base target="contents">
+</head>
+<body>
+<a name="ProblemDomain.Package"><h2>Component Package diagram ProblemDomain</h2>
+</a><p></p>
+<hr>
+<dl>
+<dt>
+<b>Stereotype </b>problem domain</dt>
+<dt>
+<b>Alias </b>Problem Domain</dt>
+<dt><b>Note </b></dt>
+<dd>The Problem Domain package is the model behind the Human
+<dd>Interface, thats stores and manipulates the Family Tree.
+</dd>
+</dd>
+</dl>
+<p></p>
+<hr>
+<dl>
+
+<dt><h4>Class <a href="HumanInterface.FamilyFrame.html#HumanInterface.FamilyFrame">HumanInterface.FamilyFrame</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Birth.html#ProblemDomain.Birth">ProblemDomain.Birth</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Death.html#ProblemDomain.Death">ProblemDomain.Death</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Divorce.html#ProblemDomain.Divorce">ProblemDomain.Divorce</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Family.html#ProblemDomain.Family">ProblemDomain.Family</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Individual.html#ProblemDomain.Individual">ProblemDomain.Individual</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.LifeEvent.html#ProblemDomain.LifeEvent">ProblemDomain.LifeEvent</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Marriage.html#ProblemDomain.Marriage">ProblemDomain.Marriage</a>
+</h4></dt>
+<dt><h4>Class <a href="ProblemDomain.Note.html#ProblemDomain.Note">ProblemDomain.Note</a>
+</h4></dt>
+</dl>
+
+<h4><b>Links</b></h4>
+<ul><li>
+<b>Link to </b><a href="HumanInterface.Package.html#HumanInterface.Package">HumanInterface</a>
+</li></ul>
+<dir></dir>
+<ul><li>
+<b>Link to </b><a href="DataManagement.FlatFile.Package.html#DataManagement.FlatFile.Package">DataManagement.FlatFile</a>
+</li></ul>
+<dir></dir>
+<ul><li>
+<b>Link to </b><a href="DataManagement.Package.html#DataManagement.Package">DataManagement</a>
+</li></ul>
+<dir></dir>
+</body>
+</html>
diff --git a/result/HTML/test3.html.err b/result/HTML/test3.html.err
new file mode 100644
index 0000000..c743503
--- /dev/null
+++ b/result/HTML/test3.html.err
@@ -0,0 +1,12 @@
+./test/HTML/test3.html:6: HTML parser error : Unexpected end tag : p
+</a><p><hr></p>
+ ^
+./test/HTML/test3.html:13: HTML parser error : Unexpected end tag : p
+<p><hr></p>
+ ^
+./test/HTML/test3.html:27: HTML parser error : Opening and ending tag mismatch: h4 and b
+<h4><b>Links</h4></b>
+ ^
+./test/HTML/test3.html:27: HTML parser error : Unexpected end tag : b
+<h4><b>Links</h4></b>
+ ^
diff --git a/result/HTML/test3.html.sax b/result/HTML/test3.html.sax
new file mode 100644
index 0000000..c9f6638
--- /dev/null
+++ b/result/HTML/test3.html.sax
@@ -0,0 +1,230 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(base, target='contents')
+SAX.endElement(base)
+SAX.ignorableWhitespace(
+, 2)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+, 2)
+SAX.startElement(body)
+SAX.startElement(a, name='ProblemDomain.Package')
+SAX.startElement(h2)
+SAX.characters(Component Package diagram Prob, 39)
+SAX.endElement(h2)
+SAX.characters(
+, 2)
+SAX.endElement(a)
+SAX.startElement(p)
+SAX.endElement(p)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.error: Unexpected end tag : p
+SAX.characters(
+, 2)
+SAX.startElement(dl)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(b)
+SAX.characters(Stereotype , 11)
+SAX.endElement(b)
+SAX.characters(problem domain, 14)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(b)
+SAX.characters(Alias , 6)
+SAX.endElement(b)
+SAX.characters(Problem Domain, 14)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(b)
+SAX.characters(Note , 5)
+SAX.endElement(b)
+SAX.endElement(dt)
+SAX.startElement(dd)
+SAX.characters(The Problem Domain package is , 59)
+SAX.startElement(dd)
+SAX.characters(Interface, thats stores and ma, 58)
+SAX.endElement(dd)
+SAX.endElement(dd)
+SAX.endElement(dl)
+SAX.characters(
+, 2)
+SAX.startElement(p)
+SAX.endElement(p)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.error: Unexpected end tag : p
+SAX.characters(
+, 2)
+SAX.startElement(dl)
+SAX.characters(
+
+, 4)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='HumanInterface.FamilyFrame.html#HumanInterface.FamilyFrame')
+SAX.characters(HumanInterface.FamilyFrame, 26)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Birth.html#ProblemDomain.Birth')
+SAX.characters(ProblemDomain.Birth, 19)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Death.html#ProblemDomain.Death')
+SAX.characters(ProblemDomain.Death, 19)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Divorce.html#ProblemDomain.Divorce')
+SAX.characters(ProblemDomain.Divorce, 21)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Family.html#ProblemDomain.Family')
+SAX.characters(ProblemDomain.Family, 20)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Individual.html#ProblemDomain.Individual')
+SAX.characters(ProblemDomain.Individual, 24)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.LifeEvent.html#ProblemDomain.LifeEvent')
+SAX.characters(ProblemDomain.LifeEvent, 23)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Marriage.html#ProblemDomain.Marriage')
+SAX.characters(ProblemDomain.Marriage, 22)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.startElement(dt)
+SAX.startElement(h4)
+SAX.characters(Class , 6)
+SAX.startElement(a, href='ProblemDomain.Note.html#ProblemDomain.Note')
+SAX.characters(ProblemDomain.Note, 18)
+SAX.endElement(a)
+SAX.endElement(h4)
+SAX.endElement(dt)
+SAX.characters(
+, 2)
+SAX.endElement(dl)
+SAX.characters(
+
+, 4)
+SAX.startElement(h4)
+SAX.startElement(b)
+SAX.characters(Links, 5)
+SAX.error: Opening and ending tag mismatch: h4 and b
+SAX.endElement(b)
+SAX.endElement(h4)
+SAX.error: Unexpected end tag : b
+SAX.characters(
+, 2)
+SAX.startElement(ul)
+SAX.startElement(li)
+SAX.startElement(b)
+SAX.characters(Link to , 8)
+SAX.endElement(b)
+SAX.startElement(a, href='HumanInterface.Package.html#HumanInterface.Package')
+SAX.characters(HumanInterface, 14)
+SAX.endElement(a)
+SAX.endElement(li)
+SAX.endElement(ul)
+SAX.characters(
+, 2)
+SAX.startElement(dir)
+SAX.endElement(dir)
+SAX.characters(
+, 2)
+SAX.startElement(ul)
+SAX.startElement(li)
+SAX.startElement(b)
+SAX.characters(Link to , 8)
+SAX.endElement(b)
+SAX.startElement(a, href='DataManagement.FlatFile.Package.html#DataManagement.FlatFile.Package')
+SAX.characters(DataManagement.FlatFile, 23)
+SAX.endElement(a)
+SAX.endElement(li)
+SAX.endElement(ul)
+SAX.characters(
+, 2)
+SAX.startElement(dir)
+SAX.endElement(dir)
+SAX.characters(
+, 2)
+SAX.startElement(ul)
+SAX.startElement(li)
+SAX.startElement(b)
+SAX.characters(Link to , 8)
+SAX.endElement(b)
+SAX.startElement(a, href='DataManagement.Package.html#DataManagement.Package')
+SAX.characters(DataManagement, 14)
+SAX.endElement(a)
+SAX.endElement(li)
+SAX.endElement(ul)
+SAX.characters(
+, 2)
+SAX.startElement(dir)
+SAX.endElement(dir)
+SAX.characters(
+, 2)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+, 2)
+SAX.endDocument()
diff --git a/result/HTML/utf8bug.html b/result/HTML/utf8bug.html
new file mode 100644
index 0000000..66a498a
--- /dev/null
+++ b/result/HTML/utf8bug.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="CSS.css" type="text/css" rel="stylesheet">
+<link rel="SHORTCUT ICON" href="favicon.ico">
+<title>شهير بلاگ</title>
+</head>
+
+<body>
+
+<table border="0" width="100%" id="MainTBL" cellspacing="0" cellpadding="0">
+ <tr>
+ <td class="Header1">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%">
+ <tr>
+ <td>
+ <img border="0" src="Shell/Shahir.ShahidSales1.png" width="442" height="110">
+</td>
+ <td> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td height="28">
+ <div id="SideBar1">
+ <table width="100%">
+ <tr>
+ <td>
+ <span class="Item">
+<a href="Index.asp">
+خانه </a></span> <span class="Item">
+<a href="Contact.asp">
+تماس با من </a></span> <span class="Item">
+<a href="Archive.asp">
+آرشيو </a></span> <span class="Item">
+<a href="Search.asp">
+جستجو در سایت </a></span> <span class="Item">
+<a href="http://shahirblog.com/detail.asp?id=30">
+درباره من </a></span> <span class="Item">
+<a href="RSS2.asp">
+
+<img src="showimage.aspx?path=Files_Upload%5C192.png&amp;width=%&gt;" border="0">
+RSS </a></span> <span class="Item">
+<a href="">
+ </a></span>
+ </td>
+ <td align="left">
+ <div id="DateTime">
+ <p align="left">
+ يکشنبه، 15 ارديبهشت 1387 
+ -  
+ <span dir="ltr">Sunday, May 04, 2008</span>
+ </p>
+</div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" id="Content">
+ <tr>
+ <td class="Right" valign="top" style="padding-right: 60px">
+ <table width="100%">
+ <tr>
+ <td valign="top">
+
+<script>
+var tgs = new Array( 'div','td','tr','a');
+var szs = new Array( '7pt','8pt','9pt','10pt','11pt','12pt','13pt' );
+var startSz = 1;
+
+function ChangeSize( trgt,sz ) {
+ if (!document.getElementById) return
+ var d = document,cEl = null,i,j,cTags;
+
+ if ( !( cEl = d.getElementById( trgt ) ) ) cEl = d.getElementsByTagName( trgt )[ 0 ];
+
+ cEl.style.fontSize = sz;
+
+ for ( i = 0 ; i < tgs.length ; i++ ) {
+ cTags = cEl.getElementsByTagName( tgs[ i ] );
+ for ( j = 0 ; j < cTags.length ; j++ ) cTags[ j ].style.fontSize = sz; //szs[ sz ];
+ }
+}
+</script>
+
+<table width="100%" id="NewsDetail">
+ <tr>
+ <td valign="top">
+ <div class="News_Info">
+ تاريخ درج: <font color="#000000">چهارشنبه، 29 اسÙند 1386
+ - Wednesday, March 19, 2008</font>     
+ نويسنده: <font color="#000000"></font>     
+ دÙعات مشاهده: <font color="#000000">2688</font>
+ بار      كد: <font color="#000000">341</font>
+ </div>
+ <br>
+ <!--
+ <div>&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1601;&#1608;&#1606;&#1578;:&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','7pt')"><font size="1">&#1705;&#1608;&#1670;&#1705;</font></a>&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','10pt')"><font size="2">&#1605;&#1593;&#1605;&#1608;&#1604;&#1740;</font></a>&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','13pt')"><font size="3">&#1576;&#1586;&#1585;&#1711;</font></a>&nbsp;
+ </div>-->
+
+
+ <div class="Titr1">
+ </div>
+ <br>
+ <div id="NewsBody">
+
+ <div class="Image">
+
+ <a href="showimage.aspx?path=Files_Upload%5C302.JPG&amp;Width=" rel="lightbox" title="شهير بلاگ">
+ <img src="showimage.aspx?path=Files_Upload%5C302.JPG&amp;Width=220" align="left" border="1">
+ </a>
+</div>
+ <strong><font size="4"><font color="#0000ff">عکس</font> <font color="#0000ff">محصول هنر یکی از همکاران است. روی آن کلیک کند.</font></font></strong><s1> </s1>
+</div>
+ <br>
+ <div align="left">
+ <a href="printfriendly.asp?id=341">
+ <img src="shell/PrintFriendly.png" border="0"></a>
+ <a href="#" onclick="window.open('SendNews.asp?PageID=341','myWin','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=no,width=500, height=200'); return false">
+ <img border="0" src="Shell/SendToFriends.jpg" width="140" height="30">
+ </a>
+ </div>
+ <br>
+ </td>
+ </tr>
+ <tr>
+ <td> <br>
+ <hr>
+<div id="Comments"><ul>
+<b>نظرات
+ کاربران:</b><br><li>
+<font color="blue">حاجی جÙرسون:</font><br><font size="1">4/5/2008 -
+ 7:08:00 PM</font><br>با درود به شما... بدون هیچ گونه طنز
+ و دستکاری توسط حاجی دایی نقل شده است این ها که در بیان جدی
+ اینقدر طناز هستند وای به روزی که بخواهند طنز بنویسند. ببین
+ شهیر جان چه کسانی سر جوانان ما را با اصلاحات 8 سال گول
+ مالیدند.. این ها را بخوانید :::::((دبيركل مجمع اسلامي بانوان
+ Ú¯Ùت: به نظر مي‌رسد آقاي خاتمي قصد Ùاصله گرÙتن از تندروها
+ را ندارد Ùˆ تا اين روند ادامه دارد ما با تندروها در يك ائتلاÙ
+ شركت نمي‌كنيم. به گزارش خبرنگار سياسي خبرگزاري Ùارس،
+ Ùاطمه كروبي دبيركل مجمع اسلامي بانوان عصر امروز شنبه در جمع
+ خبرنگاران رسانه‌هاي گروهي روند برگزاري انتخابات هشتمين
+ دوره مجلس شوراي اسلامي را تحليل كرد. وي ضمن برشمردن مرزبندي خود
+ با جربان تندروي اصلاح طلب اÙزود: اين ما نيستيم كه با ستاد ائتلاÙ
+ اصلاح طلبان اختلا٠داريم اما انحصارگري برخي از گروه‌ها
+ جريان اصلاحات را دچار از هم‌گسستگي كرد. داوطلب هشتمين دوره
+ انتخابات مجلس شوراي اسلامي درباره تشكيل ستاد مردمي اصلاحات خاطر
+ نشان كرد: آقاي خاتمي به توصيه‌ها و نظرات دوستانشان توجهي
+ ندارند و اگر اين امكان وجود داشت كه همه جريانات اصلاح طلب زير
+ يك عنوان Ùعاليت كنند حتما از آن استقبال مي‌كرديم اما به
+ نظر نمي‌رسد كه آقاي خاتمي بخواهد از تندروها Ùاصله بگيرد Ùˆ
+ تا اين روند ادامه داشته باشد ما با تندروها در يك ائتلا٠شركت
+ نمي‌كنيم. وي در مورد شركت تشكل متبوع خود در مرحله بعدي
+ انتخابات مجلس Ú¯Ùت: برخي از كانديداهاي نزديك به ما به مرحله دوم
+ انتخابات راه ياÙته‌اند Ùˆ ما با تمام توان در اين مرحله از
+ آنها دÙاع خواهيم كرد. كروبي تاكيد كرد: گروهي انحصارگر با
+ اقدامات غيرعقلاني و تندروي‌هاي خود اتوبوس اصلاحات را در دره
+ سرنگون كردند)))) لطÙا پیدا کنید پرتقال Ùروش را......واقعا این
+ ها می خواهند دوباره وارد مجلس و دولت شوند.....اووووووووووووووو
+ لالالالالالا........نه!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! البته این
+ مجمع بانوان بیشتر به سÙره های نذر Ùˆ سبزی پاک کردن های خونه
+ مامان بزرگ و خاله زنک بازی های عصر قاجاریه و مجلس پا تختی و
+ حنا بندون عروس شباهت دارد. مهندس جان گویا ما از دست این ....و
+ عیالش باید برویم گوشه همان ابدارخانه و شاغلام و چایی
+ دیشلمه....شما تشری٠نمی آورید؟</li>
+<br><br><li>
+<font color="blue">سیاوش:</font><br><font size="1">4/3/2008 - 9:28:00 PM</font><br>مرد هزار چهره مرد هزار چهره کیست؟شخصیتی ساخته Ùˆ پرداخته مهران مدیری، پیمان قاسم خانی Ùˆ دیگر نویسندگان؟ تنها هدÙØ´ آنست Ú©Ù‡ چند روز تعطیلات، مارا سرگم کند Ùˆ دیگر هیچ؟ مرد هزار چهره یک طنز است یک طنز تلخ، برداشتی واقعی از جامعه ایرانی. من جوانم پس دردآشنای جوانانم Ùˆ خود را با خود Ùˆ دیگر جوانان طر٠می کنم بسیار اند جوانانی Ú©Ù‡ مصداق مرد هزار چهره هستند جوانانی سودا زده یا به قول خود مسعود "جو گیر" Ú©Ù‡ هر با محصولی کهنه را با تعریÙÛŒ جدید به آنها ارائه کنند چنان با تمام Ùˆ جود Ù…ÛŒ پذیرند Ú©Ù‡ گویی راه Ùائق آمدن بر تمام مشکلاتشان را یاÙته اند Ùˆ Ù…ÛŒ خرند، خواه این تحÙÙ‡ تئوری بر گرÙته از تÙکرات خشک Ùˆ Ùسیلی گروهی باشد یا مدل ملیجک وار لباسی در پشت ویترین Ùروشگاه. مهم نیست Ú†Ù‡ باشد! مهم نیست دلیل انتخابش Ú†Ù‡ باشد! مهم نیست نتیجه این انتخاب چیست! تنها مهم است Ú©Ù‡ Ù…ÛŒ گویند از این طر٠بÙرمائید!حال این بÙرمائید Ú†Ù‡ معنایی دارد باز هم مهم نیست!!! وای بر ما Ú©Ù‡ نه خود را Ù…ÛŒ شناسیم Ùˆ نه در جهت شناخت خویش قدم Ù…ÛŒ گذاریم. وای بر ما Ú©Ù‡ دیگر حتی ندای درون خویش را نمی توانیم بشنویم. وای بر ما Ú©Ù‡ نمی دانیم Ú†Ù‡ Ù…ÛŒ خواهیم Ùˆ هر بار Ú©Ù‡ چیزی Ù…ÛŒ خواهیم Ùˆ در مسیر وصال پا Ù…ÛŒ گذاریم به میانه راه نرسیده چنان مجذوب زرق Ùˆ برق راههای دیگر Ù…ÛŒ شویم Ú©Ù‡ مبدا Ùˆ مقصد را یکجا Ùراموش Ù…ÛŒ کنیم. وای بر ما Ú©Ù‡ نمی توانیم در برابر هر آنچه در مقابل انسانیت ما ایستاده "نه"بگوییم. درست است Ú©Ù‡ ما جوانان به تنهایی مقصر نیستیم اما چون شروع تقصیریم پس Ù…ÛŒ توانیم از ابتدا مانع مشکل هم باشیم. با احترام سیاوش<br>
+ <br>
+<font color="#800000">بسیار زیبا سیاوش جان. درود بر تو. شهیر</font>
+</li>
+<br><br><li>
+<font color="blue">احسان __ خط سوم:</font><br><font size="1">4/3/2008 - 8:21:00 PM</font><br>با سلام Ùˆ ادای احترام وکسب اجازه از شهیر عزیز . از عماد جان عزیزم بخاطر زحمتی Ú©Ù‡ کشیدند Ùˆ اطلاعات خوبی Ú©Ù‡ دادند ØŒ به سهم خودم تشکر Ù…ÛŒ کنم . با کمال شرمندگی از اینکه "بدون هماهنگی" Ùˆ " اجازه ای قبلی شما" Ùˆ "بسرعت" ØŒ معدود اشتباهات تایپی را Ú©Ù‡ با توجه به حجم مطلب ØŒ امری کاملا اجتناب ناپذیر است ØŒ سعی کردم Ú©Ù‡ اصلاح کنم ØŒ از شما پوزش Ù…ÛŒ خواهم . البته عماد جان عزیزم ØŒ بد نیست بدانید Ú©Ù‡ در میزان اشتباه در تایپ هرگز به پای بنده نخواهید رسید ! شاهد ادعای حقیر، شهیر Ùˆ حسین جان عزیزم هستند Ú©Ù‡ خبردارند Ú©Ù‡ چگونه بنده در یک Ùقره عملیات تایپ ØŒ دو صÙحه ای کامل را جا انداختم !!! کاÙÛŒ است بپرسید ØŒ در نهایت صداقت ØŒ بر این رکورد بی نظیر Ùˆ تاریخی شهادت خواهند داد ! باز هم از زحمات عماد جان Ùˆ نیز سوالات خوب حسین جان تشکر Ù…ÛŒ کنم Ú©Ù‡ ان وعده ای مقاله ای عیدانه ای Ù…Ùصل شهیر را در باره ای زنده یاد مرحوم مصدق ØŒ در وسع خود بجای اوردند . ضمن انکه هیچکدام از دوستان، این زحمت ارزشمند عماد جان را دلیل ان نخواهند دانست Ú©Ù‡ شهیرعزیز بعد از بازگشت از مساÙرت ØŒ سر Ùرصت وعده ای خود را عمل نکنند . مشتاقانه اما نه عجولانه ØŒ منتظر مقاله ای شهیر هم خواهیم ماند. با احترام : احسان<br>
+ <br>
+<font color="#800000">احسان جان، من Ùکر کردم قضیه شامل مرور زمان شده است. تا امروز Ú©Ù‡ نرسیده ام دست به این پروژه بزنم. اگر عشق به Ø­Ùظ ارتباط با شما ها نبود تا روز 25 اپریل به خودم مرخصی Ù…ÛŒ دادم. در این سÙر خدا Ù…ÛŒ داند چند هزار مایل در 3 قاره را پیموده ام. از پوست Ú©Ù„Ùت خودم در عجبم Ú©Ù‡ چطوری تونستم اخبار را دنبال کنم Ùˆ چند مقاله کوتاه بنویسم. گرÙتاری زیاد بود. شهیر</font>
+</li>
+<br><br><li>
+<font color="blue">عماد Û²Û´ ساله از اصÙهان:</font><br><font size="1">4/3/2008 - 7:14:00 PM</font><br>شهير جان اگر طولانی شد ببخشيد چاره ای نبود احسان جان از Ú©Ù…Ú© شما نيز در ويرايش اين مطلب متشکرم اميدوارم حسين عزیز نيز راضی باشد<br>
+ <br>
+<font color="#800000">ممنون از زحمتی که کشیدی عماد جان. شهیر</font>
+</li>
+<br><br><li>
+<font color="blue">حسین:</font><br><font size="1">4/3/2008 - 7:04:00 PM</font><br>سلام آقا شهیر با اجازه شما خواستم از عماد عزیز وهمچنین سرور بزرگوار آقااحسان تشکر کنم وبه آقا عمادبگویم دستت درد نکنه بابت زحمتت ÙˆÙوق العاده عالی بود.قسمتی Ú©Ù‡ نوشتید" خود دکتر مصدق در تقریراتشان به اشتباه بودن تصمیمشان مبنی بر استعÙاء اقرار Ù…ÛŒ کنند"واقعا جالب وحاکی از روح بلند دکتر مصدق هست .بااینکه سوالات خرد وریز زیاد هست اما از اینکه به سوالات عمده من با توجه به کتاب دکتر مصدق پاسخ دادید بازهم تشکر میکنم .میخواستم این پاسخ را برای نویسنده مقاله رجانیوز copy&amp;paste <br>
+کنم Ú¯Ùتم شاید هرچند به احتمال ضعی٠برای سایت دوست داشتنی آقا شهیر مشکلی پیش
+آید.خواستم با حذ٠نام آقا شهیر وشما از کامنت اینکار را بکنم احتمال دادم راضی
+نباشید .بنابراین Ùعلا علیرغم میل Ùراوان از اینکار صر٠نظر کردم .بهرحال بازهم
+ممنون ومتشکر </li>
+<br><br><li>
+<font color="blue">حاجی جÙرسون:</font><br><font size="1">4/3/2008 - 6:06:00 PM FOO!</font><br>با درود از قدیم Ú¯Ùته اند Ú©Ù‡ یک کلمه هم از مادر عروس بشنوید. بنابراین به اÙاضات اخیر کشور دوست Ùˆ برادر Ùˆ سوسیالیست چین عزیز Ùˆ جان جانان کمونیست عنایت بÙرمایید: رادیو Ùردا: ديپلمات ها در وين Ú¯Ùته اند: Ú©Ù‡ چين، از مخالÙان تشديد تحريم های ايران در شورای امينت، اطلاعات خود درباره ارتباط برنامه هسته ای تهران با تلاش برای دستيابی سلاح اتمی را در اختيار آژانس بين المللی انرژی اتمی قرار داده است. العجب!!!!!! انتخاب :با وجود اینکه چین به شدت با تحریمهای شورای امنیت سازمان ملل علیه ایران مخالÙت Ù…ÛŒ کرد، اطلاعاتی در رابطه با Ùعالیتهای هسته ای ایران در اختیار مقامات آژانس بین المللی انرژی اتمی قرار داده Ú©Ù‡ بر اساس آن ایران در تلاش برای دست یابی به سلاح های اتمی است. به گزارش خبرنگار سرویس بین الملل خبرگزاری انتخاب به نقل از Ùاکس نیوز؛جان بولتون ،نمایندۀ پیشین ایالات متحدۀ امریکا در سازمان ملل،در این باره Ú¯Ùت: اقدام اینچنینی از سوی چین به دلیل روابط نظامی Ú©Ù‡ میان دو کشور [ایران Ùˆ چین] برقرار است، بسیار قابل توجه است. خبرنگار انتخاب Ù…ÛŒ اÙزاید؛ در حالی چین به این اقدام دست زده است Ú©Ù‡ همکاری های تجاری Ùˆ نظامی ایران با این کشور بطور بی سابقه ای اÙزایش یاÙته است. یا باب الحوائج!!!!! رادیو زمانه: چین با وجود مخالÙت با تحریم‌های شدید شورای امنیت علیه تهران، اطلاعاتی درباره تلاش‌های تهران برای ساخت تسلیحات هسته‌ای به آژانس بین‌المللی انرژی اتمی ارائه کرده است. آسوشیتدپرس با اعلام این خبر به نقل از چند دیپلمات آشنا با پرونده هسته‌ای ایران نوشت، Ù¾Ú©Ù† به همراه مسکو همواره بر سر راه شورای امنیت Ùˆ امریکا برای اعمال مجازات های سخت تر علیه تهران به دلیل مقاومت هسته ای این کشور به صورت یک مانع عمل کرده‌اند. این گزارش Ù…ÛŒ اÙزاید، تصمیم چین برای ارائه اطلاعاتی جهت استÙاده در تحقیقات آژانس انرژی اتمی درباره برنامه تسلیحات هسته‌ای ایران، گویای اÙزایش نارضایتی بین‌المللی درباره برنامه هسته‌ای جمهوری اسلامی است Ú©Ù‡ حتی تلاش برای ساخت چنین تسلیحاتی را نیز تکذیب می‌کند. بر اساس این گزارش، دو دیپلمات بلندپایه Ú©Ù‡ ارتباط نزدیکی با آژانس بین‌المللی انرژی اتمی دارند این اقدام چین را برملا کرده‌اند. آژانس بین‌المللی انرژی اتمی از اظهار نظر در این باره خودداری کرده است. العجب. من مامور Ùˆ معذور..حالا از پدر عروس چند کلمه بشنوید: سخنگوی آژانس بین المللی انرژی اتمی ادعای برخی از رسانه های غربی را درباره این Ú©Ù‡ چین اطلاعاتی را درباره برنامه هسته ای ایران در اختیار آژانس قرار داده است ØŒ تکذیب کرد . ملیسا Ùلمینگ در Ú¯Ùت Ùˆ Ú¯Ùˆ با خبرنگار واحد مرکزی خبر تاکید کرد : آژانس بین المللی انرژی اتمی هرگز درباره اطلاعات محرمانه دریاÙتی از کشورها اظهار نظر نمی کند . ÙˆÛŒ Ú¯Ùت: هم
+</li>
+</ul></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/result/HTML/utf8bug.html.err b/result/HTML/utf8bug.html.err
new file mode 100644
index 0000000..a6ef047
--- /dev/null
+++ b/result/HTML/utf8bug.html.err
@@ -0,0 +1,15 @@
+./test/HTML/utf8bug.html:45: HTML parser error : htmlParseEntityRef: expecting ';'
+<img src="showimage.aspx?path=Files_Upload\192.png&width=%>" border="0" />
+ ^
+./test/HTML/utf8bug.html:118: HTML parser error : htmlParseEntityRef: expecting ';'
+ <a href="showimage.aspx?path=Files_Upload\302.JPG&Width=" rel="lightbox" tit
+ ^
+./test/HTML/utf8bug.html:119: HTML parser error : htmlParseEntityRef: expecting ';'
+ <img src="showimage.aspx?path=Files_Upload\302.JPG&Width=220" align="left" b
+ ^
+./test/HTML/utf8bug.html:121: HTML parser error : Tag s1 invalid
+ز همکاران است. روی آن کلیک کند.</FONT></FONT></STRONG><S1
+ ^
+./test/HTML/utf8bug.html:177: HTML parser error : htmlParseEntityRef: expecting ';'
+§ÛŒÙ† پاسخ را برای نویسنده مقاله رجانیوز copy&paste
+ ^
diff --git a/result/HTML/utf8bug.html.sax b/result/HTML/utf8bug.html.sax
new file mode 100644
index 0000000..06cdb15
--- /dev/null
+++ b/result/HTML/utf8bug.html.sax
@@ -0,0 +1,737 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.startElement(head)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, http-equiv='Content-Language', content='en-us')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(meta, http-equiv='Content-Type', content='text/html; charset=utf-8')
+SAX.endElement(meta)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(link, href='CSS.css', type='text/css', rel='stylesheet')
+SAX.endElement(link)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(link, rel='SHORTCUT ICON', href='favicon.ico')
+SAX.endElement(link)
+SAX.ignorableWhitespace(
+, 1)
+SAX.startElement(title)
+SAX.characters(&#1588;&#1607;&#1610;&#1585; , 17)
+SAX.endElement(title)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(head)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.startElement(body)
+SAX.characters(
+
+, 2)
+SAX.startElement(table, border='0', width='100%', id='MainTBL', cellspacing='0', cellpadding='0')
+SAX.characters(
+ , 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td, class='Header1')
+SAX.characters(
+ , 3)
+SAX.startElement(table, border='0', width='100%', cellspacing='0', cellpadding='0', height='100%')
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td)
+SAX.characters(
+ , 5)
+SAX.startElement(img, border='0', src='Shell/Shahir.ShahidSales1.png', width='442', height='110')
+SAX.endElement(img)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.startElement(td)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+ , 4)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.endElement(table)
+SAX.characters(
+ , 3)
+SAX.endElement(td)
+SAX.characters(
+ , 2)
+SAX.endElement(tr)
+SAX.characters(
+ , 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td, height='28')
+SAX.characters(
+ , 4)
+SAX.startElement(div, id='SideBar1')
+SAX.characters(
+ , 5)
+SAX.startElement(table, width='100%')
+SAX.characters(
+ , 5)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td)
+SAX.characters(
+ , 6)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='Index.asp')
+SAX.characters(
+&#1582;&#1575;&#1606;&#1607; , 10)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters( , 1)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='Contact.asp')
+SAX.characters(
+&#1578;&#1605;&#1575;&#1587; , 20)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters( , 1)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='Archive.asp')
+SAX.characters(
+&#1570;&#1585;&#1588;&#1610;, 12)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters( , 1)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='Search.asp')
+SAX.characters(
+&#1580;&#1587;&#1578;&#1580;, 26)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters( , 1)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://shahirblog.com/detail.asp?id=30')
+SAX.characters(
+&#1583;&#1585;&#1576;&#1575;, 19)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters( , 1)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='RSS2.asp')
+SAX.characters(
+
+, 2)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(img, src='showimage.aspx?path=Files_Upload\192.png&amp;width=%&gt;', border='0')
+SAX.endElement(img)
+SAX.characters(
+RSS , 5)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters( , 1)
+SAX.startElement(span, class='Item')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='')
+SAX.characters(
+ , 2)
+SAX.endElement(a)
+SAX.endElement(span)
+SAX.characters(
+ , 5)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.startElement(td, align='left')
+SAX.characters(
+ , 5)
+SAX.startElement(div, id='DateTime')
+SAX.characters(
+ , 5)
+SAX.startElement(p, align='left')
+SAX.characters(
+ , 5)
+SAX.characters(&#1610;, 2)
+SAX.characters(&#1705;, 2)
+SAX.characters(&#1588;, 2)
+SAX.characters(&#1606;, 2)
+SAX.characters(&#1576;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(&#1548;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(15, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1583;, 2)
+SAX.characters(&#1610;, 2)
+SAX.characters(&#1576;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(&#1588;, 2)
+SAX.characters(&#1578;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(1387, 4)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+ -, 7)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+ , 6)
+SAX.startElement(span, dir='ltr')
+SAX.characters(Sunday, May 04, 2008, 20)
+SAX.endElement(span)
+SAX.characters(
+ , 5)
+SAX.endElement(p)
+SAX.endElement(div)
+SAX.characters(
+ , 5)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.endElement(tr)
+SAX.characters(
+ , 5)
+SAX.endElement(table)
+SAX.characters(
+ , 4)
+SAX.endElement(div)
+SAX.characters(
+ , 3)
+SAX.endElement(td)
+SAX.characters(
+ , 2)
+SAX.endElement(tr)
+SAX.characters(
+ , 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td, valign='top')
+SAX.characters(
+ , 3)
+SAX.startElement(table, border='0', width='100%', cellspacing='0', cellpadding='0', id='Content')
+SAX.characters(
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td, class='Right', valign='top', style='padding-right: 60px')
+SAX.characters(
+ , 6)
+SAX.startElement(table, width='100%')
+SAX.characters(
+ , 7)
+SAX.startElement(tr)
+SAX.characters(
+ , 8)
+SAX.startElement(td, valign='top')
+SAX.characters(
+
+, 10)
+SAX.startElement(script)
+SAX.cdata(
+var tgs = new Array( 'div','t, 539)
+SAX.endElement(script)
+SAX.characters(
+
+, 2)
+SAX.startElement(table, width='100%', id='NewsDetail')
+SAX.characters(
+ , 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td, valign='top')
+SAX.characters(
+ , 3)
+SAX.startElement(div, class='News_Info')
+SAX.characters(
+ , 4)
+SAX.characters(&#1578;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1610;, 2)
+SAX.characters(&#1582;, 2)
+SAX.characters( , 1)
+SAX.characters(&#1583;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1580;, 2)
+SAX.characters(: , 2)
+SAX.startElement(font, color='#000000')
+SAX.characters(&#1670;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1588;, 2)
+SAX.characters(&#1606;, 2)
+SAX.characters(&#1576;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(&#1548;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(29, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1587;, 2)
+SAX.characters(&#1601;, 2)
+SAX.characters(&#1606;, 2)
+SAX.characters(&#1583;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(1386
+ - Wednesday, March 19, 36)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+ , 5)
+SAX.characters(&#1606;, 2)
+SAX.characters(&#1608;, 2)
+SAX.characters(&#1610;, 2)
+SAX.characters(&#1587;, 2)
+SAX.characters(&#1606;, 2)
+SAX.characters(&#1583;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(: , 2)
+SAX.startElement(font, color='#000000')
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+ , 5)
+SAX.characters(&#1583;, 2)
+SAX.characters(&#1601;, 2)
+SAX.characters(&#1593;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1578;, 2)
+SAX.characters( , 1)
+SAX.characters(&#1605;, 2)
+SAX.characters(&#1588;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(&#1583;, 2)
+SAX.characters(&#1607;, 2)
+SAX.characters(: , 2)
+SAX.startElement(font, color='#000000')
+SAX.characters(2688, 4)
+SAX.endElement(font)
+SAX.characters(
+ , 5)
+SAX.characters(&#1576;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters( , 1)
+SAX.characters(&#1603;, 2)
+SAX.characters(&#1583;, 2)
+SAX.characters(: , 2)
+SAX.startElement(font, color='#000000')
+SAX.characters(341, 3)
+SAX.endElement(font)
+SAX.characters(
+ , 3)
+SAX.endElement(div)
+SAX.characters(
+ , 3)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.comment(
+ <div>&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1601;&#1608;&#1606;&#1578;:&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','7pt')"><font size="1">&#1705;&#1608;&#1670;&#1705;</font></a>&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','10pt')"><font size="2">&#1605;&#1593;&#1605;&#1608;&#1604;&#1740;</font></a>&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','13pt')"><font size="3">&#1576;&#1586;&#1585;&#1711;</font></a>&nbsp;
+ </div>)
+SAX.characters(
+
+
+ , 7)
+SAX.startElement(div, class='Titr1')
+SAX.characters(
+ , 5)
+SAX.endElement(div)
+SAX.characters(
+ , 3)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.startElement(div, id='NewsBody')
+SAX.characters(
+
+ , 8)
+SAX.startElement(div, class='Image')
+SAX.characters(
+
+ , 10)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(a, href='showimage.aspx?path=Files_Upload\302.JPG&amp;Width=', rel='lightbox', title='&#1588;&#1607;&#1610;&#1585; &#1576;&#1604;&#1575;&#1711;')
+SAX.characters(
+ , 5)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(img, src='showimage.aspx?path=Files_Upload\302.JPG&amp;Width=220', align='left', border='1')
+SAX.endElement(img)
+SAX.characters(
+ , 5)
+SAX.endElement(a)
+SAX.endElement(div)
+SAX.characters(
+ , 4)
+SAX.startElement(strong)
+SAX.startElement(font, size='4')
+SAX.startElement(font, color='#0000ff')
+SAX.characters(&#1593;&#1705;&#1587;, 6)
+SAX.endElement(font)
+SAX.characters( , 1)
+SAX.startElement(font, color='#0000ff')
+SAX.characters(&#1605;&#1581;&#1589;&#1608;, 81)
+SAX.endElement(font)
+SAX.endElement(font)
+SAX.endElement(strong)
+SAX.startElement(s1)
+SAX.error: Tag s1 invalid
+SAX.characters( , 2)
+SAX.endElement(s1)
+SAX.endElement(div)
+SAX.characters(
+ , 3)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.startElement(div, align='left')
+SAX.characters(
+ , 4)
+SAX.startElement(a, href='printfriendly.asp?id=341')
+SAX.characters(
+ , 4)
+SAX.startElement(img, src='shell/PrintFriendly.png', border='0')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.characters(
+ , 4)
+SAX.startElement(a, href='#', onclick='window.open(&apos;SendNews.asp?PageID=341&apos;,&apos;myWin&apos;,&apos;toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=no,width=500, height=200&apos;); return false')
+SAX.characters(
+ , 4)
+SAX.startElement(img, border='0', src='Shell/SendToFriends.jpg', width='140', height='30')
+SAX.endElement(img)
+SAX.characters(
+ , 4)
+SAX.endElement(a)
+SAX.characters(
+ , 3)
+SAX.endElement(div)
+SAX.characters(
+ , 3)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.endElement(td)
+SAX.characters(
+ , 2)
+SAX.endElement(tr)
+SAX.characters(
+ , 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.startElement(hr)
+SAX.endElement(hr)
+SAX.startElement(div, id='Comments')
+SAX.startElement(ul)
+SAX.startElement(b)
+SAX.characters(&#1606;, 2)
+SAX.characters(&#1592;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1578;, 2)
+SAX.characters(
+ , 3)
+SAX.characters(&#1705;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1576;, 2)
+SAX.characters(&#1585;, 2)
+SAX.characters(&#1575;, 2)
+SAX.characters(&#1606;, 2)
+SAX.characters(:, 1)
+SAX.endElement(b)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(li)
+SAX.startElement(font, color='blue')
+SAX.characters(&#1581;&#1575;&#1580;&#1740; , 22)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(4/5/2008 -
+ 7:08:00 PM, 23)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&#1576;&#1575; &#1583;&#1585;, 28)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&#1576;&#1583;&#1608;&#1606; , 476)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1585;&#1587;&#1583; &#1570;, 203)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1603;&#1606;&#1610;&#1605;. , 222)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1607;&#1575;&#1610; &#1711;, 403)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1607;&#1575;
+ &#1580;, 56)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1711;&#1587;&#1587;&#1578;, 230)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1607;&#1575; &#1608; &#1606;, 240)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1603;&#1585;&#1583;&#1610;, 38)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1585;&#1587;&#1583; &#1603;, 209)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1603;&#1606;&#1610;&#1605;. , 241)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1606;&#1583; &#1608; , 221)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1607;&#1575;&#1610; &#1582;, 848)
+SAX.endElement(li)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(li)
+SAX.startElement(font, color='blue')
+SAX.characters(&#1587;&#1740;&#1575;&#1608;, 11)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(4/3/2008 - 9:28:00 PM, 21)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&#1605;&#1585;&#1583; &#1607;, 693)
+SAX.characters(", 1)
+SAX.characters(&#1580;&#1608; &#1711;&#1740;, 11)
+SAX.characters(", 1)
+SAX.characters( &#1705;&#1607; &#1607;&#1585;, 1000)
+SAX.characters( &#1608;&#1575;&#1740; &#1576;, 460)
+SAX.characters(", 1)
+SAX.characters(&#1606;&#1607;, 4)
+SAX.characters(", 1)
+SAX.characters(&#1576;&#1711;&#1608;&#1740;, 233)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(font, color='#800000')
+SAX.characters(&#1576;&#1587;&#1740;&#1575;, 67)
+SAX.endElement(font)
+SAX.endElement(li)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(li)
+SAX.startElement(font, color='blue')
+SAX.characters(&#1575;&#1581;&#1587;&#1575;, 26)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(4/3/2008 - 8:21:00 PM, 21)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&#1576;&#1575; &#1587;&#1604;, 291)
+SAX.characters(", 1)
+SAX.characters(&#1576;&#1583;&#1608;&#1606; , 23)
+SAX.characters(", 1)
+SAX.characters( &#1608; , 4)
+SAX.characters(", 1)
+SAX.characters( &#1575;&#1580;&#1575;&#1586;, 32)
+SAX.characters(", 1)
+SAX.characters( &#1608; , 4)
+SAX.characters(", 1)
+SAX.characters(&#1576;&#1587;&#1585;&#1593;, 10)
+SAX.characters(", 1)
+SAX.characters( &#1548; &#1605;&#1593;&#1583;, 1001)
+SAX.characters(&#1583; &#1605;&#1585;&#1581;, 481)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(font, color='#800000')
+SAX.characters(&#1575;&#1581;&#1587;&#1575;, 602)
+SAX.endElement(font)
+SAX.endElement(li)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(li)
+SAX.startElement(font, color='blue')
+SAX.characters(&#1593;&#1605;&#1575;&#1583; , 41)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(4/3/2008 - 7:14:00 PM, 21)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&#1588;&#1607;&#1610;&#1585; , 227)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(font, color='#800000')
+SAX.characters(&#1605;&#1605;&#1606;&#1608;, 68)
+SAX.endElement(font)
+SAX.endElement(li)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(li)
+SAX.startElement(font, color='blue')
+SAX.characters(&#1581;&#1587;&#1740;&#1606;:, 9)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(4/3/2008 - 7:04:00 PM, 21)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&#1587;&#1604;&#1575;&#1605; , 834)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.characters(&amp;, 1)
+SAX.characters(paste, 5)
+SAX.characters( , 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+&#1705;&#1606;&#1605; &#1711;, 440)
+SAX.endElement(li)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(li)
+SAX.startElement(font, color='blue')
+SAX.characters(&#1581;&#1575;&#1580;&#1740; , 22)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1')
+SAX.characters(4/3/2008 - 6:06:00 PM FOO!, 26)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&#1576;&#1575; &#1583;&#1585;, 1000)
+SAX.characters(&#1688;&#1575;&#1606;&#1587; , 999)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1607;&#1575;&#1740; &#1588;, 98)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1607;&#1575;&#1740; &#1578;, 59)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1740; &#1576;&#1607; , 27)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1604;&#1605;&#1604;, 186)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1740; &#1575;&#1740;, 299)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1606;&#1583;. &#1575;, 223)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1740; &#1575;&#1740;, 65)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1604;&#1605;&#1604;, 47)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1740; &#1580;&#1605;, 130)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1705;&#1606;&#1583;. &#1576;, 132)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1604;&#1605;&#1604;, 93)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1606;&#1583;. &#1570;, 25)
+SAX.characters(&zwnj;, 3)
+SAX.characters(&#1575;&#1604;&#1605;&#1604;, 814)
+SAX.endElement(li)
+SAX.endElement(ul)
+SAX.endElement(div)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(table)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/wired.html b/result/HTML/wired.html
new file mode 100644
index 0000000..74d366e
--- /dev/null
+++ b/result/HTML/wired.html
@@ -0,0 +1,576 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- Vignette StoryServer 4 Fri Oct 15 11:37:12 1999 --><html>
+<head><title>Top Stories News from Wired News</title></head>
+<body bgcolor="#FFFFFF" text="#000000" link="#333399" vlink="#660066" alink="#666699">
+
+<table border="0" width="600" cellspacing="0" cellpadding="0">
+ <tr>
+ <td valign="top" align="LEFT"><table border="0" cellpadding="0" cellspacing="0" width="468" height="60" bgcolor="#FFFFFF">
+<form method="GET" action="http://nsads.hotwired.com/event.ng/Type=click&amp;ProfileID=9688&amp;RunID=14074&amp;AdID=22584&amp;GroupID=1&amp;FamilyID=2684&amp;TagValues=8.25.156.159.166.171.172.174.179.180.181.182.183.196.197.199.208.389.412.436.2041.6750.78456.79630.81880&amp;Redirect=http://www.springstreet.com/aa/citysearch.htm" id="form1" name="form1">
+<tr>
+<td bgcolor="#330099"><input name="city" type="text" size="7" maxlength="20" value="Seattle"></td>
+<td rowspan="2" align="LEFT" bgcolor="FFFFFF"><input type="IMAGE" src="http://static.wired.com/advertising/blipverts/allapartments/990625jpa_ssthome.gif" width="375" height="60" border="0" value="search" hspace="0" alt="Search over 6,000,000 Apts with SpringStreet"></td>
+</tr>
+<tr><td bgcolor="#330099">
+<select name="state">
+<option value="WA" selected>WA
+</option>
+<option value="AL">AL</option>
+<option value="AK">AK</option>
+<option value="AZ">AZ</option>
+<option value="AR">AR</option>
+<option value="CA">CA</option>
+<option value="CO">CO</option>
+<option value="CT">CT</option>
+<option value="DE">DE</option>
+<option value="DC">DC</option>
+<option value="FL">FL</option>
+<option value="GA">GA</option>
+<option value="HI">HI</option>
+<option value="ID">ID</option>
+<option value="IL">IL</option>
+<option value="IN">IN</option>
+<option value="IA">IA</option>
+<option value="KS">KS</option>
+<option value="KY">KY</option>
+<option value="LA">LA</option>
+<option value="ME">ME</option>
+<option value="MD">MD</option>
+<option value="MA">MA</option>
+<option value="MI">MI</option>
+<option value="MN">MN</option>
+<option value="MS">MS</option>
+<option value="MO">MO</option>
+<option value="MT">MT</option>
+<option value="NE">NE</option>
+<option value="NV">NV</option>
+<option value="NH">NH</option>
+<option value="NJ">NJ</option>
+<option value="NM">NM</option>
+<option value="NY">NY</option>
+<option value="NC">NC</option>
+<option value="ND">ND</option>
+<option value="OH">OH</option>
+<option value="OK">OK</option>
+<option value="OR">OR</option>
+<option value="PA">PA</option>
+<option value="PR">PR</option>
+<option value="RI">RI</option>
+<option value="SC">SC</option>
+<option value="SD">SD</option>
+<option value="TN">TN</option>
+<option value="TX">TX</option>
+<option value="UT">UT</option>
+<option value="VT">VT</option>
+<option value="VA">VA</option>
+<option value="WA">WA</option>
+<option value="WV">WV</option>
+<option value="WI">WI</option>
+<option value="WY">WY</option>
+</select><input type="hidden" name="source" value="2hb8bhc059">
+</td></tr>
+</form>
+</table></td>
+ <td valign="top" align="RIGHT"><a href="http://nsads.hotwired.com/event.ng/Type=click&amp;ProfileID=5597&amp;RunID=17167&amp;AdID=22588&amp;GroupID=1&amp;FamilyID=3228&amp;TagValues=8.25.159.171.172.174.179.180.181.182.183.196.197.199.208.241.389.412.436.2035.6749.6750.70367.78456.79630.81880&amp;Redirect=http:%2F%2Fwww.hp.com%2Fgo%2Foriginal%20" target="_top"><img src="http://static.wired.com/advertising/blipverts/hp_colorinkjet/hp_970c_120x60_6.gif" border="1" height="60" width="120" alt="True to the Original"></a></td>
+ </tr>
+</table>
+
+<!-- WIRED NEWS header -->
+<!-- CMD_HOST = scoop.hotwired.com -->
+
+<a name="#"></a>
+<table border="0" width="600" cellspacing="0" cellpadding="0">
+
+ <tr>
+<td></td>
+<td colspan="2"><img src="http://static.wired.com/news/images/spacer.gif" height="5" width="447" alt=""></td>
+</tr>
+
+ <tr>
+ <td valign="BOTTOM" align="RIGHT" class="wired" bgcolor="#FFFFFF"><a href="/news/0,1287,,00.html"><img src="http://static.wired.com/news/images/wired_000000.gif" width="153" height="30" border="0"></a></td>
+ <td bgcolor="#FF0000" valign="BOTTOM" align="LEFT" width="97"><a href="/news/0,1287,,00.html"><img src="http://static.wired.com/news/images/news_ffffff.gif" width="103" height="30" border="0"></a></td>
+
+
+<td bgcolor="#FF0000" align="left" valign="center"><nobr><img src="http://static.wired.com/news/images/spacer.gif" width="344" height="1"><br><font size="1" face="Verdana, Arial, Geneva, sans-serif" color="#FFFFFF">&nbsp;&nbsp;&nbsp;<b>updated 10:15 a.m.&nbsp;&nbsp;15.Oct.99.PDT</b></font></nobr></td>
+
+
+ </tr>
+ <tr>
+ <td valign="MIDDLE" align="RIGHT" bgcolor="#FFFFFF"><img src="http://static.wired.com/news/images/spacer.gif" width="1" height="30"></td>
+
+ <td colspan="2" bgcolor="#999999">
+
+ <table border="0" cellspacing="0" cellpadding="5">
+<form name="RedirectSearch" action="http://redirect.wired.com/search">
+ <tr>
+ <td>
+<font face="courier" size="1"><input type="TEXT" name="query" size="20" value=""></font>
+ </td>
+
+ <td>
+<select name="url">
+
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=vignette.hts&amp;Collection=vignette&amp;QueryMode=Internet&amp;Query=" selected>Wired News</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=webmonkey.hts&amp;Collection=webmonkey&amp;QueryMode=Internet&amp;Query=">Webmonkey</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=webmonkey_guides&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=webmonkey_guides.hts&amp;QueryMode=Internet&amp;Query=">Webmonkey Guides</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=hotwired&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=hotwired_archive.hts&amp;QueryMode=Internet&amp;Query=">HotWired Archives</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=magazine.hts&amp;Collection=magazine&amp;QueryMode=Internet&amp;Query=">Wired Magazine</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=animation.hts&amp;Collection=animation&amp;QueryMode=Internet&amp;Query=">Animation Express</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=suck&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=suck.hts&amp;QueryMode=Internet&amp;Query=">Suck.com</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=uber_hotwired&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=uber_hotwired.hts&amp;QueryMode=Internet&amp;Query=">All of HotWired</option>
+ <option value="http://www.hotbot.com/?SM=MC&amp;DV=0&amp;LG=any&amp;RD=RG&amp;DC=10&amp;DE=2&amp;_v=2&amp;OPs=MDRTP&amp;MT=">The Web -&gt; HotBot</option>
+</select>
+
+
+
+ </td>
+ <td>
+ <input type="SUBMIT" name="SUBMIT" value="SEARCH">
+ </td>
+ </tr>
+ </form>
+ </table>
+ </td>
+ </tr>
+<!--
+<TR>
+<td></td>
+<TD valign="TOP" align="LEFT" colspan="3" bgcolor="#F0F0F0"><img src="http://static.wired.com/news/images/spacer.gif" height=1 width=15 alt=""><br>
+<i><font face="Verdana, Arial, Geneva, sans-serif" size="2">Sponsored by<a href="#">Sun Microsystems.</a> We're the dot in .com</font></i><i></i></TD>
+</TR>
+-->
+</table>
+<!-- end WIRED NEWS header -->
+
+<!-- begin upper left side Navigation -->
+
+<table border="0" cellpadding="3" cellspacing="0" align="LEFT" bgcolor="#FFFFFF">
+ <tr>
+ <td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+ <img src="http://static.wired.com/news/images/spacer.gif" width="147" height="1" border="0"><br><b>SECTIONS</b></font></td>
+ </tr>
+
+<tr><td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/business/0,1367,,00.html">Business</a></font></td></tr>
+<tr><td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/culture/0,1284,,00.html">Culture</a></font></td></tr>
+<tr><td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/technology/0,1282,,00.html">Technology</a></font></td></tr>
+<tr><td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/politics/0,1283,,00.html">Politics</a></font></td></tr>
+<tr>
+<td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+<b>WIRE SERVICE NEWS</b></font></td>
+</tr>
+
+<tr>
+<td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/news/reuters/">Top Headlines</a></font></td>
+</tr>
+
+<tr>
+<td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/news/reuters/sports/">Sports</a></font></td>
+</tr>
+
+<tr>
+<td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/news/reuters/business/">Finance</a></font></td>
+</tr>
+<!-- End upper left nav --><!-- Begin lower Left Nav -->
+ <tr>
+ <td bgcolor="#FF0000"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+ <b><font size="1">FREE DELIVERY</font></b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99">
+<table cellspacing="0" cellpadding="0" border="0">
+ <tr>
+<td bgcolor="#99FF99">
+ <form action="http://r.hotwired.com/r/hw_wm_r_nav_nwsltr/http://perl.hotwired.com/massmail/cgiParser.cgi" method="get" target="_top">
+
+ <input type="hidden" name="success_page" value="http://www.hotwired.com/email/signup/wirednews-ascii.html">
+
+<input type="hidden" name="failure_page" value="http://www.hotwired.com/email/signup/wirednews-ascii.html">
+
+<input type="hidden" name="LIST" value="wn_ascii">
+<input type="hidden" name="SOURCE" value="other">
+ <input type="hidden" name="ACTION" value="subscribe">
+
+<input type="TEXT" name="from" size="10" value="enter email">&nbsp;
+</form>
+</td>
+ <td valign="top" bgcolor="#99FF99">
+ <input type="SUBMIT" name="SUBMIT" value="GO">
+
+ </td>
+ </tr>
+</table>
+</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FF0000"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+ <b><font size="1">STOCKS</font></b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Get Quote:</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99" marginwidth="0" marginheight="0"><form method="get" action="http://r.wired.com/r/10020/http://stocks.wired.com/stocks_quotes.asp">
+<input type="TEXT" name="Symbol" size="12">&nbsp;<input type="SUBMIT" name="submit" value="GO">
+</form></td>
+ </tr>
+<!-- BEGIN BUTTON ADS -->
+
+ <tr>
+<td bgcolor="#CCFFCC">
+<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">Financial Services</font><br>
+<center>
+<img src="http://static.wired.com/news/images/spacer.gif" height="3" width="5" alt=""><br><img src="http://static.wired.com/news/images/button_ads_news10.gif" width="143" height="56" border="0" alt="" usemap="#buttons" hspace="0" vspace="0">
+</center>
+
+<map name="buttons">
+ <area shape="RECT" alt="Datek" coords="0,0,69,24" href="http://r.wired.com/r/1649/http://ads16.focalink.com/SmartBanner/page/1266.631">
+ <area shape="RECT" alt="Wired Index Fund" coords="73,0,142,24" href="http://r.wired.com/r/227/http://www.gffunds.com/wired">
+ <area shape="RECT" alt="internet.com Index Fund" coords="73,31,142,55" href="http://r.wired.com/r/298/http://www.gffunds.com/isdex/">
+ <area shape="RECT" alt="GetSmart's MortgageFinder" coords="0,31,69,55" href="http://r.wired.com/r/294/http://www.getsmartinc.com/mortgage/HomeBanner?BANNERNAME=www.getsmartinc.com/mwired001m6075x25"></map>
+ </td>
+ </tr> <!-- END BUTTON ADS -->
+
+ <tr>
+ <td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="http://redirect.wired.com/redir/51/http://stocks.wired.com/">Today's Summary</a></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="http://r.wired.com/r/hb_fin_r_wn_top/http://stocks.wired.com/stocks_indexes_detail.asp?Symbol=%24WIRED">Wired Index</a> | <a href="http://redirect.wired.com/redir/52/http://stocks.wired.com/stocks_indexes.asp%20">All Indexes</a></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="http://redirect.wired.com/redir/53/http://stocks.wired.com/stocks_portfolios.asp">Portfolios</a></font></td>
+ </tr>
+
+<!-- BEGIN B&N spot -->
+
+<tr>
+ <td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>FIND A BOOK</b></font></td>
+</tr>
+<tr><td bgcolor="#CCFFCC">
+<table cellspacing="0" cellpadding="0" border="0" width="145">
+ <tr><td bgcolor="#CCFFCC">
+ <form action="http://r.wired.com/r/wn_nav_c_bn/http://barnesandnoble.bfast.com/booklink/click">
+<input type="hidden" name="sourceid" value="383471">
+<input type="hidden" name="categoryid" value="categorydropdown">
+ <font size="2">
+ <select name="Subjects" size="4">
+<option value="301">Business Top 20
+</option>
+<option value="500">Computers
+</option>
+<option value="503">Computer Games
+</option>
+<option value="1604">Current Affairs
+</option>
+<option value="511">Cyberculture
+</option>
+<option value="510">Internet/Web
+</option>
+<option value="303">Investing
+</option>
+<option value="1606">Law
+</option>
+<option value="513">Multimedia
+
+</option>
+<option value="1605">Newsmakers
+</option>
+<option value="1607">Politics/Govt.
+
+ </option>
+<option value="315"> Web Business
+ </option>
+<option value="2800"> Bargain Books
+
+</option>
+<option value="4">Other
+
+
+
+
+
+ </option></select></font>
+</form>
+</td></tr>
+ <tr align="left" valign="top">
+ <td valign="top" bgcolor="#CCFFCC"> <input type="submit" value="GO">
+
+<img src="http://barnesandnoble.bfast.com/booklink/serve?sourceid=383471&amp;is_search=Y" border="0" align="top">
+<!--
+<IMG SRC="http://www.wired.com/partner/bn/trackingimg/ot_wn_nav_c_bn.gif" border=0 width=1 height=1 align=top>
+-->
+</td>
+
+ </tr>
+ <tr align="left" valign="top">
+
+ <td align="left" valign="top" colspan="2" rowspan="1" bgcolor="#CCFFCC">
+<p>
+ <font size="1" face="Verdana, Arial, Helvetica, " color="#000000">Powered by <a href="http://r.wired.com/r/wn_nav_c_bn/http://barnesandnoble.bfast.com/booklink/click?sourceid=383471">barnesandnoble.com</a>
+ </font>
+<br clear="all">
+
+
+</p>
+</td>
+ </tr>
+ </table>
+
+</td></tr>
+ <!-- END B&N spot -->
+
+<!-- BEGIN MAGAZINE SPOT -->
+
+ <tr>
+ <td bgcolor="#000000"><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="1"><b>WIRED
+ MAGAZINE </b></font></td>
+ </tr>
+<tr>
+<td bgcolor="#FFFF99" align="CENTER">
+<font face="verdana, arial, helvetica, sans-serif" size="1">
+<b>
+<br>
+
+<a href="http://www.wired.com/wired/"><img src="http://static.wired.com/news/images/wiredcover.gif" width="91" height="109" border="0" alt="Wired Magazine"></a><br></b>
+
+Issue 7.11
+</font>
+</td>
+</tr>
+
+<tr>
+<td bgcolor="#FFFF99" align="center">
+<font face="verdana, arial, helvetica, sans-serif" size="1">
+
+<a href="http://www.wired.com/wired/subscribe/special/79WN">Subscribe to Wired.<br>Special offer!</a>
+
+
+</font>
+</td>
+</tr>
+<!-- END MAGAZINE SPOT -->
+
+ <tr>
+ <td bgcolor="#000000">
+ <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>HOTWIRED</b></font>
+</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FFFF99"> <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">
+<a href="http://www.hotwired.com/">Frontdoor</a><br>
+<a href="http://www.hotwired.com/webmonkey/">Webmonkey</a><br>
+<a href="http://www.hotwired.com/webmonkey/guides/index.html">Webmonkey Guides</a><br>
+<a href="http://www.hotwired.com/rgb/">RGB Gallery</a><br>
+<a href="http://www.hotwired.com/animation/">Animation Express</a><br>
+<a href="http://go.suck.com/su_wnfd">Suck.com</a><br>
+</font>
+</td>
+ </tr>
+
+ <tr>
+ <td bgcolor="#000000">
+ <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>HOTBOT</b></font>
+</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FFFF99"> <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">
+<a href="http://redirect.wired.com/redir/54/http://www.hotbot.com/">Search</a><br>
+<a href="http://shop.hotbot.com/">Shopping</a><br>
+</font>
+</td>
+ </tr>
+
+ <tr>
+<td>
+ <br>
+ <font face="Verdana, Arial, Helvetica, sans-serif" size="1">
+ <font face="Verdana, Arial, Helvetica, sans-serif" size="1">
+ Wired News <a href="/news/who/0,1362,,00.html">staff</a><br><br>
+
+ <!-- Wired News is <a href="http://www.wired.com/news/jobs.html">hiring</a><br><br> -->
+
+ <b><a href="/news/feedback/0,1364,,00.html">Contact us</a></b></font>
+
+
+ <br><br>
+
+ <font face="Verdana, Arial, Helvetica, sans-serif" size="1">Wired News delivered<br>by <a href="/news/palmpilot/0,1365,,00.html">PalmPilot</a>,<br><a href="http://www.hotwired.com/email/signup/wn_outlook.html">Outlook Express</a>,<br><a href="http://redirect.wired.com/redir/55/http://form.netscape.com/ibd/html/ibd_frameset.html">In-Box Direct</a>,<br>
+or <a href="/news/pointcast/0,1366,,00.html">PointCast</a></font><br>
+
+<!-- TRACKING -->
+<img src="http://www.wired.com/special/modx/news.gif" height="1" width="1" alt="">
+</font>
+</td>
+ </tr>
+
+</table>
+
+<!-- end lower left side Navigation -->
+<!-- CONTENT TABLE -->
+
+<table border="0" width="447" cellspacing="0" cellpadding="0" bordercolor="#66FF00">
+ <tr>
+ <td valign="TOP" align="LEFT" rowspan="2">
+ <img src="http://static.wired.com/news/images/spacer.gif" height="1" width="15" alt=""><br>
+ </td>
+ <td colspan="3" valign="TOP" align="LEFT">
+<img src="http://static.wired.com/news/images/spacer.gif" height="7" width="432" alt=""><br>
+
+
+<!-- SQL query for Package here -->
+
+<font face="Verdana, Arial, Geneva, sans-serif" size="2"><b><i>Nomad's Land</i></b></font><br><img src="http://static.wired.com/news/images/pix155.gif" height="10" width="155" alt=""><br><!-- IBD_SUBJECT: Homeless, but ID'd, in Seattle --><font face="Arial, Helvetica, sans-serif" size="5"><b><a href="/news/politics/0,1283,31911,00.html">Homeless, but ID'd, in Seattle</a></b></font><br><font size="1" face="Verdana, Arial, Geneva, sans-serif" color="#FF0000">8:15 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">The city council approves a plan to track the homeless by a numbering system, saying it'll improve services. The implications worry privacy advocates, naturally. By Craig Bicknell.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/politics/0,1283,,00.html">in&nbsp;Politics</a></i></font><br><table bgcolor="#F0F0F0" cellpadding="0" cellspacing="0" border="0" width="147" align="RIGHT">
+ <!-- Commentary Frag Begin -->
+ <tr>
+ <td bgcolor="#000000">&nbsp;</td>
+ <td bgcolor="#000000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>HITS &amp; MISC.</b></font></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td>
+<img src="http://static.wired.com/news/images/spacer.gif" height="5" width="5" alt=""><br>
+
+ <font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/commentarySection/0,1292,31664,00.html">Calendar of E-Vents</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Ongoing goings-on. </font><br><br><font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/commentarySection/0,1292,31926,00.html">Rants &amp; Raves</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Readers on Apple's G4 ... AOL's passwords ... MS vs. Linux.</font><br><br> </font></font>
+</td>
+ </tr>
+<!-- Commentary Frag End -->
+<tr>
+<td align="left" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>CURRENT HOO-HA</b></font></td>
+</tr>
+
+<tr>
+<td>&nbsp;</td>
+<td>
+<img src="http://static.wired.com/news/images/spacer.gif" height="5" width="5" alt="">
+<br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/mp3/0,1285,,00.html">MP3 Rocks the Web</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Download the sound. <br><i>Sponsored by <a href="http://r.hotwired.com/r/wn_fd_mp3_r_mscm_txt/http://webfarm.mediaplex.com/click_thru_request/164-1361b-1052" style="text-decoration:none"><font color="#000000">Musicmaker</font></a></i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/wireless/0,1382,,00.html">The Wireless World</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Networking gets unplugged. <br><i>Sponsored by <a href="http://www.ericsson.se/get/internet/default.shtml" style="text-decoration:none"><font color="#000000">Ericsson</font></a></i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/digiwood/0,1412,,00.html">Digital Hollywood</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">The buzz of tech.</font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/ipo/0,1350,,00.html">IPO Outlook</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Deals in the pipeline. <br><i>Sponsored by <a href="http://r.hotwired.com/r/wn_ipo_r_sun_txt/http://sun.com/ads/smi/brand/hotwired.html" style="text-decoration:none"><font color="#000000">Sun</font></a></i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/ebiz/0,1272,,00.html">E-Biz</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Business unusual. <br><i>Sponsored by <a href="http://r.wired.com/r/wn_fd_r_ebiz_ibm_txt/http://www.ibm.com" style="text-decoration:none"><font color="#000000">IBM</font></a></i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/medtech/0,1286,,00.html">Med-Tech Center</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">From the bleeding edge.<br><i>Sponsored by WebMD</i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/linux/0,1411,,00.html">The Linux Effect</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Not just for geeks.</font><br><br> <img src="http://static.wired.com/news/images/spacer.gif" height="7" width="5" alt=""><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/exec/0,1370,,00.html">Executive Summary</a></b></font><br><font size="1" face="Arial, Helvetica, sans-serif" color="#000000">CEOs, COOs, CIOs unite. <br><i>Sponsored by <a href="http://r.wired.com/r/wn_exec_r_vign/http://www.vignette.com/" style="text-decoration:none"><font color="#000000">Vignette</font></a></i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/school/0,1383,,00.html">Making the Grade</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Reading, writing, and ROM. <br><i>Sponsored by <a href="http://r.hotwired.com/r/wn_sch_r_nav_uop/http://ads25.focalink.com/SmartBanner/page?12630.53" style="text-decoration:none"><font color="#000000">U of Phoenix</font></a></i></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/infostructure/0,1377,,00.html">Infostructure</a></b></font><br><font size="1" face="Arial, Helvetica, sans-serif" color="#000000">An IS/IT resource <br><i>Sponsored by <a href="http://r.wired.com/r/wn_is_r_ssec/http://ad.doubleclick.net/clk;653163;3599571;s?http://www.sprintbiz.com/s%0Aervlet/appservlet?from=/wired/sprint/&amp;template=/security/security.html&amp;SITE=%0Awired.com&amp;BANNER=Sprint" style="text-decoration:none"><font color="#000000">Sprint</font></a></i></font></font><br><br>
+
+<font size="2" face="Arial,Helvetica, sans-serif"><b><a href="/news/y2k/0,1360,,00.html">Y2K Watch</a></b></font><br><font size="2" face="Arial, Helvetica, sans-serif"><font size="1" face="Arial, Geneva, sans-serif" color="#000000">Tick... Tick... Tick...</font><br><br>
+
+<font face="Arial, Helvetica, sans-serif" size="2"><b><i><a href="/news/special_reports/1,1293,,00.html">More Hoo-Ha</a></i></b></font><br>&nbsp;<br>
+
+</font></font></font></font></font></font></font></font>
+</td>
+</tr>
+<!-- start of Gen News -->
+ <tr>
+ <td bgcolor="#000000">&nbsp;</td>
+ <td bgcolor="#000000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>MEANWHILE...</b></font></td>
+ </tr>
+
+ <tr>
+ <td>&nbsp;</td>
+ <td align="left" valign="top">
+ <img src="http://static.wired.com/news/images/spacer.gif" height="5" width="5" alt=""><br>
+
+
+<!-- 31942 -->
+<font size="2" face="Arial, Helvetica, sans-serif" color="#000000"><b>F&uuml;hrer Furor</b></font><br><font size="1" face="Arial, Geneva, sans-serif" color="#000000"><p>
+Contruction workers in Berlin opened an old wound in the German psyche this week when they accidentally stumbled across Adolf Hitler's bunker while excavating near the Brandenburg Gate. The bunker, just south of the Gate, was where Hitler and his closest associates barricaded themselves as the Red Army approached Berlin in the waning days of World War II. It is also where the F&uuml;hrer and his bride, Eva Braun, committed suicide rather than fall into the hands of the Russians. Although the bunker's location has never been a mystery, it has been sealed off since the end of the war to keep neo-Nazis from turning it into a shrine.
+<br></p>
+<li>More from <a href="http://www.lycos.com/news/flash/hitlerbunker.html?v=wn1015&amp;lpv=1">Lycos</a>
+</li></font><br><br>
+ </td>
+ </tr>
+<!-- end of Gen News -->
+</table>
+
+
+<font size="1">&nbsp;<br></font>
+
+<br>
+
+<font face="Verdana, Arial, Geneva, sans-serif" size="2"><b><i>Other Top Stories</i></b></font><br>
+<img src="http://static.wired.com/news/images/pix155.gif" height="10" width="155" alt=""><br>
+
+<!-- SQL query here -->
+<!-- IBD_SUBJECT:Wall Street Keeps Reeling --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/reuters/0,1349,31934,00.html">Wall Street Keeps Reeling</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">10:15 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">The Dow and Nasdaq suffer sizeable losses during the first half of Friday trading. Why? Wholesale prices are the highest this decade, and Greenspan is concerned about stock prices.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/reuters/0,1349,,00.html">in&nbsp;Reuters</a></i></font><br><br><!-- IBD_SUBJECT:The Market's Madness --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/reuters/0,1349,31935,00.html">The Market's Madness</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">9:10 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">The bulls and the bears are in the midst of a Battle Royale, and all this turbulence is not a healthy thing. So say the experts.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/reuters/0,1349,,00.html">in&nbsp;Reuters</a></i></font><br><br><!-- IBD_SUBJECT:'Want a Loan? What's Your Race?' --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/politics/0,1283,31533,00.html">'Want a Loan? What's Your Race?'</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">The Federal Reserve is in the middle of changing banking regulations to let banks collect data on the race, sex, religion, and national origin of their customers. By Declan McCullagh. </font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/politics/0,1283,,00.html">in&nbsp;Politics</a></i></font><br><br><!-- IBD_SUBJECT:Music Regs: A Bagful of Noise --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/business/0,1367,31832,00.html">Music Regs: A Bagful of Noise</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">The struggle to come up with a digital music standard that would minimize download piracy is pushing right up against the holiday gift-giving season. By Jennifer Sullivan.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/business/0,1367,,00.html">in&nbsp;Business</a></i></font><br><br><!-- IBD_SUBJECT:Can't Beat 'Em? Green 'Em --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/technology/0,1282,31927,00.html">Can't Beat 'Em? Green 'Em</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">High-tech companies are notoriously environmentally unfriendly, and a growing number of "Greenies" are trying to change things from the inside ... with varying results. By Chris Gaither.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/technology/0,1282,,00.html">in&nbsp;Technology</a></i></font><br><br><!-- IBD_SUBJECT:Y2K Cloud Over MS Office --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/business/0,1367,31932,00.html">Y2K Cloud Over MS Office</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">Windows NT sales remain strong, but corporate clients are wary of upgrading to MS Office 2000. Analysts say that means strong, but not stunning, Microsoft earnings. </font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/business/0,1367,,00.html">in&nbsp;Business</a></i></font><br><br><font color="#FF0000" face="Verdana, Arial, Geneva, sans-serif" size="1">Med-Tech</font><br><!-- IBD_SUBJECT:Biochips for Custom Chemo --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/technology/0,1282,31914,00.html">Biochips for Custom Chemo</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">Different cancer patients need different medicine, but doctors can rarely determine the best match. New biochip technology promises chemotherapy tailored to a tumor's genetic make-up. By Kristen Philipkoski.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/technology/0,1282,,00.html">in&nbsp;Technology</a></i></font><br><br><!-- IBD_SUBJECT:High Stakes in Priceline Suit --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/business/0,1367,31916,00.html">High Stakes in Priceline Suit</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">It's not just another round of Redmond-bashing. A Priceline.com lawsuit against Microsoft's Expedia.com may have a big impact on how Net companies protect their business models. By Joanna Glasner.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/business/0,1367,,00.html">in&nbsp;Business</a></i></font><br><br><!-- IBD_SUBJECT:Biodiversity Merges Online --><font face="Arial, Helvetica, sans-serif" size="3"><b><a href="/news/technology/0,1282,31918,00.html">Biodiversity Merges Online</a></b></font><br><font color="#ff0000" face="Verdana, Arial, Geneva, sans-serif" size="1">3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size="2">The far-flung databases on global biodiversity get together to form one monster database. Soon the red-eyed tree frog will be eyeing those Swedish lingonberries. From the Environment News Service.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><i><a href="/news/technology/0,1282,,00.html">in&nbsp;Technology</a></i></font><br><br><!-- SQL above -->
+
+
+
+<!------TRADES--------->
+<br>
+<font face="Verdana, Arial, Geneva, sans-serif" size="2"><b><i>Elsewhere Today</i></b></font><br>
+<img src="http://static.wired.com/news/images/pix155.gif" height="10" width="155" alt=""><br>
+
+<!-- SQL query here -->
+<font face="helvetica, arial" size="3"><b><a href="http://www.thestandard.com/articles/display/0,1449,6975,00.html?home.tf">FCC: Hands-Off on Broadband</a></b></font><br><font face="geneva, arial" size="2"><cite>The Industry Standard</cite></font><br><br><font face="helvetica, arial" size="3"><b><a href="http://news.lycos.com/stories/TopNews/19991014RTNEWS-ARMS-TREATY.asp">White House Lashes Out on Treaty</a></b></font><br><font face="geneva, arial" size="2">Lycos</font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.pathfinder.com/time/magazine/articles/0,3266,32207,00.html">Steve Jobs at 44</a></b></font><br><font face="geneva, arial" size="2"><cite>Time</cite></font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.zdnet.com/zdnn/stories/news/0,4586,2353608,00.html">Computers May Run on Gas</a></b></font><br><font face="geneva, arial" size="2">ZDNN</font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.nytimes.com/library/tech/99/10/biztech/articles/14free.html">Much Is Free in the Wired World</a></b></font><br><font face="geneva, arial" size="2"><cite>The New York Times</cite> (Registration Required)</font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.usatoday.com/life/cyber/nb/nb4.htm">Melissa: I'm Baaaack</a></b></font><br><font face="geneva, arial" size="2"><cite>USA Today</cite></font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.msnbc.com/news/322926.asp">Domain Owners Surrender Privacy</a></b></font><br><font face="geneva, arial" size="2">MSNBC</font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.washingtonpost.com/wp-srv/business/longterm/tech/techthursday/download/download.htm">Dividing to Conquer in VC Game</a></b></font><br><font face="geneva, arial" size="2"><cite>The Washington Post</cite></font><br><br><font face="helvetica, arial" size="3"><b><a href="http://www.salon.com/tech/books/1999/10/14/redhat_book/index.html">The Red Hat Diaries</a></b></font><br><font face="geneva, arial" size="2">Salon</font><br><br><font face="helvetica, arial" size="3"><b><a href="http://news.bbc.co.uk/hi/english/sci/tech/newsid_473000/473856.stm">Screensaver to Predict Climate</a></b></font><br><font face="geneva, arial" size="2">BBC News</font><br><br><!-- SQL above -->
+
+
+
+<!-- - - - - - - - - - - - - -->
+
+ </td>
+ </tr>
+
+ <tr>
+ <td valign="TOP" align="LEFT">
+
+ <img src="http://static.wired.com/news/images/spacer.gif" height="1" width="280" alt=""><br>
+
+ <!-- FOOTER -->
+
+<br><img src="http://static.wired.com/news/images/pix155.gif" height="10" width="155" border="0" usemap="#navstrip.map" alt="">
+<br>
+
+<img src="http://static.wired.com/news/images/navstrip_off.gif" height="17" width="126" usemap="#navstrip.map" border="0" alt=""><br><br>
+
+<p><font face="Verdana, Arial, Geneva, sans-serif" size="1">
+<a href="http://www.wired.com/news/feedback.html">Send us feedback</a>
+&nbsp;|&nbsp;
+<a href="http://www.hotwired.com/jobs/">Work at Wired Digital</a>
+&nbsp;|&nbsp;
+<a href="http://home.wired.com/advertising/">Advertise with us</a>
+<br>
+<a href="http://home.wired.com/">About Wired Digital</a>
+&nbsp;|&nbsp;
+<a href="http://www.wired.com/home/digital/privacy/">Our Privacy Policy</a></font>
+
+
+</p>
+<p><font face="Verdana, Arial, Geneva" size="1"><a href="http://www.wired.com/home/copyright.html">Copyright</a> &copy; 1994-99 Wired Digital Inc. All rights reserved.</font>
+
+<br>
+<!-- TRACKING -->
+<img src="http://www.wired.com/special/modx/news.gif" height="1" width="1" alt="">
+
+<map name="navstrip.map">
+<area shape="rect" coords="0,0,14,16" href="/news">
+<area shape="rect" coords="15,0 31,16" href="/news/business/">
+<area shape="rect" coords="32,0,48,16" href="/news/culture/">
+<area shape="rect" coords="49,0,65,16" href="/news/technology/">
+<area shape="rect" coords="66,0,83,16" href="/news/politics/">
+</map>
+ </p>
+</td>
+ <td valign="TOP" align="LEFT">
+ <img src="http://static.wired.com/news/images/spacer.gif" height="1" width="5" alt="">
+ </td>
+ <td valign="TOP" align="LEFT">
+ </td>
+ </tr>
+</table>
+
+
+<br>
+</body>
+</html>
diff --git a/result/HTML/wired.html.err b/result/HTML/wired.html.err
new file mode 100644
index 0000000..70db11b
--- /dev/null
+++ b/result/HTML/wired.html.err
@@ -0,0 +1,249 @@
+./test/HTML/wired.html:6: HTML parser error : htmlParseEntityRef: expecting ';'
+<FORM METHOD=GET ACTION="http://nsads.hotwired.com/event.ng/Type=click&ProfileID
+ ^
+./test/HTML/wired.html:6: HTML parser error : htmlParseEntityRef: expecting ';'
+D=GET ACTION="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=9688&RunID
+ ^
+./test/HTML/wired.html:6: HTML parser error : htmlParseEntityRef: expecting ';'
+N="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=9688&RunID=14074&AdID
+ ^
+./test/HTML/wired.html:6: HTML parser error : htmlParseEntityRef: expecting ';'
+s.hotwired.com/event.ng/Type=click&ProfileID=9688&RunID=14074&AdID=22584&GroupID
+ ^
+./test/HTML/wired.html:6: HTML parser error : htmlParseEntityRef: expecting ';'
+com/event.ng/Type=click&ProfileID=9688&RunID=14074&AdID=22584&GroupID=1&FamilyID
+ ^
+./test/HTML/wired.html:6: HTML parser error : htmlParseEntityRef: expecting ';'
+pe=click&ProfileID=9688&RunID=14074&AdID=22584&GroupID=1&FamilyID=2684&TagValues
+ ^
+./test/HTML/wired.html:52: HTML parser error : htmlParseEntityRef: expecting ';'
+" align="RIGHT"><a href="http://nsads.hotwired.com/event.ng/Type=click&ProfileID
+ ^
+./test/HTML/wired.html:52: HTML parser error : htmlParseEntityRef: expecting ';'
+GHT"><a href="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=5597&RunID
+ ^
+./test/HTML/wired.html:52: HTML parser error : htmlParseEntityRef: expecting ';'
+f="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=5597&RunID=17167&AdID
+ ^
+./test/HTML/wired.html:52: HTML parser error : htmlParseEntityRef: expecting ';'
+s.hotwired.com/event.ng/Type=click&ProfileID=5597&RunID=17167&AdID=22588&GroupID
+ ^
+./test/HTML/wired.html:52: HTML parser error : htmlParseEntityRef: expecting ';'
+com/event.ng/Type=click&ProfileID=5597&RunID=17167&AdID=22588&GroupID=1&FamilyID
+ ^
+./test/HTML/wired.html:52: HTML parser error : htmlParseEntityRef: expecting ';'
+pe=click&ProfileID=5597&RunID=17167&AdID=22588&GroupID=1&FamilyID=3228&TagValues
+ ^
+./test/HTML/wired.html:70: HTML parser error : Tag nobr invalid
+<td bgcolor="#FF0000" align="left" valign="center"><nobr><img src="http://static
+ ^
+./test/HTML/wired.html:89: HTML parser error : htmlParseEntityRef: expecting ';'
+on value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter
+ ^
+./test/HTML/wired.html:89: HTML parser error : htmlParseEntityRef: expecting ';'
+d.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:89: HTML parser error : htmlParseEntityRef: expecting ';'
+ction=FilterSearch&Filter=docs_filter.hts&ResultTemplate=vignette.hts&Collection
+ ^
+./test/HTML/wired.html:89: HTML parser error : htmlParseEntityRef: expecting ';'
+Filter=docs_filter.hts&ResultTemplate=vignette.hts&Collection=vignette&QueryMode
+ ^
+./test/HTML/wired.html:89: HTML parser error : htmlParseEntityRef: expecting ';'
+ter.hts&ResultTemplate=vignette.hts&Collection=vignette&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:90: HTML parser error : htmlParseEntityRef: expecting ';'
+on value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter
+ ^
+./test/HTML/wired.html:90: HTML parser error : htmlParseEntityRef: expecting ';'
+d.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:90: HTML parser error : htmlParseEntityRef: expecting ';'
+tion=FilterSearch&Filter=docs_filter.hts&ResultTemplate=webmonkey.hts&Collection
+ ^
+./test/HTML/wired.html:90: HTML parser error : htmlParseEntityRef: expecting ';'
+lter=docs_filter.hts&ResultTemplate=webmonkey.hts&Collection=webmonkey&QueryMode
+ ^
+./test/HTML/wired.html:90: HTML parser error : htmlParseEntityRef: expecting ';'
+r.hts&ResultTemplate=webmonkey.hts&Collection=webmonkey&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:91: HTML parser error : htmlParseEntityRef: expecting ';'
+="http://search.hotwired.com/search97/s97.vts?collection=webmonkey_guides&Action
+ ^
+./test/HTML/wired.html:91: HTML parser error : htmlParseEntityRef: expecting ';'
+ired.com/search97/s97.vts?collection=webmonkey_guides&Action=FilterSearch&filter
+ ^
+./test/HTML/wired.html:91: HTML parser error : htmlParseEntityRef: expecting ';'
+ction=webmonkey_guides&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:91: HTML parser error : htmlParseEntityRef: expecting ';'
+ilterSearch&filter=docs_filter.hts&ResultTemplate=webmonkey_guides.hts&QueryMode
+ ^
+./test/HTML/wired.html:91: HTML parser error : htmlParseEntityRef: expecting ';'
+ter=docs_filter.hts&ResultTemplate=webmonkey_guides.hts&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:92: HTML parser error : htmlParseEntityRef: expecting ';'
+on value="http://search.hotwired.com/search97/s97.vts?collection=hotwired&Action
+ ^
+./test/HTML/wired.html:92: HTML parser error : htmlParseEntityRef: expecting ';'
+rch.hotwired.com/search97/s97.vts?collection=hotwired&Action=FilterSearch&filter
+ ^
+./test/HTML/wired.html:92: HTML parser error : htmlParseEntityRef: expecting ';'
+ts?collection=hotwired&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:92: HTML parser error : htmlParseEntityRef: expecting ';'
+ilterSearch&filter=docs_filter.hts&ResultTemplate=hotwired_archive.hts&QueryMode
+ ^
+./test/HTML/wired.html:92: HTML parser error : htmlParseEntityRef: expecting ';'
+ter=docs_filter.hts&ResultTemplate=hotwired_archive.hts&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:93: HTML parser error : htmlParseEntityRef: expecting ';'
+on value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter
+ ^
+./test/HTML/wired.html:93: HTML parser error : htmlParseEntityRef: expecting ';'
+d.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:93: HTML parser error : htmlParseEntityRef: expecting ';'
+ction=FilterSearch&Filter=docs_filter.hts&ResultTemplate=magazine.hts&Collection
+ ^
+./test/HTML/wired.html:93: HTML parser error : htmlParseEntityRef: expecting ';'
+Filter=docs_filter.hts&ResultTemplate=magazine.hts&Collection=magazine&QueryMode
+ ^
+./test/HTML/wired.html:93: HTML parser error : htmlParseEntityRef: expecting ';'
+ter.hts&ResultTemplate=magazine.hts&Collection=magazine&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:94: HTML parser error : htmlParseEntityRef: expecting ';'
+on value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter
+ ^
+./test/HTML/wired.html:94: HTML parser error : htmlParseEntityRef: expecting ';'
+d.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:94: HTML parser error : htmlParseEntityRef: expecting ';'
+tion=FilterSearch&Filter=docs_filter.hts&ResultTemplate=animation.hts&Collection
+ ^
+./test/HTML/wired.html:94: HTML parser error : htmlParseEntityRef: expecting ';'
+lter=docs_filter.hts&ResultTemplate=animation.hts&Collection=animation&QueryMode
+ ^
+./test/HTML/wired.html:94: HTML parser error : htmlParseEntityRef: expecting ';'
+r.hts&ResultTemplate=animation.hts&Collection=animation&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:95: HTML parser error : htmlParseEntityRef: expecting ';'
+option value="http://search.hotwired.com/search97/s97.vts?collection=suck&Action
+ ^
+./test/HTML/wired.html:95: HTML parser error : htmlParseEntityRef: expecting ';'
+/search.hotwired.com/search97/s97.vts?collection=suck&Action=FilterSearch&filter
+ ^
+./test/HTML/wired.html:95: HTML parser error : htmlParseEntityRef: expecting ';'
+97.vts?collection=suck&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:95: HTML parser error : htmlParseEntityRef: expecting ';'
+uck&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate=suck.hts&QueryMode
+ ^
+./test/HTML/wired.html:95: HTML parser error : htmlParseEntityRef: expecting ';'
+erSearch&filter=docs_filter.hts&ResultTemplate=suck.hts&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:96: HTML parser error : htmlParseEntityRef: expecting ';'
+lue="http://search.hotwired.com/search97/s97.vts?collection=uber_hotwired&Action
+ ^
+./test/HTML/wired.html:96: HTML parser error : htmlParseEntityRef: expecting ';'
+otwired.com/search97/s97.vts?collection=uber_hotwired&Action=FilterSearch&filter
+ ^
+./test/HTML/wired.html:96: HTML parser error : htmlParseEntityRef: expecting ';'
+llection=uber_hotwired&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate
+ ^
+./test/HTML/wired.html:96: HTML parser error : htmlParseEntityRef: expecting ';'
+n=FilterSearch&filter=docs_filter.hts&ResultTemplate=uber_hotwired.hts&QueryMode
+ ^
+./test/HTML/wired.html:96: HTML parser error : htmlParseEntityRef: expecting ';'
+filter=docs_filter.hts&ResultTemplate=uber_hotwired.hts&QueryMode=Internet&Query
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&O
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&O
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&O
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&O
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&O
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&O
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&OPs
+ ^
+./test/HTML/wired.html:97: HTML parser error : htmlParseEntityRef: expecting ';'
+lue="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&OPs=MDRTP&MT
+ ^
+./test/HTML/wired.html:170: HTML parser error : Unexpected end tag : form
+ </tr> </form>
+ ^
+./test/HTML/wired.html:248: HTML parser error : htmlParseEntityRef: expecting ';'
+MG SRC="http://barnesandnoble.bfast.com/booklink/serve?sourceid=383471&is_search
+ ^
+./test/HTML/wired.html:265: HTML parser error : Unexpected end tag : form
+ </tr> </form>
+ ^
+./test/HTML/wired.html:346: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:374: HTML parser error : htmlParseEntityRef: no name
+a, sans-serif"><b><a href="/news/commentarySection/0,1292,31926,00.html">Rants &
+ ^
+./test/HTML/wired.html:374: HTML parser error : Opening and ending tag mismatch: td and font
+Readers on Apple's G4 ... AOL's passwords ... MS vs. Linux.</font><br><br> </td
+ ^
+./test/HTML/wired.html:374: HTML parser error : Opening and ending tag mismatch: td and font
+Readers on Apple's G4 ... AOL's passwords ... MS vs. Linux.</font><br><br> </td
+ ^
+./test/HTML/wired.html:402: HTML parser error : Opening and ending tag mismatch: a and font
+w.vignette.com/" style="text-decoration:none"><font color="#000000">Vignette</a>
+ ^
+./test/HTML/wired.html:407: HTML parser error : htmlParseEntityRef: expecting ';'
+ervlet/appservlet?from=/wired/sprint/&template=/security/security.html&SITE=
+ ^
+./test/HTML/wired.html:407: HTML parser error : htmlParseEntityRef: expecting ';'
+ervlet/appservlet?from=/wired/sprint/&template=/security/security.html&SITE=
+ ^
+./test/HTML/wired.html:408: HTML parser error : htmlParseEntityRef: expecting ';'
+wired.com&BANNER=Sprint" style="text-decoration:none"><font color="#000000">Spri
+ ^
+./test/HTML/wired.html:408: HTML parser error : Opening and ending tag mismatch: a and font
+com&BANNER=Sprint" style="text-decoration:none"><font color="#000000">Sprint</a>
+ ^
+./test/HTML/wired.html:408: HTML parser error : End tag : expected '>'
+=Sprint" style="text-decoration:none"><font color="#000000">Sprint</a></i></font
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:414: HTML parser error : Opening and ending tag mismatch: td and font
+</td>
+ ^
+./test/HTML/wired.html:432: HTML parser error : htmlParseEntityRef: expecting ';'
+href="http://www.lycos.com/news/flash/hitlerbunker.html?v=wn1015&lpv=1">Lycos</a
+ ^
diff --git a/result/HTML/wired.html.sax b/result/HTML/wired.html.sax
new file mode 100644
index 0000000..3860c76
--- /dev/null
+++ b/result/HTML/wired.html.sax
@@ -0,0 +1,2848 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( Vignette StoryServer 4 Fri Oct 15 11:37:12 1999 )
+SAX.startElement(html)
+SAX.startElement(head)
+SAX.startElement(title)
+SAX.characters(Top Stories News from Wired Ne, 32)
+SAX.endElement(title)
+SAX.endElement(head)
+SAX.startElement(body, bgcolor='#FFFFFF', text='#000000', link='#333399', vlink='#660066', alink='#666699')
+SAX.characters(
+
+, 2)
+SAX.startElement(table, border='0', width='600', cellspacing='0', cellpadding='0')
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td, valign='top', align='LEFT')
+SAX.startElement(table, border='0', cellpadding='0', cellspacing='0', width='468', height='60', bgcolor='#FFFFFF')
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(form, method='GET', action='http://nsads.hotwired.com/event.ng/Type=click&amp;ProfileID=9688&amp;RunID=14074&amp;AdID=22584&amp;GroupID=1&amp;FamilyID=2684&amp;TagValues=8.25.156.159.166.171.172.174.179.180.181.182.183.196.197.199.208.389.412.436.2041.6750.78456.79630.81880&amp;Redirect=http://www.springstreet.com/aa/citysearch.htm', id='form1', name='form1')
+SAX.characters(
+, 2)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#330099')
+SAX.startElement(input, name='city', type='text', size='7', maxlength='20', value='Seattle')
+SAX.endElement(input)
+SAX.endElement(td)
+SAX.characters(
+, 2)
+SAX.startElement(td, rowspan='2', align='LEFT', bgcolor='FFFFFF')
+SAX.startElement(input, type='IMAGE', src='http://static.wired.com/advertising/blipverts/allapartments/990625jpa_ssthome.gif', width='375', height='60', border='0', value='search', hspace='0', alt='Search over 6,000,000 Apts with SpringStreet')
+SAX.endElement(input)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.characters(
+, 2)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#330099')
+SAX.characters(
+, 2)
+SAX.startElement(select, name='state')
+SAX.characters(
+, 2)
+SAX.startElement(option, value='WA', selected)
+SAX.characters(WA
+, 4)
+SAX.endElement(option)
+SAX.startElement(option, value='AL')
+SAX.characters(AL, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='AK')
+SAX.characters(AK, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='AZ')
+SAX.characters(AZ, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='AR')
+SAX.characters(AR, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='CA')
+SAX.characters(CA, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='CO')
+SAX.characters(CO, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='CT')
+SAX.characters(CT, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='DE')
+SAX.characters(DE, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='DC')
+SAX.characters(DC, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='FL')
+SAX.characters(FL, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='GA')
+SAX.characters(GA, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='HI')
+SAX.characters(HI, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='ID')
+SAX.characters(ID, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='IL')
+SAX.characters(IL, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='IN')
+SAX.characters(IN, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='IA')
+SAX.characters(IA, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='KS')
+SAX.characters(KS, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='KY')
+SAX.characters(KY, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='LA')
+SAX.characters(LA, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='ME')
+SAX.characters(ME, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='MD')
+SAX.characters(MD, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='MA')
+SAX.characters(MA, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='MI')
+SAX.characters(MI, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='MN')
+SAX.characters(MN, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='MS')
+SAX.characters(MS, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='MO')
+SAX.characters(MO, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='MT')
+SAX.characters(MT, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='NE')
+SAX.characters(NE, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='NV')
+SAX.characters(NV, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='NH')
+SAX.characters(NH, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='NJ')
+SAX.characters(NJ, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='NM')
+SAX.characters(NM, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='NY')
+SAX.characters(NY, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='NC')
+SAX.characters(NC, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='ND')
+SAX.characters(ND, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='OH')
+SAX.characters(OH, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='OK')
+SAX.characters(OK, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='OR')
+SAX.characters(OR, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='PA')
+SAX.characters(PA, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='PR')
+SAX.characters(PR, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='RI')
+SAX.characters(RI, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='SC')
+SAX.characters(SC, 2)
+SAX.endElement(option)
+SAX.characters(
+, 3)
+SAX.startElement(option, value='SD')
+SAX.characters(SD, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='TN')
+SAX.characters(TN, 2)
+SAX.endElement(option)
+SAX.startElement(option, value='TX')
+SAX.characters(TX, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='UT')
+SAX.characters(UT, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='VT')
+SAX.characters(VT, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='VA')
+SAX.characters(VA, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='WA')
+SAX.characters(WA, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='WV')
+SAX.characters(WV, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='WI')
+SAX.characters(WI, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.startElement(option, value='WY')
+SAX.characters(WY, 2)
+SAX.endElement(option)
+SAX.characters(
+, 2)
+SAX.endElement(select)
+SAX.startElement(input, type='hidden', name='source', value='2hb8bhc059')
+SAX.endElement(input)
+SAX.characters(
+, 2)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.endElement(form)
+SAX.characters(
+, 2)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.startElement(td, valign='top', align='RIGHT')
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(a, href='http://nsads.hotwired.com/event.ng/Type=click&amp;ProfileID=5597&amp;RunID=17167&amp;AdID=22588&amp;GroupID=1&amp;FamilyID=3228&amp;TagValues=8.25.159.171.172.174.179.180.181.182.183.196.197.199.208.241.389.412.436.2035.6749.6750.70367.78456.79630.81880&amp;Redirect=http:%2F%2Fwww.hp.com%2Fgo%2Foriginal%20', target='_top')
+SAX.startElement(img, src='http://static.wired.com/advertising/blipverts/hp_colorinkjet/hp_970c_120x60_6.gif', border='1', height='60', width='120', alt='True to the Original')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.endElement(table)
+SAX.characters(
+
+, 2)
+SAX.comment( WIRED NEWS header )
+SAX.characters(
+, 1)
+SAX.comment( CMD_HOST = scoop.hotwired.com )
+SAX.characters(
+
+, 2)
+SAX.startElement(a, name='#')
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.startElement(table, border='0', width='600', cellspacing='0', cellpadding='0')
+SAX.characters(
+
+ , 4)
+SAX.startElement(tr)
+SAX.startElement(td)
+SAX.endElement(td)
+SAX.startElement(td, colspan='2')
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='5', width='447', alt='')
+SAX.endElement(img)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 8)
+SAX.startElement(td, valign='BOTTOM', align='RIGHT', class='wired', bgcolor='#FFFFFF')
+SAX.startElement(a, href='/news/0,1287,,00.html')
+SAX.startElement(img, src='http://static.wired.com/news/images/wired_000000.gif', width='153', height='30', border='0')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.endElement(td)
+SAX.characters(
+ , 7)
+SAX.startElement(td, bgcolor='#FF0000', valign='BOTTOM', align='LEFT', width='97')
+SAX.startElement(a, href='/news/0,1287,,00.html')
+SAX.startElement(img, src='http://static.wired.com/news/images/news_ffffff.gif', width='103', height='30', border='0')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.endElement(td)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(td, bgcolor='#FF0000', align='left', valign='center')
+SAX.startElement(nobr)
+SAX.error: Tag nobr invalid
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', width='344', height='1')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1', face='Verdana, Arial, Geneva, sans-serif', color='#FFFFFF')
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(b)
+SAX.characters(updated 10:15 a.m., 18)
+SAX.characters(&nbsp;, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(15.Oct.99.PDT, 13)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(nobr)
+SAX.endElement(td)
+SAX.characters(
+
+
+ , 11)
+SAX.endElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(tr)
+SAX.characters(
+ , 8)
+SAX.startElement(td, valign='MIDDLE', align='RIGHT', bgcolor='#FFFFFF')
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', width='1', height='30')
+SAX.endElement(img)
+SAX.endElement(td)
+SAX.characters(
+
+ , 14)
+SAX.startElement(td, colspan='2', bgcolor='#999999')
+SAX.characters(
+
+ , 9)
+SAX.startElement(table, border='0', cellspacing='0', cellpadding='5')
+SAX.characters(
+, 1)
+SAX.startElement(form, name='RedirectSearch', action='http://redirect.wired.com/search')
+SAX.characters(
+ , 17)
+SAX.startElement(tr)
+SAX.characters(
+ , 15)
+SAX.startElement(td)
+SAX.characters(
+, 2)
+SAX.startElement(font, face='courier', size='1')
+SAX.startElement(input, type='TEXT', name='query', size='20', value='')
+SAX.endElement(input)
+SAX.endElement(font)
+SAX.characters(
+ , 13)
+SAX.endElement(td)
+SAX.characters(
+
+ , 14)
+SAX.startElement(td)
+SAX.characters(
+, 1)
+SAX.startElement(select, name='url')
+SAX.characters(
+
+ , 4)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=vignette.hts&amp;Collection=vignette&amp;QueryMode=Internet&amp;Query=', selected)
+SAX.characters(Wired News, 10)
+SAX.endElement(option)
+SAX.characters(
+ , 3)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=webmonkey.hts&amp;Collection=webmonkey&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(Webmonkey, 9)
+SAX.endElement(option)
+SAX.characters(
+ , 2)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?collection=webmonkey_guides&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=webmonkey_guides.hts&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(Webmonkey Guides, 16)
+SAX.endElement(option)
+SAX.characters(
+ , 2)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?collection=hotwired&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=hotwired_archive.hts&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(HotWired Archives, 17)
+SAX.endElement(option)
+SAX.characters(
+ , 3)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=magazine.hts&amp;Collection=magazine&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(Wired Magazine, 14)
+SAX.endElement(option)
+SAX.characters(
+ , 3)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&amp;Filter=docs_filter.hts&amp;ResultTemplate=animation.hts&amp;Collection=animation&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(Animation Express, 17)
+SAX.endElement(option)
+SAX.characters(
+ , 3)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?collection=suck&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=suck.hts&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(Suck.com, 8)
+SAX.endElement(option)
+SAX.characters(
+ , 2)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://search.hotwired.com/search97/s97.vts?collection=uber_hotwired&amp;Action=FilterSearch&amp;filter=docs_filter.hts&amp;ResultTemplate=uber_hotwired.hts&amp;QueryMode=Internet&amp;Query=')
+SAX.characters(All of HotWired, 15)
+SAX.endElement(option)
+SAX.characters(
+ , 2)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(option, value='http://www.hotbot.com/?SM=MC&amp;DV=0&amp;LG=any&amp;RD=RG&amp;DC=10&amp;DE=2&amp;_v=2&amp;OPs=MDRTP&amp;MT=')
+SAX.characters(The Web -&gt; HotBot, 17)
+SAX.endElement(option)
+SAX.characters(
+, 1)
+SAX.endElement(select)
+SAX.characters(
+
+
+
+ , 16)
+SAX.endElement(td)
+SAX.characters(
+ , 13)
+SAX.startElement(td)
+SAX.characters(
+ , 16)
+SAX.startElement(input, type='SUBMIT', name='SUBMIT', value='SEARCH')
+SAX.endElement(input)
+SAX.characters(
+ , 13)
+SAX.endElement(td)
+SAX.characters(
+ , 11)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.endElement(form)
+SAX.characters(
+ , 16)
+SAX.endElement(table)
+SAX.characters(
+ , 11)
+SAX.endElement(td)
+SAX.characters(
+ , 9)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment(
+<TR>
+<td></td>
+<TD valign="TOP" align="LEFT" colspan="3" bgcolor="#F0F0F0"><img src="http://static.wired.com/news/images/spacer.gif" height=1 width=15 alt=""><br>
+<i><font face="Verdana, Arial, Geneva, sans-serif" size="2">Sponsored by<a href="#">Sun Microsystems.</a> We're the dot in .com</font></i><i></i></TD>
+</TR>
+)
+SAX.characters(
+, 1)
+SAX.endElement(table)
+SAX.characters(
+, 1)
+SAX.comment( end WIRED NEWS header )
+SAX.characters(
+
+, 2)
+SAX.comment( begin upper left side Navigation )
+SAX.characters(
+
+, 2)
+SAX.startElement(table, border='0', cellpadding='3', cellspacing='0', align='LEFT', bgcolor='#FFFFFF')
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#FF0000')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.characters(
+ , 8)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', width='147', height='1', border='0')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(b)
+SAX.characters(SECTIONS, 8)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/business/0,1367,,00.html')
+SAX.characters(Business, 8)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/culture/0,1284,,00.html')
+SAX.characters(Culture, 7)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/technology/0,1282,,00.html')
+SAX.characters(Technology, 10)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/politics/0,1283,,00.html')
+SAX.characters(Politics, 8)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.startElement(tr)
+SAX.characters(
+, 1)
+SAX.startElement(td, bgcolor='#FF0000')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.characters(
+, 1)
+SAX.startElement(b)
+SAX.characters(WIRE SERVICE NEWS, 17)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.characters(
+, 1)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/news/reuters/')
+SAX.characters(Top Headlines, 13)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.characters(
+, 1)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/news/reuters/sports/')
+SAX.characters(Sports, 6)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.characters(
+, 1)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='/news/news/reuters/business/')
+SAX.characters(Finance, 7)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment( End upper left nav )
+SAX.comment( Begin lower Left Nav )
+SAX.characters(
+ , 5)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#FF0000')
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.characters(
+ , 8)
+SAX.startElement(b)
+SAX.startElement(font, size='1')
+SAX.characters(FREE DELIVERY, 13)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 5)
+SAX.endElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.characters(
+, 1)
+SAX.startElement(table, cellspacing='0', cellpadding='0', border='0')
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.characters(
+ , 4)
+SAX.startElement(form, action='http://r.hotwired.com/r/hw_wm_r_nav_nwsltr/http://perl.hotwired.com/massmail/cgiParser.cgi', method='get', target='_top')
+SAX.characters(
+
+ , 3)
+SAX.startElement(input, type='hidden', name='success_page', value='http://www.hotwired.com/email/signup/wirednews-ascii.html')
+SAX.endElement(input)
+SAX.characters(
+
+, 3)
+SAX.startElement(input, type='hidden', name='failure_page', value='http://www.hotwired.com/email/signup/wirednews-ascii.html')
+SAX.endElement(input)
+SAX.characters(
+
+, 3)
+SAX.startElement(input, type='hidden', name='LIST', value='wn_ascii')
+SAX.endElement(input)
+SAX.characters(
+, 1)
+SAX.startElement(input, type='hidden', name='SOURCE', value='other')
+SAX.endElement(input)
+SAX.characters(
+ , 2)
+SAX.startElement(input, type='hidden', name='ACTION', value='subscribe')
+SAX.endElement(input)
+SAX.characters(
+
+, 3)
+SAX.startElement(input, type='TEXT', name='from', size='10', value='enter email')
+SAX.endElement(input)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+, 1)
+SAX.endElement(form)
+SAX.endElement(td)
+SAX.characters(
+ , 4)
+SAX.startElement(td, valign='top', bgcolor='#99FF99')
+SAX.characters(
+ , 3)
+SAX.startElement(input, type='SUBMIT', name='SUBMIT', value='GO')
+SAX.endElement(input)
+SAX.characters(
+
+ , 5)
+SAX.endElement(td)
+SAX.characters(
+ , 2)
+SAX.endElement(tr)
+SAX.characters( , 4)
+SAX.error: Unexpected end tag : form
+SAX.characters(
+, 1)
+SAX.endElement(table)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#FF0000')
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.characters(
+ , 8)
+SAX.startElement(b)
+SAX.startElement(font, size='1')
+SAX.characters(STOCKS, 6)
+SAX.endElement(font)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.characters(Get Quote:, 10)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td, bgcolor='#99FF99', marginwidth='0', marginheight='0')
+SAX.startElement(form, method='get', action='http://r.wired.com/r/10020/http://stocks.wired.com/stocks_quotes.asp')
+SAX.startElement(input, type='TEXT', name='Symbol', size='12')
+SAX.endElement(input)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(input, type='SUBMIT', name='submit', value='GO')
+SAX.endElement(input)
+SAX.endElement(form)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment( BEGIN BUTTON ADS )
+SAX.characters(
+
+ , 5)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.characters(
+, 1)
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.characters(Financial Services, 18)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(center)
+SAX.characters(
+, 1)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='3', width='5', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, src='http://static.wired.com/news/images/button_ads_news10.gif', width='143', height='56', border='0', alt='', usemap='#buttons', hspace='0', vspace='0')
+SAX.endElement(img)
+SAX.characters(
+, 1)
+SAX.endElement(center)
+SAX.characters(
+
+, 2)
+SAX.startElement(map, name='buttons')
+SAX.characters(
+ , 9)
+SAX.startElement(area, shape='RECT', alt='Datek', coords='0,0,69,24', href='http://r.wired.com/r/1649/http://ads16.focalink.com/SmartBanner/page/1266.631')
+SAX.endElement(area)
+SAX.characters(
+ , 9)
+SAX.startElement(area, shape='RECT', alt='Wired Index Fund', coords='73,0,142,24', href='http://r.wired.com/r/227/http://www.gffunds.com/wired')
+SAX.endElement(area)
+SAX.characters(
+ , 9)
+SAX.startElement(area, shape='RECT', alt='internet.com Index Fund', coords='73,31,142,55', href='http://r.wired.com/r/298/http://www.gffunds.com/isdex/')
+SAX.endElement(area)
+SAX.characters(
+ , 9)
+SAX.startElement(area, shape='RECT', alt='GetSmart&apos;s MortgageFinder', coords='0,31,69,55', href='http://r.wired.com/r/294/http://www.getsmartinc.com/mortgage/HomeBanner?BANNERNAME=www.getsmartinc.com/mwired001m6075x25')
+SAX.endElement(area)
+SAX.endElement(map)
+SAX.characters(
+ , 9)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters( , 1)
+SAX.comment( END BUTTON ADS )
+SAX.characters(
+
+ , 6)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='http://redirect.wired.com/redir/51/http://stocks.wired.com/')
+SAX.characters(Today's Summary, 15)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='http://r.wired.com/r/hb_fin_r_wn_top/http://stocks.wired.com/stocks_indexes_detail.asp?Symbol=$WIRED')
+SAX.characters(Wired Index, 11)
+SAX.endElement(a)
+SAX.characters( | , 3)
+SAX.startElement(a, href='http://redirect.wired.com/redir/52/http://stocks.wired.com/stocks_indexes.asp ')
+SAX.characters(All Indexes, 11)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#99FF99')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(a, href='http://redirect.wired.com/redir/53/http://stocks.wired.com/stocks_portfolios.asp')
+SAX.characters(Portfolios, 10)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.comment( BEGIN B&N spot )
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td, bgcolor='#FF0000')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.startElement(b)
+SAX.characters(FIND A BOOK, 11)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.characters(
+, 1)
+SAX.startElement(table, cellspacing='0', cellpadding='0', border='0', width='145')
+SAX.characters(
+ , 17)
+SAX.startElement(tr)
+SAX.startElement(td, bgcolor='#CCFFCC')
+SAX.characters(
+ , 17)
+SAX.startElement(form, action='http://r.wired.com/r/wn_nav_c_bn/http://barnesandnoble.bfast.com/booklink/click')
+SAX.characters(
+, 1)
+SAX.startElement(input, type='hidden', name='sourceid', value='383471')
+SAX.endElement(input)
+SAX.characters(
+, 1)
+SAX.startElement(input, type='hidden', name='categoryid', value='categorydropdown')
+SAX.endElement(input)
+SAX.characters(
+ , 17)
+SAX.startElement(font, size='2')
+SAX.characters(
+ , 17)
+SAX.startElement(select, name='Subjects', size='4')
+SAX.characters(
+, 1)
+SAX.startElement(option, value='301')
+SAX.characters(Business Top 20
+, 16)
+SAX.endElement(option)
+SAX.startElement(option, value='500')
+SAX.characters(Computers
+, 10)
+SAX.endElement(option)
+SAX.startElement(option, value='503')
+SAX.characters(Computer Games
+, 15)
+SAX.endElement(option)
+SAX.startElement(option, value='1604')
+SAX.characters(Current Affairs
+, 16)
+SAX.endElement(option)
+SAX.startElement(option, value='511')
+SAX.characters(Cyberculture
+, 13)
+SAX.endElement(option)
+SAX.startElement(option, value='510')
+SAX.characters(Internet/Web
+, 13)
+SAX.endElement(option)
+SAX.startElement(option, value='303')
+SAX.characters(Investing
+, 10)
+SAX.endElement(option)
+SAX.startElement(option, value='1606')
+SAX.characters(Law
+, 4)
+SAX.endElement(option)
+SAX.startElement(option, value='513')
+SAX.characters(Multimedia
+
+, 12)
+SAX.endElement(option)
+SAX.startElement(option, value='1605')
+SAX.characters(Newsmakers
+, 11)
+SAX.endElement(option)
+SAX.startElement(option, value='1607')
+SAX.characters(Politics/Govt.
+
+ , 17)
+SAX.endElement(option)
+SAX.startElement(option, value='315')
+SAX.characters( Web Business
+ , 16)
+SAX.endElement(option)
+SAX.startElement(option, value='2800')
+SAX.characters( Bargain Books
+ , 40)
+SAX.endElement(option)
+SAX.startElement(option, value='4')
+SAX.characters(Other
+
+
+
+
+
+ , 14)
+SAX.endElement(option)
+SAX.endElement(select)
+SAX.endElement(font)
+SAX.endElement(form)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.characters(
+ , 2)
+SAX.startElement(tr, align='left', valign='top')
+SAX.characters(
+ , 17)
+SAX.startElement(td, valign='top', bgcolor='#CCFFCC')
+SAX.characters( , 1)
+SAX.startElement(input, type='submit', value='GO')
+SAX.endElement(input)
+SAX.characters(
+
+, 2)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(img, src='http://barnesandnoble.bfast.com/booklink/serve?sourceid=383471&amp;is_search=Y', border='0', align='top')
+SAX.endElement(img)
+SAX.characters(
+, 1)
+SAX.comment(
+<IMG SRC="http://www.wired.com/partner/bn/trackingimg/ot_wn_nav_c_bn.gif" border=0 width=1 height=1 align=top>
+)
+SAX.characters(
+, 1)
+SAX.endElement(td)
+SAX.characters(
+
+ , 35)
+SAX.endElement(tr)
+SAX.characters(
+ , 17)
+SAX.startElement(tr, align='left', valign='top')
+SAX.characters(
+
+ , 11)
+SAX.startElement(td, align='left', valign='top', colspan='2', rowspan='1', bgcolor='#CCFFCC')
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(
+ , 9)
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, ', color='#000000')
+SAX.characters(Powered by , 11)
+SAX.startElement(a, href='http://r.wired.com/r/wn_nav_c_bn/http://barnesandnoble.bfast.com/booklink/click?sourceid=383471')
+SAX.characters(barnesandnoble.com, 18)
+SAX.endElement(a)
+SAX.characters(
+ , 2)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.startElement(br, clear='all')
+SAX.endElement(br)
+SAX.characters(
+
+
+, 3)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 9)
+SAX.endElement(tr)
+SAX.characters( , 2)
+SAX.error: Unexpected end tag : form
+SAX.characters(
+ , 9)
+SAX.endElement(table)
+SAX.characters(
+
+, 2)
+SAX.endElement(td)
+SAX.endElement(tr)
+SAX.characters(
+ , 2)
+SAX.comment( END B&N spot )
+SAX.characters(
+
+, 7)
+SAX.comment( BEGIN MAGAZINE SPOT )
+SAX.characters(
+
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#000000')
+SAX.startElement(font, color='#FFFFFF', face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(b)
+SAX.characters(WIRED
+ MAGAZINE , 22)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.startElement(tr)
+SAX.characters(
+, 2)
+SAX.startElement(td, bgcolor='#FFFF99', align='CENTER')
+SAX.characters(
+, 1)
+SAX.startElement(font, face='verdana, arial, helvetica, sans-serif', size='1')
+SAX.characters(
+, 1)
+SAX.startElement(b)
+SAX.characters(
+, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.startElement(a, href='http://www.wired.com/wired/')
+SAX.startElement(img, src='http://static.wired.com/news/images/wiredcover.gif', width='91', height='109', border='0', alt='Wired Magazine')
+SAX.endElement(img)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(b)
+SAX.characters(
+
+Issue 7.11
+, 13)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.characters(
+, 2)
+SAX.startElement(td, bgcolor='#FFFF99', align='center')
+SAX.characters(
+, 1)
+SAX.startElement(font, face='verdana, arial, helvetica, sans-serif', size='1')
+SAX.characters(
+
+, 3)
+SAX.startElement(a, href='http://www.wired.com/wired/subscribe/special/79WN')
+SAX.characters(Subscribe to Wired., 19)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(Special offer!, 14)
+SAX.endElement(a)
+SAX.characters(
+
+
+, 3)
+SAX.endElement(font)
+SAX.characters(
+, 1)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment( END MAGAZINE SPOT )
+SAX.characters(
+
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td, bgcolor='#000000')
+SAX.characters(
+ , 6)
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.startElement(b)
+SAX.characters(HOTWIRED, 8)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#FFFF99')
+SAX.characters( , 1)
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.hotwired.com/')
+SAX.characters(Frontdoor, 9)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.hotwired.com/webmonkey/')
+SAX.characters(Webmonkey, 9)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.hotwired.com/webmonkey/guides/index.html')
+SAX.characters(Webmonkey Guides, 16)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.hotwired.com/rgb/')
+SAX.characters(RGB Gallery, 11)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.hotwired.com/animation/')
+SAX.characters(Animation Express, 17)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://go.suck.com/su_wnfd')
+SAX.characters(Suck.com, 8)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+
+ , 8)
+SAX.startElement(tr)
+SAX.characters(
+ , 5)
+SAX.startElement(td, bgcolor='#000000')
+SAX.characters(
+ , 6)
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.startElement(b)
+SAX.characters(HOTBOT, 6)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(tr)
+SAX.characters(
+ , 6)
+SAX.startElement(td, bgcolor='#FFFF99')
+SAX.characters( , 1)
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#000000')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://redirect.wired.com/redir/54/http://www.hotbot.com/')
+SAX.characters(Search, 6)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://shop.hotbot.com/')
+SAX.characters(Shopping, 8)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+
+ , 6)
+SAX.startElement(tr)
+SAX.startElement(td)
+SAX.characters(
+ , 3)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.characters(
+ , 3)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.characters(
+ Wired News , 14)
+SAX.startElement(a, href='/news/who/0,1362,,00.html')
+SAX.characters(staff, 5)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+ , 4)
+SAX.comment( Wired News is <a href="http://www.wired.com/news/jobs.html">hiring</a><br><br> )
+SAX.characters(
+
+ , 4)
+SAX.startElement(b)
+SAX.startElement(a, href='/news/feedback/0,1364,,00.html')
+SAX.characters(Contact us, 10)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.characters(
+
+
+ , 7)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+ , 6)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.characters(Wired News delivered, 21)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(by , 3)
+SAX.startElement(a, href='/news/palmpilot/0,1365,,00.html')
+SAX.characters(PalmPilot, 9)
+SAX.endElement(a)
+SAX.characters(,, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://www.hotwired.com/email/signup/wn_outlook.html')
+SAX.characters(Outlook Express, 16)
+SAX.endElement(a)
+SAX.characters(,, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(a, href='http://redirect.wired.com/redir/55/http://form.netscape.com/ibd/html/ibd_frameset.html')
+SAX.characters(In-Box Direct, 13)
+SAX.endElement(a)
+SAX.characters(,, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+or , 4)
+SAX.startElement(a, href='/news/pointcast/0,1366,,00.html')
+SAX.characters(PointCast, 9)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.comment( TRACKING )
+SAX.characters(
+, 1)
+SAX.startElement(img, src='http://www.wired.com/special/modx/news.gif', height='1', width='1', alt='')
+SAX.endElement(img)
+SAX.characters(
+, 1)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.endElement(table)
+SAX.characters(
+
+, 2)
+SAX.comment( end lower left side Navigation )
+SAX.characters(
+, 1)
+SAX.comment( CONTENT TABLE )
+SAX.characters(
+
+, 2)
+SAX.startElement(table, border='0', width='447', cellspacing='0', cellpadding='0', bordercolor='#66FF00')
+SAX.characters(
+ , 2)
+SAX.startElement(tr)
+SAX.characters(
+ , 3)
+SAX.startElement(td, valign='TOP', align='LEFT', rowspan='2')
+SAX.characters(
+ , 4)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='1', width='15', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 3)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.startElement(td, colspan='3', valign='TOP', align='LEFT')
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='7', width='432', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+
+, 3)
+SAX.comment( SQL query for Package here )
+SAX.characters(
+
+, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.startElement(b)
+SAX.startElement(i)
+SAX.characters(Nomad's Land, 12)
+SAX.endElement(i)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, src='http://static.wired.com/news/images/pix155.gif', height='10', width='155', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT: Homeless, but ID'd, in Seattle )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='5')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/politics/0,1283,31911,00.html')
+SAX.characters(Homeless, but ID'd, in Seattle, 30)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1', face='Verdana, Arial, Geneva, sans-serif', color='#FF0000')
+SAX.characters(8:15 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(The city council approves a pl, 180)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/politics/0,1283,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Politics, 8)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(table, bgcolor='#F0F0F0', cellpadding='0', cellspacing='0', border='0', width='147', align='RIGHT')
+SAX.characters(
+ , 2)
+SAX.comment( Commentary Frag Begin )
+SAX.characters(
+ , 9)
+SAX.startElement(tr)
+SAX.characters(
+ , 11)
+SAX.startElement(td, bgcolor='#000000')
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+ , 11)
+SAX.startElement(td, bgcolor='#000000')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.startElement(b)
+SAX.characters(HITS , 5)
+SAX.characters(&amp;, 1)
+SAX.characters( MISC., 6)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 9)
+SAX.endElement(tr)
+SAX.characters(
+ , 9)
+SAX.startElement(tr)
+SAX.characters(
+ , 11)
+SAX.startElement(td)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+ , 11)
+SAX.startElement(td)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='5', width='5', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+ , 4)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/commentarySection/0,1292,31664,00.html')
+SAX.characters(Calendar of E-Vents, 19)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Ongoing goings-on. , 19)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/commentarySection/0,1292,31926,00.html')
+SAX.characters(Rants , 6)
+SAX.error: htmlParseEntityRef: no name
+SAX.characters(&amp;, 1)
+SAX.characters( Raves, 6)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Readers on Apple's G4 ... AOL', 59)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters( , 2)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 9)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment( Commentary Frag End )
+SAX.characters(
+, 1)
+SAX.startElement(tr)
+SAX.characters(
+, 2)
+SAX.startElement(td, align='left', bgcolor='#000000')
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+, 2)
+SAX.startElement(td, bgcolor='#000000')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.startElement(b)
+SAX.characters(CURRENT HOO-HA, 14)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+
+, 2)
+SAX.startElement(tr)
+SAX.characters(
+, 2)
+SAX.startElement(td)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.startElement(td)
+SAX.characters(
+, 1)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='5', width='5', alt='')
+SAX.endElement(img)
+SAX.characters(
+, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/mp3/0,1285,,00.html')
+SAX.characters(MP3 Rocks the Web, 17)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Download the sound. , 21)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.startElement(a, href='http://r.hotwired.com/r/wn_fd_mp3_r_mscm_txt/http://webfarm.mediaplex.com/click_thru_request/164-1361b-1052', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(Musicmaker, 10)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/wireless/0,1382,,00.html')
+SAX.characters(The Wireless World, 18)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Networking gets unplugged. , 28)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.startElement(a, href='http://www.ericsson.se/get/internet/default.shtml', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(Ericsson, 8)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/digiwood/0,1412,,00.html')
+SAX.characters(Digital Hollywood, 17)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(The buzz of tech., 17)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/ipo/0,1350,,00.html')
+SAX.characters(IPO Outlook, 11)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Deals in the pipeline. , 24)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.startElement(a, href='http://r.hotwired.com/r/wn_ipo_r_sun_txt/http://sun.com/ads/smi/brand/hotwired.html', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(Sun, 3)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/ebiz/0,1272,,00.html')
+SAX.characters(E-Biz, 5)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Business unusual. , 19)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.startElement(a, href='http://r.wired.com/r/wn_fd_r_ebiz_ibm_txt/http://www.ibm.com', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(IBM, 3)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/medtech/0,1286,,00.html')
+SAX.characters(Med-Tech Center, 15)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(From the bleeding edge., 23)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by WebMD, 18)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/linux/0,1411,,00.html')
+SAX.characters(The Linux Effect, 16)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Not just for geeks., 19)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters( , 1)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='7', width='5', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/exec/0,1370,,00.html')
+SAX.characters(Executive Summary, 17)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1', face='Arial, Helvetica, sans-serif', color='#000000')
+SAX.characters(CEOs, COOs, CIOs unite. , 25)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.startElement(a, href='http://r.wired.com/r/wn_exec_r_vign/http://www.vignette.com/', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(Vignette, 8)
+SAX.error: Opening and ending tag mismatch: a and font
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/school/0,1383,,00.html')
+SAX.characters(Making the Grade, 16)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Reading, writing, and ROM. , 28)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.startElement(a, href='http://r.hotwired.com/r/wn_sch_r_nav_uop/http://ads25.focalink.com/SmartBanner/page?12630.53', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(U of Phoenix, 12)
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/infostructure/0,1377,,00.html')
+SAX.characters(Infostructure, 13)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1', face='Arial, Helvetica, sans-serif', color='#000000')
+SAX.characters(An IS/IT resource , 18)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(i)
+SAX.characters(Sponsored by , 13)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(a, href='http://r.wired.com/r/wn_is_r_ssec/http://ad.doubleclick.net/clk;653163;3599571;s?http://www.sprintbiz.com/s
+ervlet/appservlet?from=/wired/sprint/&amp;template=/security/security.html&amp;SITE=
+wired.com&amp;BANNER=Sprint', style='text-decoration:none')
+SAX.startElement(font, color='#000000')
+SAX.characters(Sprint, 6)
+SAX.error: Opening and ending tag mismatch: a and font
+SAX.endElement(font)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.error: End tag : expected '>'
+SAX.endElement(font)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, size='2', face='Arial,Helvetica, sans-serif')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/y2k/0,1360,,00.html')
+SAX.characters(Y2K Watch, 9)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif')
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.characters(Tick... Tick... Tick..., 23)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 3)
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='2')
+SAX.startElement(b)
+SAX.startElement(i)
+SAX.startElement(a, href='/news/special_reports/1,1293,,00.html')
+SAX.characters(More Hoo-Ha, 11)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.error: Opening and ending tag mismatch: td and font
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+, 1)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment( start of Gen News )
+SAX.characters(
+ , 17)
+SAX.startElement(tr)
+SAX.characters(
+ , 20)
+SAX.startElement(td, bgcolor='#000000')
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+ , 11)
+SAX.startElement(td, bgcolor='#000000')
+SAX.startElement(font, size='1', face='Verdana, Arial, Helvetica, sans-serif', color='#FFFFFF')
+SAX.startElement(b)
+SAX.characters(MEANWHILE..., 12)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.endElement(td)
+SAX.characters(
+ , 9)
+SAX.endElement(tr)
+SAX.characters(
+
+ , 10)
+SAX.startElement(tr)
+SAX.characters(
+ , 12)
+SAX.startElement(td)
+SAX.characters(&nbsp;, 2)
+SAX.endElement(td)
+SAX.characters(
+ , 11)
+SAX.startElement(td, align='left', valign='top')
+SAX.characters(
+ , 11)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='5', width='5', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+
+, 3)
+SAX.comment( 31942 )
+SAX.characters(
+, 1)
+SAX.startElement(font, size='2', face='Arial, Helvetica, sans-serif', color='#000000')
+SAX.startElement(b)
+SAX.characters(F&uuml;hrer Furor, 13)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, size='1', face='Arial, Geneva, sans-serif', color='#000000')
+SAX.startElement(p)
+SAX.characters(
+Contruction workers in Berli, 637)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(p)
+SAX.startElement(li)
+SAX.characters(More from , 10)
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(a, href='http://www.lycos.com/news/flash/hitlerbunker.html?v=wn1015&amp;lpv=1')
+SAX.characters(Lycos, 5)
+SAX.endElement(a)
+SAX.endElement(li)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 2)
+SAX.endElement(td)
+SAX.characters(
+ , 9)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.comment( end of Gen News )
+SAX.characters(
+, 1)
+SAX.endElement(table)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(font, size='1')
+SAX.characters(&nbsp;, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.endElement(font)
+SAX.characters(
+
+, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.startElement(b)
+SAX.startElement(i)
+SAX.characters(Other Top Stories, 17)
+SAX.endElement(i)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(img, src='http://static.wired.com/news/images/pix155.gif', height='10', width='155', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.comment( SQL query here )
+SAX.characters(
+, 1)
+SAX.comment( IBD_SUBJECT:Wall Street Keeps Reeling )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/reuters/0,1349,31934,00.html')
+SAX.characters(Wall Street Keeps Reeling, 25)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(10:15 a.m., 10)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(The Dow and Nasdaq suffer size, 180)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/reuters/0,1349,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Reuters, 7)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:The Market's Madness )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/reuters/0,1349,31935,00.html')
+SAX.characters(The Market's Madness, 20)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(9:10 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(The bulls and the bears are in, 128)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/reuters/0,1349,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Reuters, 7)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:'Want a Loan? What's Your Race?' )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/politics/0,1283,31533,00.html')
+SAX.characters('Want a Loan? What's Your Race, 32)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(The Federal Reserve is in the , 184)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/politics/0,1283,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Politics, 8)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:Music Regs: A Bagful of Noise )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/business/0,1367,31832,00.html')
+SAX.characters(Music Regs: A Bagful of Noise, 29)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(The struggle to come up with a, 171)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/business/0,1367,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Business, 8)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:Can't Beat 'Em? Green 'Em )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/technology/0,1282,31927,00.html')
+SAX.characters(Can't Beat 'Em? Green 'Em, 25)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(High-tech companies are notori, 186)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/technology/0,1282,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Technology, 10)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:Y2K Cloud Over MS Office )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/business/0,1367,31932,00.html')
+SAX.characters(Y2K Cloud Over MS Office, 24)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(Windows NT sales remain strong, 165)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/business/0,1367,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Business, 8)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#FF0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(Med-Tech, 8)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:Biochips for Custom Chemo )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/technology/0,1282,31914,00.html')
+SAX.characters(Biochips for Custom Chemo, 25)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(Different cancer patients need, 207)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/technology/0,1282,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Technology, 10)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:High Stakes in Priceline Suit )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/business/0,1367,31916,00.html')
+SAX.characters(High Stakes in Priceline Suit, 29)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(It's not just another round of, 196)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/business/0,1367,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Business, 8)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( IBD_SUBJECT:Biodiversity Merges Online )
+SAX.startElement(font, face='Arial, Helvetica, sans-serif', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='/news/technology/0,1282,31918,00.html')
+SAX.characters(Biodiversity Merges Online, 26)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, color='#ff0000', face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(3:00 a.m., 9)
+SAX.endElement(font)
+SAX.characters(&nbsp;, 2)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.characters(The far-flung databases on glo, 196)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='Verdana, Arial, Helvetica, sans-serif', size='1')
+SAX.startElement(i)
+SAX.startElement(a, href='/news/technology/0,1282,,00.html')
+SAX.characters(in, 2)
+SAX.characters(&nbsp;, 2)
+SAX.characters(Technology, 10)
+SAX.endElement(a)
+SAX.endElement(i)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( SQL above )
+SAX.characters(
+
+
+
+, 12)
+SAX.comment(----TRADES-------)
+SAX.characters(
+, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='2')
+SAX.startElement(b)
+SAX.startElement(i)
+SAX.characters(Elsewhere Today, 15)
+SAX.endElement(i)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(img, src='http://static.wired.com/news/images/pix155.gif', height='10', width='155', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.comment( SQL query here )
+SAX.characters(
+, 1)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.thestandard.com/articles/display/0,1449,6975,00.html?home.tf')
+SAX.characters(FCC: Hands-Off on Broadband, 27)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.startElement(cite)
+SAX.characters(The Industry Standard, 21)
+SAX.endElement(cite)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://news.lycos.com/stories/TopNews/19991014RTNEWS-ARMS-TREATY.asp')
+SAX.characters(White House Lashes Out on Trea, 32)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.characters(Lycos, 5)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.pathfinder.com/time/magazine/articles/0,3266,32207,00.html')
+SAX.characters(Steve Jobs at 44, 16)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.startElement(cite)
+SAX.characters(Time, 4)
+SAX.endElement(cite)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.zdnet.com/zdnn/stories/news/0,4586,2353608,00.html')
+SAX.characters(Computers May Run on Gas, 24)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.characters(ZDNN, 4)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.nytimes.com/library/tech/99/10/biztech/articles/14free.html')
+SAX.characters(Much Is Free in the Wired Worl, 31)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.startElement(cite)
+SAX.characters(The New York Times, 18)
+SAX.endElement(cite)
+SAX.characters( (Registration Required), 24)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.usatoday.com/life/cyber/nb/nb4.htm')
+SAX.characters(Melissa: I'm Baaaack, 20)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.startElement(cite)
+SAX.characters(USA Today, 9)
+SAX.endElement(cite)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.msnbc.com/news/322926.asp')
+SAX.characters(Domain Owners Surrender Privac, 31)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.characters(MSNBC, 5)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.washingtonpost.com/wp-srv/business/longterm/tech/techthursday/download/download.htm')
+SAX.characters(Dividing to Conquer in VC Game, 30)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.startElement(cite)
+SAX.characters(The Washington Post, 19)
+SAX.endElement(cite)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://www.salon.com/tech/books/1999/10/14/redhat_book/index.html')
+SAX.characters(The Red Hat Diaries, 19)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.characters(Salon, 5)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='helvetica, arial', size='3')
+SAX.startElement(b)
+SAX.startElement(a, href='http://news.bbc.co.uk/hi/english/sci/tech/newsid_473000/473856.stm')
+SAX.characters(Screensaver to Predict Climate, 30)
+SAX.endElement(a)
+SAX.endElement(b)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(font, face='geneva, arial', size='2')
+SAX.characters(BBC News, 8)
+SAX.endElement(font)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.comment( SQL above )
+SAX.characters(
+
+
+
+, 4)
+SAX.comment( - - - - - - - - - - - - )
+SAX.characters(
+
+ , 6)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+
+ , 4)
+SAX.startElement(tr)
+SAX.characters(
+ , 4)
+SAX.startElement(td, valign='TOP', align='LEFT')
+SAX.characters(
+
+ , 6)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='1', width='280', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+ , 7)
+SAX.comment( FOOTER )
+SAX.characters(
+
+, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(img, src='http://static.wired.com/news/images/pix155.gif', height='10', width='155', border='0', usemap='#navstrip.map', alt='')
+SAX.endElement(img)
+SAX.characters(
+, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.startElement(img, src='http://static.wired.com/news/images/navstrip_off.gif', height='17', width='126', usemap='#navstrip.map', border='0', alt='')
+SAX.endElement(img)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+
+, 2)
+SAX.startElement(p)
+SAX.startElement(font, face='Verdana, Arial, Geneva, sans-serif', size='1')
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.wired.com/news/feedback.html')
+SAX.characters(Send us feedback, 16)
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.hotwired.com/jobs/')
+SAX.characters(Work at Wired Digital, 21)
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://home.wired.com/advertising/')
+SAX.characters(Advertise with us, 17)
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://home.wired.com/')
+SAX.characters(About Wired Digital, 19)
+SAX.endElement(a)
+SAX.characters(
+, 1)
+SAX.characters(&nbsp;, 2)
+SAX.characters(|, 1)
+SAX.characters(&nbsp;, 2)
+SAX.characters(
+, 1)
+SAX.startElement(a, href='http://www.wired.com/home/digital/privacy/')
+SAX.characters(Our Privacy Policy, 18)
+SAX.endElement(a)
+SAX.endElement(font)
+SAX.characters(
+
+
+, 3)
+SAX.endElement(p)
+SAX.startElement(p)
+SAX.startElement(font, face='Verdana, Arial, Geneva', size='1')
+SAX.startElement(a, href='http://www.wired.com/home/copyright.html')
+SAX.characters(Copyright, 9)
+SAX.endElement(a)
+SAX.characters( , 1)
+SAX.characters(&copy;, 2)
+SAX.characters( 1994-99 Wired Digital Inc. Al, 48)
+SAX.endElement(font)
+SAX.characters(
+
+, 2)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.comment( TRACKING )
+SAX.characters(
+, 1)
+SAX.startElement(img, src='http://www.wired.com/special/modx/news.gif', height='1', width='1', alt='')
+SAX.endElement(img)
+SAX.characters(
+
+, 2)
+SAX.startElement(map, name='navstrip.map')
+SAX.characters(
+, 1)
+SAX.startElement(area, shape='rect', coords='0,0,14,16', href='/news')
+SAX.endElement(area)
+SAX.characters(
+, 1)
+SAX.startElement(area, shape='rect', coords='15,0 31,16', href='/news/business/')
+SAX.endElement(area)
+SAX.characters(
+, 1)
+SAX.startElement(area, shape='rect', coords='32,0,48,16', href='/news/culture/')
+SAX.endElement(area)
+SAX.characters(
+, 1)
+SAX.startElement(area, shape='rect', coords='49,0,65,16', href='/news/technology/')
+SAX.endElement(area)
+SAX.characters(
+, 1)
+SAX.startElement(area, shape='rect', coords='66,0,83,16', href='/news/politics/')
+SAX.endElement(area)
+SAX.characters(
+, 1)
+SAX.endElement(map)
+SAX.characters(
+ , 2)
+SAX.endElement(p)
+SAX.endElement(td)
+SAX.characters(
+ , 4)
+SAX.startElement(td, valign='TOP', align='LEFT')
+SAX.characters(
+ , 5)
+SAX.startElement(img, src='http://static.wired.com/news/images/spacer.gif', height='1', width='5', alt='')
+SAX.endElement(img)
+SAX.characters(
+ , 4)
+SAX.endElement(td)
+SAX.characters(
+ , 4)
+SAX.startElement(td, valign='TOP', align='LEFT')
+SAX.characters(
+ , 4)
+SAX.endElement(td)
+SAX.characters(
+ , 3)
+SAX.endElement(tr)
+SAX.characters(
+, 1)
+SAX.endElement(table)
+SAX.characters(
+
+
+, 3)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+, 1)
+SAX.endElement(body)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(html)
+SAX.ignorableWhitespace(
+
+, 2)
+SAX.endDocument()
diff --git a/result/SVG/4rects.xml b/result/SVG/4rects.xml
new file mode 100644
index 0000000..dfaa02d
--- /dev/null
+++ b/result/SVG/4rects.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Four separate rectangles
+ </desc>
+ <rect width="20" height="60"/>
+ <rect width="30" height="70"/>
+ <rect width="40" height="80"/>
+ <rect width="50" height="90"/>
+</svg>
diff --git a/result/SVG/a-valid.xml b/result/SVG/a-valid.xml
new file mode 100644
index 0000000..8f4a204
--- /dev/null
+++ b/result/SVG/a-valid.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This valid svg document draws a triangle which is a hyperlink
+ </desc>
+ <a href="http://www.w3.org">
+ <p d="M 0 0 L 200 0 L 100 200 Z"/>
+ </a>
+</svg>
diff --git a/result/SVG/a-wf.xml b/result/SVG/a-wf.xml
new file mode 100644
index 0000000..7facfd5
--- /dev/null
+++ b/result/SVG/a-wf.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <desc>This well formed svg document draws a triangle which is a hyperlink
+ </desc>
+ <a xml:link="simple" show="replace" actuate="user" href="http://www.w3.org">
+ <p d="M 0 0 L 200 0 L 100 200 Z"/>
+ </a>
+</svg>
diff --git a/result/SVG/bike-errors.xml b/result/SVG/bike-errors.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/SVG/bike-errors.xml
diff --git a/result/SVG/bike.xml b/result/SVG/bike.xml
new file mode 100644
index 0000000..410869d
--- /dev/null
+++ b/result/SVG/bike.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <title>Kona Lavadome mountain bike
+ </title>
+ <desc>This picture shows a mountain bike, a human-propelled,
+ multi-terrain vehicle. While it can be succesfully used on moorland,
+ forest, roads, and large hills it is not actually suitable for going
+ up mountains.
+ </desc>
+ <g id="bike">
+ <defs>
+ <symbol id="spoke">
+ <desc>14/12 gauge double butted spoke</desc>
+<!-- the path data goes here -->
+ </symbol>
+ <symbol id="hub">
+ <desc>black anodised low torsion hub</desc>
+<!--the path data goes here -->
+ </symbol>
+ <symbol id="rim">
+ <desc>twin wall, eyeletted rim</desc>
+<!-- the path data goes here-->
+ </symbol>
+ <symbol id="cogs">
+ <desc>8 speed, wide ratio gearing</desc>
+<!--the path data goes here -->
+ </symbol>
+ <symbol id="lacing">
+ <desc>double cross lacing of 32 spokes</desc>
+ </symbol>
+ </defs>
+<!-- the overall bike drawing goes here -->
+ <g id="frontwheel">
+ <title>Front wheel</title>
+ <desc>The front wheel provides grip, steering and some shock absorption</desc>
+ <use href="id(lacing)" style="rotation: 20deg; fillcolor: black"/>
+ </g>
+ <g id="backwheel"/>
+ <g id="frame">
+<!-- and so on -->
+ </g>
+ </g>
+</svg>
diff --git a/result/SVG/circle.xml b/result/SVG/circle.xml
new file mode 100644
index 0000000..ae7d545
--- /dev/null
+++ b/result/SVG/circle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This is a blue circle with a red outline
+ </desc>
+ <g>
+ <circle style="fill: blue; stroke: red" cx="200" cy="200" r="100"/>
+ </g>
+</svg>
diff --git a/result/SVG/defs.xml b/result/SVG/defs.xml
new file mode 100644
index 0000000..78c6beb
--- /dev/null
+++ b/result/SVG/defs.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <rect id="TemplateObject01" width="100" height="37.34"/>
+ <lineargradient id="Gradient01">
+ <gradientstop offset="30%" color="#39F"/>
+ </lineargradient>
+ </defs>
+ <desc>Defining things for later use
+ </desc>
+<!-- SVG elements in here would reference/use
+ the elements defined in the <defs> -->
+</svg>
diff --git a/result/SVG/desc.xml b/result/SVG/desc.xml
new file mode 100644
index 0000000..6fde966
--- /dev/null
+++ b/result/SVG/desc.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg SYSTEM "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <g>
+ <title>
+ Company sales by region
+ </title>
+ <desc>
+ This is a bar chart which shows
+ company sales by region.
+ </desc>
+<!-- Bar chart defined as vector data -->
+ </g>
+</svg>
diff --git a/result/SVG/ellipse.xml b/result/SVG/ellipse.xml
new file mode 100644
index 0000000..1f72346
--- /dev/null
+++ b/result/SVG/ellipse.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This is an ellipse, axis aligned and centered on the origin
+ </desc>
+ <g>
+ <ellipse major="85" minor="45"/>
+ </g>
+</svg>
diff --git a/result/SVG/flower2.xml b/result/SVG/flower2.xml
new file mode 100644
index 0000000..f6cd2ba
--- /dev/null
+++ b/result/SVG/flower2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="800px" height="800px">
+ <desc>This sample SVG file draws a flower</desc>
+ <g style="transform: matrix(1 0 0 -1 -25.88 798.60); stroke: #000; stroke-width: 1">
+ <path style="fill: #1A5466" d="m 242.33 684.19 C 346.44 757.48 271.45 647.38 213.17 641.37 C 271.45 647.38 383.43 575.21 256.71 613.30 C 383.43 575.21 251.04 565.90 205.23 609.68 C 251.04 565.90 265.13 432.88 210.71 557.95 C 265.13 432.88 175.04 531.37 175.67 596.26 C 175.04 531.37 80.63 437.67 138.96 559.82 C 80.63 437.67 100.67 569.80 146.75 611.20 C 100.67 569.80 -31.14 585.98 95.49 617.49 C -31.14 585.98 83.94 652.25 140.24 643.26 C 83.94 652.25 13.98 766.12 113.04 687.55 C 13.98 766.12 137.45 716.63 161.05 668.30 C 137.45 716.63 182.02 842.45 178.39 717.23 C 182.02 842.45 220.90 714.46 193.51 667.46 C 220.90 714.46 346.44 757.48 242.33 684.19 z"/>
+ <path style="fill: #34AACD" d="M 235.33 691.19 C 339.44 764.48 264.45 654.38 206.17 648.37 C 264.45 654.38 376.43 582.21 249.71 620.30 C 376.43 582.21 244.04 572.90 198.23 616.68 C 244.04 572.90 258.13 439.88 203.71 564.95 C 258.13 439.88 168.04 538.37 168.67 603.26 C 168.04 538.37 73.63 444.67 131.96 566.82 C 73.63 444.67 93.67 576.80 139.75 618.20 C 93.67 576.80 -38.14 592.98 88.49 624.49 C -38.14 592.98 76.94 659.25 133.24 650.26 C 76.94 659.25 6.98 773.12 106.04 694.55 C 6.98 773.12 130.45 723.63 154.05 675.30 C 130.45 723.63 175.02 849.45 171.39 724.23 C 175.02 849.45 213.90 721.46 186.51 674.46 C 213.90 721.46 339.44 764.48 235.33 691.19 z"/>
+ <path style="fill: #F881BF" d="M 199.44 634.43 C 199.44 622.16 189.19 612.21 176.54 612.21 C 163.89 612.21 153.63 622.16 153.63 634.43 C 153.63 646.71 163.89 656.66 176.54 656.66 C 189.19 656.66 199.44 646.71 199.44 634.43 z"/>
+ </g>
+</svg>
diff --git a/result/SVG/gradient.xml b/result/SVG/gradient.xml
new file mode 100644
index 0000000..4570b76
--- /dev/null
+++ b/result/SVG/gradient.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Gradient example
+ </desc>
+ <g>
+ <defs>
+ <lineargradient id="MyGradient">
+<!-- Define linear gradient here -->
+ <gradientstop offset="0%" color="#F60"/>
+ <gradientstop offset="70%" color="#FF6"/>
+ </lineargradient>
+ </defs>
+ <rect style="fill: url(#MyGradient)" width="20" height="15.8"/>
+ </g>
+</svg>
diff --git a/result/SVG/group01.xml b/result/SVG/group01.xml
new file mode 100644
index 0000000..f39ad88
--- /dev/null
+++ b/result/SVG/group01.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Two groups, each of two rectangles
+ </desc>
+ <g style="fillcolor:red">
+ <rect x="100" y="100" width="100" height="100"/>
+ <rect x="300" y="100" width="100" height="100"/>
+ </g>
+ <g style="fillcolor:blue">
+ <rect x="100" y="300" width="100" height="100"/>
+ <rect x="300" y="300" width="100" height="100"/>
+ </g>
+</svg>
diff --git a/result/SVG/group02.xml b/result/SVG/group02.xml
new file mode 100644
index 0000000..85e1f52
--- /dev/null
+++ b/result/SVG/group02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Two named groups
+ </desc>
+ <g id="OBJECT1">
+ <rect x="100" y="100" width="100" height="100"/>
+ </g>
+ <g id="OBJECT2">
+ <circle cx="150" cy="300" r="25"/>
+ </g>
+</svg>
diff --git a/result/SVG/group03.xml b/result/SVG/group03.xml
new file mode 100644
index 0000000..20d75ad
--- /dev/null
+++ b/result/SVG/group03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Groups can nest
+ </desc>
+ <g>
+ <g>
+ <g/>
+ </g>
+ </g>
+</svg>
diff --git a/result/SVG/image-valid.xml b/result/SVG/image-valid.xml
new file mode 100644
index 0000000..d45d229
--- /dev/null
+++ b/result/SVG/image-valid.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This graphic links to an external image
+ </desc>
+ <image x="200" y="200" style="width: 100px; height: 100px" href="myimage.png">
+ <title>My image</title>
+ </image>
+</svg>
diff --git a/result/SVG/image-wf.xml b/result/SVG/image-wf.xml
new file mode 100644
index 0000000..e11a12f
--- /dev/null
+++ b/result/SVG/image-wf.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <desc>This links to an external image
+ </desc>
+ <image xml:link="simple" x="200" y="200" style="width: 100px; height: 100px" show="embed" actuate="auto" href="myimage.png">
+ <title>My image</title>
+ </image>
+</svg>
diff --git a/result/SVG/lin-gradient.xml b/result/SVG/lin-gradient.xml
new file mode 100644
index 0000000..645bdce
--- /dev/null
+++ b/result/SVG/lin-gradient.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Linear gradient example
+ </desc>
+ <g>
+ <defs>
+ <lineargradient id="MyGradient">
+ <gradientstop offset="0%" color="#F60"/>
+ <gradientstop offset="70%" color="#FF6"/>
+ </lineargradient>
+ </defs>
+ <rect style="fill: url(#MyGradient)" width="20" height="15.8"/>
+ </g>
+</svg>
diff --git a/result/SVG/marker.xml b/result/SVG/marker.xml
new file mode 100644
index 0000000..1b41714
--- /dev/null
+++ b/result/SVG/marker.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="Triangle" min-x="0" min-y="0" max-x="100" max-y="100" ref-x="0" ref-y="50">
+ <path d="M 0 0 L 0 100 L 100 50 z"/>
+ </symbol>
+ </defs>
+ <desc>An double-headed arrow example using markers
+ </desc>
+ <path d="M0 0">
+<!-- Place an arrowhead rotated 180 degrees at the
+ beginning of the path -->
+ <marker href="#Triangle" width="200" height="200" style="text-transform: rotate(180)"/>
+ <data d="M 2000 2000"/>
+<!-- Turn off markers in the middle of the path -->
+ <marker href=""/>
+ <data d="L 4000 2000 L 4000 4000"/>
+<!-- Place an arrowhead at the end of the path-->
+ <marker href="#Triangle" width="200" height="200"/>
+ <data d="L 6000 4000"/>
+ </path>
+</svg>
diff --git a/result/SVG/mask.xml b/result/SVG/mask.xml
new file mode 100644
index 0000000..1204e06
--- /dev/null
+++ b/result/SVG/mask.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Example of using a mask
+ </desc>
+ <g>
+ <defs>
+ <image id="MyMask" href="transp.png"/>
+ </defs>
+ <rect style="mask: url(#MyMask)" width="12.5" height="30"/>
+ </g>
+</svg>
diff --git a/result/SVG/mathswitch.xml b/result/SVG/mathswitch.xml
new file mode 100644
index 0000000..b291384
--- /dev/null
+++ b/result/SVG/mathswitch.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <desc>This example uses the switch element to provide a
+ fallback graphical representation of an equation, if
+ MathML is not supported.
+ </desc>
+<!-- The <switch> element will process the first child element
+ whose testing attributes evaluate to true.-->
+ <switch>
+<!-- Process the MathML if the system-required attribute
+ evaluates to true (i.e., the user agent supports MathML
+ embedded within SVG). -->
+ <foreignobject system-required="http://www.w3.org/TR/REC-MathML-19980407" width="100" height="50">
+<!-- MathML content goes here -->
+ </foreignobject>
+<!-- Else, process the following alternate SVG.
+ Note that there are no testing attributes on the <g> element.
+ If no testing attributes are provided, it is as if there
+ were testing attributes and they evaluated to true.-->
+ <g>
+<!-- Draw a red rectangle with a text string on top. -->
+ <rect style="fill: red"/>
+ <text>Formula goes here</text>
+ </g>
+ </switch>
+</svg>
diff --git a/result/SVG/parentns.xml b/result/SVG/parentns.xml
new file mode 100644
index 0000000..5b2ed46
--- /dev/null
+++ b/result/SVG/parentns.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<ABC xmlns="http://parent.name.space" xmlns:svg="http://www.w3.org/Graphics/SVG/1.0">
+<!-- document in the parent namespace -->
+ <svg:svg width="40%" height="40%">
+ <svg:rectangle width="43.6" height="31.5"/>
+<!-- svg graphic continues -->
+ </svg:svg>
+<!-- document in parent namespace continues -->
+</ABC>
diff --git a/result/SVG/path01.xml b/result/SVG/path01.xml
new file mode 100644
index 0000000..646940b
--- /dev/null
+++ b/result/SVG/path01.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <path d="M 100 100 L 140 100 L 120 140 z"/>
+</svg>
diff --git a/result/SVG/path02.xml b/result/SVG/path02.xml
new file mode 100644
index 0000000..b74f975
--- /dev/null
+++ b/result/SVG/path02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <path d="M 100 100">
+ <data d="L 140 100"/>
+ <data d="L 120 140"/>
+ <data d="z"/>
+ </path>
+</svg>
diff --git a/result/SVG/patternfill.xml b/result/SVG/patternfill.xml
new file mode 100644
index 0000000..c520ae8
--- /dev/null
+++ b/result/SVG/patternfill.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="fourstar">
+<!-- Define the pattern using standard graphics elements
+ such as paths, images, text and shapes -->
+ </symbol>
+ </defs>
+ <ellipse style="fill: url(#fourstar)" major="40" minor="27"/>
+</svg>
diff --git a/result/SVG/polyline.xml b/result/SVG/polyline.xml
new file mode 100644
index 0000000..9fa4071
--- /dev/null
+++ b/result/SVG/polyline.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>A sample polyline, and equivalent path
+ </desc>
+ <polyline verts="20,20 50,100 200,80 70,300"/>
+ <path d="M20,20 L50,100 L200,80 L70,300"/>
+</svg>
diff --git a/result/SVG/private.xml b/result/SVG/private.xml
new file mode 100644
index 0000000..edfe366
--- /dev/null
+++ b/result/SVG/private.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <defs>
+ <private xmlns:myapp="http://mycompany/mapapp">
+ <myapp:piechart title="Sales by Region">
+ <myapp:piece label="Northern Region" value="1.23"/>
+ <myapp:piece label="Eastern Region" value="2.53"/>
+ <myapp:piece label="Southern Region" value="3.89"/>
+ <myapp:piece label="Western Region" value="2.04"/>
+<!-- Other private data goes here -->
+ </myapp:piechart>
+ </private>
+ </defs>
+ <desc>This chart includes private data in another namespace
+ </desc>
+<!-- In here would be the actual graphics elements which
+ draw the pie chart -->
+</svg>
diff --git a/result/SVG/rad-gradient.xml b/result/SVG/rad-gradient.xml
new file mode 100644
index 0000000..d5aadf0
--- /dev/null
+++ b/result/SVG/rad-gradient.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Radial gradient example with three gradient stops
+ </desc>
+ <g>
+ <defs>
+ <radialgradient id="MyGradient">
+ <gradientstop offset="0%" color="white"/>
+ <gradientstop offset="50%" color="red"/>
+ <gradientstop offset="100%" color="black"/>
+ </radialgradient>
+ </defs>
+ <circle style="fill: url(#MyGradient)" r="42"/>
+ </g>
+</svg>
diff --git a/result/SVG/rectangle.xml b/result/SVG/rectangle.xml
new file mode 100644
index 0000000..919cd23
--- /dev/null
+++ b/result/SVG/rectangle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This is a rectangle
+ </desc>
+ <g>
+ <rect x="20" y="30" width="100" height="80"/>
+ </g>
+</svg>
diff --git a/result/SVG/richdesc.xml b/result/SVG/richdesc.xml
new file mode 100644
index 0000000..eba1f05
--- /dev/null
+++ b/result/SVG/richdesc.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <desc xmlns:mydoc="http://foo.org/mydoc">
+ <mydoc:title>This is an example SVG file</mydoc:title>
+ <mydoc:para>The global description uses markup from the
+ <mydoc:emph>mydoc</mydoc:emph> namespace.</mydoc:para>
+ </desc>
+ <g>
+<!-- the picture goes here -->
+ </g>
+</svg>
diff --git a/result/SVG/script.xml b/result/SVG/script.xml
new file mode 100644
index 0000000..c98af0f
--- /dev/null
+++ b/result/SVG/script.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <script>
+<![CDATA[
+ /* Beep on mouseclick */
+ MouseClickHandler() { beep(); }
+ ]]>
+ </script>
+ </defs>
+ <circle onclick="MouseClickHandler()" r="85"/>
+</svg>
diff --git a/result/SVG/structure01.xml b/result/SVG/structure01.xml
new file mode 100644
index 0000000..46af5e8
--- /dev/null
+++ b/result/SVG/structure01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<parent xmlns="http://someplace.org" xmlns:svg="http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<!-- parent stuff here -->
+ <svg:svg width="5cm" height="8cm">
+ <svg:ellipse major="200" minor="130"/>
+ </svg:svg>
+<!-- ... -->
+</parent>
diff --git a/result/SVG/style.xml b/result/SVG/style.xml
new file mode 100644
index 0000000..7176912
--- /dev/null
+++ b/result/SVG/style.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <style>
+<![CDATA[
+ .TitleText { font-size: 16; font-family: Helvetica } ]]>
+ </style>
+ </defs>
+ <text class="TitleText">Here is my title</text>
+</svg>
diff --git a/result/SVG/switch.xml b/result/SVG/switch.xml
new file mode 100644
index 0000000..87eb364
--- /dev/null
+++ b/result/SVG/switch.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="yes"?>
+<smil>
+ <body>
+<!-- The SMIL <switch> element will process the
+ first child element which tests true and skip
+ past all others. -->
+ <switch>
+<!-- The system-required attribute tests to see if
+ the user agent supports SVG. If true, then
+ render the file drawing.svg. -->
+ <ref system-required="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" type="image/svg" src="drawing.svg"/>
+<!-- Else, render the alternate image. -->
+ <img src="alternate_image.jpg"/>
+ </switch>
+ </body>
+</smil>
diff --git a/result/SVG/symbol-use.xml b/result/SVG/symbol-use.xml
new file mode 100644
index 0000000..a9b395c
--- /dev/null
+++ b/result/SVG/symbol-use.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="TemplateObject01">
+<!-- symbol definition here -->
+ </symbol>
+ </defs>
+ <desc>Examples of inline and referenced content
+ </desc>
+<!-- <g> with inline content -->
+ <g>
+<!-- Inline content goes here -->
+ </g>
+<!-- referenced content -->
+ <use href="#TemplateObject01"/>
+<!-- <g> with both referenced and inline content -->
+ <g>
+ <use href="#TemplateObject01"/>
+<!-- Inline content goes here -->
+ </g>
+</svg>
diff --git a/result/SVG/template.xml b/result/SVG/template.xml
new file mode 100644
index 0000000..607cd91
--- /dev/null
+++ b/result/SVG/template.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <desc>This well formed svg document contains a hyperlink
+ </desc>
+ <a xml:link="simple" show="replace" actuate="user" href="http://www.w3.org">
+ <p d="M 0 0 L 200 0 L 100 200 Z"/>
+ </a>
+</svg>
diff --git a/result/SVG/text01.xml b/result/SVG/text01.xml
new file mode 100644
index 0000000..0e2b44b
--- /dev/null
+++ b/result/SVG/text01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <text id="TextToUse">XYZ</text>
+ </defs>
+ <text>ABC</text>
+ <text>
+ <src href="#TextToUse"/>
+ </text>
+</svg>
diff --git a/result/SVG/text02.xml b/result/SVG/text02.xml
new file mode 100644
index 0000000..9656ea5
--- /dev/null
+++ b/result/SVG/text02.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <defs>
+ <textflow id="TF1">
+ <t href="#T1"/>
+ <t href="#T3"/>
+ </textflow>
+ <textflow id="TF2">
+ <t href="#T2"/>
+ <t href="#T4"/>
+ </textflow>
+ </defs>
+ <text x="100" y="100" id="T1">
+ <tf href="#TF1">123</tf>
+ </text>
+ <text x="100" y="200" id="T2">
+ <tf href="#TF2">ABC</tf>
+ </text>
+ <text x="150" y="100" id="T3">
+ <tf href="#TF1">456</tf>
+ </text>
+ <text x="150" y="200" id="T4">
+ <tf href="#TF2">DEF</tf>
+ </text>
+</svg>
diff --git a/result/SVG/text03.xml b/result/SVG/text03.xml
new file mode 100644
index 0000000..be92031
--- /dev/null
+++ b/result/SVG/text03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <textflow id="TF1">
+ <text x="100" y="100">123</text>
+ <text>456</text>
+ </textflow>
+</svg>
diff --git a/result/SVG/toap01.xml b/result/SVG/toap01.xml
new file mode 100644
index 0000000..fac024c
--- /dev/null
+++ b/result/SVG/toap01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Simple text on a path
+ </desc>
+ <path id="MyPath" style="visibility: hidden" d="M 100 100 C 125 125 175 125 200 100"/>
+ <text><textpath href="#MyPath"/>Text on path</text>
+</svg>
diff --git a/result/SVG/toap02.xml b/result/SVG/toap02.xml
new file mode 100644
index 0000000..c62aa04
--- /dev/null
+++ b/result/SVG/toap02.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="Triangle1" min-x="0" min-y="0" max-x="300" max-y="200">
+ <path d="M 50 0 L 50 200 L 250 0 z"/>
+ </symbol>
+ <symbol id="Triangle2" min-x="0" min-y="0" max-x="300" max-y="200">
+ <path d="M 50 0 L 250 200 L 250 0 z"/>
+ </symbol>
+ </defs>
+ <desc>General graphics on a path
+ </desc>
+ <text>
+ <textpath href="#MyPath"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ </text>
+</svg>
diff --git a/result/SVG/transform.xml b/result/SVG/transform.xml
new file mode 100644
index 0000000..db00dbd
--- /dev/null
+++ b/result/SVG/transform.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Demonstration of coordinate transforms
+ </desc>
+<!-- The following two text elements will both draw with a
+ font height of 12 pixels -->
+ <text style="font-size: 12">This prints 12 pixels high.</text>
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+<!-- Now scale the coordinate system by 2. -->
+ <g style="transform: scale(2)">
+<!-- The following text will actually draw 24 pixels high
+ because each unit in the new coordinate system equals
+ 2 units in the previous coordinate system. -->
+ <text style="font-size: 12">This prints 24 pixels high.</text>
+<!-- The following text will actually still draw 12 pixels high
+ because the CSS unit specifier has been provided. -->
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+ </g>
+</svg>
diff --git a/result/SVG/trivial.xml b/result/SVG/trivial.xml
new file mode 100644
index 0000000..db12583
--- /dev/null
+++ b/result/SVG/trivial.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+<!-- Insert drawing elements here -->
+</svg>
diff --git a/result/SVG/twin-gradients.xml b/result/SVG/twin-gradients.xml
new file mode 100644
index 0000000..5ce25cc
--- /dev/null
+++ b/result/SVG/twin-gradients.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Gradients apply to leaf nodes
+ </desc>
+ <g>
+ <defs>
+ <lineargradient id="MyGradient">
+ <gradientstop offset="0%" color="#F60"/>
+ <gradientstop offset="70%" color="#FF6"/>
+ </lineargradient>
+ </defs>
+ <g style="fill: url(#MyGradient)">
+ <rect width="20" height="15.8"/>
+ <rect width="35" height="8"/>
+ </g>
+ </g>
+</svg>
diff --git a/result/SVG/v-template.xml b/result/SVG/v-template.xml
new file mode 100644
index 0000000..20d19fc
--- /dev/null
+++ b/result/SVG/v-template.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc/>
+ <g/>
+</svg>
diff --git a/result/SVG/viewport-nest.xml b/result/SVG/viewport-nest.xml
new file mode 100644
index 0000000..b6a19a7
--- /dev/null
+++ b/result/SVG/viewport-nest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This SVG drawing embeds another one,
+ thus establishing a new viewport
+ </desc>
+<!-- The following statement establishing a new viewport
+ and renders SVG drawing B into that viewport -->
+ <svg style="left: 25%; top: 25%" width="50%" height="50%">
+<!-- drawing B goes here -->
+ </svg>
+</svg>
diff --git a/result/SVG/viewport-transform.xml b/result/SVG/viewport-transform.xml
new file mode 100644
index 0000000..3a95fbd
--- /dev/null
+++ b/result/SVG/viewport-transform.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="300px" height="3oopx">
+ <desc>Transformation with establishment of a new viewport
+ </desc>
+<!-- The following two text elements will both draw with a
+ font height of 12 pixels -->
+ <text style="font-size: 12">This prints 12 pixels high.</text>
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+<!-- Now scale the coordinate system by 2. -->
+ <g style="transform: scale(2)">
+<!-- The following text will actually draw 24 pixels high
+ because each unit in the new coordinate system equals
+ 2 units in the previous coordinate system. -->
+ <text style="font-size: 12">This prints 24 pixels high.</text>
+<!-- The following text will actually still draw 12 pixels high
+ because the CSS unit specifier has been provided. -->
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+ </g>
+<!-- This time, scale the coordinate system by 3. -->
+ <g style="transform: scale(3)">
+<!-- Establish a new viewport and thus change the meaning of
+ some CSS unit specifiers. -->
+ <svg style="left:0; top:0; right:100; bottom:100" width="100%" height="100%">
+<!-- The following two text elements will both draw with a
+ font height of 36 screen pixels. The first text element
+ defines its height in user coordinates, which have been
+ scaled by 3. The second text element defines its height
+ in CSS px units, which have been redefined to be three times
+ as big as screen pixels due the <svg> element establishing
+ a new viewport. -->
+ <text style="font-size: 12">This prints 36 pixels high.</text>
+ <text style="font-size: 12px">This prints 36 pixels high.</text>
+ </svg>
+ </g>
+</svg>
diff --git a/result/SVG/viewport.xml b/result/SVG/viewport.xml
new file mode 100644
index 0000000..22d1ad3
--- /dev/null
+++ b/result/SVG/viewport.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<parent xmlns="http://some.url">
+<!-- SVG graphic -->
+ <svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="100px" height="200px">
+ <path d="M100,100 Q200,400,300,100"/>
+<!-- rest of SVG graphic would go here -->
+ </svg>
+</parent>
diff --git a/result/SVG/wf-template.xml b/result/SVG/wf-template.xml
new file mode 100644
index 0000000..d30d8de
--- /dev/null
+++ b/result/SVG/wf-template.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd" width="4in" height="3in">
+ <desc/>
+</svg>
diff --git a/result/URI/smith.uri b/result/URI/smith.uri
new file mode 100644
index 0000000..d336d54
--- /dev/null
+++ b/result/URI/smith.uri
@@ -0,0 +1,15 @@
+/bar
+bar
+bar
+bar
+baz
+
+foo/
+foo
+foo
+../foo./
+../foo/
+/foo
+../foo
+../../foo
+../../../foo
diff --git a/result/URI/uri.data b/result/URI/uri.data
new file mode 100644
index 0000000..f22b4db
--- /dev/null
+++ b/result/URI/uri.data
@@ -0,0 +1,18 @@
+http://foo.com/path/to/index.html?orig
+http://foo.com/path/to/
+http://foo.com/path/to/bar
+http://foo.com/path/to/bar#baz
+http://foo.com/path/to/bar?baz
+http://foo.com/path/to/bar?baz#baz2
+http://foo.com/path/to/index.html?orig#baz
+http://foo.com/path/to/index.html?baz
+http://foo.com/path/to/index.html?baz#baz2
+http://foo.com/path/up.a.notch.html#wow
+http://foo.com/path/up.a.notch.html?wow
+http://foo.com/path/up.a.notch.html?wow#wow2
+http://foo.com/root.cgi#OK
+http://foo.com/root.cgi?OK
+http://foo.com/root.cgi?OK#OK2
+http://elsewhere.com/#deep
+http://elsewhere.com/?deep
+http://elsewhere.com/?deep#deep2
diff --git a/result/VC/AttributeDefaultLegal b/result/VC/AttributeDefaultLegal
new file mode 100644
index 0000000..6b61686
--- /dev/null
+++ b/result/VC/AttributeDefaultLegal
@@ -0,0 +1,12 @@
+./test/VC/AttributeDefaultLegal:4: validity error : Attribute doc of At: invalid default value
+<!ATTLIST doc At NMTOKEN "$$$">
+ ^
+./test/VC/AttributeDefaultLegal:6: validity error : Attribute doc of bad: invalid default value
+<!ATTLIST doc bad IDREF "1abc_2">
+ ^
+./test/VC/AttributeDefaultLegal:8: validity error : Attribute doc of bad2: invalid default value
+<!ATTLIST doc bad2 IDREFS "abc:1 1abc_2">
+ ^
+./test/VC/AttributeDefaultLegal:11: element doc: validity error : No declaration for attribute val of element doc
+<doc val="v1"/>
+ ^
diff --git a/result/VC/AttributeDefaultLegal.rdr b/result/VC/AttributeDefaultLegal.rdr
new file mode 100644
index 0000000..6b61686
--- /dev/null
+++ b/result/VC/AttributeDefaultLegal.rdr
@@ -0,0 +1,12 @@
+./test/VC/AttributeDefaultLegal:4: validity error : Attribute doc of At: invalid default value
+<!ATTLIST doc At NMTOKEN "$$$">
+ ^
+./test/VC/AttributeDefaultLegal:6: validity error : Attribute doc of bad: invalid default value
+<!ATTLIST doc bad IDREF "1abc_2">
+ ^
+./test/VC/AttributeDefaultLegal:8: validity error : Attribute doc of bad2: invalid default value
+<!ATTLIST doc bad2 IDREFS "abc:1 1abc_2">
+ ^
+./test/VC/AttributeDefaultLegal:11: element doc: validity error : No declaration for attribute val of element doc
+<doc val="v1"/>
+ ^
diff --git a/result/VC/AttributeNmtokens b/result/VC/AttributeNmtokens
new file mode 100644
index 0000000..4c19285
--- /dev/null
+++ b/result/VC/AttributeNmtokens
@@ -0,0 +1,3 @@
+./test/VC/AttributeNmtokens:6: element test: validity error : Syntax of value for attribute attr1 of test is not valid
+<test attr1=" a&#x9;b "/>
+ ^
diff --git a/result/VC/AttributeNmtokens.rdr b/result/VC/AttributeNmtokens.rdr
new file mode 100644
index 0000000..4c19285
--- /dev/null
+++ b/result/VC/AttributeNmtokens.rdr
@@ -0,0 +1,3 @@
+./test/VC/AttributeNmtokens:6: element test: validity error : Syntax of value for attribute attr1 of test is not valid
+<test attr1=" a&#x9;b "/>
+ ^
diff --git a/result/VC/DuplicateType b/result/VC/DuplicateType
new file mode 100644
index 0000000..34e2c20
--- /dev/null
+++ b/result/VC/DuplicateType
@@ -0,0 +1,3 @@
+./test/VC/DuplicateType:3: validity error : Definition of a has duplicate references of c
+<!ELEMENT a (#PCDATA | b | c | d | c)*>
+ ^
diff --git a/result/VC/DuplicateType.rdr b/result/VC/DuplicateType.rdr
new file mode 100644
index 0000000..34e2c20
--- /dev/null
+++ b/result/VC/DuplicateType.rdr
@@ -0,0 +1,3 @@
+./test/VC/DuplicateType:3: validity error : Definition of a has duplicate references of c
+<!ELEMENT a (#PCDATA | b | c | d | c)*>
+ ^
diff --git a/result/VC/ElementValid b/result/VC/ElementValid
new file mode 100644
index 0000000..d6b50a7
--- /dev/null
+++ b/result/VC/ElementValid
@@ -0,0 +1,3 @@
+./test/VC/ElementValid:3: validity error : Validation failed: no DTD found !
+<doc/>
+ ^
diff --git a/result/VC/ElementValid.rdr b/result/VC/ElementValid.rdr
new file mode 100644
index 0000000..d6b50a7
--- /dev/null
+++ b/result/VC/ElementValid.rdr
@@ -0,0 +1,3 @@
+./test/VC/ElementValid:3: validity error : Validation failed: no DTD found !
+<doc/>
+ ^
diff --git a/result/VC/ElementValid2 b/result/VC/ElementValid2
new file mode 100644
index 0000000..db47c89
--- /dev/null
+++ b/result/VC/ElementValid2
@@ -0,0 +1,3 @@
+./test/VC/ElementValid2:4: element p: validity error : No declaration for element p
+<doc><p/></doc>
+ ^
diff --git a/result/VC/ElementValid2.rdr b/result/VC/ElementValid2.rdr
new file mode 100644
index 0000000..cae331b
--- /dev/null
+++ b/result/VC/ElementValid2.rdr
@@ -0,0 +1,6 @@
+./test/VC/ElementValid2:4: element p: validity error : No declaration for element p
+<doc><p/></doc>
+ ^
+./test/VC/ElementValid2:5: element p: validity error : No declaration for element p
+
+^
diff --git a/result/VC/ElementValid3 b/result/VC/ElementValid3
new file mode 100644
index 0000000..2fc236d
--- /dev/null
+++ b/result/VC/ElementValid3
@@ -0,0 +1,3 @@
+./test/VC/ElementValid3:4: element doc: validity error : Element doc was declared EMPTY this one has content
+<doc>Oops, this element was declared EMPTY</doc>
+ ^
diff --git a/result/VC/ElementValid3.rdr b/result/VC/ElementValid3.rdr
new file mode 100644
index 0000000..5f4e03e
--- /dev/null
+++ b/result/VC/ElementValid3.rdr
@@ -0,0 +1,6 @@
+./test/VC/ElementValid3:4: element doc: validity error : Element doc was declared EMPTY this one has content
+<doc>Oops, this element was declared EMPTY</doc>
+ ^
+./test/VC/ElementValid3:5: element doc: validity error : Element doc was declared EMPTY this one has content
+
+^
diff --git a/result/VC/ElementValid4 b/result/VC/ElementValid4
new file mode 100644
index 0000000..4791db5
--- /dev/null
+++ b/result/VC/ElementValid4
@@ -0,0 +1,3 @@
+./test/VC/ElementValid4:7: element doc: validity error : Element c is not declared in doc list of possible children
+<doc> This <b>seems</b> Ok <a/> but this <c>was not declared</c></doc>
+ ^
diff --git a/result/VC/ElementValid4.rdr b/result/VC/ElementValid4.rdr
new file mode 100644
index 0000000..289a527
--- /dev/null
+++ b/result/VC/ElementValid4.rdr
@@ -0,0 +1,6 @@
+./test/VC/ElementValid4:7: element doc: validity error : Element c is not declared in doc list of possible children
+<doc> This <b>seems</b> Ok <a/> but this <c>was not declared</c></doc>
+ ^
+./test/VC/ElementValid4:8: element doc: validity error : Element c is not declared in doc list of possible children
+
+^
diff --git a/result/VC/ElementValid5 b/result/VC/ElementValid5
new file mode 100644
index 0000000..bd064f6
--- /dev/null
+++ b/result/VC/ElementValid5
@@ -0,0 +1,3 @@
+./test/VC/ElementValid5:7: element doc: validity error : Element doc content does not follow the DTD, expecting (a , b* , c+), got (a b c b)
+<doc><a/><b> but this</b><c>was not declared</c><b>seems</b></doc>
+ ^
diff --git a/result/VC/ElementValid5.rdr b/result/VC/ElementValid5.rdr
new file mode 100644
index 0000000..899d759
--- /dev/null
+++ b/result/VC/ElementValid5.rdr
@@ -0,0 +1,6 @@
+./test/VC/ElementValid5:7: element doc: validity error : Element doc content does not follow the DTD, expecting (a , b* , c+), got (a b c b)
+<doc><a/><b> but this</b><c>was not declared</c><b>seems</b></doc>
+ ^
+./test/VC/ElementValid5:8: element doc: validity error : Element doc content does not follow the DTD, Misplaced b
+
+^
diff --git a/result/VC/ElementValid6 b/result/VC/ElementValid6
new file mode 100644
index 0000000..1cbf8fd
--- /dev/null
+++ b/result/VC/ElementValid6
@@ -0,0 +1,3 @@
+./test/VC/ElementValid6:7: element doc: validity error : Element doc content does not follow the DTD, expecting (a , b? , c+)?, got (a b)
+<doc><a/><b>lacks c</b></doc>
+ ^
diff --git a/result/VC/ElementValid6.rdr b/result/VC/ElementValid6.rdr
new file mode 100644
index 0000000..aeafd6b
--- /dev/null
+++ b/result/VC/ElementValid6.rdr
@@ -0,0 +1,6 @@
+./test/VC/ElementValid6:7: element doc: validity error : Element doc content does not follow the DTD, expecting (a , b? , c+)?, got (a b)
+<doc><a/><b>lacks c</b></doc>
+ ^
+./test/VC/ElementValid6:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more child
+
+^
diff --git a/result/VC/ElementValid7 b/result/VC/ElementValid7
new file mode 100644
index 0000000..4ce9dbf
--- /dev/null
+++ b/result/VC/ElementValid7
@@ -0,0 +1,3 @@
+./test/VC/ElementValid7:7: element doc: validity error : Element doc content does not follow the DTD, expecting ((a | b)* , c+ , a , b? , c , a?), got (a b a c c a)
+<doc><a/><b/><a/><c/><c/><a/></doc>
+ ^
diff --git a/result/VC/ElementValid7.rdr b/result/VC/ElementValid7.rdr
new file mode 100644
index 0000000..f001fd2
--- /dev/null
+++ b/result/VC/ElementValid7.rdr
@@ -0,0 +1,6 @@
+./test/VC/ElementValid7:7: element doc: validity error : Element doc content does not follow the DTD, expecting ((a | b)* , c+ , a , b? , c , a?), got (a b a c c a)
+<doc><a/><b/><a/><c/><c/><a/></doc>
+ ^
+./test/VC/ElementValid7:8: element doc: validity error : Element doc content does not follow the DTD, Expecting more child
+
+^
diff --git a/result/VC/ElementValid8 b/result/VC/ElementValid8
new file mode 100644
index 0000000..f1b0dad
--- /dev/null
+++ b/result/VC/ElementValid8
@@ -0,0 +1,3 @@
+./test/VC/ElementValid8:7: validity error : Content model of doc is not determinist: ((a , b) | (a , c))
+<doc><a/><c> doc is non-deterministic </c></doc>
+ ^
diff --git a/result/VC/ElementValid8.rdr b/result/VC/ElementValid8.rdr
new file mode 100644
index 0000000..f1b0dad
--- /dev/null
+++ b/result/VC/ElementValid8.rdr
@@ -0,0 +1,3 @@
+./test/VC/ElementValid8:7: validity error : Content model of doc is not determinist: ((a , b) | (a , c))
+<doc><a/><c> doc is non-deterministic </c></doc>
+ ^
diff --git a/result/VC/Enumeration b/result/VC/Enumeration
new file mode 100644
index 0000000..30896fc
--- /dev/null
+++ b/result/VC/Enumeration
@@ -0,0 +1,3 @@
+./test/VC/Enumeration:5: element doc: validity error : Value "v4" for attribute val of doc is not among the enumerated set
+<doc val="v4"></doc>
+ ^
diff --git a/result/VC/Enumeration.rdr b/result/VC/Enumeration.rdr
new file mode 100644
index 0000000..30896fc
--- /dev/null
+++ b/result/VC/Enumeration.rdr
@@ -0,0 +1,3 @@
+./test/VC/Enumeration:5: element doc: validity error : Value "v4" for attribute val of doc is not among the enumerated set
+<doc val="v4"></doc>
+ ^
diff --git a/result/VC/NS1 b/result/VC/NS1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/VC/NS1
diff --git a/result/VC/NS1.rdr b/result/VC/NS1.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/VC/NS1.rdr
diff --git a/result/VC/NS2 b/result/VC/NS2
new file mode 100644
index 0000000..abd1f88
--- /dev/null
+++ b/result/VC/NS2
@@ -0,0 +1,3 @@
+./test/VC/NS2:9: element doc: validity error : No declaration for attribute attr of element doc
+<ns:doc ns:attr="val" xmlns:ns="http://www.example.org/test/">
+ ^
diff --git a/result/VC/NS2.rdr b/result/VC/NS2.rdr
new file mode 100644
index 0000000..abd1f88
--- /dev/null
+++ b/result/VC/NS2.rdr
@@ -0,0 +1,3 @@
+./test/VC/NS2:9: element doc: validity error : No declaration for attribute attr of element doc
+<ns:doc ns:attr="val" xmlns:ns="http://www.example.org/test/">
+ ^
diff --git a/result/VC/NS3 b/result/VC/NS3
new file mode 100644
index 0000000..72c0117
--- /dev/null
+++ b/result/VC/NS3
@@ -0,0 +1,9 @@
+./test/VC/NS3:9: element foo: validity error : Value for attribute xmlns of foo is different from default "http://example.com/fooo"
+xmlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"
+ ^
+./test/VC/NS3:9: element foo: validity error : Value for attribute xmlns of foo must be "http://example.com/fooo"
+xmlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"
+ ^
+./test/VC/NS3:9: element foo: validity error : Element foo namespace name for default namespace does not match the DTD
+mlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"/
+ ^
diff --git a/result/VC/NS3.rdr b/result/VC/NS3.rdr
new file mode 100644
index 0000000..72c0117
--- /dev/null
+++ b/result/VC/NS3.rdr
@@ -0,0 +1,9 @@
+./test/VC/NS3:9: element foo: validity error : Value for attribute xmlns of foo is different from default "http://example.com/fooo"
+xmlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"
+ ^
+./test/VC/NS3:9: element foo: validity error : Value for attribute xmlns of foo must be "http://example.com/fooo"
+xmlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"
+ ^
+./test/VC/NS3:9: element foo: validity error : Element foo namespace name for default namespace does not match the DTD
+mlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"/
+ ^
diff --git a/result/VC/OneID b/result/VC/OneID
new file mode 100644
index 0000000..a2c894f
--- /dev/null
+++ b/result/VC/OneID
@@ -0,0 +1,6 @@
+./test/VC/OneID:4: validity error : Element doc has too may ID attributes defined : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
+./test/VC/OneID:4: validity error : Element doc has 2 ID attribute defined in the internal subset : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
diff --git a/result/VC/OneID.rdr b/result/VC/OneID.rdr
new file mode 100644
index 0000000..a2c894f
--- /dev/null
+++ b/result/VC/OneID.rdr
@@ -0,0 +1,6 @@
+./test/VC/OneID:4: validity error : Element doc has too may ID attributes defined : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
+./test/VC/OneID:4: validity error : Element doc has 2 ID attribute defined in the internal subset : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
diff --git a/result/VC/OneID2 b/result/VC/OneID2
new file mode 100644
index 0000000..2af04f1
--- /dev/null
+++ b/result/VC/OneID2
@@ -0,0 +1,6 @@
+./test/VC/OneID2:3: validity error : Element doc has too may ID attributes defined : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
+./test/VC/OneID2:3: validity error : Element doc has 2 ID attribute defined in the internal subset : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
diff --git a/result/VC/OneID2.rdr b/result/VC/OneID2.rdr
new file mode 100644
index 0000000..2af04f1
--- /dev/null
+++ b/result/VC/OneID2.rdr
@@ -0,0 +1,6 @@
+./test/VC/OneID2:3: validity error : Element doc has too may ID attributes defined : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
+./test/VC/OneID2:3: validity error : Element doc has 2 ID attribute defined in the internal subset : id
+<!ATTLIST doc id ID #IMPLIED>
+ ^
diff --git a/result/VC/OneID3 b/result/VC/OneID3
new file mode 100644
index 0000000..9accece
--- /dev/null
+++ b/result/VC/OneID3
@@ -0,0 +1,6 @@
+test/VC/dtds/doc.dtd:2: validity error : Element doc has too may ID attributes defined : val
+<!ATTLIST doc val ID #IMPLIED>
+ ^
+test/VC/dtds/doc.dtd:2: validity error : Element doc has 2 ID attribute defined in the external subset : val
+<!ATTLIST doc val ID #IMPLIED>
+ ^
diff --git a/result/VC/OneID3.rdr b/result/VC/OneID3.rdr
new file mode 100644
index 0000000..9accece
--- /dev/null
+++ b/result/VC/OneID3.rdr
@@ -0,0 +1,6 @@
+test/VC/dtds/doc.dtd:2: validity error : Element doc has too may ID attributes defined : val
+<!ATTLIST doc val ID #IMPLIED>
+ ^
+test/VC/dtds/doc.dtd:2: validity error : Element doc has 2 ID attribute defined in the external subset : val
+<!ATTLIST doc val ID #IMPLIED>
+ ^
diff --git a/result/VC/PENesting b/result/VC/PENesting
new file mode 100644
index 0000000..966689a
--- /dev/null
+++ b/result/VC/PENesting
@@ -0,0 +1,6 @@
+./test/VC/PENesting:1: parser error : StartTag: invalid element name
+<!ENTITY % pe1 "EMPTY> <!ELEMENT e2 EMPTY>">
+ ^
+./test/VC/PENesting:1: parser error : Extra content at the end of the document
+<!ENTITY % pe1 "EMPTY> <!ELEMENT e2 EMPTY>">
+ ^
diff --git a/result/VC/PENesting.rdr b/result/VC/PENesting.rdr
new file mode 100644
index 0000000..7f82e13
--- /dev/null
+++ b/result/VC/PENesting.rdr
@@ -0,0 +1,4 @@
+./test/VC/PENesting:1: parser error : StartTag: invalid element name
+<!ENTITY % pe1 "EMPTY> <!ELEMENT e2 EMPTY>">
+ ^
+./test/VC/PENesting : failed to parse
diff --git a/result/VC/PENesting2 b/result/VC/PENesting2
new file mode 100644
index 0000000..c53ead6
--- /dev/null
+++ b/result/VC/PENesting2
@@ -0,0 +1,6 @@
+./test/VC/PENesting2:1: parser error : StartTag: invalid element name
+<!ENTITY % p1 "(A|B">
+ ^
+./test/VC/PENesting2:1: parser error : Extra content at the end of the document
+<!ENTITY % p1 "(A|B">
+ ^
diff --git a/result/VC/PENesting2.rdr b/result/VC/PENesting2.rdr
new file mode 100644
index 0000000..71cb053
--- /dev/null
+++ b/result/VC/PENesting2.rdr
@@ -0,0 +1,4 @@
+./test/VC/PENesting2:1: parser error : StartTag: invalid element name
+<!ENTITY % p1 "(A|B">
+ ^
+./test/VC/PENesting2 : failed to parse
diff --git a/result/VC/UniqueElementTypeDeclaration b/result/VC/UniqueElementTypeDeclaration
new file mode 100644
index 0000000..8537041
--- /dev/null
+++ b/result/VC/UniqueElementTypeDeclaration
@@ -0,0 +1,3 @@
+test/VC/dtds/a.dtd:1: validity error : Redefinition of element a
+<!ELEMENT a (#PCDATA | b | c)*>
+ ^
diff --git a/result/VC/UniqueElementTypeDeclaration.rdr b/result/VC/UniqueElementTypeDeclaration.rdr
new file mode 100644
index 0000000..8537041
--- /dev/null
+++ b/result/VC/UniqueElementTypeDeclaration.rdr
@@ -0,0 +1,3 @@
+test/VC/dtds/a.dtd:1: validity error : Redefinition of element a
+<!ELEMENT a (#PCDATA | b | c)*>
+ ^
diff --git a/result/VC/UniqueElementTypeDeclaration2 b/result/VC/UniqueElementTypeDeclaration2
new file mode 100644
index 0000000..c328d92
--- /dev/null
+++ b/result/VC/UniqueElementTypeDeclaration2
@@ -0,0 +1,3 @@
+./test/VC/UniqueElementTypeDeclaration2:6: validity error : Redefinition of element a
+<!ELEMENT a (#PCDATA | b | c)*>
+ ^
diff --git a/result/VC/UniqueElementTypeDeclaration2.rdr b/result/VC/UniqueElementTypeDeclaration2.rdr
new file mode 100644
index 0000000..c328d92
--- /dev/null
+++ b/result/VC/UniqueElementTypeDeclaration2.rdr
@@ -0,0 +1,3 @@
+./test/VC/UniqueElementTypeDeclaration2:6: validity error : Redefinition of element a
+<!ELEMENT a (#PCDATA | b | c)*>
+ ^
diff --git a/result/XInclude/docids.xml b/result/XInclude/docids.xml
new file mode 100644
index 0000000..ad8e6e6
--- /dev/null
+++ b/result/XInclude/docids.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE book [
+<!ELEMENT book (doc)*>
+<!ELEMENT doc (isid)*>
+<!ELEMENT isid EMPTY>
+<!ATTLIST isid myid ID #IMPLIED>
+]>
+<book>
+<doc>
+<isid myid="mine"/>
+<isid myid="dup"/>
+</doc>
+<!-- including another XML document with IDs -->
+<doc xml:base="../ents/ids.xml">
+<isid myid="dup"/>
+<isid myid="foo"/>
+<isid myid="bar"/>
+</doc>
+</book>
diff --git a/result/XInclude/docids.xml.err b/result/XInclude/docids.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/docids.xml.err
diff --git a/result/XInclude/docids.xml.rdr b/result/XInclude/docids.xml.rdr
new file mode 100644
index 0000000..dedeb67
--- /dev/null
+++ b/result/XInclude/docids.xml.rdr
@@ -0,0 +1,35 @@
+0 10 book 0 0
+0 1 book 0 0
+1 14 #text 0 1
+
+1 1 doc 0 0
+2 14 #text 0 1
+
+2 1 isid 1 0
+2 14 #text 0 1
+
+2 1 isid 1 0
+2 14 #text 0 1
+
+1 15 doc 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 including another XML document with IDs
+1 14 #text 0 1
+
+1 1 doc 0 0
+2 14 #text 0 1
+
+2 1 isid 1 0
+2 14 #text 0 1
+
+2 1 isid 1 0
+2 14 #text 0 1
+
+2 1 isid 1 0
+2 14 #text 0 1
+
+1 15 doc 0 0
+1 14 #text 0 1
+
+0 15 book 0 0
diff --git a/result/XInclude/fallback.xml b/result/XInclude/fallback.xml
new file mode 100644
index 0000000..d7eed52
--- /dev/null
+++ b/result/XInclude/fallback.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of a fallback on unavailble URI -->
+ <warning>Inclusion failed</warning>
+</x>
diff --git a/result/XInclude/fallback.xml.err b/result/XInclude/fallback.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/fallback.xml.err
diff --git a/result/XInclude/fallback.xml.rdr b/result/XInclude/fallback.xml.rdr
new file mode 100644
index 0000000..82072f7
--- /dev/null
+++ b/result/XInclude/fallback.xml.rdr
@@ -0,0 +1,12 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of a fallback on unavailble URI
+1 14 #text 0 1
+
+1 1 warning 0 0
+2 3 #text 0 1 Inclusion failed
+1 15 warning 0 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XInclude/fallback2.xml b/result/XInclude/fallback2.xml
new file mode 100644
index 0000000..d91b0a1
--- /dev/null
+++ b/result/XInclude/fallback2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<a>
+ There is no b.xml ...
+ There is no c.xml ...
+
+</a>
diff --git a/result/XInclude/fallback2.xml.err b/result/XInclude/fallback2.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/fallback2.xml.err
diff --git a/result/XInclude/fallback2.xml.rdr b/result/XInclude/fallback2.xml.rdr
new file mode 100644
index 0000000..2fca4f0
--- /dev/null
+++ b/result/XInclude/fallback2.xml.rdr
@@ -0,0 +1,11 @@
+0 1 a 0 0
+1 14 #text 0 1
+
+1 3 #text 0 1 There is no b.xml ...
+1 14 #text 0 1
+
+1 3 #text 0 1 There is no c.xml ...
+1 14 #text 0 1
+
+
+0 15 a 0 0
diff --git a/result/XInclude/include.xml b/result/XInclude/include.xml
new file mode 100644
index 0000000..3a9366d
--- /dev/null
+++ b/result/XInclude/include.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including another XML document -->
+ <doc xml:base="../ents/something.xml">
+<p>something</p>
+<p>really</p>
+<p>simple</p>
+</doc>
+</x>
diff --git a/result/XInclude/include.xml.err b/result/XInclude/include.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/include.xml.err
diff --git a/result/XInclude/include.xml.rdr b/result/XInclude/include.xml.rdr
new file mode 100644
index 0000000..66135a4
--- /dev/null
+++ b/result/XInclude/include.xml.rdr
@@ -0,0 +1,28 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of including another XML document
+1 14 #text 0 1
+
+1 1 doc 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 something
+2 15 p 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 really
+2 15 p 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 simple
+2 15 p 0 0
+2 14 #text 0 1
+
+1 15 doc 0 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XInclude/nodes.xml b/result/XInclude/nodes.xml
new file mode 100644
index 0000000..48030d1
--- /dev/null
+++ b/result/XInclude/nodes.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including a set of nodes from an XML document -->
+ <p xml:base="../ents/something.xml">something</p><p xml:base="../ents/something.xml">really</p><p xml:base="../ents/something.xml">simple</p>
+</x>
diff --git a/result/XInclude/nodes.xml.err b/result/XInclude/nodes.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/nodes.xml.err
diff --git a/result/XInclude/nodes.xml.rdr b/result/XInclude/nodes.xml.rdr
new file mode 100644
index 0000000..0e53878
--- /dev/null
+++ b/result/XInclude/nodes.xml.rdr
@@ -0,0 +1,18 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of including a set of nodes from an XML document
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 something
+1 15 p 0 0
+1 1 p 0 0
+2 3 #text 0 1 really
+1 15 p 0 0
+1 1 p 0 0
+2 3 #text 0 1 simple
+1 15 p 0 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XInclude/nodes2.xml b/result/XInclude/nodes2.xml
new file mode 100644
index 0000000..fac2d82
--- /dev/null
+++ b/result/XInclude/nodes2.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<x xmlns:xinclude="http://www.w3.org/2003/XInclude">
+ <!-- Simple test of including a set of nodes from an XML document -->
+ <p xml:base="../ents/something.xml">something</p><p xml:base="../ents/something.xml">really</p><p xml:base="../ents/something.xml">simple</p>
+</x>
diff --git a/result/XInclude/nodes2.xml.err b/result/XInclude/nodes2.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/nodes2.xml.err
diff --git a/result/XInclude/nodes2.xml.rdr b/result/XInclude/nodes2.xml.rdr
new file mode 100644
index 0000000..0e53878
--- /dev/null
+++ b/result/XInclude/nodes2.xml.rdr
@@ -0,0 +1,18 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of including a set of nodes from an XML document
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 something
+1 15 p 0 0
+1 1 p 0 0
+2 3 #text 0 1 really
+1 15 p 0 0
+1 1 p 0 0
+2 3 #text 0 1 simple
+1 15 p 0 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XInclude/nodes3.xml b/result/XInclude/nodes3.xml
new file mode 100644
index 0000000..9ab2044
--- /dev/null
+++ b/result/XInclude/nodes3.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<x xmlns:xinclude="http://www.w3.org/2003/XInclude">
+ <!-- Simple test of including a set of nodes from an XML document -->
+ <xinclude:include href="../ents/something.xml#xpointer(//p)"/>
+</x>
diff --git a/result/XInclude/nodes3.xml.err b/result/XInclude/nodes3.xml.err
new file mode 100644
index 0000000..fb11525
--- /dev/null
+++ b/result/XInclude/nodes3.xml.err
@@ -0,0 +1 @@
+./test/XInclude/docs/nodes3.xml:3: element include: XInclude error : Invalid fragment identifier in URI test/XInclude/ents/something.xml#xpointer(//p) use the xpointer attribute
diff --git a/result/XInclude/nodes3.xml.rdr b/result/XInclude/nodes3.xml.rdr
new file mode 100644
index 0000000..f2ae87b
--- /dev/null
+++ b/result/XInclude/nodes3.xml.rdr
@@ -0,0 +1,10 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of including a set of nodes from an XML document
+1 14 #text 0 1
+
+1 1 xinclude:include 1 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XInclude/recursive.xml b/result/XInclude/recursive.xml
new file mode 100644
index 0000000..4af1738
--- /dev/null
+++ b/result/XInclude/recursive.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<this><sub-inc xml:base="../ents/sub-inc.ent">is a test
+</sub-inc></this>
diff --git a/result/XInclude/recursive.xml.err b/result/XInclude/recursive.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/recursive.xml.err
diff --git a/result/XInclude/recursive.xml.rdr b/result/XInclude/recursive.xml.rdr
new file mode 100644
index 0000000..cafce16
--- /dev/null
+++ b/result/XInclude/recursive.xml.rdr
@@ -0,0 +1,6 @@
+0 1 this 0 0
+1 1 sub-inc 0 0
+2 3 #text 0 1 is a test
+
+1 15 sub-inc 0 0
+0 15 this 0 0
diff --git a/result/XInclude/tstencoding.xml b/result/XInclude/tstencoding.xml
new file mode 100644
index 0000000..a1c5179
--- /dev/null
+++ b/result/XInclude/tstencoding.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including another text document -->
+ test with accents in ISO-8859-1: À Á é è
+
+</x>
diff --git a/result/XInclude/tstencoding.xml.err b/result/XInclude/tstencoding.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/tstencoding.xml.err
diff --git a/result/XInclude/tstencoding.xml.rdr b/result/XInclude/tstencoding.xml.rdr
new file mode 100644
index 0000000..a0cc69b
--- /dev/null
+++ b/result/XInclude/tstencoding.xml.rdr
@@ -0,0 +1,11 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of including another text document
+1 14 #text 0 1
+
+1 3 #text 0 1 test with accents in ISO-8859-1: À à é è
+
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XInclude/txtinclude.xml b/result/XInclude/txtinclude.xml
new file mode 100644
index 0000000..0114e4f
--- /dev/null
+++ b/result/XInclude/txtinclude.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including another text document -->
+ this is some text in ASCII
+
+</x>
diff --git a/result/XInclude/txtinclude.xml.err b/result/XInclude/txtinclude.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/XInclude/txtinclude.xml.err
diff --git a/result/XInclude/txtinclude.xml.rdr b/result/XInclude/txtinclude.xml.rdr
new file mode 100644
index 0000000..a4cc3b4
--- /dev/null
+++ b/result/XInclude/txtinclude.xml.rdr
@@ -0,0 +1,11 @@
+0 1 x 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 Simple test of including another text document
+1 14 #text 0 1
+
+1 3 #text 0 1 this is some text in ASCII
+
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/XPath/expr/base b/result/XPath/expr/base
new file mode 100644
index 0000000..3552866
--- /dev/null
+++ b/result/XPath/expr/base
@@ -0,0 +1,20 @@
+
+========================
+Expression: 1
+Object is a number : 1
+
+========================
+Expression: 1+2
+Object is a number : 3
+
+========================
+Expression: 2*3
+Object is a number : 6
+
+========================
+Expression: 1+2*3+4
+Object is a number : 11
+
+========================
+Expression: (1+2)*(3+4)
+Object is a number : 21
diff --git a/result/XPath/expr/compare b/result/XPath/expr/compare
new file mode 100644
index 0000000..21a88d0
--- /dev/null
+++ b/result/XPath/expr/compare
@@ -0,0 +1,184 @@
+
+========================
+Expression: 0<0
+Object is a Boolean : false
+
+========================
+Expression: 0<=0
+Object is a Boolean : true
+
+========================
+Expression: 0>0
+Object is a Boolean : false
+
+========================
+Expression: 0>=0
+Object is a Boolean : true
+
+========================
+Expression: 0<1
+Object is a Boolean : true
+
+========================
+Expression: 0<=1
+Object is a Boolean : true
+
+========================
+Expression: 0>1
+Object is a Boolean : false
+
+========================
+Expression: 0>=1
+Object is a Boolean : false
+
+========================
+Expression: 1<0
+Object is a Boolean : false
+
+========================
+Expression: 1<=0
+Object is a Boolean : false
+
+========================
+Expression: 1>0
+Object is a Boolean : true
+
+========================
+Expression: 1>=0
+Object is a Boolean : true
+
+========================
+Expression: 1<1
+Object is a Boolean : false
+
+========================
+Expression: 1<=1
+Object is a Boolean : true
+
+========================
+Expression: 1>1
+Object is a Boolean : false
+
+========================
+Expression: 1>=1
+Object is a Boolean : true
+
+========================
+Expression: '0'<1
+Object is a Boolean : true
+
+========================
+Expression: '0'<=1
+Object is a Boolean : true
+
+========================
+Expression: '0'>1
+Object is a Boolean : false
+
+========================
+Expression: '0'>=1
+Object is a Boolean : false
+
+========================
+Expression: 0<'1.2'
+Object is a Boolean : true
+
+========================
+Expression: 0<='1.2'
+Object is a Boolean : true
+
+========================
+Expression: 0>'1.2'
+Object is a Boolean : false
+
+========================
+Expression: 0>='1.2'
+Object is a Boolean : false
+
+========================
+Expression: 0<'-0.2'
+Object is a Boolean : false
+
+========================
+Expression: 0<='-0.2'
+Object is a Boolean : false
+
+========================
+Expression: 0>'-0.2'
+Object is a Boolean : true
+
+========================
+Expression: 0>='-0.2'
+Object is a Boolean : true
+
+========================
+Expression: false()<1
+Object is a Boolean : true
+
+========================
+Expression: false()<=1
+Object is a Boolean : true
+
+========================
+Expression: 0>true()
+Object is a Boolean : false
+
+========================
+Expression: 0>=true()
+Object is a Boolean : false
+
+========================
+Expression: 'a' > 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' > 'b'
+Object is a Boolean : false
+
+========================
+Expression: 'b' > 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' < 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' < 'b'
+Object is a Boolean : false
+
+========================
+Expression: 'b' < 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' >= 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' >= 'b'
+Object is a Boolean : false
+
+========================
+Expression: 'b' >= 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' <= 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' <= 'b'
+Object is a Boolean : false
+
+========================
+Expression: 'b' <= 'a'
+Object is a Boolean : false
+
+========================
+Expression: 'a' > '0.0'
+Object is a Boolean : false
+
+========================
+Expression: 'a' < '0.0'
+Object is a Boolean : false
diff --git a/result/XPath/expr/equality b/result/XPath/expr/equality
new file mode 100644
index 0000000..44b4c22
--- /dev/null
+++ b/result/XPath/expr/equality
@@ -0,0 +1,104 @@
+
+========================
+Expression: 1=1
+Object is a Boolean : true
+
+========================
+Expression: 1!=1
+Object is a Boolean : false
+
+========================
+Expression: 1=0
+Object is a Boolean : false
+
+========================
+Expression: 1!=0
+Object is a Boolean : true
+
+========================
+Expression: true()=true()
+Object is a Boolean : true
+
+========================
+Expression: true()!=true()
+Object is a Boolean : false
+
+========================
+Expression: true()=false()
+Object is a Boolean : false
+
+========================
+Expression: false()!=true()
+Object is a Boolean : true
+
+========================
+Expression: 'test'='test'
+Object is a Boolean : true
+
+========================
+Expression: 'test'!='test'
+Object is a Boolean : false
+
+========================
+Expression: 'test2'='test'
+Object is a Boolean : false
+
+========================
+Expression: 'test2'!='test'
+Object is a Boolean : true
+
+========================
+Expression: false()=0
+Object is a Boolean : true
+
+========================
+Expression: false()!=0
+Object is a Boolean : false
+
+========================
+Expression: false()=1
+Object is a Boolean : false
+
+========================
+Expression: false()!=1
+Object is a Boolean : true
+
+========================
+Expression: 0=true()
+Object is a Boolean : false
+
+========================
+Expression: 0!=true()
+Object is a Boolean : true
+
+========================
+Expression: 1=true()
+Object is a Boolean : true
+
+========================
+Expression: 1!=true()
+Object is a Boolean : false
+
+========================
+Expression: true()='test'
+Object is a Boolean : true
+
+========================
+Expression: false()='test'
+Object is a Boolean : false
+
+========================
+Expression: 'test'!=true()
+Object is a Boolean : false
+
+========================
+Expression: 'test'!=false()
+Object is a Boolean : true
+
+========================
+Expression: 'a'=0.0
+Object is a Boolean : false
+
+========================
+Expression: 'a'!=0.0
+Object is a Boolean : true
diff --git a/result/XPath/expr/floats b/result/XPath/expr/floats
new file mode 100644
index 0000000..b6255ce
--- /dev/null
+++ b/result/XPath/expr/floats
@@ -0,0 +1,244 @@
+
+========================
+Expression: 1
+Object is a number : 1
+
+========================
+Expression: 123
+Object is a number : 123
+
+========================
+Expression: 1.23
+Object is a number : 1.23
+
+========================
+Expression: 0.123
+Object is a number : 0.123
+
+========================
+Expression: 4.
+Object is a number : 4
+
+========================
+Expression: .4
+Object is a number : 0.4
+
+========================
+Expression: 1.23e3
+Object is a number : 1230
+
+========================
+Expression: 1.23e-3
+Object is a number : 0.00123
+
+========================
+Expression: 1 div 0
+Object is a number : Infinity
+
+========================
+Expression: -1 div 0
+Object is a number : -Infinity
+
+========================
+Expression: 0 div 0
+Object is a number : NaN
+
+========================
+Expression: 1 div -0
+Object is a number : -Infinity
+
+========================
+Expression: (1 div 0) > 0
+Object is a Boolean : true
+
+========================
+Expression: (1 div 0) < 0
+Object is a Boolean : false
+
+========================
+Expression: (-1 div 0) > 0
+Object is a Boolean : false
+
+========================
+Expression: (-1 div 0) < 0
+Object is a Boolean : true
+
+========================
+Expression: (0 div 0) > 0
+Object is a Boolean : false
+
+========================
+Expression: (0 div 0) < 0
+Object is a Boolean : false
+
+========================
+Expression: (1 div -0) > 0
+Object is a Boolean : false
+
+========================
+Expression: (1 div -0) < 0
+Object is a Boolean : true
+
+========================
+Expression: 0 div 0 = 0 div 0
+Object is a Boolean : false
+
+========================
+Expression: 0 div 0 != 0 div 0
+Object is a Boolean : true
+
+========================
+Expression: 0 div 0 > 0 div 0
+Object is a Boolean : false
+
+========================
+Expression: 0 div 0 < 0 div 0
+Object is a Boolean : false
+
+========================
+Expression: 0 div 0 >= 0 div 0
+Object is a Boolean : false
+
+========================
+Expression: 0 div 0 <= 0 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 = -1 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 != -1 div 0
+Object is a Boolean : true
+
+========================
+Expression: 1 div 0 > -1 div 0
+Object is a Boolean : true
+
+========================
+Expression: 1 div 0 < -1 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 >= -1 div 0
+Object is a Boolean : true
+
+========================
+Expression: 1 div 0 <= -1 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 = 1 div 0
+Object is a Boolean : true
+
+========================
+Expression: 1 div 0 != 1 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 > 1 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 < 1 div 0
+Object is a Boolean : false
+
+========================
+Expression: 1 div 0 >= -1 div 0
+Object is a Boolean : true
+
+========================
+Expression: 1 div 0 <= -1 div 0
+Object is a Boolean : false
+
+========================
+Expression: -2 div 0 = -1 div 0
+Object is a Boolean : true
+
+========================
+Expression: 1 div floor(0.1)
+Object is a number : Infinity
+
+========================
+Expression: 1 div floor(-0.1)
+Object is a number : -1
+
+========================
+Expression: 1 div floor(-0)
+Object is a number : -Infinity
+
+========================
+Expression: 1 div floor(0)
+Object is a number : Infinity
+
+========================
+Expression: 1 div ceiling(0.1)
+Object is a number : 1
+
+========================
+Expression: 1 div ceiling(-0.1)
+Object is a number : -Infinity
+
+========================
+Expression: 1 div ceiling(-0)
+Object is a number : -Infinity
+
+========================
+Expression: 1 div ceiling(0)
+Object is a number : Infinity
+
+========================
+Expression: 1 div round(0.1)
+Object is a number : Infinity
+
+========================
+Expression: 1 div round(-0.1)
+Object is a number : -Infinity
+
+========================
+Expression: 1 div round(-0)
+Object is a number : -Infinity
+
+========================
+Expression: 1 div round(0)
+Object is a number : Infinity
+
+========================
+Expression: 1 div number('f')
+Object is a number : NaN
+
+========================
+Expression: number('f') div 1
+Object is a number : NaN
+
+========================
+Expression: 1 div (1 div 0)
+Object is a number : 0
+
+========================
+Expression: (1 div 0) div 1
+Object is a number : Infinity
+
+========================
+Expression: -(1 div 0) div 1
+Object is a number : -Infinity
+
+========================
+Expression: 5 mod 2
+Object is a number : 1
+
+========================
+Expression: 5 mod -2
+Object is a number : 1
+
+========================
+Expression: -5 mod 2
+Object is a number : -1
+
+========================
+Expression: -5 mod -2
+Object is a number : -1
+
+========================
+Expression: 8 mod 3 = 2
+Object is a Boolean : true
diff --git a/result/XPath/expr/functions b/result/XPath/expr/functions
new file mode 100644
index 0000000..10cc27e
--- /dev/null
+++ b/result/XPath/expr/functions
@@ -0,0 +1,100 @@
+
+========================
+Expression: true()
+Object is a Boolean : true
+
+========================
+Expression: false()
+Object is a Boolean : false
+
+========================
+Expression: number("1.5")
+Object is a number : 1.5
+
+========================
+Expression: number('abc')
+Object is a number : NaN
+
+========================
+Expression: -number('abc')
+Object is a number : NaN
+
+========================
+Expression: floor(0.1)
+Object is a number : 0
+
+========================
+Expression: floor(-0.1)
+Object is a number : -1
+
+========================
+Expression: floor(-0)
+Object is a number : 0
+
+========================
+Expression: floor(0)
+Object is a number : 0
+
+========================
+Expression: floor(5.2)
+Object is a number : 5
+
+========================
+Expression: floor(-5.2)
+Object is a number : -6
+
+========================
+Expression: ceiling(0.1)
+Object is a number : 1
+
+========================
+Expression: ceiling(-0.1)
+Object is a number : 0
+
+========================
+Expression: ceiling(-0)
+Object is a number : 0
+
+========================
+Expression: ceiling(0)
+Object is a number : 0
+
+========================
+Expression: ceiling(5.2)
+Object is a number : 6
+
+========================
+Expression: ceiling(-5.2)
+Object is a number : -5
+
+========================
+Expression: round(0.1)
+Object is a number : 0
+
+========================
+Expression: round(5.2)
+Object is a number : 5
+
+========================
+Expression: round(5.5)
+Object is a number : 6
+
+========================
+Expression: round(5.6)
+Object is a number : 6
+
+========================
+Expression: round(-0.1)
+Object is a number : 0
+
+========================
+Expression: round(-5.2)
+Object is a number : -5
+
+========================
+Expression: round(-5.5)
+Object is a number : -5
+
+========================
+Expression: round(-5.6)
+Object is a number : -6
diff --git a/result/XPath/expr/strings b/result/XPath/expr/strings
new file mode 100644
index 0000000..fad7048
--- /dev/null
+++ b/result/XPath/expr/strings
@@ -0,0 +1,136 @@
+
+========================
+Expression: string(5)
+Object is a string : 5
+
+========================
+Expression: string(0.5)
+Object is a string : 0.5
+
+========================
+Expression: string(-0.5)
+Object is a string : -0.5
+
+========================
+Expression: string(true())
+Object is a string : true
+
+========================
+Expression: string(false())
+Object is a string : false
+
+========================
+Expression: concat("titi","toto")
+Object is a string : tititoto
+
+========================
+Expression: concat("titi","toto","tata")
+Object is a string : tititototata
+
+========================
+Expression: concat("titi",'toto')
+Object is a string : tititoto
+
+========================
+Expression: concat("titi",'toto',"tata","last")
+Object is a string : tititototatalast
+
+========================
+Expression: starts-with("tititoto","titi")
+Object is a Boolean : true
+
+========================
+Expression: starts-with("tititoto","to")
+Object is a Boolean : false
+
+========================
+Expression: contains("tititototata","titi")
+Object is a Boolean : true
+
+========================
+Expression: contains("tititototata","toto")
+Object is a Boolean : true
+
+========================
+Expression: contains("tititototata","tata")
+Object is a Boolean : true
+
+========================
+Expression: contains("tititototata","tita")
+Object is a Boolean : false
+
+========================
+Expression: substring("12345",2,3)
+Object is a string : 234
+
+========================
+Expression: substring("12345",2)
+Object is a string : 2345
+
+========================
+Expression: substring("12345",-4)
+Object is a string : 12345
+
+========================
+Expression: substring("12345",3.4)
+Object is a string : 345
+
+========================
+Expression: substring("12345",3.6)
+Object is a string : 45
+
+========================
+Expression: substring("12345",1.5,2.6)
+Object is a string : 234
+
+========================
+Expression: substring("12345",2.2,2.2)
+Object is a string : 23
+
+========================
+Expression: substring("12345",0,3)
+Object is a string : 12
+
+========================
+Expression: substring("12345",-8,10)
+Object is a string : 1
+
+========================
+Expression: substring("12345",4,-10)
+Object is a string :
+
+========================
+Expression: substring("12345",0 div 0, 3)
+Object is a string :
+
+========================
+Expression: substring("12345",1, 0 div 0)
+Object is a string :
+
+========================
+Expression: substring("12345",1 div 0, 3)
+Object is a string :
+
+========================
+Expression: substring("12345",3,-1 div 0)
+Object is a string :
+
+========================
+Expression: substring("12345",-42, 1 div 0)
+Object is a string : 12345
+
+========================
+Expression: substring("12345",-1 div 0, 1 div 0)
+Object is a string :
+
+========================
+Expression: substring("12345",-1 div 0,5)
+Object is a string :
+
+========================
+Expression: string-length("")
+Object is a number : 0
+
+========================
+Expression: string-length("titi")
+Object is a number : 4
diff --git a/result/XPath/tests/chaptersbase b/result/XPath/tests/chaptersbase
new file mode 100644
index 0000000..03c6567
--- /dev/null
+++ b/result/XPath/tests/chaptersbase
@@ -0,0 +1,115 @@
+
+========================
+Expression: /child::EXAMPLE
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
+
+========================
+Expression: /child::*
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
+
+========================
+Expression: /child::EXAMPLE/child::head
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT head
+
+========================
+Expression: /child::EXAMPLE/child::*
+Object is a Node Set :
+Set contains 6 nodes:
+1 ELEMENT head
+2 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+3 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+4 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+5 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter4
+6 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter5
+
+========================
+Expression: /child::EXAMPLE/child::head/child::title
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT title
+
+========================
+Expression: /child::EXAMPLE/child::head/child::title/child::text()
+Object is a Node Set :
+Set contains 1 nodes:
+1 TEXT
+ content=Welcome to Gnome
+
+========================
+Expression: /child::EXAMPLE/child::head/node()
+Object is a Node Set :
+Set contains 3 nodes:
+1 TEXT
+ content=
+2 ELEMENT title
+3 TEXT
+ content=
+
+========================
+Expression: /descendant::title
+Object is a Node Set :
+Set contains 6 nodes:
+1 ELEMENT title
+2 ELEMENT title
+3 ELEMENT title
+4 ELEMENT title
+5 ELEMENT title
+6 ELEMENT title
+
+========================
+Expression: /descendant::p/ancestor::chapter
+Object is a Node Set :
+Set contains 5 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+2 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+3 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+4 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter4
+5 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter5
diff --git a/result/XPath/tests/chaptersprefol b/result/XPath/tests/chaptersprefol
new file mode 100644
index 0000000..a12c937
--- /dev/null
+++ b/result/XPath/tests/chaptersprefol
@@ -0,0 +1,100 @@
+
+========================
+Expression: /following::*
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: /preceding::*
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: /child::EXAMPLE/preceding::*
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: /child::EXAMPLE/following::*
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: /child::EXAMPLE/child::chapter[3]/preceding::*
+Object is a Node Set :
+Set contains 10 nodes:
+1 ELEMENT head
+2 ELEMENT title
+3 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+4 ELEMENT title
+5 ELEMENT p
+6 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+7 ELEMENT p
+8 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+9 ELEMENT title
+10 ELEMENT p
+
+========================
+Expression: /child::EXAMPLE/child::chapter[3]/following::*
+Object is a Node Set :
+Set contains 6 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter4
+2 ELEMENT title
+3 ELEMENT p
+4 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter5
+5 ELEMENT title
+6 ELEMENT p
+
+========================
+Expression: /child::EXAMPLE/child::chapter[1]/image/preceding::*
+Object is a Node Set :
+Set contains 4 nodes:
+1 ELEMENT head
+2 ELEMENT title
+3 ELEMENT title
+4 ELEMENT p
+
+========================
+Expression: /child::EXAMPLE/child::chapter[1]/image/following::*
+Object is a Node Set :
+Set contains 13 nodes:
+1 ELEMENT p
+2 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+3 ELEMENT title
+4 ELEMENT p
+5 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+6 ELEMENT title
+7 ELEMENT p
+8 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter4
+9 ELEMENT title
+10 ELEMENT p
+11 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter5
+12 ELEMENT title
+13 ELEMENT p
diff --git a/result/XPath/tests/idsimple b/result/XPath/tests/idsimple
new file mode 100644
index 0000000..891b52e
--- /dev/null
+++ b/result/XPath/tests/idsimple
@@ -0,0 +1,33 @@
+
+========================
+Expression: //*[@id="root"]
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT EXAMPLE
+ ATTRIBUTE id
+ TEXT
+ content=root
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
+
+========================
+Expression: //*[@id="chapter2"]
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+
+========================
+Expression: //*[@id="chapter5"]
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter5
diff --git a/result/XPath/tests/langsimple b/result/XPath/tests/langsimple
new file mode 100644
index 0000000..d8d7afd
--- /dev/null
+++ b/result/XPath/tests/langsimple
@@ -0,0 +1,60 @@
+
+========================
+Expression: //*[lang('en')]
+Object is a Node Set :
+Set contains 9 nodes:
+1 ELEMENT b
+ ATTRIBUTE lang
+ TEXT
+ content=en
+2 ELEMENT x
+3 ELEMENT x
+4 ELEMENT para
+ ATTRIBUTE lang
+ TEXT
+ content=en
+5 ELEMENT div
+ ATTRIBUTE lang
+ TEXT
+ content=en
+6 ELEMENT para
+7 ELEMENT para
+ ATTRIBUTE lang
+ TEXT
+ content=EN
+8 ELEMENT para
+ ATTRIBUTE lang
+ TEXT
+ content=en-us
+9 ELEMENT para
+ ATTRIBUTE lang
+ TEXT
+ content=EN-US
+
+========================
+Expression: //*[lang('en-us')]
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT para
+ ATTRIBUTE lang
+ TEXT
+ content=en-us
+2 ELEMENT para
+ ATTRIBUTE lang
+ TEXT
+ content=EN-US
+
+========================
+Expression: //*[lang('en-gb')]
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: //*[lang('fr')]
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: //*[lang('')]
+Object is a Node Set :
+Set contains 0 nodes:
diff --git a/result/XPath/tests/mixedpat b/result/XPath/tests/mixedpat
new file mode 100644
index 0000000..3be0c49
--- /dev/null
+++ b/result/XPath/tests/mixedpat
@@ -0,0 +1,101 @@
+
+========================
+Expression: s
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+
+========================
+Expression: s|p1/s
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+2 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p1
+
+========================
+Expression: s|/root/p1/s
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+2 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p1
+
+========================
+Expression: /root/p1/s|s
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+2 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p1
+
+========================
+Expression: //s
+Object is a Node Set :
+Set contains 3 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+2 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p1
+3 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p2
+
+========================
+Expression: //s|p1
+Object is a Node Set :
+Set contains 4 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+2 ELEMENT p1
+3 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p1
+4 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p2
+
+========================
+Expression: p1|//s
+Object is a Node Set :
+Set contains 4 nodes:
+1 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=root
+2 ELEMENT p1
+3 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p1
+4 ELEMENT s
+ ATTRIBUTE p
+ TEXT
+ content=p2
diff --git a/result/XPath/tests/nodespat b/result/XPath/tests/nodespat
new file mode 100644
index 0000000..1efd87f
--- /dev/null
+++ b/result/XPath/tests/nodespat
@@ -0,0 +1,94 @@
+
+========================
+Expression: /.
+Object is a Node Set :
+Set contains 1 nodes:
+1 /
+
+========================
+Expression: //.
+Object is a Node Set :
+Set contains 12 nodes:
+1 /
+2 ELEMENT root
+3 ELEMENT foo
+4 TEXT
+ content=txt
+5 COMMENT
+ content=hello
+6 CDATA_SECTION
+ content=data
+7 PI target
+ content=data
+8 ELEMENT bar
+9 TEXT
+ content=txt
+10 COMMENT
+ content=hello
+11 CDATA_SECTION
+ content=data
+12 PI target
+ content=data
+
+========================
+Expression: /root//.
+Object is a Node Set :
+Set contains 11 nodes:
+1 ELEMENT root
+2 ELEMENT foo
+3 TEXT
+ content=txt
+4 COMMENT
+ content=hello
+5 CDATA_SECTION
+ content=data
+6 PI target
+ content=data
+7 ELEMENT bar
+8 TEXT
+ content=txt
+9 COMMENT
+ content=hello
+10 CDATA_SECTION
+ content=data
+11 PI target
+ content=data
+
+========================
+Expression: //.//./././/.
+Object is a Node Set :
+Set contains 12 nodes:
+1 /
+2 ELEMENT root
+3 ELEMENT foo
+4 TEXT
+ content=txt
+5 COMMENT
+ content=hello
+6 CDATA_SECTION
+ content=data
+7 PI target
+ content=data
+8 ELEMENT bar
+9 TEXT
+ content=txt
+10 COMMENT
+ content=hello
+11 CDATA_SECTION
+ content=data
+12 PI target
+ content=data
+
+========================
+Expression: /root//././/bar//.
+Object is a Node Set :
+Set contains 5 nodes:
+1 ELEMENT bar
+2 TEXT
+ content=txt
+3 COMMENT
+ content=hello
+4 CDATA_SECTION
+ content=data
+5 PI target
+ content=data
diff --git a/result/XPath/tests/simpleabbr b/result/XPath/tests/simpleabbr
new file mode 100644
index 0000000..85da41a
--- /dev/null
+++ b/result/XPath/tests/simpleabbr
@@ -0,0 +1,81 @@
+
+========================
+Expression: /EXAMPLE
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
+
+========================
+Expression: /EXAMPLE/head
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT head
+
+========================
+Expression: /EXAMPLE/chapter[1]
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+
+========================
+Expression: //p
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT p
+2 ELEMENT p
+
+========================
+Expression: //chapter/image
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: //p/text()
+Object is a Node Set :
+Set contains 2 nodes:
+1 TEXT
+ content=bla bla bla ...
+2 TEXT
+ content=...
+
+========================
+Expression: //p/text()[position()=1]
+Object is a Node Set :
+Set contains 2 nodes:
+1 TEXT
+ content=bla bla bla ...
+2 TEXT
+ content=...
+
+========================
+Expression: //p/text()[position()=last()]
+Object is a Node Set :
+Set contains 2 nodes:
+1 TEXT
+ content=bla bla bla ...
+2 TEXT
+ content=...
+
+========================
+Expression: (//p/text())[position()=1]
+Object is a Node Set :
+Set contains 1 nodes:
+1 TEXT
+ content=bla bla bla ...
+
+========================
+Expression: (//p/text())[position()=last()]
+Object is a Node Set :
+Set contains 1 nodes:
+1 TEXT
+ content=...
diff --git a/result/XPath/tests/simplebase b/result/XPath/tests/simplebase
new file mode 100644
index 0000000..38fa144
--- /dev/null
+++ b/result/XPath/tests/simplebase
@@ -0,0 +1,73 @@
+
+========================
+Expression: /child::*
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
+
+========================
+Expression: /child::EXAMPLE
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT EXAMPLE
+ ATTRIBUTE prop1
+ TEXT
+ content=gnome is great
+ ATTRIBUTE prop2
+ TEXT
+ content=& linux too
+
+========================
+Expression: /child::EXAMPLE/child::head
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT head
+
+========================
+Expression: /child::EXAMPLE/child::*
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT head
+2 ELEMENT chapter
+
+========================
+Expression: /child::EXAMPLE/child::head/child::title
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT title
+
+========================
+Expression: /child::EXAMPLE/child::head/child::title/child::text()
+Object is a Node Set :
+Set contains 1 nodes:
+1 TEXT
+ content=Welcome to Gnome
+
+========================
+Expression: /child::EXAMPLE/child::head/node()
+Object is a Node Set :
+Set contains 3 nodes:
+1 TEXT
+ content=
+2 ELEMENT title
+3 TEXT
+ content=
+
+========================
+Expression: /descendant::title
+Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT title
+2 ELEMENT title
+
+========================
+Expression: /descendant::p/ancestor::chapter
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
diff --git a/result/XPath/tests/usr1check b/result/XPath/tests/usr1check
new file mode 100644
index 0000000..0308991
--- /dev/null
+++ b/result/XPath/tests/usr1check
@@ -0,0 +1,12 @@
+
+========================
+Expression: //ITEM[1]
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT ITEM
+ ATTRIBUTE monto
+ TEXT
+ content=50.12
+ ATTRIBUTE divisa
+ TEXT
+ content=DOL
diff --git a/result/XPath/tests/vidbase b/result/XPath/tests/vidbase
new file mode 100644
index 0000000..3c7b62f
--- /dev/null
+++ b/result/XPath/tests/vidbase
@@ -0,0 +1,42 @@
+
+========================
+Expression: id('chapter1')
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+
+========================
+Expression: id('chapter3')
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+
+========================
+Expression: id('chapter1')/p
+Object is a Node Set :
+Set contains 4 nodes:
+1 ELEMENT p
+2 ELEMENT p
+3 ELEMENT p
+4 ELEMENT p
+
+========================
+Expression: id('chapter1')//p
+Object is a Node Set :
+Set contains 4 nodes:
+1 ELEMENT p
+2 ELEMENT p
+3 ELEMENT p
+4 ELEMENT p
+
+========================
+Expression: id('chapter1')/p[1]
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT p
diff --git a/result/XPath/xptr/chapterschildseq b/result/XPath/xptr/chapterschildseq
new file mode 100644
index 0000000..396bcac
--- /dev/null
+++ b/result/XPath/xptr/chapterschildseq
@@ -0,0 +1,53 @@
+
+========================
+Expression: /1/2/3
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: element(/1/2/3)
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: element(foo)element(/1/2/3)
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: element(/1/2/3)element(foo)
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: chapter1/3
+Object is a Node Set :
+Set contains 0 nodes:
+
+========================
+Expression: element(chapter1/3)
+Object is empty (NULL)
+
+========================
+Expression: element(foo)element(chapter1/3)
+Object is empty (NULL)
+
+========================
+Expression: element(chapter1/3)element(foo)
+Object is empty (NULL)
diff --git a/result/XPath/xptr/chaptersparts b/result/XPath/xptr/chaptersparts
new file mode 100644
index 0000000..70b561b
--- /dev/null
+++ b/result/XPath/xptr/chaptersparts
@@ -0,0 +1,44 @@
+
+========================
+Expression: xpointer(//chapitre[2])
+Object is empty (NULL)
+
+========================
+Expression: xpointer(//chapter[2])
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+
+========================
+Expression: xpointer(//chapitre[2])xpointer(//chapter[2])
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+
+========================
+Expression: xpointer(id("chapter1"))
+Object is empty (NULL)
+
+========================
+Expression: xpointer(//*[@id="chapter1"])
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+
+========================
+Expression: xpointer(id("chapter1"))xpointer(//*[@id="chapter1"])
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
diff --git a/result/XPath/xptr/chaptersrange b/result/XPath/xptr/chaptersrange
new file mode 100644
index 0000000..c1b9cde
--- /dev/null
+++ b/result/XPath/xptr/chaptersrange
@@ -0,0 +1,64 @@
+
+========================
+Expression: xpointer(//chapter[position() = 2]/range-to(following::chapter[1]))
+Object is a Location Set:
+1 : Object is a range :
+ From node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+ To node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+
+
+========================
+Expression: xpointer(//chapter[position() <= 2]/range-to(following::chapter[1]))
+Object is a Location Set:
+1 : Object is a range :
+ From node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+ To node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+
+2 : Object is a range :
+ From node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter2
+ To node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+
+
+========================
+Expression: xpointer(//chapter[position() = last()]/range-to(following::chapter[1]))
+Object is empty (NULL)
+
+========================
+Expression: xpointer(//chapter[position() = 3]/range-to(/.//chapter[position() = 1]))
+Object is a Location Set:
+1 : Object is a range :
+ From node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+ To node
+ ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter3
+
diff --git a/result/XPath/xptr/strpoint b/result/XPath/xptr/strpoint
new file mode 100644
index 0000000..d6ecab3
--- /dev/null
+++ b/result/XPath/xptr/strpoint
@@ -0,0 +1,75 @@
+
+========================
+Expression: xpointer(start-point(string-range(//p,'multiple')))
+Object is a Location Set:
+1 : Object is a point : index 1 in node TEXT
+ content=multiple tests
+
+
+========================
+Expression: xpointer(end-point(string-range(//p,'multiple')))
+Object is a Location Set:
+1 : Object is a point : index 8 in node TEXT
+ content=multiple tests
+
+
+========================
+Expression: xpointer(start-point(string-range(//p,'test')))
+Object is a Location Set:
+1 : Object is a point : index 10 in node TEXT
+ content=a simple test
+
+2 : Object is a point : index 10 in node TEXT
+ content=multiple tests
+
+3 : Object is a point : index 7 in node TEXT
+ content=anced test
+
+
+========================
+Expression: xpointer(end-point(string-range(//p,'test')))
+Object is a Location Set:
+1 : Object is a point : index 13 in node TEXT
+ content=a simple test
+
+2 : Object is a point : index 13 in node TEXT
+ content=multiple tests
+
+3 : Object is a point : index 10 in node TEXT
+ content=anced test
+
+
+========================
+Expression: xpointer(start-point(string-range(//*,'multiple',1,0)))
+Object is a Location Set:
+1 : Object is a point : index 1 in node TEXT
+ content=multiple tests
+
+
+========================
+Expression: xpointer(end-point(string-range(//*,'multiple',1,0)))
+Object is a Location Set:
+1 : Object is a point : index 1 in node TEXT
+ content=multiple tests
+
+
+========================
+Expression: xpointer(start-point(string-range(//*,'multiple',1,1)))
+Object is a Location Set:
+1 : Object is a point : index 1 in node TEXT
+ content=multiple tests
+
+
+========================
+Expression: xpointer(end-point(string-range(//*,'multiple',1,1)))
+Object is a Location Set:
+1 : Object is a point : index 2 in node TEXT
+ content=multiple tests
+
+
+========================
+Expression: xpointer(start-point(string-range(//p,'test'))[1])
+Object is a Location Set:
+1 : Object is a point : index 10 in node TEXT
+ content=a simple test
+
diff --git a/result/XPath/xptr/strrange b/result/XPath/xptr/strrange
new file mode 100644
index 0000000..c14ed91
--- /dev/null
+++ b/result/XPath/xptr/strrange
@@ -0,0 +1,96 @@
+
+========================
+Expression: xpointer(string-range(//p, 'simple'))
+Object is a Location Set:
+1 : Object is a range :
+ From index 3 in node
+ TEXT
+ content=a simple test
+ To index 8 in node
+ TEXT
+ content=a simple test
+
+
+========================
+Expression: xpointer(string-range(//p, 'test'))
+Object is a Location Set:
+1 : Object is a range :
+ From index 10 in node
+ TEXT
+ content=a simple test
+ To index 13 in node
+ TEXT
+ content=a simple test
+
+2 : Object is a range :
+ From index 10 in node
+ TEXT
+ content=multiple tests
+ To index 13 in node
+ TEXT
+ content=multiple tests
+
+3 : Object is a range :
+ From index 7 in node
+ TEXT
+ content=anced test
+ To index 10 in node
+ TEXT
+ content=anced test
+
+
+========================
+Expression: xpointer(string-range(//p, 'difficult'))
+Object is a Location Set:
+1 : Object is a range :
+ From index 3 in node
+ TEXT
+ content=a diff
+ To index 4 in node
+ TEXT
+ content=cult one
+
+
+========================
+Expression: xpointer(string-range(//p, 'spanning'))
+Object is a Location Set:
+1 : Object is a range :
+ From index 3 in node
+ TEXT
+ content=a span
+ To index 3 in node
+ TEXT
+ content=ing one
+
+
+========================
+Expression: xpointer(string-range(//p, 'unbalanced'))
+Object is a Location Set:
+1 : Object is a range :
+ From index 8 in node
+ TEXT
+ content=and an unbal
+ To index 5 in node
+ TEXT
+ content=anced test
+
+
+========================
+Expression: xpointer(string-range(//seq, ''))
+Object is a Location Set:
+1 : Object is a collapsed range :
+ index 1 in node
+ TEXT
+ content=123
+2 : Object is a collapsed range :
+ index 2 in node
+ TEXT
+ content=123
+3 : Object is a collapsed range :
+ index 3 in node
+ TEXT
+ content=123
+4 : Object is a collapsed range :
+ index 4 in node
+ TEXT
+ content=123
diff --git a/result/XPath/xptr/strrange2 b/result/XPath/xptr/strrange2
new file mode 100644
index 0000000..ea6ee45
--- /dev/null
+++ b/result/XPath/xptr/strrange2
@@ -0,0 +1,64 @@
+
+========================
+Expression: xpointer(string-range(//p, 'test', 2))
+Object is a Location Set:
+1 : Object is a range :
+ From index 11 in node
+ TEXT
+ content=a simple test
+ To index 13 in node
+ TEXT
+ content=a simple test
+
+2 : Object is a range :
+ From index 11 in node
+ TEXT
+ content=multiple tests
+ To index 13 in node
+ TEXT
+ content=multiple tests
+
+3 : Object is a range :
+ From index 8 in node
+ TEXT
+ content=anced test
+ To index 10 in node
+ TEXT
+ content=anced test
+
+
+========================
+Expression: xpointer(string-range(//p, 'test', 2, 2))
+Object is a Location Set:
+1 : Object is a range :
+ From index 11 in node
+ TEXT
+ content=a simple test
+ To index 12 in node
+ TEXT
+ content=a simple test
+
+2 : Object is a range :
+ From index 11 in node
+ TEXT
+ content=multiple tests
+ To index 12 in node
+ TEXT
+ content=multiple tests
+
+3 : Object is a range :
+ From index 8 in node
+ TEXT
+ content=anced test
+ To index 9 in node
+ TEXT
+ content=anced test
+
+
+========================
+Expression: xpointer(string-range(//p, 'difficult', 1, 0))
+Object is a Location Set:
+1 : Object is a collapsed range :
+ index 3 in node
+ TEXT
+ content=a diff
diff --git a/result/XPath/xptr/strrange3 b/result/XPath/xptr/strrange3
new file mode 100644
index 0000000..6d3114a
--- /dev/null
+++ b/result/XPath/xptr/strrange3
@@ -0,0 +1,48 @@
+
+========================
+Expression: xpointer(string-range(//p, 'test', 1, 0))
+Object is a Location Set:
+1 : Object is a collapsed range :
+ index 10 in node
+ TEXT
+ content=a simple test
+2 : Object is a collapsed range :
+ index 10 in node
+ TEXT
+ content=multiple tests
+3 : Object is a collapsed range :
+ index 7 in node
+ TEXT
+ content=anced test
+
+========================
+Expression: xpointer(string-range(//*, 'test', 1, 0))
+Object is a Location Set:
+1 : Object is a collapsed range :
+ index 10 in node
+ TEXT
+ content=a simple test
+2 : Object is a collapsed range :
+ index 10 in node
+ TEXT
+ content=multiple tests
+3 : Object is a collapsed range :
+ index 7 in node
+ TEXT
+ content=anced test
+
+========================
+Expression: xpointer(string-range(//p, 'test', 1, 0)[2])
+Object is a Location Set:
+1 : Object is a collapsed range :
+ index 10 in node
+ TEXT
+ content=multiple tests
+
+========================
+Expression: xpointer(string-range(//*, 'test', 1, 0)[2])
+Object is a Location Set:
+1 : Object is a collapsed range :
+ index 10 in node
+ TEXT
+ content=multiple tests
diff --git a/result/XPath/xptr/vidbase b/result/XPath/xptr/vidbase
new file mode 100644
index 0000000..8b9e92d
--- /dev/null
+++ b/result/XPath/xptr/vidbase
@@ -0,0 +1,19 @@
+
+========================
+Expression: xpointer(id('chapter1')/p)
+Object is a Node Set :
+Set contains 4 nodes:
+1 ELEMENT p
+2 ELEMENT p
+3 ELEMENT p
+4 ELEMENT p
+
+========================
+Expression: xpointer(id('chapter1')/p[1]/range-to(following-sibling::p[2]))
+Object is a Location Set:
+1 : Object is a range :
+ From node
+ ELEMENT p
+ To node
+ ELEMENT p
+
diff --git a/result/XPath/xptr/vidchildseq b/result/XPath/xptr/vidchildseq
new file mode 100644
index 0000000..eb8c5f7
--- /dev/null
+++ b/result/XPath/xptr/vidchildseq
@@ -0,0 +1,36 @@
+
+========================
+Expression: /1/2/3
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: element(/1/2/3)
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: chapter1/3
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
+
+========================
+Expression: element(chapter1/3)
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT image
+ ATTRIBUTE href
+ TEXT
+ content=linus.gif
diff --git a/result/XPath/xptr/vidparts b/result/XPath/xptr/vidparts
new file mode 100644
index 0000000..bd5bd3c
--- /dev/null
+++ b/result/XPath/xptr/vidparts
@@ -0,0 +1,27 @@
+
+========================
+Expression: xpointer(id("chapter1"))
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+
+========================
+Expression: xpointer(//*[@id="chapter1"])
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
+
+========================
+Expression: xpointer(id("chapter1"))xpointer(//*[@id="chapter1"])
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT chapter
+ ATTRIBUTE id
+ TEXT
+ content=chapter1
diff --git a/result/att1 b/result/att1
new file mode 100644
index 0000000..00aa6be
--- /dev/null
+++ b/result/att1
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc attr="to normalize with a space"/>
diff --git a/result/att1.rde b/result/att1.rde
new file mode 100644
index 0000000..9f92263
--- /dev/null
+++ b/result/att1.rde
@@ -0,0 +1 @@
+0 1 doc 1 0
diff --git a/result/att1.rdr b/result/att1.rdr
new file mode 100644
index 0000000..9f92263
--- /dev/null
+++ b/result/att1.rdr
@@ -0,0 +1 @@
+0 1 doc 1 0
diff --git a/result/att1.sax b/result/att1.sax
new file mode 100644
index 0000000..e19a8a7
--- /dev/null
+++ b/result/att1.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(doc, attr='to normalize with a space')
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/att1.sax2 b/result/att1.sax2
new file mode 100644
index 0000000..76ba131
--- /dev/null
+++ b/result/att1.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(doc, NULL, NULL, 0, 1, 0, attr='to n...', 28)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att10 b/result/att10
new file mode 100644
index 0000000..5b29bf8
--- /dev/null
+++ b/result/att10
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (tst)*>
+<!ELEMENT tst (#PCDATA)>
+<!ATTLIST tst a NMTOKENS #IMPLIED>
+<!ATTLIST tst b CDATA #IMPLIED>
+<!ENTITY d "&#xD;">
+<!ENTITY a "&#xA;">
+<!ENTITY da "&#xD;&#xA;">
+]>
+<doc>
+<tst a="xyz" b=" xyz"/>
+<tst a="&d;&d;A&a; &a;B&da;" b="&d;&d;A&a; &a;B&da;"/>
+<tst a="&#13;&#13;A&#10;&#10;B&#13;&#10;" b="&#13;&#13;A&#10;&#10;B&#13;&#10;"/>
+<tst a="x y" b=" x y "/>
+<tst a="a b" b=" a b "/>
+<tst a="a b" b=" a b "/>
+</doc>
diff --git a/result/att10.rde b/result/att10.rde
new file mode 100644
index 0000000..2ca7905
--- /dev/null
+++ b/result/att10.rde
@@ -0,0 +1,23 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/att10.rdr b/result/att10.rdr
new file mode 100644
index 0000000..2ca7905
--- /dev/null
+++ b/result/att10.rdr
@@ -0,0 +1,23 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+1 1 tst 1 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/att10.sax b/result/att10.sax
new file mode 100644
index 0000000..2df49a5
--- /dev/null
+++ b/result/att10.sax
@@ -0,0 +1,61 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(tst, 3, ...)
+SAX.attributeDecl(tst, a, 8, 3, NULL, ...)
+SAX.attributeDecl(tst, b, 1, 3, NULL, ...)
+SAX.entityDecl(d, 1, (null), (null), )
+SAX.getEntity(d)
+SAX.entityDecl(a, 1, (null), (null),
+)
+SAX.getEntity(a)
+SAX.entityDecl(da, 1, (null), (null),
+)
+SAX.getEntity(da)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.startElement(tst, a=' xyz', b=' xyz')
+SAX.endElement(tst)
+SAX.characters(
+, 1)
+SAX.getEntity(d)
+SAX.getEntity(d)
+SAX.getEntity(a)
+SAX.getEntity(a)
+SAX.getEntity(da)
+SAX.getEntity(d)
+SAX.getEntity(d)
+SAX.getEntity(a)
+SAX.getEntity(a)
+SAX.getEntity(da)
+SAX.startElement(tst, a='&d;&d;A&a; &a;B&da;', b='&d;&d;A&a; &a;B&da;')
+SAX.endElement(tst)
+SAX.characters(
+, 1)
+SAX.startElement(tst, a=' A
+
+B
+', b=' A
+
+B
+')
+SAX.endElement(tst)
+SAX.characters(
+, 1)
+SAX.startElement(tst, a=' x y ', b=' x y ')
+SAX.endElement(tst)
+SAX.characters(
+, 1)
+SAX.startElement(tst, a=' a b ', b=' a b ')
+SAX.endElement(tst)
+SAX.characters(
+, 1)
+SAX.startElement(tst, a=' a b ', b=' a b ')
+SAX.endElement(tst)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/att10.sax2 b/result/att10.sax2
new file mode 100644
index 0000000..7c6f61d
--- /dev/null
+++ b/result/att10.sax2
@@ -0,0 +1,57 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(tst, 3, ...)
+SAX.attributeDecl(tst, a, 8, 3, NULL, ...)
+SAX.attributeDecl(tst, b, 1, 3, NULL, ...)
+SAX.entityDecl(d, 1, (null), (null), )
+SAX.getEntity(d)
+SAX.entityDecl(a, 1, (null), (null),
+)
+SAX.getEntity(a)
+SAX.entityDecl(da, 1, (null), (null),
+)
+SAX.getEntity(da)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(tst, NULL, NULL, 0, 2, 0, a='xyz"...', 3, b=' xy...', 5)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.getEntity(d)
+SAX.getEntity(d)
+SAX.getEntity(a)
+SAX.getEntity(a)
+SAX.getEntity(da)
+SAX.getEntity(d)
+SAX.getEntity(d)
+SAX.getEntity(a)
+SAX.getEntity(a)
+SAX.getEntity(da)
+SAX.startElementNs(tst, NULL, NULL, 0, 2, 0, a='&d;&...', 19, b='&d;&...', 19)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(tst, NULL, NULL, 0, 2, 0, a=' A
+...', 8, b=' A
+...', 8)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(tst, NULL, NULL, 0, 2, 0, a='x y...', 3, b=' x ...', 6)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(tst, NULL, NULL, 0, 2, 0, a='a b ...', 3, b=' a b...', 5)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(tst, NULL, NULL, 0, 2, 0, a='a b...', 3, b=' a ...', 8)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att11 b/result/att11
new file mode 100644
index 0000000..121b06d
--- /dev/null
+++ b/result/att11
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE attributes [
+<!ELEMENT attributes EMPTY>
+<!ATTLIST attributes nmtoken NMTOKEN #IMPLIED>
+<!ATTLIST attributes nmtokens NMTOKENS #IMPLIED>
+<!ENTITY ent " entity&recursive; ">
+<!ENTITY recursive "reference">
+]>
+<attributes nmtoken="&ent; &ent; &ent;" nmtokens="Test&#13;&#10; this normalization"/>
diff --git a/result/att11.rde b/result/att11.rde
new file mode 100644
index 0000000..cc83bea
--- /dev/null
+++ b/result/att11.rde
@@ -0,0 +1,2 @@
+0 10 attributes 0 0
+0 1 attributes 1 0
diff --git a/result/att11.rdr b/result/att11.rdr
new file mode 100644
index 0000000..cc83bea
--- /dev/null
+++ b/result/att11.rdr
@@ -0,0 +1,2 @@
+0 10 attributes 0 0
+0 1 attributes 1 0
diff --git a/result/att11.sax b/result/att11.sax
new file mode 100644
index 0000000..52d2861
--- /dev/null
+++ b/result/att11.sax
@@ -0,0 +1,19 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(attributes, , )
+SAX.elementDecl(attributes, 1, ...)
+SAX.attributeDecl(attributes, nmtoken, 7, 3, NULL, ...)
+SAX.attributeDecl(attributes, nmtokens, 8, 3, NULL, ...)
+SAX.entityDecl(ent, 1, (null), (null), entity&recursive; )
+SAX.getEntity(ent)
+SAX.entityDecl(recursive, 1, (null), (null), reference)
+SAX.getEntity(recursive)
+SAX.externalSubset(attributes, , )
+SAX.getEntity(ent)
+SAX.getEntity(recursive)
+SAX.getEntity(ent)
+SAX.getEntity(ent)
+SAX.startElement(attributes, nmtoken=' &ent; &ent; &ent; ', nmtokens=' Test
+ this normalization ')
+SAX.endElement(attributes)
+SAX.endDocument()
diff --git a/result/att11.sax2 b/result/att11.sax2
new file mode 100644
index 0000000..3e8cfd9
--- /dev/null
+++ b/result/att11.sax2
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(attributes, , )
+SAX.elementDecl(attributes, 1, ...)
+SAX.attributeDecl(attributes, nmtoken, 7, 3, NULL, ...)
+SAX.attributeDecl(attributes, nmtokens, 8, 3, NULL, ...)
+SAX.entityDecl(ent, 1, (null), (null), entity&recursive; )
+SAX.getEntity(ent)
+SAX.entityDecl(recursive, 1, (null), (null), reference)
+SAX.getEntity(recursive)
+SAX.externalSubset(attributes, , )
+SAX.getEntity(ent)
+SAX.getEntity(recursive)
+SAX.getEntity(ent)
+SAX.getEntity(ent)
+SAX.startElementNs(attributes, NULL, NULL, 0, 2, 0, nmtoken='&ent...', 17, nmtokens='Test...', 25)
+SAX.endElementNs(attributes, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att2 b/result/att2
new file mode 100644
index 0000000..28989a2
--- /dev/null
+++ b/result/att2
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc attr="to normalize with a space"/>
diff --git a/result/att2.rde b/result/att2.rde
new file mode 100644
index 0000000..9f92263
--- /dev/null
+++ b/result/att2.rde
@@ -0,0 +1 @@
+0 1 doc 1 0
diff --git a/result/att2.rdr b/result/att2.rdr
new file mode 100644
index 0000000..9f92263
--- /dev/null
+++ b/result/att2.rdr
@@ -0,0 +1 @@
+0 1 doc 1 0
diff --git a/result/att2.sax b/result/att2.sax
new file mode 100644
index 0000000..02ca320
--- /dev/null
+++ b/result/att2.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(doc, attr='to normalize with a space')
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/att2.sax2 b/result/att2.sax2
new file mode 100644
index 0000000..84aebcb
--- /dev/null
+++ b/result/att2.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(doc, NULL, NULL, 0, 1, 0, attr='to n...', 27)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att3 b/result/att3
new file mode 100644
index 0000000..3f3ac5c
--- /dev/null
+++ b/result/att3
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<select onclick="aaaa&#10; bbbb&#xA0;">f&#xA0;oo</select>
diff --git a/result/att3.rde b/result/att3.rde
new file mode 100644
index 0000000..d1e72cc
--- /dev/null
+++ b/result/att3.rde
@@ -0,0 +1,3 @@
+0 1 select 0 0
+1 3 #text 0 1 f oo
+0 15 select 0 0
diff --git a/result/att3.rdr b/result/att3.rdr
new file mode 100644
index 0000000..d1e72cc
--- /dev/null
+++ b/result/att3.rdr
@@ -0,0 +1,3 @@
+0 1 select 0 0
+1 3 #text 0 1 f oo
+0 15 select 0 0
diff --git a/result/att3.sax b/result/att3.sax
new file mode 100644
index 0000000..eec0959
--- /dev/null
+++ b/result/att3.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(select, onclick='aaaa
+ bbbb ')
+SAX.characters(f, 1)
+SAX.characters( , 2)
+SAX.characters(oo, 2)
+SAX.endElement(select)
+SAX.endDocument()
diff --git a/result/att3.sax2 b/result/att3.sax2
new file mode 100644
index 0000000..8e7ca86
--- /dev/null
+++ b/result/att3.sax2
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(select, NULL, NULL, 0, 1, 0, onclick='aaaa...', 17)
+SAX.characters(f, 1)
+SAX.characters( , 2)
+SAX.characters(oo, 2)
+SAX.endElementNs(select, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att4 b/result/att4
new file mode 100644
index 0000000..882cea7
--- /dev/null
+++ b/result/att4
@@ -0,0 +1,9264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC) -->
+<electroxml modified="20021216T072726">
+ <data from="20021031T22" to="20021130T22">
+ <select>
+ <device serialnumb="E00003562">
+ <par memind="113400" h="3dc1a8de">
+ <val o="0" v="53"/>
+ <val o="e08" v="53"/>
+ <val o="1c32" v="53"/>
+ <val o="2a3c" v="53"/>
+ <val o="3835" v="53"/>
+ <val o="4645" v="53"/>
+ <val o="5455" v="53"/>
+ <val o="6265" v="53"/>
+ <val o="7075" v="53"/>
+ <val o="7e85" v="53"/>
+ <val o="8c96" v="53"/>
+ <val o="9aa5" v="53"/>
+ <val o="a8b6" v="53"/>
+ <val o="b6c5" v="53"/>
+ <val o="c4d7" v="53"/>
+ <val o="d30b" v="53"/>
+ <val o="e0f6" v="53"/>
+ <val o="ef06" v="53"/>
+ <val o="fd17" v="53"/>
+ <val o="10b27" v="53"/>
+ <val o="11937" v="53"/>
+ <val o="12746" v="53"/>
+ <val o="13556" v="53"/>
+ <val o="14366" v="53"/>
+ <val o="15181" v="53"/>
+ <val o="15f85" v="53"/>
+ <val o="16d95" v="53"/>
+ <val o="17ba4" v="53"/>
+ <val o="189b5" v="53"/>
+ <val o="197c4" v="53"/>
+ <val o="1a5d5" v="53"/>
+ <val o="1b3e6" v="53"/>
+ <val o="1c1f6" v="53"/>
+ <val o="1d005" v="53"/>
+ <val o="1de15" v="53"/>
+ <val o="1ec25" v="53"/>
+ <val o="1fa36" v="53"/>
+ <val o="20845" v="53"/>
+ <val o="21656" v="53"/>
+ <val o="22465" v="53"/>
+ <val o="23276" v="53"/>
+ <val o="24086" v="53"/>
+ <val o="24e99" v="53"/>
+ <val o="25ca7" v="53"/>
+ <val o="26ab7" v="53"/>
+ <val o="278c6" v="53"/>
+ <val o="286d6" v="53"/>
+ <val o="294e6" v="53"/>
+ <val o="2a301" v="53"/>
+ <val o="2b105" v="53"/>
+ <val o="2bf15" v="53"/>
+ <val o="2cd25" v="53"/>
+ <val o="2db35" v="53"/>
+ <val o="2e946" v="53"/>
+ <val o="2f755" v="53"/>
+ <val o="30566" v="53"/>
+ <val o="31375" v="53"/>
+ <val o="3219e" v="53"/>
+ <val o="32f96" v="53"/>
+ <val o="33da6" v="53"/>
+ <val o="34bb6" v="53"/>
+ <val o="359de" v="53"/>
+ <val o="367d6" v="53"/>
+ <val o="375e6" v="53"/>
+ <val o="3840e" v="53"/>
+ <val o="3921e" v="53"/>
+ <val o="3a016" v="53"/>
+ <val o="3ae27" v="53"/>
+ <val o="3bc36" v="53"/>
+ <val o="3ca47" v="53"/>
+ <val o="3d856" v="53"/>
+ <val o="3e667" v="53"/>
+ <val o="3f481" v="53"/>
+ <val o="40285" v="53"/>
+ <val o="41095" v="53"/>
+ <val o="41ea5" v="53"/>
+ <val o="42cb5" v="53"/>
+ <val o="43ac5" v="53"/>
+ <val o="448d5" v="53"/>
+ <val o="456e6" v="53"/>
+ <val o="464f5" v="53"/>
+ <val o="480ff" v="53"/>
+ <val o="48f0e" v="53"/>
+ <val o="49d1d" v="53"/>
+ <val o="4ab46" v="53"/>
+ <val o="4b955" v="53"/>
+ <val o="4c769" v="53"/>
+ <val o="4d577" v="53"/>
+ <val o="4e387" v="53"/>
+ <val o="4f196" v="53"/>
+ <val o="4ffa6" v="53"/>
+ <val o="50dd0" v="53"/>
+ <val o="51bc6" v="53"/>
+ <val o="529d6" v="53"/>
+ <val o="537e7" v="53"/>
+ <val o="54600" v="53"/>
+ <val o="55406" v="53"/>
+ <val o="56215" v="53"/>
+ <val o="57026" v="53"/>
+ <val o="57e36" v="53"/>
+ <val o="58c46" v="53"/>
+ <val o="59a70" v="53"/>
+ <val o="5a867" v="53"/>
+ <val o="5b676" v="53"/>
+ <val o="5c487" v="53"/>
+ <val o="5d296" v="53"/>
+ <val o="5e0a9" v="53"/>
+ <val o="5eeb8" v="53"/>
+ <val o="5fcc6" v="53"/>
+ <val o="60ad7" v="53"/>
+ <val o="618e7" v="53"/>
+ <val o="626f7" v="53"/>
+ <val o="63507" v="53"/>
+ <val o="64317" v="53"/>
+ <val o="65127" v="53"/>
+ <val o="65f37" v="53"/>
+ <val o="66d46" v="53"/>
+ <val o="67b57" v="53"/>
+ <val o="68967" v="53"/>
+ <val o="69782" v="53"/>
+ <val o="6a586" v="53"/>
+ <val o="6b395" v="53"/>
+ <val o="6c1a6" v="53"/>
+ <val o="6cfb5" v="53"/>
+ <val o="6ddc6" v="53"/>
+ <val o="6ebd6" v="53"/>
+ <val o="6f9e6" v="53"/>
+ <val o="707f6" v="53"/>
+ <val o="71607" v="53"/>
+ <val o="72417" v="53"/>
+ <val o="73227" v="53"/>
+ <val o="74037" v="53"/>
+ <val o="74e47" v="53"/>
+ <val o="75c57" v="53"/>
+ <val o="76a63" v="53"/>
+ <val o="77873" v="53"/>
+ <val o="78680" v="53"/>
+ <val o="7948f" v="53"/>
+ <val o="7a29f" v="53"/>
+ <val o="7b0af" v="53"/>
+ <val o="7bebf" v="53"/>
+ <val o="7cccf" v="53"/>
+ <val o="7dadf" v="53"/>
+ <val o="7e8fa" v="53"/>
+ <val o="7f70a" v="53"/>
+ <val o="8051a" v="53"/>
+ <val o="8132a" v="53"/>
+ <val o="8213a" v="53"/>
+ <val o="82f4a" v="53"/>
+ <val o="83d5a" v="53"/>
+ <val o="84b6a" v="53"/>
+ <val o="8597a" v="53"/>
+ <val o="8678b" v="53"/>
+ <val o="8759b" v="53"/>
+ <val o="883ac" v="53"/>
+ <val o="891bb" v="53"/>
+ <val o="89fca" v="53"/>
+ <val o="8adda" v="53"/>
+ <val o="8bbeb" v="53"/>
+ <val o="8c9fc" v="53"/>
+ <val o="8d80b" v="53"/>
+ <val o="8e61a" v="53"/>
+ <val o="8f42a" v="53"/>
+ <val o="9023a" v="53"/>
+ <val o="9104a" v="53"/>
+ <val o="91e5a" v="53"/>
+ <val o="92c6a" v="53"/>
+ <val o="93a84" v="53"/>
+ <val o="94885" v="53"/>
+ <val o="95694" v="53"/>
+ <val o="964a5" v="53"/>
+ <val o="972b4" v="53"/>
+ <val o="980c5" v="53"/>
+ <val o="98ed4" v="53"/>
+ <val o="99ce5" v="53"/>
+ <val o="9aaf5" v="53"/>
+ <val o="9b906" v="53"/>
+ <val o="9c716" v="53"/>
+ <val o="9d526" v="53"/>
+ <val o="9e336" v="53"/>
+ <val o="9f145" v="53"/>
+ <val o="9ff56" v="53"/>
+ <val o="a0d65" v="53"/>
+ <val o="a1b77" v="53"/>
+ <val o="a2986" v="53"/>
+ <val o="a3795" v="53"/>
+ <val o="a45a7" v="53"/>
+ <val o="a53b6" v="53"/>
+ <val o="a61c7" v="53"/>
+ <val o="a6fd6" v="53"/>
+ <val o="a7e00" v="53"/>
+ <val o="a8c00" v="53"/>
+ <val o="a9a05" v="53"/>
+ <val o="aa815" v="53"/>
+ <val o="ab625" v="53"/>
+ <val o="ac435" v="53"/>
+ <val o="ad245" v="53"/>
+ <val o="ae055" v="53"/>
+ <val o="aee65" v="53"/>
+ <val o="afc75" v="53"/>
+ <val o="b0a85" v="53"/>
+ <val o="b26a6" v="53"/>
+ <val o="b34b6" v="53"/>
+ <val o="b42c6" v="53"/>
+ <val o="b50d6" v="53"/>
+ <val o="b5ee7" v="53"/>
+ <val o="b6cf6" v="53"/>
+ <val o="b7b07" v="53"/>
+ <val o="b8917" v="53"/>
+ <val o="b9728" v="53"/>
+ <val o="ba537" v="53"/>
+ <val o="bb347" v="53"/>
+ <val o="bc157" v="53"/>
+ <val o="bcf67" v="53"/>
+ <val o="bdd81" v="53"/>
+ <val o="beb86" v="53"/>
+ <val o="bf995" v="53"/>
+ <val o="c07a6" v="53"/>
+ <val o="c15b5" v="53"/>
+ <val o="c23c6" v="53"/>
+ <val o="c31d5" v="53"/>
+ <val o="c3fe6" v="53"/>
+ <val o="c4df5" v="53"/>
+ <val o="c5c06" v="53"/>
+ <val o="c6a16" v="53"/>
+ <val o="c7826" v="53"/>
+ <val o="c8636" v="53"/>
+ <val o="c9446" v="53"/>
+ <val o="ca256" v="53"/>
+ <val o="cb066" v="53"/>
+ <val o="cbe76" v="53"/>
+ <val o="ccc87" v="53"/>
+ <val o="cda96" v="53"/>
+ <val o="ce8a8" v="53"/>
+ <val o="cf6b7" v="53"/>
+ <val o="d04c8" v="53"/>
+ <val o="d12d7" v="53"/>
+ <val o="d20e7" v="53"/>
+ <val o="d2f02" v="53"/>
+ <val o="d3d05" v="53"/>
+ <val o="d4b15" v="53"/>
+ <val o="d5926" v="53"/>
+ <val o="d6735" v="53"/>
+ <val o="d7546" v="53"/>
+ <val o="d8355" v="53"/>
+ <val o="d9166" v="53"/>
+ <val o="d9f75" v="53"/>
+ <val o="dad87" v="53"/>
+ <val o="dbb97" v="53"/>
+ <val o="dc9a8" v="53"/>
+ <val o="dd7b7" v="53"/>
+ <val o="de5c6" v="53"/>
+ <val o="df3d7" v="53"/>
+ <val o="e01d7" v="53"/>
+ <val o="e0fe5" v="53"/>
+ <val o="e1df5" v="53"/>
+ <val o="e2c04" v="53"/>
+ <val o="e3a14" v="53"/>
+ <val o="e4824" v="53"/>
+ <val o="e5634" v="53"/>
+ <val o="e6444" v="53"/>
+ <val o="e7255" v="53"/>
+ <val o="e806f" v="53"/>
+ <val o="e8e7f" v="53"/>
+ <val o="e9c8e" v="53"/>
+ <val o="eaa9f" v="53"/>
+ <val o="eb8ae" v="53"/>
+ <val o="ec6bf" v="53"/>
+ <val o="ed4ce" v="53"/>
+ <val o="ee2df" v="53"/>
+ <val o="ef0ef" v="53"/>
+ <val o="eff01" v="53"/>
+ <val o="f0d10" v="53"/>
+ <val o="f1b20" v="53"/>
+ <val o="f2930" v="53"/>
+ <val o="f3740" v="53"/>
+ <val o="f4551" v="53"/>
+ <val o="f5361" v="53"/>
+ <val o="f6172" v="53"/>
+ <val o="f6f80" v="53"/>
+ <val o="f7d91" v="53"/>
+ <val o="f8ba1" v="53"/>
+ <val o="f99b1" v="53"/>
+ <val o="fa7c0" v="53"/>
+ <val o="fb5d1" v="53"/>
+ <val o="fc3e0" v="53"/>
+ <val o="fd1fb" v="53"/>
+ <val o="fe00b" v="53"/>
+ <val o="fee1c" v="53"/>
+ <val o="ffc2c" v="53"/>
+ <val o="100a3b" v="53"/>
+ <val o="10184c" v="53"/>
+ <val o="10265b" v="53"/>
+ <val o="10346c" v="53"/>
+ <val o="10427b" v="53"/>
+ <val o="10508d" v="53"/>
+ <val o="105e9d" v="53"/>
+ <val o="106cad" v="53"/>
+ <val o="107abd" v="53"/>
+ <val o="1088cd" v="53"/>
+ <val o="1096de" v="53"/>
+ <val o="10a4ed" v="53"/>
+ <val o="10b2fe" v="53"/>
+ <val o="10c10d" v="53"/>
+ <val o="10cf1e" v="53"/>
+ <val o="10dd2e" v="53"/>
+ <val o="10eb66" v="53"/>
+ <val o="10f94e" v="53"/>
+ <val o="11075e" v="53"/>
+ <val o="11156d" v="53"/>
+ <val o="112388" v="53"/>
+ <val o="113187" v="53"/>
+ <val o="113fb0" v="53"/>
+ <val o="114da6" v="53"/>
+ <val o="115bb6" v="53"/>
+ <val o="1169c6" v="53"/>
+ <val o="1177d6" v="53"/>
+ <val o="1185e8" v="53"/>
+ <val o="1193f7" v="53"/>
+ <val o="11a208" v="53"/>
+ <val o="11b017" v="53"/>
+ <val o="11be2f" v="53"/>
+ <val o="11cc37" v="53"/>
+ <val o="11da47" v="53"/>
+ <val o="11e857" v="53"/>
+ <val o="11f667" v="53"/>
+ <val o="120578" v="53"/>
+ <val o="121386" v="53"/>
+ <val o="122196" v="53"/>
+ <val o="122fa6" v="53"/>
+ <val o="123db5" v="53"/>
+ <val o="124bc5" v="53"/>
+ <val o="1259d5" v="53"/>
+ <val o="1267e4" v="53"/>
+ <val o="127600" v="53"/>
+ <val o="128305" v="53"/>
+ <val o="129115" v="53"/>
+ <val o="129f25" v="53"/>
+ <val o="12ad35" v="53"/>
+ <val o="12bb45" v="53"/>
+ <val o="12c954" v="53"/>
+ <val o="12d766" v="53"/>
+ <val o="12e575" v="53"/>
+ <val o="12f386" v="53"/>
+ <val o="130196" v="53"/>
+ <val o="130fa6" v="53"/>
+ <val o="131db7" v="53"/>
+ <val o="132bc5" v="53"/>
+ <val o="1339d4" v="53"/>
+ <val o="1347e5" v="53"/>
+ <val o="1355f4" v="53"/>
+ <val o="136404" v="53"/>
+ <val o="137214" v="53"/>
+ <val o="138024" v="53"/>
+ <val o="138e33" v="53"/>
+ <val o="139c44" v="53"/>
+ <val o="13aa54" v="53"/>
+ <val o="13b865" v="53"/>
+ <val o="13c67e" v="53"/>
+ <val o="13d48e" v="53"/>
+ <val o="13e29e" v="53"/>
+ <val o="13f0ae" v="53"/>
+ <val o="13febf" v="53"/>
+ <val o="140ccf" v="53"/>
+ <val o="141adf" v="53"/>
+ <val o="1428ef" v="53"/>
+ <val o="1436ff" v="53"/>
+ <val o="14450f" v="53"/>
+ <val o="14531f" v="53"/>
+ <val o="146130" v="53"/>
+ <val o="146f40" v="53"/>
+ <val o="147d44" v="53"/>
+ <val o="148b57" v="53"/>
+ <val o="149965" v="53"/>
+ <val o="14a775" v="53"/>
+ <val o="14b584" v="53"/>
+ <val o="14c397" v="53"/>
+ <val o="14d1a4" v="53"/>
+ <val o="14dfb6" v="53"/>
+ <val o="14edc5" v="53"/>
+ <val o="14fbd5" v="53"/>
+ <val o="1509e5" v="53"/>
+ <val o="1517ff" v="53"/>
+ <val o="152605" v="53"/>
+ <val o="153415" v="53"/>
+ <val o="154225" v="53"/>
+ <val o="155035" v="53"/>
+ <val o="155e45" v="53"/>
+ <val o="156c55" v="53"/>
+ <val o="157a65" v="53"/>
+ <val o="158875" v="53"/>
+ <val o="159686" v="53"/>
+ <val o="15a495" v="53"/>
+ <val o="15b2a6" v="53"/>
+ <val o="15c0b6" v="53"/>
+ <val o="15cec6" v="53"/>
+ <val o="15dcd5" v="53"/>
+ <val o="15eae6" v="53"/>
+ <val o="15f8f5" v="53"/>
+ <val o="160706" v="53"/>
+ <val o="161517" v="53"/>
+ <val o="162326" v="53"/>
+ <val o="163137" v="53"/>
+ <val o="163f46" v="53"/>
+ <val o="164d57" v="53"/>
+ <val o="165b67" v="53"/>
+ <val o="166982" v="53"/>
+ <val o="167786" v="53"/>
+ <val o="168596" v="53"/>
+ <val o="1693a6" v="53"/>
+ <val o="16a1b5" v="53"/>
+ <val o="16afc6" v="53"/>
+ <val o="16bdd5" v="53"/>
+ <val o="16cbe6" v="53"/>
+ <val o="16d9f6" v="53"/>
+ <val o="16e807" v="53"/>
+ <val o="16f616" v="53"/>
+ <val o="170429" v="53"/>
+ <val o="171236" v="53"/>
+ <val o="172047" v="53"/>
+ <val o="172e57" v="53"/>
+ <val o="173c67" v="53"/>
+ <val o="174a77" v="53"/>
+ <val o="175887" v="53"/>
+ <val o="176694" v="53"/>
+ <val o="1774a3" v="53"/>
+ <val o="1782b3" v="53"/>
+ <val o="1790c5" v="53"/>
+ <val o="179ed4" v="53"/>
+ <val o="17ace4" v="53"/>
+ <val o="17bafd" v="53"/>
+ <val o="17c90f" v="53"/>
+ <val o="17d71e" v="53"/>
+ <val o="17e52f" v="53"/>
+ <val o="17f33f" v="53"/>
+ <val o="18014f" v="53"/>
+ <val o="180f5f" v="53"/>
+ <val o="181d6e" v="53"/>
+ <val o="182b7f" v="53"/>
+ <val o="18398f" v="53"/>
+ <val o="1847a1" v="53"/>
+ <val o="1855af" v="53"/>
+ <val o="1863c0" v="53"/>
+ <val o="1871cf" v="53"/>
+ <val o="187fe0" v="53"/>
+ <val o="188def" v="53"/>
+ <val o="189c00" v="53"/>
+ <val o="18b80d" v="53"/>
+ <val o="18c61c" v="53"/>
+ <val o="18d42c" v="53"/>
+ <val o="18e23b" v="53"/>
+ <val o="18f04b" v="53"/>
+ <val o="18fe5e" v="53"/>
+ <val o="190c76" v="53"/>
+ <val o="191a86" v="53"/>
+ <val o="192896" v="53"/>
+ <val o="1936a6" v="53"/>
+ <val o="1944b7" v="53"/>
+ <val o="1952c6" v="53"/>
+ <val o="1960d7" v="53"/>
+ <val o="196ee6" v="53"/>
+ <val o="197cf8" v="53"/>
+ <val o="198b0f" v="53"/>
+ <val o="19991f" v="53"/>
+ <val o="19b541" v="53"/>
+ <val o="19c34d" v="53"/>
+ <val o="19d15e" v="53"/>
+ <val o="19df80" v="53"/>
+ <val o="19ed90" v="53"/>
+ <val o="19eebe" v="53"/>
+ <val o="19fb8e" v="53"/>
+ <val o="1a09a0" v="53"/>
+ <val o="1a17ae" v="53"/>
+ <val o="1a25be" v="53"/>
+ <val o="1a33cd" v="53"/>
+ <val o="1a41dd" v="53"/>
+ <val o="1a4fed" v="53"/>
+ <val o="1a5e08" v="53"/>
+ <val o="1a6c05" v="53"/>
+ <val o="1a7a15" v="53"/>
+ <val o="1a8826" v="53"/>
+ <val o="1a9637" v="53"/>
+ <val o="1aa445" v="53"/>
+ <val o="1ab255" v="53"/>
+ <val o="1ac065" v="53"/>
+ <val o="1ace75" v="53"/>
+ <val o="1adc87" v="53"/>
+ <val o="1aea96" v="53"/>
+ <val o="1af8a7" v="53"/>
+ <val o="1b06b7" v="53"/>
+ <val o="1b14c6" v="53"/>
+ <val o="1c7460" v="55"/>
+ <val o="1c8270" v="55"/>
+ <val o="1c907e" v="55"/>
+ <val o="1c9e8f" v="55"/>
+ <val o="1caca2" v="55"/>
+ <val o="1cbab1" v="55"/>
+ <val o="1cc8c1" v="55"/>
+ <val o="1cd6d0" v="55"/>
+ <val o="1ce4de" v="55"/>
+ <val o="1cf2f0" v="55"/>
+ <val o="1d0109" v="55"/>
+ <val o="1d0f06" v="55"/>
+ <val o="1d1d15" v="55"/>
+ <val o="1d2b25" v="55"/>
+ <val o="1d3935" v="55"/>
+ <val o="1d4745" v="55"/>
+ <val o="1d5555" v="55"/>
+ <val o="1d6366" v="55"/>
+ <val o="1d7175" v="55"/>
+ <val o="1d7f86" v="55"/>
+ <val o="1d8d95" v="55"/>
+ <val o="1d9ba6" v="55"/>
+ <val o="1da9b6" v="55"/>
+ <val o="1db7c7" v="55"/>
+ <val o="1dc5d5" v="55"/>
+ <val o="1dd3e6" v="55"/>
+ <val o="1de1f5" v="55"/>
+ <val o="1df006" v="55"/>
+ <val o="1dfe16" v="55"/>
+ <val o="1e0c26" v="55"/>
+ <val o="1e1a36" v="55"/>
+ <val o="1e2847" v="55"/>
+ <val o="1e3659" v="55"/>
+ <val o="1e4467" v="55"/>
+ <val o="1e5281" v="55"/>
+ <val o="1e6086" v="55"/>
+ <val o="1e6e96" v="55"/>
+ <val o="1e7ca6" v="55"/>
+ <val o="1e8ab5" v="55"/>
+ <val o="1e98c6" v="55"/>
+ <val o="1ea6d5" v="55"/>
+ <val o="1eb4e6" v="55"/>
+ <val o="1ec2f6" v="55"/>
+ <val o="1ed106" v="55"/>
+ <val o="1edf16" v="55"/>
+ <val o="1eed26" v="55"/>
+ <val o="1efb36" v="55"/>
+ <val o="1f0946" v="55"/>
+ <val o="1f1756" v="55"/>
+ <val o="1f2566" v="55"/>
+ <val o="1f3376" v="55"/>
+ <val o="1f4187" v="55"/>
+ <val o="1f4f96" v="55"/>
+ <val o="1f5da7" v="55"/>
+ <val o="1f6bb6" v="55"/>
+ <val o="1f79c7" v="55"/>
+ <val o="1f87d6" v="55"/>
+ <val o="1f95e7" v="55"/>
+ <val o="1fa401" v="55"/>
+ <val o="1fb204" v="55"/>
+ <val o="1fc016" v="55"/>
+ <val o="1fce25" v="55"/>
+ <val o="1fdc35" v="55"/>
+ <val o="1fea45" v="55"/>
+ <val o="1ff855" v="55"/>
+ <val o="200665" v="55"/>
+ <val o="201475" v="55"/>
+ <val o="202286" v="55"/>
+ <val o="203095" v="55"/>
+ <val o="203ea5" v="55"/>
+ <val o="204cb6" v="55"/>
+ <val o="205ac6" v="55"/>
+ <val o="2068d6" v="55"/>
+ <val o="2076e6" v="55"/>
+ <val o="2084f6" v="55"/>
+ <val o="209306" v="55"/>
+ <val o="20a116" v="55"/>
+ <val o="20af26" v="55"/>
+ <val o="20bd37" v="55"/>
+ <val o="20cb46" v="55"/>
+ <val o="20d957" v="55"/>
+ <val o="20e767" v="55"/>
+ <val o="20f581" v="55"/>
+ <val o="210386" v="55"/>
+ <val o="211194" v="55"/>
+ <val o="211fa5" v="55"/>
+ <val o="212db5" v="55"/>
+ <val o="213bc5" v="55"/>
+ <val o="2149d6" v="55"/>
+ <val o="2157e5" v="55"/>
+ <val o="2165f6" v="55"/>
+ <val o="217406" v="55"/>
+ <val o="218217" v="55"/>
+ <val o="219026" v="55"/>
+ <val o="219e39" v="55"/>
+ <val o="21ac46" v="55"/>
+ <val o="21ba57" v="55"/>
+ <val o="21c867" v="55"/>
+ <val o="21d677" v="55"/>
+ <val o="21e487" v="55"/>
+ <val o="21f296" v="55"/>
+ <val o="2200a6" v="55"/>
+ <val o="220eb7" v="55"/>
+ <val o="221cc6" v="55"/>
+ <val o="222ad7" v="55"/>
+ <val o="2238e7" v="55"/>
+ <val o="224701" v="55"/>
+ <val o="225505" v="55"/>
+ <val o="226315" v="55"/>
+ <val o="227125" v="55"/>
+ <val o="227f35" v="55"/>
+ <val o="228d45" v="55"/>
+ <val o="229b54" v="55"/>
+ <val o="22a965" v="55"/>
+ <val o="22b776" v="55"/>
+ <val o="22c586" v="55"/>
+ <val o="22d397" v="55"/>
+ <val o="22e1a6" v="55"/>
+ <val o="22efb6" v="55"/>
+ <val o="22fdc7" v="55"/>
+ <val o="230bd7" v="55"/>
+ <val o="2319e6" v="55"/>
+ <val o="2327f6" v="55"/>
+ <val o="23361b" v="55"/>
+ <val o="234416" v="55"/>
+ <val o="235226" v="55"/>
+ <val o="236037" v="55"/>
+ <val o="236e46" v="55"/>
+ <val o="237c57" v="55"/>
+ <val o="238a66" v="55"/>
+ <val o="239881" v="55"/>
+ <val o="23a685" v="55"/>
+ <val o="23b495" v="55"/>
+ <val o="23c2a4" v="55"/>
+ <val o="23d0b5" v="55"/>
+ <val o="23dec4" v="55"/>
+ <val o="23ecd5" v="55"/>
+ <val o="23fae4" v="55"/>
+ <val o="2408f6" v="55"/>
+ <val o="241706" v="55"/>
+ <val o="242518" v="55"/>
+ <val o="243325" v="55"/>
+ <val o="244137" v="55"/>
+ <val o="244f46" v="55"/>
+ <val o="246b66" v="55"/>
+ <val o="247976" v="55"/>
+ <val o="248786" v="55"/>
+ <val o="24957e" v="55"/>
+ <val o="24a38f" v="55"/>
+ <val o="24b19c" v="55"/>
+ <val o="24bfac" v="55"/>
+ <val o="24cdbc" v="55"/>
+ <val o="24dbcd" v="55"/>
+ <val o="24e9e5" v="55"/>
+ <val o="24f808" v="55"/>
+ <val o="250616" v="55"/>
+ <val o="251426" v="55"/>
+ <val o="252236" v="55"/>
+ <val o="253047" v="55"/>
+ <val o="253e56" v="55"/>
+ <val o="254c67" v="55"/>
+ <val o="255a76" v="55"/>
+ <val o="256887" v="55"/>
+ <val o="257697" v="55"/>
+ <val o="2584a8" v="55"/>
+ <val o="2592b6" v="55"/>
+ <val o="25a0c7" v="55"/>
+ <val o="25aed7" v="55"/>
+ <val o="25bce7" v="55"/>
+ <val o="25caf8" v="55"/>
+ <val o="25d907" v="55"/>
+ <val o="25e718" v="55"/>
+ <val o="25f527" v="55"/>
+ <val o="260338" v="55"/>
+ <val o="261149" v="55"/>
+ <val o="261f59" v="55"/>
+ <val o="262d68" v="55"/>
+ <val o="263b83" v="55"/>
+ <val o="264986" v="55"/>
+ <val o="265795" v="55"/>
+ <val o="2665a6" v="55"/>
+ <val o="2673b5" v="55"/>
+ <val o="2681c6" v="55"/>
+ <val o="268fd5" v="55"/>
+ <val o="269de6" v="55"/>
+ <val o="26abf6" v="55"/>
+ <val o="26ba06" v="55"/>
+ <val o="26c817" v="55"/>
+ <val o="26d62b" v="55"/>
+ <val o="26e436" v="55"/>
+ <val o="26f247" v="55"/>
+ <val o="270057" v="55"/>
+ <val o="270e67" v="55"/>
+ <val o="271c77" v="55"/>
+ <val o="272a87" v="55"/>
+ <val o="273897" v="55"/>
+ <val o="2746a8" v="55"/>
+ <val o="2754b9" v="55"/>
+ <val o="2762c7" v="55"/>
+ <val o="2770d8" v="55"/>
+ <val o="277ee7" v="55"/>
+ </par>
+ <par memind="16936600" h="3dc1a8de">
+ <val o="0" v="196.4"/>
+ <val o="e08" v="199.5"/>
+ <val o="1c32" v="200.8"/>
+ <val o="2a3c" v="201.8"/>
+ <val o="3835" v="199.9"/>
+ <val o="4645" v="197.9"/>
+ <val o="5455" v="193.2"/>
+ <val o="6265" v="197.6"/>
+ <val o="7075" v="195.6"/>
+ <val o="7e85" v="192.7"/>
+ <val o="8c96" v="195.3"/>
+ <val o="9aa5" v="195.4"/>
+ <val o="a8b6" v="195.6"/>
+ <val o="b6c5" v="197.3"/>
+ <val o="c4d7" v="222.6"/>
+ <val o="d30b" v="220.9"/>
+ <val o="e0f6" v="222.8"/>
+ <val o="ef06" v="180"/>
+ <val o="fd17" v="180"/>
+ <val o="10b27" v="221.4"/>
+ <val o="11937" v="222.2"/>
+ <val o="12746" v="222.5"/>
+ <val o="13556" v="220.5"/>
+ <val o="14366" v="220.8"/>
+ <val o="15181" v="220"/>
+ <val o="15f85" v="221.2"/>
+ <val o="16d95" v="220.3"/>
+ <val o="17ba4" v="221.1"/>
+ <val o="189b5" v="220.6"/>
+ <val o="197c4" v="220.9"/>
+ <val o="1a5d5" v="219.2"/>
+ <val o="1b3e6" v="219.3"/>
+ <val o="1c1f6" v="220.5"/>
+ <val o="1d005" v="220.7"/>
+ <val o="1de15" v="220.1"/>
+ <val o="1ec25" v="220.4"/>
+ <val o="1fa36" v="220.1"/>
+ <val o="20845" v="220.1"/>
+ <val o="21656" v="220.7"/>
+ <val o="22465" v="220.7"/>
+ <val o="23276" v="220.5"/>
+ <val o="24086" v="180"/>
+ <val o="24e99" v="222"/>
+ <val o="25ca7" v="221.8"/>
+ <val o="26ab7" v="220.6"/>
+ <val o="278c6" v="180"/>
+ <val o="286d6" v="220.8"/>
+ <val o="294e6" v="218.9"/>
+ <val o="2a301" v="220"/>
+ <val o="2b105" v="180"/>
+ <val o="2bf15" v="180"/>
+ <val o="2cd25" v="218.8"/>
+ <val o="2db35" v="180"/>
+ <val o="2e946" v="180"/>
+ <val o="2f755" v="180"/>
+ <val o="30566" v="219.9"/>
+ <val o="31375" v="220.5"/>
+ <val o="3219e" v="219.7"/>
+ <val o="32f96" v="220.8"/>
+ <val o="33da6" v="220.6"/>
+ <val o="34bb6" v="219"/>
+ <val o="359de" v="220.3"/>
+ <val o="367d6" v="219.3"/>
+ <val o="375e6" v="180"/>
+ <val o="3840e" v="180"/>
+ <val o="3921e" v="180"/>
+ <val o="3a016" v="180"/>
+ <val o="3ae27" v="220.9"/>
+ <val o="3bc36" v="220.1"/>
+ <val o="3ca47" v="180"/>
+ <val o="3d856" v="221.4"/>
+ <val o="3e667" v="220.2"/>
+ <val o="3f481" v="217.6"/>
+ <val o="40285" v="218.4"/>
+ <val o="41095" v="218.1"/>
+ <val o="41ea5" v="218.7"/>
+ <val o="42cb5" v="219.9"/>
+ <val o="43ac5" v="218.7"/>
+ <val o="448d5" v="180"/>
+ <val o="456e6" v="220.7"/>
+ <val o="464f5" v="222.7"/>
+ <val o="480ff" v="180"/>
+ <val o="48f0e" v="180"/>
+ <val o="49d1d" v="180"/>
+ <val o="4ab46" v="180"/>
+ <val o="4b955" v="180"/>
+ <val o="4c769" v="180"/>
+ <val o="4d577" v="180"/>
+ <val o="4e387" v="180"/>
+ <val o="4f196" v="180"/>
+ <val o="4ffa6" v="180"/>
+ <val o="50dd0" v="180"/>
+ <val o="51bc6" v="180"/>
+ <val o="529d6" v="180"/>
+ <val o="537e7" v="220.5"/>
+ <val o="54600" v="218.9"/>
+ <val o="55406" v="219.3"/>
+ <val o="56215" v="219.6"/>
+ <val o="57026" v="219.3"/>
+ <val o="57e36" v="219.7"/>
+ <val o="58c46" v="220.4"/>
+ <val o="59a70" v="220.5"/>
+ <val o="5a867" v="221.8"/>
+ <val o="5b676" v="180"/>
+ <val o="5c487" v="180"/>
+ <val o="5d296" v="180"/>
+ <val o="5e0a9" v="222.5"/>
+ <val o="5eeb8" v="224.5"/>
+ <val o="5fcc6" v="223.6"/>
+ <val o="60ad7" v="180"/>
+ <val o="618e7" v="180"/>
+ <val o="626f7" v="180"/>
+ <val o="63507" v="180"/>
+ <val o="64317" v="180"/>
+ <val o="65127" v="222.3"/>
+ <val o="65f37" v="222.6"/>
+ <val o="66d46" v="220.8"/>
+ <val o="67b57" v="220.8"/>
+ <val o="68967" v="220.2"/>
+ <val o="69782" v="220.2"/>
+ <val o="6a586" v="219.3"/>
+ <val o="6b395" v="219.8"/>
+ <val o="6c1a6" v="219"/>
+ <val o="6cfb5" v="218.7"/>
+ <val o="6ddc6" v="220.7"/>
+ <val o="6ebd6" v="180"/>
+ <val o="6f9e6" v="221.8"/>
+ <val o="707f6" v="222.8"/>
+ <val o="71607" v="180"/>
+ <val o="72417" v="180"/>
+ <val o="73227" v="180"/>
+ <val o="74037" v="223.8"/>
+ <val o="74e47" v="223.4"/>
+ <val o="75c57" v="180"/>
+ <val o="76a63" v="180"/>
+ <val o="77873" v="180"/>
+ <val o="78680" v="180"/>
+ <val o="7948f" v="180"/>
+ <val o="7a29f" v="180"/>
+ <val o="7b0af" v="222.1"/>
+ <val o="7bebf" v="221"/>
+ <val o="7cccf" v="219.5"/>
+ <val o="7dadf" v="219.9"/>
+ <val o="7e8fa" v="220.8"/>
+ <val o="7f70a" v="220.8"/>
+ <val o="8051a" v="217.9"/>
+ <val o="8132a" v="219"/>
+ <val o="8213a" v="218.6"/>
+ <val o="82f4a" v="219.4"/>
+ <val o="83d5a" v="219.7"/>
+ <val o="84b6a" v="180"/>
+ <val o="8597a" v="180"/>
+ <val o="8678b" v="180"/>
+ <val o="8759b" v="180"/>
+ <val o="883ac" v="223.1"/>
+ <val o="891bb" v="222"/>
+ <val o="89fca" v="224.2"/>
+ <val o="8adda" v="180"/>
+ <val o="8bbeb" v="180"/>
+ <val o="8c9fc" v="180"/>
+ <val o="8d80b" v="180"/>
+ <val o="8e61a" v="180"/>
+ <val o="8f42a" v="180"/>
+ <val o="9023a" v="180"/>
+ <val o="9104a" v="220.4"/>
+ <val o="91e5a" v="180"/>
+ <val o="92c6a" v="219.6"/>
+ <val o="93a84" v="219.2"/>
+ <val o="94885" v="219"/>
+ <val o="95694" v="218.5"/>
+ <val o="964a5" v="219.3"/>
+ <val o="972b4" v="219.4"/>
+ <val o="980c5" v="221"/>
+ <val o="98ed4" v="220.7"/>
+ <val o="99ce5" v="180"/>
+ <val o="9aaf5" v="180"/>
+ <val o="9b906" v="225.2"/>
+ <val o="9c716" v="225"/>
+ <val o="9d526" v="222.6"/>
+ <val o="9e336" v="223.6"/>
+ <val o="9f145" v="224.1"/>
+ <val o="9ff56" v="223.2"/>
+ <val o="a0d65" v="180"/>
+ <val o="a1b77" v="195.9"/>
+ <val o="a2986" v="190"/>
+ <val o="a3795" v="122.3"/>
+ <val o="a45a7" v="354.6"/>
+ <val o="a53b6" v="333.2"/>
+ <val o="a61c7" v="323.3"/>
+ <val o="a6fd6" v="278.1"/>
+ <val o="a7e00" v="286.2"/>
+ <val o="a8c00" v="292.3"/>
+ <val o="a9a05" v="21.4"/>
+ <val o="aa815" v="273.7"/>
+ <val o="ab625" v="272.9"/>
+ <val o="ac435" v="285.4"/>
+ <val o="ad245" v="28.5"/>
+ <val o="ae055" v="68.4"/>
+ <val o="aee65" v="147.1"/>
+ <val o="afc75" v="95.7"/>
+ <val o="b0a85" v="89.6"/>
+ <val o="b26a6" v="88.3"/>
+ <val o="b34b6" v="92.4"/>
+ <val o="b42c6" v="149.7"/>
+ <val o="b50d6" v="148.7"/>
+ <val o="b5ee7" v="127.7"/>
+ <val o="b6cf6" v="198.2"/>
+ <val o="b7b07" v="187.2"/>
+ <val o="b8917" v="182.1"/>
+ <val o="b9728" v="195.8"/>
+ <val o="ba537" v="203.8"/>
+ <val o="bb347" v="124.5"/>
+ <val o="bc157" v="159.2"/>
+ <val o="bcf67" v="230.6"/>
+ <val o="bdd81" v="79.8"/>
+ <val o="beb86" v="51.3"/>
+ <val o="bf995" v="22.5"/>
+ <val o="c07a6" v="323.7"/>
+ <val o="c15b5" v="341.6"/>
+ <val o="c23c6" v="46.4"/>
+ <val o="c31d5" v="71.9"/>
+ <val o="c3fe6" v="71.9"/>
+ <val o="c4df5" v="63.4"/>
+ <val o="c5c06" v="76.4"/>
+ <val o="c6a16" v="58.4"/>
+ <val o="c7826" v="92"/>
+ <val o="c8636" v="79.6"/>
+ <val o="c9446" v="63.1"/>
+ <val o="ca256" v="51.3"/>
+ <val o="cb066" v="81.7"/>
+ <val o="cbe76" v="205.3"/>
+ <val o="ccc87" v="96.1"/>
+ <val o="cda96" v="95.7"/>
+ <val o="ce8a8" v="96.7"/>
+ <val o="cf6b7" v="92.8"/>
+ <val o="d04c8" v="91.4"/>
+ <val o="d12d7" v="86.1"/>
+ <val o="d20e7" v="270"/>
+ <val o="d2f02" v="270.4"/>
+ <val o="d3d05" v="296.7"/>
+ <val o="d4b15" v="306.8"/>
+ <val o="d5926" v="331.7"/>
+ <val o="d6735" v="13.7"/>
+ <val o="d7546" v="46.4"/>
+ <val o="d8355" v="262.1"/>
+ <val o="d9166" v="166.2"/>
+ <val o="d9f75" v="143.6"/>
+ <val o="dad87" v="127.2"/>
+ <val o="dbb97" v="132.7"/>
+ <val o="dc9a8" v="128.3"/>
+ <val o="dd7b7" v="155.6"/>
+ <val o="de5c6" v="170.8"/>
+ <val o="df3d7" v="176.1"/>
+ <val o="e01d7" v="176.8"/>
+ <val o="e0fe5" v="168.8"/>
+ <val o="e1df5" v="172.2"/>
+ <val o="e2c04" v="185.2"/>
+ <val o="e3a14" v="196.3"/>
+ <val o="e4824" v="178.5"/>
+ <val o="e5634" v="193.7"/>
+ <val o="e6444" v="176.2"/>
+ <val o="e7255" v="196.7"/>
+ <val o="e806f" v="202.2"/>
+ <val o="e8e7f" v="99.9"/>
+ <val o="e9c8e" v="130.2"/>
+ <val o="eaa9f" v="132.9"/>
+ <val o="eb8ae" v="121.7"/>
+ <val o="ec6bf" v="100.9"/>
+ <val o="ed4ce" v="192.9"/>
+ <val o="ee2df" v="153.7"/>
+ <val o="ef0ef" v="170.4"/>
+ <val o="eff01" v="155.2"/>
+ <val o="f0d10" v="167.3"/>
+ <val o="f1b20" v="165.5"/>
+ <val o="f2930" v="184.3"/>
+ <val o="f3740" v="159.2"/>
+ <val o="f4551" v="163.4"/>
+ <val o="f5361" v="163.5"/>
+ <val o="f6172" v="160.8"/>
+ <val o="f6f80" v="165"/>
+ <val o="f7d91" v="156.4"/>
+ <val o="f8ba1" v="163.8"/>
+ <val o="f99b1" v="162.9"/>
+ <val o="fa7c0" v="154.9"/>
+ <val o="fb5d1" v="157.1"/>
+ <val o="fc3e0" v="197.2"/>
+ <val o="fd1fb" v="203.8"/>
+ <val o="fe00b" v="212.5"/>
+ <val o="fee1c" v="185.4"/>
+ <val o="ffc2c" v="187.2"/>
+ <val o="100a3b" v="162"/>
+ <val o="10184c" v="149.3"/>
+ <val o="10265b" v="136.8"/>
+ <val o="10346c" v="145.9"/>
+ <val o="10427b" v="164.1"/>
+ <val o="10508d" v="158.2"/>
+ <val o="105e9d" v="163"/>
+ <val o="106cad" v="161.6"/>
+ <val o="107abd" v="168.9"/>
+ <val o="1088cd" v="168.5"/>
+ <val o="1096de" v="165.1"/>
+ <val o="10a4ed" v="168.2"/>
+ <val o="10b2fe" v="163.9"/>
+ <val o="10c10d" v="147.5"/>
+ <val o="10cf1e" v="163"/>
+ <val o="10dd2e" v="166.3"/>
+ <val o="10eb66" v="177.4"/>
+ <val o="10f94e" v="179.7"/>
+ <val o="11075e" v="161"/>
+ <val o="11156d" v="174.4"/>
+ <val o="112388" v="203.6"/>
+ <val o="113187" v="158.3"/>
+ <val o="113fb0" v="172.9"/>
+ <val o="114da6" v="172.7"/>
+ <val o="115bb6" v="168.4"/>
+ <val o="1169c6" v="138"/>
+ <val o="1177d6" v="135.8"/>
+ <val o="1185e8" v="157.8"/>
+ <val o="1193f7" v="160.6"/>
+ <val o="11a208" v="175.7"/>
+ <val o="11b017" v="184.1"/>
+ <val o="11be2f" v="188.6"/>
+ <val o="11cc37" v="170"/>
+ <val o="11da47" v="173.6"/>
+ <val o="11e857" v="167"/>
+ <val o="11f667" v="172.6"/>
+ <val o="120578" v="164.6"/>
+ <val o="121386" v="166.8"/>
+ <val o="122196" v="151.9"/>
+ <val o="122fa6" v="158.6"/>
+ <val o="123db5" v="170.8"/>
+ <val o="124bc5" v="185.4"/>
+ <val o="1259d5" v="160.1"/>
+ <val o="1267e4" v="188.6"/>
+ <val o="127600" v="207.7"/>
+ <val o="128305" v="214.6"/>
+ <val o="129115" v="213.7"/>
+ <val o="129f25" v="218.4"/>
+ <val o="12ad35" v="210.5"/>
+ <val o="12bb45" v="178.8"/>
+ <val o="12c954" v="162.6"/>
+ <val o="12d766" v="156.4"/>
+ <val o="12e575" v="153.5"/>
+ <val o="12f386" v="143.9"/>
+ <val o="130196" v="160.8"/>
+ <val o="130fa6" v="153.4"/>
+ <val o="131db7" v="163.6"/>
+ <val o="132bc5" v="168.2"/>
+ <val o="1339d4" v="169.3"/>
+ <val o="1347e5" v="139.1"/>
+ <val o="1355f4" v="142.4"/>
+ <val o="136404" v="122.1"/>
+ <val o="137214" v="125.5"/>
+ <val o="138024" v="110.7"/>
+ <val o="138e33" v="110.6"/>
+ <val o="139c44" v="190.2"/>
+ <val o="13aa54" v="99.6"/>
+ <val o="13b865" v="209.4"/>
+ <val o="13c67e" v="76.2"/>
+ <val o="13d48e" v="61.5"/>
+ <val o="13e29e" v="44.5"/>
+ <val o="13f0ae" v="44.2"/>
+ <val o="13febf" v="60.4"/>
+ <val o="140ccf" v="64.6"/>
+ <val o="141adf" v="67.3"/>
+ <val o="1428ef" v="341.2"/>
+ <val o="1436ff" v="115.8"/>
+ <val o="14450f" v="117.3"/>
+ <val o="14531f" v="180"/>
+ <val o="146130" v="252.4"/>
+ <val o="146f40" v="261.8"/>
+ <val o="147d44" v="313.3"/>
+ <val o="148b57" v="311.3"/>
+ <val o="149965" v="292"/>
+ <val o="14a775" v="57.6"/>
+ <val o="14b584" v="151.6"/>
+ <val o="14c397" v="92.7"/>
+ <val o="14d1a4" v="93.4"/>
+ <val o="14dfb6" v="100.3"/>
+ <val o="14edc5" v="97.4"/>
+ <val o="14fbd5" v="184"/>
+ <val o="1509e5" v="289.1"/>
+ <val o="1517ff" v="274.2"/>
+ <val o="152605" v="39.8"/>
+ <val o="153415" v="6.5"/>
+ <val o="154225" v="355.9"/>
+ <val o="155035" v="19.4"/>
+ <val o="155e45" v="44.2"/>
+ <val o="156c55" v="61.4"/>
+ <val o="157a65" v="55.5"/>
+ <val o="158875" v="60.2"/>
+ <val o="159686" v="71.7"/>
+ <val o="15a495" v="66.3"/>
+ <val o="15b2a6" v="61.5"/>
+ <val o="15c0b6" v="38.5"/>
+ <val o="15cec6" v="17.3"/>
+ <val o="15dcd5" v="35.6"/>
+ <val o="15eae6" v="44.9"/>
+ <val o="15f8f5" v="71.4"/>
+ <val o="160706" v="166.1"/>
+ <val o="161517" v="125"/>
+ <val o="162326" v="176"/>
+ <val o="163137" v="195.3"/>
+ <val o="163f46" v="99.1"/>
+ <val o="164d57" v="90"/>
+ <val o="165b67" v="273.9"/>
+ <val o="166982" v="344.7"/>
+ <val o="167786" v="307.2"/>
+ <val o="168596" v="271.8"/>
+ <val o="1693a6" v="278.8"/>
+ <val o="16a1b5" v="291.5"/>
+ <val o="16afc6" v="52.9"/>
+ <val o="16bdd5" v="76.6"/>
+ <val o="16cbe6" v="87.6"/>
+ <val o="16d9f6" v="170.1"/>
+ <val o="16e807" v="174.2"/>
+ <val o="16f616" v="175.6"/>
+ <val o="170429" v="186.7"/>
+ <val o="171236" v="183.2"/>
+ <val o="172047" v="181.7"/>
+ <val o="172e57" v="173.6"/>
+ <val o="173c67" v="170.7"/>
+ <val o="174a77" v="165.4"/>
+ <val o="175887" v="163.8"/>
+ <val o="176694" v="161.7"/>
+ <val o="1774a3" v="165.4"/>
+ <val o="1782b3" v="170.9"/>
+ <val o="1790c5" v="173.5"/>
+ <val o="179ed4" v="187.9"/>
+ <val o="17ace4" v="201.8"/>
+ <val o="17bafd" v="205.9"/>
+ <val o="17c90f" v="204.6"/>
+ <val o="17d71e" v="204.1"/>
+ <val o="17e52f" v="208.2"/>
+ <val o="17f33f" v="204.4"/>
+ <val o="18014f" v="193.5"/>
+ <val o="180f5f" v="186.4"/>
+ <val o="181d6e" v="192.4"/>
+ <val o="182b7f" v="194.3"/>
+ <val o="18398f" v="184.4"/>
+ <val o="1847a1" v="184.1"/>
+ <val o="1855af" v="185.6"/>
+ <val o="1863c0" v="194.9"/>
+ <val o="1871cf" v="192.1"/>
+ <val o="187fe0" v="192.1"/>
+ <val o="188def" v="190.6"/>
+ <val o="189c00" v="185.4"/>
+ <val o="18b80d" v="170.9"/>
+ <val o="18c61c" v="187.4"/>
+ <val o="18d42c" v="191.1"/>
+ <val o="18e23b" v="191.1"/>
+ <val o="18f04b" v="197.1"/>
+ <val o="18fe5e" v="195.9"/>
+ <val o="190c76" v="189.8"/>
+ <val o="191a86" v="201.9"/>
+ <val o="192896" v="202.2"/>
+ <val o="1936a6" v="204.4"/>
+ <val o="1944b7" v="196.3"/>
+ <val o="1952c6" v="182.6"/>
+ <val o="1960d7" v="162.6"/>
+ <val o="196ee6" v="187.2"/>
+ <val o="197cf8" v="187.3"/>
+ <val o="198b0f" v="179.7"/>
+ <val o="19991f" v="181.7"/>
+ <val o="19b541" v="188.3"/>
+ <val o="19c34d" v="186.2"/>
+ <val o="19d15e" v="183.5"/>
+ <val o="19df80" v="182.2"/>
+ <val o="19ed90" v="176.5"/>
+ <val o="19eebe" v="175.6"/>
+ <val o="19fb8e" v="178.5"/>
+ <val o="1a09a0" v="223.8"/>
+ <val o="1a17ae" v="228.1"/>
+ <val o="1a25be" v="229.7"/>
+ <val o="1a33cd" v="216.1"/>
+ <val o="1a41dd" v="226.4"/>
+ <val o="1a4fed" v="249.6"/>
+ <val o="1a5e08" v="245.8"/>
+ <val o="1a6c05" v="250.1"/>
+ <val o="1a7a15" v="251.1"/>
+ <val o="1a8826" v="252.5"/>
+ <val o="1a9637" v="259.4"/>
+ <val o="1aa445" v="254.8"/>
+ <val o="1ab255" v="218.7"/>
+ <val o="1ac065" v="228.3"/>
+ <val o="1ace75" v="227.3"/>
+ <val o="1adc87" v="214.2"/>
+ <val o="1aea96" v="218.7"/>
+ <val o="1af8a7" v="217"/>
+ <val o="1b06b7" v="231.7"/>
+ <val o="1b14c6" v="230.6"/>
+ <val o="1c7460" v="52"/>
+ <val o="1c8270" v="340.3"/>
+ <val o="1c907e" v="18.5"/>
+ <val o="1c9e8f" v="357.5"/>
+ <val o="1caca2" v="344.7"/>
+ <val o="1cbab1" v="338.4"/>
+ <val o="1cc8c1" v="28.4"/>
+ <val o="1cd6d0" v="21.8"/>
+ <val o="1ce4de" v="10.4"/>
+ <val o="1cf2f0" v="343.9"/>
+ <val o="1d0109" v="342.8"/>
+ <val o="1d0f06" v="358.2"/>
+ <val o="1d1d15" v="353.5"/>
+ <val o="1d2b25" v="353.4"/>
+ <val o="1d3935" v="1.4"/>
+ <val o="1d4745" v="6.4"/>
+ <val o="1d5555" v="10.5"/>
+ <val o="1d6366" v="350.7"/>
+ <val o="1d7175" v="350.8"/>
+ <val o="1d7f86" v="357.6"/>
+ <val o="1d8d95" v="181.1"/>
+ <val o="1d9ba6" v="184.8"/>
+ <val o="1da9b6" v="192.6"/>
+ <val o="1db7c7" v="193.1"/>
+ <val o="1dc5d5" v="194.7"/>
+ <val o="1dd3e6" v="190.8"/>
+ <val o="1de1f5" v="195"/>
+ <val o="1df006" v="195.8"/>
+ <val o="1dfe16" v="195.3"/>
+ <val o="1e0c26" v="198.1"/>
+ <val o="1e1a36" v="198.4"/>
+ <val o="1e2847" v="199.5"/>
+ <val o="1e3659" v="200.2"/>
+ <val o="1e4467" v="202.3"/>
+ <val o="1e5281" v="200.7"/>
+ <val o="1e6086" v="203.5"/>
+ <val o="1e6e96" v="204.6"/>
+ <val o="1e7ca6" v="188.4"/>
+ <val o="1e8ab5" v="193.9"/>
+ <val o="1e98c6" v="184.4"/>
+ <val o="1ea6d5" v="190.5"/>
+ <val o="1eb4e6" v="188.9"/>
+ <val o="1ec2f6" v="192.2"/>
+ <val o="1ed106" v="185.6"/>
+ <val o="1edf16" v="186.6"/>
+ <val o="1eed26" v="182.8"/>
+ <val o="1efb36" v="187.6"/>
+ <val o="1f0946" v="186.9"/>
+ <val o="1f1756" v="168.2"/>
+ <val o="1f2566" v="164.2"/>
+ <val o="1f3376" v="154.3"/>
+ <val o="1f4187" v="134.3"/>
+ <val o="1f4f96" v="154.2"/>
+ <val o="1f5da7" v="182.2"/>
+ <val o="1f6bb6" v="188.3"/>
+ <val o="1f79c7" v="176"/>
+ <val o="1f87d6" v="206.4"/>
+ <val o="1f95e7" v="216.5"/>
+ <val o="1fa401" v="211.5"/>
+ <val o="1fb204" v="210.8"/>
+ <val o="1fc016" v="211.2"/>
+ <val o="1fce25" v="192.4"/>
+ <val o="1fdc35" v="185.1"/>
+ <val o="1fea45" v="176.6"/>
+ <val o="1ff855" v="171.5"/>
+ <val o="200665" v="129.5"/>
+ <val o="201475" v="173.4"/>
+ <val o="202286" v="157.2"/>
+ <val o="203095" v="161.2"/>
+ <val o="203ea5" v="163.5"/>
+ <val o="204cb6" v="176.8"/>
+ <val o="205ac6" v="166.8"/>
+ <val o="2068d6" v="161.5"/>
+ <val o="2076e6" v="159.3"/>
+ <val o="2084f6" v="177.6"/>
+ <val o="209306" v="183.2"/>
+ <val o="20a116" v="185.4"/>
+ <val o="20af26" v="182.6"/>
+ <val o="20bd37" v="189.3"/>
+ <val o="20cb46" v="173.2"/>
+ <val o="20d957" v="179.4"/>
+ <val o="20e767" v="193.5"/>
+ <val o="20f581" v="202.6"/>
+ <val o="210386" v="197.8"/>
+ <val o="211194" v="186.9"/>
+ <val o="211fa5" v="188.3"/>
+ <val o="212db5" v="178.7"/>
+ <val o="213bc5" v="160.2"/>
+ <val o="2149d6" v="168.3"/>
+ <val o="2157e5" v="184"/>
+ <val o="2165f6" v="191.1"/>
+ <val o="217406" v="177.3"/>
+ <val o="218217" v="182.9"/>
+ <val o="219026" v="185.4"/>
+ <val o="219e39" v="176.3"/>
+ <val o="21ac46" v="170.1"/>
+ <val o="21ba57" v="169.3"/>
+ <val o="21c867" v="159.8"/>
+ <val o="21d677" v="190.9"/>
+ <val o="21e487" v="173.9"/>
+ <val o="21f296" v="175.5"/>
+ <val o="2200a6" v="187.5"/>
+ <val o="220eb7" v="188.5"/>
+ <val o="221cc6" v="160"/>
+ <val o="222ad7" v="175.5"/>
+ <val o="2238e7" v="192.4"/>
+ <val o="224701" v="200.8"/>
+ <val o="225505" v="116.9"/>
+ <val o="226315" v="166.3"/>
+ <val o="227125" v="162.8"/>
+ <val o="227f35" v="130.4"/>
+ <val o="228d45" v="122"/>
+ <val o="229b54" v="193.5"/>
+ <val o="22a965" v="183.9"/>
+ <val o="22b776" v="180"/>
+ <val o="22c586" v="157.3"/>
+ <val o="22d397" v="142.7"/>
+ <val o="22e1a6" v="145.9"/>
+ <val o="22efb6" v="182.2"/>
+ <val o="22fdc7" v="182.7"/>
+ <val o="230bd7" v="173.3"/>
+ <val o="2319e6" v="188.6"/>
+ <val o="2327f6" v="179.4"/>
+ <val o="23361b" v="169.8"/>
+ <val o="234416" v="164.3"/>
+ <val o="235226" v="170.2"/>
+ <val o="236037" v="178.8"/>
+ <val o="236e46" v="158"/>
+ <val o="237c57" v="161.6"/>
+ <val o="238a66" v="175.8"/>
+ <val o="239881" v="169.9"/>
+ <val o="23a685" v="185.3"/>
+ <val o="23b495" v="191.6"/>
+ <val o="23c2a4" v="176.8"/>
+ <val o="23d0b5" v="167.7"/>
+ <val o="23dec4" v="154.1"/>
+ <val o="23ecd5" v="167"/>
+ <val o="23fae4" v="180"/>
+ <val o="2408f6" v="166.9"/>
+ <val o="241706" v="146.9"/>
+ <val o="242518" v="155.4"/>
+ <val o="243325" v="157.6"/>
+ <val o="244137" v="189.9"/>
+ <val o="244f46" v="187.4"/>
+ <val o="246b66" v="186.9"/>
+ <val o="247976" v="179.5"/>
+ <val o="248786" v="139.6"/>
+ <val o="24957e" v="161.8"/>
+ <val o="24a38f" v="172"/>
+ <val o="24b19c" v="189.5"/>
+ <val o="24bfac" v="187.3"/>
+ <val o="24cdbc" v="188.2"/>
+ <val o="24dbcd" v="186.1"/>
+ <val o="24e9e5" v="198.1"/>
+ <val o="24f808" v="193.3"/>
+ <val o="250616" v="195.6"/>
+ <val o="251426" v="198.3"/>
+ <val o="252236" v="180.5"/>
+ <val o="253047" v="180"/>
+ <val o="253e56" v="161.6"/>
+ <val o="254c67" v="165.8"/>
+ <val o="255a76" v="165.6"/>
+ <val o="256887" v="160.4"/>
+ <val o="257697" v="147.2"/>
+ <val o="2584a8" v="196.9"/>
+ <val o="2592b6" v="195.7"/>
+ <val o="25a0c7" v="186.9"/>
+ <val o="25aed7" v="178.3"/>
+ <val o="25bce7" v="177.6"/>
+ <val o="25caf8" v="172"/>
+ <val o="25d907" v="156.5"/>
+ <val o="25e718" v="154.3"/>
+ <val o="25f527" v="157"/>
+ <val o="260338" v="179.5"/>
+ <val o="261149" v="166"/>
+ <val o="261f59" v="172.3"/>
+ <val o="262d68" v="196.4"/>
+ <val o="263b83" v="179.5"/>
+ <val o="264986" v="195.7"/>
+ <val o="265795" v="202.7"/>
+ <val o="2665a6" v="209.9"/>
+ <val o="2673b5" v="204.1"/>
+ <val o="2681c6" v="199.9"/>
+ <val o="268fd5" v="186.3"/>
+ <val o="269de6" v="175.6"/>
+ <val o="26abf6" v="170.1"/>
+ <val o="26ba06" v="159.2"/>
+ <val o="26c817" v="156.4"/>
+ <val o="26d62b" v="137.7"/>
+ <val o="26e436" v="146"/>
+ <val o="26f247" v="139.6"/>
+ <val o="270057" v="143.2"/>
+ <val o="270e67" v="137.7"/>
+ <val o="271c77" v="177.9"/>
+ <val o="272a87" v="186.9"/>
+ <val o="273897" v="184.5"/>
+ <val o="2746a8" v="188.2"/>
+ <val o="2754b9" v="191.1"/>
+ <val o="2762c7" v="146.7"/>
+ <val o="2770d8" v="161.4"/>
+ <val o="277ee7" v="188.7"/>
+ </par>
+ <par memind="10695000" h="3dc1a8de">
+ <val o="0" v="50"/>
+ <val o="e08" v="50"/>
+ <val o="1c32" v="50"/>
+ <val o="2a3c" v="50"/>
+ <val o="3835" v="49.9"/>
+ <val o="4645" v="49.9"/>
+ <val o="5455" v="50"/>
+ <val o="6265" v="50"/>
+ <val o="7075" v="50"/>
+ <val o="7e85" v="50"/>
+ <val o="8c96" v="50"/>
+ <val o="9aa5" v="50.1"/>
+ <val o="a8b6" v="50"/>
+ <val o="b6c5" v="50"/>
+ <val o="c4d7" v="50"/>
+ <val o="d30b" v="50"/>
+ <val o="e0f6" v="50"/>
+ <val o="ef06" v="50"/>
+ <val o="fd17" v="50"/>
+ <val o="10b27" v="50"/>
+ <val o="11937" v="50"/>
+ <val o="12746" v="50"/>
+ <val o="13556" v="50"/>
+ <val o="14366" v="50"/>
+ <val o="15181" v="50"/>
+ <val o="15f85" v="50"/>
+ <val o="16d95" v="50"/>
+ <val o="17ba4" v="50"/>
+ <val o="189b5" v="50"/>
+ <val o="197c4" v="50.1"/>
+ <val o="1a5d5" v="50"/>
+ <val o="1b3e6" v="50"/>
+ <val o="1c1f6" v="50.1"/>
+ <val o="1d005" v="50"/>
+ <val o="1de15" v="50"/>
+ <val o="1ec25" v="50"/>
+ <val o="1fa36" v="50"/>
+ <val o="20845" v="50"/>
+ <val o="21656" v="50"/>
+ <val o="22465" v="50"/>
+ <val o="23276" v="50"/>
+ <val o="24086" v="50"/>
+ <val o="24e99" v="50"/>
+ <val o="25ca7" v="50"/>
+ <val o="26ab7" v="50"/>
+ <val o="278c6" v="50"/>
+ <val o="286d6" v="50.1"/>
+ <val o="294e6" v="50"/>
+ <val o="2a301" v="50"/>
+ <val o="2b105" v="50"/>
+ <val o="2bf15" v="50"/>
+ <val o="2cd25" v="50"/>
+ <val o="2db35" v="50"/>
+ <val o="2e946" v="50"/>
+ <val o="2f755" v="50"/>
+ <val o="30566" v="50"/>
+ <val o="31375" v="50"/>
+ <val o="3219e" v="50"/>
+ <val o="32f96" v="50"/>
+ <val o="33da6" v="50"/>
+ <val o="34bb6" v="50"/>
+ <val o="359de" v="50"/>
+ <val o="367d6" v="50"/>
+ <val o="375e6" v="50"/>
+ <val o="3840e" v="50"/>
+ <val o="3921e" v="50"/>
+ <val o="3a016" v="50"/>
+ <val o="3ae27" v="50"/>
+ <val o="3bc36" v="50"/>
+ <val o="3ca47" v="50"/>
+ <val o="3d856" v="50"/>
+ <val o="3e667" v="50"/>
+ <val o="3f481" v="50"/>
+ <val o="40285" v="50"/>
+ <val o="41095" v="50"/>
+ <val o="41ea5" v="50"/>
+ <val o="42cb5" v="50"/>
+ <val o="43ac5" v="49.9"/>
+ <val o="448d5" v="50"/>
+ <val o="456e6" v="49.9"/>
+ <val o="464f5" v="50"/>
+ <val o="480ff" v="49.9"/>
+ <val o="48f0e" v="50"/>
+ <val o="49d1d" v="50"/>
+ <val o="4ab46" v="50"/>
+ <val o="4b955" v="50"/>
+ <val o="4c769" v="50"/>
+ <val o="4d577" v="50"/>
+ <val o="4e387" v="50"/>
+ <val o="4f196" v="50"/>
+ <val o="4ffa6" v="50"/>
+ <val o="50dd0" v="50"/>
+ <val o="51bc6" v="50"/>
+ <val o="529d6" v="50"/>
+ <val o="537e7" v="50"/>
+ <val o="54600" v="50"/>
+ <val o="55406" v="50"/>
+ <val o="56215" v="50"/>
+ <val o="57026" v="50"/>
+ <val o="57e36" v="50"/>
+ <val o="58c46" v="50"/>
+ <val o="59a70" v="50"/>
+ <val o="5a867" v="50"/>
+ <val o="5b676" v="49.9"/>
+ <val o="5c487" v="50"/>
+ <val o="5d296" v="50"/>
+ <val o="5e0a9" v="50"/>
+ <val o="5eeb8" v="50"/>
+ <val o="5fcc6" v="50"/>
+ <val o="60ad7" v="50"/>
+ <val o="618e7" v="50"/>
+ <val o="626f7" v="50"/>
+ <val o="63507" v="50"/>
+ <val o="64317" v="50"/>
+ <val o="65127" v="50.1"/>
+ <val o="65f37" v="50"/>
+ <val o="66d46" v="50"/>
+ <val o="67b57" v="50"/>
+ <val o="68967" v="50"/>
+ <val o="69782" v="50.1"/>
+ <val o="6a586" v="50"/>
+ <val o="6b395" v="50"/>
+ <val o="6c1a6" v="49.9"/>
+ <val o="6cfb5" v="50"/>
+ <val o="6ddc6" v="50"/>
+ <val o="6ebd6" v="50"/>
+ <val o="6f9e6" v="50"/>
+ <val o="707f6" v="50"/>
+ <val o="71607" v="50"/>
+ <val o="72417" v="50"/>
+ <val o="73227" v="50"/>
+ <val o="74037" v="50"/>
+ <val o="74e47" v="50"/>
+ <val o="75c57" v="50"/>
+ <val o="76a63" v="50"/>
+ <val o="77873" v="50"/>
+ <val o="78680" v="50"/>
+ <val o="7948f" v="50"/>
+ <val o="7a29f" v="50"/>
+ <val o="7b0af" v="50.1"/>
+ <val o="7bebf" v="50"/>
+ <val o="7cccf" v="50"/>
+ <val o="7dadf" v="49.9"/>
+ <val o="7e8fa" v="50"/>
+ <val o="7f70a" v="50"/>
+ <val o="8051a" v="50"/>
+ <val o="8132a" v="50"/>
+ <val o="8213a" v="50"/>
+ <val o="82f4a" v="50"/>
+ <val o="83d5a" v="50"/>
+ <val o="84b6a" v="50"/>
+ <val o="8597a" v="50"/>
+ <val o="8678b" v="50"/>
+ <val o="8759b" v="50"/>
+ <val o="883ac" v="50"/>
+ <val o="891bb" v="50"/>
+ <val o="89fca" v="50"/>
+ <val o="8adda" v="50"/>
+ <val o="8bbeb" v="50"/>
+ <val o="8c9fc" v="50"/>
+ <val o="8d80b" v="50"/>
+ <val o="8e61a" v="50.1"/>
+ <val o="8f42a" v="50"/>
+ <val o="9023a" v="50.1"/>
+ <val o="9104a" v="49.9"/>
+ <val o="91e5a" v="50"/>
+ <val o="92c6a" v="50"/>
+ <val o="93a84" v="49.9"/>
+ <val o="94885" v="50"/>
+ <val o="95694" v="50"/>
+ <val o="964a5" v="50"/>
+ <val o="972b4" v="49.9"/>
+ <val o="980c5" v="50"/>
+ <val o="98ed4" v="50"/>
+ <val o="99ce5" v="49.9"/>
+ <val o="9aaf5" v="50.1"/>
+ <val o="9b906" v="50.1"/>
+ <val o="9c716" v="50"/>
+ <val o="9d526" v="50"/>
+ <val o="9e336" v="50"/>
+ <val o="9f145" v="50"/>
+ <val o="9ff56" v="50"/>
+ <val o="a0d65" v="50"/>
+ <val o="a1b77" v="49.9"/>
+ <val o="a2986" v="50"/>
+ <val o="a3795" v="50"/>
+ <val o="a45a7" v="50"/>
+ <val o="a53b6" v="50"/>
+ <val o="a61c7" v="50"/>
+ <val o="a6fd6" v="50"/>
+ <val o="a7e00" v="50.1"/>
+ <val o="a8c00" v="49.9"/>
+ <val o="a9a05" v="50"/>
+ <val o="aa815" v="50"/>
+ <val o="ab625" v="50"/>
+ <val o="ac435" v="50"/>
+ <val o="ad245" v="50"/>
+ <val o="ae055" v="50"/>
+ <val o="aee65" v="50"/>
+ <val o="afc75" v="50"/>
+ <val o="b0a85" v="50"/>
+ <val o="b26a6" v="50"/>
+ <val o="b34b6" v="50"/>
+ <val o="b42c6" v="50"/>
+ <val o="b50d6" v="50"/>
+ <val o="b5ee7" v="50"/>
+ <val o="b6cf6" v="50"/>
+ <val o="b7b07" v="50"/>
+ <val o="b8917" v="50"/>
+ <val o="b9728" v="50"/>
+ <val o="ba537" v="50"/>
+ <val o="bb347" v="50"/>
+ <val o="bc157" v="50"/>
+ <val o="bcf67" v="50"/>
+ <val o="bdd81" v="50"/>
+ <val o="beb86" v="50"/>
+ <val o="bf995" v="50"/>
+ <val o="c07a6" v="50"/>
+ <val o="c15b5" v="50"/>
+ <val o="c23c6" v="50"/>
+ <val o="c31d5" v="49.9"/>
+ <val o="c3fe6" v="50"/>
+ <val o="c4df5" v="50"/>
+ <val o="c5c06" v="50"/>
+ <val o="c6a16" v="50"/>
+ <val o="c7826" v="50"/>
+ <val o="c8636" v="50"/>
+ <val o="c9446" v="50"/>
+ <val o="ca256" v="50"/>
+ <val o="cb066" v="50"/>
+ <val o="cbe76" v="50"/>
+ <val o="ccc87" v="50"/>
+ <val o="cda96" v="50"/>
+ <val o="ce8a8" v="50"/>
+ <val o="cf6b7" v="50"/>
+ <val o="d04c8" v="49.9"/>
+ <val o="d12d7" v="50"/>
+ <val o="d20e7" v="50"/>
+ <val o="d2f02" v="50"/>
+ <val o="d3d05" v="50"/>
+ <val o="d4b15" v="50"/>
+ <val o="d5926" v="50"/>
+ <val o="d6735" v="50"/>
+ <val o="d7546" v="50"/>
+ <val o="d8355" v="50"/>
+ <val o="d9166" v="50"/>
+ <val o="d9f75" v="50.1"/>
+ <val o="dad87" v="50"/>
+ <val o="dbb97" v="49.9"/>
+ <val o="dc9a8" v="50"/>
+ <val o="dd7b7" v="50"/>
+ <val o="de5c6" v="50"/>
+ <val o="df3d7" v="50"/>
+ <val o="e01d7" v="50"/>
+ <val o="e0fe5" v="50"/>
+ <val o="e1df5" v="50"/>
+ <val o="e2c04" v="50"/>
+ <val o="e3a14" v="50"/>
+ <val o="e4824" v="50"/>
+ <val o="e5634" v="50"/>
+ <val o="e6444" v="50"/>
+ <val o="e7255" v="50"/>
+ <val o="e806f" v="50"/>
+ <val o="e8e7f" v="50"/>
+ <val o="e9c8e" v="50"/>
+ <val o="eaa9f" v="50"/>
+ <val o="eb8ae" v="50"/>
+ <val o="ec6bf" v="50"/>
+ <val o="ed4ce" v="50"/>
+ <val o="ee2df" v="50"/>
+ <val o="ef0ef" v="50"/>
+ <val o="eff01" v="50.1"/>
+ <val o="f0d10" v="50"/>
+ <val o="f1b20" v="50"/>
+ <val o="f2930" v="50"/>
+ <val o="f3740" v="50"/>
+ <val o="f4551" v="50"/>
+ <val o="f5361" v="50"/>
+ <val o="f6172" v="50"/>
+ <val o="f6f80" v="50"/>
+ <val o="f7d91" v="50"/>
+ <val o="f8ba1" v="50"/>
+ <val o="f99b1" v="50"/>
+ <val o="fa7c0" v="50"/>
+ <val o="fb5d1" v="50"/>
+ <val o="fc3e0" v="50"/>
+ <val o="fd1fb" v="50"/>
+ <val o="fe00b" v="50"/>
+ <val o="fee1c" v="50.1"/>
+ <val o="ffc2c" v="50"/>
+ <val o="100a3b" v="50"/>
+ <val o="10184c" v="50"/>
+ <val o="10265b" v="49.9"/>
+ <val o="10346c" v="50"/>
+ <val o="10427b" v="50"/>
+ <val o="10508d" v="49.9"/>
+ <val o="105e9d" v="50"/>
+ <val o="106cad" v="50"/>
+ <val o="107abd" v="50"/>
+ <val o="1088cd" v="49.9"/>
+ <val o="1096de" v="50"/>
+ <val o="10a4ed" v="50"/>
+ <val o="10b2fe" v="49.9"/>
+ <val o="10c10d" v="50"/>
+ <val o="10cf1e" v="50"/>
+ <val o="10dd2e" v="50"/>
+ <val o="10eb66" v="50"/>
+ <val o="10f94e" v="49.9"/>
+ <val o="11075e" v="50.1"/>
+ <val o="11156d" v="50.1"/>
+ <val o="112388" v="50"/>
+ <val o="113187" v="49.9"/>
+ <val o="113fb0" v="50"/>
+ <val o="114da6" v="49.9"/>
+ <val o="115bb6" v="50"/>
+ <val o="1169c6" v="50"/>
+ <val o="1177d6" v="50"/>
+ <val o="1185e8" v="50"/>
+ <val o="1193f7" v="50"/>
+ <val o="11a208" v="50"/>
+ <val o="11b017" v="50"/>
+ <val o="11be2f" v="50.1"/>
+ <val o="11cc37" v="50"/>
+ <val o="11da47" v="50"/>
+ <val o="11e857" v="50"/>
+ <val o="11f667" v="50"/>
+ <val o="120578" v="50"/>
+ <val o="121386" v="50"/>
+ <val o="122196" v="50"/>
+ <val o="122fa6" v="50"/>
+ <val o="123db5" v="50"/>
+ <val o="124bc5" v="50"/>
+ <val o="1259d5" v="50"/>
+ <val o="1267e4" v="50"/>
+ <val o="127600" v="49.9"/>
+ <val o="128305" v="50"/>
+ <val o="129115" v="50"/>
+ <val o="129f25" v="50"/>
+ <val o="12ad35" v="49.9"/>
+ <val o="12bb45" v="49.9"/>
+ <val o="12c954" v="49.9"/>
+ <val o="12d766" v="49.9"/>
+ <val o="12e575" v="50.1"/>
+ <val o="12f386" v="50.1"/>
+ <val o="130196" v="50"/>
+ <val o="130fa6" v="50.1"/>
+ <val o="131db7" v="49.9"/>
+ <val o="132bc5" v="50"/>
+ <val o="1339d4" v="50"/>
+ <val o="1347e5" v="50"/>
+ <val o="1355f4" v="50"/>
+ <val o="136404" v="50"/>
+ <val o="137214" v="50.1"/>
+ <val o="138024" v="50"/>
+ <val o="138e33" v="50"/>
+ <val o="139c44" v="50"/>
+ <val o="13aa54" v="50"/>
+ <val o="13b865" v="50"/>
+ <val o="13c67e" v="50"/>
+ <val o="13d48e" v="50"/>
+ <val o="13e29e" v="50"/>
+ <val o="13f0ae" v="50"/>
+ <val o="13febf" v="50"/>
+ <val o="140ccf" v="50"/>
+ <val o="141adf" v="50"/>
+ <val o="1428ef" v="50"/>
+ <val o="1436ff" v="49.9"/>
+ <val o="14450f" v="50"/>
+ <val o="14531f" v="50"/>
+ <val o="146130" v="50"/>
+ <val o="146f40" v="50"/>
+ <val o="147d44" v="50"/>
+ <val o="148b57" v="50"/>
+ <val o="149965" v="50"/>
+ <val o="14a775" v="50"/>
+ <val o="14b584" v="50"/>
+ <val o="14c397" v="50"/>
+ <val o="14d1a4" v="50"/>
+ <val o="14dfb6" v="49.9"/>
+ <val o="14edc5" v="50.1"/>
+ <val o="14fbd5" v="50"/>
+ <val o="1509e5" v="50"/>
+ <val o="1517ff" v="50"/>
+ <val o="152605" v="50"/>
+ <val o="153415" v="50"/>
+ <val o="154225" v="50"/>
+ <val o="155035" v="50"/>
+ <val o="155e45" v="50"/>
+ <val o="156c55" v="50"/>
+ <val o="157a65" v="50"/>
+ <val o="158875" v="49.9"/>
+ <val o="159686" v="50"/>
+ <val o="15a495" v="50"/>
+ <val o="15b2a6" v="50"/>
+ <val o="15c0b6" v="50"/>
+ <val o="15cec6" v="50"/>
+ <val o="15dcd5" v="50"/>
+ <val o="15eae6" v="49.9"/>
+ <val o="15f8f5" v="50"/>
+ <val o="160706" v="49.9"/>
+ <val o="161517" v="50"/>
+ <val o="162326" v="49.9"/>
+ <val o="163137" v="50"/>
+ <val o="163f46" v="50"/>
+ <val o="164d57" v="50"/>
+ <val o="165b67" v="50"/>
+ <val o="166982" v="50"/>
+ <val o="167786" v="50"/>
+ <val o="168596" v="50"/>
+ <val o="1693a6" v="50"/>
+ <val o="16a1b5" v="49.9"/>
+ <val o="16afc6" v="50"/>
+ <val o="16bdd5" v="50"/>
+ <val o="16cbe6" v="50"/>
+ <val o="16d9f6" v="50"/>
+ <val o="16e807" v="49.9"/>
+ <val o="16f616" v="50"/>
+ <val o="170429" v="50"/>
+ <val o="171236" v="50"/>
+ <val o="172047" v="50"/>
+ <val o="172e57" v="50"/>
+ <val o="173c67" v="50"/>
+ <val o="174a77" v="50"/>
+ <val o="175887" v="50"/>
+ <val o="176694" v="49.9"/>
+ <val o="1774a3" v="50"/>
+ <val o="1782b3" v="50"/>
+ <val o="1790c5" v="50"/>
+ <val o="179ed4" v="50"/>
+ <val o="17ace4" v="50.1"/>
+ <val o="17bafd" v="50.1"/>
+ <val o="17c90f" v="50"/>
+ <val o="17d71e" v="50"/>
+ <val o="17e52f" v="50"/>
+ <val o="17f33f" v="50"/>
+ <val o="18014f" v="50"/>
+ <val o="180f5f" v="50"/>
+ <val o="181d6e" v="50.1"/>
+ <val o="182b7f" v="50"/>
+ <val o="18398f" v="50"/>
+ <val o="1847a1" v="50"/>
+ <val o="1855af" v="50"/>
+ <val o="1863c0" v="50"/>
+ <val o="1871cf" v="49.9"/>
+ <val o="187fe0" v="50"/>
+ <val o="188def" v="50"/>
+ <val o="189c00" v="50"/>
+ <val o="18b80d" v="50"/>
+ <val o="18c61c" v="49.9"/>
+ <val o="18d42c" v="50"/>
+ <val o="18e23b" v="50"/>
+ <val o="18f04b" v="50"/>
+ <val o="18fe5e" v="50"/>
+ <val o="190c76" v="50"/>
+ <val o="191a86" v="50"/>
+ <val o="192896" v="50"/>
+ <val o="1936a6" v="50"/>
+ <val o="1944b7" v="50"/>
+ <val o="1952c6" v="49.9"/>
+ <val o="1960d7" v="50"/>
+ <val o="196ee6" v="50"/>
+ <val o="197cf8" v="50"/>
+ <val o="198b0f" v="50"/>
+ <val o="19991f" v="50"/>
+ <val o="19b541" v="50"/>
+ <val o="19c34d" v="50"/>
+ <val o="19d15e" v="50"/>
+ <val o="19df80" v="50"/>
+ <val o="19ed90" v="50"/>
+ <val o="19eebe" v="50"/>
+ <val o="19fb8e" v="49.9"/>
+ <val o="1a09a0" v="50"/>
+ <val o="1a17ae" v="49.9"/>
+ <val o="1a25be" v="50"/>
+ <val o="1a33cd" v="50"/>
+ <val o="1a41dd" v="50"/>
+ <val o="1a4fed" v="50"/>
+ <val o="1a5e08" v="50"/>
+ <val o="1a6c05" v="50"/>
+ <val o="1a7a15" v="50.1"/>
+ <val o="1a8826" v="50"/>
+ <val o="1a9637" v="50"/>
+ <val o="1aa445" v="50"/>
+ <val o="1ab255" v="50"/>
+ <val o="1ac065" v="50"/>
+ <val o="1ace75" v="50"/>
+ <val o="1adc87" v="50"/>
+ <val o="1aea96" v="49.9"/>
+ <val o="1af8a7" v="50"/>
+ <val o="1b06b7" v="50"/>
+ <val o="1b14c6" v="50"/>
+ <val o="1c7460" v="50"/>
+ <val o="1c8270" v="50"/>
+ <val o="1c907e" v="50"/>
+ <val o="1c9e8f" v="50"/>
+ <val o="1caca2" v="50"/>
+ <val o="1cbab1" v="50"/>
+ <val o="1cc8c1" v="50"/>
+ <val o="1cd6d0" v="50"/>
+ <val o="1ce4de" v="50"/>
+ <val o="1cf2f0" v="50"/>
+ <val o="1d0109" v="50"/>
+ <val o="1d0f06" v="50"/>
+ <val o="1d1d15" v="50"/>
+ <val o="1d2b25" v="50"/>
+ <val o="1d3935" v="50"/>
+ <val o="1d4745" v="50"/>
+ <val o="1d5555" v="50"/>
+ <val o="1d6366" v="50"/>
+ <val o="1d7175" v="50"/>
+ <val o="1d7f86" v="50"/>
+ <val o="1d8d95" v="50"/>
+ <val o="1d9ba6" v="50"/>
+ <val o="1da9b6" v="50"/>
+ <val o="1db7c7" v="50"/>
+ <val o="1dc5d5" v="49.9"/>
+ <val o="1dd3e6" v="49.9"/>
+ <val o="1de1f5" v="50"/>
+ <val o="1df006" v="50"/>
+ <val o="1dfe16" v="50"/>
+ <val o="1e0c26" v="49.9"/>
+ <val o="1e1a36" v="49.9"/>
+ <val o="1e2847" v="50"/>
+ <val o="1e3659" v="50"/>
+ <val o="1e4467" v="50"/>
+ <val o="1e5281" v="50"/>
+ <val o="1e6086" v="50"/>
+ <val o="1e6e96" v="50"/>
+ <val o="1e7ca6" v="50"/>
+ <val o="1e8ab5" v="50"/>
+ <val o="1e98c6" v="49.9"/>
+ <val o="1ea6d5" v="50"/>
+ <val o="1eb4e6" v="50"/>
+ <val o="1ec2f6" v="50"/>
+ <val o="1ed106" v="50"/>
+ <val o="1edf16" v="50"/>
+ <val o="1eed26" v="49.9"/>
+ <val o="1efb36" v="50"/>
+ <val o="1f0946" v="50"/>
+ <val o="1f1756" v="50"/>
+ <val o="1f2566" v="50"/>
+ <val o="1f3376" v="50"/>
+ <val o="1f4187" v="50"/>
+ <val o="1f4f96" v="50"/>
+ <val o="1f5da7" v="50"/>
+ <val o="1f6bb6" v="50"/>
+ <val o="1f79c7" v="50.1"/>
+ <val o="1f87d6" v="50.1"/>
+ <val o="1f95e7" v="50"/>
+ <val o="1fa401" v="50"/>
+ <val o="1fb204" v="50"/>
+ <val o="1fc016" v="50"/>
+ <val o="1fce25" v="49.9"/>
+ <val o="1fdc35" v="50"/>
+ <val o="1fea45" v="50"/>
+ <val o="1ff855" v="50"/>
+ <val o="200665" v="49.9"/>
+ <val o="201475" v="50"/>
+ <val o="202286" v="49.9"/>
+ <val o="203095" v="49.9"/>
+ <val o="203ea5" v="50"/>
+ <val o="204cb6" v="50"/>
+ <val o="205ac6" v="50"/>
+ <val o="2068d6" v="50"/>
+ <val o="2076e6" v="50"/>
+ <val o="2084f6" v="50"/>
+ <val o="209306" v="50"/>
+ <val o="20a116" v="50"/>
+ <val o="20af26" v="49.9"/>
+ <val o="20bd37" v="49.9"/>
+ <val o="20cb46" v="49.9"/>
+ <val o="20d957" v="50"/>
+ <val o="20e767" v="50"/>
+ <val o="20f581" v="50"/>
+ <val o="210386" v="50"/>
+ <val o="211194" v="50"/>
+ <val o="211fa5" v="50"/>
+ <val o="212db5" v="50"/>
+ <val o="213bc5" v="50"/>
+ <val o="2149d6" v="50"/>
+ <val o="2157e5" v="50"/>
+ <val o="2165f6" v="50"/>
+ <val o="217406" v="50"/>
+ <val o="218217" v="50"/>
+ <val o="219026" v="50"/>
+ <val o="219e39" v="50"/>
+ <val o="21ac46" v="50"/>
+ <val o="21ba57" v="50"/>
+ <val o="21c867" v="50"/>
+ <val o="21d677" v="50"/>
+ <val o="21e487" v="50"/>
+ <val o="21f296" v="50"/>
+ <val o="2200a6" v="50"/>
+ <val o="220eb7" v="50"/>
+ <val o="221cc6" v="50"/>
+ <val o="222ad7" v="50"/>
+ <val o="2238e7" v="50"/>
+ <val o="224701" v="49.9"/>
+ <val o="225505" v="50"/>
+ <val o="226315" v="50"/>
+ <val o="227125" v="50"/>
+ <val o="227f35" v="50"/>
+ <val o="228d45" v="50"/>
+ <val o="229b54" v="50"/>
+ <val o="22a965" v="50"/>
+ <val o="22b776" v="50"/>
+ <val o="22c586" v="50"/>
+ <val o="22d397" v="50"/>
+ <val o="22e1a6" v="50"/>
+ <val o="22efb6" v="50.1"/>
+ <val o="22fdc7" v="50"/>
+ <val o="230bd7" v="50"/>
+ <val o="2319e6" v="50"/>
+ <val o="2327f6" v="50"/>
+ <val o="23361b" v="50"/>
+ <val o="234416" v="50"/>
+ <val o="235226" v="50"/>
+ <val o="236037" v="50"/>
+ <val o="236e46" v="49.9"/>
+ <val o="237c57" v="50"/>
+ <val o="238a66" v="50.1"/>
+ <val o="239881" v="50"/>
+ <val o="23a685" v="50"/>
+ <val o="23b495" v="50"/>
+ <val o="23c2a4" v="50"/>
+ <val o="23d0b5" v="50"/>
+ <val o="23dec4" v="50"/>
+ <val o="23ecd5" v="49.9"/>
+ <val o="23fae4" v="50"/>
+ <val o="2408f6" v="50"/>
+ <val o="241706" v="50"/>
+ <val o="242518" v="49.9"/>
+ <val o="243325" v="50"/>
+ <val o="244137" v="50"/>
+ <val o="244f46" v="50.1"/>
+ <val o="246b66" v="50"/>
+ <val o="247976" v="50"/>
+ <val o="248786" v="49.9"/>
+ <val o="24957e" v="50"/>
+ <val o="24a38f" v="49.9"/>
+ <val o="24b19c" v="50"/>
+ <val o="24bfac" v="50"/>
+ <val o="24cdbc" v="50"/>
+ <val o="24dbcd" v="50"/>
+ <val o="24e9e5" v="50"/>
+ <val o="24f808" v="50"/>
+ <val o="250616" v="50"/>
+ <val o="251426" v="49.9"/>
+ <val o="252236" v="50"/>
+ <val o="253047" v="50"/>
+ <val o="253e56" v="50"/>
+ <val o="254c67" v="50"/>
+ <val o="255a76" v="50"/>
+ <val o="256887" v="50"/>
+ <val o="257697" v="50"/>
+ <val o="2584a8" v="50"/>
+ <val o="2592b6" v="50"/>
+ <val o="25a0c7" v="50"/>
+ <val o="25aed7" v="50"/>
+ <val o="25bce7" v="50"/>
+ <val o="25caf8" v="50"/>
+ <val o="25d907" v="49.9"/>
+ <val o="25e718" v="50"/>
+ <val o="25f527" v="50"/>
+ <val o="260338" v="50"/>
+ <val o="261149" v="50"/>
+ <val o="261f59" v="50"/>
+ <val o="262d68" v="50.1"/>
+ <val o="263b83" v="50"/>
+ <val o="264986" v="50"/>
+ <val o="265795" v="50"/>
+ <val o="2665a6" v="50"/>
+ <val o="2673b5" v="50"/>
+ <val o="2681c6" v="50"/>
+ <val o="268fd5" v="50"/>
+ <val o="269de6" v="50"/>
+ <val o="26abf6" v="50"/>
+ <val o="26ba06" v="50"/>
+ <val o="26c817" v="50"/>
+ <val o="26d62b" v="50"/>
+ <val o="26e436" v="50"/>
+ <val o="26f247" v="50"/>
+ <val o="270057" v="50"/>
+ <val o="270e67" v="50"/>
+ <val o="271c77" v="50"/>
+ <val o="272a87" v="50"/>
+ <val o="273897" v="50"/>
+ <val o="2746a8" v="50"/>
+ <val o="2754b9" v="50"/>
+ <val o="2762c7" v="49.9"/>
+ <val o="2770d8" v="50"/>
+ <val o="277ee7" v="50"/>
+ </par>
+ <par memind="8612" h="3dc1a8de">
+ <val o="0" v="25.07"/>
+ <val o="e08" v="24.067"/>
+ <val o="1c32" v="23.438"/>
+ <val o="2a3c" v="23.245"/>
+ <val o="3835" v="22.784"/>
+ <val o="4645" v="22.746"/>
+ <val o="5455" v="26.297"/>
+ <val o="6265" v="28.878"/>
+ <val o="7075" v="34.451"/>
+ <val o="7e85" v="40.017"/>
+ <val o="8c96" v="40.572"/>
+ <val o="9aa5" v="38.682"/>
+ <val o="a8b6" v="35.869"/>
+ <val o="b6c5" v="34.12"/>
+ <val o="c4d7" v="0.035"/>
+ <val o="d30b" v="0.036"/>
+ <val o="e0f6" v="0.035"/>
+ <val o="ef06" v="0.037"/>
+ <val o="fd17" v="0.038"/>
+ <val o="10b27" v="0.037"/>
+ <val o="11937" v="0.037"/>
+ <val o="12746" v="0.036"/>
+ <val o="13556" v="0.035"/>
+ <val o="14366" v="0.036"/>
+ <val o="15181" v="0.037"/>
+ <val o="15f85" v="0.036"/>
+ <val o="16d95" v="0.036"/>
+ <val o="17ba4" v="0.035"/>
+ <val o="189b5" v="0.038"/>
+ <val o="197c4" v="0.036"/>
+ <val o="1a5d5" v="0.037"/>
+ <val o="1b3e6" v="0.034"/>
+ <val o="1c1f6" v="0.037"/>
+ <val o="1d005" v="0.035"/>
+ <val o="1de15" v="0.033"/>
+ <val o="1ec25" v="0.035"/>
+ <val o="1fa36" v="0.035"/>
+ <val o="20845" v="0.037"/>
+ <val o="21656" v="0.035"/>
+ <val o="22465" v="0.037"/>
+ <val o="23276" v="0.035"/>
+ <val o="24086" v="0.034"/>
+ <val o="24e99" v="0.035"/>
+ <val o="25ca7" v="0.035"/>
+ <val o="26ab7" v="0.035"/>
+ <val o="278c6" v="0.036"/>
+ <val o="286d6" v="0.035"/>
+ <val o="294e6" v="0.034"/>
+ <val o="2a301" v="0.036"/>
+ <val o="2b105" v="0.034"/>
+ <val o="2bf15" v="0.034"/>
+ <val o="2cd25" v="0.036"/>
+ <val o="2db35" v="0.034"/>
+ <val o="2e946" v="0.033"/>
+ <val o="2f755" v="0.034"/>
+ <val o="30566" v="0.035"/>
+ <val o="31375" v="0.035"/>
+ <val o="3219e" v="0.035"/>
+ <val o="32f96" v="0.036"/>
+ <val o="33da6" v="0.035"/>
+ <val o="34bb6" v="0.035"/>
+ <val o="359de" v="0.033"/>
+ <val o="367d6" v="0.035"/>
+ <val o="375e6" v="0.034"/>
+ <val o="3840e" v="0.033"/>
+ <val o="3921e" v="0.035"/>
+ <val o="3a016" v="0.035"/>
+ <val o="3ae27" v="0.036"/>
+ <val o="3bc36" v="0.035"/>
+ <val o="3ca47" v="0.035"/>
+ <val o="3d856" v="0.036"/>
+ <val o="3e667" v="0.035"/>
+ <val o="3f481" v="0.037"/>
+ <val o="40285" v="0.034"/>
+ <val o="41095" v="0.035"/>
+ <val o="41ea5" v="0.035"/>
+ <val o="42cb5" v="0.035"/>
+ <val o="43ac5" v="0.036"/>
+ <val o="448d5" v="0.038"/>
+ <val o="456e6" v="0.036"/>
+ <val o="464f5" v="0.039"/>
+ <val o="480ff" v="0.036"/>
+ <val o="48f0e" v="0.036"/>
+ <val o="49d1d" v="0.038"/>
+ <val o="4ab46" v="0.036"/>
+ <val o="4b955" v="0.037"/>
+ <val o="4c769" v="0.036"/>
+ <val o="4d577" v="0.036"/>
+ <val o="4e387" v="0.036"/>
+ <val o="4f196" v="0.036"/>
+ <val o="4ffa6" v="0.036"/>
+ <val o="50dd0" v="0.038"/>
+ <val o="51bc6" v="0.036"/>
+ <val o="529d6" v="0.036"/>
+ <val o="537e7" v="0.035"/>
+ <val o="54600" v="0.036"/>
+ <val o="55406" v="0.034"/>
+ <val o="56215" v="0.035"/>
+ <val o="57026" v="0.034"/>
+ <val o="57e36" v="0.036"/>
+ <val o="58c46" v="0.035"/>
+ <val o="59a70" v="0.04"/>
+ <val o="5a867" v="0.034"/>
+ <val o="5b676" v="0.035"/>
+ <val o="5c487" v="0.036"/>
+ <val o="5d296" v="0.037"/>
+ <val o="5e0a9" v="0.036"/>
+ <val o="5eeb8" v="0.039"/>
+ <val o="5fcc6" v="0.036"/>
+ <val o="60ad7" v="0.035"/>
+ <val o="618e7" v="0.036"/>
+ <val o="626f7" v="0.035"/>
+ <val o="63507" v="0.036"/>
+ <val o="64317" v="0.037"/>
+ <val o="65127" v="0.039"/>
+ <val o="65f37" v="0.037"/>
+ <val o="66d46" v="0.035"/>
+ <val o="67b57" v="0.036"/>
+ <val o="68967" v="0.035"/>
+ <val o="69782" v="0.035"/>
+ <val o="6a586" v="0.037"/>
+ <val o="6b395" v="0.035"/>
+ <val o="6c1a6" v="0.037"/>
+ <val o="6cfb5" v="0.035"/>
+ <val o="6ddc6" v="0.033"/>
+ <val o="6ebd6" v="0.033"/>
+ <val o="6f9e6" v="0.035"/>
+ <val o="707f6" v="0.035"/>
+ <val o="71607" v="0.037"/>
+ <val o="72417" v="0.037"/>
+ <val o="73227" v="0.037"/>
+ <val o="74037" v="0.037"/>
+ <val o="74e47" v="0.037"/>
+ <val o="75c57" v="0.04"/>
+ <val o="76a63" v="0.036"/>
+ <val o="77873" v="0.035"/>
+ <val o="78680" v="0.037"/>
+ <val o="7948f" v="0.036"/>
+ <val o="7a29f" v="0.036"/>
+ <val o="7b0af" v="0.036"/>
+ <val o="7bebf" v="0.036"/>
+ <val o="7cccf" v="0.037"/>
+ <val o="7dadf" v="0.036"/>
+ <val o="7e8fa" v="0.035"/>
+ <val o="7f70a" v="0.035"/>
+ <val o="8051a" v="0.036"/>
+ <val o="8132a" v="0.034"/>
+ <val o="8213a" v="0.035"/>
+ <val o="82f4a" v="0.036"/>
+ <val o="83d5a" v="0.035"/>
+ <val o="84b6a" v="0.034"/>
+ <val o="8597a" v="0.035"/>
+ <val o="8678b" v="0.036"/>
+ <val o="8759b" v="0.034"/>
+ <val o="883ac" v="0.037"/>
+ <val o="891bb" v="0.037"/>
+ <val o="89fca" v="0.035"/>
+ <val o="8adda" v="0.035"/>
+ <val o="8bbeb" v="0.035"/>
+ <val o="8c9fc" v="0.035"/>
+ <val o="8d80b" v="0.034"/>
+ <val o="8e61a" v="0.035"/>
+ <val o="8f42a" v="0.034"/>
+ <val o="9023a" v="0.036"/>
+ <val o="9104a" v="0.035"/>
+ <val o="91e5a" v="0.035"/>
+ <val o="92c6a" v="0.034"/>
+ <val o="93a84" v="0.035"/>
+ <val o="94885" v="0.036"/>
+ <val o="95694" v="0.034"/>
+ <val o="964a5" v="0.034"/>
+ <val o="972b4" v="0.034"/>
+ <val o="980c5" v="0.034"/>
+ <val o="98ed4" v="0.035"/>
+ <val o="99ce5" v="0.037"/>
+ <val o="9aaf5" v="0.034"/>
+ <val o="9b906" v="0.036"/>
+ <val o="9c716" v="0.037"/>
+ <val o="9d526" v="0.035"/>
+ <val o="9e336" v="0.035"/>
+ <val o="9f145" v="0.035"/>
+ <val o="9ff56" v="0.035"/>
+ <val o="a0d65" v="0.036"/>
+ <val o="a1b77" v="36.117"/>
+ <val o="a2986" v="17.613"/>
+ <val o="a3795" v="8.357"/>
+ <val o="a45a7" v="5.957"/>
+ <val o="a53b6" v="7.134"/>
+ <val o="a61c7" v="8.646"/>
+ <val o="a6fd6" v="6.429"/>
+ <val o="a7e00" v="10.235"/>
+ <val o="a8c00" v="14.027"/>
+ <val o="a9a05" v="3.549"/>
+ <val o="aa815" v="3.8"/>
+ <val o="ab625" v="6.093"/>
+ <val o="ac435" v="5.204"/>
+ <val o="ad245" v="7.526"/>
+ <val o="ae055" v="11.39"/>
+ <val o="aee65" v="0.954"/>
+ <val o="afc75" v="5.773"/>
+ <val o="b0a85" v="21.019"/>
+ <val o="b26a6" v="22.636"/>
+ <val o="b34b6" v="19.316"/>
+ <val o="b42c6" v="1.265"/>
+ <val o="b50d6" v="3.13"/>
+ <val o="b5ee7" v="6.091"/>
+ <val o="b6cf6" v="7.273"/>
+ <val o="b7b07" v="9.373"/>
+ <val o="b8917" v="7.711"/>
+ <val o="b9728" v="8.183"/>
+ <val o="ba537" v="9.843"/>
+ <val o="bb347" v="5.251"/>
+ <val o="bc157" v="2.646"/>
+ <val o="bcf67" v="7.175"/>
+ <val o="bdd81" v="19.697"/>
+ <val o="beb86" v="4.703"/>
+ <val o="bf995" v="5.017"/>
+ <val o="c07a6" v="5.028"/>
+ <val o="c15b5" v="4.406"/>
+ <val o="c23c6" v="5.164"/>
+ <val o="c31d5" v="10.951"/>
+ <val o="c3fe6" v="5.096"/>
+ <val o="c4df5" v="10.032"/>
+ <val o="c5c06" v="4.084"/>
+ <val o="c6a16" v="5.223"/>
+ <val o="c7826" v="6.622"/>
+ <val o="c8636" v="2.571"/>
+ <val o="c9446" v="3.766"/>
+ <val o="ca256" v="2.925"/>
+ <val o="cb066" v="4.239"/>
+ <val o="cbe76" v="2.442"/>
+ <val o="ccc87" v="10.653"/>
+ <val o="cda96" v="15.045"/>
+ <val o="ce8a8" v="10.497"/>
+ <val o="cf6b7" v="14.243"/>
+ <val o="d04c8" v="11.318"/>
+ <val o="d12d7" v="7.26"/>
+ <val o="d20e7" v="3.278"/>
+ <val o="d2f02" v="12.768"/>
+ <val o="d3d05" v="8.863"/>
+ <val o="d4b15" v="8.423"/>
+ <val o="d5926" v="7.503"/>
+ <val o="d6735" v="7.803"/>
+ <val o="d7546" v="10.91"/>
+ <val o="d8355" v="5.743"/>
+ <val o="d9166" v="2.082"/>
+ <val o="d9f75" v="7.751"/>
+ <val o="dad87" v="16.785"/>
+ <val o="dbb97" v="18.467"/>
+ <val o="dc9a8" v="18.801"/>
+ <val o="dd7b7" v="16.008"/>
+ <val o="de5c6" v="13.629"/>
+ <val o="df3d7" v="14.479"/>
+ <val o="e01d7" v="14.927"/>
+ <val o="e0fe5" v="14.349"/>
+ <val o="e1df5" v="15.502"/>
+ <val o="e2c04" v="20.07"/>
+ <val o="e3a14" v="20.011"/>
+ <val o="e4824" v="16.357"/>
+ <val o="e5634" v="17.03"/>
+ <val o="e6444" v="11.901"/>
+ <val o="e7255" v="10.138"/>
+ <val o="e806f" v="8.731"/>
+ <val o="e8e7f" v="14.357"/>
+ <val o="e9c8e" v="4.86"/>
+ <val o="eaa9f" v="4.149"/>
+ <val o="eb8ae" v="6.019"/>
+ <val o="ec6bf" v="14.635"/>
+ <val o="ed4ce" v="9.989"/>
+ <val o="ee2df" v="11.96"/>
+ <val o="ef0ef" v="15.422"/>
+ <val o="eff01" v="22.742"/>
+ <val o="f0d10" v="22.428"/>
+ <val o="f1b20" v="24.11"/>
+ <val o="f2930" v="23.076"/>
+ <val o="f3740" v="23.241"/>
+ <val o="f4551" v="24.018"/>
+ <val o="f5361" v="25.989"/>
+ <val o="f6172" v="24.748"/>
+ <val o="f6f80" v="25.323"/>
+ <val o="f7d91" v="23.122"/>
+ <val o="f8ba1" v="19.403"/>
+ <val o="f99b1" v="19.28"/>
+ <val o="fa7c0" v="16.12"/>
+ <val o="fb5d1" v="16.228"/>
+ <val o="fc3e0" v="16.654"/>
+ <val o="fd1fb" v="14.2"/>
+ <val o="fe00b" v="14.054"/>
+ <val o="fee1c" v="9.557"/>
+ <val o="ffc2c" v="9.072"/>
+ <val o="100a3b" v="8.333"/>
+ <val o="10184c" v="9.771"/>
+ <val o="10265b" v="14.337"/>
+ <val o="10346c" v="16.049"/>
+ <val o="10427b" v="19.911"/>
+ <val o="10508d" v="23.238"/>
+ <val o="105e9d" v="23.213"/>
+ <val o="106cad" v="25.179"/>
+ <val o="107abd" v="21.591"/>
+ <val o="1088cd" v="19.665"/>
+ <val o="1096de" v="21.079"/>
+ <val o="10a4ed" v="21.109"/>
+ <val o="10b2fe" v="22.363"/>
+ <val o="10c10d" v="25.172"/>
+ <val o="10cf1e" v="23.223"/>
+ <val o="10dd2e" v="20.912"/>
+ <val o="10eb66" v="22.017"/>
+ <val o="10f94e" v="18.729"/>
+ <val o="11075e" v="16.761"/>
+ <val o="11156d" v="13.145"/>
+ <val o="112388" v="13.912"/>
+ <val o="113187" v="8.712"/>
+ <val o="113fb0" v="8.106"/>
+ <val o="114da6" v="8.195"/>
+ <val o="115bb6" v="8.301"/>
+ <val o="1169c6" v="10.111"/>
+ <val o="1177d6" v="14.213"/>
+ <val o="1185e8" v="15.617"/>
+ <val o="1193f7" v="19.095"/>
+ <val o="11a208" v="23.986"/>
+ <val o="11b017" v="20.919"/>
+ <val o="11be2f" v="26.06"/>
+ <val o="11cc37" v="21.493"/>
+ <val o="11da47" v="21.006"/>
+ <val o="11e857" v="22.144"/>
+ <val o="11f667" v="19.124"/>
+ <val o="120578" v="0.019"/>
+ <val o="121386" v="0.021"/>
+ <val o="122196" v="0.021"/>
+ <val o="122fa6" v="0.018"/>
+ <val o="123db5" v="0.015"/>
+ <val o="124bc5" v="0.016"/>
+ <val o="1259d5" v="0.011"/>
+ <val o="1267e4" v="0.01"/>
+ <val o="127600" v="0.011"/>
+ <val o="128305" v="0.01"/>
+ <val o="129115" v="0.01"/>
+ <val o="129f25" v="0.01"/>
+ <val o="12ad35" v="0.009"/>
+ <val o="12bb45" v="0.006"/>
+ <val o="12c954" v="0.009"/>
+ <val o="12d766" v="0.011"/>
+ <val o="12e575" v="0.017"/>
+ <val o="12f386" v="0.012"/>
+ <val o="130196" v="0.019"/>
+ <val o="130fa6" v="0.014"/>
+ <val o="131db7" v="0.015"/>
+ <val o="132bc5" v="0.015"/>
+ <val o="1339d4" v="0.279"/>
+ <val o="1347e5" v="0.096"/>
+ <val o="1355f4" v="0.141"/>
+ <val o="136404" v="0.207"/>
+ <val o="137214" v="0.218"/>
+ <val o="138024" v="0.213"/>
+ <val o="138e33" v="0.214"/>
+ <val o="139c44" v="0.075"/>
+ <val o="13aa54" v="0.05"/>
+ <val o="13b865" v="0.034"/>
+ <val o="13c67e" v="0.449"/>
+ <val o="13d48e" v="0.217"/>
+ <val o="13e29e" v="0.167"/>
+ <val o="13f0ae" v="0.158"/>
+ <val o="13febf" v="0.232"/>
+ <val o="140ccf" v="0.339"/>
+ <val o="141adf" v="0.212"/>
+ <val o="1428ef" v="0.044"/>
+ <val o="1436ff" v="0.033"/>
+ <val o="14450f" v="0.025"/>
+ <val o="14531f" v="0.023"/>
+ <val o="146130" v="0.058"/>
+ <val o="146f40" v="0.145"/>
+ <val o="147d44" v="0.064"/>
+ <val o="148b57" v="0.08"/>
+ <val o="149965" v="0.067"/>
+ <val o="14a775" v="0.111"/>
+ <val o="14b584" v="0.05"/>
+ <val o="14c397" v="0.239"/>
+ <val o="14d1a4" v="0.206"/>
+ <val o="14dfb6" v="0.163"/>
+ <val o="14edc5" v="0.063"/>
+ <val o="14fbd5" v="0.027"/>
+ <val o="1509e5" v="0.077"/>
+ <val o="1517ff" v="0.153"/>
+ <val o="152605" v="0.181"/>
+ <val o="153415" v="0.149"/>
+ <val o="154225" v="0.157"/>
+ <val o="155035" v="0.166"/>
+ <val o="155e45" v="0.216"/>
+ <val o="156c55" v="0.306"/>
+ <val o="157a65" v="0.168"/>
+ <val o="158875" v="0.145"/>
+ <val o="159686" v="0.252"/>
+ <val o="15a495" v="0.213"/>
+ <val o="15b2a6" v="0.19"/>
+ <val o="15c0b6" v="0.111"/>
+ <val o="15cec6" v="0.114"/>
+ <val o="15dcd5" v="0.107"/>
+ <val o="15eae6" v="0.115"/>
+ <val o="15f8f5" v="0.302"/>
+ <val o="160706" v="0.03"/>
+ <val o="161517" v="0.06"/>
+ <val o="162326" v="0.048"/>
+ <val o="163137" v="0.069"/>
+ <val o="163f46" v="0.063"/>
+ <val o="164d57" v="0.029"/>
+ <val o="165b67" v="0.105"/>
+ <val o="166982" v="0.096"/>
+ <val o="167786" v="0.142"/>
+ <val o="168596" v="0.101"/>
+ <val o="1693a6" v="0.092"/>
+ <val o="16a1b5" v="0.071"/>
+ <val o="16afc6" v="0.067"/>
+ <val o="16bdd5" v="0.17"/>
+ <val o="16cbe6" v="0.212"/>
+ <val o="16d9f6" v="0.089"/>
+ <val o="16e807" v="0.607"/>
+ <val o="16f616" v="0.675"/>
+ <val o="170429" v="0.723"/>
+ <val o="171236" v="0.477"/>
+ <val o="172047" v="0.477"/>
+ <val o="172e57" v="0.491"/>
+ <val o="173c67" v="0.496"/>
+ <val o="174a77" v="0.579"/>
+ <val o="175887" v="0.62"/>
+ <val o="176694" v="35.716"/>
+ <val o="1774a3" v="33.973"/>
+ <val o="1782b3" v="35.295"/>
+ <val o="1790c5" v="32.429"/>
+ <val o="179ed4" v="28.433"/>
+ <val o="17ace4" v="29.24"/>
+ <val o="17bafd" v="30.943"/>
+ <val o="17c90f" v="28.05"/>
+ <val o="17d71e" v="27.792"/>
+ <val o="17e52f" v="28.102"/>
+ <val o="17f33f" v="25.534"/>
+ <val o="18014f" v="25.021"/>
+ <val o="180f5f" v="30.046"/>
+ <val o="181d6e" v="32.772"/>
+ <val o="182b7f" v="38.186"/>
+ <val o="18398f" v="64.34"/>
+ <val o="1847a1" v="63.582"/>
+ <val o="1855af" v="60.895"/>
+ <val o="1863c0" v="57.167"/>
+ <val o="1871cf" v="59.436"/>
+ <val o="187fe0" v="56.655"/>
+ <val o="188def" v="60.597"/>
+ <val o="189c00" v="56.836"/>
+ <val o="18b80d" v="37.581"/>
+ <val o="18c61c" v="40.1"/>
+ <val o="18d42c" v="38.214"/>
+ <val o="18e23b" v="32.175"/>
+ <val o="18f04b" v="30.662"/>
+ <val o="18fe5e" v="26.933"/>
+ <val o="190c76" v="21.269"/>
+ <val o="191a86" v="21.646"/>
+ <val o="192896" v="21.244"/>
+ <val o="1936a6" v="20.855"/>
+ <val o="1944b7" v="19.588"/>
+ <val o="1952c6" v="20.809"/>
+ <val o="1960d7" v="25.64"/>
+ <val o="196ee6" v="29.166"/>
+ <val o="197cf8" v="31.236"/>
+ <val o="198b0f" v="28.424"/>
+ <val o="19991f" v="32.717"/>
+ <val o="19b541" v="32.231"/>
+ <val o="19c34d" v="29.816"/>
+ <val o="19d15e" v="29.219"/>
+ <val o="19df80" v="29.861"/>
+ <val o="19ed90" v="29.093"/>
+ <val o="19eebe" v="29.004"/>
+ <val o="19fb8e" v="10.445"/>
+ <val o="1a09a0" v="18.158"/>
+ <val o="1a17ae" v="23.713"/>
+ <val o="1a25be" v="25.84"/>
+ <val o="1a33cd" v="13.692"/>
+ <val o="1a41dd" v="15.619"/>
+ <val o="1a4fed" v="22.235"/>
+ <val o="1a5e08" v="20.533"/>
+ <val o="1a6c05" v="14.806"/>
+ <val o="1a7a15" v="17.786"/>
+ <val o="1a8826" v="18.205"/>
+ <val o="1a9637" v="14.86"/>
+ <val o="1aa445" v="11.317"/>
+ <val o="1ab255" v="6.403"/>
+ <val o="1ac065" v="13.389"/>
+ <val o="1ace75" v="18.094"/>
+ <val o="1adc87" v="16.688"/>
+ <val o="1aea96" v="16.251"/>
+ <val o="1af8a7" v="17.902"/>
+ <val o="1b06b7" v="16.864"/>
+ <val o="1b14c6" v="16.076"/>
+ <val o="1c7460" v="4.33"/>
+ <val o="1c8270" v="4.33"/>
+ <val o="1c907e" v="21.221"/>
+ <val o="1c9e8f" v="20.86"/>
+ <val o="1caca2" v="22.903"/>
+ <val o="1cbab1" v="22.672"/>
+ <val o="1cc8c1" v="34.711"/>
+ <val o="1cd6d0" v="33.792"/>
+ <val o="1ce4de" v="32.717"/>
+ <val o="1cf2f0" v="33.04"/>
+ <val o="1d0109" v="34.047"/>
+ <val o="1d0f06" v="36.536"/>
+ <val o="1d1d15" v="36.673"/>
+ <val o="1d2b25" v="36.752"/>
+ <val o="1d3935" v="37.932"/>
+ <val o="1d4745" v="37.857"/>
+ <val o="1d5555" v="37.029"/>
+ <val o="1d6366" v="32.844"/>
+ <val o="1d7175" v="31.917"/>
+ <val o="1d7f86" v="31.363"/>
+ <val o="1d8d95" v="15.349"/>
+ <val o="1d9ba6" v="17.623"/>
+ <val o="1da9b6" v="17.658"/>
+ <val o="1db7c7" v="16.597"/>
+ <val o="1dc5d5" v="17.621"/>
+ <val o="1dd3e6" v="18.017"/>
+ <val o="1de1f5" v="32.337"/>
+ <val o="1df006" v="37.113"/>
+ <val o="1dfe16" v="36.896"/>
+ <val o="1e0c26" v="37.646"/>
+ <val o="1e1a36" v="37.465"/>
+ <val o="1e2847" v="35.96"/>
+ <val o="1e3659" v="34.217"/>
+ <val o="1e4467" v="31.472"/>
+ <val o="1e5281" v="27.913"/>
+ <val o="1e6086" v="27.77"/>
+ <val o="1e6e96" v="27.092"/>
+ <val o="1e7ca6" v="9.65"/>
+ <val o="1e8ab5" v="8.989"/>
+ <val o="1e98c6" v="8.871"/>
+ <val o="1ea6d5" v="11.525"/>
+ <val o="1eb4e6" v="11.312"/>
+ <val o="1ec2f6" v="13.145"/>
+ <val o="1ed106" v="12.866"/>
+ <val o="1edf16" v="13.503"/>
+ <val o="1eed26" v="12.977"/>
+ <val o="1efb36" v="12.853"/>
+ <val o="1f0946" v="12.322"/>
+ <val o="1f1756" v="11.244"/>
+ <val o="1f2566" v="11.357"/>
+ <val o="1f3376" v="13.909"/>
+ <val o="1f4187" v="20.778"/>
+ <val o="1f4f96" v="17.384"/>
+ <val o="1f5da7" v="17.882"/>
+ <val o="1f6bb6" v="17.779"/>
+ <val o="1f79c7" v="15.628"/>
+ <val o="1f87d6" v="18.718"/>
+ <val o="1f95e7" v="19.687"/>
+ <val o="1fa401" v="15.856"/>
+ <val o="1fb204" v="14.235"/>
+ <val o="1fc016" v="14.121"/>
+ <val o="1fce25" v="10.417"/>
+ <val o="1fdc35" v="10.192"/>
+ <val o="1fea45" v="10.247"/>
+ <val o="1ff855" v="12.409"/>
+ <val o="200665" v="18.782"/>
+ <val o="201475" v="17.709"/>
+ <val o="202286" v="24.468"/>
+ <val o="203095" v="27.895"/>
+ <val o="203ea5" v="31.135"/>
+ <val o="204cb6" v="28.073"/>
+ <val o="205ac6" v="26.781"/>
+ <val o="2068d6" v="27.955"/>
+ <val o="2076e6" v="31.834"/>
+ <val o="2084f6" v="30.684"/>
+ <val o="209306" v="33.239"/>
+ <val o="20a116" v="31.592"/>
+ <val o="20af26" v="27.051"/>
+ <val o="20bd37" v="26.891"/>
+ <val o="20cb46" v="22.834"/>
+ <val o="20d957" v="21.1"/>
+ <val o="20e767" v="20.723"/>
+ <val o="20f581" v="20.412"/>
+ <val o="210386" v="17.178"/>
+ <val o="211194" v="14.845"/>
+ <val o="211fa5" v="14.404"/>
+ <val o="212db5" v="13.895"/>
+ <val o="213bc5" v="14.291"/>
+ <val o="2149d6" v="18.376"/>
+ <val o="2157e5" v="22.682"/>
+ <val o="2165f6" v="29.056"/>
+ <val o="217406" v="30.985"/>
+ <val o="218217" v="31.244"/>
+ <val o="219026" v="30.501"/>
+ <val o="219e39" v="30.757"/>
+ <val o="21ac46" v="29.766"/>
+ <val o="21ba57" v="29.686"/>
+ <val o="21c867" v="30.47"/>
+ <val o="21d677" v="31.06"/>
+ <val o="21e487" v="28.958"/>
+ <val o="21f296" v="28.474"/>
+ <val o="2200a6" v="27.753"/>
+ <val o="220eb7" v="26.676"/>
+ <val o="221cc6" v="24.07"/>
+ <val o="222ad7" v="18.889"/>
+ <val o="2238e7" v="17.556"/>
+ <val o="224701" v="16.434"/>
+ <val o="225505" v="18.47"/>
+ <val o="226315" v="9.837"/>
+ <val o="227125" v="9.73"/>
+ <val o="227f35" v="12.672"/>
+ <val o="228d45" v="17.29"/>
+ <val o="229b54" v="17.161"/>
+ <val o="22a965" v="19.388"/>
+ <val o="22b776" v="22.792"/>
+ <val o="22c586" v="25.973"/>
+ <val o="22d397" v="28.305"/>
+ <val o="22e1a6" v="28.475"/>
+ <val o="22efb6" v="23.531"/>
+ <val o="22fdc7" v="22.62"/>
+ <val o="230bd7" v="22.13"/>
+ <val o="2319e6" v="27.159"/>
+ <val o="2327f6" v="27.705"/>
+ <val o="23361b" v="29.796"/>
+ <val o="234416" v="27.341"/>
+ <val o="235226" v="25.887"/>
+ <val o="236037" v="25.842"/>
+ <val o="236e46" v="23.266"/>
+ <val o="237c57" v="21.664"/>
+ <val o="238a66" v="19.437"/>
+ <val o="239881" v="15.912"/>
+ <val o="23a685" v="16.037"/>
+ <val o="23b495" v="15.674"/>
+ <val o="23c2a4" v="13.705"/>
+ <val o="23d0b5" v="14.331"/>
+ <val o="23dec4" v="15.781"/>
+ <val o="23ecd5" v="18.196"/>
+ <val o="23fae4" v="22.115"/>
+ <val o="2408f6" v="26.066"/>
+ <val o="241706" v="34.813"/>
+ <val o="242518" v="35.914"/>
+ <val o="243325" v="36.775"/>
+ <val o="244137" v="34.277"/>
+ <val o="244f46" v="32.056"/>
+ <val o="246b66" v="33.001"/>
+ <val o="247976" v="31.687"/>
+ <val o="248786" v="36.854"/>
+ <val o="24957e" v="30.428"/>
+ <val o="24a38f" v="28.246"/>
+ <val o="24b19c" v="28.984"/>
+ <val o="24bfac" v="27.176"/>
+ <val o="24cdbc" v="26.455"/>
+ <val o="24dbcd" v="21.891"/>
+ <val o="24e9e5" v="20.073"/>
+ <val o="24f808" v="17.083"/>
+ <val o="250616" v="17.921"/>
+ <val o="251426" v="17.972"/>
+ <val o="252236" v="16.1"/>
+ <val o="253047" v="17.324"/>
+ <val o="253e56" v="20.97"/>
+ <val o="254c67" v="21.269"/>
+ <val o="255a76" v="25.041"/>
+ <val o="256887" v="31.27"/>
+ <val o="257697" v="33.712"/>
+ <val o="2584a8" v="82.744"/>
+ <val o="2592b6" v="46.746"/>
+ <val o="25a0c7" v="22.903"/>
+ <val o="25aed7" v="31.343"/>
+ <val o="25bce7" v="30.438"/>
+ <val o="25caf8" v="28.883"/>
+ <val o="25d907" v="30.794"/>
+ <val o="25e718" v="31.011"/>
+ <val o="25f527" v="28.098"/>
+ <val o="260338" v="27.177"/>
+ <val o="261149" v="24.941"/>
+ <val o="261f59" v="22.834"/>
+ <val o="262d68" v="23.209"/>
+ <val o="263b83" v="17.56"/>
+ <val o="264986" v="17.555"/>
+ <val o="265795" v="18.761"/>
+ <val o="2665a6" v="20.698"/>
+ <val o="2673b5" v="19.372"/>
+ <val o="2681c6" v="18.644"/>
+ <val o="268fd5" v="18.792"/>
+ <val o="269de6" v="18.951"/>
+ <val o="26abf6" v="18.907"/>
+ <val o="26ba06" v="23.409"/>
+ <val o="26c817" v="23.511"/>
+ <val o="26d62b" v="26.941"/>
+ <val o="26e436" v="24.008"/>
+ <val o="26f247" v="23.147"/>
+ <val o="270057" v="23.935"/>
+ <val o="270e67" v="24"/>
+ <val o="271c77" v="22.888"/>
+ <val o="272a87" v="26.246"/>
+ <val o="273897" v="25.909"/>
+ <val o="2746a8" v="25.109"/>
+ <val o="2754b9" v="24.725"/>
+ <val o="2762c7" v="23.755"/>
+ <val o="2770d8" v="18.839"/>
+ <val o="277ee7" v="15.362"/>
+ </par>
+ <par memind="8608" h="3dc1a8de">
+ <val o="0" v="0"/>
+ <val o="e08" v="0"/>
+ <val o="1c32" v="0"/>
+ <val o="2a3c" v="0"/>
+ <val o="3835" v="0"/>
+ <val o="4645" v="0"/>
+ <val o="5455" v="0"/>
+ <val o="6265" v="0"/>
+ <val o="7075" v="0"/>
+ <val o="7e85" v="0"/>
+ <val o="8c96" v="0"/>
+ <val o="9aa5" v="0"/>
+ <val o="a8b6" v="0"/>
+ <val o="b6c5" v="0"/>
+ <val o="c4d7" v="0"/>
+ <val o="d30b" v="0"/>
+ <val o="e0f6" v="0"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="0"/>
+ <val o="11937" v="0"/>
+ <val o="12746" v="0"/>
+ <val o="13556" v="0"/>
+ <val o="14366" v="0"/>
+ <val o="15181" v="0"/>
+ <val o="15f85" v="0"/>
+ <val o="16d95" v="0"/>
+ <val o="17ba4" v="0"/>
+ <val o="189b5" v="0"/>
+ <val o="197c4" v="0"/>
+ <val o="1a5d5" v="0"/>
+ <val o="1b3e6" v="0"/>
+ <val o="1c1f6" v="0"/>
+ <val o="1d005" v="0"/>
+ <val o="1de15" v="0"/>
+ <val o="1ec25" v="0"/>
+ <val o="1fa36" v="0"/>
+ <val o="20845" v="0"/>
+ <val o="21656" v="0"/>
+ <val o="22465" v="0"/>
+ <val o="23276" v="0"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="0"/>
+ <val o="25ca7" v="0"/>
+ <val o="26ab7" v="0"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="0"/>
+ <val o="294e6" v="0"/>
+ <val o="2a301" v="0"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="0"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="0"/>
+ <val o="31375" v="0"/>
+ <val o="3219e" v="0"/>
+ <val o="32f96" v="0"/>
+ <val o="33da6" v="0"/>
+ <val o="34bb6" v="0"/>
+ <val o="359de" v="0"/>
+ <val o="367d6" v="0"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="0"/>
+ <val o="3bc36" v="0"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="0"/>
+ <val o="3e667" v="0"/>
+ <val o="3f481" v="0"/>
+ <val o="40285" v="0"/>
+ <val o="41095" v="0"/>
+ <val o="41ea5" v="0"/>
+ <val o="42cb5" v="0"/>
+ <val o="43ac5" v="0"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="0"/>
+ <val o="464f5" v="0"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="0"/>
+ <val o="54600" v="0"/>
+ <val o="55406" v="0"/>
+ <val o="56215" v="0"/>
+ <val o="57026" v="0"/>
+ <val o="57e36" v="0"/>
+ <val o="58c46" v="0"/>
+ <val o="59a70" v="0"/>
+ <val o="5a867" v="0"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="0"/>
+ <val o="5eeb8" v="0"/>
+ <val o="5fcc6" v="0"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="0"/>
+ <val o="65f37" v="0"/>
+ <val o="66d46" v="0"/>
+ <val o="67b57" v="0"/>
+ <val o="68967" v="0"/>
+ <val o="69782" v="0"/>
+ <val o="6a586" v="0"/>
+ <val o="6b395" v="0"/>
+ <val o="6c1a6" v="0"/>
+ <val o="6cfb5" v="0"/>
+ <val o="6ddc6" v="0"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="0"/>
+ <val o="707f6" v="0"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="0"/>
+ <val o="74e47" v="0"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="0"/>
+ <val o="7bebf" v="0"/>
+ <val o="7cccf" v="0"/>
+ <val o="7dadf" v="0"/>
+ <val o="7e8fa" v="0"/>
+ <val o="7f70a" v="0"/>
+ <val o="8051a" v="0"/>
+ <val o="8132a" v="0"/>
+ <val o="8213a" v="0"/>
+ <val o="82f4a" v="0"/>
+ <val o="83d5a" v="0"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="0"/>
+ <val o="891bb" v="0"/>
+ <val o="89fca" v="0"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="0"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="0"/>
+ <val o="93a84" v="0"/>
+ <val o="94885" v="0"/>
+ <val o="95694" v="0"/>
+ <val o="964a5" v="0"/>
+ <val o="972b4" v="0"/>
+ <val o="980c5" v="0"/>
+ <val o="98ed4" v="0"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="0"/>
+ <val o="9c716" v="0"/>
+ <val o="9d526" v="0"/>
+ <val o="9e336" v="0"/>
+ <val o="9f145" v="0"/>
+ <val o="9ff56" v="0"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="0"/>
+ <val o="a2986" v="0"/>
+ <val o="a3795" v="0"/>
+ <val o="a45a7" v="0"/>
+ <val o="a53b6" v="0"/>
+ <val o="a61c7" v="0"/>
+ <val o="a6fd6" v="0"/>
+ <val o="a7e00" v="0"/>
+ <val o="a8c00" v="0"/>
+ <val o="a9a05" v="0"/>
+ <val o="aa815" v="0"/>
+ <val o="ab625" v="0"/>
+ <val o="ac435" v="0"/>
+ <val o="ad245" v="0"/>
+ <val o="ae055" v="0"/>
+ <val o="aee65" v="0"/>
+ <val o="afc75" v="0"/>
+ <val o="b0a85" v="0"/>
+ <val o="b26a6" v="0"/>
+ <val o="b34b6" v="0"/>
+ <val o="b42c6" v="0"/>
+ <val o="b50d6" v="0"/>
+ <val o="b5ee7" v="0"/>
+ <val o="b6cf6" v="0"/>
+ <val o="b7b07" v="0"/>
+ <val o="b8917" v="0"/>
+ <val o="b9728" v="0"/>
+ <val o="ba537" v="0"/>
+ <val o="bb347" v="0"/>
+ <val o="bc157" v="0"/>
+ <val o="bcf67" v="0"/>
+ <val o="bdd81" v="0"/>
+ <val o="beb86" v="0"/>
+ <val o="bf995" v="0"/>
+ <val o="c07a6" v="0"/>
+ <val o="c15b5" v="0"/>
+ <val o="c23c6" v="0"/>
+ <val o="c31d5" v="0"/>
+ <val o="c3fe6" v="0"/>
+ <val o="c4df5" v="0"/>
+ <val o="c5c06" v="0"/>
+ <val o="c6a16" v="0"/>
+ <val o="c7826" v="0"/>
+ <val o="c8636" v="0"/>
+ <val o="c9446" v="0"/>
+ <val o="ca256" v="0"/>
+ <val o="cb066" v="0"/>
+ <val o="cbe76" v="0"/>
+ <val o="ccc87" v="0"/>
+ <val o="cda96" v="0"/>
+ <val o="ce8a8" v="0"/>
+ <val o="cf6b7" v="0"/>
+ <val o="d04c8" v="0"/>
+ <val o="d12d7" v="0"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="0"/>
+ <val o="d3d05" v="0"/>
+ <val o="d4b15" v="0"/>
+ <val o="d5926" v="0"/>
+ <val o="d6735" v="0"/>
+ <val o="d7546" v="0"/>
+ <val o="d8355" v="0"/>
+ <val o="d9166" v="0"/>
+ <val o="d9f75" v="0"/>
+ <val o="dad87" v="0"/>
+ <val o="dbb97" v="0"/>
+ <val o="dc9a8" v="0"/>
+ <val o="dd7b7" v="0"/>
+ <val o="de5c6" v="0"/>
+ <val o="df3d7" v="0"/>
+ <val o="e01d7" v="0"/>
+ <val o="e0fe5" v="0"/>
+ <val o="e1df5" v="0"/>
+ <val o="e2c04" v="0"/>
+ <val o="e3a14" v="0"/>
+ <val o="e4824" v="0"/>
+ <val o="e5634" v="0"/>
+ <val o="e6444" v="0"/>
+ <val o="e7255" v="0"/>
+ <val o="e806f" v="0"/>
+ <val o="e8e7f" v="0"/>
+ <val o="e9c8e" v="0"/>
+ <val o="eaa9f" v="0"/>
+ <val o="eb8ae" v="0"/>
+ <val o="ec6bf" v="0"/>
+ <val o="ed4ce" v="0"/>
+ <val o="ee2df" v="0"/>
+ <val o="ef0ef" v="0"/>
+ <val o="eff01" v="0"/>
+ <val o="f0d10" v="0"/>
+ <val o="f1b20" v="0"/>
+ <val o="f2930" v="0"/>
+ <val o="f3740" v="0"/>
+ <val o="f4551" v="0"/>
+ <val o="f5361" v="0"/>
+ <val o="f6172" v="0"/>
+ <val o="f6f80" v="0"/>
+ <val o="f7d91" v="0"/>
+ <val o="f8ba1" v="0"/>
+ <val o="f99b1" v="0"/>
+ <val o="fa7c0" v="0"/>
+ <val o="fb5d1" v="0"/>
+ <val o="fc3e0" v="0"/>
+ <val o="fd1fb" v="0"/>
+ <val o="fe00b" v="0"/>
+ <val o="fee1c" v="0"/>
+ <val o="ffc2c" v="0"/>
+ <val o="100a3b" v="0"/>
+ <val o="10184c" v="0"/>
+ <val o="10265b" v="0"/>
+ <val o="10346c" v="0"/>
+ <val o="10427b" v="0"/>
+ <val o="10508d" v="0"/>
+ <val o="105e9d" v="0"/>
+ <val o="106cad" v="0"/>
+ <val o="107abd" v="0"/>
+ <val o="1088cd" v="0"/>
+ <val o="1096de" v="0"/>
+ <val o="10a4ed" v="0"/>
+ <val o="10b2fe" v="0"/>
+ <val o="10c10d" v="0"/>
+ <val o="10cf1e" v="0"/>
+ <val o="10dd2e" v="0"/>
+ <val o="10eb66" v="0"/>
+ <val o="10f94e" v="0"/>
+ <val o="11075e" v="0"/>
+ <val o="11156d" v="0"/>
+ <val o="112388" v="0"/>
+ <val o="113187" v="0"/>
+ <val o="113fb0" v="0"/>
+ <val o="114da6" v="0"/>
+ <val o="115bb6" v="0"/>
+ <val o="1169c6" v="0"/>
+ <val o="1177d6" v="0"/>
+ <val o="1185e8" v="0"/>
+ <val o="1193f7" v="0"/>
+ <val o="11a208" v="0"/>
+ <val o="11b017" v="0"/>
+ <val o="11be2f" v="0"/>
+ <val o="11cc37" v="0"/>
+ <val o="11da47" v="0"/>
+ <val o="11e857" v="0"/>
+ <val o="11f667" v="0"/>
+ <val o="120578" v="0"/>
+ <val o="121386" v="0"/>
+ <val o="122196" v="0"/>
+ <val o="122fa6" v="0"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="0"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="0"/>
+ <val o="128305" v="0"/>
+ <val o="129115" v="0"/>
+ <val o="129f25" v="0"/>
+ <val o="12ad35" v="0"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="0"/>
+ <val o="12d766" v="0"/>
+ <val o="12e575" v="0"/>
+ <val o="12f386" v="0"/>
+ <val o="130196" v="0"/>
+ <val o="130fa6" v="0"/>
+ <val o="131db7" v="0"/>
+ <val o="132bc5" v="0"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="0"/>
+ <val o="1774a3" v="0"/>
+ <val o="1782b3" v="0"/>
+ <val o="1790c5" v="0"/>
+ <val o="179ed4" v="0"/>
+ <val o="17ace4" v="0"/>
+ <val o="17bafd" v="0"/>
+ <val o="17c90f" v="0"/>
+ <val o="17d71e" v="0"/>
+ <val o="17e52f" v="0"/>
+ <val o="17f33f" v="0"/>
+ <val o="18014f" v="0"/>
+ <val o="180f5f" v="0"/>
+ <val o="181d6e" v="0"/>
+ <val o="182b7f" v="0"/>
+ <val o="18398f" v="0"/>
+ <val o="1847a1" v="0"/>
+ <val o="1855af" v="0"/>
+ <val o="1863c0" v="0"/>
+ <val o="1871cf" v="0"/>
+ <val o="187fe0" v="0"/>
+ <val o="188def" v="0"/>
+ <val o="189c00" v="0"/>
+ <val o="18b80d" v="0"/>
+ <val o="18c61c" v="0"/>
+ <val o="18d42c" v="0"/>
+ <val o="18e23b" v="0"/>
+ <val o="18f04b" v="0"/>
+ <val o="18fe5e" v="0"/>
+ <val o="190c76" v="0"/>
+ <val o="191a86" v="0"/>
+ <val o="192896" v="0"/>
+ <val o="1936a6" v="0"/>
+ <val o="1944b7" v="0"/>
+ <val o="1952c6" v="0"/>
+ <val o="1960d7" v="0"/>
+ <val o="196ee6" v="0"/>
+ <val o="197cf8" v="0"/>
+ <val o="198b0f" v="0"/>
+ <val o="19991f" v="0"/>
+ <val o="19b541" v="0"/>
+ <val o="19c34d" v="0"/>
+ <val o="19d15e" v="0"/>
+ <val o="19df80" v="0"/>
+ <val o="19ed90" v="0"/>
+ <val o="19eebe" v="0"/>
+ <val o="19fb8e" v="0"/>
+ <val o="1a09a0" v="0"/>
+ <val o="1a17ae" v="0"/>
+ <val o="1a25be" v="0"/>
+ <val o="1a33cd" v="0"/>
+ <val o="1a41dd" v="0"/>
+ <val o="1a4fed" v="0"/>
+ <val o="1a5e08" v="0"/>
+ <val o="1a6c05" v="0"/>
+ <val o="1a7a15" v="0"/>
+ <val o="1a8826" v="0"/>
+ <val o="1a9637" v="0"/>
+ <val o="1aa445" v="0"/>
+ <val o="1ab255" v="0"/>
+ <val o="1ac065" v="0"/>
+ <val o="1ace75" v="0"/>
+ <val o="1adc87" v="0"/>
+ <val o="1aea96" v="0"/>
+ <val o="1af8a7" v="0"/>
+ <val o="1b06b7" v="0"/>
+ <val o="1b14c6" v="0"/>
+ <val o="1c7460" v="0"/>
+ <val o="1c8270" v="0"/>
+ <val o="1c907e" v="0"/>
+ <val o="1c9e8f" v="0"/>
+ <val o="1caca2" v="0"/>
+ <val o="1cbab1" v="0"/>
+ <val o="1cc8c1" v="0"/>
+ <val o="1cd6d0" v="0"/>
+ <val o="1ce4de" v="0"/>
+ <val o="1cf2f0" v="0"/>
+ <val o="1d0109" v="0"/>
+ <val o="1d0f06" v="0"/>
+ <val o="1d1d15" v="0"/>
+ <val o="1d2b25" v="0"/>
+ <val o="1d3935" v="0"/>
+ <val o="1d4745" v="0"/>
+ <val o="1d5555" v="0"/>
+ <val o="1d6366" v="0"/>
+ <val o="1d7175" v="0"/>
+ <val o="1d7f86" v="0"/>
+ <val o="1d8d95" v="0"/>
+ <val o="1d9ba6" v="0"/>
+ <val o="1da9b6" v="0"/>
+ <val o="1db7c7" v="0"/>
+ <val o="1dc5d5" v="0"/>
+ <val o="1dd3e6" v="0"/>
+ <val o="1de1f5" v="0"/>
+ <val o="1df006" v="0"/>
+ <val o="1dfe16" v="0"/>
+ <val o="1e0c26" v="0"/>
+ <val o="1e1a36" v="0"/>
+ <val o="1e2847" v="0"/>
+ <val o="1e3659" v="0"/>
+ <val o="1e4467" v="0"/>
+ <val o="1e5281" v="0"/>
+ <val o="1e6086" v="0"/>
+ <val o="1e6e96" v="0"/>
+ <val o="1e7ca6" v="0"/>
+ <val o="1e8ab5" v="0"/>
+ <val o="1e98c6" v="0"/>
+ <val o="1ea6d5" v="0"/>
+ <val o="1eb4e6" v="0"/>
+ <val o="1ec2f6" v="0"/>
+ <val o="1ed106" v="0"/>
+ <val o="1edf16" v="0"/>
+ <val o="1eed26" v="0"/>
+ <val o="1efb36" v="0"/>
+ <val o="1f0946" v="0"/>
+ <val o="1f1756" v="0"/>
+ <val o="1f2566" v="0"/>
+ <val o="1f3376" v="0"/>
+ <val o="1f4187" v="0"/>
+ <val o="1f4f96" v="0"/>
+ <val o="1f5da7" v="0"/>
+ <val o="1f6bb6" v="0"/>
+ <val o="1f79c7" v="0"/>
+ <val o="1f87d6" v="0"/>
+ <val o="1f95e7" v="0"/>
+ <val o="1fa401" v="0"/>
+ <val o="1fb204" v="0"/>
+ <val o="1fc016" v="0"/>
+ <val o="1fce25" v="0"/>
+ <val o="1fdc35" v="0"/>
+ <val o="1fea45" v="0"/>
+ <val o="1ff855" v="0"/>
+ <val o="200665" v="0"/>
+ <val o="201475" v="0"/>
+ <val o="202286" v="0"/>
+ <val o="203095" v="0"/>
+ <val o="203ea5" v="0"/>
+ <val o="204cb6" v="0"/>
+ <val o="205ac6" v="0"/>
+ <val o="2068d6" v="0"/>
+ <val o="2076e6" v="0"/>
+ <val o="2084f6" v="0"/>
+ <val o="209306" v="0"/>
+ <val o="20a116" v="0"/>
+ <val o="20af26" v="0"/>
+ <val o="20bd37" v="0"/>
+ <val o="20cb46" v="0"/>
+ <val o="20d957" v="0"/>
+ <val o="20e767" v="0"/>
+ <val o="20f581" v="0"/>
+ <val o="210386" v="0"/>
+ <val o="211194" v="0"/>
+ <val o="211fa5" v="0"/>
+ <val o="212db5" v="0"/>
+ <val o="213bc5" v="0"/>
+ <val o="2149d6" v="0"/>
+ <val o="2157e5" v="0"/>
+ <val o="2165f6" v="0"/>
+ <val o="217406" v="0"/>
+ <val o="218217" v="0"/>
+ <val o="219026" v="0"/>
+ <val o="219e39" v="0"/>
+ <val o="21ac46" v="0"/>
+ <val o="21ba57" v="0"/>
+ <val o="21c867" v="0"/>
+ <val o="21d677" v="0"/>
+ <val o="21e487" v="0"/>
+ <val o="21f296" v="0"/>
+ <val o="2200a6" v="0"/>
+ <val o="220eb7" v="0"/>
+ <val o="221cc6" v="0"/>
+ <val o="222ad7" v="0"/>
+ <val o="2238e7" v="0"/>
+ <val o="224701" v="0"/>
+ <val o="225505" v="0"/>
+ <val o="226315" v="0"/>
+ <val o="227125" v="0"/>
+ <val o="227f35" v="0"/>
+ <val o="228d45" v="0"/>
+ <val o="229b54" v="0"/>
+ <val o="22a965" v="0"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="0"/>
+ <val o="22d397" v="0"/>
+ <val o="22e1a6" v="0"/>
+ <val o="22efb6" v="0"/>
+ <val o="22fdc7" v="0"/>
+ <val o="230bd7" v="0"/>
+ <val o="2319e6" v="0"/>
+ <val o="2327f6" v="0"/>
+ <val o="23361b" v="0"/>
+ <val o="234416" v="0"/>
+ <val o="235226" v="0"/>
+ <val o="236037" v="0"/>
+ <val o="236e46" v="0"/>
+ <val o="237c57" v="0"/>
+ <val o="238a66" v="0"/>
+ <val o="239881" v="0"/>
+ <val o="23a685" v="0"/>
+ <val o="23b495" v="0"/>
+ <val o="23c2a4" v="0"/>
+ <val o="23d0b5" v="0"/>
+ <val o="23dec4" v="0"/>
+ <val o="23ecd5" v="0"/>
+ <val o="23fae4" v="0"/>
+ <val o="2408f6" v="0"/>
+ <val o="241706" v="0"/>
+ <val o="242518" v="0"/>
+ <val o="243325" v="0"/>
+ <val o="244137" v="0"/>
+ <val o="244f46" v="0"/>
+ <val o="246b66" v="0"/>
+ <val o="247976" v="0"/>
+ <val o="248786" v="0"/>
+ <val o="24957e" v="0"/>
+ <val o="24a38f" v="0"/>
+ <val o="24b19c" v="0"/>
+ <val o="24bfac" v="0"/>
+ <val o="24cdbc" v="0"/>
+ <val o="24dbcd" v="0"/>
+ <val o="24e9e5" v="0"/>
+ <val o="24f808" v="0"/>
+ <val o="250616" v="0"/>
+ <val o="251426" v="0"/>
+ <val o="252236" v="0"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="0"/>
+ <val o="254c67" v="0"/>
+ <val o="255a76" v="0"/>
+ <val o="256887" v="0"/>
+ <val o="257697" v="0"/>
+ <val o="2584a8" v="0"/>
+ <val o="2592b6" v="0"/>
+ <val o="25a0c7" v="0"/>
+ <val o="25aed7" v="0"/>
+ <val o="25bce7" v="0"/>
+ <val o="25caf8" v="0"/>
+ <val o="25d907" v="0"/>
+ <val o="25e718" v="0"/>
+ <val o="25f527" v="0"/>
+ <val o="260338" v="0"/>
+ <val o="261149" v="0"/>
+ <val o="261f59" v="0"/>
+ <val o="262d68" v="0"/>
+ <val o="263b83" v="0"/>
+ <val o="264986" v="0"/>
+ <val o="265795" v="0"/>
+ <val o="2665a6" v="0"/>
+ <val o="2673b5" v="0"/>
+ <val o="2681c6" v="0"/>
+ <val o="268fd5" v="0"/>
+ <val o="269de6" v="0"/>
+ <val o="26abf6" v="0"/>
+ <val o="26ba06" v="0"/>
+ <val o="26c817" v="0"/>
+ <val o="26d62b" v="0"/>
+ <val o="26e436" v="0"/>
+ <val o="26f247" v="0"/>
+ <val o="270057" v="0"/>
+ <val o="270e67" v="0"/>
+ <val o="271c77" v="0"/>
+ <val o="272a87" v="0"/>
+ <val o="273897" v="0"/>
+ <val o="2746a8" v="0"/>
+ <val o="2754b9" v="0"/>
+ <val o="2762c7" v="0"/>
+ <val o="2770d8" v="0"/>
+ <val o="277ee7" v="0"/>
+ </par>
+ <par memind="8604" h="3dc1a8de">
+ <val o="0" v="21.043"/>
+ <val o="e08" v="20.051"/>
+ <val o="1c32" v="19.818"/>
+ <val o="2a3c" v="19.554"/>
+ <val o="3835" v="18.951"/>
+ <val o="4645" v="18.853"/>
+ <val o="5455" v="22.398"/>
+ <val o="6265" v="24.492"/>
+ <val o="7075" v="29.206"/>
+ <val o="7e85" v="35.063"/>
+ <val o="8c96" v="35.07"/>
+ <val o="9aa5" v="33.585"/>
+ <val o="a8b6" v="30.77"/>
+ <val o="b6c5" v="29.141"/>
+ <val o="c4d7" v="0.061"/>
+ <val o="d30b" v="0.061"/>
+ <val o="e0f6" v="0.06"/>
+ <val o="ef06" v="0.059"/>
+ <val o="fd17" v="0.06"/>
+ <val o="10b27" v="0.062"/>
+ <val o="11937" v="0.063"/>
+ <val o="12746" v="0.061"/>
+ <val o="13556" v="0.062"/>
+ <val o="14366" v="0.066"/>
+ <val o="15181" v="0.07"/>
+ <val o="15f85" v="0.064"/>
+ <val o="16d95" v="0.065"/>
+ <val o="17ba4" v="0.064"/>
+ <val o="189b5" v="0.063"/>
+ <val o="197c4" v="0.064"/>
+ <val o="1a5d5" v="0.066"/>
+ <val o="1b3e6" v="0.067"/>
+ <val o="1c1f6" v="0.066"/>
+ <val o="1d005" v="0.062"/>
+ <val o="1de15" v="0.062"/>
+ <val o="1ec25" v="0.063"/>
+ <val o="1fa36" v="0.066"/>
+ <val o="20845" v="0.066"/>
+ <val o="21656" v="0.066"/>
+ <val o="22465" v="0.064"/>
+ <val o="23276" v="0.063"/>
+ <val o="24086" v="0.061"/>
+ <val o="24e99" v="0.061"/>
+ <val o="25ca7" v="0.062"/>
+ <val o="26ab7" v="0.062"/>
+ <val o="278c6" v="0.061"/>
+ <val o="286d6" v="0.063"/>
+ <val o="294e6" v="0.066"/>
+ <val o="2a301" v="0.067"/>
+ <val o="2b105" v="0.06"/>
+ <val o="2bf15" v="0.061"/>
+ <val o="2cd25" v="0.063"/>
+ <val o="2db35" v="0.062"/>
+ <val o="2e946" v="0.061"/>
+ <val o="2f755" v="0.058"/>
+ <val o="30566" v="0.066"/>
+ <val o="31375" v="0.064"/>
+ <val o="3219e" v="0.066"/>
+ <val o="32f96" v="0.063"/>
+ <val o="33da6" v="0.062"/>
+ <val o="34bb6" v="0.063"/>
+ <val o="359de" v="0.064"/>
+ <val o="367d6" v="0.064"/>
+ <val o="375e6" v="0.062"/>
+ <val o="3840e" v="0.059"/>
+ <val o="3921e" v="0.06"/>
+ <val o="3a016" v="0.06"/>
+ <val o="3ae27" v="0.063"/>
+ <val o="3bc36" v="0.062"/>
+ <val o="3ca47" v="0.059"/>
+ <val o="3d856" v="0.062"/>
+ <val o="3e667" v="0.064"/>
+ <val o="3f481" v="0.068"/>
+ <val o="40285" v="0.065"/>
+ <val o="41095" v="0.066"/>
+ <val o="41ea5" v="0.065"/>
+ <val o="42cb5" v="0.066"/>
+ <val o="43ac5" v="0.064"/>
+ <val o="448d5" v="0.061"/>
+ <val o="456e6" v="0.062"/>
+ <val o="464f5" v="0.062"/>
+ <val o="480ff" v="0.058"/>
+ <val o="48f0e" v="0.056"/>
+ <val o="49d1d" v="0.057"/>
+ <val o="4ab46" v="0.056"/>
+ <val o="4b955" v="0.057"/>
+ <val o="4c769" v="0.055"/>
+ <val o="4d577" v="0.057"/>
+ <val o="4e387" v="0.057"/>
+ <val o="4f196" v="0.057"/>
+ <val o="4ffa6" v="0.058"/>
+ <val o="50dd0" v="0.06"/>
+ <val o="51bc6" v="0.062"/>
+ <val o="529d6" v="0.062"/>
+ <val o="537e7" v="0.065"/>
+ <val o="54600" v="0.067"/>
+ <val o="55406" v="0.065"/>
+ <val o="56215" v="0.065"/>
+ <val o="57026" v="0.065"/>
+ <val o="57e36" v="0.064"/>
+ <val o="58c46" v="0.063"/>
+ <val o="59a70" v="0.063"/>
+ <val o="5a867" v="0.06"/>
+ <val o="5b676" v="0.06"/>
+ <val o="5c487" v="0.056"/>
+ <val o="5d296" v="0.058"/>
+ <val o="5e0a9" v="0.06"/>
+ <val o="5eeb8" v="0.062"/>
+ <val o="5fcc6" v="0.061"/>
+ <val o="60ad7" v="0.057"/>
+ <val o="618e7" v="0.057"/>
+ <val o="626f7" v="0.059"/>
+ <val o="63507" v="0.059"/>
+ <val o="64317" v="0.061"/>
+ <val o="65127" v="0.062"/>
+ <val o="65f37" v="0.063"/>
+ <val o="66d46" v="0.062"/>
+ <val o="67b57" v="0.062"/>
+ <val o="68967" v="0.065"/>
+ <val o="69782" v="0.065"/>
+ <val o="6a586" v="0.064"/>
+ <val o="6b395" v="0.065"/>
+ <val o="6c1a6" v="0.066"/>
+ <val o="6cfb5" v="0.064"/>
+ <val o="6ddc6" v="0.063"/>
+ <val o="6ebd6" v="0.059"/>
+ <val o="6f9e6" v="0.061"/>
+ <val o="707f6" v="0.062"/>
+ <val o="71607" v="0.059"/>
+ <val o="72417" v="0.058"/>
+ <val o="73227" v="0.056"/>
+ <val o="74037" v="0.061"/>
+ <val o="74e47" v="0.061"/>
+ <val o="75c57" v="0.058"/>
+ <val o="76a63" v="0.058"/>
+ <val o="77873" v="0.058"/>
+ <val o="78680" v="0.058"/>
+ <val o="7948f" v="0.058"/>
+ <val o="7a29f" v="0.06"/>
+ <val o="7b0af" v="0.062"/>
+ <val o="7bebf" v="0.062"/>
+ <val o="7cccf" v="0.064"/>
+ <val o="7dadf" v="0.065"/>
+ <val o="7e8fa" v="0.065"/>
+ <val o="7f70a" v="0.067"/>
+ <val o="8051a" v="0.067"/>
+ <val o="8132a" v="0.066"/>
+ <val o="8213a" v="0.066"/>
+ <val o="82f4a" v="0.067"/>
+ <val o="83d5a" v="0.062"/>
+ <val o="84b6a" v="0.06"/>
+ <val o="8597a" v="0.059"/>
+ <val o="8678b" v="0.059"/>
+ <val o="8759b" v="0.057"/>
+ <val o="883ac" v="0.06"/>
+ <val o="891bb" v="0.061"/>
+ <val o="89fca" v="0.06"/>
+ <val o="8adda" v="0.059"/>
+ <val o="8bbeb" v="0.059"/>
+ <val o="8c9fc" v="0.058"/>
+ <val o="8d80b" v="0.058"/>
+ <val o="8e61a" v="0.059"/>
+ <val o="8f42a" v="0.06"/>
+ <val o="9023a" v="0.061"/>
+ <val o="9104a" v="0.062"/>
+ <val o="91e5a" v="0.06"/>
+ <val o="92c6a" v="0.063"/>
+ <val o="93a84" v="0.067"/>
+ <val o="94885" v="0.064"/>
+ <val o="95694" v="0.064"/>
+ <val o="964a5" v="0.065"/>
+ <val o="972b4" v="0.064"/>
+ <val o="980c5" v="0.062"/>
+ <val o="98ed4" v="0.065"/>
+ <val o="99ce5" v="0.064"/>
+ <val o="9aaf5" v="0.061"/>
+ <val o="9b906" v="0.061"/>
+ <val o="9c716" v="0.062"/>
+ <val o="9d526" v="0.062"/>
+ <val o="9e336" v="0.063"/>
+ <val o="9f145" v="0.063"/>
+ <val o="9ff56" v="0.061"/>
+ <val o="a0d65" v="0.061"/>
+ <val o="a1b77" v="30.22"/>
+ <val o="a2986" v="16.054"/>
+ <val o="a3795" v="10.22"/>
+ <val o="a45a7" v="3.839"/>
+ <val o="a53b6" v="3.301"/>
+ <val o="a61c7" v="4.19"/>
+ <val o="a6fd6" v="2.002"/>
+ <val o="a7e00" v="4.911"/>
+ <val o="a8c00" v="7.897"/>
+ <val o="a9a05" v="2.934"/>
+ <val o="aa815" v="1.487"/>
+ <val o="ab625" v="2.196"/>
+ <val o="ac435" v="1.679"/>
+ <val o="ad245" v="5.984"/>
+ <val o="ae055" v="10.661"/>
+ <val o="aee65" v="3.653"/>
+ <val o="afc75" v="7.252"/>
+ <val o="b0a85" v="19.708"/>
+ <val o="b26a6" v="21.128"/>
+ <val o="b34b6" v="18.358"/>
+ <val o="b42c6" v="3.456"/>
+ <val o="b50d6" v="4.916"/>
+ <val o="b5ee7" v="7.337"/>
+ <val o="b6cf6" v="7.205"/>
+ <val o="b7b07" v="9.191"/>
+ <val o="b8917" v="8.027"/>
+ <val o="b9728" v="7.688"/>
+ <val o="ba537" v="8.667"/>
+ <val o="bb347" v="7.734"/>
+ <val o="bc157" v="5.148"/>
+ <val o="bcf67" v="5.081"/>
+ <val o="bdd81" v="18.433"/>
+ <val o="beb86" v="4.676"/>
+ <val o="bf995" v="3.97"/>
+ <val o="c07a6" v="2.247"/>
+ <val o="c15b5" v="2.519"/>
+ <val o="c23c6" v="4.784"/>
+ <val o="c31d5" v="10.406"/>
+ <val o="c3fe6" v="5.863"/>
+ <val o="c4df5" v="9.668"/>
+ <val o="c5c06" v="5.194"/>
+ <val o="c6a16" v="5.35"/>
+ <val o="c7826" v="7.745"/>
+ <val o="c8636" v="3.651"/>
+ <val o="c9446" v="4.236"/>
+ <val o="ca256" v="3.281"/>
+ <val o="cb066" v="5.657"/>
+ <val o="cbe76" v="2.249"/>
+ <val o="ccc87" v="12.004"/>
+ <val o="cda96" v="15.833"/>
+ <val o="ce8a8" v="11.981"/>
+ <val o="cf6b7" v="15.145"/>
+ <val o="d04c8" v="12.386"/>
+ <val o="d12d7" v="8.53"/>
+ <val o="d20e7" v="1.474"/>
+ <val o="d2f02" v="7.441"/>
+ <val o="d3d05" v="4.262"/>
+ <val o="d4b15" v="3.805"/>
+ <val o="d5926" v="3.752"/>
+ <val o="d6735" v="5.538"/>
+ <val o="d7546" v="9.524"/>
+ <val o="d8355" v="1.988"/>
+ <val o="d9166" v="4.159"/>
+ <val o="d9f75" v="9.621"/>
+ <val o="dad87" v="17.704"/>
+ <val o="dbb97" v="19.171"/>
+ <val o="dc9a8" v="19.252"/>
+ <val o="dd7b7" v="14.961"/>
+ <val o="de5c6" v="12.816"/>
+ <val o="df3d7" v="13.113"/>
+ <val o="e01d7" v="13.435"/>
+ <val o="e0fe5" v="13.283"/>
+ <val o="e1df5" v="13.989"/>
+ <val o="e2c04" v="18.098"/>
+ <val o="e3a14" v="17.742"/>
+ <val o="e4824" v="15.229"/>
+ <val o="e5634" v="15.263"/>
+ <val o="e6444" v="11.968"/>
+ <val o="e7255" v="9.893"/>
+ <val o="e806f" v="7.997"/>
+ <val o="e8e7f" v="13.888"/>
+ <val o="e9c8e" v="6.336"/>
+ <val o="eaa9f" v="5.634"/>
+ <val o="eb8ae" v="7.369"/>
+ <val o="ec6bf" v="14.276"/>
+ <val o="ed4ce" v="9.674"/>
+ <val o="ee2df" v="12.81"/>
+ <val o="ef0ef" v="14.985"/>
+ <val o="eff01" v="21.531"/>
+ <val o="f0d10" v="21.038"/>
+ <val o="f1b20" v="22.908"/>
+ <val o="f2930" v="20.891"/>
+ <val o="f3740" v="22.234"/>
+ <val o="f4551" v="22.517"/>
+ <val o="f5361" v="24.172"/>
+ <val o="f6172" v="23.008"/>
+ <val o="f6f80" v="23.475"/>
+ <val o="f7d91" v="22.059"/>
+ <val o="f8ba1" v="18.671"/>
+ <val o="f99b1" v="18.447"/>
+ <val o="fa7c0" v="15.862"/>
+ <val o="fb5d1" v="16.38"/>
+ <val o="fc3e0" v="15.165"/>
+ <val o="fd1fb" v="12.335"/>
+ <val o="fe00b" v="12.283"/>
+ <val o="fee1c" v="8.941"/>
+ <val o="ffc2c" v="8.837"/>
+ <val o="100a3b" v="8.793"/>
+ <val o="10184c" v="10.043"/>
+ <val o="10265b" v="13.932"/>
+ <val o="10346c" v="15.974"/>
+ <val o="10427b" v="19.167"/>
+ <val o="10508d" v="22.237"/>
+ <val o="105e9d" v="21.533"/>
+ <val o="106cad" v="23.309"/>
+ <val o="107abd" v="20.333"/>
+ <val o="1088cd" v="18.556"/>
+ <val o="1096de" v="20.163"/>
+ <val o="10a4ed" v="19.978"/>
+ <val o="10b2fe" v="21.155"/>
+ <val o="10c10d" v="23.964"/>
+ <val o="10cf1e" v="21.874"/>
+ <val o="10dd2e" v="19.591"/>
+ <val o="10eb66" v="20.234"/>
+ <val o="10f94e" v="17.32"/>
+ <val o="11075e" v="16.556"/>
+ <val o="11156d" v="13.217"/>
+ <val o="112388" v="12.271"/>
+ <val o="113187" v="8.967"/>
+ <val o="113fb0" v="8.319"/>
+ <val o="114da6" v="8.357"/>
+ <val o="115bb6" v="8.49"/>
+ <val o="1169c6" v="10.458"/>
+ <val o="1177d6" v="13.998"/>
+ <val o="1185e8" v="15.461"/>
+ <val o="1193f7" v="18.331"/>
+ <val o="11a208" v="22.284"/>
+ <val o="11b017" v="19.151"/>
+ <val o="11be2f" v="23.464"/>
+ <val o="11cc37" v="20.211"/>
+ <val o="11da47" v="19.83"/>
+ <val o="11e857" v="20.8"/>
+ <val o="11f667" v="18.042"/>
+ <val o="120578" v="0.018"/>
+ <val o="121386" v="0.02"/>
+ <val o="122196" v="0.02"/>
+ <val o="122fa6" v="0.017"/>
+ <val o="123db5" v="0.015"/>
+ <val o="124bc5" v="0.014"/>
+ <val o="1259d5" v="0.011"/>
+ <val o="1267e4" v="0.01"/>
+ <val o="127600" v="0.009"/>
+ <val o="128305" v="0.008"/>
+ <val o="129115" v="0.008"/>
+ <val o="129f25" v="0.008"/>
+ <val o="12ad35" v="0.007"/>
+ <val o="12bb45" v="0.007"/>
+ <val o="12c954" v="0.01"/>
+ <val o="12d766" v="0.011"/>
+ <val o="12e575" v="0.016"/>
+ <val o="12f386" v="0.013"/>
+ <val o="130196" v="0.019"/>
+ <val o="130fa6" v="0.014"/>
+ <val o="131db7" v="0.015"/>
+ <val o="132bc5" v="0.015"/>
+ <val o="1339d4" v="0.269"/>
+ <val o="1347e5" v="0.124"/>
+ <val o="1355f4" v="0.16"/>
+ <val o="136404" v="0.227"/>
+ <val o="137214" v="0.243"/>
+ <val o="138024" v="0.236"/>
+ <val o="138e33" v="0.239"/>
+ <val o="139c44" v="0.074"/>
+ <val o="13aa54" v="0.086"/>
+ <val o="13b865" v="0.031"/>
+ <val o="13c67e" v="0.412"/>
+ <val o="13d48e" v="0.199"/>
+ <val o="13e29e" v="0.15"/>
+ <val o="13f0ae" v="0.14"/>
+ <val o="13febf" v="0.218"/>
+ <val o="140ccf" v="0.309"/>
+ <val o="141adf" v="0.206"/>
+ <val o="1428ef" v="0.032"/>
+ <val o="1436ff" v="0.065"/>
+ <val o="14450f" v="0.054"/>
+ <val o="14531f" v="0.037"/>
+ <val o="146130" v="0.025"/>
+ <val o="146f40" v="0.09"/>
+ <val o="147d44" v="0.03"/>
+ <val o="148b57" v="0.038"/>
+ <val o="149965" v="0.026"/>
+ <val o="14a775" v="0.109"/>
+ <val o="14b584" v="0.086"/>
+ <val o="14c397" v="0.251"/>
+ <val o="14d1a4" v="0.225"/>
+ <val o="14dfb6" v="0.193"/>
+ <val o="14edc5" v="0.103"/>
+ <val o="14fbd5" v="0.044"/>
+ <val o="1509e5" v="0.023"/>
+ <val o="1517ff" v="0.068"/>
+ <val o="152605" v="0.157"/>
+ <val o="153415" v="0.105"/>
+ <val o="154225" v="0.097"/>
+ <val o="155035" v="0.127"/>
+ <val o="155e45" v="0.189"/>
+ <val o="156c55" v="0.281"/>
+ <val o="157a65" v="0.162"/>
+ <val o="158875" v="0.15"/>
+ <val o="159686" v="0.246"/>
+ <val o="15a495" v="0.211"/>
+ <val o="15b2a6" v="0.188"/>
+ <val o="15c0b6" v="0.105"/>
+ <val o="15cec6" v="0.092"/>
+ <val o="15dcd5" v="0.099"/>
+ <val o="15eae6" v="0.112"/>
+ <val o="15f8f5" v="0.29"/>
+ <val o="160706" v="0.06"/>
+ <val o="161517" v="0.107"/>
+ <val o="162326" v="0.072"/>
+ <val o="163137" v="0.064"/>
+ <val o="163f46" v="0.101"/>
+ <val o="164d57" v="0.045"/>
+ <val o="165b67" v="0.035"/>
+ <val o="166982" v="0.057"/>
+ <val o="167786" v="0.07"/>
+ <val o="168596" v="0.035"/>
+ <val o="1693a6" v="0.029"/>
+ <val o="16a1b5" v="0.026"/>
+ <val o="16afc6" v="0.075"/>
+ <val o="16bdd5" v="0.178"/>
+ <val o="16cbe6" v="0.221"/>
+ <val o="16d9f6" v="0.109"/>
+ <val o="16e807" v="0.578"/>
+ <val o="16f616" v="0.633"/>
+ <val o="170429" v="0.678"/>
+ <val o="171236" v="0.456"/>
+ <val o="172047" v="0.461"/>
+ <val o="172e57" v="0.475"/>
+ <val o="173c67" v="0.487"/>
+ <val o="174a77" v="0.565"/>
+ <val o="175887" v="0.597"/>
+ <val o="176694" v="34.372"/>
+ <val o="1774a3" v="33.056"/>
+ <val o="1782b3" v="34.198"/>
+ <val o="1790c5" v="31.148"/>
+ <val o="179ed4" v="26.734"/>
+ <val o="17ace4" v="26.883"/>
+ <val o="17bafd" v="28.046"/>
+ <val o="17c90f" v="25.107"/>
+ <val o="17d71e" v="24.826"/>
+ <val o="17e52f" v="25.129"/>
+ <val o="17f33f" v="22.979"/>
+ <val o="18014f" v="22.968"/>
+ <val o="180f5f" v="28.04"/>
+ <val o="181d6e" v="30.608"/>
+ <val o="182b7f" v="35.156"/>
+ <val o="18398f" v="61.079"/>
+ <val o="1847a1" v="61.118"/>
+ <val o="1855af" v="58.214"/>
+ <val o="1863c0" v="54.149"/>
+ <val o="1871cf" v="56.141"/>
+ <val o="187fe0" v="53.757"/>
+ <val o="188def" v="57.188"/>
+ <val o="189c00" v="53.596"/>
+ <val o="18b80d" v="36.269"/>
+ <val o="18c61c" v="36.626"/>
+ <val o="18d42c" v="35.102"/>
+ <val o="18e23b" v="29.855"/>
+ <val o="18f04b" v="28.307"/>
+ <val o="18fe5e" v="25.364"/>
+ <val o="190c76" v="19.996"/>
+ <val o="191a86" v="19.748"/>
+ <val o="192896" v="19.345"/>
+ <val o="1936a6" v="18.873"/>
+ <val o="1944b7" v="18.11"/>
+ <val o="1952c6" v="20.032"/>
+ <val o="1960d7" v="25.137"/>
+ <val o="196ee6" v="27.508"/>
+ <val o="197cf8" v="29.449"/>
+ <val o="198b0f" v="27.372"/>
+ <val o="19991f" v="30.562"/>
+ <val o="19b541" v="29.963"/>
+ <val o="19c34d" v="28.336"/>
+ <val o="19d15e" v="28.102"/>
+ <val o="19df80" v="28.864"/>
+ <val o="19ed90" v="28.278"/>
+ <val o="19eebe" v="28.399"/>
+ <val o="19fb8e" v="11.016"/>
+ <val o="1a09a0" v="14.155"/>
+ <val o="1a17ae" v="19.132"/>
+ <val o="1a25be" v="20.28"/>
+ <val o="1a33cd" v="11.28"/>
+ <val o="1a41dd" v="12.25"/>
+ <val o="1a4fed" v="16.561"/>
+ <val o="1a5e08" v="15.15"/>
+ <val o="1a6c05" v="9.953"/>
+ <val o="1a7a15" v="12.732"/>
+ <val o="1a8826" v="12.958"/>
+ <val o="1a9637" v="9.685"/>
+ <val o="1aa445" v="6.805"/>
+ <val o="1ab255" v="4.559"/>
+ <val o="1ac065" v="10.632"/>
+ <val o="1ace75" v="14.64"/>
+ <val o="1adc87" v="14.182"/>
+ <val o="1aea96" v="13.717"/>
+ <val o="1af8a7" v="15.071"/>
+ <val o="1b06b7" v="13.236"/>
+ <val o="1b14c6" v="12.746"/>
+ <val o="1c7460" v="3.999"/>
+ <val o="1c8270" v="2.186"/>
+ <val o="1c907e" v="16.585"/>
+ <val o="1c9e8f" v="14.378"/>
+ <val o="1caca2" v="16.041"/>
+ <val o="1cbab1" v="15.799"/>
+ <val o="1cc8c1" v="29.25"/>
+ <val o="1cd6d0" v="27.621"/>
+ <val o="1ce4de" v="25.453"/>
+ <val o="1cf2f0" v="24.369"/>
+ <val o="1d0109" v="25.348"/>
+ <val o="1d0f06" v="28.687"/>
+ <val o="1d1d15" v="28.373"/>
+ <val o="1d2b25" v="28.801"/>
+ <val o="1d3935" v="30.045"/>
+ <val o="1d4745" v="30.644"/>
+ <val o="1d5555" v="30.354"/>
+ <val o="1d6366" v="24.933"/>
+ <val o="1d7175" v="23.813"/>
+ <val o="1d7f86" v="23.818"/>
+ <val o="1d8d95" v="15.153"/>
+ <val o="1d9ba6" v="16.69"/>
+ <val o="1da9b6" v="16.385"/>
+ <val o="1db7c7" v="15.643"/>
+ <val o="1dc5d5" v="16.269"/>
+ <val o="1dd3e6" v="16.689"/>
+ <val o="1de1f5" v="27.897"/>
+ <val o="1df006" v="31.449"/>
+ <val o="1dfe16" v="31.232"/>
+ <val o="1e0c26" v="32.001"/>
+ <val o="1e1a36" v="31.999"/>
+ <val o="1e2847" v="30.669"/>
+ <val o="1e3659" v="29.185"/>
+ <val o="1e4467" v="27.199"/>
+ <val o="1e5281" v="23.798"/>
+ <val o="1e6086" v="23.566"/>
+ <val o="1e6e96" v="23.035"/>
+ <val o="1e7ca6" v="8.573"/>
+ <val o="1e8ab5" v="7.913"/>
+ <val o="1e98c6" v="7.851"/>
+ <val o="1ea6d5" v="9.845"/>
+ <val o="1eb4e6" v="10.177"/>
+ <val o="1ec2f6" v="11.732"/>
+ <val o="1ed106" v="11.554"/>
+ <val o="1edf16" v="12.067"/>
+ <val o="1eed26" v="11.725"/>
+ <val o="1efb36" v="11.465"/>
+ <val o="1f0946" v="10.851"/>
+ <val o="1f1756" v="10.928"/>
+ <val o="1f2566" v="10.984"/>
+ <val o="1f3376" v="13.626"/>
+ <val o="1f4187" v="19.399"/>
+ <val o="1f4f96" v="16.326"/>
+ <val o="1f5da7" v="15.848"/>
+ <val o="1f6bb6" v="15.785"/>
+ <val o="1f79c7" v="14.319"/>
+ <val o="1f87d6" v="15.77"/>
+ <val o="1f95e7" v="16.295"/>
+ <val o="1fa401" v="13.382"/>
+ <val o="1fb204" v="11.752"/>
+ <val o="1fc016" v="11.694"/>
+ <val o="1fce25" v="9.24"/>
+ <val o="1fdc35" v="8.969"/>
+ <val o="1fea45" v="9.42"/>
+ <val o="1ff855" v="11.299"/>
+ <val o="200665" v="18.06"/>
+ <val o="201475" v="15.989"/>
+ <val o="202286" v="23.363"/>
+ <val o="203095" v="26.071"/>
+ <val o="203ea5" v="29.283"/>
+ <val o="204cb6" v="25.856"/>
+ <val o="205ac6" v="25.235"/>
+ <val o="2068d6" v="26.405"/>
+ <val o="2076e6" v="30.076"/>
+ <val o="2084f6" v="28.433"/>
+ <val o="209306" v="30.271"/>
+ <val o="20a116" v="28.557"/>
+ <val o="20af26" v="24.542"/>
+ <val o="20bd37" v="23.962"/>
+ <val o="20cb46" v="21.242"/>
+ <val o="20d957" v="19.633"/>
+ <val o="20e767" v="18.009"/>
+ <val o="20f581" v="17.798"/>
+ <val o="210386" v="15.304"/>
+ <val o="211194" v="13.453"/>
+ <val o="211fa5" v="13.055"/>
+ <val o="212db5" v="12.872"/>
+ <val o="213bc5" v="13.544"/>
+ <val o="2149d6" v="17.25"/>
+ <val o="2157e5" v="21.046"/>
+ <val o="2165f6" v="25.832"/>
+ <val o="217406" v="27.791"/>
+ <val o="218217" v="28.054"/>
+ <val o="219026" v="27.63"/>
+ <val o="219e39" v="28.457"/>
+ <val o="21ac46" v="27.725"/>
+ <val o="21ba57" v="27.922"/>
+ <val o="21c867" v="28.25"/>
+ <val o="21d677" v="27.539"/>
+ <val o="21e487" v="26.251"/>
+ <val o="21f296" v="25.947"/>
+ <val o="2200a6" v="24.671"/>
+ <val o="220eb7" v="24.383"/>
+ <val o="221cc6" v="22.742"/>
+ <val o="222ad7" v="17.742"/>
+ <val o="2238e7" v="16.117"/>
+ <val o="224701" v="14.548"/>
+ <val o="225505" v="18.418"/>
+ <val o="226315" v="10.147"/>
+ <val o="227125" v="10.648"/>
+ <val o="227f35" v="13.062"/>
+ <val o="228d45" v="17.082"/>
+ <val o="229b54" v="15.723"/>
+ <val o="22a965" v="17.627"/>
+ <val o="22b776" v="21.083"/>
+ <val o="22c586" v="24.293"/>
+ <val o="22d397" v="26.823"/>
+ <val o="22e1a6" v="27.04"/>
+ <val o="22efb6" v="22.091"/>
+ <val o="22fdc7" v="21.514"/>
+ <val o="230bd7" v="20.922"/>
+ <val o="2319e6" v="25.061"/>
+ <val o="2327f6" v="25.959"/>
+ <val o="23361b" v="27.644"/>
+ <val o="234416" v="25.578"/>
+ <val o="235226" v="24.199"/>
+ <val o="236037" v="23.83"/>
+ <val o="236e46" v="22.719"/>
+ <val o="237c57" v="20.952"/>
+ <val o="238a66" v="18.382"/>
+ <val o="239881" v="14.928"/>
+ <val o="23a685" v="14.859"/>
+ <val o="23b495" v="14.081"/>
+ <val o="23c2a4" v="13.309"/>
+ <val o="23d0b5" v="13.726"/>
+ <val o="23dec4" v="15.071"/>
+ <val o="23ecd5" v="17.064"/>
+ <val o="23fae4" v="20.612"/>
+ <val o="2408f6" v="24.891"/>
+ <val o="241706" v="32.942"/>
+ <val o="242518" v="34.247"/>
+ <val o="243325" v="34.787"/>
+ <val o="244137" v="31.176"/>
+ <val o="244f46" v="29.806"/>
+ <val o="246b66" v="30.569"/>
+ <val o="247976" v="29.175"/>
+ <val o="248786" v="34.921"/>
+ <val o="24957e" v="28.767"/>
+ <val o="24a38f" v="25.797"/>
+ <val o="24b19c" v="26.161"/>
+ <val o="24bfac" v="24.769"/>
+ <val o="24cdbc" v="24.053"/>
+ <val o="24dbcd" v="20.28"/>
+ <val o="24e9e5" v="18.22"/>
+ <val o="24f808" v="15.345"/>
+ <val o="250616" v="15.953"/>
+ <val o="251426" v="15.884"/>
+ <val o="252236" v="15.054"/>
+ <val o="253047" v="16.014"/>
+ <val o="253e56" v="19.574"/>
+ <val o="254c67" v="20.065"/>
+ <val o="255a76" v="23.936"/>
+ <val o="256887" v="29.274"/>
+ <val o="257697" v="31.691"/>
+ <val o="2584a8" v="75.154"/>
+ <val o="2592b6" v="41.458"/>
+ <val o="25a0c7" v="21.221"/>
+ <val o="25aed7" v="29.417"/>
+ <val o="25bce7" v="28.597"/>
+ <val o="25caf8" v="27.256"/>
+ <val o="25d907" v="28.925"/>
+ <val o="25e718" v="29.38"/>
+ <val o="25f527" v="26.559"/>
+ <val o="260338" v="25.234"/>
+ <val o="261149" v="23.312"/>
+ <val o="261f59" v="21.317"/>
+ <val o="262d68" v="20.761"/>
+ <val o="263b83" v="16.36"/>
+ <val o="264986" v="15.657"/>
+ <val o="265795" v="16.618"/>
+ <val o="2665a6" v="17.888"/>
+ <val o="2673b5" v="16.861"/>
+ <val o="2681c6" v="16.617"/>
+ <val o="268fd5" v="17.428"/>
+ <val o="269de6" v="18.225"/>
+ <val o="26abf6" v="18.415"/>
+ <val o="26ba06" v="22.126"/>
+ <val o="26c817" v="22.126"/>
+ <val o="26d62b" v="25.782"/>
+ <val o="26e436" v="22.774"/>
+ <val o="26f247" v="22.774"/>
+ <val o="270057" v="22.909"/>
+ <val o="270e67" v="23.139"/>
+ <val o="271c77" v="21.553"/>
+ <val o="272a87" v="23.539"/>
+ <val o="273897" v="23.139"/>
+ <val o="2746a8" v="22.735"/>
+ <val o="2754b9" v="22.335"/>
+ <val o="2762c7" v="23.205"/>
+ <val o="2770d8" v="18.238"/>
+ <val o="277ee7" v="14.136"/>
+ </par>
+ <par memind="9812" h="3dc1a8de">
+ <val o="0" v="114.081"/>
+ <val o="e08" v="117.19"/>
+ <val o="1c32" v="118.964"/>
+ <val o="2a3c" v="120.564"/>
+ <val o="3835" v="118.747"/>
+ <val o="4645" v="116.529"/>
+ <val o="5455" v="109.384"/>
+ <val o="6265" v="121.356"/>
+ <val o="7075" v="119.014"/>
+ <val o="7e85" v="116.226"/>
+ <val o="8c96" v="120.175"/>
+ <val o="9aa5" v="120.949"/>
+ <val o="a8b6" v="124.2"/>
+ <val o="b6c5" v="124.043"/>
+ <val o="c4d7" v="117.761"/>
+ <val o="d30b" v="118.092"/>
+ <val o="e0f6" v="118.354"/>
+ <val o="ef06" v="118.633"/>
+ <val o="fd17" v="118.494"/>
+ <val o="10b27" v="121.243"/>
+ <val o="11937" v="122.278"/>
+ <val o="12746" v="119.689"/>
+ <val o="13556" v="121.165"/>
+ <val o="14366" v="125.688"/>
+ <val o="15181" v="127.517"/>
+ <val o="15f85" v="119.508"/>
+ <val o="16d95" v="121.27"/>
+ <val o="17ba4" v="121.262"/>
+ <val o="189b5" v="120.595"/>
+ <val o="197c4" v="118.725"/>
+ <val o="1a5d5" v="126.913"/>
+ <val o="1b3e6" v="125.984"/>
+ <val o="1c1f6" v="124.971"/>
+ <val o="1d005" v="121.722"/>
+ <val o="1de15" v="122.233"/>
+ <val o="1ec25" v="122.836"/>
+ <val o="1fa36" v="124.125"/>
+ <val o="20845" v="125.105"/>
+ <val o="21656" v="125.266"/>
+ <val o="22465" v="125.381"/>
+ <val o="23276" v="123.688"/>
+ <val o="24086" v="119.437"/>
+ <val o="24e99" v="119.167"/>
+ <val o="25ca7" v="120.334"/>
+ <val o="26ab7" v="119.837"/>
+ <val o="278c6" v="120.109"/>
+ <val o="286d6" v="122.074"/>
+ <val o="294e6" v="125.542"/>
+ <val o="2a301" v="125.638"/>
+ <val o="2b105" v="117.398"/>
+ <val o="2bf15" v="118.807"/>
+ <val o="2cd25" v="119.644"/>
+ <val o="2db35" v="119.674"/>
+ <val o="2e946" v="117.549"/>
+ <val o="2f755" v="113.229"/>
+ <val o="30566" v="125.153"/>
+ <val o="31375" v="124.691"/>
+ <val o="3219e" v="123.556"/>
+ <val o="32f96" v="123.231"/>
+ <val o="33da6" v="123.404"/>
+ <val o="34bb6" v="123.932"/>
+ <val o="359de" v="123.328"/>
+ <val o="367d6" v="122.641"/>
+ <val o="375e6" v="121.544"/>
+ <val o="3840e" v="118.209"/>
+ <val o="3921e" v="118.675"/>
+ <val o="3a016" v="118.325"/>
+ <val o="3ae27" v="121.893"/>
+ <val o="3bc36" v="120.711"/>
+ <val o="3ca47" v="119.854"/>
+ <val o="3d856" v="120.165"/>
+ <val o="3e667" v="122.996"/>
+ <val o="3f481" v="126.557"/>
+ <val o="40285" v="124.061"/>
+ <val o="41095" v="124.874"/>
+ <val o="41ea5" v="125.244"/>
+ <val o="42cb5" v="125.083"/>
+ <val o="43ac5" v="123.182"/>
+ <val o="448d5" v="119.311"/>
+ <val o="456e6" v="122.524"/>
+ <val o="464f5" v="121.173"/>
+ <val o="480ff" v="118.696"/>
+ <val o="48f0e" v="117.559"/>
+ <val o="49d1d" v="118.947"/>
+ <val o="4ab46" v="118.797"/>
+ <val o="4b955" v="117.048"/>
+ <val o="4c769" v="116.182"/>
+ <val o="4d577" v="119.101"/>
+ <val o="4e387" v="119.152"/>
+ <val o="4f196" v="116.814"/>
+ <val o="4ffa6" v="118.943"/>
+ <val o="50dd0" v="120.844"/>
+ <val o="51bc6" v="119.109"/>
+ <val o="529d6" v="120.802"/>
+ <val o="537e7" v="123.095"/>
+ <val o="54600" v="125.922"/>
+ <val o="55406" v="122.082"/>
+ <val o="56215" v="123.001"/>
+ <val o="57026" v="123.033"/>
+ <val o="57e36" v="122.972"/>
+ <val o="58c46" v="120.717"/>
+ <val o="59a70" v="121.599"/>
+ <val o="5a867" v="120.977"/>
+ <val o="5b676" v="119.038"/>
+ <val o="5c487" v="115.798"/>
+ <val o="5d296" v="119.913"/>
+ <val o="5e0a9" v="120.284"/>
+ <val o="5eeb8" v="119.451"/>
+ <val o="5fcc6" v="118.325"/>
+ <val o="60ad7" v="117.111"/>
+ <val o="618e7" v="117.263"/>
+ <val o="626f7" v="120.147"/>
+ <val o="63507" v="117.534"/>
+ <val o="64317" v="118.902"/>
+ <val o="65127" v="120.099"/>
+ <val o="65f37" v="121.434"/>
+ <val o="66d46" v="121.986"/>
+ <val o="67b57" v="120.683"/>
+ <val o="68967" v="122.861"/>
+ <val o="69782" v="119.35"/>
+ <val o="6a586" v="120.845"/>
+ <val o="6b395" v="122.119"/>
+ <val o="6c1a6" v="122.506"/>
+ <val o="6cfb5" v="121.462"/>
+ <val o="6ddc6" v="118.909"/>
+ <val o="6ebd6" v="116.372"/>
+ <val o="6f9e6" v="121.311"/>
+ <val o="707f6" v="119.412"/>
+ <val o="71607" v="118.281"/>
+ <val o="72417" v="118.148"/>
+ <val o="73227" v="117.811"/>
+ <val o="74037" v="121.694"/>
+ <val o="74e47" v="120.755"/>
+ <val o="75c57" v="118.651"/>
+ <val o="76a63" v="118.08"/>
+ <val o="77873" v="118.282"/>
+ <val o="78680" v="113.911"/>
+ <val o="7948f" v="116.941"/>
+ <val o="7a29f" v="119.508"/>
+ <val o="7b0af" v="119.071"/>
+ <val o="7bebf" v="121.146"/>
+ <val o="7cccf" v="121.336"/>
+ <val o="7dadf" v="122.095"/>
+ <val o="7e8fa" v="121.785"/>
+ <val o="7f70a" v="124.065"/>
+ <val o="8051a" v="125.455"/>
+ <val o="8132a" v="126.011"/>
+ <val o="8213a" v="125.018"/>
+ <val o="82f4a" v="122.741"/>
+ <val o="83d5a" v="120.26"/>
+ <val o="84b6a" v="118.856"/>
+ <val o="8597a" v="118.817"/>
+ <val o="8678b" v="117.807"/>
+ <val o="8759b" v="117.444"/>
+ <val o="883ac" v="119.967"/>
+ <val o="891bb" v="121.141"/>
+ <val o="89fca" v="120.259"/>
+ <val o="8adda" v="118.558"/>
+ <val o="8bbeb" v="118.812"/>
+ <val o="8c9fc" v="118.633"/>
+ <val o="8d80b" v="118.948"/>
+ <val o="8e61a" v="117.315"/>
+ <val o="8f42a" v="118.146"/>
+ <val o="9023a" v="120.121"/>
+ <val o="9104a" v="120.561"/>
+ <val o="91e5a" v="118.638"/>
+ <val o="92c6a" v="122.844"/>
+ <val o="93a84" v="125.153"/>
+ <val o="94885" v="123.463"/>
+ <val o="95694" v="122.793"/>
+ <val o="964a5" v="123.093"/>
+ <val o="972b4" v="122.535"/>
+ <val o="980c5" v="120.189"/>
+ <val o="98ed4" v="123.097"/>
+ <val o="99ce5" v="119.336"/>
+ <val o="9aaf5" v="118.5"/>
+ <val o="9b906" v="115.743"/>
+ <val o="9c716" v="119.722"/>
+ <val o="9d526" v="120.222"/>
+ <val o="9e336" v="118.918"/>
+ <val o="9f145" v="117.551"/>
+ <val o="9ff56" v="116.649"/>
+ <val o="a0d65" v="116.52"/>
+ <val o="a1b77" v="116.703"/>
+ <val o="a2986" v="118.806"/>
+ <val o="a3795" v="118.461"/>
+ <val o="a45a7" v="119.593"/>
+ <val o="a53b6" v="119.78"/>
+ <val o="a61c7" v="119.973"/>
+ <val o="a6fd6" v="120.761"/>
+ <val o="a7e00" v="122.782"/>
+ <val o="a8c00" v="125.444"/>
+ <val o="a9a05" v="118.255"/>
+ <val o="aa815" v="119.302"/>
+ <val o="ab625" v="120.149"/>
+ <val o="ac435" v="119.678"/>
+ <val o="ad245" v="117.138"/>
+ <val o="ae055" v="114.681"/>
+ <val o="aee65" v="120.851"/>
+ <val o="afc75" v="119.099"/>
+ <val o="b0a85" v="116.609"/>
+ <val o="b26a6" v="116.729"/>
+ <val o="b34b6" v="118.045"/>
+ <val o="b42c6" v="115.477"/>
+ <val o="b50d6" v="115.891"/>
+ <val o="b5ee7" v="114.24"/>
+ <val o="b6cf6" v="122.794"/>
+ <val o="b7b07" v="119.002"/>
+ <val o="b8917" v="118.701"/>
+ <val o="b9728" v="119.602"/>
+ <val o="ba537" v="120.963"/>
+ <val o="bb347" v="119.924"/>
+ <val o="bc157" v="120.628"/>
+ <val o="bcf67" v="123.122"/>
+ <val o="bdd81" v="118.683"/>
+ <val o="beb86" v="118.301"/>
+ <val o="bf995" v="118.882"/>
+ <val o="c07a6" v="120.187"/>
+ <val o="c15b5" v="119.576"/>
+ <val o="c23c6" v="118.243"/>
+ <val o="c31d5" v="115.692"/>
+ <val o="c3fe6" v="117.56"/>
+ <val o="c4df5" v="116.057"/>
+ <val o="c5c06" v="117.411"/>
+ <val o="c6a16" v="117.486"/>
+ <val o="c7826" v="116.745"/>
+ <val o="c8636" v="118.265"/>
+ <val o="c9446" v="118.202"/>
+ <val o="ca256" v="118.004"/>
+ <val o="cb066" v="117.255"/>
+ <val o="cbe76" v="122.71"/>
+ <val o="ccc87" v="118.736"/>
+ <val o="cda96" v="116.734"/>
+ <val o="ce8a8" v="118.339"/>
+ <val o="cf6b7" v="118.66"/>
+ <val o="d04c8" v="119.703"/>
+ <val o="d12d7" v="121.536"/>
+ <val o="d20e7" v="123.419"/>
+ <val o="d2f02" v="126.186"/>
+ <val o="d3d05" v="119.31"/>
+ <val o="d4b15" v="120.58"/>
+ <val o="d5926" v="120.857"/>
+ <val o="d6735" v="119.582"/>
+ <val o="d7546" v="117.426"/>
+ <val o="d8355" v="124.349"/>
+ <val o="d9166" v="122.435"/>
+ <val o="d9f75" v="120.692"/>
+ <val o="dad87" v="117.233"/>
+ <val o="dbb97" v="116.862"/>
+ <val o="dc9a8" v="116.728"/>
+ <val o="dd7b7" v="118.212"/>
+ <val o="de5c6" v="117.857"/>
+ <val o="df3d7" v="117.176"/>
+ <val o="e01d7" v="117.271"/>
+ <val o="e0fe5" v="116.796"/>
+ <val o="e1df5" v="117.361"/>
+ <val o="e2c04" v="119.769"/>
+ <val o="e3a14" v="121.05"/>
+ <val o="e4824" v="120.921"/>
+ <val o="e5634" v="122.497"/>
+ <val o="e6444" v="120.677"/>
+ <val o="e7255" v="122.67"/>
+ <val o="e806f" v="123.778"/>
+ <val o="e8e7f" v="116.655"/>
+ <val o="e9c8e" v="118.109"/>
+ <val o="eaa9f" v="118.372"/>
+ <val o="eb8ae" v="117.527"/>
+ <val o="ec6bf" v="113.518"/>
+ <val o="ed4ce" v="123.496"/>
+ <val o="ee2df" v="120.611"/>
+ <val o="ef0ef" v="118.704"/>
+ <val o="eff01" v="115.651"/>
+ <val o="f0d10" v="117.487"/>
+ <val o="f1b20" v="117.186"/>
+ <val o="f2930" v="121.114"/>
+ <val o="f3740" v="117.611"/>
+ <val o="f4551" v="117.892"/>
+ <val o="f5361" v="117.718"/>
+ <val o="f6172" v="117.584"/>
+ <val o="f6f80" v="117.38"/>
+ <val o="f7d91" v="119.222"/>
+ <val o="f8ba1" v="121.037"/>
+ <val o="f99b1" v="120.221"/>
+ <val o="fa7c0" v="118.379"/>
+ <val o="fb5d1" v="118.238"/>
+ <val o="fc3e0" v="123.037"/>
+ <val o="fd1fb" v="123.007"/>
+ <val o="fe00b" v="126.294"/>
+ <val o="fee1c" v="123.682"/>
+ <val o="ffc2c" v="123.591"/>
+ <val o="100a3b" v="122.918"/>
+ <val o="10184c" v="121.387"/>
+ <val o="10265b" v="117.586"/>
+ <val o="10346c" v="117.716"/>
+ <val o="10427b" v="119.191"/>
+ <val o="10508d" v="117.355"/>
+ <val o="105e9d" v="117.862"/>
+ <val o="106cad" v="117.531"/>
+ <val o="107abd" v="119.886"/>
+ <val o="1088cd" v="119.426"/>
+ <val o="1096de" v="118.72"/>
+ <val o="10a4ed" v="119.004"/>
+ <val o="10b2fe" v="118.725"/>
+ <val o="10c10d" v="116.196"/>
+ <val o="10cf1e" v="118.111"/>
+ <val o="10dd2e" v="119.001"/>
+ <val o="10eb66" v="120.963"/>
+ <val o="10f94e" v="121.34"/>
+ <val o="11075e" v="119.151"/>
+ <val o="11156d" v="120.797"/>
+ <val o="112388" v="123.519"/>
+ <val o="113187" v="122.366"/>
+ <val o="113fb0" v="123.381"/>
+ <val o="114da6" v="123.296"/>
+ <val o="115bb6" v="123.047"/>
+ <val o="1169c6" v="120.874"/>
+ <val o="1177d6" v="118.017"/>
+ <val o="1185e8" v="118.388"/>
+ <val o="1193f7" v="117.753"/>
+ <val o="11a208" v="119.761"/>
+ <val o="11b017" v="121.547"/>
+ <val o="11be2f" v="122.028"/>
+ <val o="11cc37" v="122.195"/>
+ <val o="11da47" v="121.783"/>
+ <val o="11e857" v="120.581"/>
+ <val o="11f667" v="121.685"/>
+ <val o="120578" v="120.972"/>
+ <val o="121386" v="116.836"/>
+ <val o="122196" v="117.633"/>
+ <val o="122fa6" v="118.83"/>
+ <val o="123db5" v="120.746"/>
+ <val o="124bc5" v="122.541"/>
+ <val o="1259d5" v="120.249"/>
+ <val o="1267e4" v="122.708"/>
+ <val o="127600" v="124.538"/>
+ <val o="128305" v="125.289"/>
+ <val o="129115" v="125.325"/>
+ <val o="129f25" v="125.49"/>
+ <val o="12ad35" v="124.672"/>
+ <val o="12bb45" v="122.813"/>
+ <val o="12c954" v="121.573"/>
+ <val o="12d766" v="120.719"/>
+ <val o="12e575" v="119.706"/>
+ <val o="12f386" v="116.935"/>
+ <val o="130196" v="117.255"/>
+ <val o="130fa6" v="118.365"/>
+ <val o="131db7" v="119.829"/>
+ <val o="132bc5" v="119.607"/>
+ <val o="1339d4" v="0.109"/>
+ <val o="1347e5" v="0.109"/>
+ <val o="1355f4" v="0.108"/>
+ <val o="136404" v="0.106"/>
+ <val o="137214" v="0.106"/>
+ <val o="138024" v="0.107"/>
+ <val o="138e33" v="0.108"/>
+ <val o="139c44" v="0.109"/>
+ <val o="13aa54" v="0.108"/>
+ <val o="13b865" v="0.109"/>
+ <val o="13c67e" v="0.101"/>
+ <val o="13d48e" v="0.104"/>
+ <val o="13e29e" v="0.106"/>
+ <val o="13f0ae" v="0.106"/>
+ <val o="13febf" v="0.104"/>
+ <val o="140ccf" v="0.102"/>
+ <val o="141adf" v="0.104"/>
+ <val o="1428ef" v="0.108"/>
+ <val o="1436ff" v="0.107"/>
+ <val o="14450f" v="0.107"/>
+ <val o="14531f" v="0.107"/>
+ <val o="146130" v="0.108"/>
+ <val o="146f40" v="0.11"/>
+ <val o="147d44" v="0.108"/>
+ <val o="148b57" v="0.108"/>
+ <val o="149965" v="0.108"/>
+ <val o="14a775" v="0.106"/>
+ <val o="14b584" v="0.11"/>
+ <val o="14c397" v="0.107"/>
+ <val o="14d1a4" v="0.107"/>
+ <val o="14dfb6" v="0.108"/>
+ <val o="14edc5" v="0.11"/>
+ <val o="14fbd5" v="0.112"/>
+ <val o="1509e5" v="0.112"/>
+ <val o="1517ff" v="0.115"/>
+ <val o="152605" v="0.108"/>
+ <val o="153415" v="0.109"/>
+ <val o="154225" v="0.11"/>
+ <val o="155035" v="0.109"/>
+ <val o="155e45" v="0.107"/>
+ <val o="156c55" v="0.104"/>
+ <val o="157a65" v="0.107"/>
+ <val o="158875" v="0.107"/>
+ <val o="159686" v="0.106"/>
+ <val o="15a495" v="0.107"/>
+ <val o="15b2a6" v="0.108"/>
+ <val o="15c0b6" v="0.109"/>
+ <val o="15cec6" v="0.109"/>
+ <val o="15dcd5" v="0.108"/>
+ <val o="15eae6" v="0.108"/>
+ <val o="15f8f5" v="0.104"/>
+ <val o="160706" v="0.11"/>
+ <val o="161517" v="0.109"/>
+ <val o="162326" v="0.11"/>
+ <val o="163137" v="0.111"/>
+ <val o="163f46" v="0.109"/>
+ <val o="164d57" v="0.11"/>
+ <val o="165b67" v="0.112"/>
+ <val o="166982" v="0.111"/>
+ <val o="167786" v="0.112"/>
+ <val o="168596" v="0.113"/>
+ <val o="1693a6" v="0.113"/>
+ <val o="16a1b5" v="0.112"/>
+ <val o="16afc6" v="0.111"/>
+ <val o="16bdd5" v="0.109"/>
+ <val o="16cbe6" v="0.107"/>
+ <val o="16d9f6" v="0.111"/>
+ <val o="16e807" v="0.11"/>
+ <val o="16f616" v="0.11"/>
+ <val o="170429" v="0.111"/>
+ <val o="171236" v="0.112"/>
+ <val o="172047" v="0.112"/>
+ <val o="172e57" v="0.111"/>
+ <val o="173c67" v="0.111"/>
+ <val o="174a77" v="0.11"/>
+ <val o="175887" v="0.108"/>
+ <val o="176694" v="118.351"/>
+ <val o="1774a3" v="119.763"/>
+ <val o="1782b3" v="120.872"/>
+ <val o="1790c5" v="121.443"/>
+ <val o="179ed4" v="124.587"/>
+ <val o="17ace4" v="127.119"/>
+ <val o="17bafd" v="128.887"/>
+ <val o="17c90f" v="127.107"/>
+ <val o="17d71e" v="127.1"/>
+ <val o="17e52f" v="127.35"/>
+ <val o="17f33f" v="126.552"/>
+ <val o="18014f" v="124.71"/>
+ <val o="180f5f" v="124.077"/>
+ <val o="181d6e" v="125.099"/>
+ <val o="182b7f" v="125.025"/>
+ <val o="18398f" v="123.954"/>
+ <val o="1847a1" v="123.641"/>
+ <val o="1855af" v="124.308"/>
+ <val o="1863c0" v="126.201"/>
+ <val o="1871cf" v="125.426"/>
+ <val o="187fe0" v="125.045"/>
+ <val o="188def" v="124.868"/>
+ <val o="189c00" v="123.854"/>
+ <val o="18b80d" v="117.177"/>
+ <val o="18c61c" v="120.985"/>
+ <val o="18d42c" v="121.689"/>
+ <val o="18e23b" v="121.514"/>
+ <val o="18f04b" v="123.76"/>
+ <val o="18fe5e" v="125.848"/>
+ <val o="190c76" v="123.162"/>
+ <val o="191a86" v="124.87"/>
+ <val o="192896" v="126.457"/>
+ <val o="1936a6" v="126.565"/>
+ <val o="1944b7" v="125.821"/>
+ <val o="1952c6" v="123.654"/>
+ <val o="1960d7" v="120.985"/>
+ <val o="196ee6" v="121.019"/>
+ <val o="197cf8" v="120.771"/>
+ <val o="198b0f" v="120.139"/>
+ <val o="19991f" v="120.067"/>
+ <val o="19b541" v="122.459"/>
+ <val o="19c34d" v="121.603"/>
+ <val o="19d15e" v="120.856"/>
+ <val o="19df80" v="120.882"/>
+ <val o="19ed90" v="120.049"/>
+ <val o="19eebe" v="119.903"/>
+ <val o="19fb8e" v="116.012"/>
+ <val o="1a09a0" v="119.283"/>
+ <val o="1a17ae" v="120.303"/>
+ <val o="1a25be" v="121.728"/>
+ <val o="1a33cd" v="121.516"/>
+ <val o="1a41dd" v="122.849"/>
+ <val o="1a4fed" v="126.093"/>
+ <val o="1a5e08" v="126.725"/>
+ <val o="1a6c05" v="124.883"/>
+ <val o="1a7a15" v="125.931"/>
+ <val o="1a8826" v="126.096"/>
+ <val o="1a9637" v="124.906"/>
+ <val o="1aa445" v="123.654"/>
+ <val o="1ab255" v="121.493"/>
+ <val o="1ac065" v="123.897"/>
+ <val o="1ace75" v="123.756"/>
+ <val o="1adc87" v="122.369"/>
+ <val o="1aea96" v="121.934"/>
+ <val o="1af8a7" v="122.306"/>
+ <val o="1b06b7" v="124.041"/>
+ <val o="1b14c6" v="123.698"/>
+ <val o="1c7460" v="120.029"/>
+ <val o="1c8270" v="120.033"/>
+ <val o="1c907e" v="119.314"/>
+ <val o="1c9e8f" v="120.479"/>
+ <val o="1caca2" v="121.91"/>
+ <val o="1cbab1" v="122.485"/>
+ <val o="1cc8c1" v="118.564"/>
+ <val o="1cd6d0" v="119.367"/>
+ <val o="1ce4de" v="120.808"/>
+ <val o="1cf2f0" v="123.105"/>
+ <val o="1d0109" v="125.021"/>
+ <val o="1d0f06" v="123.274"/>
+ <val o="1d1d15" v="123.92"/>
+ <val o="1d2b25" v="123.876"/>
+ <val o="1d3935" v="122.883"/>
+ <val o="1d4745" v="122.072"/>
+ <val o="1d5555" v="121.544"/>
+ <val o="1d6366" v="123.27"/>
+ <val o="1d7175" v="123.513"/>
+ <val o="1d7f86" v="122.604"/>
+ <val o="1d8d95" v="121.281"/>
+ <val o="1d9ba6" v="121.716"/>
+ <val o="1da9b6" v="122.714"/>
+ <val o="1db7c7" v="123.129"/>
+ <val o="1dc5d5" v="123.431"/>
+ <val o="1dd3e6" v="122.987"/>
+ <val o="1de1f5" v="119.262"/>
+ <val o="1df006" v="118.087"/>
+ <val o="1dfe16" v="116.532"/>
+ <val o="1e0c26" v="118.618"/>
+ <val o="1e1a36" v="119.706"/>
+ <val o="1e2847" v="120.899"/>
+ <val o="1e3659" v="120.718"/>
+ <val o="1e4467" v="121.624"/>
+ <val o="1e5281" v="117.925"/>
+ <val o="1e6086" v="120.928"/>
+ <val o="1e6e96" v="122.34"/>
+ <val o="1e7ca6" v="122.972"/>
+ <val o="1e8ab5" v="123.05"/>
+ <val o="1e98c6" v="122.44"/>
+ <val o="1ea6d5" v="120.735"/>
+ <val o="1eb4e6" v="120.711"/>
+ <val o="1ec2f6" v="123.688"/>
+ <val o="1ed106" v="122.853"/>
+ <val o="1edf16" v="122.754"/>
+ <val o="1eed26" v="122.975"/>
+ <val o="1efb36" v="123.49"/>
+ <val o="1f0946" v="123.278"/>
+ <val o="1f1756" v="121.776"/>
+ <val o="1f2566" v="121.458"/>
+ <val o="1f3376" v="120.109"/>
+ <val o="1f4187" v="116.832"/>
+ <val o="1f4f96" v="119.948"/>
+ <val o="1f5da7" v="120.022"/>
+ <val o="1f6bb6" v="120.884"/>
+ <val o="1f79c7" v="119.618"/>
+ <val o="1f87d6" v="122.811"/>
+ <val o="1f95e7" v="123.997"/>
+ <val o="1fa401" v="126.654"/>
+ <val o="1fb204" v="125.574"/>
+ <val o="1fc016" v="126.495"/>
+ <val o="1fce25" v="126.021"/>
+ <val o="1fdc35" v="125.521"/>
+ <val o="1fea45" v="123.104"/>
+ <val o="1ff855" v="121.073"/>
+ <val o="200665" v="117.997"/>
+ <val o="201475" v="119.376"/>
+ <val o="202286" v="119.302"/>
+ <val o="203095" v="120.24"/>
+ <val o="203ea5" v="120.497"/>
+ <val o="204cb6" v="123.276"/>
+ <val o="205ac6" v="121.287"/>
+ <val o="2068d6" v="120.492"/>
+ <val o="2076e6" v="119.643"/>
+ <val o="2084f6" v="117.626"/>
+ <val o="209306" v="121.9"/>
+ <val o="20a116" v="120.861"/>
+ <val o="20af26" v="120.493"/>
+ <val o="20bd37" v="121.526"/>
+ <val o="20cb46" v="119.46"/>
+ <val o="20d957" v="120.284"/>
+ <val o="20e767" v="121.713"/>
+ <val o="20f581" v="124.203"/>
+ <val o="210386" v="126.587"/>
+ <val o="211194" v="124.627"/>
+ <val o="211fa5" v="124.526"/>
+ <val o="212db5" v="123.821"/>
+ <val o="213bc5" v="122.357"/>
+ <val o="2149d6" v="118.642"/>
+ <val o="2157e5" v="116.651"/>
+ <val o="2165f6" v="122.439"/>
+ <val o="217406" v="120.232"/>
+ <val o="218217" v="119.322"/>
+ <val o="219026" v="120.236"/>
+ <val o="219e39" v="120.346"/>
+ <val o="21ac46" v="119.148"/>
+ <val o="21ba57" v="118.907"/>
+ <val o="21c867" v="117.874"/>
+ <val o="21d677" v="122.584"/>
+ <val o="21e487" v="120.252"/>
+ <val o="21f296" v="120.469"/>
+ <val o="2200a6" v="121.303"/>
+ <val o="220eb7" v="122.183"/>
+ <val o="221cc6" v="118.747"/>
+ <val o="222ad7" v="120.81"/>
+ <val o="2238e7" v="123.937"/>
+ <val o="224701" v="126.687"/>
+ <val o="225505" v="119.553"/>
+ <val o="226315" v="119.757"/>
+ <val o="227125" v="119.753"/>
+ <val o="227f35" v="117.557"/>
+ <val o="228d45" v="116.262"/>
+ <val o="229b54" v="122.469"/>
+ <val o="22a965" v="119.765"/>
+ <val o="22b776" v="119.78"/>
+ <val o="22c586" v="119.006"/>
+ <val o="22d397" v="118.696"/>
+ <val o="22e1a6" v="119.018"/>
+ <val o="22efb6" v="120.765"/>
+ <val o="22fdc7" v="120.41"/>
+ <val o="230bd7" v="119.608"/>
+ <val o="2319e6" v="119.268"/>
+ <val o="2327f6" v="118.221"/>
+ <val o="23361b" v="119.234"/>
+ <val o="234416" v="118.199"/>
+ <val o="235226" v="119.524"/>
+ <val o="236037" v="120.76"/>
+ <val o="236e46" v="118.446"/>
+ <val o="237c57" v="119.86"/>
+ <val o="238a66" v="121.458"/>
+ <val o="239881" v="120.937"/>
+ <val o="23a685" v="122.353"/>
+ <val o="23b495" v="123.085"/>
+ <val o="23c2a4" v="123.145"/>
+ <val o="23d0b5" v="122.277"/>
+ <val o="23dec4" v="121.153"/>
+ <val o="23ecd5" v="119.31"/>
+ <val o="23fae4" v="120.616"/>
+ <val o="2408f6" v="118.482"/>
+ <val o="241706" v="117.789"/>
+ <val o="242518" v="118.178"/>
+ <val o="243325" v="118.65"/>
+ <val o="244137" v="119.893"/>
+ <val o="244f46" v="119.172"/>
+ <val o="246b66" v="118.88"/>
+ <val o="247976" v="118.03"/>
+ <val o="248786" v="115.2"/>
+ <val o="24957e" v="118.091"/>
+ <val o="24a38f" v="119.601"/>
+ <val o="24b19c" v="120.844"/>
+ <val o="24bfac" v="120.094"/>
+ <val o="24cdbc" v="123.851"/>
+ <val o="24dbcd" v="123.499"/>
+ <val o="24e9e5" v="124.806"/>
+ <val o="24f808" v="124.27"/>
+ <val o="250616" v="124.985"/>
+ <val o="251426" v="125.02"/>
+ <val o="252236" v="123.483"/>
+ <val o="253047" v="122.436"/>
+ <val o="253e56" v="120.041"/>
+ <val o="254c67" v="119.496"/>
+ <val o="255a76" v="119.362"/>
+ <val o="256887" v="117.767"/>
+ <val o="257697" v="118.616"/>
+ <val o="2584a8" v="117.274"/>
+ <val o="2592b6" v="118.975"/>
+ <val o="25a0c7" v="119.79"/>
+ <val o="25aed7" v="119.331"/>
+ <val o="25bce7" v="119.194"/>
+ <val o="25caf8" v="118.637"/>
+ <val o="25d907" v="120.535"/>
+ <val o="25e718" v="119.8"/>
+ <val o="25f527" v="120.403"/>
+ <val o="260338" v="121.054"/>
+ <val o="261149" v="119.413"/>
+ <val o="261f59" v="120.38"/>
+ <val o="262d68" v="123.203"/>
+ <val o="263b83" v="121.143"/>
+ <val o="264986" v="122.976"/>
+ <val o="265795" v="123.697"/>
+ <val o="2665a6" v="124.476"/>
+ <val o="2673b5" v="123.592"/>
+ <val o="2681c6" v="123.177"/>
+ <val o="268fd5" v="121.853"/>
+ <val o="269de6" v="121.298"/>
+ <val o="26abf6" v="120.593"/>
+ <val o="26ba06" v="118.763"/>
+ <val o="26c817" v="118.278"/>
+ <val o="26d62b" v="118.596"/>
+ <val o="26e436" v="119.984"/>
+ <val o="26f247" v="119.523"/>
+ <val o="270057" v="119.574"/>
+ <val o="270e67" v="119.013"/>
+ <val o="271c77" v="119.722"/>
+ <val o="272a87" v="120.875"/>
+ <val o="273897" v="120.668"/>
+ <val o="2746a8" v="121.451"/>
+ <val o="2754b9" v="121.838"/>
+ <val o="2762c7" v="119.053"/>
+ <val o="2770d8" v="121.03"/>
+ <val o="277ee7" v="123.544"/>
+ </par>
+ <par memind="9808" h="3dc1a8de">
+ <val o="0" v="0"/>
+ <val o="e08" v="0"/>
+ <val o="1c32" v="0"/>
+ <val o="2a3c" v="0"/>
+ <val o="3835" v="0"/>
+ <val o="4645" v="0"/>
+ <val o="5455" v="0"/>
+ <val o="6265" v="0"/>
+ <val o="7075" v="0"/>
+ <val o="7e85" v="0"/>
+ <val o="8c96" v="0"/>
+ <val o="9aa5" v="0"/>
+ <val o="a8b6" v="0"/>
+ <val o="b6c5" v="0"/>
+ <val o="c4d7" v="0"/>
+ <val o="d30b" v="0"/>
+ <val o="e0f6" v="0"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="0"/>
+ <val o="11937" v="0"/>
+ <val o="12746" v="0"/>
+ <val o="13556" v="0"/>
+ <val o="14366" v="0"/>
+ <val o="15181" v="0"/>
+ <val o="15f85" v="0"/>
+ <val o="16d95" v="0"/>
+ <val o="17ba4" v="0"/>
+ <val o="189b5" v="0"/>
+ <val o="197c4" v="0"/>
+ <val o="1a5d5" v="0"/>
+ <val o="1b3e6" v="0"/>
+ <val o="1c1f6" v="0"/>
+ <val o="1d005" v="0"/>
+ <val o="1de15" v="0"/>
+ <val o="1ec25" v="0"/>
+ <val o="1fa36" v="0"/>
+ <val o="20845" v="0"/>
+ <val o="21656" v="0"/>
+ <val o="22465" v="0"/>
+ <val o="23276" v="0"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="0"/>
+ <val o="25ca7" v="0"/>
+ <val o="26ab7" v="0"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="0"/>
+ <val o="294e6" v="0"/>
+ <val o="2a301" v="0"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="0"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="0"/>
+ <val o="31375" v="0"/>
+ <val o="3219e" v="0"/>
+ <val o="32f96" v="0"/>
+ <val o="33da6" v="0"/>
+ <val o="34bb6" v="0"/>
+ <val o="359de" v="0"/>
+ <val o="367d6" v="0"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="0"/>
+ <val o="3bc36" v="0"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="0"/>
+ <val o="3e667" v="0"/>
+ <val o="3f481" v="0"/>
+ <val o="40285" v="0"/>
+ <val o="41095" v="0"/>
+ <val o="41ea5" v="0"/>
+ <val o="42cb5" v="0"/>
+ <val o="43ac5" v="0"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="0"/>
+ <val o="464f5" v="0"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="0"/>
+ <val o="54600" v="0"/>
+ <val o="55406" v="0"/>
+ <val o="56215" v="0"/>
+ <val o="57026" v="0"/>
+ <val o="57e36" v="0"/>
+ <val o="58c46" v="0"/>
+ <val o="59a70" v="0"/>
+ <val o="5a867" v="0"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="0"/>
+ <val o="5eeb8" v="0"/>
+ <val o="5fcc6" v="0"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="0"/>
+ <val o="65f37" v="0"/>
+ <val o="66d46" v="0"/>
+ <val o="67b57" v="0"/>
+ <val o="68967" v="0"/>
+ <val o="69782" v="0"/>
+ <val o="6a586" v="0"/>
+ <val o="6b395" v="0"/>
+ <val o="6c1a6" v="0"/>
+ <val o="6cfb5" v="0"/>
+ <val o="6ddc6" v="0"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="0"/>
+ <val o="707f6" v="0"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="0"/>
+ <val o="74e47" v="0"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="0"/>
+ <val o="7bebf" v="0"/>
+ <val o="7cccf" v="0"/>
+ <val o="7dadf" v="0"/>
+ <val o="7e8fa" v="0"/>
+ <val o="7f70a" v="0"/>
+ <val o="8051a" v="0"/>
+ <val o="8132a" v="0"/>
+ <val o="8213a" v="0"/>
+ <val o="82f4a" v="0"/>
+ <val o="83d5a" v="0"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="0"/>
+ <val o="891bb" v="0"/>
+ <val o="89fca" v="0"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="0"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="0"/>
+ <val o="93a84" v="0"/>
+ <val o="94885" v="0"/>
+ <val o="95694" v="0"/>
+ <val o="964a5" v="0"/>
+ <val o="972b4" v="0"/>
+ <val o="980c5" v="0"/>
+ <val o="98ed4" v="0"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="0"/>
+ <val o="9c716" v="0"/>
+ <val o="9d526" v="0"/>
+ <val o="9e336" v="0"/>
+ <val o="9f145" v="0"/>
+ <val o="9ff56" v="0"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="0"/>
+ <val o="a2986" v="0"/>
+ <val o="a3795" v="0"/>
+ <val o="a45a7" v="0"/>
+ <val o="a53b6" v="0"/>
+ <val o="a61c7" v="0"/>
+ <val o="a6fd6" v="0"/>
+ <val o="a7e00" v="0"/>
+ <val o="a8c00" v="0"/>
+ <val o="a9a05" v="0"/>
+ <val o="aa815" v="0"/>
+ <val o="ab625" v="0"/>
+ <val o="ac435" v="0"/>
+ <val o="ad245" v="0"/>
+ <val o="ae055" v="0"/>
+ <val o="aee65" v="0"/>
+ <val o="afc75" v="0"/>
+ <val o="b0a85" v="0"/>
+ <val o="b26a6" v="0"/>
+ <val o="b34b6" v="0"/>
+ <val o="b42c6" v="0"/>
+ <val o="b50d6" v="0"/>
+ <val o="b5ee7" v="0"/>
+ <val o="b6cf6" v="0"/>
+ <val o="b7b07" v="0"/>
+ <val o="b8917" v="0"/>
+ <val o="b9728" v="0"/>
+ <val o="ba537" v="0"/>
+ <val o="bb347" v="0"/>
+ <val o="bc157" v="0"/>
+ <val o="bcf67" v="0"/>
+ <val o="bdd81" v="0"/>
+ <val o="beb86" v="0"/>
+ <val o="bf995" v="0"/>
+ <val o="c07a6" v="0"/>
+ <val o="c15b5" v="0"/>
+ <val o="c23c6" v="0"/>
+ <val o="c31d5" v="0"/>
+ <val o="c3fe6" v="0"/>
+ <val o="c4df5" v="0"/>
+ <val o="c5c06" v="0"/>
+ <val o="c6a16" v="0"/>
+ <val o="c7826" v="0"/>
+ <val o="c8636" v="0"/>
+ <val o="c9446" v="0"/>
+ <val o="ca256" v="0"/>
+ <val o="cb066" v="0"/>
+ <val o="cbe76" v="0"/>
+ <val o="ccc87" v="0"/>
+ <val o="cda96" v="0"/>
+ <val o="ce8a8" v="0"/>
+ <val o="cf6b7" v="0"/>
+ <val o="d04c8" v="0"/>
+ <val o="d12d7" v="0"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="0"/>
+ <val o="d3d05" v="0"/>
+ <val o="d4b15" v="0"/>
+ <val o="d5926" v="0"/>
+ <val o="d6735" v="0"/>
+ <val o="d7546" v="0"/>
+ <val o="d8355" v="0"/>
+ <val o="d9166" v="0"/>
+ <val o="d9f75" v="0"/>
+ <val o="dad87" v="0"/>
+ <val o="dbb97" v="0"/>
+ <val o="dc9a8" v="0"/>
+ <val o="dd7b7" v="0"/>
+ <val o="de5c6" v="0"/>
+ <val o="df3d7" v="0"/>
+ <val o="e01d7" v="0"/>
+ <val o="e0fe5" v="0"/>
+ <val o="e1df5" v="0"/>
+ <val o="e2c04" v="0"/>
+ <val o="e3a14" v="0"/>
+ <val o="e4824" v="0"/>
+ <val o="e5634" v="0"/>
+ <val o="e6444" v="0"/>
+ <val o="e7255" v="0"/>
+ <val o="e806f" v="0"/>
+ <val o="e8e7f" v="0"/>
+ <val o="e9c8e" v="0"/>
+ <val o="eaa9f" v="0"/>
+ <val o="eb8ae" v="0"/>
+ <val o="ec6bf" v="0"/>
+ <val o="ed4ce" v="0"/>
+ <val o="ee2df" v="0"/>
+ <val o="ef0ef" v="0"/>
+ <val o="eff01" v="0"/>
+ <val o="f0d10" v="0"/>
+ <val o="f1b20" v="0"/>
+ <val o="f2930" v="0"/>
+ <val o="f3740" v="0"/>
+ <val o="f4551" v="0"/>
+ <val o="f5361" v="0"/>
+ <val o="f6172" v="0"/>
+ <val o="f6f80" v="0"/>
+ <val o="f7d91" v="0"/>
+ <val o="f8ba1" v="0"/>
+ <val o="f99b1" v="0"/>
+ <val o="fa7c0" v="0"/>
+ <val o="fb5d1" v="0"/>
+ <val o="fc3e0" v="0"/>
+ <val o="fd1fb" v="0"/>
+ <val o="fe00b" v="0"/>
+ <val o="fee1c" v="0"/>
+ <val o="ffc2c" v="0"/>
+ <val o="100a3b" v="0"/>
+ <val o="10184c" v="0"/>
+ <val o="10265b" v="0"/>
+ <val o="10346c" v="0"/>
+ <val o="10427b" v="0"/>
+ <val o="10508d" v="0"/>
+ <val o="105e9d" v="0"/>
+ <val o="106cad" v="0"/>
+ <val o="107abd" v="0"/>
+ <val o="1088cd" v="0"/>
+ <val o="1096de" v="0"/>
+ <val o="10a4ed" v="0"/>
+ <val o="10b2fe" v="0"/>
+ <val o="10c10d" v="0"/>
+ <val o="10cf1e" v="0"/>
+ <val o="10dd2e" v="0"/>
+ <val o="10eb66" v="0"/>
+ <val o="10f94e" v="0"/>
+ <val o="11075e" v="0"/>
+ <val o="11156d" v="0"/>
+ <val o="112388" v="0"/>
+ <val o="113187" v="0"/>
+ <val o="113fb0" v="0"/>
+ <val o="114da6" v="0"/>
+ <val o="115bb6" v="0"/>
+ <val o="1169c6" v="0"/>
+ <val o="1177d6" v="0"/>
+ <val o="1185e8" v="0"/>
+ <val o="1193f7" v="0"/>
+ <val o="11a208" v="0"/>
+ <val o="11b017" v="0"/>
+ <val o="11be2f" v="0"/>
+ <val o="11cc37" v="0"/>
+ <val o="11da47" v="0"/>
+ <val o="11e857" v="0"/>
+ <val o="11f667" v="0"/>
+ <val o="120578" v="0"/>
+ <val o="121386" v="0"/>
+ <val o="122196" v="0"/>
+ <val o="122fa6" v="0"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="0"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="0"/>
+ <val o="128305" v="0"/>
+ <val o="129115" v="0"/>
+ <val o="129f25" v="0"/>
+ <val o="12ad35" v="0"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="0"/>
+ <val o="12d766" v="0"/>
+ <val o="12e575" v="0"/>
+ <val o="12f386" v="0"/>
+ <val o="130196" v="0"/>
+ <val o="130fa6" v="0"/>
+ <val o="131db7" v="0"/>
+ <val o="132bc5" v="0"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="0"/>
+ <val o="1774a3" v="0"/>
+ <val o="1782b3" v="0"/>
+ <val o="1790c5" v="0"/>
+ <val o="179ed4" v="0"/>
+ <val o="17ace4" v="0"/>
+ <val o="17bafd" v="0"/>
+ <val o="17c90f" v="0"/>
+ <val o="17d71e" v="0"/>
+ <val o="17e52f" v="0"/>
+ <val o="17f33f" v="0"/>
+ <val o="18014f" v="0"/>
+ <val o="180f5f" v="0"/>
+ <val o="181d6e" v="0"/>
+ <val o="182b7f" v="0"/>
+ <val o="18398f" v="0"/>
+ <val o="1847a1" v="0"/>
+ <val o="1855af" v="0"/>
+ <val o="1863c0" v="0"/>
+ <val o="1871cf" v="0"/>
+ <val o="187fe0" v="0"/>
+ <val o="188def" v="0"/>
+ <val o="189c00" v="0"/>
+ <val o="18b80d" v="0"/>
+ <val o="18c61c" v="0"/>
+ <val o="18d42c" v="0"/>
+ <val o="18e23b" v="0"/>
+ <val o="18f04b" v="0"/>
+ <val o="18fe5e" v="0"/>
+ <val o="190c76" v="0"/>
+ <val o="191a86" v="0"/>
+ <val o="192896" v="0"/>
+ <val o="1936a6" v="0"/>
+ <val o="1944b7" v="0"/>
+ <val o="1952c6" v="0"/>
+ <val o="1960d7" v="0"/>
+ <val o="196ee6" v="0"/>
+ <val o="197cf8" v="0"/>
+ <val o="198b0f" v="0"/>
+ <val o="19991f" v="0"/>
+ <val o="19b541" v="0"/>
+ <val o="19c34d" v="0"/>
+ <val o="19d15e" v="0"/>
+ <val o="19df80" v="0"/>
+ <val o="19ed90" v="0"/>
+ <val o="19eebe" v="0"/>
+ <val o="19fb8e" v="0"/>
+ <val o="1a09a0" v="0"/>
+ <val o="1a17ae" v="0"/>
+ <val o="1a25be" v="0"/>
+ <val o="1a33cd" v="0"/>
+ <val o="1a41dd" v="0"/>
+ <val o="1a4fed" v="0"/>
+ <val o="1a5e08" v="0"/>
+ <val o="1a6c05" v="0"/>
+ <val o="1a7a15" v="0"/>
+ <val o="1a8826" v="0"/>
+ <val o="1a9637" v="0"/>
+ <val o="1aa445" v="0"/>
+ <val o="1ab255" v="0"/>
+ <val o="1ac065" v="0"/>
+ <val o="1ace75" v="0"/>
+ <val o="1adc87" v="0"/>
+ <val o="1aea96" v="0"/>
+ <val o="1af8a7" v="0"/>
+ <val o="1b06b7" v="0"/>
+ <val o="1b14c6" v="0"/>
+ <val o="1c7460" v="0"/>
+ <val o="1c8270" v="0"/>
+ <val o="1c907e" v="0"/>
+ <val o="1c9e8f" v="0"/>
+ <val o="1caca2" v="0"/>
+ <val o="1cbab1" v="0"/>
+ <val o="1cc8c1" v="0"/>
+ <val o="1cd6d0" v="0"/>
+ <val o="1ce4de" v="0"/>
+ <val o="1cf2f0" v="0"/>
+ <val o="1d0109" v="0"/>
+ <val o="1d0f06" v="0"/>
+ <val o="1d1d15" v="0"/>
+ <val o="1d2b25" v="0"/>
+ <val o="1d3935" v="0"/>
+ <val o="1d4745" v="0"/>
+ <val o="1d5555" v="0"/>
+ <val o="1d6366" v="0"/>
+ <val o="1d7175" v="0"/>
+ <val o="1d7f86" v="0"/>
+ <val o="1d8d95" v="0"/>
+ <val o="1d9ba6" v="0"/>
+ <val o="1da9b6" v="0"/>
+ <val o="1db7c7" v="0"/>
+ <val o="1dc5d5" v="0"/>
+ <val o="1dd3e6" v="0"/>
+ <val o="1de1f5" v="0"/>
+ <val o="1df006" v="0"/>
+ <val o="1dfe16" v="0"/>
+ <val o="1e0c26" v="0"/>
+ <val o="1e1a36" v="0"/>
+ <val o="1e2847" v="0"/>
+ <val o="1e3659" v="0"/>
+ <val o="1e4467" v="0"/>
+ <val o="1e5281" v="0"/>
+ <val o="1e6086" v="0"/>
+ <val o="1e6e96" v="0"/>
+ <val o="1e7ca6" v="0"/>
+ <val o="1e8ab5" v="0"/>
+ <val o="1e98c6" v="0"/>
+ <val o="1ea6d5" v="0"/>
+ <val o="1eb4e6" v="0"/>
+ <val o="1ec2f6" v="0"/>
+ <val o="1ed106" v="0"/>
+ <val o="1edf16" v="0"/>
+ <val o="1eed26" v="0"/>
+ <val o="1efb36" v="0"/>
+ <val o="1f0946" v="0"/>
+ <val o="1f1756" v="0"/>
+ <val o="1f2566" v="0"/>
+ <val o="1f3376" v="0"/>
+ <val o="1f4187" v="0"/>
+ <val o="1f4f96" v="0"/>
+ <val o="1f5da7" v="0"/>
+ <val o="1f6bb6" v="0"/>
+ <val o="1f79c7" v="0"/>
+ <val o="1f87d6" v="0"/>
+ <val o="1f95e7" v="0"/>
+ <val o="1fa401" v="0"/>
+ <val o="1fb204" v="0"/>
+ <val o="1fc016" v="0"/>
+ <val o="1fce25" v="0"/>
+ <val o="1fdc35" v="0"/>
+ <val o="1fea45" v="0"/>
+ <val o="1ff855" v="0"/>
+ <val o="200665" v="0"/>
+ <val o="201475" v="0"/>
+ <val o="202286" v="0"/>
+ <val o="203095" v="0"/>
+ <val o="203ea5" v="0"/>
+ <val o="204cb6" v="0"/>
+ <val o="205ac6" v="0"/>
+ <val o="2068d6" v="0"/>
+ <val o="2076e6" v="0"/>
+ <val o="2084f6" v="0"/>
+ <val o="209306" v="0"/>
+ <val o="20a116" v="0"/>
+ <val o="20af26" v="0"/>
+ <val o="20bd37" v="0"/>
+ <val o="20cb46" v="0"/>
+ <val o="20d957" v="0"/>
+ <val o="20e767" v="0"/>
+ <val o="20f581" v="0"/>
+ <val o="210386" v="0"/>
+ <val o="211194" v="0"/>
+ <val o="211fa5" v="0"/>
+ <val o="212db5" v="0"/>
+ <val o="213bc5" v="0"/>
+ <val o="2149d6" v="0"/>
+ <val o="2157e5" v="0"/>
+ <val o="2165f6" v="0"/>
+ <val o="217406" v="0"/>
+ <val o="218217" v="0"/>
+ <val o="219026" v="0"/>
+ <val o="219e39" v="0"/>
+ <val o="21ac46" v="0"/>
+ <val o="21ba57" v="0"/>
+ <val o="21c867" v="0"/>
+ <val o="21d677" v="0"/>
+ <val o="21e487" v="0"/>
+ <val o="21f296" v="0"/>
+ <val o="2200a6" v="0"/>
+ <val o="220eb7" v="0"/>
+ <val o="221cc6" v="0"/>
+ <val o="222ad7" v="0"/>
+ <val o="2238e7" v="0"/>
+ <val o="224701" v="0"/>
+ <val o="225505" v="0"/>
+ <val o="226315" v="0"/>
+ <val o="227125" v="0"/>
+ <val o="227f35" v="0"/>
+ <val o="228d45" v="0"/>
+ <val o="229b54" v="0"/>
+ <val o="22a965" v="0"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="0"/>
+ <val o="22d397" v="0"/>
+ <val o="22e1a6" v="0"/>
+ <val o="22efb6" v="0"/>
+ <val o="22fdc7" v="0"/>
+ <val o="230bd7" v="0"/>
+ <val o="2319e6" v="0"/>
+ <val o="2327f6" v="0"/>
+ <val o="23361b" v="0"/>
+ <val o="234416" v="0"/>
+ <val o="235226" v="0"/>
+ <val o="236037" v="0"/>
+ <val o="236e46" v="0"/>
+ <val o="237c57" v="0"/>
+ <val o="238a66" v="0"/>
+ <val o="239881" v="0"/>
+ <val o="23a685" v="0"/>
+ <val o="23b495" v="0"/>
+ <val o="23c2a4" v="0"/>
+ <val o="23d0b5" v="0"/>
+ <val o="23dec4" v="0"/>
+ <val o="23ecd5" v="0"/>
+ <val o="23fae4" v="0"/>
+ <val o="2408f6" v="0"/>
+ <val o="241706" v="0"/>
+ <val o="242518" v="0"/>
+ <val o="243325" v="0"/>
+ <val o="244137" v="0"/>
+ <val o="244f46" v="0"/>
+ <val o="246b66" v="0"/>
+ <val o="247976" v="0"/>
+ <val o="248786" v="0"/>
+ <val o="24957e" v="0"/>
+ <val o="24a38f" v="0"/>
+ <val o="24b19c" v="0"/>
+ <val o="24bfac" v="0"/>
+ <val o="24cdbc" v="0"/>
+ <val o="24dbcd" v="0"/>
+ <val o="24e9e5" v="0"/>
+ <val o="24f808" v="0"/>
+ <val o="250616" v="0"/>
+ <val o="251426" v="0"/>
+ <val o="252236" v="0"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="0"/>
+ <val o="254c67" v="0"/>
+ <val o="255a76" v="0"/>
+ <val o="256887" v="0"/>
+ <val o="257697" v="0"/>
+ <val o="2584a8" v="0"/>
+ <val o="2592b6" v="0"/>
+ <val o="25a0c7" v="0"/>
+ <val o="25aed7" v="0"/>
+ <val o="25bce7" v="0"/>
+ <val o="25caf8" v="0"/>
+ <val o="25d907" v="0"/>
+ <val o="25e718" v="0"/>
+ <val o="25f527" v="0"/>
+ <val o="260338" v="0"/>
+ <val o="261149" v="0"/>
+ <val o="261f59" v="0"/>
+ <val o="262d68" v="0"/>
+ <val o="263b83" v="0"/>
+ <val o="264986" v="0"/>
+ <val o="265795" v="0"/>
+ <val o="2665a6" v="0"/>
+ <val o="2673b5" v="0"/>
+ <val o="2681c6" v="0"/>
+ <val o="268fd5" v="0"/>
+ <val o="269de6" v="0"/>
+ <val o="26abf6" v="0"/>
+ <val o="26ba06" v="0"/>
+ <val o="26c817" v="0"/>
+ <val o="26d62b" v="0"/>
+ <val o="26e436" v="0"/>
+ <val o="26f247" v="0"/>
+ <val o="270057" v="0"/>
+ <val o="270e67" v="0"/>
+ <val o="271c77" v="0"/>
+ <val o="272a87" v="0"/>
+ <val o="273897" v="0"/>
+ <val o="2746a8" v="0"/>
+ <val o="2754b9" v="0"/>
+ <val o="2762c7" v="0"/>
+ <val o="2770d8" v="0"/>
+ <val o="277ee7" v="0"/>
+ </par>
+ <par memind="9804" h="3dc1a8de">
+ <val o="0" v="113.768"/>
+ <val o="e08" v="117.131"/>
+ <val o="1c32" v="118.794"/>
+ <val o="2a3c" v="120.362"/>
+ <val o="3835" v="118.504"/>
+ <val o="4645" v="116.275"/>
+ <val o="5455" v="109.258"/>
+ <val o="6265" v="121.127"/>
+ <val o="7075" v="118.849"/>
+ <val o="7e85" v="116.093"/>
+ <val o="8c96" v="120.108"/>
+ <val o="9aa5" v="120.84"/>
+ <val o="a8b6" v="124.045"/>
+ <val o="b6c5" v="124.042"/>
+ <val o="c4d7" v="117.713"/>
+ <val o="d30b" v="118.048"/>
+ <val o="e0f6" v="118.051"/>
+ <val o="ef06" v="118.259"/>
+ <val o="fd17" v="118.054"/>
+ <val o="10b27" v="120.844"/>
+ <val o="11937" v="121.925"/>
+ <val o="12746" v="119.353"/>
+ <val o="13556" v="120.867"/>
+ <val o="14366" v="125.48"/>
+ <val o="15181" v="127.434"/>
+ <val o="15f85" v="119.069"/>
+ <val o="16d95" v="120.904"/>
+ <val o="17ba4" v="120.974"/>
+ <val o="189b5" v="120.25"/>
+ <val o="197c4" v="118.291"/>
+ <val o="1a5d5" v="126.573"/>
+ <val o="1b3e6" v="125.637"/>
+ <val o="1c1f6" v="124.668"/>
+ <val o="1d005" v="121.393"/>
+ <val o="1de15" v="121.998"/>
+ <val o="1ec25" v="122.555"/>
+ <val o="1fa36" v="123.941"/>
+ <val o="20845" v="124.746"/>
+ <val o="21656" v="125.085"/>
+ <val o="22465" v="125.143"/>
+ <val o="23276" v="123.315"/>
+ <val o="24086" v="119.026"/>
+ <val o="24e99" v="118.683"/>
+ <val o="25ca7" v="119.815"/>
+ <val o="26ab7" v="119.25"/>
+ <val o="278c6" v="119.678"/>
+ <val o="286d6" v="121.708"/>
+ <val o="294e6" v="125.182"/>
+ <val o="2a301" v="125.217"/>
+ <val o="2b105" v="117.12"/>
+ <val o="2bf15" v="118.489"/>
+ <val o="2cd25" v="119.338"/>
+ <val o="2db35" v="119.392"/>
+ <val o="2e946" v="117.277"/>
+ <val o="2f755" v="112.967"/>
+ <val o="30566" v="124.775"/>
+ <val o="31375" v="124.409"/>
+ <val o="3219e" v="123.268"/>
+ <val o="32f96" v="122.956"/>
+ <val o="33da6" v="123.032"/>
+ <val o="34bb6" v="123.555"/>
+ <val o="359de" v="123.004"/>
+ <val o="367d6" v="122.125"/>
+ <val o="375e6" v="121.078"/>
+ <val o="3840e" v="117.701"/>
+ <val o="3921e" v="118.101"/>
+ <val o="3a016" v="117.771"/>
+ <val o="3ae27" v="121.393"/>
+ <val o="3bc36" v="120.16"/>
+ <val o="3ca47" v="119.387"/>
+ <val o="3d856" v="119.887"/>
+ <val o="3e667" v="122.64"/>
+ <val o="3f481" v="125.954"/>
+ <val o="40285" v="123.51"/>
+ <val o="41095" v="124.328"/>
+ <val o="41ea5" v="124.639"/>
+ <val o="42cb5" v="124.448"/>
+ <val o="43ac5" v="122.434"/>
+ <val o="448d5" v="118.623"/>
+ <val o="456e6" v="122.169"/>
+ <val o="464f5" v="120.979"/>
+ <val o="480ff" v="118.358"/>
+ <val o="48f0e" v="117.271"/>
+ <val o="49d1d" v="118.68"/>
+ <val o="4ab46" v="118.562"/>
+ <val o="4b955" v="116.842"/>
+ <val o="4c769" v="115.913"/>
+ <val o="4d577" v="118.894"/>
+ <val o="4e387" v="118.59"/>
+ <val o="4f196" v="116.293"/>
+ <val o="4ffa6" v="118.299"/>
+ <val o="50dd0" v="120.233"/>
+ <val o="51bc6" v="118.495"/>
+ <val o="529d6" v="120.406"/>
+ <val o="537e7" v="122.644"/>
+ <val o="54600" v="125.528"/>
+ <val o="55406" v="121.746"/>
+ <val o="56215" v="122.642"/>
+ <val o="57026" v="122.581"/>
+ <val o="57e36" v="122.623"/>
+ <val o="58c46" v="120.431"/>
+ <val o="59a70" v="121.329"/>
+ <val o="5a867" v="120.651"/>
+ <val o="5b676" v="118.876"/>
+ <val o="5c487" v="115.661"/>
+ <val o="5d296" v="119.835"/>
+ <val o="5e0a9" v="120.34"/>
+ <val o="5eeb8" v="119.439"/>
+ <val o="5fcc6" v="118.245"/>
+ <val o="60ad7" v="117.004"/>
+ <val o="618e7" v="117.165"/>
+ <val o="626f7" v="119.95"/>
+ <val o="63507" v="117.149"/>
+ <val o="64317" v="118.541"/>
+ <val o="65127" v="119.822"/>
+ <val o="65f37" v="121.013"/>
+ <val o="66d46" v="121.577"/>
+ <val o="67b57" v="120.289"/>
+ <val o="68967" v="122.62"/>
+ <val o="69782" v="119.093"/>
+ <val o="6a586" v="120.493"/>
+ <val o="6b395" v="121.919"/>
+ <val o="6c1a6" v="122.218"/>
+ <val o="6cfb5" v="121.022"/>
+ <val o="6ddc6" v="118.433"/>
+ <val o="6ebd6" v="115.978"/>
+ <val o="6f9e6" v="120.971"/>
+ <val o="707f6" v="119.234"/>
+ <val o="71607" v="118.015"/>
+ <val o="72417" v="117.922"/>
+ <val o="73227" v="117.566"/>
+ <val o="74037" v="121.469"/>
+ <val o="74e47" v="120.514"/>
+ <val o="75c57" v="118.485"/>
+ <val o="76a63" v="117.889"/>
+ <val o="77873" v="117.946"/>
+ <val o="78680" v="113.611"/>
+ <val o="7948f" v="116.583"/>
+ <val o="7a29f" v="119.306"/>
+ <val o="7b0af" v="118.802"/>
+ <val o="7bebf" v="120.799"/>
+ <val o="7cccf" v="120.857"/>
+ <val o="7dadf" v="121.594"/>
+ <val o="7e8fa" v="121.421"/>
+ <val o="7f70a" v="123.74"/>
+ <val o="8051a" v="125.189"/>
+ <val o="8132a" v="125.673"/>
+ <val o="8213a" v="124.777"/>
+ <val o="82f4a" v="122.432"/>
+ <val o="83d5a" v="120.011"/>
+ <val o="84b6a" v="118.622"/>
+ <val o="8597a" v="118.559"/>
+ <val o="8678b" v="117.524"/>
+ <val o="8759b" v="117.257"/>
+ <val o="883ac" v="119.909"/>
+ <val o="891bb" v="120.921"/>
+ <val o="89fca" v="119.96"/>
+ <val o="8adda" v="118.481"/>
+ <val o="8bbeb" v="118.605"/>
+ <val o="8c9fc" v="118.282"/>
+ <val o="8d80b" v="118.663"/>
+ <val o="8e61a" v="117.009"/>
+ <val o="8f42a" v="117.766"/>
+ <val o="9023a" v="119.722"/>
+ <val o="9104a" v="120.299"/>
+ <val o="91e5a" v="118.366"/>
+ <val o="92c6a" v="122.529"/>
+ <val o="93a84" v="124.833"/>
+ <val o="94885" v="123.06"/>
+ <val o="95694" v="122.396"/>
+ <val o="964a5" v="122.792"/>
+ <val o="972b4" v="122.232"/>
+ <val o="980c5" v="119.79"/>
+ <val o="98ed4" v="122.86"/>
+ <val o="99ce5" v="119.012"/>
+ <val o="9aaf5" v="118.321"/>
+ <val o="9b906" v="115.456"/>
+ <val o="9c716" v="119.374"/>
+ <val o="9d526" v="120.344"/>
+ <val o="9e336" v="119.254"/>
+ <val o="9f145" v="117.83"/>
+ <val o="9ff56" v="117.001"/>
+ <val o="a0d65" v="116.782"/>
+ <val o="a1b77" v="116.803"/>
+ <val o="a2986" v="118.75"/>
+ <val o="a3795" v="118.358"/>
+ <val o="a45a7" v="119.493"/>
+ <val o="a53b6" v="119.698"/>
+ <val o="a61c7" v="119.908"/>
+ <val o="a6fd6" v="120.675"/>
+ <val o="a7e00" v="122.754"/>
+ <val o="a8c00" v="125.385"/>
+ <val o="a9a05" v="118.214"/>
+ <val o="aa815" v="119.329"/>
+ <val o="ab625" v="120.11"/>
+ <val o="ac435" v="119.689"/>
+ <val o="ad245" v="117.12"/>
+ <val o="ae055" v="114.729"/>
+ <val o="aee65" v="120.871"/>
+ <val o="afc75" v="119.177"/>
+ <val o="b0a85" v="116.699"/>
+ <val o="b26a6" v="116.768"/>
+ <val o="b34b6" v="118.075"/>
+ <val o="b42c6" v="115.571"/>
+ <val o="b50d6" v="115.867"/>
+ <val o="b5ee7" v="114.309"/>
+ <val o="b6cf6" v="122.787"/>
+ <val o="b7b07" v="118.904"/>
+ <val o="b8917" v="118.531"/>
+ <val o="b9728" v="119.438"/>
+ <val o="ba537" v="120.908"/>
+ <val o="bb347" v="119.844"/>
+ <val o="bc157" v="120.575"/>
+ <val o="bcf67" v="123.212"/>
+ <val o="bdd81" v="118.712"/>
+ <val o="beb86" v="118.316"/>
+ <val o="bf995" v="118.859"/>
+ <val o="c07a6" v="120.092"/>
+ <val o="c15b5" v="119.532"/>
+ <val o="c23c6" v="118.179"/>
+ <val o="c31d5" v="115.731"/>
+ <val o="c3fe6" v="117.671"/>
+ <val o="c4df5" v="116.046"/>
+ <val o="c5c06" v="117.416"/>
+ <val o="c6a16" v="117.578"/>
+ <val o="c7826" v="116.758"/>
+ <val o="c8636" v="118.319"/>
+ <val o="c9446" v="118.355"/>
+ <val o="ca256" v="118.136"/>
+ <val o="cb066" v="117.225"/>
+ <val o="cbe76" v="122.659"/>
+ <val o="ccc87" v="118.547"/>
+ <val o="cda96" v="116.635"/>
+ <val o="ce8a8" v="118.105"/>
+ <val o="cf6b7" v="118.503"/>
+ <val o="d04c8" v="119.547"/>
+ <val o="d12d7" v="121.4"/>
+ <val o="d20e7" v="123.396"/>
+ <val o="d2f02" v="126.068"/>
+ <val o="d3d05" v="119.33"/>
+ <val o="d4b15" v="120.524"/>
+ <val o="d5926" v="120.742"/>
+ <val o="d6735" v="119.548"/>
+ <val o="d7546" v="117.358"/>
+ <val o="d8355" v="124.267"/>
+ <val o="d9166" v="122.388"/>
+ <val o="d9f75" v="120.774"/>
+ <val o="dad87" v="117.345"/>
+ <val o="dbb97" v="116.698"/>
+ <val o="dc9a8" v="116.798"/>
+ <val o="dd7b7" v="118.219"/>
+ <val o="de5c6" v="117.879"/>
+ <val o="df3d7" v="117.287"/>
+ <val o="e01d7" v="117.42"/>
+ <val o="e0fe5" v="116.798"/>
+ <val o="e1df5" v="117.184"/>
+ <val o="e2c04" v="119.665"/>
+ <val o="e3a14" v="121.033"/>
+ <val o="e4824" v="120.839"/>
+ <val o="e5634" v="122.456"/>
+ <val o="e6444" v="120.534"/>
+ <val o="e7255" v="122.766"/>
+ <val o="e806f" v="123.735"/>
+ <val o="e8e7f" v="116.654"/>
+ <val o="e9c8e" v="118.111"/>
+ <val o="eaa9f" v="118.441"/>
+ <val o="eb8ae" v="117.463"/>
+ <val o="ec6bf" v="113.549"/>
+ <val o="ed4ce" v="123.596"/>
+ <val o="ee2df" v="120.709"/>
+ <val o="ef0ef" v="118.94"/>
+ <val o="eff01" v="116.002"/>
+ <val o="f0d10" v="117.741"/>
+ <val o="f1b20" v="117.49"/>
+ <val o="f2930" v="121.433"/>
+ <val o="f3740" v="117.735"/>
+ <val o="f4551" v="118.165"/>
+ <val o="f5361" v="117.839"/>
+ <val o="f6172" v="117.685"/>
+ <val o="f6f80" v="117.518"/>
+ <val o="f7d91" v="119.385"/>
+ <val o="f8ba1" v="121.202"/>
+ <val o="f99b1" v="120.254"/>
+ <val o="fa7c0" v="118.336"/>
+ <val o="fb5d1" v="118.267"/>
+ <val o="fc3e0" v="123.088"/>
+ <val o="fd1fb" v="123.183"/>
+ <val o="fe00b" v="126.377"/>
+ <val o="fee1c" v="123.772"/>
+ <val o="ffc2c" v="123.634"/>
+ <val o="100a3b" v="123.008"/>
+ <val o="10184c" v="121.382"/>
+ <val o="10265b" v="117.696"/>
+ <val o="10346c" v="117.901"/>
+ <val o="10427b" v="119.404"/>
+ <val o="10508d" v="117.646"/>
+ <val o="105e9d" v="118.147"/>
+ <val o="106cad" v="117.802"/>
+ <val o="107abd" v="120.151"/>
+ <val o="1088cd" v="119.733"/>
+ <val o="1096de" v="119.096"/>
+ <val o="10a4ed" v="119.291"/>
+ <val o="10b2fe" v="118.973"/>
+ <val o="10c10d" v="116.336"/>
+ <val o="10cf1e" v="118.171"/>
+ <val o="10dd2e" v="119.082"/>
+ <val o="10eb66" v="120.953"/>
+ <val o="10f94e" v="121.41"/>
+ <val o="11075e" v="119.088"/>
+ <val o="11156d" v="120.941"/>
+ <val o="112388" v="123.699"/>
+ <val o="113187" v="122.48"/>
+ <val o="113fb0" v="123.378"/>
+ <val o="114da6" v="123.312"/>
+ <val o="115bb6" v="123.217"/>
+ <val o="1169c6" v="120.961"/>
+ <val o="1177d6" v="118.076"/>
+ <val o="1185e8" v="118.573"/>
+ <val o="1193f7" v="117.978"/>
+ <val o="11a208" v="120.019"/>
+ <val o="11b017" v="121.662"/>
+ <val o="11be2f" v="122.268"/>
+ <val o="11cc37" v="122.317"/>
+ <val o="11da47" v="121.934"/>
+ <val o="11e857" v="120.776"/>
+ <val o="11f667" v="121.889"/>
+ <val o="120578" v="121.064"/>
+ <val o="121386" v="116.824"/>
+ <val o="122196" v="117.556"/>
+ <val o="122fa6" v="118.784"/>
+ <val o="123db5" v="120.77"/>
+ <val o="124bc5" v="122.565"/>
+ <val o="1259d5" v="120.263"/>
+ <val o="1267e4" v="122.729"/>
+ <val o="127600" v="124.561"/>
+ <val o="128305" v="125.237"/>
+ <val o="129115" v="125.344"/>
+ <val o="129f25" v="125.492"/>
+ <val o="12ad35" v="124.67"/>
+ <val o="12bb45" v="122.819"/>
+ <val o="12c954" v="121.713"/>
+ <val o="12d766" v="120.883"/>
+ <val o="12e575" v="119.85"/>
+ <val o="12f386" v="117.176"/>
+ <val o="130196" v="117.447"/>
+ <val o="130fa6" v="118.679"/>
+ <val o="131db7" v="120.016"/>
+ <val o="132bc5" v="119.959"/>
+ <val o="1339d4" v="0.109"/>
+ <val o="1347e5" v="0.109"/>
+ <val o="1355f4" v="0.108"/>
+ <val o="136404" v="0.106"/>
+ <val o="137214" v="0.106"/>
+ <val o="138024" v="0.106"/>
+ <val o="138e33" v="0.108"/>
+ <val o="139c44" v="0.109"/>
+ <val o="13aa54" v="0.108"/>
+ <val o="13b865" v="0.109"/>
+ <val o="13c67e" v="0.101"/>
+ <val o="13d48e" v="0.104"/>
+ <val o="13e29e" v="0.106"/>
+ <val o="13f0ae" v="0.106"/>
+ <val o="13febf" v="0.104"/>
+ <val o="140ccf" v="0.102"/>
+ <val o="141adf" v="0.104"/>
+ <val o="1428ef" v="0.108"/>
+ <val o="1436ff" v="0.107"/>
+ <val o="14450f" v="0.107"/>
+ <val o="14531f" v="0.107"/>
+ <val o="146130" v="0.108"/>
+ <val o="146f40" v="0.11"/>
+ <val o="147d44" v="0.108"/>
+ <val o="148b57" v="0.108"/>
+ <val o="149965" v="0.108"/>
+ <val o="14a775" v="0.106"/>
+ <val o="14b584" v="0.11"/>
+ <val o="14c397" v="0.106"/>
+ <val o="14d1a4" v="0.107"/>
+ <val o="14dfb6" v="0.108"/>
+ <val o="14edc5" v="0.11"/>
+ <val o="14fbd5" v="0.112"/>
+ <val o="1509e5" v="0.112"/>
+ <val o="1517ff" v="0.115"/>
+ <val o="152605" v="0.107"/>
+ <val o="153415" v="0.109"/>
+ <val o="154225" v="0.11"/>
+ <val o="155035" v="0.109"/>
+ <val o="155e45" v="0.107"/>
+ <val o="156c55" v="0.104"/>
+ <val o="157a65" v="0.107"/>
+ <val o="158875" v="0.107"/>
+ <val o="159686" v="0.106"/>
+ <val o="15a495" v="0.107"/>
+ <val o="15b2a6" v="0.108"/>
+ <val o="15c0b6" v="0.109"/>
+ <val o="15cec6" v="0.109"/>
+ <val o="15dcd5" v="0.109"/>
+ <val o="15eae6" v="0.108"/>
+ <val o="15f8f5" v="0.104"/>
+ <val o="160706" v="0.11"/>
+ <val o="161517" v="0.109"/>
+ <val o="162326" v="0.11"/>
+ <val o="163137" v="0.111"/>
+ <val o="163f46" v="0.109"/>
+ <val o="164d57" v="0.11"/>
+ <val o="165b67" v="0.112"/>
+ <val o="166982" v="0.111"/>
+ <val o="167786" v="0.112"/>
+ <val o="168596" v="0.112"/>
+ <val o="1693a6" v="0.113"/>
+ <val o="16a1b5" v="0.112"/>
+ <val o="16afc6" v="0.11"/>
+ <val o="16bdd5" v="0.108"/>
+ <val o="16cbe6" v="0.107"/>
+ <val o="16d9f6" v="0.112"/>
+ <val o="16e807" v="0.11"/>
+ <val o="16f616" v="0.11"/>
+ <val o="170429" v="0.111"/>
+ <val o="171236" v="0.112"/>
+ <val o="172047" v="0.112"/>
+ <val o="172e57" v="0.111"/>
+ <val o="173c67" v="0.111"/>
+ <val o="174a77" v="0.11"/>
+ <val o="175887" v="0.108"/>
+ <val o="176694" v="117.84"/>
+ <val o="1774a3" v="119.199"/>
+ <val o="1782b3" v="120.226"/>
+ <val o="1790c5" v="120.924"/>
+ <val o="179ed4" v="124.038"/>
+ <val o="17ace4" v="126.747"/>
+ <val o="17bafd" v="128.364"/>
+ <val o="17c90f" v="126.55"/>
+ <val o="17d71e" v="126.522"/>
+ <val o="17e52f" v="126.893"/>
+ <val o="17f33f" v="126.114"/>
+ <val o="18014f" v="124.219"/>
+ <val o="180f5f" v="123.691"/>
+ <val o="181d6e" v="124.723"/>
+ <val o="182b7f" v="124.667"/>
+ <val o="18398f" v="123.666"/>
+ <val o="1847a1" v="123.337"/>
+ <val o="1855af" v="124.042"/>
+ <val o="1863c0" v="125.92"/>
+ <val o="1871cf" v="125.144"/>
+ <val o="187fe0" v="124.769"/>
+ <val o="188def" v="124.549"/>
+ <val o="189c00" v="123.483"/>
+ <val o="18b80d" v="116.63"/>
+ <val o="18c61c" v="120.461"/>
+ <val o="18d42c" v="121.228"/>
+ <val o="18e23b" v="121.154"/>
+ <val o="18f04b" v="123.409"/>
+ <val o="18fe5e" v="125.403"/>
+ <val o="190c76" v="122.716"/>
+ <val o="191a86" v="124.385"/>
+ <val o="192896" v="126.046"/>
+ <val o="1936a6" v="126.166"/>
+ <val o="1944b7" v="125.26"/>
+ <val o="1952c6" v="123.29"/>
+ <val o="1960d7" v="120.499"/>
+ <val o="196ee6" v="120.705"/>
+ <val o="197cf8" v="120.492"/>
+ <val o="198b0f" v="119.996"/>
+ <val o="19991f" v="120.265"/>
+ <val o="19b541" v="122.232"/>
+ <val o="19c34d" v="121.49"/>
+ <val o="19d15e" v="120.704"/>
+ <val o="19df80" v="120.614"/>
+ <val o="19ed90" v="119.839"/>
+ <val o="19eebe" v="119.685"/>
+ <val o="19fb8e" v="115.593"/>
+ <val o="1a09a0" v="118.86"/>
+ <val o="1a17ae" v="119.97"/>
+ <val o="1a25be" v="121.369"/>
+ <val o="1a33cd" v="121.096"/>
+ <val o="1a41dd" v="122.451"/>
+ <val o="1a4fed" v="125.765"/>
+ <val o="1a5e08" v="126.302"/>
+ <val o="1a6c05" v="124.495"/>
+ <val o="1a7a15" v="125.659"/>
+ <val o="1a8826" v="125.773"/>
+ <val o="1a9637" v="124.464"/>
+ <val o="1aa445" v="123.167"/>
+ <val o="1ab255" v="121.137"/>
+ <val o="1ac065" v="123.677"/>
+ <val o="1ace75" v="123.569"/>
+ <val o="1adc87" v="122.254"/>
+ <val o="1aea96" v="121.794"/>
+ <val o="1af8a7" v="122.088"/>
+ <val o="1b06b7" v="123.87"/>
+ <val o="1b14c6" v="123.556"/>
+ <val o="1c7460" v="119.682"/>
+ <val o="1c8270" v="119.676"/>
+ <val o="1c907e" v="118.821"/>
+ <val o="1c9e8f" v="119.836"/>
+ <val o="1caca2" v="121.192"/>
+ <val o="1cbab1" v="121.685"/>
+ <val o="1cc8c1" v="117.874"/>
+ <val o="1cd6d0" v="118.762"/>
+ <val o="1ce4de" v="120.263"/>
+ <val o="1cf2f0" v="122.468"/>
+ <val o="1d0109" v="124.536"/>
+ <val o="1d0f06" v="122.598"/>
+ <val o="1d1d15" v="123.2"/>
+ <val o="1d2b25" v="123.218"/>
+ <val o="1d3935" v="122.202"/>
+ <val o="1d4745" v="121.424"/>
+ <val o="1d5555" v="120.888"/>
+ <val o="1d6366" v="122.743"/>
+ <val o="1d7175" v="123.078"/>
+ <val o="1d7f86" v="122.237"/>
+ <val o="1d8d95" v="120.858"/>
+ <val o="1d9ba6" v="121.231"/>
+ <val o="1da9b6" v="122.185"/>
+ <val o="1db7c7" v="122.648"/>
+ <val o="1dc5d5" v="122.992"/>
+ <val o="1dd3e6" v="122.482"/>
+ <val o="1de1f5" v="118.707"/>
+ <val o="1df006" v="117.367"/>
+ <val o="1dfe16" v="115.714"/>
+ <val o="1e0c26" v="117.74"/>
+ <val o="1e1a36" v="119.048"/>
+ <val o="1e2847" v="120.179"/>
+ <val o="1e3659" v="119.949"/>
+ <val o="1e4467" v="120.906"/>
+ <val o="1e5281" v="117.251"/>
+ <val o="1e6086" v="120.118"/>
+ <val o="1e6e96" v="121.521"/>
+ <val o="1e7ca6" v="122.188"/>
+ <val o="1e8ab5" v="122.212"/>
+ <val o="1e98c6" v="121.531"/>
+ <val o="1ea6d5" v="119.981"/>
+ <val o="1eb4e6" v="119.977"/>
+ <val o="1ec2f6" v="122.939"/>
+ <val o="1ed106" v="122.289"/>
+ <val o="1edf16" v="122.05"/>
+ <val o="1eed26" v="122.271"/>
+ <val o="1efb36" v="122.856"/>
+ <val o="1f0946" v="122.611"/>
+ <val o="1f1756" v="121.148"/>
+ <val o="1f2566" v="120.864"/>
+ <val o="1f3376" v="119.609"/>
+ <val o="1f4187" v="116.101"/>
+ <val o="1f4f96" v="119.165"/>
+ <val o="1f5da7" v="119.287"/>
+ <val o="1f6bb6" v="120.208"/>
+ <val o="1f79c7" v="118.775"/>
+ <val o="1f87d6" v="122.222"/>
+ <val o="1f95e7" v="123.288"/>
+ <val o="1fa401" v="126.026"/>
+ <val o="1fb204" v="124.828"/>
+ <val o="1fc016" v="125.769"/>
+ <val o="1fce25" v="125.218"/>
+ <val o="1fdc35" v="124.795"/>
+ <val o="1fea45" v="122.393"/>
+ <val o="1ff855" v="120.523"/>
+ <val o="200665" v="117.319"/>
+ <val o="201475" v="118.772"/>
+ <val o="202286" v="118.808"/>
+ <val o="203095" v="119.686"/>
+ <val o="203ea5" v="119.99"/>
+ <val o="204cb6" v="122.708"/>
+ <val o="205ac6" v="120.762"/>
+ <val o="2068d6" v="119.92"/>
+ <val o="2076e6" v="119.129"/>
+ <val o="2084f6" v="117.091"/>
+ <val o="209306" v="121.219"/>
+ <val o="20a116" v="120.28"/>
+ <val o="20af26" v="119.69"/>
+ <val o="20bd37" v="120.677"/>
+ <val o="20cb46" v="118.756"/>
+ <val o="20d957" v="119.608"/>
+ <val o="20e767" v="121.059"/>
+ <val o="20f581" v="123.573"/>
+ <val o="210386" v="125.976"/>
+ <val o="211194" v="123.926"/>
+ <val o="211fa5" v="123.888"/>
+ <val o="212db5" v="123.08"/>
+ <val o="213bc5" v="121.69"/>
+ <val o="2149d6" v="117.916"/>
+ <val o="2157e5" v="116.014"/>
+ <val o="2165f6" v="121.935"/>
+ <val o="217406" v="119.675"/>
+ <val o="218217" v="118.8"/>
+ <val o="219026" v="119.649"/>
+ <val o="219e39" v="119.715"/>
+ <val o="21ac46" v="118.622"/>
+ <val o="21ba57" v="118.459"/>
+ <val o="21c867" v="117.339"/>
+ <val o="21d677" v="122.095"/>
+ <val o="21e487" v="119.556"/>
+ <val o="21f296" v="119.761"/>
+ <val o="2200a6" v="120.53"/>
+ <val o="220eb7" v="121.428"/>
+ <val o="221cc6" v="118.003"/>
+ <val o="222ad7" v="120.228"/>
+ <val o="2238e7" v="123.33"/>
+ <val o="224701" v="125.861"/>
+ <val o="225505" v="118.788"/>
+ <val o="226315" v="119.106"/>
+ <val o="227125" v="119.116"/>
+ <val o="227f35" v="116.908"/>
+ <val o="228d45" v="115.642"/>
+ <val o="229b54" v="122.013"/>
+ <val o="22a965" v="119.234"/>
+ <val o="22b776" v="119.31"/>
+ <val o="22c586" v="118.566"/>
+ <val o="22d397" v="118.243"/>
+ <val o="22e1a6" v="118.579"/>
+ <val o="22efb6" v="120.288"/>
+ <val o="22fdc7" v="119.996"/>
+ <val o="230bd7" v="119.249"/>
+ <val o="2319e6" v="118.866"/>
+ <val o="2327f6" v="117.741"/>
+ <val o="23361b" v="118.543"/>
+ <val o="234416" v="117.538"/>
+ <val o="235226" v="118.709"/>
+ <val o="236037" v="119.94"/>
+ <val o="236e46" v="117.668"/>
+ <val o="237c57" v="119.159"/>
+ <val o="238a66" v="120.771"/>
+ <val o="239881" v="120.234"/>
+ <val o="23a685" v="121.624"/>
+ <val o="23b495" v="122.272"/>
+ <val o="23c2a4" v="122.422"/>
+ <val o="23d0b5" v="121.687"/>
+ <val o="23dec4" v="120.361"/>
+ <val o="23ecd5" v="118.751"/>
+ <val o="23fae4" v="120.028"/>
+ <val o="2408f6" v="117.974"/>
+ <val o="241706" v="117.305"/>
+ <val o="242518" v="117.71"/>
+ <val o="243325" v="118.193"/>
+ <val o="244137" v="119.542"/>
+ <val o="244f46" v="118.741"/>
+ <val o="246b66" v="118.295"/>
+ <val o="247976" v="117.534"/>
+ <val o="248786" v="114.472"/>
+ <val o="24957e" v="117.357"/>
+ <val o="24a38f" v="118.851"/>
+ <val o="24b19c" v="120.137"/>
+ <val o="24bfac" v="119.349"/>
+ <val o="24cdbc" v="123.226"/>
+ <val o="24dbcd" v="122.921"/>
+ <val o="24e9e5" v="124.273"/>
+ <val o="24f808" v="123.515"/>
+ <val o="250616" v="124.182"/>
+ <val o="251426" v="124.27"/>
+ <val o="252236" v="122.827"/>
+ <val o="253047" v="121.801"/>
+ <val o="253e56" v="119.514"/>
+ <val o="254c67" v="118.922"/>
+ <val o="255a76" v="118.86"/>
+ <val o="256887" v="117.264"/>
+ <val o="257697" v="118.022"/>
+ <val o="2584a8" v="116.819"/>
+ <val o="2592b6" v="118.384"/>
+ <val o="25a0c7" v="119.276"/>
+ <val o="25aed7" v="118.81"/>
+ <val o="25bce7" v="118.676"/>
+ <val o="25caf8" v="118.108"/>
+ <val o="25d907" v="119.625"/>
+ <val o="25e718" v="119.042"/>
+ <val o="25f527" v="119.638"/>
+ <val o="260338" v="120.355"/>
+ <val o="261149" v="118.728"/>
+ <val o="261f59" v="119.777"/>
+ <val o="262d68" v="122.621"/>
+ <val o="263b83" v="120.494"/>
+ <val o="264986" v="122.335"/>
+ <val o="265795" v="123.001"/>
+ <val o="2665a6" v="123.827"/>
+ <val o="2673b5" v="122.939"/>
+ <val o="2681c6" v="122.398"/>
+ <val o="268fd5" v="121.212"/>
+ <val o="269de6" v="120.844"/>
+ <val o="26abf6" v="120.054"/>
+ <val o="26ba06" v="118.297"/>
+ <val o="26c817" v="117.795"/>
+ <val o="26d62b" v="117.996"/>
+ <val o="26e436" v="119.287"/>
+ <val o="26f247" v="118.815"/>
+ <val o="270057" v="118.955"/>
+ <val o="270e67" v="118.449"/>
+ <val o="271c77" v="119.157"/>
+ <val o="272a87" v="120.124"/>
+ <val o="273897" v="119.858"/>
+ <val o="2746a8" v="120.668"/>
+ <val o="2754b9" v="121.067"/>
+ <val o="2762c7" v="118.265"/>
+ <val o="2770d8" v="120.308"/>
+ <val o="277ee7" v="122.851"/>
+ </par>
+ <par memind="440600" h="3dc1a8de">
+ <val o="0" v="-1275"/>
+ <val o="e08" v="-1482"/>
+ <val o="1c32" v="-1562"/>
+ <val o="2a3c" v="-1643"/>
+ <val o="3835" v="-1446"/>
+ <val o="4645" v="-1276"/>
+ <val o="5455" v="-1049"/>
+ <val o="6265" v="-1694"/>
+ <val o="7075" v="-1760"/>
+ <val o="7e85" v="-1662"/>
+ <val o="8c96" v="-2067"/>
+ <val o="9aa5" v="-1992"/>
+ <val o="a8b6" v="-1928"/>
+ <val o="b6c5" v="-2018"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-6"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="-7"/>
+ <val o="11937" v="-7"/>
+ <val o="12746" v="-7"/>
+ <val o="13556" v="-7"/>
+ <val o="14366" v="-7"/>
+ <val o="15181" v="-8"/>
+ <val o="15f85" v="-7"/>
+ <val o="16d95" v="-7"/>
+ <val o="17ba4" v="-7"/>
+ <val o="189b5" v="-7"/>
+ <val o="197c4" v="-7"/>
+ <val o="1a5d5" v="-7"/>
+ <val o="1b3e6" v="-7"/>
+ <val o="1c1f6" v="-7"/>
+ <val o="1d005" v="-7"/>
+ <val o="1de15" v="-7"/>
+ <val o="1ec25" v="-7"/>
+ <val o="1fa36" v="-7"/>
+ <val o="20845" v="-7"/>
+ <val o="21656" v="-7"/>
+ <val o="22465" v="-7"/>
+ <val o="23276" v="-7"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-7"/>
+ <val o="26ab7" v="-7"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="-7"/>
+ <val o="294e6" v="-7"/>
+ <val o="2a301" v="-7"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="-7"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="-7"/>
+ <val o="31375" v="-7"/>
+ <val o="3219e" v="-7"/>
+ <val o="32f96" v="-7"/>
+ <val o="33da6" v="-7"/>
+ <val o="34bb6" v="-7"/>
+ <val o="359de" v="-7"/>
+ <val o="367d6" v="-7"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="-7"/>
+ <val o="3bc36" v="-7"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="-7"/>
+ <val o="3e667" v="-7"/>
+ <val o="3f481" v="-7"/>
+ <val o="40285" v="-7"/>
+ <val o="41095" v="-7"/>
+ <val o="41ea5" v="-7"/>
+ <val o="42cb5" v="-7"/>
+ <val o="43ac5" v="-7"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="-7"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="-7"/>
+ <val o="54600" v="-7"/>
+ <val o="55406" v="-7"/>
+ <val o="56215" v="-7"/>
+ <val o="57026" v="-7"/>
+ <val o="57e36" v="-7"/>
+ <val o="58c46" v="-7"/>
+ <val o="59a70" v="-7"/>
+ <val o="5a867" v="-7"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-7"/>
+ <val o="66d46" v="-7"/>
+ <val o="67b57" v="-7"/>
+ <val o="68967" v="-7"/>
+ <val o="69782" v="-7"/>
+ <val o="6a586" v="-7"/>
+ <val o="6b395" v="-7"/>
+ <val o="6c1a6" v="-7"/>
+ <val o="6cfb5" v="-7"/>
+ <val o="6ddc6" v="-7"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="-7"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-7"/>
+ <val o="7cccf" v="-7"/>
+ <val o="7dadf" v="-7"/>
+ <val o="7e8fa" v="-7"/>
+ <val o="7f70a" v="-7"/>
+ <val o="8051a" v="-7"/>
+ <val o="8132a" v="-7"/>
+ <val o="8213a" v="-7"/>
+ <val o="82f4a" v="-7"/>
+ <val o="83d5a" v="-7"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-7"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="-7"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="-7"/>
+ <val o="93a84" v="-7"/>
+ <val o="94885" v="-7"/>
+ <val o="95694" v="-7"/>
+ <val o="964a5" v="-7"/>
+ <val o="972b4" v="-7"/>
+ <val o="980c5" v="-7"/>
+ <val o="98ed4" v="-7"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="-1845"/>
+ <val o="a2986" v="-631"/>
+ <val o="a3795" v="1564"/>
+ <val o="a45a7" v="-66"/>
+ <val o="a53b6" v="-393"/>
+ <val o="a61c7" v="-691"/>
+ <val o="a6fd6" v="-883"/>
+ <val o="a7e00" v="-1575"/>
+ <val o="a8c00" v="-2209"/>
+ <val o="a9a05" v="109"/>
+ <val o="aa815" v="-420"/>
+ <val o="ab625" v="-859"/>
+ <val o="ac435" v="-628"/>
+ <val o="ad245" v="516"/>
+ <val o="ae055" v="1839"/>
+ <val o="aee65" v="293"/>
+ <val o="afc75" v="1185"/>
+ <val o="b0a85" v="3946"/>
+ <val o="b26a6" v="4230"/>
+ <val o="b34b6" v="3689"/>
+ <val o="b42c6" v="248"/>
+ <val o="b50d6" v="430"/>
+ <val o="b5ee7" v="1026"/>
+ <val o="b6cf6" v="-526"/>
+ <val o="b7b07" v="-258"/>
+ <val o="b8917" v="-65"/>
+ <val o="b9728" v="-489"/>
+ <val o="ba537" v="-842"/>
+ <val o="bb347" v="1082"/>
+ <val o="bc157" v="310"/>
+ <val o="bcf67" v="-1112"/>
+ <val o="bdd81" v="3632"/>
+ <val o="beb86" v="513"/>
+ <val o="bf995" v="214"/>
+ <val o="c07a6" v="-292"/>
+ <val o="c15b5" v="-127"/>
+ <val o="c23c6" v="495"/>
+ <val o="c31d5" v="1815"/>
+ <val o="c3fe6" v="818"/>
+ <val o="c4df5" v="1539"/>
+ <val o="c5c06" v="680"/>
+ <val o="c6a16" v="712"/>
+ <val o="c7826" v="1280"/>
+ <val o="c8636" v="397"/>
+ <val o="c9446" v="493"/>
+ <val o="ca256" v="250"/>
+ <val o="cb066" v="785"/>
+ <val o="cbe76" v="-201"/>
+ <val o="ccc87" v="2156"/>
+ <val o="cda96" v="2937"/>
+ <val o="ce8a8" v="2107"/>
+ <val o="cf6b7" v="2824"/>
+ <val o="d04c8" v="2269"/>
+ <val o="d12d7" v="1441"/>
+ <val o="d20e7" v="-297"/>
+ <val o="d2f02" v="-2280"/>
+ <val o="d3d05" v="-1189"/>
+ <val o="d4b15" v="-964"/>
+ <val o="d5926" v="-442"/>
+ <val o="d6735" v="261"/>
+ <val o="d7546" v="1309"/>
+ <val o="d8355" v="-849"/>
+ <val o="d9166" v="178"/>
+ <val o="d9f75" v="1111"/>
+ <val o="dad87" v="2750"/>
+ <val o="dbb97" v="2769"/>
+ <val o="dc9a8" v="2973"/>
+ <val o="dd7b7" v="1327"/>
+ <val o="de5c6" v="454"/>
+ <val o="df3d7" v="199"/>
+ <val o="e01d7" v="167"/>
+ <val o="e0fe5" v="556"/>
+ <val o="e1df5" v="416"/>
+ <val o="e2c04" v="-370"/>
+ <val o="e3a14" v="-1154"/>
+ <val o="e4824" v="93"/>
+ <val o="e5634" v="-843"/>
+ <val o="e6444" v="171"/>
+ <val o="e7255" v="-646"/>
+ <val o="e806f" v="-723"/>
+ <val o="e8e7f" v="2665"/>
+ <val o="e9c8e" v="837"/>
+ <val o="eaa9f" v="698"/>
+ <val o="eb8ae" v="1097"/>
+ <val o="ec6bf" v="2649"/>
+ <val o="ed4ce" v="-495"/>
+ <val o="ee2df" v="1165"/>
+ <val o="ef0ef" v="542"/>
+ <val o="eff01" v="1871"/>
+ <val o="f0d10" v="979"/>
+ <val o="f1b20" v="1210"/>
+ <val o="f2930" v="-356"/>
+ <val o="f3740" v="1654"/>
+ <val o="f4551" v="1368"/>
+ <val o="f5361" v="1462"/>
+ <val o="f6172" v="1612"/>
+ <val o="f6f80" v="1309"/>
+ <val o="f7d91" v="1886"/>
+ <val o="f8ba1" v="1136"/>
+ <val o="f99b1" v="1169"/>
+ <val o="fa7c0" v="1403"/>
+ <val o="fb5d1" v="1316"/>
+ <val o="fc3e0" v="-1041"/>
+ <val o="fd1fb" v="-1190"/>
+ <val o="fe00b" v="-1609"/>
+ <val o="fee1c" v="-199"/>
+ <val o="ffc2c" v="-252"/>
+ <val o="100a3b" v="585"/>
+ <val o="10184c" v="1069"/>
+ <val o="10265b" v="1973"/>
+ <val o="10346c" v="1831"/>
+ <val o="10427b" v="1127"/>
+ <val o="10508d" v="1767"/>
+ <val o="105e9d" v="1343"/>
+ <val o="106cad" v="1564"/>
+ <val o="107abd" v="849"/>
+ <val o="1088cd" v="805"/>
+ <val o="1096de" v="1093"/>
+ <val o="10a4ed" v="880"/>
+ <val o="10b2fe" v="1254"/>
+ <val o="10c10d" v="2664"/>
+ <val o="10cf1e" v="1368"/>
+ <val o="10dd2e" v="1009"/>
+ <val o="10eb66" v="208"/>
+ <val o="10f94e" v="22"/>
+ <val o="11075e" v="1142"/>
+ <val o="11156d" v="286"/>
+ <val o="112388" v="-1168"/>
+ <val o="113187" v="712"/>
+ <val o="113fb0" v="227"/>
+ <val o="114da6" v="236"/>
+ <val o="115bb6" v="372"/>
+ <val o="1169c6" v="1441"/>
+ <val o="1177d6" v="2015"/>
+ <val o="1185e8" v="1211"/>
+ <val o="1193f7" v="1284"/>
+ <val o="11a208" v="369"/>
+ <val o="11b017" v="-310"/>
+ <val o="11be2f" v="-802"/>
+ <val o="11cc37" v="781"/>
+ <val o="11da47" v="491"/>
+ <val o="11e857" v="1023"/>
+ <val o="11f667" v="516"/>
+ <val o="120578" v="1"/>
+ <val o="121386" v="1"/>
+ <val o="122196" v="2"/>
+ <val o="122fa6" v="1"/>
+ <val o="123db5" v="1"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="1"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="-1"/>
+ <val o="128305" v="-1"/>
+ <val o="129115" v="-1"/>
+ <val o="129f25" v="-1"/>
+ <val o="12ad35" v="-1"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="1"/>
+ <val o="12d766" v="1"/>
+ <val o="12e575" v="2"/>
+ <val o="12f386" v="1"/>
+ <val o="130196" v="1"/>
+ <val o="130fa6" v="1"/>
+ <val o="131db7" v="1"/>
+ <val o="132bc5" v="1"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="2274"/>
+ <val o="1774a3" v="1775"/>
+ <val o="1782b3" v="1153"/>
+ <val o="1790c5" v="769"/>
+ <val o="179ed4" v="-846"/>
+ <val o="17ace4" v="-2362"/>
+ <val o="17bafd" v="-2961"/>
+ <val o="17c90f" v="-2519"/>
+ <val o="17d71e" v="-2447"/>
+ <val o="17e52f" v="-2865"/>
+ <val o="17f33f" v="-2276"/>
+ <val o="18014f" v="-1250"/>
+ <val o="180f5f" v="-716"/>
+ <val o="181d6e" v="-1489"/>
+ <val o="182b7f" v="-2004"/>
+ <val o="18398f" v="-1055"/>
+ <val o="1847a1" v="-978"/>
+ <val o="1855af" v="-1269"/>
+ <val o="1863c0" v="-3170"/>
+ <val o="1871cf" v="-2668"/>
+ <val o="187fe0" v="-2540"/>
+ <val o="188def" v="-2377"/>
+ <val o="189c00" v="-1126"/>
+ <val o="18b80d" v="1219"/>
+ <val o="18c61c" v="-1061"/>
+ <val o="18d42c" v="-1519"/>
+ <val o="18e23b" v="-1284"/>
+ <val o="18f04b" v="-1902"/>
+ <val o="18fe5e" v="-1623"/>
+ <val o="190c76" v="-778"/>
+ <val o="191a86" v="-1730"/>
+ <val o="192896" v="-1745"/>
+ <val o="1936a6" v="-1872"/>
+ <val o="1944b7" v="-1207"/>
+ <val o="1952c6" v="-211"/>
+ <val o="1960d7" v="1619"/>
+ <val o="196ee6" v="-764"/>
+ <val o="197cf8" v="-827"/>
+ <val o="198b0f" v="40"/>
+ <val o="19991f" v="-199"/>
+ <val o="19b541" v="-967"/>
+ <val o="19c34d" v="-680"/>
+ <val o="19d15e" v="-385"/>
+ <val o="19df80" v="-241"/>
+ <val o="19ed90" v="371"/>
+ <val o="19eebe" v="471"/>
+ <val o="19fb8e" v="61"/>
+ <val o="1a09a0" v="-2440"/>
+ <val o="1a17ae" v="-3447"/>
+ <val o="1a25be" v="-3862"/>
+ <val o="1a33cd" v="-1657"/>
+ <val o="1a41dd" v="-2273"/>
+ <val o="1a4fed" v="-4132"/>
+ <val o="1a5e08" v="-3735"/>
+ <val o="1a6c05" v="-2655"/>
+ <val o="1a7a15" v="-3286"/>
+ <val o="1a8826" v="-3377"/>
+ <val o="1a9637" v="-2707"/>
+ <val o="1aa445" v="-1980"/>
+ <val o="1ab255" v="-797"/>
+ <val o="1ac065" v="-2046"/>
+ <val o="1ace75" v="-2793"/>
+ <val o="1adc87" v="-1939"/>
+ <val o="1aea96" v="-2092"/>
+ <val o="1af8a7" v="-2211"/>
+ <val o="1b06b7" v="-2679"/>
+ <val o="1b14c6" v="-2530"/>
+ <val o="1c7460" v="453"/>
+ <val o="1c8270" v="-157"/>
+ <val o="1c907e" v="1143"/>
+ <val o="1c9e8f" v="-146"/>
+ <val o="1caca2" v="-1002"/>
+ <val o="1cbab1" v="-1402"/>
+ <val o="1cc8c1" v="2949"/>
+ <val o="1cd6d0" v="2229"/>
+ <val o="1ce4de" v="1022"/>
+ <val o="1cf2f0" v="-1628"/>
+ <val o="1d0109" v="-1835"/>
+ <val o="1d0f06" v="-211"/>
+ <val o="1d1d15" v="-767"/>
+ <val o="1d2b25" v="-792"/>
+ <val o="1d3935" v="173"/>
+ <val o="1d4745" v="776"/>
+ <val o="1d5555" v="1249"/>
+ <val o="1d6366" v="-957"/>
+ <val o="1d7175" v="-911"/>
+ <val o="1d7f86" v="-243"/>
+ <val o="1d8d95" v="-65"/>
+ <val o="1d9ba6" v="-308"/>
+ <val o="1da9b6" v="-811"/>
+ <val o="1db7c7" v="-806"/>
+ <val o="1dc5d5" v="-952"/>
+ <val o="1dd3e6" v="-716"/>
+ <val o="1de1f5" v="-1618"/>
+ <val o="1df006" v="-1910"/>
+ <val o="1dfe16" v="-1809"/>
+ <val o="1e0c26" v="-2224"/>
+ <val o="1e1a36" v="-2272"/>
+ <val o="1e2847" v="-2317"/>
+ <val o="1e3659" v="-2283"/>
+ <val o="1e4467" v="-2334"/>
+ <val o="1e5281" v="-1860"/>
+ <val o="1e6086" v="-2139"/>
+ <val o="1e6e96" v="-2206"/>
+ <val o="1e7ca6" v="-296"/>
+ <val o="1e8ab5" v="-449"/>
+ <val o="1e98c6" v="-142"/>
+ <val o="1ea6d5" v="-422"/>
+ <val o="1eb4e6" v="-365"/>
+ <val o="1ec2f6" v="-581"/>
+ <val o="1ed106" v="-263"/>
+ <val o="1edf16" v="-325"/>
+ <val o="1eed26" v="-142"/>
+ <val o="1efb36" v="-355"/>
+ <val o="1f0946" v="-310"/>
+ <val o="1f1756" v="496"/>
+ <val o="1f2566" v="660"/>
+ <val o="1f3376" v="1246"/>
+ <val o="1f4187" v="2889"/>
+ <val o="1f4f96" v="1532"/>
+ <val o="1f5da7" v="-143"/>
+ <val o="1f6bb6" v="-518"/>
+ <val o="1f79c7" v="225"/>
+ <val o="1f87d6" v="-1667"/>
+ <val o="1f95e7" v="-2330"/>
+ <val o="1fa401" v="-1727"/>
+ <val o="1fb204" v="-1489"/>
+ <val o="1fc016" v="-1515"/>
+ <val o="1fce25" v="-476"/>
+ <val o="1fdc35" v="-193"/>
+ <val o="1fea45" v="128"/>
+ <val o="1ff855" v="376"/>
+ <val o="200665" v="2872"/>
+ <val o="201475" v="408"/>
+ <val o="202286" v="1923"/>
+ <val o="203095" v="1830"/>
+ <val o="203ea5" v="1798"/>
+ <val o="204cb6" v="334"/>
+ <val o="205ac6" v="1260"/>
+ <val o="2068d6" v="1815"/>
+ <val o="2076e6" v="2272"/>
+ <val o="2084f6" v="262"/>
+ <val o="209306" v="-387"/>
+ <val o="20a116" v="-613"/>
+ <val o="20af26" v="-251"/>
+ <val o="20bd37" v="-885"/>
+ <val o="20cb46" v="551"/>
+ <val o="20d957" v="48"/>
+ <val o="20e767" v="-982"/>
+ <val o="20f581" v="-1612"/>
+ <val o="210386" v="-1125"/>
+ <val o="211194" v="-381"/>
+ <val o="211fa5" v="-441"/>
+ <val o="212db5" v="71"/>
+ <val o="213bc5" v="1020"/>
+ <val o="2149d6" v="760"/>
+ <val o="2157e5" v="-319"/>
+ <val o="2165f6" v="-1144"/>
+ <val o="217406" v="302"/>
+ <val o="218217" v="-319"/>
+ <val o="219026" v="-582"/>
+ <val o="219e39" v="408"/>
+ <val o="21ac46" v="1031"/>
+ <val o="21ba57" v="1139"/>
+ <val o="21c867" v="2082"/>
+ <val o="21d677" v="-1202"/>
+ <val o="21e487" v="622"/>
+ <val o="21f296" v="456"/>
+ <val o="2200a6" v="-736"/>
+ <val o="220eb7" v="-818"/>
+ <val o="221cc6" v="1684"/>
+ <val o="222ad7" v="307"/>
+ <val o="2238e7" v="-801"/>
+ <val o="224701" v="-1256"/>
+ <val o="225505" v="3308"/>
+ <val o="226315" v="506"/>
+ <val o="227125" v="639"/>
+ <val o="227f35" v="1963"/>
+ <val o="228d45" v="2867"/>
+ <val o="229b54" v="-831"/>
+ <val o="22a965" v="-270"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="2010"/>
+ <val o="22d397" v="3408"/>
+ <val o="22e1a6" v="3190"/>
+ <val o="22efb6" v="-187"/>
+ <val o="22fdc7" v="-225"/>
+ <val o="230bd7" v="531"/>
+ <val o="2319e6" v="-823"/>
+ <val o="2327f6" v="62"/>
+ <val o="23361b" v="1079"/>
+ <val o="234416" v="1547"/>
+ <val o="235226" v="900"/>
+ <val o="236037" v="112"/>
+ <val o="236e46" v="1780"/>
+ <val o="237c57" v="1407"/>
+ <val o="238a66" v="298"/>
+ <val o="239881" v="565"/>
+ <val o="23a685" v="-311"/>
+ <val o="23b495" v="-657"/>
+ <val o="23c2a4" v="168"/>
+ <val o="23d0b5" v="647"/>
+ <val o="23dec4" v="1427"/>
+ <val o="23ecd5" v="829"/>
+ <val o="23fae4" v="-5"/>
+ <val o="2408f6" v="1197"/>
+ <val o="241706" v="3751"/>
+ <val o="242518" v="2991"/>
+ <val o="243325" v="2801"/>
+ <val o="244137" v="-1188"/>
+ <val o="244f46" v="-828"/>
+ <val o="246b66" v="-799"/>
+ <val o="247976" v="57"/>
+ <val o="248786" v="4601"/>
+ <val o="24957e" v="1911"/>
+ <val o="24a38f" v="799"/>
+ <val o="24b19c" v="-972"/>
+ <val o="24bfac" v="-708"/>
+ <val o="24cdbc" v="-790"/>
+ <val o="24dbcd" v="-490"/>
+ <val o="24e9e5" v="-1316"/>
+ <val o="24f808" v="-825"/>
+ <val o="250616" v="-1012"/>
+ <val o="251426" v="-1178"/>
+ <val o="252236" v="-35"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="1352"/>
+ <val o="254c67" v="1059"/>
+ <val o="255a76" v="1290"/>
+ <val o="256887" v="2079"/>
+ <val o="257697" v="3618"/>
+ <val o="2584a8" v="-4684"/>
+ <val o="2592b6" v="-2470"/>
+ <val o="25a0c7" v="-556"/>
+ <val o="25aed7" v="189"/>
+ <val o="25bce7" v="260"/>
+ <val o="25caf8" v="816"/>
+ <val o="25d907" v="2489"/>
+ <val o="25e718" v="2732"/>
+ <val o="25f527" v="2234"/>
+ <val o="260338" v="57"/>
+ <val o="261149" v="1219"/>
+ <val o="261f59" v="632"/>
+ <val o="262d68" v="-1360"/>
+ <val o="263b83" v="38"/>
+ <val o="264986" v="-980"/>
+ <val o="265795" v="-1501"/>
+ <val o="2665a6" v="-2119"/>
+ <val o="2673b5" v="-1618"/>
+ <val o="2681c6" v="-1314"/>
+ <val o="268fd5" v="-432"/>
+ <val o="269de6" v="309"/>
+ <val o="26abf6" v="685"/>
+ <val o="26ba06" v="1692"/>
+ <val o="26c817" v="1899"/>
+ <val o="26d62b" v="3622"/>
+ <val o="26e436" v="2709"/>
+ <val o="26f247" v="3037"/>
+ <val o="270057" v="2898"/>
+ <val o="270e67" v="3251"/>
+ <val o="271c77" v="186"/>
+ <val o="272a87" v="-636"/>
+ <val o="273897" v="-421"/>
+ <val o="2746a8" v="-729"/>
+ <val o="2754b9" v="-978"/>
+ <val o="2762c7" v="2670"/>
+ <val o="2770d8" v="1255"/>
+ <val o="277ee7" v="-496"/>
+ </par>
+ <par memind="424600" h="3dc1a8de">
+ <val o="0" v="-4313"/>
+ <val o="e08" v="-4163"/>
+ <val o="1c32" v="-4102"/>
+ <val o="2a3c" v="-4091"/>
+ <val o="3835" v="-3982"/>
+ <val o="4645" v="-3934"/>
+ <val o="5455" v="-4439"/>
+ <val o="6265" v="-5323"/>
+ <val o="7075" v="-6298"/>
+ <val o="7e85" v="-7332"/>
+ <val o="8c96" v="-7541"/>
+ <val o="9aa5" v="-7248"/>
+ <val o="a8b6" v="-6869"/>
+ <val o="b6c5" v="-6454"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-7"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="-7"/>
+ <val o="fd17" v="-7"/>
+ <val o="10b27" v="-8"/>
+ <val o="11937" v="-8"/>
+ <val o="12746" v="-7"/>
+ <val o="13556" v="-8"/>
+ <val o="14366" v="-9"/>
+ <val o="15181" v="-9"/>
+ <val o="15f85" v="-8"/>
+ <val o="16d95" v="-8"/>
+ <val o="17ba4" v="-8"/>
+ <val o="189b5" v="-8"/>
+ <val o="197c4" v="-8"/>
+ <val o="1a5d5" v="-9"/>
+ <val o="1b3e6" v="-9"/>
+ <val o="1c1f6" v="-8"/>
+ <val o="1d005" v="-8"/>
+ <val o="1de15" v="-8"/>
+ <val o="1ec25" v="-8"/>
+ <val o="1fa36" v="-8"/>
+ <val o="20845" v="-9"/>
+ <val o="21656" v="-8"/>
+ <val o="22465" v="-8"/>
+ <val o="23276" v="-8"/>
+ <val o="24086" v="-7"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-8"/>
+ <val o="26ab7" v="-8"/>
+ <val o="278c6" v="-8"/>
+ <val o="286d6" v="-8"/>
+ <val o="294e6" v="-9"/>
+ <val o="2a301" v="-9"/>
+ <val o="2b105" v="-8"/>
+ <val o="2bf15" v="-8"/>
+ <val o="2cd25" v="-8"/>
+ <val o="2db35" v="-8"/>
+ <val o="2e946" v="-8"/>
+ <val o="2f755" v="-7"/>
+ <val o="30566" v="-9"/>
+ <val o="31375" v="-8"/>
+ <val o="3219e" v="-8"/>
+ <val o="32f96" v="-8"/>
+ <val o="33da6" v="-8"/>
+ <val o="34bb6" v="-8"/>
+ <val o="359de" v="-8"/>
+ <val o="367d6" v="-8"/>
+ <val o="375e6" v="-8"/>
+ <val o="3840e" v="-7"/>
+ <val o="3921e" v="-7"/>
+ <val o="3a016" v="-7"/>
+ <val o="3ae27" v="-8"/>
+ <val o="3bc36" v="-8"/>
+ <val o="3ca47" v="-7"/>
+ <val o="3d856" v="-8"/>
+ <val o="3e667" v="-8"/>
+ <val o="3f481" v="-9"/>
+ <val o="40285" v="-9"/>
+ <val o="41095" v="-9"/>
+ <val o="41ea5" v="-9"/>
+ <val o="42cb5" v="-9"/>
+ <val o="43ac5" v="-8"/>
+ <val o="448d5" v="-7"/>
+ <val o="456e6" v="-8"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="-7"/>
+ <val o="48f0e" v="-6"/>
+ <val o="49d1d" v="-7"/>
+ <val o="4ab46" v="-7"/>
+ <val o="4b955" v="-7"/>
+ <val o="4c769" v="-6"/>
+ <val o="4d577" v="-7"/>
+ <val o="4e387" v="-7"/>
+ <val o="4f196" v="-7"/>
+ <val o="4ffa6" v="-7"/>
+ <val o="50dd0" v="-7"/>
+ <val o="51bc6" v="-7"/>
+ <val o="529d6" v="-8"/>
+ <val o="537e7" v="-8"/>
+ <val o="54600" v="-9"/>
+ <val o="55406" v="-8"/>
+ <val o="56215" v="-8"/>
+ <val o="57026" v="-8"/>
+ <val o="57e36" v="-8"/>
+ <val o="58c46" v="-8"/>
+ <val o="59a70" v="-8"/>
+ <val o="5a867" v="-8"/>
+ <val o="5b676" v="-7"/>
+ <val o="5c487" v="-6"/>
+ <val o="5d296" v="-7"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="-7"/>
+ <val o="618e7" v="-7"/>
+ <val o="626f7" v="-7"/>
+ <val o="63507" v="-7"/>
+ <val o="64317" v="-7"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-8"/>
+ <val o="66d46" v="-8"/>
+ <val o="67b57" v="-8"/>
+ <val o="68967" v="-8"/>
+ <val o="69782" v="-8"/>
+ <val o="6a586" v="-8"/>
+ <val o="6b395" v="-8"/>
+ <val o="6c1a6" v="-9"/>
+ <val o="6cfb5" v="-8"/>
+ <val o="6ddc6" v="-8"/>
+ <val o="6ebd6" v="-7"/>
+ <val o="6f9e6" v="-8"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="-6"/>
+ <val o="72417" v="-6"/>
+ <val o="73227" v="-6"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="-7"/>
+ <val o="76a63" v="-6"/>
+ <val o="77873" v="-7"/>
+ <val o="78680" v="-6"/>
+ <val o="7948f" v="-7"/>
+ <val o="7a29f" v="-7"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-8"/>
+ <val o="7cccf" v="-8"/>
+ <val o="7dadf" v="-8"/>
+ <val o="7e8fa" v="-8"/>
+ <val o="7f70a" v="-8"/>
+ <val o="8051a" v="-9"/>
+ <val o="8132a" v="-9"/>
+ <val o="8213a" v="-9"/>
+ <val o="82f4a" v="-8"/>
+ <val o="83d5a" v="-8"/>
+ <val o="84b6a" v="-7"/>
+ <val o="8597a" v="-7"/>
+ <val o="8678b" v="-7"/>
+ <val o="8759b" v="-7"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-8"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="-7"/>
+ <val o="8bbeb" v="-7"/>
+ <val o="8c9fc" v="-7"/>
+ <val o="8d80b" v="-7"/>
+ <val o="8e61a" v="-7"/>
+ <val o="8f42a" v="-7"/>
+ <val o="9023a" v="-7"/>
+ <val o="9104a" v="-8"/>
+ <val o="91e5a" v="-7"/>
+ <val o="92c6a" v="-8"/>
+ <val o="93a84" v="-9"/>
+ <val o="94885" v="-8"/>
+ <val o="95694" v="-9"/>
+ <val o="964a5" v="-9"/>
+ <val o="972b4" v="-8"/>
+ <val o="980c5" v="-8"/>
+ <val o="98ed4" v="-8"/>
+ <val o="99ce5" v="-8"/>
+ <val o="9aaf5" v="-7"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="-7"/>
+ <val o="a1b77" v="-6460"/>
+ <val o="a2986" v="-3546"/>
+ <val o="a3795" v="-986"/>
+ <val o="a45a7" v="697"/>
+ <val o="a53b6" v="776"/>
+ <val o="a61c7" v="925"/>
+ <val o="a6fd6" v="125"/>
+ <val o="a7e00" v="456"/>
+ <val o="a8c00" v="903"/>
+ <val o="a9a05" v="278"/>
+ <val o="aa815" v="27"/>
+ <val o="ab625" v="43"/>
+ <val o="ac435" v="173"/>
+ <val o="ad245" v="947"/>
+ <val o="ae055" v="728"/>
+ <val o="aee65" v="-452"/>
+ <val o="afc75" v="-117"/>
+ <val o="b0a85" v="23"/>
+ <val o="b26a6" v="182"/>
+ <val o="b34b6" v="-152"/>
+ <val o="b42c6" v="-423"/>
+ <val o="b50d6" v="-705"/>
+ <val o="b5ee7" v="-790"/>
+ <val o="b6cf6" v="-1575"/>
+ <val o="b7b07" v="-2027"/>
+ <val o="b8917" v="-1757"/>
+ <val o="b9728" v="-1722"/>
+ <val o="ba537" v="-1901"/>
+ <val o="bb347" v="-741"/>
+ <val o="bc157" v="-812"/>
+ <val o="bcf67" v="-891"/>
+ <val o="bdd81" v="652"/>
+ <val o="beb86" v="411"/>
+ <val o="bf995" v="516"/>
+ <val o="c07a6" v="398"/>
+ <val o="c15b5" v="382"/>
+ <val o="c23c6" v="470"/>
+ <val o="c31d5" v="591"/>
+ <val o="c3fe6" v="267"/>
+ <val o="c4df5" v="770"/>
+ <val o="c5c06" v="164"/>
+ <val o="c6a16" v="438"/>
+ <val o="c7826" v="-43"/>
+ <val o="c8636" v="72"/>
+ <val o="c9446" v="249"/>
+ <val o="ca256" v="201"/>
+ <val o="cb066" v="115"/>
+ <val o="cbe76" v="-425"/>
+ <val o="ccc87" v="-229"/>
+ <val o="cda96" v="-284"/>
+ <val o="ce8a8" v="-247"/>
+ <val o="cf6b7" v="-135"/>
+ <val o="d04c8" v="-54"/>
+ <val o="d12d7" v="96"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="16"/>
+ <val o="d3d05" v="598"/>
+ <val o="d4b15" v="721"/>
+ <val o="d5926" v="818"/>
+ <val o="d6735" v="1067"/>
+ <val o="d7546" v="1245"/>
+ <val o="d8355" v="-117"/>
+ <val o="d9166" v="-721"/>
+ <val o="d9f75" v="-1504"/>
+ <val o="dad87" v="-2084"/>
+ <val o="dbb97" v="-2554"/>
+ <val o="dc9a8" v="-2345"/>
+ <val o="dd7b7" v="-2920"/>
+ <val o="de5c6" v="-2712"/>
+ <val o="df3d7" v="-2858"/>
+ <val o="e01d7" v="-2928"/>
+ <val o="e0fe5" v="-2803"/>
+ <val o="e1df5" v="-3032"/>
+ <val o="e2c04" v="-4017"/>
+ <val o="e3a14" v="-3918"/>
+ <val o="e4824" v="-3412"/>
+ <val o="e5634" v="-3441"/>
+ <val o="e6444" v="-2561"/>
+ <val o="e7255" v="-2139"/>
+ <val o="e806f" v="-1765"/>
+ <val o="e8e7f" v="-465"/>
+ <val o="e9c8e" v="-702"/>
+ <val o="eaa9f" v="-647"/>
+ <val o="eb8ae" v="-676"/>
+ <val o="ec6bf" v="-509"/>
+ <val o="ed4ce" v="-2150"/>
+ <val o="ee2df" v="-2355"/>
+ <val o="ef0ef" v="-3171"/>
+ <val o="eff01" v="-4031"/>
+ <val o="f0d10" v="-4338"/>
+ <val o="f1b20" v="-4651"/>
+ <val o="f2930" v="-4668"/>
+ <val o="f3740" v="-4346"/>
+ <val o="f4551" v="-4571"/>
+ <val o="f5361" v="-4929"/>
+ <val o="f6172" v="-4607"/>
+ <val o="f6f80" v="-4866"/>
+ <val o="f7d91" v="-4308"/>
+ <val o="f8ba1" v="-3897"/>
+ <val o="f99b1" v="-3784"/>
+ <val o="fa7c0" v="-2988"/>
+ <val o="fb5d1" v="-3099"/>
+ <val o="fc3e0" v="-3335"/>
+ <val o="fd1fb" v="-2686"/>
+ <val o="fe00b" v="-2522"/>
+ <val o="fee1c" v="-2074"/>
+ <val o="ffc2c" v="-1989"/>
+ <val o="100a3b" v="-1788"/>
+ <val o="10184c" v="-1795"/>
+ <val o="10265b" v="-2075"/>
+ <val o="10346c" v="-2698"/>
+ <val o="10427b" v="-3932"/>
+ <val o="10508d" v="-4406"/>
+ <val o="105e9d" v="-4366"/>
+ <val o="106cad" v="-4692"/>
+ <val o="107abd" v="-4302"/>
+ <val o="1088cd" v="-3927"/>
+ <val o="1096de" v="-4101"/>
+ <val o="10a4ed" v="-4187"/>
+ <val o="10b2fe" v="-4342"/>
+ <val o="10c10d" v="-4162"/>
+ <val o="10cf1e" v="-4456"/>
+ <val o="10dd2e" v="-4132"/>
+ <val o="10eb66" v="-4499"/>
+ <val o="10f94e" v="-3882"/>
+ <val o="11075e" v="-3295"/>
+ <val o="11156d" v="-2863"/>
+ <val o="112388" v="-2668"/>
+ <val o="113187" v="-1778"/>
+ <val o="113fb0" v="-1810"/>
+ <val o="114da6" v="-1829"/>
+ <val o="115bb6" v="-1800"/>
+ <val o="1169c6" v="-1595"/>
+ <val o="1177d6" v="-2050"/>
+ <val o="1185e8" v="-2961"/>
+ <val o="1193f7" v="-3627"/>
+ <val o="11a208" v="-4830"/>
+ <val o="11b017" v="-4296"/>
+ <val o="11be2f" v="-5257"/>
+ <val o="11cc37" v="-4408"/>
+ <val o="11da47" v="-4326"/>
+ <val o="11e857" v="-4420"/>
+ <val o="11f667" v="-3950"/>
+ <val o="120578" v="-4"/>
+ <val o="121386" v="-4"/>
+ <val o="122196" v="-4"/>
+ <val o="122fa6" v="-3"/>
+ <val o="123db5" v="-3"/>
+ <val o="124bc5" v="-3"/>
+ <val o="1259d5" v="-2"/>
+ <val o="1267e4" v="-2"/>
+ <val o="127600" v="-2"/>
+ <val o="128305" v="-2"/>
+ <val o="129115" v="-2"/>
+ <val o="129f25" v="-2"/>
+ <val o="12ad35" v="-2"/>
+ <val o="12bb45" v="-1"/>
+ <val o="12c954" v="-2"/>
+ <val o="12d766" v="-2"/>
+ <val o="12e575" v="-3"/>
+ <val o="12f386" v="-2"/>
+ <val o="130196" v="-4"/>
+ <val o="130fa6" v="-3"/>
+ <val o="131db7" v="-3"/>
+ <val o="132bc5" v="-3"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="-6868"/>
+ <val o="1774a3" v="-6790"/>
+ <val o="1782b3" v="-7252"/>
+ <val o="1790c5" v="-6734"/>
+ <val o="179ed4" v="-6030"/>
+ <val o="17ace4" v="-5892"/>
+ <val o="17bafd" v="-6066"/>
+ <val o="17c90f" v="-5486"/>
+ <val o="17d71e" v="-5444"/>
+ <val o="17e52f" v="-5339"/>
+ <val o="17f33f" v="-4983"/>
+ <val o="18014f" v="-5190"/>
+ <val o="180f5f" v="-6313"/>
+ <val o="181d6e" v="-6839"/>
+ <val o="182b7f" v="-7853"/>
+ <val o="18398f" v="-13507"/>
+ <val o="1847a1" v="-13381"/>
+ <val o="1855af" v="-12778"/>
+ <val o="1863c0" v="-11890"/>
+ <val o="1871cf" v="-12338"/>
+ <val o="187fe0" v="-11774"/>
+ <val o="188def" v="-12649"/>
+ <val o="189c00" v="-11849"/>
+ <val o="18b80d" v="-7471"/>
+ <val o="18c61c" v="-8126"/>
+ <val o="18d42c" v="-7696"/>
+ <val o="18e23b" v="-6538"/>
+ <val o="18f04b" v="-6175"/>
+ <val o="18fe5e" v="-5664"/>
+ <val o="190c76" v="-4480"/>
+ <val o="191a86" v="-4300"/>
+ <val o="192896" v="-4263"/>
+ <val o="1936a6" v="-4119"/>
+ <val o="1944b7" v="-4103"/>
+ <val o="1952c6" v="-4511"/>
+ <val o="1960d7" v="-5135"/>
+ <val o="196ee6" v="-6038"/>
+ <val o="197cf8" v="-6392"/>
+ <val o="198b0f" v="-5899"/>
+ <val o="19991f" v="-6690"/>
+ <val o="19b541" v="-6603"/>
+ <val o="19c34d" v="-6159"/>
+ <val o="19d15e" v="-6128"/>
+ <val o="19df80" v="-6220"/>
+ <val o="19ed90" v="-6047"/>
+ <val o="19eebe" v="-6009"/>
+ <val o="19fb8e" v="-2295"/>
+ <val o="1a09a0" v="-2543"/>
+ <val o="1a17ae" v="-3085"/>
+ <val o="1a25be" v="-3269"/>
+ <val o="1a33cd" v="-2267"/>
+ <val o="1a41dd" v="-2159"/>
+ <val o="1a4fed" v="-1532"/>
+ <val o="1a5e08" v="-1675"/>
+ <val o="1a6c05" v="-960"/>
+ <val o="1a7a15" v="-1122"/>
+ <val o="1a8826" v="-1061"/>
+ <val o="1a9637" v="-505"/>
+ <val o="1aa445" v="-536"/>
+ <val o="1ab255" v="-991"/>
+ <val o="1ac065" v="-1818"/>
+ <val o="1ace75" v="-2574"/>
+ <val o="1adc87" v="-2844"/>
+ <val o="1aea96" v="-2608"/>
+ <val o="1af8a7" v="-2928"/>
+ <val o="1b06b7" v="-2112"/>
+ <val o="1b14c6" v="-2074"/>
+ <val o="1c7460" v="354"/>
+ <val o="1c8270" v="438"/>
+ <val o="1c907e" v="3408"/>
+ <val o="1c9e8f" v="3269"/>
+ <val o="1caca2" v="3655"/>
+ <val o="1cbab1" v="3521"/>
+ <val o="1cc8c1" v="5431"/>
+ <val o="1cd6d0" v="5560"/>
+ <val o="1ce4de" v="5660"/>
+ <val o="1cf2f0" v="5623"/>
+ <val o="1d0109" v="5896"/>
+ <val o="1d0f06" v="6656"/>
+ <val o="1d1d15" v="6647"/>
+ <val o="1d2b25" v="6733"/>
+ <val o="1d3935" v="6914"/>
+ <val o="1d4745" v="6873"/>
+ <val o="1d5555" v="6691"/>
+ <val o="1d6366" v="5814"/>
+ <val o="1d7175" v="5617"/>
+ <val o="1d7f86" v="5608"/>
+ <val o="1d8d95" v="-3230"/>
+ <val o="1d9ba6" v="-3656"/>
+ <val o="1da9b6" v="-3620"/>
+ <val o="1db7c7" v="-3449"/>
+ <val o="1dc5d5" v="-3601"/>
+ <val o="1dd3e6" v="-3735"/>
+ <val o="1de1f5" v="-5996"/>
+ <val o="1df006" v="-6718"/>
+ <val o="1dfe16" v="-6583"/>
+ <val o="1e0c26" v="-6767"/>
+ <val o="1e1a36" v="-6800"/>
+ <val o="1e2847" v="-6525"/>
+ <val o="1e3659" v="-6170"/>
+ <val o="1e4467" v="-5676"/>
+ <val o="1e5281" v="-4911"/>
+ <val o="1e6086" v="-4911"/>
+ <val o="1e6e96" v="-4801"/>
+ <val o="1e7ca6" v="-1982"/>
+ <val o="1e8ab5" v="-1810"/>
+ <val o="1e98c6" v="-1834"/>
+ <val o="1ea6d5" v="-2256"/>
+ <val o="1eb4e6" v="-2325"/>
+ <val o="1ec2f6" v="-2684"/>
+ <val o="1ed106" v="-2675"/>
+ <val o="1edf16" v="-2778"/>
+ <val o="1eed26" v="-2688"/>
+ <val o="1efb36" v="-2650"/>
+ <val o="1f0946" v="-2557"/>
+ <val o="1f1756" v="-2355"/>
+ <val o="1f2566" v="-2318"/>
+ <val o="1f3376" v="-2582"/>
+ <val o="1f4187" v="-2811"/>
+ <val o="1f4f96" v="-3182"/>
+ <val o="1f5da7" v="-3578"/>
+ <val o="1f6bb6" v="-3544"/>
+ <val o="1f79c7" v="-3148"/>
+ <val o="1f87d6" v="-3345"/>
+ <val o="1f95e7" v="-3137"/>
+ <val o="1fa401" v="-2809"/>
+ <val o="1fb204" v="-2501"/>
+ <val o="1fc016" v="-2493"/>
+ <val o="1fce25" v="-2157"/>
+ <val o="1fdc35" v="-2137"/>
+ <val o="1fea45" v="-2155"/>
+ <val o="1ff855" v="-2498"/>
+ <val o="200665" v="-2368"/>
+ <val o="201475" v="-3513"/>
+ <val o="202286" v="-4566"/>
+ <val o="203095" v="-5345"/>
+ <val o="203ea5" v="-6057"/>
+ <val o="204cb6" v="-5799"/>
+ <val o="205ac6" v="-5341"/>
+ <val o="2068d6" v="-5395"/>
+ <val o="2076e6" v="-5979"/>
+ <val o="2084f6" v="-6090"/>
+ <val o="209306" v="-6778"/>
+ <val o="20a116" v="-6378"/>
+ <val o="20af26" v="-5473"/>
+ <val o="20bd37" v="-5382"/>
+ <val o="20cb46" v="-4608"/>
+ <val o="20d957" v="-4316"/>
+ <val o="20e767" v="-4055"/>
+ <val o="20f581" v="-3867"/>
+ <val o="210386" v="-3482"/>
+ <val o="211194" v="-3116"/>
+ <val o="211fa5" v="-3010"/>
+ <val o="212db5" v="-2944"/>
+ <val o="213bc5" v="-2819"/>
+ <val o="2149d6" v="-3644"/>
+ <val o="2157e5" v="-4499"/>
+ <val o="2165f6" v="-5795"/>
+ <val o="217406" v="-6198"/>
+ <val o="218217" v="-6174"/>
+ <val o="219026" v="-6102"/>
+ <val o="219e39" v="-6218"/>
+ <val o="21ac46" v="-5898"/>
+ <val o="21ba57" v="-5986"/>
+ <val o="21c867" v="-5633"/>
+ <val o="21d677" v="-6210"/>
+ <val o="21e487" v="-5783"/>
+ <val o="21f296" v="-5726"/>
+ <val o="2200a6" v="-5539"/>
+ <val o="220eb7" v="-5408"/>
+ <val o="221cc6" v="-4608"/>
+ <val o="222ad7" v="-3876"/>
+ <val o="2238e7" v="-3618"/>
+ <val o="224701" v="-3292"/>
+ <val o="225505" v="-1685"/>
+ <val o="226315" v="-2072"/>
+ <val o="227125" v="-2050"/>
+ <val o="227f35" v="-1670"/>
+ <val o="228d45" v="-1792"/>
+ <val o="229b54" v="-3485"/>
+ <val o="22a965" v="-3911"/>
+ <val o="22b776" v="-4578"/>
+ <val o="22c586" v="-4788"/>
+ <val o="22d397" v="-4459"/>
+ <val o="22e1a6" v="-4693"/>
+ <val o="22efb6" v="-4830"/>
+ <val o="22fdc7" v="-4652"/>
+ <val o="230bd7" v="-4452"/>
+ <val o="2319e6" v="-5394"/>
+ <val o="2327f6" v="-5538"/>
+ <val o="23361b" v="-5866"/>
+ <val o="234416" v="-5225"/>
+ <val o="235226" v="-5162"/>
+ <val o="236037" v="-5250"/>
+ <val o="236e46" v="-4384"/>
+ <val o="237c57" v="-4218"/>
+ <val o="238a66" v="-4016"/>
+ <val o="239881" v="-3222"/>
+ <val o="23a685" v="-3311"/>
+ <val o="23b495" v="-3183"/>
+ <val o="23c2a4" v="-2974"/>
+ <val o="23d0b5" v="-2945"/>
+ <val o="23dec4" v="-2933"/>
+ <val o="23ecd5" v="-3570"/>
+ <val o="23fae4" v="-4545"/>
+ <val o="2408f6" v="-5119"/>
+ <val o="241706" v="-5737"/>
+ <val o="242518" v="-6515"/>
+ <val o="243325" v="-6776"/>
+ <val o="244137" v="-6755"/>
+ <val o="244f46" v="-6361"/>
+ <val o="246b66" v="-6546"/>
+ <val o="247976" v="-6273"/>
+ <val o="248786" v="-5402"/>
+ <val o="24957e" v="-5797"/>
+ <val o="24a38f" v="-5647"/>
+ <val o="24b19c" v="-5747"/>
+ <val o="24bfac" v="-5443"/>
+ <val o="24cdbc" v="-5445"/>
+ <val o="24dbcd" v="-4557"/>
+ <val o="24e9e5" v="-4019"/>
+ <val o="24f808" v="-3484"/>
+ <val o="250616" v="-3616"/>
+ <val o="251426" v="-3559"/>
+ <val o="252236" v="-3408"/>
+ <val o="253047" v="-3609"/>
+ <val o="253e56" v="-4020"/>
+ <val o="254c67" v="-4182"/>
+ <val o="255a76" v="-4997"/>
+ <val o="256887" v="-5810"/>
+ <val o="257697" v="-5595"/>
+ <val o="2584a8" v="-15224"/>
+ <val o="2592b6" v="-8695"/>
+ <val o="25a0c7" v="-4575"/>
+ <val o="25aed7" v="-6313"/>
+ <val o="25bce7" v="-6104"/>
+ <val o="25caf8" v="-5750"/>
+ <val o="25d907" v="-5764"/>
+ <val o="25e718" v="-5649"/>
+ <val o="25f527" v="-5249"/>
+ <val o="260338" v="-5562"/>
+ <val o="261149" v="-4875"/>
+ <val o="261f59" v="-4619"/>
+ <val o="262d68" v="-4611"/>
+ <val o="263b83" v="-3619"/>
+ <val o="264986" v="-3467"/>
+ <val o="265795" v="-3564"/>
+ <val o="2665a6" v="-3672"/>
+ <val o="2673b5" v="-3614"/>
+ <val o="2681c6" v="-3621"/>
+ <val o="268fd5" v="-3868"/>
+ <val o="269de6" v="-3969"/>
+ <val o="26abf6" v="-3886"/>
+ <val o="26ba06" v="-4381"/>
+ <val o="26c817" v="-4271"/>
+ <val o="26d62b" v="-3967"/>
+ <val o="26e436" v="-4002"/>
+ <val o="26f247" v="-3562"/>
+ <val o="270057" v="-3874"/>
+ <val o="270e67" v="-3561"/>
+ <val o="271c77" v="-4690"/>
+ <val o="272a87" v="-5196"/>
+ <val o="273897" v="-5211"/>
+ <val o="2746a8" v="-5037"/>
+ <val o="2754b9" v="-4963"/>
+ <val o="2762c7" v="-4048"/>
+ <val o="2770d8" v="-3708"/>
+ <val o="277ee7" v="-3215"/>
+ </par>
+ <par memind="438200" h="3dc1a8de">
+ <val o="0" v="-1103"/>
+ <val o="e08" v="-1286"/>
+ <val o="1c32" v="-1351"/>
+ <val o="2a3c" v="-1427"/>
+ <val o="3835" v="-1246"/>
+ <val o="4645" v="-1101"/>
+ <val o="5455" v="-909"/>
+ <val o="6265" v="-1472"/>
+ <val o="7075" v="-1523"/>
+ <val o="7e85" v="-1435"/>
+ <val o="8c96" v="-1784"/>
+ <val o="9aa5" v="-1757"/>
+ <val o="a8b6" v="-1682"/>
+ <val o="b6c5" v="-1745"/>
+ <val o="c4d7" v="-6"/>
+ <val o="d30b" v="-6"/>
+ <val o="e0f6" v="-6"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="-6"/>
+ <val o="11937" v="-6"/>
+ <val o="12746" v="-6"/>
+ <val o="13556" v="-6"/>
+ <val o="14366" v="-6"/>
+ <val o="15181" v="-7"/>
+ <val o="15f85" v="-6"/>
+ <val o="16d95" v="-6"/>
+ <val o="17ba4" v="-6"/>
+ <val o="189b5" v="-6"/>
+ <val o="197c4" v="-6"/>
+ <val o="1a5d5" v="-6"/>
+ <val o="1b3e6" v="-6"/>
+ <val o="1c1f6" v="-6"/>
+ <val o="1d005" v="-6"/>
+ <val o="1de15" v="-6"/>
+ <val o="1ec25" v="-6"/>
+ <val o="1fa36" v="-6"/>
+ <val o="20845" v="-6"/>
+ <val o="21656" v="-6"/>
+ <val o="22465" v="-6"/>
+ <val o="23276" v="-6"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="-6"/>
+ <val o="25ca7" v="-6"/>
+ <val o="26ab7" v="-6"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="-6"/>
+ <val o="294e6" v="-6"/>
+ <val o="2a301" v="-6"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="-6"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="-6"/>
+ <val o="31375" v="-6"/>
+ <val o="3219e" v="-6"/>
+ <val o="32f96" v="-6"/>
+ <val o="33da6" v="-6"/>
+ <val o="34bb6" v="-6"/>
+ <val o="359de" v="-6"/>
+ <val o="367d6" v="-6"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="-6"/>
+ <val o="3bc36" v="-6"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="-6"/>
+ <val o="3e667" v="-6"/>
+ <val o="3f481" v="-6"/>
+ <val o="40285" v="-6"/>
+ <val o="41095" v="-6"/>
+ <val o="41ea5" v="-6"/>
+ <val o="42cb5" v="-6"/>
+ <val o="43ac5" v="-6"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="-6"/>
+ <val o="464f5" v="-6"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="-6"/>
+ <val o="54600" v="-6"/>
+ <val o="55406" v="-6"/>
+ <val o="56215" v="-6"/>
+ <val o="57026" v="-6"/>
+ <val o="57e36" v="-6"/>
+ <val o="58c46" v="-6"/>
+ <val o="59a70" v="-6"/>
+ <val o="5a867" v="-6"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="-6"/>
+ <val o="5eeb8" v="-6"/>
+ <val o="5fcc6" v="-6"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="-6"/>
+ <val o="65f37" v="-6"/>
+ <val o="66d46" v="-6"/>
+ <val o="67b57" v="-6"/>
+ <val o="68967" v="-6"/>
+ <val o="69782" v="-6"/>
+ <val o="6a586" v="-6"/>
+ <val o="6b395" v="-6"/>
+ <val o="6c1a6" v="-6"/>
+ <val o="6cfb5" v="-6"/>
+ <val o="6ddc6" v="-6"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="-6"/>
+ <val o="707f6" v="-6"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="-6"/>
+ <val o="74e47" v="-6"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="-6"/>
+ <val o="7bebf" v="-6"/>
+ <val o="7cccf" v="-6"/>
+ <val o="7dadf" v="-6"/>
+ <val o="7e8fa" v="-6"/>
+ <val o="7f70a" v="-6"/>
+ <val o="8051a" v="-6"/>
+ <val o="8132a" v="-6"/>
+ <val o="8213a" v="-6"/>
+ <val o="82f4a" v="-6"/>
+ <val o="83d5a" v="-6"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="-6"/>
+ <val o="891bb" v="-6"/>
+ <val o="89fca" v="-6"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="-6"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="-6"/>
+ <val o="93a84" v="-6"/>
+ <val o="94885" v="-6"/>
+ <val o="95694" v="-6"/>
+ <val o="964a5" v="-6"/>
+ <val o="972b4" v="-6"/>
+ <val o="980c5" v="-6"/>
+ <val o="98ed4" v="-6"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="-6"/>
+ <val o="9c716" v="-6"/>
+ <val o="9d526" v="-6"/>
+ <val o="9e336" v="-6"/>
+ <val o="9f145" v="-6"/>
+ <val o="9ff56" v="-6"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="-1590"/>
+ <val o="a2986" v="-500"/>
+ <val o="a3795" v="1379"/>
+ <val o="a45a7" v="-45"/>
+ <val o="a53b6" v="-346"/>
+ <val o="a61c7" v="-580"/>
+ <val o="a6fd6" v="-752"/>
+ <val o="a7e00" v="-1367"/>
+ <val o="a8c00" v="-1906"/>
+ <val o="a9a05" v="101"/>
+ <val o="aa815" v="-366"/>
+ <val o="ab625" v="-740"/>
+ <val o="ac435" v="-550"/>
+ <val o="ad245" v="432"/>
+ <val o="ae055" v="1595"/>
+ <val o="aee65" v="275"/>
+ <val o="afc75" v="1019"/>
+ <val o="b0a85" v="3444"/>
+ <val o="b26a6" v="3629"/>
+ <val o="b34b6" v="3203"/>
+ <val o="b42c6" v="215"/>
+ <val o="b50d6" v="380"/>
+ <val o="b5ee7" v="890"/>
+ <val o="b6cf6" v="-446"/>
+ <val o="b7b07" v="-200"/>
+ <val o="b8917" v="-44"/>
+ <val o="b9728" v="-424"/>
+ <val o="ba537" v="-718"/>
+ <val o="bb347" v="946"/>
+ <val o="bc157" v="276"/>
+ <val o="bcf67" v="-944"/>
+ <val o="bdd81" v="3129"/>
+ <val o="beb86" v="453"/>
+ <val o="bf995" v="194"/>
+ <val o="c07a6" v="-246"/>
+ <val o="c15b5" v="-122"/>
+ <val o="c23c6" v="430"/>
+ <val o="c31d5" v="1582"/>
+ <val o="c3fe6" v="720"/>
+ <val o="c4df5" v="1333"/>
+ <val o="c5c06" v="588"/>
+ <val o="c6a16" v="642"/>
+ <val o="c7826" v="1096"/>
+ <val o="c8636" v="313"/>
+ <val o="c9446" v="374"/>
+ <val o="ca256" v="204"/>
+ <val o="cb066" v="692"/>
+ <val o="cbe76" v="-196"/>
+ <val o="ccc87" v="1888"/>
+ <val o="cda96" v="2502"/>
+ <val o="ce8a8" v="1840"/>
+ <val o="cf6b7" v="2437"/>
+ <val o="d04c8" v="1930"/>
+ <val o="d12d7" v="1219"/>
+ <val o="d20e7" v="-250"/>
+ <val o="d2f02" v="-1971"/>
+ <val o="d3d05" v="-1029"/>
+ <val o="d4b15" v="-1072"/>
+ <val o="d5926" v="-388"/>
+ <val o="d6735" v="229"/>
+ <val o="d7546" v="1131"/>
+ <val o="d8355" v="-726"/>
+ <val o="d9166" v="166"/>
+ <val o="d9f75" v="965"/>
+ <val o="dad87" v="2341"/>
+ <val o="dbb97" v="2354"/>
+ <val o="dc9a8" v="2565"/>
+ <val o="dd7b7" v="1136"/>
+ <val o="de5c6" v="367"/>
+ <val o="df3d7" v="173"/>
+ <val o="e01d7" v="156"/>
+ <val o="e0fe5" v="460"/>
+ <val o="e1df5" v="358"/>
+ <val o="e2c04" v="-308"/>
+ <val o="e3a14" v="-1006"/>
+ <val o="e4824" v="93"/>
+ <val o="e5634" v="-723"/>
+ <val o="e6444" v="147"/>
+ <val o="e7255" v="-551"/>
+ <val o="e806f" v="-626"/>
+ <val o="e8e7f" v="2316"/>
+ <val o="e9c8e" v="714"/>
+ <val o="eaa9f" v="600"/>
+ <val o="eb8ae" v="953"/>
+ <val o="ec6bf" v="2267"/>
+ <val o="ed4ce" v="-403"/>
+ <val o="ee2df" v="999"/>
+ <val o="ef0ef" v="475"/>
+ <val o="eff01" v="1663"/>
+ <val o="f0d10" v="829"/>
+ <val o="f1b20" v="1055"/>
+ <val o="f2930" v="-314"/>
+ <val o="f3740" v="1431"/>
+ <val o="f4551" v="1201"/>
+ <val o="f5361" v="1280"/>
+ <val o="f6172" v="1431"/>
+ <val o="f6f80" v="1145"/>
+ <val o="f7d91" v="1635"/>
+ <val o="f8ba1" v="957"/>
+ <val o="f99b1" v="1019"/>
+ <val o="fa7c0" v="1219"/>
+ <val o="fb5d1" v="1143"/>
+ <val o="fc3e0" v="-893"/>
+ <val o="fd1fb" v="-1019"/>
+ <val o="fe00b" v="-1389"/>
+ <val o="fee1c" v="-182"/>
+ <val o="ffc2c" v="-220"/>
+ <val o="100a3b" v="502"/>
+ <val o="10184c" v="940"/>
+ <val o="10265b" v="1719"/>
+ <val o="10346c" v="1592"/>
+ <val o="10427b" v="960"/>
+ <val o="10508d" v="1537"/>
+ <val o="105e9d" v="1177"/>
+ <val o="106cad" v="1337"/>
+ <val o="107abd" v="737"/>
+ <val o="1088cd" v="723"/>
+ <val o="1096de" v="917"/>
+ <val o="10a4ed" v="794"/>
+ <val o="10b2fe" v="1075"/>
+ <val o="10c10d" v="2328"/>
+ <val o="10cf1e" v="1192"/>
+ <val o="10dd2e" v="867"/>
+ <val o="10eb66" v="184"/>
+ <val o="10f94e" v="12"/>
+ <val o="11075e" v="978"/>
+ <val o="11156d" v="256"/>
+ <val o="112388" v="-1007"/>
+ <val o="113187" v="614"/>
+ <val o="113fb0" v="205"/>
+ <val o="114da6" v="195"/>
+ <val o="115bb6" v="316"/>
+ <val o="1169c6" v="1241"/>
+ <val o="1177d6" v="1748"/>
+ <val o="1185e8" v="1046"/>
+ <val o="1193f7" v="1099"/>
+ <val o="11a208" v="309"/>
+ <val o="11b017" v="-202"/>
+ <val o="11be2f" v="-722"/>
+ <val o="11cc37" v="680"/>
+ <val o="11da47" v="440"/>
+ <val o="11e857" v="870"/>
+ <val o="11f667" v="475"/>
+ <val o="120578" v="1"/>
+ <val o="121386" v="1"/>
+ <val o="122196" v="2"/>
+ <val o="122fa6" v="1"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="1"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="-1"/>
+ <val o="128305" v="-1"/>
+ <val o="129115" v="-1"/>
+ <val o="129f25" v="-1"/>
+ <val o="12ad35" v="-1"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="1"/>
+ <val o="12d766" v="1"/>
+ <val o="12e575" v="1"/>
+ <val o="12f386" v="1"/>
+ <val o="130196" v="1"/>
+ <val o="130fa6" v="1"/>
+ <val o="131db7" v="1"/>
+ <val o="132bc5" v="1"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="1959"/>
+ <val o="1774a3" v="1506"/>
+ <val o="1782b3" v="1027"/>
+ <val o="1790c5" v="677"/>
+ <val o="179ed4" v="-759"/>
+ <val o="17ace4" v="-2042"/>
+ <val o="17bafd" v="-2554"/>
+ <val o="17c90f" v="-2178"/>
+ <val o="17d71e" v="-2126"/>
+ <val o="17e52f" v="-2484"/>
+ <val o="17f33f" v="-1980"/>
+ <val o="18014f" v="-1072"/>
+ <val o="180f5f" v="-524"/>
+ <val o="181d6e" v="-1366"/>
+ <val o="182b7f" v="-1753"/>
+ <val o="18398f" v="-893"/>
+ <val o="1847a1" v="-845"/>
+ <val o="1855af" v="-1148"/>
+ <val o="1863c0" v="-2710"/>
+ <val o="1871cf" v="-2297"/>
+ <val o="187fe0" v="-2208"/>
+ <val o="188def" v="-2037"/>
+ <val o="189c00" v="-997"/>
+ <val o="18b80d" v="1048"/>
+ <val o="18c61c" v="-955"/>
+ <val o="18d42c" v="-1334"/>
+ <val o="18e23b" v="-1121"/>
+ <val o="18f04b" v="-1625"/>
+ <val o="18fe5e" v="-1419"/>
+ <val o="190c76" v="-671"/>
+ <val o="191a86" v="-1501"/>
+ <val o="192896" v="-1511"/>
+ <val o="1936a6" v="-1618"/>
+ <val o="1944b7" v="-1037"/>
+ <val o="1952c6" v="-192"/>
+ <val o="1960d7" v="1397"/>
+ <val o="196ee6" v="-627"/>
+ <val o="197cf8" v="-711"/>
+ <val o="198b0f" v="20"/>
+ <val o="19991f" v="-130"/>
+ <val o="19b541" v="-843"/>
+ <val o="19c34d" v="-642"/>
+ <val o="19d15e" v="-320"/>
+ <val o="19df80" v="-210"/>
+ <val o="19ed90" v="295"/>
+ <val o="19eebe" v="417"/>
+ <val o="19fb8e" v="37"/>
+ <val o="1a09a0" v="-2105"/>
+ <val o="1a17ae" v="-2980"/>
+ <val o="1a25be" v="-3329"/>
+ <val o="1a33cd" v="-1430"/>
+ <val o="1a41dd" v="-1986"/>
+ <val o="1a4fed" v="-3570"/>
+ <val o="1a5e08" v="-3230"/>
+ <val o="1a6c05" v="-2288"/>
+ <val o="1a7a15" v="-2846"/>
+ <val o="1a8826" v="-2946"/>
+ <val o="1a9637" v="-2342"/>
+ <val o="1aa445" v="-1719"/>
+ <val o="1ab255" v="-668"/>
+ <val o="1ac065" v="-1761"/>
+ <val o="1ace75" v="-2413"/>
+ <val o="1adc87" v="-1727"/>
+ <val o="1aea96" v="-1832"/>
+ <val o="1af8a7" v="-1889"/>
+ <val o="1b06b7" v="-2346"/>
+ <val o="1b14c6" v="-2176"/>
+ <val o="1c7460" v="374"/>
+ <val o="1c8270" v="-132"/>
+ <val o="1c907e" v="993"/>
+ <val o="1c9e8f" v="-150"/>
+ <val o="1caca2" v="-843"/>
+ <val o="1cbab1" v="-1196"/>
+ <val o="1cc8c1" v="2577"/>
+ <val o="1cd6d0" v="1582"/>
+ <val o="1ce4de" v="909"/>
+ <val o="1cf2f0" v="-1405"/>
+ <val o="1d0109" v="-1597"/>
+ <val o="1d0f06" v="-186"/>
+ <val o="1d1d15" v="-658"/>
+ <val o="1d2b25" v="-679"/>
+ <val o="1d3935" v="89"/>
+ <val o="1d4745" v="680"/>
+ <val o="1d5555" v="1095"/>
+ <val o="1d6366" v="-832"/>
+ <val o="1d7175" v="-785"/>
+ <val o="1d7f86" v="-228"/>
+ <val o="1d8d95" v="-40"/>
+ <val o="1d9ba6" v="-280"/>
+ <val o="1da9b6" v="-697"/>
+ <val o="1db7c7" v="-697"/>
+ <val o="1dc5d5" v="-811"/>
+ <val o="1dd3e6" v="-629"/>
+ <val o="1de1f5" v="-1408"/>
+ <val o="1df006" v="-1666"/>
+ <val o="1dfe16" v="-1574"/>
+ <val o="1e0c26" v="-1928"/>
+ <val o="1e1a36" v="-1970"/>
+ <val o="1e2847" v="-2017"/>
+ <val o="1e3659" v="-1984"/>
+ <val o="1e4467" v="-2007"/>
+ <val o="1e5281" v="-1611"/>
+ <val o="1e6086" v="-1851"/>
+ <val o="1e6e96" v="-1908"/>
+ <val o="1e7ca6" v="-251"/>
+ <val o="1e8ab5" v="-386"/>
+ <val o="1e98c6" v="-121"/>
+ <val o="1ea6d5" v="-365"/>
+ <val o="1eb4e6" v="-313"/>
+ <val o="1ec2f6" v="-506"/>
+ <val o="1ed106" v="-232"/>
+ <val o="1edf16" v="-288"/>
+ <val o="1eed26" v="-121"/>
+ <val o="1efb36" v="-310"/>
+ <val o="1f0946" v="-245"/>
+ <val o="1f1756" v="439"/>
+ <val o="1f2566" v="609"/>
+ <val o="1f3376" v="1078"/>
+ <val o="1f4187" v="2491"/>
+ <val o="1f4f96" v="1327"/>
+ <val o="1f5da7" v="-115"/>
+ <val o="1f6bb6" v="-442"/>
+ <val o="1f79c7" v="203"/>
+ <val o="1f87d6" v="-1439"/>
+ <val o="1f95e7" v="-2019"/>
+ <val o="1fa401" v="-1491"/>
+ <val o="1fb204" v="-1285"/>
+ <val o="1fc016" v="-1309"/>
+ <val o="1fce25" v="-409"/>
+ <val o="1fdc35" v="-162"/>
+ <val o="1fea45" v="90"/>
+ <val o="1ff855" v="319"/>
+ <val o="200665" v="2483"/>
+ <val o="201475" v="357"/>
+ <val o="202286" v="1681"/>
+ <val o="203095" v="1572"/>
+ <val o="203ea5" v="1575"/>
+ <val o="204cb6" v="302"/>
+ <val o="205ac6" v="1076"/>
+ <val o="2068d6" v="1555"/>
+ <val o="2076e6" v="1971"/>
+ <val o="2084f6" v="239"/>
+ <val o="209306" v="-351"/>
+ <val o="20a116" v="-527"/>
+ <val o="20af26" v="-215"/>
+ <val o="20bd37" v="-782"/>
+ <val o="20cb46" v="452"/>
+ <val o="20d957" v="60"/>
+ <val o="20e767" v="-848"/>
+ <val o="20f581" v="-1383"/>
+ <val o="210386" v="-989"/>
+ <val o="211194" v="-325"/>
+ <val o="211fa5" v="-382"/>
+ <val o="212db5" v="60"/>
+ <val o="213bc5" v="884"/>
+ <val o="2149d6" v="659"/>
+ <val o="2157e5" v="-264"/>
+ <val o="2165f6" v="-990"/>
+ <val o="217406" v="289"/>
+ <val o="218217" v="-292"/>
+ <val o="219026" v="-542"/>
+ <val o="219e39" v="366"/>
+ <val o="21ac46" v="909"/>
+ <val o="21ba57" v="992"/>
+ <val o="21c867" v="1808"/>
+ <val o="21d677" v="-1049"/>
+ <val o="21e487" v="543"/>
+ <val o="21f296" v="377"/>
+ <val o="2200a6" v="-619"/>
+ <val o="220eb7" v="-712"/>
+ <val o="221cc6" v="1459"/>
+ <val o="222ad7" v="257"/>
+ <val o="2238e7" v="-696"/>
+ <val o="224701" v="-1085"/>
+ <val o="225505" v="2873"/>
+ <val o="226315" v="421"/>
+ <val o="227125" v="557"/>
+ <val o="227f35" v="1696"/>
+ <val o="228d45" v="2480"/>
+ <val o="229b54" v="-707"/>
+ <val o="22a965" v="-237"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="1730"/>
+ <val o="22d397" v="2990"/>
+ <val o="22e1a6" v="2746"/>
+ <val o="22efb6" v="-174"/>
+ <val o="22fdc7" v="-194"/>
+ <val o="230bd7" v="485"/>
+ <val o="2319e6" v="-729"/>
+ <val o="2327f6" v="70"/>
+ <val o="23361b" v="907"/>
+ <val o="234416" v="1297"/>
+ <val o="235226" v="776"/>
+ <val o="236037" v="123"/>
+ <val o="236e46" v="1557"/>
+ <val o="237c57" v="1208"/>
+ <val o="238a66" v="253"/>
+ <val o="239881" v="508"/>
+ <val o="23a685" v="-274"/>
+ <val o="23b495" v="-571"/>
+ <val o="23c2a4" v="146"/>
+ <val o="23d0b5" v="567"/>
+ <val o="23dec4" v="1222"/>
+ <val o="23ecd5" v="733"/>
+ <val o="23fae4" v="8"/>
+ <val o="2408f6" v="1041"/>
+ <val o="241706" v="3222"/>
+ <val o="242518" v="2576"/>
+ <val o="243325" v="2422"/>
+ <val o="244137" v="-1036"/>
+ <val o="244f46" v="-746"/>
+ <val o="246b66" v="-661"/>
+ <val o="247976" v="45"/>
+ <val o="248786" v="3983"/>
+ <val o="24957e" v="1694"/>
+ <val o="24a38f" v="709"/>
+ <val o="24b19c" v="-844"/>
+ <val o="24bfac" v="-605"/>
+ <val o="24cdbc" v="-661"/>
+ <val o="24dbcd" v="-436"/>
+ <val o="24e9e5" v="-1155"/>
+ <val o="24f808" v="-716"/>
+ <val o="250616" v="-877"/>
+ <val o="251426" v="-1024"/>
+ <val o="252236" v="-7"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="1185"/>
+ <val o="254c67" v="884"/>
+ <val o="255a76" v="1103"/>
+ <val o="256887" v="1789"/>
+ <val o="257697" v="3132"/>
+ <val o="2584a8" v="-4032"/>
+ <val o="2592b6" v="-2114"/>
+ <val o="25a0c7" v="-498"/>
+ <val o="25aed7" v="174"/>
+ <val o="25bce7" v="210"/>
+ <val o="25caf8" v="710"/>
+ <val o="25d907" v="2127"/>
+ <val o="25e718" v="2386"/>
+ <val o="25f527" v="1916"/>
+ <val o="260338" v="53"/>
+ <val o="261149" v="1070"/>
+ <val o="261f59" v="564"/>
+ <val o="262d68" v="-1181"/>
+ <val o="263b83" v="34"/>
+ <val o="264986" v="-847"/>
+ <val o="265795" v="-1318"/>
+ <val o="2665a6" v="-1842"/>
+ <val o="2673b5" v="-1404"/>
+ <val o="2681c6" v="-1129"/>
+ <val o="268fd5" v="-372"/>
+ <val o="269de6" v="269"/>
+ <val o="26abf6" v="572"/>
+ <val o="26ba06" v="1413"/>
+ <val o="26c817" v="1586"/>
+ <val o="26d62b" v="3161"/>
+ <val o="26e436" v="2347"/>
+ <val o="26f247" v="2627"/>
+ <val o="270057" v="2502"/>
+ <val o="270e67" v="2818"/>
+ <val o="271c77" v="158"/>
+ <val o="272a87" v="-545"/>
+ <val o="273897" v="-370"/>
+ <val o="2746a8" v="-624"/>
+ <val o="2754b9" v="-847"/>
+ <val o="2762c7" v="2315"/>
+ <val o="2770d8" v="1099"/>
+ <val o="277ee7" v="-417"/>
+ </par>
+ <par memind="422200" h="3dc1a8de">
+ <val o="0" v="-4307"/>
+ <val o="e08" v="-4169"/>
+ <val o="1c32" v="-4096"/>
+ <val o="2a3c" v="-4087"/>
+ <val o="3835" v="-3963"/>
+ <val o="4645" v="-3969"/>
+ <val o="5455" v="-4411"/>
+ <val o="6265" v="-5358"/>
+ <val o="7075" v="-6317"/>
+ <val o="7e85" v="-7298"/>
+ <val o="8c96" v="-7519"/>
+ <val o="9aa5" v="-7351"/>
+ <val o="a8b6" v="-6890"/>
+ <val o="b6c5" v="-6465"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-7"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="-7"/>
+ <val o="fd17" v="-7"/>
+ <val o="10b27" v="-8"/>
+ <val o="11937" v="-8"/>
+ <val o="12746" v="-8"/>
+ <val o="13556" v="-8"/>
+ <val o="14366" v="-8"/>
+ <val o="15181" v="-9"/>
+ <val o="15f85" v="-8"/>
+ <val o="16d95" v="-8"/>
+ <val o="17ba4" v="-8"/>
+ <val o="189b5" v="-8"/>
+ <val o="197c4" v="-8"/>
+ <val o="1a5d5" v="-9"/>
+ <val o="1b3e6" v="-9"/>
+ <val o="1c1f6" v="-8"/>
+ <val o="1d005" v="-8"/>
+ <val o="1de15" v="-8"/>
+ <val o="1ec25" v="-8"/>
+ <val o="1fa36" v="-8"/>
+ <val o="20845" v="-9"/>
+ <val o="21656" v="-8"/>
+ <val o="22465" v="-8"/>
+ <val o="23276" v="-8"/>
+ <val o="24086" v="-7"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-8"/>
+ <val o="26ab7" v="-8"/>
+ <val o="278c6" v="-8"/>
+ <val o="286d6" v="-8"/>
+ <val o="294e6" v="-9"/>
+ <val o="2a301" v="-9"/>
+ <val o="2b105" v="-8"/>
+ <val o="2bf15" v="-8"/>
+ <val o="2cd25" v="-8"/>
+ <val o="2db35" v="-8"/>
+ <val o="2e946" v="-8"/>
+ <val o="2f755" v="-7"/>
+ <val o="30566" v="-9"/>
+ <val o="31375" v="-8"/>
+ <val o="3219e" v="-8"/>
+ <val o="32f96" v="-8"/>
+ <val o="33da6" v="-8"/>
+ <val o="34bb6" v="-8"/>
+ <val o="359de" v="-8"/>
+ <val o="367d6" v="-8"/>
+ <val o="375e6" v="-8"/>
+ <val o="3840e" v="-7"/>
+ <val o="3921e" v="-7"/>
+ <val o="3a016" v="-7"/>
+ <val o="3ae27" v="-8"/>
+ <val o="3bc36" v="-8"/>
+ <val o="3ca47" v="-7"/>
+ <val o="3d856" v="-8"/>
+ <val o="3e667" v="-8"/>
+ <val o="3f481" v="-9"/>
+ <val o="40285" v="-9"/>
+ <val o="41095" v="-9"/>
+ <val o="41ea5" v="-9"/>
+ <val o="42cb5" v="-9"/>
+ <val o="43ac5" v="-8"/>
+ <val o="448d5" v="-8"/>
+ <val o="456e6" v="-8"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="-7"/>
+ <val o="48f0e" v="-6"/>
+ <val o="49d1d" v="-6"/>
+ <val o="4ab46" v="-7"/>
+ <val o="4b955" v="-7"/>
+ <val o="4c769" v="-6"/>
+ <val o="4d577" v="-7"/>
+ <val o="4e387" v="-7"/>
+ <val o="4f196" v="-7"/>
+ <val o="4ffa6" v="-7"/>
+ <val o="50dd0" v="-7"/>
+ <val o="51bc6" v="-7"/>
+ <val o="529d6" v="-8"/>
+ <val o="537e7" v="-8"/>
+ <val o="54600" v="-9"/>
+ <val o="55406" v="-8"/>
+ <val o="56215" v="-8"/>
+ <val o="57026" v="-8"/>
+ <val o="57e36" v="-8"/>
+ <val o="58c46" v="-8"/>
+ <val o="59a70" v="-8"/>
+ <val o="5a867" v="-7"/>
+ <val o="5b676" v="-7"/>
+ <val o="5c487" v="-6"/>
+ <val o="5d296" v="-7"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="-7"/>
+ <val o="618e7" v="-7"/>
+ <val o="626f7" v="-7"/>
+ <val o="63507" v="-7"/>
+ <val o="64317" v="-7"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-8"/>
+ <val o="66d46" v="-8"/>
+ <val o="67b57" v="-8"/>
+ <val o="68967" v="-8"/>
+ <val o="69782" v="-8"/>
+ <val o="6a586" v="-8"/>
+ <val o="6b395" v="-8"/>
+ <val o="6c1a6" v="-9"/>
+ <val o="6cfb5" v="-8"/>
+ <val o="6ddc6" v="-8"/>
+ <val o="6ebd6" v="-7"/>
+ <val o="6f9e6" v="-8"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="-7"/>
+ <val o="72417" v="-6"/>
+ <val o="73227" v="-6"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="-7"/>
+ <val o="76a63" v="-7"/>
+ <val o="77873" v="-7"/>
+ <val o="78680" v="-6"/>
+ <val o="7948f" v="-7"/>
+ <val o="7a29f" v="-7"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-8"/>
+ <val o="7cccf" v="-8"/>
+ <val o="7dadf" v="-8"/>
+ <val o="7e8fa" v="-8"/>
+ <val o="7f70a" v="-9"/>
+ <val o="8051a" v="-9"/>
+ <val o="8132a" v="-9"/>
+ <val o="8213a" v="-9"/>
+ <val o="82f4a" v="-9"/>
+ <val o="83d5a" v="-8"/>
+ <val o="84b6a" v="-7"/>
+ <val o="8597a" v="-7"/>
+ <val o="8678b" v="-7"/>
+ <val o="8759b" v="-7"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-8"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="-7"/>
+ <val o="8bbeb" v="-7"/>
+ <val o="8c9fc" v="-7"/>
+ <val o="8d80b" v="-7"/>
+ <val o="8e61a" v="-7"/>
+ <val o="8f42a" v="-7"/>
+ <val o="9023a" v="-7"/>
+ <val o="9104a" v="-8"/>
+ <val o="91e5a" v="-7"/>
+ <val o="92c6a" v="-8"/>
+ <val o="93a84" v="-9"/>
+ <val o="94885" v="-8"/>
+ <val o="95694" v="-9"/>
+ <val o="964a5" v="-9"/>
+ <val o="972b4" v="-8"/>
+ <val o="980c5" v="-8"/>
+ <val o="98ed4" v="-8"/>
+ <val o="99ce5" v="-8"/>
+ <val o="9aaf5" v="-7"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="-7"/>
+ <val o="a1b77" v="-6324"/>
+ <val o="a2986" v="-3516"/>
+ <val o="a3795" v="-963"/>
+ <val o="a45a7" v="644"/>
+ <val o="a53b6" v="700"/>
+ <val o="a61c7" v="942"/>
+ <val o="a6fd6" v="99"/>
+ <val o="a7e00" v="464"/>
+ <val o="a8c00" v="912"/>
+ <val o="a9a05" v="289"/>
+ <val o="aa815" v="32"/>
+ <val o="ab625" v="46"/>
+ <val o="ac435" v="200"/>
+ <val o="ad245" v="921"/>
+ <val o="ae055" v="744"/>
+ <val o="aee65" v="-561"/>
+ <val o="afc75" v="-68"/>
+ <val o="b0a85" v="31"/>
+ <val o="b26a6" v="142"/>
+ <val o="b34b6" v="-123"/>
+ <val o="b42c6" v="-451"/>
+ <val o="b50d6" v="-729"/>
+ <val o="b5ee7" v="-712"/>
+ <val o="b6cf6" v="-1584"/>
+ <val o="b7b07" v="-1983"/>
+ <val o="b8917" v="-1753"/>
+ <val o="b9728" v="-1758"/>
+ <val o="ba537" v="-1891"/>
+ <val o="bb347" v="-827"/>
+ <val o="bc157" v="-882"/>
+ <val o="bcf67" v="-899"/>
+ <val o="bdd81" v="644"/>
+ <val o="beb86" v="417"/>
+ <val o="bf995" v="524"/>
+ <val o="c07a6" v="400"/>
+ <val o="c15b5" v="372"/>
+ <val o="c23c6" v="484"/>
+ <val o="c31d5" v="591"/>
+ <val o="c3fe6" v="336"/>
+ <val o="c4df5" v="741"/>
+ <val o="c5c06" v="114"/>
+ <val o="c6a16" v="507"/>
+ <val o="c7826" v="-51"/>
+ <val o="c8636" v="136"/>
+ <val o="c9446" v="334"/>
+ <val o="ca256" v="235"/>
+ <val o="cb066" v="116"/>
+ <val o="cbe76" v="-417"/>
+ <val o="ccc87" v="-232"/>
+ <val o="cda96" v="-184"/>
+ <val o="ce8a8" v="-219"/>
+ <val o="cf6b7" v="-134"/>
+ <val o="d04c8" v="-51"/>
+ <val o="d12d7" v="143"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="11"/>
+ <val o="d3d05" v="600"/>
+ <val o="d4b15" v="644"/>
+ <val o="d5926" v="836"/>
+ <val o="d6735" v="1068"/>
+ <val o="d7546" v="1213"/>
+ <val o="d8355" v="-135"/>
+ <val o="d9166" v="-755"/>
+ <val o="d9f75" v="-1498"/>
+ <val o="dad87" v="-2011"/>
+ <val o="dbb97" v="-2561"/>
+ <val o="dc9a8" v="-2338"/>
+ <val o="dd7b7" v="-2895"/>
+ <val o="de5c6" v="-2780"/>
+ <val o="df3d7" v="-2912"/>
+ <val o="e01d7" v="-2913"/>
+ <val o="e0fe5" v="-2832"/>
+ <val o="e1df5" v="-3018"/>
+ <val o="e2c04" v="-4099"/>
+ <val o="e3a14" v="-3979"/>
+ <val o="e4824" v="-3370"/>
+ <val o="e5634" v="-3428"/>
+ <val o="e6444" v="-2551"/>
+ <val o="e7255" v="-2189"/>
+ <val o="e806f" v="-1757"/>
+ <val o="e8e7f" v="-477"/>
+ <val o="e9c8e" v="-709"/>
+ <val o="eaa9f" v="-653"/>
+ <val o="eb8ae" v="-653"/>
+ <val o="ec6bf" v="-468"/>
+ <val o="ed4ce" v="-2112"/>
+ <val o="ee2df" v="-2239"/>
+ <val o="ef0ef" v="-3198"/>
+ <val o="eff01" v="-4087"/>
+ <val o="f0d10" v="-4308"/>
+ <val o="f1b20" v="-4550"/>
+ <val o="f2930" v="-4628"/>
+ <val o="f3740" v="-4301"/>
+ <val o="f4551" v="-4608"/>
+ <val o="f5361" v="-4857"/>
+ <val o="f6172" v="-4613"/>
+ <val o="f6f80" v="-4818"/>
+ <val o="f7d91" v="-4244"/>
+ <val o="f8ba1" v="-3915"/>
+ <val o="f99b1" v="-3805"/>
+ <val o="fa7c0" v="-3025"/>
+ <val o="fb5d1" v="-3034"/>
+ <val o="fc3e0" v="-3295"/>
+ <val o="fd1fb" v="-2680"/>
+ <val o="fe00b" v="-2530"/>
+ <val o="fee1c" v="-2083"/>
+ <val o="ffc2c" v="-1982"/>
+ <val o="100a3b" v="-1790"/>
+ <val o="10184c" v="-1791"/>
+ <val o="10265b" v="-2077"/>
+ <val o="10346c" v="-2724"/>
+ <val o="10427b" v="-4016"/>
+ <val o="10508d" v="-4320"/>
+ <val o="105e9d" v="-4339"/>
+ <val o="106cad" v="-4725"/>
+ <val o="107abd" v="-4338"/>
+ <val o="1088cd" v="-3906"/>
+ <val o="1096de" v="-4119"/>
+ <val o="10a4ed" v="-4322"/>
+ <val o="10b2fe" v="-4345"/>
+ <val o="10c10d" v="-4169"/>
+ <val o="10cf1e" v="-4354"/>
+ <val o="10dd2e" v="-4160"/>
+ <val o="10eb66" v="-4453"/>
+ <val o="10f94e" v="-3895"/>
+ <val o="11075e" v="-3281"/>
+ <val o="11156d" v="-2866"/>
+ <val o="112388" v="-2663"/>
+ <val o="113187" v="-1794"/>
+ <val o="113fb0" v="-1797"/>
+ <val o="114da6" v="-1823"/>
+ <val o="115bb6" v="-1782"/>
+ <val o="1169c6" v="-1585"/>
+ <val o="1177d6" v="-2082"/>
+ <val o="1185e8" v="-2885"/>
+ <val o="1193f7" v="-3558"/>
+ <val o="11a208" v="-4838"/>
+ <val o="11b017" v="-4322"/>
+ <val o="11be2f" v="-5393"/>
+ <val o="11cc37" v="-4456"/>
+ <val o="11da47" v="-4279"/>
+ <val o="11e857" v="-4354"/>
+ <val o="11f667" v="-3900"/>
+ <val o="120578" v="-4"/>
+ <val o="121386" v="-4"/>
+ <val o="122196" v="-4"/>
+ <val o="122fa6" v="-3"/>
+ <val o="123db5" v="-3"/>
+ <val o="124bc5" v="-3"/>
+ <val o="1259d5" v="-2"/>
+ <val o="1267e4" v="-2"/>
+ <val o="127600" v="-2"/>
+ <val o="128305" v="-2"/>
+ <val o="129115" v="-2"/>
+ <val o="129f25" v="-2"/>
+ <val o="12ad35" v="-2"/>
+ <val o="12bb45" v="-1"/>
+ <val o="12c954" v="-2"/>
+ <val o="12d766" v="-2"/>
+ <val o="12e575" v="-3"/>
+ <val o="12f386" v="-2"/>
+ <val o="130196" v="-4"/>
+ <val o="130fa6" v="-3"/>
+ <val o="131db7" v="-3"/>
+ <val o="132bc5" v="-3"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="-6844"/>
+ <val o="1774a3" v="-6848"/>
+ <val o="1782b3" v="-7276"/>
+ <val o="1790c5" v="-6718"/>
+ <val o="179ed4" v="-6044"/>
+ <val o="17ace4" v="-5879"/>
+ <val o="17bafd" v="-6067"/>
+ <val o="17c90f" v="-5484"/>
+ <val o="17d71e" v="-5437"/>
+ <val o="17e52f" v="-5342"/>
+ <val o="17f33f" v="-4981"/>
+ <val o="18014f" v="-5193"/>
+ <val o="180f5f" v="-6321"/>
+ <val o="181d6e" v="-6923"/>
+ <val o="182b7f" v="-7889"/>
+ <val o="18398f" v="-13464"/>
+ <val o="1847a1" v="-13354"/>
+ <val o="1855af" v="-12813"/>
+ <val o="1863c0" v="-11996"/>
+ <val o="1871cf" v="-12436"/>
+ <val o="187fe0" v="-11658"/>
+ <val o="188def" v="-12508"/>
+ <val o="189c00" v="-11965"/>
+ <val o="18b80d" v="-7567"/>
+ <val o="18c61c" v="-8100"/>
+ <val o="18d42c" v="-7676"/>
+ <val o="18e23b" v="-6565"/>
+ <val o="18f04b" v="-6167"/>
+ <val o="18fe5e" v="-5660"/>
+ <val o="190c76" v="-4475"/>
+ <val o="191a86" v="-4306"/>
+ <val o="192896" v="-4252"/>
+ <val o="1936a6" v="-4125"/>
+ <val o="1944b7" v="-4125"/>
+ <val o="1952c6" v="-4498"/>
+ <val o="1960d7" v="-5137"/>
+ <val o="196ee6" v="-5967"/>
+ <val o="197cf8" v="-6354"/>
+ <val o="198b0f" v="-5965"/>
+ <val o="19991f" v="-6615"/>
+ <val o="19b541" v="-6619"/>
+ <val o="19c34d" v="-6199"/>
+ <val o="19d15e" v="-6235"/>
+ <val o="19df80" v="-6313"/>
+ <val o="19ed90" v="-6079"/>
+ <val o="19eebe" v="-6075"/>
+ <val o="19fb8e" v="-2390"/>
+ <val o="1a09a0" v="-2600"/>
+ <val o="1a17ae" v="-3051"/>
+ <val o="1a25be" v="-3338"/>
+ <val o="1a33cd" v="-2238"/>
+ <val o="1a41dd" v="-2137"/>
+ <val o="1a4fed" v="-1546"/>
+ <val o="1a5e08" v="-1670"/>
+ <val o="1a6c05" v="-969"/>
+ <val o="1a7a15" v="-1123"/>
+ <val o="1a8826" v="-1072"/>
+ <val o="1a9637" v="-481"/>
+ <val o="1aa445" v="-537"/>
+ <val o="1ab255" v="-995"/>
+ <val o="1ac065" v="-1819"/>
+ <val o="1ace75" v="-2636"/>
+ <val o="1adc87" v="-2920"/>
+ <val o="1aea96" v="-2594"/>
+ <val o="1af8a7" v="-2898"/>
+ <val o="1b06b7" v="-2173"/>
+ <val o="1b14c6" v="-2092"/>
+ <val o="1c7460" v="311"/>
+ <val o="1c8270" v="399"/>
+ <val o="1c907e" v="3486"/>
+ <val o="1c9e8f" v="3357"/>
+ <val o="1caca2" v="3670"/>
+ <val o="1cbab1" v="3580"/>
+ <val o="1cc8c1" v="5398"/>
+ <val o="1cd6d0" v="5478"/>
+ <val o="1ce4de" v="5618"/>
+ <val o="1cf2f0" v="5659"/>
+ <val o="1d0109" v="5923"/>
+ <val o="1d0f06" v="6651"/>
+ <val o="1d1d15" v="6654"/>
+ <val o="1d2b25" v="6713"/>
+ <val o="1d3935" v="6885"/>
+ <val o="1d4745" v="6893"/>
+ <val o="1d5555" v="6705"/>
+ <val o="1d6366" v="5853"/>
+ <val o="1d7175" v="5545"/>
+ <val o="1d7f86" v="5589"/>
+ <val o="1d8d95" v="-3219"/>
+ <val o="1d9ba6" v="-3620"/>
+ <val o="1da9b6" v="-3623"/>
+ <val o="1db7c7" v="-3472"/>
+ <val o="1dc5d5" v="-3630"/>
+ <val o="1dd3e6" v="-3723"/>
+ <val o="1de1f5" v="-6033"/>
+ <val o="1df006" v="-6752"/>
+ <val o="1dfe16" v="-6647"/>
+ <val o="1e0c26" v="-6778"/>
+ <val o="1e1a36" v="-6794"/>
+ <val o="1e2847" v="-6593"/>
+ <val o="1e3659" v="-6136"/>
+ <val o="1e4467" v="-5653"/>
+ <val o="1e5281" v="-4910"/>
+ <val o="1e6086" v="-4908"/>
+ <val o="1e6e96" v="-4803"/>
+ <val o="1e7ca6" v="-1970"/>
+ <val o="1e8ab5" v="-1820"/>
+ <val o="1e98c6" v="-1821"/>
+ <val o="1ea6d5" v="-2271"/>
+ <val o="1eb4e6" v="-2332"/>
+ <val o="1ec2f6" v="-2646"/>
+ <val o="1ed106" v="-2644"/>
+ <val o="1edf16" v="-2749"/>
+ <val o="1eed26" v="-2728"/>
+ <val o="1efb36" v="-2587"/>
+ <val o="1f0946" v="-2548"/>
+ <val o="1f1756" v="-2377"/>
+ <val o="1f2566" v="-2339"/>
+ <val o="1f3376" v="-2566"/>
+ <val o="1f4187" v="-2784"/>
+ <val o="1f4f96" v="-3191"/>
+ <val o="1f5da7" v="-3581"/>
+ <val o="1f6bb6" v="-3591"/>
+ <val o="1f79c7" v="-3124"/>
+ <val o="1f87d6" v="-3337"/>
+ <val o="1f95e7" v="-3142"/>
+ <val o="1fa401" v="-2806"/>
+ <val o="1fb204" v="-2480"/>
+ <val o="1fc016" v="-2497"/>
+ <val o="1fce25" v="-2171"/>
+ <val o="1fdc35" v="-2133"/>
+ <val o="1fea45" v="-2159"/>
+ <val o="1ff855" v="-2500"/>
+ <val o="200665" v="-2395"/>
+ <val o="201475" v="-3469"/>
+ <val o="202286" v="-4512"/>
+ <val o="203095" v="-5355"/>
+ <val o="203ea5" v="-5915"/>
+ <val o="204cb6" v="-5771"/>
+ <val o="205ac6" v="-5287"/>
+ <val o="2068d6" v="-5386"/>
+ <val o="2076e6" v="-5976"/>
+ <val o="2084f6" v="-6100"/>
+ <val o="209306" v="-6742"/>
+ <val o="20a116" v="-6312"/>
+ <val o="20af26" v="-5533"/>
+ <val o="20bd37" v="-5455"/>
+ <val o="20cb46" v="-4630"/>
+ <val o="20d957" v="-4348"/>
+ <val o="20e767" v="-4046"/>
+ <val o="20f581" v="-3855"/>
+ <val o="210386" v="-3519"/>
+ <val o="211194" v="-3131"/>
+ <val o="211fa5" v="-3014"/>
+ <val o="212db5" v="-2904"/>
+ <val o="213bc5" v="-2826"/>
+ <val o="2149d6" v="-3680"/>
+ <val o="2157e5" v="-4507"/>
+ <val o="2165f6" v="-5844"/>
+ <val o="217406" v="-6195"/>
+ <val o="218217" v="-6165"/>
+ <val o="219026" v="-6142"/>
+ <val o="219e39" v="-6223"/>
+ <val o="21ac46" v="-5938"/>
+ <val o="21ba57" v="-5926"/>
+ <val o="21c867" v="-5557"/>
+ <val o="21d677" v="-6240"/>
+ <val o="21e487" v="-5750"/>
+ <val o="21f296" v="-5772"/>
+ <val o="2200a6" v="-5468"/>
+ <val o="220eb7" v="-5393"/>
+ <val o="221cc6" v="-4543"/>
+ <val o="222ad7" v="-3876"/>
+ <val o="2238e7" v="-3622"/>
+ <val o="224701" v="-3292"/>
+ <val o="225505" v="-1681"/>
+ <val o="226315" v="-2082"/>
+ <val o="227125" v="-2043"/>
+ <val o="227f35" v="-1675"/>
+ <val o="228d45" v="-1785"/>
+ <val o="229b54" v="-3494"/>
+ <val o="22a965" v="-4080"/>
+ <val o="22b776" v="-4454"/>
+ <val o="22c586" v="-4816"/>
+ <val o="22d397" v="-4405"/>
+ <val o="22e1a6" v="-4620"/>
+ <val o="22efb6" v="-4820"/>
+ <val o="22fdc7" v="-4643"/>
+ <val o="230bd7" v="-4435"/>
+ <val o="2319e6" v="-5397"/>
+ <val o="2327f6" v="-5558"/>
+ <val o="23361b" v="-5883"/>
+ <val o="234416" v="-5207"/>
+ <val o="235226" v="-5203"/>
+ <val o="236037" v="-5253"/>
+ <val o="236e46" v="-4342"/>
+ <val o="237c57" v="-4194"/>
+ <val o="238a66" v="-3991"/>
+ <val o="239881" v="-3195"/>
+ <val o="23a685" v="-3328"/>
+ <val o="23b495" v="-3191"/>
+ <val o="23c2a4" v="-2966"/>
+ <val o="23d0b5" v="-2959"/>
+ <val o="23dec4" v="-2916"/>
+ <val o="23ecd5" v="-3620"/>
+ <val o="23fae4" v="-4562"/>
+ <val o="2408f6" v="-5013"/>
+ <val o="241706" v="-5793"/>
+ <val o="242518" v="-6605"/>
+ <val o="243325" v="-6787"/>
+ <val o="244137" v="-6732"/>
+ <val o="244f46" v="-6435"/>
+ <val o="246b66" v="-6415"/>
+ <val o="247976" v="-6261"/>
+ <val o="248786" v="-5371"/>
+ <val o="24957e" v="-5703"/>
+ <val o="24a38f" v="-5668"/>
+ <val o="24b19c" v="-5810"/>
+ <val o="24bfac" v="-5495"/>
+ <val o="24cdbc" v="-5368"/>
+ <val o="24dbcd" v="-4539"/>
+ <val o="24e9e5" v="-4003"/>
+ <val o="24f808" v="-3487"/>
+ <val o="250616" v="-3597"/>
+ <val o="251426" v="-3575"/>
+ <val o="252236" v="-3422"/>
+ <val o="253047" v="-3610"/>
+ <val o="253e56" v="-4069"/>
+ <val o="254c67" v="-4209"/>
+ <val o="255a76" v="-4977"/>
+ <val o="256887" v="-5845"/>
+ <val o="257697" v="-5662"/>
+ <val o="2584a8" v="-15155"/>
+ <val o="2592b6" v="-8621"/>
+ <val o="25a0c7" v="-4609"/>
+ <val o="25aed7" v="-6329"/>
+ <val o="25bce7" v="-6120"/>
+ <val o="25caf8" v="-5819"/>
+ <val o="25d907" v="-5800"/>
+ <val o="25e718" v="-5627"/>
+ <val o="25f527" v="-5318"/>
+ <val o="260338" v="-5543"/>
+ <val o="261149" v="-4916"/>
+ <val o="261f59" v="-4589"/>
+ <val o="262d68" v="-4670"/>
+ <val o="263b83" v="-3694"/>
+ <val o="264986" v="-3491"/>
+ <val o="265795" v="-3582"/>
+ <val o="2665a6" v="-3683"/>
+ <val o="2673b5" v="-3608"/>
+ <val o="2681c6" v="-3681"/>
+ <val o="268fd5" v="-3850"/>
+ <val o="269de6" v="-3923"/>
+ <val o="26abf6" v="-3955"/>
+ <val o="26ba06" v="-4467"/>
+ <val o="26c817" v="-4257"/>
+ <val o="26d62b" v="-3915"/>
+ <val o="26e436" v="-3897"/>
+ <val o="26f247" v="-3531"/>
+ <val o="270057" v="-3798"/>
+ <val o="270e67" v="-3628"/>
+ <val o="271c77" v="-4540"/>
+ <val o="272a87" v="-5171"/>
+ <val o="273897" v="-5038"/>
+ <val o="2746a8" v="-5028"/>
+ <val o="2754b9" v="-5029"/>
+ <val o="2762c7" v="-3993"/>
+ <val o="2770d8" v="-3551"/>
+ <val o="277ee7" v="-3206"/>
+ </par>
+ <par memind="674601" h="3dc1a7e0">
+ <val o="0" v="22123:137:88:76:103:69:89:6047:6571:2134:6414:2223:2727.231:1435.675:5.979:0.067:0:4171:41039:29052:42104:12218:24721:13504:8975:11153:2990:8665:9759:11742"/>
+ </par>
+ <par memind="673801" h="3dc1a7e0">
+ <val o="0" v="0:0:0:0:0:0:0:2472:22505:25160:16425:30012:23514.229:11675.362:9.272:0.416:0:6491:3221:2867:4204:22822:3047:6263:15342:9785:32424:23346:21578:23508"/>
+ </par>
+ <par memind="673401" h="3dc1a7e0">
+ <val o="0" v="72898:191:188:176:178:174:181:10441:14079:1360:46667:74131:80996.13:50324.326:32.188:0.038:0:44027:200289:109216:52461:12951:75896:69196:104852:117036:96903:120714:124308:96207"/>
+ </par>
+ <par memind="673001" h="3dc1a7e0">
+ <val o="0" v="0:0:0:0:0:0:0:3476:3226:5597:4853:0:0:0:0.001:0.137:0:0:0:0:0:50735:59205:0:0:0:0:0:0:0"/>
+ </par>
+ <par memind="26274601" h="3dc1a7e0">
+ <val o="0" v="0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::0::6::13::20::27::32::34::41::48::54::61::68::75::82::89::96::103::110::110::111::116::119::123::129"/>
+ <val o="2a300" v="0::5::5::7::11::12::12::17::24::30::37::44::51::58::65::69::71::71::71::73::75::76::76::81::0::6::13::20::27::34::40::44::50::::51::51::51::51::51::51::51::51::51::51::54::60::63::69::0"/>
+ <val o="55410" v="6::13::20::27::34::38::44::46::46::47::52::58::65::66::66::67::69::69::70::76::83::89::96::0::5::12::19::25::30::31::35::37::37::37::37::38::44::45::45::45::45::45::45::48::51::56::62::0"/>
+ <val o="7f710" v="6::14::21::28::35::42::47::50::50::50::52::59::65::69::72::74::75::75::75::75::78::79::82::0::7::14::21::28::34::38::44::45::45::49::56::63::70::76::80::835::1675::2038::2039::2856::3158::3607::4431::0"/>
+ <val o="a9a10" v="629::797::1456::2382::2476::2477::2821::2821::2821::::2821::2821::2856::2865::2865::3049::3223::3267::3532::4304::5147::5147::5449::0::101::102::252::592::605::605::605::605::612::612::612::612::612::612::612::679::767::767::767::767::767::767::910::0::1158"/>
+ <val o="d4b20" v="2289::2701::3076::3076::3385::3904::3904::3904::3904::3904::3904::3904::3904::3904::3904::3911::4023::4599::5237::5494::5780::6072::0::622::622::622::622::622::716::819::819::819::819::819::819::870::870::870::870::870::870::870::870::870::870::1024::0::1127"/>
+ <val o="fee20" v="1954::2173::2377::2377::2377::2377::2377::2377::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2384::2400::2400::0::163::163::163::163::163::163::163::163::204::330::751::1400::1433::1433::1433::1435.1::1435.1::1435.1::1435.1::1435.1::1435.144::1435.375::1435.381::0::1.179"/>
+ <val o="129120" v="2.486::3.869::5.278::5.809::5.811::5.811::5.811::5.843::5.967::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.969::5.969::0::0::0::0::0::0::0::0::0::0::0::0.001::0.014::0.032::0.04::0.046::0.049::0.05::0.05::0.05::0.05::0.05::0.05::0.053::0::0.005"/>
+ <val o="153420" v="0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.009::0.009::0.009::0.009::0.009::0.009::0.014::0::0.004::0.02::0.031::0.042::0.044::0.044::0.044::0.044::0.044::0.044::0.044::0.047::0.05::0.051::0.054::0.054::0.054::0::0::0::0::175::1878::0::2303"/>
+ <val o="17d720" v="5016::7889::10825::12785::13428::14568::16281::17870::18757::19673::22314::25317::28017::30611::32571::::33078::33570::34865::36124::37670::39908::0::978::2540::4236::5992::6773::6818::6915::7643::8510::8618::::9354::10334::10857::11190::11387::11387::12818::15547::19011::21077::22610::25682::0::2682::5757::9094"/>
+ <val o="1a9640" v="12439::14810::16426::18172::20462::22851::24957::26912::29200::31789"/>
+ <val o="1c7460" v="8197::8264::8365::8365::8996::9996::10570::10570::10570::10807::0::388::776::1655::2374::2391::2391::2429::3332::3677::3768::3851::4294::4930::5847::6625::7852::9492::11328::13376::15620::17946::20170::22469::0::1979::4179::4817::5302::5612::5802::6075::6787::7172::7489::7668::7867::8184"/>
+ <val o="1f1760" v="8270::8270::8270::8270::8270::8279::8425::8766::9261::11379::0::967::2232::3224::3584::3708::3742::4192::4373::4379::4379::4379::4379::4379::4379::4468::4816::5111::5533::6393::6740::7394::7394::7988::0::1479::2407::2907::3341::3347::3347::3522::4521::4702::5104::5399::6511::6511"/>
+ <val o="21ba60" v="6511::6511::7554::8046::8046::8084::8781::9437::9437::10034::0::258::258::258::258::258::303::541::1097::1122::1122::1122::1122::1397::1429::2052::2638::2638::2638::2638::2638::2779::2779::2779::0::211::716::993::993::993::993::1058::1060::1060::1060::1060::1123::1640"/>
+ <val o="246b70" v="3280::3952::3962::3962::3962::4297::5586::6998::7956::0::492::1570::2683::3585::3615::3618::3659::3659::3659::3659::3973::6767::8644::8717::8718::8718::8718::8718::8718::8718::8898::8898::9205::0::502::1825::3722::5758::7237::8159::8226::8226::8226::8226::8226::8226::8226::8226"/>
+ <val o="270e70" v="8226::8240::8504::8980::9466::10308::10666::10666::10739"/>
+ </par>
+ <par memind="26273801" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::0"/>
+ <val o="a9a10" v="273::304::304::304::392::1467::1961::2735::4511::::12114::16337::18252::18452::19051::20724::21115::21611::21616::21616::21647::22460::22505::0::1428::1786::1821::1821::2100::3116::4606::5700::6263::7232::8321::9202::9706::10109::10567::11827::12356::14818::17416::20186::22628::24467::25160::0::16"/>
+ <val o="d4b20" v="16::16::18::761::2317::2345::3031::5010::7681::10719::13491::14079::14541::14788::15028::15551::16182::16182::16327::16351::16394::16424::0::1254::2521::3304::4214::6189::8542::8884::9714::10907::12447::13604::14407::14928::16855::18323::20016::22306::23952::25511::26700::27858::29512::30012::0::0"/>
+ <val o="fee20" v="14::14::16::848::2512::4114::5556::7070::7967::9424::10812::11722::12829::13950::15033::17095::19423::20670::21129::21828::22608::23444::0::1024::1508::1786::1985::2951::4900::6589::8053::8849::8929::8929::8929::9502::10380::11200::11669.43::11670.714::11671.501::11673.236::11674.324::11674.616::11674.887::11675.345::0::0"/>
+ <val o="129120" v="0::0::0::0::0.632::1.57::2.787::4.389::5.353::6.676::7.825::8.473::9.059::9.07::9.083::9.113::9.149::9.186::9.222::9.254::9.263::9.267::0::0.054::0.078::0.094::0.113::0.149::0.2::0.229::0.234::0.241::0.244::0.245::0.245::0.245::0.245::0.245::0.246::0.276::0.309::0.348::0.383::0.408::0.415::0.416::0::0.022"/>
+ <val o="153420" v="0.031::0.032::0.033::0.045::0.076::0.1::0.121::0.161::0.197::0.227::0.252::0.257::0.264::0.275::0.295::0.315::0.322::0.329::0.332::0.348::0.357::0.357::0::0::0::0::0::0::0.015::0.051::0.062::0.068::0.079::0.091::0.094::0.094::0.097::0.108::0.125::0.161::1425::3563::5087::6081::6491::6491::0::0"/>
+ <val o="17d720" v="0::0::0::0::3::4::17::17::17::17::83::83::83::83::83::::2815::3221::3221::3221::3221::3221::0::0::0::0::0::0::503::2124::2124::2135::2187::::2220::2220::2220::2220::2231::2857::2867::2867::2867::2867::2867::2867::0::0::0::0"/>
+ <val o="1a9640" v="0::0::0::0::5::5::5::5::5::5"/>
+ <val o="1c7460" v="14139::14218::14538::16467::16493::16493::17913::20388::22503::22822::0::242::242::242::242::473::1614::2783::2783::2785::3043::3046::3046::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::0::0::0::101::101::101::155::155::155::155::155::158::158::158"/>
+ <val o="1f1760" v="303::689::1267::3291::5362::5964::5964::6205::6263::6263::0::67::78::78::78::96::279::1257::2169::3382::5628::7692::9144::9800::11410::13193::13770::14500::14502::14526::14528::14693::15337::15342::0::0::128::128::128::631::1960::2834::2847::2994::3445::3445::3445::4010"/>
+ <val o="21ba60" v="5304::6802::7188::7304::7777::8119::8119::8238::9731::9785::0::3202::5137::5593::6304::8577::12322::12561::12561::13960::16533::20127::22841::22863::23106::23247::23247::24987::26402::27590::28075::29263::31438::32325::0::171::171::200::344::1476::2425::3387::4145::5875::9210::12291::15144::15144"/>
+ <val o="246b70" v="15144::15144::17267::21864::23232::23346::23346::23346::23346::0::86::86::86::86::188::709::1333::2511::4313::7593::10434::10434::10443::10622::10810::11293::12302::14859::17476::19565::19742::21035::21234::0::13::13::13::13::13::13::216::929::2058::3700::5698::8782::11698::14663"/>
+ <val o="270e70" v="17767::18546::19155::19155::19155::19155::20730::23016::23508"/>
+ </par>
+ <par memind="26273401" h="3dc1a7e0">
+ <val o="0" v="0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::0::8::16::24::32::40::48::56::65::73::81::89::97::105::114::122::131::138::145::152::160::167::175::183"/>
+ <val o="2a300" v="0::8::16::23::31::39::47::55::63::71::79::87::96::104::112::120::128::135::142::150::157::165::172::180::0::8::17::25::34::43::51::58::66::::79::85::92::98::105::111::117::124::131::138::145::153::160::168::0"/>
+ <val o="55410" v="8::16::25::33::41::49::56::64::70::77::84::91::98::105::111::118::125::132::139::147::154::162::170::0::7::16::24::32::40::48::55::63::69::76::82::89::96::103::109::116::122::128::135::143::150::158::166::0"/>
+ <val o="7f710" v="8::17::25::34::43::51::58::66::73::80::87::94::101::108::115::122::129::135::142::150::157::165::172::0::8::17::25::34::42::50::58::65::72::78::85::92::100::107::114::2595::7913::10294::10439::10439::10439::10441::10441::0"/>
+ <val o="a9a10" v="2::4::9::9::9::9::69::181::236::::327::461::720::1393::2215::3059::4593::6342::8041::9944::11561::12314::13166::0::47::47::47::47::47::47::47::47::48::59::87::127::134::135::142::182::537::769::1000::1156::1208::1230::1264::0::0"/>
+ <val o="d4b20" v="0::0::0::0::58::464::1214::2866::5195::7644::10189::13108::15902::18773::21557::24345::28271::32267::36012::39360::42352::44782::0::1215::1879::2581::3232::3730::4627::6845::9426::13213::17460::21812::26408::30878::35346::40061::44776::49145::53501::57575::61429::64968::68029::71154::0::2541"/>
+ <val o="fee20" v="4757::6749::8707::10446::12296::14817::18021::22192::24710::29209::33799::38000::42199::46375::50681::55062::59387::63686::67971::71883::75378::78274::0::1965::3785::5589::7408::9042::10735::13143::16254::20473::25210::29898::34989::39265::43547::47659::50298.816::50302.733::50306.729::50310.326::50313.783::50317.062::50320.016::50322.277::0::1.986"/>
+ <val o="129120" v="3.746::5.427::7.116::8.649::10.225::12.377::14.972::18.155::21.519::24.079::26.789::29.872::32.038::32.075::32.093::32.11::32.132::32.149::32.163::32.173::32.181::32.183::0::0::0::0::0::0::0::0::0::0.001::0.005::0.008::0.012::0.014::0.014::0.014::0.014::0.017::0.023::0.026::0.029::0.032::0.035::0.038::0::0"/>
+ <val o="153420" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.004::0.013::0.023::0.035::0.039::0.04::0.04::0::0::0::0::0::0::0::0::0.011::0.064::0.184::0.299::0.403::0.491::0.587::0.684::0.777::0.882::4649::11369::18384::25539::32098::38189::0::5631"/>
+ <val o="17d720" v="11134::16580::21819::26934::32449::39011::46164::57329::70535::83592::96112::107934::119836::131836::143932::::159972::167838::175759::182940::189261::195260::0::4361::8637::12844::17026::21292::26185::31514::37629::44147::50295::::62972::69142::75490::81871::88411::92634::95263::98136::101493::104338::106264::108086::0::1118::2125::3163"/>
+ <val o="1a9640" v="3972::4424::5117::6670::8682::11273::14036::16800::19585::21687"/>
+ <val o="1c7460" v="12951::12951::12951::12951::12951::12951::12951::12951::12951::12951::0::0::0::0::0::0::0::0::0::0::2097::5658::9307::12837::16437::20072::24855::31120::37813::44635::51509::58224::64519::70460::0::4912::9779::12468::14377::16196::18098::20357::22916::25572::28333::31048::33673::36268"/>
+ <val o="1f1760" v="38769::41197::43617::46222::49307::52694::56229::59586::62790::66147::0::2563::5010::7377::9547::11662::13970::16722::19820::23668::28455::34079::39799::45148::50589::56448::62674::69084::75584::81629::87007::92190::96664::100953::0::3686::6981::10109::13149::16039::19168::23164::28263::34238::40473::46590::52821::58868"/>
+ <val o="21ba60" v="64810::70628::77026::83160::89027::94673::100155::105383::109691::113559::0::1996::3876::5949::7945::9673::11583::15197::19355::23959::28689::33229::37981::42745::47470::52656::58228::63768::69353::74634::79872::84699::88966::93090::0::3272::6519::9646::12665::15529::18785::22767::27361::33026::39197::45634::52231::58688"/>
+ <val o="246b70" v="71623::77897::83661::88919::94509::100226::106004::111517::116497::0::3504::7147::10760::14341::17823::21561::25845::30381::35821::41529::48026::57310::64898::70924::77195::83135::89105::94900::100321::105698::111053::115727::120309::0::3610::7127::10778::14421::18015::21712::25564::29454::33598::37946::42100::46054::49824::53500"/>
+ <val o="270e70" v="57099::61385::66221::71352::76382::81368::85828::89677::93036"/>
+ </par>
+ <par memind="26273001" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::0"/>
+ <val o="a9a10" v="1070::1205::1242::1361::1873::2688::2888::2968::3013::::3093::3165::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::0::504::975::1420::1776::2305::2796::3212::4002::4254::4373::4494::4549::4753::4950::5087::5453::5453::5453::5453::5454::5473::5509::5581::0::581"/>
+ <val o="d4b20" v="1231::1927::2760::3902::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="fee20" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="129120" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.017::0.031::0.048::0.065::0.085::0.105::0.114::0.116::0.116::0.116::0.116::0.116::0.117::0.12::0.123::0.128::0.135::0.135::0.135::0.135::0.135::0.135::0.136::0::0.016"/>
+ <val o="153420" v="0.036::0.054::0.074::0.096::0.119::0.137::0.152::0.165::0.178::0.19::0.204::0.216::0.228::0.237::0.249::0.256::0.256::0.256::0.256::0.256::0.256::0.257::0::0.012::0.018::0.02::0.021::0.025::0.032::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0::0::0::0::0::0::0::0"/>
+ <val o="17d720" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1a9640" v="0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1c7460" v="9208::9490::12579::16633::20164::23882::28334::33713::39220::44909::0::6542::13180::19855::26594::33432::40280::46777::52524::57875::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1f1760" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="21ba60" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="246b70" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="270e70" v="0::0::0::0::0::0::0::0::0"/>
+ </par>
+ <par memind="1314601" h="3dc1a7e0">
+ <val o="0" v="270370"/>
+ </par>
+ <par memind="1313801" h="3dc1a7e0">
+ <val o="0" v="306693"/>
+ </par>
+ <par memind="1313401" h="3dc1a7e0">
+ <val o="0" v="1576111"/>
+ </par>
+ <par memind="1313001" h="3dc1a7e0">
+ <val o="0" v="127098"/>
+ </par>
+ <par memind="52514601" h="3dc1a7e0">
+ <val o="0" v="0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::22123::22129::22136::22143::22150::22156::22158::22166::22173::22180::22186::22193::22200::22207::22214::22221::22228::22235::22235::22236::22241::22244::22247::22254"/>
+ <val o="2a300" v="22261::22267::22267::22269::22273::22274::22274::22280::22287::22294::22301::22308::22315::22322::22329::22333::22335::22335::22335::22336::22338::22339::22339::22344::22351::22358::22365::22372::22379::22386::22391::22395::22402::::22404::22404::22404::22404::22404::22404::22404::22404::22404::22404::22407::22413::22416::22422::22429"/>
+ <val o="55410" v="22436::22443::22450::22457::22464::22468::22475::22477::22477::22478::22483::22489::22495::22497::22497::22498::22499::22499::22500::22507::22513::22520::22526::22533::22538::22545::22552::22559::22564::22564::22569::22571::22572::22572::22572::22573::22579::22580::22580::22580::22580::22580::22580::22583::22585::22590::22596::22603"/>
+ <val o="7f710" v="22610::22617::22624::22632::22639::22645::22650::22653::22653::22653::22655::22662::22669::22672::22675::22677::22678::22678::22678::22678::22682::22683::22686::22693::22701::22708::22715::22722::22728::22732::22738::22740::22740::22744::22751::22758::22765::22770::22775::23529::24370::24733::24734::25551::25853::26301::27126::28742"/>
+ <val o="a9a10" v="29372::29540::30199::31125::31218::31219::31564::31564::31564::::31564::31564::31599::31607::31607::31792::31965::32010::32274::33047::33890::33890::34193::35316::35417::35418::35569::35909::35921::35921::35921::35921::35928::35928::35928::35928::35928::35928::35928::35995::36083::36083::36083::36083::36083::36083::36226::37450::38609"/>
+ <val o="d4b20" v="39740::40151::40527::40527::40836::41356::41356::41356::41356::41356::41356::41356::41356::41356::41356::41363::41476::42051::42690::42946::43231::43524::43865::44488::44488::44488::44488::44488::44582::44685::44685::44685::44685::44685::44685::44736::44736::44736::44736::44736::44736::44736::44736::44736::44736::44890::46089::47216"/>
+ <val o="fee20" v="48043::48262::48466::48466::48466::48466::48466::48466::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48474::48491::48491::48816::48980::48980::48980::48980::48980::48980::48980::48980::49022::49147::49569::50218::50251::50251::50251::50252.91::50252.91::50252.91::50252.91::50252.91::50252.954::50253.185::50253.192::50253.487::50254.667"/>
+ <val o="129120" v="50255.973::50257.356::50258.765::50259.296::50259.299::50259.299::50259.299::50259.332::50259.455::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.457::50259.458::50259.458::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.469::50259.482::50259.5::50259.507::50259.513::50259.516::50259.517::50259.517::50259.517::50259.517::50259.517::50259.517::50259.521::50259.535::50259.54"/>
+ <val o="153420" v="50259.54::50259.54::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.546::50259.546::50259.546::50259.546::50259.547::50259.547::50259.552::50259.557::50259.561::50259.577::50259.588::50259.6::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.604::50259.608::50259.609::50259.612::50259.612::50259.612::50258::50258::50258::50258::50434::52137::54431::56734"/>
+ <val o="17d720" v="59447::62321::65257::67217::67860::69000::70713::72302::73189::74106::76746::79750::82449::85043::87003::::87510::88002::89297::90556::92102::94340::95470::96449::98011::99707::101463::102244::102289::102386::103115::103983::104091::::104826::105806::106330::106662::106859::106859::108290::111019::114483::116549::118083::121154::124524::127207::130282::133619"/>
+ <val o="1a9640" v="136963::139335::140951::142698::144988::147377::149483::151438::153726::156315"/>
+ <val o="1c7460" v="174829::174896::174996::174996::175627::176628::177201::177201::177201::177439::178849::179238::179626::180505::181224::181241::181241::181279::182183::182528::182619::182701::183144::183780::184697::185475::186702::188342::190179::192226::194470::196796::199020::201319::203571::205550::207751::208389::208873::209184::209373::209646::210358::210744::211061::211240::211439::211756"/>
+ <val o="1f1760" v="211843::211843::211843::211843::211843::211852::211998::212339::212833::214951::217077::218045::219309::220302::220662::220786::220819::221269::221451::221458::221458::221458::221458::221458::221458::221547::221895::222189::222611::223471::223818::224472::224473::225066::226054::227533::228461::228962::229396::229401::229401::229577::230576::230758::231159::231454::232566::232566"/>
+ <val o="21ba60" v="232566::232566::233609::234101::234101::234139::234836::235492::235492::236089::237208::237467::237467::237467::237467::237467::237511::237749::238306::238331::238331::238331::238331::238606::238637::239260::239846::239846::239846::239846::239847::239988::239988::239988::240200::240411::240916::241193::241194::241194::241194::241260::241262::241262::241262::241262::241325::241842"/>
+ <val o="246b70" v="243482::244154::244164::244164::244164::244499::245788::247200::248157::248866::249358::250436::251549::252452::252482::252484::252526::252526::252526::252526::252840::255634::257511::257584::257585::257585::257585::257585::257585::257585::257766::257766::258073::258628::259130::260454::262350::264387::265865::266787::266854::266854::266854::266854::266854::266854::266854::266854"/>
+ <val o="270e70" v="266854::266868::267132::267609::268095::268936::269294::269294::269367"/>
+ </par>
+ <par memind="52513801" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::2472"/>
+ <val o="a9a10" v="2745::2776::2776::2776::2864::3939::4434::5207::6983::::14587::18809::20724::20924::21523::23196::23587::24084::24088::24088::24119::24933::24978::24978::26406::26764::26799::26799::27079::28094::29584::30678::31242::32211::33301::34181::34685::35088::35546::36806::37336::39798::42396::45166::47608::49447::50139::50139::50155"/>
+ <val o="d4b20" v="50155::50156::50158::50901::52457::52486::53171::55151::57821::60860::63632::64220::64682::64929::65169::65692::66324::66324::66469::66492::66535::66565::66565::67820::69087::69869::70780::72755::75107::75449::76279::77473::79013::80171::80973::81494::83421::84889::86582::88872::90518::92077::93266::94424::96079::96579::96579::96579"/>
+ <val o="fee20" v="96594::96594::96596::97428::99092::100694::102136::103651::104547::106004::107392::108302::109410::110530::111613::113676::116005::117251::117711::118409::119188::120024::120093::121118::121602::121880::122079::123044::124994::126683::128148::128945::129025::129025::129025::129597::130475::131295::131764.303::131765.588::131766.375::131768.11::131769.198::131769.49::131769.761::131770.219::131770.236::131770.236"/>
+ <val o="129120" v="131770.236::131770.236::131770.236::131770.236::131770.868::131771.806::131773.023::131774.625::131775.589::131776.912::131778.062::131778.709::131779.295::131779.306::131779.319::131779.349::131779.386::131779.423::131779.458::131779.49::131779.499::131779.503::131779.509::131779.564::131779.587::131779.604::131779.623::131779.659::131779.709::131779.738::131779.744::131779.752::131779.755::131779.755::131779.755::131779.755::131779.755::131779.755::131779.756::131779.786::131779.819::131779.858::131779.893::131779.918::131779.926::131779.926::131779.926::131779.949"/>
+ <val o="153420" v="131779.958::131779.959::131779.96::131779.972::131780.003::131780.027::131780.049::131780.089::131780.125::131780.155::131780.179::131780.184::131780.191::131780.202::131780.222::131780.243::131780.251::131780.258::131780.261::131780.277::131780.285::131780.285::131780.288::131780.288::131780.288::131780.288::131780.288::131780.289::131780.303::131780.34::131780.35::131780.356::131780.368::131780.381::131780.384::131780.384::131780.386::131780.398::131780.415::131780.451::133205::135343::136866::137861::138272::138272::138272::138272"/>
+ <val o="17d720" v="138272::138272::138272::138272::138275::138277::138290::138290::138290::138290::138355::138355::138355::138355::138355::::141088::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141997::143618::143618::143629::143681::::143714::143714::143714::143714::143725::144351::144362::144362::144362::144362::144362::144362::144362::144362::144362::144362"/>
+ <val o="1a9640" v="144362::144362::144362::144362::144368::144368::144368::144368::144368::144368"/>
+ <val o="1c7460" v="162707::162786::163107::165035::165062::165062::166481::168956::171072::171391::171391::171634::171634::171634::171634::171865::173006::174175::174175::174177::174435::174438::174438::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174540::174540::174540::174594::174594::174594::174594::174594::174598::174598::174598"/>
+ <val o="1f1760" v="174742::175129::175706::177731::179803::180405::180405::180646::180704::180704::180704::180771::180782::180782::180782::180801::180983::181961::182873::184086::186332::188396::189848::190504::192114::193897::194474::195204::195206::195230::195232::195397::196041::196046::196046::196046::196175::196175::196175::196678::198007::198881::198895::199043::199494::199494::199494::200058"/>
+ <val o="21ba60" v="201353::202851::203237::203353::203825::204167::204167::204286::205778::205833::205833::209036::210970::211426::212138::214410::218156::218395::218395::219795::222368::225963::228676::228698::228941::229082::229082::230822::232237::233425::233910::235098::237273::238160::238259::238431::238431::238460::238604::239735::240685::241648::242406::244137::247471::250551::253404::253404"/>
+ <val o="246b70" v="253404::253404::255527::260124::261492::261606::261606::261606::261606::261606::261692::261692::261692::261692::261794::262315::262939::264118::265921::269200::272041::272041::272049::272229::272417::272900::273909::276466::279084::281173::281349::282642::282841::283185::283198::283198::283198::283198::283198::283198::283402::284114::285244::286886::288884::291968::294884::297849"/>
+ <val o="270e70" v="300954::301733::302341::302341::302341::302341::303915::306201::306693"/>
+ </par>
+ <par memind="52513401" h="3dc1a7e0">
+ <val o="0" v="0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::72898::72906::72914::72922::72931::72938::72946::72955::72963::72972::72979::72987::72995::73004::73012::73021::73029::73037::73045::73052::73060::73067::73074::73083"/>
+ <val o="2a300" v="73092::73100::73108::73116::73124::73131::73139::73147::73155::73164::73172::73180::73189::73197::73205::73213::73221::73228::73235::73242::73250::73258::73265::73273::73281::73290::73298::73307::73316::73324::73333::73341::73349::::73362::73368::73374::73381::73387::73394::73400::73407::73414::73421::73428::73436::73443::73451::73459"/>
+ <val o="55410" v="73467::73476::73484::73492::73501::73508::73516::73523::73529::73536::73543::73550::73557::73564::73571::73578::73585::73592::73599::73607::73614::73622::73630::73639::73647::73655::73663::73672::73680::73687::73694::73702::73709::73715::73721::73728::73735::73742::73748::73755::73762::73769::73776::73783::73791::73798::73806::73814"/>
+ <val o="7f710" v="73823::73831::73840::73849::73858::73866::73874::73881::73888::73895::73902::73909::73917::73924::73931::73938::73945::73952::73959::73966::73973::73980::73988::73996::74005::74014::74022::74031::74039::74047::74055::74062::74069::74076::74084::74091::74098::74105::74112::76593::81912::84293::84438::84438::84438::84439::84440::84440"/>
+ <val o="a9a10" v="84442::84445::84450::84450::84450::84450::84510::84622::84677::::84768::84902::85161::85834::86656::87500::89034::90783::92482::94386::96003::96756::97608::98520::98568::98568::98568::98568::98568::98568::98569::98569::98570::98581::98609::98649::98656::98657::98664::98704::99059::99291::99522::99679::99730::99752::99786::99882::99882"/>
+ <val o="d4b20" v="99882::99882::99882::99882::99940::100346::101096::102749::105078::107527::110072::112991::115786::118656::121441::124228::128154::132149::135895::139243::142235::144665::146550::147766::148430::149132::149783::150281::151178::153396::155977::159764::164011::168363::172959::177429::181897::186612::191328::195697::200054::204127::207981::211520::214581::217705::220682::223224"/>
+ <val o="fee20" v="225440::227431::229389::231128::232979::235501::238705::242877::245395::249894::254484::258685::262884::267059::271365::275747::280072::284371::288656::292567::296062::298958::301678::303643::305464::307268::309087::310721::312414::314823::317933::322153::326889::331577::336668::340944::345227::349338::151978.697::151982.614::151986.61::151990.207::151993.665::151996.943::151999.897::152002.158::152004.207::152006.194"/>
+ <val o="129120" v="152007.954::152009.635::152011.324::152012.857::152014.433::152016.586::152019.181::152022.365::152025.728::152028.288::152030.998::152034.081::152036.247::152036.284::152036.302::152036.319::152036.341::152036.359::152036.372::152036.383::152036.39::152036.393::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.399::152036.404::152036.407::152036.412::152036.414::152036.414::152036.414::152036.414::152036.417::152036.422::152036.425::152036.428::152036.432::152036.435::152036.437::152036.437::152036.437"/>
+ <val o="153420" v="152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.441::152036.45::152036.46::152036.472::152036.476::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.489::152036.543::152036.663::152036.778::152036.883::152036.971::152037.066::152037.164::152037.257::152037.361::356685::363405::370420::377575::384134::390225::396064::401696"/>
+ <val o="17d720" v="407198::412644::417883::422998::428513::435075::442229::453395::466601::479658::492177::504000::515901::527901::539997::::556036::563903::571823::579005::585326::591325::596354::600715::604992::609199::613381::617646::622539::627868::633983::640502::646650::::659328::665498::671845::678227::684766::688990::691619::694492::697849::700694::702620::704442::705572::706691::707697::708736"/>
+ <val o="1a9640" v="709545::709997::710690::712243::714255::716847::719609::722373::725158::727261"/>
+ <val o="1c7460" v="770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::773086::776647::780296::783826::787426::791061::795844::802109::808801::815624::822498::829213::835508::841449::846886::851798::856665::859354::861263::863083::864985::867245::869803::872460::875221::877937::880561::883156"/>
+ <val o="1f1760" v="885657::888085::890505::893110::896194::899581::903116::906473::909677::913034::916082::918646::921093::923460::925630::927744::930053::932806::935904::939753::944540::950163::955884::961233::966673::972533::978758::985168::991668::997713::1003091::1008274::1012749::1017038::1020937::1024624::1027919::1031047::1034087::1036976::1040106::1044102::1049201::1055177::1061411::1067528::1073759::1079806"/>
+ <val o="21ba60" v="1085748::1091566::1097964::1104098::1109965::1115611::1121093::1126321::1130630::1134497::1137973::1139970::1141849::1143923::1145918::1147647::1149557::1153171::1157329::1161934::1166664::1171204::1175957::1180721::1185446::1190632::1196204::1201743::1207328::1212608::1217847::1222674::1226942::1231066::1234878::1238151::1241398::1244525::1247544::1250408::1253663::1257645::1262239::1267905::1274075::1280512::1287109::1293566"/>
+ <val o="246b70" v="1306501::1312775::1318539::1323798::1329387::1335105::1340883::1346396::1351376::1355594::1359099::1362742::1366355::1369936::1373418::1377156::1381440::1385976::1391416::1397124::1403622::1412905::1420494::1426519::1432791::1438731::1444700::1450495::1455916::1461293::1466648::1471323::1475904::1479903::1483514::1487030::1490682::1494324::1497918::1501615::1505468::1509358::1513503::1517850::1522004::1525957::1529728::1533403"/>
+ <val o="270e70" v="1537003::1541289::1546124::1551256::1556286::1561272::1565731::1569581::1572940"/>
+ </par>
+ <par memind="52513001" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::3476"/>
+ <val o="a9a10" v="4546::4682::4719::4838::5350::6165::6365::6445::6490::::6571::6643::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::7208::7679::8124::8480::9010::9501::9918::10708::10960::11079::11200::11255::11459::11656::11793::12159::12159::12159::12159::12160::12179::12215::12287::12302::12884"/>
+ <val o="d4b20" v="13533::14230::15062::16204::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="fee20" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492"/>
+ <val o="129120" v="17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.493::17157.511::17157.525::17157.542::17157.558::17157.579::17157.599::17157.608::17157.611::17157.612::17157.612::17157.612::17157.612::17157.613::17157.616::17157.618::17157.623::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.632::17157.649"/>
+ <val o="153420" v="17157.669::17157.686::17157.706::17157.728::17157.752::17157.771::17157.786::17157.799::17157.812::17157.824::17157.838::17157.85::17157.861::17157.871::17157.883::17157.89::17157.89::17157.89::17157.89::17157.89::17157.89::17157.891::17157.899::17157.911::17157.918::17157.92::17157.921::17157.925::17157.932::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="17d720" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="1a9640" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="1c7460" v="26366::26648::29737::33790::37320::41038::45491::50870::56378::62066::67892::74435::81073::87748::94487::101325::108173::114671::120417::125768::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="1f1760" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="21ba60" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="246b70" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="270e70" v="127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ </par>
+ <par memind="34601" h="3dc1a7e0">
+ <val o="0" v="6094564::6095869::6097433::6099046::6100630::6101960::6103137::6104826::6106487::6108338::6110057::6112087::6114108::6116017::6116635::6116640::6116645::6116648::6116649::6116654::6116661::6116667::6116674::6116681::6116688::6116694::6116701::6116708::6116715::6116721::6116723::6116730::6116738::6116745::6116751::6116757::6116764::6116771::6116779::6116786::6116793::6116799::6116800::6116800::6116805::6116808::6116812::6116819"/>
+ <val o="2a300" v="6116826::6116832::6116832::6116834::6116838::6116839::6116839::6116845::6116852::6116859::6116866::6116873::6116880::6116887::6116893::6116898::6116899::6116899::6116899::6116901::6116902::6116904::6116905::6116910::6116917::6116924::6116931::6116938::6116945::6116952::6116957::6116961::6116968::::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116972::6116978::6116980::6116987::6116994"/>
+ <val o="55410" v="6117001::6117008::6117015::6117022::6117029::6117033::6117039::6117042::6117042::6117044::6117049::6117054::6117061::6117062::6117062::6117063::6117065::6117065::6117066::6117072::6117078::6117084::6117091::6117098::6117103::6117110::6117117::6117124::6117129::6117129::6117134::6117136::6117137::6117137::6117137::6117138::6117144::6117145::6117145::6117145::6117145::6117145::6117145::6117148::6117150::6117154::6117160::6117167"/>
+ <val o="7f710" v="6117174::6117181::6117189::6117196::6117203::6117210::6117216::6117219::6117220::6117220::6117222::6117228::6117235::6117239::6117241::6117244::6117244::6117244::6117244::6117244::6117247::6117248::6117252::6117259::6117266::6117273::6117280::6117287::6117293::6117297::6117303::6117304::6117305::6117309::6117316::6117323::6117330::6117336::6117340::6118095::6118936::6119299::6119300::6120117::6120419::6120867::6121692::6123308"/>
+ <val o="a9a10" v="6123938::6124106::6124765::6125691::6125784::6125785::6126129::6126129::6126129::::6126129::6126129::6126164::6126173::6126173::6126358::6126531::6126576::6126840::6127612::6128455::6128455::6128757::6129880::6129981::6129983::6130133::6130473::6130485::6130485::6130485::6130485::6130493::6130493::6130493::6130493::6130493::6130493::6130493::6130561::6130649::6130649::6130649::6130649::6130649::6130649::6130792::6132016::6133175"/>
+ <val o="d4b20" v="6134306::6134717::6135093::6135093::6135402::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135929::6136041::6136617::6137256::6137512::6137797::6138089::6138431::6139053::6139053::6139053::6139053::6139053::6139147::6139251::6139251::6139251::6139251::6139251::6139251::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139456::6140655::6141782"/>
+ <val o="fee20" v="6142609::6142828::6143032::6143032::6143032::6143032::6143032::6143032::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143039::6143056::6143056::6143382::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143587::6143713::6144135::6144783::6144816::6144816::6144816::144818.2::144818.2::144818.2::144818.2::144818.2::144818.243::144818.474::144818.48::144818.775::144819.955"/>
+ <val o="129120" v="144821.261::144822.644::144824.053::144824.584::144824.587::144824.587::144824.587::144824.62::144824.744::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.756::144824.756::144824.756::144824.756::144824.757::144824.77::144824.788::144824.796::144824.802::144824.805::144824.806::144824.806::144824.806::144824.806::144824.806::144824.806::144824.809::144824.823::144824.828"/>
+ <val o="153420" v="144824.828::144824.828::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.834::144824.834::144824.834::144824.834::144824.835::144824.835::144824.84::144824.845::144824.849::144824.865::144824.876::144824.888::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.892::144824.896::144824.897::144824.9::144824.9::144824.9::6144824::6144824::6144824::6144824::6145000::6146702::6148995::6151298"/>
+ <val o="17d720" v="6154011::6156885::6159821::6161781::6162424::6163565::6165278::6166868::6167755::6168671::6171312::6174315::6177014::6179609::6181568::::6182076::6182567::6183863::6185122::6186668::6188906::6190037::6191016::6192577::6194274::6196029::6196810::6196855::6196952::6197681::6198548::6198657::::6199392::6200372::6200895::6201228::6201425::6201425::6202856::6205585::6209048::6211115::6212648::6215720::6219090::6221773::6224848::6228185"/>
+ <val o="1a9640" v="6231530::6233901::6235517::6237264::6239554::6241943::6244049::6246003::6248291::6250880"/>
+ <val o="1c7460" v="6269393::6269460::6269561::6269561::6270193::6271193::6271766::6271766::6271766::6272003::6273414::6273802::6274190::6275070::6275788::6275805::6275805::6275844::6276747::6277093::6277184::6277267::6277710::6278346::6279262::6280041::6281268::6282908::6284744::6286792::6289036::6291362::6293586::6295884::6298136::6300115::6302316::6302954::6303439::6303749::6303938::6304212::6304924::6305309::6305626::6305804::6306004::6306321"/>
+ <val o="1f1760" v="6306407::6306407::6306407::6306407::6306407::6306417::6306562::6306904::6307399::6309517::6311643::6312611::6313875::6314868::6315228::6315352::6315385::6315835::6316016::6316023::6316023::6316023::6316023::6316023::6316023::6316113::6316460::6316755::6317177::6318036::6318383::6319038::6319038::6319632::6320620::6322099::6323027::6323528::6323962::6323967::6323967::6324143::6325141::6325322::6325724::6326020::6327132::6327132"/>
+ <val o="21ba60" v="6327132::6327132::6328174::6328667::6328667::6328705::6329402::6330058::6330058::6330655::6331774::6332033::6332033::6332033::6332033::6332033::6332078::6332316::6332872::6332897::6332897::6332897::6332897::6333173::6333204::6333827::6334413::6334413::6334413::6334413::6334413::6334554::6334554::6334554::6334765::6334977::6335481::6335759::6335759::6335759::6335759::6335824::6335826::6335826::6335826::6335826::6335889::6336407"/>
+ <val o="246b70" v="6338047::6338719::6338729::6338729::6338729::6339065::6340354::6341766::6342723::6343432::6343924::6345002::6346115::6347018::6347048::6347050::6347091::6347091::6347091::6347091::6347406::6350200::6352077::6352150::6352150::6352150::6352150::6352150::6352150::6352150::6352331::6352331::6352638::6353193::6353695::6355019::6356915::6358952::6360430::6361352::6361420::6361420::6361420::6361420::6361420::6361420::6361420::6361420"/>
+ <val o="270e70" v="6361420::6361434::6361698::6362174::6362660::6363502::6363860::6363860::6363933"/>
+ </par>
+ <par memind="33801" h="3dc1a7e0">
+ <val o="0" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="2a300" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="55410" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="7f710" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88180102::88181176::88181859::88181861::88181894::88181896::88181896::88181896"/>
+ <val o="a9a10" v="88182169::88182200::88182200::88182200::88182288::88183363::88183857::88184631::88186407::::88194010::88198233::88200148::88200348::88200947::88202620::88203011::88203507::88203512::88203512::88203543::88204356::88204401::88204401::88205830::88206188::88206222::88206222::88206502::88207517::88209008::88210102::88210666::88211635::88212724::88213604::88214108::88214512::88214969::88216229::88216759::88219221::88221818::88224589::88227031::88228870::88229563::88229563::88229580"/>
+ <val o="d4b20" v="88229580::88229580::88229582::88230325::88231881::88231910::88232595::88234574::88237245::88240283::88243056::88243643::88244105::88244352::88244593::88245115::88245746::88245746::88245891::88245915::88245959::88245988::88245989::88247244::88248510::88249293::88250203::88252178::88254531::88254874::88255704::88256898::88258438::88259595::88260398::88260919::88262845::88264314::88266006::88268297::88269942::88271502::88272690::88273849::88275503::88276003::88276003::88276003"/>
+ <val o="fee20" v="88276017::88276017::88276019::88276851::88278515::88280118::88281560::88283074::88283971::88285428::88286815::88287726::88288833::88289953::88291037::88293099::88295427::88296674::88297133::88297832::88298612::88299447::88299517::88300541::88301025::88301304::88301503::88302468::88304417::88306106::88307571::88308368::88308448::88308448::88308448::88309021::88309899::88310719::111188.016::111189.3::111190.088::111191.823::111192.91::111193.202::111193.473::111193.931::111193.948::111193.948"/>
+ <val o="129120" v="111193.948::111193.948::111193.948::111193.948::111194.58::111195.519::111196.735::111198.338::111199.302::111200.625::111201.775::111202.422::111203.008::111203.02::111203.032::111203.062::111203.098::111203.135::111203.171::111203.203::111203.212::111203.216::111203.221::111203.276::111203.299::111203.316::111203.335::111203.371::111203.422::111203.452::111203.457::111203.464::111203.468::111203.468::111203.468::111203.468::111203.468::111203.468::111203.469::111203.5::111203.532::111203.571::111203.606::111203.632::111203.639::111203.639::111203.639::111203.661"/>
+ <val o="153420" v="111203.671::111203.671::111203.672::111203.684::111203.715::111203.739::111203.761::111203.801::111203.837::111203.867::111203.891::111203.897::111203.904::111203.915::111203.935::111203.955::111203.962::111203.969::111203.972::111203.988::111203.997::111203.997::111204::111204.001::111204.001::111204.001::111204.001::111204.001::111204.016::111204.052::111204.063::111204.07::111204.081::111204.093::111204.097::111204.097::111204.099::111204.11::111204.128::111204.164::88312628::88314767::88316290::88317284::88317694::88317694::88317694::88317694"/>
+ <val o="17d720" v="88317694::88317694::88317694::88317694::88317698::88317700::88317713::88317713::88317713::88317713::88317778::88317778::88317778::88317778::88317778::::88320511::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88321420::88323042::88323042::88323053::88323105::::88323137::88323137::88323137::88323137::88323148::88323775::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785"/>
+ <val o="1a9640" v="88323785::88323785::88323785::88323785::88323790::88323790::88323790::88323790::88323790::88323790"/>
+ <val o="1c7460" v="88342130::88342209::88342529::88344458::88344485::88344485::88345905::88348379::88350494::88350813::88350813::88351056::88351056::88351056::88351056::88351287::88352428::88353598::88353598::88353601::88353859::88353862::88353862::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353965::88353965::88353965::88354018::88354018::88354018::88354018::88354018::88354021::88354021::88354021"/>
+ <val o="1f1760" v="88354166::88354552::88355130::88357154::88359226::88359828::88359828::88360068::88360126::88360126::88360126::88360194::88360205::88360205::88360205::88360223::88360406::88361385::88362297::88363511::88365757::88367821::88369273::88369929::88371538::88373322::88373899::88374629::88374631::88374655::88374657::88374822::88375466::88375471::88375471::88375471::88375599::88375599::88375599::88376102::88377432::88378306::88378319::88378467::88378917::88378917::88378918::88379482"/>
+ <val o="21ba60" v="88380777::88382275::88382661::88382777::88383250::88383592::88383592::88383711::88385203::88385257::88385257::88388459::88390394::88390850::88391561::88393834::88397579::88397819::88397819::88399218::88401792::88405386::88408100::88408122::88408365::88408505::88408505::88410246::88411660::88412849::88413333::88414521::88416696::88417583::88417683::88417854::88417854::88417883::88418027::88419159::88420108::88421071::88421828::88423559::88426894::88429975::88432828::88432828"/>
+ <val o="246b70" v="88432828::88432828::88434951::88439548::88440916::88441030::88441030::88441030::88441030::88441030::88441116::88441116::88441116::88441116::88441218::88441739::88442363::88443542::88445344::88448624::88451464::88451464::88451473::88451652::88451840::88452323::88453332::88455889::88458507::88460595::88460772::88462065::88462264::88462608::88462622::88462622::88462622::88462622::88462622::88462622::88462826::88463538::88464667::88466310::88468309::88471393::88474308::88477274"/>
+ <val o="270e70" v="88480378::88481157::88481766::88481766::88481766::88481766::88483340::88485626::88486118"/>
+ </par>
+ <par memind="33401" h="3dc1a7e0">
+ <val o="0" v="9437795::9441972::9446144::9450217::9454261::9458184::9462346::9467434::9473186::9480126::9487404::9494779::9501916::9508615::9510621::9510628::9510635::9510642::9510649::9510656::9510663::9510671::9510678::9510687::9510695::9510703::9510712::9510720::9510728::9510736::9510743::9510751::9510760::9510768::9510776::9510784::9510792::9510800::9510809::9510817::9510826::9510833::9510840::9510847::9510855::9510863::9510871::9510879"/>
+ <val o="2a300" v="9510888::9510896::9510904::9510912::9510920::9510928::9510935::9510944::9510952::9510960::9510968::9510976::9510984::9510993::9511001::9511009::9511016::9511023::9511030::9511038::9511045::9511053::9511061::9511069::9511078::9511086::9511095::9511103::9511112::9511121::9511129::9511137::9511144::::9511158::9511165::9511171::9511178::9511184::9511190::9511197::9511203::9511209::9511216::9511223::9511231::9511239::9511247::9511255"/>
+ <val o="55410" v="9511264::9511272::9511280::9511289::9511297::9511305::9511313::9511320::9511327::9511333::9511340::9511347::9511354::9511361::9511368::9511375::9511382::9511389::9511397::9511404::9511412::9511419::9511427::9511435::9511443::9511451::9511460::9511468::9511476::9511484::9511492::9511500::9511506::9511513::9511519::9511526::9511533::9511539::9511546::9511553::9511559::9511565::9511572::9511580::9511587::9511595::9511603::9511611"/>
+ <val o="7f710" v="9511619::9511628::9511637::9511646::9511654::9511662::9511670::9511677::9511684::9511691::9511698::9511705::9511713::9511720::9511727::9511734::9511740::9511747::9511754::9511761::9511769::9511777::9511785::9511794::9511803::9511811::9511820::9511828::9511836::9511844::9511852::9511859::9511866::9511873::9511880::9511888::9511895::9511902::9511909::9514390::9519709::9522089::9522234::9522234::9522234::9522235::9522235::9522235"/>
+ <val o="a9a10" v="9522237::9522240::9522245::9522245::9522245::9522245::9522305::9522417::9522472::::9522564::9522698::9522957::9523630::9524451::9525296::9526830::9528579::9530279::9532182::9533799::9534552::9535404::9536317::9536364::9536364::9536364::9536364::9536364::9536364::9536365::9536365::9536366::9536378::9536405::9536445::9536452::9536454::9536460::9536501::9536855::9537087::9537318::9537474::9537525::9537548::9537581::9537677::9537678"/>
+ <val o="d4b20" v="9537678::9537678::9537678::9537678::9537736::9538143::9538893::9540546::9542875::9545324::9547869::9550788::9553582::9556453::9559237::9562025::9565951::9569947::9573692::9577040::9580032::9582462::9584347::9585562::9586226::9586928::9587579::9588077::9588974::9591192::9593773::9597560::9601808::9606160::9610756::9615226::9619694::9624409::9629124::9633493::9637849::9641922::9645776::9649316::9652378::9655502::9658479::9661021"/>
+ <val o="fee20" v="9663237::9665228::9667187::9668925::9670776::9673297::9676502::9680673::9683191::9687690::9692279::9696481::9700679::9704855::9709161::9713542::9717867::9722167::9726451::9730363::9733859::9736754::9739475::9741440::9743260::9745064::9746883::9748517::9750210::9752619::9755730::9759949::9764686::9769374::9774465::9778741::9783023::9787135::89775.123::89779.04::89783.036::89786.633::89790.091::89793.369::89796.324::89798.585::89800.635::89802.621"/>
+ <val o="129120" v="89804.381::89806.063::89807.752::89809.284::89810.86::89813.012::89815.607::89818.79::89822.154::89824.714::89827.425::89830.508::89832.673::89832.71::89832.728::89832.745::89832.767::89832.785::89832.798::89832.809::89832.817::89832.82::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.826::89832.831::89832.834::89832.838::89832.84::89832.84::89832.84::89832.84::89832.843::89832.848::89832.851::89832.854::89832.858::89832.861::89832.864::89832.864::89832.864"/>
+ <val o="153420" v="89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.868::89832.877::89832.887::89832.899::89832.903::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.916::89832.97::89833.09::89833.204::89833.309::89833.397::89833.492::89833.59::89833.683::89833.788::9794482::9801201::9808217::9815372::9821930::9828022::9833861::9839493"/>
+ <val o="17d720" v="9844996::9850441::9855681::9860795::9866311::9872873::9880027::9891193::9904398::9917454::9929974::9941796::9953698::9965698::9977794::::9993834::10001701::10009621::10016803::10023124::10029123::10034151::10038513::10042789::10046996::10051178::10055443::10060336::10065665::10071780::10078299::10084446::::10097123::10103293::10109641::10116023::10122562::10126785::10129414::10132288::10135645::10138489::10140416::10142238::10143368::10144487::10145494::10146532"/>
+ <val o="1a9640" v="10147341::10147793::10148486::10150039::10152051::10154643::10157406::10160170::10162955::10165058"/>
+ <val o="1c7460" v="10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10210882::10214444::10218093::10221623::10225223::10228858::10233641::10239906::10246598::10253420::10260295::10267010::10273305::10279245::10284682::10289594::10294461::10297150::10299060::10300879::10302781::10305041::10307600::10310256::10313017::10315732::10318357::10320952"/>
+ <val o="1f1760" v="10323453::10325881::10328301::10330906::10333991::10337378::10340913::10344270::10347474::10350831::10353880::10356443::10358890::10361257::10363427::10365542::10367850::10370602::10373700::10377548::10382335::10387959::10393679::10399028::10404469::10410328::10416554::10422964::10429464::10435510::10440887::10446070::10450544::10454833::10458732::10462419::10465714::10468842::10471882::10474772::10477901::10481897::10486997::10492973::10499207::10505324::10511555::10517602"/>
+ <val o="21ba60" v="10523544::10529362::10535760::10541894::10547762::10553407::10558890::10564118::10568426::10572294::10575771::10577767::10579647::10581720::10583716::10585444::10587354::10590968::10595126::10599731::10604460::10609000::10613753::10618516::10623241::10628428::10633999::10639539::10645125::10650405::10655643::10660471::10664738::10668862::10672675::10675947::10679195::10682322::10685340::10688204::10691460::10695443::10700037::10705702::10711873::10718309::10724907::10731364"/>
+ <val o="246b70" v="10744298::10750573::10756336::10761594::10767184::10772901::10778679::10784193::10789173::10793391::10796895::10800538::10804151::10807732::10811214::10814952::10819236::10823772::10829212::10834920::10841418::10850701::10858289::10864315::10870586::10876526::10882496::10888291::10893713::10899090::10904444::10909119::10913700::10917699::10921310::10924826::10928478::10932121::10935715::10939412::10943265::10947154::10951299::10955647::10959802::10963755::10967526::10971201"/>
+ <val o="270e70" v="10974801::10979086::10983922::10989053::10994083::10999069::11003529::11007379::11010738"/>
+ </par>
+ <par memind="33001" h="3dc1a7e0">
+ <val o="0" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="2a300" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="55410" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="7f710" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612587::38613097::38613585::38614490::38614906::38615380::38616053"/>
+ <val o="a9a10" v="38617123::38617258::38617296::38617414::38617926::38618741::38618942::38619021::38619066::::38619147::38619219::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619786::38620257::38620702::38621058::38621587::38622078::38622494::38623284::38623536::38623655::38623776::38623831::38624035::38624232::38624369::38624735::38624735::38624735::38624735::38624737::38624755::38624791::38624863::38624879::38625460"/>
+ <val o="d4b20" v="38626110::38626807::38627639::38628781::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732"/>
+ <val o="fee20" v="38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398"/>
+ <val o="129120" v="229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.399::229734.417::229734.431::229734.448::229734.465::229734.485::229734.505::229734.514::229734.517::229734.517::229734.517::229734.517::229734.517::229734.518::229734.521::229734.523::229734.528::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.537::229734.554"/>
+ </par>
+ </device>
+ </select>
+ </data>
+</electroxml>
diff --git a/result/att4.rde b/result/att4.rde
new file mode 100644
index 0000000..746643e
--- /dev/null
+++ b/result/att4.rde
@@ -0,0 +1,27785 @@
+0 8 #comment 0 1 edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC)
+0 1 electroxml 0 0
+1 14 #text 0 1
+
+1 1 data 0 0
+2 14 #text 0 1
+
+2 1 select 0 0
+3 14 #text 0 1
+
+3 1 device 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+3 15 device 0 0
+3 14 #text 0 1
+
+2 15 select 0 0
+2 14 #text 0 1
+
+1 15 data 0 0
+1 14 #text 0 1
+
+0 15 electroxml 0 0
diff --git a/result/att4.rdr b/result/att4.rdr
new file mode 100644
index 0000000..746643e
--- /dev/null
+++ b/result/att4.rdr
@@ -0,0 +1,27785 @@
+0 8 #comment 0 1 edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC)
+0 1 electroxml 0 0
+1 14 #text 0 1
+
+1 1 data 0 0
+2 14 #text 0 1
+
+2 1 select 0 0
+3 14 #text 0 1
+
+3 1 device 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+4 1 par 0 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+5 1 val 1 0
+5 14 #text 0 1
+
+4 15 par 0 0
+4 14 #text 0 1
+
+3 15 device 0 0
+3 14 #text 0 1
+
+2 15 select 0 0
+2 14 #text 0 1
+
+1 15 data 0 0
+1 14 #text 0 1
+
+0 15 electroxml 0 0
diff --git a/result/att4.sax b/result/att4.sax
new file mode 100644
index 0000000..2e88f06
--- /dev/null
+++ b/result/att4.sax
@@ -0,0 +1,36976 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC) )
+SAX.startElement(electroxml, modified='20021216T072726')
+SAX.characters(
+ , 2)
+SAX.startElement(data, from='20021031T22', to='20021130T22')
+SAX.characters(
+ , 3)
+SAX.startElement(select)
+SAX.characters(
+ , 4)
+SAX.startElement(device, serialnumb='E00003562')
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='113400', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='55')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='16936600', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='196.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='199.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='200.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='201.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='199.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='197.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='193.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='197.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='195.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='192.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='195.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='195.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='195.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='197.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='222.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='220.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='222.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='221.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='222.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='222.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='220.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='220')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='221.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='220.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='221.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='220.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='220.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='219.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='219.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='220.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='220.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='220.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='220.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='220.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='220.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='220.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='220.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='220.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='221.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='220.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='218.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='220')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='218.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='219.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='220.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='219.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='220.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='220.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='219.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='220.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='220.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='221.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='220.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='217.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='218.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='218.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='218.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='219.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='218.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='220.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='222.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='220.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='218.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='219.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='219.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='219.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='219.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='220.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='220.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='221.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='222.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='224.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='223.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='222.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='222.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='220.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='220.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='219.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='219.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='218.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='220.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='221.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='222.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='223.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='223.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='222.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='219.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='219.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='220.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='217.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='218.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='219.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='219.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='223.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='224.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='220.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='219.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='219.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='218.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='219.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='219.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='220.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='225.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='222.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='223.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='224.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='223.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='195.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='190')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='122.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='354.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='333.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='323.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='278.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='286.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='292.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='21.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='273.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='272.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='285.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='28.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='68.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='147.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='95.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='89.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='88.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='92.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='149.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='148.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='127.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='198.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='187.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='182.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='195.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='203.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='124.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='159.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='230.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='79.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='51.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='22.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='323.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='341.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='46.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='71.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='71.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='63.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='76.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='58.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='92')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='79.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='63.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='51.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='81.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='205.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='96.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='95.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='96.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='92.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='91.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='86.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='270')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='270.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='296.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='306.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='331.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='13.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='46.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='262.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='166.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='143.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='127.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='132.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='128.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='155.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='170.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='176.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='176.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='168.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='172.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='185.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='196.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='178.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='193.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='176.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='196.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='202.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='99.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='130.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='132.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='121.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='100.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='192.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='153.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='170.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='155.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='167.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='165.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='184.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='159.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='163.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='163.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='160.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='156.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='163.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='162.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='154.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='157.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='197.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='203.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='212.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='185.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='187.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='162')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='149.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='136.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='145.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='164.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='158.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='163')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='161.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='168.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='168.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='165.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='168.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='163.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='147.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='163')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='166.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='177.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='179.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='161')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='174.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='203.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='158.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='172.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='172.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='168.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='138')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='135.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='157.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='160.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='175.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='184.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='188.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='170')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='173.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='172.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='164.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='166.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='151.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='158.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='170.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='185.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='160.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='188.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='207.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='214.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='213.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='218.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='210.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='178.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='162.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='156.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='153.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='143.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='160.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='153.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='163.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='168.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='169.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='139.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='142.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='122.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='125.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='110.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='110.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='190.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='99.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='209.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='76.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='61.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='44.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='44.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='60.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='64.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='67.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='341.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='115.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='117.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='252.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='261.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='313.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='311.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='292')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='57.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='151.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='92.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='93.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='100.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='97.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='184')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='289.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='274.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='39.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='6.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='355.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='19.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='44.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='61.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='55.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='60.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='71.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='66.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='61.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='38.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='17.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='35.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='44.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='71.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='166.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='195.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='99.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='90')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='273.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='344.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='307.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='271.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='278.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='291.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='52.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='76.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='87.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='170.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='174.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='175.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='186.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='183.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='181.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='173.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='170.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='165.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='163.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='161.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='165.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='170.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='173.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='187.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='201.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='205.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='204.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='204.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='208.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='204.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='193.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='186.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='192.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='194.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='184.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='184.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='185.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='194.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='192.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='192.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='190.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='185.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='170.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='187.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='191.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='191.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='197.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='195.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='189.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='201.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='202.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='204.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='196.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='182.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='162.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='187.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='187.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='179.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='181.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='188.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='186.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='183.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='182.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='176.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='175.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='178.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='223.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='228.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='229.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='216.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='226.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='249.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='245.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='250.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='251.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='252.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='259.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='254.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='218.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='228.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='227.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='214.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='218.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='217')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='231.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='230.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='52')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='340.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='18.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='357.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='344.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='338.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='28.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='21.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='10.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='343.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='342.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='358.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='353.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='353.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='1.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='6.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='10.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='350.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='350.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='357.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='181.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='184.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='192.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='193.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='194.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='190.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='195')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='195.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='195.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='198.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='198.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='199.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='200.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='202.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='200.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='203.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='204.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='188.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='193.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='184.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='190.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='188.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='192.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='185.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='186.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='182.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='187.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='186.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='168.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='164.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='154.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='134.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='154.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='182.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='188.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='206.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='216.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='211.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='210.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='211.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='192.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='185.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='176.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='171.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='129.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='173.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='157.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='161.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='163.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='176.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='166.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='161.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='159.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='177.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='183.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='185.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='182.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='189.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='173.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='179.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='193.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='202.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='197.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='186.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='188.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='178.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='160.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='168.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='184')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='191.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='177.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='182.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='185.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='176.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='170.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='169.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='159.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='190.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='173.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='175.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='187.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='188.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='160')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='175.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='192.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='200.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='116.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='166.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='162.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='130.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='122')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='193.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='183.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='157.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='142.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='145.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='182.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='182.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='173.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='188.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='179.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='169.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='164.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='170.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='178.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='158')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='161.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='175.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='169.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='185.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='191.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='176.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='167.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='154.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='166.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='146.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='155.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='157.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='189.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='187.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='186.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='179.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='139.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='161.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='172')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='189.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='187.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='188.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='186.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='198.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='193.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='195.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='198.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='180.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='180')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='161.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='165.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='165.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='160.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='147.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='196.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='195.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='186.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='178.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='177.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='172')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='156.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='154.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='157')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='179.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='166')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='172.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='196.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='179.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='195.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='202.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='209.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='204.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='199.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='186.3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='175.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='170.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='159.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='156.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='137.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='146')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='139.6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='143.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='137.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='177.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='186.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='184.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='188.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='191.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='146.7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='161.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='188.7')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='10695000', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='50.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='49.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='50')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='8612', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='25.07')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='24.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='23.438')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='23.245')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='22.784')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='22.746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='26.297')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='28.878')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='34.451')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='40.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='40.572')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='38.682')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='35.869')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='34.12')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='0.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='0.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='0.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='0.039')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='0.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='0.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='0.04')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='0.039')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='0.039')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='0.04')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='0.036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='36.117')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='17.613')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='8.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='5.957')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='7.134')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='8.646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='6.429')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='10.235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='14.027')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='3.549')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='3.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='6.093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='5.204')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='7.526')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='11.39')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='0.954')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='5.773')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='21.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='22.636')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='19.316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='1.265')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='3.13')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='6.091')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='7.273')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='9.373')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='7.711')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='8.183')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='9.843')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='5.251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='2.646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='7.175')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='19.697')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='4.703')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='5.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='5.028')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='4.406')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='5.164')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='10.951')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='5.096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='10.032')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='4.084')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='5.223')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='6.622')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='2.571')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='3.766')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='2.925')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='4.239')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='2.442')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='10.653')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='15.045')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='10.497')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='14.243')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='11.318')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='7.26')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='3.278')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='12.768')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='8.863')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='8.423')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='7.503')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='7.803')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='10.91')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='5.743')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='2.082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='7.751')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='16.785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='18.467')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='18.801')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='16.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='13.629')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='14.479')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='14.927')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='14.349')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='15.502')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='20.07')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='20.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='16.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='17.03')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='11.901')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='10.138')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='8.731')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='14.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='4.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='4.149')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='6.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='14.635')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='9.989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='11.96')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='15.422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='22.742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='22.428')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='24.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='23.076')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='23.241')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='24.018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='25.989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='24.748')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='25.323')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='23.122')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='19.403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='19.28')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='16.12')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='16.228')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='16.654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='14.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='14.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='9.557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='9.072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='8.333')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='9.771')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='14.337')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='16.049')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='19.911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='23.238')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='23.213')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='25.179')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='21.591')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='19.665')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='21.079')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='21.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='22.363')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='25.172')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='23.223')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='20.912')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='22.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='18.729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='16.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='13.145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='13.912')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='8.712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='8.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='8.195')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='8.301')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='10.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='14.213')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='15.617')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='19.095')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='23.986')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='20.919')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='26.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='21.493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='21.006')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='22.144')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='19.124')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='0.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='0.021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='0.021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='0.018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='0.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='0.016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='0.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='0.01')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='0.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='0.01')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='0.01')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='0.01')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='0.009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='0.006')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='0.009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='0.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='0.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='0.012')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='0.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='0.014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='0.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='0.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0.279')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0.096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0.141')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0.207')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0.218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0.213')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0.214')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0.075')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0.05')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0.034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0.449')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0.217')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0.167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0.158')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0.232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0.339')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0.212')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0.044')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0.025')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0.023')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0.145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0.08')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0.05')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0.239')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0.206')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0.163')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0.027')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0.077')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0.153')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0.181')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0.149')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0.157')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0.166')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0.216')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0.306')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0.168')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0.145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0.252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0.213')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0.19')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0.114')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0.115')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0.302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0.03')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0.048')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0.069')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0.029')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0.105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0.096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0.142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0.092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0.071')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0.17')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0.212')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0.089')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0.607')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0.675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0.723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0.477')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0.477')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0.491')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0.496')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0.579')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0.62')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='35.716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='33.973')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='35.295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='32.429')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='28.433')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='29.24')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='30.943')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='28.05')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='27.792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='28.102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='25.534')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='25.021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='30.046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='32.772')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='38.186')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='64.34')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='63.582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='60.895')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='57.167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='59.436')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='56.655')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='60.597')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='56.836')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='37.581')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='40.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='38.214')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='32.175')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='30.662')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='26.933')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='21.269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='21.646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='21.244')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='20.855')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='19.588')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='20.809')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='25.64')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='29.166')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='31.236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='28.424')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='32.717')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='32.231')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='29.816')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='29.219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='29.861')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='29.093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='29.004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='10.445')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='18.158')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='23.713')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='25.84')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='13.692')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='15.619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='22.235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='20.533')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='14.806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='17.786')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='18.205')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='14.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='11.317')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='6.403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='13.389')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='18.094')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='16.688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='16.251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='17.902')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='16.864')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='16.076')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='4.33')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='4.33')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='21.221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='20.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='22.903')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='22.672')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='34.711')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='33.792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='32.717')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='33.04')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='34.047')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='36.536')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='36.673')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='36.752')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='37.932')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='37.857')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='37.029')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='32.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='31.917')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='31.363')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='15.349')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='17.623')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='17.658')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='16.597')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='17.621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='18.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='32.337')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='37.113')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='36.896')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='37.646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='37.465')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='35.96')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='34.217')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='31.472')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='27.913')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='27.77')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='27.092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='9.65')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='8.989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='8.871')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='11.525')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='11.312')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='13.145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='12.866')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='13.503')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='12.977')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='12.853')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='12.322')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='11.244')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='11.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='13.909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='20.778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='17.384')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='17.882')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='17.779')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='15.628')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='18.718')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='19.687')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='15.856')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='14.235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='14.121')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='10.417')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='10.192')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='10.247')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='12.409')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='18.782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='17.709')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='24.468')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='27.895')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='31.135')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='28.073')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='26.781')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='27.955')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='31.834')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='30.684')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='33.239')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='31.592')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='27.051')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='26.891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='22.834')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='21.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='20.723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='20.412')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='17.178')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='14.845')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='14.404')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='13.895')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='14.291')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='18.376')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='22.682')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='29.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='30.985')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='31.244')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='30.501')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='30.757')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='29.766')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='29.686')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='30.47')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='31.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='28.958')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='28.474')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='27.753')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='26.676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='24.07')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='18.889')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='17.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='16.434')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='18.47')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='9.837')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='9.73')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='12.672')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='17.29')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='17.161')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='19.388')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='22.792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='25.973')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='28.305')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='28.475')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='23.531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='22.62')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='22.13')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='27.159')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='27.705')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='29.796')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='27.341')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='25.887')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='25.842')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='23.266')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='21.664')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='19.437')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='15.912')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='16.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='15.674')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='13.705')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='14.331')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='15.781')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='18.196')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='22.115')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='26.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='34.813')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='35.914')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='36.775')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='34.277')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='32.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='33.001')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='31.687')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='36.854')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='30.428')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='28.246')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='28.984')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='27.176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='26.455')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='21.891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='20.073')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='17.083')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='17.921')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='17.972')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='16.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='17.324')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='20.97')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='21.269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='25.041')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='31.27')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='33.712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='82.744')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='46.746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='22.903')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='31.343')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='30.438')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='28.883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='30.794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='31.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='28.098')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='27.177')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='24.941')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='22.834')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='23.209')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='17.56')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='17.555')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='18.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='20.698')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='19.372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='18.644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='18.792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='18.951')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='18.907')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='23.409')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='23.511')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='26.941')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='24.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='23.147')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='23.935')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='24')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='22.888')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='26.246')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='25.909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='25.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='24.725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='23.755')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='18.839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='15.362')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='8608', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='8604', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='21.043')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='20.051')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='19.818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='19.554')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='18.951')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='18.853')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='22.398')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='24.492')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='29.206')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='35.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='35.07')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='33.585')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='30.77')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='29.141')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='0.07')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='0.068')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='0.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='0.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='0.055')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='0.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='0.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='0.066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='0.058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='0.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='0.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='0.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='0.063')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='0.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='30.22')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='16.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='10.22')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='3.839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='3.301')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='4.19')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='2.002')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='4.911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='7.897')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='2.934')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='1.487')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='2.196')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='1.679')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='5.984')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='10.661')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='3.653')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='7.252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='19.708')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='21.128')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='18.358')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='3.456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='4.916')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='7.337')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='7.205')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='9.191')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='8.027')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='7.688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='8.667')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='7.734')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='5.148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='5.081')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='18.433')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='4.676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='3.97')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='2.247')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='2.519')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='4.784')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='10.406')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='5.863')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='9.668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='5.194')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='5.35')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='7.745')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='3.651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='4.236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='3.281')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='5.657')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='2.249')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='12.004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='15.833')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='11.981')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='15.145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='12.386')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='8.53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='1.474')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='7.441')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='4.262')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='3.805')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='3.752')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='5.538')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='9.524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='1.988')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='4.159')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='9.621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='17.704')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='19.171')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='19.252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='14.961')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='12.816')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='13.113')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='13.435')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='13.283')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='13.989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='18.098')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='17.742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='15.229')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='15.263')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='11.968')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='9.893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='7.997')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='13.888')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='6.336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='5.634')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='7.369')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='14.276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='9.674')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='12.81')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='14.985')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='21.531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='21.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='22.908')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='20.891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='22.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='22.517')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='24.172')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='23.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='23.475')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='22.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='18.671')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='18.447')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='15.862')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='16.38')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='15.165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='12.335')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='12.283')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='8.941')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='8.837')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='8.793')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='10.043')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='13.932')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='15.974')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='19.167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='22.237')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='21.533')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='23.309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='20.333')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='18.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='20.163')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='19.978')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='21.155')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='23.964')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='21.874')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='19.591')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='20.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='17.32')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='16.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='13.217')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='12.271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='8.967')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='8.319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='8.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='8.49')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='10.458')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='13.998')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='15.461')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='18.331')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='22.284')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='19.151')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='23.464')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='20.211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='19.83')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='20.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='18.042')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='0.018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='0.02')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='0.02')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='0.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='0.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='0.014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='0.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='0.01')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='0.009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='0.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='0.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='0.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='0.007')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='0.007')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='0.01')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='0.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='0.016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='0.013')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='0.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='0.014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='0.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='0.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0.269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0.124')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0.16')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0.227')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0.243')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0.236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0.239')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0.074')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0.086')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0.031')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0.412')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0.199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0.15')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0.14')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0.218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0.309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0.206')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0.032')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0.025')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0.09')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0.03')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0.026')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0.086')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0.251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0.225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0.193')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0.103')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0.044')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0.023')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0.068')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0.157')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0.105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0.097')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0.127')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0.189')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0.281')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0.162')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0.15')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0.246')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0.211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0.188')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0.105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0.092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0.099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0.29')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0.072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0.045')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0.07')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0.029')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0.026')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0.075')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0.178')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0.221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0.578')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0.633')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0.678')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0.456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0.461')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0.475')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0.487')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0.565')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0.597')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='34.372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='33.056')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='34.198')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='31.148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='26.734')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='26.883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='28.046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='25.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='24.826')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='25.129')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='22.979')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='22.968')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='28.04')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='30.608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='35.156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='61.079')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='61.118')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='58.214')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='54.149')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='56.141')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='53.757')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='57.188')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='53.596')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='36.269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='36.626')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='35.102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='29.855')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='28.307')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='25.364')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='19.996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='19.748')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='19.345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='18.873')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='18.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='20.032')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='25.137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='27.508')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='29.449')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='27.372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='30.562')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='29.963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='28.336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='28.102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='28.864')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='28.278')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='28.399')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='11.016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='14.155')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='19.132')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='20.28')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='11.28')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='12.25')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='16.561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='15.15')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='9.953')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='12.732')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='12.958')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='9.685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='6.805')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='4.559')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='10.632')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='14.64')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='14.182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='13.717')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='15.071')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='13.236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='12.746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='3.999')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='2.186')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='16.585')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='14.378')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='16.041')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='15.799')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='29.25')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='27.621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='25.453')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='24.369')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='25.348')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='28.687')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='28.373')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='28.801')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='30.045')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='30.644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='30.354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='24.933')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='23.813')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='23.818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='15.153')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='16.69')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='16.385')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='15.643')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='16.269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='16.689')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='27.897')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='31.449')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='31.232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='32.001')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='31.999')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='30.669')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='29.185')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='27.199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='23.798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='23.566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='23.035')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='8.573')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='7.913')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='7.851')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='9.845')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='10.177')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='11.732')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='11.554')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='12.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='11.725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='11.465')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='10.851')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='10.928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='10.984')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='13.626')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='19.399')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='16.326')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='15.848')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='15.785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='14.319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='15.77')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='16.295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='13.382')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='11.752')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='11.694')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='9.24')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='8.969')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='9.42')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='11.299')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='18.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='15.989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='23.363')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='26.071')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='29.283')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='25.856')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='25.235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='26.405')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='30.076')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='28.433')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='30.271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='28.557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='24.542')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='23.962')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='21.242')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='19.633')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='18.009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='17.798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='15.304')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='13.453')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='13.055')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='12.872')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='13.544')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='17.25')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='21.046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='25.832')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='27.791')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='28.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='27.63')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='28.457')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='27.725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='27.922')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='28.25')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='27.539')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='26.251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='25.947')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='24.671')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='24.383')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='22.742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='17.742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='16.117')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='14.548')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='18.418')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='10.147')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='10.648')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='13.062')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='17.082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='15.723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='17.627')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='21.083')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='24.293')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='26.823')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='27.04')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='22.091')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='21.514')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='20.922')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='25.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='25.959')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='27.644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='25.578')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='24.199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='23.83')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='22.719')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='20.952')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='18.382')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='14.928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='14.859')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='14.081')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='13.309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='13.726')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='15.071')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='17.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='20.612')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='24.891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='32.942')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='34.247')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='34.787')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='31.176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='29.806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='30.569')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='29.175')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='34.921')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='28.767')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='25.797')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='26.161')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='24.769')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='24.053')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='20.28')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='18.22')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='15.345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='15.953')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='15.884')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='15.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='16.014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='19.574')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='20.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='23.936')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='29.274')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='31.691')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='75.154')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='41.458')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='21.221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='29.417')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='28.597')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='27.256')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='28.925')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='29.38')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='26.559')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='25.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='23.312')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='21.317')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='20.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='16.36')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='15.657')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='16.618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='17.888')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='16.861')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='16.617')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='17.428')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='18.225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='18.415')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='22.126')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='22.126')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='25.782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='22.774')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='22.774')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='22.909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='23.139')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='21.553')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='23.539')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='23.139')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='22.735')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='22.335')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='23.205')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='18.238')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='14.136')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='9812', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='114.081')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='117.19')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='118.964')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='120.564')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='118.747')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='116.529')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='109.384')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='121.356')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='119.014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='116.226')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='120.175')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='120.949')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='124.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='124.043')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='117.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='118.092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='118.354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='118.633')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='118.494')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='121.243')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='122.278')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='119.689')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='121.165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='125.688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='127.517')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='119.508')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='121.27')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='121.262')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='120.595')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='118.725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='126.913')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='125.984')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='124.971')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='121.722')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='122.233')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='122.836')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='124.125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='125.105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='125.266')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='125.381')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='123.688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='119.437')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='119.167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='120.334')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='119.837')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='120.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='122.074')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='125.542')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='125.638')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='117.398')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='118.807')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='119.644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='119.674')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='117.549')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='113.229')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='125.153')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='124.691')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='123.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='123.231')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='123.404')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='123.932')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='123.328')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='122.641')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='121.544')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='118.209')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='118.675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='118.325')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='121.893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='120.711')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='119.854')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='120.165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='122.996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='126.557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='124.061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='124.874')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='125.244')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='125.083')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='123.182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='119.311')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='122.524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='121.173')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='118.696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='117.559')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='118.947')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='118.797')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='117.048')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='116.182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='119.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='119.152')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='116.814')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='118.943')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='120.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='119.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='120.802')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='123.095')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='125.922')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='122.082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='123.001')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='123.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='122.972')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='120.717')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='121.599')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='120.977')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='119.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='115.798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='119.913')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='120.284')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='119.451')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='118.325')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='117.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='117.263')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='120.147')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='117.534')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='118.902')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='120.099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='121.434')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='121.986')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='120.683')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='122.861')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='119.35')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='120.845')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='122.119')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='122.506')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='121.462')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='118.909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='116.372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='121.311')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='119.412')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='118.281')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='118.148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='117.811')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='121.694')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='120.755')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='118.651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='118.08')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='118.282')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='113.911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='116.941')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='119.508')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='119.071')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='121.146')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='121.336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='122.095')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='121.785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='124.065')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='125.455')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='126.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='125.018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='122.741')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='120.26')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='118.856')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='118.817')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='117.807')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='117.444')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='119.967')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='121.141')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='120.259')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='118.558')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='118.812')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='118.633')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='118.948')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='117.315')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='118.146')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='120.121')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='120.561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='118.638')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='122.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='125.153')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='123.463')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='122.793')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='123.093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='122.535')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='120.189')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='123.097')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='119.336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='118.5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='115.743')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='119.722')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='120.222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='118.918')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='117.551')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='116.649')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='116.52')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='116.703')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='118.806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='118.461')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='119.593')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='119.78')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='119.973')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='120.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='122.782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='125.444')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='118.255')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='119.302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='120.149')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='119.678')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='117.138')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='114.681')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='120.851')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='119.099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='116.609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='116.729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='118.045')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='115.477')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='115.891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='114.24')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='122.794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='119.002')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='118.701')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='119.602')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='120.963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='119.924')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='120.628')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='123.122')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='118.683')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='118.301')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='118.882')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='120.187')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='119.576')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='118.243')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='115.692')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='117.56')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='116.057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='117.411')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='117.486')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='116.745')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='118.265')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='118.202')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='118.004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='117.255')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='122.71')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='118.736')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='116.734')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='118.339')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='118.66')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='119.703')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='121.536')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='123.419')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='126.186')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='119.31')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='120.58')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='120.857')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='119.582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='117.426')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='124.349')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='122.435')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='120.692')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='117.233')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='116.862')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='116.728')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='118.212')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='117.857')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='117.176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='117.271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='116.796')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='117.361')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='119.769')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='121.05')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='120.921')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='122.497')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='120.677')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='122.67')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='123.778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='116.655')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='118.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='118.372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='117.527')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='113.518')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='123.496')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='120.611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='118.704')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='115.651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='117.487')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='117.186')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='121.114')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='117.611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='117.892')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='117.718')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='117.584')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='117.38')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='119.222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='121.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='120.221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='118.379')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='118.238')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='123.037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='123.007')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='126.294')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='123.682')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='123.591')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='122.918')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='121.387')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='117.586')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='117.716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='119.191')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='117.355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='117.862')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='117.531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='119.886')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='119.426')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='118.72')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='119.004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='118.725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='116.196')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='118.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='119.001')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='120.963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='121.34')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='119.151')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='120.797')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='123.519')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='122.366')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='123.381')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='123.296')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='123.047')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='120.874')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='118.017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='118.388')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='117.753')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='119.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='121.547')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='122.028')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='122.195')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='121.783')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='120.581')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='121.685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='120.972')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='116.836')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='117.633')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='118.83')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='120.746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='122.541')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='120.249')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='122.708')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='124.538')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='125.289')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='125.325')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='125.49')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='124.672')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='122.813')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='121.573')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='120.719')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='119.706')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='116.935')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='117.255')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='118.365')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='119.829')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='119.607')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0.102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0.115')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0.113')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0.113')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='118.351')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='119.763')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='120.872')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='121.443')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='124.587')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='127.119')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='128.887')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='127.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='127.1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='127.35')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='126.552')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='124.71')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='124.077')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='125.099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='125.025')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='123.954')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='123.641')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='124.308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='126.201')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='125.426')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='125.045')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='124.868')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='123.854')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='117.177')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='120.985')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='121.689')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='121.514')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='123.76')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='125.848')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='123.162')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='124.87')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='126.457')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='126.565')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='125.821')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='123.654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='120.985')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='121.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='120.771')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='120.139')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='120.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='122.459')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='121.603')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='120.856')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='120.882')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='120.049')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='119.903')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='116.012')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='119.283')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='120.303')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='121.728')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='121.516')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='122.849')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='126.093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='126.725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='124.883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='125.931')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='126.096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='124.906')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='123.654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='121.493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='123.897')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='123.756')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='122.369')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='121.934')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='122.306')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='124.041')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='123.698')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='120.029')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='120.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='119.314')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='120.479')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='121.91')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='122.485')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='118.564')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='119.367')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='120.808')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='123.105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='125.021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='123.274')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='123.92')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='123.876')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='122.883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='122.072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='121.544')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='123.27')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='123.513')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='122.604')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='121.281')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='121.716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='122.714')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='123.129')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='123.431')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='122.987')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='119.262')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='118.087')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='116.532')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='118.618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='119.706')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='120.899')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='120.718')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='121.624')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='117.925')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='120.928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='122.34')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='122.972')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='123.05')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='122.44')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='120.735')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='120.711')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='123.688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='122.853')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='122.754')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='122.975')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='123.49')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='123.278')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='121.776')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='121.458')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='120.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='116.832')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='119.948')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='120.022')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='120.884')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='119.618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='122.811')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='123.997')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='126.654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='125.574')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='126.495')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='126.021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='125.521')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='123.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='121.073')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='117.997')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='119.376')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='119.302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='120.24')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='120.497')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='123.276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='121.287')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='120.492')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='119.643')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='117.626')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='121.9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='120.861')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='120.493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='121.526')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='119.46')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='120.284')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='121.713')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='124.203')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='126.587')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='124.627')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='124.526')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='123.821')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='122.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='118.642')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='116.651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='122.439')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='120.232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='119.322')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='120.236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='120.346')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='119.148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='118.907')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='117.874')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='122.584')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='120.252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='120.469')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='121.303')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='122.183')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='118.747')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='120.81')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='123.937')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='126.687')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='119.553')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='119.757')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='119.753')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='117.557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='116.262')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='122.469')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='119.765')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='119.78')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='119.006')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='118.696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='119.018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='120.765')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='120.41')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='119.608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='119.268')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='118.221')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='119.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='118.199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='119.524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='120.76')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='118.446')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='119.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='121.458')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='120.937')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='122.353')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='123.085')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='123.145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='122.277')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='121.153')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='119.31')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='120.616')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='118.482')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='117.789')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='118.178')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='118.65')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='119.893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='119.172')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='118.88')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='118.03')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='115.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='118.091')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='119.601')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='120.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='120.094')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='123.851')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='123.499')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='124.806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='124.27')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='124.985')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='125.02')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='123.483')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='122.436')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='120.041')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='119.496')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='119.362')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='117.767')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='118.616')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='117.274')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='118.975')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='119.79')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='119.331')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='119.194')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='118.637')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='120.535')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='119.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='120.403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='121.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='119.413')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='120.38')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='123.203')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='121.143')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='122.976')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='123.697')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='124.476')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='123.592')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='123.177')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='121.853')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='121.298')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='120.593')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='118.763')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='118.278')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='118.596')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='119.984')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='119.523')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='119.574')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='119.013')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='119.722')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='120.875')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='120.668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='121.451')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='121.838')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='119.053')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='121.03')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='123.544')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='9808', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='9804', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='113.768')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='117.131')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='118.794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='120.362')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='118.504')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='116.275')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='109.258')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='121.127')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='118.849')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='116.093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='120.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='120.84')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='124.045')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='124.042')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='117.713')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='118.048')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='118.051')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='118.259')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='118.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='120.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='121.925')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='119.353')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='120.867')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='125.48')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='127.434')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='119.069')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='120.904')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='120.974')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='120.25')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='118.291')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='126.573')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='125.637')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='124.668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='121.393')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='121.998')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='122.555')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='123.941')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='124.746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='125.085')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='125.143')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='123.315')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='119.026')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='118.683')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='119.815')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='119.25')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='119.678')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='121.708')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='125.182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='125.217')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='117.12')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='118.489')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='119.338')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='119.392')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='117.277')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='112.967')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='124.775')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='124.409')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='123.268')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='122.956')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='123.032')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='123.555')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='123.004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='122.125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='121.078')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='117.701')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='118.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='117.771')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='121.393')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='120.16')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='119.387')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='119.887')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='122.64')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='125.954')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='123.51')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='124.328')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='124.639')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='124.448')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='122.434')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='118.623')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='122.169')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='120.979')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='118.358')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='117.271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='118.68')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='118.562')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='116.842')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='115.913')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='118.894')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='118.59')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='116.293')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='118.299')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='120.233')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='118.495')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='120.406')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='122.644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='125.528')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='121.746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='122.642')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='122.581')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='122.623')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='120.431')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='121.329')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='120.651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='118.876')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='115.661')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='119.835')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='120.34')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='119.439')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='118.245')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='117.004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='117.165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='119.95')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='117.149')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='118.541')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='119.822')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='121.013')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='121.577')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='120.289')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='122.62')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='119.093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='120.493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='121.919')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='122.218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='121.022')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='118.433')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='115.978')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='120.971')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='119.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='118.015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='117.922')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='117.566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='121.469')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='120.514')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='118.485')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='117.889')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='117.946')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='113.611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='116.583')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='119.306')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='118.802')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='120.799')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='120.857')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='121.594')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='121.421')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='123.74')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='125.189')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='125.673')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='124.777')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='122.432')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='120.011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='118.622')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='118.559')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='117.524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='117.257')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='119.909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='120.921')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='119.96')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='118.481')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='118.605')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='118.282')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='118.663')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='117.009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='117.766')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='119.722')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='120.299')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='118.366')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='122.529')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='124.833')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='123.06')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='122.396')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='122.792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='122.232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='119.79')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='122.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='119.012')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='118.321')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='115.456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='119.374')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='120.344')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='119.254')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='117.83')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='117.001')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='116.782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='116.803')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='118.75')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='118.358')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='119.493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='119.698')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='119.908')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='120.675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='122.754')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='125.385')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='118.214')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='119.329')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='120.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='119.689')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='117.12')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='114.729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='120.871')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='119.177')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='116.699')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='116.768')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='118.075')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='115.571')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='115.867')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='114.309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='122.787')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='118.904')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='118.531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='119.438')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='120.908')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='119.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='120.575')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='123.212')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='118.712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='118.316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='118.859')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='120.092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='119.532')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='118.179')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='115.731')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='117.671')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='116.046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='117.416')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='117.578')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='116.758')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='118.319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='118.355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='118.136')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='117.225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='122.659')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='118.547')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='116.635')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='118.105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='118.503')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='119.547')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='121.4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='123.396')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='126.068')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='119.33')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='120.524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='120.742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='119.548')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='117.358')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='124.267')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='122.388')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='120.774')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='117.345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='116.698')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='116.798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='118.219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='117.879')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='117.287')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='117.42')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='116.798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='117.184')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='119.665')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='121.033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='120.839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='122.456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='120.534')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='122.766')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='123.735')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='116.654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='118.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='118.441')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='117.463')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='113.549')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='123.596')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='120.709')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='118.94')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='116.002')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='117.741')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='117.49')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='121.433')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='117.735')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='118.165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='117.839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='117.685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='117.518')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='119.385')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='121.202')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='120.254')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='118.336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='118.267')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='123.088')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='123.183')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='126.377')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='123.772')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='123.634')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='123.008')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='121.382')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='117.696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='117.901')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='119.404')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='117.646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='118.147')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='117.802')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='120.151')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='119.733')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='119.096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='119.291')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='118.973')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='116.336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='118.171')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='119.082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='120.953')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='121.41')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='119.088')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='120.941')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='123.699')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='122.48')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='123.378')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='123.312')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='123.217')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='120.961')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='118.076')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='118.573')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='117.978')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='120.019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='121.662')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='122.268')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='122.317')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='121.934')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='120.776')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='121.889')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='121.064')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='116.824')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='117.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='118.784')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='120.77')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='122.565')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='120.263')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='122.729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='124.561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='125.237')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='125.344')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='125.492')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='124.67')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='122.819')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='121.713')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='120.883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='119.85')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='117.176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='117.447')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='118.679')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='120.016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='119.959')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0.102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0.115')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0.104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0.109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0.113')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0.107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0.112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0.111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0.11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='117.84')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='119.199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='120.226')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='120.924')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='124.038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='126.747')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='128.364')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='126.55')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='126.522')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='126.893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='126.114')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='124.219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='123.691')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='124.723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='124.667')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='123.666')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='123.337')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='124.042')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='125.92')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='125.144')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='124.769')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='124.549')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='123.483')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='116.63')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='120.461')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='121.228')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='121.154')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='123.409')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='125.403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='122.716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='124.385')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='126.046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='126.166')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='125.26')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='123.29')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='120.499')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='120.705')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='120.492')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='119.996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='120.265')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='122.232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='121.49')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='120.704')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='120.614')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='119.839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='119.685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='115.593')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='118.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='119.97')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='121.369')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='121.096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='122.451')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='125.765')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='126.302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='124.495')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='125.659')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='125.773')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='124.464')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='123.167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='121.137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='123.677')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='123.569')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='122.254')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='121.794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='122.088')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='123.87')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='123.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='119.682')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='119.676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='118.821')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='119.836')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='121.192')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='121.685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='117.874')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='118.762')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='120.263')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='122.468')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='124.536')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='122.598')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='123.2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='123.218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='122.202')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='121.424')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='120.888')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='122.743')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='123.078')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='122.237')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='120.858')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='121.231')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='122.185')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='122.648')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='122.992')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='122.482')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='118.707')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='117.367')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='115.714')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='117.74')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='119.048')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='120.179')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='119.949')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='120.906')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='117.251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='120.118')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='121.521')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='122.188')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='122.212')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='121.531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='119.981')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='119.977')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='122.939')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='122.289')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='122.05')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='122.271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='122.856')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='122.611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='121.148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='120.864')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='119.609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='116.101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='119.165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='119.287')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='120.208')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='118.775')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='122.222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='123.288')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='126.026')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='124.828')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='125.769')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='125.218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='124.795')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='122.393')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='120.523')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='117.319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='118.772')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='118.808')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='119.686')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='119.99')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='122.708')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='120.762')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='119.92')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='119.129')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='117.091')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='121.219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='120.28')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='119.69')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='120.677')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='118.756')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='119.608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='121.059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='123.573')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='125.976')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='123.926')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='123.888')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='123.08')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='121.69')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='117.916')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='116.014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='121.935')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='119.675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='118.8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='119.649')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='119.715')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='118.622')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='118.459')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='117.339')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='122.095')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='119.556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='119.761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='120.53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='121.428')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='118.003')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='120.228')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='123.33')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='125.861')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='118.788')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='119.106')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='119.116')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='116.908')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='115.642')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='122.013')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='119.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='119.31')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='118.566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='118.243')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='118.579')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='120.288')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='119.996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='119.249')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='118.866')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='117.741')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='118.543')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='117.538')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='118.709')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='119.94')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='117.668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='119.159')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='120.771')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='120.234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='121.624')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='122.272')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='122.422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='121.687')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='120.361')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='118.751')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='120.028')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='117.974')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='117.305')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='117.71')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='118.193')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='119.542')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='118.741')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='118.295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='117.534')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='114.472')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='117.357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='118.851')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='120.137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='119.349')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='123.226')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='122.921')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='124.273')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='123.515')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='124.182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='124.27')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='122.827')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='121.801')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='119.514')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='118.922')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='118.86')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='117.264')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='118.022')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='116.819')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='118.384')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='119.276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='118.81')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='118.676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='118.108')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='119.625')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='119.042')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='119.638')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='120.355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='118.728')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='119.777')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='122.621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='120.494')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='122.335')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='123.001')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='123.827')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='122.939')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='122.398')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='121.212')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='120.844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='120.054')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='118.297')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='117.795')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='117.996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='119.287')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='118.815')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='118.955')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='118.449')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='119.157')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='120.124')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='119.858')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='120.668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='121.067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='118.265')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='120.308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='122.851')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='440600', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='-1275')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='-1482')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='-1562')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='-1643')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='-1446')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='-1276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='-1049')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='-1694')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='-1760')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='-1662')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='-2067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='-1992')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='-1928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='-2018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='-1845')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='-631')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='1564')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='-66')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='-393')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='-691')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='-883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='-1575')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='-2209')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='109')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='-420')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='-859')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='-628')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='516')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='1839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='293')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='1185')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='3946')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='4230')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='3689')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='248')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='430')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='1026')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='-526')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='-258')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='-65')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='-489')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='-842')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='1082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='310')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='-1112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='3632')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='513')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='214')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='-292')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='-127')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='495')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='1815')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='1539')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='680')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='1280')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='397')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='250')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='-201')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='2156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='2937')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='2107')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='2824')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='2269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='1441')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='-297')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='-2280')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='-1189')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='-964')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='-442')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='261')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='1309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='-849')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='178')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='1111')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='2750')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='2769')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='2973')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='1327')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='454')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='416')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='-370')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='-1154')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='93')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='-843')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='171')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='-646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='-723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='2665')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='837')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='698')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='1097')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='2649')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='-495')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='1165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='542')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='1871')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='979')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='1210')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='-356')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='1654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='1368')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='1462')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='1612')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='1309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='1886')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='1136')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='1169')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='1403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='1316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='-1041')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='-1190')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='-1609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='-199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='-252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='585')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='1069')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='1973')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='1831')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='1127')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='1767')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='1343')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='1564')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='849')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='805')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='1093')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='880')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='1254')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='2664')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='1368')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='1009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='208')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='22')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='1142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='286')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='-1168')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='227')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='1441')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='2015')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='1211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='1284')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='369')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='-310')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='-802')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='781')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='491')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='1023')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='516')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='2274')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='1775')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='1153')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='769')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='-846')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='-2362')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='-2961')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='-2519')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='-2447')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='-2865')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='-2276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='-1250')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='-716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='-1489')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='-2004')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='-1055')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='-978')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='-1269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='-3170')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='-2668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='-2540')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='-2377')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='-1126')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='1219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='-1061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='-1519')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='-1284')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='-1902')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='-1623')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='-778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='-1730')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='-1745')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='-1872')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='-1207')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='-211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='1619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='-764')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='-827')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='40')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='-199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='-967')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='-680')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='-385')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='-241')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='371')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='471')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='61')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='-2440')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='-3447')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='-3862')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='-1657')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='-2273')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='-4132')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='-3735')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='-2655')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='-3286')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='-3377')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='-2707')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='-1980')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='-797')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='-2046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='-2793')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='-1939')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='-2092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='-2211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='-2679')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='-2530')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='453')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='-157')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='1143')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='-146')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='-1002')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='-1402')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='2949')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='2229')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='1022')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='-1628')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='-1835')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='-211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='-767')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='-792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='173')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='776')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='1249')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='-957')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='-911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='-243')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='-65')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='-308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='-811')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='-806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='-952')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='-716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='-1618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='-1910')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='-1809')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='-2224')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='-2272')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='-2317')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='-2283')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='-2334')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='-1860')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='-2139')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='-2206')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='-296')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='-449')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='-142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='-422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='-365')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='-581')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='-263')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='-325')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='-142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='-355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='-310')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='496')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='660')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='1246')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='2889')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='1532')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='-143')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='-518')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='-1667')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='-2330')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='-1727')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='-1489')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='-1515')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='-476')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='-193')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='128')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='376')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='2872')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='1923')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='1830')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='1798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='334')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='1260')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='1815')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='2272')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='262')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='-387')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='-613')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='-251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='-885')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='551')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='48')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='-982')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='-1612')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='-1125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='-381')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='-441')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='71')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='1020')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='760')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='-319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='-1144')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='-319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='-582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='1031')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='1139')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='2082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='-1202')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='622')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='-736')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='-818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='1684')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='307')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='-801')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='-1256')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='3308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='506')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='639')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='1963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='2867')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='-831')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='-270')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='2010')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='3408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='3190')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='-187')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='-225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='-823')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='62')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='1079')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='1547')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='900')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='1780')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='1407')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='298')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='565')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='-311')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='-657')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='168')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='647')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='1427')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='829')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='-5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='1197')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='3751')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='2991')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='2801')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='-1188')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='-828')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='-799')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='57')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='4601')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='1911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='799')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='-972')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='-708')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='-790')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='-490')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='-1316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='-825')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='-1012')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='-1178')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='-35')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='1352')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='1059')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='1290')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='2079')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='3618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='-4684')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='-2470')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='-556')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='189')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='260')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='816')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='2489')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='2732')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='2234')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='57')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='1219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='632')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='-1360')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='38')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='-980')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='-1501')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='-2119')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='-1618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='-1314')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='-432')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='1692')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='1899')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='3622')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='2709')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='3037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='2898')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='3251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='186')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='-636')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='-421')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='-729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='-978')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='2670')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='1255')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='-496')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='424600', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='-4313')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='-4163')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='-4102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='-4091')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='-3982')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='-3934')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='-4439')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='-5323')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='-6298')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='-7332')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='-7541')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='-7248')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='-6869')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='-6454')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='-6460')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='-3546')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='-986')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='697')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='776')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='925')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='903')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='278')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='27')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='43')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='173')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='947')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='728')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='-452')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='-117')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='23')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='-152')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='-423')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='-705')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='-790')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='-1575')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='-2027')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='-1757')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='-1722')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='-1901')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='-741')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='-812')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='-891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='652')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='411')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='516')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='398')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='382')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='470')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='591')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='267')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='770')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='164')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='438')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='-43')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='72')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='249')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='201')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='115')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='-425')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='-229')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='-284')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='-247')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='-135')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='-54')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='96')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='16')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='598')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='721')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='1067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='1245')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='-117')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='-721')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='-1504')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='-2084')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='-2554')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='-2345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='-2920')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='-2712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='-2858')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='-2928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='-2803')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='-3032')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='-4017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='-3918')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='-3412')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='-3441')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='-2561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='-2139')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='-1765')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='-465')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='-702')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='-647')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='-676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='-509')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='-2150')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='-2355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='-3171')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='-4031')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='-4338')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='-4651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='-4668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='-4346')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='-4571')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='-4929')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='-4607')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='-4866')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='-4308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='-3897')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='-3784')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='-2988')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='-3099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='-3335')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='-2686')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='-2522')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='-2074')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='-1989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='-1788')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='-1795')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='-2075')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='-2698')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='-3932')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='-4406')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='-4366')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='-4692')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='-4302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='-3927')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='-4101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='-4187')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='-4342')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='-4162')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='-4456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='-4132')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='-4499')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='-3882')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='-3295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='-2863')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='-2668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='-1778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='-1810')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='-1829')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='-1800')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='-1595')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='-2050')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='-2961')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='-3627')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='-4830')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='-4296')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='-5257')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='-4408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='-4326')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='-4420')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='-3950')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='-6868')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='-6790')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='-7252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='-6734')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='-6030')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='-5892')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='-6066')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='-5486')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='-5444')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='-5339')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='-4983')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='-5190')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='-6313')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='-6839')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='-7853')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='-13507')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='-13381')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='-12778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='-11890')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='-12338')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='-11774')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='-12649')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='-11849')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='-7471')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='-8126')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='-7696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='-6538')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='-6175')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='-5664')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='-4480')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='-4300')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='-4263')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='-4119')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='-4103')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='-4511')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='-5135')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='-6038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='-6392')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='-5899')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='-6690')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='-6603')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='-6159')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='-6128')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='-6220')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='-6047')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='-6009')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='-2295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='-2543')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='-3085')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='-3269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='-2267')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='-2159')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='-1532')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='-1675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='-960')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='-1122')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='-1061')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='-505')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='-536')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='-991')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='-1818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='-2574')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='-2844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='-2608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='-2928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='-2112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='-2074')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='438')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='3408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='3269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='3655')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='3521')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='5431')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='5560')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='5660')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='5623')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='5896')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='6656')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='6647')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='6733')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='6914')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='6873')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='6691')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='5814')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='5617')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='5608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='-3230')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='-3656')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='-3620')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='-3449')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='-3601')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='-3735')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='-5996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='-6718')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='-6583')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='-6767')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='-6800')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='-6525')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='-6170')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='-5676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='-4911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='-4911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='-4801')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='-1982')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='-1810')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='-1834')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='-2256')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='-2325')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='-2684')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='-2675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='-2778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='-2688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='-2650')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='-2557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='-2355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='-2318')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='-2582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='-2811')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='-3182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='-3578')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='-3544')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='-3148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='-3345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='-3137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='-2809')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='-2501')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='-2493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='-2157')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='-2137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='-2155')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='-2498')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='-2368')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='-3513')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='-4566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='-5345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='-6057')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='-5799')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='-5341')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='-5395')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='-5979')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='-6090')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='-6778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='-6378')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='-5473')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='-5382')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='-4608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='-4316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='-4055')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='-3867')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='-3482')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='-3116')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='-3010')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='-2944')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='-2819')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='-3644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='-4499')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='-5795')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='-6198')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='-6174')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='-6102')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='-6218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='-5898')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='-5986')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='-5633')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='-6210')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='-5783')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='-5726')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='-5539')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='-5408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='-4608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='-3876')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='-3618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='-3292')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='-1685')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='-2072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='-2050')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='-1670')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='-1792')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='-3485')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='-3911')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='-4578')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='-4788')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='-4459')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='-4693')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='-4830')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='-4652')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='-4452')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='-5394')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='-5538')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='-5866')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='-5225')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='-5162')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='-5250')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='-4384')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='-4218')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='-4016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='-3222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='-3311')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='-3183')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='-2974')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='-2945')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='-2933')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='-3570')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='-4545')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='-5119')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='-5737')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='-6515')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='-6776')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='-6755')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='-6361')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='-6546')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='-6273')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='-5402')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='-5797')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='-5647')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='-5747')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='-5443')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='-5445')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='-4557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='-4019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='-3484')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='-3616')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='-3559')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='-3408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='-3609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='-4020')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='-4182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='-4997')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='-5810')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='-5595')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='-15224')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='-8695')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='-4575')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='-6313')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='-6104')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='-5750')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='-5764')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='-5649')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='-5249')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='-5562')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='-4875')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='-4619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='-4611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='-3619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='-3467')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='-3564')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='-3672')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='-3614')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='-3621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='-3868')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='-3969')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='-3886')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='-4381')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='-4271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='-3967')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='-4002')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='-3562')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='-3874')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='-3561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='-4690')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='-5196')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='-5211')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='-5037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='-4963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='-4048')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='-3708')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='-3215')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='438200', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='-1103')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='-1286')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='-1351')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='-1427')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='-1246')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='-1101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='-909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='-1472')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='-1523')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='-1435')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='-1784')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='-1757')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='-1682')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='-1745')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='-1590')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='-500')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='1379')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='-45')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='-346')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='-580')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='-752')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='-1367')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='-1906')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='101')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='-366')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='-740')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='-550')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='432')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='1595')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='275')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='1019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='3444')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='3629')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='3203')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='215')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='380')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='890')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='-446')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='-200')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='-44')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='-424')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='-718')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='946')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='-944')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='3129')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='453')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='194')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='-246')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='-122')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='430')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='1582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='720')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='1333')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='588')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='642')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='1096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='313')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='374')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='204')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='692')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='-196')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='1888')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='2502')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='1840')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='2437')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='1930')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='1219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='-250')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='-1971')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='-1029')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='-1072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='-388')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='229')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='1131')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='-726')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='166')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='965')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='2341')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='2354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='2565')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='1136')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='367')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='173')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='460')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='358')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='-308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='-1006')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='93')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='-723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='147')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='-551')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='-626')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='2316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='714')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='600')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='953')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='2267')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='-403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='999')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='475')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='1663')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='829')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='1055')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='-314')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='1431')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='1201')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='1280')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='1431')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='1145')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='1635')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='957')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='1019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='1219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='1143')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='-893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='-1019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='-1389')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='-182')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='-220')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='502')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='940')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='1719')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='1592')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='960')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='1537')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='1177')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='1337')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='737')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='917')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='1075')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='2328')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='1192')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='867')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='184')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='12')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='978')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='256')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='-1007')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='614')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='205')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='195')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='316')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='1241')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='1748')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='1046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='1099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='-202')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='-722')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='680')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='440')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='870')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='475')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='1959')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='1506')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='1027')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='677')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='-759')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='-2042')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='-2554')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='-2178')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='-2126')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='-2484')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='-1980')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='-1072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='-524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='-1366')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='-1753')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='-893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='-845')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='-1148')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='-2710')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='-2297')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='-2208')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='-2037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='-997')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='1048')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='-955')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='-1334')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='-1121')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='-1625')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='-1419')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='-671')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='-1501')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='-1511')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='-1618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='-1037')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='-192')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='1397')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='-627')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='-711')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='20')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='-130')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='-843')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='-642')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='-320')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='-210')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='417')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='37')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='-2105')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='-2980')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='-3329')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='-1430')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='-1986')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='-3570')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='-3230')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='-2288')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='-2846')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='-2946')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='-2342')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='-1719')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='-668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='-1761')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='-2413')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='-1727')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='-1832')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='-1889')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='-2346')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='-2176')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='374')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='-132')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='993')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='-150')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='-843')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='-1196')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='2577')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='1582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='-1405')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='-1597')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='-186')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='-658')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='-679')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='89')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='680')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='1095')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='-832')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='-785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='-228')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='-40')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='-280')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='-697')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='-697')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='-811')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='-629')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='-1408')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='-1666')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='-1574')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='-1928')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='-1970')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='-2017')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='-1984')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='-2007')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='-1611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='-1851')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='-1908')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='-251')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='-386')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='-121')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='-365')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='-313')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='-506')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='-232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='-288')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='-121')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='-310')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='-245')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='439')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='1078')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='2491')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='1327')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='-115')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='-442')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='203')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='-1439')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='-2019')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='-1491')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='-1285')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='-1309')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='-409')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='-162')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='90')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='319')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='2483')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='1681')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='1572')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='1575')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='302')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='1076')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='1555')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='1971')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='239')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='-351')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='-527')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='-215')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='-782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='452')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='60')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='-848')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='-1383')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='-989')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='-325')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='-382')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='60')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='884')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='659')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='-264')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='-990')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='289')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='-292')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='-542')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='366')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='909')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='992')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='1808')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='-1049')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='543')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='377')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='-619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='-712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='1459')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='257')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='-696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='-1085')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='2873')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='421')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='1696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='2480')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='-707')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='-237')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='1730')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='2990')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='2746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='-174')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='-194')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='485')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='-729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='70')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='907')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='1297')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='776')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='123')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='1557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='1208')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='253')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='508')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='-274')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='-571')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='146')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='567')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='1222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='733')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='1041')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='3222')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='2576')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='2422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='-1036')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='-746')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='-661')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='45')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='3983')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='1694')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='709')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='-844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='-605')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='-661')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='-436')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='-1155')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='-716')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='-877')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='-1024')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='1185')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='884')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='1103')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='1789')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='3132')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='-4032')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='-2114')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='-498')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='174')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='210')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='710')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='2127')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='2386')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='1916')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='53')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='1070')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='564')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='-1181')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='34')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='-847')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='-1318')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='-1842')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='-1404')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='-1129')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='-372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='269')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='572')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='1413')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='1586')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='3161')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='2347')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='2627')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='2502')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='2818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='158')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='-545')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='-370')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='-624')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='-847')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='2315')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='1099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='-417')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='422200', h='3dc1a8de')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='-4307')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e08', v='-4169')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c32', v='-4096')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a3c', v='-4087')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3835', v='-3963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4645', v='-3969')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5455', v='-4411')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6265', v='-5358')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7075', v='-6317')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e85', v='-7298')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c96', v='-7519')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aa5', v='-7351')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8b6', v='-6890')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6c5', v='-6465')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4d7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d30b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef06', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd17', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b27', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11937', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12746', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13556', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14366', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15181', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f85', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d95', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ba4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189b5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197c4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5d5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b3e6', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c1f6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d005', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de15', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec25', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa36', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20845', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21656', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22465', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23276', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24086', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e99', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25ca7', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ab7', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='278c6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='286d6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='294e6', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a301', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2b105', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2bf15', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2cd25', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2db35', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2e946', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2f755', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='30566', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='31375', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3219e', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='32f96', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='33da6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='34bb6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='359de', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='367d6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='375e6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3840e', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3921e', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3a016', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ae27', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3bc36', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3ca47', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3d856', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3e667', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='3f481', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='40285', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41095', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='41ea5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='42cb5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='43ac5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='448d5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='456e6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='464f5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='480ff', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='48f0e', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='49d1d', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ab46', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4b955', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4c769', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4d577', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4e387', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4f196', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='4ffa6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='50dd0', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='51bc6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='529d6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='537e7', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='54600', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55406', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='56215', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57026', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='57e36', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='58c46', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='59a70', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5a867', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5b676', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5c487', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5d296', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5e0a9', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5eeb8', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='5fcc6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='60ad7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='618e7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='626f7', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='63507', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='64317', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65127', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='65f37', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='66d46', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='67b57', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='68967', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='69782', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6a586', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6b395', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6c1a6', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6cfb5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ddc6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6ebd6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='6f9e6', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='707f6', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='71607', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='72417', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='73227', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74037', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='74e47', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='75c57', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='76a63', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='77873', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='78680', v='-6')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7948f', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7a29f', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7b0af', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7bebf', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7cccf', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7dadf', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7e8fa', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f70a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8051a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8132a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8213a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='82f4a', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='83d5a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='84b6a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8597a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8678b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8759b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='883ac', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='891bb', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='89fca', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8adda', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8bbeb', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8c9fc', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8d80b', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8e61a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='8f42a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9023a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9104a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='91e5a', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='92c6a', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='93a84', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='94885', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='95694', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='964a5', v='-9')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='972b4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='980c5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='98ed4', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='99ce5', v='-8')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9aaf5', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9b906', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9c716', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9d526', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9e336', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9f145', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='9ff56', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a0d65', v='-7')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a1b77', v='-6324')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a2986', v='-3516')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a3795', v='-963')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a45a7', v='644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a53b6', v='700')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a61c7', v='942')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a6fd6', v='99')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a7e00', v='464')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a8c00', v='912')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a05', v='289')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aa815', v='32')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ab625', v='46')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ac435', v='200')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ad245', v='921')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ae055', v='744')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='aee65', v='-561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='afc75', v='-68')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b0a85', v='31')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b26a6', v='142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b34b6', v='-123')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b42c6', v='-451')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b50d6', v='-729')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b5ee7', v='-712')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b6cf6', v='-1584')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b7b07', v='-1983')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b8917', v='-1753')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='b9728', v='-1758')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ba537', v='-1891')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bb347', v='-827')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bc157', v='-882')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bcf67', v='-899')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bdd81', v='644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='beb86', v='417')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='bf995', v='524')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c07a6', v='400')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c15b5', v='372')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c23c6', v='484')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c31d5', v='591')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c3fe6', v='336')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c4df5', v='741')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c5c06', v='114')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c6a16', v='507')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c7826', v='-51')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c8636', v='136')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='c9446', v='334')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ca256', v='235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cb066', v='116')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cbe76', v='-417')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ccc87', v='-232')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cda96', v='-184')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ce8a8', v='-219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='cf6b7', v='-134')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d04c8', v='-51')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d12d7', v='143')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d20e7', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d2f02', v='11')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d3d05', v='600')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b15', v='644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d5926', v='836')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d6735', v='1068')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d7546', v='1213')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d8355', v='-135')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9166', v='-755')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d9f75', v='-1498')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dad87', v='-2011')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dbb97', v='-2561')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dc9a8', v='-2338')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='dd7b7', v='-2895')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='de5c6', v='-2780')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='df3d7', v='-2912')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e01d7', v='-2913')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e0fe5', v='-2832')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e1df5', v='-3018')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e2c04', v='-4099')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e3a14', v='-3979')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e4824', v='-3370')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e5634', v='-3428')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e6444', v='-2551')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e7255', v='-2189')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e806f', v='-1757')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e8e7f', v='-477')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='e9c8e', v='-709')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eaa9f', v='-653')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eb8ae', v='-653')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ec6bf', v='-468')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ed4ce', v='-2112')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ee2df', v='-2239')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ef0ef', v='-3198')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='eff01', v='-4087')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f0d10', v='-4308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f1b20', v='-4550')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f2930', v='-4628')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f3740', v='-4301')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f4551', v='-4608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f5361', v='-4857')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6172', v='-4613')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f6f80', v='-4818')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f7d91', v='-4244')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f8ba1', v='-3915')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='f99b1', v='-3805')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fa7c0', v='-3025')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fb5d1', v='-3034')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fc3e0', v='-3295')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fd1fb', v='-2680')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fe00b', v='-2530')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee1c', v='-2083')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='ffc2c', v='-1982')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='100a3b', v='-1790')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10184c', v='-1791')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10265b', v='-2077')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10346c', v='-2724')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10427b', v='-4016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10508d', v='-4320')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='105e9d', v='-4339')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='106cad', v='-4725')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='107abd', v='-4338')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1088cd', v='-3906')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1096de', v='-4119')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10a4ed', v='-4322')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10b2fe', v='-4345')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10c10d', v='-4169')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10cf1e', v='-4354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10dd2e', v='-4160')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10eb66', v='-4453')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='10f94e', v='-3895')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11075e', v='-3281')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11156d', v='-2866')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='112388', v='-2663')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113187', v='-1794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='113fb0', v='-1797')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='114da6', v='-1823')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='115bb6', v='-1782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1169c6', v='-1585')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1177d6', v='-2082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1185e8', v='-2885')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1193f7', v='-3558')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11a208', v='-4838')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11b017', v='-4322')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11be2f', v='-5393')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11cc37', v='-4456')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11da47', v='-4279')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11e857', v='-4354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='11f667', v='-3900')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='120578', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='121386', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122196', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='122fa6', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='123db5', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='124bc5', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1259d5', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1267e4', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='127600', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='128305', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129115', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129f25', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12ad35', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12bb45', v='-1')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12c954', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12d766', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12e575', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='12f386', v='-2')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130196', v='-4')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='130fa6', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='131db7', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='132bc5', v='-3')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1339d4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1347e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1355f4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='136404', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='137214', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138024', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='138e33', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='139c44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13aa54', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13b865', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13c67e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13d48e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13e29e', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13f0ae', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='13febf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='140ccf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='141adf', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1428ef', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1436ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14450f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14531f', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146130', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='146f40', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='147d44', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='148b57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='149965', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14a775', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14b584', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14c397', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14d1a4', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14dfb6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14edc5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='14fbd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1509e5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1517ff', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='152605', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153415', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='154225', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155035', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='155e45', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='156c55', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='157a65', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='158875', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='159686', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15a495', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15b2a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15c0b6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15cec6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15dcd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15eae6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='15f8f5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='160706', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='161517', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='162326', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163137', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='163f46', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='164d57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='165b67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='166982', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='167786', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='168596', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1693a6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16a1b5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16afc6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16bdd5', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16cbe6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16d9f6', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16e807', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='16f616', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='170429', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='171236', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172047', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='172e57', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='173c67', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='174a77', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='175887', v='0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='176694', v='-6844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1774a3', v='-6848')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1782b3', v='-7276')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1790c5', v='-6718')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='179ed4', v='-6044')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17ace4', v='-5879')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17bafd', v='-6067')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17c90f', v='-5484')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d71e', v='-5437')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17e52f', v='-5342')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17f33f', v='-4981')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18014f', v='-5193')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='180f5f', v='-6321')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='181d6e', v='-6923')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='182b7f', v='-7889')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18398f', v='-13464')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1847a1', v='-13354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1855af', v='-12813')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1863c0', v='-11996')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1871cf', v='-12436')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='187fe0', v='-11658')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='188def', v='-12508')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='189c00', v='-11965')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18b80d', v='-7567')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18c61c', v='-8100')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18d42c', v='-7676')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18e23b', v='-6565')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18f04b', v='-6167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='18fe5e', v='-5660')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='190c76', v='-4475')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='191a86', v='-4306')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='192896', v='-4252')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1936a6', v='-4125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1944b7', v='-4125')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1952c6', v='-4498')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1960d7', v='-5137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='196ee6', v='-5967')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='197cf8', v='-6354')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='198b0f', v='-5965')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19991f', v='-6615')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19b541', v='-6619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19c34d', v='-6199')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19d15e', v='-6235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19df80', v='-6313')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19ed90', v='-6079')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19eebe', v='-6075')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='19fb8e', v='-2390')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a09a0', v='-2600')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a17ae', v='-3051')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a25be', v='-3338')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a33cd', v='-2238')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a41dd', v='-2137')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a4fed', v='-1546')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a5e08', v='-1670')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a6c05', v='-969')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a7a15', v='-1123')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a8826', v='-1072')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9637', v='-481')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aa445', v='-537')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ab255', v='-995')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ac065', v='-1819')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ace75', v='-2636')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1adc87', v='-2920')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1aea96', v='-2594')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1af8a7', v='-2898')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b06b7', v='-2173')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1b14c6', v='-2092')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='311')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c8270', v='399')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c907e', v='3486')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c9e8f', v='3357')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1caca2', v='3670')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cbab1', v='3580')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cc8c1', v='5398')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cd6d0', v='5478')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ce4de', v='5618')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1cf2f0', v='5659')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0109', v='5923')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d0f06', v='6651')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d1d15', v='6654')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d2b25', v='6713')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d3935', v='6885')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d4745', v='6893')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d5555', v='6705')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d6366', v='5853')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7175', v='5545')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d7f86', v='5589')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d8d95', v='-3219')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1d9ba6', v='-3620')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1da9b6', v='-3623')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1db7c7', v='-3472')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dc5d5', v='-3630')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dd3e6', v='-3723')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1de1f5', v='-6033')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1df006', v='-6752')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1dfe16', v='-6647')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e0c26', v='-6778')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e1a36', v='-6794')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e2847', v='-6593')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e3659', v='-6136')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e4467', v='-5653')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e5281', v='-4910')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6086', v='-4908')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e6e96', v='-4803')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e7ca6', v='-1970')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e8ab5', v='-1820')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1e98c6', v='-1821')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ea6d5', v='-2271')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eb4e6', v='-2332')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ec2f6', v='-2646')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ed106', v='-2644')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1edf16', v='-2749')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1eed26', v='-2728')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1efb36', v='-2587')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f0946', v='-2548')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1756', v='-2377')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f2566', v='-2339')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f3376', v='-2566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4187', v='-2784')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f4f96', v='-3191')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f5da7', v='-3581')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f6bb6', v='-3591')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f79c7', v='-3124')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f87d6', v='-3337')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f95e7', v='-3142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fa401', v='-2806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fb204', v='-2480')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fc016', v='-2497')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fce25', v='-2171')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fdc35', v='-2133')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1fea45', v='-2159')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1ff855', v='-2500')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='200665', v='-2395')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='201475', v='-3469')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='202286', v='-4512')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203095', v='-5355')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='203ea5', v='-5915')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='204cb6', v='-5771')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='205ac6', v='-5287')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2068d6', v='-5386')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2076e6', v='-5976')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2084f6', v='-6100')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='209306', v='-6742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20a116', v='-6312')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20af26', v='-5533')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20bd37', v='-5455')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20cb46', v='-4630')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20d957', v='-4348')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20e767', v='-4046')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='20f581', v='-3855')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='210386', v='-3519')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211194', v='-3131')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='211fa5', v='-3014')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='212db5', v='-2904')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='213bc5', v='-2826')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2149d6', v='-3680')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2157e5', v='-4507')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2165f6', v='-5844')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='217406', v='-6195')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='218217', v='-6165')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219026', v='-6142')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='219e39', v='-6223')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ac46', v='-5938')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba57', v='-5926')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21c867', v='-5557')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21d677', v='-6240')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21e487', v='-5750')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21f296', v='-5772')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2200a6', v='-5468')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='220eb7', v='-5393')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='221cc6', v='-4543')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='222ad7', v='-3876')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2238e7', v='-3622')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='224701', v='-3292')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='225505', v='-1681')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='226315', v='-2082')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227125', v='-2043')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='227f35', v='-1675')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='228d45', v='-1785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='229b54', v='-3494')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22a965', v='-4080')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22b776', v='-4454')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22c586', v='-4816')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22d397', v='-4405')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22e1a6', v='-4620')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22efb6', v='-4820')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='22fdc7', v='-4643')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='230bd7', v='-4435')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2319e6', v='-5397')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2327f6', v='-5558')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23361b', v='-5883')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='234416', v='-5207')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='235226', v='-5203')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236037', v='-5253')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='236e46', v='-4342')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='237c57', v='-4194')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='238a66', v='-3991')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='239881', v='-3195')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23a685', v='-3328')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23b495', v='-3191')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23c2a4', v='-2966')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23d0b5', v='-2959')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23dec4', v='-2916')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23ecd5', v='-3620')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='23fae4', v='-4562')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2408f6', v='-5013')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='241706', v='-5793')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='242518', v='-6605')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='243325', v='-6787')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244137', v='-6732')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='244f46', v='-6435')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b66', v='-6415')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='247976', v='-6261')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='248786', v='-5371')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24957e', v='-5703')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24a38f', v='-5668')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24b19c', v='-5810')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24bfac', v='-5495')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24cdbc', v='-5368')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24dbcd', v='-4539')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24e9e5', v='-4003')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='24f808', v='-3487')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='250616', v='-3597')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='251426', v='-3575')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='252236', v='-3422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253047', v='-3610')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='253e56', v='-4069')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='254c67', v='-4209')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='255a76', v='-4977')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='256887', v='-5845')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='257697', v='-5662')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2584a8', v='-15155')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2592b6', v='-8621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25a0c7', v='-4609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25aed7', v='-6329')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25bce7', v='-6120')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25caf8', v='-5819')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25d907', v='-5800')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25e718', v='-5627')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='25f527', v='-5318')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='260338', v='-5543')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261149', v='-4916')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='261f59', v='-4589')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='262d68', v='-4670')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='263b83', v='-3694')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='264986', v='-3491')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='265795', v='-3582')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2665a6', v='-3683')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2673b5', v='-3608')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2681c6', v='-3681')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='268fd5', v='-3850')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='269de6', v='-3923')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26abf6', v='-3955')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26ba06', v='-4467')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26c817', v='-4257')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26d62b', v='-3915')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26e436', v='-3897')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='26f247', v='-3531')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270057', v='-3798')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e67', v='-3628')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='271c77', v='-4540')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='272a87', v='-5171')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='273897', v='-5038')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2746a8', v='-5028')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2754b9', v='-5029')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2762c7', v='-3993')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2770d8', v='-3551')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='277ee7', v='-3206')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='674601', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='22123:137:88:76:103:69:89:6047:6571:2134:6414:2223:2727.231:1435.675:5.979:0.067:0:4171:41039:29052:42104:12218:24721:13504:8975:11153:2990:8665:9759:11742')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='673801', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0:0:0:0:0:0:0:2472:22505:25160:16425:30012:23514.229:11675.362:9.272:0.416:0:6491:3221:2867:4204:22822:3047:6263:15342:9785:32424:23346:21578:23508')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='673401', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='72898:191:188:176:178:174:181:10441:14079:1360:46667:74131:80996.13:50324.326:32.188:0.038:0:44027:200289:109216:52461:12951:75896:69196:104852:117036:96903:120714:124308:96207')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='673001', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0:0:0:0:0:0:0:3476:3226:5597:4853:0:0:0:0.001:0.137:0:0:0:0:0:50735:59205:0:0:0:0:0:0:0')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='26274601', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::0::6::13::20::27::32::34::41::48::54::61::68::75::82::89::96::103::110::110::111::116::119::123::129')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='0::5::5::7::11::12::12::17::24::30::37::44::51::58::65::69::71::71::71::73::75::76::76::81::0::6::13::20::27::34::40::44::50::::51::51::51::51::51::51::51::51::51::51::54::60::63::69::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='6::13::20::27::34::38::44::46::46::47::52::58::65::66::66::67::69::69::70::76::83::89::96::0::5::12::19::25::30::31::35::37::37::37::37::38::44::45::45::45::45::45::45::48::51::56::62::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='6::14::21::28::35::42::47::50::50::50::52::59::65::69::72::74::75::75::75::75::78::79::82::0::7::14::21::28::34::38::44::45::45::49::56::63::70::76::80::835::1675::2038::2039::2856::3158::3607::4431::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='629::797::1456::2382::2476::2477::2821::2821::2821::::2821::2821::2856::2865::2865::3049::3223::3267::3532::4304::5147::5147::5449::0::101::102::252::592::605::605::605::605::612::612::612::612::612::612::612::679::767::767::767::767::767::767::910::0::1158')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='2289::2701::3076::3076::3385::3904::3904::3904::3904::3904::3904::3904::3904::3904::3904::3911::4023::4599::5237::5494::5780::6072::0::622::622::622::622::622::716::819::819::819::819::819::819::870::870::870::870::870::870::870::870::870::870::1024::0::1127')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='1954::2173::2377::2377::2377::2377::2377::2377::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2384::2400::2400::0::163::163::163::163::163::163::163::163::204::330::751::1400::1433::1433::1433::1435.1::1435.1::1435.1::1435.1::1435.1::1435.144::1435.375::1435.381::0::1.179')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='2.486::3.869::5.278::5.809::5.811::5.811::5.811::5.843::5.967::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.969::5.969::0::0::0::0::0::0::0::0::0::0::0::0.001::0.014::0.032::0.04::0.046::0.049::0.05::0.05::0.05::0.05::0.05::0.05::0.053::0::0.005')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.009::0.009::0.009::0.009::0.009::0.009::0.014::0::0.004::0.02::0.031::0.042::0.044::0.044::0.044::0.044::0.044::0.044::0.044::0.047::0.05::0.051::0.054::0.054::0.054::0::0::0::0::175::1878::0::2303')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='5016::7889::10825::12785::13428::14568::16281::17870::18757::19673::22314::25317::28017::30611::32571::::33078::33570::34865::36124::37670::39908::0::978::2540::4236::5992::6773::6818::6915::7643::8510::8618::::9354::10334::10857::11190::11387::11387::12818::15547::19011::21077::22610::25682::0::2682::5757::9094')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='12439::14810::16426::18172::20462::22851::24957::26912::29200::31789')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='8197::8264::8365::8365::8996::9996::10570::10570::10570::10807::0::388::776::1655::2374::2391::2391::2429::3332::3677::3768::3851::4294::4930::5847::6625::7852::9492::11328::13376::15620::17946::20170::22469::0::1979::4179::4817::5302::5612::5802::6075::6787::7172::7489::7668::7867::8184')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='8270::8270::8270::8270::8270::8279::8425::8766::9261::11379::0::967::2232::3224::3584::3708::3742::4192::4373::4379::4379::4379::4379::4379::4379::4468::4816::5111::5533::6393::6740::7394::7394::7988::0::1479::2407::2907::3341::3347::3347::3522::4521::4702::5104::5399::6511::6511')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='6511::6511::7554::8046::8046::8084::8781::9437::9437::10034::0::258::258::258::258::258::303::541::1097::1122::1122::1122::1122::1397::1429::2052::2638::2638::2638::2638::2638::2779::2779::2779::0::211::716::993::993::993::993::1058::1060::1060::1060::1060::1123::1640')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='3280::3952::3962::3962::3962::4297::5586::6998::7956::0::492::1570::2683::3585::3615::3618::3659::3659::3659::3659::3973::6767::8644::8717::8718::8718::8718::8718::8718::8718::8898::8898::9205::0::502::1825::3722::5758::7237::8159::8226::8226::8226::8226::8226::8226::8226::8226')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='8226::8240::8504::8980::9466::10308::10666::10666::10739')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='26273801', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='273::304::304::304::392::1467::1961::2735::4511::::12114::16337::18252::18452::19051::20724::21115::21611::21616::21616::21647::22460::22505::0::1428::1786::1821::1821::2100::3116::4606::5700::6263::7232::8321::9202::9706::10109::10567::11827::12356::14818::17416::20186::22628::24467::25160::0::16')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='16::16::18::761::2317::2345::3031::5010::7681::10719::13491::14079::14541::14788::15028::15551::16182::16182::16327::16351::16394::16424::0::1254::2521::3304::4214::6189::8542::8884::9714::10907::12447::13604::14407::14928::16855::18323::20016::22306::23952::25511::26700::27858::29512::30012::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='14::14::16::848::2512::4114::5556::7070::7967::9424::10812::11722::12829::13950::15033::17095::19423::20670::21129::21828::22608::23444::0::1024::1508::1786::1985::2951::4900::6589::8053::8849::8929::8929::8929::9502::10380::11200::11669.43::11670.714::11671.501::11673.236::11674.324::11674.616::11674.887::11675.345::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='0::0::0::0::0.632::1.57::2.787::4.389::5.353::6.676::7.825::8.473::9.059::9.07::9.083::9.113::9.149::9.186::9.222::9.254::9.263::9.267::0::0.054::0.078::0.094::0.113::0.149::0.2::0.229::0.234::0.241::0.244::0.245::0.245::0.245::0.245::0.245::0.246::0.276::0.309::0.348::0.383::0.408::0.415::0.416::0::0.022')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='0.031::0.032::0.033::0.045::0.076::0.1::0.121::0.161::0.197::0.227::0.252::0.257::0.264::0.275::0.295::0.315::0.322::0.329::0.332::0.348::0.357::0.357::0::0::0::0::0::0::0.015::0.051::0.062::0.068::0.079::0.091::0.094::0.094::0.097::0.108::0.125::0.161::1425::3563::5087::6081::6491::6491::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='0::0::0::0::3::4::17::17::17::17::83::83::83::83::83::::2815::3221::3221::3221::3221::3221::0::0::0::0::0::0::503::2124::2124::2135::2187::::2220::2220::2220::2220::2231::2857::2867::2867::2867::2867::2867::2867::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='0::0::0::0::5::5::5::5::5::5')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='14139::14218::14538::16467::16493::16493::17913::20388::22503::22822::0::242::242::242::242::473::1614::2783::2783::2785::3043::3046::3046::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::0::0::0::101::101::101::155::155::155::155::155::158::158::158')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='303::689::1267::3291::5362::5964::5964::6205::6263::6263::0::67::78::78::78::96::279::1257::2169::3382::5628::7692::9144::9800::11410::13193::13770::14500::14502::14526::14528::14693::15337::15342::0::0::128::128::128::631::1960::2834::2847::2994::3445::3445::3445::4010')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='5304::6802::7188::7304::7777::8119::8119::8238::9731::9785::0::3202::5137::5593::6304::8577::12322::12561::12561::13960::16533::20127::22841::22863::23106::23247::23247::24987::26402::27590::28075::29263::31438::32325::0::171::171::200::344::1476::2425::3387::4145::5875::9210::12291::15144::15144')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='15144::15144::17267::21864::23232::23346::23346::23346::23346::0::86::86::86::86::188::709::1333::2511::4313::7593::10434::10434::10443::10622::10810::11293::12302::14859::17476::19565::19742::21035::21234::0::13::13::13::13::13::13::216::929::2058::3700::5698::8782::11698::14663')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='17767::18546::19155::19155::19155::19155::20730::23016::23508')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='26273401', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::0::8::16::24::32::40::48::56::65::73::81::89::97::105::114::122::131::138::145::152::160::167::175::183')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='0::8::16::23::31::39::47::55::63::71::79::87::96::104::112::120::128::135::142::150::157::165::172::180::0::8::17::25::34::43::51::58::66::::79::85::92::98::105::111::117::124::131::138::145::153::160::168::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='8::16::25::33::41::49::56::64::70::77::84::91::98::105::111::118::125::132::139::147::154::162::170::0::7::16::24::32::40::48::55::63::69::76::82::89::96::103::109::116::122::128::135::143::150::158::166::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='8::17::25::34::43::51::58::66::73::80::87::94::101::108::115::122::129::135::142::150::157::165::172::0::8::17::25::34::42::50::58::65::72::78::85::92::100::107::114::2595::7913::10294::10439::10439::10439::10441::10441::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='2::4::9::9::9::9::69::181::236::::327::461::720::1393::2215::3059::4593::6342::8041::9944::11561::12314::13166::0::47::47::47::47::47::47::47::47::48::59::87::127::134::135::142::182::537::769::1000::1156::1208::1230::1264::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='0::0::0::0::58::464::1214::2866::5195::7644::10189::13108::15902::18773::21557::24345::28271::32267::36012::39360::42352::44782::0::1215::1879::2581::3232::3730::4627::6845::9426::13213::17460::21812::26408::30878::35346::40061::44776::49145::53501::57575::61429::64968::68029::71154::0::2541')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='4757::6749::8707::10446::12296::14817::18021::22192::24710::29209::33799::38000::42199::46375::50681::55062::59387::63686::67971::71883::75378::78274::0::1965::3785::5589::7408::9042::10735::13143::16254::20473::25210::29898::34989::39265::43547::47659::50298.816::50302.733::50306.729::50310.326::50313.783::50317.062::50320.016::50322.277::0::1.986')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='3.746::5.427::7.116::8.649::10.225::12.377::14.972::18.155::21.519::24.079::26.789::29.872::32.038::32.075::32.093::32.11::32.132::32.149::32.163::32.173::32.181::32.183::0::0::0::0::0::0::0::0::0::0.001::0.005::0.008::0.012::0.014::0.014::0.014::0.014::0.017::0.023::0.026::0.029::0.032::0.035::0.038::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.004::0.013::0.023::0.035::0.039::0.04::0.04::0::0::0::0::0::0::0::0::0.011::0.064::0.184::0.299::0.403::0.491::0.587::0.684::0.777::0.882::4649::11369::18384::25539::32098::38189::0::5631')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='11134::16580::21819::26934::32449::39011::46164::57329::70535::83592::96112::107934::119836::131836::143932::::159972::167838::175759::182940::189261::195260::0::4361::8637::12844::17026::21292::26185::31514::37629::44147::50295::::62972::69142::75490::81871::88411::92634::95263::98136::101493::104338::106264::108086::0::1118::2125::3163')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='3972::4424::5117::6670::8682::11273::14036::16800::19585::21687')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='12951::12951::12951::12951::12951::12951::12951::12951::12951::12951::0::0::0::0::0::0::0::0::0::0::2097::5658::9307::12837::16437::20072::24855::31120::37813::44635::51509::58224::64519::70460::0::4912::9779::12468::14377::16196::18098::20357::22916::25572::28333::31048::33673::36268')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='38769::41197::43617::46222::49307::52694::56229::59586::62790::66147::0::2563::5010::7377::9547::11662::13970::16722::19820::23668::28455::34079::39799::45148::50589::56448::62674::69084::75584::81629::87007::92190::96664::100953::0::3686::6981::10109::13149::16039::19168::23164::28263::34238::40473::46590::52821::58868')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='64810::70628::77026::83160::89027::94673::100155::105383::109691::113559::0::1996::3876::5949::7945::9673::11583::15197::19355::23959::28689::33229::37981::42745::47470::52656::58228::63768::69353::74634::79872::84699::88966::93090::0::3272::6519::9646::12665::15529::18785::22767::27361::33026::39197::45634::52231::58688')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='71623::77897::83661::88919::94509::100226::106004::111517::116497::0::3504::7147::10760::14341::17823::21561::25845::30381::35821::41529::48026::57310::64898::70924::77195::83135::89105::94900::100321::105698::111053::115727::120309::0::3610::7127::10778::14421::18015::21712::25564::29454::33598::37946::42100::46054::49824::53500')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='57099::61385::66221::71352::76382::81368::85828::89677::93036')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='26273001', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='1070::1205::1242::1361::1873::2688::2888::2968::3013::::3093::3165::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::0::504::975::1420::1776::2305::2796::3212::4002::4254::4373::4494::4549::4753::4950::5087::5453::5453::5453::5453::5454::5473::5509::5581::0::581')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='1231::1927::2760::3902::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.017::0.031::0.048::0.065::0.085::0.105::0.114::0.116::0.116::0.116::0.116::0.116::0.117::0.12::0.123::0.128::0.135::0.135::0.135::0.135::0.135::0.135::0.136::0::0.016')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='0.036::0.054::0.074::0.096::0.119::0.137::0.152::0.165::0.178::0.19::0.204::0.216::0.228::0.237::0.249::0.256::0.256::0.256::0.256::0.256::0.256::0.257::0::0.012::0.018::0.02::0.021::0.025::0.032::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='9208::9490::12579::16633::20164::23882::28334::33713::39220::44909::0::6542::13180::19855::26594::33432::40280::46777::52524::57875::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='1314601', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='270370')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='1313801', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='306693')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='1313401', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='1576111')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='1313001', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='127098')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='52514601', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::22123::22129::22136::22143::22150::22156::22158::22166::22173::22180::22186::22193::22200::22207::22214::22221::22228::22235::22235::22236::22241::22244::22247::22254')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='22261::22267::22267::22269::22273::22274::22274::22280::22287::22294::22301::22308::22315::22322::22329::22333::22335::22335::22335::22336::22338::22339::22339::22344::22351::22358::22365::22372::22379::22386::22391::22395::22402::::22404::22404::22404::22404::22404::22404::22404::22404::22404::22404::22407::22413::22416::22422::22429')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='22436::22443::22450::22457::22464::22468::22475::22477::22477::22478::22483::22489::22495::22497::22497::22498::22499::22499::22500::22507::22513::22520::22526::22533::22538::22545::22552::22559::22564::22564::22569::22571::22572::22572::22572::22573::22579::22580::22580::22580::22580::22580::22580::22583::22585::22590::22596::22603')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='22610::22617::22624::22632::22639::22645::22650::22653::22653::22653::22655::22662::22669::22672::22675::22677::22678::22678::22678::22678::22682::22683::22686::22693::22701::22708::22715::22722::22728::22732::22738::22740::22740::22744::22751::22758::22765::22770::22775::23529::24370::24733::24734::25551::25853::26301::27126::28742')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='29372::29540::30199::31125::31218::31219::31564::31564::31564::::31564::31564::31599::31607::31607::31792::31965::32010::32274::33047::33890::33890::34193::35316::35417::35418::35569::35909::35921::35921::35921::35921::35928::35928::35928::35928::35928::35928::35928::35995::36083::36083::36083::36083::36083::36083::36226::37450::38609')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='39740::40151::40527::40527::40836::41356::41356::41356::41356::41356::41356::41356::41356::41356::41356::41363::41476::42051::42690::42946::43231::43524::43865::44488::44488::44488::44488::44488::44582::44685::44685::44685::44685::44685::44685::44736::44736::44736::44736::44736::44736::44736::44736::44736::44736::44890::46089::47216')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='48043::48262::48466::48466::48466::48466::48466::48466::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48474::48491::48491::48816::48980::48980::48980::48980::48980::48980::48980::48980::49022::49147::49569::50218::50251::50251::50251::50252.91::50252.91::50252.91::50252.91::50252.91::50252.954::50253.185::50253.192::50253.487::50254.667')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='50255.973::50257.356::50258.765::50259.296::50259.299::50259.299::50259.299::50259.332::50259.455::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.457::50259.458::50259.458::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.469::50259.482::50259.5::50259.507::50259.513::50259.516::50259.517::50259.517::50259.517::50259.517::50259.517::50259.517::50259.521::50259.535::50259.54')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='50259.54::50259.54::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.546::50259.546::50259.546::50259.546::50259.547::50259.547::50259.552::50259.557::50259.561::50259.577::50259.588::50259.6::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.604::50259.608::50259.609::50259.612::50259.612::50259.612::50258::50258::50258::50258::50434::52137::54431::56734')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='59447::62321::65257::67217::67860::69000::70713::72302::73189::74106::76746::79750::82449::85043::87003::::87510::88002::89297::90556::92102::94340::95470::96449::98011::99707::101463::102244::102289::102386::103115::103983::104091::::104826::105806::106330::106662::106859::106859::108290::111019::114483::116549::118083::121154::124524::127207::130282::133619')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='136963::139335::140951::142698::144988::147377::149483::151438::153726::156315')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='174829::174896::174996::174996::175627::176628::177201::177201::177201::177439::178849::179238::179626::180505::181224::181241::181241::181279::182183::182528::182619::182701::183144::183780::184697::185475::186702::188342::190179::192226::194470::196796::199020::201319::203571::205550::207751::208389::208873::209184::209373::209646::210358::210744::211061::211240::211439::211756')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='211843::211843::211843::211843::211843::211852::211998::212339::212833::214951::217077::218045::219309::220302::220662::220786::220819::221269::221451::221458::221458::221458::221458::221458::221458::221547::221895::222189::222611::223471::223818::224472::224473::225066::226054::227533::228461::228962::229396::229401::229401::229577::230576::230758::231159::231454::232566::232566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='232566::232566::233609::234101::234101::234139::234836::235492::235492::236089::237208::237467::237467::237467::237467::237467::237511::237749::238306::238331::238331::238331::238331::238606::238637::239260::239846::239846::239846::239846::239847::239988::239988::239988::240200::240411::240916::241193::241194::241194::241194::241260::241262::241262::241262::241262::241325::241842')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='243482::244154::244164::244164::244164::244499::245788::247200::248157::248866::249358::250436::251549::252452::252482::252484::252526::252526::252526::252526::252840::255634::257511::257584::257585::257585::257585::257585::257585::257585::257766::257766::258073::258628::259130::260454::262350::264387::265865::266787::266854::266854::266854::266854::266854::266854::266854::266854')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='266854::266868::267132::267609::268095::268936::269294::269294::269367')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='52513801', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::2472')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='2745::2776::2776::2776::2864::3939::4434::5207::6983::::14587::18809::20724::20924::21523::23196::23587::24084::24088::24088::24119::24933::24978::24978::26406::26764::26799::26799::27079::28094::29584::30678::31242::32211::33301::34181::34685::35088::35546::36806::37336::39798::42396::45166::47608::49447::50139::50139::50155')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='50155::50156::50158::50901::52457::52486::53171::55151::57821::60860::63632::64220::64682::64929::65169::65692::66324::66324::66469::66492::66535::66565::66565::67820::69087::69869::70780::72755::75107::75449::76279::77473::79013::80171::80973::81494::83421::84889::86582::88872::90518::92077::93266::94424::96079::96579::96579::96579')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='96594::96594::96596::97428::99092::100694::102136::103651::104547::106004::107392::108302::109410::110530::111613::113676::116005::117251::117711::118409::119188::120024::120093::121118::121602::121880::122079::123044::124994::126683::128148::128945::129025::129025::129025::129597::130475::131295::131764.303::131765.588::131766.375::131768.11::131769.198::131769.49::131769.761::131770.219::131770.236::131770.236')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='131770.236::131770.236::131770.236::131770.236::131770.868::131771.806::131773.023::131774.625::131775.589::131776.912::131778.062::131778.709::131779.295::131779.306::131779.319::131779.349::131779.386::131779.423::131779.458::131779.49::131779.499::131779.503::131779.509::131779.564::131779.587::131779.604::131779.623::131779.659::131779.709::131779.738::131779.744::131779.752::131779.755::131779.755::131779.755::131779.755::131779.755::131779.755::131779.756::131779.786::131779.819::131779.858::131779.893::131779.918::131779.926::131779.926::131779.926::131779.949')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='131779.958::131779.959::131779.96::131779.972::131780.003::131780.027::131780.049::131780.089::131780.125::131780.155::131780.179::131780.184::131780.191::131780.202::131780.222::131780.243::131780.251::131780.258::131780.261::131780.277::131780.285::131780.285::131780.288::131780.288::131780.288::131780.288::131780.288::131780.289::131780.303::131780.34::131780.35::131780.356::131780.368::131780.381::131780.384::131780.384::131780.386::131780.398::131780.415::131780.451::133205::135343::136866::137861::138272::138272::138272::138272')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='138272::138272::138272::138272::138275::138277::138290::138290::138290::138290::138355::138355::138355::138355::138355::::141088::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141997::143618::143618::143629::143681::::143714::143714::143714::143714::143725::144351::144362::144362::144362::144362::144362::144362::144362::144362::144362::144362')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='144362::144362::144362::144362::144368::144368::144368::144368::144368::144368')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='162707::162786::163107::165035::165062::165062::166481::168956::171072::171391::171391::171634::171634::171634::171634::171865::173006::174175::174175::174177::174435::174438::174438::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174540::174540::174540::174594::174594::174594::174594::174594::174598::174598::174598')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='174742::175129::175706::177731::179803::180405::180405::180646::180704::180704::180704::180771::180782::180782::180782::180801::180983::181961::182873::184086::186332::188396::189848::190504::192114::193897::194474::195204::195206::195230::195232::195397::196041::196046::196046::196046::196175::196175::196175::196678::198007::198881::198895::199043::199494::199494::199494::200058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='201353::202851::203237::203353::203825::204167::204167::204286::205778::205833::205833::209036::210970::211426::212138::214410::218156::218395::218395::219795::222368::225963::228676::228698::228941::229082::229082::230822::232237::233425::233910::235098::237273::238160::238259::238431::238431::238460::238604::239735::240685::241648::242406::244137::247471::250551::253404::253404')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='253404::253404::255527::260124::261492::261606::261606::261606::261606::261606::261692::261692::261692::261692::261794::262315::262939::264118::265921::269200::272041::272041::272049::272229::272417::272900::273909::276466::279084::281173::281349::282642::282841::283185::283198::283198::283198::283198::283198::283198::283402::284114::285244::286886::288884::291968::294884::297849')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='300954::301733::302341::302341::302341::302341::303915::306201::306693')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='52513401', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::72898::72906::72914::72922::72931::72938::72946::72955::72963::72972::72979::72987::72995::73004::73012::73021::73029::73037::73045::73052::73060::73067::73074::73083')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='73092::73100::73108::73116::73124::73131::73139::73147::73155::73164::73172::73180::73189::73197::73205::73213::73221::73228::73235::73242::73250::73258::73265::73273::73281::73290::73298::73307::73316::73324::73333::73341::73349::::73362::73368::73374::73381::73387::73394::73400::73407::73414::73421::73428::73436::73443::73451::73459')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='73467::73476::73484::73492::73501::73508::73516::73523::73529::73536::73543::73550::73557::73564::73571::73578::73585::73592::73599::73607::73614::73622::73630::73639::73647::73655::73663::73672::73680::73687::73694::73702::73709::73715::73721::73728::73735::73742::73748::73755::73762::73769::73776::73783::73791::73798::73806::73814')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='73823::73831::73840::73849::73858::73866::73874::73881::73888::73895::73902::73909::73917::73924::73931::73938::73945::73952::73959::73966::73973::73980::73988::73996::74005::74014::74022::74031::74039::74047::74055::74062::74069::74076::74084::74091::74098::74105::74112::76593::81912::84293::84438::84438::84438::84439::84440::84440')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='84442::84445::84450::84450::84450::84450::84510::84622::84677::::84768::84902::85161::85834::86656::87500::89034::90783::92482::94386::96003::96756::97608::98520::98568::98568::98568::98568::98568::98568::98569::98569::98570::98581::98609::98649::98656::98657::98664::98704::99059::99291::99522::99679::99730::99752::99786::99882::99882')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='99882::99882::99882::99882::99940::100346::101096::102749::105078::107527::110072::112991::115786::118656::121441::124228::128154::132149::135895::139243::142235::144665::146550::147766::148430::149132::149783::150281::151178::153396::155977::159764::164011::168363::172959::177429::181897::186612::191328::195697::200054::204127::207981::211520::214581::217705::220682::223224')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='225440::227431::229389::231128::232979::235501::238705::242877::245395::249894::254484::258685::262884::267059::271365::275747::280072::284371::288656::292567::296062::298958::301678::303643::305464::307268::309087::310721::312414::314823::317933::322153::326889::331577::336668::340944::345227::349338::151978.697::151982.614::151986.61::151990.207::151993.665::151996.943::151999.897::152002.158::152004.207::152006.194')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='152007.954::152009.635::152011.324::152012.857::152014.433::152016.586::152019.181::152022.365::152025.728::152028.288::152030.998::152034.081::152036.247::152036.284::152036.302::152036.319::152036.341::152036.359::152036.372::152036.383::152036.39::152036.393::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.399::152036.404::152036.407::152036.412::152036.414::152036.414::152036.414::152036.414::152036.417::152036.422::152036.425::152036.428::152036.432::152036.435::152036.437::152036.437::152036.437')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.441::152036.45::152036.46::152036.472::152036.476::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.489::152036.543::152036.663::152036.778::152036.883::152036.971::152037.066::152037.164::152037.257::152037.361::356685::363405::370420::377575::384134::390225::396064::401696')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='407198::412644::417883::422998::428513::435075::442229::453395::466601::479658::492177::504000::515901::527901::539997::::556036::563903::571823::579005::585326::591325::596354::600715::604992::609199::613381::617646::622539::627868::633983::640502::646650::::659328::665498::671845::678227::684766::688990::691619::694492::697849::700694::702620::704442::705572::706691::707697::708736')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='709545::709997::710690::712243::714255::716847::719609::722373::725158::727261')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::773086::776647::780296::783826::787426::791061::795844::802109::808801::815624::822498::829213::835508::841449::846886::851798::856665::859354::861263::863083::864985::867245::869803::872460::875221::877937::880561::883156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='885657::888085::890505::893110::896194::899581::903116::906473::909677::913034::916082::918646::921093::923460::925630::927744::930053::932806::935904::939753::944540::950163::955884::961233::966673::972533::978758::985168::991668::997713::1003091::1008274::1012749::1017038::1020937::1024624::1027919::1031047::1034087::1036976::1040106::1044102::1049201::1055177::1061411::1067528::1073759::1079806')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='1085748::1091566::1097964::1104098::1109965::1115611::1121093::1126321::1130630::1134497::1137973::1139970::1141849::1143923::1145918::1147647::1149557::1153171::1157329::1161934::1166664::1171204::1175957::1180721::1185446::1190632::1196204::1201743::1207328::1212608::1217847::1222674::1226942::1231066::1234878::1238151::1241398::1244525::1247544::1250408::1253663::1257645::1262239::1267905::1274075::1280512::1287109::1293566')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='1306501::1312775::1318539::1323798::1329387::1335105::1340883::1346396::1351376::1355594::1359099::1362742::1366355::1369936::1373418::1377156::1381440::1385976::1391416::1397124::1403622::1412905::1420494::1426519::1432791::1438731::1444700::1450495::1455916::1461293::1466648::1471323::1475904::1479903::1483514::1487030::1490682::1494324::1497918::1501615::1505468::1509358::1513503::1517850::1522004::1525957::1529728::1533403')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='1537003::1541289::1546124::1551256::1556286::1561272::1565731::1569581::1572940')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='52513001', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::3476')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='4546::4682::4719::4838::5350::6165::6365::6445::6490::::6571::6643::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::7208::7679::8124::8480::9010::9501::9918::10708::10960::11079::11200::11255::11459::11656::11793::12159::12159::12159::12159::12160::12179::12215::12287::12302::12884')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='13533::14230::15062::16204::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.493::17157.511::17157.525::17157.542::17157.558::17157.579::17157.599::17157.608::17157.611::17157.612::17157.612::17157.612::17157.612::17157.613::17157.616::17157.618::17157.623::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.632::17157.649')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='17157.669::17157.686::17157.706::17157.728::17157.752::17157.771::17157.786::17157.799::17157.812::17157.824::17157.838::17157.85::17157.861::17157.871::17157.883::17157.89::17157.89::17157.89::17157.89::17157.89::17157.89::17157.891::17157.899::17157.911::17157.918::17157.92::17157.921::17157.925::17157.932::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17156::17156::17156::17156::17156::17156::17156::17156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='17156::17156::17156::17156::17156::17156::17156::17156::17156::17156')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='26366::26648::29737::33790::37320::41038::45491::50870::56378::62066::67892::74435::81073::87748::94487::101325::108173::114671::120417::125768::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='127098::127098::127098::127098::127098::127098::127098::127098::127098')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='34601', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='6094564::6095869::6097433::6099046::6100630::6101960::6103137::6104826::6106487::6108338::6110057::6112087::6114108::6116017::6116635::6116640::6116645::6116648::6116649::6116654::6116661::6116667::6116674::6116681::6116688::6116694::6116701::6116708::6116715::6116721::6116723::6116730::6116738::6116745::6116751::6116757::6116764::6116771::6116779::6116786::6116793::6116799::6116800::6116800::6116805::6116808::6116812::6116819')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='6116826::6116832::6116832::6116834::6116838::6116839::6116839::6116845::6116852::6116859::6116866::6116873::6116880::6116887::6116893::6116898::6116899::6116899::6116899::6116901::6116902::6116904::6116905::6116910::6116917::6116924::6116931::6116938::6116945::6116952::6116957::6116961::6116968::::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116972::6116978::6116980::6116987::6116994')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='6117001::6117008::6117015::6117022::6117029::6117033::6117039::6117042::6117042::6117044::6117049::6117054::6117061::6117062::6117062::6117063::6117065::6117065::6117066::6117072::6117078::6117084::6117091::6117098::6117103::6117110::6117117::6117124::6117129::6117129::6117134::6117136::6117137::6117137::6117137::6117138::6117144::6117145::6117145::6117145::6117145::6117145::6117145::6117148::6117150::6117154::6117160::6117167')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='6117174::6117181::6117189::6117196::6117203::6117210::6117216::6117219::6117220::6117220::6117222::6117228::6117235::6117239::6117241::6117244::6117244::6117244::6117244::6117244::6117247::6117248::6117252::6117259::6117266::6117273::6117280::6117287::6117293::6117297::6117303::6117304::6117305::6117309::6117316::6117323::6117330::6117336::6117340::6118095::6118936::6119299::6119300::6120117::6120419::6120867::6121692::6123308')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='6123938::6124106::6124765::6125691::6125784::6125785::6126129::6126129::6126129::::6126129::6126129::6126164::6126173::6126173::6126358::6126531::6126576::6126840::6127612::6128455::6128455::6128757::6129880::6129981::6129983::6130133::6130473::6130485::6130485::6130485::6130485::6130493::6130493::6130493::6130493::6130493::6130493::6130493::6130561::6130649::6130649::6130649::6130649::6130649::6130649::6130792::6132016::6133175')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='6134306::6134717::6135093::6135093::6135402::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135929::6136041::6136617::6137256::6137512::6137797::6138089::6138431::6139053::6139053::6139053::6139053::6139053::6139147::6139251::6139251::6139251::6139251::6139251::6139251::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139456::6140655::6141782')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='6142609::6142828::6143032::6143032::6143032::6143032::6143032::6143032::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143039::6143056::6143056::6143382::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143587::6143713::6144135::6144783::6144816::6144816::6144816::144818.2::144818.2::144818.2::144818.2::144818.2::144818.243::144818.474::144818.48::144818.775::144819.955')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='144821.261::144822.644::144824.053::144824.584::144824.587::144824.587::144824.587::144824.62::144824.744::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.756::144824.756::144824.756::144824.756::144824.757::144824.77::144824.788::144824.796::144824.802::144824.805::144824.806::144824.806::144824.806::144824.806::144824.806::144824.806::144824.809::144824.823::144824.828')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='144824.828::144824.828::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.834::144824.834::144824.834::144824.834::144824.835::144824.835::144824.84::144824.845::144824.849::144824.865::144824.876::144824.888::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.892::144824.896::144824.897::144824.9::144824.9::144824.9::6144824::6144824::6144824::6144824::6145000::6146702::6148995::6151298')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='6154011::6156885::6159821::6161781::6162424::6163565::6165278::6166868::6167755::6168671::6171312::6174315::6177014::6179609::6181568::::6182076::6182567::6183863::6185122::6186668::6188906::6190037::6191016::6192577::6194274::6196029::6196810::6196855::6196952::6197681::6198548::6198657::::6199392::6200372::6200895::6201228::6201425::6201425::6202856::6205585::6209048::6211115::6212648::6215720::6219090::6221773::6224848::6228185')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='6231530::6233901::6235517::6237264::6239554::6241943::6244049::6246003::6248291::6250880')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='6269393::6269460::6269561::6269561::6270193::6271193::6271766::6271766::6271766::6272003::6273414::6273802::6274190::6275070::6275788::6275805::6275805::6275844::6276747::6277093::6277184::6277267::6277710::6278346::6279262::6280041::6281268::6282908::6284744::6286792::6289036::6291362::6293586::6295884::6298136::6300115::6302316::6302954::6303439::6303749::6303938::6304212::6304924::6305309::6305626::6305804::6306004::6306321')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='6306407::6306407::6306407::6306407::6306407::6306417::6306562::6306904::6307399::6309517::6311643::6312611::6313875::6314868::6315228::6315352::6315385::6315835::6316016::6316023::6316023::6316023::6316023::6316023::6316023::6316113::6316460::6316755::6317177::6318036::6318383::6319038::6319038::6319632::6320620::6322099::6323027::6323528::6323962::6323967::6323967::6324143::6325141::6325322::6325724::6326020::6327132::6327132')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='6327132::6327132::6328174::6328667::6328667::6328705::6329402::6330058::6330058::6330655::6331774::6332033::6332033::6332033::6332033::6332033::6332078::6332316::6332872::6332897::6332897::6332897::6332897::6333173::6333204::6333827::6334413::6334413::6334413::6334413::6334413::6334554::6334554::6334554::6334765::6334977::6335481::6335759::6335759::6335759::6335759::6335824::6335826::6335826::6335826::6335826::6335889::6336407')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='6338047::6338719::6338729::6338729::6338729::6339065::6340354::6341766::6342723::6343432::6343924::6345002::6346115::6347018::6347048::6347050::6347091::6347091::6347091::6347091::6347406::6350200::6352077::6352150::6352150::6352150::6352150::6352150::6352150::6352150::6352331::6352331::6352638::6353193::6353695::6355019::6356915::6358952::6360430::6361352::6361420::6361420::6361420::6361420::6361420::6361420::6361420::6361420')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='6361420::6361434::6361698::6362174::6362660::6363502::6363860::6363860::6363933')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='33801', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88180102::88181176::88181859::88181861::88181894::88181896::88181896::88181896')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='88182169::88182200::88182200::88182200::88182288::88183363::88183857::88184631::88186407::::88194010::88198233::88200148::88200348::88200947::88202620::88203011::88203507::88203512::88203512::88203543::88204356::88204401::88204401::88205830::88206188::88206222::88206222::88206502::88207517::88209008::88210102::88210666::88211635::88212724::88213604::88214108::88214512::88214969::88216229::88216759::88219221::88221818::88224589::88227031::88228870::88229563::88229563::88229580')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='88229580::88229580::88229582::88230325::88231881::88231910::88232595::88234574::88237245::88240283::88243056::88243643::88244105::88244352::88244593::88245115::88245746::88245746::88245891::88245915::88245959::88245988::88245989::88247244::88248510::88249293::88250203::88252178::88254531::88254874::88255704::88256898::88258438::88259595::88260398::88260919::88262845::88264314::88266006::88268297::88269942::88271502::88272690::88273849::88275503::88276003::88276003::88276003')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='88276017::88276017::88276019::88276851::88278515::88280118::88281560::88283074::88283971::88285428::88286815::88287726::88288833::88289953::88291037::88293099::88295427::88296674::88297133::88297832::88298612::88299447::88299517::88300541::88301025::88301304::88301503::88302468::88304417::88306106::88307571::88308368::88308448::88308448::88308448::88309021::88309899::88310719::111188.016::111189.3::111190.088::111191.823::111192.91::111193.202::111193.473::111193.931::111193.948::111193.948')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='111193.948::111193.948::111193.948::111193.948::111194.58::111195.519::111196.735::111198.338::111199.302::111200.625::111201.775::111202.422::111203.008::111203.02::111203.032::111203.062::111203.098::111203.135::111203.171::111203.203::111203.212::111203.216::111203.221::111203.276::111203.299::111203.316::111203.335::111203.371::111203.422::111203.452::111203.457::111203.464::111203.468::111203.468::111203.468::111203.468::111203.468::111203.468::111203.469::111203.5::111203.532::111203.571::111203.606::111203.632::111203.639::111203.639::111203.639::111203.661')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='111203.671::111203.671::111203.672::111203.684::111203.715::111203.739::111203.761::111203.801::111203.837::111203.867::111203.891::111203.897::111203.904::111203.915::111203.935::111203.955::111203.962::111203.969::111203.972::111203.988::111203.997::111203.997::111204::111204.001::111204.001::111204.001::111204.001::111204.001::111204.016::111204.052::111204.063::111204.07::111204.081::111204.093::111204.097::111204.097::111204.099::111204.11::111204.128::111204.164::88312628::88314767::88316290::88317284::88317694::88317694::88317694::88317694')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='88317694::88317694::88317694::88317694::88317698::88317700::88317713::88317713::88317713::88317713::88317778::88317778::88317778::88317778::88317778::::88320511::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88321420::88323042::88323042::88323053::88323105::::88323137::88323137::88323137::88323137::88323148::88323775::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='88323785::88323785::88323785::88323785::88323790::88323790::88323790::88323790::88323790::88323790')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='88342130::88342209::88342529::88344458::88344485::88344485::88345905::88348379::88350494::88350813::88350813::88351056::88351056::88351056::88351056::88351287::88352428::88353598::88353598::88353601::88353859::88353862::88353862::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353965::88353965::88353965::88354018::88354018::88354018::88354018::88354018::88354021::88354021::88354021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='88354166::88354552::88355130::88357154::88359226::88359828::88359828::88360068::88360126::88360126::88360126::88360194::88360205::88360205::88360205::88360223::88360406::88361385::88362297::88363511::88365757::88367821::88369273::88369929::88371538::88373322::88373899::88374629::88374631::88374655::88374657::88374822::88375466::88375471::88375471::88375471::88375599::88375599::88375599::88376102::88377432::88378306::88378319::88378467::88378917::88378917::88378918::88379482')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='88380777::88382275::88382661::88382777::88383250::88383592::88383592::88383711::88385203::88385257::88385257::88388459::88390394::88390850::88391561::88393834::88397579::88397819::88397819::88399218::88401792::88405386::88408100::88408122::88408365::88408505::88408505::88410246::88411660::88412849::88413333::88414521::88416696::88417583::88417683::88417854::88417854::88417883::88418027::88419159::88420108::88421071::88421828::88423559::88426894::88429975::88432828::88432828')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='88432828::88432828::88434951::88439548::88440916::88441030::88441030::88441030::88441030::88441030::88441116::88441116::88441116::88441116::88441218::88441739::88442363::88443542::88445344::88448624::88451464::88451464::88451473::88451652::88451840::88452323::88453332::88455889::88458507::88460595::88460772::88462065::88462264::88462608::88462622::88462622::88462622::88462622::88462622::88462622::88462826::88463538::88464667::88466310::88468309::88471393::88474308::88477274')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='88480378::88481157::88481766::88481766::88481766::88481766::88483340::88485626::88486118')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='33401', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='9437795::9441972::9446144::9450217::9454261::9458184::9462346::9467434::9473186::9480126::9487404::9494779::9501916::9508615::9510621::9510628::9510635::9510642::9510649::9510656::9510663::9510671::9510678::9510687::9510695::9510703::9510712::9510720::9510728::9510736::9510743::9510751::9510760::9510768::9510776::9510784::9510792::9510800::9510809::9510817::9510826::9510833::9510840::9510847::9510855::9510863::9510871::9510879')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='9510888::9510896::9510904::9510912::9510920::9510928::9510935::9510944::9510952::9510960::9510968::9510976::9510984::9510993::9511001::9511009::9511016::9511023::9511030::9511038::9511045::9511053::9511061::9511069::9511078::9511086::9511095::9511103::9511112::9511121::9511129::9511137::9511144::::9511158::9511165::9511171::9511178::9511184::9511190::9511197::9511203::9511209::9511216::9511223::9511231::9511239::9511247::9511255')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='9511264::9511272::9511280::9511289::9511297::9511305::9511313::9511320::9511327::9511333::9511340::9511347::9511354::9511361::9511368::9511375::9511382::9511389::9511397::9511404::9511412::9511419::9511427::9511435::9511443::9511451::9511460::9511468::9511476::9511484::9511492::9511500::9511506::9511513::9511519::9511526::9511533::9511539::9511546::9511553::9511559::9511565::9511572::9511580::9511587::9511595::9511603::9511611')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='9511619::9511628::9511637::9511646::9511654::9511662::9511670::9511677::9511684::9511691::9511698::9511705::9511713::9511720::9511727::9511734::9511740::9511747::9511754::9511761::9511769::9511777::9511785::9511794::9511803::9511811::9511820::9511828::9511836::9511844::9511852::9511859::9511866::9511873::9511880::9511888::9511895::9511902::9511909::9514390::9519709::9522089::9522234::9522234::9522234::9522235::9522235::9522235')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='9522237::9522240::9522245::9522245::9522245::9522245::9522305::9522417::9522472::::9522564::9522698::9522957::9523630::9524451::9525296::9526830::9528579::9530279::9532182::9533799::9534552::9535404::9536317::9536364::9536364::9536364::9536364::9536364::9536364::9536365::9536365::9536366::9536378::9536405::9536445::9536452::9536454::9536460::9536501::9536855::9537087::9537318::9537474::9537525::9537548::9537581::9537677::9537678')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='9537678::9537678::9537678::9537678::9537736::9538143::9538893::9540546::9542875::9545324::9547869::9550788::9553582::9556453::9559237::9562025::9565951::9569947::9573692::9577040::9580032::9582462::9584347::9585562::9586226::9586928::9587579::9588077::9588974::9591192::9593773::9597560::9601808::9606160::9610756::9615226::9619694::9624409::9629124::9633493::9637849::9641922::9645776::9649316::9652378::9655502::9658479::9661021')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='9663237::9665228::9667187::9668925::9670776::9673297::9676502::9680673::9683191::9687690::9692279::9696481::9700679::9704855::9709161::9713542::9717867::9722167::9726451::9730363::9733859::9736754::9739475::9741440::9743260::9745064::9746883::9748517::9750210::9752619::9755730::9759949::9764686::9769374::9774465::9778741::9783023::9787135::89775.123::89779.04::89783.036::89786.633::89790.091::89793.369::89796.324::89798.585::89800.635::89802.621')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='89804.381::89806.063::89807.752::89809.284::89810.86::89813.012::89815.607::89818.79::89822.154::89824.714::89827.425::89830.508::89832.673::89832.71::89832.728::89832.745::89832.767::89832.785::89832.798::89832.809::89832.817::89832.82::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.826::89832.831::89832.834::89832.838::89832.84::89832.84::89832.84::89832.84::89832.843::89832.848::89832.851::89832.854::89832.858::89832.861::89832.864::89832.864::89832.864')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='153420', v='89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.868::89832.877::89832.887::89832.899::89832.903::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.916::89832.97::89833.09::89833.204::89833.309::89833.397::89833.492::89833.59::89833.683::89833.788::9794482::9801201::9808217::9815372::9821930::9828022::9833861::9839493')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='17d720', v='9844996::9850441::9855681::9860795::9866311::9872873::9880027::9891193::9904398::9917454::9929974::9941796::9953698::9965698::9977794::::9993834::10001701::10009621::10016803::10023124::10029123::10034151::10038513::10042789::10046996::10051178::10055443::10060336::10065665::10071780::10078299::10084446::::10097123::10103293::10109641::10116023::10122562::10126785::10129414::10132288::10135645::10138489::10140416::10142238::10143368::10144487::10145494::10146532')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1a9640', v='10147341::10147793::10148486::10150039::10152051::10154643::10157406::10160170::10162955::10165058')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1c7460', v='10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10210882::10214444::10218093::10221623::10225223::10228858::10233641::10239906::10246598::10253420::10260295::10267010::10273305::10279245::10284682::10289594::10294461::10297150::10299060::10300879::10302781::10305041::10307600::10310256::10313017::10315732::10318357::10320952')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='1f1760', v='10323453::10325881::10328301::10330906::10333991::10337378::10340913::10344270::10347474::10350831::10353880::10356443::10358890::10361257::10363427::10365542::10367850::10370602::10373700::10377548::10382335::10387959::10393679::10399028::10404469::10410328::10416554::10422964::10429464::10435510::10440887::10446070::10450544::10454833::10458732::10462419::10465714::10468842::10471882::10474772::10477901::10481897::10486997::10492973::10499207::10505324::10511555::10517602')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='21ba60', v='10523544::10529362::10535760::10541894::10547762::10553407::10558890::10564118::10568426::10572294::10575771::10577767::10579647::10581720::10583716::10585444::10587354::10590968::10595126::10599731::10604460::10609000::10613753::10618516::10623241::10628428::10633999::10639539::10645125::10650405::10655643::10660471::10664738::10668862::10672675::10675947::10679195::10682322::10685340::10688204::10691460::10695443::10700037::10705702::10711873::10718309::10724907::10731364')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='246b70', v='10744298::10750573::10756336::10761594::10767184::10772901::10778679::10784193::10789173::10793391::10796895::10800538::10804151::10807732::10811214::10814952::10819236::10823772::10829212::10834920::10841418::10850701::10858289::10864315::10870586::10876526::10882496::10888291::10893713::10899090::10904444::10909119::10913700::10917699::10921310::10924826::10928478::10932121::10935715::10939412::10943265::10947154::10951299::10955647::10959802::10963755::10967526::10971201')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='270e70', v='10974801::10979086::10983922::10989053::10994083::10999069::11003529::11007379::11010738')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 5)
+SAX.startElement(par, memind='33001', h='3dc1a7e0')
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='0', v='38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='2a300', v='38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='55410', v='38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='7f710', v='38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612587::38613097::38613585::38614490::38614906::38615380::38616053')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='a9a10', v='38617123::38617258::38617296::38617414::38617926::38618741::38618942::38619021::38619066::::38619147::38619219::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619786::38620257::38620702::38621058::38621587::38622078::38622494::38623284::38623536::38623655::38623776::38623831::38624035::38624232::38624369::38624735::38624735::38624735::38624735::38624737::38624755::38624791::38624863::38624879::38625460')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='d4b20', v='38626110::38626807::38627639::38628781::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='fee20', v='38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398')
+SAX.endElement(val)
+SAX.characters(
+ , 6)
+SAX.startElement(val, o='129120', v='229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.399::229734.417::229734.431::229734.448::229734.465::229734.485::229734.505::229734.514::229734.517::229734.517::229734.517::229734.517::229734.517::229734.518::229734.521::229734.523::229734.528::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.537::229734.554')
+SAX.endElement(val)
+SAX.characters(
+ , 5)
+SAX.endElement(par)
+SAX.characters(
+ , 4)
+SAX.endElement(device)
+SAX.characters(
+ , 3)
+SAX.endElement(select)
+SAX.characters(
+ , 2)
+SAX.endElement(data)
+SAX.characters(
+, 1)
+SAX.endElement(electroxml)
+SAX.endDocument()
diff --git a/result/att4.sax2 b/result/att4.sax2
new file mode 100644
index 0000000..553148c
--- /dev/null
+++ b/result/att4.sax2
@@ -0,0 +1,36976 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC) )
+SAX.startElementNs(electroxml, NULL, NULL, 0, 1, 0, modified='2002...', 15)
+SAX.characters(
+ , 2)
+SAX.startElementNs(data, NULL, NULL, 0, 2, 0, from='2002...', 11, to='2002...', 11)
+SAX.characters(
+ , 3)
+SAX.startElementNs(select, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 4)
+SAX.startElementNs(device, NULL, NULL, 0, 1, 0, serialnumb='E000...', 9)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1134...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='55"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1693...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='196....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='199....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='200....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='201....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='199....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='197....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='197....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='197....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='220"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='222"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='220"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='219"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='217....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='224....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='219"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='221....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='221"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='217....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='219"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='222"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='224....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='219"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='219....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='221"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='220....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='225....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='225"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='222....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='224....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='190"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='122....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='354....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='333....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='323....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='278....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='286....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='292....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='21.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='273....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='272....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='285....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='28.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='68.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='147....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='95.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='89.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='88.3...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='92.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='149....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='148....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='127....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='198....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='203....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='124....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='159....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='230....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='79.8...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='51.3...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='22.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='323....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='341....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='46.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='71.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='71.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='63.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='76.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='58.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='92"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='79.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='63.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='51.3...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='81.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='205....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='96.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='95.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='96.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='92.8...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='91.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='86.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='270"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='270....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='296....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='306....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='331....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='13.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='46.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='262....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='143....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='127....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='132....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='128....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='155....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='172....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='196....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='178....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='196....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='202....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='99.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='130....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='132....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='121....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='100....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='153....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='155....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='167....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='165....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='159....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='160....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='165"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='156....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='162....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='154....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='157....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='197....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='203....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='212....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='162"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='149....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='136....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='145....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='164....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='158....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='163"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='165....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='147....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='163"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='177....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='161"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='174....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='203....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='158....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='172....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='172....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='138"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='135....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='157....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='160....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='170"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='167"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='172....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='164....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='151....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='158....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='160....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='207....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='214....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='213....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='210....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='178....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='162....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='156....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='153....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='143....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='160....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='153....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='169....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='139....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='142....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='122....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='125....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='110....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='110....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='190....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='99.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='209....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='76.2...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='61.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='44.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='44.2...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='60.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='64.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='67.3...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='341....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='115....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='117....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='252....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='261....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='313....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='311....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='292"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='57.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='151....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='92.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='93.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='100....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='97.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='184"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='289....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='274....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='39.8...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='6.5"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='355....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='19.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='44.2...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='61.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='55.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='60.2...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='71.7...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='66.3...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='61.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='38.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='17.3...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='35.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='44.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='71.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='125"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='176"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='99.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='90"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='273....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='344....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='307....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='271....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='278....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='291....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='52.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='76.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='87.6...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='174....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='183....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='181....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='165....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='165....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='201....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='205....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='204....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='204....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='208....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='204....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='194....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='194....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='190....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='191....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='191....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='197....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='189....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='201....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='202....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='204....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='196....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='162....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='181....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='183....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='178....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='223....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='228....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='229....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='216....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='226....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='249....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='245....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='250....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='251....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='252....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='259....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='254....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='228....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='227....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='214....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='218....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='217"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='231....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='230....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='52"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='340....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='18.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='357....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='344....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='338....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='28.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='21.8...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='10.4...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='343....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='342....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='358....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='353....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='353....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='1.4"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='6.4"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='10.5...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='350....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='350....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='357....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='181....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='194....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='190....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='195"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='198....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='198....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='199....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='200....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='202....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='200....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='203....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='204....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='190....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='164....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='154....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='134....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='154....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='176"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='206....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='216....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='211....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='210....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='211....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='171....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='129....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='157....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='163....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='159....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='177....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='183....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='189....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='202....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='197....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='178....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='160....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='168....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='184"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='191....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='177....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='169....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='159....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='190....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='160"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='192....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='200....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='116....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='162....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='130....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='122"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='183....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='157....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='142....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='145....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='182....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='173....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='169....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='164....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='178....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='158"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='169....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='185....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='191....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='176....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='167....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='154....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='167"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='166....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='146....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='155....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='157....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='189....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='139....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='172"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='189....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='187....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='198....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='193....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='198....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='180....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='180"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='165....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='165....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='160....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='147....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='196....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='178....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='177....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='172"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='156....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='154....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='157"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='166"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='172....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='196....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='179....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='195....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='202....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='209....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='204....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='199....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='175....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='170....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='159....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='156....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='137....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='146"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='139....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='143....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='137....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='177....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='186....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='184....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='191....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='146....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='161....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='188....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1069...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='50.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='49.9...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='50"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='8612...', 4, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='25.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='24.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='23.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='26.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='28.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='34.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='40.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='40.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='38.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='35.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='34.1...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='0.04...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='0.04...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='36.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='17.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='8.35...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='5.95...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='7.13...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='8.64...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='6.42...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='10.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='14.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='3.54...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='3.8"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='6.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='5.20...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='7.52...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='11.3...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='0.95...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='5.77...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='22.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='19.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='1.26...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='3.13...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='6.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='7.27...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='9.37...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='7.71...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='8.18...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='9.84...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='5.25...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='2.64...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='7.17...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='19.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='4.70...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='5.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='5.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='4.40...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='5.16...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='10.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='5.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='10.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='4.08...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='5.22...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='6.62...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='2.57...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='3.76...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='2.92...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='4.23...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='2.44...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='10.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='15.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='10.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='14.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='11.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='7.26...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='3.27...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='12.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='8.86...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='8.42...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='7.50...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='7.80...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='10.9...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='5.74...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='2.08...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='7.75...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='16.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='18.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='18.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='13.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='14.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='14.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='14.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='15.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='20.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='20.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='16.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='17.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='11.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='10.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='8.73...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='14.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='4.86...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='4.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='6.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='14.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='9.98...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='11.9...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='15.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='22.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='24.1...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='23.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='24.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='25.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='24.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='25.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='23.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='19.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='19.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='16.1...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='16.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='16.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='14.2...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='14.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='9.55...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='9.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='8.33...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='9.77...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='14.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='19.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='25.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='21.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='19.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='21.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='22.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='25.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='20.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='22.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='18.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='16.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='13.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='13.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='8.71...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='8.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='8.19...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='8.30...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='10.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='14.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='15.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='19.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='23.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='20.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='26.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='21.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='22.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='19.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='0.01...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='0.01...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='0.01...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='0.01...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0.27...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0.20...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0.05...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0.44...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0.16...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0.15...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0.23...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0.33...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0.04...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0.08...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0.05...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0.23...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0.20...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0.16...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0.15...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0.18...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0.15...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0.16...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0.30...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0.16...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0.25...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0.19...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0.30...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0.03...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0.04...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0.17...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0.08...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0.60...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0.67...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0.72...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0.47...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0.47...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0.49...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0.49...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0.57...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0.62...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='35.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='33.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='35.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='32.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='28.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='29.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='30.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='28.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='27.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='28.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='25.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='25.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='30.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='32.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='38.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='64.3...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='63.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='60.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='57.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='59.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='56.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='60.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='56.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='37.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='40.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='38.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='32.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='30.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='26.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='21.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='21.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='21.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='20.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='19.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='20.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='25.6...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='29.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='31.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='28.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='32.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='32.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='29.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='29.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='29.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='29.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='29.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='10.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='18.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='23.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='25.8...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='13.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='15.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='22.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='20.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='14.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='18.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='14.8...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='11.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='6.40...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='13.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='18.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='16.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='16.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='17.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='16.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='4.33...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='4.33...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='21.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='20.8...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='22.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='22.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='34.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='33.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='32.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='33.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='34.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='36.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='36.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='36.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='37.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='37.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='37.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='32.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='31.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='31.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='15.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='17.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='17.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='16.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='17.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='18.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='32.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='37.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='36.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='37.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='37.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='35.9...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='34.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='31.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='27.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='27.7...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='27.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='9.65...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='8.98...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='8.87...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='11.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='11.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='13.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='12.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='13.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='12.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='12.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='12.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='11.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='11.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='13.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='20.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='17.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='17.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='15.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='18.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='19.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='15.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='14.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='14.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='10.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='10.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='10.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='12.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='18.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='24.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='27.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='31.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='28.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='26.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='27.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='31.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='30.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='33.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='31.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='27.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='26.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='22.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='21.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='20.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='20.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='17.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='14.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='14.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='13.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='14.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='18.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='22.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='29.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='30.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='31.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='30.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='30.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='29.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='29.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='30.4...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='31.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='28.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='28.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='27.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='26.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='24.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='18.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='17.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='16.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='18.4...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='9.83...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='9.73...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='12.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='17.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='17.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='19.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='25.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='28.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='28.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='23.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='22.6...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='22.1...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='27.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='27.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='29.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='27.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='25.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='25.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='21.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='19.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='15.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='15.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='13.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='14.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='15.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='18.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='22.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='26.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='34.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='35.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='36.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='34.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='32.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='33.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='31.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='36.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='30.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='28.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='28.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='27.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='26.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='21.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='20.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='17.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='17.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='17.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='16.1...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='17.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='20.9...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='21.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='25.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='31.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='33.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='82.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='46.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='22.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='31.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='30.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='28.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='30.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='31.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='28.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='27.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='24.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='22.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='17.5...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='17.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='18.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='20.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='19.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='18.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='18.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='18.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='18.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='23.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='23.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='26.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='24.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='23.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='23.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='24"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='22.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='26.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='25.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='25.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='24.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='23.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='18.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='15.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='8608...', 4, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='8604...', 4, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='20.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='19.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='19.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='18.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='18.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='22.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='24.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='29.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='35.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='35.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='33.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='30.7...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='29.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='0.07...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='30.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='10.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='3.83...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='3.30...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='4.19...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='2.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='4.91...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='7.89...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='2.93...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='1.48...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='2.19...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='1.67...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='5.98...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='10.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='3.65...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='7.25...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='19.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='21.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='18.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='3.45...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='4.91...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='7.33...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='7.20...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='9.19...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='8.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='7.68...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='8.66...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='7.73...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='5.14...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='5.08...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='18.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='4.67...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='3.97...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='2.24...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='2.51...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='4.78...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='10.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='5.86...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='9.66...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='5.19...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='5.35...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='7.74...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='3.65...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='4.23...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='3.28...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='5.65...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='2.24...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='12.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='15.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='11.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='15.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='12.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='8.53...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='1.47...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='7.44...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='4.26...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='3.80...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='3.75...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='5.53...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='9.52...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='1.98...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='4.15...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='9.62...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='19.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='19.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='14.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='12.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='13.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='13.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='13.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='13.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='18.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='15.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='15.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='11.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='9.89...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='7.99...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='13.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='6.33...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='5.63...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='7.36...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='14.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='9.67...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='12.8...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='14.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='21.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='22.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='20.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='22.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='22.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='24.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='23.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='23.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='22.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='18.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='18.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='15.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='16.3...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='15.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='12.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='12.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='8.94...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='8.83...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='8.79...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='10.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='13.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='15.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='19.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='22.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='21.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='23.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='20.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='18.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='20.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='19.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='21.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='23.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='21.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='19.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='20.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='17.3...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='16.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='13.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='12.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='8.96...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='8.31...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='8.35...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='8.49...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='10.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='13.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='15.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='18.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='22.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='19.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='23.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='20.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='19.8...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='20.8...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='18.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='0.02...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='0.02...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='0.01...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='0.00...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='0.01...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='0.01...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0.26...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0.12...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0.16...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0.22...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0.24...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0.23...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0.23...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0.08...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0.41...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0.19...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0.15...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0.14...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0.30...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0.20...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0.09...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0.03...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0.08...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0.25...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0.22...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0.19...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0.04...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0.15...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0.12...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0.18...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0.28...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0.16...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0.15...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0.24...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0.21...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0.18...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0.09...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0.29...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0.06...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0.06...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0.04...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0.05...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0.07...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0.03...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0.02...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0.07...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0.17...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0.22...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0.57...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0.63...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0.67...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0.45...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0.46...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0.47...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0.48...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0.56...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0.59...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='34.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='33.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='34.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='31.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='26.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='26.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='28.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='25.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='24.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='25.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='22.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='22.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='28.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='30.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='35.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='61.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='61.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='58.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='54.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='56.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='53.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='57.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='53.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='36.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='36.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='35.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='29.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='28.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='25.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='19.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='19.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='19.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='18.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='18.1...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='20.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='25.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='27.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='29.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='27.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='30.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='29.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='28.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='28.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='28.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='28.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='28.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='11.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='14.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='19.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='20.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='11.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='12.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='16.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='15.1...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='9.95...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='12.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='12.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='9.68...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='6.80...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='4.55...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='10.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='14.6...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='14.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='13.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='15.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='13.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='12.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='3.99...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='2.18...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='16.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='14.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='15.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='29.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='27.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='25.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='24.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='25.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='28.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='28.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='28.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='30.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='30.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='30.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='24.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='23.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='23.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='15.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='16.6...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='16.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='15.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='16.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='16.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='27.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='31.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='31.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='32.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='31.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='30.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='29.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='27.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='23.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='23.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='23.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='8.57...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='7.91...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='7.85...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='9.84...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='10.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='11.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='11.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='12.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='11.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='11.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='10.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='10.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='10.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='13.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='19.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='16.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='15.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='15.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='14.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='15.7...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='16.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='13.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='11.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='11.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='9.24...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='8.96...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='9.42...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='11.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='18.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='15.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='23.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='26.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='29.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='25.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='25.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='26.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='30.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='28.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='30.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='28.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='24.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='23.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='21.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='19.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='18.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='15.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='13.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='13.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='12.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='13.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='17.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='25.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='27.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='28.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='27.6...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='28.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='27.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='27.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='28.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='27.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='26.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='25.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='24.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='24.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='17.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='16.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='14.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='18.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='10.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='10.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='13.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='17.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='15.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='17.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='21.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='24.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='26.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='27.0...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='22.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='21.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='20.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='25.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='25.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='27.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='25.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='24.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='23.8...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='20.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='18.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='14.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='14.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='14.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='13.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='13.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='15.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='17.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='20.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='24.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='32.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='34.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='34.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='31.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='29.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='30.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='29.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='34.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='28.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='25.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='26.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='24.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='24.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='20.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='18.2...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='15.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='15.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='15.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='15.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='16.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='19.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='20.0...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='23.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='29.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='31.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='75.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='41.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='21.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='29.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='28.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='27.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='28.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='29.3...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='26.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='25.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='23.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='21.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='20.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='16.3...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='15.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='16.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='17.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='16.8...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='16.6...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='17.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='18.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='18.4...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='22.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='22.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='25.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='22.9...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='23.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='21.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='23.5...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='23.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='22.7...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='22.3...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='23.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='18.2...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='14.1...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='9812...', 4, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='114....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='109....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='124....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='127....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='113....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='113....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='118....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='116....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='114....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='114....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='113....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='125....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='127....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='128....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='127....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='127....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='127....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='124....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='124....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='121....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='115....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='124....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='125....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='119....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='9808...', 4, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='9804...', 4, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='113....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='109....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='125....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='127....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='112....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='113....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='114....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='114....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='121....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='113....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='124....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0.11...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0.11...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0.10...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='128....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='126....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='125....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='116....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='125....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='123....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='122....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='126....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='121....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='118....', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='120....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='123....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='125....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='115....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='119....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='117....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='114....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='124....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='124....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='116....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='118....', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='123....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='117....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='119....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='121....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='118....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='120....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='122....', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='4406...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='-127...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='-148...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='-156...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='-164...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='-144...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='-127...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='-104...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='-169...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='-176...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='-166...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='-206...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='-199...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='-192...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='-201...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='-184...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='-631...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='1564...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='-66"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='-393...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='-691...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='-883...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='-157...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='-220...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='109"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='-420...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='-859...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='-628...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='516"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='1839...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='293"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='1185...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='3946...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='4230...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='3689...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='248"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='430"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='1026...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='-526...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='-258...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='-65"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='-489...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='-842...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='1082...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='310"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='-111...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='3632...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='513"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='214"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='-292...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='-127...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='495"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='1815...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='818"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='1539...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='680"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='712"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='1280...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='397"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='493"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='250"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='785"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='-201...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='2156...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='2937...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='2107...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='2824...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='2269...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='1441...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='-297...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='-228...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='-118...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='-964...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='-442...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='261"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='1309...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='-849...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='178"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='1111...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='2750...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='2769...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='2973...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='1327...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='454"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='199"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='167"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='556"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='416"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='-370...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='-115...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='93"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='-843...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='171"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='-646...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='-723...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='2665...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='837"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='698"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='1097...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='2649...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='-495...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='1165...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='542"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='1871...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='979"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='1210...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='-356...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='1654...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='1368...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='1462...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='1612...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='1309...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='1886...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='1136...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='1169...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='1403...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='1316...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='-104...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='-119...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='-160...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='-199...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='-252...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='585"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='1069...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='1973...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='1831...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='1127...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='1767...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='1343...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='1564...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='849"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='805"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='1093...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='880"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='1254...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='2664...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='1368...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='1009...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='208"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='22"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='1142...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='286"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='-116...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='712"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='227"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='236"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='372"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='1441...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='2015...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='1211...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='1284...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='369"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='-310...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='-802...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='781"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='491"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='1023...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='516"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='2"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='2"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='2274...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='1775...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='1153...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='769"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='-846...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='-236...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='-296...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='-251...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='-244...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='-286...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='-227...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='-125...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='-716...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='-148...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='-200...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='-105...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='-978...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='-126...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='-317...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='-266...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='-254...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='-237...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='-112...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='1219...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='-106...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='-151...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='-128...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='-190...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='-162...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='-778...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='-173...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='-174...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='-187...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='-120...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='-211...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='1619...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='-764...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='-827...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='40"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='-199...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='-967...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='-680...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='-385...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='-241...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='371"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='471"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='61"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='-244...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='-344...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='-386...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='-165...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='-227...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='-413...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='-373...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='-265...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='-328...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='-337...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='-270...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='-797...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='-204...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='-279...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='-193...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='-209...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='-221...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='-267...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='-253...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='453"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='-157...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='1143...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='-146...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='-100...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='-140...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='2949...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='2229...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='1022...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='-162...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='-183...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='-211...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='-767...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='-792...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='173"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='776"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='1249...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='-957...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='-911...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='-243...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='-65"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='-308...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='-811...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='-806...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='-952...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='-716...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='-161...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='-191...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='-180...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='-222...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='-227...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='-231...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='-228...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='-233...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='-186...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='-213...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='-220...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='-296...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='-449...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='-142...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='-422...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='-365...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='-581...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='-263...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='-325...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='-142...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='-355...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='-310...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='496"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='660"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='1246...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='2889...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='1532...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='-143...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='-518...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='225"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='-166...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='-233...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='-172...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='-148...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='-151...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='-476...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='-193...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='128"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='376"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='2872...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='408"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='1923...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='1830...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='1798...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='334"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='1260...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='1815...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='2272...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='262"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='-387...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='-613...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='-251...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='-885...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='551"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='48"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='-982...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='-161...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='-112...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='-381...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='-441...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='71"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='1020...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='760"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='-319...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='-114...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='302"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='-319...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='-582...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='408"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='1031...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='1139...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='2082...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='-120...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='622"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='456"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='-736...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='-818...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='1684...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='307"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='-801...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='-125...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='3308...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='506"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='639"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='1963...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='2867...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='-831...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='-270...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='2010...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='3408...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='3190...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='-187...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='-225...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='531"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='-823...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='62"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='1079...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='1547...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='900"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='112"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='1780...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='1407...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='298"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='565"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='-311...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='-657...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='168"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='647"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='1427...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='829"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='-5"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='1197...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='3751...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='2991...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='2801...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='-118...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='-828...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='-799...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='57"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='4601...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='1911...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='799"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='-972...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='-708...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='-790...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='-490...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='-131...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='-825...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='-101...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='-117...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='-35"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='1352...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='1059...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='1290...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='2079...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='3618...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='-468...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='-247...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='-556...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='189"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='260"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='816"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='2489...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='2732...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='2234...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='57"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='1219...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='632"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='-136...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='38"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='-980...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='-150...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='-211...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='-161...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='-131...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='-432...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='309"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='685"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='1692...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='1899...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='3622...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='2709...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='3037...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='2898...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='3251...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='186"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='-636...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='-421...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='-729...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='-978...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='2670...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='1255...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='-496...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='4246...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='-431...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='-416...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='-410...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='-409...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='-398...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='-393...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='-443...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='-532...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='-629...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='-733...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='-754...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='-724...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='-686...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='-645...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='-646...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='-354...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='-986...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='697"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='776"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='925"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='125"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='456"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='903"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='278"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='27"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='43"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='173"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='947"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='728"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='-452...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='-117...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='23"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='182"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='-152...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='-423...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='-705...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='-790...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='-157...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='-202...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='-175...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='-172...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='-190...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='-741...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='-812...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='-891...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='652"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='411"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='516"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='398"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='382"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='470"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='591"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='267"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='770"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='164"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='438"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='-43"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='72"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='249"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='201"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='115"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='-425...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='-229...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='-284...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='-247...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='-135...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='-54"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='96"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='16"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='598"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='721"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='818"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='1067...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='1245...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='-117...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='-721...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='-150...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='-208...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='-255...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='-234...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='-292...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='-271...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='-285...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='-292...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='-280...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='-303...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='-401...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='-391...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='-341...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='-344...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='-256...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='-213...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='-176...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='-465...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='-702...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='-647...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='-676...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='-509...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='-215...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='-235...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='-317...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='-403...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='-433...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='-465...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='-466...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='-434...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='-457...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='-492...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='-460...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='-486...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='-389...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='-378...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='-298...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='-309...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='-333...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='-268...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='-252...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='-207...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='-178...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='-179...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='-207...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='-269...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='-393...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='-440...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='-436...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='-469...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='-392...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='-410...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='-418...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='-434...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='-416...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='-445...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='-413...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='-449...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='-388...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='-329...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='-286...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='-266...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='-177...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='-181...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='-182...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='-180...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='-159...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='-205...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='-296...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='-483...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='-429...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='-525...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='-440...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='-432...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='-442...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='-395...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='-686...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='-679...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='-725...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='-673...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='-603...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='-589...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='-606...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='-548...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='-544...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='-533...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='-498...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='-519...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='-631...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='-683...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='-785...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='-135...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='-133...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='-127...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='-118...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='-123...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='-117...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='-126...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='-118...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='-747...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='-812...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='-769...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='-653...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='-617...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='-566...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='-448...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='-426...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='-411...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='-410...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='-451...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='-513...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='-603...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='-639...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='-589...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='-669...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='-660...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='-615...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='-612...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='-622...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='-604...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='-600...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='-229...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='-254...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='-308...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='-326...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='-226...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='-215...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='-153...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='-167...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='-960...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='-112...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='-106...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='-505...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='-536...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='-991...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='-181...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='-257...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='-284...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='-260...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='-292...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='-211...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='-207...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='354"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='438"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='3408...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='3269...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='3655...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='3521...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='5431...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='5560...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='5660...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='5623...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='5896...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='6656...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='6647...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='6733...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='6914...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='6873...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='6691...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='5814...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='5617...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='5608...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='-323...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='-365...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='-344...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='-360...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='-373...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='-599...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='-671...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='-658...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='-676...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='-680...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='-652...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='-617...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='-567...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='-491...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='-491...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='-480...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='-181...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='-183...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='-225...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='-232...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='-268...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='-267...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='-277...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='-268...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='-265...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='-255...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='-235...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='-231...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='-258...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='-281...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='-318...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='-357...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='-354...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='-314...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='-334...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='-313...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='-280...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='-250...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='-249...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='-215...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='-213...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='-215...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='-249...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='-236...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='-351...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='-456...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='-534...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='-605...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='-579...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='-534...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='-539...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='-597...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='-609...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='-677...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='-637...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='-547...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='-538...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='-460...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='-431...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='-405...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='-386...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='-348...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='-311...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='-301...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='-294...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='-281...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='-364...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='-449...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='-579...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='-619...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='-617...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='-610...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='-621...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='-589...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='-598...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='-563...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='-621...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='-578...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='-572...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='-553...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='-540...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='-460...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='-387...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='-361...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='-329...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='-168...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='-207...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='-205...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='-167...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='-179...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='-348...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='-391...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='-457...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='-478...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='-445...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='-469...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='-483...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='-465...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='-445...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='-539...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='-553...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='-586...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='-522...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='-516...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='-525...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='-438...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='-421...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='-401...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='-322...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='-331...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='-318...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='-297...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='-294...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='-293...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='-357...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='-454...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='-511...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='-573...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='-651...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='-677...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='-675...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='-636...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='-654...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='-627...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='-540...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='-579...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='-564...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='-574...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='-544...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='-544...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='-455...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='-401...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='-348...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='-361...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='-355...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='-340...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='-360...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='-402...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='-418...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='-499...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='-581...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='-559...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='-152...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='-869...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='-457...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='-631...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='-610...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='-575...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='-576...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='-564...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='-524...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='-556...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='-487...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='-461...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='-461...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='-361...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='-346...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='-356...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='-367...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='-361...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='-386...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='-396...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='-388...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='-438...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='-427...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='-396...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='-400...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='-356...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='-387...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='-356...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='-469...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='-519...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='-521...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='-503...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='-496...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='-404...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='-370...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='-321...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='4382...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='-110...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='-128...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='-135...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='-142...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='-124...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='-110...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='-909...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='-147...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='-152...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='-143...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='-178...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='-175...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='-168...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='-174...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='-159...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='-500...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='1379...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='-45"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='-346...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='-580...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='-752...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='-136...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='-190...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='101"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='-366...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='-740...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='-550...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='432"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='1595...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='275"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='1019...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='3444...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='3629...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='3203...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='215"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='380"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='890"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='-446...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='-200...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='-44"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='-424...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='-718...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='946"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='276"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='-944...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='3129...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='453"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='194"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='-246...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='-122...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='430"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='1582...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='720"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='1333...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='588"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='642"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='1096...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='313"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='374"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='204"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='692"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='-196...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='1888...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='2502...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='1840...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='2437...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='1930...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='1219...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='-250...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='-197...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='-102...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='-107...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='-388...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='229"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='1131...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='-726...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='166"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='965"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='2341...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='2354...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='2565...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='1136...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='367"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='173"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='156"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='460"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='358"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='-308...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='-100...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='93"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='-723...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='147"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='-551...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='-626...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='2316...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='714"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='600"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='953"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='2267...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='-403...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='999"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='475"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='1663...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='829"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='1055...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='-314...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='1431...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='1201...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='1280...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='1431...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='1145...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='1635...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='957"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='1019...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='1219...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='1143...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='-893...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='-101...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='-138...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='-182...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='-220...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='502"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='940"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='1719...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='1592...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='960"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='1537...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='1177...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='1337...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='737"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='723"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='917"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='794"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='1075...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='2328...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='1192...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='867"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='184"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='12"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='978"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='256"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='-100...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='614"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='205"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='195"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='316"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='1241...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='1748...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='1046...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='1099...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='309"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='-202...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='-722...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='680"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='440"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='870"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='475"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='2"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='1"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='1959...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='1506...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='1027...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='677"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='-759...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='-204...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='-255...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='-217...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='-212...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='-248...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='-107...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='-524...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='-136...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='-175...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='-893...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='-845...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='-114...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='-271...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='-229...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='-220...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='-203...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='-997...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='1048...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='-955...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='-133...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='-112...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='-162...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='-141...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='-671...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='-150...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='-151...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='-161...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='-103...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='-192...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='1397...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='-627...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='-711...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='20"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='-130...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='-843...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='-642...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='-320...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='-210...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='295"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='417"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='37"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='-210...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='-298...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='-332...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='-143...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='-357...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='-323...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='-228...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='-284...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='-294...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='-234...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='-171...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='-668...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='-176...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='-241...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='-172...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='-183...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='-188...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='-234...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='-217...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='374"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='-132...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='993"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='-150...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='-843...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='-119...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='2577...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='1582...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='909"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='-140...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='-159...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='-186...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='-658...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='-679...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='89"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='680"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='1095...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='-832...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='-785...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='-228...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='-40"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='-280...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='-697...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='-697...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='-811...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='-629...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='-140...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='-166...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='-157...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='-192...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='-197...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='-201...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='-200...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='-161...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='-185...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='-190...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='-251...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='-386...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='-121...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='-365...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='-313...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='-506...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='-232...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='-288...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='-121...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='-310...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='-245...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='439"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='609"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='1078...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='2491...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='1327...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='-115...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='-442...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='203"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='-143...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='-201...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='-149...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='-128...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='-130...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='-409...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='-162...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='90"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='319"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='2483...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='357"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='1681...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='1572...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='1575...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='302"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='1076...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='1555...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='1971...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='239"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='-351...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='-527...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='-215...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='-782...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='452"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='60"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='-848...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='-138...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='-989...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='-325...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='-382...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='60"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='884"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='659"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='-264...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='-990...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='289"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='-292...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='-542...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='366"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='909"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='992"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='1808...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='-104...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='543"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='377"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='-619...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='-712...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='1459...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='257"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='-696...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='-108...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='2873...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='421"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='557"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='1696...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='2480...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='-707...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='-237...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='1730...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='2990...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='2746...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='-174...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='-194...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='485"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='-729...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='70"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='907"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='1297...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='776"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='123"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='1557...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='1208...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='253"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='508"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='-274...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='-571...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='146"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='567"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='1222...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='733"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='8"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='1041...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='3222...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='2576...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='2422...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='-103...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='-746...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='-661...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='45"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='3983...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='1694...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='709"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='-844...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='-605...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='-661...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='-436...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='-115...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='-716...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='-877...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='-102...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='1185...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='884"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='1103...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='1789...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='3132...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='-403...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='-211...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='-498...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='174"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='210"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='710"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='2127...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='2386...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='1916...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='53"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='1070...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='564"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='-118...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='34"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='-847...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='-131...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='-184...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='-140...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='-112...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='-372...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='269"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='572"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='1413...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='1586...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='3161...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='2347...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='2627...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='2502...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='2818...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='158"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='-545...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='-370...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='-624...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='-847...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='2315...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='1099...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='-417...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='4222...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e08"...', 3, v='-416...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c32...', 4, v='-409...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a3c...', 4, v='-408...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3835...', 4, v='-396...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4645...', 4, v='-396...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5455...', 4, v='-441...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6265...', 4, v='-535...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7075...', 4, v='-631...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e85...', 4, v='-729...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c96...', 4, v='-751...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aa5...', 4, v='-735...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8b6...', 4, v='-689...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6c5...', 4, v='-646...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4d7...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d30b...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0f6...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef06...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd17...', 4, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1274...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1518...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189b...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5d...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b3e...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c1f...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d00...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2246...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='278c...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='286d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='294e...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2b10...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2bf1...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2cd2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2db3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2e94...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2f75...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3056...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3137...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3219...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='32f9...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='33da...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='34bb...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='359d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='367d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='375e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3840...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3921...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3a01...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ae2...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3bc3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3ca4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3d85...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3e66...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='3f48...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4028...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4109...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='41ea...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='42cb...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='43ac...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='448d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='456e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='464f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='480f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='48f0...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='49d1...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ab4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4b95...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4c76...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4d57...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4e38...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4f19...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='4ffa...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='50dd...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='51bc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='529d...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='537e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5460...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5540...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5621...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5702...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='57e3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='58c4...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='59a7...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5a86...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5b67...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5c48...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5d29...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5e0a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5eeb...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5fcc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='60ad...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='618e...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='626f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6350...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6431...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6512...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='65f3...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='66d4...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='67b5...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6896...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6978...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6a58...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6b39...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6c1a...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6cfb...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ddc...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6ebd...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='6f9e...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='707f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7160...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7241...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7322...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7403...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='74e4...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='75c5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='76a6...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7787...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7868...', 5, v='-6"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7948...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7a29...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7b0a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7beb...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7ccc...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7dad...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7e8f...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f70...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8051...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8132...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8213...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='82f4...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='83d5...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='84b6...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8597...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8678...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8759...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='883a...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='891b...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='89fc...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8add...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8bbe...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8c9f...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8d80...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8e61...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='8f42...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9023...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9104...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='91e5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='92c6...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='93a8...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9488...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9569...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='964a...', 5, v='-9"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='972b...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='980c...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='98ed...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='99ce...', 5, v='-8"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9aaf...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9b90...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9c71...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9d52...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9e33...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9f14...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='9ff5...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a0d6...', 5, v='-7"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a1b7...', 5, v='-632...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a298...', 5, v='-351...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a379...', 5, v='-963...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a45a...', 5, v='644"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a53b...', 5, v='700"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a61c...', 5, v='942"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a6fd...', 5, v='99"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a7e0...', 5, v='464"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a8c0...', 5, v='912"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a0...', 5, v='289"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aa81...', 5, v='32"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ab62...', 5, v='46"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ac43...', 5, v='200"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ad24...', 5, v='921"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ae05...', 5, v='744"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='aee6...', 5, v='-561...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='afc7...', 5, v='-68"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b0a8...', 5, v='31"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b26a...', 5, v='142"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b34b...', 5, v='-123...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b42c...', 5, v='-451...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b50d...', 5, v='-729...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b5ee...', 5, v='-712...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b6cf...', 5, v='-158...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b7b0...', 5, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b891...', 5, v='-175...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='b972...', 5, v='-175...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ba53...', 5, v='-189...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bb34...', 5, v='-827...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bc15...', 5, v='-882...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bcf6...', 5, v='-899...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bdd8...', 5, v='644"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='beb8...', 5, v='417"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='bf99...', 5, v='524"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c07a...', 5, v='400"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c15b...', 5, v='372"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c23c...', 5, v='484"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c31d...', 5, v='591"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c3fe...', 5, v='336"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c4df...', 5, v='741"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c5c0...', 5, v='114"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c6a1...', 5, v='507"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c782...', 5, v='-51"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c863...', 5, v='136"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='c944...', 5, v='334"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ca25...', 5, v='235"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cb06...', 5, v='116"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cbe7...', 5, v='-417...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ccc8...', 5, v='-232...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cda9...', 5, v='-184...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ce8a...', 5, v='-219...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='cf6b...', 5, v='-134...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d04c...', 5, v='-51"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d12d...', 5, v='143"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d20e...', 5, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d2f0...', 5, v='11"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d3d0...', 5, v='600"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b1...', 5, v='644"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d592...', 5, v='836"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d673...', 5, v='1068...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d754...', 5, v='1213...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d835...', 5, v='-135...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d916...', 5, v='-755...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d9f7...', 5, v='-149...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dad8...', 5, v='-201...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dbb9...', 5, v='-256...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dc9a...', 5, v='-233...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='dd7b...', 5, v='-289...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='de5c...', 5, v='-278...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='df3d...', 5, v='-291...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e01d...', 5, v='-291...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e0fe...', 5, v='-283...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e1df...', 5, v='-301...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e2c0...', 5, v='-409...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e3a1...', 5, v='-397...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e482...', 5, v='-337...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e563...', 5, v='-342...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e644...', 5, v='-255...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e725...', 5, v='-218...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e806...', 5, v='-175...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e8e7...', 5, v='-477...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='e9c8...', 5, v='-709...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eaa9...', 5, v='-653...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eb8a...', 5, v='-653...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ec6b...', 5, v='-468...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ed4c...', 5, v='-211...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ee2d...', 5, v='-223...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ef0e...', 5, v='-319...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='eff0...', 5, v='-408...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f0d1...', 5, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f1b2...', 5, v='-455...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f293...', 5, v='-462...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f374...', 5, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f455...', 5, v='-460...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f536...', 5, v='-485...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f617...', 5, v='-461...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f6f8...', 5, v='-481...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f7d9...', 5, v='-424...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f8ba...', 5, v='-391...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='f99b...', 5, v='-380...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fa7c...', 5, v='-302...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fb5d...', 5, v='-303...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fc3e...', 5, v='-329...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fd1f...', 5, v='-268...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fe00...', 5, v='-253...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee1...', 5, v='-208...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='ffc2...', 5, v='-198...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='100a...', 6, v='-179...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1018...', 6, v='-179...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1026...', 6, v='-207...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1034...', 6, v='-272...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1042...', 6, v='-401...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1050...', 6, v='-432...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='105e...', 6, v='-433...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='106c...', 6, v='-472...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='107a...', 6, v='-433...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1088...', 6, v='-390...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1096...', 6, v='-411...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10a4...', 6, v='-432...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10b2...', 6, v='-434...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10c1...', 6, v='-416...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10cf...', 6, v='-435...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10dd...', 6, v='-416...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10eb...', 6, v='-445...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='10f9...', 6, v='-389...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1107...', 6, v='-328...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1115...', 6, v='-286...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1123...', 6, v='-266...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1131...', 6, v='-179...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='113f...', 6, v='-179...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='114d...', 6, v='-182...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='115b...', 6, v='-178...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1169...', 6, v='-158...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1177...', 6, v='-208...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1185...', 6, v='-288...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1193...', 6, v='-355...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11a2...', 6, v='-483...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11b0...', 6, v='-432...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11be...', 6, v='-539...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11cc...', 6, v='-445...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11da...', 6, v='-427...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11e8...', 6, v='-435...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='11f6...', 6, v='-390...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1205...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1213...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1221...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='122f...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='123d...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='124b...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1259...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1267...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1276...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1283...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='129f...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12ad...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12bb...', 6, v='-1"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12c9...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12d7...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12e5...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='12f3...', 6, v='-2"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1301...', 6, v='-4"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='130f...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='131d...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='132b...', 6, v='-3"/...', 2)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1339...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1347...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1355...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1364...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1372...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1380...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='138e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='139c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13aa...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13b8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13c6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13d4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13e2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13f0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='13fe...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='140c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='141a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1428...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1436...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1445...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1453...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1461...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='146f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='147d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='148b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1499...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14a7...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14b5...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14c3...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14d1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14df...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14ed...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='14fb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1509...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1517...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1526...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1542...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1550...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='155e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='156c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='157a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1588...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1596...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15a4...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15b2...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15c0...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ce...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15dc...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15ea...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='15f8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1607...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1615...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1623...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1631...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='163f...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='164d...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='165b...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1669...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1677...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1685...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1693...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16a1...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16af...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16bd...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16cb...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16d9...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16e8...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='16f6...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1704...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1712...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1720...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='172e...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='173c...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='174a...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1758...', 6, v='0"/>...', 1)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1766...', 6, v='-684...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1774...', 6, v='-684...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1782...', 6, v='-727...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1790...', 6, v='-671...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='179e...', 6, v='-604...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ac...', 6, v='-587...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17ba...', 6, v='-606...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17c9...', 6, v='-548...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='-543...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17e5...', 6, v='-534...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17f3...', 6, v='-498...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1801...', 6, v='-519...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='180f...', 6, v='-632...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='181d...', 6, v='-692...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='182b...', 6, v='-788...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1839...', 6, v='-134...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1847...', 6, v='-133...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1855...', 6, v='-128...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1863...', 6, v='-119...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1871...', 6, v='-124...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='187f...', 6, v='-116...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='188d...', 6, v='-125...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='189c...', 6, v='-119...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18b8...', 6, v='-756...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18c6...', 6, v='-810...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18d4...', 6, v='-767...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18e2...', 6, v='-656...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18f0...', 6, v='-616...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='18fe...', 6, v='-566...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='190c...', 6, v='-447...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='191a...', 6, v='-430...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1928...', 6, v='-425...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1936...', 6, v='-412...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1944...', 6, v='-412...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1952...', 6, v='-449...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1960...', 6, v='-513...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='196e...', 6, v='-596...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='197c...', 6, v='-635...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='198b...', 6, v='-596...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1999...', 6, v='-661...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19b5...', 6, v='-661...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19c3...', 6, v='-619...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19d1...', 6, v='-623...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19df...', 6, v='-631...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ed...', 6, v='-607...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19ee...', 6, v='-607...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='19fb...', 6, v='-239...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a09...', 6, v='-260...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a17...', 6, v='-305...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a25...', 6, v='-333...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a33...', 6, v='-223...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a41...', 6, v='-213...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a4f...', 6, v='-154...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a5e...', 6, v='-167...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a6c...', 6, v='-969...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a7a...', 6, v='-112...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a88...', 6, v='-107...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='-481...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aa4...', 6, v='-537...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ab2...', 6, v='-995...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ac0...', 6, v='-181...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ace...', 6, v='-263...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1adc...', 6, v='-292...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1aea...', 6, v='-259...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1af8...', 6, v='-289...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b06...', 6, v='-217...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1b14...', 6, v='-209...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='311"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c82...', 6, v='399"...', 3)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c90...', 6, v='3486...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c9e...', 6, v='3357...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cac...', 6, v='3670...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cba...', 6, v='3580...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cc8...', 6, v='5398...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cd6...', 6, v='5478...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ce4...', 6, v='5618...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1cf2...', 6, v='5659...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d01...', 6, v='5923...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d0f...', 6, v='6651...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d1d...', 6, v='6654...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d2b...', 6, v='6713...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d39...', 6, v='6885...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d47...', 6, v='6893...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d55...', 6, v='6705...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d63...', 6, v='5853...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d71...', 6, v='5545...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d7f...', 6, v='5589...', 4)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d8d...', 6, v='-321...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1d9b...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1da9...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1db7...', 6, v='-347...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dc5...', 6, v='-363...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dd3...', 6, v='-372...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1de1...', 6, v='-603...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1df0...', 6, v='-675...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1dfe...', 6, v='-664...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e0c...', 6, v='-677...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e1a...', 6, v='-679...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e28...', 6, v='-659...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e36...', 6, v='-613...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e44...', 6, v='-565...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e52...', 6, v='-491...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e60...', 6, v='-490...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e6e...', 6, v='-480...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e7c...', 6, v='-197...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e8a...', 6, v='-182...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1e98...', 6, v='-182...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ea6...', 6, v='-227...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eb4...', 6, v='-233...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ec2...', 6, v='-264...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ed1...', 6, v='-264...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1edf...', 6, v='-274...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1eed...', 6, v='-272...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1efb...', 6, v='-258...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f09...', 6, v='-254...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='-237...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f25...', 6, v='-233...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f33...', 6, v='-256...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f41...', 6, v='-278...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f4f...', 6, v='-319...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f5d...', 6, v='-358...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f6b...', 6, v='-359...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f79...', 6, v='-312...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f87...', 6, v='-333...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f95...', 6, v='-314...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fa4...', 6, v='-280...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fb2...', 6, v='-248...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fc0...', 6, v='-249...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fce...', 6, v='-217...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fdc...', 6, v='-213...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1fea...', 6, v='-215...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1ff8...', 6, v='-250...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2006...', 6, v='-239...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2014...', 6, v='-346...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2022...', 6, v='-451...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2030...', 6, v='-535...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='203e...', 6, v='-591...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='204c...', 6, v='-577...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='205a...', 6, v='-528...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2068...', 6, v='-538...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2076...', 6, v='-597...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2084...', 6, v='-610...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2093...', 6, v='-674...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20a1...', 6, v='-631...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20af...', 6, v='-553...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20bd...', 6, v='-545...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20cb...', 6, v='-463...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20d9...', 6, v='-434...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20e7...', 6, v='-404...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='20f5...', 6, v='-385...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2103...', 6, v='-351...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2111...', 6, v='-313...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='211f...', 6, v='-301...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='212d...', 6, v='-290...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='213b...', 6, v='-282...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2149...', 6, v='-368...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2157...', 6, v='-450...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2165...', 6, v='-584...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2174...', 6, v='-619...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2182...', 6, v='-616...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2190...', 6, v='-614...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='219e...', 6, v='-622...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ac...', 6, v='-593...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='-592...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21c8...', 6, v='-555...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21d6...', 6, v='-624...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21e4...', 6, v='-575...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21f2...', 6, v='-577...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2200...', 6, v='-546...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='220e...', 6, v='-539...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='221c...', 6, v='-454...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='222a...', 6, v='-387...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2238...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2247...', 6, v='-329...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2255...', 6, v='-168...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2263...', 6, v='-208...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2271...', 6, v='-204...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='227f...', 6, v='-167...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='228d...', 6, v='-178...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='229b...', 6, v='-349...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22a9...', 6, v='-408...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22b7...', 6, v='-445...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22c5...', 6, v='-481...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22d3...', 6, v='-440...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22e1...', 6, v='-462...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22ef...', 6, v='-482...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='22fd...', 6, v='-464...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='230b...', 6, v='-443...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2319...', 6, v='-539...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2327...', 6, v='-555...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2336...', 6, v='-588...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2344...', 6, v='-520...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2352...', 6, v='-520...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2360...', 6, v='-525...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='236e...', 6, v='-434...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='237c...', 6, v='-419...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='238a...', 6, v='-399...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2398...', 6, v='-319...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23a6...', 6, v='-332...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23b4...', 6, v='-319...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23c2...', 6, v='-296...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23d0...', 6, v='-295...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23de...', 6, v='-291...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23ec...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='23fa...', 6, v='-456...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2408...', 6, v='-501...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2417...', 6, v='-579...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2425...', 6, v='-660...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2433...', 6, v='-678...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2441...', 6, v='-673...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='244f...', 6, v='-643...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='-641...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2479...', 6, v='-626...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2487...', 6, v='-537...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2495...', 6, v='-570...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24a3...', 6, v='-566...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24b1...', 6, v='-581...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24bf...', 6, v='-549...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24cd...', 6, v='-536...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24db...', 6, v='-453...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24e9...', 6, v='-400...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='24f8...', 6, v='-348...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2506...', 6, v='-359...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2514...', 6, v='-357...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2522...', 6, v='-342...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2530...', 6, v='-361...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='253e...', 6, v='-406...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='254c...', 6, v='-420...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='255a...', 6, v='-497...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2568...', 6, v='-584...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2576...', 6, v='-566...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2584...', 6, v='-151...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2592...', 6, v='-862...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25a0...', 6, v='-460...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ae...', 6, v='-632...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25bc...', 6, v='-612...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25ca...', 6, v='-581...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25d9...', 6, v='-580...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25e7...', 6, v='-562...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='25f5...', 6, v='-531...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2603...', 6, v='-554...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2611...', 6, v='-491...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='261f...', 6, v='-458...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='262d...', 6, v='-467...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='263b...', 6, v='-369...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2649...', 6, v='-349...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2657...', 6, v='-358...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2665...', 6, v='-368...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2673...', 6, v='-360...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2681...', 6, v='-368...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='268f...', 6, v='-385...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='269d...', 6, v='-392...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ab...', 6, v='-395...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26ba...', 6, v='-446...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26c8...', 6, v='-425...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26d6...', 6, v='-391...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26e4...', 6, v='-389...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='26f2...', 6, v='-353...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2700...', 6, v='-379...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='-362...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='271c...', 6, v='-454...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='272a...', 6, v='-517...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2738...', 6, v='-503...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2746...', 6, v='-502...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2754...', 6, v='-502...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2762...', 6, v='-399...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2770...', 6, v='-355...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='277e...', 6, v='-320...', 5)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='6746...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='2212...', 155)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='6738...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0:0:...', 147)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='6734...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='7289...', 176)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='6730...', 6, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0:0:...', 87)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='2627...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::1...', 258)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0::5...', 185)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='6::1...', 186)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='6::1...', 201)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='629:...', 257)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='2289...', 258)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='1954...', 292)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='2.48...', 279)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.00...', 304)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='5016...', 313)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='1243...', 68)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='8197...', 288)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='8270...', 280)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='6511...', 268)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='3280...', 278)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='8226...', 56)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='2627...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0::0...', 144)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='0::0...', 162)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='273:...', 298)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='16::...', 298)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='14::...', 323)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='0::0...', 306)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.03...', 294)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='0::0...', 223)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='0::0...', 28)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='1413...', 268)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='303:...', 270)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='5304...', 297)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='1514...', 280)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='1776...', 61)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='2627...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::4...', 265)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0::8...', 208)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='8::1...', 206)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='8::1...', 222)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='2::4...', 228)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='0::0...', 292)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='4757...', 350)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='3.74...', 307)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0::0...', 234)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='1113...', 339)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='3972...', 63)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='1295...', 285)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='3876...', 321)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='6481...', 322)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='7162...', 331)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='5709...', 61)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='2627...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0::0...', 144)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='0::0...', 157)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='1070...', 279)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='1231...', 208)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='0::0...', 237)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='0.03...', 296)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='0::0...', 146)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='0::0...', 28)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='9208...', 271)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='0::0...', 25)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1314...', 7, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='2703...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1313...', 7, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='3066...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1313...', 7, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='1576...', 7)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='1313...', 7, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='1270...', 6)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='5251...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::1...', 324)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='2226...', 336)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='2243...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='2261...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='2937...', 336)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='3974...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='4804...', 369)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='5025...', 523)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='5025...', 490)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='5944...', 361)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='1369...', 78)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='1748...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='2118...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='2325...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='2434...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='2668...', 70)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='5251...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0::0...', 144)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='0::0...', 165)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='2745...', 327)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='5015...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='9659...', 415)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='1317...', 573)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='1317...', 539)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='1382...', 386)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='1443...', 78)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='1627...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='1747...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='2013...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='2534...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='3009...', 70)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='5251...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::4...', 328)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='7309...', 336)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='7346...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='7382...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='8444...', 336)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='9988...', 377)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='2254...', 421)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='1520...', 573)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='1520...', 540)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='4071...', 386)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='7095...', 78)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='7709...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='8856...', 400)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='1085...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='1306...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='1537...', 79)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='5251...', 8, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='0::0...', 144)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='0::0...', 142)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='0::0...', 160)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='4546...', 306)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='1353...', 334)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='1715...', 374)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='1715...', 526)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='1715...', 486)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='1715...', 338)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='1715...', 68)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='2636...', 367)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='1270...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='1270...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='1270...', 382)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='1270...', 70)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='3460...', 5, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='6094...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='6116...', 432)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='6117...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='6117...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='6123...', 432)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='6134...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='6142...', 449)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='1448...', 572)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='1448...', 543)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='6154...', 434)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='6231...', 88)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='6269...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='6306...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='6327...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='6338...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='6361...', 79)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='3380...', 5, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='8817...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='8817...', 480)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='8817...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='8817...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='8818...', 480)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='8822...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='8827...', 495)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='1111...', 570)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='1112...', 552)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='8831...', 482)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='8832...', 98)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='8834...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='8835...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='8838...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='8843...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='8848...', 88)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='3340...', 5, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='9437...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='9510...', 432)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='9511...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='9511...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='9522...', 432)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='9537...', 430)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='9663...', 449)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='8980...', 518)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1534...', 6, v='8983...', 507)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='17d7...', 6, v='9844...', 466)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1a96...', 6, v='1014...', 98)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1c74...', 6, v='1020...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1f17...', 6, v='1032...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='21ba...', 6, v='1052...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='246b...', 6, v='1074...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='270e...', 6, v='1097...', 88)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(par, NULL, NULL, 0, 2, 0, memind='3300...', 5, h='3dc1...', 8)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='0" v...', 1, v='3861...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='2a30...', 5, v='3861...', 480)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='5541...', 5, v='3861...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='7f71...', 5, v='3861...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='a9a1...', 5, v='3861...', 480)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='d4b2...', 5, v='3862...', 478)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='fee2...', 5, v='3862...', 498)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(val, NULL, NULL, 0, 2, 0, o='1291...', 6, v='2297...', 574)
+SAX.endElementNs(val, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(par, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.endElementNs(device, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(select, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(data, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(electroxml, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att5 b/result/att5
new file mode 100644
index 0000000..8768e36
--- /dev/null
+++ b/result/att5
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ATTLIST normId attr NMTOKENS #IMPLIED>
+]>
+<doc>
+ <!-- no normalization -->
+ <norm attr=" "/>
+ <norm attr=" foo bar "/>
+ <norm attr=" foobar"/>
+ <norm attr=" foo bar "/>
+ <norm attr="foobar "/>
+ <norm attr=" &amp; "/>
+ <norm attr=" foo&amp;bar "/>
+ <norm attr=" foobar&amp;"/>
+ <norm attr="&amp;foo bar "/>
+ <norm attr="foobar &amp;"/>
+ <norm attr=" &lt; "/>
+ <norm attr=" foo&lt;bar "/>
+ <norm attr=" foobar&lt;"/>
+ <norm attr="&lt;foo bar "/>
+ <norm attr="foobar &lt;"/>
+ <norm attr=" &#13;&#10;&#9; "/>
+ <!-- normalization -->
+ <normId attr=""/>
+ <normId attr="foo bar"/>
+ <normId attr="foobar"/>
+ <normId attr="foo bar"/>
+ <normId attr="foobar"/>
+ <normId attr="&amp;"/>
+ <normId attr="foo&amp;bar"/>
+ <normId attr="foobar&amp;"/>
+ <normId attr="&amp;foo bar"/>
+ <normId attr="foobar &amp;"/>
+ <normId attr="&lt;"/>
+ <normId attr="foo&lt;bar"/>
+ <normId attr="foobar&lt;"/>
+ <normId attr="&lt;foo bar"/>
+ <normId attr="foobar &lt;"/>
+ <normId attr="&#13;&#10;&#9;"/> <!-- PBM serializing back -->
+</doc>
diff --git a/result/att5.rde b/result/att5.rde
new file mode 100644
index 0000000..35220b0
--- /dev/null
+++ b/result/att5.rde
@@ -0,0 +1,109 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 no normalization
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 normalization
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+1 8 #comment 0 1 PBM serializing back
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/att5.rdr b/result/att5.rdr
new file mode 100644
index 0000000..35220b0
--- /dev/null
+++ b/result/att5.rdr
@@ -0,0 +1,109 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 no normalization
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 1 norm 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 normalization
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+
+1 1 normId 1 0
+1 14 #text 0 1
+1 8 #comment 0 1 PBM serializing back
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/att5.sax b/result/att5.sax
new file mode 100644
index 0000000..49d85fb
--- /dev/null
+++ b/result/att5.sax
@@ -0,0 +1,148 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.attributeDecl(normId, attr, 8, 3, NULL, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.characters(
+ , 3)
+SAX.comment( no normalization )
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foo bar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foobar')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foo bar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr='foobar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' &#38; ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foo&#38;bar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foobar&#38;')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr='&#38;foo bar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr='foobar &#38;')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' < ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foo<bar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr=' foobar<')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr='<foo bar ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr='foobar <')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.startElement(norm, attr='
+ ')
+SAX.endElement(norm)
+SAX.characters(
+ , 3)
+SAX.comment( normalization )
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foo bar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foobar')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foo bar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr='foobar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' &#38; ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foo&#38;bar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foobar&#38;')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr='&#38;foo bar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr='foobar &#38;')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' < ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foo<bar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr=' foobar<')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr='<foo bar ')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr='foobar <')
+SAX.endElement(normId)
+SAX.characters(
+ , 3)
+SAX.startElement(normId, attr='
+ ')
+SAX.endElement(normId)
+SAX.characters( , 1)
+SAX.comment( PBM serializing back )
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/att5.sax2 b/result/att5.sax2
new file mode 100644
index 0000000..8300a1d
--- /dev/null
+++ b/result/att5.sax2
@@ -0,0 +1,149 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.attributeDecl(normId, attr, 8, 3, NULL, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.comment( no normalization )
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' '...', 3)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' f...', 13)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' fo...', 8)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' foo...', 9)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr='foob...', 8)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' &#3...', 7)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' f...', 17)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' fo...', 13)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr='&#38...', 13)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr='foob...', 13)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' < ...', 3)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' f...', 13)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr=' fo...', 9)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr='<foo...', 9)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr='foob...', 9)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(norm, NULL, NULL, 0, 1, 0, attr='
+...', 6)
+SAX.endElementNs(norm, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( normalization )
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr=''/>
+...', 0)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foo ...', 7)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foob...', 6)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foo ...', 7)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foob...', 6)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='&#38...', 5)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foo&...', 11)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foob...', 11)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='&#38...', 12)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foob...', 12)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='<...', 1)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foo<...', 7)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foob...', 7)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='<foo...', 8)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='foob...', 8)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(normId, NULL, NULL, 0, 1, 0, attr='
+ ...', 3)
+SAX.endElementNs(normId, NULL, NULL)
+SAX.characters( , 1)
+SAX.comment( PBM serializing back )
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att6 b/result/att6
new file mode 100644
index 0000000..338e6b7
--- /dev/null
+++ b/result/att6
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Invoice xmlns:ccts="urn:oasis:names:tc:ubl:CoreComponentParameters:1.0:0.70" xmlns:cct="urn:oasis:names:tc:ubl:CoreComponentTypes:1.0:0.70" xmlns:cat="urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70" xmlns="urn:oasis:names:tc:ubl:Invoice:1.0:0.70">
+ <cat:ReferencedOrder>
+ <cat:SellersOrderID schemeID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeID" schemeAgencyID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeAgencyID" schemeVersionID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeVersionID" schemeAgencySchemeID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeAgencySchemeID" schemeAgencySchemeAgencyID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeAgencySchemeAgencyID" schemeDataURI="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeDataURI" schemeURI="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeURI" UID="pvalue-&gt;ReferencedOrder.SellersOrderID.UID" UIDRef="pvalue-&gt;ReferencedOrder.SellersOrderID.UIDRef" UIDRefs="pvalue-&gt;ReferencedOrder.SellersOrderID.UIDRefs0" language="pvalue-&gt;ReferencedOrder.SellersOrderID.language">pvalue-&gt;ReferencedOrder.SellersOrderID</cat:SellersOrderID>
+ </cat:ReferencedOrder>
+</Invoice>
diff --git a/result/att6.rde b/result/att6.rde
new file mode 100644
index 0000000..6d39352
--- /dev/null
+++ b/result/att6.rde
@@ -0,0 +1,15 @@
+0 1 Invoice 0 0
+1 14 #text 0 1
+
+1 1 cat:ReferencedOrder 0 0
+2 14 #text 0 1
+
+2 1 cat:SellersOrderID 0 0
+3 3 #text 0 1 pvalue->ReferencedOrder.SellersOrderID
+2 15 cat:SellersOrderID 0 0
+2 14 #text 0 1
+
+1 15 cat:ReferencedOrder 0 0
+1 14 #text 0 1
+
+0 15 Invoice 0 0
diff --git a/result/att6.rdr b/result/att6.rdr
new file mode 100644
index 0000000..6d39352
--- /dev/null
+++ b/result/att6.rdr
@@ -0,0 +1,15 @@
+0 1 Invoice 0 0
+1 14 #text 0 1
+
+1 1 cat:ReferencedOrder 0 0
+2 14 #text 0 1
+
+2 1 cat:SellersOrderID 0 0
+3 3 #text 0 1 pvalue->ReferencedOrder.SellersOrderID
+2 15 cat:SellersOrderID 0 0
+2 14 #text 0 1
+
+1 15 cat:ReferencedOrder 0 0
+1 14 #text 0 1
+
+0 15 Invoice 0 0
diff --git a/result/att6.sax b/result/att6.sax
new file mode 100644
index 0000000..4ab9521
--- /dev/null
+++ b/result/att6.sax
@@ -0,0 +1,20 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(Invoice, xmlns:ccts='urn:oasis:names:tc:ubl:CoreComponentParameters:1.0:0.70', xmlns:cct='urn:oasis:names:tc:ubl:CoreComponentTypes:1.0:0.70', xmlns:cat='urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70', xmlns='urn:oasis:names:tc:ubl:Invoice:1.0:0.70')
+SAX.characters(
+ , 4)
+SAX.startElement(cat:ReferencedOrder)
+SAX.characters(
+ , 7)
+SAX.startElement(cat:SellersOrderID, schemeID='pvalue->ReferencedOrder.SellersOrderID.schemeID', schemeAgencyID='pvalue->ReferencedOrder.SellersOrderID.schemeAgencyID', schemeVersionID='pvalue->ReferencedOrder.SellersOrderID.schemeVersionID', schemeAgencySchemeID='pvalue->ReferencedOrder.SellersOrderID.schemeAgencySchemeID', schemeAgencySchemeAgencyID='pvalue->ReferencedOrder.SellersOrderID.schemeAgencySchemeAgencyID', schemeDataURI='pvalue->ReferencedOrder.SellersOrderID.schemeDataURI', schemeURI='pvalue->ReferencedOrder.SellersOrderID.schemeURI', UID='pvalue->ReferencedOrder.SellersOrderID.UID', UIDRef='pvalue->ReferencedOrder.SellersOrderID.UIDRef', UIDRefs='pvalue->ReferencedOrder.SellersOrderID.UIDRefs0', language='pvalue->ReferencedOrder.SellersOrderID.language')
+SAX.characters(pvalue-, 7)
+SAX.characters(>, 1)
+SAX.characters(ReferencedOrder.SellersOrderID, 30)
+SAX.endElement(cat:SellersOrderID)
+SAX.characters(
+ , 4)
+SAX.endElement(cat:ReferencedOrder)
+SAX.characters(
+, 1)
+SAX.endElement(Invoice)
+SAX.endDocument()
diff --git a/result/att6.sax2 b/result/att6.sax2
new file mode 100644
index 0000000..54dd6d3
--- /dev/null
+++ b/result/att6.sax2
@@ -0,0 +1,20 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(Invoice, NULL, 'urn:oasis:names:tc:ubl:Invoice:1.0:0.70', 4, xmlns:ccts='urn:oasis:names:tc:ubl:CoreComponentParameters:1.0:0.70', xmlns:cct='urn:oasis:names:tc:ubl:CoreComponentTypes:1.0:0.70', xmlns:cat='urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70', xmlns='urn:oasis:names:tc:ubl:Invoice:1.0:0.70', 0, 0)
+SAX.characters(
+ , 4)
+SAX.startElementNs(ReferencedOrder, cat, 'urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(SellersOrderID, cat, 'urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70', 0, 11, 0, schemeID='pval...', 47, schemeAgencyID='pval...', 53, schemeVersionID='pval...', 54, schemeAgencySchemeID='pval...', 59, schemeAgencySchemeAgencyID='pval...', 65, schemeDataURI='pval...', 52, schemeURI='pval...', 48, UID='pval...', 42, UIDRef='pval...', 45, UIDRefs='pval...', 47, language='pval...', 47)
+SAX.characters(pvalue-, 7)
+SAX.characters(>, 1)
+SAX.characters(ReferencedOrder.SellersOrderID, 30)
+SAX.endElementNs(SellersOrderID, cat, 'urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70')
+SAX.characters(
+ , 4)
+SAX.endElementNs(ReferencedOrder, cat, 'urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70')
+SAX.characters(
+, 1)
+SAX.endElementNs(Invoice, NULL, 'urn:oasis:names:tc:ubl:Invoice:1.0:0.70')
+SAX.endDocument()
diff --git a/result/att7 b/result/att7
new file mode 100644
index 0000000..56d0835
--- /dev/null
+++ b/result/att7
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE x [
+<!ELEMENT x (test)*>
+<!ELEMENT test EMPTY>
+<!ATTLIST test att CDATA "attvalue">
+<!ENTITY test.ent "<test/>">
+]>
+<x>
+ <test/>
+ &test.ent;
+</x>
diff --git a/result/att7.rde b/result/att7.rde
new file mode 100644
index 0000000..afcef5f
--- /dev/null
+++ b/result/att7.rde
@@ -0,0 +1,12 @@
+0 10 x 0 0
+0 1 x 0 0
+1 14 #text 0 1
+
+1 1 test 1 0
+1 14 #text 0 1
+
+1 1 test 0 0
+1 15 test 0 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/att7.rdr b/result/att7.rdr
new file mode 100644
index 0000000..47b19b4
--- /dev/null
+++ b/result/att7.rdr
@@ -0,0 +1,11 @@
+0 10 x 0 0
+0 1 x 0 0
+1 14 #text 0 1
+
+1 1 test 1 0
+1 14 #text 0 1
+
+1 5 test.ent 0 0
+1 14 #text 0 1
+
+0 15 x 0 0
diff --git a/result/att7.sax b/result/att7.sax
new file mode 100644
index 0000000..c093279
--- /dev/null
+++ b/result/att7.sax
@@ -0,0 +1,24 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(x, , )
+SAX.elementDecl(x, 4, ...)
+SAX.elementDecl(test, 1, ...)
+SAX.attributeDecl(test, att, 1, 1, attvalue, ...)
+SAX.entityDecl(test.ent, 1, (null), (null), <test/>)
+SAX.getEntity(test.ent)
+SAX.externalSubset(x, , )
+SAX.startElement(x)
+SAX.characters(
+ , 5)
+SAX.startElement(test)
+SAX.endElement(test)
+SAX.characters(
+ , 5)
+SAX.getEntity(test.ent)
+SAX.startElement(test)
+SAX.endElement(test)
+SAX.reference(test.ent)
+SAX.characters(
+, 1)
+SAX.endElement(x)
+SAX.endDocument()
diff --git a/result/att7.sax2 b/result/att7.sax2
new file mode 100644
index 0000000..dc7e2ae
--- /dev/null
+++ b/result/att7.sax2
@@ -0,0 +1,24 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(x, , )
+SAX.elementDecl(x, 4, ...)
+SAX.elementDecl(test, 1, ...)
+SAX.attributeDecl(test, att, 1, 1, attvalue, ...)
+SAX.entityDecl(test.ent, 1, (null), (null), <test/>)
+SAX.getEntity(test.ent)
+SAX.externalSubset(x, , )
+SAX.startElementNs(x, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(test, NULL, NULL, 0, 1, 1, att='attv...', 8)
+SAX.endElementNs(test, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.getEntity(test.ent)
+SAX.startElementNs(test, NULL, NULL, 0, 1, 1, att='attv...', 8)
+SAX.endElementNs(test, NULL, NULL)
+SAX.reference(test.ent)
+SAX.characters(
+, 1)
+SAX.endElementNs(x, NULL, NULL)
+SAX.endDocument()
diff --git a/result/att8 b/result/att8
new file mode 100644
index 0000000..1d807a2
--- /dev/null
+++ b/result/att8
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<ino:response xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" ino:sessionid="556" ino:sessionkey="1590469677"><xql:query>/bsk:DocPart[@docId='20040308152601345236' and @docPartNo=1]</xql:query><ino:message ino:returnvalue="0"><ino:messageline>XQL Request processing</ino:messageline></ino:message><xql:result><bsk:DocPart xmlns:bsk="http://www.heitec.net/sara4/tamino/basket" docId="20040308152601345236" docPartNo="1" ino:id="15290"><bsk:File name="4898WPZEO2M65" size="75195"> </bsk:File></bsk:DocPart></xql:result><ino:message ino:returnvalue="0"><ino:messageline>XQL Request processed</ino:messageline></ino:message></ino:response>
diff --git a/result/att8.rde b/result/att8.rde
new file mode 100644
index 0000000..52fde32
--- /dev/null
+++ b/result/att8.rde
@@ -0,0 +1,22 @@
+0 1 ino:response 0 0
+1 1 xql:query 0 0
+2 3 #text 0 1 /bsk:DocPart[@docId='20040308152601345236' and @docPartNo=1]
+1 15 xql:query 0 0
+1 1 ino:message 0 0
+2 1 ino:messageline 0 0
+3 3 #text 0 1 XQL Request processing
+2 15 ino:messageline 0 0
+1 15 ino:message 0 0
+1 1 xql:result 0 0
+2 1 bsk:DocPart 0 0
+3 1 bsk:File 0 0
+4 14 #text 0 1
+3 15 bsk:File 0 0
+2 15 bsk:DocPart 0 0
+1 15 xql:result 0 0
+1 1 ino:message 0 0
+2 1 ino:messageline 0 0
+3 3 #text 0 1 XQL Request processed
+2 15 ino:messageline 0 0
+1 15 ino:message 0 0
+0 15 ino:response 0 0
diff --git a/result/att8.rdr b/result/att8.rdr
new file mode 100644
index 0000000..52fde32
--- /dev/null
+++ b/result/att8.rdr
@@ -0,0 +1,22 @@
+0 1 ino:response 0 0
+1 1 xql:query 0 0
+2 3 #text 0 1 /bsk:DocPart[@docId='20040308152601345236' and @docPartNo=1]
+1 15 xql:query 0 0
+1 1 ino:message 0 0
+2 1 ino:messageline 0 0
+3 3 #text 0 1 XQL Request processing
+2 15 ino:messageline 0 0
+1 15 ino:message 0 0
+1 1 xql:result 0 0
+2 1 bsk:DocPart 0 0
+3 1 bsk:File 0 0
+4 14 #text 0 1
+3 15 bsk:File 0 0
+2 15 bsk:DocPart 0 0
+1 15 xql:result 0 0
+1 1 ino:message 0 0
+2 1 ino:messageline 0 0
+3 3 #text 0 1 XQL Request processed
+2 15 ino:messageline 0 0
+1 15 ino:message 0 0
+0 15 ino:response 0 0
diff --git a/result/att8.sax b/result/att8.sax
new file mode 100644
index 0000000..12e378a
--- /dev/null
+++ b/result/att8.sax
@@ -0,0 +1,29 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(ino:response, xmlns:ino='http://namespaces.softwareag.com/tamino/response2', xmlns:xql='http://metalab.unc.edu/xql/', ino:sessionid='556', ino:sessionkey='1590469677')
+SAX.startElement(xql:query)
+SAX.characters(/bsk:DocPart[@docId=, 20)
+SAX.characters(', 1)
+SAX.characters(20040308152601345236, 20)
+SAX.characters(', 1)
+SAX.characters( and @docPartNo=1], 18)
+SAX.endElement(xql:query)
+SAX.startElement(ino:message, ino:returnvalue='0')
+SAX.startElement(ino:messageline)
+SAX.characters(XQL Request processing, 22)
+SAX.endElement(ino:messageline)
+SAX.endElement(ino:message)
+SAX.startElement(xql:result)
+SAX.startElement(bsk:DocPart, docId='20040308152601345236', docPartNo='1', ino:id='15290', xmlns:bsk='http://www.heitec.net/sara4/tamino/basket')
+SAX.startElement(bsk:File, name='4898WPZEO2M65', size='75195')
+SAX.characters( , 1)
+SAX.endElement(bsk:File)
+SAX.endElement(bsk:DocPart)
+SAX.endElement(xql:result)
+SAX.startElement(ino:message, ino:returnvalue='0')
+SAX.startElement(ino:messageline)
+SAX.characters(XQL Request processed, 21)
+SAX.endElement(ino:messageline)
+SAX.endElement(ino:message)
+SAX.endElement(ino:response)
+SAX.endDocument()
diff --git a/result/att8.sax2 b/result/att8.sax2
new file mode 100644
index 0000000..1f2344a
--- /dev/null
+++ b/result/att8.sax2
@@ -0,0 +1,29 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(response, ino, 'http://namespaces.softwareag.com/tamino/response2', 2, xmlns:ino='http://namespaces.softwareag.com/tamino/response2', xmlns:xql='http://metalab.unc.edu/xql/', 2, 0, ino:sessionid='556"...', 3, ino:sessionkey='1590...', 10)
+SAX.startElementNs(query, xql, 'http://metalab.unc.edu/xql/', 0, 0, 0)
+SAX.characters(/bsk:DocPart[@docId=, 20)
+SAX.characters(', 1)
+SAX.characters(20040308152601345236, 20)
+SAX.characters(', 1)
+SAX.characters( and @docPartNo=1], 18)
+SAX.endElementNs(query, xql, 'http://metalab.unc.edu/xql/')
+SAX.startElementNs(message, ino, 'http://namespaces.softwareag.com/tamino/response2', 0, 1, 0, ino:returnvalue='0"><...', 1)
+SAX.startElementNs(messageline, ino, 'http://namespaces.softwareag.com/tamino/response2', 0, 0, 0)
+SAX.characters(XQL Request processing, 22)
+SAX.endElementNs(messageline, ino, 'http://namespaces.softwareag.com/tamino/response2')
+SAX.endElementNs(message, ino, 'http://namespaces.softwareag.com/tamino/response2')
+SAX.startElementNs(result, xql, 'http://metalab.unc.edu/xql/', 0, 0, 0)
+SAX.startElementNs(DocPart, bsk, 'http://www.heitec.net/sara4/tamino/basket', 1, xmlns:bsk='http://www.heitec.net/sara4/tamino/basket', 3, 0, docId='2004...', 20, docPartNo='1" i...', 1, ino:id='1529...', 5)
+SAX.startElementNs(File, bsk, 'http://www.heitec.net/sara4/tamino/basket', 0, 2, 0, name='4898...', 13, size='7519...', 5)
+SAX.characters( , 1)
+SAX.endElementNs(File, bsk, 'http://www.heitec.net/sara4/tamino/basket')
+SAX.endElementNs(DocPart, bsk, 'http://www.heitec.net/sara4/tamino/basket')
+SAX.endElementNs(result, xql, 'http://metalab.unc.edu/xql/')
+SAX.startElementNs(message, ino, 'http://namespaces.softwareag.com/tamino/response2', 0, 1, 0, ino:returnvalue='0"><...', 1)
+SAX.startElementNs(messageline, ino, 'http://namespaces.softwareag.com/tamino/response2', 0, 0, 0)
+SAX.characters(XQL Request processed, 21)
+SAX.endElementNs(messageline, ino, 'http://namespaces.softwareag.com/tamino/response2')
+SAX.endElementNs(message, ino, 'http://namespaces.softwareag.com/tamino/response2')
+SAX.endElementNs(response, ino, 'http://namespaces.softwareag.com/tamino/response2')
+SAX.endDocument()
diff --git a/result/att9 b/result/att9
new file mode 100644
index 0000000..e4982a2
--- /dev/null
+++ b/result/att9
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ATTLIST doc a1 NMTOKENS "1 2">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc/>
diff --git a/result/att9.rde b/result/att9.rde
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/att9.rde
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/att9.rdr b/result/att9.rdr
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/att9.rdr
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/att9.sax b/result/att9.sax
new file mode 100644
index 0000000..0fe14a1
--- /dev/null
+++ b/result/att9.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.attributeDecl(doc, a1, 8, 1, 1 2, ...)
+SAX.elementDecl(doc, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/att9.sax2 b/result/att9.sax2
new file mode 100644
index 0000000..09b3a04
--- /dev/null
+++ b/result/att9.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.attributeDecl(doc, a1, 8, 1, 1 2, ...)
+SAX.elementDecl(doc, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 1, 1, a1='1 2...', 3)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/attrib.xml b/result/attrib.xml
new file mode 100644
index 0000000..89a1e57
--- /dev/null
+++ b/result/attrib.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<item title="Icrontic.com - Warning: Breakdancing midget with tourette's syndrome on-board&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;" url="http://www.icrontic.com/" first_time="985034339" last_time="985034339" visits="1"/>
diff --git a/result/attrib.xml.rde b/result/attrib.xml.rde
new file mode 100644
index 0000000..de6325a
--- /dev/null
+++ b/result/attrib.xml.rde
@@ -0,0 +1 @@
+0 1 item 1 0
diff --git a/result/attrib.xml.rdr b/result/attrib.xml.rdr
new file mode 100644
index 0000000..de6325a
--- /dev/null
+++ b/result/attrib.xml.rdr
@@ -0,0 +1 @@
+0 1 item 1 0
diff --git a/result/attrib.xml.sax b/result/attrib.xml.sax
new file mode 100644
index 0000000..50ad8e1
--- /dev/null
+++ b/result/attrib.xml.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(item, title='Icrontic.com - Warning: Breakdancing midget with tourette's syndrome on-board                                                ', url='http://www.icrontic.com/', first_time='985034339', last_time='985034339', visits='1')
+SAX.endElement(item)
+SAX.endDocument()
diff --git a/result/attrib.xml.sax2 b/result/attrib.xml.sax2
new file mode 100644
index 0000000..c7d2c87
--- /dev/null
+++ b/result/attrib.xml.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(item, NULL, NULL, 0, 5, 0, title='Icro...', 173, url='http...', 24, first_time='9850...', 9, last_time='9850...', 9, visits='1"/>...', 1)
+SAX.endElementNs(item, NULL, NULL)
+SAX.endDocument()
diff --git a/result/automata/a b/result/automata/a
new file mode 100644
index 0000000..4ece411
--- /dev/null
+++ b/result/automata/a
@@ -0,0 +1,4 @@
+=> Passed
+=> Failed
+=> Failed
+=> Failed
diff --git a/result/automata/aba b/result/automata/aba
new file mode 100644
index 0000000..051b9bd
--- /dev/null
+++ b/result/automata/aba
@@ -0,0 +1,6 @@
+=> Passed
+=> Passed
+=> Passed
+=> Failed
+=> Failed
+=> Failed
diff --git a/result/automata/abaa b/result/automata/abaa
new file mode 100644
index 0000000..c74769e
--- /dev/null
+++ b/result/automata/abaa
@@ -0,0 +1,5 @@
+=> Passed
+=> Passed
+=> Passed
+=> Failed
+=> Failed
diff --git a/result/automata/abba b/result/automata/abba
new file mode 100644
index 0000000..1a60848
--- /dev/null
+++ b/result/automata/abba
@@ -0,0 +1,4 @@
+=> Passed
+=> Passed
+=> Failed
+=> Failed
diff --git a/result/automata/po b/result/automata/po
new file mode 100644
index 0000000..fafcae5
--- /dev/null
+++ b/result/automata/po
@@ -0,0 +1,2 @@
+=> Passed
+=> Passed
diff --git a/result/badcomment.xml b/result/badcomment.xml
new file mode 100644
index 0000000..6b13c11
--- /dev/null
+++ b/result/badcomment.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo>
+<!-- def='NT-Char'--><!-->Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>-->
+</foo>
diff --git a/result/badcomment.xml.rde b/result/badcomment.xml.rde
new file mode 100644
index 0000000..29a3cd1
--- /dev/null
+++ b/result/badcomment.xml.rde
@@ -0,0 +1,21 @@
+0 1 foo 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 def='NT-Char'
+1 8 #comment 0 1 >Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+1 14 #text 0 1
+
+0 15 foo 0 0
diff --git a/result/badcomment.xml.rdr b/result/badcomment.xml.rdr
new file mode 100644
index 0000000..29a3cd1
--- /dev/null
+++ b/result/badcomment.xml.rdr
@@ -0,0 +1,21 @@
+0 1 foo 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 def='NT-Char'
+1 8 #comment 0 1 >Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+1 14 #text 0 1
+
+0 15 foo 0 0
diff --git a/result/badcomment.xml.sax b/result/badcomment.xml.sax
new file mode 100644
index 0000000..d409369
--- /dev/null
+++ b/result/badcomment.xml.sax
@@ -0,0 +1,24 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(foo)
+SAX.characters(
+, 1)
+SAX.comment( def='NT-Char')
+SAX.comment(>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>)
+SAX.characters(
+, 1)
+SAX.endElement(foo)
+SAX.endDocument()
diff --git a/result/badcomment.xml.sax2 b/result/badcomment.xml.sax2
new file mode 100644
index 0000000..08e5622
--- /dev/null
+++ b/result/badcomment.xml.sax2
@@ -0,0 +1,24 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(foo, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.comment( def='NT-Char')
+SAX.comment(>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>)
+SAX.characters(
+, 1)
+SAX.endElementNs(foo, NULL, NULL)
+SAX.endDocument()
diff --git a/result/bigentname.xml b/result/bigentname.xml
new file mode 100644
index 0000000..6b7183f
--- /dev/null
+++ b/result/bigentname.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name '"Yes"'>
+<!ENTITY WhatHeSaid "He said &very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name;">
+]>
+<doc>&WhatHeSaid;</doc>
diff --git a/result/bigentname.xml.rde b/result/bigentname.xml.rde
new file mode 100644
index 0000000..c2d4cc0
--- /dev/null
+++ b/result/bigentname.xml.rde
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 3 #text 0 1 He said "Yes"
+0 15 doc 0 0
diff --git a/result/bigentname.xml.rdr b/result/bigentname.xml.rdr
new file mode 100644
index 0000000..c394a46
--- /dev/null
+++ b/result/bigentname.xml.rdr
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 5 WhatHeSaid 0 0
+0 15 doc 0 0
diff --git a/result/bigentname.xml.sax b/result/bigentname.xml.sax
new file mode 100644
index 0000000..1ee19ab
--- /dev/null
+++ b/result/bigentname.xml.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name, 1, (null), (null), "Yes")
+SAX.getEntity(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name)
+SAX.entityDecl(WhatHeSaid, 1, (null), (null), He said &very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name;)
+SAX.getEntity(WhatHeSaid)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.getEntity(WhatHeSaid)
+SAX.characters(He said , 8)
+SAX.getEntity(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name)
+SAX.characters("Yes", 5)
+SAX.reference(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name)
+SAX.reference(WhatHeSaid)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/bigentname.xml.sax2 b/result/bigentname.xml.sax2
new file mode 100644
index 0000000..c2f72c0
--- /dev/null
+++ b/result/bigentname.xml.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name, 1, (null), (null), "Yes")
+SAX.getEntity(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name)
+SAX.entityDecl(WhatHeSaid, 1, (null), (null), He said &very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name;)
+SAX.getEntity(WhatHeSaid)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.getEntity(WhatHeSaid)
+SAX.characters(He said , 8)
+SAX.getEntity(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name)
+SAX.characters("Yes", 5)
+SAX.reference(very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name)
+SAX.reference(WhatHeSaid)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/bigname.xml b/result/bigname.xml
new file mode 100644
index 0000000..885fd7c
--- /dev/null
+++ b/result/bigname.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name/>
diff --git a/result/bigname.xml.rde b/result/bigname.xml.rde
new file mode 100644
index 0000000..71284c1
--- /dev/null
+++ b/result/bigname.xml.rde
@@ -0,0 +1 @@
+0 1 this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name 1 0
diff --git a/result/bigname.xml.rdr b/result/bigname.xml.rdr
new file mode 100644
index 0000000..71284c1
--- /dev/null
+++ b/result/bigname.xml.rdr
@@ -0,0 +1 @@
+0 1 this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name 1 0
diff --git a/result/bigname.xml.sax b/result/bigname.xml.sax
new file mode 100644
index 0000000..31945be
--- /dev/null
+++ b/result/bigname.xml.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name)
+SAX.endElement(this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name)
+SAX.endDocument()
diff --git a/result/bigname.xml.sax2 b/result/bigname.xml.sax2
new file mode 100644
index 0000000..ef939f9
--- /dev/null
+++ b/result/bigname.xml.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name, NULL, NULL)
+SAX.endDocument()
diff --git a/result/bigname2.xml b/result/bigname2.xml
new file mode 100644
index 0000000..a48c359
--- /dev/null
+++ b/result/bigname2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name xmlns:this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix="http://www.example.com/testns/"/>
diff --git a/result/bigname2.xml.rde b/result/bigname2.xml.rde
new file mode 100644
index 0000000..6de9dd7
--- /dev/null
+++ b/result/bigname2.xml.rde
@@ -0,0 +1 @@
+0 1 this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name 1 0
diff --git a/result/bigname2.xml.rdr b/result/bigname2.xml.rdr
new file mode 100644
index 0000000..6de9dd7
--- /dev/null
+++ b/result/bigname2.xml.rdr
@@ -0,0 +1 @@
+0 1 this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name 1 0
diff --git a/result/bigname2.xml.sax b/result/bigname2.xml.sax
new file mode 100644
index 0000000..7c353e5
--- /dev/null
+++ b/result/bigname2.xml.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name, xmlns:this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix='http://www.example.com/testns/')
+SAX.endElement(this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name)
+SAX.endDocument()
diff --git a/result/bigname2.xml.sax2 b/result/bigname2.xml.sax2
new file mode 100644
index 0000000..6b406f4
--- /dev/null
+++ b/result/bigname2.xml.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name, this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix, 'http://www.example.com/testns/', 1, xmlns:this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix='http://www.example.com/testns/', 0, 0)
+SAX.endElementNs(start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name, this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix, 'http://www.example.com/testns/')
+SAX.endDocument()
diff --git a/result/c14n/1-1-without-comments/example-1 b/result/c14n/1-1-without-comments/example-1
new file mode 100755
index 0000000..af9a977
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-1
@@ -0,0 +1,4 @@
+<?xml-stylesheet href="doc.xsl"
+ type="text/xsl" ?>
+<doc>Hello, world!</doc>
+<?pi-without-data?> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-2 b/result/c14n/1-1-without-comments/example-2
new file mode 100755
index 0000000..2afa15c
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-2
@@ -0,0 +1,11 @@
+<doc>
+ <clean> </clean>
+ <dirty> A B </dirty>
+ <mixed>
+ A
+ <clean> </clean>
+ B
+ <dirty> A B </dirty>
+ C
+ </mixed>
+</doc> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-3 b/result/c14n/1-1-without-comments/example-3
new file mode 100755
index 0000000..4c287e6
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-3
@@ -0,0 +1,14 @@
+<doc>
+ <e1></e1>
+ <e2></e2>
+ <e3 id="elem3" name="elem3"></e3>
+ <e4 id="elem4" name="elem4"></e4>
+ <e5 xmlns="http://www.uvic.ca" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="I'm" attr2="all" b:attr="sorted" a:attr="out"></e5>
+ <e6 xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="">
+ <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+ </e8>
+ </e7>
+ </e6>
+</doc> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-4 b/result/c14n/1-1-without-comments/example-4
new file mode 100755
index 0000000..19a2559
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-4
@@ -0,0 +1,9 @@
+<doc>
+ <text>First line&#xD;
+Second line</text>
+ <value>2</value>
+ <compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>
+ <compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>
+ <norm attr=" ' &#xD;&#xA;&#x9; ' "></norm>
+ <normId id="' &#xD;&#xA;&#x9; '"></normId>
+</doc> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-5 b/result/c14n/1-1-without-comments/example-5
new file mode 100755
index 0000000..c232e74
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-5
@@ -0,0 +1,3 @@
+<doc attrExtEnt="entExt">
+ Hello, world!
+</doc> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-6 b/result/c14n/1-1-without-comments/example-6
new file mode 100755
index 0000000..0be38f9
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-6
@@ -0,0 +1 @@
+<doc>©</doc> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-7 b/result/c14n/1-1-without-comments/example-7
new file mode 100755
index 0000000..0a96cc4
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-7
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"><e3 xmlns="" id="E3" xml:space="preserve"></e3></e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/example-8 b/result/c14n/1-1-without-comments/example-8
new file mode 100755
index 0000000..eb830e8
--- /dev/null
+++ b/result/c14n/1-1-without-comments/example-8
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="something/else"><e3 xmlns="" id="E3" xml:base="bar/foo" xml:space="preserve"></e3></e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-c14n11spec-102 b/result/c14n/1-1-without-comments/xmlbase-c14n11spec-102
new file mode 100644
index 0000000..421d60b
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-c14n11spec-102
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://www.example.com/something/else"><e3 xmlns="" id="E3" xml:base="../bar/foo" xml:space="preserve"></e3></e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-c14n11spec2-102 b/result/c14n/1-1-without-comments/xmlbase-c14n11spec2-102
new file mode 100644
index 0000000..eb830e8
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-c14n11spec2-102
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="something/else"><e3 xmlns="" id="E3" xml:base="bar/foo" xml:space="preserve"></e3></e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-c14n11spec3-102 b/result/c14n/1-1-without-comments/xmlbase-c14n11spec3-102
new file mode 100644
index 0000000..77ef848
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-c14n11spec3-102
@@ -0,0 +1,2 @@
+<a xml:base="foo/bar"><d xml:base="../../x">
+ </d></a> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-1 b/result/c14n/1-1-without-comments/xmlbase-prop-1
new file mode 100644
index 0000000..da3a2b6
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-1
@@ -0,0 +1,14 @@
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"></ietf:e121>
+ </ietf:e12>
+ </ietf:e1>
+
+ <ietf:e3>
+ <ietf:e31 at="3"></ietf:e31>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-2 b/result/c14n/1-1-without-comments/xmlbase-prop-2
new file mode 100644
index 0000000..aefa811
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-2
@@ -0,0 +1,8 @@
+<ietf:e1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"></ietf:e121>
+ </ietf:e12>
+ </ietf:e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-3 b/result/c14n/1-1-without-comments/xmlbase-prop-3
new file mode 100644
index 0000000..0757d28
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-3
@@ -0,0 +1,3 @@
+<ietf:e11 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"></ietf:e111>
+ </ietf:e11> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-4 b/result/c14n/1-1-without-comments/xmlbase-prop-4
new file mode 100644
index 0000000..0d45839
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-4
@@ -0,0 +1 @@
+<ietf:e111 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase111/"></ietf:e111> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-5 b/result/c14n/1-1-without-comments/xmlbase-prop-5
new file mode 100644
index 0000000..95e51d9
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-5
@@ -0,0 +1 @@
+<ietf:e21 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase21/"></ietf:e21> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-6 b/result/c14n/1-1-without-comments/xmlbase-prop-6
new file mode 100644
index 0000000..a7b61e3
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-6
@@ -0,0 +1,3 @@
+<ietf:e3 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e31 at="3"></ietf:e31>
+ </ietf:e3> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlbase-prop-7 b/result/c14n/1-1-without-comments/xmlbase-prop-7
new file mode 100644
index 0000000..eda3165
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlbase-prop-7
@@ -0,0 +1,7 @@
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+
+
+ <ietf:e3>
+ <ietf:e31 at="3"></ietf:e31>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlid-prop-1 b/result/c14n/1-1-without-comments/xmlid-prop-1
new file mode 100644
index 0000000..2a76c06
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlid-prop-1
@@ -0,0 +1,8 @@
+<ietf:e1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:id="IdInterop">
+ <ietf:e11>
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+ </ietf:e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlid-prop-2 b/result/c14n/1-1-without-comments/xmlid-prop-2
new file mode 100644
index 0000000..1dccb8d
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlid-prop-2
@@ -0,0 +1,5 @@
+<ietf:e11 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e111></ietf:e111>
+ </ietf:e11><ietf:e12 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmllang-prop-1 b/result/c14n/1-1-without-comments/xmllang-prop-1
new file mode 100644
index 0000000..2581a9d
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmllang-prop-1
@@ -0,0 +1,8 @@
+<ietf:e1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+ </ietf:e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmllang-prop-2 b/result/c14n/1-1-without-comments/xmllang-prop-2
new file mode 100644
index 0000000..5add5fa
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmllang-prop-2
@@ -0,0 +1,3 @@
+<ietf:e2 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e21></ietf:e21>
+ </ietf:e2> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmllang-prop-3 b/result/c14n/1-1-without-comments/xmllang-prop-3
new file mode 100644
index 0000000..e327ebd
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmllang-prop-3
@@ -0,0 +1,3 @@
+<ietf:e11 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:lang="EN">
+ <ietf:e111></ietf:e111>
+ </ietf:e11> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmllang-prop-4 b/result/c14n/1-1-without-comments/xmllang-prop-4
new file mode 100644
index 0000000..dc192c9
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmllang-prop-4
@@ -0,0 +1,5 @@
+<ietf:e11 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:lang="EN">
+ <ietf:e111></ietf:e111>
+ </ietf:e11><ietf:e12 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" at="2" xml:lang="EN">
+ <ietf:e121></ietf:e121>
+ </ietf:e12> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlspace-prop-1 b/result/c14n/1-1-without-comments/xmlspace-prop-1
new file mode 100644
index 0000000..7c13acc
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlspace-prop-1
@@ -0,0 +1,8 @@
+<ietf:e1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:space="true">
+ <ietf:e11>
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+ </ietf:e1> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlspace-prop-2 b/result/c14n/1-1-without-comments/xmlspace-prop-2
new file mode 100644
index 0000000..5add5fa
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlspace-prop-2
@@ -0,0 +1,3 @@
+<ietf:e2 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e21></ietf:e21>
+ </ietf:e2> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlspace-prop-3 b/result/c14n/1-1-without-comments/xmlspace-prop-3
new file mode 100644
index 0000000..94a1a56
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlspace-prop-3
@@ -0,0 +1,3 @@
+<ietf:e11 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:space="true">
+ <ietf:e111></ietf:e111>
+ </ietf:e11> \ No newline at end of file
diff --git a/result/c14n/1-1-without-comments/xmlspace-prop-4 b/result/c14n/1-1-without-comments/xmlspace-prop-4
new file mode 100644
index 0000000..acbddd4
--- /dev/null
+++ b/result/c14n/1-1-without-comments/xmlspace-prop-4
@@ -0,0 +1,5 @@
+<ietf:e11 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:space="true">
+ <ietf:e111></ietf:e111>
+ </ietf:e11><ietf:e12 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" at="2" xml:space="true">
+ <ietf:e121></ietf:e121>
+ </ietf:e12> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-09 b/result/c14n/exc-without-comments/merlin-c14n-two-09
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-09
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something>
+ <foo:Something>
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-10 b/result/c14n/exc-without-comments/merlin-c14n-two-10
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-10
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something>
+ <foo:Something>
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-11 b/result/c14n/exc-without-comments/merlin-c14n-two-11
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-11
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something>
+ <foo:Something>
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-12 b/result/c14n/exc-without-comments/merlin-c14n-two-12
new file mode 100644
index 0000000..cd53346
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-12
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+
+ <bar:Something>
+
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+
+ </bar:Something>
+
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-13 b/result/c14n/exc-without-comments/merlin-c14n-two-13
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-13
@@ -0,0 +1,9 @@
+<bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-14 b/result/c14n/exc-without-comments/merlin-c14n-two-14
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-14
@@ -0,0 +1,9 @@
+<bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-15 b/result/c14n/exc-without-comments/merlin-c14n-two-15
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-15
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-16 b/result/c14n/exc-without-comments/merlin-c14n-two-16
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-16
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-17 b/result/c14n/exc-without-comments/merlin-c14n-two-17
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-17
@@ -0,0 +1,9 @@
+<bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-18 b/result/c14n/exc-without-comments/merlin-c14n-two-18
new file mode 100644
index 0000000..6675391
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-18
@@ -0,0 +1,9 @@
+<bar:Something xmlns="http://example.org/" xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something>
+ <foo:Something>
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-19 b/result/c14n/exc-without-comments/merlin-c14n-two-19
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-19
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something>
+ <foo:Something>
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-20 b/result/c14n/exc-without-comments/merlin-c14n-two-20
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-20
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something>
+ <foo:Something>
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-21 b/result/c14n/exc-without-comments/merlin-c14n-two-21
new file mode 100644
index 0000000..cd53346
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-21
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+
+ <bar:Something>
+
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+
+ </bar:Something>
+
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-22 b/result/c14n/exc-without-comments/merlin-c14n-two-22
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-22
@@ -0,0 +1,9 @@
+<bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-23 b/result/c14n/exc-without-comments/merlin-c14n-two-23
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-23
@@ -0,0 +1,9 @@
+<bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-24 b/result/c14n/exc-without-comments/merlin-c14n-two-24
new file mode 100644
index 0000000..162c746
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-24
@@ -0,0 +1 @@
+ xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-25 b/result/c14n/exc-without-comments/merlin-c14n-two-25
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-25
diff --git a/result/c14n/exc-without-comments/merlin-c14n-two-26 b/result/c14n/exc-without-comments/merlin-c14n-two-26
new file mode 100644
index 0000000..1f7eb6e
--- /dev/null
+++ b/result/c14n/exc-without-comments/merlin-c14n-two-26
@@ -0,0 +1,9 @@
+<bar:Something>
+ <foo:Something xmlns="http://example.org/">
+ <bar:Something xmlns="">
+ <foo:Something xmlns="http://example.org/">
+ <baz:Something xmlns=""></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/test-0 b/result/c14n/exc-without-comments/test-0
new file mode 100644
index 0000000..3806ea0
--- /dev/null
+++ b/result/c14n/exc-without-comments/test-0
@@ -0,0 +1,7 @@
+<e6 test="../baz">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org" a:foo="bar">
+ <e9 attr="default"></e9>
+ </e8>
+ </e7>
+ </e6> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/test-1 b/result/c14n/exc-without-comments/test-1
new file mode 100644
index 0000000..bd5930f
--- /dev/null
+++ b/result/c14n/exc-without-comments/test-1
@@ -0,0 +1,7 @@
+<e6 xmlns:a="http://www.w3.org" test="../baz">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" a:foo="bar">
+ <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+ </e8>
+ </e7>
+ </e6> \ No newline at end of file
diff --git a/result/c14n/exc-without-comments/test-2 b/result/c14n/exc-without-comments/test-2
new file mode 100644
index 0000000..0b8a0cb
--- /dev/null
+++ b/result/c14n/exc-without-comments/test-2
@@ -0,0 +1,11 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <ds:CanonicalizationMethod xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
+ <Reference URI="#ndid:1234-5678-0987">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+ <DigestValue>sj1VXDB2VMCU5qmva2OtDw3kKOs=</DigestValue>
+ </Reference>
+ </SignedInfo> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-1 b/result/c14n/with-comments/example-1
new file mode 100644
index 0000000..d98d168
--- /dev/null
+++ b/result/c14n/with-comments/example-1
@@ -0,0 +1,6 @@
+<?xml-stylesheet href="doc.xsl"
+ type="text/xsl" ?>
+<doc>Hello, world!<!-- Comment 1 --></doc>
+<?pi-without-data?>
+<!-- Comment 2 -->
+<!-- Comment 3 --> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-2 b/result/c14n/with-comments/example-2
new file mode 100644
index 0000000..2afa15c
--- /dev/null
+++ b/result/c14n/with-comments/example-2
@@ -0,0 +1,11 @@
+<doc>
+ <clean> </clean>
+ <dirty> A B </dirty>
+ <mixed>
+ A
+ <clean> </clean>
+ B
+ <dirty> A B </dirty>
+ C
+ </mixed>
+</doc> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-3 b/result/c14n/with-comments/example-3
new file mode 100644
index 0000000..4c287e6
--- /dev/null
+++ b/result/c14n/with-comments/example-3
@@ -0,0 +1,14 @@
+<doc>
+ <e1></e1>
+ <e2></e2>
+ <e3 id="elem3" name="elem3"></e3>
+ <e4 id="elem4" name="elem4"></e4>
+ <e5 xmlns="http://www.uvic.ca" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="I'm" attr2="all" b:attr="sorted" a:attr="out"></e5>
+ <e6 xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="">
+ <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+ </e8>
+ </e7>
+ </e6>
+</doc> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-4 b/result/c14n/with-comments/example-4
new file mode 100644
index 0000000..19a2559
--- /dev/null
+++ b/result/c14n/with-comments/example-4
@@ -0,0 +1,9 @@
+<doc>
+ <text>First line&#xD;
+Second line</text>
+ <value>2</value>
+ <compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>
+ <compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>
+ <norm attr=" ' &#xD;&#xA;&#x9; ' "></norm>
+ <normId id="' &#xD;&#xA;&#x9; '"></normId>
+</doc> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-5 b/result/c14n/with-comments/example-5
new file mode 100644
index 0000000..457d402
--- /dev/null
+++ b/result/c14n/with-comments/example-5
@@ -0,0 +1,4 @@
+<doc attrExtEnt="entExt">
+ Hello, world!
+</doc>
+<!-- Let world.txt contain "world" (excluding the quotes) --> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-6 b/result/c14n/with-comments/example-6
new file mode 100644
index 0000000..0be38f9
--- /dev/null
+++ b/result/c14n/with-comments/example-6
@@ -0,0 +1 @@
+<doc>©</doc> \ No newline at end of file
diff --git a/result/c14n/with-comments/example-7 b/result/c14n/with-comments/example-7
new file mode 100644
index 0000000..0a96cc4
--- /dev/null
+++ b/result/c14n/with-comments/example-7
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"><e3 xmlns="" id="E3" xml:space="preserve"></e3></e1> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-1 b/result/c14n/without-comments/example-1
new file mode 100644
index 0000000..af9a977
--- /dev/null
+++ b/result/c14n/without-comments/example-1
@@ -0,0 +1,4 @@
+<?xml-stylesheet href="doc.xsl"
+ type="text/xsl" ?>
+<doc>Hello, world!</doc>
+<?pi-without-data?> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-2 b/result/c14n/without-comments/example-2
new file mode 100644
index 0000000..2afa15c
--- /dev/null
+++ b/result/c14n/without-comments/example-2
@@ -0,0 +1,11 @@
+<doc>
+ <clean> </clean>
+ <dirty> A B </dirty>
+ <mixed>
+ A
+ <clean> </clean>
+ B
+ <dirty> A B </dirty>
+ C
+ </mixed>
+</doc> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-3 b/result/c14n/without-comments/example-3
new file mode 100644
index 0000000..4c287e6
--- /dev/null
+++ b/result/c14n/without-comments/example-3
@@ -0,0 +1,14 @@
+<doc>
+ <e1></e1>
+ <e2></e2>
+ <e3 id="elem3" name="elem3"></e3>
+ <e4 id="elem4" name="elem4"></e4>
+ <e5 xmlns="http://www.uvic.ca" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="I'm" attr2="all" b:attr="sorted" a:attr="out"></e5>
+ <e6 xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="">
+ <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+ </e8>
+ </e7>
+ </e6>
+</doc> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-4 b/result/c14n/without-comments/example-4
new file mode 100644
index 0000000..19a2559
--- /dev/null
+++ b/result/c14n/without-comments/example-4
@@ -0,0 +1,9 @@
+<doc>
+ <text>First line&#xD;
+Second line</text>
+ <value>2</value>
+ <compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>
+ <compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>
+ <norm attr=" ' &#xD;&#xA;&#x9; ' "></norm>
+ <normId id="' &#xD;&#xA;&#x9; '"></normId>
+</doc> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-5 b/result/c14n/without-comments/example-5
new file mode 100644
index 0000000..c232e74
--- /dev/null
+++ b/result/c14n/without-comments/example-5
@@ -0,0 +1,3 @@
+<doc attrExtEnt="entExt">
+ Hello, world!
+</doc> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-6 b/result/c14n/without-comments/example-6
new file mode 100644
index 0000000..0be38f9
--- /dev/null
+++ b/result/c14n/without-comments/example-6
@@ -0,0 +1 @@
+<doc>©</doc> \ No newline at end of file
diff --git a/result/c14n/without-comments/example-7 b/result/c14n/without-comments/example-7
new file mode 100644
index 0000000..0a96cc4
--- /dev/null
+++ b/result/c14n/without-comments/example-7
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"><e3 xmlns="" id="E3" xml:space="preserve"></e3></e1> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-00 b/result/c14n/without-comments/merlin-c14n-two-00
new file mode 100644
index 0000000..2ca2b30
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-00
@@ -0,0 +1,9 @@
+<bar:Something xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-01 b/result/c14n/without-comments/merlin-c14n-two-01
new file mode 100644
index 0000000..be42edf
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-01
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-02 b/result/c14n/without-comments/merlin-c14n-two-02
new file mode 100644
index 0000000..be42edf
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-02
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <bar:Something xmlns:bar="http://example.org/bar">
+ <foo:Something xmlns:foo="http://example.org/foo">
+ <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-03 b/result/c14n/without-comments/merlin-c14n-two-03
new file mode 100644
index 0000000..170354a
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-03
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+ xmlns:foo="http://example.org/foo"
+ <bar:Something xml:lang="en-ie">
+ xmlns:foo="http://example.org/foo"
+ <baz:Something xmlns:baz="http://example.org/baz" xml:lang="en-ie"></baz:Something>
+
+ </bar:Something>
+
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-04 b/result/c14n/without-comments/merlin-c14n-two-04
new file mode 100644
index 0000000..185cbf3
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-04
@@ -0,0 +1,9 @@
+<bar:Something xml:lang="en-ie">
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-05 b/result/c14n/without-comments/merlin-c14n-two-05
new file mode 100644
index 0000000..185cbf3
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-05
@@ -0,0 +1,9 @@
+<bar:Something xml:lang="en-ie">
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-06 b/result/c14n/without-comments/merlin-c14n-two-06
new file mode 100644
index 0000000..bb45d0b
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-06
@@ -0,0 +1 @@
+ xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-07 b/result/c14n/without-comments/merlin-c14n-two-07
new file mode 100644
index 0000000..c42ffc1
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-07
@@ -0,0 +1 @@
+ xmlns:bar="http://example.org/bar" xmlns:foo="http://example.org/foo" xmlns:bar="http://example.org/bar" xmlns:foo="http://example.org/foo" xmlns:baz="http://example.org/baz" \ No newline at end of file
diff --git a/result/c14n/without-comments/merlin-c14n-two-08 b/result/c14n/without-comments/merlin-c14n-two-08
new file mode 100644
index 0000000..4f5bbb4
--- /dev/null
+++ b/result/c14n/without-comments/merlin-c14n-two-08
@@ -0,0 +1,9 @@
+<bar:Something xml:lang="en-ie">
+ <foo:Something xmlns="http://example.org/">
+ <bar:Something xmlns="">
+ <foo:Something xmlns="http://example.org/">
+ <baz:Something xmlns=""></baz:Something>
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something> \ No newline at end of file
diff --git a/result/c14n/without-comments/test-0 b/result/c14n/without-comments/test-0
new file mode 100644
index 0000000..013de33
--- /dev/null
+++ b/result/c14n/without-comments/test-0
@@ -0,0 +1 @@
+I am the text. \ No newline at end of file
diff --git a/result/c14n/without-comments/test-1 b/result/c14n/without-comments/test-1
new file mode 100644
index 0000000..0150f4a
--- /dev/null
+++ b/result/c14n/without-comments/test-1
@@ -0,0 +1,31 @@
+<X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509SubjectName>
+ CN=Merlin Hughes,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+ </X509SubjectName>
+ <X509IssuerSerial>
+ <X509IssuerName>
+ CN=Test DSA CA,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+ </X509IssuerName>
+ <X509SerialNumber>970849936</X509SerialNumber>
+ </X509IssuerSerial>
+ <X509Certificate>
+ MIIDNzCCAvWgAwIBAgIEOd3+kDAJBgcqhkjOOAQDMFsxCzAJBgNVBAYTAklFMQ8w
+ DQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMs
+ IEx0ZC4xFDASBgNVBAMTC1Rlc3QgRFNBIENBMB4XDTAwMTAwNjE2MzIxNVoXDTAx
+ MTAwNjE2MzIxNFowXTELMAkGA1UEBhMCSUUxDzANBgNVBAgTBkR1YmxpbjElMCMG
+ A1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLjEWMBQGA1UEAxMNTWVy
+ bGluIEh1Z2hlczCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQDaJjfDTrawMHf8MiUt
+ Y54b37hSmYNnR3KpGT10uU1Dqppcju06uN0iGbqf947DjkBC25hKnqykK31xBw0E
+ CPbYq/KC98kghdf2xJCu6B8aqJ95K9jdVflJ3WP7PQxJn+fmM23zy6HYLXVICpfq
+ etdNj/VHCShZE3bdJiE6VobSFQIVAPQecqS2PaTDprcQnkwx4MHTRXhrAoGAMuGA
+ lqeB1ax+vyO2+Osubjhl7pHxLu47RIH+/M52DjESA9KMSrwzsYx8yNR2WooByrE0
+ t6fu0VncK7UK8olO4t7wpv2z4AFQPRVCKFwo0qgn5aKIkICGMlrRy81avb27wGcW
+ othx3iPPMtFXtoDqK0JItaI9R8zc1msFhM1GKMYDgYQAAoGActA8YGxrtngg/zKV
+ vqEOefnwmViFztcnPBYPlJsvh6yKI4iDm68fnp4Mi3RrJ6bZAygFrUIQLxLjV+OJ
+ tgJAEto0xAs+Mehuq1DkSFEpP3oDzCTOsrOiS1DwQe4oIb7zVk/9l7aPtJMHW0LV
+ lMdwZNFNNJoqMcT2ZfCPrfvYvQ2jRzBFMB4GA1UdEQQXMBWBE21lcmxpbkBiYWx0
+ aW1vcmUuaWUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdIwQMMAqACEJZQG0KwRbPMAkG
+ ByqGSM44BAMDMQAwLgIVAK4skWEFYgrggaJA8vYAwSjg12+KAhUAwHTo7wd4tENw
+ 9LAKPklQ/74fH18=
+ </X509Certificate>
+ </X509Data> \ No newline at end of file
diff --git a/result/c14n/without-comments/test-2 b/result/c14n/without-comments/test-2
new file mode 100644
index 0000000..c829481
--- /dev/null
+++ b/result/c14n/without-comments/test-2
@@ -0,0 +1,3 @@
+<n1:elem2 xmlns:n0="foo://bar" xmlns:n1="http://example.net" xmlns:n3="ftp://example.org" xml:lang="en">
+ <n3:stuff></n3:stuff>
+ </n1:elem2> \ No newline at end of file
diff --git a/result/c14n/without-comments/test-3 b/result/c14n/without-comments/test-3
new file mode 100644
index 0000000..318cb19
--- /dev/null
+++ b/result/c14n/without-comments/test-3
@@ -0,0 +1,7 @@
+<e6 xmlns:a="http://www.w3.org" xmlns:foo="http://www.bar.org" test="../baz" xml:base="http://www.example.org/2002/">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" a:foo="bar">
+ <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+ </e8>
+ </e7>
+ </e6> \ No newline at end of file
diff --git a/result/catalogs/catal b/result/catalogs/catal
new file mode 100644
index 0000000..52b2afe
--- /dev/null
+++ b/result/catalogs/catal
@@ -0,0 +1,5 @@
+> test/catalogs/calstblx.dtd
+> test/catalogs/docbook.dtd
+> test/catalogs/soextblx.dtd
+> test/catalogs/dbgenent.mod
+> \ No newline at end of file
diff --git a/result/catalogs/docbook b/result/catalogs/docbook
new file mode 100644
index 0000000..804005d
--- /dev/null
+++ b/result/catalogs/docbook
@@ -0,0 +1,6 @@
+> /usr/share/xml/docbook/xml/4.1.2/dbpoolx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+> http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+> file:///usr/share/xml/toto/toto.dtd
+> \ No newline at end of file
diff --git a/result/catalogs/mycatalog.empty b/result/catalogs/mycatalog.empty
new file mode 100644
index 0000000..84f482e
--- /dev/null
+++ b/result/catalogs/mycatalog.empty
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"/>
diff --git a/result/catalogs/mycatalog.full b/result/catalogs/mycatalog.full
new file mode 100644
index 0000000..5ee1ccf
--- /dev/null
+++ b/result/catalogs/mycatalog.full
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <public publicId="Pubid" uri="sysid"/>
+ <public publicId="Pubid2" uri="sysid2"/>
+ <public publicId="Pubid3" uri="sysid3"/>
+</catalog>
diff --git a/result/catalogs/registry b/result/catalogs/registry
new file mode 100644
index 0000000..e035c55
--- /dev/null
+++ b/result/catalogs/registry
@@ -0,0 +1,5 @@
+> /usr/share/xml/docbook/xml/4.1.2/dbpoolx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod
+> /usr/share/xml/docbook/xml/4.1.2/dbpoolx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+> \ No newline at end of file
diff --git a/result/catalogs/whites b/result/catalogs/whites
new file mode 100644
index 0000000..52b2afe
--- /dev/null
+++ b/result/catalogs/whites
@@ -0,0 +1,5 @@
+> test/catalogs/calstblx.dtd
+> test/catalogs/docbook.dtd
+> test/catalogs/soextblx.dtd
+> test/catalogs/dbgenent.mod
+> \ No newline at end of file
diff --git a/result/catalogs/whitex b/result/catalogs/whitex
new file mode 100644
index 0000000..b02bcc6
--- /dev/null
+++ b/result/catalogs/whitex
@@ -0,0 +1,8 @@
+> /usr/share/xml/docbook/xml/4.1.2/dbpoolx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod
+> http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+> http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+> file:///usr/share/xml/toto/toto.dtd
+> \ No newline at end of file
diff --git a/result/cdata b/result/cdata
new file mode 100644
index 0000000..180ea46
--- /dev/null
+++ b/result/cdata
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<doc>
+<![CDATA[<greeting>Hello, world!</greeting>]]>
+</doc>
diff --git a/result/cdata.rde b/result/cdata.rde
new file mode 100644
index 0000000..316b8bf
--- /dev/null
+++ b/result/cdata.rde
@@ -0,0 +1,7 @@
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 4 #cdata-section 0 1 <greeting>Hello, world!</greeting>
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/cdata.rdr b/result/cdata.rdr
new file mode 100644
index 0000000..316b8bf
--- /dev/null
+++ b/result/cdata.rdr
@@ -0,0 +1,7 @@
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 4 #cdata-section 0 1 <greeting>Hello, world!</greeting>
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/cdata.sax b/result/cdata.sax
new file mode 100644
index 0000000..f917f99
--- /dev/null
+++ b/result/cdata.sax
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.pcdata(<greeting>Hello, wor, 34)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/cdata.sax2 b/result/cdata.sax2
new file mode 100644
index 0000000..117b2b0
--- /dev/null
+++ b/result/cdata.sax2
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.pcdata(<greeting>Hello, wor, 34)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/cdata2 b/result/cdata2
new file mode 100644
index 0000000..b4db791
--- /dev/null
+++ b/result/cdata2
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection>
+ <test><![CDATA[
+ <![CDATA[abc]]]>]&gt;<![CDATA[
+ ]]></test>
+</collection>
diff --git a/result/cdata2.rde b/result/cdata2.rde
new file mode 100644
index 0000000..e69a672
--- /dev/null
+++ b/result/cdata2.rde
@@ -0,0 +1,13 @@
+0 1 collection 0 0
+1 14 #text 0 1
+
+1 1 test 0 0
+2 4 #cdata-section 0 1
+ <![CDATA[abc]
+2 3 #text 0 1 ]>
+2 4 #cdata-section 0 1
+
+1 15 test 0 0
+1 14 #text 0 1
+
+0 15 collection 0 0
diff --git a/result/cdata2.rdr b/result/cdata2.rdr
new file mode 100644
index 0000000..e69a672
--- /dev/null
+++ b/result/cdata2.rdr
@@ -0,0 +1,13 @@
+0 1 collection 0 0
+1 14 #text 0 1
+
+1 1 test 0 0
+2 4 #cdata-section 0 1
+ <![CDATA[abc]
+2 3 #text 0 1 ]>
+2 4 #cdata-section 0 1
+
+1 15 test 0 0
+1 14 #text 0 1
+
+0 15 collection 0 0
diff --git a/result/cdata2.sax b/result/cdata2.sax
new file mode 100644
index 0000000..7fcc863
--- /dev/null
+++ b/result/cdata2.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(collection)
+SAX.characters(
+ , 3)
+SAX.startElement(test)
+SAX.pcdata(
+ <![CDATA[abc], 18)
+SAX.characters(], 1)
+SAX.characters(>, 1)
+SAX.pcdata(
+ , 3)
+SAX.endElement(test)
+SAX.characters(
+, 1)
+SAX.endElement(collection)
+SAX.endDocument()
diff --git a/result/cdata2.sax2 b/result/cdata2.sax2
new file mode 100644
index 0000000..d1420e9
--- /dev/null
+++ b/result/cdata2.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(collection, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(test, NULL, NULL, 0, 0, 0)
+SAX.pcdata(
+ <![CDATA[abc], 18)
+SAX.characters(], 1)
+SAX.characters(>, 1)
+SAX.pcdata(
+ , 3)
+SAX.endElementNs(test, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(collection, NULL, NULL)
+SAX.endDocument()
diff --git a/result/comment.xml b/result/comment.xml
new file mode 100644
index 0000000..98c5eff
--- /dev/null
+++ b/result/comment.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+<!-- document start -->
+<empty/>
+<!-- document end -->
+</doc>
diff --git a/result/comment.xml.rde b/result/comment.xml.rde
new file mode 100644
index 0000000..9551ced
--- /dev/null
+++ b/result/comment.xml.rde
@@ -0,0 +1,13 @@
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 document start
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 document end
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/comment.xml.rdr b/result/comment.xml.rdr
new file mode 100644
index 0000000..9551ced
--- /dev/null
+++ b/result/comment.xml.rdr
@@ -0,0 +1,13 @@
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 document start
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 document end
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/comment.xml.sax b/result/comment.xml.sax
new file mode 100644
index 0000000..d969036
--- /dev/null
+++ b/result/comment.xml.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.comment( document start )
+SAX.characters(
+, 1)
+SAX.startElement(empty)
+SAX.endElement(empty)
+SAX.characters(
+, 1)
+SAX.comment( document end )
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/comment.xml.sax2 b/result/comment.xml.sax2
new file mode 100644
index 0000000..da57f50
--- /dev/null
+++ b/result/comment.xml.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.comment( document start )
+SAX.characters(
+, 1)
+SAX.startElementNs(empty, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(empty, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.comment( document end )
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/comment2.xml b/result/comment2.xml
new file mode 100644
index 0000000..9e122ec
--- /dev/null
+++ b/result/comment2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- document start -->
+<doc>
+<empty/>
+</doc>
+<!-- document end -->
diff --git a/result/comment2.xml.rde b/result/comment2.xml.rde
new file mode 100644
index 0000000..4a3279d
--- /dev/null
+++ b/result/comment2.xml.rde
@@ -0,0 +1,9 @@
+0 8 #comment 0 1 document start
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+0 15 doc 0 0
+0 8 #comment 0 1 document end
diff --git a/result/comment2.xml.rdr b/result/comment2.xml.rdr
new file mode 100644
index 0000000..4a3279d
--- /dev/null
+++ b/result/comment2.xml.rdr
@@ -0,0 +1,9 @@
+0 8 #comment 0 1 document start
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+0 15 doc 0 0
+0 8 #comment 0 1 document end
diff --git a/result/comment2.xml.sax b/result/comment2.xml.sax
new file mode 100644
index 0000000..bffd7e1
--- /dev/null
+++ b/result/comment2.xml.sax
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( document start )
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.startElement(empty)
+SAX.endElement(empty)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.comment( document end )
+SAX.endDocument()
diff --git a/result/comment2.xml.sax2 b/result/comment2.xml.sax2
new file mode 100644
index 0000000..a286744
--- /dev/null
+++ b/result/comment2.xml.sax2
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( document start )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(empty, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(empty, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.comment( document end )
+SAX.endDocument()
diff --git a/result/comment3.xml b/result/comment3.xml
new file mode 100644
index 0000000..395f67c
--- /dev/null
+++ b/result/comment3.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+-->
+<doc/>
diff --git a/result/comment3.xml.rde b/result/comment3.xml.rde
new file mode 100644
index 0000000..519b8d0
--- /dev/null
+++ b/result/comment3.xml.rde
@@ -0,0 +1,163 @@
+0 8 #comment 0 1 test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+
+0 1 doc 1 0
diff --git a/result/comment3.xml.rdr b/result/comment3.xml.rdr
new file mode 100644
index 0000000..519b8d0
--- /dev/null
+++ b/result/comment3.xml.rdr
@@ -0,0 +1,163 @@
+0 8 #comment 0 1 test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+
+0 1 doc 1 0
diff --git a/result/comment3.xml.sax b/result/comment3.xml.sax
new file mode 100644
index 0000000..82b8b36
--- /dev/null
+++ b/result/comment3.xml.sax
@@ -0,0 +1,167 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+)
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/comment3.xml.sax2 b/result/comment3.xml.sax2
new file mode 100644
index 0000000..a5f1fd6
--- /dev/null
+++ b/result/comment3.xml.sax2
@@ -0,0 +1,167 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+)
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/comment4.xml b/result/comment4.xml
new file mode 100644
index 0000000..93282d8
--- /dev/null
+++ b/result/comment4.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of non ascii comments like là et très -->
+<!--à another one -->
+<!-- another one à-->
+<doc/>
diff --git a/result/comment4.xml.rde b/result/comment4.xml.rde
new file mode 100644
index 0000000..09e181b
--- /dev/null
+++ b/result/comment4.xml.rde
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 test of non ascii comments like là et très
+0 8 #comment 0 1 à another one
+0 8 #comment 0 1 another one à
+0 1 doc 1 0
diff --git a/result/comment4.xml.rdr b/result/comment4.xml.rdr
new file mode 100644
index 0000000..09e181b
--- /dev/null
+++ b/result/comment4.xml.rdr
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 test of non ascii comments like là et très
+0 8 #comment 0 1 à another one
+0 8 #comment 0 1 another one à
+0 1 doc 1 0
diff --git a/result/comment4.xml.sax b/result/comment4.xml.sax
new file mode 100644
index 0000000..26011d9
--- /dev/null
+++ b/result/comment4.xml.sax
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( test of non ascii comments like là et très )
+SAX.comment(à another one )
+SAX.comment( another one à)
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/comment4.xml.sax2 b/result/comment4.xml.sax2
new file mode 100644
index 0000000..0e2611f
--- /dev/null
+++ b/result/comment4.xml.sax2
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( test of non ascii comments like là et très )
+SAX.comment(à another one )
+SAX.comment( another one à)
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/comment5.xml b/result/comment5.xml
new file mode 100644
index 0000000..398f974
--- /dev/null
+++ b/result/comment5.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+-->
+<doc/>
diff --git a/result/comment5.xml.rde b/result/comment5.xml.rde
new file mode 100644
index 0000000..fe7a88f
--- /dev/null
+++ b/result/comment5.xml.rde
@@ -0,0 +1,8 @@
+0 8 #comment 0 1 test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+
+0 1 doc 1 0
diff --git a/result/comment5.xml.rdr b/result/comment5.xml.rdr
new file mode 100644
index 0000000..fe7a88f
--- /dev/null
+++ b/result/comment5.xml.rdr
@@ -0,0 +1,8 @@
+0 8 #comment 0 1 test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+
+0 1 doc 1 0
diff --git a/result/comment5.xml.sax b/result/comment5.xml.sax
new file mode 100644
index 0000000..dd58e7a
--- /dev/null
+++ b/result/comment5.xml.sax
@@ -0,0 +1,12 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+)
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/comment5.xml.sax2 b/result/comment5.xml.sax2
new file mode 100644
index 0000000..f0940b2
--- /dev/null
+++ b/result/comment5.xml.sax2
@@ -0,0 +1,12 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+)
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/comment6.xml b/result/comment6.xml
new file mode 100644
index 0000000..3e6074e
--- /dev/null
+++ b/result/comment6.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!--
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+-->
+<!DOCTYPE a [
+<!ELEMENT a EMPTY>
+]>
+<a/>
diff --git a/result/comment6.xml.rde b/result/comment6.xml.rde
new file mode 100644
index 0000000..e877c3e
--- /dev/null
+++ b/result/comment6.xml.rde
@@ -0,0 +1,11 @@
+0 8 #comment 0 1
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+
+0 10 a 0 0
+0 1 a 1 0
diff --git a/result/comment6.xml.rdr b/result/comment6.xml.rdr
new file mode 100644
index 0000000..e877c3e
--- /dev/null
+++ b/result/comment6.xml.rdr
@@ -0,0 +1,11 @@
+0 8 #comment 0 1
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+
+0 10 a 0 0
+0 1 a 1 0
diff --git a/result/comment6.xml.sax b/result/comment6.xml.sax
new file mode 100644
index 0000000..53fea21
--- /dev/null
+++ b/result/comment6.xml.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment(
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+)
+SAX.internalSubset(a, , )
+SAX.elementDecl(a, 1, ...)
+SAX.externalSubset(a, , )
+SAX.startElement(a)
+SAX.endElement(a)
+SAX.endDocument()
diff --git a/result/comment6.xml.sax2 b/result/comment6.xml.sax2
new file mode 100644
index 0000000..7dd7dc0
--- /dev/null
+++ b/result/comment6.xml.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment(
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+)
+SAX.internalSubset(a, , )
+SAX.elementDecl(a, 1, ...)
+SAX.externalSubset(a, , )
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(a, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dav1 b/result/dav1
new file mode 100644
index 0000000..cbfd4c4
--- /dev/null
+++ b/result/dav1
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema">
+ <D:response>
+ <D:prop>
+ <R:bigbox>
+ <R:BoxType>Box type A</R:BoxType>
+ </R:bigbox>
+ <R:author>
+ <R:Name>J.J. Dingleheimerschmidt</R:Name>
+ </R:author>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:prop>
+ <R:DingALing/>
+ <R:Random/>
+ </D:prop>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ <D:responsedescription> The user does not have access to the DingALing property.
+ </D:responsedescription>
+ </D:response>
+ <D:responsedescription> There has been an access violation error.
+ </D:responsedescription>
+</D:multistatus>
diff --git a/result/dav1.rde b/result/dav1.rde
new file mode 100644
index 0000000..d8d44e6
--- /dev/null
+++ b/result/dav1.rde
@@ -0,0 +1,78 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 0 0
+4 14 #text 0 1
+
+4 1 R:BoxType 0 0
+5 3 #text 0 1 Box type A
+4 15 R:BoxType 0 0
+4 14 #text 0 1
+
+3 15 R:bigbox 0 0
+3 14 #text 0 1
+
+3 1 R:author 0 0
+4 14 #text 0 1
+
+4 1 R:Name 0 0
+5 3 #text 0 1 J.J. Dingleheimerschmidt
+4 15 R:Name 0 0
+4 14 #text 0 1
+
+3 15 R:author 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:DingALing 1 0
+3 14 #text 0 1
+
+3 1 R:Random 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 403 Forbidden
+2 15 D:status 0 0
+2 14 #text 0 1
+
+2 1 D:responsedescription 0 0
+3 3 #text 0 1 The user does not have access to the DingALing property.
+
+2 15 D:responsedescription 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:responsedescription 0 0
+2 3 #text 0 1 There has been an access violation error.
+
+1 15 D:responsedescription 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav1.rdr b/result/dav1.rdr
new file mode 100644
index 0000000..d8d44e6
--- /dev/null
+++ b/result/dav1.rdr
@@ -0,0 +1,78 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 0 0
+4 14 #text 0 1
+
+4 1 R:BoxType 0 0
+5 3 #text 0 1 Box type A
+4 15 R:BoxType 0 0
+4 14 #text 0 1
+
+3 15 R:bigbox 0 0
+3 14 #text 0 1
+
+3 1 R:author 0 0
+4 14 #text 0 1
+
+4 1 R:Name 0 0
+5 3 #text 0 1 J.J. Dingleheimerschmidt
+4 15 R:Name 0 0
+4 14 #text 0 1
+
+3 15 R:author 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:DingALing 1 0
+3 14 #text 0 1
+
+3 1 R:Random 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 403 Forbidden
+2 15 D:status 0 0
+2 14 #text 0 1
+
+2 1 D:responsedescription 0 0
+3 3 #text 0 1 The user does not have access to the DingALing property.
+
+2 15 D:responsedescription 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:responsedescription 0 0
+2 3 #text 0 1 There has been an access violation error.
+
+1 15 D:responsedescription 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav1.sax b/result/dav1.sax
new file mode 100644
index 0000000..9c1988f
--- /dev/null
+++ b/result/dav1.sax
@@ -0,0 +1,81 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:R='http://www.foo.bar/boxschema')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(R:bigbox)
+SAX.characters(
+ , 9)
+SAX.startElement(R:BoxType)
+SAX.characters(Box type A, 10)
+SAX.endElement(R:BoxType)
+SAX.characters(
+ , 7)
+SAX.endElement(R:bigbox)
+SAX.characters(
+ , 7)
+SAX.startElement(R:author)
+SAX.characters(
+ , 9)
+SAX.startElement(R:Name)
+SAX.characters(J.J. Dingleheimerschmidt, 24)
+SAX.endElement(R:Name)
+SAX.characters(
+ , 7)
+SAX.endElement(R:author)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(R:DingALing)
+SAX.endElement(R:DingALing)
+SAX.characters(
+ , 7)
+SAX.startElement(R:Random)
+SAX.endElement(R:Random)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 403 Forbidden, 22)
+SAX.endElement(D:status)
+SAX.characters(
+ , 5)
+SAX.startElement(D:responsedescription)
+SAX.characters( The user does not have access, 64)
+SAX.endElement(D:responsedescription)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:responsedescription)
+SAX.characters( There has been an access viol, 44)
+SAX.endElement(D:responsedescription)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav1.sax2 b/result/dav1.sax2
new file mode 100644
index 0000000..44ad11c
--- /dev/null
+++ b/result/dav1.sax2
@@ -0,0 +1,81 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 2, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:R='http://www.foo.bar/boxschema', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(bigbox, R, 'http://www.foo.bar/boxschema', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(BoxType, R, 'http://www.foo.bar/boxschema', 0, 0, 0)
+SAX.characters(Box type A, 10)
+SAX.endElementNs(BoxType, R, 'http://www.foo.bar/boxschema')
+SAX.characters(
+ , 7)
+SAX.endElementNs(bigbox, R, 'http://www.foo.bar/boxschema')
+SAX.characters(
+ , 7)
+SAX.startElementNs(author, R, 'http://www.foo.bar/boxschema', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(Name, R, 'http://www.foo.bar/boxschema', 0, 0, 0)
+SAX.characters(J.J. Dingleheimerschmidt, 24)
+SAX.endElementNs(Name, R, 'http://www.foo.bar/boxschema')
+SAX.characters(
+ , 7)
+SAX.endElementNs(author, R, 'http://www.foo.bar/boxschema')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(DingALing, R, 'http://www.foo.bar/boxschema', 0, 0, 0)
+SAX.endElementNs(DingALing, R, 'http://www.foo.bar/boxschema')
+SAX.characters(
+ , 7)
+SAX.startElementNs(Random, R, 'http://www.foo.bar/boxschema', 0, 0, 0)
+SAX.endElementNs(Random, R, 'http://www.foo.bar/boxschema')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 403 Forbidden, 22)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(responsedescription, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters( The user does not have access, 64)
+SAX.endElementNs(responsedescription, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(responsedescription, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters( There has been an access viol, 44)
+SAX.endElementNs(responsedescription, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav10 b/result/dav10
new file mode 100644
index 0000000..4b00da4
--- /dev/null
+++ b/result/dav10
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<D:owner xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
+</D:owner>
diff --git a/result/dav10.rde b/result/dav10.rde
new file mode 100644
index 0000000..bfb552d
--- /dev/null
+++ b/result/dav10.rde
@@ -0,0 +1,9 @@
+0 1 D:owner 0 0
+1 14 #text 0 1
+
+1 1 D:href 0 0
+2 3 #text 0 1 http://www.ics.uci.edu/~ejw/contact.html
+1 15 D:href 0 0
+1 14 #text 0 1
+
+0 15 D:owner 0 0
diff --git a/result/dav10.rdr b/result/dav10.rdr
new file mode 100644
index 0000000..bfb552d
--- /dev/null
+++ b/result/dav10.rdr
@@ -0,0 +1,9 @@
+0 1 D:owner 0 0
+1 14 #text 0 1
+
+1 1 D:href 0 0
+2 3 #text 0 1 http://www.ics.uci.edu/~ejw/contact.html
+1 15 D:href 0 0
+1 14 #text 0 1
+
+0 15 D:owner 0 0
diff --git a/result/dav10.sax b/result/dav10.sax
new file mode 100644
index 0000000..aa98251
--- /dev/null
+++ b/result/dav10.sax
@@ -0,0 +1,12 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:owner, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:href)
+SAX.characters(http://www.ics.uci.edu/~ejw/co, 40)
+SAX.endElement(D:href)
+SAX.characters(
+, 1)
+SAX.endElement(D:owner)
+SAX.endDocument()
diff --git a/result/dav10.sax2 b/result/dav10.sax2
new file mode 100644
index 0000000..e93e22c
--- /dev/null
+++ b/result/dav10.sax2
@@ -0,0 +1,12 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(owner, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.ics.uci.edu/~ejw/co, 40)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(owner, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav11 b/result/dav11
new file mode 100644
index 0000000..8ac23d6
--- /dev/null
+++ b/result/dav11
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<D:prop xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:lockdiscovery>
+ <D:activelock>
+ <D:locktype>write</D:locktype>
+ <D:lockscope>exclusive</D:lockscope>
+ <D:addlocks/>
+ <D:owner>
+ <D:href>
+ http://www.ics.uci.edu/~ejw/contact.html
+ </D:href>
+ </D:owner>
+ <D:timeout>Second-604800</D:timeout>
+ <D:locktoken>
+ <D:href>
+ opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
+ </D:href>
+ </D:locktoken>
+ </D:activelock>
+ </D:lockdiscovery>
+</D:prop>
diff --git a/result/dav11.rde b/result/dav11.rde
new file mode 100644
index 0000000..088afeb
--- /dev/null
+++ b/result/dav11.rde
@@ -0,0 +1,60 @@
+0 1 D:prop 0 0
+1 14 #text 0 1
+
+1 1 D:lockdiscovery 0 0
+2 14 #text 0 1
+
+2 1 D:activelock 0 0
+3 14 #text 0 1
+
+3 1 D:locktype 0 0
+4 3 #text 0 1 write
+3 15 D:locktype 0 0
+3 14 #text 0 1
+
+3 1 D:lockscope 0 0
+4 3 #text 0 1 exclusive
+3 15 D:lockscope 0 0
+3 14 #text 0 1
+
+3 1 D:addlocks 1 0
+3 14 #text 0 1
+
+3 1 D:owner 0 0
+4 14 #text 0 1
+
+4 1 D:href 0 0
+5 3 #text 0 1
+ http://www.ics.uci.edu/~ejw/contact.html
+
+4 15 D:href 0 0
+4 14 #text 0 1
+
+3 15 D:owner 0 0
+3 14 #text 0 1
+
+3 1 D:timeout 0 0
+4 3 #text 0 1 Second-604800
+3 15 D:timeout 0 0
+3 14 #text 0 1
+
+3 1 D:locktoken 0 0
+4 14 #text 0 1
+
+4 1 D:href 0 0
+5 3 #text 0 1
+ opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
+
+4 15 D:href 0 0
+4 14 #text 0 1
+
+3 15 D:locktoken 0 0
+3 14 #text 0 1
+
+2 15 D:activelock 0 0
+2 14 #text 0 1
+
+1 15 D:lockdiscovery 0 0
+1 14 #text 0 1
+
+0 15 D:prop 0 0
diff --git a/result/dav11.rdr b/result/dav11.rdr
new file mode 100644
index 0000000..088afeb
--- /dev/null
+++ b/result/dav11.rdr
@@ -0,0 +1,60 @@
+0 1 D:prop 0 0
+1 14 #text 0 1
+
+1 1 D:lockdiscovery 0 0
+2 14 #text 0 1
+
+2 1 D:activelock 0 0
+3 14 #text 0 1
+
+3 1 D:locktype 0 0
+4 3 #text 0 1 write
+3 15 D:locktype 0 0
+3 14 #text 0 1
+
+3 1 D:lockscope 0 0
+4 3 #text 0 1 exclusive
+3 15 D:lockscope 0 0
+3 14 #text 0 1
+
+3 1 D:addlocks 1 0
+3 14 #text 0 1
+
+3 1 D:owner 0 0
+4 14 #text 0 1
+
+4 1 D:href 0 0
+5 3 #text 0 1
+ http://www.ics.uci.edu/~ejw/contact.html
+
+4 15 D:href 0 0
+4 14 #text 0 1
+
+3 15 D:owner 0 0
+3 14 #text 0 1
+
+3 1 D:timeout 0 0
+4 3 #text 0 1 Second-604800
+3 15 D:timeout 0 0
+3 14 #text 0 1
+
+3 1 D:locktoken 0 0
+4 14 #text 0 1
+
+4 1 D:href 0 0
+5 3 #text 0 1
+ opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
+
+4 15 D:href 0 0
+4 14 #text 0 1
+
+3 15 D:locktoken 0 0
+3 14 #text 0 1
+
+2 15 D:activelock 0 0
+2 14 #text 0 1
+
+1 15 D:lockdiscovery 0 0
+1 14 #text 0 1
+
+0 15 D:prop 0 0
diff --git a/result/dav11.sax b/result/dav11.sax
new file mode 100644
index 0000000..43815e5
--- /dev/null
+++ b/result/dav11.sax
@@ -0,0 +1,62 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:prop, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:lockdiscovery)
+SAX.characters(
+ , 5)
+SAX.startElement(D:activelock)
+SAX.characters(
+ , 7)
+SAX.startElement(D:locktype)
+SAX.characters(write, 5)
+SAX.endElement(D:locktype)
+SAX.characters(
+ , 7)
+SAX.startElement(D:lockscope)
+SAX.characters(exclusive, 9)
+SAX.endElement(D:lockscope)
+SAX.characters(
+ , 7)
+SAX.startElement(D:addlocks)
+SAX.endElement(D:addlocks)
+SAX.characters(
+ , 7)
+SAX.startElement(D:owner)
+SAX.characters(
+ , 9)
+SAX.startElement(D:href)
+SAX.characters(
+ http://www.ics.uci.edu/~ejw, 46)
+SAX.endElement(D:href)
+SAX.characters(
+ , 7)
+SAX.endElement(D:owner)
+SAX.characters(
+ , 7)
+SAX.startElement(D:timeout)
+SAX.characters(Second-604800, 13)
+SAX.endElement(D:timeout)
+SAX.characters(
+ , 7)
+SAX.startElement(D:locktoken)
+SAX.characters(
+ , 9)
+SAX.startElement(D:href)
+SAX.characters(
+ opaquelocktoken:xyz122393, 59)
+SAX.endElement(D:href)
+SAX.characters(
+ , 7)
+SAX.endElement(D:locktoken)
+SAX.characters(
+ , 5)
+SAX.endElement(D:activelock)
+SAX.characters(
+ , 3)
+SAX.endElement(D:lockdiscovery)
+SAX.characters(
+, 1)
+SAX.endElement(D:prop)
+SAX.endDocument()
diff --git a/result/dav11.sax2 b/result/dav11.sax2
new file mode 100644
index 0000000..d0f2329
--- /dev/null
+++ b/result/dav11.sax2
@@ -0,0 +1,62 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(lockdiscovery, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(activelock, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(locktype, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(write, 5)
+SAX.endElementNs(locktype, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(exclusive, 9)
+SAX.endElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(addlocks, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.endElementNs(addlocks, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(owner, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ http://www.ics.uci.edu/~ejw, 46)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(owner, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(timeout, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Second-604800, 13)
+SAX.endElementNs(timeout, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(locktoken, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ opaquelocktoken:xyz122393, 59)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(locktoken, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(activelock, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(lockdiscovery, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav12 b/result/dav12
new file mode 100644
index 0000000..d8d03fe
--- /dev/null
+++ b/result/dav12
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<D:href xmlns:D="http://www.ietf.org/standards/dav/">http://www.ics.uci.edu/~ejw/contact.html</D:href>
diff --git a/result/dav12.rde b/result/dav12.rde
new file mode 100644
index 0000000..0df7943
--- /dev/null
+++ b/result/dav12.rde
@@ -0,0 +1,3 @@
+0 1 D:href 0 0
+1 3 #text 0 1 http://www.ics.uci.edu/~ejw/contact.html
+0 15 D:href 0 0
diff --git a/result/dav12.rdr b/result/dav12.rdr
new file mode 100644
index 0000000..0df7943
--- /dev/null
+++ b/result/dav12.rdr
@@ -0,0 +1,3 @@
+0 1 D:href 0 0
+1 3 #text 0 1 http://www.ics.uci.edu/~ejw/contact.html
+0 15 D:href 0 0
diff --git a/result/dav12.sax b/result/dav12.sax
new file mode 100644
index 0000000..67b9f64
--- /dev/null
+++ b/result/dav12.sax
@@ -0,0 +1,6 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:href, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(http://www.ics.uci.edu/~ejw/co, 40)
+SAX.endElement(D:href)
+SAX.endDocument()
diff --git a/result/dav12.sax2 b/result/dav12.sax2
new file mode 100644
index 0000000..61715b6
--- /dev/null
+++ b/result/dav12.sax2
@@ -0,0 +1,6 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(http://www.ics.uci.edu/~ejw/co, 40)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav13 b/result/dav13
new file mode 100644
index 0000000..f44ae38
--- /dev/null
+++ b/result/dav13
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:href>
+ http://webdav.sb.aol.com/workspace/webdav/proposal.doc
+ </D:href>
+ <D:href>
+ http://webdav.sb.aol.com/workspace/webdav/
+ </D:href>
+ <D:status>HTTP/1.1 202 Accepted</D:status>
+ </D:response>
+ <D:response>
+ <D:href>http://foo.bar/blah</D:href>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/dav13.rde b/result/dav13.rde
new file mode 100644
index 0000000..ffe978d
--- /dev/null
+++ b/result/dav13.rde
@@ -0,0 +1,45 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1
+ http://webdav.sb.aol.com/workspace/webdav/proposal.doc
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1
+ http://webdav.sb.aol.com/workspace/webdav/
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 202 Accepted
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://foo.bar/blah
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 403 Forbidden
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav13.rdr b/result/dav13.rdr
new file mode 100644
index 0000000..ffe978d
--- /dev/null
+++ b/result/dav13.rdr
@@ -0,0 +1,45 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1
+ http://webdav.sb.aol.com/workspace/webdav/proposal.doc
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1
+ http://webdav.sb.aol.com/workspace/webdav/
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 202 Accepted
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://foo.bar/blah
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 403 Forbidden
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav13.sax b/result/dav13.sax
new file mode 100644
index 0000000..16edfd1
--- /dev/null
+++ b/result/dav13.sax
@@ -0,0 +1,46 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(
+ http://webdav.sb.aol.com/, 66)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(
+ http://webdav.sb.aol.com/, 54)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 202 Accepted, 21)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(http://foo.bar/blah, 19)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 403 Forbidden, 22)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav13.sax2 b/result/dav13.sax2
new file mode 100644
index 0000000..f6c5381
--- /dev/null
+++ b/result/dav13.sax2
@@ -0,0 +1,46 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ http://webdav.sb.aol.com/, 66)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ http://webdav.sb.aol.com/, 54)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 202 Accepted, 21)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/blah, 19)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 403 Forbidden, 22)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav15 b/result/dav15
new file mode 100644
index 0000000..b80802e
--- /dev/null
+++ b/result/dav15
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<D:prop xmlns:D="http://www.ietf.org/standards/dav/" xmlns:F="http://www.foocorp.com/Project/">
+ <D:Source>
+ <D:link>
+ <F:projfiles>Source</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/main.c</D:dst>
+ </D:link>
+ <D:link>
+ <F:projfiles>Library</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/main.lib</D:dst>
+ </D:link>
+ <D:link>
+ <F:projfiles>Makefile</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/makefile</D:dst>
+ </D:link>
+ </D:Source>
+</D:prop>
diff --git a/result/dav15.rde b/result/dav15.rde
new file mode 100644
index 0000000..a4a4e7c
--- /dev/null
+++ b/result/dav15.rde
@@ -0,0 +1,73 @@
+0 1 D:prop 0 0
+1 14 #text 0 1
+
+1 1 D:Source 0 0
+2 14 #text 0 1
+
+2 1 D:link 0 0
+3 14 #text 0 1
+
+3 1 F:projfiles 0 0
+4 3 #text 0 1 Source
+3 15 F:projfiles 0 0
+3 14 #text 0 1
+
+3 1 D:src 0 0
+4 3 #text 0 1 http://foo.bar/program
+3 15 D:src 0 0
+3 14 #text 0 1
+
+3 1 D:dst 0 0
+4 3 #text 0 1 http://foo.bar/src/main.c
+3 15 D:dst 0 0
+3 14 #text 0 1
+
+2 15 D:link 0 0
+2 14 #text 0 1
+
+2 1 D:link 0 0
+3 14 #text 0 1
+
+3 1 F:projfiles 0 0
+4 3 #text 0 1 Library
+3 15 F:projfiles 0 0
+3 14 #text 0 1
+
+3 1 D:src 0 0
+4 3 #text 0 1 http://foo.bar/program
+3 15 D:src 0 0
+3 14 #text 0 1
+
+3 1 D:dst 0 0
+4 3 #text 0 1 http://foo.bar/src/main.lib
+3 15 D:dst 0 0
+3 14 #text 0 1
+
+2 15 D:link 0 0
+2 14 #text 0 1
+
+2 1 D:link 0 0
+3 14 #text 0 1
+
+3 1 F:projfiles 0 0
+4 3 #text 0 1 Makefile
+3 15 F:projfiles 0 0
+3 14 #text 0 1
+
+3 1 D:src 0 0
+4 3 #text 0 1 http://foo.bar/program
+3 15 D:src 0 0
+3 14 #text 0 1
+
+3 1 D:dst 0 0
+4 3 #text 0 1 http://foo.bar/src/makefile
+3 15 D:dst 0 0
+3 14 #text 0 1
+
+2 15 D:link 0 0
+2 14 #text 0 1
+
+1 15 D:Source 0 0
+1 14 #text 0 1
+
+0 15 D:prop 0 0
diff --git a/result/dav15.rdr b/result/dav15.rdr
new file mode 100644
index 0000000..a4a4e7c
--- /dev/null
+++ b/result/dav15.rdr
@@ -0,0 +1,73 @@
+0 1 D:prop 0 0
+1 14 #text 0 1
+
+1 1 D:Source 0 0
+2 14 #text 0 1
+
+2 1 D:link 0 0
+3 14 #text 0 1
+
+3 1 F:projfiles 0 0
+4 3 #text 0 1 Source
+3 15 F:projfiles 0 0
+3 14 #text 0 1
+
+3 1 D:src 0 0
+4 3 #text 0 1 http://foo.bar/program
+3 15 D:src 0 0
+3 14 #text 0 1
+
+3 1 D:dst 0 0
+4 3 #text 0 1 http://foo.bar/src/main.c
+3 15 D:dst 0 0
+3 14 #text 0 1
+
+2 15 D:link 0 0
+2 14 #text 0 1
+
+2 1 D:link 0 0
+3 14 #text 0 1
+
+3 1 F:projfiles 0 0
+4 3 #text 0 1 Library
+3 15 F:projfiles 0 0
+3 14 #text 0 1
+
+3 1 D:src 0 0
+4 3 #text 0 1 http://foo.bar/program
+3 15 D:src 0 0
+3 14 #text 0 1
+
+3 1 D:dst 0 0
+4 3 #text 0 1 http://foo.bar/src/main.lib
+3 15 D:dst 0 0
+3 14 #text 0 1
+
+2 15 D:link 0 0
+2 14 #text 0 1
+
+2 1 D:link 0 0
+3 14 #text 0 1
+
+3 1 F:projfiles 0 0
+4 3 #text 0 1 Makefile
+3 15 F:projfiles 0 0
+3 14 #text 0 1
+
+3 1 D:src 0 0
+4 3 #text 0 1 http://foo.bar/program
+3 15 D:src 0 0
+3 14 #text 0 1
+
+3 1 D:dst 0 0
+4 3 #text 0 1 http://foo.bar/src/makefile
+3 15 D:dst 0 0
+3 14 #text 0 1
+
+2 15 D:link 0 0
+2 14 #text 0 1
+
+1 15 D:Source 0 0
+1 14 #text 0 1
+
+0 15 D:prop 0 0
diff --git a/result/dav15.sax b/result/dav15.sax
new file mode 100644
index 0000000..634ec7d
--- /dev/null
+++ b/result/dav15.sax
@@ -0,0 +1,76 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:prop, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:F='http://www.foocorp.com/Project/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:Source)
+SAX.characters(
+ , 5)
+SAX.startElement(D:link)
+SAX.characters(
+ , 7)
+SAX.startElement(F:projfiles)
+SAX.characters(Source, 6)
+SAX.endElement(F:projfiles)
+SAX.characters(
+ , 7)
+SAX.startElement(D:src)
+SAX.characters(http://foo.bar/program, 22)
+SAX.endElement(D:src)
+SAX.characters(
+ , 7)
+SAX.startElement(D:dst)
+SAX.characters(http://foo.bar/src/main.c, 25)
+SAX.endElement(D:dst)
+SAX.characters(
+ , 5)
+SAX.endElement(D:link)
+SAX.characters(
+ , 5)
+SAX.startElement(D:link)
+SAX.characters(
+ , 7)
+SAX.startElement(F:projfiles)
+SAX.characters(Library, 7)
+SAX.endElement(F:projfiles)
+SAX.characters(
+ , 7)
+SAX.startElement(D:src)
+SAX.characters(http://foo.bar/program, 22)
+SAX.endElement(D:src)
+SAX.characters(
+ , 7)
+SAX.startElement(D:dst)
+SAX.characters(http://foo.bar/src/main.lib, 27)
+SAX.endElement(D:dst)
+SAX.characters(
+ , 5)
+SAX.endElement(D:link)
+SAX.characters(
+ , 5)
+SAX.startElement(D:link)
+SAX.characters(
+ , 7)
+SAX.startElement(F:projfiles)
+SAX.characters(Makefile, 8)
+SAX.endElement(F:projfiles)
+SAX.characters(
+ , 7)
+SAX.startElement(D:src)
+SAX.characters(http://foo.bar/program, 22)
+SAX.endElement(D:src)
+SAX.characters(
+ , 7)
+SAX.startElement(D:dst)
+SAX.characters(http://foo.bar/src/makefile, 27)
+SAX.endElement(D:dst)
+SAX.characters(
+ , 5)
+SAX.endElement(D:link)
+SAX.characters(
+ , 3)
+SAX.endElement(D:Source)
+SAX.characters(
+, 1)
+SAX.endElement(D:prop)
+SAX.endDocument()
diff --git a/result/dav15.sax2 b/result/dav15.sax2
new file mode 100644
index 0000000..6040cd1
--- /dev/null
+++ b/result/dav15.sax2
@@ -0,0 +1,76 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 2, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:F='http://www.foocorp.com/Project/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(Source, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(projfiles, F, 'http://www.foocorp.com/Project/', 0, 0, 0)
+SAX.characters(Source, 6)
+SAX.endElementNs(projfiles, F, 'http://www.foocorp.com/Project/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(src, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/program, 22)
+SAX.endElementNs(src, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(dst, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/src/main.c, 25)
+SAX.endElementNs(dst, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(link, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(projfiles, F, 'http://www.foocorp.com/Project/', 0, 0, 0)
+SAX.characters(Library, 7)
+SAX.endElementNs(projfiles, F, 'http://www.foocorp.com/Project/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(src, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/program, 22)
+SAX.endElementNs(src, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(dst, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/src/main.lib, 27)
+SAX.endElementNs(dst, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(link, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(projfiles, F, 'http://www.foocorp.com/Project/', 0, 0, 0)
+SAX.characters(Makefile, 8)
+SAX.endElementNs(projfiles, F, 'http://www.foocorp.com/Project/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(src, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/program, 22)
+SAX.endElementNs(src, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(dst, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.bar/src/makefile, 27)
+SAX.endElementNs(dst, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(link, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(Source, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav16 b/result/dav16
new file mode 100644
index 0000000..9a7dc36
--- /dev/null
+++ b/result/dav16
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<D:propfind xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:prop>
+ <lockdiscovery/>
+ </D:prop>
+</D:propfind>
diff --git a/result/dav16.rde b/result/dav16.rde
new file mode 100644
index 0000000..97a9933
--- /dev/null
+++ b/result/dav16.rde
@@ -0,0 +1,13 @@
+0 1 D:propfind 0 0
+1 14 #text 0 1
+
+1 1 D:prop 0 0
+2 14 #text 0 1
+
+2 1 lockdiscovery 1 0
+2 14 #text 0 1
+
+1 15 D:prop 0 0
+1 14 #text 0 1
+
+0 15 D:propfind 0 0
diff --git a/result/dav16.rdr b/result/dav16.rdr
new file mode 100644
index 0000000..97a9933
--- /dev/null
+++ b/result/dav16.rdr
@@ -0,0 +1,13 @@
+0 1 D:propfind 0 0
+1 14 #text 0 1
+
+1 1 D:prop 0 0
+2 14 #text 0 1
+
+2 1 lockdiscovery 1 0
+2 14 #text 0 1
+
+1 15 D:prop 0 0
+1 14 #text 0 1
+
+0 15 D:propfind 0 0
diff --git a/result/dav16.sax b/result/dav16.sax
new file mode 100644
index 0000000..a21252b
--- /dev/null
+++ b/result/dav16.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:propfind, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(lockdiscovery)
+SAX.endElement(lockdiscovery)
+SAX.characters(
+ , 3)
+SAX.endElement(D:prop)
+SAX.characters(
+, 1)
+SAX.endElement(D:propfind)
+SAX.endDocument()
diff --git a/result/dav16.sax2 b/result/dav16.sax2
new file mode 100644
index 0000000..1ede22e
--- /dev/null
+++ b/result/dav16.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(propfind, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(lockdiscovery, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(lockdiscovery, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(propfind, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav17 b/result/dav17
new file mode 100644
index 0000000..1137662
--- /dev/null
+++ b/result/dav17
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:prop>
+ <D:lockdiscovery>
+ <D:activelock>
+ <D:locktype>write</D:locktype>
+ <D:lockscope>exclusive</D:lockscope>
+ <D:addlocks>
+ <D:href>http://foo.com/doc/</D:href>
+ </D:addlocks>
+ <D:owner>Jane Smith</D:owner>
+ <D:timeout>Infinite</D:timeout>
+ <D:locktoken>
+ <D:href>iamuri:unique!!!!!</D:href>
+ </D:locktoken>
+ </D:activelock>
+ </D:lockdiscovery>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/dav17.rde b/result/dav17.rde
new file mode 100644
index 0000000..a47b64e
--- /dev/null
+++ b/result/dav17.rde
@@ -0,0 +1,75 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:lockdiscovery 0 0
+4 14 #text 0 1
+
+4 1 D:activelock 0 0
+5 14 #text 0 1
+
+5 1 D:locktype 0 0
+6 3 #text 0 1 write
+5 15 D:locktype 0 0
+5 14 #text 0 1
+
+5 1 D:lockscope 0 0
+6 3 #text 0 1 exclusive
+5 15 D:lockscope 0 0
+5 14 #text 0 1
+
+5 1 D:addlocks 0 0
+6 14 #text 0 1
+
+6 1 D:href 0 0
+7 3 #text 0 1 http://foo.com/doc/
+6 15 D:href 0 0
+6 14 #text 0 1
+
+5 15 D:addlocks 0 0
+5 14 #text 0 1
+
+5 1 D:owner 0 0
+6 3 #text 0 1 Jane Smith
+5 15 D:owner 0 0
+5 14 #text 0 1
+
+5 1 D:timeout 0 0
+6 3 #text 0 1 Infinite
+5 15 D:timeout 0 0
+5 14 #text 0 1
+
+5 1 D:locktoken 0 0
+6 14 #text 0 1
+
+6 1 D:href 0 0
+7 3 #text 0 1 iamuri:unique!!!!!
+6 15 D:href 0 0
+6 14 #text 0 1
+
+5 15 D:locktoken 0 0
+5 14 #text 0 1
+
+4 15 D:activelock 0 0
+4 14 #text 0 1
+
+3 15 D:lockdiscovery 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav17.rdr b/result/dav17.rdr
new file mode 100644
index 0000000..a47b64e
--- /dev/null
+++ b/result/dav17.rdr
@@ -0,0 +1,75 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:lockdiscovery 0 0
+4 14 #text 0 1
+
+4 1 D:activelock 0 0
+5 14 #text 0 1
+
+5 1 D:locktype 0 0
+6 3 #text 0 1 write
+5 15 D:locktype 0 0
+5 14 #text 0 1
+
+5 1 D:lockscope 0 0
+6 3 #text 0 1 exclusive
+5 15 D:lockscope 0 0
+5 14 #text 0 1
+
+5 1 D:addlocks 0 0
+6 14 #text 0 1
+
+6 1 D:href 0 0
+7 3 #text 0 1 http://foo.com/doc/
+6 15 D:href 0 0
+6 14 #text 0 1
+
+5 15 D:addlocks 0 0
+5 14 #text 0 1
+
+5 1 D:owner 0 0
+6 3 #text 0 1 Jane Smith
+5 15 D:owner 0 0
+5 14 #text 0 1
+
+5 1 D:timeout 0 0
+6 3 #text 0 1 Infinite
+5 15 D:timeout 0 0
+5 14 #text 0 1
+
+5 1 D:locktoken 0 0
+6 14 #text 0 1
+
+6 1 D:href 0 0
+7 3 #text 0 1 iamuri:unique!!!!!
+6 15 D:href 0 0
+6 14 #text 0 1
+
+5 15 D:locktoken 0 0
+5 14 #text 0 1
+
+4 15 D:activelock 0 0
+4 14 #text 0 1
+
+3 15 D:lockdiscovery 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav17.sax b/result/dav17.sax
new file mode 100644
index 0000000..83f5bce
--- /dev/null
+++ b/result/dav17.sax
@@ -0,0 +1,78 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(D:lockdiscovery)
+SAX.characters(
+ , 9)
+SAX.startElement(D:activelock)
+SAX.characters(
+ , 11)
+SAX.startElement(D:locktype)
+SAX.characters(write, 5)
+SAX.endElement(D:locktype)
+SAX.characters(
+ , 11)
+SAX.startElement(D:lockscope)
+SAX.characters(exclusive, 9)
+SAX.endElement(D:lockscope)
+SAX.characters(
+ , 11)
+SAX.startElement(D:addlocks)
+SAX.characters(
+ , 13)
+SAX.startElement(D:href)
+SAX.characters(http://foo.com/doc/, 19)
+SAX.endElement(D:href)
+SAX.characters(
+ , 11)
+SAX.endElement(D:addlocks)
+SAX.characters(
+ , 11)
+SAX.startElement(D:owner)
+SAX.characters(Jane Smith, 10)
+SAX.endElement(D:owner)
+SAX.characters(
+ , 11)
+SAX.startElement(D:timeout)
+SAX.characters(Infinite, 8)
+SAX.endElement(D:timeout)
+SAX.characters(
+ , 11)
+SAX.startElement(D:locktoken)
+SAX.characters(
+ , 13)
+SAX.startElement(D:href)
+SAX.characters(iamuri:unique!!!!!, 18)
+SAX.endElement(D:href)
+SAX.characters(
+ , 11)
+SAX.endElement(D:locktoken)
+SAX.characters(
+ , 9)
+SAX.endElement(D:activelock)
+SAX.characters(
+ , 7)
+SAX.endElement(D:lockdiscovery)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav17.sax2 b/result/dav17.sax2
new file mode 100644
index 0000000..48185a2
--- /dev/null
+++ b/result/dav17.sax2
@@ -0,0 +1,78 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(lockdiscovery, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(activelock, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 11)
+SAX.startElementNs(locktype, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(write, 5)
+SAX.endElementNs(locktype, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(exclusive, 9)
+SAX.endElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(addlocks, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 13)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://foo.com/doc/, 19)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(addlocks, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(owner, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Jane Smith, 10)
+SAX.endElementNs(owner, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(timeout, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Infinite, 8)
+SAX.endElementNs(timeout, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(locktoken, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 13)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(iamuri:unique!!!!!, 18)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(locktoken, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 9)
+SAX.endElementNs(activelock, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(lockdiscovery, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav18 b/result/dav18
new file mode 100644
index 0000000..3de1c19
--- /dev/null
+++ b/result/dav18
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<D:propfind xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:prop>
+ <supportedlock/>
+ </D:prop>
+</D:propfind>
diff --git a/result/dav18.rde b/result/dav18.rde
new file mode 100644
index 0000000..9de17af
--- /dev/null
+++ b/result/dav18.rde
@@ -0,0 +1,13 @@
+0 1 D:propfind 0 0
+1 14 #text 0 1
+
+1 1 D:prop 0 0
+2 14 #text 0 1
+
+2 1 supportedlock 1 0
+2 14 #text 0 1
+
+1 15 D:prop 0 0
+1 14 #text 0 1
+
+0 15 D:propfind 0 0
diff --git a/result/dav18.rdr b/result/dav18.rdr
new file mode 100644
index 0000000..9de17af
--- /dev/null
+++ b/result/dav18.rdr
@@ -0,0 +1,13 @@
+0 1 D:propfind 0 0
+1 14 #text 0 1
+
+1 1 D:prop 0 0
+2 14 #text 0 1
+
+2 1 supportedlock 1 0
+2 14 #text 0 1
+
+1 15 D:prop 0 0
+1 14 #text 0 1
+
+0 15 D:propfind 0 0
diff --git a/result/dav18.sax b/result/dav18.sax
new file mode 100644
index 0000000..39f40e6
--- /dev/null
+++ b/result/dav18.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:propfind, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(supportedlock)
+SAX.endElement(supportedlock)
+SAX.characters(
+ , 3)
+SAX.endElement(D:prop)
+SAX.characters(
+, 1)
+SAX.endElement(D:propfind)
+SAX.endDocument()
diff --git a/result/dav18.sax2 b/result/dav18.sax2
new file mode 100644
index 0000000..cddc100
--- /dev/null
+++ b/result/dav18.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(propfind, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(supportedlock, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(supportedlock, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(propfind, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav19 b/result/dav19
new file mode 100644
index 0000000..9535ffc
--- /dev/null
+++ b/result/dav19
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:prop>
+ <D:supportedlock>
+ <D:LockEntry>
+ <D:locktype>Write</D:locktype>
+ <D:lockscope>Exclusive</D:lockscope>
+ </D:LockEntry>
+ <D:LockEntry>
+ <D:locktype>Write</D:locktype>
+ <D:lockscope>Shared</D:lockscope>
+ </D:LockEntry>
+ </D:supportedlock>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/dav19.rde b/result/dav19.rde
new file mode 100644
index 0000000..d2c1e00
--- /dev/null
+++ b/result/dav19.rde
@@ -0,0 +1,59 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:supportedlock 0 0
+4 14 #text 0 1
+
+4 1 D:LockEntry 0 0
+5 14 #text 0 1
+
+5 1 D:locktype 0 0
+6 3 #text 0 1 Write
+5 15 D:locktype 0 0
+5 14 #text 0 1
+
+5 1 D:lockscope 0 0
+6 3 #text 0 1 Exclusive
+5 15 D:lockscope 0 0
+5 14 #text 0 1
+
+4 15 D:LockEntry 0 0
+4 14 #text 0 1
+
+4 1 D:LockEntry 0 0
+5 14 #text 0 1
+
+5 1 D:locktype 0 0
+6 3 #text 0 1 Write
+5 15 D:locktype 0 0
+5 14 #text 0 1
+
+5 1 D:lockscope 0 0
+6 3 #text 0 1 Shared
+5 15 D:lockscope 0 0
+5 14 #text 0 1
+
+4 15 D:LockEntry 0 0
+4 14 #text 0 1
+
+3 15 D:supportedlock 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav19.rdr b/result/dav19.rdr
new file mode 100644
index 0000000..d2c1e00
--- /dev/null
+++ b/result/dav19.rdr
@@ -0,0 +1,59 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:supportedlock 0 0
+4 14 #text 0 1
+
+4 1 D:LockEntry 0 0
+5 14 #text 0 1
+
+5 1 D:locktype 0 0
+6 3 #text 0 1 Write
+5 15 D:locktype 0 0
+5 14 #text 0 1
+
+5 1 D:lockscope 0 0
+6 3 #text 0 1 Exclusive
+5 15 D:lockscope 0 0
+5 14 #text 0 1
+
+4 15 D:LockEntry 0 0
+4 14 #text 0 1
+
+4 1 D:LockEntry 0 0
+5 14 #text 0 1
+
+5 1 D:locktype 0 0
+6 3 #text 0 1 Write
+5 15 D:locktype 0 0
+5 14 #text 0 1
+
+5 1 D:lockscope 0 0
+6 3 #text 0 1 Shared
+5 15 D:lockscope 0 0
+5 14 #text 0 1
+
+4 15 D:LockEntry 0 0
+4 14 #text 0 1
+
+3 15 D:supportedlock 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav19.sax b/result/dav19.sax
new file mode 100644
index 0000000..c65e03d
--- /dev/null
+++ b/result/dav19.sax
@@ -0,0 +1,62 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(D:supportedlock)
+SAX.characters(
+ , 9)
+SAX.startElement(D:LockEntry)
+SAX.characters(
+ , 11)
+SAX.startElement(D:locktype)
+SAX.characters(Write, 5)
+SAX.endElement(D:locktype)
+SAX.characters(
+ , 11)
+SAX.startElement(D:lockscope)
+SAX.characters(Exclusive, 9)
+SAX.endElement(D:lockscope)
+SAX.characters(
+ , 9)
+SAX.endElement(D:LockEntry)
+SAX.characters(
+ , 9)
+SAX.startElement(D:LockEntry)
+SAX.characters(
+ , 11)
+SAX.startElement(D:locktype)
+SAX.characters(Write, 5)
+SAX.endElement(D:locktype)
+SAX.characters(
+ , 11)
+SAX.startElement(D:lockscope)
+SAX.characters(Shared, 6)
+SAX.endElement(D:lockscope)
+SAX.characters(
+ , 9)
+SAX.endElement(D:LockEntry)
+SAX.characters(
+ , 7)
+SAX.endElement(D:supportedlock)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav19.sax2 b/result/dav19.sax2
new file mode 100644
index 0000000..f0dd402
--- /dev/null
+++ b/result/dav19.sax2
@@ -0,0 +1,62 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(supportedlock, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(LockEntry, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 11)
+SAX.startElementNs(locktype, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Write, 5)
+SAX.endElementNs(locktype, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Exclusive, 9)
+SAX.endElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 9)
+SAX.endElementNs(LockEntry, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(LockEntry, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 11)
+SAX.startElementNs(locktype, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Write, 5)
+SAX.endElementNs(locktype, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(Shared, 6)
+SAX.endElementNs(lockscope, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 9)
+SAX.endElementNs(LockEntry, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(supportedlock, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav2 b/result/dav2
new file mode 100644
index 0000000..f831b4b
--- /dev/null
+++ b/result/dav2
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<S:multistatus xmlns:S="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema/">
+ <S:response>
+ <S:href>http://www.foo.bar/container/</S:href>
+ <S:prop>
+ <R:bigbox>
+ <R:BoxType>Box type A</R:BoxType>
+ </R:bigbox>
+ <R:author>
+ <R:Name>Hadrian</R:Name>
+ </R:author>
+ </S:prop>
+ <S:status>HTTP 1.1 200 OK</S:status>
+ </S:response>
+ <S:response>
+ <S:href>http://www.foo.bar/container/index.html</S:href>
+ <S:prop>
+ <R:bigbox>
+ <R:BoxType>Box type B</R:BoxType>
+ </R:bigbox>
+ </S:prop>
+ <S:status>HTTP 1.1 200 OK</S:status>
+ </S:response>
+</S:multistatus>
diff --git a/result/dav2.rde b/result/dav2.rde
new file mode 100644
index 0000000..41fc86d
--- /dev/null
+++ b/result/dav2.rde
@@ -0,0 +1,81 @@
+0 1 S:multistatus 0 0
+1 14 #text 0 1
+
+1 1 S:response 0 0
+2 14 #text 0 1
+
+2 1 S:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 S:href 0 0
+2 14 #text 0 1
+
+2 1 S:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 0 0
+4 14 #text 0 1
+
+4 1 R:BoxType 0 0
+5 3 #text 0 1 Box type A
+4 15 R:BoxType 0 0
+4 14 #text 0 1
+
+3 15 R:bigbox 0 0
+3 14 #text 0 1
+
+3 1 R:author 0 0
+4 14 #text 0 1
+
+4 1 R:Name 0 0
+5 3 #text 0 1 Hadrian
+4 15 R:Name 0 0
+4 14 #text 0 1
+
+3 15 R:author 0 0
+3 14 #text 0 1
+
+2 15 S:prop 0 0
+2 14 #text 0 1
+
+2 1 S:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 S:status 0 0
+2 14 #text 0 1
+
+1 15 S:response 0 0
+1 14 #text 0 1
+
+1 1 S:response 0 0
+2 14 #text 0 1
+
+2 1 S:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/index.html
+2 15 S:href 0 0
+2 14 #text 0 1
+
+2 1 S:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 0 0
+4 14 #text 0 1
+
+4 1 R:BoxType 0 0
+5 3 #text 0 1 Box type B
+4 15 R:BoxType 0 0
+4 14 #text 0 1
+
+3 15 R:bigbox 0 0
+3 14 #text 0 1
+
+2 15 S:prop 0 0
+2 14 #text 0 1
+
+2 1 S:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 S:status 0 0
+2 14 #text 0 1
+
+1 15 S:response 0 0
+1 14 #text 0 1
+
+0 15 S:multistatus 0 0
diff --git a/result/dav2.rdr b/result/dav2.rdr
new file mode 100644
index 0000000..41fc86d
--- /dev/null
+++ b/result/dav2.rdr
@@ -0,0 +1,81 @@
+0 1 S:multistatus 0 0
+1 14 #text 0 1
+
+1 1 S:response 0 0
+2 14 #text 0 1
+
+2 1 S:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 S:href 0 0
+2 14 #text 0 1
+
+2 1 S:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 0 0
+4 14 #text 0 1
+
+4 1 R:BoxType 0 0
+5 3 #text 0 1 Box type A
+4 15 R:BoxType 0 0
+4 14 #text 0 1
+
+3 15 R:bigbox 0 0
+3 14 #text 0 1
+
+3 1 R:author 0 0
+4 14 #text 0 1
+
+4 1 R:Name 0 0
+5 3 #text 0 1 Hadrian
+4 15 R:Name 0 0
+4 14 #text 0 1
+
+3 15 R:author 0 0
+3 14 #text 0 1
+
+2 15 S:prop 0 0
+2 14 #text 0 1
+
+2 1 S:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 S:status 0 0
+2 14 #text 0 1
+
+1 15 S:response 0 0
+1 14 #text 0 1
+
+1 1 S:response 0 0
+2 14 #text 0 1
+
+2 1 S:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/index.html
+2 15 S:href 0 0
+2 14 #text 0 1
+
+2 1 S:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 0 0
+4 14 #text 0 1
+
+4 1 R:BoxType 0 0
+5 3 #text 0 1 Box type B
+4 15 R:BoxType 0 0
+4 14 #text 0 1
+
+3 15 R:bigbox 0 0
+3 14 #text 0 1
+
+2 15 S:prop 0 0
+2 14 #text 0 1
+
+2 1 S:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 S:status 0 0
+2 14 #text 0 1
+
+1 15 S:response 0 0
+1 14 #text 0 1
+
+0 15 S:multistatus 0 0
diff --git a/result/dav2.sax b/result/dav2.sax
new file mode 100644
index 0000000..95bc06a
--- /dev/null
+++ b/result/dav2.sax
@@ -0,0 +1,84 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(S:multistatus, xmlns:S='http://www.ietf.org/standards/dav/', xmlns:R='http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 3)
+SAX.startElement(S:response)
+SAX.characters(
+ , 5)
+SAX.startElement(S:href)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElement(S:href)
+SAX.characters(
+ , 5)
+SAX.startElement(S:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(R:bigbox)
+SAX.characters(
+ , 9)
+SAX.startElement(R:BoxType)
+SAX.characters(Box type A, 10)
+SAX.endElement(R:BoxType)
+SAX.characters(
+ , 7)
+SAX.endElement(R:bigbox)
+SAX.characters(
+ , 7)
+SAX.startElement(R:author)
+SAX.characters(
+ , 9)
+SAX.startElement(R:Name)
+SAX.characters(Hadrian, 7)
+SAX.endElement(R:Name)
+SAX.characters(
+ , 7)
+SAX.endElement(R:author)
+SAX.characters(
+ , 5)
+SAX.endElement(S:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(S:status)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElement(S:status)
+SAX.characters(
+ , 3)
+SAX.endElement(S:response)
+SAX.characters(
+ , 3)
+SAX.startElement(S:response)
+SAX.characters(
+ , 5)
+SAX.startElement(S:href)
+SAX.characters(http://www.foo.bar/container/i, 39)
+SAX.endElement(S:href)
+SAX.characters(
+ , 5)
+SAX.startElement(S:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(R:bigbox)
+SAX.characters(
+ , 9)
+SAX.startElement(R:BoxType)
+SAX.characters(Box type B, 10)
+SAX.endElement(R:BoxType)
+SAX.characters(
+ , 7)
+SAX.endElement(R:bigbox)
+SAX.characters(
+ , 5)
+SAX.endElement(S:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(S:status)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElement(S:status)
+SAX.characters(
+ , 3)
+SAX.endElement(S:response)
+SAX.characters(
+, 1)
+SAX.endElement(S:multistatus)
+SAX.endDocument()
diff --git a/result/dav2.sax2 b/result/dav2.sax2
new file mode 100644
index 0000000..22c7bb0
--- /dev/null
+++ b/result/dav2.sax2
@@ -0,0 +1,84 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, S, 'http://www.ietf.org/standards/dav/', 2, xmlns:S='http://www.ietf.org/standards/dav/', xmlns:R='http://www.foo.bar/boxschema/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElementNs(href, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(bigbox, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(BoxType, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.characters(Box type A, 10)
+SAX.endElementNs(BoxType, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(bigbox, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(author, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(Name, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.characters(Hadrian, 7)
+SAX.endElementNs(Name, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(author, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElementNs(status, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/i, 39)
+SAX.endElementNs(href, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(bigbox, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(BoxType, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.characters(Box type B, 10)
+SAX.endElementNs(BoxType, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(bigbox, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, S, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElementNs(status, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, S, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, S, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav3 b/result/dav3
new file mode 100644
index 0000000..986b3fe
--- /dev/null
+++ b/result/dav3
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema/">
+ <D:response>
+ <D:href>http://www.foo.bar/container/</D:href>
+ <D:prop>
+ <R:bigbox/>
+ <R:author/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:href>http://www.foo.bar/container/index.html</D:href>
+ <D:prop>
+ <R:bigbox/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/dav3.rde b/result/dav3.rde
new file mode 100644
index 0000000..f106f17
--- /dev/null
+++ b/result/dav3.rde
@@ -0,0 +1,57 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 1 0
+3 14 #text 0 1
+
+3 1 R:author 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/index.html
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav3.rdr b/result/dav3.rdr
new file mode 100644
index 0000000..f106f17
--- /dev/null
+++ b/result/dav3.rdr
@@ -0,0 +1,57 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 1 0
+3 14 #text 0 1
+
+3 1 R:author 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/index.html
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 R:bigbox 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav3.sax b/result/dav3.sax
new file mode 100644
index 0000000..e9eabd8
--- /dev/null
+++ b/result/dav3.sax
@@ -0,0 +1,63 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:R='http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(R:bigbox)
+SAX.endElement(R:bigbox)
+SAX.characters(
+ , 7)
+SAX.startElement(R:author)
+SAX.endElement(R:author)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(http://www.foo.bar/container/i, 39)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(R:bigbox)
+SAX.endElement(R:bigbox)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav3.sax2 b/result/dav3.sax2
new file mode 100644
index 0000000..0088f29
--- /dev/null
+++ b/result/dav3.sax2
@@ -0,0 +1,63 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 2, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:R='http://www.foo.bar/boxschema/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(bigbox, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.endElementNs(bigbox, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(author, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.endElementNs(author, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/i, 39)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(bigbox, R, 'http://www.foo.bar/boxschema/', 0, 0, 0)
+SAX.endElementNs(bigbox, R, 'http://www.foo.bar/boxschema/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav4 b/result/dav4
new file mode 100644
index 0000000..9ab7ceb
--- /dev/null
+++ b/result/dav4
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<D:propertyupdate xmlns:D="http://www.ietf.org/standards/dav/" xmlns:Z="http://www.w3.com/standards/z39.50/">
+ <D:set>
+ <D:prop>
+ <Z:authors>
+ <Z:Author>Jim Whitehead</Z:Author>
+ <Z:Author>Roy Fielding</Z:Author>
+ </Z:authors>
+ </D:prop>
+ </D:set>
+ <D:remove>
+ <D:prop>
+ <Z:Copyright-Owner/>
+ </D:prop>
+ </D:remove>
+</D:propertyupdate>
diff --git a/result/dav4.rde b/result/dav4.rde
new file mode 100644
index 0000000..e764047
--- /dev/null
+++ b/result/dav4.rde
@@ -0,0 +1,47 @@
+0 1 D:propertyupdate 0 0
+1 14 #text 0 1
+
+1 1 D:set 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:authors 0 0
+4 14 #text 0 1
+
+4 1 Z:Author 0 0
+5 3 #text 0 1 Jim Whitehead
+4 15 Z:Author 0 0
+4 14 #text 0 1
+
+4 1 Z:Author 0 0
+5 3 #text 0 1 Roy Fielding
+4 15 Z:Author 0 0
+4 14 #text 0 1
+
+3 15 Z:authors 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+1 15 D:set 0 0
+1 14 #text 0 1
+
+1 1 D:remove 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:Copyright-Owner 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+1 15 D:remove 0 0
+1 14 #text 0 1
+
+0 15 D:propertyupdate 0 0
diff --git a/result/dav4.rdr b/result/dav4.rdr
new file mode 100644
index 0000000..e764047
--- /dev/null
+++ b/result/dav4.rdr
@@ -0,0 +1,47 @@
+0 1 D:propertyupdate 0 0
+1 14 #text 0 1
+
+1 1 D:set 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:authors 0 0
+4 14 #text 0 1
+
+4 1 Z:Author 0 0
+5 3 #text 0 1 Jim Whitehead
+4 15 Z:Author 0 0
+4 14 #text 0 1
+
+4 1 Z:Author 0 0
+5 3 #text 0 1 Roy Fielding
+4 15 Z:Author 0 0
+4 14 #text 0 1
+
+3 15 Z:authors 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+1 15 D:set 0 0
+1 14 #text 0 1
+
+1 1 D:remove 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:Copyright-Owner 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+1 15 D:remove 0 0
+1 14 #text 0 1
+
+0 15 D:propertyupdate 0 0
diff --git a/result/dav4.sax b/result/dav4.sax
new file mode 100644
index 0000000..8268026
--- /dev/null
+++ b/result/dav4.sax
@@ -0,0 +1,51 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:propertyupdate, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:Z='http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:set)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(Z:authors)
+SAX.characters(
+ , 9)
+SAX.startElement(Z:Author)
+SAX.characters(Jim Whitehead, 13)
+SAX.endElement(Z:Author)
+SAX.characters(
+ , 9)
+SAX.startElement(Z:Author)
+SAX.characters(Roy Fielding, 12)
+SAX.endElement(Z:Author)
+SAX.characters(
+ , 7)
+SAX.endElement(Z:authors)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 3)
+SAX.endElement(D:set)
+SAX.characters(
+ , 3)
+SAX.startElement(D:remove)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(Z:Copyright-Owner)
+SAX.endElement(Z:Copyright-Owner)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 3)
+SAX.endElement(D:remove)
+SAX.characters(
+, 1)
+SAX.endElement(D:propertyupdate)
+SAX.endDocument()
diff --git a/result/dav4.sax2 b/result/dav4.sax2
new file mode 100644
index 0000000..58fb8ac
--- /dev/null
+++ b/result/dav4.sax2
@@ -0,0 +1,51 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(propertyupdate, D, 'http://www.ietf.org/standards/dav/', 2, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:Z='http://www.w3.com/standards/z39.50/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(set, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(authors, Z, 'http://www.w3.com/standards/z39.50/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(Author, Z, 'http://www.w3.com/standards/z39.50/', 0, 0, 0)
+SAX.characters(Jim Whitehead, 13)
+SAX.endElementNs(Author, Z, 'http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Author, Z, 'http://www.w3.com/standards/z39.50/', 0, 0, 0)
+SAX.characters(Roy Fielding, 12)
+SAX.endElementNs(Author, Z, 'http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(authors, Z, 'http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(set, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(remove, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(Copyright-Owner, Z, 'http://www.w3.com/standards/z39.50/', 0, 0, 0)
+SAX.endElementNs(Copyright-Owner, Z, 'http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(remove, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(propertyupdate, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav5 b/result/dav5
new file mode 100644
index 0000000..68ebab9
--- /dev/null
+++ b/result/dav5
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:Z="http://www.w3.com/standards/z39.50/">
+ <D:response>
+ <D:prop>
+ <Z:Authors/>
+ </D:prop>
+ <D:status>HTTP/1.1 420 Method Failure</D:status>
+ </D:response>
+ <D:response>
+ <D:prop>
+ <Z:Copyright-Owner/>
+ </D:prop>
+ <D:status>HTTP/1.1 409 Conflict</D:status>
+ </D:response>
+ <D:responsedescription> Copyright Owner can not be deleted or
+altered.</D:responsedescription>
+</D:multistatus>
diff --git a/result/dav5.rde b/result/dav5.rde
new file mode 100644
index 0000000..c92d177
--- /dev/null
+++ b/result/dav5.rde
@@ -0,0 +1,50 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:Authors 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 420 Method Failure
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:Copyright-Owner 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 409 Conflict
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:responsedescription 0 0
+2 3 #text 0 1 Copyright Owner can not be deleted or
+altered.
+1 15 D:responsedescription 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav5.rdr b/result/dav5.rdr
new file mode 100644
index 0000000..c92d177
--- /dev/null
+++ b/result/dav5.rdr
@@ -0,0 +1,50 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:Authors 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 420 Method Failure
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 Z:Copyright-Owner 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP/1.1 409 Conflict
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:responsedescription 0 0
+2 3 #text 0 1 Copyright Owner can not be deleted or
+altered.
+1 15 D:responsedescription 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav5.sax b/result/dav5.sax
new file mode 100644
index 0000000..53967f8
--- /dev/null
+++ b/result/dav5.sax
@@ -0,0 +1,54 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:Z='http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(Z:Authors)
+SAX.endElement(Z:Authors)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 420 Method Failure, 27)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(Z:Copyright-Owner)
+SAX.endElement(Z:Copyright-Owner)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP/1.1 409 Conflict, 21)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:responsedescription)
+SAX.characters( Copyright Owner can not be de, 47)
+SAX.endElement(D:responsedescription)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav5.sax2 b/result/dav5.sax2
new file mode 100644
index 0000000..6062cca
--- /dev/null
+++ b/result/dav5.sax2
@@ -0,0 +1,54 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 2, xmlns:D='http://www.ietf.org/standards/dav/', xmlns:Z='http://www.w3.com/standards/z39.50/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(Authors, Z, 'http://www.w3.com/standards/z39.50/', 0, 0, 0)
+SAX.endElementNs(Authors, Z, 'http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 420 Method Failure, 27)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(Copyright-Owner, Z, 'http://www.w3.com/standards/z39.50/', 0, 0, 0)
+SAX.endElementNs(Copyright-Owner, Z, 'http://www.w3.com/standards/z39.50/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 409 Conflict, 21)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(responsedescription, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters( Copyright Owner can not be de, 47)
+SAX.endElementNs(responsedescription, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav6 b/result/dav6
new file mode 100644
index 0000000..3d0de24
--- /dev/null
+++ b/result/dav6
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:href>http://www.microsoft.com/user/yarong/dav_drafts/
+ </D:href>
+ <D:prop>
+ <D:resourcetype>
+ <D:collection/>
+ </D:resourcetype>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:href>
+ http://www.microsoft.com/user/yarong/dav_drafts/base
+ </D:href>
+ <D:prop>
+ <D:resourcetype/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/dav6.rde b/result/dav6.rde
new file mode 100644
index 0000000..726e3c2
--- /dev/null
+++ b/result/dav6.rde
@@ -0,0 +1,63 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://www.microsoft.com/user/yarong/dav_drafts/
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:resourcetype 0 0
+4 14 #text 0 1
+
+4 1 D:collection 1 0
+4 14 #text 0 1
+
+3 15 D:resourcetype 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1
+ http://www.microsoft.com/user/yarong/dav_drafts/base
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:resourcetype 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav6.rdr b/result/dav6.rdr
new file mode 100644
index 0000000..726e3c2
--- /dev/null
+++ b/result/dav6.rdr
@@ -0,0 +1,63 @@
+0 1 D:multistatus 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1 http://www.microsoft.com/user/yarong/dav_drafts/
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:resourcetype 0 0
+4 14 #text 0 1
+
+4 1 D:collection 1 0
+4 14 #text 0 1
+
+3 15 D:resourcetype 0 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+1 1 D:response 0 0
+2 14 #text 0 1
+
+2 1 D:href 0 0
+3 3 #text 0 1
+ http://www.microsoft.com/user/yarong/dav_drafts/base
+
+2 15 D:href 0 0
+2 14 #text 0 1
+
+2 1 D:prop 0 0
+3 14 #text 0 1
+
+3 1 D:resourcetype 1 0
+3 14 #text 0 1
+
+2 15 D:prop 0 0
+2 14 #text 0 1
+
+2 1 D:status 0 0
+3 3 #text 0 1 HTTP 1.1 200 OK
+2 15 D:status 0 0
+2 14 #text 0 1
+
+1 15 D:response 0 0
+1 14 #text 0 1
+
+0 15 D:multistatus 0 0
diff --git a/result/dav6.sax b/result/dav6.sax
new file mode 100644
index 0000000..a6a5b2d
--- /dev/null
+++ b/result/dav6.sax
@@ -0,0 +1,66 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(D:multistatus, xmlns:D='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(http://www.microsoft.com/user/, 55)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(D:resourcetype)
+SAX.characters(
+ , 9)
+SAX.startElement(D:collection)
+SAX.endElement(D:collection)
+SAX.characters(
+ , 7)
+SAX.endElement(D:resourcetype)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+ , 3)
+SAX.startElement(D:response)
+SAX.characters(
+ , 5)
+SAX.startElement(D:href)
+SAX.characters(
+ http://www.microsoft.co, 66)
+SAX.endElement(D:href)
+SAX.characters(
+ , 5)
+SAX.startElement(D:prop)
+SAX.characters(
+ , 7)
+SAX.startElement(D:resourcetype)
+SAX.endElement(D:resourcetype)
+SAX.characters(
+ , 5)
+SAX.endElement(D:prop)
+SAX.characters(
+ , 5)
+SAX.startElement(D:status)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElement(D:status)
+SAX.characters(
+ , 3)
+SAX.endElement(D:response)
+SAX.characters(
+, 1)
+SAX.endElement(D:multistatus)
+SAX.endDocument()
diff --git a/result/dav6.sax2 b/result/dav6.sax2
new file mode 100644
index 0000000..31952c5
--- /dev/null
+++ b/result/dav6.sax2
@@ -0,0 +1,66 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/', 1, xmlns:D='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.microsoft.com/user/, 55)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(resourcetype, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(collection, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.endElementNs(collection, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(resourcetype, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ http://www.microsoft.co, 66)
+SAX.endElementNs(href, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(prop, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(resourcetype, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.endElementNs(resourcetype, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(prop, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, D, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP 1.1 200 OK, 15)
+SAX.endElementNs(status, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, D, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, D, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav7 b/result/dav7
new file mode 100644
index 0000000..ec4a952
--- /dev/null
+++ b/result/dav7
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource1</d:href>
+ <d:href>http://www.foo.bar/container/resource2</d:href>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/</d:href>
+ <d:status>HTTP/1.1 420 Method Failure</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource3</d:href>
+ <d:status>HTTP/1.1 412 Precondition Failed</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/result/dav7.rde b/result/dav7.rde
new file mode 100644
index 0000000..3f98328
--- /dev/null
+++ b/result/dav7.rde
@@ -0,0 +1,57 @@
+0 1 d:multistatus 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource1
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 420 Method Failure
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource3
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 412 Precondition Failed
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+0 15 d:multistatus 0 0
diff --git a/result/dav7.rdr b/result/dav7.rdr
new file mode 100644
index 0000000..3f98328
--- /dev/null
+++ b/result/dav7.rdr
@@ -0,0 +1,57 @@
+0 1 d:multistatus 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource1
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 200 OK
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 420 Method Failure
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource3
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 412 Precondition Failed
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+0 15 d:multistatus 0 0
diff --git a/result/dav7.sax b/result/dav7.sax
new file mode 100644
index 0000000..133a9c1
--- /dev/null
+++ b/result/dav7.sax
@@ -0,0 +1,60 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(d:multistatus, xmlns:d='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 420 Method Failure, 27)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 412 Precondition Fail, 32)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+, 1)
+SAX.endElement(d:multistatus)
+SAX.endDocument()
diff --git a/result/dav7.sax2 b/result/dav7.sax2
new file mode 100644
index 0000000..1d51e74
--- /dev/null
+++ b/result/dav7.sax2
@@ -0,0 +1,60 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, d, 'http://www.ietf.org/standards/dav/', 1, xmlns:d='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 200 OK, 15)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 420 Method Failure, 27)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 412 Precondition Fail, 32)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, d, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav8 b/result/dav8
new file mode 100644
index 0000000..7f99baf
--- /dev/null
+++ b/result/dav8
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/resource1</d:href>
+ <d:href>http://www.foo.bar/othercontainer/resource2</d:href>
+ <d:href>http://www.foo.bar/othercontainer/</d:href>
+ <d:href>http://www.foo.bar/othercontainer/R2/D2</d:href>
+ <d:status>HTTP/1.1 201 Created</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/R2/</d:href>
+ <d:status>HTTP/1.1 412 Precondition Failed</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/result/dav8.rde b/result/dav8.rde
new file mode 100644
index 0000000..f14225e
--- /dev/null
+++ b/result/dav8.rde
@@ -0,0 +1,51 @@
+0 1 d:multistatus 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/resource1
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/resource2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/R2/D2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 201 Created
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/R2/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 412 Precondition Failed
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+0 15 d:multistatus 0 0
diff --git a/result/dav8.rdr b/result/dav8.rdr
new file mode 100644
index 0000000..f14225e
--- /dev/null
+++ b/result/dav8.rdr
@@ -0,0 +1,51 @@
+0 1 d:multistatus 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/resource1
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/resource2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/R2/D2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 201 Created
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/R2/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 412 Precondition Failed
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+0 15 d:multistatus 0 0
diff --git a/result/dav8.sax b/result/dav8.sax
new file mode 100644
index 0000000..8a810ef
--- /dev/null
+++ b/result/dav8.sax
@@ -0,0 +1,54 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(d:multistatus, xmlns:d='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/othercontai, 43)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/othercontai, 43)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/othercontai, 34)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/othercontai, 39)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 201 Created, 20)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/othercontai, 37)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 412 Precondition Fail, 32)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+, 1)
+SAX.endElement(d:multistatus)
+SAX.endDocument()
diff --git a/result/dav8.sax2 b/result/dav8.sax2
new file mode 100644
index 0000000..7de547e
--- /dev/null
+++ b/result/dav8.sax2
@@ -0,0 +1,54 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, d, 'http://www.ietf.org/standards/dav/', 1, xmlns:d='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/othercontai, 43)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/othercontai, 43)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/othercontai, 34)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/othercontai, 39)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 201 Created, 20)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/othercontai, 37)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 412 Precondition Fail, 32)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, d, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/dav9 b/result/dav9
new file mode 100644
index 0000000..8ed63b8
--- /dev/null
+++ b/result/dav9
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource1</d:href>
+ <d:href>http://www.foo.bar/container/resource2</d:href>
+ <d:href>http://www.foo.bar/container/</d:href>
+ <d:href>http://www.foo.bar/container/C2/R2</d:href>
+ <d:status>HTTP/1.1 201 Created</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/C2</d:href>
+ <d:status>HTTP/1.1 420 Method Failure</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/C2</d:href>
+ <d:status>HTTP/1.1 409 Conflict</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/result/dav9.rde b/result/dav9.rde
new file mode 100644
index 0000000..943ab96
--- /dev/null
+++ b/result/dav9.rde
@@ -0,0 +1,67 @@
+0 1 d:multistatus 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource1
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/C2/R2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 201 Created
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/C2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 420 Method Failure
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/C2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 409 Conflict
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+0 15 d:multistatus 0 0
diff --git a/result/dav9.rdr b/result/dav9.rdr
new file mode 100644
index 0000000..943ab96
--- /dev/null
+++ b/result/dav9.rdr
@@ -0,0 +1,67 @@
+0 1 d:multistatus 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource1
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/resource2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/C2/R2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 201 Created
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/container/C2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 420 Method Failure
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+1 1 d:response 0 0
+2 14 #text 0 1
+
+2 1 d:href 0 0
+3 3 #text 0 1 http://www.foo.bar/othercontainer/C2
+2 15 d:href 0 0
+2 14 #text 0 1
+
+2 1 d:status 0 0
+3 3 #text 0 1 HTTP/1.1 409 Conflict
+2 15 d:status 0 0
+2 14 #text 0 1
+
+1 15 d:response 0 0
+1 14 #text 0 1
+
+0 15 d:multistatus 0 0
diff --git a/result/dav9.sax b/result/dav9.sax
new file mode 100644
index 0000000..4116bad
--- /dev/null
+++ b/result/dav9.sax
@@ -0,0 +1,70 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(d:multistatus, xmlns:d='http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/C, 34)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 201 Created, 20)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/container/C, 31)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 420 Method Failure, 27)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+ , 3)
+SAX.startElement(d:response)
+SAX.characters(
+ , 5)
+SAX.startElement(d:href)
+SAX.characters(http://www.foo.bar/othercontai, 36)
+SAX.endElement(d:href)
+SAX.characters(
+ , 5)
+SAX.startElement(d:status)
+SAX.characters(HTTP/1.1 409 Conflict, 21)
+SAX.endElement(d:status)
+SAX.characters(
+ , 3)
+SAX.endElement(d:response)
+SAX.characters(
+, 1)
+SAX.endElement(d:multistatus)
+SAX.endDocument()
diff --git a/result/dav9.sax2 b/result/dav9.sax2
new file mode 100644
index 0000000..26e4942
--- /dev/null
+++ b/result/dav9.sax2
@@ -0,0 +1,70 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(multistatus, d, 'http://www.ietf.org/standards/dav/', 1, xmlns:d='http://www.ietf.org/standards/dav/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/r, 38)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/, 29)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/C, 34)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 201 Created, 20)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/container/C, 31)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 420 Method Failure, 27)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(response, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(href, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(http://www.foo.bar/othercontai, 36)
+SAX.endElementNs(href, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(status, d, 'http://www.ietf.org/standards/dav/', 0, 0, 0)
+SAX.characters(HTTP/1.1 409 Conflict, 21)
+SAX.endElementNs(status, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(response, d, 'http://www.ietf.org/standards/dav/')
+SAX.characters(
+, 1)
+SAX.endElementNs(multistatus, d, 'http://www.ietf.org/standards/dav/')
+SAX.endDocument()
diff --git a/result/defattr.xml b/result/defattr.xml
new file mode 100644
index 0000000..0a4ac15
--- /dev/null
+++ b/result/defattr.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc xmlns CDATA #FIXED "http://www.example.com/">
+]>
+<doc xmlns="http://www.example.com/"/>
diff --git a/result/defattr.xml.rde b/result/defattr.xml.rde
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/defattr.xml.rde
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/defattr.xml.rdr b/result/defattr.xml.rdr
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/defattr.xml.rdr
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/defattr.xml.sax b/result/defattr.xml.sax
new file mode 100644
index 0000000..86ef54a
--- /dev/null
+++ b/result/defattr.xml.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 1, ...)
+SAX.attributeDecl(doc, xmlns, 1, 4, http://www.example.com/, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/defattr.xml.sax2 b/result/defattr.xml.sax2
new file mode 100644
index 0000000..dfeba49
--- /dev/null
+++ b/result/defattr.xml.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 1, ...)
+SAX.attributeDecl(doc, xmlns, 1, 4, http://www.example.com/, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, 'http://www.example.com/', 1, xmlns='http://www.example.com/', 0, 0)
+SAX.endElementNs(doc, NULL, 'http://www.example.com/')
+SAX.endDocument()
diff --git a/result/defattr2.xml b/result/defattr2.xml
new file mode 100644
index 0000000..8d1fc3b
--- /dev/null
+++ b/result/defattr2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc defatt (0 | 1) "0">
+<!ATTLIST doc xmlns:tst CDATA #FIXED "http://example.org">
+<!ATTLIST doc tst:att (0 | 1) "1">
+]>
+<doc xmlns:tst="http://example.org" att="1"/>
diff --git a/result/defattr2.xml.rde b/result/defattr2.xml.rde
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/defattr2.xml.rde
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/defattr2.xml.rdr b/result/defattr2.xml.rdr
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/defattr2.xml.rdr
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/defattr2.xml.sax b/result/defattr2.xml.sax
new file mode 100644
index 0000000..72f8fca
--- /dev/null
+++ b/result/defattr2.xml.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 1, ...)
+SAX.attributeDecl(doc, defatt, 9, 1, 0, ...)
+SAX.attributeDecl(doc, xmlns:tst, 1, 4, http://example.org, ...)
+SAX.attributeDecl(doc, tst:att, 9, 1, 1, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc, att='1')
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/defattr2.xml.sax2 b/result/defattr2.xml.sax2
new file mode 100644
index 0000000..0f77271
--- /dev/null
+++ b/result/defattr2.xml.sax2
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 1, ...)
+SAX.attributeDecl(doc, defatt, 9, 1, 0, ...)
+SAX.attributeDecl(doc, xmlns:tst, 1, 4, http://example.org, ...)
+SAX.attributeDecl(doc, tst:att, 9, 1, 1, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 1, xmlns:tst='http://example.org', 3, 2, att='1"/>...', 1, defatt='0...', 1, tst:att='1...', 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dia1 b/result/dia1
new file mode 100644
index 0000000..207bd73
--- /dev/null
+++ b/result/dia1
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true">
+ <dia:object type="Standard - Line" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="1.95,6.85"/>
+ <dia:point val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O2" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="2.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/result/dia1.rde b/result/dia1.rde
new file mode 100644
index 0000000..3767325
--- /dev/null
+++ b/result/dia1.rde
@@ -0,0 +1,292 @@
+0 1 dia:diagram 0 0
+1 14 #text 0 1
+
+1 1 dia:diagramdata 0 0
+2 14 #text 0 1
+
+2 1 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:color 1 0
+3 14 #text 0 1
+
+2 15 dia:attribute 0 0
+2 14 #text 0 1
+
+1 15 dia:diagramdata 0 0
+1 14 #text 0 1
+
+1 1 dia:layer 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:connections 0 0
+4 14 #text 0 1
+
+4 1 dia:connection 1 0
+4 14 #text 0 1
+
+3 15 dia:connections 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:composite 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:string 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:font 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:real 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:point 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:color 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:enum 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+4 15 dia:composite 0 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+1 15 dia:layer 0 0
+1 14 #text 0 1
+
+0 15 dia:diagram 0 0
diff --git a/result/dia1.rdr b/result/dia1.rdr
new file mode 100644
index 0000000..3767325
--- /dev/null
+++ b/result/dia1.rdr
@@ -0,0 +1,292 @@
+0 1 dia:diagram 0 0
+1 14 #text 0 1
+
+1 1 dia:diagramdata 0 0
+2 14 #text 0 1
+
+2 1 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:color 1 0
+3 14 #text 0 1
+
+2 15 dia:attribute 0 0
+2 14 #text 0 1
+
+1 15 dia:diagramdata 0 0
+1 14 #text 0 1
+
+1 1 dia:layer 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:connections 0 0
+4 14 #text 0 1
+
+4 1 dia:connection 1 0
+4 14 #text 0 1
+
+3 15 dia:connections 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:composite 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:string 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:font 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:real 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:point 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:color 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:enum 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+4 15 dia:composite 0 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+1 15 dia:layer 0 0
+1 14 #text 0 1
+
+0 15 dia:diagram 0 0
diff --git a/result/dia1.sax b/result/dia1.sax
new file mode 100644
index 0000000..6f65d63
--- /dev/null
+++ b/result/dia1.sax
@@ -0,0 +1,323 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(dia:diagram, xmlns:dia='http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.startElement(dia:diagramdata)
+SAX.characters(
+ , 5)
+SAX.startElement(dia:attribute, name='background')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:color, val='#ffffff')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 3)
+SAX.endElement(dia:diagramdata)
+SAX.characters(
+ , 3)
+SAX.startElement(dia:layer, name='Background', visible='true')
+SAX.characters(
+ , 5)
+SAX.startElement(dia:object, type='Standard - Line', version='0', id='O0')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_pos')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='1.95,6.85')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_bb')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:rectangle, val='1.9,6.8;11,8.55')
+SAX.endElement(dia:rectangle)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='conn_endpoints')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='1.95,6.85')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='10.95,8.5')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_color')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:color, val='#000000')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_width')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='0.1')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_style')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='start_arrow')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='end_arrow')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:connections)
+SAX.characters(
+ , 9)
+SAX.startElement(dia:connection, handle='1', to='O2', connection='3')
+SAX.endElement(dia:connection)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:connections)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:object)
+SAX.characters(
+ , 5)
+SAX.startElement(dia:object, type='Standard - Text', version='0', id='O1')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_pos')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='4.8,4.75')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_bb')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:rectangle, val='2.579,3.96359;7.021,4.96359')
+SAX.endElement(dia:rectangle)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='text')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:composite, type='text')
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='string')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:string, val='sdfsdfg')
+SAX.endElement(dia:string)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='font')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:font, name='Courier')
+SAX.endElement(dia:font)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='height')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:real, val='1')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='pos')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:point, val='4.8,4.75')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='color')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:color, val='#000000')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='alignment')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:enum, val='1')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 9)
+SAX.endElement(dia:composite)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:object)
+SAX.characters(
+ , 5)
+SAX.startElement(dia:object, type='Standard - Box', version='0', id='O2')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_pos')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='10.95,7.5')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_bb')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:rectangle, val='10.9,7.45;13.05,9.55')
+SAX.endElement(dia:rectangle)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='elem_corner')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='10.95,7.5')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='elem_width')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='2.05')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='elem_height')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='2')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='border_width')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='0.1')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='border_color')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:color, val='#000000')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='inner_color')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:color, val='#ffffff')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_style')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:object)
+SAX.characters(
+ , 3)
+SAX.endElement(dia:layer)
+SAX.characters(
+, 1)
+SAX.endElement(dia:diagram)
+SAX.endDocument()
diff --git a/result/dia1.sax2 b/result/dia1.sax2
new file mode 100644
index 0000000..4821c9b
--- /dev/null
+++ b/result/dia1.sax2
@@ -0,0 +1,323 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/', 1, xmlns:dia='http://www.lysator.liu.se/~alla/dia/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(diagramdata, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='back...', 10)
+SAX.characters(
+ , 7)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#fff...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(diagramdata, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(layer, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 2, 0, name='Back...', 10, visible='true...', 4)
+SAX.characters(
+ , 5)
+SAX.startElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, type='Stan...', 15, version='0" i...', 1, id='O0">...', 2)
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 7)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1.95...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 6)
+SAX.characters(
+ , 9)
+SAX.startElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1.9,...', 15)
+SAX.endElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='conn...', 14)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1.95...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#000...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0.1"...', 3)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='star...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='end_...', 9)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(connections, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(connection, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, handle='1" t...', 1, to='O2" ...', 2, connection='3"/>...', 1)
+SAX.endElementNs(connection, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(connections, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, type='Stan...', 15, version='0" i...', 1, id='O1">...', 2)
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 7)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='4.8,...', 8)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 6)
+SAX.characters(
+ , 9)
+SAX.startElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='2.57...', 27)
+SAX.endElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='text...', 4)
+SAX.characters(
+ , 9)
+SAX.startElementNs(composite, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, type='text...', 4)
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='stri...', 6)
+SAX.characters(
+ , 13)
+SAX.startElementNs(string, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='sdfs...', 7)
+SAX.endElementNs(string, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='font...', 4)
+SAX.characters(
+ , 13)
+SAX.startElementNs(font, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='Cour...', 7)
+SAX.endElementNs(font, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='heig...', 6)
+SAX.characters(
+ , 13)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1"/>...', 1)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='pos"...', 3)
+SAX.characters(
+ , 13)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='4.8,...', 8)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='colo...', 5)
+SAX.characters(
+ , 13)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#000...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='alig...', 9)
+SAX.characters(
+ , 13)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 9)
+SAX.endElementNs(composite, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, type='Stan...', 14, version='0" i...', 1, id='O2">...', 2)
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 7)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 6)
+SAX.characters(
+ , 9)
+SAX.startElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 20)
+SAX.endElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='elem...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='elem...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='2.05...', 4)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='elem...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='2"/>...', 1)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='bord...', 12)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0.1"...', 3)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='bord...', 12)
+SAX.characters(
+ , 9)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#000...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='inne...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#fff...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(layer, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+, 1)
+SAX.endElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.endDocument()
diff --git a/result/dia2 b/result/dia2
new file mode 100644
index 0000000..207bd73
--- /dev/null
+++ b/result/dia2
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true">
+ <dia:object type="Standard - Line" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="1.95,6.85"/>
+ <dia:point val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O2" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="2.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/result/dia2.rde b/result/dia2.rde
new file mode 100644
index 0000000..3767325
--- /dev/null
+++ b/result/dia2.rde
@@ -0,0 +1,292 @@
+0 1 dia:diagram 0 0
+1 14 #text 0 1
+
+1 1 dia:diagramdata 0 0
+2 14 #text 0 1
+
+2 1 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:color 1 0
+3 14 #text 0 1
+
+2 15 dia:attribute 0 0
+2 14 #text 0 1
+
+1 15 dia:diagramdata 0 0
+1 14 #text 0 1
+
+1 1 dia:layer 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:connections 0 0
+4 14 #text 0 1
+
+4 1 dia:connection 1 0
+4 14 #text 0 1
+
+3 15 dia:connections 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:composite 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:string 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:font 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:real 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:point 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:color 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:enum 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+4 15 dia:composite 0 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+1 15 dia:layer 0 0
+1 14 #text 0 1
+
+0 15 dia:diagram 0 0
diff --git a/result/dia2.rdr b/result/dia2.rdr
new file mode 100644
index 0000000..3767325
--- /dev/null
+++ b/result/dia2.rdr
@@ -0,0 +1,292 @@
+0 1 dia:diagram 0 0
+1 14 #text 0 1
+
+1 1 dia:diagramdata 0 0
+2 14 #text 0 1
+
+2 1 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:color 1 0
+3 14 #text 0 1
+
+2 15 dia:attribute 0 0
+2 14 #text 0 1
+
+1 15 dia:diagramdata 0 0
+1 14 #text 0 1
+
+1 1 dia:layer 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:connections 0 0
+4 14 #text 0 1
+
+4 1 dia:connection 1 0
+4 14 #text 0 1
+
+3 15 dia:connections 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:composite 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:string 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:font 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:real 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:point 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:color 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+5 1 dia:attribute 0 0
+6 14 #text 0 1
+
+6 1 dia:enum 1 0
+6 14 #text 0 1
+
+5 15 dia:attribute 0 0
+5 14 #text 0 1
+
+4 15 dia:composite 0 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+2 1 dia:object 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:rectangle 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:point 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:real 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:color 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+3 1 dia:attribute 0 0
+4 14 #text 0 1
+
+4 1 dia:enum 1 0
+4 14 #text 0 1
+
+3 15 dia:attribute 0 0
+3 14 #text 0 1
+
+2 15 dia:object 0 0
+2 14 #text 0 1
+
+1 15 dia:layer 0 0
+1 14 #text 0 1
+
+0 15 dia:diagram 0 0
diff --git a/result/dia2.sax b/result/dia2.sax
new file mode 100644
index 0000000..6f65d63
--- /dev/null
+++ b/result/dia2.sax
@@ -0,0 +1,323 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(dia:diagram, xmlns:dia='http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.startElement(dia:diagramdata)
+SAX.characters(
+ , 5)
+SAX.startElement(dia:attribute, name='background')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:color, val='#ffffff')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 3)
+SAX.endElement(dia:diagramdata)
+SAX.characters(
+ , 3)
+SAX.startElement(dia:layer, name='Background', visible='true')
+SAX.characters(
+ , 5)
+SAX.startElement(dia:object, type='Standard - Line', version='0', id='O0')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_pos')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='1.95,6.85')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_bb')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:rectangle, val='1.9,6.8;11,8.55')
+SAX.endElement(dia:rectangle)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='conn_endpoints')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='1.95,6.85')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='10.95,8.5')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_color')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:color, val='#000000')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_width')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='0.1')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_style')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='start_arrow')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='end_arrow')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:connections)
+SAX.characters(
+ , 9)
+SAX.startElement(dia:connection, handle='1', to='O2', connection='3')
+SAX.endElement(dia:connection)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:connections)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:object)
+SAX.characters(
+ , 5)
+SAX.startElement(dia:object, type='Standard - Text', version='0', id='O1')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_pos')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='4.8,4.75')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_bb')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:rectangle, val='2.579,3.96359;7.021,4.96359')
+SAX.endElement(dia:rectangle)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='text')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:composite, type='text')
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='string')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:string, val='sdfsdfg')
+SAX.endElement(dia:string)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='font')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:font, name='Courier')
+SAX.endElement(dia:font)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='height')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:real, val='1')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='pos')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:point, val='4.8,4.75')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='color')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:color, val='#000000')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 11)
+SAX.startElement(dia:attribute, name='alignment')
+SAX.characters(
+ , 13)
+SAX.startElement(dia:enum, val='1')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 11)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 9)
+SAX.endElement(dia:composite)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:object)
+SAX.characters(
+ , 5)
+SAX.startElement(dia:object, type='Standard - Box', version='0', id='O2')
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_pos')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='10.95,7.5')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='obj_bb')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:rectangle, val='10.9,7.45;13.05,9.55')
+SAX.endElement(dia:rectangle)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='elem_corner')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:point, val='10.95,7.5')
+SAX.endElement(dia:point)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='elem_width')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='2.05')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='elem_height')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='2')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='border_width')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:real, val='0.1')
+SAX.endElement(dia:real)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='border_color')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:color, val='#000000')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='inner_color')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:color, val='#ffffff')
+SAX.endElement(dia:color)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 7)
+SAX.startElement(dia:attribute, name='line_style')
+SAX.characters(
+ , 9)
+SAX.startElement(dia:enum, val='0')
+SAX.endElement(dia:enum)
+SAX.characters(
+ , 7)
+SAX.endElement(dia:attribute)
+SAX.characters(
+ , 5)
+SAX.endElement(dia:object)
+SAX.characters(
+ , 3)
+SAX.endElement(dia:layer)
+SAX.characters(
+, 1)
+SAX.endElement(dia:diagram)
+SAX.endDocument()
diff --git a/result/dia2.sax2 b/result/dia2.sax2
new file mode 100644
index 0000000..4821c9b
--- /dev/null
+++ b/result/dia2.sax2
@@ -0,0 +1,323 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/', 1, xmlns:dia='http://www.lysator.liu.se/~alla/dia/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(diagramdata, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='back...', 10)
+SAX.characters(
+ , 7)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#fff...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(diagramdata, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.startElementNs(layer, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 2, 0, name='Back...', 10, visible='true...', 4)
+SAX.characters(
+ , 5)
+SAX.startElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, type='Stan...', 15, version='0" i...', 1, id='O0">...', 2)
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 7)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1.95...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 6)
+SAX.characters(
+ , 9)
+SAX.startElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1.9,...', 15)
+SAX.endElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='conn...', 14)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1.95...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#000...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0.1"...', 3)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='star...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='end_...', 9)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(connections, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(connection, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, handle='1" t...', 1, to='O2" ...', 2, connection='3"/>...', 1)
+SAX.endElementNs(connection, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(connections, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, type='Stan...', 15, version='0" i...', 1, id='O1">...', 2)
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 7)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='4.8,...', 8)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 6)
+SAX.characters(
+ , 9)
+SAX.startElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='2.57...', 27)
+SAX.endElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='text...', 4)
+SAX.characters(
+ , 9)
+SAX.startElementNs(composite, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, type='text...', 4)
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='stri...', 6)
+SAX.characters(
+ , 13)
+SAX.startElementNs(string, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='sdfs...', 7)
+SAX.endElementNs(string, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='font...', 4)
+SAX.characters(
+ , 13)
+SAX.startElementNs(font, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='Cour...', 7)
+SAX.endElementNs(font, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='heig...', 6)
+SAX.characters(
+ , 13)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1"/>...', 1)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='pos"...', 3)
+SAX.characters(
+ , 13)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='4.8,...', 8)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='colo...', 5)
+SAX.characters(
+ , 13)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#000...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='alig...', 9)
+SAX.characters(
+ , 13)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='1"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 11)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 9)
+SAX.endElementNs(composite, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 3, 0, type='Stan...', 14, version='0" i...', 1, id='O2">...', 2)
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 7)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='obj_...', 6)
+SAX.characters(
+ , 9)
+SAX.startElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 20)
+SAX.endElementNs(rectangle, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='elem...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='10.9...', 9)
+SAX.endElementNs(point, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='elem...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='2.05...', 4)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='elem...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='2"/>...', 1)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='bord...', 12)
+SAX.characters(
+ , 9)
+SAX.startElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0.1"...', 3)
+SAX.endElementNs(real, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='bord...', 12)
+SAX.characters(
+ , 9)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#000...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='inne...', 11)
+SAX.characters(
+ , 9)
+SAX.startElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='#fff...', 7)
+SAX.endElementNs(color, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.startElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, name='line...', 10)
+SAX.characters(
+ , 9)
+SAX.startElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, val='0"/>...', 1)
+SAX.endElementNs(enum, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(attribute, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 5)
+SAX.endElementNs(object, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(layer, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+, 1)
+SAX.endElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.endDocument()
diff --git a/result/dtd1 b/result/dtd1
new file mode 100644
index 0000000..fb11ffa
--- /dev/null
+++ b/result/dtd1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!DOCTYPE MEMO PUBLIC "-//SGMLSOURCE//DTD MEMO//EN" "http://www.sgmlsource.com/dtds/memo.dtd">
+<MEMO>
+</MEMO>
diff --git a/result/dtd1.rde b/result/dtd1.rde
new file mode 100644
index 0000000..6bb39b8
--- /dev/null
+++ b/result/dtd1.rde
@@ -0,0 +1,5 @@
+0 10 MEMO 0 0
+0 1 MEMO 0 0
+1 14 #text 0 1
+
+0 15 MEMO 0 0
diff --git a/result/dtd1.rdr b/result/dtd1.rdr
new file mode 100644
index 0000000..6bb39b8
--- /dev/null
+++ b/result/dtd1.rdr
@@ -0,0 +1,5 @@
+0 10 MEMO 0 0
+0 1 MEMO 0 0
+1 14 #text 0 1
+
+0 15 MEMO 0 0
diff --git a/result/dtd1.sax b/result/dtd1.sax
new file mode 100644
index 0000000..ef8d6d3
--- /dev/null
+++ b/result/dtd1.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(MEMO, -//SGMLSOURCE//DTD MEMO//EN, http://www.sgmlsource.com/dtds/memo.dtd)
+SAX.externalSubset(MEMO, -//SGMLSOURCE//DTD MEMO//EN, http://www.sgmlsource.com/dtds/memo.dtd)
+SAX.startElement(MEMO)
+SAX.characters(
+, 1)
+SAX.endElement(MEMO)
+SAX.endDocument()
diff --git a/result/dtd1.sax2 b/result/dtd1.sax2
new file mode 100644
index 0000000..47be5e0
--- /dev/null
+++ b/result/dtd1.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(MEMO, -//SGMLSOURCE//DTD MEMO//EN, http://www.sgmlsource.com/dtds/memo.dtd)
+SAX.externalSubset(MEMO, -//SGMLSOURCE//DTD MEMO//EN, http://www.sgmlsource.com/dtds/memo.dtd)
+SAX.startElementNs(MEMO, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.endElementNs(MEMO, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd10 b/result/dtd10
new file mode 100644
index 0000000..8c7d5e7
--- /dev/null
+++ b/result/dtd10
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)+ , c , d)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><c> is a</c><d> valid document</d></doc>
diff --git a/result/dtd10.rde b/result/dtd10.rde
new file mode 100644
index 0000000..1df24c7
--- /dev/null
+++ b/result/dtd10.rde
@@ -0,0 +1,12 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 b 0 0
+2 3 #text 0 1 This
+1 15 b 0 0
+1 1 c 0 0
+2 3 #text 0 1 is a
+1 15 c 0 0
+1 1 d 0 0
+2 3 #text 0 1 valid document
+1 15 d 0 0
+0 15 doc 0 0
diff --git a/result/dtd10.rdr b/result/dtd10.rdr
new file mode 100644
index 0000000..1df24c7
--- /dev/null
+++ b/result/dtd10.rdr
@@ -0,0 +1,12 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 b 0 0
+2 3 #text 0 1 This
+1 15 b 0 0
+1 1 c 0 0
+2 3 #text 0 1 is a
+1 15 c 0 0
+1 1 d 0 0
+2 3 #text 0 1 valid document
+1 15 d 0 0
+0 15 doc 0 0
diff --git a/result/dtd10.sax b/result/dtd10.sax
new file mode 100644
index 0000000..87fd041
--- /dev/null
+++ b/result/dtd10.sax
@@ -0,0 +1,21 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.elementDecl(c, 3, ...)
+SAX.elementDecl(d, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.startElement(b)
+SAX.characters(This, 4)
+SAX.endElement(b)
+SAX.startElement(c)
+SAX.characters( is a, 5)
+SAX.endElement(c)
+SAX.startElement(d)
+SAX.characters( valid document, 15)
+SAX.endElement(d)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd10.sax2 b/result/dtd10.sax2
new file mode 100644
index 0000000..7f15a09
--- /dev/null
+++ b/result/dtd10.sax2
@@ -0,0 +1,21 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.elementDecl(c, 3, ...)
+SAX.elementDecl(d, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.characters(This, 4)
+SAX.endElementNs(b, NULL, NULL)
+SAX.startElementNs(c, NULL, NULL, 0, 0, 0)
+SAX.characters( is a, 5)
+SAX.endElementNs(c, NULL, NULL)
+SAX.startElementNs(d, NULL, NULL, 0, 0, 0)
+SAX.characters( valid document, 15)
+SAX.endElementNs(d, NULL, NULL)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd11 b/result/dtd11
new file mode 100644
index 0000000..e0df8af
--- /dev/null
+++ b/result/dtd11
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc val CDATA #IMPLIED>
+]>
+<doc val="v1"/>
diff --git a/result/dtd11.rde b/result/dtd11.rde
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/dtd11.rde
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/dtd11.rdr b/result/dtd11.rdr
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/dtd11.rdr
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/dtd11.sax b/result/dtd11.sax
new file mode 100644
index 0000000..a2bee0c
--- /dev/null
+++ b/result/dtd11.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 3, ...)
+SAX.attributeDecl(doc, val, 1, 3, NULL, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc, val='v1')
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd11.sax2 b/result/dtd11.sax2
new file mode 100644
index 0000000..a9cae5d
--- /dev/null
+++ b/result/dtd11.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 3, ...)
+SAX.attributeDecl(doc, val, 1, 3, NULL, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 1, 0, val='v1"/...', 2)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd12 b/result/dtd12
new file mode 100644
index 0000000..f0d1261
--- /dev/null
+++ b/result/dtd12
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY YN '"Yes"'>
+<!ENTITY WhatHeSaid "He said &YN;">
+]>
+<doc>&WhatHeSaid;</doc>
diff --git a/result/dtd12.rde b/result/dtd12.rde
new file mode 100644
index 0000000..c2d4cc0
--- /dev/null
+++ b/result/dtd12.rde
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 3 #text 0 1 He said "Yes"
+0 15 doc 0 0
diff --git a/result/dtd12.rdr b/result/dtd12.rdr
new file mode 100644
index 0000000..c394a46
--- /dev/null
+++ b/result/dtd12.rdr
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 5 WhatHeSaid 0 0
+0 15 doc 0 0
diff --git a/result/dtd12.sax b/result/dtd12.sax
new file mode 100644
index 0000000..82054ce
--- /dev/null
+++ b/result/dtd12.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(YN, 1, (null), (null), "Yes")
+SAX.getEntity(YN)
+SAX.entityDecl(WhatHeSaid, 1, (null), (null), He said &YN;)
+SAX.getEntity(WhatHeSaid)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.getEntity(WhatHeSaid)
+SAX.characters(He said , 8)
+SAX.getEntity(YN)
+SAX.characters("Yes", 5)
+SAX.reference(YN)
+SAX.reference(WhatHeSaid)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd12.sax2 b/result/dtd12.sax2
new file mode 100644
index 0000000..8a5d8a4
--- /dev/null
+++ b/result/dtd12.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(YN, 1, (null), (null), "Yes")
+SAX.getEntity(YN)
+SAX.entityDecl(WhatHeSaid, 1, (null), (null), He said &YN;)
+SAX.getEntity(WhatHeSaid)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.getEntity(WhatHeSaid)
+SAX.characters(He said , 8)
+SAX.getEntity(YN)
+SAX.characters("Yes", 5)
+SAX.reference(YN)
+SAX.reference(WhatHeSaid)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd13 b/result/dtd13
new file mode 100644
index 0000000..2814146
--- /dev/null
+++ b/result/dtd13
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- comment before the DTD -->
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<!-- comment after the DTD -->
+<doc/>
diff --git a/result/dtd13.rde b/result/dtd13.rde
new file mode 100644
index 0000000..f567ccb
--- /dev/null
+++ b/result/dtd13.rde
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 comment before the DTD
+0 10 doc 0 0
+0 8 #comment 0 1 comment after the DTD
+0 1 doc 1 0
diff --git a/result/dtd13.rdr b/result/dtd13.rdr
new file mode 100644
index 0000000..f567ccb
--- /dev/null
+++ b/result/dtd13.rdr
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 comment before the DTD
+0 10 doc 0 0
+0 8 #comment 0 1 comment after the DTD
+0 1 doc 1 0
diff --git a/result/dtd13.sax b/result/dtd13.sax
new file mode 100644
index 0000000..5b1245f
--- /dev/null
+++ b/result/dtd13.sax
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( comment before the DTD )
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 2, ...)
+SAX.externalSubset(doc, , )
+SAX.comment( comment after the DTD )
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd13.sax2 b/result/dtd13.sax2
new file mode 100644
index 0000000..b631501
--- /dev/null
+++ b/result/dtd13.sax2
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( comment before the DTD )
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 2, ...)
+SAX.externalSubset(doc, , )
+SAX.comment( comment after the DTD )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd2 b/result/dtd2
new file mode 100644
index 0000000..921fd94
--- /dev/null
+++ b/result/dtd2
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>This is a valid document !</doc>
diff --git a/result/dtd2.rde b/result/dtd2.rde
new file mode 100644
index 0000000..20cbf2a
--- /dev/null
+++ b/result/dtd2.rde
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 3 #text 0 1 This is a valid document !
+0 15 doc 0 0
diff --git a/result/dtd2.rdr b/result/dtd2.rdr
new file mode 100644
index 0000000..20cbf2a
--- /dev/null
+++ b/result/dtd2.rdr
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 3 #text 0 1 This is a valid document !
+0 15 doc 0 0
diff --git a/result/dtd2.sax b/result/dtd2.sax
new file mode 100644
index 0000000..0343486
--- /dev/null
+++ b/result/dtd2.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.characters(This is a valid document !, 26)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd2.sax2 b/result/dtd2.sax2
new file mode 100644
index 0000000..ff6b568
--- /dev/null
+++ b/result/dtd2.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(This is a valid document !, 26)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd3 b/result/dtd3
new file mode 100644
index 0000000..6681ef7
--- /dev/null
+++ b/result/dtd3
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<doc>This is a valid document !</doc>
diff --git a/result/dtd3.rde b/result/dtd3.rde
new file mode 100644
index 0000000..20cbf2a
--- /dev/null
+++ b/result/dtd3.rde
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 3 #text 0 1 This is a valid document !
+0 15 doc 0 0
diff --git a/result/dtd3.rdr b/result/dtd3.rdr
new file mode 100644
index 0000000..20cbf2a
--- /dev/null
+++ b/result/dtd3.rdr
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 3 #text 0 1 This is a valid document !
+0 15 doc 0 0
diff --git a/result/dtd3.sax b/result/dtd3.sax
new file mode 100644
index 0000000..57539d3
--- /dev/null
+++ b/result/dtd3.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 2, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.characters(This is a valid document !, 26)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd3.sax2 b/result/dtd3.sax2
new file mode 100644
index 0000000..9625ad5
--- /dev/null
+++ b/result/dtd3.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 2, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(This is a valid document !, 26)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd4 b/result/dtd4
new file mode 100644
index 0000000..6cf2444
--- /dev/null
+++ b/result/dtd4
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/result/dtd4.rde b/result/dtd4.rde
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/dtd4.rde
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/dtd4.rdr b/result/dtd4.rdr
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/dtd4.rdr
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/dtd4.sax b/result/dtd4.sax
new file mode 100644
index 0000000..cfb4c79
--- /dev/null
+++ b/result/dtd4.sax
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 1, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd4.sax2 b/result/dtd4.sax2
new file mode 100644
index 0000000..8366d48
--- /dev/null
+++ b/result/dtd4.sax2
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 1, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd5 b/result/dtd5
new file mode 100644
index 0000000..5409d51
--- /dev/null
+++ b/result/dtd5
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | a | b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a> is a <b>valid</b> document</doc>
diff --git a/result/dtd5.rde b/result/dtd5.rde
new file mode 100644
index 0000000..66773a3
--- /dev/null
+++ b/result/dtd5.rde
@@ -0,0 +1,11 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 a 0 0
+2 3 #text 0 1 This
+1 15 a 0 0
+1 3 #text 0 1 is a
+1 1 b 0 0
+2 3 #text 0 1 valid
+1 15 b 0 0
+1 3 #text 0 1 document
+0 15 doc 0 0
diff --git a/result/dtd5.rdr b/result/dtd5.rdr
new file mode 100644
index 0000000..66773a3
--- /dev/null
+++ b/result/dtd5.rdr
@@ -0,0 +1,11 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 a 0 0
+2 3 #text 0 1 This
+1 15 a 0 0
+1 3 #text 0 1 is a
+1 1 b 0 0
+2 3 #text 0 1 valid
+1 15 b 0 0
+1 3 #text 0 1 document
+0 15 doc 0 0
diff --git a/result/dtd5.sax b/result/dtd5.sax
new file mode 100644
index 0000000..5dc8db3
--- /dev/null
+++ b/result/dtd5.sax
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 3, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.startElement(a)
+SAX.characters(This, 4)
+SAX.endElement(a)
+SAX.characters( is a , 6)
+SAX.startElement(b)
+SAX.characters(valid, 5)
+SAX.endElement(b)
+SAX.characters( document, 9)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd5.sax2 b/result/dtd5.sax2
new file mode 100644
index 0000000..f48c01c
--- /dev/null
+++ b/result/dtd5.sax2
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 3, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.characters(This, 4)
+SAX.endElementNs(a, NULL, NULL)
+SAX.characters( is a , 6)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.characters(valid, 5)
+SAX.endElementNs(b, NULL, NULL)
+SAX.characters( document, 9)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd6 b/result/dtd6
new file mode 100644
index 0000000..ed2d993
--- /dev/null
+++ b/result/dtd6
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (a | b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a><b> is a valid</b><a> document</a></doc>
diff --git a/result/dtd6.rde b/result/dtd6.rde
new file mode 100644
index 0000000..a941e6a
--- /dev/null
+++ b/result/dtd6.rde
@@ -0,0 +1,12 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 a 0 0
+2 3 #text 0 1 This
+1 15 a 0 0
+1 1 b 0 0
+2 3 #text 0 1 is a valid
+1 15 b 0 0
+1 1 a 0 0
+2 3 #text 0 1 document
+1 15 a 0 0
+0 15 doc 0 0
diff --git a/result/dtd6.rdr b/result/dtd6.rdr
new file mode 100644
index 0000000..a941e6a
--- /dev/null
+++ b/result/dtd6.rdr
@@ -0,0 +1,12 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 a 0 0
+2 3 #text 0 1 This
+1 15 a 0 0
+1 1 b 0 0
+2 3 #text 0 1 is a valid
+1 15 b 0 0
+1 1 a 0 0
+2 3 #text 0 1 document
+1 15 a 0 0
+0 15 doc 0 0
diff --git a/result/dtd6.sax b/result/dtd6.sax
new file mode 100644
index 0000000..e9088d7
--- /dev/null
+++ b/result/dtd6.sax
@@ -0,0 +1,19 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.startElement(a)
+SAX.characters(This, 4)
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.characters( is a valid, 11)
+SAX.endElement(b)
+SAX.startElement(a)
+SAX.characters( document, 9)
+SAX.endElement(a)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd6.sax2 b/result/dtd6.sax2
new file mode 100644
index 0000000..6e78924
--- /dev/null
+++ b/result/dtd6.sax2
@@ -0,0 +1,19 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.characters(This, 4)
+SAX.endElementNs(a, NULL, NULL)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.characters( is a valid, 11)
+SAX.endElementNs(b, NULL, NULL)
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.characters( document, 9)
+SAX.endElementNs(a, NULL, NULL)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd7 b/result/dtd7
new file mode 100644
index 0000000..0a4075f
--- /dev/null
+++ b/result/dtd7
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (a , b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a><b> is a valid document</b></doc>
diff --git a/result/dtd7.rde b/result/dtd7.rde
new file mode 100644
index 0000000..a477613
--- /dev/null
+++ b/result/dtd7.rde
@@ -0,0 +1,9 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 a 0 0
+2 3 #text 0 1 This
+1 15 a 0 0
+1 1 b 0 0
+2 3 #text 0 1 is a valid document
+1 15 b 0 0
+0 15 doc 0 0
diff --git a/result/dtd7.rdr b/result/dtd7.rdr
new file mode 100644
index 0000000..a477613
--- /dev/null
+++ b/result/dtd7.rdr
@@ -0,0 +1,9 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 a 0 0
+2 3 #text 0 1 This
+1 15 a 0 0
+1 1 b 0 0
+2 3 #text 0 1 is a valid document
+1 15 b 0 0
+0 15 doc 0 0
diff --git a/result/dtd7.sax b/result/dtd7.sax
new file mode 100644
index 0000000..dbf6e5f
--- /dev/null
+++ b/result/dtd7.sax
@@ -0,0 +1,16 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.startElement(a)
+SAX.characters(This, 4)
+SAX.endElement(a)
+SAX.startElement(b)
+SAX.characters( is a valid document, 20)
+SAX.endElement(b)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd7.sax2 b/result/dtd7.sax2
new file mode 100644
index 0000000..4a47191
--- /dev/null
+++ b/result/dtd7.sax2
@@ -0,0 +1,16 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.characters(This, 4)
+SAX.endElementNs(a, NULL, NULL)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.characters( is a valid document, 20)
+SAX.endElementNs(b, NULL, NULL)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd8 b/result/dtd8
new file mode 100644
index 0000000..7a655f9
--- /dev/null
+++ b/result/dtd8
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b) , (c | d))+>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><c> is a valid document</c></doc>
diff --git a/result/dtd8.rde b/result/dtd8.rde
new file mode 100644
index 0000000..15ee010
--- /dev/null
+++ b/result/dtd8.rde
@@ -0,0 +1,9 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 b 0 0
+2 3 #text 0 1 This
+1 15 b 0 0
+1 1 c 0 0
+2 3 #text 0 1 is a valid document
+1 15 c 0 0
+0 15 doc 0 0
diff --git a/result/dtd8.rdr b/result/dtd8.rdr
new file mode 100644
index 0000000..15ee010
--- /dev/null
+++ b/result/dtd8.rdr
@@ -0,0 +1,9 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 b 0 0
+2 3 #text 0 1 This
+1 15 b 0 0
+1 1 c 0 0
+2 3 #text 0 1 is a valid document
+1 15 c 0 0
+0 15 doc 0 0
diff --git a/result/dtd8.sax b/result/dtd8.sax
new file mode 100644
index 0000000..fd949a2
--- /dev/null
+++ b/result/dtd8.sax
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.elementDecl(c, 3, ...)
+SAX.elementDecl(d, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.startElement(b)
+SAX.characters(This, 4)
+SAX.endElement(b)
+SAX.startElement(c)
+SAX.characters( is a valid document, 20)
+SAX.endElement(c)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd8.sax2 b/result/dtd8.sax2
new file mode 100644
index 0000000..d38b60d
--- /dev/null
+++ b/result/dtd8.sax2
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.elementDecl(c, 3, ...)
+SAX.elementDecl(d, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.characters(This, 4)
+SAX.endElementNs(b, NULL, NULL)
+SAX.startElementNs(c, NULL, NULL, 0, 0, 0)
+SAX.characters( is a valid document, 20)
+SAX.endElementNs(c, NULL, NULL)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/dtd9 b/result/dtd9
new file mode 100644
index 0000000..89cc1d4
--- /dev/null
+++ b/result/dtd9
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b | c) , d)?>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><d> is a valid document</d></doc>
diff --git a/result/dtd9.rde b/result/dtd9.rde
new file mode 100644
index 0000000..2e2b2e9
--- /dev/null
+++ b/result/dtd9.rde
@@ -0,0 +1,9 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 b 0 0
+2 3 #text 0 1 This
+1 15 b 0 0
+1 1 d 0 0
+2 3 #text 0 1 is a valid document
+1 15 d 0 0
+0 15 doc 0 0
diff --git a/result/dtd9.rdr b/result/dtd9.rdr
new file mode 100644
index 0000000..2e2b2e9
--- /dev/null
+++ b/result/dtd9.rdr
@@ -0,0 +1,9 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 1 b 0 0
+2 3 #text 0 1 This
+1 15 b 0 0
+1 1 d 0 0
+2 3 #text 0 1 is a valid document
+1 15 d 0 0
+0 15 doc 0 0
diff --git a/result/dtd9.sax b/result/dtd9.sax
new file mode 100644
index 0000000..738f4d3
--- /dev/null
+++ b/result/dtd9.sax
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.elementDecl(c, 3, ...)
+SAX.elementDecl(d, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.startElement(b)
+SAX.characters(This, 4)
+SAX.endElement(b)
+SAX.startElement(d)
+SAX.characters( is a valid document, 20)
+SAX.endElement(d)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/dtd9.sax2 b/result/dtd9.sax2
new file mode 100644
index 0000000..a5b537f
--- /dev/null
+++ b/result/dtd9.sax2
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.elementDecl(doc, 4, ...)
+SAX.elementDecl(a, 3, ...)
+SAX.elementDecl(b, 3, ...)
+SAX.elementDecl(c, 3, ...)
+SAX.elementDecl(d, 3, ...)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.characters(This, 4)
+SAX.endElementNs(b, NULL, NULL)
+SAX.startElementNs(d, NULL, NULL, 0, 0, 0)
+SAX.characters( is a valid document, 20)
+SAX.endElementNs(d, NULL, NULL)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ebcdic_566012.xml b/result/ebcdic_566012.xml
new file mode 100644
index 0000000..153add5
--- /dev/null
+++ b/result/ebcdic_566012.xml
@@ -0,0 +1 @@
+Lo§”“@¥…™¢‰–•~ñKð@…•ƒ–„‰•‡~ÉÂÔ`ññôñon%L£…¢£@££™~JàZan% \ No newline at end of file
diff --git a/result/ebcdic_566012.xml.rde b/result/ebcdic_566012.xml.rde
new file mode 100644
index 0000000..efbc18b
--- /dev/null
+++ b/result/ebcdic_566012.xml.rde
@@ -0,0 +1 @@
+0 1 test 1 0
diff --git a/result/ebcdic_566012.xml.rdr b/result/ebcdic_566012.xml.rdr
new file mode 100644
index 0000000..efbc18b
--- /dev/null
+++ b/result/ebcdic_566012.xml.rdr
@@ -0,0 +1 @@
+0 1 test 1 0
diff --git a/result/ebcdic_566012.xml.sax b/result/ebcdic_566012.xml.sax
new file mode 100644
index 0000000..7ec6d5a
--- /dev/null
+++ b/result/ebcdic_566012.xml.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(test, attr='ÄÖÜ')
+SAX.endElement(test)
+SAX.endDocument()
diff --git a/result/ebcdic_566012.xml.sax2 b/result/ebcdic_566012.xml.sax2
new file mode 100644
index 0000000..b8a4ce0
--- /dev/null
+++ b/result/ebcdic_566012.xml.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(test, NULL, NULL, 0, 1, 0, attr='ÄÖ...', 6)
+SAX.endElementNs(test, NULL, NULL)
+SAX.endDocument()
diff --git a/result/emptycdata.xml b/result/emptycdata.xml
new file mode 100644
index 0000000..bc98388
--- /dev/null
+++ b/result/emptycdata.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<![CDATA[]]>
+</html>
diff --git a/result/emptycdata.xml.rde b/result/emptycdata.xml.rde
new file mode 100644
index 0000000..1c8b74f
--- /dev/null
+++ b/result/emptycdata.xml.rde
@@ -0,0 +1,7 @@
+0 1 html 0 0
+1 14 #text 0 1
+
+1 4 #cdata-section 0 1
+1 14 #text 0 1
+
+0 15 html 0 0
diff --git a/result/emptycdata.xml.rdr b/result/emptycdata.xml.rdr
new file mode 100644
index 0000000..1c8b74f
--- /dev/null
+++ b/result/emptycdata.xml.rdr
@@ -0,0 +1,7 @@
+0 1 html 0 0
+1 14 #text 0 1
+
+1 4 #cdata-section 0 1
+1 14 #text 0 1
+
+0 15 html 0 0
diff --git a/result/emptycdata.xml.sax b/result/emptycdata.xml.sax
new file mode 100644
index 0000000..39587c6
--- /dev/null
+++ b/result/emptycdata.xml.sax
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(html, xmlns='http://www.w3.org/1999/xhtml')
+SAX.characters(
+, 1)
+SAX.pcdata(, 0)
+SAX.characters(
+, 1)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/emptycdata.xml.sax2 b/result/emptycdata.xml.sax2
new file mode 100644
index 0000000..7f80296
--- /dev/null
+++ b/result/emptycdata.xml.sax2
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(html, NULL, 'http://www.w3.org/1999/xhtml', 1, xmlns='http://www.w3.org/1999/xhtml', 0, 0)
+SAX.characters(
+, 1)
+SAX.pcdata(, 0)
+SAX.characters(
+, 1)
+SAX.endElementNs(html, NULL, 'http://www.w3.org/1999/xhtml')
+SAX.endDocument()
diff --git a/result/ent1 b/result/ent1
new file mode 100644
index 0000000..3e24756
--- /dev/null
+++ b/result/ent1
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE>
+ &xml;
+</EXAMPLE>
diff --git a/result/ent1.rde b/result/ent1.rde
new file mode 100644
index 0000000..d806d24
--- /dev/null
+++ b/result/ent1.rde
@@ -0,0 +1,6 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ Extensible Markup Language
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent1.rdr b/result/ent1.rdr
new file mode 100644
index 0000000..9f9c2cc
--- /dev/null
+++ b/result/ent1.rdr
@@ -0,0 +1,8 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 14 #text 0 1
+
+1 5 xml 0 0
+1 14 #text 0 1
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent1.sax b/result/ent1.sax
new file mode 100644
index 0000000..1d5334f
--- /dev/null
+++ b/result/ent1.sax
@@ -0,0 +1,16 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.startElement(EXAMPLE)
+SAX.characters(
+ , 5)
+SAX.getEntity(xml)
+SAX.characters(Extensible Markup Language, 26)
+SAX.reference(xml)
+SAX.characters(
+, 1)
+SAX.endElement(EXAMPLE)
+SAX.endDocument()
diff --git a/result/ent1.sax2 b/result/ent1.sax2
new file mode 100644
index 0000000..573f485
--- /dev/null
+++ b/result/ent1.sax2
@@ -0,0 +1,16 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.startElementNs(EXAMPLE, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.getEntity(xml)
+SAX.characters(Extensible Markup Language, 26)
+SAX.reference(xml)
+SAX.characters(
+, 1)
+SAX.endElementNs(EXAMPLE, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent10 b/result/ent10
new file mode 100644
index 0000000..c46d19f
--- /dev/null
+++ b/result/ent10
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE rnode [
+<!ELEMENT rnode (f)>
+<!ELEMENT f (#PCDATA)>
+<!ATTLIST f att1 CDATA #FIXED "J">
+<!ENTITY f "
+ <f>
+ hello world
+ </f>
+ ">
+]>
+<rnode>
+ &f;
+</rnode>
diff --git a/result/ent10.rde b/result/ent10.rde
new file mode 100644
index 0000000..e69594c
--- /dev/null
+++ b/result/ent10.rde
@@ -0,0 +1,14 @@
+0 10 rnode 0 0
+0 1 rnode 0 0
+1 14 #text 0 1
+
+
+1 1 f 0 0
+2 3 #text 0 1
+ hello world
+
+1 15 f 0 0
+1 14 #text 0 1
+
+
+0 15 rnode 0 0
diff --git a/result/ent10.rdr b/result/ent10.rdr
new file mode 100644
index 0000000..34edb50
--- /dev/null
+++ b/result/ent10.rdr
@@ -0,0 +1,8 @@
+0 10 rnode 0 0
+0 1 rnode 0 0
+1 14 #text 0 1
+
+1 5 f 0 0
+1 14 #text 0 1
+
+0 15 rnode 0 0
diff --git a/result/ent10.sax b/result/ent10.sax
new file mode 100644
index 0000000..75ed20a
--- /dev/null
+++ b/result/ent10.sax
@@ -0,0 +1,31 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(rnode, , )
+SAX.elementDecl(rnode, 4, ...)
+SAX.elementDecl(f, 3, ...)
+SAX.attributeDecl(f, att1, 1, 4, J, ...)
+SAX.entityDecl(f, 1, (null), (null),
+ <f>
+ hello world
+ </f>
+ )
+SAX.getEntity(f)
+SAX.externalSubset(rnode, , )
+SAX.startElement(rnode)
+SAX.characters(
+ , 4)
+SAX.getEntity(f)
+SAX.ignorableWhitespace(
+ , 4)
+SAX.startElement(f)
+SAX.characters(
+ hello world
+ , 19)
+SAX.endElement(f)
+SAX.characters(
+ , 4)
+SAX.reference(f)
+SAX.characters(
+, 1)
+SAX.endElement(rnode)
+SAX.endDocument()
diff --git a/result/ent10.sax2 b/result/ent10.sax2
new file mode 100644
index 0000000..7a379fc
--- /dev/null
+++ b/result/ent10.sax2
@@ -0,0 +1,31 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(rnode, , )
+SAX.elementDecl(rnode, 4, ...)
+SAX.elementDecl(f, 3, ...)
+SAX.attributeDecl(f, att1, 1, 4, J, ...)
+SAX.entityDecl(f, 1, (null), (null),
+ <f>
+ hello world
+ </f>
+ )
+SAX.getEntity(f)
+SAX.externalSubset(rnode, , )
+SAX.startElementNs(rnode, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 4)
+SAX.getEntity(f)
+SAX.ignorableWhitespace(
+ , 4)
+SAX.startElementNs(f, NULL, NULL, 0, 1, 1, att1='J...', 1)
+SAX.characters(
+ hello world
+ , 19)
+SAX.endElementNs(f, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.reference(f)
+SAX.characters(
+, 1)
+SAX.endElementNs(rnode, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent11 b/result/ent11
new file mode 100644
index 0000000..7eee023
--- /dev/null
+++ b/result/ent11
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE doc [
+<!ENTITY newl "&#13;">
+]>
+<doc>&newl;</doc>
diff --git a/result/ent11.rde b/result/ent11.rde
new file mode 100644
index 0000000..f6c3c27
--- /dev/null
+++ b/result/ent11.rde
@@ -0,0 +1,5 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/ent11.rdr b/result/ent11.rdr
new file mode 100644
index 0000000..54a754a
--- /dev/null
+++ b/result/ent11.rdr
@@ -0,0 +1,4 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 5 newl 0 0
+0 15 doc 0 0
diff --git a/result/ent11.sax b/result/ent11.sax
new file mode 100644
index 0000000..4e36a6b
--- /dev/null
+++ b/result/ent11.sax
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(newl, 1, (null), (null), )
+SAX.getEntity(newl)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.getEntity(newl)
+SAX.characters(
+, 1)
+SAX.reference(newl)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/ent11.sax2 b/result/ent11.sax2
new file mode 100644
index 0000000..e80778f
--- /dev/null
+++ b/result/ent11.sax2
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(newl, 1, (null), (null), )
+SAX.getEntity(newl)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.getEntity(newl)
+SAX.characters(
+, 1)
+SAX.reference(newl)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent12 b/result/ent12
new file mode 100644
index 0000000..f603c59
--- /dev/null
+++ b/result/ent12
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ENTITY foo "abc">
+<!ENTITY bar "def">
+]>
+<root attribute="&foo;">
+ <element>&bar;</element>
+</root>
diff --git a/result/ent12.rde b/result/ent12.rde
new file mode 100644
index 0000000..483547b
--- /dev/null
+++ b/result/ent12.rde
@@ -0,0 +1,10 @@
+0 10 root 0 0
+0 1 root 0 0
+1 14 #text 0 1
+
+1 1 element 0 0
+2 3 #text 0 1 def
+1 15 element 0 0
+1 14 #text 0 1
+
+0 15 root 0 0
diff --git a/result/ent12.rdr b/result/ent12.rdr
new file mode 100644
index 0000000..884c1fe
--- /dev/null
+++ b/result/ent12.rdr
@@ -0,0 +1,10 @@
+0 10 root 0 0
+0 1 root 0 0
+1 14 #text 0 1
+
+1 1 element 0 0
+2 5 bar 0 0
+1 15 element 0 0
+1 14 #text 0 1
+
+0 15 root 0 0
diff --git a/result/ent12.sax b/result/ent12.sax
new file mode 100644
index 0000000..84322d2
--- /dev/null
+++ b/result/ent12.sax
@@ -0,0 +1,21 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(root, , )
+SAX.entityDecl(foo, 1, (null), (null), abc)
+SAX.getEntity(foo)
+SAX.entityDecl(bar, 1, (null), (null), def)
+SAX.getEntity(bar)
+SAX.externalSubset(root, , )
+SAX.getEntity(foo)
+SAX.startElement(root, attribute='&foo;')
+SAX.characters(
+ , 4)
+SAX.startElement(element)
+SAX.getEntity(bar)
+SAX.characters(def, 3)
+SAX.reference(bar)
+SAX.endElement(element)
+SAX.characters(
+, 1)
+SAX.endElement(root)
+SAX.endDocument()
diff --git a/result/ent12.sax2 b/result/ent12.sax2
new file mode 100644
index 0000000..881fedd
--- /dev/null
+++ b/result/ent12.sax2
@@ -0,0 +1,21 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(root, , )
+SAX.entityDecl(foo, 1, (null), (null), abc)
+SAX.getEntity(foo)
+SAX.entityDecl(bar, 1, (null), (null), def)
+SAX.getEntity(bar)
+SAX.externalSubset(root, , )
+SAX.getEntity(foo)
+SAX.startElementNs(root, NULL, NULL, 0, 1, 0, attribute='&foo...', 5)
+SAX.characters(
+ , 4)
+SAX.startElementNs(element, NULL, NULL, 0, 0, 0)
+SAX.getEntity(bar)
+SAX.characters(def, 3)
+SAX.reference(bar)
+SAX.endElementNs(element, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(root, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent13 b/result/ent13
new file mode 100644
index 0000000..8dd96c9
--- /dev/null
+++ b/result/ent13
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ENTITY ampproblem "&amp;">
+]>
+<t a="&ampproblem;">a</t>
diff --git a/result/ent13.rde b/result/ent13.rde
new file mode 100644
index 0000000..d9227fc
--- /dev/null
+++ b/result/ent13.rde
@@ -0,0 +1,4 @@
+0 10 test 0 0
+0 1 t 0 0
+1 3 #text 0 1 a
+0 15 t 0 0
diff --git a/result/ent13.rdr b/result/ent13.rdr
new file mode 100644
index 0000000..d9227fc
--- /dev/null
+++ b/result/ent13.rdr
@@ -0,0 +1,4 @@
+0 10 test 0 0
+0 1 t 0 0
+1 3 #text 0 1 a
+0 15 t 0 0
diff --git a/result/ent13.sax b/result/ent13.sax
new file mode 100644
index 0000000..5e4bb44
--- /dev/null
+++ b/result/ent13.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(test, , )
+SAX.entityDecl(ampproblem, 1, (null), (null), &amp;)
+SAX.getEntity(ampproblem)
+SAX.externalSubset(test, , )
+SAX.getEntity(ampproblem)
+SAX.startElement(t, a='&ampproblem;')
+SAX.characters(a, 1)
+SAX.endElement(t)
+SAX.endDocument()
diff --git a/result/ent13.sax2 b/result/ent13.sax2
new file mode 100644
index 0000000..3414da6
--- /dev/null
+++ b/result/ent13.sax2
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(test, , )
+SAX.entityDecl(ampproblem, 1, (null), (null), &amp;)
+SAX.getEntity(ampproblem)
+SAX.externalSubset(test, , )
+SAX.getEntity(ampproblem)
+SAX.startElementNs(t, NULL, NULL, 0, 1, 0, a='&amp...', 12)
+SAX.characters(a, 1)
+SAX.endElementNs(t, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent2 b/result/ent2
new file mode 100644
index 0000000..2b4137c
--- /dev/null
+++ b/result/ent2
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+<!ENTITY title PUBLIC "-//MY-TITLE//FR" "title.xml">
+<!ENTITY image SYSTEM "img.gif" NDATA GIF>
+]>
+<EXAMPLE>
+ &title;
+ This text is about XML, the &xml; and this is an embedded <IMG src="image"/>
+</EXAMPLE>
diff --git a/result/ent2.rde b/result/ent2.rde
new file mode 100644
index 0000000..7fe3aa8
--- /dev/null
+++ b/result/ent2.rde
@@ -0,0 +1,15 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 14 #text 0 1
+
+
+1 1 title 0 0
+2 3 #text 0 1 my title
+1 15 title 0 0
+1 3 #text 0 1
+
+ This text is about XML, the Extensible Markup Language and this is an embedded
+1 1 IMG 1 0
+1 14 #text 0 1
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent2.rdr b/result/ent2.rdr
new file mode 100644
index 0000000..6c2e761
--- /dev/null
+++ b/result/ent2.rdr
@@ -0,0 +1,13 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 14 #text 0 1
+
+1 5 title 0 0
+1 3 #text 0 1
+ This text is about XML, the
+1 5 xml 0 0
+1 3 #text 0 1 and this is an embedded
+1 1 IMG 1 0
+1 14 #text 0 1
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent2.sax b/result/ent2.sax
new file mode 100644
index 0000000..07d2ce4
--- /dev/null
+++ b/result/ent2.sax
@@ -0,0 +1,26 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.entityDecl(title, 2, -//MY-TITLE//FR, title.xml, (null))
+SAX.unparsedEntityDecl(image, (null), img.gif, GIF)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.startElement(EXAMPLE)
+SAX.characters(
+ , 3)
+SAX.getEntity(title)
+SAX.error: Entity 'title' not defined
+SAX.reference(title)
+SAX.characters(
+ This text is about XML, the, 31)
+SAX.getEntity(xml)
+SAX.characters(Extensible Markup Language, 26)
+SAX.reference(xml)
+SAX.characters( and this is an embedded , 25)
+SAX.startElement(IMG, src='image')
+SAX.endElement(IMG)
+SAX.characters(
+, 1)
+SAX.endElement(EXAMPLE)
+SAX.endDocument()
diff --git a/result/ent2.sax2 b/result/ent2.sax2
new file mode 100644
index 0000000..d7c8002
--- /dev/null
+++ b/result/ent2.sax2
@@ -0,0 +1,26 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.entityDecl(title, 2, -//MY-TITLE//FR, title.xml, (null))
+SAX.unparsedEntityDecl(image, (null), img.gif, GIF)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.startElementNs(EXAMPLE, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.getEntity(title)
+SAX.error: Entity 'title' not defined
+SAX.reference(title)
+SAX.characters(
+ This text is about XML, the, 31)
+SAX.getEntity(xml)
+SAX.characters(Extensible Markup Language, 26)
+SAX.reference(xml)
+SAX.characters( and this is an embedded , 25)
+SAX.startElementNs(IMG, NULL, NULL, 0, 1, 0, src='imag...', 5)
+SAX.endElementNs(IMG, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(EXAMPLE, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent3 b/result/ent3
new file mode 100644
index 0000000..7fb4c7b
--- /dev/null
+++ b/result/ent3
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE prop1="a&amp;b" prop2="&xml;">
+ Test of entities in attributes.
+</EXAMPLE>
diff --git a/result/ent3.rde b/result/ent3.rde
new file mode 100644
index 0000000..740442d
--- /dev/null
+++ b/result/ent3.rde
@@ -0,0 +1,6 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ Test of entities in attributes.
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent3.rdr b/result/ent3.rdr
new file mode 100644
index 0000000..740442d
--- /dev/null
+++ b/result/ent3.rdr
@@ -0,0 +1,6 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ Test of entities in attributes.
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent3.sax b/result/ent3.sax
new file mode 100644
index 0000000..407d24b
--- /dev/null
+++ b/result/ent3.sax
@@ -0,0 +1,12 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.getEntity(xml)
+SAX.startElement(EXAMPLE, prop1='a&#38;b', prop2='&xml;')
+SAX.characters(
+ Test of entities in attribu, 35)
+SAX.endElement(EXAMPLE)
+SAX.endDocument()
diff --git a/result/ent3.sax2 b/result/ent3.sax2
new file mode 100644
index 0000000..de5ff15
--- /dev/null
+++ b/result/ent3.sax2
@@ -0,0 +1,12 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.getEntity(xml)
+SAX.startElementNs(EXAMPLE, NULL, NULL, 0, 2, 0, prop1='a&#3...', 7, prop2='&xml...', 5)
+SAX.characters(
+ Test of entities in attribu, 35)
+SAX.endElementNs(EXAMPLE, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent4 b/result/ent4
new file mode 100644
index 0000000..a92194c
--- /dev/null
+++ b/result/ent4
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE>
+ Test of &amp;amp; behaviour a&amp;b .
+</EXAMPLE>
diff --git a/result/ent4.rde b/result/ent4.rde
new file mode 100644
index 0000000..7b65485
--- /dev/null
+++ b/result/ent4.rde
@@ -0,0 +1,6 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ Test of &amp; behaviour a&b .
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent4.rdr b/result/ent4.rdr
new file mode 100644
index 0000000..7b65485
--- /dev/null
+++ b/result/ent4.rdr
@@ -0,0 +1,6 @@
+0 10 EXAMPLE 0 0
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ Test of &amp; behaviour a&b .
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent4.sax b/result/ent4.sax
new file mode 100644
index 0000000..20bc28e
--- /dev/null
+++ b/result/ent4.sax
@@ -0,0 +1,16 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.startElement(EXAMPLE)
+SAX.characters(
+ Test of , 11)
+SAX.characters(&, 1)
+SAX.characters(amp; behaviour a, 16)
+SAX.characters(&, 1)
+SAX.characters(b .
+, 4)
+SAX.endElement(EXAMPLE)
+SAX.endDocument()
diff --git a/result/ent4.sax2 b/result/ent4.sax2
new file mode 100644
index 0000000..b0a6b08
--- /dev/null
+++ b/result/ent4.sax2
@@ -0,0 +1,16 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(EXAMPLE, , example.dtd)
+SAX.entityDecl(xml, 1, (null), (null), Extensible Markup Language)
+SAX.getEntity(xml)
+SAX.externalSubset(EXAMPLE, , example.dtd)
+SAX.startElementNs(EXAMPLE, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ Test of , 11)
+SAX.characters(&, 1)
+SAX.characters(amp; behaviour a, 16)
+SAX.characters(&, 1)
+SAX.characters(b .
+, 4)
+SAX.endElementNs(EXAMPLE, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent5 b/result/ent5
new file mode 100644
index 0000000..16e7e10
--- /dev/null
+++ b/result/ent5
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<EXAMPLE>
+ This is an inverted exclamation sign &#xA1;
+ This is a space
+</EXAMPLE>
diff --git a/result/ent5.rde b/result/ent5.rde
new file mode 100644
index 0000000..c570c31
--- /dev/null
+++ b/result/ent5.rde
@@ -0,0 +1,6 @@
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ This is an inverted exclamation sign ¡
+ This is a space
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent5.rdr b/result/ent5.rdr
new file mode 100644
index 0000000..c570c31
--- /dev/null
+++ b/result/ent5.rdr
@@ -0,0 +1,6 @@
+0 1 EXAMPLE 0 0
+1 3 #text 0 1
+ This is an inverted exclamation sign ¡
+ This is a space
+
+0 15 EXAMPLE 0 0
diff --git a/result/ent5.sax b/result/ent5.sax
new file mode 100644
index 0000000..7ad8b65
--- /dev/null
+++ b/result/ent5.sax
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(EXAMPLE)
+SAX.characters(
+ This is an inverted excla, 42)
+SAX.characters(¡, 2)
+SAX.characters(
+ This is a space , 21)
+SAX.characters( , 1)
+SAX.characters(
+, 2)
+SAX.endElement(EXAMPLE)
+SAX.endDocument()
diff --git a/result/ent5.sax2 b/result/ent5.sax2
new file mode 100644
index 0000000..f7251e4
--- /dev/null
+++ b/result/ent5.sax2
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(EXAMPLE, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ This is an inverted excla, 42)
+SAX.characters(¡, 2)
+SAX.characters(
+ This is a space , 21)
+SAX.characters( , 1)
+SAX.characters(
+, 2)
+SAX.endElementNs(EXAMPLE, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent6 b/result/ent6
new file mode 100644
index 0000000..047f9bb
--- /dev/null
+++ b/result/ent6
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]>
+<doc/>
diff --git a/result/ent6.rde b/result/ent6.rde
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/ent6.rde
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/ent6.rdr b/result/ent6.rdr
new file mode 100644
index 0000000..9b0a34d
--- /dev/null
+++ b/result/ent6.rdr
@@ -0,0 +1,2 @@
+0 10 doc 0 0
+0 1 doc 1 0
diff --git a/result/ent6.sax b/result/ent6.sax
new file mode 100644
index 0000000..a4426e7
--- /dev/null
+++ b/result/ent6.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(lt, 1, (null), (null), &#60;)
+SAX.getEntity(lt)
+SAX.entityDecl(gt, 1, (null), (null), >)
+SAX.getEntity(gt)
+SAX.entityDecl(amp, 1, (null), (null), &#38;)
+SAX.getEntity(amp)
+SAX.entityDecl(apos, 1, (null), (null), ')
+SAX.getEntity(apos)
+SAX.entityDecl(quot, 1, (null), (null), ")
+SAX.getEntity(quot)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/ent6.sax2 b/result/ent6.sax2
new file mode 100644
index 0000000..a70d0bb
--- /dev/null
+++ b/result/ent6.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(lt, 1, (null), (null), &#60;)
+SAX.getEntity(lt)
+SAX.entityDecl(gt, 1, (null), (null), >)
+SAX.getEntity(gt)
+SAX.entityDecl(amp, 1, (null), (null), &#38;)
+SAX.getEntity(amp)
+SAX.entityDecl(apos, 1, (null), (null), ')
+SAX.getEntity(apos)
+SAX.entityDecl(quot, 1, (null), (null), ")
+SAX.getEntity(quot)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent7 b/result/ent7
new file mode 100644
index 0000000..f46d8bb
--- /dev/null
+++ b/result/ent7
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE item [
+<!ENTITY % sampleEnt "<!ELEMENT item (para)+>">
+<!ENTITY sampleEnt "the hyacinth girl">
+<!ELEMENT item (para)+>
+<!ELEMENT para (#PCDATA)>
+]>
+<item><para>'they called me &sampleEnt;'</para></item>
diff --git a/result/ent7.rde b/result/ent7.rde
new file mode 100644
index 0000000..fa74b0f
--- /dev/null
+++ b/result/ent7.rde
@@ -0,0 +1,6 @@
+0 10 item 0 0
+0 1 item 0 0
+1 1 para 0 0
+2 3 #text 0 1 'they called me the hyacinth girl'
+1 15 para 0 0
+0 15 item 0 0
diff --git a/result/ent7.rdr b/result/ent7.rdr
new file mode 100644
index 0000000..937a848
--- /dev/null
+++ b/result/ent7.rdr
@@ -0,0 +1,8 @@
+0 10 item 0 0
+0 1 item 0 0
+1 1 para 0 0
+2 3 #text 0 1 'they called me
+2 5 sampleEnt 0 0
+2 3 #text 0 1 '
+1 15 para 0 0
+0 15 item 0 0
diff --git a/result/ent7.sax b/result/ent7.sax
new file mode 100644
index 0000000..3228de3
--- /dev/null
+++ b/result/ent7.sax
@@ -0,0 +1,17 @@
+xmlSAXUserParseFile returned error 27
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(item, , )
+SAX.entityDecl(sampleEnt, 4, (null), (null), <!ELEMENT item (para)+>)
+SAX.getParameterEntity(sampleEnt)
+SAX.entityDecl(sampleEnt, 1, (null), (null), the hyacinth girl)
+SAX.getEntity(sampleEnt)
+SAX.getParameterEntity(sampleEnt)
+SAX.error: PEReference: %sampleEnt; not found
+SAX.characters('they called me , 16)
+SAX.getEntity(sampleEnt)
+SAX.error: Entity 'sampleEnt' not defined
+SAX.reference(sampleEnt)
+SAX.characters(', 1)
+SAX.endDocument()
+xmlSAXUserParseFile returned error 27
diff --git a/result/ent7.sax2 b/result/ent7.sax2
new file mode 100644
index 0000000..3228de3
--- /dev/null
+++ b/result/ent7.sax2
@@ -0,0 +1,17 @@
+xmlSAXUserParseFile returned error 27
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(item, , )
+SAX.entityDecl(sampleEnt, 4, (null), (null), <!ELEMENT item (para)+>)
+SAX.getParameterEntity(sampleEnt)
+SAX.entityDecl(sampleEnt, 1, (null), (null), the hyacinth girl)
+SAX.getEntity(sampleEnt)
+SAX.getParameterEntity(sampleEnt)
+SAX.error: PEReference: %sampleEnt; not found
+SAX.characters('they called me , 16)
+SAX.getEntity(sampleEnt)
+SAX.error: Entity 'sampleEnt' not defined
+SAX.reference(sampleEnt)
+SAX.characters(', 1)
+SAX.endDocument()
+xmlSAXUserParseFile returned error 27
diff --git a/result/ent8 b/result/ent8
new file mode 100644
index 0000000..86e6c30
--- /dev/null
+++ b/result/ent8
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY test1 "test 1">
+<!ENTITY test2 "test 2">
+]>
+<doc>
+ <Content>Reten&#xE7;&#xE3;o</Content>
+ <Content>&lt;&gt;</Content>
+ <Content>&test1;&test2;</Content>
+</doc>
diff --git a/result/ent8.rde b/result/ent8.rde
new file mode 100644
index 0000000..fb87667
--- /dev/null
+++ b/result/ent8.rde
@@ -0,0 +1,20 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 Content 0 0
+2 3 #text 0 1 Retenção
+1 15 Content 0 0
+1 14 #text 0 1
+
+1 1 Content 0 0
+2 3 #text 0 1 <>
+1 15 Content 0 0
+1 14 #text 0 1
+
+1 1 Content 0 0
+2 3 #text 0 1 test 1test 2
+1 15 Content 0 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/ent8.rdr b/result/ent8.rdr
new file mode 100644
index 0000000..0977e90
--- /dev/null
+++ b/result/ent8.rdr
@@ -0,0 +1,21 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 Content 0 0
+2 3 #text 0 1 Retenção
+1 15 Content 0 0
+1 14 #text 0 1
+
+1 1 Content 0 0
+2 3 #text 0 1 <>
+1 15 Content 0 0
+1 14 #text 0 1
+
+1 1 Content 0 0
+2 5 test1 0 0
+2 5 test2 0 0
+1 15 Content 0 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/ent8.sax b/result/ent8.sax
new file mode 100644
index 0000000..4639441
--- /dev/null
+++ b/result/ent8.sax
@@ -0,0 +1,37 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(test1, 1, (null), (null), test 1)
+SAX.getEntity(test1)
+SAX.entityDecl(test2, 1, (null), (null), test 2)
+SAX.getEntity(test2)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.characters(
+ , 4)
+SAX.startElement(Content)
+SAX.characters(Reten, 5)
+SAX.characters(ç, 2)
+SAX.characters(ã, 2)
+SAX.characters(o, 1)
+SAX.endElement(Content)
+SAX.characters(
+ , 4)
+SAX.startElement(Content)
+SAX.characters(<, 1)
+SAX.characters(>, 1)
+SAX.endElement(Content)
+SAX.characters(
+ , 4)
+SAX.startElement(Content)
+SAX.getEntity(test1)
+SAX.characters(test 1, 6)
+SAX.reference(test1)
+SAX.getEntity(test2)
+SAX.characters(test 2, 6)
+SAX.reference(test2)
+SAX.endElement(Content)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/ent8.sax2 b/result/ent8.sax2
new file mode 100644
index 0000000..301f9a4
--- /dev/null
+++ b/result/ent8.sax2
@@ -0,0 +1,37 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(test1, 1, (null), (null), test 1)
+SAX.getEntity(test1)
+SAX.entityDecl(test2, 1, (null), (null), test 2)
+SAX.getEntity(test2)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 4)
+SAX.startElementNs(Content, NULL, NULL, 0, 0, 0)
+SAX.characters(Reten, 5)
+SAX.characters(ç, 2)
+SAX.characters(ã, 2)
+SAX.characters(o, 1)
+SAX.endElementNs(Content, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(Content, NULL, NULL, 0, 0, 0)
+SAX.characters(<, 1)
+SAX.characters(>, 1)
+SAX.endElementNs(Content, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(Content, NULL, NULL, 0, 0, 0)
+SAX.getEntity(test1)
+SAX.characters(test 1, 6)
+SAX.reference(test1)
+SAX.getEntity(test2)
+SAX.characters(test 2, 6)
+SAX.reference(test2)
+SAX.endElementNs(Content, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ent9 b/result/ent9
new file mode 100644
index 0000000..1ce3089
--- /dev/null
+++ b/result/ent9
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY test1 "<a/>,<b/>,<c/>,<d/>">
+]>
+<doc>
+ <ent>&test1;</ent>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <ent>&test1;</ent>
+</doc>
diff --git a/result/ent9.rde b/result/ent9.rde
new file mode 100644
index 0000000..38b9f43
--- /dev/null
+++ b/result/ent9.rde
@@ -0,0 +1,300 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 ent 0 0
+2 1 a 0 0
+2 15 a 0 0
+2 3 #text 0 1 ,
+2 1 b 0 0
+2 15 b 0 0
+2 3 #text 0 1 ,
+2 1 c 0 0
+2 15 c 0 0
+2 3 #text 0 1 ,
+2 1 d 0 0
+2 15 d 0 0
+1 15 ent 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 ent 0 0
+2 1 a 0 0
+2 15 a 0 0
+2 3 #text 0 1 ,
+2 1 b 0 0
+2 15 b 0 0
+2 3 #text 0 1 ,
+2 1 c 0 0
+2 15 c 0 0
+2 3 #text 0 1 ,
+2 1 d 0 0
+2 15 d 0 0
+1 15 ent 0 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/ent9.rdr b/result/ent9.rdr
new file mode 100644
index 0000000..42f8a5f
--- /dev/null
+++ b/result/ent9.rdr
@@ -0,0 +1,280 @@
+0 10 doc 0 0
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 ent 0 0
+2 5 test1 0 0
+1 15 ent 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 WE need lot of garbage now to trigger the problem
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 ent 0 0
+2 5 test1 0 0
+1 15 ent 0 0
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/ent9.sax b/result/ent9.sax
new file mode 100644
index 0000000..aca2ad1
--- /dev/null
+++ b/result/ent9.sax
@@ -0,0 +1,310 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(test1, 1, (null), (null), <a/>,<b/>,<c/>,<d/>)
+SAX.getEntity(test1)
+SAX.externalSubset(doc, , )
+SAX.startElement(doc)
+SAX.characters(
+ , 4)
+SAX.startElement(ent)
+SAX.getEntity(test1)
+SAX.startElement(a)
+SAX.endElement(a)
+SAX.characters(,, 1)
+SAX.startElement(b)
+SAX.endElement(b)
+SAX.characters(,, 1)
+SAX.startElement(c)
+SAX.endElement(c)
+SAX.characters(,, 1)
+SAX.startElement(d)
+SAX.endElement(d)
+SAX.reference(test1)
+SAX.endElement(ent)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(p)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElement(p)
+SAX.characters(
+ , 4)
+SAX.startElement(ent)
+SAX.getEntity(test1)
+SAX.startElement(a)
+SAX.endElement(a)
+SAX.characters(,, 1)
+SAX.startElement(b)
+SAX.endElement(b)
+SAX.characters(,, 1)
+SAX.startElement(c)
+SAX.endElement(c)
+SAX.characters(,, 1)
+SAX.startElement(d)
+SAX.endElement(d)
+SAX.reference(test1)
+SAX.endElement(ent)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/ent9.sax2 b/result/ent9.sax2
new file mode 100644
index 0000000..439dcfc
--- /dev/null
+++ b/result/ent9.sax2
@@ -0,0 +1,310 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(doc, , )
+SAX.entityDecl(test1, 1, (null), (null), <a/>,<b/>,<c/>,<d/>)
+SAX.getEntity(test1)
+SAX.externalSubset(doc, , )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 4)
+SAX.startElementNs(ent, NULL, NULL, 0, 0, 0)
+SAX.getEntity(test1)
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(a, NULL, NULL)
+SAX.characters(,, 1)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(b, NULL, NULL)
+SAX.characters(,, 1)
+SAX.startElementNs(c, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(c, NULL, NULL)
+SAX.characters(,, 1)
+SAX.startElementNs(d, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(d, NULL, NULL)
+SAX.reference(test1)
+SAX.endElementNs(ent, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters( WE need lot of garbage now to, 50)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(ent, NULL, NULL, 0, 0, 0)
+SAX.getEntity(test1)
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(a, NULL, NULL)
+SAX.characters(,, 1)
+SAX.startElementNs(b, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(b, NULL, NULL)
+SAX.characters(,, 1)
+SAX.startElementNs(c, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(c, NULL, NULL)
+SAX.characters(,, 1)
+SAX.startElementNs(d, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(d, NULL, NULL)
+SAX.reference(test1)
+SAX.endElementNs(ent, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/errors/attr1.xml b/result/errors/attr1.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/attr1.xml
diff --git a/result/errors/attr1.xml.err b/result/errors/attr1.xml.err
new file mode 100644
index 0000000..4f08538
--- /dev/null
+++ b/result/errors/attr1.xml.err
@@ -0,0 +1,6 @@
+./test/errors/attr1.xml:2: parser error : AttValue: ' expected
+
+^
+./test/errors/attr1.xml:1: parser error : Extra content at the end of the document
+<foo foo="oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+ ^
diff --git a/result/errors/attr1.xml.str b/result/errors/attr1.xml.str
new file mode 100644
index 0000000..718d23c
--- /dev/null
+++ b/result/errors/attr1.xml.str
@@ -0,0 +1,10 @@
+./test/errors/attr1.xml:2: parser error : AttValue: ' expected
+
+^
+./test/errors/attr1.xml:2: parser error : attributes construct error
+
+^
+./test/errors/attr1.xml:2: parser error : Couldn't find end of Start Tag foo
+
+^
+./test/errors/attr1.xml : failed to parse
diff --git a/result/errors/attr2.xml b/result/errors/attr2.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/attr2.xml
diff --git a/result/errors/attr2.xml.err b/result/errors/attr2.xml.err
new file mode 100644
index 0000000..c8a9c7d
--- /dev/null
+++ b/result/errors/attr2.xml.err
@@ -0,0 +1,6 @@
+./test/errors/attr2.xml:2: parser error : AttValue: ' expected
+
+^
+./test/errors/attr2.xml:1: parser error : Extra content at the end of the document
+<foo foo=">ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+ ^
diff --git a/result/errors/attr2.xml.str b/result/errors/attr2.xml.str
new file mode 100644
index 0000000..13b08a7
--- /dev/null
+++ b/result/errors/attr2.xml.str
@@ -0,0 +1,10 @@
+./test/errors/attr2.xml:2: parser error : AttValue: ' expected
+
+^
+./test/errors/attr2.xml:2: parser error : attributes construct error
+
+^
+./test/errors/attr2.xml:2: parser error : Couldn't find end of Start Tag foo
+
+^
+./test/errors/attr2.xml : failed to parse
diff --git a/result/errors/attr3.xml b/result/errors/attr3.xml
new file mode 100644
index 0000000..de1f928
--- /dev/null
+++ b/result/errors/attr3.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
+]>
+<doc/>
diff --git a/result/errors/attr3.xml.err b/result/errors/attr3.xml.err
new file mode 100644
index 0000000..a628ca7
--- /dev/null
+++ b/result/errors/attr3.xml.err
@@ -0,0 +1,3 @@
+./test/errors/attr3.xml:4: validity warning : Attribute a1 of element doc: already defined
+<!ATTLIST doc a1 CDATA "z1">
+ ^
diff --git a/result/errors/attr3.xml.str b/result/errors/attr3.xml.str
new file mode 100644
index 0000000..a628ca7
--- /dev/null
+++ b/result/errors/attr3.xml.str
@@ -0,0 +1,3 @@
+./test/errors/attr3.xml:4: validity warning : Attribute a1 of element doc: already defined
+<!ATTLIST doc a1 CDATA "z1">
+ ^
diff --git a/result/errors/attr4.xml b/result/errors/attr4.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/attr4.xml
diff --git a/result/errors/attr4.xml.err b/result/errors/attr4.xml.err
new file mode 100644
index 0000000..a9966d8
--- /dev/null
+++ b/result/errors/attr4.xml.err
@@ -0,0 +1,12 @@
+./test/errors/attr4.xml:1: parser error : invalid character in attribute value
+<ROOT attr="XY"/>
+ ^
+./test/errors/attr4.xml:1: parser error : attributes construct error
+<ROOT attr="XY"/>
+ ^
+./test/errors/attr4.xml:1: parser error : Couldn't find end of Start Tag ROOT line 1
+<ROOT attr="XY"/>
+ ^
+./test/errors/attr4.xml:1: parser error : Extra content at the end of the document
+<ROOT attr="XY"/>
+ ^
diff --git a/result/errors/attr4.xml.str b/result/errors/attr4.xml.str
new file mode 100644
index 0000000..eeb9252
--- /dev/null
+++ b/result/errors/attr4.xml.str
@@ -0,0 +1,10 @@
+./test/errors/attr4.xml:1: parser error : invalid character in attribute value
+<ROOT attr="XY"/>
+ ^
+./test/errors/attr4.xml:1: parser error : attributes construct error
+<ROOT attr="XY"/>
+ ^
+./test/errors/attr4.xml:1: parser error : Couldn't find end of Start Tag ROOT
+<ROOT attr="XY"/>
+ ^
+./test/errors/attr4.xml : failed to parse
diff --git a/result/errors/cdata.xml b/result/errors/cdata.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/cdata.xml
diff --git a/result/errors/cdata.xml.err b/result/errors/cdata.xml.err
new file mode 100644
index 0000000..f757963
--- /dev/null
+++ b/result/errors/cdata.xml.err
@@ -0,0 +1,4 @@
+./test/errors/cdata.xml:2: parser error : Input is not proper UTF-8, indicate encoding !
+Bytes: 0xE1 0x72 0x5D 0x5D
+<A><![CDATA[Cár]]></A>
+ ^
diff --git a/result/errors/cdata.xml.str b/result/errors/cdata.xml.str
new file mode 100644
index 0000000..e043441
--- /dev/null
+++ b/result/errors/cdata.xml.str
@@ -0,0 +1,5 @@
+./test/errors/cdata.xml:2: parser error : Input is not proper UTF-8, indicate encoding !
+Bytes: 0x5B 0x43 0xE1 0x72
+<A><![CDATA[Cár]]></A>
+ ^
+./test/errors/cdata.xml : failed to parse
diff --git a/result/errors/charref1.xml b/result/errors/charref1.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/charref1.xml
diff --git a/result/errors/charref1.xml.err b/result/errors/charref1.xml.err
new file mode 100644
index 0000000..aa43bcf
--- /dev/null
+++ b/result/errors/charref1.xml.err
@@ -0,0 +1,3 @@
+./test/errors/charref1.xml:1: parser error : xmlParseCharRef: invalid xmlChar value 60
+<bla>&#010100000000000000000000000000000000000000000000000060;</bla>
+ ^
diff --git a/result/errors/charref1.xml.str b/result/errors/charref1.xml.str
new file mode 100644
index 0000000..467b4f6
--- /dev/null
+++ b/result/errors/charref1.xml.str
@@ -0,0 +1,4 @@
+./test/errors/charref1.xml:1: parser error : xmlParseCharRef: invalid xmlChar value 60
+<bla>&#010100000000000000000000000000000000000000000000000060;</bla>
+ ^
+./test/errors/charref1.xml : failed to parse
diff --git a/result/errors/comment1.xml b/result/errors/comment1.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/comment1.xml
diff --git a/result/errors/comment1.xml.err b/result/errors/comment1.xml.err
new file mode 100644
index 0000000..5a732dd
--- /dev/null
+++ b/result/errors/comment1.xml.err
@@ -0,0 +1,6 @@
+./test/errors/comment1.xml:5: parser error : xmlParseComment: invalid xmlChar value 14
+ in p02:  -->
+ ^
+./test/errors/comment1.xml:5: parser error : Start tag expected, '<' not found
+ in p02:  -->
+ ^
diff --git a/result/errors/comment1.xml.str b/result/errors/comment1.xml.str
new file mode 100644
index 0000000..494d1ed
--- /dev/null
+++ b/result/errors/comment1.xml.str
@@ -0,0 +1,4 @@
+./test/errors/comment1.xml:5: parser error : xmlParseComment: invalid xmlChar value 14
+ in p02:  -->
+ ^
+./test/errors/comment1.xml : failed to parse
diff --git a/result/errors/content1.xml b/result/errors/content1.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/content1.xml
diff --git a/result/errors/content1.xml.err b/result/errors/content1.xml.err
new file mode 100644
index 0000000..425be39
--- /dev/null
+++ b/result/errors/content1.xml.err
@@ -0,0 +1,16 @@
+./test/errors/content1.xml:7: parser error : ContentDecl : ',' '|' or ')' expected
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : expected '>'
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : DOCTYPE improperly terminated
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : Start tag expected, '<' not found
+<!ELEMENT aElement (a |b * >
+ ^
diff --git a/result/errors/content1.xml.str b/result/errors/content1.xml.str
new file mode 100644
index 0000000..d806a63
--- /dev/null
+++ b/result/errors/content1.xml.str
@@ -0,0 +1,14 @@
+./test/errors/content1.xml:7: parser error : ContentDecl : ',' '|' or ')' expected
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : expected '>'
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml:7: parser error : DOCTYPE improperly terminated
+<!ELEMENT aElement (a |b * >
+ ^
+./test/errors/content1.xml : failed to parse
diff --git a/result/errors/extparsedent.xml b/result/errors/extparsedent.xml
new file mode 100644
index 0000000..07e4c54
--- /dev/null
+++ b/result/errors/extparsedent.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ENTITY c PUBLIC "bar" "/etc/doesnotexist">
+]>
+<root>&c;</root>
diff --git a/result/errors/extparsedent.xml.err b/result/errors/extparsedent.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/extparsedent.xml.err
diff --git a/result/errors/extparsedent.xml.str b/result/errors/extparsedent.xml.str
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/extparsedent.xml.str
diff --git a/result/errors/name.xml b/result/errors/name.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/name.xml
diff --git a/result/errors/name.xml.err b/result/errors/name.xml.err
new file mode 100644
index 0000000..4dbfc52
--- /dev/null
+++ b/result/errors/name.xml.err
@@ -0,0 +1,3 @@
+./test/errors/name.xml:2: parser error : Couldn't find end of Start Tag foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo line 1
+
+^
diff --git a/result/errors/name.xml.str b/result/errors/name.xml.str
new file mode 100644
index 0000000..fd4af59
--- /dev/null
+++ b/result/errors/name.xml.str
@@ -0,0 +1,4 @@
+./test/errors/name.xml:2: parser error : Couldn't find end of Start Tag foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+
+^
+./test/errors/name.xml : failed to parse
diff --git a/result/errors/name2.xml b/result/errors/name2.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/name2.xml
diff --git a/result/errors/name2.xml.err b/result/errors/name2.xml.err
new file mode 100644
index 0000000..a6649a1
--- /dev/null
+++ b/result/errors/name2.xml.err
@@ -0,0 +1,6 @@
+./test/errors/name2.xml:2: parser error : Specification mandate value for attribute foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+
+^
+./test/errors/name2.xml:1: parser error : Extra content at the end of the document
+<foo foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+ ^
diff --git a/result/errors/name2.xml.str b/result/errors/name2.xml.str
new file mode 100644
index 0000000..daee090
--- /dev/null
+++ b/result/errors/name2.xml.str
@@ -0,0 +1,10 @@
+./test/errors/name2.xml:2: parser error : Specification mandate value for attribute foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
+
+^
+./test/errors/name2.xml:2: parser error : attributes construct error
+
+^
+./test/errors/name2.xml:2: parser error : Couldn't find end of Start Tag foo
+
+^
+./test/errors/name2.xml : failed to parse
diff --git a/result/eve.xml b/result/eve.xml
new file mode 100644
index 0000000..dab7208
--- /dev/null
+++ b/result/eve.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE spec PUBLIC "-//testspec//" "dtds/eve.dtd" [
+<!ENTITY iso6.doc.date "29-May-1999">
+]>
+<spec>
+</spec>
diff --git a/result/eve.xml.rde b/result/eve.xml.rde
new file mode 100644
index 0000000..6f08c55
--- /dev/null
+++ b/result/eve.xml.rde
@@ -0,0 +1,5 @@
+0 10 spec 0 0
+0 1 spec 0 0
+1 14 #text 0 1
+
+0 15 spec 0 0
diff --git a/result/eve.xml.rdr b/result/eve.xml.rdr
new file mode 100644
index 0000000..6f08c55
--- /dev/null
+++ b/result/eve.xml.rdr
@@ -0,0 +1,5 @@
+0 10 spec 0 0
+0 1 spec 0 0
+1 14 #text 0 1
+
+0 15 spec 0 0
diff --git a/result/eve.xml.sax b/result/eve.xml.sax
new file mode 100644
index 0000000..1b416b2
--- /dev/null
+++ b/result/eve.xml.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(spec, -//testspec//, dtds/eve.dtd)
+SAX.entityDecl(iso6.doc.date, 1, (null), (null), 29-May-1999)
+SAX.getEntity(iso6.doc.date)
+SAX.externalSubset(spec, -//testspec//, dtds/eve.dtd)
+SAX.startElement(spec)
+SAX.characters(
+, 1)
+SAX.endElement(spec)
+SAX.endDocument()
diff --git a/result/eve.xml.sax2 b/result/eve.xml.sax2
new file mode 100644
index 0000000..ea3b430
--- /dev/null
+++ b/result/eve.xml.sax2
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(spec, -//testspec//, dtds/eve.dtd)
+SAX.entityDecl(iso6.doc.date, 1, (null), (null), 29-May-1999)
+SAX.getEntity(iso6.doc.date)
+SAX.externalSubset(spec, -//testspec//, dtds/eve.dtd)
+SAX.startElementNs(spec, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.endElementNs(spec, NULL, NULL)
+SAX.endDocument()
diff --git a/result/example.dtd b/result/example.dtd
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/example.dtd
diff --git a/result/expr/base b/result/expr/base
new file mode 100644
index 0000000..9ab0d19
--- /dev/null
+++ b/result/expr/base
@@ -0,0 +1,85 @@
+Expression: a
+Subexp: a => accept, Ok
+Subexp: a | a => accept, Ok
+Subexp: b => reject, Ok
+Expression: a|b
+Subexp: a => accept, Ok
+Subexp: b => accept, Ok
+Subexp: a | b => accept, Ok
+Subexp: a{0} => reject, Ok
+Subexp: b{0} => reject, Ok
+Expression: a | b | a
+Subexp: a => accept, Ok
+Subexp: b => accept, Ok
+Subexp: a | b => accept, Ok
+Subexp: b | a => accept, Ok
+Subexp: a | b | b => accept, Ok
+Subexp: a | b | a => accept, Ok
+Subexp: b | a | b => accept, Ok
+Expression: a,a
+Subexp: a,a => accept, Ok
+Subexp: a => reject, Ok
+Subexp: a,a,a => reject, Ok
+Expression: a{0,3}
+Subexp: a{3} => accept, Ok
+Subexp: a => accept, Ok
+Subexp: a,a,a => accept, Ok
+Subexp: a{1,3} => accept, Ok
+Expression: (a|b){0,4}
+Subexp: a => accept, Ok
+Subexp: b => accept, Ok
+Subexp: a,b => accept, Ok
+Subexp: a,b,a,b => accept, Ok
+Subexp: b,a,b,a,b => reject, Ok
+Subexp: b,a{1,3} => accept, Ok
+Subexp: a{1,3},b => accept, Ok
+Subexp: a{1,3},b,a => reject, Ok
+Subexp: a{1,4},b => reject, Ok
+Subexp: a{0,5} => reject, Ok
+Subexp: (b|a){0,4} => accept, Ok
+Subexp: (b|a){0,4},a => reject, Ok
+Subexp: (a,b){0,2} => accept, Ok
+Subexp: (a,b){0,1},b => accept, Ok
+Expression: a*
+Subexp: a => accept, Ok
+Subexp: a? => accept, Ok
+Subexp: a+ => accept, Ok
+Subexp: a* => accept, Ok
+Subexp: a{0} => accept, Ok
+Expression: a+
+Subexp: a => accept, Ok
+Subexp: a? => reject, Ok
+Subexp: a+ => accept, Ok
+Subexp: a* => reject, Ok
+Subexp: a?,a => accept, Ok
+Subexp: a,a* => accept, Ok
+Subexp: a*,a => accept, Ok
+Subexp: a?,a*,a => accept, Ok
+Subexp: a*,a?,a => accept, Ok
+Expression: (a|b)*
+Subexp: a => accept, Ok
+Subexp: b => accept, Ok
+Subexp: a,b => accept, Ok
+Subexp: a,b,a,b => accept, Ok
+Subexp: (b|a){0,4} => accept, Ok
+Subexp: (b|a){0,4},a => accept, Ok
+Subexp: a* => accept, Ok
+Subexp: b* => accept, Ok
+Subexp: (a|b)* => accept, Ok
+Subexp: a{1,3} => accept, Ok
+Subexp: b,a{1,3} => accept, Ok
+Subexp: a{1,3},b => accept, Ok
+Subexp: a*,(a|b)* => accept, Ok
+Subexp: a*,b{2,5} => accept, Ok
+Subexp: a*,(a|b)*,b{2,5} => accept, Ok
+Expression: (a|b)+,(c|d)
+Subexp: a+,c => accept, Ok
+Subexp: a*,c => reject, Ok
+Subexp: a,c => accept, Ok
+Subexp: a,b*,a*,c => accept, Ok
+Expression: (a|b),(a|c){0,100}
+Subexp: a{0,100},(a|c) => accept, Ok
+Subexp: a{0,101},(a|c) => reject, Ok
+Expression: (a, ((b, c, d){0,5}, e{0,1}){0,4}, f)
+Subexp: (a, b, (c, d, b){2,3}, c, d, e, f) => accept, Ok
+Ops: 0 nodes, 221 cons
diff --git a/result/intsubset.xml b/result/intsubset.xml
new file mode 100644
index 0000000..bd85795
--- /dev/null
+++ b/result/intsubset.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!-- " -->]>
+<root/>
diff --git a/result/intsubset.xml.rde b/result/intsubset.xml.rde
new file mode 100644
index 0000000..7503422
--- /dev/null
+++ b/result/intsubset.xml.rde
@@ -0,0 +1,2 @@
+0 10 root 0 0
+0 1 root 1 0
diff --git a/result/intsubset.xml.rdr b/result/intsubset.xml.rdr
new file mode 100644
index 0000000..7503422
--- /dev/null
+++ b/result/intsubset.xml.rdr
@@ -0,0 +1,2 @@
+0 10 root 0 0
+0 1 root 1 0
diff --git a/result/intsubset.xml.sax b/result/intsubset.xml.sax
new file mode 100644
index 0000000..a92e2b7
--- /dev/null
+++ b/result/intsubset.xml.sax
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(root, , )
+SAX.elementDecl(root, 1, ...)
+SAX.comment( " )
+SAX.externalSubset(root, , )
+SAX.startElement(root)
+SAX.endElement(root)
+SAX.endDocument()
diff --git a/result/intsubset.xml.sax2 b/result/intsubset.xml.sax2
new file mode 100644
index 0000000..f4db2a8
--- /dev/null
+++ b/result/intsubset.xml.sax2
@@ -0,0 +1,9 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(root, , )
+SAX.elementDecl(root, 1, ...)
+SAX.comment( " )
+SAX.externalSubset(root, , )
+SAX.startElementNs(root, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(root, NULL, NULL)
+SAX.endDocument()
diff --git a/result/intsubset2.xml b/result/intsubset2.xml
new file mode 100644
index 0000000..b103955
--- /dev/null
+++ b/result/intsubset2.xml
@@ -0,0 +1,250 @@
+<?xml version="1.0"?>
+<!DOCTYPE kanjidic2 [
+<!-- Version 1.3
+ This is the DTD of the XML-format kanji file combining information from
+ the KANJIDIC and KANJD212 files. It is intended to be largely self-
+ documenting, with each field being accompanied by an explanatory
+ comment.
+
+ The file covers the following kanji:
+ (a) the 6,355 kanji from JIS X 0208;
+ (b) the 5,801 kanji from JIS X 0212;
+ (c) the 3,625 kanji from JIS X 0213 as follows:
+ (i) the 2,741 kanji which are also in JIS X 0212 have
+ JIS X 0213 code-points (kuten) added to the existing entry;
+ (ii) the 884 "new" kanji have new entries.
+
+ At the end of the explanation for a number of fields there is a tag
+ with the format [N]. This indicates the leading letter(s) of the
+ equivalent field in the KANJIDIC and KANJD212 files.
+
+ The KANJIDIC documentation should also be read for additional
+ information about the information in the file.
+ --><!ELEMENT kanjidic2 (header , character*)>
+<!ELEMENT header (file_version , database_version , date_of_creation)>
+<!--
+ The single header element will contain identification information
+ about the version of the file
+ --><!ELEMENT file_version (#PCDATA)>
+<!--
+ This field denotes the version of kanjidic2 structure, as more
+ than one version may exist.
+ --><!ELEMENT database_version (#PCDATA)>
+<!--
+ The version of the file, in the format YYYY-NN, where NN will be
+ a number starting with 01 for the first version released in a
+ calendar year, then increasing for each version in that year.
+ --><!ELEMENT date_of_creation (#PCDATA)>
+<!--
+ The date the file was created in international format (YYYY-MM-DD).
+ --><!ELEMENT character (literal , codepoint , radical , misc , dic_number? , query_code? , reading_meaning? , nanori?)*>
+<!ELEMENT literal (#PCDATA)>
+<!--
+ The character itself in UTF8 coding.
+ --><!ELEMENT codepoint (cp_value)+>
+<!--
+ The codepoint element states the code of the character in the various
+ character set standards.
+ --><!ELEMENT cp_value (#PCDATA)>
+<!--
+ The cp_value contains the codepoint of the character in a particular
+ standard. The standard will be identified in the cp_type attribute.
+ --><!ATTLIST cp_value cp_type CDATA #REQUIRED>
+<!--
+ The cp_type attribute states the coding standard applying to the
+ element. The values assigned so far are:
+ jis208 - JIS X 0208-1997 - kuten coding (nn-nn)
+ jis212 - JIS X 0212-1990 - kuten coding (nn-nn)
+ jis213 - JIS X 0213-2000 - kuten coding (p-nn-nn)
+ ucs - Unicode 4.0 - hex coding (4 or 5 hexadecimal digits)
+ --><!ELEMENT radical (rad_value)+>
+<!ELEMENT rad_value (#PCDATA)>
+<!--
+ The radical number, in the range 1 to 214. The particular
+ classification type is stated in the rad_type attribute.
+ --><!ATTLIST rad_value rad_type CDATA #REQUIRED>
+<!--
+ The rad_type attribute states the type of radical classification.
+ classical - as recorded in the KangXi Zidian.
+ nelson - as used in the Nelson "Modern Japanese-English
+ Character Dictionary" (i.e. the Classic, not the New Nelson).
+ This will only be used where Nelson reclassified the kanji.
+ --><!ELEMENT misc (grade? , stroke_count+ , variant* , freq* , rad_name*)>
+<!ELEMENT grade (#PCDATA)>
+<!--
+ The Jouyou Kanji grade level. 1 through 6 indicate the grade in which
+ the kanji is taught in Japanese schools. 8 indicates it is one of the
+ remaining Jouyou Kanji to be learned in junior high school, and 9
+ indicates it is a Jinmeiyou (for use in names) kanji. [G]
+ --><!ELEMENT stroke_count (#PCDATA)>
+<!--
+ The stroke count of the kanji, including the radical. If more than
+ one, the first is considered the accepted count, while subsequent ones
+ are common miscounts. (See Appendix E. of the KANJIDIC documentation
+ for some of the rules applied when counting strokes in some of the
+ radicals.) [S]
+ --><!ELEMENT variant (#PCDATA)>
+<!--
+ A cross-reference code to another kanji, usually regarded as a variant.
+ The type of cross-reference is given in the var_type attribute.
+ --><!ATTLIST variant var_type CDATA #REQUIRED>
+<!--
+ The var_type attribute indicates the type of variant code. The current
+ values are:
+ jis208 - in JIS X 0208 - kuten coding
+ jis212 - in JIS X 0212 - kuten coding
+ jis213 - in JIS X 0213 - kuten coding
+ deroo - De Roo number - numeric
+ njecd - Halpern NJECD index number - numeric
+ s_h - The Kanji Dictionary (Spahn & Hadamitzky) - descriptor
+ nelson - "Classic" Nelson - numeric
+ oneill - Japanese Names (O'Neill) - numeric
+ --><!ELEMENT freq (#PCDATA)>
+<!--
+ A frequency-of-use ranking. The 2,500 most-used characters have a
+ ranking; those characters that lack this field are not ranked. The
+ frequency is a number from 1 to 2,500 that expresses the relative
+ frequency of occurrence of a character in modern Japanese. This is
+ based on a survey in newspapers, so it is biassed towards kanji
+ used in newspaper articles. The discrimination between the less
+ frequently used kanji is not strong.
+ --><!ELEMENT rad_name (#PCDATA)>
+<!--
+ When the kanji is itself a radical and has a name, this element
+ contains the name (in hiragana.) [T2]
+ --><!ELEMENT dic_number (dic_ref)+>
+<!--
+ This element contains the index numbers and similar unstructured
+ information such as page numbers in a number of published dictionaries,
+ and instructional books on kanji.
+ --><!ELEMENT dic_ref (#PCDATA)>
+<!--
+ Each dic_ref contains an index number. The particular dictionary,
+ etc. is defined by the dr_type attribute.
+ --><!ATTLIST dic_ref dr_type CDATA #REQUIRED>
+<!--
+ The dr_type defines the dictionary or reference book, etc. to which
+ dic_ref element applies. The initial allocation is:
+ nelson_c - "Modern Reader's Japanese-English Character Dictionary",
+ edited by Andrew Nelson (now published as the "Classic"
+ Nelson).
+ nelson_n - "The New Nelson Japanese-English Character Dictionary",
+ edited by John Haig.
+ halpern_njecd - "New Japanese-English Character Dictionary",
+ edited by Jack Halpern.
+ halpern_kkld - "Kanji Learners Dictionary" (Kodansha) edited by
+ Jack Halpern.
+ heisig - "Remembering The Kanji" by James Heisig.
+ gakken - "A New Dictionary of Kanji Usage" (Gakken)
+ oneill_names - "Japanese Names", by P.G. O'Neill.
+ oneill_kk - "Essential Kanji" by P.G. O'Neill.
+ moro - "Daikanwajiten" compiled by Morohashi. For some kanji two
+ additional attributes are used: m_vol: the volume of the
+ dictionary in which the kanji is found, and m_page: the page
+ number in the volume.
+ henshall - "A Guide To Remembering Japanese Characters" by
+ Kenneth G. Henshall.
+ sh_kk - "Kanji and Kana" by Spahn and Hadamitzky.
+ sakade - "A Guide To Reading and Writing Japanese" edited by
+ Florence Sakade.
+ henshall3 - "A Guide To Reading and Writing Japanese" 3rd
+ edition, edited by Henshall, Seeley and De Groot.
+ tutt_cards - Tuttle Kanji Cards, compiled by Alexander Kask.
+ crowley - "The Kanji Way to Japanese Language Power" by
+ Dale Crowley.
+ kanji_in_context - "Kanji in Context" by Nishiguchi and Kono.
+ busy_people - "Japanese For Busy People" vols I-III, published
+ by the AJLT. The codes are the volume.chapter.
+ kodansha_compact - the "Kodansha Compact Kanji Guide".
+ --><!ATTLIST dic_ref m_vol CDATA #IMPLIED>
+<!--
+ See above under "moro".
+ --><!ATTLIST dic_ref m_page CDATA #IMPLIED>
+<!--
+ See above under "moro".
+ --><!ELEMENT query_code (q_code)+>
+<!--
+ These codes contain information relating to the glyph, and can be used
+ for finding a required kanji. The type of code is defined by the
+ qc_type attribute.
+ --><!ELEMENT q_code (#PCDATA)>
+<!--
+ The q_code contains the actual query-code value, according to the
+ qc_type attribute.
+ --><!ATTLIST q_code qc_type CDATA #REQUIRED>
+<!--
+ The q_code attribute defines the type of query code. The current values
+ are:
+ skip - Halpern's SKIP (System of Kanji Indexing by Patterns)
+ code. The format is n-nn-nn. See the KANJIDIC documentation
+ for a description of the code and restrictions on the
+ commercial use of this data. [P]
+
+ sh_desc - the descriptor codes for The Kanji Dictionary (Tuttle
+ 1996) by Spahn and Hadamitzky. They are in the form nxnn.n,
+ e.g. 3k11.2, where the kanji has 3 strokes in the
+ identifying radical, it is radical "k" in the SH
+ classification system, there are 11 other strokes, and it is
+ the 2nd kanji in the 3k11 sequence. (I am very grateful to
+ Mark Spahn for providing the list of these descriptor codes
+ for the kanji in this file.) [I]
+ four_corner - the "Four Corner" code for the kanji. This is a code
+ invented by Wang Chen in 1928. See the KANJIDIC documentation
+ for an overview of the Four Corner System. [Q]
+
+ deroo - the codes developed by the late Father Joseph De Roo, and
+ published in his book "2001 Kanji" (Bojinsha). Fr De Roo
+ gave his permission for these codes to be included. [DR]
+ misclass - a possible misclassification of the kanji according
+ to one of the code types. (See the "Z" codes in the KANJIDIC
+ documentation for more details.)
+
+ --><!ELEMENT reading_meaning (rmgroup* , nanori*)>
+<!--
+ The readings for the kanji in several languages, and the meanings, also
+ in several languages. The readings and meanings are grouped to enable
+ the handling of the situation where the meaning is differentiated by
+ reading. [T1]
+ --><!ELEMENT nanori (#PCDATA)>
+<!--
+ Japanese readings that are now only associated with names.
+ --><!ELEMENT rmgroup (reading* , meaning*)>
+<!ELEMENT reading (#PCDATA)>
+<!--
+ The reading element contains the reading or pronunciation
+ of the kanji.
+ --><!ATTLIST reading r_type CDATA #REQUIRED>
+<!--
+ The r_type attribute defines the type of reading in the reading
+ element. The current values are:
+ pinyin - the modern PinYin romanization of the Chinese reading
+ of the kanji. The tones are represented by a concluding
+ digit. [Y]
+ korean_r - the romanized form of the Korean reading(s) of the
+ kanji. The readings are in the (Republic of Korea) Ministry
+ of Education style of romanization. [W]
+ korean_h - the Korean reading(s) of the kanji in hangul.
+ ja_on - the "on" Japanese reading of the kanji, in katakana. A
+ second attribute r_status, if present, will indicate with
+ a value of "jy" whether the reading is approved for a
+ "Jouyou kanji".
+ ja_kun - the "kun" Japanese reading of the kanji, in hiragana.
+ Where relevant the okurigana is also included separated by a
+ ".". Readings associated with prefixes and suffixes are
+ marked with a "-". A second attribute r_status, if present,
+ will indicate with a value of "jy" whether the reading is
+ approved for a "Jouyou kanji".
+ --><!ATTLIST reading r_status CDATA #IMPLIED>
+<!--
+ See under ja_on and ja_kun above.
+ --><!ELEMENT meaning (#PCDATA)>
+<!--
+ The meaning associated with the kanji.
+ --><!ATTLIST meaning m_lang CDATA #IMPLIED>
+<!--
+ The m_lang attribute defines the target language of the meaning. It
+ will be coded using the two-letter language code from the ISO 639
+ standard. When absent, the value "en" (i.e. English) is implied. [{}]
+ -->]>
+<kanjidic2>
+</kanjidic2>
diff --git a/result/intsubset2.xml.rde b/result/intsubset2.xml.rde
new file mode 100644
index 0000000..d27e245
--- /dev/null
+++ b/result/intsubset2.xml.rde
@@ -0,0 +1,5 @@
+0 10 kanjidic2 0 0
+0 1 kanjidic2 0 0
+1 14 #text 0 1
+
+0 15 kanjidic2 0 0
diff --git a/result/intsubset2.xml.rdr b/result/intsubset2.xml.rdr
new file mode 100644
index 0000000..d27e245
--- /dev/null
+++ b/result/intsubset2.xml.rdr
@@ -0,0 +1,5 @@
+0 10 kanjidic2 0 0
+0 1 kanjidic2 0 0
+1 14 #text 0 1
+
+0 15 kanjidic2 0 0
diff --git a/result/intsubset2.xml.sax b/result/intsubset2.xml.sax
new file mode 100644
index 0000000..b4d7bf4
--- /dev/null
+++ b/result/intsubset2.xml.sax
@@ -0,0 +1,286 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(kanjidic2, , )
+SAX.comment( Version 1.3
+ This is the DTD of the XML-format kanji file combining information from
+ the KANJIDIC and KANJD212 files. It is intended to be largely self-
+ documenting, with each field being accompanied by an explanatory
+ comment.
+
+ The file covers the following kanji:
+ (a) the 6,355 kanji from JIS X 0208;
+ (b) the 5,801 kanji from JIS X 0212;
+ (c) the 3,625 kanji from JIS X 0213 as follows:
+ (i) the 2,741 kanji which are also in JIS X 0212 have
+ JIS X 0213 code-points (kuten) added to the existing entry;
+ (ii) the 884 "new" kanji have new entries.
+
+ At the end of the explanation for a number of fields there is a tag
+ with the format [N]. This indicates the leading letter(s) of the
+ equivalent field in the KANJIDIC and KANJD212 files.
+
+ The KANJIDIC documentation should also be read for additional
+ information about the information in the file.
+ )
+SAX.elementDecl(kanjidic2, 4, ...)
+SAX.elementDecl(header, 4, ...)
+SAX.comment(
+ The single header element will contain identification information
+ about the version of the file
+ )
+SAX.elementDecl(file_version, 3, ...)
+SAX.comment(
+ This field denotes the version of kanjidic2 structure, as more
+ than one version may exist.
+ )
+SAX.elementDecl(database_version, 3, ...)
+SAX.comment(
+ The version of the file, in the format YYYY-NN, where NN will be
+ a number starting with 01 for the first version released in a
+ calendar year, then increasing for each version in that year.
+ )
+SAX.elementDecl(date_of_creation, 3, ...)
+SAX.comment(
+ The date the file was created in international format (YYYY-MM-DD).
+ )
+SAX.elementDecl(character, 4, ...)
+SAX.elementDecl(literal, 3, ...)
+SAX.comment(
+ The character itself in UTF8 coding.
+ )
+SAX.elementDecl(codepoint, 4, ...)
+SAX.comment(
+ The codepoint element states the code of the character in the various
+ character set standards.
+ )
+SAX.elementDecl(cp_value, 3, ...)
+SAX.comment(
+ The cp_value contains the codepoint of the character in a particular
+ standard. The standard will be identified in the cp_type attribute.
+ )
+SAX.attributeDecl(cp_value, cp_type, 1, 2, NULL, ...)
+SAX.comment(
+ The cp_type attribute states the coding standard applying to the
+ element. The values assigned so far are:
+ jis208 - JIS X 0208-1997 - kuten coding (nn-nn)
+ jis212 - JIS X 0212-1990 - kuten coding (nn-nn)
+ jis213 - JIS X 0213-2000 - kuten coding (p-nn-nn)
+ ucs - Unicode 4.0 - hex coding (4 or 5 hexadecimal digits)
+ )
+SAX.elementDecl(radical, 4, ...)
+SAX.elementDecl(rad_value, 3, ...)
+SAX.comment(
+ The radical number, in the range 1 to 214. The particular
+ classification type is stated in the rad_type attribute.
+ )
+SAX.attributeDecl(rad_value, rad_type, 1, 2, NULL, ...)
+SAX.comment(
+ The rad_type attribute states the type of radical classification.
+ classical - as recorded in the KangXi Zidian.
+ nelson - as used in the Nelson "Modern Japanese-English
+ Character Dictionary" (i.e. the Classic, not the New Nelson).
+ This will only be used where Nelson reclassified the kanji.
+ )
+SAX.elementDecl(misc, 4, ...)
+SAX.elementDecl(grade, 3, ...)
+SAX.comment(
+ The Jouyou Kanji grade level. 1 through 6 indicate the grade in which
+ the kanji is taught in Japanese schools. 8 indicates it is one of the
+ remaining Jouyou Kanji to be learned in junior high school, and 9
+ indicates it is a Jinmeiyou (for use in names) kanji. [G]
+ )
+SAX.elementDecl(stroke_count, 3, ...)
+SAX.comment(
+ The stroke count of the kanji, including the radical. If more than
+ one, the first is considered the accepted count, while subsequent ones
+ are common miscounts. (See Appendix E. of the KANJIDIC documentation
+ for some of the rules applied when counting strokes in some of the
+ radicals.) [S]
+ )
+SAX.elementDecl(variant, 3, ...)
+SAX.comment(
+ A cross-reference code to another kanji, usually regarded as a variant.
+ The type of cross-reference is given in the var_type attribute.
+ )
+SAX.attributeDecl(variant, var_type, 1, 2, NULL, ...)
+SAX.comment(
+ The var_type attribute indicates the type of variant code. The current
+ values are:
+ jis208 - in JIS X 0208 - kuten coding
+ jis212 - in JIS X 0212 - kuten coding
+ jis213 - in JIS X 0213 - kuten coding
+ deroo - De Roo number - numeric
+ njecd - Halpern NJECD index number - numeric
+ s_h - The Kanji Dictionary (Spahn & Hadamitzky) - descriptor
+ nelson - "Classic" Nelson - numeric
+ oneill - Japanese Names (O'Neill) - numeric
+ )
+SAX.elementDecl(freq, 3, ...)
+SAX.comment(
+ A frequency-of-use ranking. The 2,500 most-used characters have a
+ ranking; those characters that lack this field are not ranked. The
+ frequency is a number from 1 to 2,500 that expresses the relative
+ frequency of occurrence of a character in modern Japanese. This is
+ based on a survey in newspapers, so it is biassed towards kanji
+ used in newspaper articles. The discrimination between the less
+ frequently used kanji is not strong.
+ )
+SAX.elementDecl(rad_name, 3, ...)
+SAX.comment(
+ When the kanji is itself a radical and has a name, this element
+ contains the name (in hiragana.) [T2]
+ )
+SAX.elementDecl(dic_number, 4, ...)
+SAX.comment(
+ This element contains the index numbers and similar unstructured
+ information such as page numbers in a number of published dictionaries,
+ and instructional books on kanji.
+ )
+SAX.elementDecl(dic_ref, 3, ...)
+SAX.comment(
+ Each dic_ref contains an index number. The particular dictionary,
+ etc. is defined by the dr_type attribute.
+ )
+SAX.attributeDecl(dic_ref, dr_type, 1, 2, NULL, ...)
+SAX.comment(
+ The dr_type defines the dictionary or reference book, etc. to which
+ dic_ref element applies. The initial allocation is:
+ nelson_c - "Modern Reader's Japanese-English Character Dictionary",
+ edited by Andrew Nelson (now published as the "Classic"
+ Nelson).
+ nelson_n - "The New Nelson Japanese-English Character Dictionary",
+ edited by John Haig.
+ halpern_njecd - "New Japanese-English Character Dictionary",
+ edited by Jack Halpern.
+ halpern_kkld - "Kanji Learners Dictionary" (Kodansha) edited by
+ Jack Halpern.
+ heisig - "Remembering The Kanji" by James Heisig.
+ gakken - "A New Dictionary of Kanji Usage" (Gakken)
+ oneill_names - "Japanese Names", by P.G. O'Neill.
+ oneill_kk - "Essential Kanji" by P.G. O'Neill.
+ moro - "Daikanwajiten" compiled by Morohashi. For some kanji two
+ additional attributes are used: m_vol: the volume of the
+ dictionary in which the kanji is found, and m_page: the page
+ number in the volume.
+ henshall - "A Guide To Remembering Japanese Characters" by
+ Kenneth G. Henshall.
+ sh_kk - "Kanji and Kana" by Spahn and Hadamitzky.
+ sakade - "A Guide To Reading and Writing Japanese" edited by
+ Florence Sakade.
+ henshall3 - "A Guide To Reading and Writing Japanese" 3rd
+ edition, edited by Henshall, Seeley and De Groot.
+ tutt_cards - Tuttle Kanji Cards, compiled by Alexander Kask.
+ crowley - "The Kanji Way to Japanese Language Power" by
+ Dale Crowley.
+ kanji_in_context - "Kanji in Context" by Nishiguchi and Kono.
+ busy_people - "Japanese For Busy People" vols I-III, published
+ by the AJLT. The codes are the volume.chapter.
+ kodansha_compact - the "Kodansha Compact Kanji Guide".
+ )
+SAX.attributeDecl(dic_ref, m_vol, 1, 3, NULL, ...)
+SAX.comment(
+ See above under "moro".
+ )
+SAX.attributeDecl(dic_ref, m_page, 1, 3, NULL, ...)
+SAX.comment(
+ See above under "moro".
+ )
+SAX.elementDecl(query_code, 4, ...)
+SAX.comment(
+ These codes contain information relating to the glyph, and can be used
+ for finding a required kanji. The type of code is defined by the
+ qc_type attribute.
+ )
+SAX.elementDecl(q_code, 3, ...)
+SAX.comment(
+ The q_code contains the actual query-code value, according to the
+ qc_type attribute.
+ )
+SAX.attributeDecl(q_code, qc_type, 1, 2, NULL, ...)
+SAX.comment(
+ The q_code attribute defines the type of query code. The current values
+ are:
+ skip - Halpern's SKIP (System of Kanji Indexing by Patterns)
+ code. The format is n-nn-nn. See the KANJIDIC documentation
+ for a description of the code and restrictions on the
+ commercial use of this data. [P]
+
+ sh_desc - the descriptor codes for The Kanji Dictionary (Tuttle
+ 1996) by Spahn and Hadamitzky. They are in the form nxnn.n,
+ e.g. 3k11.2, where the kanji has 3 strokes in the
+ identifying radical, it is radical "k" in the SH
+ classification system, there are 11 other strokes, and it is
+ the 2nd kanji in the 3k11 sequence. (I am very grateful to
+ Mark Spahn for providing the list of these descriptor codes
+ for the kanji in this file.) [I]
+ four_corner - the "Four Corner" code for the kanji. This is a code
+ invented by Wang Chen in 1928. See the KANJIDIC documentation
+ for an overview of the Four Corner System. [Q]
+
+ deroo - the codes developed by the late Father Joseph De Roo, and
+ published in his book "2001 Kanji" (Bojinsha). Fr De Roo
+ gave his permission for these codes to be included. [DR]
+ misclass - a possible misclassification of the kanji according
+ to one of the code types. (See the "Z" codes in the KANJIDIC
+ documentation for more details.)
+
+ )
+SAX.elementDecl(reading_meaning, 4, ...)
+SAX.comment(
+ The readings for the kanji in several languages, and the meanings, also
+ in several languages. The readings and meanings are grouped to enable
+ the handling of the situation where the meaning is differentiated by
+ reading. [T1]
+ )
+SAX.elementDecl(nanori, 3, ...)
+SAX.comment(
+ Japanese readings that are now only associated with names.
+ )
+SAX.elementDecl(rmgroup, 4, ...)
+SAX.elementDecl(reading, 3, ...)
+SAX.comment(
+ The reading element contains the reading or pronunciation
+ of the kanji.
+ )
+SAX.attributeDecl(reading, r_type, 1, 2, NULL, ...)
+SAX.comment(
+ The r_type attribute defines the type of reading in the reading
+ element. The current values are:
+ pinyin - the modern PinYin romanization of the Chinese reading
+ of the kanji. The tones are represented by a concluding
+ digit. [Y]
+ korean_r - the romanized form of the Korean reading(s) of the
+ kanji. The readings are in the (Republic of Korea) Ministry
+ of Education style of romanization. [W]
+ korean_h - the Korean reading(s) of the kanji in hangul.
+ ja_on - the "on" Japanese reading of the kanji, in katakana. A
+ second attribute r_status, if present, will indicate with
+ a value of "jy" whether the reading is approved for a
+ "Jouyou kanji".
+ ja_kun - the "kun" Japanese reading of the kanji, in hiragana.
+ Where relevant the okurigana is also included separated by a
+ ".". Readings associated with prefixes and suffixes are
+ marked with a "-". A second attribute r_status, if present,
+ will indicate with a value of "jy" whether the reading is
+ approved for a "Jouyou kanji".
+ )
+SAX.attributeDecl(reading, r_status, 1, 3, NULL, ...)
+SAX.comment(
+ See under ja_on and ja_kun above.
+ )
+SAX.elementDecl(meaning, 3, ...)
+SAX.comment(
+ The meaning associated with the kanji.
+ )
+SAX.attributeDecl(meaning, m_lang, 1, 3, NULL, ...)
+SAX.comment(
+ The m_lang attribute defines the target language of the meaning. It
+ will be coded using the two-letter language code from the ISO 639
+ standard. When absent, the value "en" (i.e. English) is implied. [{}]
+ )
+SAX.externalSubset(kanjidic2, , )
+SAX.startElement(kanjidic2)
+SAX.characters(
+, 1)
+SAX.endElement(kanjidic2)
+SAX.endDocument()
diff --git a/result/intsubset2.xml.sax2 b/result/intsubset2.xml.sax2
new file mode 100644
index 0000000..5558701
--- /dev/null
+++ b/result/intsubset2.xml.sax2
@@ -0,0 +1,286 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(kanjidic2, , )
+SAX.comment( Version 1.3
+ This is the DTD of the XML-format kanji file combining information from
+ the KANJIDIC and KANJD212 files. It is intended to be largely self-
+ documenting, with each field being accompanied by an explanatory
+ comment.
+
+ The file covers the following kanji:
+ (a) the 6,355 kanji from JIS X 0208;
+ (b) the 5,801 kanji from JIS X 0212;
+ (c) the 3,625 kanji from JIS X 0213 as follows:
+ (i) the 2,741 kanji which are also in JIS X 0212 have
+ JIS X 0213 code-points (kuten) added to the existing entry;
+ (ii) the 884 "new" kanji have new entries.
+
+ At the end of the explanation for a number of fields there is a tag
+ with the format [N]. This indicates the leading letter(s) of the
+ equivalent field in the KANJIDIC and KANJD212 files.
+
+ The KANJIDIC documentation should also be read for additional
+ information about the information in the file.
+ )
+SAX.elementDecl(kanjidic2, 4, ...)
+SAX.elementDecl(header, 4, ...)
+SAX.comment(
+ The single header element will contain identification information
+ about the version of the file
+ )
+SAX.elementDecl(file_version, 3, ...)
+SAX.comment(
+ This field denotes the version of kanjidic2 structure, as more
+ than one version may exist.
+ )
+SAX.elementDecl(database_version, 3, ...)
+SAX.comment(
+ The version of the file, in the format YYYY-NN, where NN will be
+ a number starting with 01 for the first version released in a
+ calendar year, then increasing for each version in that year.
+ )
+SAX.elementDecl(date_of_creation, 3, ...)
+SAX.comment(
+ The date the file was created in international format (YYYY-MM-DD).
+ )
+SAX.elementDecl(character, 4, ...)
+SAX.elementDecl(literal, 3, ...)
+SAX.comment(
+ The character itself in UTF8 coding.
+ )
+SAX.elementDecl(codepoint, 4, ...)
+SAX.comment(
+ The codepoint element states the code of the character in the various
+ character set standards.
+ )
+SAX.elementDecl(cp_value, 3, ...)
+SAX.comment(
+ The cp_value contains the codepoint of the character in a particular
+ standard. The standard will be identified in the cp_type attribute.
+ )
+SAX.attributeDecl(cp_value, cp_type, 1, 2, NULL, ...)
+SAX.comment(
+ The cp_type attribute states the coding standard applying to the
+ element. The values assigned so far are:
+ jis208 - JIS X 0208-1997 - kuten coding (nn-nn)
+ jis212 - JIS X 0212-1990 - kuten coding (nn-nn)
+ jis213 - JIS X 0213-2000 - kuten coding (p-nn-nn)
+ ucs - Unicode 4.0 - hex coding (4 or 5 hexadecimal digits)
+ )
+SAX.elementDecl(radical, 4, ...)
+SAX.elementDecl(rad_value, 3, ...)
+SAX.comment(
+ The radical number, in the range 1 to 214. The particular
+ classification type is stated in the rad_type attribute.
+ )
+SAX.attributeDecl(rad_value, rad_type, 1, 2, NULL, ...)
+SAX.comment(
+ The rad_type attribute states the type of radical classification.
+ classical - as recorded in the KangXi Zidian.
+ nelson - as used in the Nelson "Modern Japanese-English
+ Character Dictionary" (i.e. the Classic, not the New Nelson).
+ This will only be used where Nelson reclassified the kanji.
+ )
+SAX.elementDecl(misc, 4, ...)
+SAX.elementDecl(grade, 3, ...)
+SAX.comment(
+ The Jouyou Kanji grade level. 1 through 6 indicate the grade in which
+ the kanji is taught in Japanese schools. 8 indicates it is one of the
+ remaining Jouyou Kanji to be learned in junior high school, and 9
+ indicates it is a Jinmeiyou (for use in names) kanji. [G]
+ )
+SAX.elementDecl(stroke_count, 3, ...)
+SAX.comment(
+ The stroke count of the kanji, including the radical. If more than
+ one, the first is considered the accepted count, while subsequent ones
+ are common miscounts. (See Appendix E. of the KANJIDIC documentation
+ for some of the rules applied when counting strokes in some of the
+ radicals.) [S]
+ )
+SAX.elementDecl(variant, 3, ...)
+SAX.comment(
+ A cross-reference code to another kanji, usually regarded as a variant.
+ The type of cross-reference is given in the var_type attribute.
+ )
+SAX.attributeDecl(variant, var_type, 1, 2, NULL, ...)
+SAX.comment(
+ The var_type attribute indicates the type of variant code. The current
+ values are:
+ jis208 - in JIS X 0208 - kuten coding
+ jis212 - in JIS X 0212 - kuten coding
+ jis213 - in JIS X 0213 - kuten coding
+ deroo - De Roo number - numeric
+ njecd - Halpern NJECD index number - numeric
+ s_h - The Kanji Dictionary (Spahn & Hadamitzky) - descriptor
+ nelson - "Classic" Nelson - numeric
+ oneill - Japanese Names (O'Neill) - numeric
+ )
+SAX.elementDecl(freq, 3, ...)
+SAX.comment(
+ A frequency-of-use ranking. The 2,500 most-used characters have a
+ ranking; those characters that lack this field are not ranked. The
+ frequency is a number from 1 to 2,500 that expresses the relative
+ frequency of occurrence of a character in modern Japanese. This is
+ based on a survey in newspapers, so it is biassed towards kanji
+ used in newspaper articles. The discrimination between the less
+ frequently used kanji is not strong.
+ )
+SAX.elementDecl(rad_name, 3, ...)
+SAX.comment(
+ When the kanji is itself a radical and has a name, this element
+ contains the name (in hiragana.) [T2]
+ )
+SAX.elementDecl(dic_number, 4, ...)
+SAX.comment(
+ This element contains the index numbers and similar unstructured
+ information such as page numbers in a number of published dictionaries,
+ and instructional books on kanji.
+ )
+SAX.elementDecl(dic_ref, 3, ...)
+SAX.comment(
+ Each dic_ref contains an index number. The particular dictionary,
+ etc. is defined by the dr_type attribute.
+ )
+SAX.attributeDecl(dic_ref, dr_type, 1, 2, NULL, ...)
+SAX.comment(
+ The dr_type defines the dictionary or reference book, etc. to which
+ dic_ref element applies. The initial allocation is:
+ nelson_c - "Modern Reader's Japanese-English Character Dictionary",
+ edited by Andrew Nelson (now published as the "Classic"
+ Nelson).
+ nelson_n - "The New Nelson Japanese-English Character Dictionary",
+ edited by John Haig.
+ halpern_njecd - "New Japanese-English Character Dictionary",
+ edited by Jack Halpern.
+ halpern_kkld - "Kanji Learners Dictionary" (Kodansha) edited by
+ Jack Halpern.
+ heisig - "Remembering The Kanji" by James Heisig.
+ gakken - "A New Dictionary of Kanji Usage" (Gakken)
+ oneill_names - "Japanese Names", by P.G. O'Neill.
+ oneill_kk - "Essential Kanji" by P.G. O'Neill.
+ moro - "Daikanwajiten" compiled by Morohashi. For some kanji two
+ additional attributes are used: m_vol: the volume of the
+ dictionary in which the kanji is found, and m_page: the page
+ number in the volume.
+ henshall - "A Guide To Remembering Japanese Characters" by
+ Kenneth G. Henshall.
+ sh_kk - "Kanji and Kana" by Spahn and Hadamitzky.
+ sakade - "A Guide To Reading and Writing Japanese" edited by
+ Florence Sakade.
+ henshall3 - "A Guide To Reading and Writing Japanese" 3rd
+ edition, edited by Henshall, Seeley and De Groot.
+ tutt_cards - Tuttle Kanji Cards, compiled by Alexander Kask.
+ crowley - "The Kanji Way to Japanese Language Power" by
+ Dale Crowley.
+ kanji_in_context - "Kanji in Context" by Nishiguchi and Kono.
+ busy_people - "Japanese For Busy People" vols I-III, published
+ by the AJLT. The codes are the volume.chapter.
+ kodansha_compact - the "Kodansha Compact Kanji Guide".
+ )
+SAX.attributeDecl(dic_ref, m_vol, 1, 3, NULL, ...)
+SAX.comment(
+ See above under "moro".
+ )
+SAX.attributeDecl(dic_ref, m_page, 1, 3, NULL, ...)
+SAX.comment(
+ See above under "moro".
+ )
+SAX.elementDecl(query_code, 4, ...)
+SAX.comment(
+ These codes contain information relating to the glyph, and can be used
+ for finding a required kanji. The type of code is defined by the
+ qc_type attribute.
+ )
+SAX.elementDecl(q_code, 3, ...)
+SAX.comment(
+ The q_code contains the actual query-code value, according to the
+ qc_type attribute.
+ )
+SAX.attributeDecl(q_code, qc_type, 1, 2, NULL, ...)
+SAX.comment(
+ The q_code attribute defines the type of query code. The current values
+ are:
+ skip - Halpern's SKIP (System of Kanji Indexing by Patterns)
+ code. The format is n-nn-nn. See the KANJIDIC documentation
+ for a description of the code and restrictions on the
+ commercial use of this data. [P]
+
+ sh_desc - the descriptor codes for The Kanji Dictionary (Tuttle
+ 1996) by Spahn and Hadamitzky. They are in the form nxnn.n,
+ e.g. 3k11.2, where the kanji has 3 strokes in the
+ identifying radical, it is radical "k" in the SH
+ classification system, there are 11 other strokes, and it is
+ the 2nd kanji in the 3k11 sequence. (I am very grateful to
+ Mark Spahn for providing the list of these descriptor codes
+ for the kanji in this file.) [I]
+ four_corner - the "Four Corner" code for the kanji. This is a code
+ invented by Wang Chen in 1928. See the KANJIDIC documentation
+ for an overview of the Four Corner System. [Q]
+
+ deroo - the codes developed by the late Father Joseph De Roo, and
+ published in his book "2001 Kanji" (Bojinsha). Fr De Roo
+ gave his permission for these codes to be included. [DR]
+ misclass - a possible misclassification of the kanji according
+ to one of the code types. (See the "Z" codes in the KANJIDIC
+ documentation for more details.)
+
+ )
+SAX.elementDecl(reading_meaning, 4, ...)
+SAX.comment(
+ The readings for the kanji in several languages, and the meanings, also
+ in several languages. The readings and meanings are grouped to enable
+ the handling of the situation where the meaning is differentiated by
+ reading. [T1]
+ )
+SAX.elementDecl(nanori, 3, ...)
+SAX.comment(
+ Japanese readings that are now only associated with names.
+ )
+SAX.elementDecl(rmgroup, 4, ...)
+SAX.elementDecl(reading, 3, ...)
+SAX.comment(
+ The reading element contains the reading or pronunciation
+ of the kanji.
+ )
+SAX.attributeDecl(reading, r_type, 1, 2, NULL, ...)
+SAX.comment(
+ The r_type attribute defines the type of reading in the reading
+ element. The current values are:
+ pinyin - the modern PinYin romanization of the Chinese reading
+ of the kanji. The tones are represented by a concluding
+ digit. [Y]
+ korean_r - the romanized form of the Korean reading(s) of the
+ kanji. The readings are in the (Republic of Korea) Ministry
+ of Education style of romanization. [W]
+ korean_h - the Korean reading(s) of the kanji in hangul.
+ ja_on - the "on" Japanese reading of the kanji, in katakana. A
+ second attribute r_status, if present, will indicate with
+ a value of "jy" whether the reading is approved for a
+ "Jouyou kanji".
+ ja_kun - the "kun" Japanese reading of the kanji, in hiragana.
+ Where relevant the okurigana is also included separated by a
+ ".". Readings associated with prefixes and suffixes are
+ marked with a "-". A second attribute r_status, if present,
+ will indicate with a value of "jy" whether the reading is
+ approved for a "Jouyou kanji".
+ )
+SAX.attributeDecl(reading, r_status, 1, 3, NULL, ...)
+SAX.comment(
+ See under ja_on and ja_kun above.
+ )
+SAX.elementDecl(meaning, 3, ...)
+SAX.comment(
+ The meaning associated with the kanji.
+ )
+SAX.attributeDecl(meaning, m_lang, 1, 3, NULL, ...)
+SAX.comment(
+ The m_lang attribute defines the target language of the meaning. It
+ will be coded using the two-letter language code from the ISO 639
+ standard. When absent, the value "en" (i.e. English) is implied. [{}]
+ )
+SAX.externalSubset(kanjidic2, , )
+SAX.startElementNs(kanjidic2, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.endElementNs(kanjidic2, NULL, NULL)
+SAX.endDocument()
diff --git a/result/isolat1 b/result/isolat1
new file mode 100644
index 0000000..1e5a059
--- /dev/null
+++ b/result/isolat1
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<très>là</très>
diff --git a/result/isolat1.rde b/result/isolat1.rde
new file mode 100644
index 0000000..e289b2f
--- /dev/null
+++ b/result/isolat1.rde
@@ -0,0 +1,3 @@
+0 1 très 0 0
+1 3 #text 0 1 là
+0 15 très 0 0
diff --git a/result/isolat1.rdr b/result/isolat1.rdr
new file mode 100644
index 0000000..e289b2f
--- /dev/null
+++ b/result/isolat1.rdr
@@ -0,0 +1,3 @@
+0 1 très 0 0
+1 3 #text 0 1 là
+0 15 très 0 0
diff --git a/result/isolat1.sax b/result/isolat1.sax
new file mode 100644
index 0000000..bf2a6ee
--- /dev/null
+++ b/result/isolat1.sax
@@ -0,0 +1,7 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(très)
+SAX.characters(l, 1)
+SAX.characters(à, 2)
+SAX.endElement(très)
+SAX.endDocument()
diff --git a/result/isolat1.sax2 b/result/isolat1.sax2
new file mode 100644
index 0000000..b97920a
--- /dev/null
+++ b/result/isolat1.sax2
@@ -0,0 +1,7 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(très, NULL, NULL, 0, 0, 0)
+SAX.characters(l, 1)
+SAX.characters(à, 2)
+SAX.endElementNs(très, NULL, NULL)
+SAX.endDocument()
diff --git a/result/isolat2 b/result/isolat2
new file mode 100644
index 0000000..8c290b9
--- /dev/null
+++ b/result/isolat2
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<tst>
+
+ The following table displays the characters in ISO 8859
+ Latin-1, which are printable and unlisted in the ascii
+ manual page.
+
+ Oct Dec Hex Char Description
+ --------------------------------------------------------------------
+ 240 160 A0 NO-BREAK SPACE
+ 241 161 A1 ¡ INVERTED EXCLAMATION MARK
+ 242 162 A2 ¢ CENT SIGN
+ 243 163 A3 £ POUND SIGN
+ 244 164 A4 ¤ CURRENCY SIGN
+ 245 165 A5 ¥ YEN SIGN
+ 246 166 A6 ¦ BROKEN BAR
+ 247 167 A7 § SECTION SIGN
+ 250 168 A8 ¨ DIAERESIS
+ 251 169 A9 © COPYRIGHT SIGN
+ 252 170 AA ª FEMININE ORDINAL INDICATOR
+ 253 171 AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 254 172 AC ¬ NOT SIGN
+ 255 173 AD ­ SOFT HYPHEN
+ 256 174 AE ® REGISTERED SIGN
+ 257 175 AF ¯ MACRON
+ 260 176 B0 ° DEGREE SIGN
+ 261 177 B1 ± PLUS-MINUS SIGN
+ 262 178 B2 ² SUPERSCRIPT TWO
+ 263 179 B3 ³ SUPERSCRIPT THREE
+ 264 180 B4 ´ ACUTE ACCENT
+ 265 181 B5 µ MICRO SIGN
+ 266 182 B6 ¶ PILCROW SIGN
+ 267 183 B7 · MIDDLE DOT
+ 270 184 B8 ¸ CEDILLA
+ 271 185 B9 ¹ SUPERSCRIPT ONE
+ 272 186 BA º MASCULINE ORDINAL INDICATOR
+ 273 187 BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 274 188 BC ¼ VULGAR FRACTION ONE QUARTER
+ 275 189 BD ½ VULGAR FRACTION ONE HALF
+ 276 190 BE ¾ VULGAR FRACTION THREE QUARTERS
+ 277 191 BF ¿ INVERTED QUESTION MARK
+ 300 192 C0 À LATIN CAPITAL LETTER A WITH GRAVE
+ 301 193 C1 Á LATIN CAPITAL LETTER A WITH ACUTE
+ 302 194 C2 Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 303 195 C3 Ã LATIN CAPITAL LETTER A WITH TILDE
+ 304 196 C4 Ä LATIN CAPITAL LETTER A WITH DIAERESIS
+ 305 197 C5 Å LATIN CAPITAL LETTER A WITH RING ABOVE
+ 306 198 C6 Æ LATIN CAPITAL LETTER AE
+ 307 199 C7 Ç LATIN CAPITAL LETTER C WITH CEDILLA
+ 310 200 C8 È LATIN CAPITAL LETTER E WITH GRAVE
+ 311 201 C9 É LATIN CAPITAL LETTER E WITH ACUTE
+ 312 202 CA Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 313 203 CB Ë LATIN CAPITAL LETTER E WITH DIAERESIS
+ 314 204 CC Ì LATIN CAPITAL LETTER I WITH GRAVE
+ 315 205 CD Í LATIN CAPITAL LETTER I WITH ACUTE
+ 316 206 CE Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 317 207 CF Ï LATIN CAPITAL LETTER I WITH DIAERESIS
+ 320 208 D0 Ð LATIN CAPITAL LETTER ETH
+ 321 209 D1 Ñ LATIN CAPITAL LETTER N WITH TILDE
+ 322 210 D2 Ò LATIN CAPITAL LETTER O WITH GRAVE
+ 323 211 D3 Ó LATIN CAPITAL LETTER O WITH ACUTE
+ 324 212 D4 Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 325 213 D5 Õ LATIN CAPITAL LETTER O WITH TILDE
+ 326 214 D6 Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+ 327 215 D7 × MULTIPLICATION SIGN
+ 330 216 D8 Ø LATIN CAPITAL LETTER O WITH STROKE
+ 331 217 D9 Ù LATIN CAPITAL LETTER U WITH GRAVE
+ 332 218 DA Ú LATIN CAPITAL LETTER U WITH ACUTE
+ 333 219 DB Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 334 220 DC Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+ 335 221 DD Ý LATIN CAPITAL LETTER Y WITH ACUTE
+ 336 222 DE Þ LATIN CAPITAL LETTER THORN
+ 337 223 DF ß LATIN SMALL LETTER SHARP S
+ 340 224 E0 à LATIN SMALL LETTER A WITH GRAVE
+ 341 225 E1 á LATIN SMALL LETTER A WITH ACUTE
+ 342 226 E2 â LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 343 227 E3 ã LATIN SMALL LETTER A WITH TILDE
+ 344 228 E4 ä LATIN SMALL LETTER A WITH DIAERESIS
+ 345 229 E5 å LATIN SMALL LETTER A WITH RING ABOVE
+ 346 230 E6 æ LATIN SMALL LETTER AE
+ 347 231 E7 ç LATIN SMALL LETTER C WITH CEDILLA
+ 350 232 E8 è LATIN SMALL LETTER E WITH GRAVE
+ 351 233 E9 é LATIN SMALL LETTER E WITH ACUTE
+ 352 234 EA ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 353 235 EB ë LATIN SMALL LETTER E WITH DIAERESIS
+ 354 236 EC ì LATIN SMALL LETTER I WITH GRAVE
+ 355 237 ED í LATIN SMALL LETTER I WITH ACUTE
+ 356 238 EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 357 239 EF ï LATIN SMALL LETTER I WITH DIAERESIS
+ 360 240 F0 ð LATIN SMALL LETTER ETH
+ 361 241 F1 ñ LATIN SMALL LETTER N WITH TILDE
+ 362 242 F2 ò LATIN SMALL LETTER O WITH GRAVE
+ 363 243 F3 ó LATIN SMALL LETTER O WITH ACUTE
+ 364 244 F4 ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 365 245 F5 õ LATIN SMALL LETTER O WITH TILDE
+ 366 246 F6 ö LATIN SMALL LETTER O WITH DIAERESIS
+ 367 247 F7 ÷ DIVISION SIGN
+ 370 248 F8 ø LATIN SMALL LETTER O WITH STROKE
+ 371 249 F9 ù LATIN SMALL LETTER U WITH GRAVE
+ 372 250 FA ú LATIN SMALL LETTER U WITH ACUTE
+ 373 251 FB û LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 374 252 FC ü LATIN SMALL LETTER U WITH DIAERESIS
+ 375 253 FD ý LATIN SMALL LETTER Y WITH ACUTE
+ 376 254 FE þ LATIN SMALL LETTER THORN
+ 377 255 FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
+
+</tst>
diff --git a/result/isolat2.rde b/result/isolat2.rde
new file mode 100644
index 0000000..524cb3e
--- /dev/null
+++ b/result/isolat2.rde
@@ -0,0 +1,108 @@
+0 1 tst 0 0
+1 3 #text 0 1
+
+ The following table displays the characters in ISO 8859
+ Latin-1, which are printable and unlisted in the ascii
+ manual page.
+
+ Oct Dec Hex Char Description
+ --------------------------------------------------------------------
+ 240 160 A0 NO-BREAK SPACE
+ 241 161 A1 ¡ INVERTED EXCLAMATION MARK
+ 242 162 A2 ¢ CENT SIGN
+ 243 163 A3 £ POUND SIGN
+ 244 164 A4 ¤ CURRENCY SIGN
+ 245 165 A5 ¥ YEN SIGN
+ 246 166 A6 ¦ BROKEN BAR
+ 247 167 A7 § SECTION SIGN
+ 250 168 A8 ¨ DIAERESIS
+ 251 169 A9 © COPYRIGHT SIGN
+ 252 170 AA ª FEMININE ORDINAL INDICATOR
+ 253 171 AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 254 172 AC ¬ NOT SIGN
+ 255 173 AD ­ SOFT HYPHEN
+ 256 174 AE ® REGISTERED SIGN
+ 257 175 AF ¯ MACRON
+ 260 176 B0 ° DEGREE SIGN
+ 261 177 B1 ± PLUS-MINUS SIGN
+ 262 178 B2 ² SUPERSCRIPT TWO
+ 263 179 B3 ³ SUPERSCRIPT THREE
+ 264 180 B4 ´ ACUTE ACCENT
+ 265 181 B5 µ MICRO SIGN
+ 266 182 B6 ¶ PILCROW SIGN
+ 267 183 B7 · MIDDLE DOT
+ 270 184 B8 ¸ CEDILLA
+ 271 185 B9 ¹ SUPERSCRIPT ONE
+ 272 186 BA º MASCULINE ORDINAL INDICATOR
+ 273 187 BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 274 188 BC ¼ VULGAR FRACTION ONE QUARTER
+ 275 189 BD ½ VULGAR FRACTION ONE HALF
+ 276 190 BE ¾ VULGAR FRACTION THREE QUARTERS
+ 277 191 BF ¿ INVERTED QUESTION MARK
+ 300 192 C0 À LATIN CAPITAL LETTER A WITH GRAVE
+ 301 193 C1 Ã LATIN CAPITAL LETTER A WITH ACUTE
+ 302 194 C2 Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 303 195 C3 Ã LATIN CAPITAL LETTER A WITH TILDE
+ 304 196 C4 Ä LATIN CAPITAL LETTER A WITH DIAERESIS
+ 305 197 C5 Ã… LATIN CAPITAL LETTER A WITH RING ABOVE
+ 306 198 C6 Æ LATIN CAPITAL LETTER AE
+ 307 199 C7 Ç LATIN CAPITAL LETTER C WITH CEDILLA
+ 310 200 C8 È LATIN CAPITAL LETTER E WITH GRAVE
+ 311 201 C9 É LATIN CAPITAL LETTER E WITH ACUTE
+ 312 202 CA Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 313 203 CB Ë LATIN CAPITAL LETTER E WITH DIAERESIS
+ 314 204 CC Ì LATIN CAPITAL LETTER I WITH GRAVE
+ 315 205 CD Ã LATIN CAPITAL LETTER I WITH ACUTE
+ 316 206 CE ÃŽ LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 317 207 CF Ã LATIN CAPITAL LETTER I WITH DIAERESIS
+ 320 208 D0 Ã LATIN CAPITAL LETTER ETH
+ 321 209 D1 Ñ LATIN CAPITAL LETTER N WITH TILDE
+ 322 210 D2 Ã’ LATIN CAPITAL LETTER O WITH GRAVE
+ 323 211 D3 Ó LATIN CAPITAL LETTER O WITH ACUTE
+ 324 212 D4 Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 325 213 D5 Õ LATIN CAPITAL LETTER O WITH TILDE
+ 326 214 D6 Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+ 327 215 D7 × MULTIPLICATION SIGN
+ 330 216 D8 Ø LATIN CAPITAL LETTER O WITH STROKE
+ 331 217 D9 Ù LATIN CAPITAL LETTER U WITH GRAVE
+ 332 218 DA Ú LATIN CAPITAL LETTER U WITH ACUTE
+ 333 219 DB Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 334 220 DC Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+ 335 221 DD Ã LATIN CAPITAL LETTER Y WITH ACUTE
+ 336 222 DE Þ LATIN CAPITAL LETTER THORN
+ 337 223 DF ß LATIN SMALL LETTER SHARP S
+ 340 224 E0 à LATIN SMALL LETTER A WITH GRAVE
+ 341 225 E1 á LATIN SMALL LETTER A WITH ACUTE
+ 342 226 E2 â LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 343 227 E3 ã LATIN SMALL LETTER A WITH TILDE
+ 344 228 E4 ä LATIN SMALL LETTER A WITH DIAERESIS
+ 345 229 E5 å LATIN SMALL LETTER A WITH RING ABOVE
+ 346 230 E6 æ LATIN SMALL LETTER AE
+ 347 231 E7 ç LATIN SMALL LETTER C WITH CEDILLA
+ 350 232 E8 è LATIN SMALL LETTER E WITH GRAVE
+ 351 233 E9 é LATIN SMALL LETTER E WITH ACUTE
+ 352 234 EA ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 353 235 EB ë LATIN SMALL LETTER E WITH DIAERESIS
+ 354 236 EC ì LATIN SMALL LETTER I WITH GRAVE
+ 355 237 ED í LATIN SMALL LETTER I WITH ACUTE
+ 356 238 EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 357 239 EF ï LATIN SMALL LETTER I WITH DIAERESIS
+ 360 240 F0 ð LATIN SMALL LETTER ETH
+ 361 241 F1 ñ LATIN SMALL LETTER N WITH TILDE
+ 362 242 F2 ò LATIN SMALL LETTER O WITH GRAVE
+ 363 243 F3 ó LATIN SMALL LETTER O WITH ACUTE
+ 364 244 F4 ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 365 245 F5 õ LATIN SMALL LETTER O WITH TILDE
+ 366 246 F6 ö LATIN SMALL LETTER O WITH DIAERESIS
+ 367 247 F7 ÷ DIVISION SIGN
+ 370 248 F8 ø LATIN SMALL LETTER O WITH STROKE
+ 371 249 F9 ù LATIN SMALL LETTER U WITH GRAVE
+ 372 250 FA ú LATIN SMALL LETTER U WITH ACUTE
+ 373 251 FB û LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 374 252 FC ü LATIN SMALL LETTER U WITH DIAERESIS
+ 375 253 FD ý LATIN SMALL LETTER Y WITH ACUTE
+ 376 254 FE þ LATIN SMALL LETTER THORN
+ 377 255 FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+0 15 tst 0 0
diff --git a/result/isolat2.rdr b/result/isolat2.rdr
new file mode 100644
index 0000000..524cb3e
--- /dev/null
+++ b/result/isolat2.rdr
@@ -0,0 +1,108 @@
+0 1 tst 0 0
+1 3 #text 0 1
+
+ The following table displays the characters in ISO 8859
+ Latin-1, which are printable and unlisted in the ascii
+ manual page.
+
+ Oct Dec Hex Char Description
+ --------------------------------------------------------------------
+ 240 160 A0 NO-BREAK SPACE
+ 241 161 A1 ¡ INVERTED EXCLAMATION MARK
+ 242 162 A2 ¢ CENT SIGN
+ 243 163 A3 £ POUND SIGN
+ 244 164 A4 ¤ CURRENCY SIGN
+ 245 165 A5 ¥ YEN SIGN
+ 246 166 A6 ¦ BROKEN BAR
+ 247 167 A7 § SECTION SIGN
+ 250 168 A8 ¨ DIAERESIS
+ 251 169 A9 © COPYRIGHT SIGN
+ 252 170 AA ª FEMININE ORDINAL INDICATOR
+ 253 171 AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 254 172 AC ¬ NOT SIGN
+ 255 173 AD ­ SOFT HYPHEN
+ 256 174 AE ® REGISTERED SIGN
+ 257 175 AF ¯ MACRON
+ 260 176 B0 ° DEGREE SIGN
+ 261 177 B1 ± PLUS-MINUS SIGN
+ 262 178 B2 ² SUPERSCRIPT TWO
+ 263 179 B3 ³ SUPERSCRIPT THREE
+ 264 180 B4 ´ ACUTE ACCENT
+ 265 181 B5 µ MICRO SIGN
+ 266 182 B6 ¶ PILCROW SIGN
+ 267 183 B7 · MIDDLE DOT
+ 270 184 B8 ¸ CEDILLA
+ 271 185 B9 ¹ SUPERSCRIPT ONE
+ 272 186 BA º MASCULINE ORDINAL INDICATOR
+ 273 187 BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 274 188 BC ¼ VULGAR FRACTION ONE QUARTER
+ 275 189 BD ½ VULGAR FRACTION ONE HALF
+ 276 190 BE ¾ VULGAR FRACTION THREE QUARTERS
+ 277 191 BF ¿ INVERTED QUESTION MARK
+ 300 192 C0 À LATIN CAPITAL LETTER A WITH GRAVE
+ 301 193 C1 Ã LATIN CAPITAL LETTER A WITH ACUTE
+ 302 194 C2 Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 303 195 C3 Ã LATIN CAPITAL LETTER A WITH TILDE
+ 304 196 C4 Ä LATIN CAPITAL LETTER A WITH DIAERESIS
+ 305 197 C5 Ã… LATIN CAPITAL LETTER A WITH RING ABOVE
+ 306 198 C6 Æ LATIN CAPITAL LETTER AE
+ 307 199 C7 Ç LATIN CAPITAL LETTER C WITH CEDILLA
+ 310 200 C8 È LATIN CAPITAL LETTER E WITH GRAVE
+ 311 201 C9 É LATIN CAPITAL LETTER E WITH ACUTE
+ 312 202 CA Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 313 203 CB Ë LATIN CAPITAL LETTER E WITH DIAERESIS
+ 314 204 CC Ì LATIN CAPITAL LETTER I WITH GRAVE
+ 315 205 CD Ã LATIN CAPITAL LETTER I WITH ACUTE
+ 316 206 CE ÃŽ LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 317 207 CF Ã LATIN CAPITAL LETTER I WITH DIAERESIS
+ 320 208 D0 Ã LATIN CAPITAL LETTER ETH
+ 321 209 D1 Ñ LATIN CAPITAL LETTER N WITH TILDE
+ 322 210 D2 Ã’ LATIN CAPITAL LETTER O WITH GRAVE
+ 323 211 D3 Ó LATIN CAPITAL LETTER O WITH ACUTE
+ 324 212 D4 Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 325 213 D5 Õ LATIN CAPITAL LETTER O WITH TILDE
+ 326 214 D6 Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+ 327 215 D7 × MULTIPLICATION SIGN
+ 330 216 D8 Ø LATIN CAPITAL LETTER O WITH STROKE
+ 331 217 D9 Ù LATIN CAPITAL LETTER U WITH GRAVE
+ 332 218 DA Ú LATIN CAPITAL LETTER U WITH ACUTE
+ 333 219 DB Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 334 220 DC Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+ 335 221 DD Ã LATIN CAPITAL LETTER Y WITH ACUTE
+ 336 222 DE Þ LATIN CAPITAL LETTER THORN
+ 337 223 DF ß LATIN SMALL LETTER SHARP S
+ 340 224 E0 à LATIN SMALL LETTER A WITH GRAVE
+ 341 225 E1 á LATIN SMALL LETTER A WITH ACUTE
+ 342 226 E2 â LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 343 227 E3 ã LATIN SMALL LETTER A WITH TILDE
+ 344 228 E4 ä LATIN SMALL LETTER A WITH DIAERESIS
+ 345 229 E5 å LATIN SMALL LETTER A WITH RING ABOVE
+ 346 230 E6 æ LATIN SMALL LETTER AE
+ 347 231 E7 ç LATIN SMALL LETTER C WITH CEDILLA
+ 350 232 E8 è LATIN SMALL LETTER E WITH GRAVE
+ 351 233 E9 é LATIN SMALL LETTER E WITH ACUTE
+ 352 234 EA ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 353 235 EB ë LATIN SMALL LETTER E WITH DIAERESIS
+ 354 236 EC ì LATIN SMALL LETTER I WITH GRAVE
+ 355 237 ED í LATIN SMALL LETTER I WITH ACUTE
+ 356 238 EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 357 239 EF ï LATIN SMALL LETTER I WITH DIAERESIS
+ 360 240 F0 ð LATIN SMALL LETTER ETH
+ 361 241 F1 ñ LATIN SMALL LETTER N WITH TILDE
+ 362 242 F2 ò LATIN SMALL LETTER O WITH GRAVE
+ 363 243 F3 ó LATIN SMALL LETTER O WITH ACUTE
+ 364 244 F4 ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 365 245 F5 õ LATIN SMALL LETTER O WITH TILDE
+ 366 246 F6 ö LATIN SMALL LETTER O WITH DIAERESIS
+ 367 247 F7 ÷ DIVISION SIGN
+ 370 248 F8 ø LATIN SMALL LETTER O WITH STROKE
+ 371 249 F9 ù LATIN SMALL LETTER U WITH GRAVE
+ 372 250 FA ú LATIN SMALL LETTER U WITH ACUTE
+ 373 251 FB û LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 374 252 FC ü LATIN SMALL LETTER U WITH DIAERESIS
+ 375 253 FD ý LATIN SMALL LETTER Y WITH ACUTE
+ 376 254 FE þ LATIN SMALL LETTER THORN
+ 377 255 FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
+
+
+0 15 tst 0 0
diff --git a/result/isolat2.sax b/result/isolat2.sax
new file mode 100644
index 0000000..737c948
--- /dev/null
+++ b/result/isolat2.sax
@@ -0,0 +1,35 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(tst)
+SAX.characters(
+
+ The following table d, 345)
+SAX.characters(¡ INVERTED EXCLAMATION MA, 300)
+SAX.characters( 250 168 A8 ¨ , 300)
+SAX.characters(SOFT HYPHEN
+ 256 174 , 300)
+SAX.characters( 264 180 B4 ´ AC, 300)
+SAX.characters(SCULINE ORDINAL INDICATOR
+ , 300)
+SAX.characters(1 BF ¿ INVERTED QUE, 300)
+SAX.characters( A WITH TILDE
+ 304 196, 300)
+SAX.characters( C8 È LATIN CAPITAL , 300)
+SAX.characters(APITAL LETTER I WITH GRAVE
+ , 300)
+SAX.characters( 321 209 D1 Ñ LA, 300)
+SAX.characters( LATIN CAPITAL LETTER O WITH T, 300)
+SAX.characters( 332 218 DA Ú LAT, 300)
+SAX.characters( LATIN CAPITAL LETTER THORN, 300)
+SAX.characters(3 227 E3 ã LATIN , 300)
+SAX.characters(R C WITH CEDILLA
+ 350 , 300)
+SAX.characters(36 EC ì LATIN SMALL, 300)
+SAX.characters(LETTER ETH
+ 361 241 , 300)
+SAX.characters( õ LATIN SMALL LETTER O , 300)
+SAX.characters( 250 FA ú LATIN SMA, 300)
+SAX.characters(L LETTER THORN
+ 377 25, 85)
+SAX.endElement(tst)
+SAX.endDocument()
diff --git a/result/isolat2.sax2 b/result/isolat2.sax2
new file mode 100644
index 0000000..0ac3f56
--- /dev/null
+++ b/result/isolat2.sax2
@@ -0,0 +1,35 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(tst, NULL, NULL, 0, 0, 0)
+SAX.characters(
+
+ The following table d, 345)
+SAX.characters(¡ INVERTED EXCLAMATION MA, 300)
+SAX.characters( 250 168 A8 ¨ , 300)
+SAX.characters(SOFT HYPHEN
+ 256 174 , 300)
+SAX.characters( 264 180 B4 ´ AC, 300)
+SAX.characters(SCULINE ORDINAL INDICATOR
+ , 300)
+SAX.characters(1 BF ¿ INVERTED QUE, 300)
+SAX.characters( A WITH TILDE
+ 304 196, 300)
+SAX.characters( C8 È LATIN CAPITAL , 300)
+SAX.characters(APITAL LETTER I WITH GRAVE
+ , 300)
+SAX.characters( 321 209 D1 Ñ LA, 300)
+SAX.characters( LATIN CAPITAL LETTER O WITH T, 300)
+SAX.characters( 332 218 DA Ú LAT, 300)
+SAX.characters( LATIN CAPITAL LETTER THORN, 300)
+SAX.characters(3 227 E3 ã LATIN , 300)
+SAX.characters(R C WITH CEDILLA
+ 350 , 300)
+SAX.characters(36 EC ì LATIN SMALL, 300)
+SAX.characters(LETTER ETH
+ 361 241 , 300)
+SAX.characters( õ LATIN SMALL LETTER O , 300)
+SAX.characters( 250 FA ú LATIN SMA, 300)
+SAX.characters(L LETTER THORN
+ 377 25, 85)
+SAX.endElementNs(tst, NULL, NULL)
+SAX.endDocument()
diff --git a/result/isolat3 b/result/isolat3
new file mode 100644
index 0000000..1abf7b4
--- /dev/null
+++ b/result/isolat3
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<rec>
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+then the replacement text for the entity "<code>book</code>" is:
+<eg>La Peste: Albert Camus,
+© 1947 Éditions Gallimard. &amp;rights;</eg>
+</rec>
diff --git a/result/isolat3.rde b/result/isolat3.rde
new file mode 100644
index 0000000..1067c0f
--- /dev/null
+++ b/result/isolat3.rde
@@ -0,0 +1,23 @@
+0 1 rec 0 0
+1 14 #text 0 1
+
+1 1 eg 0 0
+2 4 #cdata-section 0 1 <!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >
+1 15 eg 0 0
+1 3 #text 0 1
+then the replacement text for the entity "
+1 1 code 0 0
+2 3 #text 0 1 book
+1 15 code 0 0
+1 3 #text 0 1 " is:
+
+1 1 eg 0 0
+2 3 #text 0 1 La Peste: Albert Camus,
+© 1947 Éditions Gallimard. &rights;
+1 15 eg 0 0
+1 14 #text 0 1
+
+0 15 rec 0 0
diff --git a/result/isolat3.rdr b/result/isolat3.rdr
new file mode 100644
index 0000000..1067c0f
--- /dev/null
+++ b/result/isolat3.rdr
@@ -0,0 +1,23 @@
+0 1 rec 0 0
+1 14 #text 0 1
+
+1 1 eg 0 0
+2 4 #cdata-section 0 1 <!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >
+1 15 eg 0 0
+1 3 #text 0 1
+then the replacement text for the entity "
+1 1 code 0 0
+2 3 #text 0 1 book
+1 15 code 0 0
+1 3 #text 0 1 " is:
+
+1 1 eg 0 0
+2 3 #text 0 1 La Peste: Albert Camus,
+© 1947 Éditions Gallimard. &rights;
+1 15 eg 0 0
+1 14 #text 0 1
+
+0 15 rec 0 0
diff --git a/result/isolat3.sax b/result/isolat3.sax
new file mode 100644
index 0000000..7c40e6e
--- /dev/null
+++ b/result/isolat3.sax
@@ -0,0 +1,29 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(rec)
+SAX.characters(
+, 1)
+SAX.startElement(eg)
+SAX.pcdata(<!ENTITY % pub "&, 162)
+SAX.endElement(eg)
+SAX.characters(
+then the replacement text for, 43)
+SAX.startElement(code)
+SAX.characters(book, 4)
+SAX.endElement(code)
+SAX.characters(" is:
+, 6)
+SAX.startElement(eg)
+SAX.characters(La Peste: Albert Camus,
+, 25)
+SAX.characters(©, 2)
+SAX.characters( 1947 , 6)
+SAX.characters(É, 2)
+SAX.characters(ditions Gallimard. , 19)
+SAX.characters(&, 1)
+SAX.characters(rights;, 7)
+SAX.endElement(eg)
+SAX.characters(
+, 1)
+SAX.endElement(rec)
+SAX.endDocument()
diff --git a/result/isolat3.sax2 b/result/isolat3.sax2
new file mode 100644
index 0000000..31296af
--- /dev/null
+++ b/result/isolat3.sax2
@@ -0,0 +1,29 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(rec, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(eg, NULL, NULL, 0, 0, 0)
+SAX.pcdata(<!ENTITY % pub "&, 162)
+SAX.endElementNs(eg, NULL, NULL)
+SAX.characters(
+then the replacement text for, 43)
+SAX.startElementNs(code, NULL, NULL, 0, 0, 0)
+SAX.characters(book, 4)
+SAX.endElementNs(code, NULL, NULL)
+SAX.characters(" is:
+, 6)
+SAX.startElementNs(eg, NULL, NULL, 0, 0, 0)
+SAX.characters(La Peste: Albert Camus,
+, 25)
+SAX.characters(©, 2)
+SAX.characters( 1947 , 6)
+SAX.characters(É, 2)
+SAX.characters(ditions Gallimard. , 19)
+SAX.characters(&, 1)
+SAX.characters(rights;, 7)
+SAX.endElementNs(eg, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(rec, NULL, NULL)
+SAX.endDocument()
diff --git a/result/japancrlf.xml b/result/japancrlf.xml
new file mode 100644
index 0000000..60b307c
--- /dev/null
+++ b/result/japancrlf.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<入力メッセージ xmlns="http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826">
+ <c8c:Ele xmlns:c8c="http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826"/>
+</入力メッセージ>
diff --git a/result/japancrlf.xml.rde b/result/japancrlf.xml.rde
new file mode 100644
index 0000000..0bc5af7
--- /dev/null
+++ b/result/japancrlf.xml.rde
@@ -0,0 +1,7 @@
+0 1 入力メッセージ 0 0
+1 14 #text 0 1
+
+1 1 c8c:Ele 1 0
+1 14 #text 0 1
+
+0 15 入力メッセージ 0 0
diff --git a/result/japancrlf.xml.rdr b/result/japancrlf.xml.rdr
new file mode 100644
index 0000000..0bc5af7
--- /dev/null
+++ b/result/japancrlf.xml.rdr
@@ -0,0 +1,7 @@
+0 1 入力メッセージ 0 0
+1 14 #text 0 1
+
+1 1 c8c:Ele 1 0
+1 14 #text 0 1
+
+0 15 入力メッセージ 0 0
diff --git a/result/japancrlf.xml.sax b/result/japancrlf.xml.sax
new file mode 100644
index 0000000..c3bbdc6
--- /dev/null
+++ b/result/japancrlf.xml.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(入力メッセージ, xmlns='http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826')
+SAX.characters(
+ , 2)
+SAX.startElement(c8c:Ele, xmlns:c8c='http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826')
+SAX.endElement(c8c:Ele)
+SAX.characters(
+, 1)
+SAX.endElement(入力メッセージ)
+SAX.endDocument()
diff --git a/result/japancrlf.xml.sax2 b/result/japancrlf.xml.sax2
new file mode 100644
index 0000000..878eae4
--- /dev/null
+++ b/result/japancrlf.xml.sax2
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(入力メッセージ, NULL, 'http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826', 1, xmlns='http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826', 0, 0)
+SAX.characters(
+ , 2)
+SAX.startElementNs(Ele, c8c, 'http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826', 1, xmlns:c8c='http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826', 0, 0)
+SAX.endElementNs(Ele, c8c, 'http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826')
+SAX.characters(
+, 1)
+SAX.endElementNs(入力メッセージ, NULL, 'http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826')
+SAX.endDocument()
diff --git a/result/namespaces/err_0.xml b/result/namespaces/err_0.xml
new file mode 100644
index 0000000..968d954
--- /dev/null
+++ b/result/namespaces/err_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<foo xmlnsbar="1"/>
diff --git a/result/namespaces/err_0.xml.err b/result/namespaces/err_0.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/namespaces/err_0.xml.err
diff --git a/result/namespaces/err_1.xml b/result/namespaces/err_1.xml
new file mode 100644
index 0000000..a4aa8ff
--- /dev/null
+++ b/result/namespaces/err_1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<foo xmlns:="http://example.com/"/>
diff --git a/result/namespaces/err_1.xml.err b/result/namespaces/err_1.xml.err
new file mode 100644
index 0000000..77466cf
--- /dev/null
+++ b/result/namespaces/err_1.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_1.xml:1: namespace error : Failed to parse QName 'xmlns:'
+<foo xmlns:="http://example.com/"/>
+ ^
diff --git a/result/namespaces/err_10.xml b/result/namespaces/err_10.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/namespaces/err_10.xml
diff --git a/result/namespaces/err_10.xml.err b/result/namespaces/err_10.xml.err
new file mode 100644
index 0000000..a4a4b55
--- /dev/null
+++ b/result/namespaces/err_10.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_10.xml:1: parser error : Attribute xmlns redefined
+<tst xmlns="http://example.com/" xmlns="http://example.com/"/>
+ ^
diff --git a/result/namespaces/err_11.xml b/result/namespaces/err_11.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/namespaces/err_11.xml
diff --git a/result/namespaces/err_11.xml.err b/result/namespaces/err_11.xml.err
new file mode 100644
index 0000000..619bc00
--- /dev/null
+++ b/result/namespaces/err_11.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_11.xml:1: parser error : Attribute xmlns:a redefined
+<tst xmlns:a="http://example.com/" xmlns:a="http://example.com/"/>
+ ^
diff --git a/result/namespaces/err_2.xml b/result/namespaces/err_2.xml
new file mode 100644
index 0000000..73e727b
--- /dev/null
+++ b/result/namespaces/err_2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<:/>
diff --git a/result/namespaces/err_2.xml.err b/result/namespaces/err_2.xml.err
new file mode 100644
index 0000000..031bcff
--- /dev/null
+++ b/result/namespaces/err_2.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_2.xml:1: namespace error : Failed to parse QName ':'
+<:/>
+ ^
diff --git a/result/namespaces/err_3.xml b/result/namespaces/err_3.xml
new file mode 100644
index 0000000..ee51834
--- /dev/null
+++ b/result/namespaces/err_3.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<:foo/>
diff --git a/result/namespaces/err_3.xml.err b/result/namespaces/err_3.xml.err
new file mode 100644
index 0000000..a18fe9f
--- /dev/null
+++ b/result/namespaces/err_3.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_3.xml:1: namespace error : Failed to parse QName ':foo'
+<:foo/>
+ ^
diff --git a/result/namespaces/err_4.xml b/result/namespaces/err_4.xml
new file mode 100644
index 0000000..d0d664e
--- /dev/null
+++ b/result/namespaces/err_4.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<f: xmlns:f="http://example.com/foo"/>
diff --git a/result/namespaces/err_4.xml.err b/result/namespaces/err_4.xml.err
new file mode 100644
index 0000000..c9b0c02
--- /dev/null
+++ b/result/namespaces/err_4.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_4.xml:1: namespace error : Failed to parse QName 'f:'
+<f: xmlns:f="http://example.com/foo"/>
+ ^
diff --git a/result/namespaces/err_5.xml b/result/namespaces/err_5.xml
new file mode 100644
index 0000000..7d8d0b2
--- /dev/null
+++ b/result/namespaces/err_5.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<f:a: xmlns:f="http://example.com/foo"/>
diff --git a/result/namespaces/err_5.xml.err b/result/namespaces/err_5.xml.err
new file mode 100644
index 0000000..432a2e1
--- /dev/null
+++ b/result/namespaces/err_5.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_5.xml:1: namespace error : Failed to parse QName 'f:a:'
+<f:a: xmlns:f="http://example.com/foo"/>
+ ^
diff --git a/result/namespaces/err_6.xml b/result/namespaces/err_6.xml
new file mode 100644
index 0000000..daa2a58
--- /dev/null
+++ b/result/namespaces/err_6.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<f:a:b xmlns:f="http://example.com/foo"/>
diff --git a/result/namespaces/err_6.xml.err b/result/namespaces/err_6.xml.err
new file mode 100644
index 0000000..47c14fd
--- /dev/null
+++ b/result/namespaces/err_6.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_6.xml:1: namespace error : Failed to parse QName 'f:a:'
+<f:a:b xmlns:f="http://example.com/foo"/>
+ ^
diff --git a/result/namespaces/err_7.xml b/result/namespaces/err_7.xml
new file mode 100644
index 0000000..4b4c662
--- /dev/null
+++ b/result/namespaces/err_7.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<f:foo/>
diff --git a/result/namespaces/err_7.xml.err b/result/namespaces/err_7.xml.err
new file mode 100644
index 0000000..e7ff95b
--- /dev/null
+++ b/result/namespaces/err_7.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_7.xml:1: namespace error : Namespace prefix f on foo is not defined
+<f:foo/>
+ ^
diff --git a/result/namespaces/err_8.xml b/result/namespaces/err_8.xml
new file mode 100644
index 0000000..5608312
--- /dev/null
+++ b/result/namespaces/err_8.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<tst/>
diff --git a/result/namespaces/err_8.xml.err b/result/namespaces/err_8.xml.err
new file mode 100644
index 0000000..e6735d7
--- /dev/null
+++ b/result/namespaces/err_8.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_8.xml:1: namespace error : xml namespace prefix mapped to wrong URI
+<tst xmlns:xml="http://example.com/"/>
+ ^
diff --git a/result/namespaces/err_9.xml b/result/namespaces/err_9.xml
new file mode 100644
index 0000000..0407dff
--- /dev/null
+++ b/result/namespaces/err_9.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<tst xmlns:a="http://example.com/" xmlns:b="http://example.com/" a:err="1" b:err="2"/>
diff --git a/result/namespaces/err_9.xml.err b/result/namespaces/err_9.xml.err
new file mode 100644
index 0000000..d1837a1
--- /dev/null
+++ b/result/namespaces/err_9.xml.err
@@ -0,0 +1,3 @@
+./test/namespaces/err_9.xml:2: namespace error : Namespaced Attribute err in 'http://example.com/' redefined
+ a:err="1" b:err="2"/>
+ ^
diff --git a/result/noent/att1 b/result/noent/att1
new file mode 100644
index 0000000..00aa6be
--- /dev/null
+++ b/result/noent/att1
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc attr="to normalize with a space"/>
diff --git a/result/noent/att10 b/result/noent/att10
new file mode 100644
index 0000000..07f0096
--- /dev/null
+++ b/result/noent/att10
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (tst)*>
+<!ELEMENT tst (#PCDATA)>
+<!ATTLIST tst a NMTOKENS #IMPLIED>
+<!ATTLIST tst b CDATA #IMPLIED>
+<!ENTITY d "&#xD;">
+<!ENTITY a "&#xA;">
+<!ENTITY da "&#xD;&#xA;">
+]>
+<doc>
+<tst a="xyz" b=" xyz"/>
+<tst a="A B" b=" A B "/>
+<tst a="&#13;&#13;A&#10;&#10;B&#13;&#10;" b="&#13;&#13;A&#10;&#10;B&#13;&#10;"/>
+<tst a="x y" b=" x y "/>
+<tst a="a b" b=" a b "/>
+<tst a="a b" b=" a b "/>
+</doc>
diff --git a/result/noent/att11 b/result/noent/att11
new file mode 100644
index 0000000..3646e62
--- /dev/null
+++ b/result/noent/att11
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE attributes [
+<!ELEMENT attributes EMPTY>
+<!ATTLIST attributes nmtoken NMTOKEN #IMPLIED>
+<!ATTLIST attributes nmtokens NMTOKENS #IMPLIED>
+<!ENTITY ent " entity&recursive; ">
+<!ENTITY recursive "reference">
+]>
+<attributes nmtoken="entityreference entityreference entityreference" nmtokens="Test&#13;&#10; this normalization"/>
diff --git a/result/noent/att2 b/result/noent/att2
new file mode 100644
index 0000000..28989a2
--- /dev/null
+++ b/result/noent/att2
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc attr="to normalize with a space"/>
diff --git a/result/noent/att3 b/result/noent/att3
new file mode 100644
index 0000000..3f3ac5c
--- /dev/null
+++ b/result/noent/att3
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<select onclick="aaaa&#10; bbbb&#xA0;">f&#xA0;oo</select>
diff --git a/result/noent/att4 b/result/noent/att4
new file mode 100644
index 0000000..882cea7
--- /dev/null
+++ b/result/noent/att4
@@ -0,0 +1,9264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC) -->
+<electroxml modified="20021216T072726">
+ <data from="20021031T22" to="20021130T22">
+ <select>
+ <device serialnumb="E00003562">
+ <par memind="113400" h="3dc1a8de">
+ <val o="0" v="53"/>
+ <val o="e08" v="53"/>
+ <val o="1c32" v="53"/>
+ <val o="2a3c" v="53"/>
+ <val o="3835" v="53"/>
+ <val o="4645" v="53"/>
+ <val o="5455" v="53"/>
+ <val o="6265" v="53"/>
+ <val o="7075" v="53"/>
+ <val o="7e85" v="53"/>
+ <val o="8c96" v="53"/>
+ <val o="9aa5" v="53"/>
+ <val o="a8b6" v="53"/>
+ <val o="b6c5" v="53"/>
+ <val o="c4d7" v="53"/>
+ <val o="d30b" v="53"/>
+ <val o="e0f6" v="53"/>
+ <val o="ef06" v="53"/>
+ <val o="fd17" v="53"/>
+ <val o="10b27" v="53"/>
+ <val o="11937" v="53"/>
+ <val o="12746" v="53"/>
+ <val o="13556" v="53"/>
+ <val o="14366" v="53"/>
+ <val o="15181" v="53"/>
+ <val o="15f85" v="53"/>
+ <val o="16d95" v="53"/>
+ <val o="17ba4" v="53"/>
+ <val o="189b5" v="53"/>
+ <val o="197c4" v="53"/>
+ <val o="1a5d5" v="53"/>
+ <val o="1b3e6" v="53"/>
+ <val o="1c1f6" v="53"/>
+ <val o="1d005" v="53"/>
+ <val o="1de15" v="53"/>
+ <val o="1ec25" v="53"/>
+ <val o="1fa36" v="53"/>
+ <val o="20845" v="53"/>
+ <val o="21656" v="53"/>
+ <val o="22465" v="53"/>
+ <val o="23276" v="53"/>
+ <val o="24086" v="53"/>
+ <val o="24e99" v="53"/>
+ <val o="25ca7" v="53"/>
+ <val o="26ab7" v="53"/>
+ <val o="278c6" v="53"/>
+ <val o="286d6" v="53"/>
+ <val o="294e6" v="53"/>
+ <val o="2a301" v="53"/>
+ <val o="2b105" v="53"/>
+ <val o="2bf15" v="53"/>
+ <val o="2cd25" v="53"/>
+ <val o="2db35" v="53"/>
+ <val o="2e946" v="53"/>
+ <val o="2f755" v="53"/>
+ <val o="30566" v="53"/>
+ <val o="31375" v="53"/>
+ <val o="3219e" v="53"/>
+ <val o="32f96" v="53"/>
+ <val o="33da6" v="53"/>
+ <val o="34bb6" v="53"/>
+ <val o="359de" v="53"/>
+ <val o="367d6" v="53"/>
+ <val o="375e6" v="53"/>
+ <val o="3840e" v="53"/>
+ <val o="3921e" v="53"/>
+ <val o="3a016" v="53"/>
+ <val o="3ae27" v="53"/>
+ <val o="3bc36" v="53"/>
+ <val o="3ca47" v="53"/>
+ <val o="3d856" v="53"/>
+ <val o="3e667" v="53"/>
+ <val o="3f481" v="53"/>
+ <val o="40285" v="53"/>
+ <val o="41095" v="53"/>
+ <val o="41ea5" v="53"/>
+ <val o="42cb5" v="53"/>
+ <val o="43ac5" v="53"/>
+ <val o="448d5" v="53"/>
+ <val o="456e6" v="53"/>
+ <val o="464f5" v="53"/>
+ <val o="480ff" v="53"/>
+ <val o="48f0e" v="53"/>
+ <val o="49d1d" v="53"/>
+ <val o="4ab46" v="53"/>
+ <val o="4b955" v="53"/>
+ <val o="4c769" v="53"/>
+ <val o="4d577" v="53"/>
+ <val o="4e387" v="53"/>
+ <val o="4f196" v="53"/>
+ <val o="4ffa6" v="53"/>
+ <val o="50dd0" v="53"/>
+ <val o="51bc6" v="53"/>
+ <val o="529d6" v="53"/>
+ <val o="537e7" v="53"/>
+ <val o="54600" v="53"/>
+ <val o="55406" v="53"/>
+ <val o="56215" v="53"/>
+ <val o="57026" v="53"/>
+ <val o="57e36" v="53"/>
+ <val o="58c46" v="53"/>
+ <val o="59a70" v="53"/>
+ <val o="5a867" v="53"/>
+ <val o="5b676" v="53"/>
+ <val o="5c487" v="53"/>
+ <val o="5d296" v="53"/>
+ <val o="5e0a9" v="53"/>
+ <val o="5eeb8" v="53"/>
+ <val o="5fcc6" v="53"/>
+ <val o="60ad7" v="53"/>
+ <val o="618e7" v="53"/>
+ <val o="626f7" v="53"/>
+ <val o="63507" v="53"/>
+ <val o="64317" v="53"/>
+ <val o="65127" v="53"/>
+ <val o="65f37" v="53"/>
+ <val o="66d46" v="53"/>
+ <val o="67b57" v="53"/>
+ <val o="68967" v="53"/>
+ <val o="69782" v="53"/>
+ <val o="6a586" v="53"/>
+ <val o="6b395" v="53"/>
+ <val o="6c1a6" v="53"/>
+ <val o="6cfb5" v="53"/>
+ <val o="6ddc6" v="53"/>
+ <val o="6ebd6" v="53"/>
+ <val o="6f9e6" v="53"/>
+ <val o="707f6" v="53"/>
+ <val o="71607" v="53"/>
+ <val o="72417" v="53"/>
+ <val o="73227" v="53"/>
+ <val o="74037" v="53"/>
+ <val o="74e47" v="53"/>
+ <val o="75c57" v="53"/>
+ <val o="76a63" v="53"/>
+ <val o="77873" v="53"/>
+ <val o="78680" v="53"/>
+ <val o="7948f" v="53"/>
+ <val o="7a29f" v="53"/>
+ <val o="7b0af" v="53"/>
+ <val o="7bebf" v="53"/>
+ <val o="7cccf" v="53"/>
+ <val o="7dadf" v="53"/>
+ <val o="7e8fa" v="53"/>
+ <val o="7f70a" v="53"/>
+ <val o="8051a" v="53"/>
+ <val o="8132a" v="53"/>
+ <val o="8213a" v="53"/>
+ <val o="82f4a" v="53"/>
+ <val o="83d5a" v="53"/>
+ <val o="84b6a" v="53"/>
+ <val o="8597a" v="53"/>
+ <val o="8678b" v="53"/>
+ <val o="8759b" v="53"/>
+ <val o="883ac" v="53"/>
+ <val o="891bb" v="53"/>
+ <val o="89fca" v="53"/>
+ <val o="8adda" v="53"/>
+ <val o="8bbeb" v="53"/>
+ <val o="8c9fc" v="53"/>
+ <val o="8d80b" v="53"/>
+ <val o="8e61a" v="53"/>
+ <val o="8f42a" v="53"/>
+ <val o="9023a" v="53"/>
+ <val o="9104a" v="53"/>
+ <val o="91e5a" v="53"/>
+ <val o="92c6a" v="53"/>
+ <val o="93a84" v="53"/>
+ <val o="94885" v="53"/>
+ <val o="95694" v="53"/>
+ <val o="964a5" v="53"/>
+ <val o="972b4" v="53"/>
+ <val o="980c5" v="53"/>
+ <val o="98ed4" v="53"/>
+ <val o="99ce5" v="53"/>
+ <val o="9aaf5" v="53"/>
+ <val o="9b906" v="53"/>
+ <val o="9c716" v="53"/>
+ <val o="9d526" v="53"/>
+ <val o="9e336" v="53"/>
+ <val o="9f145" v="53"/>
+ <val o="9ff56" v="53"/>
+ <val o="a0d65" v="53"/>
+ <val o="a1b77" v="53"/>
+ <val o="a2986" v="53"/>
+ <val o="a3795" v="53"/>
+ <val o="a45a7" v="53"/>
+ <val o="a53b6" v="53"/>
+ <val o="a61c7" v="53"/>
+ <val o="a6fd6" v="53"/>
+ <val o="a7e00" v="53"/>
+ <val o="a8c00" v="53"/>
+ <val o="a9a05" v="53"/>
+ <val o="aa815" v="53"/>
+ <val o="ab625" v="53"/>
+ <val o="ac435" v="53"/>
+ <val o="ad245" v="53"/>
+ <val o="ae055" v="53"/>
+ <val o="aee65" v="53"/>
+ <val o="afc75" v="53"/>
+ <val o="b0a85" v="53"/>
+ <val o="b26a6" v="53"/>
+ <val o="b34b6" v="53"/>
+ <val o="b42c6" v="53"/>
+ <val o="b50d6" v="53"/>
+ <val o="b5ee7" v="53"/>
+ <val o="b6cf6" v="53"/>
+ <val o="b7b07" v="53"/>
+ <val o="b8917" v="53"/>
+ <val o="b9728" v="53"/>
+ <val o="ba537" v="53"/>
+ <val o="bb347" v="53"/>
+ <val o="bc157" v="53"/>
+ <val o="bcf67" v="53"/>
+ <val o="bdd81" v="53"/>
+ <val o="beb86" v="53"/>
+ <val o="bf995" v="53"/>
+ <val o="c07a6" v="53"/>
+ <val o="c15b5" v="53"/>
+ <val o="c23c6" v="53"/>
+ <val o="c31d5" v="53"/>
+ <val o="c3fe6" v="53"/>
+ <val o="c4df5" v="53"/>
+ <val o="c5c06" v="53"/>
+ <val o="c6a16" v="53"/>
+ <val o="c7826" v="53"/>
+ <val o="c8636" v="53"/>
+ <val o="c9446" v="53"/>
+ <val o="ca256" v="53"/>
+ <val o="cb066" v="53"/>
+ <val o="cbe76" v="53"/>
+ <val o="ccc87" v="53"/>
+ <val o="cda96" v="53"/>
+ <val o="ce8a8" v="53"/>
+ <val o="cf6b7" v="53"/>
+ <val o="d04c8" v="53"/>
+ <val o="d12d7" v="53"/>
+ <val o="d20e7" v="53"/>
+ <val o="d2f02" v="53"/>
+ <val o="d3d05" v="53"/>
+ <val o="d4b15" v="53"/>
+ <val o="d5926" v="53"/>
+ <val o="d6735" v="53"/>
+ <val o="d7546" v="53"/>
+ <val o="d8355" v="53"/>
+ <val o="d9166" v="53"/>
+ <val o="d9f75" v="53"/>
+ <val o="dad87" v="53"/>
+ <val o="dbb97" v="53"/>
+ <val o="dc9a8" v="53"/>
+ <val o="dd7b7" v="53"/>
+ <val o="de5c6" v="53"/>
+ <val o="df3d7" v="53"/>
+ <val o="e01d7" v="53"/>
+ <val o="e0fe5" v="53"/>
+ <val o="e1df5" v="53"/>
+ <val o="e2c04" v="53"/>
+ <val o="e3a14" v="53"/>
+ <val o="e4824" v="53"/>
+ <val o="e5634" v="53"/>
+ <val o="e6444" v="53"/>
+ <val o="e7255" v="53"/>
+ <val o="e806f" v="53"/>
+ <val o="e8e7f" v="53"/>
+ <val o="e9c8e" v="53"/>
+ <val o="eaa9f" v="53"/>
+ <val o="eb8ae" v="53"/>
+ <val o="ec6bf" v="53"/>
+ <val o="ed4ce" v="53"/>
+ <val o="ee2df" v="53"/>
+ <val o="ef0ef" v="53"/>
+ <val o="eff01" v="53"/>
+ <val o="f0d10" v="53"/>
+ <val o="f1b20" v="53"/>
+ <val o="f2930" v="53"/>
+ <val o="f3740" v="53"/>
+ <val o="f4551" v="53"/>
+ <val o="f5361" v="53"/>
+ <val o="f6172" v="53"/>
+ <val o="f6f80" v="53"/>
+ <val o="f7d91" v="53"/>
+ <val o="f8ba1" v="53"/>
+ <val o="f99b1" v="53"/>
+ <val o="fa7c0" v="53"/>
+ <val o="fb5d1" v="53"/>
+ <val o="fc3e0" v="53"/>
+ <val o="fd1fb" v="53"/>
+ <val o="fe00b" v="53"/>
+ <val o="fee1c" v="53"/>
+ <val o="ffc2c" v="53"/>
+ <val o="100a3b" v="53"/>
+ <val o="10184c" v="53"/>
+ <val o="10265b" v="53"/>
+ <val o="10346c" v="53"/>
+ <val o="10427b" v="53"/>
+ <val o="10508d" v="53"/>
+ <val o="105e9d" v="53"/>
+ <val o="106cad" v="53"/>
+ <val o="107abd" v="53"/>
+ <val o="1088cd" v="53"/>
+ <val o="1096de" v="53"/>
+ <val o="10a4ed" v="53"/>
+ <val o="10b2fe" v="53"/>
+ <val o="10c10d" v="53"/>
+ <val o="10cf1e" v="53"/>
+ <val o="10dd2e" v="53"/>
+ <val o="10eb66" v="53"/>
+ <val o="10f94e" v="53"/>
+ <val o="11075e" v="53"/>
+ <val o="11156d" v="53"/>
+ <val o="112388" v="53"/>
+ <val o="113187" v="53"/>
+ <val o="113fb0" v="53"/>
+ <val o="114da6" v="53"/>
+ <val o="115bb6" v="53"/>
+ <val o="1169c6" v="53"/>
+ <val o="1177d6" v="53"/>
+ <val o="1185e8" v="53"/>
+ <val o="1193f7" v="53"/>
+ <val o="11a208" v="53"/>
+ <val o="11b017" v="53"/>
+ <val o="11be2f" v="53"/>
+ <val o="11cc37" v="53"/>
+ <val o="11da47" v="53"/>
+ <val o="11e857" v="53"/>
+ <val o="11f667" v="53"/>
+ <val o="120578" v="53"/>
+ <val o="121386" v="53"/>
+ <val o="122196" v="53"/>
+ <val o="122fa6" v="53"/>
+ <val o="123db5" v="53"/>
+ <val o="124bc5" v="53"/>
+ <val o="1259d5" v="53"/>
+ <val o="1267e4" v="53"/>
+ <val o="127600" v="53"/>
+ <val o="128305" v="53"/>
+ <val o="129115" v="53"/>
+ <val o="129f25" v="53"/>
+ <val o="12ad35" v="53"/>
+ <val o="12bb45" v="53"/>
+ <val o="12c954" v="53"/>
+ <val o="12d766" v="53"/>
+ <val o="12e575" v="53"/>
+ <val o="12f386" v="53"/>
+ <val o="130196" v="53"/>
+ <val o="130fa6" v="53"/>
+ <val o="131db7" v="53"/>
+ <val o="132bc5" v="53"/>
+ <val o="1339d4" v="53"/>
+ <val o="1347e5" v="53"/>
+ <val o="1355f4" v="53"/>
+ <val o="136404" v="53"/>
+ <val o="137214" v="53"/>
+ <val o="138024" v="53"/>
+ <val o="138e33" v="53"/>
+ <val o="139c44" v="53"/>
+ <val o="13aa54" v="53"/>
+ <val o="13b865" v="53"/>
+ <val o="13c67e" v="53"/>
+ <val o="13d48e" v="53"/>
+ <val o="13e29e" v="53"/>
+ <val o="13f0ae" v="53"/>
+ <val o="13febf" v="53"/>
+ <val o="140ccf" v="53"/>
+ <val o="141adf" v="53"/>
+ <val o="1428ef" v="53"/>
+ <val o="1436ff" v="53"/>
+ <val o="14450f" v="53"/>
+ <val o="14531f" v="53"/>
+ <val o="146130" v="53"/>
+ <val o="146f40" v="53"/>
+ <val o="147d44" v="53"/>
+ <val o="148b57" v="53"/>
+ <val o="149965" v="53"/>
+ <val o="14a775" v="53"/>
+ <val o="14b584" v="53"/>
+ <val o="14c397" v="53"/>
+ <val o="14d1a4" v="53"/>
+ <val o="14dfb6" v="53"/>
+ <val o="14edc5" v="53"/>
+ <val o="14fbd5" v="53"/>
+ <val o="1509e5" v="53"/>
+ <val o="1517ff" v="53"/>
+ <val o="152605" v="53"/>
+ <val o="153415" v="53"/>
+ <val o="154225" v="53"/>
+ <val o="155035" v="53"/>
+ <val o="155e45" v="53"/>
+ <val o="156c55" v="53"/>
+ <val o="157a65" v="53"/>
+ <val o="158875" v="53"/>
+ <val o="159686" v="53"/>
+ <val o="15a495" v="53"/>
+ <val o="15b2a6" v="53"/>
+ <val o="15c0b6" v="53"/>
+ <val o="15cec6" v="53"/>
+ <val o="15dcd5" v="53"/>
+ <val o="15eae6" v="53"/>
+ <val o="15f8f5" v="53"/>
+ <val o="160706" v="53"/>
+ <val o="161517" v="53"/>
+ <val o="162326" v="53"/>
+ <val o="163137" v="53"/>
+ <val o="163f46" v="53"/>
+ <val o="164d57" v="53"/>
+ <val o="165b67" v="53"/>
+ <val o="166982" v="53"/>
+ <val o="167786" v="53"/>
+ <val o="168596" v="53"/>
+ <val o="1693a6" v="53"/>
+ <val o="16a1b5" v="53"/>
+ <val o="16afc6" v="53"/>
+ <val o="16bdd5" v="53"/>
+ <val o="16cbe6" v="53"/>
+ <val o="16d9f6" v="53"/>
+ <val o="16e807" v="53"/>
+ <val o="16f616" v="53"/>
+ <val o="170429" v="53"/>
+ <val o="171236" v="53"/>
+ <val o="172047" v="53"/>
+ <val o="172e57" v="53"/>
+ <val o="173c67" v="53"/>
+ <val o="174a77" v="53"/>
+ <val o="175887" v="53"/>
+ <val o="176694" v="53"/>
+ <val o="1774a3" v="53"/>
+ <val o="1782b3" v="53"/>
+ <val o="1790c5" v="53"/>
+ <val o="179ed4" v="53"/>
+ <val o="17ace4" v="53"/>
+ <val o="17bafd" v="53"/>
+ <val o="17c90f" v="53"/>
+ <val o="17d71e" v="53"/>
+ <val o="17e52f" v="53"/>
+ <val o="17f33f" v="53"/>
+ <val o="18014f" v="53"/>
+ <val o="180f5f" v="53"/>
+ <val o="181d6e" v="53"/>
+ <val o="182b7f" v="53"/>
+ <val o="18398f" v="53"/>
+ <val o="1847a1" v="53"/>
+ <val o="1855af" v="53"/>
+ <val o="1863c0" v="53"/>
+ <val o="1871cf" v="53"/>
+ <val o="187fe0" v="53"/>
+ <val o="188def" v="53"/>
+ <val o="189c00" v="53"/>
+ <val o="18b80d" v="53"/>
+ <val o="18c61c" v="53"/>
+ <val o="18d42c" v="53"/>
+ <val o="18e23b" v="53"/>
+ <val o="18f04b" v="53"/>
+ <val o="18fe5e" v="53"/>
+ <val o="190c76" v="53"/>
+ <val o="191a86" v="53"/>
+ <val o="192896" v="53"/>
+ <val o="1936a6" v="53"/>
+ <val o="1944b7" v="53"/>
+ <val o="1952c6" v="53"/>
+ <val o="1960d7" v="53"/>
+ <val o="196ee6" v="53"/>
+ <val o="197cf8" v="53"/>
+ <val o="198b0f" v="53"/>
+ <val o="19991f" v="53"/>
+ <val o="19b541" v="53"/>
+ <val o="19c34d" v="53"/>
+ <val o="19d15e" v="53"/>
+ <val o="19df80" v="53"/>
+ <val o="19ed90" v="53"/>
+ <val o="19eebe" v="53"/>
+ <val o="19fb8e" v="53"/>
+ <val o="1a09a0" v="53"/>
+ <val o="1a17ae" v="53"/>
+ <val o="1a25be" v="53"/>
+ <val o="1a33cd" v="53"/>
+ <val o="1a41dd" v="53"/>
+ <val o="1a4fed" v="53"/>
+ <val o="1a5e08" v="53"/>
+ <val o="1a6c05" v="53"/>
+ <val o="1a7a15" v="53"/>
+ <val o="1a8826" v="53"/>
+ <val o="1a9637" v="53"/>
+ <val o="1aa445" v="53"/>
+ <val o="1ab255" v="53"/>
+ <val o="1ac065" v="53"/>
+ <val o="1ace75" v="53"/>
+ <val o="1adc87" v="53"/>
+ <val o="1aea96" v="53"/>
+ <val o="1af8a7" v="53"/>
+ <val o="1b06b7" v="53"/>
+ <val o="1b14c6" v="53"/>
+ <val o="1c7460" v="55"/>
+ <val o="1c8270" v="55"/>
+ <val o="1c907e" v="55"/>
+ <val o="1c9e8f" v="55"/>
+ <val o="1caca2" v="55"/>
+ <val o="1cbab1" v="55"/>
+ <val o="1cc8c1" v="55"/>
+ <val o="1cd6d0" v="55"/>
+ <val o="1ce4de" v="55"/>
+ <val o="1cf2f0" v="55"/>
+ <val o="1d0109" v="55"/>
+ <val o="1d0f06" v="55"/>
+ <val o="1d1d15" v="55"/>
+ <val o="1d2b25" v="55"/>
+ <val o="1d3935" v="55"/>
+ <val o="1d4745" v="55"/>
+ <val o="1d5555" v="55"/>
+ <val o="1d6366" v="55"/>
+ <val o="1d7175" v="55"/>
+ <val o="1d7f86" v="55"/>
+ <val o="1d8d95" v="55"/>
+ <val o="1d9ba6" v="55"/>
+ <val o="1da9b6" v="55"/>
+ <val o="1db7c7" v="55"/>
+ <val o="1dc5d5" v="55"/>
+ <val o="1dd3e6" v="55"/>
+ <val o="1de1f5" v="55"/>
+ <val o="1df006" v="55"/>
+ <val o="1dfe16" v="55"/>
+ <val o="1e0c26" v="55"/>
+ <val o="1e1a36" v="55"/>
+ <val o="1e2847" v="55"/>
+ <val o="1e3659" v="55"/>
+ <val o="1e4467" v="55"/>
+ <val o="1e5281" v="55"/>
+ <val o="1e6086" v="55"/>
+ <val o="1e6e96" v="55"/>
+ <val o="1e7ca6" v="55"/>
+ <val o="1e8ab5" v="55"/>
+ <val o="1e98c6" v="55"/>
+ <val o="1ea6d5" v="55"/>
+ <val o="1eb4e6" v="55"/>
+ <val o="1ec2f6" v="55"/>
+ <val o="1ed106" v="55"/>
+ <val o="1edf16" v="55"/>
+ <val o="1eed26" v="55"/>
+ <val o="1efb36" v="55"/>
+ <val o="1f0946" v="55"/>
+ <val o="1f1756" v="55"/>
+ <val o="1f2566" v="55"/>
+ <val o="1f3376" v="55"/>
+ <val o="1f4187" v="55"/>
+ <val o="1f4f96" v="55"/>
+ <val o="1f5da7" v="55"/>
+ <val o="1f6bb6" v="55"/>
+ <val o="1f79c7" v="55"/>
+ <val o="1f87d6" v="55"/>
+ <val o="1f95e7" v="55"/>
+ <val o="1fa401" v="55"/>
+ <val o="1fb204" v="55"/>
+ <val o="1fc016" v="55"/>
+ <val o="1fce25" v="55"/>
+ <val o="1fdc35" v="55"/>
+ <val o="1fea45" v="55"/>
+ <val o="1ff855" v="55"/>
+ <val o="200665" v="55"/>
+ <val o="201475" v="55"/>
+ <val o="202286" v="55"/>
+ <val o="203095" v="55"/>
+ <val o="203ea5" v="55"/>
+ <val o="204cb6" v="55"/>
+ <val o="205ac6" v="55"/>
+ <val o="2068d6" v="55"/>
+ <val o="2076e6" v="55"/>
+ <val o="2084f6" v="55"/>
+ <val o="209306" v="55"/>
+ <val o="20a116" v="55"/>
+ <val o="20af26" v="55"/>
+ <val o="20bd37" v="55"/>
+ <val o="20cb46" v="55"/>
+ <val o="20d957" v="55"/>
+ <val o="20e767" v="55"/>
+ <val o="20f581" v="55"/>
+ <val o="210386" v="55"/>
+ <val o="211194" v="55"/>
+ <val o="211fa5" v="55"/>
+ <val o="212db5" v="55"/>
+ <val o="213bc5" v="55"/>
+ <val o="2149d6" v="55"/>
+ <val o="2157e5" v="55"/>
+ <val o="2165f6" v="55"/>
+ <val o="217406" v="55"/>
+ <val o="218217" v="55"/>
+ <val o="219026" v="55"/>
+ <val o="219e39" v="55"/>
+ <val o="21ac46" v="55"/>
+ <val o="21ba57" v="55"/>
+ <val o="21c867" v="55"/>
+ <val o="21d677" v="55"/>
+ <val o="21e487" v="55"/>
+ <val o="21f296" v="55"/>
+ <val o="2200a6" v="55"/>
+ <val o="220eb7" v="55"/>
+ <val o="221cc6" v="55"/>
+ <val o="222ad7" v="55"/>
+ <val o="2238e7" v="55"/>
+ <val o="224701" v="55"/>
+ <val o="225505" v="55"/>
+ <val o="226315" v="55"/>
+ <val o="227125" v="55"/>
+ <val o="227f35" v="55"/>
+ <val o="228d45" v="55"/>
+ <val o="229b54" v="55"/>
+ <val o="22a965" v="55"/>
+ <val o="22b776" v="55"/>
+ <val o="22c586" v="55"/>
+ <val o="22d397" v="55"/>
+ <val o="22e1a6" v="55"/>
+ <val o="22efb6" v="55"/>
+ <val o="22fdc7" v="55"/>
+ <val o="230bd7" v="55"/>
+ <val o="2319e6" v="55"/>
+ <val o="2327f6" v="55"/>
+ <val o="23361b" v="55"/>
+ <val o="234416" v="55"/>
+ <val o="235226" v="55"/>
+ <val o="236037" v="55"/>
+ <val o="236e46" v="55"/>
+ <val o="237c57" v="55"/>
+ <val o="238a66" v="55"/>
+ <val o="239881" v="55"/>
+ <val o="23a685" v="55"/>
+ <val o="23b495" v="55"/>
+ <val o="23c2a4" v="55"/>
+ <val o="23d0b5" v="55"/>
+ <val o="23dec4" v="55"/>
+ <val o="23ecd5" v="55"/>
+ <val o="23fae4" v="55"/>
+ <val o="2408f6" v="55"/>
+ <val o="241706" v="55"/>
+ <val o="242518" v="55"/>
+ <val o="243325" v="55"/>
+ <val o="244137" v="55"/>
+ <val o="244f46" v="55"/>
+ <val o="246b66" v="55"/>
+ <val o="247976" v="55"/>
+ <val o="248786" v="55"/>
+ <val o="24957e" v="55"/>
+ <val o="24a38f" v="55"/>
+ <val o="24b19c" v="55"/>
+ <val o="24bfac" v="55"/>
+ <val o="24cdbc" v="55"/>
+ <val o="24dbcd" v="55"/>
+ <val o="24e9e5" v="55"/>
+ <val o="24f808" v="55"/>
+ <val o="250616" v="55"/>
+ <val o="251426" v="55"/>
+ <val o="252236" v="55"/>
+ <val o="253047" v="55"/>
+ <val o="253e56" v="55"/>
+ <val o="254c67" v="55"/>
+ <val o="255a76" v="55"/>
+ <val o="256887" v="55"/>
+ <val o="257697" v="55"/>
+ <val o="2584a8" v="55"/>
+ <val o="2592b6" v="55"/>
+ <val o="25a0c7" v="55"/>
+ <val o="25aed7" v="55"/>
+ <val o="25bce7" v="55"/>
+ <val o="25caf8" v="55"/>
+ <val o="25d907" v="55"/>
+ <val o="25e718" v="55"/>
+ <val o="25f527" v="55"/>
+ <val o="260338" v="55"/>
+ <val o="261149" v="55"/>
+ <val o="261f59" v="55"/>
+ <val o="262d68" v="55"/>
+ <val o="263b83" v="55"/>
+ <val o="264986" v="55"/>
+ <val o="265795" v="55"/>
+ <val o="2665a6" v="55"/>
+ <val o="2673b5" v="55"/>
+ <val o="2681c6" v="55"/>
+ <val o="268fd5" v="55"/>
+ <val o="269de6" v="55"/>
+ <val o="26abf6" v="55"/>
+ <val o="26ba06" v="55"/>
+ <val o="26c817" v="55"/>
+ <val o="26d62b" v="55"/>
+ <val o="26e436" v="55"/>
+ <val o="26f247" v="55"/>
+ <val o="270057" v="55"/>
+ <val o="270e67" v="55"/>
+ <val o="271c77" v="55"/>
+ <val o="272a87" v="55"/>
+ <val o="273897" v="55"/>
+ <val o="2746a8" v="55"/>
+ <val o="2754b9" v="55"/>
+ <val o="2762c7" v="55"/>
+ <val o="2770d8" v="55"/>
+ <val o="277ee7" v="55"/>
+ </par>
+ <par memind="16936600" h="3dc1a8de">
+ <val o="0" v="196.4"/>
+ <val o="e08" v="199.5"/>
+ <val o="1c32" v="200.8"/>
+ <val o="2a3c" v="201.8"/>
+ <val o="3835" v="199.9"/>
+ <val o="4645" v="197.9"/>
+ <val o="5455" v="193.2"/>
+ <val o="6265" v="197.6"/>
+ <val o="7075" v="195.6"/>
+ <val o="7e85" v="192.7"/>
+ <val o="8c96" v="195.3"/>
+ <val o="9aa5" v="195.4"/>
+ <val o="a8b6" v="195.6"/>
+ <val o="b6c5" v="197.3"/>
+ <val o="c4d7" v="222.6"/>
+ <val o="d30b" v="220.9"/>
+ <val o="e0f6" v="222.8"/>
+ <val o="ef06" v="180"/>
+ <val o="fd17" v="180"/>
+ <val o="10b27" v="221.4"/>
+ <val o="11937" v="222.2"/>
+ <val o="12746" v="222.5"/>
+ <val o="13556" v="220.5"/>
+ <val o="14366" v="220.8"/>
+ <val o="15181" v="220"/>
+ <val o="15f85" v="221.2"/>
+ <val o="16d95" v="220.3"/>
+ <val o="17ba4" v="221.1"/>
+ <val o="189b5" v="220.6"/>
+ <val o="197c4" v="220.9"/>
+ <val o="1a5d5" v="219.2"/>
+ <val o="1b3e6" v="219.3"/>
+ <val o="1c1f6" v="220.5"/>
+ <val o="1d005" v="220.7"/>
+ <val o="1de15" v="220.1"/>
+ <val o="1ec25" v="220.4"/>
+ <val o="1fa36" v="220.1"/>
+ <val o="20845" v="220.1"/>
+ <val o="21656" v="220.7"/>
+ <val o="22465" v="220.7"/>
+ <val o="23276" v="220.5"/>
+ <val o="24086" v="180"/>
+ <val o="24e99" v="222"/>
+ <val o="25ca7" v="221.8"/>
+ <val o="26ab7" v="220.6"/>
+ <val o="278c6" v="180"/>
+ <val o="286d6" v="220.8"/>
+ <val o="294e6" v="218.9"/>
+ <val o="2a301" v="220"/>
+ <val o="2b105" v="180"/>
+ <val o="2bf15" v="180"/>
+ <val o="2cd25" v="218.8"/>
+ <val o="2db35" v="180"/>
+ <val o="2e946" v="180"/>
+ <val o="2f755" v="180"/>
+ <val o="30566" v="219.9"/>
+ <val o="31375" v="220.5"/>
+ <val o="3219e" v="219.7"/>
+ <val o="32f96" v="220.8"/>
+ <val o="33da6" v="220.6"/>
+ <val o="34bb6" v="219"/>
+ <val o="359de" v="220.3"/>
+ <val o="367d6" v="219.3"/>
+ <val o="375e6" v="180"/>
+ <val o="3840e" v="180"/>
+ <val o="3921e" v="180"/>
+ <val o="3a016" v="180"/>
+ <val o="3ae27" v="220.9"/>
+ <val o="3bc36" v="220.1"/>
+ <val o="3ca47" v="180"/>
+ <val o="3d856" v="221.4"/>
+ <val o="3e667" v="220.2"/>
+ <val o="3f481" v="217.6"/>
+ <val o="40285" v="218.4"/>
+ <val o="41095" v="218.1"/>
+ <val o="41ea5" v="218.7"/>
+ <val o="42cb5" v="219.9"/>
+ <val o="43ac5" v="218.7"/>
+ <val o="448d5" v="180"/>
+ <val o="456e6" v="220.7"/>
+ <val o="464f5" v="222.7"/>
+ <val o="480ff" v="180"/>
+ <val o="48f0e" v="180"/>
+ <val o="49d1d" v="180"/>
+ <val o="4ab46" v="180"/>
+ <val o="4b955" v="180"/>
+ <val o="4c769" v="180"/>
+ <val o="4d577" v="180"/>
+ <val o="4e387" v="180"/>
+ <val o="4f196" v="180"/>
+ <val o="4ffa6" v="180"/>
+ <val o="50dd0" v="180"/>
+ <val o="51bc6" v="180"/>
+ <val o="529d6" v="180"/>
+ <val o="537e7" v="220.5"/>
+ <val o="54600" v="218.9"/>
+ <val o="55406" v="219.3"/>
+ <val o="56215" v="219.6"/>
+ <val o="57026" v="219.3"/>
+ <val o="57e36" v="219.7"/>
+ <val o="58c46" v="220.4"/>
+ <val o="59a70" v="220.5"/>
+ <val o="5a867" v="221.8"/>
+ <val o="5b676" v="180"/>
+ <val o="5c487" v="180"/>
+ <val o="5d296" v="180"/>
+ <val o="5e0a9" v="222.5"/>
+ <val o="5eeb8" v="224.5"/>
+ <val o="5fcc6" v="223.6"/>
+ <val o="60ad7" v="180"/>
+ <val o="618e7" v="180"/>
+ <val o="626f7" v="180"/>
+ <val o="63507" v="180"/>
+ <val o="64317" v="180"/>
+ <val o="65127" v="222.3"/>
+ <val o="65f37" v="222.6"/>
+ <val o="66d46" v="220.8"/>
+ <val o="67b57" v="220.8"/>
+ <val o="68967" v="220.2"/>
+ <val o="69782" v="220.2"/>
+ <val o="6a586" v="219.3"/>
+ <val o="6b395" v="219.8"/>
+ <val o="6c1a6" v="219"/>
+ <val o="6cfb5" v="218.7"/>
+ <val o="6ddc6" v="220.7"/>
+ <val o="6ebd6" v="180"/>
+ <val o="6f9e6" v="221.8"/>
+ <val o="707f6" v="222.8"/>
+ <val o="71607" v="180"/>
+ <val o="72417" v="180"/>
+ <val o="73227" v="180"/>
+ <val o="74037" v="223.8"/>
+ <val o="74e47" v="223.4"/>
+ <val o="75c57" v="180"/>
+ <val o="76a63" v="180"/>
+ <val o="77873" v="180"/>
+ <val o="78680" v="180"/>
+ <val o="7948f" v="180"/>
+ <val o="7a29f" v="180"/>
+ <val o="7b0af" v="222.1"/>
+ <val o="7bebf" v="221"/>
+ <val o="7cccf" v="219.5"/>
+ <val o="7dadf" v="219.9"/>
+ <val o="7e8fa" v="220.8"/>
+ <val o="7f70a" v="220.8"/>
+ <val o="8051a" v="217.9"/>
+ <val o="8132a" v="219"/>
+ <val o="8213a" v="218.6"/>
+ <val o="82f4a" v="219.4"/>
+ <val o="83d5a" v="219.7"/>
+ <val o="84b6a" v="180"/>
+ <val o="8597a" v="180"/>
+ <val o="8678b" v="180"/>
+ <val o="8759b" v="180"/>
+ <val o="883ac" v="223.1"/>
+ <val o="891bb" v="222"/>
+ <val o="89fca" v="224.2"/>
+ <val o="8adda" v="180"/>
+ <val o="8bbeb" v="180"/>
+ <val o="8c9fc" v="180"/>
+ <val o="8d80b" v="180"/>
+ <val o="8e61a" v="180"/>
+ <val o="8f42a" v="180"/>
+ <val o="9023a" v="180"/>
+ <val o="9104a" v="220.4"/>
+ <val o="91e5a" v="180"/>
+ <val o="92c6a" v="219.6"/>
+ <val o="93a84" v="219.2"/>
+ <val o="94885" v="219"/>
+ <val o="95694" v="218.5"/>
+ <val o="964a5" v="219.3"/>
+ <val o="972b4" v="219.4"/>
+ <val o="980c5" v="221"/>
+ <val o="98ed4" v="220.7"/>
+ <val o="99ce5" v="180"/>
+ <val o="9aaf5" v="180"/>
+ <val o="9b906" v="225.2"/>
+ <val o="9c716" v="225"/>
+ <val o="9d526" v="222.6"/>
+ <val o="9e336" v="223.6"/>
+ <val o="9f145" v="224.1"/>
+ <val o="9ff56" v="223.2"/>
+ <val o="a0d65" v="180"/>
+ <val o="a1b77" v="195.9"/>
+ <val o="a2986" v="190"/>
+ <val o="a3795" v="122.3"/>
+ <val o="a45a7" v="354.6"/>
+ <val o="a53b6" v="333.2"/>
+ <val o="a61c7" v="323.3"/>
+ <val o="a6fd6" v="278.1"/>
+ <val o="a7e00" v="286.2"/>
+ <val o="a8c00" v="292.3"/>
+ <val o="a9a05" v="21.4"/>
+ <val o="aa815" v="273.7"/>
+ <val o="ab625" v="272.9"/>
+ <val o="ac435" v="285.4"/>
+ <val o="ad245" v="28.5"/>
+ <val o="ae055" v="68.4"/>
+ <val o="aee65" v="147.1"/>
+ <val o="afc75" v="95.7"/>
+ <val o="b0a85" v="89.6"/>
+ <val o="b26a6" v="88.3"/>
+ <val o="b34b6" v="92.4"/>
+ <val o="b42c6" v="149.7"/>
+ <val o="b50d6" v="148.7"/>
+ <val o="b5ee7" v="127.7"/>
+ <val o="b6cf6" v="198.2"/>
+ <val o="b7b07" v="187.2"/>
+ <val o="b8917" v="182.1"/>
+ <val o="b9728" v="195.8"/>
+ <val o="ba537" v="203.8"/>
+ <val o="bb347" v="124.5"/>
+ <val o="bc157" v="159.2"/>
+ <val o="bcf67" v="230.6"/>
+ <val o="bdd81" v="79.8"/>
+ <val o="beb86" v="51.3"/>
+ <val o="bf995" v="22.5"/>
+ <val o="c07a6" v="323.7"/>
+ <val o="c15b5" v="341.6"/>
+ <val o="c23c6" v="46.4"/>
+ <val o="c31d5" v="71.9"/>
+ <val o="c3fe6" v="71.9"/>
+ <val o="c4df5" v="63.4"/>
+ <val o="c5c06" v="76.4"/>
+ <val o="c6a16" v="58.4"/>
+ <val o="c7826" v="92"/>
+ <val o="c8636" v="79.6"/>
+ <val o="c9446" v="63.1"/>
+ <val o="ca256" v="51.3"/>
+ <val o="cb066" v="81.7"/>
+ <val o="cbe76" v="205.3"/>
+ <val o="ccc87" v="96.1"/>
+ <val o="cda96" v="95.7"/>
+ <val o="ce8a8" v="96.7"/>
+ <val o="cf6b7" v="92.8"/>
+ <val o="d04c8" v="91.4"/>
+ <val o="d12d7" v="86.1"/>
+ <val o="d20e7" v="270"/>
+ <val o="d2f02" v="270.4"/>
+ <val o="d3d05" v="296.7"/>
+ <val o="d4b15" v="306.8"/>
+ <val o="d5926" v="331.7"/>
+ <val o="d6735" v="13.7"/>
+ <val o="d7546" v="46.4"/>
+ <val o="d8355" v="262.1"/>
+ <val o="d9166" v="166.2"/>
+ <val o="d9f75" v="143.6"/>
+ <val o="dad87" v="127.2"/>
+ <val o="dbb97" v="132.7"/>
+ <val o="dc9a8" v="128.3"/>
+ <val o="dd7b7" v="155.6"/>
+ <val o="de5c6" v="170.8"/>
+ <val o="df3d7" v="176.1"/>
+ <val o="e01d7" v="176.8"/>
+ <val o="e0fe5" v="168.8"/>
+ <val o="e1df5" v="172.2"/>
+ <val o="e2c04" v="185.2"/>
+ <val o="e3a14" v="196.3"/>
+ <val o="e4824" v="178.5"/>
+ <val o="e5634" v="193.7"/>
+ <val o="e6444" v="176.2"/>
+ <val o="e7255" v="196.7"/>
+ <val o="e806f" v="202.2"/>
+ <val o="e8e7f" v="99.9"/>
+ <val o="e9c8e" v="130.2"/>
+ <val o="eaa9f" v="132.9"/>
+ <val o="eb8ae" v="121.7"/>
+ <val o="ec6bf" v="100.9"/>
+ <val o="ed4ce" v="192.9"/>
+ <val o="ee2df" v="153.7"/>
+ <val o="ef0ef" v="170.4"/>
+ <val o="eff01" v="155.2"/>
+ <val o="f0d10" v="167.3"/>
+ <val o="f1b20" v="165.5"/>
+ <val o="f2930" v="184.3"/>
+ <val o="f3740" v="159.2"/>
+ <val o="f4551" v="163.4"/>
+ <val o="f5361" v="163.5"/>
+ <val o="f6172" v="160.8"/>
+ <val o="f6f80" v="165"/>
+ <val o="f7d91" v="156.4"/>
+ <val o="f8ba1" v="163.8"/>
+ <val o="f99b1" v="162.9"/>
+ <val o="fa7c0" v="154.9"/>
+ <val o="fb5d1" v="157.1"/>
+ <val o="fc3e0" v="197.2"/>
+ <val o="fd1fb" v="203.8"/>
+ <val o="fe00b" v="212.5"/>
+ <val o="fee1c" v="185.4"/>
+ <val o="ffc2c" v="187.2"/>
+ <val o="100a3b" v="162"/>
+ <val o="10184c" v="149.3"/>
+ <val o="10265b" v="136.8"/>
+ <val o="10346c" v="145.9"/>
+ <val o="10427b" v="164.1"/>
+ <val o="10508d" v="158.2"/>
+ <val o="105e9d" v="163"/>
+ <val o="106cad" v="161.6"/>
+ <val o="107abd" v="168.9"/>
+ <val o="1088cd" v="168.5"/>
+ <val o="1096de" v="165.1"/>
+ <val o="10a4ed" v="168.2"/>
+ <val o="10b2fe" v="163.9"/>
+ <val o="10c10d" v="147.5"/>
+ <val o="10cf1e" v="163"/>
+ <val o="10dd2e" v="166.3"/>
+ <val o="10eb66" v="177.4"/>
+ <val o="10f94e" v="179.7"/>
+ <val o="11075e" v="161"/>
+ <val o="11156d" v="174.4"/>
+ <val o="112388" v="203.6"/>
+ <val o="113187" v="158.3"/>
+ <val o="113fb0" v="172.9"/>
+ <val o="114da6" v="172.7"/>
+ <val o="115bb6" v="168.4"/>
+ <val o="1169c6" v="138"/>
+ <val o="1177d6" v="135.8"/>
+ <val o="1185e8" v="157.8"/>
+ <val o="1193f7" v="160.6"/>
+ <val o="11a208" v="175.7"/>
+ <val o="11b017" v="184.1"/>
+ <val o="11be2f" v="188.6"/>
+ <val o="11cc37" v="170"/>
+ <val o="11da47" v="173.6"/>
+ <val o="11e857" v="167"/>
+ <val o="11f667" v="172.6"/>
+ <val o="120578" v="164.6"/>
+ <val o="121386" v="166.8"/>
+ <val o="122196" v="151.9"/>
+ <val o="122fa6" v="158.6"/>
+ <val o="123db5" v="170.8"/>
+ <val o="124bc5" v="185.4"/>
+ <val o="1259d5" v="160.1"/>
+ <val o="1267e4" v="188.6"/>
+ <val o="127600" v="207.7"/>
+ <val o="128305" v="214.6"/>
+ <val o="129115" v="213.7"/>
+ <val o="129f25" v="218.4"/>
+ <val o="12ad35" v="210.5"/>
+ <val o="12bb45" v="178.8"/>
+ <val o="12c954" v="162.6"/>
+ <val o="12d766" v="156.4"/>
+ <val o="12e575" v="153.5"/>
+ <val o="12f386" v="143.9"/>
+ <val o="130196" v="160.8"/>
+ <val o="130fa6" v="153.4"/>
+ <val o="131db7" v="163.6"/>
+ <val o="132bc5" v="168.2"/>
+ <val o="1339d4" v="169.3"/>
+ <val o="1347e5" v="139.1"/>
+ <val o="1355f4" v="142.4"/>
+ <val o="136404" v="122.1"/>
+ <val o="137214" v="125.5"/>
+ <val o="138024" v="110.7"/>
+ <val o="138e33" v="110.6"/>
+ <val o="139c44" v="190.2"/>
+ <val o="13aa54" v="99.6"/>
+ <val o="13b865" v="209.4"/>
+ <val o="13c67e" v="76.2"/>
+ <val o="13d48e" v="61.5"/>
+ <val o="13e29e" v="44.5"/>
+ <val o="13f0ae" v="44.2"/>
+ <val o="13febf" v="60.4"/>
+ <val o="140ccf" v="64.6"/>
+ <val o="141adf" v="67.3"/>
+ <val o="1428ef" v="341.2"/>
+ <val o="1436ff" v="115.8"/>
+ <val o="14450f" v="117.3"/>
+ <val o="14531f" v="180"/>
+ <val o="146130" v="252.4"/>
+ <val o="146f40" v="261.8"/>
+ <val o="147d44" v="313.3"/>
+ <val o="148b57" v="311.3"/>
+ <val o="149965" v="292"/>
+ <val o="14a775" v="57.6"/>
+ <val o="14b584" v="151.6"/>
+ <val o="14c397" v="92.7"/>
+ <val o="14d1a4" v="93.4"/>
+ <val o="14dfb6" v="100.3"/>
+ <val o="14edc5" v="97.4"/>
+ <val o="14fbd5" v="184"/>
+ <val o="1509e5" v="289.1"/>
+ <val o="1517ff" v="274.2"/>
+ <val o="152605" v="39.8"/>
+ <val o="153415" v="6.5"/>
+ <val o="154225" v="355.9"/>
+ <val o="155035" v="19.4"/>
+ <val o="155e45" v="44.2"/>
+ <val o="156c55" v="61.4"/>
+ <val o="157a65" v="55.5"/>
+ <val o="158875" v="60.2"/>
+ <val o="159686" v="71.7"/>
+ <val o="15a495" v="66.3"/>
+ <val o="15b2a6" v="61.5"/>
+ <val o="15c0b6" v="38.5"/>
+ <val o="15cec6" v="17.3"/>
+ <val o="15dcd5" v="35.6"/>
+ <val o="15eae6" v="44.9"/>
+ <val o="15f8f5" v="71.4"/>
+ <val o="160706" v="166.1"/>
+ <val o="161517" v="125"/>
+ <val o="162326" v="176"/>
+ <val o="163137" v="195.3"/>
+ <val o="163f46" v="99.1"/>
+ <val o="164d57" v="90"/>
+ <val o="165b67" v="273.9"/>
+ <val o="166982" v="344.7"/>
+ <val o="167786" v="307.2"/>
+ <val o="168596" v="271.8"/>
+ <val o="1693a6" v="278.8"/>
+ <val o="16a1b5" v="291.5"/>
+ <val o="16afc6" v="52.9"/>
+ <val o="16bdd5" v="76.6"/>
+ <val o="16cbe6" v="87.6"/>
+ <val o="16d9f6" v="170.1"/>
+ <val o="16e807" v="174.2"/>
+ <val o="16f616" v="175.6"/>
+ <val o="170429" v="186.7"/>
+ <val o="171236" v="183.2"/>
+ <val o="172047" v="181.7"/>
+ <val o="172e57" v="173.6"/>
+ <val o="173c67" v="170.7"/>
+ <val o="174a77" v="165.4"/>
+ <val o="175887" v="163.8"/>
+ <val o="176694" v="161.7"/>
+ <val o="1774a3" v="165.4"/>
+ <val o="1782b3" v="170.9"/>
+ <val o="1790c5" v="173.5"/>
+ <val o="179ed4" v="187.9"/>
+ <val o="17ace4" v="201.8"/>
+ <val o="17bafd" v="205.9"/>
+ <val o="17c90f" v="204.6"/>
+ <val o="17d71e" v="204.1"/>
+ <val o="17e52f" v="208.2"/>
+ <val o="17f33f" v="204.4"/>
+ <val o="18014f" v="193.5"/>
+ <val o="180f5f" v="186.4"/>
+ <val o="181d6e" v="192.4"/>
+ <val o="182b7f" v="194.3"/>
+ <val o="18398f" v="184.4"/>
+ <val o="1847a1" v="184.1"/>
+ <val o="1855af" v="185.6"/>
+ <val o="1863c0" v="194.9"/>
+ <val o="1871cf" v="192.1"/>
+ <val o="187fe0" v="192.1"/>
+ <val o="188def" v="190.6"/>
+ <val o="189c00" v="185.4"/>
+ <val o="18b80d" v="170.9"/>
+ <val o="18c61c" v="187.4"/>
+ <val o="18d42c" v="191.1"/>
+ <val o="18e23b" v="191.1"/>
+ <val o="18f04b" v="197.1"/>
+ <val o="18fe5e" v="195.9"/>
+ <val o="190c76" v="189.8"/>
+ <val o="191a86" v="201.9"/>
+ <val o="192896" v="202.2"/>
+ <val o="1936a6" v="204.4"/>
+ <val o="1944b7" v="196.3"/>
+ <val o="1952c6" v="182.6"/>
+ <val o="1960d7" v="162.6"/>
+ <val o="196ee6" v="187.2"/>
+ <val o="197cf8" v="187.3"/>
+ <val o="198b0f" v="179.7"/>
+ <val o="19991f" v="181.7"/>
+ <val o="19b541" v="188.3"/>
+ <val o="19c34d" v="186.2"/>
+ <val o="19d15e" v="183.5"/>
+ <val o="19df80" v="182.2"/>
+ <val o="19ed90" v="176.5"/>
+ <val o="19eebe" v="175.6"/>
+ <val o="19fb8e" v="178.5"/>
+ <val o="1a09a0" v="223.8"/>
+ <val o="1a17ae" v="228.1"/>
+ <val o="1a25be" v="229.7"/>
+ <val o="1a33cd" v="216.1"/>
+ <val o="1a41dd" v="226.4"/>
+ <val o="1a4fed" v="249.6"/>
+ <val o="1a5e08" v="245.8"/>
+ <val o="1a6c05" v="250.1"/>
+ <val o="1a7a15" v="251.1"/>
+ <val o="1a8826" v="252.5"/>
+ <val o="1a9637" v="259.4"/>
+ <val o="1aa445" v="254.8"/>
+ <val o="1ab255" v="218.7"/>
+ <val o="1ac065" v="228.3"/>
+ <val o="1ace75" v="227.3"/>
+ <val o="1adc87" v="214.2"/>
+ <val o="1aea96" v="218.7"/>
+ <val o="1af8a7" v="217"/>
+ <val o="1b06b7" v="231.7"/>
+ <val o="1b14c6" v="230.6"/>
+ <val o="1c7460" v="52"/>
+ <val o="1c8270" v="340.3"/>
+ <val o="1c907e" v="18.5"/>
+ <val o="1c9e8f" v="357.5"/>
+ <val o="1caca2" v="344.7"/>
+ <val o="1cbab1" v="338.4"/>
+ <val o="1cc8c1" v="28.4"/>
+ <val o="1cd6d0" v="21.8"/>
+ <val o="1ce4de" v="10.4"/>
+ <val o="1cf2f0" v="343.9"/>
+ <val o="1d0109" v="342.8"/>
+ <val o="1d0f06" v="358.2"/>
+ <val o="1d1d15" v="353.5"/>
+ <val o="1d2b25" v="353.4"/>
+ <val o="1d3935" v="1.4"/>
+ <val o="1d4745" v="6.4"/>
+ <val o="1d5555" v="10.5"/>
+ <val o="1d6366" v="350.7"/>
+ <val o="1d7175" v="350.8"/>
+ <val o="1d7f86" v="357.6"/>
+ <val o="1d8d95" v="181.1"/>
+ <val o="1d9ba6" v="184.8"/>
+ <val o="1da9b6" v="192.6"/>
+ <val o="1db7c7" v="193.1"/>
+ <val o="1dc5d5" v="194.7"/>
+ <val o="1dd3e6" v="190.8"/>
+ <val o="1de1f5" v="195"/>
+ <val o="1df006" v="195.8"/>
+ <val o="1dfe16" v="195.3"/>
+ <val o="1e0c26" v="198.1"/>
+ <val o="1e1a36" v="198.4"/>
+ <val o="1e2847" v="199.5"/>
+ <val o="1e3659" v="200.2"/>
+ <val o="1e4467" v="202.3"/>
+ <val o="1e5281" v="200.7"/>
+ <val o="1e6086" v="203.5"/>
+ <val o="1e6e96" v="204.6"/>
+ <val o="1e7ca6" v="188.4"/>
+ <val o="1e8ab5" v="193.9"/>
+ <val o="1e98c6" v="184.4"/>
+ <val o="1ea6d5" v="190.5"/>
+ <val o="1eb4e6" v="188.9"/>
+ <val o="1ec2f6" v="192.2"/>
+ <val o="1ed106" v="185.6"/>
+ <val o="1edf16" v="186.6"/>
+ <val o="1eed26" v="182.8"/>
+ <val o="1efb36" v="187.6"/>
+ <val o="1f0946" v="186.9"/>
+ <val o="1f1756" v="168.2"/>
+ <val o="1f2566" v="164.2"/>
+ <val o="1f3376" v="154.3"/>
+ <val o="1f4187" v="134.3"/>
+ <val o="1f4f96" v="154.2"/>
+ <val o="1f5da7" v="182.2"/>
+ <val o="1f6bb6" v="188.3"/>
+ <val o="1f79c7" v="176"/>
+ <val o="1f87d6" v="206.4"/>
+ <val o="1f95e7" v="216.5"/>
+ <val o="1fa401" v="211.5"/>
+ <val o="1fb204" v="210.8"/>
+ <val o="1fc016" v="211.2"/>
+ <val o="1fce25" v="192.4"/>
+ <val o="1fdc35" v="185.1"/>
+ <val o="1fea45" v="176.6"/>
+ <val o="1ff855" v="171.5"/>
+ <val o="200665" v="129.5"/>
+ <val o="201475" v="173.4"/>
+ <val o="202286" v="157.2"/>
+ <val o="203095" v="161.2"/>
+ <val o="203ea5" v="163.5"/>
+ <val o="204cb6" v="176.8"/>
+ <val o="205ac6" v="166.8"/>
+ <val o="2068d6" v="161.5"/>
+ <val o="2076e6" v="159.3"/>
+ <val o="2084f6" v="177.6"/>
+ <val o="209306" v="183.2"/>
+ <val o="20a116" v="185.4"/>
+ <val o="20af26" v="182.6"/>
+ <val o="20bd37" v="189.3"/>
+ <val o="20cb46" v="173.2"/>
+ <val o="20d957" v="179.4"/>
+ <val o="20e767" v="193.5"/>
+ <val o="20f581" v="202.6"/>
+ <val o="210386" v="197.8"/>
+ <val o="211194" v="186.9"/>
+ <val o="211fa5" v="188.3"/>
+ <val o="212db5" v="178.7"/>
+ <val o="213bc5" v="160.2"/>
+ <val o="2149d6" v="168.3"/>
+ <val o="2157e5" v="184"/>
+ <val o="2165f6" v="191.1"/>
+ <val o="217406" v="177.3"/>
+ <val o="218217" v="182.9"/>
+ <val o="219026" v="185.4"/>
+ <val o="219e39" v="176.3"/>
+ <val o="21ac46" v="170.1"/>
+ <val o="21ba57" v="169.3"/>
+ <val o="21c867" v="159.8"/>
+ <val o="21d677" v="190.9"/>
+ <val o="21e487" v="173.9"/>
+ <val o="21f296" v="175.5"/>
+ <val o="2200a6" v="187.5"/>
+ <val o="220eb7" v="188.5"/>
+ <val o="221cc6" v="160"/>
+ <val o="222ad7" v="175.5"/>
+ <val o="2238e7" v="192.4"/>
+ <val o="224701" v="200.8"/>
+ <val o="225505" v="116.9"/>
+ <val o="226315" v="166.3"/>
+ <val o="227125" v="162.8"/>
+ <val o="227f35" v="130.4"/>
+ <val o="228d45" v="122"/>
+ <val o="229b54" v="193.5"/>
+ <val o="22a965" v="183.9"/>
+ <val o="22b776" v="180"/>
+ <val o="22c586" v="157.3"/>
+ <val o="22d397" v="142.7"/>
+ <val o="22e1a6" v="145.9"/>
+ <val o="22efb6" v="182.2"/>
+ <val o="22fdc7" v="182.7"/>
+ <val o="230bd7" v="173.3"/>
+ <val o="2319e6" v="188.6"/>
+ <val o="2327f6" v="179.4"/>
+ <val o="23361b" v="169.8"/>
+ <val o="234416" v="164.3"/>
+ <val o="235226" v="170.2"/>
+ <val o="236037" v="178.8"/>
+ <val o="236e46" v="158"/>
+ <val o="237c57" v="161.6"/>
+ <val o="238a66" v="175.8"/>
+ <val o="239881" v="169.9"/>
+ <val o="23a685" v="185.3"/>
+ <val o="23b495" v="191.6"/>
+ <val o="23c2a4" v="176.8"/>
+ <val o="23d0b5" v="167.7"/>
+ <val o="23dec4" v="154.1"/>
+ <val o="23ecd5" v="167"/>
+ <val o="23fae4" v="180"/>
+ <val o="2408f6" v="166.9"/>
+ <val o="241706" v="146.9"/>
+ <val o="242518" v="155.4"/>
+ <val o="243325" v="157.6"/>
+ <val o="244137" v="189.9"/>
+ <val o="244f46" v="187.4"/>
+ <val o="246b66" v="186.9"/>
+ <val o="247976" v="179.5"/>
+ <val o="248786" v="139.6"/>
+ <val o="24957e" v="161.8"/>
+ <val o="24a38f" v="172"/>
+ <val o="24b19c" v="189.5"/>
+ <val o="24bfac" v="187.3"/>
+ <val o="24cdbc" v="188.2"/>
+ <val o="24dbcd" v="186.1"/>
+ <val o="24e9e5" v="198.1"/>
+ <val o="24f808" v="193.3"/>
+ <val o="250616" v="195.6"/>
+ <val o="251426" v="198.3"/>
+ <val o="252236" v="180.5"/>
+ <val o="253047" v="180"/>
+ <val o="253e56" v="161.6"/>
+ <val o="254c67" v="165.8"/>
+ <val o="255a76" v="165.6"/>
+ <val o="256887" v="160.4"/>
+ <val o="257697" v="147.2"/>
+ <val o="2584a8" v="196.9"/>
+ <val o="2592b6" v="195.7"/>
+ <val o="25a0c7" v="186.9"/>
+ <val o="25aed7" v="178.3"/>
+ <val o="25bce7" v="177.6"/>
+ <val o="25caf8" v="172"/>
+ <val o="25d907" v="156.5"/>
+ <val o="25e718" v="154.3"/>
+ <val o="25f527" v="157"/>
+ <val o="260338" v="179.5"/>
+ <val o="261149" v="166"/>
+ <val o="261f59" v="172.3"/>
+ <val o="262d68" v="196.4"/>
+ <val o="263b83" v="179.5"/>
+ <val o="264986" v="195.7"/>
+ <val o="265795" v="202.7"/>
+ <val o="2665a6" v="209.9"/>
+ <val o="2673b5" v="204.1"/>
+ <val o="2681c6" v="199.9"/>
+ <val o="268fd5" v="186.3"/>
+ <val o="269de6" v="175.6"/>
+ <val o="26abf6" v="170.1"/>
+ <val o="26ba06" v="159.2"/>
+ <val o="26c817" v="156.4"/>
+ <val o="26d62b" v="137.7"/>
+ <val o="26e436" v="146"/>
+ <val o="26f247" v="139.6"/>
+ <val o="270057" v="143.2"/>
+ <val o="270e67" v="137.7"/>
+ <val o="271c77" v="177.9"/>
+ <val o="272a87" v="186.9"/>
+ <val o="273897" v="184.5"/>
+ <val o="2746a8" v="188.2"/>
+ <val o="2754b9" v="191.1"/>
+ <val o="2762c7" v="146.7"/>
+ <val o="2770d8" v="161.4"/>
+ <val o="277ee7" v="188.7"/>
+ </par>
+ <par memind="10695000" h="3dc1a8de">
+ <val o="0" v="50"/>
+ <val o="e08" v="50"/>
+ <val o="1c32" v="50"/>
+ <val o="2a3c" v="50"/>
+ <val o="3835" v="49.9"/>
+ <val o="4645" v="49.9"/>
+ <val o="5455" v="50"/>
+ <val o="6265" v="50"/>
+ <val o="7075" v="50"/>
+ <val o="7e85" v="50"/>
+ <val o="8c96" v="50"/>
+ <val o="9aa5" v="50.1"/>
+ <val o="a8b6" v="50"/>
+ <val o="b6c5" v="50"/>
+ <val o="c4d7" v="50"/>
+ <val o="d30b" v="50"/>
+ <val o="e0f6" v="50"/>
+ <val o="ef06" v="50"/>
+ <val o="fd17" v="50"/>
+ <val o="10b27" v="50"/>
+ <val o="11937" v="50"/>
+ <val o="12746" v="50"/>
+ <val o="13556" v="50"/>
+ <val o="14366" v="50"/>
+ <val o="15181" v="50"/>
+ <val o="15f85" v="50"/>
+ <val o="16d95" v="50"/>
+ <val o="17ba4" v="50"/>
+ <val o="189b5" v="50"/>
+ <val o="197c4" v="50.1"/>
+ <val o="1a5d5" v="50"/>
+ <val o="1b3e6" v="50"/>
+ <val o="1c1f6" v="50.1"/>
+ <val o="1d005" v="50"/>
+ <val o="1de15" v="50"/>
+ <val o="1ec25" v="50"/>
+ <val o="1fa36" v="50"/>
+ <val o="20845" v="50"/>
+ <val o="21656" v="50"/>
+ <val o="22465" v="50"/>
+ <val o="23276" v="50"/>
+ <val o="24086" v="50"/>
+ <val o="24e99" v="50"/>
+ <val o="25ca7" v="50"/>
+ <val o="26ab7" v="50"/>
+ <val o="278c6" v="50"/>
+ <val o="286d6" v="50.1"/>
+ <val o="294e6" v="50"/>
+ <val o="2a301" v="50"/>
+ <val o="2b105" v="50"/>
+ <val o="2bf15" v="50"/>
+ <val o="2cd25" v="50"/>
+ <val o="2db35" v="50"/>
+ <val o="2e946" v="50"/>
+ <val o="2f755" v="50"/>
+ <val o="30566" v="50"/>
+ <val o="31375" v="50"/>
+ <val o="3219e" v="50"/>
+ <val o="32f96" v="50"/>
+ <val o="33da6" v="50"/>
+ <val o="34bb6" v="50"/>
+ <val o="359de" v="50"/>
+ <val o="367d6" v="50"/>
+ <val o="375e6" v="50"/>
+ <val o="3840e" v="50"/>
+ <val o="3921e" v="50"/>
+ <val o="3a016" v="50"/>
+ <val o="3ae27" v="50"/>
+ <val o="3bc36" v="50"/>
+ <val o="3ca47" v="50"/>
+ <val o="3d856" v="50"/>
+ <val o="3e667" v="50"/>
+ <val o="3f481" v="50"/>
+ <val o="40285" v="50"/>
+ <val o="41095" v="50"/>
+ <val o="41ea5" v="50"/>
+ <val o="42cb5" v="50"/>
+ <val o="43ac5" v="49.9"/>
+ <val o="448d5" v="50"/>
+ <val o="456e6" v="49.9"/>
+ <val o="464f5" v="50"/>
+ <val o="480ff" v="49.9"/>
+ <val o="48f0e" v="50"/>
+ <val o="49d1d" v="50"/>
+ <val o="4ab46" v="50"/>
+ <val o="4b955" v="50"/>
+ <val o="4c769" v="50"/>
+ <val o="4d577" v="50"/>
+ <val o="4e387" v="50"/>
+ <val o="4f196" v="50"/>
+ <val o="4ffa6" v="50"/>
+ <val o="50dd0" v="50"/>
+ <val o="51bc6" v="50"/>
+ <val o="529d6" v="50"/>
+ <val o="537e7" v="50"/>
+ <val o="54600" v="50"/>
+ <val o="55406" v="50"/>
+ <val o="56215" v="50"/>
+ <val o="57026" v="50"/>
+ <val o="57e36" v="50"/>
+ <val o="58c46" v="50"/>
+ <val o="59a70" v="50"/>
+ <val o="5a867" v="50"/>
+ <val o="5b676" v="49.9"/>
+ <val o="5c487" v="50"/>
+ <val o="5d296" v="50"/>
+ <val o="5e0a9" v="50"/>
+ <val o="5eeb8" v="50"/>
+ <val o="5fcc6" v="50"/>
+ <val o="60ad7" v="50"/>
+ <val o="618e7" v="50"/>
+ <val o="626f7" v="50"/>
+ <val o="63507" v="50"/>
+ <val o="64317" v="50"/>
+ <val o="65127" v="50.1"/>
+ <val o="65f37" v="50"/>
+ <val o="66d46" v="50"/>
+ <val o="67b57" v="50"/>
+ <val o="68967" v="50"/>
+ <val o="69782" v="50.1"/>
+ <val o="6a586" v="50"/>
+ <val o="6b395" v="50"/>
+ <val o="6c1a6" v="49.9"/>
+ <val o="6cfb5" v="50"/>
+ <val o="6ddc6" v="50"/>
+ <val o="6ebd6" v="50"/>
+ <val o="6f9e6" v="50"/>
+ <val o="707f6" v="50"/>
+ <val o="71607" v="50"/>
+ <val o="72417" v="50"/>
+ <val o="73227" v="50"/>
+ <val o="74037" v="50"/>
+ <val o="74e47" v="50"/>
+ <val o="75c57" v="50"/>
+ <val o="76a63" v="50"/>
+ <val o="77873" v="50"/>
+ <val o="78680" v="50"/>
+ <val o="7948f" v="50"/>
+ <val o="7a29f" v="50"/>
+ <val o="7b0af" v="50.1"/>
+ <val o="7bebf" v="50"/>
+ <val o="7cccf" v="50"/>
+ <val o="7dadf" v="49.9"/>
+ <val o="7e8fa" v="50"/>
+ <val o="7f70a" v="50"/>
+ <val o="8051a" v="50"/>
+ <val o="8132a" v="50"/>
+ <val o="8213a" v="50"/>
+ <val o="82f4a" v="50"/>
+ <val o="83d5a" v="50"/>
+ <val o="84b6a" v="50"/>
+ <val o="8597a" v="50"/>
+ <val o="8678b" v="50"/>
+ <val o="8759b" v="50"/>
+ <val o="883ac" v="50"/>
+ <val o="891bb" v="50"/>
+ <val o="89fca" v="50"/>
+ <val o="8adda" v="50"/>
+ <val o="8bbeb" v="50"/>
+ <val o="8c9fc" v="50"/>
+ <val o="8d80b" v="50"/>
+ <val o="8e61a" v="50.1"/>
+ <val o="8f42a" v="50"/>
+ <val o="9023a" v="50.1"/>
+ <val o="9104a" v="49.9"/>
+ <val o="91e5a" v="50"/>
+ <val o="92c6a" v="50"/>
+ <val o="93a84" v="49.9"/>
+ <val o="94885" v="50"/>
+ <val o="95694" v="50"/>
+ <val o="964a5" v="50"/>
+ <val o="972b4" v="49.9"/>
+ <val o="980c5" v="50"/>
+ <val o="98ed4" v="50"/>
+ <val o="99ce5" v="49.9"/>
+ <val o="9aaf5" v="50.1"/>
+ <val o="9b906" v="50.1"/>
+ <val o="9c716" v="50"/>
+ <val o="9d526" v="50"/>
+ <val o="9e336" v="50"/>
+ <val o="9f145" v="50"/>
+ <val o="9ff56" v="50"/>
+ <val o="a0d65" v="50"/>
+ <val o="a1b77" v="49.9"/>
+ <val o="a2986" v="50"/>
+ <val o="a3795" v="50"/>
+ <val o="a45a7" v="50"/>
+ <val o="a53b6" v="50"/>
+ <val o="a61c7" v="50"/>
+ <val o="a6fd6" v="50"/>
+ <val o="a7e00" v="50.1"/>
+ <val o="a8c00" v="49.9"/>
+ <val o="a9a05" v="50"/>
+ <val o="aa815" v="50"/>
+ <val o="ab625" v="50"/>
+ <val o="ac435" v="50"/>
+ <val o="ad245" v="50"/>
+ <val o="ae055" v="50"/>
+ <val o="aee65" v="50"/>
+ <val o="afc75" v="50"/>
+ <val o="b0a85" v="50"/>
+ <val o="b26a6" v="50"/>
+ <val o="b34b6" v="50"/>
+ <val o="b42c6" v="50"/>
+ <val o="b50d6" v="50"/>
+ <val o="b5ee7" v="50"/>
+ <val o="b6cf6" v="50"/>
+ <val o="b7b07" v="50"/>
+ <val o="b8917" v="50"/>
+ <val o="b9728" v="50"/>
+ <val o="ba537" v="50"/>
+ <val o="bb347" v="50"/>
+ <val o="bc157" v="50"/>
+ <val o="bcf67" v="50"/>
+ <val o="bdd81" v="50"/>
+ <val o="beb86" v="50"/>
+ <val o="bf995" v="50"/>
+ <val o="c07a6" v="50"/>
+ <val o="c15b5" v="50"/>
+ <val o="c23c6" v="50"/>
+ <val o="c31d5" v="49.9"/>
+ <val o="c3fe6" v="50"/>
+ <val o="c4df5" v="50"/>
+ <val o="c5c06" v="50"/>
+ <val o="c6a16" v="50"/>
+ <val o="c7826" v="50"/>
+ <val o="c8636" v="50"/>
+ <val o="c9446" v="50"/>
+ <val o="ca256" v="50"/>
+ <val o="cb066" v="50"/>
+ <val o="cbe76" v="50"/>
+ <val o="ccc87" v="50"/>
+ <val o="cda96" v="50"/>
+ <val o="ce8a8" v="50"/>
+ <val o="cf6b7" v="50"/>
+ <val o="d04c8" v="49.9"/>
+ <val o="d12d7" v="50"/>
+ <val o="d20e7" v="50"/>
+ <val o="d2f02" v="50"/>
+ <val o="d3d05" v="50"/>
+ <val o="d4b15" v="50"/>
+ <val o="d5926" v="50"/>
+ <val o="d6735" v="50"/>
+ <val o="d7546" v="50"/>
+ <val o="d8355" v="50"/>
+ <val o="d9166" v="50"/>
+ <val o="d9f75" v="50.1"/>
+ <val o="dad87" v="50"/>
+ <val o="dbb97" v="49.9"/>
+ <val o="dc9a8" v="50"/>
+ <val o="dd7b7" v="50"/>
+ <val o="de5c6" v="50"/>
+ <val o="df3d7" v="50"/>
+ <val o="e01d7" v="50"/>
+ <val o="e0fe5" v="50"/>
+ <val o="e1df5" v="50"/>
+ <val o="e2c04" v="50"/>
+ <val o="e3a14" v="50"/>
+ <val o="e4824" v="50"/>
+ <val o="e5634" v="50"/>
+ <val o="e6444" v="50"/>
+ <val o="e7255" v="50"/>
+ <val o="e806f" v="50"/>
+ <val o="e8e7f" v="50"/>
+ <val o="e9c8e" v="50"/>
+ <val o="eaa9f" v="50"/>
+ <val o="eb8ae" v="50"/>
+ <val o="ec6bf" v="50"/>
+ <val o="ed4ce" v="50"/>
+ <val o="ee2df" v="50"/>
+ <val o="ef0ef" v="50"/>
+ <val o="eff01" v="50.1"/>
+ <val o="f0d10" v="50"/>
+ <val o="f1b20" v="50"/>
+ <val o="f2930" v="50"/>
+ <val o="f3740" v="50"/>
+ <val o="f4551" v="50"/>
+ <val o="f5361" v="50"/>
+ <val o="f6172" v="50"/>
+ <val o="f6f80" v="50"/>
+ <val o="f7d91" v="50"/>
+ <val o="f8ba1" v="50"/>
+ <val o="f99b1" v="50"/>
+ <val o="fa7c0" v="50"/>
+ <val o="fb5d1" v="50"/>
+ <val o="fc3e0" v="50"/>
+ <val o="fd1fb" v="50"/>
+ <val o="fe00b" v="50"/>
+ <val o="fee1c" v="50.1"/>
+ <val o="ffc2c" v="50"/>
+ <val o="100a3b" v="50"/>
+ <val o="10184c" v="50"/>
+ <val o="10265b" v="49.9"/>
+ <val o="10346c" v="50"/>
+ <val o="10427b" v="50"/>
+ <val o="10508d" v="49.9"/>
+ <val o="105e9d" v="50"/>
+ <val o="106cad" v="50"/>
+ <val o="107abd" v="50"/>
+ <val o="1088cd" v="49.9"/>
+ <val o="1096de" v="50"/>
+ <val o="10a4ed" v="50"/>
+ <val o="10b2fe" v="49.9"/>
+ <val o="10c10d" v="50"/>
+ <val o="10cf1e" v="50"/>
+ <val o="10dd2e" v="50"/>
+ <val o="10eb66" v="50"/>
+ <val o="10f94e" v="49.9"/>
+ <val o="11075e" v="50.1"/>
+ <val o="11156d" v="50.1"/>
+ <val o="112388" v="50"/>
+ <val o="113187" v="49.9"/>
+ <val o="113fb0" v="50"/>
+ <val o="114da6" v="49.9"/>
+ <val o="115bb6" v="50"/>
+ <val o="1169c6" v="50"/>
+ <val o="1177d6" v="50"/>
+ <val o="1185e8" v="50"/>
+ <val o="1193f7" v="50"/>
+ <val o="11a208" v="50"/>
+ <val o="11b017" v="50"/>
+ <val o="11be2f" v="50.1"/>
+ <val o="11cc37" v="50"/>
+ <val o="11da47" v="50"/>
+ <val o="11e857" v="50"/>
+ <val o="11f667" v="50"/>
+ <val o="120578" v="50"/>
+ <val o="121386" v="50"/>
+ <val o="122196" v="50"/>
+ <val o="122fa6" v="50"/>
+ <val o="123db5" v="50"/>
+ <val o="124bc5" v="50"/>
+ <val o="1259d5" v="50"/>
+ <val o="1267e4" v="50"/>
+ <val o="127600" v="49.9"/>
+ <val o="128305" v="50"/>
+ <val o="129115" v="50"/>
+ <val o="129f25" v="50"/>
+ <val o="12ad35" v="49.9"/>
+ <val o="12bb45" v="49.9"/>
+ <val o="12c954" v="49.9"/>
+ <val o="12d766" v="49.9"/>
+ <val o="12e575" v="50.1"/>
+ <val o="12f386" v="50.1"/>
+ <val o="130196" v="50"/>
+ <val o="130fa6" v="50.1"/>
+ <val o="131db7" v="49.9"/>
+ <val o="132bc5" v="50"/>
+ <val o="1339d4" v="50"/>
+ <val o="1347e5" v="50"/>
+ <val o="1355f4" v="50"/>
+ <val o="136404" v="50"/>
+ <val o="137214" v="50.1"/>
+ <val o="138024" v="50"/>
+ <val o="138e33" v="50"/>
+ <val o="139c44" v="50"/>
+ <val o="13aa54" v="50"/>
+ <val o="13b865" v="50"/>
+ <val o="13c67e" v="50"/>
+ <val o="13d48e" v="50"/>
+ <val o="13e29e" v="50"/>
+ <val o="13f0ae" v="50"/>
+ <val o="13febf" v="50"/>
+ <val o="140ccf" v="50"/>
+ <val o="141adf" v="50"/>
+ <val o="1428ef" v="50"/>
+ <val o="1436ff" v="49.9"/>
+ <val o="14450f" v="50"/>
+ <val o="14531f" v="50"/>
+ <val o="146130" v="50"/>
+ <val o="146f40" v="50"/>
+ <val o="147d44" v="50"/>
+ <val o="148b57" v="50"/>
+ <val o="149965" v="50"/>
+ <val o="14a775" v="50"/>
+ <val o="14b584" v="50"/>
+ <val o="14c397" v="50"/>
+ <val o="14d1a4" v="50"/>
+ <val o="14dfb6" v="49.9"/>
+ <val o="14edc5" v="50.1"/>
+ <val o="14fbd5" v="50"/>
+ <val o="1509e5" v="50"/>
+ <val o="1517ff" v="50"/>
+ <val o="152605" v="50"/>
+ <val o="153415" v="50"/>
+ <val o="154225" v="50"/>
+ <val o="155035" v="50"/>
+ <val o="155e45" v="50"/>
+ <val o="156c55" v="50"/>
+ <val o="157a65" v="50"/>
+ <val o="158875" v="49.9"/>
+ <val o="159686" v="50"/>
+ <val o="15a495" v="50"/>
+ <val o="15b2a6" v="50"/>
+ <val o="15c0b6" v="50"/>
+ <val o="15cec6" v="50"/>
+ <val o="15dcd5" v="50"/>
+ <val o="15eae6" v="49.9"/>
+ <val o="15f8f5" v="50"/>
+ <val o="160706" v="49.9"/>
+ <val o="161517" v="50"/>
+ <val o="162326" v="49.9"/>
+ <val o="163137" v="50"/>
+ <val o="163f46" v="50"/>
+ <val o="164d57" v="50"/>
+ <val o="165b67" v="50"/>
+ <val o="166982" v="50"/>
+ <val o="167786" v="50"/>
+ <val o="168596" v="50"/>
+ <val o="1693a6" v="50"/>
+ <val o="16a1b5" v="49.9"/>
+ <val o="16afc6" v="50"/>
+ <val o="16bdd5" v="50"/>
+ <val o="16cbe6" v="50"/>
+ <val o="16d9f6" v="50"/>
+ <val o="16e807" v="49.9"/>
+ <val o="16f616" v="50"/>
+ <val o="170429" v="50"/>
+ <val o="171236" v="50"/>
+ <val o="172047" v="50"/>
+ <val o="172e57" v="50"/>
+ <val o="173c67" v="50"/>
+ <val o="174a77" v="50"/>
+ <val o="175887" v="50"/>
+ <val o="176694" v="49.9"/>
+ <val o="1774a3" v="50"/>
+ <val o="1782b3" v="50"/>
+ <val o="1790c5" v="50"/>
+ <val o="179ed4" v="50"/>
+ <val o="17ace4" v="50.1"/>
+ <val o="17bafd" v="50.1"/>
+ <val o="17c90f" v="50"/>
+ <val o="17d71e" v="50"/>
+ <val o="17e52f" v="50"/>
+ <val o="17f33f" v="50"/>
+ <val o="18014f" v="50"/>
+ <val o="180f5f" v="50"/>
+ <val o="181d6e" v="50.1"/>
+ <val o="182b7f" v="50"/>
+ <val o="18398f" v="50"/>
+ <val o="1847a1" v="50"/>
+ <val o="1855af" v="50"/>
+ <val o="1863c0" v="50"/>
+ <val o="1871cf" v="49.9"/>
+ <val o="187fe0" v="50"/>
+ <val o="188def" v="50"/>
+ <val o="189c00" v="50"/>
+ <val o="18b80d" v="50"/>
+ <val o="18c61c" v="49.9"/>
+ <val o="18d42c" v="50"/>
+ <val o="18e23b" v="50"/>
+ <val o="18f04b" v="50"/>
+ <val o="18fe5e" v="50"/>
+ <val o="190c76" v="50"/>
+ <val o="191a86" v="50"/>
+ <val o="192896" v="50"/>
+ <val o="1936a6" v="50"/>
+ <val o="1944b7" v="50"/>
+ <val o="1952c6" v="49.9"/>
+ <val o="1960d7" v="50"/>
+ <val o="196ee6" v="50"/>
+ <val o="197cf8" v="50"/>
+ <val o="198b0f" v="50"/>
+ <val o="19991f" v="50"/>
+ <val o="19b541" v="50"/>
+ <val o="19c34d" v="50"/>
+ <val o="19d15e" v="50"/>
+ <val o="19df80" v="50"/>
+ <val o="19ed90" v="50"/>
+ <val o="19eebe" v="50"/>
+ <val o="19fb8e" v="49.9"/>
+ <val o="1a09a0" v="50"/>
+ <val o="1a17ae" v="49.9"/>
+ <val o="1a25be" v="50"/>
+ <val o="1a33cd" v="50"/>
+ <val o="1a41dd" v="50"/>
+ <val o="1a4fed" v="50"/>
+ <val o="1a5e08" v="50"/>
+ <val o="1a6c05" v="50"/>
+ <val o="1a7a15" v="50.1"/>
+ <val o="1a8826" v="50"/>
+ <val o="1a9637" v="50"/>
+ <val o="1aa445" v="50"/>
+ <val o="1ab255" v="50"/>
+ <val o="1ac065" v="50"/>
+ <val o="1ace75" v="50"/>
+ <val o="1adc87" v="50"/>
+ <val o="1aea96" v="49.9"/>
+ <val o="1af8a7" v="50"/>
+ <val o="1b06b7" v="50"/>
+ <val o="1b14c6" v="50"/>
+ <val o="1c7460" v="50"/>
+ <val o="1c8270" v="50"/>
+ <val o="1c907e" v="50"/>
+ <val o="1c9e8f" v="50"/>
+ <val o="1caca2" v="50"/>
+ <val o="1cbab1" v="50"/>
+ <val o="1cc8c1" v="50"/>
+ <val o="1cd6d0" v="50"/>
+ <val o="1ce4de" v="50"/>
+ <val o="1cf2f0" v="50"/>
+ <val o="1d0109" v="50"/>
+ <val o="1d0f06" v="50"/>
+ <val o="1d1d15" v="50"/>
+ <val o="1d2b25" v="50"/>
+ <val o="1d3935" v="50"/>
+ <val o="1d4745" v="50"/>
+ <val o="1d5555" v="50"/>
+ <val o="1d6366" v="50"/>
+ <val o="1d7175" v="50"/>
+ <val o="1d7f86" v="50"/>
+ <val o="1d8d95" v="50"/>
+ <val o="1d9ba6" v="50"/>
+ <val o="1da9b6" v="50"/>
+ <val o="1db7c7" v="50"/>
+ <val o="1dc5d5" v="49.9"/>
+ <val o="1dd3e6" v="49.9"/>
+ <val o="1de1f5" v="50"/>
+ <val o="1df006" v="50"/>
+ <val o="1dfe16" v="50"/>
+ <val o="1e0c26" v="49.9"/>
+ <val o="1e1a36" v="49.9"/>
+ <val o="1e2847" v="50"/>
+ <val o="1e3659" v="50"/>
+ <val o="1e4467" v="50"/>
+ <val o="1e5281" v="50"/>
+ <val o="1e6086" v="50"/>
+ <val o="1e6e96" v="50"/>
+ <val o="1e7ca6" v="50"/>
+ <val o="1e8ab5" v="50"/>
+ <val o="1e98c6" v="49.9"/>
+ <val o="1ea6d5" v="50"/>
+ <val o="1eb4e6" v="50"/>
+ <val o="1ec2f6" v="50"/>
+ <val o="1ed106" v="50"/>
+ <val o="1edf16" v="50"/>
+ <val o="1eed26" v="49.9"/>
+ <val o="1efb36" v="50"/>
+ <val o="1f0946" v="50"/>
+ <val o="1f1756" v="50"/>
+ <val o="1f2566" v="50"/>
+ <val o="1f3376" v="50"/>
+ <val o="1f4187" v="50"/>
+ <val o="1f4f96" v="50"/>
+ <val o="1f5da7" v="50"/>
+ <val o="1f6bb6" v="50"/>
+ <val o="1f79c7" v="50.1"/>
+ <val o="1f87d6" v="50.1"/>
+ <val o="1f95e7" v="50"/>
+ <val o="1fa401" v="50"/>
+ <val o="1fb204" v="50"/>
+ <val o="1fc016" v="50"/>
+ <val o="1fce25" v="49.9"/>
+ <val o="1fdc35" v="50"/>
+ <val o="1fea45" v="50"/>
+ <val o="1ff855" v="50"/>
+ <val o="200665" v="49.9"/>
+ <val o="201475" v="50"/>
+ <val o="202286" v="49.9"/>
+ <val o="203095" v="49.9"/>
+ <val o="203ea5" v="50"/>
+ <val o="204cb6" v="50"/>
+ <val o="205ac6" v="50"/>
+ <val o="2068d6" v="50"/>
+ <val o="2076e6" v="50"/>
+ <val o="2084f6" v="50"/>
+ <val o="209306" v="50"/>
+ <val o="20a116" v="50"/>
+ <val o="20af26" v="49.9"/>
+ <val o="20bd37" v="49.9"/>
+ <val o="20cb46" v="49.9"/>
+ <val o="20d957" v="50"/>
+ <val o="20e767" v="50"/>
+ <val o="20f581" v="50"/>
+ <val o="210386" v="50"/>
+ <val o="211194" v="50"/>
+ <val o="211fa5" v="50"/>
+ <val o="212db5" v="50"/>
+ <val o="213bc5" v="50"/>
+ <val o="2149d6" v="50"/>
+ <val o="2157e5" v="50"/>
+ <val o="2165f6" v="50"/>
+ <val o="217406" v="50"/>
+ <val o="218217" v="50"/>
+ <val o="219026" v="50"/>
+ <val o="219e39" v="50"/>
+ <val o="21ac46" v="50"/>
+ <val o="21ba57" v="50"/>
+ <val o="21c867" v="50"/>
+ <val o="21d677" v="50"/>
+ <val o="21e487" v="50"/>
+ <val o="21f296" v="50"/>
+ <val o="2200a6" v="50"/>
+ <val o="220eb7" v="50"/>
+ <val o="221cc6" v="50"/>
+ <val o="222ad7" v="50"/>
+ <val o="2238e7" v="50"/>
+ <val o="224701" v="49.9"/>
+ <val o="225505" v="50"/>
+ <val o="226315" v="50"/>
+ <val o="227125" v="50"/>
+ <val o="227f35" v="50"/>
+ <val o="228d45" v="50"/>
+ <val o="229b54" v="50"/>
+ <val o="22a965" v="50"/>
+ <val o="22b776" v="50"/>
+ <val o="22c586" v="50"/>
+ <val o="22d397" v="50"/>
+ <val o="22e1a6" v="50"/>
+ <val o="22efb6" v="50.1"/>
+ <val o="22fdc7" v="50"/>
+ <val o="230bd7" v="50"/>
+ <val o="2319e6" v="50"/>
+ <val o="2327f6" v="50"/>
+ <val o="23361b" v="50"/>
+ <val o="234416" v="50"/>
+ <val o="235226" v="50"/>
+ <val o="236037" v="50"/>
+ <val o="236e46" v="49.9"/>
+ <val o="237c57" v="50"/>
+ <val o="238a66" v="50.1"/>
+ <val o="239881" v="50"/>
+ <val o="23a685" v="50"/>
+ <val o="23b495" v="50"/>
+ <val o="23c2a4" v="50"/>
+ <val o="23d0b5" v="50"/>
+ <val o="23dec4" v="50"/>
+ <val o="23ecd5" v="49.9"/>
+ <val o="23fae4" v="50"/>
+ <val o="2408f6" v="50"/>
+ <val o="241706" v="50"/>
+ <val o="242518" v="49.9"/>
+ <val o="243325" v="50"/>
+ <val o="244137" v="50"/>
+ <val o="244f46" v="50.1"/>
+ <val o="246b66" v="50"/>
+ <val o="247976" v="50"/>
+ <val o="248786" v="49.9"/>
+ <val o="24957e" v="50"/>
+ <val o="24a38f" v="49.9"/>
+ <val o="24b19c" v="50"/>
+ <val o="24bfac" v="50"/>
+ <val o="24cdbc" v="50"/>
+ <val o="24dbcd" v="50"/>
+ <val o="24e9e5" v="50"/>
+ <val o="24f808" v="50"/>
+ <val o="250616" v="50"/>
+ <val o="251426" v="49.9"/>
+ <val o="252236" v="50"/>
+ <val o="253047" v="50"/>
+ <val o="253e56" v="50"/>
+ <val o="254c67" v="50"/>
+ <val o="255a76" v="50"/>
+ <val o="256887" v="50"/>
+ <val o="257697" v="50"/>
+ <val o="2584a8" v="50"/>
+ <val o="2592b6" v="50"/>
+ <val o="25a0c7" v="50"/>
+ <val o="25aed7" v="50"/>
+ <val o="25bce7" v="50"/>
+ <val o="25caf8" v="50"/>
+ <val o="25d907" v="49.9"/>
+ <val o="25e718" v="50"/>
+ <val o="25f527" v="50"/>
+ <val o="260338" v="50"/>
+ <val o="261149" v="50"/>
+ <val o="261f59" v="50"/>
+ <val o="262d68" v="50.1"/>
+ <val o="263b83" v="50"/>
+ <val o="264986" v="50"/>
+ <val o="265795" v="50"/>
+ <val o="2665a6" v="50"/>
+ <val o="2673b5" v="50"/>
+ <val o="2681c6" v="50"/>
+ <val o="268fd5" v="50"/>
+ <val o="269de6" v="50"/>
+ <val o="26abf6" v="50"/>
+ <val o="26ba06" v="50"/>
+ <val o="26c817" v="50"/>
+ <val o="26d62b" v="50"/>
+ <val o="26e436" v="50"/>
+ <val o="26f247" v="50"/>
+ <val o="270057" v="50"/>
+ <val o="270e67" v="50"/>
+ <val o="271c77" v="50"/>
+ <val o="272a87" v="50"/>
+ <val o="273897" v="50"/>
+ <val o="2746a8" v="50"/>
+ <val o="2754b9" v="50"/>
+ <val o="2762c7" v="49.9"/>
+ <val o="2770d8" v="50"/>
+ <val o="277ee7" v="50"/>
+ </par>
+ <par memind="8612" h="3dc1a8de">
+ <val o="0" v="25.07"/>
+ <val o="e08" v="24.067"/>
+ <val o="1c32" v="23.438"/>
+ <val o="2a3c" v="23.245"/>
+ <val o="3835" v="22.784"/>
+ <val o="4645" v="22.746"/>
+ <val o="5455" v="26.297"/>
+ <val o="6265" v="28.878"/>
+ <val o="7075" v="34.451"/>
+ <val o="7e85" v="40.017"/>
+ <val o="8c96" v="40.572"/>
+ <val o="9aa5" v="38.682"/>
+ <val o="a8b6" v="35.869"/>
+ <val o="b6c5" v="34.12"/>
+ <val o="c4d7" v="0.035"/>
+ <val o="d30b" v="0.036"/>
+ <val o="e0f6" v="0.035"/>
+ <val o="ef06" v="0.037"/>
+ <val o="fd17" v="0.038"/>
+ <val o="10b27" v="0.037"/>
+ <val o="11937" v="0.037"/>
+ <val o="12746" v="0.036"/>
+ <val o="13556" v="0.035"/>
+ <val o="14366" v="0.036"/>
+ <val o="15181" v="0.037"/>
+ <val o="15f85" v="0.036"/>
+ <val o="16d95" v="0.036"/>
+ <val o="17ba4" v="0.035"/>
+ <val o="189b5" v="0.038"/>
+ <val o="197c4" v="0.036"/>
+ <val o="1a5d5" v="0.037"/>
+ <val o="1b3e6" v="0.034"/>
+ <val o="1c1f6" v="0.037"/>
+ <val o="1d005" v="0.035"/>
+ <val o="1de15" v="0.033"/>
+ <val o="1ec25" v="0.035"/>
+ <val o="1fa36" v="0.035"/>
+ <val o="20845" v="0.037"/>
+ <val o="21656" v="0.035"/>
+ <val o="22465" v="0.037"/>
+ <val o="23276" v="0.035"/>
+ <val o="24086" v="0.034"/>
+ <val o="24e99" v="0.035"/>
+ <val o="25ca7" v="0.035"/>
+ <val o="26ab7" v="0.035"/>
+ <val o="278c6" v="0.036"/>
+ <val o="286d6" v="0.035"/>
+ <val o="294e6" v="0.034"/>
+ <val o="2a301" v="0.036"/>
+ <val o="2b105" v="0.034"/>
+ <val o="2bf15" v="0.034"/>
+ <val o="2cd25" v="0.036"/>
+ <val o="2db35" v="0.034"/>
+ <val o="2e946" v="0.033"/>
+ <val o="2f755" v="0.034"/>
+ <val o="30566" v="0.035"/>
+ <val o="31375" v="0.035"/>
+ <val o="3219e" v="0.035"/>
+ <val o="32f96" v="0.036"/>
+ <val o="33da6" v="0.035"/>
+ <val o="34bb6" v="0.035"/>
+ <val o="359de" v="0.033"/>
+ <val o="367d6" v="0.035"/>
+ <val o="375e6" v="0.034"/>
+ <val o="3840e" v="0.033"/>
+ <val o="3921e" v="0.035"/>
+ <val o="3a016" v="0.035"/>
+ <val o="3ae27" v="0.036"/>
+ <val o="3bc36" v="0.035"/>
+ <val o="3ca47" v="0.035"/>
+ <val o="3d856" v="0.036"/>
+ <val o="3e667" v="0.035"/>
+ <val o="3f481" v="0.037"/>
+ <val o="40285" v="0.034"/>
+ <val o="41095" v="0.035"/>
+ <val o="41ea5" v="0.035"/>
+ <val o="42cb5" v="0.035"/>
+ <val o="43ac5" v="0.036"/>
+ <val o="448d5" v="0.038"/>
+ <val o="456e6" v="0.036"/>
+ <val o="464f5" v="0.039"/>
+ <val o="480ff" v="0.036"/>
+ <val o="48f0e" v="0.036"/>
+ <val o="49d1d" v="0.038"/>
+ <val o="4ab46" v="0.036"/>
+ <val o="4b955" v="0.037"/>
+ <val o="4c769" v="0.036"/>
+ <val o="4d577" v="0.036"/>
+ <val o="4e387" v="0.036"/>
+ <val o="4f196" v="0.036"/>
+ <val o="4ffa6" v="0.036"/>
+ <val o="50dd0" v="0.038"/>
+ <val o="51bc6" v="0.036"/>
+ <val o="529d6" v="0.036"/>
+ <val o="537e7" v="0.035"/>
+ <val o="54600" v="0.036"/>
+ <val o="55406" v="0.034"/>
+ <val o="56215" v="0.035"/>
+ <val o="57026" v="0.034"/>
+ <val o="57e36" v="0.036"/>
+ <val o="58c46" v="0.035"/>
+ <val o="59a70" v="0.04"/>
+ <val o="5a867" v="0.034"/>
+ <val o="5b676" v="0.035"/>
+ <val o="5c487" v="0.036"/>
+ <val o="5d296" v="0.037"/>
+ <val o="5e0a9" v="0.036"/>
+ <val o="5eeb8" v="0.039"/>
+ <val o="5fcc6" v="0.036"/>
+ <val o="60ad7" v="0.035"/>
+ <val o="618e7" v="0.036"/>
+ <val o="626f7" v="0.035"/>
+ <val o="63507" v="0.036"/>
+ <val o="64317" v="0.037"/>
+ <val o="65127" v="0.039"/>
+ <val o="65f37" v="0.037"/>
+ <val o="66d46" v="0.035"/>
+ <val o="67b57" v="0.036"/>
+ <val o="68967" v="0.035"/>
+ <val o="69782" v="0.035"/>
+ <val o="6a586" v="0.037"/>
+ <val o="6b395" v="0.035"/>
+ <val o="6c1a6" v="0.037"/>
+ <val o="6cfb5" v="0.035"/>
+ <val o="6ddc6" v="0.033"/>
+ <val o="6ebd6" v="0.033"/>
+ <val o="6f9e6" v="0.035"/>
+ <val o="707f6" v="0.035"/>
+ <val o="71607" v="0.037"/>
+ <val o="72417" v="0.037"/>
+ <val o="73227" v="0.037"/>
+ <val o="74037" v="0.037"/>
+ <val o="74e47" v="0.037"/>
+ <val o="75c57" v="0.04"/>
+ <val o="76a63" v="0.036"/>
+ <val o="77873" v="0.035"/>
+ <val o="78680" v="0.037"/>
+ <val o="7948f" v="0.036"/>
+ <val o="7a29f" v="0.036"/>
+ <val o="7b0af" v="0.036"/>
+ <val o="7bebf" v="0.036"/>
+ <val o="7cccf" v="0.037"/>
+ <val o="7dadf" v="0.036"/>
+ <val o="7e8fa" v="0.035"/>
+ <val o="7f70a" v="0.035"/>
+ <val o="8051a" v="0.036"/>
+ <val o="8132a" v="0.034"/>
+ <val o="8213a" v="0.035"/>
+ <val o="82f4a" v="0.036"/>
+ <val o="83d5a" v="0.035"/>
+ <val o="84b6a" v="0.034"/>
+ <val o="8597a" v="0.035"/>
+ <val o="8678b" v="0.036"/>
+ <val o="8759b" v="0.034"/>
+ <val o="883ac" v="0.037"/>
+ <val o="891bb" v="0.037"/>
+ <val o="89fca" v="0.035"/>
+ <val o="8adda" v="0.035"/>
+ <val o="8bbeb" v="0.035"/>
+ <val o="8c9fc" v="0.035"/>
+ <val o="8d80b" v="0.034"/>
+ <val o="8e61a" v="0.035"/>
+ <val o="8f42a" v="0.034"/>
+ <val o="9023a" v="0.036"/>
+ <val o="9104a" v="0.035"/>
+ <val o="91e5a" v="0.035"/>
+ <val o="92c6a" v="0.034"/>
+ <val o="93a84" v="0.035"/>
+ <val o="94885" v="0.036"/>
+ <val o="95694" v="0.034"/>
+ <val o="964a5" v="0.034"/>
+ <val o="972b4" v="0.034"/>
+ <val o="980c5" v="0.034"/>
+ <val o="98ed4" v="0.035"/>
+ <val o="99ce5" v="0.037"/>
+ <val o="9aaf5" v="0.034"/>
+ <val o="9b906" v="0.036"/>
+ <val o="9c716" v="0.037"/>
+ <val o="9d526" v="0.035"/>
+ <val o="9e336" v="0.035"/>
+ <val o="9f145" v="0.035"/>
+ <val o="9ff56" v="0.035"/>
+ <val o="a0d65" v="0.036"/>
+ <val o="a1b77" v="36.117"/>
+ <val o="a2986" v="17.613"/>
+ <val o="a3795" v="8.357"/>
+ <val o="a45a7" v="5.957"/>
+ <val o="a53b6" v="7.134"/>
+ <val o="a61c7" v="8.646"/>
+ <val o="a6fd6" v="6.429"/>
+ <val o="a7e00" v="10.235"/>
+ <val o="a8c00" v="14.027"/>
+ <val o="a9a05" v="3.549"/>
+ <val o="aa815" v="3.8"/>
+ <val o="ab625" v="6.093"/>
+ <val o="ac435" v="5.204"/>
+ <val o="ad245" v="7.526"/>
+ <val o="ae055" v="11.39"/>
+ <val o="aee65" v="0.954"/>
+ <val o="afc75" v="5.773"/>
+ <val o="b0a85" v="21.019"/>
+ <val o="b26a6" v="22.636"/>
+ <val o="b34b6" v="19.316"/>
+ <val o="b42c6" v="1.265"/>
+ <val o="b50d6" v="3.13"/>
+ <val o="b5ee7" v="6.091"/>
+ <val o="b6cf6" v="7.273"/>
+ <val o="b7b07" v="9.373"/>
+ <val o="b8917" v="7.711"/>
+ <val o="b9728" v="8.183"/>
+ <val o="ba537" v="9.843"/>
+ <val o="bb347" v="5.251"/>
+ <val o="bc157" v="2.646"/>
+ <val o="bcf67" v="7.175"/>
+ <val o="bdd81" v="19.697"/>
+ <val o="beb86" v="4.703"/>
+ <val o="bf995" v="5.017"/>
+ <val o="c07a6" v="5.028"/>
+ <val o="c15b5" v="4.406"/>
+ <val o="c23c6" v="5.164"/>
+ <val o="c31d5" v="10.951"/>
+ <val o="c3fe6" v="5.096"/>
+ <val o="c4df5" v="10.032"/>
+ <val o="c5c06" v="4.084"/>
+ <val o="c6a16" v="5.223"/>
+ <val o="c7826" v="6.622"/>
+ <val o="c8636" v="2.571"/>
+ <val o="c9446" v="3.766"/>
+ <val o="ca256" v="2.925"/>
+ <val o="cb066" v="4.239"/>
+ <val o="cbe76" v="2.442"/>
+ <val o="ccc87" v="10.653"/>
+ <val o="cda96" v="15.045"/>
+ <val o="ce8a8" v="10.497"/>
+ <val o="cf6b7" v="14.243"/>
+ <val o="d04c8" v="11.318"/>
+ <val o="d12d7" v="7.26"/>
+ <val o="d20e7" v="3.278"/>
+ <val o="d2f02" v="12.768"/>
+ <val o="d3d05" v="8.863"/>
+ <val o="d4b15" v="8.423"/>
+ <val o="d5926" v="7.503"/>
+ <val o="d6735" v="7.803"/>
+ <val o="d7546" v="10.91"/>
+ <val o="d8355" v="5.743"/>
+ <val o="d9166" v="2.082"/>
+ <val o="d9f75" v="7.751"/>
+ <val o="dad87" v="16.785"/>
+ <val o="dbb97" v="18.467"/>
+ <val o="dc9a8" v="18.801"/>
+ <val o="dd7b7" v="16.008"/>
+ <val o="de5c6" v="13.629"/>
+ <val o="df3d7" v="14.479"/>
+ <val o="e01d7" v="14.927"/>
+ <val o="e0fe5" v="14.349"/>
+ <val o="e1df5" v="15.502"/>
+ <val o="e2c04" v="20.07"/>
+ <val o="e3a14" v="20.011"/>
+ <val o="e4824" v="16.357"/>
+ <val o="e5634" v="17.03"/>
+ <val o="e6444" v="11.901"/>
+ <val o="e7255" v="10.138"/>
+ <val o="e806f" v="8.731"/>
+ <val o="e8e7f" v="14.357"/>
+ <val o="e9c8e" v="4.86"/>
+ <val o="eaa9f" v="4.149"/>
+ <val o="eb8ae" v="6.019"/>
+ <val o="ec6bf" v="14.635"/>
+ <val o="ed4ce" v="9.989"/>
+ <val o="ee2df" v="11.96"/>
+ <val o="ef0ef" v="15.422"/>
+ <val o="eff01" v="22.742"/>
+ <val o="f0d10" v="22.428"/>
+ <val o="f1b20" v="24.11"/>
+ <val o="f2930" v="23.076"/>
+ <val o="f3740" v="23.241"/>
+ <val o="f4551" v="24.018"/>
+ <val o="f5361" v="25.989"/>
+ <val o="f6172" v="24.748"/>
+ <val o="f6f80" v="25.323"/>
+ <val o="f7d91" v="23.122"/>
+ <val o="f8ba1" v="19.403"/>
+ <val o="f99b1" v="19.28"/>
+ <val o="fa7c0" v="16.12"/>
+ <val o="fb5d1" v="16.228"/>
+ <val o="fc3e0" v="16.654"/>
+ <val o="fd1fb" v="14.2"/>
+ <val o="fe00b" v="14.054"/>
+ <val o="fee1c" v="9.557"/>
+ <val o="ffc2c" v="9.072"/>
+ <val o="100a3b" v="8.333"/>
+ <val o="10184c" v="9.771"/>
+ <val o="10265b" v="14.337"/>
+ <val o="10346c" v="16.049"/>
+ <val o="10427b" v="19.911"/>
+ <val o="10508d" v="23.238"/>
+ <val o="105e9d" v="23.213"/>
+ <val o="106cad" v="25.179"/>
+ <val o="107abd" v="21.591"/>
+ <val o="1088cd" v="19.665"/>
+ <val o="1096de" v="21.079"/>
+ <val o="10a4ed" v="21.109"/>
+ <val o="10b2fe" v="22.363"/>
+ <val o="10c10d" v="25.172"/>
+ <val o="10cf1e" v="23.223"/>
+ <val o="10dd2e" v="20.912"/>
+ <val o="10eb66" v="22.017"/>
+ <val o="10f94e" v="18.729"/>
+ <val o="11075e" v="16.761"/>
+ <val o="11156d" v="13.145"/>
+ <val o="112388" v="13.912"/>
+ <val o="113187" v="8.712"/>
+ <val o="113fb0" v="8.106"/>
+ <val o="114da6" v="8.195"/>
+ <val o="115bb6" v="8.301"/>
+ <val o="1169c6" v="10.111"/>
+ <val o="1177d6" v="14.213"/>
+ <val o="1185e8" v="15.617"/>
+ <val o="1193f7" v="19.095"/>
+ <val o="11a208" v="23.986"/>
+ <val o="11b017" v="20.919"/>
+ <val o="11be2f" v="26.06"/>
+ <val o="11cc37" v="21.493"/>
+ <val o="11da47" v="21.006"/>
+ <val o="11e857" v="22.144"/>
+ <val o="11f667" v="19.124"/>
+ <val o="120578" v="0.019"/>
+ <val o="121386" v="0.021"/>
+ <val o="122196" v="0.021"/>
+ <val o="122fa6" v="0.018"/>
+ <val o="123db5" v="0.015"/>
+ <val o="124bc5" v="0.016"/>
+ <val o="1259d5" v="0.011"/>
+ <val o="1267e4" v="0.01"/>
+ <val o="127600" v="0.011"/>
+ <val o="128305" v="0.01"/>
+ <val o="129115" v="0.01"/>
+ <val o="129f25" v="0.01"/>
+ <val o="12ad35" v="0.009"/>
+ <val o="12bb45" v="0.006"/>
+ <val o="12c954" v="0.009"/>
+ <val o="12d766" v="0.011"/>
+ <val o="12e575" v="0.017"/>
+ <val o="12f386" v="0.012"/>
+ <val o="130196" v="0.019"/>
+ <val o="130fa6" v="0.014"/>
+ <val o="131db7" v="0.015"/>
+ <val o="132bc5" v="0.015"/>
+ <val o="1339d4" v="0.279"/>
+ <val o="1347e5" v="0.096"/>
+ <val o="1355f4" v="0.141"/>
+ <val o="136404" v="0.207"/>
+ <val o="137214" v="0.218"/>
+ <val o="138024" v="0.213"/>
+ <val o="138e33" v="0.214"/>
+ <val o="139c44" v="0.075"/>
+ <val o="13aa54" v="0.05"/>
+ <val o="13b865" v="0.034"/>
+ <val o="13c67e" v="0.449"/>
+ <val o="13d48e" v="0.217"/>
+ <val o="13e29e" v="0.167"/>
+ <val o="13f0ae" v="0.158"/>
+ <val o="13febf" v="0.232"/>
+ <val o="140ccf" v="0.339"/>
+ <val o="141adf" v="0.212"/>
+ <val o="1428ef" v="0.044"/>
+ <val o="1436ff" v="0.033"/>
+ <val o="14450f" v="0.025"/>
+ <val o="14531f" v="0.023"/>
+ <val o="146130" v="0.058"/>
+ <val o="146f40" v="0.145"/>
+ <val o="147d44" v="0.064"/>
+ <val o="148b57" v="0.08"/>
+ <val o="149965" v="0.067"/>
+ <val o="14a775" v="0.111"/>
+ <val o="14b584" v="0.05"/>
+ <val o="14c397" v="0.239"/>
+ <val o="14d1a4" v="0.206"/>
+ <val o="14dfb6" v="0.163"/>
+ <val o="14edc5" v="0.063"/>
+ <val o="14fbd5" v="0.027"/>
+ <val o="1509e5" v="0.077"/>
+ <val o="1517ff" v="0.153"/>
+ <val o="152605" v="0.181"/>
+ <val o="153415" v="0.149"/>
+ <val o="154225" v="0.157"/>
+ <val o="155035" v="0.166"/>
+ <val o="155e45" v="0.216"/>
+ <val o="156c55" v="0.306"/>
+ <val o="157a65" v="0.168"/>
+ <val o="158875" v="0.145"/>
+ <val o="159686" v="0.252"/>
+ <val o="15a495" v="0.213"/>
+ <val o="15b2a6" v="0.19"/>
+ <val o="15c0b6" v="0.111"/>
+ <val o="15cec6" v="0.114"/>
+ <val o="15dcd5" v="0.107"/>
+ <val o="15eae6" v="0.115"/>
+ <val o="15f8f5" v="0.302"/>
+ <val o="160706" v="0.03"/>
+ <val o="161517" v="0.06"/>
+ <val o="162326" v="0.048"/>
+ <val o="163137" v="0.069"/>
+ <val o="163f46" v="0.063"/>
+ <val o="164d57" v="0.029"/>
+ <val o="165b67" v="0.105"/>
+ <val o="166982" v="0.096"/>
+ <val o="167786" v="0.142"/>
+ <val o="168596" v="0.101"/>
+ <val o="1693a6" v="0.092"/>
+ <val o="16a1b5" v="0.071"/>
+ <val o="16afc6" v="0.067"/>
+ <val o="16bdd5" v="0.17"/>
+ <val o="16cbe6" v="0.212"/>
+ <val o="16d9f6" v="0.089"/>
+ <val o="16e807" v="0.607"/>
+ <val o="16f616" v="0.675"/>
+ <val o="170429" v="0.723"/>
+ <val o="171236" v="0.477"/>
+ <val o="172047" v="0.477"/>
+ <val o="172e57" v="0.491"/>
+ <val o="173c67" v="0.496"/>
+ <val o="174a77" v="0.579"/>
+ <val o="175887" v="0.62"/>
+ <val o="176694" v="35.716"/>
+ <val o="1774a3" v="33.973"/>
+ <val o="1782b3" v="35.295"/>
+ <val o="1790c5" v="32.429"/>
+ <val o="179ed4" v="28.433"/>
+ <val o="17ace4" v="29.24"/>
+ <val o="17bafd" v="30.943"/>
+ <val o="17c90f" v="28.05"/>
+ <val o="17d71e" v="27.792"/>
+ <val o="17e52f" v="28.102"/>
+ <val o="17f33f" v="25.534"/>
+ <val o="18014f" v="25.021"/>
+ <val o="180f5f" v="30.046"/>
+ <val o="181d6e" v="32.772"/>
+ <val o="182b7f" v="38.186"/>
+ <val o="18398f" v="64.34"/>
+ <val o="1847a1" v="63.582"/>
+ <val o="1855af" v="60.895"/>
+ <val o="1863c0" v="57.167"/>
+ <val o="1871cf" v="59.436"/>
+ <val o="187fe0" v="56.655"/>
+ <val o="188def" v="60.597"/>
+ <val o="189c00" v="56.836"/>
+ <val o="18b80d" v="37.581"/>
+ <val o="18c61c" v="40.1"/>
+ <val o="18d42c" v="38.214"/>
+ <val o="18e23b" v="32.175"/>
+ <val o="18f04b" v="30.662"/>
+ <val o="18fe5e" v="26.933"/>
+ <val o="190c76" v="21.269"/>
+ <val o="191a86" v="21.646"/>
+ <val o="192896" v="21.244"/>
+ <val o="1936a6" v="20.855"/>
+ <val o="1944b7" v="19.588"/>
+ <val o="1952c6" v="20.809"/>
+ <val o="1960d7" v="25.64"/>
+ <val o="196ee6" v="29.166"/>
+ <val o="197cf8" v="31.236"/>
+ <val o="198b0f" v="28.424"/>
+ <val o="19991f" v="32.717"/>
+ <val o="19b541" v="32.231"/>
+ <val o="19c34d" v="29.816"/>
+ <val o="19d15e" v="29.219"/>
+ <val o="19df80" v="29.861"/>
+ <val o="19ed90" v="29.093"/>
+ <val o="19eebe" v="29.004"/>
+ <val o="19fb8e" v="10.445"/>
+ <val o="1a09a0" v="18.158"/>
+ <val o="1a17ae" v="23.713"/>
+ <val o="1a25be" v="25.84"/>
+ <val o="1a33cd" v="13.692"/>
+ <val o="1a41dd" v="15.619"/>
+ <val o="1a4fed" v="22.235"/>
+ <val o="1a5e08" v="20.533"/>
+ <val o="1a6c05" v="14.806"/>
+ <val o="1a7a15" v="17.786"/>
+ <val o="1a8826" v="18.205"/>
+ <val o="1a9637" v="14.86"/>
+ <val o="1aa445" v="11.317"/>
+ <val o="1ab255" v="6.403"/>
+ <val o="1ac065" v="13.389"/>
+ <val o="1ace75" v="18.094"/>
+ <val o="1adc87" v="16.688"/>
+ <val o="1aea96" v="16.251"/>
+ <val o="1af8a7" v="17.902"/>
+ <val o="1b06b7" v="16.864"/>
+ <val o="1b14c6" v="16.076"/>
+ <val o="1c7460" v="4.33"/>
+ <val o="1c8270" v="4.33"/>
+ <val o="1c907e" v="21.221"/>
+ <val o="1c9e8f" v="20.86"/>
+ <val o="1caca2" v="22.903"/>
+ <val o="1cbab1" v="22.672"/>
+ <val o="1cc8c1" v="34.711"/>
+ <val o="1cd6d0" v="33.792"/>
+ <val o="1ce4de" v="32.717"/>
+ <val o="1cf2f0" v="33.04"/>
+ <val o="1d0109" v="34.047"/>
+ <val o="1d0f06" v="36.536"/>
+ <val o="1d1d15" v="36.673"/>
+ <val o="1d2b25" v="36.752"/>
+ <val o="1d3935" v="37.932"/>
+ <val o="1d4745" v="37.857"/>
+ <val o="1d5555" v="37.029"/>
+ <val o="1d6366" v="32.844"/>
+ <val o="1d7175" v="31.917"/>
+ <val o="1d7f86" v="31.363"/>
+ <val o="1d8d95" v="15.349"/>
+ <val o="1d9ba6" v="17.623"/>
+ <val o="1da9b6" v="17.658"/>
+ <val o="1db7c7" v="16.597"/>
+ <val o="1dc5d5" v="17.621"/>
+ <val o="1dd3e6" v="18.017"/>
+ <val o="1de1f5" v="32.337"/>
+ <val o="1df006" v="37.113"/>
+ <val o="1dfe16" v="36.896"/>
+ <val o="1e0c26" v="37.646"/>
+ <val o="1e1a36" v="37.465"/>
+ <val o="1e2847" v="35.96"/>
+ <val o="1e3659" v="34.217"/>
+ <val o="1e4467" v="31.472"/>
+ <val o="1e5281" v="27.913"/>
+ <val o="1e6086" v="27.77"/>
+ <val o="1e6e96" v="27.092"/>
+ <val o="1e7ca6" v="9.65"/>
+ <val o="1e8ab5" v="8.989"/>
+ <val o="1e98c6" v="8.871"/>
+ <val o="1ea6d5" v="11.525"/>
+ <val o="1eb4e6" v="11.312"/>
+ <val o="1ec2f6" v="13.145"/>
+ <val o="1ed106" v="12.866"/>
+ <val o="1edf16" v="13.503"/>
+ <val o="1eed26" v="12.977"/>
+ <val o="1efb36" v="12.853"/>
+ <val o="1f0946" v="12.322"/>
+ <val o="1f1756" v="11.244"/>
+ <val o="1f2566" v="11.357"/>
+ <val o="1f3376" v="13.909"/>
+ <val o="1f4187" v="20.778"/>
+ <val o="1f4f96" v="17.384"/>
+ <val o="1f5da7" v="17.882"/>
+ <val o="1f6bb6" v="17.779"/>
+ <val o="1f79c7" v="15.628"/>
+ <val o="1f87d6" v="18.718"/>
+ <val o="1f95e7" v="19.687"/>
+ <val o="1fa401" v="15.856"/>
+ <val o="1fb204" v="14.235"/>
+ <val o="1fc016" v="14.121"/>
+ <val o="1fce25" v="10.417"/>
+ <val o="1fdc35" v="10.192"/>
+ <val o="1fea45" v="10.247"/>
+ <val o="1ff855" v="12.409"/>
+ <val o="200665" v="18.782"/>
+ <val o="201475" v="17.709"/>
+ <val o="202286" v="24.468"/>
+ <val o="203095" v="27.895"/>
+ <val o="203ea5" v="31.135"/>
+ <val o="204cb6" v="28.073"/>
+ <val o="205ac6" v="26.781"/>
+ <val o="2068d6" v="27.955"/>
+ <val o="2076e6" v="31.834"/>
+ <val o="2084f6" v="30.684"/>
+ <val o="209306" v="33.239"/>
+ <val o="20a116" v="31.592"/>
+ <val o="20af26" v="27.051"/>
+ <val o="20bd37" v="26.891"/>
+ <val o="20cb46" v="22.834"/>
+ <val o="20d957" v="21.1"/>
+ <val o="20e767" v="20.723"/>
+ <val o="20f581" v="20.412"/>
+ <val o="210386" v="17.178"/>
+ <val o="211194" v="14.845"/>
+ <val o="211fa5" v="14.404"/>
+ <val o="212db5" v="13.895"/>
+ <val o="213bc5" v="14.291"/>
+ <val o="2149d6" v="18.376"/>
+ <val o="2157e5" v="22.682"/>
+ <val o="2165f6" v="29.056"/>
+ <val o="217406" v="30.985"/>
+ <val o="218217" v="31.244"/>
+ <val o="219026" v="30.501"/>
+ <val o="219e39" v="30.757"/>
+ <val o="21ac46" v="29.766"/>
+ <val o="21ba57" v="29.686"/>
+ <val o="21c867" v="30.47"/>
+ <val o="21d677" v="31.06"/>
+ <val o="21e487" v="28.958"/>
+ <val o="21f296" v="28.474"/>
+ <val o="2200a6" v="27.753"/>
+ <val o="220eb7" v="26.676"/>
+ <val o="221cc6" v="24.07"/>
+ <val o="222ad7" v="18.889"/>
+ <val o="2238e7" v="17.556"/>
+ <val o="224701" v="16.434"/>
+ <val o="225505" v="18.47"/>
+ <val o="226315" v="9.837"/>
+ <val o="227125" v="9.73"/>
+ <val o="227f35" v="12.672"/>
+ <val o="228d45" v="17.29"/>
+ <val o="229b54" v="17.161"/>
+ <val o="22a965" v="19.388"/>
+ <val o="22b776" v="22.792"/>
+ <val o="22c586" v="25.973"/>
+ <val o="22d397" v="28.305"/>
+ <val o="22e1a6" v="28.475"/>
+ <val o="22efb6" v="23.531"/>
+ <val o="22fdc7" v="22.62"/>
+ <val o="230bd7" v="22.13"/>
+ <val o="2319e6" v="27.159"/>
+ <val o="2327f6" v="27.705"/>
+ <val o="23361b" v="29.796"/>
+ <val o="234416" v="27.341"/>
+ <val o="235226" v="25.887"/>
+ <val o="236037" v="25.842"/>
+ <val o="236e46" v="23.266"/>
+ <val o="237c57" v="21.664"/>
+ <val o="238a66" v="19.437"/>
+ <val o="239881" v="15.912"/>
+ <val o="23a685" v="16.037"/>
+ <val o="23b495" v="15.674"/>
+ <val o="23c2a4" v="13.705"/>
+ <val o="23d0b5" v="14.331"/>
+ <val o="23dec4" v="15.781"/>
+ <val o="23ecd5" v="18.196"/>
+ <val o="23fae4" v="22.115"/>
+ <val o="2408f6" v="26.066"/>
+ <val o="241706" v="34.813"/>
+ <val o="242518" v="35.914"/>
+ <val o="243325" v="36.775"/>
+ <val o="244137" v="34.277"/>
+ <val o="244f46" v="32.056"/>
+ <val o="246b66" v="33.001"/>
+ <val o="247976" v="31.687"/>
+ <val o="248786" v="36.854"/>
+ <val o="24957e" v="30.428"/>
+ <val o="24a38f" v="28.246"/>
+ <val o="24b19c" v="28.984"/>
+ <val o="24bfac" v="27.176"/>
+ <val o="24cdbc" v="26.455"/>
+ <val o="24dbcd" v="21.891"/>
+ <val o="24e9e5" v="20.073"/>
+ <val o="24f808" v="17.083"/>
+ <val o="250616" v="17.921"/>
+ <val o="251426" v="17.972"/>
+ <val o="252236" v="16.1"/>
+ <val o="253047" v="17.324"/>
+ <val o="253e56" v="20.97"/>
+ <val o="254c67" v="21.269"/>
+ <val o="255a76" v="25.041"/>
+ <val o="256887" v="31.27"/>
+ <val o="257697" v="33.712"/>
+ <val o="2584a8" v="82.744"/>
+ <val o="2592b6" v="46.746"/>
+ <val o="25a0c7" v="22.903"/>
+ <val o="25aed7" v="31.343"/>
+ <val o="25bce7" v="30.438"/>
+ <val o="25caf8" v="28.883"/>
+ <val o="25d907" v="30.794"/>
+ <val o="25e718" v="31.011"/>
+ <val o="25f527" v="28.098"/>
+ <val o="260338" v="27.177"/>
+ <val o="261149" v="24.941"/>
+ <val o="261f59" v="22.834"/>
+ <val o="262d68" v="23.209"/>
+ <val o="263b83" v="17.56"/>
+ <val o="264986" v="17.555"/>
+ <val o="265795" v="18.761"/>
+ <val o="2665a6" v="20.698"/>
+ <val o="2673b5" v="19.372"/>
+ <val o="2681c6" v="18.644"/>
+ <val o="268fd5" v="18.792"/>
+ <val o="269de6" v="18.951"/>
+ <val o="26abf6" v="18.907"/>
+ <val o="26ba06" v="23.409"/>
+ <val o="26c817" v="23.511"/>
+ <val o="26d62b" v="26.941"/>
+ <val o="26e436" v="24.008"/>
+ <val o="26f247" v="23.147"/>
+ <val o="270057" v="23.935"/>
+ <val o="270e67" v="24"/>
+ <val o="271c77" v="22.888"/>
+ <val o="272a87" v="26.246"/>
+ <val o="273897" v="25.909"/>
+ <val o="2746a8" v="25.109"/>
+ <val o="2754b9" v="24.725"/>
+ <val o="2762c7" v="23.755"/>
+ <val o="2770d8" v="18.839"/>
+ <val o="277ee7" v="15.362"/>
+ </par>
+ <par memind="8608" h="3dc1a8de">
+ <val o="0" v="0"/>
+ <val o="e08" v="0"/>
+ <val o="1c32" v="0"/>
+ <val o="2a3c" v="0"/>
+ <val o="3835" v="0"/>
+ <val o="4645" v="0"/>
+ <val o="5455" v="0"/>
+ <val o="6265" v="0"/>
+ <val o="7075" v="0"/>
+ <val o="7e85" v="0"/>
+ <val o="8c96" v="0"/>
+ <val o="9aa5" v="0"/>
+ <val o="a8b6" v="0"/>
+ <val o="b6c5" v="0"/>
+ <val o="c4d7" v="0"/>
+ <val o="d30b" v="0"/>
+ <val o="e0f6" v="0"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="0"/>
+ <val o="11937" v="0"/>
+ <val o="12746" v="0"/>
+ <val o="13556" v="0"/>
+ <val o="14366" v="0"/>
+ <val o="15181" v="0"/>
+ <val o="15f85" v="0"/>
+ <val o="16d95" v="0"/>
+ <val o="17ba4" v="0"/>
+ <val o="189b5" v="0"/>
+ <val o="197c4" v="0"/>
+ <val o="1a5d5" v="0"/>
+ <val o="1b3e6" v="0"/>
+ <val o="1c1f6" v="0"/>
+ <val o="1d005" v="0"/>
+ <val o="1de15" v="0"/>
+ <val o="1ec25" v="0"/>
+ <val o="1fa36" v="0"/>
+ <val o="20845" v="0"/>
+ <val o="21656" v="0"/>
+ <val o="22465" v="0"/>
+ <val o="23276" v="0"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="0"/>
+ <val o="25ca7" v="0"/>
+ <val o="26ab7" v="0"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="0"/>
+ <val o="294e6" v="0"/>
+ <val o="2a301" v="0"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="0"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="0"/>
+ <val o="31375" v="0"/>
+ <val o="3219e" v="0"/>
+ <val o="32f96" v="0"/>
+ <val o="33da6" v="0"/>
+ <val o="34bb6" v="0"/>
+ <val o="359de" v="0"/>
+ <val o="367d6" v="0"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="0"/>
+ <val o="3bc36" v="0"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="0"/>
+ <val o="3e667" v="0"/>
+ <val o="3f481" v="0"/>
+ <val o="40285" v="0"/>
+ <val o="41095" v="0"/>
+ <val o="41ea5" v="0"/>
+ <val o="42cb5" v="0"/>
+ <val o="43ac5" v="0"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="0"/>
+ <val o="464f5" v="0"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="0"/>
+ <val o="54600" v="0"/>
+ <val o="55406" v="0"/>
+ <val o="56215" v="0"/>
+ <val o="57026" v="0"/>
+ <val o="57e36" v="0"/>
+ <val o="58c46" v="0"/>
+ <val o="59a70" v="0"/>
+ <val o="5a867" v="0"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="0"/>
+ <val o="5eeb8" v="0"/>
+ <val o="5fcc6" v="0"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="0"/>
+ <val o="65f37" v="0"/>
+ <val o="66d46" v="0"/>
+ <val o="67b57" v="0"/>
+ <val o="68967" v="0"/>
+ <val o="69782" v="0"/>
+ <val o="6a586" v="0"/>
+ <val o="6b395" v="0"/>
+ <val o="6c1a6" v="0"/>
+ <val o="6cfb5" v="0"/>
+ <val o="6ddc6" v="0"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="0"/>
+ <val o="707f6" v="0"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="0"/>
+ <val o="74e47" v="0"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="0"/>
+ <val o="7bebf" v="0"/>
+ <val o="7cccf" v="0"/>
+ <val o="7dadf" v="0"/>
+ <val o="7e8fa" v="0"/>
+ <val o="7f70a" v="0"/>
+ <val o="8051a" v="0"/>
+ <val o="8132a" v="0"/>
+ <val o="8213a" v="0"/>
+ <val o="82f4a" v="0"/>
+ <val o="83d5a" v="0"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="0"/>
+ <val o="891bb" v="0"/>
+ <val o="89fca" v="0"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="0"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="0"/>
+ <val o="93a84" v="0"/>
+ <val o="94885" v="0"/>
+ <val o="95694" v="0"/>
+ <val o="964a5" v="0"/>
+ <val o="972b4" v="0"/>
+ <val o="980c5" v="0"/>
+ <val o="98ed4" v="0"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="0"/>
+ <val o="9c716" v="0"/>
+ <val o="9d526" v="0"/>
+ <val o="9e336" v="0"/>
+ <val o="9f145" v="0"/>
+ <val o="9ff56" v="0"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="0"/>
+ <val o="a2986" v="0"/>
+ <val o="a3795" v="0"/>
+ <val o="a45a7" v="0"/>
+ <val o="a53b6" v="0"/>
+ <val o="a61c7" v="0"/>
+ <val o="a6fd6" v="0"/>
+ <val o="a7e00" v="0"/>
+ <val o="a8c00" v="0"/>
+ <val o="a9a05" v="0"/>
+ <val o="aa815" v="0"/>
+ <val o="ab625" v="0"/>
+ <val o="ac435" v="0"/>
+ <val o="ad245" v="0"/>
+ <val o="ae055" v="0"/>
+ <val o="aee65" v="0"/>
+ <val o="afc75" v="0"/>
+ <val o="b0a85" v="0"/>
+ <val o="b26a6" v="0"/>
+ <val o="b34b6" v="0"/>
+ <val o="b42c6" v="0"/>
+ <val o="b50d6" v="0"/>
+ <val o="b5ee7" v="0"/>
+ <val o="b6cf6" v="0"/>
+ <val o="b7b07" v="0"/>
+ <val o="b8917" v="0"/>
+ <val o="b9728" v="0"/>
+ <val o="ba537" v="0"/>
+ <val o="bb347" v="0"/>
+ <val o="bc157" v="0"/>
+ <val o="bcf67" v="0"/>
+ <val o="bdd81" v="0"/>
+ <val o="beb86" v="0"/>
+ <val o="bf995" v="0"/>
+ <val o="c07a6" v="0"/>
+ <val o="c15b5" v="0"/>
+ <val o="c23c6" v="0"/>
+ <val o="c31d5" v="0"/>
+ <val o="c3fe6" v="0"/>
+ <val o="c4df5" v="0"/>
+ <val o="c5c06" v="0"/>
+ <val o="c6a16" v="0"/>
+ <val o="c7826" v="0"/>
+ <val o="c8636" v="0"/>
+ <val o="c9446" v="0"/>
+ <val o="ca256" v="0"/>
+ <val o="cb066" v="0"/>
+ <val o="cbe76" v="0"/>
+ <val o="ccc87" v="0"/>
+ <val o="cda96" v="0"/>
+ <val o="ce8a8" v="0"/>
+ <val o="cf6b7" v="0"/>
+ <val o="d04c8" v="0"/>
+ <val o="d12d7" v="0"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="0"/>
+ <val o="d3d05" v="0"/>
+ <val o="d4b15" v="0"/>
+ <val o="d5926" v="0"/>
+ <val o="d6735" v="0"/>
+ <val o="d7546" v="0"/>
+ <val o="d8355" v="0"/>
+ <val o="d9166" v="0"/>
+ <val o="d9f75" v="0"/>
+ <val o="dad87" v="0"/>
+ <val o="dbb97" v="0"/>
+ <val o="dc9a8" v="0"/>
+ <val o="dd7b7" v="0"/>
+ <val o="de5c6" v="0"/>
+ <val o="df3d7" v="0"/>
+ <val o="e01d7" v="0"/>
+ <val o="e0fe5" v="0"/>
+ <val o="e1df5" v="0"/>
+ <val o="e2c04" v="0"/>
+ <val o="e3a14" v="0"/>
+ <val o="e4824" v="0"/>
+ <val o="e5634" v="0"/>
+ <val o="e6444" v="0"/>
+ <val o="e7255" v="0"/>
+ <val o="e806f" v="0"/>
+ <val o="e8e7f" v="0"/>
+ <val o="e9c8e" v="0"/>
+ <val o="eaa9f" v="0"/>
+ <val o="eb8ae" v="0"/>
+ <val o="ec6bf" v="0"/>
+ <val o="ed4ce" v="0"/>
+ <val o="ee2df" v="0"/>
+ <val o="ef0ef" v="0"/>
+ <val o="eff01" v="0"/>
+ <val o="f0d10" v="0"/>
+ <val o="f1b20" v="0"/>
+ <val o="f2930" v="0"/>
+ <val o="f3740" v="0"/>
+ <val o="f4551" v="0"/>
+ <val o="f5361" v="0"/>
+ <val o="f6172" v="0"/>
+ <val o="f6f80" v="0"/>
+ <val o="f7d91" v="0"/>
+ <val o="f8ba1" v="0"/>
+ <val o="f99b1" v="0"/>
+ <val o="fa7c0" v="0"/>
+ <val o="fb5d1" v="0"/>
+ <val o="fc3e0" v="0"/>
+ <val o="fd1fb" v="0"/>
+ <val o="fe00b" v="0"/>
+ <val o="fee1c" v="0"/>
+ <val o="ffc2c" v="0"/>
+ <val o="100a3b" v="0"/>
+ <val o="10184c" v="0"/>
+ <val o="10265b" v="0"/>
+ <val o="10346c" v="0"/>
+ <val o="10427b" v="0"/>
+ <val o="10508d" v="0"/>
+ <val o="105e9d" v="0"/>
+ <val o="106cad" v="0"/>
+ <val o="107abd" v="0"/>
+ <val o="1088cd" v="0"/>
+ <val o="1096de" v="0"/>
+ <val o="10a4ed" v="0"/>
+ <val o="10b2fe" v="0"/>
+ <val o="10c10d" v="0"/>
+ <val o="10cf1e" v="0"/>
+ <val o="10dd2e" v="0"/>
+ <val o="10eb66" v="0"/>
+ <val o="10f94e" v="0"/>
+ <val o="11075e" v="0"/>
+ <val o="11156d" v="0"/>
+ <val o="112388" v="0"/>
+ <val o="113187" v="0"/>
+ <val o="113fb0" v="0"/>
+ <val o="114da6" v="0"/>
+ <val o="115bb6" v="0"/>
+ <val o="1169c6" v="0"/>
+ <val o="1177d6" v="0"/>
+ <val o="1185e8" v="0"/>
+ <val o="1193f7" v="0"/>
+ <val o="11a208" v="0"/>
+ <val o="11b017" v="0"/>
+ <val o="11be2f" v="0"/>
+ <val o="11cc37" v="0"/>
+ <val o="11da47" v="0"/>
+ <val o="11e857" v="0"/>
+ <val o="11f667" v="0"/>
+ <val o="120578" v="0"/>
+ <val o="121386" v="0"/>
+ <val o="122196" v="0"/>
+ <val o="122fa6" v="0"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="0"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="0"/>
+ <val o="128305" v="0"/>
+ <val o="129115" v="0"/>
+ <val o="129f25" v="0"/>
+ <val o="12ad35" v="0"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="0"/>
+ <val o="12d766" v="0"/>
+ <val o="12e575" v="0"/>
+ <val o="12f386" v="0"/>
+ <val o="130196" v="0"/>
+ <val o="130fa6" v="0"/>
+ <val o="131db7" v="0"/>
+ <val o="132bc5" v="0"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="0"/>
+ <val o="1774a3" v="0"/>
+ <val o="1782b3" v="0"/>
+ <val o="1790c5" v="0"/>
+ <val o="179ed4" v="0"/>
+ <val o="17ace4" v="0"/>
+ <val o="17bafd" v="0"/>
+ <val o="17c90f" v="0"/>
+ <val o="17d71e" v="0"/>
+ <val o="17e52f" v="0"/>
+ <val o="17f33f" v="0"/>
+ <val o="18014f" v="0"/>
+ <val o="180f5f" v="0"/>
+ <val o="181d6e" v="0"/>
+ <val o="182b7f" v="0"/>
+ <val o="18398f" v="0"/>
+ <val o="1847a1" v="0"/>
+ <val o="1855af" v="0"/>
+ <val o="1863c0" v="0"/>
+ <val o="1871cf" v="0"/>
+ <val o="187fe0" v="0"/>
+ <val o="188def" v="0"/>
+ <val o="189c00" v="0"/>
+ <val o="18b80d" v="0"/>
+ <val o="18c61c" v="0"/>
+ <val o="18d42c" v="0"/>
+ <val o="18e23b" v="0"/>
+ <val o="18f04b" v="0"/>
+ <val o="18fe5e" v="0"/>
+ <val o="190c76" v="0"/>
+ <val o="191a86" v="0"/>
+ <val o="192896" v="0"/>
+ <val o="1936a6" v="0"/>
+ <val o="1944b7" v="0"/>
+ <val o="1952c6" v="0"/>
+ <val o="1960d7" v="0"/>
+ <val o="196ee6" v="0"/>
+ <val o="197cf8" v="0"/>
+ <val o="198b0f" v="0"/>
+ <val o="19991f" v="0"/>
+ <val o="19b541" v="0"/>
+ <val o="19c34d" v="0"/>
+ <val o="19d15e" v="0"/>
+ <val o="19df80" v="0"/>
+ <val o="19ed90" v="0"/>
+ <val o="19eebe" v="0"/>
+ <val o="19fb8e" v="0"/>
+ <val o="1a09a0" v="0"/>
+ <val o="1a17ae" v="0"/>
+ <val o="1a25be" v="0"/>
+ <val o="1a33cd" v="0"/>
+ <val o="1a41dd" v="0"/>
+ <val o="1a4fed" v="0"/>
+ <val o="1a5e08" v="0"/>
+ <val o="1a6c05" v="0"/>
+ <val o="1a7a15" v="0"/>
+ <val o="1a8826" v="0"/>
+ <val o="1a9637" v="0"/>
+ <val o="1aa445" v="0"/>
+ <val o="1ab255" v="0"/>
+ <val o="1ac065" v="0"/>
+ <val o="1ace75" v="0"/>
+ <val o="1adc87" v="0"/>
+ <val o="1aea96" v="0"/>
+ <val o="1af8a7" v="0"/>
+ <val o="1b06b7" v="0"/>
+ <val o="1b14c6" v="0"/>
+ <val o="1c7460" v="0"/>
+ <val o="1c8270" v="0"/>
+ <val o="1c907e" v="0"/>
+ <val o="1c9e8f" v="0"/>
+ <val o="1caca2" v="0"/>
+ <val o="1cbab1" v="0"/>
+ <val o="1cc8c1" v="0"/>
+ <val o="1cd6d0" v="0"/>
+ <val o="1ce4de" v="0"/>
+ <val o="1cf2f0" v="0"/>
+ <val o="1d0109" v="0"/>
+ <val o="1d0f06" v="0"/>
+ <val o="1d1d15" v="0"/>
+ <val o="1d2b25" v="0"/>
+ <val o="1d3935" v="0"/>
+ <val o="1d4745" v="0"/>
+ <val o="1d5555" v="0"/>
+ <val o="1d6366" v="0"/>
+ <val o="1d7175" v="0"/>
+ <val o="1d7f86" v="0"/>
+ <val o="1d8d95" v="0"/>
+ <val o="1d9ba6" v="0"/>
+ <val o="1da9b6" v="0"/>
+ <val o="1db7c7" v="0"/>
+ <val o="1dc5d5" v="0"/>
+ <val o="1dd3e6" v="0"/>
+ <val o="1de1f5" v="0"/>
+ <val o="1df006" v="0"/>
+ <val o="1dfe16" v="0"/>
+ <val o="1e0c26" v="0"/>
+ <val o="1e1a36" v="0"/>
+ <val o="1e2847" v="0"/>
+ <val o="1e3659" v="0"/>
+ <val o="1e4467" v="0"/>
+ <val o="1e5281" v="0"/>
+ <val o="1e6086" v="0"/>
+ <val o="1e6e96" v="0"/>
+ <val o="1e7ca6" v="0"/>
+ <val o="1e8ab5" v="0"/>
+ <val o="1e98c6" v="0"/>
+ <val o="1ea6d5" v="0"/>
+ <val o="1eb4e6" v="0"/>
+ <val o="1ec2f6" v="0"/>
+ <val o="1ed106" v="0"/>
+ <val o="1edf16" v="0"/>
+ <val o="1eed26" v="0"/>
+ <val o="1efb36" v="0"/>
+ <val o="1f0946" v="0"/>
+ <val o="1f1756" v="0"/>
+ <val o="1f2566" v="0"/>
+ <val o="1f3376" v="0"/>
+ <val o="1f4187" v="0"/>
+ <val o="1f4f96" v="0"/>
+ <val o="1f5da7" v="0"/>
+ <val o="1f6bb6" v="0"/>
+ <val o="1f79c7" v="0"/>
+ <val o="1f87d6" v="0"/>
+ <val o="1f95e7" v="0"/>
+ <val o="1fa401" v="0"/>
+ <val o="1fb204" v="0"/>
+ <val o="1fc016" v="0"/>
+ <val o="1fce25" v="0"/>
+ <val o="1fdc35" v="0"/>
+ <val o="1fea45" v="0"/>
+ <val o="1ff855" v="0"/>
+ <val o="200665" v="0"/>
+ <val o="201475" v="0"/>
+ <val o="202286" v="0"/>
+ <val o="203095" v="0"/>
+ <val o="203ea5" v="0"/>
+ <val o="204cb6" v="0"/>
+ <val o="205ac6" v="0"/>
+ <val o="2068d6" v="0"/>
+ <val o="2076e6" v="0"/>
+ <val o="2084f6" v="0"/>
+ <val o="209306" v="0"/>
+ <val o="20a116" v="0"/>
+ <val o="20af26" v="0"/>
+ <val o="20bd37" v="0"/>
+ <val o="20cb46" v="0"/>
+ <val o="20d957" v="0"/>
+ <val o="20e767" v="0"/>
+ <val o="20f581" v="0"/>
+ <val o="210386" v="0"/>
+ <val o="211194" v="0"/>
+ <val o="211fa5" v="0"/>
+ <val o="212db5" v="0"/>
+ <val o="213bc5" v="0"/>
+ <val o="2149d6" v="0"/>
+ <val o="2157e5" v="0"/>
+ <val o="2165f6" v="0"/>
+ <val o="217406" v="0"/>
+ <val o="218217" v="0"/>
+ <val o="219026" v="0"/>
+ <val o="219e39" v="0"/>
+ <val o="21ac46" v="0"/>
+ <val o="21ba57" v="0"/>
+ <val o="21c867" v="0"/>
+ <val o="21d677" v="0"/>
+ <val o="21e487" v="0"/>
+ <val o="21f296" v="0"/>
+ <val o="2200a6" v="0"/>
+ <val o="220eb7" v="0"/>
+ <val o="221cc6" v="0"/>
+ <val o="222ad7" v="0"/>
+ <val o="2238e7" v="0"/>
+ <val o="224701" v="0"/>
+ <val o="225505" v="0"/>
+ <val o="226315" v="0"/>
+ <val o="227125" v="0"/>
+ <val o="227f35" v="0"/>
+ <val o="228d45" v="0"/>
+ <val o="229b54" v="0"/>
+ <val o="22a965" v="0"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="0"/>
+ <val o="22d397" v="0"/>
+ <val o="22e1a6" v="0"/>
+ <val o="22efb6" v="0"/>
+ <val o="22fdc7" v="0"/>
+ <val o="230bd7" v="0"/>
+ <val o="2319e6" v="0"/>
+ <val o="2327f6" v="0"/>
+ <val o="23361b" v="0"/>
+ <val o="234416" v="0"/>
+ <val o="235226" v="0"/>
+ <val o="236037" v="0"/>
+ <val o="236e46" v="0"/>
+ <val o="237c57" v="0"/>
+ <val o="238a66" v="0"/>
+ <val o="239881" v="0"/>
+ <val o="23a685" v="0"/>
+ <val o="23b495" v="0"/>
+ <val o="23c2a4" v="0"/>
+ <val o="23d0b5" v="0"/>
+ <val o="23dec4" v="0"/>
+ <val o="23ecd5" v="0"/>
+ <val o="23fae4" v="0"/>
+ <val o="2408f6" v="0"/>
+ <val o="241706" v="0"/>
+ <val o="242518" v="0"/>
+ <val o="243325" v="0"/>
+ <val o="244137" v="0"/>
+ <val o="244f46" v="0"/>
+ <val o="246b66" v="0"/>
+ <val o="247976" v="0"/>
+ <val o="248786" v="0"/>
+ <val o="24957e" v="0"/>
+ <val o="24a38f" v="0"/>
+ <val o="24b19c" v="0"/>
+ <val o="24bfac" v="0"/>
+ <val o="24cdbc" v="0"/>
+ <val o="24dbcd" v="0"/>
+ <val o="24e9e5" v="0"/>
+ <val o="24f808" v="0"/>
+ <val o="250616" v="0"/>
+ <val o="251426" v="0"/>
+ <val o="252236" v="0"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="0"/>
+ <val o="254c67" v="0"/>
+ <val o="255a76" v="0"/>
+ <val o="256887" v="0"/>
+ <val o="257697" v="0"/>
+ <val o="2584a8" v="0"/>
+ <val o="2592b6" v="0"/>
+ <val o="25a0c7" v="0"/>
+ <val o="25aed7" v="0"/>
+ <val o="25bce7" v="0"/>
+ <val o="25caf8" v="0"/>
+ <val o="25d907" v="0"/>
+ <val o="25e718" v="0"/>
+ <val o="25f527" v="0"/>
+ <val o="260338" v="0"/>
+ <val o="261149" v="0"/>
+ <val o="261f59" v="0"/>
+ <val o="262d68" v="0"/>
+ <val o="263b83" v="0"/>
+ <val o="264986" v="0"/>
+ <val o="265795" v="0"/>
+ <val o="2665a6" v="0"/>
+ <val o="2673b5" v="0"/>
+ <val o="2681c6" v="0"/>
+ <val o="268fd5" v="0"/>
+ <val o="269de6" v="0"/>
+ <val o="26abf6" v="0"/>
+ <val o="26ba06" v="0"/>
+ <val o="26c817" v="0"/>
+ <val o="26d62b" v="0"/>
+ <val o="26e436" v="0"/>
+ <val o="26f247" v="0"/>
+ <val o="270057" v="0"/>
+ <val o="270e67" v="0"/>
+ <val o="271c77" v="0"/>
+ <val o="272a87" v="0"/>
+ <val o="273897" v="0"/>
+ <val o="2746a8" v="0"/>
+ <val o="2754b9" v="0"/>
+ <val o="2762c7" v="0"/>
+ <val o="2770d8" v="0"/>
+ <val o="277ee7" v="0"/>
+ </par>
+ <par memind="8604" h="3dc1a8de">
+ <val o="0" v="21.043"/>
+ <val o="e08" v="20.051"/>
+ <val o="1c32" v="19.818"/>
+ <val o="2a3c" v="19.554"/>
+ <val o="3835" v="18.951"/>
+ <val o="4645" v="18.853"/>
+ <val o="5455" v="22.398"/>
+ <val o="6265" v="24.492"/>
+ <val o="7075" v="29.206"/>
+ <val o="7e85" v="35.063"/>
+ <val o="8c96" v="35.07"/>
+ <val o="9aa5" v="33.585"/>
+ <val o="a8b6" v="30.77"/>
+ <val o="b6c5" v="29.141"/>
+ <val o="c4d7" v="0.061"/>
+ <val o="d30b" v="0.061"/>
+ <val o="e0f6" v="0.06"/>
+ <val o="ef06" v="0.059"/>
+ <val o="fd17" v="0.06"/>
+ <val o="10b27" v="0.062"/>
+ <val o="11937" v="0.063"/>
+ <val o="12746" v="0.061"/>
+ <val o="13556" v="0.062"/>
+ <val o="14366" v="0.066"/>
+ <val o="15181" v="0.07"/>
+ <val o="15f85" v="0.064"/>
+ <val o="16d95" v="0.065"/>
+ <val o="17ba4" v="0.064"/>
+ <val o="189b5" v="0.063"/>
+ <val o="197c4" v="0.064"/>
+ <val o="1a5d5" v="0.066"/>
+ <val o="1b3e6" v="0.067"/>
+ <val o="1c1f6" v="0.066"/>
+ <val o="1d005" v="0.062"/>
+ <val o="1de15" v="0.062"/>
+ <val o="1ec25" v="0.063"/>
+ <val o="1fa36" v="0.066"/>
+ <val o="20845" v="0.066"/>
+ <val o="21656" v="0.066"/>
+ <val o="22465" v="0.064"/>
+ <val o="23276" v="0.063"/>
+ <val o="24086" v="0.061"/>
+ <val o="24e99" v="0.061"/>
+ <val o="25ca7" v="0.062"/>
+ <val o="26ab7" v="0.062"/>
+ <val o="278c6" v="0.061"/>
+ <val o="286d6" v="0.063"/>
+ <val o="294e6" v="0.066"/>
+ <val o="2a301" v="0.067"/>
+ <val o="2b105" v="0.06"/>
+ <val o="2bf15" v="0.061"/>
+ <val o="2cd25" v="0.063"/>
+ <val o="2db35" v="0.062"/>
+ <val o="2e946" v="0.061"/>
+ <val o="2f755" v="0.058"/>
+ <val o="30566" v="0.066"/>
+ <val o="31375" v="0.064"/>
+ <val o="3219e" v="0.066"/>
+ <val o="32f96" v="0.063"/>
+ <val o="33da6" v="0.062"/>
+ <val o="34bb6" v="0.063"/>
+ <val o="359de" v="0.064"/>
+ <val o="367d6" v="0.064"/>
+ <val o="375e6" v="0.062"/>
+ <val o="3840e" v="0.059"/>
+ <val o="3921e" v="0.06"/>
+ <val o="3a016" v="0.06"/>
+ <val o="3ae27" v="0.063"/>
+ <val o="3bc36" v="0.062"/>
+ <val o="3ca47" v="0.059"/>
+ <val o="3d856" v="0.062"/>
+ <val o="3e667" v="0.064"/>
+ <val o="3f481" v="0.068"/>
+ <val o="40285" v="0.065"/>
+ <val o="41095" v="0.066"/>
+ <val o="41ea5" v="0.065"/>
+ <val o="42cb5" v="0.066"/>
+ <val o="43ac5" v="0.064"/>
+ <val o="448d5" v="0.061"/>
+ <val o="456e6" v="0.062"/>
+ <val o="464f5" v="0.062"/>
+ <val o="480ff" v="0.058"/>
+ <val o="48f0e" v="0.056"/>
+ <val o="49d1d" v="0.057"/>
+ <val o="4ab46" v="0.056"/>
+ <val o="4b955" v="0.057"/>
+ <val o="4c769" v="0.055"/>
+ <val o="4d577" v="0.057"/>
+ <val o="4e387" v="0.057"/>
+ <val o="4f196" v="0.057"/>
+ <val o="4ffa6" v="0.058"/>
+ <val o="50dd0" v="0.06"/>
+ <val o="51bc6" v="0.062"/>
+ <val o="529d6" v="0.062"/>
+ <val o="537e7" v="0.065"/>
+ <val o="54600" v="0.067"/>
+ <val o="55406" v="0.065"/>
+ <val o="56215" v="0.065"/>
+ <val o="57026" v="0.065"/>
+ <val o="57e36" v="0.064"/>
+ <val o="58c46" v="0.063"/>
+ <val o="59a70" v="0.063"/>
+ <val o="5a867" v="0.06"/>
+ <val o="5b676" v="0.06"/>
+ <val o="5c487" v="0.056"/>
+ <val o="5d296" v="0.058"/>
+ <val o="5e0a9" v="0.06"/>
+ <val o="5eeb8" v="0.062"/>
+ <val o="5fcc6" v="0.061"/>
+ <val o="60ad7" v="0.057"/>
+ <val o="618e7" v="0.057"/>
+ <val o="626f7" v="0.059"/>
+ <val o="63507" v="0.059"/>
+ <val o="64317" v="0.061"/>
+ <val o="65127" v="0.062"/>
+ <val o="65f37" v="0.063"/>
+ <val o="66d46" v="0.062"/>
+ <val o="67b57" v="0.062"/>
+ <val o="68967" v="0.065"/>
+ <val o="69782" v="0.065"/>
+ <val o="6a586" v="0.064"/>
+ <val o="6b395" v="0.065"/>
+ <val o="6c1a6" v="0.066"/>
+ <val o="6cfb5" v="0.064"/>
+ <val o="6ddc6" v="0.063"/>
+ <val o="6ebd6" v="0.059"/>
+ <val o="6f9e6" v="0.061"/>
+ <val o="707f6" v="0.062"/>
+ <val o="71607" v="0.059"/>
+ <val o="72417" v="0.058"/>
+ <val o="73227" v="0.056"/>
+ <val o="74037" v="0.061"/>
+ <val o="74e47" v="0.061"/>
+ <val o="75c57" v="0.058"/>
+ <val o="76a63" v="0.058"/>
+ <val o="77873" v="0.058"/>
+ <val o="78680" v="0.058"/>
+ <val o="7948f" v="0.058"/>
+ <val o="7a29f" v="0.06"/>
+ <val o="7b0af" v="0.062"/>
+ <val o="7bebf" v="0.062"/>
+ <val o="7cccf" v="0.064"/>
+ <val o="7dadf" v="0.065"/>
+ <val o="7e8fa" v="0.065"/>
+ <val o="7f70a" v="0.067"/>
+ <val o="8051a" v="0.067"/>
+ <val o="8132a" v="0.066"/>
+ <val o="8213a" v="0.066"/>
+ <val o="82f4a" v="0.067"/>
+ <val o="83d5a" v="0.062"/>
+ <val o="84b6a" v="0.06"/>
+ <val o="8597a" v="0.059"/>
+ <val o="8678b" v="0.059"/>
+ <val o="8759b" v="0.057"/>
+ <val o="883ac" v="0.06"/>
+ <val o="891bb" v="0.061"/>
+ <val o="89fca" v="0.06"/>
+ <val o="8adda" v="0.059"/>
+ <val o="8bbeb" v="0.059"/>
+ <val o="8c9fc" v="0.058"/>
+ <val o="8d80b" v="0.058"/>
+ <val o="8e61a" v="0.059"/>
+ <val o="8f42a" v="0.06"/>
+ <val o="9023a" v="0.061"/>
+ <val o="9104a" v="0.062"/>
+ <val o="91e5a" v="0.06"/>
+ <val o="92c6a" v="0.063"/>
+ <val o="93a84" v="0.067"/>
+ <val o="94885" v="0.064"/>
+ <val o="95694" v="0.064"/>
+ <val o="964a5" v="0.065"/>
+ <val o="972b4" v="0.064"/>
+ <val o="980c5" v="0.062"/>
+ <val o="98ed4" v="0.065"/>
+ <val o="99ce5" v="0.064"/>
+ <val o="9aaf5" v="0.061"/>
+ <val o="9b906" v="0.061"/>
+ <val o="9c716" v="0.062"/>
+ <val o="9d526" v="0.062"/>
+ <val o="9e336" v="0.063"/>
+ <val o="9f145" v="0.063"/>
+ <val o="9ff56" v="0.061"/>
+ <val o="a0d65" v="0.061"/>
+ <val o="a1b77" v="30.22"/>
+ <val o="a2986" v="16.054"/>
+ <val o="a3795" v="10.22"/>
+ <val o="a45a7" v="3.839"/>
+ <val o="a53b6" v="3.301"/>
+ <val o="a61c7" v="4.19"/>
+ <val o="a6fd6" v="2.002"/>
+ <val o="a7e00" v="4.911"/>
+ <val o="a8c00" v="7.897"/>
+ <val o="a9a05" v="2.934"/>
+ <val o="aa815" v="1.487"/>
+ <val o="ab625" v="2.196"/>
+ <val o="ac435" v="1.679"/>
+ <val o="ad245" v="5.984"/>
+ <val o="ae055" v="10.661"/>
+ <val o="aee65" v="3.653"/>
+ <val o="afc75" v="7.252"/>
+ <val o="b0a85" v="19.708"/>
+ <val o="b26a6" v="21.128"/>
+ <val o="b34b6" v="18.358"/>
+ <val o="b42c6" v="3.456"/>
+ <val o="b50d6" v="4.916"/>
+ <val o="b5ee7" v="7.337"/>
+ <val o="b6cf6" v="7.205"/>
+ <val o="b7b07" v="9.191"/>
+ <val o="b8917" v="8.027"/>
+ <val o="b9728" v="7.688"/>
+ <val o="ba537" v="8.667"/>
+ <val o="bb347" v="7.734"/>
+ <val o="bc157" v="5.148"/>
+ <val o="bcf67" v="5.081"/>
+ <val o="bdd81" v="18.433"/>
+ <val o="beb86" v="4.676"/>
+ <val o="bf995" v="3.97"/>
+ <val o="c07a6" v="2.247"/>
+ <val o="c15b5" v="2.519"/>
+ <val o="c23c6" v="4.784"/>
+ <val o="c31d5" v="10.406"/>
+ <val o="c3fe6" v="5.863"/>
+ <val o="c4df5" v="9.668"/>
+ <val o="c5c06" v="5.194"/>
+ <val o="c6a16" v="5.35"/>
+ <val o="c7826" v="7.745"/>
+ <val o="c8636" v="3.651"/>
+ <val o="c9446" v="4.236"/>
+ <val o="ca256" v="3.281"/>
+ <val o="cb066" v="5.657"/>
+ <val o="cbe76" v="2.249"/>
+ <val o="ccc87" v="12.004"/>
+ <val o="cda96" v="15.833"/>
+ <val o="ce8a8" v="11.981"/>
+ <val o="cf6b7" v="15.145"/>
+ <val o="d04c8" v="12.386"/>
+ <val o="d12d7" v="8.53"/>
+ <val o="d20e7" v="1.474"/>
+ <val o="d2f02" v="7.441"/>
+ <val o="d3d05" v="4.262"/>
+ <val o="d4b15" v="3.805"/>
+ <val o="d5926" v="3.752"/>
+ <val o="d6735" v="5.538"/>
+ <val o="d7546" v="9.524"/>
+ <val o="d8355" v="1.988"/>
+ <val o="d9166" v="4.159"/>
+ <val o="d9f75" v="9.621"/>
+ <val o="dad87" v="17.704"/>
+ <val o="dbb97" v="19.171"/>
+ <val o="dc9a8" v="19.252"/>
+ <val o="dd7b7" v="14.961"/>
+ <val o="de5c6" v="12.816"/>
+ <val o="df3d7" v="13.113"/>
+ <val o="e01d7" v="13.435"/>
+ <val o="e0fe5" v="13.283"/>
+ <val o="e1df5" v="13.989"/>
+ <val o="e2c04" v="18.098"/>
+ <val o="e3a14" v="17.742"/>
+ <val o="e4824" v="15.229"/>
+ <val o="e5634" v="15.263"/>
+ <val o="e6444" v="11.968"/>
+ <val o="e7255" v="9.893"/>
+ <val o="e806f" v="7.997"/>
+ <val o="e8e7f" v="13.888"/>
+ <val o="e9c8e" v="6.336"/>
+ <val o="eaa9f" v="5.634"/>
+ <val o="eb8ae" v="7.369"/>
+ <val o="ec6bf" v="14.276"/>
+ <val o="ed4ce" v="9.674"/>
+ <val o="ee2df" v="12.81"/>
+ <val o="ef0ef" v="14.985"/>
+ <val o="eff01" v="21.531"/>
+ <val o="f0d10" v="21.038"/>
+ <val o="f1b20" v="22.908"/>
+ <val o="f2930" v="20.891"/>
+ <val o="f3740" v="22.234"/>
+ <val o="f4551" v="22.517"/>
+ <val o="f5361" v="24.172"/>
+ <val o="f6172" v="23.008"/>
+ <val o="f6f80" v="23.475"/>
+ <val o="f7d91" v="22.059"/>
+ <val o="f8ba1" v="18.671"/>
+ <val o="f99b1" v="18.447"/>
+ <val o="fa7c0" v="15.862"/>
+ <val o="fb5d1" v="16.38"/>
+ <val o="fc3e0" v="15.165"/>
+ <val o="fd1fb" v="12.335"/>
+ <val o="fe00b" v="12.283"/>
+ <val o="fee1c" v="8.941"/>
+ <val o="ffc2c" v="8.837"/>
+ <val o="100a3b" v="8.793"/>
+ <val o="10184c" v="10.043"/>
+ <val o="10265b" v="13.932"/>
+ <val o="10346c" v="15.974"/>
+ <val o="10427b" v="19.167"/>
+ <val o="10508d" v="22.237"/>
+ <val o="105e9d" v="21.533"/>
+ <val o="106cad" v="23.309"/>
+ <val o="107abd" v="20.333"/>
+ <val o="1088cd" v="18.556"/>
+ <val o="1096de" v="20.163"/>
+ <val o="10a4ed" v="19.978"/>
+ <val o="10b2fe" v="21.155"/>
+ <val o="10c10d" v="23.964"/>
+ <val o="10cf1e" v="21.874"/>
+ <val o="10dd2e" v="19.591"/>
+ <val o="10eb66" v="20.234"/>
+ <val o="10f94e" v="17.32"/>
+ <val o="11075e" v="16.556"/>
+ <val o="11156d" v="13.217"/>
+ <val o="112388" v="12.271"/>
+ <val o="113187" v="8.967"/>
+ <val o="113fb0" v="8.319"/>
+ <val o="114da6" v="8.357"/>
+ <val o="115bb6" v="8.49"/>
+ <val o="1169c6" v="10.458"/>
+ <val o="1177d6" v="13.998"/>
+ <val o="1185e8" v="15.461"/>
+ <val o="1193f7" v="18.331"/>
+ <val o="11a208" v="22.284"/>
+ <val o="11b017" v="19.151"/>
+ <val o="11be2f" v="23.464"/>
+ <val o="11cc37" v="20.211"/>
+ <val o="11da47" v="19.83"/>
+ <val o="11e857" v="20.8"/>
+ <val o="11f667" v="18.042"/>
+ <val o="120578" v="0.018"/>
+ <val o="121386" v="0.02"/>
+ <val o="122196" v="0.02"/>
+ <val o="122fa6" v="0.017"/>
+ <val o="123db5" v="0.015"/>
+ <val o="124bc5" v="0.014"/>
+ <val o="1259d5" v="0.011"/>
+ <val o="1267e4" v="0.01"/>
+ <val o="127600" v="0.009"/>
+ <val o="128305" v="0.008"/>
+ <val o="129115" v="0.008"/>
+ <val o="129f25" v="0.008"/>
+ <val o="12ad35" v="0.007"/>
+ <val o="12bb45" v="0.007"/>
+ <val o="12c954" v="0.01"/>
+ <val o="12d766" v="0.011"/>
+ <val o="12e575" v="0.016"/>
+ <val o="12f386" v="0.013"/>
+ <val o="130196" v="0.019"/>
+ <val o="130fa6" v="0.014"/>
+ <val o="131db7" v="0.015"/>
+ <val o="132bc5" v="0.015"/>
+ <val o="1339d4" v="0.269"/>
+ <val o="1347e5" v="0.124"/>
+ <val o="1355f4" v="0.16"/>
+ <val o="136404" v="0.227"/>
+ <val o="137214" v="0.243"/>
+ <val o="138024" v="0.236"/>
+ <val o="138e33" v="0.239"/>
+ <val o="139c44" v="0.074"/>
+ <val o="13aa54" v="0.086"/>
+ <val o="13b865" v="0.031"/>
+ <val o="13c67e" v="0.412"/>
+ <val o="13d48e" v="0.199"/>
+ <val o="13e29e" v="0.15"/>
+ <val o="13f0ae" v="0.14"/>
+ <val o="13febf" v="0.218"/>
+ <val o="140ccf" v="0.309"/>
+ <val o="141adf" v="0.206"/>
+ <val o="1428ef" v="0.032"/>
+ <val o="1436ff" v="0.065"/>
+ <val o="14450f" v="0.054"/>
+ <val o="14531f" v="0.037"/>
+ <val o="146130" v="0.025"/>
+ <val o="146f40" v="0.09"/>
+ <val o="147d44" v="0.03"/>
+ <val o="148b57" v="0.038"/>
+ <val o="149965" v="0.026"/>
+ <val o="14a775" v="0.109"/>
+ <val o="14b584" v="0.086"/>
+ <val o="14c397" v="0.251"/>
+ <val o="14d1a4" v="0.225"/>
+ <val o="14dfb6" v="0.193"/>
+ <val o="14edc5" v="0.103"/>
+ <val o="14fbd5" v="0.044"/>
+ <val o="1509e5" v="0.023"/>
+ <val o="1517ff" v="0.068"/>
+ <val o="152605" v="0.157"/>
+ <val o="153415" v="0.105"/>
+ <val o="154225" v="0.097"/>
+ <val o="155035" v="0.127"/>
+ <val o="155e45" v="0.189"/>
+ <val o="156c55" v="0.281"/>
+ <val o="157a65" v="0.162"/>
+ <val o="158875" v="0.15"/>
+ <val o="159686" v="0.246"/>
+ <val o="15a495" v="0.211"/>
+ <val o="15b2a6" v="0.188"/>
+ <val o="15c0b6" v="0.105"/>
+ <val o="15cec6" v="0.092"/>
+ <val o="15dcd5" v="0.099"/>
+ <val o="15eae6" v="0.112"/>
+ <val o="15f8f5" v="0.29"/>
+ <val o="160706" v="0.06"/>
+ <val o="161517" v="0.107"/>
+ <val o="162326" v="0.072"/>
+ <val o="163137" v="0.064"/>
+ <val o="163f46" v="0.101"/>
+ <val o="164d57" v="0.045"/>
+ <val o="165b67" v="0.035"/>
+ <val o="166982" v="0.057"/>
+ <val o="167786" v="0.07"/>
+ <val o="168596" v="0.035"/>
+ <val o="1693a6" v="0.029"/>
+ <val o="16a1b5" v="0.026"/>
+ <val o="16afc6" v="0.075"/>
+ <val o="16bdd5" v="0.178"/>
+ <val o="16cbe6" v="0.221"/>
+ <val o="16d9f6" v="0.109"/>
+ <val o="16e807" v="0.578"/>
+ <val o="16f616" v="0.633"/>
+ <val o="170429" v="0.678"/>
+ <val o="171236" v="0.456"/>
+ <val o="172047" v="0.461"/>
+ <val o="172e57" v="0.475"/>
+ <val o="173c67" v="0.487"/>
+ <val o="174a77" v="0.565"/>
+ <val o="175887" v="0.597"/>
+ <val o="176694" v="34.372"/>
+ <val o="1774a3" v="33.056"/>
+ <val o="1782b3" v="34.198"/>
+ <val o="1790c5" v="31.148"/>
+ <val o="179ed4" v="26.734"/>
+ <val o="17ace4" v="26.883"/>
+ <val o="17bafd" v="28.046"/>
+ <val o="17c90f" v="25.107"/>
+ <val o="17d71e" v="24.826"/>
+ <val o="17e52f" v="25.129"/>
+ <val o="17f33f" v="22.979"/>
+ <val o="18014f" v="22.968"/>
+ <val o="180f5f" v="28.04"/>
+ <val o="181d6e" v="30.608"/>
+ <val o="182b7f" v="35.156"/>
+ <val o="18398f" v="61.079"/>
+ <val o="1847a1" v="61.118"/>
+ <val o="1855af" v="58.214"/>
+ <val o="1863c0" v="54.149"/>
+ <val o="1871cf" v="56.141"/>
+ <val o="187fe0" v="53.757"/>
+ <val o="188def" v="57.188"/>
+ <val o="189c00" v="53.596"/>
+ <val o="18b80d" v="36.269"/>
+ <val o="18c61c" v="36.626"/>
+ <val o="18d42c" v="35.102"/>
+ <val o="18e23b" v="29.855"/>
+ <val o="18f04b" v="28.307"/>
+ <val o="18fe5e" v="25.364"/>
+ <val o="190c76" v="19.996"/>
+ <val o="191a86" v="19.748"/>
+ <val o="192896" v="19.345"/>
+ <val o="1936a6" v="18.873"/>
+ <val o="1944b7" v="18.11"/>
+ <val o="1952c6" v="20.032"/>
+ <val o="1960d7" v="25.137"/>
+ <val o="196ee6" v="27.508"/>
+ <val o="197cf8" v="29.449"/>
+ <val o="198b0f" v="27.372"/>
+ <val o="19991f" v="30.562"/>
+ <val o="19b541" v="29.963"/>
+ <val o="19c34d" v="28.336"/>
+ <val o="19d15e" v="28.102"/>
+ <val o="19df80" v="28.864"/>
+ <val o="19ed90" v="28.278"/>
+ <val o="19eebe" v="28.399"/>
+ <val o="19fb8e" v="11.016"/>
+ <val o="1a09a0" v="14.155"/>
+ <val o="1a17ae" v="19.132"/>
+ <val o="1a25be" v="20.28"/>
+ <val o="1a33cd" v="11.28"/>
+ <val o="1a41dd" v="12.25"/>
+ <val o="1a4fed" v="16.561"/>
+ <val o="1a5e08" v="15.15"/>
+ <val o="1a6c05" v="9.953"/>
+ <val o="1a7a15" v="12.732"/>
+ <val o="1a8826" v="12.958"/>
+ <val o="1a9637" v="9.685"/>
+ <val o="1aa445" v="6.805"/>
+ <val o="1ab255" v="4.559"/>
+ <val o="1ac065" v="10.632"/>
+ <val o="1ace75" v="14.64"/>
+ <val o="1adc87" v="14.182"/>
+ <val o="1aea96" v="13.717"/>
+ <val o="1af8a7" v="15.071"/>
+ <val o="1b06b7" v="13.236"/>
+ <val o="1b14c6" v="12.746"/>
+ <val o="1c7460" v="3.999"/>
+ <val o="1c8270" v="2.186"/>
+ <val o="1c907e" v="16.585"/>
+ <val o="1c9e8f" v="14.378"/>
+ <val o="1caca2" v="16.041"/>
+ <val o="1cbab1" v="15.799"/>
+ <val o="1cc8c1" v="29.25"/>
+ <val o="1cd6d0" v="27.621"/>
+ <val o="1ce4de" v="25.453"/>
+ <val o="1cf2f0" v="24.369"/>
+ <val o="1d0109" v="25.348"/>
+ <val o="1d0f06" v="28.687"/>
+ <val o="1d1d15" v="28.373"/>
+ <val o="1d2b25" v="28.801"/>
+ <val o="1d3935" v="30.045"/>
+ <val o="1d4745" v="30.644"/>
+ <val o="1d5555" v="30.354"/>
+ <val o="1d6366" v="24.933"/>
+ <val o="1d7175" v="23.813"/>
+ <val o="1d7f86" v="23.818"/>
+ <val o="1d8d95" v="15.153"/>
+ <val o="1d9ba6" v="16.69"/>
+ <val o="1da9b6" v="16.385"/>
+ <val o="1db7c7" v="15.643"/>
+ <val o="1dc5d5" v="16.269"/>
+ <val o="1dd3e6" v="16.689"/>
+ <val o="1de1f5" v="27.897"/>
+ <val o="1df006" v="31.449"/>
+ <val o="1dfe16" v="31.232"/>
+ <val o="1e0c26" v="32.001"/>
+ <val o="1e1a36" v="31.999"/>
+ <val o="1e2847" v="30.669"/>
+ <val o="1e3659" v="29.185"/>
+ <val o="1e4467" v="27.199"/>
+ <val o="1e5281" v="23.798"/>
+ <val o="1e6086" v="23.566"/>
+ <val o="1e6e96" v="23.035"/>
+ <val o="1e7ca6" v="8.573"/>
+ <val o="1e8ab5" v="7.913"/>
+ <val o="1e98c6" v="7.851"/>
+ <val o="1ea6d5" v="9.845"/>
+ <val o="1eb4e6" v="10.177"/>
+ <val o="1ec2f6" v="11.732"/>
+ <val o="1ed106" v="11.554"/>
+ <val o="1edf16" v="12.067"/>
+ <val o="1eed26" v="11.725"/>
+ <val o="1efb36" v="11.465"/>
+ <val o="1f0946" v="10.851"/>
+ <val o="1f1756" v="10.928"/>
+ <val o="1f2566" v="10.984"/>
+ <val o="1f3376" v="13.626"/>
+ <val o="1f4187" v="19.399"/>
+ <val o="1f4f96" v="16.326"/>
+ <val o="1f5da7" v="15.848"/>
+ <val o="1f6bb6" v="15.785"/>
+ <val o="1f79c7" v="14.319"/>
+ <val o="1f87d6" v="15.77"/>
+ <val o="1f95e7" v="16.295"/>
+ <val o="1fa401" v="13.382"/>
+ <val o="1fb204" v="11.752"/>
+ <val o="1fc016" v="11.694"/>
+ <val o="1fce25" v="9.24"/>
+ <val o="1fdc35" v="8.969"/>
+ <val o="1fea45" v="9.42"/>
+ <val o="1ff855" v="11.299"/>
+ <val o="200665" v="18.06"/>
+ <val o="201475" v="15.989"/>
+ <val o="202286" v="23.363"/>
+ <val o="203095" v="26.071"/>
+ <val o="203ea5" v="29.283"/>
+ <val o="204cb6" v="25.856"/>
+ <val o="205ac6" v="25.235"/>
+ <val o="2068d6" v="26.405"/>
+ <val o="2076e6" v="30.076"/>
+ <val o="2084f6" v="28.433"/>
+ <val o="209306" v="30.271"/>
+ <val o="20a116" v="28.557"/>
+ <val o="20af26" v="24.542"/>
+ <val o="20bd37" v="23.962"/>
+ <val o="20cb46" v="21.242"/>
+ <val o="20d957" v="19.633"/>
+ <val o="20e767" v="18.009"/>
+ <val o="20f581" v="17.798"/>
+ <val o="210386" v="15.304"/>
+ <val o="211194" v="13.453"/>
+ <val o="211fa5" v="13.055"/>
+ <val o="212db5" v="12.872"/>
+ <val o="213bc5" v="13.544"/>
+ <val o="2149d6" v="17.25"/>
+ <val o="2157e5" v="21.046"/>
+ <val o="2165f6" v="25.832"/>
+ <val o="217406" v="27.791"/>
+ <val o="218217" v="28.054"/>
+ <val o="219026" v="27.63"/>
+ <val o="219e39" v="28.457"/>
+ <val o="21ac46" v="27.725"/>
+ <val o="21ba57" v="27.922"/>
+ <val o="21c867" v="28.25"/>
+ <val o="21d677" v="27.539"/>
+ <val o="21e487" v="26.251"/>
+ <val o="21f296" v="25.947"/>
+ <val o="2200a6" v="24.671"/>
+ <val o="220eb7" v="24.383"/>
+ <val o="221cc6" v="22.742"/>
+ <val o="222ad7" v="17.742"/>
+ <val o="2238e7" v="16.117"/>
+ <val o="224701" v="14.548"/>
+ <val o="225505" v="18.418"/>
+ <val o="226315" v="10.147"/>
+ <val o="227125" v="10.648"/>
+ <val o="227f35" v="13.062"/>
+ <val o="228d45" v="17.082"/>
+ <val o="229b54" v="15.723"/>
+ <val o="22a965" v="17.627"/>
+ <val o="22b776" v="21.083"/>
+ <val o="22c586" v="24.293"/>
+ <val o="22d397" v="26.823"/>
+ <val o="22e1a6" v="27.04"/>
+ <val o="22efb6" v="22.091"/>
+ <val o="22fdc7" v="21.514"/>
+ <val o="230bd7" v="20.922"/>
+ <val o="2319e6" v="25.061"/>
+ <val o="2327f6" v="25.959"/>
+ <val o="23361b" v="27.644"/>
+ <val o="234416" v="25.578"/>
+ <val o="235226" v="24.199"/>
+ <val o="236037" v="23.83"/>
+ <val o="236e46" v="22.719"/>
+ <val o="237c57" v="20.952"/>
+ <val o="238a66" v="18.382"/>
+ <val o="239881" v="14.928"/>
+ <val o="23a685" v="14.859"/>
+ <val o="23b495" v="14.081"/>
+ <val o="23c2a4" v="13.309"/>
+ <val o="23d0b5" v="13.726"/>
+ <val o="23dec4" v="15.071"/>
+ <val o="23ecd5" v="17.064"/>
+ <val o="23fae4" v="20.612"/>
+ <val o="2408f6" v="24.891"/>
+ <val o="241706" v="32.942"/>
+ <val o="242518" v="34.247"/>
+ <val o="243325" v="34.787"/>
+ <val o="244137" v="31.176"/>
+ <val o="244f46" v="29.806"/>
+ <val o="246b66" v="30.569"/>
+ <val o="247976" v="29.175"/>
+ <val o="248786" v="34.921"/>
+ <val o="24957e" v="28.767"/>
+ <val o="24a38f" v="25.797"/>
+ <val o="24b19c" v="26.161"/>
+ <val o="24bfac" v="24.769"/>
+ <val o="24cdbc" v="24.053"/>
+ <val o="24dbcd" v="20.28"/>
+ <val o="24e9e5" v="18.22"/>
+ <val o="24f808" v="15.345"/>
+ <val o="250616" v="15.953"/>
+ <val o="251426" v="15.884"/>
+ <val o="252236" v="15.054"/>
+ <val o="253047" v="16.014"/>
+ <val o="253e56" v="19.574"/>
+ <val o="254c67" v="20.065"/>
+ <val o="255a76" v="23.936"/>
+ <val o="256887" v="29.274"/>
+ <val o="257697" v="31.691"/>
+ <val o="2584a8" v="75.154"/>
+ <val o="2592b6" v="41.458"/>
+ <val o="25a0c7" v="21.221"/>
+ <val o="25aed7" v="29.417"/>
+ <val o="25bce7" v="28.597"/>
+ <val o="25caf8" v="27.256"/>
+ <val o="25d907" v="28.925"/>
+ <val o="25e718" v="29.38"/>
+ <val o="25f527" v="26.559"/>
+ <val o="260338" v="25.234"/>
+ <val o="261149" v="23.312"/>
+ <val o="261f59" v="21.317"/>
+ <val o="262d68" v="20.761"/>
+ <val o="263b83" v="16.36"/>
+ <val o="264986" v="15.657"/>
+ <val o="265795" v="16.618"/>
+ <val o="2665a6" v="17.888"/>
+ <val o="2673b5" v="16.861"/>
+ <val o="2681c6" v="16.617"/>
+ <val o="268fd5" v="17.428"/>
+ <val o="269de6" v="18.225"/>
+ <val o="26abf6" v="18.415"/>
+ <val o="26ba06" v="22.126"/>
+ <val o="26c817" v="22.126"/>
+ <val o="26d62b" v="25.782"/>
+ <val o="26e436" v="22.774"/>
+ <val o="26f247" v="22.774"/>
+ <val o="270057" v="22.909"/>
+ <val o="270e67" v="23.139"/>
+ <val o="271c77" v="21.553"/>
+ <val o="272a87" v="23.539"/>
+ <val o="273897" v="23.139"/>
+ <val o="2746a8" v="22.735"/>
+ <val o="2754b9" v="22.335"/>
+ <val o="2762c7" v="23.205"/>
+ <val o="2770d8" v="18.238"/>
+ <val o="277ee7" v="14.136"/>
+ </par>
+ <par memind="9812" h="3dc1a8de">
+ <val o="0" v="114.081"/>
+ <val o="e08" v="117.19"/>
+ <val o="1c32" v="118.964"/>
+ <val o="2a3c" v="120.564"/>
+ <val o="3835" v="118.747"/>
+ <val o="4645" v="116.529"/>
+ <val o="5455" v="109.384"/>
+ <val o="6265" v="121.356"/>
+ <val o="7075" v="119.014"/>
+ <val o="7e85" v="116.226"/>
+ <val o="8c96" v="120.175"/>
+ <val o="9aa5" v="120.949"/>
+ <val o="a8b6" v="124.2"/>
+ <val o="b6c5" v="124.043"/>
+ <val o="c4d7" v="117.761"/>
+ <val o="d30b" v="118.092"/>
+ <val o="e0f6" v="118.354"/>
+ <val o="ef06" v="118.633"/>
+ <val o="fd17" v="118.494"/>
+ <val o="10b27" v="121.243"/>
+ <val o="11937" v="122.278"/>
+ <val o="12746" v="119.689"/>
+ <val o="13556" v="121.165"/>
+ <val o="14366" v="125.688"/>
+ <val o="15181" v="127.517"/>
+ <val o="15f85" v="119.508"/>
+ <val o="16d95" v="121.27"/>
+ <val o="17ba4" v="121.262"/>
+ <val o="189b5" v="120.595"/>
+ <val o="197c4" v="118.725"/>
+ <val o="1a5d5" v="126.913"/>
+ <val o="1b3e6" v="125.984"/>
+ <val o="1c1f6" v="124.971"/>
+ <val o="1d005" v="121.722"/>
+ <val o="1de15" v="122.233"/>
+ <val o="1ec25" v="122.836"/>
+ <val o="1fa36" v="124.125"/>
+ <val o="20845" v="125.105"/>
+ <val o="21656" v="125.266"/>
+ <val o="22465" v="125.381"/>
+ <val o="23276" v="123.688"/>
+ <val o="24086" v="119.437"/>
+ <val o="24e99" v="119.167"/>
+ <val o="25ca7" v="120.334"/>
+ <val o="26ab7" v="119.837"/>
+ <val o="278c6" v="120.109"/>
+ <val o="286d6" v="122.074"/>
+ <val o="294e6" v="125.542"/>
+ <val o="2a301" v="125.638"/>
+ <val o="2b105" v="117.398"/>
+ <val o="2bf15" v="118.807"/>
+ <val o="2cd25" v="119.644"/>
+ <val o="2db35" v="119.674"/>
+ <val o="2e946" v="117.549"/>
+ <val o="2f755" v="113.229"/>
+ <val o="30566" v="125.153"/>
+ <val o="31375" v="124.691"/>
+ <val o="3219e" v="123.556"/>
+ <val o="32f96" v="123.231"/>
+ <val o="33da6" v="123.404"/>
+ <val o="34bb6" v="123.932"/>
+ <val o="359de" v="123.328"/>
+ <val o="367d6" v="122.641"/>
+ <val o="375e6" v="121.544"/>
+ <val o="3840e" v="118.209"/>
+ <val o="3921e" v="118.675"/>
+ <val o="3a016" v="118.325"/>
+ <val o="3ae27" v="121.893"/>
+ <val o="3bc36" v="120.711"/>
+ <val o="3ca47" v="119.854"/>
+ <val o="3d856" v="120.165"/>
+ <val o="3e667" v="122.996"/>
+ <val o="3f481" v="126.557"/>
+ <val o="40285" v="124.061"/>
+ <val o="41095" v="124.874"/>
+ <val o="41ea5" v="125.244"/>
+ <val o="42cb5" v="125.083"/>
+ <val o="43ac5" v="123.182"/>
+ <val o="448d5" v="119.311"/>
+ <val o="456e6" v="122.524"/>
+ <val o="464f5" v="121.173"/>
+ <val o="480ff" v="118.696"/>
+ <val o="48f0e" v="117.559"/>
+ <val o="49d1d" v="118.947"/>
+ <val o="4ab46" v="118.797"/>
+ <val o="4b955" v="117.048"/>
+ <val o="4c769" v="116.182"/>
+ <val o="4d577" v="119.101"/>
+ <val o="4e387" v="119.152"/>
+ <val o="4f196" v="116.814"/>
+ <val o="4ffa6" v="118.943"/>
+ <val o="50dd0" v="120.844"/>
+ <val o="51bc6" v="119.109"/>
+ <val o="529d6" v="120.802"/>
+ <val o="537e7" v="123.095"/>
+ <val o="54600" v="125.922"/>
+ <val o="55406" v="122.082"/>
+ <val o="56215" v="123.001"/>
+ <val o="57026" v="123.033"/>
+ <val o="57e36" v="122.972"/>
+ <val o="58c46" v="120.717"/>
+ <val o="59a70" v="121.599"/>
+ <val o="5a867" v="120.977"/>
+ <val o="5b676" v="119.038"/>
+ <val o="5c487" v="115.798"/>
+ <val o="5d296" v="119.913"/>
+ <val o="5e0a9" v="120.284"/>
+ <val o="5eeb8" v="119.451"/>
+ <val o="5fcc6" v="118.325"/>
+ <val o="60ad7" v="117.111"/>
+ <val o="618e7" v="117.263"/>
+ <val o="626f7" v="120.147"/>
+ <val o="63507" v="117.534"/>
+ <val o="64317" v="118.902"/>
+ <val o="65127" v="120.099"/>
+ <val o="65f37" v="121.434"/>
+ <val o="66d46" v="121.986"/>
+ <val o="67b57" v="120.683"/>
+ <val o="68967" v="122.861"/>
+ <val o="69782" v="119.35"/>
+ <val o="6a586" v="120.845"/>
+ <val o="6b395" v="122.119"/>
+ <val o="6c1a6" v="122.506"/>
+ <val o="6cfb5" v="121.462"/>
+ <val o="6ddc6" v="118.909"/>
+ <val o="6ebd6" v="116.372"/>
+ <val o="6f9e6" v="121.311"/>
+ <val o="707f6" v="119.412"/>
+ <val o="71607" v="118.281"/>
+ <val o="72417" v="118.148"/>
+ <val o="73227" v="117.811"/>
+ <val o="74037" v="121.694"/>
+ <val o="74e47" v="120.755"/>
+ <val o="75c57" v="118.651"/>
+ <val o="76a63" v="118.08"/>
+ <val o="77873" v="118.282"/>
+ <val o="78680" v="113.911"/>
+ <val o="7948f" v="116.941"/>
+ <val o="7a29f" v="119.508"/>
+ <val o="7b0af" v="119.071"/>
+ <val o="7bebf" v="121.146"/>
+ <val o="7cccf" v="121.336"/>
+ <val o="7dadf" v="122.095"/>
+ <val o="7e8fa" v="121.785"/>
+ <val o="7f70a" v="124.065"/>
+ <val o="8051a" v="125.455"/>
+ <val o="8132a" v="126.011"/>
+ <val o="8213a" v="125.018"/>
+ <val o="82f4a" v="122.741"/>
+ <val o="83d5a" v="120.26"/>
+ <val o="84b6a" v="118.856"/>
+ <val o="8597a" v="118.817"/>
+ <val o="8678b" v="117.807"/>
+ <val o="8759b" v="117.444"/>
+ <val o="883ac" v="119.967"/>
+ <val o="891bb" v="121.141"/>
+ <val o="89fca" v="120.259"/>
+ <val o="8adda" v="118.558"/>
+ <val o="8bbeb" v="118.812"/>
+ <val o="8c9fc" v="118.633"/>
+ <val o="8d80b" v="118.948"/>
+ <val o="8e61a" v="117.315"/>
+ <val o="8f42a" v="118.146"/>
+ <val o="9023a" v="120.121"/>
+ <val o="9104a" v="120.561"/>
+ <val o="91e5a" v="118.638"/>
+ <val o="92c6a" v="122.844"/>
+ <val o="93a84" v="125.153"/>
+ <val o="94885" v="123.463"/>
+ <val o="95694" v="122.793"/>
+ <val o="964a5" v="123.093"/>
+ <val o="972b4" v="122.535"/>
+ <val o="980c5" v="120.189"/>
+ <val o="98ed4" v="123.097"/>
+ <val o="99ce5" v="119.336"/>
+ <val o="9aaf5" v="118.5"/>
+ <val o="9b906" v="115.743"/>
+ <val o="9c716" v="119.722"/>
+ <val o="9d526" v="120.222"/>
+ <val o="9e336" v="118.918"/>
+ <val o="9f145" v="117.551"/>
+ <val o="9ff56" v="116.649"/>
+ <val o="a0d65" v="116.52"/>
+ <val o="a1b77" v="116.703"/>
+ <val o="a2986" v="118.806"/>
+ <val o="a3795" v="118.461"/>
+ <val o="a45a7" v="119.593"/>
+ <val o="a53b6" v="119.78"/>
+ <val o="a61c7" v="119.973"/>
+ <val o="a6fd6" v="120.761"/>
+ <val o="a7e00" v="122.782"/>
+ <val o="a8c00" v="125.444"/>
+ <val o="a9a05" v="118.255"/>
+ <val o="aa815" v="119.302"/>
+ <val o="ab625" v="120.149"/>
+ <val o="ac435" v="119.678"/>
+ <val o="ad245" v="117.138"/>
+ <val o="ae055" v="114.681"/>
+ <val o="aee65" v="120.851"/>
+ <val o="afc75" v="119.099"/>
+ <val o="b0a85" v="116.609"/>
+ <val o="b26a6" v="116.729"/>
+ <val o="b34b6" v="118.045"/>
+ <val o="b42c6" v="115.477"/>
+ <val o="b50d6" v="115.891"/>
+ <val o="b5ee7" v="114.24"/>
+ <val o="b6cf6" v="122.794"/>
+ <val o="b7b07" v="119.002"/>
+ <val o="b8917" v="118.701"/>
+ <val o="b9728" v="119.602"/>
+ <val o="ba537" v="120.963"/>
+ <val o="bb347" v="119.924"/>
+ <val o="bc157" v="120.628"/>
+ <val o="bcf67" v="123.122"/>
+ <val o="bdd81" v="118.683"/>
+ <val o="beb86" v="118.301"/>
+ <val o="bf995" v="118.882"/>
+ <val o="c07a6" v="120.187"/>
+ <val o="c15b5" v="119.576"/>
+ <val o="c23c6" v="118.243"/>
+ <val o="c31d5" v="115.692"/>
+ <val o="c3fe6" v="117.56"/>
+ <val o="c4df5" v="116.057"/>
+ <val o="c5c06" v="117.411"/>
+ <val o="c6a16" v="117.486"/>
+ <val o="c7826" v="116.745"/>
+ <val o="c8636" v="118.265"/>
+ <val o="c9446" v="118.202"/>
+ <val o="ca256" v="118.004"/>
+ <val o="cb066" v="117.255"/>
+ <val o="cbe76" v="122.71"/>
+ <val o="ccc87" v="118.736"/>
+ <val o="cda96" v="116.734"/>
+ <val o="ce8a8" v="118.339"/>
+ <val o="cf6b7" v="118.66"/>
+ <val o="d04c8" v="119.703"/>
+ <val o="d12d7" v="121.536"/>
+ <val o="d20e7" v="123.419"/>
+ <val o="d2f02" v="126.186"/>
+ <val o="d3d05" v="119.31"/>
+ <val o="d4b15" v="120.58"/>
+ <val o="d5926" v="120.857"/>
+ <val o="d6735" v="119.582"/>
+ <val o="d7546" v="117.426"/>
+ <val o="d8355" v="124.349"/>
+ <val o="d9166" v="122.435"/>
+ <val o="d9f75" v="120.692"/>
+ <val o="dad87" v="117.233"/>
+ <val o="dbb97" v="116.862"/>
+ <val o="dc9a8" v="116.728"/>
+ <val o="dd7b7" v="118.212"/>
+ <val o="de5c6" v="117.857"/>
+ <val o="df3d7" v="117.176"/>
+ <val o="e01d7" v="117.271"/>
+ <val o="e0fe5" v="116.796"/>
+ <val o="e1df5" v="117.361"/>
+ <val o="e2c04" v="119.769"/>
+ <val o="e3a14" v="121.05"/>
+ <val o="e4824" v="120.921"/>
+ <val o="e5634" v="122.497"/>
+ <val o="e6444" v="120.677"/>
+ <val o="e7255" v="122.67"/>
+ <val o="e806f" v="123.778"/>
+ <val o="e8e7f" v="116.655"/>
+ <val o="e9c8e" v="118.109"/>
+ <val o="eaa9f" v="118.372"/>
+ <val o="eb8ae" v="117.527"/>
+ <val o="ec6bf" v="113.518"/>
+ <val o="ed4ce" v="123.496"/>
+ <val o="ee2df" v="120.611"/>
+ <val o="ef0ef" v="118.704"/>
+ <val o="eff01" v="115.651"/>
+ <val o="f0d10" v="117.487"/>
+ <val o="f1b20" v="117.186"/>
+ <val o="f2930" v="121.114"/>
+ <val o="f3740" v="117.611"/>
+ <val o="f4551" v="117.892"/>
+ <val o="f5361" v="117.718"/>
+ <val o="f6172" v="117.584"/>
+ <val o="f6f80" v="117.38"/>
+ <val o="f7d91" v="119.222"/>
+ <val o="f8ba1" v="121.037"/>
+ <val o="f99b1" v="120.221"/>
+ <val o="fa7c0" v="118.379"/>
+ <val o="fb5d1" v="118.238"/>
+ <val o="fc3e0" v="123.037"/>
+ <val o="fd1fb" v="123.007"/>
+ <val o="fe00b" v="126.294"/>
+ <val o="fee1c" v="123.682"/>
+ <val o="ffc2c" v="123.591"/>
+ <val o="100a3b" v="122.918"/>
+ <val o="10184c" v="121.387"/>
+ <val o="10265b" v="117.586"/>
+ <val o="10346c" v="117.716"/>
+ <val o="10427b" v="119.191"/>
+ <val o="10508d" v="117.355"/>
+ <val o="105e9d" v="117.862"/>
+ <val o="106cad" v="117.531"/>
+ <val o="107abd" v="119.886"/>
+ <val o="1088cd" v="119.426"/>
+ <val o="1096de" v="118.72"/>
+ <val o="10a4ed" v="119.004"/>
+ <val o="10b2fe" v="118.725"/>
+ <val o="10c10d" v="116.196"/>
+ <val o="10cf1e" v="118.111"/>
+ <val o="10dd2e" v="119.001"/>
+ <val o="10eb66" v="120.963"/>
+ <val o="10f94e" v="121.34"/>
+ <val o="11075e" v="119.151"/>
+ <val o="11156d" v="120.797"/>
+ <val o="112388" v="123.519"/>
+ <val o="113187" v="122.366"/>
+ <val o="113fb0" v="123.381"/>
+ <val o="114da6" v="123.296"/>
+ <val o="115bb6" v="123.047"/>
+ <val o="1169c6" v="120.874"/>
+ <val o="1177d6" v="118.017"/>
+ <val o="1185e8" v="118.388"/>
+ <val o="1193f7" v="117.753"/>
+ <val o="11a208" v="119.761"/>
+ <val o="11b017" v="121.547"/>
+ <val o="11be2f" v="122.028"/>
+ <val o="11cc37" v="122.195"/>
+ <val o="11da47" v="121.783"/>
+ <val o="11e857" v="120.581"/>
+ <val o="11f667" v="121.685"/>
+ <val o="120578" v="120.972"/>
+ <val o="121386" v="116.836"/>
+ <val o="122196" v="117.633"/>
+ <val o="122fa6" v="118.83"/>
+ <val o="123db5" v="120.746"/>
+ <val o="124bc5" v="122.541"/>
+ <val o="1259d5" v="120.249"/>
+ <val o="1267e4" v="122.708"/>
+ <val o="127600" v="124.538"/>
+ <val o="128305" v="125.289"/>
+ <val o="129115" v="125.325"/>
+ <val o="129f25" v="125.49"/>
+ <val o="12ad35" v="124.672"/>
+ <val o="12bb45" v="122.813"/>
+ <val o="12c954" v="121.573"/>
+ <val o="12d766" v="120.719"/>
+ <val o="12e575" v="119.706"/>
+ <val o="12f386" v="116.935"/>
+ <val o="130196" v="117.255"/>
+ <val o="130fa6" v="118.365"/>
+ <val o="131db7" v="119.829"/>
+ <val o="132bc5" v="119.607"/>
+ <val o="1339d4" v="0.109"/>
+ <val o="1347e5" v="0.109"/>
+ <val o="1355f4" v="0.108"/>
+ <val o="136404" v="0.106"/>
+ <val o="137214" v="0.106"/>
+ <val o="138024" v="0.107"/>
+ <val o="138e33" v="0.108"/>
+ <val o="139c44" v="0.109"/>
+ <val o="13aa54" v="0.108"/>
+ <val o="13b865" v="0.109"/>
+ <val o="13c67e" v="0.101"/>
+ <val o="13d48e" v="0.104"/>
+ <val o="13e29e" v="0.106"/>
+ <val o="13f0ae" v="0.106"/>
+ <val o="13febf" v="0.104"/>
+ <val o="140ccf" v="0.102"/>
+ <val o="141adf" v="0.104"/>
+ <val o="1428ef" v="0.108"/>
+ <val o="1436ff" v="0.107"/>
+ <val o="14450f" v="0.107"/>
+ <val o="14531f" v="0.107"/>
+ <val o="146130" v="0.108"/>
+ <val o="146f40" v="0.11"/>
+ <val o="147d44" v="0.108"/>
+ <val o="148b57" v="0.108"/>
+ <val o="149965" v="0.108"/>
+ <val o="14a775" v="0.106"/>
+ <val o="14b584" v="0.11"/>
+ <val o="14c397" v="0.107"/>
+ <val o="14d1a4" v="0.107"/>
+ <val o="14dfb6" v="0.108"/>
+ <val o="14edc5" v="0.11"/>
+ <val o="14fbd5" v="0.112"/>
+ <val o="1509e5" v="0.112"/>
+ <val o="1517ff" v="0.115"/>
+ <val o="152605" v="0.108"/>
+ <val o="153415" v="0.109"/>
+ <val o="154225" v="0.11"/>
+ <val o="155035" v="0.109"/>
+ <val o="155e45" v="0.107"/>
+ <val o="156c55" v="0.104"/>
+ <val o="157a65" v="0.107"/>
+ <val o="158875" v="0.107"/>
+ <val o="159686" v="0.106"/>
+ <val o="15a495" v="0.107"/>
+ <val o="15b2a6" v="0.108"/>
+ <val o="15c0b6" v="0.109"/>
+ <val o="15cec6" v="0.109"/>
+ <val o="15dcd5" v="0.108"/>
+ <val o="15eae6" v="0.108"/>
+ <val o="15f8f5" v="0.104"/>
+ <val o="160706" v="0.11"/>
+ <val o="161517" v="0.109"/>
+ <val o="162326" v="0.11"/>
+ <val o="163137" v="0.111"/>
+ <val o="163f46" v="0.109"/>
+ <val o="164d57" v="0.11"/>
+ <val o="165b67" v="0.112"/>
+ <val o="166982" v="0.111"/>
+ <val o="167786" v="0.112"/>
+ <val o="168596" v="0.113"/>
+ <val o="1693a6" v="0.113"/>
+ <val o="16a1b5" v="0.112"/>
+ <val o="16afc6" v="0.111"/>
+ <val o="16bdd5" v="0.109"/>
+ <val o="16cbe6" v="0.107"/>
+ <val o="16d9f6" v="0.111"/>
+ <val o="16e807" v="0.11"/>
+ <val o="16f616" v="0.11"/>
+ <val o="170429" v="0.111"/>
+ <val o="171236" v="0.112"/>
+ <val o="172047" v="0.112"/>
+ <val o="172e57" v="0.111"/>
+ <val o="173c67" v="0.111"/>
+ <val o="174a77" v="0.11"/>
+ <val o="175887" v="0.108"/>
+ <val o="176694" v="118.351"/>
+ <val o="1774a3" v="119.763"/>
+ <val o="1782b3" v="120.872"/>
+ <val o="1790c5" v="121.443"/>
+ <val o="179ed4" v="124.587"/>
+ <val o="17ace4" v="127.119"/>
+ <val o="17bafd" v="128.887"/>
+ <val o="17c90f" v="127.107"/>
+ <val o="17d71e" v="127.1"/>
+ <val o="17e52f" v="127.35"/>
+ <val o="17f33f" v="126.552"/>
+ <val o="18014f" v="124.71"/>
+ <val o="180f5f" v="124.077"/>
+ <val o="181d6e" v="125.099"/>
+ <val o="182b7f" v="125.025"/>
+ <val o="18398f" v="123.954"/>
+ <val o="1847a1" v="123.641"/>
+ <val o="1855af" v="124.308"/>
+ <val o="1863c0" v="126.201"/>
+ <val o="1871cf" v="125.426"/>
+ <val o="187fe0" v="125.045"/>
+ <val o="188def" v="124.868"/>
+ <val o="189c00" v="123.854"/>
+ <val o="18b80d" v="117.177"/>
+ <val o="18c61c" v="120.985"/>
+ <val o="18d42c" v="121.689"/>
+ <val o="18e23b" v="121.514"/>
+ <val o="18f04b" v="123.76"/>
+ <val o="18fe5e" v="125.848"/>
+ <val o="190c76" v="123.162"/>
+ <val o="191a86" v="124.87"/>
+ <val o="192896" v="126.457"/>
+ <val o="1936a6" v="126.565"/>
+ <val o="1944b7" v="125.821"/>
+ <val o="1952c6" v="123.654"/>
+ <val o="1960d7" v="120.985"/>
+ <val o="196ee6" v="121.019"/>
+ <val o="197cf8" v="120.771"/>
+ <val o="198b0f" v="120.139"/>
+ <val o="19991f" v="120.067"/>
+ <val o="19b541" v="122.459"/>
+ <val o="19c34d" v="121.603"/>
+ <val o="19d15e" v="120.856"/>
+ <val o="19df80" v="120.882"/>
+ <val o="19ed90" v="120.049"/>
+ <val o="19eebe" v="119.903"/>
+ <val o="19fb8e" v="116.012"/>
+ <val o="1a09a0" v="119.283"/>
+ <val o="1a17ae" v="120.303"/>
+ <val o="1a25be" v="121.728"/>
+ <val o="1a33cd" v="121.516"/>
+ <val o="1a41dd" v="122.849"/>
+ <val o="1a4fed" v="126.093"/>
+ <val o="1a5e08" v="126.725"/>
+ <val o="1a6c05" v="124.883"/>
+ <val o="1a7a15" v="125.931"/>
+ <val o="1a8826" v="126.096"/>
+ <val o="1a9637" v="124.906"/>
+ <val o="1aa445" v="123.654"/>
+ <val o="1ab255" v="121.493"/>
+ <val o="1ac065" v="123.897"/>
+ <val o="1ace75" v="123.756"/>
+ <val o="1adc87" v="122.369"/>
+ <val o="1aea96" v="121.934"/>
+ <val o="1af8a7" v="122.306"/>
+ <val o="1b06b7" v="124.041"/>
+ <val o="1b14c6" v="123.698"/>
+ <val o="1c7460" v="120.029"/>
+ <val o="1c8270" v="120.033"/>
+ <val o="1c907e" v="119.314"/>
+ <val o="1c9e8f" v="120.479"/>
+ <val o="1caca2" v="121.91"/>
+ <val o="1cbab1" v="122.485"/>
+ <val o="1cc8c1" v="118.564"/>
+ <val o="1cd6d0" v="119.367"/>
+ <val o="1ce4de" v="120.808"/>
+ <val o="1cf2f0" v="123.105"/>
+ <val o="1d0109" v="125.021"/>
+ <val o="1d0f06" v="123.274"/>
+ <val o="1d1d15" v="123.92"/>
+ <val o="1d2b25" v="123.876"/>
+ <val o="1d3935" v="122.883"/>
+ <val o="1d4745" v="122.072"/>
+ <val o="1d5555" v="121.544"/>
+ <val o="1d6366" v="123.27"/>
+ <val o="1d7175" v="123.513"/>
+ <val o="1d7f86" v="122.604"/>
+ <val o="1d8d95" v="121.281"/>
+ <val o="1d9ba6" v="121.716"/>
+ <val o="1da9b6" v="122.714"/>
+ <val o="1db7c7" v="123.129"/>
+ <val o="1dc5d5" v="123.431"/>
+ <val o="1dd3e6" v="122.987"/>
+ <val o="1de1f5" v="119.262"/>
+ <val o="1df006" v="118.087"/>
+ <val o="1dfe16" v="116.532"/>
+ <val o="1e0c26" v="118.618"/>
+ <val o="1e1a36" v="119.706"/>
+ <val o="1e2847" v="120.899"/>
+ <val o="1e3659" v="120.718"/>
+ <val o="1e4467" v="121.624"/>
+ <val o="1e5281" v="117.925"/>
+ <val o="1e6086" v="120.928"/>
+ <val o="1e6e96" v="122.34"/>
+ <val o="1e7ca6" v="122.972"/>
+ <val o="1e8ab5" v="123.05"/>
+ <val o="1e98c6" v="122.44"/>
+ <val o="1ea6d5" v="120.735"/>
+ <val o="1eb4e6" v="120.711"/>
+ <val o="1ec2f6" v="123.688"/>
+ <val o="1ed106" v="122.853"/>
+ <val o="1edf16" v="122.754"/>
+ <val o="1eed26" v="122.975"/>
+ <val o="1efb36" v="123.49"/>
+ <val o="1f0946" v="123.278"/>
+ <val o="1f1756" v="121.776"/>
+ <val o="1f2566" v="121.458"/>
+ <val o="1f3376" v="120.109"/>
+ <val o="1f4187" v="116.832"/>
+ <val o="1f4f96" v="119.948"/>
+ <val o="1f5da7" v="120.022"/>
+ <val o="1f6bb6" v="120.884"/>
+ <val o="1f79c7" v="119.618"/>
+ <val o="1f87d6" v="122.811"/>
+ <val o="1f95e7" v="123.997"/>
+ <val o="1fa401" v="126.654"/>
+ <val o="1fb204" v="125.574"/>
+ <val o="1fc016" v="126.495"/>
+ <val o="1fce25" v="126.021"/>
+ <val o="1fdc35" v="125.521"/>
+ <val o="1fea45" v="123.104"/>
+ <val o="1ff855" v="121.073"/>
+ <val o="200665" v="117.997"/>
+ <val o="201475" v="119.376"/>
+ <val o="202286" v="119.302"/>
+ <val o="203095" v="120.24"/>
+ <val o="203ea5" v="120.497"/>
+ <val o="204cb6" v="123.276"/>
+ <val o="205ac6" v="121.287"/>
+ <val o="2068d6" v="120.492"/>
+ <val o="2076e6" v="119.643"/>
+ <val o="2084f6" v="117.626"/>
+ <val o="209306" v="121.9"/>
+ <val o="20a116" v="120.861"/>
+ <val o="20af26" v="120.493"/>
+ <val o="20bd37" v="121.526"/>
+ <val o="20cb46" v="119.46"/>
+ <val o="20d957" v="120.284"/>
+ <val o="20e767" v="121.713"/>
+ <val o="20f581" v="124.203"/>
+ <val o="210386" v="126.587"/>
+ <val o="211194" v="124.627"/>
+ <val o="211fa5" v="124.526"/>
+ <val o="212db5" v="123.821"/>
+ <val o="213bc5" v="122.357"/>
+ <val o="2149d6" v="118.642"/>
+ <val o="2157e5" v="116.651"/>
+ <val o="2165f6" v="122.439"/>
+ <val o="217406" v="120.232"/>
+ <val o="218217" v="119.322"/>
+ <val o="219026" v="120.236"/>
+ <val o="219e39" v="120.346"/>
+ <val o="21ac46" v="119.148"/>
+ <val o="21ba57" v="118.907"/>
+ <val o="21c867" v="117.874"/>
+ <val o="21d677" v="122.584"/>
+ <val o="21e487" v="120.252"/>
+ <val o="21f296" v="120.469"/>
+ <val o="2200a6" v="121.303"/>
+ <val o="220eb7" v="122.183"/>
+ <val o="221cc6" v="118.747"/>
+ <val o="222ad7" v="120.81"/>
+ <val o="2238e7" v="123.937"/>
+ <val o="224701" v="126.687"/>
+ <val o="225505" v="119.553"/>
+ <val o="226315" v="119.757"/>
+ <val o="227125" v="119.753"/>
+ <val o="227f35" v="117.557"/>
+ <val o="228d45" v="116.262"/>
+ <val o="229b54" v="122.469"/>
+ <val o="22a965" v="119.765"/>
+ <val o="22b776" v="119.78"/>
+ <val o="22c586" v="119.006"/>
+ <val o="22d397" v="118.696"/>
+ <val o="22e1a6" v="119.018"/>
+ <val o="22efb6" v="120.765"/>
+ <val o="22fdc7" v="120.41"/>
+ <val o="230bd7" v="119.608"/>
+ <val o="2319e6" v="119.268"/>
+ <val o="2327f6" v="118.221"/>
+ <val o="23361b" v="119.234"/>
+ <val o="234416" v="118.199"/>
+ <val o="235226" v="119.524"/>
+ <val o="236037" v="120.76"/>
+ <val o="236e46" v="118.446"/>
+ <val o="237c57" v="119.86"/>
+ <val o="238a66" v="121.458"/>
+ <val o="239881" v="120.937"/>
+ <val o="23a685" v="122.353"/>
+ <val o="23b495" v="123.085"/>
+ <val o="23c2a4" v="123.145"/>
+ <val o="23d0b5" v="122.277"/>
+ <val o="23dec4" v="121.153"/>
+ <val o="23ecd5" v="119.31"/>
+ <val o="23fae4" v="120.616"/>
+ <val o="2408f6" v="118.482"/>
+ <val o="241706" v="117.789"/>
+ <val o="242518" v="118.178"/>
+ <val o="243325" v="118.65"/>
+ <val o="244137" v="119.893"/>
+ <val o="244f46" v="119.172"/>
+ <val o="246b66" v="118.88"/>
+ <val o="247976" v="118.03"/>
+ <val o="248786" v="115.2"/>
+ <val o="24957e" v="118.091"/>
+ <val o="24a38f" v="119.601"/>
+ <val o="24b19c" v="120.844"/>
+ <val o="24bfac" v="120.094"/>
+ <val o="24cdbc" v="123.851"/>
+ <val o="24dbcd" v="123.499"/>
+ <val o="24e9e5" v="124.806"/>
+ <val o="24f808" v="124.27"/>
+ <val o="250616" v="124.985"/>
+ <val o="251426" v="125.02"/>
+ <val o="252236" v="123.483"/>
+ <val o="253047" v="122.436"/>
+ <val o="253e56" v="120.041"/>
+ <val o="254c67" v="119.496"/>
+ <val o="255a76" v="119.362"/>
+ <val o="256887" v="117.767"/>
+ <val o="257697" v="118.616"/>
+ <val o="2584a8" v="117.274"/>
+ <val o="2592b6" v="118.975"/>
+ <val o="25a0c7" v="119.79"/>
+ <val o="25aed7" v="119.331"/>
+ <val o="25bce7" v="119.194"/>
+ <val o="25caf8" v="118.637"/>
+ <val o="25d907" v="120.535"/>
+ <val o="25e718" v="119.8"/>
+ <val o="25f527" v="120.403"/>
+ <val o="260338" v="121.054"/>
+ <val o="261149" v="119.413"/>
+ <val o="261f59" v="120.38"/>
+ <val o="262d68" v="123.203"/>
+ <val o="263b83" v="121.143"/>
+ <val o="264986" v="122.976"/>
+ <val o="265795" v="123.697"/>
+ <val o="2665a6" v="124.476"/>
+ <val o="2673b5" v="123.592"/>
+ <val o="2681c6" v="123.177"/>
+ <val o="268fd5" v="121.853"/>
+ <val o="269de6" v="121.298"/>
+ <val o="26abf6" v="120.593"/>
+ <val o="26ba06" v="118.763"/>
+ <val o="26c817" v="118.278"/>
+ <val o="26d62b" v="118.596"/>
+ <val o="26e436" v="119.984"/>
+ <val o="26f247" v="119.523"/>
+ <val o="270057" v="119.574"/>
+ <val o="270e67" v="119.013"/>
+ <val o="271c77" v="119.722"/>
+ <val o="272a87" v="120.875"/>
+ <val o="273897" v="120.668"/>
+ <val o="2746a8" v="121.451"/>
+ <val o="2754b9" v="121.838"/>
+ <val o="2762c7" v="119.053"/>
+ <val o="2770d8" v="121.03"/>
+ <val o="277ee7" v="123.544"/>
+ </par>
+ <par memind="9808" h="3dc1a8de">
+ <val o="0" v="0"/>
+ <val o="e08" v="0"/>
+ <val o="1c32" v="0"/>
+ <val o="2a3c" v="0"/>
+ <val o="3835" v="0"/>
+ <val o="4645" v="0"/>
+ <val o="5455" v="0"/>
+ <val o="6265" v="0"/>
+ <val o="7075" v="0"/>
+ <val o="7e85" v="0"/>
+ <val o="8c96" v="0"/>
+ <val o="9aa5" v="0"/>
+ <val o="a8b6" v="0"/>
+ <val o="b6c5" v="0"/>
+ <val o="c4d7" v="0"/>
+ <val o="d30b" v="0"/>
+ <val o="e0f6" v="0"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="0"/>
+ <val o="11937" v="0"/>
+ <val o="12746" v="0"/>
+ <val o="13556" v="0"/>
+ <val o="14366" v="0"/>
+ <val o="15181" v="0"/>
+ <val o="15f85" v="0"/>
+ <val o="16d95" v="0"/>
+ <val o="17ba4" v="0"/>
+ <val o="189b5" v="0"/>
+ <val o="197c4" v="0"/>
+ <val o="1a5d5" v="0"/>
+ <val o="1b3e6" v="0"/>
+ <val o="1c1f6" v="0"/>
+ <val o="1d005" v="0"/>
+ <val o="1de15" v="0"/>
+ <val o="1ec25" v="0"/>
+ <val o="1fa36" v="0"/>
+ <val o="20845" v="0"/>
+ <val o="21656" v="0"/>
+ <val o="22465" v="0"/>
+ <val o="23276" v="0"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="0"/>
+ <val o="25ca7" v="0"/>
+ <val o="26ab7" v="0"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="0"/>
+ <val o="294e6" v="0"/>
+ <val o="2a301" v="0"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="0"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="0"/>
+ <val o="31375" v="0"/>
+ <val o="3219e" v="0"/>
+ <val o="32f96" v="0"/>
+ <val o="33da6" v="0"/>
+ <val o="34bb6" v="0"/>
+ <val o="359de" v="0"/>
+ <val o="367d6" v="0"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="0"/>
+ <val o="3bc36" v="0"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="0"/>
+ <val o="3e667" v="0"/>
+ <val o="3f481" v="0"/>
+ <val o="40285" v="0"/>
+ <val o="41095" v="0"/>
+ <val o="41ea5" v="0"/>
+ <val o="42cb5" v="0"/>
+ <val o="43ac5" v="0"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="0"/>
+ <val o="464f5" v="0"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="0"/>
+ <val o="54600" v="0"/>
+ <val o="55406" v="0"/>
+ <val o="56215" v="0"/>
+ <val o="57026" v="0"/>
+ <val o="57e36" v="0"/>
+ <val o="58c46" v="0"/>
+ <val o="59a70" v="0"/>
+ <val o="5a867" v="0"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="0"/>
+ <val o="5eeb8" v="0"/>
+ <val o="5fcc6" v="0"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="0"/>
+ <val o="65f37" v="0"/>
+ <val o="66d46" v="0"/>
+ <val o="67b57" v="0"/>
+ <val o="68967" v="0"/>
+ <val o="69782" v="0"/>
+ <val o="6a586" v="0"/>
+ <val o="6b395" v="0"/>
+ <val o="6c1a6" v="0"/>
+ <val o="6cfb5" v="0"/>
+ <val o="6ddc6" v="0"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="0"/>
+ <val o="707f6" v="0"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="0"/>
+ <val o="74e47" v="0"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="0"/>
+ <val o="7bebf" v="0"/>
+ <val o="7cccf" v="0"/>
+ <val o="7dadf" v="0"/>
+ <val o="7e8fa" v="0"/>
+ <val o="7f70a" v="0"/>
+ <val o="8051a" v="0"/>
+ <val o="8132a" v="0"/>
+ <val o="8213a" v="0"/>
+ <val o="82f4a" v="0"/>
+ <val o="83d5a" v="0"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="0"/>
+ <val o="891bb" v="0"/>
+ <val o="89fca" v="0"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="0"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="0"/>
+ <val o="93a84" v="0"/>
+ <val o="94885" v="0"/>
+ <val o="95694" v="0"/>
+ <val o="964a5" v="0"/>
+ <val o="972b4" v="0"/>
+ <val o="980c5" v="0"/>
+ <val o="98ed4" v="0"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="0"/>
+ <val o="9c716" v="0"/>
+ <val o="9d526" v="0"/>
+ <val o="9e336" v="0"/>
+ <val o="9f145" v="0"/>
+ <val o="9ff56" v="0"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="0"/>
+ <val o="a2986" v="0"/>
+ <val o="a3795" v="0"/>
+ <val o="a45a7" v="0"/>
+ <val o="a53b6" v="0"/>
+ <val o="a61c7" v="0"/>
+ <val o="a6fd6" v="0"/>
+ <val o="a7e00" v="0"/>
+ <val o="a8c00" v="0"/>
+ <val o="a9a05" v="0"/>
+ <val o="aa815" v="0"/>
+ <val o="ab625" v="0"/>
+ <val o="ac435" v="0"/>
+ <val o="ad245" v="0"/>
+ <val o="ae055" v="0"/>
+ <val o="aee65" v="0"/>
+ <val o="afc75" v="0"/>
+ <val o="b0a85" v="0"/>
+ <val o="b26a6" v="0"/>
+ <val o="b34b6" v="0"/>
+ <val o="b42c6" v="0"/>
+ <val o="b50d6" v="0"/>
+ <val o="b5ee7" v="0"/>
+ <val o="b6cf6" v="0"/>
+ <val o="b7b07" v="0"/>
+ <val o="b8917" v="0"/>
+ <val o="b9728" v="0"/>
+ <val o="ba537" v="0"/>
+ <val o="bb347" v="0"/>
+ <val o="bc157" v="0"/>
+ <val o="bcf67" v="0"/>
+ <val o="bdd81" v="0"/>
+ <val o="beb86" v="0"/>
+ <val o="bf995" v="0"/>
+ <val o="c07a6" v="0"/>
+ <val o="c15b5" v="0"/>
+ <val o="c23c6" v="0"/>
+ <val o="c31d5" v="0"/>
+ <val o="c3fe6" v="0"/>
+ <val o="c4df5" v="0"/>
+ <val o="c5c06" v="0"/>
+ <val o="c6a16" v="0"/>
+ <val o="c7826" v="0"/>
+ <val o="c8636" v="0"/>
+ <val o="c9446" v="0"/>
+ <val o="ca256" v="0"/>
+ <val o="cb066" v="0"/>
+ <val o="cbe76" v="0"/>
+ <val o="ccc87" v="0"/>
+ <val o="cda96" v="0"/>
+ <val o="ce8a8" v="0"/>
+ <val o="cf6b7" v="0"/>
+ <val o="d04c8" v="0"/>
+ <val o="d12d7" v="0"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="0"/>
+ <val o="d3d05" v="0"/>
+ <val o="d4b15" v="0"/>
+ <val o="d5926" v="0"/>
+ <val o="d6735" v="0"/>
+ <val o="d7546" v="0"/>
+ <val o="d8355" v="0"/>
+ <val o="d9166" v="0"/>
+ <val o="d9f75" v="0"/>
+ <val o="dad87" v="0"/>
+ <val o="dbb97" v="0"/>
+ <val o="dc9a8" v="0"/>
+ <val o="dd7b7" v="0"/>
+ <val o="de5c6" v="0"/>
+ <val o="df3d7" v="0"/>
+ <val o="e01d7" v="0"/>
+ <val o="e0fe5" v="0"/>
+ <val o="e1df5" v="0"/>
+ <val o="e2c04" v="0"/>
+ <val o="e3a14" v="0"/>
+ <val o="e4824" v="0"/>
+ <val o="e5634" v="0"/>
+ <val o="e6444" v="0"/>
+ <val o="e7255" v="0"/>
+ <val o="e806f" v="0"/>
+ <val o="e8e7f" v="0"/>
+ <val o="e9c8e" v="0"/>
+ <val o="eaa9f" v="0"/>
+ <val o="eb8ae" v="0"/>
+ <val o="ec6bf" v="0"/>
+ <val o="ed4ce" v="0"/>
+ <val o="ee2df" v="0"/>
+ <val o="ef0ef" v="0"/>
+ <val o="eff01" v="0"/>
+ <val o="f0d10" v="0"/>
+ <val o="f1b20" v="0"/>
+ <val o="f2930" v="0"/>
+ <val o="f3740" v="0"/>
+ <val o="f4551" v="0"/>
+ <val o="f5361" v="0"/>
+ <val o="f6172" v="0"/>
+ <val o="f6f80" v="0"/>
+ <val o="f7d91" v="0"/>
+ <val o="f8ba1" v="0"/>
+ <val o="f99b1" v="0"/>
+ <val o="fa7c0" v="0"/>
+ <val o="fb5d1" v="0"/>
+ <val o="fc3e0" v="0"/>
+ <val o="fd1fb" v="0"/>
+ <val o="fe00b" v="0"/>
+ <val o="fee1c" v="0"/>
+ <val o="ffc2c" v="0"/>
+ <val o="100a3b" v="0"/>
+ <val o="10184c" v="0"/>
+ <val o="10265b" v="0"/>
+ <val o="10346c" v="0"/>
+ <val o="10427b" v="0"/>
+ <val o="10508d" v="0"/>
+ <val o="105e9d" v="0"/>
+ <val o="106cad" v="0"/>
+ <val o="107abd" v="0"/>
+ <val o="1088cd" v="0"/>
+ <val o="1096de" v="0"/>
+ <val o="10a4ed" v="0"/>
+ <val o="10b2fe" v="0"/>
+ <val o="10c10d" v="0"/>
+ <val o="10cf1e" v="0"/>
+ <val o="10dd2e" v="0"/>
+ <val o="10eb66" v="0"/>
+ <val o="10f94e" v="0"/>
+ <val o="11075e" v="0"/>
+ <val o="11156d" v="0"/>
+ <val o="112388" v="0"/>
+ <val o="113187" v="0"/>
+ <val o="113fb0" v="0"/>
+ <val o="114da6" v="0"/>
+ <val o="115bb6" v="0"/>
+ <val o="1169c6" v="0"/>
+ <val o="1177d6" v="0"/>
+ <val o="1185e8" v="0"/>
+ <val o="1193f7" v="0"/>
+ <val o="11a208" v="0"/>
+ <val o="11b017" v="0"/>
+ <val o="11be2f" v="0"/>
+ <val o="11cc37" v="0"/>
+ <val o="11da47" v="0"/>
+ <val o="11e857" v="0"/>
+ <val o="11f667" v="0"/>
+ <val o="120578" v="0"/>
+ <val o="121386" v="0"/>
+ <val o="122196" v="0"/>
+ <val o="122fa6" v="0"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="0"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="0"/>
+ <val o="128305" v="0"/>
+ <val o="129115" v="0"/>
+ <val o="129f25" v="0"/>
+ <val o="12ad35" v="0"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="0"/>
+ <val o="12d766" v="0"/>
+ <val o="12e575" v="0"/>
+ <val o="12f386" v="0"/>
+ <val o="130196" v="0"/>
+ <val o="130fa6" v="0"/>
+ <val o="131db7" v="0"/>
+ <val o="132bc5" v="0"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="0"/>
+ <val o="1774a3" v="0"/>
+ <val o="1782b3" v="0"/>
+ <val o="1790c5" v="0"/>
+ <val o="179ed4" v="0"/>
+ <val o="17ace4" v="0"/>
+ <val o="17bafd" v="0"/>
+ <val o="17c90f" v="0"/>
+ <val o="17d71e" v="0"/>
+ <val o="17e52f" v="0"/>
+ <val o="17f33f" v="0"/>
+ <val o="18014f" v="0"/>
+ <val o="180f5f" v="0"/>
+ <val o="181d6e" v="0"/>
+ <val o="182b7f" v="0"/>
+ <val o="18398f" v="0"/>
+ <val o="1847a1" v="0"/>
+ <val o="1855af" v="0"/>
+ <val o="1863c0" v="0"/>
+ <val o="1871cf" v="0"/>
+ <val o="187fe0" v="0"/>
+ <val o="188def" v="0"/>
+ <val o="189c00" v="0"/>
+ <val o="18b80d" v="0"/>
+ <val o="18c61c" v="0"/>
+ <val o="18d42c" v="0"/>
+ <val o="18e23b" v="0"/>
+ <val o="18f04b" v="0"/>
+ <val o="18fe5e" v="0"/>
+ <val o="190c76" v="0"/>
+ <val o="191a86" v="0"/>
+ <val o="192896" v="0"/>
+ <val o="1936a6" v="0"/>
+ <val o="1944b7" v="0"/>
+ <val o="1952c6" v="0"/>
+ <val o="1960d7" v="0"/>
+ <val o="196ee6" v="0"/>
+ <val o="197cf8" v="0"/>
+ <val o="198b0f" v="0"/>
+ <val o="19991f" v="0"/>
+ <val o="19b541" v="0"/>
+ <val o="19c34d" v="0"/>
+ <val o="19d15e" v="0"/>
+ <val o="19df80" v="0"/>
+ <val o="19ed90" v="0"/>
+ <val o="19eebe" v="0"/>
+ <val o="19fb8e" v="0"/>
+ <val o="1a09a0" v="0"/>
+ <val o="1a17ae" v="0"/>
+ <val o="1a25be" v="0"/>
+ <val o="1a33cd" v="0"/>
+ <val o="1a41dd" v="0"/>
+ <val o="1a4fed" v="0"/>
+ <val o="1a5e08" v="0"/>
+ <val o="1a6c05" v="0"/>
+ <val o="1a7a15" v="0"/>
+ <val o="1a8826" v="0"/>
+ <val o="1a9637" v="0"/>
+ <val o="1aa445" v="0"/>
+ <val o="1ab255" v="0"/>
+ <val o="1ac065" v="0"/>
+ <val o="1ace75" v="0"/>
+ <val o="1adc87" v="0"/>
+ <val o="1aea96" v="0"/>
+ <val o="1af8a7" v="0"/>
+ <val o="1b06b7" v="0"/>
+ <val o="1b14c6" v="0"/>
+ <val o="1c7460" v="0"/>
+ <val o="1c8270" v="0"/>
+ <val o="1c907e" v="0"/>
+ <val o="1c9e8f" v="0"/>
+ <val o="1caca2" v="0"/>
+ <val o="1cbab1" v="0"/>
+ <val o="1cc8c1" v="0"/>
+ <val o="1cd6d0" v="0"/>
+ <val o="1ce4de" v="0"/>
+ <val o="1cf2f0" v="0"/>
+ <val o="1d0109" v="0"/>
+ <val o="1d0f06" v="0"/>
+ <val o="1d1d15" v="0"/>
+ <val o="1d2b25" v="0"/>
+ <val o="1d3935" v="0"/>
+ <val o="1d4745" v="0"/>
+ <val o="1d5555" v="0"/>
+ <val o="1d6366" v="0"/>
+ <val o="1d7175" v="0"/>
+ <val o="1d7f86" v="0"/>
+ <val o="1d8d95" v="0"/>
+ <val o="1d9ba6" v="0"/>
+ <val o="1da9b6" v="0"/>
+ <val o="1db7c7" v="0"/>
+ <val o="1dc5d5" v="0"/>
+ <val o="1dd3e6" v="0"/>
+ <val o="1de1f5" v="0"/>
+ <val o="1df006" v="0"/>
+ <val o="1dfe16" v="0"/>
+ <val o="1e0c26" v="0"/>
+ <val o="1e1a36" v="0"/>
+ <val o="1e2847" v="0"/>
+ <val o="1e3659" v="0"/>
+ <val o="1e4467" v="0"/>
+ <val o="1e5281" v="0"/>
+ <val o="1e6086" v="0"/>
+ <val o="1e6e96" v="0"/>
+ <val o="1e7ca6" v="0"/>
+ <val o="1e8ab5" v="0"/>
+ <val o="1e98c6" v="0"/>
+ <val o="1ea6d5" v="0"/>
+ <val o="1eb4e6" v="0"/>
+ <val o="1ec2f6" v="0"/>
+ <val o="1ed106" v="0"/>
+ <val o="1edf16" v="0"/>
+ <val o="1eed26" v="0"/>
+ <val o="1efb36" v="0"/>
+ <val o="1f0946" v="0"/>
+ <val o="1f1756" v="0"/>
+ <val o="1f2566" v="0"/>
+ <val o="1f3376" v="0"/>
+ <val o="1f4187" v="0"/>
+ <val o="1f4f96" v="0"/>
+ <val o="1f5da7" v="0"/>
+ <val o="1f6bb6" v="0"/>
+ <val o="1f79c7" v="0"/>
+ <val o="1f87d6" v="0"/>
+ <val o="1f95e7" v="0"/>
+ <val o="1fa401" v="0"/>
+ <val o="1fb204" v="0"/>
+ <val o="1fc016" v="0"/>
+ <val o="1fce25" v="0"/>
+ <val o="1fdc35" v="0"/>
+ <val o="1fea45" v="0"/>
+ <val o="1ff855" v="0"/>
+ <val o="200665" v="0"/>
+ <val o="201475" v="0"/>
+ <val o="202286" v="0"/>
+ <val o="203095" v="0"/>
+ <val o="203ea5" v="0"/>
+ <val o="204cb6" v="0"/>
+ <val o="205ac6" v="0"/>
+ <val o="2068d6" v="0"/>
+ <val o="2076e6" v="0"/>
+ <val o="2084f6" v="0"/>
+ <val o="209306" v="0"/>
+ <val o="20a116" v="0"/>
+ <val o="20af26" v="0"/>
+ <val o="20bd37" v="0"/>
+ <val o="20cb46" v="0"/>
+ <val o="20d957" v="0"/>
+ <val o="20e767" v="0"/>
+ <val o="20f581" v="0"/>
+ <val o="210386" v="0"/>
+ <val o="211194" v="0"/>
+ <val o="211fa5" v="0"/>
+ <val o="212db5" v="0"/>
+ <val o="213bc5" v="0"/>
+ <val o="2149d6" v="0"/>
+ <val o="2157e5" v="0"/>
+ <val o="2165f6" v="0"/>
+ <val o="217406" v="0"/>
+ <val o="218217" v="0"/>
+ <val o="219026" v="0"/>
+ <val o="219e39" v="0"/>
+ <val o="21ac46" v="0"/>
+ <val o="21ba57" v="0"/>
+ <val o="21c867" v="0"/>
+ <val o="21d677" v="0"/>
+ <val o="21e487" v="0"/>
+ <val o="21f296" v="0"/>
+ <val o="2200a6" v="0"/>
+ <val o="220eb7" v="0"/>
+ <val o="221cc6" v="0"/>
+ <val o="222ad7" v="0"/>
+ <val o="2238e7" v="0"/>
+ <val o="224701" v="0"/>
+ <val o="225505" v="0"/>
+ <val o="226315" v="0"/>
+ <val o="227125" v="0"/>
+ <val o="227f35" v="0"/>
+ <val o="228d45" v="0"/>
+ <val o="229b54" v="0"/>
+ <val o="22a965" v="0"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="0"/>
+ <val o="22d397" v="0"/>
+ <val o="22e1a6" v="0"/>
+ <val o="22efb6" v="0"/>
+ <val o="22fdc7" v="0"/>
+ <val o="230bd7" v="0"/>
+ <val o="2319e6" v="0"/>
+ <val o="2327f6" v="0"/>
+ <val o="23361b" v="0"/>
+ <val o="234416" v="0"/>
+ <val o="235226" v="0"/>
+ <val o="236037" v="0"/>
+ <val o="236e46" v="0"/>
+ <val o="237c57" v="0"/>
+ <val o="238a66" v="0"/>
+ <val o="239881" v="0"/>
+ <val o="23a685" v="0"/>
+ <val o="23b495" v="0"/>
+ <val o="23c2a4" v="0"/>
+ <val o="23d0b5" v="0"/>
+ <val o="23dec4" v="0"/>
+ <val o="23ecd5" v="0"/>
+ <val o="23fae4" v="0"/>
+ <val o="2408f6" v="0"/>
+ <val o="241706" v="0"/>
+ <val o="242518" v="0"/>
+ <val o="243325" v="0"/>
+ <val o="244137" v="0"/>
+ <val o="244f46" v="0"/>
+ <val o="246b66" v="0"/>
+ <val o="247976" v="0"/>
+ <val o="248786" v="0"/>
+ <val o="24957e" v="0"/>
+ <val o="24a38f" v="0"/>
+ <val o="24b19c" v="0"/>
+ <val o="24bfac" v="0"/>
+ <val o="24cdbc" v="0"/>
+ <val o="24dbcd" v="0"/>
+ <val o="24e9e5" v="0"/>
+ <val o="24f808" v="0"/>
+ <val o="250616" v="0"/>
+ <val o="251426" v="0"/>
+ <val o="252236" v="0"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="0"/>
+ <val o="254c67" v="0"/>
+ <val o="255a76" v="0"/>
+ <val o="256887" v="0"/>
+ <val o="257697" v="0"/>
+ <val o="2584a8" v="0"/>
+ <val o="2592b6" v="0"/>
+ <val o="25a0c7" v="0"/>
+ <val o="25aed7" v="0"/>
+ <val o="25bce7" v="0"/>
+ <val o="25caf8" v="0"/>
+ <val o="25d907" v="0"/>
+ <val o="25e718" v="0"/>
+ <val o="25f527" v="0"/>
+ <val o="260338" v="0"/>
+ <val o="261149" v="0"/>
+ <val o="261f59" v="0"/>
+ <val o="262d68" v="0"/>
+ <val o="263b83" v="0"/>
+ <val o="264986" v="0"/>
+ <val o="265795" v="0"/>
+ <val o="2665a6" v="0"/>
+ <val o="2673b5" v="0"/>
+ <val o="2681c6" v="0"/>
+ <val o="268fd5" v="0"/>
+ <val o="269de6" v="0"/>
+ <val o="26abf6" v="0"/>
+ <val o="26ba06" v="0"/>
+ <val o="26c817" v="0"/>
+ <val o="26d62b" v="0"/>
+ <val o="26e436" v="0"/>
+ <val o="26f247" v="0"/>
+ <val o="270057" v="0"/>
+ <val o="270e67" v="0"/>
+ <val o="271c77" v="0"/>
+ <val o="272a87" v="0"/>
+ <val o="273897" v="0"/>
+ <val o="2746a8" v="0"/>
+ <val o="2754b9" v="0"/>
+ <val o="2762c7" v="0"/>
+ <val o="2770d8" v="0"/>
+ <val o="277ee7" v="0"/>
+ </par>
+ <par memind="9804" h="3dc1a8de">
+ <val o="0" v="113.768"/>
+ <val o="e08" v="117.131"/>
+ <val o="1c32" v="118.794"/>
+ <val o="2a3c" v="120.362"/>
+ <val o="3835" v="118.504"/>
+ <val o="4645" v="116.275"/>
+ <val o="5455" v="109.258"/>
+ <val o="6265" v="121.127"/>
+ <val o="7075" v="118.849"/>
+ <val o="7e85" v="116.093"/>
+ <val o="8c96" v="120.108"/>
+ <val o="9aa5" v="120.84"/>
+ <val o="a8b6" v="124.045"/>
+ <val o="b6c5" v="124.042"/>
+ <val o="c4d7" v="117.713"/>
+ <val o="d30b" v="118.048"/>
+ <val o="e0f6" v="118.051"/>
+ <val o="ef06" v="118.259"/>
+ <val o="fd17" v="118.054"/>
+ <val o="10b27" v="120.844"/>
+ <val o="11937" v="121.925"/>
+ <val o="12746" v="119.353"/>
+ <val o="13556" v="120.867"/>
+ <val o="14366" v="125.48"/>
+ <val o="15181" v="127.434"/>
+ <val o="15f85" v="119.069"/>
+ <val o="16d95" v="120.904"/>
+ <val o="17ba4" v="120.974"/>
+ <val o="189b5" v="120.25"/>
+ <val o="197c4" v="118.291"/>
+ <val o="1a5d5" v="126.573"/>
+ <val o="1b3e6" v="125.637"/>
+ <val o="1c1f6" v="124.668"/>
+ <val o="1d005" v="121.393"/>
+ <val o="1de15" v="121.998"/>
+ <val o="1ec25" v="122.555"/>
+ <val o="1fa36" v="123.941"/>
+ <val o="20845" v="124.746"/>
+ <val o="21656" v="125.085"/>
+ <val o="22465" v="125.143"/>
+ <val o="23276" v="123.315"/>
+ <val o="24086" v="119.026"/>
+ <val o="24e99" v="118.683"/>
+ <val o="25ca7" v="119.815"/>
+ <val o="26ab7" v="119.25"/>
+ <val o="278c6" v="119.678"/>
+ <val o="286d6" v="121.708"/>
+ <val o="294e6" v="125.182"/>
+ <val o="2a301" v="125.217"/>
+ <val o="2b105" v="117.12"/>
+ <val o="2bf15" v="118.489"/>
+ <val o="2cd25" v="119.338"/>
+ <val o="2db35" v="119.392"/>
+ <val o="2e946" v="117.277"/>
+ <val o="2f755" v="112.967"/>
+ <val o="30566" v="124.775"/>
+ <val o="31375" v="124.409"/>
+ <val o="3219e" v="123.268"/>
+ <val o="32f96" v="122.956"/>
+ <val o="33da6" v="123.032"/>
+ <val o="34bb6" v="123.555"/>
+ <val o="359de" v="123.004"/>
+ <val o="367d6" v="122.125"/>
+ <val o="375e6" v="121.078"/>
+ <val o="3840e" v="117.701"/>
+ <val o="3921e" v="118.101"/>
+ <val o="3a016" v="117.771"/>
+ <val o="3ae27" v="121.393"/>
+ <val o="3bc36" v="120.16"/>
+ <val o="3ca47" v="119.387"/>
+ <val o="3d856" v="119.887"/>
+ <val o="3e667" v="122.64"/>
+ <val o="3f481" v="125.954"/>
+ <val o="40285" v="123.51"/>
+ <val o="41095" v="124.328"/>
+ <val o="41ea5" v="124.639"/>
+ <val o="42cb5" v="124.448"/>
+ <val o="43ac5" v="122.434"/>
+ <val o="448d5" v="118.623"/>
+ <val o="456e6" v="122.169"/>
+ <val o="464f5" v="120.979"/>
+ <val o="480ff" v="118.358"/>
+ <val o="48f0e" v="117.271"/>
+ <val o="49d1d" v="118.68"/>
+ <val o="4ab46" v="118.562"/>
+ <val o="4b955" v="116.842"/>
+ <val o="4c769" v="115.913"/>
+ <val o="4d577" v="118.894"/>
+ <val o="4e387" v="118.59"/>
+ <val o="4f196" v="116.293"/>
+ <val o="4ffa6" v="118.299"/>
+ <val o="50dd0" v="120.233"/>
+ <val o="51bc6" v="118.495"/>
+ <val o="529d6" v="120.406"/>
+ <val o="537e7" v="122.644"/>
+ <val o="54600" v="125.528"/>
+ <val o="55406" v="121.746"/>
+ <val o="56215" v="122.642"/>
+ <val o="57026" v="122.581"/>
+ <val o="57e36" v="122.623"/>
+ <val o="58c46" v="120.431"/>
+ <val o="59a70" v="121.329"/>
+ <val o="5a867" v="120.651"/>
+ <val o="5b676" v="118.876"/>
+ <val o="5c487" v="115.661"/>
+ <val o="5d296" v="119.835"/>
+ <val o="5e0a9" v="120.34"/>
+ <val o="5eeb8" v="119.439"/>
+ <val o="5fcc6" v="118.245"/>
+ <val o="60ad7" v="117.004"/>
+ <val o="618e7" v="117.165"/>
+ <val o="626f7" v="119.95"/>
+ <val o="63507" v="117.149"/>
+ <val o="64317" v="118.541"/>
+ <val o="65127" v="119.822"/>
+ <val o="65f37" v="121.013"/>
+ <val o="66d46" v="121.577"/>
+ <val o="67b57" v="120.289"/>
+ <val o="68967" v="122.62"/>
+ <val o="69782" v="119.093"/>
+ <val o="6a586" v="120.493"/>
+ <val o="6b395" v="121.919"/>
+ <val o="6c1a6" v="122.218"/>
+ <val o="6cfb5" v="121.022"/>
+ <val o="6ddc6" v="118.433"/>
+ <val o="6ebd6" v="115.978"/>
+ <val o="6f9e6" v="120.971"/>
+ <val o="707f6" v="119.234"/>
+ <val o="71607" v="118.015"/>
+ <val o="72417" v="117.922"/>
+ <val o="73227" v="117.566"/>
+ <val o="74037" v="121.469"/>
+ <val o="74e47" v="120.514"/>
+ <val o="75c57" v="118.485"/>
+ <val o="76a63" v="117.889"/>
+ <val o="77873" v="117.946"/>
+ <val o="78680" v="113.611"/>
+ <val o="7948f" v="116.583"/>
+ <val o="7a29f" v="119.306"/>
+ <val o="7b0af" v="118.802"/>
+ <val o="7bebf" v="120.799"/>
+ <val o="7cccf" v="120.857"/>
+ <val o="7dadf" v="121.594"/>
+ <val o="7e8fa" v="121.421"/>
+ <val o="7f70a" v="123.74"/>
+ <val o="8051a" v="125.189"/>
+ <val o="8132a" v="125.673"/>
+ <val o="8213a" v="124.777"/>
+ <val o="82f4a" v="122.432"/>
+ <val o="83d5a" v="120.011"/>
+ <val o="84b6a" v="118.622"/>
+ <val o="8597a" v="118.559"/>
+ <val o="8678b" v="117.524"/>
+ <val o="8759b" v="117.257"/>
+ <val o="883ac" v="119.909"/>
+ <val o="891bb" v="120.921"/>
+ <val o="89fca" v="119.96"/>
+ <val o="8adda" v="118.481"/>
+ <val o="8bbeb" v="118.605"/>
+ <val o="8c9fc" v="118.282"/>
+ <val o="8d80b" v="118.663"/>
+ <val o="8e61a" v="117.009"/>
+ <val o="8f42a" v="117.766"/>
+ <val o="9023a" v="119.722"/>
+ <val o="9104a" v="120.299"/>
+ <val o="91e5a" v="118.366"/>
+ <val o="92c6a" v="122.529"/>
+ <val o="93a84" v="124.833"/>
+ <val o="94885" v="123.06"/>
+ <val o="95694" v="122.396"/>
+ <val o="964a5" v="122.792"/>
+ <val o="972b4" v="122.232"/>
+ <val o="980c5" v="119.79"/>
+ <val o="98ed4" v="122.86"/>
+ <val o="99ce5" v="119.012"/>
+ <val o="9aaf5" v="118.321"/>
+ <val o="9b906" v="115.456"/>
+ <val o="9c716" v="119.374"/>
+ <val o="9d526" v="120.344"/>
+ <val o="9e336" v="119.254"/>
+ <val o="9f145" v="117.83"/>
+ <val o="9ff56" v="117.001"/>
+ <val o="a0d65" v="116.782"/>
+ <val o="a1b77" v="116.803"/>
+ <val o="a2986" v="118.75"/>
+ <val o="a3795" v="118.358"/>
+ <val o="a45a7" v="119.493"/>
+ <val o="a53b6" v="119.698"/>
+ <val o="a61c7" v="119.908"/>
+ <val o="a6fd6" v="120.675"/>
+ <val o="a7e00" v="122.754"/>
+ <val o="a8c00" v="125.385"/>
+ <val o="a9a05" v="118.214"/>
+ <val o="aa815" v="119.329"/>
+ <val o="ab625" v="120.11"/>
+ <val o="ac435" v="119.689"/>
+ <val o="ad245" v="117.12"/>
+ <val o="ae055" v="114.729"/>
+ <val o="aee65" v="120.871"/>
+ <val o="afc75" v="119.177"/>
+ <val o="b0a85" v="116.699"/>
+ <val o="b26a6" v="116.768"/>
+ <val o="b34b6" v="118.075"/>
+ <val o="b42c6" v="115.571"/>
+ <val o="b50d6" v="115.867"/>
+ <val o="b5ee7" v="114.309"/>
+ <val o="b6cf6" v="122.787"/>
+ <val o="b7b07" v="118.904"/>
+ <val o="b8917" v="118.531"/>
+ <val o="b9728" v="119.438"/>
+ <val o="ba537" v="120.908"/>
+ <val o="bb347" v="119.844"/>
+ <val o="bc157" v="120.575"/>
+ <val o="bcf67" v="123.212"/>
+ <val o="bdd81" v="118.712"/>
+ <val o="beb86" v="118.316"/>
+ <val o="bf995" v="118.859"/>
+ <val o="c07a6" v="120.092"/>
+ <val o="c15b5" v="119.532"/>
+ <val o="c23c6" v="118.179"/>
+ <val o="c31d5" v="115.731"/>
+ <val o="c3fe6" v="117.671"/>
+ <val o="c4df5" v="116.046"/>
+ <val o="c5c06" v="117.416"/>
+ <val o="c6a16" v="117.578"/>
+ <val o="c7826" v="116.758"/>
+ <val o="c8636" v="118.319"/>
+ <val o="c9446" v="118.355"/>
+ <val o="ca256" v="118.136"/>
+ <val o="cb066" v="117.225"/>
+ <val o="cbe76" v="122.659"/>
+ <val o="ccc87" v="118.547"/>
+ <val o="cda96" v="116.635"/>
+ <val o="ce8a8" v="118.105"/>
+ <val o="cf6b7" v="118.503"/>
+ <val o="d04c8" v="119.547"/>
+ <val o="d12d7" v="121.4"/>
+ <val o="d20e7" v="123.396"/>
+ <val o="d2f02" v="126.068"/>
+ <val o="d3d05" v="119.33"/>
+ <val o="d4b15" v="120.524"/>
+ <val o="d5926" v="120.742"/>
+ <val o="d6735" v="119.548"/>
+ <val o="d7546" v="117.358"/>
+ <val o="d8355" v="124.267"/>
+ <val o="d9166" v="122.388"/>
+ <val o="d9f75" v="120.774"/>
+ <val o="dad87" v="117.345"/>
+ <val o="dbb97" v="116.698"/>
+ <val o="dc9a8" v="116.798"/>
+ <val o="dd7b7" v="118.219"/>
+ <val o="de5c6" v="117.879"/>
+ <val o="df3d7" v="117.287"/>
+ <val o="e01d7" v="117.42"/>
+ <val o="e0fe5" v="116.798"/>
+ <val o="e1df5" v="117.184"/>
+ <val o="e2c04" v="119.665"/>
+ <val o="e3a14" v="121.033"/>
+ <val o="e4824" v="120.839"/>
+ <val o="e5634" v="122.456"/>
+ <val o="e6444" v="120.534"/>
+ <val o="e7255" v="122.766"/>
+ <val o="e806f" v="123.735"/>
+ <val o="e8e7f" v="116.654"/>
+ <val o="e9c8e" v="118.111"/>
+ <val o="eaa9f" v="118.441"/>
+ <val o="eb8ae" v="117.463"/>
+ <val o="ec6bf" v="113.549"/>
+ <val o="ed4ce" v="123.596"/>
+ <val o="ee2df" v="120.709"/>
+ <val o="ef0ef" v="118.94"/>
+ <val o="eff01" v="116.002"/>
+ <val o="f0d10" v="117.741"/>
+ <val o="f1b20" v="117.49"/>
+ <val o="f2930" v="121.433"/>
+ <val o="f3740" v="117.735"/>
+ <val o="f4551" v="118.165"/>
+ <val o="f5361" v="117.839"/>
+ <val o="f6172" v="117.685"/>
+ <val o="f6f80" v="117.518"/>
+ <val o="f7d91" v="119.385"/>
+ <val o="f8ba1" v="121.202"/>
+ <val o="f99b1" v="120.254"/>
+ <val o="fa7c0" v="118.336"/>
+ <val o="fb5d1" v="118.267"/>
+ <val o="fc3e0" v="123.088"/>
+ <val o="fd1fb" v="123.183"/>
+ <val o="fe00b" v="126.377"/>
+ <val o="fee1c" v="123.772"/>
+ <val o="ffc2c" v="123.634"/>
+ <val o="100a3b" v="123.008"/>
+ <val o="10184c" v="121.382"/>
+ <val o="10265b" v="117.696"/>
+ <val o="10346c" v="117.901"/>
+ <val o="10427b" v="119.404"/>
+ <val o="10508d" v="117.646"/>
+ <val o="105e9d" v="118.147"/>
+ <val o="106cad" v="117.802"/>
+ <val o="107abd" v="120.151"/>
+ <val o="1088cd" v="119.733"/>
+ <val o="1096de" v="119.096"/>
+ <val o="10a4ed" v="119.291"/>
+ <val o="10b2fe" v="118.973"/>
+ <val o="10c10d" v="116.336"/>
+ <val o="10cf1e" v="118.171"/>
+ <val o="10dd2e" v="119.082"/>
+ <val o="10eb66" v="120.953"/>
+ <val o="10f94e" v="121.41"/>
+ <val o="11075e" v="119.088"/>
+ <val o="11156d" v="120.941"/>
+ <val o="112388" v="123.699"/>
+ <val o="113187" v="122.48"/>
+ <val o="113fb0" v="123.378"/>
+ <val o="114da6" v="123.312"/>
+ <val o="115bb6" v="123.217"/>
+ <val o="1169c6" v="120.961"/>
+ <val o="1177d6" v="118.076"/>
+ <val o="1185e8" v="118.573"/>
+ <val o="1193f7" v="117.978"/>
+ <val o="11a208" v="120.019"/>
+ <val o="11b017" v="121.662"/>
+ <val o="11be2f" v="122.268"/>
+ <val o="11cc37" v="122.317"/>
+ <val o="11da47" v="121.934"/>
+ <val o="11e857" v="120.776"/>
+ <val o="11f667" v="121.889"/>
+ <val o="120578" v="121.064"/>
+ <val o="121386" v="116.824"/>
+ <val o="122196" v="117.556"/>
+ <val o="122fa6" v="118.784"/>
+ <val o="123db5" v="120.77"/>
+ <val o="124bc5" v="122.565"/>
+ <val o="1259d5" v="120.263"/>
+ <val o="1267e4" v="122.729"/>
+ <val o="127600" v="124.561"/>
+ <val o="128305" v="125.237"/>
+ <val o="129115" v="125.344"/>
+ <val o="129f25" v="125.492"/>
+ <val o="12ad35" v="124.67"/>
+ <val o="12bb45" v="122.819"/>
+ <val o="12c954" v="121.713"/>
+ <val o="12d766" v="120.883"/>
+ <val o="12e575" v="119.85"/>
+ <val o="12f386" v="117.176"/>
+ <val o="130196" v="117.447"/>
+ <val o="130fa6" v="118.679"/>
+ <val o="131db7" v="120.016"/>
+ <val o="132bc5" v="119.959"/>
+ <val o="1339d4" v="0.109"/>
+ <val o="1347e5" v="0.109"/>
+ <val o="1355f4" v="0.108"/>
+ <val o="136404" v="0.106"/>
+ <val o="137214" v="0.106"/>
+ <val o="138024" v="0.106"/>
+ <val o="138e33" v="0.108"/>
+ <val o="139c44" v="0.109"/>
+ <val o="13aa54" v="0.108"/>
+ <val o="13b865" v="0.109"/>
+ <val o="13c67e" v="0.101"/>
+ <val o="13d48e" v="0.104"/>
+ <val o="13e29e" v="0.106"/>
+ <val o="13f0ae" v="0.106"/>
+ <val o="13febf" v="0.104"/>
+ <val o="140ccf" v="0.102"/>
+ <val o="141adf" v="0.104"/>
+ <val o="1428ef" v="0.108"/>
+ <val o="1436ff" v="0.107"/>
+ <val o="14450f" v="0.107"/>
+ <val o="14531f" v="0.107"/>
+ <val o="146130" v="0.108"/>
+ <val o="146f40" v="0.11"/>
+ <val o="147d44" v="0.108"/>
+ <val o="148b57" v="0.108"/>
+ <val o="149965" v="0.108"/>
+ <val o="14a775" v="0.106"/>
+ <val o="14b584" v="0.11"/>
+ <val o="14c397" v="0.106"/>
+ <val o="14d1a4" v="0.107"/>
+ <val o="14dfb6" v="0.108"/>
+ <val o="14edc5" v="0.11"/>
+ <val o="14fbd5" v="0.112"/>
+ <val o="1509e5" v="0.112"/>
+ <val o="1517ff" v="0.115"/>
+ <val o="152605" v="0.107"/>
+ <val o="153415" v="0.109"/>
+ <val o="154225" v="0.11"/>
+ <val o="155035" v="0.109"/>
+ <val o="155e45" v="0.107"/>
+ <val o="156c55" v="0.104"/>
+ <val o="157a65" v="0.107"/>
+ <val o="158875" v="0.107"/>
+ <val o="159686" v="0.106"/>
+ <val o="15a495" v="0.107"/>
+ <val o="15b2a6" v="0.108"/>
+ <val o="15c0b6" v="0.109"/>
+ <val o="15cec6" v="0.109"/>
+ <val o="15dcd5" v="0.109"/>
+ <val o="15eae6" v="0.108"/>
+ <val o="15f8f5" v="0.104"/>
+ <val o="160706" v="0.11"/>
+ <val o="161517" v="0.109"/>
+ <val o="162326" v="0.11"/>
+ <val o="163137" v="0.111"/>
+ <val o="163f46" v="0.109"/>
+ <val o="164d57" v="0.11"/>
+ <val o="165b67" v="0.112"/>
+ <val o="166982" v="0.111"/>
+ <val o="167786" v="0.112"/>
+ <val o="168596" v="0.112"/>
+ <val o="1693a6" v="0.113"/>
+ <val o="16a1b5" v="0.112"/>
+ <val o="16afc6" v="0.11"/>
+ <val o="16bdd5" v="0.108"/>
+ <val o="16cbe6" v="0.107"/>
+ <val o="16d9f6" v="0.112"/>
+ <val o="16e807" v="0.11"/>
+ <val o="16f616" v="0.11"/>
+ <val o="170429" v="0.111"/>
+ <val o="171236" v="0.112"/>
+ <val o="172047" v="0.112"/>
+ <val o="172e57" v="0.111"/>
+ <val o="173c67" v="0.111"/>
+ <val o="174a77" v="0.11"/>
+ <val o="175887" v="0.108"/>
+ <val o="176694" v="117.84"/>
+ <val o="1774a3" v="119.199"/>
+ <val o="1782b3" v="120.226"/>
+ <val o="1790c5" v="120.924"/>
+ <val o="179ed4" v="124.038"/>
+ <val o="17ace4" v="126.747"/>
+ <val o="17bafd" v="128.364"/>
+ <val o="17c90f" v="126.55"/>
+ <val o="17d71e" v="126.522"/>
+ <val o="17e52f" v="126.893"/>
+ <val o="17f33f" v="126.114"/>
+ <val o="18014f" v="124.219"/>
+ <val o="180f5f" v="123.691"/>
+ <val o="181d6e" v="124.723"/>
+ <val o="182b7f" v="124.667"/>
+ <val o="18398f" v="123.666"/>
+ <val o="1847a1" v="123.337"/>
+ <val o="1855af" v="124.042"/>
+ <val o="1863c0" v="125.92"/>
+ <val o="1871cf" v="125.144"/>
+ <val o="187fe0" v="124.769"/>
+ <val o="188def" v="124.549"/>
+ <val o="189c00" v="123.483"/>
+ <val o="18b80d" v="116.63"/>
+ <val o="18c61c" v="120.461"/>
+ <val o="18d42c" v="121.228"/>
+ <val o="18e23b" v="121.154"/>
+ <val o="18f04b" v="123.409"/>
+ <val o="18fe5e" v="125.403"/>
+ <val o="190c76" v="122.716"/>
+ <val o="191a86" v="124.385"/>
+ <val o="192896" v="126.046"/>
+ <val o="1936a6" v="126.166"/>
+ <val o="1944b7" v="125.26"/>
+ <val o="1952c6" v="123.29"/>
+ <val o="1960d7" v="120.499"/>
+ <val o="196ee6" v="120.705"/>
+ <val o="197cf8" v="120.492"/>
+ <val o="198b0f" v="119.996"/>
+ <val o="19991f" v="120.265"/>
+ <val o="19b541" v="122.232"/>
+ <val o="19c34d" v="121.49"/>
+ <val o="19d15e" v="120.704"/>
+ <val o="19df80" v="120.614"/>
+ <val o="19ed90" v="119.839"/>
+ <val o="19eebe" v="119.685"/>
+ <val o="19fb8e" v="115.593"/>
+ <val o="1a09a0" v="118.86"/>
+ <val o="1a17ae" v="119.97"/>
+ <val o="1a25be" v="121.369"/>
+ <val o="1a33cd" v="121.096"/>
+ <val o="1a41dd" v="122.451"/>
+ <val o="1a4fed" v="125.765"/>
+ <val o="1a5e08" v="126.302"/>
+ <val o="1a6c05" v="124.495"/>
+ <val o="1a7a15" v="125.659"/>
+ <val o="1a8826" v="125.773"/>
+ <val o="1a9637" v="124.464"/>
+ <val o="1aa445" v="123.167"/>
+ <val o="1ab255" v="121.137"/>
+ <val o="1ac065" v="123.677"/>
+ <val o="1ace75" v="123.569"/>
+ <val o="1adc87" v="122.254"/>
+ <val o="1aea96" v="121.794"/>
+ <val o="1af8a7" v="122.088"/>
+ <val o="1b06b7" v="123.87"/>
+ <val o="1b14c6" v="123.556"/>
+ <val o="1c7460" v="119.682"/>
+ <val o="1c8270" v="119.676"/>
+ <val o="1c907e" v="118.821"/>
+ <val o="1c9e8f" v="119.836"/>
+ <val o="1caca2" v="121.192"/>
+ <val o="1cbab1" v="121.685"/>
+ <val o="1cc8c1" v="117.874"/>
+ <val o="1cd6d0" v="118.762"/>
+ <val o="1ce4de" v="120.263"/>
+ <val o="1cf2f0" v="122.468"/>
+ <val o="1d0109" v="124.536"/>
+ <val o="1d0f06" v="122.598"/>
+ <val o="1d1d15" v="123.2"/>
+ <val o="1d2b25" v="123.218"/>
+ <val o="1d3935" v="122.202"/>
+ <val o="1d4745" v="121.424"/>
+ <val o="1d5555" v="120.888"/>
+ <val o="1d6366" v="122.743"/>
+ <val o="1d7175" v="123.078"/>
+ <val o="1d7f86" v="122.237"/>
+ <val o="1d8d95" v="120.858"/>
+ <val o="1d9ba6" v="121.231"/>
+ <val o="1da9b6" v="122.185"/>
+ <val o="1db7c7" v="122.648"/>
+ <val o="1dc5d5" v="122.992"/>
+ <val o="1dd3e6" v="122.482"/>
+ <val o="1de1f5" v="118.707"/>
+ <val o="1df006" v="117.367"/>
+ <val o="1dfe16" v="115.714"/>
+ <val o="1e0c26" v="117.74"/>
+ <val o="1e1a36" v="119.048"/>
+ <val o="1e2847" v="120.179"/>
+ <val o="1e3659" v="119.949"/>
+ <val o="1e4467" v="120.906"/>
+ <val o="1e5281" v="117.251"/>
+ <val o="1e6086" v="120.118"/>
+ <val o="1e6e96" v="121.521"/>
+ <val o="1e7ca6" v="122.188"/>
+ <val o="1e8ab5" v="122.212"/>
+ <val o="1e98c6" v="121.531"/>
+ <val o="1ea6d5" v="119.981"/>
+ <val o="1eb4e6" v="119.977"/>
+ <val o="1ec2f6" v="122.939"/>
+ <val o="1ed106" v="122.289"/>
+ <val o="1edf16" v="122.05"/>
+ <val o="1eed26" v="122.271"/>
+ <val o="1efb36" v="122.856"/>
+ <val o="1f0946" v="122.611"/>
+ <val o="1f1756" v="121.148"/>
+ <val o="1f2566" v="120.864"/>
+ <val o="1f3376" v="119.609"/>
+ <val o="1f4187" v="116.101"/>
+ <val o="1f4f96" v="119.165"/>
+ <val o="1f5da7" v="119.287"/>
+ <val o="1f6bb6" v="120.208"/>
+ <val o="1f79c7" v="118.775"/>
+ <val o="1f87d6" v="122.222"/>
+ <val o="1f95e7" v="123.288"/>
+ <val o="1fa401" v="126.026"/>
+ <val o="1fb204" v="124.828"/>
+ <val o="1fc016" v="125.769"/>
+ <val o="1fce25" v="125.218"/>
+ <val o="1fdc35" v="124.795"/>
+ <val o="1fea45" v="122.393"/>
+ <val o="1ff855" v="120.523"/>
+ <val o="200665" v="117.319"/>
+ <val o="201475" v="118.772"/>
+ <val o="202286" v="118.808"/>
+ <val o="203095" v="119.686"/>
+ <val o="203ea5" v="119.99"/>
+ <val o="204cb6" v="122.708"/>
+ <val o="205ac6" v="120.762"/>
+ <val o="2068d6" v="119.92"/>
+ <val o="2076e6" v="119.129"/>
+ <val o="2084f6" v="117.091"/>
+ <val o="209306" v="121.219"/>
+ <val o="20a116" v="120.28"/>
+ <val o="20af26" v="119.69"/>
+ <val o="20bd37" v="120.677"/>
+ <val o="20cb46" v="118.756"/>
+ <val o="20d957" v="119.608"/>
+ <val o="20e767" v="121.059"/>
+ <val o="20f581" v="123.573"/>
+ <val o="210386" v="125.976"/>
+ <val o="211194" v="123.926"/>
+ <val o="211fa5" v="123.888"/>
+ <val o="212db5" v="123.08"/>
+ <val o="213bc5" v="121.69"/>
+ <val o="2149d6" v="117.916"/>
+ <val o="2157e5" v="116.014"/>
+ <val o="2165f6" v="121.935"/>
+ <val o="217406" v="119.675"/>
+ <val o="218217" v="118.8"/>
+ <val o="219026" v="119.649"/>
+ <val o="219e39" v="119.715"/>
+ <val o="21ac46" v="118.622"/>
+ <val o="21ba57" v="118.459"/>
+ <val o="21c867" v="117.339"/>
+ <val o="21d677" v="122.095"/>
+ <val o="21e487" v="119.556"/>
+ <val o="21f296" v="119.761"/>
+ <val o="2200a6" v="120.53"/>
+ <val o="220eb7" v="121.428"/>
+ <val o="221cc6" v="118.003"/>
+ <val o="222ad7" v="120.228"/>
+ <val o="2238e7" v="123.33"/>
+ <val o="224701" v="125.861"/>
+ <val o="225505" v="118.788"/>
+ <val o="226315" v="119.106"/>
+ <val o="227125" v="119.116"/>
+ <val o="227f35" v="116.908"/>
+ <val o="228d45" v="115.642"/>
+ <val o="229b54" v="122.013"/>
+ <val o="22a965" v="119.234"/>
+ <val o="22b776" v="119.31"/>
+ <val o="22c586" v="118.566"/>
+ <val o="22d397" v="118.243"/>
+ <val o="22e1a6" v="118.579"/>
+ <val o="22efb6" v="120.288"/>
+ <val o="22fdc7" v="119.996"/>
+ <val o="230bd7" v="119.249"/>
+ <val o="2319e6" v="118.866"/>
+ <val o="2327f6" v="117.741"/>
+ <val o="23361b" v="118.543"/>
+ <val o="234416" v="117.538"/>
+ <val o="235226" v="118.709"/>
+ <val o="236037" v="119.94"/>
+ <val o="236e46" v="117.668"/>
+ <val o="237c57" v="119.159"/>
+ <val o="238a66" v="120.771"/>
+ <val o="239881" v="120.234"/>
+ <val o="23a685" v="121.624"/>
+ <val o="23b495" v="122.272"/>
+ <val o="23c2a4" v="122.422"/>
+ <val o="23d0b5" v="121.687"/>
+ <val o="23dec4" v="120.361"/>
+ <val o="23ecd5" v="118.751"/>
+ <val o="23fae4" v="120.028"/>
+ <val o="2408f6" v="117.974"/>
+ <val o="241706" v="117.305"/>
+ <val o="242518" v="117.71"/>
+ <val o="243325" v="118.193"/>
+ <val o="244137" v="119.542"/>
+ <val o="244f46" v="118.741"/>
+ <val o="246b66" v="118.295"/>
+ <val o="247976" v="117.534"/>
+ <val o="248786" v="114.472"/>
+ <val o="24957e" v="117.357"/>
+ <val o="24a38f" v="118.851"/>
+ <val o="24b19c" v="120.137"/>
+ <val o="24bfac" v="119.349"/>
+ <val o="24cdbc" v="123.226"/>
+ <val o="24dbcd" v="122.921"/>
+ <val o="24e9e5" v="124.273"/>
+ <val o="24f808" v="123.515"/>
+ <val o="250616" v="124.182"/>
+ <val o="251426" v="124.27"/>
+ <val o="252236" v="122.827"/>
+ <val o="253047" v="121.801"/>
+ <val o="253e56" v="119.514"/>
+ <val o="254c67" v="118.922"/>
+ <val o="255a76" v="118.86"/>
+ <val o="256887" v="117.264"/>
+ <val o="257697" v="118.022"/>
+ <val o="2584a8" v="116.819"/>
+ <val o="2592b6" v="118.384"/>
+ <val o="25a0c7" v="119.276"/>
+ <val o="25aed7" v="118.81"/>
+ <val o="25bce7" v="118.676"/>
+ <val o="25caf8" v="118.108"/>
+ <val o="25d907" v="119.625"/>
+ <val o="25e718" v="119.042"/>
+ <val o="25f527" v="119.638"/>
+ <val o="260338" v="120.355"/>
+ <val o="261149" v="118.728"/>
+ <val o="261f59" v="119.777"/>
+ <val o="262d68" v="122.621"/>
+ <val o="263b83" v="120.494"/>
+ <val o="264986" v="122.335"/>
+ <val o="265795" v="123.001"/>
+ <val o="2665a6" v="123.827"/>
+ <val o="2673b5" v="122.939"/>
+ <val o="2681c6" v="122.398"/>
+ <val o="268fd5" v="121.212"/>
+ <val o="269de6" v="120.844"/>
+ <val o="26abf6" v="120.054"/>
+ <val o="26ba06" v="118.297"/>
+ <val o="26c817" v="117.795"/>
+ <val o="26d62b" v="117.996"/>
+ <val o="26e436" v="119.287"/>
+ <val o="26f247" v="118.815"/>
+ <val o="270057" v="118.955"/>
+ <val o="270e67" v="118.449"/>
+ <val o="271c77" v="119.157"/>
+ <val o="272a87" v="120.124"/>
+ <val o="273897" v="119.858"/>
+ <val o="2746a8" v="120.668"/>
+ <val o="2754b9" v="121.067"/>
+ <val o="2762c7" v="118.265"/>
+ <val o="2770d8" v="120.308"/>
+ <val o="277ee7" v="122.851"/>
+ </par>
+ <par memind="440600" h="3dc1a8de">
+ <val o="0" v="-1275"/>
+ <val o="e08" v="-1482"/>
+ <val o="1c32" v="-1562"/>
+ <val o="2a3c" v="-1643"/>
+ <val o="3835" v="-1446"/>
+ <val o="4645" v="-1276"/>
+ <val o="5455" v="-1049"/>
+ <val o="6265" v="-1694"/>
+ <val o="7075" v="-1760"/>
+ <val o="7e85" v="-1662"/>
+ <val o="8c96" v="-2067"/>
+ <val o="9aa5" v="-1992"/>
+ <val o="a8b6" v="-1928"/>
+ <val o="b6c5" v="-2018"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-6"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="-7"/>
+ <val o="11937" v="-7"/>
+ <val o="12746" v="-7"/>
+ <val o="13556" v="-7"/>
+ <val o="14366" v="-7"/>
+ <val o="15181" v="-8"/>
+ <val o="15f85" v="-7"/>
+ <val o="16d95" v="-7"/>
+ <val o="17ba4" v="-7"/>
+ <val o="189b5" v="-7"/>
+ <val o="197c4" v="-7"/>
+ <val o="1a5d5" v="-7"/>
+ <val o="1b3e6" v="-7"/>
+ <val o="1c1f6" v="-7"/>
+ <val o="1d005" v="-7"/>
+ <val o="1de15" v="-7"/>
+ <val o="1ec25" v="-7"/>
+ <val o="1fa36" v="-7"/>
+ <val o="20845" v="-7"/>
+ <val o="21656" v="-7"/>
+ <val o="22465" v="-7"/>
+ <val o="23276" v="-7"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-7"/>
+ <val o="26ab7" v="-7"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="-7"/>
+ <val o="294e6" v="-7"/>
+ <val o="2a301" v="-7"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="-7"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="-7"/>
+ <val o="31375" v="-7"/>
+ <val o="3219e" v="-7"/>
+ <val o="32f96" v="-7"/>
+ <val o="33da6" v="-7"/>
+ <val o="34bb6" v="-7"/>
+ <val o="359de" v="-7"/>
+ <val o="367d6" v="-7"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="-7"/>
+ <val o="3bc36" v="-7"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="-7"/>
+ <val o="3e667" v="-7"/>
+ <val o="3f481" v="-7"/>
+ <val o="40285" v="-7"/>
+ <val o="41095" v="-7"/>
+ <val o="41ea5" v="-7"/>
+ <val o="42cb5" v="-7"/>
+ <val o="43ac5" v="-7"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="-7"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="-7"/>
+ <val o="54600" v="-7"/>
+ <val o="55406" v="-7"/>
+ <val o="56215" v="-7"/>
+ <val o="57026" v="-7"/>
+ <val o="57e36" v="-7"/>
+ <val o="58c46" v="-7"/>
+ <val o="59a70" v="-7"/>
+ <val o="5a867" v="-7"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-7"/>
+ <val o="66d46" v="-7"/>
+ <val o="67b57" v="-7"/>
+ <val o="68967" v="-7"/>
+ <val o="69782" v="-7"/>
+ <val o="6a586" v="-7"/>
+ <val o="6b395" v="-7"/>
+ <val o="6c1a6" v="-7"/>
+ <val o="6cfb5" v="-7"/>
+ <val o="6ddc6" v="-7"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="-7"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-7"/>
+ <val o="7cccf" v="-7"/>
+ <val o="7dadf" v="-7"/>
+ <val o="7e8fa" v="-7"/>
+ <val o="7f70a" v="-7"/>
+ <val o="8051a" v="-7"/>
+ <val o="8132a" v="-7"/>
+ <val o="8213a" v="-7"/>
+ <val o="82f4a" v="-7"/>
+ <val o="83d5a" v="-7"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-7"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="-7"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="-7"/>
+ <val o="93a84" v="-7"/>
+ <val o="94885" v="-7"/>
+ <val o="95694" v="-7"/>
+ <val o="964a5" v="-7"/>
+ <val o="972b4" v="-7"/>
+ <val o="980c5" v="-7"/>
+ <val o="98ed4" v="-7"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="-1845"/>
+ <val o="a2986" v="-631"/>
+ <val o="a3795" v="1564"/>
+ <val o="a45a7" v="-66"/>
+ <val o="a53b6" v="-393"/>
+ <val o="a61c7" v="-691"/>
+ <val o="a6fd6" v="-883"/>
+ <val o="a7e00" v="-1575"/>
+ <val o="a8c00" v="-2209"/>
+ <val o="a9a05" v="109"/>
+ <val o="aa815" v="-420"/>
+ <val o="ab625" v="-859"/>
+ <val o="ac435" v="-628"/>
+ <val o="ad245" v="516"/>
+ <val o="ae055" v="1839"/>
+ <val o="aee65" v="293"/>
+ <val o="afc75" v="1185"/>
+ <val o="b0a85" v="3946"/>
+ <val o="b26a6" v="4230"/>
+ <val o="b34b6" v="3689"/>
+ <val o="b42c6" v="248"/>
+ <val o="b50d6" v="430"/>
+ <val o="b5ee7" v="1026"/>
+ <val o="b6cf6" v="-526"/>
+ <val o="b7b07" v="-258"/>
+ <val o="b8917" v="-65"/>
+ <val o="b9728" v="-489"/>
+ <val o="ba537" v="-842"/>
+ <val o="bb347" v="1082"/>
+ <val o="bc157" v="310"/>
+ <val o="bcf67" v="-1112"/>
+ <val o="bdd81" v="3632"/>
+ <val o="beb86" v="513"/>
+ <val o="bf995" v="214"/>
+ <val o="c07a6" v="-292"/>
+ <val o="c15b5" v="-127"/>
+ <val o="c23c6" v="495"/>
+ <val o="c31d5" v="1815"/>
+ <val o="c3fe6" v="818"/>
+ <val o="c4df5" v="1539"/>
+ <val o="c5c06" v="680"/>
+ <val o="c6a16" v="712"/>
+ <val o="c7826" v="1280"/>
+ <val o="c8636" v="397"/>
+ <val o="c9446" v="493"/>
+ <val o="ca256" v="250"/>
+ <val o="cb066" v="785"/>
+ <val o="cbe76" v="-201"/>
+ <val o="ccc87" v="2156"/>
+ <val o="cda96" v="2937"/>
+ <val o="ce8a8" v="2107"/>
+ <val o="cf6b7" v="2824"/>
+ <val o="d04c8" v="2269"/>
+ <val o="d12d7" v="1441"/>
+ <val o="d20e7" v="-297"/>
+ <val o="d2f02" v="-2280"/>
+ <val o="d3d05" v="-1189"/>
+ <val o="d4b15" v="-964"/>
+ <val o="d5926" v="-442"/>
+ <val o="d6735" v="261"/>
+ <val o="d7546" v="1309"/>
+ <val o="d8355" v="-849"/>
+ <val o="d9166" v="178"/>
+ <val o="d9f75" v="1111"/>
+ <val o="dad87" v="2750"/>
+ <val o="dbb97" v="2769"/>
+ <val o="dc9a8" v="2973"/>
+ <val o="dd7b7" v="1327"/>
+ <val o="de5c6" v="454"/>
+ <val o="df3d7" v="199"/>
+ <val o="e01d7" v="167"/>
+ <val o="e0fe5" v="556"/>
+ <val o="e1df5" v="416"/>
+ <val o="e2c04" v="-370"/>
+ <val o="e3a14" v="-1154"/>
+ <val o="e4824" v="93"/>
+ <val o="e5634" v="-843"/>
+ <val o="e6444" v="171"/>
+ <val o="e7255" v="-646"/>
+ <val o="e806f" v="-723"/>
+ <val o="e8e7f" v="2665"/>
+ <val o="e9c8e" v="837"/>
+ <val o="eaa9f" v="698"/>
+ <val o="eb8ae" v="1097"/>
+ <val o="ec6bf" v="2649"/>
+ <val o="ed4ce" v="-495"/>
+ <val o="ee2df" v="1165"/>
+ <val o="ef0ef" v="542"/>
+ <val o="eff01" v="1871"/>
+ <val o="f0d10" v="979"/>
+ <val o="f1b20" v="1210"/>
+ <val o="f2930" v="-356"/>
+ <val o="f3740" v="1654"/>
+ <val o="f4551" v="1368"/>
+ <val o="f5361" v="1462"/>
+ <val o="f6172" v="1612"/>
+ <val o="f6f80" v="1309"/>
+ <val o="f7d91" v="1886"/>
+ <val o="f8ba1" v="1136"/>
+ <val o="f99b1" v="1169"/>
+ <val o="fa7c0" v="1403"/>
+ <val o="fb5d1" v="1316"/>
+ <val o="fc3e0" v="-1041"/>
+ <val o="fd1fb" v="-1190"/>
+ <val o="fe00b" v="-1609"/>
+ <val o="fee1c" v="-199"/>
+ <val o="ffc2c" v="-252"/>
+ <val o="100a3b" v="585"/>
+ <val o="10184c" v="1069"/>
+ <val o="10265b" v="1973"/>
+ <val o="10346c" v="1831"/>
+ <val o="10427b" v="1127"/>
+ <val o="10508d" v="1767"/>
+ <val o="105e9d" v="1343"/>
+ <val o="106cad" v="1564"/>
+ <val o="107abd" v="849"/>
+ <val o="1088cd" v="805"/>
+ <val o="1096de" v="1093"/>
+ <val o="10a4ed" v="880"/>
+ <val o="10b2fe" v="1254"/>
+ <val o="10c10d" v="2664"/>
+ <val o="10cf1e" v="1368"/>
+ <val o="10dd2e" v="1009"/>
+ <val o="10eb66" v="208"/>
+ <val o="10f94e" v="22"/>
+ <val o="11075e" v="1142"/>
+ <val o="11156d" v="286"/>
+ <val o="112388" v="-1168"/>
+ <val o="113187" v="712"/>
+ <val o="113fb0" v="227"/>
+ <val o="114da6" v="236"/>
+ <val o="115bb6" v="372"/>
+ <val o="1169c6" v="1441"/>
+ <val o="1177d6" v="2015"/>
+ <val o="1185e8" v="1211"/>
+ <val o="1193f7" v="1284"/>
+ <val o="11a208" v="369"/>
+ <val o="11b017" v="-310"/>
+ <val o="11be2f" v="-802"/>
+ <val o="11cc37" v="781"/>
+ <val o="11da47" v="491"/>
+ <val o="11e857" v="1023"/>
+ <val o="11f667" v="516"/>
+ <val o="120578" v="1"/>
+ <val o="121386" v="1"/>
+ <val o="122196" v="2"/>
+ <val o="122fa6" v="1"/>
+ <val o="123db5" v="1"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="1"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="-1"/>
+ <val o="128305" v="-1"/>
+ <val o="129115" v="-1"/>
+ <val o="129f25" v="-1"/>
+ <val o="12ad35" v="-1"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="1"/>
+ <val o="12d766" v="1"/>
+ <val o="12e575" v="2"/>
+ <val o="12f386" v="1"/>
+ <val o="130196" v="1"/>
+ <val o="130fa6" v="1"/>
+ <val o="131db7" v="1"/>
+ <val o="132bc5" v="1"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="2274"/>
+ <val o="1774a3" v="1775"/>
+ <val o="1782b3" v="1153"/>
+ <val o="1790c5" v="769"/>
+ <val o="179ed4" v="-846"/>
+ <val o="17ace4" v="-2362"/>
+ <val o="17bafd" v="-2961"/>
+ <val o="17c90f" v="-2519"/>
+ <val o="17d71e" v="-2447"/>
+ <val o="17e52f" v="-2865"/>
+ <val o="17f33f" v="-2276"/>
+ <val o="18014f" v="-1250"/>
+ <val o="180f5f" v="-716"/>
+ <val o="181d6e" v="-1489"/>
+ <val o="182b7f" v="-2004"/>
+ <val o="18398f" v="-1055"/>
+ <val o="1847a1" v="-978"/>
+ <val o="1855af" v="-1269"/>
+ <val o="1863c0" v="-3170"/>
+ <val o="1871cf" v="-2668"/>
+ <val o="187fe0" v="-2540"/>
+ <val o="188def" v="-2377"/>
+ <val o="189c00" v="-1126"/>
+ <val o="18b80d" v="1219"/>
+ <val o="18c61c" v="-1061"/>
+ <val o="18d42c" v="-1519"/>
+ <val o="18e23b" v="-1284"/>
+ <val o="18f04b" v="-1902"/>
+ <val o="18fe5e" v="-1623"/>
+ <val o="190c76" v="-778"/>
+ <val o="191a86" v="-1730"/>
+ <val o="192896" v="-1745"/>
+ <val o="1936a6" v="-1872"/>
+ <val o="1944b7" v="-1207"/>
+ <val o="1952c6" v="-211"/>
+ <val o="1960d7" v="1619"/>
+ <val o="196ee6" v="-764"/>
+ <val o="197cf8" v="-827"/>
+ <val o="198b0f" v="40"/>
+ <val o="19991f" v="-199"/>
+ <val o="19b541" v="-967"/>
+ <val o="19c34d" v="-680"/>
+ <val o="19d15e" v="-385"/>
+ <val o="19df80" v="-241"/>
+ <val o="19ed90" v="371"/>
+ <val o="19eebe" v="471"/>
+ <val o="19fb8e" v="61"/>
+ <val o="1a09a0" v="-2440"/>
+ <val o="1a17ae" v="-3447"/>
+ <val o="1a25be" v="-3862"/>
+ <val o="1a33cd" v="-1657"/>
+ <val o="1a41dd" v="-2273"/>
+ <val o="1a4fed" v="-4132"/>
+ <val o="1a5e08" v="-3735"/>
+ <val o="1a6c05" v="-2655"/>
+ <val o="1a7a15" v="-3286"/>
+ <val o="1a8826" v="-3377"/>
+ <val o="1a9637" v="-2707"/>
+ <val o="1aa445" v="-1980"/>
+ <val o="1ab255" v="-797"/>
+ <val o="1ac065" v="-2046"/>
+ <val o="1ace75" v="-2793"/>
+ <val o="1adc87" v="-1939"/>
+ <val o="1aea96" v="-2092"/>
+ <val o="1af8a7" v="-2211"/>
+ <val o="1b06b7" v="-2679"/>
+ <val o="1b14c6" v="-2530"/>
+ <val o="1c7460" v="453"/>
+ <val o="1c8270" v="-157"/>
+ <val o="1c907e" v="1143"/>
+ <val o="1c9e8f" v="-146"/>
+ <val o="1caca2" v="-1002"/>
+ <val o="1cbab1" v="-1402"/>
+ <val o="1cc8c1" v="2949"/>
+ <val o="1cd6d0" v="2229"/>
+ <val o="1ce4de" v="1022"/>
+ <val o="1cf2f0" v="-1628"/>
+ <val o="1d0109" v="-1835"/>
+ <val o="1d0f06" v="-211"/>
+ <val o="1d1d15" v="-767"/>
+ <val o="1d2b25" v="-792"/>
+ <val o="1d3935" v="173"/>
+ <val o="1d4745" v="776"/>
+ <val o="1d5555" v="1249"/>
+ <val o="1d6366" v="-957"/>
+ <val o="1d7175" v="-911"/>
+ <val o="1d7f86" v="-243"/>
+ <val o="1d8d95" v="-65"/>
+ <val o="1d9ba6" v="-308"/>
+ <val o="1da9b6" v="-811"/>
+ <val o="1db7c7" v="-806"/>
+ <val o="1dc5d5" v="-952"/>
+ <val o="1dd3e6" v="-716"/>
+ <val o="1de1f5" v="-1618"/>
+ <val o="1df006" v="-1910"/>
+ <val o="1dfe16" v="-1809"/>
+ <val o="1e0c26" v="-2224"/>
+ <val o="1e1a36" v="-2272"/>
+ <val o="1e2847" v="-2317"/>
+ <val o="1e3659" v="-2283"/>
+ <val o="1e4467" v="-2334"/>
+ <val o="1e5281" v="-1860"/>
+ <val o="1e6086" v="-2139"/>
+ <val o="1e6e96" v="-2206"/>
+ <val o="1e7ca6" v="-296"/>
+ <val o="1e8ab5" v="-449"/>
+ <val o="1e98c6" v="-142"/>
+ <val o="1ea6d5" v="-422"/>
+ <val o="1eb4e6" v="-365"/>
+ <val o="1ec2f6" v="-581"/>
+ <val o="1ed106" v="-263"/>
+ <val o="1edf16" v="-325"/>
+ <val o="1eed26" v="-142"/>
+ <val o="1efb36" v="-355"/>
+ <val o="1f0946" v="-310"/>
+ <val o="1f1756" v="496"/>
+ <val o="1f2566" v="660"/>
+ <val o="1f3376" v="1246"/>
+ <val o="1f4187" v="2889"/>
+ <val o="1f4f96" v="1532"/>
+ <val o="1f5da7" v="-143"/>
+ <val o="1f6bb6" v="-518"/>
+ <val o="1f79c7" v="225"/>
+ <val o="1f87d6" v="-1667"/>
+ <val o="1f95e7" v="-2330"/>
+ <val o="1fa401" v="-1727"/>
+ <val o="1fb204" v="-1489"/>
+ <val o="1fc016" v="-1515"/>
+ <val o="1fce25" v="-476"/>
+ <val o="1fdc35" v="-193"/>
+ <val o="1fea45" v="128"/>
+ <val o="1ff855" v="376"/>
+ <val o="200665" v="2872"/>
+ <val o="201475" v="408"/>
+ <val o="202286" v="1923"/>
+ <val o="203095" v="1830"/>
+ <val o="203ea5" v="1798"/>
+ <val o="204cb6" v="334"/>
+ <val o="205ac6" v="1260"/>
+ <val o="2068d6" v="1815"/>
+ <val o="2076e6" v="2272"/>
+ <val o="2084f6" v="262"/>
+ <val o="209306" v="-387"/>
+ <val o="20a116" v="-613"/>
+ <val o="20af26" v="-251"/>
+ <val o="20bd37" v="-885"/>
+ <val o="20cb46" v="551"/>
+ <val o="20d957" v="48"/>
+ <val o="20e767" v="-982"/>
+ <val o="20f581" v="-1612"/>
+ <val o="210386" v="-1125"/>
+ <val o="211194" v="-381"/>
+ <val o="211fa5" v="-441"/>
+ <val o="212db5" v="71"/>
+ <val o="213bc5" v="1020"/>
+ <val o="2149d6" v="760"/>
+ <val o="2157e5" v="-319"/>
+ <val o="2165f6" v="-1144"/>
+ <val o="217406" v="302"/>
+ <val o="218217" v="-319"/>
+ <val o="219026" v="-582"/>
+ <val o="219e39" v="408"/>
+ <val o="21ac46" v="1031"/>
+ <val o="21ba57" v="1139"/>
+ <val o="21c867" v="2082"/>
+ <val o="21d677" v="-1202"/>
+ <val o="21e487" v="622"/>
+ <val o="21f296" v="456"/>
+ <val o="2200a6" v="-736"/>
+ <val o="220eb7" v="-818"/>
+ <val o="221cc6" v="1684"/>
+ <val o="222ad7" v="307"/>
+ <val o="2238e7" v="-801"/>
+ <val o="224701" v="-1256"/>
+ <val o="225505" v="3308"/>
+ <val o="226315" v="506"/>
+ <val o="227125" v="639"/>
+ <val o="227f35" v="1963"/>
+ <val o="228d45" v="2867"/>
+ <val o="229b54" v="-831"/>
+ <val o="22a965" v="-270"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="2010"/>
+ <val o="22d397" v="3408"/>
+ <val o="22e1a6" v="3190"/>
+ <val o="22efb6" v="-187"/>
+ <val o="22fdc7" v="-225"/>
+ <val o="230bd7" v="531"/>
+ <val o="2319e6" v="-823"/>
+ <val o="2327f6" v="62"/>
+ <val o="23361b" v="1079"/>
+ <val o="234416" v="1547"/>
+ <val o="235226" v="900"/>
+ <val o="236037" v="112"/>
+ <val o="236e46" v="1780"/>
+ <val o="237c57" v="1407"/>
+ <val o="238a66" v="298"/>
+ <val o="239881" v="565"/>
+ <val o="23a685" v="-311"/>
+ <val o="23b495" v="-657"/>
+ <val o="23c2a4" v="168"/>
+ <val o="23d0b5" v="647"/>
+ <val o="23dec4" v="1427"/>
+ <val o="23ecd5" v="829"/>
+ <val o="23fae4" v="-5"/>
+ <val o="2408f6" v="1197"/>
+ <val o="241706" v="3751"/>
+ <val o="242518" v="2991"/>
+ <val o="243325" v="2801"/>
+ <val o="244137" v="-1188"/>
+ <val o="244f46" v="-828"/>
+ <val o="246b66" v="-799"/>
+ <val o="247976" v="57"/>
+ <val o="248786" v="4601"/>
+ <val o="24957e" v="1911"/>
+ <val o="24a38f" v="799"/>
+ <val o="24b19c" v="-972"/>
+ <val o="24bfac" v="-708"/>
+ <val o="24cdbc" v="-790"/>
+ <val o="24dbcd" v="-490"/>
+ <val o="24e9e5" v="-1316"/>
+ <val o="24f808" v="-825"/>
+ <val o="250616" v="-1012"/>
+ <val o="251426" v="-1178"/>
+ <val o="252236" v="-35"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="1352"/>
+ <val o="254c67" v="1059"/>
+ <val o="255a76" v="1290"/>
+ <val o="256887" v="2079"/>
+ <val o="257697" v="3618"/>
+ <val o="2584a8" v="-4684"/>
+ <val o="2592b6" v="-2470"/>
+ <val o="25a0c7" v="-556"/>
+ <val o="25aed7" v="189"/>
+ <val o="25bce7" v="260"/>
+ <val o="25caf8" v="816"/>
+ <val o="25d907" v="2489"/>
+ <val o="25e718" v="2732"/>
+ <val o="25f527" v="2234"/>
+ <val o="260338" v="57"/>
+ <val o="261149" v="1219"/>
+ <val o="261f59" v="632"/>
+ <val o="262d68" v="-1360"/>
+ <val o="263b83" v="38"/>
+ <val o="264986" v="-980"/>
+ <val o="265795" v="-1501"/>
+ <val o="2665a6" v="-2119"/>
+ <val o="2673b5" v="-1618"/>
+ <val o="2681c6" v="-1314"/>
+ <val o="268fd5" v="-432"/>
+ <val o="269de6" v="309"/>
+ <val o="26abf6" v="685"/>
+ <val o="26ba06" v="1692"/>
+ <val o="26c817" v="1899"/>
+ <val o="26d62b" v="3622"/>
+ <val o="26e436" v="2709"/>
+ <val o="26f247" v="3037"/>
+ <val o="270057" v="2898"/>
+ <val o="270e67" v="3251"/>
+ <val o="271c77" v="186"/>
+ <val o="272a87" v="-636"/>
+ <val o="273897" v="-421"/>
+ <val o="2746a8" v="-729"/>
+ <val o="2754b9" v="-978"/>
+ <val o="2762c7" v="2670"/>
+ <val o="2770d8" v="1255"/>
+ <val o="277ee7" v="-496"/>
+ </par>
+ <par memind="424600" h="3dc1a8de">
+ <val o="0" v="-4313"/>
+ <val o="e08" v="-4163"/>
+ <val o="1c32" v="-4102"/>
+ <val o="2a3c" v="-4091"/>
+ <val o="3835" v="-3982"/>
+ <val o="4645" v="-3934"/>
+ <val o="5455" v="-4439"/>
+ <val o="6265" v="-5323"/>
+ <val o="7075" v="-6298"/>
+ <val o="7e85" v="-7332"/>
+ <val o="8c96" v="-7541"/>
+ <val o="9aa5" v="-7248"/>
+ <val o="a8b6" v="-6869"/>
+ <val o="b6c5" v="-6454"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-7"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="-7"/>
+ <val o="fd17" v="-7"/>
+ <val o="10b27" v="-8"/>
+ <val o="11937" v="-8"/>
+ <val o="12746" v="-7"/>
+ <val o="13556" v="-8"/>
+ <val o="14366" v="-9"/>
+ <val o="15181" v="-9"/>
+ <val o="15f85" v="-8"/>
+ <val o="16d95" v="-8"/>
+ <val o="17ba4" v="-8"/>
+ <val o="189b5" v="-8"/>
+ <val o="197c4" v="-8"/>
+ <val o="1a5d5" v="-9"/>
+ <val o="1b3e6" v="-9"/>
+ <val o="1c1f6" v="-8"/>
+ <val o="1d005" v="-8"/>
+ <val o="1de15" v="-8"/>
+ <val o="1ec25" v="-8"/>
+ <val o="1fa36" v="-8"/>
+ <val o="20845" v="-9"/>
+ <val o="21656" v="-8"/>
+ <val o="22465" v="-8"/>
+ <val o="23276" v="-8"/>
+ <val o="24086" v="-7"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-8"/>
+ <val o="26ab7" v="-8"/>
+ <val o="278c6" v="-8"/>
+ <val o="286d6" v="-8"/>
+ <val o="294e6" v="-9"/>
+ <val o="2a301" v="-9"/>
+ <val o="2b105" v="-8"/>
+ <val o="2bf15" v="-8"/>
+ <val o="2cd25" v="-8"/>
+ <val o="2db35" v="-8"/>
+ <val o="2e946" v="-8"/>
+ <val o="2f755" v="-7"/>
+ <val o="30566" v="-9"/>
+ <val o="31375" v="-8"/>
+ <val o="3219e" v="-8"/>
+ <val o="32f96" v="-8"/>
+ <val o="33da6" v="-8"/>
+ <val o="34bb6" v="-8"/>
+ <val o="359de" v="-8"/>
+ <val o="367d6" v="-8"/>
+ <val o="375e6" v="-8"/>
+ <val o="3840e" v="-7"/>
+ <val o="3921e" v="-7"/>
+ <val o="3a016" v="-7"/>
+ <val o="3ae27" v="-8"/>
+ <val o="3bc36" v="-8"/>
+ <val o="3ca47" v="-7"/>
+ <val o="3d856" v="-8"/>
+ <val o="3e667" v="-8"/>
+ <val o="3f481" v="-9"/>
+ <val o="40285" v="-9"/>
+ <val o="41095" v="-9"/>
+ <val o="41ea5" v="-9"/>
+ <val o="42cb5" v="-9"/>
+ <val o="43ac5" v="-8"/>
+ <val o="448d5" v="-7"/>
+ <val o="456e6" v="-8"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="-7"/>
+ <val o="48f0e" v="-6"/>
+ <val o="49d1d" v="-7"/>
+ <val o="4ab46" v="-7"/>
+ <val o="4b955" v="-7"/>
+ <val o="4c769" v="-6"/>
+ <val o="4d577" v="-7"/>
+ <val o="4e387" v="-7"/>
+ <val o="4f196" v="-7"/>
+ <val o="4ffa6" v="-7"/>
+ <val o="50dd0" v="-7"/>
+ <val o="51bc6" v="-7"/>
+ <val o="529d6" v="-8"/>
+ <val o="537e7" v="-8"/>
+ <val o="54600" v="-9"/>
+ <val o="55406" v="-8"/>
+ <val o="56215" v="-8"/>
+ <val o="57026" v="-8"/>
+ <val o="57e36" v="-8"/>
+ <val o="58c46" v="-8"/>
+ <val o="59a70" v="-8"/>
+ <val o="5a867" v="-8"/>
+ <val o="5b676" v="-7"/>
+ <val o="5c487" v="-6"/>
+ <val o="5d296" v="-7"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="-7"/>
+ <val o="618e7" v="-7"/>
+ <val o="626f7" v="-7"/>
+ <val o="63507" v="-7"/>
+ <val o="64317" v="-7"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-8"/>
+ <val o="66d46" v="-8"/>
+ <val o="67b57" v="-8"/>
+ <val o="68967" v="-8"/>
+ <val o="69782" v="-8"/>
+ <val o="6a586" v="-8"/>
+ <val o="6b395" v="-8"/>
+ <val o="6c1a6" v="-9"/>
+ <val o="6cfb5" v="-8"/>
+ <val o="6ddc6" v="-8"/>
+ <val o="6ebd6" v="-7"/>
+ <val o="6f9e6" v="-8"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="-6"/>
+ <val o="72417" v="-6"/>
+ <val o="73227" v="-6"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="-7"/>
+ <val o="76a63" v="-6"/>
+ <val o="77873" v="-7"/>
+ <val o="78680" v="-6"/>
+ <val o="7948f" v="-7"/>
+ <val o="7a29f" v="-7"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-8"/>
+ <val o="7cccf" v="-8"/>
+ <val o="7dadf" v="-8"/>
+ <val o="7e8fa" v="-8"/>
+ <val o="7f70a" v="-8"/>
+ <val o="8051a" v="-9"/>
+ <val o="8132a" v="-9"/>
+ <val o="8213a" v="-9"/>
+ <val o="82f4a" v="-8"/>
+ <val o="83d5a" v="-8"/>
+ <val o="84b6a" v="-7"/>
+ <val o="8597a" v="-7"/>
+ <val o="8678b" v="-7"/>
+ <val o="8759b" v="-7"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-8"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="-7"/>
+ <val o="8bbeb" v="-7"/>
+ <val o="8c9fc" v="-7"/>
+ <val o="8d80b" v="-7"/>
+ <val o="8e61a" v="-7"/>
+ <val o="8f42a" v="-7"/>
+ <val o="9023a" v="-7"/>
+ <val o="9104a" v="-8"/>
+ <val o="91e5a" v="-7"/>
+ <val o="92c6a" v="-8"/>
+ <val o="93a84" v="-9"/>
+ <val o="94885" v="-8"/>
+ <val o="95694" v="-9"/>
+ <val o="964a5" v="-9"/>
+ <val o="972b4" v="-8"/>
+ <val o="980c5" v="-8"/>
+ <val o="98ed4" v="-8"/>
+ <val o="99ce5" v="-8"/>
+ <val o="9aaf5" v="-7"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="-7"/>
+ <val o="a1b77" v="-6460"/>
+ <val o="a2986" v="-3546"/>
+ <val o="a3795" v="-986"/>
+ <val o="a45a7" v="697"/>
+ <val o="a53b6" v="776"/>
+ <val o="a61c7" v="925"/>
+ <val o="a6fd6" v="125"/>
+ <val o="a7e00" v="456"/>
+ <val o="a8c00" v="903"/>
+ <val o="a9a05" v="278"/>
+ <val o="aa815" v="27"/>
+ <val o="ab625" v="43"/>
+ <val o="ac435" v="173"/>
+ <val o="ad245" v="947"/>
+ <val o="ae055" v="728"/>
+ <val o="aee65" v="-452"/>
+ <val o="afc75" v="-117"/>
+ <val o="b0a85" v="23"/>
+ <val o="b26a6" v="182"/>
+ <val o="b34b6" v="-152"/>
+ <val o="b42c6" v="-423"/>
+ <val o="b50d6" v="-705"/>
+ <val o="b5ee7" v="-790"/>
+ <val o="b6cf6" v="-1575"/>
+ <val o="b7b07" v="-2027"/>
+ <val o="b8917" v="-1757"/>
+ <val o="b9728" v="-1722"/>
+ <val o="ba537" v="-1901"/>
+ <val o="bb347" v="-741"/>
+ <val o="bc157" v="-812"/>
+ <val o="bcf67" v="-891"/>
+ <val o="bdd81" v="652"/>
+ <val o="beb86" v="411"/>
+ <val o="bf995" v="516"/>
+ <val o="c07a6" v="398"/>
+ <val o="c15b5" v="382"/>
+ <val o="c23c6" v="470"/>
+ <val o="c31d5" v="591"/>
+ <val o="c3fe6" v="267"/>
+ <val o="c4df5" v="770"/>
+ <val o="c5c06" v="164"/>
+ <val o="c6a16" v="438"/>
+ <val o="c7826" v="-43"/>
+ <val o="c8636" v="72"/>
+ <val o="c9446" v="249"/>
+ <val o="ca256" v="201"/>
+ <val o="cb066" v="115"/>
+ <val o="cbe76" v="-425"/>
+ <val o="ccc87" v="-229"/>
+ <val o="cda96" v="-284"/>
+ <val o="ce8a8" v="-247"/>
+ <val o="cf6b7" v="-135"/>
+ <val o="d04c8" v="-54"/>
+ <val o="d12d7" v="96"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="16"/>
+ <val o="d3d05" v="598"/>
+ <val o="d4b15" v="721"/>
+ <val o="d5926" v="818"/>
+ <val o="d6735" v="1067"/>
+ <val o="d7546" v="1245"/>
+ <val o="d8355" v="-117"/>
+ <val o="d9166" v="-721"/>
+ <val o="d9f75" v="-1504"/>
+ <val o="dad87" v="-2084"/>
+ <val o="dbb97" v="-2554"/>
+ <val o="dc9a8" v="-2345"/>
+ <val o="dd7b7" v="-2920"/>
+ <val o="de5c6" v="-2712"/>
+ <val o="df3d7" v="-2858"/>
+ <val o="e01d7" v="-2928"/>
+ <val o="e0fe5" v="-2803"/>
+ <val o="e1df5" v="-3032"/>
+ <val o="e2c04" v="-4017"/>
+ <val o="e3a14" v="-3918"/>
+ <val o="e4824" v="-3412"/>
+ <val o="e5634" v="-3441"/>
+ <val o="e6444" v="-2561"/>
+ <val o="e7255" v="-2139"/>
+ <val o="e806f" v="-1765"/>
+ <val o="e8e7f" v="-465"/>
+ <val o="e9c8e" v="-702"/>
+ <val o="eaa9f" v="-647"/>
+ <val o="eb8ae" v="-676"/>
+ <val o="ec6bf" v="-509"/>
+ <val o="ed4ce" v="-2150"/>
+ <val o="ee2df" v="-2355"/>
+ <val o="ef0ef" v="-3171"/>
+ <val o="eff01" v="-4031"/>
+ <val o="f0d10" v="-4338"/>
+ <val o="f1b20" v="-4651"/>
+ <val o="f2930" v="-4668"/>
+ <val o="f3740" v="-4346"/>
+ <val o="f4551" v="-4571"/>
+ <val o="f5361" v="-4929"/>
+ <val o="f6172" v="-4607"/>
+ <val o="f6f80" v="-4866"/>
+ <val o="f7d91" v="-4308"/>
+ <val o="f8ba1" v="-3897"/>
+ <val o="f99b1" v="-3784"/>
+ <val o="fa7c0" v="-2988"/>
+ <val o="fb5d1" v="-3099"/>
+ <val o="fc3e0" v="-3335"/>
+ <val o="fd1fb" v="-2686"/>
+ <val o="fe00b" v="-2522"/>
+ <val o="fee1c" v="-2074"/>
+ <val o="ffc2c" v="-1989"/>
+ <val o="100a3b" v="-1788"/>
+ <val o="10184c" v="-1795"/>
+ <val o="10265b" v="-2075"/>
+ <val o="10346c" v="-2698"/>
+ <val o="10427b" v="-3932"/>
+ <val o="10508d" v="-4406"/>
+ <val o="105e9d" v="-4366"/>
+ <val o="106cad" v="-4692"/>
+ <val o="107abd" v="-4302"/>
+ <val o="1088cd" v="-3927"/>
+ <val o="1096de" v="-4101"/>
+ <val o="10a4ed" v="-4187"/>
+ <val o="10b2fe" v="-4342"/>
+ <val o="10c10d" v="-4162"/>
+ <val o="10cf1e" v="-4456"/>
+ <val o="10dd2e" v="-4132"/>
+ <val o="10eb66" v="-4499"/>
+ <val o="10f94e" v="-3882"/>
+ <val o="11075e" v="-3295"/>
+ <val o="11156d" v="-2863"/>
+ <val o="112388" v="-2668"/>
+ <val o="113187" v="-1778"/>
+ <val o="113fb0" v="-1810"/>
+ <val o="114da6" v="-1829"/>
+ <val o="115bb6" v="-1800"/>
+ <val o="1169c6" v="-1595"/>
+ <val o="1177d6" v="-2050"/>
+ <val o="1185e8" v="-2961"/>
+ <val o="1193f7" v="-3627"/>
+ <val o="11a208" v="-4830"/>
+ <val o="11b017" v="-4296"/>
+ <val o="11be2f" v="-5257"/>
+ <val o="11cc37" v="-4408"/>
+ <val o="11da47" v="-4326"/>
+ <val o="11e857" v="-4420"/>
+ <val o="11f667" v="-3950"/>
+ <val o="120578" v="-4"/>
+ <val o="121386" v="-4"/>
+ <val o="122196" v="-4"/>
+ <val o="122fa6" v="-3"/>
+ <val o="123db5" v="-3"/>
+ <val o="124bc5" v="-3"/>
+ <val o="1259d5" v="-2"/>
+ <val o="1267e4" v="-2"/>
+ <val o="127600" v="-2"/>
+ <val o="128305" v="-2"/>
+ <val o="129115" v="-2"/>
+ <val o="129f25" v="-2"/>
+ <val o="12ad35" v="-2"/>
+ <val o="12bb45" v="-1"/>
+ <val o="12c954" v="-2"/>
+ <val o="12d766" v="-2"/>
+ <val o="12e575" v="-3"/>
+ <val o="12f386" v="-2"/>
+ <val o="130196" v="-4"/>
+ <val o="130fa6" v="-3"/>
+ <val o="131db7" v="-3"/>
+ <val o="132bc5" v="-3"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="-6868"/>
+ <val o="1774a3" v="-6790"/>
+ <val o="1782b3" v="-7252"/>
+ <val o="1790c5" v="-6734"/>
+ <val o="179ed4" v="-6030"/>
+ <val o="17ace4" v="-5892"/>
+ <val o="17bafd" v="-6066"/>
+ <val o="17c90f" v="-5486"/>
+ <val o="17d71e" v="-5444"/>
+ <val o="17e52f" v="-5339"/>
+ <val o="17f33f" v="-4983"/>
+ <val o="18014f" v="-5190"/>
+ <val o="180f5f" v="-6313"/>
+ <val o="181d6e" v="-6839"/>
+ <val o="182b7f" v="-7853"/>
+ <val o="18398f" v="-13507"/>
+ <val o="1847a1" v="-13381"/>
+ <val o="1855af" v="-12778"/>
+ <val o="1863c0" v="-11890"/>
+ <val o="1871cf" v="-12338"/>
+ <val o="187fe0" v="-11774"/>
+ <val o="188def" v="-12649"/>
+ <val o="189c00" v="-11849"/>
+ <val o="18b80d" v="-7471"/>
+ <val o="18c61c" v="-8126"/>
+ <val o="18d42c" v="-7696"/>
+ <val o="18e23b" v="-6538"/>
+ <val o="18f04b" v="-6175"/>
+ <val o="18fe5e" v="-5664"/>
+ <val o="190c76" v="-4480"/>
+ <val o="191a86" v="-4300"/>
+ <val o="192896" v="-4263"/>
+ <val o="1936a6" v="-4119"/>
+ <val o="1944b7" v="-4103"/>
+ <val o="1952c6" v="-4511"/>
+ <val o="1960d7" v="-5135"/>
+ <val o="196ee6" v="-6038"/>
+ <val o="197cf8" v="-6392"/>
+ <val o="198b0f" v="-5899"/>
+ <val o="19991f" v="-6690"/>
+ <val o="19b541" v="-6603"/>
+ <val o="19c34d" v="-6159"/>
+ <val o="19d15e" v="-6128"/>
+ <val o="19df80" v="-6220"/>
+ <val o="19ed90" v="-6047"/>
+ <val o="19eebe" v="-6009"/>
+ <val o="19fb8e" v="-2295"/>
+ <val o="1a09a0" v="-2543"/>
+ <val o="1a17ae" v="-3085"/>
+ <val o="1a25be" v="-3269"/>
+ <val o="1a33cd" v="-2267"/>
+ <val o="1a41dd" v="-2159"/>
+ <val o="1a4fed" v="-1532"/>
+ <val o="1a5e08" v="-1675"/>
+ <val o="1a6c05" v="-960"/>
+ <val o="1a7a15" v="-1122"/>
+ <val o="1a8826" v="-1061"/>
+ <val o="1a9637" v="-505"/>
+ <val o="1aa445" v="-536"/>
+ <val o="1ab255" v="-991"/>
+ <val o="1ac065" v="-1818"/>
+ <val o="1ace75" v="-2574"/>
+ <val o="1adc87" v="-2844"/>
+ <val o="1aea96" v="-2608"/>
+ <val o="1af8a7" v="-2928"/>
+ <val o="1b06b7" v="-2112"/>
+ <val o="1b14c6" v="-2074"/>
+ <val o="1c7460" v="354"/>
+ <val o="1c8270" v="438"/>
+ <val o="1c907e" v="3408"/>
+ <val o="1c9e8f" v="3269"/>
+ <val o="1caca2" v="3655"/>
+ <val o="1cbab1" v="3521"/>
+ <val o="1cc8c1" v="5431"/>
+ <val o="1cd6d0" v="5560"/>
+ <val o="1ce4de" v="5660"/>
+ <val o="1cf2f0" v="5623"/>
+ <val o="1d0109" v="5896"/>
+ <val o="1d0f06" v="6656"/>
+ <val o="1d1d15" v="6647"/>
+ <val o="1d2b25" v="6733"/>
+ <val o="1d3935" v="6914"/>
+ <val o="1d4745" v="6873"/>
+ <val o="1d5555" v="6691"/>
+ <val o="1d6366" v="5814"/>
+ <val o="1d7175" v="5617"/>
+ <val o="1d7f86" v="5608"/>
+ <val o="1d8d95" v="-3230"/>
+ <val o="1d9ba6" v="-3656"/>
+ <val o="1da9b6" v="-3620"/>
+ <val o="1db7c7" v="-3449"/>
+ <val o="1dc5d5" v="-3601"/>
+ <val o="1dd3e6" v="-3735"/>
+ <val o="1de1f5" v="-5996"/>
+ <val o="1df006" v="-6718"/>
+ <val o="1dfe16" v="-6583"/>
+ <val o="1e0c26" v="-6767"/>
+ <val o="1e1a36" v="-6800"/>
+ <val o="1e2847" v="-6525"/>
+ <val o="1e3659" v="-6170"/>
+ <val o="1e4467" v="-5676"/>
+ <val o="1e5281" v="-4911"/>
+ <val o="1e6086" v="-4911"/>
+ <val o="1e6e96" v="-4801"/>
+ <val o="1e7ca6" v="-1982"/>
+ <val o="1e8ab5" v="-1810"/>
+ <val o="1e98c6" v="-1834"/>
+ <val o="1ea6d5" v="-2256"/>
+ <val o="1eb4e6" v="-2325"/>
+ <val o="1ec2f6" v="-2684"/>
+ <val o="1ed106" v="-2675"/>
+ <val o="1edf16" v="-2778"/>
+ <val o="1eed26" v="-2688"/>
+ <val o="1efb36" v="-2650"/>
+ <val o="1f0946" v="-2557"/>
+ <val o="1f1756" v="-2355"/>
+ <val o="1f2566" v="-2318"/>
+ <val o="1f3376" v="-2582"/>
+ <val o="1f4187" v="-2811"/>
+ <val o="1f4f96" v="-3182"/>
+ <val o="1f5da7" v="-3578"/>
+ <val o="1f6bb6" v="-3544"/>
+ <val o="1f79c7" v="-3148"/>
+ <val o="1f87d6" v="-3345"/>
+ <val o="1f95e7" v="-3137"/>
+ <val o="1fa401" v="-2809"/>
+ <val o="1fb204" v="-2501"/>
+ <val o="1fc016" v="-2493"/>
+ <val o="1fce25" v="-2157"/>
+ <val o="1fdc35" v="-2137"/>
+ <val o="1fea45" v="-2155"/>
+ <val o="1ff855" v="-2498"/>
+ <val o="200665" v="-2368"/>
+ <val o="201475" v="-3513"/>
+ <val o="202286" v="-4566"/>
+ <val o="203095" v="-5345"/>
+ <val o="203ea5" v="-6057"/>
+ <val o="204cb6" v="-5799"/>
+ <val o="205ac6" v="-5341"/>
+ <val o="2068d6" v="-5395"/>
+ <val o="2076e6" v="-5979"/>
+ <val o="2084f6" v="-6090"/>
+ <val o="209306" v="-6778"/>
+ <val o="20a116" v="-6378"/>
+ <val o="20af26" v="-5473"/>
+ <val o="20bd37" v="-5382"/>
+ <val o="20cb46" v="-4608"/>
+ <val o="20d957" v="-4316"/>
+ <val o="20e767" v="-4055"/>
+ <val o="20f581" v="-3867"/>
+ <val o="210386" v="-3482"/>
+ <val o="211194" v="-3116"/>
+ <val o="211fa5" v="-3010"/>
+ <val o="212db5" v="-2944"/>
+ <val o="213bc5" v="-2819"/>
+ <val o="2149d6" v="-3644"/>
+ <val o="2157e5" v="-4499"/>
+ <val o="2165f6" v="-5795"/>
+ <val o="217406" v="-6198"/>
+ <val o="218217" v="-6174"/>
+ <val o="219026" v="-6102"/>
+ <val o="219e39" v="-6218"/>
+ <val o="21ac46" v="-5898"/>
+ <val o="21ba57" v="-5986"/>
+ <val o="21c867" v="-5633"/>
+ <val o="21d677" v="-6210"/>
+ <val o="21e487" v="-5783"/>
+ <val o="21f296" v="-5726"/>
+ <val o="2200a6" v="-5539"/>
+ <val o="220eb7" v="-5408"/>
+ <val o="221cc6" v="-4608"/>
+ <val o="222ad7" v="-3876"/>
+ <val o="2238e7" v="-3618"/>
+ <val o="224701" v="-3292"/>
+ <val o="225505" v="-1685"/>
+ <val o="226315" v="-2072"/>
+ <val o="227125" v="-2050"/>
+ <val o="227f35" v="-1670"/>
+ <val o="228d45" v="-1792"/>
+ <val o="229b54" v="-3485"/>
+ <val o="22a965" v="-3911"/>
+ <val o="22b776" v="-4578"/>
+ <val o="22c586" v="-4788"/>
+ <val o="22d397" v="-4459"/>
+ <val o="22e1a6" v="-4693"/>
+ <val o="22efb6" v="-4830"/>
+ <val o="22fdc7" v="-4652"/>
+ <val o="230bd7" v="-4452"/>
+ <val o="2319e6" v="-5394"/>
+ <val o="2327f6" v="-5538"/>
+ <val o="23361b" v="-5866"/>
+ <val o="234416" v="-5225"/>
+ <val o="235226" v="-5162"/>
+ <val o="236037" v="-5250"/>
+ <val o="236e46" v="-4384"/>
+ <val o="237c57" v="-4218"/>
+ <val o="238a66" v="-4016"/>
+ <val o="239881" v="-3222"/>
+ <val o="23a685" v="-3311"/>
+ <val o="23b495" v="-3183"/>
+ <val o="23c2a4" v="-2974"/>
+ <val o="23d0b5" v="-2945"/>
+ <val o="23dec4" v="-2933"/>
+ <val o="23ecd5" v="-3570"/>
+ <val o="23fae4" v="-4545"/>
+ <val o="2408f6" v="-5119"/>
+ <val o="241706" v="-5737"/>
+ <val o="242518" v="-6515"/>
+ <val o="243325" v="-6776"/>
+ <val o="244137" v="-6755"/>
+ <val o="244f46" v="-6361"/>
+ <val o="246b66" v="-6546"/>
+ <val o="247976" v="-6273"/>
+ <val o="248786" v="-5402"/>
+ <val o="24957e" v="-5797"/>
+ <val o="24a38f" v="-5647"/>
+ <val o="24b19c" v="-5747"/>
+ <val o="24bfac" v="-5443"/>
+ <val o="24cdbc" v="-5445"/>
+ <val o="24dbcd" v="-4557"/>
+ <val o="24e9e5" v="-4019"/>
+ <val o="24f808" v="-3484"/>
+ <val o="250616" v="-3616"/>
+ <val o="251426" v="-3559"/>
+ <val o="252236" v="-3408"/>
+ <val o="253047" v="-3609"/>
+ <val o="253e56" v="-4020"/>
+ <val o="254c67" v="-4182"/>
+ <val o="255a76" v="-4997"/>
+ <val o="256887" v="-5810"/>
+ <val o="257697" v="-5595"/>
+ <val o="2584a8" v="-15224"/>
+ <val o="2592b6" v="-8695"/>
+ <val o="25a0c7" v="-4575"/>
+ <val o="25aed7" v="-6313"/>
+ <val o="25bce7" v="-6104"/>
+ <val o="25caf8" v="-5750"/>
+ <val o="25d907" v="-5764"/>
+ <val o="25e718" v="-5649"/>
+ <val o="25f527" v="-5249"/>
+ <val o="260338" v="-5562"/>
+ <val o="261149" v="-4875"/>
+ <val o="261f59" v="-4619"/>
+ <val o="262d68" v="-4611"/>
+ <val o="263b83" v="-3619"/>
+ <val o="264986" v="-3467"/>
+ <val o="265795" v="-3564"/>
+ <val o="2665a6" v="-3672"/>
+ <val o="2673b5" v="-3614"/>
+ <val o="2681c6" v="-3621"/>
+ <val o="268fd5" v="-3868"/>
+ <val o="269de6" v="-3969"/>
+ <val o="26abf6" v="-3886"/>
+ <val o="26ba06" v="-4381"/>
+ <val o="26c817" v="-4271"/>
+ <val o="26d62b" v="-3967"/>
+ <val o="26e436" v="-4002"/>
+ <val o="26f247" v="-3562"/>
+ <val o="270057" v="-3874"/>
+ <val o="270e67" v="-3561"/>
+ <val o="271c77" v="-4690"/>
+ <val o="272a87" v="-5196"/>
+ <val o="273897" v="-5211"/>
+ <val o="2746a8" v="-5037"/>
+ <val o="2754b9" v="-4963"/>
+ <val o="2762c7" v="-4048"/>
+ <val o="2770d8" v="-3708"/>
+ <val o="277ee7" v="-3215"/>
+ </par>
+ <par memind="438200" h="3dc1a8de">
+ <val o="0" v="-1103"/>
+ <val o="e08" v="-1286"/>
+ <val o="1c32" v="-1351"/>
+ <val o="2a3c" v="-1427"/>
+ <val o="3835" v="-1246"/>
+ <val o="4645" v="-1101"/>
+ <val o="5455" v="-909"/>
+ <val o="6265" v="-1472"/>
+ <val o="7075" v="-1523"/>
+ <val o="7e85" v="-1435"/>
+ <val o="8c96" v="-1784"/>
+ <val o="9aa5" v="-1757"/>
+ <val o="a8b6" v="-1682"/>
+ <val o="b6c5" v="-1745"/>
+ <val o="c4d7" v="-6"/>
+ <val o="d30b" v="-6"/>
+ <val o="e0f6" v="-6"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="-6"/>
+ <val o="11937" v="-6"/>
+ <val o="12746" v="-6"/>
+ <val o="13556" v="-6"/>
+ <val o="14366" v="-6"/>
+ <val o="15181" v="-7"/>
+ <val o="15f85" v="-6"/>
+ <val o="16d95" v="-6"/>
+ <val o="17ba4" v="-6"/>
+ <val o="189b5" v="-6"/>
+ <val o="197c4" v="-6"/>
+ <val o="1a5d5" v="-6"/>
+ <val o="1b3e6" v="-6"/>
+ <val o="1c1f6" v="-6"/>
+ <val o="1d005" v="-6"/>
+ <val o="1de15" v="-6"/>
+ <val o="1ec25" v="-6"/>
+ <val o="1fa36" v="-6"/>
+ <val o="20845" v="-6"/>
+ <val o="21656" v="-6"/>
+ <val o="22465" v="-6"/>
+ <val o="23276" v="-6"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="-6"/>
+ <val o="25ca7" v="-6"/>
+ <val o="26ab7" v="-6"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="-6"/>
+ <val o="294e6" v="-6"/>
+ <val o="2a301" v="-6"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="-6"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="-6"/>
+ <val o="31375" v="-6"/>
+ <val o="3219e" v="-6"/>
+ <val o="32f96" v="-6"/>
+ <val o="33da6" v="-6"/>
+ <val o="34bb6" v="-6"/>
+ <val o="359de" v="-6"/>
+ <val o="367d6" v="-6"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="-6"/>
+ <val o="3bc36" v="-6"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="-6"/>
+ <val o="3e667" v="-6"/>
+ <val o="3f481" v="-6"/>
+ <val o="40285" v="-6"/>
+ <val o="41095" v="-6"/>
+ <val o="41ea5" v="-6"/>
+ <val o="42cb5" v="-6"/>
+ <val o="43ac5" v="-6"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="-6"/>
+ <val o="464f5" v="-6"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="-6"/>
+ <val o="54600" v="-6"/>
+ <val o="55406" v="-6"/>
+ <val o="56215" v="-6"/>
+ <val o="57026" v="-6"/>
+ <val o="57e36" v="-6"/>
+ <val o="58c46" v="-6"/>
+ <val o="59a70" v="-6"/>
+ <val o="5a867" v="-6"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="-6"/>
+ <val o="5eeb8" v="-6"/>
+ <val o="5fcc6" v="-6"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="-6"/>
+ <val o="65f37" v="-6"/>
+ <val o="66d46" v="-6"/>
+ <val o="67b57" v="-6"/>
+ <val o="68967" v="-6"/>
+ <val o="69782" v="-6"/>
+ <val o="6a586" v="-6"/>
+ <val o="6b395" v="-6"/>
+ <val o="6c1a6" v="-6"/>
+ <val o="6cfb5" v="-6"/>
+ <val o="6ddc6" v="-6"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="-6"/>
+ <val o="707f6" v="-6"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="-6"/>
+ <val o="74e47" v="-6"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="-6"/>
+ <val o="7bebf" v="-6"/>
+ <val o="7cccf" v="-6"/>
+ <val o="7dadf" v="-6"/>
+ <val o="7e8fa" v="-6"/>
+ <val o="7f70a" v="-6"/>
+ <val o="8051a" v="-6"/>
+ <val o="8132a" v="-6"/>
+ <val o="8213a" v="-6"/>
+ <val o="82f4a" v="-6"/>
+ <val o="83d5a" v="-6"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="-6"/>
+ <val o="891bb" v="-6"/>
+ <val o="89fca" v="-6"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="-6"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="-6"/>
+ <val o="93a84" v="-6"/>
+ <val o="94885" v="-6"/>
+ <val o="95694" v="-6"/>
+ <val o="964a5" v="-6"/>
+ <val o="972b4" v="-6"/>
+ <val o="980c5" v="-6"/>
+ <val o="98ed4" v="-6"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="-6"/>
+ <val o="9c716" v="-6"/>
+ <val o="9d526" v="-6"/>
+ <val o="9e336" v="-6"/>
+ <val o="9f145" v="-6"/>
+ <val o="9ff56" v="-6"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="-1590"/>
+ <val o="a2986" v="-500"/>
+ <val o="a3795" v="1379"/>
+ <val o="a45a7" v="-45"/>
+ <val o="a53b6" v="-346"/>
+ <val o="a61c7" v="-580"/>
+ <val o="a6fd6" v="-752"/>
+ <val o="a7e00" v="-1367"/>
+ <val o="a8c00" v="-1906"/>
+ <val o="a9a05" v="101"/>
+ <val o="aa815" v="-366"/>
+ <val o="ab625" v="-740"/>
+ <val o="ac435" v="-550"/>
+ <val o="ad245" v="432"/>
+ <val o="ae055" v="1595"/>
+ <val o="aee65" v="275"/>
+ <val o="afc75" v="1019"/>
+ <val o="b0a85" v="3444"/>
+ <val o="b26a6" v="3629"/>
+ <val o="b34b6" v="3203"/>
+ <val o="b42c6" v="215"/>
+ <val o="b50d6" v="380"/>
+ <val o="b5ee7" v="890"/>
+ <val o="b6cf6" v="-446"/>
+ <val o="b7b07" v="-200"/>
+ <val o="b8917" v="-44"/>
+ <val o="b9728" v="-424"/>
+ <val o="ba537" v="-718"/>
+ <val o="bb347" v="946"/>
+ <val o="bc157" v="276"/>
+ <val o="bcf67" v="-944"/>
+ <val o="bdd81" v="3129"/>
+ <val o="beb86" v="453"/>
+ <val o="bf995" v="194"/>
+ <val o="c07a6" v="-246"/>
+ <val o="c15b5" v="-122"/>
+ <val o="c23c6" v="430"/>
+ <val o="c31d5" v="1582"/>
+ <val o="c3fe6" v="720"/>
+ <val o="c4df5" v="1333"/>
+ <val o="c5c06" v="588"/>
+ <val o="c6a16" v="642"/>
+ <val o="c7826" v="1096"/>
+ <val o="c8636" v="313"/>
+ <val o="c9446" v="374"/>
+ <val o="ca256" v="204"/>
+ <val o="cb066" v="692"/>
+ <val o="cbe76" v="-196"/>
+ <val o="ccc87" v="1888"/>
+ <val o="cda96" v="2502"/>
+ <val o="ce8a8" v="1840"/>
+ <val o="cf6b7" v="2437"/>
+ <val o="d04c8" v="1930"/>
+ <val o="d12d7" v="1219"/>
+ <val o="d20e7" v="-250"/>
+ <val o="d2f02" v="-1971"/>
+ <val o="d3d05" v="-1029"/>
+ <val o="d4b15" v="-1072"/>
+ <val o="d5926" v="-388"/>
+ <val o="d6735" v="229"/>
+ <val o="d7546" v="1131"/>
+ <val o="d8355" v="-726"/>
+ <val o="d9166" v="166"/>
+ <val o="d9f75" v="965"/>
+ <val o="dad87" v="2341"/>
+ <val o="dbb97" v="2354"/>
+ <val o="dc9a8" v="2565"/>
+ <val o="dd7b7" v="1136"/>
+ <val o="de5c6" v="367"/>
+ <val o="df3d7" v="173"/>
+ <val o="e01d7" v="156"/>
+ <val o="e0fe5" v="460"/>
+ <val o="e1df5" v="358"/>
+ <val o="e2c04" v="-308"/>
+ <val o="e3a14" v="-1006"/>
+ <val o="e4824" v="93"/>
+ <val o="e5634" v="-723"/>
+ <val o="e6444" v="147"/>
+ <val o="e7255" v="-551"/>
+ <val o="e806f" v="-626"/>
+ <val o="e8e7f" v="2316"/>
+ <val o="e9c8e" v="714"/>
+ <val o="eaa9f" v="600"/>
+ <val o="eb8ae" v="953"/>
+ <val o="ec6bf" v="2267"/>
+ <val o="ed4ce" v="-403"/>
+ <val o="ee2df" v="999"/>
+ <val o="ef0ef" v="475"/>
+ <val o="eff01" v="1663"/>
+ <val o="f0d10" v="829"/>
+ <val o="f1b20" v="1055"/>
+ <val o="f2930" v="-314"/>
+ <val o="f3740" v="1431"/>
+ <val o="f4551" v="1201"/>
+ <val o="f5361" v="1280"/>
+ <val o="f6172" v="1431"/>
+ <val o="f6f80" v="1145"/>
+ <val o="f7d91" v="1635"/>
+ <val o="f8ba1" v="957"/>
+ <val o="f99b1" v="1019"/>
+ <val o="fa7c0" v="1219"/>
+ <val o="fb5d1" v="1143"/>
+ <val o="fc3e0" v="-893"/>
+ <val o="fd1fb" v="-1019"/>
+ <val o="fe00b" v="-1389"/>
+ <val o="fee1c" v="-182"/>
+ <val o="ffc2c" v="-220"/>
+ <val o="100a3b" v="502"/>
+ <val o="10184c" v="940"/>
+ <val o="10265b" v="1719"/>
+ <val o="10346c" v="1592"/>
+ <val o="10427b" v="960"/>
+ <val o="10508d" v="1537"/>
+ <val o="105e9d" v="1177"/>
+ <val o="106cad" v="1337"/>
+ <val o="107abd" v="737"/>
+ <val o="1088cd" v="723"/>
+ <val o="1096de" v="917"/>
+ <val o="10a4ed" v="794"/>
+ <val o="10b2fe" v="1075"/>
+ <val o="10c10d" v="2328"/>
+ <val o="10cf1e" v="1192"/>
+ <val o="10dd2e" v="867"/>
+ <val o="10eb66" v="184"/>
+ <val o="10f94e" v="12"/>
+ <val o="11075e" v="978"/>
+ <val o="11156d" v="256"/>
+ <val o="112388" v="-1007"/>
+ <val o="113187" v="614"/>
+ <val o="113fb0" v="205"/>
+ <val o="114da6" v="195"/>
+ <val o="115bb6" v="316"/>
+ <val o="1169c6" v="1241"/>
+ <val o="1177d6" v="1748"/>
+ <val o="1185e8" v="1046"/>
+ <val o="1193f7" v="1099"/>
+ <val o="11a208" v="309"/>
+ <val o="11b017" v="-202"/>
+ <val o="11be2f" v="-722"/>
+ <val o="11cc37" v="680"/>
+ <val o="11da47" v="440"/>
+ <val o="11e857" v="870"/>
+ <val o="11f667" v="475"/>
+ <val o="120578" v="1"/>
+ <val o="121386" v="1"/>
+ <val o="122196" v="2"/>
+ <val o="122fa6" v="1"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="1"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="-1"/>
+ <val o="128305" v="-1"/>
+ <val o="129115" v="-1"/>
+ <val o="129f25" v="-1"/>
+ <val o="12ad35" v="-1"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="1"/>
+ <val o="12d766" v="1"/>
+ <val o="12e575" v="1"/>
+ <val o="12f386" v="1"/>
+ <val o="130196" v="1"/>
+ <val o="130fa6" v="1"/>
+ <val o="131db7" v="1"/>
+ <val o="132bc5" v="1"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="1959"/>
+ <val o="1774a3" v="1506"/>
+ <val o="1782b3" v="1027"/>
+ <val o="1790c5" v="677"/>
+ <val o="179ed4" v="-759"/>
+ <val o="17ace4" v="-2042"/>
+ <val o="17bafd" v="-2554"/>
+ <val o="17c90f" v="-2178"/>
+ <val o="17d71e" v="-2126"/>
+ <val o="17e52f" v="-2484"/>
+ <val o="17f33f" v="-1980"/>
+ <val o="18014f" v="-1072"/>
+ <val o="180f5f" v="-524"/>
+ <val o="181d6e" v="-1366"/>
+ <val o="182b7f" v="-1753"/>
+ <val o="18398f" v="-893"/>
+ <val o="1847a1" v="-845"/>
+ <val o="1855af" v="-1148"/>
+ <val o="1863c0" v="-2710"/>
+ <val o="1871cf" v="-2297"/>
+ <val o="187fe0" v="-2208"/>
+ <val o="188def" v="-2037"/>
+ <val o="189c00" v="-997"/>
+ <val o="18b80d" v="1048"/>
+ <val o="18c61c" v="-955"/>
+ <val o="18d42c" v="-1334"/>
+ <val o="18e23b" v="-1121"/>
+ <val o="18f04b" v="-1625"/>
+ <val o="18fe5e" v="-1419"/>
+ <val o="190c76" v="-671"/>
+ <val o="191a86" v="-1501"/>
+ <val o="192896" v="-1511"/>
+ <val o="1936a6" v="-1618"/>
+ <val o="1944b7" v="-1037"/>
+ <val o="1952c6" v="-192"/>
+ <val o="1960d7" v="1397"/>
+ <val o="196ee6" v="-627"/>
+ <val o="197cf8" v="-711"/>
+ <val o="198b0f" v="20"/>
+ <val o="19991f" v="-130"/>
+ <val o="19b541" v="-843"/>
+ <val o="19c34d" v="-642"/>
+ <val o="19d15e" v="-320"/>
+ <val o="19df80" v="-210"/>
+ <val o="19ed90" v="295"/>
+ <val o="19eebe" v="417"/>
+ <val o="19fb8e" v="37"/>
+ <val o="1a09a0" v="-2105"/>
+ <val o="1a17ae" v="-2980"/>
+ <val o="1a25be" v="-3329"/>
+ <val o="1a33cd" v="-1430"/>
+ <val o="1a41dd" v="-1986"/>
+ <val o="1a4fed" v="-3570"/>
+ <val o="1a5e08" v="-3230"/>
+ <val o="1a6c05" v="-2288"/>
+ <val o="1a7a15" v="-2846"/>
+ <val o="1a8826" v="-2946"/>
+ <val o="1a9637" v="-2342"/>
+ <val o="1aa445" v="-1719"/>
+ <val o="1ab255" v="-668"/>
+ <val o="1ac065" v="-1761"/>
+ <val o="1ace75" v="-2413"/>
+ <val o="1adc87" v="-1727"/>
+ <val o="1aea96" v="-1832"/>
+ <val o="1af8a7" v="-1889"/>
+ <val o="1b06b7" v="-2346"/>
+ <val o="1b14c6" v="-2176"/>
+ <val o="1c7460" v="374"/>
+ <val o="1c8270" v="-132"/>
+ <val o="1c907e" v="993"/>
+ <val o="1c9e8f" v="-150"/>
+ <val o="1caca2" v="-843"/>
+ <val o="1cbab1" v="-1196"/>
+ <val o="1cc8c1" v="2577"/>
+ <val o="1cd6d0" v="1582"/>
+ <val o="1ce4de" v="909"/>
+ <val o="1cf2f0" v="-1405"/>
+ <val o="1d0109" v="-1597"/>
+ <val o="1d0f06" v="-186"/>
+ <val o="1d1d15" v="-658"/>
+ <val o="1d2b25" v="-679"/>
+ <val o="1d3935" v="89"/>
+ <val o="1d4745" v="680"/>
+ <val o="1d5555" v="1095"/>
+ <val o="1d6366" v="-832"/>
+ <val o="1d7175" v="-785"/>
+ <val o="1d7f86" v="-228"/>
+ <val o="1d8d95" v="-40"/>
+ <val o="1d9ba6" v="-280"/>
+ <val o="1da9b6" v="-697"/>
+ <val o="1db7c7" v="-697"/>
+ <val o="1dc5d5" v="-811"/>
+ <val o="1dd3e6" v="-629"/>
+ <val o="1de1f5" v="-1408"/>
+ <val o="1df006" v="-1666"/>
+ <val o="1dfe16" v="-1574"/>
+ <val o="1e0c26" v="-1928"/>
+ <val o="1e1a36" v="-1970"/>
+ <val o="1e2847" v="-2017"/>
+ <val o="1e3659" v="-1984"/>
+ <val o="1e4467" v="-2007"/>
+ <val o="1e5281" v="-1611"/>
+ <val o="1e6086" v="-1851"/>
+ <val o="1e6e96" v="-1908"/>
+ <val o="1e7ca6" v="-251"/>
+ <val o="1e8ab5" v="-386"/>
+ <val o="1e98c6" v="-121"/>
+ <val o="1ea6d5" v="-365"/>
+ <val o="1eb4e6" v="-313"/>
+ <val o="1ec2f6" v="-506"/>
+ <val o="1ed106" v="-232"/>
+ <val o="1edf16" v="-288"/>
+ <val o="1eed26" v="-121"/>
+ <val o="1efb36" v="-310"/>
+ <val o="1f0946" v="-245"/>
+ <val o="1f1756" v="439"/>
+ <val o="1f2566" v="609"/>
+ <val o="1f3376" v="1078"/>
+ <val o="1f4187" v="2491"/>
+ <val o="1f4f96" v="1327"/>
+ <val o="1f5da7" v="-115"/>
+ <val o="1f6bb6" v="-442"/>
+ <val o="1f79c7" v="203"/>
+ <val o="1f87d6" v="-1439"/>
+ <val o="1f95e7" v="-2019"/>
+ <val o="1fa401" v="-1491"/>
+ <val o="1fb204" v="-1285"/>
+ <val o="1fc016" v="-1309"/>
+ <val o="1fce25" v="-409"/>
+ <val o="1fdc35" v="-162"/>
+ <val o="1fea45" v="90"/>
+ <val o="1ff855" v="319"/>
+ <val o="200665" v="2483"/>
+ <val o="201475" v="357"/>
+ <val o="202286" v="1681"/>
+ <val o="203095" v="1572"/>
+ <val o="203ea5" v="1575"/>
+ <val o="204cb6" v="302"/>
+ <val o="205ac6" v="1076"/>
+ <val o="2068d6" v="1555"/>
+ <val o="2076e6" v="1971"/>
+ <val o="2084f6" v="239"/>
+ <val o="209306" v="-351"/>
+ <val o="20a116" v="-527"/>
+ <val o="20af26" v="-215"/>
+ <val o="20bd37" v="-782"/>
+ <val o="20cb46" v="452"/>
+ <val o="20d957" v="60"/>
+ <val o="20e767" v="-848"/>
+ <val o="20f581" v="-1383"/>
+ <val o="210386" v="-989"/>
+ <val o="211194" v="-325"/>
+ <val o="211fa5" v="-382"/>
+ <val o="212db5" v="60"/>
+ <val o="213bc5" v="884"/>
+ <val o="2149d6" v="659"/>
+ <val o="2157e5" v="-264"/>
+ <val o="2165f6" v="-990"/>
+ <val o="217406" v="289"/>
+ <val o="218217" v="-292"/>
+ <val o="219026" v="-542"/>
+ <val o="219e39" v="366"/>
+ <val o="21ac46" v="909"/>
+ <val o="21ba57" v="992"/>
+ <val o="21c867" v="1808"/>
+ <val o="21d677" v="-1049"/>
+ <val o="21e487" v="543"/>
+ <val o="21f296" v="377"/>
+ <val o="2200a6" v="-619"/>
+ <val o="220eb7" v="-712"/>
+ <val o="221cc6" v="1459"/>
+ <val o="222ad7" v="257"/>
+ <val o="2238e7" v="-696"/>
+ <val o="224701" v="-1085"/>
+ <val o="225505" v="2873"/>
+ <val o="226315" v="421"/>
+ <val o="227125" v="557"/>
+ <val o="227f35" v="1696"/>
+ <val o="228d45" v="2480"/>
+ <val o="229b54" v="-707"/>
+ <val o="22a965" v="-237"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="1730"/>
+ <val o="22d397" v="2990"/>
+ <val o="22e1a6" v="2746"/>
+ <val o="22efb6" v="-174"/>
+ <val o="22fdc7" v="-194"/>
+ <val o="230bd7" v="485"/>
+ <val o="2319e6" v="-729"/>
+ <val o="2327f6" v="70"/>
+ <val o="23361b" v="907"/>
+ <val o="234416" v="1297"/>
+ <val o="235226" v="776"/>
+ <val o="236037" v="123"/>
+ <val o="236e46" v="1557"/>
+ <val o="237c57" v="1208"/>
+ <val o="238a66" v="253"/>
+ <val o="239881" v="508"/>
+ <val o="23a685" v="-274"/>
+ <val o="23b495" v="-571"/>
+ <val o="23c2a4" v="146"/>
+ <val o="23d0b5" v="567"/>
+ <val o="23dec4" v="1222"/>
+ <val o="23ecd5" v="733"/>
+ <val o="23fae4" v="8"/>
+ <val o="2408f6" v="1041"/>
+ <val o="241706" v="3222"/>
+ <val o="242518" v="2576"/>
+ <val o="243325" v="2422"/>
+ <val o="244137" v="-1036"/>
+ <val o="244f46" v="-746"/>
+ <val o="246b66" v="-661"/>
+ <val o="247976" v="45"/>
+ <val o="248786" v="3983"/>
+ <val o="24957e" v="1694"/>
+ <val o="24a38f" v="709"/>
+ <val o="24b19c" v="-844"/>
+ <val o="24bfac" v="-605"/>
+ <val o="24cdbc" v="-661"/>
+ <val o="24dbcd" v="-436"/>
+ <val o="24e9e5" v="-1155"/>
+ <val o="24f808" v="-716"/>
+ <val o="250616" v="-877"/>
+ <val o="251426" v="-1024"/>
+ <val o="252236" v="-7"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="1185"/>
+ <val o="254c67" v="884"/>
+ <val o="255a76" v="1103"/>
+ <val o="256887" v="1789"/>
+ <val o="257697" v="3132"/>
+ <val o="2584a8" v="-4032"/>
+ <val o="2592b6" v="-2114"/>
+ <val o="25a0c7" v="-498"/>
+ <val o="25aed7" v="174"/>
+ <val o="25bce7" v="210"/>
+ <val o="25caf8" v="710"/>
+ <val o="25d907" v="2127"/>
+ <val o="25e718" v="2386"/>
+ <val o="25f527" v="1916"/>
+ <val o="260338" v="53"/>
+ <val o="261149" v="1070"/>
+ <val o="261f59" v="564"/>
+ <val o="262d68" v="-1181"/>
+ <val o="263b83" v="34"/>
+ <val o="264986" v="-847"/>
+ <val o="265795" v="-1318"/>
+ <val o="2665a6" v="-1842"/>
+ <val o="2673b5" v="-1404"/>
+ <val o="2681c6" v="-1129"/>
+ <val o="268fd5" v="-372"/>
+ <val o="269de6" v="269"/>
+ <val o="26abf6" v="572"/>
+ <val o="26ba06" v="1413"/>
+ <val o="26c817" v="1586"/>
+ <val o="26d62b" v="3161"/>
+ <val o="26e436" v="2347"/>
+ <val o="26f247" v="2627"/>
+ <val o="270057" v="2502"/>
+ <val o="270e67" v="2818"/>
+ <val o="271c77" v="158"/>
+ <val o="272a87" v="-545"/>
+ <val o="273897" v="-370"/>
+ <val o="2746a8" v="-624"/>
+ <val o="2754b9" v="-847"/>
+ <val o="2762c7" v="2315"/>
+ <val o="2770d8" v="1099"/>
+ <val o="277ee7" v="-417"/>
+ </par>
+ <par memind="422200" h="3dc1a8de">
+ <val o="0" v="-4307"/>
+ <val o="e08" v="-4169"/>
+ <val o="1c32" v="-4096"/>
+ <val o="2a3c" v="-4087"/>
+ <val o="3835" v="-3963"/>
+ <val o="4645" v="-3969"/>
+ <val o="5455" v="-4411"/>
+ <val o="6265" v="-5358"/>
+ <val o="7075" v="-6317"/>
+ <val o="7e85" v="-7298"/>
+ <val o="8c96" v="-7519"/>
+ <val o="9aa5" v="-7351"/>
+ <val o="a8b6" v="-6890"/>
+ <val o="b6c5" v="-6465"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-7"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="-7"/>
+ <val o="fd17" v="-7"/>
+ <val o="10b27" v="-8"/>
+ <val o="11937" v="-8"/>
+ <val o="12746" v="-8"/>
+ <val o="13556" v="-8"/>
+ <val o="14366" v="-8"/>
+ <val o="15181" v="-9"/>
+ <val o="15f85" v="-8"/>
+ <val o="16d95" v="-8"/>
+ <val o="17ba4" v="-8"/>
+ <val o="189b5" v="-8"/>
+ <val o="197c4" v="-8"/>
+ <val o="1a5d5" v="-9"/>
+ <val o="1b3e6" v="-9"/>
+ <val o="1c1f6" v="-8"/>
+ <val o="1d005" v="-8"/>
+ <val o="1de15" v="-8"/>
+ <val o="1ec25" v="-8"/>
+ <val o="1fa36" v="-8"/>
+ <val o="20845" v="-9"/>
+ <val o="21656" v="-8"/>
+ <val o="22465" v="-8"/>
+ <val o="23276" v="-8"/>
+ <val o="24086" v="-7"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-8"/>
+ <val o="26ab7" v="-8"/>
+ <val o="278c6" v="-8"/>
+ <val o="286d6" v="-8"/>
+ <val o="294e6" v="-9"/>
+ <val o="2a301" v="-9"/>
+ <val o="2b105" v="-8"/>
+ <val o="2bf15" v="-8"/>
+ <val o="2cd25" v="-8"/>
+ <val o="2db35" v="-8"/>
+ <val o="2e946" v="-8"/>
+ <val o="2f755" v="-7"/>
+ <val o="30566" v="-9"/>
+ <val o="31375" v="-8"/>
+ <val o="3219e" v="-8"/>
+ <val o="32f96" v="-8"/>
+ <val o="33da6" v="-8"/>
+ <val o="34bb6" v="-8"/>
+ <val o="359de" v="-8"/>
+ <val o="367d6" v="-8"/>
+ <val o="375e6" v="-8"/>
+ <val o="3840e" v="-7"/>
+ <val o="3921e" v="-7"/>
+ <val o="3a016" v="-7"/>
+ <val o="3ae27" v="-8"/>
+ <val o="3bc36" v="-8"/>
+ <val o="3ca47" v="-7"/>
+ <val o="3d856" v="-8"/>
+ <val o="3e667" v="-8"/>
+ <val o="3f481" v="-9"/>
+ <val o="40285" v="-9"/>
+ <val o="41095" v="-9"/>
+ <val o="41ea5" v="-9"/>
+ <val o="42cb5" v="-9"/>
+ <val o="43ac5" v="-8"/>
+ <val o="448d5" v="-8"/>
+ <val o="456e6" v="-8"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="-7"/>
+ <val o="48f0e" v="-6"/>
+ <val o="49d1d" v="-6"/>
+ <val o="4ab46" v="-7"/>
+ <val o="4b955" v="-7"/>
+ <val o="4c769" v="-6"/>
+ <val o="4d577" v="-7"/>
+ <val o="4e387" v="-7"/>
+ <val o="4f196" v="-7"/>
+ <val o="4ffa6" v="-7"/>
+ <val o="50dd0" v="-7"/>
+ <val o="51bc6" v="-7"/>
+ <val o="529d6" v="-8"/>
+ <val o="537e7" v="-8"/>
+ <val o="54600" v="-9"/>
+ <val o="55406" v="-8"/>
+ <val o="56215" v="-8"/>
+ <val o="57026" v="-8"/>
+ <val o="57e36" v="-8"/>
+ <val o="58c46" v="-8"/>
+ <val o="59a70" v="-8"/>
+ <val o="5a867" v="-7"/>
+ <val o="5b676" v="-7"/>
+ <val o="5c487" v="-6"/>
+ <val o="5d296" v="-7"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="-7"/>
+ <val o="618e7" v="-7"/>
+ <val o="626f7" v="-7"/>
+ <val o="63507" v="-7"/>
+ <val o="64317" v="-7"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-8"/>
+ <val o="66d46" v="-8"/>
+ <val o="67b57" v="-8"/>
+ <val o="68967" v="-8"/>
+ <val o="69782" v="-8"/>
+ <val o="6a586" v="-8"/>
+ <val o="6b395" v="-8"/>
+ <val o="6c1a6" v="-9"/>
+ <val o="6cfb5" v="-8"/>
+ <val o="6ddc6" v="-8"/>
+ <val o="6ebd6" v="-7"/>
+ <val o="6f9e6" v="-8"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="-7"/>
+ <val o="72417" v="-6"/>
+ <val o="73227" v="-6"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="-7"/>
+ <val o="76a63" v="-7"/>
+ <val o="77873" v="-7"/>
+ <val o="78680" v="-6"/>
+ <val o="7948f" v="-7"/>
+ <val o="7a29f" v="-7"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-8"/>
+ <val o="7cccf" v="-8"/>
+ <val o="7dadf" v="-8"/>
+ <val o="7e8fa" v="-8"/>
+ <val o="7f70a" v="-9"/>
+ <val o="8051a" v="-9"/>
+ <val o="8132a" v="-9"/>
+ <val o="8213a" v="-9"/>
+ <val o="82f4a" v="-9"/>
+ <val o="83d5a" v="-8"/>
+ <val o="84b6a" v="-7"/>
+ <val o="8597a" v="-7"/>
+ <val o="8678b" v="-7"/>
+ <val o="8759b" v="-7"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-8"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="-7"/>
+ <val o="8bbeb" v="-7"/>
+ <val o="8c9fc" v="-7"/>
+ <val o="8d80b" v="-7"/>
+ <val o="8e61a" v="-7"/>
+ <val o="8f42a" v="-7"/>
+ <val o="9023a" v="-7"/>
+ <val o="9104a" v="-8"/>
+ <val o="91e5a" v="-7"/>
+ <val o="92c6a" v="-8"/>
+ <val o="93a84" v="-9"/>
+ <val o="94885" v="-8"/>
+ <val o="95694" v="-9"/>
+ <val o="964a5" v="-9"/>
+ <val o="972b4" v="-8"/>
+ <val o="980c5" v="-8"/>
+ <val o="98ed4" v="-8"/>
+ <val o="99ce5" v="-8"/>
+ <val o="9aaf5" v="-7"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="-7"/>
+ <val o="a1b77" v="-6324"/>
+ <val o="a2986" v="-3516"/>
+ <val o="a3795" v="-963"/>
+ <val o="a45a7" v="644"/>
+ <val o="a53b6" v="700"/>
+ <val o="a61c7" v="942"/>
+ <val o="a6fd6" v="99"/>
+ <val o="a7e00" v="464"/>
+ <val o="a8c00" v="912"/>
+ <val o="a9a05" v="289"/>
+ <val o="aa815" v="32"/>
+ <val o="ab625" v="46"/>
+ <val o="ac435" v="200"/>
+ <val o="ad245" v="921"/>
+ <val o="ae055" v="744"/>
+ <val o="aee65" v="-561"/>
+ <val o="afc75" v="-68"/>
+ <val o="b0a85" v="31"/>
+ <val o="b26a6" v="142"/>
+ <val o="b34b6" v="-123"/>
+ <val o="b42c6" v="-451"/>
+ <val o="b50d6" v="-729"/>
+ <val o="b5ee7" v="-712"/>
+ <val o="b6cf6" v="-1584"/>
+ <val o="b7b07" v="-1983"/>
+ <val o="b8917" v="-1753"/>
+ <val o="b9728" v="-1758"/>
+ <val o="ba537" v="-1891"/>
+ <val o="bb347" v="-827"/>
+ <val o="bc157" v="-882"/>
+ <val o="bcf67" v="-899"/>
+ <val o="bdd81" v="644"/>
+ <val o="beb86" v="417"/>
+ <val o="bf995" v="524"/>
+ <val o="c07a6" v="400"/>
+ <val o="c15b5" v="372"/>
+ <val o="c23c6" v="484"/>
+ <val o="c31d5" v="591"/>
+ <val o="c3fe6" v="336"/>
+ <val o="c4df5" v="741"/>
+ <val o="c5c06" v="114"/>
+ <val o="c6a16" v="507"/>
+ <val o="c7826" v="-51"/>
+ <val o="c8636" v="136"/>
+ <val o="c9446" v="334"/>
+ <val o="ca256" v="235"/>
+ <val o="cb066" v="116"/>
+ <val o="cbe76" v="-417"/>
+ <val o="ccc87" v="-232"/>
+ <val o="cda96" v="-184"/>
+ <val o="ce8a8" v="-219"/>
+ <val o="cf6b7" v="-134"/>
+ <val o="d04c8" v="-51"/>
+ <val o="d12d7" v="143"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="11"/>
+ <val o="d3d05" v="600"/>
+ <val o="d4b15" v="644"/>
+ <val o="d5926" v="836"/>
+ <val o="d6735" v="1068"/>
+ <val o="d7546" v="1213"/>
+ <val o="d8355" v="-135"/>
+ <val o="d9166" v="-755"/>
+ <val o="d9f75" v="-1498"/>
+ <val o="dad87" v="-2011"/>
+ <val o="dbb97" v="-2561"/>
+ <val o="dc9a8" v="-2338"/>
+ <val o="dd7b7" v="-2895"/>
+ <val o="de5c6" v="-2780"/>
+ <val o="df3d7" v="-2912"/>
+ <val o="e01d7" v="-2913"/>
+ <val o="e0fe5" v="-2832"/>
+ <val o="e1df5" v="-3018"/>
+ <val o="e2c04" v="-4099"/>
+ <val o="e3a14" v="-3979"/>
+ <val o="e4824" v="-3370"/>
+ <val o="e5634" v="-3428"/>
+ <val o="e6444" v="-2551"/>
+ <val o="e7255" v="-2189"/>
+ <val o="e806f" v="-1757"/>
+ <val o="e8e7f" v="-477"/>
+ <val o="e9c8e" v="-709"/>
+ <val o="eaa9f" v="-653"/>
+ <val o="eb8ae" v="-653"/>
+ <val o="ec6bf" v="-468"/>
+ <val o="ed4ce" v="-2112"/>
+ <val o="ee2df" v="-2239"/>
+ <val o="ef0ef" v="-3198"/>
+ <val o="eff01" v="-4087"/>
+ <val o="f0d10" v="-4308"/>
+ <val o="f1b20" v="-4550"/>
+ <val o="f2930" v="-4628"/>
+ <val o="f3740" v="-4301"/>
+ <val o="f4551" v="-4608"/>
+ <val o="f5361" v="-4857"/>
+ <val o="f6172" v="-4613"/>
+ <val o="f6f80" v="-4818"/>
+ <val o="f7d91" v="-4244"/>
+ <val o="f8ba1" v="-3915"/>
+ <val o="f99b1" v="-3805"/>
+ <val o="fa7c0" v="-3025"/>
+ <val o="fb5d1" v="-3034"/>
+ <val o="fc3e0" v="-3295"/>
+ <val o="fd1fb" v="-2680"/>
+ <val o="fe00b" v="-2530"/>
+ <val o="fee1c" v="-2083"/>
+ <val o="ffc2c" v="-1982"/>
+ <val o="100a3b" v="-1790"/>
+ <val o="10184c" v="-1791"/>
+ <val o="10265b" v="-2077"/>
+ <val o="10346c" v="-2724"/>
+ <val o="10427b" v="-4016"/>
+ <val o="10508d" v="-4320"/>
+ <val o="105e9d" v="-4339"/>
+ <val o="106cad" v="-4725"/>
+ <val o="107abd" v="-4338"/>
+ <val o="1088cd" v="-3906"/>
+ <val o="1096de" v="-4119"/>
+ <val o="10a4ed" v="-4322"/>
+ <val o="10b2fe" v="-4345"/>
+ <val o="10c10d" v="-4169"/>
+ <val o="10cf1e" v="-4354"/>
+ <val o="10dd2e" v="-4160"/>
+ <val o="10eb66" v="-4453"/>
+ <val o="10f94e" v="-3895"/>
+ <val o="11075e" v="-3281"/>
+ <val o="11156d" v="-2866"/>
+ <val o="112388" v="-2663"/>
+ <val o="113187" v="-1794"/>
+ <val o="113fb0" v="-1797"/>
+ <val o="114da6" v="-1823"/>
+ <val o="115bb6" v="-1782"/>
+ <val o="1169c6" v="-1585"/>
+ <val o="1177d6" v="-2082"/>
+ <val o="1185e8" v="-2885"/>
+ <val o="1193f7" v="-3558"/>
+ <val o="11a208" v="-4838"/>
+ <val o="11b017" v="-4322"/>
+ <val o="11be2f" v="-5393"/>
+ <val o="11cc37" v="-4456"/>
+ <val o="11da47" v="-4279"/>
+ <val o="11e857" v="-4354"/>
+ <val o="11f667" v="-3900"/>
+ <val o="120578" v="-4"/>
+ <val o="121386" v="-4"/>
+ <val o="122196" v="-4"/>
+ <val o="122fa6" v="-3"/>
+ <val o="123db5" v="-3"/>
+ <val o="124bc5" v="-3"/>
+ <val o="1259d5" v="-2"/>
+ <val o="1267e4" v="-2"/>
+ <val o="127600" v="-2"/>
+ <val o="128305" v="-2"/>
+ <val o="129115" v="-2"/>
+ <val o="129f25" v="-2"/>
+ <val o="12ad35" v="-2"/>
+ <val o="12bb45" v="-1"/>
+ <val o="12c954" v="-2"/>
+ <val o="12d766" v="-2"/>
+ <val o="12e575" v="-3"/>
+ <val o="12f386" v="-2"/>
+ <val o="130196" v="-4"/>
+ <val o="130fa6" v="-3"/>
+ <val o="131db7" v="-3"/>
+ <val o="132bc5" v="-3"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="-6844"/>
+ <val o="1774a3" v="-6848"/>
+ <val o="1782b3" v="-7276"/>
+ <val o="1790c5" v="-6718"/>
+ <val o="179ed4" v="-6044"/>
+ <val o="17ace4" v="-5879"/>
+ <val o="17bafd" v="-6067"/>
+ <val o="17c90f" v="-5484"/>
+ <val o="17d71e" v="-5437"/>
+ <val o="17e52f" v="-5342"/>
+ <val o="17f33f" v="-4981"/>
+ <val o="18014f" v="-5193"/>
+ <val o="180f5f" v="-6321"/>
+ <val o="181d6e" v="-6923"/>
+ <val o="182b7f" v="-7889"/>
+ <val o="18398f" v="-13464"/>
+ <val o="1847a1" v="-13354"/>
+ <val o="1855af" v="-12813"/>
+ <val o="1863c0" v="-11996"/>
+ <val o="1871cf" v="-12436"/>
+ <val o="187fe0" v="-11658"/>
+ <val o="188def" v="-12508"/>
+ <val o="189c00" v="-11965"/>
+ <val o="18b80d" v="-7567"/>
+ <val o="18c61c" v="-8100"/>
+ <val o="18d42c" v="-7676"/>
+ <val o="18e23b" v="-6565"/>
+ <val o="18f04b" v="-6167"/>
+ <val o="18fe5e" v="-5660"/>
+ <val o="190c76" v="-4475"/>
+ <val o="191a86" v="-4306"/>
+ <val o="192896" v="-4252"/>
+ <val o="1936a6" v="-4125"/>
+ <val o="1944b7" v="-4125"/>
+ <val o="1952c6" v="-4498"/>
+ <val o="1960d7" v="-5137"/>
+ <val o="196ee6" v="-5967"/>
+ <val o="197cf8" v="-6354"/>
+ <val o="198b0f" v="-5965"/>
+ <val o="19991f" v="-6615"/>
+ <val o="19b541" v="-6619"/>
+ <val o="19c34d" v="-6199"/>
+ <val o="19d15e" v="-6235"/>
+ <val o="19df80" v="-6313"/>
+ <val o="19ed90" v="-6079"/>
+ <val o="19eebe" v="-6075"/>
+ <val o="19fb8e" v="-2390"/>
+ <val o="1a09a0" v="-2600"/>
+ <val o="1a17ae" v="-3051"/>
+ <val o="1a25be" v="-3338"/>
+ <val o="1a33cd" v="-2238"/>
+ <val o="1a41dd" v="-2137"/>
+ <val o="1a4fed" v="-1546"/>
+ <val o="1a5e08" v="-1670"/>
+ <val o="1a6c05" v="-969"/>
+ <val o="1a7a15" v="-1123"/>
+ <val o="1a8826" v="-1072"/>
+ <val o="1a9637" v="-481"/>
+ <val o="1aa445" v="-537"/>
+ <val o="1ab255" v="-995"/>
+ <val o="1ac065" v="-1819"/>
+ <val o="1ace75" v="-2636"/>
+ <val o="1adc87" v="-2920"/>
+ <val o="1aea96" v="-2594"/>
+ <val o="1af8a7" v="-2898"/>
+ <val o="1b06b7" v="-2173"/>
+ <val o="1b14c6" v="-2092"/>
+ <val o="1c7460" v="311"/>
+ <val o="1c8270" v="399"/>
+ <val o="1c907e" v="3486"/>
+ <val o="1c9e8f" v="3357"/>
+ <val o="1caca2" v="3670"/>
+ <val o="1cbab1" v="3580"/>
+ <val o="1cc8c1" v="5398"/>
+ <val o="1cd6d0" v="5478"/>
+ <val o="1ce4de" v="5618"/>
+ <val o="1cf2f0" v="5659"/>
+ <val o="1d0109" v="5923"/>
+ <val o="1d0f06" v="6651"/>
+ <val o="1d1d15" v="6654"/>
+ <val o="1d2b25" v="6713"/>
+ <val o="1d3935" v="6885"/>
+ <val o="1d4745" v="6893"/>
+ <val o="1d5555" v="6705"/>
+ <val o="1d6366" v="5853"/>
+ <val o="1d7175" v="5545"/>
+ <val o="1d7f86" v="5589"/>
+ <val o="1d8d95" v="-3219"/>
+ <val o="1d9ba6" v="-3620"/>
+ <val o="1da9b6" v="-3623"/>
+ <val o="1db7c7" v="-3472"/>
+ <val o="1dc5d5" v="-3630"/>
+ <val o="1dd3e6" v="-3723"/>
+ <val o="1de1f5" v="-6033"/>
+ <val o="1df006" v="-6752"/>
+ <val o="1dfe16" v="-6647"/>
+ <val o="1e0c26" v="-6778"/>
+ <val o="1e1a36" v="-6794"/>
+ <val o="1e2847" v="-6593"/>
+ <val o="1e3659" v="-6136"/>
+ <val o="1e4467" v="-5653"/>
+ <val o="1e5281" v="-4910"/>
+ <val o="1e6086" v="-4908"/>
+ <val o="1e6e96" v="-4803"/>
+ <val o="1e7ca6" v="-1970"/>
+ <val o="1e8ab5" v="-1820"/>
+ <val o="1e98c6" v="-1821"/>
+ <val o="1ea6d5" v="-2271"/>
+ <val o="1eb4e6" v="-2332"/>
+ <val o="1ec2f6" v="-2646"/>
+ <val o="1ed106" v="-2644"/>
+ <val o="1edf16" v="-2749"/>
+ <val o="1eed26" v="-2728"/>
+ <val o="1efb36" v="-2587"/>
+ <val o="1f0946" v="-2548"/>
+ <val o="1f1756" v="-2377"/>
+ <val o="1f2566" v="-2339"/>
+ <val o="1f3376" v="-2566"/>
+ <val o="1f4187" v="-2784"/>
+ <val o="1f4f96" v="-3191"/>
+ <val o="1f5da7" v="-3581"/>
+ <val o="1f6bb6" v="-3591"/>
+ <val o="1f79c7" v="-3124"/>
+ <val o="1f87d6" v="-3337"/>
+ <val o="1f95e7" v="-3142"/>
+ <val o="1fa401" v="-2806"/>
+ <val o="1fb204" v="-2480"/>
+ <val o="1fc016" v="-2497"/>
+ <val o="1fce25" v="-2171"/>
+ <val o="1fdc35" v="-2133"/>
+ <val o="1fea45" v="-2159"/>
+ <val o="1ff855" v="-2500"/>
+ <val o="200665" v="-2395"/>
+ <val o="201475" v="-3469"/>
+ <val o="202286" v="-4512"/>
+ <val o="203095" v="-5355"/>
+ <val o="203ea5" v="-5915"/>
+ <val o="204cb6" v="-5771"/>
+ <val o="205ac6" v="-5287"/>
+ <val o="2068d6" v="-5386"/>
+ <val o="2076e6" v="-5976"/>
+ <val o="2084f6" v="-6100"/>
+ <val o="209306" v="-6742"/>
+ <val o="20a116" v="-6312"/>
+ <val o="20af26" v="-5533"/>
+ <val o="20bd37" v="-5455"/>
+ <val o="20cb46" v="-4630"/>
+ <val o="20d957" v="-4348"/>
+ <val o="20e767" v="-4046"/>
+ <val o="20f581" v="-3855"/>
+ <val o="210386" v="-3519"/>
+ <val o="211194" v="-3131"/>
+ <val o="211fa5" v="-3014"/>
+ <val o="212db5" v="-2904"/>
+ <val o="213bc5" v="-2826"/>
+ <val o="2149d6" v="-3680"/>
+ <val o="2157e5" v="-4507"/>
+ <val o="2165f6" v="-5844"/>
+ <val o="217406" v="-6195"/>
+ <val o="218217" v="-6165"/>
+ <val o="219026" v="-6142"/>
+ <val o="219e39" v="-6223"/>
+ <val o="21ac46" v="-5938"/>
+ <val o="21ba57" v="-5926"/>
+ <val o="21c867" v="-5557"/>
+ <val o="21d677" v="-6240"/>
+ <val o="21e487" v="-5750"/>
+ <val o="21f296" v="-5772"/>
+ <val o="2200a6" v="-5468"/>
+ <val o="220eb7" v="-5393"/>
+ <val o="221cc6" v="-4543"/>
+ <val o="222ad7" v="-3876"/>
+ <val o="2238e7" v="-3622"/>
+ <val o="224701" v="-3292"/>
+ <val o="225505" v="-1681"/>
+ <val o="226315" v="-2082"/>
+ <val o="227125" v="-2043"/>
+ <val o="227f35" v="-1675"/>
+ <val o="228d45" v="-1785"/>
+ <val o="229b54" v="-3494"/>
+ <val o="22a965" v="-4080"/>
+ <val o="22b776" v="-4454"/>
+ <val o="22c586" v="-4816"/>
+ <val o="22d397" v="-4405"/>
+ <val o="22e1a6" v="-4620"/>
+ <val o="22efb6" v="-4820"/>
+ <val o="22fdc7" v="-4643"/>
+ <val o="230bd7" v="-4435"/>
+ <val o="2319e6" v="-5397"/>
+ <val o="2327f6" v="-5558"/>
+ <val o="23361b" v="-5883"/>
+ <val o="234416" v="-5207"/>
+ <val o="235226" v="-5203"/>
+ <val o="236037" v="-5253"/>
+ <val o="236e46" v="-4342"/>
+ <val o="237c57" v="-4194"/>
+ <val o="238a66" v="-3991"/>
+ <val o="239881" v="-3195"/>
+ <val o="23a685" v="-3328"/>
+ <val o="23b495" v="-3191"/>
+ <val o="23c2a4" v="-2966"/>
+ <val o="23d0b5" v="-2959"/>
+ <val o="23dec4" v="-2916"/>
+ <val o="23ecd5" v="-3620"/>
+ <val o="23fae4" v="-4562"/>
+ <val o="2408f6" v="-5013"/>
+ <val o="241706" v="-5793"/>
+ <val o="242518" v="-6605"/>
+ <val o="243325" v="-6787"/>
+ <val o="244137" v="-6732"/>
+ <val o="244f46" v="-6435"/>
+ <val o="246b66" v="-6415"/>
+ <val o="247976" v="-6261"/>
+ <val o="248786" v="-5371"/>
+ <val o="24957e" v="-5703"/>
+ <val o="24a38f" v="-5668"/>
+ <val o="24b19c" v="-5810"/>
+ <val o="24bfac" v="-5495"/>
+ <val o="24cdbc" v="-5368"/>
+ <val o="24dbcd" v="-4539"/>
+ <val o="24e9e5" v="-4003"/>
+ <val o="24f808" v="-3487"/>
+ <val o="250616" v="-3597"/>
+ <val o="251426" v="-3575"/>
+ <val o="252236" v="-3422"/>
+ <val o="253047" v="-3610"/>
+ <val o="253e56" v="-4069"/>
+ <val o="254c67" v="-4209"/>
+ <val o="255a76" v="-4977"/>
+ <val o="256887" v="-5845"/>
+ <val o="257697" v="-5662"/>
+ <val o="2584a8" v="-15155"/>
+ <val o="2592b6" v="-8621"/>
+ <val o="25a0c7" v="-4609"/>
+ <val o="25aed7" v="-6329"/>
+ <val o="25bce7" v="-6120"/>
+ <val o="25caf8" v="-5819"/>
+ <val o="25d907" v="-5800"/>
+ <val o="25e718" v="-5627"/>
+ <val o="25f527" v="-5318"/>
+ <val o="260338" v="-5543"/>
+ <val o="261149" v="-4916"/>
+ <val o="261f59" v="-4589"/>
+ <val o="262d68" v="-4670"/>
+ <val o="263b83" v="-3694"/>
+ <val o="264986" v="-3491"/>
+ <val o="265795" v="-3582"/>
+ <val o="2665a6" v="-3683"/>
+ <val o="2673b5" v="-3608"/>
+ <val o="2681c6" v="-3681"/>
+ <val o="268fd5" v="-3850"/>
+ <val o="269de6" v="-3923"/>
+ <val o="26abf6" v="-3955"/>
+ <val o="26ba06" v="-4467"/>
+ <val o="26c817" v="-4257"/>
+ <val o="26d62b" v="-3915"/>
+ <val o="26e436" v="-3897"/>
+ <val o="26f247" v="-3531"/>
+ <val o="270057" v="-3798"/>
+ <val o="270e67" v="-3628"/>
+ <val o="271c77" v="-4540"/>
+ <val o="272a87" v="-5171"/>
+ <val o="273897" v="-5038"/>
+ <val o="2746a8" v="-5028"/>
+ <val o="2754b9" v="-5029"/>
+ <val o="2762c7" v="-3993"/>
+ <val o="2770d8" v="-3551"/>
+ <val o="277ee7" v="-3206"/>
+ </par>
+ <par memind="674601" h="3dc1a7e0">
+ <val o="0" v="22123:137:88:76:103:69:89:6047:6571:2134:6414:2223:2727.231:1435.675:5.979:0.067:0:4171:41039:29052:42104:12218:24721:13504:8975:11153:2990:8665:9759:11742"/>
+ </par>
+ <par memind="673801" h="3dc1a7e0">
+ <val o="0" v="0:0:0:0:0:0:0:2472:22505:25160:16425:30012:23514.229:11675.362:9.272:0.416:0:6491:3221:2867:4204:22822:3047:6263:15342:9785:32424:23346:21578:23508"/>
+ </par>
+ <par memind="673401" h="3dc1a7e0">
+ <val o="0" v="72898:191:188:176:178:174:181:10441:14079:1360:46667:74131:80996.13:50324.326:32.188:0.038:0:44027:200289:109216:52461:12951:75896:69196:104852:117036:96903:120714:124308:96207"/>
+ </par>
+ <par memind="673001" h="3dc1a7e0">
+ <val o="0" v="0:0:0:0:0:0:0:3476:3226:5597:4853:0:0:0:0.001:0.137:0:0:0:0:0:50735:59205:0:0:0:0:0:0:0"/>
+ </par>
+ <par memind="26274601" h="3dc1a7e0">
+ <val o="0" v="0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::0::6::13::20::27::32::34::41::48::54::61::68::75::82::89::96::103::110::110::111::116::119::123::129"/>
+ <val o="2a300" v="0::5::5::7::11::12::12::17::24::30::37::44::51::58::65::69::71::71::71::73::75::76::76::81::0::6::13::20::27::34::40::44::50::::51::51::51::51::51::51::51::51::51::51::54::60::63::69::0"/>
+ <val o="55410" v="6::13::20::27::34::38::44::46::46::47::52::58::65::66::66::67::69::69::70::76::83::89::96::0::5::12::19::25::30::31::35::37::37::37::37::38::44::45::45::45::45::45::45::48::51::56::62::0"/>
+ <val o="7f710" v="6::14::21::28::35::42::47::50::50::50::52::59::65::69::72::74::75::75::75::75::78::79::82::0::7::14::21::28::34::38::44::45::45::49::56::63::70::76::80::835::1675::2038::2039::2856::3158::3607::4431::0"/>
+ <val o="a9a10" v="629::797::1456::2382::2476::2477::2821::2821::2821::::2821::2821::2856::2865::2865::3049::3223::3267::3532::4304::5147::5147::5449::0::101::102::252::592::605::605::605::605::612::612::612::612::612::612::612::679::767::767::767::767::767::767::910::0::1158"/>
+ <val o="d4b20" v="2289::2701::3076::3076::3385::3904::3904::3904::3904::3904::3904::3904::3904::3904::3904::3911::4023::4599::5237::5494::5780::6072::0::622::622::622::622::622::716::819::819::819::819::819::819::870::870::870::870::870::870::870::870::870::870::1024::0::1127"/>
+ <val o="fee20" v="1954::2173::2377::2377::2377::2377::2377::2377::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2384::2400::2400::0::163::163::163::163::163::163::163::163::204::330::751::1400::1433::1433::1433::1435.1::1435.1::1435.1::1435.1::1435.1::1435.144::1435.375::1435.381::0::1.179"/>
+ <val o="129120" v="2.486::3.869::5.278::5.809::5.811::5.811::5.811::5.843::5.967::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.969::5.969::0::0::0::0::0::0::0::0::0::0::0::0.001::0.014::0.032::0.04::0.046::0.049::0.05::0.05::0.05::0.05::0.05::0.05::0.053::0::0.005"/>
+ <val o="153420" v="0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.009::0.009::0.009::0.009::0.009::0.009::0.014::0::0.004::0.02::0.031::0.042::0.044::0.044::0.044::0.044::0.044::0.044::0.044::0.047::0.05::0.051::0.054::0.054::0.054::0::0::0::0::175::1878::0::2303"/>
+ <val o="17d720" v="5016::7889::10825::12785::13428::14568::16281::17870::18757::19673::22314::25317::28017::30611::32571::::33078::33570::34865::36124::37670::39908::0::978::2540::4236::5992::6773::6818::6915::7643::8510::8618::::9354::10334::10857::11190::11387::11387::12818::15547::19011::21077::22610::25682::0::2682::5757::9094"/>
+ <val o="1a9640" v="12439::14810::16426::18172::20462::22851::24957::26912::29200::31789"/>
+ <val o="1c7460" v="8197::8264::8365::8365::8996::9996::10570::10570::10570::10807::0::388::776::1655::2374::2391::2391::2429::3332::3677::3768::3851::4294::4930::5847::6625::7852::9492::11328::13376::15620::17946::20170::22469::0::1979::4179::4817::5302::5612::5802::6075::6787::7172::7489::7668::7867::8184"/>
+ <val o="1f1760" v="8270::8270::8270::8270::8270::8279::8425::8766::9261::11379::0::967::2232::3224::3584::3708::3742::4192::4373::4379::4379::4379::4379::4379::4379::4468::4816::5111::5533::6393::6740::7394::7394::7988::0::1479::2407::2907::3341::3347::3347::3522::4521::4702::5104::5399::6511::6511"/>
+ <val o="21ba60" v="6511::6511::7554::8046::8046::8084::8781::9437::9437::10034::0::258::258::258::258::258::303::541::1097::1122::1122::1122::1122::1397::1429::2052::2638::2638::2638::2638::2638::2779::2779::2779::0::211::716::993::993::993::993::1058::1060::1060::1060::1060::1123::1640"/>
+ <val o="246b70" v="3280::3952::3962::3962::3962::4297::5586::6998::7956::0::492::1570::2683::3585::3615::3618::3659::3659::3659::3659::3973::6767::8644::8717::8718::8718::8718::8718::8718::8718::8898::8898::9205::0::502::1825::3722::5758::7237::8159::8226::8226::8226::8226::8226::8226::8226::8226"/>
+ <val o="270e70" v="8226::8240::8504::8980::9466::10308::10666::10666::10739"/>
+ </par>
+ <par memind="26273801" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::0"/>
+ <val o="a9a10" v="273::304::304::304::392::1467::1961::2735::4511::::12114::16337::18252::18452::19051::20724::21115::21611::21616::21616::21647::22460::22505::0::1428::1786::1821::1821::2100::3116::4606::5700::6263::7232::8321::9202::9706::10109::10567::11827::12356::14818::17416::20186::22628::24467::25160::0::16"/>
+ <val o="d4b20" v="16::16::18::761::2317::2345::3031::5010::7681::10719::13491::14079::14541::14788::15028::15551::16182::16182::16327::16351::16394::16424::0::1254::2521::3304::4214::6189::8542::8884::9714::10907::12447::13604::14407::14928::16855::18323::20016::22306::23952::25511::26700::27858::29512::30012::0::0"/>
+ <val o="fee20" v="14::14::16::848::2512::4114::5556::7070::7967::9424::10812::11722::12829::13950::15033::17095::19423::20670::21129::21828::22608::23444::0::1024::1508::1786::1985::2951::4900::6589::8053::8849::8929::8929::8929::9502::10380::11200::11669.43::11670.714::11671.501::11673.236::11674.324::11674.616::11674.887::11675.345::0::0"/>
+ <val o="129120" v="0::0::0::0::0.632::1.57::2.787::4.389::5.353::6.676::7.825::8.473::9.059::9.07::9.083::9.113::9.149::9.186::9.222::9.254::9.263::9.267::0::0.054::0.078::0.094::0.113::0.149::0.2::0.229::0.234::0.241::0.244::0.245::0.245::0.245::0.245::0.245::0.246::0.276::0.309::0.348::0.383::0.408::0.415::0.416::0::0.022"/>
+ <val o="153420" v="0.031::0.032::0.033::0.045::0.076::0.1::0.121::0.161::0.197::0.227::0.252::0.257::0.264::0.275::0.295::0.315::0.322::0.329::0.332::0.348::0.357::0.357::0::0::0::0::0::0::0.015::0.051::0.062::0.068::0.079::0.091::0.094::0.094::0.097::0.108::0.125::0.161::1425::3563::5087::6081::6491::6491::0::0"/>
+ <val o="17d720" v="0::0::0::0::3::4::17::17::17::17::83::83::83::83::83::::2815::3221::3221::3221::3221::3221::0::0::0::0::0::0::503::2124::2124::2135::2187::::2220::2220::2220::2220::2231::2857::2867::2867::2867::2867::2867::2867::0::0::0::0"/>
+ <val o="1a9640" v="0::0::0::0::5::5::5::5::5::5"/>
+ <val o="1c7460" v="14139::14218::14538::16467::16493::16493::17913::20388::22503::22822::0::242::242::242::242::473::1614::2783::2783::2785::3043::3046::3046::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::0::0::0::101::101::101::155::155::155::155::155::158::158::158"/>
+ <val o="1f1760" v="303::689::1267::3291::5362::5964::5964::6205::6263::6263::0::67::78::78::78::96::279::1257::2169::3382::5628::7692::9144::9800::11410::13193::13770::14500::14502::14526::14528::14693::15337::15342::0::0::128::128::128::631::1960::2834::2847::2994::3445::3445::3445::4010"/>
+ <val o="21ba60" v="5304::6802::7188::7304::7777::8119::8119::8238::9731::9785::0::3202::5137::5593::6304::8577::12322::12561::12561::13960::16533::20127::22841::22863::23106::23247::23247::24987::26402::27590::28075::29263::31438::32325::0::171::171::200::344::1476::2425::3387::4145::5875::9210::12291::15144::15144"/>
+ <val o="246b70" v="15144::15144::17267::21864::23232::23346::23346::23346::23346::0::86::86::86::86::188::709::1333::2511::4313::7593::10434::10434::10443::10622::10810::11293::12302::14859::17476::19565::19742::21035::21234::0::13::13::13::13::13::13::216::929::2058::3700::5698::8782::11698::14663"/>
+ <val o="270e70" v="17767::18546::19155::19155::19155::19155::20730::23016::23508"/>
+ </par>
+ <par memind="26273401" h="3dc1a7e0">
+ <val o="0" v="0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::0::8::16::24::32::40::48::56::65::73::81::89::97::105::114::122::131::138::145::152::160::167::175::183"/>
+ <val o="2a300" v="0::8::16::23::31::39::47::55::63::71::79::87::96::104::112::120::128::135::142::150::157::165::172::180::0::8::17::25::34::43::51::58::66::::79::85::92::98::105::111::117::124::131::138::145::153::160::168::0"/>
+ <val o="55410" v="8::16::25::33::41::49::56::64::70::77::84::91::98::105::111::118::125::132::139::147::154::162::170::0::7::16::24::32::40::48::55::63::69::76::82::89::96::103::109::116::122::128::135::143::150::158::166::0"/>
+ <val o="7f710" v="8::17::25::34::43::51::58::66::73::80::87::94::101::108::115::122::129::135::142::150::157::165::172::0::8::17::25::34::42::50::58::65::72::78::85::92::100::107::114::2595::7913::10294::10439::10439::10439::10441::10441::0"/>
+ <val o="a9a10" v="2::4::9::9::9::9::69::181::236::::327::461::720::1393::2215::3059::4593::6342::8041::9944::11561::12314::13166::0::47::47::47::47::47::47::47::47::48::59::87::127::134::135::142::182::537::769::1000::1156::1208::1230::1264::0::0"/>
+ <val o="d4b20" v="0::0::0::0::58::464::1214::2866::5195::7644::10189::13108::15902::18773::21557::24345::28271::32267::36012::39360::42352::44782::0::1215::1879::2581::3232::3730::4627::6845::9426::13213::17460::21812::26408::30878::35346::40061::44776::49145::53501::57575::61429::64968::68029::71154::0::2541"/>
+ <val o="fee20" v="4757::6749::8707::10446::12296::14817::18021::22192::24710::29209::33799::38000::42199::46375::50681::55062::59387::63686::67971::71883::75378::78274::0::1965::3785::5589::7408::9042::10735::13143::16254::20473::25210::29898::34989::39265::43547::47659::50298.816::50302.733::50306.729::50310.326::50313.783::50317.062::50320.016::50322.277::0::1.986"/>
+ <val o="129120" v="3.746::5.427::7.116::8.649::10.225::12.377::14.972::18.155::21.519::24.079::26.789::29.872::32.038::32.075::32.093::32.11::32.132::32.149::32.163::32.173::32.181::32.183::0::0::0::0::0::0::0::0::0::0.001::0.005::0.008::0.012::0.014::0.014::0.014::0.014::0.017::0.023::0.026::0.029::0.032::0.035::0.038::0::0"/>
+ <val o="153420" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.004::0.013::0.023::0.035::0.039::0.04::0.04::0::0::0::0::0::0::0::0::0.011::0.064::0.184::0.299::0.403::0.491::0.587::0.684::0.777::0.882::4649::11369::18384::25539::32098::38189::0::5631"/>
+ <val o="17d720" v="11134::16580::21819::26934::32449::39011::46164::57329::70535::83592::96112::107934::119836::131836::143932::::159972::167838::175759::182940::189261::195260::0::4361::8637::12844::17026::21292::26185::31514::37629::44147::50295::::62972::69142::75490::81871::88411::92634::95263::98136::101493::104338::106264::108086::0::1118::2125::3163"/>
+ <val o="1a9640" v="3972::4424::5117::6670::8682::11273::14036::16800::19585::21687"/>
+ <val o="1c7460" v="12951::12951::12951::12951::12951::12951::12951::12951::12951::12951::0::0::0::0::0::0::0::0::0::0::2097::5658::9307::12837::16437::20072::24855::31120::37813::44635::51509::58224::64519::70460::0::4912::9779::12468::14377::16196::18098::20357::22916::25572::28333::31048::33673::36268"/>
+ <val o="1f1760" v="38769::41197::43617::46222::49307::52694::56229::59586::62790::66147::0::2563::5010::7377::9547::11662::13970::16722::19820::23668::28455::34079::39799::45148::50589::56448::62674::69084::75584::81629::87007::92190::96664::100953::0::3686::6981::10109::13149::16039::19168::23164::28263::34238::40473::46590::52821::58868"/>
+ <val o="21ba60" v="64810::70628::77026::83160::89027::94673::100155::105383::109691::113559::0::1996::3876::5949::7945::9673::11583::15197::19355::23959::28689::33229::37981::42745::47470::52656::58228::63768::69353::74634::79872::84699::88966::93090::0::3272::6519::9646::12665::15529::18785::22767::27361::33026::39197::45634::52231::58688"/>
+ <val o="246b70" v="71623::77897::83661::88919::94509::100226::106004::111517::116497::0::3504::7147::10760::14341::17823::21561::25845::30381::35821::41529::48026::57310::64898::70924::77195::83135::89105::94900::100321::105698::111053::115727::120309::0::3610::7127::10778::14421::18015::21712::25564::29454::33598::37946::42100::46054::49824::53500"/>
+ <val o="270e70" v="57099::61385::66221::71352::76382::81368::85828::89677::93036"/>
+ </par>
+ <par memind="26273001" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::0"/>
+ <val o="a9a10" v="1070::1205::1242::1361::1873::2688::2888::2968::3013::::3093::3165::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::0::504::975::1420::1776::2305::2796::3212::4002::4254::4373::4494::4549::4753::4950::5087::5453::5453::5453::5453::5454::5473::5509::5581::0::581"/>
+ <val o="d4b20" v="1231::1927::2760::3902::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="fee20" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="129120" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.017::0.031::0.048::0.065::0.085::0.105::0.114::0.116::0.116::0.116::0.116::0.116::0.117::0.12::0.123::0.128::0.135::0.135::0.135::0.135::0.135::0.135::0.136::0::0.016"/>
+ <val o="153420" v="0.036::0.054::0.074::0.096::0.119::0.137::0.152::0.165::0.178::0.19::0.204::0.216::0.228::0.237::0.249::0.256::0.256::0.256::0.256::0.256::0.256::0.257::0::0.012::0.018::0.02::0.021::0.025::0.032::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0::0::0::0::0::0::0::0"/>
+ <val o="17d720" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1a9640" v="0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1c7460" v="9208::9490::12579::16633::20164::23882::28334::33713::39220::44909::0::6542::13180::19855::26594::33432::40280::46777::52524::57875::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1f1760" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="21ba60" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="246b70" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="270e70" v="0::0::0::0::0::0::0::0::0"/>
+ </par>
+ <par memind="1314601" h="3dc1a7e0">
+ <val o="0" v="270370"/>
+ </par>
+ <par memind="1313801" h="3dc1a7e0">
+ <val o="0" v="306693"/>
+ </par>
+ <par memind="1313401" h="3dc1a7e0">
+ <val o="0" v="1576111"/>
+ </par>
+ <par memind="1313001" h="3dc1a7e0">
+ <val o="0" v="127098"/>
+ </par>
+ <par memind="52514601" h="3dc1a7e0">
+ <val o="0" v="0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::22123::22129::22136::22143::22150::22156::22158::22166::22173::22180::22186::22193::22200::22207::22214::22221::22228::22235::22235::22236::22241::22244::22247::22254"/>
+ <val o="2a300" v="22261::22267::22267::22269::22273::22274::22274::22280::22287::22294::22301::22308::22315::22322::22329::22333::22335::22335::22335::22336::22338::22339::22339::22344::22351::22358::22365::22372::22379::22386::22391::22395::22402::::22404::22404::22404::22404::22404::22404::22404::22404::22404::22404::22407::22413::22416::22422::22429"/>
+ <val o="55410" v="22436::22443::22450::22457::22464::22468::22475::22477::22477::22478::22483::22489::22495::22497::22497::22498::22499::22499::22500::22507::22513::22520::22526::22533::22538::22545::22552::22559::22564::22564::22569::22571::22572::22572::22572::22573::22579::22580::22580::22580::22580::22580::22580::22583::22585::22590::22596::22603"/>
+ <val o="7f710" v="22610::22617::22624::22632::22639::22645::22650::22653::22653::22653::22655::22662::22669::22672::22675::22677::22678::22678::22678::22678::22682::22683::22686::22693::22701::22708::22715::22722::22728::22732::22738::22740::22740::22744::22751::22758::22765::22770::22775::23529::24370::24733::24734::25551::25853::26301::27126::28742"/>
+ <val o="a9a10" v="29372::29540::30199::31125::31218::31219::31564::31564::31564::::31564::31564::31599::31607::31607::31792::31965::32010::32274::33047::33890::33890::34193::35316::35417::35418::35569::35909::35921::35921::35921::35921::35928::35928::35928::35928::35928::35928::35928::35995::36083::36083::36083::36083::36083::36083::36226::37450::38609"/>
+ <val o="d4b20" v="39740::40151::40527::40527::40836::41356::41356::41356::41356::41356::41356::41356::41356::41356::41356::41363::41476::42051::42690::42946::43231::43524::43865::44488::44488::44488::44488::44488::44582::44685::44685::44685::44685::44685::44685::44736::44736::44736::44736::44736::44736::44736::44736::44736::44736::44890::46089::47216"/>
+ <val o="fee20" v="48043::48262::48466::48466::48466::48466::48466::48466::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48474::48491::48491::48816::48980::48980::48980::48980::48980::48980::48980::48980::49022::49147::49569::50218::50251::50251::50251::50252.91::50252.91::50252.91::50252.91::50252.91::50252.954::50253.185::50253.192::50253.487::50254.667"/>
+ <val o="129120" v="50255.973::50257.356::50258.765::50259.296::50259.299::50259.299::50259.299::50259.332::50259.455::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.457::50259.458::50259.458::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.469::50259.482::50259.5::50259.507::50259.513::50259.516::50259.517::50259.517::50259.517::50259.517::50259.517::50259.517::50259.521::50259.535::50259.54"/>
+ <val o="153420" v="50259.54::50259.54::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.546::50259.546::50259.546::50259.546::50259.547::50259.547::50259.552::50259.557::50259.561::50259.577::50259.588::50259.6::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.604::50259.608::50259.609::50259.612::50259.612::50259.612::50258::50258::50258::50258::50434::52137::54431::56734"/>
+ <val o="17d720" v="59447::62321::65257::67217::67860::69000::70713::72302::73189::74106::76746::79750::82449::85043::87003::::87510::88002::89297::90556::92102::94340::95470::96449::98011::99707::101463::102244::102289::102386::103115::103983::104091::::104826::105806::106330::106662::106859::106859::108290::111019::114483::116549::118083::121154::124524::127207::130282::133619"/>
+ <val o="1a9640" v="136963::139335::140951::142698::144988::147377::149483::151438::153726::156315"/>
+ <val o="1c7460" v="174829::174896::174996::174996::175627::176628::177201::177201::177201::177439::178849::179238::179626::180505::181224::181241::181241::181279::182183::182528::182619::182701::183144::183780::184697::185475::186702::188342::190179::192226::194470::196796::199020::201319::203571::205550::207751::208389::208873::209184::209373::209646::210358::210744::211061::211240::211439::211756"/>
+ <val o="1f1760" v="211843::211843::211843::211843::211843::211852::211998::212339::212833::214951::217077::218045::219309::220302::220662::220786::220819::221269::221451::221458::221458::221458::221458::221458::221458::221547::221895::222189::222611::223471::223818::224472::224473::225066::226054::227533::228461::228962::229396::229401::229401::229577::230576::230758::231159::231454::232566::232566"/>
+ <val o="21ba60" v="232566::232566::233609::234101::234101::234139::234836::235492::235492::236089::237208::237467::237467::237467::237467::237467::237511::237749::238306::238331::238331::238331::238331::238606::238637::239260::239846::239846::239846::239846::239847::239988::239988::239988::240200::240411::240916::241193::241194::241194::241194::241260::241262::241262::241262::241262::241325::241842"/>
+ <val o="246b70" v="243482::244154::244164::244164::244164::244499::245788::247200::248157::248866::249358::250436::251549::252452::252482::252484::252526::252526::252526::252526::252840::255634::257511::257584::257585::257585::257585::257585::257585::257585::257766::257766::258073::258628::259130::260454::262350::264387::265865::266787::266854::266854::266854::266854::266854::266854::266854::266854"/>
+ <val o="270e70" v="266854::266868::267132::267609::268095::268936::269294::269294::269367"/>
+ </par>
+ <par memind="52513801" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::2472"/>
+ <val o="a9a10" v="2745::2776::2776::2776::2864::3939::4434::5207::6983::::14587::18809::20724::20924::21523::23196::23587::24084::24088::24088::24119::24933::24978::24978::26406::26764::26799::26799::27079::28094::29584::30678::31242::32211::33301::34181::34685::35088::35546::36806::37336::39798::42396::45166::47608::49447::50139::50139::50155"/>
+ <val o="d4b20" v="50155::50156::50158::50901::52457::52486::53171::55151::57821::60860::63632::64220::64682::64929::65169::65692::66324::66324::66469::66492::66535::66565::66565::67820::69087::69869::70780::72755::75107::75449::76279::77473::79013::80171::80973::81494::83421::84889::86582::88872::90518::92077::93266::94424::96079::96579::96579::96579"/>
+ <val o="fee20" v="96594::96594::96596::97428::99092::100694::102136::103651::104547::106004::107392::108302::109410::110530::111613::113676::116005::117251::117711::118409::119188::120024::120093::121118::121602::121880::122079::123044::124994::126683::128148::128945::129025::129025::129025::129597::130475::131295::131764.303::131765.588::131766.375::131768.11::131769.198::131769.49::131769.761::131770.219::131770.236::131770.236"/>
+ <val o="129120" v="131770.236::131770.236::131770.236::131770.236::131770.868::131771.806::131773.023::131774.625::131775.589::131776.912::131778.062::131778.709::131779.295::131779.306::131779.319::131779.349::131779.386::131779.423::131779.458::131779.49::131779.499::131779.503::131779.509::131779.564::131779.587::131779.604::131779.623::131779.659::131779.709::131779.738::131779.744::131779.752::131779.755::131779.755::131779.755::131779.755::131779.755::131779.755::131779.756::131779.786::131779.819::131779.858::131779.893::131779.918::131779.926::131779.926::131779.926::131779.949"/>
+ <val o="153420" v="131779.958::131779.959::131779.96::131779.972::131780.003::131780.027::131780.049::131780.089::131780.125::131780.155::131780.179::131780.184::131780.191::131780.202::131780.222::131780.243::131780.251::131780.258::131780.261::131780.277::131780.285::131780.285::131780.288::131780.288::131780.288::131780.288::131780.288::131780.289::131780.303::131780.34::131780.35::131780.356::131780.368::131780.381::131780.384::131780.384::131780.386::131780.398::131780.415::131780.451::133205::135343::136866::137861::138272::138272::138272::138272"/>
+ <val o="17d720" v="138272::138272::138272::138272::138275::138277::138290::138290::138290::138290::138355::138355::138355::138355::138355::::141088::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141997::143618::143618::143629::143681::::143714::143714::143714::143714::143725::144351::144362::144362::144362::144362::144362::144362::144362::144362::144362::144362"/>
+ <val o="1a9640" v="144362::144362::144362::144362::144368::144368::144368::144368::144368::144368"/>
+ <val o="1c7460" v="162707::162786::163107::165035::165062::165062::166481::168956::171072::171391::171391::171634::171634::171634::171634::171865::173006::174175::174175::174177::174435::174438::174438::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174540::174540::174540::174594::174594::174594::174594::174594::174598::174598::174598"/>
+ <val o="1f1760" v="174742::175129::175706::177731::179803::180405::180405::180646::180704::180704::180704::180771::180782::180782::180782::180801::180983::181961::182873::184086::186332::188396::189848::190504::192114::193897::194474::195204::195206::195230::195232::195397::196041::196046::196046::196046::196175::196175::196175::196678::198007::198881::198895::199043::199494::199494::199494::200058"/>
+ <val o="21ba60" v="201353::202851::203237::203353::203825::204167::204167::204286::205778::205833::205833::209036::210970::211426::212138::214410::218156::218395::218395::219795::222368::225963::228676::228698::228941::229082::229082::230822::232237::233425::233910::235098::237273::238160::238259::238431::238431::238460::238604::239735::240685::241648::242406::244137::247471::250551::253404::253404"/>
+ <val o="246b70" v="253404::253404::255527::260124::261492::261606::261606::261606::261606::261606::261692::261692::261692::261692::261794::262315::262939::264118::265921::269200::272041::272041::272049::272229::272417::272900::273909::276466::279084::281173::281349::282642::282841::283185::283198::283198::283198::283198::283198::283198::283402::284114::285244::286886::288884::291968::294884::297849"/>
+ <val o="270e70" v="300954::301733::302341::302341::302341::302341::303915::306201::306693"/>
+ </par>
+ <par memind="52513401" h="3dc1a7e0">
+ <val o="0" v="0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::72898::72906::72914::72922::72931::72938::72946::72955::72963::72972::72979::72987::72995::73004::73012::73021::73029::73037::73045::73052::73060::73067::73074::73083"/>
+ <val o="2a300" v="73092::73100::73108::73116::73124::73131::73139::73147::73155::73164::73172::73180::73189::73197::73205::73213::73221::73228::73235::73242::73250::73258::73265::73273::73281::73290::73298::73307::73316::73324::73333::73341::73349::::73362::73368::73374::73381::73387::73394::73400::73407::73414::73421::73428::73436::73443::73451::73459"/>
+ <val o="55410" v="73467::73476::73484::73492::73501::73508::73516::73523::73529::73536::73543::73550::73557::73564::73571::73578::73585::73592::73599::73607::73614::73622::73630::73639::73647::73655::73663::73672::73680::73687::73694::73702::73709::73715::73721::73728::73735::73742::73748::73755::73762::73769::73776::73783::73791::73798::73806::73814"/>
+ <val o="7f710" v="73823::73831::73840::73849::73858::73866::73874::73881::73888::73895::73902::73909::73917::73924::73931::73938::73945::73952::73959::73966::73973::73980::73988::73996::74005::74014::74022::74031::74039::74047::74055::74062::74069::74076::74084::74091::74098::74105::74112::76593::81912::84293::84438::84438::84438::84439::84440::84440"/>
+ <val o="a9a10" v="84442::84445::84450::84450::84450::84450::84510::84622::84677::::84768::84902::85161::85834::86656::87500::89034::90783::92482::94386::96003::96756::97608::98520::98568::98568::98568::98568::98568::98568::98569::98569::98570::98581::98609::98649::98656::98657::98664::98704::99059::99291::99522::99679::99730::99752::99786::99882::99882"/>
+ <val o="d4b20" v="99882::99882::99882::99882::99940::100346::101096::102749::105078::107527::110072::112991::115786::118656::121441::124228::128154::132149::135895::139243::142235::144665::146550::147766::148430::149132::149783::150281::151178::153396::155977::159764::164011::168363::172959::177429::181897::186612::191328::195697::200054::204127::207981::211520::214581::217705::220682::223224"/>
+ <val o="fee20" v="225440::227431::229389::231128::232979::235501::238705::242877::245395::249894::254484::258685::262884::267059::271365::275747::280072::284371::288656::292567::296062::298958::301678::303643::305464::307268::309087::310721::312414::314823::317933::322153::326889::331577::336668::340944::345227::349338::151978.697::151982.614::151986.61::151990.207::151993.665::151996.943::151999.897::152002.158::152004.207::152006.194"/>
+ <val o="129120" v="152007.954::152009.635::152011.324::152012.857::152014.433::152016.586::152019.181::152022.365::152025.728::152028.288::152030.998::152034.081::152036.247::152036.284::152036.302::152036.319::152036.341::152036.359::152036.372::152036.383::152036.39::152036.393::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.399::152036.404::152036.407::152036.412::152036.414::152036.414::152036.414::152036.414::152036.417::152036.422::152036.425::152036.428::152036.432::152036.435::152036.437::152036.437::152036.437"/>
+ <val o="153420" v="152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.441::152036.45::152036.46::152036.472::152036.476::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.489::152036.543::152036.663::152036.778::152036.883::152036.971::152037.066::152037.164::152037.257::152037.361::356685::363405::370420::377575::384134::390225::396064::401696"/>
+ <val o="17d720" v="407198::412644::417883::422998::428513::435075::442229::453395::466601::479658::492177::504000::515901::527901::539997::::556036::563903::571823::579005::585326::591325::596354::600715::604992::609199::613381::617646::622539::627868::633983::640502::646650::::659328::665498::671845::678227::684766::688990::691619::694492::697849::700694::702620::704442::705572::706691::707697::708736"/>
+ <val o="1a9640" v="709545::709997::710690::712243::714255::716847::719609::722373::725158::727261"/>
+ <val o="1c7460" v="770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::773086::776647::780296::783826::787426::791061::795844::802109::808801::815624::822498::829213::835508::841449::846886::851798::856665::859354::861263::863083::864985::867245::869803::872460::875221::877937::880561::883156"/>
+ <val o="1f1760" v="885657::888085::890505::893110::896194::899581::903116::906473::909677::913034::916082::918646::921093::923460::925630::927744::930053::932806::935904::939753::944540::950163::955884::961233::966673::972533::978758::985168::991668::997713::1003091::1008274::1012749::1017038::1020937::1024624::1027919::1031047::1034087::1036976::1040106::1044102::1049201::1055177::1061411::1067528::1073759::1079806"/>
+ <val o="21ba60" v="1085748::1091566::1097964::1104098::1109965::1115611::1121093::1126321::1130630::1134497::1137973::1139970::1141849::1143923::1145918::1147647::1149557::1153171::1157329::1161934::1166664::1171204::1175957::1180721::1185446::1190632::1196204::1201743::1207328::1212608::1217847::1222674::1226942::1231066::1234878::1238151::1241398::1244525::1247544::1250408::1253663::1257645::1262239::1267905::1274075::1280512::1287109::1293566"/>
+ <val o="246b70" v="1306501::1312775::1318539::1323798::1329387::1335105::1340883::1346396::1351376::1355594::1359099::1362742::1366355::1369936::1373418::1377156::1381440::1385976::1391416::1397124::1403622::1412905::1420494::1426519::1432791::1438731::1444700::1450495::1455916::1461293::1466648::1471323::1475904::1479903::1483514::1487030::1490682::1494324::1497918::1501615::1505468::1509358::1513503::1517850::1522004::1525957::1529728::1533403"/>
+ <val o="270e70" v="1537003::1541289::1546124::1551256::1556286::1561272::1565731::1569581::1572940"/>
+ </par>
+ <par memind="52513001" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::3476"/>
+ <val o="a9a10" v="4546::4682::4719::4838::5350::6165::6365::6445::6490::::6571::6643::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::7208::7679::8124::8480::9010::9501::9918::10708::10960::11079::11200::11255::11459::11656::11793::12159::12159::12159::12159::12160::12179::12215::12287::12302::12884"/>
+ <val o="d4b20" v="13533::14230::15062::16204::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="fee20" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492"/>
+ <val o="129120" v="17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.493::17157.511::17157.525::17157.542::17157.558::17157.579::17157.599::17157.608::17157.611::17157.612::17157.612::17157.612::17157.612::17157.613::17157.616::17157.618::17157.623::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.632::17157.649"/>
+ <val o="153420" v="17157.669::17157.686::17157.706::17157.728::17157.752::17157.771::17157.786::17157.799::17157.812::17157.824::17157.838::17157.85::17157.861::17157.871::17157.883::17157.89::17157.89::17157.89::17157.89::17157.89::17157.89::17157.891::17157.899::17157.911::17157.918::17157.92::17157.921::17157.925::17157.932::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="17d720" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="1a9640" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="1c7460" v="26366::26648::29737::33790::37320::41038::45491::50870::56378::62066::67892::74435::81073::87748::94487::101325::108173::114671::120417::125768::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="1f1760" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="21ba60" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="246b70" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="270e70" v="127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ </par>
+ <par memind="34601" h="3dc1a7e0">
+ <val o="0" v="6094564::6095869::6097433::6099046::6100630::6101960::6103137::6104826::6106487::6108338::6110057::6112087::6114108::6116017::6116635::6116640::6116645::6116648::6116649::6116654::6116661::6116667::6116674::6116681::6116688::6116694::6116701::6116708::6116715::6116721::6116723::6116730::6116738::6116745::6116751::6116757::6116764::6116771::6116779::6116786::6116793::6116799::6116800::6116800::6116805::6116808::6116812::6116819"/>
+ <val o="2a300" v="6116826::6116832::6116832::6116834::6116838::6116839::6116839::6116845::6116852::6116859::6116866::6116873::6116880::6116887::6116893::6116898::6116899::6116899::6116899::6116901::6116902::6116904::6116905::6116910::6116917::6116924::6116931::6116938::6116945::6116952::6116957::6116961::6116968::::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116972::6116978::6116980::6116987::6116994"/>
+ <val o="55410" v="6117001::6117008::6117015::6117022::6117029::6117033::6117039::6117042::6117042::6117044::6117049::6117054::6117061::6117062::6117062::6117063::6117065::6117065::6117066::6117072::6117078::6117084::6117091::6117098::6117103::6117110::6117117::6117124::6117129::6117129::6117134::6117136::6117137::6117137::6117137::6117138::6117144::6117145::6117145::6117145::6117145::6117145::6117145::6117148::6117150::6117154::6117160::6117167"/>
+ <val o="7f710" v="6117174::6117181::6117189::6117196::6117203::6117210::6117216::6117219::6117220::6117220::6117222::6117228::6117235::6117239::6117241::6117244::6117244::6117244::6117244::6117244::6117247::6117248::6117252::6117259::6117266::6117273::6117280::6117287::6117293::6117297::6117303::6117304::6117305::6117309::6117316::6117323::6117330::6117336::6117340::6118095::6118936::6119299::6119300::6120117::6120419::6120867::6121692::6123308"/>
+ <val o="a9a10" v="6123938::6124106::6124765::6125691::6125784::6125785::6126129::6126129::6126129::::6126129::6126129::6126164::6126173::6126173::6126358::6126531::6126576::6126840::6127612::6128455::6128455::6128757::6129880::6129981::6129983::6130133::6130473::6130485::6130485::6130485::6130485::6130493::6130493::6130493::6130493::6130493::6130493::6130493::6130561::6130649::6130649::6130649::6130649::6130649::6130649::6130792::6132016::6133175"/>
+ <val o="d4b20" v="6134306::6134717::6135093::6135093::6135402::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135929::6136041::6136617::6137256::6137512::6137797::6138089::6138431::6139053::6139053::6139053::6139053::6139053::6139147::6139251::6139251::6139251::6139251::6139251::6139251::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139456::6140655::6141782"/>
+ <val o="fee20" v="6142609::6142828::6143032::6143032::6143032::6143032::6143032::6143032::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143039::6143056::6143056::6143382::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143587::6143713::6144135::6144783::6144816::6144816::6144816::144818.2::144818.2::144818.2::144818.2::144818.2::144818.243::144818.474::144818.48::144818.775::144819.955"/>
+ <val o="129120" v="144821.261::144822.644::144824.053::144824.584::144824.587::144824.587::144824.587::144824.62::144824.744::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.756::144824.756::144824.756::144824.756::144824.757::144824.77::144824.788::144824.796::144824.802::144824.805::144824.806::144824.806::144824.806::144824.806::144824.806::144824.806::144824.809::144824.823::144824.828"/>
+ <val o="153420" v="144824.828::144824.828::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.834::144824.834::144824.834::144824.834::144824.835::144824.835::144824.84::144824.845::144824.849::144824.865::144824.876::144824.888::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.892::144824.896::144824.897::144824.9::144824.9::144824.9::6144824::6144824::6144824::6144824::6145000::6146702::6148995::6151298"/>
+ <val o="17d720" v="6154011::6156885::6159821::6161781::6162424::6163565::6165278::6166868::6167755::6168671::6171312::6174315::6177014::6179609::6181568::::6182076::6182567::6183863::6185122::6186668::6188906::6190037::6191016::6192577::6194274::6196029::6196810::6196855::6196952::6197681::6198548::6198657::::6199392::6200372::6200895::6201228::6201425::6201425::6202856::6205585::6209048::6211115::6212648::6215720::6219090::6221773::6224848::6228185"/>
+ <val o="1a9640" v="6231530::6233901::6235517::6237264::6239554::6241943::6244049::6246003::6248291::6250880"/>
+ <val o="1c7460" v="6269393::6269460::6269561::6269561::6270193::6271193::6271766::6271766::6271766::6272003::6273414::6273802::6274190::6275070::6275788::6275805::6275805::6275844::6276747::6277093::6277184::6277267::6277710::6278346::6279262::6280041::6281268::6282908::6284744::6286792::6289036::6291362::6293586::6295884::6298136::6300115::6302316::6302954::6303439::6303749::6303938::6304212::6304924::6305309::6305626::6305804::6306004::6306321"/>
+ <val o="1f1760" v="6306407::6306407::6306407::6306407::6306407::6306417::6306562::6306904::6307399::6309517::6311643::6312611::6313875::6314868::6315228::6315352::6315385::6315835::6316016::6316023::6316023::6316023::6316023::6316023::6316023::6316113::6316460::6316755::6317177::6318036::6318383::6319038::6319038::6319632::6320620::6322099::6323027::6323528::6323962::6323967::6323967::6324143::6325141::6325322::6325724::6326020::6327132::6327132"/>
+ <val o="21ba60" v="6327132::6327132::6328174::6328667::6328667::6328705::6329402::6330058::6330058::6330655::6331774::6332033::6332033::6332033::6332033::6332033::6332078::6332316::6332872::6332897::6332897::6332897::6332897::6333173::6333204::6333827::6334413::6334413::6334413::6334413::6334413::6334554::6334554::6334554::6334765::6334977::6335481::6335759::6335759::6335759::6335759::6335824::6335826::6335826::6335826::6335826::6335889::6336407"/>
+ <val o="246b70" v="6338047::6338719::6338729::6338729::6338729::6339065::6340354::6341766::6342723::6343432::6343924::6345002::6346115::6347018::6347048::6347050::6347091::6347091::6347091::6347091::6347406::6350200::6352077::6352150::6352150::6352150::6352150::6352150::6352150::6352150::6352331::6352331::6352638::6353193::6353695::6355019::6356915::6358952::6360430::6361352::6361420::6361420::6361420::6361420::6361420::6361420::6361420::6361420"/>
+ <val o="270e70" v="6361420::6361434::6361698::6362174::6362660::6363502::6363860::6363860::6363933"/>
+ </par>
+ <par memind="33801" h="3dc1a7e0">
+ <val o="0" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="2a300" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="55410" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="7f710" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88180102::88181176::88181859::88181861::88181894::88181896::88181896::88181896"/>
+ <val o="a9a10" v="88182169::88182200::88182200::88182200::88182288::88183363::88183857::88184631::88186407::::88194010::88198233::88200148::88200348::88200947::88202620::88203011::88203507::88203512::88203512::88203543::88204356::88204401::88204401::88205830::88206188::88206222::88206222::88206502::88207517::88209008::88210102::88210666::88211635::88212724::88213604::88214108::88214512::88214969::88216229::88216759::88219221::88221818::88224589::88227031::88228870::88229563::88229563::88229580"/>
+ <val o="d4b20" v="88229580::88229580::88229582::88230325::88231881::88231910::88232595::88234574::88237245::88240283::88243056::88243643::88244105::88244352::88244593::88245115::88245746::88245746::88245891::88245915::88245959::88245988::88245989::88247244::88248510::88249293::88250203::88252178::88254531::88254874::88255704::88256898::88258438::88259595::88260398::88260919::88262845::88264314::88266006::88268297::88269942::88271502::88272690::88273849::88275503::88276003::88276003::88276003"/>
+ <val o="fee20" v="88276017::88276017::88276019::88276851::88278515::88280118::88281560::88283074::88283971::88285428::88286815::88287726::88288833::88289953::88291037::88293099::88295427::88296674::88297133::88297832::88298612::88299447::88299517::88300541::88301025::88301304::88301503::88302468::88304417::88306106::88307571::88308368::88308448::88308448::88308448::88309021::88309899::88310719::111188.016::111189.3::111190.088::111191.823::111192.91::111193.202::111193.473::111193.931::111193.948::111193.948"/>
+ <val o="129120" v="111193.948::111193.948::111193.948::111193.948::111194.58::111195.519::111196.735::111198.338::111199.302::111200.625::111201.775::111202.422::111203.008::111203.02::111203.032::111203.062::111203.098::111203.135::111203.171::111203.203::111203.212::111203.216::111203.221::111203.276::111203.299::111203.316::111203.335::111203.371::111203.422::111203.452::111203.457::111203.464::111203.468::111203.468::111203.468::111203.468::111203.468::111203.468::111203.469::111203.5::111203.532::111203.571::111203.606::111203.632::111203.639::111203.639::111203.639::111203.661"/>
+ <val o="153420" v="111203.671::111203.671::111203.672::111203.684::111203.715::111203.739::111203.761::111203.801::111203.837::111203.867::111203.891::111203.897::111203.904::111203.915::111203.935::111203.955::111203.962::111203.969::111203.972::111203.988::111203.997::111203.997::111204::111204.001::111204.001::111204.001::111204.001::111204.001::111204.016::111204.052::111204.063::111204.07::111204.081::111204.093::111204.097::111204.097::111204.099::111204.11::111204.128::111204.164::88312628::88314767::88316290::88317284::88317694::88317694::88317694::88317694"/>
+ <val o="17d720" v="88317694::88317694::88317694::88317694::88317698::88317700::88317713::88317713::88317713::88317713::88317778::88317778::88317778::88317778::88317778::::88320511::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88321420::88323042::88323042::88323053::88323105::::88323137::88323137::88323137::88323137::88323148::88323775::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785"/>
+ <val o="1a9640" v="88323785::88323785::88323785::88323785::88323790::88323790::88323790::88323790::88323790::88323790"/>
+ <val o="1c7460" v="88342130::88342209::88342529::88344458::88344485::88344485::88345905::88348379::88350494::88350813::88350813::88351056::88351056::88351056::88351056::88351287::88352428::88353598::88353598::88353601::88353859::88353862::88353862::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353965::88353965::88353965::88354018::88354018::88354018::88354018::88354018::88354021::88354021::88354021"/>
+ <val o="1f1760" v="88354166::88354552::88355130::88357154::88359226::88359828::88359828::88360068::88360126::88360126::88360126::88360194::88360205::88360205::88360205::88360223::88360406::88361385::88362297::88363511::88365757::88367821::88369273::88369929::88371538::88373322::88373899::88374629::88374631::88374655::88374657::88374822::88375466::88375471::88375471::88375471::88375599::88375599::88375599::88376102::88377432::88378306::88378319::88378467::88378917::88378917::88378918::88379482"/>
+ <val o="21ba60" v="88380777::88382275::88382661::88382777::88383250::88383592::88383592::88383711::88385203::88385257::88385257::88388459::88390394::88390850::88391561::88393834::88397579::88397819::88397819::88399218::88401792::88405386::88408100::88408122::88408365::88408505::88408505::88410246::88411660::88412849::88413333::88414521::88416696::88417583::88417683::88417854::88417854::88417883::88418027::88419159::88420108::88421071::88421828::88423559::88426894::88429975::88432828::88432828"/>
+ <val o="246b70" v="88432828::88432828::88434951::88439548::88440916::88441030::88441030::88441030::88441030::88441030::88441116::88441116::88441116::88441116::88441218::88441739::88442363::88443542::88445344::88448624::88451464::88451464::88451473::88451652::88451840::88452323::88453332::88455889::88458507::88460595::88460772::88462065::88462264::88462608::88462622::88462622::88462622::88462622::88462622::88462622::88462826::88463538::88464667::88466310::88468309::88471393::88474308::88477274"/>
+ <val o="270e70" v="88480378::88481157::88481766::88481766::88481766::88481766::88483340::88485626::88486118"/>
+ </par>
+ <par memind="33401" h="3dc1a7e0">
+ <val o="0" v="9437795::9441972::9446144::9450217::9454261::9458184::9462346::9467434::9473186::9480126::9487404::9494779::9501916::9508615::9510621::9510628::9510635::9510642::9510649::9510656::9510663::9510671::9510678::9510687::9510695::9510703::9510712::9510720::9510728::9510736::9510743::9510751::9510760::9510768::9510776::9510784::9510792::9510800::9510809::9510817::9510826::9510833::9510840::9510847::9510855::9510863::9510871::9510879"/>
+ <val o="2a300" v="9510888::9510896::9510904::9510912::9510920::9510928::9510935::9510944::9510952::9510960::9510968::9510976::9510984::9510993::9511001::9511009::9511016::9511023::9511030::9511038::9511045::9511053::9511061::9511069::9511078::9511086::9511095::9511103::9511112::9511121::9511129::9511137::9511144::::9511158::9511165::9511171::9511178::9511184::9511190::9511197::9511203::9511209::9511216::9511223::9511231::9511239::9511247::9511255"/>
+ <val o="55410" v="9511264::9511272::9511280::9511289::9511297::9511305::9511313::9511320::9511327::9511333::9511340::9511347::9511354::9511361::9511368::9511375::9511382::9511389::9511397::9511404::9511412::9511419::9511427::9511435::9511443::9511451::9511460::9511468::9511476::9511484::9511492::9511500::9511506::9511513::9511519::9511526::9511533::9511539::9511546::9511553::9511559::9511565::9511572::9511580::9511587::9511595::9511603::9511611"/>
+ <val o="7f710" v="9511619::9511628::9511637::9511646::9511654::9511662::9511670::9511677::9511684::9511691::9511698::9511705::9511713::9511720::9511727::9511734::9511740::9511747::9511754::9511761::9511769::9511777::9511785::9511794::9511803::9511811::9511820::9511828::9511836::9511844::9511852::9511859::9511866::9511873::9511880::9511888::9511895::9511902::9511909::9514390::9519709::9522089::9522234::9522234::9522234::9522235::9522235::9522235"/>
+ <val o="a9a10" v="9522237::9522240::9522245::9522245::9522245::9522245::9522305::9522417::9522472::::9522564::9522698::9522957::9523630::9524451::9525296::9526830::9528579::9530279::9532182::9533799::9534552::9535404::9536317::9536364::9536364::9536364::9536364::9536364::9536364::9536365::9536365::9536366::9536378::9536405::9536445::9536452::9536454::9536460::9536501::9536855::9537087::9537318::9537474::9537525::9537548::9537581::9537677::9537678"/>
+ <val o="d4b20" v="9537678::9537678::9537678::9537678::9537736::9538143::9538893::9540546::9542875::9545324::9547869::9550788::9553582::9556453::9559237::9562025::9565951::9569947::9573692::9577040::9580032::9582462::9584347::9585562::9586226::9586928::9587579::9588077::9588974::9591192::9593773::9597560::9601808::9606160::9610756::9615226::9619694::9624409::9629124::9633493::9637849::9641922::9645776::9649316::9652378::9655502::9658479::9661021"/>
+ <val o="fee20" v="9663237::9665228::9667187::9668925::9670776::9673297::9676502::9680673::9683191::9687690::9692279::9696481::9700679::9704855::9709161::9713542::9717867::9722167::9726451::9730363::9733859::9736754::9739475::9741440::9743260::9745064::9746883::9748517::9750210::9752619::9755730::9759949::9764686::9769374::9774465::9778741::9783023::9787135::89775.123::89779.04::89783.036::89786.633::89790.091::89793.369::89796.324::89798.585::89800.635::89802.621"/>
+ <val o="129120" v="89804.381::89806.063::89807.752::89809.284::89810.86::89813.012::89815.607::89818.79::89822.154::89824.714::89827.425::89830.508::89832.673::89832.71::89832.728::89832.745::89832.767::89832.785::89832.798::89832.809::89832.817::89832.82::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.826::89832.831::89832.834::89832.838::89832.84::89832.84::89832.84::89832.84::89832.843::89832.848::89832.851::89832.854::89832.858::89832.861::89832.864::89832.864::89832.864"/>
+ <val o="153420" v="89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.868::89832.877::89832.887::89832.899::89832.903::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.916::89832.97::89833.09::89833.204::89833.309::89833.397::89833.492::89833.59::89833.683::89833.788::9794482::9801201::9808217::9815372::9821930::9828022::9833861::9839493"/>
+ <val o="17d720" v="9844996::9850441::9855681::9860795::9866311::9872873::9880027::9891193::9904398::9917454::9929974::9941796::9953698::9965698::9977794::::9993834::10001701::10009621::10016803::10023124::10029123::10034151::10038513::10042789::10046996::10051178::10055443::10060336::10065665::10071780::10078299::10084446::::10097123::10103293::10109641::10116023::10122562::10126785::10129414::10132288::10135645::10138489::10140416::10142238::10143368::10144487::10145494::10146532"/>
+ <val o="1a9640" v="10147341::10147793::10148486::10150039::10152051::10154643::10157406::10160170::10162955::10165058"/>
+ <val o="1c7460" v="10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10210882::10214444::10218093::10221623::10225223::10228858::10233641::10239906::10246598::10253420::10260295::10267010::10273305::10279245::10284682::10289594::10294461::10297150::10299060::10300879::10302781::10305041::10307600::10310256::10313017::10315732::10318357::10320952"/>
+ <val o="1f1760" v="10323453::10325881::10328301::10330906::10333991::10337378::10340913::10344270::10347474::10350831::10353880::10356443::10358890::10361257::10363427::10365542::10367850::10370602::10373700::10377548::10382335::10387959::10393679::10399028::10404469::10410328::10416554::10422964::10429464::10435510::10440887::10446070::10450544::10454833::10458732::10462419::10465714::10468842::10471882::10474772::10477901::10481897::10486997::10492973::10499207::10505324::10511555::10517602"/>
+ <val o="21ba60" v="10523544::10529362::10535760::10541894::10547762::10553407::10558890::10564118::10568426::10572294::10575771::10577767::10579647::10581720::10583716::10585444::10587354::10590968::10595126::10599731::10604460::10609000::10613753::10618516::10623241::10628428::10633999::10639539::10645125::10650405::10655643::10660471::10664738::10668862::10672675::10675947::10679195::10682322::10685340::10688204::10691460::10695443::10700037::10705702::10711873::10718309::10724907::10731364"/>
+ <val o="246b70" v="10744298::10750573::10756336::10761594::10767184::10772901::10778679::10784193::10789173::10793391::10796895::10800538::10804151::10807732::10811214::10814952::10819236::10823772::10829212::10834920::10841418::10850701::10858289::10864315::10870586::10876526::10882496::10888291::10893713::10899090::10904444::10909119::10913700::10917699::10921310::10924826::10928478::10932121::10935715::10939412::10943265::10947154::10951299::10955647::10959802::10963755::10967526::10971201"/>
+ <val o="270e70" v="10974801::10979086::10983922::10989053::10994083::10999069::11003529::11007379::11010738"/>
+ </par>
+ <par memind="33001" h="3dc1a7e0">
+ <val o="0" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="2a300" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="55410" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="7f710" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612587::38613097::38613585::38614490::38614906::38615380::38616053"/>
+ <val o="a9a10" v="38617123::38617258::38617296::38617414::38617926::38618741::38618942::38619021::38619066::::38619147::38619219::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619786::38620257::38620702::38621058::38621587::38622078::38622494::38623284::38623536::38623655::38623776::38623831::38624035::38624232::38624369::38624735::38624735::38624735::38624735::38624737::38624755::38624791::38624863::38624879::38625460"/>
+ <val o="d4b20" v="38626110::38626807::38627639::38628781::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732"/>
+ <val o="fee20" v="38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398"/>
+ <val o="129120" v="229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.399::229734.417::229734.431::229734.448::229734.465::229734.485::229734.505::229734.514::229734.517::229734.517::229734.517::229734.517::229734.517::229734.518::229734.521::229734.523::229734.528::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.537::229734.554"/>
+ </par>
+ </device>
+ </select>
+ </data>
+</electroxml>
diff --git a/result/noent/att5 b/result/noent/att5
new file mode 100644
index 0000000..8768e36
--- /dev/null
+++ b/result/noent/att5
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ATTLIST normId attr NMTOKENS #IMPLIED>
+]>
+<doc>
+ <!-- no normalization -->
+ <norm attr=" "/>
+ <norm attr=" foo bar "/>
+ <norm attr=" foobar"/>
+ <norm attr=" foo bar "/>
+ <norm attr="foobar "/>
+ <norm attr=" &amp; "/>
+ <norm attr=" foo&amp;bar "/>
+ <norm attr=" foobar&amp;"/>
+ <norm attr="&amp;foo bar "/>
+ <norm attr="foobar &amp;"/>
+ <norm attr=" &lt; "/>
+ <norm attr=" foo&lt;bar "/>
+ <norm attr=" foobar&lt;"/>
+ <norm attr="&lt;foo bar "/>
+ <norm attr="foobar &lt;"/>
+ <norm attr=" &#13;&#10;&#9; "/>
+ <!-- normalization -->
+ <normId attr=""/>
+ <normId attr="foo bar"/>
+ <normId attr="foobar"/>
+ <normId attr="foo bar"/>
+ <normId attr="foobar"/>
+ <normId attr="&amp;"/>
+ <normId attr="foo&amp;bar"/>
+ <normId attr="foobar&amp;"/>
+ <normId attr="&amp;foo bar"/>
+ <normId attr="foobar &amp;"/>
+ <normId attr="&lt;"/>
+ <normId attr="foo&lt;bar"/>
+ <normId attr="foobar&lt;"/>
+ <normId attr="&lt;foo bar"/>
+ <normId attr="foobar &lt;"/>
+ <normId attr="&#13;&#10;&#9;"/> <!-- PBM serializing back -->
+</doc>
diff --git a/result/noent/att6 b/result/noent/att6
new file mode 100644
index 0000000..338e6b7
--- /dev/null
+++ b/result/noent/att6
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Invoice xmlns:ccts="urn:oasis:names:tc:ubl:CoreComponentParameters:1.0:0.70" xmlns:cct="urn:oasis:names:tc:ubl:CoreComponentTypes:1.0:0.70" xmlns:cat="urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70" xmlns="urn:oasis:names:tc:ubl:Invoice:1.0:0.70">
+ <cat:ReferencedOrder>
+ <cat:SellersOrderID schemeID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeID" schemeAgencyID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeAgencyID" schemeVersionID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeVersionID" schemeAgencySchemeID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeAgencySchemeID" schemeAgencySchemeAgencyID="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeAgencySchemeAgencyID" schemeDataURI="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeDataURI" schemeURI="pvalue-&gt;ReferencedOrder.SellersOrderID.schemeURI" UID="pvalue-&gt;ReferencedOrder.SellersOrderID.UID" UIDRef="pvalue-&gt;ReferencedOrder.SellersOrderID.UIDRef" UIDRefs="pvalue-&gt;ReferencedOrder.SellersOrderID.UIDRefs0" language="pvalue-&gt;ReferencedOrder.SellersOrderID.language">pvalue-&gt;ReferencedOrder.SellersOrderID</cat:SellersOrderID>
+ </cat:ReferencedOrder>
+</Invoice>
diff --git a/result/noent/att7 b/result/noent/att7
new file mode 100644
index 0000000..a58a04d
--- /dev/null
+++ b/result/noent/att7
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE x [
+<!ELEMENT x (test)*>
+<!ELEMENT test EMPTY>
+<!ATTLIST test att CDATA "attvalue">
+<!ENTITY test.ent "<test/>">
+]>
+<x>
+ <test/>
+ <test/>
+</x>
diff --git a/result/noent/att8 b/result/noent/att8
new file mode 100644
index 0000000..1d807a2
--- /dev/null
+++ b/result/noent/att8
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<ino:response xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" ino:sessionid="556" ino:sessionkey="1590469677"><xql:query>/bsk:DocPart[@docId='20040308152601345236' and @docPartNo=1]</xql:query><ino:message ino:returnvalue="0"><ino:messageline>XQL Request processing</ino:messageline></ino:message><xql:result><bsk:DocPart xmlns:bsk="http://www.heitec.net/sara4/tamino/basket" docId="20040308152601345236" docPartNo="1" ino:id="15290"><bsk:File name="4898WPZEO2M65" size="75195"> </bsk:File></bsk:DocPart></xql:result><ino:message ino:returnvalue="0"><ino:messageline>XQL Request processed</ino:messageline></ino:message></ino:response>
diff --git a/result/noent/att9 b/result/noent/att9
new file mode 100644
index 0000000..e4982a2
--- /dev/null
+++ b/result/noent/att9
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ATTLIST doc a1 NMTOKENS "1 2">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc/>
diff --git a/result/noent/attrib.xml b/result/noent/attrib.xml
new file mode 100644
index 0000000..89a1e57
--- /dev/null
+++ b/result/noent/attrib.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<item title="Icrontic.com - Warning: Breakdancing midget with tourette's syndrome on-board&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;" url="http://www.icrontic.com/" first_time="985034339" last_time="985034339" visits="1"/>
diff --git a/result/noent/badcomment.xml b/result/noent/badcomment.xml
new file mode 100644
index 0000000..6b13c11
--- /dev/null
+++ b/result/noent/badcomment.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo>
+<!-- def='NT-Char'--><!-->Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>-->
+</foo>
diff --git a/result/noent/bigentname.xml b/result/noent/bigentname.xml
new file mode 100644
index 0000000..7e7d9d0
--- /dev/null
+++ b/result/noent/bigentname.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name '"Yes"'>
+<!ENTITY WhatHeSaid "He said &very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name;">
+]>
+<doc>He said "Yes"</doc>
diff --git a/result/noent/bigname.xml b/result/noent/bigname.xml
new file mode 100644
index 0000000..885fd7c
--- /dev/null
+++ b/result/noent/bigname.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name/>
diff --git a/result/noent/bigname2.xml b/result/noent/bigname2.xml
new file mode 100644
index 0000000..a48c359
--- /dev/null
+++ b/result/noent/bigname2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name xmlns:this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix="http://www.example.com/testns/"/>
diff --git a/result/noent/cdata b/result/noent/cdata
new file mode 100644
index 0000000..180ea46
--- /dev/null
+++ b/result/noent/cdata
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<doc>
+<![CDATA[<greeting>Hello, world!</greeting>]]>
+</doc>
diff --git a/result/noent/cdata2 b/result/noent/cdata2
new file mode 100644
index 0000000..b4db791
--- /dev/null
+++ b/result/noent/cdata2
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection>
+ <test><![CDATA[
+ <![CDATA[abc]]]>]&gt;<![CDATA[
+ ]]></test>
+</collection>
diff --git a/result/noent/comment.xml b/result/noent/comment.xml
new file mode 100644
index 0000000..98c5eff
--- /dev/null
+++ b/result/noent/comment.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+<!-- document start -->
+<empty/>
+<!-- document end -->
+</doc>
diff --git a/result/noent/comment2.xml b/result/noent/comment2.xml
new file mode 100644
index 0000000..9e122ec
--- /dev/null
+++ b/result/noent/comment2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- document start -->
+<doc>
+<empty/>
+</doc>
+<!-- document end -->
diff --git a/result/noent/comment3.xml b/result/noent/comment3.xml
new file mode 100644
index 0000000..395f67c
--- /dev/null
+++ b/result/noent/comment3.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+-->
+<doc/>
diff --git a/result/noent/comment4.xml b/result/noent/comment4.xml
new file mode 100644
index 0000000..93282d8
--- /dev/null
+++ b/result/noent/comment4.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of non ascii comments like là et très -->
+<!--à another one -->
+<!-- another one à-->
+<doc/>
diff --git a/result/noent/comment5.xml b/result/noent/comment5.xml
new file mode 100644
index 0000000..398f974
--- /dev/null
+++ b/result/noent/comment5.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+-->
+<doc/>
diff --git a/result/noent/comment6.xml b/result/noent/comment6.xml
new file mode 100644
index 0000000..3e6074e
--- /dev/null
+++ b/result/noent/comment6.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!--
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+-->
+<!DOCTYPE a [
+<!ELEMENT a EMPTY>
+]>
+<a/>
diff --git a/result/noent/dav1 b/result/noent/dav1
new file mode 100644
index 0000000..cbfd4c4
--- /dev/null
+++ b/result/noent/dav1
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema">
+ <D:response>
+ <D:prop>
+ <R:bigbox>
+ <R:BoxType>Box type A</R:BoxType>
+ </R:bigbox>
+ <R:author>
+ <R:Name>J.J. Dingleheimerschmidt</R:Name>
+ </R:author>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:prop>
+ <R:DingALing/>
+ <R:Random/>
+ </D:prop>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ <D:responsedescription> The user does not have access to the DingALing property.
+ </D:responsedescription>
+ </D:response>
+ <D:responsedescription> There has been an access violation error.
+ </D:responsedescription>
+</D:multistatus>
diff --git a/result/noent/dav10 b/result/noent/dav10
new file mode 100644
index 0000000..4b00da4
--- /dev/null
+++ b/result/noent/dav10
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<D:owner xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
+</D:owner>
diff --git a/result/noent/dav11 b/result/noent/dav11
new file mode 100644
index 0000000..8ac23d6
--- /dev/null
+++ b/result/noent/dav11
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<D:prop xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:lockdiscovery>
+ <D:activelock>
+ <D:locktype>write</D:locktype>
+ <D:lockscope>exclusive</D:lockscope>
+ <D:addlocks/>
+ <D:owner>
+ <D:href>
+ http://www.ics.uci.edu/~ejw/contact.html
+ </D:href>
+ </D:owner>
+ <D:timeout>Second-604800</D:timeout>
+ <D:locktoken>
+ <D:href>
+ opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
+ </D:href>
+ </D:locktoken>
+ </D:activelock>
+ </D:lockdiscovery>
+</D:prop>
diff --git a/result/noent/dav12 b/result/noent/dav12
new file mode 100644
index 0000000..d8d03fe
--- /dev/null
+++ b/result/noent/dav12
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<D:href xmlns:D="http://www.ietf.org/standards/dav/">http://www.ics.uci.edu/~ejw/contact.html</D:href>
diff --git a/result/noent/dav13 b/result/noent/dav13
new file mode 100644
index 0000000..f44ae38
--- /dev/null
+++ b/result/noent/dav13
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:href>
+ http://webdav.sb.aol.com/workspace/webdav/proposal.doc
+ </D:href>
+ <D:href>
+ http://webdav.sb.aol.com/workspace/webdav/
+ </D:href>
+ <D:status>HTTP/1.1 202 Accepted</D:status>
+ </D:response>
+ <D:response>
+ <D:href>http://foo.bar/blah</D:href>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/noent/dav15 b/result/noent/dav15
new file mode 100644
index 0000000..b80802e
--- /dev/null
+++ b/result/noent/dav15
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<D:prop xmlns:D="http://www.ietf.org/standards/dav/" xmlns:F="http://www.foocorp.com/Project/">
+ <D:Source>
+ <D:link>
+ <F:projfiles>Source</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/main.c</D:dst>
+ </D:link>
+ <D:link>
+ <F:projfiles>Library</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/main.lib</D:dst>
+ </D:link>
+ <D:link>
+ <F:projfiles>Makefile</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/makefile</D:dst>
+ </D:link>
+ </D:Source>
+</D:prop>
diff --git a/result/noent/dav16 b/result/noent/dav16
new file mode 100644
index 0000000..9a7dc36
--- /dev/null
+++ b/result/noent/dav16
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<D:propfind xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:prop>
+ <lockdiscovery/>
+ </D:prop>
+</D:propfind>
diff --git a/result/noent/dav17 b/result/noent/dav17
new file mode 100644
index 0000000..1137662
--- /dev/null
+++ b/result/noent/dav17
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:prop>
+ <D:lockdiscovery>
+ <D:activelock>
+ <D:locktype>write</D:locktype>
+ <D:lockscope>exclusive</D:lockscope>
+ <D:addlocks>
+ <D:href>http://foo.com/doc/</D:href>
+ </D:addlocks>
+ <D:owner>Jane Smith</D:owner>
+ <D:timeout>Infinite</D:timeout>
+ <D:locktoken>
+ <D:href>iamuri:unique!!!!!</D:href>
+ </D:locktoken>
+ </D:activelock>
+ </D:lockdiscovery>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/noent/dav18 b/result/noent/dav18
new file mode 100644
index 0000000..3de1c19
--- /dev/null
+++ b/result/noent/dav18
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<D:propfind xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:prop>
+ <supportedlock/>
+ </D:prop>
+</D:propfind>
diff --git a/result/noent/dav19 b/result/noent/dav19
new file mode 100644
index 0000000..9535ffc
--- /dev/null
+++ b/result/noent/dav19
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:prop>
+ <D:supportedlock>
+ <D:LockEntry>
+ <D:locktype>Write</D:locktype>
+ <D:lockscope>Exclusive</D:lockscope>
+ </D:LockEntry>
+ <D:LockEntry>
+ <D:locktype>Write</D:locktype>
+ <D:lockscope>Shared</D:lockscope>
+ </D:LockEntry>
+ </D:supportedlock>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/noent/dav2 b/result/noent/dav2
new file mode 100644
index 0000000..f831b4b
--- /dev/null
+++ b/result/noent/dav2
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<S:multistatus xmlns:S="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema/">
+ <S:response>
+ <S:href>http://www.foo.bar/container/</S:href>
+ <S:prop>
+ <R:bigbox>
+ <R:BoxType>Box type A</R:BoxType>
+ </R:bigbox>
+ <R:author>
+ <R:Name>Hadrian</R:Name>
+ </R:author>
+ </S:prop>
+ <S:status>HTTP 1.1 200 OK</S:status>
+ </S:response>
+ <S:response>
+ <S:href>http://www.foo.bar/container/index.html</S:href>
+ <S:prop>
+ <R:bigbox>
+ <R:BoxType>Box type B</R:BoxType>
+ </R:bigbox>
+ </S:prop>
+ <S:status>HTTP 1.1 200 OK</S:status>
+ </S:response>
+</S:multistatus>
diff --git a/result/noent/dav3 b/result/noent/dav3
new file mode 100644
index 0000000..986b3fe
--- /dev/null
+++ b/result/noent/dav3
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema/">
+ <D:response>
+ <D:href>http://www.foo.bar/container/</D:href>
+ <D:prop>
+ <R:bigbox/>
+ <R:author/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:href>http://www.foo.bar/container/index.html</D:href>
+ <D:prop>
+ <R:bigbox/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/noent/dav4 b/result/noent/dav4
new file mode 100644
index 0000000..9ab7ceb
--- /dev/null
+++ b/result/noent/dav4
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<D:propertyupdate xmlns:D="http://www.ietf.org/standards/dav/" xmlns:Z="http://www.w3.com/standards/z39.50/">
+ <D:set>
+ <D:prop>
+ <Z:authors>
+ <Z:Author>Jim Whitehead</Z:Author>
+ <Z:Author>Roy Fielding</Z:Author>
+ </Z:authors>
+ </D:prop>
+ </D:set>
+ <D:remove>
+ <D:prop>
+ <Z:Copyright-Owner/>
+ </D:prop>
+ </D:remove>
+</D:propertyupdate>
diff --git a/result/noent/dav5 b/result/noent/dav5
new file mode 100644
index 0000000..68ebab9
--- /dev/null
+++ b/result/noent/dav5
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:Z="http://www.w3.com/standards/z39.50/">
+ <D:response>
+ <D:prop>
+ <Z:Authors/>
+ </D:prop>
+ <D:status>HTTP/1.1 420 Method Failure</D:status>
+ </D:response>
+ <D:response>
+ <D:prop>
+ <Z:Copyright-Owner/>
+ </D:prop>
+ <D:status>HTTP/1.1 409 Conflict</D:status>
+ </D:response>
+ <D:responsedescription> Copyright Owner can not be deleted or
+altered.</D:responsedescription>
+</D:multistatus>
diff --git a/result/noent/dav6 b/result/noent/dav6
new file mode 100644
index 0000000..3d0de24
--- /dev/null
+++ b/result/noent/dav6
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:href>http://www.microsoft.com/user/yarong/dav_drafts/
+ </D:href>
+ <D:prop>
+ <D:resourcetype>
+ <D:collection/>
+ </D:resourcetype>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:href>
+ http://www.microsoft.com/user/yarong/dav_drafts/base
+ </D:href>
+ <D:prop>
+ <D:resourcetype/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/result/noent/dav7 b/result/noent/dav7
new file mode 100644
index 0000000..ec4a952
--- /dev/null
+++ b/result/noent/dav7
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource1</d:href>
+ <d:href>http://www.foo.bar/container/resource2</d:href>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/</d:href>
+ <d:status>HTTP/1.1 420 Method Failure</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource3</d:href>
+ <d:status>HTTP/1.1 412 Precondition Failed</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/result/noent/dav8 b/result/noent/dav8
new file mode 100644
index 0000000..7f99baf
--- /dev/null
+++ b/result/noent/dav8
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/resource1</d:href>
+ <d:href>http://www.foo.bar/othercontainer/resource2</d:href>
+ <d:href>http://www.foo.bar/othercontainer/</d:href>
+ <d:href>http://www.foo.bar/othercontainer/R2/D2</d:href>
+ <d:status>HTTP/1.1 201 Created</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/R2/</d:href>
+ <d:status>HTTP/1.1 412 Precondition Failed</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/result/noent/dav9 b/result/noent/dav9
new file mode 100644
index 0000000..8ed63b8
--- /dev/null
+++ b/result/noent/dav9
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource1</d:href>
+ <d:href>http://www.foo.bar/container/resource2</d:href>
+ <d:href>http://www.foo.bar/container/</d:href>
+ <d:href>http://www.foo.bar/container/C2/R2</d:href>
+ <d:status>HTTP/1.1 201 Created</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/C2</d:href>
+ <d:status>HTTP/1.1 420 Method Failure</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/C2</d:href>
+ <d:status>HTTP/1.1 409 Conflict</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/result/noent/defattr.xml b/result/noent/defattr.xml
new file mode 100644
index 0000000..0a4ac15
--- /dev/null
+++ b/result/noent/defattr.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc xmlns CDATA #FIXED "http://www.example.com/">
+]>
+<doc xmlns="http://www.example.com/"/>
diff --git a/result/noent/defattr2.xml b/result/noent/defattr2.xml
new file mode 100644
index 0000000..8d1fc3b
--- /dev/null
+++ b/result/noent/defattr2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc defatt (0 | 1) "0">
+<!ATTLIST doc xmlns:tst CDATA #FIXED "http://example.org">
+<!ATTLIST doc tst:att (0 | 1) "1">
+]>
+<doc xmlns:tst="http://example.org" att="1"/>
diff --git a/result/noent/dia1 b/result/noent/dia1
new file mode 100644
index 0000000..207bd73
--- /dev/null
+++ b/result/noent/dia1
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true">
+ <dia:object type="Standard - Line" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="1.95,6.85"/>
+ <dia:point val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O2" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="2.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/result/noent/dia2 b/result/noent/dia2
new file mode 100644
index 0000000..207bd73
--- /dev/null
+++ b/result/noent/dia2
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true">
+ <dia:object type="Standard - Line" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="1.95,6.85"/>
+ <dia:point val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O2" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="2.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/result/noent/dtd1 b/result/noent/dtd1
new file mode 100644
index 0000000..fb11ffa
--- /dev/null
+++ b/result/noent/dtd1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!DOCTYPE MEMO PUBLIC "-//SGMLSOURCE//DTD MEMO//EN" "http://www.sgmlsource.com/dtds/memo.dtd">
+<MEMO>
+</MEMO>
diff --git a/result/noent/dtd10 b/result/noent/dtd10
new file mode 100644
index 0000000..8c7d5e7
--- /dev/null
+++ b/result/noent/dtd10
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)+ , c , d)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><c> is a</c><d> valid document</d></doc>
diff --git a/result/noent/dtd11 b/result/noent/dtd11
new file mode 100644
index 0000000..e0df8af
--- /dev/null
+++ b/result/noent/dtd11
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc val CDATA #IMPLIED>
+]>
+<doc val="v1"/>
diff --git a/result/noent/dtd12 b/result/noent/dtd12
new file mode 100644
index 0000000..b0aff81
--- /dev/null
+++ b/result/noent/dtd12
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY YN '"Yes"'>
+<!ENTITY WhatHeSaid "He said &YN;">
+]>
+<doc>He said "Yes"</doc>
diff --git a/result/noent/dtd13 b/result/noent/dtd13
new file mode 100644
index 0000000..2814146
--- /dev/null
+++ b/result/noent/dtd13
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- comment before the DTD -->
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<!-- comment after the DTD -->
+<doc/>
diff --git a/result/noent/dtd2 b/result/noent/dtd2
new file mode 100644
index 0000000..921fd94
--- /dev/null
+++ b/result/noent/dtd2
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>This is a valid document !</doc>
diff --git a/result/noent/dtd3 b/result/noent/dtd3
new file mode 100644
index 0000000..6681ef7
--- /dev/null
+++ b/result/noent/dtd3
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<doc>This is a valid document !</doc>
diff --git a/result/noent/dtd4 b/result/noent/dtd4
new file mode 100644
index 0000000..6cf2444
--- /dev/null
+++ b/result/noent/dtd4
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/result/noent/dtd5 b/result/noent/dtd5
new file mode 100644
index 0000000..5409d51
--- /dev/null
+++ b/result/noent/dtd5
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | a | b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a> is a <b>valid</b> document</doc>
diff --git a/result/noent/dtd6 b/result/noent/dtd6
new file mode 100644
index 0000000..ed2d993
--- /dev/null
+++ b/result/noent/dtd6
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (a | b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a><b> is a valid</b><a> document</a></doc>
diff --git a/result/noent/dtd7 b/result/noent/dtd7
new file mode 100644
index 0000000..0a4075f
--- /dev/null
+++ b/result/noent/dtd7
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (a , b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a><b> is a valid document</b></doc>
diff --git a/result/noent/dtd8 b/result/noent/dtd8
new file mode 100644
index 0000000..7a655f9
--- /dev/null
+++ b/result/noent/dtd8
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b) , (c | d))+>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><c> is a valid document</c></doc>
diff --git a/result/noent/dtd9 b/result/noent/dtd9
new file mode 100644
index 0000000..89cc1d4
--- /dev/null
+++ b/result/noent/dtd9
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b | c) , d)?>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><d> is a valid document</d></doc>
diff --git a/result/noent/ebcdic_566012.xml b/result/noent/ebcdic_566012.xml
new file mode 100644
index 0000000..153add5
--- /dev/null
+++ b/result/noent/ebcdic_566012.xml
@@ -0,0 +1 @@
+Lo§”“@¥…™¢‰–•~ñKð@…•ƒ–„‰•‡~ÉÂÔ`ññôñon%L£…¢£@££™~JàZan% \ No newline at end of file
diff --git a/result/noent/emptycdata.xml b/result/noent/emptycdata.xml
new file mode 100644
index 0000000..bc98388
--- /dev/null
+++ b/result/noent/emptycdata.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<![CDATA[]]>
+</html>
diff --git a/result/noent/ent1 b/result/noent/ent1
new file mode 100644
index 0000000..14bf428
--- /dev/null
+++ b/result/noent/ent1
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE>
+ Extensible Markup Language
+</EXAMPLE>
diff --git a/result/noent/ent10 b/result/noent/ent10
new file mode 100644
index 0000000..946aff8
--- /dev/null
+++ b/result/noent/ent10
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE rnode [
+<!ELEMENT rnode (f)>
+<!ELEMENT f (#PCDATA)>
+<!ATTLIST f att1 CDATA #FIXED "J">
+<!ENTITY f "
+ <f>
+ hello world
+ </f>
+ ">
+]>
+<rnode>
+
+ <f>
+ hello world
+ </f>
+
+</rnode>
diff --git a/result/noent/ent11 b/result/noent/ent11
new file mode 100644
index 0000000..e1e1e0f
--- /dev/null
+++ b/result/noent/ent11
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE doc [
+<!ENTITY newl "&#13;">
+]>
+<doc>
+</doc>
diff --git a/result/noent/ent12 b/result/noent/ent12
new file mode 100644
index 0000000..e398313
--- /dev/null
+++ b/result/noent/ent12
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ENTITY foo "abc">
+<!ENTITY bar "def">
+]>
+<root attribute="abc">
+ <element>def</element>
+</root>
diff --git a/result/noent/ent13 b/result/noent/ent13
new file mode 100644
index 0000000..02bc069
--- /dev/null
+++ b/result/noent/ent13
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ENTITY ampproblem "&amp;">
+]>
+<t a="&amp;">a</t>
diff --git a/result/noent/ent2 b/result/noent/ent2
new file mode 100644
index 0000000..b643ac3
--- /dev/null
+++ b/result/noent/ent2
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+<!ENTITY title PUBLIC "-//MY-TITLE//FR" "title.xml">
+<!ENTITY image SYSTEM "img.gif" NDATA GIF>
+]>
+<EXAMPLE>
+
+<title>my title</title>
+
+ This text is about XML, the Extensible Markup Language and this is an embedded <IMG src="image"/>
+</EXAMPLE>
diff --git a/result/noent/ent3 b/result/noent/ent3
new file mode 100644
index 0000000..b1c0b14
--- /dev/null
+++ b/result/noent/ent3
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE prop1="a&amp;b" prop2="Extensible Markup Language">
+ Test of entities in attributes.
+</EXAMPLE>
diff --git a/result/noent/ent4 b/result/noent/ent4
new file mode 100644
index 0000000..a92194c
--- /dev/null
+++ b/result/noent/ent4
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE>
+ Test of &amp;amp; behaviour a&amp;b .
+</EXAMPLE>
diff --git a/result/noent/ent5 b/result/noent/ent5
new file mode 100644
index 0000000..16e7e10
--- /dev/null
+++ b/result/noent/ent5
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<EXAMPLE>
+ This is an inverted exclamation sign &#xA1;
+ This is a space
+</EXAMPLE>
diff --git a/result/noent/ent6 b/result/noent/ent6
new file mode 100644
index 0000000..047f9bb
--- /dev/null
+++ b/result/noent/ent6
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]>
+<doc/>
diff --git a/result/noent/ent7 b/result/noent/ent7
new file mode 100644
index 0000000..1c895af
--- /dev/null
+++ b/result/noent/ent7
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE item [
+<!ENTITY % sampleEnt "<!ELEMENT item (para)+>">
+<!ENTITY sampleEnt "the hyacinth girl">
+<!ELEMENT item (para)+>
+<!ELEMENT para (#PCDATA)>
+]>
+<item><para>'they called me the hyacinth girl'</para></item>
diff --git a/result/noent/ent8 b/result/noent/ent8
new file mode 100644
index 0000000..676266c
--- /dev/null
+++ b/result/noent/ent8
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY test1 "test 1">
+<!ENTITY test2 "test 2">
+]>
+<doc>
+ <Content>Reten&#xE7;&#xE3;o</Content>
+ <Content>&lt;&gt;</Content>
+ <Content>test 1test 2</Content>
+</doc>
diff --git a/result/noent/ent9 b/result/noent/ent9
new file mode 100644
index 0000000..b930e4c
--- /dev/null
+++ b/result/noent/ent9
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY test1 "<a/>,<b/>,<c/>,<d/>">
+]>
+<doc>
+ <ent><a/>,<b/>,<c/>,<d/></ent>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <ent><a/>,<b/>,<c/>,<d/></ent>
+</doc>
diff --git a/result/noent/eve.xml b/result/noent/eve.xml
new file mode 100644
index 0000000..dab7208
--- /dev/null
+++ b/result/noent/eve.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE spec PUBLIC "-//testspec//" "dtds/eve.dtd" [
+<!ENTITY iso6.doc.date "29-May-1999">
+]>
+<spec>
+</spec>
diff --git a/result/noent/intsubset.xml b/result/noent/intsubset.xml
new file mode 100644
index 0000000..bd85795
--- /dev/null
+++ b/result/noent/intsubset.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!-- " -->]>
+<root/>
diff --git a/result/noent/intsubset2.xml b/result/noent/intsubset2.xml
new file mode 100644
index 0000000..b103955
--- /dev/null
+++ b/result/noent/intsubset2.xml
@@ -0,0 +1,250 @@
+<?xml version="1.0"?>
+<!DOCTYPE kanjidic2 [
+<!-- Version 1.3
+ This is the DTD of the XML-format kanji file combining information from
+ the KANJIDIC and KANJD212 files. It is intended to be largely self-
+ documenting, with each field being accompanied by an explanatory
+ comment.
+
+ The file covers the following kanji:
+ (a) the 6,355 kanji from JIS X 0208;
+ (b) the 5,801 kanji from JIS X 0212;
+ (c) the 3,625 kanji from JIS X 0213 as follows:
+ (i) the 2,741 kanji which are also in JIS X 0212 have
+ JIS X 0213 code-points (kuten) added to the existing entry;
+ (ii) the 884 "new" kanji have new entries.
+
+ At the end of the explanation for a number of fields there is a tag
+ with the format [N]. This indicates the leading letter(s) of the
+ equivalent field in the KANJIDIC and KANJD212 files.
+
+ The KANJIDIC documentation should also be read for additional
+ information about the information in the file.
+ --><!ELEMENT kanjidic2 (header , character*)>
+<!ELEMENT header (file_version , database_version , date_of_creation)>
+<!--
+ The single header element will contain identification information
+ about the version of the file
+ --><!ELEMENT file_version (#PCDATA)>
+<!--
+ This field denotes the version of kanjidic2 structure, as more
+ than one version may exist.
+ --><!ELEMENT database_version (#PCDATA)>
+<!--
+ The version of the file, in the format YYYY-NN, where NN will be
+ a number starting with 01 for the first version released in a
+ calendar year, then increasing for each version in that year.
+ --><!ELEMENT date_of_creation (#PCDATA)>
+<!--
+ The date the file was created in international format (YYYY-MM-DD).
+ --><!ELEMENT character (literal , codepoint , radical , misc , dic_number? , query_code? , reading_meaning? , nanori?)*>
+<!ELEMENT literal (#PCDATA)>
+<!--
+ The character itself in UTF8 coding.
+ --><!ELEMENT codepoint (cp_value)+>
+<!--
+ The codepoint element states the code of the character in the various
+ character set standards.
+ --><!ELEMENT cp_value (#PCDATA)>
+<!--
+ The cp_value contains the codepoint of the character in a particular
+ standard. The standard will be identified in the cp_type attribute.
+ --><!ATTLIST cp_value cp_type CDATA #REQUIRED>
+<!--
+ The cp_type attribute states the coding standard applying to the
+ element. The values assigned so far are:
+ jis208 - JIS X 0208-1997 - kuten coding (nn-nn)
+ jis212 - JIS X 0212-1990 - kuten coding (nn-nn)
+ jis213 - JIS X 0213-2000 - kuten coding (p-nn-nn)
+ ucs - Unicode 4.0 - hex coding (4 or 5 hexadecimal digits)
+ --><!ELEMENT radical (rad_value)+>
+<!ELEMENT rad_value (#PCDATA)>
+<!--
+ The radical number, in the range 1 to 214. The particular
+ classification type is stated in the rad_type attribute.
+ --><!ATTLIST rad_value rad_type CDATA #REQUIRED>
+<!--
+ The rad_type attribute states the type of radical classification.
+ classical - as recorded in the KangXi Zidian.
+ nelson - as used in the Nelson "Modern Japanese-English
+ Character Dictionary" (i.e. the Classic, not the New Nelson).
+ This will only be used where Nelson reclassified the kanji.
+ --><!ELEMENT misc (grade? , stroke_count+ , variant* , freq* , rad_name*)>
+<!ELEMENT grade (#PCDATA)>
+<!--
+ The Jouyou Kanji grade level. 1 through 6 indicate the grade in which
+ the kanji is taught in Japanese schools. 8 indicates it is one of the
+ remaining Jouyou Kanji to be learned in junior high school, and 9
+ indicates it is a Jinmeiyou (for use in names) kanji. [G]
+ --><!ELEMENT stroke_count (#PCDATA)>
+<!--
+ The stroke count of the kanji, including the radical. If more than
+ one, the first is considered the accepted count, while subsequent ones
+ are common miscounts. (See Appendix E. of the KANJIDIC documentation
+ for some of the rules applied when counting strokes in some of the
+ radicals.) [S]
+ --><!ELEMENT variant (#PCDATA)>
+<!--
+ A cross-reference code to another kanji, usually regarded as a variant.
+ The type of cross-reference is given in the var_type attribute.
+ --><!ATTLIST variant var_type CDATA #REQUIRED>
+<!--
+ The var_type attribute indicates the type of variant code. The current
+ values are:
+ jis208 - in JIS X 0208 - kuten coding
+ jis212 - in JIS X 0212 - kuten coding
+ jis213 - in JIS X 0213 - kuten coding
+ deroo - De Roo number - numeric
+ njecd - Halpern NJECD index number - numeric
+ s_h - The Kanji Dictionary (Spahn & Hadamitzky) - descriptor
+ nelson - "Classic" Nelson - numeric
+ oneill - Japanese Names (O'Neill) - numeric
+ --><!ELEMENT freq (#PCDATA)>
+<!--
+ A frequency-of-use ranking. The 2,500 most-used characters have a
+ ranking; those characters that lack this field are not ranked. The
+ frequency is a number from 1 to 2,500 that expresses the relative
+ frequency of occurrence of a character in modern Japanese. This is
+ based on a survey in newspapers, so it is biassed towards kanji
+ used in newspaper articles. The discrimination between the less
+ frequently used kanji is not strong.
+ --><!ELEMENT rad_name (#PCDATA)>
+<!--
+ When the kanji is itself a radical and has a name, this element
+ contains the name (in hiragana.) [T2]
+ --><!ELEMENT dic_number (dic_ref)+>
+<!--
+ This element contains the index numbers and similar unstructured
+ information such as page numbers in a number of published dictionaries,
+ and instructional books on kanji.
+ --><!ELEMENT dic_ref (#PCDATA)>
+<!--
+ Each dic_ref contains an index number. The particular dictionary,
+ etc. is defined by the dr_type attribute.
+ --><!ATTLIST dic_ref dr_type CDATA #REQUIRED>
+<!--
+ The dr_type defines the dictionary or reference book, etc. to which
+ dic_ref element applies. The initial allocation is:
+ nelson_c - "Modern Reader's Japanese-English Character Dictionary",
+ edited by Andrew Nelson (now published as the "Classic"
+ Nelson).
+ nelson_n - "The New Nelson Japanese-English Character Dictionary",
+ edited by John Haig.
+ halpern_njecd - "New Japanese-English Character Dictionary",
+ edited by Jack Halpern.
+ halpern_kkld - "Kanji Learners Dictionary" (Kodansha) edited by
+ Jack Halpern.
+ heisig - "Remembering The Kanji" by James Heisig.
+ gakken - "A New Dictionary of Kanji Usage" (Gakken)
+ oneill_names - "Japanese Names", by P.G. O'Neill.
+ oneill_kk - "Essential Kanji" by P.G. O'Neill.
+ moro - "Daikanwajiten" compiled by Morohashi. For some kanji two
+ additional attributes are used: m_vol: the volume of the
+ dictionary in which the kanji is found, and m_page: the page
+ number in the volume.
+ henshall - "A Guide To Remembering Japanese Characters" by
+ Kenneth G. Henshall.
+ sh_kk - "Kanji and Kana" by Spahn and Hadamitzky.
+ sakade - "A Guide To Reading and Writing Japanese" edited by
+ Florence Sakade.
+ henshall3 - "A Guide To Reading and Writing Japanese" 3rd
+ edition, edited by Henshall, Seeley and De Groot.
+ tutt_cards - Tuttle Kanji Cards, compiled by Alexander Kask.
+ crowley - "The Kanji Way to Japanese Language Power" by
+ Dale Crowley.
+ kanji_in_context - "Kanji in Context" by Nishiguchi and Kono.
+ busy_people - "Japanese For Busy People" vols I-III, published
+ by the AJLT. The codes are the volume.chapter.
+ kodansha_compact - the "Kodansha Compact Kanji Guide".
+ --><!ATTLIST dic_ref m_vol CDATA #IMPLIED>
+<!--
+ See above under "moro".
+ --><!ATTLIST dic_ref m_page CDATA #IMPLIED>
+<!--
+ See above under "moro".
+ --><!ELEMENT query_code (q_code)+>
+<!--
+ These codes contain information relating to the glyph, and can be used
+ for finding a required kanji. The type of code is defined by the
+ qc_type attribute.
+ --><!ELEMENT q_code (#PCDATA)>
+<!--
+ The q_code contains the actual query-code value, according to the
+ qc_type attribute.
+ --><!ATTLIST q_code qc_type CDATA #REQUIRED>
+<!--
+ The q_code attribute defines the type of query code. The current values
+ are:
+ skip - Halpern's SKIP (System of Kanji Indexing by Patterns)
+ code. The format is n-nn-nn. See the KANJIDIC documentation
+ for a description of the code and restrictions on the
+ commercial use of this data. [P]
+
+ sh_desc - the descriptor codes for The Kanji Dictionary (Tuttle
+ 1996) by Spahn and Hadamitzky. They are in the form nxnn.n,
+ e.g. 3k11.2, where the kanji has 3 strokes in the
+ identifying radical, it is radical "k" in the SH
+ classification system, there are 11 other strokes, and it is
+ the 2nd kanji in the 3k11 sequence. (I am very grateful to
+ Mark Spahn for providing the list of these descriptor codes
+ for the kanji in this file.) [I]
+ four_corner - the "Four Corner" code for the kanji. This is a code
+ invented by Wang Chen in 1928. See the KANJIDIC documentation
+ for an overview of the Four Corner System. [Q]
+
+ deroo - the codes developed by the late Father Joseph De Roo, and
+ published in his book "2001 Kanji" (Bojinsha). Fr De Roo
+ gave his permission for these codes to be included. [DR]
+ misclass - a possible misclassification of the kanji according
+ to one of the code types. (See the "Z" codes in the KANJIDIC
+ documentation for more details.)
+
+ --><!ELEMENT reading_meaning (rmgroup* , nanori*)>
+<!--
+ The readings for the kanji in several languages, and the meanings, also
+ in several languages. The readings and meanings are grouped to enable
+ the handling of the situation where the meaning is differentiated by
+ reading. [T1]
+ --><!ELEMENT nanori (#PCDATA)>
+<!--
+ Japanese readings that are now only associated with names.
+ --><!ELEMENT rmgroup (reading* , meaning*)>
+<!ELEMENT reading (#PCDATA)>
+<!--
+ The reading element contains the reading or pronunciation
+ of the kanji.
+ --><!ATTLIST reading r_type CDATA #REQUIRED>
+<!--
+ The r_type attribute defines the type of reading in the reading
+ element. The current values are:
+ pinyin - the modern PinYin romanization of the Chinese reading
+ of the kanji. The tones are represented by a concluding
+ digit. [Y]
+ korean_r - the romanized form of the Korean reading(s) of the
+ kanji. The readings are in the (Republic of Korea) Ministry
+ of Education style of romanization. [W]
+ korean_h - the Korean reading(s) of the kanji in hangul.
+ ja_on - the "on" Japanese reading of the kanji, in katakana. A
+ second attribute r_status, if present, will indicate with
+ a value of "jy" whether the reading is approved for a
+ "Jouyou kanji".
+ ja_kun - the "kun" Japanese reading of the kanji, in hiragana.
+ Where relevant the okurigana is also included separated by a
+ ".". Readings associated with prefixes and suffixes are
+ marked with a "-". A second attribute r_status, if present,
+ will indicate with a value of "jy" whether the reading is
+ approved for a "Jouyou kanji".
+ --><!ATTLIST reading r_status CDATA #IMPLIED>
+<!--
+ See under ja_on and ja_kun above.
+ --><!ELEMENT meaning (#PCDATA)>
+<!--
+ The meaning associated with the kanji.
+ --><!ATTLIST meaning m_lang CDATA #IMPLIED>
+<!--
+ The m_lang attribute defines the target language of the meaning. It
+ will be coded using the two-letter language code from the ISO 639
+ standard. When absent, the value "en" (i.e. English) is implied. [{}]
+ -->]>
+<kanjidic2>
+</kanjidic2>
diff --git a/result/noent/isolat1 b/result/noent/isolat1
new file mode 100644
index 0000000..1e5a059
--- /dev/null
+++ b/result/noent/isolat1
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<très>là</très>
diff --git a/result/noent/isolat2 b/result/noent/isolat2
new file mode 100644
index 0000000..8c290b9
--- /dev/null
+++ b/result/noent/isolat2
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<tst>
+
+ The following table displays the characters in ISO 8859
+ Latin-1, which are printable and unlisted in the ascii
+ manual page.
+
+ Oct Dec Hex Char Description
+ --------------------------------------------------------------------
+ 240 160 A0 NO-BREAK SPACE
+ 241 161 A1 ¡ INVERTED EXCLAMATION MARK
+ 242 162 A2 ¢ CENT SIGN
+ 243 163 A3 £ POUND SIGN
+ 244 164 A4 ¤ CURRENCY SIGN
+ 245 165 A5 ¥ YEN SIGN
+ 246 166 A6 ¦ BROKEN BAR
+ 247 167 A7 § SECTION SIGN
+ 250 168 A8 ¨ DIAERESIS
+ 251 169 A9 © COPYRIGHT SIGN
+ 252 170 AA ª FEMININE ORDINAL INDICATOR
+ 253 171 AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 254 172 AC ¬ NOT SIGN
+ 255 173 AD ­ SOFT HYPHEN
+ 256 174 AE ® REGISTERED SIGN
+ 257 175 AF ¯ MACRON
+ 260 176 B0 ° DEGREE SIGN
+ 261 177 B1 ± PLUS-MINUS SIGN
+ 262 178 B2 ² SUPERSCRIPT TWO
+ 263 179 B3 ³ SUPERSCRIPT THREE
+ 264 180 B4 ´ ACUTE ACCENT
+ 265 181 B5 µ MICRO SIGN
+ 266 182 B6 ¶ PILCROW SIGN
+ 267 183 B7 · MIDDLE DOT
+ 270 184 B8 ¸ CEDILLA
+ 271 185 B9 ¹ SUPERSCRIPT ONE
+ 272 186 BA º MASCULINE ORDINAL INDICATOR
+ 273 187 BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 274 188 BC ¼ VULGAR FRACTION ONE QUARTER
+ 275 189 BD ½ VULGAR FRACTION ONE HALF
+ 276 190 BE ¾ VULGAR FRACTION THREE QUARTERS
+ 277 191 BF ¿ INVERTED QUESTION MARK
+ 300 192 C0 À LATIN CAPITAL LETTER A WITH GRAVE
+ 301 193 C1 Á LATIN CAPITAL LETTER A WITH ACUTE
+ 302 194 C2 Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 303 195 C3 Ã LATIN CAPITAL LETTER A WITH TILDE
+ 304 196 C4 Ä LATIN CAPITAL LETTER A WITH DIAERESIS
+ 305 197 C5 Å LATIN CAPITAL LETTER A WITH RING ABOVE
+ 306 198 C6 Æ LATIN CAPITAL LETTER AE
+ 307 199 C7 Ç LATIN CAPITAL LETTER C WITH CEDILLA
+ 310 200 C8 È LATIN CAPITAL LETTER E WITH GRAVE
+ 311 201 C9 É LATIN CAPITAL LETTER E WITH ACUTE
+ 312 202 CA Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 313 203 CB Ë LATIN CAPITAL LETTER E WITH DIAERESIS
+ 314 204 CC Ì LATIN CAPITAL LETTER I WITH GRAVE
+ 315 205 CD Í LATIN CAPITAL LETTER I WITH ACUTE
+ 316 206 CE Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 317 207 CF Ï LATIN CAPITAL LETTER I WITH DIAERESIS
+ 320 208 D0 Ð LATIN CAPITAL LETTER ETH
+ 321 209 D1 Ñ LATIN CAPITAL LETTER N WITH TILDE
+ 322 210 D2 Ò LATIN CAPITAL LETTER O WITH GRAVE
+ 323 211 D3 Ó LATIN CAPITAL LETTER O WITH ACUTE
+ 324 212 D4 Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 325 213 D5 Õ LATIN CAPITAL LETTER O WITH TILDE
+ 326 214 D6 Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+ 327 215 D7 × MULTIPLICATION SIGN
+ 330 216 D8 Ø LATIN CAPITAL LETTER O WITH STROKE
+ 331 217 D9 Ù LATIN CAPITAL LETTER U WITH GRAVE
+ 332 218 DA Ú LATIN CAPITAL LETTER U WITH ACUTE
+ 333 219 DB Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 334 220 DC Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+ 335 221 DD Ý LATIN CAPITAL LETTER Y WITH ACUTE
+ 336 222 DE Þ LATIN CAPITAL LETTER THORN
+ 337 223 DF ß LATIN SMALL LETTER SHARP S
+ 340 224 E0 à LATIN SMALL LETTER A WITH GRAVE
+ 341 225 E1 á LATIN SMALL LETTER A WITH ACUTE
+ 342 226 E2 â LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 343 227 E3 ã LATIN SMALL LETTER A WITH TILDE
+ 344 228 E4 ä LATIN SMALL LETTER A WITH DIAERESIS
+ 345 229 E5 å LATIN SMALL LETTER A WITH RING ABOVE
+ 346 230 E6 æ LATIN SMALL LETTER AE
+ 347 231 E7 ç LATIN SMALL LETTER C WITH CEDILLA
+ 350 232 E8 è LATIN SMALL LETTER E WITH GRAVE
+ 351 233 E9 é LATIN SMALL LETTER E WITH ACUTE
+ 352 234 EA ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 353 235 EB ë LATIN SMALL LETTER E WITH DIAERESIS
+ 354 236 EC ì LATIN SMALL LETTER I WITH GRAVE
+ 355 237 ED í LATIN SMALL LETTER I WITH ACUTE
+ 356 238 EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 357 239 EF ï LATIN SMALL LETTER I WITH DIAERESIS
+ 360 240 F0 ð LATIN SMALL LETTER ETH
+ 361 241 F1 ñ LATIN SMALL LETTER N WITH TILDE
+ 362 242 F2 ò LATIN SMALL LETTER O WITH GRAVE
+ 363 243 F3 ó LATIN SMALL LETTER O WITH ACUTE
+ 364 244 F4 ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 365 245 F5 õ LATIN SMALL LETTER O WITH TILDE
+ 366 246 F6 ö LATIN SMALL LETTER O WITH DIAERESIS
+ 367 247 F7 ÷ DIVISION SIGN
+ 370 248 F8 ø LATIN SMALL LETTER O WITH STROKE
+ 371 249 F9 ù LATIN SMALL LETTER U WITH GRAVE
+ 372 250 FA ú LATIN SMALL LETTER U WITH ACUTE
+ 373 251 FB û LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 374 252 FC ü LATIN SMALL LETTER U WITH DIAERESIS
+ 375 253 FD ý LATIN SMALL LETTER Y WITH ACUTE
+ 376 254 FE þ LATIN SMALL LETTER THORN
+ 377 255 FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
+
+</tst>
diff --git a/result/noent/isolat3 b/result/noent/isolat3
new file mode 100644
index 0000000..1abf7b4
--- /dev/null
+++ b/result/noent/isolat3
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<rec>
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+then the replacement text for the entity "<code>book</code>" is:
+<eg>La Peste: Albert Camus,
+© 1947 Éditions Gallimard. &amp;rights;</eg>
+</rec>
diff --git a/result/noent/japancrlf.xml b/result/noent/japancrlf.xml
new file mode 100644
index 0000000..60b307c
--- /dev/null
+++ b/result/noent/japancrlf.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<入力メッセージ xmlns="http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826">
+ <c8c:Ele xmlns:c8c="http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826"/>
+</入力メッセージ>
diff --git a/result/noent/ns b/result/noent/ns
new file mode 100644
index 0000000..94b927e
--- /dev/null
+++ b/result/noent/ns
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata dia:testattr="test"/>
+</dia:diagram>
diff --git a/result/noent/ns2 b/result/noent/ns2
new file mode 100644
index 0000000..b69ad82
--- /dev/null
+++ b/result/noent/ns2
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/" dia:testattr="test"/>
diff --git a/result/noent/ns3 b/result/noent/ns3
new file mode 100644
index 0000000..b69ad82
--- /dev/null
+++ b/result/noent/ns3
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/" dia:testattr="test"/>
diff --git a/result/noent/ns4 b/result/noent/ns4
new file mode 100644
index 0000000..136bf92
--- /dev/null
+++ b/result/noent/ns4
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<diagram testattr="test" xml:lang="en" xml:link="simple" xml:space="preserve"/>
diff --git a/result/noent/ns5 b/result/noent/ns5
new file mode 100644
index 0000000..0afe4e2
--- /dev/null
+++ b/result/noent/ns5
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<element xmlns:rng="http://example.org/ns/1" xmlns="http://example.org/ns/1" name="foo">
+ <empty/>
+</element>
diff --git a/result/noent/ns6 b/result/noent/ns6
new file mode 100644
index 0000000..c971252
--- /dev/null
+++ b/result/noent/ns6
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<root>
+ <foo xmlns="http://abc"/>
+ <bar/>
+</root>
diff --git a/result/noent/ns7 b/result/noent/ns7
new file mode 100644
index 0000000..b5089e1
--- /dev/null
+++ b/result/noent/ns7
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<xml:test/>
diff --git a/result/noent/nsclean.xml b/result/noent/nsclean.xml
new file mode 100644
index 0000000..8f1ea82
--- /dev/null
+++ b/result/noent/nsclean.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="tag:foofoofoofoofoofoofoofoo" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
+<foop:content xmlns="http://www.w3.org/1999/xhtml" xmlns:foop="tag:foofoofoofoofoofoofoofoo">
+</foop:content>
+</article>
diff --git a/result/noent/p3p b/result/noent/p3p
new file mode 100644
index 0000000..31d5587
--- /dev/null
+++ b/result/noent/p3p
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:p3p="http://www.w3.org/TR/1998/WD-P3P10-syntax#proposal.DTD" xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#">
+<PROP realm="http://www.CoolCatalog.com/catalogue/" entity="CoolCatalog" agreeID="94df1293a3e519bb" assurance="http://www.TrustUs.org">
+ <USES>
+ <STATEMENT purp="2,3" recpnt="0" id="0" consq="a site with clothes you'd appreciate.">
+ <WITH><PREFIX name="User.">
+ <REF name="Name.First"/>
+ <REF name="Bdate.Year" optional="1"/>
+ <REF name="Gender"/>
+ </PREFIX></WITH>
+ </STATEMENT>
+ </USES>
+ <USES>
+ <STATEMENT action="read&amp;write" purp="0" recpnt="0" id="1">
+ <REF name="User.Shipping."/>
+ </STATEMENT>
+ </USES>
+ <DISCLOSURE discURI="http://www.CoolCatalog.com/PrivacyPractice.html" access="3" other="0,1"/>
+</PROP></RDF:RDF>
diff --git a/result/noent/pi.xml b/result/noent/pi.xml
new file mode 100644
index 0000000..48c7ff0
--- /dev/null
+++ b/result/noent/pi.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+<?document-start doc?>
+<empty/>
+<?document-end doc?>
+</doc>
diff --git a/result/noent/pi2.xml b/result/noent/pi2.xml
new file mode 100644
index 0000000..710d51c
--- /dev/null
+++ b/result/noent/pi2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<?document-start doc?>
+<doc>
+<empty/>
+</doc>
+<?document-end doc?>
diff --git a/result/noent/rdf1 b/result/noent/rdf1
new file mode 100644
index 0000000..d44c3c6
--- /dev/null
+++ b/result/noent/rdf1
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RPM="http://www.rpm.org/" xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#">
+ <RDF:Description HREF="ftp://rufus.w3.org/linux/redhat/redhat-5.1/i386/RedHat/RPMS/rpm-2.5-2.i386.rpm">
+ <RPM:Name>rpm</RPM:Name>
+ <RPM:Version>2.5</RPM:Version>
+ <RPM:Release>2</RPM:Release>
+ <RPM:Arch>i386</RPM:Arch>
+ <RPM:Os>Linux</RPM:Os>
+ <RPM:Distribution>Manhattan </RPM:Distribution>
+ <RPM:Vendor>Red Hat Software</RPM:Vendor>
+ <RPM:Packager>Red Hat Software &lt;bugs@redhat.com&gt;</RPM:Packager>
+ <RPM:Group>Utilities/System</RPM:Group>
+ <RPM:Summary>Red Hat Package Manager</RPM:Summary>
+ <RPM:Description>RPM is a powerful package manager, which can be used to build, install,
+query, verify, update, and uninstall individual software packages. A
+package consists of an archive of files, and package information, including
+name, version, and description.</RPM:Description>
+ <RPM:Copyright>GPL</RPM:Copyright>
+ <RPM:Changelog>* Sun May 10 1998 Prospector System &lt;bugs@redhat.com&gt;
+ - translations modified for de, fr, tr
+</RPM:Changelog>
+ <RPM:Sources>rpm-2.5-2.src.rpm</RPM:Sources>
+ <RPM:SourcesFtp>ftp://ftp.redhat.com/pub/redhat/redhat-5.1/SRPMS</RPM:SourcesFtp>
+ <RPM:BuildDate>Sun May 10 14:52:32 1998</RPM:BuildDate>
+ <RPM:Date>894826352</RPM:Date>
+ <RPM:Size>850599</RPM:Size>
+ <RPM:BuildHost>porky.redhat.com</RPM:BuildHost>
+ <RPM:Provides>
+ <RDF:Bag>
+ <RPM:Resource>rpm</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Provides>
+ <RPM:Requires>
+ <RDF:Bag>
+ <RPM:Resource>/bin/sh</RPM:Resource>
+ <RPM:Resource>ld-linux.so.2</RPM:Resource>
+ <RPM:Resource>libc.so.6</RPM:Resource>
+ <RPM:Resource>libdb.so.2</RPM:Resource>
+ <RPM:Resource>libz.so.1</RPM:Resource>
+ <RPM:Resource>/bin/bash</RPM:Resource>
+ <RPM:Resource>/bin/sh</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Requires>
+ <RPM:Files>/bin/rpm
+/usr/bin/find-provides
+/usr/bin/find-requires
+/usr/bin/gendiff
+/usr/bin/rpm2cpio
+/usr/doc/rpm-2.5
+/usr/doc/rpm-2.5/CHANGES
+/usr/doc/rpm-2.5/RPM-PGP-KEY
+/usr/doc/rpm-2.5/buildroot
+/usr/doc/rpm-2.5/dependencies
+/usr/doc/rpm-2.5/format
+/usr/doc/rpm-2.5/groups
+/usr/doc/rpm-2.5/macros
+/usr/doc/rpm-2.5/queryformat
+/usr/doc/rpm-2.5/relocatable
+/usr/doc/rpm-2.5/signatures
+/usr/doc/rpm-2.5/spec
+/usr/doc/rpm-2.5/triggers
+/usr/lib/rpmpopt
+/usr/lib/rpmrc
+/usr/man/man8/rpm.8
+/usr/man/man8/rpm2cpio.8
+/usr/share/locale/de/LC_MESSAGES/rpm.mo
+/usr/share/locale/fr/LC_MESSAGES/rpm.mo
+/usr/share/locale/pt-br/LC_MESSAGES/rpm.mo
+/usr/share/locale/sv/LC_MESSAGES/rpm.mo
+/usr/share/locale/tr/LC_MESSAGES/rpm.mo
+/usr/src/redhat
+/usr/src/redhat/BUILD
+/usr/src/redhat/RPMS
+/usr/src/redhat/RPMS/i386
+/usr/src/redhat/RPMS/noarch
+/usr/src/redhat/SOURCES
+/usr/src/redhat/SPECS
+/usr/src/redhat/SRPMS
+</RPM:Files>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/result/noent/rdf2 b/result/noent/rdf2
new file mode 100644
index 0000000..284946b
--- /dev/null
+++ b/result/noent/rdf2
@@ -0,0 +1,1899 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#" xmlns:RPM="http://www.rpm.org/">
+ <RDF:Description about="ftp://rufus.w3.org/linux/dld/5.4/i386/RPMS/i386/ncurses4-4.2-3.i386.rpm">
+ <RPM:Name>ncurses4</RPM:Name>
+ <RPM:Version>4.2</RPM:Version>
+ <RPM:Release>3</RPM:Release>
+ <RPM:Arch>i386</RPM:Arch>
+ <RPM:Os>Linux</RPM:Os>
+ <RPM:Distribution>DLD</RPM:Distribution>
+ <RPM:Vendor>delix Computer GmbH</RPM:Vendor>
+ <RPM:Packager>Till Bubeck &lt;bubeck@delix.de&gt;, Ngo Than &lt;than@delix.de&gt;</RPM:Packager>
+ <RPM:Group>Libraries</RPM:Group>
+ <RPM:Summary>Bibliothek zur Ansteuerung von Terminals</RPM:Summary>
+ <RPM:Description>Diese Library stellt dem Programmierer vom Terminal unabh&#xE4;ngige
+Routinen zur Ansteuerung Ihres Bildschirms zur Verf&#xFC;gung, die
+speziell optimiert sind.
+Diese Version ist die 'new curses' (ncurses) Variante und ist der
+anerkannte Ersatz f&#xFC;r die klassische Curses-Library, die nicht mehr
+weiterentwickelt wird.</RPM:Description>
+ <RPM:Copyright>GPL</RPM:Copyright>
+ <RPM:Sources>ncurses4-4.2-3.src.rpm</RPM:Sources>
+ <RPM:BuildDate>Tue May 12 19:30:26 1998</RPM:BuildDate>
+ <RPM:Date>895015826</RPM:Date>
+ <RPM:Size>1373513</RPM:Size>
+ <RPM:BuildHost>erdbeere.delix.de</RPM:BuildHost>
+ <RPM:Provides>
+ <RDF:Bag>
+ <RPM:Resource href="../../../../../resources/ncurses4.rdf">ncurses4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libpanel.so.4.rdf">libpanel.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libncurses.so.4.rdf">libncurses.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libmenu.so.4.rdf">libmenu.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libform.so.4.rdf">libform.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/ncurses.rdf">ncurses</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Provides>
+ <RPM:Files>/lib/libncurses.so.4
+/lib/libncurses.so.4.2
+/usr/doc/ncurses4-4.2-3
+/usr/doc/ncurses4-4.2-3/ANNOUNCE.gz
+/usr/doc/ncurses4-4.2-3/NEWS.gz
+/usr/doc/ncurses4-4.2-3/README.gz
+/usr/doc/ncurses4-4.2-3/TO-DO.gz
+/usr/lib/libform.so.4
+/usr/lib/libform.so.4.2
+/usr/lib/libmenu.so.4
+/usr/lib/libmenu.so.4.2
+/usr/lib/libpanel.so.4
+/usr/lib/libpanel.so.4.2
+/usr/share/ncurses4
+/usr/share/ncurses4/tabset
+/usr/share/ncurses4/tabset/std
+/usr/share/ncurses4/tabset/stdcrt
+/usr/share/ncurses4/tabset/vt100
+/usr/share/ncurses4/tabset/vt300
+/usr/share/ncurses4/terminfo
+/usr/share/ncurses4/terminfo/1
+/usr/share/ncurses4/terminfo/1/1178
+/usr/share/ncurses4/terminfo/1/1730-lm
+/usr/share/ncurses4/terminfo/2
+/usr/share/ncurses4/terminfo/2/2621
+/usr/share/ncurses4/terminfo/2/2621-wl
+/usr/share/ncurses4/terminfo/2/2621A
+/usr/share/ncurses4/terminfo/2/2621a
+/usr/share/ncurses4/terminfo/3
+/usr/share/ncurses4/terminfo/3/386at
+/usr/share/ncurses4/terminfo/3/3b1
+/usr/share/ncurses4/terminfo/4
+/usr/share/ncurses4/terminfo/4/4025ex
+/usr/share/ncurses4/terminfo/4/4027ex
+/usr/share/ncurses4/terminfo/4/4410-w
+/usr/share/ncurses4/terminfo/5
+/usr/share/ncurses4/terminfo/5/5051
+/usr/share/ncurses4/terminfo/5/5410-w
+/usr/share/ncurses4/terminfo/5/5620
+/usr/share/ncurses4/terminfo/5/5630-24
+/usr/share/ncurses4/terminfo/5/5630DMD-24
+/usr/share/ncurses4/terminfo/6
+/usr/share/ncurses4/terminfo/6/630-lm
+/usr/share/ncurses4/terminfo/6/630MTG-24
+/usr/share/ncurses4/terminfo/7
+/usr/share/ncurses4/terminfo/7/730MTG-24
+/usr/share/ncurses4/terminfo/7/730MTG-41
+/usr/share/ncurses4/terminfo/7/730MTG-41r
+/usr/share/ncurses4/terminfo/7/730MTGr
+/usr/share/ncurses4/terminfo/7/730MTGr-24
+/usr/share/ncurses4/terminfo/8
+/usr/share/ncurses4/terminfo/8/8510
+/usr/share/ncurses4/terminfo/9
+/usr/share/ncurses4/terminfo/9/955-hb
+/usr/share/ncurses4/terminfo/9/955-w
+/usr/share/ncurses4/terminfo/P
+/usr/share/ncurses4/terminfo/P/P12
+/usr/share/ncurses4/terminfo/P/P12-M
+/usr/share/ncurses4/terminfo/P/P12-M-W
+/usr/share/ncurses4/terminfo/P/P12-W
+/usr/share/ncurses4/terminfo/P/P14
+/usr/share/ncurses4/terminfo/P/P14-M
+/usr/share/ncurses4/terminfo/P/P14-M-W
+/usr/share/ncurses4/terminfo/P/P14-W
+/usr/share/ncurses4/terminfo/P/P4
+/usr/share/ncurses4/terminfo/P/P5
+/usr/share/ncurses4/terminfo/P/P7
+/usr/share/ncurses4/terminfo/P/P8
+/usr/share/ncurses4/terminfo/P/P8-W
+/usr/share/ncurses4/terminfo/P/P9
+/usr/share/ncurses4/terminfo/P/P9-8
+/usr/share/ncurses4/terminfo/P/P9-8-W
+/usr/share/ncurses4/terminfo/P/P9-W
+/usr/share/ncurses4/terminfo/X
+/usr/share/ncurses4/terminfo/X/X-hpterm
+/usr/share/ncurses4/terminfo/a
+/usr/share/ncurses4/terminfo/a/a210
+/usr/share/ncurses4/terminfo/a/a80
+/usr/share/ncurses4/terminfo/a/a980
+/usr/share/ncurses4/terminfo/a/aa4080
+/usr/share/ncurses4/terminfo/a/aaa
+/usr/share/ncurses4/terminfo/a/aaa+dec
+/usr/share/ncurses4/terminfo/a/aaa+rv
+/usr/share/ncurses4/terminfo/a/aaa+unk
+/usr/share/ncurses4/terminfo/a/aaa-18
+/usr/share/ncurses4/terminfo/a/aaa-18-rv
+/usr/share/ncurses4/terminfo/a/aaa-20
+/usr/share/ncurses4/terminfo/a/aaa-22
+/usr/share/ncurses4/terminfo/a/aaa-24
+/usr/share/ncurses4/terminfo/a/aaa-24-rv
+/usr/share/ncurses4/terminfo/a/aaa-26
+/usr/share/ncurses4/terminfo/a/aaa-28
+/usr/share/ncurses4/terminfo/a/aaa-30
+/usr/share/ncurses4/terminfo/a/aaa-30-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s
+/usr/share/ncurses4/terminfo/a/aaa-30-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv-ct
+/usr/share/ncurses4/terminfo/a/aaa-36
+/usr/share/ncurses4/terminfo/a/aaa-36-rv
+/usr/share/ncurses4/terminfo/a/aaa-40
+/usr/share/ncurses4/terminfo/a/aaa-40-rv
+/usr/share/ncurses4/terminfo/a/aaa-48
+/usr/share/ncurses4/terminfo/a/aaa-48-rv
+/usr/share/ncurses4/terminfo/a/aaa-60
+/usr/share/ncurses4/terminfo/a/aaa-60-dec-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-s
+/usr/share/ncurses4/terminfo/a/aaa-60-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-db
+/usr/share/ncurses4/terminfo/a/aaa-rv
+/usr/share/ncurses4/terminfo/a/aaa-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-rv-unk
+/usr/share/ncurses4/terminfo/a/aaa-s
+/usr/share/ncurses4/terminfo/a/aaa-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-s-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-unk
+/usr/share/ncurses4/terminfo/a/aas1901
+/usr/share/ncurses4/terminfo/a/abm80
+/usr/share/ncurses4/terminfo/a/abm85
+/usr/share/ncurses4/terminfo/a/abm85e
+/usr/share/ncurses4/terminfo/a/abm85h
+/usr/share/ncurses4/terminfo/a/abm85h-old
+/usr/share/ncurses4/terminfo/a/act4
+/usr/share/ncurses4/terminfo/a/act5
+/usr/share/ncurses4/terminfo/a/addrinfo
+/usr/share/ncurses4/terminfo/a/adds980
+/usr/share/ncurses4/terminfo/a/addsviewpoint
+/usr/share/ncurses4/terminfo/a/addsvp60
+/usr/share/ncurses4/terminfo/a/adm+sgr
+/usr/share/ncurses4/terminfo/a/adm1
+/usr/share/ncurses4/terminfo/a/adm11
+/usr/share/ncurses4/terminfo/a/adm1178
+/usr/share/ncurses4/terminfo/a/adm12
+/usr/share/ncurses4/terminfo/a/adm1a
+/usr/share/ncurses4/terminfo/a/adm2
+/usr/share/ncurses4/terminfo/a/adm20
+/usr/share/ncurses4/terminfo/a/adm21
+/usr/share/ncurses4/terminfo/a/adm22
+/usr/share/ncurses4/terminfo/a/adm3
+/usr/share/ncurses4/terminfo/a/adm31
+/usr/share/ncurses4/terminfo/a/adm31-old
+/usr/share/ncurses4/terminfo/a/adm36
+/usr/share/ncurses4/terminfo/a/adm3a
+/usr/share/ncurses4/terminfo/a/adm3a+
+/usr/share/ncurses4/terminfo/a/adm42
+/usr/share/ncurses4/terminfo/a/adm42-ns
+/usr/share/ncurses4/terminfo/a/adm5
+/usr/share/ncurses4/terminfo/a/aepro
+/usr/share/ncurses4/terminfo/a/aixterm-m
+/usr/share/ncurses4/terminfo/a/aixterm-m-old
+/usr/share/ncurses4/terminfo/a/aj
+/usr/share/ncurses4/terminfo/a/aj510
+/usr/share/ncurses4/terminfo/a/aj830
+/usr/share/ncurses4/terminfo/a/aj832
+/usr/share/ncurses4/terminfo/a/alt2
+/usr/share/ncurses4/terminfo/a/alt3
+/usr/share/ncurses4/terminfo/a/alt4
+/usr/share/ncurses4/terminfo/a/alt5
+/usr/share/ncurses4/terminfo/a/alt7
+/usr/share/ncurses4/terminfo/a/alt7pc
+/usr/share/ncurses4/terminfo/a/alto-h19
+/usr/share/ncurses4/terminfo/a/alto-heath
+/usr/share/ncurses4/terminfo/a/altoh19
+/usr/share/ncurses4/terminfo/a/altoheath
+/usr/share/ncurses4/terminfo/a/altos-2
+/usr/share/ncurses4/terminfo/a/altos-3
+/usr/share/ncurses4/terminfo/a/altos-4
+/usr/share/ncurses4/terminfo/a/altos-5
+/usr/share/ncurses4/terminfo/a/altos2
+/usr/share/ncurses4/terminfo/a/altos3
+/usr/share/ncurses4/terminfo/a/altos4
+/usr/share/ncurses4/terminfo/a/altos5
+/usr/share/ncurses4/terminfo/a/altos7
+/usr/share/ncurses4/terminfo/a/altos7pc
+/usr/share/ncurses4/terminfo/a/ambas
+/usr/share/ncurses4/terminfo/a/ambassador
+/usr/share/ncurses4/terminfo/a/amiga
+/usr/share/ncurses4/terminfo/a/amiga-h
+/usr/share/ncurses4/terminfo/a/amp219
+/usr/share/ncurses4/terminfo/a/amp219w
+/usr/share/ncurses4/terminfo/a/ampex-219
+/usr/share/ncurses4/terminfo/a/ampex-219w
+/usr/share/ncurses4/terminfo/a/ampex-232
+/usr/share/ncurses4/terminfo/a/ampex175
+/usr/share/ncurses4/terminfo/a/ampex175-b
+/usr/share/ncurses4/terminfo/a/ampex210
+/usr/share/ncurses4/terminfo/a/ampex219
+/usr/share/ncurses4/terminfo/a/ampex219w
+/usr/share/ncurses4/terminfo/a/ampex232
+/usr/share/ncurses4/terminfo/a/ampex232w
+/usr/share/ncurses4/terminfo/a/ampex80
+/usr/share/ncurses4/terminfo/a/annarbor4080
+/usr/share/ncurses4/terminfo/a/ansi
+/usr/share/ncurses4/terminfo/a/ansi-color-2-emx
+/usr/share/ncurses4/terminfo/a/ansi-color-3-emx
+/usr/share/ncurses4/terminfo/a/ansi-emx
+/usr/share/ncurses4/terminfo/a/ansi-m
+/usr/share/ncurses4/terminfo/a/ansi-mini
+/usr/share/ncurses4/terminfo/a/ansi-mono
+/usr/share/ncurses4/terminfo/a/ansi-nt
+/usr/share/ncurses4/terminfo/a/ansi.sys
+/usr/share/ncurses4/terminfo/a/ansi.sys-old
+/usr/share/ncurses4/terminfo/a/ansi.sysk
+/usr/share/ncurses4/terminfo/a/ansi43m
+/usr/share/ncurses4/terminfo/a/ansi77
+/usr/share/ncurses4/terminfo/a/ansi80x25
+/usr/share/ncurses4/terminfo/a/ansi80x25-mono
+/usr/share/ncurses4/terminfo/a/ansi80x25-raw
+/usr/share/ncurses4/terminfo/a/ansi80x30
+/usr/share/ncurses4/terminfo/a/ansi80x30-mono
+/usr/share/ncurses4/terminfo/a/ansi80x43
+/usr/share/ncurses4/terminfo/a/ansi80x43-mono
+/usr/share/ncurses4/terminfo/a/ansi80x50
+/usr/share/ncurses4/terminfo/a/ansi80x50-mono
+/usr/share/ncurses4/terminfo/a/ansi80x60
+/usr/share/ncurses4/terminfo/a/ansi80x60-mono
+/usr/share/ncurses4/terminfo/a/ansil
+/usr/share/ncurses4/terminfo/a/ansil-mono
+/usr/share/ncurses4/terminfo/a/ansis
+/usr/share/ncurses4/terminfo/a/ansis-mono
+/usr/share/ncurses4/terminfo/a/ansisysk
+/usr/share/ncurses4/terminfo/a/ansiw
+/usr/share/ncurses4/terminfo/a/ap-vm80
+/usr/share/ncurses4/terminfo/a/apl
+/usr/share/ncurses4/terminfo/a/apollo
+/usr/share/ncurses4/terminfo/a/apollo_15P
+/usr/share/ncurses4/terminfo/a/apollo_19L
+/usr/share/ncurses4/terminfo/a/apollo_color
+/usr/share/ncurses4/terminfo/a/apple-80
+/usr/share/ncurses4/terminfo/a/apple-ae
+/usr/share/ncurses4/terminfo/a/apple-soroc
+/usr/share/ncurses4/terminfo/a/apple-uterm
+/usr/share/ncurses4/terminfo/a/apple-uterm-vb
+/usr/share/ncurses4/terminfo/a/apple-videx
+/usr/share/ncurses4/terminfo/a/apple-videx2
+/usr/share/ncurses4/terminfo/a/apple-videx3
+/usr/share/ncurses4/terminfo/a/apple-vm80
+/usr/share/ncurses4/terminfo/a/apple2e
+/usr/share/ncurses4/terminfo/a/apple2e-p
+/usr/share/ncurses4/terminfo/a/apple80p
+/usr/share/ncurses4/terminfo/a/appleII
+/usr/share/ncurses4/terminfo/a/appleIIc
+/usr/share/ncurses4/terminfo/a/appleIIe
+/usr/share/ncurses4/terminfo/a/appleIIgs
+/usr/share/ncurses4/terminfo/a/at386
+/usr/share/ncurses4/terminfo/a/atari
+/usr/share/ncurses4/terminfo/a/att2300
+/usr/share/ncurses4/terminfo/a/att2350
+/usr/share/ncurses4/terminfo/a/att4410
+/usr/share/ncurses4/terminfo/a/att4410-w
+/usr/share/ncurses4/terminfo/a/att4410v1
+/usr/share/ncurses4/terminfo/a/att4410v1-w
+/usr/share/ncurses4/terminfo/a/att4415
+/usr/share/ncurses4/terminfo/a/att4415+nl
+/usr/share/ncurses4/terminfo/a/att4415-nl
+/usr/share/ncurses4/terminfo/a/att4415-rv
+/usr/share/ncurses4/terminfo/a/att4415-rv-nl
+/usr/share/ncurses4/terminfo/a/att4415-w
+/usr/share/ncurses4/terminfo/a/att4415-w-nl
+/usr/share/ncurses4/terminfo/a/att4415-w-rv
+/usr/share/ncurses4/terminfo/a/att4415-w-rv-n
+/usr/share/ncurses4/terminfo/a/att4418
+/usr/share/ncurses4/terminfo/a/att4418-w
+/usr/share/ncurses4/terminfo/a/att4420
+/usr/share/ncurses4/terminfo/a/att4424
+/usr/share/ncurses4/terminfo/a/att4424-1
+/usr/share/ncurses4/terminfo/a/att4424m
+/usr/share/ncurses4/terminfo/a/att4425
+/usr/share/ncurses4/terminfo/a/att4425-nl
+/usr/share/ncurses4/terminfo/a/att4425-w
+/usr/share/ncurses4/terminfo/a/att4426
+/usr/share/ncurses4/terminfo/a/att500
+/usr/share/ncurses4/terminfo/a/att505
+/usr/share/ncurses4/terminfo/a/att505-24
+/usr/share/ncurses4/terminfo/a/att510a
+/usr/share/ncurses4/terminfo/a/att510d
+/usr/share/ncurses4/terminfo/a/att513
+/usr/share/ncurses4/terminfo/a/att5310
+/usr/share/ncurses4/terminfo/a/att5320
+/usr/share/ncurses4/terminfo/a/att5410
+/usr/share/ncurses4/terminfo/a/att5410-w
+/usr/share/ncurses4/terminfo/a/att5410v1
+/usr/share/ncurses4/terminfo/a/att5410v1-w
+/usr/share/ncurses4/terminfo/a/att5418
+/usr/share/ncurses4/terminfo/a/att5418-w
+/usr/share/ncurses4/terminfo/a/att5420
+/usr/share/ncurses4/terminfo/a/att5420+nl
+/usr/share/ncurses4/terminfo/a/att5420-nl
+/usr/share/ncurses4/terminfo/a/att5420-rv
+/usr/share/ncurses4/terminfo/a/att5420-rv-nl
+/usr/share/ncurses4/terminfo/a/att5420-w
+/usr/share/ncurses4/terminfo/a/att5420-w-nl
+/usr/share/ncurses4/terminfo/a/att5420-w-rv
+/usr/share/ncurses4/terminfo/a/att5420-w-rv-n
+/usr/share/ncurses4/terminfo/a/att5420_2
+/usr/share/ncurses4/terminfo/a/att5420_2-w
+/usr/share/ncurses4/terminfo/a/att5425
+/usr/share/ncurses4/terminfo/a/att5425-nl
+/usr/share/ncurses4/terminfo/a/att5425-w
+/usr/share/ncurses4/terminfo/a/att5430
+/usr/share/ncurses4/terminfo/a/att5620
+/usr/share/ncurses4/terminfo/a/att5620-1
+/usr/share/ncurses4/terminfo/a/att5620-24
+/usr/share/ncurses4/terminfo/a/att5620-34
+/usr/share/ncurses4/terminfo/a/att5620-s
+/usr/share/ncurses4/terminfo/a/att605
+/usr/share/ncurses4/terminfo/a/att605-pc
+/usr/share/ncurses4/terminfo/a/att605-w
+/usr/share/ncurses4/terminfo/a/att610
+/usr/share/ncurses4/terminfo/a/att610-103k
+/usr/share/ncurses4/terminfo/a/att610-103k-w
+/usr/share/ncurses4/terminfo/a/att610-w
+/usr/share/ncurses4/terminfo/a/att615
+/usr/share/ncurses4/terminfo/a/att615-103k
+/usr/share/ncurses4/terminfo/a/att615-103k-w
+/usr/share/ncurses4/terminfo/a/att615-w
+/usr/share/ncurses4/terminfo/a/att620
+/usr/share/ncurses4/terminfo/a/att620-103k
+/usr/share/ncurses4/terminfo/a/att620-103k-w
+/usr/share/ncurses4/terminfo/a/att620-w
+/usr/share/ncurses4/terminfo/a/att630
+/usr/share/ncurses4/terminfo/a/att630-24
+/usr/share/ncurses4/terminfo/a/att6386
+/usr/share/ncurses4/terminfo/a/att730
+/usr/share/ncurses4/terminfo/a/att730-24
+/usr/share/ncurses4/terminfo/a/att730-41
+/usr/share/ncurses4/terminfo/a/att7300
+/usr/share/ncurses4/terminfo/a/att730r
+/usr/share/ncurses4/terminfo/a/att730r-24
+/usr/share/ncurses4/terminfo/a/att730r-41
+/usr/share/ncurses4/terminfo/a/avatar
+/usr/share/ncurses4/terminfo/a/avatar0
+/usr/share/ncurses4/terminfo/a/avatar0+
+/usr/share/ncurses4/terminfo/a/avatar1
+/usr/share/ncurses4/terminfo/a/avt
+/usr/share/ncurses4/terminfo/a/avt+s
+/usr/share/ncurses4/terminfo/a/avt-ns
+/usr/share/ncurses4/terminfo/a/avt-rv
+/usr/share/ncurses4/terminfo/a/avt-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-rv-s
+/usr/share/ncurses4/terminfo/a/avt-s
+/usr/share/ncurses4/terminfo/a/avt-w
+/usr/share/ncurses4/terminfo/a/avt-w-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv
+/usr/share/ncurses4/terminfo/a/avt-w-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv-s
+/usr/share/ncurses4/terminfo/a/avt-w-s
+/usr/share/ncurses4/terminfo/a/aws
+/usr/share/ncurses4/terminfo/a/awsc
+/usr/share/ncurses4/terminfo/b
+/usr/share/ncurses4/terminfo/b/b-128
+/usr/share/ncurses4/terminfo/b/bantam
+/usr/share/ncurses4/terminfo/b/basic4
+/usr/share/ncurses4/terminfo/b/basis
+/usr/share/ncurses4/terminfo/b/bct510a
+/usr/share/ncurses4/terminfo/b/bct510d
+/usr/share/ncurses4/terminfo/b/beacon
+/usr/share/ncurses4/terminfo/b/bee
+/usr/share/ncurses4/terminfo/b/beehive
+/usr/share/ncurses4/terminfo/b/beehive3
+/usr/share/ncurses4/terminfo/b/beehive4
+/usr/share/ncurses4/terminfo/b/beehiveIIIm
+/usr/share/ncurses4/terminfo/b/beterm
+/usr/share/ncurses4/terminfo/b/bg1.25
+/usr/share/ncurses4/terminfo/b/bg1.25nv
+/usr/share/ncurses4/terminfo/b/bg1.25rv
+/usr/share/ncurses4/terminfo/b/bg2.0
+/usr/share/ncurses4/terminfo/b/bg2.0nv
+/usr/share/ncurses4/terminfo/b/bg2.0rv
+/usr/share/ncurses4/terminfo/b/bg3.10
+/usr/share/ncurses4/terminfo/b/bg3.10nv
+/usr/share/ncurses4/terminfo/b/bg3.10rv
+/usr/share/ncurses4/terminfo/b/bh3m
+/usr/share/ncurses4/terminfo/b/bh4
+/usr/share/ncurses4/terminfo/b/bitgraph
+/usr/share/ncurses4/terminfo/b/blit
+/usr/share/ncurses4/terminfo/b/bobcat
+/usr/share/ncurses4/terminfo/b/bsdos
+/usr/share/ncurses4/terminfo/b/bsdos-bold
+/usr/share/ncurses4/terminfo/c
+/usr/share/ncurses4/terminfo/c/c100
+/usr/share/ncurses4/terminfo/c/c100-1p
+/usr/share/ncurses4/terminfo/c/c100-4p
+/usr/share/ncurses4/terminfo/c/c100-rv
+/usr/share/ncurses4/terminfo/c/c100-rv-4p
+/usr/share/ncurses4/terminfo/c/c104
+/usr/share/ncurses4/terminfo/c/c108
+/usr/share/ncurses4/terminfo/c/c108-4p
+/usr/share/ncurses4/terminfo/c/c108-8p
+/usr/share/ncurses4/terminfo/c/c108-rv
+/usr/share/ncurses4/terminfo/c/c108-rv-4p
+/usr/share/ncurses4/terminfo/c/c108-rv-8p
+/usr/share/ncurses4/terminfo/c/c108-w
+/usr/share/ncurses4/terminfo/c/c108-w-8p
+/usr/share/ncurses4/terminfo/c/c300
+/usr/share/ncurses4/terminfo/c/c301
+/usr/share/ncurses4/terminfo/c/c321
+/usr/share/ncurses4/terminfo/c/ca22851
+/usr/share/ncurses4/terminfo/c/cad68-2
+/usr/share/ncurses4/terminfo/c/cad68-3
+/usr/share/ncurses4/terminfo/c/cbblit
+/usr/share/ncurses4/terminfo/c/cbunix
+/usr/share/ncurses4/terminfo/c/cci
+/usr/share/ncurses4/terminfo/c/cci1
+/usr/share/ncurses4/terminfo/c/cdc456
+/usr/share/ncurses4/terminfo/c/cdc721
+/usr/share/ncurses4/terminfo/c/cdc721-esc
+/usr/share/ncurses4/terminfo/c/cdc721ll
+/usr/share/ncurses4/terminfo/c/cdc752
+/usr/share/ncurses4/terminfo/c/cdc756
+/usr/share/ncurses4/terminfo/c/cg7900
+/usr/share/ncurses4/terminfo/c/cgc2
+/usr/share/ncurses4/terminfo/c/cgc3
+/usr/share/ncurses4/terminfo/c/chromatics
+/usr/share/ncurses4/terminfo/c/ci8510
+/usr/share/ncurses4/terminfo/c/cit-80
+/usr/share/ncurses4/terminfo/c/cit101
+/usr/share/ncurses4/terminfo/c/cit101e
+/usr/share/ncurses4/terminfo/c/cit101e-132
+/usr/share/ncurses4/terminfo/c/cit101e-n
+/usr/share/ncurses4/terminfo/c/cit101e-n132
+/usr/share/ncurses4/terminfo/c/cit101e-rv
+/usr/share/ncurses4/terminfo/c/cit500
+/usr/share/ncurses4/terminfo/c/cit80
+/usr/share/ncurses4/terminfo/c/citc
+/usr/share/ncurses4/terminfo/c/citoh
+/usr/share/ncurses4/terminfo/c/citoh-6lpi
+/usr/share/ncurses4/terminfo/c/citoh-8lpi
+/usr/share/ncurses4/terminfo/c/citoh-comp
+/usr/share/ncurses4/terminfo/c/citoh-elite
+/usr/share/ncurses4/terminfo/c/citoh-pica
+/usr/share/ncurses4/terminfo/c/citoh-prop
+/usr/share/ncurses4/terminfo/c/citoh-ps
+/usr/share/ncurses4/terminfo/c/coco3
+/usr/share/ncurses4/terminfo/c/coherent
+/usr/share/ncurses4/terminfo/c/color_xterm
+/usr/share/ncurses4/terminfo/c/colorscan
+/usr/share/ncurses4/terminfo/c/commodore
+/usr/share/ncurses4/terminfo/c/concept
+/usr/share/ncurses4/terminfo/c/concept-avt
+/usr/share/ncurses4/terminfo/c/concept100
+/usr/share/ncurses4/terminfo/c/concept100-rv
+/usr/share/ncurses4/terminfo/c/concept108
+/usr/share/ncurses4/terminfo/c/concept108-4p
+/usr/share/ncurses4/terminfo/c/concept108-8p
+/usr/share/ncurses4/terminfo/c/concept108-w-8
+/usr/share/ncurses4/terminfo/c/concept108-w8p
+/usr/share/ncurses4/terminfo/c/concept108rv4p
+/usr/share/ncurses4/terminfo/c/cons25
+/usr/share/ncurses4/terminfo/c/cons25-iso-m
+/usr/share/ncurses4/terminfo/c/cons25-iso8859
+/usr/share/ncurses4/terminfo/c/cons25-koi8-r
+/usr/share/ncurses4/terminfo/c/cons25-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons25-m
+/usr/share/ncurses4/terminfo/c/cons25l1
+/usr/share/ncurses4/terminfo/c/cons25l1-m
+/usr/share/ncurses4/terminfo/c/cons25r
+/usr/share/ncurses4/terminfo/c/cons25r-m
+/usr/share/ncurses4/terminfo/c/cons25w
+/usr/share/ncurses4/terminfo/c/cons30
+/usr/share/ncurses4/terminfo/c/cons30-m
+/usr/share/ncurses4/terminfo/c/cons43
+/usr/share/ncurses4/terminfo/c/cons43-m
+/usr/share/ncurses4/terminfo/c/cons50
+/usr/share/ncurses4/terminfo/c/cons50-iso-m
+/usr/share/ncurses4/terminfo/c/cons50-iso8859
+/usr/share/ncurses4/terminfo/c/cons50-koi8r
+/usr/share/ncurses4/terminfo/c/cons50-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons50-m
+/usr/share/ncurses4/terminfo/c/cons50l1
+/usr/share/ncurses4/terminfo/c/cons50l1-m
+/usr/share/ncurses4/terminfo/c/cons50r
+/usr/share/ncurses4/terminfo/c/cons50r-m
+/usr/share/ncurses4/terminfo/c/cons60
+/usr/share/ncurses4/terminfo/c/cons60-iso
+/usr/share/ncurses4/terminfo/c/cons60-iso-m
+/usr/share/ncurses4/terminfo/c/cons60-koi8r
+/usr/share/ncurses4/terminfo/c/cons60-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons60-m
+/usr/share/ncurses4/terminfo/c/cons60l1
+/usr/share/ncurses4/terminfo/c/cons60l1-m
+/usr/share/ncurses4/terminfo/c/cons60r
+/usr/share/ncurses4/terminfo/c/cons60r-m
+/usr/share/ncurses4/terminfo/c/contel300
+/usr/share/ncurses4/terminfo/c/contel301
+/usr/share/ncurses4/terminfo/c/contel320
+/usr/share/ncurses4/terminfo/c/contel321
+/usr/share/ncurses4/terminfo/c/cops
+/usr/share/ncurses4/terminfo/c/cops-10
+/usr/share/ncurses4/terminfo/c/cops10
+/usr/share/ncurses4/terminfo/c/cs10
+/usr/share/ncurses4/terminfo/c/cs10-w
+/usr/share/ncurses4/terminfo/c/ct82
+/usr/share/ncurses4/terminfo/c/ct8500
+/usr/share/ncurses4/terminfo/c/ctrm
+/usr/share/ncurses4/terminfo/c/cx
+/usr/share/ncurses4/terminfo/c/cx100
+/usr/share/ncurses4/terminfo/c/cyb110
+/usr/share/ncurses4/terminfo/c/cyb83
+/usr/share/ncurses4/terminfo/d
+/usr/share/ncurses4/terminfo/d/d132
+/usr/share/ncurses4/terminfo/d/d80
+/usr/share/ncurses4/terminfo/d/d800
+/usr/share/ncurses4/terminfo/d/datagraphix
+/usr/share/ncurses4/terminfo/d/datamedia2500
+/usr/share/ncurses4/terminfo/d/datapoint
+/usr/share/ncurses4/terminfo/d/dataspeed40
+/usr/share/ncurses4/terminfo/d/dd5000
+/usr/share/ncurses4/terminfo/d/ddr
+/usr/share/ncurses4/terminfo/d/ddr3180
+/usr/share/ncurses4/terminfo/d/dec-vt100
+/usr/share/ncurses4/terminfo/d/dec-vt220
+/usr/share/ncurses4/terminfo/d/dec-vt330
+/usr/share/ncurses4/terminfo/d/dec-vt340
+/usr/share/ncurses4/terminfo/d/dec-vt400
+/usr/share/ncurses4/terminfo/d/decpro
+/usr/share/ncurses4/terminfo/d/decwriter
+/usr/share/ncurses4/terminfo/d/delta
+/usr/share/ncurses4/terminfo/d/dg-ansi
+/usr/share/ncurses4/terminfo/d/dg100
+/usr/share/ncurses4/terminfo/d/dg200
+/usr/share/ncurses4/terminfo/d/dg210
+/usr/share/ncurses4/terminfo/d/dg211
+/usr/share/ncurses4/terminfo/d/dg450
+/usr/share/ncurses4/terminfo/d/dg460-ansi
+/usr/share/ncurses4/terminfo/d/dg6053
+/usr/share/ncurses4/terminfo/d/dg6134
+/usr/share/ncurses4/terminfo/d/diablo
+/usr/share/ncurses4/terminfo/d/diablo-lm
+/usr/share/ncurses4/terminfo/d/diablo1620
+/usr/share/ncurses4/terminfo/d/diablo1620-m8
+/usr/share/ncurses4/terminfo/d/diablo1640
+/usr/share/ncurses4/terminfo/d/diablo1640-lm
+/usr/share/ncurses4/terminfo/d/diablo1640-m8
+/usr/share/ncurses4/terminfo/d/diablo1720
+/usr/share/ncurses4/terminfo/d/diablo1730
+/usr/share/ncurses4/terminfo/d/diablo1740
+/usr/share/ncurses4/terminfo/d/diablo1740-lm
+/usr/share/ncurses4/terminfo/d/diablo450
+/usr/share/ncurses4/terminfo/d/diablo630
+/usr/share/ncurses4/terminfo/d/dialogue
+/usr/share/ncurses4/terminfo/d/dialogue80
+/usr/share/ncurses4/terminfo/d/digilog
+/usr/share/ncurses4/terminfo/d/dku7003
+/usr/share/ncurses4/terminfo/d/dku7003-dumb
+/usr/share/ncurses4/terminfo/d/dm1520
+/usr/share/ncurses4/terminfo/d/dm1521
+/usr/share/ncurses4/terminfo/d/dm2500
+/usr/share/ncurses4/terminfo/d/dm3025
+/usr/share/ncurses4/terminfo/d/dm3045
+/usr/share/ncurses4/terminfo/d/dm80
+/usr/share/ncurses4/terminfo/d/dm80w
+/usr/share/ncurses4/terminfo/d/dmchat
+/usr/share/ncurses4/terminfo/d/dmd
+/usr/share/ncurses4/terminfo/d/dmd-24
+/usr/share/ncurses4/terminfo/d/dmd-34
+/usr/share/ncurses4/terminfo/d/dmd1
+/usr/share/ncurses4/terminfo/d/dmdt80
+/usr/share/ncurses4/terminfo/d/dmdt80w
+/usr/share/ncurses4/terminfo/d/dmterm
+/usr/share/ncurses4/terminfo/d/dp3360
+/usr/share/ncurses4/terminfo/d/dp8242
+/usr/share/ncurses4/terminfo/d/ds40
+/usr/share/ncurses4/terminfo/d/ds40-2
+/usr/share/ncurses4/terminfo/d/dt-100
+/usr/share/ncurses4/terminfo/d/dt-100w
+/usr/share/ncurses4/terminfo/d/dt100
+/usr/share/ncurses4/terminfo/d/dt100w
+/usr/share/ncurses4/terminfo/d/dt110
+/usr/share/ncurses4/terminfo/d/dt80
+/usr/share/ncurses4/terminfo/d/dt80-sas
+/usr/share/ncurses4/terminfo/d/dt80w
+/usr/share/ncurses4/terminfo/d/dtc300s
+/usr/share/ncurses4/terminfo/d/dtc382
+/usr/share/ncurses4/terminfo/d/dtterm
+/usr/share/ncurses4/terminfo/d/dumb
+/usr/share/ncurses4/terminfo/d/dw
+/usr/share/ncurses4/terminfo/d/dw1
+/usr/share/ncurses4/terminfo/d/dw2
+/usr/share/ncurses4/terminfo/d/dw3
+/usr/share/ncurses4/terminfo/d/dw4
+/usr/share/ncurses4/terminfo/d/dwk
+/usr/share/ncurses4/terminfo/d/dwk-vt
+/usr/share/ncurses4/terminfo/e
+/usr/share/ncurses4/terminfo/e/ecma+color
+/usr/share/ncurses4/terminfo/e/ecma+sgr
+/usr/share/ncurses4/terminfo/e/emots
+/usr/share/ncurses4/terminfo/e/emu
+/usr/share/ncurses4/terminfo/e/env230
+/usr/share/ncurses4/terminfo/e/envision230
+/usr/share/ncurses4/terminfo/e/ep40
+/usr/share/ncurses4/terminfo/e/ep4000
+/usr/share/ncurses4/terminfo/e/ep4080
+/usr/share/ncurses4/terminfo/e/ep48
+/usr/share/ncurses4/terminfo/e/ergo4000
+/usr/share/ncurses4/terminfo/e/esprit
+/usr/share/ncurses4/terminfo/e/esprit-am
+/usr/share/ncurses4/terminfo/e/eterm
+/usr/share/ncurses4/terminfo/e/ex155
+/usr/share/ncurses4/terminfo/e/excel62
+/usr/share/ncurses4/terminfo/e/excel62-rv
+/usr/share/ncurses4/terminfo/e/excel62-w
+/usr/share/ncurses4/terminfo/e/excel64
+/usr/share/ncurses4/terminfo/e/excel64-rv
+/usr/share/ncurses4/terminfo/e/excel64-w
+/usr/share/ncurses4/terminfo/e/exec80
+/usr/share/ncurses4/terminfo/f
+/usr/share/ncurses4/terminfo/f/f100
+/usr/share/ncurses4/terminfo/f/f100-rv
+/usr/share/ncurses4/terminfo/f/f110
+/usr/share/ncurses4/terminfo/f/f110-14
+/usr/share/ncurses4/terminfo/f/f110-14w
+/usr/share/ncurses4/terminfo/f/f110-w
+/usr/share/ncurses4/terminfo/f/f1720
+/usr/share/ncurses4/terminfo/f/f1720a
+/usr/share/ncurses4/terminfo/f/f200
+/usr/share/ncurses4/terminfo/f/f200-w
+/usr/share/ncurses4/terminfo/f/f200vi
+/usr/share/ncurses4/terminfo/f/f200vi-w
+/usr/share/ncurses4/terminfo/f/falco
+/usr/share/ncurses4/terminfo/f/falco-p
+/usr/share/ncurses4/terminfo/f/fenix
+/usr/share/ncurses4/terminfo/f/fenixw
+/usr/share/ncurses4/terminfo/f/fixterm
+/usr/share/ncurses4/terminfo/f/fortune
+/usr/share/ncurses4/terminfo/f/fos
+/usr/share/ncurses4/terminfo/f/fox
+/usr/share/ncurses4/terminfo/f/freedom
+/usr/share/ncurses4/terminfo/f/freedom-rv
+/usr/share/ncurses4/terminfo/f/freedom100
+/usr/share/ncurses4/terminfo/f/freedom110
+/usr/share/ncurses4/terminfo/f/freedom200
+/usr/share/ncurses4/terminfo/g
+/usr/share/ncurses4/terminfo/g/gator
+/usr/share/ncurses4/terminfo/g/gator-52
+/usr/share/ncurses4/terminfo/g/gator-52t
+/usr/share/ncurses4/terminfo/g/gator-t
+/usr/share/ncurses4/terminfo/g/gigi
+/usr/share/ncurses4/terminfo/g/glasstty
+/usr/share/ncurses4/terminfo/g/go-225
+/usr/share/ncurses4/terminfo/g/go140
+/usr/share/ncurses4/terminfo/g/go140w
+/usr/share/ncurses4/terminfo/g/go225
+/usr/share/ncurses4/terminfo/g/graphos
+/usr/share/ncurses4/terminfo/g/graphos-30
+/usr/share/ncurses4/terminfo/g/gs5430
+/usr/share/ncurses4/terminfo/g/gs5430-22
+/usr/share/ncurses4/terminfo/g/gs5430-24
+/usr/share/ncurses4/terminfo/g/gs6300
+/usr/share/ncurses4/terminfo/g/gsi
+/usr/share/ncurses4/terminfo/g/gt100
+/usr/share/ncurses4/terminfo/g/gt100a
+/usr/share/ncurses4/terminfo/g/gt40
+/usr/share/ncurses4/terminfo/g/gt42
+/usr/share/ncurses4/terminfo/g/guru
+/usr/share/ncurses4/terminfo/g/guru+rv
+/usr/share/ncurses4/terminfo/g/guru+s
+/usr/share/ncurses4/terminfo/g/guru+unk
+/usr/share/ncurses4/terminfo/g/guru-24
+/usr/share/ncurses4/terminfo/g/guru-33
+/usr/share/ncurses4/terminfo/g/guru-33-rv
+/usr/share/ncurses4/terminfo/g/guru-33-s
+/usr/share/ncurses4/terminfo/g/guru-44
+/usr/share/ncurses4/terminfo/g/guru-44-s
+/usr/share/ncurses4/terminfo/g/guru-76
+/usr/share/ncurses4/terminfo/g/guru-76-lp
+/usr/share/ncurses4/terminfo/g/guru-76-s
+/usr/share/ncurses4/terminfo/g/guru-76-w
+/usr/share/ncurses4/terminfo/g/guru-76-w-s
+/usr/share/ncurses4/terminfo/g/guru-76-wm
+/usr/share/ncurses4/terminfo/g/guru-lp
+/usr/share/ncurses4/terminfo/g/guru-nctxt
+/usr/share/ncurses4/terminfo/g/guru-rv
+/usr/share/ncurses4/terminfo/g/guru-s
+/usr/share/ncurses4/terminfo/h
+/usr/share/ncurses4/terminfo/h/h-100
+/usr/share/ncurses4/terminfo/h/h-100bw
+/usr/share/ncurses4/terminfo/h/h100
+/usr/share/ncurses4/terminfo/h/h100bw
+/usr/share/ncurses4/terminfo/h/h19
+/usr/share/ncurses4/terminfo/h/h19-a
+/usr/share/ncurses4/terminfo/h/h19-b
+/usr/share/ncurses4/terminfo/h/h19-bs
+/usr/share/ncurses4/terminfo/h/h19-g
+/usr/share/ncurses4/terminfo/h/h19-smul
+/usr/share/ncurses4/terminfo/h/h19-u
+/usr/share/ncurses4/terminfo/h/h19-us
+/usr/share/ncurses4/terminfo/h/h19a
+/usr/share/ncurses4/terminfo/h/h19g
+/usr/share/ncurses4/terminfo/h/h19k
+/usr/share/ncurses4/terminfo/h/h19kermit
+/usr/share/ncurses4/terminfo/h/h19us
+/usr/share/ncurses4/terminfo/h/h29a-kc-bc
+/usr/share/ncurses4/terminfo/h/h29a-kc-uc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-bc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-uc
+/usr/share/ncurses4/terminfo/h/h80
+/usr/share/ncurses4/terminfo/h/ha8675
+/usr/share/ncurses4/terminfo/h/ha8686
+/usr/share/ncurses4/terminfo/h/hazel
+/usr/share/ncurses4/terminfo/h/hds200
+/usr/share/ncurses4/terminfo/h/he80
+/usr/share/ncurses4/terminfo/h/heath
+/usr/share/ncurses4/terminfo/h/heath-19
+/usr/share/ncurses4/terminfo/h/heath-ansi
+/usr/share/ncurses4/terminfo/h/heathkit
+/usr/share/ncurses4/terminfo/h/heathkit-a
+/usr/share/ncurses4/terminfo/h/hft
+/usr/share/ncurses4/terminfo/h/hft-c
+/usr/share/ncurses4/terminfo/h/hirez100
+/usr/share/ncurses4/terminfo/h/hirez100-w
+/usr/share/ncurses4/terminfo/h/hmod1
+/usr/share/ncurses4/terminfo/h/hp
+/usr/share/ncurses4/terminfo/h/hp+arrows
+/usr/share/ncurses4/terminfo/h/hp+color
+/usr/share/ncurses4/terminfo/h/hp+labels
+/usr/share/ncurses4/terminfo/h/hp+pfk+arrows
+/usr/share/ncurses4/terminfo/h/hp+pfk+cr
+/usr/share/ncurses4/terminfo/h/hp+pfk-cr
+/usr/share/ncurses4/terminfo/h/hp+printer
+/usr/share/ncurses4/terminfo/h/hp110
+/usr/share/ncurses4/terminfo/h/hp150
+/usr/share/ncurses4/terminfo/h/hp2
+/usr/share/ncurses4/terminfo/h/hp236
+/usr/share/ncurses4/terminfo/h/hp2382
+/usr/share/ncurses4/terminfo/h/hp2382a
+/usr/share/ncurses4/terminfo/h/hp2392
+/usr/share/ncurses4/terminfo/h/hp2397
+/usr/share/ncurses4/terminfo/h/hp2397a
+/usr/share/ncurses4/terminfo/h/hp2621
+/usr/share/ncurses4/terminfo/h/hp2621-48
+/usr/share/ncurses4/terminfo/h/hp2621-a
+/usr/share/ncurses4/terminfo/h/hp2621-ba
+/usr/share/ncurses4/terminfo/h/hp2621-fl
+/usr/share/ncurses4/terminfo/h/hp2621-k45
+/usr/share/ncurses4/terminfo/h/hp2621-nl
+/usr/share/ncurses4/terminfo/h/hp2621-nt
+/usr/share/ncurses4/terminfo/h/hp2621-wl
+/usr/share/ncurses4/terminfo/h/hp2621A
+/usr/share/ncurses4/terminfo/h/hp2621a
+/usr/share/ncurses4/terminfo/h/hp2621a-a
+/usr/share/ncurses4/terminfo/h/hp2621b
+/usr/share/ncurses4/terminfo/h/hp2621b-kx
+/usr/share/ncurses4/terminfo/h/hp2621b-kx-p
+/usr/share/ncurses4/terminfo/h/hp2621b-p
+/usr/share/ncurses4/terminfo/h/hp2621k45
+/usr/share/ncurses4/terminfo/h/hp2621p
+/usr/share/ncurses4/terminfo/h/hp2621p-a
+/usr/share/ncurses4/terminfo/h/hp2622
+/usr/share/ncurses4/terminfo/h/hp2622a
+/usr/share/ncurses4/terminfo/h/hp2623
+/usr/share/ncurses4/terminfo/h/hp2623a
+/usr/share/ncurses4/terminfo/h/hp2624
+/usr/share/ncurses4/terminfo/h/hp2624-10p
+/usr/share/ncurses4/terminfo/h/hp2624a
+/usr/share/ncurses4/terminfo/h/hp2624a-10p
+/usr/share/ncurses4/terminfo/h/hp2624b
+/usr/share/ncurses4/terminfo/h/hp2624b-10p
+/usr/share/ncurses4/terminfo/h/hp2624b-10p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-p
+/usr/share/ncurses4/terminfo/h/hp2626
+/usr/share/ncurses4/terminfo/h/hp2626-12
+/usr/share/ncurses4/terminfo/h/hp2626-12-s
+/usr/share/ncurses4/terminfo/h/hp2626-12x40
+/usr/share/ncurses4/terminfo/h/hp2626-ns
+/usr/share/ncurses4/terminfo/h/hp2626-s
+/usr/share/ncurses4/terminfo/h/hp2626-x40
+/usr/share/ncurses4/terminfo/h/hp2626a
+/usr/share/ncurses4/terminfo/h/hp2626p
+/usr/share/ncurses4/terminfo/h/hp2627a
+/usr/share/ncurses4/terminfo/h/hp2627a-rev
+/usr/share/ncurses4/terminfo/h/hp2627c
+/usr/share/ncurses4/terminfo/h/hp262x
+/usr/share/ncurses4/terminfo/h/hp2640a
+/usr/share/ncurses4/terminfo/h/hp2640b
+/usr/share/ncurses4/terminfo/h/hp2641a
+/usr/share/ncurses4/terminfo/h/hp2644a
+/usr/share/ncurses4/terminfo/h/hp2645
+/usr/share/ncurses4/terminfo/h/hp2645a
+/usr/share/ncurses4/terminfo/h/hp2647a
+/usr/share/ncurses4/terminfo/h/hp2648
+/usr/share/ncurses4/terminfo/h/hp2648a
+/usr/share/ncurses4/terminfo/h/hp300h
+/usr/share/ncurses4/terminfo/h/hp45
+/usr/share/ncurses4/terminfo/h/hp700
+/usr/share/ncurses4/terminfo/h/hp700-wy
+/usr/share/ncurses4/terminfo/h/hp70092
+/usr/share/ncurses4/terminfo/h/hp70092A
+/usr/share/ncurses4/terminfo/h/hp70092a
+/usr/share/ncurses4/terminfo/h/hp9837
+/usr/share/ncurses4/terminfo/h/hp9845
+/usr/share/ncurses4/terminfo/h/hp98550
+/usr/share/ncurses4/terminfo/h/hp98550a
+/usr/share/ncurses4/terminfo/h/hp98720
+/usr/share/ncurses4/terminfo/h/hp98721
+/usr/share/ncurses4/terminfo/h/hpansi
+/usr/share/ncurses4/terminfo/h/hpex
+/usr/share/ncurses4/terminfo/h/hpex2
+/usr/share/ncurses4/terminfo/h/hpgeneric
+/usr/share/ncurses4/terminfo/h/hpsub
+/usr/share/ncurses4/terminfo/h/hpterm
+/usr/share/ncurses4/terminfo/h/htx11
+/usr/share/ncurses4/terminfo/h/hz1000
+/usr/share/ncurses4/terminfo/h/hz1420
+/usr/share/ncurses4/terminfo/h/hz1500
+/usr/share/ncurses4/terminfo/h/hz1510
+/usr/share/ncurses4/terminfo/h/hz1520
+/usr/share/ncurses4/terminfo/h/hz1520-noesc
+/usr/share/ncurses4/terminfo/h/hz1552
+/usr/share/ncurses4/terminfo/h/hz1552-rv
+/usr/share/ncurses4/terminfo/h/hz2000
+/usr/share/ncurses4/terminfo/i
+/usr/share/ncurses4/terminfo/i/i100
+/usr/share/ncurses4/terminfo/i/i3101
+/usr/share/ncurses4/terminfo/i/i3151
+/usr/share/ncurses4/terminfo/i/i3164
+/usr/share/ncurses4/terminfo/i/i400
+/usr/share/ncurses4/terminfo/i/ibcs2
+/usr/share/ncurses4/terminfo/i/ibm-apl
+/usr/share/ncurses4/terminfo/i/ibm-pc
+/usr/share/ncurses4/terminfo/i/ibm-system1
+/usr/share/ncurses4/terminfo/i/ibm3101
+/usr/share/ncurses4/terminfo/i/ibm3151
+/usr/share/ncurses4/terminfo/i/ibm3161
+/usr/share/ncurses4/terminfo/i/ibm3163
+/usr/share/ncurses4/terminfo/i/ibm3164
+/usr/share/ncurses4/terminfo/i/ibm327x
+/usr/share/ncurses4/terminfo/i/ibm5051
+/usr/share/ncurses4/terminfo/i/ibm5081
+/usr/share/ncurses4/terminfo/i/ibm5081-c
+/usr/share/ncurses4/terminfo/i/ibm5151
+/usr/share/ncurses4/terminfo/i/ibm5154
+/usr/share/ncurses4/terminfo/i/ibm5154-c
+/usr/share/ncurses4/terminfo/i/ibm6153
+/usr/share/ncurses4/terminfo/i/ibm6154
+/usr/share/ncurses4/terminfo/i/ibm6154-c
+/usr/share/ncurses4/terminfo/i/ibm6155
+/usr/share/ncurses4/terminfo/i/ibm8512
+/usr/share/ncurses4/terminfo/i/ibm8513
+/usr/share/ncurses4/terminfo/i/ibm8514
+/usr/share/ncurses4/terminfo/i/ibm8514-c
+/usr/share/ncurses4/terminfo/i/ibmaed
+/usr/share/ncurses4/terminfo/i/ibmapa16
+/usr/share/ncurses4/terminfo/i/ibmapa8
+/usr/share/ncurses4/terminfo/i/ibmapa8c
+/usr/share/ncurses4/terminfo/i/ibmapa8c-c
+/usr/share/ncurses4/terminfo/i/ibmega
+/usr/share/ncurses4/terminfo/i/ibmega-c
+/usr/share/ncurses4/terminfo/i/ibmmono
+/usr/share/ncurses4/terminfo/i/ibmmpel
+/usr/share/ncurses4/terminfo/i/ibmmpel-c
+/usr/share/ncurses4/terminfo/i/ibmpc
+/usr/share/ncurses4/terminfo/i/ibmpc3
+/usr/share/ncurses4/terminfo/i/ibmpc3r
+/usr/share/ncurses4/terminfo/i/ibmpc3r-mono
+/usr/share/ncurses4/terminfo/i/ibmpcx
+/usr/share/ncurses4/terminfo/i/ibmvga
+/usr/share/ncurses4/terminfo/i/ibmvga-c
+/usr/share/ncurses4/terminfo/i/ibmx
+/usr/share/ncurses4/terminfo/i/ifmr
+/usr/share/ncurses4/terminfo/i/ims-ansi
+/usr/share/ncurses4/terminfo/i/ims950
+/usr/share/ncurses4/terminfo/i/ims950-b
+/usr/share/ncurses4/terminfo/i/ims950-rv
+/usr/share/ncurses4/terminfo/i/infoton
+/usr/share/ncurses4/terminfo/i/intertec
+/usr/share/ncurses4/terminfo/i/intertube
+/usr/share/ncurses4/terminfo/i/intertube2
+/usr/share/ncurses4/terminfo/i/intext
+/usr/share/ncurses4/terminfo/i/intext2
+/usr/share/ncurses4/terminfo/i/intextii
+/usr/share/ncurses4/terminfo/i/ips
+/usr/share/ncurses4/terminfo/i/ipsi
+/usr/share/ncurses4/terminfo/i/iq120
+/usr/share/ncurses4/terminfo/i/iq140
+/usr/share/ncurses4/terminfo/i/iris-ansi
+/usr/share/ncurses4/terminfo/i/iris-ansi-ap
+/usr/share/ncurses4/terminfo/i/iris-color
+/usr/share/ncurses4/terminfo/i/iris40
+/usr/share/ncurses4/terminfo/j
+/usr/share/ncurses4/terminfo/j/jaixterm-m
+/usr/share/ncurses4/terminfo/j/jerq
+/usr/share/ncurses4/terminfo/k
+/usr/share/ncurses4/terminfo/k/k45
+/usr/share/ncurses4/terminfo/k/kaypro
+/usr/share/ncurses4/terminfo/k/kaypro2
+/usr/share/ncurses4/terminfo/k/kermit
+/usr/share/ncurses4/terminfo/k/kermit-am
+/usr/share/ncurses4/terminfo/k/klone+acs
+/usr/share/ncurses4/terminfo/k/klone+color
+/usr/share/ncurses4/terminfo/k/klone+koi8acs
+/usr/share/ncurses4/terminfo/k/klone+sgr
+/usr/share/ncurses4/terminfo/k/klone+sgr-dumb
+/usr/share/ncurses4/terminfo/k/kt7
+/usr/share/ncurses4/terminfo/k/kt7ix
+/usr/share/ncurses4/terminfo/k/kterm
+/usr/share/ncurses4/terminfo/k/ktm
+/usr/share/ncurses4/terminfo/l
+/usr/share/ncurses4/terminfo/l/la120
+/usr/share/ncurses4/terminfo/l/layer
+/usr/share/ncurses4/terminfo/l/linux
+/usr/share/ncurses4/terminfo/l/linux-c
+/usr/share/ncurses4/terminfo/l/linux-c-nc
+/usr/share/ncurses4/terminfo/l/linux-koi8
+/usr/share/ncurses4/terminfo/l/linux-koi8r
+/usr/share/ncurses4/terminfo/l/linux-m
+/usr/share/ncurses4/terminfo/l/linux-nic
+/usr/share/ncurses4/terminfo/l/lisa
+/usr/share/ncurses4/terminfo/l/lisaterm
+/usr/share/ncurses4/terminfo/l/lisaterm-w
+/usr/share/ncurses4/terminfo/l/liswb
+/usr/share/ncurses4/terminfo/l/ln03
+/usr/share/ncurses4/terminfo/l/ln03-w
+/usr/share/ncurses4/terminfo/l/lpr
+/usr/share/ncurses4/terminfo/l/luna
+/usr/share/ncurses4/terminfo/l/luna68k
+/usr/share/ncurses4/terminfo/m
+/usr/share/ncurses4/terminfo/m/m2-nam
+/usr/share/ncurses4/terminfo/m/mac
+/usr/share/ncurses4/terminfo/m/mac-w
+/usr/share/ncurses4/terminfo/m/macintosh
+/usr/share/ncurses4/terminfo/m/macterminal-w
+/usr/share/ncurses4/terminfo/m/mai
+/usr/share/ncurses4/terminfo/m/masscomp
+/usr/share/ncurses4/terminfo/m/masscomp1
+/usr/share/ncurses4/terminfo/m/masscomp2
+/usr/share/ncurses4/terminfo/m/mdl110
+/usr/share/ncurses4/terminfo/m/megatek
+/usr/share/ncurses4/terminfo/m/memhp
+/usr/share/ncurses4/terminfo/m/mgr
+/usr/share/ncurses4/terminfo/m/mgr-linux
+/usr/share/ncurses4/terminfo/m/mgr-sun
+/usr/share/ncurses4/terminfo/m/microb
+/usr/share/ncurses4/terminfo/m/microbee
+/usr/share/ncurses4/terminfo/m/microterm
+/usr/share/ncurses4/terminfo/m/microterm5
+/usr/share/ncurses4/terminfo/m/mime
+/usr/share/ncurses4/terminfo/m/mime-3ax
+/usr/share/ncurses4/terminfo/m/mime-fb
+/usr/share/ncurses4/terminfo/m/mime-hb
+/usr/share/ncurses4/terminfo/m/mime1
+/usr/share/ncurses4/terminfo/m/mime2
+/usr/share/ncurses4/terminfo/m/mime2a
+/usr/share/ncurses4/terminfo/m/mime2a-s
+/usr/share/ncurses4/terminfo/m/mime2a-v
+/usr/share/ncurses4/terminfo/m/mime314
+/usr/share/ncurses4/terminfo/m/mime340
+/usr/share/ncurses4/terminfo/m/mime3a
+/usr/share/ncurses4/terminfo/m/mime3ax
+/usr/share/ncurses4/terminfo/m/mimei
+/usr/share/ncurses4/terminfo/m/mimeii
+/usr/share/ncurses4/terminfo/m/minitel
+/usr/share/ncurses4/terminfo/m/minitel-2
+/usr/share/ncurses4/terminfo/m/minitel-2-nam
+/usr/share/ncurses4/terminfo/m/minix
+/usr/share/ncurses4/terminfo/m/minix-old
+/usr/share/ncurses4/terminfo/m/minix-old-am
+/usr/share/ncurses4/terminfo/m/mm314
+/usr/share/ncurses4/terminfo/m/mm340
+/usr/share/ncurses4/terminfo/m/mod
+/usr/share/ncurses4/terminfo/m/mod24
+/usr/share/ncurses4/terminfo/m/modgraph
+/usr/share/ncurses4/terminfo/m/modgraph2
+/usr/share/ncurses4/terminfo/m/modgraph48
+/usr/share/ncurses4/terminfo/m/mono-emx
+/usr/share/ncurses4/terminfo/m/msk227
+/usr/share/ncurses4/terminfo/m/msk22714
+/usr/share/ncurses4/terminfo/m/msk227am
+/usr/share/ncurses4/terminfo/m/mskermit227
+/usr/share/ncurses4/terminfo/m/mskermit22714
+/usr/share/ncurses4/terminfo/m/mskermit227am
+/usr/share/ncurses4/terminfo/m/mt-70
+/usr/share/ncurses4/terminfo/m/mt4520-rv
+/usr/share/ncurses4/terminfo/m/mt70
+/usr/share/ncurses4/terminfo/n
+/usr/share/ncurses4/terminfo/n/nansi.sys
+/usr/share/ncurses4/terminfo/n/nansi.sysk
+/usr/share/ncurses4/terminfo/n/nansisys
+/usr/share/ncurses4/terminfo/n/nansisysk
+/usr/share/ncurses4/terminfo/n/ncr7900
+/usr/share/ncurses4/terminfo/n/ncr7900i
+/usr/share/ncurses4/terminfo/n/ncr7900iv
+/usr/share/ncurses4/terminfo/n/ncr7901
+/usr/share/ncurses4/terminfo/n/nec
+/usr/share/ncurses4/terminfo/n/nec5520
+/usr/share/ncurses4/terminfo/n/newhp
+/usr/share/ncurses4/terminfo/n/newhpkeyboard
+/usr/share/ncurses4/terminfo/n/news
+/usr/share/ncurses4/terminfo/n/news-29
+/usr/share/ncurses4/terminfo/n/news-29-euc
+/usr/share/ncurses4/terminfo/n/news-29-sjis
+/usr/share/ncurses4/terminfo/n/news-33
+/usr/share/ncurses4/terminfo/n/news-33-euc
+/usr/share/ncurses4/terminfo/n/news-33-sjis
+/usr/share/ncurses4/terminfo/n/news-42
+/usr/share/ncurses4/terminfo/n/news-42-euc
+/usr/share/ncurses4/terminfo/n/news-42-sjis
+/usr/share/ncurses4/terminfo/n/news-a
+/usr/share/ncurses4/terminfo/n/news-o
+/usr/share/ncurses4/terminfo/n/news-old-unk
+/usr/share/ncurses4/terminfo/n/news-unk
+/usr/share/ncurses4/terminfo/n/news28
+/usr/share/ncurses4/terminfo/n/news28-a
+/usr/share/ncurses4/terminfo/n/news29
+/usr/share/ncurses4/terminfo/n/news31
+/usr/share/ncurses4/terminfo/n/news31-a
+/usr/share/ncurses4/terminfo/n/news31-o
+/usr/share/ncurses4/terminfo/n/news33
+/usr/share/ncurses4/terminfo/n/news40
+/usr/share/ncurses4/terminfo/n/news40-a
+/usr/share/ncurses4/terminfo/n/news40-o
+/usr/share/ncurses4/terminfo/n/news42
+/usr/share/ncurses4/terminfo/n/newscbm
+/usr/share/ncurses4/terminfo/n/newscbm-a
+/usr/share/ncurses4/terminfo/n/newscbm-o
+/usr/share/ncurses4/terminfo/n/newscbm33
+/usr/share/ncurses4/terminfo/n/next
+/usr/share/ncurses4/terminfo/n/nextshell
+/usr/share/ncurses4/terminfo/n/northstar
+/usr/share/ncurses4/terminfo/n/nwe501
+/usr/share/ncurses4/terminfo/n/nwe501-a
+/usr/share/ncurses4/terminfo/n/nwe501-o
+/usr/share/ncurses4/terminfo/n/nwp-511
+/usr/share/ncurses4/terminfo/n/nwp-517
+/usr/share/ncurses4/terminfo/n/nwp-517-w
+/usr/share/ncurses4/terminfo/n/nwp251-a
+/usr/share/ncurses4/terminfo/n/nwp251-o
+/usr/share/ncurses4/terminfo/n/nwp511
+/usr/share/ncurses4/terminfo/n/nwp512
+/usr/share/ncurses4/terminfo/n/nwp512-a
+/usr/share/ncurses4/terminfo/n/nwp512-o
+/usr/share/ncurses4/terminfo/n/nwp513
+/usr/share/ncurses4/terminfo/n/nwp513-a
+/usr/share/ncurses4/terminfo/n/nwp513-o
+/usr/share/ncurses4/terminfo/n/nwp514
+/usr/share/ncurses4/terminfo/n/nwp514-a
+/usr/share/ncurses4/terminfo/n/nwp514-o
+/usr/share/ncurses4/terminfo/n/nwp517
+/usr/share/ncurses4/terminfo/n/nwp517-w
+/usr/share/ncurses4/terminfo/n/nwp518
+/usr/share/ncurses4/terminfo/n/nwp518-a
+/usr/share/ncurses4/terminfo/n/nwp518-o
+/usr/share/ncurses4/terminfo/o
+/usr/share/ncurses4/terminfo/o/o31
+/usr/share/ncurses4/terminfo/o/o4112-nd
+/usr/share/ncurses4/terminfo/o/o85h
+/usr/share/ncurses4/terminfo/o/oabm85h
+/usr/share/ncurses4/terminfo/o/oblit
+/usr/share/ncurses4/terminfo/o/oc100
+/usr/share/ncurses4/terminfo/o/oconcept
+/usr/share/ncurses4/terminfo/o/ojerq
+/usr/share/ncurses4/terminfo/o/oldibmpc3
+/usr/share/ncurses4/terminfo/o/oldpc3
+/usr/share/ncurses4/terminfo/o/oldsun
+/usr/share/ncurses4/terminfo/o/omron
+/usr/share/ncurses4/terminfo/o/opus3n1+
+/usr/share/ncurses4/terminfo/o/origibmpc3
+/usr/share/ncurses4/terminfo/o/origpc3
+/usr/share/ncurses4/terminfo/o/os9LII
+/usr/share/ncurses4/terminfo/o/osborne
+/usr/share/ncurses4/terminfo/o/osborne-w
+/usr/share/ncurses4/terminfo/o/osborne1
+/usr/share/ncurses4/terminfo/o/osborne1-w
+/usr/share/ncurses4/terminfo/o/osexec
+/usr/share/ncurses4/terminfo/o/otek4112
+/usr/share/ncurses4/terminfo/o/otek4113
+/usr/share/ncurses4/terminfo/o/otek4114
+/usr/share/ncurses4/terminfo/o/otek4115
+/usr/share/ncurses4/terminfo/o/owl
+/usr/share/ncurses4/terminfo/p
+/usr/share/ncurses4/terminfo/p/p12
+/usr/share/ncurses4/terminfo/p/p12-m
+/usr/share/ncurses4/terminfo/p/p12-m-w
+/usr/share/ncurses4/terminfo/p/p12-w
+/usr/share/ncurses4/terminfo/p/p14
+/usr/share/ncurses4/terminfo/p/p14-m
+/usr/share/ncurses4/terminfo/p/p14-m-w
+/usr/share/ncurses4/terminfo/p/p14-w
+/usr/share/ncurses4/terminfo/p/p19
+/usr/share/ncurses4/terminfo/p/p4
+/usr/share/ncurses4/terminfo/p/p5
+/usr/share/ncurses4/terminfo/p/p7
+/usr/share/ncurses4/terminfo/p/p8
+/usr/share/ncurses4/terminfo/p/p8-w
+/usr/share/ncurses4/terminfo/p/p8gl
+/usr/share/ncurses4/terminfo/p/p9
+/usr/share/ncurses4/terminfo/p/p9-8
+/usr/share/ncurses4/terminfo/p/p9-8-w
+/usr/share/ncurses4/terminfo/p/p9-w
+/usr/share/ncurses4/terminfo/p/pc-coherent
+/usr/share/ncurses4/terminfo/p/pc-minix
+/usr/share/ncurses4/terminfo/p/pc-venix
+/usr/share/ncurses4/terminfo/p/pc3
+/usr/share/ncurses4/terminfo/p/pc3-bold
+/usr/share/ncurses4/terminfo/p/pc3r
+/usr/share/ncurses4/terminfo/p/pc3r-m
+/usr/share/ncurses4/terminfo/p/pc6300plus
+/usr/share/ncurses4/terminfo/p/pc7300
+/usr/share/ncurses4/terminfo/p/pcansi
+/usr/share/ncurses4/terminfo/p/pcansi-25
+/usr/share/ncurses4/terminfo/p/pcansi-25-m
+/usr/share/ncurses4/terminfo/p/pcansi-33
+/usr/share/ncurses4/terminfo/p/pcansi-33-m
+/usr/share/ncurses4/terminfo/p/pcansi-43
+/usr/share/ncurses4/terminfo/p/pcansi-43-m
+/usr/share/ncurses4/terminfo/p/pcansi-m
+/usr/share/ncurses4/terminfo/p/pcansi-mono
+/usr/share/ncurses4/terminfo/p/pcansi25
+/usr/share/ncurses4/terminfo/p/pcansi25m
+/usr/share/ncurses4/terminfo/p/pcansi33
+/usr/share/ncurses4/terminfo/p/pcansi33m
+/usr/share/ncurses4/terminfo/p/pcansi43
+/usr/share/ncurses4/terminfo/p/pccons
+/usr/share/ncurses4/terminfo/p/pcconsole
+/usr/share/ncurses4/terminfo/p/pcix
+/usr/share/ncurses4/terminfo/p/pckermit
+/usr/share/ncurses4/terminfo/p/pckermit12
+/usr/share/ncurses4/terminfo/p/pckermit120
+/usr/share/ncurses4/terminfo/p/pcplot
+/usr/share/ncurses4/terminfo/p/pcvt25
+/usr/share/ncurses4/terminfo/p/pcvt25w
+/usr/share/ncurses4/terminfo/p/pcvt28
+/usr/share/ncurses4/terminfo/p/pcvt28w
+/usr/share/ncurses4/terminfo/p/pcvt35
+/usr/share/ncurses4/terminfo/p/pcvt35w
+/usr/share/ncurses4/terminfo/p/pcvt40
+/usr/share/ncurses4/terminfo/p/pcvt40w
+/usr/share/ncurses4/terminfo/p/pcvt43
+/usr/share/ncurses4/terminfo/p/pcvt43w
+/usr/share/ncurses4/terminfo/p/pcvt50
+/usr/share/ncurses4/terminfo/p/pcvt50w
+/usr/share/ncurses4/terminfo/p/pcvtXX
+/usr/share/ncurses4/terminfo/p/pcz19
+/usr/share/ncurses4/terminfo/p/pe1100
+/usr/share/ncurses4/terminfo/p/pe1200
+/usr/share/ncurses4/terminfo/p/pe1251
+/usr/share/ncurses4/terminfo/p/pe550
+/usr/share/ncurses4/terminfo/p/pe6100
+/usr/share/ncurses4/terminfo/p/pe6300
+/usr/share/ncurses4/terminfo/p/pe6312
+/usr/share/ncurses4/terminfo/p/pe7000c
+/usr/share/ncurses4/terminfo/p/pe7000m
+/usr/share/ncurses4/terminfo/p/pilot
+/usr/share/ncurses4/terminfo/p/printer
+/usr/share/ncurses4/terminfo/p/prism12
+/usr/share/ncurses4/terminfo/p/prism12-m
+/usr/share/ncurses4/terminfo/p/prism12-m-w
+/usr/share/ncurses4/terminfo/p/prism12-w
+/usr/share/ncurses4/terminfo/p/prism14
+/usr/share/ncurses4/terminfo/p/prism14-m
+/usr/share/ncurses4/terminfo/p/prism14-m-w
+/usr/share/ncurses4/terminfo/p/prism14-w
+/usr/share/ncurses4/terminfo/p/prism2
+/usr/share/ncurses4/terminfo/p/prism4
+/usr/share/ncurses4/terminfo/p/prism5
+/usr/share/ncurses4/terminfo/p/prism7
+/usr/share/ncurses4/terminfo/p/prism8
+/usr/share/ncurses4/terminfo/p/prism8-w
+/usr/share/ncurses4/terminfo/p/prism8gl
+/usr/share/ncurses4/terminfo/p/prism9
+/usr/share/ncurses4/terminfo/p/prism9-8
+/usr/share/ncurses4/terminfo/p/prism9-8-w
+/usr/share/ncurses4/terminfo/p/prism9-w
+/usr/share/ncurses4/terminfo/p/pro350
+/usr/share/ncurses4/terminfo/p/ps300
+/usr/share/ncurses4/terminfo/p/psterm
+/usr/share/ncurses4/terminfo/p/psterm-80x24
+/usr/share/ncurses4/terminfo/p/psterm-90x28
+/usr/share/ncurses4/terminfo/p/psterm-96x48
+/usr/share/ncurses4/terminfo/p/psterm-basic
+/usr/share/ncurses4/terminfo/p/psterm-fast
+/usr/share/ncurses4/terminfo/p/psx_ansi
+/usr/share/ncurses4/terminfo/p/pt100
+/usr/share/ncurses4/terminfo/p/pt100w
+/usr/share/ncurses4/terminfo/p/pt200
+/usr/share/ncurses4/terminfo/p/pt200w
+/usr/share/ncurses4/terminfo/p/pt210
+/usr/share/ncurses4/terminfo/p/pt250
+/usr/share/ncurses4/terminfo/p/pt250w
+/usr/share/ncurses4/terminfo/p/pt505
+/usr/share/ncurses4/terminfo/p/pt505-22
+/usr/share/ncurses4/terminfo/p/pt505-24
+/usr/share/ncurses4/terminfo/p/pty
+/usr/share/ncurses4/terminfo/q
+/usr/share/ncurses4/terminfo/q/qdcons
+/usr/share/ncurses4/terminfo/q/qdss
+/usr/share/ncurses4/terminfo/q/qnx
+/usr/share/ncurses4/terminfo/q/qnx4
+/usr/share/ncurses4/terminfo/q/qume
+/usr/share/ncurses4/terminfo/q/qume5
+/usr/share/ncurses4/terminfo/q/qvt101
+/usr/share/ncurses4/terminfo/q/qvt101+
+/usr/share/ncurses4/terminfo/q/qvt101p
+/usr/share/ncurses4/terminfo/q/qvt102
+/usr/share/ncurses4/terminfo/q/qvt103
+/usr/share/ncurses4/terminfo/q/qvt103-w
+/usr/share/ncurses4/terminfo/q/qvt108
+/usr/share/ncurses4/terminfo/q/qvt119
+/usr/share/ncurses4/terminfo/q/qvt119+
+/usr/share/ncurses4/terminfo/q/qvt119+-25
+/usr/share/ncurses4/terminfo/q/qvt119+-25-w
+/usr/share/ncurses4/terminfo/q/qvt119+-w
+/usr/share/ncurses4/terminfo/q/qvt119-25-w
+/usr/share/ncurses4/terminfo/q/qvt119-w
+/usr/share/ncurses4/terminfo/q/qvt119p
+/usr/share/ncurses4/terminfo/q/qvt119p-25
+/usr/share/ncurses4/terminfo/q/qvt119p-25-w
+/usr/share/ncurses4/terminfo/q/qvt119p-w
+/usr/share/ncurses4/terminfo/q/qvt203
+/usr/share/ncurses4/terminfo/q/qvt203+
+/usr/share/ncurses4/terminfo/q/qvt203-25
+/usr/share/ncurses4/terminfo/q/qvt203-25-w
+/usr/share/ncurses4/terminfo/q/qvt203-w
+/usr/share/ncurses4/terminfo/q/qvt203-w-am
+/usr/share/ncurses4/terminfo/r
+/usr/share/ncurses4/terminfo/r/rbcomm
+/usr/share/ncurses4/terminfo/r/rbcomm-nam
+/usr/share/ncurses4/terminfo/r/rbcomm-w
+/usr/share/ncurses4/terminfo/r/rca
+/usr/share/ncurses4/terminfo/r/rebus3180
+/usr/share/ncurses4/terminfo/r/regent
+/usr/share/ncurses4/terminfo/r/regent100
+/usr/share/ncurses4/terminfo/r/regent20
+/usr/share/ncurses4/terminfo/r/regent200
+/usr/share/ncurses4/terminfo/r/regent25
+/usr/share/ncurses4/terminfo/r/regent40
+/usr/share/ncurses4/terminfo/r/regent40+
+/usr/share/ncurses4/terminfo/r/regent60
+/usr/share/ncurses4/terminfo/r/rt6221
+/usr/share/ncurses4/terminfo/r/rt6221-w
+/usr/share/ncurses4/terminfo/r/rtpc
+/usr/share/ncurses4/terminfo/r/rxvt
+/usr/share/ncurses4/terminfo/r/rxvt-basic
+/usr/share/ncurses4/terminfo/s
+/usr/share/ncurses4/terminfo/s/s
+/usr/share/ncurses4/terminfo/s/s4
+/usr/share/ncurses4/terminfo/s/sb1
+/usr/share/ncurses4/terminfo/s/sb2
+/usr/share/ncurses4/terminfo/s/sb3
+/usr/share/ncurses4/terminfo/s/sbi
+/usr/share/ncurses4/terminfo/s/sbobcat
+/usr/share/ncurses4/terminfo/s/sc410
+/usr/share/ncurses4/terminfo/s/sc415
+/usr/share/ncurses4/terminfo/s/scanset
+/usr/share/ncurses4/terminfo/s/scoansi
+/usr/share/ncurses4/terminfo/s/screen
+/usr/share/ncurses4/terminfo/s/screen-w
+/usr/share/ncurses4/terminfo/s/screen2
+/usr/share/ncurses4/terminfo/s/screen3
+/usr/share/ncurses4/terminfo/s/screwpoint
+/usr/share/ncurses4/terminfo/s/scrhp
+/usr/share/ncurses4/terminfo/s/simterm
+/usr/share/ncurses4/terminfo/s/soroc
+/usr/share/ncurses4/terminfo/s/soroc120
+/usr/share/ncurses4/terminfo/s/soroc140
+/usr/share/ncurses4/terminfo/s/spinwriter
+/usr/share/ncurses4/terminfo/s/st52
+/usr/share/ncurses4/terminfo/s/sun
+/usr/share/ncurses4/terminfo/s/sun-1
+/usr/share/ncurses4/terminfo/s/sun-12
+/usr/share/ncurses4/terminfo/s/sun-17
+/usr/share/ncurses4/terminfo/s/sun-24
+/usr/share/ncurses4/terminfo/s/sun-34
+/usr/share/ncurses4/terminfo/s/sun-48
+/usr/share/ncurses4/terminfo/s/sun-c
+/usr/share/ncurses4/terminfo/s/sun-cmd
+/usr/share/ncurses4/terminfo/s/sun-e
+/usr/share/ncurses4/terminfo/s/sun-e-s
+/usr/share/ncurses4/terminfo/s/sun-il
+/usr/share/ncurses4/terminfo/s/sun-nic
+/usr/share/ncurses4/terminfo/s/sun-s
+/usr/share/ncurses4/terminfo/s/sun-s-e
+/usr/share/ncurses4/terminfo/s/sun-ss5
+/usr/share/ncurses4/terminfo/s/sun1
+/usr/share/ncurses4/terminfo/s/sun2
+/usr/share/ncurses4/terminfo/s/sune
+/usr/share/ncurses4/terminfo/s/superbee
+/usr/share/ncurses4/terminfo/s/superbee-xsb
+/usr/share/ncurses4/terminfo/s/superbeeic
+/usr/share/ncurses4/terminfo/s/superbrain
+/usr/share/ncurses4/terminfo/s/sv80
+/usr/share/ncurses4/terminfo/s/swtp
+/usr/share/ncurses4/terminfo/s/synertek
+/usr/share/ncurses4/terminfo/s/synertek380
+/usr/share/ncurses4/terminfo/s/system1
+/usr/share/ncurses4/terminfo/t
+/usr/share/ncurses4/terminfo/t/t10
+/usr/share/ncurses4/terminfo/t/t1061
+/usr/share/ncurses4/terminfo/t/t1061f
+/usr/share/ncurses4/terminfo/t/t16
+/usr/share/ncurses4/terminfo/t/t3700
+/usr/share/ncurses4/terminfo/t/t3800
+/usr/share/ncurses4/terminfo/t/t653x
+/usr/share/ncurses4/terminfo/t/tab
+/usr/share/ncurses4/terminfo/t/tab132
+/usr/share/ncurses4/terminfo/t/tab132-15
+/usr/share/ncurses4/terminfo/t/tab132-rv
+/usr/share/ncurses4/terminfo/t/tab132-w
+/usr/share/ncurses4/terminfo/t/tab132-w-rv
+/usr/share/ncurses4/terminfo/t/tandem6510
+/usr/share/ncurses4/terminfo/t/tandem653
+/usr/share/ncurses4/terminfo/t/tek
+/usr/share/ncurses4/terminfo/t/tek4012
+/usr/share/ncurses4/terminfo/t/tek4013
+/usr/share/ncurses4/terminfo/t/tek4014
+/usr/share/ncurses4/terminfo/t/tek4014-sm
+/usr/share/ncurses4/terminfo/t/tek4015
+/usr/share/ncurses4/terminfo/t/tek4015-sm
+/usr/share/ncurses4/terminfo/t/tek4023
+/usr/share/ncurses4/terminfo/t/tek4024
+/usr/share/ncurses4/terminfo/t/tek4025
+/usr/share/ncurses4/terminfo/t/tek4025-17
+/usr/share/ncurses4/terminfo/t/tek4025-17-ws
+/usr/share/ncurses4/terminfo/t/tek4025-cr
+/usr/share/ncurses4/terminfo/t/tek4025-ex
+/usr/share/ncurses4/terminfo/t/tek4025a
+/usr/share/ncurses4/terminfo/t/tek4025ex
+/usr/share/ncurses4/terminfo/t/tek4027
+/usr/share/ncurses4/terminfo/t/tek4027-ex
+/usr/share/ncurses4/terminfo/t/tek4105
+/usr/share/ncurses4/terminfo/t/tek4105-30
+/usr/share/ncurses4/terminfo/t/tek4105a
+/usr/share/ncurses4/terminfo/t/tek4106brl
+/usr/share/ncurses4/terminfo/t/tek4107
+/usr/share/ncurses4/terminfo/t/tek4107brl
+/usr/share/ncurses4/terminfo/t/tek4109
+/usr/share/ncurses4/terminfo/t/tek4109brl
+/usr/share/ncurses4/terminfo/t/tek4112
+/usr/share/ncurses4/terminfo/t/tek4112-5
+/usr/share/ncurses4/terminfo/t/tek4112-nd
+/usr/share/ncurses4/terminfo/t/tek4113
+/usr/share/ncurses4/terminfo/t/tek4113-34
+/usr/share/ncurses4/terminfo/t/tek4113-nd
+/usr/share/ncurses4/terminfo/t/tek4114
+/usr/share/ncurses4/terminfo/t/tek4115
+/usr/share/ncurses4/terminfo/t/tek4125
+/usr/share/ncurses4/terminfo/t/tek4205
+/usr/share/ncurses4/terminfo/t/tek4207
+/usr/share/ncurses4/terminfo/t/tek4207-s
+/usr/share/ncurses4/terminfo/t/tek4404
+/usr/share/ncurses4/terminfo/t/teleray
+/usr/share/ncurses4/terminfo/t/teletec
+/usr/share/ncurses4/terminfo/t/terminet
+/usr/share/ncurses4/terminfo/t/terminet1200
+/usr/share/ncurses4/terminfo/t/terminet300
+/usr/share/ncurses4/terminfo/t/tgtelnet
+/usr/share/ncurses4/terminfo/t/ti700
+/usr/share/ncurses4/terminfo/t/ti733
+/usr/share/ncurses4/terminfo/t/ti735
+/usr/share/ncurses4/terminfo/t/ti745
+/usr/share/ncurses4/terminfo/t/ti800
+/usr/share/ncurses4/terminfo/t/ti916
+/usr/share/ncurses4/terminfo/t/ti916-132
+/usr/share/ncurses4/terminfo/t/ti916-220-7
+/usr/share/ncurses4/terminfo/t/ti916-220-8
+/usr/share/ncurses4/terminfo/t/ti916-8
+/usr/share/ncurses4/terminfo/t/ti916-8-132
+/usr/share/ncurses4/terminfo/t/ti924
+/usr/share/ncurses4/terminfo/t/ti924-8
+/usr/share/ncurses4/terminfo/t/ti924-8w
+/usr/share/ncurses4/terminfo/t/ti924w
+/usr/share/ncurses4/terminfo/t/ti926
+/usr/share/ncurses4/terminfo/t/ti926-8
+/usr/share/ncurses4/terminfo/t/ti928
+/usr/share/ncurses4/terminfo/t/ti928-8
+/usr/share/ncurses4/terminfo/t/ti931
+/usr/share/ncurses4/terminfo/t/ti_ansi
+/usr/share/ncurses4/terminfo/t/tn1200
+/usr/share/ncurses4/terminfo/t/tn300
+/usr/share/ncurses4/terminfo/t/trs16
+/usr/share/ncurses4/terminfo/t/trs2
+/usr/share/ncurses4/terminfo/t/trs80II
+/usr/share/ncurses4/terminfo/t/trsII
+/usr/share/ncurses4/terminfo/t/ts-1
+/usr/share/ncurses4/terminfo/t/ts-1p
+/usr/share/ncurses4/terminfo/t/ts1
+/usr/share/ncurses4/terminfo/t/ts100
+/usr/share/ncurses4/terminfo/t/ts100-ctxt
+/usr/share/ncurses4/terminfo/t/ts100-sp
+/usr/share/ncurses4/terminfo/t/ts1p
+/usr/share/ncurses4/terminfo/t/tt505-22
+/usr/share/ncurses4/terminfo/t/tty33
+/usr/share/ncurses4/terminfo/t/tty35
+/usr/share/ncurses4/terminfo/t/tty37
+/usr/share/ncurses4/terminfo/t/tty40
+/usr/share/ncurses4/terminfo/t/tty43
+/usr/share/ncurses4/terminfo/t/tty4420
+/usr/share/ncurses4/terminfo/t/tty4424
+/usr/share/ncurses4/terminfo/t/tty4424-1
+/usr/share/ncurses4/terminfo/t/tty4424m
+/usr/share/ncurses4/terminfo/t/tty4426
+/usr/share/ncurses4/terminfo/t/tty5410
+/usr/share/ncurses4/terminfo/t/tty5410-w
+/usr/share/ncurses4/terminfo/t/tty5410v1
+/usr/share/ncurses4/terminfo/t/tty5410v1-w
+/usr/share/ncurses4/terminfo/t/tty5420
+/usr/share/ncurses4/terminfo/t/tty5420+nl
+/usr/share/ncurses4/terminfo/t/tty5420-nl
+/usr/share/ncurses4/terminfo/t/tty5420-rv
+/usr/share/ncurses4/terminfo/t/tty5420-rv-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w
+/usr/share/ncurses4/terminfo/t/tty5420-w-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv-n
+/usr/share/ncurses4/terminfo/t/tty5425
+/usr/share/ncurses4/terminfo/t/tty5425-nl
+/usr/share/ncurses4/terminfo/t/tty5425-w
+/usr/share/ncurses4/terminfo/t/tty5620
+/usr/share/ncurses4/terminfo/t/tty5620-1
+/usr/share/ncurses4/terminfo/t/tty5620-24
+/usr/share/ncurses4/terminfo/t/tty5620-34
+/usr/share/ncurses4/terminfo/t/tty5620-s
+/usr/share/ncurses4/terminfo/t/ttydmd
+/usr/share/ncurses4/terminfo/t/tvi-2p
+/usr/share/ncurses4/terminfo/t/tvi803
+/usr/share/ncurses4/terminfo/t/tvi9065
+/usr/share/ncurses4/terminfo/t/tvi910
+/usr/share/ncurses4/terminfo/t/tvi910+
+/usr/share/ncurses4/terminfo/t/tvi912
+/usr/share/ncurses4/terminfo/t/tvi912-2p
+/usr/share/ncurses4/terminfo/t/tvi912b
+/usr/share/ncurses4/terminfo/t/tvi912c
+/usr/share/ncurses4/terminfo/t/tvi912cc
+/usr/share/ncurses4/terminfo/t/tvi914
+/usr/share/ncurses4/terminfo/t/tvi920
+/usr/share/ncurses4/terminfo/t/tvi920-2p
+/usr/share/ncurses4/terminfo/t/tvi920b
+/usr/share/ncurses4/terminfo/t/tvi920c
+/usr/share/ncurses4/terminfo/t/tvi921
+/usr/share/ncurses4/terminfo/t/tvi924
+/usr/share/ncurses4/terminfo/t/tvi925
+/usr/share/ncurses4/terminfo/t/tvi925-hi
+/usr/share/ncurses4/terminfo/t/tvi92B
+/usr/share/ncurses4/terminfo/t/tvi92D
+/usr/share/ncurses4/terminfo/t/tvi950
+/usr/share/ncurses4/terminfo/t/tvi950-2p
+/usr/share/ncurses4/terminfo/t/tvi950-4p
+/usr/share/ncurses4/terminfo/t/tvi950-rv
+/usr/share/ncurses4/terminfo/t/tvi950-rv-2p
+/usr/share/ncurses4/terminfo/t/tvi950-rv-4p
+/usr/share/ncurses4/terminfo/t/tvi955
+/usr/share/ncurses4/terminfo/t/tvi955-hb
+/usr/share/ncurses4/terminfo/t/tvi955-w
+/usr/share/ncurses4/terminfo/t/tvi970
+/usr/share/ncurses4/terminfo/t/tvi970-2p
+/usr/share/ncurses4/terminfo/t/tvi970-vb
+/usr/share/ncurses4/terminfo/t/tvipt
+/usr/share/ncurses4/terminfo/u
+/usr/share/ncurses4/terminfo/u/ultima2
+/usr/share/ncurses4/terminfo/u/ultimaII
+/usr/share/ncurses4/terminfo/u/uniterm
+/usr/share/ncurses4/terminfo/u/uniterm49
+/usr/share/ncurses4/terminfo/u/unixpc
+/usr/share/ncurses4/terminfo/u/unknown
+/usr/share/ncurses4/terminfo/u/uts30
+/usr/share/ncurses4/terminfo/v
+/usr/share/ncurses4/terminfo/v/v200-nam
+/usr/share/ncurses4/terminfo/v/v320n
+/usr/share/ncurses4/terminfo/v/v3220
+/usr/share/ncurses4/terminfo/v/v5410
+/usr/share/ncurses4/terminfo/v/vapple
+/usr/share/ncurses4/terminfo/v/vc103
+/usr/share/ncurses4/terminfo/v/vc203
+/usr/share/ncurses4/terminfo/v/vc303
+/usr/share/ncurses4/terminfo/v/vc303a
+/usr/share/ncurses4/terminfo/v/vc403a
+/usr/share/ncurses4/terminfo/v/vc404
+/usr/share/ncurses4/terminfo/v/vc404-s
+/usr/share/ncurses4/terminfo/v/vc414
+/usr/share/ncurses4/terminfo/v/vc414h
+/usr/share/ncurses4/terminfo/v/vc415
+/usr/share/ncurses4/terminfo/v/venix
+/usr/share/ncurses4/terminfo/v/versaterm
+/usr/share/ncurses4/terminfo/v/vi200
+/usr/share/ncurses4/terminfo/v/vi200-f
+/usr/share/ncurses4/terminfo/v/vi200-rv
+/usr/share/ncurses4/terminfo/v/vi300
+/usr/share/ncurses4/terminfo/v/vi300-old
+/usr/share/ncurses4/terminfo/v/vi50
+/usr/share/ncurses4/terminfo/v/vi500
+/usr/share/ncurses4/terminfo/v/vi50adm
+/usr/share/ncurses4/terminfo/v/vi55
+/usr/share/ncurses4/terminfo/v/vi550
+/usr/share/ncurses4/terminfo/v/vi603
+/usr/share/ncurses4/terminfo/v/viewpoint
+/usr/share/ncurses4/terminfo/v/viewpoint3a+
+/usr/share/ncurses4/terminfo/v/viewpoint60
+/usr/share/ncurses4/terminfo/v/viewpoint90
+/usr/share/ncurses4/terminfo/v/visa50
+/usr/share/ncurses4/terminfo/v/visual603
+/usr/share/ncurses4/terminfo/v/vitty
+/usr/share/ncurses4/terminfo/v/vk100
+/usr/share/ncurses4/terminfo/v/vp3a+
+/usr/share/ncurses4/terminfo/v/vp60
+/usr/share/ncurses4/terminfo/v/vp90
+/usr/share/ncurses4/terminfo/v/vremote
+/usr/share/ncurses4/terminfo/v/vs100
+/usr/share/ncurses4/terminfo/v/vs100-x10
+/usr/share/ncurses4/terminfo/v/vsc
+/usr/share/ncurses4/terminfo/v/vt-61
+/usr/share/ncurses4/terminfo/v/vt100
+/usr/share/ncurses4/terminfo/v/vt100-am
+/usr/share/ncurses4/terminfo/v/vt100-bm
+/usr/share/ncurses4/terminfo/v/vt100-bm-o
+/usr/share/ncurses4/terminfo/v/vt100-bot-s
+/usr/share/ncurses4/terminfo/v/vt100-nam
+/usr/share/ncurses4/terminfo/v/vt100-nam-w
+/usr/share/ncurses4/terminfo/v/vt100-nav
+/usr/share/ncurses4/terminfo/v/vt100-nav-w
+/usr/share/ncurses4/terminfo/v/vt100-s
+/usr/share/ncurses4/terminfo/v/vt100-s-bot
+/usr/share/ncurses4/terminfo/v/vt100-s-top
+/usr/share/ncurses4/terminfo/v/vt100-top-s
+/usr/share/ncurses4/terminfo/v/vt100-vb
+/usr/share/ncurses4/terminfo/v/vt100-w
+/usr/share/ncurses4/terminfo/v/vt100-w-am
+/usr/share/ncurses4/terminfo/v/vt100-w-nam
+/usr/share/ncurses4/terminfo/v/vt100-w-nav
+/usr/share/ncurses4/terminfo/v/vt100nam
+/usr/share/ncurses4/terminfo/v/vt102
+/usr/share/ncurses4/terminfo/v/vt102-nsgr
+/usr/share/ncurses4/terminfo/v/vt102-w
+/usr/share/ncurses4/terminfo/v/vt125
+/usr/share/ncurses4/terminfo/v/vt131
+/usr/share/ncurses4/terminfo/v/vt132
+/usr/share/ncurses4/terminfo/v/vt200
+/usr/share/ncurses4/terminfo/v/vt200-js
+/usr/share/ncurses4/terminfo/v/vt200-w
+/usr/share/ncurses4/terminfo/v/vt220
+/usr/share/ncurses4/terminfo/v/vt220-8
+/usr/share/ncurses4/terminfo/v/vt220-js
+/usr/share/ncurses4/terminfo/v/vt220-nam
+/usr/share/ncurses4/terminfo/v/vt220-w
+/usr/share/ncurses4/terminfo/v/vt220d
+/usr/share/ncurses4/terminfo/v/vt300
+/usr/share/ncurses4/terminfo/v/vt300-nam
+/usr/share/ncurses4/terminfo/v/vt300-w
+/usr/share/ncurses4/terminfo/v/vt300-w-nam
+/usr/share/ncurses4/terminfo/v/vt320
+/usr/share/ncurses4/terminfo/v/vt320-k3
+/usr/share/ncurses4/terminfo/v/vt320-k311
+/usr/share/ncurses4/terminfo/v/vt320-nam
+/usr/share/ncurses4/terminfo/v/vt320-w
+/usr/share/ncurses4/terminfo/v/vt320-w-nam
+/usr/share/ncurses4/terminfo/v/vt320nam
+/usr/share/ncurses4/terminfo/v/vt330
+/usr/share/ncurses4/terminfo/v/vt340
+/usr/share/ncurses4/terminfo/v/vt400
+/usr/share/ncurses4/terminfo/v/vt400-24
+/usr/share/ncurses4/terminfo/v/vt420
+/usr/share/ncurses4/terminfo/v/vt420f
+/usr/share/ncurses4/terminfo/v/vt420pc
+/usr/share/ncurses4/terminfo/v/vt420pcdos
+/usr/share/ncurses4/terminfo/v/vt50
+/usr/share/ncurses4/terminfo/v/vt50h
+/usr/share/ncurses4/terminfo/v/vt510
+/usr/share/ncurses4/terminfo/v/vt510pc
+/usr/share/ncurses4/terminfo/v/vt510pcdos
+/usr/share/ncurses4/terminfo/v/vt52
+/usr/share/ncurses4/terminfo/v/vt520
+/usr/share/ncurses4/terminfo/v/vt525
+/usr/share/ncurses4/terminfo/v/vt61
+/usr/share/ncurses4/terminfo/v/vt61.5
+/usr/share/ncurses4/terminfo/w
+/usr/share/ncurses4/terminfo/w/wren
+/usr/share/ncurses4/terminfo/w/wrenw
+/usr/share/ncurses4/terminfo/w/wsiris
+/usr/share/ncurses4/terminfo/w/wy-75ap
+/usr/share/ncurses4/terminfo/w/wy100
+/usr/share/ncurses4/terminfo/w/wy100q
+/usr/share/ncurses4/terminfo/w/wy120
+/usr/share/ncurses4/terminfo/w/wy120-25
+/usr/share/ncurses4/terminfo/w/wy120-25-w
+/usr/share/ncurses4/terminfo/w/wy120-vb
+/usr/share/ncurses4/terminfo/w/wy120-w
+/usr/share/ncurses4/terminfo/w/wy120-w-vb
+/usr/share/ncurses4/terminfo/w/wy120-wvb
+/usr/share/ncurses4/terminfo/w/wy150
+/usr/share/ncurses4/terminfo/w/wy150-25
+/usr/share/ncurses4/terminfo/w/wy150-25-w
+/usr/share/ncurses4/terminfo/w/wy150-vb
+/usr/share/ncurses4/terminfo/w/wy150-w
+/usr/share/ncurses4/terminfo/w/wy150-w-vb
+/usr/share/ncurses4/terminfo/w/wy160
+/usr/share/ncurses4/terminfo/w/wy160-25
+/usr/share/ncurses4/terminfo/w/wy160-25-w
+/usr/share/ncurses4/terminfo/w/wy160-42
+/usr/share/ncurses4/terminfo/w/wy160-42-w
+/usr/share/ncurses4/terminfo/w/wy160-43
+/usr/share/ncurses4/terminfo/w/wy160-43-w
+/usr/share/ncurses4/terminfo/w/wy160-tek
+/usr/share/ncurses4/terminfo/w/wy160-vb
+/usr/share/ncurses4/terminfo/w/wy160-w
+/usr/share/ncurses4/terminfo/w/wy160-w-vb
+/usr/share/ncurses4/terminfo/w/wy160-wvb
+/usr/share/ncurses4/terminfo/w/wy185
+/usr/share/ncurses4/terminfo/w/wy185-24
+/usr/share/ncurses4/terminfo/w/wy185-vb
+/usr/share/ncurses4/terminfo/w/wy185-w
+/usr/share/ncurses4/terminfo/w/wy185-wvb
+/usr/share/ncurses4/terminfo/w/wy30
+/usr/share/ncurses4/terminfo/w/wy30-mc
+/usr/share/ncurses4/terminfo/w/wy30-vb
+/usr/share/ncurses4/terminfo/w/wy325
+/usr/share/ncurses4/terminfo/w/wy325-25
+/usr/share/ncurses4/terminfo/w/wy325-25w
+/usr/share/ncurses4/terminfo/w/wy325-42
+/usr/share/ncurses4/terminfo/w/wy325-42w
+/usr/share/ncurses4/terminfo/w/wy325-42w-vb
+/usr/share/ncurses4/terminfo/w/wy325-42wvb
+/usr/share/ncurses4/terminfo/w/wy325-43
+/usr/share/ncurses4/terminfo/w/wy325-43w
+/usr/share/ncurses4/terminfo/w/wy325-43w-vb
+/usr/share/ncurses4/terminfo/w/wy325-43wvb
+/usr/share/ncurses4/terminfo/w/wy325-80
+/usr/share/ncurses4/terminfo/w/wy325-vb
+/usr/share/ncurses4/terminfo/w/wy325-w
+/usr/share/ncurses4/terminfo/w/wy325-w-vb
+/usr/share/ncurses4/terminfo/w/wy325-wvb
+/usr/share/ncurses4/terminfo/w/wy325w-24
+/usr/share/ncurses4/terminfo/w/wy350
+/usr/share/ncurses4/terminfo/w/wy350-vb
+/usr/share/ncurses4/terminfo/w/wy350-w
+/usr/share/ncurses4/terminfo/w/wy350-wvb
+/usr/share/ncurses4/terminfo/w/wy370
+/usr/share/ncurses4/terminfo/w/wy370-101k
+/usr/share/ncurses4/terminfo/w/wy370-105k
+/usr/share/ncurses4/terminfo/w/wy370-EPC
+/usr/share/ncurses4/terminfo/w/wy370-nk
+/usr/share/ncurses4/terminfo/w/wy370-rv
+/usr/share/ncurses4/terminfo/w/wy370-tek
+/usr/share/ncurses4/terminfo/w/wy370-vb
+/usr/share/ncurses4/terminfo/w/wy370-w
+/usr/share/ncurses4/terminfo/w/wy370-wvb
+/usr/share/ncurses4/terminfo/w/wy50
+/usr/share/ncurses4/terminfo/w/wy50-mc
+/usr/share/ncurses4/terminfo/w/wy50-vb
+/usr/share/ncurses4/terminfo/w/wy50-w
+/usr/share/ncurses4/terminfo/w/wy50-wvb
+/usr/share/ncurses4/terminfo/w/wy520
+/usr/share/ncurses4/terminfo/w/wy520-24
+/usr/share/ncurses4/terminfo/w/wy520-36
+/usr/share/ncurses4/terminfo/w/wy520-36pc
+/usr/share/ncurses4/terminfo/w/wy520-36w
+/usr/share/ncurses4/terminfo/w/wy520-36wpc
+/usr/share/ncurses4/terminfo/w/wy520-48
+/usr/share/ncurses4/terminfo/w/wy520-48pc
+/usr/share/ncurses4/terminfo/w/wy520-48w
+/usr/share/ncurses4/terminfo/w/wy520-48wpc
+/usr/share/ncurses4/terminfo/w/wy520-epc
+/usr/share/ncurses4/terminfo/w/wy520-epc-24
+/usr/share/ncurses4/terminfo/w/wy520-epc-vb
+/usr/share/ncurses4/terminfo/w/wy520-epc-w
+/usr/share/ncurses4/terminfo/w/wy520-epc-wvb
+/usr/share/ncurses4/terminfo/w/wy520-vb
+/usr/share/ncurses4/terminfo/w/wy520-w
+/usr/share/ncurses4/terminfo/w/wy520-wvb
+/usr/share/ncurses4/terminfo/w/wy60
+/usr/share/ncurses4/terminfo/w/wy60-25
+/usr/share/ncurses4/terminfo/w/wy60-25-w
+/usr/share/ncurses4/terminfo/w/wy60-316X
+/usr/share/ncurses4/terminfo/w/wy60-42
+/usr/share/ncurses4/terminfo/w/wy60-42-w
+/usr/share/ncurses4/terminfo/w/wy60-43
+/usr/share/ncurses4/terminfo/w/wy60-43-w
+/usr/share/ncurses4/terminfo/w/wy60-vb
+/usr/share/ncurses4/terminfo/w/wy60-w
+/usr/share/ncurses4/terminfo/w/wy60-w-vb
+/usr/share/ncurses4/terminfo/w/wy60-wvb
+/usr/share/ncurses4/terminfo/w/wy75
+/usr/share/ncurses4/terminfo/w/wy75-mc
+/usr/share/ncurses4/terminfo/w/wy75-vb
+/usr/share/ncurses4/terminfo/w/wy75-w
+/usr/share/ncurses4/terminfo/w/wy75-wvb
+/usr/share/ncurses4/terminfo/w/wy75ap
+/usr/share/ncurses4/terminfo/w/wy85
+/usr/share/ncurses4/terminfo/w/wy85-vb
+/usr/share/ncurses4/terminfo/w/wy85-w
+/usr/share/ncurses4/terminfo/w/wy85-wvb
+/usr/share/ncurses4/terminfo/w/wy99gt
+/usr/share/ncurses4/terminfo/w/wy99gt-25
+/usr/share/ncurses4/terminfo/w/wy99gt-25-w
+/usr/share/ncurses4/terminfo/w/wy99gt-tek
+/usr/share/ncurses4/terminfo/w/wy99gt-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-w
+/usr/share/ncurses4/terminfo/w/wy99gt-w-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-wvb
+/usr/share/ncurses4/terminfo/w/wyse-325
+/usr/share/ncurses4/terminfo/w/wyse-75ap
+/usr/share/ncurses4/terminfo/w/wyse-vp
+/usr/share/ncurses4/terminfo/w/wyse120
+/usr/share/ncurses4/terminfo/w/wyse120-25
+/usr/share/ncurses4/terminfo/w/wyse120-25-w
+/usr/share/ncurses4/terminfo/w/wyse120-vb
+/usr/share/ncurses4/terminfo/w/wyse120-w
+/usr/share/ncurses4/terminfo/w/wyse120-wvb
+/usr/share/ncurses4/terminfo/w/wyse150
+/usr/share/ncurses4/terminfo/w/wyse150-25
+/usr/share/ncurses4/terminfo/w/wyse150-25-w
+/usr/share/ncurses4/terminfo/w/wyse150-vb
+/usr/share/ncurses4/terminfo/w/wyse150-w
+/usr/share/ncurses4/terminfo/w/wyse150-w-vb
+/usr/share/ncurses4/terminfo/w/wyse160
+/usr/share/ncurses4/terminfo/w/wyse160-25
+/usr/share/ncurses4/terminfo/w/wyse160-25-w
+/usr/share/ncurses4/terminfo/w/wyse160-42
+/usr/share/ncurses4/terminfo/w/wyse160-42-w
+/usr/share/ncurses4/terminfo/w/wyse160-43
+/usr/share/ncurses4/terminfo/w/wyse160-43-w
+/usr/share/ncurses4/terminfo/w/wyse160-vb
+/usr/share/ncurses4/terminfo/w/wyse160-w
+/usr/share/ncurses4/terminfo/w/wyse160-wvb
+/usr/share/ncurses4/terminfo/w/wyse185
+/usr/share/ncurses4/terminfo/w/wyse185-24
+/usr/share/ncurses4/terminfo/w/wyse185-vb
+/usr/share/ncurses4/terminfo/w/wyse185-w
+/usr/share/ncurses4/terminfo/w/wyse185-wvb
+/usr/share/ncurses4/terminfo/w/wyse30
+/usr/share/ncurses4/terminfo/w/wyse30-mc
+/usr/share/ncurses4/terminfo/w/wyse30-vb
+/usr/share/ncurses4/terminfo/w/wyse325
+/usr/share/ncurses4/terminfo/w/wyse325-25
+/usr/share/ncurses4/terminfo/w/wyse325-25w
+/usr/share/ncurses4/terminfo/w/wyse325-42
+/usr/share/ncurses4/terminfo/w/wyse325-42w
+/usr/share/ncurses4/terminfo/w/wyse325-43
+/usr/share/ncurses4/terminfo/w/wyse325-43w
+/usr/share/ncurses4/terminfo/w/wyse325-vb
+/usr/share/ncurses4/terminfo/w/wyse325-w
+/usr/share/ncurses4/terminfo/w/wyse325-wvb
+/usr/share/ncurses4/terminfo/w/wyse350
+/usr/share/ncurses4/terminfo/w/wyse350-vb
+/usr/share/ncurses4/terminfo/w/wyse350-w
+/usr/share/ncurses4/terminfo/w/wyse350-wvb
+/usr/share/ncurses4/terminfo/w/wyse370
+/usr/share/ncurses4/terminfo/w/wyse50
+/usr/share/ncurses4/terminfo/w/wyse50-mc
+/usr/share/ncurses4/terminfo/w/wyse50-vb
+/usr/share/ncurses4/terminfo/w/wyse50-w
+/usr/share/ncurses4/terminfo/w/wyse50-wvb
+/usr/share/ncurses4/terminfo/w/wyse520
+/usr/share/ncurses4/terminfo/w/wyse520-24
+/usr/share/ncurses4/terminfo/w/wyse520-36
+/usr/share/ncurses4/terminfo/w/wyse520-36pc
+/usr/share/ncurses4/terminfo/w/wyse520-36w
+/usr/share/ncurses4/terminfo/w/wyse520-36wpc
+/usr/share/ncurses4/terminfo/w/wyse520-48
+/usr/share/ncurses4/terminfo/w/wyse520-48pc
+/usr/share/ncurses4/terminfo/w/wyse520-48w
+/usr/share/ncurses4/terminfo/w/wyse520-48wpc
+/usr/share/ncurses4/terminfo/w/wyse520-epc
+/usr/share/ncurses4/terminfo/w/wyse520-epc-w
+/usr/share/ncurses4/terminfo/w/wyse520-p-wvb
+/usr/share/ncurses4/terminfo/w/wyse520-pc-24
+/usr/share/ncurses4/terminfo/w/wyse520-pc-vb
+/usr/share/ncurses4/terminfo/w/wyse520-vb
+/usr/share/ncurses4/terminfo/w/wyse520-w
+/usr/share/ncurses4/terminfo/w/wyse520-wvb
+/usr/share/ncurses4/terminfo/w/wyse60
+/usr/share/ncurses4/terminfo/w/wyse60-25
+/usr/share/ncurses4/terminfo/w/wyse60-25-w
+/usr/share/ncurses4/terminfo/w/wyse60-316X
+/usr/share/ncurses4/terminfo/w/wyse60-42
+/usr/share/ncurses4/terminfo/w/wyse60-42-w
+/usr/share/ncurses4/terminfo/w/wyse60-43
+/usr/share/ncurses4/terminfo/w/wyse60-43-w
+/usr/share/ncurses4/terminfo/w/wyse60-vb
+/usr/share/ncurses4/terminfo/w/wyse60-w
+/usr/share/ncurses4/terminfo/w/wyse60-wvb
+/usr/share/ncurses4/terminfo/w/wyse75
+/usr/share/ncurses4/terminfo/w/wyse75-mc
+/usr/share/ncurses4/terminfo/w/wyse75-vb
+/usr/share/ncurses4/terminfo/w/wyse75-w
+/usr/share/ncurses4/terminfo/w/wyse75-wvb
+/usr/share/ncurses4/terminfo/w/wyse75ap
+/usr/share/ncurses4/terminfo/w/wyse85
+/usr/share/ncurses4/terminfo/w/wyse85-vb
+/usr/share/ncurses4/terminfo/w/wyse85-w
+/usr/share/ncurses4/terminfo/w/wyse85-wvb
+/usr/share/ncurses4/terminfo/w/wyse99gt
+/usr/share/ncurses4/terminfo/w/wyse99gt-25
+/usr/share/ncurses4/terminfo/w/wyse99gt-25-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-vb
+/usr/share/ncurses4/terminfo/w/wyse99gt-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-wvb
+/usr/share/ncurses4/terminfo/x
+/usr/share/ncurses4/terminfo/x/x10term
+/usr/share/ncurses4/terminfo/x/x1700
+/usr/share/ncurses4/terminfo/x/x1700-lm
+/usr/share/ncurses4/terminfo/x/x1720
+/usr/share/ncurses4/terminfo/x/x1750
+/usr/share/ncurses4/terminfo/x/x68k
+/usr/share/ncurses4/terminfo/x/x68k-ite
+/usr/share/ncurses4/terminfo/x/x820
+/usr/share/ncurses4/terminfo/x/xenix
+/usr/share/ncurses4/terminfo/x/xerox
+/usr/share/ncurses4/terminfo/x/xerox-lm
+/usr/share/ncurses4/terminfo/x/xerox1720
+/usr/share/ncurses4/terminfo/x/xerox820
+/usr/share/ncurses4/terminfo/x/xl83
+/usr/share/ncurses4/terminfo/x/xtalk
+/usr/share/ncurses4/terminfo/x/xterm
+/usr/share/ncurses4/terminfo/x/xterm+sl
+/usr/share/ncurses4/terminfo/x/xterm+sl-twm
+/usr/share/ncurses4/terminfo/x/xterm-16color
+/usr/share/ncurses4/terminfo/x/xterm-8bit
+/usr/share/ncurses4/terminfo/x/xterm-bold
+/usr/share/ncurses4/terminfo/x/xterm-nic
+/usr/share/ncurses4/terminfo/x/xterm-old
+/usr/share/ncurses4/terminfo/x/xterm-pcolor
+/usr/share/ncurses4/terminfo/x/xterm-r5
+/usr/share/ncurses4/terminfo/x/xterm-r6
+/usr/share/ncurses4/terminfo/x/xterm-sun
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v32
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v33
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v40
+/usr/share/ncurses4/terminfo/x/xterm-xi
+/usr/share/ncurses4/terminfo/x/xterm1
+/usr/share/ncurses4/terminfo/x/xterms
+/usr/share/ncurses4/terminfo/x/xterms-sun
+/usr/share/ncurses4/terminfo/x/xwsh
+/usr/share/ncurses4/terminfo/z
+/usr/share/ncurses4/terminfo/z/z-100
+/usr/share/ncurses4/terminfo/z/z-100bw
+/usr/share/ncurses4/terminfo/z/z100
+/usr/share/ncurses4/terminfo/z/z100bw
+/usr/share/ncurses4/terminfo/z/z110
+/usr/share/ncurses4/terminfo/z/z110bw
+/usr/share/ncurses4/terminfo/z/z19
+/usr/share/ncurses4/terminfo/z/z29
+/usr/share/ncurses4/terminfo/z/z29a
+/usr/share/ncurses4/terminfo/z/z29a-kc-bc
+/usr/share/ncurses4/terminfo/z/z29a-kc-uc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-bc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-uc
+/usr/share/ncurses4/terminfo/z/z29b
+/usr/share/ncurses4/terminfo/z/z30
+/usr/share/ncurses4/terminfo/z/z340
+/usr/share/ncurses4/terminfo/z/z340-nam
+/usr/share/ncurses4/terminfo/z/z39-a
+/usr/share/ncurses4/terminfo/z/z39a
+/usr/share/ncurses4/terminfo/z/z50
+/usr/share/ncurses4/terminfo/z/z8001
+/usr/share/ncurses4/terminfo/z/zen30
+/usr/share/ncurses4/terminfo/z/zen50
+/usr/share/ncurses4/terminfo/z/zen8001
+/usr/share/ncurses4/terminfo/z/zenith
+/usr/share/ncurses4/terminfo/z/zenith29
+/usr/share/ncurses4/terminfo/z/zenith39-a
+/usr/share/ncurses4/terminfo/z/zenith39-ansi
+/usr/share/ncurses4/terminfo/z/zt-1
+/usr/share/ncurses4/terminfo/z/ztx
+/usr/share/ncurses4/terminfo/z/ztx-1-a
+/usr/share/ncurses4/terminfo/z/ztx11
+</RPM:Files>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/result/noent/slashdot.rdf b/result/noent/slashdot.rdf
new file mode 100644
index 0000000..33008ab
--- /dev/null
+++ b/result/noent/slashdot.rdf
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
+
+ <channel>
+ <title>Slashdot:News for Nerds. Stuff that Matters.</title>
+ <link>http://slashdot.org/</link>
+ <description>News for Nerds. Stuff that Matters</description>
+ </channel>
+
+ <image>
+ <title>Slashdot</title>
+ <url>http://slashdot.org/images/slashdotlg.gif</url>
+ <link>http://slashdot.org</link>
+ </image>
+
+ <item>
+ <title>100 Mbit/s on Fibre to the home</title>
+ <link>http://slashdot.org/articles/99/06/06/1440211.shtml</link>
+ </item>
+
+ <item>
+ <title>Gimp 1.2 Preview</title>
+ <link>http://slashdot.org/articles/99/06/06/1438246.shtml</link>
+ </item>
+
+ <item>
+ <title>Sony's AIBO robot Sold Out</title>
+ <link>http://slashdot.org/articles/99/06/06/1432256.shtml</link>
+ </item>
+
+ <item>
+ <title>Ask Slashdot: Another Word for "Hacker"?</title>
+ <link>http://slashdot.org/askslashdot/99/06/05/1815225.shtml</link>
+ </item>
+
+ <item>
+ <title>Corel Linux FAQ</title>
+ <link>http://slashdot.org/articles/99/06/05/1842218.shtml</link>
+ </item>
+
+ <item>
+ <title>Upside downsides MP3.COM.</title>
+ <link>http://slashdot.org/articles/99/06/05/1558210.shtml</link>
+ </item>
+
+ <item>
+ <title>2 Terabits of Bandwidth</title>
+ <link>http://slashdot.org/articles/99/06/05/1554258.shtml</link>
+ </item>
+
+ <item>
+ <title>Suppression of cold fusion research?</title>
+ <link>http://slashdot.org/articles/99/06/04/2313200.shtml</link>
+ </item>
+
+ <item>
+ <title>California Gov. Halts Wage Info Sale</title>
+ <link>http://slashdot.org/articles/99/06/04/235256.shtml</link>
+ </item>
+
+ <item>
+ <title>Red Hat Announces IPO</title>
+ <link>http://slashdot.org/articles/99/06/04/0849207.shtml</link>
+ </item>
+</rdf:RDF>
diff --git a/result/noent/slashdot.xml b/result/noent/slashdot.xml
new file mode 100644
index 0000000..b648d5e
--- /dev/null
+++ b/result/noent/slashdot.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<ultramode>
+ <story>
+ <title>100 Mbit/s on Fibre to the home</title>
+ <url>http://slashdot.org/articles/99/06/06/1440211.shtml</url>
+ <time>1999-06-06 14:39:59</time>
+ <author>CmdrTaco</author>
+ <department>wouldn't-it-be-nice</department>
+ <topic>internet</topic>
+ <comments>20</comments>
+ <section>articles</section>
+ <image>topicinternet.jpg</image>
+ </story>
+ <story>
+ <title>Gimp 1.2 Preview</title>
+ <url>http://slashdot.org/articles/99/06/06/1438246.shtml</url>
+ <time>1999-06-06 14:38:40</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-read</department>
+ <topic>gimp</topic>
+ <comments>12</comments>
+ <section>articles</section>
+ <image>topicgimp.gif</image>
+ </story>
+ <story>
+ <title>Sony's AIBO robot Sold Out</title>
+ <url>http://slashdot.org/articles/99/06/06/1432256.shtml</url>
+ <time>1999-06-06 14:32:51</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-see</department>
+ <topic>tech</topic>
+ <comments>10</comments>
+ <section>articles</section>
+ <image>topictech2.jpg</image>
+ </story>
+ <story>
+ <title>Ask Slashdot: Another Word for "Hacker"?</title>
+ <url>http://slashdot.org/askslashdot/99/06/05/1815225.shtml</url>
+ <time>1999-06-05 20:00:00</time>
+ <author>Cliff</author>
+ <department>hacker-vs-cracker</department>
+ <topic>news</topic>
+ <comments>385</comments>
+ <section>askslashdot</section>
+ <image>topicnews.gif</image>
+ </story>
+ <story>
+ <title>Corel Linux FAQ</title>
+ <url>http://slashdot.org/articles/99/06/05/1842218.shtml</url>
+ <time>1999-06-05 18:42:06</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-read</department>
+ <topic>corel</topic>
+ <comments>164</comments>
+ <section>articles</section>
+ <image>topiccorel.gif</image>
+ </story>
+ <story>
+ <title>Upside downsides MP3.COM.</title>
+ <url>http://slashdot.org/articles/99/06/05/1558210.shtml</url>
+ <time>1999-06-05 15:56:45</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-think-about</department>
+ <topic>music</topic>
+ <comments>48</comments>
+ <section>articles</section>
+ <image>topicmusic.gif</image>
+ </story>
+ <story>
+ <title>2 Terabits of Bandwidth</title>
+ <url>http://slashdot.org/articles/99/06/05/1554258.shtml</url>
+ <time>1999-06-05 15:53:43</time>
+ <author>CmdrTaco</author>
+ <department>faster-porn</department>
+ <topic>internet</topic>
+ <comments>66</comments>
+ <section>articles</section>
+ <image>topicinternet.jpg</image>
+ </story>
+ <story>
+ <title>Suppression of cold fusion research?</title>
+ <url>http://slashdot.org/articles/99/06/04/2313200.shtml</url>
+ <time>1999-06-04 23:12:29</time>
+ <author>Hemos</author>
+ <department>possibly-probably</department>
+ <topic>science</topic>
+ <comments>217</comments>
+ <section>articles</section>
+ <image>topicscience.gif</image>
+ </story>
+ <story>
+ <title>California Gov. Halts Wage Info Sale</title>
+ <url>http://slashdot.org/articles/99/06/04/235256.shtml</url>
+ <time>1999-06-04 23:05:34</time>
+ <author>Hemos</author>
+ <department>woo-hoo!</department>
+ <topic>usa</topic>
+ <comments>16</comments>
+ <section>articles</section>
+ <image>topicus.gif</image>
+ </story>
+ <story>
+ <title>Red Hat Announces IPO</title>
+ <url>http://slashdot.org/articles/99/06/04/0849207.shtml</url>
+ <time>1999-06-04 19:30:18</time>
+ <author>Justin</author>
+ <department>details-sketchy</department>
+ <topic>redhat</topic>
+ <comments>155</comments>
+ <section>articles</section>
+ <image>topicredhat.gif</image>
+ </story>
+</ultramode>
diff --git a/result/noent/slashdot16.xml b/result/noent/slashdot16.xml
new file mode 100644
index 0000000..f6a7f2a
--- /dev/null
+++ b/result/noent/slashdot16.xml
Binary files differ
diff --git a/result/noent/svg1 b/result/noent/svg1
new file mode 100644
index 0000000..359bd45
--- /dev/null
+++ b/result/noent/svg1
@@ -0,0 +1,161 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="242px" height="383px">
+<g style="stroke: #000000">
+</g>
+<g style="fill: #f2cc99">
+ <polyline verts=" 69,18 82,8 99,3 118,5 135,12 149,21 156,13 165,9 177,13 183,28 180,50 164,91 155,107 154,114 151,121 141,127 139,136 155,206 157,251 126,342 133,357 128,376 83,376 75,368 67,350 61,350 53,369 4,369 2,361 5,354 12,342 16,321 4,257 4,244 7,218 9,179 26,127 43,93 32,77 30,70 24,67 16,49 17,35 18,23 30,12 40,7 53,7 62,12 69,18 69,18 69,18"/>
+</g>
+<g style="fill: #e5b27f">
+ <polyline verts=" 142,79 136,74 138,82 133,78 133,84 127,78 128,85 124,80 125,87 119,82 119,90 125,99 125,96 128,100 128,94 131,98 132,93 135,97 136,93 138,97 139,94 141,98 143,94 144,85 142,79 142,79 142,79"/>
+</g>
+<g style="fill: #eb8080">
+ <polyline verts=" 127,101 132,100 137,99 144,101 143,105 135,110 127,101 127,101 127,101"/>
+</g>
+<g style="fill: #f2cc99">
+ <polyline verts=" 178,229 157,248 139,296 126,349 137,356 158,357 183,342 212,332 235,288 235,261 228,252 212,250 188,251 178,229 178,229 178,229"/>
+</g>
+<g style="fill: #9c826b">
+ <polyline verts=" 56,229 48,241 48,250 57,281 63,325 71,338 81,315 76,321 79,311 83,301 75,308 80,298 73,303 76,296 71,298 74,292 69,293 74,284 78,278 71,278 74,274 68,273 70,268 66,267 68,261 60,266 62,259 65,253 57,258 59,251 55,254 55,248 60,237 54,240 58,234 54,236 56,229 56,229 56,229"/>
+ <polyline verts=" 74,363 79,368 81,368 85,362 89,363 92,370 96,373 101,372 108,361 110,371 113,373 116,371 120,358 122,363 123,371 126,371 129,367 132,357 135,361 130,376 127,377 94,378 84,376 76,371 74,363 74,363 74,363"/>
+ <polyline verts=" 212,250 219,251 228,258 236,270 235,287 225,304 205,332 177,343 171,352 158,357 166,352 168,346 168,339 165,333 155,327 155,323 161,320 165,316 169,316 167,312 171,313 168,308 173,309 170,306 177,306 175,308 177,311 174,311 176,316 171,315 174,319 168,320 168,323 175,327 179,332 183,326 184,332 189,323 190,328 194,320 194,325 199,316 201,320 204,313 206,316 208,310 211,305 219,298 226,288 229,279 228,266 224,259 217,253 212,250 212,250 212,250"/>
+ <polyline verts=" 151,205 151,238 149,252 141,268 128,282 121,301 130,300 126,313 118,324 116,337 120,346 133,352 133,340 137,333 145,329 156,327 153,319 153,291 157,271 170,259 178,277 193,250 174,216 151,205 151,205 151,205"/>
+ <polyline verts=" 78,127 90,142 95,155 108,164 125,167 139,175 150,206 152,191 141,140 121,148 100,136 78,127 78,127 78,127"/>
+ <polyline verts=" 21,58 35,63 38,68 32,69 42,74 40,79 47,80 54,83 45,94 34,81 32,73 24,66 21,58 21,58 21,58"/>
+ <polyline verts=" 71,34 67,34 66,27 59,24 54,17 48,17 39,22 30,26 28,31 31,39 38,46 29,45 36,54 41,61 41,70 50,69 54,71 55,58 67,52 76,43 76,39 68,44 71,34 71,34 71,34"/>
+ <polyline verts=" 139,74 141,83 143,89 144,104 148,104 155,106 154,86 157,77 155,72 150,77 144,77 139,74 139,74 139,74"/>
+ <polyline verts=" 105,44 102,53 108,58 111,62 112,55 105,44 105,44 105,44"/>
+ <polyline verts=" 141,48 141,54 144,58 139,62 137,66 136,59 137,52 141,48 141,48 141,48"/>
+ <polyline verts=" 98,135 104,130 105,134 108,132 108,135 112,134 113,137 116,136 116,139 119,139 124,141 128,140 133,138 140,133 139,140 126,146 104,144 98,135 98,135 98,135"/>
+ <polyline verts=" 97,116 103,119 103,116 111,118 116,117 122,114 127,107 135,111 142,107 141,114 145,118 149,121 145,125 140,124 127,121 113,125 100,124 97,116 97,116 97,116"/>
+ <polyline verts=" 147,33 152,35 157,34 153,31 160,31 156,28 161,28 159,24 163,25 163,21 165,22 170,23 167,17 172,21 174,18 175,23 176,22 177,28 177,33 174,37 176,39 174,44 171,49 168,53 164,57 159,68 156,70 154,60 150,51 146,43 144,35 147,33 147,33 147,33"/>
+ <polyline verts=" 85,72 89,74 93,75 100,76 105,75 102,79 94,79 88,76 85,72 85,72 85,72"/>
+ <polyline verts=" 86,214 79,221 76,232 82,225 78,239 82,234 78,245 81,243 79,255 84,250 84,267 87,254 90,271 90,257 95,271 93,256 95,249 92,252 93,243 89,253 89,241 86,250 87,236 83,245 87,231 82,231 90,219 84,221 86,214 86,214 86,214"/>
+</g>
+<g style="fill: #ffcc7f">
+ <polyline verts=" 93,68 96,72 100,73 106,72 108,66 105,63 100,62 93,68 93,68 93,68"/>
+ <polyline verts=" 144,64 142,68 142,73 146,74 150,73 154,64 149,62 144,64 144,64 144,64"/>
+</g>
+<g style="fill: #9c826b">
+ <polyline verts=" 57,91 42,111 52,105 41,117 53,112 46,120 53,116 50,124 57,119 55,127 61,122 60,130 67,126 66,134 71,129 72,136 77,130 76,137 80,133 82,138 86,135 96,135 94,129 86,124 83,117 77,123 79,117 73,120 75,112 68,116 71,111 65,114 69,107 63,110 68,102 61,107 66,98 61,103 63,97 57,99 57,91 57,91 57,91"/>
+ <polyline verts=" 83,79 76,79 67,82 75,83 65,88 76,87 65,92 76,91 68,96 77,95 70,99 80,98 72,104 80,102 76,108 85,103 92,101 87,98 93,96 86,94 91,93 85,91 93,89 99,89 105,93 107,85 102,82 92,80 83,79 83,79 83,79"/>
+ <polyline verts=" 109,77 111,83 109,89 113,94 117,90 117,81 114,78 109,77 109,77 109,77"/>
+ <polyline verts=" 122,128 127,126 134,127 136,129 134,130 130,128 124,129 122,128 122,128 122,128"/>
+ <polyline verts=" 78,27 82,32 80,33 82,36 78,37 82,40 78,42 81,46 76,47 78,49 74,50 82,52 87,50 83,48 91,46 86,45 91,42 88,40 92,37 86,34 90,31 86,29 89,26 78,27 78,27 78,27"/>
+ <polyline verts=" 82,17 92,20 79,21 90,25 81,25 94,28 93,26 101,30 101,26 107,33 108,28 111,40 113,34 115,45 117,39 119,54 121,46 124,58 126,47 129,59 130,49 134,58 133,44 137,48 133,37 137,40 133,32 126,20 135,26 132,19 138,23 135,17 142,18 132,11 116,6 94,6 78,11 92,12 80,14 90,16 82,17 82,17 82,17"/>
+ <polyline verts=" 142,234 132,227 124,223 115,220 110,225 118,224 127,229 135,236 122,234 115,237 113,242 121,238 139,243 121,245 111,254 95,254 102,244 104,235 110,229 100,231 104,224 113,216 122,215 132,217 141,224 145,230 149,240 142,234 142,234 142,234"/>
+ <polyline verts=" 115,252 125,248 137,249 143,258 134,255 125,254 115,252 115,252 115,252"/>
+ <polyline verts=" 114,212 130,213 140,219 147,225 144,214 137,209 128,207 114,212 114,212 114,212"/>
+ <polyline verts=" 102,263 108,258 117,257 131,258 116,260 109,265 102,263 102,263 102,263"/>
+ <polyline verts=" 51,241 35,224 40,238 23,224 31,242 19,239 28,247 17,246 25,250 37,254 39,263 44,271 47,294 48,317 51,328 60,351 60,323 53,262 47,246 51,241 51,241 51,241"/>
+ <polyline verts=" 2,364 9,367 14,366 18,355 20,364 26,366 31,357 35,364 39,364 42,357 47,363 53,360 59,357 54,369 7,373 2,364 2,364 2,364"/>
+ <polyline verts=" 7,349 19,345 25,339 18,341 23,333 28,326 23,326 27,320 23,316 25,311 20,298 15,277 12,264 9,249 10,223 3,248 5,261 15,307 17,326 11,343 7,349 7,349 7,349"/>
+ <polyline verts=" 11,226 15,231 25,236 18,227 11,226 11,226 11,226"/>
+ <polyline verts=" 13,214 19,217 32,227 23,214 16,208 15,190 24,148 31,121 24,137 14,170 8,189 13,214 13,214 13,214"/>
+ <polyline verts=" 202,254 195,258 199,260 193,263 197,263 190,268 196,268 191,273 188,282 200,272 194,272 201,266 197,265 204,262 200,258 204,256 202,254 202,254 202,254"/>
+</g>
+<g style="fill: #845433">
+ <polyline verts=" 151,213 165,212 179,225 189,246 187,262 179,275 176,263 177,247 171,233 163,230 165,251 157,264 146,298 145,321 133,326 143,285 154,260 153,240 151,213 151,213 151,213"/>
+ <polyline verts=" 91,132 95,145 97,154 104,148 107,155 109,150 111,158 115,152 118,159 120,153 125,161 126,155 133,164 132,154 137,163 137,152 142,163 147,186 152,192 148,167 141,143 124,145 105,143 91,132 91,132 91,132"/>
+</g>
+<g style="fill: #9c826b">
+ <polyline verts=" 31,57 23,52 26,51 20,44 23,42 21,36 22,29 25,23 24,32 30,43 26,41 30,50 26,48 31,57 31,57 31,57"/>
+ <polyline verts=" 147,21 149,28 155,21 161,16 167,14 175,15 173,11 161,9 147,21 147,21 147,21"/>
+ <polyline verts=" 181,39 175,51 169,57 171,65 165,68 165,75 160,76 162,91 171,71 180,51 181,39 181,39 181,39"/>
+ <polyline verts=" 132,346 139,348 141,346 142,341 147,342 143,355 133,350 132,346 132,346 132,346"/>
+ <polyline verts=" 146,355 151,352 155,348 157,343 160,349 151,356 147,357 146,355 146,355 146,355"/>
+ <polyline verts=" 99,266 100,281 94,305 86,322 78,332 72,346 73,331 91,291 99,266 99,266 99,266"/>
+ <polyline verts=" 20,347 32,342 45,340 54,345 45,350 42,353 38,350 31,353 29,356 23,350 19,353 15,349 20,347 20,347 20,347"/>
+ <polyline verts=" 78,344 86,344 92,349 88,358 84,352 78,344 78,344 78,344"/>
+ <polyline verts=" 93,347 104,344 117,345 124,354 121,357 116,351 112,351 108,355 102,351 93,347 93,347 93,347"/>
+</g>
+<g style="fill: #000000">
+ <polyline verts=" 105,12 111,18 113,24 113,29 119,34 116,23 112,16 105,12 105,12 105,12"/>
+ <polyline verts=" 122,27 125,34 127,43 128,34 125,29 122,27 122,27 122,27"/>
+ <polyline verts=" 115,13 122,19 122,15 113,10 115,13 115,13 115,13"/>
+</g>
+<g style="fill: #ffe5b2">
+ <polyline verts=" 116,172 107,182 98,193 98,183 90,199 89,189 84,207 88,206 87,215 95,206 93,219 91,230 98,216 97,226 104,214 112,209 104,208 113,202 126,200 139,207 132,198 142,203 134,192 142,195 134,187 140,185 130,181 136,177 126,177 125,171 116,180 116,172 116,172 116,172"/>
+ <polyline verts=" 74,220 67,230 67,221 59,235 63,233 60,248 70,232 65,249 71,243 67,256 73,250 69,262 73,259 71,267 76,262 72,271 78,270 76,275 82,274 78,290 86,279 86,289 92,274 88,275 87,264 82,270 82,258 77,257 78,247 73,246 77,233 72,236 74,220 74,220 74,220"/>
+ <polyline verts=" 133,230 147,242 148,250 145,254 138,247 129,246 142,245 138,241 128,237 137,238 133,230 133,230 133,230"/>
+ <polyline verts=" 133,261 125,261 116,263 111,267 125,265 133,261 133,261 133,261"/>
+ <polyline verts=" 121,271 109,273 103,279 99,305 92,316 85,327 83,335 89,340 97,341 94,336 101,336 96,331 103,330 97,327 108,325 99,322 109,321 100,318 110,317 105,314 110,312 107,310 113,308 105,306 114,303 105,301 115,298 107,295 115,294 108,293 117,291 109,289 117,286 109,286 118,283 112,281 118,279 114,278 119,276 115,274 121,271 121,271 121,271"/>
+ <polyline verts=" 79,364 74,359 74,353 76,347 80,351 83,356 82,360 79,364 79,364 79,364"/>
+ <polyline verts=" 91,363 93,356 97,353 103,355 105,360 103,366 99,371 94,368 91,363 91,363 91,363"/>
+ <polyline verts=" 110,355 114,353 118,357 117,363 113,369 111,362 110,355 110,355 110,355"/>
+ <polyline verts=" 126,354 123,358 124,367 126,369 129,361 129,357 126,354 126,354 126,354"/>
+ <polyline verts=" 30,154 24,166 20,182 23,194 29,208 37,218 41,210 41,223 46,214 46,227 52,216 52,227 61,216 59,225 68,213 73,219 70,207 77,212 69,200 77,202 70,194 78,197 68,187 76,182 64,182 58,175 58,185 53,177 50,186 46,171 44,182 39,167 36,172 36,162 30,166 30,154 30,154 30,154"/>
+ <polyline verts=" 44,130 41,137 45,136 43,150 48,142 48,157 53,150 52,164 60,156 61,169 64,165 66,175 70,167 74,176 77,168 80,183 85,172 90,182 93,174 98,181 99,173 104,175 105,169 114,168 102,163 95,157 94,166 90,154 87,162 82,149 75,159 72,148 68,155 67,143 62,148 62,138 58,145 56,133 52,142 52,128 49,134 47,125 44,130 44,130 44,130"/>
+ <polyline verts=" 13,216 19,219 36,231 22,223 16,222 22,227 12,224 13,220 16,220 13,216 13,216 13,216"/>
+ <polyline verts=" 10,231 14,236 25,239 27,237 19,234 10,231 10,231 10,231"/>
+ <polyline verts=" 9,245 14,242 25,245 13,245 9,245 9,245 9,245"/>
+ <polyline verts=" 33,255 26,253 18,254 25,256 18,258 27,260 18,263 27,265 19,267 29,270 21,272 29,276 21,278 30,281 22,283 31,287 24,288 32,292 23,293 34,298 26,299 37,303 32,305 39,309 33,309 39,314 34,314 40,318 34,317 40,321 34,321 41,326 33,326 40,330 33,332 39,333 33,337 42,337 54,341 49,337 52,335 47,330 50,330 45,325 49,325 45,321 48,321 45,316 46,306 45,286 43,274 36,261 33,255 33,255 33,255"/>
+ <polyline verts=" 7,358 9,351 14,351 17,359 11,364 7,358 7,358 7,358"/>
+ <polyline verts=" 44,354 49,351 52,355 49,361 44,354 44,354 44,354"/>
+ <polyline verts=" 32,357 37,353 40,358 36,361 32,357 32,357 32,357"/>
+ <polyline verts=" 139,334 145,330 154,330 158,334 154,341 152,348 145,350 149,340 147,336 141,339 139,345 136,342 136,339 139,334 139,334 139,334"/>
+ <polyline verts=" 208,259 215,259 212,255 220,259 224,263 225,274 224,283 220,292 208,300 206,308 203,304 199,315 197,309 195,318 193,313 190,322 190,316 185,325 182,318 180,325 172,321 178,320 176,313 186,312 180,307 188,307 184,303 191,302 186,299 195,294 187,290 197,288 192,286 201,283 194,280 203,277 198,275 207,271 200,269 209,265 204,265 212,262 208,259 208,259 208,259"/>
+ <polyline verts=" 106,126 106,131 109,132 111,134 115,132 115,135 119,133 118,137 123,137 128,137 133,134 136,130 136,127 132,124 118,128 112,128 106,126 106,126 106,126"/>
+ <polyline verts=" 107,114 101,110 98,102 105,97 111,98 119,102 121,108 118,112 113,115 107,114 107,114 107,114"/>
+ <polyline verts=" 148,106 145,110 146,116 150,118 152,111 151,107 148,106 148,106 148,106"/>
+ <polyline verts=" 80,55 70,52 75,58 63,57 72,61 57,61 67,66 57,67 62,69 54,71 61,73 54,77 63,78 53,85 60,84 56,90 69,84 63,82 75,76 70,75 77,72 72,71 78,69 72,66 81,67 78,64 82,63 80,60 86,62 80,55 80,55 80,55"/>
+ <polyline verts=" 87,56 91,52 96,50 102,56 98,56 92,60 87,56 87,56 87,56"/>
+ <polyline verts=" 85,68 89,73 98,76 106,74 96,73 91,70 85,68 85,68 85,68"/>
+ <polyline verts=" 115,57 114,64 111,64 115,75 122,81 122,74 126,79 126,74 131,78 130,72 133,77 131,68 126,61 119,57 115,57 115,57 115,57"/>
+ <polyline verts=" 145,48 143,53 147,59 151,59 150,55 145,48 145,48 145,48"/>
+ <polyline verts=" 26,22 34,15 43,10 52,10 59,16 47,15 32,22 26,22 26,22 26,22"/>
+ <polyline verts=" 160,19 152,26 149,34 154,33 152,30 157,30 155,26 158,27 157,23 161,23 160,19 160,19 160,19"/>
+</g>
+<g style="fill: #000000">
+ <polyline verts=" 98,117 105,122 109,122 105,117 113,120 121,120 130,112 128,108 123,103 123,99 128,101 132,106 135,109 142,105 142,101 145,101 145,91 148,101 145,105 136,112 135,116 143,124 148,120 150,122 142,128 133,122 121,125 112,126 103,125 100,129 96,124 98,117 98,117 98,117"/>
+ <polyline verts=" 146,118 152,118 152,115 149,115 146,118 146,118 146,118"/>
+ <polyline verts=" 148,112 154,111 154,109 149,109 148,112 148,112 148,112"/>
+ <polyline verts=" 106,112 108,115 114,116 118,114 106,112 106,112 106,112"/>
+ <polyline verts=" 108,108 111,110 116,110 119,108 108,108 108,108 108,108"/>
+ <polyline verts=" 106,104 109,105 117,106 115,104 106,104 106,104 106,104"/>
+ <polyline verts=" 50,25 41,26 34,33 39,43 49,58 36,51 47,68 55,69 54,59 61,57 74,46 60,52 67,42 57,48 61,40 54,45 60,36 59,29 48,38 52,30 47,32 50,25 50,25 50,25"/>
+ <polyline verts=" 147,34 152,41 155,49 161,53 157,47 164,47 158,43 168,44 159,40 164,37 169,37 164,33 169,34 165,28 170,30 170,25 173,29 175,27 176,32 173,36 175,39 172,42 172,46 168,49 170,55 162,57 158,63 155,58 153,50 149,46 147,34 147,34 147,34"/>
+ <polyline verts=" 155,71 159,80 157,93 157,102 155,108 150,101 149,93 154,101 152,91 151,83 155,79 155,71 155,71 155,71"/>
+ <polyline verts=" 112,78 115,81 114,91 112,87 113,82 112,78 112,78 112,78"/>
+ <polyline verts=" 78,28 64,17 58,11 47,9 36,10 28,16 21,26 18,41 20,51 23,61 33,65 28,68 37,74 36,81 43,87 48,90 43,100 40,98 39,90 31,80 30,72 22,71 17,61 14,46 16,28 23,17 33,9 45,6 54,6 65,12 78,28 78,28 78,28"/>
+ <polyline verts=" 67,18 76,9 87,5 101,2 118,3 135,8 149,20 149,26 144,19 132,12 121,9 105,7 89,8 76,14 70,20 67,18 67,18 67,18"/>
+ <polyline verts=" 56,98 48,106 56,103 47,112 56,110 52,115 57,113 52,121 62,115 58,123 65,119 63,125 69,121 68,127 74,125 74,129 79,128 83,132 94,135 93,129 85,127 81,122 76,126 75,121 71,124 71,117 66,121 66,117 62,117 64,112 60,113 60,110 57,111 61,105 57,107 60,101 55,102 56,98 56,98 56,98"/>
+ <polyline verts=" 101,132 103,138 106,134 106,139 112,136 111,142 115,139 114,143 119,142 125,145 131,142 135,138 140,134 140,129 143,135 145,149 150,171 149,184 145,165 141,150 136,147 132,151 131,149 126,152 125,150 121,152 117,148 111,152 110,148 105,149 104,145 98,150 96,138 94,132 94,130 98,132 101,132 101,132 101,132"/>
+ <polyline verts=" 41,94 32,110 23,132 12,163 6,190 7,217 5,236 3,247 9,230 12,211 12,185 18,160 26,134 35,110 43,99 41,94 41,94 41,94"/>
+ <polyline verts=" 32,246 41,250 50,257 52,267 53,295 53,323 59,350 54,363 51,365 44,366 42,360 40,372 54,372 59,366 62,353 71,352 75,335 73,330 66,318 68,302 64,294 67,288 63,286 63,279 59,275 58,267 56,262 50,247 42,235 44,246 32,236 35,244 32,246 32,246 32,246"/>
+ <polyline verts=" 134,324 146,320 159,322 173,327 179,337 179,349 172,355 158,357 170,350 174,343 170,333 163,328 152,326 134,329 134,324 134,324 134,324"/>
+ <polyline verts=" 173,339 183,334 184,338 191,329 194,332 199,323 202,325 206,318 209,320 213,309 221,303 228,296 232,289 234,279 233,269 230,262 225,256 219,253 208,252 198,252 210,249 223,250 232,257 237,265 238,277 238,291 232,305 221,323 218,335 212,342 200,349 178,348 173,339 173,339 173,339"/>
+ <polyline verts=" 165,296 158,301 156,310 156,323 162,324 159,318 162,308 162,304 165,296 165,296 165,296"/>
+ <polyline verts=" 99,252 105,244 107,234 115,228 121,228 131,235 122,233 113,235 109,246 121,239 133,243 121,243 110,251 99,252 99,252 99,252"/>
+ <polyline verts=" 117,252 124,247 134,249 136,253 126,252 117,252 117,252 117,252"/>
+ <polyline verts=" 117,218 132,224 144,233 140,225 132,219 117,218 117,218 117,218"/>
+ <polyline verts=" 122,212 134,214 143,221 141,213 132,210 122,212 122,212 122,212"/>
+ <polyline verts=" 69,352 70,363 76,373 86,378 97,379 108,379 120,377 128,378 132,373 135,361 133,358 132,366 127,375 121,374 121,362 119,367 117,374 110,376 110,362 107,357 106,371 104,375 97,376 90,375 90,368 86,362 83,364 86,369 85,373 78,370 73,362 71,351 69,352 69,352 69,352"/>
+ <polyline verts=" 100,360 96,363 99,369 102,364 100,360 100,360 100,360"/>
+ <polyline verts=" 115,360 112,363 114,369 117,364 115,360 115,360 115,360"/>
+ <polyline verts=" 127,362 125,364 126,369 128,365 127,362 127,362 127,362"/>
+ <polyline verts=" 5,255 7,276 11,304 15,320 13,334 6,348 2,353 0,363 5,372 12,374 25,372 38,372 44,369 42,367 36,368 31,369 30,360 27,368 20,370 16,361 15,368 10,369 3,366 3,359 6,352 11,348 17,331 19,316 12,291 9,274 5,255 5,255 5,255"/>
+ <polyline verts=" 10,358 7,362 10,366 11,362 10,358 10,358 10,358"/>
+ <polyline verts=" 25,357 22,360 24,366 27,360 25,357 25,357 25,357"/>
+ <polyline verts=" 37,357 34,361 36,365 38,361 37,357 37,357 37,357"/>
+ <polyline verts=" 49,356 46,359 47,364 50,360 49,356 49,356 49,356"/>
+ <polyline verts=" 130,101 132,102 135,101 139,102 143,103 142,101 137,100 133,100 130,101 130,101 130,101"/>
+ <polyline verts=" 106,48 105,52 108,56 109,52 106,48 106,48 106,48"/>
+ <polyline verts=" 139,52 139,56 140,60 142,58 141,56 139,52 139,52 139,52"/>
+ <polyline verts=" 25,349 29,351 30,355 33,350 37,348 42,351 45,347 49,345 44,343 36,345 25,349 25,349 25,349"/>
+ <polyline verts=" 98,347 105,351 107,354 109,349 115,349 120,353 118,349 113,346 104,346 98,347 98,347 98,347"/>
+ <polyline verts=" 83,348 87,352 87,357 89,351 87,348 83,348 83,348 83,348"/>
+ <polyline verts=" 155,107 163,107 170,107 186,108 175,109 155,109 155,107 155,107 155,107"/>
+ <polyline verts=" 153,114 162,113 175,112 192,114 173,114 154,115 153,114 153,114 153,114"/>
+ <polyline verts=" 152,118 164,120 180,123 197,129 169,123 151,120 152,118 152,118 152,118"/>
+ <polyline verts=" 68,109 87,106 107,106 106,108 88,108 68,109 68,109 68,109"/>
+ <polyline verts=" 105,111 95,112 79,114 71,116 85,115 102,113 105,111 105,111 105,111"/>
+ <polyline verts=" 108,101 98,99 87,99 78,99 93,100 105,102 108,101 108,101 108,101"/>
+ <polyline verts=" 85,63 91,63 97,60 104,60 108,62 111,69 112,75 110,74 108,71 103,73 106,69 105,65 103,64 103,67 102,70 99,70 97,66 94,67 97,72 88,67 84,66 85,63 85,63 85,63"/>
+ <polyline verts=" 140,74 141,66 144,61 150,61 156,62 153,70 150,73 152,65 150,65 151,68 149,71 146,71 144,66 143,70 143,74 140,74 140,74 140,74"/>
+ <polyline verts=" 146,20 156,11 163,9 172,9 178,14 182,18 184,32 182,42 182,52 177,58 176,67 171,76 165,90 157,105 160,92 164,85 168,78 167,73 173,66 172,62 175,59 174,55 177,53 180,46 181,29 179,21 173,13 166,11 159,13 153,18 148,23 146,20 146,20 146,20"/>
+ <polyline verts=" 150,187 148,211 150,233 153,247 148,267 135,283 125,299 136,292 131,313 122,328 122,345 129,352 133,359 133,367 137,359 148,356 140,350 131,347 129,340 132,332 140,328 137,322 140,304 154,265 157,244 155,223 161,220 175,229 186,247 185,260 176,275 178,287 185,277 188,261 196,253 189,236 174,213 150,187 150,187 150,187"/>
+ <polyline verts=" 147,338 142,341 143,345 141,354 147,343 147,338 147,338 147,338"/>
+ <polyline verts=" 157,342 156,349 150,356 157,353 163,346 162,342 157,342 157,342 157,342"/>
+ <polyline verts=" 99,265 96,284 92,299 73,339 73,333 87,300 99,265 99,265 99,265"/>
+</g></svg>
diff --git a/result/noent/svg2 b/result/noent/svg2
new file mode 100644
index 0000000..6c3990c
--- /dev/null
+++ b/result/noent/svg2
@@ -0,0 +1,56 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="268px" height="207px">
+<g style="stroke: #000000">
+ <path d=" M 29 28 "/>
+ <path d=" L 19 74 "/>
+</g>
+<g style="stroke: #800040">
+ <polyline verts=" 32,100 72,50 90,82 73,16 120,64 152,9 177,107"/>
+</g>
+<g style="stroke: #000000">
+</g>
+<g style="stroke: #0000ff">
+ <rect x="30" y="101" width="51" height="33"/>
+</g>
+<g style="fill: #0000ff">
+ <ellipse cx="182" cy="127" major="37" minor="31" angle="90"/>
+</g>
+<g style="fill: #ff0000">
+ <polyline verts=" 78,180 76,151 131,149 136,182 135,182 134,183 127,185 117,186 109,192 104,194 98,199 96,200 95,201 94,202 92,202 85,202 70,200 54,199 47,198 46,197 45,197 37,195 26,193 17,187 9,181 8,181 7,176 6,175 6,173 6,172 6,170 8,164 8,163 8,162 9,162 10,162 11,162 13,162 20,162 26,162 27,162 28,162 30,162 30,163 31,163 32,164 34,166 35,166 36,167 36,168 37,169 38,169 39,169 41,170 43,170 45,170 47,170 49,170 50,168 50,161 50,160 50,159 47,162 78,180"/>
+ <g>
+ <desc> Java Font definition:Dialog 0</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Helvetica 0</desc>
+ </g>
+</g>
+<g style="stroke: #000000">
+ <text x="188" y="36">this is text</text>
+</g>
+<g style="stroke: #000000">
+ <g>
+ <desc> Java Font definition:Dialog 0</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Helvetica 700</desc>
+ </g>
+</g>
+<g style="stroke: #008080">
+ <text x="176" y="85">sadfsadfsad</text>
+</g>
+<g style="stroke: #000000">
+</g>
+<g style="fill: #800040">
+ <ellipse cx="208" cy="180" major="45" minor="31" angle="0"/>
+</g>
+<g style="stroke: #000000">
+</g>
+<g style="fill: #ffffff">
+ <g>
+ <desc> Java Font definition:Dialog 700</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Dialog 700</desc>
+ </g>
+</g></svg>
diff --git a/result/noent/svg3 b/result/noent/svg3
new file mode 100644
index 0000000..c4994b8
--- /dev/null
+++ b/result/noent/svg3
@@ -0,0 +1,723 @@
+<?xml version="1.0"?>
+<svg>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M77.696 284.285C77.696 284.285 77.797 286.179 76.973 286.16C76.149 286.141 59.695 238.066 39.167 240.309C39.167 240.309 56.95 232.956 77.696 284.285z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M81.226 281.262C81.226 281.262 80.677 283.078 79.908 282.779C79.14 282.481 80.023 231.675 59.957 226.801C59.957 226.801 79.18 225.937 81.226 281.262z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M108.716 323.59C108.716 323.59 110.352 324.55 109.882 325.227C109.411 325.904 60.237 313.102 50.782 331.459C50.782 331.459 54.461 312.572 108.716 323.59z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M105.907 333.801C105.907 333.801 107.763 334.197 107.529 334.988C107.296 335.779 56.593 339.121 53.403 359.522C53.403 359.522 50.945 340.437 105.907 333.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M101.696 328.276C101.696 328.276 103.474 328.939 103.128 329.687C102.782 330.435 52.134 326.346 46.002 346.064C46.002 346.064 46.354 326.825 101.696 328.276z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M90.991 310.072C90.991 310.072 92.299 311.446 91.66 311.967C91.021 312.488 47.278 286.634 33.131 301.676C33.131 301.676 41.872 284.533 90.991 310.072z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M83.446 314.263C83.446 314.263 84.902 315.48 84.326 316.071C83.75 316.661 37.362 295.922 25.008 312.469C25.008 312.469 31.753 294.447 83.446 314.263z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M80.846 318.335C80.846 318.335 82.454 319.343 81.964 320.006C81.474 320.669 32.692 306.446 22.709 324.522C22.709 324.522 26.934 305.749 80.846 318.335z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M91.58 318.949C91.58 318.949 92.702 320.48 92.001 320.915C91.3 321.35 51.231 290.102 35.273 303.207C35.273 303.207 46.138 287.326 91.58 318.949z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M71.8 290C71.8 290 72.4 291.8 71.6 292C70.8 292.2 42.2 250.2 22.999 257.8C22.999 257.8 38.2 246 71.8 290z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M72.495 296.979C72.495 296.979 73.47 298.608 72.731 298.975C71.993 299.343 35.008 264.499 17.899 276.061C17.899 276.061 30.196 261.261 72.495 296.979z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M72.38 301.349C72.38 301.349 73.502 302.88 72.801 303.315C72.1 303.749 32.031 272.502 16.073 285.607C16.073 285.607 26.938 269.726 72.38 301.349z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000">
+ <path d="M70.17 303.065C70.673 309.113 71.661 315.682 73.4 318.801C73.4 318.801 69.8 331.201 78.6 344.401C78.6 344.401 78.2 351.601 79.8 354.801C79.8 354.801 83.8 363.201 88.6 364.001C92.484 364.648 101.207 367.717 111.068 369.121C111.068 369.121 128.2 383.201 125 396.001C125 396.001 124.6 412.401 121 414.001C121 414.001 132.6 402.801 123 419.601L118.6 438.401C118.6 438.401 144.2 416.801 128.6 435.201L118.6 461.201C118.6 461.201 138.2 442.801 131 451.201L127.8 460.001C127.8 460.001 171 432.801 140.2 462.401C140.2 462.401 148.2 458.801 152.6 461.601C152.6 461.601 159.4 460.401 158.6 462.001C158.6 462.001 137.8 472.401 134.2 490.801C134.2 490.801 142.6 480.801 139.4 491.601L139.8 503.201C139.8 503.201 143.8 481.601 143.4 519.201C143.4 519.201 162.6 501.201 151 522.001L151 538.801C151 538.801 166.2 522.401 159.8 535.201C159.8 535.201 169.8 526.401 165.8 541.601C165.8 541.601 165 552.001 169.4 540.801C169.4 540.801 185.4 510.201 179.4 536.401C179.4 536.401 178.6 555.601 183.4 540.801C183.4 540.801 183.8 551.201 193 558.401C193 558.401 191.8 507.601 204.6 543.601L208.6 560.001C208.6 560.001 211.4 550.801 211 545.601C211 545.601 225.8 529.201 219 553.601C219 553.601 234.2 530.801 231 544.001C231 544.001 223.4 560.001 225 564.801C225 564.801 241.8 530.001 243 528.401C243 528.401 241 570.802 251.8 534.801C251.8 534.801 257.4 546.801 254.6 551.201C254.6 551.201 262.6 543.201 261.8 540.001C261.8 540.001 266.4 531.801 269.2 545.401C269.2 545.401 271 554.801 272.6 551.601C272.6 551.601 276.6 575.602 277.8 552.801C277.8 552.801 279.4 539.201 272.2 527.601C272.2 527.601 273 524.401 270.2 520.401C270.2 520.401 283.8 542.001 276.6 513.201C276.6 513.201 287.801 521.201 289.001 521.201C289.001 521.201 275.4 498.001 284.2 502.801C284.2 502.801 279 492.401 297.001 504.401C297.001 504.401 281 488.401 298.601 498.001C298.601 498.001 306.601 504.401 299.001 494.401C299.001 494.401 284.6 478.401 306.601 496.401C306.601 496.401 318.201 512.801 319.001 515.601C319.001 515.601 309.001 486.401 304.601 483.601C304.601 483.601 313.001 447.201 354.201 462.801C354.201 462.801 361.001 480.001 365.401 461.601C365.401 461.601 378.201 455.201 389.401 482.801C389.401 482.801 393.401 469.201 392.601 466.401C392.601 466.401 399.401 467.601 398.601 466.401C398.601 466.401 411.801 470.801 413.001 470.001C413.001 470.001 419.801 476.801 420.201 473.201C420.201 473.201 429.401 476.001 427.401 472.401C427.401 472.401 436.201 488.001 436.601 491.601L439.001 477.601L441.001 480.401C441.001 480.401 442.601 472.801 441.801 471.601C441.001 470.401 461.801 478.401 466.601 499.201L468.601 507.601C468.601 507.601 474.601 492.801 473.001 488.801C473.001 488.801 478.201 489.601 478.601 494.001C478.601 494.001 482.601 470.801 477.801 464.801C477.801 464.801 482.201 464.001 483.401 467.601L483.401 460.401C483.401 460.401 490.601 461.201 490.601 458.801C490.601 458.801 495.001 454.801 497.001 459.601C497.001 459.601 484.601 424.401 503.001 443.601C503.001 443.601 510.201 454.401 506.601 435.601C503.001 416.801 499.001 415.201 503.801 414.801C503.801 414.801 504.601 411.201 502.601 409.601C500.601 408.001 503.801 409.601 503.801 409.601C503.801 409.601 508.601 413.601 503.401 391.601C503.401 391.601 509.801 393.201 497.801 364.001C497.801 364.001 500.601 361.601 496.601 353.201C496.601 353.201 504.601 357.601 507.401 356.001C507.401 356.001 507.001 354.401 503.801 350.401C503.801 350.401 482.201 295.6 502.601 317.601C502.601 317.601 514.451 331.151 508.051 308.351C508.051 308.351 498.94 284.341 499.717 280.045L70.17 303.065z"/>
+ </g>
+ <g style="fill: #cc7226; stroke:#000000">
+ <path d="M499.717 280.245C500.345 280.426 502.551 281.55 503.801 283.2C503.801 283.2 510.601 294 505.401 275.6C505.401 275.6 496.201 246.8 505.001 258C505.001 258 511.001 265.2 507.801 251.6C503.936 235.173 501.401 228.8 501.401 228.8C501.401 228.8 513.001 233.6 486.201 194L495.001 197.6C495.001 197.6 475.401 158 453.801 152.8L445.801 146.8C445.801 146.8 484.201 108.8 471.401 72C471.401 72 464.601 66.8 455.001 76C455.001 76 448.601 80.8 442.601 79.2C442.601 79.2 411.801 80.4 409.801 80.4C407.801 80.4 373.001 43.2 307.401 60.8C307.401 60.8 302.201 62.8 297.801 61.6C297.801 61.6 279.4 45.6 230.6 68.4C230.6 68.4 220.6 70.4 219 70.4C217.4 70.4 214.6 70.4 206.6 76.8C198.6 83.2 198.2 84 196.2 85.6C196.2 85.6 179.8 96.8 175 97.6C175 97.6 163.4 104 159 114L155.4 115.2C155.4 115.2 153.8 122.4 153.4 123.6C153.4 123.6 148.6 127.2 147.8 132.8C147.8 132.8 139 138.8 139.4 143.2C139.4 143.2 137.8 148.4 137 153.2C137 153.2 129.8 158 130.6 160.8C130.6 160.8 123 174.8 124.2 181.6C124.2 181.6 117.8 181.2 115 183.6C115 183.6 114.2 188.4 112.6 188.8C112.6 188.8 109.8 190 112.2 194C112.2 194 110.6 196.8 110.2 198.4C110.2 198.4 111 201.2 106.6 206.8C106.6 206.8 100.2 225.6 102.2 230.8C102.2 230.8 102.6 235.6 99.8 237.2C99.8 237.2 96.2 236.8 104.6 248.8C104.6 248.8 105.4 250 102.2 252.4C102.2 252.4 85 256 82.6 272.4C82.6 272.4 69 287.2 69 292.4C69 294.705 69.271 297.852 69.97 302.465C69.97 302.465 69.4 310.801 97 311.601C124.6 312.401 499.717 280.245 499.717 280.245z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M84.4 302.6C59.4 263.2 73.8 319.601 73.8 319.601C82.6 354.001 212.2 316.401 212.2 316.401C212.2 316.401 381.001 286 392.201 282C403.401 278 498.601 284.4 498.601 284.4L493.001 267.6C428.201 221.2 409.001 244.4 395.401 240.4C381.801 236.4 384.201 246 381.001 246.8C377.801 247.6 338.601 222.8 332.201 223.6C325.801 224.4 300.459 200.649 315.401 232.4C331.401 266.4 257 271.6 240.2 260.4C223.4 249.2 247.4 278.8 247.4 278.8C265.8 298.8 231.4 282 231.4 282C197 269.2 173 294.8 169.8 295.6C166.6 296.4 161.8 299.6 161 293.2C160.2 286.8 152.69 270.099 121 296.4C101 313.001 87.2 291 87.2 291L84.4 302.6z"/>
+ </g>
+ <g style="fill: #e87f3a">
+ <path d="M333.51 225.346C327.11 226.146 301.743 202.407 316.71 234.146C333.31 269.346 258.31 273.346 241.51 262.146C224.709 250.946 248.71 280.546 248.71 280.546C267.11 300.546 232.709 283.746 232.709 283.746C198.309 270.946 174.309 296.546 171.109 297.346C167.909 298.146 163.109 301.346 162.309 294.946C161.509 288.546 154.13 272.012 122.309 298.146C101.073 315.492 87.582 294.037 87.582 294.037L84.382 304.146C59.382 264.346 74.454 322.655 74.454 322.655C83.255 357.056 213.509 318.146 213.509 318.146C213.509 318.146 382.31 287.746 393.51 283.746C404.71 279.746 499.038 286.073 499.038 286.073L493.51 268.764C428.71 222.364 410.31 246.146 396.71 242.146C383.11 238.146 385.51 247.746 382.31 248.546C379.11 249.346 339.91 224.546 333.51 225.346z"/>
+ </g>
+ <g style="fill: #ea8c4d">
+ <path d="M334.819 227.091C328.419 227.891 303.685 203.862 318.019 235.891C334.219 272.092 259.619 275.092 242.819 263.892C226.019 252.692 250.019 282.292 250.019 282.292C268.419 302.292 234.019 285.492 234.019 285.492C199.619 272.692 175.618 298.292 172.418 299.092C169.218 299.892 164.418 303.092 163.618 296.692C162.818 290.292 155.57 273.925 123.618 299.892C101.145 317.983 87.964 297.074 87.964 297.074L84.364 305.692C60.564 266.692 75.109 325.71 75.109 325.71C83.909 360.11 214.819 319.892 214.819 319.892C214.819 319.892 383.619 289.492 394.819 285.492C406.019 281.492 499.474 287.746 499.474 287.746L494.02 269.928C429.219 223.528 411.619 247.891 398.019 243.891C384.419 239.891 386.819 249.491 383.619 250.292C380.419 251.092 341.219 226.291 334.819 227.091z"/>
+ </g>
+ <g style="fill: #ec9961">
+ <path d="M336.128 228.837C329.728 229.637 304.999 205.605 319.328 237.637C336.128 275.193 260.394 276.482 244.128 265.637C227.328 254.437 251.328 284.037 251.328 284.037C269.728 304.037 235.328 287.237 235.328 287.237C200.928 274.437 176.928 300.037 173.728 300.837C170.528 301.637 165.728 304.837 164.928 298.437C164.128 292.037 157.011 275.839 124.927 301.637C101.218 320.474 88.345 300.11 88.345 300.11L84.345 307.237C62.545 270.437 75.764 328.765 75.764 328.765C84.564 363.165 216.128 321.637 216.128 321.637C216.128 321.637 384.928 291.237 396.129 287.237C407.329 283.237 499.911 289.419 499.911 289.419L494.529 271.092C429.729 224.691 412.929 249.637 399.329 245.637C385.728 241.637 388.128 251.237 384.928 252.037C381.728 252.837 342.528 228.037 336.128 228.837z"/>
+ </g>
+ <g style="fill: #eea575">
+ <path d="M337.438 230.583C331.037 231.383 306.814 207.129 320.637 239.383C337.438 278.583 262.237 278.583 245.437 267.383C228.637 256.183 252.637 285.783 252.637 285.783C271.037 305.783 236.637 288.983 236.637 288.983C202.237 276.183 178.237 301.783 175.037 302.583C171.837 303.383 167.037 306.583 166.237 300.183C165.437 293.783 158.452 277.752 126.237 303.383C101.291 322.965 88.727 303.146 88.727 303.146L84.327 308.783C64.527 273.982 76.418 331.819 76.418 331.819C85.218 366.22 217.437 323.383 217.437 323.383C217.437 323.383 386.238 292.983 397.438 288.983C408.638 284.983 500.347 291.092 500.347 291.092L495.038 272.255C430.238 225.855 414.238 251.383 400.638 247.383C387.038 243.383 389.438 252.983 386.238 253.783C383.038 254.583 343.838 229.783 337.438 230.583z"/>
+ </g>
+ <g style="fill: #f1b288">
+ <path d="M338.747 232.328C332.347 233.128 306.383 209.677 321.947 241.128C341.147 279.928 263.546 280.328 246.746 269.128C229.946 257.928 253.946 287.528 253.946 287.528C272.346 307.528 237.946 290.728 237.946 290.728C203.546 277.928 179.546 303.528 176.346 304.328C173.146 305.128 168.346 308.328 167.546 301.928C166.746 295.528 159.892 279.665 127.546 305.128C101.364 325.456 89.109 306.183 89.109 306.183L84.309 310.328C66.309 277.128 77.073 334.874 77.073 334.874C85.873 369.274 218.746 325.128 218.746 325.128C218.746 325.128 387.547 294.728 398.747 290.728C409.947 286.728 500.783 292.764 500.783 292.764L495.547 273.419C430.747 227.019 415.547 253.128 401.947 249.128C388.347 245.128 390.747 254.728 387.547 255.528C384.347 256.328 345.147 231.528 338.747 232.328z"/>
+ </g>
+ <g style="fill: #f3bf9c">
+ <path d="M340.056 234.073C333.655 234.873 307.313 211.613 323.255 242.873C343.656 282.874 264.855 282.074 248.055 270.874C231.255 259.674 255.255 289.274 255.255 289.274C273.655 309.274 239.255 292.474 239.255 292.474C204.855 279.674 180.855 305.274 177.655 306.074C174.455 306.874 169.655 310.074 168.855 303.674C168.055 297.274 161.332 281.578 128.855 306.874C101.436 327.947 89.491 309.219 89.491 309.219L84.291 311.874C68.291 281.674 77.727 337.929 77.727 337.929C86.527 372.329 220.055 326.874 220.055 326.874C220.055 326.874 388.856 296.474 400.056 292.474C411.256 288.474 501.22 294.437 501.22 294.437L496.056 274.583C431.256 228.183 416.856 254.874 403.256 250.874C389.656 246.873 392.056 256.474 388.856 257.274C385.656 258.074 346.456 233.273 340.056 234.073z"/>
+ </g>
+ <g style="fill: #f5ccb0">
+ <path d="M341.365 235.819C334.965 236.619 307.523 213.944 324.565 244.619C346.565 284.219 266.164 283.819 249.364 272.619C232.564 261.419 256.564 291.019 256.564 291.019C274.964 311.019 240.564 294.219 240.564 294.219C206.164 281.419 182.164 307.019 178.964 307.819C175.764 308.619 170.964 311.819 170.164 305.419C169.364 299.019 162.773 283.492 130.164 308.619C101.509 330.438 89.873 312.256 89.873 312.256L84.273 313.419C69.872 285.019 78.382 340.983 78.382 340.983C87.182 375.384 221.364 328.619 221.364 328.619C221.364 328.619 390.165 298.219 401.365 294.219C412.565 290.219 501.656 296.11 501.656 296.11L496.565 275.746C431.765 229.346 418.165 256.619 404.565 252.619C390.965 248.619 393.365 258.219 390.165 259.019C386.965 259.819 347.765 235.019 341.365 235.819z"/>
+ </g>
+ <g style="fill: #f8d8c4">
+ <path d="M342.674 237.565C336.274 238.365 308.832 215.689 325.874 246.365C347.874 285.965 267.474 285.565 250.674 274.365C233.874 263.165 257.874 292.765 257.874 292.765C276.274 312.765 241.874 295.965 241.874 295.965C207.473 283.165 183.473 308.765 180.273 309.565C177.073 310.365 172.273 313.565 171.473 307.165C170.673 300.765 164.214 285.405 131.473 310.365C101.582 332.929 90.255 315.293 90.255 315.293L84.255 314.965C70.654 288.564 79.037 344.038 79.037 344.038C87.837 378.438 222.673 330.365 222.673 330.365C222.673 330.365 391.474 299.965 402.674 295.965C413.874 291.965 502.093 297.783 502.093 297.783L497.075 276.91C432.274 230.51 419.474 258.365 405.874 254.365C392.274 250.365 394.674 259.965 391.474 260.765C388.274 261.565 349.074 236.765 342.674 237.565z"/>
+ </g>
+ <g style="fill: #fae5d7">
+ <path d="M343.983 239.31C337.583 240.11 310.529 217.223 327.183 248.11C349.183 288.91 268.783 287.31 251.983 276.11C235.183 264.91 259.183 294.51 259.183 294.51C277.583 314.51 243.183 297.71 243.183 297.71C208.783 284.91 184.783 310.51 181.583 311.31C178.382 312.11 173.582 315.31 172.782 308.91C171.982 302.51 165.654 287.318 132.782 312.11C101.655 335.42 90.637 318.329 90.637 318.329L84.236 316.51C71.236 292.51 79.691 347.093 79.691 347.093C88.491 381.493 223.983 332.11 223.983 332.11C223.983 332.11 392.783 301.71 403.983 297.71C415.183 293.71 502.529 299.456 502.529 299.456L497.583 278.074C432.783 231.673 420.783 260.11 407.183 256.11C393.583 252.11 395.983 261.71 392.783 262.51C389.583 263.31 350.383 238.51 343.983 239.31z"/>
+ </g>
+ <g style="fill: #fcf2eb">
+ <path d="M345.292 241.055C338.892 241.855 312.917 218.411 328.492 249.855C349.692 292.656 270.092 289.056 253.292 277.856C236.492 266.656 260.492 296.256 260.492 296.256C278.892 316.256 244.492 299.456 244.492 299.456C210.092 286.656 186.092 312.256 182.892 313.056C179.692 313.856 174.892 317.056 174.092 310.656C173.292 304.256 167.095 289.232 134.092 313.856C101.727 337.911 91.018 321.365 91.018 321.365L84.218 318.056C71.418 294.856 80.346 350.147 80.346 350.147C89.146 384.547 225.292 333.856 225.292 333.856C225.292 333.856 394.093 303.456 405.293 299.456C416.493 295.456 502.965 301.128 502.965 301.128L498.093 279.237C433.292 232.837 422.093 261.856 408.493 257.856C394.893 253.855 397.293 263.456 394.093 264.256C390.892 265.056 351.692 240.255 345.292 241.055z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M84.2 319.601C71.4 297.6 81 353.201 81 353.201C89.8 387.601 226.6 335.601 226.6 335.601C226.6 335.601 395.401 305.2 406.601 301.2C417.801 297.2 503.401 302.8 503.401 302.8L498.601 280.4C433.801 234 423.401 263.6 409.801 259.6C396.201 255.6 398.601 265.2 395.401 266C392.201 266.8 353.001 242 346.601 242.8C340.201 243.6 314.981 219.793 329.801 251.6C352.028 299.307 269.041 289.227 254.6 279.6C237.8 268.4 261.8 298 261.8 298C280.2 318.001 245.8 301.2 245.8 301.2C211.4 288.4 187.4 314.001 184.2 314.801C181 315.601 176.2 318.801 175.4 312.401C174.6 306 168.535 291.144 135.4 315.601C101.8 340.401 91.4 324.401 91.4 324.401L84.2 319.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M125.8 349.601C125.8 349.601 118.6 361.201 139.4 374.401C139.4 374.401 140.8 375.801 122.8 371.601C122.8 371.601 116.6 369.601 115 359.201C115 359.201 110.2 354.801 105.4 349.201C100.6 343.601 125.8 349.601 125.8 349.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M265.8 302C265.8 302 283.498 328.821 282.9 333.601C281.6 344.001 281.4 353.601 284.6 357.601C287.801 361.601 296.601 394.801 296.601 394.801C296.601 394.801 296.201 396.001 308.601 358.001C308.601 358.001 320.201 342.001 300.201 323.601C300.201 323.601 265 294.8 265.8 302z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M145.8 376.401C145.8 376.401 157 383.601 142.6 414.801L149 412.401C149 412.401 148.2 423.601 145 426.001L152.2 422.801C152.2 422.801 157 430.801 153 435.601C153 435.601 169.8 443.601 169 450.001C169 450.001 175.4 442.001 171.4 435.601C167.4 429.201 160.2 433.201 161 414.801L152.2 418.001C152.2 418.001 157.8 409.201 157.8 402.801L149.8 405.201C149.8 405.201 165.269 378.623 154.6 377.201C148.6 376.401 145.8 376.401 145.8 376.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M178.2 393.201C178.2 393.201 181 388.801 178.2 389.601C175.4 390.401 144.2 405.201 138.2 414.801C138.2 414.801 172.6 390.401 178.2 393.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M188.6 401.201C188.6 401.201 191.4 396.801 188.6 397.601C185.8 398.401 154.6 413.201 148.6 422.801C148.6 422.801 183 398.401 188.6 401.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M201.8 386.001C201.8 386.001 204.6 381.601 201.8 382.401C199 383.201 167.8 398.001 161.8 407.601C161.8 407.601 196.2 383.201 201.8 386.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M178.6 429.601C178.6 429.601 178.6 423.601 175.8 424.401C173 425.201 137 442.801 131 452.401C131 452.401 173 426.801 178.6 429.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M179.8 418.801C179.8 418.801 181 414.001 178.2 414.801C176.2 414.801 149.8 426.401 143.8 436.001C143.8 436.001 173.4 414.401 179.8 418.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M165.4 466.401L155.4 474.001C155.4 474.001 165.8 466.401 169.4 467.601C169.4 467.601 162.6 478.801 161.8 484.001C161.8 484.001 172.2 471.201 177.8 471.601C177.8 471.601 185.4 472.001 185.4 482.801C185.4 482.801 191 472.401 194.2 472.801C194.2 472.801 195.4 479.201 194.2 486.001C194.2 486.001 198.2 478.401 202.2 480.001C202.2 480.001 208.6 478.001 207.8 489.601C207.8 489.601 207.8 500.001 207 502.801C207 502.801 212.6 476.401 215 476.001C215 476.001 223 474.801 227.8 483.601C227.8 483.601 223.8 476.001 228.6 478.001C228.6 478.001 239.4 479.601 242.6 486.401C242.6 486.401 235.8 474.401 241.4 477.601C241.4 477.601 248.2 477.601 249.4 484.001C249.4 484.001 257.8 505.201 259.8 506.801C259.8 506.801 252.2 485.201 253.8 485.201C253.8 485.201 251.8 473.201 257 488.001C257 488.001 253.8 474.001 259.4 474.801C265 475.601 269.4 485.601 277.8 483.201C277.8 483.201 287.401 488.801 289.401 419.601L165.4 466.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M170.2 373.601C170.2 373.601 185 367.601 225 373.601C225 373.601 232.2 374.001 239 365.201C245.8 356.401 272.6 349.201 279 351.201L288.601 357.601L289.401 358.801C289.401 358.801 301.801 369.201 302.201 376.801C302.601 384.401 287.801 432.401 278.2 448.401C268.6 464.401 259 476.801 239.8 474.401C239.8 474.401 219 470.401 193.4 474.401C193.4 474.401 164.2 472.801 161.4 464.801C158.6 456.801 172.6 441.601 172.6 441.601C172.6 441.601 177 433.201 175.8 418.801C174.6 404.401 175 376.401 170.2 373.601z"/>
+ </g>
+ <g style="fill: #e5668c">
+ <path d="M192.2 375.601C200.6 394.001 171 459.201 171 459.201C169 460.801 183.66 466.846 193.8 464.401C204.746 461.763 245 466.001 245 466.001C268.6 450.401 281.4 406.001 281.4 406.001C281.4 406.001 291.801 382.001 274.2 378.801C256.6 375.601 192.2 375.601 192.2 375.601z"/>
+ </g>
+ <g style="fill: #b23259">
+ <path d="M190.169 406.497C193.495 393.707 195.079 381.906 192.2 375.601C192.2 375.601 254.6 382.001 265.8 361.201C270.041 353.326 284.801 384.001 284.4 393.601C284.4 393.601 221.4 408.001 206.6 396.801L190.169 406.497z"/>
+ </g>
+ <g style="fill: #a5264c">
+ <path d="M194.6 422.801C194.6 422.801 196.6 430.001 194.2 434.001C194.2 434.001 192.6 434.801 191.4 435.201C191.4 435.201 192.6 438.801 198.6 440.401C198.6 440.401 200.6 444.801 203 445.201C205.4 445.601 210.2 451.201 214.2 450.001C218.2 448.801 229.4 444.801 229.4 444.801C229.4 444.801 235 441.601 243.8 445.201C243.8 445.201 246.175 444.399 246.6 440.401C247.1 435.701 250.2 432.001 252.2 430.001C254.2 428.001 263.8 415.201 262.6 414.801C261.4 414.401 194.6 422.801 194.6 422.801z"/>
+ </g>
+ <g style="fill: #ff727f; stroke:#000000">
+ <path d="M190.2 374.401C190.2 374.401 187.4 396.801 190.6 405.201C193.8 413.601 193 415.601 192.2 419.601C191.4 423.601 195.8 433.601 201.4 439.601L213.4 441.201C213.4 441.201 228.6 437.601 237.8 440.401C237.8 440.401 246.794 441.744 250.2 426.801C250.2 426.801 255 420.401 262.2 417.601C269.4 414.801 276.6 373.201 272.6 365.201C268.6 357.201 254.2 352.801 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M191.8 449.201C191.8 449.201 191 447.201 186.6 446.801C186.6 446.801 164.2 443.201 155.8 430.801C155.8 430.801 149 425.201 153.4 436.801C153.4 436.801 163.8 457.201 170.6 460.001C170.6 460.001 187 464.001 191.8 449.201z"/>
+ </g>
+ <g style="fill: #cc3f4c">
+ <path d="M271.742 385.229C272.401 377.323 274.354 368.709 272.6 365.201C266.154 352.307 249.181 357.695 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401C190.2 374.401 188.455 388.364 189.295 398.376C189.295 398.376 226.6 386.801 227.4 392.401C227.4 392.401 229 389.201 238.2 389.201C247.4 389.201 270.142 388.029 271.742 385.229z"/>
+ </g>
+ <g style="stroke:#a51926; stroke-width:2">
+ <path d="M228.6 375.201C228.6 375.201 233.4 380.001 229.8 389.601C229.8 389.601 215.4 405.601 217.4 419.601"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M180.6 460.001C180.6 460.001 176.2 447.201 185 454.001C185 454.001 189.8 456.001 188.6 457.601C187.4 459.201 181.8 463.201 180.6 460.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M185.64 461.201C185.64 461.201 182.12 450.961 189.16 456.401C189.16 456.401 193.581 458.849 192.04 459.281C187.48 460.561 192.04 463.121 185.64 461.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M190.44 461.201C190.44 461.201 186.92 450.961 193.96 456.401C193.96 456.401 198.335 458.711 196.84 459.281C193.48 460.561 196.84 463.121 190.44 461.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M197.04 461.401C197.04 461.401 193.52 451.161 200.56 456.601C200.56 456.601 204.943 458.933 203.441 459.481C200.48 460.561 203.441 463.321 197.04 461.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M203.52 461.321C203.52 461.321 200 451.081 207.041 456.521C207.041 456.521 210.881 458.121 209.921 459.401C208.961 460.681 209.921 463.241 203.52 461.321z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M210.2 462.001C210.2 462.001 205.4 449.601 214.6 456.001C214.6 456.001 219.4 458.001 218.2 459.601C217 461.201 218.2 464.401 210.2 462.001z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M181.8 444.801C181.8 444.801 195 442.001 201 445.201C201 445.201 207 446.401 208.2 446.001C209.4 445.601 212.6 445.201 212.6 445.201"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M215.8 453.601C215.8 453.601 227.8 440.001 239.8 444.401C246.816 446.974 245.8 443.601 246.6 440.801C247.4 438.001 247.6 433.801 252.6 430.801"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M233 437.601C233 437.601 229 426.801 226.2 439.601C223.4 452.401 220.2 456.001 218.6 458.801C218.6 458.801 218.6 464.001 227 463.601C227 463.601 237.8 463.201 238.2 460.401C238.6 457.601 237 446.001 233 437.601z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M247 444.801C247 444.801 250.6 442.401 253 443.601"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M253.5 428.401C253.5 428.401 256.4 423.501 261.2 422.701"/>
+ </g>
+ <g style="fill: #b2b2b2">
+ <path d="M174.2 465.201C174.2 465.201 192.2 468.401 196.6 466.801C196.6 466.801 205.4 466.801 197 468.801C197 468.801 184.2 468.801 176.2 467.601C176.2 467.601 164.6 462.001 174.2 465.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M188.2 372.001C188.2 372.001 205.8 372.001 207.8 372.801C207.8 372.801 215 403.601 211.4 411.201C211.4 411.201 210.2 414.001 207.4 408.401C207.4 408.401 189 375.601 185.8 373.601C182.6 371.601 187 372.001 188.2 372.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M111.1 369.301C111.1 369.301 120 371.001 132.6 373.601C132.6 373.601 137.4 396.001 140.6 400.801C143.8 405.601 140.2 405.601 136.6 402.801C133 400.001 118.2 386.001 116.2 381.601C114.2 377.201 111.1 369.301 111.1 369.301z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M132.961 373.818C132.961 373.818 138.761 375.366 139.77 377.581C140.778 379.795 138.568 383.092 138.568 383.092C138.568 383.092 137.568 386.397 136.366 384.235C135.164 382.072 132.292 374.412 132.961 373.818z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M133 373.601C133 373.601 136.6 378.801 140.2 378.801C143.8 378.801 144.182 378.388 147 379.001C151.6 380.001 151.2 378.001 157.8 379.201C160.44 379.681 163 378.801 165.8 380.001C168.6 381.201 171.8 380.401 173 378.401C174.2 376.401 179 372.201 179 372.201C179 372.201 166.2 374.001 163.4 374.801C163.4 374.801 141 376.001 133 373.601z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M177.6 373.801C177.6 373.801 171.15 377.301 170.75 379.701C170.35 382.101 176 385.801 176 385.801C176 385.801 178.75 390.401 179.35 388.001C179.95 385.601 178.4 374.201 177.6 373.801z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M140.115 379.265C140.115 379.265 147.122 390.453 147.339 379.242C147.339 379.242 147.896 377.984 146.136 377.962C140.061 377.886 141.582 373.784 140.115 379.265z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M147.293 379.514C147.293 379.514 155.214 390.701 154.578 379.421C154.578 379.421 154.585 379.089 152.832 378.936C148.085 378.522 148.43 374.004 147.293 379.514z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M154.506 379.522C154.506 379.522 162.466 390.15 161.797 380.484C161.797 380.484 161.916 379.251 160.262 378.95C156.37 378.244 156.159 374.995 154.506 379.522z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M161.382 379.602C161.382 379.602 169.282 391.163 169.63 381.382C169.63 381.382 171.274 380.004 169.528 379.782C163.71 379.042 164.508 374.588 161.382 379.602z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+ <path d="M125.208 383.132L117.55 381.601C114.95 376.601 112.85 370.451 112.85 370.451C112.85 370.451 119.2 371.451 131.7 374.251C131.7 374.251 132.576 377.569 134.048 383.364L125.208 383.132z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+ <path d="M190.276 378.47C188.61 375.964 187.293 374.206 186.643 373.8C183.63 371.917 187.773 372.294 188.902 372.294C188.902 372.294 205.473 372.294 207.356 373.047C207.356 373.047 207.88 375.289 208.564 378.68C208.564 378.68 198.476 376.67 190.276 378.47z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M243.88 240.321C271.601 244.281 297.121 208.641 298.881 198.96C300.641 189.28 290.521 177.4 290.521 177.4C291.841 174.32 287.001 160.24 281.721 151C276.441 141.76 260.54 142.734 243 141.76C227.16 140.88 208.68 164.2 207.36 165.96C206.04 167.72 212.2 206.001 213.52 211.721C214.84 217.441 212.2 243.841 212.2 243.841C246.44 234.741 216.16 236.361 243.88 240.321z"/>
+ </g>
+ <g style="fill: #ea8e51">
+ <path d="M208.088 166.608C206.792 168.336 212.84 205.921 214.136 211.537C215.432 217.153 212.84 243.073 212.84 243.073C245.512 234.193 216.728 235.729 243.944 239.617C271.161 243.505 296.217 208.513 297.945 199.008C299.673 189.504 289.737 177.84 289.737 177.84C291.033 174.816 286.281 160.992 281.097 151.92C275.913 142.848 260.302 143.805 243.08 142.848C227.528 141.984 209.384 164.88 208.088 166.608z"/>
+ </g>
+ <g style="fill: #efaa7c">
+ <path d="M208.816 167.256C207.544 168.952 213.48 205.841 214.752 211.353C216.024 216.865 213.48 242.305 213.48 242.305C244.884 233.145 217.296 235.097 244.008 238.913C270.721 242.729 295.313 208.385 297.009 199.056C298.705 189.728 288.953 178.28 288.953 178.28C290.225 175.312 285.561 161.744 280.473 152.84C275.385 143.936 260.063 144.875 243.16 143.936C227.896 143.088 210.088 165.56 208.816 167.256z"/>
+ </g>
+ <g style="fill: #f4c6a8">
+ <path d="M209.544 167.904C208.296 169.568 214.12 205.761 215.368 211.169C216.616 216.577 214.12 241.537 214.12 241.537C243.556 232.497 217.864 234.465 244.072 238.209C270.281 241.953 294.409 208.257 296.073 199.105C297.737 189.952 288.169 178.72 288.169 178.72C289.417 175.808 284.841 162.496 279.849 153.76C274.857 145.024 259.824 145.945 243.24 145.024C228.264 144.192 210.792 166.24 209.544 167.904z"/>
+ </g>
+ <g style="fill: #f9e2d3">
+ <path d="M210.272 168.552C209.048 170.184 214.76 205.681 215.984 210.985C217.208 216.289 214.76 240.769 214.76 240.769C242.628 231.849 218.432 233.833 244.136 237.505C269.841 241.177 293.505 208.129 295.137 199.152C296.769 190.176 287.385 179.16 287.385 179.16C288.609 176.304 284.121 163.248 279.225 154.68C274.329 146.112 259.585 147.015 243.32 146.112C228.632 145.296 211.496 166.92 210.272 168.552z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M244.2 236.8C269.4 240.4 292.601 208 294.201 199.2C295.801 190.4 286.601 179.6 286.601 179.6C287.801 176.8 283.4 164 278.6 155.6C273.8 147.2 259.346 148.086 243.4 147.2C229 146.4 212.2 167.6 211 169.2C209.8 170.8 215.4 205.6 216.6 210.8C217.8 216 215.4 240 215.4 240C240.9 231.4 219 233.2 244.2 236.8z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M290.601 202.8C290.601 202.8 262.8 210.4 251.2 208.8C251.2 208.8 235.4 202.2 226.6 224C226.6 224 223 231.2 221 233.2C219 235.2 290.601 202.8 290.601 202.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M294.401 200.6C294.401 200.6 265.4 212.8 255.4 212.4C255.4 212.4 239 207.8 230.6 222.4C230.6 222.4 222.2 231.6 219 233.2C219 233.2 218.6 234.8 225 230.8L235.4 236C235.4 236 250.2 245.6 259.8 229.6C259.8 229.6 263.8 218.4 263.8 216.4C263.8 214.4 285 208.8 286.601 208.4C288.201 208 294.801 203.8 294.401 200.6z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M247 236.514C240.128 236.514 231.755 232.649 231.755 226.4C231.755 220.152 240.128 213.887 247 213.887C253.874 213.887 259.446 218.952 259.446 225.2C259.446 231.449 253.874 236.514 247 236.514z"/>
+ </g>
+ <g style="fill: #659900">
+ <path d="M243.377 219.83C238.531 220.552 233.442 222.055 233.514 221.839C235.054 217.22 241.415 213.887 247 213.887C251.296 213.887 255.084 215.865 257.32 218.875C257.32 218.875 252.004 218.545 243.377 219.83z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M255.4 219.6C255.4 219.6 251 216.4 251 218.6C251 218.6 254.6 223 255.4 219.6z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M245.4 227.726C242.901 227.726 240.875 225.7 240.875 223.2C240.875 220.701 242.901 218.675 245.4 218.675C247.9 218.675 249.926 220.701 249.926 223.2C249.926 225.7 247.9 227.726 245.4 227.726z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M141.4 214.4C141.4 214.4 138.2 193.2 140.6 188.8C140.6 188.8 151.4 178.8 151 175.2C151 175.2 150.6 157.2 149.4 156.4C148.2 155.6 140.6 149.6 134.6 156C134.6 156 124.2 174 125 180.4L125 182.4C125 182.4 117.4 182 115.8 184C115.8 184 114.6 189.2 113.4 189.6C113.4 189.6 110.6 192 112.6 194.8C112.6 194.8 110.6 197.2 111 201.2L118.6 205.2C118.6 205.2 120.6 219.6 131.4 224.8C136.236 227.129 139.4 220.4 141.4 214.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M140.4 212.56C140.4 212.56 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.52 159.64 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.96 140.4 212.56z"/>
+ </g>
+ <g style="fill: #eb955c">
+ <path d="M148.95 157.39C147.86 156.53 140.37 150.76 134.52 157C134.52 157 124.38 174.55 125.16 180.79L125.16 182.74C125.16 182.74 117.75 182.35 116.19 184.3C116.19 184.3 115.02 189.37 113.85 189.76C113.85 189.76 111.12 192.1 113.07 194.83C113.07 194.83 111.12 197.17 111.51 201.07L118.92 204.97C118.92 204.97 120.87 219.01 131.4 224.08C136.114 226.35 139.2 219.79 141.15 213.94C141.15 213.94 138.03 193.27 140.37 188.98C140.37 188.98 150.9 179.23 150.51 175.72C150.51 175.72 150.12 158.17 148.95 157.39z"/>
+ </g>
+ <g style="fill: #f2b892">
+ <path d="M148.5 158.38C147.52 157.46 140.14 151.92 134.44 158C134.44 158 124.56 175.1 125.32 181.18L125.32 183.08C125.32 183.08 118.1 182.7 116.58 184.6C116.58 184.6 115.44 189.54 114.3 189.92C114.3 189.92 111.64 192.2 113.54 194.86C113.54 194.86 111.64 197.14 112.02 200.94L119.24 204.74C119.24 204.74 121.14 218.42 131.4 223.36C135.994 225.572 139 219.18 140.9 213.48C140.9 213.48 137.86 193.34 140.14 189.16C140.14 189.16 150.4 179.66 150.02 176.24C150.02 176.24 149.64 159.14 148.5 158.38z"/>
+ </g>
+ <g style="fill: #f8dcc8">
+ <path d="M148.05 159.37C147.18 158.39 139.91 153.08 134.36 159C134.36 159 124.74 175.65 125.48 181.57L125.48 183.42C125.48 183.42 118.45 183.05 116.97 184.9C116.97 184.9 115.86 189.71 114.75 190.08C114.75 190.08 112.16 192.3 114.01 194.89C114.01 194.89 112.16 197.11 112.53 200.81L119.56 204.51C119.56 204.51 121.41 217.83 131.4 222.64C135.873 224.794 138.8 218.57 140.65 213.02C140.65 213.02 137.69 193.41 139.91 189.34C139.91 189.34 149.9 180.09 149.53 176.76C149.53 176.76 149.16 160.11 148.05 159.37z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M140.4 212.46C140.4 212.46 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.84 159.32 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.86 140.4 212.46z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M137.3 206.2C137.3 206.2 115.7 196 114.8 195.2C114.8 195.2 123.9 203.4 124.7 203.4C125.5 203.4 137.3 206.2 137.3 206.2z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M120.2 200C120.2 200 138.6 203.6 138.6 208C138.6 210.912 138.357 224.331 133 222.8C124.6 220.4 128.2 206 120.2 200z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M128.6 203.8C128.6 203.8 137.578 205.274 138.6 208C139.2 209.6 139.863 217.908 134.4 219C129.848 219.911 127.618 209.69 128.6 203.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M214.595 246.349C214.098 244.607 215.409 244.738 217.2 244.2C219.2 243.6 231.4 239.8 232.2 237.2C233 234.6 246.2 239 246.2 239C248 239.8 252.4 242.4 252.4 242.4C257.2 243.6 263.8 244 263.8 244C266.2 245 269.6 247.8 269.6 247.8C284.2 258 296.601 250.8 296.601 250.8C316.601 244.2 310.601 227 310.601 227C307.601 218 310.801 214.6 310.801 214.6C311.001 210.8 318.201 217.2 318.201 217.2C320.801 221.4 321.601 226.4 321.601 226.4C329.601 237.6 326.201 219.8 326.201 219.8C326.401 218.8 323.601 215.2 323.601 214C323.601 212.8 321.801 209.4 321.801 209.4C318.801 206 321.201 199 321.201 199C323.001 185.2 320.801 187 320.801 187C319.601 185.2 310.401 195.2 310.401 195.2C308.201 198.6 302.201 200.2 302.201 200.2C299.401 202 296.001 200.6 296.001 200.6C293.401 200.2 287.801 207.2 287.801 207.2C290.601 207 293.001 211.4 295.401 211.6C297.801 211.8 299.601 209.2 301.201 208.6C302.801 208 305.601 213.8 305.601 213.8C306.001 216.4 300.401 221.2 300.401 221.2C300.001 225.8 298.401 224.2 298.401 224.2C295.401 223.6 294.201 227.4 293.201 232C292.201 236.6 288.001 237 288.001 237C286.401 244.4 285.2 241.4 285.2 241.4C285 235.8 279 241.6 279 241.6C277.8 243.6 273.2 241.4 273.2 241.4C266.4 239.4 268.8 237.4 268.8 237.4C270.6 235.2 281.8 237.4 281.8 237.4C284 235.8 276 231.8 276 231.8C275.4 230 276.4 225.6 276.4 225.6C277.6 222.4 284.4 216.8 284.4 216.8C293.801 215.6 291.001 214 291.001 214C284.801 208.8 279 216.4 279 216.4C276.8 222.6 259.4 237.6 259.4 237.6C254.6 241 257.2 234.2 253.2 237.6C249.2 241 228.6 232 228.6 232C217.038 230.807 214.306 246.549 210.777 243.429C210.777 243.429 216.195 251.949 214.595 246.349z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M409.401 80C409.401 80 383.801 88 381.001 106.8C381.001 106.8 378.601 129.6 399.001 147.2C399.001 147.2 399.401 153.6 401.401 156.8C401.401 156.8 399.801 161.6 418.601 154L445.801 145.6C445.801 145.6 452.201 143.2 457.401 134.4C462.601 125.6 477.801 106.8 474.201 81.6C474.201 81.6 475.401 70.4 469.401 70C469.401 70 461.001 68.4 453.801 76C453.801 76 447.001 79.2 444.601 78.8L409.401 80z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M464.022 79.01C464.022 79.01 466.122 70.08 461.282 74.92C461.282 74.92 454.242 80.64 446.761 80.64C446.761 80.64 432.241 82.84 427.841 96.04C427.841 96.04 423.881 122.88 431.801 128.6C431.801 128.6 436.641 136.08 443.681 129.48C450.722 122.88 466.222 92.65 464.022 79.01z"/>
+ </g>
+ <g style="fill: #323232">
+ <path d="M463.648 79.368C463.648 79.368 465.738 70.624 460.986 75.376C460.986 75.376 454.074 80.992 446.729 80.992C446.729 80.992 432.473 83.152 428.153 96.112C428.153 96.112 424.265 122.464 432.041 128.08C432.041 128.08 436.793 135.424 443.705 128.944C450.618 122.464 465.808 92.76 463.648 79.368z"/>
+ </g>
+ <g style="fill: #666666">
+ <path d="M463.274 79.726C463.274 79.726 465.354 71.168 460.69 75.832C460.69 75.832 453.906 81.344 446.697 81.344C446.697 81.344 432.705 83.464 428.465 96.184C428.465 96.184 424.649 122.048 432.281 127.56C432.281 127.56 436.945 134.768 443.729 128.408C450.514 122.048 465.394 92.87 463.274 79.726z"/>
+ </g>
+ <g style="fill: #999999">
+ <path d="M462.9 80.084C462.9 80.084 464.97 71.712 460.394 76.288C460.394 76.288 453.738 81.696 446.665 81.696C446.665 81.696 432.937 83.776 428.777 96.256C428.777 96.256 425.033 121.632 432.521 127.04C432.521 127.04 437.097 134.112 443.753 127.872C450.41 121.632 464.98 92.98 462.9 80.084z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M462.526 80.442C462.526 80.442 464.586 72.256 460.098 76.744C460.098 76.744 453.569 82.048 446.633 82.048C446.633 82.048 433.169 84.088 429.089 96.328C429.089 96.328 425.417 121.216 432.761 126.52C432.761 126.52 437.249 133.456 443.777 127.336C450.305 121.216 464.566 93.09 462.526 80.442z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M462.151 80.8C462.151 80.8 464.201 72.8 459.801 77.2C459.801 77.2 453.401 82.4 446.601 82.4C446.601 82.4 433.401 84.4 429.401 96.4C429.401 96.4 425.801 120.8 433.001 126C433.001 126 437.401 132.8 443.801 126.8C450.201 120.8 464.151 93.2 462.151 80.8z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M250.6 284C250.6 284 230.2 264.8 222.2 264C222.2 264 187.8 260 173 278C173 278 190.6 257.6 218.2 263.2C218.2 263.2 196.6 258.8 184.2 262C184.2 262 167.4 262 157.8 276L155 280.8C155 280.8 159 266 177.4 260C177.4 260 200.2 255.2 211 260C211 260 189.4 253.2 179.4 255.2C179.4 255.2 149 252.8 136.2 279.2C136.2 279.2 140.2 264.8 155 257.6C155 257.6 168.6 248.8 189 251.6C189 251.6 203.4 254.8 208.6 257.2C213.8 259.6 212.6 256.8 204.2 252C204.2 252 198.6 242 184.6 242.4C184.6 242.4 141.8 246 131.4 258C131.4 258 145 246.8 155.4 244C155.4 244 177.8 236 186.2 236.8C186.2 236.8 211 237.8 218.6 233.8C218.6 233.8 207.4 238.8 210.6 242C213.8 245.2 220.6 252.8 220.6 254C220.6 255.2 244.8 277.3 248.4 281.7L250.6 284z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M389 478C389 478 373.5 441.5 361 432C361 432 387 448 390.5 466C390.5 466 390.5 476 389 478z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M436 485.5C436 485.5 409.5 430.5 391 406.5C391 406.5 434.5 444 439.5 470.5L440 476L437 473.5C437 473.5 436.5 482.5 436 485.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M492.5 437C492.5 437 430 377.5 428.5 375C428.5 375 489 441 492 448.5C492 448.5 490 439.5 492.5 437z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M304 480.5C304 480.5 323.5 428.5 342.5 451C342.5 451 357.5 461 357 464C357 464 353 457.5 335 458C335 458 316 455 304 480.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M494.5 353C494.5 353 449.5 324.5 442 323C430.193 320.639 491.5 352 496.5 362.5C496.5 362.5 498.5 360 494.5 353z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M343.801 459.601C343.801 459.601 364.201 457.601 371.001 450.801L375.401 454.401L393.001 416.001L396.601 421.201C396.601 421.201 411.001 406.401 410.201 398.401C409.401 390.401 423.001 404.401 423.001 404.401C423.001 404.401 422.201 392.801 429.401 399.601C429.401 399.601 427.001 384.001 435.401 392.001C435.401 392.001 424.864 361.844 447.401 387.601C453.001 394.001 448.601 387.201 448.601 387.201C448.601 387.201 422.601 339.201 444.201 353.601C444.201 353.601 446.201 330.801 445.001 326.401C443.801 322.001 441.801 299.6 437.001 294.4C432.201 289.2 437.401 287.6 443.001 292.8C443.001 292.8 431.801 268.8 445.001 280.8C445.001 280.8 441.401 265.6 437.001 262.8C437.001 262.8 431.401 245.6 446.601 256.4C446.601 256.4 442.201 244 439.001 240.8C439.001 240.8 427.401 213.2 434.601 218L439.001 221.6C439.001 221.6 432.201 207.6 438.601 212C445.001 216.4 445.001 216 445.001 216C445.001 216 423.801 182.8 444.201 200.4C444.201 200.4 436.042 186.482 432.601 179.6C432.601 179.6 413.801 159.2 428.201 165.6L433.001 167.2C433.001 167.2 424.201 157.2 416.201 155.6C408.201 154 418.601 147.6 425.001 149.6C431.401 151.6 447.001 159.2 447.001 159.2C447.001 159.2 459.801 178 463.801 178.4C463.801 178.4 443.801 170.8 449.801 178.8C449.801 178.8 464.201 192.8 457.001 192.4C457.001 192.4 451.001 199.6 455.801 208.4C455.801 208.4 437.342 190.009 452.201 215.6L459.001 232C459.001 232 434.601 207.2 445.801 229.2C445.801 229.2 463.001 252.8 465.001 253.2C467.001 253.6 471.401 262.4 471.401 262.4L467.001 260.4L472.201 269.2C472.201 269.2 461.001 257.2 467.001 270.4L472.601 284.8C472.601 284.8 452.201 262.8 465.801 292.4C465.801 292.4 449.401 287.2 458.201 304.4C458.201 304.4 456.601 320.401 457.001 325.601C457.401 330.801 458.601 359.201 454.201 367.201C449.801 375.201 460.201 394.401 462.201 398.401C464.201 402.401 467.801 413.201 459.001 404.001C450.201 394.801 454.601 400.401 456.601 409.201C458.601 418.001 464.601 433.601 463.801 439.201C463.801 439.201 462.601 440.401 459.401 436.801C459.401 436.801 444.601 414.001 446.201 428.401C446.201 428.401 445.001 436.401 441.801 445.201C441.801 445.201 438.601 456.001 438.601 447.201C438.601 447.201 435.401 430.401 432.601 438.001C429.801 445.601 426.201 451.601 423.401 454.001C420.601 456.401 415.401 433.601 414.201 444.001C414.201 444.001 402.201 431.601 397.401 448.001L385.801 464.401C385.801 464.401 385.401 452.001 384.201 458.001C384.201 458.001 354.201 464.001 343.801 459.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M309.401 102.8C309.401 102.8 297.801 94.8 293.801 95.2C289.801 95.6 321.401 86.4 362.601 114C362.601 114 367.401 116.8 371.001 116.4C371.001 116.4 374.201 118.8 371.401 122.4C371.401 122.4 362.601 132 373.801 143.2C373.801 143.2 392.201 150 386.601 141.2C386.601 141.2 397.401 145.2 399.801 149.2C402.201 153.2 401.001 149.2 401.001 149.2C401.001 149.2 394.601 142 388.601 136.8C388.601 136.8 383.401 134.8 380.601 126.4C377.801 118 375.401 108 379.801 104.8C379.801 104.8 375.801 109.2 376.601 105.2C377.401 101.2 381.001 97.6 382.601 97.2C384.201 96.8 400.601 81 407.401 80.6C407.401 80.6 398.201 82 395.201 81C392.201 80 365.601 68.6 359.601 67.4C359.601 67.4 342.801 60.8 354.801 62.8C354.801 62.8 390.601 66.6 408.801 79.8C408.801 79.8 401.601 71.4 383.201 64.4C383.201 64.4 361.001 51.8 325.801 56.8C325.801 56.8 308.001 60 300.201 61.8C300.201 61.8 297.601 61.2 297.001 60.8C296.401 60.4 284.6 51.4 257 58.4C257 58.4 240 63 231.4 67.8C231.4 67.8 216.2 69 212.6 72.2C212.6 72.2 194 86.8 192 87.6C190 88.4 178.6 96 177.8 96.4C177.8 96.4 202.4 89.8 204.8 87.4C207.2 85 224.6 82.4 227 83.8C229.4 85.2 237.8 84.6 228.2 85.2C228.2 85.2 303.801 100 304.601 102C305.401 104 309.401 102.8 309.401 102.8z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M380.801 93.6C380.801 93.6 370.601 86.2 368.601 86.2C366.601 86.2 354.201 76 350.001 76.4C345.801 76.8 333.601 66.8 306.201 75C306.201 75 305.601 73 309.201 72.2C309.201 72.2 315.601 70 316.001 69.4C316.001 69.4 336.201 65.2 343.401 68.8C343.401 68.8 352.601 71.4 358.801 77.6C358.801 77.6 370.001 80.8 373.201 79.8C373.201 79.8 382.001 82 382.401 83.8C382.401 83.8 388.201 86.8 386.401 89.4C386.401 89.4 386.801 91 380.801 93.6z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M368.33 91.491C369.137 92.123 370.156 92.221 370.761 93.03C370.995 93.344 370.706 93.67 370.391 93.767C369.348 94.084 368.292 93.514 367.15 94.102C366.748 94.309 366.106 94.127 365.553 93.978C363.921 93.537 362.092 93.512 360.401 94.2C358.416 93.071 356.056 93.655 353.975 92.654C353.917 92.627 353.695 92.973 353.621 92.946C350.575 91.801 346.832 92.084 344.401 89.8C341.973 89.388 339.616 88.926 337.188 88.246C335.37 87.737 333.961 86.748 332.341 85.916C330.964 85.208 329.507 84.686 327.973 84.314C326.11 83.862 324.279 83.974 322.386 83.454C322.293 83.429 322.101 83.773 322.019 83.746C321.695 83.638 321.405 83.055 321.234 83.108C319.553 83.63 318.065 82.658 316.401 83C315.223 81.776 313.495 82.021 311.949 81.579C308.985 80.731 305.831 82.001 302.801 81C306.914 79.158 311.601 80.39 315.663 78.321C317.991 77.135 320.653 78.237 323.223 77.477C323.71 77.333 324.401 77.131 324.801 77.8C324.935 77.665 325.117 77.426 325.175 77.454C327.625 78.611 329.94 79.885 332.422 80.951C332.763 81.097 333.295 80.865 333.547 81.067C335.067 82.283 337.01 82.18 338.401 83.4C340.099 82.898 341.892 83.278 343.621 82.654C343.698 82.627 343.932 82.968 343.965 82.946C345.095 82.198 346.25 82.469 347.142 82.773C347.48 82.888 348.143 83.135 348.448 83.209C349.574 83.485 350.43 83.965 351.609 84.148C351.723 84.166 351.908 83.826 351.98 83.854C353.103 84.292 354.145 84.236 354.801 85.4C354.936 85.265 355.101 85.027 355.183 85.054C356.21 85.392 356.859 86.147 357.96 86.388C358.445 86.494 359.057 87.12 359.633 87.296C362.025 88.027 363.868 89.556 366.062 90.451C366.821 90.761 367.697 90.995 368.33 91.491z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M291.696 77.261C289.178 75.536 286.81 74.43 284.368 72.644C284.187 72.511 283.827 72.681 283.625 72.559C282.618 71.95 281.73 71.369 280.748 70.673C280.209 70.291 279.388 70.302 278.88 70.044C276.336 68.752 273.707 68.194 271.2 67C271.882 66.362 273.004 66.606 273.6 65.8C273.795 66.08 274.033 66.364 274.386 66.173C276.064 65.269 277.914 65.116 279.59 65.206C281.294 65.298 283.014 65.603 284.789 65.875C285.096 65.922 285.295 66.445 285.618 66.542C287.846 67.205 290.235 66.68 292.354 67.518C293.945 68.147 295.515 68.97 296.754 70.245C297.006 70.505 296.681 70.806 296.401 71C296.789 70.891 297.062 71.097 297.173 71.41C297.257 71.649 297.257 71.951 297.173 72.19C297.061 72.502 296.782 72.603 296.408 72.654C295.001 72.844 296.773 71.464 296.073 71.912C294.8 72.726 295.546 74.132 294.801 75.4C294.521 75.206 294.291 74.988 294.401 74.6C294.635 75.122 294.033 75.412 293.865 75.728C293.48 76.453 292.581 77.868 291.696 77.261z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M259.198 84.609C256.044 83.815 252.994 83.93 249.978 82.654C249.911 82.626 249.688 82.973 249.624 82.946C248.258 82.352 247.34 81.386 246.264 80.34C245.351 79.452 243.693 79.839 242.419 79.352C242.095 79.228 241.892 78.716 241.591 78.677C240.372 78.52 239.445 77.571 238.4 77C240.736 76.205 243.147 76.236 245.609 75.852C245.722 75.834 245.867 76.155 246 76.155C246.136 76.155 246.266 75.934 246.4 75.8C246.595 76.08 246.897 76.406 247.154 76.152C247.702 75.612 248.258 75.802 248.798 75.842C248.942 75.852 249.067 76.155 249.2 76.155C249.336 76.155 249.467 75.844 249.6 75.844C249.736 75.845 249.867 76.155 250 76.155C250.136 76.155 250.266 75.934 250.4 75.8C251.092 76.582 251.977 76.028 252.799 76.207C253.837 76.434 254.104 77.582 255.178 77.88C259.893 79.184 264.03 81.329 268.393 83.416C268.7 83.563 268.91 83.811 268.8 84.2C269.067 84.2 269.38 84.112 269.57 84.244C270.628 84.976 271.669 85.524 272.366 86.622C272.582 86.961 272.253 87.368 272.02 87.316C267.591 86.321 263.585 85.713 259.198 84.609z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M245.338 128.821C243.746 127.602 243.162 125.571 242.034 123.779C241.82 123.439 242.094 123.125 242.411 123.036C242.971 122.877 243.514 123.355 243.923 123.557C245.668 124.419 247.203 125.661 249.2 125.8C251.19 128.034 255.45 128.419 255.457 131.8C255.458 132.659 254.03 131.741 253.6 132.6C251.149 131.597 248.76 131.7 246.38 130.233C245.763 129.852 246.093 129.399 245.338 128.821z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M217.8 76.244C217.935 76.245 224.966 76.478 224.949 76.592C224.904 76.901 217.174 77.95 216.81 77.78C216.646 77.704 209.134 80.134 209 80C209.268 79.865 217.534 76.244 217.8 76.244z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M233.2 86C233.2 86 218.4 87.8 214 89C209.6 90.2 191 97.8 188 99.8C188 99.8 174.6 105.2 157.6 125.2C157.6 125.2 165.2 121.8 167.4 119C167.4 119 181 106.4 180.8 109C180.8 109 193 100.4 192.4 102.6C192.4 102.6 216.8 91.4 214.8 94.6C214.8 94.6 236.4 90 235.4 92C235.4 92 254.2 96.4 251.4 96.6C251.4 96.6 245.6 97.8 252 101.4C252 101.4 248.6 105.8 243.2 101.8C237.8 97.8 240.8 100 235.8 101C235.8 101 233.2 101.8 228.6 97.8C228.6 97.8 223 93.2 214.2 96.8C214.2 96.8 183.6 109.4 181.6 110C181.6 110 178 112.8 175.6 116.4C175.6 116.4 169.8 120.8 166.8 122.2C166.8 122.2 154 133.8 152.8 135.2C152.8 135.2 149.4 140.4 148.6 140.8C148.6 140.8 155 137 157 135C157 135 171 125 176.4 124.2C176.4 124.2 180.8 121.2 181.6 119.8C181.6 119.8 196 110.6 200.2 110.6C200.2 110.6 209.4 115.8 211.8 108.8C211.8 108.8 217.6 107 223.2 108.2C223.2 108.2 226.4 105.6 225.6 103.4C225.6 103.4 227.2 101.6 228.2 105.4C228.2 105.4 231.6 109 236.4 107C236.4 107 240.4 106.8 238.4 109.2C238.4 109.2 234 113 222.2 113.2C222.2 113.2 209.8 113.8 193.4 121.4C193.4 121.4 163.6 131.8 154.4 142.2C154.4 142.2 148 151 142.6 152.2C142.6 152.2 136.8 153 130.8 160.4C130.8 160.4 140.6 154.6 149.6 154.6C149.6 154.6 153.6 152.2 149.8 155.8C149.8 155.8 146.2 163.4 147.8 168.8C147.8 168.8 147.2 174 146.4 175.6C146.4 175.6 138.6 188.4 138.6 190.8C138.6 193.2 139.8 203 140.2 203.6C140.6 204.2 139.2 202 143 204.4C146.8 206.8 149.6 208.4 150.4 211.2C151.2 214 148.4 205.8 148.2 204C148 202.2 143.8 195 144.6 192.6C144.6 192.6 145.6 193.6 146.4 195C146.4 195 145.8 194.4 146.4 190.8C146.4 190.8 147.2 185.6 148.6 182.4C150 179.2 152 175.4 152.4 174.6C152.8 173.8 152.8 168 154.2 170.6L157.6 173.2C157.6 173.2 154.8 170.6 157 168.4C157 168.4 156 162.8 157.8 160.2C157.8 160.2 164.8 151.8 166.4 150.8C168 149.8 166.6 150.2 166.6 150.2C166.6 150.2 172.6 146 166.8 147.6C166.8 147.6 162.8 149.2 159.8 149.2C159.8 149.2 152.2 151.2 156.2 147C160.2 142.8 170.2 137.4 174 137.6L174.8 139.2L186 136.8L184.8 137.6C184.8 137.6 184.6 137.4 188.8 137C193 136.6 198.8 138 200.2 136.2C201.6 134.4 205 133.4 204.6 134.8C204.2 136.2 204 138.2 204 138.2C204 138.2 209 132.4 208.4 134.6C207.8 136.8 199.6 142 198.2 148.2L208.6 140L212.2 137C212.2 137 215.8 139.2 216 137.6C216.2 136 220.8 130.2 222 130.4C223.2 130.6 225.2 127.8 225 130.4C224.8 133 232.4 138.4 232.4 138.4C232.4 138.4 235.6 136.6 237 138C238.4 139.4 242.6 118.2 242.6 118.2L267.6 107.6L311.201 104.2L294.201 97.4L233.2 86z"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M251.4 285C251.4 285 236.4 268.2 228 265.6C228 265.6 214.6 258.8 190 266.6"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M224.8 264.2C224.8 264.2 199.6 256.2 184.2 260.4C184.2 260.4 165.8 262.4 157.4 276.2"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M221.2 263C221.2 263 204.2 255.8 189.4 253.6C189.4 253.6 172.8 251 156.2 258.2C156.2 258.2 144 264.2 138.6 274.4"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M222.2 263.4C222.2 263.4 206.8 252.4 205.8 251C205.8 251 198.8 240 185.8 239.6C185.8 239.6 164.4 240.4 147.2 248.4"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M220.895 254.407C222.437 255.87 249.4 284.8 249.4 284.8C284.6 321.401 256.6 287.2 256.6 287.2C249 282.4 239.8 263.6 239.8 263.6C238.6 260.8 253.8 270.8 253.8 270.8C257.8 271.6 271.4 290.8 271.4 290.8C264.6 288.4 269.4 295.6 269.4 295.6C272.2 297.6 292.601 313.201 292.601 313.201C296.201 317.201 300.201 318.801 300.201 318.801C314.201 313.601 307.801 326.801 307.801 326.801C310.201 333.601 315.801 322.001 315.801 322.001C327.001 305.2 310.601 307.601 310.601 307.601C280.6 310.401 273.8 294.4 273.8 294.4C271.4 292 280.2 294.4 280.2 294.4C288.601 296.4 273 282 273 282C275.4 282 284.6 288.8 284.6 288.8C295.001 298 297.001 296 297.001 296C315.001 287.2 325.401 294.8 325.401 294.8C327.401 296.4 321.801 303.2 323.401 308.401C325.001 313.601 329.801 326.001 329.801 326.001C327.401 327.601 327.801 338.401 327.801 338.401C344.601 361.601 335.001 359.601 335.001 359.601C319.401 359.201 334.201 366.801 334.201 366.801C337.401 368.801 346.201 376.001 346.201 376.001C343.401 374.801 341.801 380.001 341.801 380.001C346.601 384.001 343.801 388.801 343.801 388.801C337.801 390.001 336.601 394.001 336.601 394.001C343.401 402.001 333.401 402.401 333.401 402.401C337.001 406.801 332.201 418.801 332.201 418.801C327.401 418.801 321.001 424.401 321.001 424.401C323.401 429.201 313.001 434.801 313.001 434.801C304.601 436.401 307.401 443.201 307.401 443.201C299.401 449.201 297.001 465.201 297.001 465.201C296.201 475.601 293.801 478.801 299.001 476.801C304.201 474.801 303.401 462.401 303.401 462.401C298.601 446.801 341.401 430.801 341.401 430.801C345.401 429.201 346.201 424.001 346.201 424.001C348.201 424.401 357.001 432.001 357.001 432.001C364.601 443.201 365.001 434.001 365.001 434.001C366.201 430.401 364.601 424.401 364.601 424.401C370.601 402.801 356.601 396.401 356.601 396.401C346.601 362.801 360.601 371.201 360.601 371.201C363.401 376.801 374.201 382.001 374.201 382.001L377.801 379.601C376.201 374.801 384.601 368.801 384.601 368.801C387.401 375.201 393.401 367.201 393.401 367.201C397.001 342.801 409.401 357.201 409.401 357.201C413.401 358.401 414.601 351.601 414.601 351.601C418.201 341.201 414.601 327.601 414.601 327.601C418.201 327.201 427.801 333.201 427.801 333.201C430.601 329.601 421.401 312.801 425.401 315.201C429.401 317.601 433.801 319.201 433.801 319.201C434.601 317.201 424.601 304.801 424.601 304.801C420.201 302 415.001 281.6 415.001 281.6C422.201 285.2 412.201 270 412.201 270C412.201 266.8 418.201 255.6 418.201 255.6C417.401 248.8 418.201 249.2 418.201 249.2C421.001 250.4 429.001 252 422.201 245.6C415.401 239.2 423.001 234.4 423.001 234.4C427.401 231.6 413.801 232 413.801 232C408.601 227.6 409.001 223.6 409.001 223.6C417.001 225.6 402.601 211.2 400.201 207.6C397.801 204 407.401 198.8 407.401 198.8C420.601 195.2 409.001 192 409.001 192C389.401 192.4 400.201 181.6 400.201 181.6C406.201 182 404.601 179.6 404.601 179.6C399.401 178.4 389.801 172 389.801 172C385.801 168.4 389.401 169.2 389.401 169.2C406.201 170.4 377.401 159.2 377.401 159.2C385.401 159.2 367.401 148.8 367.401 148.8C365.401 147.2 362.201 139.6 362.201 139.6C356.201 134.4 351.401 127.6 351.401 127.6C351.001 123.2 346.201 118.4 346.201 118.4C334.601 104.8 329.001 105.2 329.001 105.2C314.201 101.6 309.001 102.4 309.001 102.4L256.2 106.8C229.8 119.6 237.6 140.6 237.6 140.6C244 149 253.2 145.2 253.2 145.2C257.8 139 269.4 141.2 269.4 141.2C289.801 144.4 287.201 140.8 287.201 140.8C284.801 136.2 268.6 130 268.4 129.4C268.2 128.8 259.4 125.4 259.4 125.4C256.4 124.2 252 115 252 115C248.8 111.6 264.6 117.4 264.6 117.4C263.4 118.4 270.8 122.4 270.8 122.4C288.201 121.4 298.801 132.2 298.801 132.2C309.601 148.8 309.801 140.6 309.801 140.6C312.601 131.2 300.801 110 300.801 110C301.201 108 309.401 114.6 309.401 114.6C310.801 112.6 311.601 118.4 311.601 118.4C311.801 120.8 315.601 128.8 315.601 128.8C318.401 141.8 322.001 134.4 322.001 134.4L326.601 143.8C328.001 146.4 322.001 154 322.001 154C321.801 156.8 322.601 156.6 317.001 164.2C311.401 171.8 314.801 176.2 314.801 176.2C313.401 182.8 322.201 182.4 322.201 182.4C324.801 184.6 328.201 184.6 328.201 184.6C330.001 186.6 332.401 186 332.401 186C334.001 182.2 340.201 184.2 340.201 184.2C341.601 181.8 349.801 181.4 349.801 181.4C350.801 178.8 351.201 177.2 354.601 176.6C358.001 176 333.401 133 333.401 133C339.801 132.2 331.601 119.8 331.601 119.8C329.401 113.2 340.801 127.8 343.001 129.2C345.201 130.6 346.201 132.8 344.601 132.6C343.001 132.4 341.201 134.6 342.601 134.8C344.001 135 357.001 150 360.401 160.2C363.801 170.4 369.801 174.4 376.001 180.4C382.201 186.4 381.401 210.6 381.401 210.6C381.001 219.4 387.001 230 387.001 230C389.001 233.8 384.801 252 384.801 252C382.801 254.2 384.201 255 384.201 255C385.201 256.2 392.001 269.4 392.001 269.4C390.201 269.2 393.801 272.8 393.801 272.8C399.001 278.8 392.601 275.8 392.601 275.8C386.601 274.2 393.601 284 393.601 284C394.801 285.8 385.801 281.2 385.801 281.2C376.601 280.6 388.201 287.8 388.201 287.8C396.801 295 385.401 290.6 385.401 290.6C380.801 288.8 384.001 295.6 384.001 295.6C387.201 297.2 404.401 304.2 404.401 304.2C404.801 308.001 401.801 313.001 401.801 313.001C402.201 317.001 400.001 320.401 400.001 320.401C398.801 328.601 398.201 329.401 398.201 329.401C394.001 329.601 386.601 343.401 386.601 343.401C384.801 346.001 374.601 358.001 374.601 358.001C372.601 365.001 354.601 357.801 354.601 357.801C348.001 361.201 350.001 357.801 350.001 357.801C349.601 355.601 354.401 349.601 354.401 349.601C361.401 347.001 358.801 336.201 358.801 336.201C362.801 334.801 351.601 332.001 351.801 330.801C352.001 329.601 357.801 328.201 357.801 328.201C365.801 326.201 361.401 323.801 361.401 323.801C360.801 319.801 363.801 314.201 363.801 314.201C375.401 313.401 363.801 297.2 363.801 297.2C353.001 289.6 352.001 283.8 352.001 283.8C364.601 275.6 356.401 263.2 356.601 259.6C356.801 256 358.001 234.4 358.001 234.4C356.001 228.2 353.001 214.6 353.001 214.6C355.201 209.4 362.601 196.8 362.601 196.8C365.401 192.6 374.201 187.8 372.001 184.8C369.801 181.8 362.001 183.6 362.001 183.6C354.201 182.2 354.801 187.4 354.801 187.4C353.201 188.4 352.401 193.4 352.401 193.4C351.68 201.333 342.801 207.6 342.801 207.6C331.601 213.8 340.801 217.8 340.801 217.8C346.801 224.4 337.001 224.6 337.001 224.6C326.001 222.8 334.201 233 334.201 233C345.001 245.8 342.001 248.6 342.001 248.6C331.801 249.6 344.401 258.8 344.401 258.8C344.401 258.8 343.601 256.8 343.801 258.6C344.001 260.4 347.001 264.6 347.801 266.6C348.601 268.6 344.601 268.8 344.601 268.8C345.201 278.4 329.801 274.2 329.801 274.2C329.801 274.2 329.801 274.2 328.201 274.4C326.601 274.6 315.401 273.8 309.601 271.6C303.801 269.4 297.001 269.4 297.001 269.4C297.001 269.4 293.001 271.2 285.4 271C277.8 270.8 269.8 273.6 269.8 273.6C265.4 273.2 274 268.8 274.2 269C274.4 269.2 280 263.6 272 264.2C250.203 265.835 239.4 255.6 239.4 255.6C237.4 254.2 234.8 251.4 234.8 251.4C224.8 249.4 236.2 263.8 236.2 263.8C237.4 265.2 236 266.2 236 266.2C235.2 264.6 227.4 259.2 227.4 259.2C224.589 258.227 223.226 256.893 220.895 254.407z"/>
+ </g>
+ <g style="fill: #4c0000">
+ <path d="M197 242.8C197 242.8 208.6 248.4 211.2 251.2C213.8 254 227.8 265.4 227.8 265.4C227.8 265.4 222.4 263.4 219.8 261.6C217.2 259.8 206.4 251.6 206.4 251.6C206.4 251.6 202.6 245.6 197 242.8z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M138.991 211.603C139.328 211.455 138.804 208.743 138.6 208.2C137.578 205.474 128.6 204 128.6 204C128.373 205.365 128.318 206.961 128.424 208.599C128.424 208.599 133.292 214.118 138.991 211.603z"/>
+ </g>
+ <g style="fill: #659900">
+ <path d="M138.991 211.403C138.542 211.561 138.976 208.669 138.8 208.2C137.778 205.474 128.6 203.9 128.6 203.9C128.373 205.265 128.318 206.861 128.424 208.499C128.424 208.499 132.692 213.618 138.991 211.403z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M134.6 211.546C133.975 211.546 133.469 210.406 133.469 209C133.469 207.595 133.975 206.455 134.6 206.455C135.225 206.455 135.732 207.595 135.732 209C135.732 210.406 135.225 211.546 134.6 211.546z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M134.6 209z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M89 309.601C89 309.601 83.4 319.601 108.2 313.601C108.2 313.601 122.2 312.401 124.6 310.001C125.8 310.801 134.166 313.734 137 314.401C143.8 316.001 152.2 306 152.2 306C152.2 306 156.8 295.5 159.6 295.5C162.4 295.5 159.2 297.1 159.2 297.1C159.2 297.1 152.6 307.201 153 308.801C153 308.801 147.8 328.801 131.8 329.601C131.8 329.601 115.65 330.551 117 336.401C117 336.401 125.8 334.001 128.2 336.401C128.2 336.401 139 336.001 131 342.401L124.2 354.001C124.2 354.001 124.34 357.919 114.2 354.401C104.4 351.001 94.1 338.101 94.1 338.101C94.1 338.101 78.15 323.551 89 309.601z"/>
+ </g>
+ <g style="fill: #e59999">
+ <path d="M87.8 313.601C87.8 313.601 85.8 323.201 122.6 312.801C122.6 312.801 127 312.801 129.4 313.601C131.8 314.401 143.8 317.201 145.8 316.001C145.8 316.001 138.6 329.601 127 328.001C127 328.001 113.8 329.601 114.2 334.401C114.2 334.401 118.2 341.601 123 344.001C123 344.001 125.8 346.401 125.4 349.601C125 352.801 122.2 354.401 120.2 355.201C118.2 356.001 115 352.801 113.4 352.801C111.8 352.801 103.4 346.401 99 341.601C94.6 336.801 86.2 324.801 86.6 322.001C87 319.201 87.8 313.601 87.8 313.601z"/>
+ </g>
+ <g style="fill: #b26565">
+ <path d="M91 331.051C93.6 335.001 96.8 339.201 99 341.601C103.4 346.401 111.8 352.801 113.4 352.801C115 352.801 118.2 356.001 120.2 355.201C122.2 354.401 125 352.801 125.4 349.601C125.8 346.401 123 344.001 123 344.001C119.934 342.468 117.194 338.976 115.615 336.653C115.615 336.653 115.8 339.201 110.6 338.401C105.4 337.601 100.2 334.801 98.6 331.601C97 328.401 94.6 326.001 96.2 329.601C97.8 333.201 100.2 336.801 101.8 337.201C103.4 337.601 103 338.801 100.6 338.401C98.2 338.001 95.4 337.601 91 332.401z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M88.4 310.001C88.4 310.001 90.2 296.4 91.4 292.4C91.4 292.4 90.6 285.6 93 281.4C95.4 277.2 97.4 271 100.4 265.6C103.4 260.2 103.6 256.2 107.6 254.6C111.6 253 117.6 244.4 120.4 243.4C123.2 242.4 123 243.2 123 243.2C123 243.2 129.8 228.4 143.4 232.4C143.4 232.4 127.2 229.6 143 220.2C143 220.2 138.2 221.3 141.5 214.3C143.701 209.632 143.2 216.4 132.2 228.2C132.2 228.2 127.2 236.8 122 239.8C116.8 242.8 104.8 249.8 103.6 253.6C102.4 257.4 99.2 263.2 97.2 264.8C95.2 266.4 92.4 270.6 92 274C92 274 90.8 278 89.4 279.2C88 280.4 87.8 283.6 87.8 285.6C87.8 287.6 85.8 290.4 86 292.8C86 292.8 86.8 311.801 86.4 313.801L88.4 310.001z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M79.8 314.601C79.8 314.601 77.8 313.201 73.4 319.201C73.4 319.201 80.7 352.201 80.7 353.601C80.7 353.601 81.8 351.501 80.5 344.301C79.2 337.101 78.3 324.401 78.3 324.401L79.8 314.601z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M101.4 254C101.4 254 83.8 257.2 84.2 286.4L83.4 311.201C83.4 311.201 82.2 285.6 81 284C79.8 282.4 83.8 271.2 80.6 277.2C80.6 277.2 66.6 291.2 74.6 312.401C74.6 312.401 76.1 315.701 73.1 311.101C73.1 311.101 68.5 298.5 69.6 292.1C69.6 292.1 69.8 289.9 71.7 287.1C71.7 287.1 80.3 275.4 83 273.1C83 273.1 84.8 258.7 100.2 253.5C100.2 253.5 105.9 251.2 101.4 254z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M240.8 187.8C241.46 187.446 241.451 186.476 242.031 186.303C243.18 185.959 243.344 184.892 243.862 184.108C244.735 182.789 244.928 181.256 245.51 179.765C245.782 179.065 245.809 178.11 245.496 177.45C244.322 174.969 243.62 172.52 242.178 170.094C241.91 169.644 241.648 168.85 241.447 168.252C240.984 166.868 239.727 165.877 238.867 164.557C238.579 164.116 239.104 163.191 238.388 163.107C237.491 163.002 236.042 162.422 235.809 163.448C235.221 166.035 236.232 168.558 237.2 171C236.418 171.692 236.752 172.613 236.904 173.38C237.614 176.986 236.416 180.338 235.655 183.812C235.632 183.916 235.974 184.114 235.946 184.176C234.724 186.862 233.272 189.307 231.453 191.688C230.695 192.68 229.823 193.596 229.326 194.659C228.958 195.446 228.55 196.412 228.8 197.4C225.365 200.18 223.115 204.025 220.504 207.871C220.042 208.551 220.333 209.76 220.884 210.029C221.697 210.427 222.653 209.403 223.123 208.557C223.512 207.859 223.865 207.209 224.356 206.566C224.489 206.391 224.31 205.972 224.445 205.851C227.078 203.504 228.747 200.568 231.2 198.2C233.15 197.871 234.687 196.873 236.435 195.86C236.743 195.681 237.267 195.93 237.557 195.735C239.31 194.558 239.308 192.522 239.414 190.612C239.464 189.728 239.66 188.411 240.8 187.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M231.959 183.334C232.083 183.257 231.928 182.834 232.037 182.618C232.199 182.294 232.602 182.106 232.764 181.782C232.873 181.566 232.71 181.186 232.846 181.044C235.179 178.597 235.436 175.573 234.4 172.6C235.424 171.98 235.485 170.718 235.06 169.871C234.207 168.171 234.014 166.245 233.039 164.702C232.237 163.433 230.659 162.189 229.288 163.492C228.867 163.892 228.546 164.679 228.824 165.391C228.888 165.554 229.173 165.7 229.146 165.782C229.039 166.106 228.493 166.33 228.487 166.602C228.457 168.098 227.503 169.609 228.133 170.938C228.905 172.567 229.724 174.424 230.4 176.2C229.166 178.316 230.199 180.765 228.446 182.642C228.31 182.788 228.319 183.174 228.441 183.376C228.733 183.862 229.139 184.268 229.625 184.56C229.827 184.681 230.175 184.683 230.375 184.559C230.953 184.197 231.351 183.71 231.959 183.334z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M294.771 173.023C296.16 174.815 296.45 177.61 294.401 179C294.951 182.309 298.302 180.33 300.401 179.8C300.292 179.412 300.519 179.068 300.802 179.063C301.859 179.048 302.539 178.016 303.601 178.2C304.035 176.643 305.673 175.941 306.317 174.561C308.043 170.866 307.452 166.593 304.868 163.347C304.666 163.093 304.883 162.576 304.759 162.214C304.003 160.003 301.935 159.688 300.001 159C298.824 155.125 298.163 151.094 296.401 147.4C294.787 147.15 294.089 145.411 292.752 144.691C291.419 143.972 290.851 145.551 290.892 146.597C290.899 146.802 291.351 147.026 291.181 147.391C291.105 147.555 290.845 147.666 290.845 147.8C290.846 147.935 291.067 148.066 291.201 148.2C290.283 149.02 288.86 149.497 288.565 150.642C287.611 154.352 290.184 157.477 291.852 160.678C292.443 161.813 291.707 163.084 290.947 164.292C290.509 164.987 290.617 166.114 290.893 166.97C291.645 169.301 293.236 171.04 294.771 173.023z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M257.611 191.409C256.124 193.26 252.712 195.829 255.629 197.757C255.823 197.886 256.193 197.89 256.366 197.756C258.387 196.191 260.39 195.288 262.826 194.706C262.95 194.677 263.224 195.144 263.593 194.983C265.206 194.28 267.216 194.338 268.4 193C272.167 193.224 275.732 192.108 279.123 190.8C280.284 190.352 281.554 189.793 282.755 189.291C284.131 188.715 285.335 187.787 286.447 186.646C286.58 186.51 286.934 186.6 287.201 186.6C287.161 185.737 288.123 185.61 288.37 184.988C288.462 184.756 288.312 184.36 288.445 184.258C290.583 182.628 291.503 180.61 290.334 178.233C290.049 177.655 289.8 177.037 289.234 176.561C288.149 175.65 287.047 176.504 286 176.2C285.841 176.828 285.112 176.656 284.726 176.854C283.867 177.293 282.534 176.708 281.675 177.146C280.313 177.841 279.072 178.01 277.65 178.387C277.338 178.469 276.56 178.373 276.4 179C276.266 178.866 276.118 178.632 276.012 178.654C274.104 179.05 272.844 179.264 271.543 180.956C271.44 181.089 270.998 180.91 270.839 181.045C269.882 181.853 269.477 183.087 268.376 183.759C268.175 183.882 267.823 183.714 267.629 183.843C266.983 184.274 266.616 184.915 265.974 185.362C265.645 185.591 265.245 185.266 265.277 185.01C265.522 183.063 266.175 181.276 265.6 179.4C267.677 176.88 270.194 174.931 272 172.2C272.015 170.034 272.707 167.888 272.594 165.811C272.584 165.618 272.296 164.885 272.17 164.538C271.858 163.684 272.764 162.618 271.92 161.894C270.516 160.691 269.224 161.567 268.4 163C266.562 163.39 264.496 164.083 262.918 162.849C261.911 162.062 261.333 161.156 260.534 160.1C259.549 158.798 259.884 157.362 259.954 155.798C259.96 155.67 259.645 155.534 259.645 155.4C259.646 155.265 259.866 155.134 260 155C259.294 154.374 259.019 153.316 258 153C258.305 151.908 257.629 151.024 256.758 150.722C254.763 150.031 253.086 151.943 251.194 152.016C250.68 152.035 250.213 150.997 249.564 150.672C249.132 150.456 248.428 150.423 248.066 150.689C247.378 151.193 246.789 151.307 246.031 151.512C244.414 151.948 243.136 153.042 241.656 153.897C240.171 154.754 239.216 156.191 238.136 157.511C237.195 158.663 237.059 161.077 238.479 161.577C240.322 162.227 241.626 159.524 243.592 159.85C243.904 159.901 244.11 160.212 244 160.6C244.389 160.709 244.607 160.48 244.8 160.2C245.658 161.219 246.822 161.556 247.76 162.429C248.73 163.333 250.476 162.915 251.491 163.912C253.02 165.414 252.461 168.095 254.4 169.4C253.814 170.713 253.207 171.99 252.872 173.417C252.59 174.623 253.584 175.82 254.795 175.729C256.053 175.635 256.315 174.876 256.8 173.8C257.067 174.067 257.536 174.364 257.495 174.58C257.038 176.967 256.011 178.96 255.553 181.391C255.494 181.708 255.189 181.91 254.8 181.8C254.332 185.949 250.28 188.343 247.735 191.508C247.332 192.01 247.328 193.259 247.737 193.662C249.14 195.049 251.1 193.503 252.8 193C253.013 191.794 253.872 190.852 255.204 190.908C255.46 190.918 255.695 190.376 256.019 190.246C256.367 190.108 256.869 190.332 257.155 190.134C258.884 188.939 260.292 187.833 262.03 186.644C262.222 186.513 262.566 186.672 262.782 186.564C263.107 186.402 263.294 186.015 263.617 185.83C263.965 185.63 264.207 185.92 264.4 186.2C263.754 186.549 263.75 187.506 263.168 187.708C262.393 187.976 261.832 188.489 261.158 188.936C260.866 189.129 260.207 188.881 260.103 189.06C259.505 190.088 258.321 190.526 257.611 191.409z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M202.2 142C202.2 142 192.962 139.128 181.8 164.8C181.8 164.8 179.4 170 177 172C174.6 174 163.4 177.6 161.4 181.6L151 197.6C151 197.6 165.8 181.6 169 179.2C169 179.2 177 170.8 173.8 177.6C173.8 177.6 159.8 188.4 161 197.6C161 197.6 155.4 212 154.6 214C154.6 214 170.6 182 173 180.8C175.4 179.6 176.6 179.6 175.4 183.2C174.2 186.8 173.8 203.2 171 205.2C171 205.2 179 184.8 178.2 181.6C178.2 181.6 181.4 178 183.8 183.2L182.6 199.2L187 211.2C187 211.2 184.6 200 186.2 184.4C186.2 184.4 184.2 174 188.2 179.6C192.2 185.2 201.8 191.2 201.8 196C201.8 196 196.6 178.4 187.4 173.6L183.4 179.6L182.2 177.6C182.2 177.6 178.6 176.8 183 170C187.4 163.2 187 162.4 187 162.4C187 162.4 193.4 169.6 195 169.6C195 169.6 208.2 162 209.4 186.4C209.4 186.4 216.2 172 207 165.2C207 165.2 192.2 163.2 193.4 158L200.6 145.6C204.2 140.4 202.6 143.2 202.6 143.2z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M182.2 158.4C182.2 158.4 169.4 158.4 166.2 163.6L159 173.2C159 173.2 176.2 163.2 180.2 162C184.2 160.8 182.2 158.4 182.2 158.4z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M142.2 164.8C142.2 164.8 140.2 166 139.8 168.8C139.4 171.6 137 172 137.8 174.8C138.6 177.6 140.6 180 140.6 176C140.6 172 142.2 170 143 168.8C143.8 167.6 145.4 163.2 142.2 164.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M133.4 226C133.4 226 125 222 121.8 218.4C118.6 214.8 119.052 219.966 114.2 219.6C108.353 219.159 109.4 203.2 109.4 203.2L105.4 210.8C105.4 210.8 104.2 225.2 112.2 222.8C116.107 221.628 117.4 223.2 115.8 224C114.2 224.8 121.4 225.2 118.6 226.8C115.8 228.4 130.2 223.2 127.8 233.6L133.4 226z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M120.8 240.4C120.8 240.4 105.4 244.8 101.8 235.2C101.8 235.2 97 237.6 99.2 240.6C101.4 243.6 102.6 244 102.6 244C102.6 244 108 245.2 107.4 246C106.8 246.8 104.4 250.2 104.4 250.2C104.4 250.2 114.6 244.2 120.8 240.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M349.201 318.601C348.774 320.735 347.103 321.536 345.201 322.201C343.284 321.243 340.686 318.137 338.801 320.201C338.327 319.721 337.548 319.661 337.204 318.999C336.739 318.101 337.011 317.055 336.669 316.257C336.124 314.985 335.415 313.619 335.601 312.201C337.407 311.489 338.002 309.583 337.528 307.82C337.459 307.563 337.03 307.366 337.23 307.017C337.416 306.694 337.734 306.467 338.001 306.2C337.866 306.335 337.721 306.568 337.61 306.548C337 306.442 337.124 305.805 337.254 305.418C337.839 303.672 339.853 303.408 341.201 304.6C341.457 304.035 341.966 304.229 342.401 304.2C342.351 303.621 342.759 303.094 342.957 302.674C343.475 301.576 345.104 302.682 345.901 302.07C346.977 301.245 348.04 300.546 349.118 301.149C350.927 302.162 352.636 303.374 353.835 305.115C354.41 305.949 354.65 307.23 354.592 308.188C354.554 308.835 353.173 308.483 352.83 309.412C352.185 311.16 354.016 311.679 354.772 313.017C354.97 313.366 354.706 313.67 354.391 313.768C353.98 313.896 353.196 313.707 353.334 314.16C354.306 317.353 351.55 318.031 349.201 318.601z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M339.6 338.201C339.593 336.463 337.992 334.707 339.201 333.001C339.336 333.135 339.467 333.356 339.601 333.356C339.736 333.356 339.867 333.135 340.001 333.001C341.496 335.217 345.148 336.145 345.006 338.991C344.984 339.438 343.897 340.356 344.801 341.001C342.988 342.349 342.933 344.719 342.001 346.601C340.763 346.315 339.551 345.952 338.401 345.401C338.753 343.915 338.636 342.231 339.456 340.911C339.89 340.213 339.603 339.134 339.6 338.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M173.4 329.201C173.4 329.201 156.542 339.337 170.6 324.001C179.4 314.401 189.4 308.801 189.4 308.801C189.4 308.801 199.8 304.4 203.4 303.2C207 302 222.2 296.8 225.4 296.4C228.6 296 238.2 292 245 296C251.8 300 259.8 304.4 259.8 304.4C259.8 304.4 243.4 296 239.8 298.4C236.2 300.8 229 300.4 223 303.6C223 303.6 208.2 308.001 205 310.001C201.8 312.001 191.4 323.601 189.8 322.801C188.2 322.001 190.2 321.601 191.4 318.801C192.6 316.001 190.6 314.401 182.6 320.801C174.6 327.201 173.4 329.201 173.4 329.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M180.805 323.234C180.805 323.234 182.215 310.194 190.693 311.859C190.693 311.859 198.919 307.689 201.641 305.721C201.641 305.721 209.78 304.019 211.09 303.402C229.569 294.702 244.288 299.221 244.835 298.101C245.381 296.982 265.006 304.099 268.615 308.185C269.006 308.628 258.384 302.588 248.686 300.697C240.413 299.083 218.811 300.944 207.905 306.48C204.932 307.989 195.987 313.773 193.456 313.662C190.925 313.55 180.805 323.234 180.805 323.234z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M177 348.801C177 348.801 161.8 346.401 178.6 344.801C178.6 344.801 196.6 342.801 200.6 337.601C200.6 337.601 214.2 328.401 217 328.001C219.8 327.601 249.8 320.401 250.2 318.001C250.6 315.601 256.2 315.601 257.8 316.401C259.4 317.201 258.6 318.401 255.8 319.201C253 320.001 221.8 336.401 215.4 337.601C209 338.801 197.4 346.401 192.6 347.601C187.8 348.801 177 348.801 177 348.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M196.52 341.403C196.52 341.403 187.938 340.574 196.539 339.755C196.539 339.755 205.355 336.331 207.403 333.668C207.403 333.668 214.367 328.957 215.8 328.753C217.234 328.548 231.194 324.861 231.399 323.633C231.604 322.404 265.67 309.823 270.09 313.013C273.001 315.114 263.1 313.437 253.466 317.847C252.111 318.467 218.258 333.054 214.981 333.668C211.704 334.283 205.765 338.174 203.307 338.788C200.85 339.403 196.52 341.403 196.52 341.403z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M188.6 343.601C188.6 343.601 193.8 343.201 192.6 344.801C191.4 346.401 189 345.601 189 345.601L188.6 343.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M181.4 345.201C181.4 345.201 186.6 344.801 185.4 346.401C184.2 348.001 181.8 347.201 181.8 347.201L181.4 345.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M171 346.801C171 346.801 176.2 346.401 175 348.001C173.8 349.601 171.4 348.801 171.4 348.801L171 346.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M163.4 347.601C163.4 347.601 168.6 347.201 167.4 348.801C166.2 350.401 163.8 349.601 163.8 349.601L163.4 347.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M201.8 308.001C201.8 308.001 206.2 308.001 205 309.601C203.8 311.201 200.6 310.801 200.6 310.801L201.8 308.001z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M191.8 313.601C191.8 313.601 198.306 311.46 195.8 314.801C194.6 316.401 192.2 315.601 192.2 315.601L191.8 313.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M180.6 318.401C180.6 318.401 185.8 318.001 184.6 319.601C183.4 321.201 181 320.401 181 320.401L180.6 318.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M173 324.401C173 324.401 178.2 324.001 177 325.601C175.8 327.201 173.4 326.401 173.4 326.401L173 324.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M166.2 329.201C166.2 329.201 171.4 328.801 170.2 330.401C169 332.001 166.6 331.201 166.6 331.201L166.2 329.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M205.282 335.598C205.282 335.598 212.203 335.066 210.606 337.195C209.009 339.325 205.814 338.26 205.814 338.26L205.282 335.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M215.682 330.798C215.682 330.798 222.603 330.266 221.006 332.395C219.409 334.525 216.214 333.46 216.214 333.46L215.682 330.798z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M226.482 326.398C226.482 326.398 233.403 325.866 231.806 327.995C230.209 330.125 227.014 329.06 227.014 329.06L226.482 326.398z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M236.882 321.598C236.882 321.598 243.803 321.066 242.206 323.195C240.609 325.325 237.414 324.26 237.414 324.26L236.882 321.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M209.282 303.598C209.282 303.598 216.203 303.066 214.606 305.195C213.009 307.325 209.014 307.06 209.014 307.06L209.282 303.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M219.282 300.398C219.282 300.398 226.203 299.866 224.606 301.995C223.009 304.125 218.614 303.86 218.614 303.86L219.282 300.398z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M196.6 340.401C196.6 340.401 201.8 340.001 200.6 341.601C199.4 343.201 197 342.401 197 342.401L196.6 340.401z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M123.4 241.2C123.4 241.2 119 250 118.6 253.2C118.6 253.2 119.4 244.4 120.6 242.4C121.8 240.4 123.4 241.2 123.4 241.2z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M105 255.2C105 255.2 101.8 269.6 102.2 272.4C102.2 272.4 101 260.8 101.4 259.6C101.8 258.4 105 255.2 105 255.2z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M125.8 180.6L125.6 183.8L123.4 184C123.4 184 137.6 196.6 138.2 204.2C138.2 204.2 139 196 125.8 180.6z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M129.784 181.865C129.353 181.449 129.572 180.704 129.164 180.444C128.355 179.928 130.462 179.871 130.234 179.155C129.851 177.949 130.038 177.928 129.916 176.652C129.859 176.054 130.447 174.514 130.832 174.074C132.278 172.422 130.954 169.49 132.594 167.939C132.898 167.65 133.274 167.098 133.559 166.68C134.218 165.717 135.402 165.229 136.352 164.401C136.67 164.125 136.469 163.298 137.038 163.39C137.752 163.505 138.993 163.375 138.948 164.216C138.835 166.336 137.506 168.056 136.226 169.724C136.677 170.428 136.219 171.063 135.935 171.62C134.6 174.24 134.789 177.081 134.615 179.921C134.61 180.006 134.303 180.084 134.311 180.137C134.664 182.472 135.248 184.671 136.127 186.9C136.493 187.83 136.964 188.725 137.114 189.652C137.225 190.338 137.328 191.171 136.92 191.876C138.955 194.766 137.646 197.417 138.815 200.948C139.022 201.573 140.714 203.487 140.251 203.326C137.738 202.455 137.626 202.057 137.449 201.304C137.303 200.681 136.973 199.304 136.736 198.702C136.672 198.538 136.501 196.654 136.423 196.532C134.91 194.15 136.268 194.326 134.898 191.968C133.47 191.288 132.504 190.184 131.381 189.022C131.183 188.818 132.326 188.094 132.145 187.881C131.053 186.592 129.9 185.825 130.236 184.332C130.391 183.642 130.528 182.585 129.784 181.865z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M126.2 183.6C126.2 183.6 126.6 190.4 129 192C131.4 193.6 130.2 192.8 127 191.6C123.8 190.4 125 189.6 125 189.6C125 189.6 122.2 190 124.6 192C127 194 130.6 196.4 129 196.4C127.4 196.4 119.8 192.4 119.8 189.6C119.8 186.8 118.8 182.7 118.8 182.7C118.8 182.7 119.9 181.9 124.7 182C124.7 182 126.1 182.7 126.2 183.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M125.4 202.2C125.4 202.2 116.88 199.409 98.4 202.8C98.4 202.8 107.431 200.722 126.2 203C136.5 204.25 125.4 202.2 125.4 202.2z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M127.498 202.129C127.498 202.129 119.252 198.611 100.547 200.392C100.547 200.392 109.725 199.103 128.226 202.995C138.38 205.131 127.498 202.129 127.498 202.129z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M129.286 202.222C129.286 202.222 121.324 198.101 102.539 198.486C102.539 198.486 111.787 197.882 129.948 203.14C139.914 206.025 129.286 202.222 129.286 202.222z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M130.556 202.445C130.556 202.445 123.732 198.138 106.858 197.04C106.858 197.04 115.197 197.21 131.078 203.319C139.794 206.672 130.556 202.445 130.556 202.445z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M245.84 212.961C245.84 212.961 244.91 213.605 245.124 212.424C245.339 211.243 273.547 198.073 277.161 198.323C277.161 198.323 246.913 211.529 245.84 212.961z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M242.446 213.6C242.446 213.6 241.57 214.315 241.691 213.121C241.812 211.927 268.899 196.582 272.521 196.548C272.521 196.548 243.404 212.089 242.446 213.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M239.16 214.975C239.16 214.975 238.332 215.747 238.374 214.547C238.416 213.348 258.233 197.851 268.045 195.977C268.045 195.977 250.015 204.104 239.16 214.975z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M236.284 216.838C236.284 216.838 235.539 217.532 235.577 216.453C235.615 215.373 253.449 201.426 262.28 199.74C262.28 199.74 246.054 207.054 236.284 216.838z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M204.6 364.801C204.6 364.801 189.4 362.401 206.2 360.801C206.2 360.801 224.2 358.801 228.2 353.601C228.2 353.601 241.8 344.401 244.6 344.001C247.4 343.601 263.8 340.001 264.2 337.601C264.6 335.201 270.6 332.801 272.2 333.601C273.8 334.401 273.8 343.601 271 344.401C268.2 345.201 249.4 352.401 243 353.601C236.6 354.801 225 362.401 220.2 363.601C215.4 364.801 204.6 364.801 204.6 364.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M277.6 327.401C277.6 327.401 274.6 329.001 273.4 331.601C273.4 331.601 267 342.201 252.8 345.401C252.8 345.401 229.8 354.401 222 356.401C222 356.401 208.6 361.401 201.2 360.601C201.2 360.601 194.2 360.801 200.4 362.401C200.4 362.401 220.6 360.401 224 358.601C224 358.601 239.6 353.401 242.6 350.801C245.6 348.201 263.8 343.201 266 341.201C268.2 339.201 278 330.801 277.6 327.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M218.882 358.911C218.882 358.911 224.111 358.685 222.958 360.234C221.805 361.784 219.357 360.91 219.357 360.91L218.882 358.911z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M211.68 360.263C211.68 360.263 216.908 360.037 215.756 361.586C214.603 363.136 212.155 362.263 212.155 362.263L211.68 360.263z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M201.251 361.511C201.251 361.511 206.48 361.284 205.327 362.834C204.174 364.383 201.726 363.51 201.726 363.51L201.251 361.511z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M193.617 362.055C193.617 362.055 198.846 361.829 197.693 363.378C196.54 364.928 194.092 364.054 194.092 364.054L193.617 362.055z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M235.415 351.513C235.415 351.513 242.375 351.212 240.84 353.274C239.306 355.336 236.047 354.174 236.047 354.174L235.415 351.513z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M245.73 347.088C245.73 347.088 251.689 343.787 251.155 348.849C250.885 351.405 246.362 349.749 246.362 349.749L245.73 347.088z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M254.862 344.274C254.862 344.274 262.021 340.573 260.287 346.035C259.509 348.485 255.493 346.935 255.493 346.935L254.862 344.274z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M264.376 339.449C264.376 339.449 268.735 334.548 269.801 341.21C270.207 343.748 265.008 342.11 265.008 342.11L264.376 339.449z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M226.834 355.997C226.834 355.997 232.062 355.77 230.91 357.32C229.757 358.869 227.308 357.996 227.308 357.996L226.834 355.997z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M262.434 234.603C262.434 234.603 261.708 235.268 261.707 234.197C261.707 233.127 279.191 219.863 288.034 218.479C288.034 218.479 271.935 225.208 262.434 234.603z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M265.4 298.4C265.4 298.4 287.401 320.801 296.601 324.401C296.601 324.401 305.801 335.601 301.801 361.601C301.801 361.601 298.601 369.201 295.401 348.401C295.401 348.401 298.601 323.201 287.401 339.201C287.401 339.201 279 329.301 285.4 329.601C285.4 329.601 288.601 331.601 289.001 330.001C289.401 328.401 281.4 314.801 264.2 300.4C247 286 265.4 298.4 265.4 298.4z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M207 337.201C207 337.201 206.8 335.401 208.6 336.201C210.4 337.001 304.601 343.201 336.201 367.201C336.201 367.201 291.001 344.001 207 337.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M217.4 332.801C217.4 332.801 217.2 331.001 219 331.801C220.8 332.601 357.401 331.601 381.001 364.001C381.001 364.001 359.001 338.801 217.4 332.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M229 328.801C229 328.801 228.8 327.001 230.6 327.801C232.4 328.601 405.801 315.601 429.401 348.001C429.401 348.001 419.801 322.401 229 328.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M239 324.001C239 324.001 238.8 322.201 240.6 323.001C242.4 323.801 364.601 285.2 388.201 317.601C388.201 317.601 374.801 293 239 324.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M181 346.801C181 346.801 180.8 345.001 182.6 345.801C184.4 346.601 202.2 348.801 204.2 387.601C204.2 387.601 197 345.601 181 346.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M172.2 348.401C172.2 348.401 172 346.601 173.8 347.401C175.6 348.201 189.8 343.601 187 382.401C187 382.401 188.2 347.201 172.2 348.401z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M164.2 348.801C164.2 348.801 164 347.001 165.8 347.801C167.6 348.601 183 349.201 170.6 371.601C170.6 371.601 180.2 347.601 164.2 348.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M211.526 304.465C211.526 304.465 211.082 306.464 212.631 305.247C228.699 292.622 261.141 233.72 316.826 228.086C316.826 228.086 278.518 215.976 211.526 304.465z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M222.726 302.665C222.726 302.665 221.363 301.472 223.231 300.847C225.099 300.222 337.541 227.72 376.826 235.686C376.826 235.686 349.719 228.176 222.726 302.665z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M201.885 308.767C201.885 308.767 201.376 310.366 203.087 309.39C212.062 304.27 215.677 247.059 259.254 245.804C259.254 245.804 226.843 231.09 201.885 308.767z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M181.962 319.793C181.962 319.793 180.885 321.079 182.838 320.825C193.084 319.493 214.489 278.222 258.928 283.301C258.928 283.301 226.962 268.955 181.962 319.793z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M193.2 313.667C193.2 313.667 192.389 315.136 194.258 314.511C204.057 311.237 217.141 266.625 261.729 263.078C261.729 263.078 227.603 255.135 193.2 313.667z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M174.922 324.912C174.922 324.912 174.049 325.954 175.631 325.748C183.93 324.669 201.268 291.24 237.264 295.354C237.264 295.354 211.371 283.734 174.922 324.912z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M167.323 330.821C167.323 330.821 166.318 331.866 167.909 331.748C172.077 331.439 202.715 298.36 221.183 313.862C221.183 313.862 209.168 295.139 167.323 330.821z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M236.855 298.898C236.855 298.898 235.654 297.543 237.586 297.158C239.518 296.774 360.221 239.061 398.184 251.927C398.184 251.927 372.243 241.053 236.855 298.898z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M203.4 363.201C203.4 363.201 203.2 361.401 205 362.201C206.8 363.001 222.2 363.601 209.8 386.001C209.8 386.001 219.4 362.001 203.4 363.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M213.8 361.601C213.8 361.601 213.6 359.801 215.4 360.601C217.2 361.401 235 363.601 237 402.401C237 402.401 229.8 360.401 213.8 361.601z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M220.6 360.001C220.6 360.001 220.4 358.201 222.2 359.001C224 359.801 248.6 363.201 272.2 395.601C272.2 395.601 236.6 358.801 220.6 360.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M228.225 357.972C228.225 357.972 227.788 356.214 229.678 356.768C231.568 357.322 252.002 355.423 290.099 389.599C290.099 389.599 243.924 354.656 228.225 357.972z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M238.625 353.572C238.625 353.572 238.188 351.814 240.078 352.368C241.968 352.922 276.802 357.423 328.499 392.399C328.499 392.399 254.324 350.256 238.625 353.572z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M198.2 342.001C198.2 342.001 198 340.201 199.8 341.001C201.6 341.801 255 344.401 285.4 371.201C285.4 371.201 250.499 346.426 198.2 342.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M188.2 346.001C188.2 346.001 188 344.201 189.8 345.001C191.6 345.801 216.2 349.201 239.8 381.601C239.8 381.601 204.2 344.801 188.2 346.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M249.503 348.962C249.503 348.962 248.938 347.241 250.864 347.655C252.79 348.068 287.86 350.004 341.981 381.098C341.981 381.098 264.317 346.704 249.503 348.962z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M257.903 346.562C257.903 346.562 257.338 344.841 259.264 345.255C261.19 345.668 296.26 347.604 350.381 378.698C350.381 378.698 273.317 343.904 257.903 346.562z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M267.503 341.562C267.503 341.562 266.938 339.841 268.864 340.255C270.79 340.668 313.86 345.004 403.582 379.298C403.582 379.298 282.917 338.904 267.503 341.562z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M156.2 348.401C156.2 348.401 161.4 348.001 160.2 349.601C159 351.201 156.6 350.401 156.6 350.401L156.2 348.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M187 362.401C187 362.401 192.2 362.001 191 363.601C189.8 365.201 187.4 364.401 187.4 364.401L187 362.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M178.2 362.001C178.2 362.001 183.4 361.601 182.2 363.201C181 364.801 178.6 364.001 178.6 364.001L178.2 362.001z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M82.831 350.182C82.831 350.182 87.876 351.505 86.218 352.624C84.561 353.744 82.554 352.202 82.554 352.202L82.831 350.182z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M84.831 340.582C84.831 340.582 89.876 341.905 88.218 343.024C86.561 344.144 84.554 342.602 84.554 342.602L84.831 340.582z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M77.631 336.182C77.631 336.182 82.676 337.505 81.018 338.624C79.361 339.744 77.354 338.202 77.354 338.202L77.631 336.182z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M157.4 411.201C157.4 411.201 155.8 411.201 151.8 413.201C149.8 413.201 138.6 416.801 133 426.801C133 426.801 145.4 417.201 157.4 411.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M245.116 503.847C245.257 504.105 245.312 504.525 245.604 504.542C246.262 504.582 247.495 504.883 247.37 504.247C246.522 499.941 245.648 495.004 241.515 493.197C240.876 492.918 239.434 493.331 239.36 494.215C239.233 495.739 239.116 497.088 239.425 498.554C239.725 499.975 241.883 499.985 242.8 498.601C243.736 500.273 244.168 502.116 245.116 503.847z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M234.038 508.581C234.786 509.994 234.659 511.853 236.074 512.416C236.814 512.71 238.664 511.735 238.246 510.661C237.444 508.6 237.056 506.361 235.667 504.55C235.467 504.288 235.707 503.755 235.547 503.427C234.953 502.207 233.808 501.472 232.4 501.801C231.285 504.004 232.433 506.133 233.955 507.842C234.091 507.994 233.925 508.37 234.038 508.581z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M194.436 503.391C194.328 503.014 194.29 502.551 194.455 502.23C194.986 501.197 195.779 500.075 195.442 499.053C195.094 497.997 193.978 498.179 193.328 498.748C192.193 499.742 192.144 501.568 191.453 502.927C191.257 503.313 191.308 503.886 190.867 504.277C190.393 504.698 189.953 506.222 190.049 506.793C190.102 507.106 189.919 517.014 190.141 516.751C190.76 516.018 193.81 506.284 193.879 505.392C193.936 504.661 194.668 504.196 194.436 503.391z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M168.798 496.599C171.432 494.1 174.222 491.139 173.78 487.427C173.664 486.451 171.889 486.978 171.702 487.824C170.9 491.449 168.861 494.11 166.293 496.502C164.097 498.549 162.235 504.893 162 505.401C165.697 500.145 167.954 497.399 168.798 496.599z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M155.224 490.635C155.747 490.265 155.445 489.774 155.662 489.442C156.615 487.984 157.916 486.738 157.934 485C157.937 484.723 157.559 484.414 157.224 484.638C156.947 484.822 156.605 484.952 156.497 485.082C154.467 487.531 153.067 490.202 151.624 493.014C151.441 493.371 150.297 497.862 150.61 497.973C150.849 498.058 152.569 493.877 152.779 493.763C154.042 493.077 154.054 491.462 155.224 490.635z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M171.957 510.179C172.401 509.31 173.977 508.108 173.864 507.219C173.746 506.291 174.214 504.848 173.302 505.536C172.045 506.484 168.596 507.833 168.326 513.641C168.3 514.212 171.274 511.519 171.957 510.179z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M186.4 493.001C186.8 492.333 187.508 492.806 187.967 492.543C188.615 492.171 189.226 491.613 189.518 490.964C190.488 488.815 192.257 486.995 192.4 484.601C190.909 483.196 190.23 485.236 189.6 486.201C188.277 484.554 187.278 486.428 185.978 486.947C185.908 486.975 185.695 486.628 185.62 486.655C184.443 487.095 183.763 488.176 182.765 488.957C182.594 489.091 182.189 488.911 182.042 489.047C181.39 489.65 180.417 489.975 180.137 490.657C179.027 493.364 175.887 495.459 174 503.001C174.381 503.91 178.512 496.359 178.999 495.661C179.835 494.465 179.953 497.322 181.229 496.656C181.28 496.629 181.466 496.867 181.6 497.001C181.794 496.721 182.012 496.492 182.4 496.601C182.4 496.201 182.266 495.645 182.467 495.486C183.704 494.509 183.62 493.441 184.4 492.201C184.858 492.99 185.919 492.271 186.4 493.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M246.2 547.401C246.2 547.401 253.6 527.001 249.2 515.801C249.2 515.801 260.6 537.401 256 548.601C256 548.601 255.6 538.201 251.6 533.201C251.6 533.201 247.6 546.001 246.2 547.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M231.4 544.801C231.4 544.801 236.8 536.001 228.8 517.601C228.8 517.601 228 538.001 221.2 549.001C221.2 549.001 235.4 528.801 231.4 544.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M221.4 542.801C221.4 542.801 221.2 522.801 221.6 519.801C221.6 519.801 217.8 536.401 207.6 546.001C207.6 546.001 222 534.001 221.4 542.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M211.8 510.801C211.8 510.801 217.8 524.401 207.8 542.801C207.8 542.801 214.2 530.601 209.4 523.601C209.4 523.601 212 520.201 211.8 510.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M192.6 542.401C192.6 542.401 191.6 526.801 193.4 524.601C193.4 524.601 193.6 518.201 193.2 517.201C193.2 517.201 197.2 511.001 197.4 518.401C197.4 518.401 198.8 526.201 201.6 530.801C201.6 530.801 205.2 536.201 205 542.601C205 542.601 195 512.401 192.6 542.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M189 514.801C189 514.801 182.4 525.601 180.6 544.601C180.6 544.601 179.2 538.401 183 524.001C183 524.001 187.2 508.601 189 514.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M167.2 534.601C167.2 534.601 172.2 529.201 173.6 524.201C173.6 524.201 177.2 508.401 170.8 517.001C170.8 517.001 171 525.001 162.8 532.401C162.8 532.401 167.6 530.001 167.2 534.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M161.4 529.601C161.4 529.601 164.8 512.201 165.6 511.401C165.6 511.401 167.4 508.001 164.6 511.201C164.6 511.201 155.8 530.401 151.8 537.001C151.8 537.001 159.8 527.801 161.4 529.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M155.6 513.001C155.6 513.001 167.2 490.601 145.4 516.401C145.4 516.401 156.4 506.601 155.6 513.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M140.2 498.401C140.2 498.401 145 479.601 147.6 479.801C147.6 479.801 155.8 470.801 149.2 481.401C149.2 481.401 143.2 491.001 143.8 500.801C143.8 500.801 143.2 491.201 140.2 498.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M470.5 487C470.5 487 458.5 477 456 473.5C456 473.5 469.5 492 469.5 499C469.5 499 472 491.5 470.5 487z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M476 465C476 465 455 450 451.5 442.5C451.5 442.5 478 472 478 476.5C478 476.5 478.5 467.5 476 465z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M493 311C493 311 481 303 479.5 305C479.5 305 490 311.5 492.5 320C492.5 320 491 311 493 311z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M501.5 391.5L484 379.5C484 379.5 503 396.5 503.5 400.5L501.5 391.5z"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M110.75 369L132.75 373.75"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M161 531C161 531 160.5 527.5 151.5 538"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M166.5 536C166.5 536 168.5 529.5 162 534"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M220.5 544.5C220.5 544.5 222 533.5 210.5 546.5"/>
+ </g>
+</svg>
diff --git a/result/noent/title.xml b/result/noent/title.xml
new file mode 100644
index 0000000..1b3fe07
--- /dev/null
+++ b/result/noent/title.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<title>my title</title>
diff --git a/result/noent/tstblanks.xml b/result/noent/tstblanks.xml
new file mode 100644
index 0000000..2561859
--- /dev/null
+++ b/result/noent/tstblanks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a test="passed">content</a>
diff --git a/result/noent/utf16bebom.xml b/result/noent/utf16bebom.xml
new file mode 100644
index 0000000..3b5466d
--- /dev/null
+++ b/result/noent/utf16bebom.xml
Binary files differ
diff --git a/result/noent/utf16bom.xml b/result/noent/utf16bom.xml
new file mode 100644
index 0000000..6ea296e
--- /dev/null
+++ b/result/noent/utf16bom.xml
Binary files differ
diff --git a/result/noent/utf16lebom.xml b/result/noent/utf16lebom.xml
new file mode 100644
index 0000000..933640c
--- /dev/null
+++ b/result/noent/utf16lebom.xml
Binary files differ
diff --git a/result/noent/utf8bom.xml b/result/noent/utf8bom.xml
new file mode 100644
index 0000000..f4e5164
--- /dev/null
+++ b/result/noent/utf8bom.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<foo/>
diff --git a/result/noent/wap.xml b/result/noent/wap.xml
new file mode 100644
index 0000000..694b49f
--- /dev/null
+++ b/result/noent/wap.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd">
+<!-- (C) 1999, 2000 WAP Forum Ltd. All rights reserved -->
+<wml>
+<card id="card1">
+<onevent type="onenterforward">
+<go href="/vswap/run/result.eml">
+ <postfield name="var" value="$test"/>
+ <postfield name="v" value="dark"/>
+ <postfield name="ts" value="0003"/>
+ <postfield name="tp" value="wml/state/variables/parsing/1"/>
+ <postfield name="ti" value="1"/>
+ <postfield name="expected" value="var:pass"/>
+</go>
+</onevent>
+<p>If automatic testing failed, select <anchor>Failed<go href="/vswap/run/result.eml">
+ <postfield name="SUBMIT" value="No"/><postfield name="v" value="dark"/>
+ <postfield name="ts" value="0003"/>
+ <postfield name="tp" value="wml/state/variables/parsing/1"/>
+ <postfield name="ti" value="1"/>
+ <postfield name="expected" value="var:pass"/></go></anchor>.</p>
+</card>
+
+</wml>
diff --git a/result/noent/winblanks.xml b/result/noent/winblanks.xml
new file mode 100644
index 0000000..0044aa2
--- /dev/null
+++ b/result/noent/winblanks.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<a>
+ <B>
+ <C/>
+</B>
+</a>
diff --git a/result/noent/wml.xml b/result/noent/wml.xml
new file mode 100644
index 0000000..3a96562
--- /dev/null
+++ b/result/noent/wml.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Rubriques 75008">
+ <p>
+ <a href="rubmenu.asp?CP=75008&amp;RB=01">Cin&#xE9;ma</a><br/>
+ </p>
+
+</card>
+</wml>
diff --git a/result/noent/xhtml1 b/result/noent/xhtml1
new file mode 100644
index 0000000..6c06a95
--- /dev/null
+++ b/result/noent/xhtml1
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!-- 3.1.1 3/ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Virtual Library</title>
+ </head>
+ <!-- 4.8 -->
+ <script type="text/javascript">
+ ... unescaped script &lt; content ...
+ </script>
+ <body>
+ <p>Moved to <a href="http://example.org/">example.org</a>.</p>
+ </body>
+ <!-- C2 -->
+ <img src="foo.gif" alt="foo" />
+ <!-- C3 -->
+ <p></p>
+ <!-- C7 -->
+ <p lang="fr" xml:lang="fr">coucou</p>
+ <p xml:lang="fr" lang="fr">salut</p>
+ <!-- C8 -->
+ <p name="fragid" id="fragid">test</p>
+ <!-- 4.5 -->
+ <dl compact="compact">
+ <dt>Internet Engineering Task Force</dt>
+ <dd>An organization which establishes technical standards for the Internet</dd>
+ </dl>
+
+</html>
diff --git a/result/noent/xhtmlcomp b/result/noent/xhtmlcomp
new file mode 100644
index 0000000..4ce634c
--- /dev/null
+++ b/result/noent/xhtmlcomp
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <body>
+ <h1><abbr>a</abbr> b</h1>
+ </body>
+</html>
diff --git a/result/noent/xml1 b/result/noent/xml1
new file mode 100644
index 0000000..637d265
--- /dev/null
+++ b/result/noent/xml1
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+ numerically (&#38;#38;#38;) or with a general entity
+ (&amp;amp;).</p>">
+]>
+<test><p>An ampersand (&amp;) may be escaped
+ numerically (&amp;#38;) or with a general entity
+ (&amp;amp;).</p></test>
diff --git a/result/noent/xml2 b/result/noent/xml2
new file mode 100644
index 0000000..6c39454
--- /dev/null
+++ b/result/noent/xml2
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ELEMENT test (#PCDATA)>
+<!ENTITY % xx "&#37;zz;">
+<!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >'>
+<!ENTITY tricky "error-prone">
+]>
+<test>This sample shows a error-prone method.</test>
diff --git a/result/ns b/result/ns
new file mode 100644
index 0000000..94b927e
--- /dev/null
+++ b/result/ns
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata dia:testattr="test"/>
+</dia:diagram>
diff --git a/result/ns.rde b/result/ns.rde
new file mode 100644
index 0000000..513d135
--- /dev/null
+++ b/result/ns.rde
@@ -0,0 +1,7 @@
+0 1 dia:diagram 0 0
+1 14 #text 0 1
+
+1 1 dia:diagramdata 1 0
+1 14 #text 0 1
+
+0 15 dia:diagram 0 0
diff --git a/result/ns.rdr b/result/ns.rdr
new file mode 100644
index 0000000..513d135
--- /dev/null
+++ b/result/ns.rdr
@@ -0,0 +1,7 @@
+0 1 dia:diagram 0 0
+1 14 #text 0 1
+
+1 1 dia:diagramdata 1 0
+1 14 #text 0 1
+
+0 15 dia:diagram 0 0
diff --git a/result/ns.sax b/result/ns.sax
new file mode 100644
index 0000000..45e00f7
--- /dev/null
+++ b/result/ns.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(dia:diagram, xmlns:dia='http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+ , 3)
+SAX.startElement(dia:diagramdata, dia:testattr='test')
+SAX.endElement(dia:diagramdata)
+SAX.characters(
+, 1)
+SAX.endElement(dia:diagram)
+SAX.endDocument()
diff --git a/result/ns.sax2 b/result/ns.sax2
new file mode 100644
index 0000000..c615db3
--- /dev/null
+++ b/result/ns.sax2
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/', 1, xmlns:dia='http://www.lysator.liu.se/~alla/dia/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(diagramdata, dia, 'http://www.lysator.liu.se/~alla/dia/', 0, 1, 0, dia:testattr='test...', 4)
+SAX.endElementNs(diagramdata, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.characters(
+, 1)
+SAX.endElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.endDocument()
diff --git a/result/ns2 b/result/ns2
new file mode 100644
index 0000000..b69ad82
--- /dev/null
+++ b/result/ns2
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/" dia:testattr="test"/>
diff --git a/result/ns2.rde b/result/ns2.rde
new file mode 100644
index 0000000..58ca0ac
--- /dev/null
+++ b/result/ns2.rde
@@ -0,0 +1 @@
+0 1 dia:diagram 1 0
diff --git a/result/ns2.rdr b/result/ns2.rdr
new file mode 100644
index 0000000..58ca0ac
--- /dev/null
+++ b/result/ns2.rdr
@@ -0,0 +1 @@
+0 1 dia:diagram 1 0
diff --git a/result/ns2.sax b/result/ns2.sax
new file mode 100644
index 0000000..64a3fe8
--- /dev/null
+++ b/result/ns2.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(dia:diagram, xmlns:dia='http://www.lysator.liu.se/~alla/dia/', dia:testattr='test')
+SAX.endElement(dia:diagram)
+SAX.endDocument()
diff --git a/result/ns2.sax2 b/result/ns2.sax2
new file mode 100644
index 0000000..fc8d6f4
--- /dev/null
+++ b/result/ns2.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/', 1, xmlns:dia='http://www.lysator.liu.se/~alla/dia/', 1, 0, dia:testattr='test...', 4)
+SAX.endElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.endDocument()
diff --git a/result/ns3 b/result/ns3
new file mode 100644
index 0000000..b69ad82
--- /dev/null
+++ b/result/ns3
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/" dia:testattr="test"/>
diff --git a/result/ns3.rde b/result/ns3.rde
new file mode 100644
index 0000000..58ca0ac
--- /dev/null
+++ b/result/ns3.rde
@@ -0,0 +1 @@
+0 1 dia:diagram 1 0
diff --git a/result/ns3.rdr b/result/ns3.rdr
new file mode 100644
index 0000000..58ca0ac
--- /dev/null
+++ b/result/ns3.rdr
@@ -0,0 +1 @@
+0 1 dia:diagram 1 0
diff --git a/result/ns3.sax b/result/ns3.sax
new file mode 100644
index 0000000..421c7f0
--- /dev/null
+++ b/result/ns3.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(dia:diagram, dia:testattr='test', xmlns:dia='http://www.lysator.liu.se/~alla/dia/')
+SAX.endElement(dia:diagram)
+SAX.endDocument()
diff --git a/result/ns3.sax2 b/result/ns3.sax2
new file mode 100644
index 0000000..fc8d6f4
--- /dev/null
+++ b/result/ns3.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/', 1, xmlns:dia='http://www.lysator.liu.se/~alla/dia/', 1, 0, dia:testattr='test...', 4)
+SAX.endElementNs(diagram, dia, 'http://www.lysator.liu.se/~alla/dia/')
+SAX.endDocument()
diff --git a/result/ns4 b/result/ns4
new file mode 100644
index 0000000..136bf92
--- /dev/null
+++ b/result/ns4
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<diagram testattr="test" xml:lang="en" xml:link="simple" xml:space="preserve"/>
diff --git a/result/ns4.rde b/result/ns4.rde
new file mode 100644
index 0000000..6f5dda7
--- /dev/null
+++ b/result/ns4.rde
@@ -0,0 +1 @@
+0 1 diagram 1 0
diff --git a/result/ns4.rdr b/result/ns4.rdr
new file mode 100644
index 0000000..6f5dda7
--- /dev/null
+++ b/result/ns4.rdr
@@ -0,0 +1 @@
+0 1 diagram 1 0
diff --git a/result/ns4.sax b/result/ns4.sax
new file mode 100644
index 0000000..674b9a3
--- /dev/null
+++ b/result/ns4.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(diagram, testattr='test', xml:lang='en', xml:link='simple', xml:space='preserve')
+SAX.endElement(diagram)
+SAX.endDocument()
diff --git a/result/ns4.sax2 b/result/ns4.sax2
new file mode 100644
index 0000000..e31cc56
--- /dev/null
+++ b/result/ns4.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(diagram, NULL, NULL, 0, 4, 0, testattr='test...', 4, xml:lang='en" ...', 2, xml:link='simp...', 6, xml:space='pres...', 8)
+SAX.endElementNs(diagram, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ns5 b/result/ns5
new file mode 100644
index 0000000..0afe4e2
--- /dev/null
+++ b/result/ns5
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<element xmlns:rng="http://example.org/ns/1" xmlns="http://example.org/ns/1" name="foo">
+ <empty/>
+</element>
diff --git a/result/ns5.rde b/result/ns5.rde
new file mode 100644
index 0000000..30ce196
--- /dev/null
+++ b/result/ns5.rde
@@ -0,0 +1,7 @@
+0 1 element 0 0
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+0 15 element 0 0
diff --git a/result/ns5.rdr b/result/ns5.rdr
new file mode 100644
index 0000000..30ce196
--- /dev/null
+++ b/result/ns5.rdr
@@ -0,0 +1,7 @@
+0 1 element 0 0
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+0 15 element 0 0
diff --git a/result/ns5.sax b/result/ns5.sax
new file mode 100644
index 0000000..e458bca
--- /dev/null
+++ b/result/ns5.sax
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(element, name='foo', xmlns:rng='http://example.org/ns/1', xmlns='http://example.org/ns/1')
+SAX.characters(
+ , 3)
+SAX.startElement(empty)
+SAX.endElement(empty)
+SAX.characters(
+, 1)
+SAX.endElement(element)
+SAX.endDocument()
diff --git a/result/ns5.sax2 b/result/ns5.sax2
new file mode 100644
index 0000000..a434d6b
--- /dev/null
+++ b/result/ns5.sax2
@@ -0,0 +1,11 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(element, NULL, 'http://example.org/ns/1', 2, xmlns:rng='http://example.org/ns/1', xmlns='http://example.org/ns/1', 1, 0, name='foo"...', 3)
+SAX.characters(
+ , 3)
+SAX.startElementNs(empty, NULL, 'http://example.org/ns/1', 0, 0, 0)
+SAX.endElementNs(empty, NULL, 'http://example.org/ns/1')
+SAX.characters(
+, 1)
+SAX.endElementNs(element, NULL, 'http://example.org/ns/1')
+SAX.endDocument()
diff --git a/result/ns6 b/result/ns6
new file mode 100644
index 0000000..c971252
--- /dev/null
+++ b/result/ns6
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<root>
+ <foo xmlns="http://abc"/>
+ <bar/>
+</root>
diff --git a/result/ns6.rde b/result/ns6.rde
new file mode 100644
index 0000000..23a80ec
--- /dev/null
+++ b/result/ns6.rde
@@ -0,0 +1,10 @@
+0 1 root 0 0
+1 14 #text 0 1
+
+1 1 foo 1 0
+1 14 #text 0 1
+
+1 1 bar 1 0
+1 14 #text 0 1
+
+0 15 root 0 0
diff --git a/result/ns6.rdr b/result/ns6.rdr
new file mode 100644
index 0000000..23a80ec
--- /dev/null
+++ b/result/ns6.rdr
@@ -0,0 +1,10 @@
+0 1 root 0 0
+1 14 #text 0 1
+
+1 1 foo 1 0
+1 14 #text 0 1
+
+1 1 bar 1 0
+1 14 #text 0 1
+
+0 15 root 0 0
diff --git a/result/ns6.sax b/result/ns6.sax
new file mode 100644
index 0000000..a1405b1
--- /dev/null
+++ b/result/ns6.sax
@@ -0,0 +1,15 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(root)
+SAX.characters(
+ , 3)
+SAX.startElement(foo, xmlns='http://abc')
+SAX.endElement(foo)
+SAX.characters(
+ , 3)
+SAX.startElement(bar)
+SAX.endElement(bar)
+SAX.characters(
+, 1)
+SAX.endElement(root)
+SAX.endDocument()
diff --git a/result/ns6.sax2 b/result/ns6.sax2
new file mode 100644
index 0000000..7b54552
--- /dev/null
+++ b/result/ns6.sax2
@@ -0,0 +1,15 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(root, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(foo, NULL, 'http://abc', 1, xmlns='http://abc', 0, 0)
+SAX.endElementNs(foo, NULL, 'http://abc')
+SAX.characters(
+ , 3)
+SAX.startElementNs(bar, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(bar, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(root, NULL, NULL)
+SAX.endDocument()
diff --git a/result/ns7 b/result/ns7
new file mode 100644
index 0000000..b5089e1
--- /dev/null
+++ b/result/ns7
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<xml:test/>
diff --git a/result/ns7.rde b/result/ns7.rde
new file mode 100644
index 0000000..16f5351
--- /dev/null
+++ b/result/ns7.rde
@@ -0,0 +1 @@
+0 1 xml:test 1 0
diff --git a/result/ns7.rdr b/result/ns7.rdr
new file mode 100644
index 0000000..16f5351
--- /dev/null
+++ b/result/ns7.rdr
@@ -0,0 +1 @@
+0 1 xml:test 1 0
diff --git a/result/ns7.sax b/result/ns7.sax
new file mode 100644
index 0000000..6020be9
--- /dev/null
+++ b/result/ns7.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(xml:test)
+SAX.endElement(xml:test)
+SAX.endDocument()
diff --git a/result/ns7.sax2 b/result/ns7.sax2
new file mode 100644
index 0000000..2a2c714
--- /dev/null
+++ b/result/ns7.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(test, xml, 'http://www.w3.org/XML/1998/namespace', 0, 0, 0)
+SAX.endElementNs(test, xml, 'http://www.w3.org/XML/1998/namespace')
+SAX.endDocument()
diff --git a/result/nsclean.xml b/result/nsclean.xml
new file mode 100644
index 0000000..8f1ea82
--- /dev/null
+++ b/result/nsclean.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="tag:foofoofoofoofoofoofoofoo" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
+<foop:content xmlns="http://www.w3.org/1999/xhtml" xmlns:foop="tag:foofoofoofoofoofoofoofoo">
+</foop:content>
+</article>
diff --git a/result/nsclean.xml.rde b/result/nsclean.xml.rde
new file mode 100644
index 0000000..c606593
--- /dev/null
+++ b/result/nsclean.xml.rde
@@ -0,0 +1,10 @@
+0 1 article 0 0
+1 14 #text 0 1
+
+1 1 foop:content 0 0
+2 14 #text 0 1
+
+1 15 foop:content 0 0
+1 14 #text 0 1
+
+0 15 article 0 0
diff --git a/result/nsclean.xml.rdr b/result/nsclean.xml.rdr
new file mode 100644
index 0000000..c606593
--- /dev/null
+++ b/result/nsclean.xml.rdr
@@ -0,0 +1,10 @@
+0 1 article 0 0
+1 14 #text 0 1
+
+1 1 foop:content 0 0
+2 14 #text 0 1
+
+1 15 foop:content 0 0
+1 14 #text 0 1
+
+0 15 article 0 0
diff --git a/result/nsclean.xml.sax b/result/nsclean.xml.sax
new file mode 100644
index 0000000..b01aeae
--- /dev/null
+++ b/result/nsclean.xml.sax
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(article, xmlns='tag:foofoofoofoofoofoofoofoo', xmlns:dc='http://purl.org/dc/elements/1.1/', xmlns:dcterms='http://purl.org/dc/terms/')
+SAX.characters(
+, 1)
+SAX.startElement(foop:content, xmlns='http://www.w3.org/1999/xhtml', xmlns:foop='tag:foofoofoofoofoofoofoofoo')
+SAX.characters(
+, 1)
+SAX.endElement(foop:content)
+SAX.characters(
+, 1)
+SAX.endElement(article)
+SAX.endDocument()
diff --git a/result/nsclean.xml.sax2 b/result/nsclean.xml.sax2
new file mode 100644
index 0000000..d443e2b
--- /dev/null
+++ b/result/nsclean.xml.sax2
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(article, NULL, 'tag:foofoofoofoofoofoofoofoo', 3, xmlns='tag:foofoofoofoofoofoofoofoo', xmlns:dc='http://purl.org/dc/elements/1.1/', xmlns:dcterms='http://purl.org/dc/terms/', 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(content, foop, 'tag:foofoofoofoofoofoofoofoo', 2, xmlns='http://www.w3.org/1999/xhtml', xmlns:foop='tag:foofoofoofoofoofoofoofoo', 0, 0)
+SAX.characters(
+, 1)
+SAX.endElementNs(content, foop, 'tag:foofoofoofoofoofoofoofoo')
+SAX.characters(
+, 1)
+SAX.endElementNs(article, NULL, 'tag:foofoofoofoofoofoofoofoo')
+SAX.endDocument()
diff --git a/result/p3p b/result/p3p
new file mode 100644
index 0000000..31d5587
--- /dev/null
+++ b/result/p3p
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:p3p="http://www.w3.org/TR/1998/WD-P3P10-syntax#proposal.DTD" xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#">
+<PROP realm="http://www.CoolCatalog.com/catalogue/" entity="CoolCatalog" agreeID="94df1293a3e519bb" assurance="http://www.TrustUs.org">
+ <USES>
+ <STATEMENT purp="2,3" recpnt="0" id="0" consq="a site with clothes you'd appreciate.">
+ <WITH><PREFIX name="User.">
+ <REF name="Name.First"/>
+ <REF name="Bdate.Year" optional="1"/>
+ <REF name="Gender"/>
+ </PREFIX></WITH>
+ </STATEMENT>
+ </USES>
+ <USES>
+ <STATEMENT action="read&amp;write" purp="0" recpnt="0" id="1">
+ <REF name="User.Shipping."/>
+ </STATEMENT>
+ </USES>
+ <DISCLOSURE discURI="http://www.CoolCatalog.com/PrivacyPractice.html" access="3" other="0,1"/>
+</PROP></RDF:RDF>
diff --git a/result/p3p.rde b/result/p3p.rde
new file mode 100644
index 0000000..0c01f50
--- /dev/null
+++ b/result/p3p.rde
@@ -0,0 +1,55 @@
+0 1 RDF:RDF 0 0
+1 14 #text 0 1
+
+1 1 PROP 0 0
+2 14 #text 0 1
+
+2 1 USES 0 0
+3 14 #text 0 1
+
+3 1 STATEMENT 0 0
+4 14 #text 0 1
+
+4 1 WITH 0 0
+5 1 PREFIX 0 0
+6 14 #text 0 1
+
+6 1 REF 1 0
+6 14 #text 0 1
+
+6 1 REF 1 0
+6 14 #text 0 1
+
+6 1 REF 1 0
+6 14 #text 0 1
+
+5 15 PREFIX 0 0
+4 15 WITH 0 0
+4 14 #text 0 1
+
+3 15 STATEMENT 0 0
+3 14 #text 0 1
+
+2 15 USES 0 0
+2 14 #text 0 1
+
+2 1 USES 0 0
+3 14 #text 0 1
+
+3 1 STATEMENT 0 0
+4 14 #text 0 1
+
+4 1 REF 1 0
+4 14 #text 0 1
+
+3 15 STATEMENT 0 0
+3 14 #text 0 1
+
+2 15 USES 0 0
+2 14 #text 0 1
+
+2 1 DISCLOSURE 1 0
+2 14 #text 0 1
+
+1 15 PROP 0 0
+0 15 RDF:RDF 0 0
diff --git a/result/p3p.rdr b/result/p3p.rdr
new file mode 100644
index 0000000..0c01f50
--- /dev/null
+++ b/result/p3p.rdr
@@ -0,0 +1,55 @@
+0 1 RDF:RDF 0 0
+1 14 #text 0 1
+
+1 1 PROP 0 0
+2 14 #text 0 1
+
+2 1 USES 0 0
+3 14 #text 0 1
+
+3 1 STATEMENT 0 0
+4 14 #text 0 1
+
+4 1 WITH 0 0
+5 1 PREFIX 0 0
+6 14 #text 0 1
+
+6 1 REF 1 0
+6 14 #text 0 1
+
+6 1 REF 1 0
+6 14 #text 0 1
+
+6 1 REF 1 0
+6 14 #text 0 1
+
+5 15 PREFIX 0 0
+4 15 WITH 0 0
+4 14 #text 0 1
+
+3 15 STATEMENT 0 0
+3 14 #text 0 1
+
+2 15 USES 0 0
+2 14 #text 0 1
+
+2 1 USES 0 0
+3 14 #text 0 1
+
+3 1 STATEMENT 0 0
+4 14 #text 0 1
+
+4 1 REF 1 0
+4 14 #text 0 1
+
+3 15 STATEMENT 0 0
+3 14 #text 0 1
+
+2 15 USES 0 0
+2 14 #text 0 1
+
+2 1 DISCLOSURE 1 0
+2 14 #text 0 1
+
+1 15 PROP 0 0
+0 15 RDF:RDF 0 0
diff --git a/result/p3p.sax b/result/p3p.sax
new file mode 100644
index 0000000..e36629a
--- /dev/null
+++ b/result/p3p.sax
@@ -0,0 +1,63 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(RDF:RDF, xmlns:p3p='http://www.w3.org/TR/1998/WD-P3P10-syntax#proposal.DTD', xmlns:RDF='http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+, 1)
+SAX.startElement(PROP, realm='http://www.CoolCatalog.com/catalogue/', entity='CoolCatalog', agreeID='94df1293a3e519bb', assurance='http://www.TrustUs.org')
+SAX.characters(
+ , 3)
+SAX.startElement(USES)
+SAX.characters(
+ , 3)
+SAX.startElement(STATEMENT, purp='2,3', recpnt='0', id='0', consq='a site with clothes you'd appreciate.')
+SAX.characters(
+ , 5)
+SAX.startElement(WITH)
+SAX.startElement(PREFIX, name='User.')
+SAX.characters(
+ , 6)
+SAX.startElement(REF, name='Name.First')
+SAX.endElement(REF)
+SAX.characters(
+ , 6)
+SAX.startElement(REF, name='Bdate.Year', optional='1')
+SAX.endElement(REF)
+SAX.characters(
+ , 6)
+SAX.startElement(REF, name='Gender')
+SAX.endElement(REF)
+SAX.characters(
+ , 5)
+SAX.endElement(PREFIX)
+SAX.endElement(WITH)
+SAX.characters(
+ , 3)
+SAX.endElement(STATEMENT)
+SAX.characters(
+ , 3)
+SAX.endElement(USES)
+SAX.characters(
+ , 3)
+SAX.startElement(USES)
+SAX.characters(
+ , 3)
+SAX.startElement(STATEMENT, action='read&#38;write', purp='0', recpnt='0', id='1')
+SAX.characters(
+ , 5)
+SAX.startElement(REF, name='User.Shipping.')
+SAX.endElement(REF)
+SAX.characters(
+ , 3)
+SAX.endElement(STATEMENT)
+SAX.characters(
+ , 3)
+SAX.endElement(USES)
+SAX.characters(
+ , 3)
+SAX.startElement(DISCLOSURE, discURI='http://www.CoolCatalog.com/PrivacyPractice.html', access='3', other='0,1')
+SAX.endElement(DISCLOSURE)
+SAX.characters(
+, 1)
+SAX.endElement(PROP)
+SAX.endElement(RDF:RDF)
+SAX.endDocument()
diff --git a/result/p3p.sax2 b/result/p3p.sax2
new file mode 100644
index 0000000..e62ae6b
--- /dev/null
+++ b/result/p3p.sax2
@@ -0,0 +1,65 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(RDF, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 2, xmlns:p3p='http://www.w3.org/TR/1998/WD-P3P10-syntax#proposal.DTD', xmlns:RDF='http://www.w3.org/TR/WD-rdf-syntax#', 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(PROP, NULL, NULL, 0, 4, 0, realm='http...', 37, entity='Cool...', 11, agreeID='94df...', 16, assurance='http...', 22)
+SAX.characters(
+ , 3)
+SAX.startElementNs(USES, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(STATEMENT, NULL, NULL, 0, 4, 0, purp='2,3"...', 3, recpnt='0" i...', 1, id='0"
+ ...', 1, consq='a si...', 37)
+SAX.characters(
+ , 5)
+SAX.startElementNs(WITH, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(PREFIX, NULL, NULL, 0, 1, 0, name='User...', 5)
+SAX.characters(
+ , 6)
+SAX.startElementNs(REF, NULL, NULL, 0, 1, 0, name='Name...', 10)
+SAX.endElementNs(REF, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(REF, NULL, NULL, 0, 2, 0, name='Bdat...', 10, optional='1"/>...', 1)
+SAX.endElementNs(REF, NULL, NULL)
+SAX.characters(
+ , 6)
+SAX.startElementNs(REF, NULL, NULL, 0, 1, 0, name='Gend...', 6)
+SAX.endElementNs(REF, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(PREFIX, NULL, NULL)
+SAX.endElementNs(WITH, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(STATEMENT, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(USES, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(USES, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(STATEMENT, NULL, NULL, 0, 4, 0, action='read...', 14, purp='0" r...', 1, recpnt='0" i...', 1, id='1">
+...', 1)
+SAX.characters(
+ , 5)
+SAX.startElementNs(REF, NULL, NULL, 0, 1, 0, name='User...', 14)
+SAX.endElementNs(REF, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(STATEMENT, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(USES, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(DISCLOSURE, NULL, NULL, 0, 3, 0, discURI='http...', 47, access='3" o...', 1, other='0,1"...', 3)
+SAX.endElementNs(DISCLOSURE, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(PROP, NULL, NULL)
+SAX.endElementNs(RDF, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.endDocument()
diff --git a/result/pattern/conj b/result/pattern/conj
new file mode 100644
index 0000000..616450b
--- /dev/null
+++ b/result/pattern/conj
@@ -0,0 +1,47 @@
+Node /a matches pattern a|b
+Node /a/b matches pattern a|b
+Node /a/b/c[1]/b matches pattern a|b
+Node /a/b/c[2]/b matches pattern a|b
+Node /a/b/c[2]/c/b matches pattern a|b
+Node /a/c/b matches pattern a|b
+Node /a matches pattern a|c
+Node /a/b/c[1] matches pattern a|c
+Node /a/b/c[2] matches pattern a|c
+Node /a/b/c[2]/c matches pattern a|c
+Node /a/c matches pattern a|c
+Node /a/b matches pattern b|c
+Node /a/b/c[1] matches pattern b|c
+Node /a/b/c[1]/b matches pattern b|c
+Node /a/b/c[2] matches pattern b|c
+Node /a/b/c[2]/b matches pattern b|c
+Node /a/b/c[2]/c matches pattern b|c
+Node /a/b/c[2]/c/b matches pattern b|c
+Node /a/c matches pattern b|c
+Node /a/c/b matches pattern b|c
+Node /a matches pattern a|b|c
+Node /a/b matches pattern a|b|c
+Node /a/b/c[1] matches pattern a|b|c
+Node /a/b/c[1]/b matches pattern a|b|c
+Node /a/b/c[2] matches pattern a|b|c
+Node /a/b/c[2]/b matches pattern a|b|c
+Node /a/b/c[2]/c matches pattern a|b|c
+Node /a/b/c[2]/c/b matches pattern a|b|c
+Node /a/c matches pattern a|b|c
+Node /a/c/b matches pattern a|b|c
+Node /a matches pattern /a|b
+Node /a/b matches pattern /a|b
+Node /a/b/c[1]/b matches pattern /a|b
+Node /a/b/c[2]/b matches pattern /a|b
+Node /a/b/c[2]/c/b matches pattern /a|b
+Node /a/c/b matches pattern /a|b
+Node /a matches pattern b|/a
+Node /a/b matches pattern b|/a
+Node /a/b/c[1]/b matches pattern b|/a
+Node /a/b/c[2]/b matches pattern b|/a
+Node /a/b/c[2]/c/b matches pattern b|/a
+Node /a/c/b matches pattern b|/a
+Node /a/b/c[1] matches pattern a//c|b//c
+Node /a/b/c[2] matches pattern a//c|b//c
+Node /a/b/c[2]/c matches pattern a//c|b//c
+Node /a/c matches pattern a//c|b//c
+Node /a matches pattern d|e|f|g|h|a
diff --git a/result/pattern/multiple b/result/pattern/multiple
new file mode 100644
index 0000000..e10390e
--- /dev/null
+++ b/result/pattern/multiple
@@ -0,0 +1,91 @@
+Node /c/b[1]/a[1] matches pattern a
+Node /c/b[1]/a[2] matches pattern a
+Node /c/c/b/a[1] matches pattern a
+Node /c/c/b/a[2] matches pattern a
+Node /c/b[2]/a[1] matches pattern a
+Node /c/b[2]/a[2] matches pattern a
+Node /c/b[1] matches pattern b
+Node /c/c/b matches pattern b
+Node /c/b[2] matches pattern b
+Node /c matches pattern c
+Node /c/c matches pattern c
+Node /c/b[1] matches pattern c/b
+Node /c/c/b matches pattern c/b
+Node /c/b[2] matches pattern c/b
+Node /c/b[1]/a[1] matches pattern b/a
+Node /c/b[1]/a[2] matches pattern b/a
+Node /c/c/b/a[1] matches pattern b/a
+Node /c/c/b/a[2] matches pattern b/a
+Node /c/b[2]/a[1] matches pattern b/a
+Node /c/b[2]/a[2] matches pattern b/a
+Node /c/b[1]/a[1] matches pattern c/b/a
+Node /c/b[1]/a[2] matches pattern c/b/a
+Node /c/c/b/a[1] matches pattern c/b/a
+Node /c/c/b/a[2] matches pattern c/b/a
+Node /c/b[2]/a[1] matches pattern c/b/a
+Node /c/b[2]/a[2] matches pattern c/b/a
+Node /c/b[1]/a[1] matches pattern c//a
+Node /c/b[1]/a[2] matches pattern c//a
+Node /c/c/b/a[1] matches pattern c//a
+Node /c/c/b/a[2] matches pattern c//a
+Node /c/b[2]/a[1] matches pattern c//a
+Node /c/b[2]/a[2] matches pattern c//a
+Node /c/b[1] matches pattern c//b
+Node /c/c/b matches pattern c//b
+Node /c/b[2] matches pattern c//b
+Node /c/b[1]/a[1] matches pattern b//a
+Node /c/b[1]/a[2] matches pattern b//a
+Node /c/c/b/a[1] matches pattern b//a
+Node /c/c/b/a[2] matches pattern b//a
+Node /c/b[2]/a[1] matches pattern b//a
+Node /c/b[2]/a[2] matches pattern b//a
+Node /c/b[1]/a[1] matches pattern c//b//a
+Node /c/b[1]/a[2] matches pattern c//b//a
+Node /c/c/b/a[1] matches pattern c//b//a
+Node /c/c/b/a[2] matches pattern c//b//a
+Node /c/b[2]/a[1] matches pattern c//b//a
+Node /c/b[2]/a[2] matches pattern c//b//a
+Node /c/b[1]/a[1] matches pattern c/b//a
+Node /c/b[1]/a[2] matches pattern c/b//a
+Node /c/c/b/a[1] matches pattern c/b//a
+Node /c/c/b/a[2] matches pattern c/b//a
+Node /c/b[2]/a[1] matches pattern c/b//a
+Node /c/b[2]/a[2] matches pattern c/b//a
+Node /c/b[1]/a[1] matches pattern c//b/a
+Node /c/b[1]/a[2] matches pattern c//b/a
+Node /c/c/b/a[1] matches pattern c//b/a
+Node /c/c/b/a[2] matches pattern c//b/a
+Node /c/b[2]/a[1] matches pattern c//b/a
+Node /c/b[2]/a[2] matches pattern c//b/a
+Node /c matches pattern /c
+Node /c/b[1] matches pattern /c/b
+Node /c/b[2] matches pattern /c/b
+Node /c/b[1]/a[1] matches pattern /c/b/a
+Node /c/b[1]/a[2] matches pattern /c/b/a
+Node /c/b[2]/a[1] matches pattern /c/b/a
+Node /c/b[2]/a[2] matches pattern /c/b/a
+Node /c/b[1]/a[1] matches pattern /c//a
+Node /c/b[1]/a[2] matches pattern /c//a
+Node /c/c/b/a[1] matches pattern /c//a
+Node /c/c/b/a[2] matches pattern /c//a
+Node /c/b[2]/a[1] matches pattern /c//a
+Node /c/b[2]/a[2] matches pattern /c//a
+Node /c/b[1] matches pattern /c//b
+Node /c/c/b matches pattern /c//b
+Node /c/b[2] matches pattern /c//b
+Node /c/b[1]/a[1] matches pattern /c//b//a
+Node /c/b[1]/a[2] matches pattern /c//b//a
+Node /c/c/b/a[1] matches pattern /c//b//a
+Node /c/c/b/a[2] matches pattern /c//b//a
+Node /c/b[2]/a[1] matches pattern /c//b//a
+Node /c/b[2]/a[2] matches pattern /c//b//a
+Node /c/b[1]/a[1] matches pattern /c/b//a
+Node /c/b[1]/a[2] matches pattern /c/b//a
+Node /c/b[2]/a[1] matches pattern /c/b//a
+Node /c/b[2]/a[2] matches pattern /c/b//a
+Node /c/b[1]/a[1] matches pattern /c//b/a
+Node /c/b[1]/a[2] matches pattern /c//b/a
+Node /c/c/b/a[1] matches pattern /c//b/a
+Node /c/c/b/a[2] matches pattern /c//b/a
+Node /c/b[2]/a[1] matches pattern /c//b/a
+Node /c/b[2]/a[2] matches pattern /c//b/a
diff --git a/result/pattern/namespaces b/result/pattern/namespaces
new file mode 100644
index 0000000..159f847
--- /dev/null
+++ b/result/pattern/namespaces
@@ -0,0 +1,20 @@
+Node /a matches pattern //a
+Node /a/b:b/a matches pattern //a
+Node /a/*[4]/a matches pattern //a
+Node /a/a:a matches pattern //a:a
+Node /a/b:b/a/a:a matches pattern //a:a
+Node /a/*[4] matches pattern //a:a
+Node /a/c:a matches pattern //a:a
+Node /a/b matches pattern //b
+Node /a/a:a/b:b matches pattern //b:b
+Node /a/b:b matches pattern //b:b
+Node /a/b:b/a/a:a/b:b matches pattern //b:b
+Node /a/b:b/a matches pattern /a//a
+Node /a/*[4]/a matches pattern /a//a
+Node /a/b matches pattern /a/b
+Node /a/a:a matches pattern /a/a:a
+Node /a/*[4] matches pattern /a/a:a
+Node /a/c:a matches pattern /a/a:a
+Node /a/a:a matches pattern /a/c:a
+Node /a/*[4] matches pattern /a/c:a
+Node /a/c:a matches pattern /a/c:a
diff --git a/result/pattern/simple b/result/pattern/simple
new file mode 100644
index 0000000..5710b5c
--- /dev/null
+++ b/result/pattern/simple
@@ -0,0 +1,12 @@
+Node /a matches pattern a
+Node /a/b matches pattern b
+Node /a/b matches pattern b
+Node /a matches pattern /a
+Node /a/b matches pattern a/b
+Node /a/b/c matches pattern a/b/c
+Node /a matches pattern //a
+Node /a/b matches pattern //b
+Node /a/b/c matches pattern //c
+Node /a/b matches pattern a//b
+Node /a/b/c matches pattern a//c
+Node /a/b/c matches pattern b//c
diff --git a/result/pi.xml b/result/pi.xml
new file mode 100644
index 0000000..48c7ff0
--- /dev/null
+++ b/result/pi.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+<?document-start doc?>
+<empty/>
+<?document-end doc?>
+</doc>
diff --git a/result/pi.xml.rde b/result/pi.xml.rde
new file mode 100644
index 0000000..cdc8a8d
--- /dev/null
+++ b/result/pi.xml.rde
@@ -0,0 +1,13 @@
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 7 document-start 0 1 doc
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+1 7 document-end 0 1 doc
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/pi.xml.rdr b/result/pi.xml.rdr
new file mode 100644
index 0000000..cdc8a8d
--- /dev/null
+++ b/result/pi.xml.rdr
@@ -0,0 +1,13 @@
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 7 document-start 0 1 doc
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+1 7 document-end 0 1 doc
+1 14 #text 0 1
+
+0 15 doc 0 0
diff --git a/result/pi.xml.sax b/result/pi.xml.sax
new file mode 100644
index 0000000..2a1b9bd
--- /dev/null
+++ b/result/pi.xml.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.processingInstruction(document-start, doc)
+SAX.characters(
+, 1)
+SAX.startElement(empty)
+SAX.endElement(empty)
+SAX.characters(
+, 1)
+SAX.processingInstruction(document-end, doc)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/pi.xml.sax2 b/result/pi.xml.sax2
new file mode 100644
index 0000000..a4490ea
--- /dev/null
+++ b/result/pi.xml.sax2
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.processingInstruction(document-start, doc)
+SAX.characters(
+, 1)
+SAX.startElementNs(empty, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(empty, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.processingInstruction(document-end, doc)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/pi2.xml b/result/pi2.xml
new file mode 100644
index 0000000..710d51c
--- /dev/null
+++ b/result/pi2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<?document-start doc?>
+<doc>
+<empty/>
+</doc>
+<?document-end doc?>
diff --git a/result/pi2.xml.rde b/result/pi2.xml.rde
new file mode 100644
index 0000000..52b3b9d
--- /dev/null
+++ b/result/pi2.xml.rde
@@ -0,0 +1,9 @@
+0 7 document-start 0 1 doc
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+0 15 doc 0 0
+0 7 document-end 0 1 doc
diff --git a/result/pi2.xml.rdr b/result/pi2.xml.rdr
new file mode 100644
index 0000000..52b3b9d
--- /dev/null
+++ b/result/pi2.xml.rdr
@@ -0,0 +1,9 @@
+0 7 document-start 0 1 doc
+0 1 doc 0 0
+1 14 #text 0 1
+
+1 1 empty 1 0
+1 14 #text 0 1
+
+0 15 doc 0 0
+0 7 document-end 0 1 doc
diff --git a/result/pi2.xml.sax b/result/pi2.xml.sax
new file mode 100644
index 0000000..3100a17
--- /dev/null
+++ b/result/pi2.xml.sax
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.processingInstruction(document-start, doc)
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.startElement(empty)
+SAX.endElement(empty)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.processingInstruction(document-end, doc)
+SAX.endDocument()
diff --git a/result/pi2.xml.sax2 b/result/pi2.xml.sax2
new file mode 100644
index 0000000..1e6caad
--- /dev/null
+++ b/result/pi2.xml.sax2
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.processingInstruction(document-start, doc)
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(empty, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(empty, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.processingInstruction(document-end, doc)
+SAX.endDocument()
diff --git a/result/rdf1 b/result/rdf1
new file mode 100644
index 0000000..d44c3c6
--- /dev/null
+++ b/result/rdf1
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RPM="http://www.rpm.org/" xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#">
+ <RDF:Description HREF="ftp://rufus.w3.org/linux/redhat/redhat-5.1/i386/RedHat/RPMS/rpm-2.5-2.i386.rpm">
+ <RPM:Name>rpm</RPM:Name>
+ <RPM:Version>2.5</RPM:Version>
+ <RPM:Release>2</RPM:Release>
+ <RPM:Arch>i386</RPM:Arch>
+ <RPM:Os>Linux</RPM:Os>
+ <RPM:Distribution>Manhattan </RPM:Distribution>
+ <RPM:Vendor>Red Hat Software</RPM:Vendor>
+ <RPM:Packager>Red Hat Software &lt;bugs@redhat.com&gt;</RPM:Packager>
+ <RPM:Group>Utilities/System</RPM:Group>
+ <RPM:Summary>Red Hat Package Manager</RPM:Summary>
+ <RPM:Description>RPM is a powerful package manager, which can be used to build, install,
+query, verify, update, and uninstall individual software packages. A
+package consists of an archive of files, and package information, including
+name, version, and description.</RPM:Description>
+ <RPM:Copyright>GPL</RPM:Copyright>
+ <RPM:Changelog>* Sun May 10 1998 Prospector System &lt;bugs@redhat.com&gt;
+ - translations modified for de, fr, tr
+</RPM:Changelog>
+ <RPM:Sources>rpm-2.5-2.src.rpm</RPM:Sources>
+ <RPM:SourcesFtp>ftp://ftp.redhat.com/pub/redhat/redhat-5.1/SRPMS</RPM:SourcesFtp>
+ <RPM:BuildDate>Sun May 10 14:52:32 1998</RPM:BuildDate>
+ <RPM:Date>894826352</RPM:Date>
+ <RPM:Size>850599</RPM:Size>
+ <RPM:BuildHost>porky.redhat.com</RPM:BuildHost>
+ <RPM:Provides>
+ <RDF:Bag>
+ <RPM:Resource>rpm</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Provides>
+ <RPM:Requires>
+ <RDF:Bag>
+ <RPM:Resource>/bin/sh</RPM:Resource>
+ <RPM:Resource>ld-linux.so.2</RPM:Resource>
+ <RPM:Resource>libc.so.6</RPM:Resource>
+ <RPM:Resource>libdb.so.2</RPM:Resource>
+ <RPM:Resource>libz.so.1</RPM:Resource>
+ <RPM:Resource>/bin/bash</RPM:Resource>
+ <RPM:Resource>/bin/sh</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Requires>
+ <RPM:Files>/bin/rpm
+/usr/bin/find-provides
+/usr/bin/find-requires
+/usr/bin/gendiff
+/usr/bin/rpm2cpio
+/usr/doc/rpm-2.5
+/usr/doc/rpm-2.5/CHANGES
+/usr/doc/rpm-2.5/RPM-PGP-KEY
+/usr/doc/rpm-2.5/buildroot
+/usr/doc/rpm-2.5/dependencies
+/usr/doc/rpm-2.5/format
+/usr/doc/rpm-2.5/groups
+/usr/doc/rpm-2.5/macros
+/usr/doc/rpm-2.5/queryformat
+/usr/doc/rpm-2.5/relocatable
+/usr/doc/rpm-2.5/signatures
+/usr/doc/rpm-2.5/spec
+/usr/doc/rpm-2.5/triggers
+/usr/lib/rpmpopt
+/usr/lib/rpmrc
+/usr/man/man8/rpm.8
+/usr/man/man8/rpm2cpio.8
+/usr/share/locale/de/LC_MESSAGES/rpm.mo
+/usr/share/locale/fr/LC_MESSAGES/rpm.mo
+/usr/share/locale/pt-br/LC_MESSAGES/rpm.mo
+/usr/share/locale/sv/LC_MESSAGES/rpm.mo
+/usr/share/locale/tr/LC_MESSAGES/rpm.mo
+/usr/src/redhat
+/usr/src/redhat/BUILD
+/usr/src/redhat/RPMS
+/usr/src/redhat/RPMS/i386
+/usr/src/redhat/RPMS/noarch
+/usr/src/redhat/SOURCES
+/usr/src/redhat/SPECS
+/usr/src/redhat/SRPMS
+</RPM:Files>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/result/rdf1.rde b/result/rdf1.rde
new file mode 100644
index 0000000..b34399c
--- /dev/null
+++ b/result/rdf1.rde
@@ -0,0 +1,214 @@
+0 1 RDF:RDF 0 0
+1 14 #text 0 1
+
+1 1 RDF:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Name 0 0
+3 3 #text 0 1 rpm
+2 15 RPM:Name 0 0
+2 14 #text 0 1
+
+2 1 RPM:Version 0 0
+3 3 #text 0 1 2.5
+2 15 RPM:Version 0 0
+2 14 #text 0 1
+
+2 1 RPM:Release 0 0
+3 3 #text 0 1 2
+2 15 RPM:Release 0 0
+2 14 #text 0 1
+
+2 1 RPM:Arch 0 0
+3 3 #text 0 1 i386
+2 15 RPM:Arch 0 0
+2 14 #text 0 1
+
+2 1 RPM:Os 0 0
+3 3 #text 0 1 Linux
+2 15 RPM:Os 0 0
+2 14 #text 0 1
+
+2 1 RPM:Distribution 0 0
+3 3 #text 0 1 Manhattan
+2 15 RPM:Distribution 0 0
+2 14 #text 0 1
+
+2 1 RPM:Vendor 0 0
+3 3 #text 0 1 Red Hat Software
+2 15 RPM:Vendor 0 0
+2 14 #text 0 1
+
+2 1 RPM:Packager 0 0
+3 3 #text 0 1 Red Hat Software <bugs@redhat.com>
+2 15 RPM:Packager 0 0
+2 14 #text 0 1
+
+2 1 RPM:Group 0 0
+3 3 #text 0 1 Utilities/System
+2 15 RPM:Group 0 0
+2 14 #text 0 1
+
+2 1 RPM:Summary 0 0
+3 3 #text 0 1 Red Hat Package Manager
+2 15 RPM:Summary 0 0
+2 14 #text 0 1
+
+2 1 RPM:Description 0 0
+3 3 #text 0 1 RPM is a powerful package manager, which can be used to build, install,
+query, verify, update, and uninstall individual software packages. A
+package consists of an archive of files, and package information, including
+name, version, and description.
+2 15 RPM:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Copyright 0 0
+3 3 #text 0 1 GPL
+2 15 RPM:Copyright 0 0
+2 14 #text 0 1
+
+2 1 RPM:Changelog 0 0
+3 3 #text 0 1 * Sun May 10 1998 Prospector System <bugs@redhat.com>
+ - translations modified for de, fr, tr
+
+2 15 RPM:Changelog 0 0
+2 14 #text 0 1
+
+2 1 RPM:Sources 0 0
+3 3 #text 0 1 rpm-2.5-2.src.rpm
+2 15 RPM:Sources 0 0
+2 14 #text 0 1
+
+2 1 RPM:SourcesFtp 0 0
+3 3 #text 0 1 ftp://ftp.redhat.com/pub/redhat/redhat-5.1/SRPMS
+2 15 RPM:SourcesFtp 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildDate 0 0
+3 3 #text 0 1 Sun May 10 14:52:32 1998
+2 15 RPM:BuildDate 0 0
+2 14 #text 0 1
+
+2 1 RPM:Date 0 0
+3 3 #text 0 1 894826352
+2 15 RPM:Date 0 0
+2 14 #text 0 1
+
+2 1 RPM:Size 0 0
+3 3 #text 0 1 850599
+2 15 RPM:Size 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildHost 0 0
+3 3 #text 0 1 porky.redhat.com
+2 15 RPM:BuildHost 0 0
+2 14 #text 0 1
+
+2 1 RPM:Provides 0 0
+3 14 #text 0 1
+
+3 1 RDF:Bag 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 rpm
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+3 15 RDF:Bag 0 0
+3 14 #text 0 1
+
+2 15 RPM:Provides 0 0
+2 14 #text 0 1
+
+2 1 RPM:Requires 0 0
+3 14 #text 0 1
+
+3 1 RDF:Bag 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 /bin/sh
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 ld-linux.so.2
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libc.so.6
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libdb.so.2
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libz.so.1
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 /bin/bash
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 /bin/sh
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+3 15 RDF:Bag 0 0
+3 14 #text 0 1
+
+2 15 RPM:Requires 0 0
+2 14 #text 0 1
+
+2 1 RPM:Files 0 0
+3 3 #text 0 1 /bin/rpm
+/usr/bin/find-provides
+/usr/bin/find-requires
+/usr/bin/gendiff
+/usr/bin/rpm2cpio
+/usr/doc/rpm-2.5
+/usr/doc/rpm-2.5/CHANGES
+/usr/doc/rpm-2.5/RPM-PGP-KEY
+/usr/doc/rpm-2.5/buildroot
+/usr/doc/rpm-2.5/dependencies
+/usr/doc/rpm-2.5/format
+/usr/doc/rpm-2.5/groups
+/usr/doc/rpm-2.5/macros
+/usr/doc/rpm-2.5/queryformat
+/usr/doc/rpm-2.5/relocatable
+/usr/doc/rpm-2.5/signatures
+/usr/doc/rpm-2.5/spec
+/usr/doc/rpm-2.5/triggers
+/usr/lib/rpmpopt
+/usr/lib/rpmrc
+/usr/man/man8/rpm.8
+/usr/man/man8/rpm2cpio.8
+/usr/share/locale/de/LC_MESSAGES/rpm.mo
+/usr/share/locale/fr/LC_MESSAGES/rpm.mo
+/usr/share/locale/pt-br/LC_MESSAGES/rpm.mo
+/usr/share/locale/sv/LC_MESSAGES/rpm.mo
+/usr/share/locale/tr/LC_MESSAGES/rpm.mo
+/usr/src/redhat
+/usr/src/redhat/BUILD
+/usr/src/redhat/RPMS
+/usr/src/redhat/RPMS/i386
+/usr/src/redhat/RPMS/noarch
+/usr/src/redhat/SOURCES
+/usr/src/redhat/SPECS
+/usr/src/redhat/SRPMS
+
+2 15 RPM:Files 0 0
+2 14 #text 0 1
+
+1 15 RDF:Description 0 0
+1 14 #text 0 1
+
+0 15 RDF:RDF 0 0
diff --git a/result/rdf1.rdr b/result/rdf1.rdr
new file mode 100644
index 0000000..b34399c
--- /dev/null
+++ b/result/rdf1.rdr
@@ -0,0 +1,214 @@
+0 1 RDF:RDF 0 0
+1 14 #text 0 1
+
+1 1 RDF:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Name 0 0
+3 3 #text 0 1 rpm
+2 15 RPM:Name 0 0
+2 14 #text 0 1
+
+2 1 RPM:Version 0 0
+3 3 #text 0 1 2.5
+2 15 RPM:Version 0 0
+2 14 #text 0 1
+
+2 1 RPM:Release 0 0
+3 3 #text 0 1 2
+2 15 RPM:Release 0 0
+2 14 #text 0 1
+
+2 1 RPM:Arch 0 0
+3 3 #text 0 1 i386
+2 15 RPM:Arch 0 0
+2 14 #text 0 1
+
+2 1 RPM:Os 0 0
+3 3 #text 0 1 Linux
+2 15 RPM:Os 0 0
+2 14 #text 0 1
+
+2 1 RPM:Distribution 0 0
+3 3 #text 0 1 Manhattan
+2 15 RPM:Distribution 0 0
+2 14 #text 0 1
+
+2 1 RPM:Vendor 0 0
+3 3 #text 0 1 Red Hat Software
+2 15 RPM:Vendor 0 0
+2 14 #text 0 1
+
+2 1 RPM:Packager 0 0
+3 3 #text 0 1 Red Hat Software <bugs@redhat.com>
+2 15 RPM:Packager 0 0
+2 14 #text 0 1
+
+2 1 RPM:Group 0 0
+3 3 #text 0 1 Utilities/System
+2 15 RPM:Group 0 0
+2 14 #text 0 1
+
+2 1 RPM:Summary 0 0
+3 3 #text 0 1 Red Hat Package Manager
+2 15 RPM:Summary 0 0
+2 14 #text 0 1
+
+2 1 RPM:Description 0 0
+3 3 #text 0 1 RPM is a powerful package manager, which can be used to build, install,
+query, verify, update, and uninstall individual software packages. A
+package consists of an archive of files, and package information, including
+name, version, and description.
+2 15 RPM:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Copyright 0 0
+3 3 #text 0 1 GPL
+2 15 RPM:Copyright 0 0
+2 14 #text 0 1
+
+2 1 RPM:Changelog 0 0
+3 3 #text 0 1 * Sun May 10 1998 Prospector System <bugs@redhat.com>
+ - translations modified for de, fr, tr
+
+2 15 RPM:Changelog 0 0
+2 14 #text 0 1
+
+2 1 RPM:Sources 0 0
+3 3 #text 0 1 rpm-2.5-2.src.rpm
+2 15 RPM:Sources 0 0
+2 14 #text 0 1
+
+2 1 RPM:SourcesFtp 0 0
+3 3 #text 0 1 ftp://ftp.redhat.com/pub/redhat/redhat-5.1/SRPMS
+2 15 RPM:SourcesFtp 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildDate 0 0
+3 3 #text 0 1 Sun May 10 14:52:32 1998
+2 15 RPM:BuildDate 0 0
+2 14 #text 0 1
+
+2 1 RPM:Date 0 0
+3 3 #text 0 1 894826352
+2 15 RPM:Date 0 0
+2 14 #text 0 1
+
+2 1 RPM:Size 0 0
+3 3 #text 0 1 850599
+2 15 RPM:Size 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildHost 0 0
+3 3 #text 0 1 porky.redhat.com
+2 15 RPM:BuildHost 0 0
+2 14 #text 0 1
+
+2 1 RPM:Provides 0 0
+3 14 #text 0 1
+
+3 1 RDF:Bag 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 rpm
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+3 15 RDF:Bag 0 0
+3 14 #text 0 1
+
+2 15 RPM:Provides 0 0
+2 14 #text 0 1
+
+2 1 RPM:Requires 0 0
+3 14 #text 0 1
+
+3 1 RDF:Bag 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 /bin/sh
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 ld-linux.so.2
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libc.so.6
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libdb.so.2
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libz.so.1
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 /bin/bash
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 /bin/sh
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+3 15 RDF:Bag 0 0
+3 14 #text 0 1
+
+2 15 RPM:Requires 0 0
+2 14 #text 0 1
+
+2 1 RPM:Files 0 0
+3 3 #text 0 1 /bin/rpm
+/usr/bin/find-provides
+/usr/bin/find-requires
+/usr/bin/gendiff
+/usr/bin/rpm2cpio
+/usr/doc/rpm-2.5
+/usr/doc/rpm-2.5/CHANGES
+/usr/doc/rpm-2.5/RPM-PGP-KEY
+/usr/doc/rpm-2.5/buildroot
+/usr/doc/rpm-2.5/dependencies
+/usr/doc/rpm-2.5/format
+/usr/doc/rpm-2.5/groups
+/usr/doc/rpm-2.5/macros
+/usr/doc/rpm-2.5/queryformat
+/usr/doc/rpm-2.5/relocatable
+/usr/doc/rpm-2.5/signatures
+/usr/doc/rpm-2.5/spec
+/usr/doc/rpm-2.5/triggers
+/usr/lib/rpmpopt
+/usr/lib/rpmrc
+/usr/man/man8/rpm.8
+/usr/man/man8/rpm2cpio.8
+/usr/share/locale/de/LC_MESSAGES/rpm.mo
+/usr/share/locale/fr/LC_MESSAGES/rpm.mo
+/usr/share/locale/pt-br/LC_MESSAGES/rpm.mo
+/usr/share/locale/sv/LC_MESSAGES/rpm.mo
+/usr/share/locale/tr/LC_MESSAGES/rpm.mo
+/usr/src/redhat
+/usr/src/redhat/BUILD
+/usr/src/redhat/RPMS
+/usr/src/redhat/RPMS/i386
+/usr/src/redhat/RPMS/noarch
+/usr/src/redhat/SOURCES
+/usr/src/redhat/SPECS
+/usr/src/redhat/SRPMS
+
+2 15 RPM:Files 0 0
+2 14 #text 0 1
+
+1 15 RDF:Description 0 0
+1 14 #text 0 1
+
+0 15 RDF:RDF 0 0
diff --git a/result/rdf1.sax b/result/rdf1.sax
new file mode 100644
index 0000000..e235973
--- /dev/null
+++ b/result/rdf1.sax
@@ -0,0 +1,186 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(RDF:RDF, xmlns:RPM='http://www.rpm.org/', xmlns:RDF='http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+ , 3)
+SAX.startElement(RDF:Description, HREF='ftp://rufus.w3.org/linux/redhat/redhat-5.1/i386/RedHat/RPMS/rpm-2.5-2.i386.rpm')
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Name)
+SAX.characters(rpm, 3)
+SAX.endElement(RPM:Name)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Version)
+SAX.characters(2.5, 3)
+SAX.endElement(RPM:Version)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Release)
+SAX.characters(2, 1)
+SAX.endElement(RPM:Release)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Arch)
+SAX.characters(i386, 4)
+SAX.endElement(RPM:Arch)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Os)
+SAX.characters(Linux, 5)
+SAX.endElement(RPM:Os)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Distribution)
+SAX.characters(Manhattan , 10)
+SAX.endElement(RPM:Distribution)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Vendor)
+SAX.characters(Red Hat Software, 16)
+SAX.endElement(RPM:Vendor)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Packager)
+SAX.characters(Red Hat Software , 17)
+SAX.characters(<, 1)
+SAX.characters(bugs@redhat.com, 15)
+SAX.characters(>, 1)
+SAX.endElement(RPM:Packager)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Group)
+SAX.characters(Utilities/System, 16)
+SAX.endElement(RPM:Group)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Summary)
+SAX.characters(Red Hat Package Manager, 23)
+SAX.endElement(RPM:Summary)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Description)
+SAX.characters(RPM is a powerful package mana, 248)
+SAX.endElement(RPM:Description)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Copyright)
+SAX.characters(GPL, 3)
+SAX.endElement(RPM:Copyright)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Changelog)
+SAX.characters(* Sun May 10 1998 Prospector S, 36)
+SAX.characters(<, 1)
+SAX.characters(bugs@redhat.com, 15)
+SAX.characters(>, 1)
+SAX.characters(
+ - translations modified for, 42)
+SAX.endElement(RPM:Changelog)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Sources)
+SAX.characters(rpm-2.5-2.src.rpm, 17)
+SAX.endElement(RPM:Sources)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:SourcesFtp)
+SAX.characters(ftp://ftp.redhat.com/pub/redha, 48)
+SAX.endElement(RPM:SourcesFtp)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:BuildDate)
+SAX.characters(Sun May 10 14:52:32 1998, 24)
+SAX.endElement(RPM:BuildDate)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Date)
+SAX.characters(894826352, 9)
+SAX.endElement(RPM:Date)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Size)
+SAX.characters(850599, 6)
+SAX.endElement(RPM:Size)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:BuildHost)
+SAX.characters(porky.redhat.com, 16)
+SAX.endElement(RPM:BuildHost)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Provides)
+SAX.characters(
+ , 7)
+SAX.startElement(RDF:Bag)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(rpm, 3)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 7)
+SAX.endElement(RDF:Bag)
+SAX.characters(
+ , 5)
+SAX.endElement(RPM:Provides)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Requires)
+SAX.characters(
+ , 7)
+SAX.startElement(RDF:Bag)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(/bin/sh, 7)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(ld-linux.so.2, 13)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(libc.so.6, 9)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(libdb.so.2, 10)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(libz.so.1, 9)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(/bin/bash, 9)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource)
+SAX.characters(/bin/sh, 7)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 7)
+SAX.endElement(RDF:Bag)
+SAX.characters(
+ , 5)
+SAX.endElement(RPM:Requires)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Files)
+SAX.characters(/bin/rpm
+/usr/bin/find-provide, 885)
+SAX.endElement(RPM:Files)
+SAX.characters(
+ , 3)
+SAX.endElement(RDF:Description)
+SAX.characters(
+, 1)
+SAX.endElement(RDF:RDF)
+SAX.endDocument()
diff --git a/result/rdf1.sax2 b/result/rdf1.sax2
new file mode 100644
index 0000000..24822e1
--- /dev/null
+++ b/result/rdf1.sax2
@@ -0,0 +1,186 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(RDF, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 2, xmlns:RPM='http://www.rpm.org/', xmlns:RDF='http://www.w3.org/TR/WD-rdf-syntax#', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(Description, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 0, 1, 0, HREF='ftp:...', 78)
+SAX.characters(
+ , 5)
+SAX.startElementNs(Name, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(rpm, 3)
+SAX.endElementNs(Name, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Version, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(2.5, 3)
+SAX.endElementNs(Version, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Release, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(2, 1)
+SAX.endElementNs(Release, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Arch, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(i386, 4)
+SAX.endElementNs(Arch, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Os, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Linux, 5)
+SAX.endElementNs(Os, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Distribution, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Manhattan , 10)
+SAX.endElementNs(Distribution, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Vendor, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Red Hat Software, 16)
+SAX.endElementNs(Vendor, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Packager, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Red Hat Software , 17)
+SAX.characters(<, 1)
+SAX.characters(bugs@redhat.com, 15)
+SAX.characters(>, 1)
+SAX.endElementNs(Packager, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Group, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Utilities/System, 16)
+SAX.endElementNs(Group, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Summary, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Red Hat Package Manager, 23)
+SAX.endElementNs(Summary, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Description, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(RPM is a powerful package mana, 248)
+SAX.endElementNs(Description, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Copyright, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(GPL, 3)
+SAX.endElementNs(Copyright, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Changelog, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(* Sun May 10 1998 Prospector S, 36)
+SAX.characters(<, 1)
+SAX.characters(bugs@redhat.com, 15)
+SAX.characters(>, 1)
+SAX.characters(
+ - translations modified for, 42)
+SAX.endElementNs(Changelog, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Sources, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(rpm-2.5-2.src.rpm, 17)
+SAX.endElementNs(Sources, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(SourcesFtp, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(ftp://ftp.redhat.com/pub/redha, 48)
+SAX.endElementNs(SourcesFtp, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(BuildDate, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Sun May 10 14:52:32 1998, 24)
+SAX.endElementNs(BuildDate, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Date, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(894826352, 9)
+SAX.endElementNs(Date, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Size, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(850599, 6)
+SAX.endElementNs(Size, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(BuildHost, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(porky.redhat.com, 16)
+SAX.endElementNs(BuildHost, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Provides, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(Bag, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(rpm, 3)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(Bag, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+ , 5)
+SAX.endElementNs(Provides, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Requires, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(Bag, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(/bin/sh, 7)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(ld-linux.so.2, 13)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(libc.so.6, 9)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(libdb.so.2, 10)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(libz.so.1, 9)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(/bin/bash, 9)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(/bin/sh, 7)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(Bag, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+ , 5)
+SAX.endElementNs(Requires, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Files, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(/bin/rpm
+/usr/bin/find-provide, 885)
+SAX.endElementNs(Files, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(Description, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+, 1)
+SAX.endElementNs(RDF, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.endDocument()
diff --git a/result/rdf2 b/result/rdf2
new file mode 100644
index 0000000..284946b
--- /dev/null
+++ b/result/rdf2
@@ -0,0 +1,1899 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#" xmlns:RPM="http://www.rpm.org/">
+ <RDF:Description about="ftp://rufus.w3.org/linux/dld/5.4/i386/RPMS/i386/ncurses4-4.2-3.i386.rpm">
+ <RPM:Name>ncurses4</RPM:Name>
+ <RPM:Version>4.2</RPM:Version>
+ <RPM:Release>3</RPM:Release>
+ <RPM:Arch>i386</RPM:Arch>
+ <RPM:Os>Linux</RPM:Os>
+ <RPM:Distribution>DLD</RPM:Distribution>
+ <RPM:Vendor>delix Computer GmbH</RPM:Vendor>
+ <RPM:Packager>Till Bubeck &lt;bubeck@delix.de&gt;, Ngo Than &lt;than@delix.de&gt;</RPM:Packager>
+ <RPM:Group>Libraries</RPM:Group>
+ <RPM:Summary>Bibliothek zur Ansteuerung von Terminals</RPM:Summary>
+ <RPM:Description>Diese Library stellt dem Programmierer vom Terminal unabh&#xE4;ngige
+Routinen zur Ansteuerung Ihres Bildschirms zur Verf&#xFC;gung, die
+speziell optimiert sind.
+Diese Version ist die 'new curses' (ncurses) Variante und ist der
+anerkannte Ersatz f&#xFC;r die klassische Curses-Library, die nicht mehr
+weiterentwickelt wird.</RPM:Description>
+ <RPM:Copyright>GPL</RPM:Copyright>
+ <RPM:Sources>ncurses4-4.2-3.src.rpm</RPM:Sources>
+ <RPM:BuildDate>Tue May 12 19:30:26 1998</RPM:BuildDate>
+ <RPM:Date>895015826</RPM:Date>
+ <RPM:Size>1373513</RPM:Size>
+ <RPM:BuildHost>erdbeere.delix.de</RPM:BuildHost>
+ <RPM:Provides>
+ <RDF:Bag>
+ <RPM:Resource href="../../../../../resources/ncurses4.rdf">ncurses4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libpanel.so.4.rdf">libpanel.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libncurses.so.4.rdf">libncurses.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libmenu.so.4.rdf">libmenu.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libform.so.4.rdf">libform.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/ncurses.rdf">ncurses</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Provides>
+ <RPM:Files>/lib/libncurses.so.4
+/lib/libncurses.so.4.2
+/usr/doc/ncurses4-4.2-3
+/usr/doc/ncurses4-4.2-3/ANNOUNCE.gz
+/usr/doc/ncurses4-4.2-3/NEWS.gz
+/usr/doc/ncurses4-4.2-3/README.gz
+/usr/doc/ncurses4-4.2-3/TO-DO.gz
+/usr/lib/libform.so.4
+/usr/lib/libform.so.4.2
+/usr/lib/libmenu.so.4
+/usr/lib/libmenu.so.4.2
+/usr/lib/libpanel.so.4
+/usr/lib/libpanel.so.4.2
+/usr/share/ncurses4
+/usr/share/ncurses4/tabset
+/usr/share/ncurses4/tabset/std
+/usr/share/ncurses4/tabset/stdcrt
+/usr/share/ncurses4/tabset/vt100
+/usr/share/ncurses4/tabset/vt300
+/usr/share/ncurses4/terminfo
+/usr/share/ncurses4/terminfo/1
+/usr/share/ncurses4/terminfo/1/1178
+/usr/share/ncurses4/terminfo/1/1730-lm
+/usr/share/ncurses4/terminfo/2
+/usr/share/ncurses4/terminfo/2/2621
+/usr/share/ncurses4/terminfo/2/2621-wl
+/usr/share/ncurses4/terminfo/2/2621A
+/usr/share/ncurses4/terminfo/2/2621a
+/usr/share/ncurses4/terminfo/3
+/usr/share/ncurses4/terminfo/3/386at
+/usr/share/ncurses4/terminfo/3/3b1
+/usr/share/ncurses4/terminfo/4
+/usr/share/ncurses4/terminfo/4/4025ex
+/usr/share/ncurses4/terminfo/4/4027ex
+/usr/share/ncurses4/terminfo/4/4410-w
+/usr/share/ncurses4/terminfo/5
+/usr/share/ncurses4/terminfo/5/5051
+/usr/share/ncurses4/terminfo/5/5410-w
+/usr/share/ncurses4/terminfo/5/5620
+/usr/share/ncurses4/terminfo/5/5630-24
+/usr/share/ncurses4/terminfo/5/5630DMD-24
+/usr/share/ncurses4/terminfo/6
+/usr/share/ncurses4/terminfo/6/630-lm
+/usr/share/ncurses4/terminfo/6/630MTG-24
+/usr/share/ncurses4/terminfo/7
+/usr/share/ncurses4/terminfo/7/730MTG-24
+/usr/share/ncurses4/terminfo/7/730MTG-41
+/usr/share/ncurses4/terminfo/7/730MTG-41r
+/usr/share/ncurses4/terminfo/7/730MTGr
+/usr/share/ncurses4/terminfo/7/730MTGr-24
+/usr/share/ncurses4/terminfo/8
+/usr/share/ncurses4/terminfo/8/8510
+/usr/share/ncurses4/terminfo/9
+/usr/share/ncurses4/terminfo/9/955-hb
+/usr/share/ncurses4/terminfo/9/955-w
+/usr/share/ncurses4/terminfo/P
+/usr/share/ncurses4/terminfo/P/P12
+/usr/share/ncurses4/terminfo/P/P12-M
+/usr/share/ncurses4/terminfo/P/P12-M-W
+/usr/share/ncurses4/terminfo/P/P12-W
+/usr/share/ncurses4/terminfo/P/P14
+/usr/share/ncurses4/terminfo/P/P14-M
+/usr/share/ncurses4/terminfo/P/P14-M-W
+/usr/share/ncurses4/terminfo/P/P14-W
+/usr/share/ncurses4/terminfo/P/P4
+/usr/share/ncurses4/terminfo/P/P5
+/usr/share/ncurses4/terminfo/P/P7
+/usr/share/ncurses4/terminfo/P/P8
+/usr/share/ncurses4/terminfo/P/P8-W
+/usr/share/ncurses4/terminfo/P/P9
+/usr/share/ncurses4/terminfo/P/P9-8
+/usr/share/ncurses4/terminfo/P/P9-8-W
+/usr/share/ncurses4/terminfo/P/P9-W
+/usr/share/ncurses4/terminfo/X
+/usr/share/ncurses4/terminfo/X/X-hpterm
+/usr/share/ncurses4/terminfo/a
+/usr/share/ncurses4/terminfo/a/a210
+/usr/share/ncurses4/terminfo/a/a80
+/usr/share/ncurses4/terminfo/a/a980
+/usr/share/ncurses4/terminfo/a/aa4080
+/usr/share/ncurses4/terminfo/a/aaa
+/usr/share/ncurses4/terminfo/a/aaa+dec
+/usr/share/ncurses4/terminfo/a/aaa+rv
+/usr/share/ncurses4/terminfo/a/aaa+unk
+/usr/share/ncurses4/terminfo/a/aaa-18
+/usr/share/ncurses4/terminfo/a/aaa-18-rv
+/usr/share/ncurses4/terminfo/a/aaa-20
+/usr/share/ncurses4/terminfo/a/aaa-22
+/usr/share/ncurses4/terminfo/a/aaa-24
+/usr/share/ncurses4/terminfo/a/aaa-24-rv
+/usr/share/ncurses4/terminfo/a/aaa-26
+/usr/share/ncurses4/terminfo/a/aaa-28
+/usr/share/ncurses4/terminfo/a/aaa-30
+/usr/share/ncurses4/terminfo/a/aaa-30-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s
+/usr/share/ncurses4/terminfo/a/aaa-30-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv-ct
+/usr/share/ncurses4/terminfo/a/aaa-36
+/usr/share/ncurses4/terminfo/a/aaa-36-rv
+/usr/share/ncurses4/terminfo/a/aaa-40
+/usr/share/ncurses4/terminfo/a/aaa-40-rv
+/usr/share/ncurses4/terminfo/a/aaa-48
+/usr/share/ncurses4/terminfo/a/aaa-48-rv
+/usr/share/ncurses4/terminfo/a/aaa-60
+/usr/share/ncurses4/terminfo/a/aaa-60-dec-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-s
+/usr/share/ncurses4/terminfo/a/aaa-60-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-db
+/usr/share/ncurses4/terminfo/a/aaa-rv
+/usr/share/ncurses4/terminfo/a/aaa-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-rv-unk
+/usr/share/ncurses4/terminfo/a/aaa-s
+/usr/share/ncurses4/terminfo/a/aaa-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-s-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-unk
+/usr/share/ncurses4/terminfo/a/aas1901
+/usr/share/ncurses4/terminfo/a/abm80
+/usr/share/ncurses4/terminfo/a/abm85
+/usr/share/ncurses4/terminfo/a/abm85e
+/usr/share/ncurses4/terminfo/a/abm85h
+/usr/share/ncurses4/terminfo/a/abm85h-old
+/usr/share/ncurses4/terminfo/a/act4
+/usr/share/ncurses4/terminfo/a/act5
+/usr/share/ncurses4/terminfo/a/addrinfo
+/usr/share/ncurses4/terminfo/a/adds980
+/usr/share/ncurses4/terminfo/a/addsviewpoint
+/usr/share/ncurses4/terminfo/a/addsvp60
+/usr/share/ncurses4/terminfo/a/adm+sgr
+/usr/share/ncurses4/terminfo/a/adm1
+/usr/share/ncurses4/terminfo/a/adm11
+/usr/share/ncurses4/terminfo/a/adm1178
+/usr/share/ncurses4/terminfo/a/adm12
+/usr/share/ncurses4/terminfo/a/adm1a
+/usr/share/ncurses4/terminfo/a/adm2
+/usr/share/ncurses4/terminfo/a/adm20
+/usr/share/ncurses4/terminfo/a/adm21
+/usr/share/ncurses4/terminfo/a/adm22
+/usr/share/ncurses4/terminfo/a/adm3
+/usr/share/ncurses4/terminfo/a/adm31
+/usr/share/ncurses4/terminfo/a/adm31-old
+/usr/share/ncurses4/terminfo/a/adm36
+/usr/share/ncurses4/terminfo/a/adm3a
+/usr/share/ncurses4/terminfo/a/adm3a+
+/usr/share/ncurses4/terminfo/a/adm42
+/usr/share/ncurses4/terminfo/a/adm42-ns
+/usr/share/ncurses4/terminfo/a/adm5
+/usr/share/ncurses4/terminfo/a/aepro
+/usr/share/ncurses4/terminfo/a/aixterm-m
+/usr/share/ncurses4/terminfo/a/aixterm-m-old
+/usr/share/ncurses4/terminfo/a/aj
+/usr/share/ncurses4/terminfo/a/aj510
+/usr/share/ncurses4/terminfo/a/aj830
+/usr/share/ncurses4/terminfo/a/aj832
+/usr/share/ncurses4/terminfo/a/alt2
+/usr/share/ncurses4/terminfo/a/alt3
+/usr/share/ncurses4/terminfo/a/alt4
+/usr/share/ncurses4/terminfo/a/alt5
+/usr/share/ncurses4/terminfo/a/alt7
+/usr/share/ncurses4/terminfo/a/alt7pc
+/usr/share/ncurses4/terminfo/a/alto-h19
+/usr/share/ncurses4/terminfo/a/alto-heath
+/usr/share/ncurses4/terminfo/a/altoh19
+/usr/share/ncurses4/terminfo/a/altoheath
+/usr/share/ncurses4/terminfo/a/altos-2
+/usr/share/ncurses4/terminfo/a/altos-3
+/usr/share/ncurses4/terminfo/a/altos-4
+/usr/share/ncurses4/terminfo/a/altos-5
+/usr/share/ncurses4/terminfo/a/altos2
+/usr/share/ncurses4/terminfo/a/altos3
+/usr/share/ncurses4/terminfo/a/altos4
+/usr/share/ncurses4/terminfo/a/altos5
+/usr/share/ncurses4/terminfo/a/altos7
+/usr/share/ncurses4/terminfo/a/altos7pc
+/usr/share/ncurses4/terminfo/a/ambas
+/usr/share/ncurses4/terminfo/a/ambassador
+/usr/share/ncurses4/terminfo/a/amiga
+/usr/share/ncurses4/terminfo/a/amiga-h
+/usr/share/ncurses4/terminfo/a/amp219
+/usr/share/ncurses4/terminfo/a/amp219w
+/usr/share/ncurses4/terminfo/a/ampex-219
+/usr/share/ncurses4/terminfo/a/ampex-219w
+/usr/share/ncurses4/terminfo/a/ampex-232
+/usr/share/ncurses4/terminfo/a/ampex175
+/usr/share/ncurses4/terminfo/a/ampex175-b
+/usr/share/ncurses4/terminfo/a/ampex210
+/usr/share/ncurses4/terminfo/a/ampex219
+/usr/share/ncurses4/terminfo/a/ampex219w
+/usr/share/ncurses4/terminfo/a/ampex232
+/usr/share/ncurses4/terminfo/a/ampex232w
+/usr/share/ncurses4/terminfo/a/ampex80
+/usr/share/ncurses4/terminfo/a/annarbor4080
+/usr/share/ncurses4/terminfo/a/ansi
+/usr/share/ncurses4/terminfo/a/ansi-color-2-emx
+/usr/share/ncurses4/terminfo/a/ansi-color-3-emx
+/usr/share/ncurses4/terminfo/a/ansi-emx
+/usr/share/ncurses4/terminfo/a/ansi-m
+/usr/share/ncurses4/terminfo/a/ansi-mini
+/usr/share/ncurses4/terminfo/a/ansi-mono
+/usr/share/ncurses4/terminfo/a/ansi-nt
+/usr/share/ncurses4/terminfo/a/ansi.sys
+/usr/share/ncurses4/terminfo/a/ansi.sys-old
+/usr/share/ncurses4/terminfo/a/ansi.sysk
+/usr/share/ncurses4/terminfo/a/ansi43m
+/usr/share/ncurses4/terminfo/a/ansi77
+/usr/share/ncurses4/terminfo/a/ansi80x25
+/usr/share/ncurses4/terminfo/a/ansi80x25-mono
+/usr/share/ncurses4/terminfo/a/ansi80x25-raw
+/usr/share/ncurses4/terminfo/a/ansi80x30
+/usr/share/ncurses4/terminfo/a/ansi80x30-mono
+/usr/share/ncurses4/terminfo/a/ansi80x43
+/usr/share/ncurses4/terminfo/a/ansi80x43-mono
+/usr/share/ncurses4/terminfo/a/ansi80x50
+/usr/share/ncurses4/terminfo/a/ansi80x50-mono
+/usr/share/ncurses4/terminfo/a/ansi80x60
+/usr/share/ncurses4/terminfo/a/ansi80x60-mono
+/usr/share/ncurses4/terminfo/a/ansil
+/usr/share/ncurses4/terminfo/a/ansil-mono
+/usr/share/ncurses4/terminfo/a/ansis
+/usr/share/ncurses4/terminfo/a/ansis-mono
+/usr/share/ncurses4/terminfo/a/ansisysk
+/usr/share/ncurses4/terminfo/a/ansiw
+/usr/share/ncurses4/terminfo/a/ap-vm80
+/usr/share/ncurses4/terminfo/a/apl
+/usr/share/ncurses4/terminfo/a/apollo
+/usr/share/ncurses4/terminfo/a/apollo_15P
+/usr/share/ncurses4/terminfo/a/apollo_19L
+/usr/share/ncurses4/terminfo/a/apollo_color
+/usr/share/ncurses4/terminfo/a/apple-80
+/usr/share/ncurses4/terminfo/a/apple-ae
+/usr/share/ncurses4/terminfo/a/apple-soroc
+/usr/share/ncurses4/terminfo/a/apple-uterm
+/usr/share/ncurses4/terminfo/a/apple-uterm-vb
+/usr/share/ncurses4/terminfo/a/apple-videx
+/usr/share/ncurses4/terminfo/a/apple-videx2
+/usr/share/ncurses4/terminfo/a/apple-videx3
+/usr/share/ncurses4/terminfo/a/apple-vm80
+/usr/share/ncurses4/terminfo/a/apple2e
+/usr/share/ncurses4/terminfo/a/apple2e-p
+/usr/share/ncurses4/terminfo/a/apple80p
+/usr/share/ncurses4/terminfo/a/appleII
+/usr/share/ncurses4/terminfo/a/appleIIc
+/usr/share/ncurses4/terminfo/a/appleIIe
+/usr/share/ncurses4/terminfo/a/appleIIgs
+/usr/share/ncurses4/terminfo/a/at386
+/usr/share/ncurses4/terminfo/a/atari
+/usr/share/ncurses4/terminfo/a/att2300
+/usr/share/ncurses4/terminfo/a/att2350
+/usr/share/ncurses4/terminfo/a/att4410
+/usr/share/ncurses4/terminfo/a/att4410-w
+/usr/share/ncurses4/terminfo/a/att4410v1
+/usr/share/ncurses4/terminfo/a/att4410v1-w
+/usr/share/ncurses4/terminfo/a/att4415
+/usr/share/ncurses4/terminfo/a/att4415+nl
+/usr/share/ncurses4/terminfo/a/att4415-nl
+/usr/share/ncurses4/terminfo/a/att4415-rv
+/usr/share/ncurses4/terminfo/a/att4415-rv-nl
+/usr/share/ncurses4/terminfo/a/att4415-w
+/usr/share/ncurses4/terminfo/a/att4415-w-nl
+/usr/share/ncurses4/terminfo/a/att4415-w-rv
+/usr/share/ncurses4/terminfo/a/att4415-w-rv-n
+/usr/share/ncurses4/terminfo/a/att4418
+/usr/share/ncurses4/terminfo/a/att4418-w
+/usr/share/ncurses4/terminfo/a/att4420
+/usr/share/ncurses4/terminfo/a/att4424
+/usr/share/ncurses4/terminfo/a/att4424-1
+/usr/share/ncurses4/terminfo/a/att4424m
+/usr/share/ncurses4/terminfo/a/att4425
+/usr/share/ncurses4/terminfo/a/att4425-nl
+/usr/share/ncurses4/terminfo/a/att4425-w
+/usr/share/ncurses4/terminfo/a/att4426
+/usr/share/ncurses4/terminfo/a/att500
+/usr/share/ncurses4/terminfo/a/att505
+/usr/share/ncurses4/terminfo/a/att505-24
+/usr/share/ncurses4/terminfo/a/att510a
+/usr/share/ncurses4/terminfo/a/att510d
+/usr/share/ncurses4/terminfo/a/att513
+/usr/share/ncurses4/terminfo/a/att5310
+/usr/share/ncurses4/terminfo/a/att5320
+/usr/share/ncurses4/terminfo/a/att5410
+/usr/share/ncurses4/terminfo/a/att5410-w
+/usr/share/ncurses4/terminfo/a/att5410v1
+/usr/share/ncurses4/terminfo/a/att5410v1-w
+/usr/share/ncurses4/terminfo/a/att5418
+/usr/share/ncurses4/terminfo/a/att5418-w
+/usr/share/ncurses4/terminfo/a/att5420
+/usr/share/ncurses4/terminfo/a/att5420+nl
+/usr/share/ncurses4/terminfo/a/att5420-nl
+/usr/share/ncurses4/terminfo/a/att5420-rv
+/usr/share/ncurses4/terminfo/a/att5420-rv-nl
+/usr/share/ncurses4/terminfo/a/att5420-w
+/usr/share/ncurses4/terminfo/a/att5420-w-nl
+/usr/share/ncurses4/terminfo/a/att5420-w-rv
+/usr/share/ncurses4/terminfo/a/att5420-w-rv-n
+/usr/share/ncurses4/terminfo/a/att5420_2
+/usr/share/ncurses4/terminfo/a/att5420_2-w
+/usr/share/ncurses4/terminfo/a/att5425
+/usr/share/ncurses4/terminfo/a/att5425-nl
+/usr/share/ncurses4/terminfo/a/att5425-w
+/usr/share/ncurses4/terminfo/a/att5430
+/usr/share/ncurses4/terminfo/a/att5620
+/usr/share/ncurses4/terminfo/a/att5620-1
+/usr/share/ncurses4/terminfo/a/att5620-24
+/usr/share/ncurses4/terminfo/a/att5620-34
+/usr/share/ncurses4/terminfo/a/att5620-s
+/usr/share/ncurses4/terminfo/a/att605
+/usr/share/ncurses4/terminfo/a/att605-pc
+/usr/share/ncurses4/terminfo/a/att605-w
+/usr/share/ncurses4/terminfo/a/att610
+/usr/share/ncurses4/terminfo/a/att610-103k
+/usr/share/ncurses4/terminfo/a/att610-103k-w
+/usr/share/ncurses4/terminfo/a/att610-w
+/usr/share/ncurses4/terminfo/a/att615
+/usr/share/ncurses4/terminfo/a/att615-103k
+/usr/share/ncurses4/terminfo/a/att615-103k-w
+/usr/share/ncurses4/terminfo/a/att615-w
+/usr/share/ncurses4/terminfo/a/att620
+/usr/share/ncurses4/terminfo/a/att620-103k
+/usr/share/ncurses4/terminfo/a/att620-103k-w
+/usr/share/ncurses4/terminfo/a/att620-w
+/usr/share/ncurses4/terminfo/a/att630
+/usr/share/ncurses4/terminfo/a/att630-24
+/usr/share/ncurses4/terminfo/a/att6386
+/usr/share/ncurses4/terminfo/a/att730
+/usr/share/ncurses4/terminfo/a/att730-24
+/usr/share/ncurses4/terminfo/a/att730-41
+/usr/share/ncurses4/terminfo/a/att7300
+/usr/share/ncurses4/terminfo/a/att730r
+/usr/share/ncurses4/terminfo/a/att730r-24
+/usr/share/ncurses4/terminfo/a/att730r-41
+/usr/share/ncurses4/terminfo/a/avatar
+/usr/share/ncurses4/terminfo/a/avatar0
+/usr/share/ncurses4/terminfo/a/avatar0+
+/usr/share/ncurses4/terminfo/a/avatar1
+/usr/share/ncurses4/terminfo/a/avt
+/usr/share/ncurses4/terminfo/a/avt+s
+/usr/share/ncurses4/terminfo/a/avt-ns
+/usr/share/ncurses4/terminfo/a/avt-rv
+/usr/share/ncurses4/terminfo/a/avt-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-rv-s
+/usr/share/ncurses4/terminfo/a/avt-s
+/usr/share/ncurses4/terminfo/a/avt-w
+/usr/share/ncurses4/terminfo/a/avt-w-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv
+/usr/share/ncurses4/terminfo/a/avt-w-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv-s
+/usr/share/ncurses4/terminfo/a/avt-w-s
+/usr/share/ncurses4/terminfo/a/aws
+/usr/share/ncurses4/terminfo/a/awsc
+/usr/share/ncurses4/terminfo/b
+/usr/share/ncurses4/terminfo/b/b-128
+/usr/share/ncurses4/terminfo/b/bantam
+/usr/share/ncurses4/terminfo/b/basic4
+/usr/share/ncurses4/terminfo/b/basis
+/usr/share/ncurses4/terminfo/b/bct510a
+/usr/share/ncurses4/terminfo/b/bct510d
+/usr/share/ncurses4/terminfo/b/beacon
+/usr/share/ncurses4/terminfo/b/bee
+/usr/share/ncurses4/terminfo/b/beehive
+/usr/share/ncurses4/terminfo/b/beehive3
+/usr/share/ncurses4/terminfo/b/beehive4
+/usr/share/ncurses4/terminfo/b/beehiveIIIm
+/usr/share/ncurses4/terminfo/b/beterm
+/usr/share/ncurses4/terminfo/b/bg1.25
+/usr/share/ncurses4/terminfo/b/bg1.25nv
+/usr/share/ncurses4/terminfo/b/bg1.25rv
+/usr/share/ncurses4/terminfo/b/bg2.0
+/usr/share/ncurses4/terminfo/b/bg2.0nv
+/usr/share/ncurses4/terminfo/b/bg2.0rv
+/usr/share/ncurses4/terminfo/b/bg3.10
+/usr/share/ncurses4/terminfo/b/bg3.10nv
+/usr/share/ncurses4/terminfo/b/bg3.10rv
+/usr/share/ncurses4/terminfo/b/bh3m
+/usr/share/ncurses4/terminfo/b/bh4
+/usr/share/ncurses4/terminfo/b/bitgraph
+/usr/share/ncurses4/terminfo/b/blit
+/usr/share/ncurses4/terminfo/b/bobcat
+/usr/share/ncurses4/terminfo/b/bsdos
+/usr/share/ncurses4/terminfo/b/bsdos-bold
+/usr/share/ncurses4/terminfo/c
+/usr/share/ncurses4/terminfo/c/c100
+/usr/share/ncurses4/terminfo/c/c100-1p
+/usr/share/ncurses4/terminfo/c/c100-4p
+/usr/share/ncurses4/terminfo/c/c100-rv
+/usr/share/ncurses4/terminfo/c/c100-rv-4p
+/usr/share/ncurses4/terminfo/c/c104
+/usr/share/ncurses4/terminfo/c/c108
+/usr/share/ncurses4/terminfo/c/c108-4p
+/usr/share/ncurses4/terminfo/c/c108-8p
+/usr/share/ncurses4/terminfo/c/c108-rv
+/usr/share/ncurses4/terminfo/c/c108-rv-4p
+/usr/share/ncurses4/terminfo/c/c108-rv-8p
+/usr/share/ncurses4/terminfo/c/c108-w
+/usr/share/ncurses4/terminfo/c/c108-w-8p
+/usr/share/ncurses4/terminfo/c/c300
+/usr/share/ncurses4/terminfo/c/c301
+/usr/share/ncurses4/terminfo/c/c321
+/usr/share/ncurses4/terminfo/c/ca22851
+/usr/share/ncurses4/terminfo/c/cad68-2
+/usr/share/ncurses4/terminfo/c/cad68-3
+/usr/share/ncurses4/terminfo/c/cbblit
+/usr/share/ncurses4/terminfo/c/cbunix
+/usr/share/ncurses4/terminfo/c/cci
+/usr/share/ncurses4/terminfo/c/cci1
+/usr/share/ncurses4/terminfo/c/cdc456
+/usr/share/ncurses4/terminfo/c/cdc721
+/usr/share/ncurses4/terminfo/c/cdc721-esc
+/usr/share/ncurses4/terminfo/c/cdc721ll
+/usr/share/ncurses4/terminfo/c/cdc752
+/usr/share/ncurses4/terminfo/c/cdc756
+/usr/share/ncurses4/terminfo/c/cg7900
+/usr/share/ncurses4/terminfo/c/cgc2
+/usr/share/ncurses4/terminfo/c/cgc3
+/usr/share/ncurses4/terminfo/c/chromatics
+/usr/share/ncurses4/terminfo/c/ci8510
+/usr/share/ncurses4/terminfo/c/cit-80
+/usr/share/ncurses4/terminfo/c/cit101
+/usr/share/ncurses4/terminfo/c/cit101e
+/usr/share/ncurses4/terminfo/c/cit101e-132
+/usr/share/ncurses4/terminfo/c/cit101e-n
+/usr/share/ncurses4/terminfo/c/cit101e-n132
+/usr/share/ncurses4/terminfo/c/cit101e-rv
+/usr/share/ncurses4/terminfo/c/cit500
+/usr/share/ncurses4/terminfo/c/cit80
+/usr/share/ncurses4/terminfo/c/citc
+/usr/share/ncurses4/terminfo/c/citoh
+/usr/share/ncurses4/terminfo/c/citoh-6lpi
+/usr/share/ncurses4/terminfo/c/citoh-8lpi
+/usr/share/ncurses4/terminfo/c/citoh-comp
+/usr/share/ncurses4/terminfo/c/citoh-elite
+/usr/share/ncurses4/terminfo/c/citoh-pica
+/usr/share/ncurses4/terminfo/c/citoh-prop
+/usr/share/ncurses4/terminfo/c/citoh-ps
+/usr/share/ncurses4/terminfo/c/coco3
+/usr/share/ncurses4/terminfo/c/coherent
+/usr/share/ncurses4/terminfo/c/color_xterm
+/usr/share/ncurses4/terminfo/c/colorscan
+/usr/share/ncurses4/terminfo/c/commodore
+/usr/share/ncurses4/terminfo/c/concept
+/usr/share/ncurses4/terminfo/c/concept-avt
+/usr/share/ncurses4/terminfo/c/concept100
+/usr/share/ncurses4/terminfo/c/concept100-rv
+/usr/share/ncurses4/terminfo/c/concept108
+/usr/share/ncurses4/terminfo/c/concept108-4p
+/usr/share/ncurses4/terminfo/c/concept108-8p
+/usr/share/ncurses4/terminfo/c/concept108-w-8
+/usr/share/ncurses4/terminfo/c/concept108-w8p
+/usr/share/ncurses4/terminfo/c/concept108rv4p
+/usr/share/ncurses4/terminfo/c/cons25
+/usr/share/ncurses4/terminfo/c/cons25-iso-m
+/usr/share/ncurses4/terminfo/c/cons25-iso8859
+/usr/share/ncurses4/terminfo/c/cons25-koi8-r
+/usr/share/ncurses4/terminfo/c/cons25-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons25-m
+/usr/share/ncurses4/terminfo/c/cons25l1
+/usr/share/ncurses4/terminfo/c/cons25l1-m
+/usr/share/ncurses4/terminfo/c/cons25r
+/usr/share/ncurses4/terminfo/c/cons25r-m
+/usr/share/ncurses4/terminfo/c/cons25w
+/usr/share/ncurses4/terminfo/c/cons30
+/usr/share/ncurses4/terminfo/c/cons30-m
+/usr/share/ncurses4/terminfo/c/cons43
+/usr/share/ncurses4/terminfo/c/cons43-m
+/usr/share/ncurses4/terminfo/c/cons50
+/usr/share/ncurses4/terminfo/c/cons50-iso-m
+/usr/share/ncurses4/terminfo/c/cons50-iso8859
+/usr/share/ncurses4/terminfo/c/cons50-koi8r
+/usr/share/ncurses4/terminfo/c/cons50-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons50-m
+/usr/share/ncurses4/terminfo/c/cons50l1
+/usr/share/ncurses4/terminfo/c/cons50l1-m
+/usr/share/ncurses4/terminfo/c/cons50r
+/usr/share/ncurses4/terminfo/c/cons50r-m
+/usr/share/ncurses4/terminfo/c/cons60
+/usr/share/ncurses4/terminfo/c/cons60-iso
+/usr/share/ncurses4/terminfo/c/cons60-iso-m
+/usr/share/ncurses4/terminfo/c/cons60-koi8r
+/usr/share/ncurses4/terminfo/c/cons60-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons60-m
+/usr/share/ncurses4/terminfo/c/cons60l1
+/usr/share/ncurses4/terminfo/c/cons60l1-m
+/usr/share/ncurses4/terminfo/c/cons60r
+/usr/share/ncurses4/terminfo/c/cons60r-m
+/usr/share/ncurses4/terminfo/c/contel300
+/usr/share/ncurses4/terminfo/c/contel301
+/usr/share/ncurses4/terminfo/c/contel320
+/usr/share/ncurses4/terminfo/c/contel321
+/usr/share/ncurses4/terminfo/c/cops
+/usr/share/ncurses4/terminfo/c/cops-10
+/usr/share/ncurses4/terminfo/c/cops10
+/usr/share/ncurses4/terminfo/c/cs10
+/usr/share/ncurses4/terminfo/c/cs10-w
+/usr/share/ncurses4/terminfo/c/ct82
+/usr/share/ncurses4/terminfo/c/ct8500
+/usr/share/ncurses4/terminfo/c/ctrm
+/usr/share/ncurses4/terminfo/c/cx
+/usr/share/ncurses4/terminfo/c/cx100
+/usr/share/ncurses4/terminfo/c/cyb110
+/usr/share/ncurses4/terminfo/c/cyb83
+/usr/share/ncurses4/terminfo/d
+/usr/share/ncurses4/terminfo/d/d132
+/usr/share/ncurses4/terminfo/d/d80
+/usr/share/ncurses4/terminfo/d/d800
+/usr/share/ncurses4/terminfo/d/datagraphix
+/usr/share/ncurses4/terminfo/d/datamedia2500
+/usr/share/ncurses4/terminfo/d/datapoint
+/usr/share/ncurses4/terminfo/d/dataspeed40
+/usr/share/ncurses4/terminfo/d/dd5000
+/usr/share/ncurses4/terminfo/d/ddr
+/usr/share/ncurses4/terminfo/d/ddr3180
+/usr/share/ncurses4/terminfo/d/dec-vt100
+/usr/share/ncurses4/terminfo/d/dec-vt220
+/usr/share/ncurses4/terminfo/d/dec-vt330
+/usr/share/ncurses4/terminfo/d/dec-vt340
+/usr/share/ncurses4/terminfo/d/dec-vt400
+/usr/share/ncurses4/terminfo/d/decpro
+/usr/share/ncurses4/terminfo/d/decwriter
+/usr/share/ncurses4/terminfo/d/delta
+/usr/share/ncurses4/terminfo/d/dg-ansi
+/usr/share/ncurses4/terminfo/d/dg100
+/usr/share/ncurses4/terminfo/d/dg200
+/usr/share/ncurses4/terminfo/d/dg210
+/usr/share/ncurses4/terminfo/d/dg211
+/usr/share/ncurses4/terminfo/d/dg450
+/usr/share/ncurses4/terminfo/d/dg460-ansi
+/usr/share/ncurses4/terminfo/d/dg6053
+/usr/share/ncurses4/terminfo/d/dg6134
+/usr/share/ncurses4/terminfo/d/diablo
+/usr/share/ncurses4/terminfo/d/diablo-lm
+/usr/share/ncurses4/terminfo/d/diablo1620
+/usr/share/ncurses4/terminfo/d/diablo1620-m8
+/usr/share/ncurses4/terminfo/d/diablo1640
+/usr/share/ncurses4/terminfo/d/diablo1640-lm
+/usr/share/ncurses4/terminfo/d/diablo1640-m8
+/usr/share/ncurses4/terminfo/d/diablo1720
+/usr/share/ncurses4/terminfo/d/diablo1730
+/usr/share/ncurses4/terminfo/d/diablo1740
+/usr/share/ncurses4/terminfo/d/diablo1740-lm
+/usr/share/ncurses4/terminfo/d/diablo450
+/usr/share/ncurses4/terminfo/d/diablo630
+/usr/share/ncurses4/terminfo/d/dialogue
+/usr/share/ncurses4/terminfo/d/dialogue80
+/usr/share/ncurses4/terminfo/d/digilog
+/usr/share/ncurses4/terminfo/d/dku7003
+/usr/share/ncurses4/terminfo/d/dku7003-dumb
+/usr/share/ncurses4/terminfo/d/dm1520
+/usr/share/ncurses4/terminfo/d/dm1521
+/usr/share/ncurses4/terminfo/d/dm2500
+/usr/share/ncurses4/terminfo/d/dm3025
+/usr/share/ncurses4/terminfo/d/dm3045
+/usr/share/ncurses4/terminfo/d/dm80
+/usr/share/ncurses4/terminfo/d/dm80w
+/usr/share/ncurses4/terminfo/d/dmchat
+/usr/share/ncurses4/terminfo/d/dmd
+/usr/share/ncurses4/terminfo/d/dmd-24
+/usr/share/ncurses4/terminfo/d/dmd-34
+/usr/share/ncurses4/terminfo/d/dmd1
+/usr/share/ncurses4/terminfo/d/dmdt80
+/usr/share/ncurses4/terminfo/d/dmdt80w
+/usr/share/ncurses4/terminfo/d/dmterm
+/usr/share/ncurses4/terminfo/d/dp3360
+/usr/share/ncurses4/terminfo/d/dp8242
+/usr/share/ncurses4/terminfo/d/ds40
+/usr/share/ncurses4/terminfo/d/ds40-2
+/usr/share/ncurses4/terminfo/d/dt-100
+/usr/share/ncurses4/terminfo/d/dt-100w
+/usr/share/ncurses4/terminfo/d/dt100
+/usr/share/ncurses4/terminfo/d/dt100w
+/usr/share/ncurses4/terminfo/d/dt110
+/usr/share/ncurses4/terminfo/d/dt80
+/usr/share/ncurses4/terminfo/d/dt80-sas
+/usr/share/ncurses4/terminfo/d/dt80w
+/usr/share/ncurses4/terminfo/d/dtc300s
+/usr/share/ncurses4/terminfo/d/dtc382
+/usr/share/ncurses4/terminfo/d/dtterm
+/usr/share/ncurses4/terminfo/d/dumb
+/usr/share/ncurses4/terminfo/d/dw
+/usr/share/ncurses4/terminfo/d/dw1
+/usr/share/ncurses4/terminfo/d/dw2
+/usr/share/ncurses4/terminfo/d/dw3
+/usr/share/ncurses4/terminfo/d/dw4
+/usr/share/ncurses4/terminfo/d/dwk
+/usr/share/ncurses4/terminfo/d/dwk-vt
+/usr/share/ncurses4/terminfo/e
+/usr/share/ncurses4/terminfo/e/ecma+color
+/usr/share/ncurses4/terminfo/e/ecma+sgr
+/usr/share/ncurses4/terminfo/e/emots
+/usr/share/ncurses4/terminfo/e/emu
+/usr/share/ncurses4/terminfo/e/env230
+/usr/share/ncurses4/terminfo/e/envision230
+/usr/share/ncurses4/terminfo/e/ep40
+/usr/share/ncurses4/terminfo/e/ep4000
+/usr/share/ncurses4/terminfo/e/ep4080
+/usr/share/ncurses4/terminfo/e/ep48
+/usr/share/ncurses4/terminfo/e/ergo4000
+/usr/share/ncurses4/terminfo/e/esprit
+/usr/share/ncurses4/terminfo/e/esprit-am
+/usr/share/ncurses4/terminfo/e/eterm
+/usr/share/ncurses4/terminfo/e/ex155
+/usr/share/ncurses4/terminfo/e/excel62
+/usr/share/ncurses4/terminfo/e/excel62-rv
+/usr/share/ncurses4/terminfo/e/excel62-w
+/usr/share/ncurses4/terminfo/e/excel64
+/usr/share/ncurses4/terminfo/e/excel64-rv
+/usr/share/ncurses4/terminfo/e/excel64-w
+/usr/share/ncurses4/terminfo/e/exec80
+/usr/share/ncurses4/terminfo/f
+/usr/share/ncurses4/terminfo/f/f100
+/usr/share/ncurses4/terminfo/f/f100-rv
+/usr/share/ncurses4/terminfo/f/f110
+/usr/share/ncurses4/terminfo/f/f110-14
+/usr/share/ncurses4/terminfo/f/f110-14w
+/usr/share/ncurses4/terminfo/f/f110-w
+/usr/share/ncurses4/terminfo/f/f1720
+/usr/share/ncurses4/terminfo/f/f1720a
+/usr/share/ncurses4/terminfo/f/f200
+/usr/share/ncurses4/terminfo/f/f200-w
+/usr/share/ncurses4/terminfo/f/f200vi
+/usr/share/ncurses4/terminfo/f/f200vi-w
+/usr/share/ncurses4/terminfo/f/falco
+/usr/share/ncurses4/terminfo/f/falco-p
+/usr/share/ncurses4/terminfo/f/fenix
+/usr/share/ncurses4/terminfo/f/fenixw
+/usr/share/ncurses4/terminfo/f/fixterm
+/usr/share/ncurses4/terminfo/f/fortune
+/usr/share/ncurses4/terminfo/f/fos
+/usr/share/ncurses4/terminfo/f/fox
+/usr/share/ncurses4/terminfo/f/freedom
+/usr/share/ncurses4/terminfo/f/freedom-rv
+/usr/share/ncurses4/terminfo/f/freedom100
+/usr/share/ncurses4/terminfo/f/freedom110
+/usr/share/ncurses4/terminfo/f/freedom200
+/usr/share/ncurses4/terminfo/g
+/usr/share/ncurses4/terminfo/g/gator
+/usr/share/ncurses4/terminfo/g/gator-52
+/usr/share/ncurses4/terminfo/g/gator-52t
+/usr/share/ncurses4/terminfo/g/gator-t
+/usr/share/ncurses4/terminfo/g/gigi
+/usr/share/ncurses4/terminfo/g/glasstty
+/usr/share/ncurses4/terminfo/g/go-225
+/usr/share/ncurses4/terminfo/g/go140
+/usr/share/ncurses4/terminfo/g/go140w
+/usr/share/ncurses4/terminfo/g/go225
+/usr/share/ncurses4/terminfo/g/graphos
+/usr/share/ncurses4/terminfo/g/graphos-30
+/usr/share/ncurses4/terminfo/g/gs5430
+/usr/share/ncurses4/terminfo/g/gs5430-22
+/usr/share/ncurses4/terminfo/g/gs5430-24
+/usr/share/ncurses4/terminfo/g/gs6300
+/usr/share/ncurses4/terminfo/g/gsi
+/usr/share/ncurses4/terminfo/g/gt100
+/usr/share/ncurses4/terminfo/g/gt100a
+/usr/share/ncurses4/terminfo/g/gt40
+/usr/share/ncurses4/terminfo/g/gt42
+/usr/share/ncurses4/terminfo/g/guru
+/usr/share/ncurses4/terminfo/g/guru+rv
+/usr/share/ncurses4/terminfo/g/guru+s
+/usr/share/ncurses4/terminfo/g/guru+unk
+/usr/share/ncurses4/terminfo/g/guru-24
+/usr/share/ncurses4/terminfo/g/guru-33
+/usr/share/ncurses4/terminfo/g/guru-33-rv
+/usr/share/ncurses4/terminfo/g/guru-33-s
+/usr/share/ncurses4/terminfo/g/guru-44
+/usr/share/ncurses4/terminfo/g/guru-44-s
+/usr/share/ncurses4/terminfo/g/guru-76
+/usr/share/ncurses4/terminfo/g/guru-76-lp
+/usr/share/ncurses4/terminfo/g/guru-76-s
+/usr/share/ncurses4/terminfo/g/guru-76-w
+/usr/share/ncurses4/terminfo/g/guru-76-w-s
+/usr/share/ncurses4/terminfo/g/guru-76-wm
+/usr/share/ncurses4/terminfo/g/guru-lp
+/usr/share/ncurses4/terminfo/g/guru-nctxt
+/usr/share/ncurses4/terminfo/g/guru-rv
+/usr/share/ncurses4/terminfo/g/guru-s
+/usr/share/ncurses4/terminfo/h
+/usr/share/ncurses4/terminfo/h/h-100
+/usr/share/ncurses4/terminfo/h/h-100bw
+/usr/share/ncurses4/terminfo/h/h100
+/usr/share/ncurses4/terminfo/h/h100bw
+/usr/share/ncurses4/terminfo/h/h19
+/usr/share/ncurses4/terminfo/h/h19-a
+/usr/share/ncurses4/terminfo/h/h19-b
+/usr/share/ncurses4/terminfo/h/h19-bs
+/usr/share/ncurses4/terminfo/h/h19-g
+/usr/share/ncurses4/terminfo/h/h19-smul
+/usr/share/ncurses4/terminfo/h/h19-u
+/usr/share/ncurses4/terminfo/h/h19-us
+/usr/share/ncurses4/terminfo/h/h19a
+/usr/share/ncurses4/terminfo/h/h19g
+/usr/share/ncurses4/terminfo/h/h19k
+/usr/share/ncurses4/terminfo/h/h19kermit
+/usr/share/ncurses4/terminfo/h/h19us
+/usr/share/ncurses4/terminfo/h/h29a-kc-bc
+/usr/share/ncurses4/terminfo/h/h29a-kc-uc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-bc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-uc
+/usr/share/ncurses4/terminfo/h/h80
+/usr/share/ncurses4/terminfo/h/ha8675
+/usr/share/ncurses4/terminfo/h/ha8686
+/usr/share/ncurses4/terminfo/h/hazel
+/usr/share/ncurses4/terminfo/h/hds200
+/usr/share/ncurses4/terminfo/h/he80
+/usr/share/ncurses4/terminfo/h/heath
+/usr/share/ncurses4/terminfo/h/heath-19
+/usr/share/ncurses4/terminfo/h/heath-ansi
+/usr/share/ncurses4/terminfo/h/heathkit
+/usr/share/ncurses4/terminfo/h/heathkit-a
+/usr/share/ncurses4/terminfo/h/hft
+/usr/share/ncurses4/terminfo/h/hft-c
+/usr/share/ncurses4/terminfo/h/hirez100
+/usr/share/ncurses4/terminfo/h/hirez100-w
+/usr/share/ncurses4/terminfo/h/hmod1
+/usr/share/ncurses4/terminfo/h/hp
+/usr/share/ncurses4/terminfo/h/hp+arrows
+/usr/share/ncurses4/terminfo/h/hp+color
+/usr/share/ncurses4/terminfo/h/hp+labels
+/usr/share/ncurses4/terminfo/h/hp+pfk+arrows
+/usr/share/ncurses4/terminfo/h/hp+pfk+cr
+/usr/share/ncurses4/terminfo/h/hp+pfk-cr
+/usr/share/ncurses4/terminfo/h/hp+printer
+/usr/share/ncurses4/terminfo/h/hp110
+/usr/share/ncurses4/terminfo/h/hp150
+/usr/share/ncurses4/terminfo/h/hp2
+/usr/share/ncurses4/terminfo/h/hp236
+/usr/share/ncurses4/terminfo/h/hp2382
+/usr/share/ncurses4/terminfo/h/hp2382a
+/usr/share/ncurses4/terminfo/h/hp2392
+/usr/share/ncurses4/terminfo/h/hp2397
+/usr/share/ncurses4/terminfo/h/hp2397a
+/usr/share/ncurses4/terminfo/h/hp2621
+/usr/share/ncurses4/terminfo/h/hp2621-48
+/usr/share/ncurses4/terminfo/h/hp2621-a
+/usr/share/ncurses4/terminfo/h/hp2621-ba
+/usr/share/ncurses4/terminfo/h/hp2621-fl
+/usr/share/ncurses4/terminfo/h/hp2621-k45
+/usr/share/ncurses4/terminfo/h/hp2621-nl
+/usr/share/ncurses4/terminfo/h/hp2621-nt
+/usr/share/ncurses4/terminfo/h/hp2621-wl
+/usr/share/ncurses4/terminfo/h/hp2621A
+/usr/share/ncurses4/terminfo/h/hp2621a
+/usr/share/ncurses4/terminfo/h/hp2621a-a
+/usr/share/ncurses4/terminfo/h/hp2621b
+/usr/share/ncurses4/terminfo/h/hp2621b-kx
+/usr/share/ncurses4/terminfo/h/hp2621b-kx-p
+/usr/share/ncurses4/terminfo/h/hp2621b-p
+/usr/share/ncurses4/terminfo/h/hp2621k45
+/usr/share/ncurses4/terminfo/h/hp2621p
+/usr/share/ncurses4/terminfo/h/hp2621p-a
+/usr/share/ncurses4/terminfo/h/hp2622
+/usr/share/ncurses4/terminfo/h/hp2622a
+/usr/share/ncurses4/terminfo/h/hp2623
+/usr/share/ncurses4/terminfo/h/hp2623a
+/usr/share/ncurses4/terminfo/h/hp2624
+/usr/share/ncurses4/terminfo/h/hp2624-10p
+/usr/share/ncurses4/terminfo/h/hp2624a
+/usr/share/ncurses4/terminfo/h/hp2624a-10p
+/usr/share/ncurses4/terminfo/h/hp2624b
+/usr/share/ncurses4/terminfo/h/hp2624b-10p
+/usr/share/ncurses4/terminfo/h/hp2624b-10p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-p
+/usr/share/ncurses4/terminfo/h/hp2626
+/usr/share/ncurses4/terminfo/h/hp2626-12
+/usr/share/ncurses4/terminfo/h/hp2626-12-s
+/usr/share/ncurses4/terminfo/h/hp2626-12x40
+/usr/share/ncurses4/terminfo/h/hp2626-ns
+/usr/share/ncurses4/terminfo/h/hp2626-s
+/usr/share/ncurses4/terminfo/h/hp2626-x40
+/usr/share/ncurses4/terminfo/h/hp2626a
+/usr/share/ncurses4/terminfo/h/hp2626p
+/usr/share/ncurses4/terminfo/h/hp2627a
+/usr/share/ncurses4/terminfo/h/hp2627a-rev
+/usr/share/ncurses4/terminfo/h/hp2627c
+/usr/share/ncurses4/terminfo/h/hp262x
+/usr/share/ncurses4/terminfo/h/hp2640a
+/usr/share/ncurses4/terminfo/h/hp2640b
+/usr/share/ncurses4/terminfo/h/hp2641a
+/usr/share/ncurses4/terminfo/h/hp2644a
+/usr/share/ncurses4/terminfo/h/hp2645
+/usr/share/ncurses4/terminfo/h/hp2645a
+/usr/share/ncurses4/terminfo/h/hp2647a
+/usr/share/ncurses4/terminfo/h/hp2648
+/usr/share/ncurses4/terminfo/h/hp2648a
+/usr/share/ncurses4/terminfo/h/hp300h
+/usr/share/ncurses4/terminfo/h/hp45
+/usr/share/ncurses4/terminfo/h/hp700
+/usr/share/ncurses4/terminfo/h/hp700-wy
+/usr/share/ncurses4/terminfo/h/hp70092
+/usr/share/ncurses4/terminfo/h/hp70092A
+/usr/share/ncurses4/terminfo/h/hp70092a
+/usr/share/ncurses4/terminfo/h/hp9837
+/usr/share/ncurses4/terminfo/h/hp9845
+/usr/share/ncurses4/terminfo/h/hp98550
+/usr/share/ncurses4/terminfo/h/hp98550a
+/usr/share/ncurses4/terminfo/h/hp98720
+/usr/share/ncurses4/terminfo/h/hp98721
+/usr/share/ncurses4/terminfo/h/hpansi
+/usr/share/ncurses4/terminfo/h/hpex
+/usr/share/ncurses4/terminfo/h/hpex2
+/usr/share/ncurses4/terminfo/h/hpgeneric
+/usr/share/ncurses4/terminfo/h/hpsub
+/usr/share/ncurses4/terminfo/h/hpterm
+/usr/share/ncurses4/terminfo/h/htx11
+/usr/share/ncurses4/terminfo/h/hz1000
+/usr/share/ncurses4/terminfo/h/hz1420
+/usr/share/ncurses4/terminfo/h/hz1500
+/usr/share/ncurses4/terminfo/h/hz1510
+/usr/share/ncurses4/terminfo/h/hz1520
+/usr/share/ncurses4/terminfo/h/hz1520-noesc
+/usr/share/ncurses4/terminfo/h/hz1552
+/usr/share/ncurses4/terminfo/h/hz1552-rv
+/usr/share/ncurses4/terminfo/h/hz2000
+/usr/share/ncurses4/terminfo/i
+/usr/share/ncurses4/terminfo/i/i100
+/usr/share/ncurses4/terminfo/i/i3101
+/usr/share/ncurses4/terminfo/i/i3151
+/usr/share/ncurses4/terminfo/i/i3164
+/usr/share/ncurses4/terminfo/i/i400
+/usr/share/ncurses4/terminfo/i/ibcs2
+/usr/share/ncurses4/terminfo/i/ibm-apl
+/usr/share/ncurses4/terminfo/i/ibm-pc
+/usr/share/ncurses4/terminfo/i/ibm-system1
+/usr/share/ncurses4/terminfo/i/ibm3101
+/usr/share/ncurses4/terminfo/i/ibm3151
+/usr/share/ncurses4/terminfo/i/ibm3161
+/usr/share/ncurses4/terminfo/i/ibm3163
+/usr/share/ncurses4/terminfo/i/ibm3164
+/usr/share/ncurses4/terminfo/i/ibm327x
+/usr/share/ncurses4/terminfo/i/ibm5051
+/usr/share/ncurses4/terminfo/i/ibm5081
+/usr/share/ncurses4/terminfo/i/ibm5081-c
+/usr/share/ncurses4/terminfo/i/ibm5151
+/usr/share/ncurses4/terminfo/i/ibm5154
+/usr/share/ncurses4/terminfo/i/ibm5154-c
+/usr/share/ncurses4/terminfo/i/ibm6153
+/usr/share/ncurses4/terminfo/i/ibm6154
+/usr/share/ncurses4/terminfo/i/ibm6154-c
+/usr/share/ncurses4/terminfo/i/ibm6155
+/usr/share/ncurses4/terminfo/i/ibm8512
+/usr/share/ncurses4/terminfo/i/ibm8513
+/usr/share/ncurses4/terminfo/i/ibm8514
+/usr/share/ncurses4/terminfo/i/ibm8514-c
+/usr/share/ncurses4/terminfo/i/ibmaed
+/usr/share/ncurses4/terminfo/i/ibmapa16
+/usr/share/ncurses4/terminfo/i/ibmapa8
+/usr/share/ncurses4/terminfo/i/ibmapa8c
+/usr/share/ncurses4/terminfo/i/ibmapa8c-c
+/usr/share/ncurses4/terminfo/i/ibmega
+/usr/share/ncurses4/terminfo/i/ibmega-c
+/usr/share/ncurses4/terminfo/i/ibmmono
+/usr/share/ncurses4/terminfo/i/ibmmpel
+/usr/share/ncurses4/terminfo/i/ibmmpel-c
+/usr/share/ncurses4/terminfo/i/ibmpc
+/usr/share/ncurses4/terminfo/i/ibmpc3
+/usr/share/ncurses4/terminfo/i/ibmpc3r
+/usr/share/ncurses4/terminfo/i/ibmpc3r-mono
+/usr/share/ncurses4/terminfo/i/ibmpcx
+/usr/share/ncurses4/terminfo/i/ibmvga
+/usr/share/ncurses4/terminfo/i/ibmvga-c
+/usr/share/ncurses4/terminfo/i/ibmx
+/usr/share/ncurses4/terminfo/i/ifmr
+/usr/share/ncurses4/terminfo/i/ims-ansi
+/usr/share/ncurses4/terminfo/i/ims950
+/usr/share/ncurses4/terminfo/i/ims950-b
+/usr/share/ncurses4/terminfo/i/ims950-rv
+/usr/share/ncurses4/terminfo/i/infoton
+/usr/share/ncurses4/terminfo/i/intertec
+/usr/share/ncurses4/terminfo/i/intertube
+/usr/share/ncurses4/terminfo/i/intertube2
+/usr/share/ncurses4/terminfo/i/intext
+/usr/share/ncurses4/terminfo/i/intext2
+/usr/share/ncurses4/terminfo/i/intextii
+/usr/share/ncurses4/terminfo/i/ips
+/usr/share/ncurses4/terminfo/i/ipsi
+/usr/share/ncurses4/terminfo/i/iq120
+/usr/share/ncurses4/terminfo/i/iq140
+/usr/share/ncurses4/terminfo/i/iris-ansi
+/usr/share/ncurses4/terminfo/i/iris-ansi-ap
+/usr/share/ncurses4/terminfo/i/iris-color
+/usr/share/ncurses4/terminfo/i/iris40
+/usr/share/ncurses4/terminfo/j
+/usr/share/ncurses4/terminfo/j/jaixterm-m
+/usr/share/ncurses4/terminfo/j/jerq
+/usr/share/ncurses4/terminfo/k
+/usr/share/ncurses4/terminfo/k/k45
+/usr/share/ncurses4/terminfo/k/kaypro
+/usr/share/ncurses4/terminfo/k/kaypro2
+/usr/share/ncurses4/terminfo/k/kermit
+/usr/share/ncurses4/terminfo/k/kermit-am
+/usr/share/ncurses4/terminfo/k/klone+acs
+/usr/share/ncurses4/terminfo/k/klone+color
+/usr/share/ncurses4/terminfo/k/klone+koi8acs
+/usr/share/ncurses4/terminfo/k/klone+sgr
+/usr/share/ncurses4/terminfo/k/klone+sgr-dumb
+/usr/share/ncurses4/terminfo/k/kt7
+/usr/share/ncurses4/terminfo/k/kt7ix
+/usr/share/ncurses4/terminfo/k/kterm
+/usr/share/ncurses4/terminfo/k/ktm
+/usr/share/ncurses4/terminfo/l
+/usr/share/ncurses4/terminfo/l/la120
+/usr/share/ncurses4/terminfo/l/layer
+/usr/share/ncurses4/terminfo/l/linux
+/usr/share/ncurses4/terminfo/l/linux-c
+/usr/share/ncurses4/terminfo/l/linux-c-nc
+/usr/share/ncurses4/terminfo/l/linux-koi8
+/usr/share/ncurses4/terminfo/l/linux-koi8r
+/usr/share/ncurses4/terminfo/l/linux-m
+/usr/share/ncurses4/terminfo/l/linux-nic
+/usr/share/ncurses4/terminfo/l/lisa
+/usr/share/ncurses4/terminfo/l/lisaterm
+/usr/share/ncurses4/terminfo/l/lisaterm-w
+/usr/share/ncurses4/terminfo/l/liswb
+/usr/share/ncurses4/terminfo/l/ln03
+/usr/share/ncurses4/terminfo/l/ln03-w
+/usr/share/ncurses4/terminfo/l/lpr
+/usr/share/ncurses4/terminfo/l/luna
+/usr/share/ncurses4/terminfo/l/luna68k
+/usr/share/ncurses4/terminfo/m
+/usr/share/ncurses4/terminfo/m/m2-nam
+/usr/share/ncurses4/terminfo/m/mac
+/usr/share/ncurses4/terminfo/m/mac-w
+/usr/share/ncurses4/terminfo/m/macintosh
+/usr/share/ncurses4/terminfo/m/macterminal-w
+/usr/share/ncurses4/terminfo/m/mai
+/usr/share/ncurses4/terminfo/m/masscomp
+/usr/share/ncurses4/terminfo/m/masscomp1
+/usr/share/ncurses4/terminfo/m/masscomp2
+/usr/share/ncurses4/terminfo/m/mdl110
+/usr/share/ncurses4/terminfo/m/megatek
+/usr/share/ncurses4/terminfo/m/memhp
+/usr/share/ncurses4/terminfo/m/mgr
+/usr/share/ncurses4/terminfo/m/mgr-linux
+/usr/share/ncurses4/terminfo/m/mgr-sun
+/usr/share/ncurses4/terminfo/m/microb
+/usr/share/ncurses4/terminfo/m/microbee
+/usr/share/ncurses4/terminfo/m/microterm
+/usr/share/ncurses4/terminfo/m/microterm5
+/usr/share/ncurses4/terminfo/m/mime
+/usr/share/ncurses4/terminfo/m/mime-3ax
+/usr/share/ncurses4/terminfo/m/mime-fb
+/usr/share/ncurses4/terminfo/m/mime-hb
+/usr/share/ncurses4/terminfo/m/mime1
+/usr/share/ncurses4/terminfo/m/mime2
+/usr/share/ncurses4/terminfo/m/mime2a
+/usr/share/ncurses4/terminfo/m/mime2a-s
+/usr/share/ncurses4/terminfo/m/mime2a-v
+/usr/share/ncurses4/terminfo/m/mime314
+/usr/share/ncurses4/terminfo/m/mime340
+/usr/share/ncurses4/terminfo/m/mime3a
+/usr/share/ncurses4/terminfo/m/mime3ax
+/usr/share/ncurses4/terminfo/m/mimei
+/usr/share/ncurses4/terminfo/m/mimeii
+/usr/share/ncurses4/terminfo/m/minitel
+/usr/share/ncurses4/terminfo/m/minitel-2
+/usr/share/ncurses4/terminfo/m/minitel-2-nam
+/usr/share/ncurses4/terminfo/m/minix
+/usr/share/ncurses4/terminfo/m/minix-old
+/usr/share/ncurses4/terminfo/m/minix-old-am
+/usr/share/ncurses4/terminfo/m/mm314
+/usr/share/ncurses4/terminfo/m/mm340
+/usr/share/ncurses4/terminfo/m/mod
+/usr/share/ncurses4/terminfo/m/mod24
+/usr/share/ncurses4/terminfo/m/modgraph
+/usr/share/ncurses4/terminfo/m/modgraph2
+/usr/share/ncurses4/terminfo/m/modgraph48
+/usr/share/ncurses4/terminfo/m/mono-emx
+/usr/share/ncurses4/terminfo/m/msk227
+/usr/share/ncurses4/terminfo/m/msk22714
+/usr/share/ncurses4/terminfo/m/msk227am
+/usr/share/ncurses4/terminfo/m/mskermit227
+/usr/share/ncurses4/terminfo/m/mskermit22714
+/usr/share/ncurses4/terminfo/m/mskermit227am
+/usr/share/ncurses4/terminfo/m/mt-70
+/usr/share/ncurses4/terminfo/m/mt4520-rv
+/usr/share/ncurses4/terminfo/m/mt70
+/usr/share/ncurses4/terminfo/n
+/usr/share/ncurses4/terminfo/n/nansi.sys
+/usr/share/ncurses4/terminfo/n/nansi.sysk
+/usr/share/ncurses4/terminfo/n/nansisys
+/usr/share/ncurses4/terminfo/n/nansisysk
+/usr/share/ncurses4/terminfo/n/ncr7900
+/usr/share/ncurses4/terminfo/n/ncr7900i
+/usr/share/ncurses4/terminfo/n/ncr7900iv
+/usr/share/ncurses4/terminfo/n/ncr7901
+/usr/share/ncurses4/terminfo/n/nec
+/usr/share/ncurses4/terminfo/n/nec5520
+/usr/share/ncurses4/terminfo/n/newhp
+/usr/share/ncurses4/terminfo/n/newhpkeyboard
+/usr/share/ncurses4/terminfo/n/news
+/usr/share/ncurses4/terminfo/n/news-29
+/usr/share/ncurses4/terminfo/n/news-29-euc
+/usr/share/ncurses4/terminfo/n/news-29-sjis
+/usr/share/ncurses4/terminfo/n/news-33
+/usr/share/ncurses4/terminfo/n/news-33-euc
+/usr/share/ncurses4/terminfo/n/news-33-sjis
+/usr/share/ncurses4/terminfo/n/news-42
+/usr/share/ncurses4/terminfo/n/news-42-euc
+/usr/share/ncurses4/terminfo/n/news-42-sjis
+/usr/share/ncurses4/terminfo/n/news-a
+/usr/share/ncurses4/terminfo/n/news-o
+/usr/share/ncurses4/terminfo/n/news-old-unk
+/usr/share/ncurses4/terminfo/n/news-unk
+/usr/share/ncurses4/terminfo/n/news28
+/usr/share/ncurses4/terminfo/n/news28-a
+/usr/share/ncurses4/terminfo/n/news29
+/usr/share/ncurses4/terminfo/n/news31
+/usr/share/ncurses4/terminfo/n/news31-a
+/usr/share/ncurses4/terminfo/n/news31-o
+/usr/share/ncurses4/terminfo/n/news33
+/usr/share/ncurses4/terminfo/n/news40
+/usr/share/ncurses4/terminfo/n/news40-a
+/usr/share/ncurses4/terminfo/n/news40-o
+/usr/share/ncurses4/terminfo/n/news42
+/usr/share/ncurses4/terminfo/n/newscbm
+/usr/share/ncurses4/terminfo/n/newscbm-a
+/usr/share/ncurses4/terminfo/n/newscbm-o
+/usr/share/ncurses4/terminfo/n/newscbm33
+/usr/share/ncurses4/terminfo/n/next
+/usr/share/ncurses4/terminfo/n/nextshell
+/usr/share/ncurses4/terminfo/n/northstar
+/usr/share/ncurses4/terminfo/n/nwe501
+/usr/share/ncurses4/terminfo/n/nwe501-a
+/usr/share/ncurses4/terminfo/n/nwe501-o
+/usr/share/ncurses4/terminfo/n/nwp-511
+/usr/share/ncurses4/terminfo/n/nwp-517
+/usr/share/ncurses4/terminfo/n/nwp-517-w
+/usr/share/ncurses4/terminfo/n/nwp251-a
+/usr/share/ncurses4/terminfo/n/nwp251-o
+/usr/share/ncurses4/terminfo/n/nwp511
+/usr/share/ncurses4/terminfo/n/nwp512
+/usr/share/ncurses4/terminfo/n/nwp512-a
+/usr/share/ncurses4/terminfo/n/nwp512-o
+/usr/share/ncurses4/terminfo/n/nwp513
+/usr/share/ncurses4/terminfo/n/nwp513-a
+/usr/share/ncurses4/terminfo/n/nwp513-o
+/usr/share/ncurses4/terminfo/n/nwp514
+/usr/share/ncurses4/terminfo/n/nwp514-a
+/usr/share/ncurses4/terminfo/n/nwp514-o
+/usr/share/ncurses4/terminfo/n/nwp517
+/usr/share/ncurses4/terminfo/n/nwp517-w
+/usr/share/ncurses4/terminfo/n/nwp518
+/usr/share/ncurses4/terminfo/n/nwp518-a
+/usr/share/ncurses4/terminfo/n/nwp518-o
+/usr/share/ncurses4/terminfo/o
+/usr/share/ncurses4/terminfo/o/o31
+/usr/share/ncurses4/terminfo/o/o4112-nd
+/usr/share/ncurses4/terminfo/o/o85h
+/usr/share/ncurses4/terminfo/o/oabm85h
+/usr/share/ncurses4/terminfo/o/oblit
+/usr/share/ncurses4/terminfo/o/oc100
+/usr/share/ncurses4/terminfo/o/oconcept
+/usr/share/ncurses4/terminfo/o/ojerq
+/usr/share/ncurses4/terminfo/o/oldibmpc3
+/usr/share/ncurses4/terminfo/o/oldpc3
+/usr/share/ncurses4/terminfo/o/oldsun
+/usr/share/ncurses4/terminfo/o/omron
+/usr/share/ncurses4/terminfo/o/opus3n1+
+/usr/share/ncurses4/terminfo/o/origibmpc3
+/usr/share/ncurses4/terminfo/o/origpc3
+/usr/share/ncurses4/terminfo/o/os9LII
+/usr/share/ncurses4/terminfo/o/osborne
+/usr/share/ncurses4/terminfo/o/osborne-w
+/usr/share/ncurses4/terminfo/o/osborne1
+/usr/share/ncurses4/terminfo/o/osborne1-w
+/usr/share/ncurses4/terminfo/o/osexec
+/usr/share/ncurses4/terminfo/o/otek4112
+/usr/share/ncurses4/terminfo/o/otek4113
+/usr/share/ncurses4/terminfo/o/otek4114
+/usr/share/ncurses4/terminfo/o/otek4115
+/usr/share/ncurses4/terminfo/o/owl
+/usr/share/ncurses4/terminfo/p
+/usr/share/ncurses4/terminfo/p/p12
+/usr/share/ncurses4/terminfo/p/p12-m
+/usr/share/ncurses4/terminfo/p/p12-m-w
+/usr/share/ncurses4/terminfo/p/p12-w
+/usr/share/ncurses4/terminfo/p/p14
+/usr/share/ncurses4/terminfo/p/p14-m
+/usr/share/ncurses4/terminfo/p/p14-m-w
+/usr/share/ncurses4/terminfo/p/p14-w
+/usr/share/ncurses4/terminfo/p/p19
+/usr/share/ncurses4/terminfo/p/p4
+/usr/share/ncurses4/terminfo/p/p5
+/usr/share/ncurses4/terminfo/p/p7
+/usr/share/ncurses4/terminfo/p/p8
+/usr/share/ncurses4/terminfo/p/p8-w
+/usr/share/ncurses4/terminfo/p/p8gl
+/usr/share/ncurses4/terminfo/p/p9
+/usr/share/ncurses4/terminfo/p/p9-8
+/usr/share/ncurses4/terminfo/p/p9-8-w
+/usr/share/ncurses4/terminfo/p/p9-w
+/usr/share/ncurses4/terminfo/p/pc-coherent
+/usr/share/ncurses4/terminfo/p/pc-minix
+/usr/share/ncurses4/terminfo/p/pc-venix
+/usr/share/ncurses4/terminfo/p/pc3
+/usr/share/ncurses4/terminfo/p/pc3-bold
+/usr/share/ncurses4/terminfo/p/pc3r
+/usr/share/ncurses4/terminfo/p/pc3r-m
+/usr/share/ncurses4/terminfo/p/pc6300plus
+/usr/share/ncurses4/terminfo/p/pc7300
+/usr/share/ncurses4/terminfo/p/pcansi
+/usr/share/ncurses4/terminfo/p/pcansi-25
+/usr/share/ncurses4/terminfo/p/pcansi-25-m
+/usr/share/ncurses4/terminfo/p/pcansi-33
+/usr/share/ncurses4/terminfo/p/pcansi-33-m
+/usr/share/ncurses4/terminfo/p/pcansi-43
+/usr/share/ncurses4/terminfo/p/pcansi-43-m
+/usr/share/ncurses4/terminfo/p/pcansi-m
+/usr/share/ncurses4/terminfo/p/pcansi-mono
+/usr/share/ncurses4/terminfo/p/pcansi25
+/usr/share/ncurses4/terminfo/p/pcansi25m
+/usr/share/ncurses4/terminfo/p/pcansi33
+/usr/share/ncurses4/terminfo/p/pcansi33m
+/usr/share/ncurses4/terminfo/p/pcansi43
+/usr/share/ncurses4/terminfo/p/pccons
+/usr/share/ncurses4/terminfo/p/pcconsole
+/usr/share/ncurses4/terminfo/p/pcix
+/usr/share/ncurses4/terminfo/p/pckermit
+/usr/share/ncurses4/terminfo/p/pckermit12
+/usr/share/ncurses4/terminfo/p/pckermit120
+/usr/share/ncurses4/terminfo/p/pcplot
+/usr/share/ncurses4/terminfo/p/pcvt25
+/usr/share/ncurses4/terminfo/p/pcvt25w
+/usr/share/ncurses4/terminfo/p/pcvt28
+/usr/share/ncurses4/terminfo/p/pcvt28w
+/usr/share/ncurses4/terminfo/p/pcvt35
+/usr/share/ncurses4/terminfo/p/pcvt35w
+/usr/share/ncurses4/terminfo/p/pcvt40
+/usr/share/ncurses4/terminfo/p/pcvt40w
+/usr/share/ncurses4/terminfo/p/pcvt43
+/usr/share/ncurses4/terminfo/p/pcvt43w
+/usr/share/ncurses4/terminfo/p/pcvt50
+/usr/share/ncurses4/terminfo/p/pcvt50w
+/usr/share/ncurses4/terminfo/p/pcvtXX
+/usr/share/ncurses4/terminfo/p/pcz19
+/usr/share/ncurses4/terminfo/p/pe1100
+/usr/share/ncurses4/terminfo/p/pe1200
+/usr/share/ncurses4/terminfo/p/pe1251
+/usr/share/ncurses4/terminfo/p/pe550
+/usr/share/ncurses4/terminfo/p/pe6100
+/usr/share/ncurses4/terminfo/p/pe6300
+/usr/share/ncurses4/terminfo/p/pe6312
+/usr/share/ncurses4/terminfo/p/pe7000c
+/usr/share/ncurses4/terminfo/p/pe7000m
+/usr/share/ncurses4/terminfo/p/pilot
+/usr/share/ncurses4/terminfo/p/printer
+/usr/share/ncurses4/terminfo/p/prism12
+/usr/share/ncurses4/terminfo/p/prism12-m
+/usr/share/ncurses4/terminfo/p/prism12-m-w
+/usr/share/ncurses4/terminfo/p/prism12-w
+/usr/share/ncurses4/terminfo/p/prism14
+/usr/share/ncurses4/terminfo/p/prism14-m
+/usr/share/ncurses4/terminfo/p/prism14-m-w
+/usr/share/ncurses4/terminfo/p/prism14-w
+/usr/share/ncurses4/terminfo/p/prism2
+/usr/share/ncurses4/terminfo/p/prism4
+/usr/share/ncurses4/terminfo/p/prism5
+/usr/share/ncurses4/terminfo/p/prism7
+/usr/share/ncurses4/terminfo/p/prism8
+/usr/share/ncurses4/terminfo/p/prism8-w
+/usr/share/ncurses4/terminfo/p/prism8gl
+/usr/share/ncurses4/terminfo/p/prism9
+/usr/share/ncurses4/terminfo/p/prism9-8
+/usr/share/ncurses4/terminfo/p/prism9-8-w
+/usr/share/ncurses4/terminfo/p/prism9-w
+/usr/share/ncurses4/terminfo/p/pro350
+/usr/share/ncurses4/terminfo/p/ps300
+/usr/share/ncurses4/terminfo/p/psterm
+/usr/share/ncurses4/terminfo/p/psterm-80x24
+/usr/share/ncurses4/terminfo/p/psterm-90x28
+/usr/share/ncurses4/terminfo/p/psterm-96x48
+/usr/share/ncurses4/terminfo/p/psterm-basic
+/usr/share/ncurses4/terminfo/p/psterm-fast
+/usr/share/ncurses4/terminfo/p/psx_ansi
+/usr/share/ncurses4/terminfo/p/pt100
+/usr/share/ncurses4/terminfo/p/pt100w
+/usr/share/ncurses4/terminfo/p/pt200
+/usr/share/ncurses4/terminfo/p/pt200w
+/usr/share/ncurses4/terminfo/p/pt210
+/usr/share/ncurses4/terminfo/p/pt250
+/usr/share/ncurses4/terminfo/p/pt250w
+/usr/share/ncurses4/terminfo/p/pt505
+/usr/share/ncurses4/terminfo/p/pt505-22
+/usr/share/ncurses4/terminfo/p/pt505-24
+/usr/share/ncurses4/terminfo/p/pty
+/usr/share/ncurses4/terminfo/q
+/usr/share/ncurses4/terminfo/q/qdcons
+/usr/share/ncurses4/terminfo/q/qdss
+/usr/share/ncurses4/terminfo/q/qnx
+/usr/share/ncurses4/terminfo/q/qnx4
+/usr/share/ncurses4/terminfo/q/qume
+/usr/share/ncurses4/terminfo/q/qume5
+/usr/share/ncurses4/terminfo/q/qvt101
+/usr/share/ncurses4/terminfo/q/qvt101+
+/usr/share/ncurses4/terminfo/q/qvt101p
+/usr/share/ncurses4/terminfo/q/qvt102
+/usr/share/ncurses4/terminfo/q/qvt103
+/usr/share/ncurses4/terminfo/q/qvt103-w
+/usr/share/ncurses4/terminfo/q/qvt108
+/usr/share/ncurses4/terminfo/q/qvt119
+/usr/share/ncurses4/terminfo/q/qvt119+
+/usr/share/ncurses4/terminfo/q/qvt119+-25
+/usr/share/ncurses4/terminfo/q/qvt119+-25-w
+/usr/share/ncurses4/terminfo/q/qvt119+-w
+/usr/share/ncurses4/terminfo/q/qvt119-25-w
+/usr/share/ncurses4/terminfo/q/qvt119-w
+/usr/share/ncurses4/terminfo/q/qvt119p
+/usr/share/ncurses4/terminfo/q/qvt119p-25
+/usr/share/ncurses4/terminfo/q/qvt119p-25-w
+/usr/share/ncurses4/terminfo/q/qvt119p-w
+/usr/share/ncurses4/terminfo/q/qvt203
+/usr/share/ncurses4/terminfo/q/qvt203+
+/usr/share/ncurses4/terminfo/q/qvt203-25
+/usr/share/ncurses4/terminfo/q/qvt203-25-w
+/usr/share/ncurses4/terminfo/q/qvt203-w
+/usr/share/ncurses4/terminfo/q/qvt203-w-am
+/usr/share/ncurses4/terminfo/r
+/usr/share/ncurses4/terminfo/r/rbcomm
+/usr/share/ncurses4/terminfo/r/rbcomm-nam
+/usr/share/ncurses4/terminfo/r/rbcomm-w
+/usr/share/ncurses4/terminfo/r/rca
+/usr/share/ncurses4/terminfo/r/rebus3180
+/usr/share/ncurses4/terminfo/r/regent
+/usr/share/ncurses4/terminfo/r/regent100
+/usr/share/ncurses4/terminfo/r/regent20
+/usr/share/ncurses4/terminfo/r/regent200
+/usr/share/ncurses4/terminfo/r/regent25
+/usr/share/ncurses4/terminfo/r/regent40
+/usr/share/ncurses4/terminfo/r/regent40+
+/usr/share/ncurses4/terminfo/r/regent60
+/usr/share/ncurses4/terminfo/r/rt6221
+/usr/share/ncurses4/terminfo/r/rt6221-w
+/usr/share/ncurses4/terminfo/r/rtpc
+/usr/share/ncurses4/terminfo/r/rxvt
+/usr/share/ncurses4/terminfo/r/rxvt-basic
+/usr/share/ncurses4/terminfo/s
+/usr/share/ncurses4/terminfo/s/s
+/usr/share/ncurses4/terminfo/s/s4
+/usr/share/ncurses4/terminfo/s/sb1
+/usr/share/ncurses4/terminfo/s/sb2
+/usr/share/ncurses4/terminfo/s/sb3
+/usr/share/ncurses4/terminfo/s/sbi
+/usr/share/ncurses4/terminfo/s/sbobcat
+/usr/share/ncurses4/terminfo/s/sc410
+/usr/share/ncurses4/terminfo/s/sc415
+/usr/share/ncurses4/terminfo/s/scanset
+/usr/share/ncurses4/terminfo/s/scoansi
+/usr/share/ncurses4/terminfo/s/screen
+/usr/share/ncurses4/terminfo/s/screen-w
+/usr/share/ncurses4/terminfo/s/screen2
+/usr/share/ncurses4/terminfo/s/screen3
+/usr/share/ncurses4/terminfo/s/screwpoint
+/usr/share/ncurses4/terminfo/s/scrhp
+/usr/share/ncurses4/terminfo/s/simterm
+/usr/share/ncurses4/terminfo/s/soroc
+/usr/share/ncurses4/terminfo/s/soroc120
+/usr/share/ncurses4/terminfo/s/soroc140
+/usr/share/ncurses4/terminfo/s/spinwriter
+/usr/share/ncurses4/terminfo/s/st52
+/usr/share/ncurses4/terminfo/s/sun
+/usr/share/ncurses4/terminfo/s/sun-1
+/usr/share/ncurses4/terminfo/s/sun-12
+/usr/share/ncurses4/terminfo/s/sun-17
+/usr/share/ncurses4/terminfo/s/sun-24
+/usr/share/ncurses4/terminfo/s/sun-34
+/usr/share/ncurses4/terminfo/s/sun-48
+/usr/share/ncurses4/terminfo/s/sun-c
+/usr/share/ncurses4/terminfo/s/sun-cmd
+/usr/share/ncurses4/terminfo/s/sun-e
+/usr/share/ncurses4/terminfo/s/sun-e-s
+/usr/share/ncurses4/terminfo/s/sun-il
+/usr/share/ncurses4/terminfo/s/sun-nic
+/usr/share/ncurses4/terminfo/s/sun-s
+/usr/share/ncurses4/terminfo/s/sun-s-e
+/usr/share/ncurses4/terminfo/s/sun-ss5
+/usr/share/ncurses4/terminfo/s/sun1
+/usr/share/ncurses4/terminfo/s/sun2
+/usr/share/ncurses4/terminfo/s/sune
+/usr/share/ncurses4/terminfo/s/superbee
+/usr/share/ncurses4/terminfo/s/superbee-xsb
+/usr/share/ncurses4/terminfo/s/superbeeic
+/usr/share/ncurses4/terminfo/s/superbrain
+/usr/share/ncurses4/terminfo/s/sv80
+/usr/share/ncurses4/terminfo/s/swtp
+/usr/share/ncurses4/terminfo/s/synertek
+/usr/share/ncurses4/terminfo/s/synertek380
+/usr/share/ncurses4/terminfo/s/system1
+/usr/share/ncurses4/terminfo/t
+/usr/share/ncurses4/terminfo/t/t10
+/usr/share/ncurses4/terminfo/t/t1061
+/usr/share/ncurses4/terminfo/t/t1061f
+/usr/share/ncurses4/terminfo/t/t16
+/usr/share/ncurses4/terminfo/t/t3700
+/usr/share/ncurses4/terminfo/t/t3800
+/usr/share/ncurses4/terminfo/t/t653x
+/usr/share/ncurses4/terminfo/t/tab
+/usr/share/ncurses4/terminfo/t/tab132
+/usr/share/ncurses4/terminfo/t/tab132-15
+/usr/share/ncurses4/terminfo/t/tab132-rv
+/usr/share/ncurses4/terminfo/t/tab132-w
+/usr/share/ncurses4/terminfo/t/tab132-w-rv
+/usr/share/ncurses4/terminfo/t/tandem6510
+/usr/share/ncurses4/terminfo/t/tandem653
+/usr/share/ncurses4/terminfo/t/tek
+/usr/share/ncurses4/terminfo/t/tek4012
+/usr/share/ncurses4/terminfo/t/tek4013
+/usr/share/ncurses4/terminfo/t/tek4014
+/usr/share/ncurses4/terminfo/t/tek4014-sm
+/usr/share/ncurses4/terminfo/t/tek4015
+/usr/share/ncurses4/terminfo/t/tek4015-sm
+/usr/share/ncurses4/terminfo/t/tek4023
+/usr/share/ncurses4/terminfo/t/tek4024
+/usr/share/ncurses4/terminfo/t/tek4025
+/usr/share/ncurses4/terminfo/t/tek4025-17
+/usr/share/ncurses4/terminfo/t/tek4025-17-ws
+/usr/share/ncurses4/terminfo/t/tek4025-cr
+/usr/share/ncurses4/terminfo/t/tek4025-ex
+/usr/share/ncurses4/terminfo/t/tek4025a
+/usr/share/ncurses4/terminfo/t/tek4025ex
+/usr/share/ncurses4/terminfo/t/tek4027
+/usr/share/ncurses4/terminfo/t/tek4027-ex
+/usr/share/ncurses4/terminfo/t/tek4105
+/usr/share/ncurses4/terminfo/t/tek4105-30
+/usr/share/ncurses4/terminfo/t/tek4105a
+/usr/share/ncurses4/terminfo/t/tek4106brl
+/usr/share/ncurses4/terminfo/t/tek4107
+/usr/share/ncurses4/terminfo/t/tek4107brl
+/usr/share/ncurses4/terminfo/t/tek4109
+/usr/share/ncurses4/terminfo/t/tek4109brl
+/usr/share/ncurses4/terminfo/t/tek4112
+/usr/share/ncurses4/terminfo/t/tek4112-5
+/usr/share/ncurses4/terminfo/t/tek4112-nd
+/usr/share/ncurses4/terminfo/t/tek4113
+/usr/share/ncurses4/terminfo/t/tek4113-34
+/usr/share/ncurses4/terminfo/t/tek4113-nd
+/usr/share/ncurses4/terminfo/t/tek4114
+/usr/share/ncurses4/terminfo/t/tek4115
+/usr/share/ncurses4/terminfo/t/tek4125
+/usr/share/ncurses4/terminfo/t/tek4205
+/usr/share/ncurses4/terminfo/t/tek4207
+/usr/share/ncurses4/terminfo/t/tek4207-s
+/usr/share/ncurses4/terminfo/t/tek4404
+/usr/share/ncurses4/terminfo/t/teleray
+/usr/share/ncurses4/terminfo/t/teletec
+/usr/share/ncurses4/terminfo/t/terminet
+/usr/share/ncurses4/terminfo/t/terminet1200
+/usr/share/ncurses4/terminfo/t/terminet300
+/usr/share/ncurses4/terminfo/t/tgtelnet
+/usr/share/ncurses4/terminfo/t/ti700
+/usr/share/ncurses4/terminfo/t/ti733
+/usr/share/ncurses4/terminfo/t/ti735
+/usr/share/ncurses4/terminfo/t/ti745
+/usr/share/ncurses4/terminfo/t/ti800
+/usr/share/ncurses4/terminfo/t/ti916
+/usr/share/ncurses4/terminfo/t/ti916-132
+/usr/share/ncurses4/terminfo/t/ti916-220-7
+/usr/share/ncurses4/terminfo/t/ti916-220-8
+/usr/share/ncurses4/terminfo/t/ti916-8
+/usr/share/ncurses4/terminfo/t/ti916-8-132
+/usr/share/ncurses4/terminfo/t/ti924
+/usr/share/ncurses4/terminfo/t/ti924-8
+/usr/share/ncurses4/terminfo/t/ti924-8w
+/usr/share/ncurses4/terminfo/t/ti924w
+/usr/share/ncurses4/terminfo/t/ti926
+/usr/share/ncurses4/terminfo/t/ti926-8
+/usr/share/ncurses4/terminfo/t/ti928
+/usr/share/ncurses4/terminfo/t/ti928-8
+/usr/share/ncurses4/terminfo/t/ti931
+/usr/share/ncurses4/terminfo/t/ti_ansi
+/usr/share/ncurses4/terminfo/t/tn1200
+/usr/share/ncurses4/terminfo/t/tn300
+/usr/share/ncurses4/terminfo/t/trs16
+/usr/share/ncurses4/terminfo/t/trs2
+/usr/share/ncurses4/terminfo/t/trs80II
+/usr/share/ncurses4/terminfo/t/trsII
+/usr/share/ncurses4/terminfo/t/ts-1
+/usr/share/ncurses4/terminfo/t/ts-1p
+/usr/share/ncurses4/terminfo/t/ts1
+/usr/share/ncurses4/terminfo/t/ts100
+/usr/share/ncurses4/terminfo/t/ts100-ctxt
+/usr/share/ncurses4/terminfo/t/ts100-sp
+/usr/share/ncurses4/terminfo/t/ts1p
+/usr/share/ncurses4/terminfo/t/tt505-22
+/usr/share/ncurses4/terminfo/t/tty33
+/usr/share/ncurses4/terminfo/t/tty35
+/usr/share/ncurses4/terminfo/t/tty37
+/usr/share/ncurses4/terminfo/t/tty40
+/usr/share/ncurses4/terminfo/t/tty43
+/usr/share/ncurses4/terminfo/t/tty4420
+/usr/share/ncurses4/terminfo/t/tty4424
+/usr/share/ncurses4/terminfo/t/tty4424-1
+/usr/share/ncurses4/terminfo/t/tty4424m
+/usr/share/ncurses4/terminfo/t/tty4426
+/usr/share/ncurses4/terminfo/t/tty5410
+/usr/share/ncurses4/terminfo/t/tty5410-w
+/usr/share/ncurses4/terminfo/t/tty5410v1
+/usr/share/ncurses4/terminfo/t/tty5410v1-w
+/usr/share/ncurses4/terminfo/t/tty5420
+/usr/share/ncurses4/terminfo/t/tty5420+nl
+/usr/share/ncurses4/terminfo/t/tty5420-nl
+/usr/share/ncurses4/terminfo/t/tty5420-rv
+/usr/share/ncurses4/terminfo/t/tty5420-rv-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w
+/usr/share/ncurses4/terminfo/t/tty5420-w-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv-n
+/usr/share/ncurses4/terminfo/t/tty5425
+/usr/share/ncurses4/terminfo/t/tty5425-nl
+/usr/share/ncurses4/terminfo/t/tty5425-w
+/usr/share/ncurses4/terminfo/t/tty5620
+/usr/share/ncurses4/terminfo/t/tty5620-1
+/usr/share/ncurses4/terminfo/t/tty5620-24
+/usr/share/ncurses4/terminfo/t/tty5620-34
+/usr/share/ncurses4/terminfo/t/tty5620-s
+/usr/share/ncurses4/terminfo/t/ttydmd
+/usr/share/ncurses4/terminfo/t/tvi-2p
+/usr/share/ncurses4/terminfo/t/tvi803
+/usr/share/ncurses4/terminfo/t/tvi9065
+/usr/share/ncurses4/terminfo/t/tvi910
+/usr/share/ncurses4/terminfo/t/tvi910+
+/usr/share/ncurses4/terminfo/t/tvi912
+/usr/share/ncurses4/terminfo/t/tvi912-2p
+/usr/share/ncurses4/terminfo/t/tvi912b
+/usr/share/ncurses4/terminfo/t/tvi912c
+/usr/share/ncurses4/terminfo/t/tvi912cc
+/usr/share/ncurses4/terminfo/t/tvi914
+/usr/share/ncurses4/terminfo/t/tvi920
+/usr/share/ncurses4/terminfo/t/tvi920-2p
+/usr/share/ncurses4/terminfo/t/tvi920b
+/usr/share/ncurses4/terminfo/t/tvi920c
+/usr/share/ncurses4/terminfo/t/tvi921
+/usr/share/ncurses4/terminfo/t/tvi924
+/usr/share/ncurses4/terminfo/t/tvi925
+/usr/share/ncurses4/terminfo/t/tvi925-hi
+/usr/share/ncurses4/terminfo/t/tvi92B
+/usr/share/ncurses4/terminfo/t/tvi92D
+/usr/share/ncurses4/terminfo/t/tvi950
+/usr/share/ncurses4/terminfo/t/tvi950-2p
+/usr/share/ncurses4/terminfo/t/tvi950-4p
+/usr/share/ncurses4/terminfo/t/tvi950-rv
+/usr/share/ncurses4/terminfo/t/tvi950-rv-2p
+/usr/share/ncurses4/terminfo/t/tvi950-rv-4p
+/usr/share/ncurses4/terminfo/t/tvi955
+/usr/share/ncurses4/terminfo/t/tvi955-hb
+/usr/share/ncurses4/terminfo/t/tvi955-w
+/usr/share/ncurses4/terminfo/t/tvi970
+/usr/share/ncurses4/terminfo/t/tvi970-2p
+/usr/share/ncurses4/terminfo/t/tvi970-vb
+/usr/share/ncurses4/terminfo/t/tvipt
+/usr/share/ncurses4/terminfo/u
+/usr/share/ncurses4/terminfo/u/ultima2
+/usr/share/ncurses4/terminfo/u/ultimaII
+/usr/share/ncurses4/terminfo/u/uniterm
+/usr/share/ncurses4/terminfo/u/uniterm49
+/usr/share/ncurses4/terminfo/u/unixpc
+/usr/share/ncurses4/terminfo/u/unknown
+/usr/share/ncurses4/terminfo/u/uts30
+/usr/share/ncurses4/terminfo/v
+/usr/share/ncurses4/terminfo/v/v200-nam
+/usr/share/ncurses4/terminfo/v/v320n
+/usr/share/ncurses4/terminfo/v/v3220
+/usr/share/ncurses4/terminfo/v/v5410
+/usr/share/ncurses4/terminfo/v/vapple
+/usr/share/ncurses4/terminfo/v/vc103
+/usr/share/ncurses4/terminfo/v/vc203
+/usr/share/ncurses4/terminfo/v/vc303
+/usr/share/ncurses4/terminfo/v/vc303a
+/usr/share/ncurses4/terminfo/v/vc403a
+/usr/share/ncurses4/terminfo/v/vc404
+/usr/share/ncurses4/terminfo/v/vc404-s
+/usr/share/ncurses4/terminfo/v/vc414
+/usr/share/ncurses4/terminfo/v/vc414h
+/usr/share/ncurses4/terminfo/v/vc415
+/usr/share/ncurses4/terminfo/v/venix
+/usr/share/ncurses4/terminfo/v/versaterm
+/usr/share/ncurses4/terminfo/v/vi200
+/usr/share/ncurses4/terminfo/v/vi200-f
+/usr/share/ncurses4/terminfo/v/vi200-rv
+/usr/share/ncurses4/terminfo/v/vi300
+/usr/share/ncurses4/terminfo/v/vi300-old
+/usr/share/ncurses4/terminfo/v/vi50
+/usr/share/ncurses4/terminfo/v/vi500
+/usr/share/ncurses4/terminfo/v/vi50adm
+/usr/share/ncurses4/terminfo/v/vi55
+/usr/share/ncurses4/terminfo/v/vi550
+/usr/share/ncurses4/terminfo/v/vi603
+/usr/share/ncurses4/terminfo/v/viewpoint
+/usr/share/ncurses4/terminfo/v/viewpoint3a+
+/usr/share/ncurses4/terminfo/v/viewpoint60
+/usr/share/ncurses4/terminfo/v/viewpoint90
+/usr/share/ncurses4/terminfo/v/visa50
+/usr/share/ncurses4/terminfo/v/visual603
+/usr/share/ncurses4/terminfo/v/vitty
+/usr/share/ncurses4/terminfo/v/vk100
+/usr/share/ncurses4/terminfo/v/vp3a+
+/usr/share/ncurses4/terminfo/v/vp60
+/usr/share/ncurses4/terminfo/v/vp90
+/usr/share/ncurses4/terminfo/v/vremote
+/usr/share/ncurses4/terminfo/v/vs100
+/usr/share/ncurses4/terminfo/v/vs100-x10
+/usr/share/ncurses4/terminfo/v/vsc
+/usr/share/ncurses4/terminfo/v/vt-61
+/usr/share/ncurses4/terminfo/v/vt100
+/usr/share/ncurses4/terminfo/v/vt100-am
+/usr/share/ncurses4/terminfo/v/vt100-bm
+/usr/share/ncurses4/terminfo/v/vt100-bm-o
+/usr/share/ncurses4/terminfo/v/vt100-bot-s
+/usr/share/ncurses4/terminfo/v/vt100-nam
+/usr/share/ncurses4/terminfo/v/vt100-nam-w
+/usr/share/ncurses4/terminfo/v/vt100-nav
+/usr/share/ncurses4/terminfo/v/vt100-nav-w
+/usr/share/ncurses4/terminfo/v/vt100-s
+/usr/share/ncurses4/terminfo/v/vt100-s-bot
+/usr/share/ncurses4/terminfo/v/vt100-s-top
+/usr/share/ncurses4/terminfo/v/vt100-top-s
+/usr/share/ncurses4/terminfo/v/vt100-vb
+/usr/share/ncurses4/terminfo/v/vt100-w
+/usr/share/ncurses4/terminfo/v/vt100-w-am
+/usr/share/ncurses4/terminfo/v/vt100-w-nam
+/usr/share/ncurses4/terminfo/v/vt100-w-nav
+/usr/share/ncurses4/terminfo/v/vt100nam
+/usr/share/ncurses4/terminfo/v/vt102
+/usr/share/ncurses4/terminfo/v/vt102-nsgr
+/usr/share/ncurses4/terminfo/v/vt102-w
+/usr/share/ncurses4/terminfo/v/vt125
+/usr/share/ncurses4/terminfo/v/vt131
+/usr/share/ncurses4/terminfo/v/vt132
+/usr/share/ncurses4/terminfo/v/vt200
+/usr/share/ncurses4/terminfo/v/vt200-js
+/usr/share/ncurses4/terminfo/v/vt200-w
+/usr/share/ncurses4/terminfo/v/vt220
+/usr/share/ncurses4/terminfo/v/vt220-8
+/usr/share/ncurses4/terminfo/v/vt220-js
+/usr/share/ncurses4/terminfo/v/vt220-nam
+/usr/share/ncurses4/terminfo/v/vt220-w
+/usr/share/ncurses4/terminfo/v/vt220d
+/usr/share/ncurses4/terminfo/v/vt300
+/usr/share/ncurses4/terminfo/v/vt300-nam
+/usr/share/ncurses4/terminfo/v/vt300-w
+/usr/share/ncurses4/terminfo/v/vt300-w-nam
+/usr/share/ncurses4/terminfo/v/vt320
+/usr/share/ncurses4/terminfo/v/vt320-k3
+/usr/share/ncurses4/terminfo/v/vt320-k311
+/usr/share/ncurses4/terminfo/v/vt320-nam
+/usr/share/ncurses4/terminfo/v/vt320-w
+/usr/share/ncurses4/terminfo/v/vt320-w-nam
+/usr/share/ncurses4/terminfo/v/vt320nam
+/usr/share/ncurses4/terminfo/v/vt330
+/usr/share/ncurses4/terminfo/v/vt340
+/usr/share/ncurses4/terminfo/v/vt400
+/usr/share/ncurses4/terminfo/v/vt400-24
+/usr/share/ncurses4/terminfo/v/vt420
+/usr/share/ncurses4/terminfo/v/vt420f
+/usr/share/ncurses4/terminfo/v/vt420pc
+/usr/share/ncurses4/terminfo/v/vt420pcdos
+/usr/share/ncurses4/terminfo/v/vt50
+/usr/share/ncurses4/terminfo/v/vt50h
+/usr/share/ncurses4/terminfo/v/vt510
+/usr/share/ncurses4/terminfo/v/vt510pc
+/usr/share/ncurses4/terminfo/v/vt510pcdos
+/usr/share/ncurses4/terminfo/v/vt52
+/usr/share/ncurses4/terminfo/v/vt520
+/usr/share/ncurses4/terminfo/v/vt525
+/usr/share/ncurses4/terminfo/v/vt61
+/usr/share/ncurses4/terminfo/v/vt61.5
+/usr/share/ncurses4/terminfo/w
+/usr/share/ncurses4/terminfo/w/wren
+/usr/share/ncurses4/terminfo/w/wrenw
+/usr/share/ncurses4/terminfo/w/wsiris
+/usr/share/ncurses4/terminfo/w/wy-75ap
+/usr/share/ncurses4/terminfo/w/wy100
+/usr/share/ncurses4/terminfo/w/wy100q
+/usr/share/ncurses4/terminfo/w/wy120
+/usr/share/ncurses4/terminfo/w/wy120-25
+/usr/share/ncurses4/terminfo/w/wy120-25-w
+/usr/share/ncurses4/terminfo/w/wy120-vb
+/usr/share/ncurses4/terminfo/w/wy120-w
+/usr/share/ncurses4/terminfo/w/wy120-w-vb
+/usr/share/ncurses4/terminfo/w/wy120-wvb
+/usr/share/ncurses4/terminfo/w/wy150
+/usr/share/ncurses4/terminfo/w/wy150-25
+/usr/share/ncurses4/terminfo/w/wy150-25-w
+/usr/share/ncurses4/terminfo/w/wy150-vb
+/usr/share/ncurses4/terminfo/w/wy150-w
+/usr/share/ncurses4/terminfo/w/wy150-w-vb
+/usr/share/ncurses4/terminfo/w/wy160
+/usr/share/ncurses4/terminfo/w/wy160-25
+/usr/share/ncurses4/terminfo/w/wy160-25-w
+/usr/share/ncurses4/terminfo/w/wy160-42
+/usr/share/ncurses4/terminfo/w/wy160-42-w
+/usr/share/ncurses4/terminfo/w/wy160-43
+/usr/share/ncurses4/terminfo/w/wy160-43-w
+/usr/share/ncurses4/terminfo/w/wy160-tek
+/usr/share/ncurses4/terminfo/w/wy160-vb
+/usr/share/ncurses4/terminfo/w/wy160-w
+/usr/share/ncurses4/terminfo/w/wy160-w-vb
+/usr/share/ncurses4/terminfo/w/wy160-wvb
+/usr/share/ncurses4/terminfo/w/wy185
+/usr/share/ncurses4/terminfo/w/wy185-24
+/usr/share/ncurses4/terminfo/w/wy185-vb
+/usr/share/ncurses4/terminfo/w/wy185-w
+/usr/share/ncurses4/terminfo/w/wy185-wvb
+/usr/share/ncurses4/terminfo/w/wy30
+/usr/share/ncurses4/terminfo/w/wy30-mc
+/usr/share/ncurses4/terminfo/w/wy30-vb
+/usr/share/ncurses4/terminfo/w/wy325
+/usr/share/ncurses4/terminfo/w/wy325-25
+/usr/share/ncurses4/terminfo/w/wy325-25w
+/usr/share/ncurses4/terminfo/w/wy325-42
+/usr/share/ncurses4/terminfo/w/wy325-42w
+/usr/share/ncurses4/terminfo/w/wy325-42w-vb
+/usr/share/ncurses4/terminfo/w/wy325-42wvb
+/usr/share/ncurses4/terminfo/w/wy325-43
+/usr/share/ncurses4/terminfo/w/wy325-43w
+/usr/share/ncurses4/terminfo/w/wy325-43w-vb
+/usr/share/ncurses4/terminfo/w/wy325-43wvb
+/usr/share/ncurses4/terminfo/w/wy325-80
+/usr/share/ncurses4/terminfo/w/wy325-vb
+/usr/share/ncurses4/terminfo/w/wy325-w
+/usr/share/ncurses4/terminfo/w/wy325-w-vb
+/usr/share/ncurses4/terminfo/w/wy325-wvb
+/usr/share/ncurses4/terminfo/w/wy325w-24
+/usr/share/ncurses4/terminfo/w/wy350
+/usr/share/ncurses4/terminfo/w/wy350-vb
+/usr/share/ncurses4/terminfo/w/wy350-w
+/usr/share/ncurses4/terminfo/w/wy350-wvb
+/usr/share/ncurses4/terminfo/w/wy370
+/usr/share/ncurses4/terminfo/w/wy370-101k
+/usr/share/ncurses4/terminfo/w/wy370-105k
+/usr/share/ncurses4/terminfo/w/wy370-EPC
+/usr/share/ncurses4/terminfo/w/wy370-nk
+/usr/share/ncurses4/terminfo/w/wy370-rv
+/usr/share/ncurses4/terminfo/w/wy370-tek
+/usr/share/ncurses4/terminfo/w/wy370-vb
+/usr/share/ncurses4/terminfo/w/wy370-w
+/usr/share/ncurses4/terminfo/w/wy370-wvb
+/usr/share/ncurses4/terminfo/w/wy50
+/usr/share/ncurses4/terminfo/w/wy50-mc
+/usr/share/ncurses4/terminfo/w/wy50-vb
+/usr/share/ncurses4/terminfo/w/wy50-w
+/usr/share/ncurses4/terminfo/w/wy50-wvb
+/usr/share/ncurses4/terminfo/w/wy520
+/usr/share/ncurses4/terminfo/w/wy520-24
+/usr/share/ncurses4/terminfo/w/wy520-36
+/usr/share/ncurses4/terminfo/w/wy520-36pc
+/usr/share/ncurses4/terminfo/w/wy520-36w
+/usr/share/ncurses4/terminfo/w/wy520-36wpc
+/usr/share/ncurses4/terminfo/w/wy520-48
+/usr/share/ncurses4/terminfo/w/wy520-48pc
+/usr/share/ncurses4/terminfo/w/wy520-48w
+/usr/share/ncurses4/terminfo/w/wy520-48wpc
+/usr/share/ncurses4/terminfo/w/wy520-epc
+/usr/share/ncurses4/terminfo/w/wy520-epc-24
+/usr/share/ncurses4/terminfo/w/wy520-epc-vb
+/usr/share/ncurses4/terminfo/w/wy520-epc-w
+/usr/share/ncurses4/terminfo/w/wy520-epc-wvb
+/usr/share/ncurses4/terminfo/w/wy520-vb
+/usr/share/ncurses4/terminfo/w/wy520-w
+/usr/share/ncurses4/terminfo/w/wy520-wvb
+/usr/share/ncurses4/terminfo/w/wy60
+/usr/share/ncurses4/terminfo/w/wy60-25
+/usr/share/ncurses4/terminfo/w/wy60-25-w
+/usr/share/ncurses4/terminfo/w/wy60-316X
+/usr/share/ncurses4/terminfo/w/wy60-42
+/usr/share/ncurses4/terminfo/w/wy60-42-w
+/usr/share/ncurses4/terminfo/w/wy60-43
+/usr/share/ncurses4/terminfo/w/wy60-43-w
+/usr/share/ncurses4/terminfo/w/wy60-vb
+/usr/share/ncurses4/terminfo/w/wy60-w
+/usr/share/ncurses4/terminfo/w/wy60-w-vb
+/usr/share/ncurses4/terminfo/w/wy60-wvb
+/usr/share/ncurses4/terminfo/w/wy75
+/usr/share/ncurses4/terminfo/w/wy75-mc
+/usr/share/ncurses4/terminfo/w/wy75-vb
+/usr/share/ncurses4/terminfo/w/wy75-w
+/usr/share/ncurses4/terminfo/w/wy75-wvb
+/usr/share/ncurses4/terminfo/w/wy75ap
+/usr/share/ncurses4/terminfo/w/wy85
+/usr/share/ncurses4/terminfo/w/wy85-vb
+/usr/share/ncurses4/terminfo/w/wy85-w
+/usr/share/ncurses4/terminfo/w/wy85-wvb
+/usr/share/ncurses4/terminfo/w/wy99gt
+/usr/share/ncurses4/terminfo/w/wy99gt-25
+/usr/share/ncurses4/terminfo/w/wy99gt-25-w
+/usr/share/ncurses4/terminfo/w/wy99gt-tek
+/usr/share/ncurses4/terminfo/w/wy99gt-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-w
+/usr/share/ncurses4/terminfo/w/wy99gt-w-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-wvb
+/usr/share/ncurses4/terminfo/w/wyse-325
+/usr/share/ncurses4/terminfo/w/wyse-75ap
+/usr/share/ncurses4/terminfo/w/wyse-vp
+/usr/share/ncurses4/terminfo/w/wyse120
+/usr/share/ncurses4/terminfo/w/wyse120-25
+/usr/share/ncurses4/terminfo/w/wyse120-25-w
+/usr/share/ncurses4/terminfo/w/wyse120-vb
+/usr/share/ncurses4/terminfo/w/wyse120-w
+/usr/share/ncurses4/terminfo/w/wyse120-wvb
+/usr/share/ncurses4/terminfo/w/wyse150
+/usr/share/ncurses4/terminfo/w/wyse150-25
+/usr/share/ncurses4/terminfo/w/wyse150-25-w
+/usr/share/ncurses4/terminfo/w/wyse150-vb
+/usr/share/ncurses4/terminfo/w/wyse150-w
+/usr/share/ncurses4/terminfo/w/wyse150-w-vb
+/usr/share/ncurses4/terminfo/w/wyse160
+/usr/share/ncurses4/terminfo/w/wyse160-25
+/usr/share/ncurses4/terminfo/w/wyse160-25-w
+/usr/share/ncurses4/terminfo/w/wyse160-42
+/usr/share/ncurses4/terminfo/w/wyse160-42-w
+/usr/share/ncurses4/terminfo/w/wyse160-43
+/usr/share/ncurses4/terminfo/w/wyse160-43-w
+/usr/share/ncurses4/terminfo/w/wyse160-vb
+/usr/share/ncurses4/terminfo/w/wyse160-w
+/usr/share/ncurses4/terminfo/w/wyse160-wvb
+/usr/share/ncurses4/terminfo/w/wyse185
+/usr/share/ncurses4/terminfo/w/wyse185-24
+/usr/share/ncurses4/terminfo/w/wyse185-vb
+/usr/share/ncurses4/terminfo/w/wyse185-w
+/usr/share/ncurses4/terminfo/w/wyse185-wvb
+/usr/share/ncurses4/terminfo/w/wyse30
+/usr/share/ncurses4/terminfo/w/wyse30-mc
+/usr/share/ncurses4/terminfo/w/wyse30-vb
+/usr/share/ncurses4/terminfo/w/wyse325
+/usr/share/ncurses4/terminfo/w/wyse325-25
+/usr/share/ncurses4/terminfo/w/wyse325-25w
+/usr/share/ncurses4/terminfo/w/wyse325-42
+/usr/share/ncurses4/terminfo/w/wyse325-42w
+/usr/share/ncurses4/terminfo/w/wyse325-43
+/usr/share/ncurses4/terminfo/w/wyse325-43w
+/usr/share/ncurses4/terminfo/w/wyse325-vb
+/usr/share/ncurses4/terminfo/w/wyse325-w
+/usr/share/ncurses4/terminfo/w/wyse325-wvb
+/usr/share/ncurses4/terminfo/w/wyse350
+/usr/share/ncurses4/terminfo/w/wyse350-vb
+/usr/share/ncurses4/terminfo/w/wyse350-w
+/usr/share/ncurses4/terminfo/w/wyse350-wvb
+/usr/share/ncurses4/terminfo/w/wyse370
+/usr/share/ncurses4/terminfo/w/wyse50
+/usr/share/ncurses4/terminfo/w/wyse50-mc
+/usr/share/ncurses4/terminfo/w/wyse50-vb
+/usr/share/ncurses4/terminfo/w/wyse50-w
+/usr/share/ncurses4/terminfo/w/wyse50-wvb
+/usr/share/ncurses4/terminfo/w/wyse520
+/usr/share/ncurses4/terminfo/w/wyse520-24
+/usr/share/ncurses4/terminfo/w/wyse520-36
+/usr/share/ncurses4/terminfo/w/wyse520-36pc
+/usr/share/ncurses4/terminfo/w/wyse520-36w
+/usr/share/ncurses4/terminfo/w/wyse520-36wpc
+/usr/share/ncurses4/terminfo/w/wyse520-48
+/usr/share/ncurses4/terminfo/w/wyse520-48pc
+/usr/share/ncurses4/terminfo/w/wyse520-48w
+/usr/share/ncurses4/terminfo/w/wyse520-48wpc
+/usr/share/ncurses4/terminfo/w/wyse520-epc
+/usr/share/ncurses4/terminfo/w/wyse520-epc-w
+/usr/share/ncurses4/terminfo/w/wyse520-p-wvb
+/usr/share/ncurses4/terminfo/w/wyse520-pc-24
+/usr/share/ncurses4/terminfo/w/wyse520-pc-vb
+/usr/share/ncurses4/terminfo/w/wyse520-vb
+/usr/share/ncurses4/terminfo/w/wyse520-w
+/usr/share/ncurses4/terminfo/w/wyse520-wvb
+/usr/share/ncurses4/terminfo/w/wyse60
+/usr/share/ncurses4/terminfo/w/wyse60-25
+/usr/share/ncurses4/terminfo/w/wyse60-25-w
+/usr/share/ncurses4/terminfo/w/wyse60-316X
+/usr/share/ncurses4/terminfo/w/wyse60-42
+/usr/share/ncurses4/terminfo/w/wyse60-42-w
+/usr/share/ncurses4/terminfo/w/wyse60-43
+/usr/share/ncurses4/terminfo/w/wyse60-43-w
+/usr/share/ncurses4/terminfo/w/wyse60-vb
+/usr/share/ncurses4/terminfo/w/wyse60-w
+/usr/share/ncurses4/terminfo/w/wyse60-wvb
+/usr/share/ncurses4/terminfo/w/wyse75
+/usr/share/ncurses4/terminfo/w/wyse75-mc
+/usr/share/ncurses4/terminfo/w/wyse75-vb
+/usr/share/ncurses4/terminfo/w/wyse75-w
+/usr/share/ncurses4/terminfo/w/wyse75-wvb
+/usr/share/ncurses4/terminfo/w/wyse75ap
+/usr/share/ncurses4/terminfo/w/wyse85
+/usr/share/ncurses4/terminfo/w/wyse85-vb
+/usr/share/ncurses4/terminfo/w/wyse85-w
+/usr/share/ncurses4/terminfo/w/wyse85-wvb
+/usr/share/ncurses4/terminfo/w/wyse99gt
+/usr/share/ncurses4/terminfo/w/wyse99gt-25
+/usr/share/ncurses4/terminfo/w/wyse99gt-25-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-vb
+/usr/share/ncurses4/terminfo/w/wyse99gt-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-wvb
+/usr/share/ncurses4/terminfo/x
+/usr/share/ncurses4/terminfo/x/x10term
+/usr/share/ncurses4/terminfo/x/x1700
+/usr/share/ncurses4/terminfo/x/x1700-lm
+/usr/share/ncurses4/terminfo/x/x1720
+/usr/share/ncurses4/terminfo/x/x1750
+/usr/share/ncurses4/terminfo/x/x68k
+/usr/share/ncurses4/terminfo/x/x68k-ite
+/usr/share/ncurses4/terminfo/x/x820
+/usr/share/ncurses4/terminfo/x/xenix
+/usr/share/ncurses4/terminfo/x/xerox
+/usr/share/ncurses4/terminfo/x/xerox-lm
+/usr/share/ncurses4/terminfo/x/xerox1720
+/usr/share/ncurses4/terminfo/x/xerox820
+/usr/share/ncurses4/terminfo/x/xl83
+/usr/share/ncurses4/terminfo/x/xtalk
+/usr/share/ncurses4/terminfo/x/xterm
+/usr/share/ncurses4/terminfo/x/xterm+sl
+/usr/share/ncurses4/terminfo/x/xterm+sl-twm
+/usr/share/ncurses4/terminfo/x/xterm-16color
+/usr/share/ncurses4/terminfo/x/xterm-8bit
+/usr/share/ncurses4/terminfo/x/xterm-bold
+/usr/share/ncurses4/terminfo/x/xterm-nic
+/usr/share/ncurses4/terminfo/x/xterm-old
+/usr/share/ncurses4/terminfo/x/xterm-pcolor
+/usr/share/ncurses4/terminfo/x/xterm-r5
+/usr/share/ncurses4/terminfo/x/xterm-r6
+/usr/share/ncurses4/terminfo/x/xterm-sun
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v32
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v33
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v40
+/usr/share/ncurses4/terminfo/x/xterm-xi
+/usr/share/ncurses4/terminfo/x/xterm1
+/usr/share/ncurses4/terminfo/x/xterms
+/usr/share/ncurses4/terminfo/x/xterms-sun
+/usr/share/ncurses4/terminfo/x/xwsh
+/usr/share/ncurses4/terminfo/z
+/usr/share/ncurses4/terminfo/z/z-100
+/usr/share/ncurses4/terminfo/z/z-100bw
+/usr/share/ncurses4/terminfo/z/z100
+/usr/share/ncurses4/terminfo/z/z100bw
+/usr/share/ncurses4/terminfo/z/z110
+/usr/share/ncurses4/terminfo/z/z110bw
+/usr/share/ncurses4/terminfo/z/z19
+/usr/share/ncurses4/terminfo/z/z29
+/usr/share/ncurses4/terminfo/z/z29a
+/usr/share/ncurses4/terminfo/z/z29a-kc-bc
+/usr/share/ncurses4/terminfo/z/z29a-kc-uc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-bc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-uc
+/usr/share/ncurses4/terminfo/z/z29b
+/usr/share/ncurses4/terminfo/z/z30
+/usr/share/ncurses4/terminfo/z/z340
+/usr/share/ncurses4/terminfo/z/z340-nam
+/usr/share/ncurses4/terminfo/z/z39-a
+/usr/share/ncurses4/terminfo/z/z39a
+/usr/share/ncurses4/terminfo/z/z50
+/usr/share/ncurses4/terminfo/z/z8001
+/usr/share/ncurses4/terminfo/z/zen30
+/usr/share/ncurses4/terminfo/z/zen50
+/usr/share/ncurses4/terminfo/z/zen8001
+/usr/share/ncurses4/terminfo/z/zenith
+/usr/share/ncurses4/terminfo/z/zenith29
+/usr/share/ncurses4/terminfo/z/zenith39-a
+/usr/share/ncurses4/terminfo/z/zenith39-ansi
+/usr/share/ncurses4/terminfo/z/zt-1
+/usr/share/ncurses4/terminfo/z/ztx
+/usr/share/ncurses4/terminfo/z/ztx-1-a
+/usr/share/ncurses4/terminfo/z/ztx11
+</RPM:Files>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/result/rdf2.rde b/result/rdf2.rde
new file mode 100644
index 0000000..15e5e97
--- /dev/null
+++ b/result/rdf2.rde
@@ -0,0 +1,2008 @@
+0 1 RDF:RDF 0 0
+1 14 #text 0 1
+
+1 1 RDF:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Name 0 0
+3 3 #text 0 1 ncurses4
+2 15 RPM:Name 0 0
+2 14 #text 0 1
+
+2 1 RPM:Version 0 0
+3 3 #text 0 1 4.2
+2 15 RPM:Version 0 0
+2 14 #text 0 1
+
+2 1 RPM:Release 0 0
+3 3 #text 0 1 3
+2 15 RPM:Release 0 0
+2 14 #text 0 1
+
+2 1 RPM:Arch 0 0
+3 3 #text 0 1 i386
+2 15 RPM:Arch 0 0
+2 14 #text 0 1
+
+2 1 RPM:Os 0 0
+3 3 #text 0 1 Linux
+2 15 RPM:Os 0 0
+2 14 #text 0 1
+
+2 1 RPM:Distribution 0 0
+3 3 #text 0 1 DLD
+2 15 RPM:Distribution 0 0
+2 14 #text 0 1
+
+2 1 RPM:Vendor 0 0
+3 3 #text 0 1 delix Computer GmbH
+2 15 RPM:Vendor 0 0
+2 14 #text 0 1
+
+2 1 RPM:Packager 0 0
+3 3 #text 0 1 Till Bubeck <bubeck@delix.de>, Ngo Than <than@delix.de>
+2 15 RPM:Packager 0 0
+2 14 #text 0 1
+
+2 1 RPM:Group 0 0
+3 3 #text 0 1 Libraries
+2 15 RPM:Group 0 0
+2 14 #text 0 1
+
+2 1 RPM:Summary 0 0
+3 3 #text 0 1 Bibliothek zur Ansteuerung von Terminals
+2 15 RPM:Summary 0 0
+2 14 #text 0 1
+
+2 1 RPM:Description 0 0
+3 3 #text 0 1 Diese Library stellt dem Programmierer vom Terminal unabhängige
+Routinen zur Ansteuerung Ihres Bildschirms zur Verfügung, die
+speziell optimiert sind.
+Diese Version ist die 'new curses' (ncurses) Variante und ist der
+anerkannte Ersatz für die klassische Curses-Library, die nicht mehr
+weiterentwickelt wird.
+2 15 RPM:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Copyright 0 0
+3 3 #text 0 1 GPL
+2 15 RPM:Copyright 0 0
+2 14 #text 0 1
+
+2 1 RPM:Sources 0 0
+3 3 #text 0 1 ncurses4-4.2-3.src.rpm
+2 15 RPM:Sources 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildDate 0 0
+3 3 #text 0 1 Tue May 12 19:30:26 1998
+2 15 RPM:BuildDate 0 0
+2 14 #text 0 1
+
+2 1 RPM:Date 0 0
+3 3 #text 0 1 895015826
+2 15 RPM:Date 0 0
+2 14 #text 0 1
+
+2 1 RPM:Size 0 0
+3 3 #text 0 1 1373513
+2 15 RPM:Size 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildHost 0 0
+3 3 #text 0 1 erdbeere.delix.de
+2 15 RPM:BuildHost 0 0
+2 14 #text 0 1
+
+2 1 RPM:Provides 0 0
+3 14 #text 0 1
+
+3 1 RDF:Bag 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 ncurses4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libpanel.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libncurses.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libmenu.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libform.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 ncurses
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+3 15 RDF:Bag 0 0
+3 14 #text 0 1
+
+2 15 RPM:Provides 0 0
+2 14 #text 0 1
+
+2 1 RPM:Files 0 0
+3 3 #text 0 1 /lib/libncurses.so.4
+/lib/libncurses.so.4.2
+/usr/doc/ncurses4-4.2-3
+/usr/doc/ncurses4-4.2-3/ANNOUNCE.gz
+/usr/doc/ncurses4-4.2-3/NEWS.gz
+/usr/doc/ncurses4-4.2-3/README.gz
+/usr/doc/ncurses4-4.2-3/TO-DO.gz
+/usr/lib/libform.so.4
+/usr/lib/libform.so.4.2
+/usr/lib/libmenu.so.4
+/usr/lib/libmenu.so.4.2
+/usr/lib/libpanel.so.4
+/usr/lib/libpanel.so.4.2
+/usr/share/ncurses4
+/usr/share/ncurses4/tabset
+/usr/share/ncurses4/tabset/std
+/usr/share/ncurses4/tabset/stdcrt
+/usr/share/ncurses4/tabset/vt100
+/usr/share/ncurses4/tabset/vt300
+/usr/share/ncurses4/terminfo
+/usr/share/ncurses4/terminfo/1
+/usr/share/ncurses4/terminfo/1/1178
+/usr/share/ncurses4/terminfo/1/1730-lm
+/usr/share/ncurses4/terminfo/2
+/usr/share/ncurses4/terminfo/2/2621
+/usr/share/ncurses4/terminfo/2/2621-wl
+/usr/share/ncurses4/terminfo/2/2621A
+/usr/share/ncurses4/terminfo/2/2621a
+/usr/share/ncurses4/terminfo/3
+/usr/share/ncurses4/terminfo/3/386at
+/usr/share/ncurses4/terminfo/3/3b1
+/usr/share/ncurses4/terminfo/4
+/usr/share/ncurses4/terminfo/4/4025ex
+/usr/share/ncurses4/terminfo/4/4027ex
+/usr/share/ncurses4/terminfo/4/4410-w
+/usr/share/ncurses4/terminfo/5
+/usr/share/ncurses4/terminfo/5/5051
+/usr/share/ncurses4/terminfo/5/5410-w
+/usr/share/ncurses4/terminfo/5/5620
+/usr/share/ncurses4/terminfo/5/5630-24
+/usr/share/ncurses4/terminfo/5/5630DMD-24
+/usr/share/ncurses4/terminfo/6
+/usr/share/ncurses4/terminfo/6/630-lm
+/usr/share/ncurses4/terminfo/6/630MTG-24
+/usr/share/ncurses4/terminfo/7
+/usr/share/ncurses4/terminfo/7/730MTG-24
+/usr/share/ncurses4/terminfo/7/730MTG-41
+/usr/share/ncurses4/terminfo/7/730MTG-41r
+/usr/share/ncurses4/terminfo/7/730MTGr
+/usr/share/ncurses4/terminfo/7/730MTGr-24
+/usr/share/ncurses4/terminfo/8
+/usr/share/ncurses4/terminfo/8/8510
+/usr/share/ncurses4/terminfo/9
+/usr/share/ncurses4/terminfo/9/955-hb
+/usr/share/ncurses4/terminfo/9/955-w
+/usr/share/ncurses4/terminfo/P
+/usr/share/ncurses4/terminfo/P/P12
+/usr/share/ncurses4/terminfo/P/P12-M
+/usr/share/ncurses4/terminfo/P/P12-M-W
+/usr/share/ncurses4/terminfo/P/P12-W
+/usr/share/ncurses4/terminfo/P/P14
+/usr/share/ncurses4/terminfo/P/P14-M
+/usr/share/ncurses4/terminfo/P/P14-M-W
+/usr/share/ncurses4/terminfo/P/P14-W
+/usr/share/ncurses4/terminfo/P/P4
+/usr/share/ncurses4/terminfo/P/P5
+/usr/share/ncurses4/terminfo/P/P7
+/usr/share/ncurses4/terminfo/P/P8
+/usr/share/ncurses4/terminfo/P/P8-W
+/usr/share/ncurses4/terminfo/P/P9
+/usr/share/ncurses4/terminfo/P/P9-8
+/usr/share/ncurses4/terminfo/P/P9-8-W
+/usr/share/ncurses4/terminfo/P/P9-W
+/usr/share/ncurses4/terminfo/X
+/usr/share/ncurses4/terminfo/X/X-hpterm
+/usr/share/ncurses4/terminfo/a
+/usr/share/ncurses4/terminfo/a/a210
+/usr/share/ncurses4/terminfo/a/a80
+/usr/share/ncurses4/terminfo/a/a980
+/usr/share/ncurses4/terminfo/a/aa4080
+/usr/share/ncurses4/terminfo/a/aaa
+/usr/share/ncurses4/terminfo/a/aaa+dec
+/usr/share/ncurses4/terminfo/a/aaa+rv
+/usr/share/ncurses4/terminfo/a/aaa+unk
+/usr/share/ncurses4/terminfo/a/aaa-18
+/usr/share/ncurses4/terminfo/a/aaa-18-rv
+/usr/share/ncurses4/terminfo/a/aaa-20
+/usr/share/ncurses4/terminfo/a/aaa-22
+/usr/share/ncurses4/terminfo/a/aaa-24
+/usr/share/ncurses4/terminfo/a/aaa-24-rv
+/usr/share/ncurses4/terminfo/a/aaa-26
+/usr/share/ncurses4/terminfo/a/aaa-28
+/usr/share/ncurses4/terminfo/a/aaa-30
+/usr/share/ncurses4/terminfo/a/aaa-30-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s
+/usr/share/ncurses4/terminfo/a/aaa-30-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv-ct
+/usr/share/ncurses4/terminfo/a/aaa-36
+/usr/share/ncurses4/terminfo/a/aaa-36-rv
+/usr/share/ncurses4/terminfo/a/aaa-40
+/usr/share/ncurses4/terminfo/a/aaa-40-rv
+/usr/share/ncurses4/terminfo/a/aaa-48
+/usr/share/ncurses4/terminfo/a/aaa-48-rv
+/usr/share/ncurses4/terminfo/a/aaa-60
+/usr/share/ncurses4/terminfo/a/aaa-60-dec-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-s
+/usr/share/ncurses4/terminfo/a/aaa-60-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-db
+/usr/share/ncurses4/terminfo/a/aaa-rv
+/usr/share/ncurses4/terminfo/a/aaa-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-rv-unk
+/usr/share/ncurses4/terminfo/a/aaa-s
+/usr/share/ncurses4/terminfo/a/aaa-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-s-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-unk
+/usr/share/ncurses4/terminfo/a/aas1901
+/usr/share/ncurses4/terminfo/a/abm80
+/usr/share/ncurses4/terminfo/a/abm85
+/usr/share/ncurses4/terminfo/a/abm85e
+/usr/share/ncurses4/terminfo/a/abm85h
+/usr/share/ncurses4/terminfo/a/abm85h-old
+/usr/share/ncurses4/terminfo/a/act4
+/usr/share/ncurses4/terminfo/a/act5
+/usr/share/ncurses4/terminfo/a/addrinfo
+/usr/share/ncurses4/terminfo/a/adds980
+/usr/share/ncurses4/terminfo/a/addsviewpoint
+/usr/share/ncurses4/terminfo/a/addsvp60
+/usr/share/ncurses4/terminfo/a/adm+sgr
+/usr/share/ncurses4/terminfo/a/adm1
+/usr/share/ncurses4/terminfo/a/adm11
+/usr/share/ncurses4/terminfo/a/adm1178
+/usr/share/ncurses4/terminfo/a/adm12
+/usr/share/ncurses4/terminfo/a/adm1a
+/usr/share/ncurses4/terminfo/a/adm2
+/usr/share/ncurses4/terminfo/a/adm20
+/usr/share/ncurses4/terminfo/a/adm21
+/usr/share/ncurses4/terminfo/a/adm22
+/usr/share/ncurses4/terminfo/a/adm3
+/usr/share/ncurses4/terminfo/a/adm31
+/usr/share/ncurses4/terminfo/a/adm31-old
+/usr/share/ncurses4/terminfo/a/adm36
+/usr/share/ncurses4/terminfo/a/adm3a
+/usr/share/ncurses4/terminfo/a/adm3a+
+/usr/share/ncurses4/terminfo/a/adm42
+/usr/share/ncurses4/terminfo/a/adm42-ns
+/usr/share/ncurses4/terminfo/a/adm5
+/usr/share/ncurses4/terminfo/a/aepro
+/usr/share/ncurses4/terminfo/a/aixterm-m
+/usr/share/ncurses4/terminfo/a/aixterm-m-old
+/usr/share/ncurses4/terminfo/a/aj
+/usr/share/ncurses4/terminfo/a/aj510
+/usr/share/ncurses4/terminfo/a/aj830
+/usr/share/ncurses4/terminfo/a/aj832
+/usr/share/ncurses4/terminfo/a/alt2
+/usr/share/ncurses4/terminfo/a/alt3
+/usr/share/ncurses4/terminfo/a/alt4
+/usr/share/ncurses4/terminfo/a/alt5
+/usr/share/ncurses4/terminfo/a/alt7
+/usr/share/ncurses4/terminfo/a/alt7pc
+/usr/share/ncurses4/terminfo/a/alto-h19
+/usr/share/ncurses4/terminfo/a/alto-heath
+/usr/share/ncurses4/terminfo/a/altoh19
+/usr/share/ncurses4/terminfo/a/altoheath
+/usr/share/ncurses4/terminfo/a/altos-2
+/usr/share/ncurses4/terminfo/a/altos-3
+/usr/share/ncurses4/terminfo/a/altos-4
+/usr/share/ncurses4/terminfo/a/altos-5
+/usr/share/ncurses4/terminfo/a/altos2
+/usr/share/ncurses4/terminfo/a/altos3
+/usr/share/ncurses4/terminfo/a/altos4
+/usr/share/ncurses4/terminfo/a/altos5
+/usr/share/ncurses4/terminfo/a/altos7
+/usr/share/ncurses4/terminfo/a/altos7pc
+/usr/share/ncurses4/terminfo/a/ambas
+/usr/share/ncurses4/terminfo/a/ambassador
+/usr/share/ncurses4/terminfo/a/amiga
+/usr/share/ncurses4/terminfo/a/amiga-h
+/usr/share/ncurses4/terminfo/a/amp219
+/usr/share/ncurses4/terminfo/a/amp219w
+/usr/share/ncurses4/terminfo/a/ampex-219
+/usr/share/ncurses4/terminfo/a/ampex-219w
+/usr/share/ncurses4/terminfo/a/ampex-232
+/usr/share/ncurses4/terminfo/a/ampex175
+/usr/share/ncurses4/terminfo/a/ampex175-b
+/usr/share/ncurses4/terminfo/a/ampex210
+/usr/share/ncurses4/terminfo/a/ampex219
+/usr/share/ncurses4/terminfo/a/ampex219w
+/usr/share/ncurses4/terminfo/a/ampex232
+/usr/share/ncurses4/terminfo/a/ampex232w
+/usr/share/ncurses4/terminfo/a/ampex80
+/usr/share/ncurses4/terminfo/a/annarbor4080
+/usr/share/ncurses4/terminfo/a/ansi
+/usr/share/ncurses4/terminfo/a/ansi-color-2-emx
+/usr/share/ncurses4/terminfo/a/ansi-color-3-emx
+/usr/share/ncurses4/terminfo/a/ansi-emx
+/usr/share/ncurses4/terminfo/a/ansi-m
+/usr/share/ncurses4/terminfo/a/ansi-mini
+/usr/share/ncurses4/terminfo/a/ansi-mono
+/usr/share/ncurses4/terminfo/a/ansi-nt
+/usr/share/ncurses4/terminfo/a/ansi.sys
+/usr/share/ncurses4/terminfo/a/ansi.sys-old
+/usr/share/ncurses4/terminfo/a/ansi.sysk
+/usr/share/ncurses4/terminfo/a/ansi43m
+/usr/share/ncurses4/terminfo/a/ansi77
+/usr/share/ncurses4/terminfo/a/ansi80x25
+/usr/share/ncurses4/terminfo/a/ansi80x25-mono
+/usr/share/ncurses4/terminfo/a/ansi80x25-raw
+/usr/share/ncurses4/terminfo/a/ansi80x30
+/usr/share/ncurses4/terminfo/a/ansi80x30-mono
+/usr/share/ncurses4/terminfo/a/ansi80x43
+/usr/share/ncurses4/terminfo/a/ansi80x43-mono
+/usr/share/ncurses4/terminfo/a/ansi80x50
+/usr/share/ncurses4/terminfo/a/ansi80x50-mono
+/usr/share/ncurses4/terminfo/a/ansi80x60
+/usr/share/ncurses4/terminfo/a/ansi80x60-mono
+/usr/share/ncurses4/terminfo/a/ansil
+/usr/share/ncurses4/terminfo/a/ansil-mono
+/usr/share/ncurses4/terminfo/a/ansis
+/usr/share/ncurses4/terminfo/a/ansis-mono
+/usr/share/ncurses4/terminfo/a/ansisysk
+/usr/share/ncurses4/terminfo/a/ansiw
+/usr/share/ncurses4/terminfo/a/ap-vm80
+/usr/share/ncurses4/terminfo/a/apl
+/usr/share/ncurses4/terminfo/a/apollo
+/usr/share/ncurses4/terminfo/a/apollo_15P
+/usr/share/ncurses4/terminfo/a/apollo_19L
+/usr/share/ncurses4/terminfo/a/apollo_color
+/usr/share/ncurses4/terminfo/a/apple-80
+/usr/share/ncurses4/terminfo/a/apple-ae
+/usr/share/ncurses4/terminfo/a/apple-soroc
+/usr/share/ncurses4/terminfo/a/apple-uterm
+/usr/share/ncurses4/terminfo/a/apple-uterm-vb
+/usr/share/ncurses4/terminfo/a/apple-videx
+/usr/share/ncurses4/terminfo/a/apple-videx2
+/usr/share/ncurses4/terminfo/a/apple-videx3
+/usr/share/ncurses4/terminfo/a/apple-vm80
+/usr/share/ncurses4/terminfo/a/apple2e
+/usr/share/ncurses4/terminfo/a/apple2e-p
+/usr/share/ncurses4/terminfo/a/apple80p
+/usr/share/ncurses4/terminfo/a/appleII
+/usr/share/ncurses4/terminfo/a/appleIIc
+/usr/share/ncurses4/terminfo/a/appleIIe
+/usr/share/ncurses4/terminfo/a/appleIIgs
+/usr/share/ncurses4/terminfo/a/at386
+/usr/share/ncurses4/terminfo/a/atari
+/usr/share/ncurses4/terminfo/a/att2300
+/usr/share/ncurses4/terminfo/a/att2350
+/usr/share/ncurses4/terminfo/a/att4410
+/usr/share/ncurses4/terminfo/a/att4410-w
+/usr/share/ncurses4/terminfo/a/att4410v1
+/usr/share/ncurses4/terminfo/a/att4410v1-w
+/usr/share/ncurses4/terminfo/a/att4415
+/usr/share/ncurses4/terminfo/a/att4415+nl
+/usr/share/ncurses4/terminfo/a/att4415-nl
+/usr/share/ncurses4/terminfo/a/att4415-rv
+/usr/share/ncurses4/terminfo/a/att4415-rv-nl
+/usr/share/ncurses4/terminfo/a/att4415-w
+/usr/share/ncurses4/terminfo/a/att4415-w-nl
+/usr/share/ncurses4/terminfo/a/att4415-w-rv
+/usr/share/ncurses4/terminfo/a/att4415-w-rv-n
+/usr/share/ncurses4/terminfo/a/att4418
+/usr/share/ncurses4/terminfo/a/att4418-w
+/usr/share/ncurses4/terminfo/a/att4420
+/usr/share/ncurses4/terminfo/a/att4424
+/usr/share/ncurses4/terminfo/a/att4424-1
+/usr/share/ncurses4/terminfo/a/att4424m
+/usr/share/ncurses4/terminfo/a/att4425
+/usr/share/ncurses4/terminfo/a/att4425-nl
+/usr/share/ncurses4/terminfo/a/att4425-w
+/usr/share/ncurses4/terminfo/a/att4426
+/usr/share/ncurses4/terminfo/a/att500
+/usr/share/ncurses4/terminfo/a/att505
+/usr/share/ncurses4/terminfo/a/att505-24
+/usr/share/ncurses4/terminfo/a/att510a
+/usr/share/ncurses4/terminfo/a/att510d
+/usr/share/ncurses4/terminfo/a/att513
+/usr/share/ncurses4/terminfo/a/att5310
+/usr/share/ncurses4/terminfo/a/att5320
+/usr/share/ncurses4/terminfo/a/att5410
+/usr/share/ncurses4/terminfo/a/att5410-w
+/usr/share/ncurses4/terminfo/a/att5410v1
+/usr/share/ncurses4/terminfo/a/att5410v1-w
+/usr/share/ncurses4/terminfo/a/att5418
+/usr/share/ncurses4/terminfo/a/att5418-w
+/usr/share/ncurses4/terminfo/a/att5420
+/usr/share/ncurses4/terminfo/a/att5420+nl
+/usr/share/ncurses4/terminfo/a/att5420-nl
+/usr/share/ncurses4/terminfo/a/att5420-rv
+/usr/share/ncurses4/terminfo/a/att5420-rv-nl
+/usr/share/ncurses4/terminfo/a/att5420-w
+/usr/share/ncurses4/terminfo/a/att5420-w-nl
+/usr/share/ncurses4/terminfo/a/att5420-w-rv
+/usr/share/ncurses4/terminfo/a/att5420-w-rv-n
+/usr/share/ncurses4/terminfo/a/att5420_2
+/usr/share/ncurses4/terminfo/a/att5420_2-w
+/usr/share/ncurses4/terminfo/a/att5425
+/usr/share/ncurses4/terminfo/a/att5425-nl
+/usr/share/ncurses4/terminfo/a/att5425-w
+/usr/share/ncurses4/terminfo/a/att5430
+/usr/share/ncurses4/terminfo/a/att5620
+/usr/share/ncurses4/terminfo/a/att5620-1
+/usr/share/ncurses4/terminfo/a/att5620-24
+/usr/share/ncurses4/terminfo/a/att5620-34
+/usr/share/ncurses4/terminfo/a/att5620-s
+/usr/share/ncurses4/terminfo/a/att605
+/usr/share/ncurses4/terminfo/a/att605-pc
+/usr/share/ncurses4/terminfo/a/att605-w
+/usr/share/ncurses4/terminfo/a/att610
+/usr/share/ncurses4/terminfo/a/att610-103k
+/usr/share/ncurses4/terminfo/a/att610-103k-w
+/usr/share/ncurses4/terminfo/a/att610-w
+/usr/share/ncurses4/terminfo/a/att615
+/usr/share/ncurses4/terminfo/a/att615-103k
+/usr/share/ncurses4/terminfo/a/att615-103k-w
+/usr/share/ncurses4/terminfo/a/att615-w
+/usr/share/ncurses4/terminfo/a/att620
+/usr/share/ncurses4/terminfo/a/att620-103k
+/usr/share/ncurses4/terminfo/a/att620-103k-w
+/usr/share/ncurses4/terminfo/a/att620-w
+/usr/share/ncurses4/terminfo/a/att630
+/usr/share/ncurses4/terminfo/a/att630-24
+/usr/share/ncurses4/terminfo/a/att6386
+/usr/share/ncurses4/terminfo/a/att730
+/usr/share/ncurses4/terminfo/a/att730-24
+/usr/share/ncurses4/terminfo/a/att730-41
+/usr/share/ncurses4/terminfo/a/att7300
+/usr/share/ncurses4/terminfo/a/att730r
+/usr/share/ncurses4/terminfo/a/att730r-24
+/usr/share/ncurses4/terminfo/a/att730r-41
+/usr/share/ncurses4/terminfo/a/avatar
+/usr/share/ncurses4/terminfo/a/avatar0
+/usr/share/ncurses4/terminfo/a/avatar0+
+/usr/share/ncurses4/terminfo/a/avatar1
+/usr/share/ncurses4/terminfo/a/avt
+/usr/share/ncurses4/terminfo/a/avt+s
+/usr/share/ncurses4/terminfo/a/avt-ns
+/usr/share/ncurses4/terminfo/a/avt-rv
+/usr/share/ncurses4/terminfo/a/avt-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-rv-s
+/usr/share/ncurses4/terminfo/a/avt-s
+/usr/share/ncurses4/terminfo/a/avt-w
+/usr/share/ncurses4/terminfo/a/avt-w-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv
+/usr/share/ncurses4/terminfo/a/avt-w-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv-s
+/usr/share/ncurses4/terminfo/a/avt-w-s
+/usr/share/ncurses4/terminfo/a/aws
+/usr/share/ncurses4/terminfo/a/awsc
+/usr/share/ncurses4/terminfo/b
+/usr/share/ncurses4/terminfo/b/b-128
+/usr/share/ncurses4/terminfo/b/bantam
+/usr/share/ncurses4/terminfo/b/basic4
+/usr/share/ncurses4/terminfo/b/basis
+/usr/share/ncurses4/terminfo/b/bct510a
+/usr/share/ncurses4/terminfo/b/bct510d
+/usr/share/ncurses4/terminfo/b/beacon
+/usr/share/ncurses4/terminfo/b/bee
+/usr/share/ncurses4/terminfo/b/beehive
+/usr/share/ncurses4/terminfo/b/beehive3
+/usr/share/ncurses4/terminfo/b/beehive4
+/usr/share/ncurses4/terminfo/b/beehiveIIIm
+/usr/share/ncurses4/terminfo/b/beterm
+/usr/share/ncurses4/terminfo/b/bg1.25
+/usr/share/ncurses4/terminfo/b/bg1.25nv
+/usr/share/ncurses4/terminfo/b/bg1.25rv
+/usr/share/ncurses4/terminfo/b/bg2.0
+/usr/share/ncurses4/terminfo/b/bg2.0nv
+/usr/share/ncurses4/terminfo/b/bg2.0rv
+/usr/share/ncurses4/terminfo/b/bg3.10
+/usr/share/ncurses4/terminfo/b/bg3.10nv
+/usr/share/ncurses4/terminfo/b/bg3.10rv
+/usr/share/ncurses4/terminfo/b/bh3m
+/usr/share/ncurses4/terminfo/b/bh4
+/usr/share/ncurses4/terminfo/b/bitgraph
+/usr/share/ncurses4/terminfo/b/blit
+/usr/share/ncurses4/terminfo/b/bobcat
+/usr/share/ncurses4/terminfo/b/bsdos
+/usr/share/ncurses4/terminfo/b/bsdos-bold
+/usr/share/ncurses4/terminfo/c
+/usr/share/ncurses4/terminfo/c/c100
+/usr/share/ncurses4/terminfo/c/c100-1p
+/usr/share/ncurses4/terminfo/c/c100-4p
+/usr/share/ncurses4/terminfo/c/c100-rv
+/usr/share/ncurses4/terminfo/c/c100-rv-4p
+/usr/share/ncurses4/terminfo/c/c104
+/usr/share/ncurses4/terminfo/c/c108
+/usr/share/ncurses4/terminfo/c/c108-4p
+/usr/share/ncurses4/terminfo/c/c108-8p
+/usr/share/ncurses4/terminfo/c/c108-rv
+/usr/share/ncurses4/terminfo/c/c108-rv-4p
+/usr/share/ncurses4/terminfo/c/c108-rv-8p
+/usr/share/ncurses4/terminfo/c/c108-w
+/usr/share/ncurses4/terminfo/c/c108-w-8p
+/usr/share/ncurses4/terminfo/c/c300
+/usr/share/ncurses4/terminfo/c/c301
+/usr/share/ncurses4/terminfo/c/c321
+/usr/share/ncurses4/terminfo/c/ca22851
+/usr/share/ncurses4/terminfo/c/cad68-2
+/usr/share/ncurses4/terminfo/c/cad68-3
+/usr/share/ncurses4/terminfo/c/cbblit
+/usr/share/ncurses4/terminfo/c/cbunix
+/usr/share/ncurses4/terminfo/c/cci
+/usr/share/ncurses4/terminfo/c/cci1
+/usr/share/ncurses4/terminfo/c/cdc456
+/usr/share/ncurses4/terminfo/c/cdc721
+/usr/share/ncurses4/terminfo/c/cdc721-esc
+/usr/share/ncurses4/terminfo/c/cdc721ll
+/usr/share/ncurses4/terminfo/c/cdc752
+/usr/share/ncurses4/terminfo/c/cdc756
+/usr/share/ncurses4/terminfo/c/cg7900
+/usr/share/ncurses4/terminfo/c/cgc2
+/usr/share/ncurses4/terminfo/c/cgc3
+/usr/share/ncurses4/terminfo/c/chromatics
+/usr/share/ncurses4/terminfo/c/ci8510
+/usr/share/ncurses4/terminfo/c/cit-80
+/usr/share/ncurses4/terminfo/c/cit101
+/usr/share/ncurses4/terminfo/c/cit101e
+/usr/share/ncurses4/terminfo/c/cit101e-132
+/usr/share/ncurses4/terminfo/c/cit101e-n
+/usr/share/ncurses4/terminfo/c/cit101e-n132
+/usr/share/ncurses4/terminfo/c/cit101e-rv
+/usr/share/ncurses4/terminfo/c/cit500
+/usr/share/ncurses4/terminfo/c/cit80
+/usr/share/ncurses4/terminfo/c/citc
+/usr/share/ncurses4/terminfo/c/citoh
+/usr/share/ncurses4/terminfo/c/citoh-6lpi
+/usr/share/ncurses4/terminfo/c/citoh-8lpi
+/usr/share/ncurses4/terminfo/c/citoh-comp
+/usr/share/ncurses4/terminfo/c/citoh-elite
+/usr/share/ncurses4/terminfo/c/citoh-pica
+/usr/share/ncurses4/terminfo/c/citoh-prop
+/usr/share/ncurses4/terminfo/c/citoh-ps
+/usr/share/ncurses4/terminfo/c/coco3
+/usr/share/ncurses4/terminfo/c/coherent
+/usr/share/ncurses4/terminfo/c/color_xterm
+/usr/share/ncurses4/terminfo/c/colorscan
+/usr/share/ncurses4/terminfo/c/commodore
+/usr/share/ncurses4/terminfo/c/concept
+/usr/share/ncurses4/terminfo/c/concept-avt
+/usr/share/ncurses4/terminfo/c/concept100
+/usr/share/ncurses4/terminfo/c/concept100-rv
+/usr/share/ncurses4/terminfo/c/concept108
+/usr/share/ncurses4/terminfo/c/concept108-4p
+/usr/share/ncurses4/terminfo/c/concept108-8p
+/usr/share/ncurses4/terminfo/c/concept108-w-8
+/usr/share/ncurses4/terminfo/c/concept108-w8p
+/usr/share/ncurses4/terminfo/c/concept108rv4p
+/usr/share/ncurses4/terminfo/c/cons25
+/usr/share/ncurses4/terminfo/c/cons25-iso-m
+/usr/share/ncurses4/terminfo/c/cons25-iso8859
+/usr/share/ncurses4/terminfo/c/cons25-koi8-r
+/usr/share/ncurses4/terminfo/c/cons25-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons25-m
+/usr/share/ncurses4/terminfo/c/cons25l1
+/usr/share/ncurses4/terminfo/c/cons25l1-m
+/usr/share/ncurses4/terminfo/c/cons25r
+/usr/share/ncurses4/terminfo/c/cons25r-m
+/usr/share/ncurses4/terminfo/c/cons25w
+/usr/share/ncurses4/terminfo/c/cons30
+/usr/share/ncurses4/terminfo/c/cons30-m
+/usr/share/ncurses4/terminfo/c/cons43
+/usr/share/ncurses4/terminfo/c/cons43-m
+/usr/share/ncurses4/terminfo/c/cons50
+/usr/share/ncurses4/terminfo/c/cons50-iso-m
+/usr/share/ncurses4/terminfo/c/cons50-iso8859
+/usr/share/ncurses4/terminfo/c/cons50-koi8r
+/usr/share/ncurses4/terminfo/c/cons50-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons50-m
+/usr/share/ncurses4/terminfo/c/cons50l1
+/usr/share/ncurses4/terminfo/c/cons50l1-m
+/usr/share/ncurses4/terminfo/c/cons50r
+/usr/share/ncurses4/terminfo/c/cons50r-m
+/usr/share/ncurses4/terminfo/c/cons60
+/usr/share/ncurses4/terminfo/c/cons60-iso
+/usr/share/ncurses4/terminfo/c/cons60-iso-m
+/usr/share/ncurses4/terminfo/c/cons60-koi8r
+/usr/share/ncurses4/terminfo/c/cons60-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons60-m
+/usr/share/ncurses4/terminfo/c/cons60l1
+/usr/share/ncurses4/terminfo/c/cons60l1-m
+/usr/share/ncurses4/terminfo/c/cons60r
+/usr/share/ncurses4/terminfo/c/cons60r-m
+/usr/share/ncurses4/terminfo/c/contel300
+/usr/share/ncurses4/terminfo/c/contel301
+/usr/share/ncurses4/terminfo/c/contel320
+/usr/share/ncurses4/terminfo/c/contel321
+/usr/share/ncurses4/terminfo/c/cops
+/usr/share/ncurses4/terminfo/c/cops-10
+/usr/share/ncurses4/terminfo/c/cops10
+/usr/share/ncurses4/terminfo/c/cs10
+/usr/share/ncurses4/terminfo/c/cs10-w
+/usr/share/ncurses4/terminfo/c/ct82
+/usr/share/ncurses4/terminfo/c/ct8500
+/usr/share/ncurses4/terminfo/c/ctrm
+/usr/share/ncurses4/terminfo/c/cx
+/usr/share/ncurses4/terminfo/c/cx100
+/usr/share/ncurses4/terminfo/c/cyb110
+/usr/share/ncurses4/terminfo/c/cyb83
+/usr/share/ncurses4/terminfo/d
+/usr/share/ncurses4/terminfo/d/d132
+/usr/share/ncurses4/terminfo/d/d80
+/usr/share/ncurses4/terminfo/d/d800
+/usr/share/ncurses4/terminfo/d/datagraphix
+/usr/share/ncurses4/terminfo/d/datamedia2500
+/usr/share/ncurses4/terminfo/d/datapoint
+/usr/share/ncurses4/terminfo/d/dataspeed40
+/usr/share/ncurses4/terminfo/d/dd5000
+/usr/share/ncurses4/terminfo/d/ddr
+/usr/share/ncurses4/terminfo/d/ddr3180
+/usr/share/ncurses4/terminfo/d/dec-vt100
+/usr/share/ncurses4/terminfo/d/dec-vt220
+/usr/share/ncurses4/terminfo/d/dec-vt330
+/usr/share/ncurses4/terminfo/d/dec-vt340
+/usr/share/ncurses4/terminfo/d/dec-vt400
+/usr/share/ncurses4/terminfo/d/decpro
+/usr/share/ncurses4/terminfo/d/decwriter
+/usr/share/ncurses4/terminfo/d/delta
+/usr/share/ncurses4/terminfo/d/dg-ansi
+/usr/share/ncurses4/terminfo/d/dg100
+/usr/share/ncurses4/terminfo/d/dg200
+/usr/share/ncurses4/terminfo/d/dg210
+/usr/share/ncurses4/terminfo/d/dg211
+/usr/share/ncurses4/terminfo/d/dg450
+/usr/share/ncurses4/terminfo/d/dg460-ansi
+/usr/share/ncurses4/terminfo/d/dg6053
+/usr/share/ncurses4/terminfo/d/dg6134
+/usr/share/ncurses4/terminfo/d/diablo
+/usr/share/ncurses4/terminfo/d/diablo-lm
+/usr/share/ncurses4/terminfo/d/diablo1620
+/usr/share/ncurses4/terminfo/d/diablo1620-m8
+/usr/share/ncurses4/terminfo/d/diablo1640
+/usr/share/ncurses4/terminfo/d/diablo1640-lm
+/usr/share/ncurses4/terminfo/d/diablo1640-m8
+/usr/share/ncurses4/terminfo/d/diablo1720
+/usr/share/ncurses4/terminfo/d/diablo1730
+/usr/share/ncurses4/terminfo/d/diablo1740
+/usr/share/ncurses4/terminfo/d/diablo1740-lm
+/usr/share/ncurses4/terminfo/d/diablo450
+/usr/share/ncurses4/terminfo/d/diablo630
+/usr/share/ncurses4/terminfo/d/dialogue
+/usr/share/ncurses4/terminfo/d/dialogue80
+/usr/share/ncurses4/terminfo/d/digilog
+/usr/share/ncurses4/terminfo/d/dku7003
+/usr/share/ncurses4/terminfo/d/dku7003-dumb
+/usr/share/ncurses4/terminfo/d/dm1520
+/usr/share/ncurses4/terminfo/d/dm1521
+/usr/share/ncurses4/terminfo/d/dm2500
+/usr/share/ncurses4/terminfo/d/dm3025
+/usr/share/ncurses4/terminfo/d/dm3045
+/usr/share/ncurses4/terminfo/d/dm80
+/usr/share/ncurses4/terminfo/d/dm80w
+/usr/share/ncurses4/terminfo/d/dmchat
+/usr/share/ncurses4/terminfo/d/dmd
+/usr/share/ncurses4/terminfo/d/dmd-24
+/usr/share/ncurses4/terminfo/d/dmd-34
+/usr/share/ncurses4/terminfo/d/dmd1
+/usr/share/ncurses4/terminfo/d/dmdt80
+/usr/share/ncurses4/terminfo/d/dmdt80w
+/usr/share/ncurses4/terminfo/d/dmterm
+/usr/share/ncurses4/terminfo/d/dp3360
+/usr/share/ncurses4/terminfo/d/dp8242
+/usr/share/ncurses4/terminfo/d/ds40
+/usr/share/ncurses4/terminfo/d/ds40-2
+/usr/share/ncurses4/terminfo/d/dt-100
+/usr/share/ncurses4/terminfo/d/dt-100w
+/usr/share/ncurses4/terminfo/d/dt100
+/usr/share/ncurses4/terminfo/d/dt100w
+/usr/share/ncurses4/terminfo/d/dt110
+/usr/share/ncurses4/terminfo/d/dt80
+/usr/share/ncurses4/terminfo/d/dt80-sas
+/usr/share/ncurses4/terminfo/d/dt80w
+/usr/share/ncurses4/terminfo/d/dtc300s
+/usr/share/ncurses4/terminfo/d/dtc382
+/usr/share/ncurses4/terminfo/d/dtterm
+/usr/share/ncurses4/terminfo/d/dumb
+/usr/share/ncurses4/terminfo/d/dw
+/usr/share/ncurses4/terminfo/d/dw1
+/usr/share/ncurses4/terminfo/d/dw2
+/usr/share/ncurses4/terminfo/d/dw3
+/usr/share/ncurses4/terminfo/d/dw4
+/usr/share/ncurses4/terminfo/d/dwk
+/usr/share/ncurses4/terminfo/d/dwk-vt
+/usr/share/ncurses4/terminfo/e
+/usr/share/ncurses4/terminfo/e/ecma+color
+/usr/share/ncurses4/terminfo/e/ecma+sgr
+/usr/share/ncurses4/terminfo/e/emots
+/usr/share/ncurses4/terminfo/e/emu
+/usr/share/ncurses4/terminfo/e/env230
+/usr/share/ncurses4/terminfo/e/envision230
+/usr/share/ncurses4/terminfo/e/ep40
+/usr/share/ncurses4/terminfo/e/ep4000
+/usr/share/ncurses4/terminfo/e/ep4080
+/usr/share/ncurses4/terminfo/e/ep48
+/usr/share/ncurses4/terminfo/e/ergo4000
+/usr/share/ncurses4/terminfo/e/esprit
+/usr/share/ncurses4/terminfo/e/esprit-am
+/usr/share/ncurses4/terminfo/e/eterm
+/usr/share/ncurses4/terminfo/e/ex155
+/usr/share/ncurses4/terminfo/e/excel62
+/usr/share/ncurses4/terminfo/e/excel62-rv
+/usr/share/ncurses4/terminfo/e/excel62-w
+/usr/share/ncurses4/terminfo/e/excel64
+/usr/share/ncurses4/terminfo/e/excel64-rv
+/usr/share/ncurses4/terminfo/e/excel64-w
+/usr/share/ncurses4/terminfo/e/exec80
+/usr/share/ncurses4/terminfo/f
+/usr/share/ncurses4/terminfo/f/f100
+/usr/share/ncurses4/terminfo/f/f100-rv
+/usr/share/ncurses4/terminfo/f/f110
+/usr/share/ncurses4/terminfo/f/f110-14
+/usr/share/ncurses4/terminfo/f/f110-14w
+/usr/share/ncurses4/terminfo/f/f110-w
+/usr/share/ncurses4/terminfo/f/f1720
+/usr/share/ncurses4/terminfo/f/f1720a
+/usr/share/ncurses4/terminfo/f/f200
+/usr/share/ncurses4/terminfo/f/f200-w
+/usr/share/ncurses4/terminfo/f/f200vi
+/usr/share/ncurses4/terminfo/f/f200vi-w
+/usr/share/ncurses4/terminfo/f/falco
+/usr/share/ncurses4/terminfo/f/falco-p
+/usr/share/ncurses4/terminfo/f/fenix
+/usr/share/ncurses4/terminfo/f/fenixw
+/usr/share/ncurses4/terminfo/f/fixterm
+/usr/share/ncurses4/terminfo/f/fortune
+/usr/share/ncurses4/terminfo/f/fos
+/usr/share/ncurses4/terminfo/f/fox
+/usr/share/ncurses4/terminfo/f/freedom
+/usr/share/ncurses4/terminfo/f/freedom-rv
+/usr/share/ncurses4/terminfo/f/freedom100
+/usr/share/ncurses4/terminfo/f/freedom110
+/usr/share/ncurses4/terminfo/f/freedom200
+/usr/share/ncurses4/terminfo/g
+/usr/share/ncurses4/terminfo/g/gator
+/usr/share/ncurses4/terminfo/g/gator-52
+/usr/share/ncurses4/terminfo/g/gator-52t
+/usr/share/ncurses4/terminfo/g/gator-t
+/usr/share/ncurses4/terminfo/g/gigi
+/usr/share/ncurses4/terminfo/g/glasstty
+/usr/share/ncurses4/terminfo/g/go-225
+/usr/share/ncurses4/terminfo/g/go140
+/usr/share/ncurses4/terminfo/g/go140w
+/usr/share/ncurses4/terminfo/g/go225
+/usr/share/ncurses4/terminfo/g/graphos
+/usr/share/ncurses4/terminfo/g/graphos-30
+/usr/share/ncurses4/terminfo/g/gs5430
+/usr/share/ncurses4/terminfo/g/gs5430-22
+/usr/share/ncurses4/terminfo/g/gs5430-24
+/usr/share/ncurses4/terminfo/g/gs6300
+/usr/share/ncurses4/terminfo/g/gsi
+/usr/share/ncurses4/terminfo/g/gt100
+/usr/share/ncurses4/terminfo/g/gt100a
+/usr/share/ncurses4/terminfo/g/gt40
+/usr/share/ncurses4/terminfo/g/gt42
+/usr/share/ncurses4/terminfo/g/guru
+/usr/share/ncurses4/terminfo/g/guru+rv
+/usr/share/ncurses4/terminfo/g/guru+s
+/usr/share/ncurses4/terminfo/g/guru+unk
+/usr/share/ncurses4/terminfo/g/guru-24
+/usr/share/ncurses4/terminfo/g/guru-33
+/usr/share/ncurses4/terminfo/g/guru-33-rv
+/usr/share/ncurses4/terminfo/g/guru-33-s
+/usr/share/ncurses4/terminfo/g/guru-44
+/usr/share/ncurses4/terminfo/g/guru-44-s
+/usr/share/ncurses4/terminfo/g/guru-76
+/usr/share/ncurses4/terminfo/g/guru-76-lp
+/usr/share/ncurses4/terminfo/g/guru-76-s
+/usr/share/ncurses4/terminfo/g/guru-76-w
+/usr/share/ncurses4/terminfo/g/guru-76-w-s
+/usr/share/ncurses4/terminfo/g/guru-76-wm
+/usr/share/ncurses4/terminfo/g/guru-lp
+/usr/share/ncurses4/terminfo/g/guru-nctxt
+/usr/share/ncurses4/terminfo/g/guru-rv
+/usr/share/ncurses4/terminfo/g/guru-s
+/usr/share/ncurses4/terminfo/h
+/usr/share/ncurses4/terminfo/h/h-100
+/usr/share/ncurses4/terminfo/h/h-100bw
+/usr/share/ncurses4/terminfo/h/h100
+/usr/share/ncurses4/terminfo/h/h100bw
+/usr/share/ncurses4/terminfo/h/h19
+/usr/share/ncurses4/terminfo/h/h19-a
+/usr/share/ncurses4/terminfo/h/h19-b
+/usr/share/ncurses4/terminfo/h/h19-bs
+/usr/share/ncurses4/terminfo/h/h19-g
+/usr/share/ncurses4/terminfo/h/h19-smul
+/usr/share/ncurses4/terminfo/h/h19-u
+/usr/share/ncurses4/terminfo/h/h19-us
+/usr/share/ncurses4/terminfo/h/h19a
+/usr/share/ncurses4/terminfo/h/h19g
+/usr/share/ncurses4/terminfo/h/h19k
+/usr/share/ncurses4/terminfo/h/h19kermit
+/usr/share/ncurses4/terminfo/h/h19us
+/usr/share/ncurses4/terminfo/h/h29a-kc-bc
+/usr/share/ncurses4/terminfo/h/h29a-kc-uc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-bc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-uc
+/usr/share/ncurses4/terminfo/h/h80
+/usr/share/ncurses4/terminfo/h/ha8675
+/usr/share/ncurses4/terminfo/h/ha8686
+/usr/share/ncurses4/terminfo/h/hazel
+/usr/share/ncurses4/terminfo/h/hds200
+/usr/share/ncurses4/terminfo/h/he80
+/usr/share/ncurses4/terminfo/h/heath
+/usr/share/ncurses4/terminfo/h/heath-19
+/usr/share/ncurses4/terminfo/h/heath-ansi
+/usr/share/ncurses4/terminfo/h/heathkit
+/usr/share/ncurses4/terminfo/h/heathkit-a
+/usr/share/ncurses4/terminfo/h/hft
+/usr/share/ncurses4/terminfo/h/hft-c
+/usr/share/ncurses4/terminfo/h/hirez100
+/usr/share/ncurses4/terminfo/h/hirez100-w
+/usr/share/ncurses4/terminfo/h/hmod1
+/usr/share/ncurses4/terminfo/h/hp
+/usr/share/ncurses4/terminfo/h/hp+arrows
+/usr/share/ncurses4/terminfo/h/hp+color
+/usr/share/ncurses4/terminfo/h/hp+labels
+/usr/share/ncurses4/terminfo/h/hp+pfk+arrows
+/usr/share/ncurses4/terminfo/h/hp+pfk+cr
+/usr/share/ncurses4/terminfo/h/hp+pfk-cr
+/usr/share/ncurses4/terminfo/h/hp+printer
+/usr/share/ncurses4/terminfo/h/hp110
+/usr/share/ncurses4/terminfo/h/hp150
+/usr/share/ncurses4/terminfo/h/hp2
+/usr/share/ncurses4/terminfo/h/hp236
+/usr/share/ncurses4/terminfo/h/hp2382
+/usr/share/ncurses4/terminfo/h/hp2382a
+/usr/share/ncurses4/terminfo/h/hp2392
+/usr/share/ncurses4/terminfo/h/hp2397
+/usr/share/ncurses4/terminfo/h/hp2397a
+/usr/share/ncurses4/terminfo/h/hp2621
+/usr/share/ncurses4/terminfo/h/hp2621-48
+/usr/share/ncurses4/terminfo/h/hp2621-a
+/usr/share/ncurses4/terminfo/h/hp2621-ba
+/usr/share/ncurses4/terminfo/h/hp2621-fl
+/usr/share/ncurses4/terminfo/h/hp2621-k45
+/usr/share/ncurses4/terminfo/h/hp2621-nl
+/usr/share/ncurses4/terminfo/h/hp2621-nt
+/usr/share/ncurses4/terminfo/h/hp2621-wl
+/usr/share/ncurses4/terminfo/h/hp2621A
+/usr/share/ncurses4/terminfo/h/hp2621a
+/usr/share/ncurses4/terminfo/h/hp2621a-a
+/usr/share/ncurses4/terminfo/h/hp2621b
+/usr/share/ncurses4/terminfo/h/hp2621b-kx
+/usr/share/ncurses4/terminfo/h/hp2621b-kx-p
+/usr/share/ncurses4/terminfo/h/hp2621b-p
+/usr/share/ncurses4/terminfo/h/hp2621k45
+/usr/share/ncurses4/terminfo/h/hp2621p
+/usr/share/ncurses4/terminfo/h/hp2621p-a
+/usr/share/ncurses4/terminfo/h/hp2622
+/usr/share/ncurses4/terminfo/h/hp2622a
+/usr/share/ncurses4/terminfo/h/hp2623
+/usr/share/ncurses4/terminfo/h/hp2623a
+/usr/share/ncurses4/terminfo/h/hp2624
+/usr/share/ncurses4/terminfo/h/hp2624-10p
+/usr/share/ncurses4/terminfo/h/hp2624a
+/usr/share/ncurses4/terminfo/h/hp2624a-10p
+/usr/share/ncurses4/terminfo/h/hp2624b
+/usr/share/ncurses4/terminfo/h/hp2624b-10p
+/usr/share/ncurses4/terminfo/h/hp2624b-10p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-p
+/usr/share/ncurses4/terminfo/h/hp2626
+/usr/share/ncurses4/terminfo/h/hp2626-12
+/usr/share/ncurses4/terminfo/h/hp2626-12-s
+/usr/share/ncurses4/terminfo/h/hp2626-12x40
+/usr/share/ncurses4/terminfo/h/hp2626-ns
+/usr/share/ncurses4/terminfo/h/hp2626-s
+/usr/share/ncurses4/terminfo/h/hp2626-x40
+/usr/share/ncurses4/terminfo/h/hp2626a
+/usr/share/ncurses4/terminfo/h/hp2626p
+/usr/share/ncurses4/terminfo/h/hp2627a
+/usr/share/ncurses4/terminfo/h/hp2627a-rev
+/usr/share/ncurses4/terminfo/h/hp2627c
+/usr/share/ncurses4/terminfo/h/hp262x
+/usr/share/ncurses4/terminfo/h/hp2640a
+/usr/share/ncurses4/terminfo/h/hp2640b
+/usr/share/ncurses4/terminfo/h/hp2641a
+/usr/share/ncurses4/terminfo/h/hp2644a
+/usr/share/ncurses4/terminfo/h/hp2645
+/usr/share/ncurses4/terminfo/h/hp2645a
+/usr/share/ncurses4/terminfo/h/hp2647a
+/usr/share/ncurses4/terminfo/h/hp2648
+/usr/share/ncurses4/terminfo/h/hp2648a
+/usr/share/ncurses4/terminfo/h/hp300h
+/usr/share/ncurses4/terminfo/h/hp45
+/usr/share/ncurses4/terminfo/h/hp700
+/usr/share/ncurses4/terminfo/h/hp700-wy
+/usr/share/ncurses4/terminfo/h/hp70092
+/usr/share/ncurses4/terminfo/h/hp70092A
+/usr/share/ncurses4/terminfo/h/hp70092a
+/usr/share/ncurses4/terminfo/h/hp9837
+/usr/share/ncurses4/terminfo/h/hp9845
+/usr/share/ncurses4/terminfo/h/hp98550
+/usr/share/ncurses4/terminfo/h/hp98550a
+/usr/share/ncurses4/terminfo/h/hp98720
+/usr/share/ncurses4/terminfo/h/hp98721
+/usr/share/ncurses4/terminfo/h/hpansi
+/usr/share/ncurses4/terminfo/h/hpex
+/usr/share/ncurses4/terminfo/h/hpex2
+/usr/share/ncurses4/terminfo/h/hpgeneric
+/usr/share/ncurses4/terminfo/h/hpsub
+/usr/share/ncurses4/terminfo/h/hpterm
+/usr/share/ncurses4/terminfo/h/htx11
+/usr/share/ncurses4/terminfo/h/hz1000
+/usr/share/ncurses4/terminfo/h/hz1420
+/usr/share/ncurses4/terminfo/h/hz1500
+/usr/share/ncurses4/terminfo/h/hz1510
+/usr/share/ncurses4/terminfo/h/hz1520
+/usr/share/ncurses4/terminfo/h/hz1520-noesc
+/usr/share/ncurses4/terminfo/h/hz1552
+/usr/share/ncurses4/terminfo/h/hz1552-rv
+/usr/share/ncurses4/terminfo/h/hz2000
+/usr/share/ncurses4/terminfo/i
+/usr/share/ncurses4/terminfo/i/i100
+/usr/share/ncurses4/terminfo/i/i3101
+/usr/share/ncurses4/terminfo/i/i3151
+/usr/share/ncurses4/terminfo/i/i3164
+/usr/share/ncurses4/terminfo/i/i400
+/usr/share/ncurses4/terminfo/i/ibcs2
+/usr/share/ncurses4/terminfo/i/ibm-apl
+/usr/share/ncurses4/terminfo/i/ibm-pc
+/usr/share/ncurses4/terminfo/i/ibm-system1
+/usr/share/ncurses4/terminfo/i/ibm3101
+/usr/share/ncurses4/terminfo/i/ibm3151
+/usr/share/ncurses4/terminfo/i/ibm3161
+/usr/share/ncurses4/terminfo/i/ibm3163
+/usr/share/ncurses4/terminfo/i/ibm3164
+/usr/share/ncurses4/terminfo/i/ibm327x
+/usr/share/ncurses4/terminfo/i/ibm5051
+/usr/share/ncurses4/terminfo/i/ibm5081
+/usr/share/ncurses4/terminfo/i/ibm5081-c
+/usr/share/ncurses4/terminfo/i/ibm5151
+/usr/share/ncurses4/terminfo/i/ibm5154
+/usr/share/ncurses4/terminfo/i/ibm5154-c
+/usr/share/ncurses4/terminfo/i/ibm6153
+/usr/share/ncurses4/terminfo/i/ibm6154
+/usr/share/ncurses4/terminfo/i/ibm6154-c
+/usr/share/ncurses4/terminfo/i/ibm6155
+/usr/share/ncurses4/terminfo/i/ibm8512
+/usr/share/ncurses4/terminfo/i/ibm8513
+/usr/share/ncurses4/terminfo/i/ibm8514
+/usr/share/ncurses4/terminfo/i/ibm8514-c
+/usr/share/ncurses4/terminfo/i/ibmaed
+/usr/share/ncurses4/terminfo/i/ibmapa16
+/usr/share/ncurses4/terminfo/i/ibmapa8
+/usr/share/ncurses4/terminfo/i/ibmapa8c
+/usr/share/ncurses4/terminfo/i/ibmapa8c-c
+/usr/share/ncurses4/terminfo/i/ibmega
+/usr/share/ncurses4/terminfo/i/ibmega-c
+/usr/share/ncurses4/terminfo/i/ibmmono
+/usr/share/ncurses4/terminfo/i/ibmmpel
+/usr/share/ncurses4/terminfo/i/ibmmpel-c
+/usr/share/ncurses4/terminfo/i/ibmpc
+/usr/share/ncurses4/terminfo/i/ibmpc3
+/usr/share/ncurses4/terminfo/i/ibmpc3r
+/usr/share/ncurses4/terminfo/i/ibmpc3r-mono
+/usr/share/ncurses4/terminfo/i/ibmpcx
+/usr/share/ncurses4/terminfo/i/ibmvga
+/usr/share/ncurses4/terminfo/i/ibmvga-c
+/usr/share/ncurses4/terminfo/i/ibmx
+/usr/share/ncurses4/terminfo/i/ifmr
+/usr/share/ncurses4/terminfo/i/ims-ansi
+/usr/share/ncurses4/terminfo/i/ims950
+/usr/share/ncurses4/terminfo/i/ims950-b
+/usr/share/ncurses4/terminfo/i/ims950-rv
+/usr/share/ncurses4/terminfo/i/infoton
+/usr/share/ncurses4/terminfo/i/intertec
+/usr/share/ncurses4/terminfo/i/intertube
+/usr/share/ncurses4/terminfo/i/intertube2
+/usr/share/ncurses4/terminfo/i/intext
+/usr/share/ncurses4/terminfo/i/intext2
+/usr/share/ncurses4/terminfo/i/intextii
+/usr/share/ncurses4/terminfo/i/ips
+/usr/share/ncurses4/terminfo/i/ipsi
+/usr/share/ncurses4/terminfo/i/iq120
+/usr/share/ncurses4/terminfo/i/iq140
+/usr/share/ncurses4/terminfo/i/iris-ansi
+/usr/share/ncurses4/terminfo/i/iris-ansi-ap
+/usr/share/ncurses4/terminfo/i/iris-color
+/usr/share/ncurses4/terminfo/i/iris40
+/usr/share/ncurses4/terminfo/j
+/usr/share/ncurses4/terminfo/j/jaixterm-m
+/usr/share/ncurses4/terminfo/j/jerq
+/usr/share/ncurses4/terminfo/k
+/usr/share/ncurses4/terminfo/k/k45
+/usr/share/ncurses4/terminfo/k/kaypro
+/usr/share/ncurses4/terminfo/k/kaypro2
+/usr/share/ncurses4/terminfo/k/kermit
+/usr/share/ncurses4/terminfo/k/kermit-am
+/usr/share/ncurses4/terminfo/k/klone+acs
+/usr/share/ncurses4/terminfo/k/klone+color
+/usr/share/ncurses4/terminfo/k/klone+koi8acs
+/usr/share/ncurses4/terminfo/k/klone+sgr
+/usr/share/ncurses4/terminfo/k/klone+sgr-dumb
+/usr/share/ncurses4/terminfo/k/kt7
+/usr/share/ncurses4/terminfo/k/kt7ix
+/usr/share/ncurses4/terminfo/k/kterm
+/usr/share/ncurses4/terminfo/k/ktm
+/usr/share/ncurses4/terminfo/l
+/usr/share/ncurses4/terminfo/l/la120
+/usr/share/ncurses4/terminfo/l/layer
+/usr/share/ncurses4/terminfo/l/linux
+/usr/share/ncurses4/terminfo/l/linux-c
+/usr/share/ncurses4/terminfo/l/linux-c-nc
+/usr/share/ncurses4/terminfo/l/linux-koi8
+/usr/share/ncurses4/terminfo/l/linux-koi8r
+/usr/share/ncurses4/terminfo/l/linux-m
+/usr/share/ncurses4/terminfo/l/linux-nic
+/usr/share/ncurses4/terminfo/l/lisa
+/usr/share/ncurses4/terminfo/l/lisaterm
+/usr/share/ncurses4/terminfo/l/lisaterm-w
+/usr/share/ncurses4/terminfo/l/liswb
+/usr/share/ncurses4/terminfo/l/ln03
+/usr/share/ncurses4/terminfo/l/ln03-w
+/usr/share/ncurses4/terminfo/l/lpr
+/usr/share/ncurses4/terminfo/l/luna
+/usr/share/ncurses4/terminfo/l/luna68k
+/usr/share/ncurses4/terminfo/m
+/usr/share/ncurses4/terminfo/m/m2-nam
+/usr/share/ncurses4/terminfo/m/mac
+/usr/share/ncurses4/terminfo/m/mac-w
+/usr/share/ncurses4/terminfo/m/macintosh
+/usr/share/ncurses4/terminfo/m/macterminal-w
+/usr/share/ncurses4/terminfo/m/mai
+/usr/share/ncurses4/terminfo/m/masscomp
+/usr/share/ncurses4/terminfo/m/masscomp1
+/usr/share/ncurses4/terminfo/m/masscomp2
+/usr/share/ncurses4/terminfo/m/mdl110
+/usr/share/ncurses4/terminfo/m/megatek
+/usr/share/ncurses4/terminfo/m/memhp
+/usr/share/ncurses4/terminfo/m/mgr
+/usr/share/ncurses4/terminfo/m/mgr-linux
+/usr/share/ncurses4/terminfo/m/mgr-sun
+/usr/share/ncurses4/terminfo/m/microb
+/usr/share/ncurses4/terminfo/m/microbee
+/usr/share/ncurses4/terminfo/m/microterm
+/usr/share/ncurses4/terminfo/m/microterm5
+/usr/share/ncurses4/terminfo/m/mime
+/usr/share/ncurses4/terminfo/m/mime-3ax
+/usr/share/ncurses4/terminfo/m/mime-fb
+/usr/share/ncurses4/terminfo/m/mime-hb
+/usr/share/ncurses4/terminfo/m/mime1
+/usr/share/ncurses4/terminfo/m/mime2
+/usr/share/ncurses4/terminfo/m/mime2a
+/usr/share/ncurses4/terminfo/m/mime2a-s
+/usr/share/ncurses4/terminfo/m/mime2a-v
+/usr/share/ncurses4/terminfo/m/mime314
+/usr/share/ncurses4/terminfo/m/mime340
+/usr/share/ncurses4/terminfo/m/mime3a
+/usr/share/ncurses4/terminfo/m/mime3ax
+/usr/share/ncurses4/terminfo/m/mimei
+/usr/share/ncurses4/terminfo/m/mimeii
+/usr/share/ncurses4/terminfo/m/minitel
+/usr/share/ncurses4/terminfo/m/minitel-2
+/usr/share/ncurses4/terminfo/m/minitel-2-nam
+/usr/share/ncurses4/terminfo/m/minix
+/usr/share/ncurses4/terminfo/m/minix-old
+/usr/share/ncurses4/terminfo/m/minix-old-am
+/usr/share/ncurses4/terminfo/m/mm314
+/usr/share/ncurses4/terminfo/m/mm340
+/usr/share/ncurses4/terminfo/m/mod
+/usr/share/ncurses4/terminfo/m/mod24
+/usr/share/ncurses4/terminfo/m/modgraph
+/usr/share/ncurses4/terminfo/m/modgraph2
+/usr/share/ncurses4/terminfo/m/modgraph48
+/usr/share/ncurses4/terminfo/m/mono-emx
+/usr/share/ncurses4/terminfo/m/msk227
+/usr/share/ncurses4/terminfo/m/msk22714
+/usr/share/ncurses4/terminfo/m/msk227am
+/usr/share/ncurses4/terminfo/m/mskermit227
+/usr/share/ncurses4/terminfo/m/mskermit22714
+/usr/share/ncurses4/terminfo/m/mskermit227am
+/usr/share/ncurses4/terminfo/m/mt-70
+/usr/share/ncurses4/terminfo/m/mt4520-rv
+/usr/share/ncurses4/terminfo/m/mt70
+/usr/share/ncurses4/terminfo/n
+/usr/share/ncurses4/terminfo/n/nansi.sys
+/usr/share/ncurses4/terminfo/n/nansi.sysk
+/usr/share/ncurses4/terminfo/n/nansisys
+/usr/share/ncurses4/terminfo/n/nansisysk
+/usr/share/ncurses4/terminfo/n/ncr7900
+/usr/share/ncurses4/terminfo/n/ncr7900i
+/usr/share/ncurses4/terminfo/n/ncr7900iv
+/usr/share/ncurses4/terminfo/n/ncr7901
+/usr/share/ncurses4/terminfo/n/nec
+/usr/share/ncurses4/terminfo/n/nec5520
+/usr/share/ncurses4/terminfo/n/newhp
+/usr/share/ncurses4/terminfo/n/newhpkeyboard
+/usr/share/ncurses4/terminfo/n/news
+/usr/share/ncurses4/terminfo/n/news-29
+/usr/share/ncurses4/terminfo/n/news-29-euc
+/usr/share/ncurses4/terminfo/n/news-29-sjis
+/usr/share/ncurses4/terminfo/n/news-33
+/usr/share/ncurses4/terminfo/n/news-33-euc
+/usr/share/ncurses4/terminfo/n/news-33-sjis
+/usr/share/ncurses4/terminfo/n/news-42
+/usr/share/ncurses4/terminfo/n/news-42-euc
+/usr/share/ncurses4/terminfo/n/news-42-sjis
+/usr/share/ncurses4/terminfo/n/news-a
+/usr/share/ncurses4/terminfo/n/news-o
+/usr/share/ncurses4/terminfo/n/news-old-unk
+/usr/share/ncurses4/terminfo/n/news-unk
+/usr/share/ncurses4/terminfo/n/news28
+/usr/share/ncurses4/terminfo/n/news28-a
+/usr/share/ncurses4/terminfo/n/news29
+/usr/share/ncurses4/terminfo/n/news31
+/usr/share/ncurses4/terminfo/n/news31-a
+/usr/share/ncurses4/terminfo/n/news31-o
+/usr/share/ncurses4/terminfo/n/news33
+/usr/share/ncurses4/terminfo/n/news40
+/usr/share/ncurses4/terminfo/n/news40-a
+/usr/share/ncurses4/terminfo/n/news40-o
+/usr/share/ncurses4/terminfo/n/news42
+/usr/share/ncurses4/terminfo/n/newscbm
+/usr/share/ncurses4/terminfo/n/newscbm-a
+/usr/share/ncurses4/terminfo/n/newscbm-o
+/usr/share/ncurses4/terminfo/n/newscbm33
+/usr/share/ncurses4/terminfo/n/next
+/usr/share/ncurses4/terminfo/n/nextshell
+/usr/share/ncurses4/terminfo/n/northstar
+/usr/share/ncurses4/terminfo/n/nwe501
+/usr/share/ncurses4/terminfo/n/nwe501-a
+/usr/share/ncurses4/terminfo/n/nwe501-o
+/usr/share/ncurses4/terminfo/n/nwp-511
+/usr/share/ncurses4/terminfo/n/nwp-517
+/usr/share/ncurses4/terminfo/n/nwp-517-w
+/usr/share/ncurses4/terminfo/n/nwp251-a
+/usr/share/ncurses4/terminfo/n/nwp251-o
+/usr/share/ncurses4/terminfo/n/nwp511
+/usr/share/ncurses4/terminfo/n/nwp512
+/usr/share/ncurses4/terminfo/n/nwp512-a
+/usr/share/ncurses4/terminfo/n/nwp512-o
+/usr/share/ncurses4/terminfo/n/nwp513
+/usr/share/ncurses4/terminfo/n/nwp513-a
+/usr/share/ncurses4/terminfo/n/nwp513-o
+/usr/share/ncurses4/terminfo/n/nwp514
+/usr/share/ncurses4/terminfo/n/nwp514-a
+/usr/share/ncurses4/terminfo/n/nwp514-o
+/usr/share/ncurses4/terminfo/n/nwp517
+/usr/share/ncurses4/terminfo/n/nwp517-w
+/usr/share/ncurses4/terminfo/n/nwp518
+/usr/share/ncurses4/terminfo/n/nwp518-a
+/usr/share/ncurses4/terminfo/n/nwp518-o
+/usr/share/ncurses4/terminfo/o
+/usr/share/ncurses4/terminfo/o/o31
+/usr/share/ncurses4/terminfo/o/o4112-nd
+/usr/share/ncurses4/terminfo/o/o85h
+/usr/share/ncurses4/terminfo/o/oabm85h
+/usr/share/ncurses4/terminfo/o/oblit
+/usr/share/ncurses4/terminfo/o/oc100
+/usr/share/ncurses4/terminfo/o/oconcept
+/usr/share/ncurses4/terminfo/o/ojerq
+/usr/share/ncurses4/terminfo/o/oldibmpc3
+/usr/share/ncurses4/terminfo/o/oldpc3
+/usr/share/ncurses4/terminfo/o/oldsun
+/usr/share/ncurses4/terminfo/o/omron
+/usr/share/ncurses4/terminfo/o/opus3n1+
+/usr/share/ncurses4/terminfo/o/origibmpc3
+/usr/share/ncurses4/terminfo/o/origpc3
+/usr/share/ncurses4/terminfo/o/os9LII
+/usr/share/ncurses4/terminfo/o/osborne
+/usr/share/ncurses4/terminfo/o/osborne-w
+/usr/share/ncurses4/terminfo/o/osborne1
+/usr/share/ncurses4/terminfo/o/osborne1-w
+/usr/share/ncurses4/terminfo/o/osexec
+/usr/share/ncurses4/terminfo/o/otek4112
+/usr/share/ncurses4/terminfo/o/otek4113
+/usr/share/ncurses4/terminfo/o/otek4114
+/usr/share/ncurses4/terminfo/o/otek4115
+/usr/share/ncurses4/terminfo/o/owl
+/usr/share/ncurses4/terminfo/p
+/usr/share/ncurses4/terminfo/p/p12
+/usr/share/ncurses4/terminfo/p/p12-m
+/usr/share/ncurses4/terminfo/p/p12-m-w
+/usr/share/ncurses4/terminfo/p/p12-w
+/usr/share/ncurses4/terminfo/p/p14
+/usr/share/ncurses4/terminfo/p/p14-m
+/usr/share/ncurses4/terminfo/p/p14-m-w
+/usr/share/ncurses4/terminfo/p/p14-w
+/usr/share/ncurses4/terminfo/p/p19
+/usr/share/ncurses4/terminfo/p/p4
+/usr/share/ncurses4/terminfo/p/p5
+/usr/share/ncurses4/terminfo/p/p7
+/usr/share/ncurses4/terminfo/p/p8
+/usr/share/ncurses4/terminfo/p/p8-w
+/usr/share/ncurses4/terminfo/p/p8gl
+/usr/share/ncurses4/terminfo/p/p9
+/usr/share/ncurses4/terminfo/p/p9-8
+/usr/share/ncurses4/terminfo/p/p9-8-w
+/usr/share/ncurses4/terminfo/p/p9-w
+/usr/share/ncurses4/terminfo/p/pc-coherent
+/usr/share/ncurses4/terminfo/p/pc-minix
+/usr/share/ncurses4/terminfo/p/pc-venix
+/usr/share/ncurses4/terminfo/p/pc3
+/usr/share/ncurses4/terminfo/p/pc3-bold
+/usr/share/ncurses4/terminfo/p/pc3r
+/usr/share/ncurses4/terminfo/p/pc3r-m
+/usr/share/ncurses4/terminfo/p/pc6300plus
+/usr/share/ncurses4/terminfo/p/pc7300
+/usr/share/ncurses4/terminfo/p/pcansi
+/usr/share/ncurses4/terminfo/p/pcansi-25
+/usr/share/ncurses4/terminfo/p/pcansi-25-m
+/usr/share/ncurses4/terminfo/p/pcansi-33
+/usr/share/ncurses4/terminfo/p/pcansi-33-m
+/usr/share/ncurses4/terminfo/p/pcansi-43
+/usr/share/ncurses4/terminfo/p/pcansi-43-m
+/usr/share/ncurses4/terminfo/p/pcansi-m
+/usr/share/ncurses4/terminfo/p/pcansi-mono
+/usr/share/ncurses4/terminfo/p/pcansi25
+/usr/share/ncurses4/terminfo/p/pcansi25m
+/usr/share/ncurses4/terminfo/p/pcansi33
+/usr/share/ncurses4/terminfo/p/pcansi33m
+/usr/share/ncurses4/terminfo/p/pcansi43
+/usr/share/ncurses4/terminfo/p/pccons
+/usr/share/ncurses4/terminfo/p/pcconsole
+/usr/share/ncurses4/terminfo/p/pcix
+/usr/share/ncurses4/terminfo/p/pckermit
+/usr/share/ncurses4/terminfo/p/pckermit12
+/usr/share/ncurses4/terminfo/p/pckermit120
+/usr/share/ncurses4/terminfo/p/pcplot
+/usr/share/ncurses4/terminfo/p/pcvt25
+/usr/share/ncurses4/terminfo/p/pcvt25w
+/usr/share/ncurses4/terminfo/p/pcvt28
+/usr/share/ncurses4/terminfo/p/pcvt28w
+/usr/share/ncurses4/terminfo/p/pcvt35
+/usr/share/ncurses4/terminfo/p/pcvt35w
+/usr/share/ncurses4/terminfo/p/pcvt40
+/usr/share/ncurses4/terminfo/p/pcvt40w
+/usr/share/ncurses4/terminfo/p/pcvt43
+/usr/share/ncurses4/terminfo/p/pcvt43w
+/usr/share/ncurses4/terminfo/p/pcvt50
+/usr/share/ncurses4/terminfo/p/pcvt50w
+/usr/share/ncurses4/terminfo/p/pcvtXX
+/usr/share/ncurses4/terminfo/p/pcz19
+/usr/share/ncurses4/terminfo/p/pe1100
+/usr/share/ncurses4/terminfo/p/pe1200
+/usr/share/ncurses4/terminfo/p/pe1251
+/usr/share/ncurses4/terminfo/p/pe550
+/usr/share/ncurses4/terminfo/p/pe6100
+/usr/share/ncurses4/terminfo/p/pe6300
+/usr/share/ncurses4/terminfo/p/pe6312
+/usr/share/ncurses4/terminfo/p/pe7000c
+/usr/share/ncurses4/terminfo/p/pe7000m
+/usr/share/ncurses4/terminfo/p/pilot
+/usr/share/ncurses4/terminfo/p/printer
+/usr/share/ncurses4/terminfo/p/prism12
+/usr/share/ncurses4/terminfo/p/prism12-m
+/usr/share/ncurses4/terminfo/p/prism12-m-w
+/usr/share/ncurses4/terminfo/p/prism12-w
+/usr/share/ncurses4/terminfo/p/prism14
+/usr/share/ncurses4/terminfo/p/prism14-m
+/usr/share/ncurses4/terminfo/p/prism14-m-w
+/usr/share/ncurses4/terminfo/p/prism14-w
+/usr/share/ncurses4/terminfo/p/prism2
+/usr/share/ncurses4/terminfo/p/prism4
+/usr/share/ncurses4/terminfo/p/prism5
+/usr/share/ncurses4/terminfo/p/prism7
+/usr/share/ncurses4/terminfo/p/prism8
+/usr/share/ncurses4/terminfo/p/prism8-w
+/usr/share/ncurses4/terminfo/p/prism8gl
+/usr/share/ncurses4/terminfo/p/prism9
+/usr/share/ncurses4/terminfo/p/prism9-8
+/usr/share/ncurses4/terminfo/p/prism9-8-w
+/usr/share/ncurses4/terminfo/p/prism9-w
+/usr/share/ncurses4/terminfo/p/pro350
+/usr/share/ncurses4/terminfo/p/ps300
+/usr/share/ncurses4/terminfo/p/psterm
+/usr/share/ncurses4/terminfo/p/psterm-80x24
+/usr/share/ncurses4/terminfo/p/psterm-90x28
+/usr/share/ncurses4/terminfo/p/psterm-96x48
+/usr/share/ncurses4/terminfo/p/psterm-basic
+/usr/share/ncurses4/terminfo/p/psterm-fast
+/usr/share/ncurses4/terminfo/p/psx_ansi
+/usr/share/ncurses4/terminfo/p/pt100
+/usr/share/ncurses4/terminfo/p/pt100w
+/usr/share/ncurses4/terminfo/p/pt200
+/usr/share/ncurses4/terminfo/p/pt200w
+/usr/share/ncurses4/terminfo/p/pt210
+/usr/share/ncurses4/terminfo/p/pt250
+/usr/share/ncurses4/terminfo/p/pt250w
+/usr/share/ncurses4/terminfo/p/pt505
+/usr/share/ncurses4/terminfo/p/pt505-22
+/usr/share/ncurses4/terminfo/p/pt505-24
+/usr/share/ncurses4/terminfo/p/pty
+/usr/share/ncurses4/terminfo/q
+/usr/share/ncurses4/terminfo/q/qdcons
+/usr/share/ncurses4/terminfo/q/qdss
+/usr/share/ncurses4/terminfo/q/qnx
+/usr/share/ncurses4/terminfo/q/qnx4
+/usr/share/ncurses4/terminfo/q/qume
+/usr/share/ncurses4/terminfo/q/qume5
+/usr/share/ncurses4/terminfo/q/qvt101
+/usr/share/ncurses4/terminfo/q/qvt101+
+/usr/share/ncurses4/terminfo/q/qvt101p
+/usr/share/ncurses4/terminfo/q/qvt102
+/usr/share/ncurses4/terminfo/q/qvt103
+/usr/share/ncurses4/terminfo/q/qvt103-w
+/usr/share/ncurses4/terminfo/q/qvt108
+/usr/share/ncurses4/terminfo/q/qvt119
+/usr/share/ncurses4/terminfo/q/qvt119+
+/usr/share/ncurses4/terminfo/q/qvt119+-25
+/usr/share/ncurses4/terminfo/q/qvt119+-25-w
+/usr/share/ncurses4/terminfo/q/qvt119+-w
+/usr/share/ncurses4/terminfo/q/qvt119-25-w
+/usr/share/ncurses4/terminfo/q/qvt119-w
+/usr/share/ncurses4/terminfo/q/qvt119p
+/usr/share/ncurses4/terminfo/q/qvt119p-25
+/usr/share/ncurses4/terminfo/q/qvt119p-25-w
+/usr/share/ncurses4/terminfo/q/qvt119p-w
+/usr/share/ncurses4/terminfo/q/qvt203
+/usr/share/ncurses4/terminfo/q/qvt203+
+/usr/share/ncurses4/terminfo/q/qvt203-25
+/usr/share/ncurses4/terminfo/q/qvt203-25-w
+/usr/share/ncurses4/terminfo/q/qvt203-w
+/usr/share/ncurses4/terminfo/q/qvt203-w-am
+/usr/share/ncurses4/terminfo/r
+/usr/share/ncurses4/terminfo/r/rbcomm
+/usr/share/ncurses4/terminfo/r/rbcomm-nam
+/usr/share/ncurses4/terminfo/r/rbcomm-w
+/usr/share/ncurses4/terminfo/r/rca
+/usr/share/ncurses4/terminfo/r/rebus3180
+/usr/share/ncurses4/terminfo/r/regent
+/usr/share/ncurses4/terminfo/r/regent100
+/usr/share/ncurses4/terminfo/r/regent20
+/usr/share/ncurses4/terminfo/r/regent200
+/usr/share/ncurses4/terminfo/r/regent25
+/usr/share/ncurses4/terminfo/r/regent40
+/usr/share/ncurses4/terminfo/r/regent40+
+/usr/share/ncurses4/terminfo/r/regent60
+/usr/share/ncurses4/terminfo/r/rt6221
+/usr/share/ncurses4/terminfo/r/rt6221-w
+/usr/share/ncurses4/terminfo/r/rtpc
+/usr/share/ncurses4/terminfo/r/rxvt
+/usr/share/ncurses4/terminfo/r/rxvt-basic
+/usr/share/ncurses4/terminfo/s
+/usr/share/ncurses4/terminfo/s/s
+/usr/share/ncurses4/terminfo/s/s4
+/usr/share/ncurses4/terminfo/s/sb1
+/usr/share/ncurses4/terminfo/s/sb2
+/usr/share/ncurses4/terminfo/s/sb3
+/usr/share/ncurses4/terminfo/s/sbi
+/usr/share/ncurses4/terminfo/s/sbobcat
+/usr/share/ncurses4/terminfo/s/sc410
+/usr/share/ncurses4/terminfo/s/sc415
+/usr/share/ncurses4/terminfo/s/scanset
+/usr/share/ncurses4/terminfo/s/scoansi
+/usr/share/ncurses4/terminfo/s/screen
+/usr/share/ncurses4/terminfo/s/screen-w
+/usr/share/ncurses4/terminfo/s/screen2
+/usr/share/ncurses4/terminfo/s/screen3
+/usr/share/ncurses4/terminfo/s/screwpoint
+/usr/share/ncurses4/terminfo/s/scrhp
+/usr/share/ncurses4/terminfo/s/simterm
+/usr/share/ncurses4/terminfo/s/soroc
+/usr/share/ncurses4/terminfo/s/soroc120
+/usr/share/ncurses4/terminfo/s/soroc140
+/usr/share/ncurses4/terminfo/s/spinwriter
+/usr/share/ncurses4/terminfo/s/st52
+/usr/share/ncurses4/terminfo/s/sun
+/usr/share/ncurses4/terminfo/s/sun-1
+/usr/share/ncurses4/terminfo/s/sun-12
+/usr/share/ncurses4/terminfo/s/sun-17
+/usr/share/ncurses4/terminfo/s/sun-24
+/usr/share/ncurses4/terminfo/s/sun-34
+/usr/share/ncurses4/terminfo/s/sun-48
+/usr/share/ncurses4/terminfo/s/sun-c
+/usr/share/ncurses4/terminfo/s/sun-cmd
+/usr/share/ncurses4/terminfo/s/sun-e
+/usr/share/ncurses4/terminfo/s/sun-e-s
+/usr/share/ncurses4/terminfo/s/sun-il
+/usr/share/ncurses4/terminfo/s/sun-nic
+/usr/share/ncurses4/terminfo/s/sun-s
+/usr/share/ncurses4/terminfo/s/sun-s-e
+/usr/share/ncurses4/terminfo/s/sun-ss5
+/usr/share/ncurses4/terminfo/s/sun1
+/usr/share/ncurses4/terminfo/s/sun2
+/usr/share/ncurses4/terminfo/s/sune
+/usr/share/ncurses4/terminfo/s/superbee
+/usr/share/ncurses4/terminfo/s/superbee-xsb
+/usr/share/ncurses4/terminfo/s/superbeeic
+/usr/share/ncurses4/terminfo/s/superbrain
+/usr/share/ncurses4/terminfo/s/sv80
+/usr/share/ncurses4/terminfo/s/swtp
+/usr/share/ncurses4/terminfo/s/synertek
+/usr/share/ncurses4/terminfo/s/synertek380
+/usr/share/ncurses4/terminfo/s/system1
+/usr/share/ncurses4/terminfo/t
+/usr/share/ncurses4/terminfo/t/t10
+/usr/share/ncurses4/terminfo/t/t1061
+/usr/share/ncurses4/terminfo/t/t1061f
+/usr/share/ncurses4/terminfo/t/t16
+/usr/share/ncurses4/terminfo/t/t3700
+/usr/share/ncurses4/terminfo/t/t3800
+/usr/share/ncurses4/terminfo/t/t653x
+/usr/share/ncurses4/terminfo/t/tab
+/usr/share/ncurses4/terminfo/t/tab132
+/usr/share/ncurses4/terminfo/t/tab132-15
+/usr/share/ncurses4/terminfo/t/tab132-rv
+/usr/share/ncurses4/terminfo/t/tab132-w
+/usr/share/ncurses4/terminfo/t/tab132-w-rv
+/usr/share/ncurses4/terminfo/t/tandem6510
+/usr/share/ncurses4/terminfo/t/tandem653
+/usr/share/ncurses4/terminfo/t/tek
+/usr/share/ncurses4/terminfo/t/tek4012
+/usr/share/ncurses4/terminfo/t/tek4013
+/usr/share/ncurses4/terminfo/t/tek4014
+/usr/share/ncurses4/terminfo/t/tek4014-sm
+/usr/share/ncurses4/terminfo/t/tek4015
+/usr/share/ncurses4/terminfo/t/tek4015-sm
+/usr/share/ncurses4/terminfo/t/tek4023
+/usr/share/ncurses4/terminfo/t/tek4024
+/usr/share/ncurses4/terminfo/t/tek4025
+/usr/share/ncurses4/terminfo/t/tek4025-17
+/usr/share/ncurses4/terminfo/t/tek4025-17-ws
+/usr/share/ncurses4/terminfo/t/tek4025-cr
+/usr/share/ncurses4/terminfo/t/tek4025-ex
+/usr/share/ncurses4/terminfo/t/tek4025a
+/usr/share/ncurses4/terminfo/t/tek4025ex
+/usr/share/ncurses4/terminfo/t/tek4027
+/usr/share/ncurses4/terminfo/t/tek4027-ex
+/usr/share/ncurses4/terminfo/t/tek4105
+/usr/share/ncurses4/terminfo/t/tek4105-30
+/usr/share/ncurses4/terminfo/t/tek4105a
+/usr/share/ncurses4/terminfo/t/tek4106brl
+/usr/share/ncurses4/terminfo/t/tek4107
+/usr/share/ncurses4/terminfo/t/tek4107brl
+/usr/share/ncurses4/terminfo/t/tek4109
+/usr/share/ncurses4/terminfo/t/tek4109brl
+/usr/share/ncurses4/terminfo/t/tek4112
+/usr/share/ncurses4/terminfo/t/tek4112-5
+/usr/share/ncurses4/terminfo/t/tek4112-nd
+/usr/share/ncurses4/terminfo/t/tek4113
+/usr/share/ncurses4/terminfo/t/tek4113-34
+/usr/share/ncurses4/terminfo/t/tek4113-nd
+/usr/share/ncurses4/terminfo/t/tek4114
+/usr/share/ncurses4/terminfo/t/tek4115
+/usr/share/ncurses4/terminfo/t/tek4125
+/usr/share/ncurses4/terminfo/t/tek4205
+/usr/share/ncurses4/terminfo/t/tek4207
+/usr/share/ncurses4/terminfo/t/tek4207-s
+/usr/share/ncurses4/terminfo/t/tek4404
+/usr/share/ncurses4/terminfo/t/teleray
+/usr/share/ncurses4/terminfo/t/teletec
+/usr/share/ncurses4/terminfo/t/terminet
+/usr/share/ncurses4/terminfo/t/terminet1200
+/usr/share/ncurses4/terminfo/t/terminet300
+/usr/share/ncurses4/terminfo/t/tgtelnet
+/usr/share/ncurses4/terminfo/t/ti700
+/usr/share/ncurses4/terminfo/t/ti733
+/usr/share/ncurses4/terminfo/t/ti735
+/usr/share/ncurses4/terminfo/t/ti745
+/usr/share/ncurses4/terminfo/t/ti800
+/usr/share/ncurses4/terminfo/t/ti916
+/usr/share/ncurses4/terminfo/t/ti916-132
+/usr/share/ncurses4/terminfo/t/ti916-220-7
+/usr/share/ncurses4/terminfo/t/ti916-220-8
+/usr/share/ncurses4/terminfo/t/ti916-8
+/usr/share/ncurses4/terminfo/t/ti916-8-132
+/usr/share/ncurses4/terminfo/t/ti924
+/usr/share/ncurses4/terminfo/t/ti924-8
+/usr/share/ncurses4/terminfo/t/ti924-8w
+/usr/share/ncurses4/terminfo/t/ti924w
+/usr/share/ncurses4/terminfo/t/ti926
+/usr/share/ncurses4/terminfo/t/ti926-8
+/usr/share/ncurses4/terminfo/t/ti928
+/usr/share/ncurses4/terminfo/t/ti928-8
+/usr/share/ncurses4/terminfo/t/ti931
+/usr/share/ncurses4/terminfo/t/ti_ansi
+/usr/share/ncurses4/terminfo/t/tn1200
+/usr/share/ncurses4/terminfo/t/tn300
+/usr/share/ncurses4/terminfo/t/trs16
+/usr/share/ncurses4/terminfo/t/trs2
+/usr/share/ncurses4/terminfo/t/trs80II
+/usr/share/ncurses4/terminfo/t/trsII
+/usr/share/ncurses4/terminfo/t/ts-1
+/usr/share/ncurses4/terminfo/t/ts-1p
+/usr/share/ncurses4/terminfo/t/ts1
+/usr/share/ncurses4/terminfo/t/ts100
+/usr/share/ncurses4/terminfo/t/ts100-ctxt
+/usr/share/ncurses4/terminfo/t/ts100-sp
+/usr/share/ncurses4/terminfo/t/ts1p
+/usr/share/ncurses4/terminfo/t/tt505-22
+/usr/share/ncurses4/terminfo/t/tty33
+/usr/share/ncurses4/terminfo/t/tty35
+/usr/share/ncurses4/terminfo/t/tty37
+/usr/share/ncurses4/terminfo/t/tty40
+/usr/share/ncurses4/terminfo/t/tty43
+/usr/share/ncurses4/terminfo/t/tty4420
+/usr/share/ncurses4/terminfo/t/tty4424
+/usr/share/ncurses4/terminfo/t/tty4424-1
+/usr/share/ncurses4/terminfo/t/tty4424m
+/usr/share/ncurses4/terminfo/t/tty4426
+/usr/share/ncurses4/terminfo/t/tty5410
+/usr/share/ncurses4/terminfo/t/tty5410-w
+/usr/share/ncurses4/terminfo/t/tty5410v1
+/usr/share/ncurses4/terminfo/t/tty5410v1-w
+/usr/share/ncurses4/terminfo/t/tty5420
+/usr/share/ncurses4/terminfo/t/tty5420+nl
+/usr/share/ncurses4/terminfo/t/tty5420-nl
+/usr/share/ncurses4/terminfo/t/tty5420-rv
+/usr/share/ncurses4/terminfo/t/tty5420-rv-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w
+/usr/share/ncurses4/terminfo/t/tty5420-w-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv-n
+/usr/share/ncurses4/terminfo/t/tty5425
+/usr/share/ncurses4/terminfo/t/tty5425-nl
+/usr/share/ncurses4/terminfo/t/tty5425-w
+/usr/share/ncurses4/terminfo/t/tty5620
+/usr/share/ncurses4/terminfo/t/tty5620-1
+/usr/share/ncurses4/terminfo/t/tty5620-24
+/usr/share/ncurses4/terminfo/t/tty5620-34
+/usr/share/ncurses4/terminfo/t/tty5620-s
+/usr/share/ncurses4/terminfo/t/ttydmd
+/usr/share/ncurses4/terminfo/t/tvi-2p
+/usr/share/ncurses4/terminfo/t/tvi803
+/usr/share/ncurses4/terminfo/t/tvi9065
+/usr/share/ncurses4/terminfo/t/tvi910
+/usr/share/ncurses4/terminfo/t/tvi910+
+/usr/share/ncurses4/terminfo/t/tvi912
+/usr/share/ncurses4/terminfo/t/tvi912-2p
+/usr/share/ncurses4/terminfo/t/tvi912b
+/usr/share/ncurses4/terminfo/t/tvi912c
+/usr/share/ncurses4/terminfo/t/tvi912cc
+/usr/share/ncurses4/terminfo/t/tvi914
+/usr/share/ncurses4/terminfo/t/tvi920
+/usr/share/ncurses4/terminfo/t/tvi920-2p
+/usr/share/ncurses4/terminfo/t/tvi920b
+/usr/share/ncurses4/terminfo/t/tvi920c
+/usr/share/ncurses4/terminfo/t/tvi921
+/usr/share/ncurses4/terminfo/t/tvi924
+/usr/share/ncurses4/terminfo/t/tvi925
+/usr/share/ncurses4/terminfo/t/tvi925-hi
+/usr/share/ncurses4/terminfo/t/tvi92B
+/usr/share/ncurses4/terminfo/t/tvi92D
+/usr/share/ncurses4/terminfo/t/tvi950
+/usr/share/ncurses4/terminfo/t/tvi950-2p
+/usr/share/ncurses4/terminfo/t/tvi950-4p
+/usr/share/ncurses4/terminfo/t/tvi950-rv
+/usr/share/ncurses4/terminfo/t/tvi950-rv-2p
+/usr/share/ncurses4/terminfo/t/tvi950-rv-4p
+/usr/share/ncurses4/terminfo/t/tvi955
+/usr/share/ncurses4/terminfo/t/tvi955-hb
+/usr/share/ncurses4/terminfo/t/tvi955-w
+/usr/share/ncurses4/terminfo/t/tvi970
+/usr/share/ncurses4/terminfo/t/tvi970-2p
+/usr/share/ncurses4/terminfo/t/tvi970-vb
+/usr/share/ncurses4/terminfo/t/tvipt
+/usr/share/ncurses4/terminfo/u
+/usr/share/ncurses4/terminfo/u/ultima2
+/usr/share/ncurses4/terminfo/u/ultimaII
+/usr/share/ncurses4/terminfo/u/uniterm
+/usr/share/ncurses4/terminfo/u/uniterm49
+/usr/share/ncurses4/terminfo/u/unixpc
+/usr/share/ncurses4/terminfo/u/unknown
+/usr/share/ncurses4/terminfo/u/uts30
+/usr/share/ncurses4/terminfo/v
+/usr/share/ncurses4/terminfo/v/v200-nam
+/usr/share/ncurses4/terminfo/v/v320n
+/usr/share/ncurses4/terminfo/v/v3220
+/usr/share/ncurses4/terminfo/v/v5410
+/usr/share/ncurses4/terminfo/v/vapple
+/usr/share/ncurses4/terminfo/v/vc103
+/usr/share/ncurses4/terminfo/v/vc203
+/usr/share/ncurses4/terminfo/v/vc303
+/usr/share/ncurses4/terminfo/v/vc303a
+/usr/share/ncurses4/terminfo/v/vc403a
+/usr/share/ncurses4/terminfo/v/vc404
+/usr/share/ncurses4/terminfo/v/vc404-s
+/usr/share/ncurses4/terminfo/v/vc414
+/usr/share/ncurses4/terminfo/v/vc414h
+/usr/share/ncurses4/terminfo/v/vc415
+/usr/share/ncurses4/terminfo/v/venix
+/usr/share/ncurses4/terminfo/v/versaterm
+/usr/share/ncurses4/terminfo/v/vi200
+/usr/share/ncurses4/terminfo/v/vi200-f
+/usr/share/ncurses4/terminfo/v/vi200-rv
+/usr/share/ncurses4/terminfo/v/vi300
+/usr/share/ncurses4/terminfo/v/vi300-old
+/usr/share/ncurses4/terminfo/v/vi50
+/usr/share/ncurses4/terminfo/v/vi500
+/usr/share/ncurses4/terminfo/v/vi50adm
+/usr/share/ncurses4/terminfo/v/vi55
+/usr/share/ncurses4/terminfo/v/vi550
+/usr/share/ncurses4/terminfo/v/vi603
+/usr/share/ncurses4/terminfo/v/viewpoint
+/usr/share/ncurses4/terminfo/v/viewpoint3a+
+/usr/share/ncurses4/terminfo/v/viewpoint60
+/usr/share/ncurses4/terminfo/v/viewpoint90
+/usr/share/ncurses4/terminfo/v/visa50
+/usr/share/ncurses4/terminfo/v/visual603
+/usr/share/ncurses4/terminfo/v/vitty
+/usr/share/ncurses4/terminfo/v/vk100
+/usr/share/ncurses4/terminfo/v/vp3a+
+/usr/share/ncurses4/terminfo/v/vp60
+/usr/share/ncurses4/terminfo/v/vp90
+/usr/share/ncurses4/terminfo/v/vremote
+/usr/share/ncurses4/terminfo/v/vs100
+/usr/share/ncurses4/terminfo/v/vs100-x10
+/usr/share/ncurses4/terminfo/v/vsc
+/usr/share/ncurses4/terminfo/v/vt-61
+/usr/share/ncurses4/terminfo/v/vt100
+/usr/share/ncurses4/terminfo/v/vt100-am
+/usr/share/ncurses4/terminfo/v/vt100-bm
+/usr/share/ncurses4/terminfo/v/vt100-bm-o
+/usr/share/ncurses4/terminfo/v/vt100-bot-s
+/usr/share/ncurses4/terminfo/v/vt100-nam
+/usr/share/ncurses4/terminfo/v/vt100-nam-w
+/usr/share/ncurses4/terminfo/v/vt100-nav
+/usr/share/ncurses4/terminfo/v/vt100-nav-w
+/usr/share/ncurses4/terminfo/v/vt100-s
+/usr/share/ncurses4/terminfo/v/vt100-s-bot
+/usr/share/ncurses4/terminfo/v/vt100-s-top
+/usr/share/ncurses4/terminfo/v/vt100-top-s
+/usr/share/ncurses4/terminfo/v/vt100-vb
+/usr/share/ncurses4/terminfo/v/vt100-w
+/usr/share/ncurses4/terminfo/v/vt100-w-am
+/usr/share/ncurses4/terminfo/v/vt100-w-nam
+/usr/share/ncurses4/terminfo/v/vt100-w-nav
+/usr/share/ncurses4/terminfo/v/vt100nam
+/usr/share/ncurses4/terminfo/v/vt102
+/usr/share/ncurses4/terminfo/v/vt102-nsgr
+/usr/share/ncurses4/terminfo/v/vt102-w
+/usr/share/ncurses4/terminfo/v/vt125
+/usr/share/ncurses4/terminfo/v/vt131
+/usr/share/ncurses4/terminfo/v/vt132
+/usr/share/ncurses4/terminfo/v/vt200
+/usr/share/ncurses4/terminfo/v/vt200-js
+/usr/share/ncurses4/terminfo/v/vt200-w
+/usr/share/ncurses4/terminfo/v/vt220
+/usr/share/ncurses4/terminfo/v/vt220-8
+/usr/share/ncurses4/terminfo/v/vt220-js
+/usr/share/ncurses4/terminfo/v/vt220-nam
+/usr/share/ncurses4/terminfo/v/vt220-w
+/usr/share/ncurses4/terminfo/v/vt220d
+/usr/share/ncurses4/terminfo/v/vt300
+/usr/share/ncurses4/terminfo/v/vt300-nam
+/usr/share/ncurses4/terminfo/v/vt300-w
+/usr/share/ncurses4/terminfo/v/vt300-w-nam
+/usr/share/ncurses4/terminfo/v/vt320
+/usr/share/ncurses4/terminfo/v/vt320-k3
+/usr/share/ncurses4/terminfo/v/vt320-k311
+/usr/share/ncurses4/terminfo/v/vt320-nam
+/usr/share/ncurses4/terminfo/v/vt320-w
+/usr/share/ncurses4/terminfo/v/vt320-w-nam
+/usr/share/ncurses4/terminfo/v/vt320nam
+/usr/share/ncurses4/terminfo/v/vt330
+/usr/share/ncurses4/terminfo/v/vt340
+/usr/share/ncurses4/terminfo/v/vt400
+/usr/share/ncurses4/terminfo/v/vt400-24
+/usr/share/ncurses4/terminfo/v/vt420
+/usr/share/ncurses4/terminfo/v/vt420f
+/usr/share/ncurses4/terminfo/v/vt420pc
+/usr/share/ncurses4/terminfo/v/vt420pcdos
+/usr/share/ncurses4/terminfo/v/vt50
+/usr/share/ncurses4/terminfo/v/vt50h
+/usr/share/ncurses4/terminfo/v/vt510
+/usr/share/ncurses4/terminfo/v/vt510pc
+/usr/share/ncurses4/terminfo/v/vt510pcdos
+/usr/share/ncurses4/terminfo/v/vt52
+/usr/share/ncurses4/terminfo/v/vt520
+/usr/share/ncurses4/terminfo/v/vt525
+/usr/share/ncurses4/terminfo/v/vt61
+/usr/share/ncurses4/terminfo/v/vt61.5
+/usr/share/ncurses4/terminfo/w
+/usr/share/ncurses4/terminfo/w/wren
+/usr/share/ncurses4/terminfo/w/wrenw
+/usr/share/ncurses4/terminfo/w/wsiris
+/usr/share/ncurses4/terminfo/w/wy-75ap
+/usr/share/ncurses4/terminfo/w/wy100
+/usr/share/ncurses4/terminfo/w/wy100q
+/usr/share/ncurses4/terminfo/w/wy120
+/usr/share/ncurses4/terminfo/w/wy120-25
+/usr/share/ncurses4/terminfo/w/wy120-25-w
+/usr/share/ncurses4/terminfo/w/wy120-vb
+/usr/share/ncurses4/terminfo/w/wy120-w
+/usr/share/ncurses4/terminfo/w/wy120-w-vb
+/usr/share/ncurses4/terminfo/w/wy120-wvb
+/usr/share/ncurses4/terminfo/w/wy150
+/usr/share/ncurses4/terminfo/w/wy150-25
+/usr/share/ncurses4/terminfo/w/wy150-25-w
+/usr/share/ncurses4/terminfo/w/wy150-vb
+/usr/share/ncurses4/terminfo/w/wy150-w
+/usr/share/ncurses4/terminfo/w/wy150-w-vb
+/usr/share/ncurses4/terminfo/w/wy160
+/usr/share/ncurses4/terminfo/w/wy160-25
+/usr/share/ncurses4/terminfo/w/wy160-25-w
+/usr/share/ncurses4/terminfo/w/wy160-42
+/usr/share/ncurses4/terminfo/w/wy160-42-w
+/usr/share/ncurses4/terminfo/w/wy160-43
+/usr/share/ncurses4/terminfo/w/wy160-43-w
+/usr/share/ncurses4/terminfo/w/wy160-tek
+/usr/share/ncurses4/terminfo/w/wy160-vb
+/usr/share/ncurses4/terminfo/w/wy160-w
+/usr/share/ncurses4/terminfo/w/wy160-w-vb
+/usr/share/ncurses4/terminfo/w/wy160-wvb
+/usr/share/ncurses4/terminfo/w/wy185
+/usr/share/ncurses4/terminfo/w/wy185-24
+/usr/share/ncurses4/terminfo/w/wy185-vb
+/usr/share/ncurses4/terminfo/w/wy185-w
+/usr/share/ncurses4/terminfo/w/wy185-wvb
+/usr/share/ncurses4/terminfo/w/wy30
+/usr/share/ncurses4/terminfo/w/wy30-mc
+/usr/share/ncurses4/terminfo/w/wy30-vb
+/usr/share/ncurses4/terminfo/w/wy325
+/usr/share/ncurses4/terminfo/w/wy325-25
+/usr/share/ncurses4/terminfo/w/wy325-25w
+/usr/share/ncurses4/terminfo/w/wy325-42
+/usr/share/ncurses4/terminfo/w/wy325-42w
+/usr/share/ncurses4/terminfo/w/wy325-42w-vb
+/usr/share/ncurses4/terminfo/w/wy325-42wvb
+/usr/share/ncurses4/terminfo/w/wy325-43
+/usr/share/ncurses4/terminfo/w/wy325-43w
+/usr/share/ncurses4/terminfo/w/wy325-43w-vb
+/usr/share/ncurses4/terminfo/w/wy325-43wvb
+/usr/share/ncurses4/terminfo/w/wy325-80
+/usr/share/ncurses4/terminfo/w/wy325-vb
+/usr/share/ncurses4/terminfo/w/wy325-w
+/usr/share/ncurses4/terminfo/w/wy325-w-vb
+/usr/share/ncurses4/terminfo/w/wy325-wvb
+/usr/share/ncurses4/terminfo/w/wy325w-24
+/usr/share/ncurses4/terminfo/w/wy350
+/usr/share/ncurses4/terminfo/w/wy350-vb
+/usr/share/ncurses4/terminfo/w/wy350-w
+/usr/share/ncurses4/terminfo/w/wy350-wvb
+/usr/share/ncurses4/terminfo/w/wy370
+/usr/share/ncurses4/terminfo/w/wy370-101k
+/usr/share/ncurses4/terminfo/w/wy370-105k
+/usr/share/ncurses4/terminfo/w/wy370-EPC
+/usr/share/ncurses4/terminfo/w/wy370-nk
+/usr/share/ncurses4/terminfo/w/wy370-rv
+/usr/share/ncurses4/terminfo/w/wy370-tek
+/usr/share/ncurses4/terminfo/w/wy370-vb
+/usr/share/ncurses4/terminfo/w/wy370-w
+/usr/share/ncurses4/terminfo/w/wy370-wvb
+/usr/share/ncurses4/terminfo/w/wy50
+/usr/share/ncurses4/terminfo/w/wy50-mc
+/usr/share/ncurses4/terminfo/w/wy50-vb
+/usr/share/ncurses4/terminfo/w/wy50-w
+/usr/share/ncurses4/terminfo/w/wy50-wvb
+/usr/share/ncurses4/terminfo/w/wy520
+/usr/share/ncurses4/terminfo/w/wy520-24
+/usr/share/ncurses4/terminfo/w/wy520-36
+/usr/share/ncurses4/terminfo/w/wy520-36pc
+/usr/share/ncurses4/terminfo/w/wy520-36w
+/usr/share/ncurses4/terminfo/w/wy520-36wpc
+/usr/share/ncurses4/terminfo/w/wy520-48
+/usr/share/ncurses4/terminfo/w/wy520-48pc
+/usr/share/ncurses4/terminfo/w/wy520-48w
+/usr/share/ncurses4/terminfo/w/wy520-48wpc
+/usr/share/ncurses4/terminfo/w/wy520-epc
+/usr/share/ncurses4/terminfo/w/wy520-epc-24
+/usr/share/ncurses4/terminfo/w/wy520-epc-vb
+/usr/share/ncurses4/terminfo/w/wy520-epc-w
+/usr/share/ncurses4/terminfo/w/wy520-epc-wvb
+/usr/share/ncurses4/terminfo/w/wy520-vb
+/usr/share/ncurses4/terminfo/w/wy520-w
+/usr/share/ncurses4/terminfo/w/wy520-wvb
+/usr/share/ncurses4/terminfo/w/wy60
+/usr/share/ncurses4/terminfo/w/wy60-25
+/usr/share/ncurses4/terminfo/w/wy60-25-w
+/usr/share/ncurses4/terminfo/w/wy60-316X
+/usr/share/ncurses4/terminfo/w/wy60-42
+/usr/share/ncurses4/terminfo/w/wy60-42-w
+/usr/share/ncurses4/terminfo/w/wy60-43
+/usr/share/ncurses4/terminfo/w/wy60-43-w
+/usr/share/ncurses4/terminfo/w/wy60-vb
+/usr/share/ncurses4/terminfo/w/wy60-w
+/usr/share/ncurses4/terminfo/w/wy60-w-vb
+/usr/share/ncurses4/terminfo/w/wy60-wvb
+/usr/share/ncurses4/terminfo/w/wy75
+/usr/share/ncurses4/terminfo/w/wy75-mc
+/usr/share/ncurses4/terminfo/w/wy75-vb
+/usr/share/ncurses4/terminfo/w/wy75-w
+/usr/share/ncurses4/terminfo/w/wy75-wvb
+/usr/share/ncurses4/terminfo/w/wy75ap
+/usr/share/ncurses4/terminfo/w/wy85
+/usr/share/ncurses4/terminfo/w/wy85-vb
+/usr/share/ncurses4/terminfo/w/wy85-w
+/usr/share/ncurses4/terminfo/w/wy85-wvb
+/usr/share/ncurses4/terminfo/w/wy99gt
+/usr/share/ncurses4/terminfo/w/wy99gt-25
+/usr/share/ncurses4/terminfo/w/wy99gt-25-w
+/usr/share/ncurses4/terminfo/w/wy99gt-tek
+/usr/share/ncurses4/terminfo/w/wy99gt-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-w
+/usr/share/ncurses4/terminfo/w/wy99gt-w-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-wvb
+/usr/share/ncurses4/terminfo/w/wyse-325
+/usr/share/ncurses4/terminfo/w/wyse-75ap
+/usr/share/ncurses4/terminfo/w/wyse-vp
+/usr/share/ncurses4/terminfo/w/wyse120
+/usr/share/ncurses4/terminfo/w/wyse120-25
+/usr/share/ncurses4/terminfo/w/wyse120-25-w
+/usr/share/ncurses4/terminfo/w/wyse120-vb
+/usr/share/ncurses4/terminfo/w/wyse120-w
+/usr/share/ncurses4/terminfo/w/wyse120-wvb
+/usr/share/ncurses4/terminfo/w/wyse150
+/usr/share/ncurses4/terminfo/w/wyse150-25
+/usr/share/ncurses4/terminfo/w/wyse150-25-w
+/usr/share/ncurses4/terminfo/w/wyse150-vb
+/usr/share/ncurses4/terminfo/w/wyse150-w
+/usr/share/ncurses4/terminfo/w/wyse150-w-vb
+/usr/share/ncurses4/terminfo/w/wyse160
+/usr/share/ncurses4/terminfo/w/wyse160-25
+/usr/share/ncurses4/terminfo/w/wyse160-25-w
+/usr/share/ncurses4/terminfo/w/wyse160-42
+/usr/share/ncurses4/terminfo/w/wyse160-42-w
+/usr/share/ncurses4/terminfo/w/wyse160-43
+/usr/share/ncurses4/terminfo/w/wyse160-43-w
+/usr/share/ncurses4/terminfo/w/wyse160-vb
+/usr/share/ncurses4/terminfo/w/wyse160-w
+/usr/share/ncurses4/terminfo/w/wyse160-wvb
+/usr/share/ncurses4/terminfo/w/wyse185
+/usr/share/ncurses4/terminfo/w/wyse185-24
+/usr/share/ncurses4/terminfo/w/wyse185-vb
+/usr/share/ncurses4/terminfo/w/wyse185-w
+/usr/share/ncurses4/terminfo/w/wyse185-wvb
+/usr/share/ncurses4/terminfo/w/wyse30
+/usr/share/ncurses4/terminfo/w/wyse30-mc
+/usr/share/ncurses4/terminfo/w/wyse30-vb
+/usr/share/ncurses4/terminfo/w/wyse325
+/usr/share/ncurses4/terminfo/w/wyse325-25
+/usr/share/ncurses4/terminfo/w/wyse325-25w
+/usr/share/ncurses4/terminfo/w/wyse325-42
+/usr/share/ncurses4/terminfo/w/wyse325-42w
+/usr/share/ncurses4/terminfo/w/wyse325-43
+/usr/share/ncurses4/terminfo/w/wyse325-43w
+/usr/share/ncurses4/terminfo/w/wyse325-vb
+/usr/share/ncurses4/terminfo/w/wyse325-w
+/usr/share/ncurses4/terminfo/w/wyse325-wvb
+/usr/share/ncurses4/terminfo/w/wyse350
+/usr/share/ncurses4/terminfo/w/wyse350-vb
+/usr/share/ncurses4/terminfo/w/wyse350-w
+/usr/share/ncurses4/terminfo/w/wyse350-wvb
+/usr/share/ncurses4/terminfo/w/wyse370
+/usr/share/ncurses4/terminfo/w/wyse50
+/usr/share/ncurses4/terminfo/w/wyse50-mc
+/usr/share/ncurses4/terminfo/w/wyse50-vb
+/usr/share/ncurses4/terminfo/w/wyse50-w
+/usr/share/ncurses4/terminfo/w/wyse50-wvb
+/usr/share/ncurses4/terminfo/w/wyse520
+/usr/share/ncurses4/terminfo/w/wyse520-24
+/usr/share/ncurses4/terminfo/w/wyse520-36
+/usr/share/ncurses4/terminfo/w/wyse520-36pc
+/usr/share/ncurses4/terminfo/w/wyse520-36w
+/usr/share/ncurses4/terminfo/w/wyse520-36wpc
+/usr/share/ncurses4/terminfo/w/wyse520-48
+/usr/share/ncurses4/terminfo/w/wyse520-48pc
+/usr/share/ncurses4/terminfo/w/wyse520-48w
+/usr/share/ncurses4/terminfo/w/wyse520-48wpc
+/usr/share/ncurses4/terminfo/w/wyse520-epc
+/usr/share/ncurses4/terminfo/w/wyse520-epc-w
+/usr/share/ncurses4/terminfo/w/wyse520-p-wvb
+/usr/share/ncurses4/terminfo/w/wyse520-pc-24
+/usr/share/ncurses4/terminfo/w/wyse520-pc-vb
+/usr/share/ncurses4/terminfo/w/wyse520-vb
+/usr/share/ncurses4/terminfo/w/wyse520-w
+/usr/share/ncurses4/terminfo/w/wyse520-wvb
+/usr/share/ncurses4/terminfo/w/wyse60
+/usr/share/ncurses4/terminfo/w/wyse60-25
+/usr/share/ncurses4/terminfo/w/wyse60-25-w
+/usr/share/ncurses4/terminfo/w/wyse60-316X
+/usr/share/ncurses4/terminfo/w/wyse60-42
+/usr/share/ncurses4/terminfo/w/wyse60-42-w
+/usr/share/ncurses4/terminfo/w/wyse60-43
+/usr/share/ncurses4/terminfo/w/wyse60-43-w
+/usr/share/ncurses4/terminfo/w/wyse60-vb
+/usr/share/ncurses4/terminfo/w/wyse60-w
+/usr/share/ncurses4/terminfo/w/wyse60-wvb
+/usr/share/ncurses4/terminfo/w/wyse75
+/usr/share/ncurses4/terminfo/w/wyse75-mc
+/usr/share/ncurses4/terminfo/w/wyse75-vb
+/usr/share/ncurses4/terminfo/w/wyse75-w
+/usr/share/ncurses4/terminfo/w/wyse75-wvb
+/usr/share/ncurses4/terminfo/w/wyse75ap
+/usr/share/ncurses4/terminfo/w/wyse85
+/usr/share/ncurses4/terminfo/w/wyse85-vb
+/usr/share/ncurses4/terminfo/w/wyse85-w
+/usr/share/ncurses4/terminfo/w/wyse85-wvb
+/usr/share/ncurses4/terminfo/w/wyse99gt
+/usr/share/ncurses4/terminfo/w/wyse99gt-25
+/usr/share/ncurses4/terminfo/w/wyse99gt-25-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-vb
+/usr/share/ncurses4/terminfo/w/wyse99gt-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-wvb
+/usr/share/ncurses4/terminfo/x
+/usr/share/ncurses4/terminfo/x/x10term
+/usr/share/ncurses4/terminfo/x/x1700
+/usr/share/ncurses4/terminfo/x/x1700-lm
+/usr/share/ncurses4/terminfo/x/x1720
+/usr/share/ncurses4/terminfo/x/x1750
+/usr/share/ncurses4/terminfo/x/x68k
+/usr/share/ncurses4/terminfo/x/x68k-ite
+/usr/share/ncurses4/terminfo/x/x820
+/usr/share/ncurses4/terminfo/x/xenix
+/usr/share/ncurses4/terminfo/x/xerox
+/usr/share/ncurses4/terminfo/x/xerox-lm
+/usr/share/ncurses4/terminfo/x/xerox1720
+/usr/share/ncurses4/terminfo/x/xerox820
+/usr/share/ncurses4/terminfo/x/xl83
+/usr/share/ncurses4/terminfo/x/xtalk
+/usr/share/ncurses4/terminfo/x/xterm
+/usr/share/ncurses4/terminfo/x/xterm+sl
+/usr/share/ncurses4/terminfo/x/xterm+sl-twm
+/usr/share/ncurses4/terminfo/x/xterm-16color
+/usr/share/ncurses4/terminfo/x/xterm-8bit
+/usr/share/ncurses4/terminfo/x/xterm-bold
+/usr/share/ncurses4/terminfo/x/xterm-nic
+/usr/share/ncurses4/terminfo/x/xterm-old
+/usr/share/ncurses4/terminfo/x/xterm-pcolor
+/usr/share/ncurses4/terminfo/x/xterm-r5
+/usr/share/ncurses4/terminfo/x/xterm-r6
+/usr/share/ncurses4/terminfo/x/xterm-sun
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v32
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v33
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v40
+/usr/share/ncurses4/terminfo/x/xterm-xi
+/usr/share/ncurses4/terminfo/x/xterm1
+/usr/share/ncurses4/terminfo/x/xterms
+/usr/share/ncurses4/terminfo/x/xterms-sun
+/usr/share/ncurses4/terminfo/x/xwsh
+/usr/share/ncurses4/terminfo/z
+/usr/share/ncurses4/terminfo/z/z-100
+/usr/share/ncurses4/terminfo/z/z-100bw
+/usr/share/ncurses4/terminfo/z/z100
+/usr/share/ncurses4/terminfo/z/z100bw
+/usr/share/ncurses4/terminfo/z/z110
+/usr/share/ncurses4/terminfo/z/z110bw
+/usr/share/ncurses4/terminfo/z/z19
+/usr/share/ncurses4/terminfo/z/z29
+/usr/share/ncurses4/terminfo/z/z29a
+/usr/share/ncurses4/terminfo/z/z29a-kc-bc
+/usr/share/ncurses4/terminfo/z/z29a-kc-uc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-bc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-uc
+/usr/share/ncurses4/terminfo/z/z29b
+/usr/share/ncurses4/terminfo/z/z30
+/usr/share/ncurses4/terminfo/z/z340
+/usr/share/ncurses4/terminfo/z/z340-nam
+/usr/share/ncurses4/terminfo/z/z39-a
+/usr/share/ncurses4/terminfo/z/z39a
+/usr/share/ncurses4/terminfo/z/z50
+/usr/share/ncurses4/terminfo/z/z8001
+/usr/share/ncurses4/terminfo/z/zen30
+/usr/share/ncurses4/terminfo/z/zen50
+/usr/share/ncurses4/terminfo/z/zen8001
+/usr/share/ncurses4/terminfo/z/zenith
+/usr/share/ncurses4/terminfo/z/zenith29
+/usr/share/ncurses4/terminfo/z/zenith39-a
+/usr/share/ncurses4/terminfo/z/zenith39-ansi
+/usr/share/ncurses4/terminfo/z/zt-1
+/usr/share/ncurses4/terminfo/z/ztx
+/usr/share/ncurses4/terminfo/z/ztx-1-a
+/usr/share/ncurses4/terminfo/z/ztx11
+
+2 15 RPM:Files 0 0
+2 14 #text 0 1
+
+1 15 RDF:Description 0 0
+1 14 #text 0 1
+
+0 15 RDF:RDF 0 0
diff --git a/result/rdf2.rdr b/result/rdf2.rdr
new file mode 100644
index 0000000..15e5e97
--- /dev/null
+++ b/result/rdf2.rdr
@@ -0,0 +1,2008 @@
+0 1 RDF:RDF 0 0
+1 14 #text 0 1
+
+1 1 RDF:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Name 0 0
+3 3 #text 0 1 ncurses4
+2 15 RPM:Name 0 0
+2 14 #text 0 1
+
+2 1 RPM:Version 0 0
+3 3 #text 0 1 4.2
+2 15 RPM:Version 0 0
+2 14 #text 0 1
+
+2 1 RPM:Release 0 0
+3 3 #text 0 1 3
+2 15 RPM:Release 0 0
+2 14 #text 0 1
+
+2 1 RPM:Arch 0 0
+3 3 #text 0 1 i386
+2 15 RPM:Arch 0 0
+2 14 #text 0 1
+
+2 1 RPM:Os 0 0
+3 3 #text 0 1 Linux
+2 15 RPM:Os 0 0
+2 14 #text 0 1
+
+2 1 RPM:Distribution 0 0
+3 3 #text 0 1 DLD
+2 15 RPM:Distribution 0 0
+2 14 #text 0 1
+
+2 1 RPM:Vendor 0 0
+3 3 #text 0 1 delix Computer GmbH
+2 15 RPM:Vendor 0 0
+2 14 #text 0 1
+
+2 1 RPM:Packager 0 0
+3 3 #text 0 1 Till Bubeck <bubeck@delix.de>, Ngo Than <than@delix.de>
+2 15 RPM:Packager 0 0
+2 14 #text 0 1
+
+2 1 RPM:Group 0 0
+3 3 #text 0 1 Libraries
+2 15 RPM:Group 0 0
+2 14 #text 0 1
+
+2 1 RPM:Summary 0 0
+3 3 #text 0 1 Bibliothek zur Ansteuerung von Terminals
+2 15 RPM:Summary 0 0
+2 14 #text 0 1
+
+2 1 RPM:Description 0 0
+3 3 #text 0 1 Diese Library stellt dem Programmierer vom Terminal unabhängige
+Routinen zur Ansteuerung Ihres Bildschirms zur Verfügung, die
+speziell optimiert sind.
+Diese Version ist die 'new curses' (ncurses) Variante und ist der
+anerkannte Ersatz für die klassische Curses-Library, die nicht mehr
+weiterentwickelt wird.
+2 15 RPM:Description 0 0
+2 14 #text 0 1
+
+2 1 RPM:Copyright 0 0
+3 3 #text 0 1 GPL
+2 15 RPM:Copyright 0 0
+2 14 #text 0 1
+
+2 1 RPM:Sources 0 0
+3 3 #text 0 1 ncurses4-4.2-3.src.rpm
+2 15 RPM:Sources 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildDate 0 0
+3 3 #text 0 1 Tue May 12 19:30:26 1998
+2 15 RPM:BuildDate 0 0
+2 14 #text 0 1
+
+2 1 RPM:Date 0 0
+3 3 #text 0 1 895015826
+2 15 RPM:Date 0 0
+2 14 #text 0 1
+
+2 1 RPM:Size 0 0
+3 3 #text 0 1 1373513
+2 15 RPM:Size 0 0
+2 14 #text 0 1
+
+2 1 RPM:BuildHost 0 0
+3 3 #text 0 1 erdbeere.delix.de
+2 15 RPM:BuildHost 0 0
+2 14 #text 0 1
+
+2 1 RPM:Provides 0 0
+3 14 #text 0 1
+
+3 1 RDF:Bag 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 ncurses4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libpanel.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libncurses.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libmenu.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 libform.so.4
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+4 1 RPM:Resource 0 0
+5 3 #text 0 1 ncurses
+4 15 RPM:Resource 0 0
+4 14 #text 0 1
+
+3 15 RDF:Bag 0 0
+3 14 #text 0 1
+
+2 15 RPM:Provides 0 0
+2 14 #text 0 1
+
+2 1 RPM:Files 0 0
+3 3 #text 0 1 /lib/libncurses.so.4
+/lib/libncurses.so.4.2
+/usr/doc/ncurses4-4.2-3
+/usr/doc/ncurses4-4.2-3/ANNOUNCE.gz
+/usr/doc/ncurses4-4.2-3/NEWS.gz
+/usr/doc/ncurses4-4.2-3/README.gz
+/usr/doc/ncurses4-4.2-3/TO-DO.gz
+/usr/lib/libform.so.4
+/usr/lib/libform.so.4.2
+/usr/lib/libmenu.so.4
+/usr/lib/libmenu.so.4.2
+/usr/lib/libpanel.so.4
+/usr/lib/libpanel.so.4.2
+/usr/share/ncurses4
+/usr/share/ncurses4/tabset
+/usr/share/ncurses4/tabset/std
+/usr/share/ncurses4/tabset/stdcrt
+/usr/share/ncurses4/tabset/vt100
+/usr/share/ncurses4/tabset/vt300
+/usr/share/ncurses4/terminfo
+/usr/share/ncurses4/terminfo/1
+/usr/share/ncurses4/terminfo/1/1178
+/usr/share/ncurses4/terminfo/1/1730-lm
+/usr/share/ncurses4/terminfo/2
+/usr/share/ncurses4/terminfo/2/2621
+/usr/share/ncurses4/terminfo/2/2621-wl
+/usr/share/ncurses4/terminfo/2/2621A
+/usr/share/ncurses4/terminfo/2/2621a
+/usr/share/ncurses4/terminfo/3
+/usr/share/ncurses4/terminfo/3/386at
+/usr/share/ncurses4/terminfo/3/3b1
+/usr/share/ncurses4/terminfo/4
+/usr/share/ncurses4/terminfo/4/4025ex
+/usr/share/ncurses4/terminfo/4/4027ex
+/usr/share/ncurses4/terminfo/4/4410-w
+/usr/share/ncurses4/terminfo/5
+/usr/share/ncurses4/terminfo/5/5051
+/usr/share/ncurses4/terminfo/5/5410-w
+/usr/share/ncurses4/terminfo/5/5620
+/usr/share/ncurses4/terminfo/5/5630-24
+/usr/share/ncurses4/terminfo/5/5630DMD-24
+/usr/share/ncurses4/terminfo/6
+/usr/share/ncurses4/terminfo/6/630-lm
+/usr/share/ncurses4/terminfo/6/630MTG-24
+/usr/share/ncurses4/terminfo/7
+/usr/share/ncurses4/terminfo/7/730MTG-24
+/usr/share/ncurses4/terminfo/7/730MTG-41
+/usr/share/ncurses4/terminfo/7/730MTG-41r
+/usr/share/ncurses4/terminfo/7/730MTGr
+/usr/share/ncurses4/terminfo/7/730MTGr-24
+/usr/share/ncurses4/terminfo/8
+/usr/share/ncurses4/terminfo/8/8510
+/usr/share/ncurses4/terminfo/9
+/usr/share/ncurses4/terminfo/9/955-hb
+/usr/share/ncurses4/terminfo/9/955-w
+/usr/share/ncurses4/terminfo/P
+/usr/share/ncurses4/terminfo/P/P12
+/usr/share/ncurses4/terminfo/P/P12-M
+/usr/share/ncurses4/terminfo/P/P12-M-W
+/usr/share/ncurses4/terminfo/P/P12-W
+/usr/share/ncurses4/terminfo/P/P14
+/usr/share/ncurses4/terminfo/P/P14-M
+/usr/share/ncurses4/terminfo/P/P14-M-W
+/usr/share/ncurses4/terminfo/P/P14-W
+/usr/share/ncurses4/terminfo/P/P4
+/usr/share/ncurses4/terminfo/P/P5
+/usr/share/ncurses4/terminfo/P/P7
+/usr/share/ncurses4/terminfo/P/P8
+/usr/share/ncurses4/terminfo/P/P8-W
+/usr/share/ncurses4/terminfo/P/P9
+/usr/share/ncurses4/terminfo/P/P9-8
+/usr/share/ncurses4/terminfo/P/P9-8-W
+/usr/share/ncurses4/terminfo/P/P9-W
+/usr/share/ncurses4/terminfo/X
+/usr/share/ncurses4/terminfo/X/X-hpterm
+/usr/share/ncurses4/terminfo/a
+/usr/share/ncurses4/terminfo/a/a210
+/usr/share/ncurses4/terminfo/a/a80
+/usr/share/ncurses4/terminfo/a/a980
+/usr/share/ncurses4/terminfo/a/aa4080
+/usr/share/ncurses4/terminfo/a/aaa
+/usr/share/ncurses4/terminfo/a/aaa+dec
+/usr/share/ncurses4/terminfo/a/aaa+rv
+/usr/share/ncurses4/terminfo/a/aaa+unk
+/usr/share/ncurses4/terminfo/a/aaa-18
+/usr/share/ncurses4/terminfo/a/aaa-18-rv
+/usr/share/ncurses4/terminfo/a/aaa-20
+/usr/share/ncurses4/terminfo/a/aaa-22
+/usr/share/ncurses4/terminfo/a/aaa-24
+/usr/share/ncurses4/terminfo/a/aaa-24-rv
+/usr/share/ncurses4/terminfo/a/aaa-26
+/usr/share/ncurses4/terminfo/a/aaa-28
+/usr/share/ncurses4/terminfo/a/aaa-30
+/usr/share/ncurses4/terminfo/a/aaa-30-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s
+/usr/share/ncurses4/terminfo/a/aaa-30-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv-ct
+/usr/share/ncurses4/terminfo/a/aaa-36
+/usr/share/ncurses4/terminfo/a/aaa-36-rv
+/usr/share/ncurses4/terminfo/a/aaa-40
+/usr/share/ncurses4/terminfo/a/aaa-40-rv
+/usr/share/ncurses4/terminfo/a/aaa-48
+/usr/share/ncurses4/terminfo/a/aaa-48-rv
+/usr/share/ncurses4/terminfo/a/aaa-60
+/usr/share/ncurses4/terminfo/a/aaa-60-dec-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-s
+/usr/share/ncurses4/terminfo/a/aaa-60-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-db
+/usr/share/ncurses4/terminfo/a/aaa-rv
+/usr/share/ncurses4/terminfo/a/aaa-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-rv-unk
+/usr/share/ncurses4/terminfo/a/aaa-s
+/usr/share/ncurses4/terminfo/a/aaa-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-s-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-unk
+/usr/share/ncurses4/terminfo/a/aas1901
+/usr/share/ncurses4/terminfo/a/abm80
+/usr/share/ncurses4/terminfo/a/abm85
+/usr/share/ncurses4/terminfo/a/abm85e
+/usr/share/ncurses4/terminfo/a/abm85h
+/usr/share/ncurses4/terminfo/a/abm85h-old
+/usr/share/ncurses4/terminfo/a/act4
+/usr/share/ncurses4/terminfo/a/act5
+/usr/share/ncurses4/terminfo/a/addrinfo
+/usr/share/ncurses4/terminfo/a/adds980
+/usr/share/ncurses4/terminfo/a/addsviewpoint
+/usr/share/ncurses4/terminfo/a/addsvp60
+/usr/share/ncurses4/terminfo/a/adm+sgr
+/usr/share/ncurses4/terminfo/a/adm1
+/usr/share/ncurses4/terminfo/a/adm11
+/usr/share/ncurses4/terminfo/a/adm1178
+/usr/share/ncurses4/terminfo/a/adm12
+/usr/share/ncurses4/terminfo/a/adm1a
+/usr/share/ncurses4/terminfo/a/adm2
+/usr/share/ncurses4/terminfo/a/adm20
+/usr/share/ncurses4/terminfo/a/adm21
+/usr/share/ncurses4/terminfo/a/adm22
+/usr/share/ncurses4/terminfo/a/adm3
+/usr/share/ncurses4/terminfo/a/adm31
+/usr/share/ncurses4/terminfo/a/adm31-old
+/usr/share/ncurses4/terminfo/a/adm36
+/usr/share/ncurses4/terminfo/a/adm3a
+/usr/share/ncurses4/terminfo/a/adm3a+
+/usr/share/ncurses4/terminfo/a/adm42
+/usr/share/ncurses4/terminfo/a/adm42-ns
+/usr/share/ncurses4/terminfo/a/adm5
+/usr/share/ncurses4/terminfo/a/aepro
+/usr/share/ncurses4/terminfo/a/aixterm-m
+/usr/share/ncurses4/terminfo/a/aixterm-m-old
+/usr/share/ncurses4/terminfo/a/aj
+/usr/share/ncurses4/terminfo/a/aj510
+/usr/share/ncurses4/terminfo/a/aj830
+/usr/share/ncurses4/terminfo/a/aj832
+/usr/share/ncurses4/terminfo/a/alt2
+/usr/share/ncurses4/terminfo/a/alt3
+/usr/share/ncurses4/terminfo/a/alt4
+/usr/share/ncurses4/terminfo/a/alt5
+/usr/share/ncurses4/terminfo/a/alt7
+/usr/share/ncurses4/terminfo/a/alt7pc
+/usr/share/ncurses4/terminfo/a/alto-h19
+/usr/share/ncurses4/terminfo/a/alto-heath
+/usr/share/ncurses4/terminfo/a/altoh19
+/usr/share/ncurses4/terminfo/a/altoheath
+/usr/share/ncurses4/terminfo/a/altos-2
+/usr/share/ncurses4/terminfo/a/altos-3
+/usr/share/ncurses4/terminfo/a/altos-4
+/usr/share/ncurses4/terminfo/a/altos-5
+/usr/share/ncurses4/terminfo/a/altos2
+/usr/share/ncurses4/terminfo/a/altos3
+/usr/share/ncurses4/terminfo/a/altos4
+/usr/share/ncurses4/terminfo/a/altos5
+/usr/share/ncurses4/terminfo/a/altos7
+/usr/share/ncurses4/terminfo/a/altos7pc
+/usr/share/ncurses4/terminfo/a/ambas
+/usr/share/ncurses4/terminfo/a/ambassador
+/usr/share/ncurses4/terminfo/a/amiga
+/usr/share/ncurses4/terminfo/a/amiga-h
+/usr/share/ncurses4/terminfo/a/amp219
+/usr/share/ncurses4/terminfo/a/amp219w
+/usr/share/ncurses4/terminfo/a/ampex-219
+/usr/share/ncurses4/terminfo/a/ampex-219w
+/usr/share/ncurses4/terminfo/a/ampex-232
+/usr/share/ncurses4/terminfo/a/ampex175
+/usr/share/ncurses4/terminfo/a/ampex175-b
+/usr/share/ncurses4/terminfo/a/ampex210
+/usr/share/ncurses4/terminfo/a/ampex219
+/usr/share/ncurses4/terminfo/a/ampex219w
+/usr/share/ncurses4/terminfo/a/ampex232
+/usr/share/ncurses4/terminfo/a/ampex232w
+/usr/share/ncurses4/terminfo/a/ampex80
+/usr/share/ncurses4/terminfo/a/annarbor4080
+/usr/share/ncurses4/terminfo/a/ansi
+/usr/share/ncurses4/terminfo/a/ansi-color-2-emx
+/usr/share/ncurses4/terminfo/a/ansi-color-3-emx
+/usr/share/ncurses4/terminfo/a/ansi-emx
+/usr/share/ncurses4/terminfo/a/ansi-m
+/usr/share/ncurses4/terminfo/a/ansi-mini
+/usr/share/ncurses4/terminfo/a/ansi-mono
+/usr/share/ncurses4/terminfo/a/ansi-nt
+/usr/share/ncurses4/terminfo/a/ansi.sys
+/usr/share/ncurses4/terminfo/a/ansi.sys-old
+/usr/share/ncurses4/terminfo/a/ansi.sysk
+/usr/share/ncurses4/terminfo/a/ansi43m
+/usr/share/ncurses4/terminfo/a/ansi77
+/usr/share/ncurses4/terminfo/a/ansi80x25
+/usr/share/ncurses4/terminfo/a/ansi80x25-mono
+/usr/share/ncurses4/terminfo/a/ansi80x25-raw
+/usr/share/ncurses4/terminfo/a/ansi80x30
+/usr/share/ncurses4/terminfo/a/ansi80x30-mono
+/usr/share/ncurses4/terminfo/a/ansi80x43
+/usr/share/ncurses4/terminfo/a/ansi80x43-mono
+/usr/share/ncurses4/terminfo/a/ansi80x50
+/usr/share/ncurses4/terminfo/a/ansi80x50-mono
+/usr/share/ncurses4/terminfo/a/ansi80x60
+/usr/share/ncurses4/terminfo/a/ansi80x60-mono
+/usr/share/ncurses4/terminfo/a/ansil
+/usr/share/ncurses4/terminfo/a/ansil-mono
+/usr/share/ncurses4/terminfo/a/ansis
+/usr/share/ncurses4/terminfo/a/ansis-mono
+/usr/share/ncurses4/terminfo/a/ansisysk
+/usr/share/ncurses4/terminfo/a/ansiw
+/usr/share/ncurses4/terminfo/a/ap-vm80
+/usr/share/ncurses4/terminfo/a/apl
+/usr/share/ncurses4/terminfo/a/apollo
+/usr/share/ncurses4/terminfo/a/apollo_15P
+/usr/share/ncurses4/terminfo/a/apollo_19L
+/usr/share/ncurses4/terminfo/a/apollo_color
+/usr/share/ncurses4/terminfo/a/apple-80
+/usr/share/ncurses4/terminfo/a/apple-ae
+/usr/share/ncurses4/terminfo/a/apple-soroc
+/usr/share/ncurses4/terminfo/a/apple-uterm
+/usr/share/ncurses4/terminfo/a/apple-uterm-vb
+/usr/share/ncurses4/terminfo/a/apple-videx
+/usr/share/ncurses4/terminfo/a/apple-videx2
+/usr/share/ncurses4/terminfo/a/apple-videx3
+/usr/share/ncurses4/terminfo/a/apple-vm80
+/usr/share/ncurses4/terminfo/a/apple2e
+/usr/share/ncurses4/terminfo/a/apple2e-p
+/usr/share/ncurses4/terminfo/a/apple80p
+/usr/share/ncurses4/terminfo/a/appleII
+/usr/share/ncurses4/terminfo/a/appleIIc
+/usr/share/ncurses4/terminfo/a/appleIIe
+/usr/share/ncurses4/terminfo/a/appleIIgs
+/usr/share/ncurses4/terminfo/a/at386
+/usr/share/ncurses4/terminfo/a/atari
+/usr/share/ncurses4/terminfo/a/att2300
+/usr/share/ncurses4/terminfo/a/att2350
+/usr/share/ncurses4/terminfo/a/att4410
+/usr/share/ncurses4/terminfo/a/att4410-w
+/usr/share/ncurses4/terminfo/a/att4410v1
+/usr/share/ncurses4/terminfo/a/att4410v1-w
+/usr/share/ncurses4/terminfo/a/att4415
+/usr/share/ncurses4/terminfo/a/att4415+nl
+/usr/share/ncurses4/terminfo/a/att4415-nl
+/usr/share/ncurses4/terminfo/a/att4415-rv
+/usr/share/ncurses4/terminfo/a/att4415-rv-nl
+/usr/share/ncurses4/terminfo/a/att4415-w
+/usr/share/ncurses4/terminfo/a/att4415-w-nl
+/usr/share/ncurses4/terminfo/a/att4415-w-rv
+/usr/share/ncurses4/terminfo/a/att4415-w-rv-n
+/usr/share/ncurses4/terminfo/a/att4418
+/usr/share/ncurses4/terminfo/a/att4418-w
+/usr/share/ncurses4/terminfo/a/att4420
+/usr/share/ncurses4/terminfo/a/att4424
+/usr/share/ncurses4/terminfo/a/att4424-1
+/usr/share/ncurses4/terminfo/a/att4424m
+/usr/share/ncurses4/terminfo/a/att4425
+/usr/share/ncurses4/terminfo/a/att4425-nl
+/usr/share/ncurses4/terminfo/a/att4425-w
+/usr/share/ncurses4/terminfo/a/att4426
+/usr/share/ncurses4/terminfo/a/att500
+/usr/share/ncurses4/terminfo/a/att505
+/usr/share/ncurses4/terminfo/a/att505-24
+/usr/share/ncurses4/terminfo/a/att510a
+/usr/share/ncurses4/terminfo/a/att510d
+/usr/share/ncurses4/terminfo/a/att513
+/usr/share/ncurses4/terminfo/a/att5310
+/usr/share/ncurses4/terminfo/a/att5320
+/usr/share/ncurses4/terminfo/a/att5410
+/usr/share/ncurses4/terminfo/a/att5410-w
+/usr/share/ncurses4/terminfo/a/att5410v1
+/usr/share/ncurses4/terminfo/a/att5410v1-w
+/usr/share/ncurses4/terminfo/a/att5418
+/usr/share/ncurses4/terminfo/a/att5418-w
+/usr/share/ncurses4/terminfo/a/att5420
+/usr/share/ncurses4/terminfo/a/att5420+nl
+/usr/share/ncurses4/terminfo/a/att5420-nl
+/usr/share/ncurses4/terminfo/a/att5420-rv
+/usr/share/ncurses4/terminfo/a/att5420-rv-nl
+/usr/share/ncurses4/terminfo/a/att5420-w
+/usr/share/ncurses4/terminfo/a/att5420-w-nl
+/usr/share/ncurses4/terminfo/a/att5420-w-rv
+/usr/share/ncurses4/terminfo/a/att5420-w-rv-n
+/usr/share/ncurses4/terminfo/a/att5420_2
+/usr/share/ncurses4/terminfo/a/att5420_2-w
+/usr/share/ncurses4/terminfo/a/att5425
+/usr/share/ncurses4/terminfo/a/att5425-nl
+/usr/share/ncurses4/terminfo/a/att5425-w
+/usr/share/ncurses4/terminfo/a/att5430
+/usr/share/ncurses4/terminfo/a/att5620
+/usr/share/ncurses4/terminfo/a/att5620-1
+/usr/share/ncurses4/terminfo/a/att5620-24
+/usr/share/ncurses4/terminfo/a/att5620-34
+/usr/share/ncurses4/terminfo/a/att5620-s
+/usr/share/ncurses4/terminfo/a/att605
+/usr/share/ncurses4/terminfo/a/att605-pc
+/usr/share/ncurses4/terminfo/a/att605-w
+/usr/share/ncurses4/terminfo/a/att610
+/usr/share/ncurses4/terminfo/a/att610-103k
+/usr/share/ncurses4/terminfo/a/att610-103k-w
+/usr/share/ncurses4/terminfo/a/att610-w
+/usr/share/ncurses4/terminfo/a/att615
+/usr/share/ncurses4/terminfo/a/att615-103k
+/usr/share/ncurses4/terminfo/a/att615-103k-w
+/usr/share/ncurses4/terminfo/a/att615-w
+/usr/share/ncurses4/terminfo/a/att620
+/usr/share/ncurses4/terminfo/a/att620-103k
+/usr/share/ncurses4/terminfo/a/att620-103k-w
+/usr/share/ncurses4/terminfo/a/att620-w
+/usr/share/ncurses4/terminfo/a/att630
+/usr/share/ncurses4/terminfo/a/att630-24
+/usr/share/ncurses4/terminfo/a/att6386
+/usr/share/ncurses4/terminfo/a/att730
+/usr/share/ncurses4/terminfo/a/att730-24
+/usr/share/ncurses4/terminfo/a/att730-41
+/usr/share/ncurses4/terminfo/a/att7300
+/usr/share/ncurses4/terminfo/a/att730r
+/usr/share/ncurses4/terminfo/a/att730r-24
+/usr/share/ncurses4/terminfo/a/att730r-41
+/usr/share/ncurses4/terminfo/a/avatar
+/usr/share/ncurses4/terminfo/a/avatar0
+/usr/share/ncurses4/terminfo/a/avatar0+
+/usr/share/ncurses4/terminfo/a/avatar1
+/usr/share/ncurses4/terminfo/a/avt
+/usr/share/ncurses4/terminfo/a/avt+s
+/usr/share/ncurses4/terminfo/a/avt-ns
+/usr/share/ncurses4/terminfo/a/avt-rv
+/usr/share/ncurses4/terminfo/a/avt-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-rv-s
+/usr/share/ncurses4/terminfo/a/avt-s
+/usr/share/ncurses4/terminfo/a/avt-w
+/usr/share/ncurses4/terminfo/a/avt-w-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv
+/usr/share/ncurses4/terminfo/a/avt-w-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv-s
+/usr/share/ncurses4/terminfo/a/avt-w-s
+/usr/share/ncurses4/terminfo/a/aws
+/usr/share/ncurses4/terminfo/a/awsc
+/usr/share/ncurses4/terminfo/b
+/usr/share/ncurses4/terminfo/b/b-128
+/usr/share/ncurses4/terminfo/b/bantam
+/usr/share/ncurses4/terminfo/b/basic4
+/usr/share/ncurses4/terminfo/b/basis
+/usr/share/ncurses4/terminfo/b/bct510a
+/usr/share/ncurses4/terminfo/b/bct510d
+/usr/share/ncurses4/terminfo/b/beacon
+/usr/share/ncurses4/terminfo/b/bee
+/usr/share/ncurses4/terminfo/b/beehive
+/usr/share/ncurses4/terminfo/b/beehive3
+/usr/share/ncurses4/terminfo/b/beehive4
+/usr/share/ncurses4/terminfo/b/beehiveIIIm
+/usr/share/ncurses4/terminfo/b/beterm
+/usr/share/ncurses4/terminfo/b/bg1.25
+/usr/share/ncurses4/terminfo/b/bg1.25nv
+/usr/share/ncurses4/terminfo/b/bg1.25rv
+/usr/share/ncurses4/terminfo/b/bg2.0
+/usr/share/ncurses4/terminfo/b/bg2.0nv
+/usr/share/ncurses4/terminfo/b/bg2.0rv
+/usr/share/ncurses4/terminfo/b/bg3.10
+/usr/share/ncurses4/terminfo/b/bg3.10nv
+/usr/share/ncurses4/terminfo/b/bg3.10rv
+/usr/share/ncurses4/terminfo/b/bh3m
+/usr/share/ncurses4/terminfo/b/bh4
+/usr/share/ncurses4/terminfo/b/bitgraph
+/usr/share/ncurses4/terminfo/b/blit
+/usr/share/ncurses4/terminfo/b/bobcat
+/usr/share/ncurses4/terminfo/b/bsdos
+/usr/share/ncurses4/terminfo/b/bsdos-bold
+/usr/share/ncurses4/terminfo/c
+/usr/share/ncurses4/terminfo/c/c100
+/usr/share/ncurses4/terminfo/c/c100-1p
+/usr/share/ncurses4/terminfo/c/c100-4p
+/usr/share/ncurses4/terminfo/c/c100-rv
+/usr/share/ncurses4/terminfo/c/c100-rv-4p
+/usr/share/ncurses4/terminfo/c/c104
+/usr/share/ncurses4/terminfo/c/c108
+/usr/share/ncurses4/terminfo/c/c108-4p
+/usr/share/ncurses4/terminfo/c/c108-8p
+/usr/share/ncurses4/terminfo/c/c108-rv
+/usr/share/ncurses4/terminfo/c/c108-rv-4p
+/usr/share/ncurses4/terminfo/c/c108-rv-8p
+/usr/share/ncurses4/terminfo/c/c108-w
+/usr/share/ncurses4/terminfo/c/c108-w-8p
+/usr/share/ncurses4/terminfo/c/c300
+/usr/share/ncurses4/terminfo/c/c301
+/usr/share/ncurses4/terminfo/c/c321
+/usr/share/ncurses4/terminfo/c/ca22851
+/usr/share/ncurses4/terminfo/c/cad68-2
+/usr/share/ncurses4/terminfo/c/cad68-3
+/usr/share/ncurses4/terminfo/c/cbblit
+/usr/share/ncurses4/terminfo/c/cbunix
+/usr/share/ncurses4/terminfo/c/cci
+/usr/share/ncurses4/terminfo/c/cci1
+/usr/share/ncurses4/terminfo/c/cdc456
+/usr/share/ncurses4/terminfo/c/cdc721
+/usr/share/ncurses4/terminfo/c/cdc721-esc
+/usr/share/ncurses4/terminfo/c/cdc721ll
+/usr/share/ncurses4/terminfo/c/cdc752
+/usr/share/ncurses4/terminfo/c/cdc756
+/usr/share/ncurses4/terminfo/c/cg7900
+/usr/share/ncurses4/terminfo/c/cgc2
+/usr/share/ncurses4/terminfo/c/cgc3
+/usr/share/ncurses4/terminfo/c/chromatics
+/usr/share/ncurses4/terminfo/c/ci8510
+/usr/share/ncurses4/terminfo/c/cit-80
+/usr/share/ncurses4/terminfo/c/cit101
+/usr/share/ncurses4/terminfo/c/cit101e
+/usr/share/ncurses4/terminfo/c/cit101e-132
+/usr/share/ncurses4/terminfo/c/cit101e-n
+/usr/share/ncurses4/terminfo/c/cit101e-n132
+/usr/share/ncurses4/terminfo/c/cit101e-rv
+/usr/share/ncurses4/terminfo/c/cit500
+/usr/share/ncurses4/terminfo/c/cit80
+/usr/share/ncurses4/terminfo/c/citc
+/usr/share/ncurses4/terminfo/c/citoh
+/usr/share/ncurses4/terminfo/c/citoh-6lpi
+/usr/share/ncurses4/terminfo/c/citoh-8lpi
+/usr/share/ncurses4/terminfo/c/citoh-comp
+/usr/share/ncurses4/terminfo/c/citoh-elite
+/usr/share/ncurses4/terminfo/c/citoh-pica
+/usr/share/ncurses4/terminfo/c/citoh-prop
+/usr/share/ncurses4/terminfo/c/citoh-ps
+/usr/share/ncurses4/terminfo/c/coco3
+/usr/share/ncurses4/terminfo/c/coherent
+/usr/share/ncurses4/terminfo/c/color_xterm
+/usr/share/ncurses4/terminfo/c/colorscan
+/usr/share/ncurses4/terminfo/c/commodore
+/usr/share/ncurses4/terminfo/c/concept
+/usr/share/ncurses4/terminfo/c/concept-avt
+/usr/share/ncurses4/terminfo/c/concept100
+/usr/share/ncurses4/terminfo/c/concept100-rv
+/usr/share/ncurses4/terminfo/c/concept108
+/usr/share/ncurses4/terminfo/c/concept108-4p
+/usr/share/ncurses4/terminfo/c/concept108-8p
+/usr/share/ncurses4/terminfo/c/concept108-w-8
+/usr/share/ncurses4/terminfo/c/concept108-w8p
+/usr/share/ncurses4/terminfo/c/concept108rv4p
+/usr/share/ncurses4/terminfo/c/cons25
+/usr/share/ncurses4/terminfo/c/cons25-iso-m
+/usr/share/ncurses4/terminfo/c/cons25-iso8859
+/usr/share/ncurses4/terminfo/c/cons25-koi8-r
+/usr/share/ncurses4/terminfo/c/cons25-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons25-m
+/usr/share/ncurses4/terminfo/c/cons25l1
+/usr/share/ncurses4/terminfo/c/cons25l1-m
+/usr/share/ncurses4/terminfo/c/cons25r
+/usr/share/ncurses4/terminfo/c/cons25r-m
+/usr/share/ncurses4/terminfo/c/cons25w
+/usr/share/ncurses4/terminfo/c/cons30
+/usr/share/ncurses4/terminfo/c/cons30-m
+/usr/share/ncurses4/terminfo/c/cons43
+/usr/share/ncurses4/terminfo/c/cons43-m
+/usr/share/ncurses4/terminfo/c/cons50
+/usr/share/ncurses4/terminfo/c/cons50-iso-m
+/usr/share/ncurses4/terminfo/c/cons50-iso8859
+/usr/share/ncurses4/terminfo/c/cons50-koi8r
+/usr/share/ncurses4/terminfo/c/cons50-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons50-m
+/usr/share/ncurses4/terminfo/c/cons50l1
+/usr/share/ncurses4/terminfo/c/cons50l1-m
+/usr/share/ncurses4/terminfo/c/cons50r
+/usr/share/ncurses4/terminfo/c/cons50r-m
+/usr/share/ncurses4/terminfo/c/cons60
+/usr/share/ncurses4/terminfo/c/cons60-iso
+/usr/share/ncurses4/terminfo/c/cons60-iso-m
+/usr/share/ncurses4/terminfo/c/cons60-koi8r
+/usr/share/ncurses4/terminfo/c/cons60-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons60-m
+/usr/share/ncurses4/terminfo/c/cons60l1
+/usr/share/ncurses4/terminfo/c/cons60l1-m
+/usr/share/ncurses4/terminfo/c/cons60r
+/usr/share/ncurses4/terminfo/c/cons60r-m
+/usr/share/ncurses4/terminfo/c/contel300
+/usr/share/ncurses4/terminfo/c/contel301
+/usr/share/ncurses4/terminfo/c/contel320
+/usr/share/ncurses4/terminfo/c/contel321
+/usr/share/ncurses4/terminfo/c/cops
+/usr/share/ncurses4/terminfo/c/cops-10
+/usr/share/ncurses4/terminfo/c/cops10
+/usr/share/ncurses4/terminfo/c/cs10
+/usr/share/ncurses4/terminfo/c/cs10-w
+/usr/share/ncurses4/terminfo/c/ct82
+/usr/share/ncurses4/terminfo/c/ct8500
+/usr/share/ncurses4/terminfo/c/ctrm
+/usr/share/ncurses4/terminfo/c/cx
+/usr/share/ncurses4/terminfo/c/cx100
+/usr/share/ncurses4/terminfo/c/cyb110
+/usr/share/ncurses4/terminfo/c/cyb83
+/usr/share/ncurses4/terminfo/d
+/usr/share/ncurses4/terminfo/d/d132
+/usr/share/ncurses4/terminfo/d/d80
+/usr/share/ncurses4/terminfo/d/d800
+/usr/share/ncurses4/terminfo/d/datagraphix
+/usr/share/ncurses4/terminfo/d/datamedia2500
+/usr/share/ncurses4/terminfo/d/datapoint
+/usr/share/ncurses4/terminfo/d/dataspeed40
+/usr/share/ncurses4/terminfo/d/dd5000
+/usr/share/ncurses4/terminfo/d/ddr
+/usr/share/ncurses4/terminfo/d/ddr3180
+/usr/share/ncurses4/terminfo/d/dec-vt100
+/usr/share/ncurses4/terminfo/d/dec-vt220
+/usr/share/ncurses4/terminfo/d/dec-vt330
+/usr/share/ncurses4/terminfo/d/dec-vt340
+/usr/share/ncurses4/terminfo/d/dec-vt400
+/usr/share/ncurses4/terminfo/d/decpro
+/usr/share/ncurses4/terminfo/d/decwriter
+/usr/share/ncurses4/terminfo/d/delta
+/usr/share/ncurses4/terminfo/d/dg-ansi
+/usr/share/ncurses4/terminfo/d/dg100
+/usr/share/ncurses4/terminfo/d/dg200
+/usr/share/ncurses4/terminfo/d/dg210
+/usr/share/ncurses4/terminfo/d/dg211
+/usr/share/ncurses4/terminfo/d/dg450
+/usr/share/ncurses4/terminfo/d/dg460-ansi
+/usr/share/ncurses4/terminfo/d/dg6053
+/usr/share/ncurses4/terminfo/d/dg6134
+/usr/share/ncurses4/terminfo/d/diablo
+/usr/share/ncurses4/terminfo/d/diablo-lm
+/usr/share/ncurses4/terminfo/d/diablo1620
+/usr/share/ncurses4/terminfo/d/diablo1620-m8
+/usr/share/ncurses4/terminfo/d/diablo1640
+/usr/share/ncurses4/terminfo/d/diablo1640-lm
+/usr/share/ncurses4/terminfo/d/diablo1640-m8
+/usr/share/ncurses4/terminfo/d/diablo1720
+/usr/share/ncurses4/terminfo/d/diablo1730
+/usr/share/ncurses4/terminfo/d/diablo1740
+/usr/share/ncurses4/terminfo/d/diablo1740-lm
+/usr/share/ncurses4/terminfo/d/diablo450
+/usr/share/ncurses4/terminfo/d/diablo630
+/usr/share/ncurses4/terminfo/d/dialogue
+/usr/share/ncurses4/terminfo/d/dialogue80
+/usr/share/ncurses4/terminfo/d/digilog
+/usr/share/ncurses4/terminfo/d/dku7003
+/usr/share/ncurses4/terminfo/d/dku7003-dumb
+/usr/share/ncurses4/terminfo/d/dm1520
+/usr/share/ncurses4/terminfo/d/dm1521
+/usr/share/ncurses4/terminfo/d/dm2500
+/usr/share/ncurses4/terminfo/d/dm3025
+/usr/share/ncurses4/terminfo/d/dm3045
+/usr/share/ncurses4/terminfo/d/dm80
+/usr/share/ncurses4/terminfo/d/dm80w
+/usr/share/ncurses4/terminfo/d/dmchat
+/usr/share/ncurses4/terminfo/d/dmd
+/usr/share/ncurses4/terminfo/d/dmd-24
+/usr/share/ncurses4/terminfo/d/dmd-34
+/usr/share/ncurses4/terminfo/d/dmd1
+/usr/share/ncurses4/terminfo/d/dmdt80
+/usr/share/ncurses4/terminfo/d/dmdt80w
+/usr/share/ncurses4/terminfo/d/dmterm
+/usr/share/ncurses4/terminfo/d/dp3360
+/usr/share/ncurses4/terminfo/d/dp8242
+/usr/share/ncurses4/terminfo/d/ds40
+/usr/share/ncurses4/terminfo/d/ds40-2
+/usr/share/ncurses4/terminfo/d/dt-100
+/usr/share/ncurses4/terminfo/d/dt-100w
+/usr/share/ncurses4/terminfo/d/dt100
+/usr/share/ncurses4/terminfo/d/dt100w
+/usr/share/ncurses4/terminfo/d/dt110
+/usr/share/ncurses4/terminfo/d/dt80
+/usr/share/ncurses4/terminfo/d/dt80-sas
+/usr/share/ncurses4/terminfo/d/dt80w
+/usr/share/ncurses4/terminfo/d/dtc300s
+/usr/share/ncurses4/terminfo/d/dtc382
+/usr/share/ncurses4/terminfo/d/dtterm
+/usr/share/ncurses4/terminfo/d/dumb
+/usr/share/ncurses4/terminfo/d/dw
+/usr/share/ncurses4/terminfo/d/dw1
+/usr/share/ncurses4/terminfo/d/dw2
+/usr/share/ncurses4/terminfo/d/dw3
+/usr/share/ncurses4/terminfo/d/dw4
+/usr/share/ncurses4/terminfo/d/dwk
+/usr/share/ncurses4/terminfo/d/dwk-vt
+/usr/share/ncurses4/terminfo/e
+/usr/share/ncurses4/terminfo/e/ecma+color
+/usr/share/ncurses4/terminfo/e/ecma+sgr
+/usr/share/ncurses4/terminfo/e/emots
+/usr/share/ncurses4/terminfo/e/emu
+/usr/share/ncurses4/terminfo/e/env230
+/usr/share/ncurses4/terminfo/e/envision230
+/usr/share/ncurses4/terminfo/e/ep40
+/usr/share/ncurses4/terminfo/e/ep4000
+/usr/share/ncurses4/terminfo/e/ep4080
+/usr/share/ncurses4/terminfo/e/ep48
+/usr/share/ncurses4/terminfo/e/ergo4000
+/usr/share/ncurses4/terminfo/e/esprit
+/usr/share/ncurses4/terminfo/e/esprit-am
+/usr/share/ncurses4/terminfo/e/eterm
+/usr/share/ncurses4/terminfo/e/ex155
+/usr/share/ncurses4/terminfo/e/excel62
+/usr/share/ncurses4/terminfo/e/excel62-rv
+/usr/share/ncurses4/terminfo/e/excel62-w
+/usr/share/ncurses4/terminfo/e/excel64
+/usr/share/ncurses4/terminfo/e/excel64-rv
+/usr/share/ncurses4/terminfo/e/excel64-w
+/usr/share/ncurses4/terminfo/e/exec80
+/usr/share/ncurses4/terminfo/f
+/usr/share/ncurses4/terminfo/f/f100
+/usr/share/ncurses4/terminfo/f/f100-rv
+/usr/share/ncurses4/terminfo/f/f110
+/usr/share/ncurses4/terminfo/f/f110-14
+/usr/share/ncurses4/terminfo/f/f110-14w
+/usr/share/ncurses4/terminfo/f/f110-w
+/usr/share/ncurses4/terminfo/f/f1720
+/usr/share/ncurses4/terminfo/f/f1720a
+/usr/share/ncurses4/terminfo/f/f200
+/usr/share/ncurses4/terminfo/f/f200-w
+/usr/share/ncurses4/terminfo/f/f200vi
+/usr/share/ncurses4/terminfo/f/f200vi-w
+/usr/share/ncurses4/terminfo/f/falco
+/usr/share/ncurses4/terminfo/f/falco-p
+/usr/share/ncurses4/terminfo/f/fenix
+/usr/share/ncurses4/terminfo/f/fenixw
+/usr/share/ncurses4/terminfo/f/fixterm
+/usr/share/ncurses4/terminfo/f/fortune
+/usr/share/ncurses4/terminfo/f/fos
+/usr/share/ncurses4/terminfo/f/fox
+/usr/share/ncurses4/terminfo/f/freedom
+/usr/share/ncurses4/terminfo/f/freedom-rv
+/usr/share/ncurses4/terminfo/f/freedom100
+/usr/share/ncurses4/terminfo/f/freedom110
+/usr/share/ncurses4/terminfo/f/freedom200
+/usr/share/ncurses4/terminfo/g
+/usr/share/ncurses4/terminfo/g/gator
+/usr/share/ncurses4/terminfo/g/gator-52
+/usr/share/ncurses4/terminfo/g/gator-52t
+/usr/share/ncurses4/terminfo/g/gator-t
+/usr/share/ncurses4/terminfo/g/gigi
+/usr/share/ncurses4/terminfo/g/glasstty
+/usr/share/ncurses4/terminfo/g/go-225
+/usr/share/ncurses4/terminfo/g/go140
+/usr/share/ncurses4/terminfo/g/go140w
+/usr/share/ncurses4/terminfo/g/go225
+/usr/share/ncurses4/terminfo/g/graphos
+/usr/share/ncurses4/terminfo/g/graphos-30
+/usr/share/ncurses4/terminfo/g/gs5430
+/usr/share/ncurses4/terminfo/g/gs5430-22
+/usr/share/ncurses4/terminfo/g/gs5430-24
+/usr/share/ncurses4/terminfo/g/gs6300
+/usr/share/ncurses4/terminfo/g/gsi
+/usr/share/ncurses4/terminfo/g/gt100
+/usr/share/ncurses4/terminfo/g/gt100a
+/usr/share/ncurses4/terminfo/g/gt40
+/usr/share/ncurses4/terminfo/g/gt42
+/usr/share/ncurses4/terminfo/g/guru
+/usr/share/ncurses4/terminfo/g/guru+rv
+/usr/share/ncurses4/terminfo/g/guru+s
+/usr/share/ncurses4/terminfo/g/guru+unk
+/usr/share/ncurses4/terminfo/g/guru-24
+/usr/share/ncurses4/terminfo/g/guru-33
+/usr/share/ncurses4/terminfo/g/guru-33-rv
+/usr/share/ncurses4/terminfo/g/guru-33-s
+/usr/share/ncurses4/terminfo/g/guru-44
+/usr/share/ncurses4/terminfo/g/guru-44-s
+/usr/share/ncurses4/terminfo/g/guru-76
+/usr/share/ncurses4/terminfo/g/guru-76-lp
+/usr/share/ncurses4/terminfo/g/guru-76-s
+/usr/share/ncurses4/terminfo/g/guru-76-w
+/usr/share/ncurses4/terminfo/g/guru-76-w-s
+/usr/share/ncurses4/terminfo/g/guru-76-wm
+/usr/share/ncurses4/terminfo/g/guru-lp
+/usr/share/ncurses4/terminfo/g/guru-nctxt
+/usr/share/ncurses4/terminfo/g/guru-rv
+/usr/share/ncurses4/terminfo/g/guru-s
+/usr/share/ncurses4/terminfo/h
+/usr/share/ncurses4/terminfo/h/h-100
+/usr/share/ncurses4/terminfo/h/h-100bw
+/usr/share/ncurses4/terminfo/h/h100
+/usr/share/ncurses4/terminfo/h/h100bw
+/usr/share/ncurses4/terminfo/h/h19
+/usr/share/ncurses4/terminfo/h/h19-a
+/usr/share/ncurses4/terminfo/h/h19-b
+/usr/share/ncurses4/terminfo/h/h19-bs
+/usr/share/ncurses4/terminfo/h/h19-g
+/usr/share/ncurses4/terminfo/h/h19-smul
+/usr/share/ncurses4/terminfo/h/h19-u
+/usr/share/ncurses4/terminfo/h/h19-us
+/usr/share/ncurses4/terminfo/h/h19a
+/usr/share/ncurses4/terminfo/h/h19g
+/usr/share/ncurses4/terminfo/h/h19k
+/usr/share/ncurses4/terminfo/h/h19kermit
+/usr/share/ncurses4/terminfo/h/h19us
+/usr/share/ncurses4/terminfo/h/h29a-kc-bc
+/usr/share/ncurses4/terminfo/h/h29a-kc-uc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-bc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-uc
+/usr/share/ncurses4/terminfo/h/h80
+/usr/share/ncurses4/terminfo/h/ha8675
+/usr/share/ncurses4/terminfo/h/ha8686
+/usr/share/ncurses4/terminfo/h/hazel
+/usr/share/ncurses4/terminfo/h/hds200
+/usr/share/ncurses4/terminfo/h/he80
+/usr/share/ncurses4/terminfo/h/heath
+/usr/share/ncurses4/terminfo/h/heath-19
+/usr/share/ncurses4/terminfo/h/heath-ansi
+/usr/share/ncurses4/terminfo/h/heathkit
+/usr/share/ncurses4/terminfo/h/heathkit-a
+/usr/share/ncurses4/terminfo/h/hft
+/usr/share/ncurses4/terminfo/h/hft-c
+/usr/share/ncurses4/terminfo/h/hirez100
+/usr/share/ncurses4/terminfo/h/hirez100-w
+/usr/share/ncurses4/terminfo/h/hmod1
+/usr/share/ncurses4/terminfo/h/hp
+/usr/share/ncurses4/terminfo/h/hp+arrows
+/usr/share/ncurses4/terminfo/h/hp+color
+/usr/share/ncurses4/terminfo/h/hp+labels
+/usr/share/ncurses4/terminfo/h/hp+pfk+arrows
+/usr/share/ncurses4/terminfo/h/hp+pfk+cr
+/usr/share/ncurses4/terminfo/h/hp+pfk-cr
+/usr/share/ncurses4/terminfo/h/hp+printer
+/usr/share/ncurses4/terminfo/h/hp110
+/usr/share/ncurses4/terminfo/h/hp150
+/usr/share/ncurses4/terminfo/h/hp2
+/usr/share/ncurses4/terminfo/h/hp236
+/usr/share/ncurses4/terminfo/h/hp2382
+/usr/share/ncurses4/terminfo/h/hp2382a
+/usr/share/ncurses4/terminfo/h/hp2392
+/usr/share/ncurses4/terminfo/h/hp2397
+/usr/share/ncurses4/terminfo/h/hp2397a
+/usr/share/ncurses4/terminfo/h/hp2621
+/usr/share/ncurses4/terminfo/h/hp2621-48
+/usr/share/ncurses4/terminfo/h/hp2621-a
+/usr/share/ncurses4/terminfo/h/hp2621-ba
+/usr/share/ncurses4/terminfo/h/hp2621-fl
+/usr/share/ncurses4/terminfo/h/hp2621-k45
+/usr/share/ncurses4/terminfo/h/hp2621-nl
+/usr/share/ncurses4/terminfo/h/hp2621-nt
+/usr/share/ncurses4/terminfo/h/hp2621-wl
+/usr/share/ncurses4/terminfo/h/hp2621A
+/usr/share/ncurses4/terminfo/h/hp2621a
+/usr/share/ncurses4/terminfo/h/hp2621a-a
+/usr/share/ncurses4/terminfo/h/hp2621b
+/usr/share/ncurses4/terminfo/h/hp2621b-kx
+/usr/share/ncurses4/terminfo/h/hp2621b-kx-p
+/usr/share/ncurses4/terminfo/h/hp2621b-p
+/usr/share/ncurses4/terminfo/h/hp2621k45
+/usr/share/ncurses4/terminfo/h/hp2621p
+/usr/share/ncurses4/terminfo/h/hp2621p-a
+/usr/share/ncurses4/terminfo/h/hp2622
+/usr/share/ncurses4/terminfo/h/hp2622a
+/usr/share/ncurses4/terminfo/h/hp2623
+/usr/share/ncurses4/terminfo/h/hp2623a
+/usr/share/ncurses4/terminfo/h/hp2624
+/usr/share/ncurses4/terminfo/h/hp2624-10p
+/usr/share/ncurses4/terminfo/h/hp2624a
+/usr/share/ncurses4/terminfo/h/hp2624a-10p
+/usr/share/ncurses4/terminfo/h/hp2624b
+/usr/share/ncurses4/terminfo/h/hp2624b-10p
+/usr/share/ncurses4/terminfo/h/hp2624b-10p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-p
+/usr/share/ncurses4/terminfo/h/hp2626
+/usr/share/ncurses4/terminfo/h/hp2626-12
+/usr/share/ncurses4/terminfo/h/hp2626-12-s
+/usr/share/ncurses4/terminfo/h/hp2626-12x40
+/usr/share/ncurses4/terminfo/h/hp2626-ns
+/usr/share/ncurses4/terminfo/h/hp2626-s
+/usr/share/ncurses4/terminfo/h/hp2626-x40
+/usr/share/ncurses4/terminfo/h/hp2626a
+/usr/share/ncurses4/terminfo/h/hp2626p
+/usr/share/ncurses4/terminfo/h/hp2627a
+/usr/share/ncurses4/terminfo/h/hp2627a-rev
+/usr/share/ncurses4/terminfo/h/hp2627c
+/usr/share/ncurses4/terminfo/h/hp262x
+/usr/share/ncurses4/terminfo/h/hp2640a
+/usr/share/ncurses4/terminfo/h/hp2640b
+/usr/share/ncurses4/terminfo/h/hp2641a
+/usr/share/ncurses4/terminfo/h/hp2644a
+/usr/share/ncurses4/terminfo/h/hp2645
+/usr/share/ncurses4/terminfo/h/hp2645a
+/usr/share/ncurses4/terminfo/h/hp2647a
+/usr/share/ncurses4/terminfo/h/hp2648
+/usr/share/ncurses4/terminfo/h/hp2648a
+/usr/share/ncurses4/terminfo/h/hp300h
+/usr/share/ncurses4/terminfo/h/hp45
+/usr/share/ncurses4/terminfo/h/hp700
+/usr/share/ncurses4/terminfo/h/hp700-wy
+/usr/share/ncurses4/terminfo/h/hp70092
+/usr/share/ncurses4/terminfo/h/hp70092A
+/usr/share/ncurses4/terminfo/h/hp70092a
+/usr/share/ncurses4/terminfo/h/hp9837
+/usr/share/ncurses4/terminfo/h/hp9845
+/usr/share/ncurses4/terminfo/h/hp98550
+/usr/share/ncurses4/terminfo/h/hp98550a
+/usr/share/ncurses4/terminfo/h/hp98720
+/usr/share/ncurses4/terminfo/h/hp98721
+/usr/share/ncurses4/terminfo/h/hpansi
+/usr/share/ncurses4/terminfo/h/hpex
+/usr/share/ncurses4/terminfo/h/hpex2
+/usr/share/ncurses4/terminfo/h/hpgeneric
+/usr/share/ncurses4/terminfo/h/hpsub
+/usr/share/ncurses4/terminfo/h/hpterm
+/usr/share/ncurses4/terminfo/h/htx11
+/usr/share/ncurses4/terminfo/h/hz1000
+/usr/share/ncurses4/terminfo/h/hz1420
+/usr/share/ncurses4/terminfo/h/hz1500
+/usr/share/ncurses4/terminfo/h/hz1510
+/usr/share/ncurses4/terminfo/h/hz1520
+/usr/share/ncurses4/terminfo/h/hz1520-noesc
+/usr/share/ncurses4/terminfo/h/hz1552
+/usr/share/ncurses4/terminfo/h/hz1552-rv
+/usr/share/ncurses4/terminfo/h/hz2000
+/usr/share/ncurses4/terminfo/i
+/usr/share/ncurses4/terminfo/i/i100
+/usr/share/ncurses4/terminfo/i/i3101
+/usr/share/ncurses4/terminfo/i/i3151
+/usr/share/ncurses4/terminfo/i/i3164
+/usr/share/ncurses4/terminfo/i/i400
+/usr/share/ncurses4/terminfo/i/ibcs2
+/usr/share/ncurses4/terminfo/i/ibm-apl
+/usr/share/ncurses4/terminfo/i/ibm-pc
+/usr/share/ncurses4/terminfo/i/ibm-system1
+/usr/share/ncurses4/terminfo/i/ibm3101
+/usr/share/ncurses4/terminfo/i/ibm3151
+/usr/share/ncurses4/terminfo/i/ibm3161
+/usr/share/ncurses4/terminfo/i/ibm3163
+/usr/share/ncurses4/terminfo/i/ibm3164
+/usr/share/ncurses4/terminfo/i/ibm327x
+/usr/share/ncurses4/terminfo/i/ibm5051
+/usr/share/ncurses4/terminfo/i/ibm5081
+/usr/share/ncurses4/terminfo/i/ibm5081-c
+/usr/share/ncurses4/terminfo/i/ibm5151
+/usr/share/ncurses4/terminfo/i/ibm5154
+/usr/share/ncurses4/terminfo/i/ibm5154-c
+/usr/share/ncurses4/terminfo/i/ibm6153
+/usr/share/ncurses4/terminfo/i/ibm6154
+/usr/share/ncurses4/terminfo/i/ibm6154-c
+/usr/share/ncurses4/terminfo/i/ibm6155
+/usr/share/ncurses4/terminfo/i/ibm8512
+/usr/share/ncurses4/terminfo/i/ibm8513
+/usr/share/ncurses4/terminfo/i/ibm8514
+/usr/share/ncurses4/terminfo/i/ibm8514-c
+/usr/share/ncurses4/terminfo/i/ibmaed
+/usr/share/ncurses4/terminfo/i/ibmapa16
+/usr/share/ncurses4/terminfo/i/ibmapa8
+/usr/share/ncurses4/terminfo/i/ibmapa8c
+/usr/share/ncurses4/terminfo/i/ibmapa8c-c
+/usr/share/ncurses4/terminfo/i/ibmega
+/usr/share/ncurses4/terminfo/i/ibmega-c
+/usr/share/ncurses4/terminfo/i/ibmmono
+/usr/share/ncurses4/terminfo/i/ibmmpel
+/usr/share/ncurses4/terminfo/i/ibmmpel-c
+/usr/share/ncurses4/terminfo/i/ibmpc
+/usr/share/ncurses4/terminfo/i/ibmpc3
+/usr/share/ncurses4/terminfo/i/ibmpc3r
+/usr/share/ncurses4/terminfo/i/ibmpc3r-mono
+/usr/share/ncurses4/terminfo/i/ibmpcx
+/usr/share/ncurses4/terminfo/i/ibmvga
+/usr/share/ncurses4/terminfo/i/ibmvga-c
+/usr/share/ncurses4/terminfo/i/ibmx
+/usr/share/ncurses4/terminfo/i/ifmr
+/usr/share/ncurses4/terminfo/i/ims-ansi
+/usr/share/ncurses4/terminfo/i/ims950
+/usr/share/ncurses4/terminfo/i/ims950-b
+/usr/share/ncurses4/terminfo/i/ims950-rv
+/usr/share/ncurses4/terminfo/i/infoton
+/usr/share/ncurses4/terminfo/i/intertec
+/usr/share/ncurses4/terminfo/i/intertube
+/usr/share/ncurses4/terminfo/i/intertube2
+/usr/share/ncurses4/terminfo/i/intext
+/usr/share/ncurses4/terminfo/i/intext2
+/usr/share/ncurses4/terminfo/i/intextii
+/usr/share/ncurses4/terminfo/i/ips
+/usr/share/ncurses4/terminfo/i/ipsi
+/usr/share/ncurses4/terminfo/i/iq120
+/usr/share/ncurses4/terminfo/i/iq140
+/usr/share/ncurses4/terminfo/i/iris-ansi
+/usr/share/ncurses4/terminfo/i/iris-ansi-ap
+/usr/share/ncurses4/terminfo/i/iris-color
+/usr/share/ncurses4/terminfo/i/iris40
+/usr/share/ncurses4/terminfo/j
+/usr/share/ncurses4/terminfo/j/jaixterm-m
+/usr/share/ncurses4/terminfo/j/jerq
+/usr/share/ncurses4/terminfo/k
+/usr/share/ncurses4/terminfo/k/k45
+/usr/share/ncurses4/terminfo/k/kaypro
+/usr/share/ncurses4/terminfo/k/kaypro2
+/usr/share/ncurses4/terminfo/k/kermit
+/usr/share/ncurses4/terminfo/k/kermit-am
+/usr/share/ncurses4/terminfo/k/klone+acs
+/usr/share/ncurses4/terminfo/k/klone+color
+/usr/share/ncurses4/terminfo/k/klone+koi8acs
+/usr/share/ncurses4/terminfo/k/klone+sgr
+/usr/share/ncurses4/terminfo/k/klone+sgr-dumb
+/usr/share/ncurses4/terminfo/k/kt7
+/usr/share/ncurses4/terminfo/k/kt7ix
+/usr/share/ncurses4/terminfo/k/kterm
+/usr/share/ncurses4/terminfo/k/ktm
+/usr/share/ncurses4/terminfo/l
+/usr/share/ncurses4/terminfo/l/la120
+/usr/share/ncurses4/terminfo/l/layer
+/usr/share/ncurses4/terminfo/l/linux
+/usr/share/ncurses4/terminfo/l/linux-c
+/usr/share/ncurses4/terminfo/l/linux-c-nc
+/usr/share/ncurses4/terminfo/l/linux-koi8
+/usr/share/ncurses4/terminfo/l/linux-koi8r
+/usr/share/ncurses4/terminfo/l/linux-m
+/usr/share/ncurses4/terminfo/l/linux-nic
+/usr/share/ncurses4/terminfo/l/lisa
+/usr/share/ncurses4/terminfo/l/lisaterm
+/usr/share/ncurses4/terminfo/l/lisaterm-w
+/usr/share/ncurses4/terminfo/l/liswb
+/usr/share/ncurses4/terminfo/l/ln03
+/usr/share/ncurses4/terminfo/l/ln03-w
+/usr/share/ncurses4/terminfo/l/lpr
+/usr/share/ncurses4/terminfo/l/luna
+/usr/share/ncurses4/terminfo/l/luna68k
+/usr/share/ncurses4/terminfo/m
+/usr/share/ncurses4/terminfo/m/m2-nam
+/usr/share/ncurses4/terminfo/m/mac
+/usr/share/ncurses4/terminfo/m/mac-w
+/usr/share/ncurses4/terminfo/m/macintosh
+/usr/share/ncurses4/terminfo/m/macterminal-w
+/usr/share/ncurses4/terminfo/m/mai
+/usr/share/ncurses4/terminfo/m/masscomp
+/usr/share/ncurses4/terminfo/m/masscomp1
+/usr/share/ncurses4/terminfo/m/masscomp2
+/usr/share/ncurses4/terminfo/m/mdl110
+/usr/share/ncurses4/terminfo/m/megatek
+/usr/share/ncurses4/terminfo/m/memhp
+/usr/share/ncurses4/terminfo/m/mgr
+/usr/share/ncurses4/terminfo/m/mgr-linux
+/usr/share/ncurses4/terminfo/m/mgr-sun
+/usr/share/ncurses4/terminfo/m/microb
+/usr/share/ncurses4/terminfo/m/microbee
+/usr/share/ncurses4/terminfo/m/microterm
+/usr/share/ncurses4/terminfo/m/microterm5
+/usr/share/ncurses4/terminfo/m/mime
+/usr/share/ncurses4/terminfo/m/mime-3ax
+/usr/share/ncurses4/terminfo/m/mime-fb
+/usr/share/ncurses4/terminfo/m/mime-hb
+/usr/share/ncurses4/terminfo/m/mime1
+/usr/share/ncurses4/terminfo/m/mime2
+/usr/share/ncurses4/terminfo/m/mime2a
+/usr/share/ncurses4/terminfo/m/mime2a-s
+/usr/share/ncurses4/terminfo/m/mime2a-v
+/usr/share/ncurses4/terminfo/m/mime314
+/usr/share/ncurses4/terminfo/m/mime340
+/usr/share/ncurses4/terminfo/m/mime3a
+/usr/share/ncurses4/terminfo/m/mime3ax
+/usr/share/ncurses4/terminfo/m/mimei
+/usr/share/ncurses4/terminfo/m/mimeii
+/usr/share/ncurses4/terminfo/m/minitel
+/usr/share/ncurses4/terminfo/m/minitel-2
+/usr/share/ncurses4/terminfo/m/minitel-2-nam
+/usr/share/ncurses4/terminfo/m/minix
+/usr/share/ncurses4/terminfo/m/minix-old
+/usr/share/ncurses4/terminfo/m/minix-old-am
+/usr/share/ncurses4/terminfo/m/mm314
+/usr/share/ncurses4/terminfo/m/mm340
+/usr/share/ncurses4/terminfo/m/mod
+/usr/share/ncurses4/terminfo/m/mod24
+/usr/share/ncurses4/terminfo/m/modgraph
+/usr/share/ncurses4/terminfo/m/modgraph2
+/usr/share/ncurses4/terminfo/m/modgraph48
+/usr/share/ncurses4/terminfo/m/mono-emx
+/usr/share/ncurses4/terminfo/m/msk227
+/usr/share/ncurses4/terminfo/m/msk22714
+/usr/share/ncurses4/terminfo/m/msk227am
+/usr/share/ncurses4/terminfo/m/mskermit227
+/usr/share/ncurses4/terminfo/m/mskermit22714
+/usr/share/ncurses4/terminfo/m/mskermit227am
+/usr/share/ncurses4/terminfo/m/mt-70
+/usr/share/ncurses4/terminfo/m/mt4520-rv
+/usr/share/ncurses4/terminfo/m/mt70
+/usr/share/ncurses4/terminfo/n
+/usr/share/ncurses4/terminfo/n/nansi.sys
+/usr/share/ncurses4/terminfo/n/nansi.sysk
+/usr/share/ncurses4/terminfo/n/nansisys
+/usr/share/ncurses4/terminfo/n/nansisysk
+/usr/share/ncurses4/terminfo/n/ncr7900
+/usr/share/ncurses4/terminfo/n/ncr7900i
+/usr/share/ncurses4/terminfo/n/ncr7900iv
+/usr/share/ncurses4/terminfo/n/ncr7901
+/usr/share/ncurses4/terminfo/n/nec
+/usr/share/ncurses4/terminfo/n/nec5520
+/usr/share/ncurses4/terminfo/n/newhp
+/usr/share/ncurses4/terminfo/n/newhpkeyboard
+/usr/share/ncurses4/terminfo/n/news
+/usr/share/ncurses4/terminfo/n/news-29
+/usr/share/ncurses4/terminfo/n/news-29-euc
+/usr/share/ncurses4/terminfo/n/news-29-sjis
+/usr/share/ncurses4/terminfo/n/news-33
+/usr/share/ncurses4/terminfo/n/news-33-euc
+/usr/share/ncurses4/terminfo/n/news-33-sjis
+/usr/share/ncurses4/terminfo/n/news-42
+/usr/share/ncurses4/terminfo/n/news-42-euc
+/usr/share/ncurses4/terminfo/n/news-42-sjis
+/usr/share/ncurses4/terminfo/n/news-a
+/usr/share/ncurses4/terminfo/n/news-o
+/usr/share/ncurses4/terminfo/n/news-old-unk
+/usr/share/ncurses4/terminfo/n/news-unk
+/usr/share/ncurses4/terminfo/n/news28
+/usr/share/ncurses4/terminfo/n/news28-a
+/usr/share/ncurses4/terminfo/n/news29
+/usr/share/ncurses4/terminfo/n/news31
+/usr/share/ncurses4/terminfo/n/news31-a
+/usr/share/ncurses4/terminfo/n/news31-o
+/usr/share/ncurses4/terminfo/n/news33
+/usr/share/ncurses4/terminfo/n/news40
+/usr/share/ncurses4/terminfo/n/news40-a
+/usr/share/ncurses4/terminfo/n/news40-o
+/usr/share/ncurses4/terminfo/n/news42
+/usr/share/ncurses4/terminfo/n/newscbm
+/usr/share/ncurses4/terminfo/n/newscbm-a
+/usr/share/ncurses4/terminfo/n/newscbm-o
+/usr/share/ncurses4/terminfo/n/newscbm33
+/usr/share/ncurses4/terminfo/n/next
+/usr/share/ncurses4/terminfo/n/nextshell
+/usr/share/ncurses4/terminfo/n/northstar
+/usr/share/ncurses4/terminfo/n/nwe501
+/usr/share/ncurses4/terminfo/n/nwe501-a
+/usr/share/ncurses4/terminfo/n/nwe501-o
+/usr/share/ncurses4/terminfo/n/nwp-511
+/usr/share/ncurses4/terminfo/n/nwp-517
+/usr/share/ncurses4/terminfo/n/nwp-517-w
+/usr/share/ncurses4/terminfo/n/nwp251-a
+/usr/share/ncurses4/terminfo/n/nwp251-o
+/usr/share/ncurses4/terminfo/n/nwp511
+/usr/share/ncurses4/terminfo/n/nwp512
+/usr/share/ncurses4/terminfo/n/nwp512-a
+/usr/share/ncurses4/terminfo/n/nwp512-o
+/usr/share/ncurses4/terminfo/n/nwp513
+/usr/share/ncurses4/terminfo/n/nwp513-a
+/usr/share/ncurses4/terminfo/n/nwp513-o
+/usr/share/ncurses4/terminfo/n/nwp514
+/usr/share/ncurses4/terminfo/n/nwp514-a
+/usr/share/ncurses4/terminfo/n/nwp514-o
+/usr/share/ncurses4/terminfo/n/nwp517
+/usr/share/ncurses4/terminfo/n/nwp517-w
+/usr/share/ncurses4/terminfo/n/nwp518
+/usr/share/ncurses4/terminfo/n/nwp518-a
+/usr/share/ncurses4/terminfo/n/nwp518-o
+/usr/share/ncurses4/terminfo/o
+/usr/share/ncurses4/terminfo/o/o31
+/usr/share/ncurses4/terminfo/o/o4112-nd
+/usr/share/ncurses4/terminfo/o/o85h
+/usr/share/ncurses4/terminfo/o/oabm85h
+/usr/share/ncurses4/terminfo/o/oblit
+/usr/share/ncurses4/terminfo/o/oc100
+/usr/share/ncurses4/terminfo/o/oconcept
+/usr/share/ncurses4/terminfo/o/ojerq
+/usr/share/ncurses4/terminfo/o/oldibmpc3
+/usr/share/ncurses4/terminfo/o/oldpc3
+/usr/share/ncurses4/terminfo/o/oldsun
+/usr/share/ncurses4/terminfo/o/omron
+/usr/share/ncurses4/terminfo/o/opus3n1+
+/usr/share/ncurses4/terminfo/o/origibmpc3
+/usr/share/ncurses4/terminfo/o/origpc3
+/usr/share/ncurses4/terminfo/o/os9LII
+/usr/share/ncurses4/terminfo/o/osborne
+/usr/share/ncurses4/terminfo/o/osborne-w
+/usr/share/ncurses4/terminfo/o/osborne1
+/usr/share/ncurses4/terminfo/o/osborne1-w
+/usr/share/ncurses4/terminfo/o/osexec
+/usr/share/ncurses4/terminfo/o/otek4112
+/usr/share/ncurses4/terminfo/o/otek4113
+/usr/share/ncurses4/terminfo/o/otek4114
+/usr/share/ncurses4/terminfo/o/otek4115
+/usr/share/ncurses4/terminfo/o/owl
+/usr/share/ncurses4/terminfo/p
+/usr/share/ncurses4/terminfo/p/p12
+/usr/share/ncurses4/terminfo/p/p12-m
+/usr/share/ncurses4/terminfo/p/p12-m-w
+/usr/share/ncurses4/terminfo/p/p12-w
+/usr/share/ncurses4/terminfo/p/p14
+/usr/share/ncurses4/terminfo/p/p14-m
+/usr/share/ncurses4/terminfo/p/p14-m-w
+/usr/share/ncurses4/terminfo/p/p14-w
+/usr/share/ncurses4/terminfo/p/p19
+/usr/share/ncurses4/terminfo/p/p4
+/usr/share/ncurses4/terminfo/p/p5
+/usr/share/ncurses4/terminfo/p/p7
+/usr/share/ncurses4/terminfo/p/p8
+/usr/share/ncurses4/terminfo/p/p8-w
+/usr/share/ncurses4/terminfo/p/p8gl
+/usr/share/ncurses4/terminfo/p/p9
+/usr/share/ncurses4/terminfo/p/p9-8
+/usr/share/ncurses4/terminfo/p/p9-8-w
+/usr/share/ncurses4/terminfo/p/p9-w
+/usr/share/ncurses4/terminfo/p/pc-coherent
+/usr/share/ncurses4/terminfo/p/pc-minix
+/usr/share/ncurses4/terminfo/p/pc-venix
+/usr/share/ncurses4/terminfo/p/pc3
+/usr/share/ncurses4/terminfo/p/pc3-bold
+/usr/share/ncurses4/terminfo/p/pc3r
+/usr/share/ncurses4/terminfo/p/pc3r-m
+/usr/share/ncurses4/terminfo/p/pc6300plus
+/usr/share/ncurses4/terminfo/p/pc7300
+/usr/share/ncurses4/terminfo/p/pcansi
+/usr/share/ncurses4/terminfo/p/pcansi-25
+/usr/share/ncurses4/terminfo/p/pcansi-25-m
+/usr/share/ncurses4/terminfo/p/pcansi-33
+/usr/share/ncurses4/terminfo/p/pcansi-33-m
+/usr/share/ncurses4/terminfo/p/pcansi-43
+/usr/share/ncurses4/terminfo/p/pcansi-43-m
+/usr/share/ncurses4/terminfo/p/pcansi-m
+/usr/share/ncurses4/terminfo/p/pcansi-mono
+/usr/share/ncurses4/terminfo/p/pcansi25
+/usr/share/ncurses4/terminfo/p/pcansi25m
+/usr/share/ncurses4/terminfo/p/pcansi33
+/usr/share/ncurses4/terminfo/p/pcansi33m
+/usr/share/ncurses4/terminfo/p/pcansi43
+/usr/share/ncurses4/terminfo/p/pccons
+/usr/share/ncurses4/terminfo/p/pcconsole
+/usr/share/ncurses4/terminfo/p/pcix
+/usr/share/ncurses4/terminfo/p/pckermit
+/usr/share/ncurses4/terminfo/p/pckermit12
+/usr/share/ncurses4/terminfo/p/pckermit120
+/usr/share/ncurses4/terminfo/p/pcplot
+/usr/share/ncurses4/terminfo/p/pcvt25
+/usr/share/ncurses4/terminfo/p/pcvt25w
+/usr/share/ncurses4/terminfo/p/pcvt28
+/usr/share/ncurses4/terminfo/p/pcvt28w
+/usr/share/ncurses4/terminfo/p/pcvt35
+/usr/share/ncurses4/terminfo/p/pcvt35w
+/usr/share/ncurses4/terminfo/p/pcvt40
+/usr/share/ncurses4/terminfo/p/pcvt40w
+/usr/share/ncurses4/terminfo/p/pcvt43
+/usr/share/ncurses4/terminfo/p/pcvt43w
+/usr/share/ncurses4/terminfo/p/pcvt50
+/usr/share/ncurses4/terminfo/p/pcvt50w
+/usr/share/ncurses4/terminfo/p/pcvtXX
+/usr/share/ncurses4/terminfo/p/pcz19
+/usr/share/ncurses4/terminfo/p/pe1100
+/usr/share/ncurses4/terminfo/p/pe1200
+/usr/share/ncurses4/terminfo/p/pe1251
+/usr/share/ncurses4/terminfo/p/pe550
+/usr/share/ncurses4/terminfo/p/pe6100
+/usr/share/ncurses4/terminfo/p/pe6300
+/usr/share/ncurses4/terminfo/p/pe6312
+/usr/share/ncurses4/terminfo/p/pe7000c
+/usr/share/ncurses4/terminfo/p/pe7000m
+/usr/share/ncurses4/terminfo/p/pilot
+/usr/share/ncurses4/terminfo/p/printer
+/usr/share/ncurses4/terminfo/p/prism12
+/usr/share/ncurses4/terminfo/p/prism12-m
+/usr/share/ncurses4/terminfo/p/prism12-m-w
+/usr/share/ncurses4/terminfo/p/prism12-w
+/usr/share/ncurses4/terminfo/p/prism14
+/usr/share/ncurses4/terminfo/p/prism14-m
+/usr/share/ncurses4/terminfo/p/prism14-m-w
+/usr/share/ncurses4/terminfo/p/prism14-w
+/usr/share/ncurses4/terminfo/p/prism2
+/usr/share/ncurses4/terminfo/p/prism4
+/usr/share/ncurses4/terminfo/p/prism5
+/usr/share/ncurses4/terminfo/p/prism7
+/usr/share/ncurses4/terminfo/p/prism8
+/usr/share/ncurses4/terminfo/p/prism8-w
+/usr/share/ncurses4/terminfo/p/prism8gl
+/usr/share/ncurses4/terminfo/p/prism9
+/usr/share/ncurses4/terminfo/p/prism9-8
+/usr/share/ncurses4/terminfo/p/prism9-8-w
+/usr/share/ncurses4/terminfo/p/prism9-w
+/usr/share/ncurses4/terminfo/p/pro350
+/usr/share/ncurses4/terminfo/p/ps300
+/usr/share/ncurses4/terminfo/p/psterm
+/usr/share/ncurses4/terminfo/p/psterm-80x24
+/usr/share/ncurses4/terminfo/p/psterm-90x28
+/usr/share/ncurses4/terminfo/p/psterm-96x48
+/usr/share/ncurses4/terminfo/p/psterm-basic
+/usr/share/ncurses4/terminfo/p/psterm-fast
+/usr/share/ncurses4/terminfo/p/psx_ansi
+/usr/share/ncurses4/terminfo/p/pt100
+/usr/share/ncurses4/terminfo/p/pt100w
+/usr/share/ncurses4/terminfo/p/pt200
+/usr/share/ncurses4/terminfo/p/pt200w
+/usr/share/ncurses4/terminfo/p/pt210
+/usr/share/ncurses4/terminfo/p/pt250
+/usr/share/ncurses4/terminfo/p/pt250w
+/usr/share/ncurses4/terminfo/p/pt505
+/usr/share/ncurses4/terminfo/p/pt505-22
+/usr/share/ncurses4/terminfo/p/pt505-24
+/usr/share/ncurses4/terminfo/p/pty
+/usr/share/ncurses4/terminfo/q
+/usr/share/ncurses4/terminfo/q/qdcons
+/usr/share/ncurses4/terminfo/q/qdss
+/usr/share/ncurses4/terminfo/q/qnx
+/usr/share/ncurses4/terminfo/q/qnx4
+/usr/share/ncurses4/terminfo/q/qume
+/usr/share/ncurses4/terminfo/q/qume5
+/usr/share/ncurses4/terminfo/q/qvt101
+/usr/share/ncurses4/terminfo/q/qvt101+
+/usr/share/ncurses4/terminfo/q/qvt101p
+/usr/share/ncurses4/terminfo/q/qvt102
+/usr/share/ncurses4/terminfo/q/qvt103
+/usr/share/ncurses4/terminfo/q/qvt103-w
+/usr/share/ncurses4/terminfo/q/qvt108
+/usr/share/ncurses4/terminfo/q/qvt119
+/usr/share/ncurses4/terminfo/q/qvt119+
+/usr/share/ncurses4/terminfo/q/qvt119+-25
+/usr/share/ncurses4/terminfo/q/qvt119+-25-w
+/usr/share/ncurses4/terminfo/q/qvt119+-w
+/usr/share/ncurses4/terminfo/q/qvt119-25-w
+/usr/share/ncurses4/terminfo/q/qvt119-w
+/usr/share/ncurses4/terminfo/q/qvt119p
+/usr/share/ncurses4/terminfo/q/qvt119p-25
+/usr/share/ncurses4/terminfo/q/qvt119p-25-w
+/usr/share/ncurses4/terminfo/q/qvt119p-w
+/usr/share/ncurses4/terminfo/q/qvt203
+/usr/share/ncurses4/terminfo/q/qvt203+
+/usr/share/ncurses4/terminfo/q/qvt203-25
+/usr/share/ncurses4/terminfo/q/qvt203-25-w
+/usr/share/ncurses4/terminfo/q/qvt203-w
+/usr/share/ncurses4/terminfo/q/qvt203-w-am
+/usr/share/ncurses4/terminfo/r
+/usr/share/ncurses4/terminfo/r/rbcomm
+/usr/share/ncurses4/terminfo/r/rbcomm-nam
+/usr/share/ncurses4/terminfo/r/rbcomm-w
+/usr/share/ncurses4/terminfo/r/rca
+/usr/share/ncurses4/terminfo/r/rebus3180
+/usr/share/ncurses4/terminfo/r/regent
+/usr/share/ncurses4/terminfo/r/regent100
+/usr/share/ncurses4/terminfo/r/regent20
+/usr/share/ncurses4/terminfo/r/regent200
+/usr/share/ncurses4/terminfo/r/regent25
+/usr/share/ncurses4/terminfo/r/regent40
+/usr/share/ncurses4/terminfo/r/regent40+
+/usr/share/ncurses4/terminfo/r/regent60
+/usr/share/ncurses4/terminfo/r/rt6221
+/usr/share/ncurses4/terminfo/r/rt6221-w
+/usr/share/ncurses4/terminfo/r/rtpc
+/usr/share/ncurses4/terminfo/r/rxvt
+/usr/share/ncurses4/terminfo/r/rxvt-basic
+/usr/share/ncurses4/terminfo/s
+/usr/share/ncurses4/terminfo/s/s
+/usr/share/ncurses4/terminfo/s/s4
+/usr/share/ncurses4/terminfo/s/sb1
+/usr/share/ncurses4/terminfo/s/sb2
+/usr/share/ncurses4/terminfo/s/sb3
+/usr/share/ncurses4/terminfo/s/sbi
+/usr/share/ncurses4/terminfo/s/sbobcat
+/usr/share/ncurses4/terminfo/s/sc410
+/usr/share/ncurses4/terminfo/s/sc415
+/usr/share/ncurses4/terminfo/s/scanset
+/usr/share/ncurses4/terminfo/s/scoansi
+/usr/share/ncurses4/terminfo/s/screen
+/usr/share/ncurses4/terminfo/s/screen-w
+/usr/share/ncurses4/terminfo/s/screen2
+/usr/share/ncurses4/terminfo/s/screen3
+/usr/share/ncurses4/terminfo/s/screwpoint
+/usr/share/ncurses4/terminfo/s/scrhp
+/usr/share/ncurses4/terminfo/s/simterm
+/usr/share/ncurses4/terminfo/s/soroc
+/usr/share/ncurses4/terminfo/s/soroc120
+/usr/share/ncurses4/terminfo/s/soroc140
+/usr/share/ncurses4/terminfo/s/spinwriter
+/usr/share/ncurses4/terminfo/s/st52
+/usr/share/ncurses4/terminfo/s/sun
+/usr/share/ncurses4/terminfo/s/sun-1
+/usr/share/ncurses4/terminfo/s/sun-12
+/usr/share/ncurses4/terminfo/s/sun-17
+/usr/share/ncurses4/terminfo/s/sun-24
+/usr/share/ncurses4/terminfo/s/sun-34
+/usr/share/ncurses4/terminfo/s/sun-48
+/usr/share/ncurses4/terminfo/s/sun-c
+/usr/share/ncurses4/terminfo/s/sun-cmd
+/usr/share/ncurses4/terminfo/s/sun-e
+/usr/share/ncurses4/terminfo/s/sun-e-s
+/usr/share/ncurses4/terminfo/s/sun-il
+/usr/share/ncurses4/terminfo/s/sun-nic
+/usr/share/ncurses4/terminfo/s/sun-s
+/usr/share/ncurses4/terminfo/s/sun-s-e
+/usr/share/ncurses4/terminfo/s/sun-ss5
+/usr/share/ncurses4/terminfo/s/sun1
+/usr/share/ncurses4/terminfo/s/sun2
+/usr/share/ncurses4/terminfo/s/sune
+/usr/share/ncurses4/terminfo/s/superbee
+/usr/share/ncurses4/terminfo/s/superbee-xsb
+/usr/share/ncurses4/terminfo/s/superbeeic
+/usr/share/ncurses4/terminfo/s/superbrain
+/usr/share/ncurses4/terminfo/s/sv80
+/usr/share/ncurses4/terminfo/s/swtp
+/usr/share/ncurses4/terminfo/s/synertek
+/usr/share/ncurses4/terminfo/s/synertek380
+/usr/share/ncurses4/terminfo/s/system1
+/usr/share/ncurses4/terminfo/t
+/usr/share/ncurses4/terminfo/t/t10
+/usr/share/ncurses4/terminfo/t/t1061
+/usr/share/ncurses4/terminfo/t/t1061f
+/usr/share/ncurses4/terminfo/t/t16
+/usr/share/ncurses4/terminfo/t/t3700
+/usr/share/ncurses4/terminfo/t/t3800
+/usr/share/ncurses4/terminfo/t/t653x
+/usr/share/ncurses4/terminfo/t/tab
+/usr/share/ncurses4/terminfo/t/tab132
+/usr/share/ncurses4/terminfo/t/tab132-15
+/usr/share/ncurses4/terminfo/t/tab132-rv
+/usr/share/ncurses4/terminfo/t/tab132-w
+/usr/share/ncurses4/terminfo/t/tab132-w-rv
+/usr/share/ncurses4/terminfo/t/tandem6510
+/usr/share/ncurses4/terminfo/t/tandem653
+/usr/share/ncurses4/terminfo/t/tek
+/usr/share/ncurses4/terminfo/t/tek4012
+/usr/share/ncurses4/terminfo/t/tek4013
+/usr/share/ncurses4/terminfo/t/tek4014
+/usr/share/ncurses4/terminfo/t/tek4014-sm
+/usr/share/ncurses4/terminfo/t/tek4015
+/usr/share/ncurses4/terminfo/t/tek4015-sm
+/usr/share/ncurses4/terminfo/t/tek4023
+/usr/share/ncurses4/terminfo/t/tek4024
+/usr/share/ncurses4/terminfo/t/tek4025
+/usr/share/ncurses4/terminfo/t/tek4025-17
+/usr/share/ncurses4/terminfo/t/tek4025-17-ws
+/usr/share/ncurses4/terminfo/t/tek4025-cr
+/usr/share/ncurses4/terminfo/t/tek4025-ex
+/usr/share/ncurses4/terminfo/t/tek4025a
+/usr/share/ncurses4/terminfo/t/tek4025ex
+/usr/share/ncurses4/terminfo/t/tek4027
+/usr/share/ncurses4/terminfo/t/tek4027-ex
+/usr/share/ncurses4/terminfo/t/tek4105
+/usr/share/ncurses4/terminfo/t/tek4105-30
+/usr/share/ncurses4/terminfo/t/tek4105a
+/usr/share/ncurses4/terminfo/t/tek4106brl
+/usr/share/ncurses4/terminfo/t/tek4107
+/usr/share/ncurses4/terminfo/t/tek4107brl
+/usr/share/ncurses4/terminfo/t/tek4109
+/usr/share/ncurses4/terminfo/t/tek4109brl
+/usr/share/ncurses4/terminfo/t/tek4112
+/usr/share/ncurses4/terminfo/t/tek4112-5
+/usr/share/ncurses4/terminfo/t/tek4112-nd
+/usr/share/ncurses4/terminfo/t/tek4113
+/usr/share/ncurses4/terminfo/t/tek4113-34
+/usr/share/ncurses4/terminfo/t/tek4113-nd
+/usr/share/ncurses4/terminfo/t/tek4114
+/usr/share/ncurses4/terminfo/t/tek4115
+/usr/share/ncurses4/terminfo/t/tek4125
+/usr/share/ncurses4/terminfo/t/tek4205
+/usr/share/ncurses4/terminfo/t/tek4207
+/usr/share/ncurses4/terminfo/t/tek4207-s
+/usr/share/ncurses4/terminfo/t/tek4404
+/usr/share/ncurses4/terminfo/t/teleray
+/usr/share/ncurses4/terminfo/t/teletec
+/usr/share/ncurses4/terminfo/t/terminet
+/usr/share/ncurses4/terminfo/t/terminet1200
+/usr/share/ncurses4/terminfo/t/terminet300
+/usr/share/ncurses4/terminfo/t/tgtelnet
+/usr/share/ncurses4/terminfo/t/ti700
+/usr/share/ncurses4/terminfo/t/ti733
+/usr/share/ncurses4/terminfo/t/ti735
+/usr/share/ncurses4/terminfo/t/ti745
+/usr/share/ncurses4/terminfo/t/ti800
+/usr/share/ncurses4/terminfo/t/ti916
+/usr/share/ncurses4/terminfo/t/ti916-132
+/usr/share/ncurses4/terminfo/t/ti916-220-7
+/usr/share/ncurses4/terminfo/t/ti916-220-8
+/usr/share/ncurses4/terminfo/t/ti916-8
+/usr/share/ncurses4/terminfo/t/ti916-8-132
+/usr/share/ncurses4/terminfo/t/ti924
+/usr/share/ncurses4/terminfo/t/ti924-8
+/usr/share/ncurses4/terminfo/t/ti924-8w
+/usr/share/ncurses4/terminfo/t/ti924w
+/usr/share/ncurses4/terminfo/t/ti926
+/usr/share/ncurses4/terminfo/t/ti926-8
+/usr/share/ncurses4/terminfo/t/ti928
+/usr/share/ncurses4/terminfo/t/ti928-8
+/usr/share/ncurses4/terminfo/t/ti931
+/usr/share/ncurses4/terminfo/t/ti_ansi
+/usr/share/ncurses4/terminfo/t/tn1200
+/usr/share/ncurses4/terminfo/t/tn300
+/usr/share/ncurses4/terminfo/t/trs16
+/usr/share/ncurses4/terminfo/t/trs2
+/usr/share/ncurses4/terminfo/t/trs80II
+/usr/share/ncurses4/terminfo/t/trsII
+/usr/share/ncurses4/terminfo/t/ts-1
+/usr/share/ncurses4/terminfo/t/ts-1p
+/usr/share/ncurses4/terminfo/t/ts1
+/usr/share/ncurses4/terminfo/t/ts100
+/usr/share/ncurses4/terminfo/t/ts100-ctxt
+/usr/share/ncurses4/terminfo/t/ts100-sp
+/usr/share/ncurses4/terminfo/t/ts1p
+/usr/share/ncurses4/terminfo/t/tt505-22
+/usr/share/ncurses4/terminfo/t/tty33
+/usr/share/ncurses4/terminfo/t/tty35
+/usr/share/ncurses4/terminfo/t/tty37
+/usr/share/ncurses4/terminfo/t/tty40
+/usr/share/ncurses4/terminfo/t/tty43
+/usr/share/ncurses4/terminfo/t/tty4420
+/usr/share/ncurses4/terminfo/t/tty4424
+/usr/share/ncurses4/terminfo/t/tty4424-1
+/usr/share/ncurses4/terminfo/t/tty4424m
+/usr/share/ncurses4/terminfo/t/tty4426
+/usr/share/ncurses4/terminfo/t/tty5410
+/usr/share/ncurses4/terminfo/t/tty5410-w
+/usr/share/ncurses4/terminfo/t/tty5410v1
+/usr/share/ncurses4/terminfo/t/tty5410v1-w
+/usr/share/ncurses4/terminfo/t/tty5420
+/usr/share/ncurses4/terminfo/t/tty5420+nl
+/usr/share/ncurses4/terminfo/t/tty5420-nl
+/usr/share/ncurses4/terminfo/t/tty5420-rv
+/usr/share/ncurses4/terminfo/t/tty5420-rv-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w
+/usr/share/ncurses4/terminfo/t/tty5420-w-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv-n
+/usr/share/ncurses4/terminfo/t/tty5425
+/usr/share/ncurses4/terminfo/t/tty5425-nl
+/usr/share/ncurses4/terminfo/t/tty5425-w
+/usr/share/ncurses4/terminfo/t/tty5620
+/usr/share/ncurses4/terminfo/t/tty5620-1
+/usr/share/ncurses4/terminfo/t/tty5620-24
+/usr/share/ncurses4/terminfo/t/tty5620-34
+/usr/share/ncurses4/terminfo/t/tty5620-s
+/usr/share/ncurses4/terminfo/t/ttydmd
+/usr/share/ncurses4/terminfo/t/tvi-2p
+/usr/share/ncurses4/terminfo/t/tvi803
+/usr/share/ncurses4/terminfo/t/tvi9065
+/usr/share/ncurses4/terminfo/t/tvi910
+/usr/share/ncurses4/terminfo/t/tvi910+
+/usr/share/ncurses4/terminfo/t/tvi912
+/usr/share/ncurses4/terminfo/t/tvi912-2p
+/usr/share/ncurses4/terminfo/t/tvi912b
+/usr/share/ncurses4/terminfo/t/tvi912c
+/usr/share/ncurses4/terminfo/t/tvi912cc
+/usr/share/ncurses4/terminfo/t/tvi914
+/usr/share/ncurses4/terminfo/t/tvi920
+/usr/share/ncurses4/terminfo/t/tvi920-2p
+/usr/share/ncurses4/terminfo/t/tvi920b
+/usr/share/ncurses4/terminfo/t/tvi920c
+/usr/share/ncurses4/terminfo/t/tvi921
+/usr/share/ncurses4/terminfo/t/tvi924
+/usr/share/ncurses4/terminfo/t/tvi925
+/usr/share/ncurses4/terminfo/t/tvi925-hi
+/usr/share/ncurses4/terminfo/t/tvi92B
+/usr/share/ncurses4/terminfo/t/tvi92D
+/usr/share/ncurses4/terminfo/t/tvi950
+/usr/share/ncurses4/terminfo/t/tvi950-2p
+/usr/share/ncurses4/terminfo/t/tvi950-4p
+/usr/share/ncurses4/terminfo/t/tvi950-rv
+/usr/share/ncurses4/terminfo/t/tvi950-rv-2p
+/usr/share/ncurses4/terminfo/t/tvi950-rv-4p
+/usr/share/ncurses4/terminfo/t/tvi955
+/usr/share/ncurses4/terminfo/t/tvi955-hb
+/usr/share/ncurses4/terminfo/t/tvi955-w
+/usr/share/ncurses4/terminfo/t/tvi970
+/usr/share/ncurses4/terminfo/t/tvi970-2p
+/usr/share/ncurses4/terminfo/t/tvi970-vb
+/usr/share/ncurses4/terminfo/t/tvipt
+/usr/share/ncurses4/terminfo/u
+/usr/share/ncurses4/terminfo/u/ultima2
+/usr/share/ncurses4/terminfo/u/ultimaII
+/usr/share/ncurses4/terminfo/u/uniterm
+/usr/share/ncurses4/terminfo/u/uniterm49
+/usr/share/ncurses4/terminfo/u/unixpc
+/usr/share/ncurses4/terminfo/u/unknown
+/usr/share/ncurses4/terminfo/u/uts30
+/usr/share/ncurses4/terminfo/v
+/usr/share/ncurses4/terminfo/v/v200-nam
+/usr/share/ncurses4/terminfo/v/v320n
+/usr/share/ncurses4/terminfo/v/v3220
+/usr/share/ncurses4/terminfo/v/v5410
+/usr/share/ncurses4/terminfo/v/vapple
+/usr/share/ncurses4/terminfo/v/vc103
+/usr/share/ncurses4/terminfo/v/vc203
+/usr/share/ncurses4/terminfo/v/vc303
+/usr/share/ncurses4/terminfo/v/vc303a
+/usr/share/ncurses4/terminfo/v/vc403a
+/usr/share/ncurses4/terminfo/v/vc404
+/usr/share/ncurses4/terminfo/v/vc404-s
+/usr/share/ncurses4/terminfo/v/vc414
+/usr/share/ncurses4/terminfo/v/vc414h
+/usr/share/ncurses4/terminfo/v/vc415
+/usr/share/ncurses4/terminfo/v/venix
+/usr/share/ncurses4/terminfo/v/versaterm
+/usr/share/ncurses4/terminfo/v/vi200
+/usr/share/ncurses4/terminfo/v/vi200-f
+/usr/share/ncurses4/terminfo/v/vi200-rv
+/usr/share/ncurses4/terminfo/v/vi300
+/usr/share/ncurses4/terminfo/v/vi300-old
+/usr/share/ncurses4/terminfo/v/vi50
+/usr/share/ncurses4/terminfo/v/vi500
+/usr/share/ncurses4/terminfo/v/vi50adm
+/usr/share/ncurses4/terminfo/v/vi55
+/usr/share/ncurses4/terminfo/v/vi550
+/usr/share/ncurses4/terminfo/v/vi603
+/usr/share/ncurses4/terminfo/v/viewpoint
+/usr/share/ncurses4/terminfo/v/viewpoint3a+
+/usr/share/ncurses4/terminfo/v/viewpoint60
+/usr/share/ncurses4/terminfo/v/viewpoint90
+/usr/share/ncurses4/terminfo/v/visa50
+/usr/share/ncurses4/terminfo/v/visual603
+/usr/share/ncurses4/terminfo/v/vitty
+/usr/share/ncurses4/terminfo/v/vk100
+/usr/share/ncurses4/terminfo/v/vp3a+
+/usr/share/ncurses4/terminfo/v/vp60
+/usr/share/ncurses4/terminfo/v/vp90
+/usr/share/ncurses4/terminfo/v/vremote
+/usr/share/ncurses4/terminfo/v/vs100
+/usr/share/ncurses4/terminfo/v/vs100-x10
+/usr/share/ncurses4/terminfo/v/vsc
+/usr/share/ncurses4/terminfo/v/vt-61
+/usr/share/ncurses4/terminfo/v/vt100
+/usr/share/ncurses4/terminfo/v/vt100-am
+/usr/share/ncurses4/terminfo/v/vt100-bm
+/usr/share/ncurses4/terminfo/v/vt100-bm-o
+/usr/share/ncurses4/terminfo/v/vt100-bot-s
+/usr/share/ncurses4/terminfo/v/vt100-nam
+/usr/share/ncurses4/terminfo/v/vt100-nam-w
+/usr/share/ncurses4/terminfo/v/vt100-nav
+/usr/share/ncurses4/terminfo/v/vt100-nav-w
+/usr/share/ncurses4/terminfo/v/vt100-s
+/usr/share/ncurses4/terminfo/v/vt100-s-bot
+/usr/share/ncurses4/terminfo/v/vt100-s-top
+/usr/share/ncurses4/terminfo/v/vt100-top-s
+/usr/share/ncurses4/terminfo/v/vt100-vb
+/usr/share/ncurses4/terminfo/v/vt100-w
+/usr/share/ncurses4/terminfo/v/vt100-w-am
+/usr/share/ncurses4/terminfo/v/vt100-w-nam
+/usr/share/ncurses4/terminfo/v/vt100-w-nav
+/usr/share/ncurses4/terminfo/v/vt100nam
+/usr/share/ncurses4/terminfo/v/vt102
+/usr/share/ncurses4/terminfo/v/vt102-nsgr
+/usr/share/ncurses4/terminfo/v/vt102-w
+/usr/share/ncurses4/terminfo/v/vt125
+/usr/share/ncurses4/terminfo/v/vt131
+/usr/share/ncurses4/terminfo/v/vt132
+/usr/share/ncurses4/terminfo/v/vt200
+/usr/share/ncurses4/terminfo/v/vt200-js
+/usr/share/ncurses4/terminfo/v/vt200-w
+/usr/share/ncurses4/terminfo/v/vt220
+/usr/share/ncurses4/terminfo/v/vt220-8
+/usr/share/ncurses4/terminfo/v/vt220-js
+/usr/share/ncurses4/terminfo/v/vt220-nam
+/usr/share/ncurses4/terminfo/v/vt220-w
+/usr/share/ncurses4/terminfo/v/vt220d
+/usr/share/ncurses4/terminfo/v/vt300
+/usr/share/ncurses4/terminfo/v/vt300-nam
+/usr/share/ncurses4/terminfo/v/vt300-w
+/usr/share/ncurses4/terminfo/v/vt300-w-nam
+/usr/share/ncurses4/terminfo/v/vt320
+/usr/share/ncurses4/terminfo/v/vt320-k3
+/usr/share/ncurses4/terminfo/v/vt320-k311
+/usr/share/ncurses4/terminfo/v/vt320-nam
+/usr/share/ncurses4/terminfo/v/vt320-w
+/usr/share/ncurses4/terminfo/v/vt320-w-nam
+/usr/share/ncurses4/terminfo/v/vt320nam
+/usr/share/ncurses4/terminfo/v/vt330
+/usr/share/ncurses4/terminfo/v/vt340
+/usr/share/ncurses4/terminfo/v/vt400
+/usr/share/ncurses4/terminfo/v/vt400-24
+/usr/share/ncurses4/terminfo/v/vt420
+/usr/share/ncurses4/terminfo/v/vt420f
+/usr/share/ncurses4/terminfo/v/vt420pc
+/usr/share/ncurses4/terminfo/v/vt420pcdos
+/usr/share/ncurses4/terminfo/v/vt50
+/usr/share/ncurses4/terminfo/v/vt50h
+/usr/share/ncurses4/terminfo/v/vt510
+/usr/share/ncurses4/terminfo/v/vt510pc
+/usr/share/ncurses4/terminfo/v/vt510pcdos
+/usr/share/ncurses4/terminfo/v/vt52
+/usr/share/ncurses4/terminfo/v/vt520
+/usr/share/ncurses4/terminfo/v/vt525
+/usr/share/ncurses4/terminfo/v/vt61
+/usr/share/ncurses4/terminfo/v/vt61.5
+/usr/share/ncurses4/terminfo/w
+/usr/share/ncurses4/terminfo/w/wren
+/usr/share/ncurses4/terminfo/w/wrenw
+/usr/share/ncurses4/terminfo/w/wsiris
+/usr/share/ncurses4/terminfo/w/wy-75ap
+/usr/share/ncurses4/terminfo/w/wy100
+/usr/share/ncurses4/terminfo/w/wy100q
+/usr/share/ncurses4/terminfo/w/wy120
+/usr/share/ncurses4/terminfo/w/wy120-25
+/usr/share/ncurses4/terminfo/w/wy120-25-w
+/usr/share/ncurses4/terminfo/w/wy120-vb
+/usr/share/ncurses4/terminfo/w/wy120-w
+/usr/share/ncurses4/terminfo/w/wy120-w-vb
+/usr/share/ncurses4/terminfo/w/wy120-wvb
+/usr/share/ncurses4/terminfo/w/wy150
+/usr/share/ncurses4/terminfo/w/wy150-25
+/usr/share/ncurses4/terminfo/w/wy150-25-w
+/usr/share/ncurses4/terminfo/w/wy150-vb
+/usr/share/ncurses4/terminfo/w/wy150-w
+/usr/share/ncurses4/terminfo/w/wy150-w-vb
+/usr/share/ncurses4/terminfo/w/wy160
+/usr/share/ncurses4/terminfo/w/wy160-25
+/usr/share/ncurses4/terminfo/w/wy160-25-w
+/usr/share/ncurses4/terminfo/w/wy160-42
+/usr/share/ncurses4/terminfo/w/wy160-42-w
+/usr/share/ncurses4/terminfo/w/wy160-43
+/usr/share/ncurses4/terminfo/w/wy160-43-w
+/usr/share/ncurses4/terminfo/w/wy160-tek
+/usr/share/ncurses4/terminfo/w/wy160-vb
+/usr/share/ncurses4/terminfo/w/wy160-w
+/usr/share/ncurses4/terminfo/w/wy160-w-vb
+/usr/share/ncurses4/terminfo/w/wy160-wvb
+/usr/share/ncurses4/terminfo/w/wy185
+/usr/share/ncurses4/terminfo/w/wy185-24
+/usr/share/ncurses4/terminfo/w/wy185-vb
+/usr/share/ncurses4/terminfo/w/wy185-w
+/usr/share/ncurses4/terminfo/w/wy185-wvb
+/usr/share/ncurses4/terminfo/w/wy30
+/usr/share/ncurses4/terminfo/w/wy30-mc
+/usr/share/ncurses4/terminfo/w/wy30-vb
+/usr/share/ncurses4/terminfo/w/wy325
+/usr/share/ncurses4/terminfo/w/wy325-25
+/usr/share/ncurses4/terminfo/w/wy325-25w
+/usr/share/ncurses4/terminfo/w/wy325-42
+/usr/share/ncurses4/terminfo/w/wy325-42w
+/usr/share/ncurses4/terminfo/w/wy325-42w-vb
+/usr/share/ncurses4/terminfo/w/wy325-42wvb
+/usr/share/ncurses4/terminfo/w/wy325-43
+/usr/share/ncurses4/terminfo/w/wy325-43w
+/usr/share/ncurses4/terminfo/w/wy325-43w-vb
+/usr/share/ncurses4/terminfo/w/wy325-43wvb
+/usr/share/ncurses4/terminfo/w/wy325-80
+/usr/share/ncurses4/terminfo/w/wy325-vb
+/usr/share/ncurses4/terminfo/w/wy325-w
+/usr/share/ncurses4/terminfo/w/wy325-w-vb
+/usr/share/ncurses4/terminfo/w/wy325-wvb
+/usr/share/ncurses4/terminfo/w/wy325w-24
+/usr/share/ncurses4/terminfo/w/wy350
+/usr/share/ncurses4/terminfo/w/wy350-vb
+/usr/share/ncurses4/terminfo/w/wy350-w
+/usr/share/ncurses4/terminfo/w/wy350-wvb
+/usr/share/ncurses4/terminfo/w/wy370
+/usr/share/ncurses4/terminfo/w/wy370-101k
+/usr/share/ncurses4/terminfo/w/wy370-105k
+/usr/share/ncurses4/terminfo/w/wy370-EPC
+/usr/share/ncurses4/terminfo/w/wy370-nk
+/usr/share/ncurses4/terminfo/w/wy370-rv
+/usr/share/ncurses4/terminfo/w/wy370-tek
+/usr/share/ncurses4/terminfo/w/wy370-vb
+/usr/share/ncurses4/terminfo/w/wy370-w
+/usr/share/ncurses4/terminfo/w/wy370-wvb
+/usr/share/ncurses4/terminfo/w/wy50
+/usr/share/ncurses4/terminfo/w/wy50-mc
+/usr/share/ncurses4/terminfo/w/wy50-vb
+/usr/share/ncurses4/terminfo/w/wy50-w
+/usr/share/ncurses4/terminfo/w/wy50-wvb
+/usr/share/ncurses4/terminfo/w/wy520
+/usr/share/ncurses4/terminfo/w/wy520-24
+/usr/share/ncurses4/terminfo/w/wy520-36
+/usr/share/ncurses4/terminfo/w/wy520-36pc
+/usr/share/ncurses4/terminfo/w/wy520-36w
+/usr/share/ncurses4/terminfo/w/wy520-36wpc
+/usr/share/ncurses4/terminfo/w/wy520-48
+/usr/share/ncurses4/terminfo/w/wy520-48pc
+/usr/share/ncurses4/terminfo/w/wy520-48w
+/usr/share/ncurses4/terminfo/w/wy520-48wpc
+/usr/share/ncurses4/terminfo/w/wy520-epc
+/usr/share/ncurses4/terminfo/w/wy520-epc-24
+/usr/share/ncurses4/terminfo/w/wy520-epc-vb
+/usr/share/ncurses4/terminfo/w/wy520-epc-w
+/usr/share/ncurses4/terminfo/w/wy520-epc-wvb
+/usr/share/ncurses4/terminfo/w/wy520-vb
+/usr/share/ncurses4/terminfo/w/wy520-w
+/usr/share/ncurses4/terminfo/w/wy520-wvb
+/usr/share/ncurses4/terminfo/w/wy60
+/usr/share/ncurses4/terminfo/w/wy60-25
+/usr/share/ncurses4/terminfo/w/wy60-25-w
+/usr/share/ncurses4/terminfo/w/wy60-316X
+/usr/share/ncurses4/terminfo/w/wy60-42
+/usr/share/ncurses4/terminfo/w/wy60-42-w
+/usr/share/ncurses4/terminfo/w/wy60-43
+/usr/share/ncurses4/terminfo/w/wy60-43-w
+/usr/share/ncurses4/terminfo/w/wy60-vb
+/usr/share/ncurses4/terminfo/w/wy60-w
+/usr/share/ncurses4/terminfo/w/wy60-w-vb
+/usr/share/ncurses4/terminfo/w/wy60-wvb
+/usr/share/ncurses4/terminfo/w/wy75
+/usr/share/ncurses4/terminfo/w/wy75-mc
+/usr/share/ncurses4/terminfo/w/wy75-vb
+/usr/share/ncurses4/terminfo/w/wy75-w
+/usr/share/ncurses4/terminfo/w/wy75-wvb
+/usr/share/ncurses4/terminfo/w/wy75ap
+/usr/share/ncurses4/terminfo/w/wy85
+/usr/share/ncurses4/terminfo/w/wy85-vb
+/usr/share/ncurses4/terminfo/w/wy85-w
+/usr/share/ncurses4/terminfo/w/wy85-wvb
+/usr/share/ncurses4/terminfo/w/wy99gt
+/usr/share/ncurses4/terminfo/w/wy99gt-25
+/usr/share/ncurses4/terminfo/w/wy99gt-25-w
+/usr/share/ncurses4/terminfo/w/wy99gt-tek
+/usr/share/ncurses4/terminfo/w/wy99gt-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-w
+/usr/share/ncurses4/terminfo/w/wy99gt-w-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-wvb
+/usr/share/ncurses4/terminfo/w/wyse-325
+/usr/share/ncurses4/terminfo/w/wyse-75ap
+/usr/share/ncurses4/terminfo/w/wyse-vp
+/usr/share/ncurses4/terminfo/w/wyse120
+/usr/share/ncurses4/terminfo/w/wyse120-25
+/usr/share/ncurses4/terminfo/w/wyse120-25-w
+/usr/share/ncurses4/terminfo/w/wyse120-vb
+/usr/share/ncurses4/terminfo/w/wyse120-w
+/usr/share/ncurses4/terminfo/w/wyse120-wvb
+/usr/share/ncurses4/terminfo/w/wyse150
+/usr/share/ncurses4/terminfo/w/wyse150-25
+/usr/share/ncurses4/terminfo/w/wyse150-25-w
+/usr/share/ncurses4/terminfo/w/wyse150-vb
+/usr/share/ncurses4/terminfo/w/wyse150-w
+/usr/share/ncurses4/terminfo/w/wyse150-w-vb
+/usr/share/ncurses4/terminfo/w/wyse160
+/usr/share/ncurses4/terminfo/w/wyse160-25
+/usr/share/ncurses4/terminfo/w/wyse160-25-w
+/usr/share/ncurses4/terminfo/w/wyse160-42
+/usr/share/ncurses4/terminfo/w/wyse160-42-w
+/usr/share/ncurses4/terminfo/w/wyse160-43
+/usr/share/ncurses4/terminfo/w/wyse160-43-w
+/usr/share/ncurses4/terminfo/w/wyse160-vb
+/usr/share/ncurses4/terminfo/w/wyse160-w
+/usr/share/ncurses4/terminfo/w/wyse160-wvb
+/usr/share/ncurses4/terminfo/w/wyse185
+/usr/share/ncurses4/terminfo/w/wyse185-24
+/usr/share/ncurses4/terminfo/w/wyse185-vb
+/usr/share/ncurses4/terminfo/w/wyse185-w
+/usr/share/ncurses4/terminfo/w/wyse185-wvb
+/usr/share/ncurses4/terminfo/w/wyse30
+/usr/share/ncurses4/terminfo/w/wyse30-mc
+/usr/share/ncurses4/terminfo/w/wyse30-vb
+/usr/share/ncurses4/terminfo/w/wyse325
+/usr/share/ncurses4/terminfo/w/wyse325-25
+/usr/share/ncurses4/terminfo/w/wyse325-25w
+/usr/share/ncurses4/terminfo/w/wyse325-42
+/usr/share/ncurses4/terminfo/w/wyse325-42w
+/usr/share/ncurses4/terminfo/w/wyse325-43
+/usr/share/ncurses4/terminfo/w/wyse325-43w
+/usr/share/ncurses4/terminfo/w/wyse325-vb
+/usr/share/ncurses4/terminfo/w/wyse325-w
+/usr/share/ncurses4/terminfo/w/wyse325-wvb
+/usr/share/ncurses4/terminfo/w/wyse350
+/usr/share/ncurses4/terminfo/w/wyse350-vb
+/usr/share/ncurses4/terminfo/w/wyse350-w
+/usr/share/ncurses4/terminfo/w/wyse350-wvb
+/usr/share/ncurses4/terminfo/w/wyse370
+/usr/share/ncurses4/terminfo/w/wyse50
+/usr/share/ncurses4/terminfo/w/wyse50-mc
+/usr/share/ncurses4/terminfo/w/wyse50-vb
+/usr/share/ncurses4/terminfo/w/wyse50-w
+/usr/share/ncurses4/terminfo/w/wyse50-wvb
+/usr/share/ncurses4/terminfo/w/wyse520
+/usr/share/ncurses4/terminfo/w/wyse520-24
+/usr/share/ncurses4/terminfo/w/wyse520-36
+/usr/share/ncurses4/terminfo/w/wyse520-36pc
+/usr/share/ncurses4/terminfo/w/wyse520-36w
+/usr/share/ncurses4/terminfo/w/wyse520-36wpc
+/usr/share/ncurses4/terminfo/w/wyse520-48
+/usr/share/ncurses4/terminfo/w/wyse520-48pc
+/usr/share/ncurses4/terminfo/w/wyse520-48w
+/usr/share/ncurses4/terminfo/w/wyse520-48wpc
+/usr/share/ncurses4/terminfo/w/wyse520-epc
+/usr/share/ncurses4/terminfo/w/wyse520-epc-w
+/usr/share/ncurses4/terminfo/w/wyse520-p-wvb
+/usr/share/ncurses4/terminfo/w/wyse520-pc-24
+/usr/share/ncurses4/terminfo/w/wyse520-pc-vb
+/usr/share/ncurses4/terminfo/w/wyse520-vb
+/usr/share/ncurses4/terminfo/w/wyse520-w
+/usr/share/ncurses4/terminfo/w/wyse520-wvb
+/usr/share/ncurses4/terminfo/w/wyse60
+/usr/share/ncurses4/terminfo/w/wyse60-25
+/usr/share/ncurses4/terminfo/w/wyse60-25-w
+/usr/share/ncurses4/terminfo/w/wyse60-316X
+/usr/share/ncurses4/terminfo/w/wyse60-42
+/usr/share/ncurses4/terminfo/w/wyse60-42-w
+/usr/share/ncurses4/terminfo/w/wyse60-43
+/usr/share/ncurses4/terminfo/w/wyse60-43-w
+/usr/share/ncurses4/terminfo/w/wyse60-vb
+/usr/share/ncurses4/terminfo/w/wyse60-w
+/usr/share/ncurses4/terminfo/w/wyse60-wvb
+/usr/share/ncurses4/terminfo/w/wyse75
+/usr/share/ncurses4/terminfo/w/wyse75-mc
+/usr/share/ncurses4/terminfo/w/wyse75-vb
+/usr/share/ncurses4/terminfo/w/wyse75-w
+/usr/share/ncurses4/terminfo/w/wyse75-wvb
+/usr/share/ncurses4/terminfo/w/wyse75ap
+/usr/share/ncurses4/terminfo/w/wyse85
+/usr/share/ncurses4/terminfo/w/wyse85-vb
+/usr/share/ncurses4/terminfo/w/wyse85-w
+/usr/share/ncurses4/terminfo/w/wyse85-wvb
+/usr/share/ncurses4/terminfo/w/wyse99gt
+/usr/share/ncurses4/terminfo/w/wyse99gt-25
+/usr/share/ncurses4/terminfo/w/wyse99gt-25-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-vb
+/usr/share/ncurses4/terminfo/w/wyse99gt-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-wvb
+/usr/share/ncurses4/terminfo/x
+/usr/share/ncurses4/terminfo/x/x10term
+/usr/share/ncurses4/terminfo/x/x1700
+/usr/share/ncurses4/terminfo/x/x1700-lm
+/usr/share/ncurses4/terminfo/x/x1720
+/usr/share/ncurses4/terminfo/x/x1750
+/usr/share/ncurses4/terminfo/x/x68k
+/usr/share/ncurses4/terminfo/x/x68k-ite
+/usr/share/ncurses4/terminfo/x/x820
+/usr/share/ncurses4/terminfo/x/xenix
+/usr/share/ncurses4/terminfo/x/xerox
+/usr/share/ncurses4/terminfo/x/xerox-lm
+/usr/share/ncurses4/terminfo/x/xerox1720
+/usr/share/ncurses4/terminfo/x/xerox820
+/usr/share/ncurses4/terminfo/x/xl83
+/usr/share/ncurses4/terminfo/x/xtalk
+/usr/share/ncurses4/terminfo/x/xterm
+/usr/share/ncurses4/terminfo/x/xterm+sl
+/usr/share/ncurses4/terminfo/x/xterm+sl-twm
+/usr/share/ncurses4/terminfo/x/xterm-16color
+/usr/share/ncurses4/terminfo/x/xterm-8bit
+/usr/share/ncurses4/terminfo/x/xterm-bold
+/usr/share/ncurses4/terminfo/x/xterm-nic
+/usr/share/ncurses4/terminfo/x/xterm-old
+/usr/share/ncurses4/terminfo/x/xterm-pcolor
+/usr/share/ncurses4/terminfo/x/xterm-r5
+/usr/share/ncurses4/terminfo/x/xterm-r6
+/usr/share/ncurses4/terminfo/x/xterm-sun
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v32
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v33
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v40
+/usr/share/ncurses4/terminfo/x/xterm-xi
+/usr/share/ncurses4/terminfo/x/xterm1
+/usr/share/ncurses4/terminfo/x/xterms
+/usr/share/ncurses4/terminfo/x/xterms-sun
+/usr/share/ncurses4/terminfo/x/xwsh
+/usr/share/ncurses4/terminfo/z
+/usr/share/ncurses4/terminfo/z/z-100
+/usr/share/ncurses4/terminfo/z/z-100bw
+/usr/share/ncurses4/terminfo/z/z100
+/usr/share/ncurses4/terminfo/z/z100bw
+/usr/share/ncurses4/terminfo/z/z110
+/usr/share/ncurses4/terminfo/z/z110bw
+/usr/share/ncurses4/terminfo/z/z19
+/usr/share/ncurses4/terminfo/z/z29
+/usr/share/ncurses4/terminfo/z/z29a
+/usr/share/ncurses4/terminfo/z/z29a-kc-bc
+/usr/share/ncurses4/terminfo/z/z29a-kc-uc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-bc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-uc
+/usr/share/ncurses4/terminfo/z/z29b
+/usr/share/ncurses4/terminfo/z/z30
+/usr/share/ncurses4/terminfo/z/z340
+/usr/share/ncurses4/terminfo/z/z340-nam
+/usr/share/ncurses4/terminfo/z/z39-a
+/usr/share/ncurses4/terminfo/z/z39a
+/usr/share/ncurses4/terminfo/z/z50
+/usr/share/ncurses4/terminfo/z/z8001
+/usr/share/ncurses4/terminfo/z/zen30
+/usr/share/ncurses4/terminfo/z/zen50
+/usr/share/ncurses4/terminfo/z/zen8001
+/usr/share/ncurses4/terminfo/z/zenith
+/usr/share/ncurses4/terminfo/z/zenith29
+/usr/share/ncurses4/terminfo/z/zenith39-a
+/usr/share/ncurses4/terminfo/z/zenith39-ansi
+/usr/share/ncurses4/terminfo/z/zt-1
+/usr/share/ncurses4/terminfo/z/ztx
+/usr/share/ncurses4/terminfo/z/ztx-1-a
+/usr/share/ncurses4/terminfo/z/ztx11
+
+2 15 RPM:Files 0 0
+2 14 #text 0 1
+
+1 15 RDF:Description 0 0
+1 14 #text 0 1
+
+0 15 RDF:RDF 0 0
diff --git a/result/rdf2.sax b/result/rdf2.sax
new file mode 100644
index 0000000..f6686c1
--- /dev/null
+++ b/result/rdf2.sax
@@ -0,0 +1,191 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(RDF:RDF, xmlns:RDF='http://www.w3.org/TR/WD-rdf-syntax#', xmlns:RPM='http://www.rpm.org/')
+SAX.characters(
+ , 3)
+SAX.startElement(RDF:Description, about='ftp://rufus.w3.org/linux/dld/5.4/i386/RPMS/i386/ncurses4-4.2-3.i386.rpm')
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Name)
+SAX.characters(ncurses4, 8)
+SAX.endElement(RPM:Name)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Version)
+SAX.characters(4.2, 3)
+SAX.endElement(RPM:Version)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Release)
+SAX.characters(3, 1)
+SAX.endElement(RPM:Release)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Arch)
+SAX.characters(i386, 4)
+SAX.endElement(RPM:Arch)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Os)
+SAX.characters(Linux, 5)
+SAX.endElement(RPM:Os)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Distribution)
+SAX.characters(DLD, 3)
+SAX.endElement(RPM:Distribution)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Vendor)
+SAX.characters(delix Computer GmbH, 19)
+SAX.endElement(RPM:Vendor)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Packager)
+SAX.characters(Till Bubeck , 12)
+SAX.characters(<, 1)
+SAX.characters(bubeck@delix.de, 15)
+SAX.characters(>, 1)
+SAX.characters(, Ngo Than , 11)
+SAX.characters(<, 1)
+SAX.characters(than@delix.de, 13)
+SAX.characters(>, 1)
+SAX.endElement(RPM:Packager)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Group)
+SAX.characters(Libraries, 9)
+SAX.endElement(RPM:Group)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Summary)
+SAX.characters(Bibliothek zur Ansteuerung von, 40)
+SAX.endElement(RPM:Summary)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Description)
+SAX.characters(Diese Library stellt dem Progr, 57)
+SAX.characters(ä, 2)
+SAX.characters(ngige
+Routinen zur Ansteuerung, 57)
+SAX.characters(ü, 2)
+SAX.characters(gung, die
+speziell optimiert s, 57)
+SAX.characters(', 1)
+SAX.characters(new curses, 10)
+SAX.characters(', 1)
+SAX.characters( (ncurses) Variante und ist de, 51)
+SAX.characters(ü, 2)
+SAX.characters(r die klassische Curses-Librar, 70)
+SAX.endElement(RPM:Description)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Copyright)
+SAX.characters(GPL, 3)
+SAX.endElement(RPM:Copyright)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Sources)
+SAX.characters(ncurses4-4.2-3.src.rpm, 22)
+SAX.endElement(RPM:Sources)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:BuildDate)
+SAX.characters(Tue May 12 19:30:26 1998, 24)
+SAX.endElement(RPM:BuildDate)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Date)
+SAX.characters(895015826, 9)
+SAX.endElement(RPM:Date)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Size)
+SAX.characters(1373513, 7)
+SAX.endElement(RPM:Size)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:BuildHost)
+SAX.characters(erdbeere.delix.de, 17)
+SAX.endElement(RPM:BuildHost)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Provides)
+SAX.characters(
+ , 7)
+SAX.startElement(RDF:Bag)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource, href='../../../../../resources/ncurses4.rdf')
+SAX.characters(ncurses4, 8)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource, href='../../../../../resources/libpanel.so.4.rdf')
+SAX.characters(libpanel.so.4, 13)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource, href='../../../../../resources/libncurses.so.4.rdf')
+SAX.characters(libncurses.so.4, 15)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource, href='../../../../../resources/libmenu.so.4.rdf')
+SAX.characters(libmenu.so.4, 12)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource, href='../../../../../resources/libform.so.4.rdf')
+SAX.characters(libform.so.4, 12)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 9)
+SAX.startElement(RPM:Resource, href='../../../../../resources/ncurses.rdf')
+SAX.characters(ncurses, 7)
+SAX.endElement(RPM:Resource)
+SAX.characters(
+ , 7)
+SAX.endElement(RDF:Bag)
+SAX.characters(
+ , 5)
+SAX.endElement(RPM:Provides)
+SAX.characters(
+ , 5)
+SAX.startElement(RPM:Files)
+SAX.characters(/lib/libncurses.so.4
+/lib/libn, 2008)
+SAX.characters(/share/ncurses4/terminfo/P/P14, 4000)
+SAX.characters(es4/terminfo/a/alt7pc
+/usr/sha, 4000)
+SAX.characters(/a/att4415-w
+/usr/share/ncurse, 4000)
+SAX.characters(ses4/terminfo/b/bee
+/usr/share, 4000)
+SAX.characters(r/share/ncurses4/terminfo/c/co, 4000)
+SAX.characters(/usr/share/ncurses4/terminfo/d, 4000)
+SAX.characters(sr/share/ncurses4/terminfo/g/g, 4000)
+SAX.characters(/terminfo/h/hp2626-12x40
+/usr/, 4000)
+SAX.characters(e/ncurses4/terminfo/i/intertub, 4000)
+SAX.characters(rses4/terminfo/m/mskermit22714, 4000)
+SAX.characters(are/ncurses4/terminfo/p/p12-m
+, 4000)
+SAX.characters(pt100w
+/usr/share/ncurses4/ter, 4000)
+SAX.characters(sr/share/ncurses4/terminfo/s/s, 4000)
+SAX.characters(usr/share/ncurses4/terminfo/t/, 4000)
+SAX.characters(share/ncurses4/terminfo/v/vi55, 4000)
+SAX.characters(are/ncurses4/terminfo/w/wy160-, 4000)
+SAX.characters(/wy99gt-vb
+/usr/share/ncurses4, 4000)
+SAX.characters(/w/wyse99gt
+/usr/share/ncurses, 2907)
+SAX.endElement(RPM:Files)
+SAX.characters(
+ , 3)
+SAX.endElement(RDF:Description)
+SAX.characters(
+, 1)
+SAX.endElement(RDF:RDF)
+SAX.endDocument()
diff --git a/result/rdf2.sax2 b/result/rdf2.sax2
new file mode 100644
index 0000000..388174f
--- /dev/null
+++ b/result/rdf2.sax2
@@ -0,0 +1,191 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(RDF, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 2, xmlns:RDF='http://www.w3.org/TR/WD-rdf-syntax#', xmlns:RPM='http://www.rpm.org/', 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(Description, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 0, 1, 0, about='ftp:...', 71)
+SAX.characters(
+ , 5)
+SAX.startElementNs(Name, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(ncurses4, 8)
+SAX.endElementNs(Name, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Version, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(4.2, 3)
+SAX.endElementNs(Version, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Release, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(3, 1)
+SAX.endElementNs(Release, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Arch, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(i386, 4)
+SAX.endElementNs(Arch, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Os, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Linux, 5)
+SAX.endElementNs(Os, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Distribution, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(DLD, 3)
+SAX.endElementNs(Distribution, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Vendor, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(delix Computer GmbH, 19)
+SAX.endElementNs(Vendor, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Packager, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Till Bubeck , 12)
+SAX.characters(<, 1)
+SAX.characters(bubeck@delix.de, 15)
+SAX.characters(>, 1)
+SAX.characters(, Ngo Than , 11)
+SAX.characters(<, 1)
+SAX.characters(than@delix.de, 13)
+SAX.characters(>, 1)
+SAX.endElementNs(Packager, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Group, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Libraries, 9)
+SAX.endElementNs(Group, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Summary, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Bibliothek zur Ansteuerung von, 40)
+SAX.endElementNs(Summary, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Description, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Diese Library stellt dem Progr, 57)
+SAX.characters(ä, 2)
+SAX.characters(ngige
+Routinen zur Ansteuerung, 57)
+SAX.characters(ü, 2)
+SAX.characters(gung, die
+speziell optimiert s, 57)
+SAX.characters(', 1)
+SAX.characters(new curses, 10)
+SAX.characters(', 1)
+SAX.characters( (ncurses) Variante und ist de, 51)
+SAX.characters(ü, 2)
+SAX.characters(r die klassische Curses-Librar, 70)
+SAX.endElementNs(Description, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Copyright, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(GPL, 3)
+SAX.endElementNs(Copyright, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Sources, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(ncurses4-4.2-3.src.rpm, 22)
+SAX.endElementNs(Sources, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(BuildDate, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(Tue May 12 19:30:26 1998, 24)
+SAX.endElementNs(BuildDate, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Date, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(895015826, 9)
+SAX.endElementNs(Date, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Size, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(1373513, 7)
+SAX.endElementNs(Size, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(BuildHost, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(erdbeere.delix.de, 17)
+SAX.endElementNs(BuildHost, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Provides, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(
+ , 7)
+SAX.startElementNs(Bag, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#', 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 1, 0, href='../....', 37)
+SAX.characters(ncurses4, 8)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 1, 0, href='../....', 42)
+SAX.characters(libpanel.so.4, 13)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 1, 0, href='../....', 44)
+SAX.characters(libncurses.so.4, 15)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 1, 0, href='../....', 41)
+SAX.characters(libmenu.so.4, 12)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 1, 0, href='../....', 41)
+SAX.characters(libform.so.4, 12)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 9)
+SAX.startElementNs(Resource, RPM, 'http://www.rpm.org/', 0, 1, 0, href='../....', 36)
+SAX.characters(ncurses, 7)
+SAX.endElementNs(Resource, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 7)
+SAX.endElementNs(Bag, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+ , 5)
+SAX.endElementNs(Provides, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(Files, RPM, 'http://www.rpm.org/', 0, 0, 0)
+SAX.characters(/lib/libncurses.so.4
+/lib/libn, 2008)
+SAX.characters(/share/ncurses4/terminfo/P/P14, 4000)
+SAX.characters(es4/terminfo/a/alt7pc
+/usr/sha, 4000)
+SAX.characters(/a/att4415-w
+/usr/share/ncurse, 4000)
+SAX.characters(ses4/terminfo/b/bee
+/usr/share, 4000)
+SAX.characters(r/share/ncurses4/terminfo/c/co, 4000)
+SAX.characters(/usr/share/ncurses4/terminfo/d, 4000)
+SAX.characters(sr/share/ncurses4/terminfo/g/g, 4000)
+SAX.characters(/terminfo/h/hp2626-12x40
+/usr/, 4000)
+SAX.characters(e/ncurses4/terminfo/i/intertub, 4000)
+SAX.characters(rses4/terminfo/m/mskermit22714, 4000)
+SAX.characters(are/ncurses4/terminfo/p/p12-m
+, 4000)
+SAX.characters(pt100w
+/usr/share/ncurses4/ter, 4000)
+SAX.characters(sr/share/ncurses4/terminfo/s/s, 4000)
+SAX.characters(usr/share/ncurses4/terminfo/t/, 4000)
+SAX.characters(share/ncurses4/terminfo/v/vi55, 4000)
+SAX.characters(are/ncurses4/terminfo/w/wy160-, 4000)
+SAX.characters(/wy99gt-vb
+/usr/share/ncurses4, 4000)
+SAX.characters(/w/wyse99gt
+/usr/share/ncurses, 2907)
+SAX.endElementNs(Files, RPM, 'http://www.rpm.org/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(Description, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.characters(
+, 1)
+SAX.endElementNs(RDF, RDF, 'http://www.w3.org/TR/WD-rdf-syntax#')
+SAX.endDocument()
diff --git a/result/regexp/branch b/result/regexp/branch
new file mode 100644
index 0000000..dd703ac
--- /dev/null
+++ b/result/regexp/branch
@@ -0,0 +1,14 @@
+Regexp: a|b(d|e(g|h|i)|f)|c
+a: Ok
+c: Ok
+bd: Ok
+bf: Ok
+beg: Ok
+beh: Ok
+bei: Ok
+b: Fail
+be: Fail
+bi: Fail
+f: Fail
+ab: Fail
+ac: Fail
diff --git a/result/regexp/bug316338 b/result/regexp/bug316338
new file mode 100644
index 0000000..1cd1ac0
--- /dev/null
+++ b/result/regexp/bug316338
@@ -0,0 +1,20 @@
+Regexp: (((C|c)(([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*))+
+C 433: Ok
+C 433 12: Fail
+C 433 123: Ok
+C 433 123 456: Ok
+C 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12: Fail
+Regexp: (((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*))+
+C 433: Fail
+C 433 12: Fail
+C 433 123: Fail
+C 433 123 456: Ok
+C 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12: Fail
+Regexp: (((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?){3})+[\s]*))+
+C 433: Fail
+C 433 12: Fail
+C 433 123: Fail
+C 433 123 456: Fail
+C 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12: Fail
+Regexp: (((M|m)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)[\s]*)|((L|l)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((H|h)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((V|v)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*)|((Q|q)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){2})+[\s]*)|((S|s)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){2})+[\s]*)|((A|a)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]+[0-1][\s]+[0-1][\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((Z|z)[\s]*))*
+M 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12: Fail
diff --git a/result/regexp/bug420596 b/result/regexp/bug420596
new file mode 100644
index 0000000..d23b303
--- /dev/null
+++ b/result/regexp/bug420596
@@ -0,0 +1,10 @@
+Regexp: (\+|-)(0[0-9]|1[0-1])
++01: Ok
+-01: Ok
++10: Ok
+-10: Ok
+Regexp: [+-](0[0-9]|1[0-1])
++01: Ok
+-01: Ok
++10: Ok
+-10: Ok
diff --git a/result/regexp/content b/result/regexp/content
new file mode 100644
index 0000000..220fd47
--- /dev/null
+++ b/result/regexp/content
@@ -0,0 +1,12 @@
+Regexp: ((a|b|c)def)
+adef: Ok
+bdef: Ok
+adefg: Fail
+aaef: Fail
+Regexp: ((a|b|c|d|e|f)?(g|h|i)+(k|l)*)
+g: Ok
+gi: Ok
+fil: Ok
+gikl: Ok
+cghhhiill: Ok
+ak: Fail
diff --git a/result/regexp/hard b/result/regexp/hard
new file mode 100644
index 0000000..28d6164
--- /dev/null
+++ b/result/regexp/hard
@@ -0,0 +1,12 @@
+Regexp: ((a|b|\p{Nd}){1,2}|aaa|bbbb){1,2}
+bab: Ok
+aaca: Fail
+aaabbbb: Ok
+a0b: Ok
+aa0aaa: Fail
+b0aaa: Ok
+Regexp: (\d{1,3}\.){3}\d{1,3}
+1.2.3.4: Ok
+1.22.333.44: Ok
+1.2.3: Fail
+1..2.3: Fail
diff --git a/result/regexp/ncname b/result/regexp/ncname
new file mode 100644
index 0000000..3f16d95
--- /dev/null
+++ b/result/regexp/ncname
@@ -0,0 +1,6 @@
+Regexp: [\i-[:]][\c-[:]]*
+a: Ok
+abc: Ok
+abc1d: Ok
+1ac: Fail
+a1b:c: Fail
diff --git a/result/regexp/ranges b/result/regexp/ranges
new file mode 100644
index 0000000..4cbf298
--- /dev/null
+++ b/result/regexp/ranges
@@ -0,0 +1,15 @@
+Regexp: a{2,3}
+a: Fail
+aa: Ok
+aaa: Ok
+aaaa: Fail
+Regexp: ba{2,3}c
+bac: Fail
+baac: Ok
+baaac: Ok
+baaaac: Fail
+Regexp: a(b|c){2,3}d
+abcd: Ok
+acccd: Ok
+abd: Fail
+accccd: Fail
diff --git a/result/regexp/ranges2 b/result/regexp/ranges2
new file mode 100644
index 0000000..8305732
--- /dev/null
+++ b/result/regexp/ranges2
@@ -0,0 +1,14 @@
+Regexp: (a|b{0,3}){0,1}
+a: Ok
+aa: Fail
+b: Ok
+bb: Ok
+bbb: Ok
+bbbb: Fail
+ab: Fail
+ba: Fail
+Regexp: ([0-9]{0,3}|([0-9]{0}|[0-9]{0,3})){0,3}
+0: Ok
+00: Ok
+123: Ok
+abc: Fail
diff --git a/result/regexp/xpath b/result/regexp/xpath
new file mode 100644
index 0000000..4f6b13c
--- /dev/null
+++ b/result/regexp/xpath
@@ -0,0 +1,32 @@
+Regexp: (\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*
+a: Ok
+a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3: Ok
+*: Ok
+a|b: Ok
+.//a:b: Ok
+a/b/c: Ok
+a/*/b: Ok
+a:*/b:*/c:*: Ok
+child::a/child::b:*: Ok
+child::a/child::b:*|a/*/b|.//a:b: Ok
+1: Fail
+1ab: Fail
+a:1: Ok
+@a: Fail
+ancestor::a: Ok
+Regexp: (\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*(\|(\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*)*
+a: Ok
+a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3: Ok
+*: Ok
+a|b: Ok
+.//a:b: Ok
+a/b/c: Ok
+a/*/b: Ok
+a:*/b:*/c:*: Ok
+child::a/child::b:*: Ok
+child::a/child::b:*|a/*/b|.//a:b: Ok
+1: Fail
+1ab: Fail
+a:1: Fail
+@a: Fail
+ancestor::a: Fail
diff --git a/result/relaxng/302836_0 b/result/relaxng/302836_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/302836_0
diff --git a/result/relaxng/302836_0.err b/result/relaxng/302836_0.err
new file mode 100644
index 0000000..46ae43c
--- /dev/null
+++ b/result/relaxng/302836_0.err
@@ -0,0 +1 @@
+./test/relaxng/302836_0.xml validates
diff --git a/result/relaxng/302836_err b/result/relaxng/302836_err
new file mode 100644
index 0000000..fab2d78
--- /dev/null
+++ b/result/relaxng/302836_err
@@ -0,0 +1 @@
+./test/relaxng/302836.rng validates
diff --git a/result/relaxng/302836_valid b/result/relaxng/302836_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/302836_valid
diff --git a/result/relaxng/307377_0 b/result/relaxng/307377_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/307377_0
diff --git a/result/relaxng/307377_0.err b/result/relaxng/307377_0.err
new file mode 100644
index 0000000..1f465bb
--- /dev/null
+++ b/result/relaxng/307377_0.err
@@ -0,0 +1,2 @@
+./test/relaxng/307377_0.xml:1: element number: Relax-NG validity error : Element number failed to validate attributes
+./test/relaxng/307377_0.xml fails to validate
diff --git a/result/relaxng/307377_1 b/result/relaxng/307377_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/307377_1
diff --git a/result/relaxng/307377_1.err b/result/relaxng/307377_1.err
new file mode 100644
index 0000000..abfb533
--- /dev/null
+++ b/result/relaxng/307377_1.err
@@ -0,0 +1,3 @@
+./test/relaxng/307377_1.xml:1: element number: Relax-NG validity error : Extra data in list: a
+./test/relaxng/307377_1.xml:1: element number: Relax-NG validity error : Element number failed to validate attributes
+./test/relaxng/307377_1.xml fails to validate
diff --git a/result/relaxng/307377_2 b/result/relaxng/307377_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/307377_2
diff --git a/result/relaxng/307377_2.err b/result/relaxng/307377_2.err
new file mode 100644
index 0000000..158ea42
--- /dev/null
+++ b/result/relaxng/307377_2.err
@@ -0,0 +1 @@
+./test/relaxng/307377_2.xml validates
diff --git a/result/relaxng/307377_err b/result/relaxng/307377_err
new file mode 100644
index 0000000..5705eab
--- /dev/null
+++ b/result/relaxng/307377_err
@@ -0,0 +1 @@
+./test/relaxng/307377.rng validates
diff --git a/result/relaxng/307377_valid b/result/relaxng/307377_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/307377_valid
diff --git a/result/relaxng/492317_0 b/result/relaxng/492317_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/492317_0
diff --git a/result/relaxng/492317_0.err b/result/relaxng/492317_0.err
new file mode 100644
index 0000000..9b8db15
--- /dev/null
+++ b/result/relaxng/492317_0.err
@@ -0,0 +1 @@
+./test/relaxng/492317_0.xml validates
diff --git a/result/relaxng/492317_1 b/result/relaxng/492317_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/492317_1
diff --git a/result/relaxng/492317_1.err b/result/relaxng/492317_1.err
new file mode 100644
index 0000000..177ee7b
--- /dev/null
+++ b/result/relaxng/492317_1.err
@@ -0,0 +1 @@
+./test/relaxng/492317_1.xml validates
diff --git a/result/relaxng/492317_2 b/result/relaxng/492317_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/492317_2
diff --git a/result/relaxng/492317_2.err b/result/relaxng/492317_2.err
new file mode 100644
index 0000000..e8b22e7
--- /dev/null
+++ b/result/relaxng/492317_2.err
@@ -0,0 +1,3 @@
+./test/relaxng/492317_2.xml:2: element child: Relax-NG validity error : Element child failed to validate attributes
+./test/relaxng/492317_2.xml:1: element root: Relax-NG validity error : Element root failed to validate content
+./test/relaxng/492317_2.xml fails to validate
diff --git a/result/relaxng/492317_err b/result/relaxng/492317_err
new file mode 100644
index 0000000..1f07539
--- /dev/null
+++ b/result/relaxng/492317_err
@@ -0,0 +1 @@
+./test/relaxng/492317.rng validates
diff --git a/result/relaxng/492317_valid b/result/relaxng/492317_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/492317_valid
diff --git a/result/relaxng/558452_0 b/result/relaxng/558452_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/558452_0
diff --git a/result/relaxng/558452_0.err b/result/relaxng/558452_0.err
new file mode 100644
index 0000000..fecc3e9
--- /dev/null
+++ b/result/relaxng/558452_0.err
@@ -0,0 +1 @@
+./test/relaxng/558452_0.xml validates
diff --git a/result/relaxng/558452_1 b/result/relaxng/558452_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/558452_1
diff --git a/result/relaxng/558452_1.err b/result/relaxng/558452_1.err
new file mode 100644
index 0000000..1e225be
--- /dev/null
+++ b/result/relaxng/558452_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/558452_1.xml:2: element doc: Relax-NG validity error : Expecting an element , got nothing
+./test/relaxng/558452_1.xml fails to validate
diff --git a/result/relaxng/558452_2 b/result/relaxng/558452_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/558452_2
diff --git a/result/relaxng/558452_2.err b/result/relaxng/558452_2.err
new file mode 100644
index 0000000..d48287c
--- /dev/null
+++ b/result/relaxng/558452_2.err
@@ -0,0 +1 @@
+./test/relaxng/558452_2.xml validates
diff --git a/result/relaxng/558452_3 b/result/relaxng/558452_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/558452_3
diff --git a/result/relaxng/558452_3.err b/result/relaxng/558452_3.err
new file mode 100644
index 0000000..0d33cdb
--- /dev/null
+++ b/result/relaxng/558452_3.err
@@ -0,0 +1 @@
+./test/relaxng/558452_3.xml validates
diff --git a/result/relaxng/558452_4 b/result/relaxng/558452_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/558452_4
diff --git a/result/relaxng/558452_4.err b/result/relaxng/558452_4.err
new file mode 100644
index 0000000..22e12fa
--- /dev/null
+++ b/result/relaxng/558452_4.err
@@ -0,0 +1,2 @@
+./test/relaxng/558452_4.xml:6: element elem: Relax-NG validity error : Did not expect element elem there
+./test/relaxng/558452_4.xml fails to validate
diff --git a/result/relaxng/558452_err b/result/relaxng/558452_err
new file mode 100644
index 0000000..b162846
--- /dev/null
+++ b/result/relaxng/558452_err
@@ -0,0 +1 @@
+./test/relaxng/558452.rng validates
diff --git a/result/relaxng/558452_valid b/result/relaxng/558452_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/558452_valid
diff --git a/result/relaxng/595792-ext_err b/result/relaxng/595792-ext_err
new file mode 100644
index 0000000..092fdbd
--- /dev/null
+++ b/result/relaxng/595792-ext_err
@@ -0,0 +1 @@
+./test/relaxng/595792-ext.rng validates
diff --git a/result/relaxng/595792-ext_valid b/result/relaxng/595792-ext_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/595792-ext_valid
diff --git a/result/relaxng/595792_0 b/result/relaxng/595792_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/595792_0
diff --git a/result/relaxng/595792_0.err b/result/relaxng/595792_0.err
new file mode 100644
index 0000000..abd73cd
--- /dev/null
+++ b/result/relaxng/595792_0.err
@@ -0,0 +1 @@
+./test/relaxng/595792_0.xml validates
diff --git a/result/relaxng/595792_err b/result/relaxng/595792_err
new file mode 100644
index 0000000..e9f3192
--- /dev/null
+++ b/result/relaxng/595792_err
@@ -0,0 +1 @@
+./test/relaxng/595792.rng validates
diff --git a/result/relaxng/595792_valid b/result/relaxng/595792_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/595792_valid
diff --git a/result/relaxng/710744_1 b/result/relaxng/710744_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/710744_1
diff --git a/result/relaxng/710744_1.err b/result/relaxng/710744_1.err
new file mode 100644
index 0000000..77437eb
--- /dev/null
+++ b/result/relaxng/710744_1.err
@@ -0,0 +1 @@
+./test/relaxng/710744_1.xml validates
diff --git a/result/relaxng/710744_2 b/result/relaxng/710744_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/710744_2
diff --git a/result/relaxng/710744_2.err b/result/relaxng/710744_2.err
new file mode 100644
index 0000000..ee8d8ac
--- /dev/null
+++ b/result/relaxng/710744_2.err
@@ -0,0 +1,2 @@
+./test/relaxng/710744_2.xml:3: element test: Relax-NG validity error : Invalid attribute foo for element test
+./test/relaxng/710744_2.xml fails to validate
diff --git a/result/relaxng/OpenDocumentSub_0 b/result/relaxng/OpenDocumentSub_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/OpenDocumentSub_0
diff --git a/result/relaxng/OpenDocumentSub_0.err b/result/relaxng/OpenDocumentSub_0.err
new file mode 100644
index 0000000..d1c6917
--- /dev/null
+++ b/result/relaxng/OpenDocumentSub_0.err
@@ -0,0 +1 @@
+./test/relaxng/OpenDocumentSub_0.xml validates
diff --git a/result/relaxng/OpenDocumentSub_err b/result/relaxng/OpenDocumentSub_err
new file mode 100644
index 0000000..941d6c4
--- /dev/null
+++ b/result/relaxng/OpenDocumentSub_err
@@ -0,0 +1 @@
+./test/relaxng/OpenDocumentSub.rng validates
diff --git a/result/relaxng/OpenDocumentSub_valid b/result/relaxng/OpenDocumentSub_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/OpenDocumentSub_valid
diff --git a/result/relaxng/addressBook_err b/result/relaxng/addressBook_err
new file mode 100644
index 0000000..584d55a
--- /dev/null
+++ b/result/relaxng/addressBook_err
@@ -0,0 +1 @@
+./test/relaxng/addressBook.rng validates
diff --git a/result/relaxng/addressBook_valid b/result/relaxng/addressBook_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/addressBook_valid
diff --git a/result/relaxng/choice0_0 b/result/relaxng/choice0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_0
diff --git a/result/relaxng/choice0_0.err b/result/relaxng/choice0_0.err
new file mode 100644
index 0000000..5198fa7
--- /dev/null
+++ b/result/relaxng/choice0_0.err
@@ -0,0 +1 @@
+./test/relaxng/choice0_0.xml validates
diff --git a/result/relaxng/choice0_1 b/result/relaxng/choice0_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_1
diff --git a/result/relaxng/choice0_1.err b/result/relaxng/choice0_1.err
new file mode 100644
index 0000000..51214ba
--- /dev/null
+++ b/result/relaxng/choice0_1.err
@@ -0,0 +1 @@
+./test/relaxng/choice0_1.xml validates
diff --git a/result/relaxng/choice0_2 b/result/relaxng/choice0_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_2
diff --git a/result/relaxng/choice0_2.err b/result/relaxng/choice0_2.err
new file mode 100644
index 0000000..19bd3cc
--- /dev/null
+++ b/result/relaxng/choice0_2.err
@@ -0,0 +1 @@
+./test/relaxng/choice0_2.xml validates
diff --git a/result/relaxng/choice0_3 b/result/relaxng/choice0_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_3
diff --git a/result/relaxng/choice0_3.err b/result/relaxng/choice0_3.err
new file mode 100644
index 0000000..c82345f
--- /dev/null
+++ b/result/relaxng/choice0_3.err
@@ -0,0 +1 @@
+./test/relaxng/choice0_3.xml validates
diff --git a/result/relaxng/choice0_4 b/result/relaxng/choice0_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_4
diff --git a/result/relaxng/choice0_4.err b/result/relaxng/choice0_4.err
new file mode 100644
index 0000000..dca145b
--- /dev/null
+++ b/result/relaxng/choice0_4.err
@@ -0,0 +1,2 @@
+./test/relaxng/choice0_4.xml:1: element device: Relax-NG validity error : Element device failed to validate content
+./test/relaxng/choice0_4.xml fails to validate
diff --git a/result/relaxng/choice0_5 b/result/relaxng/choice0_5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_5
diff --git a/result/relaxng/choice0_5.err b/result/relaxng/choice0_5.err
new file mode 100644
index 0000000..a8dd1c9
--- /dev/null
+++ b/result/relaxng/choice0_5.err
@@ -0,0 +1,2 @@
+./test/relaxng/choice0_5.xml:1: element device: Relax-NG validity error : Element device failed to validate content
+./test/relaxng/choice0_5.xml fails to validate
diff --git a/result/relaxng/choice0_6 b/result/relaxng/choice0_6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_6
diff --git a/result/relaxng/choice0_6.err b/result/relaxng/choice0_6.err
new file mode 100644
index 0000000..4facb03
--- /dev/null
+++ b/result/relaxng/choice0_6.err
@@ -0,0 +1,2 @@
+./test/relaxng/choice0_6.xml:1: element device: Relax-NG validity error : Element device failed to validate content
+./test/relaxng/choice0_6.xml fails to validate
diff --git a/result/relaxng/choice0_7 b/result/relaxng/choice0_7
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_7
diff --git a/result/relaxng/choice0_7.err b/result/relaxng/choice0_7.err
new file mode 100644
index 0000000..89b9e32
--- /dev/null
+++ b/result/relaxng/choice0_7.err
@@ -0,0 +1,3 @@
+./test/relaxng/choice0_7.xml:1: element device: Relax-NG validity error : Did not expect element unknown-element there
+./test/relaxng/choice0_7.xml:1: element device: Relax-NG validity error : Element device failed to validate content
+./test/relaxng/choice0_7.xml fails to validate
diff --git a/result/relaxng/choice0_8 b/result/relaxng/choice0_8
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_8
diff --git a/result/relaxng/choice0_8.err b/result/relaxng/choice0_8.err
new file mode 100644
index 0000000..7094ecc
--- /dev/null
+++ b/result/relaxng/choice0_8.err
@@ -0,0 +1,3 @@
+./test/relaxng/choice0_8.xml:1: element device: Relax-NG validity error : Did not expect element unknown-element there
+./test/relaxng/choice0_8.xml:1: element device: Relax-NG validity error : Element device failed to validate content
+./test/relaxng/choice0_8.xml fails to validate
diff --git a/result/relaxng/choice0_err b/result/relaxng/choice0_err
new file mode 100644
index 0000000..cf12431
--- /dev/null
+++ b/result/relaxng/choice0_err
@@ -0,0 +1 @@
+./test/relaxng/choice0.rng validates
diff --git a/result/relaxng/choice0_valid b/result/relaxng/choice0_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/choice0_valid
diff --git a/result/relaxng/compare0_0 b/result/relaxng/compare0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/compare0_0
diff --git a/result/relaxng/compare0_0.err b/result/relaxng/compare0_0.err
new file mode 100644
index 0000000..9328f27
--- /dev/null
+++ b/result/relaxng/compare0_0.err
@@ -0,0 +1,3 @@
+./test/relaxng/compare0_0.xml:2: element number: Relax-NG validity error : failed to compare type integer
+./test/relaxng/compare0_0.xml:2: element number: Relax-NG validity error : Element number failed to validate attributes
+./test/relaxng/compare0_0.xml fails to validate
diff --git a/result/relaxng/compare0_err b/result/relaxng/compare0_err
new file mode 100644
index 0000000..543d734
--- /dev/null
+++ b/result/relaxng/compare0_err
@@ -0,0 +1 @@
+./test/relaxng/compare0.rng validates
diff --git a/result/relaxng/compare0_valid b/result/relaxng/compare0_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/compare0_valid
diff --git a/result/relaxng/comps_0 b/result/relaxng/comps_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/comps_0
diff --git a/result/relaxng/comps_0.err b/result/relaxng/comps_0.err
new file mode 100644
index 0000000..cdefe63
--- /dev/null
+++ b/result/relaxng/comps_0.err
@@ -0,0 +1 @@
+./test/relaxng/comps_0.xml validates
diff --git a/result/relaxng/comps_err b/result/relaxng/comps_err
new file mode 100644
index 0000000..67dd402
--- /dev/null
+++ b/result/relaxng/comps_err
@@ -0,0 +1 @@
+./test/relaxng/comps.rng validates
diff --git a/result/relaxng/comps_valid b/result/relaxng/comps_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/comps_valid
diff --git a/result/relaxng/demo2_err b/result/relaxng/demo2_err
new file mode 100644
index 0000000..9bdaeb9
--- /dev/null
+++ b/result/relaxng/demo2_err
@@ -0,0 +1 @@
+./test/relaxng/demo2.rng validates
diff --git a/result/relaxng/demo2_valid b/result/relaxng/demo2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/demo2_valid
diff --git a/result/relaxng/demo3_err b/result/relaxng/demo3_err
new file mode 100644
index 0000000..ccced98
--- /dev/null
+++ b/result/relaxng/demo3_err
@@ -0,0 +1 @@
+./test/relaxng/demo3.rng validates
diff --git a/result/relaxng/demo3_valid b/result/relaxng/demo3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/demo3_valid
diff --git a/result/relaxng/demo_err b/result/relaxng/demo_err
new file mode 100644
index 0000000..4f397f8
--- /dev/null
+++ b/result/relaxng/demo_err
@@ -0,0 +1 @@
+./test/relaxng/demo.rng validates
diff --git a/result/relaxng/demo_valid b/result/relaxng/demo_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/demo_valid
diff --git a/result/relaxng/docbook_0 b/result/relaxng/docbook_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/docbook_0
diff --git a/result/relaxng/docbook_0.err b/result/relaxng/docbook_0.err
new file mode 100644
index 0000000..98d1971
--- /dev/null
+++ b/result/relaxng/docbook_0.err
@@ -0,0 +1 @@
+./test/relaxng/docbook_0.xml validates
diff --git a/result/relaxng/docbook_err b/result/relaxng/docbook_err
new file mode 100644
index 0000000..8124012
--- /dev/null
+++ b/result/relaxng/docbook_err
@@ -0,0 +1 @@
+./test/relaxng/docbook.rng validates
diff --git a/result/relaxng/docbook_valid b/result/relaxng/docbook_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/docbook_valid
diff --git a/result/relaxng/empty0_0 b/result/relaxng/empty0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/empty0_0
diff --git a/result/relaxng/empty0_0.err b/result/relaxng/empty0_0.err
new file mode 100644
index 0000000..97d0c9d
--- /dev/null
+++ b/result/relaxng/empty0_0.err
@@ -0,0 +1 @@
+./test/relaxng/empty0_0.xml validates
diff --git a/result/relaxng/empty0_err b/result/relaxng/empty0_err
new file mode 100644
index 0000000..c4060cf
--- /dev/null
+++ b/result/relaxng/empty0_err
@@ -0,0 +1 @@
+./test/relaxng/empty0.rng validates
diff --git a/result/relaxng/empty0_valid b/result/relaxng/empty0_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/empty0_valid
diff --git a/result/relaxng/empty1_0 b/result/relaxng/empty1_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/empty1_0
diff --git a/result/relaxng/empty1_0.err b/result/relaxng/empty1_0.err
new file mode 100644
index 0000000..4c1a9af
--- /dev/null
+++ b/result/relaxng/empty1_0.err
@@ -0,0 +1 @@
+./test/relaxng/empty1_0.xml validates
diff --git a/result/relaxng/empty1_1 b/result/relaxng/empty1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/empty1_1
diff --git a/result/relaxng/empty1_1.err b/result/relaxng/empty1_1.err
new file mode 100644
index 0000000..6a71bb0
--- /dev/null
+++ b/result/relaxng/empty1_1.err
@@ -0,0 +1 @@
+./test/relaxng/empty1_1.xml validates
diff --git a/result/relaxng/empty1_err b/result/relaxng/empty1_err
new file mode 100644
index 0000000..f52d95c
--- /dev/null
+++ b/result/relaxng/empty1_err
@@ -0,0 +1 @@
+./test/relaxng/empty1.rng validates
diff --git a/result/relaxng/empty1_valid b/result/relaxng/empty1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/empty1_valid
diff --git a/result/relaxng/inline2_err b/result/relaxng/inline2_err
new file mode 100644
index 0000000..027408e
--- /dev/null
+++ b/result/relaxng/inline2_err
@@ -0,0 +1 @@
+./test/relaxng/inline2.rng validates
diff --git a/result/relaxng/inline2_valid b/result/relaxng/inline2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/inline2_valid
diff --git a/result/relaxng/inline3_err b/result/relaxng/inline3_err
new file mode 100644
index 0000000..1ceccb8
--- /dev/null
+++ b/result/relaxng/inline3_err
@@ -0,0 +1 @@
+./test/relaxng/inline3.rng validates
diff --git a/result/relaxng/inline3_valid b/result/relaxng/inline3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/inline3_valid
diff --git a/result/relaxng/inline_err b/result/relaxng/inline_err
new file mode 100644
index 0000000..8ba0e5c
--- /dev/null
+++ b/result/relaxng/inline_err
@@ -0,0 +1 @@
+./test/relaxng/inline.rng validates
diff --git a/result/relaxng/inline_valid b/result/relaxng/inline_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/inline_valid
diff --git a/result/relaxng/interleave0_0_err b/result/relaxng/interleave0_0_err
new file mode 100644
index 0000000..0d865ec
--- /dev/null
+++ b/result/relaxng/interleave0_0_err
@@ -0,0 +1 @@
+./test/relaxng/interleave0_0.rng validates
diff --git a/result/relaxng/interleave0_0_valid b/result/relaxng/interleave0_0_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/interleave0_0_valid
diff --git a/result/relaxng/interleave1_0_err b/result/relaxng/interleave1_0_err
new file mode 100644
index 0000000..4802352
--- /dev/null
+++ b/result/relaxng/interleave1_0_err
@@ -0,0 +1 @@
+./test/relaxng/interleave1_0.rng validates
diff --git a/result/relaxng/interleave1_0_valid b/result/relaxng/interleave1_0_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/interleave1_0_valid
diff --git a/result/relaxng/libvirt_0 b/result/relaxng/libvirt_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/libvirt_0
diff --git a/result/relaxng/libvirt_0.err b/result/relaxng/libvirt_0.err
new file mode 100644
index 0000000..29535b8
--- /dev/null
+++ b/result/relaxng/libvirt_0.err
@@ -0,0 +1 @@
+./test/relaxng/libvirt_0.xml validates
diff --git a/result/relaxng/libvirt_err b/result/relaxng/libvirt_err
new file mode 100644
index 0000000..4acf3ed
--- /dev/null
+++ b/result/relaxng/libvirt_err
@@ -0,0 +1 @@
+./test/relaxng/libvirt.rng validates
diff --git a/result/relaxng/libvirt_valid b/result/relaxng/libvirt_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/libvirt_valid
diff --git a/result/relaxng/list_0 b/result/relaxng/list_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/list_0
diff --git a/result/relaxng/list_0.err b/result/relaxng/list_0.err
new file mode 100644
index 0000000..5c8ca7c
--- /dev/null
+++ b/result/relaxng/list_0.err
@@ -0,0 +1 @@
+./test/relaxng/list_0.xml validates
diff --git a/result/relaxng/list_1 b/result/relaxng/list_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/list_1
diff --git a/result/relaxng/list_1.err b/result/relaxng/list_1.err
new file mode 100644
index 0000000..3ae35ae
--- /dev/null
+++ b/result/relaxng/list_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/list_1.xml:1: element elem1: Relax-NG validity error : Element elem1 failed to validate attributes
+./test/relaxng/list_1.xml fails to validate
diff --git a/result/relaxng/list_err b/result/relaxng/list_err
new file mode 100644
index 0000000..748e21b
--- /dev/null
+++ b/result/relaxng/list_err
@@ -0,0 +1 @@
+./test/relaxng/list.rng validates
diff --git a/result/relaxng/list_valid b/result/relaxng/list_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/list_valid
diff --git a/result/relaxng/pattern1_err b/result/relaxng/pattern1_err
new file mode 100644
index 0000000..8856446
--- /dev/null
+++ b/result/relaxng/pattern1_err
@@ -0,0 +1 @@
+./test/relaxng/pattern1.rng validates
diff --git a/result/relaxng/pattern1_valid b/result/relaxng/pattern1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/pattern1_valid
diff --git a/result/relaxng/pattern2_err b/result/relaxng/pattern2_err
new file mode 100644
index 0000000..acccc55
--- /dev/null
+++ b/result/relaxng/pattern2_err
@@ -0,0 +1 @@
+./test/relaxng/pattern2.rng validates
diff --git a/result/relaxng/pattern2_valid b/result/relaxng/pattern2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/pattern2_valid
diff --git a/result/relaxng/proofsystem_err b/result/relaxng/proofsystem_err
new file mode 100644
index 0000000..9fbcfdc
--- /dev/null
+++ b/result/relaxng/proofsystem_err
@@ -0,0 +1 @@
+./test/relaxng/proofsystem.rng validates
diff --git a/result/relaxng/proofsystem_valid b/result/relaxng/proofsystem_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/proofsystem_valid
diff --git a/result/relaxng/rngbug-001_err b/result/relaxng/rngbug-001_err
new file mode 100644
index 0000000..4c30153
--- /dev/null
+++ b/result/relaxng/rngbug-001_err
@@ -0,0 +1 @@
+./test/relaxng/rngbug-001.rng validates
diff --git a/result/relaxng/rngbug-001_valid b/result/relaxng/rngbug-001_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/rngbug-001_valid
diff --git a/result/relaxng/spec1_1 b/result/relaxng/spec1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/spec1_1
diff --git a/result/relaxng/spec1_1.err b/result/relaxng/spec1_1.err
new file mode 100644
index 0000000..1e213a2
--- /dev/null
+++ b/result/relaxng/spec1_1.err
@@ -0,0 +1 @@
+./test/relaxng/spec1_1.xml validates
diff --git a/result/relaxng/spec1_err b/result/relaxng/spec1_err
new file mode 100644
index 0000000..8551c1e
--- /dev/null
+++ b/result/relaxng/spec1_err
@@ -0,0 +1 @@
+./test/relaxng/spec1.rng validates
diff --git a/result/relaxng/spec1_valid b/result/relaxng/spec1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/spec1_valid
diff --git a/result/relaxng/spec_0 b/result/relaxng/spec_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/spec_0
diff --git a/result/relaxng/spec_0.err b/result/relaxng/spec_0.err
new file mode 100644
index 0000000..df30e8a
--- /dev/null
+++ b/result/relaxng/spec_0.err
@@ -0,0 +1 @@
+./test/relaxng/spec_0.xml validates
diff --git a/result/relaxng/spec_err b/result/relaxng/spec_err
new file mode 100644
index 0000000..27336e1
--- /dev/null
+++ b/result/relaxng/spec_err
@@ -0,0 +1 @@
+./test/relaxng/spec.rng validates
diff --git a/result/relaxng/spec_valid b/result/relaxng/spec_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/spec_valid
diff --git a/result/relaxng/table_err b/result/relaxng/table_err
new file mode 100644
index 0000000..47e7996
--- /dev/null
+++ b/result/relaxng/table_err
@@ -0,0 +1 @@
+./test/relaxng/table.rng validates
diff --git a/result/relaxng/table_valid b/result/relaxng/table_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/table_valid
diff --git a/result/relaxng/tutor10_10_1 b/result/relaxng/tutor10_10_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_10_1
diff --git a/result/relaxng/tutor10_10_1.err b/result/relaxng/tutor10_10_1.err
new file mode 100644
index 0000000..2370ff2
--- /dev/null
+++ b/result/relaxng/tutor10_10_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_10_1.xml validates
diff --git a/result/relaxng/tutor10_10_err b/result/relaxng/tutor10_10_err
new file mode 100644
index 0000000..24a5f7e
--- /dev/null
+++ b/result/relaxng/tutor10_10_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_10.rng validates
diff --git a/result/relaxng/tutor10_10_valid b/result/relaxng/tutor10_10_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_10_valid
diff --git a/result/relaxng/tutor10_1_1 b/result/relaxng/tutor10_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_1
diff --git a/result/relaxng/tutor10_1_1.err b/result/relaxng/tutor10_1_1.err
new file mode 100644
index 0000000..361e1e8
--- /dev/null
+++ b/result/relaxng/tutor10_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_1_1.xml validates
diff --git a/result/relaxng/tutor10_1_2 b/result/relaxng/tutor10_1_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_2
diff --git a/result/relaxng/tutor10_1_2.err b/result/relaxng/tutor10_1_2.err
new file mode 100644
index 0000000..6092d7e
--- /dev/null
+++ b/result/relaxng/tutor10_1_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_1_2.xml validates
diff --git a/result/relaxng/tutor10_1_3 b/result/relaxng/tutor10_1_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_3
diff --git a/result/relaxng/tutor10_1_3.err b/result/relaxng/tutor10_1_3.err
new file mode 100644
index 0000000..1c5b68d
--- /dev/null
+++ b/result/relaxng/tutor10_1_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_1_3.xml validates
diff --git a/result/relaxng/tutor10_1_4 b/result/relaxng/tutor10_1_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_4
diff --git a/result/relaxng/tutor10_1_4.err b/result/relaxng/tutor10_1_4.err
new file mode 100644
index 0000000..4030e14
--- /dev/null
+++ b/result/relaxng/tutor10_1_4.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_1_4.xml:1: element foo: Relax-NG validity error : Expecting a namespace for element foo
+./test/relaxng/tutor10_1_4.xml fails to validate
diff --git a/result/relaxng/tutor10_1_5 b/result/relaxng/tutor10_1_5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_5
diff --git a/result/relaxng/tutor10_1_5.err b/result/relaxng/tutor10_1_5.err
new file mode 100644
index 0000000..2ab8d90
--- /dev/null
+++ b/result/relaxng/tutor10_1_5.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_1_5.xml:1: element foo: Relax-NG validity error : Element foo has wrong namespace: expecting http://www.example.com
+./test/relaxng/tutor10_1_5.xml fails to validate
diff --git a/result/relaxng/tutor10_1_6 b/result/relaxng/tutor10_1_6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_6
diff --git a/result/relaxng/tutor10_1_6.err b/result/relaxng/tutor10_1_6.err
new file mode 100644
index 0000000..cafeb15
--- /dev/null
+++ b/result/relaxng/tutor10_1_6.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_1_6.xml:1: element foo: Relax-NG validity error : Element foo has wrong namespace: expecting http://www.example.com
+./test/relaxng/tutor10_1_6.xml fails to validate
diff --git a/result/relaxng/tutor10_1_err b/result/relaxng/tutor10_1_err
new file mode 100644
index 0000000..85be3be
--- /dev/null
+++ b/result/relaxng/tutor10_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_1.rng validates
diff --git a/result/relaxng/tutor10_1_valid b/result/relaxng/tutor10_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_1_valid
diff --git a/result/relaxng/tutor10_2_1 b/result/relaxng/tutor10_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_2_1
diff --git a/result/relaxng/tutor10_2_1.err b/result/relaxng/tutor10_2_1.err
new file mode 100644
index 0000000..836dbf7
--- /dev/null
+++ b/result/relaxng/tutor10_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_2_1.xml validates
diff --git a/result/relaxng/tutor10_2_2 b/result/relaxng/tutor10_2_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_2_2
diff --git a/result/relaxng/tutor10_2_2.err b/result/relaxng/tutor10_2_2.err
new file mode 100644
index 0000000..7e6ce31
--- /dev/null
+++ b/result/relaxng/tutor10_2_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_2_2.xml validates
diff --git a/result/relaxng/tutor10_2_3 b/result/relaxng/tutor10_2_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_2_3
diff --git a/result/relaxng/tutor10_2_3.err b/result/relaxng/tutor10_2_3.err
new file mode 100644
index 0000000..2ff2a82
--- /dev/null
+++ b/result/relaxng/tutor10_2_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_2_3.xml:1: element foo: Relax-NG validity error : Expecting no namespace for element foo
+./test/relaxng/tutor10_2_3.xml fails to validate
diff --git a/result/relaxng/tutor10_2_4 b/result/relaxng/tutor10_2_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_2_4
diff --git a/result/relaxng/tutor10_2_4.err b/result/relaxng/tutor10_2_4.err
new file mode 100644
index 0000000..d716b9b
--- /dev/null
+++ b/result/relaxng/tutor10_2_4.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_2_4.xml:1: element foo: Relax-NG validity error : Expecting no namespace for element foo
+./test/relaxng/tutor10_2_4.xml fails to validate
diff --git a/result/relaxng/tutor10_2_err b/result/relaxng/tutor10_2_err
new file mode 100644
index 0000000..b3e32a6
--- /dev/null
+++ b/result/relaxng/tutor10_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_2.rng validates
diff --git a/result/relaxng/tutor10_2_valid b/result/relaxng/tutor10_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_2_valid
diff --git a/result/relaxng/tutor10_3_1 b/result/relaxng/tutor10_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_3_1
diff --git a/result/relaxng/tutor10_3_1.err b/result/relaxng/tutor10_3_1.err
new file mode 100644
index 0000000..5f9a3b0
--- /dev/null
+++ b/result/relaxng/tutor10_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_3_1.xml validates
diff --git a/result/relaxng/tutor10_3_err b/result/relaxng/tutor10_3_err
new file mode 100644
index 0000000..3c714aa
--- /dev/null
+++ b/result/relaxng/tutor10_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_3.rng validates
diff --git a/result/relaxng/tutor10_3_valid b/result/relaxng/tutor10_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_3_valid
diff --git a/result/relaxng/tutor10_4_1 b/result/relaxng/tutor10_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_4_1
diff --git a/result/relaxng/tutor10_4_1.err b/result/relaxng/tutor10_4_1.err
new file mode 100644
index 0000000..833c5ee
--- /dev/null
+++ b/result/relaxng/tutor10_4_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_4_1.xml validates
diff --git a/result/relaxng/tutor10_4_err b/result/relaxng/tutor10_4_err
new file mode 100644
index 0000000..3208137
--- /dev/null
+++ b/result/relaxng/tutor10_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_4.rng validates
diff --git a/result/relaxng/tutor10_4_valid b/result/relaxng/tutor10_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_4_valid
diff --git a/result/relaxng/tutor10_5_1 b/result/relaxng/tutor10_5_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_5_1
diff --git a/result/relaxng/tutor10_5_1.err b/result/relaxng/tutor10_5_1.err
new file mode 100644
index 0000000..fb0bd96
--- /dev/null
+++ b/result/relaxng/tutor10_5_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_5_1.xml validates
diff --git a/result/relaxng/tutor10_5_err b/result/relaxng/tutor10_5_err
new file mode 100644
index 0000000..49808cf
--- /dev/null
+++ b/result/relaxng/tutor10_5_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_5.rng validates
diff --git a/result/relaxng/tutor10_5_valid b/result/relaxng/tutor10_5_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_5_valid
diff --git a/result/relaxng/tutor10_6_1 b/result/relaxng/tutor10_6_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_6_1
diff --git a/result/relaxng/tutor10_6_1.err b/result/relaxng/tutor10_6_1.err
new file mode 100644
index 0000000..4fed8f7
--- /dev/null
+++ b/result/relaxng/tutor10_6_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_6_1.xml validates
diff --git a/result/relaxng/tutor10_6_err b/result/relaxng/tutor10_6_err
new file mode 100644
index 0000000..09368c1
--- /dev/null
+++ b/result/relaxng/tutor10_6_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_6.rng validates
diff --git a/result/relaxng/tutor10_6_valid b/result/relaxng/tutor10_6_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_6_valid
diff --git a/result/relaxng/tutor10_7_1 b/result/relaxng/tutor10_7_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_7_1
diff --git a/result/relaxng/tutor10_7_1.err b/result/relaxng/tutor10_7_1.err
new file mode 100644
index 0000000..bbaab53
--- /dev/null
+++ b/result/relaxng/tutor10_7_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_7_1.xml validates
diff --git a/result/relaxng/tutor10_7_2 b/result/relaxng/tutor10_7_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_7_2
diff --git a/result/relaxng/tutor10_7_2.err b/result/relaxng/tutor10_7_2.err
new file mode 100644
index 0000000..f618988
--- /dev/null
+++ b/result/relaxng/tutor10_7_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_7_2.xml validates
diff --git a/result/relaxng/tutor10_7_3 b/result/relaxng/tutor10_7_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_7_3
diff --git a/result/relaxng/tutor10_7_3.err b/result/relaxng/tutor10_7_3.err
new file mode 100644
index 0000000..913dfaf
--- /dev/null
+++ b/result/relaxng/tutor10_7_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_7_3.xml:2: element card: Relax-NG validity error : Element card failed to validate attributes
+./test/relaxng/tutor10_7_3.xml fails to validate
diff --git a/result/relaxng/tutor10_7_err b/result/relaxng/tutor10_7_err
new file mode 100644
index 0000000..081a230
--- /dev/null
+++ b/result/relaxng/tutor10_7_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_7.rng validates
diff --git a/result/relaxng/tutor10_7_valid b/result/relaxng/tutor10_7_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_7_valid
diff --git a/result/relaxng/tutor10_8_1 b/result/relaxng/tutor10_8_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_8_1
diff --git a/result/relaxng/tutor10_8_1.err b/result/relaxng/tutor10_8_1.err
new file mode 100644
index 0000000..2412108
--- /dev/null
+++ b/result/relaxng/tutor10_8_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_8_1.xml validates
diff --git a/result/relaxng/tutor10_8_2 b/result/relaxng/tutor10_8_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_8_2
diff --git a/result/relaxng/tutor10_8_2.err b/result/relaxng/tutor10_8_2.err
new file mode 100644
index 0000000..6becf86
--- /dev/null
+++ b/result/relaxng/tutor10_8_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_8_2.xml validates
diff --git a/result/relaxng/tutor10_8_3 b/result/relaxng/tutor10_8_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_8_3
diff --git a/result/relaxng/tutor10_8_3.err b/result/relaxng/tutor10_8_3.err
new file mode 100644
index 0000000..ee0eb55
--- /dev/null
+++ b/result/relaxng/tutor10_8_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor10_8_3.xml:2: element card: Relax-NG validity error : Element card failed to validate attributes
+./test/relaxng/tutor10_8_3.xml fails to validate
diff --git a/result/relaxng/tutor10_8_err b/result/relaxng/tutor10_8_err
new file mode 100644
index 0000000..1a864cc
--- /dev/null
+++ b/result/relaxng/tutor10_8_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_8.rng validates
diff --git a/result/relaxng/tutor10_8_valid b/result/relaxng/tutor10_8_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_8_valid
diff --git a/result/relaxng/tutor10_9_1 b/result/relaxng/tutor10_9_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_9_1
diff --git a/result/relaxng/tutor10_9_1.err b/result/relaxng/tutor10_9_1.err
new file mode 100644
index 0000000..3e82887
--- /dev/null
+++ b/result/relaxng/tutor10_9_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_9_1.xml validates
diff --git a/result/relaxng/tutor10_9_err b/result/relaxng/tutor10_9_err
new file mode 100644
index 0000000..942058e
--- /dev/null
+++ b/result/relaxng/tutor10_9_err
@@ -0,0 +1 @@
+./test/relaxng/tutor10_9.rng validates
diff --git a/result/relaxng/tutor10_9_valid b/result/relaxng/tutor10_9_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor10_9_valid
diff --git a/result/relaxng/tutor11_1_1 b/result/relaxng/tutor11_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_1_1
diff --git a/result/relaxng/tutor11_1_1.err b/result/relaxng/tutor11_1_1.err
new file mode 100644
index 0000000..a8283fa
--- /dev/null
+++ b/result/relaxng/tutor11_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_1_1.xml validates
diff --git a/result/relaxng/tutor11_1_2 b/result/relaxng/tutor11_1_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_1_2
diff --git a/result/relaxng/tutor11_1_2.err b/result/relaxng/tutor11_1_2.err
new file mode 100644
index 0000000..72a72fa
--- /dev/null
+++ b/result/relaxng/tutor11_1_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_1_2.xml validates
diff --git a/result/relaxng/tutor11_1_3 b/result/relaxng/tutor11_1_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_1_3
diff --git a/result/relaxng/tutor11_1_3.err b/result/relaxng/tutor11_1_3.err
new file mode 100644
index 0000000..4c19cc9
--- /dev/null
+++ b/result/relaxng/tutor11_1_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_1_3.xml validates
diff --git a/result/relaxng/tutor11_1_err b/result/relaxng/tutor11_1_err
new file mode 100644
index 0000000..88347fe
--- /dev/null
+++ b/result/relaxng/tutor11_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_1.rng validates
diff --git a/result/relaxng/tutor11_1_valid b/result/relaxng/tutor11_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_1_valid
diff --git a/result/relaxng/tutor11_2_1 b/result/relaxng/tutor11_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_2_1
diff --git a/result/relaxng/tutor11_2_1.err b/result/relaxng/tutor11_2_1.err
new file mode 100644
index 0000000..eec60ec
--- /dev/null
+++ b/result/relaxng/tutor11_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_2_1.xml validates
diff --git a/result/relaxng/tutor11_2_2 b/result/relaxng/tutor11_2_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_2_2
diff --git a/result/relaxng/tutor11_2_2.err b/result/relaxng/tutor11_2_2.err
new file mode 100644
index 0000000..f0abba0
--- /dev/null
+++ b/result/relaxng/tutor11_2_2.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor11_2_2.xml:3: element card: Relax-NG validity error : Invalid attribute foo for element card
+./test/relaxng/tutor11_2_2.xml fails to validate
diff --git a/result/relaxng/tutor11_2_3 b/result/relaxng/tutor11_2_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_2_3
diff --git a/result/relaxng/tutor11_2_3.err b/result/relaxng/tutor11_2_3.err
new file mode 100644
index 0000000..f07ea78
--- /dev/null
+++ b/result/relaxng/tutor11_2_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor11_2_3.xml:3: element card: Relax-NG validity error : Invalid attribute b for element card
+./test/relaxng/tutor11_2_3.xml fails to validate
diff --git a/result/relaxng/tutor11_2_err b/result/relaxng/tutor11_2_err
new file mode 100644
index 0000000..3294c13
--- /dev/null
+++ b/result/relaxng/tutor11_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_2.rng validates
diff --git a/result/relaxng/tutor11_2_valid b/result/relaxng/tutor11_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_2_valid
diff --git a/result/relaxng/tutor11_3_1 b/result/relaxng/tutor11_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_3_1
diff --git a/result/relaxng/tutor11_3_1.err b/result/relaxng/tutor11_3_1.err
new file mode 100644
index 0000000..de9db32
--- /dev/null
+++ b/result/relaxng/tutor11_3_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor11_3.rng:1: element element: Relax-NG parser error : Attributes conflicts in group
+Relax-NG schema ./test/relaxng/tutor11_3.rng failed to compile
diff --git a/result/relaxng/tutor11_3_err b/result/relaxng/tutor11_3_err
new file mode 100644
index 0000000..14d9d44
--- /dev/null
+++ b/result/relaxng/tutor11_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_3.rng validates
diff --git a/result/relaxng/tutor11_3_valid b/result/relaxng/tutor11_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_3_valid
diff --git a/result/relaxng/tutor11_4_1 b/result/relaxng/tutor11_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_4_1
diff --git a/result/relaxng/tutor11_4_1.err b/result/relaxng/tutor11_4_1.err
new file mode 100644
index 0000000..16aed5c
--- /dev/null
+++ b/result/relaxng/tutor11_4_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_4_1.xml validates
diff --git a/result/relaxng/tutor11_4_err b/result/relaxng/tutor11_4_err
new file mode 100644
index 0000000..f0a8339
--- /dev/null
+++ b/result/relaxng/tutor11_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor11_4.rng validates
diff --git a/result/relaxng/tutor11_4_valid b/result/relaxng/tutor11_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor11_4_valid
diff --git a/result/relaxng/tutor12_1_1 b/result/relaxng/tutor12_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor12_1_1
diff --git a/result/relaxng/tutor12_1_1.err b/result/relaxng/tutor12_1_1.err
new file mode 100644
index 0000000..aab20d3
--- /dev/null
+++ b/result/relaxng/tutor12_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor12_1_1.xml validates
diff --git a/result/relaxng/tutor12_1_err b/result/relaxng/tutor12_1_err
new file mode 100644
index 0000000..a02fb41
--- /dev/null
+++ b/result/relaxng/tutor12_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor12_1.rng validates
diff --git a/result/relaxng/tutor12_1_valid b/result/relaxng/tutor12_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor12_1_valid
diff --git a/result/relaxng/tutor13_1_1 b/result/relaxng/tutor13_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor13_1_1
diff --git a/result/relaxng/tutor13_1_1.err b/result/relaxng/tutor13_1_1.err
new file mode 100644
index 0000000..3a3f2ae
--- /dev/null
+++ b/result/relaxng/tutor13_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor13_1_1.xml validates
diff --git a/result/relaxng/tutor13_1_err b/result/relaxng/tutor13_1_err
new file mode 100644
index 0000000..ccd11ad
--- /dev/null
+++ b/result/relaxng/tutor13_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor13_1.rng validates
diff --git a/result/relaxng/tutor13_1_valid b/result/relaxng/tutor13_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor13_1_valid
diff --git a/result/relaxng/tutor14_1_err b/result/relaxng/tutor14_1_err
new file mode 100644
index 0000000..191ec3d
--- /dev/null
+++ b/result/relaxng/tutor14_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor14_1.rng validates
diff --git a/result/relaxng/tutor14_1_valid b/result/relaxng/tutor14_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor14_1_valid
diff --git a/result/relaxng/tutor1_1_1 b/result/relaxng/tutor1_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_1_1
diff --git a/result/relaxng/tutor1_1_1.err b/result/relaxng/tutor1_1_1.err
new file mode 100644
index 0000000..b6767f2
--- /dev/null
+++ b/result/relaxng/tutor1_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_1_1.xml validates
diff --git a/result/relaxng/tutor1_1_err b/result/relaxng/tutor1_1_err
new file mode 100644
index 0000000..d7cbfe8
--- /dev/null
+++ b/result/relaxng/tutor1_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_1.rng validates
diff --git a/result/relaxng/tutor1_1_valid b/result/relaxng/tutor1_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_1_valid
diff --git a/result/relaxng/tutor1_2_1 b/result/relaxng/tutor1_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_2_1
diff --git a/result/relaxng/tutor1_2_1.err b/result/relaxng/tutor1_2_1.err
new file mode 100644
index 0000000..2dc3698
--- /dev/null
+++ b/result/relaxng/tutor1_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_2_1.xml validates
diff --git a/result/relaxng/tutor1_2_err b/result/relaxng/tutor1_2_err
new file mode 100644
index 0000000..97d32b2
--- /dev/null
+++ b/result/relaxng/tutor1_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_2.rng validates
diff --git a/result/relaxng/tutor1_2_valid b/result/relaxng/tutor1_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_2_valid
diff --git a/result/relaxng/tutor1_3_1 b/result/relaxng/tutor1_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_3_1
diff --git a/result/relaxng/tutor1_3_1.err b/result/relaxng/tutor1_3_1.err
new file mode 100644
index 0000000..9c116d8
--- /dev/null
+++ b/result/relaxng/tutor1_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_3_1.xml validates
diff --git a/result/relaxng/tutor1_3_err b/result/relaxng/tutor1_3_err
new file mode 100644
index 0000000..4941f8f
--- /dev/null
+++ b/result/relaxng/tutor1_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_3.rng validates
diff --git a/result/relaxng/tutor1_3_valid b/result/relaxng/tutor1_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_3_valid
diff --git a/result/relaxng/tutor1_4_1 b/result/relaxng/tutor1_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_4_1
diff --git a/result/relaxng/tutor1_4_1.err b/result/relaxng/tutor1_4_1.err
new file mode 100644
index 0000000..9dc35e6
--- /dev/null
+++ b/result/relaxng/tutor1_4_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_4_1.xml validates
diff --git a/result/relaxng/tutor1_4_err b/result/relaxng/tutor1_4_err
new file mode 100644
index 0000000..a1fd60c
--- /dev/null
+++ b/result/relaxng/tutor1_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor1_4.rng validates
diff --git a/result/relaxng/tutor1_4_valid b/result/relaxng/tutor1_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor1_4_valid
diff --git a/result/relaxng/tutor2_1_1 b/result/relaxng/tutor2_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor2_1_1
diff --git a/result/relaxng/tutor2_1_1.err b/result/relaxng/tutor2_1_1.err
new file mode 100644
index 0000000..5da7633
--- /dev/null
+++ b/result/relaxng/tutor2_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor2_1_1.xml validates
diff --git a/result/relaxng/tutor2_1_err b/result/relaxng/tutor2_1_err
new file mode 100644
index 0000000..df4778e
--- /dev/null
+++ b/result/relaxng/tutor2_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor2_1.rng validates
diff --git a/result/relaxng/tutor2_1_valid b/result/relaxng/tutor2_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor2_1_valid
diff --git a/result/relaxng/tutor3_1_1 b/result/relaxng/tutor3_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_1_1
diff --git a/result/relaxng/tutor3_1_1.err b/result/relaxng/tutor3_1_1.err
new file mode 100644
index 0000000..815f1f0
--- /dev/null
+++ b/result/relaxng/tutor3_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_1_1.xml validates
diff --git a/result/relaxng/tutor3_1_2 b/result/relaxng/tutor3_1_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_1_2
diff --git a/result/relaxng/tutor3_1_2.err b/result/relaxng/tutor3_1_2.err
new file mode 100644
index 0000000..e126430
--- /dev/null
+++ b/result/relaxng/tutor3_1_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_1_2.xml validates
diff --git a/result/relaxng/tutor3_1_err b/result/relaxng/tutor3_1_err
new file mode 100644
index 0000000..949ef9a
--- /dev/null
+++ b/result/relaxng/tutor3_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_1.rng validates
diff --git a/result/relaxng/tutor3_1_valid b/result/relaxng/tutor3_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_1_valid
diff --git a/result/relaxng/tutor3_2_1 b/result/relaxng/tutor3_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_2_1
diff --git a/result/relaxng/tutor3_2_1.err b/result/relaxng/tutor3_2_1.err
new file mode 100644
index 0000000..380250a
--- /dev/null
+++ b/result/relaxng/tutor3_2_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor3_2_1.xml:1: element email: Relax-NG validity error : Did not expect element email there
+./test/relaxng/tutor3_2_1.xml fails to validate
diff --git a/result/relaxng/tutor3_2_err b/result/relaxng/tutor3_2_err
new file mode 100644
index 0000000..b6cb1ad
--- /dev/null
+++ b/result/relaxng/tutor3_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_2.rng validates
diff --git a/result/relaxng/tutor3_2_valid b/result/relaxng/tutor3_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_2_valid
diff --git a/result/relaxng/tutor3_3_1 b/result/relaxng/tutor3_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_3_1
diff --git a/result/relaxng/tutor3_3_1.err b/result/relaxng/tutor3_3_1.err
new file mode 100644
index 0000000..3cd5e05
--- /dev/null
+++ b/result/relaxng/tutor3_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_3_1.xml validates
diff --git a/result/relaxng/tutor3_3_err b/result/relaxng/tutor3_3_err
new file mode 100644
index 0000000..92e83b6
--- /dev/null
+++ b/result/relaxng/tutor3_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_3.rng validates
diff --git a/result/relaxng/tutor3_3_valid b/result/relaxng/tutor3_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_3_valid
diff --git a/result/relaxng/tutor3_4_1 b/result/relaxng/tutor3_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_4_1
diff --git a/result/relaxng/tutor3_4_1.err b/result/relaxng/tutor3_4_1.err
new file mode 100644
index 0000000..62956f7
--- /dev/null
+++ b/result/relaxng/tutor3_4_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_4_1.xml validates
diff --git a/result/relaxng/tutor3_4_err b/result/relaxng/tutor3_4_err
new file mode 100644
index 0000000..61ef41f
--- /dev/null
+++ b/result/relaxng/tutor3_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_4.rng validates
diff --git a/result/relaxng/tutor3_4_valid b/result/relaxng/tutor3_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_4_valid
diff --git a/result/relaxng/tutor3_5_1 b/result/relaxng/tutor3_5_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_5_1
diff --git a/result/relaxng/tutor3_5_1.err b/result/relaxng/tutor3_5_1.err
new file mode 100644
index 0000000..715b160
--- /dev/null
+++ b/result/relaxng/tutor3_5_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_5_1.xml validates
diff --git a/result/relaxng/tutor3_5_2 b/result/relaxng/tutor3_5_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_5_2
diff --git a/result/relaxng/tutor3_5_2.err b/result/relaxng/tutor3_5_2.err
new file mode 100644
index 0000000..16e6627
--- /dev/null
+++ b/result/relaxng/tutor3_5_2.err
@@ -0,0 +1,3 @@
+./test/relaxng/tutor3_5_2.xml:2: element email: Relax-NG validity error : Expecting element name, got email
+./test/relaxng/tutor3_5_2.xml:2: element email: Relax-NG validity error : Element card failed to validate content
+./test/relaxng/tutor3_5_2.xml fails to validate
diff --git a/result/relaxng/tutor3_5_err b/result/relaxng/tutor3_5_err
new file mode 100644
index 0000000..2e36868
--- /dev/null
+++ b/result/relaxng/tutor3_5_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_5.rng validates
diff --git a/result/relaxng/tutor3_5_valid b/result/relaxng/tutor3_5_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_5_valid
diff --git a/result/relaxng/tutor3_6_1 b/result/relaxng/tutor3_6_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_6_1
diff --git a/result/relaxng/tutor3_6_1.err b/result/relaxng/tutor3_6_1.err
new file mode 100644
index 0000000..ba6456e
--- /dev/null
+++ b/result/relaxng/tutor3_6_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_6_1.xml validates
diff --git a/result/relaxng/tutor3_6_err b/result/relaxng/tutor3_6_err
new file mode 100644
index 0000000..8479bea
--- /dev/null
+++ b/result/relaxng/tutor3_6_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_6.rng validates
diff --git a/result/relaxng/tutor3_6_valid b/result/relaxng/tutor3_6_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_6_valid
diff --git a/result/relaxng/tutor3_7_1 b/result/relaxng/tutor3_7_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_7_1
diff --git a/result/relaxng/tutor3_7_1.err b/result/relaxng/tutor3_7_1.err
new file mode 100644
index 0000000..88b2132
--- /dev/null
+++ b/result/relaxng/tutor3_7_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor3_7.rng:1: element element: Relax-NG parser error : xmlRelaxNGParseElement: element has no content
+Relax-NG schema ./test/relaxng/tutor3_7.rng failed to compile
diff --git a/result/relaxng/tutor3_7_err b/result/relaxng/tutor3_7_err
new file mode 100644
index 0000000..2546132
--- /dev/null
+++ b/result/relaxng/tutor3_7_err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor3_7.rng:1: element element: Relax-NG validity error : Expecting an element , got nothing
+./test/relaxng/tutor3_7.rng:1: element element: Relax-NG validity error : Invalid sequence in interleave
+./test/relaxng/tutor3_7.rng:1: element element: Relax-NG validity error : Element element failed to validate content
+./test/relaxng/tutor3_7.rng fails to validate
diff --git a/result/relaxng/tutor3_7_valid b/result/relaxng/tutor3_7_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_7_valid
diff --git a/result/relaxng/tutor3_8_1 b/result/relaxng/tutor3_8_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_8_1
diff --git a/result/relaxng/tutor3_8_1.err b/result/relaxng/tutor3_8_1.err
new file mode 100644
index 0000000..89894a9
--- /dev/null
+++ b/result/relaxng/tutor3_8_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_8_1.xml validates
diff --git a/result/relaxng/tutor3_8_err b/result/relaxng/tutor3_8_err
new file mode 100644
index 0000000..44fe75d
--- /dev/null
+++ b/result/relaxng/tutor3_8_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_8.rng validates
diff --git a/result/relaxng/tutor3_8_valid b/result/relaxng/tutor3_8_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_8_valid
diff --git a/result/relaxng/tutor3_9_1 b/result/relaxng/tutor3_9_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_9_1
diff --git a/result/relaxng/tutor3_9_1.err b/result/relaxng/tutor3_9_1.err
new file mode 100644
index 0000000..1ee50c2
--- /dev/null
+++ b/result/relaxng/tutor3_9_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_9_1.xml validates
diff --git a/result/relaxng/tutor3_9_err b/result/relaxng/tutor3_9_err
new file mode 100644
index 0000000..d54fbe0
--- /dev/null
+++ b/result/relaxng/tutor3_9_err
@@ -0,0 +1 @@
+./test/relaxng/tutor3_9.rng validates
diff --git a/result/relaxng/tutor3_9_valid b/result/relaxng/tutor3_9_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor3_9_valid
diff --git a/result/relaxng/tutor4_1_1 b/result/relaxng/tutor4_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_1_1
diff --git a/result/relaxng/tutor4_1_1.err b/result/relaxng/tutor4_1_1.err
new file mode 100644
index 0000000..d8f436d
--- /dev/null
+++ b/result/relaxng/tutor4_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_1_1.xml validates
diff --git a/result/relaxng/tutor4_1_err b/result/relaxng/tutor4_1_err
new file mode 100644
index 0000000..94f0289
--- /dev/null
+++ b/result/relaxng/tutor4_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_1.rng validates
diff --git a/result/relaxng/tutor4_1_valid b/result/relaxng/tutor4_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_1_valid
diff --git a/result/relaxng/tutor4_2_1 b/result/relaxng/tutor4_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_2_1
diff --git a/result/relaxng/tutor4_2_1.err b/result/relaxng/tutor4_2_1.err
new file mode 100644
index 0000000..d44dcb8
--- /dev/null
+++ b/result/relaxng/tutor4_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_2_1.xml validates
diff --git a/result/relaxng/tutor4_2_err b/result/relaxng/tutor4_2_err
new file mode 100644
index 0000000..82085d0
--- /dev/null
+++ b/result/relaxng/tutor4_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_2.rng validates
diff --git a/result/relaxng/tutor4_2_valid b/result/relaxng/tutor4_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_2_valid
diff --git a/result/relaxng/tutor4_3_1 b/result/relaxng/tutor4_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_1
diff --git a/result/relaxng/tutor4_3_1.err b/result/relaxng/tutor4_3_1.err
new file mode 100644
index 0000000..7ff3afe
--- /dev/null
+++ b/result/relaxng/tutor4_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3_1.xml validates
diff --git a/result/relaxng/tutor4_3_2 b/result/relaxng/tutor4_3_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_2
diff --git a/result/relaxng/tutor4_3_2.err b/result/relaxng/tutor4_3_2.err
new file mode 100644
index 0000000..d3eeffd
--- /dev/null
+++ b/result/relaxng/tutor4_3_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3_2.xml validates
diff --git a/result/relaxng/tutor4_3_3 b/result/relaxng/tutor4_3_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_3
diff --git a/result/relaxng/tutor4_3_3.err b/result/relaxng/tutor4_3_3.err
new file mode 100644
index 0000000..5ae9811
--- /dev/null
+++ b/result/relaxng/tutor4_3_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3_3.xml validates
diff --git a/result/relaxng/tutor4_3_4 b/result/relaxng/tutor4_3_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_4
diff --git a/result/relaxng/tutor4_3_4.err b/result/relaxng/tutor4_3_4.err
new file mode 100644
index 0000000..e550043
--- /dev/null
+++ b/result/relaxng/tutor4_3_4.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3_4.xml validates
diff --git a/result/relaxng/tutor4_3_5 b/result/relaxng/tutor4_3_5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_5
diff --git a/result/relaxng/tutor4_3_5.err b/result/relaxng/tutor4_3_5.err
new file mode 100644
index 0000000..cf76480
--- /dev/null
+++ b/result/relaxng/tutor4_3_5.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3_5.xml validates
diff --git a/result/relaxng/tutor4_3_6 b/result/relaxng/tutor4_3_6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_6
diff --git a/result/relaxng/tutor4_3_6.err b/result/relaxng/tutor4_3_6.err
new file mode 100644
index 0000000..df80a81
--- /dev/null
+++ b/result/relaxng/tutor4_3_6.err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3_6.xml validates
diff --git a/result/relaxng/tutor4_3_err b/result/relaxng/tutor4_3_err
new file mode 100644
index 0000000..74eb8b2
--- /dev/null
+++ b/result/relaxng/tutor4_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_3.rng validates
diff --git a/result/relaxng/tutor4_3_valid b/result/relaxng/tutor4_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_3_valid
diff --git a/result/relaxng/tutor4_4_1 b/result/relaxng/tutor4_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_4_1
diff --git a/result/relaxng/tutor4_4_1.err b/result/relaxng/tutor4_4_1.err
new file mode 100644
index 0000000..595bd6e
--- /dev/null
+++ b/result/relaxng/tutor4_4_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor4_4.rng:25: element ref: Relax-NG parser error : Detected a cycle in inline references
+Relax-NG schema ./test/relaxng/tutor4_4.rng failed to compile
diff --git a/result/relaxng/tutor4_4_err b/result/relaxng/tutor4_4_err
new file mode 100644
index 0000000..641ee87
--- /dev/null
+++ b/result/relaxng/tutor4_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor4_4.rng validates
diff --git a/result/relaxng/tutor4_4_valid b/result/relaxng/tutor4_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor4_4_valid
diff --git a/result/relaxng/tutor5_1_1 b/result/relaxng/tutor5_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_1_1
diff --git a/result/relaxng/tutor5_1_1.err b/result/relaxng/tutor5_1_1.err
new file mode 100644
index 0000000..e6c2842
--- /dev/null
+++ b/result/relaxng/tutor5_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_1_1.xml validates
diff --git a/result/relaxng/tutor5_1_err b/result/relaxng/tutor5_1_err
new file mode 100644
index 0000000..586fd98
--- /dev/null
+++ b/result/relaxng/tutor5_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_1.rng validates
diff --git a/result/relaxng/tutor5_1_valid b/result/relaxng/tutor5_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_1_valid
diff --git a/result/relaxng/tutor5_2_1 b/result/relaxng/tutor5_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_2_1
diff --git a/result/relaxng/tutor5_2_1.err b/result/relaxng/tutor5_2_1.err
new file mode 100644
index 0000000..a64df3b
--- /dev/null
+++ b/result/relaxng/tutor5_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_2_1.xml validates
diff --git a/result/relaxng/tutor5_2_err b/result/relaxng/tutor5_2_err
new file mode 100644
index 0000000..de8f423
--- /dev/null
+++ b/result/relaxng/tutor5_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_2.rng validates
diff --git a/result/relaxng/tutor5_2_valid b/result/relaxng/tutor5_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_2_valid
diff --git a/result/relaxng/tutor5_3_1 b/result/relaxng/tutor5_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_3_1
diff --git a/result/relaxng/tutor5_3_1.err b/result/relaxng/tutor5_3_1.err
new file mode 100644
index 0000000..72f4379
--- /dev/null
+++ b/result/relaxng/tutor5_3_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor5_3.rng:1: element element: Relax-NG parser error : Element bad has a content type error
+Relax-NG schema ./test/relaxng/tutor5_3.rng failed to compile
diff --git a/result/relaxng/tutor5_3_err b/result/relaxng/tutor5_3_err
new file mode 100644
index 0000000..f00a543
--- /dev/null
+++ b/result/relaxng/tutor5_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_3.rng validates
diff --git a/result/relaxng/tutor5_3_valid b/result/relaxng/tutor5_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_3_valid
diff --git a/result/relaxng/tutor5_4_1 b/result/relaxng/tutor5_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_4_1
diff --git a/result/relaxng/tutor5_4_1.err b/result/relaxng/tutor5_4_1.err
new file mode 100644
index 0000000..13ac9bc
--- /dev/null
+++ b/result/relaxng/tutor5_4_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_4_1.xml validates
diff --git a/result/relaxng/tutor5_4_err b/result/relaxng/tutor5_4_err
new file mode 100644
index 0000000..669b41d
--- /dev/null
+++ b/result/relaxng/tutor5_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_4.rng validates
diff --git a/result/relaxng/tutor5_4_valid b/result/relaxng/tutor5_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_4_valid
diff --git a/result/relaxng/tutor5_5_err b/result/relaxng/tutor5_5_err
new file mode 100644
index 0000000..4f9f0f5
--- /dev/null
+++ b/result/relaxng/tutor5_5_err
@@ -0,0 +1 @@
+./test/relaxng/tutor5_5.rng validates
diff --git a/result/relaxng/tutor5_5_valid b/result/relaxng/tutor5_5_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor5_5_valid
diff --git a/result/relaxng/tutor6_1_1 b/result/relaxng/tutor6_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_1_1
diff --git a/result/relaxng/tutor6_1_1.err b/result/relaxng/tutor6_1_1.err
new file mode 100644
index 0000000..3c44662
--- /dev/null
+++ b/result/relaxng/tutor6_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_1_1.xml validates
diff --git a/result/relaxng/tutor6_1_2 b/result/relaxng/tutor6_1_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_1_2
diff --git a/result/relaxng/tutor6_1_2.err b/result/relaxng/tutor6_1_2.err
new file mode 100644
index 0000000..6c70fed
--- /dev/null
+++ b/result/relaxng/tutor6_1_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_1_2.xml validates
diff --git a/result/relaxng/tutor6_1_3 b/result/relaxng/tutor6_1_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_1_3
diff --git a/result/relaxng/tutor6_1_3.err b/result/relaxng/tutor6_1_3.err
new file mode 100644
index 0000000..f0f6e7f
--- /dev/null
+++ b/result/relaxng/tutor6_1_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor6_1_3.xml:1: element card: Relax-NG validity error : Element card failed to validate attributes
+./test/relaxng/tutor6_1_3.xml fails to validate
diff --git a/result/relaxng/tutor6_1_4 b/result/relaxng/tutor6_1_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_1_4
diff --git a/result/relaxng/tutor6_1_4.err b/result/relaxng/tutor6_1_4.err
new file mode 100644
index 0000000..d9b2291
--- /dev/null
+++ b/result/relaxng/tutor6_1_4.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_1_4.xml validates
diff --git a/result/relaxng/tutor6_1_5 b/result/relaxng/tutor6_1_5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_1_5
diff --git a/result/relaxng/tutor6_1_5.err b/result/relaxng/tutor6_1_5.err
new file mode 100644
index 0000000..f601d7e
--- /dev/null
+++ b/result/relaxng/tutor6_1_5.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_1_5.xml validates
diff --git a/result/relaxng/tutor6_1_err b/result/relaxng/tutor6_1_err
new file mode 100644
index 0000000..7440829
--- /dev/null
+++ b/result/relaxng/tutor6_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_1.rng validates
diff --git a/result/relaxng/tutor6_1_valid b/result/relaxng/tutor6_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_1_valid
diff --git a/result/relaxng/tutor6_2_1 b/result/relaxng/tutor6_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_2_1
diff --git a/result/relaxng/tutor6_2_1.err b/result/relaxng/tutor6_2_1.err
new file mode 100644
index 0000000..d07807b
--- /dev/null
+++ b/result/relaxng/tutor6_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_2_1.xml validates
diff --git a/result/relaxng/tutor6_2_2 b/result/relaxng/tutor6_2_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_2_2
diff --git a/result/relaxng/tutor6_2_2.err b/result/relaxng/tutor6_2_2.err
new file mode 100644
index 0000000..df10075
--- /dev/null
+++ b/result/relaxng/tutor6_2_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_2_2.xml validates
diff --git a/result/relaxng/tutor6_2_3 b/result/relaxng/tutor6_2_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_2_3
diff --git a/result/relaxng/tutor6_2_3.err b/result/relaxng/tutor6_2_3.err
new file mode 100644
index 0000000..17602d3
--- /dev/null
+++ b/result/relaxng/tutor6_2_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_2_3.xml validates
diff --git a/result/relaxng/tutor6_2_4 b/result/relaxng/tutor6_2_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_2_4
diff --git a/result/relaxng/tutor6_2_4.err b/result/relaxng/tutor6_2_4.err
new file mode 100644
index 0000000..b28ac23
--- /dev/null
+++ b/result/relaxng/tutor6_2_4.err
@@ -0,0 +1,3 @@
+./test/relaxng/tutor6_2_4.xml:4: element preferredFormat: Relax-NG validity error : Error validating value
+./test/relaxng/tutor6_2_4.xml:4: element preferredFormat: Relax-NG validity error : Element preferredFormat failed to validate content
+./test/relaxng/tutor6_2_4.xml fails to validate
diff --git a/result/relaxng/tutor6_2_err b/result/relaxng/tutor6_2_err
new file mode 100644
index 0000000..ba78ec9
--- /dev/null
+++ b/result/relaxng/tutor6_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_2.rng validates
diff --git a/result/relaxng/tutor6_2_valid b/result/relaxng/tutor6_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_2_valid
diff --git a/result/relaxng/tutor6_3_1 b/result/relaxng/tutor6_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_3_1
diff --git a/result/relaxng/tutor6_3_1.err b/result/relaxng/tutor6_3_1.err
new file mode 100644
index 0000000..91f721a
--- /dev/null
+++ b/result/relaxng/tutor6_3_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor6_3_1.xml:1: element card: Relax-NG validity error : Element card failed to validate attributes
+./test/relaxng/tutor6_3_1.xml fails to validate
diff --git a/result/relaxng/tutor6_3_err b/result/relaxng/tutor6_3_err
new file mode 100644
index 0000000..35dbe51
--- /dev/null
+++ b/result/relaxng/tutor6_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor6_3.rng validates
diff --git a/result/relaxng/tutor6_3_valid b/result/relaxng/tutor6_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor6_3_valid
diff --git a/result/relaxng/tutor7_1_1 b/result/relaxng/tutor7_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_1_1
diff --git a/result/relaxng/tutor7_1_1.err b/result/relaxng/tutor7_1_1.err
new file mode 100644
index 0000000..6cae548
--- /dev/null
+++ b/result/relaxng/tutor7_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_1_1.xml validates
diff --git a/result/relaxng/tutor7_1_2 b/result/relaxng/tutor7_1_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_1_2
diff --git a/result/relaxng/tutor7_1_2.err b/result/relaxng/tutor7_1_2.err
new file mode 100644
index 0000000..395f407
--- /dev/null
+++ b/result/relaxng/tutor7_1_2.err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor7_1_2.xml:1: element vector: Relax-NG validity error : failed to validate type float
+./test/relaxng/tutor7_1_2.xml:1: element vector: Relax-NG validity error : Error validating list
+./test/relaxng/tutor7_1_2.xml:1: element vector: Relax-NG validity error : Element vector failed to validate content
+./test/relaxng/tutor7_1_2.xml fails to validate
diff --git a/result/relaxng/tutor7_1_3 b/result/relaxng/tutor7_1_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_1_3
diff --git a/result/relaxng/tutor7_1_3.err b/result/relaxng/tutor7_1_3.err
new file mode 100644
index 0000000..90fb8f9
--- /dev/null
+++ b/result/relaxng/tutor7_1_3.err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor7_1_3.xml:1: element vector: Relax-NG validity error : Extra data in list: 5.6
+./test/relaxng/tutor7_1_3.xml:1: element vector: Relax-NG validity error : Error validating list
+./test/relaxng/tutor7_1_3.xml:1: element vector: Relax-NG validity error : Element vector failed to validate content
+./test/relaxng/tutor7_1_3.xml fails to validate
diff --git a/result/relaxng/tutor7_1_4 b/result/relaxng/tutor7_1_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_1_4
diff --git a/result/relaxng/tutor7_1_4.err b/result/relaxng/tutor7_1_4.err
new file mode 100644
index 0000000..81b9f58
--- /dev/null
+++ b/result/relaxng/tutor7_1_4.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_1_4.xml validates
diff --git a/result/relaxng/tutor7_1_err b/result/relaxng/tutor7_1_err
new file mode 100644
index 0000000..03d273f
--- /dev/null
+++ b/result/relaxng/tutor7_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_1.rng validates
diff --git a/result/relaxng/tutor7_1_valid b/result/relaxng/tutor7_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_1_valid
diff --git a/result/relaxng/tutor7_2_1 b/result/relaxng/tutor7_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_2_1
diff --git a/result/relaxng/tutor7_2_1.err b/result/relaxng/tutor7_2_1.err
new file mode 100644
index 0000000..8673462
--- /dev/null
+++ b/result/relaxng/tutor7_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_2_1.xml validates
diff --git a/result/relaxng/tutor7_2_2 b/result/relaxng/tutor7_2_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_2_2
diff --git a/result/relaxng/tutor7_2_2.err b/result/relaxng/tutor7_2_2.err
new file mode 100644
index 0000000..d03cb32
--- /dev/null
+++ b/result/relaxng/tutor7_2_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_2_2.xml validates
diff --git a/result/relaxng/tutor7_2_3 b/result/relaxng/tutor7_2_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_2_3
diff --git a/result/relaxng/tutor7_2_3.err b/result/relaxng/tutor7_2_3.err
new file mode 100644
index 0000000..baf1190
--- /dev/null
+++ b/result/relaxng/tutor7_2_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_2_3.xml validates
diff --git a/result/relaxng/tutor7_2_4 b/result/relaxng/tutor7_2_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_2_4
diff --git a/result/relaxng/tutor7_2_4.err b/result/relaxng/tutor7_2_4.err
new file mode 100644
index 0000000..b1c22a8
--- /dev/null
+++ b/result/relaxng/tutor7_2_4.err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor7_2_4.xml:1: element vector: Relax-NG validity error : failed to validate type double
+./test/relaxng/tutor7_2_4.xml:1: element vector: Relax-NG validity error : Error validating list
+./test/relaxng/tutor7_2_4.xml:1: element vector: Relax-NG validity error : Element vector failed to validate content
+./test/relaxng/tutor7_2_4.xml fails to validate
diff --git a/result/relaxng/tutor7_2_err b/result/relaxng/tutor7_2_err
new file mode 100644
index 0000000..cec5245
--- /dev/null
+++ b/result/relaxng/tutor7_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_2.rng validates
diff --git a/result/relaxng/tutor7_2_valid b/result/relaxng/tutor7_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_2_valid
diff --git a/result/relaxng/tutor7_3_1 b/result/relaxng/tutor7_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_3_1
diff --git a/result/relaxng/tutor7_3_1.err b/result/relaxng/tutor7_3_1.err
new file mode 100644
index 0000000..e096b53
--- /dev/null
+++ b/result/relaxng/tutor7_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_3_1.xml validates
diff --git a/result/relaxng/tutor7_3_2 b/result/relaxng/tutor7_3_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_3_2
diff --git a/result/relaxng/tutor7_3_2.err b/result/relaxng/tutor7_3_2.err
new file mode 100644
index 0000000..24e394d
--- /dev/null
+++ b/result/relaxng/tutor7_3_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_3_2.xml validates
diff --git a/result/relaxng/tutor7_3_3 b/result/relaxng/tutor7_3_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_3_3
diff --git a/result/relaxng/tutor7_3_3.err b/result/relaxng/tutor7_3_3.err
new file mode 100644
index 0000000..4919675
--- /dev/null
+++ b/result/relaxng/tutor7_3_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_3_3.xml validates
diff --git a/result/relaxng/tutor7_3_4 b/result/relaxng/tutor7_3_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_3_4
diff --git a/result/relaxng/tutor7_3_4.err b/result/relaxng/tutor7_3_4.err
new file mode 100644
index 0000000..70531e4
--- /dev/null
+++ b/result/relaxng/tutor7_3_4.err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor7_3_4.xml:1: element path: Relax-NG validity error : Extra data in list: 5.6
+./test/relaxng/tutor7_3_4.xml:1: element path: Relax-NG validity error : Error validating list
+./test/relaxng/tutor7_3_4.xml:1: element path: Relax-NG validity error : Element path failed to validate content
+./test/relaxng/tutor7_3_4.xml fails to validate
diff --git a/result/relaxng/tutor7_3_5 b/result/relaxng/tutor7_3_5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_3_5
diff --git a/result/relaxng/tutor7_3_5.err b/result/relaxng/tutor7_3_5.err
new file mode 100644
index 0000000..601a68b
--- /dev/null
+++ b/result/relaxng/tutor7_3_5.err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor7_3_5.xml:1: element path: Relax-NG validity error : failed to validate type double
+./test/relaxng/tutor7_3_5.xml:1: element path: Relax-NG validity error : Error validating list
+./test/relaxng/tutor7_3_5.xml:1: element path: Relax-NG validity error : Element path failed to validate content
+./test/relaxng/tutor7_3_5.xml fails to validate
diff --git a/result/relaxng/tutor7_3_err b/result/relaxng/tutor7_3_err
new file mode 100644
index 0000000..9f1c5a3
--- /dev/null
+++ b/result/relaxng/tutor7_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor7_3.rng validates
diff --git a/result/relaxng/tutor7_3_valid b/result/relaxng/tutor7_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor7_3_valid
diff --git a/result/relaxng/tutor8_1_1 b/result/relaxng/tutor8_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_1_1
diff --git a/result/relaxng/tutor8_1_1.err b/result/relaxng/tutor8_1_1.err
new file mode 100644
index 0000000..578c396
--- /dev/null
+++ b/result/relaxng/tutor8_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_1_1.xml validates
diff --git a/result/relaxng/tutor8_1_2 b/result/relaxng/tutor8_1_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_1_2
diff --git a/result/relaxng/tutor8_1_2.err b/result/relaxng/tutor8_1_2.err
new file mode 100644
index 0000000..11c1611
--- /dev/null
+++ b/result/relaxng/tutor8_1_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_1_2.xml validates
diff --git a/result/relaxng/tutor8_1_err b/result/relaxng/tutor8_1_err
new file mode 100644
index 0000000..a4f6ce5
--- /dev/null
+++ b/result/relaxng/tutor8_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_1.rng validates
diff --git a/result/relaxng/tutor8_1_valid b/result/relaxng/tutor8_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_1_valid
diff --git a/result/relaxng/tutor8_2_1 b/result/relaxng/tutor8_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_1
diff --git a/result/relaxng/tutor8_2_1.err b/result/relaxng/tutor8_2_1.err
new file mode 100644
index 0000000..4c6b3d4
--- /dev/null
+++ b/result/relaxng/tutor8_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_2_1.xml validates
diff --git a/result/relaxng/tutor8_2_2 b/result/relaxng/tutor8_2_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_2
diff --git a/result/relaxng/tutor8_2_2.err b/result/relaxng/tutor8_2_2.err
new file mode 100644
index 0000000..7f959b9
--- /dev/null
+++ b/result/relaxng/tutor8_2_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_2_2.xml validates
diff --git a/result/relaxng/tutor8_2_3 b/result/relaxng/tutor8_2_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_3
diff --git a/result/relaxng/tutor8_2_3.err b/result/relaxng/tutor8_2_3.err
new file mode 100644
index 0000000..21abe93
--- /dev/null
+++ b/result/relaxng/tutor8_2_3.err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_2_3.xml validates
diff --git a/result/relaxng/tutor8_2_4 b/result/relaxng/tutor8_2_4
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_4
diff --git a/result/relaxng/tutor8_2_4.err b/result/relaxng/tutor8_2_4.err
new file mode 100644
index 0000000..40a08b4
--- /dev/null
+++ b/result/relaxng/tutor8_2_4.err
@@ -0,0 +1,3 @@
+Relax-NG validity error : Extra element title in interleave
+./test/relaxng/tutor8_2_4.xml:5: element title: Relax-NG validity error : Element head failed to validate content
+./test/relaxng/tutor8_2_4.xml fails to validate
diff --git a/result/relaxng/tutor8_2_5 b/result/relaxng/tutor8_2_5
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_5
diff --git a/result/relaxng/tutor8_2_5.err b/result/relaxng/tutor8_2_5.err
new file mode 100644
index 0000000..c215d76
--- /dev/null
+++ b/result/relaxng/tutor8_2_5.err
@@ -0,0 +1,4 @@
+./test/relaxng/tutor8_2_5.xml:1: element head: Relax-NG validity error : Expecting an element title, got nothing
+./test/relaxng/tutor8_2_5.xml:1: element head: Relax-NG validity error : Invalid sequence in interleave
+./test/relaxng/tutor8_2_5.xml:1: element head: Relax-NG validity error : Element head failed to validate content
+./test/relaxng/tutor8_2_5.xml fails to validate
diff --git a/result/relaxng/tutor8_2_6 b/result/relaxng/tutor8_2_6
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_6
diff --git a/result/relaxng/tutor8_2_6.err b/result/relaxng/tutor8_2_6.err
new file mode 100644
index 0000000..b959768
--- /dev/null
+++ b/result/relaxng/tutor8_2_6.err
@@ -0,0 +1,3 @@
+Relax-NG validity error : Extra element base in interleave
+./test/relaxng/tutor8_2_6.xml:4: element base: Relax-NG validity error : Element head failed to validate content
+./test/relaxng/tutor8_2_6.xml fails to validate
diff --git a/result/relaxng/tutor8_2_err b/result/relaxng/tutor8_2_err
new file mode 100644
index 0000000..fa3dcb2
--- /dev/null
+++ b/result/relaxng/tutor8_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_2.rng validates
diff --git a/result/relaxng/tutor8_2_valid b/result/relaxng/tutor8_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_2_valid
diff --git a/result/relaxng/tutor8_3_1 b/result/relaxng/tutor8_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_3_1
diff --git a/result/relaxng/tutor8_3_1.err b/result/relaxng/tutor8_3_1.err
new file mode 100644
index 0000000..9b637eb
--- /dev/null
+++ b/result/relaxng/tutor8_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_3_1.xml validates
diff --git a/result/relaxng/tutor8_3_err b/result/relaxng/tutor8_3_err
new file mode 100644
index 0000000..01c6184
--- /dev/null
+++ b/result/relaxng/tutor8_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor8_3.rng validates
diff --git a/result/relaxng/tutor8_3_valid b/result/relaxng/tutor8_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor8_3_valid
diff --git a/result/relaxng/tutor9_10_1 b/result/relaxng/tutor9_10_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_10_1
diff --git a/result/relaxng/tutor9_10_1.err b/result/relaxng/tutor9_10_1.err
new file mode 100644
index 0000000..7c6117f
--- /dev/null
+++ b/result/relaxng/tutor9_10_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_10_1.xml validates
diff --git a/result/relaxng/tutor9_10_err b/result/relaxng/tutor9_10_err
new file mode 100644
index 0000000..a8a7cb6
--- /dev/null
+++ b/result/relaxng/tutor9_10_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_10.rng validates
diff --git a/result/relaxng/tutor9_10_valid b/result/relaxng/tutor9_10_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_10_valid
diff --git a/result/relaxng/tutor9_11_1 b/result/relaxng/tutor9_11_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_11_1
diff --git a/result/relaxng/tutor9_11_1.err b/result/relaxng/tutor9_11_1.err
new file mode 100644
index 0000000..02a1f2a
--- /dev/null
+++ b/result/relaxng/tutor9_11_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_11_1.xml validates
diff --git a/result/relaxng/tutor9_11_err b/result/relaxng/tutor9_11_err
new file mode 100644
index 0000000..edd98bf
--- /dev/null
+++ b/result/relaxng/tutor9_11_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_11.rng validates
diff --git a/result/relaxng/tutor9_11_valid b/result/relaxng/tutor9_11_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_11_valid
diff --git a/result/relaxng/tutor9_12_1 b/result/relaxng/tutor9_12_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_12_1
diff --git a/result/relaxng/tutor9_12_1.err b/result/relaxng/tutor9_12_1.err
new file mode 100644
index 0000000..08f2a8a
--- /dev/null
+++ b/result/relaxng/tutor9_12_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_12_1.xml validates
diff --git a/result/relaxng/tutor9_12_err b/result/relaxng/tutor9_12_err
new file mode 100644
index 0000000..8881730
--- /dev/null
+++ b/result/relaxng/tutor9_12_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_12.rng validates
diff --git a/result/relaxng/tutor9_12_valid b/result/relaxng/tutor9_12_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_12_valid
diff --git a/result/relaxng/tutor9_1_1 b/result/relaxng/tutor9_1_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_1_1
diff --git a/result/relaxng/tutor9_1_1.err b/result/relaxng/tutor9_1_1.err
new file mode 100644
index 0000000..42d03d1
--- /dev/null
+++ b/result/relaxng/tutor9_1_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_1_1.xml validates
diff --git a/result/relaxng/tutor9_1_err b/result/relaxng/tutor9_1_err
new file mode 100644
index 0000000..22c5f37
--- /dev/null
+++ b/result/relaxng/tutor9_1_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_1.rng validates
diff --git a/result/relaxng/tutor9_1_valid b/result/relaxng/tutor9_1_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_1_valid
diff --git a/result/relaxng/tutor9_2_1 b/result/relaxng/tutor9_2_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_2_1
diff --git a/result/relaxng/tutor9_2_1.err b/result/relaxng/tutor9_2_1.err
new file mode 100644
index 0000000..fc174ff
--- /dev/null
+++ b/result/relaxng/tutor9_2_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_2_1.xml validates
diff --git a/result/relaxng/tutor9_2_2 b/result/relaxng/tutor9_2_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_2_2
diff --git a/result/relaxng/tutor9_2_2.err b/result/relaxng/tutor9_2_2.err
new file mode 100644
index 0000000..a07aa0d
--- /dev/null
+++ b/result/relaxng/tutor9_2_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_2_2.xml validates
diff --git a/result/relaxng/tutor9_2_err b/result/relaxng/tutor9_2_err
new file mode 100644
index 0000000..83c34ff
--- /dev/null
+++ b/result/relaxng/tutor9_2_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_2.rng validates
diff --git a/result/relaxng/tutor9_2_valid b/result/relaxng/tutor9_2_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_2_valid
diff --git a/result/relaxng/tutor9_3_1 b/result/relaxng/tutor9_3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_3_1
diff --git a/result/relaxng/tutor9_3_1.err b/result/relaxng/tutor9_3_1.err
new file mode 100644
index 0000000..80ac24c
--- /dev/null
+++ b/result/relaxng/tutor9_3_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_3_1.xml validates
diff --git a/result/relaxng/tutor9_3_2 b/result/relaxng/tutor9_3_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_3_2
diff --git a/result/relaxng/tutor9_3_2.err b/result/relaxng/tutor9_3_2.err
new file mode 100644
index 0000000..a361c93
--- /dev/null
+++ b/result/relaxng/tutor9_3_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_3_2.xml validates
diff --git a/result/relaxng/tutor9_3_err b/result/relaxng/tutor9_3_err
new file mode 100644
index 0000000..0a82f8e
--- /dev/null
+++ b/result/relaxng/tutor9_3_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_3.rng validates
diff --git a/result/relaxng/tutor9_3_valid b/result/relaxng/tutor9_3_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_3_valid
diff --git a/result/relaxng/tutor9_4_1 b/result/relaxng/tutor9_4_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_4_1
diff --git a/result/relaxng/tutor9_4_1.err b/result/relaxng/tutor9_4_1.err
new file mode 100644
index 0000000..514eb98
--- /dev/null
+++ b/result/relaxng/tutor9_4_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_4_1.xml validates
diff --git a/result/relaxng/tutor9_4_2 b/result/relaxng/tutor9_4_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_4_2
diff --git a/result/relaxng/tutor9_4_2.err b/result/relaxng/tutor9_4_2.err
new file mode 100644
index 0000000..ba780dc
--- /dev/null
+++ b/result/relaxng/tutor9_4_2.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_4_2.xml validates
diff --git a/result/relaxng/tutor9_4_err b/result/relaxng/tutor9_4_err
new file mode 100644
index 0000000..42d087f
--- /dev/null
+++ b/result/relaxng/tutor9_4_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_4.rng validates
diff --git a/result/relaxng/tutor9_4_valid b/result/relaxng/tutor9_4_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_4_valid
diff --git a/result/relaxng/tutor9_5_1 b/result/relaxng/tutor9_5_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_5_1
diff --git a/result/relaxng/tutor9_5_1.err b/result/relaxng/tutor9_5_1.err
new file mode 100644
index 0000000..54f5d6a
--- /dev/null
+++ b/result/relaxng/tutor9_5_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_5_1.xml validates
diff --git a/result/relaxng/tutor9_5_2 b/result/relaxng/tutor9_5_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_5_2
diff --git a/result/relaxng/tutor9_5_2.err b/result/relaxng/tutor9_5_2.err
new file mode 100644
index 0000000..1384617
--- /dev/null
+++ b/result/relaxng/tutor9_5_2.err
@@ -0,0 +1,3 @@
+./test/relaxng/tutor9_5_2.xml:2: element card: Relax-NG validity error : Invalid sequence in interleave
+./test/relaxng/tutor9_5_2.xml:2: element card: Relax-NG validity error : Element card failed to validate attributes
+./test/relaxng/tutor9_5_2.xml fails to validate
diff --git a/result/relaxng/tutor9_5_3 b/result/relaxng/tutor9_5_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_5_3
diff --git a/result/relaxng/tutor9_5_3.err b/result/relaxng/tutor9_5_3.err
new file mode 100644
index 0000000..db5d0ae
--- /dev/null
+++ b/result/relaxng/tutor9_5_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor9_5_3.xml:2: element card: Relax-NG validity error : Invalid attribute error for element card
+./test/relaxng/tutor9_5_3.xml fails to validate
diff --git a/result/relaxng/tutor9_5_err b/result/relaxng/tutor9_5_err
new file mode 100644
index 0000000..e6ddd7a
--- /dev/null
+++ b/result/relaxng/tutor9_5_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_5.rng validates
diff --git a/result/relaxng/tutor9_5_valid b/result/relaxng/tutor9_5_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_5_valid
diff --git a/result/relaxng/tutor9_6.rng b/result/relaxng/tutor9_6.rng
new file mode 100644
index 0000000..17e6492
--- /dev/null
+++ b/result/relaxng/tutor9_6.rng
@@ -0,0 +1,24 @@
+<grammar>
+
+ <start>
+ <element name="addressBook">
+ <zeroOrMore>
+ <element name="card">
+ <ref name="card.attlist"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="card.attlist">
+ <group>
+ <attribute name="name">
+ <text/>
+ </attribute>
+ <attribute name="email">
+ <text/>
+ </attribute>
+ </group>
+ </define>
+
+</grammar>
diff --git a/result/relaxng/tutor9_6_1 b/result/relaxng/tutor9_6_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_6_1
diff --git a/result/relaxng/tutor9_6_1.err b/result/relaxng/tutor9_6_1.err
new file mode 100644
index 0000000..15724e5
--- /dev/null
+++ b/result/relaxng/tutor9_6_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_6_1.xml validates
diff --git a/result/relaxng/tutor9_6_2 b/result/relaxng/tutor9_6_2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_6_2
diff --git a/result/relaxng/tutor9_6_2.err b/result/relaxng/tutor9_6_2.err
new file mode 100644
index 0000000..f7ec97f
--- /dev/null
+++ b/result/relaxng/tutor9_6_2.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor9_6_2.xml:2: element card: Relax-NG validity error : Element card failed to validate attributes
+./test/relaxng/tutor9_6_2.xml fails to validate
diff --git a/result/relaxng/tutor9_6_3 b/result/relaxng/tutor9_6_3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_6_3
diff --git a/result/relaxng/tutor9_6_3.err b/result/relaxng/tutor9_6_3.err
new file mode 100644
index 0000000..5fe5f57
--- /dev/null
+++ b/result/relaxng/tutor9_6_3.err
@@ -0,0 +1,2 @@
+./test/relaxng/tutor9_6_3.xml:2: element card: Relax-NG validity error : Invalid attribute error for element card
+./test/relaxng/tutor9_6_3.xml fails to validate
diff --git a/result/relaxng/tutor9_6_err b/result/relaxng/tutor9_6_err
new file mode 100644
index 0000000..897a092
--- /dev/null
+++ b/result/relaxng/tutor9_6_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_6.rng validates
diff --git a/result/relaxng/tutor9_6_valid b/result/relaxng/tutor9_6_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_6_valid
diff --git a/result/relaxng/tutor9_7_1 b/result/relaxng/tutor9_7_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_7_1
diff --git a/result/relaxng/tutor9_7_1.err b/result/relaxng/tutor9_7_1.err
new file mode 100644
index 0000000..00d1502
--- /dev/null
+++ b/result/relaxng/tutor9_7_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_7_1.xml validates
diff --git a/result/relaxng/tutor9_7_err b/result/relaxng/tutor9_7_err
new file mode 100644
index 0000000..e171320
--- /dev/null
+++ b/result/relaxng/tutor9_7_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_7.rng validates
diff --git a/result/relaxng/tutor9_7_valid b/result/relaxng/tutor9_7_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_7_valid
diff --git a/result/relaxng/tutor9_8_1 b/result/relaxng/tutor9_8_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_8_1
diff --git a/result/relaxng/tutor9_8_1.err b/result/relaxng/tutor9_8_1.err
new file mode 100644
index 0000000..1849f8b
--- /dev/null
+++ b/result/relaxng/tutor9_8_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_8_1.xml validates
diff --git a/result/relaxng/tutor9_8_err b/result/relaxng/tutor9_8_err
new file mode 100644
index 0000000..41a926c
--- /dev/null
+++ b/result/relaxng/tutor9_8_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_8.rng validates
diff --git a/result/relaxng/tutor9_8_valid b/result/relaxng/tutor9_8_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_8_valid
diff --git a/result/relaxng/tutor9_9_1 b/result/relaxng/tutor9_9_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_9_1
diff --git a/result/relaxng/tutor9_9_1.err b/result/relaxng/tutor9_9_1.err
new file mode 100644
index 0000000..d88f01a
--- /dev/null
+++ b/result/relaxng/tutor9_9_1.err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_9_1.xml validates
diff --git a/result/relaxng/tutor9_9_err b/result/relaxng/tutor9_9_err
new file mode 100644
index 0000000..c4a95fd
--- /dev/null
+++ b/result/relaxng/tutor9_9_err
@@ -0,0 +1 @@
+./test/relaxng/tutor9_9.rng validates
diff --git a/result/relaxng/tutor9_9_valid b/result/relaxng/tutor9_9_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutor9_9_valid
diff --git a/result/relaxng/tutorA_err b/result/relaxng/tutorA_err
new file mode 100644
index 0000000..b4ab892
--- /dev/null
+++ b/result/relaxng/tutorA_err
@@ -0,0 +1 @@
+./test/relaxng/tutorA.rng validates
diff --git a/result/relaxng/tutorA_valid b/result/relaxng/tutorA_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/tutorA_valid
diff --git a/result/schemas/570702_0_0 b/result/schemas/570702_0_0
new file mode 100644
index 0000000..41716e7
--- /dev/null
+++ b/result/schemas/570702_0_0
@@ -0,0 +1 @@
+./test/schemas/570702_0.xml validates
diff --git a/result/schemas/570702_0_0.err b/result/schemas/570702_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/570702_0_0.err
diff --git a/result/schemas/579746_0_0 b/result/schemas/579746_0_0
new file mode 100644
index 0000000..c9a24f2
--- /dev/null
+++ b/result/schemas/579746_0_0
@@ -0,0 +1 @@
+./test/schemas/579746_0.xml validates
diff --git a/result/schemas/579746_0_0.err b/result/schemas/579746_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_0_0.err
diff --git a/result/schemas/579746_0_1 b/result/schemas/579746_0_1
new file mode 100644
index 0000000..8e3d39a
--- /dev/null
+++ b/result/schemas/579746_0_1
@@ -0,0 +1 @@
+./test/schemas/579746_1.xml validates
diff --git a/result/schemas/579746_0_1.err b/result/schemas/579746_0_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_0_1.err
diff --git a/result/schemas/579746_0_2 b/result/schemas/579746_0_2
new file mode 100644
index 0000000..a11eaf1
--- /dev/null
+++ b/result/schemas/579746_0_2
@@ -0,0 +1 @@
+./test/schemas/579746_2.xml validates
diff --git a/result/schemas/579746_0_2.err b/result/schemas/579746_0_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_0_2.err
diff --git a/result/schemas/579746_0_3 b/result/schemas/579746_0_3
new file mode 100644
index 0000000..cf06bc5
--- /dev/null
+++ b/result/schemas/579746_0_3
@@ -0,0 +1 @@
+./test/schemas/579746_3.xml fails to validate
diff --git a/result/schemas/579746_0_3.err b/result/schemas/579746_0_3.err
new file mode 100644
index 0000000..5e4c25e
--- /dev/null
+++ b/result/schemas/579746_0_3.err
@@ -0,0 +1 @@
+./test/schemas/579746_3.xml:5: element customer: Schemas validity error : Element 'customer': This element is not expected.
diff --git a/result/schemas/579746_0_4 b/result/schemas/579746_0_4
new file mode 100644
index 0000000..4763001
--- /dev/null
+++ b/result/schemas/579746_0_4
@@ -0,0 +1 @@
+./test/schemas/579746_4.xml validates
diff --git a/result/schemas/579746_0_4.err b/result/schemas/579746_0_4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_0_4.err
diff --git a/result/schemas/579746_0_5 b/result/schemas/579746_0_5
new file mode 100644
index 0000000..91738e4
--- /dev/null
+++ b/result/schemas/579746_0_5
@@ -0,0 +1 @@
+./test/schemas/579746_5.xml fails to validate
diff --git a/result/schemas/579746_0_5.err b/result/schemas/579746_0_5.err
new file mode 100644
index 0000000..1e5680d
--- /dev/null
+++ b/result/schemas/579746_0_5.err
@@ -0,0 +1 @@
+./test/schemas/579746_5.xml:5: element comment: Schemas validity error : Element 'comment': This element is not expected.
diff --git a/result/schemas/579746_1_0 b/result/schemas/579746_1_0
new file mode 100644
index 0000000..c9a24f2
--- /dev/null
+++ b/result/schemas/579746_1_0
@@ -0,0 +1 @@
+./test/schemas/579746_0.xml validates
diff --git a/result/schemas/579746_1_0.err b/result/schemas/579746_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_1_0.err
diff --git a/result/schemas/579746_1_1 b/result/schemas/579746_1_1
new file mode 100644
index 0000000..8e3d39a
--- /dev/null
+++ b/result/schemas/579746_1_1
@@ -0,0 +1 @@
+./test/schemas/579746_1.xml validates
diff --git a/result/schemas/579746_1_1.err b/result/schemas/579746_1_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_1_1.err
diff --git a/result/schemas/579746_1_2 b/result/schemas/579746_1_2
new file mode 100644
index 0000000..a11eaf1
--- /dev/null
+++ b/result/schemas/579746_1_2
@@ -0,0 +1 @@
+./test/schemas/579746_2.xml validates
diff --git a/result/schemas/579746_1_2.err b/result/schemas/579746_1_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_1_2.err
diff --git a/result/schemas/579746_1_3 b/result/schemas/579746_1_3
new file mode 100644
index 0000000..cf06bc5
--- /dev/null
+++ b/result/schemas/579746_1_3
@@ -0,0 +1 @@
+./test/schemas/579746_3.xml fails to validate
diff --git a/result/schemas/579746_1_3.err b/result/schemas/579746_1_3.err
new file mode 100644
index 0000000..5e4c25e
--- /dev/null
+++ b/result/schemas/579746_1_3.err
@@ -0,0 +1 @@
+./test/schemas/579746_3.xml:5: element customer: Schemas validity error : Element 'customer': This element is not expected.
diff --git a/result/schemas/579746_1_4 b/result/schemas/579746_1_4
new file mode 100644
index 0000000..4763001
--- /dev/null
+++ b/result/schemas/579746_1_4
@@ -0,0 +1 @@
+./test/schemas/579746_4.xml validates
diff --git a/result/schemas/579746_1_4.err b/result/schemas/579746_1_4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/579746_1_4.err
diff --git a/result/schemas/579746_1_5 b/result/schemas/579746_1_5
new file mode 100644
index 0000000..91738e4
--- /dev/null
+++ b/result/schemas/579746_1_5
@@ -0,0 +1 @@
+./test/schemas/579746_5.xml fails to validate
diff --git a/result/schemas/579746_1_5.err b/result/schemas/579746_1_5.err
new file mode 100644
index 0000000..1e5680d
--- /dev/null
+++ b/result/schemas/579746_1_5.err
@@ -0,0 +1 @@
+./test/schemas/579746_5.xml:5: element comment: Schemas validity error : Element 'comment': This element is not expected.
diff --git a/result/schemas/582887_0_0 b/result/schemas/582887_0_0
new file mode 100644
index 0000000..4ae8482
--- /dev/null
+++ b/result/schemas/582887_0_0
@@ -0,0 +1 @@
+./test/schemas/582887_0.xml validates
diff --git a/result/schemas/582887_0_0.err b/result/schemas/582887_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/582887_0_0.err
diff --git a/result/schemas/582906-1_0_0 b/result/schemas/582906-1_0_0
new file mode 100644
index 0000000..e1abbf5
--- /dev/null
+++ b/result/schemas/582906-1_0_0
@@ -0,0 +1 @@
+./test/schemas/582906-1_0.xml validates
diff --git a/result/schemas/582906-1_0_0.err b/result/schemas/582906-1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/582906-1_0_0.err
diff --git a/result/schemas/582906-2_0_0 b/result/schemas/582906-2_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/582906-2_0_0
diff --git a/result/schemas/582906-2_0_0.err b/result/schemas/582906-2_0_0.err
new file mode 100644
index 0000000..c1f8204
--- /dev/null
+++ b/result/schemas/582906-2_0_0.err
@@ -0,0 +1 @@
+test/schemas/582906-2-prog1.xsd:9: element include: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}include': The target namespace 'http://example.com/xml/Prog3' of the included/redefined schema 'test/schemas/582906-2-common.xsd' differs from 'http://example.com/xml/Prog1' of the including/redefining schema.
diff --git a/result/schemas/all1_0_0 b/result/schemas/all1_0_0
new file mode 100644
index 0000000..327cec7
--- /dev/null
+++ b/result/schemas/all1_0_0
@@ -0,0 +1 @@
+./test/schemas/all1_0.xml validates
diff --git a/result/schemas/all1_0_0.err b/result/schemas/all1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all1_0_0.err
diff --git a/result/schemas/all_0_0 b/result/schemas/all_0_0
new file mode 100644
index 0000000..08eb108
--- /dev/null
+++ b/result/schemas/all_0_0
@@ -0,0 +1 @@
+./test/schemas/all_0.xml validates
diff --git a/result/schemas/all_0_0.err b/result/schemas/all_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_0_0.err
diff --git a/result/schemas/all_0_1 b/result/schemas/all_0_1
new file mode 100644
index 0000000..eaf4a1a
--- /dev/null
+++ b/result/schemas/all_0_1
@@ -0,0 +1 @@
+./test/schemas/all_1.xml validates
diff --git a/result/schemas/all_0_1.err b/result/schemas/all_0_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_0_1.err
diff --git a/result/schemas/all_0_2 b/result/schemas/all_0_2
new file mode 100644
index 0000000..62af901
--- /dev/null
+++ b/result/schemas/all_0_2
@@ -0,0 +1 @@
+./test/schemas/all_2.xml validates
diff --git a/result/schemas/all_0_2.err b/result/schemas/all_0_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_0_2.err
diff --git a/result/schemas/all_0_3 b/result/schemas/all_0_3
new file mode 100644
index 0000000..55a2a4d
--- /dev/null
+++ b/result/schemas/all_0_3
@@ -0,0 +1 @@
+./test/schemas/all_3.xml fails to validate
diff --git a/result/schemas/all_0_3.err b/result/schemas/all_0_3.err
new file mode 100644
index 0000000..6933fb7
--- /dev/null
+++ b/result/schemas/all_0_3.err
@@ -0,0 +1 @@
+./test/schemas/all_3.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is ( c ).
diff --git a/result/schemas/all_0_4 b/result/schemas/all_0_4
new file mode 100644
index 0000000..cdd8824
--- /dev/null
+++ b/result/schemas/all_0_4
@@ -0,0 +1 @@
+./test/schemas/all_4.xml fails to validate
diff --git a/result/schemas/all_0_4.err b/result/schemas/all_0_4.err
new file mode 100644
index 0000000..f846d15
--- /dev/null
+++ b/result/schemas/all_0_4.err
@@ -0,0 +1 @@
+./test/schemas/all_4.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is one of ( a, b, c ).
diff --git a/result/schemas/all_0_5 b/result/schemas/all_0_5
new file mode 100644
index 0000000..f939f65
--- /dev/null
+++ b/result/schemas/all_0_5
@@ -0,0 +1 @@
+./test/schemas/all_5.xml fails to validate
diff --git a/result/schemas/all_0_5.err b/result/schemas/all_0_5.err
new file mode 100644
index 0000000..d8ca9a7
--- /dev/null
+++ b/result/schemas/all_0_5.err
@@ -0,0 +1 @@
+./test/schemas/all_5.xml:1: element a: Schemas validity error : Element 'a': This element is not expected. Expected is ( c ).
diff --git a/result/schemas/all_0_6 b/result/schemas/all_0_6
new file mode 100644
index 0000000..c3705c7
--- /dev/null
+++ b/result/schemas/all_0_6
@@ -0,0 +1 @@
+./test/schemas/all_6.xml fails to validate
diff --git a/result/schemas/all_0_6.err b/result/schemas/all_0_6.err
new file mode 100644
index 0000000..c31d91b
--- /dev/null
+++ b/result/schemas/all_0_6.err
@@ -0,0 +1 @@
+./test/schemas/all_6.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is one of ( b, c ).
diff --git a/result/schemas/all_0_7 b/result/schemas/all_0_7
new file mode 100644
index 0000000..d144d2d
--- /dev/null
+++ b/result/schemas/all_0_7
@@ -0,0 +1 @@
+./test/schemas/all_7.xml fails to validate
diff --git a/result/schemas/all_0_7.err b/result/schemas/all_0_7.err
new file mode 100644
index 0000000..d5c5428
--- /dev/null
+++ b/result/schemas/all_0_7.err
@@ -0,0 +1 @@
+./test/schemas/all_7.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is ( c ).
diff --git a/result/schemas/all_1_0 b/result/schemas/all_1_0
new file mode 100644
index 0000000..08eb108
--- /dev/null
+++ b/result/schemas/all_1_0
@@ -0,0 +1 @@
+./test/schemas/all_0.xml validates
diff --git a/result/schemas/all_1_0.err b/result/schemas/all_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_1_0.err
diff --git a/result/schemas/all_1_1 b/result/schemas/all_1_1
new file mode 100644
index 0000000..eaf4a1a
--- /dev/null
+++ b/result/schemas/all_1_1
@@ -0,0 +1 @@
+./test/schemas/all_1.xml validates
diff --git a/result/schemas/all_1_1.err b/result/schemas/all_1_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_1_1.err
diff --git a/result/schemas/all_1_2 b/result/schemas/all_1_2
new file mode 100644
index 0000000..62af901
--- /dev/null
+++ b/result/schemas/all_1_2
@@ -0,0 +1 @@
+./test/schemas/all_2.xml validates
diff --git a/result/schemas/all_1_2.err b/result/schemas/all_1_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_1_2.err
diff --git a/result/schemas/all_1_3 b/result/schemas/all_1_3
new file mode 100644
index 0000000..55a2a4d
--- /dev/null
+++ b/result/schemas/all_1_3
@@ -0,0 +1 @@
+./test/schemas/all_3.xml fails to validate
diff --git a/result/schemas/all_1_3.err b/result/schemas/all_1_3.err
new file mode 100644
index 0000000..6933fb7
--- /dev/null
+++ b/result/schemas/all_1_3.err
@@ -0,0 +1 @@
+./test/schemas/all_3.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is ( c ).
diff --git a/result/schemas/all_1_4 b/result/schemas/all_1_4
new file mode 100644
index 0000000..2eb22ae
--- /dev/null
+++ b/result/schemas/all_1_4
@@ -0,0 +1 @@
+./test/schemas/all_4.xml validates
diff --git a/result/schemas/all_1_4.err b/result/schemas/all_1_4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_1_4.err
diff --git a/result/schemas/all_1_5 b/result/schemas/all_1_5
new file mode 100644
index 0000000..f939f65
--- /dev/null
+++ b/result/schemas/all_1_5
@@ -0,0 +1 @@
+./test/schemas/all_5.xml fails to validate
diff --git a/result/schemas/all_1_5.err b/result/schemas/all_1_5.err
new file mode 100644
index 0000000..d8ca9a7
--- /dev/null
+++ b/result/schemas/all_1_5.err
@@ -0,0 +1 @@
+./test/schemas/all_5.xml:1: element a: Schemas validity error : Element 'a': This element is not expected. Expected is ( c ).
diff --git a/result/schemas/all_1_6 b/result/schemas/all_1_6
new file mode 100644
index 0000000..c3705c7
--- /dev/null
+++ b/result/schemas/all_1_6
@@ -0,0 +1 @@
+./test/schemas/all_6.xml fails to validate
diff --git a/result/schemas/all_1_6.err b/result/schemas/all_1_6.err
new file mode 100644
index 0000000..c31d91b
--- /dev/null
+++ b/result/schemas/all_1_6.err
@@ -0,0 +1 @@
+./test/schemas/all_6.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is one of ( b, c ).
diff --git a/result/schemas/all_1_7 b/result/schemas/all_1_7
new file mode 100644
index 0000000..d144d2d
--- /dev/null
+++ b/result/schemas/all_1_7
@@ -0,0 +1 @@
+./test/schemas/all_7.xml fails to validate
diff --git a/result/schemas/all_1_7.err b/result/schemas/all_1_7.err
new file mode 100644
index 0000000..d5c5428
--- /dev/null
+++ b/result/schemas/all_1_7.err
@@ -0,0 +1 @@
+./test/schemas/all_7.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is ( c ).
diff --git a/result/schemas/all_2_0 b/result/schemas/all_2_0
new file mode 100644
index 0000000..77066e0
--- /dev/null
+++ b/result/schemas/all_2_0
@@ -0,0 +1 @@
+./test/schemas/all_0.xml fails to validate
diff --git a/result/schemas/all_2_0.err b/result/schemas/all_2_0.err
new file mode 100644
index 0000000..6ef8590
--- /dev/null
+++ b/result/schemas/all_2_0.err
@@ -0,0 +1 @@
+./test/schemas/all_0.xml:1: element c: Schemas validity error : Element 'c': This element is not expected.
diff --git a/result/schemas/all_2_1 b/result/schemas/all_2_1
new file mode 100644
index 0000000..cbda1fe
--- /dev/null
+++ b/result/schemas/all_2_1
@@ -0,0 +1 @@
+./test/schemas/all_1.xml fails to validate
diff --git a/result/schemas/all_2_1.err b/result/schemas/all_2_1.err
new file mode 100644
index 0000000..fd8cb48
--- /dev/null
+++ b/result/schemas/all_2_1.err
@@ -0,0 +1 @@
+./test/schemas/all_1.xml:1: element c: Schemas validity error : Element 'c': This element is not expected. Expected is ( a ).
diff --git a/result/schemas/all_2_2 b/result/schemas/all_2_2
new file mode 100644
index 0000000..27db643
--- /dev/null
+++ b/result/schemas/all_2_2
@@ -0,0 +1 @@
+./test/schemas/all_2.xml fails to validate
diff --git a/result/schemas/all_2_2.err b/result/schemas/all_2_2.err
new file mode 100644
index 0000000..1f04462
--- /dev/null
+++ b/result/schemas/all_2_2.err
@@ -0,0 +1 @@
+./test/schemas/all_2.xml:1: element c: Schemas validity error : Element 'c': This element is not expected.
diff --git a/result/schemas/all_2_3 b/result/schemas/all_2_3
new file mode 100644
index 0000000..8186e82
--- /dev/null
+++ b/result/schemas/all_2_3
@@ -0,0 +1 @@
+./test/schemas/all_3.xml validates
diff --git a/result/schemas/all_2_3.err b/result/schemas/all_2_3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_2_3.err
diff --git a/result/schemas/all_2_4 b/result/schemas/all_2_4
new file mode 100644
index 0000000..cdd8824
--- /dev/null
+++ b/result/schemas/all_2_4
@@ -0,0 +1 @@
+./test/schemas/all_4.xml fails to validate
diff --git a/result/schemas/all_2_4.err b/result/schemas/all_2_4.err
new file mode 100644
index 0000000..31dcf12
--- /dev/null
+++ b/result/schemas/all_2_4.err
@@ -0,0 +1 @@
+./test/schemas/all_4.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is one of ( a, b ).
diff --git a/result/schemas/all_2_5 b/result/schemas/all_2_5
new file mode 100644
index 0000000..f939f65
--- /dev/null
+++ b/result/schemas/all_2_5
@@ -0,0 +1 @@
+./test/schemas/all_5.xml fails to validate
diff --git a/result/schemas/all_2_5.err b/result/schemas/all_2_5.err
new file mode 100644
index 0000000..e859ebd
--- /dev/null
+++ b/result/schemas/all_2_5.err
@@ -0,0 +1 @@
+./test/schemas/all_5.xml:1: element a: Schemas validity error : Element 'a': This element is not expected.
diff --git a/result/schemas/all_2_6 b/result/schemas/all_2_6
new file mode 100644
index 0000000..d4a9594
--- /dev/null
+++ b/result/schemas/all_2_6
@@ -0,0 +1 @@
+./test/schemas/all_6.xml validates
diff --git a/result/schemas/all_2_6.err b/result/schemas/all_2_6.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_2_6.err
diff --git a/result/schemas/all_2_7 b/result/schemas/all_2_7
new file mode 100644
index 0000000..6ad4fc6
--- /dev/null
+++ b/result/schemas/all_2_7
@@ -0,0 +1 @@
+./test/schemas/all_7.xml validates
diff --git a/result/schemas/all_2_7.err b/result/schemas/all_2_7.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/all_2_7.err
diff --git a/result/schemas/allsg_0_0 b/result/schemas/allsg_0_0
new file mode 100644
index 0000000..a078f05
--- /dev/null
+++ b/result/schemas/allsg_0_0
@@ -0,0 +1 @@
+./test/schemas/allsg_0.xml validates
diff --git a/result/schemas/allsg_0_0.err b/result/schemas/allsg_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/allsg_0_0.err
diff --git a/result/schemas/allsg_0_1 b/result/schemas/allsg_0_1
new file mode 100644
index 0000000..ab3cf58
--- /dev/null
+++ b/result/schemas/allsg_0_1
@@ -0,0 +1 @@
+./test/schemas/allsg_1.xml validates
diff --git a/result/schemas/allsg_0_1.err b/result/schemas/allsg_0_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/allsg_0_1.err
diff --git a/result/schemas/allsg_0_2 b/result/schemas/allsg_0_2
new file mode 100644
index 0000000..da3de52
--- /dev/null
+++ b/result/schemas/allsg_0_2
@@ -0,0 +1 @@
+./test/schemas/allsg_2.xml validates
diff --git a/result/schemas/allsg_0_2.err b/result/schemas/allsg_0_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/allsg_0_2.err
diff --git a/result/schemas/allsg_0_3 b/result/schemas/allsg_0_3
new file mode 100644
index 0000000..f98152b
--- /dev/null
+++ b/result/schemas/allsg_0_3
@@ -0,0 +1 @@
+./test/schemas/allsg_3.xml fails to validate
diff --git a/result/schemas/allsg_0_3.err b/result/schemas/allsg_0_3.err
new file mode 100644
index 0000000..628a360
--- /dev/null
+++ b/result/schemas/allsg_0_3.err
@@ -0,0 +1 @@
+./test/schemas/allsg_3.xml:6: element gm-B-1: Schemas validity error : Element '{urn:test:foo}gm-B-1': This element is not expected. Expected is one of ( {urn:test:foo}gh-A, {urn:test:foo}gm-A-1, {urn:test:foo}gm-A-2 ).
diff --git a/result/schemas/allsg_0_4 b/result/schemas/allsg_0_4
new file mode 100644
index 0000000..3fe69c1
--- /dev/null
+++ b/result/schemas/allsg_0_4
@@ -0,0 +1 @@
+./test/schemas/allsg_4.xml fails to validate
diff --git a/result/schemas/allsg_0_4.err b/result/schemas/allsg_0_4.err
new file mode 100644
index 0000000..e72288d
--- /dev/null
+++ b/result/schemas/allsg_0_4.err
@@ -0,0 +1 @@
+./test/schemas/allsg_4.xml:6: element gm-A-1: Schemas validity error : Element '{urn:test:foo}gm-A-1': This element is not expected. Expected is one of ( {urn:test:foo}gh-B, {urn:test:foo}gm-B-1, {urn:test:foo}gm-B-2 ).
diff --git a/result/schemas/allsg_0_5 b/result/schemas/allsg_0_5
new file mode 100644
index 0000000..2689cf0
--- /dev/null
+++ b/result/schemas/allsg_0_5
@@ -0,0 +1 @@
+./test/schemas/allsg_5.xml fails to validate
diff --git a/result/schemas/allsg_0_5.err b/result/schemas/allsg_0_5.err
new file mode 100644
index 0000000..26a1446
--- /dev/null
+++ b/result/schemas/allsg_0_5.err
@@ -0,0 +1 @@
+./test/schemas/allsg_5.xml:7: element gm-B-2: Schemas validity error : Element '{urn:test:foo}gm-B-2': This element is not expected.
diff --git a/result/schemas/annot-err_0_0 b/result/schemas/annot-err_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/annot-err_0_0
diff --git a/result/schemas/annot-err_0_0.err b/result/schemas/annot-err_0_0.err
new file mode 100644
index 0000000..78c0c72
--- /dev/null
+++ b/result/schemas/annot-err_0_0.err
@@ -0,0 +1,7 @@
+./test/schemas/annot-err_0.xsd:7: element annotation: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}annotation': The attribute 'death' is not allowed.
+./test/schemas/annot-err_0.xsd:7: element annotation: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}annotation': The content is not valid. Expected is (appinfo | documentation)*.
+./test/schemas/annot-err_0.xsd:10: element appinfo: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}appinfo': The attribute 'id' is not allowed.
+./test/schemas/annot-err_0.xsd:10: element appinfo: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}appinfo': The attribute 'fun' is not allowed.
+./test/schemas/annot-err_0.xsd:14: element documentation: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}documentation': The attribute 'id' is not allowed.
+./test/schemas/annot-err_0.xsd:14: element documentation: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}documentation': The attribute 'mothers' is not allowed.
+./test/schemas/annot-err_0.xsd:14: element documentation: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}documentation', attribute '{http://www.w3.org/XML/1998/namespace}lang': '*' is not a valid value of the atomic type 'xs:language'.
diff --git a/result/schemas/any1_0_0 b/result/schemas/any1_0_0
new file mode 100644
index 0000000..7eec0fc
--- /dev/null
+++ b/result/schemas/any1_0_0
@@ -0,0 +1 @@
+./test/schemas/any1_0.xml validates
diff --git a/result/schemas/any1_0_0.err b/result/schemas/any1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any1_0_0.err
diff --git a/result/schemas/any2_0_0 b/result/schemas/any2_0_0
new file mode 100644
index 0000000..eef73b8
--- /dev/null
+++ b/result/schemas/any2_0_0
@@ -0,0 +1 @@
+./test/schemas/any2_0.xml validates
diff --git a/result/schemas/any2_0_0.err b/result/schemas/any2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any2_0_0.err
diff --git a/result/schemas/any3_0_0 b/result/schemas/any3_0_0
new file mode 100644
index 0000000..568af4f
--- /dev/null
+++ b/result/schemas/any3_0_0
@@ -0,0 +1 @@
+./test/schemas/any3_0.xml fails to validate
diff --git a/result/schemas/any3_0_0.err b/result/schemas/any3_0_0.err
new file mode 100644
index 0000000..49ce581
--- /dev/null
+++ b/result/schemas/any3_0_0.err
@@ -0,0 +1 @@
+./test/schemas/any3_0.xml:12: element bar.A: Schemas validity error : Element 'bar.A': This element is not expected. Expected is ( ##other{http://FOO}* ).
diff --git a/result/schemas/any4_0_0 b/result/schemas/any4_0_0
new file mode 100644
index 0000000..42ea454
--- /dev/null
+++ b/result/schemas/any4_0_0
@@ -0,0 +1 @@
+./test/schemas/any4_0.xml validates
diff --git a/result/schemas/any4_0_0.err b/result/schemas/any4_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any4_0_0.err
diff --git a/result/schemas/any5_0_0 b/result/schemas/any5_0_0
new file mode 100644
index 0000000..910f8bb
--- /dev/null
+++ b/result/schemas/any5_0_0
@@ -0,0 +1 @@
+./test/schemas/any5_0.xml fails to validate
diff --git a/result/schemas/any5_0_0.err b/result/schemas/any5_0_0.err
new file mode 100644
index 0000000..b69fd57
--- /dev/null
+++ b/result/schemas/any5_0_0.err
@@ -0,0 +1 @@
+./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any5_0_1 b/result/schemas/any5_0_1
new file mode 100644
index 0000000..5e2c461
--- /dev/null
+++ b/result/schemas/any5_0_1
@@ -0,0 +1 @@
+./test/schemas/any5_1.xml fails to validate
diff --git a/result/schemas/any5_0_1.err b/result/schemas/any5_0_1.err
new file mode 100644
index 0000000..79d7e35
--- /dev/null
+++ b/result/schemas/any5_0_1.err
@@ -0,0 +1 @@
+./test/schemas/any5_1.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected.
diff --git a/result/schemas/any5_0_2 b/result/schemas/any5_0_2
new file mode 100644
index 0000000..b049478
--- /dev/null
+++ b/result/schemas/any5_0_2
@@ -0,0 +1 @@
+./test/schemas/any5_2.xml fails to validate
diff --git a/result/schemas/any5_0_2.err b/result/schemas/any5_0_2.err
new file mode 100644
index 0000000..a5bf4c0
--- /dev/null
+++ b/result/schemas/any5_0_2.err
@@ -0,0 +1 @@
+./test/schemas/any5_2.xml:7: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected.
diff --git a/result/schemas/any5_0_3 b/result/schemas/any5_0_3
new file mode 100644
index 0000000..8cfb94e
--- /dev/null
+++ b/result/schemas/any5_0_3
@@ -0,0 +1 @@
+./test/schemas/any5_3.xml validates
diff --git a/result/schemas/any5_0_3.err b/result/schemas/any5_0_3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any5_0_3.err
diff --git a/result/schemas/any5_0_4 b/result/schemas/any5_0_4
new file mode 100644
index 0000000..0a4bce0
--- /dev/null
+++ b/result/schemas/any5_0_4
@@ -0,0 +1 @@
+./test/schemas/any5_4.xml fails to validate
diff --git a/result/schemas/any5_0_4.err b/result/schemas/any5_0_4.err
new file mode 100644
index 0000000..74a6bda
--- /dev/null
+++ b/result/schemas/any5_0_4.err
@@ -0,0 +1 @@
+./test/schemas/any5_4.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected.
diff --git a/result/schemas/any5_0_5 b/result/schemas/any5_0_5
new file mode 100644
index 0000000..6c15d25
--- /dev/null
+++ b/result/schemas/any5_0_5
@@ -0,0 +1 @@
+./test/schemas/any5_5.xml fails to validate
diff --git a/result/schemas/any5_0_5.err b/result/schemas/any5_0_5.err
new file mode 100644
index 0000000..e50113f
--- /dev/null
+++ b/result/schemas/any5_0_5.err
@@ -0,0 +1 @@
+./test/schemas/any5_5.xml:11: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected.
diff --git a/result/schemas/any5_0_6 b/result/schemas/any5_0_6
new file mode 100644
index 0000000..c9df562
--- /dev/null
+++ b/result/schemas/any5_0_6
@@ -0,0 +1 @@
+./test/schemas/any5_6.xml fails to validate
diff --git a/result/schemas/any5_0_6.err b/result/schemas/any5_0_6.err
new file mode 100644
index 0000000..b64cd4f
--- /dev/null
+++ b/result/schemas/any5_0_6.err
@@ -0,0 +1 @@
+./test/schemas/any5_6.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected.
diff --git a/result/schemas/any5_1_0 b/result/schemas/any5_1_0
new file mode 100644
index 0000000..910f8bb
--- /dev/null
+++ b/result/schemas/any5_1_0
@@ -0,0 +1 @@
+./test/schemas/any5_0.xml fails to validate
diff --git a/result/schemas/any5_1_0.err b/result/schemas/any5_1_0.err
new file mode 100644
index 0000000..b69fd57
--- /dev/null
+++ b/result/schemas/any5_1_0.err
@@ -0,0 +1 @@
+./test/schemas/any5_0.xml:6: element boo: Schemas validity error : Element '{urn:test:foo}boo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any5_1_1 b/result/schemas/any5_1_1
new file mode 100644
index 0000000..5e2c461
--- /dev/null
+++ b/result/schemas/any5_1_1
@@ -0,0 +1 @@
+./test/schemas/any5_1.xml fails to validate
diff --git a/result/schemas/any5_1_1.err b/result/schemas/any5_1_1.err
new file mode 100644
index 0000000..bbfccb4
--- /dev/null
+++ b/result/schemas/any5_1_1.err
@@ -0,0 +1 @@
+./test/schemas/any5_1.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. Expected is ( {urn:test:foo}boo ).
diff --git a/result/schemas/any5_1_2 b/result/schemas/any5_1_2
new file mode 100644
index 0000000..6eab2bb
--- /dev/null
+++ b/result/schemas/any5_1_2
@@ -0,0 +1 @@
+./test/schemas/any5_2.xml validates
diff --git a/result/schemas/any5_1_2.err b/result/schemas/any5_1_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any5_1_2.err
diff --git a/result/schemas/any5_1_3 b/result/schemas/any5_1_3
new file mode 100644
index 0000000..f114a67
--- /dev/null
+++ b/result/schemas/any5_1_3
@@ -0,0 +1 @@
+./test/schemas/any5_3.xml fails to validate
diff --git a/result/schemas/any5_1_3.err b/result/schemas/any5_1_3.err
new file mode 100644
index 0000000..e6c07b2
--- /dev/null
+++ b/result/schemas/any5_1_3.err
@@ -0,0 +1 @@
+./test/schemas/any5_3.xml:4: element foo: Schemas validity error : Element '{urn:test:foo}foo': Missing child element(s).
diff --git a/result/schemas/any5_1_4 b/result/schemas/any5_1_4
new file mode 100644
index 0000000..0a4bce0
--- /dev/null
+++ b/result/schemas/any5_1_4
@@ -0,0 +1 @@
+./test/schemas/any5_4.xml fails to validate
diff --git a/result/schemas/any5_1_4.err b/result/schemas/any5_1_4.err
new file mode 100644
index 0000000..6d89773
--- /dev/null
+++ b/result/schemas/any5_1_4.err
@@ -0,0 +1 @@
+./test/schemas/any5_4.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. Expected is ( {urn:test:foo}boo ).
diff --git a/result/schemas/any5_1_5 b/result/schemas/any5_1_5
new file mode 100644
index 0000000..e573d46
--- /dev/null
+++ b/result/schemas/any5_1_5
@@ -0,0 +1 @@
+./test/schemas/any5_5.xml validates
diff --git a/result/schemas/any5_1_5.err b/result/schemas/any5_1_5.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any5_1_5.err
diff --git a/result/schemas/any5_1_6 b/result/schemas/any5_1_6
new file mode 100644
index 0000000..c9df562
--- /dev/null
+++ b/result/schemas/any5_1_6
@@ -0,0 +1 @@
+./test/schemas/any5_6.xml fails to validate
diff --git a/result/schemas/any5_1_6.err b/result/schemas/any5_1_6.err
new file mode 100644
index 0000000..8c3f020
--- /dev/null
+++ b/result/schemas/any5_1_6.err
@@ -0,0 +1 @@
+./test/schemas/any5_6.xml:11: element boo: Schemas validity error : Element '{urn:test:bar}boo': This element is not expected. Expected is ( {urn:test:foo}boo ).
diff --git a/result/schemas/any6_1_0 b/result/schemas/any6_1_0
new file mode 100644
index 0000000..1bb493c
--- /dev/null
+++ b/result/schemas/any6_1_0
@@ -0,0 +1 @@
+./test/schemas/any6_0.xml validates
diff --git a/result/schemas/any6_1_0.err b/result/schemas/any6_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any6_1_0.err
diff --git a/result/schemas/any6_2_0 b/result/schemas/any6_2_0
new file mode 100644
index 0000000..1bb493c
--- /dev/null
+++ b/result/schemas/any6_2_0
@@ -0,0 +1 @@
+./test/schemas/any6_0.xml validates
diff --git a/result/schemas/any6_2_0.err b/result/schemas/any6_2_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any6_2_0.err
diff --git a/result/schemas/any7_1_0 b/result/schemas/any7_1_0
new file mode 100644
index 0000000..cfd9dcc
--- /dev/null
+++ b/result/schemas/any7_1_0
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml fails to validate
diff --git a/result/schemas/any7_1_0.err b/result/schemas/any7_1_0.err
new file mode 100644
index 0000000..a4274f8
--- /dev/null
+++ b/result/schemas/any7_1_0.err
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml:18: element moo: Schemas validity error : Element 'moo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_1_1 b/result/schemas/any7_1_1
new file mode 100644
index 0000000..2a6f5d7
--- /dev/null
+++ b/result/schemas/any7_1_1
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml fails to validate
diff --git a/result/schemas/any7_1_1.err b/result/schemas/any7_1_1.err
new file mode 100644
index 0000000..8745468
--- /dev/null
+++ b/result/schemas/any7_1_1.err
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml:17: element bar: Schemas validity error : Element '{urn:test:foo}bar': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_1_2 b/result/schemas/any7_1_2
new file mode 100644
index 0000000..6f35e2d
--- /dev/null
+++ b/result/schemas/any7_1_2
@@ -0,0 +1 @@
+./test/schemas/any7_2.xml validates
diff --git a/result/schemas/any7_1_2.err b/result/schemas/any7_1_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any7_1_2.err
diff --git a/result/schemas/any7_2_0 b/result/schemas/any7_2_0
new file mode 100644
index 0000000..cfd9dcc
--- /dev/null
+++ b/result/schemas/any7_2_0
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml fails to validate
diff --git a/result/schemas/any7_2_0.err b/result/schemas/any7_2_0.err
new file mode 100644
index 0000000..a4274f8
--- /dev/null
+++ b/result/schemas/any7_2_0.err
@@ -0,0 +1 @@
+./test/schemas/any7_0.xml:18: element moo: Schemas validity error : Element 'moo': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_2_1 b/result/schemas/any7_2_1
new file mode 100644
index 0000000..2a6f5d7
--- /dev/null
+++ b/result/schemas/any7_2_1
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml fails to validate
diff --git a/result/schemas/any7_2_1.err b/result/schemas/any7_2_1.err
new file mode 100644
index 0000000..8745468
--- /dev/null
+++ b/result/schemas/any7_2_1.err
@@ -0,0 +1 @@
+./test/schemas/any7_1.xml:17: element bar: Schemas validity error : Element '{urn:test:foo}bar': This element is not expected. Expected is ( ##other{urn:test:foo}* ).
diff --git a/result/schemas/any7_2_2 b/result/schemas/any7_2_2
new file mode 100644
index 0000000..6f35e2d
--- /dev/null
+++ b/result/schemas/any7_2_2
@@ -0,0 +1 @@
+./test/schemas/any7_2.xml validates
diff --git a/result/schemas/any7_2_2.err b/result/schemas/any7_2_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any7_2_2.err
diff --git a/result/schemas/any8_1_0 b/result/schemas/any8_1_0
new file mode 100644
index 0000000..f5f4ed9
--- /dev/null
+++ b/result/schemas/any8_1_0
@@ -0,0 +1 @@
+./test/schemas/any8_0.xml validates
diff --git a/result/schemas/any8_1_0.err b/result/schemas/any8_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/any8_1_0.err
diff --git a/result/schemas/anyAttr-derive-errors1_0_0 b/result/schemas/anyAttr-derive-errors1_0_0
new file mode 100644
index 0000000..d8e465e
--- /dev/null
+++ b/result/schemas/anyAttr-derive-errors1_0_0
@@ -0,0 +1 @@
+./test/schemas/anyAttr-derive-errors1_0.xml validates
diff --git a/result/schemas/anyAttr-derive-errors1_0_0.err b/result/schemas/anyAttr-derive-errors1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/anyAttr-derive-errors1_0_0.err
diff --git a/result/schemas/anyAttr-derive1_0_0 b/result/schemas/anyAttr-derive1_0_0
new file mode 100644
index 0000000..adae13d
--- /dev/null
+++ b/result/schemas/anyAttr-derive1_0_0
@@ -0,0 +1 @@
+./test/schemas/anyAttr-derive1_0.xml validates
diff --git a/result/schemas/anyAttr-derive1_0_0.err b/result/schemas/anyAttr-derive1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/anyAttr-derive1_0_0.err
diff --git a/result/schemas/anyAttr-derive2_0_0 b/result/schemas/anyAttr-derive2_0_0
new file mode 100644
index 0000000..dccc6e2
--- /dev/null
+++ b/result/schemas/anyAttr-derive2_0_0
@@ -0,0 +1 @@
+./test/schemas/anyAttr-derive2_0.xml validates
diff --git a/result/schemas/anyAttr-derive2_0_0.err b/result/schemas/anyAttr-derive2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/anyAttr-derive2_0_0.err
diff --git a/result/schemas/anyAttr-processContents-err1_0_0 b/result/schemas/anyAttr-processContents-err1_0_0
new file mode 100644
index 0000000..43e77aa
--- /dev/null
+++ b/result/schemas/anyAttr-processContents-err1_0_0
@@ -0,0 +1 @@
+./test/schemas/anyAttr-processContents-err1_0.xml fails to validate
diff --git a/result/schemas/anyAttr-processContents-err1_0_0.err b/result/schemas/anyAttr-processContents-err1_0_0.err
new file mode 100644
index 0000000..dc4766b
--- /dev/null
+++ b/result/schemas/anyAttr-processContents-err1_0_0.err
@@ -0,0 +1,2 @@
+./test/schemas/anyAttr-processContents-err1_0.xml:8: element elem.lax: Schemas validity error : Element '{http://FOO}elem.lax', attribute '{http://FOO}bar': 'o o' is not a valid value of the atomic type 'xs:language'.
+./test/schemas/anyAttr-processContents-err1_0.xml:9: element elem.strict: Schemas validity error : Element '{http://FOO}elem.strict', attribute '{http://FOO}barB': No matching global attribute declaration available, but demanded by the strict wildcard.
diff --git a/result/schemas/anyAttr-processContents1_0_0 b/result/schemas/anyAttr-processContents1_0_0
new file mode 100644
index 0000000..30d0cc2
--- /dev/null
+++ b/result/schemas/anyAttr-processContents1_0_0
@@ -0,0 +1 @@
+./test/schemas/anyAttr-processContents1_0.xml validates
diff --git a/result/schemas/anyAttr-processContents1_0_0.err b/result/schemas/anyAttr-processContents1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/anyAttr-processContents1_0_0.err
diff --git a/result/schemas/anyAttr1_0_0 b/result/schemas/anyAttr1_0_0
new file mode 100644
index 0000000..8afc23a
--- /dev/null
+++ b/result/schemas/anyAttr1_0_0
@@ -0,0 +1 @@
+./test/schemas/anyAttr1_0.xml validates
diff --git a/result/schemas/anyAttr1_0_0.err b/result/schemas/anyAttr1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/anyAttr1_0_0.err
diff --git a/result/schemas/attr0_0_0 b/result/schemas/attr0_0_0
new file mode 100644
index 0000000..d054be5
--- /dev/null
+++ b/result/schemas/attr0_0_0
@@ -0,0 +1 @@
+./test/schemas/attr0_0.xml validates
diff --git a/result/schemas/attr0_0_0.err b/result/schemas/attr0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/attr0_0_0.err
diff --git a/result/schemas/attruse_0_0 b/result/schemas/attruse_0_0
new file mode 100644
index 0000000..c645bc5
--- /dev/null
+++ b/result/schemas/attruse_0_0
@@ -0,0 +1 @@
+./test/schemas/attruse_0_0.xml validates
diff --git a/result/schemas/attruse_0_0.err b/result/schemas/attruse_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/attruse_0_0.err
diff --git a/result/schemas/attruse_0_1 b/result/schemas/attruse_0_1
new file mode 100644
index 0000000..dd23d0b
--- /dev/null
+++ b/result/schemas/attruse_0_1
@@ -0,0 +1 @@
+./test/schemas/attruse_0_1.xml fails to validate
diff --git a/result/schemas/attruse_0_1.err b/result/schemas/attruse_0_1.err
new file mode 100644
index 0000000..5dd4fb1
--- /dev/null
+++ b/result/schemas/attruse_0_1.err
@@ -0,0 +1 @@
+./test/schemas/attruse_0_1.xml:3: element barA: Schemas validity error : Element 'barA': The attribute 'attr' is required but missing.
diff --git a/result/schemas/attruse_0_2 b/result/schemas/attruse_0_2
new file mode 100644
index 0000000..0ea3301
--- /dev/null
+++ b/result/schemas/attruse_0_2
@@ -0,0 +1 @@
+./test/schemas/attruse_0_2.xml fails to validate
diff --git a/result/schemas/attruse_0_2.err b/result/schemas/attruse_0_2.err
new file mode 100644
index 0000000..01cf822
--- /dev/null
+++ b/result/schemas/attruse_0_2.err
@@ -0,0 +1 @@
+./test/schemas/attruse_0_2.xml:6: element barC: Schemas validity error : Element 'barC', attribute 'attr': The attribute 'attr' is not allowed.
diff --git a/result/schemas/bug141312_0_0 b/result/schemas/bug141312_0_0
new file mode 100644
index 0000000..d8048a7
--- /dev/null
+++ b/result/schemas/bug141312_0_0
@@ -0,0 +1 @@
+./test/schemas/bug141312_0.xml validates
diff --git a/result/schemas/bug141312_0_0.err b/result/schemas/bug141312_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug141312_0_0.err
diff --git a/result/schemas/bug141333_0_0 b/result/schemas/bug141333_0_0
new file mode 100644
index 0000000..189660f
--- /dev/null
+++ b/result/schemas/bug141333_0_0
@@ -0,0 +1 @@
+./test/schemas/bug141333_0.xml validates
diff --git a/result/schemas/bug141333_0_0.err b/result/schemas/bug141333_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug141333_0_0.err
diff --git a/result/schemas/bug143951_0_0 b/result/schemas/bug143951_0_0
new file mode 100644
index 0000000..2d0e3e7
--- /dev/null
+++ b/result/schemas/bug143951_0_0
@@ -0,0 +1 @@
+./test/schemas/bug143951_0.xml validates
diff --git a/result/schemas/bug143951_0_0.err b/result/schemas/bug143951_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug143951_0_0.err
diff --git a/result/schemas/bug145246_0_0 b/result/schemas/bug145246_0_0
new file mode 100644
index 0000000..d28ccf7
--- /dev/null
+++ b/result/schemas/bug145246_0_0
@@ -0,0 +1 @@
+./test/schemas/bug145246_0.xml validates
diff --git a/result/schemas/bug145246_0_0.err b/result/schemas/bug145246_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug145246_0_0.err
diff --git a/result/schemas/bug152470_1_1 b/result/schemas/bug152470_1_1
new file mode 100644
index 0000000..b158caa
--- /dev/null
+++ b/result/schemas/bug152470_1_1
@@ -0,0 +1 @@
+./test/schemas/bug152470_1.xml validates
diff --git a/result/schemas/bug152470_1_1.err b/result/schemas/bug152470_1_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug152470_1_1.err
diff --git a/result/schemas/bug167754_0_0 b/result/schemas/bug167754_0_0
new file mode 100644
index 0000000..27b50fc
--- /dev/null
+++ b/result/schemas/bug167754_0_0
@@ -0,0 +1 @@
+./test/schemas/bug167754_0.xml validates
diff --git a/result/schemas/bug167754_0_0.err b/result/schemas/bug167754_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug167754_0_0.err
diff --git a/result/schemas/bug303566_1_1 b/result/schemas/bug303566_1_1
new file mode 100644
index 0000000..8092bf0
--- /dev/null
+++ b/result/schemas/bug303566_1_1
@@ -0,0 +1 @@
+./test/schemas/bug303566_1.xml fails to validate
diff --git a/result/schemas/bug303566_1_1.err b/result/schemas/bug303566_1_1.err
new file mode 100644
index 0000000..9156981
--- /dev/null
+++ b/result/schemas/bug303566_1_1.err
@@ -0,0 +1 @@
+./test/schemas/bug303566_1.xml:9: Schemas validity error : Element 'Part': No match found for key-sequence ['B'] of keyref 'PartRefCountryDummy'.
diff --git a/result/schemas/bug306806_1_0 b/result/schemas/bug306806_1_0
new file mode 100644
index 0000000..c2cb7c8
--- /dev/null
+++ b/result/schemas/bug306806_1_0
@@ -0,0 +1 @@
+./test/schemas/bug306806_0.xml validates
diff --git a/result/schemas/bug306806_1_0.err b/result/schemas/bug306806_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug306806_1_0.err
diff --git a/result/schemas/bug309338_1_0 b/result/schemas/bug309338_1_0
new file mode 100644
index 0000000..65331f1
--- /dev/null
+++ b/result/schemas/bug309338_1_0
@@ -0,0 +1 @@
+./test/schemas/bug309338_0.xml validates
diff --git a/result/schemas/bug309338_1_0.err b/result/schemas/bug309338_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug309338_1_0.err
diff --git a/result/schemas/bug310264_0_0 b/result/schemas/bug310264_0_0
new file mode 100644
index 0000000..e07293d
--- /dev/null
+++ b/result/schemas/bug310264_0_0
@@ -0,0 +1 @@
+./test/schemas/bug310264_0.xml validates
diff --git a/result/schemas/bug310264_0_0.err b/result/schemas/bug310264_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug310264_0_0.err
diff --git a/result/schemas/bug312957_1_0 b/result/schemas/bug312957_1_0
new file mode 100644
index 0000000..1ec6269
--- /dev/null
+++ b/result/schemas/bug312957_1_0
@@ -0,0 +1 @@
+./test/schemas/bug312957_0.xml fails to validate
diff --git a/result/schemas/bug312957_1_0.err b/result/schemas/bug312957_1_0.err
new file mode 100644
index 0000000..40e58ff
--- /dev/null
+++ b/result/schemas/bug312957_1_0.err
@@ -0,0 +1 @@
+./test/schemas/bug312957_0.xml:10: Schemas validity error : Element 'sister': No match found for key-sequence ['annie'] of keyref 'sibling_key_ref'.
diff --git a/result/schemas/bug313982_0_0 b/result/schemas/bug313982_0_0
new file mode 100644
index 0000000..19855cf
--- /dev/null
+++ b/result/schemas/bug313982_0_0
@@ -0,0 +1 @@
+./test/schemas/bug313982_0.xml validates
diff --git a/result/schemas/bug313982_0_0.err b/result/schemas/bug313982_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug313982_0_0.err
diff --git a/result/schemas/bug321475_1_0 b/result/schemas/bug321475_1_0
new file mode 100644
index 0000000..f943041
--- /dev/null
+++ b/result/schemas/bug321475_1_0
@@ -0,0 +1 @@
+./test/schemas/bug321475_0.xml validates
diff --git a/result/schemas/bug321475_1_0.err b/result/schemas/bug321475_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug321475_1_0.err
diff --git a/result/schemas/bug322411_1_0 b/result/schemas/bug322411_1_0
new file mode 100644
index 0000000..79560fb
--- /dev/null
+++ b/result/schemas/bug322411_1_0
@@ -0,0 +1 @@
+./test/schemas/bug322411_0.xml validates
diff --git a/result/schemas/bug322411_1_0.err b/result/schemas/bug322411_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug322411_1_0.err
diff --git a/result/schemas/bug323510_1_0 b/result/schemas/bug323510_1_0
new file mode 100644
index 0000000..c33d685
--- /dev/null
+++ b/result/schemas/bug323510_1_0
@@ -0,0 +1 @@
+./test/schemas/bug323510_0.xml fails to validate
diff --git a/result/schemas/bug323510_1_0.err b/result/schemas/bug323510_1_0.err
new file mode 100644
index 0000000..1655070
--- /dev/null
+++ b/result/schemas/bug323510_1_0.err
@@ -0,0 +1 @@
+./test/schemas/bug323510_0.xml:2: element foo: Schemas validity error : Element 'foo': Missing child element(s). Expected is ( bar ).
diff --git a/result/schemas/bug455953_0_0 b/result/schemas/bug455953_0_0
new file mode 100644
index 0000000..6175d1e
--- /dev/null
+++ b/result/schemas/bug455953_0_0
@@ -0,0 +1 @@
+./test/schemas/bug455953_0.xml validates
diff --git a/result/schemas/bug455953_0_0.err b/result/schemas/bug455953_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/bug455953_0_0.err
diff --git a/result/schemas/changelog093_1_0 b/result/schemas/changelog093_1_0
new file mode 100644
index 0000000..13f83ef
--- /dev/null
+++ b/result/schemas/changelog093_1_0
@@ -0,0 +1 @@
+./test/schemas/changelog093_0.xml fails to validate
diff --git a/result/schemas/changelog093_1_0.err b/result/schemas/changelog093_1_0.err
new file mode 100644
index 0000000..ef0b1ec
--- /dev/null
+++ b/result/schemas/changelog093_1_0.err
@@ -0,0 +1 @@
+./test/schemas/changelog093_0.xml:7: element description: Schemas validity error : Element '{http://www.blackperl.com/XML/ChangeLog}description': Duplicate key-sequence ['PL'] in unique identity-constraint '{http://www.blackperl.com/XML/ChangeLog}changelogDescriptionLangConstraint'.
diff --git a/result/schemas/choice_0_0 b/result/schemas/choice_0_0
new file mode 100644
index 0000000..eda062e
--- /dev/null
+++ b/result/schemas/choice_0_0
@@ -0,0 +1 @@
+./test/schemas/choice_0.xml validates
diff --git a/result/schemas/choice_0_0.err b/result/schemas/choice_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_0_0.err
diff --git a/result/schemas/choice_0_1 b/result/schemas/choice_0_1
new file mode 100644
index 0000000..e4338de
--- /dev/null
+++ b/result/schemas/choice_0_1
@@ -0,0 +1 @@
+./test/schemas/choice_1.xml validates
diff --git a/result/schemas/choice_0_1.err b/result/schemas/choice_0_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_0_1.err
diff --git a/result/schemas/choice_0_2 b/result/schemas/choice_0_2
new file mode 100644
index 0000000..4071315
--- /dev/null
+++ b/result/schemas/choice_0_2
@@ -0,0 +1 @@
+./test/schemas/choice_2.xml fails to validate
diff --git a/result/schemas/choice_0_2.err b/result/schemas/choice_0_2.err
new file mode 100644
index 0000000..5141445
--- /dev/null
+++ b/result/schemas/choice_0_2.err
@@ -0,0 +1 @@
+./test/schemas/choice_2.xml:3: element b: Schemas validity error : Element 'b': This element is not expected.
diff --git a/result/schemas/choice_0_3 b/result/schemas/choice_0_3
new file mode 100644
index 0000000..bef604b
--- /dev/null
+++ b/result/schemas/choice_0_3
@@ -0,0 +1 @@
+./test/schemas/choice_3.xml fails to validate
diff --git a/result/schemas/choice_0_3.err b/result/schemas/choice_0_3.err
new file mode 100644
index 0000000..ece5d69
--- /dev/null
+++ b/result/schemas/choice_0_3.err
@@ -0,0 +1 @@
+./test/schemas/choice_3.xml:3: element a: Schemas validity error : Element 'a': This element is not expected.
diff --git a/result/schemas/choice_0_4 b/result/schemas/choice_0_4
new file mode 100644
index 0000000..0643e3b
--- /dev/null
+++ b/result/schemas/choice_0_4
@@ -0,0 +1 @@
+./test/schemas/choice_4.xml fails to validate
diff --git a/result/schemas/choice_0_4.err b/result/schemas/choice_0_4.err
new file mode 100644
index 0000000..3d3af59
--- /dev/null
+++ b/result/schemas/choice_0_4.err
@@ -0,0 +1 @@
+./test/schemas/choice_4.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is one of ( a, b ).
diff --git a/result/schemas/choice_0_5 b/result/schemas/choice_0_5
new file mode 100644
index 0000000..acaaddd
--- /dev/null
+++ b/result/schemas/choice_0_5
@@ -0,0 +1 @@
+./test/schemas/choice_5.xml fails to validate
diff --git a/result/schemas/choice_0_5.err b/result/schemas/choice_0_5.err
new file mode 100644
index 0000000..39d413c
--- /dev/null
+++ b/result/schemas/choice_0_5.err
@@ -0,0 +1 @@
+./test/schemas/choice_5.xml:3: element b: Schemas validity error : Element 'b': This element is not expected.
diff --git a/result/schemas/choice_0_6 b/result/schemas/choice_0_6
new file mode 100644
index 0000000..ee4ceae
--- /dev/null
+++ b/result/schemas/choice_0_6
@@ -0,0 +1 @@
+./test/schemas/choice_6.xml fails to validate
diff --git a/result/schemas/choice_0_6.err b/result/schemas/choice_0_6.err
new file mode 100644
index 0000000..414d1e2
--- /dev/null
+++ b/result/schemas/choice_0_6.err
@@ -0,0 +1 @@
+./test/schemas/choice_6.xml:3: element b: Schemas validity error : Element 'b': This element is not expected.
diff --git a/result/schemas/choice_1_0 b/result/schemas/choice_1_0
new file mode 100644
index 0000000..eda062e
--- /dev/null
+++ b/result/schemas/choice_1_0
@@ -0,0 +1 @@
+./test/schemas/choice_0.xml validates
diff --git a/result/schemas/choice_1_0.err b/result/schemas/choice_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_1_0.err
diff --git a/result/schemas/choice_1_1 b/result/schemas/choice_1_1
new file mode 100644
index 0000000..e4338de
--- /dev/null
+++ b/result/schemas/choice_1_1
@@ -0,0 +1 @@
+./test/schemas/choice_1.xml validates
diff --git a/result/schemas/choice_1_1.err b/result/schemas/choice_1_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_1_1.err
diff --git a/result/schemas/choice_1_2 b/result/schemas/choice_1_2
new file mode 100644
index 0000000..4071315
--- /dev/null
+++ b/result/schemas/choice_1_2
@@ -0,0 +1 @@
+./test/schemas/choice_2.xml fails to validate
diff --git a/result/schemas/choice_1_2.err b/result/schemas/choice_1_2.err
new file mode 100644
index 0000000..5141445
--- /dev/null
+++ b/result/schemas/choice_1_2.err
@@ -0,0 +1 @@
+./test/schemas/choice_2.xml:3: element b: Schemas validity error : Element 'b': This element is not expected.
diff --git a/result/schemas/choice_1_3 b/result/schemas/choice_1_3
new file mode 100644
index 0000000..bef604b
--- /dev/null
+++ b/result/schemas/choice_1_3
@@ -0,0 +1 @@
+./test/schemas/choice_3.xml fails to validate
diff --git a/result/schemas/choice_1_3.err b/result/schemas/choice_1_3.err
new file mode 100644
index 0000000..ece5d69
--- /dev/null
+++ b/result/schemas/choice_1_3.err
@@ -0,0 +1 @@
+./test/schemas/choice_3.xml:3: element a: Schemas validity error : Element 'a': This element is not expected.
diff --git a/result/schemas/choice_1_4 b/result/schemas/choice_1_4
new file mode 100644
index 0000000..36b3827
--- /dev/null
+++ b/result/schemas/choice_1_4
@@ -0,0 +1 @@
+./test/schemas/choice_4.xml validates
diff --git a/result/schemas/choice_1_4.err b/result/schemas/choice_1_4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_1_4.err
diff --git a/result/schemas/choice_1_5 b/result/schemas/choice_1_5
new file mode 100644
index 0000000..acaaddd
--- /dev/null
+++ b/result/schemas/choice_1_5
@@ -0,0 +1 @@
+./test/schemas/choice_5.xml fails to validate
diff --git a/result/schemas/choice_1_5.err b/result/schemas/choice_1_5.err
new file mode 100644
index 0000000..39d413c
--- /dev/null
+++ b/result/schemas/choice_1_5.err
@@ -0,0 +1 @@
+./test/schemas/choice_5.xml:3: element b: Schemas validity error : Element 'b': This element is not expected.
diff --git a/result/schemas/choice_1_6 b/result/schemas/choice_1_6
new file mode 100644
index 0000000..ee4ceae
--- /dev/null
+++ b/result/schemas/choice_1_6
@@ -0,0 +1 @@
+./test/schemas/choice_6.xml fails to validate
diff --git a/result/schemas/choice_1_6.err b/result/schemas/choice_1_6.err
new file mode 100644
index 0000000..414d1e2
--- /dev/null
+++ b/result/schemas/choice_1_6.err
@@ -0,0 +1 @@
+./test/schemas/choice_6.xml:3: element b: Schemas validity error : Element 'b': This element is not expected.
diff --git a/result/schemas/choice_2_0 b/result/schemas/choice_2_0
new file mode 100644
index 0000000..eda062e
--- /dev/null
+++ b/result/schemas/choice_2_0
@@ -0,0 +1 @@
+./test/schemas/choice_0.xml validates
diff --git a/result/schemas/choice_2_0.err b/result/schemas/choice_2_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_2_0.err
diff --git a/result/schemas/choice_2_1 b/result/schemas/choice_2_1
new file mode 100644
index 0000000..e4338de
--- /dev/null
+++ b/result/schemas/choice_2_1
@@ -0,0 +1 @@
+./test/schemas/choice_1.xml validates
diff --git a/result/schemas/choice_2_1.err b/result/schemas/choice_2_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_2_1.err
diff --git a/result/schemas/choice_2_2 b/result/schemas/choice_2_2
new file mode 100644
index 0000000..c58e154
--- /dev/null
+++ b/result/schemas/choice_2_2
@@ -0,0 +1 @@
+./test/schemas/choice_2.xml validates
diff --git a/result/schemas/choice_2_2.err b/result/schemas/choice_2_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_2_2.err
diff --git a/result/schemas/choice_2_3 b/result/schemas/choice_2_3
new file mode 100644
index 0000000..1058f7e
--- /dev/null
+++ b/result/schemas/choice_2_3
@@ -0,0 +1 @@
+./test/schemas/choice_3.xml validates
diff --git a/result/schemas/choice_2_3.err b/result/schemas/choice_2_3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_2_3.err
diff --git a/result/schemas/choice_2_4 b/result/schemas/choice_2_4
new file mode 100644
index 0000000..0643e3b
--- /dev/null
+++ b/result/schemas/choice_2_4
@@ -0,0 +1 @@
+./test/schemas/choice_4.xml fails to validate
diff --git a/result/schemas/choice_2_4.err b/result/schemas/choice_2_4.err
new file mode 100644
index 0000000..3d3af59
--- /dev/null
+++ b/result/schemas/choice_2_4.err
@@ -0,0 +1 @@
+./test/schemas/choice_4.xml:1: element doc: Schemas validity error : Element 'doc': Missing child element(s). Expected is one of ( a, b ).
diff --git a/result/schemas/choice_2_5 b/result/schemas/choice_2_5
new file mode 100644
index 0000000..67e79ba
--- /dev/null
+++ b/result/schemas/choice_2_5
@@ -0,0 +1 @@
+./test/schemas/choice_5.xml validates
diff --git a/result/schemas/choice_2_5.err b/result/schemas/choice_2_5.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/choice_2_5.err
diff --git a/result/schemas/choice_2_6 b/result/schemas/choice_2_6
new file mode 100644
index 0000000..ee4ceae
--- /dev/null
+++ b/result/schemas/choice_2_6
@@ -0,0 +1 @@
+./test/schemas/choice_6.xml fails to validate
diff --git a/result/schemas/choice_2_6.err b/result/schemas/choice_2_6.err
new file mode 100644
index 0000000..bef56da
--- /dev/null
+++ b/result/schemas/choice_2_6.err
@@ -0,0 +1 @@
+./test/schemas/choice_6.xml:5: element a: Schemas validity error : Element 'a': This element is not expected.
diff --git a/result/schemas/complex-type-extension_0_0 b/result/schemas/complex-type-extension_0_0
new file mode 100644
index 0000000..ef15215
--- /dev/null
+++ b/result/schemas/complex-type-extension_0_0
@@ -0,0 +1 @@
+./test/schemas/complex-type-extension_0.xml validates
diff --git a/result/schemas/complex-type-extension_0_0.err b/result/schemas/complex-type-extension_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/complex-type-extension_0_0.err
diff --git a/result/schemas/cos-ct-extends-1-3_0_0 b/result/schemas/cos-ct-extends-1-3_0_0
new file mode 100644
index 0000000..5dd5bd7
--- /dev/null
+++ b/result/schemas/cos-ct-extends-1-3_0_0
@@ -0,0 +1 @@
+./test/schemas/cos-ct-extends-1-3_0.xml validates
diff --git a/result/schemas/cos-ct-extends-1-3_0_0.err b/result/schemas/cos-ct-extends-1-3_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/cos-ct-extends-1-3_0_0.err
diff --git a/result/schemas/cos-st-restricts-1-2-err_0_0 b/result/schemas/cos-st-restricts-1-2-err_0_0
new file mode 100644
index 0000000..dc34253
--- /dev/null
+++ b/result/schemas/cos-st-restricts-1-2-err_0_0
@@ -0,0 +1 @@
+./test/schemas/cos-st-restricts-1-2-err_0.xml fails to validate
diff --git a/result/schemas/cos-st-restricts-1-2-err_0_0.err b/result/schemas/cos-st-restricts-1-2-err_0_0.err
new file mode 100644
index 0000000..ccc12b6
--- /dev/null
+++ b/result/schemas/cos-st-restricts-1-2-err_0_0.err
@@ -0,0 +1,2 @@
+./test/schemas/cos-st-restricts-1-2-err_0.xml:3: element foo: Schemas validity error : Element '{http://FOO}foo': [facet 'length'] The value has a length of '2'; this differs from the allowed length of '3'.
+./test/schemas/cos-st-restricts-1-2-err_0.xml:3: element foo: Schemas validity error : Element '{http://FOO}foo': '1 2' is not a valid value of the list type '{http://FOO}type.A'.
diff --git a/result/schemas/ct-sc-nobase_0_0 b/result/schemas/ct-sc-nobase_0_0
new file mode 100644
index 0000000..168712a
--- /dev/null
+++ b/result/schemas/ct-sc-nobase_0_0
@@ -0,0 +1 @@
+./test/schemas/ct-sc-nobase_0.xml validates
diff --git a/result/schemas/ct-sc-nobase_0_0.err b/result/schemas/ct-sc-nobase_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ct-sc-nobase_0_0.err
diff --git a/result/schemas/date_0_0 b/result/schemas/date_0_0
new file mode 100644
index 0000000..2554d30
--- /dev/null
+++ b/result/schemas/date_0_0
@@ -0,0 +1 @@
+./test/schemas/date_0.xml validates
diff --git a/result/schemas/date_0_0.err b/result/schemas/date_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/date_0_0.err
diff --git a/result/schemas/decimal-1_1_0 b/result/schemas/decimal-1_1_0
new file mode 100644
index 0000000..041b31d
--- /dev/null
+++ b/result/schemas/decimal-1_1_0
@@ -0,0 +1 @@
+./test/schemas/decimal-1_0.xml fails to validate
diff --git a/result/schemas/decimal-1_1_0.err b/result/schemas/decimal-1_1_0.err
new file mode 100644
index 0000000..7f4fa9c
--- /dev/null
+++ b/result/schemas/decimal-1_1_0.err
@@ -0,0 +1,8 @@
+./test/schemas/decimal-1_0.xml:16: element val: Schemas validity error : Element 'val': '.' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:17: element val: Schemas validity error : Element 'val': '-' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:18: element val: Schemas validity error : Element 'val': '+' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:19: element val: Schemas validity error : Element 'val': '*' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:20: element val: Schemas validity error : Element 'val': '- 1' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:21: element val: Schemas validity error : Element 'val': '+ 1' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:22: element val: Schemas validity error : Element 'val': '+ 0' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-1_0.xml:23: element val: Schemas validity error : Element 'val': '- 0' is not a valid value of the atomic type 'myDecimal'.
diff --git a/result/schemas/decimal-2_1_0 b/result/schemas/decimal-2_1_0
new file mode 100644
index 0000000..f68ca92
--- /dev/null
+++ b/result/schemas/decimal-2_1_0
@@ -0,0 +1 @@
+./test/schemas/decimal-2_0.xml fails to validate
diff --git a/result/schemas/decimal-2_1_0.err b/result/schemas/decimal-2_1_0.err
new file mode 100644
index 0000000..fe663c2
--- /dev/null
+++ b/result/schemas/decimal-2_1_0.err
@@ -0,0 +1,4 @@
+./test/schemas/decimal-2_0.xml:12: element val: Schemas validity error : Element 'val': [facet 'minInclusive'] The value '-0.1' is less than the minimum value allowed ('0').
+./test/schemas/decimal-2_0.xml:12: element val: Schemas validity error : Element 'val': '-0.1' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-2_0.xml:13: element val: Schemas validity error : Element 'val': [facet 'minInclusive'] The value '-1' is less than the minimum value allowed ('0').
+./test/schemas/decimal-2_0.xml:13: element val: Schemas validity error : Element 'val': '-1' is not a valid value of the atomic type 'myDecimal'.
diff --git a/result/schemas/decimal-3_1_0 b/result/schemas/decimal-3_1_0
new file mode 100644
index 0000000..5601535
--- /dev/null
+++ b/result/schemas/decimal-3_1_0
@@ -0,0 +1 @@
+./test/schemas/decimal-3_0.xml fails to validate
diff --git a/result/schemas/decimal-3_1_0.err b/result/schemas/decimal-3_1_0.err
new file mode 100644
index 0000000..bba8cf9
--- /dev/null
+++ b/result/schemas/decimal-3_1_0.err
@@ -0,0 +1,8 @@
+./test/schemas/decimal-3_0.xml:12: element val: Schemas validity error : Element 'val': [facet 'totalDigits'] The value '0.123' has more digits than are allowed ('2').
+./test/schemas/decimal-3_0.xml:12: element val: Schemas validity error : Element 'val': '0.123' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-3_0.xml:13: element val: Schemas validity error : Element 'val': [facet 'totalDigits'] The value '0.023' has more digits than are allowed ('2').
+./test/schemas/decimal-3_0.xml:13: element val: Schemas validity error : Element 'val': '0.023' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-3_0.xml:14: element val: Schemas validity error : Element 'val': [facet 'totalDigits'] The value '123' has more digits than are allowed ('2').
+./test/schemas/decimal-3_0.xml:14: element val: Schemas validity error : Element 'val': '123' is not a valid value of the atomic type 'myDecimal'.
+./test/schemas/decimal-3_0.xml:15: element val: Schemas validity error : Element 'val': [facet 'totalDigits'] The value '12.3' has more digits than are allowed ('2').
+./test/schemas/decimal-3_0.xml:15: element val: Schemas validity error : Element 'val': '12.3' is not a valid value of the atomic type 'myDecimal'.
diff --git a/result/schemas/derivation-ok-extension-err_0_0 b/result/schemas/derivation-ok-extension-err_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/derivation-ok-extension-err_0_0
diff --git a/result/schemas/derivation-ok-extension-err_0_0.err b/result/schemas/derivation-ok-extension-err_0_0.err
new file mode 100644
index 0000000..a0fba52
--- /dev/null
+++ b/result/schemas/derivation-ok-extension-err_0_0.err
@@ -0,0 +1 @@
+./test/schemas/derivation-ok-extension-err_0.xsd:6: element complexType: Schemas parser error : local complex type: Duplicate attribute use 'barA_1'.
diff --git a/result/schemas/derivation-ok-extension_0_0 b/result/schemas/derivation-ok-extension_0_0
new file mode 100644
index 0000000..0947365
--- /dev/null
+++ b/result/schemas/derivation-ok-extension_0_0
@@ -0,0 +1 @@
+./test/schemas/derivation-ok-extension_0.xml validates
diff --git a/result/schemas/derivation-ok-extension_0_0.err b/result/schemas/derivation-ok-extension_0_0.err
new file mode 100644
index 0000000..1314232
--- /dev/null
+++ b/result/schemas/derivation-ok-extension_0_0.err
@@ -0,0 +1 @@
+./test/schemas/derivation-ok-extension_0.xsd:10: element attribute: Schemas parser warning : Element '{http://www.w3.org/2001/XMLSchema}attribute': Skipping attribute use prohibition, since it is pointless when extending a type.
diff --git a/result/schemas/derivation-ok-restriction-2-1-1_0_0 b/result/schemas/derivation-ok-restriction-2-1-1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/derivation-ok-restriction-2-1-1_0_0
diff --git a/result/schemas/derivation-ok-restriction-2-1-1_0_0.err b/result/schemas/derivation-ok-restriction-2-1-1_0_0.err
new file mode 100644
index 0000000..bd38dd2
--- /dev/null
+++ b/result/schemas/derivation-ok-restriction-2-1-1_0_0.err
@@ -0,0 +1,6 @@
+./test/schemas/derivation-ok-restriction-2-1-1_0.xsd:6: element complexType: Schemas parser error : local complex type, attribute use 'barB_1': The 'optional' attribute use is inconsistent with the corresponding 'required' attribute use of the base complex type definition '{http://FOO}typeA'.
+./test/schemas/derivation-ok-restriction-2-1-1_0.xsd:6: element complexType: Schemas parser error : local complex type, attribute use 'barC_1': Neither a matching attribute use, nor a matching wildcard exists in the base complex type definition '{http://FOO}typeA'.
+./test/schemas/derivation-ok-restriction-2-1-1_0.xsd:6: element complexType: Schemas parser error : local complex type, attribute use 'barC_2': Neither a matching attribute use, nor a matching wildcard exists in the base complex type definition '{http://FOO}typeA'.
+./test/schemas/derivation-ok-restriction-2-1-1_0.xsd:6: element complexType: Schemas parser error : local complex type, attribute use 'barD_1': Neither a matching attribute use, nor a matching wildcard exists in the base complex type definition '{http://FOO}typeA'.
+./test/schemas/derivation-ok-restriction-2-1-1_0.xsd:6: element complexType: Schemas parser error : local complex type, attribute use 'barD_2': Neither a matching attribute use, nor a matching wildcard exists in the base complex type definition '{http://FOO}typeA'.
+./test/schemas/derivation-ok-restriction-2-1-1_0.xsd:6: element complexType: Schemas parser error : local complex type: A matching attribute use for the 'required' attribute use 'barB_3' of the base complex type definition '{http://FOO}typeA' is missing.
diff --git a/result/schemas/derivation-ok-restriction-4-1-err_0_0 b/result/schemas/derivation-ok-restriction-4-1-err_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/derivation-ok-restriction-4-1-err_0_0
diff --git a/result/schemas/derivation-ok-restriction-4-1-err_0_0.err b/result/schemas/derivation-ok-restriction-4-1-err_0_0.err
new file mode 100644
index 0000000..72283fb
--- /dev/null
+++ b/result/schemas/derivation-ok-restriction-4-1-err_0_0.err
@@ -0,0 +1,3 @@
+./test/schemas/derivation-ok-restriction-4-1-err_0.xsd:33: element complexType: Schemas parser error : complex type 'type.A': The complex type definition has an attribute wildcard, but the base complex type definition '{http://FOO}base.type.A' does not have one.
+./test/schemas/derivation-ok-restriction-4-1-err_0.xsd:45: element complexType: Schemas parser error : complex type 'type.B': The attribute wildcard is not a valid subset of the wildcard in the base complex type definition '{http://FOO}base.type.B'.
+./test/schemas/derivation-ok-restriction-4-1-err_0.xsd:65: element complexType: Schemas parser error : complex type 'base.type.C': The {process contents} of the attribute wildcard is weaker than the one in the base complex type definition '{http://FOO}base.type.C'.
diff --git a/result/schemas/derivation-restriction-anyAttr_0_0 b/result/schemas/derivation-restriction-anyAttr_0_0
new file mode 100644
index 0000000..4e04176
--- /dev/null
+++ b/result/schemas/derivation-restriction-anyAttr_0_0
@@ -0,0 +1 @@
+./test/schemas/derivation-restriction-anyAttr_0.xml validates
diff --git a/result/schemas/derivation-restriction-anyAttr_0_0.err b/result/schemas/derivation-restriction-anyAttr_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/derivation-restriction-anyAttr_0_0.err
diff --git a/result/schemas/deter0_0_0 b/result/schemas/deter0_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/deter0_0_0
diff --git a/result/schemas/deter0_0_0.err b/result/schemas/deter0_0_0.err
new file mode 100644
index 0000000..d2c8b4e
--- /dev/null
+++ b/result/schemas/deter0_0_0.err
@@ -0,0 +1 @@
+./test/schemas/deter0_0.xsd:6: element complexType: Schemas parser error : local complex type: The content model is not determinist.
diff --git a/result/schemas/dur_0_0 b/result/schemas/dur_0_0
new file mode 100644
index 0000000..5b3a2c9
--- /dev/null
+++ b/result/schemas/dur_0_0
@@ -0,0 +1 @@
+./test/schemas/dur_0.xml validates
diff --git a/result/schemas/dur_0_0.err b/result/schemas/dur_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/dur_0_0.err
diff --git a/result/schemas/elem0_0_0 b/result/schemas/elem0_0_0
new file mode 100644
index 0000000..0ab06b4
--- /dev/null
+++ b/result/schemas/elem0_0_0
@@ -0,0 +1 @@
+./test/schemas/elem0_0.xml validates
diff --git a/result/schemas/elem0_0_0.err b/result/schemas/elem0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/elem0_0_0.err
diff --git a/result/schemas/element-err_0_0 b/result/schemas/element-err_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/element-err_0_0
diff --git a/result/schemas/element-err_0_0.err b/result/schemas/element-err_0_0.err
new file mode 100644
index 0000000..70524f6
--- /dev/null
+++ b/result/schemas/element-err_0_0.err
@@ -0,0 +1,20 @@
+./test/schemas/element-err_0.xsd:8: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'name' is required but missing.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'ref' is not allowed.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'minOccurs' is not allowed.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'maxOccurs' is not allowed.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'form' is not allowed.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'final': The value 'fantasy' is not valid. Expected is '(#all | List of (extension | restriction))'.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'block': The value 'flute' is not valid. Expected is '(#all | List of (extension | restriction | substitution))'.
+./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attributes 'default' and 'fixed' are mutually exclusive.
+./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'minOccurs': The value must not be greater than the value of 'maxOccurs'.
+./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attributes 'ref' and 'name' are mutually exclusive.
+./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'abstract': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/element-err_0.xsd:23: element complexType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The content is not valid. Expected is (annotation?).
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'maxOccurs': The value must be greater than or equal to 1.
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'abstract' is not allowed.
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'substitutionGroup' is not allowed.
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'final' is not allowed.
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'block': The value 'flute' is not valid. Expected is '(#all | List of (extension | restriction | substitution))'.
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attributes 'default' and 'fixed' are mutually exclusive.
+./test/schemas/element-err_0.xsd:31: element complexType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'type' and the <complexType> child are mutually exclusive.
+./test/schemas/element-err_0.xsd:32: element simpleType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The content is not valid. Expected is (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*)).
diff --git a/result/schemas/element-minmax-err_0_0 b/result/schemas/element-minmax-err_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/element-minmax-err_0_0
diff --git a/result/schemas/element-minmax-err_0_0.err b/result/schemas/element-minmax-err_0_0.err
new file mode 100644
index 0000000..e53f3d8
--- /dev/null
+++ b/result/schemas/element-minmax-err_0_0.err
@@ -0,0 +1 @@
+./test/schemas/element-minmax-err_0.xsd:6: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'maxOccurs': The value must be greater than or equal to 1.
diff --git a/result/schemas/empty-value_1_0 b/result/schemas/empty-value_1_0
new file mode 100644
index 0000000..5864557
--- /dev/null
+++ b/result/schemas/empty-value_1_0
@@ -0,0 +1 @@
+./test/schemas/empty-value_0.xml validates
diff --git a/result/schemas/empty-value_1_0.err b/result/schemas/empty-value_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/empty-value_1_0.err
diff --git a/result/schemas/empty-value_1_1 b/result/schemas/empty-value_1_1
new file mode 100644
index 0000000..2e2d329
--- /dev/null
+++ b/result/schemas/empty-value_1_1
@@ -0,0 +1 @@
+./test/schemas/empty-value_1.xml validates
diff --git a/result/schemas/empty-value_1_1.err b/result/schemas/empty-value_1_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/empty-value_1_1.err
diff --git a/result/schemas/empty_0_0 b/result/schemas/empty_0_0
new file mode 100644
index 0000000..88fc52b
--- /dev/null
+++ b/result/schemas/empty_0_0
@@ -0,0 +1 @@
+./test/schemas/empty_0.xml validates
diff --git a/result/schemas/empty_0_0.err b/result/schemas/empty_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/empty_0_0.err
diff --git a/result/schemas/empty_1_0 b/result/schemas/empty_1_0
new file mode 100644
index 0000000..88fc52b
--- /dev/null
+++ b/result/schemas/empty_1_0
@@ -0,0 +1 @@
+./test/schemas/empty_0.xml validates
diff --git a/result/schemas/empty_1_0.err b/result/schemas/empty_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/empty_1_0.err
diff --git a/result/schemas/extension0_0_0 b/result/schemas/extension0_0_0
new file mode 100644
index 0000000..d3dca7b
--- /dev/null
+++ b/result/schemas/extension0_0_0
@@ -0,0 +1 @@
+./test/schemas/extension0_0.xml validates
diff --git a/result/schemas/extension0_0_0.err b/result/schemas/extension0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/extension0_0_0.err
diff --git a/result/schemas/extension1_0_0 b/result/schemas/extension1_0_0
new file mode 100644
index 0000000..23da9ea
--- /dev/null
+++ b/result/schemas/extension1_0_0
@@ -0,0 +1 @@
+./test/schemas/extension1_0.xml validates
diff --git a/result/schemas/extension1_0_0.err b/result/schemas/extension1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/extension1_0_0.err
diff --git a/result/schemas/extension1_0_1 b/result/schemas/extension1_0_1
new file mode 100644
index 0000000..4a47b86
--- /dev/null
+++ b/result/schemas/extension1_0_1
@@ -0,0 +1 @@
+./test/schemas/extension1_1.xml fails to validate
diff --git a/result/schemas/extension1_0_1.err b/result/schemas/extension1_0_1.err
new file mode 100644
index 0000000..bb5b047
--- /dev/null
+++ b/result/schemas/extension1_0_1.err
@@ -0,0 +1 @@
+./test/schemas/extension1_1.xml:1: element title: Schemas validity error : Element 'title', attribute 'langue': The attribute 'langue' is not allowed.
diff --git a/result/schemas/extension1_0_2 b/result/schemas/extension1_0_2
new file mode 100644
index 0000000..fc8eccc
--- /dev/null
+++ b/result/schemas/extension1_0_2
@@ -0,0 +1 @@
+./test/schemas/extension1_2.xml fails to validate
diff --git a/result/schemas/extension1_0_2.err b/result/schemas/extension1_0_2.err
new file mode 100644
index 0000000..161fe9e
--- /dev/null
+++ b/result/schemas/extension1_0_2.err
@@ -0,0 +1 @@
+./test/schemas/extension1_2.xml:1: element title: Schemas validity error : Element 'title': Element content is not allowed, because the content type is a simple type definition.
diff --git a/result/schemas/extension2_1_0 b/result/schemas/extension2_1_0
new file mode 100644
index 0000000..88c15aa
--- /dev/null
+++ b/result/schemas/extension2_1_0
@@ -0,0 +1 @@
+./test/schemas/extension2_0.xml validates
diff --git a/result/schemas/extension2_1_0.err b/result/schemas/extension2_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/extension2_1_0.err
diff --git a/result/schemas/facet-unionST-err1_0_0 b/result/schemas/facet-unionST-err1_0_0
new file mode 100644
index 0000000..baf8280
--- /dev/null
+++ b/result/schemas/facet-unionST-err1_0_0
@@ -0,0 +1 @@
+./test/schemas/facet-unionST-err1_0.xml fails to validate
diff --git a/result/schemas/facet-unionST-err1_0_0.err b/result/schemas/facet-unionST-err1_0_0.err
new file mode 100644
index 0000000..392dbe5
--- /dev/null
+++ b/result/schemas/facet-unionST-err1_0_0.err
@@ -0,0 +1 @@
+./test/schemas/facet-unionST-err1_0.xml:3: element foo: Schemas validity error : Element '{http://FOO}foo': 'tiny' is not a valid value of the union type '{http://FOO}fooType.B'.
diff --git a/result/schemas/facet-whiteSpace_0_0 b/result/schemas/facet-whiteSpace_0_0
new file mode 100644
index 0000000..63276c6
--- /dev/null
+++ b/result/schemas/facet-whiteSpace_0_0
@@ -0,0 +1 @@
+./test/schemas/facet-whiteSpace_0.xml validates
diff --git a/result/schemas/facet-whiteSpace_0_0.err b/result/schemas/facet-whiteSpace_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/facet-whiteSpace_0_0.err
diff --git a/result/schemas/group0_0_0 b/result/schemas/group0_0_0
new file mode 100644
index 0000000..587a74a
--- /dev/null
+++ b/result/schemas/group0_0_0
@@ -0,0 +1 @@
+./test/schemas/group0_0.xml validates
diff --git a/result/schemas/group0_0_0.err b/result/schemas/group0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/group0_0_0.err
diff --git a/result/schemas/hexbinary_0_0 b/result/schemas/hexbinary_0_0
new file mode 100644
index 0000000..783bab4
--- /dev/null
+++ b/result/schemas/hexbinary_0_0
@@ -0,0 +1 @@
+./test/schemas/hexbinary_0.xml validates
diff --git a/result/schemas/hexbinary_0_0.err b/result/schemas/hexbinary_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/hexbinary_0_0.err
diff --git a/result/schemas/hexbinary_0_1 b/result/schemas/hexbinary_0_1
new file mode 100644
index 0000000..37b10d1
--- /dev/null
+++ b/result/schemas/hexbinary_0_1
@@ -0,0 +1 @@
+./test/schemas/hexbinary_1.xml fails to validate
diff --git a/result/schemas/hexbinary_0_1.err b/result/schemas/hexbinary_0_1.err
new file mode 100644
index 0000000..eb0c74c
--- /dev/null
+++ b/result/schemas/hexbinary_0_1.err
@@ -0,0 +1,10 @@
+./test/schemas/hexbinary_1.xml:6: element hex: Schemas validity error : Element 'hex': '0' is not a valid value of the atomic type 'xs:hexBinary'.
+./test/schemas/hexbinary_1.xml:7: element hex: Schemas validity error : Element 'hex': '0123456789ABCDEFGH' is not a valid value of the atomic type 'xs:hexBinary'.
+./test/schemas/hexbinary_1.xml:8: element hex: Schemas validity error : Element 'hex': '+abcdef0123456789' is not a valid value of the atomic type 'xs:hexBinary'.
+./test/schemas/hexbinary_1.xml:9: element hex: Schemas validity error : Element 'hex': '-0123456789abcdef' is not a valid value of the atomic type 'xs:hexBinary'.
+./test/schemas/hexbinary_1.xml:11: element hex2: Schemas validity error : Element 'hex2': [facet 'maxLength'] The value has a length of '9'; this exceeds the allowed maximum length of '8'.
+./test/schemas/hexbinary_1.xml:11: element hex2: Schemas validity error : Element 'hex2': '112233445566778899' is not a valid value of the local atomic type.
+./test/schemas/hexbinary_1.xml:13: element hex3: Schemas validity error : Element 'hex3': [facet 'length'] The value has a length of '1'; this differs from the allowed length of '2'.
+./test/schemas/hexbinary_1.xml:13: element hex3: Schemas validity error : Element 'hex3': 'ab' is not a valid value of the local atomic type.
+./test/schemas/hexbinary_1.xml:14: element hex3: Schemas validity error : Element 'hex3': [facet 'length'] The value has a length of '3'; this differs from the allowed length of '2'.
+./test/schemas/hexbinary_1.xml:14: element hex3: Schemas validity error : Element 'hex3': '00fedc' is not a valid value of the local atomic type.
diff --git a/result/schemas/idc-keyref-err1_1_0 b/result/schemas/idc-keyref-err1_1_0
new file mode 100644
index 0000000..d4333a9
--- /dev/null
+++ b/result/schemas/idc-keyref-err1_1_0
@@ -0,0 +1 @@
+./test/schemas/idc-keyref-err1_0.xml fails to validate
diff --git a/result/schemas/idc-keyref-err1_1_0.err b/result/schemas/idc-keyref-err1_1_0.err
new file mode 100644
index 0000000..8e9cb20
--- /dev/null
+++ b/result/schemas/idc-keyref-err1_1_0.err
@@ -0,0 +1 @@
+./test/schemas/idc-keyref-err1_0.xml:12: Schemas validity error : Element '{urn:test:foo}Ref': No match found for key-sequence ['L4'] of keyref '{urn:test:foo}LinkKeyRef'.
diff --git a/result/schemas/import0_0_0 b/result/schemas/import0_0_0
new file mode 100644
index 0000000..1231800
--- /dev/null
+++ b/result/schemas/import0_0_0
@@ -0,0 +1 @@
+./test/schemas/import0_0.xml validates
diff --git a/result/schemas/import0_0_0.err b/result/schemas/import0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/import0_0_0.err
diff --git a/result/schemas/import1_0_0 b/result/schemas/import1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/import1_0_0
diff --git a/result/schemas/import1_0_0.err b/result/schemas/import1_0_0.err
new file mode 100644
index 0000000..96f572f
--- /dev/null
+++ b/result/schemas/import1_0_0.err
@@ -0,0 +1,4 @@
+I/O warning : failed to load external entity "test/schemas/import1_0bc.imp"
+./test/schemas/import1_0.xsd:11: element import: Schemas parser warning : Element '{http://www.w3.org/2001/XMLSchema}import': Failed to locate a schema at location 'test/schemas/import1_0bc.imp'. Skipping the import.
+./test/schemas/import1_0.xsd:16: element import: Schemas parser warning : Element '{http://www.w3.org/2001/XMLSchema}import': Skipping import of schema located at 'test/schemas/import1_0b.imp' for the namespace 'http://BAR', since this namespace was already imported with the schema located at 'test/schemas/import1_0.imp'.
+./test/schemas/import1_0.xsd:26: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'ref': The QName value '{http://BAR}bar.B' does not resolve to a(n) element declaration.
diff --git a/result/schemas/import2_0_0 b/result/schemas/import2_0_0
new file mode 100644
index 0000000..2960b48
--- /dev/null
+++ b/result/schemas/import2_0_0
@@ -0,0 +1 @@
+./test/schemas/import2_0.xml validates
diff --git a/result/schemas/import2_0_0.err b/result/schemas/import2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/import2_0_0.err
diff --git a/result/schemas/include1_0_0 b/result/schemas/include1_0_0
new file mode 100644
index 0000000..8ba8a2e
--- /dev/null
+++ b/result/schemas/include1_0_0
@@ -0,0 +1 @@
+./test/schemas/include1_0.xml validates
diff --git a/result/schemas/include1_0_0.err b/result/schemas/include1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/include1_0_0.err
diff --git a/result/schemas/include2_0_0 b/result/schemas/include2_0_0
new file mode 100644
index 0000000..7aea2b0
--- /dev/null
+++ b/result/schemas/include2_0_0
@@ -0,0 +1 @@
+./test/schemas/include2_0.xml validates
diff --git a/result/schemas/include2_0_0.err b/result/schemas/include2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/include2_0_0.err
diff --git a/result/schemas/include3_0_0 b/result/schemas/include3_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/include3_0_0
diff --git a/result/schemas/include3_0_0.err b/result/schemas/include3_0_0.err
new file mode 100644
index 0000000..27bb5d0
--- /dev/null
+++ b/result/schemas/include3_0_0.err
@@ -0,0 +1 @@
+test/schemas/include3_0.inc:4: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': A global element declaration '{http://FOO}bar' does already exist.
diff --git a/result/schemas/item_0_0 b/result/schemas/item_0_0
new file mode 100644
index 0000000..90fa561
--- /dev/null
+++ b/result/schemas/item_0_0
@@ -0,0 +1 @@
+./test/schemas/item_0.xml validates
diff --git a/result/schemas/item_0_0.err b/result/schemas/item_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/item_0_0.err
diff --git a/result/schemas/item_1_0 b/result/schemas/item_1_0
new file mode 100644
index 0000000..90fa561
--- /dev/null
+++ b/result/schemas/item_1_0
@@ -0,0 +1 @@
+./test/schemas/item_0.xml validates
diff --git a/result/schemas/item_1_0.err b/result/schemas/item_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/item_1_0.err
diff --git a/result/schemas/length1_0_0 b/result/schemas/length1_0_0
new file mode 100644
index 0000000..58cbe24
--- /dev/null
+++ b/result/schemas/length1_0_0
@@ -0,0 +1 @@
+./test/schemas/length1_0.xml validates
diff --git a/result/schemas/length1_0_0.err b/result/schemas/length1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/length1_0_0.err
diff --git a/result/schemas/length2_0_0 b/result/schemas/length2_0_0
new file mode 100644
index 0000000..4fd27d6
--- /dev/null
+++ b/result/schemas/length2_0_0
@@ -0,0 +1 @@
+./test/schemas/length2_0.xml validates
diff --git a/result/schemas/length2_0_0.err b/result/schemas/length2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/length2_0_0.err
diff --git a/result/schemas/length3_0_0 b/result/schemas/length3_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/length3_0_0
diff --git a/result/schemas/length3_0_0.err b/result/schemas/length3_0_0.err
new file mode 100644
index 0000000..65afcd7
--- /dev/null
+++ b/result/schemas/length3_0_0.err
@@ -0,0 +1 @@
+./test/schemas/length3_0.xsd:5: element element: Schemas parser error : element decl. 'size', attribute 'type': The QName value '{http://www.w3.org/2001/XMLSchema}non-positive-integer' does not resolve to a(n) type definition.
diff --git a/result/schemas/list0_0_0 b/result/schemas/list0_0_0
new file mode 100644
index 0000000..37a2cdc
--- /dev/null
+++ b/result/schemas/list0_0_0
@@ -0,0 +1 @@
+./test/schemas/list0_0.xml validates
diff --git a/result/schemas/list0_0_0.err b/result/schemas/list0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/list0_0_0.err
diff --git a/result/schemas/list0_0_1 b/result/schemas/list0_0_1
new file mode 100644
index 0000000..da757f6
--- /dev/null
+++ b/result/schemas/list0_0_1
@@ -0,0 +1 @@
+./test/schemas/list0_1.xml fails to validate
diff --git a/result/schemas/list0_0_1.err b/result/schemas/list0_0_1.err
new file mode 100644
index 0000000..7a3b63b
--- /dev/null
+++ b/result/schemas/list0_0_1.err
@@ -0,0 +1 @@
+./test/schemas/list0_1.xml:1: element test: Schemas validity error : Element 'test': Missing child element(s). Expected is ( string ).
diff --git a/result/schemas/list0_0_2 b/result/schemas/list0_0_2
new file mode 100644
index 0000000..0ec6237
--- /dev/null
+++ b/result/schemas/list0_0_2
@@ -0,0 +1 @@
+./test/schemas/list0_2.xml validates
diff --git a/result/schemas/list0_0_2.err b/result/schemas/list0_0_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/list0_0_2.err
diff --git a/result/schemas/list0_1_0 b/result/schemas/list0_1_0
new file mode 100644
index 0000000..2cf9806
--- /dev/null
+++ b/result/schemas/list0_1_0
@@ -0,0 +1 @@
+./test/schemas/list0_0.xml fails to validate
diff --git a/result/schemas/list0_1_0.err b/result/schemas/list0_1_0.err
new file mode 100644
index 0000000..0bc3c8a
--- /dev/null
+++ b/result/schemas/list0_1_0.err
@@ -0,0 +1 @@
+./test/schemas/list0_0.xml:5: element string: Schemas validity error : Element 'string': This element is not expected.
diff --git a/result/schemas/list0_1_1 b/result/schemas/list0_1_1
new file mode 100644
index 0000000..da757f6
--- /dev/null
+++ b/result/schemas/list0_1_1
@@ -0,0 +1 @@
+./test/schemas/list0_1.xml fails to validate
diff --git a/result/schemas/list0_1_1.err b/result/schemas/list0_1_1.err
new file mode 100644
index 0000000..7a3b63b
--- /dev/null
+++ b/result/schemas/list0_1_1.err
@@ -0,0 +1 @@
+./test/schemas/list0_1.xml:1: element test: Schemas validity error : Element 'test': Missing child element(s). Expected is ( string ).
diff --git a/result/schemas/list0_1_2 b/result/schemas/list0_1_2
new file mode 100644
index 0000000..0ec6237
--- /dev/null
+++ b/result/schemas/list0_1_2
@@ -0,0 +1 @@
+./test/schemas/list0_2.xml validates
diff --git a/result/schemas/list0_1_2.err b/result/schemas/list0_1_2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/list0_1_2.err
diff --git a/result/schemas/mixed0_0_0 b/result/schemas/mixed0_0_0
new file mode 100644
index 0000000..bd2f0ed
--- /dev/null
+++ b/result/schemas/mixed0_0_0
@@ -0,0 +1 @@
+./test/schemas/mixed0_0.xml validates
diff --git a/result/schemas/mixed0_0_0.err b/result/schemas/mixed0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/mixed0_0_0.err
diff --git a/result/schemas/mixed1_0_0 b/result/schemas/mixed1_0_0
new file mode 100644
index 0000000..e9a6b01
--- /dev/null
+++ b/result/schemas/mixed1_0_0
@@ -0,0 +1 @@
+./test/schemas/mixed1_0.xml validates
diff --git a/result/schemas/mixed1_0_0.err b/result/schemas/mixed1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/mixed1_0_0.err
diff --git a/result/schemas/ns0_0_0 b/result/schemas/ns0_0_0
new file mode 100644
index 0000000..44d1d44
--- /dev/null
+++ b/result/schemas/ns0_0_0
@@ -0,0 +1 @@
+./test/schemas/ns0_0.xml validates
diff --git a/result/schemas/ns0_0_0.err b/result/schemas/ns0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ns0_0_0.err
diff --git a/result/schemas/ns0_0_1 b/result/schemas/ns0_0_1
new file mode 100644
index 0000000..2110249
--- /dev/null
+++ b/result/schemas/ns0_0_1
@@ -0,0 +1 @@
+./test/schemas/ns0_1.xml validates
diff --git a/result/schemas/ns0_0_1.err b/result/schemas/ns0_0_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ns0_0_1.err
diff --git a/result/schemas/ns0_0_2 b/result/schemas/ns0_0_2
new file mode 100644
index 0000000..03e85f7
--- /dev/null
+++ b/result/schemas/ns0_0_2
@@ -0,0 +1 @@
+./test/schemas/ns0_2.xml fails to validate
diff --git a/result/schemas/ns0_0_2.err b/result/schemas/ns0_0_2.err
new file mode 100644
index 0000000..346af26
--- /dev/null
+++ b/result/schemas/ns0_0_2.err
@@ -0,0 +1 @@
+./test/schemas/ns0_2.xml:1: element foo: Schemas validity error : Element 'foo': No matching global declaration available for the validation root.
diff --git a/result/schemas/ns0_0_3 b/result/schemas/ns0_0_3
new file mode 100644
index 0000000..473206c
--- /dev/null
+++ b/result/schemas/ns0_0_3
@@ -0,0 +1 @@
+./test/schemas/ns0_3.xml fails to validate
diff --git a/result/schemas/ns0_0_3.err b/result/schemas/ns0_0_3.err
new file mode 100644
index 0000000..fd1cbd5
--- /dev/null
+++ b/result/schemas/ns0_0_3.err
@@ -0,0 +1 @@
+./test/schemas/ns0_3.xml:1: element foo: Schemas validity error : Element '{http://example.com/xsd/ns}foo', attribute '{http://example.com/xsd/ns}id': The attribute '{http://example.com/xsd/ns}id' is not allowed.
diff --git a/result/schemas/ns0_0_4 b/result/schemas/ns0_0_4
new file mode 100644
index 0000000..f10f45e
--- /dev/null
+++ b/result/schemas/ns0_0_4
@@ -0,0 +1 @@
+./test/schemas/ns0_4.xml fails to validate
diff --git a/result/schemas/ns0_0_4.err b/result/schemas/ns0_0_4.err
new file mode 100644
index 0000000..2512e8d
--- /dev/null
+++ b/result/schemas/ns0_0_4.err
@@ -0,0 +1 @@
+./test/schemas/ns0_4.xml:2: element foo: Schemas validity error : Element '{http://example.com/xsd/ns}foo', attribute '{http://example.com/xsd/ns}id': The attribute '{http://example.com/xsd/ns}id' is not allowed.
diff --git a/result/schemas/ns0_1_0 b/result/schemas/ns0_1_0
new file mode 100644
index 0000000..9ba0471
--- /dev/null
+++ b/result/schemas/ns0_1_0
@@ -0,0 +1 @@
+./test/schemas/ns0_0.xml fails to validate
diff --git a/result/schemas/ns0_1_0.err b/result/schemas/ns0_1_0.err
new file mode 100644
index 0000000..1282888
--- /dev/null
+++ b/result/schemas/ns0_1_0.err
@@ -0,0 +1 @@
+./test/schemas/ns0_0.xml:1: element foo: Schemas validity error : Element '{http://example.com/xsd/ns}foo', attribute 'id': The attribute 'id' is not allowed.
diff --git a/result/schemas/ns0_1_1 b/result/schemas/ns0_1_1
new file mode 100644
index 0000000..9f464de
--- /dev/null
+++ b/result/schemas/ns0_1_1
@@ -0,0 +1 @@
+./test/schemas/ns0_1.xml fails to validate
diff --git a/result/schemas/ns0_1_1.err b/result/schemas/ns0_1_1.err
new file mode 100644
index 0000000..99b2880
--- /dev/null
+++ b/result/schemas/ns0_1_1.err
@@ -0,0 +1 @@
+./test/schemas/ns0_1.xml:1: element foo: Schemas validity error : Element '{http://example.com/xsd/ns}foo', attribute 'id': The attribute 'id' is not allowed.
diff --git a/result/schemas/ns0_1_2 b/result/schemas/ns0_1_2
new file mode 100644
index 0000000..03e85f7
--- /dev/null
+++ b/result/schemas/ns0_1_2
@@ -0,0 +1 @@
+./test/schemas/ns0_2.xml fails to validate
diff --git a/result/schemas/ns0_1_2.err b/result/schemas/ns0_1_2.err
new file mode 100644
index 0000000..346af26
--- /dev/null
+++ b/result/schemas/ns0_1_2.err
@@ -0,0 +1 @@
+./test/schemas/ns0_2.xml:1: element foo: Schemas validity error : Element 'foo': No matching global declaration available for the validation root.
diff --git a/result/schemas/ns0_1_3 b/result/schemas/ns0_1_3
new file mode 100644
index 0000000..1fc8772
--- /dev/null
+++ b/result/schemas/ns0_1_3
@@ -0,0 +1 @@
+./test/schemas/ns0_3.xml validates
diff --git a/result/schemas/ns0_1_3.err b/result/schemas/ns0_1_3.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ns0_1_3.err
diff --git a/result/schemas/ns0_1_4 b/result/schemas/ns0_1_4
new file mode 100644
index 0000000..7374ebf
--- /dev/null
+++ b/result/schemas/ns0_1_4
@@ -0,0 +1 @@
+./test/schemas/ns0_4.xml validates
diff --git a/result/schemas/ns0_1_4.err b/result/schemas/ns0_1_4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ns0_1_4.err
diff --git a/result/schemas/ns1_0_0 b/result/schemas/ns1_0_0
new file mode 100644
index 0000000..ffcfb6c
--- /dev/null
+++ b/result/schemas/ns1_0_0
@@ -0,0 +1 @@
+./test/schemas/ns1_0.xml validates
diff --git a/result/schemas/ns1_0_0.err b/result/schemas/ns1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ns1_0_0.err
diff --git a/result/schemas/ns2_0_0 b/result/schemas/ns2_0_0
new file mode 100644
index 0000000..b2c181e
--- /dev/null
+++ b/result/schemas/ns2_0_0
@@ -0,0 +1 @@
+./test/schemas/ns2_0.xml validates
diff --git a/result/schemas/ns2_0_0.err b/result/schemas/ns2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/ns2_0_0.err
diff --git a/result/schemas/nvdcve_0_0 b/result/schemas/nvdcve_0_0
new file mode 100644
index 0000000..18e7c7c
--- /dev/null
+++ b/result/schemas/nvdcve_0_0
@@ -0,0 +1 @@
+./test/schemas/nvdcve_0.xml validates
diff --git a/result/schemas/nvdcve_0_0.err b/result/schemas/nvdcve_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/nvdcve_0_0.err
diff --git a/result/schemas/po0_0_0 b/result/schemas/po0_0_0
new file mode 100644
index 0000000..9687b9d
--- /dev/null
+++ b/result/schemas/po0_0_0
@@ -0,0 +1 @@
+./test/schemas/po0_0.xml validates
diff --git a/result/schemas/po0_0_0.err b/result/schemas/po0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/po0_0_0.err
diff --git a/result/schemas/po1_0_0 b/result/schemas/po1_0_0
new file mode 100644
index 0000000..2c264ce
--- /dev/null
+++ b/result/schemas/po1_0_0
@@ -0,0 +1 @@
+./test/schemas/po1_0.xml validates
diff --git a/result/schemas/po1_0_0.err b/result/schemas/po1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/po1_0_0.err
diff --git a/result/schemas/poschargrp0_0_0 b/result/schemas/poschargrp0_0_0
new file mode 100644
index 0000000..de14f4d
--- /dev/null
+++ b/result/schemas/poschargrp0_0_0
@@ -0,0 +1 @@
+./test/schemas/poschargrp0_0.xml validates
diff --git a/result/schemas/poschargrp0_0_0.err b/result/schemas/poschargrp0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/poschargrp0_0_0.err
diff --git a/result/schemas/regexp-char-ref_0_0 b/result/schemas/regexp-char-ref_0_0
new file mode 100644
index 0000000..40ceb7f
--- /dev/null
+++ b/result/schemas/regexp-char-ref_0_0
@@ -0,0 +1 @@
+./test/schemas/regexp-char-ref_0.xml validates
diff --git a/result/schemas/regexp-char-ref_1_0 b/result/schemas/regexp-char-ref_1_0
new file mode 100644
index 0000000..40ceb7f
--- /dev/null
+++ b/result/schemas/regexp-char-ref_1_0
@@ -0,0 +1 @@
+./test/schemas/regexp-char-ref_0.xml validates
diff --git a/result/schemas/restrict-CT-attr-ref_0_0 b/result/schemas/restrict-CT-attr-ref_0_0
new file mode 100644
index 0000000..77dba75
--- /dev/null
+++ b/result/schemas/restrict-CT-attr-ref_0_0
@@ -0,0 +1 @@
+./test/schemas/restrict-CT-attr-ref_0.xml validates
diff --git a/result/schemas/restrict-CT-attr-ref_0_0.err b/result/schemas/restrict-CT-attr-ref_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/restrict-CT-attr-ref_0_0.err
diff --git a/result/schemas/restriction-attr1_0_0 b/result/schemas/restriction-attr1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/restriction-attr1_0_0
diff --git a/result/schemas/restriction-attr1_0_0.err b/result/schemas/restriction-attr1_0_0.err
new file mode 100644
index 0000000..cdf003d
--- /dev/null
+++ b/result/schemas/restriction-attr1_0_0.err
@@ -0,0 +1 @@
+./test/schemas/restriction-attr1_0.xsd:5: element complexType: Schemas parser error : local complex type, attribute use 'barA': The 'optional' attribute use is inconsistent with the corresponding 'required' attribute use of the base complex type definition '{http://FOO}typeA'.
diff --git a/result/schemas/restriction-enum-1_1_0 b/result/schemas/restriction-enum-1_1_0
new file mode 100644
index 0000000..68e26cf
--- /dev/null
+++ b/result/schemas/restriction-enum-1_1_0
@@ -0,0 +1 @@
+./test/schemas/restriction-enum-1_0.xml fails to validate
diff --git a/result/schemas/restriction-enum-1_1_0.err b/result/schemas/restriction-enum-1_1_0.err
new file mode 100644
index 0000000..086d2de
--- /dev/null
+++ b/result/schemas/restriction-enum-1_1_0.err
@@ -0,0 +1,2 @@
+./test/schemas/restriction-enum-1_0.xml:7: element foo: Schemas validity error : Element 'foo': [facet 'enumeration'] The value 'c' is not an element of the set {'a', 'b', 'd'}.
+./test/schemas/restriction-enum-1_0.xml:7: element foo: Schemas validity error : Element 'foo': 'c' is not a valid value of the atomic type 'barType'.
diff --git a/result/schemas/restriction0_0_0 b/result/schemas/restriction0_0_0
new file mode 100644
index 0000000..16ef2bc
--- /dev/null
+++ b/result/schemas/restriction0_0_0
@@ -0,0 +1 @@
+./test/schemas/restriction0_0.xml validates
diff --git a/result/schemas/restriction0_0_0.err b/result/schemas/restriction0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/restriction0_0_0.err
diff --git a/result/schemas/scc-no-xmlns_0_0 b/result/schemas/scc-no-xmlns_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/scc-no-xmlns_0_0
diff --git a/result/schemas/scc-no-xmlns_0_0.err b/result/schemas/scc-no-xmlns_0_0.err
new file mode 100644
index 0000000..aad2b68
--- /dev/null
+++ b/result/schemas/scc-no-xmlns_0_0.err
@@ -0,0 +1 @@
+./test/schemas/scc-no-xmlns_0.xsd:7: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute', attribute 'name': The value of the attribute must not match 'xmlns'.
diff --git a/result/schemas/scc-no-xsi_0_0 b/result/schemas/scc-no-xsi_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/scc-no-xsi_0_0
diff --git a/result/schemas/scc-no-xsi_0_0.err b/result/schemas/scc-no-xsi_0_0.err
new file mode 100644
index 0000000..e04e3e4
--- /dev/null
+++ b/result/schemas/scc-no-xsi_0_0.err
@@ -0,0 +1 @@
+./test/schemas/scc-no-xsi_0.xsd:7: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The target namespace must not match 'http://www.w3.org/2001/XMLSchema-instance'.
diff --git a/result/schemas/seq-dubl-elem1_0_0 b/result/schemas/seq-dubl-elem1_0_0
new file mode 100644
index 0000000..466d3a8
--- /dev/null
+++ b/result/schemas/seq-dubl-elem1_0_0
@@ -0,0 +1 @@
+./test/schemas/seq-dubl-elem1_0.xml validates
diff --git a/result/schemas/seq-dubl-elem1_0_0.err b/result/schemas/seq-dubl-elem1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/seq-dubl-elem1_0_0.err
diff --git a/result/schemas/seq0_0_0 b/result/schemas/seq0_0_0
new file mode 100644
index 0000000..d4c8431
--- /dev/null
+++ b/result/schemas/seq0_0_0
@@ -0,0 +1 @@
+./test/schemas/seq0_0.xml validates
diff --git a/result/schemas/seq0_0_0.err b/result/schemas/seq0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/seq0_0_0.err
diff --git a/result/schemas/src-attribute1_0_0 b/result/schemas/src-attribute1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute1_0_0
diff --git a/result/schemas/src-attribute1_0_0.err b/result/schemas/src-attribute1_0_0.err
new file mode 100644
index 0000000..368d97c
--- /dev/null
+++ b/result/schemas/src-attribute1_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute1_0.xsd:9: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The attributes 'default' and 'fixed' are mutually exclusive.
diff --git a/result/schemas/src-attribute2_0_0 b/result/schemas/src-attribute2_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute2_0_0
diff --git a/result/schemas/src-attribute2_0_0.err b/result/schemas/src-attribute2_0_0.err
new file mode 100644
index 0000000..ac6df6f
--- /dev/null
+++ b/result/schemas/src-attribute2_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute2_0.xsd:9: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The value of the attribute 'use' must be 'optional' if the attribute 'default' is present.
diff --git a/result/schemas/src-attribute3-1_0_0 b/result/schemas/src-attribute3-1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute3-1_0_0
diff --git a/result/schemas/src-attribute3-1_0_0.err b/result/schemas/src-attribute3-1_0_0.err
new file mode 100644
index 0000000..3345b3c
--- /dev/null
+++ b/result/schemas/src-attribute3-1_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute3-1_0.xsd:9: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'name' is not allowed.
diff --git a/result/schemas/src-attribute3-2-form_0_0 b/result/schemas/src-attribute3-2-form_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute3-2-form_0_0
diff --git a/result/schemas/src-attribute3-2-form_0_0.err b/result/schemas/src-attribute3-2-form_0_0.err
new file mode 100644
index 0000000..ad3667b
--- /dev/null
+++ b/result/schemas/src-attribute3-2-form_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute3-2-form_0.xsd:10: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'form' is not allowed.
diff --git a/result/schemas/src-attribute3-2-st_0_0 b/result/schemas/src-attribute3-2-st_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute3-2-st_0_0
diff --git a/result/schemas/src-attribute3-2-st_0_0.err b/result/schemas/src-attribute3-2-st_0_0.err
new file mode 100644
index 0000000..ae85e0a
--- /dev/null
+++ b/result/schemas/src-attribute3-2-st_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute3-2-st_0.xsd:11: element simpleType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The content is not valid. Expected is (annotation?).
diff --git a/result/schemas/src-attribute3-2-type_0_0 b/result/schemas/src-attribute3-2-type_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute3-2-type_0_0
diff --git a/result/schemas/src-attribute3-2-type_0_0.err b/result/schemas/src-attribute3-2-type_0_0.err
new file mode 100644
index 0000000..50016d8
--- /dev/null
+++ b/result/schemas/src-attribute3-2-type_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute3-2-type_0.xsd:10: element attribute: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'type' is not allowed.
diff --git a/result/schemas/src-attribute4_0_0 b/result/schemas/src-attribute4_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-attribute4_0_0
diff --git a/result/schemas/src-attribute4_0_0.err b/result/schemas/src-attribute4_0_0.err
new file mode 100644
index 0000000..cac6718
--- /dev/null
+++ b/result/schemas/src-attribute4_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-attribute4_0.xsd:8: element simpleType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}attribute': The attribute 'type' and the <simpleType> child are mutually exclusive.
diff --git a/result/schemas/src-element1_0_0 b/result/schemas/src-element1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-element1_0_0
diff --git a/result/schemas/src-element1_0_0.err b/result/schemas/src-element1_0_0.err
new file mode 100644
index 0000000..9d8b198
--- /dev/null
+++ b/result/schemas/src-element1_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-element1_0.xsd:7: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attributes 'default' and 'fixed' are mutually exclusive.
diff --git a/result/schemas/src-element2-1_0_0 b/result/schemas/src-element2-1_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-element2-1_0_0
diff --git a/result/schemas/src-element2-1_0_0.err b/result/schemas/src-element2-1_0_0.err
new file mode 100644
index 0000000..01d89d6
--- /dev/null
+++ b/result/schemas/src-element2-1_0_0.err
@@ -0,0 +1 @@
+./test/schemas/src-element2-1_0.xsd:12: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attributes 'ref' and 'name' are mutually exclusive.
diff --git a/result/schemas/src-element2-2_0_0 b/result/schemas/src-element2-2_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-element2-2_0_0
diff --git a/result/schemas/src-element2-2_0_0.err b/result/schemas/src-element2-2_0_0.err
new file mode 100644
index 0000000..90cd79a
--- /dev/null
+++ b/result/schemas/src-element2-2_0_0.err
@@ -0,0 +1,9 @@
+./test/schemas/src-element2-2_0.xsd:18: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'maxOccurs': The value must be greater than or equal to 1.
+./test/schemas/src-element2-2_0.xsd:23: element complexType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The content is not valid. Expected is (annotation?).
+./test/schemas/src-element2-2_0.xsd:29: element simpleType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The content is not valid. Expected is (annotation?).
+./test/schemas/src-element2-2_0.xsd:36: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'type': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:37: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'nillable': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:38: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'default': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:39: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'fixed': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:40: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'form': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:41: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element', attribute 'block': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
diff --git a/result/schemas/src-element3_0_0 b/result/schemas/src-element3_0_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/src-element3_0_0
diff --git a/result/schemas/src-element3_0_0.err b/result/schemas/src-element3_0_0.err
new file mode 100644
index 0000000..b8bd817
--- /dev/null
+++ b/result/schemas/src-element3_0_0.err
@@ -0,0 +1,2 @@
+./test/schemas/src-element3_0.xsd:8: element complexType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'type' and the <complexType> child are mutually exclusive.
+./test/schemas/src-element3_0.xsd:16: element simpleType: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': The attribute 'type' and the <simpleType> child are mutually exclusive.
diff --git a/result/schemas/subst-group-1_0_1 b/result/schemas/subst-group-1_0_1
new file mode 100644
index 0000000..0775cdd
--- /dev/null
+++ b/result/schemas/subst-group-1_0_1
@@ -0,0 +1 @@
+./test/schemas/subst-group-1_1.xml validates
diff --git a/result/schemas/subst-group-1_0_1.err b/result/schemas/subst-group-1_0_1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/subst-group-1_0_1.err
diff --git a/result/schemas/union2_1_1 b/result/schemas/union2_1_1
new file mode 100644
index 0000000..0d4ee15
--- /dev/null
+++ b/result/schemas/union2_1_1
@@ -0,0 +1 @@
+./test/schemas/union2_1.xml fails to validate
diff --git a/result/schemas/union2_1_1.err b/result/schemas/union2_1_1.err
new file mode 100644
index 0000000..a66ad59
--- /dev/null
+++ b/result/schemas/union2_1_1.err
@@ -0,0 +1,3 @@
+./test/schemas/union2_1.xml:4: element ELEMENTS: Schemas validity error : Element '{urn:test:foo}ELEMENTS': '
+ 5
+' is not a valid value of the local union type.
diff --git a/result/schemas/union_0_0 b/result/schemas/union_0_0
new file mode 100644
index 0000000..3dbc861
--- /dev/null
+++ b/result/schemas/union_0_0
@@ -0,0 +1 @@
+./test/schemas/union_0_0.xml validates
diff --git a/result/schemas/union_0_0.err b/result/schemas/union_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/union_0_0.err
diff --git a/result/schemas/vdv-first0_0_0 b/result/schemas/vdv-first0_0_0
new file mode 100644
index 0000000..6d39ecb
--- /dev/null
+++ b/result/schemas/vdv-first0_0_0
@@ -0,0 +1 @@
+./test/schemas/vdv-first0_0.xml validates
diff --git a/result/schemas/vdv-first0_0_0.err b/result/schemas/vdv-first0_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/vdv-first0_0_0.err
diff --git a/result/schemas/vdv-first1_0_0 b/result/schemas/vdv-first1_0_0
new file mode 100644
index 0000000..54f4b15
--- /dev/null
+++ b/result/schemas/vdv-first1_0_0
@@ -0,0 +1 @@
+./test/schemas/vdv-first1_0.xml validates
diff --git a/result/schemas/vdv-first1_0_0.err b/result/schemas/vdv-first1_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/vdv-first1_0_0.err
diff --git a/result/schemas/vdv-first2_0_0 b/result/schemas/vdv-first2_0_0
new file mode 100644
index 0000000..7430eda
--- /dev/null
+++ b/result/schemas/vdv-first2_0_0
@@ -0,0 +1 @@
+./test/schemas/vdv-first2_0.xml validates
diff --git a/result/schemas/vdv-first2_0_0.err b/result/schemas/vdv-first2_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/vdv-first2_0_0.err
diff --git a/result/schemas/vdv-first3_0_0 b/result/schemas/vdv-first3_0_0
new file mode 100644
index 0000000..943e3e1
--- /dev/null
+++ b/result/schemas/vdv-first3_0_0
@@ -0,0 +1 @@
+./test/schemas/vdv-first3_0.xml validates
diff --git a/result/schemas/vdv-first3_0_0.err b/result/schemas/vdv-first3_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/vdv-first3_0_0.err
diff --git a/result/schemas/vdv-first4_0_0 b/result/schemas/vdv-first4_0_0
new file mode 100644
index 0000000..bfa9b29
--- /dev/null
+++ b/result/schemas/vdv-first4_0_0
@@ -0,0 +1 @@
+./test/schemas/vdv-first4_0.xml validates
diff --git a/result/schemas/vdv-first4_0_0.err b/result/schemas/vdv-first4_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/vdv-first4_0_0.err
diff --git a/result/schemas/vdv-first4_0_1 b/result/schemas/vdv-first4_0_1
new file mode 100644
index 0000000..19a7ac1
--- /dev/null
+++ b/result/schemas/vdv-first4_0_1
@@ -0,0 +1 @@
+./test/schemas/vdv-first4_1.xml fails to validate
diff --git a/result/schemas/vdv-first4_0_1.err b/result/schemas/vdv-first4_0_1.err
new file mode 100644
index 0000000..1b964b2
--- /dev/null
+++ b/result/schemas/vdv-first4_0_1.err
@@ -0,0 +1 @@
+./test/schemas/vdv-first4_1.xml:14: element born: Schemas validity error : Element 'born': '196T6-08-22' is not a valid value of the atomic type 'date'.
diff --git a/result/schemas/vdv-first4_0_2 b/result/schemas/vdv-first4_0_2
new file mode 100644
index 0000000..fb59b67
--- /dev/null
+++ b/result/schemas/vdv-first4_0_2
@@ -0,0 +1 @@
+./test/schemas/vdv-first4_2.xml fails to validate
diff --git a/result/schemas/vdv-first4_0_2.err b/result/schemas/vdv-first4_0_2.err
new file mode 100644
index 0000000..6c6e52f
--- /dev/null
+++ b/result/schemas/vdv-first4_0_2.err
@@ -0,0 +1,2 @@
+./test/schemas/vdv-first4_2.xml:24: element born: Schemas validity error : Element 'born': [facet 'pattern'] The value '2000-01-20Z' is not accepted by the pattern '[^:Z]*'.
+./test/schemas/vdv-first4_2.xml:24: element born: Schemas validity error : Element 'born': '2000-01-20Z' is not a valid value of the atomic type 'date'.
diff --git a/result/schemas/vdv-first5_0_0 b/result/schemas/vdv-first5_0_0
new file mode 100644
index 0000000..3f09315
--- /dev/null
+++ b/result/schemas/vdv-first5_0_0
@@ -0,0 +1 @@
+./test/schemas/vdv-first5_0.xml validates
diff --git a/result/schemas/vdv-first5_0_0.err b/result/schemas/vdv-first5_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/vdv-first5_0_0.err
diff --git a/result/schemas/xsd-list-itemType_0_0 b/result/schemas/xsd-list-itemType_0_0
new file mode 100644
index 0000000..5ecd885
--- /dev/null
+++ b/result/schemas/xsd-list-itemType_0_0
@@ -0,0 +1 @@
+./test/schemas/xsd-list-itemType_0.xml validates
diff --git a/result/schemas/xsd-list-itemType_0_0.err b/result/schemas/xsd-list-itemType_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/xsd-list-itemType_0_0.err
diff --git a/result/schemas/xsd-simpleType-varieties_0_0 b/result/schemas/xsd-simpleType-varieties_0_0
new file mode 100644
index 0000000..a66506a
--- /dev/null
+++ b/result/schemas/xsd-simpleType-varieties_0_0
@@ -0,0 +1 @@
+./test/schemas/xsd-simpleType-varieties_0.xml validates
diff --git a/result/schemas/xsd-simpleType-varieties_0_0.err b/result/schemas/xsd-simpleType-varieties_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/xsd-simpleType-varieties_0_0.err
diff --git a/result/schematron/zvon10_0 b/result/schematron/zvon10_0
new file mode 100644
index 0000000..9aae4b1
--- /dev/null
+++ b/result/schematron/zvon10_0
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB/>
+</AAA>
diff --git a/result/schematron/zvon10_0.err b/result/schematron/zvon10_0.err
new file mode 100644
index 0000000..524ecd8
--- /dev/null
+++ b/result/schematron/zvon10_0.err
@@ -0,0 +1,5 @@
+Pattern: Open model
+/AAA line 1: CCC element is not present
+Pattern: Closed model
+/AAA line 1: CCC element is not present
+./test/schematron/zvon10_0.xml fails to validate
diff --git a/result/schematron/zvon10_1 b/result/schematron/zvon10_1
new file mode 100644
index 0000000..d82353a
--- /dev/null
+++ b/result/schematron/zvon10_1
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB/>
+ <DDD/>
+</AAA>
diff --git a/result/schematron/zvon10_1.err b/result/schematron/zvon10_1.err
new file mode 100644
index 0000000..9bc361c
--- /dev/null
+++ b/result/schematron/zvon10_1.err
@@ -0,0 +1,6 @@
+Pattern: Open model
+/AAA line 1: CCC element is not present
+Pattern: Closed model
+/AAA line 1: CCC element is not present
+/AAA line 1: There is an extra element
+./test/schematron/zvon10_1.xml fails to validate
diff --git a/result/schematron/zvon11_0 b/result/schematron/zvon11_0
new file mode 100644
index 0000000..49c8005
--- /dev/null
+++ b/result/schematron/zvon11_0
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB aaa="A" bbb="B"/>
+</AAA>
diff --git a/result/schematron/zvon11_0.err b/result/schematron/zvon11_0.err
new file mode 100644
index 0000000..ab4aa74
--- /dev/null
+++ b/result/schematron/zvon11_0.err
@@ -0,0 +1,2 @@
+Pattern: Attributes present
+./test/schematron/zvon11_0.xml validates
diff --git a/result/schematron/zvon11_1 b/result/schematron/zvon11_1
new file mode 100644
index 0000000..a5328e0
--- /dev/null
+++ b/result/schematron/zvon11_1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB bbb="B"/>
+</AAA>
diff --git a/result/schematron/zvon11_1.err b/result/schematron/zvon11_1.err
new file mode 100644
index 0000000..c1ae243
--- /dev/null
+++ b/result/schematron/zvon11_1.err
@@ -0,0 +1,3 @@
+Pattern: Attributes present
+/AAA/BBB line 2: The element must not have an isolated bbb attribute
+./test/schematron/zvon11_1.xml fails to validate
diff --git a/result/schematron/zvon11_2 b/result/schematron/zvon11_2
new file mode 100644
index 0000000..673a7af
--- /dev/null
+++ b/result/schematron/zvon11_2
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB aaa="A"/>
+</AAA>
diff --git a/result/schematron/zvon11_2.err b/result/schematron/zvon11_2.err
new file mode 100644
index 0000000..35117f7
--- /dev/null
+++ b/result/schematron/zvon11_2.err
@@ -0,0 +1,3 @@
+Pattern: Attributes present
+/AAA/BBB line 2: The element must not have an isolated aaa attribute
+./test/schematron/zvon11_2.xml fails to validate
diff --git a/result/schematron/zvon11_3 b/result/schematron/zvon11_3
new file mode 100644
index 0000000..9aae4b1
--- /dev/null
+++ b/result/schematron/zvon11_3
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB/>
+</AAA>
diff --git a/result/schematron/zvon11_3.err b/result/schematron/zvon11_3.err
new file mode 100644
index 0000000..18517e5
--- /dev/null
+++ b/result/schematron/zvon11_3.err
@@ -0,0 +1,2 @@
+Pattern: Attributes present
+./test/schematron/zvon11_3.xml validates
diff --git a/result/schematron/zvon12_0 b/result/schematron/zvon12_0
new file mode 100644
index 0000000..7220804
--- /dev/null
+++ b/result/schematron/zvon12_0
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB bbb="C"/>
+</AAA>
diff --git a/result/schematron/zvon12_0.err b/result/schematron/zvon12_0.err
new file mode 100644
index 0000000..c7e9ed2
--- /dev/null
+++ b/result/schematron/zvon12_0.err
@@ -0,0 +1,3 @@
+Pattern: Number of characters in an abbreviation
+/AAA/BBB line 2: There is not enough letters in the abbreviation
+./test/schematron/zvon12_0.xml fails to validate
diff --git a/result/schematron/zvon12_1 b/result/schematron/zvon12_1
new file mode 100644
index 0000000..362de34
--- /dev/null
+++ b/result/schematron/zvon12_1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB bbb="CZ"/>
+</AAA>
diff --git a/result/schematron/zvon12_1.err b/result/schematron/zvon12_1.err
new file mode 100644
index 0000000..486c0be
--- /dev/null
+++ b/result/schematron/zvon12_1.err
@@ -0,0 +1,2 @@
+Pattern: Number of characters in an abbreviation
+./test/schematron/zvon12_1.xml validates
diff --git a/result/schematron/zvon12_2 b/result/schematron/zvon12_2
new file mode 100644
index 0000000..bbbf7c7
--- /dev/null
+++ b/result/schematron/zvon12_2
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB bbb="CZCZ"/>
+</AAA>
diff --git a/result/schematron/zvon12_2.err b/result/schematron/zvon12_2.err
new file mode 100644
index 0000000..5edaf30
--- /dev/null
+++ b/result/schematron/zvon12_2.err
@@ -0,0 +1,3 @@
+Pattern: Number of characters in an abbreviation
+/AAA/BBB line 2: There is too much letters in the abbreviation
+./test/schematron/zvon12_2.xml fails to validate
diff --git a/result/schematron/zvon13_0 b/result/schematron/zvon13_0
new file mode 100644
index 0000000..e1295c3
--- /dev/null
+++ b/result/schematron/zvon13_0
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<Total>
+ <Percent>20</Percent>
+ <Percent>30</Percent>
+ <Percent>10</Percent>
+ <Percent>50</Percent>
+</Total>
diff --git a/result/schematron/zvon13_0.err b/result/schematron/zvon13_0.err
new file mode 100644
index 0000000..ed98cb3
--- /dev/null
+++ b/result/schematron/zvon13_0.err
@@ -0,0 +1,3 @@
+Pattern: Sum equals 100%.
+/Total line 1: The values do not sum to 100%.
+./test/schematron/zvon13_0.xml fails to validate
diff --git a/result/schematron/zvon13_1 b/result/schematron/zvon13_1
new file mode 100644
index 0000000..401e919
--- /dev/null
+++ b/result/schematron/zvon13_1
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Total>
+ <Percent>20</Percent>
+ <Percent>10</Percent>
+ <Percent>50</Percent>
+</Total>
diff --git a/result/schematron/zvon13_1.err b/result/schematron/zvon13_1.err
new file mode 100644
index 0000000..e0f02c2
--- /dev/null
+++ b/result/schematron/zvon13_1.err
@@ -0,0 +1,3 @@
+Pattern: Sum equals 100%.
+/Total line 1: The values do not sum to 100%.
+./test/schematron/zvon13_1.xml fails to validate
diff --git a/result/schematron/zvon13_2 b/result/schematron/zvon13_2
new file mode 100644
index 0000000..cb1df2e
--- /dev/null
+++ b/result/schematron/zvon13_2
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<Total>
+ <Percent>20</Percent>
+ <Percent>30</Percent>
+ <Percent>50</Percent>
+</Total>
diff --git a/result/schematron/zvon13_2.err b/result/schematron/zvon13_2.err
new file mode 100644
index 0000000..dfab61f
--- /dev/null
+++ b/result/schematron/zvon13_2.err
@@ -0,0 +1,2 @@
+Pattern: Sum equals 100%.
+./test/schematron/zvon13_2.xml validates
diff --git a/result/schematron/zvon14_0 b/result/schematron/zvon14_0
new file mode 100644
index 0000000..c72e0c2
--- /dev/null
+++ b/result/schematron/zvon14_0
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>
+ <CCC/>
+ </BBB>
+ <CCC/>
+ <DDD>
+ <CCC/>
+ <EEE>
+ <CCC/>
+ </EEE>
+ </DDD>
+</AAA>
diff --git a/result/schematron/zvon14_0.err b/result/schematron/zvon14_0.err
new file mode 100644
index 0000000..60155da
--- /dev/null
+++ b/result/schematron/zvon14_0.err
@@ -0,0 +1,4 @@
+Pattern: a child of selected elements
+/AAA/CCC line 5: Element CCC must not be a child of element AAA
+/AAA/DDD/EEE/CCC line 9: Element CCC must not be a child of element EEE
+./test/schematron/zvon14_0.xml fails to validate
diff --git a/result/schematron/zvon15_0 b/result/schematron/zvon15_0
new file mode 100644
index 0000000..56500fe
--- /dev/null
+++ b/result/schematron/zvon15_0
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<AAA name="aaa">
+<BBB id="bbb"/>
+<CCC color="ccc"/>
+</AAA>
diff --git a/result/schematron/zvon15_0.err b/result/schematron/zvon15_0.err
new file mode 100644
index 0000000..5234889
--- /dev/null
+++ b/result/schematron/zvon15_0.err
@@ -0,0 +1,4 @@
+Pattern: id is the only permited attribute name
+/AAA line 1: Attribute name is forbidden in element AAA
+/AAA/CCC line 3: Attribute color is forbidden in element CCC
+./test/schematron/zvon15_0.xml fails to validate
diff --git a/result/schematron/zvon1_0 b/result/schematron/zvon1_0
new file mode 100644
index 0000000..9aae4b1
--- /dev/null
+++ b/result/schematron/zvon1_0
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB/>
+</AAA>
diff --git a/result/schematron/zvon1_0.err b/result/schematron/zvon1_0.err
new file mode 100644
index 0000000..0d42184
--- /dev/null
+++ b/result/schematron/zvon1_0.err
@@ -0,0 +1,8 @@
+Pattern: Print both cases
+/AAA line 1: BBB element is present.
+/AAA line 1: AAA misses attribute name.
+Pattern: Print positive result only
+/AAA line 1: BBB element is present.
+Pattern: Print negative result only
+/AAA line 1: AAA misses attribute name.
+./test/schematron/zvon1_0.xml fails to validate
diff --git a/result/schematron/zvon1_1 b/result/schematron/zvon1_1
new file mode 100644
index 0000000..0a06953
--- /dev/null
+++ b/result/schematron/zvon1_1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ <CCC/>
+</AAA>
diff --git a/result/schematron/zvon1_1.err b/result/schematron/zvon1_1.err
new file mode 100644
index 0000000..70ee87a
--- /dev/null
+++ b/result/schematron/zvon1_1.err
@@ -0,0 +1,8 @@
+Pattern: Print both cases
+/AAA line 1: BBB element is missing.
+/AAA line 1: AAA misses attribute name.
+Pattern: Print positive result only
+Pattern: Print negative result only
+/AAA line 1: BBB element is missing.
+/AAA line 1: AAA misses attribute name.
+./test/schematron/zvon1_1.xml fails to validate
diff --git a/result/schematron/zvon2_0 b/result/schematron/zvon2_0
new file mode 100644
index 0000000..695bc8f
--- /dev/null
+++ b/result/schematron/zvon2_0
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>bbbb</BBB>
+ <CCC>cccc</CCC>
+</AAA>
diff --git a/result/schematron/zvon2_0.err b/result/schematron/zvon2_0.err
new file mode 100644
index 0000000..f4e4a7f
--- /dev/null
+++ b/result/schematron/zvon2_0.err
@@ -0,0 +1,2 @@
+Pattern: Character @ forbidden
+./test/schematron/zvon2_0.xml validates
diff --git a/result/schematron/zvon2_1 b/result/schematron/zvon2_1
new file mode 100644
index 0000000..2af2cd0
--- /dev/null
+++ b/result/schematron/zvon2_1
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>bbbb@bbb.com</BBB>
+ <CCC>ccc@ccc.com</CCC>
+</AAA>
diff --git a/result/schematron/zvon2_1.err b/result/schematron/zvon2_1.err
new file mode 100644
index 0000000..28f3e99
--- /dev/null
+++ b/result/schematron/zvon2_1.err
@@ -0,0 +1,5 @@
+Pattern: Character @ forbidden
+/AAA line 1: Text in element AAA must not contain character @
+/AAA/BBB line 2: Text in element BBB must not contain character @
+/AAA/CCC line 3: Text in element CCC must not contain character @
+./test/schematron/zvon2_1.xml fails to validate
diff --git a/result/schematron/zvon2_2 b/result/schematron/zvon2_2
new file mode 100644
index 0000000..585cf0c
--- /dev/null
+++ b/result/schematron/zvon2_2
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>bbbb</BBB>
+ <CCC>cccc</CCC>
+ aaa@aaa.net
+</AAA>
diff --git a/result/schematron/zvon2_2.err b/result/schematron/zvon2_2.err
new file mode 100644
index 0000000..40dc7ca
--- /dev/null
+++ b/result/schematron/zvon2_2.err
@@ -0,0 +1,3 @@
+Pattern: Character @ forbidden
+/AAA line 1: Text in element AAA must not contain character @
+./test/schematron/zvon2_2.xml fails to validate
diff --git a/result/schematron/zvon3_0 b/result/schematron/zvon3_0
new file mode 100644
index 0000000..a8a6ed7
--- /dev/null
+++ b/result/schematron/zvon3_0
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>
+ <CCC/>
+ <CCC/>
+ </BBB>
+ <CCC name="c1"/>
+ <CCC name="c2"/>
+</AAA>
diff --git a/result/schematron/zvon3_0.err b/result/schematron/zvon3_0.err
new file mode 100644
index 0000000..419e729
--- /dev/null
+++ b/result/schematron/zvon3_0.err
@@ -0,0 +1,6 @@
+Pattern: Attribute test
+/AAA/BBB/CCC[1] line 3: attribute name is not present
+/AAA/BBB/CCC[2] line 4: attribute name is not present
+/AAA/CCC[1] line 6: attribute name is present
+/AAA/CCC[2] line 7: attribute name is present
+./test/schematron/zvon3_0.xml fails to validate
diff --git a/result/schematron/zvon4_0 b/result/schematron/zvon4_0
new file mode 100644
index 0000000..b1e694e
--- /dev/null
+++ b/result/schematron/zvon4_0
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>
+ <CCC/>
+ <CCC/>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon4_0.err b/result/schematron/zvon4_0.err
new file mode 100644
index 0000000..6aa6b2b
--- /dev/null
+++ b/result/schematron/zvon4_0.err
@@ -0,0 +1,3 @@
+Pattern: Root test
+/AAA line 1: Root element is AAA
+./test/schematron/zvon4_0.xml fails to validate
diff --git a/result/schematron/zvon4_1 b/result/schematron/zvon4_1
new file mode 100644
index 0000000..6b1facc
--- /dev/null
+++ b/result/schematron/zvon4_1
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<XXX>
+ <BBB>
+ <CCC/>
+ <CCC/>
+ </BBB>
+</XXX>
diff --git a/result/schematron/zvon4_1.err b/result/schematron/zvon4_1.err
new file mode 100644
index 0000000..4ad324f
--- /dev/null
+++ b/result/schematron/zvon4_1.err
@@ -0,0 +1,3 @@
+Pattern: Root test
+/XXX line 1: Root element is XXX, not AAA
+./test/schematron/zvon4_1.xml fails to validate
diff --git a/result/schematron/zvon5_0 b/result/schematron/zvon5_0
new file mode 100644
index 0000000..d763505
--- /dev/null
+++ b/result/schematron/zvon5_0
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>
+ <CCC/>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon5_0.err b/result/schematron/zvon5_0.err
new file mode 100644
index 0000000..91ef5f2
--- /dev/null
+++ b/result/schematron/zvon5_0.err
@@ -0,0 +1,7 @@
+Pattern: Select empty elements CCC
+/AAA/BBB/CCC line 3: Source contains an empty element CCC
+/AAA/BBB/CCC line 3: [1]An element CCC does not contain any text
+/AAA/BBB/CCC line 3: [2]An element CCC does not contain any text
+/AAA/BBB/CCC line 3: [1]An element CCC does not contain any child element
+/AAA/BBB/CCC line 3: [2]An element CCC does not contain any child element
+./test/schematron/zvon5_0.xml fails to validate
diff --git a/result/schematron/zvon5_1 b/result/schematron/zvon5_1
new file mode 100644
index 0000000..c76b756
--- /dev/null
+++ b/result/schematron/zvon5_1
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>
+ <CCC>I am CCC element</CCC>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon5_1.err b/result/schematron/zvon5_1.err
new file mode 100644
index 0000000..f4ce6d4
--- /dev/null
+++ b/result/schematron/zvon5_1.err
@@ -0,0 +1,5 @@
+Pattern: Select empty elements CCC
+/AAA/BBB/CCC line 3: Source contains an empty element CCC
+/AAA/BBB/CCC line 3: [1]An element CCC does not contain any child element
+/AAA/BBB/CCC line 3: [2]An element CCC does not contain any child element
+./test/schematron/zvon5_1.xml fails to validate
diff --git a/result/schematron/zvon5_2 b/result/schematron/zvon5_2
new file mode 100644
index 0000000..ddc11fe
--- /dev/null
+++ b/result/schematron/zvon5_2
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<AAA>
+ <BBB>
+ <CCC>
+ <DDD/>
+ </CCC>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon5_2.err b/result/schematron/zvon5_2.err
new file mode 100644
index 0000000..8c69e79
--- /dev/null
+++ b/result/schematron/zvon5_2.err
@@ -0,0 +1,5 @@
+Pattern: Select empty elements CCC
+/AAA/BBB/CCC line 3: Source contains an empty element CCC
+/AAA/BBB/CCC line 3: [1]An element CCC does not contain any text
+/AAA/BBB/CCC line 3: [2]An element CCC does not contain any text
+./test/schematron/zvon5_2.xml fails to validate
diff --git a/result/schematron/zvon6_0 b/result/schematron/zvon6_0
new file mode 100644
index 0000000..6539765
--- /dev/null
+++ b/result/schematron/zvon6_0
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+aaa
+</AAA>
diff --git a/result/schematron/zvon6_0.err b/result/schematron/zvon6_0.err
new file mode 100644
index 0000000..5cc3b37
--- /dev/null
+++ b/result/schematron/zvon6_0.err
@@ -0,0 +1,3 @@
+Pattern: Predefined values
+/AAA line 1: O.K.
+./test/schematron/zvon6_0.xml fails to validate
diff --git a/result/schematron/zvon6_1 b/result/schematron/zvon6_1
new file mode 100644
index 0000000..e0c2e73
--- /dev/null
+++ b/result/schematron/zvon6_1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ bbb
+</AAA>
diff --git a/result/schematron/zvon6_1.err b/result/schematron/zvon6_1.err
new file mode 100644
index 0000000..8b728d4
--- /dev/null
+++ b/result/schematron/zvon6_1.err
@@ -0,0 +1,3 @@
+Pattern: Predefined values
+/AAA line 1: O.K.
+./test/schematron/zvon6_1.xml fails to validate
diff --git a/result/schematron/zvon6_2 b/result/schematron/zvon6_2
new file mode 100644
index 0000000..edc24a9
--- /dev/null
+++ b/result/schematron/zvon6_2
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ ccc
+</AAA>
diff --git a/result/schematron/zvon6_2.err b/result/schematron/zvon6_2.err
new file mode 100644
index 0000000..1868934
--- /dev/null
+++ b/result/schematron/zvon6_2.err
@@ -0,0 +1,3 @@
+Pattern: Predefined values
+/AAA line 1: The AAA value is not permitted.
+./test/schematron/zvon6_2.xml fails to validate
diff --git a/result/schematron/zvon7_0 b/result/schematron/zvon7_0
new file mode 100644
index 0000000..6539765
--- /dev/null
+++ b/result/schematron/zvon7_0
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+aaa
+</AAA>
diff --git a/result/schematron/zvon7_0.err b/result/schematron/zvon7_0.err
new file mode 100644
index 0000000..df427d6
--- /dev/null
+++ b/result/schematron/zvon7_0.err
@@ -0,0 +1,3 @@
+Pattern: Test integer
+/AAA line 1: The AAA value is not an integer.
+./test/schematron/zvon7_0.xml fails to validate
diff --git a/result/schematron/zvon7_1 b/result/schematron/zvon7_1
new file mode 100644
index 0000000..0a4007a
--- /dev/null
+++ b/result/schematron/zvon7_1
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+ 12.234
+</AAA>
diff --git a/result/schematron/zvon7_1.err b/result/schematron/zvon7_1.err
new file mode 100644
index 0000000..aa1e0a1
--- /dev/null
+++ b/result/schematron/zvon7_1.err
@@ -0,0 +1,3 @@
+Pattern: Test integer
+/AAA line 1: The AAA value is not an integer.
+./test/schematron/zvon7_1.xml fails to validate
diff --git a/result/schematron/zvon7_2 b/result/schematron/zvon7_2
new file mode 100644
index 0000000..8eb45e3
--- /dev/null
+++ b/result/schematron/zvon7_2
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+45
+</AAA>
diff --git a/result/schematron/zvon7_2.err b/result/schematron/zvon7_2.err
new file mode 100644
index 0000000..abf8cc7
--- /dev/null
+++ b/result/schematron/zvon7_2.err
@@ -0,0 +1,3 @@
+Pattern: Test integer
+/AAA line 1: O.K.
+./test/schematron/zvon7_2.xml fails to validate
diff --git a/result/schematron/zvon7_3 b/result/schematron/zvon7_3
new file mode 100644
index 0000000..35089dd
--- /dev/null
+++ b/result/schematron/zvon7_3
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+0
+</AAA>
diff --git a/result/schematron/zvon7_3.err b/result/schematron/zvon7_3.err
new file mode 100644
index 0000000..5b4b59f
--- /dev/null
+++ b/result/schematron/zvon7_3.err
@@ -0,0 +1,3 @@
+Pattern: Test integer
+/AAA line 1: O.K.
+./test/schematron/zvon7_3.xml fails to validate
diff --git a/result/schematron/zvon7_4 b/result/schematron/zvon7_4
new file mode 100644
index 0000000..0739eb4
--- /dev/null
+++ b/result/schematron/zvon7_4
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<AAA>
+-45
+</AAA>
diff --git a/result/schematron/zvon7_4.err b/result/schematron/zvon7_4.err
new file mode 100644
index 0000000..de1ee89
--- /dev/null
+++ b/result/schematron/zvon7_4.err
@@ -0,0 +1,3 @@
+Pattern: Test integer
+/AAA line 1: O.K.
+./test/schematron/zvon7_4.xml fails to validate
diff --git a/result/schematron/zvon8_0 b/result/schematron/zvon8_0
new file mode 100644
index 0000000..1932cd0
--- /dev/null
+++ b/result/schematron/zvon8_0
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<XXX>
+ <BBB/>
+ <BBB/>
+ <AAA/>
+ <BBB/>
+ <AAA/>
+ <AAA/>
+</XXX>
diff --git a/result/schematron/zvon8_0.err b/result/schematron/zvon8_0.err
new file mode 100644
index 0000000..085e1de
--- /dev/null
+++ b/result/schematron/zvon8_0.err
@@ -0,0 +1,3 @@
+Pattern: Test count
+/XXX line 1: O.K.
+./test/schematron/zvon8_0.xml fails to validate
diff --git a/result/schematron/zvon8_1 b/result/schematron/zvon8_1
new file mode 100644
index 0000000..93e5cfd
--- /dev/null
+++ b/result/schematron/zvon8_1
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<XXX>
+ <BBB/>
+ <AAA/>
+ <BBB/>
+ <AAA/>
+ <AAA/>
+</XXX>
diff --git a/result/schematron/zvon8_1.err b/result/schematron/zvon8_1.err
new file mode 100644
index 0000000..ae07d05
--- /dev/null
+++ b/result/schematron/zvon8_1.err
@@ -0,0 +1,3 @@
+Pattern: Test count
+/XXX line 1: Some BBB are missing
+./test/schematron/zvon8_1.xml fails to validate
diff --git a/result/schematron/zvon8_2 b/result/schematron/zvon8_2
new file mode 100644
index 0000000..4eea77b
--- /dev/null
+++ b/result/schematron/zvon8_2
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<XXX>
+ <BBB/>
+ <BBB/>
+ <AAA/>
+ <BBB/>
+ <AAA/>
+</XXX>
diff --git a/result/schematron/zvon8_2.err b/result/schematron/zvon8_2.err
new file mode 100644
index 0000000..37e8432
--- /dev/null
+++ b/result/schematron/zvon8_2.err
@@ -0,0 +1,3 @@
+Pattern: Test count
+/XXX line 1: Some AAA are missing
+./test/schematron/zvon8_2.xml fails to validate
diff --git a/result/schematron/zvon9_0 b/result/schematron/zvon9_0
new file mode 100644
index 0000000..1f254ec
--- /dev/null
+++ b/result/schematron/zvon9_0
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<AAA>
+ <CCC/>
+ <CCC/>
+ <BBB>
+ <CCC id="Q1"/>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon9_0.err b/result/schematron/zvon9_0.err
new file mode 100644
index 0000000..a39ceeb
--- /dev/null
+++ b/result/schematron/zvon9_0.err
@@ -0,0 +1,2 @@
+Pattern: Test attribute
+./test/schematron/zvon9_0.xml validates
diff --git a/result/schematron/zvon9_1 b/result/schematron/zvon9_1
new file mode 100644
index 0000000..0dc0df7
--- /dev/null
+++ b/result/schematron/zvon9_1
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<AAA>
+ <CCC id="Q2"/>
+ <CCC/>
+ <BBB>
+ <CCC id="Q1"/>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon9_1.err b/result/schematron/zvon9_1.err
new file mode 100644
index 0000000..44c6f67
--- /dev/null
+++ b/result/schematron/zvon9_1.err
@@ -0,0 +1,3 @@
+Pattern: Test attribute
+/AAA/CCC[1] line 2: Attribute id is used in wrong context
+./test/schematron/zvon9_1.xml fails to validate
diff --git a/result/schematron/zvon9_2 b/result/schematron/zvon9_2
new file mode 100644
index 0000000..b9218fc
--- /dev/null
+++ b/result/schematron/zvon9_2
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<AAA>
+ <CCC/>
+ <CCC/>
+ <BBB>
+ <CCC/>
+ </BBB>
+</AAA>
diff --git a/result/schematron/zvon9_2.err b/result/schematron/zvon9_2.err
new file mode 100644
index 0000000..20b0884
--- /dev/null
+++ b/result/schematron/zvon9_2.err
@@ -0,0 +1,3 @@
+Pattern: Test attribute
+/AAA/BBB/CCC line 5: Attribute id is missing
+./test/schematron/zvon9_2.xml fails to validate
diff --git a/result/scripts/base b/result/scripts/base
new file mode 100644
index 0000000..f64231a
--- /dev/null
+++ b/result/scripts/base
@@ -0,0 +1,4 @@
+/ > ./test/scripts/base.xml
+/ > e > http://example.com/base/
+e > img > http://example.com/base/images/
+img > \ No newline at end of file
diff --git a/result/scripts/base.err b/result/scripts/base.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/scripts/base.err
diff --git a/result/scripts/base2 b/result/scripts/base2
new file mode 100644
index 0000000..93edf37
--- /dev/null
+++ b/result/scripts/base2
@@ -0,0 +1,4 @@
+/ > ./test/scripts/base2.xml
+/ > e > test/scripts/html/
+e > img > test/scripts/images/
+img > \ No newline at end of file
diff --git a/result/scripts/base2.err b/result/scripts/base2.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/scripts/base2.err
diff --git a/result/scripts/set1 b/result/scripts/set1
new file mode 100644
index 0000000..b4c2c9a
--- /dev/null
+++ b/result/scripts/set1
@@ -0,0 +1,3 @@
+/ > / > <?xml version="1.0"?>
+<b/>
+/ > \ No newline at end of file
diff --git a/result/scripts/set1.err b/result/scripts/set1.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/scripts/set1.err
diff --git a/result/scripts/set3 b/result/scripts/set3
new file mode 100644
index 0000000..812b35f
--- /dev/null
+++ b/result/scripts/set3
@@ -0,0 +1,12 @@
+/ > a > Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT a
+ default namespace href=bar
+a > a > Object is a Node Set :
+Set contains 2 nodes:
+1 ELEMENT a
+ default namespace href=bar
+2 ELEMENT b
+a > <?xml version="1.0"?>
+<a xmlns="bar"><b/></a>
+a > \ No newline at end of file
diff --git a/result/scripts/set3.err b/result/scripts/set3.err
new file mode 100644
index 0000000..18f0d69
--- /dev/null
+++ b/result/scripts/set3.err
@@ -0,0 +1,3 @@
+./test/scripts/set3.xml:1: parser warning : xmlns: URI bar is not absolute
+<a xmlns="bar">foo</a>
+ ^
diff --git a/result/scripts/set4 b/result/scripts/set4
new file mode 100644
index 0000000..19e9a58
--- /dev/null
+++ b/result/scripts/set4
@@ -0,0 +1,6 @@
+/ > b > b > Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT a:c
+b > <?xml version="1.0"?>
+<a xmlns:a="bar"><b xmlns:a="foo"><a:c/></b></a>
+b > \ No newline at end of file
diff --git a/result/scripts/set4.err b/result/scripts/set4.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/scripts/set4.err
diff --git a/result/slashdot.rdf b/result/slashdot.rdf
new file mode 100644
index 0000000..33008ab
--- /dev/null
+++ b/result/slashdot.rdf
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
+
+ <channel>
+ <title>Slashdot:News for Nerds. Stuff that Matters.</title>
+ <link>http://slashdot.org/</link>
+ <description>News for Nerds. Stuff that Matters</description>
+ </channel>
+
+ <image>
+ <title>Slashdot</title>
+ <url>http://slashdot.org/images/slashdotlg.gif</url>
+ <link>http://slashdot.org</link>
+ </image>
+
+ <item>
+ <title>100 Mbit/s on Fibre to the home</title>
+ <link>http://slashdot.org/articles/99/06/06/1440211.shtml</link>
+ </item>
+
+ <item>
+ <title>Gimp 1.2 Preview</title>
+ <link>http://slashdot.org/articles/99/06/06/1438246.shtml</link>
+ </item>
+
+ <item>
+ <title>Sony's AIBO robot Sold Out</title>
+ <link>http://slashdot.org/articles/99/06/06/1432256.shtml</link>
+ </item>
+
+ <item>
+ <title>Ask Slashdot: Another Word for "Hacker"?</title>
+ <link>http://slashdot.org/askslashdot/99/06/05/1815225.shtml</link>
+ </item>
+
+ <item>
+ <title>Corel Linux FAQ</title>
+ <link>http://slashdot.org/articles/99/06/05/1842218.shtml</link>
+ </item>
+
+ <item>
+ <title>Upside downsides MP3.COM.</title>
+ <link>http://slashdot.org/articles/99/06/05/1558210.shtml</link>
+ </item>
+
+ <item>
+ <title>2 Terabits of Bandwidth</title>
+ <link>http://slashdot.org/articles/99/06/05/1554258.shtml</link>
+ </item>
+
+ <item>
+ <title>Suppression of cold fusion research?</title>
+ <link>http://slashdot.org/articles/99/06/04/2313200.shtml</link>
+ </item>
+
+ <item>
+ <title>California Gov. Halts Wage Info Sale</title>
+ <link>http://slashdot.org/articles/99/06/04/235256.shtml</link>
+ </item>
+
+ <item>
+ <title>Red Hat Announces IPO</title>
+ <link>http://slashdot.org/articles/99/06/04/0849207.shtml</link>
+ </item>
+</rdf:RDF>
diff --git a/result/slashdot.rdf.rde b/result/slashdot.rdf.rde
new file mode 100644
index 0000000..fecd24d
--- /dev/null
+++ b/result/slashdot.rdf.rde
@@ -0,0 +1,218 @@
+0 1 rdf:RDF 0 0
+1 14 #text 0 1
+
+
+1 1 channel 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Slashdot:News for Nerds. Stuff that Matters.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/
+2 15 link 0 0
+2 14 #text 0 1
+
+2 1 description 0 0
+3 3 #text 0 1 News for Nerds. Stuff that Matters
+2 15 description 0 0
+2 14 #text 0 1
+
+1 15 channel 0 0
+1 14 #text 0 1
+
+
+1 1 image 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Slashdot
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/images/slashdotlg.gif
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 image 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Corel Linux FAQ
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1842218.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Upside downsides MP3.COM.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1558210.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 2 Terabits of Bandwidth
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1554258.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Suppression of cold fusion research?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/2313200.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 California Gov. Halts Wage Info Sale
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/235256.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Red Hat Announces IPO
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/0849207.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+0 15 rdf:RDF 0 0
diff --git a/result/slashdot.rdf.rdr b/result/slashdot.rdf.rdr
new file mode 100644
index 0000000..fecd24d
--- /dev/null
+++ b/result/slashdot.rdf.rdr
@@ -0,0 +1,218 @@
+0 1 rdf:RDF 0 0
+1 14 #text 0 1
+
+
+1 1 channel 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Slashdot:News for Nerds. Stuff that Matters.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/
+2 15 link 0 0
+2 14 #text 0 1
+
+2 1 description 0 0
+3 3 #text 0 1 News for Nerds. Stuff that Matters
+2 15 description 0 0
+2 14 #text 0 1
+
+1 15 channel 0 0
+1 14 #text 0 1
+
+
+1 1 image 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Slashdot
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/images/slashdotlg.gif
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 image 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Corel Linux FAQ
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1842218.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Upside downsides MP3.COM.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1558210.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 2 Terabits of Bandwidth
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1554258.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Suppression of cold fusion research?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/2313200.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 California Gov. Halts Wage Info Sale
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/235256.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+
+1 1 item 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Red Hat Announces IPO
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 link 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/0849207.shtml
+2 15 link 0 0
+2 14 #text 0 1
+
+1 15 item 0 0
+1 14 #text 0 1
+
+0 15 rdf:RDF 0 0
diff --git a/result/slashdot.rdf.sax b/result/slashdot.rdf.sax
new file mode 100644
index 0000000..fe54376
--- /dev/null
+++ b/result/slashdot.rdf.sax
@@ -0,0 +1,221 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(rdf:RDF, xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#', xmlns='http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 4)
+SAX.startElement(channel)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Slashdot:News for Nerds. Stuff, 44)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/, 20)
+SAX.endElement(link)
+SAX.characters(
+ , 5)
+SAX.startElement(description)
+SAX.characters(News for Nerds. Stuff that Ma, 35)
+SAX.endElement(description)
+SAX.characters(
+ , 3)
+SAX.endElement(channel)
+SAX.characters(
+
+ , 4)
+SAX.startElement(image)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Slashdot, 8)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/images/sla, 41)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org, 19)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(image)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Corel Linux FAQ, 15)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Upside downsides MP3.COM., 25)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(2 Terabits of Bandwidth, 23)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Suppression of cold fusion res, 36)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(California Gov. Halts Wage Inf, 36)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 50)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+
+ , 6)
+SAX.startElement(item)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Red Hat Announces IPO, 21)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(link)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(link)
+SAX.characters(
+ , 3)
+SAX.endElement(item)
+SAX.characters(
+, 1)
+SAX.endElement(rdf:RDF)
+SAX.endDocument()
diff --git a/result/slashdot.rdf.sax2 b/result/slashdot.rdf.sax2
new file mode 100644
index 0000000..c561cf8
--- /dev/null
+++ b/result/slashdot.rdf.sax2
@@ -0,0 +1,221 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(RDF, rdf, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', 2, xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#', xmlns='http://my.netscape.com/rdf/simple/0.9/', 0, 0)
+SAX.characters(
+
+ , 4)
+SAX.startElementNs(channel, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Slashdot:News for Nerds. Stuff, 44)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/, 20)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(description, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(News for Nerds. Stuff that Ma, 35)
+SAX.endElementNs(description, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(channel, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 4)
+SAX.startElementNs(image, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Slashdot, 8)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/images/sla, 41)
+SAX.endElementNs(url, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org, 19)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(image, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Corel Linux FAQ, 15)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Upside downsides MP3.COM., 25)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(2 Terabits of Bandwidth, 23)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Suppression of cold fusion res, 36)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(California Gov. Halts Wage Inf, 36)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 50)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+
+ , 6)
+SAX.startElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(Red Hat Announces IPO, 21)
+SAX.endElementNs(title, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 5)
+SAX.startElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/', 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(link, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+ , 3)
+SAX.endElementNs(item, NULL, 'http://my.netscape.com/rdf/simple/0.9/')
+SAX.characters(
+, 1)
+SAX.endElementNs(RDF, rdf, 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
+SAX.endDocument()
diff --git a/result/slashdot.xml b/result/slashdot.xml
new file mode 100644
index 0000000..b648d5e
--- /dev/null
+++ b/result/slashdot.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<ultramode>
+ <story>
+ <title>100 Mbit/s on Fibre to the home</title>
+ <url>http://slashdot.org/articles/99/06/06/1440211.shtml</url>
+ <time>1999-06-06 14:39:59</time>
+ <author>CmdrTaco</author>
+ <department>wouldn't-it-be-nice</department>
+ <topic>internet</topic>
+ <comments>20</comments>
+ <section>articles</section>
+ <image>topicinternet.jpg</image>
+ </story>
+ <story>
+ <title>Gimp 1.2 Preview</title>
+ <url>http://slashdot.org/articles/99/06/06/1438246.shtml</url>
+ <time>1999-06-06 14:38:40</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-read</department>
+ <topic>gimp</topic>
+ <comments>12</comments>
+ <section>articles</section>
+ <image>topicgimp.gif</image>
+ </story>
+ <story>
+ <title>Sony's AIBO robot Sold Out</title>
+ <url>http://slashdot.org/articles/99/06/06/1432256.shtml</url>
+ <time>1999-06-06 14:32:51</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-see</department>
+ <topic>tech</topic>
+ <comments>10</comments>
+ <section>articles</section>
+ <image>topictech2.jpg</image>
+ </story>
+ <story>
+ <title>Ask Slashdot: Another Word for "Hacker"?</title>
+ <url>http://slashdot.org/askslashdot/99/06/05/1815225.shtml</url>
+ <time>1999-06-05 20:00:00</time>
+ <author>Cliff</author>
+ <department>hacker-vs-cracker</department>
+ <topic>news</topic>
+ <comments>385</comments>
+ <section>askslashdot</section>
+ <image>topicnews.gif</image>
+ </story>
+ <story>
+ <title>Corel Linux FAQ</title>
+ <url>http://slashdot.org/articles/99/06/05/1842218.shtml</url>
+ <time>1999-06-05 18:42:06</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-read</department>
+ <topic>corel</topic>
+ <comments>164</comments>
+ <section>articles</section>
+ <image>topiccorel.gif</image>
+ </story>
+ <story>
+ <title>Upside downsides MP3.COM.</title>
+ <url>http://slashdot.org/articles/99/06/05/1558210.shtml</url>
+ <time>1999-06-05 15:56:45</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-think-about</department>
+ <topic>music</topic>
+ <comments>48</comments>
+ <section>articles</section>
+ <image>topicmusic.gif</image>
+ </story>
+ <story>
+ <title>2 Terabits of Bandwidth</title>
+ <url>http://slashdot.org/articles/99/06/05/1554258.shtml</url>
+ <time>1999-06-05 15:53:43</time>
+ <author>CmdrTaco</author>
+ <department>faster-porn</department>
+ <topic>internet</topic>
+ <comments>66</comments>
+ <section>articles</section>
+ <image>topicinternet.jpg</image>
+ </story>
+ <story>
+ <title>Suppression of cold fusion research?</title>
+ <url>http://slashdot.org/articles/99/06/04/2313200.shtml</url>
+ <time>1999-06-04 23:12:29</time>
+ <author>Hemos</author>
+ <department>possibly-probably</department>
+ <topic>science</topic>
+ <comments>217</comments>
+ <section>articles</section>
+ <image>topicscience.gif</image>
+ </story>
+ <story>
+ <title>California Gov. Halts Wage Info Sale</title>
+ <url>http://slashdot.org/articles/99/06/04/235256.shtml</url>
+ <time>1999-06-04 23:05:34</time>
+ <author>Hemos</author>
+ <department>woo-hoo!</department>
+ <topic>usa</topic>
+ <comments>16</comments>
+ <section>articles</section>
+ <image>topicus.gif</image>
+ </story>
+ <story>
+ <title>Red Hat Announces IPO</title>
+ <url>http://slashdot.org/articles/99/06/04/0849207.shtml</url>
+ <time>1999-06-04 19:30:18</time>
+ <author>Justin</author>
+ <department>details-sketchy</department>
+ <topic>redhat</topic>
+ <comments>155</comments>
+ <section>articles</section>
+ <image>topicredhat.gif</image>
+ </story>
+</ultramode>
diff --git a/result/slashdot.xml.rde b/result/slashdot.xml.rde
new file mode 100644
index 0000000..56b6836
--- /dev/null
+++ b/result/slashdot.xml.rde
@@ -0,0 +1,514 @@
+0 1 ultramode 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:39:59
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 wouldn't-it-be-nice
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 20
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:38:40
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 gimp
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 12
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicgimp.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:32:51
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-see
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 tech
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 10
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topictech2.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 20:00:00
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Cliff
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 hacker-vs-cracker
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 news
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 385
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 askslashdot
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicnews.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Corel Linux FAQ
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1842218.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 18:42:06
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 corel
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 164
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topiccorel.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Upside downsides MP3.COM.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1558210.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:56:45
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-think-about
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 music
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 48
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicmusic.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 2 Terabits of Bandwidth
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1554258.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:53:43
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 faster-porn
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 66
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Suppression of cold fusion research?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/2313200.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:12:29
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 possibly-probably
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 science
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 217
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicscience.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 California Gov. Halts Wage Info Sale
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/235256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:05:34
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 woo-hoo!
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 usa
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 16
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicus.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Red Hat Announces IPO
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/0849207.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 19:30:18
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Justin
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 details-sketchy
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 redhat
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 155
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicredhat.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+0 15 ultramode 0 0
diff --git a/result/slashdot.xml.rdr b/result/slashdot.xml.rdr
new file mode 100644
index 0000000..56b6836
--- /dev/null
+++ b/result/slashdot.xml.rdr
@@ -0,0 +1,514 @@
+0 1 ultramode 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:39:59
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 wouldn't-it-be-nice
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 20
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:38:40
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 gimp
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 12
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicgimp.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:32:51
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-see
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 tech
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 10
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topictech2.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 20:00:00
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Cliff
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 hacker-vs-cracker
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 news
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 385
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 askslashdot
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicnews.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Corel Linux FAQ
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1842218.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 18:42:06
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 corel
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 164
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topiccorel.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Upside downsides MP3.COM.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1558210.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:56:45
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-think-about
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 music
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 48
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicmusic.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 2 Terabits of Bandwidth
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1554258.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:53:43
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 faster-porn
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 66
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Suppression of cold fusion research?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/2313200.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:12:29
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 possibly-probably
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 science
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 217
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicscience.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 California Gov. Halts Wage Info Sale
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/235256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:05:34
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 woo-hoo!
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 usa
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 16
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicus.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Red Hat Announces IPO
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/0849207.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 19:30:18
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Justin
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 details-sketchy
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 redhat
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 155
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicredhat.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+0 15 ultramode 0 0
diff --git a/result/slashdot.xml.sax b/result/slashdot.xml.sax
new file mode 100644
index 0000000..63b5f0d
--- /dev/null
+++ b/result/slashdot.xml.sax
@@ -0,0 +1,517 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(ultramode)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:39:59, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(wouldn't-it-be-nice, 19)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(internet, 8)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(20, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:38:40, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-read, 13)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(gimp, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(12, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicgimp.gif, 13)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:32:51, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-see, 12)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(tech, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(10, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topictech2.jpg, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 20:00:00, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Cliff, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(hacker-vs-cracker, 17)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(news, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(385, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(askslashdot, 11)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicnews.gif, 13)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Corel Linux FAQ, 15)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 18:42:06, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-read, 13)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(corel, 5)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(164, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topiccorel.gif, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Upside downsides MP3.COM., 25)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 15:56:45, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-think-about, 20)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(music, 5)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(48, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicmusic.gif, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(2 Terabits of Bandwidth, 23)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 15:53:43, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(faster-porn, 11)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(internet, 8)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(66, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Suppression of cold fusion res, 36)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-04 23:12:29, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Hemos, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(possibly-probably, 17)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(science, 7)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(217, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicscience.gif, 16)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(California Gov. Halts Wage Inf, 36)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 50)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-04 23:05:34, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Hemos, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(woo-hoo!, 8)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(usa, 3)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(16, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicus.gif, 11)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Red Hat Announces IPO, 21)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-04 19:30:18, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Justin, 6)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(details-sketchy, 15)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(redhat, 6)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(155, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicredhat.gif, 15)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+, 1)
+SAX.endElement(ultramode)
+SAX.endDocument()
diff --git a/result/slashdot.xml.sax2 b/result/slashdot.xml.sax2
new file mode 100644
index 0000000..2ead70d
--- /dev/null
+++ b/result/slashdot.xml.sax2
@@ -0,0 +1,517 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(ultramode, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:39:59, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(wouldn't-it-be-nice, 19)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(internet, 8)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(20, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:38:40, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-read, 13)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(gimp, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(12, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicgimp.gif, 13)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:32:51, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-see, 12)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(tech, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(10, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topictech2.jpg, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 20:00:00, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Cliff, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(hacker-vs-cracker, 17)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(news, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(385, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(askslashdot, 11)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicnews.gif, 13)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Corel Linux FAQ, 15)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 18:42:06, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-read, 13)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(corel, 5)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(164, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topiccorel.gif, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Upside downsides MP3.COM., 25)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 15:56:45, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-think-about, 20)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(music, 5)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(48, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicmusic.gif, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(2 Terabits of Bandwidth, 23)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 15:53:43, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(faster-porn, 11)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(internet, 8)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(66, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Suppression of cold fusion res, 36)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-04 23:12:29, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Hemos, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(possibly-probably, 17)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(science, 7)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(217, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicscience.gif, 16)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(California Gov. Halts Wage Inf, 36)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 50)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-04 23:05:34, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Hemos, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(woo-hoo!, 8)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(usa, 3)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(16, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicus.gif, 11)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Red Hat Announces IPO, 21)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-04 19:30:18, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Justin, 6)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(details-sketchy, 15)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(redhat, 6)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(155, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicredhat.gif, 15)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(ultramode, NULL, NULL)
+SAX.endDocument()
diff --git a/result/slashdot16.xml b/result/slashdot16.xml
new file mode 100644
index 0000000..f6a7f2a
--- /dev/null
+++ b/result/slashdot16.xml
Binary files differ
diff --git a/result/slashdot16.xml.rde b/result/slashdot16.xml.rde
new file mode 100644
index 0000000..cb7a86c
--- /dev/null
+++ b/result/slashdot16.xml.rde
@@ -0,0 +1,718 @@
+0 1 ultramode 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:39:59
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 wouldn't-it-be-nice
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 20
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:38:40
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 gimp
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 12
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicgimp.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:32:51
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-see
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 tech
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 10
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topictech2.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 20:00:00
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Cliff
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 hacker-vs-cracker
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 news
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 385
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 askslashdot
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicnews.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:39:59
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 wouldn't-it-be-nice
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 20
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:38:40
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 gimp
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 12
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicgimp.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:32:51
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-see
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 tech
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 10
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topictech2.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 20:00:00
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Cliff
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 hacker-vs-cracker
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 news
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 385
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 askslashdot
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicnews.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Corel Linux FAQ
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1842218.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 18:42:06
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 corel
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 164
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topiccorel.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Upside downsides MP3.COM.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1558210.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:56:45
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-think-about
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 music
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 48
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicmusic.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 2 Terabits of Bandwidth
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1554258.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:53:43
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 faster-porn
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 66
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Suppression of cold fusion research?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/2313200.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:12:29
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 possibly-probably
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 science
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 217
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicscience.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 California Gov. Halts Wage Info Sale
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/235256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:05:34
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 woo-hoo!
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 usa
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 16
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicus.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Red Hat Announces IPO
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/0849207.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 19:30:18
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Justin
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 details-sketchy
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 redhat
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 155
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicredhat.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+0 15 ultramode 0 0
diff --git a/result/slashdot16.xml.rdr b/result/slashdot16.xml.rdr
new file mode 100644
index 0000000..cb7a86c
--- /dev/null
+++ b/result/slashdot16.xml.rdr
@@ -0,0 +1,718 @@
+0 1 ultramode 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:39:59
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 wouldn't-it-be-nice
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 20
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:38:40
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 gimp
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 12
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicgimp.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:32:51
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-see
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 tech
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 10
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topictech2.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 20:00:00
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Cliff
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 hacker-vs-cracker
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 news
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 385
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 askslashdot
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicnews.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 100 Mbit/s on Fibre to the home
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1440211.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:39:59
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 wouldn't-it-be-nice
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 20
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Gimp 1.2 Preview
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1438246.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:38:40
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 gimp
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 12
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicgimp.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Sony's AIBO robot Sold Out
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/06/1432256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-06 14:32:51
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-see
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 tech
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 10
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topictech2.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Ask Slashdot: Another Word for "Hacker"?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/askslashdot/99/06/05/1815225.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 20:00:00
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Cliff
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 hacker-vs-cracker
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 news
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 385
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 askslashdot
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicnews.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Corel Linux FAQ
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1842218.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 18:42:06
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-read
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 corel
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 164
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topiccorel.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Upside downsides MP3.COM.
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1558210.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:56:45
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 stuff-to-think-about
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 music
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 48
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicmusic.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 2 Terabits of Bandwidth
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/05/1554258.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-05 15:53:43
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 CmdrTaco
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 faster-porn
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 internet
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 66
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicinternet.jpg
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Suppression of cold fusion research?
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/2313200.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:12:29
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 possibly-probably
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 science
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 217
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicscience.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 California Gov. Halts Wage Info Sale
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/235256.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 23:05:34
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Hemos
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 woo-hoo!
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 usa
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 16
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicus.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+1 1 story 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Red Hat Announces IPO
+2 15 title 0 0
+2 14 #text 0 1
+
+2 1 url 0 0
+3 3 #text 0 1 http://slashdot.org/articles/99/06/04/0849207.shtml
+2 15 url 0 0
+2 14 #text 0 1
+
+2 1 time 0 0
+3 3 #text 0 1 1999-06-04 19:30:18
+2 15 time 0 0
+2 14 #text 0 1
+
+2 1 author 0 0
+3 3 #text 0 1 Justin
+2 15 author 0 0
+2 14 #text 0 1
+
+2 1 department 0 0
+3 3 #text 0 1 details-sketchy
+2 15 department 0 0
+2 14 #text 0 1
+
+2 1 topic 0 0
+3 3 #text 0 1 redhat
+2 15 topic 0 0
+2 14 #text 0 1
+
+2 1 comments 0 0
+3 3 #text 0 1 155
+2 15 comments 0 0
+2 14 #text 0 1
+
+2 1 section 0 0
+3 3 #text 0 1 articles
+2 15 section 0 0
+2 14 #text 0 1
+
+2 1 image 0 0
+3 3 #text 0 1 topicredhat.gif
+2 15 image 0 0
+2 14 #text 0 1
+
+1 15 story 0 0
+1 14 #text 0 1
+
+0 15 ultramode 0 0
diff --git a/result/slashdot16.xml.sax b/result/slashdot16.xml.sax
new file mode 100644
index 0000000..07cfaf0
--- /dev/null
+++ b/result/slashdot16.xml.sax
@@ -0,0 +1,721 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(ultramode)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:39:59, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(wouldn't-it-be-nice, 19)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(internet, 8)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(20, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:38:40, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-read, 13)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(gimp, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(12, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicgimp.gif, 13)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:32:51, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-see, 12)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(tech, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(10, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topictech2.jpg, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 20:00:00, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Cliff, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(hacker-vs-cracker, 17)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(news, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(385, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(askslashdot, 11)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicnews.gif, 13)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 3)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:39:59, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(wouldn't-it-be-nice, 19)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(internet, 8)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(20, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:38:40, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-read, 13)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(gimp, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(12, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicgimp.gif, 13)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-06 14:32:51, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-see, 12)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(tech, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(10, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topictech2.jpg, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 20:00:00, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Cliff, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(hacker-vs-cracker, 17)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(news, 4)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(385, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(askslashdot, 11)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicnews.gif, 13)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+, 1)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Corel Linux FAQ, 15)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 18:42:06, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-read, 13)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(corel, 5)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(164, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topiccorel.gif, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Upside downsides MP3.COM., 25)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 15:56:45, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(stuff-to-think-about, 20)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(music, 5)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(48, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicmusic.gif, 14)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(2 Terabits of Bandwidth, 23)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-05 15:53:43, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(CmdrTaco, 8)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(faster-porn, 11)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(internet, 8)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(66, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Suppression of cold fusion res, 36)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-04 23:12:29, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Hemos, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(possibly-probably, 17)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(science, 7)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(217, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicscience.gif, 16)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(California Gov. Halts Wage Inf, 36)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 50)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-04 23:05:34, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Hemos, 5)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(woo-hoo!, 8)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(usa, 3)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(16, 2)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicus.gif, 11)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+ , 2)
+SAX.startElement(story)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Red Hat Announces IPO, 21)
+SAX.endElement(title)
+SAX.characters(
+ , 5)
+SAX.startElement(url)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElement(url)
+SAX.characters(
+ , 5)
+SAX.startElement(time)
+SAX.characters(1999-06-04 19:30:18, 19)
+SAX.endElement(time)
+SAX.characters(
+ , 5)
+SAX.startElement(author)
+SAX.characters(Justin, 6)
+SAX.endElement(author)
+SAX.characters(
+ , 5)
+SAX.startElement(department)
+SAX.characters(details-sketchy, 15)
+SAX.endElement(department)
+SAX.characters(
+ , 5)
+SAX.startElement(topic)
+SAX.characters(redhat, 6)
+SAX.endElement(topic)
+SAX.characters(
+ , 5)
+SAX.startElement(comments)
+SAX.characters(155, 3)
+SAX.endElement(comments)
+SAX.characters(
+ , 5)
+SAX.startElement(section)
+SAX.characters(articles, 8)
+SAX.endElement(section)
+SAX.characters(
+ , 5)
+SAX.startElement(image)
+SAX.characters(topicredhat.gif, 15)
+SAX.endElement(image)
+SAX.characters(
+ , 3)
+SAX.endElement(story)
+SAX.characters(
+, 1)
+SAX.endElement(ultramode)
+SAX.endDocument()
diff --git a/result/slashdot16.xml.sax2 b/result/slashdot16.xml.sax2
new file mode 100644
index 0000000..785e699
--- /dev/null
+++ b/result/slashdot16.xml.sax2
@@ -0,0 +1,721 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(ultramode, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:39:59, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(wouldn't-it-be-nice, 19)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(internet, 8)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(20, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:38:40, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-read, 13)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(gimp, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(12, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicgimp.gif, 13)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:32:51, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-see, 12)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(tech, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(10, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topictech2.jpg, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 20:00:00, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Cliff, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(hacker-vs-cracker, 17)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(news, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(385, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(askslashdot, 11)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicnews.gif, 13)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(100 Mbit/s on Fibre to the hom, 31)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:39:59, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(wouldn't-it-be-nice, 19)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(internet, 8)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(20, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Gimp 1.2 Preview, 16)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:38:40, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-read, 13)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(gimp, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(12, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicgimp.gif, 13)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Sony's AIBO robot Sold Out, 26)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-06 14:32:51, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-see, 12)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(tech, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(10, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topictech2.jpg, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Ask Slashdot: Another Word for, 40)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/askslashdo, 54)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 20:00:00, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Cliff, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(hacker-vs-cracker, 17)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(news, 4)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(385, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(askslashdot, 11)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicnews.gif, 13)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Corel Linux FAQ, 15)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 18:42:06, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-read, 13)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(corel, 5)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(164, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topiccorel.gif, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Upside downsides MP3.COM., 25)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 15:56:45, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(stuff-to-think-about, 20)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(music, 5)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(48, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicmusic.gif, 14)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(2 Terabits of Bandwidth, 23)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-05 15:53:43, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(CmdrTaco, 8)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(faster-porn, 11)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(internet, 8)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(66, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicinternet.jpg, 17)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Suppression of cold fusion res, 36)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-04 23:12:29, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Hemos, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(possibly-probably, 17)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(science, 7)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(217, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicscience.gif, 16)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(California Gov. Halts Wage Inf, 36)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 50)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-04 23:05:34, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Hemos, 5)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(woo-hoo!, 8)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(usa, 3)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(16, 2)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicus.gif, 11)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(story, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Red Hat Announces IPO, 21)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(url, NULL, NULL, 0, 0, 0)
+SAX.characters(http://slashdot.org/articles/9, 51)
+SAX.endElementNs(url, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(time, NULL, NULL, 0, 0, 0)
+SAX.characters(1999-06-04 19:30:18, 19)
+SAX.endElementNs(time, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(author, NULL, NULL, 0, 0, 0)
+SAX.characters(Justin, 6)
+SAX.endElementNs(author, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(department, NULL, NULL, 0, 0, 0)
+SAX.characters(details-sketchy, 15)
+SAX.endElementNs(department, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(topic, NULL, NULL, 0, 0, 0)
+SAX.characters(redhat, 6)
+SAX.endElementNs(topic, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(comments, NULL, NULL, 0, 0, 0)
+SAX.characters(155, 3)
+SAX.endElementNs(comments, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(section, NULL, NULL, 0, 0, 0)
+SAX.characters(articles, 8)
+SAX.endElementNs(section, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(image, NULL, NULL, 0, 0, 0)
+SAX.characters(topicredhat.gif, 15)
+SAX.endElementNs(image, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(story, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(ultramode, NULL, NULL)
+SAX.endDocument()
diff --git a/result/svg1 b/result/svg1
new file mode 100644
index 0000000..359bd45
--- /dev/null
+++ b/result/svg1
@@ -0,0 +1,161 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="242px" height="383px">
+<g style="stroke: #000000">
+</g>
+<g style="fill: #f2cc99">
+ <polyline verts=" 69,18 82,8 99,3 118,5 135,12 149,21 156,13 165,9 177,13 183,28 180,50 164,91 155,107 154,114 151,121 141,127 139,136 155,206 157,251 126,342 133,357 128,376 83,376 75,368 67,350 61,350 53,369 4,369 2,361 5,354 12,342 16,321 4,257 4,244 7,218 9,179 26,127 43,93 32,77 30,70 24,67 16,49 17,35 18,23 30,12 40,7 53,7 62,12 69,18 69,18 69,18"/>
+</g>
+<g style="fill: #e5b27f">
+ <polyline verts=" 142,79 136,74 138,82 133,78 133,84 127,78 128,85 124,80 125,87 119,82 119,90 125,99 125,96 128,100 128,94 131,98 132,93 135,97 136,93 138,97 139,94 141,98 143,94 144,85 142,79 142,79 142,79"/>
+</g>
+<g style="fill: #eb8080">
+ <polyline verts=" 127,101 132,100 137,99 144,101 143,105 135,110 127,101 127,101 127,101"/>
+</g>
+<g style="fill: #f2cc99">
+ <polyline verts=" 178,229 157,248 139,296 126,349 137,356 158,357 183,342 212,332 235,288 235,261 228,252 212,250 188,251 178,229 178,229 178,229"/>
+</g>
+<g style="fill: #9c826b">
+ <polyline verts=" 56,229 48,241 48,250 57,281 63,325 71,338 81,315 76,321 79,311 83,301 75,308 80,298 73,303 76,296 71,298 74,292 69,293 74,284 78,278 71,278 74,274 68,273 70,268 66,267 68,261 60,266 62,259 65,253 57,258 59,251 55,254 55,248 60,237 54,240 58,234 54,236 56,229 56,229 56,229"/>
+ <polyline verts=" 74,363 79,368 81,368 85,362 89,363 92,370 96,373 101,372 108,361 110,371 113,373 116,371 120,358 122,363 123,371 126,371 129,367 132,357 135,361 130,376 127,377 94,378 84,376 76,371 74,363 74,363 74,363"/>
+ <polyline verts=" 212,250 219,251 228,258 236,270 235,287 225,304 205,332 177,343 171,352 158,357 166,352 168,346 168,339 165,333 155,327 155,323 161,320 165,316 169,316 167,312 171,313 168,308 173,309 170,306 177,306 175,308 177,311 174,311 176,316 171,315 174,319 168,320 168,323 175,327 179,332 183,326 184,332 189,323 190,328 194,320 194,325 199,316 201,320 204,313 206,316 208,310 211,305 219,298 226,288 229,279 228,266 224,259 217,253 212,250 212,250 212,250"/>
+ <polyline verts=" 151,205 151,238 149,252 141,268 128,282 121,301 130,300 126,313 118,324 116,337 120,346 133,352 133,340 137,333 145,329 156,327 153,319 153,291 157,271 170,259 178,277 193,250 174,216 151,205 151,205 151,205"/>
+ <polyline verts=" 78,127 90,142 95,155 108,164 125,167 139,175 150,206 152,191 141,140 121,148 100,136 78,127 78,127 78,127"/>
+ <polyline verts=" 21,58 35,63 38,68 32,69 42,74 40,79 47,80 54,83 45,94 34,81 32,73 24,66 21,58 21,58 21,58"/>
+ <polyline verts=" 71,34 67,34 66,27 59,24 54,17 48,17 39,22 30,26 28,31 31,39 38,46 29,45 36,54 41,61 41,70 50,69 54,71 55,58 67,52 76,43 76,39 68,44 71,34 71,34 71,34"/>
+ <polyline verts=" 139,74 141,83 143,89 144,104 148,104 155,106 154,86 157,77 155,72 150,77 144,77 139,74 139,74 139,74"/>
+ <polyline verts=" 105,44 102,53 108,58 111,62 112,55 105,44 105,44 105,44"/>
+ <polyline verts=" 141,48 141,54 144,58 139,62 137,66 136,59 137,52 141,48 141,48 141,48"/>
+ <polyline verts=" 98,135 104,130 105,134 108,132 108,135 112,134 113,137 116,136 116,139 119,139 124,141 128,140 133,138 140,133 139,140 126,146 104,144 98,135 98,135 98,135"/>
+ <polyline verts=" 97,116 103,119 103,116 111,118 116,117 122,114 127,107 135,111 142,107 141,114 145,118 149,121 145,125 140,124 127,121 113,125 100,124 97,116 97,116 97,116"/>
+ <polyline verts=" 147,33 152,35 157,34 153,31 160,31 156,28 161,28 159,24 163,25 163,21 165,22 170,23 167,17 172,21 174,18 175,23 176,22 177,28 177,33 174,37 176,39 174,44 171,49 168,53 164,57 159,68 156,70 154,60 150,51 146,43 144,35 147,33 147,33 147,33"/>
+ <polyline verts=" 85,72 89,74 93,75 100,76 105,75 102,79 94,79 88,76 85,72 85,72 85,72"/>
+ <polyline verts=" 86,214 79,221 76,232 82,225 78,239 82,234 78,245 81,243 79,255 84,250 84,267 87,254 90,271 90,257 95,271 93,256 95,249 92,252 93,243 89,253 89,241 86,250 87,236 83,245 87,231 82,231 90,219 84,221 86,214 86,214 86,214"/>
+</g>
+<g style="fill: #ffcc7f">
+ <polyline verts=" 93,68 96,72 100,73 106,72 108,66 105,63 100,62 93,68 93,68 93,68"/>
+ <polyline verts=" 144,64 142,68 142,73 146,74 150,73 154,64 149,62 144,64 144,64 144,64"/>
+</g>
+<g style="fill: #9c826b">
+ <polyline verts=" 57,91 42,111 52,105 41,117 53,112 46,120 53,116 50,124 57,119 55,127 61,122 60,130 67,126 66,134 71,129 72,136 77,130 76,137 80,133 82,138 86,135 96,135 94,129 86,124 83,117 77,123 79,117 73,120 75,112 68,116 71,111 65,114 69,107 63,110 68,102 61,107 66,98 61,103 63,97 57,99 57,91 57,91 57,91"/>
+ <polyline verts=" 83,79 76,79 67,82 75,83 65,88 76,87 65,92 76,91 68,96 77,95 70,99 80,98 72,104 80,102 76,108 85,103 92,101 87,98 93,96 86,94 91,93 85,91 93,89 99,89 105,93 107,85 102,82 92,80 83,79 83,79 83,79"/>
+ <polyline verts=" 109,77 111,83 109,89 113,94 117,90 117,81 114,78 109,77 109,77 109,77"/>
+ <polyline verts=" 122,128 127,126 134,127 136,129 134,130 130,128 124,129 122,128 122,128 122,128"/>
+ <polyline verts=" 78,27 82,32 80,33 82,36 78,37 82,40 78,42 81,46 76,47 78,49 74,50 82,52 87,50 83,48 91,46 86,45 91,42 88,40 92,37 86,34 90,31 86,29 89,26 78,27 78,27 78,27"/>
+ <polyline verts=" 82,17 92,20 79,21 90,25 81,25 94,28 93,26 101,30 101,26 107,33 108,28 111,40 113,34 115,45 117,39 119,54 121,46 124,58 126,47 129,59 130,49 134,58 133,44 137,48 133,37 137,40 133,32 126,20 135,26 132,19 138,23 135,17 142,18 132,11 116,6 94,6 78,11 92,12 80,14 90,16 82,17 82,17 82,17"/>
+ <polyline verts=" 142,234 132,227 124,223 115,220 110,225 118,224 127,229 135,236 122,234 115,237 113,242 121,238 139,243 121,245 111,254 95,254 102,244 104,235 110,229 100,231 104,224 113,216 122,215 132,217 141,224 145,230 149,240 142,234 142,234 142,234"/>
+ <polyline verts=" 115,252 125,248 137,249 143,258 134,255 125,254 115,252 115,252 115,252"/>
+ <polyline verts=" 114,212 130,213 140,219 147,225 144,214 137,209 128,207 114,212 114,212 114,212"/>
+ <polyline verts=" 102,263 108,258 117,257 131,258 116,260 109,265 102,263 102,263 102,263"/>
+ <polyline verts=" 51,241 35,224 40,238 23,224 31,242 19,239 28,247 17,246 25,250 37,254 39,263 44,271 47,294 48,317 51,328 60,351 60,323 53,262 47,246 51,241 51,241 51,241"/>
+ <polyline verts=" 2,364 9,367 14,366 18,355 20,364 26,366 31,357 35,364 39,364 42,357 47,363 53,360 59,357 54,369 7,373 2,364 2,364 2,364"/>
+ <polyline verts=" 7,349 19,345 25,339 18,341 23,333 28,326 23,326 27,320 23,316 25,311 20,298 15,277 12,264 9,249 10,223 3,248 5,261 15,307 17,326 11,343 7,349 7,349 7,349"/>
+ <polyline verts=" 11,226 15,231 25,236 18,227 11,226 11,226 11,226"/>
+ <polyline verts=" 13,214 19,217 32,227 23,214 16,208 15,190 24,148 31,121 24,137 14,170 8,189 13,214 13,214 13,214"/>
+ <polyline verts=" 202,254 195,258 199,260 193,263 197,263 190,268 196,268 191,273 188,282 200,272 194,272 201,266 197,265 204,262 200,258 204,256 202,254 202,254 202,254"/>
+</g>
+<g style="fill: #845433">
+ <polyline verts=" 151,213 165,212 179,225 189,246 187,262 179,275 176,263 177,247 171,233 163,230 165,251 157,264 146,298 145,321 133,326 143,285 154,260 153,240 151,213 151,213 151,213"/>
+ <polyline verts=" 91,132 95,145 97,154 104,148 107,155 109,150 111,158 115,152 118,159 120,153 125,161 126,155 133,164 132,154 137,163 137,152 142,163 147,186 152,192 148,167 141,143 124,145 105,143 91,132 91,132 91,132"/>
+</g>
+<g style="fill: #9c826b">
+ <polyline verts=" 31,57 23,52 26,51 20,44 23,42 21,36 22,29 25,23 24,32 30,43 26,41 30,50 26,48 31,57 31,57 31,57"/>
+ <polyline verts=" 147,21 149,28 155,21 161,16 167,14 175,15 173,11 161,9 147,21 147,21 147,21"/>
+ <polyline verts=" 181,39 175,51 169,57 171,65 165,68 165,75 160,76 162,91 171,71 180,51 181,39 181,39 181,39"/>
+ <polyline verts=" 132,346 139,348 141,346 142,341 147,342 143,355 133,350 132,346 132,346 132,346"/>
+ <polyline verts=" 146,355 151,352 155,348 157,343 160,349 151,356 147,357 146,355 146,355 146,355"/>
+ <polyline verts=" 99,266 100,281 94,305 86,322 78,332 72,346 73,331 91,291 99,266 99,266 99,266"/>
+ <polyline verts=" 20,347 32,342 45,340 54,345 45,350 42,353 38,350 31,353 29,356 23,350 19,353 15,349 20,347 20,347 20,347"/>
+ <polyline verts=" 78,344 86,344 92,349 88,358 84,352 78,344 78,344 78,344"/>
+ <polyline verts=" 93,347 104,344 117,345 124,354 121,357 116,351 112,351 108,355 102,351 93,347 93,347 93,347"/>
+</g>
+<g style="fill: #000000">
+ <polyline verts=" 105,12 111,18 113,24 113,29 119,34 116,23 112,16 105,12 105,12 105,12"/>
+ <polyline verts=" 122,27 125,34 127,43 128,34 125,29 122,27 122,27 122,27"/>
+ <polyline verts=" 115,13 122,19 122,15 113,10 115,13 115,13 115,13"/>
+</g>
+<g style="fill: #ffe5b2">
+ <polyline verts=" 116,172 107,182 98,193 98,183 90,199 89,189 84,207 88,206 87,215 95,206 93,219 91,230 98,216 97,226 104,214 112,209 104,208 113,202 126,200 139,207 132,198 142,203 134,192 142,195 134,187 140,185 130,181 136,177 126,177 125,171 116,180 116,172 116,172 116,172"/>
+ <polyline verts=" 74,220 67,230 67,221 59,235 63,233 60,248 70,232 65,249 71,243 67,256 73,250 69,262 73,259 71,267 76,262 72,271 78,270 76,275 82,274 78,290 86,279 86,289 92,274 88,275 87,264 82,270 82,258 77,257 78,247 73,246 77,233 72,236 74,220 74,220 74,220"/>
+ <polyline verts=" 133,230 147,242 148,250 145,254 138,247 129,246 142,245 138,241 128,237 137,238 133,230 133,230 133,230"/>
+ <polyline verts=" 133,261 125,261 116,263 111,267 125,265 133,261 133,261 133,261"/>
+ <polyline verts=" 121,271 109,273 103,279 99,305 92,316 85,327 83,335 89,340 97,341 94,336 101,336 96,331 103,330 97,327 108,325 99,322 109,321 100,318 110,317 105,314 110,312 107,310 113,308 105,306 114,303 105,301 115,298 107,295 115,294 108,293 117,291 109,289 117,286 109,286 118,283 112,281 118,279 114,278 119,276 115,274 121,271 121,271 121,271"/>
+ <polyline verts=" 79,364 74,359 74,353 76,347 80,351 83,356 82,360 79,364 79,364 79,364"/>
+ <polyline verts=" 91,363 93,356 97,353 103,355 105,360 103,366 99,371 94,368 91,363 91,363 91,363"/>
+ <polyline verts=" 110,355 114,353 118,357 117,363 113,369 111,362 110,355 110,355 110,355"/>
+ <polyline verts=" 126,354 123,358 124,367 126,369 129,361 129,357 126,354 126,354 126,354"/>
+ <polyline verts=" 30,154 24,166 20,182 23,194 29,208 37,218 41,210 41,223 46,214 46,227 52,216 52,227 61,216 59,225 68,213 73,219 70,207 77,212 69,200 77,202 70,194 78,197 68,187 76,182 64,182 58,175 58,185 53,177 50,186 46,171 44,182 39,167 36,172 36,162 30,166 30,154 30,154 30,154"/>
+ <polyline verts=" 44,130 41,137 45,136 43,150 48,142 48,157 53,150 52,164 60,156 61,169 64,165 66,175 70,167 74,176 77,168 80,183 85,172 90,182 93,174 98,181 99,173 104,175 105,169 114,168 102,163 95,157 94,166 90,154 87,162 82,149 75,159 72,148 68,155 67,143 62,148 62,138 58,145 56,133 52,142 52,128 49,134 47,125 44,130 44,130 44,130"/>
+ <polyline verts=" 13,216 19,219 36,231 22,223 16,222 22,227 12,224 13,220 16,220 13,216 13,216 13,216"/>
+ <polyline verts=" 10,231 14,236 25,239 27,237 19,234 10,231 10,231 10,231"/>
+ <polyline verts=" 9,245 14,242 25,245 13,245 9,245 9,245 9,245"/>
+ <polyline verts=" 33,255 26,253 18,254 25,256 18,258 27,260 18,263 27,265 19,267 29,270 21,272 29,276 21,278 30,281 22,283 31,287 24,288 32,292 23,293 34,298 26,299 37,303 32,305 39,309 33,309 39,314 34,314 40,318 34,317 40,321 34,321 41,326 33,326 40,330 33,332 39,333 33,337 42,337 54,341 49,337 52,335 47,330 50,330 45,325 49,325 45,321 48,321 45,316 46,306 45,286 43,274 36,261 33,255 33,255 33,255"/>
+ <polyline verts=" 7,358 9,351 14,351 17,359 11,364 7,358 7,358 7,358"/>
+ <polyline verts=" 44,354 49,351 52,355 49,361 44,354 44,354 44,354"/>
+ <polyline verts=" 32,357 37,353 40,358 36,361 32,357 32,357 32,357"/>
+ <polyline verts=" 139,334 145,330 154,330 158,334 154,341 152,348 145,350 149,340 147,336 141,339 139,345 136,342 136,339 139,334 139,334 139,334"/>
+ <polyline verts=" 208,259 215,259 212,255 220,259 224,263 225,274 224,283 220,292 208,300 206,308 203,304 199,315 197,309 195,318 193,313 190,322 190,316 185,325 182,318 180,325 172,321 178,320 176,313 186,312 180,307 188,307 184,303 191,302 186,299 195,294 187,290 197,288 192,286 201,283 194,280 203,277 198,275 207,271 200,269 209,265 204,265 212,262 208,259 208,259 208,259"/>
+ <polyline verts=" 106,126 106,131 109,132 111,134 115,132 115,135 119,133 118,137 123,137 128,137 133,134 136,130 136,127 132,124 118,128 112,128 106,126 106,126 106,126"/>
+ <polyline verts=" 107,114 101,110 98,102 105,97 111,98 119,102 121,108 118,112 113,115 107,114 107,114 107,114"/>
+ <polyline verts=" 148,106 145,110 146,116 150,118 152,111 151,107 148,106 148,106 148,106"/>
+ <polyline verts=" 80,55 70,52 75,58 63,57 72,61 57,61 67,66 57,67 62,69 54,71 61,73 54,77 63,78 53,85 60,84 56,90 69,84 63,82 75,76 70,75 77,72 72,71 78,69 72,66 81,67 78,64 82,63 80,60 86,62 80,55 80,55 80,55"/>
+ <polyline verts=" 87,56 91,52 96,50 102,56 98,56 92,60 87,56 87,56 87,56"/>
+ <polyline verts=" 85,68 89,73 98,76 106,74 96,73 91,70 85,68 85,68 85,68"/>
+ <polyline verts=" 115,57 114,64 111,64 115,75 122,81 122,74 126,79 126,74 131,78 130,72 133,77 131,68 126,61 119,57 115,57 115,57 115,57"/>
+ <polyline verts=" 145,48 143,53 147,59 151,59 150,55 145,48 145,48 145,48"/>
+ <polyline verts=" 26,22 34,15 43,10 52,10 59,16 47,15 32,22 26,22 26,22 26,22"/>
+ <polyline verts=" 160,19 152,26 149,34 154,33 152,30 157,30 155,26 158,27 157,23 161,23 160,19 160,19 160,19"/>
+</g>
+<g style="fill: #000000">
+ <polyline verts=" 98,117 105,122 109,122 105,117 113,120 121,120 130,112 128,108 123,103 123,99 128,101 132,106 135,109 142,105 142,101 145,101 145,91 148,101 145,105 136,112 135,116 143,124 148,120 150,122 142,128 133,122 121,125 112,126 103,125 100,129 96,124 98,117 98,117 98,117"/>
+ <polyline verts=" 146,118 152,118 152,115 149,115 146,118 146,118 146,118"/>
+ <polyline verts=" 148,112 154,111 154,109 149,109 148,112 148,112 148,112"/>
+ <polyline verts=" 106,112 108,115 114,116 118,114 106,112 106,112 106,112"/>
+ <polyline verts=" 108,108 111,110 116,110 119,108 108,108 108,108 108,108"/>
+ <polyline verts=" 106,104 109,105 117,106 115,104 106,104 106,104 106,104"/>
+ <polyline verts=" 50,25 41,26 34,33 39,43 49,58 36,51 47,68 55,69 54,59 61,57 74,46 60,52 67,42 57,48 61,40 54,45 60,36 59,29 48,38 52,30 47,32 50,25 50,25 50,25"/>
+ <polyline verts=" 147,34 152,41 155,49 161,53 157,47 164,47 158,43 168,44 159,40 164,37 169,37 164,33 169,34 165,28 170,30 170,25 173,29 175,27 176,32 173,36 175,39 172,42 172,46 168,49 170,55 162,57 158,63 155,58 153,50 149,46 147,34 147,34 147,34"/>
+ <polyline verts=" 155,71 159,80 157,93 157,102 155,108 150,101 149,93 154,101 152,91 151,83 155,79 155,71 155,71 155,71"/>
+ <polyline verts=" 112,78 115,81 114,91 112,87 113,82 112,78 112,78 112,78"/>
+ <polyline verts=" 78,28 64,17 58,11 47,9 36,10 28,16 21,26 18,41 20,51 23,61 33,65 28,68 37,74 36,81 43,87 48,90 43,100 40,98 39,90 31,80 30,72 22,71 17,61 14,46 16,28 23,17 33,9 45,6 54,6 65,12 78,28 78,28 78,28"/>
+ <polyline verts=" 67,18 76,9 87,5 101,2 118,3 135,8 149,20 149,26 144,19 132,12 121,9 105,7 89,8 76,14 70,20 67,18 67,18 67,18"/>
+ <polyline verts=" 56,98 48,106 56,103 47,112 56,110 52,115 57,113 52,121 62,115 58,123 65,119 63,125 69,121 68,127 74,125 74,129 79,128 83,132 94,135 93,129 85,127 81,122 76,126 75,121 71,124 71,117 66,121 66,117 62,117 64,112 60,113 60,110 57,111 61,105 57,107 60,101 55,102 56,98 56,98 56,98"/>
+ <polyline verts=" 101,132 103,138 106,134 106,139 112,136 111,142 115,139 114,143 119,142 125,145 131,142 135,138 140,134 140,129 143,135 145,149 150,171 149,184 145,165 141,150 136,147 132,151 131,149 126,152 125,150 121,152 117,148 111,152 110,148 105,149 104,145 98,150 96,138 94,132 94,130 98,132 101,132 101,132 101,132"/>
+ <polyline verts=" 41,94 32,110 23,132 12,163 6,190 7,217 5,236 3,247 9,230 12,211 12,185 18,160 26,134 35,110 43,99 41,94 41,94 41,94"/>
+ <polyline verts=" 32,246 41,250 50,257 52,267 53,295 53,323 59,350 54,363 51,365 44,366 42,360 40,372 54,372 59,366 62,353 71,352 75,335 73,330 66,318 68,302 64,294 67,288 63,286 63,279 59,275 58,267 56,262 50,247 42,235 44,246 32,236 35,244 32,246 32,246 32,246"/>
+ <polyline verts=" 134,324 146,320 159,322 173,327 179,337 179,349 172,355 158,357 170,350 174,343 170,333 163,328 152,326 134,329 134,324 134,324 134,324"/>
+ <polyline verts=" 173,339 183,334 184,338 191,329 194,332 199,323 202,325 206,318 209,320 213,309 221,303 228,296 232,289 234,279 233,269 230,262 225,256 219,253 208,252 198,252 210,249 223,250 232,257 237,265 238,277 238,291 232,305 221,323 218,335 212,342 200,349 178,348 173,339 173,339 173,339"/>
+ <polyline verts=" 165,296 158,301 156,310 156,323 162,324 159,318 162,308 162,304 165,296 165,296 165,296"/>
+ <polyline verts=" 99,252 105,244 107,234 115,228 121,228 131,235 122,233 113,235 109,246 121,239 133,243 121,243 110,251 99,252 99,252 99,252"/>
+ <polyline verts=" 117,252 124,247 134,249 136,253 126,252 117,252 117,252 117,252"/>
+ <polyline verts=" 117,218 132,224 144,233 140,225 132,219 117,218 117,218 117,218"/>
+ <polyline verts=" 122,212 134,214 143,221 141,213 132,210 122,212 122,212 122,212"/>
+ <polyline verts=" 69,352 70,363 76,373 86,378 97,379 108,379 120,377 128,378 132,373 135,361 133,358 132,366 127,375 121,374 121,362 119,367 117,374 110,376 110,362 107,357 106,371 104,375 97,376 90,375 90,368 86,362 83,364 86,369 85,373 78,370 73,362 71,351 69,352 69,352 69,352"/>
+ <polyline verts=" 100,360 96,363 99,369 102,364 100,360 100,360 100,360"/>
+ <polyline verts=" 115,360 112,363 114,369 117,364 115,360 115,360 115,360"/>
+ <polyline verts=" 127,362 125,364 126,369 128,365 127,362 127,362 127,362"/>
+ <polyline verts=" 5,255 7,276 11,304 15,320 13,334 6,348 2,353 0,363 5,372 12,374 25,372 38,372 44,369 42,367 36,368 31,369 30,360 27,368 20,370 16,361 15,368 10,369 3,366 3,359 6,352 11,348 17,331 19,316 12,291 9,274 5,255 5,255 5,255"/>
+ <polyline verts=" 10,358 7,362 10,366 11,362 10,358 10,358 10,358"/>
+ <polyline verts=" 25,357 22,360 24,366 27,360 25,357 25,357 25,357"/>
+ <polyline verts=" 37,357 34,361 36,365 38,361 37,357 37,357 37,357"/>
+ <polyline verts=" 49,356 46,359 47,364 50,360 49,356 49,356 49,356"/>
+ <polyline verts=" 130,101 132,102 135,101 139,102 143,103 142,101 137,100 133,100 130,101 130,101 130,101"/>
+ <polyline verts=" 106,48 105,52 108,56 109,52 106,48 106,48 106,48"/>
+ <polyline verts=" 139,52 139,56 140,60 142,58 141,56 139,52 139,52 139,52"/>
+ <polyline verts=" 25,349 29,351 30,355 33,350 37,348 42,351 45,347 49,345 44,343 36,345 25,349 25,349 25,349"/>
+ <polyline verts=" 98,347 105,351 107,354 109,349 115,349 120,353 118,349 113,346 104,346 98,347 98,347 98,347"/>
+ <polyline verts=" 83,348 87,352 87,357 89,351 87,348 83,348 83,348 83,348"/>
+ <polyline verts=" 155,107 163,107 170,107 186,108 175,109 155,109 155,107 155,107 155,107"/>
+ <polyline verts=" 153,114 162,113 175,112 192,114 173,114 154,115 153,114 153,114 153,114"/>
+ <polyline verts=" 152,118 164,120 180,123 197,129 169,123 151,120 152,118 152,118 152,118"/>
+ <polyline verts=" 68,109 87,106 107,106 106,108 88,108 68,109 68,109 68,109"/>
+ <polyline verts=" 105,111 95,112 79,114 71,116 85,115 102,113 105,111 105,111 105,111"/>
+ <polyline verts=" 108,101 98,99 87,99 78,99 93,100 105,102 108,101 108,101 108,101"/>
+ <polyline verts=" 85,63 91,63 97,60 104,60 108,62 111,69 112,75 110,74 108,71 103,73 106,69 105,65 103,64 103,67 102,70 99,70 97,66 94,67 97,72 88,67 84,66 85,63 85,63 85,63"/>
+ <polyline verts=" 140,74 141,66 144,61 150,61 156,62 153,70 150,73 152,65 150,65 151,68 149,71 146,71 144,66 143,70 143,74 140,74 140,74 140,74"/>
+ <polyline verts=" 146,20 156,11 163,9 172,9 178,14 182,18 184,32 182,42 182,52 177,58 176,67 171,76 165,90 157,105 160,92 164,85 168,78 167,73 173,66 172,62 175,59 174,55 177,53 180,46 181,29 179,21 173,13 166,11 159,13 153,18 148,23 146,20 146,20 146,20"/>
+ <polyline verts=" 150,187 148,211 150,233 153,247 148,267 135,283 125,299 136,292 131,313 122,328 122,345 129,352 133,359 133,367 137,359 148,356 140,350 131,347 129,340 132,332 140,328 137,322 140,304 154,265 157,244 155,223 161,220 175,229 186,247 185,260 176,275 178,287 185,277 188,261 196,253 189,236 174,213 150,187 150,187 150,187"/>
+ <polyline verts=" 147,338 142,341 143,345 141,354 147,343 147,338 147,338 147,338"/>
+ <polyline verts=" 157,342 156,349 150,356 157,353 163,346 162,342 157,342 157,342 157,342"/>
+ <polyline verts=" 99,265 96,284 92,299 73,339 73,333 87,300 99,265 99,265 99,265"/>
+</g></svg>
diff --git a/result/svg1.rde b/result/svg1.rde
new file mode 100644
index 0000000..91497d2
--- /dev/null
+++ b/result/svg1.rde
@@ -0,0 +1,477 @@
+0 10 svg 0 0
+0 1 svg 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+0 15 svg 0 0
diff --git a/result/svg1.rdr b/result/svg1.rdr
new file mode 100644
index 0000000..91497d2
--- /dev/null
+++ b/result/svg1.rdr
@@ -0,0 +1,477 @@
+0 10 svg 0 0
+0 1 svg 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+0 15 svg 0 0
diff --git a/result/svg1.sax b/result/svg1.sax
new file mode 100644
index 0000000..b09f01f
--- /dev/null
+++ b/result/svg1.sax
@@ -0,0 +1,613 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.externalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.startElement(svg, width='242px', height='383px')
+SAX.characters(
+, 1)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #f2cc99')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 69,18 82,8 99,3 118,5 135,12 149,21 156,13 165,9 177,13 183,28 180,50 164,91 155,107 154,114 151,121 141,127 139,136 155,206 157,251 126,342 133,357 128,376 83,376 75,368 67,350 61,350 53,369 4,369 2,361 5,354 12,342 16,321 4,257 4,244 7,218 9,179 26,127 43,93 32,77 30,70 24,67 16,49 17,35 18,23 30,12 40,7 53,7 62,12 69,18 69,18 69,18')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #e5b27f')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 142,79 136,74 138,82 133,78 133,84 127,78 128,85 124,80 125,87 119,82 119,90 125,99 125,96 128,100 128,94 131,98 132,93 135,97 136,93 138,97 139,94 141,98 143,94 144,85 142,79 142,79 142,79')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #eb8080')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 127,101 132,100 137,99 144,101 143,105 135,110 127,101 127,101 127,101')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #f2cc99')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 178,229 157,248 139,296 126,349 137,356 158,357 183,342 212,332 235,288 235,261 228,252 212,250 188,251 178,229 178,229 178,229')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #9c826b')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 56,229 48,241 48,250 57,281 63,325 71,338 81,315 76,321 79,311 83,301 75,308 80,298 73,303 76,296 71,298 74,292 69,293 74,284 78,278 71,278 74,274 68,273 70,268 66,267 68,261 60,266 62,259 65,253 57,258 59,251 55,254 55,248 60,237 54,240 58,234 54,236 56,229 56,229 56,229')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 74,363 79,368 81,368 85,362 89,363 92,370 96,373 101,372 108,361 110,371 113,373 116,371 120,358 122,363 123,371 126,371 129,367 132,357 135,361 130,376 127,377 94,378 84,376 76,371 74,363 74,363 74,363')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 212,250 219,251 228,258 236,270 235,287 225,304 205,332 177,343 171,352 158,357 166,352 168,346 168,339 165,333 155,327 155,323 161,320 165,316 169,316 167,312 171,313 168,308 173,309 170,306 177,306 175,308 177,311 174,311 176,316 171,315 174,319 168,320 168,323 175,327 179,332 183,326 184,332 189,323 190,328 194,320 194,325 199,316 201,320 204,313 206,316 208,310 211,305 219,298 226,288 229,279 228,266 224,259 217,253 212,250 212,250 212,250')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 151,205 151,238 149,252 141,268 128,282 121,301 130,300 126,313 118,324 116,337 120,346 133,352 133,340 137,333 145,329 156,327 153,319 153,291 157,271 170,259 178,277 193,250 174,216 151,205 151,205 151,205')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 78,127 90,142 95,155 108,164 125,167 139,175 150,206 152,191 141,140 121,148 100,136 78,127 78,127 78,127')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 21,58 35,63 38,68 32,69 42,74 40,79 47,80 54,83 45,94 34,81 32,73 24,66 21,58 21,58 21,58')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 71,34 67,34 66,27 59,24 54,17 48,17 39,22 30,26 28,31 31,39 38,46 29,45 36,54 41,61 41,70 50,69 54,71 55,58 67,52 76,43 76,39 68,44 71,34 71,34 71,34')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 139,74 141,83 143,89 144,104 148,104 155,106 154,86 157,77 155,72 150,77 144,77 139,74 139,74 139,74')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 105,44 102,53 108,58 111,62 112,55 105,44 105,44 105,44')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 141,48 141,54 144,58 139,62 137,66 136,59 137,52 141,48 141,48 141,48')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 98,135 104,130 105,134 108,132 108,135 112,134 113,137 116,136 116,139 119,139 124,141 128,140 133,138 140,133 139,140 126,146 104,144 98,135 98,135 98,135')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 97,116 103,119 103,116 111,118 116,117 122,114 127,107 135,111 142,107 141,114 145,118 149,121 145,125 140,124 127,121 113,125 100,124 97,116 97,116 97,116')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 147,33 152,35 157,34 153,31 160,31 156,28 161,28 159,24 163,25 163,21 165,22 170,23 167,17 172,21 174,18 175,23 176,22 177,28 177,33 174,37 176,39 174,44 171,49 168,53 164,57 159,68 156,70 154,60 150,51 146,43 144,35 147,33 147,33 147,33')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 85,72 89,74 93,75 100,76 105,75 102,79 94,79 88,76 85,72 85,72 85,72')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 86,214 79,221 76,232 82,225 78,239 82,234 78,245 81,243 79,255 84,250 84,267 87,254 90,271 90,257 95,271 93,256 95,249 92,252 93,243 89,253 89,241 86,250 87,236 83,245 87,231 82,231 90,219 84,221 86,214 86,214 86,214')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #ffcc7f')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 93,68 96,72 100,73 106,72 108,66 105,63 100,62 93,68 93,68 93,68')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 144,64 142,68 142,73 146,74 150,73 154,64 149,62 144,64 144,64 144,64')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #9c826b')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 57,91 42,111 52,105 41,117 53,112 46,120 53,116 50,124 57,119 55,127 61,122 60,130 67,126 66,134 71,129 72,136 77,130 76,137 80,133 82,138 86,135 96,135 94,129 86,124 83,117 77,123 79,117 73,120 75,112 68,116 71,111 65,114 69,107 63,110 68,102 61,107 66,98 61,103 63,97 57,99 57,91 57,91 57,91')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 83,79 76,79 67,82 75,83 65,88 76,87 65,92 76,91 68,96 77,95 70,99 80,98 72,104 80,102 76,108 85,103 92,101 87,98 93,96 86,94 91,93 85,91 93,89 99,89 105,93 107,85 102,82 92,80 83,79 83,79 83,79')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 109,77 111,83 109,89 113,94 117,90 117,81 114,78 109,77 109,77 109,77')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 122,128 127,126 134,127 136,129 134,130 130,128 124,129 122,128 122,128 122,128')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 78,27 82,32 80,33 82,36 78,37 82,40 78,42 81,46 76,47 78,49 74,50 82,52 87,50 83,48 91,46 86,45 91,42 88,40 92,37 86,34 90,31 86,29 89,26 78,27 78,27 78,27')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 82,17 92,20 79,21 90,25 81,25 94,28 93,26 101,30 101,26 107,33 108,28 111,40 113,34 115,45 117,39 119,54 121,46 124,58 126,47 129,59 130,49 134,58 133,44 137,48 133,37 137,40 133,32 126,20 135,26 132,19 138,23 135,17 142,18 132,11 116,6 94,6 78,11 92,12 80,14 90,16 82,17 82,17 82,17')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 142,234 132,227 124,223 115,220 110,225 118,224 127,229 135,236 122,234 115,237 113,242 121,238 139,243 121,245 111,254 95,254 102,244 104,235 110,229 100,231 104,224 113,216 122,215 132,217 141,224 145,230 149,240 142,234 142,234 142,234')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 115,252 125,248 137,249 143,258 134,255 125,254 115,252 115,252 115,252')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 114,212 130,213 140,219 147,225 144,214 137,209 128,207 114,212 114,212 114,212')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 102,263 108,258 117,257 131,258 116,260 109,265 102,263 102,263 102,263')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 51,241 35,224 40,238 23,224 31,242 19,239 28,247 17,246 25,250 37,254 39,263 44,271 47,294 48,317 51,328 60,351 60,323 53,262 47,246 51,241 51,241 51,241')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 2,364 9,367 14,366 18,355 20,364 26,366 31,357 35,364 39,364 42,357 47,363 53,360 59,357 54,369 7,373 2,364 2,364 2,364')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 7,349 19,345 25,339 18,341 23,333 28,326 23,326 27,320 23,316 25,311 20,298 15,277 12,264 9,249 10,223 3,248 5,261 15,307 17,326 11,343 7,349 7,349 7,349')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 11,226 15,231 25,236 18,227 11,226 11,226 11,226')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 13,214 19,217 32,227 23,214 16,208 15,190 24,148 31,121 24,137 14,170 8,189 13,214 13,214 13,214')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 202,254 195,258 199,260 193,263 197,263 190,268 196,268 191,273 188,282 200,272 194,272 201,266 197,265 204,262 200,258 204,256 202,254 202,254 202,254')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #845433')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 151,213 165,212 179,225 189,246 187,262 179,275 176,263 177,247 171,233 163,230 165,251 157,264 146,298 145,321 133,326 143,285 154,260 153,240 151,213 151,213 151,213')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 91,132 95,145 97,154 104,148 107,155 109,150 111,158 115,152 118,159 120,153 125,161 126,155 133,164 132,154 137,163 137,152 142,163 147,186 152,192 148,167 141,143 124,145 105,143 91,132 91,132 91,132')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #9c826b')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 31,57 23,52 26,51 20,44 23,42 21,36 22,29 25,23 24,32 30,43 26,41 30,50 26,48 31,57 31,57 31,57')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 147,21 149,28 155,21 161,16 167,14 175,15 173,11 161,9 147,21 147,21 147,21')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 181,39 175,51 169,57 171,65 165,68 165,75 160,76 162,91 171,71 180,51 181,39 181,39 181,39')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 132,346 139,348 141,346 142,341 147,342 143,355 133,350 132,346 132,346 132,346')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 146,355 151,352 155,348 157,343 160,349 151,356 147,357 146,355 146,355 146,355')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 99,266 100,281 94,305 86,322 78,332 72,346 73,331 91,291 99,266 99,266 99,266')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 20,347 32,342 45,340 54,345 45,350 42,353 38,350 31,353 29,356 23,350 19,353 15,349 20,347 20,347 20,347')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 78,344 86,344 92,349 88,358 84,352 78,344 78,344 78,344')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 93,347 104,344 117,345 124,354 121,357 116,351 112,351 108,355 102,351 93,347 93,347 93,347')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 105,12 111,18 113,24 113,29 119,34 116,23 112,16 105,12 105,12 105,12')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 122,27 125,34 127,43 128,34 125,29 122,27 122,27 122,27')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 115,13 122,19 122,15 113,10 115,13 115,13 115,13')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #ffe5b2')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 116,172 107,182 98,193 98,183 90,199 89,189 84,207 88,206 87,215 95,206 93,219 91,230 98,216 97,226 104,214 112,209 104,208 113,202 126,200 139,207 132,198 142,203 134,192 142,195 134,187 140,185 130,181 136,177 126,177 125,171 116,180 116,172 116,172 116,172')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 74,220 67,230 67,221 59,235 63,233 60,248 70,232 65,249 71,243 67,256 73,250 69,262 73,259 71,267 76,262 72,271 78,270 76,275 82,274 78,290 86,279 86,289 92,274 88,275 87,264 82,270 82,258 77,257 78,247 73,246 77,233 72,236 74,220 74,220 74,220')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 133,230 147,242 148,250 145,254 138,247 129,246 142,245 138,241 128,237 137,238 133,230 133,230 133,230')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 133,261 125,261 116,263 111,267 125,265 133,261 133,261 133,261')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 121,271 109,273 103,279 99,305 92,316 85,327 83,335 89,340 97,341 94,336 101,336 96,331 103,330 97,327 108,325 99,322 109,321 100,318 110,317 105,314 110,312 107,310 113,308 105,306 114,303 105,301 115,298 107,295 115,294 108,293 117,291 109,289 117,286 109,286 118,283 112,281 118,279 114,278 119,276 115,274 121,271 121,271 121,271')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 79,364 74,359 74,353 76,347 80,351 83,356 82,360 79,364 79,364 79,364')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 91,363 93,356 97,353 103,355 105,360 103,366 99,371 94,368 91,363 91,363 91,363')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 110,355 114,353 118,357 117,363 113,369 111,362 110,355 110,355 110,355')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 126,354 123,358 124,367 126,369 129,361 129,357 126,354 126,354 126,354')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 30,154 24,166 20,182 23,194 29,208 37,218 41,210 41,223 46,214 46,227 52,216 52,227 61,216 59,225 68,213 73,219 70,207 77,212 69,200 77,202 70,194 78,197 68,187 76,182 64,182 58,175 58,185 53,177 50,186 46,171 44,182 39,167 36,172 36,162 30,166 30,154 30,154 30,154')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 44,130 41,137 45,136 43,150 48,142 48,157 53,150 52,164 60,156 61,169 64,165 66,175 70,167 74,176 77,168 80,183 85,172 90,182 93,174 98,181 99,173 104,175 105,169 114,168 102,163 95,157 94,166 90,154 87,162 82,149 75,159 72,148 68,155 67,143 62,148 62,138 58,145 56,133 52,142 52,128 49,134 47,125 44,130 44,130 44,130')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 13,216 19,219 36,231 22,223 16,222 22,227 12,224 13,220 16,220 13,216 13,216 13,216')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 10,231 14,236 25,239 27,237 19,234 10,231 10,231 10,231')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 9,245 14,242 25,245 13,245 9,245 9,245 9,245')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 33,255 26,253 18,254 25,256 18,258 27,260 18,263 27,265 19,267 29,270 21,272 29,276 21,278 30,281 22,283 31,287 24,288 32,292 23,293 34,298 26,299 37,303 32,305 39,309 33,309 39,314 34,314 40,318 34,317 40,321 34,321 41,326 33,326 40,330 33,332 39,333 33,337 42,337 54,341 49,337 52,335 47,330 50,330 45,325 49,325 45,321 48,321 45,316 46,306 45,286 43,274 36,261 33,255 33,255 33,255')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 7,358 9,351 14,351 17,359 11,364 7,358 7,358 7,358')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 44,354 49,351 52,355 49,361 44,354 44,354 44,354')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 32,357 37,353 40,358 36,361 32,357 32,357 32,357')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 139,334 145,330 154,330 158,334 154,341 152,348 145,350 149,340 147,336 141,339 139,345 136,342 136,339 139,334 139,334 139,334')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 208,259 215,259 212,255 220,259 224,263 225,274 224,283 220,292 208,300 206,308 203,304 199,315 197,309 195,318 193,313 190,322 190,316 185,325 182,318 180,325 172,321 178,320 176,313 186,312 180,307 188,307 184,303 191,302 186,299 195,294 187,290 197,288 192,286 201,283 194,280 203,277 198,275 207,271 200,269 209,265 204,265 212,262 208,259 208,259 208,259')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 106,126 106,131 109,132 111,134 115,132 115,135 119,133 118,137 123,137 128,137 133,134 136,130 136,127 132,124 118,128 112,128 106,126 106,126 106,126')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 107,114 101,110 98,102 105,97 111,98 119,102 121,108 118,112 113,115 107,114 107,114 107,114')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 148,106 145,110 146,116 150,118 152,111 151,107 148,106 148,106 148,106')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 80,55 70,52 75,58 63,57 72,61 57,61 67,66 57,67 62,69 54,71 61,73 54,77 63,78 53,85 60,84 56,90 69,84 63,82 75,76 70,75 77,72 72,71 78,69 72,66 81,67 78,64 82,63 80,60 86,62 80,55 80,55 80,55')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 87,56 91,52 96,50 102,56 98,56 92,60 87,56 87,56 87,56')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 85,68 89,73 98,76 106,74 96,73 91,70 85,68 85,68 85,68')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 115,57 114,64 111,64 115,75 122,81 122,74 126,79 126,74 131,78 130,72 133,77 131,68 126,61 119,57 115,57 115,57 115,57')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 145,48 143,53 147,59 151,59 150,55 145,48 145,48 145,48')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 26,22 34,15 43,10 52,10 59,16 47,15 32,22 26,22 26,22 26,22')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 160,19 152,26 149,34 154,33 152,30 157,30 155,26 158,27 157,23 161,23 160,19 160,19 160,19')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 98,117 105,122 109,122 105,117 113,120 121,120 130,112 128,108 123,103 123,99 128,101 132,106 135,109 142,105 142,101 145,101 145,91 148,101 145,105 136,112 135,116 143,124 148,120 150,122 142,128 133,122 121,125 112,126 103,125 100,129 96,124 98,117 98,117 98,117')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 146,118 152,118 152,115 149,115 146,118 146,118 146,118')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 148,112 154,111 154,109 149,109 148,112 148,112 148,112')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 106,112 108,115 114,116 118,114 106,112 106,112 106,112')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 108,108 111,110 116,110 119,108 108,108 108,108 108,108')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 106,104 109,105 117,106 115,104 106,104 106,104 106,104')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 50,25 41,26 34,33 39,43 49,58 36,51 47,68 55,69 54,59 61,57 74,46 60,52 67,42 57,48 61,40 54,45 60,36 59,29 48,38 52,30 47,32 50,25 50,25 50,25')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 147,34 152,41 155,49 161,53 157,47 164,47 158,43 168,44 159,40 164,37 169,37 164,33 169,34 165,28 170,30 170,25 173,29 175,27 176,32 173,36 175,39 172,42 172,46 168,49 170,55 162,57 158,63 155,58 153,50 149,46 147,34 147,34 147,34')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 155,71 159,80 157,93 157,102 155,108 150,101 149,93 154,101 152,91 151,83 155,79 155,71 155,71 155,71')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 112,78 115,81 114,91 112,87 113,82 112,78 112,78 112,78')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 78,28 64,17 58,11 47,9 36,10 28,16 21,26 18,41 20,51 23,61 33,65 28,68 37,74 36,81 43,87 48,90 43,100 40,98 39,90 31,80 30,72 22,71 17,61 14,46 16,28 23,17 33,9 45,6 54,6 65,12 78,28 78,28 78,28')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 67,18 76,9 87,5 101,2 118,3 135,8 149,20 149,26 144,19 132,12 121,9 105,7 89,8 76,14 70,20 67,18 67,18 67,18')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 56,98 48,106 56,103 47,112 56,110 52,115 57,113 52,121 62,115 58,123 65,119 63,125 69,121 68,127 74,125 74,129 79,128 83,132 94,135 93,129 85,127 81,122 76,126 75,121 71,124 71,117 66,121 66,117 62,117 64,112 60,113 60,110 57,111 61,105 57,107 60,101 55,102 56,98 56,98 56,98')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 101,132 103,138 106,134 106,139 112,136 111,142 115,139 114,143 119,142 125,145 131,142 135,138 140,134 140,129 143,135 145,149 150,171 149,184 145,165 141,150 136,147 132,151 131,149 126,152 125,150 121,152 117,148 111,152 110,148 105,149 104,145 98,150 96,138 94,132 94,130 98,132 101,132 101,132 101,132')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 41,94 32,110 23,132 12,163 6,190 7,217 5,236 3,247 9,230 12,211 12,185 18,160 26,134 35,110 43,99 41,94 41,94 41,94')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 32,246 41,250 50,257 52,267 53,295 53,323 59,350 54,363 51,365 44,366 42,360 40,372 54,372 59,366 62,353 71,352 75,335 73,330 66,318 68,302 64,294 67,288 63,286 63,279 59,275 58,267 56,262 50,247 42,235 44,246 32,236 35,244 32,246 32,246 32,246')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 134,324 146,320 159,322 173,327 179,337 179,349 172,355 158,357 170,350 174,343 170,333 163,328 152,326 134,329 134,324 134,324 134,324')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 173,339 183,334 184,338 191,329 194,332 199,323 202,325 206,318 209,320 213,309 221,303 228,296 232,289 234,279 233,269 230,262 225,256 219,253 208,252 198,252 210,249 223,250 232,257 237,265 238,277 238,291 232,305 221,323 218,335 212,342 200,349 178,348 173,339 173,339 173,339')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 165,296 158,301 156,310 156,323 162,324 159,318 162,308 162,304 165,296 165,296 165,296')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 99,252 105,244 107,234 115,228 121,228 131,235 122,233 113,235 109,246 121,239 133,243 121,243 110,251 99,252 99,252 99,252')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 117,252 124,247 134,249 136,253 126,252 117,252 117,252 117,252')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 117,218 132,224 144,233 140,225 132,219 117,218 117,218 117,218')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 122,212 134,214 143,221 141,213 132,210 122,212 122,212 122,212')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 69,352 70,363 76,373 86,378 97,379 108,379 120,377 128,378 132,373 135,361 133,358 132,366 127,375 121,374 121,362 119,367 117,374 110,376 110,362 107,357 106,371 104,375 97,376 90,375 90,368 86,362 83,364 86,369 85,373 78,370 73,362 71,351 69,352 69,352 69,352')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 100,360 96,363 99,369 102,364 100,360 100,360 100,360')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 115,360 112,363 114,369 117,364 115,360 115,360 115,360')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 127,362 125,364 126,369 128,365 127,362 127,362 127,362')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 5,255 7,276 11,304 15,320 13,334 6,348 2,353 0,363 5,372 12,374 25,372 38,372 44,369 42,367 36,368 31,369 30,360 27,368 20,370 16,361 15,368 10,369 3,366 3,359 6,352 11,348 17,331 19,316 12,291 9,274 5,255 5,255 5,255')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 10,358 7,362 10,366 11,362 10,358 10,358 10,358')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 25,357 22,360 24,366 27,360 25,357 25,357 25,357')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 37,357 34,361 36,365 38,361 37,357 37,357 37,357')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 49,356 46,359 47,364 50,360 49,356 49,356 49,356')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 130,101 132,102 135,101 139,102 143,103 142,101 137,100 133,100 130,101 130,101 130,101')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 106,48 105,52 108,56 109,52 106,48 106,48 106,48')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 139,52 139,56 140,60 142,58 141,56 139,52 139,52 139,52')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 25,349 29,351 30,355 33,350 37,348 42,351 45,347 49,345 44,343 36,345 25,349 25,349 25,349')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 98,347 105,351 107,354 109,349 115,349 120,353 118,349 113,346 104,346 98,347 98,347 98,347')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 83,348 87,352 87,357 89,351 87,348 83,348 83,348 83,348')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 155,107 163,107 170,107 186,108 175,109 155,109 155,107 155,107 155,107')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 153,114 162,113 175,112 192,114 173,114 154,115 153,114 153,114 153,114')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 152,118 164,120 180,123 197,129 169,123 151,120 152,118 152,118 152,118')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 68,109 87,106 107,106 106,108 88,108 68,109 68,109 68,109')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 105,111 95,112 79,114 71,116 85,115 102,113 105,111 105,111 105,111')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 108,101 98,99 87,99 78,99 93,100 105,102 108,101 108,101 108,101')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 85,63 91,63 97,60 104,60 108,62 111,69 112,75 110,74 108,71 103,73 106,69 105,65 103,64 103,67 102,70 99,70 97,66 94,67 97,72 88,67 84,66 85,63 85,63 85,63')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 140,74 141,66 144,61 150,61 156,62 153,70 150,73 152,65 150,65 151,68 149,71 146,71 144,66 143,70 143,74 140,74 140,74 140,74')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 146,20 156,11 163,9 172,9 178,14 182,18 184,32 182,42 182,52 177,58 176,67 171,76 165,90 157,105 160,92 164,85 168,78 167,73 173,66 172,62 175,59 174,55 177,53 180,46 181,29 179,21 173,13 166,11 159,13 153,18 148,23 146,20 146,20 146,20')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 150,187 148,211 150,233 153,247 148,267 135,283 125,299 136,292 131,313 122,328 122,345 129,352 133,359 133,367 137,359 148,356 140,350 131,347 129,340 132,332 140,328 137,322 140,304 154,265 157,244 155,223 161,220 175,229 186,247 185,260 176,275 178,287 185,277 188,261 196,253 189,236 174,213 150,187 150,187 150,187')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 147,338 142,341 143,345 141,354 147,343 147,338 147,338 147,338')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 157,342 156,349 150,356 157,353 163,346 162,342 157,342 157,342 157,342')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 99,265 96,284 92,299 73,339 73,333 87,300 99,265 99,265 99,265')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.endElement(svg)
+SAX.endDocument()
diff --git a/result/svg1.sax2 b/result/svg1.sax2
new file mode 100644
index 0000000..7b81459
--- /dev/null
+++ b/result/svg1.sax2
@@ -0,0 +1,613 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.externalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.startElementNs(svg, NULL, NULL, 0, 2, 0, width='242p...', 5, height='383p...', 5)
+SAX.characters(
+, 1)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 69,...', 337)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 142...', 190)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 127...', 71)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 178...', 128)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 56,...', 273)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 74,...', 203)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 212...', 448)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 151...', 208)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 78,...', 106)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 21,...', 90)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 71,...', 150)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 139...', 101)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 105...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 141...', 70)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 98,...', 156)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 97,...', 156)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 147...', 238)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 85,...', 69)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 86,...', 217)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 93,...', 65)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 144...', 70)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 57,...', 294)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 83,...', 194)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 109...', 70)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 122...', 80)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 78,...', 156)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 82,...', 284)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 142...', 239)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 115...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 114...', 80)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 102...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 51,...', 154)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 2,3...', 120)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 7,3...', 154)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 11,...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 13,...', 97)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 202...', 152)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 151...', 168)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 91,...', 202)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 31,...', 96)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 147...', 76)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 181...', 91)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 132...', 80)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 146...', 80)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 99,...', 78)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 20,...', 105)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 78,...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 93,...', 92)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 105...', 70)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 122...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 115...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 116...', 260)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 74,...', 245)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 133...', 104)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 133...', 64)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 121...', 334)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 79,...', 70)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 91,...', 80)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 110...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 126...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 30,...', 266)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 44,...', 319)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 13,...', 84)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 10,...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 9,2...', 45)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 33,...', 385)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 7,3...', 51)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 44,...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 32,...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 139...', 128)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 208...', 360)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 106...', 152)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 107...', 93)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 148...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 80,...', 192)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 87,...', 55)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 85,...', 55)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 115...', 119)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 145...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 26,...', 60)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 160...', 91)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 98,...', 265)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 146...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 148...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 106...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 108...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 106...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 50,...', 144)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 147...', 231)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 155...', 102)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 112...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 78,...', 195)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 67,...', 109)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 56,...', 276)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 101...', 307)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 41,...', 116)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 32,...', 245)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 134...', 136)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 173...', 280)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 165...', 88)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 99,...', 124)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 117...', 64)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 117...', 64)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 122...', 64)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 69,...', 262)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 100...', 54)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 115...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 127...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 5,2...', 218)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 10,...', 48)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 25,...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 37,...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 49,...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 130...', 88)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 106...', 49)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 139...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 25,...', 91)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 98,...', 92)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 83,...', 56)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 155...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 153...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 152...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 68,...', 58)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 105...', 68)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 108...', 65)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 85,...', 156)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 140...', 126)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 146...', 237)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 150...', 320)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 147...', 64)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 157...', 72)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 99,...', 63)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.endElementNs(svg, NULL, NULL)
+SAX.endDocument()
diff --git a/result/svg2 b/result/svg2
new file mode 100644
index 0000000..6c3990c
--- /dev/null
+++ b/result/svg2
@@ -0,0 +1,56 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="268px" height="207px">
+<g style="stroke: #000000">
+ <path d=" M 29 28 "/>
+ <path d=" L 19 74 "/>
+</g>
+<g style="stroke: #800040">
+ <polyline verts=" 32,100 72,50 90,82 73,16 120,64 152,9 177,107"/>
+</g>
+<g style="stroke: #000000">
+</g>
+<g style="stroke: #0000ff">
+ <rect x="30" y="101" width="51" height="33"/>
+</g>
+<g style="fill: #0000ff">
+ <ellipse cx="182" cy="127" major="37" minor="31" angle="90"/>
+</g>
+<g style="fill: #ff0000">
+ <polyline verts=" 78,180 76,151 131,149 136,182 135,182 134,183 127,185 117,186 109,192 104,194 98,199 96,200 95,201 94,202 92,202 85,202 70,200 54,199 47,198 46,197 45,197 37,195 26,193 17,187 9,181 8,181 7,176 6,175 6,173 6,172 6,170 8,164 8,163 8,162 9,162 10,162 11,162 13,162 20,162 26,162 27,162 28,162 30,162 30,163 31,163 32,164 34,166 35,166 36,167 36,168 37,169 38,169 39,169 41,170 43,170 45,170 47,170 49,170 50,168 50,161 50,160 50,159 47,162 78,180"/>
+ <g>
+ <desc> Java Font definition:Dialog 0</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Helvetica 0</desc>
+ </g>
+</g>
+<g style="stroke: #000000">
+ <text x="188" y="36">this is text</text>
+</g>
+<g style="stroke: #000000">
+ <g>
+ <desc> Java Font definition:Dialog 0</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Helvetica 700</desc>
+ </g>
+</g>
+<g style="stroke: #008080">
+ <text x="176" y="85">sadfsadfsad</text>
+</g>
+<g style="stroke: #000000">
+</g>
+<g style="fill: #800040">
+ <ellipse cx="208" cy="180" major="45" minor="31" angle="0"/>
+</g>
+<g style="stroke: #000000">
+</g>
+<g style="fill: #ffffff">
+ <g>
+ <desc> Java Font definition:Dialog 700</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Dialog 700</desc>
+ </g>
+</g></svg>
diff --git a/result/svg2.rde b/result/svg2.rde
new file mode 100644
index 0000000..1eab152
--- /dev/null
+++ b/result/svg2.rde
@@ -0,0 +1,178 @@
+0 10 svg 0 0
+0 1 svg 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 rect 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 ellipse 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 0
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Helvetica 0
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 text 0 0
+3 3 #text 0 1 this is text
+2 15 text 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 0
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Helvetica 700
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 text 0 0
+3 3 #text 0 1 sadfsadfsad
+2 15 text 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 ellipse 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 700
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 700
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+0 15 svg 0 0
diff --git a/result/svg2.rdr b/result/svg2.rdr
new file mode 100644
index 0000000..1eab152
--- /dev/null
+++ b/result/svg2.rdr
@@ -0,0 +1,178 @@
+0 10 svg 0 0
+0 1 svg 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 rect 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 ellipse 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 polyline 1 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 0
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Helvetica 0
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 text 0 0
+3 3 #text 0 1 this is text
+2 15 text 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 0
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Helvetica 700
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 text 0 0
+3 3 #text 0 1 sadfsadfsad
+2 15 text 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 ellipse 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 700
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+2 1 g 0 0
+3 14 #text 0 1
+
+3 1 desc 0 0
+4 3 #text 0 1 Java Font definition:Dialog 700
+3 15 desc 0 0
+3 14 #text 0 1
+
+2 15 g 0 0
+2 14 #text 0 1
+
+1 15 g 0 0
+0 15 svg 0 0
diff --git a/result/svg2.sax b/result/svg2.sax
new file mode 100644
index 0000000..0134545
--- /dev/null
+++ b/result/svg2.sax
@@ -0,0 +1,189 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.externalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.startElement(svg, width='268px', height='207px')
+SAX.characters(
+, 1)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+ , 5)
+SAX.startElement(path, d=' M 29 28 ')
+SAX.endElement(path)
+SAX.characters(
+ , 5)
+SAX.startElement(path, d=' L 19 74 ')
+SAX.endElement(path)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #800040')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 32,100 72,50 90,82 73,16 120,64 152,9 177,107')
+SAX.endElement(polyline)
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #0000ff')
+SAX.characters(
+ , 5)
+SAX.startElement(rect, x='30', y='101', width='51', height='33')
+SAX.endElement(rect)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #0000ff')
+SAX.characters(
+ , 5)
+SAX.startElement(ellipse, cx='182', cy='127', major='37', minor='31', angle='90')
+SAX.endElement(ellipse)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #ff0000')
+SAX.characters(
+ , 5)
+SAX.startElement(polyline, verts=' 78,180 76,151 131,149 136,182 135,182 134,183 127,185 117,186 109,192 104,194 98,199 96,200 95,201 94,202 92,202 85,202 70,200 54,199 47,198 46,197 45,197 37,195 26,193 17,187 9,181 8,181 7,176 6,175 6,173 6,172 6,170 8,164 8,163 8,162 9,162 10,162 11,162 13,162 20,162 26,162 27,162 28,162 30,162 30,163 31,163 32,164 34,166 35,166 36,167 36,168 37,169 38,169 39,169 41,170 43,170 45,170 47,170 49,170 50,168 50,161 50,160 50,159 47,162 78,180')
+SAX.endElement(polyline)
+SAX.characters(
+ , 5)
+SAX.startElement(g)
+SAX.characters(
+ , 6)
+SAX.startElement(desc)
+SAX.characters( Java Font definition:Dialog 0, 30)
+SAX.endElement(desc)
+SAX.characters(
+ , 5)
+SAX.endElement(g)
+SAX.characters(
+ , 4)
+SAX.startElement(g)
+SAX.characters(
+ , 6)
+SAX.startElement(desc)
+SAX.characters( Java Font definition:Helvetic, 33)
+SAX.endElement(desc)
+SAX.characters(
+ , 5)
+SAX.endElement(g)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+ , 5)
+SAX.startElement(text, x='188', y='36')
+SAX.characters(this is text, 12)
+SAX.endElement(text)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+ , 5)
+SAX.startElement(g)
+SAX.characters(
+ , 6)
+SAX.startElement(desc)
+SAX.characters( Java Font definition:Dialog 0, 30)
+SAX.endElement(desc)
+SAX.characters(
+ , 5)
+SAX.endElement(g)
+SAX.characters(
+ , 4)
+SAX.startElement(g)
+SAX.characters(
+ , 6)
+SAX.startElement(desc)
+SAX.characters( Java Font definition:Helvetic, 35)
+SAX.endElement(desc)
+SAX.characters(
+ , 5)
+SAX.endElement(g)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #008080')
+SAX.characters(
+ , 5)
+SAX.startElement(text, x='176', y='85')
+SAX.characters(sadfsadfsad, 11)
+SAX.endElement(text)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #800040')
+SAX.characters(
+ , 5)
+SAX.startElement(ellipse, cx='208', cy='180', major='45', minor='31', angle='0')
+SAX.endElement(ellipse)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='stroke: #000000')
+SAX.characters(
+, 2)
+SAX.endElement(g)
+SAX.characters(
+, 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 5)
+SAX.startElement(g)
+SAX.characters(
+ , 6)
+SAX.startElement(desc)
+SAX.characters( Java Font definition:Dialog 7, 32)
+SAX.endElement(desc)
+SAX.characters(
+ , 5)
+SAX.endElement(g)
+SAX.characters(
+ , 4)
+SAX.startElement(g)
+SAX.characters(
+ , 6)
+SAX.startElement(desc)
+SAX.characters( Java Font definition:Dialog 7, 32)
+SAX.endElement(desc)
+SAX.characters(
+ , 5)
+SAX.endElement(g)
+SAX.characters(
+, 1)
+SAX.endElement(g)
+SAX.endElement(svg)
+SAX.endDocument()
diff --git a/result/svg2.sax2 b/result/svg2.sax2
new file mode 100644
index 0000000..ab73992
--- /dev/null
+++ b/result/svg2.sax2
@@ -0,0 +1,189 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.externalSubset(svg, -//W3C//DTD SVG April 1999//EN, http://www.w3.org/Graphics/SVG/svg-19990412.dtd)
+SAX.startElementNs(svg, NULL, NULL, 0, 2, 0, width='268p...', 5, height='207p...', 5)
+SAX.characters(
+, 1)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+ , 5)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d=' M 2...', 9)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d=' L 1...', 9)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 32,...', 46)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+ , 5)
+SAX.startElementNs(rect, NULL, NULL, 0, 4, 0, x='30" ...', 2, y='101"...', 3, width='51" ...', 2, height='33"/...', 2)
+SAX.endElementNs(rect, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(ellipse, NULL, NULL, 0, 5, 0, cx='182"...', 3, cy='127"...', 3, major='37" ...', 2, minor='31" ...', 2, angle='90"/...', 2)
+SAX.endElementNs(ellipse, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(polyline, NULL, NULL, 0, 1, 0, verts=' 78,...', 445)
+SAX.endElementNs(polyline, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.startElementNs(g, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 6)
+SAX.startElementNs(desc, NULL, NULL, 0, 0, 0)
+SAX.characters( Java Font definition:Dialog 0, 30)
+SAX.endElementNs(desc, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(g, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 6)
+SAX.startElementNs(desc, NULL, NULL, 0, 0, 0)
+SAX.characters( Java Font definition:Helvetic, 33)
+SAX.endElementNs(desc, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+ , 5)
+SAX.startElementNs(text, NULL, NULL, 0, 2, 0, x='188"...', 3, y='36" ...', 2)
+SAX.characters(this is text, 12)
+SAX.endElementNs(text, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+ , 5)
+SAX.startElementNs(g, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 6)
+SAX.startElementNs(desc, NULL, NULL, 0, 0, 0)
+SAX.characters( Java Font definition:Dialog 0, 30)
+SAX.endElementNs(desc, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(g, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 6)
+SAX.startElementNs(desc, NULL, NULL, 0, 0, 0)
+SAX.characters( Java Font definition:Helvetic, 35)
+SAX.endElementNs(desc, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+ , 5)
+SAX.startElementNs(text, NULL, NULL, 0, 2, 0, x='176"...', 3, y='85" ...', 2)
+SAX.characters(sadfsadfsad, 11)
+SAX.endElementNs(text, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(ellipse, NULL, NULL, 0, 5, 0, cx='208"...', 3, cy='180"...', 3, major='45" ...', 2, minor='31" ...', 2, angle='0"/>...', 1)
+SAX.endElementNs(ellipse, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 15)
+SAX.characters(
+, 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 5)
+SAX.startElementNs(g, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 6)
+SAX.startElementNs(desc, NULL, NULL, 0, 0, 0)
+SAX.characters( Java Font definition:Dialog 7, 32)
+SAX.endElementNs(desc, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 4)
+SAX.startElementNs(g, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 6)
+SAX.startElementNs(desc, NULL, NULL, 0, 0, 0)
+SAX.characters( Java Font definition:Dialog 7, 32)
+SAX.endElementNs(desc, NULL, NULL)
+SAX.characters(
+ , 5)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(g, NULL, NULL)
+SAX.endElementNs(svg, NULL, NULL)
+SAX.endDocument()
diff --git a/result/svg3 b/result/svg3
new file mode 100644
index 0000000..c4994b8
--- /dev/null
+++ b/result/svg3
@@ -0,0 +1,723 @@
+<?xml version="1.0"?>
+<svg>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M77.696 284.285C77.696 284.285 77.797 286.179 76.973 286.16C76.149 286.141 59.695 238.066 39.167 240.309C39.167 240.309 56.95 232.956 77.696 284.285z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M81.226 281.262C81.226 281.262 80.677 283.078 79.908 282.779C79.14 282.481 80.023 231.675 59.957 226.801C59.957 226.801 79.18 225.937 81.226 281.262z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M108.716 323.59C108.716 323.59 110.352 324.55 109.882 325.227C109.411 325.904 60.237 313.102 50.782 331.459C50.782 331.459 54.461 312.572 108.716 323.59z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M105.907 333.801C105.907 333.801 107.763 334.197 107.529 334.988C107.296 335.779 56.593 339.121 53.403 359.522C53.403 359.522 50.945 340.437 105.907 333.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M101.696 328.276C101.696 328.276 103.474 328.939 103.128 329.687C102.782 330.435 52.134 326.346 46.002 346.064C46.002 346.064 46.354 326.825 101.696 328.276z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M90.991 310.072C90.991 310.072 92.299 311.446 91.66 311.967C91.021 312.488 47.278 286.634 33.131 301.676C33.131 301.676 41.872 284.533 90.991 310.072z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M83.446 314.263C83.446 314.263 84.902 315.48 84.326 316.071C83.75 316.661 37.362 295.922 25.008 312.469C25.008 312.469 31.753 294.447 83.446 314.263z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M80.846 318.335C80.846 318.335 82.454 319.343 81.964 320.006C81.474 320.669 32.692 306.446 22.709 324.522C22.709 324.522 26.934 305.749 80.846 318.335z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M91.58 318.949C91.58 318.949 92.702 320.48 92.001 320.915C91.3 321.35 51.231 290.102 35.273 303.207C35.273 303.207 46.138 287.326 91.58 318.949z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M71.8 290C71.8 290 72.4 291.8 71.6 292C70.8 292.2 42.2 250.2 22.999 257.8C22.999 257.8 38.2 246 71.8 290z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M72.495 296.979C72.495 296.979 73.47 298.608 72.731 298.975C71.993 299.343 35.008 264.499 17.899 276.061C17.899 276.061 30.196 261.261 72.495 296.979z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M72.38 301.349C72.38 301.349 73.502 302.88 72.801 303.315C72.1 303.749 32.031 272.502 16.073 285.607C16.073 285.607 26.938 269.726 72.38 301.349z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000">
+ <path d="M70.17 303.065C70.673 309.113 71.661 315.682 73.4 318.801C73.4 318.801 69.8 331.201 78.6 344.401C78.6 344.401 78.2 351.601 79.8 354.801C79.8 354.801 83.8 363.201 88.6 364.001C92.484 364.648 101.207 367.717 111.068 369.121C111.068 369.121 128.2 383.201 125 396.001C125 396.001 124.6 412.401 121 414.001C121 414.001 132.6 402.801 123 419.601L118.6 438.401C118.6 438.401 144.2 416.801 128.6 435.201L118.6 461.201C118.6 461.201 138.2 442.801 131 451.201L127.8 460.001C127.8 460.001 171 432.801 140.2 462.401C140.2 462.401 148.2 458.801 152.6 461.601C152.6 461.601 159.4 460.401 158.6 462.001C158.6 462.001 137.8 472.401 134.2 490.801C134.2 490.801 142.6 480.801 139.4 491.601L139.8 503.201C139.8 503.201 143.8 481.601 143.4 519.201C143.4 519.201 162.6 501.201 151 522.001L151 538.801C151 538.801 166.2 522.401 159.8 535.201C159.8 535.201 169.8 526.401 165.8 541.601C165.8 541.601 165 552.001 169.4 540.801C169.4 540.801 185.4 510.201 179.4 536.401C179.4 536.401 178.6 555.601 183.4 540.801C183.4 540.801 183.8 551.201 193 558.401C193 558.401 191.8 507.601 204.6 543.601L208.6 560.001C208.6 560.001 211.4 550.801 211 545.601C211 545.601 225.8 529.201 219 553.601C219 553.601 234.2 530.801 231 544.001C231 544.001 223.4 560.001 225 564.801C225 564.801 241.8 530.001 243 528.401C243 528.401 241 570.802 251.8 534.801C251.8 534.801 257.4 546.801 254.6 551.201C254.6 551.201 262.6 543.201 261.8 540.001C261.8 540.001 266.4 531.801 269.2 545.401C269.2 545.401 271 554.801 272.6 551.601C272.6 551.601 276.6 575.602 277.8 552.801C277.8 552.801 279.4 539.201 272.2 527.601C272.2 527.601 273 524.401 270.2 520.401C270.2 520.401 283.8 542.001 276.6 513.201C276.6 513.201 287.801 521.201 289.001 521.201C289.001 521.201 275.4 498.001 284.2 502.801C284.2 502.801 279 492.401 297.001 504.401C297.001 504.401 281 488.401 298.601 498.001C298.601 498.001 306.601 504.401 299.001 494.401C299.001 494.401 284.6 478.401 306.601 496.401C306.601 496.401 318.201 512.801 319.001 515.601C319.001 515.601 309.001 486.401 304.601 483.601C304.601 483.601 313.001 447.201 354.201 462.801C354.201 462.801 361.001 480.001 365.401 461.601C365.401 461.601 378.201 455.201 389.401 482.801C389.401 482.801 393.401 469.201 392.601 466.401C392.601 466.401 399.401 467.601 398.601 466.401C398.601 466.401 411.801 470.801 413.001 470.001C413.001 470.001 419.801 476.801 420.201 473.201C420.201 473.201 429.401 476.001 427.401 472.401C427.401 472.401 436.201 488.001 436.601 491.601L439.001 477.601L441.001 480.401C441.001 480.401 442.601 472.801 441.801 471.601C441.001 470.401 461.801 478.401 466.601 499.201L468.601 507.601C468.601 507.601 474.601 492.801 473.001 488.801C473.001 488.801 478.201 489.601 478.601 494.001C478.601 494.001 482.601 470.801 477.801 464.801C477.801 464.801 482.201 464.001 483.401 467.601L483.401 460.401C483.401 460.401 490.601 461.201 490.601 458.801C490.601 458.801 495.001 454.801 497.001 459.601C497.001 459.601 484.601 424.401 503.001 443.601C503.001 443.601 510.201 454.401 506.601 435.601C503.001 416.801 499.001 415.201 503.801 414.801C503.801 414.801 504.601 411.201 502.601 409.601C500.601 408.001 503.801 409.601 503.801 409.601C503.801 409.601 508.601 413.601 503.401 391.601C503.401 391.601 509.801 393.201 497.801 364.001C497.801 364.001 500.601 361.601 496.601 353.201C496.601 353.201 504.601 357.601 507.401 356.001C507.401 356.001 507.001 354.401 503.801 350.401C503.801 350.401 482.201 295.6 502.601 317.601C502.601 317.601 514.451 331.151 508.051 308.351C508.051 308.351 498.94 284.341 499.717 280.045L70.17 303.065z"/>
+ </g>
+ <g style="fill: #cc7226; stroke:#000000">
+ <path d="M499.717 280.245C500.345 280.426 502.551 281.55 503.801 283.2C503.801 283.2 510.601 294 505.401 275.6C505.401 275.6 496.201 246.8 505.001 258C505.001 258 511.001 265.2 507.801 251.6C503.936 235.173 501.401 228.8 501.401 228.8C501.401 228.8 513.001 233.6 486.201 194L495.001 197.6C495.001 197.6 475.401 158 453.801 152.8L445.801 146.8C445.801 146.8 484.201 108.8 471.401 72C471.401 72 464.601 66.8 455.001 76C455.001 76 448.601 80.8 442.601 79.2C442.601 79.2 411.801 80.4 409.801 80.4C407.801 80.4 373.001 43.2 307.401 60.8C307.401 60.8 302.201 62.8 297.801 61.6C297.801 61.6 279.4 45.6 230.6 68.4C230.6 68.4 220.6 70.4 219 70.4C217.4 70.4 214.6 70.4 206.6 76.8C198.6 83.2 198.2 84 196.2 85.6C196.2 85.6 179.8 96.8 175 97.6C175 97.6 163.4 104 159 114L155.4 115.2C155.4 115.2 153.8 122.4 153.4 123.6C153.4 123.6 148.6 127.2 147.8 132.8C147.8 132.8 139 138.8 139.4 143.2C139.4 143.2 137.8 148.4 137 153.2C137 153.2 129.8 158 130.6 160.8C130.6 160.8 123 174.8 124.2 181.6C124.2 181.6 117.8 181.2 115 183.6C115 183.6 114.2 188.4 112.6 188.8C112.6 188.8 109.8 190 112.2 194C112.2 194 110.6 196.8 110.2 198.4C110.2 198.4 111 201.2 106.6 206.8C106.6 206.8 100.2 225.6 102.2 230.8C102.2 230.8 102.6 235.6 99.8 237.2C99.8 237.2 96.2 236.8 104.6 248.8C104.6 248.8 105.4 250 102.2 252.4C102.2 252.4 85 256 82.6 272.4C82.6 272.4 69 287.2 69 292.4C69 294.705 69.271 297.852 69.97 302.465C69.97 302.465 69.4 310.801 97 311.601C124.6 312.401 499.717 280.245 499.717 280.245z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M84.4 302.6C59.4 263.2 73.8 319.601 73.8 319.601C82.6 354.001 212.2 316.401 212.2 316.401C212.2 316.401 381.001 286 392.201 282C403.401 278 498.601 284.4 498.601 284.4L493.001 267.6C428.201 221.2 409.001 244.4 395.401 240.4C381.801 236.4 384.201 246 381.001 246.8C377.801 247.6 338.601 222.8 332.201 223.6C325.801 224.4 300.459 200.649 315.401 232.4C331.401 266.4 257 271.6 240.2 260.4C223.4 249.2 247.4 278.8 247.4 278.8C265.8 298.8 231.4 282 231.4 282C197 269.2 173 294.8 169.8 295.6C166.6 296.4 161.8 299.6 161 293.2C160.2 286.8 152.69 270.099 121 296.4C101 313.001 87.2 291 87.2 291L84.4 302.6z"/>
+ </g>
+ <g style="fill: #e87f3a">
+ <path d="M333.51 225.346C327.11 226.146 301.743 202.407 316.71 234.146C333.31 269.346 258.31 273.346 241.51 262.146C224.709 250.946 248.71 280.546 248.71 280.546C267.11 300.546 232.709 283.746 232.709 283.746C198.309 270.946 174.309 296.546 171.109 297.346C167.909 298.146 163.109 301.346 162.309 294.946C161.509 288.546 154.13 272.012 122.309 298.146C101.073 315.492 87.582 294.037 87.582 294.037L84.382 304.146C59.382 264.346 74.454 322.655 74.454 322.655C83.255 357.056 213.509 318.146 213.509 318.146C213.509 318.146 382.31 287.746 393.51 283.746C404.71 279.746 499.038 286.073 499.038 286.073L493.51 268.764C428.71 222.364 410.31 246.146 396.71 242.146C383.11 238.146 385.51 247.746 382.31 248.546C379.11 249.346 339.91 224.546 333.51 225.346z"/>
+ </g>
+ <g style="fill: #ea8c4d">
+ <path d="M334.819 227.091C328.419 227.891 303.685 203.862 318.019 235.891C334.219 272.092 259.619 275.092 242.819 263.892C226.019 252.692 250.019 282.292 250.019 282.292C268.419 302.292 234.019 285.492 234.019 285.492C199.619 272.692 175.618 298.292 172.418 299.092C169.218 299.892 164.418 303.092 163.618 296.692C162.818 290.292 155.57 273.925 123.618 299.892C101.145 317.983 87.964 297.074 87.964 297.074L84.364 305.692C60.564 266.692 75.109 325.71 75.109 325.71C83.909 360.11 214.819 319.892 214.819 319.892C214.819 319.892 383.619 289.492 394.819 285.492C406.019 281.492 499.474 287.746 499.474 287.746L494.02 269.928C429.219 223.528 411.619 247.891 398.019 243.891C384.419 239.891 386.819 249.491 383.619 250.292C380.419 251.092 341.219 226.291 334.819 227.091z"/>
+ </g>
+ <g style="fill: #ec9961">
+ <path d="M336.128 228.837C329.728 229.637 304.999 205.605 319.328 237.637C336.128 275.193 260.394 276.482 244.128 265.637C227.328 254.437 251.328 284.037 251.328 284.037C269.728 304.037 235.328 287.237 235.328 287.237C200.928 274.437 176.928 300.037 173.728 300.837C170.528 301.637 165.728 304.837 164.928 298.437C164.128 292.037 157.011 275.839 124.927 301.637C101.218 320.474 88.345 300.11 88.345 300.11L84.345 307.237C62.545 270.437 75.764 328.765 75.764 328.765C84.564 363.165 216.128 321.637 216.128 321.637C216.128 321.637 384.928 291.237 396.129 287.237C407.329 283.237 499.911 289.419 499.911 289.419L494.529 271.092C429.729 224.691 412.929 249.637 399.329 245.637C385.728 241.637 388.128 251.237 384.928 252.037C381.728 252.837 342.528 228.037 336.128 228.837z"/>
+ </g>
+ <g style="fill: #eea575">
+ <path d="M337.438 230.583C331.037 231.383 306.814 207.129 320.637 239.383C337.438 278.583 262.237 278.583 245.437 267.383C228.637 256.183 252.637 285.783 252.637 285.783C271.037 305.783 236.637 288.983 236.637 288.983C202.237 276.183 178.237 301.783 175.037 302.583C171.837 303.383 167.037 306.583 166.237 300.183C165.437 293.783 158.452 277.752 126.237 303.383C101.291 322.965 88.727 303.146 88.727 303.146L84.327 308.783C64.527 273.982 76.418 331.819 76.418 331.819C85.218 366.22 217.437 323.383 217.437 323.383C217.437 323.383 386.238 292.983 397.438 288.983C408.638 284.983 500.347 291.092 500.347 291.092L495.038 272.255C430.238 225.855 414.238 251.383 400.638 247.383C387.038 243.383 389.438 252.983 386.238 253.783C383.038 254.583 343.838 229.783 337.438 230.583z"/>
+ </g>
+ <g style="fill: #f1b288">
+ <path d="M338.747 232.328C332.347 233.128 306.383 209.677 321.947 241.128C341.147 279.928 263.546 280.328 246.746 269.128C229.946 257.928 253.946 287.528 253.946 287.528C272.346 307.528 237.946 290.728 237.946 290.728C203.546 277.928 179.546 303.528 176.346 304.328C173.146 305.128 168.346 308.328 167.546 301.928C166.746 295.528 159.892 279.665 127.546 305.128C101.364 325.456 89.109 306.183 89.109 306.183L84.309 310.328C66.309 277.128 77.073 334.874 77.073 334.874C85.873 369.274 218.746 325.128 218.746 325.128C218.746 325.128 387.547 294.728 398.747 290.728C409.947 286.728 500.783 292.764 500.783 292.764L495.547 273.419C430.747 227.019 415.547 253.128 401.947 249.128C388.347 245.128 390.747 254.728 387.547 255.528C384.347 256.328 345.147 231.528 338.747 232.328z"/>
+ </g>
+ <g style="fill: #f3bf9c">
+ <path d="M340.056 234.073C333.655 234.873 307.313 211.613 323.255 242.873C343.656 282.874 264.855 282.074 248.055 270.874C231.255 259.674 255.255 289.274 255.255 289.274C273.655 309.274 239.255 292.474 239.255 292.474C204.855 279.674 180.855 305.274 177.655 306.074C174.455 306.874 169.655 310.074 168.855 303.674C168.055 297.274 161.332 281.578 128.855 306.874C101.436 327.947 89.491 309.219 89.491 309.219L84.291 311.874C68.291 281.674 77.727 337.929 77.727 337.929C86.527 372.329 220.055 326.874 220.055 326.874C220.055 326.874 388.856 296.474 400.056 292.474C411.256 288.474 501.22 294.437 501.22 294.437L496.056 274.583C431.256 228.183 416.856 254.874 403.256 250.874C389.656 246.873 392.056 256.474 388.856 257.274C385.656 258.074 346.456 233.273 340.056 234.073z"/>
+ </g>
+ <g style="fill: #f5ccb0">
+ <path d="M341.365 235.819C334.965 236.619 307.523 213.944 324.565 244.619C346.565 284.219 266.164 283.819 249.364 272.619C232.564 261.419 256.564 291.019 256.564 291.019C274.964 311.019 240.564 294.219 240.564 294.219C206.164 281.419 182.164 307.019 178.964 307.819C175.764 308.619 170.964 311.819 170.164 305.419C169.364 299.019 162.773 283.492 130.164 308.619C101.509 330.438 89.873 312.256 89.873 312.256L84.273 313.419C69.872 285.019 78.382 340.983 78.382 340.983C87.182 375.384 221.364 328.619 221.364 328.619C221.364 328.619 390.165 298.219 401.365 294.219C412.565 290.219 501.656 296.11 501.656 296.11L496.565 275.746C431.765 229.346 418.165 256.619 404.565 252.619C390.965 248.619 393.365 258.219 390.165 259.019C386.965 259.819 347.765 235.019 341.365 235.819z"/>
+ </g>
+ <g style="fill: #f8d8c4">
+ <path d="M342.674 237.565C336.274 238.365 308.832 215.689 325.874 246.365C347.874 285.965 267.474 285.565 250.674 274.365C233.874 263.165 257.874 292.765 257.874 292.765C276.274 312.765 241.874 295.965 241.874 295.965C207.473 283.165 183.473 308.765 180.273 309.565C177.073 310.365 172.273 313.565 171.473 307.165C170.673 300.765 164.214 285.405 131.473 310.365C101.582 332.929 90.255 315.293 90.255 315.293L84.255 314.965C70.654 288.564 79.037 344.038 79.037 344.038C87.837 378.438 222.673 330.365 222.673 330.365C222.673 330.365 391.474 299.965 402.674 295.965C413.874 291.965 502.093 297.783 502.093 297.783L497.075 276.91C432.274 230.51 419.474 258.365 405.874 254.365C392.274 250.365 394.674 259.965 391.474 260.765C388.274 261.565 349.074 236.765 342.674 237.565z"/>
+ </g>
+ <g style="fill: #fae5d7">
+ <path d="M343.983 239.31C337.583 240.11 310.529 217.223 327.183 248.11C349.183 288.91 268.783 287.31 251.983 276.11C235.183 264.91 259.183 294.51 259.183 294.51C277.583 314.51 243.183 297.71 243.183 297.71C208.783 284.91 184.783 310.51 181.583 311.31C178.382 312.11 173.582 315.31 172.782 308.91C171.982 302.51 165.654 287.318 132.782 312.11C101.655 335.42 90.637 318.329 90.637 318.329L84.236 316.51C71.236 292.51 79.691 347.093 79.691 347.093C88.491 381.493 223.983 332.11 223.983 332.11C223.983 332.11 392.783 301.71 403.983 297.71C415.183 293.71 502.529 299.456 502.529 299.456L497.583 278.074C432.783 231.673 420.783 260.11 407.183 256.11C393.583 252.11 395.983 261.71 392.783 262.51C389.583 263.31 350.383 238.51 343.983 239.31z"/>
+ </g>
+ <g style="fill: #fcf2eb">
+ <path d="M345.292 241.055C338.892 241.855 312.917 218.411 328.492 249.855C349.692 292.656 270.092 289.056 253.292 277.856C236.492 266.656 260.492 296.256 260.492 296.256C278.892 316.256 244.492 299.456 244.492 299.456C210.092 286.656 186.092 312.256 182.892 313.056C179.692 313.856 174.892 317.056 174.092 310.656C173.292 304.256 167.095 289.232 134.092 313.856C101.727 337.911 91.018 321.365 91.018 321.365L84.218 318.056C71.418 294.856 80.346 350.147 80.346 350.147C89.146 384.547 225.292 333.856 225.292 333.856C225.292 333.856 394.093 303.456 405.293 299.456C416.493 295.456 502.965 301.128 502.965 301.128L498.093 279.237C433.292 232.837 422.093 261.856 408.493 257.856C394.893 253.855 397.293 263.456 394.093 264.256C390.892 265.056 351.692 240.255 345.292 241.055z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M84.2 319.601C71.4 297.6 81 353.201 81 353.201C89.8 387.601 226.6 335.601 226.6 335.601C226.6 335.601 395.401 305.2 406.601 301.2C417.801 297.2 503.401 302.8 503.401 302.8L498.601 280.4C433.801 234 423.401 263.6 409.801 259.6C396.201 255.6 398.601 265.2 395.401 266C392.201 266.8 353.001 242 346.601 242.8C340.201 243.6 314.981 219.793 329.801 251.6C352.028 299.307 269.041 289.227 254.6 279.6C237.8 268.4 261.8 298 261.8 298C280.2 318.001 245.8 301.2 245.8 301.2C211.4 288.4 187.4 314.001 184.2 314.801C181 315.601 176.2 318.801 175.4 312.401C174.6 306 168.535 291.144 135.4 315.601C101.8 340.401 91.4 324.401 91.4 324.401L84.2 319.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M125.8 349.601C125.8 349.601 118.6 361.201 139.4 374.401C139.4 374.401 140.8 375.801 122.8 371.601C122.8 371.601 116.6 369.601 115 359.201C115 359.201 110.2 354.801 105.4 349.201C100.6 343.601 125.8 349.601 125.8 349.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M265.8 302C265.8 302 283.498 328.821 282.9 333.601C281.6 344.001 281.4 353.601 284.6 357.601C287.801 361.601 296.601 394.801 296.601 394.801C296.601 394.801 296.201 396.001 308.601 358.001C308.601 358.001 320.201 342.001 300.201 323.601C300.201 323.601 265 294.8 265.8 302z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M145.8 376.401C145.8 376.401 157 383.601 142.6 414.801L149 412.401C149 412.401 148.2 423.601 145 426.001L152.2 422.801C152.2 422.801 157 430.801 153 435.601C153 435.601 169.8 443.601 169 450.001C169 450.001 175.4 442.001 171.4 435.601C167.4 429.201 160.2 433.201 161 414.801L152.2 418.001C152.2 418.001 157.8 409.201 157.8 402.801L149.8 405.201C149.8 405.201 165.269 378.623 154.6 377.201C148.6 376.401 145.8 376.401 145.8 376.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M178.2 393.201C178.2 393.201 181 388.801 178.2 389.601C175.4 390.401 144.2 405.201 138.2 414.801C138.2 414.801 172.6 390.401 178.2 393.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M188.6 401.201C188.6 401.201 191.4 396.801 188.6 397.601C185.8 398.401 154.6 413.201 148.6 422.801C148.6 422.801 183 398.401 188.6 401.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M201.8 386.001C201.8 386.001 204.6 381.601 201.8 382.401C199 383.201 167.8 398.001 161.8 407.601C161.8 407.601 196.2 383.201 201.8 386.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M178.6 429.601C178.6 429.601 178.6 423.601 175.8 424.401C173 425.201 137 442.801 131 452.401C131 452.401 173 426.801 178.6 429.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M179.8 418.801C179.8 418.801 181 414.001 178.2 414.801C176.2 414.801 149.8 426.401 143.8 436.001C143.8 436.001 173.4 414.401 179.8 418.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M165.4 466.401L155.4 474.001C155.4 474.001 165.8 466.401 169.4 467.601C169.4 467.601 162.6 478.801 161.8 484.001C161.8 484.001 172.2 471.201 177.8 471.601C177.8 471.601 185.4 472.001 185.4 482.801C185.4 482.801 191 472.401 194.2 472.801C194.2 472.801 195.4 479.201 194.2 486.001C194.2 486.001 198.2 478.401 202.2 480.001C202.2 480.001 208.6 478.001 207.8 489.601C207.8 489.601 207.8 500.001 207 502.801C207 502.801 212.6 476.401 215 476.001C215 476.001 223 474.801 227.8 483.601C227.8 483.601 223.8 476.001 228.6 478.001C228.6 478.001 239.4 479.601 242.6 486.401C242.6 486.401 235.8 474.401 241.4 477.601C241.4 477.601 248.2 477.601 249.4 484.001C249.4 484.001 257.8 505.201 259.8 506.801C259.8 506.801 252.2 485.201 253.8 485.201C253.8 485.201 251.8 473.201 257 488.001C257 488.001 253.8 474.001 259.4 474.801C265 475.601 269.4 485.601 277.8 483.201C277.8 483.201 287.401 488.801 289.401 419.601L165.4 466.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M170.2 373.601C170.2 373.601 185 367.601 225 373.601C225 373.601 232.2 374.001 239 365.201C245.8 356.401 272.6 349.201 279 351.201L288.601 357.601L289.401 358.801C289.401 358.801 301.801 369.201 302.201 376.801C302.601 384.401 287.801 432.401 278.2 448.401C268.6 464.401 259 476.801 239.8 474.401C239.8 474.401 219 470.401 193.4 474.401C193.4 474.401 164.2 472.801 161.4 464.801C158.6 456.801 172.6 441.601 172.6 441.601C172.6 441.601 177 433.201 175.8 418.801C174.6 404.401 175 376.401 170.2 373.601z"/>
+ </g>
+ <g style="fill: #e5668c">
+ <path d="M192.2 375.601C200.6 394.001 171 459.201 171 459.201C169 460.801 183.66 466.846 193.8 464.401C204.746 461.763 245 466.001 245 466.001C268.6 450.401 281.4 406.001 281.4 406.001C281.4 406.001 291.801 382.001 274.2 378.801C256.6 375.601 192.2 375.601 192.2 375.601z"/>
+ </g>
+ <g style="fill: #b23259">
+ <path d="M190.169 406.497C193.495 393.707 195.079 381.906 192.2 375.601C192.2 375.601 254.6 382.001 265.8 361.201C270.041 353.326 284.801 384.001 284.4 393.601C284.4 393.601 221.4 408.001 206.6 396.801L190.169 406.497z"/>
+ </g>
+ <g style="fill: #a5264c">
+ <path d="M194.6 422.801C194.6 422.801 196.6 430.001 194.2 434.001C194.2 434.001 192.6 434.801 191.4 435.201C191.4 435.201 192.6 438.801 198.6 440.401C198.6 440.401 200.6 444.801 203 445.201C205.4 445.601 210.2 451.201 214.2 450.001C218.2 448.801 229.4 444.801 229.4 444.801C229.4 444.801 235 441.601 243.8 445.201C243.8 445.201 246.175 444.399 246.6 440.401C247.1 435.701 250.2 432.001 252.2 430.001C254.2 428.001 263.8 415.201 262.6 414.801C261.4 414.401 194.6 422.801 194.6 422.801z"/>
+ </g>
+ <g style="fill: #ff727f; stroke:#000000">
+ <path d="M190.2 374.401C190.2 374.401 187.4 396.801 190.6 405.201C193.8 413.601 193 415.601 192.2 419.601C191.4 423.601 195.8 433.601 201.4 439.601L213.4 441.201C213.4 441.201 228.6 437.601 237.8 440.401C237.8 440.401 246.794 441.744 250.2 426.801C250.2 426.801 255 420.401 262.2 417.601C269.4 414.801 276.6 373.201 272.6 365.201C268.6 357.201 254.2 352.801 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M191.8 449.201C191.8 449.201 191 447.201 186.6 446.801C186.6 446.801 164.2 443.201 155.8 430.801C155.8 430.801 149 425.201 153.4 436.801C153.4 436.801 163.8 457.201 170.6 460.001C170.6 460.001 187 464.001 191.8 449.201z"/>
+ </g>
+ <g style="fill: #cc3f4c">
+ <path d="M271.742 385.229C272.401 377.323 274.354 368.709 272.6 365.201C266.154 352.307 249.181 357.695 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401C190.2 374.401 188.455 388.364 189.295 398.376C189.295 398.376 226.6 386.801 227.4 392.401C227.4 392.401 229 389.201 238.2 389.201C247.4 389.201 270.142 388.029 271.742 385.229z"/>
+ </g>
+ <g style="stroke:#a51926; stroke-width:2">
+ <path d="M228.6 375.201C228.6 375.201 233.4 380.001 229.8 389.601C229.8 389.601 215.4 405.601 217.4 419.601"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M180.6 460.001C180.6 460.001 176.2 447.201 185 454.001C185 454.001 189.8 456.001 188.6 457.601C187.4 459.201 181.8 463.201 180.6 460.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M185.64 461.201C185.64 461.201 182.12 450.961 189.16 456.401C189.16 456.401 193.581 458.849 192.04 459.281C187.48 460.561 192.04 463.121 185.64 461.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M190.44 461.201C190.44 461.201 186.92 450.961 193.96 456.401C193.96 456.401 198.335 458.711 196.84 459.281C193.48 460.561 196.84 463.121 190.44 461.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M197.04 461.401C197.04 461.401 193.52 451.161 200.56 456.601C200.56 456.601 204.943 458.933 203.441 459.481C200.48 460.561 203.441 463.321 197.04 461.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M203.52 461.321C203.52 461.321 200 451.081 207.041 456.521C207.041 456.521 210.881 458.121 209.921 459.401C208.961 460.681 209.921 463.241 203.52 461.321z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M210.2 462.001C210.2 462.001 205.4 449.601 214.6 456.001C214.6 456.001 219.4 458.001 218.2 459.601C217 461.201 218.2 464.401 210.2 462.001z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M181.8 444.801C181.8 444.801 195 442.001 201 445.201C201 445.201 207 446.401 208.2 446.001C209.4 445.601 212.6 445.201 212.6 445.201"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M215.8 453.601C215.8 453.601 227.8 440.001 239.8 444.401C246.816 446.974 245.8 443.601 246.6 440.801C247.4 438.001 247.6 433.801 252.6 430.801"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M233 437.601C233 437.601 229 426.801 226.2 439.601C223.4 452.401 220.2 456.001 218.6 458.801C218.6 458.801 218.6 464.001 227 463.601C227 463.601 237.8 463.201 238.2 460.401C238.6 457.601 237 446.001 233 437.601z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M247 444.801C247 444.801 250.6 442.401 253 443.601"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M253.5 428.401C253.5 428.401 256.4 423.501 261.2 422.701"/>
+ </g>
+ <g style="fill: #b2b2b2">
+ <path d="M174.2 465.201C174.2 465.201 192.2 468.401 196.6 466.801C196.6 466.801 205.4 466.801 197 468.801C197 468.801 184.2 468.801 176.2 467.601C176.2 467.601 164.6 462.001 174.2 465.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M188.2 372.001C188.2 372.001 205.8 372.001 207.8 372.801C207.8 372.801 215 403.601 211.4 411.201C211.4 411.201 210.2 414.001 207.4 408.401C207.4 408.401 189 375.601 185.8 373.601C182.6 371.601 187 372.001 188.2 372.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M111.1 369.301C111.1 369.301 120 371.001 132.6 373.601C132.6 373.601 137.4 396.001 140.6 400.801C143.8 405.601 140.2 405.601 136.6 402.801C133 400.001 118.2 386.001 116.2 381.601C114.2 377.201 111.1 369.301 111.1 369.301z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M132.961 373.818C132.961 373.818 138.761 375.366 139.77 377.581C140.778 379.795 138.568 383.092 138.568 383.092C138.568 383.092 137.568 386.397 136.366 384.235C135.164 382.072 132.292 374.412 132.961 373.818z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M133 373.601C133 373.601 136.6 378.801 140.2 378.801C143.8 378.801 144.182 378.388 147 379.001C151.6 380.001 151.2 378.001 157.8 379.201C160.44 379.681 163 378.801 165.8 380.001C168.6 381.201 171.8 380.401 173 378.401C174.2 376.401 179 372.201 179 372.201C179 372.201 166.2 374.001 163.4 374.801C163.4 374.801 141 376.001 133 373.601z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M177.6 373.801C177.6 373.801 171.15 377.301 170.75 379.701C170.35 382.101 176 385.801 176 385.801C176 385.801 178.75 390.401 179.35 388.001C179.95 385.601 178.4 374.201 177.6 373.801z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M140.115 379.265C140.115 379.265 147.122 390.453 147.339 379.242C147.339 379.242 147.896 377.984 146.136 377.962C140.061 377.886 141.582 373.784 140.115 379.265z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M147.293 379.514C147.293 379.514 155.214 390.701 154.578 379.421C154.578 379.421 154.585 379.089 152.832 378.936C148.085 378.522 148.43 374.004 147.293 379.514z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M154.506 379.522C154.506 379.522 162.466 390.15 161.797 380.484C161.797 380.484 161.916 379.251 160.262 378.95C156.37 378.244 156.159 374.995 154.506 379.522z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M161.382 379.602C161.382 379.602 169.282 391.163 169.63 381.382C169.63 381.382 171.274 380.004 169.528 379.782C163.71 379.042 164.508 374.588 161.382 379.602z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+ <path d="M125.208 383.132L117.55 381.601C114.95 376.601 112.85 370.451 112.85 370.451C112.85 370.451 119.2 371.451 131.7 374.251C131.7 374.251 132.576 377.569 134.048 383.364L125.208 383.132z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+ <path d="M190.276 378.47C188.61 375.964 187.293 374.206 186.643 373.8C183.63 371.917 187.773 372.294 188.902 372.294C188.902 372.294 205.473 372.294 207.356 373.047C207.356 373.047 207.88 375.289 208.564 378.68C208.564 378.68 198.476 376.67 190.276 378.47z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M243.88 240.321C271.601 244.281 297.121 208.641 298.881 198.96C300.641 189.28 290.521 177.4 290.521 177.4C291.841 174.32 287.001 160.24 281.721 151C276.441 141.76 260.54 142.734 243 141.76C227.16 140.88 208.68 164.2 207.36 165.96C206.04 167.72 212.2 206.001 213.52 211.721C214.84 217.441 212.2 243.841 212.2 243.841C246.44 234.741 216.16 236.361 243.88 240.321z"/>
+ </g>
+ <g style="fill: #ea8e51">
+ <path d="M208.088 166.608C206.792 168.336 212.84 205.921 214.136 211.537C215.432 217.153 212.84 243.073 212.84 243.073C245.512 234.193 216.728 235.729 243.944 239.617C271.161 243.505 296.217 208.513 297.945 199.008C299.673 189.504 289.737 177.84 289.737 177.84C291.033 174.816 286.281 160.992 281.097 151.92C275.913 142.848 260.302 143.805 243.08 142.848C227.528 141.984 209.384 164.88 208.088 166.608z"/>
+ </g>
+ <g style="fill: #efaa7c">
+ <path d="M208.816 167.256C207.544 168.952 213.48 205.841 214.752 211.353C216.024 216.865 213.48 242.305 213.48 242.305C244.884 233.145 217.296 235.097 244.008 238.913C270.721 242.729 295.313 208.385 297.009 199.056C298.705 189.728 288.953 178.28 288.953 178.28C290.225 175.312 285.561 161.744 280.473 152.84C275.385 143.936 260.063 144.875 243.16 143.936C227.896 143.088 210.088 165.56 208.816 167.256z"/>
+ </g>
+ <g style="fill: #f4c6a8">
+ <path d="M209.544 167.904C208.296 169.568 214.12 205.761 215.368 211.169C216.616 216.577 214.12 241.537 214.12 241.537C243.556 232.497 217.864 234.465 244.072 238.209C270.281 241.953 294.409 208.257 296.073 199.105C297.737 189.952 288.169 178.72 288.169 178.72C289.417 175.808 284.841 162.496 279.849 153.76C274.857 145.024 259.824 145.945 243.24 145.024C228.264 144.192 210.792 166.24 209.544 167.904z"/>
+ </g>
+ <g style="fill: #f9e2d3">
+ <path d="M210.272 168.552C209.048 170.184 214.76 205.681 215.984 210.985C217.208 216.289 214.76 240.769 214.76 240.769C242.628 231.849 218.432 233.833 244.136 237.505C269.841 241.177 293.505 208.129 295.137 199.152C296.769 190.176 287.385 179.16 287.385 179.16C288.609 176.304 284.121 163.248 279.225 154.68C274.329 146.112 259.585 147.015 243.32 146.112C228.632 145.296 211.496 166.92 210.272 168.552z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M244.2 236.8C269.4 240.4 292.601 208 294.201 199.2C295.801 190.4 286.601 179.6 286.601 179.6C287.801 176.8 283.4 164 278.6 155.6C273.8 147.2 259.346 148.086 243.4 147.2C229 146.4 212.2 167.6 211 169.2C209.8 170.8 215.4 205.6 216.6 210.8C217.8 216 215.4 240 215.4 240C240.9 231.4 219 233.2 244.2 236.8z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M290.601 202.8C290.601 202.8 262.8 210.4 251.2 208.8C251.2 208.8 235.4 202.2 226.6 224C226.6 224 223 231.2 221 233.2C219 235.2 290.601 202.8 290.601 202.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M294.401 200.6C294.401 200.6 265.4 212.8 255.4 212.4C255.4 212.4 239 207.8 230.6 222.4C230.6 222.4 222.2 231.6 219 233.2C219 233.2 218.6 234.8 225 230.8L235.4 236C235.4 236 250.2 245.6 259.8 229.6C259.8 229.6 263.8 218.4 263.8 216.4C263.8 214.4 285 208.8 286.601 208.4C288.201 208 294.801 203.8 294.401 200.6z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M247 236.514C240.128 236.514 231.755 232.649 231.755 226.4C231.755 220.152 240.128 213.887 247 213.887C253.874 213.887 259.446 218.952 259.446 225.2C259.446 231.449 253.874 236.514 247 236.514z"/>
+ </g>
+ <g style="fill: #659900">
+ <path d="M243.377 219.83C238.531 220.552 233.442 222.055 233.514 221.839C235.054 217.22 241.415 213.887 247 213.887C251.296 213.887 255.084 215.865 257.32 218.875C257.32 218.875 252.004 218.545 243.377 219.83z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M255.4 219.6C255.4 219.6 251 216.4 251 218.6C251 218.6 254.6 223 255.4 219.6z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M245.4 227.726C242.901 227.726 240.875 225.7 240.875 223.2C240.875 220.701 242.901 218.675 245.4 218.675C247.9 218.675 249.926 220.701 249.926 223.2C249.926 225.7 247.9 227.726 245.4 227.726z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M141.4 214.4C141.4 214.4 138.2 193.2 140.6 188.8C140.6 188.8 151.4 178.8 151 175.2C151 175.2 150.6 157.2 149.4 156.4C148.2 155.6 140.6 149.6 134.6 156C134.6 156 124.2 174 125 180.4L125 182.4C125 182.4 117.4 182 115.8 184C115.8 184 114.6 189.2 113.4 189.6C113.4 189.6 110.6 192 112.6 194.8C112.6 194.8 110.6 197.2 111 201.2L118.6 205.2C118.6 205.2 120.6 219.6 131.4 224.8C136.236 227.129 139.4 220.4 141.4 214.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M140.4 212.56C140.4 212.56 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.52 159.64 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.96 140.4 212.56z"/>
+ </g>
+ <g style="fill: #eb955c">
+ <path d="M148.95 157.39C147.86 156.53 140.37 150.76 134.52 157C134.52 157 124.38 174.55 125.16 180.79L125.16 182.74C125.16 182.74 117.75 182.35 116.19 184.3C116.19 184.3 115.02 189.37 113.85 189.76C113.85 189.76 111.12 192.1 113.07 194.83C113.07 194.83 111.12 197.17 111.51 201.07L118.92 204.97C118.92 204.97 120.87 219.01 131.4 224.08C136.114 226.35 139.2 219.79 141.15 213.94C141.15 213.94 138.03 193.27 140.37 188.98C140.37 188.98 150.9 179.23 150.51 175.72C150.51 175.72 150.12 158.17 148.95 157.39z"/>
+ </g>
+ <g style="fill: #f2b892">
+ <path d="M148.5 158.38C147.52 157.46 140.14 151.92 134.44 158C134.44 158 124.56 175.1 125.32 181.18L125.32 183.08C125.32 183.08 118.1 182.7 116.58 184.6C116.58 184.6 115.44 189.54 114.3 189.92C114.3 189.92 111.64 192.2 113.54 194.86C113.54 194.86 111.64 197.14 112.02 200.94L119.24 204.74C119.24 204.74 121.14 218.42 131.4 223.36C135.994 225.572 139 219.18 140.9 213.48C140.9 213.48 137.86 193.34 140.14 189.16C140.14 189.16 150.4 179.66 150.02 176.24C150.02 176.24 149.64 159.14 148.5 158.38z"/>
+ </g>
+ <g style="fill: #f8dcc8">
+ <path d="M148.05 159.37C147.18 158.39 139.91 153.08 134.36 159C134.36 159 124.74 175.65 125.48 181.57L125.48 183.42C125.48 183.42 118.45 183.05 116.97 184.9C116.97 184.9 115.86 189.71 114.75 190.08C114.75 190.08 112.16 192.3 114.01 194.89C114.01 194.89 112.16 197.11 112.53 200.81L119.56 204.51C119.56 204.51 121.41 217.83 131.4 222.64C135.873 224.794 138.8 218.57 140.65 213.02C140.65 213.02 137.69 193.41 139.91 189.34C139.91 189.34 149.9 180.09 149.53 176.76C149.53 176.76 149.16 160.11 148.05 159.37z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M140.4 212.46C140.4 212.46 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.84 159.32 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.86 140.4 212.46z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M137.3 206.2C137.3 206.2 115.7 196 114.8 195.2C114.8 195.2 123.9 203.4 124.7 203.4C125.5 203.4 137.3 206.2 137.3 206.2z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M120.2 200C120.2 200 138.6 203.6 138.6 208C138.6 210.912 138.357 224.331 133 222.8C124.6 220.4 128.2 206 120.2 200z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M128.6 203.8C128.6 203.8 137.578 205.274 138.6 208C139.2 209.6 139.863 217.908 134.4 219C129.848 219.911 127.618 209.69 128.6 203.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M214.595 246.349C214.098 244.607 215.409 244.738 217.2 244.2C219.2 243.6 231.4 239.8 232.2 237.2C233 234.6 246.2 239 246.2 239C248 239.8 252.4 242.4 252.4 242.4C257.2 243.6 263.8 244 263.8 244C266.2 245 269.6 247.8 269.6 247.8C284.2 258 296.601 250.8 296.601 250.8C316.601 244.2 310.601 227 310.601 227C307.601 218 310.801 214.6 310.801 214.6C311.001 210.8 318.201 217.2 318.201 217.2C320.801 221.4 321.601 226.4 321.601 226.4C329.601 237.6 326.201 219.8 326.201 219.8C326.401 218.8 323.601 215.2 323.601 214C323.601 212.8 321.801 209.4 321.801 209.4C318.801 206 321.201 199 321.201 199C323.001 185.2 320.801 187 320.801 187C319.601 185.2 310.401 195.2 310.401 195.2C308.201 198.6 302.201 200.2 302.201 200.2C299.401 202 296.001 200.6 296.001 200.6C293.401 200.2 287.801 207.2 287.801 207.2C290.601 207 293.001 211.4 295.401 211.6C297.801 211.8 299.601 209.2 301.201 208.6C302.801 208 305.601 213.8 305.601 213.8C306.001 216.4 300.401 221.2 300.401 221.2C300.001 225.8 298.401 224.2 298.401 224.2C295.401 223.6 294.201 227.4 293.201 232C292.201 236.6 288.001 237 288.001 237C286.401 244.4 285.2 241.4 285.2 241.4C285 235.8 279 241.6 279 241.6C277.8 243.6 273.2 241.4 273.2 241.4C266.4 239.4 268.8 237.4 268.8 237.4C270.6 235.2 281.8 237.4 281.8 237.4C284 235.8 276 231.8 276 231.8C275.4 230 276.4 225.6 276.4 225.6C277.6 222.4 284.4 216.8 284.4 216.8C293.801 215.6 291.001 214 291.001 214C284.801 208.8 279 216.4 279 216.4C276.8 222.6 259.4 237.6 259.4 237.6C254.6 241 257.2 234.2 253.2 237.6C249.2 241 228.6 232 228.6 232C217.038 230.807 214.306 246.549 210.777 243.429C210.777 243.429 216.195 251.949 214.595 246.349z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M409.401 80C409.401 80 383.801 88 381.001 106.8C381.001 106.8 378.601 129.6 399.001 147.2C399.001 147.2 399.401 153.6 401.401 156.8C401.401 156.8 399.801 161.6 418.601 154L445.801 145.6C445.801 145.6 452.201 143.2 457.401 134.4C462.601 125.6 477.801 106.8 474.201 81.6C474.201 81.6 475.401 70.4 469.401 70C469.401 70 461.001 68.4 453.801 76C453.801 76 447.001 79.2 444.601 78.8L409.401 80z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M464.022 79.01C464.022 79.01 466.122 70.08 461.282 74.92C461.282 74.92 454.242 80.64 446.761 80.64C446.761 80.64 432.241 82.84 427.841 96.04C427.841 96.04 423.881 122.88 431.801 128.6C431.801 128.6 436.641 136.08 443.681 129.48C450.722 122.88 466.222 92.65 464.022 79.01z"/>
+ </g>
+ <g style="fill: #323232">
+ <path d="M463.648 79.368C463.648 79.368 465.738 70.624 460.986 75.376C460.986 75.376 454.074 80.992 446.729 80.992C446.729 80.992 432.473 83.152 428.153 96.112C428.153 96.112 424.265 122.464 432.041 128.08C432.041 128.08 436.793 135.424 443.705 128.944C450.618 122.464 465.808 92.76 463.648 79.368z"/>
+ </g>
+ <g style="fill: #666666">
+ <path d="M463.274 79.726C463.274 79.726 465.354 71.168 460.69 75.832C460.69 75.832 453.906 81.344 446.697 81.344C446.697 81.344 432.705 83.464 428.465 96.184C428.465 96.184 424.649 122.048 432.281 127.56C432.281 127.56 436.945 134.768 443.729 128.408C450.514 122.048 465.394 92.87 463.274 79.726z"/>
+ </g>
+ <g style="fill: #999999">
+ <path d="M462.9 80.084C462.9 80.084 464.97 71.712 460.394 76.288C460.394 76.288 453.738 81.696 446.665 81.696C446.665 81.696 432.937 83.776 428.777 96.256C428.777 96.256 425.033 121.632 432.521 127.04C432.521 127.04 437.097 134.112 443.753 127.872C450.41 121.632 464.98 92.98 462.9 80.084z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M462.526 80.442C462.526 80.442 464.586 72.256 460.098 76.744C460.098 76.744 453.569 82.048 446.633 82.048C446.633 82.048 433.169 84.088 429.089 96.328C429.089 96.328 425.417 121.216 432.761 126.52C432.761 126.52 437.249 133.456 443.777 127.336C450.305 121.216 464.566 93.09 462.526 80.442z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M462.151 80.8C462.151 80.8 464.201 72.8 459.801 77.2C459.801 77.2 453.401 82.4 446.601 82.4C446.601 82.4 433.401 84.4 429.401 96.4C429.401 96.4 425.801 120.8 433.001 126C433.001 126 437.401 132.8 443.801 126.8C450.201 120.8 464.151 93.2 462.151 80.8z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M250.6 284C250.6 284 230.2 264.8 222.2 264C222.2 264 187.8 260 173 278C173 278 190.6 257.6 218.2 263.2C218.2 263.2 196.6 258.8 184.2 262C184.2 262 167.4 262 157.8 276L155 280.8C155 280.8 159 266 177.4 260C177.4 260 200.2 255.2 211 260C211 260 189.4 253.2 179.4 255.2C179.4 255.2 149 252.8 136.2 279.2C136.2 279.2 140.2 264.8 155 257.6C155 257.6 168.6 248.8 189 251.6C189 251.6 203.4 254.8 208.6 257.2C213.8 259.6 212.6 256.8 204.2 252C204.2 252 198.6 242 184.6 242.4C184.6 242.4 141.8 246 131.4 258C131.4 258 145 246.8 155.4 244C155.4 244 177.8 236 186.2 236.8C186.2 236.8 211 237.8 218.6 233.8C218.6 233.8 207.4 238.8 210.6 242C213.8 245.2 220.6 252.8 220.6 254C220.6 255.2 244.8 277.3 248.4 281.7L250.6 284z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M389 478C389 478 373.5 441.5 361 432C361 432 387 448 390.5 466C390.5 466 390.5 476 389 478z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M436 485.5C436 485.5 409.5 430.5 391 406.5C391 406.5 434.5 444 439.5 470.5L440 476L437 473.5C437 473.5 436.5 482.5 436 485.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M492.5 437C492.5 437 430 377.5 428.5 375C428.5 375 489 441 492 448.5C492 448.5 490 439.5 492.5 437z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M304 480.5C304 480.5 323.5 428.5 342.5 451C342.5 451 357.5 461 357 464C357 464 353 457.5 335 458C335 458 316 455 304 480.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M494.5 353C494.5 353 449.5 324.5 442 323C430.193 320.639 491.5 352 496.5 362.5C496.5 362.5 498.5 360 494.5 353z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M343.801 459.601C343.801 459.601 364.201 457.601 371.001 450.801L375.401 454.401L393.001 416.001L396.601 421.201C396.601 421.201 411.001 406.401 410.201 398.401C409.401 390.401 423.001 404.401 423.001 404.401C423.001 404.401 422.201 392.801 429.401 399.601C429.401 399.601 427.001 384.001 435.401 392.001C435.401 392.001 424.864 361.844 447.401 387.601C453.001 394.001 448.601 387.201 448.601 387.201C448.601 387.201 422.601 339.201 444.201 353.601C444.201 353.601 446.201 330.801 445.001 326.401C443.801 322.001 441.801 299.6 437.001 294.4C432.201 289.2 437.401 287.6 443.001 292.8C443.001 292.8 431.801 268.8 445.001 280.8C445.001 280.8 441.401 265.6 437.001 262.8C437.001 262.8 431.401 245.6 446.601 256.4C446.601 256.4 442.201 244 439.001 240.8C439.001 240.8 427.401 213.2 434.601 218L439.001 221.6C439.001 221.6 432.201 207.6 438.601 212C445.001 216.4 445.001 216 445.001 216C445.001 216 423.801 182.8 444.201 200.4C444.201 200.4 436.042 186.482 432.601 179.6C432.601 179.6 413.801 159.2 428.201 165.6L433.001 167.2C433.001 167.2 424.201 157.2 416.201 155.6C408.201 154 418.601 147.6 425.001 149.6C431.401 151.6 447.001 159.2 447.001 159.2C447.001 159.2 459.801 178 463.801 178.4C463.801 178.4 443.801 170.8 449.801 178.8C449.801 178.8 464.201 192.8 457.001 192.4C457.001 192.4 451.001 199.6 455.801 208.4C455.801 208.4 437.342 190.009 452.201 215.6L459.001 232C459.001 232 434.601 207.2 445.801 229.2C445.801 229.2 463.001 252.8 465.001 253.2C467.001 253.6 471.401 262.4 471.401 262.4L467.001 260.4L472.201 269.2C472.201 269.2 461.001 257.2 467.001 270.4L472.601 284.8C472.601 284.8 452.201 262.8 465.801 292.4C465.801 292.4 449.401 287.2 458.201 304.4C458.201 304.4 456.601 320.401 457.001 325.601C457.401 330.801 458.601 359.201 454.201 367.201C449.801 375.201 460.201 394.401 462.201 398.401C464.201 402.401 467.801 413.201 459.001 404.001C450.201 394.801 454.601 400.401 456.601 409.201C458.601 418.001 464.601 433.601 463.801 439.201C463.801 439.201 462.601 440.401 459.401 436.801C459.401 436.801 444.601 414.001 446.201 428.401C446.201 428.401 445.001 436.401 441.801 445.201C441.801 445.201 438.601 456.001 438.601 447.201C438.601 447.201 435.401 430.401 432.601 438.001C429.801 445.601 426.201 451.601 423.401 454.001C420.601 456.401 415.401 433.601 414.201 444.001C414.201 444.001 402.201 431.601 397.401 448.001L385.801 464.401C385.801 464.401 385.401 452.001 384.201 458.001C384.201 458.001 354.201 464.001 343.801 459.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M309.401 102.8C309.401 102.8 297.801 94.8 293.801 95.2C289.801 95.6 321.401 86.4 362.601 114C362.601 114 367.401 116.8 371.001 116.4C371.001 116.4 374.201 118.8 371.401 122.4C371.401 122.4 362.601 132 373.801 143.2C373.801 143.2 392.201 150 386.601 141.2C386.601 141.2 397.401 145.2 399.801 149.2C402.201 153.2 401.001 149.2 401.001 149.2C401.001 149.2 394.601 142 388.601 136.8C388.601 136.8 383.401 134.8 380.601 126.4C377.801 118 375.401 108 379.801 104.8C379.801 104.8 375.801 109.2 376.601 105.2C377.401 101.2 381.001 97.6 382.601 97.2C384.201 96.8 400.601 81 407.401 80.6C407.401 80.6 398.201 82 395.201 81C392.201 80 365.601 68.6 359.601 67.4C359.601 67.4 342.801 60.8 354.801 62.8C354.801 62.8 390.601 66.6 408.801 79.8C408.801 79.8 401.601 71.4 383.201 64.4C383.201 64.4 361.001 51.8 325.801 56.8C325.801 56.8 308.001 60 300.201 61.8C300.201 61.8 297.601 61.2 297.001 60.8C296.401 60.4 284.6 51.4 257 58.4C257 58.4 240 63 231.4 67.8C231.4 67.8 216.2 69 212.6 72.2C212.6 72.2 194 86.8 192 87.6C190 88.4 178.6 96 177.8 96.4C177.8 96.4 202.4 89.8 204.8 87.4C207.2 85 224.6 82.4 227 83.8C229.4 85.2 237.8 84.6 228.2 85.2C228.2 85.2 303.801 100 304.601 102C305.401 104 309.401 102.8 309.401 102.8z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M380.801 93.6C380.801 93.6 370.601 86.2 368.601 86.2C366.601 86.2 354.201 76 350.001 76.4C345.801 76.8 333.601 66.8 306.201 75C306.201 75 305.601 73 309.201 72.2C309.201 72.2 315.601 70 316.001 69.4C316.001 69.4 336.201 65.2 343.401 68.8C343.401 68.8 352.601 71.4 358.801 77.6C358.801 77.6 370.001 80.8 373.201 79.8C373.201 79.8 382.001 82 382.401 83.8C382.401 83.8 388.201 86.8 386.401 89.4C386.401 89.4 386.801 91 380.801 93.6z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M368.33 91.491C369.137 92.123 370.156 92.221 370.761 93.03C370.995 93.344 370.706 93.67 370.391 93.767C369.348 94.084 368.292 93.514 367.15 94.102C366.748 94.309 366.106 94.127 365.553 93.978C363.921 93.537 362.092 93.512 360.401 94.2C358.416 93.071 356.056 93.655 353.975 92.654C353.917 92.627 353.695 92.973 353.621 92.946C350.575 91.801 346.832 92.084 344.401 89.8C341.973 89.388 339.616 88.926 337.188 88.246C335.37 87.737 333.961 86.748 332.341 85.916C330.964 85.208 329.507 84.686 327.973 84.314C326.11 83.862 324.279 83.974 322.386 83.454C322.293 83.429 322.101 83.773 322.019 83.746C321.695 83.638 321.405 83.055 321.234 83.108C319.553 83.63 318.065 82.658 316.401 83C315.223 81.776 313.495 82.021 311.949 81.579C308.985 80.731 305.831 82.001 302.801 81C306.914 79.158 311.601 80.39 315.663 78.321C317.991 77.135 320.653 78.237 323.223 77.477C323.71 77.333 324.401 77.131 324.801 77.8C324.935 77.665 325.117 77.426 325.175 77.454C327.625 78.611 329.94 79.885 332.422 80.951C332.763 81.097 333.295 80.865 333.547 81.067C335.067 82.283 337.01 82.18 338.401 83.4C340.099 82.898 341.892 83.278 343.621 82.654C343.698 82.627 343.932 82.968 343.965 82.946C345.095 82.198 346.25 82.469 347.142 82.773C347.48 82.888 348.143 83.135 348.448 83.209C349.574 83.485 350.43 83.965 351.609 84.148C351.723 84.166 351.908 83.826 351.98 83.854C353.103 84.292 354.145 84.236 354.801 85.4C354.936 85.265 355.101 85.027 355.183 85.054C356.21 85.392 356.859 86.147 357.96 86.388C358.445 86.494 359.057 87.12 359.633 87.296C362.025 88.027 363.868 89.556 366.062 90.451C366.821 90.761 367.697 90.995 368.33 91.491z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M291.696 77.261C289.178 75.536 286.81 74.43 284.368 72.644C284.187 72.511 283.827 72.681 283.625 72.559C282.618 71.95 281.73 71.369 280.748 70.673C280.209 70.291 279.388 70.302 278.88 70.044C276.336 68.752 273.707 68.194 271.2 67C271.882 66.362 273.004 66.606 273.6 65.8C273.795 66.08 274.033 66.364 274.386 66.173C276.064 65.269 277.914 65.116 279.59 65.206C281.294 65.298 283.014 65.603 284.789 65.875C285.096 65.922 285.295 66.445 285.618 66.542C287.846 67.205 290.235 66.68 292.354 67.518C293.945 68.147 295.515 68.97 296.754 70.245C297.006 70.505 296.681 70.806 296.401 71C296.789 70.891 297.062 71.097 297.173 71.41C297.257 71.649 297.257 71.951 297.173 72.19C297.061 72.502 296.782 72.603 296.408 72.654C295.001 72.844 296.773 71.464 296.073 71.912C294.8 72.726 295.546 74.132 294.801 75.4C294.521 75.206 294.291 74.988 294.401 74.6C294.635 75.122 294.033 75.412 293.865 75.728C293.48 76.453 292.581 77.868 291.696 77.261z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M259.198 84.609C256.044 83.815 252.994 83.93 249.978 82.654C249.911 82.626 249.688 82.973 249.624 82.946C248.258 82.352 247.34 81.386 246.264 80.34C245.351 79.452 243.693 79.839 242.419 79.352C242.095 79.228 241.892 78.716 241.591 78.677C240.372 78.52 239.445 77.571 238.4 77C240.736 76.205 243.147 76.236 245.609 75.852C245.722 75.834 245.867 76.155 246 76.155C246.136 76.155 246.266 75.934 246.4 75.8C246.595 76.08 246.897 76.406 247.154 76.152C247.702 75.612 248.258 75.802 248.798 75.842C248.942 75.852 249.067 76.155 249.2 76.155C249.336 76.155 249.467 75.844 249.6 75.844C249.736 75.845 249.867 76.155 250 76.155C250.136 76.155 250.266 75.934 250.4 75.8C251.092 76.582 251.977 76.028 252.799 76.207C253.837 76.434 254.104 77.582 255.178 77.88C259.893 79.184 264.03 81.329 268.393 83.416C268.7 83.563 268.91 83.811 268.8 84.2C269.067 84.2 269.38 84.112 269.57 84.244C270.628 84.976 271.669 85.524 272.366 86.622C272.582 86.961 272.253 87.368 272.02 87.316C267.591 86.321 263.585 85.713 259.198 84.609z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M245.338 128.821C243.746 127.602 243.162 125.571 242.034 123.779C241.82 123.439 242.094 123.125 242.411 123.036C242.971 122.877 243.514 123.355 243.923 123.557C245.668 124.419 247.203 125.661 249.2 125.8C251.19 128.034 255.45 128.419 255.457 131.8C255.458 132.659 254.03 131.741 253.6 132.6C251.149 131.597 248.76 131.7 246.38 130.233C245.763 129.852 246.093 129.399 245.338 128.821z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M217.8 76.244C217.935 76.245 224.966 76.478 224.949 76.592C224.904 76.901 217.174 77.95 216.81 77.78C216.646 77.704 209.134 80.134 209 80C209.268 79.865 217.534 76.244 217.8 76.244z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M233.2 86C233.2 86 218.4 87.8 214 89C209.6 90.2 191 97.8 188 99.8C188 99.8 174.6 105.2 157.6 125.2C157.6 125.2 165.2 121.8 167.4 119C167.4 119 181 106.4 180.8 109C180.8 109 193 100.4 192.4 102.6C192.4 102.6 216.8 91.4 214.8 94.6C214.8 94.6 236.4 90 235.4 92C235.4 92 254.2 96.4 251.4 96.6C251.4 96.6 245.6 97.8 252 101.4C252 101.4 248.6 105.8 243.2 101.8C237.8 97.8 240.8 100 235.8 101C235.8 101 233.2 101.8 228.6 97.8C228.6 97.8 223 93.2 214.2 96.8C214.2 96.8 183.6 109.4 181.6 110C181.6 110 178 112.8 175.6 116.4C175.6 116.4 169.8 120.8 166.8 122.2C166.8 122.2 154 133.8 152.8 135.2C152.8 135.2 149.4 140.4 148.6 140.8C148.6 140.8 155 137 157 135C157 135 171 125 176.4 124.2C176.4 124.2 180.8 121.2 181.6 119.8C181.6 119.8 196 110.6 200.2 110.6C200.2 110.6 209.4 115.8 211.8 108.8C211.8 108.8 217.6 107 223.2 108.2C223.2 108.2 226.4 105.6 225.6 103.4C225.6 103.4 227.2 101.6 228.2 105.4C228.2 105.4 231.6 109 236.4 107C236.4 107 240.4 106.8 238.4 109.2C238.4 109.2 234 113 222.2 113.2C222.2 113.2 209.8 113.8 193.4 121.4C193.4 121.4 163.6 131.8 154.4 142.2C154.4 142.2 148 151 142.6 152.2C142.6 152.2 136.8 153 130.8 160.4C130.8 160.4 140.6 154.6 149.6 154.6C149.6 154.6 153.6 152.2 149.8 155.8C149.8 155.8 146.2 163.4 147.8 168.8C147.8 168.8 147.2 174 146.4 175.6C146.4 175.6 138.6 188.4 138.6 190.8C138.6 193.2 139.8 203 140.2 203.6C140.6 204.2 139.2 202 143 204.4C146.8 206.8 149.6 208.4 150.4 211.2C151.2 214 148.4 205.8 148.2 204C148 202.2 143.8 195 144.6 192.6C144.6 192.6 145.6 193.6 146.4 195C146.4 195 145.8 194.4 146.4 190.8C146.4 190.8 147.2 185.6 148.6 182.4C150 179.2 152 175.4 152.4 174.6C152.8 173.8 152.8 168 154.2 170.6L157.6 173.2C157.6 173.2 154.8 170.6 157 168.4C157 168.4 156 162.8 157.8 160.2C157.8 160.2 164.8 151.8 166.4 150.8C168 149.8 166.6 150.2 166.6 150.2C166.6 150.2 172.6 146 166.8 147.6C166.8 147.6 162.8 149.2 159.8 149.2C159.8 149.2 152.2 151.2 156.2 147C160.2 142.8 170.2 137.4 174 137.6L174.8 139.2L186 136.8L184.8 137.6C184.8 137.6 184.6 137.4 188.8 137C193 136.6 198.8 138 200.2 136.2C201.6 134.4 205 133.4 204.6 134.8C204.2 136.2 204 138.2 204 138.2C204 138.2 209 132.4 208.4 134.6C207.8 136.8 199.6 142 198.2 148.2L208.6 140L212.2 137C212.2 137 215.8 139.2 216 137.6C216.2 136 220.8 130.2 222 130.4C223.2 130.6 225.2 127.8 225 130.4C224.8 133 232.4 138.4 232.4 138.4C232.4 138.4 235.6 136.6 237 138C238.4 139.4 242.6 118.2 242.6 118.2L267.6 107.6L311.201 104.2L294.201 97.4L233.2 86z"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M251.4 285C251.4 285 236.4 268.2 228 265.6C228 265.6 214.6 258.8 190 266.6"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M224.8 264.2C224.8 264.2 199.6 256.2 184.2 260.4C184.2 260.4 165.8 262.4 157.4 276.2"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M221.2 263C221.2 263 204.2 255.8 189.4 253.6C189.4 253.6 172.8 251 156.2 258.2C156.2 258.2 144 264.2 138.6 274.4"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M222.2 263.4C222.2 263.4 206.8 252.4 205.8 251C205.8 251 198.8 240 185.8 239.6C185.8 239.6 164.4 240.4 147.2 248.4"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M220.895 254.407C222.437 255.87 249.4 284.8 249.4 284.8C284.6 321.401 256.6 287.2 256.6 287.2C249 282.4 239.8 263.6 239.8 263.6C238.6 260.8 253.8 270.8 253.8 270.8C257.8 271.6 271.4 290.8 271.4 290.8C264.6 288.4 269.4 295.6 269.4 295.6C272.2 297.6 292.601 313.201 292.601 313.201C296.201 317.201 300.201 318.801 300.201 318.801C314.201 313.601 307.801 326.801 307.801 326.801C310.201 333.601 315.801 322.001 315.801 322.001C327.001 305.2 310.601 307.601 310.601 307.601C280.6 310.401 273.8 294.4 273.8 294.4C271.4 292 280.2 294.4 280.2 294.4C288.601 296.4 273 282 273 282C275.4 282 284.6 288.8 284.6 288.8C295.001 298 297.001 296 297.001 296C315.001 287.2 325.401 294.8 325.401 294.8C327.401 296.4 321.801 303.2 323.401 308.401C325.001 313.601 329.801 326.001 329.801 326.001C327.401 327.601 327.801 338.401 327.801 338.401C344.601 361.601 335.001 359.601 335.001 359.601C319.401 359.201 334.201 366.801 334.201 366.801C337.401 368.801 346.201 376.001 346.201 376.001C343.401 374.801 341.801 380.001 341.801 380.001C346.601 384.001 343.801 388.801 343.801 388.801C337.801 390.001 336.601 394.001 336.601 394.001C343.401 402.001 333.401 402.401 333.401 402.401C337.001 406.801 332.201 418.801 332.201 418.801C327.401 418.801 321.001 424.401 321.001 424.401C323.401 429.201 313.001 434.801 313.001 434.801C304.601 436.401 307.401 443.201 307.401 443.201C299.401 449.201 297.001 465.201 297.001 465.201C296.201 475.601 293.801 478.801 299.001 476.801C304.201 474.801 303.401 462.401 303.401 462.401C298.601 446.801 341.401 430.801 341.401 430.801C345.401 429.201 346.201 424.001 346.201 424.001C348.201 424.401 357.001 432.001 357.001 432.001C364.601 443.201 365.001 434.001 365.001 434.001C366.201 430.401 364.601 424.401 364.601 424.401C370.601 402.801 356.601 396.401 356.601 396.401C346.601 362.801 360.601 371.201 360.601 371.201C363.401 376.801 374.201 382.001 374.201 382.001L377.801 379.601C376.201 374.801 384.601 368.801 384.601 368.801C387.401 375.201 393.401 367.201 393.401 367.201C397.001 342.801 409.401 357.201 409.401 357.201C413.401 358.401 414.601 351.601 414.601 351.601C418.201 341.201 414.601 327.601 414.601 327.601C418.201 327.201 427.801 333.201 427.801 333.201C430.601 329.601 421.401 312.801 425.401 315.201C429.401 317.601 433.801 319.201 433.801 319.201C434.601 317.201 424.601 304.801 424.601 304.801C420.201 302 415.001 281.6 415.001 281.6C422.201 285.2 412.201 270 412.201 270C412.201 266.8 418.201 255.6 418.201 255.6C417.401 248.8 418.201 249.2 418.201 249.2C421.001 250.4 429.001 252 422.201 245.6C415.401 239.2 423.001 234.4 423.001 234.4C427.401 231.6 413.801 232 413.801 232C408.601 227.6 409.001 223.6 409.001 223.6C417.001 225.6 402.601 211.2 400.201 207.6C397.801 204 407.401 198.8 407.401 198.8C420.601 195.2 409.001 192 409.001 192C389.401 192.4 400.201 181.6 400.201 181.6C406.201 182 404.601 179.6 404.601 179.6C399.401 178.4 389.801 172 389.801 172C385.801 168.4 389.401 169.2 389.401 169.2C406.201 170.4 377.401 159.2 377.401 159.2C385.401 159.2 367.401 148.8 367.401 148.8C365.401 147.2 362.201 139.6 362.201 139.6C356.201 134.4 351.401 127.6 351.401 127.6C351.001 123.2 346.201 118.4 346.201 118.4C334.601 104.8 329.001 105.2 329.001 105.2C314.201 101.6 309.001 102.4 309.001 102.4L256.2 106.8C229.8 119.6 237.6 140.6 237.6 140.6C244 149 253.2 145.2 253.2 145.2C257.8 139 269.4 141.2 269.4 141.2C289.801 144.4 287.201 140.8 287.201 140.8C284.801 136.2 268.6 130 268.4 129.4C268.2 128.8 259.4 125.4 259.4 125.4C256.4 124.2 252 115 252 115C248.8 111.6 264.6 117.4 264.6 117.4C263.4 118.4 270.8 122.4 270.8 122.4C288.201 121.4 298.801 132.2 298.801 132.2C309.601 148.8 309.801 140.6 309.801 140.6C312.601 131.2 300.801 110 300.801 110C301.201 108 309.401 114.6 309.401 114.6C310.801 112.6 311.601 118.4 311.601 118.4C311.801 120.8 315.601 128.8 315.601 128.8C318.401 141.8 322.001 134.4 322.001 134.4L326.601 143.8C328.001 146.4 322.001 154 322.001 154C321.801 156.8 322.601 156.6 317.001 164.2C311.401 171.8 314.801 176.2 314.801 176.2C313.401 182.8 322.201 182.4 322.201 182.4C324.801 184.6 328.201 184.6 328.201 184.6C330.001 186.6 332.401 186 332.401 186C334.001 182.2 340.201 184.2 340.201 184.2C341.601 181.8 349.801 181.4 349.801 181.4C350.801 178.8 351.201 177.2 354.601 176.6C358.001 176 333.401 133 333.401 133C339.801 132.2 331.601 119.8 331.601 119.8C329.401 113.2 340.801 127.8 343.001 129.2C345.201 130.6 346.201 132.8 344.601 132.6C343.001 132.4 341.201 134.6 342.601 134.8C344.001 135 357.001 150 360.401 160.2C363.801 170.4 369.801 174.4 376.001 180.4C382.201 186.4 381.401 210.6 381.401 210.6C381.001 219.4 387.001 230 387.001 230C389.001 233.8 384.801 252 384.801 252C382.801 254.2 384.201 255 384.201 255C385.201 256.2 392.001 269.4 392.001 269.4C390.201 269.2 393.801 272.8 393.801 272.8C399.001 278.8 392.601 275.8 392.601 275.8C386.601 274.2 393.601 284 393.601 284C394.801 285.8 385.801 281.2 385.801 281.2C376.601 280.6 388.201 287.8 388.201 287.8C396.801 295 385.401 290.6 385.401 290.6C380.801 288.8 384.001 295.6 384.001 295.6C387.201 297.2 404.401 304.2 404.401 304.2C404.801 308.001 401.801 313.001 401.801 313.001C402.201 317.001 400.001 320.401 400.001 320.401C398.801 328.601 398.201 329.401 398.201 329.401C394.001 329.601 386.601 343.401 386.601 343.401C384.801 346.001 374.601 358.001 374.601 358.001C372.601 365.001 354.601 357.801 354.601 357.801C348.001 361.201 350.001 357.801 350.001 357.801C349.601 355.601 354.401 349.601 354.401 349.601C361.401 347.001 358.801 336.201 358.801 336.201C362.801 334.801 351.601 332.001 351.801 330.801C352.001 329.601 357.801 328.201 357.801 328.201C365.801 326.201 361.401 323.801 361.401 323.801C360.801 319.801 363.801 314.201 363.801 314.201C375.401 313.401 363.801 297.2 363.801 297.2C353.001 289.6 352.001 283.8 352.001 283.8C364.601 275.6 356.401 263.2 356.601 259.6C356.801 256 358.001 234.4 358.001 234.4C356.001 228.2 353.001 214.6 353.001 214.6C355.201 209.4 362.601 196.8 362.601 196.8C365.401 192.6 374.201 187.8 372.001 184.8C369.801 181.8 362.001 183.6 362.001 183.6C354.201 182.2 354.801 187.4 354.801 187.4C353.201 188.4 352.401 193.4 352.401 193.4C351.68 201.333 342.801 207.6 342.801 207.6C331.601 213.8 340.801 217.8 340.801 217.8C346.801 224.4 337.001 224.6 337.001 224.6C326.001 222.8 334.201 233 334.201 233C345.001 245.8 342.001 248.6 342.001 248.6C331.801 249.6 344.401 258.8 344.401 258.8C344.401 258.8 343.601 256.8 343.801 258.6C344.001 260.4 347.001 264.6 347.801 266.6C348.601 268.6 344.601 268.8 344.601 268.8C345.201 278.4 329.801 274.2 329.801 274.2C329.801 274.2 329.801 274.2 328.201 274.4C326.601 274.6 315.401 273.8 309.601 271.6C303.801 269.4 297.001 269.4 297.001 269.4C297.001 269.4 293.001 271.2 285.4 271C277.8 270.8 269.8 273.6 269.8 273.6C265.4 273.2 274 268.8 274.2 269C274.4 269.2 280 263.6 272 264.2C250.203 265.835 239.4 255.6 239.4 255.6C237.4 254.2 234.8 251.4 234.8 251.4C224.8 249.4 236.2 263.8 236.2 263.8C237.4 265.2 236 266.2 236 266.2C235.2 264.6 227.4 259.2 227.4 259.2C224.589 258.227 223.226 256.893 220.895 254.407z"/>
+ </g>
+ <g style="fill: #4c0000">
+ <path d="M197 242.8C197 242.8 208.6 248.4 211.2 251.2C213.8 254 227.8 265.4 227.8 265.4C227.8 265.4 222.4 263.4 219.8 261.6C217.2 259.8 206.4 251.6 206.4 251.6C206.4 251.6 202.6 245.6 197 242.8z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M138.991 211.603C139.328 211.455 138.804 208.743 138.6 208.2C137.578 205.474 128.6 204 128.6 204C128.373 205.365 128.318 206.961 128.424 208.599C128.424 208.599 133.292 214.118 138.991 211.603z"/>
+ </g>
+ <g style="fill: #659900">
+ <path d="M138.991 211.403C138.542 211.561 138.976 208.669 138.8 208.2C137.778 205.474 128.6 203.9 128.6 203.9C128.373 205.265 128.318 206.861 128.424 208.499C128.424 208.499 132.692 213.618 138.991 211.403z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M134.6 211.546C133.975 211.546 133.469 210.406 133.469 209C133.469 207.595 133.975 206.455 134.6 206.455C135.225 206.455 135.732 207.595 135.732 209C135.732 210.406 135.225 211.546 134.6 211.546z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M134.6 209z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M89 309.601C89 309.601 83.4 319.601 108.2 313.601C108.2 313.601 122.2 312.401 124.6 310.001C125.8 310.801 134.166 313.734 137 314.401C143.8 316.001 152.2 306 152.2 306C152.2 306 156.8 295.5 159.6 295.5C162.4 295.5 159.2 297.1 159.2 297.1C159.2 297.1 152.6 307.201 153 308.801C153 308.801 147.8 328.801 131.8 329.601C131.8 329.601 115.65 330.551 117 336.401C117 336.401 125.8 334.001 128.2 336.401C128.2 336.401 139 336.001 131 342.401L124.2 354.001C124.2 354.001 124.34 357.919 114.2 354.401C104.4 351.001 94.1 338.101 94.1 338.101C94.1 338.101 78.15 323.551 89 309.601z"/>
+ </g>
+ <g style="fill: #e59999">
+ <path d="M87.8 313.601C87.8 313.601 85.8 323.201 122.6 312.801C122.6 312.801 127 312.801 129.4 313.601C131.8 314.401 143.8 317.201 145.8 316.001C145.8 316.001 138.6 329.601 127 328.001C127 328.001 113.8 329.601 114.2 334.401C114.2 334.401 118.2 341.601 123 344.001C123 344.001 125.8 346.401 125.4 349.601C125 352.801 122.2 354.401 120.2 355.201C118.2 356.001 115 352.801 113.4 352.801C111.8 352.801 103.4 346.401 99 341.601C94.6 336.801 86.2 324.801 86.6 322.001C87 319.201 87.8 313.601 87.8 313.601z"/>
+ </g>
+ <g style="fill: #b26565">
+ <path d="M91 331.051C93.6 335.001 96.8 339.201 99 341.601C103.4 346.401 111.8 352.801 113.4 352.801C115 352.801 118.2 356.001 120.2 355.201C122.2 354.401 125 352.801 125.4 349.601C125.8 346.401 123 344.001 123 344.001C119.934 342.468 117.194 338.976 115.615 336.653C115.615 336.653 115.8 339.201 110.6 338.401C105.4 337.601 100.2 334.801 98.6 331.601C97 328.401 94.6 326.001 96.2 329.601C97.8 333.201 100.2 336.801 101.8 337.201C103.4 337.601 103 338.801 100.6 338.401C98.2 338.001 95.4 337.601 91 332.401z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M88.4 310.001C88.4 310.001 90.2 296.4 91.4 292.4C91.4 292.4 90.6 285.6 93 281.4C95.4 277.2 97.4 271 100.4 265.6C103.4 260.2 103.6 256.2 107.6 254.6C111.6 253 117.6 244.4 120.4 243.4C123.2 242.4 123 243.2 123 243.2C123 243.2 129.8 228.4 143.4 232.4C143.4 232.4 127.2 229.6 143 220.2C143 220.2 138.2 221.3 141.5 214.3C143.701 209.632 143.2 216.4 132.2 228.2C132.2 228.2 127.2 236.8 122 239.8C116.8 242.8 104.8 249.8 103.6 253.6C102.4 257.4 99.2 263.2 97.2 264.8C95.2 266.4 92.4 270.6 92 274C92 274 90.8 278 89.4 279.2C88 280.4 87.8 283.6 87.8 285.6C87.8 287.6 85.8 290.4 86 292.8C86 292.8 86.8 311.801 86.4 313.801L88.4 310.001z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M79.8 314.601C79.8 314.601 77.8 313.201 73.4 319.201C73.4 319.201 80.7 352.201 80.7 353.601C80.7 353.601 81.8 351.501 80.5 344.301C79.2 337.101 78.3 324.401 78.3 324.401L79.8 314.601z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M101.4 254C101.4 254 83.8 257.2 84.2 286.4L83.4 311.201C83.4 311.201 82.2 285.6 81 284C79.8 282.4 83.8 271.2 80.6 277.2C80.6 277.2 66.6 291.2 74.6 312.401C74.6 312.401 76.1 315.701 73.1 311.101C73.1 311.101 68.5 298.5 69.6 292.1C69.6 292.1 69.8 289.9 71.7 287.1C71.7 287.1 80.3 275.4 83 273.1C83 273.1 84.8 258.7 100.2 253.5C100.2 253.5 105.9 251.2 101.4 254z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M240.8 187.8C241.46 187.446 241.451 186.476 242.031 186.303C243.18 185.959 243.344 184.892 243.862 184.108C244.735 182.789 244.928 181.256 245.51 179.765C245.782 179.065 245.809 178.11 245.496 177.45C244.322 174.969 243.62 172.52 242.178 170.094C241.91 169.644 241.648 168.85 241.447 168.252C240.984 166.868 239.727 165.877 238.867 164.557C238.579 164.116 239.104 163.191 238.388 163.107C237.491 163.002 236.042 162.422 235.809 163.448C235.221 166.035 236.232 168.558 237.2 171C236.418 171.692 236.752 172.613 236.904 173.38C237.614 176.986 236.416 180.338 235.655 183.812C235.632 183.916 235.974 184.114 235.946 184.176C234.724 186.862 233.272 189.307 231.453 191.688C230.695 192.68 229.823 193.596 229.326 194.659C228.958 195.446 228.55 196.412 228.8 197.4C225.365 200.18 223.115 204.025 220.504 207.871C220.042 208.551 220.333 209.76 220.884 210.029C221.697 210.427 222.653 209.403 223.123 208.557C223.512 207.859 223.865 207.209 224.356 206.566C224.489 206.391 224.31 205.972 224.445 205.851C227.078 203.504 228.747 200.568 231.2 198.2C233.15 197.871 234.687 196.873 236.435 195.86C236.743 195.681 237.267 195.93 237.557 195.735C239.31 194.558 239.308 192.522 239.414 190.612C239.464 189.728 239.66 188.411 240.8 187.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M231.959 183.334C232.083 183.257 231.928 182.834 232.037 182.618C232.199 182.294 232.602 182.106 232.764 181.782C232.873 181.566 232.71 181.186 232.846 181.044C235.179 178.597 235.436 175.573 234.4 172.6C235.424 171.98 235.485 170.718 235.06 169.871C234.207 168.171 234.014 166.245 233.039 164.702C232.237 163.433 230.659 162.189 229.288 163.492C228.867 163.892 228.546 164.679 228.824 165.391C228.888 165.554 229.173 165.7 229.146 165.782C229.039 166.106 228.493 166.33 228.487 166.602C228.457 168.098 227.503 169.609 228.133 170.938C228.905 172.567 229.724 174.424 230.4 176.2C229.166 178.316 230.199 180.765 228.446 182.642C228.31 182.788 228.319 183.174 228.441 183.376C228.733 183.862 229.139 184.268 229.625 184.56C229.827 184.681 230.175 184.683 230.375 184.559C230.953 184.197 231.351 183.71 231.959 183.334z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M294.771 173.023C296.16 174.815 296.45 177.61 294.401 179C294.951 182.309 298.302 180.33 300.401 179.8C300.292 179.412 300.519 179.068 300.802 179.063C301.859 179.048 302.539 178.016 303.601 178.2C304.035 176.643 305.673 175.941 306.317 174.561C308.043 170.866 307.452 166.593 304.868 163.347C304.666 163.093 304.883 162.576 304.759 162.214C304.003 160.003 301.935 159.688 300.001 159C298.824 155.125 298.163 151.094 296.401 147.4C294.787 147.15 294.089 145.411 292.752 144.691C291.419 143.972 290.851 145.551 290.892 146.597C290.899 146.802 291.351 147.026 291.181 147.391C291.105 147.555 290.845 147.666 290.845 147.8C290.846 147.935 291.067 148.066 291.201 148.2C290.283 149.02 288.86 149.497 288.565 150.642C287.611 154.352 290.184 157.477 291.852 160.678C292.443 161.813 291.707 163.084 290.947 164.292C290.509 164.987 290.617 166.114 290.893 166.97C291.645 169.301 293.236 171.04 294.771 173.023z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M257.611 191.409C256.124 193.26 252.712 195.829 255.629 197.757C255.823 197.886 256.193 197.89 256.366 197.756C258.387 196.191 260.39 195.288 262.826 194.706C262.95 194.677 263.224 195.144 263.593 194.983C265.206 194.28 267.216 194.338 268.4 193C272.167 193.224 275.732 192.108 279.123 190.8C280.284 190.352 281.554 189.793 282.755 189.291C284.131 188.715 285.335 187.787 286.447 186.646C286.58 186.51 286.934 186.6 287.201 186.6C287.161 185.737 288.123 185.61 288.37 184.988C288.462 184.756 288.312 184.36 288.445 184.258C290.583 182.628 291.503 180.61 290.334 178.233C290.049 177.655 289.8 177.037 289.234 176.561C288.149 175.65 287.047 176.504 286 176.2C285.841 176.828 285.112 176.656 284.726 176.854C283.867 177.293 282.534 176.708 281.675 177.146C280.313 177.841 279.072 178.01 277.65 178.387C277.338 178.469 276.56 178.373 276.4 179C276.266 178.866 276.118 178.632 276.012 178.654C274.104 179.05 272.844 179.264 271.543 180.956C271.44 181.089 270.998 180.91 270.839 181.045C269.882 181.853 269.477 183.087 268.376 183.759C268.175 183.882 267.823 183.714 267.629 183.843C266.983 184.274 266.616 184.915 265.974 185.362C265.645 185.591 265.245 185.266 265.277 185.01C265.522 183.063 266.175 181.276 265.6 179.4C267.677 176.88 270.194 174.931 272 172.2C272.015 170.034 272.707 167.888 272.594 165.811C272.584 165.618 272.296 164.885 272.17 164.538C271.858 163.684 272.764 162.618 271.92 161.894C270.516 160.691 269.224 161.567 268.4 163C266.562 163.39 264.496 164.083 262.918 162.849C261.911 162.062 261.333 161.156 260.534 160.1C259.549 158.798 259.884 157.362 259.954 155.798C259.96 155.67 259.645 155.534 259.645 155.4C259.646 155.265 259.866 155.134 260 155C259.294 154.374 259.019 153.316 258 153C258.305 151.908 257.629 151.024 256.758 150.722C254.763 150.031 253.086 151.943 251.194 152.016C250.68 152.035 250.213 150.997 249.564 150.672C249.132 150.456 248.428 150.423 248.066 150.689C247.378 151.193 246.789 151.307 246.031 151.512C244.414 151.948 243.136 153.042 241.656 153.897C240.171 154.754 239.216 156.191 238.136 157.511C237.195 158.663 237.059 161.077 238.479 161.577C240.322 162.227 241.626 159.524 243.592 159.85C243.904 159.901 244.11 160.212 244 160.6C244.389 160.709 244.607 160.48 244.8 160.2C245.658 161.219 246.822 161.556 247.76 162.429C248.73 163.333 250.476 162.915 251.491 163.912C253.02 165.414 252.461 168.095 254.4 169.4C253.814 170.713 253.207 171.99 252.872 173.417C252.59 174.623 253.584 175.82 254.795 175.729C256.053 175.635 256.315 174.876 256.8 173.8C257.067 174.067 257.536 174.364 257.495 174.58C257.038 176.967 256.011 178.96 255.553 181.391C255.494 181.708 255.189 181.91 254.8 181.8C254.332 185.949 250.28 188.343 247.735 191.508C247.332 192.01 247.328 193.259 247.737 193.662C249.14 195.049 251.1 193.503 252.8 193C253.013 191.794 253.872 190.852 255.204 190.908C255.46 190.918 255.695 190.376 256.019 190.246C256.367 190.108 256.869 190.332 257.155 190.134C258.884 188.939 260.292 187.833 262.03 186.644C262.222 186.513 262.566 186.672 262.782 186.564C263.107 186.402 263.294 186.015 263.617 185.83C263.965 185.63 264.207 185.92 264.4 186.2C263.754 186.549 263.75 187.506 263.168 187.708C262.393 187.976 261.832 188.489 261.158 188.936C260.866 189.129 260.207 188.881 260.103 189.06C259.505 190.088 258.321 190.526 257.611 191.409z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M202.2 142C202.2 142 192.962 139.128 181.8 164.8C181.8 164.8 179.4 170 177 172C174.6 174 163.4 177.6 161.4 181.6L151 197.6C151 197.6 165.8 181.6 169 179.2C169 179.2 177 170.8 173.8 177.6C173.8 177.6 159.8 188.4 161 197.6C161 197.6 155.4 212 154.6 214C154.6 214 170.6 182 173 180.8C175.4 179.6 176.6 179.6 175.4 183.2C174.2 186.8 173.8 203.2 171 205.2C171 205.2 179 184.8 178.2 181.6C178.2 181.6 181.4 178 183.8 183.2L182.6 199.2L187 211.2C187 211.2 184.6 200 186.2 184.4C186.2 184.4 184.2 174 188.2 179.6C192.2 185.2 201.8 191.2 201.8 196C201.8 196 196.6 178.4 187.4 173.6L183.4 179.6L182.2 177.6C182.2 177.6 178.6 176.8 183 170C187.4 163.2 187 162.4 187 162.4C187 162.4 193.4 169.6 195 169.6C195 169.6 208.2 162 209.4 186.4C209.4 186.4 216.2 172 207 165.2C207 165.2 192.2 163.2 193.4 158L200.6 145.6C204.2 140.4 202.6 143.2 202.6 143.2z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M182.2 158.4C182.2 158.4 169.4 158.4 166.2 163.6L159 173.2C159 173.2 176.2 163.2 180.2 162C184.2 160.8 182.2 158.4 182.2 158.4z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M142.2 164.8C142.2 164.8 140.2 166 139.8 168.8C139.4 171.6 137 172 137.8 174.8C138.6 177.6 140.6 180 140.6 176C140.6 172 142.2 170 143 168.8C143.8 167.6 145.4 163.2 142.2 164.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M133.4 226C133.4 226 125 222 121.8 218.4C118.6 214.8 119.052 219.966 114.2 219.6C108.353 219.159 109.4 203.2 109.4 203.2L105.4 210.8C105.4 210.8 104.2 225.2 112.2 222.8C116.107 221.628 117.4 223.2 115.8 224C114.2 224.8 121.4 225.2 118.6 226.8C115.8 228.4 130.2 223.2 127.8 233.6L133.4 226z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M120.8 240.4C120.8 240.4 105.4 244.8 101.8 235.2C101.8 235.2 97 237.6 99.2 240.6C101.4 243.6 102.6 244 102.6 244C102.6 244 108 245.2 107.4 246C106.8 246.8 104.4 250.2 104.4 250.2C104.4 250.2 114.6 244.2 120.8 240.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M349.201 318.601C348.774 320.735 347.103 321.536 345.201 322.201C343.284 321.243 340.686 318.137 338.801 320.201C338.327 319.721 337.548 319.661 337.204 318.999C336.739 318.101 337.011 317.055 336.669 316.257C336.124 314.985 335.415 313.619 335.601 312.201C337.407 311.489 338.002 309.583 337.528 307.82C337.459 307.563 337.03 307.366 337.23 307.017C337.416 306.694 337.734 306.467 338.001 306.2C337.866 306.335 337.721 306.568 337.61 306.548C337 306.442 337.124 305.805 337.254 305.418C337.839 303.672 339.853 303.408 341.201 304.6C341.457 304.035 341.966 304.229 342.401 304.2C342.351 303.621 342.759 303.094 342.957 302.674C343.475 301.576 345.104 302.682 345.901 302.07C346.977 301.245 348.04 300.546 349.118 301.149C350.927 302.162 352.636 303.374 353.835 305.115C354.41 305.949 354.65 307.23 354.592 308.188C354.554 308.835 353.173 308.483 352.83 309.412C352.185 311.16 354.016 311.679 354.772 313.017C354.97 313.366 354.706 313.67 354.391 313.768C353.98 313.896 353.196 313.707 353.334 314.16C354.306 317.353 351.55 318.031 349.201 318.601z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M339.6 338.201C339.593 336.463 337.992 334.707 339.201 333.001C339.336 333.135 339.467 333.356 339.601 333.356C339.736 333.356 339.867 333.135 340.001 333.001C341.496 335.217 345.148 336.145 345.006 338.991C344.984 339.438 343.897 340.356 344.801 341.001C342.988 342.349 342.933 344.719 342.001 346.601C340.763 346.315 339.551 345.952 338.401 345.401C338.753 343.915 338.636 342.231 339.456 340.911C339.89 340.213 339.603 339.134 339.6 338.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M173.4 329.201C173.4 329.201 156.542 339.337 170.6 324.001C179.4 314.401 189.4 308.801 189.4 308.801C189.4 308.801 199.8 304.4 203.4 303.2C207 302 222.2 296.8 225.4 296.4C228.6 296 238.2 292 245 296C251.8 300 259.8 304.4 259.8 304.4C259.8 304.4 243.4 296 239.8 298.4C236.2 300.8 229 300.4 223 303.6C223 303.6 208.2 308.001 205 310.001C201.8 312.001 191.4 323.601 189.8 322.801C188.2 322.001 190.2 321.601 191.4 318.801C192.6 316.001 190.6 314.401 182.6 320.801C174.6 327.201 173.4 329.201 173.4 329.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M180.805 323.234C180.805 323.234 182.215 310.194 190.693 311.859C190.693 311.859 198.919 307.689 201.641 305.721C201.641 305.721 209.78 304.019 211.09 303.402C229.569 294.702 244.288 299.221 244.835 298.101C245.381 296.982 265.006 304.099 268.615 308.185C269.006 308.628 258.384 302.588 248.686 300.697C240.413 299.083 218.811 300.944 207.905 306.48C204.932 307.989 195.987 313.773 193.456 313.662C190.925 313.55 180.805 323.234 180.805 323.234z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M177 348.801C177 348.801 161.8 346.401 178.6 344.801C178.6 344.801 196.6 342.801 200.6 337.601C200.6 337.601 214.2 328.401 217 328.001C219.8 327.601 249.8 320.401 250.2 318.001C250.6 315.601 256.2 315.601 257.8 316.401C259.4 317.201 258.6 318.401 255.8 319.201C253 320.001 221.8 336.401 215.4 337.601C209 338.801 197.4 346.401 192.6 347.601C187.8 348.801 177 348.801 177 348.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M196.52 341.403C196.52 341.403 187.938 340.574 196.539 339.755C196.539 339.755 205.355 336.331 207.403 333.668C207.403 333.668 214.367 328.957 215.8 328.753C217.234 328.548 231.194 324.861 231.399 323.633C231.604 322.404 265.67 309.823 270.09 313.013C273.001 315.114 263.1 313.437 253.466 317.847C252.111 318.467 218.258 333.054 214.981 333.668C211.704 334.283 205.765 338.174 203.307 338.788C200.85 339.403 196.52 341.403 196.52 341.403z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M188.6 343.601C188.6 343.601 193.8 343.201 192.6 344.801C191.4 346.401 189 345.601 189 345.601L188.6 343.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M181.4 345.201C181.4 345.201 186.6 344.801 185.4 346.401C184.2 348.001 181.8 347.201 181.8 347.201L181.4 345.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M171 346.801C171 346.801 176.2 346.401 175 348.001C173.8 349.601 171.4 348.801 171.4 348.801L171 346.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M163.4 347.601C163.4 347.601 168.6 347.201 167.4 348.801C166.2 350.401 163.8 349.601 163.8 349.601L163.4 347.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M201.8 308.001C201.8 308.001 206.2 308.001 205 309.601C203.8 311.201 200.6 310.801 200.6 310.801L201.8 308.001z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M191.8 313.601C191.8 313.601 198.306 311.46 195.8 314.801C194.6 316.401 192.2 315.601 192.2 315.601L191.8 313.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M180.6 318.401C180.6 318.401 185.8 318.001 184.6 319.601C183.4 321.201 181 320.401 181 320.401L180.6 318.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M173 324.401C173 324.401 178.2 324.001 177 325.601C175.8 327.201 173.4 326.401 173.4 326.401L173 324.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M166.2 329.201C166.2 329.201 171.4 328.801 170.2 330.401C169 332.001 166.6 331.201 166.6 331.201L166.2 329.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M205.282 335.598C205.282 335.598 212.203 335.066 210.606 337.195C209.009 339.325 205.814 338.26 205.814 338.26L205.282 335.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M215.682 330.798C215.682 330.798 222.603 330.266 221.006 332.395C219.409 334.525 216.214 333.46 216.214 333.46L215.682 330.798z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M226.482 326.398C226.482 326.398 233.403 325.866 231.806 327.995C230.209 330.125 227.014 329.06 227.014 329.06L226.482 326.398z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M236.882 321.598C236.882 321.598 243.803 321.066 242.206 323.195C240.609 325.325 237.414 324.26 237.414 324.26L236.882 321.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M209.282 303.598C209.282 303.598 216.203 303.066 214.606 305.195C213.009 307.325 209.014 307.06 209.014 307.06L209.282 303.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M219.282 300.398C219.282 300.398 226.203 299.866 224.606 301.995C223.009 304.125 218.614 303.86 218.614 303.86L219.282 300.398z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M196.6 340.401C196.6 340.401 201.8 340.001 200.6 341.601C199.4 343.201 197 342.401 197 342.401L196.6 340.401z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M123.4 241.2C123.4 241.2 119 250 118.6 253.2C118.6 253.2 119.4 244.4 120.6 242.4C121.8 240.4 123.4 241.2 123.4 241.2z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M105 255.2C105 255.2 101.8 269.6 102.2 272.4C102.2 272.4 101 260.8 101.4 259.6C101.8 258.4 105 255.2 105 255.2z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M125.8 180.6L125.6 183.8L123.4 184C123.4 184 137.6 196.6 138.2 204.2C138.2 204.2 139 196 125.8 180.6z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M129.784 181.865C129.353 181.449 129.572 180.704 129.164 180.444C128.355 179.928 130.462 179.871 130.234 179.155C129.851 177.949 130.038 177.928 129.916 176.652C129.859 176.054 130.447 174.514 130.832 174.074C132.278 172.422 130.954 169.49 132.594 167.939C132.898 167.65 133.274 167.098 133.559 166.68C134.218 165.717 135.402 165.229 136.352 164.401C136.67 164.125 136.469 163.298 137.038 163.39C137.752 163.505 138.993 163.375 138.948 164.216C138.835 166.336 137.506 168.056 136.226 169.724C136.677 170.428 136.219 171.063 135.935 171.62C134.6 174.24 134.789 177.081 134.615 179.921C134.61 180.006 134.303 180.084 134.311 180.137C134.664 182.472 135.248 184.671 136.127 186.9C136.493 187.83 136.964 188.725 137.114 189.652C137.225 190.338 137.328 191.171 136.92 191.876C138.955 194.766 137.646 197.417 138.815 200.948C139.022 201.573 140.714 203.487 140.251 203.326C137.738 202.455 137.626 202.057 137.449 201.304C137.303 200.681 136.973 199.304 136.736 198.702C136.672 198.538 136.501 196.654 136.423 196.532C134.91 194.15 136.268 194.326 134.898 191.968C133.47 191.288 132.504 190.184 131.381 189.022C131.183 188.818 132.326 188.094 132.145 187.881C131.053 186.592 129.9 185.825 130.236 184.332C130.391 183.642 130.528 182.585 129.784 181.865z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M126.2 183.6C126.2 183.6 126.6 190.4 129 192C131.4 193.6 130.2 192.8 127 191.6C123.8 190.4 125 189.6 125 189.6C125 189.6 122.2 190 124.6 192C127 194 130.6 196.4 129 196.4C127.4 196.4 119.8 192.4 119.8 189.6C119.8 186.8 118.8 182.7 118.8 182.7C118.8 182.7 119.9 181.9 124.7 182C124.7 182 126.1 182.7 126.2 183.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M125.4 202.2C125.4 202.2 116.88 199.409 98.4 202.8C98.4 202.8 107.431 200.722 126.2 203C136.5 204.25 125.4 202.2 125.4 202.2z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M127.498 202.129C127.498 202.129 119.252 198.611 100.547 200.392C100.547 200.392 109.725 199.103 128.226 202.995C138.38 205.131 127.498 202.129 127.498 202.129z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M129.286 202.222C129.286 202.222 121.324 198.101 102.539 198.486C102.539 198.486 111.787 197.882 129.948 203.14C139.914 206.025 129.286 202.222 129.286 202.222z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M130.556 202.445C130.556 202.445 123.732 198.138 106.858 197.04C106.858 197.04 115.197 197.21 131.078 203.319C139.794 206.672 130.556 202.445 130.556 202.445z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M245.84 212.961C245.84 212.961 244.91 213.605 245.124 212.424C245.339 211.243 273.547 198.073 277.161 198.323C277.161 198.323 246.913 211.529 245.84 212.961z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M242.446 213.6C242.446 213.6 241.57 214.315 241.691 213.121C241.812 211.927 268.899 196.582 272.521 196.548C272.521 196.548 243.404 212.089 242.446 213.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M239.16 214.975C239.16 214.975 238.332 215.747 238.374 214.547C238.416 213.348 258.233 197.851 268.045 195.977C268.045 195.977 250.015 204.104 239.16 214.975z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M236.284 216.838C236.284 216.838 235.539 217.532 235.577 216.453C235.615 215.373 253.449 201.426 262.28 199.74C262.28 199.74 246.054 207.054 236.284 216.838z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M204.6 364.801C204.6 364.801 189.4 362.401 206.2 360.801C206.2 360.801 224.2 358.801 228.2 353.601C228.2 353.601 241.8 344.401 244.6 344.001C247.4 343.601 263.8 340.001 264.2 337.601C264.6 335.201 270.6 332.801 272.2 333.601C273.8 334.401 273.8 343.601 271 344.401C268.2 345.201 249.4 352.401 243 353.601C236.6 354.801 225 362.401 220.2 363.601C215.4 364.801 204.6 364.801 204.6 364.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M277.6 327.401C277.6 327.401 274.6 329.001 273.4 331.601C273.4 331.601 267 342.201 252.8 345.401C252.8 345.401 229.8 354.401 222 356.401C222 356.401 208.6 361.401 201.2 360.601C201.2 360.601 194.2 360.801 200.4 362.401C200.4 362.401 220.6 360.401 224 358.601C224 358.601 239.6 353.401 242.6 350.801C245.6 348.201 263.8 343.201 266 341.201C268.2 339.201 278 330.801 277.6 327.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M218.882 358.911C218.882 358.911 224.111 358.685 222.958 360.234C221.805 361.784 219.357 360.91 219.357 360.91L218.882 358.911z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M211.68 360.263C211.68 360.263 216.908 360.037 215.756 361.586C214.603 363.136 212.155 362.263 212.155 362.263L211.68 360.263z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M201.251 361.511C201.251 361.511 206.48 361.284 205.327 362.834C204.174 364.383 201.726 363.51 201.726 363.51L201.251 361.511z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M193.617 362.055C193.617 362.055 198.846 361.829 197.693 363.378C196.54 364.928 194.092 364.054 194.092 364.054L193.617 362.055z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M235.415 351.513C235.415 351.513 242.375 351.212 240.84 353.274C239.306 355.336 236.047 354.174 236.047 354.174L235.415 351.513z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M245.73 347.088C245.73 347.088 251.689 343.787 251.155 348.849C250.885 351.405 246.362 349.749 246.362 349.749L245.73 347.088z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M254.862 344.274C254.862 344.274 262.021 340.573 260.287 346.035C259.509 348.485 255.493 346.935 255.493 346.935L254.862 344.274z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M264.376 339.449C264.376 339.449 268.735 334.548 269.801 341.21C270.207 343.748 265.008 342.11 265.008 342.11L264.376 339.449z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M226.834 355.997C226.834 355.997 232.062 355.77 230.91 357.32C229.757 358.869 227.308 357.996 227.308 357.996L226.834 355.997z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M262.434 234.603C262.434 234.603 261.708 235.268 261.707 234.197C261.707 233.127 279.191 219.863 288.034 218.479C288.034 218.479 271.935 225.208 262.434 234.603z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M265.4 298.4C265.4 298.4 287.401 320.801 296.601 324.401C296.601 324.401 305.801 335.601 301.801 361.601C301.801 361.601 298.601 369.201 295.401 348.401C295.401 348.401 298.601 323.201 287.401 339.201C287.401 339.201 279 329.301 285.4 329.601C285.4 329.601 288.601 331.601 289.001 330.001C289.401 328.401 281.4 314.801 264.2 300.4C247 286 265.4 298.4 265.4 298.4z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M207 337.201C207 337.201 206.8 335.401 208.6 336.201C210.4 337.001 304.601 343.201 336.201 367.201C336.201 367.201 291.001 344.001 207 337.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M217.4 332.801C217.4 332.801 217.2 331.001 219 331.801C220.8 332.601 357.401 331.601 381.001 364.001C381.001 364.001 359.001 338.801 217.4 332.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M229 328.801C229 328.801 228.8 327.001 230.6 327.801C232.4 328.601 405.801 315.601 429.401 348.001C429.401 348.001 419.801 322.401 229 328.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M239 324.001C239 324.001 238.8 322.201 240.6 323.001C242.4 323.801 364.601 285.2 388.201 317.601C388.201 317.601 374.801 293 239 324.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M181 346.801C181 346.801 180.8 345.001 182.6 345.801C184.4 346.601 202.2 348.801 204.2 387.601C204.2 387.601 197 345.601 181 346.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M172.2 348.401C172.2 348.401 172 346.601 173.8 347.401C175.6 348.201 189.8 343.601 187 382.401C187 382.401 188.2 347.201 172.2 348.401z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M164.2 348.801C164.2 348.801 164 347.001 165.8 347.801C167.6 348.601 183 349.201 170.6 371.601C170.6 371.601 180.2 347.601 164.2 348.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M211.526 304.465C211.526 304.465 211.082 306.464 212.631 305.247C228.699 292.622 261.141 233.72 316.826 228.086C316.826 228.086 278.518 215.976 211.526 304.465z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M222.726 302.665C222.726 302.665 221.363 301.472 223.231 300.847C225.099 300.222 337.541 227.72 376.826 235.686C376.826 235.686 349.719 228.176 222.726 302.665z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M201.885 308.767C201.885 308.767 201.376 310.366 203.087 309.39C212.062 304.27 215.677 247.059 259.254 245.804C259.254 245.804 226.843 231.09 201.885 308.767z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M181.962 319.793C181.962 319.793 180.885 321.079 182.838 320.825C193.084 319.493 214.489 278.222 258.928 283.301C258.928 283.301 226.962 268.955 181.962 319.793z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M193.2 313.667C193.2 313.667 192.389 315.136 194.258 314.511C204.057 311.237 217.141 266.625 261.729 263.078C261.729 263.078 227.603 255.135 193.2 313.667z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M174.922 324.912C174.922 324.912 174.049 325.954 175.631 325.748C183.93 324.669 201.268 291.24 237.264 295.354C237.264 295.354 211.371 283.734 174.922 324.912z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M167.323 330.821C167.323 330.821 166.318 331.866 167.909 331.748C172.077 331.439 202.715 298.36 221.183 313.862C221.183 313.862 209.168 295.139 167.323 330.821z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M236.855 298.898C236.855 298.898 235.654 297.543 237.586 297.158C239.518 296.774 360.221 239.061 398.184 251.927C398.184 251.927 372.243 241.053 236.855 298.898z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M203.4 363.201C203.4 363.201 203.2 361.401 205 362.201C206.8 363.001 222.2 363.601 209.8 386.001C209.8 386.001 219.4 362.001 203.4 363.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M213.8 361.601C213.8 361.601 213.6 359.801 215.4 360.601C217.2 361.401 235 363.601 237 402.401C237 402.401 229.8 360.401 213.8 361.601z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M220.6 360.001C220.6 360.001 220.4 358.201 222.2 359.001C224 359.801 248.6 363.201 272.2 395.601C272.2 395.601 236.6 358.801 220.6 360.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M228.225 357.972C228.225 357.972 227.788 356.214 229.678 356.768C231.568 357.322 252.002 355.423 290.099 389.599C290.099 389.599 243.924 354.656 228.225 357.972z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M238.625 353.572C238.625 353.572 238.188 351.814 240.078 352.368C241.968 352.922 276.802 357.423 328.499 392.399C328.499 392.399 254.324 350.256 238.625 353.572z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M198.2 342.001C198.2 342.001 198 340.201 199.8 341.001C201.6 341.801 255 344.401 285.4 371.201C285.4 371.201 250.499 346.426 198.2 342.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M188.2 346.001C188.2 346.001 188 344.201 189.8 345.001C191.6 345.801 216.2 349.201 239.8 381.601C239.8 381.601 204.2 344.801 188.2 346.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M249.503 348.962C249.503 348.962 248.938 347.241 250.864 347.655C252.79 348.068 287.86 350.004 341.981 381.098C341.981 381.098 264.317 346.704 249.503 348.962z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M257.903 346.562C257.903 346.562 257.338 344.841 259.264 345.255C261.19 345.668 296.26 347.604 350.381 378.698C350.381 378.698 273.317 343.904 257.903 346.562z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M267.503 341.562C267.503 341.562 266.938 339.841 268.864 340.255C270.79 340.668 313.86 345.004 403.582 379.298C403.582 379.298 282.917 338.904 267.503 341.562z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M156.2 348.401C156.2 348.401 161.4 348.001 160.2 349.601C159 351.201 156.6 350.401 156.6 350.401L156.2 348.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M187 362.401C187 362.401 192.2 362.001 191 363.601C189.8 365.201 187.4 364.401 187.4 364.401L187 362.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M178.2 362.001C178.2 362.001 183.4 361.601 182.2 363.201C181 364.801 178.6 364.001 178.6 364.001L178.2 362.001z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M82.831 350.182C82.831 350.182 87.876 351.505 86.218 352.624C84.561 353.744 82.554 352.202 82.554 352.202L82.831 350.182z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M84.831 340.582C84.831 340.582 89.876 341.905 88.218 343.024C86.561 344.144 84.554 342.602 84.554 342.602L84.831 340.582z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M77.631 336.182C77.631 336.182 82.676 337.505 81.018 338.624C79.361 339.744 77.354 338.202 77.354 338.202L77.631 336.182z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M157.4 411.201C157.4 411.201 155.8 411.201 151.8 413.201C149.8 413.201 138.6 416.801 133 426.801C133 426.801 145.4 417.201 157.4 411.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M245.116 503.847C245.257 504.105 245.312 504.525 245.604 504.542C246.262 504.582 247.495 504.883 247.37 504.247C246.522 499.941 245.648 495.004 241.515 493.197C240.876 492.918 239.434 493.331 239.36 494.215C239.233 495.739 239.116 497.088 239.425 498.554C239.725 499.975 241.883 499.985 242.8 498.601C243.736 500.273 244.168 502.116 245.116 503.847z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M234.038 508.581C234.786 509.994 234.659 511.853 236.074 512.416C236.814 512.71 238.664 511.735 238.246 510.661C237.444 508.6 237.056 506.361 235.667 504.55C235.467 504.288 235.707 503.755 235.547 503.427C234.953 502.207 233.808 501.472 232.4 501.801C231.285 504.004 232.433 506.133 233.955 507.842C234.091 507.994 233.925 508.37 234.038 508.581z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M194.436 503.391C194.328 503.014 194.29 502.551 194.455 502.23C194.986 501.197 195.779 500.075 195.442 499.053C195.094 497.997 193.978 498.179 193.328 498.748C192.193 499.742 192.144 501.568 191.453 502.927C191.257 503.313 191.308 503.886 190.867 504.277C190.393 504.698 189.953 506.222 190.049 506.793C190.102 507.106 189.919 517.014 190.141 516.751C190.76 516.018 193.81 506.284 193.879 505.392C193.936 504.661 194.668 504.196 194.436 503.391z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M168.798 496.599C171.432 494.1 174.222 491.139 173.78 487.427C173.664 486.451 171.889 486.978 171.702 487.824C170.9 491.449 168.861 494.11 166.293 496.502C164.097 498.549 162.235 504.893 162 505.401C165.697 500.145 167.954 497.399 168.798 496.599z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M155.224 490.635C155.747 490.265 155.445 489.774 155.662 489.442C156.615 487.984 157.916 486.738 157.934 485C157.937 484.723 157.559 484.414 157.224 484.638C156.947 484.822 156.605 484.952 156.497 485.082C154.467 487.531 153.067 490.202 151.624 493.014C151.441 493.371 150.297 497.862 150.61 497.973C150.849 498.058 152.569 493.877 152.779 493.763C154.042 493.077 154.054 491.462 155.224 490.635z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M171.957 510.179C172.401 509.31 173.977 508.108 173.864 507.219C173.746 506.291 174.214 504.848 173.302 505.536C172.045 506.484 168.596 507.833 168.326 513.641C168.3 514.212 171.274 511.519 171.957 510.179z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M186.4 493.001C186.8 492.333 187.508 492.806 187.967 492.543C188.615 492.171 189.226 491.613 189.518 490.964C190.488 488.815 192.257 486.995 192.4 484.601C190.909 483.196 190.23 485.236 189.6 486.201C188.277 484.554 187.278 486.428 185.978 486.947C185.908 486.975 185.695 486.628 185.62 486.655C184.443 487.095 183.763 488.176 182.765 488.957C182.594 489.091 182.189 488.911 182.042 489.047C181.39 489.65 180.417 489.975 180.137 490.657C179.027 493.364 175.887 495.459 174 503.001C174.381 503.91 178.512 496.359 178.999 495.661C179.835 494.465 179.953 497.322 181.229 496.656C181.28 496.629 181.466 496.867 181.6 497.001C181.794 496.721 182.012 496.492 182.4 496.601C182.4 496.201 182.266 495.645 182.467 495.486C183.704 494.509 183.62 493.441 184.4 492.201C184.858 492.99 185.919 492.271 186.4 493.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M246.2 547.401C246.2 547.401 253.6 527.001 249.2 515.801C249.2 515.801 260.6 537.401 256 548.601C256 548.601 255.6 538.201 251.6 533.201C251.6 533.201 247.6 546.001 246.2 547.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M231.4 544.801C231.4 544.801 236.8 536.001 228.8 517.601C228.8 517.601 228 538.001 221.2 549.001C221.2 549.001 235.4 528.801 231.4 544.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M221.4 542.801C221.4 542.801 221.2 522.801 221.6 519.801C221.6 519.801 217.8 536.401 207.6 546.001C207.6 546.001 222 534.001 221.4 542.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M211.8 510.801C211.8 510.801 217.8 524.401 207.8 542.801C207.8 542.801 214.2 530.601 209.4 523.601C209.4 523.601 212 520.201 211.8 510.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M192.6 542.401C192.6 542.401 191.6 526.801 193.4 524.601C193.4 524.601 193.6 518.201 193.2 517.201C193.2 517.201 197.2 511.001 197.4 518.401C197.4 518.401 198.8 526.201 201.6 530.801C201.6 530.801 205.2 536.201 205 542.601C205 542.601 195 512.401 192.6 542.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M189 514.801C189 514.801 182.4 525.601 180.6 544.601C180.6 544.601 179.2 538.401 183 524.001C183 524.001 187.2 508.601 189 514.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M167.2 534.601C167.2 534.601 172.2 529.201 173.6 524.201C173.6 524.201 177.2 508.401 170.8 517.001C170.8 517.001 171 525.001 162.8 532.401C162.8 532.401 167.6 530.001 167.2 534.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M161.4 529.601C161.4 529.601 164.8 512.201 165.6 511.401C165.6 511.401 167.4 508.001 164.6 511.201C164.6 511.201 155.8 530.401 151.8 537.001C151.8 537.001 159.8 527.801 161.4 529.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M155.6 513.001C155.6 513.001 167.2 490.601 145.4 516.401C145.4 516.401 156.4 506.601 155.6 513.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M140.2 498.401C140.2 498.401 145 479.601 147.6 479.801C147.6 479.801 155.8 470.801 149.2 481.401C149.2 481.401 143.2 491.001 143.8 500.801C143.8 500.801 143.2 491.201 140.2 498.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M470.5 487C470.5 487 458.5 477 456 473.5C456 473.5 469.5 492 469.5 499C469.5 499 472 491.5 470.5 487z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M476 465C476 465 455 450 451.5 442.5C451.5 442.5 478 472 478 476.5C478 476.5 478.5 467.5 476 465z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M493 311C493 311 481 303 479.5 305C479.5 305 490 311.5 492.5 320C492.5 320 491 311 493 311z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M501.5 391.5L484 379.5C484 379.5 503 396.5 503.5 400.5L501.5 391.5z"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M110.75 369L132.75 373.75"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M161 531C161 531 160.5 527.5 151.5 538"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M166.5 536C166.5 536 168.5 529.5 162 534"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M220.5 544.5C220.5 544.5 222 533.5 210.5 546.5"/>
+ </g>
+</svg>
diff --git a/result/svg3.rde b/result/svg3.rde
new file mode 100644
index 0000000..e4642a9
--- /dev/null
+++ b/result/svg3.rde
@@ -0,0 +1,2164 @@
+0 1 svg 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+0 15 svg 0 0
diff --git a/result/svg3.rdr b/result/svg3.rdr
new file mode 100644
index 0000000..e4642a9
--- /dev/null
+++ b/result/svg3.rdr
@@ -0,0 +1,2164 @@
+0 1 svg 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+1 1 g 0 0
+2 14 #text 0 1
+
+2 1 path 1 0
+2 14 #text 0 1
+
+1 15 g 0 0
+1 14 #text 0 1
+
+0 15 svg 0 0
diff --git a/result/svg3.sax b/result/svg3.sax
new file mode 100644
index 0000000..3bb3da3
--- /dev/null
+++ b/result/svg3.sax
@@ -0,0 +1,2407 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(svg)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M77.696 284.285C77.696 284.285 77.797 286.179 76.973 286.16C76.149 286.141 59.695 238.066 39.167 240.309C39.167 240.309 56.95 232.956 77.696 284.285z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M81.226 281.262C81.226 281.262 80.677 283.078 79.908 282.779C79.14 282.481 80.023 231.675 59.957 226.801C59.957 226.801 79.18 225.937 81.226 281.262z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M108.716 323.59C108.716 323.59 110.352 324.55 109.882 325.227C109.411 325.904 60.237 313.102 50.782 331.459C50.782 331.459 54.461 312.572 108.716 323.59z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M105.907 333.801C105.907 333.801 107.763 334.197 107.529 334.988C107.296 335.779 56.593 339.121 53.403 359.522C53.403 359.522 50.945 340.437 105.907 333.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M101.696 328.276C101.696 328.276 103.474 328.939 103.128 329.687C102.782 330.435 52.134 326.346 46.002 346.064C46.002 346.064 46.354 326.825 101.696 328.276z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M90.991 310.072C90.991 310.072 92.299 311.446 91.66 311.967C91.021 312.488 47.278 286.634 33.131 301.676C33.131 301.676 41.872 284.533 90.991 310.072z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M83.446 314.263C83.446 314.263 84.902 315.48 84.326 316.071C83.75 316.661 37.362 295.922 25.008 312.469C25.008 312.469 31.753 294.447 83.446 314.263z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M80.846 318.335C80.846 318.335 82.454 319.343 81.964 320.006C81.474 320.669 32.692 306.446 22.709 324.522C22.709 324.522 26.934 305.749 80.846 318.335z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M91.58 318.949C91.58 318.949 92.702 320.48 92.001 320.915C91.3 321.35 51.231 290.102 35.273 303.207C35.273 303.207 46.138 287.326 91.58 318.949z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M71.8 290C71.8 290 72.4 291.8 71.6 292C70.8 292.2 42.2 250.2 22.999 257.8C22.999 257.8 38.2 246 71.8 290z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M72.495 296.979C72.495 296.979 73.47 298.608 72.731 298.975C71.993 299.343 35.008 264.499 17.899 276.061C17.899 276.061 30.196 261.261 72.495 296.979z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.172')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M72.38 301.349C72.38 301.349 73.502 302.88 72.801 303.315C72.1 303.749 32.031 272.502 16.073 285.607C16.073 285.607 26.938 269.726 72.38 301.349z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M70.17 303.065C70.673 309.113 71.661 315.682 73.4 318.801C73.4 318.801 69.8 331.201 78.6 344.401C78.6 344.401 78.2 351.601 79.8 354.801C79.8 354.801 83.8 363.201 88.6 364.001C92.484 364.648 101.207 367.717 111.068 369.121C111.068 369.121 128.2 383.201 125 396.001C125 396.001 124.6 412.401 121 414.001C121 414.001 132.6 402.801 123 419.601L118.6 438.401C118.6 438.401 144.2 416.801 128.6 435.201L118.6 461.201C118.6 461.201 138.2 442.801 131 451.201L127.8 460.001C127.8 460.001 171 432.801 140.2 462.401C140.2 462.401 148.2 458.801 152.6 461.601C152.6 461.601 159.4 460.401 158.6 462.001C158.6 462.001 137.8 472.401 134.2 490.801C134.2 490.801 142.6 480.801 139.4 491.601L139.8 503.201C139.8 503.201 143.8 481.601 143.4 519.201C143.4 519.201 162.6 501.201 151 522.001L151 538.801C151 538.801 166.2 522.401 159.8 535.201C159.8 535.201 169.8 526.401 165.8 541.601C165.8 541.601 165 552.001 169.4 540.801C169.4 540.801 185.4 510.201 179.4 536.401C179.4 536.401 178.6 555.601 183.4 540.801C183.4 540.801 183.8 551.201 193 558.401C193 558.401 191.8 507.601 204.6 543.601L208.6 560.001C208.6 560.001 211.4 550.801 211 545.601C211 545.601 225.8 529.201 219 553.601C219 553.601 234.2 530.801 231 544.001C231 544.001 223.4 560.001 225 564.801C225 564.801 241.8 530.001 243 528.401C243 528.401 241 570.802 251.8 534.801C251.8 534.801 257.4 546.801 254.6 551.201C254.6 551.201 262.6 543.201 261.8 540.001C261.8 540.001 266.4 531.801 269.2 545.401C269.2 545.401 271 554.801 272.6 551.601C272.6 551.601 276.6 575.602 277.8 552.801C277.8 552.801 279.4 539.201 272.2 527.601C272.2 527.601 273 524.401 270.2 520.401C270.2 520.401 283.8 542.001 276.6 513.201C276.6 513.201 287.801 521.201 289.001 521.201C289.001 521.201 275.4 498.001 284.2 502.801C284.2 502.801 279 492.401 297.001 504.401C297.001 504.401 281 488.401 298.601 498.001C298.601 498.001 306.601 504.401 299.001 494.401C299.001 494.401 284.6 478.401 306.601 496.401C306.601 496.401 318.201 512.801 319.001 515.601C319.001 515.601 309.001 486.401 304.601 483.601C304.601 483.601 313.001 447.201 354.201 462.801C354.201 462.801 361.001 480.001 365.401 461.601C365.401 461.601 378.201 455.201 389.401 482.801C389.401 482.801 393.401 469.201 392.601 466.401C392.601 466.401 399.401 467.601 398.601 466.401C398.601 466.401 411.801 470.801 413.001 470.001C413.001 470.001 419.801 476.801 420.201 473.201C420.201 473.201 429.401 476.001 427.401 472.401C427.401 472.401 436.201 488.001 436.601 491.601L439.001 477.601L441.001 480.401C441.001 480.401 442.601 472.801 441.801 471.601C441.001 470.401 461.801 478.401 466.601 499.201L468.601 507.601C468.601 507.601 474.601 492.801 473.001 488.801C473.001 488.801 478.201 489.601 478.601 494.001C478.601 494.001 482.601 470.801 477.801 464.801C477.801 464.801 482.201 464.001 483.401 467.601L483.401 460.401C483.401 460.401 490.601 461.201 490.601 458.801C490.601 458.801 495.001 454.801 497.001 459.601C497.001 459.601 484.601 424.401 503.001 443.601C503.001 443.601 510.201 454.401 506.601 435.601C503.001 416.801 499.001 415.201 503.801 414.801C503.801 414.801 504.601 411.201 502.601 409.601C500.601 408.001 503.801 409.601 503.801 409.601C503.801 409.601 508.601 413.601 503.401 391.601C503.401 391.601 509.801 393.201 497.801 364.001C497.801 364.001 500.601 361.601 496.601 353.201C496.601 353.201 504.601 357.601 507.401 356.001C507.401 356.001 507.001 354.401 503.801 350.401C503.801 350.401 482.201 295.6 502.601 317.601C502.601 317.601 514.451 331.151 508.051 308.351C508.051 308.351 498.94 284.341 499.717 280.045L70.17 303.065z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226; stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M499.717 280.245C500.345 280.426 502.551 281.55 503.801 283.2C503.801 283.2 510.601 294 505.401 275.6C505.401 275.6 496.201 246.8 505.001 258C505.001 258 511.001 265.2 507.801 251.6C503.936 235.173 501.401 228.8 501.401 228.8C501.401 228.8 513.001 233.6 486.201 194L495.001 197.6C495.001 197.6 475.401 158 453.801 152.8L445.801 146.8C445.801 146.8 484.201 108.8 471.401 72C471.401 72 464.601 66.8 455.001 76C455.001 76 448.601 80.8 442.601 79.2C442.601 79.2 411.801 80.4 409.801 80.4C407.801 80.4 373.001 43.2 307.401 60.8C307.401 60.8 302.201 62.8 297.801 61.6C297.801 61.6 279.4 45.6 230.6 68.4C230.6 68.4 220.6 70.4 219 70.4C217.4 70.4 214.6 70.4 206.6 76.8C198.6 83.2 198.2 84 196.2 85.6C196.2 85.6 179.8 96.8 175 97.6C175 97.6 163.4 104 159 114L155.4 115.2C155.4 115.2 153.8 122.4 153.4 123.6C153.4 123.6 148.6 127.2 147.8 132.8C147.8 132.8 139 138.8 139.4 143.2C139.4 143.2 137.8 148.4 137 153.2C137 153.2 129.8 158 130.6 160.8C130.6 160.8 123 174.8 124.2 181.6C124.2 181.6 117.8 181.2 115 183.6C115 183.6 114.2 188.4 112.6 188.8C112.6 188.8 109.8 190 112.2 194C112.2 194 110.6 196.8 110.2 198.4C110.2 198.4 111 201.2 106.6 206.8C106.6 206.8 100.2 225.6 102.2 230.8C102.2 230.8 102.6 235.6 99.8 237.2C99.8 237.2 96.2 236.8 104.6 248.8C104.6 248.8 105.4 250 102.2 252.4C102.2 252.4 85 256 82.6 272.4C82.6 272.4 69 287.2 69 292.4C69 294.705 69.271 297.852 69.97 302.465C69.97 302.465 69.4 310.801 97 311.601C124.6 312.401 499.717 280.245 499.717 280.245z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M84.4 302.6C59.4 263.2 73.8 319.601 73.8 319.601C82.6 354.001 212.2 316.401 212.2 316.401C212.2 316.401 381.001 286 392.201 282C403.401 278 498.601 284.4 498.601 284.4L493.001 267.6C428.201 221.2 409.001 244.4 395.401 240.4C381.801 236.4 384.201 246 381.001 246.8C377.801 247.6 338.601 222.8 332.201 223.6C325.801 224.4 300.459 200.649 315.401 232.4C331.401 266.4 257 271.6 240.2 260.4C223.4 249.2 247.4 278.8 247.4 278.8C265.8 298.8 231.4 282 231.4 282C197 269.2 173 294.8 169.8 295.6C166.6 296.4 161.8 299.6 161 293.2C160.2 286.8 152.69 270.099 121 296.4C101 313.001 87.2 291 87.2 291L84.4 302.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #e87f3a')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M333.51 225.346C327.11 226.146 301.743 202.407 316.71 234.146C333.31 269.346 258.31 273.346 241.51 262.146C224.709 250.946 248.71 280.546 248.71 280.546C267.11 300.546 232.709 283.746 232.709 283.746C198.309 270.946 174.309 296.546 171.109 297.346C167.909 298.146 163.109 301.346 162.309 294.946C161.509 288.546 154.13 272.012 122.309 298.146C101.073 315.492 87.582 294.037 87.582 294.037L84.382 304.146C59.382 264.346 74.454 322.655 74.454 322.655C83.255 357.056 213.509 318.146 213.509 318.146C213.509 318.146 382.31 287.746 393.51 283.746C404.71 279.746 499.038 286.073 499.038 286.073L493.51 268.764C428.71 222.364 410.31 246.146 396.71 242.146C383.11 238.146 385.51 247.746 382.31 248.546C379.11 249.346 339.91 224.546 333.51 225.346z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ea8c4d')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M334.819 227.091C328.419 227.891 303.685 203.862 318.019 235.891C334.219 272.092 259.619 275.092 242.819 263.892C226.019 252.692 250.019 282.292 250.019 282.292C268.419 302.292 234.019 285.492 234.019 285.492C199.619 272.692 175.618 298.292 172.418 299.092C169.218 299.892 164.418 303.092 163.618 296.692C162.818 290.292 155.57 273.925 123.618 299.892C101.145 317.983 87.964 297.074 87.964 297.074L84.364 305.692C60.564 266.692 75.109 325.71 75.109 325.71C83.909 360.11 214.819 319.892 214.819 319.892C214.819 319.892 383.619 289.492 394.819 285.492C406.019 281.492 499.474 287.746 499.474 287.746L494.02 269.928C429.219 223.528 411.619 247.891 398.019 243.891C384.419 239.891 386.819 249.491 383.619 250.292C380.419 251.092 341.219 226.291 334.819 227.091z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ec9961')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M336.128 228.837C329.728 229.637 304.999 205.605 319.328 237.637C336.128 275.193 260.394 276.482 244.128 265.637C227.328 254.437 251.328 284.037 251.328 284.037C269.728 304.037 235.328 287.237 235.328 287.237C200.928 274.437 176.928 300.037 173.728 300.837C170.528 301.637 165.728 304.837 164.928 298.437C164.128 292.037 157.011 275.839 124.927 301.637C101.218 320.474 88.345 300.11 88.345 300.11L84.345 307.237C62.545 270.437 75.764 328.765 75.764 328.765C84.564 363.165 216.128 321.637 216.128 321.637C216.128 321.637 384.928 291.237 396.129 287.237C407.329 283.237 499.911 289.419 499.911 289.419L494.529 271.092C429.729 224.691 412.929 249.637 399.329 245.637C385.728 241.637 388.128 251.237 384.928 252.037C381.728 252.837 342.528 228.037 336.128 228.837z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #eea575')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M337.438 230.583C331.037 231.383 306.814 207.129 320.637 239.383C337.438 278.583 262.237 278.583 245.437 267.383C228.637 256.183 252.637 285.783 252.637 285.783C271.037 305.783 236.637 288.983 236.637 288.983C202.237 276.183 178.237 301.783 175.037 302.583C171.837 303.383 167.037 306.583 166.237 300.183C165.437 293.783 158.452 277.752 126.237 303.383C101.291 322.965 88.727 303.146 88.727 303.146L84.327 308.783C64.527 273.982 76.418 331.819 76.418 331.819C85.218 366.22 217.437 323.383 217.437 323.383C217.437 323.383 386.238 292.983 397.438 288.983C408.638 284.983 500.347 291.092 500.347 291.092L495.038 272.255C430.238 225.855 414.238 251.383 400.638 247.383C387.038 243.383 389.438 252.983 386.238 253.783C383.038 254.583 343.838 229.783 337.438 230.583z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f1b288')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M338.747 232.328C332.347 233.128 306.383 209.677 321.947 241.128C341.147 279.928 263.546 280.328 246.746 269.128C229.946 257.928 253.946 287.528 253.946 287.528C272.346 307.528 237.946 290.728 237.946 290.728C203.546 277.928 179.546 303.528 176.346 304.328C173.146 305.128 168.346 308.328 167.546 301.928C166.746 295.528 159.892 279.665 127.546 305.128C101.364 325.456 89.109 306.183 89.109 306.183L84.309 310.328C66.309 277.128 77.073 334.874 77.073 334.874C85.873 369.274 218.746 325.128 218.746 325.128C218.746 325.128 387.547 294.728 398.747 290.728C409.947 286.728 500.783 292.764 500.783 292.764L495.547 273.419C430.747 227.019 415.547 253.128 401.947 249.128C388.347 245.128 390.747 254.728 387.547 255.528C384.347 256.328 345.147 231.528 338.747 232.328z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f3bf9c')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M340.056 234.073C333.655 234.873 307.313 211.613 323.255 242.873C343.656 282.874 264.855 282.074 248.055 270.874C231.255 259.674 255.255 289.274 255.255 289.274C273.655 309.274 239.255 292.474 239.255 292.474C204.855 279.674 180.855 305.274 177.655 306.074C174.455 306.874 169.655 310.074 168.855 303.674C168.055 297.274 161.332 281.578 128.855 306.874C101.436 327.947 89.491 309.219 89.491 309.219L84.291 311.874C68.291 281.674 77.727 337.929 77.727 337.929C86.527 372.329 220.055 326.874 220.055 326.874C220.055 326.874 388.856 296.474 400.056 292.474C411.256 288.474 501.22 294.437 501.22 294.437L496.056 274.583C431.256 228.183 416.856 254.874 403.256 250.874C389.656 246.873 392.056 256.474 388.856 257.274C385.656 258.074 346.456 233.273 340.056 234.073z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f5ccb0')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M341.365 235.819C334.965 236.619 307.523 213.944 324.565 244.619C346.565 284.219 266.164 283.819 249.364 272.619C232.564 261.419 256.564 291.019 256.564 291.019C274.964 311.019 240.564 294.219 240.564 294.219C206.164 281.419 182.164 307.019 178.964 307.819C175.764 308.619 170.964 311.819 170.164 305.419C169.364 299.019 162.773 283.492 130.164 308.619C101.509 330.438 89.873 312.256 89.873 312.256L84.273 313.419C69.872 285.019 78.382 340.983 78.382 340.983C87.182 375.384 221.364 328.619 221.364 328.619C221.364 328.619 390.165 298.219 401.365 294.219C412.565 290.219 501.656 296.11 501.656 296.11L496.565 275.746C431.765 229.346 418.165 256.619 404.565 252.619C390.965 248.619 393.365 258.219 390.165 259.019C386.965 259.819 347.765 235.019 341.365 235.819z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f8d8c4')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M342.674 237.565C336.274 238.365 308.832 215.689 325.874 246.365C347.874 285.965 267.474 285.565 250.674 274.365C233.874 263.165 257.874 292.765 257.874 292.765C276.274 312.765 241.874 295.965 241.874 295.965C207.473 283.165 183.473 308.765 180.273 309.565C177.073 310.365 172.273 313.565 171.473 307.165C170.673 300.765 164.214 285.405 131.473 310.365C101.582 332.929 90.255 315.293 90.255 315.293L84.255 314.965C70.654 288.564 79.037 344.038 79.037 344.038C87.837 378.438 222.673 330.365 222.673 330.365C222.673 330.365 391.474 299.965 402.674 295.965C413.874 291.965 502.093 297.783 502.093 297.783L497.075 276.91C432.274 230.51 419.474 258.365 405.874 254.365C392.274 250.365 394.674 259.965 391.474 260.765C388.274 261.565 349.074 236.765 342.674 237.565z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #fae5d7')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M343.983 239.31C337.583 240.11 310.529 217.223 327.183 248.11C349.183 288.91 268.783 287.31 251.983 276.11C235.183 264.91 259.183 294.51 259.183 294.51C277.583 314.51 243.183 297.71 243.183 297.71C208.783 284.91 184.783 310.51 181.583 311.31C178.382 312.11 173.582 315.31 172.782 308.91C171.982 302.51 165.654 287.318 132.782 312.11C101.655 335.42 90.637 318.329 90.637 318.329L84.236 316.51C71.236 292.51 79.691 347.093 79.691 347.093C88.491 381.493 223.983 332.11 223.983 332.11C223.983 332.11 392.783 301.71 403.983 297.71C415.183 293.71 502.529 299.456 502.529 299.456L497.583 278.074C432.783 231.673 420.783 260.11 407.183 256.11C393.583 252.11 395.983 261.71 392.783 262.51C389.583 263.31 350.383 238.51 343.983 239.31z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #fcf2eb')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M345.292 241.055C338.892 241.855 312.917 218.411 328.492 249.855C349.692 292.656 270.092 289.056 253.292 277.856C236.492 266.656 260.492 296.256 260.492 296.256C278.892 316.256 244.492 299.456 244.492 299.456C210.092 286.656 186.092 312.256 182.892 313.056C179.692 313.856 174.892 317.056 174.092 310.656C173.292 304.256 167.095 289.232 134.092 313.856C101.727 337.911 91.018 321.365 91.018 321.365L84.218 318.056C71.418 294.856 80.346 350.147 80.346 350.147C89.146 384.547 225.292 333.856 225.292 333.856C225.292 333.856 394.093 303.456 405.293 299.456C416.493 295.456 502.965 301.128 502.965 301.128L498.093 279.237C433.292 232.837 422.093 261.856 408.493 257.856C394.893 253.855 397.293 263.456 394.093 264.256C390.892 265.056 351.692 240.255 345.292 241.055z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M84.2 319.601C71.4 297.6 81 353.201 81 353.201C89.8 387.601 226.6 335.601 226.6 335.601C226.6 335.601 395.401 305.2 406.601 301.2C417.801 297.2 503.401 302.8 503.401 302.8L498.601 280.4C433.801 234 423.401 263.6 409.801 259.6C396.201 255.6 398.601 265.2 395.401 266C392.201 266.8 353.001 242 346.601 242.8C340.201 243.6 314.981 219.793 329.801 251.6C352.028 299.307 269.041 289.227 254.6 279.6C237.8 268.4 261.8 298 261.8 298C280.2 318.001 245.8 301.2 245.8 301.2C211.4 288.4 187.4 314.001 184.2 314.801C181 315.601 176.2 318.801 175.4 312.401C174.6 306 168.535 291.144 135.4 315.601C101.8 340.401 91.4 324.401 91.4 324.401L84.2 319.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M125.8 349.601C125.8 349.601 118.6 361.201 139.4 374.401C139.4 374.401 140.8 375.801 122.8 371.601C122.8 371.601 116.6 369.601 115 359.201C115 359.201 110.2 354.801 105.4 349.201C100.6 343.601 125.8 349.601 125.8 349.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M265.8 302C265.8 302 283.498 328.821 282.9 333.601C281.6 344.001 281.4 353.601 284.6 357.601C287.801 361.601 296.601 394.801 296.601 394.801C296.601 394.801 296.201 396.001 308.601 358.001C308.601 358.001 320.201 342.001 300.201 323.601C300.201 323.601 265 294.8 265.8 302z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M145.8 376.401C145.8 376.401 157 383.601 142.6 414.801L149 412.401C149 412.401 148.2 423.601 145 426.001L152.2 422.801C152.2 422.801 157 430.801 153 435.601C153 435.601 169.8 443.601 169 450.001C169 450.001 175.4 442.001 171.4 435.601C167.4 429.201 160.2 433.201 161 414.801L152.2 418.001C152.2 418.001 157.8 409.201 157.8 402.801L149.8 405.201C149.8 405.201 165.269 378.623 154.6 377.201C148.6 376.401 145.8 376.401 145.8 376.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M178.2 393.201C178.2 393.201 181 388.801 178.2 389.601C175.4 390.401 144.2 405.201 138.2 414.801C138.2 414.801 172.6 390.401 178.2 393.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M188.6 401.201C188.6 401.201 191.4 396.801 188.6 397.601C185.8 398.401 154.6 413.201 148.6 422.801C148.6 422.801 183 398.401 188.6 401.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M201.8 386.001C201.8 386.001 204.6 381.601 201.8 382.401C199 383.201 167.8 398.001 161.8 407.601C161.8 407.601 196.2 383.201 201.8 386.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M178.6 429.601C178.6 429.601 178.6 423.601 175.8 424.401C173 425.201 137 442.801 131 452.401C131 452.401 173 426.801 178.6 429.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M179.8 418.801C179.8 418.801 181 414.001 178.2 414.801C176.2 414.801 149.8 426.401 143.8 436.001C143.8 436.001 173.4 414.401 179.8 418.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M165.4 466.401L155.4 474.001C155.4 474.001 165.8 466.401 169.4 467.601C169.4 467.601 162.6 478.801 161.8 484.001C161.8 484.001 172.2 471.201 177.8 471.601C177.8 471.601 185.4 472.001 185.4 482.801C185.4 482.801 191 472.401 194.2 472.801C194.2 472.801 195.4 479.201 194.2 486.001C194.2 486.001 198.2 478.401 202.2 480.001C202.2 480.001 208.6 478.001 207.8 489.601C207.8 489.601 207.8 500.001 207 502.801C207 502.801 212.6 476.401 215 476.001C215 476.001 223 474.801 227.8 483.601C227.8 483.601 223.8 476.001 228.6 478.001C228.6 478.001 239.4 479.601 242.6 486.401C242.6 486.401 235.8 474.401 241.4 477.601C241.4 477.601 248.2 477.601 249.4 484.001C249.4 484.001 257.8 505.201 259.8 506.801C259.8 506.801 252.2 485.201 253.8 485.201C253.8 485.201 251.8 473.201 257 488.001C257 488.001 253.8 474.001 259.4 474.801C265 475.601 269.4 485.601 277.8 483.201C277.8 483.201 287.401 488.801 289.401 419.601L165.4 466.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M170.2 373.601C170.2 373.601 185 367.601 225 373.601C225 373.601 232.2 374.001 239 365.201C245.8 356.401 272.6 349.201 279 351.201L288.601 357.601L289.401 358.801C289.401 358.801 301.801 369.201 302.201 376.801C302.601 384.401 287.801 432.401 278.2 448.401C268.6 464.401 259 476.801 239.8 474.401C239.8 474.401 219 470.401 193.4 474.401C193.4 474.401 164.2 472.801 161.4 464.801C158.6 456.801 172.6 441.601 172.6 441.601C172.6 441.601 177 433.201 175.8 418.801C174.6 404.401 175 376.401 170.2 373.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #e5668c')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M192.2 375.601C200.6 394.001 171 459.201 171 459.201C169 460.801 183.66 466.846 193.8 464.401C204.746 461.763 245 466.001 245 466.001C268.6 450.401 281.4 406.001 281.4 406.001C281.4 406.001 291.801 382.001 274.2 378.801C256.6 375.601 192.2 375.601 192.2 375.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #b23259')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M190.169 406.497C193.495 393.707 195.079 381.906 192.2 375.601C192.2 375.601 254.6 382.001 265.8 361.201C270.041 353.326 284.801 384.001 284.4 393.601C284.4 393.601 221.4 408.001 206.6 396.801L190.169 406.497z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #a5264c')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M194.6 422.801C194.6 422.801 196.6 430.001 194.2 434.001C194.2 434.001 192.6 434.801 191.4 435.201C191.4 435.201 192.6 438.801 198.6 440.401C198.6 440.401 200.6 444.801 203 445.201C205.4 445.601 210.2 451.201 214.2 450.001C218.2 448.801 229.4 444.801 229.4 444.801C229.4 444.801 235 441.601 243.8 445.201C243.8 445.201 246.175 444.399 246.6 440.401C247.1 435.701 250.2 432.001 252.2 430.001C254.2 428.001 263.8 415.201 262.6 414.801C261.4 414.401 194.6 422.801 194.6 422.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ff727f; stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M190.2 374.401C190.2 374.401 187.4 396.801 190.6 405.201C193.8 413.601 193 415.601 192.2 419.601C191.4 423.601 195.8 433.601 201.4 439.601L213.4 441.201C213.4 441.201 228.6 437.601 237.8 440.401C237.8 440.401 246.794 441.744 250.2 426.801C250.2 426.801 255 420.401 262.2 417.601C269.4 414.801 276.6 373.201 272.6 365.201C268.6 357.201 254.2 352.801 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M191.8 449.201C191.8 449.201 191 447.201 186.6 446.801C186.6 446.801 164.2 443.201 155.8 430.801C155.8 430.801 149 425.201 153.4 436.801C153.4 436.801 163.8 457.201 170.6 460.001C170.6 460.001 187 464.001 191.8 449.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc3f4c')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M271.742 385.229C272.401 377.323 274.354 368.709 272.6 365.201C266.154 352.307 249.181 357.695 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401C190.2 374.401 188.455 388.364 189.295 398.376C189.295 398.376 226.6 386.801 227.4 392.401C227.4 392.401 229 389.201 238.2 389.201C247.4 389.201 270.142 388.029 271.742 385.229z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#a51926; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M228.6 375.201C228.6 375.201 233.4 380.001 229.8 389.601C229.8 389.601 215.4 405.601 217.4 419.601')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M180.6 460.001C180.6 460.001 176.2 447.201 185 454.001C185 454.001 189.8 456.001 188.6 457.601C187.4 459.201 181.8 463.201 180.6 460.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M185.64 461.201C185.64 461.201 182.12 450.961 189.16 456.401C189.16 456.401 193.581 458.849 192.04 459.281C187.48 460.561 192.04 463.121 185.64 461.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M190.44 461.201C190.44 461.201 186.92 450.961 193.96 456.401C193.96 456.401 198.335 458.711 196.84 459.281C193.48 460.561 196.84 463.121 190.44 461.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M197.04 461.401C197.04 461.401 193.52 451.161 200.56 456.601C200.56 456.601 204.943 458.933 203.441 459.481C200.48 460.561 203.441 463.321 197.04 461.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M203.52 461.321C203.52 461.321 200 451.081 207.041 456.521C207.041 456.521 210.881 458.121 209.921 459.401C208.961 460.681 209.921 463.241 203.52 461.321z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M210.2 462.001C210.2 462.001 205.4 449.601 214.6 456.001C214.6 456.001 219.4 458.001 218.2 459.601C217 461.201 218.2 464.401 210.2 462.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#a5264c; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M181.8 444.801C181.8 444.801 195 442.001 201 445.201C201 445.201 207 446.401 208.2 446.001C209.4 445.601 212.6 445.201 212.6 445.201')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#a5264c; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M215.8 453.601C215.8 453.601 227.8 440.001 239.8 444.401C246.816 446.974 245.8 443.601 246.6 440.801C247.4 438.001 247.6 433.801 252.6 430.801')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M233 437.601C233 437.601 229 426.801 226.2 439.601C223.4 452.401 220.2 456.001 218.6 458.801C218.6 458.801 218.6 464.001 227 463.601C227 463.601 237.8 463.201 238.2 460.401C238.6 457.601 237 446.001 233 437.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#a5264c; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M247 444.801C247 444.801 250.6 442.401 253 443.601')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#a5264c; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M253.5 428.401C253.5 428.401 256.4 423.501 261.2 422.701')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #b2b2b2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M174.2 465.201C174.2 465.201 192.2 468.401 196.6 466.801C196.6 466.801 205.4 466.801 197 468.801C197 468.801 184.2 468.801 176.2 467.601C176.2 467.601 164.6 462.001 174.2 465.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M188.2 372.001C188.2 372.001 205.8 372.001 207.8 372.801C207.8 372.801 215 403.601 211.4 411.201C211.4 411.201 210.2 414.001 207.4 408.401C207.4 408.401 189 375.601 185.8 373.601C182.6 371.601 187 372.001 188.2 372.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M111.1 369.301C111.1 369.301 120 371.001 132.6 373.601C132.6 373.601 137.4 396.001 140.6 400.801C143.8 405.601 140.2 405.601 136.6 402.801C133 400.001 118.2 386.001 116.2 381.601C114.2 377.201 111.1 369.301 111.1 369.301z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M132.961 373.818C132.961 373.818 138.761 375.366 139.77 377.581C140.778 379.795 138.568 383.092 138.568 383.092C138.568 383.092 137.568 386.397 136.366 384.235C135.164 382.072 132.292 374.412 132.961 373.818z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M133 373.601C133 373.601 136.6 378.801 140.2 378.801C143.8 378.801 144.182 378.388 147 379.001C151.6 380.001 151.2 378.001 157.8 379.201C160.44 379.681 163 378.801 165.8 380.001C168.6 381.201 171.8 380.401 173 378.401C174.2 376.401 179 372.201 179 372.201C179 372.201 166.2 374.001 163.4 374.801C163.4 374.801 141 376.001 133 373.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M177.6 373.801C177.6 373.801 171.15 377.301 170.75 379.701C170.35 382.101 176 385.801 176 385.801C176 385.801 178.75 390.401 179.35 388.001C179.95 385.601 178.4 374.201 177.6 373.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M140.115 379.265C140.115 379.265 147.122 390.453 147.339 379.242C147.339 379.242 147.896 377.984 146.136 377.962C140.061 377.886 141.582 373.784 140.115 379.265z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M147.293 379.514C147.293 379.514 155.214 390.701 154.578 379.421C154.578 379.421 154.585 379.089 152.832 378.936C148.085 378.522 148.43 374.004 147.293 379.514z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M154.506 379.522C154.506 379.522 162.466 390.15 161.797 380.484C161.797 380.484 161.916 379.251 160.262 378.95C156.37 378.244 156.159 374.995 154.506 379.522z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffcc; stroke:#000000; stroke-width:0.5')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M161.382 379.602C161.382 379.602 169.282 391.163 169.63 381.382C169.63 381.382 171.274 380.004 169.528 379.782C163.71 379.042 164.508 374.588 161.382 379.602z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #e5e5b2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M125.208 383.132L117.55 381.601C114.95 376.601 112.85 370.451 112.85 370.451C112.85 370.451 119.2 371.451 131.7 374.251C131.7 374.251 132.576 377.569 134.048 383.364L125.208 383.132z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #e5e5b2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M190.276 378.47C188.61 375.964 187.293 374.206 186.643 373.8C183.63 371.917 187.773 372.294 188.902 372.294C188.902 372.294 205.473 372.294 207.356 373.047C207.356 373.047 207.88 375.289 208.564 378.68C208.564 378.68 198.476 376.67 190.276 378.47z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M243.88 240.321C271.601 244.281 297.121 208.641 298.881 198.96C300.641 189.28 290.521 177.4 290.521 177.4C291.841 174.32 287.001 160.24 281.721 151C276.441 141.76 260.54 142.734 243 141.76C227.16 140.88 208.68 164.2 207.36 165.96C206.04 167.72 212.2 206.001 213.52 211.721C214.84 217.441 212.2 243.841 212.2 243.841C246.44 234.741 216.16 236.361 243.88 240.321z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ea8e51')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M208.088 166.608C206.792 168.336 212.84 205.921 214.136 211.537C215.432 217.153 212.84 243.073 212.84 243.073C245.512 234.193 216.728 235.729 243.944 239.617C271.161 243.505 296.217 208.513 297.945 199.008C299.673 189.504 289.737 177.84 289.737 177.84C291.033 174.816 286.281 160.992 281.097 151.92C275.913 142.848 260.302 143.805 243.08 142.848C227.528 141.984 209.384 164.88 208.088 166.608z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #efaa7c')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M208.816 167.256C207.544 168.952 213.48 205.841 214.752 211.353C216.024 216.865 213.48 242.305 213.48 242.305C244.884 233.145 217.296 235.097 244.008 238.913C270.721 242.729 295.313 208.385 297.009 199.056C298.705 189.728 288.953 178.28 288.953 178.28C290.225 175.312 285.561 161.744 280.473 152.84C275.385 143.936 260.063 144.875 243.16 143.936C227.896 143.088 210.088 165.56 208.816 167.256z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f4c6a8')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M209.544 167.904C208.296 169.568 214.12 205.761 215.368 211.169C216.616 216.577 214.12 241.537 214.12 241.537C243.556 232.497 217.864 234.465 244.072 238.209C270.281 241.953 294.409 208.257 296.073 199.105C297.737 189.952 288.169 178.72 288.169 178.72C289.417 175.808 284.841 162.496 279.849 153.76C274.857 145.024 259.824 145.945 243.24 145.024C228.264 144.192 210.792 166.24 209.544 167.904z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f9e2d3')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M210.272 168.552C209.048 170.184 214.76 205.681 215.984 210.985C217.208 216.289 214.76 240.769 214.76 240.769C242.628 231.849 218.432 233.833 244.136 237.505C269.841 241.177 293.505 208.129 295.137 199.152C296.769 190.176 287.385 179.16 287.385 179.16C288.609 176.304 284.121 163.248 279.225 154.68C274.329 146.112 259.585 147.015 243.32 146.112C228.632 145.296 211.496 166.92 210.272 168.552z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M244.2 236.8C269.4 240.4 292.601 208 294.201 199.2C295.801 190.4 286.601 179.6 286.601 179.6C287.801 176.8 283.4 164 278.6 155.6C273.8 147.2 259.346 148.086 243.4 147.2C229 146.4 212.2 167.6 211 169.2C209.8 170.8 215.4 205.6 216.6 210.8C217.8 216 215.4 240 215.4 240C240.9 231.4 219 233.2 244.2 236.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M290.601 202.8C290.601 202.8 262.8 210.4 251.2 208.8C251.2 208.8 235.4 202.2 226.6 224C226.6 224 223 231.2 221 233.2C219 235.2 290.601 202.8 290.601 202.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M294.401 200.6C294.401 200.6 265.4 212.8 255.4 212.4C255.4 212.4 239 207.8 230.6 222.4C230.6 222.4 222.2 231.6 219 233.2C219 233.2 218.6 234.8 225 230.8L235.4 236C235.4 236 250.2 245.6 259.8 229.6C259.8 229.6 263.8 218.4 263.8 216.4C263.8 214.4 285 208.8 286.601 208.4C288.201 208 294.801 203.8 294.401 200.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #99cc32')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M247 236.514C240.128 236.514 231.755 232.649 231.755 226.4C231.755 220.152 240.128 213.887 247 213.887C253.874 213.887 259.446 218.952 259.446 225.2C259.446 231.449 253.874 236.514 247 236.514z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #659900')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M243.377 219.83C238.531 220.552 233.442 222.055 233.514 221.839C235.054 217.22 241.415 213.887 247 213.887C251.296 213.887 255.084 215.865 257.32 218.875C257.32 218.875 252.004 218.545 243.377 219.83z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M255.4 219.6C255.4 219.6 251 216.4 251 218.6C251 218.6 254.6 223 255.4 219.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M245.4 227.726C242.901 227.726 240.875 225.7 240.875 223.2C240.875 220.701 242.901 218.675 245.4 218.675C247.9 218.675 249.926 220.701 249.926 223.2C249.926 225.7 247.9 227.726 245.4 227.726z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M141.4 214.4C141.4 214.4 138.2 193.2 140.6 188.8C140.6 188.8 151.4 178.8 151 175.2C151 175.2 150.6 157.2 149.4 156.4C148.2 155.6 140.6 149.6 134.6 156C134.6 156 124.2 174 125 180.4L125 182.4C125 182.4 117.4 182 115.8 184C115.8 184 114.6 189.2 113.4 189.6C113.4 189.6 110.6 192 112.6 194.8C112.6 194.8 110.6 197.2 111 201.2L118.6 205.2C118.6 205.2 120.6 219.6 131.4 224.8C136.236 227.129 139.4 220.4 141.4 214.4z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M140.4 212.56C140.4 212.56 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.52 159.64 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.96 140.4 212.56z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #eb955c')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M148.95 157.39C147.86 156.53 140.37 150.76 134.52 157C134.52 157 124.38 174.55 125.16 180.79L125.16 182.74C125.16 182.74 117.75 182.35 116.19 184.3C116.19 184.3 115.02 189.37 113.85 189.76C113.85 189.76 111.12 192.1 113.07 194.83C113.07 194.83 111.12 197.17 111.51 201.07L118.92 204.97C118.92 204.97 120.87 219.01 131.4 224.08C136.114 226.35 139.2 219.79 141.15 213.94C141.15 213.94 138.03 193.27 140.37 188.98C140.37 188.98 150.9 179.23 150.51 175.72C150.51 175.72 150.12 158.17 148.95 157.39z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f2b892')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M148.5 158.38C147.52 157.46 140.14 151.92 134.44 158C134.44 158 124.56 175.1 125.32 181.18L125.32 183.08C125.32 183.08 118.1 182.7 116.58 184.6C116.58 184.6 115.44 189.54 114.3 189.92C114.3 189.92 111.64 192.2 113.54 194.86C113.54 194.86 111.64 197.14 112.02 200.94L119.24 204.74C119.24 204.74 121.14 218.42 131.4 223.36C135.994 225.572 139 219.18 140.9 213.48C140.9 213.48 137.86 193.34 140.14 189.16C140.14 189.16 150.4 179.66 150.02 176.24C150.02 176.24 149.64 159.14 148.5 158.38z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #f8dcc8')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M148.05 159.37C147.18 158.39 139.91 153.08 134.36 159C134.36 159 124.74 175.65 125.48 181.57L125.48 183.42C125.48 183.42 118.45 183.05 116.97 184.9C116.97 184.9 115.86 189.71 114.75 190.08C114.75 190.08 112.16 192.3 114.01 194.89C114.01 194.89 112.16 197.11 112.53 200.81L119.56 204.51C119.56 204.51 121.41 217.83 131.4 222.64C135.873 224.794 138.8 218.57 140.65 213.02C140.65 213.02 137.69 193.41 139.91 189.34C139.91 189.34 149.9 180.09 149.53 176.76C149.53 176.76 149.16 160.11 148.05 159.37z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M140.4 212.46C140.4 212.46 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.84 159.32 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.86 140.4 212.46z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M137.3 206.2C137.3 206.2 115.7 196 114.8 195.2C114.8 195.2 123.9 203.4 124.7 203.4C125.5 203.4 137.3 206.2 137.3 206.2z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M120.2 200C120.2 200 138.6 203.6 138.6 208C138.6 210.912 138.357 224.331 133 222.8C124.6 220.4 128.2 206 120.2 200z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #99cc32')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M128.6 203.8C128.6 203.8 137.578 205.274 138.6 208C139.2 209.6 139.863 217.908 134.4 219C129.848 219.911 127.618 209.69 128.6 203.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M214.595 246.349C214.098 244.607 215.409 244.738 217.2 244.2C219.2 243.6 231.4 239.8 232.2 237.2C233 234.6 246.2 239 246.2 239C248 239.8 252.4 242.4 252.4 242.4C257.2 243.6 263.8 244 263.8 244C266.2 245 269.6 247.8 269.6 247.8C284.2 258 296.601 250.8 296.601 250.8C316.601 244.2 310.601 227 310.601 227C307.601 218 310.801 214.6 310.801 214.6C311.001 210.8 318.201 217.2 318.201 217.2C320.801 221.4 321.601 226.4 321.601 226.4C329.601 237.6 326.201 219.8 326.201 219.8C326.401 218.8 323.601 215.2 323.601 214C323.601 212.8 321.801 209.4 321.801 209.4C318.801 206 321.201 199 321.201 199C323.001 185.2 320.801 187 320.801 187C319.601 185.2 310.401 195.2 310.401 195.2C308.201 198.6 302.201 200.2 302.201 200.2C299.401 202 296.001 200.6 296.001 200.6C293.401 200.2 287.801 207.2 287.801 207.2C290.601 207 293.001 211.4 295.401 211.6C297.801 211.8 299.601 209.2 301.201 208.6C302.801 208 305.601 213.8 305.601 213.8C306.001 216.4 300.401 221.2 300.401 221.2C300.001 225.8 298.401 224.2 298.401 224.2C295.401 223.6 294.201 227.4 293.201 232C292.201 236.6 288.001 237 288.001 237C286.401 244.4 285.2 241.4 285.2 241.4C285 235.8 279 241.6 279 241.6C277.8 243.6 273.2 241.4 273.2 241.4C266.4 239.4 268.8 237.4 268.8 237.4C270.6 235.2 281.8 237.4 281.8 237.4C284 235.8 276 231.8 276 231.8C275.4 230 276.4 225.6 276.4 225.6C277.6 222.4 284.4 216.8 284.4 216.8C293.801 215.6 291.001 214 291.001 214C284.801 208.8 279 216.4 279 216.4C276.8 222.6 259.4 237.6 259.4 237.6C254.6 241 257.2 234.2 253.2 237.6C249.2 241 228.6 232 228.6 232C217.038 230.807 214.306 246.549 210.777 243.429C210.777 243.429 216.195 251.949 214.595 246.349z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M409.401 80C409.401 80 383.801 88 381.001 106.8C381.001 106.8 378.601 129.6 399.001 147.2C399.001 147.2 399.401 153.6 401.401 156.8C401.401 156.8 399.801 161.6 418.601 154L445.801 145.6C445.801 145.6 452.201 143.2 457.401 134.4C462.601 125.6 477.801 106.8 474.201 81.6C474.201 81.6 475.401 70.4 469.401 70C469.401 70 461.001 68.4 453.801 76C453.801 76 447.001 79.2 444.601 78.8L409.401 80z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M464.022 79.01C464.022 79.01 466.122 70.08 461.282 74.92C461.282 74.92 454.242 80.64 446.761 80.64C446.761 80.64 432.241 82.84 427.841 96.04C427.841 96.04 423.881 122.88 431.801 128.6C431.801 128.6 436.641 136.08 443.681 129.48C450.722 122.88 466.222 92.65 464.022 79.01z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #323232')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M463.648 79.368C463.648 79.368 465.738 70.624 460.986 75.376C460.986 75.376 454.074 80.992 446.729 80.992C446.729 80.992 432.473 83.152 428.153 96.112C428.153 96.112 424.265 122.464 432.041 128.08C432.041 128.08 436.793 135.424 443.705 128.944C450.618 122.464 465.808 92.76 463.648 79.368z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #666666')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M463.274 79.726C463.274 79.726 465.354 71.168 460.69 75.832C460.69 75.832 453.906 81.344 446.697 81.344C446.697 81.344 432.705 83.464 428.465 96.184C428.465 96.184 424.649 122.048 432.281 127.56C432.281 127.56 436.945 134.768 443.729 128.408C450.514 122.048 465.394 92.87 463.274 79.726z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #999999')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M462.9 80.084C462.9 80.084 464.97 71.712 460.394 76.288C460.394 76.288 453.738 81.696 446.665 81.696C446.665 81.696 432.937 83.776 428.777 96.256C428.777 96.256 425.033 121.632 432.521 127.04C432.521 127.04 437.097 134.112 443.753 127.872C450.41 121.632 464.98 92.98 462.9 80.084z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M462.526 80.442C462.526 80.442 464.586 72.256 460.098 76.744C460.098 76.744 453.569 82.048 446.633 82.048C446.633 82.048 433.169 84.088 429.089 96.328C429.089 96.328 425.417 121.216 432.761 126.52C432.761 126.52 437.249 133.456 443.777 127.336C450.305 121.216 464.566 93.09 462.526 80.442z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M462.151 80.8C462.151 80.8 464.201 72.8 459.801 77.2C459.801 77.2 453.401 82.4 446.601 82.4C446.601 82.4 433.401 84.4 429.401 96.4C429.401 96.4 425.801 120.8 433.001 126C433.001 126 437.401 132.8 443.801 126.8C450.201 120.8 464.151 93.2 462.151 80.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #992600')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M250.6 284C250.6 284 230.2 264.8 222.2 264C222.2 264 187.8 260 173 278C173 278 190.6 257.6 218.2 263.2C218.2 263.2 196.6 258.8 184.2 262C184.2 262 167.4 262 157.8 276L155 280.8C155 280.8 159 266 177.4 260C177.4 260 200.2 255.2 211 260C211 260 189.4 253.2 179.4 255.2C179.4 255.2 149 252.8 136.2 279.2C136.2 279.2 140.2 264.8 155 257.6C155 257.6 168.6 248.8 189 251.6C189 251.6 203.4 254.8 208.6 257.2C213.8 259.6 212.6 256.8 204.2 252C204.2 252 198.6 242 184.6 242.4C184.6 242.4 141.8 246 131.4 258C131.4 258 145 246.8 155.4 244C155.4 244 177.8 236 186.2 236.8C186.2 236.8 211 237.8 218.6 233.8C218.6 233.8 207.4 238.8 210.6 242C213.8 245.2 220.6 252.8 220.6 254C220.6 255.2 244.8 277.3 248.4 281.7L250.6 284z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M389 478C389 478 373.5 441.5 361 432C361 432 387 448 390.5 466C390.5 466 390.5 476 389 478z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M436 485.5C436 485.5 409.5 430.5 391 406.5C391 406.5 434.5 444 439.5 470.5L440 476L437 473.5C437 473.5 436.5 482.5 436 485.5z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M492.5 437C492.5 437 430 377.5 428.5 375C428.5 375 489 441 492 448.5C492 448.5 490 439.5 492.5 437z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M304 480.5C304 480.5 323.5 428.5 342.5 451C342.5 451 357.5 461 357 464C357 464 353 457.5 335 458C335 458 316 455 304 480.5z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M494.5 353C494.5 353 449.5 324.5 442 323C430.193 320.639 491.5 352 496.5 362.5C496.5 362.5 498.5 360 494.5 353z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M343.801 459.601C343.801 459.601 364.201 457.601 371.001 450.801L375.401 454.401L393.001 416.001L396.601 421.201C396.601 421.201 411.001 406.401 410.201 398.401C409.401 390.401 423.001 404.401 423.001 404.401C423.001 404.401 422.201 392.801 429.401 399.601C429.401 399.601 427.001 384.001 435.401 392.001C435.401 392.001 424.864 361.844 447.401 387.601C453.001 394.001 448.601 387.201 448.601 387.201C448.601 387.201 422.601 339.201 444.201 353.601C444.201 353.601 446.201 330.801 445.001 326.401C443.801 322.001 441.801 299.6 437.001 294.4C432.201 289.2 437.401 287.6 443.001 292.8C443.001 292.8 431.801 268.8 445.001 280.8C445.001 280.8 441.401 265.6 437.001 262.8C437.001 262.8 431.401 245.6 446.601 256.4C446.601 256.4 442.201 244 439.001 240.8C439.001 240.8 427.401 213.2 434.601 218L439.001 221.6C439.001 221.6 432.201 207.6 438.601 212C445.001 216.4 445.001 216 445.001 216C445.001 216 423.801 182.8 444.201 200.4C444.201 200.4 436.042 186.482 432.601 179.6C432.601 179.6 413.801 159.2 428.201 165.6L433.001 167.2C433.001 167.2 424.201 157.2 416.201 155.6C408.201 154 418.601 147.6 425.001 149.6C431.401 151.6 447.001 159.2 447.001 159.2C447.001 159.2 459.801 178 463.801 178.4C463.801 178.4 443.801 170.8 449.801 178.8C449.801 178.8 464.201 192.8 457.001 192.4C457.001 192.4 451.001 199.6 455.801 208.4C455.801 208.4 437.342 190.009 452.201 215.6L459.001 232C459.001 232 434.601 207.2 445.801 229.2C445.801 229.2 463.001 252.8 465.001 253.2C467.001 253.6 471.401 262.4 471.401 262.4L467.001 260.4L472.201 269.2C472.201 269.2 461.001 257.2 467.001 270.4L472.601 284.8C472.601 284.8 452.201 262.8 465.801 292.4C465.801 292.4 449.401 287.2 458.201 304.4C458.201 304.4 456.601 320.401 457.001 325.601C457.401 330.801 458.601 359.201 454.201 367.201C449.801 375.201 460.201 394.401 462.201 398.401C464.201 402.401 467.801 413.201 459.001 404.001C450.201 394.801 454.601 400.401 456.601 409.201C458.601 418.001 464.601 433.601 463.801 439.201C463.801 439.201 462.601 440.401 459.401 436.801C459.401 436.801 444.601 414.001 446.201 428.401C446.201 428.401 445.001 436.401 441.801 445.201C441.801 445.201 438.601 456.001 438.601 447.201C438.601 447.201 435.401 430.401 432.601 438.001C429.801 445.601 426.201 451.601 423.401 454.001C420.601 456.401 415.401 433.601 414.201 444.001C414.201 444.001 402.201 431.601 397.401 448.001L385.801 464.401C385.801 464.401 385.401 452.001 384.201 458.001C384.201 458.001 354.201 464.001 343.801 459.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M309.401 102.8C309.401 102.8 297.801 94.8 293.801 95.2C289.801 95.6 321.401 86.4 362.601 114C362.601 114 367.401 116.8 371.001 116.4C371.001 116.4 374.201 118.8 371.401 122.4C371.401 122.4 362.601 132 373.801 143.2C373.801 143.2 392.201 150 386.601 141.2C386.601 141.2 397.401 145.2 399.801 149.2C402.201 153.2 401.001 149.2 401.001 149.2C401.001 149.2 394.601 142 388.601 136.8C388.601 136.8 383.401 134.8 380.601 126.4C377.801 118 375.401 108 379.801 104.8C379.801 104.8 375.801 109.2 376.601 105.2C377.401 101.2 381.001 97.6 382.601 97.2C384.201 96.8 400.601 81 407.401 80.6C407.401 80.6 398.201 82 395.201 81C392.201 80 365.601 68.6 359.601 67.4C359.601 67.4 342.801 60.8 354.801 62.8C354.801 62.8 390.601 66.6 408.801 79.8C408.801 79.8 401.601 71.4 383.201 64.4C383.201 64.4 361.001 51.8 325.801 56.8C325.801 56.8 308.001 60 300.201 61.8C300.201 61.8 297.601 61.2 297.001 60.8C296.401 60.4 284.6 51.4 257 58.4C257 58.4 240 63 231.4 67.8C231.4 67.8 216.2 69 212.6 72.2C212.6 72.2 194 86.8 192 87.6C190 88.4 178.6 96 177.8 96.4C177.8 96.4 202.4 89.8 204.8 87.4C207.2 85 224.6 82.4 227 83.8C229.4 85.2 237.8 84.6 228.2 85.2C228.2 85.2 303.801 100 304.601 102C305.401 104 309.401 102.8 309.401 102.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M380.801 93.6C380.801 93.6 370.601 86.2 368.601 86.2C366.601 86.2 354.201 76 350.001 76.4C345.801 76.8 333.601 66.8 306.201 75C306.201 75 305.601 73 309.201 72.2C309.201 72.2 315.601 70 316.001 69.4C316.001 69.4 336.201 65.2 343.401 68.8C343.401 68.8 352.601 71.4 358.801 77.6C358.801 77.6 370.001 80.8 373.201 79.8C373.201 79.8 382.001 82 382.401 83.8C382.401 83.8 388.201 86.8 386.401 89.4C386.401 89.4 386.801 91 380.801 93.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M368.33 91.491C369.137 92.123 370.156 92.221 370.761 93.03C370.995 93.344 370.706 93.67 370.391 93.767C369.348 94.084 368.292 93.514 367.15 94.102C366.748 94.309 366.106 94.127 365.553 93.978C363.921 93.537 362.092 93.512 360.401 94.2C358.416 93.071 356.056 93.655 353.975 92.654C353.917 92.627 353.695 92.973 353.621 92.946C350.575 91.801 346.832 92.084 344.401 89.8C341.973 89.388 339.616 88.926 337.188 88.246C335.37 87.737 333.961 86.748 332.341 85.916C330.964 85.208 329.507 84.686 327.973 84.314C326.11 83.862 324.279 83.974 322.386 83.454C322.293 83.429 322.101 83.773 322.019 83.746C321.695 83.638 321.405 83.055 321.234 83.108C319.553 83.63 318.065 82.658 316.401 83C315.223 81.776 313.495 82.021 311.949 81.579C308.985 80.731 305.831 82.001 302.801 81C306.914 79.158 311.601 80.39 315.663 78.321C317.991 77.135 320.653 78.237 323.223 77.477C323.71 77.333 324.401 77.131 324.801 77.8C324.935 77.665 325.117 77.426 325.175 77.454C327.625 78.611 329.94 79.885 332.422 80.951C332.763 81.097 333.295 80.865 333.547 81.067C335.067 82.283 337.01 82.18 338.401 83.4C340.099 82.898 341.892 83.278 343.621 82.654C343.698 82.627 343.932 82.968 343.965 82.946C345.095 82.198 346.25 82.469 347.142 82.773C347.48 82.888 348.143 83.135 348.448 83.209C349.574 83.485 350.43 83.965 351.609 84.148C351.723 84.166 351.908 83.826 351.98 83.854C353.103 84.292 354.145 84.236 354.801 85.4C354.936 85.265 355.101 85.027 355.183 85.054C356.21 85.392 356.859 86.147 357.96 86.388C358.445 86.494 359.057 87.12 359.633 87.296C362.025 88.027 363.868 89.556 366.062 90.451C366.821 90.761 367.697 90.995 368.33 91.491z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M291.696 77.261C289.178 75.536 286.81 74.43 284.368 72.644C284.187 72.511 283.827 72.681 283.625 72.559C282.618 71.95 281.73 71.369 280.748 70.673C280.209 70.291 279.388 70.302 278.88 70.044C276.336 68.752 273.707 68.194 271.2 67C271.882 66.362 273.004 66.606 273.6 65.8C273.795 66.08 274.033 66.364 274.386 66.173C276.064 65.269 277.914 65.116 279.59 65.206C281.294 65.298 283.014 65.603 284.789 65.875C285.096 65.922 285.295 66.445 285.618 66.542C287.846 67.205 290.235 66.68 292.354 67.518C293.945 68.147 295.515 68.97 296.754 70.245C297.006 70.505 296.681 70.806 296.401 71C296.789 70.891 297.062 71.097 297.173 71.41C297.257 71.649 297.257 71.951 297.173 72.19C297.061 72.502 296.782 72.603 296.408 72.654C295.001 72.844 296.773 71.464 296.073 71.912C294.8 72.726 295.546 74.132 294.801 75.4C294.521 75.206 294.291 74.988 294.401 74.6C294.635 75.122 294.033 75.412 293.865 75.728C293.48 76.453 292.581 77.868 291.696 77.261z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M259.198 84.609C256.044 83.815 252.994 83.93 249.978 82.654C249.911 82.626 249.688 82.973 249.624 82.946C248.258 82.352 247.34 81.386 246.264 80.34C245.351 79.452 243.693 79.839 242.419 79.352C242.095 79.228 241.892 78.716 241.591 78.677C240.372 78.52 239.445 77.571 238.4 77C240.736 76.205 243.147 76.236 245.609 75.852C245.722 75.834 245.867 76.155 246 76.155C246.136 76.155 246.266 75.934 246.4 75.8C246.595 76.08 246.897 76.406 247.154 76.152C247.702 75.612 248.258 75.802 248.798 75.842C248.942 75.852 249.067 76.155 249.2 76.155C249.336 76.155 249.467 75.844 249.6 75.844C249.736 75.845 249.867 76.155 250 76.155C250.136 76.155 250.266 75.934 250.4 75.8C251.092 76.582 251.977 76.028 252.799 76.207C253.837 76.434 254.104 77.582 255.178 77.88C259.893 79.184 264.03 81.329 268.393 83.416C268.7 83.563 268.91 83.811 268.8 84.2C269.067 84.2 269.38 84.112 269.57 84.244C270.628 84.976 271.669 85.524 272.366 86.622C272.582 86.961 272.253 87.368 272.02 87.316C267.591 86.321 263.585 85.713 259.198 84.609z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M245.338 128.821C243.746 127.602 243.162 125.571 242.034 123.779C241.82 123.439 242.094 123.125 242.411 123.036C242.971 122.877 243.514 123.355 243.923 123.557C245.668 124.419 247.203 125.661 249.2 125.8C251.19 128.034 255.45 128.419 255.457 131.8C255.458 132.659 254.03 131.741 253.6 132.6C251.149 131.597 248.76 131.7 246.38 130.233C245.763 129.852 246.093 129.399 245.338 128.821z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cc7226')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M217.8 76.244C217.935 76.245 224.966 76.478 224.949 76.592C224.904 76.901 217.174 77.95 216.81 77.78C216.646 77.704 209.134 80.134 209 80C209.268 79.865 217.534 76.244 217.8 76.244z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M233.2 86C233.2 86 218.4 87.8 214 89C209.6 90.2 191 97.8 188 99.8C188 99.8 174.6 105.2 157.6 125.2C157.6 125.2 165.2 121.8 167.4 119C167.4 119 181 106.4 180.8 109C180.8 109 193 100.4 192.4 102.6C192.4 102.6 216.8 91.4 214.8 94.6C214.8 94.6 236.4 90 235.4 92C235.4 92 254.2 96.4 251.4 96.6C251.4 96.6 245.6 97.8 252 101.4C252 101.4 248.6 105.8 243.2 101.8C237.8 97.8 240.8 100 235.8 101C235.8 101 233.2 101.8 228.6 97.8C228.6 97.8 223 93.2 214.2 96.8C214.2 96.8 183.6 109.4 181.6 110C181.6 110 178 112.8 175.6 116.4C175.6 116.4 169.8 120.8 166.8 122.2C166.8 122.2 154 133.8 152.8 135.2C152.8 135.2 149.4 140.4 148.6 140.8C148.6 140.8 155 137 157 135C157 135 171 125 176.4 124.2C176.4 124.2 180.8 121.2 181.6 119.8C181.6 119.8 196 110.6 200.2 110.6C200.2 110.6 209.4 115.8 211.8 108.8C211.8 108.8 217.6 107 223.2 108.2C223.2 108.2 226.4 105.6 225.6 103.4C225.6 103.4 227.2 101.6 228.2 105.4C228.2 105.4 231.6 109 236.4 107C236.4 107 240.4 106.8 238.4 109.2C238.4 109.2 234 113 222.2 113.2C222.2 113.2 209.8 113.8 193.4 121.4C193.4 121.4 163.6 131.8 154.4 142.2C154.4 142.2 148 151 142.6 152.2C142.6 152.2 136.8 153 130.8 160.4C130.8 160.4 140.6 154.6 149.6 154.6C149.6 154.6 153.6 152.2 149.8 155.8C149.8 155.8 146.2 163.4 147.8 168.8C147.8 168.8 147.2 174 146.4 175.6C146.4 175.6 138.6 188.4 138.6 190.8C138.6 193.2 139.8 203 140.2 203.6C140.6 204.2 139.2 202 143 204.4C146.8 206.8 149.6 208.4 150.4 211.2C151.2 214 148.4 205.8 148.2 204C148 202.2 143.8 195 144.6 192.6C144.6 192.6 145.6 193.6 146.4 195C146.4 195 145.8 194.4 146.4 190.8C146.4 190.8 147.2 185.6 148.6 182.4C150 179.2 152 175.4 152.4 174.6C152.8 173.8 152.8 168 154.2 170.6L157.6 173.2C157.6 173.2 154.8 170.6 157 168.4C157 168.4 156 162.8 157.8 160.2C157.8 160.2 164.8 151.8 166.4 150.8C168 149.8 166.6 150.2 166.6 150.2C166.6 150.2 172.6 146 166.8 147.6C166.8 147.6 162.8 149.2 159.8 149.2C159.8 149.2 152.2 151.2 156.2 147C160.2 142.8 170.2 137.4 174 137.6L174.8 139.2L186 136.8L184.8 137.6C184.8 137.6 184.6 137.4 188.8 137C193 136.6 198.8 138 200.2 136.2C201.6 134.4 205 133.4 204.6 134.8C204.2 136.2 204 138.2 204 138.2C204 138.2 209 132.4 208.4 134.6C207.8 136.8 199.6 142 198.2 148.2L208.6 140L212.2 137C212.2 137 215.8 139.2 216 137.6C216.2 136 220.8 130.2 222 130.4C223.2 130.6 225.2 127.8 225 130.4C224.8 133 232.4 138.4 232.4 138.4C232.4 138.4 235.6 136.6 237 138C238.4 139.4 242.6 118.2 242.6 118.2L267.6 107.6L311.201 104.2L294.201 97.4L233.2 86z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#4c0000; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M251.4 285C251.4 285 236.4 268.2 228 265.6C228 265.6 214.6 258.8 190 266.6')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#4c0000; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M224.8 264.2C224.8 264.2 199.6 256.2 184.2 260.4C184.2 260.4 165.8 262.4 157.4 276.2')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#4c0000; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M221.2 263C221.2 263 204.2 255.8 189.4 253.6C189.4 253.6 172.8 251 156.2 258.2C156.2 258.2 144 264.2 138.6 274.4')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#4c0000; stroke-width:2')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M222.2 263.4C222.2 263.4 206.8 252.4 205.8 251C205.8 251 198.8 240 185.8 239.6C185.8 239.6 164.4 240.4 147.2 248.4')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M220.895 254.407C222.437 255.87 249.4 284.8 249.4 284.8C284.6 321.401 256.6 287.2 256.6 287.2C249 282.4 239.8 263.6 239.8 263.6C238.6 260.8 253.8 270.8 253.8 270.8C257.8 271.6 271.4 290.8 271.4 290.8C264.6 288.4 269.4 295.6 269.4 295.6C272.2 297.6 292.601 313.201 292.601 313.201C296.201 317.201 300.201 318.801 300.201 318.801C314.201 313.601 307.801 326.801 307.801 326.801C310.201 333.601 315.801 322.001 315.801 322.001C327.001 305.2 310.601 307.601 310.601 307.601C280.6 310.401 273.8 294.4 273.8 294.4C271.4 292 280.2 294.4 280.2 294.4C288.601 296.4 273 282 273 282C275.4 282 284.6 288.8 284.6 288.8C295.001 298 297.001 296 297.001 296C315.001 287.2 325.401 294.8 325.401 294.8C327.401 296.4 321.801 303.2 323.401 308.401C325.001 313.601 329.801 326.001 329.801 326.001C327.401 327.601 327.801 338.401 327.801 338.401C344.601 361.601 335.001 359.601 335.001 359.601C319.401 359.201 334.201 366.801 334.201 366.801C337.401 368.801 346.201 376.001 346.201 376.001C343.401 374.801 341.801 380.001 341.801 380.001C346.601 384.001 343.801 388.801 343.801 388.801C337.801 390.001 336.601 394.001 336.601 394.001C343.401 402.001 333.401 402.401 333.401 402.401C337.001 406.801 332.201 418.801 332.201 418.801C327.401 418.801 321.001 424.401 321.001 424.401C323.401 429.201 313.001 434.801 313.001 434.801C304.601 436.401 307.401 443.201 307.401 443.201C299.401 449.201 297.001 465.201 297.001 465.201C296.201 475.601 293.801 478.801 299.001 476.801C304.201 474.801 303.401 462.401 303.401 462.401C298.601 446.801 341.401 430.801 341.401 430.801C345.401 429.201 346.201 424.001 346.201 424.001C348.201 424.401 357.001 432.001 357.001 432.001C364.601 443.201 365.001 434.001 365.001 434.001C366.201 430.401 364.601 424.401 364.601 424.401C370.601 402.801 356.601 396.401 356.601 396.401C346.601 362.801 360.601 371.201 360.601 371.201C363.401 376.801 374.201 382.001 374.201 382.001L377.801 379.601C376.201 374.801 384.601 368.801 384.601 368.801C387.401 375.201 393.401 367.201 393.401 367.201C397.001 342.801 409.401 357.201 409.401 357.201C413.401 358.401 414.601 351.601 414.601 351.601C418.201 341.201 414.601 327.601 414.601 327.601C418.201 327.201 427.801 333.201 427.801 333.201C430.601 329.601 421.401 312.801 425.401 315.201C429.401 317.601 433.801 319.201 433.801 319.201C434.601 317.201 424.601 304.801 424.601 304.801C420.201 302 415.001 281.6 415.001 281.6C422.201 285.2 412.201 270 412.201 270C412.201 266.8 418.201 255.6 418.201 255.6C417.401 248.8 418.201 249.2 418.201 249.2C421.001 250.4 429.001 252 422.201 245.6C415.401 239.2 423.001 234.4 423.001 234.4C427.401 231.6 413.801 232 413.801 232C408.601 227.6 409.001 223.6 409.001 223.6C417.001 225.6 402.601 211.2 400.201 207.6C397.801 204 407.401 198.8 407.401 198.8C420.601 195.2 409.001 192 409.001 192C389.401 192.4 400.201 181.6 400.201 181.6C406.201 182 404.601 179.6 404.601 179.6C399.401 178.4 389.801 172 389.801 172C385.801 168.4 389.401 169.2 389.401 169.2C406.201 170.4 377.401 159.2 377.401 159.2C385.401 159.2 367.401 148.8 367.401 148.8C365.401 147.2 362.201 139.6 362.201 139.6C356.201 134.4 351.401 127.6 351.401 127.6C351.001 123.2 346.201 118.4 346.201 118.4C334.601 104.8 329.001 105.2 329.001 105.2C314.201 101.6 309.001 102.4 309.001 102.4L256.2 106.8C229.8 119.6 237.6 140.6 237.6 140.6C244 149 253.2 145.2 253.2 145.2C257.8 139 269.4 141.2 269.4 141.2C289.801 144.4 287.201 140.8 287.201 140.8C284.801 136.2 268.6 130 268.4 129.4C268.2 128.8 259.4 125.4 259.4 125.4C256.4 124.2 252 115 252 115C248.8 111.6 264.6 117.4 264.6 117.4C263.4 118.4 270.8 122.4 270.8 122.4C288.201 121.4 298.801 132.2 298.801 132.2C309.601 148.8 309.801 140.6 309.801 140.6C312.601 131.2 300.801 110 300.801 110C301.201 108 309.401 114.6 309.401 114.6C310.801 112.6 311.601 118.4 311.601 118.4C311.801 120.8 315.601 128.8 315.601 128.8C318.401 141.8 322.001 134.4 322.001 134.4L326.601 143.8C328.001 146.4 322.001 154 322.001 154C321.801 156.8 322.601 156.6 317.001 164.2C311.401 171.8 314.801 176.2 314.801 176.2C313.401 182.8 322.201 182.4 322.201 182.4C324.801 184.6 328.201 184.6 328.201 184.6C330.001 186.6 332.401 186 332.401 186C334.001 182.2 340.201 184.2 340.201 184.2C341.601 181.8 349.801 181.4 349.801 181.4C350.801 178.8 351.201 177.2 354.601 176.6C358.001 176 333.401 133 333.401 133C339.801 132.2 331.601 119.8 331.601 119.8C329.401 113.2 340.801 127.8 343.001 129.2C345.201 130.6 346.201 132.8 344.601 132.6C343.001 132.4 341.201 134.6 342.601 134.8C344.001 135 357.001 150 360.401 160.2C363.801 170.4 369.801 174.4 376.001 180.4C382.201 186.4 381.401 210.6 381.401 210.6C381.001 219.4 387.001 230 387.001 230C389.001 233.8 384.801 252 384.801 252C382.801 254.2 384.201 255 384.201 255C385.201 256.2 392.001 269.4 392.001 269.4C390.201 269.2 393.801 272.8 393.801 272.8C399.001 278.8 392.601 275.8 392.601 275.8C386.601 274.2 393.601 284 393.601 284C394.801 285.8 385.801 281.2 385.801 281.2C376.601 280.6 388.201 287.8 388.201 287.8C396.801 295 385.401 290.6 385.401 290.6C380.801 288.8 384.001 295.6 384.001 295.6C387.201 297.2 404.401 304.2 404.401 304.2C404.801 308.001 401.801 313.001 401.801 313.001C402.201 317.001 400.001 320.401 400.001 320.401C398.801 328.601 398.201 329.401 398.201 329.401C394.001 329.601 386.601 343.401 386.601 343.401C384.801 346.001 374.601 358.001 374.601 358.001C372.601 365.001 354.601 357.801 354.601 357.801C348.001 361.201 350.001 357.801 350.001 357.801C349.601 355.601 354.401 349.601 354.401 349.601C361.401 347.001 358.801 336.201 358.801 336.201C362.801 334.801 351.601 332.001 351.801 330.801C352.001 329.601 357.801 328.201 357.801 328.201C365.801 326.201 361.401 323.801 361.401 323.801C360.801 319.801 363.801 314.201 363.801 314.201C375.401 313.401 363.801 297.2 363.801 297.2C353.001 289.6 352.001 283.8 352.001 283.8C364.601 275.6 356.401 263.2 356.601 259.6C356.801 256 358.001 234.4 358.001 234.4C356.001 228.2 353.001 214.6 353.001 214.6C355.201 209.4 362.601 196.8 362.601 196.8C365.401 192.6 374.201 187.8 372.001 184.8C369.801 181.8 362.001 183.6 362.001 183.6C354.201 182.2 354.801 187.4 354.801 187.4C353.201 188.4 352.401 193.4 352.401 193.4C351.68 201.333 342.801 207.6 342.801 207.6C331.601 213.8 340.801 217.8 340.801 217.8C346.801 224.4 337.001 224.6 337.001 224.6C326.001 222.8 334.201 233 334.201 233C345.001 245.8 342.001 248.6 342.001 248.6C331.801 249.6 344.401 258.8 344.401 258.8C344.401 258.8 343.601 256.8 343.801 258.6C344.001 260.4 347.001 264.6 347.801 266.6C348.601 268.6 344.601 268.8 344.601 268.8C345.201 278.4 329.801 274.2 329.801 274.2C329.801 274.2 329.801 274.2 328.201 274.4C326.601 274.6 315.401 273.8 309.601 271.6C303.801 269.4 297.001 269.4 297.001 269.4C297.001 269.4 293.001 271.2 285.4 271C277.8 270.8 269.8 273.6 269.8 273.6C265.4 273.2 274 268.8 274.2 269C274.4 269.2 280 263.6 272 264.2C250.203 265.835 239.4 255.6 239.4 255.6C237.4 254.2 234.8 251.4 234.8 251.4C224.8 249.4 236.2 263.8 236.2 263.8C237.4 265.2 236 266.2 236 266.2C235.2 264.6 227.4 259.2 227.4 259.2C224.589 258.227 223.226 256.893 220.895 254.407z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #4c0000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M197 242.8C197 242.8 208.6 248.4 211.2 251.2C213.8 254 227.8 265.4 227.8 265.4C227.8 265.4 222.4 263.4 219.8 261.6C217.2 259.8 206.4 251.6 206.4 251.6C206.4 251.6 202.6 245.6 197 242.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #99cc32')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M138.991 211.603C139.328 211.455 138.804 208.743 138.6 208.2C137.578 205.474 128.6 204 128.6 204C128.373 205.365 128.318 206.961 128.424 208.599C128.424 208.599 133.292 214.118 138.991 211.603z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #659900')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M138.991 211.403C138.542 211.561 138.976 208.669 138.8 208.2C137.778 205.474 128.6 203.9 128.6 203.9C128.373 205.265 128.318 206.861 128.424 208.499C128.424 208.499 132.692 213.618 138.991 211.403z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M134.6 211.546C133.975 211.546 133.469 210.406 133.469 209C133.469 207.595 133.975 206.455 134.6 206.455C135.225 206.455 135.732 207.595 135.732 209C135.732 210.406 135.225 211.546 134.6 211.546z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M134.6 209z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M89 309.601C89 309.601 83.4 319.601 108.2 313.601C108.2 313.601 122.2 312.401 124.6 310.001C125.8 310.801 134.166 313.734 137 314.401C143.8 316.001 152.2 306 152.2 306C152.2 306 156.8 295.5 159.6 295.5C162.4 295.5 159.2 297.1 159.2 297.1C159.2 297.1 152.6 307.201 153 308.801C153 308.801 147.8 328.801 131.8 329.601C131.8 329.601 115.65 330.551 117 336.401C117 336.401 125.8 334.001 128.2 336.401C128.2 336.401 139 336.001 131 342.401L124.2 354.001C124.2 354.001 124.34 357.919 114.2 354.401C104.4 351.001 94.1 338.101 94.1 338.101C94.1 338.101 78.15 323.551 89 309.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #e59999')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M87.8 313.601C87.8 313.601 85.8 323.201 122.6 312.801C122.6 312.801 127 312.801 129.4 313.601C131.8 314.401 143.8 317.201 145.8 316.001C145.8 316.001 138.6 329.601 127 328.001C127 328.001 113.8 329.601 114.2 334.401C114.2 334.401 118.2 341.601 123 344.001C123 344.001 125.8 346.401 125.4 349.601C125 352.801 122.2 354.401 120.2 355.201C118.2 356.001 115 352.801 113.4 352.801C111.8 352.801 103.4 346.401 99 341.601C94.6 336.801 86.2 324.801 86.6 322.001C87 319.201 87.8 313.601 87.8 313.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #b26565')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M91 331.051C93.6 335.001 96.8 339.201 99 341.601C103.4 346.401 111.8 352.801 113.4 352.801C115 352.801 118.2 356.001 120.2 355.201C122.2 354.401 125 352.801 125.4 349.601C125.8 346.401 123 344.001 123 344.001C119.934 342.468 117.194 338.976 115.615 336.653C115.615 336.653 115.8 339.201 110.6 338.401C105.4 337.601 100.2 334.801 98.6 331.601C97 328.401 94.6 326.001 96.2 329.601C97.8 333.201 100.2 336.801 101.8 337.201C103.4 337.601 103 338.801 100.6 338.401C98.2 338.001 95.4 337.601 91 332.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #992600')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M88.4 310.001C88.4 310.001 90.2 296.4 91.4 292.4C91.4 292.4 90.6 285.6 93 281.4C95.4 277.2 97.4 271 100.4 265.6C103.4 260.2 103.6 256.2 107.6 254.6C111.6 253 117.6 244.4 120.4 243.4C123.2 242.4 123 243.2 123 243.2C123 243.2 129.8 228.4 143.4 232.4C143.4 232.4 127.2 229.6 143 220.2C143 220.2 138.2 221.3 141.5 214.3C143.701 209.632 143.2 216.4 132.2 228.2C132.2 228.2 127.2 236.8 122 239.8C116.8 242.8 104.8 249.8 103.6 253.6C102.4 257.4 99.2 263.2 97.2 264.8C95.2 266.4 92.4 270.6 92 274C92 274 90.8 278 89.4 279.2C88 280.4 87.8 283.6 87.8 285.6C87.8 287.6 85.8 290.4 86 292.8C86 292.8 86.8 311.801 86.4 313.801L88.4 310.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M79.8 314.601C79.8 314.601 77.8 313.201 73.4 319.201C73.4 319.201 80.7 352.201 80.7 353.601C80.7 353.601 81.8 351.501 80.5 344.301C79.2 337.101 78.3 324.401 78.3 324.401L79.8 314.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #992600')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M101.4 254C101.4 254 83.8 257.2 84.2 286.4L83.4 311.201C83.4 311.201 82.2 285.6 81 284C79.8 282.4 83.8 271.2 80.6 277.2C80.6 277.2 66.6 291.2 74.6 312.401C74.6 312.401 76.1 315.701 73.1 311.101C73.1 311.101 68.5 298.5 69.6 292.1C69.6 292.1 69.8 289.9 71.7 287.1C71.7 287.1 80.3 275.4 83 273.1C83 273.1 84.8 258.7 100.2 253.5C100.2 253.5 105.9 251.2 101.4 254z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M240.8 187.8C241.46 187.446 241.451 186.476 242.031 186.303C243.18 185.959 243.344 184.892 243.862 184.108C244.735 182.789 244.928 181.256 245.51 179.765C245.782 179.065 245.809 178.11 245.496 177.45C244.322 174.969 243.62 172.52 242.178 170.094C241.91 169.644 241.648 168.85 241.447 168.252C240.984 166.868 239.727 165.877 238.867 164.557C238.579 164.116 239.104 163.191 238.388 163.107C237.491 163.002 236.042 162.422 235.809 163.448C235.221 166.035 236.232 168.558 237.2 171C236.418 171.692 236.752 172.613 236.904 173.38C237.614 176.986 236.416 180.338 235.655 183.812C235.632 183.916 235.974 184.114 235.946 184.176C234.724 186.862 233.272 189.307 231.453 191.688C230.695 192.68 229.823 193.596 229.326 194.659C228.958 195.446 228.55 196.412 228.8 197.4C225.365 200.18 223.115 204.025 220.504 207.871C220.042 208.551 220.333 209.76 220.884 210.029C221.697 210.427 222.653 209.403 223.123 208.557C223.512 207.859 223.865 207.209 224.356 206.566C224.489 206.391 224.31 205.972 224.445 205.851C227.078 203.504 228.747 200.568 231.2 198.2C233.15 197.871 234.687 196.873 236.435 195.86C236.743 195.681 237.267 195.93 237.557 195.735C239.31 194.558 239.308 192.522 239.414 190.612C239.464 189.728 239.66 188.411 240.8 187.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M231.959 183.334C232.083 183.257 231.928 182.834 232.037 182.618C232.199 182.294 232.602 182.106 232.764 181.782C232.873 181.566 232.71 181.186 232.846 181.044C235.179 178.597 235.436 175.573 234.4 172.6C235.424 171.98 235.485 170.718 235.06 169.871C234.207 168.171 234.014 166.245 233.039 164.702C232.237 163.433 230.659 162.189 229.288 163.492C228.867 163.892 228.546 164.679 228.824 165.391C228.888 165.554 229.173 165.7 229.146 165.782C229.039 166.106 228.493 166.33 228.487 166.602C228.457 168.098 227.503 169.609 228.133 170.938C228.905 172.567 229.724 174.424 230.4 176.2C229.166 178.316 230.199 180.765 228.446 182.642C228.31 182.788 228.319 183.174 228.441 183.376C228.733 183.862 229.139 184.268 229.625 184.56C229.827 184.681 230.175 184.683 230.375 184.559C230.953 184.197 231.351 183.71 231.959 183.334z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M294.771 173.023C296.16 174.815 296.45 177.61 294.401 179C294.951 182.309 298.302 180.33 300.401 179.8C300.292 179.412 300.519 179.068 300.802 179.063C301.859 179.048 302.539 178.016 303.601 178.2C304.035 176.643 305.673 175.941 306.317 174.561C308.043 170.866 307.452 166.593 304.868 163.347C304.666 163.093 304.883 162.576 304.759 162.214C304.003 160.003 301.935 159.688 300.001 159C298.824 155.125 298.163 151.094 296.401 147.4C294.787 147.15 294.089 145.411 292.752 144.691C291.419 143.972 290.851 145.551 290.892 146.597C290.899 146.802 291.351 147.026 291.181 147.391C291.105 147.555 290.845 147.666 290.845 147.8C290.846 147.935 291.067 148.066 291.201 148.2C290.283 149.02 288.86 149.497 288.565 150.642C287.611 154.352 290.184 157.477 291.852 160.678C292.443 161.813 291.707 163.084 290.947 164.292C290.509 164.987 290.617 166.114 290.893 166.97C291.645 169.301 293.236 171.04 294.771 173.023z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M257.611 191.409C256.124 193.26 252.712 195.829 255.629 197.757C255.823 197.886 256.193 197.89 256.366 197.756C258.387 196.191 260.39 195.288 262.826 194.706C262.95 194.677 263.224 195.144 263.593 194.983C265.206 194.28 267.216 194.338 268.4 193C272.167 193.224 275.732 192.108 279.123 190.8C280.284 190.352 281.554 189.793 282.755 189.291C284.131 188.715 285.335 187.787 286.447 186.646C286.58 186.51 286.934 186.6 287.201 186.6C287.161 185.737 288.123 185.61 288.37 184.988C288.462 184.756 288.312 184.36 288.445 184.258C290.583 182.628 291.503 180.61 290.334 178.233C290.049 177.655 289.8 177.037 289.234 176.561C288.149 175.65 287.047 176.504 286 176.2C285.841 176.828 285.112 176.656 284.726 176.854C283.867 177.293 282.534 176.708 281.675 177.146C280.313 177.841 279.072 178.01 277.65 178.387C277.338 178.469 276.56 178.373 276.4 179C276.266 178.866 276.118 178.632 276.012 178.654C274.104 179.05 272.844 179.264 271.543 180.956C271.44 181.089 270.998 180.91 270.839 181.045C269.882 181.853 269.477 183.087 268.376 183.759C268.175 183.882 267.823 183.714 267.629 183.843C266.983 184.274 266.616 184.915 265.974 185.362C265.645 185.591 265.245 185.266 265.277 185.01C265.522 183.063 266.175 181.276 265.6 179.4C267.677 176.88 270.194 174.931 272 172.2C272.015 170.034 272.707 167.888 272.594 165.811C272.584 165.618 272.296 164.885 272.17 164.538C271.858 163.684 272.764 162.618 271.92 161.894C270.516 160.691 269.224 161.567 268.4 163C266.562 163.39 264.496 164.083 262.918 162.849C261.911 162.062 261.333 161.156 260.534 160.1C259.549 158.798 259.884 157.362 259.954 155.798C259.96 155.67 259.645 155.534 259.645 155.4C259.646 155.265 259.866 155.134 260 155C259.294 154.374 259.019 153.316 258 153C258.305 151.908 257.629 151.024 256.758 150.722C254.763 150.031 253.086 151.943 251.194 152.016C250.68 152.035 250.213 150.997 249.564 150.672C249.132 150.456 248.428 150.423 248.066 150.689C247.378 151.193 246.789 151.307 246.031 151.512C244.414 151.948 243.136 153.042 241.656 153.897C240.171 154.754 239.216 156.191 238.136 157.511C237.195 158.663 237.059 161.077 238.479 161.577C240.322 162.227 241.626 159.524 243.592 159.85C243.904 159.901 244.11 160.212 244 160.6C244.389 160.709 244.607 160.48 244.8 160.2C245.658 161.219 246.822 161.556 247.76 162.429C248.73 163.333 250.476 162.915 251.491 163.912C253.02 165.414 252.461 168.095 254.4 169.4C253.814 170.713 253.207 171.99 252.872 173.417C252.59 174.623 253.584 175.82 254.795 175.729C256.053 175.635 256.315 174.876 256.8 173.8C257.067 174.067 257.536 174.364 257.495 174.58C257.038 176.967 256.011 178.96 255.553 181.391C255.494 181.708 255.189 181.91 254.8 181.8C254.332 185.949 250.28 188.343 247.735 191.508C247.332 192.01 247.328 193.259 247.737 193.662C249.14 195.049 251.1 193.503 252.8 193C253.013 191.794 253.872 190.852 255.204 190.908C255.46 190.918 255.695 190.376 256.019 190.246C256.367 190.108 256.869 190.332 257.155 190.134C258.884 188.939 260.292 187.833 262.03 186.644C262.222 186.513 262.566 186.672 262.782 186.564C263.107 186.402 263.294 186.015 263.617 185.83C263.965 185.63 264.207 185.92 264.4 186.2C263.754 186.549 263.75 187.506 263.168 187.708C262.393 187.976 261.832 188.489 261.158 188.936C260.866 189.129 260.207 188.881 260.103 189.06C259.505 190.088 258.321 190.526 257.611 191.409z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M202.2 142C202.2 142 192.962 139.128 181.8 164.8C181.8 164.8 179.4 170 177 172C174.6 174 163.4 177.6 161.4 181.6L151 197.6C151 197.6 165.8 181.6 169 179.2C169 179.2 177 170.8 173.8 177.6C173.8 177.6 159.8 188.4 161 197.6C161 197.6 155.4 212 154.6 214C154.6 214 170.6 182 173 180.8C175.4 179.6 176.6 179.6 175.4 183.2C174.2 186.8 173.8 203.2 171 205.2C171 205.2 179 184.8 178.2 181.6C178.2 181.6 181.4 178 183.8 183.2L182.6 199.2L187 211.2C187 211.2 184.6 200 186.2 184.4C186.2 184.4 184.2 174 188.2 179.6C192.2 185.2 201.8 191.2 201.8 196C201.8 196 196.6 178.4 187.4 173.6L183.4 179.6L182.2 177.6C182.2 177.6 178.6 176.8 183 170C187.4 163.2 187 162.4 187 162.4C187 162.4 193.4 169.6 195 169.6C195 169.6 208.2 162 209.4 186.4C209.4 186.4 216.2 172 207 165.2C207 165.2 192.2 163.2 193.4 158L200.6 145.6C204.2 140.4 202.6 143.2 202.6 143.2z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M182.2 158.4C182.2 158.4 169.4 158.4 166.2 163.6L159 173.2C159 173.2 176.2 163.2 180.2 162C184.2 160.8 182.2 158.4 182.2 158.4z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M142.2 164.8C142.2 164.8 140.2 166 139.8 168.8C139.4 171.6 137 172 137.8 174.8C138.6 177.6 140.6 180 140.6 176C140.6 172 142.2 170 143 168.8C143.8 167.6 145.4 163.2 142.2 164.8z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M133.4 226C133.4 226 125 222 121.8 218.4C118.6 214.8 119.052 219.966 114.2 219.6C108.353 219.159 109.4 203.2 109.4 203.2L105.4 210.8C105.4 210.8 104.2 225.2 112.2 222.8C116.107 221.628 117.4 223.2 115.8 224C114.2 224.8 121.4 225.2 118.6 226.8C115.8 228.4 130.2 223.2 127.8 233.6L133.4 226z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M120.8 240.4C120.8 240.4 105.4 244.8 101.8 235.2C101.8 235.2 97 237.6 99.2 240.6C101.4 243.6 102.6 244 102.6 244C102.6 244 108 245.2 107.4 246C106.8 246.8 104.4 250.2 104.4 250.2C104.4 250.2 114.6 244.2 120.8 240.4z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M349.201 318.601C348.774 320.735 347.103 321.536 345.201 322.201C343.284 321.243 340.686 318.137 338.801 320.201C338.327 319.721 337.548 319.661 337.204 318.999C336.739 318.101 337.011 317.055 336.669 316.257C336.124 314.985 335.415 313.619 335.601 312.201C337.407 311.489 338.002 309.583 337.528 307.82C337.459 307.563 337.03 307.366 337.23 307.017C337.416 306.694 337.734 306.467 338.001 306.2C337.866 306.335 337.721 306.568 337.61 306.548C337 306.442 337.124 305.805 337.254 305.418C337.839 303.672 339.853 303.408 341.201 304.6C341.457 304.035 341.966 304.229 342.401 304.2C342.351 303.621 342.759 303.094 342.957 302.674C343.475 301.576 345.104 302.682 345.901 302.07C346.977 301.245 348.04 300.546 349.118 301.149C350.927 302.162 352.636 303.374 353.835 305.115C354.41 305.949 354.65 307.23 354.592 308.188C354.554 308.835 353.173 308.483 352.83 309.412C352.185 311.16 354.016 311.679 354.772 313.017C354.97 313.366 354.706 313.67 354.391 313.768C353.98 313.896 353.196 313.707 353.334 314.16C354.306 317.353 351.55 318.031 349.201 318.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M339.6 338.201C339.593 336.463 337.992 334.707 339.201 333.001C339.336 333.135 339.467 333.356 339.601 333.356C339.736 333.356 339.867 333.135 340.001 333.001C341.496 335.217 345.148 336.145 345.006 338.991C344.984 339.438 343.897 340.356 344.801 341.001C342.988 342.349 342.933 344.719 342.001 346.601C340.763 346.315 339.551 345.952 338.401 345.401C338.753 343.915 338.636 342.231 339.456 340.911C339.89 340.213 339.603 339.134 339.6 338.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M173.4 329.201C173.4 329.201 156.542 339.337 170.6 324.001C179.4 314.401 189.4 308.801 189.4 308.801C189.4 308.801 199.8 304.4 203.4 303.2C207 302 222.2 296.8 225.4 296.4C228.6 296 238.2 292 245 296C251.8 300 259.8 304.4 259.8 304.4C259.8 304.4 243.4 296 239.8 298.4C236.2 300.8 229 300.4 223 303.6C223 303.6 208.2 308.001 205 310.001C201.8 312.001 191.4 323.601 189.8 322.801C188.2 322.001 190.2 321.601 191.4 318.801C192.6 316.001 190.6 314.401 182.6 320.801C174.6 327.201 173.4 329.201 173.4 329.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M180.805 323.234C180.805 323.234 182.215 310.194 190.693 311.859C190.693 311.859 198.919 307.689 201.641 305.721C201.641 305.721 209.78 304.019 211.09 303.402C229.569 294.702 244.288 299.221 244.835 298.101C245.381 296.982 265.006 304.099 268.615 308.185C269.006 308.628 258.384 302.588 248.686 300.697C240.413 299.083 218.811 300.944 207.905 306.48C204.932 307.989 195.987 313.773 193.456 313.662C190.925 313.55 180.805 323.234 180.805 323.234z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M177 348.801C177 348.801 161.8 346.401 178.6 344.801C178.6 344.801 196.6 342.801 200.6 337.601C200.6 337.601 214.2 328.401 217 328.001C219.8 327.601 249.8 320.401 250.2 318.001C250.6 315.601 256.2 315.601 257.8 316.401C259.4 317.201 258.6 318.401 255.8 319.201C253 320.001 221.8 336.401 215.4 337.601C209 338.801 197.4 346.401 192.6 347.601C187.8 348.801 177 348.801 177 348.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M196.52 341.403C196.52 341.403 187.938 340.574 196.539 339.755C196.539 339.755 205.355 336.331 207.403 333.668C207.403 333.668 214.367 328.957 215.8 328.753C217.234 328.548 231.194 324.861 231.399 323.633C231.604 322.404 265.67 309.823 270.09 313.013C273.001 315.114 263.1 313.437 253.466 317.847C252.111 318.467 218.258 333.054 214.981 333.668C211.704 334.283 205.765 338.174 203.307 338.788C200.85 339.403 196.52 341.403 196.52 341.403z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M188.6 343.601C188.6 343.601 193.8 343.201 192.6 344.801C191.4 346.401 189 345.601 189 345.601L188.6 343.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M181.4 345.201C181.4 345.201 186.6 344.801 185.4 346.401C184.2 348.001 181.8 347.201 181.8 347.201L181.4 345.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M171 346.801C171 346.801 176.2 346.401 175 348.001C173.8 349.601 171.4 348.801 171.4 348.801L171 346.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M163.4 347.601C163.4 347.601 168.6 347.201 167.4 348.801C166.2 350.401 163.8 349.601 163.8 349.601L163.4 347.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M201.8 308.001C201.8 308.001 206.2 308.001 205 309.601C203.8 311.201 200.6 310.801 200.6 310.801L201.8 308.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M191.8 313.601C191.8 313.601 198.306 311.46 195.8 314.801C194.6 316.401 192.2 315.601 192.2 315.601L191.8 313.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M180.6 318.401C180.6 318.401 185.8 318.001 184.6 319.601C183.4 321.201 181 320.401 181 320.401L180.6 318.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M173 324.401C173 324.401 178.2 324.001 177 325.601C175.8 327.201 173.4 326.401 173.4 326.401L173 324.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M166.2 329.201C166.2 329.201 171.4 328.801 170.2 330.401C169 332.001 166.6 331.201 166.6 331.201L166.2 329.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M205.282 335.598C205.282 335.598 212.203 335.066 210.606 337.195C209.009 339.325 205.814 338.26 205.814 338.26L205.282 335.598z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M215.682 330.798C215.682 330.798 222.603 330.266 221.006 332.395C219.409 334.525 216.214 333.46 216.214 333.46L215.682 330.798z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M226.482 326.398C226.482 326.398 233.403 325.866 231.806 327.995C230.209 330.125 227.014 329.06 227.014 329.06L226.482 326.398z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M236.882 321.598C236.882 321.598 243.803 321.066 242.206 323.195C240.609 325.325 237.414 324.26 237.414 324.26L236.882 321.598z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M209.282 303.598C209.282 303.598 216.203 303.066 214.606 305.195C213.009 307.325 209.014 307.06 209.014 307.06L209.282 303.598z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M219.282 300.398C219.282 300.398 226.203 299.866 224.606 301.995C223.009 304.125 218.614 303.86 218.614 303.86L219.282 300.398z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M196.6 340.401C196.6 340.401 201.8 340.001 200.6 341.601C199.4 343.201 197 342.401 197 342.401L196.6 340.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #992600')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M123.4 241.2C123.4 241.2 119 250 118.6 253.2C118.6 253.2 119.4 244.4 120.6 242.4C121.8 240.4 123.4 241.2 123.4 241.2z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #992600')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M105 255.2C105 255.2 101.8 269.6 102.2 272.4C102.2 272.4 101 260.8 101.4 259.6C101.8 258.4 105 255.2 105 255.2z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M125.8 180.6L125.6 183.8L123.4 184C123.4 184 137.6 196.6 138.2 204.2C138.2 204.2 139 196 125.8 180.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M129.784 181.865C129.353 181.449 129.572 180.704 129.164 180.444C128.355 179.928 130.462 179.871 130.234 179.155C129.851 177.949 130.038 177.928 129.916 176.652C129.859 176.054 130.447 174.514 130.832 174.074C132.278 172.422 130.954 169.49 132.594 167.939C132.898 167.65 133.274 167.098 133.559 166.68C134.218 165.717 135.402 165.229 136.352 164.401C136.67 164.125 136.469 163.298 137.038 163.39C137.752 163.505 138.993 163.375 138.948 164.216C138.835 166.336 137.506 168.056 136.226 169.724C136.677 170.428 136.219 171.063 135.935 171.62C134.6 174.24 134.789 177.081 134.615 179.921C134.61 180.006 134.303 180.084 134.311 180.137C134.664 182.472 135.248 184.671 136.127 186.9C136.493 187.83 136.964 188.725 137.114 189.652C137.225 190.338 137.328 191.171 136.92 191.876C138.955 194.766 137.646 197.417 138.815 200.948C139.022 201.573 140.714 203.487 140.251 203.326C137.738 202.455 137.626 202.057 137.449 201.304C137.303 200.681 136.973 199.304 136.736 198.702C136.672 198.538 136.501 196.654 136.423 196.532C134.91 194.15 136.268 194.326 134.898 191.968C133.47 191.288 132.504 190.184 131.381 189.022C131.183 188.818 132.326 188.094 132.145 187.881C131.053 186.592 129.9 185.825 130.236 184.332C130.391 183.642 130.528 182.585 129.784 181.865z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M126.2 183.6C126.2 183.6 126.6 190.4 129 192C131.4 193.6 130.2 192.8 127 191.6C123.8 190.4 125 189.6 125 189.6C125 189.6 122.2 190 124.6 192C127 194 130.6 196.4 129 196.4C127.4 196.4 119.8 192.4 119.8 189.6C119.8 186.8 118.8 182.7 118.8 182.7C118.8 182.7 119.9 181.9 124.7 182C124.7 182 126.1 182.7 126.2 183.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M125.4 202.2C125.4 202.2 116.88 199.409 98.4 202.8C98.4 202.8 107.431 200.722 126.2 203C136.5 204.25 125.4 202.2 125.4 202.2z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M127.498 202.129C127.498 202.129 119.252 198.611 100.547 200.392C100.547 200.392 109.725 199.103 128.226 202.995C138.38 205.131 127.498 202.129 127.498 202.129z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M129.286 202.222C129.286 202.222 121.324 198.101 102.539 198.486C102.539 198.486 111.787 197.882 129.948 203.14C139.914 206.025 129.286 202.222 129.286 202.222z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M130.556 202.445C130.556 202.445 123.732 198.138 106.858 197.04C106.858 197.04 115.197 197.21 131.078 203.319C139.794 206.672 130.556 202.445 130.556 202.445z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M245.84 212.961C245.84 212.961 244.91 213.605 245.124 212.424C245.339 211.243 273.547 198.073 277.161 198.323C277.161 198.323 246.913 211.529 245.84 212.961z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M242.446 213.6C242.446 213.6 241.57 214.315 241.691 213.121C241.812 211.927 268.899 196.582 272.521 196.548C272.521 196.548 243.404 212.089 242.446 213.6z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M239.16 214.975C239.16 214.975 238.332 215.747 238.374 214.547C238.416 213.348 258.233 197.851 268.045 195.977C268.045 195.977 250.015 204.104 239.16 214.975z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M236.284 216.838C236.284 216.838 235.539 217.532 235.577 216.453C235.615 215.373 253.449 201.426 262.28 199.74C262.28 199.74 246.054 207.054 236.284 216.838z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M204.6 364.801C204.6 364.801 189.4 362.401 206.2 360.801C206.2 360.801 224.2 358.801 228.2 353.601C228.2 353.601 241.8 344.401 244.6 344.001C247.4 343.601 263.8 340.001 264.2 337.601C264.6 335.201 270.6 332.801 272.2 333.601C273.8 334.401 273.8 343.601 271 344.401C268.2 345.201 249.4 352.401 243 353.601C236.6 354.801 225 362.401 220.2 363.601C215.4 364.801 204.6 364.801 204.6 364.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M277.6 327.401C277.6 327.401 274.6 329.001 273.4 331.601C273.4 331.601 267 342.201 252.8 345.401C252.8 345.401 229.8 354.401 222 356.401C222 356.401 208.6 361.401 201.2 360.601C201.2 360.601 194.2 360.801 200.4 362.401C200.4 362.401 220.6 360.401 224 358.601C224 358.601 239.6 353.401 242.6 350.801C245.6 348.201 263.8 343.201 266 341.201C268.2 339.201 278 330.801 277.6 327.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M218.882 358.911C218.882 358.911 224.111 358.685 222.958 360.234C221.805 361.784 219.357 360.91 219.357 360.91L218.882 358.911z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M211.68 360.263C211.68 360.263 216.908 360.037 215.756 361.586C214.603 363.136 212.155 362.263 212.155 362.263L211.68 360.263z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M201.251 361.511C201.251 361.511 206.48 361.284 205.327 362.834C204.174 364.383 201.726 363.51 201.726 363.51L201.251 361.511z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M193.617 362.055C193.617 362.055 198.846 361.829 197.693 363.378C196.54 364.928 194.092 364.054 194.092 364.054L193.617 362.055z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M235.415 351.513C235.415 351.513 242.375 351.212 240.84 353.274C239.306 355.336 236.047 354.174 236.047 354.174L235.415 351.513z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M245.73 347.088C245.73 347.088 251.689 343.787 251.155 348.849C250.885 351.405 246.362 349.749 246.362 349.749L245.73 347.088z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M254.862 344.274C254.862 344.274 262.021 340.573 260.287 346.035C259.509 348.485 255.493 346.935 255.493 346.935L254.862 344.274z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M264.376 339.449C264.376 339.449 268.735 334.548 269.801 341.21C270.207 343.748 265.008 342.11 265.008 342.11L264.376 339.449z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M226.834 355.997C226.834 355.997 232.062 355.77 230.91 357.32C229.757 358.869 227.308 357.996 227.308 357.996L226.834 355.997z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M262.434 234.603C262.434 234.603 261.708 235.268 261.707 234.197C261.707 233.127 279.191 219.863 288.034 218.479C288.034 218.479 271.935 225.208 262.434 234.603z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M265.4 298.4C265.4 298.4 287.401 320.801 296.601 324.401C296.601 324.401 305.801 335.601 301.801 361.601C301.801 361.601 298.601 369.201 295.401 348.401C295.401 348.401 298.601 323.201 287.401 339.201C287.401 339.201 279 329.301 285.4 329.601C285.4 329.601 288.601 331.601 289.001 330.001C289.401 328.401 281.4 314.801 264.2 300.4C247 286 265.4 298.4 265.4 298.4z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M207 337.201C207 337.201 206.8 335.401 208.6 336.201C210.4 337.001 304.601 343.201 336.201 367.201C336.201 367.201 291.001 344.001 207 337.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M217.4 332.801C217.4 332.801 217.2 331.001 219 331.801C220.8 332.601 357.401 331.601 381.001 364.001C381.001 364.001 359.001 338.801 217.4 332.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M229 328.801C229 328.801 228.8 327.001 230.6 327.801C232.4 328.601 405.801 315.601 429.401 348.001C429.401 348.001 419.801 322.401 229 328.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M239 324.001C239 324.001 238.8 322.201 240.6 323.001C242.4 323.801 364.601 285.2 388.201 317.601C388.201 317.601 374.801 293 239 324.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M181 346.801C181 346.801 180.8 345.001 182.6 345.801C184.4 346.601 202.2 348.801 204.2 387.601C204.2 387.601 197 345.601 181 346.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M172.2 348.401C172.2 348.401 172 346.601 173.8 347.401C175.6 348.201 189.8 343.601 187 382.401C187 382.401 188.2 347.201 172.2 348.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M164.2 348.801C164.2 348.801 164 347.001 165.8 347.801C167.6 348.601 183 349.201 170.6 371.601C170.6 371.601 180.2 347.601 164.2 348.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M211.526 304.465C211.526 304.465 211.082 306.464 212.631 305.247C228.699 292.622 261.141 233.72 316.826 228.086C316.826 228.086 278.518 215.976 211.526 304.465z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M222.726 302.665C222.726 302.665 221.363 301.472 223.231 300.847C225.099 300.222 337.541 227.72 376.826 235.686C376.826 235.686 349.719 228.176 222.726 302.665z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M201.885 308.767C201.885 308.767 201.376 310.366 203.087 309.39C212.062 304.27 215.677 247.059 259.254 245.804C259.254 245.804 226.843 231.09 201.885 308.767z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M181.962 319.793C181.962 319.793 180.885 321.079 182.838 320.825C193.084 319.493 214.489 278.222 258.928 283.301C258.928 283.301 226.962 268.955 181.962 319.793z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M193.2 313.667C193.2 313.667 192.389 315.136 194.258 314.511C204.057 311.237 217.141 266.625 261.729 263.078C261.729 263.078 227.603 255.135 193.2 313.667z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M174.922 324.912C174.922 324.912 174.049 325.954 175.631 325.748C183.93 324.669 201.268 291.24 237.264 295.354C237.264 295.354 211.371 283.734 174.922 324.912z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M167.323 330.821C167.323 330.821 166.318 331.866 167.909 331.748C172.077 331.439 202.715 298.36 221.183 313.862C221.183 313.862 209.168 295.139 167.323 330.821z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M236.855 298.898C236.855 298.898 235.654 297.543 237.586 297.158C239.518 296.774 360.221 239.061 398.184 251.927C398.184 251.927 372.243 241.053 236.855 298.898z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M203.4 363.201C203.4 363.201 203.2 361.401 205 362.201C206.8 363.001 222.2 363.601 209.8 386.001C209.8 386.001 219.4 362.001 203.4 363.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M213.8 361.601C213.8 361.601 213.6 359.801 215.4 360.601C217.2 361.401 235 363.601 237 402.401C237 402.401 229.8 360.401 213.8 361.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M220.6 360.001C220.6 360.001 220.4 358.201 222.2 359.001C224 359.801 248.6 363.201 272.2 395.601C272.2 395.601 236.6 358.801 220.6 360.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M228.225 357.972C228.225 357.972 227.788 356.214 229.678 356.768C231.568 357.322 252.002 355.423 290.099 389.599C290.099 389.599 243.924 354.656 228.225 357.972z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M238.625 353.572C238.625 353.572 238.188 351.814 240.078 352.368C241.968 352.922 276.802 357.423 328.499 392.399C328.499 392.399 254.324 350.256 238.625 353.572z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M198.2 342.001C198.2 342.001 198 340.201 199.8 341.001C201.6 341.801 255 344.401 285.4 371.201C285.4 371.201 250.499 346.426 198.2 342.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M188.2 346.001C188.2 346.001 188 344.201 189.8 345.001C191.6 345.801 216.2 349.201 239.8 381.601C239.8 381.601 204.2 344.801 188.2 346.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M249.503 348.962C249.503 348.962 248.938 347.241 250.864 347.655C252.79 348.068 287.86 350.004 341.981 381.098C341.981 381.098 264.317 346.704 249.503 348.962z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M257.903 346.562C257.903 346.562 257.338 344.841 259.264 345.255C261.19 345.668 296.26 347.604 350.381 378.698C350.381 378.698 273.317 343.904 257.903 346.562z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #ffffff; stroke:#000000; stroke-width:0.1')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M267.503 341.562C267.503 341.562 266.938 339.841 268.864 340.255C270.79 340.668 313.86 345.004 403.582 379.298C403.582 379.298 282.917 338.904 267.503 341.562z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M156.2 348.401C156.2 348.401 161.4 348.001 160.2 349.601C159 351.201 156.6 350.401 156.6 350.401L156.2 348.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M187 362.401C187 362.401 192.2 362.001 191 363.601C189.8 365.201 187.4 364.401 187.4 364.401L187 362.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M178.2 362.001C178.2 362.001 183.4 361.601 182.2 363.201C181 364.801 178.6 364.001 178.6 364.001L178.2 362.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M82.831 350.182C82.831 350.182 87.876 351.505 86.218 352.624C84.561 353.744 82.554 352.202 82.554 352.202L82.831 350.182z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M84.831 340.582C84.831 340.582 89.876 341.905 88.218 343.024C86.561 344.144 84.554 342.602 84.554 342.602L84.831 340.582z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M77.631 336.182C77.631 336.182 82.676 337.505 81.018 338.624C79.361 339.744 77.354 338.202 77.354 338.202L77.631 336.182z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M157.4 411.201C157.4 411.201 155.8 411.201 151.8 413.201C149.8 413.201 138.6 416.801 133 426.801C133 426.801 145.4 417.201 157.4 411.201z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M245.116 503.847C245.257 504.105 245.312 504.525 245.604 504.542C246.262 504.582 247.495 504.883 247.37 504.247C246.522 499.941 245.648 495.004 241.515 493.197C240.876 492.918 239.434 493.331 239.36 494.215C239.233 495.739 239.116 497.088 239.425 498.554C239.725 499.975 241.883 499.985 242.8 498.601C243.736 500.273 244.168 502.116 245.116 503.847z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M234.038 508.581C234.786 509.994 234.659 511.853 236.074 512.416C236.814 512.71 238.664 511.735 238.246 510.661C237.444 508.6 237.056 506.361 235.667 504.55C235.467 504.288 235.707 503.755 235.547 503.427C234.953 502.207 233.808 501.472 232.4 501.801C231.285 504.004 232.433 506.133 233.955 507.842C234.091 507.994 233.925 508.37 234.038 508.581z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M194.436 503.391C194.328 503.014 194.29 502.551 194.455 502.23C194.986 501.197 195.779 500.075 195.442 499.053C195.094 497.997 193.978 498.179 193.328 498.748C192.193 499.742 192.144 501.568 191.453 502.927C191.257 503.313 191.308 503.886 190.867 504.277C190.393 504.698 189.953 506.222 190.049 506.793C190.102 507.106 189.919 517.014 190.141 516.751C190.76 516.018 193.81 506.284 193.879 505.392C193.936 504.661 194.668 504.196 194.436 503.391z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M168.798 496.599C171.432 494.1 174.222 491.139 173.78 487.427C173.664 486.451 171.889 486.978 171.702 487.824C170.9 491.449 168.861 494.11 166.293 496.502C164.097 498.549 162.235 504.893 162 505.401C165.697 500.145 167.954 497.399 168.798 496.599z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M155.224 490.635C155.747 490.265 155.445 489.774 155.662 489.442C156.615 487.984 157.916 486.738 157.934 485C157.937 484.723 157.559 484.414 157.224 484.638C156.947 484.822 156.605 484.952 156.497 485.082C154.467 487.531 153.067 490.202 151.624 493.014C151.441 493.371 150.297 497.862 150.61 497.973C150.849 498.058 152.569 493.877 152.779 493.763C154.042 493.077 154.054 491.462 155.224 490.635z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M171.957 510.179C172.401 509.31 173.977 508.108 173.864 507.219C173.746 506.291 174.214 504.848 173.302 505.536C172.045 506.484 168.596 507.833 168.326 513.641C168.3 514.212 171.274 511.519 171.957 510.179z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M186.4 493.001C186.8 492.333 187.508 492.806 187.967 492.543C188.615 492.171 189.226 491.613 189.518 490.964C190.488 488.815 192.257 486.995 192.4 484.601C190.909 483.196 190.23 485.236 189.6 486.201C188.277 484.554 187.278 486.428 185.978 486.947C185.908 486.975 185.695 486.628 185.62 486.655C184.443 487.095 183.763 488.176 182.765 488.957C182.594 489.091 182.189 488.911 182.042 489.047C181.39 489.65 180.417 489.975 180.137 490.657C179.027 493.364 175.887 495.459 174 503.001C174.381 503.91 178.512 496.359 178.999 495.661C179.835 494.465 179.953 497.322 181.229 496.656C181.28 496.629 181.466 496.867 181.6 497.001C181.794 496.721 182.012 496.492 182.4 496.601C182.4 496.201 182.266 495.645 182.467 495.486C183.704 494.509 183.62 493.441 184.4 492.201C184.858 492.99 185.919 492.271 186.4 493.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M246.2 547.401C246.2 547.401 253.6 527.001 249.2 515.801C249.2 515.801 260.6 537.401 256 548.601C256 548.601 255.6 538.201 251.6 533.201C251.6 533.201 247.6 546.001 246.2 547.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M231.4 544.801C231.4 544.801 236.8 536.001 228.8 517.601C228.8 517.601 228 538.001 221.2 549.001C221.2 549.001 235.4 528.801 231.4 544.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M221.4 542.801C221.4 542.801 221.2 522.801 221.6 519.801C221.6 519.801 217.8 536.401 207.6 546.001C207.6 546.001 222 534.001 221.4 542.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M211.8 510.801C211.8 510.801 217.8 524.401 207.8 542.801C207.8 542.801 214.2 530.601 209.4 523.601C209.4 523.601 212 520.201 211.8 510.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M192.6 542.401C192.6 542.401 191.6 526.801 193.4 524.601C193.4 524.601 193.6 518.201 193.2 517.201C193.2 517.201 197.2 511.001 197.4 518.401C197.4 518.401 198.8 526.201 201.6 530.801C201.6 530.801 205.2 536.201 205 542.601C205 542.601 195 512.401 192.6 542.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M189 514.801C189 514.801 182.4 525.601 180.6 544.601C180.6 544.601 179.2 538.401 183 524.001C183 524.001 187.2 508.601 189 514.801z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M167.2 534.601C167.2 534.601 172.2 529.201 173.6 524.201C173.6 524.201 177.2 508.401 170.8 517.001C170.8 517.001 171 525.001 162.8 532.401C162.8 532.401 167.6 530.001 167.2 534.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M161.4 529.601C161.4 529.601 164.8 512.201 165.6 511.401C165.6 511.401 167.4 508.001 164.6 511.201C164.6 511.201 155.8 530.401 151.8 537.001C151.8 537.001 159.8 527.801 161.4 529.601z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M155.6 513.001C155.6 513.001 167.2 490.601 145.4 516.401C145.4 516.401 156.4 506.601 155.6 513.001z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M140.2 498.401C140.2 498.401 145 479.601 147.6 479.801C147.6 479.801 155.8 470.801 149.2 481.401C149.2 481.401 143.2 491.001 143.8 500.801C143.8 500.801 143.2 491.201 140.2 498.401z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M470.5 487C470.5 487 458.5 477 456 473.5C456 473.5 469.5 492 469.5 499C469.5 499 472 491.5 470.5 487z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M476 465C476 465 455 450 451.5 442.5C451.5 442.5 478 472 478 476.5C478 476.5 478.5 467.5 476 465z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M493 311C493 311 481 303 479.5 305C479.5 305 490 311.5 492.5 320C492.5 320 491 311 493 311z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='fill: #cccccc')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M501.5 391.5L484 379.5C484 379.5 503 396.5 503.5 400.5L501.5 391.5z')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M110.75 369L132.75 373.75')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M161 531C161 531 160.5 527.5 151.5 538')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M166.5 536C166.5 536 168.5 529.5 162 534')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+ , 2)
+SAX.startElement(g, style='stroke:#000000')
+SAX.characters(
+ , 3)
+SAX.startElement(path, d='M220.5 544.5C220.5 544.5 222 533.5 210.5 546.5')
+SAX.endElement(path)
+SAX.characters(
+ , 2)
+SAX.endElement(g)
+SAX.characters(
+, 1)
+SAX.endElement(svg)
+SAX.endDocument()
diff --git a/result/svg3.sax2 b/result/svg3.sax2
new file mode 100644
index 0000000..b63dff0
--- /dev/null
+++ b/result/svg3.sax2
@@ -0,0 +1,2407 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(svg, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M77....', 149)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M81....', 149)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M108...', 153)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M105...', 157)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M101...', 157)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M90....', 150)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M83....', 149)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M80....', 151)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M91....', 144)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M71....', 105)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M72....', 150)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 49)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M72....', 145)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 29)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M70....', 3523)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 29)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M499...', 1458)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M84....', 598)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M333...', 739)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M334...', 757)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M336...', 760)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M337...', 761)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M338...', 762)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M340...', 760)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M341...', 760)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M342...', 760)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M343...', 725)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M345...', 762)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M84....', 637)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M125...', 221)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M265...', 273)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M145...', 431)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M178...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M188...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M201...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M178...', 131)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M179...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M165...', 911)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M170...', 501)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M192...', 262)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M190...', 209)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M194...', 475)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 29)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M190...', 405)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M191...', 219)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M271...', 327)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M228...', 98)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M180...', 137)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M185...', 152)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M190...', 152)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M197...', 154)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M203...', 154)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M210...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M181...', 132)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M215...', 142)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M233...', 211)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M247...', 50)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M253...', 56)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M174...', 179)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M188...', 219)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M111...', 221)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M132...', 208)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M133...', 334)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M177...', 183)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M140...', 161)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M147...', 160)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M154...', 158)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M161...', 158)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M125...', 182)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M190...', 247)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M243...', 361)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M208...', 393)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M208...', 393)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M209...', 393)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M210...', 393)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M244...', 301)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M290...', 155)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M294...', 309)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M247...', 193)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M243...', 200)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M255...', 77)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M245...', 191)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M141...', 411)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M140...', 486)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M148...', 494)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M148...', 484)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M148...', 495)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M140...', 486)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M137...', 119)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M120...', 115)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M128...', 132)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M214...', 1619)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M409...', 389)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M464...', 271)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M463...', 289)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M463...', 287)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M462...', 280)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M462...', 289)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M462...', 250)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M250...', 709)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M389...', 91)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M436...', 125)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M492...', 99)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M304...', 123)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M494...', 111)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M343...', 2441)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M309...', 1201)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M380...', 429)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M368...', 1598)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M291...', 929)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M259...', 1006)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M245...', 383)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M217...', 181)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M233...', 2425)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M251...', 74)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M224...', 84)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M221...', 112)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 30)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M222...', 114)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M220...', 6993)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M197...', 185)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M138...', 193)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M138...', 197)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M134...', 195)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M134...', 11)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M89 ...', 570)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M87....', 491)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M91 ...', 497)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M88....', 626)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M79....', 183)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M101...', 359)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M240...', 1223)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M231...', 816)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M294...', 902)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M257...', 3281)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M202...', 837)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M182...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M142...', 177)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M133...', 289)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M120...', 215)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M349...', 1047)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M339...', 444)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M173...', 503)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M180...', 445)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M177...', 379)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M196...', 438)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M188...', 109)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M181...', 113)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M171...', 105)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M163...', 113)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M201...', 111)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M191...', 114)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M180...', 109)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M173...', 105)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M166...', 111)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M205...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M215...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M226...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M236...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M209...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M219...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M196...', 109)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M123...', 117)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M105...', 111)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M125...', 101)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M129...', 1246)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M126...', 311)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M125...', 125)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M127...', 160)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M129...', 160)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M130...', 158)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M245...', 157)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M242...', 154)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M239...', 158)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M236...', 157)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M204...', 387)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M277...', 379)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M218...', 127)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M211...', 126)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M201...', 126)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M193...', 128)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M235...', 128)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M245...', 126)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M254...', 129)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M264...', 126)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M226...', 126)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M262...', 161)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M265...', 363)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M207...', 143)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M217...', 147)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M229...', 143)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M239...', 137)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M181...', 133)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M172...', 135)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M164...', 137)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M211...', 160)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M222...', 160)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M201...', 158)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M181...', 161)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M193...', 155)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M174...', 159)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M167...', 160)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M236...', 161)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M203...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M213...', 135)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M220...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M228...', 161)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M238...', 161)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M198...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M188...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M249...', 159)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M257...', 159)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 47)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M267...', 159)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M156...', 111)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M187...', 105)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M178...', 111)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M82....', 121)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M84....', 121)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M77....', 121)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M157...', 137)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M245...', 349)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M234...', 346)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M194...', 445)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M168...', 247)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M155...', 396)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M171...', 206)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M186...', 803)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M246...', 179)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M231...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M221...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M211...', 139)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M192...', 261)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M189...', 131)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M167...', 181)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M161...', 183)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M155...', 99)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M140...', 181)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M470...', 101)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M476...', 97)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M493...', 91)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='fill...', 13)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M501...', 67)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 14)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M110...', 25)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 14)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M161...', 38)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 14)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M166...', 40)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.startElementNs(g, NULL, NULL, 0, 1, 0, style='stro...', 14)
+SAX.characters(
+ , 3)
+SAX.startElementNs(path, NULL, NULL, 0, 1, 0, d='M220...', 46)
+SAX.endElementNs(path, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(g, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(svg, NULL, NULL)
+SAX.endDocument()
diff --git a/result/title.xml b/result/title.xml
new file mode 100644
index 0000000..1b3fe07
--- /dev/null
+++ b/result/title.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<title>my title</title>
diff --git a/result/title.xml.rde b/result/title.xml.rde
new file mode 100644
index 0000000..b0d2be0
--- /dev/null
+++ b/result/title.xml.rde
@@ -0,0 +1,3 @@
+0 1 title 0 0
+1 3 #text 0 1 my title
+0 15 title 0 0
diff --git a/result/title.xml.rdr b/result/title.xml.rdr
new file mode 100644
index 0000000..b0d2be0
--- /dev/null
+++ b/result/title.xml.rdr
@@ -0,0 +1,3 @@
+0 1 title 0 0
+1 3 #text 0 1 my title
+0 15 title 0 0
diff --git a/result/title.xml.sax b/result/title.xml.sax
new file mode 100644
index 0000000..2af71e9
--- /dev/null
+++ b/result/title.xml.sax
@@ -0,0 +1,6 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(title)
+SAX.characters(my title, 8)
+SAX.endElement(title)
+SAX.endDocument()
diff --git a/result/title.xml.sax2 b/result/title.xml.sax2
new file mode 100644
index 0000000..6fa4fa9
--- /dev/null
+++ b/result/title.xml.sax2
@@ -0,0 +1,6 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(my title, 8)
+SAX.endElementNs(title, NULL, NULL)
+SAX.endDocument()
diff --git a/result/tstblanks.xml b/result/tstblanks.xml
new file mode 100644
index 0000000..2561859
--- /dev/null
+++ b/result/tstblanks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a test="passed">content</a>
diff --git a/result/tstblanks.xml.rde b/result/tstblanks.xml.rde
new file mode 100644
index 0000000..7d2e5fa
--- /dev/null
+++ b/result/tstblanks.xml.rde
@@ -0,0 +1,3 @@
+0 1 a 0 0
+1 3 #text 0 1 content
+0 15 a 0 0
diff --git a/result/tstblanks.xml.rdr b/result/tstblanks.xml.rdr
new file mode 100644
index 0000000..7d2e5fa
--- /dev/null
+++ b/result/tstblanks.xml.rdr
@@ -0,0 +1,3 @@
+0 1 a 0 0
+1 3 #text 0 1 content
+0 15 a 0 0
diff --git a/result/tstblanks.xml.sax b/result/tstblanks.xml.sax
new file mode 100644
index 0000000..a1f7b8b
--- /dev/null
+++ b/result/tstblanks.xml.sax
@@ -0,0 +1,6 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(a, test='passed')
+SAX.characters(content, 7)
+SAX.endElement(a)
+SAX.endDocument()
diff --git a/result/tstblanks.xml.sax2 b/result/tstblanks.xml.sax2
new file mode 100644
index 0000000..45563a4
--- /dev/null
+++ b/result/tstblanks.xml.sax2
@@ -0,0 +1,6 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(a, NULL, NULL, 0, 1, 0, test='pass...', 6)
+SAX.characters(content, 7)
+SAX.endElementNs(a, NULL, NULL)
+SAX.endDocument()
diff --git a/result/utf16bebom.xml b/result/utf16bebom.xml
new file mode 100644
index 0000000..3b5466d
--- /dev/null
+++ b/result/utf16bebom.xml
Binary files differ
diff --git a/result/utf16bebom.xml.rde b/result/utf16bebom.xml.rde
new file mode 100644
index 0000000..f69338a
--- /dev/null
+++ b/result/utf16bebom.xml.rde
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 This file is encoded in UTF-16BE
+0 1 repository 0 0
+1 1 namespace 1 0
+0 15 repository 0 0
diff --git a/result/utf16bebom.xml.rdr b/result/utf16bebom.xml.rdr
new file mode 100644
index 0000000..f69338a
--- /dev/null
+++ b/result/utf16bebom.xml.rdr
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 This file is encoded in UTF-16BE
+0 1 repository 0 0
+1 1 namespace 1 0
+0 15 repository 0 0
diff --git a/result/utf16bebom.xml.sax b/result/utf16bebom.xml.sax
new file mode 100644
index 0000000..5b74a6d
--- /dev/null
+++ b/result/utf16bebom.xml.sax
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This file is encoded in UTF-16BE )
+SAX.startElement(repository, repositroy_id='test')
+SAX.startElement(namespace, name='test')
+SAX.endElement(namespace)
+SAX.endElement(repository)
+SAX.endDocument()
diff --git a/result/utf16bebom.xml.sax2 b/result/utf16bebom.xml.sax2
new file mode 100644
index 0000000..4326890
--- /dev/null
+++ b/result/utf16bebom.xml.sax2
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This file is encoded in UTF-16BE )
+SAX.startElementNs(repository, NULL, NULL, 0, 1, 0, repositroy_id='test...', 4)
+SAX.startElementNs(namespace, NULL, NULL, 0, 1, 0, name='test...', 4)
+SAX.endElementNs(namespace, NULL, NULL)
+SAX.endElementNs(repository, NULL, NULL)
+SAX.endDocument()
diff --git a/result/utf16bom.xml b/result/utf16bom.xml
new file mode 100644
index 0000000..6ea296e
--- /dev/null
+++ b/result/utf16bom.xml
Binary files differ
diff --git a/result/utf16bom.xml.rde b/result/utf16bom.xml.rde
new file mode 100644
index 0000000..0fb84c6
--- /dev/null
+++ b/result/utf16bom.xml.rde
@@ -0,0 +1,3 @@
+0 1 repository 0 0
+1 1 namespace 1 0
+0 15 repository 0 0
diff --git a/result/utf16bom.xml.rdr b/result/utf16bom.xml.rdr
new file mode 100644
index 0000000..0fb84c6
--- /dev/null
+++ b/result/utf16bom.xml.rdr
@@ -0,0 +1,3 @@
+0 1 repository 0 0
+1 1 namespace 1 0
+0 15 repository 0 0
diff --git a/result/utf16bom.xml.sax b/result/utf16bom.xml.sax
new file mode 100644
index 0000000..bd9386e
--- /dev/null
+++ b/result/utf16bom.xml.sax
@@ -0,0 +1,7 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(repository, repositroy_id='test')
+SAX.startElement(namespace, name='test')
+SAX.endElement(namespace)
+SAX.endElement(repository)
+SAX.endDocument()
diff --git a/result/utf16bom.xml.sax2 b/result/utf16bom.xml.sax2
new file mode 100644
index 0000000..2b2db15
--- /dev/null
+++ b/result/utf16bom.xml.sax2
@@ -0,0 +1,7 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(repository, NULL, NULL, 0, 1, 0, repositroy_id='test...', 4)
+SAX.startElementNs(namespace, NULL, NULL, 0, 1, 0, name='test...', 4)
+SAX.endElementNs(namespace, NULL, NULL)
+SAX.endElementNs(repository, NULL, NULL)
+SAX.endDocument()
diff --git a/result/utf16lebom.xml b/result/utf16lebom.xml
new file mode 100644
index 0000000..933640c
--- /dev/null
+++ b/result/utf16lebom.xml
Binary files differ
diff --git a/result/utf16lebom.xml.rde b/result/utf16lebom.xml.rde
new file mode 100644
index 0000000..32a91e4
--- /dev/null
+++ b/result/utf16lebom.xml.rde
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 This file is encoded in UTF-16LE
+0 1 repository 0 0
+1 1 namespace 1 0
+0 15 repository 0 0
diff --git a/result/utf16lebom.xml.rdr b/result/utf16lebom.xml.rdr
new file mode 100644
index 0000000..32a91e4
--- /dev/null
+++ b/result/utf16lebom.xml.rdr
@@ -0,0 +1,4 @@
+0 8 #comment 0 1 This file is encoded in UTF-16LE
+0 1 repository 0 0
+1 1 namespace 1 0
+0 15 repository 0 0
diff --git a/result/utf16lebom.xml.sax b/result/utf16lebom.xml.sax
new file mode 100644
index 0000000..e699631
--- /dev/null
+++ b/result/utf16lebom.xml.sax
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This file is encoded in UTF-16LE )
+SAX.startElement(repository, repositroy_id='test')
+SAX.startElement(namespace, name='test')
+SAX.endElement(namespace)
+SAX.endElement(repository)
+SAX.endDocument()
diff --git a/result/utf16lebom.xml.sax2 b/result/utf16lebom.xml.sax2
new file mode 100644
index 0000000..3b62346
--- /dev/null
+++ b/result/utf16lebom.xml.sax2
@@ -0,0 +1,8 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This file is encoded in UTF-16LE )
+SAX.startElementNs(repository, NULL, NULL, 0, 1, 0, repositroy_id='test...', 4)
+SAX.startElementNs(namespace, NULL, NULL, 0, 1, 0, name='test...', 4)
+SAX.endElementNs(namespace, NULL, NULL)
+SAX.endElementNs(repository, NULL, NULL)
+SAX.endDocument()
diff --git a/result/utf8bom.xml b/result/utf8bom.xml
new file mode 100644
index 0000000..f4e5164
--- /dev/null
+++ b/result/utf8bom.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<foo/>
diff --git a/result/utf8bom.xml.rde b/result/utf8bom.xml.rde
new file mode 100644
index 0000000..55ad211
--- /dev/null
+++ b/result/utf8bom.xml.rde
@@ -0,0 +1 @@
+0 1 foo 1 0
diff --git a/result/utf8bom.xml.rdr b/result/utf8bom.xml.rdr
new file mode 100644
index 0000000..55ad211
--- /dev/null
+++ b/result/utf8bom.xml.rdr
@@ -0,0 +1 @@
+0 1 foo 1 0
diff --git a/result/utf8bom.xml.sax b/result/utf8bom.xml.sax
new file mode 100644
index 0000000..792eb94
--- /dev/null
+++ b/result/utf8bom.xml.sax
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(foo)
+SAX.endElement(foo)
+SAX.endDocument()
diff --git a/result/utf8bom.xml.sax2 b/result/utf8bom.xml.sax2
new file mode 100644
index 0000000..cf7f20f
--- /dev/null
+++ b/result/utf8bom.xml.sax2
@@ -0,0 +1,5 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(foo, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(foo, NULL, NULL)
+SAX.endDocument()
diff --git a/result/valid/127772.xml b/result/valid/127772.xml
new file mode 100644
index 0000000..c1e128f
--- /dev/null
+++ b/result/valid/127772.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE a SYSTEM "dtds/127772.dtd">
+<a>
+ <b xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://fakeurl.net">b text</b>
+</a>
diff --git a/result/valid/127772.xml.err b/result/valid/127772.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/127772.xml.err
diff --git a/result/valid/127772.xml.err.rdr b/result/valid/127772.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/127772.xml.err.rdr
diff --git a/result/valid/694228.xml b/result/valid/694228.xml
new file mode 100644
index 0000000..057c926
--- /dev/null
+++ b/result/valid/694228.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE root SYSTEM "dtds/694228.dtd">
+<root>
+ &entity;
+</root>
diff --git a/result/valid/694228.xml.err b/result/valid/694228.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/694228.xml.err
diff --git a/result/valid/694228.xml.err.rdr b/result/valid/694228.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/694228.xml.err.rdr
diff --git a/result/valid/REC-xml-19980210.xml b/result/valid/REC-xml-19980210.xml
new file mode 100644
index 0000000..f31e963
--- /dev/null
+++ b/result/valid/REC-xml-19980210.xml
@@ -0,0 +1,4154 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE spec SYSTEM "dtds/spec.dtd" [
+<!-- LAST TOUCHED BY: Tim Bray, 8 February 1997 --><!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. --><!ENTITY XML.version "1.0">
+<!ENTITY doc.date "10 February 1998">
+<!ENTITY iso6.doc.date "19980210">
+<!ENTITY w3c.doc.date "02-Feb-1998">
+<!ENTITY draft.day "10">
+<!ENTITY draft.month "February">
+<!ENTITY draft.year "1998">
+<!ENTITY WebSGML "WebSGML Adaptations Annex to ISO 8879">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback "#c0d9c0">
+<!ENTITY mdash "--">
+<!-- &#x2014, but nsgmls doesn't grok hex --><!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp " "> --><!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+<!-- audience and distribution status: for use at publication time --><!ENTITY doc.audience "public review and discussion">
+<!ENTITY doc.distribution "may be distributed freely, as long as
+all text and legal notices remain intact">
+]>
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+<spec>
+<header>
+<title>Extensible Markup Language (XML) 1.0</title>
+<version/>
+<w3c-designation>REC-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>W3C Recommendation</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+
+<publoc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps</loc>
+</publoc>
+<latestloc>
+<loc href="http://www.w3.org/TR/REC-xml">
+http://www.w3.org/TR/REC-xml</loc>
+</latestloc>
+<prevlocs>
+<loc href="http://www.w3.org/TR/PR-xml-971208">
+http://www.w3.org/TR/PR-xml-971208</loc>
+<!--
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>-->
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<abstract>
+<p>The Extensible Markup Language (XML) is a subset of
+SGML that is completely described in this document. Its goal is to
+enable generic SGML to be served, received, and processed on the Web
+in the way that is now possible with HTML. XML has been designed for
+ease of implementation and for interoperability with both SGML and
+HTML.</p>
+</abstract>
+<status>
+<p>This document has been reviewed by W3C Members and
+other interested parties and has been endorsed by the
+Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited
+as a normative reference from another document. W3C's
+role in making the Recommendation is to draw attention
+to the specification and to promote its widespread
+deployment. This enhances the functionality and
+interoperability of the Web.</p>
+<p>
+This document specifies a syntax created by subsetting an existing,
+widely used international text processing standard (Standard
+Generalized Markup Language, ISO 8879:1986(E) as amended and
+corrected) for use on the World Wide Web. It is a product of the W3C
+XML Activity, details of which can be found at <loc href="http://www.w3.org/XML">http://www.w3.org/XML</loc>. A list of
+current W3C Recommendations and other technical documents can be found
+at <loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.
+</p>
+<p>This specification uses the term URI, which is defined by <bibref ref="Berners-Lee"/>, a work in progress expected to update <bibref ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+</p>
+<p>The list of known errors in this specification is
+available at
+<loc href="http://www.w3.org/XML/xml-19980210-errata">http://www.w3.org/XML/xml-19980210-errata</loc>.</p>
+<p>Please report errors in this document to
+<loc href="mailto:xml-editor@w3.org">xml-editor@w3.org</loc>.
+</p>
+</status>
+
+
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XML Working Group, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id="EN">English</language>
+<language id="ebnf">Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id="sec-intro">
+<head>Introduction</head>
+<p>Extensible Markup Language, abbreviated XML, describes a class of
+data objects called <termref def="dt-xml-doc">XML documents</termref> and
+partially describes the behavior of
+computer programs which process them. XML is an application profile or
+restricted form of SGML, the Standard Generalized Markup
+Language <bibref ref="ISO8879"/>.
+By construction, XML documents
+are conforming SGML documents.
+</p>
+<p>XML documents are made up of storage units called <termref def="dt-entity">entities</termref>, which contain either parsed
+or unparsed data.
+Parsed data is made up of <termref def="dt-character">characters</termref>,
+some
+of which form <termref def="dt-chardata">character data</termref>,
+and some of which form <termref def="dt-markup">markup</termref>.
+Markup encodes a description of the document's storage layout and
+logical structure. XML provides a mechanism to impose constraints on
+the storage layout and logical structure.</p>
+<p><termdef id="dt-xml-proc" term="XML Processor">A software module
+called an <term>XML processor</term> is used to read XML documents
+and provide access to their content and structure.</termdef> <termdef id="dt-app" term="Application">It is assumed that an XML processor is
+doing its work on behalf of another module, called the
+<term>application</term>.</termdef> This specification describes the
+required behavior of an XML processor in terms of how it must read XML
+data and the information it must provide to the application.</p>
+
+<div2 id="sec-origin-goals">
+<head>Origin and Goals</head>
+<p>XML was developed by an XML Working Group (originally known as the
+SGML Editorial Review Board) formed under the auspices of the World
+Wide Web Consortium (W3C) in 1996.
+It was chaired by Jon Bosak of Sun
+Microsystems with the active participation of an XML Special
+Interest Group (previously known as the SGML Working Group) also
+organized by the W3C. The membership of the XML Working Group is given
+in an appendix. Dan Connolly served as the WG's contact with the W3C.
+</p>
+<p>The design goals for XML are:<olist>
+<item><p>XML shall be straightforwardly usable over the
+Internet.</p></item>
+<item><p>XML shall support a wide variety of applications.</p></item>
+<item><p>XML shall be compatible with SGML.</p></item>
+<item><p>It shall be easy to write programs which process XML
+documents.</p></item>
+<item><p>The number of optional features in XML is to be kept to the
+absolute minimum, ideally zero.</p></item>
+<item><p>XML documents should be human-legible and reasonably
+clear.</p></item>
+<item><p>The XML design should be prepared quickly.</p></item>
+<item><p>The design of XML shall be formal and concise.</p></item>
+<item><p>XML documents shall be easy to create.</p></item>
+<item><p>Terseness in XML markup is of minimal importance.</p></item></olist>
+</p>
+<p>This specification,
+together with associated standards
+(Unicode and ISO/IEC 10646 for characters,
+Internet RFC 1766 for language identification tags,
+ISO 639 for language name codes, and
+ISO 3166 for country name codes),
+provides all the information necessary to understand
+XML Version &XML.version;
+and construct computer programs to process it.</p>
+<p>This version of the XML specification
+<!-- is for &doc.audience;.-->
+&doc.distribution;.</p>
+
+</div2>
+
+
+
+
+<div2 id="sec-terminology">
+<head>Terminology</head>
+
+<p>The terminology used to describe XML documents is defined in the body of
+this specification.
+The terms defined in the following list are used in building those
+definitions and in describing the actions of an XML processor:
+<glist>
+<gitem>
+<label>may</label>
+<def><p><termdef id="dt-may" term="May">Conforming documents and XML
+processors are permitted to but need not behave as
+described.</termdef></p></def>
+</gitem>
+<gitem>
+<label>must</label>
+<def><p>Conforming documents and XML processors
+are required to behave as described; otherwise they are in error.
+<!-- do NOT change this! this is what defines a violation of
+a 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>error</label>
+<def><p><termdef id="dt-error" term="Error">A violation of the rules of this
+specification; results are
+undefined. Conforming software may detect and report an error and may
+recover from it.</termdef></p></def>
+</gitem>
+<gitem>
+<label>fatal error</label>
+<def><p><termdef id="dt-fatal" term="Fatal Error">An error
+which a conforming <termref def="dt-xml-proc">XML processor</termref>
+must detect and report to the application.
+After encountering a fatal error, the
+processor may continue
+processing the data to search for further errors and may report such
+errors to the application. In order to support correction of errors,
+the processor may make unprocessed data from the document (with
+intermingled character data and markup) available to the application.
+Once a fatal error is detected, however, the processor must not
+continue normal processing (i.e., it must not
+continue to pass character data and information about the document's
+logical structure to the application in the normal way).
+</termdef></p></def>
+</gitem>
+<gitem>
+<label>at user option</label>
+<def><p>Conforming software may or must (depending on the modal verb in the
+sentence) behave as described; if it does, it must
+provide users a means to enable or disable the behavior
+described.</p></def>
+</gitem>
+<gitem>
+<label>validity constraint</label>
+<def><p>A rule which applies to all
+<termref def="dt-valid">valid</termref> XML documents.
+Violations of validity constraints are errors; they must, at user option,
+be reported by
+<termref def="dt-validating">validating XML processors</termref>.</p></def>
+</gitem>
+<gitem>
+<label>well-formedness constraint</label>
+<def><p>A rule which applies to all <termref def="dt-wellformed">well-formed</termref> XML documents.
+Violations of well-formedness constraints are
+<termref def="dt-fatal">fatal errors</termref>.</p></def>
+</gitem>
+
+<gitem>
+<label>match</label>
+<def><p><termdef id="dt-match" term="match">(Of strings or names:)
+Two strings or names being compared must be identical.
+Characters with multiple possible representations in ISO/IEC 10646 (e.g.
+characters with
+both precomposed and base+diacritic forms) match only if they have the
+same representation in both strings.
+At user option, processors may normalize such characters to
+some canonical form.
+No case folding is performed.
+(Of strings and rules in the grammar:)
+A string matches a grammatical production if it belongs to the
+language generated by that production.
+(Of content and content models:)
+An element matches its declaration when it conforms
+in the fashion described in the constraint
+<specref ref="elementvalid"/>.
+</termdef>
+</p></def>
+</gitem>
+<gitem>
+<label>for compatibility</label>
+<def><p><termdef id="dt-compat" term="For Compatibility">A feature of
+XML included solely to ensure that XML remains compatible with SGML.
+</termdef></p></def>
+</gitem>
+<gitem>
+<label>for interoperability</label>
+<def><p><termdef id="dt-interop" term="For interoperability">A
+non-binding recommendation included to increase the chances that XML
+documents can be processed by the existing installed base of SGML
+processors which predate the
+&WebSGML;.</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+
+
+</div1>
+<!-- &Docs; -->
+
+<div1 id="sec-documents">
+<head>Documents</head>
+
+<p><termdef id="dt-xml-doc" term="XML Document">
+A data object is an
+<term>XML document</term> if it is
+<termref def="dt-wellformed">well-formed</termref>, as
+defined in this specification.
+A well-formed XML document may in addition be
+<termref def="dt-valid">valid</termref> if it meets certain further
+constraints.</termdef></p>
+
+<p>Each XML document has both a logical and a physical structure.
+Physically, the document is composed of units called <termref def="dt-entity">entities</termref>. An entity may <termref def="dt-entref">refer</termref> to other entities to cause their
+inclusion in the document. A document begins in a "root" or <termref def="dt-docent">document entity</termref>.
+Logically, the document is composed of declarations, elements,
+comments,
+character references, and
+processing
+instructions, all of which are indicated in the document by explicit
+markup.
+The logical and physical structures must nest properly, as described
+in <specref ref="wf-entities"/>.
+</p>
+
+<div2 id="sec-well-formed">
+<head>Well-Formed XML Documents</head>
+
+<p><termdef id="dt-wellformed" term="Well-Formed">
+A textual object is
+a well-formed XML document if:</termdef>
+<olist>
+<item><p>Taken as a whole, it
+matches the production labeled <nt def="NT-document">document</nt>.</p></item>
+<item><p>It
+meets all the well-formedness constraints given in this specification.</p>
+</item>
+<item><p>Each of the <termref def="dt-parsedent">parsed entities</termref>
+which is referenced directly or indirectly within the document is
+<titleref href="wf-entities">well-formed</titleref>.</p></item>
+</olist></p>
+<p>
+<scrap lang="ebnf" id="document">
+<head>Document</head>
+<prod id="NT-document"><lhs>document</lhs>
+<rhs><nt def="NT-prolog">prolog</nt>
+<nt def="NT-element">element</nt>
+<nt def="NT-Misc">Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p>Matching the <nt def="NT-document">document</nt> production
+implies that:
+<olist>
+<item><p>It contains one or more
+<termref def="dt-element">elements</termref>.</p>
+</item>
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+<item><p><termdef id="dt-root" term="Root Element">There is exactly
+one element, called the <term>root</term>, or document element, no
+part of which appears in the <termref def="dt-content">content</termref> of any other element.</termdef>
+For all other elements, if the start-tag is in the content of another
+element, the end-tag is in the content of the same element. More
+simply stated, the elements, delimited by start- and end-tags, nest
+properly within each other.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-parentchild" term="Parent/Child">As a consequence
+of this,
+for each non-root element
+<code>C</code> in the document, there is one other element <code>P</code>
+in the document such that
+<code>C</code> is in the content of <code>P</code>, but is not in
+the content of any other element that is in the content of
+<code>P</code>.
+<code>P</code> is referred to as the
+<term>parent</term> of <code>C</code>, and <code>C</code> as a
+<term>child</term> of <code>P</code>.</termdef></p></div2>
+
+<div2 id="charsets">
+<head>Characters</head>
+
+<p><termdef id="dt-text" term="Text">A parsed entity contains
+<term>text</term>, a sequence of
+<termref def="dt-character">characters</termref>,
+which may represent markup or character data.</termdef>
+<termdef id="dt-character" term="Character">A <term>character</term>
+is an atomic unit of text as specified by
+ISO/IEC 10646 <bibref ref="ISO10646"/>.
+Legal characters are tab, carriage return, line feed, and the legal
+graphic characters of Unicode and ISO/IEC 10646.
+The use of "compatibility characters", as defined in section 6.8
+of <bibref ref="Unicode"/>, is discouraged.
+</termdef>
+<scrap lang="ebnf" id="char32">
+<head>Character Range</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>any Unicode character, excluding the
+surrogate blocks, FFFE, and FFFF.</com> </prod>
+</prodgroup>
+</scrap>
+</p>
+
+<p>The mechanism for encoding character code points into bit patterns may
+vary from entity to entity. All XML processors must accept the UTF-8
+and UTF-16 encodings of 10646; the mechanisms for signaling which of
+the two is in use, or for bringing other encodings into play, are
+discussed later, in <specref ref="charencoding"/>.
+</p>
+<!--
+<p>Regardless of the specific encoding used, any character in the ISO/IEC
+10646 character set may be referred to by the decimal or hexadecimal
+equivalent of its
+UCS-4 code value.
+</p>-->
+</div2>
+
+<div2 id="sec-common-syn">
+<head>Common Syntactic Constructs</head>
+
+<p>This section defines some symbols used widely in the grammar.</p>
+<p><nt def="NT-S">S</nt> (white space) consists of one or more space (#x20)
+characters, carriage returns, line feeds, or tabs.
+
+<scrap lang="ebnf" id="white">
+<head>White Space</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-S"><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>Characters are classified for convenience as letters, digits, or other
+characters. Letters consist of an alphabetic or syllabic
+base character possibly
+followed by one or more combining characters, or of an ideographic
+character.
+Full definitions of the specific characters in each class
+are given in <specref ref="CharClasses"/>.</p>
+<p><termdef id="dt-name" term="Name">A <term>Name</term> is a token
+beginning with a letter or one of a few punctuation characters, and continuing
+with letters, digits, hyphens, underscores, colons, or full stops, together
+known as name characters.</termdef>
+Names beginning with the string "<code>xml</code>", or any string
+which would match <code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>, are
+reserved for standardization in this or future versions of this
+specification.
+</p>
+<note>
+<p>The colon character within XML names is reserved for experimentation with
+name spaces.
+Its meaning is expected to be
+standardized at some future point, at which point those documents
+using the colon for experimental purposes may need to be updated.
+(There is no guarantee that any name-space mechanism
+adopted for XML will in fact use the colon as a name-space delimiter.)
+In practice, this means that authors should not use the colon in XML
+names except as part of name-space experiments, but that XML processors
+should accept the colon as a name character.</p>
+</note>
+<p>An
+<nt def="NT-Nmtoken">Nmtoken</nt> (name token) is any mixture of
+name characters.
+<scrap lang="ebnf">
+<head>Names and Tokens</head>
+<prod id="NT-NameChar"><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def="NT-Digit">Digit</nt>
+| '.' | '-' | '_' | ':'
+| <nt def="NT-CombiningChar">CombiningChar</nt>
+| <nt def="NT-Extender">Extender</nt></rhs>
+</prod>
+<prod id="NT-Name"><lhs>Name</lhs>
+<rhs>(<nt def="NT-Letter">Letter</nt> | '_' | ':')
+(<nt def="NT-NameChar">NameChar</nt>)*</rhs></prod>
+<prod id="NT-Names"><lhs>Names</lhs>
+<rhs><nt def="NT-Name">Name</nt>
+(<nt def="NT-S">S</nt> <nt def="NT-Name">Name</nt>)*</rhs></prod>
+<prod id="NT-Nmtoken"><lhs>Nmtoken</lhs>
+<rhs>(<nt def="NT-NameChar">NameChar</nt>)+</rhs></prod>
+<prod id="NT-Nmtokens"><lhs>Nmtokens</lhs>
+<rhs><nt def="NT-Nmtoken">Nmtoken</nt> (<nt def="NT-S">S</nt> <nt def="NT-Nmtoken">Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>Literal data is any quoted string not containing
+the quotation mark used as a delimiter for that string.
+Literals are used
+for specifying the content of internal entities
+(<nt def="NT-EntityValue">EntityValue</nt>),
+the values of attributes (<nt def="NT-AttValue">AttValue</nt>),
+and external identifiers
+(<nt def="NT-SystemLiteral">SystemLiteral</nt>).
+Note that a <nt def="NT-SystemLiteral">SystemLiteral</nt>
+can be parsed without scanning for markup.
+<scrap lang="ebnf">
+<head>Literals</head>
+<prod id="NT-EntityValue"><lhs>EntityValue</lhs>
+<rhs>'"'
+([^%&amp;"]
+| <nt def="NT-PEReference">PEReference</nt>
+| <nt def="NT-Reference">Reference</nt>)*
+'"'
+</rhs>
+<rhs>|&nbsp;
+"'"
+([^%&amp;']
+| <nt def="NT-PEReference">PEReference</nt>
+| <nt def="NT-Reference">Reference</nt>)*
+"'"</rhs>
+</prod>
+<prod id="NT-AttValue"><lhs>AttValue</lhs>
+<rhs>'"'
+([^&lt;&amp;"]
+| <nt def="NT-Reference">Reference</nt>)*
+'"'
+</rhs>
+<rhs>|&nbsp;
+"'"
+([^&lt;&amp;']
+| <nt def="NT-Reference">Reference</nt>)*
+"'"</rhs>
+</prod>
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs>('"' [^"]* '"') |&nbsp;("'" [^']* "'")
+</rhs>
+</prod>
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>'"' <nt def="NT-PubidChar">PubidChar</nt>*
+'"'
+| "'" (<nt def="NT-PubidChar">PubidChar</nt> - "'")* "'"</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?;!*#@$_%]</rhs>
+</prod>
+</scrap>
+</p>
+
+</div2>
+
+<div2 id="syntax">
+<head>Character Data and Markup</head>
+
+<p><termref def="dt-text">Text</termref> consists of intermingled
+<termref def="dt-chardata">character
+data</termref> and markup.
+<termdef id="dt-markup" term="Markup"><term>Markup</term> takes the form of
+<termref def="dt-stag">start-tags</termref>,
+<termref def="dt-etag">end-tags</termref>,
+<termref def="dt-empty">empty-element tags</termref>,
+<termref def="dt-entref">entity references</termref>,
+<termref def="dt-charref">character references</termref>,
+<termref def="dt-comment">comments</termref>,
+<termref def="dt-cdsection">CDATA section</termref> delimiters,
+<termref def="dt-doctype">document type declarations</termref>, and
+<termref def="dt-pi">processing instructions</termref>.
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">All text that is not markup
+constitutes the <term>character data</term> of
+the document.</termdef></p>
+<p>The ampersand character (&amp;) and the left angle bracket (&lt;)
+may appear in their literal form <emph>only</emph> when used as markup
+delimiters, or within a <termref def="dt-comment">comment</termref>, a
+<termref def="dt-pi">processing instruction</termref>,
+or a <termref def="dt-cdsection">CDATA section</termref>.
+
+They are also legal within the <termref def="dt-litentval">literal entity
+value</termref> of an internal entity declaration; see
+<specref ref="wf-entities"/>.
+<!-- FINAL EDIT: restore internal entity decl or leave it out. -->
+If they are needed elsewhere,
+they must be <termref def="dt-escape">escaped</termref>
+using either <termref def="dt-charref">numeric character references</termref>
+or the strings
+"<code>&amp;amp;</code>" and "<code>&amp;lt;</code>" respectively.
+The right angle
+bracket (&gt;) may be represented using the string
+"<code>&amp;gt;</code>", and must, <termref def="dt-compat">for
+compatibility</termref>,
+be escaped using
+"<code>&amp;gt;</code>" or a character reference
+when it appears in the string
+"<code>]]&gt;</code>"
+in content,
+when that string is not marking the end of
+a <termref def="dt-cdsection">CDATA section</termref>.
+</p>
+<p>
+In the content of elements, character data
+is any string of characters which does
+not contain the start-delimiter of any markup.
+In a CDATA section, character data
+is any string of characters not including the CDATA-section-close
+delimiter, "<code>]]&gt;</code>".</p>
+<p>
+To allow attribute values to contain both single and double quotes, the
+apostrophe or single-quote character (') may be represented as
+"<code>&amp;apos;</code>", and the double-quote character (") as
+"<code>&amp;quot;</code>".
+<scrap lang="ebnf">
+<head>Character Data</head>
+<prod id="NT-CharData">
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id="sec-comments">
+<head>Comments</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>Comments</term> may
+appear anywhere in a document outside other
+<termref def="dt-markup">markup</termref>; in addition,
+they may appear within the document type declaration
+at places allowed by the grammar.
+They are not part of the document's <termref def="dt-chardata">character
+data</termref>; an XML
+processor may, but need not, make it possible for an application to
+retrieve the text of comments.
+<termref def="dt-compat">For compatibility</termref>, the string
+"<code>--</code>" (double-hyphen) must not occur within
+comments.
+<scrap lang="ebnf">
+<head>Comments</head>
+<prod id="NT-Comment"><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def="NT-Char">Char</nt> - '-')
+| ('-' (<nt def="NT-Char">Char</nt> - '-')))*
+'--&gt;'</rhs>
+</prod>
+</scrap>
+</termdef></p>
+<p>An example of a comment:
+<eg>&lt;!&como; declarations for &lt;head&gt; &amp; &lt;body&gt; &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id="sec-pi">
+<head>Processing Instructions</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>Processing
+instructions</term> (PIs) allow documents to contain instructions
+for applications.
+
+<scrap lang="ebnf">
+<head>Processing Instructions</head>
+<prod id="NT-PI"><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def="NT-PITarget">PITarget</nt>
+(<nt def="NT-S">S</nt>
+(<nt def="NT-Char">Char</nt>* -
+(<nt def="NT-Char">Char</nt>* &pic; <nt def="NT-Char">Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id="NT-PITarget"><lhs>PITarget</lhs>
+<rhs><nt def="NT-Name">Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PIs are not part of the document's <termref def="dt-chardata">character
+data</termref>, but must be passed through to the application. The
+PI begins with a target (<nt def="NT-PITarget">PITarget</nt>) used
+to identify the application to which the instruction is directed.
+The target names "<code>XML</code>", "<code>xml</code>", and so on are
+reserved for standardization in this or future versions of this
+specification.
+The
+XML <termref def="dt-notation">Notation</termref> mechanism
+may be used for
+formal declaration of PI targets.
+</p>
+</div2>
+
+<div2 id="sec-cdata-sect">
+<head>CDATA Sections</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATA sections</term>
+may occur
+anywhere character data may occur; they are
+used to escape blocks of text containing characters which would
+otherwise be recognized as markup. CDATA sections begin with the
+string "<code>&lt;![CDATA[</code>" and end with the string
+"<code>]]&gt;</code>":
+<scrap lang="ebnf">
+<head>CDATA Sections</head>
+<prod id="NT-CDSect"><lhs>CDSect</lhs>
+<rhs><nt def="NT-CDStart">CDStart</nt>
+<nt def="NT-CData">CData</nt>
+<nt def="NT-CDEnd">CDEnd</nt></rhs></prod>
+<prod id="NT-CDStart"><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id="NT-CData"><lhs>CData</lhs>
+<rhs>(<nt def="NT-Char">Char</nt>* -
+(<nt def="NT-Char">Char</nt>* ']]&gt;' <nt def="NT-Char">Char</nt>*))
+</rhs>
+</prod>
+<prod id="NT-CDEnd"><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+Within a CDATA section, only the <nt def="NT-CDEnd">CDEnd</nt> string is
+recognized as markup, so that left angle brackets and ampersands may occur in
+their literal form; they need not (and cannot) be escaped using
+"<code>&amp;lt;</code>" and "<code>&amp;amp;</code>". CDATA sections
+cannot nest.</termdef>
+</p>
+
+<p>An example of a CDATA section, in which "<code>&lt;greeting&gt;</code>" and
+"<code>&lt;/greeting&gt;</code>"
+are recognized as <termref def="dt-chardata">character data</termref>, not
+<termref def="dt-markup">markup</termref>:
+<eg>&lt;![CDATA[&lt;greeting&gt;Hello, world!&lt;/greeting&gt;]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id="sec-prolog-dtd">
+<head>Prolog and Document Type Declaration</head>
+
+<p><termdef id="dt-xmldecl" term="XML Declaration">XML documents
+may, and should,
+begin with an <term>XML declaration</term> which specifies
+the version of
+XML being used.</termdef>
+For example, the following is a complete XML document, <termref def="dt-wellformed">well-formed</termref> but not
+<termref def="dt-valid">valid</termref>:
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+and so is this:
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+
+<p>The version number "<code>1.0</code>" should be used to indicate
+conformance to this version of this specification; it is an error
+for a document to use the value "<code>1.0</code>"
+if it does not conform to this version of this specification.
+It is the intent
+of the XML working group to give later versions of this specification
+numbers other than "<code>1.0</code>", but this intent does not
+indicate a
+commitment to produce any future versions of XML, nor if any are produced, to
+use any particular numbering scheme.
+Since future versions are not ruled out, this construct is provided
+as a means to allow the possibility of automatic version recognition, should
+it become necessary.
+Processors may signal an error if they receive documents labeled with
+versions they do not support.
+</p>
+<p>The function of the markup in an XML document is to describe its
+storage and logical structure and to associate attribute-value pairs
+with its logical structures. XML provides a mechanism, the <termref def="dt-doctype">document type declaration</termref>, to define
+constraints on the logical structure and to support the use of
+predefined storage units.
+
+<termdef id="dt-valid" term="Validity">An XML document is
+<term>valid</term> if it has an associated document type
+declaration and if the document
+complies with the constraints expressed in it.</termdef></p>
+<p>The document type declaration must appear before
+the first <termref def="dt-element">element</termref> in the document.
+<scrap lang="ebnf" id="xmldoc">
+<head>Prolog</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id="NT-prolog"><lhs>prolog</lhs>
+<rhs><nt def="NT-XMLDecl">XMLDecl</nt>?
+<nt def="NT-Misc">Misc</nt>*
+(<nt def="NT-doctypedecl">doctypedecl</nt>
+<nt def="NT-Misc">Misc</nt>*)?</rhs></prod>
+<prod id="NT-XMLDecl"><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def="NT-VersionInfo">VersionInfo</nt>
+<nt def="NT-EncodingDecl">EncodingDecl</nt>?
+<nt def="NT-SDDecl">SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id="NT-VersionInfo"><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def="NT-Eq">Eq</nt>
+(' <nt def="NT-VersionNum">VersionNum</nt> '
+| " <nt def="NT-VersionNum">VersionNum</nt> ")</rhs>
+</prod>
+<prod id="NT-Eq"><lhs>Eq</lhs>
+<rhs><nt def="NT-S">S</nt>? '=' <nt def="NT-S">S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id="NT-Misc"><lhs>Misc</lhs>
+<rhs><nt def="NT-Comment">Comment</nt> | <nt def="NT-PI">PI</nt> |
+<nt def="NT-S">S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p><termdef id="dt-doctype" term="Document Type Declaration">The XML
+<term>document type declaration</term>
+contains or points to
+<termref def="dt-markupdecl">markup declarations</termref>
+that provide a grammar for a
+class of documents.
+This grammar is known as a document type definition,
+or <term>DTD</term>.
+The document type declaration can point to an external subset (a
+special kind of
+<termref def="dt-extent">external entity</termref>) containing markup
+declarations, or can
+contain the markup declarations directly in an internal subset, or can do
+both.
+The DTD for a document consists of both subsets taken
+together.</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+A <term>markup declaration</term> is
+an <termref def="dt-eldecl">element type declaration</termref>,
+an <termref def="dt-attdecl">attribute-list declaration</termref>,
+an <termref def="dt-entdecl">entity declaration</termref>, or
+a <termref def="dt-notdecl">notation declaration</termref>.
+</termdef>
+These declarations may be contained in whole or in part
+within <termref def="dt-PE">parameter entities</termref>,
+as described in the well-formedness and validity constraints below.
+For fuller information, see
+<specref ref="sec-physical-struct"/>.</p>
+<scrap lang="ebnf" id="dtd">
+<head>Document Type Definition</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id="NT-doctypedecl"><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def="NT-S">S</nt>
+<nt def="NT-Name">Name</nt> (<nt def="NT-S">S</nt>
+<nt def="NT-ExternalID">ExternalID</nt>)?
+<nt def="NT-S">S</nt>? ('['
+(<nt def="NT-markupdecl">markupdecl</nt>
+| <nt def="NT-PEReference">PEReference</nt>
+| <nt def="NT-S">S</nt>)*
+']'
+<nt def="NT-S">S</nt>?)? '&gt;'</rhs>
+<vc def="vc-roottype"/>
+</prod>
+<prod id="NT-markupdecl"><lhs>markupdecl</lhs>
+<rhs><nt def="NT-elementdecl">elementdecl</nt>
+| <nt def="NT-AttlistDecl">AttlistDecl</nt>
+| <nt def="NT-EntityDecl">EntityDecl</nt>
+| <nt def="NT-NotationDecl">NotationDecl</nt>
+| <nt def="NT-PI">PI</nt>
+| <nt def="NT-Comment">Comment</nt>
+</rhs>
+<vc def="vc-PEinMarkupDecl"/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+
+</prodgroup>
+</scrap>
+
+<p>The markup declarations may be made up in whole or in part of
+the <termref def="dt-repltext">replacement text</termref> of
+<termref def="dt-PE">parameter entities</termref>.
+The productions later in this specification for
+individual nonterminals (<nt def="NT-elementdecl">elementdecl</nt>,
+<nt def="NT-AttlistDecl">AttlistDecl</nt>, and so on) describe
+the declarations <emph>after</emph> all the parameter entities have been
+<termref def="dt-include">included</termref>.</p>
+
+<vcnote id="vc-roottype">
+<head>Root Element Type</head>
+<p>
+The <nt def="NT-Name">Name</nt> in the document type declaration must
+match the element type of the <termref def="dt-root">root element</termref>.
+</p>
+</vcnote>
+
+<vcnote id="vc-PEinMarkupDecl">
+<head>Proper Declaration/PE Nesting</head>
+<p>Parameter-entity
+<termref def="dt-repltext">replacement text</termref> must be properly nested
+with markup declarations.
+That is to say, if either the first character
+or the last character of a markup
+declaration (<nt def="NT-markupdecl">markupdecl</nt> above)
+is contained in the replacement text for a
+<termref def="dt-PERef">parameter-entity reference</termref>,
+both must be contained in the same replacement text.</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>PEs in Internal Subset</head>
+<p>In the internal DTD subset,
+<termref def="dt-PERef">parameter-entity references</termref>
+can occur only where markup declarations can occur, not
+within markup declarations. (This does not apply to
+references that occur in
+external parameter entities or to the external subset.)
+</p>
+</wfcnote>
+<p>
+Like the internal subset, the external subset and
+any external parameter entities referred to in the DTD
+must consist of a series of complete markup declarations of the types
+allowed by the non-terminal symbol
+<nt def="NT-markupdecl">markupdecl</nt>, interspersed with white space
+or <termref def="dt-PERef">parameter-entity references</termref>.
+However, portions of the contents
+of the
+external subset or of external parameter entities may conditionally be ignored
+by using
+the <termref def="dt-cond-section">conditional section</termref>
+construct; this is not allowed in the internal subset.
+
+<scrap id="ext-Subset">
+<head>External Subset</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id="NT-extSubset"><lhs>extSubset</lhs>
+<rhs><nt def="NT-TextDecl">TextDecl</nt>?
+<nt def="NT-extSubsetDecl">extSubsetDecl</nt></rhs></prod>
+<prod id="NT-extSubsetDecl"><lhs>extSubsetDecl</lhs>
+<rhs>(
+<nt def="NT-markupdecl">markupdecl</nt>
+| <nt def="NT-conditionalSect">conditionalSect</nt>
+| <nt def="NT-PEReference">PEReference</nt>
+| <nt def="NT-S">S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>The external subset and external parameter entities also differ
+from the internal subset in that in them,
+<termref def="dt-PERef">parameter-entity references</termref>
+are permitted <emph>within</emph> markup declarations,
+not only <emph>between</emph> markup declarations.</p>
+<p>An example of an XML document with a document type declaration:
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+The <termref def="dt-sysid">system identifier</termref>
+"<code>hello.dtd</code>" gives the URI of a DTD for the document.</p>
+<p>The declarations can also be given locally, as in this
+example:
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+If both the external and internal subsets are used, the
+internal subset is considered to occur before the external subset.
+<!-- 'is considered to'? boo. whazzat mean? -->
+This has the effect that entity and attribute-list declarations in the
+internal subset take precedence over those in the external subset.
+</p>
+</div2>
+
+<div2 id="sec-rmd">
+<head>Standalone Document Declaration</head>
+<p>Markup declarations can affect the content of the document,
+as passed from an <termref def="dt-xml-proc">XML processor</termref>
+to an application; examples are attribute defaults and entity
+declarations.
+The standalone document declaration,
+which may appear as a component of the XML declaration, signals
+whether or not there are such declarations which appear external to
+the <termref def="dt-docent">document entity</termref>.
+<scrap lang="ebnf" id="fulldtd">
+<head>Standalone Document Declaration</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id="NT-SDDecl"><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def="NT-Eq">Eq</nt>
+(("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
+</rhs>
+<vc def="vc-check-rmd"/></prod>
+</prodgroup>
+</scrap></p>
+<p>
+In a standalone document declaration, the value "<code>yes</code>" indicates
+that there
+are no markup declarations external to the <termref def="dt-docent">document
+entity</termref> (either in the DTD external subset, or in an
+external parameter entity referenced from the internal subset)
+which affect the information passed from the XML processor to
+the application.
+The value "<code>no</code>" indicates that there are or may be such
+external markup declarations.
+Note that the standalone document declaration only
+denotes the presence of external <emph>declarations</emph>; the presence, in a
+document, of
+references to external <emph>entities</emph>, when those entities are
+internally declared,
+does not change its standalone status.</p>
+<p>If there are no external markup declarations, the standalone document
+declaration has no meaning.
+If there are external markup declarations but there is no standalone
+document declaration, the value "<code>no</code>" is assumed.</p>
+<p>Any XML document for which <code>standalone="no"</code> holds can
+be converted algorithmically to a standalone document,
+which may be desirable for some network delivery applications.</p>
+<vcnote id="vc-check-rmd">
+<head>Standalone Document Declaration</head>
+<p>The standalone document declaration must have
+the value "<code>no</code>" if any external markup declarations
+contain declarations of:</p><ulist>
+<item><p>attributes with <termref def="dt-default">default</termref> values, if
+elements to which
+these attributes apply appear in the document without
+specifications of values for these attributes, or</p></item>
+<item><p>entities (other than &magicents;),
+if <termref def="dt-entref">references</termref> to those
+entities appear in the document, or</p>
+</item>
+<item><p>attributes with values subject to
+<titleref href="AVNormalize">normalization</titleref>, where the
+attribute appears in the document with a value which will
+change as a result of normalization, or</p>
+</item>
+<item>
+<p>element types with <termref def="dt-elemcontent">element content</termref>,
+if white space occurs
+directly within any instance of those types.
+</p></item>
+</ulist>
+
+</vcnote>
+<p>An example XML declaration with a standalone document declaration:<eg>&lt;?xml version="&XML.version;" standalone='yes'?&gt;</eg></p>
+</div2>
+<div2 id="sec-white-space">
+<head>White Space Handling</head>
+
+<p>In editing XML documents, it is often convenient to use "white space"
+(spaces, tabs, and blank lines, denoted by the nonterminal
+<nt def="NT-S">S</nt> in this specification) to
+set apart the markup for greater readability. Such white space is typically
+not intended for inclusion in the delivered version of the document.
+On the other hand, "significant" white space that should be preserved in the
+delivered version is common, for example in poetry and
+source code.</p>
+<p>An <termref def="dt-xml-proc">XML processor</termref>
+must always pass all characters in a document that are not
+markup through to the application. A <termref def="dt-validating">
+validating XML processor</termref> must also inform the application
+which of these characters constitute white space appearing
+in <termref def="dt-elemcontent">element content</termref>.
+</p>
+<p>A special <termref def="dt-attr">attribute</termref>
+named <kw>xml:space</kw> may be attached to an element
+to signal an intention that in that element,
+white space should be preserved by applications.
+In valid documents, this attribute, like any other, must be
+<termref def="dt-attdecl">declared</termref> if it is used.
+When declared, it must be given as an
+<termref def="dt-enumerated">enumerated type</termref> whose only
+possible values are "<code>default</code>" and "<code>preserve</code>".
+For example:<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg></p>
+<p>The value "<code>default</code>" signals that applications'
+default white-space processing modes are acceptable for this element; the
+value "<code>preserve</code>" indicates the intent that applications preserve
+all the white space.
+This declared intent is considered to apply to all elements within the content
+of the element where it is specified, unless overriden with another instance
+of the <kw>xml:space</kw> attribute.
+</p>
+<p>The <termref def="dt-root">root element</termref> of any document
+is considered to have signaled no intentions as regards application space
+handling, unless it provides a value for
+this attribute or the attribute is declared with a default value.
+</p>
+
+</div2>
+<div2 id="sec-line-ends">
+<head>End-of-Line Handling</head>
+<p>XML <termref def="dt-parsedent">parsed entities</termref> are often stored in
+computer files which, for editing convenience, are organized into lines.
+These lines are typically separated by some combination of the characters
+carriage-return (#xD) and line-feed (#xA).</p>
+<p>To simplify the tasks of <termref def="dt-app">applications</termref>,
+wherever an external parsed entity or the literal entity value
+of an internal parsed entity contains either the literal
+two-character sequence "#xD#xA" or a standalone literal
+#xD, an <termref def="dt-xml-proc">XML processor</termref> must
+pass to the application the single character #xA.
+(This behavior can
+conveniently be produced by normalizing all
+line breaks to #xA on input, before parsing.)
+</p>
+</div2>
+<div2 id="sec-lang-tag">
+<head>Language Identification</head>
+<p>In document processing, it is often useful to
+identify the natural or formal language
+in which the content is
+written.
+A special <termref def="dt-attr">attribute</termref> named
+<kw>xml:lang</kw> may be inserted in
+documents to specify the
+language used in the contents and attribute values
+of any element in an XML document.
+In valid documents, this attribute, like any other, must be
+<termref def="dt-attdecl">declared</termref> if it is used.
+The values of the attribute are language identifiers as defined
+by <bibref ref="RFC1766"/>, "Tags for the Identification of Languages":
+<scrap lang="ebnf">
+<head>Language Identification</head>
+<prod id="NT-LanguageID"><lhs>LanguageID</lhs>
+<rhs><nt def="NT-Langcode">Langcode</nt>
+('-' <nt def="NT-Subcode">Subcode</nt>)*</rhs></prod>
+<prod id="NT-Langcode"><lhs>Langcode</lhs>
+<rhs><nt def="NT-ISO639Code">ISO639Code</nt> |
+<nt def="NT-IanaCode">IanaCode</nt> |
+<nt def="NT-UserCode">UserCode</nt></rhs>
+</prod>
+<prod id="NT-ISO639Code"><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id="NT-IanaCode"><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id="NT-UserCode"><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id="NT-Subcode"><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+The <nt def="NT-Langcode">Langcode</nt> may be any of the following:
+<ulist>
+<item><p>a two-letter language code as defined by
+<bibref ref="ISO639"/>, "Codes
+for the representation of names of languages"</p></item>
+<item><p>a language identifier registered with the Internet
+Assigned Numbers Authority <bibref ref="IANA"/>; these begin with the
+prefix "<code>i-</code>" (or "<code>I-</code>")</p></item>
+<item><p>a language identifier assigned by the user, or agreed on
+between parties in private use; these must begin with the
+prefix "<code>x-</code>" or "<code>X-</code>" in order to ensure that they do not conflict
+with names later standardized or registered with IANA</p></item>
+</ulist></p>
+<p>There may be any number of <nt def="NT-Subcode">Subcode</nt> segments; if
+the first
+subcode segment exists and the Subcode consists of two
+letters, then it must be a country code from
+<bibref ref="ISO3166"/>, "Codes
+for the representation of names of countries."
+If the first
+subcode consists of more than two letters, it must be
+a subcode for the language in question registered with IANA,
+unless the <nt def="NT-Langcode">Langcode</nt> begins with the prefix
+"<code>x-</code>" or
+"<code>X-</code>". </p>
+<p>It is customary to give the language code in lower case, and
+the country code (if any) in upper case.
+Note that these values, unlike other names in XML documents,
+are case insensitive.</p>
+<p>For example:
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>durchaus studiert mit heißem Bemüh'n.</l>
+ </sp>]]></eg></p>
+<!--<p>The xml:lang value is considered to apply both to the contents of an
+element and
+(unless otherwise via attribute default values) to the
+values of all of its attributes with free-text (CDATA) values. -->
+<p>The intent declared with <kw>xml:lang</kw> is considered to apply to
+all attributes and content of the element where it is specified,
+unless overridden with an instance of <kw>xml:lang</kw>
+on another element within that content.</p>
+<!--
+If no
+value is specified for xml:lang on an element, and no default value is
+defined for it in the DTD, then the xml:lang attribute of any element
+takes the same value it has in the parent element, if any. The two
+technical terms in the following example both have the same effective
+value for xml:lang:
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+The application, not the XML processor, is responsible for this '
+inheritance' of attribute values.
+-->
+<p>A simple declaration for <kw>xml:lang</kw> might take
+the form
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+but specific default values may also be given, if appropriate. In a
+collection of French poems for English students, with glosses and
+notes in English, the xml:lang attribute might be declared this way:
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id="sec-logical-struct">
+<head>Logical Structures</head>
+
+<p><termdef id="dt-element" term="Element">Each <termref def="dt-xml-doc">XML document</termref> contains one or more
+<term>elements</term>, the boundaries of which are
+either delimited by <termref def="dt-stag">start-tags</termref>
+and <termref def="dt-etag">end-tags</termref>, or, for <termref def="dt-empty">empty</termref> elements, by an <termref def="dt-eetag">empty-element tag</termref>. Each element has a type,
+identified by name, sometimes called its "generic
+identifier" (GI), and may have a set of
+attribute specifications.</termdef> Each attribute specification
+has a <termref def="dt-attrname">name</termref> and a <termref def="dt-attrval">value</termref>.
+</p>
+<scrap lang="ebnf"><head>Element</head>
+<prod id="NT-element"><lhs>element</lhs>
+<rhs><nt def="NT-EmptyElemTag">EmptyElemTag</nt></rhs>
+<rhs>| <nt def="NT-STag">STag</nt> <nt def="NT-content">content</nt>
+<nt def="NT-ETag">ETag</nt></rhs>
+<wfc def="GIMatch"/>
+<vc def="elementvalid"/>
+</prod>
+</scrap>
+<p>This specification does not constrain the semantics, use, or (beyond
+syntax) names of the element types and attributes, except that names
+beginning with a match to <code>(('X'|'x')('M'|'m')('L'|'l'))</code>
+are reserved for standardization in this or future versions of this
+specification.
+</p>
+<wfcnote id="GIMatch">
+<head>Element Type Match</head>
+<p>
+The <nt def="NT-Name">Name</nt> in an element's end-tag must match
+the element type in
+the start-tag.
+</p>
+</wfcnote>
+<vcnote id="elementvalid">
+<head>Element Valid</head>
+<p>An element is
+valid if
+there is a declaration matching
+<nt def="NT-elementdecl">elementdecl</nt> where the
+<nt def="NT-Name">Name</nt> matches the element type, and
+one of the following holds:</p>
+<olist>
+<item><p>The declaration matches <kw>EMPTY</kw> and the element has no
+<termref def="dt-content">content</termref>.</p></item>
+<item><p>The declaration matches <nt def="NT-children">children</nt> and
+the sequence of
+<termref def="dt-parentchild">child elements</termref>
+belongs to the language generated by the regular expression in
+the content model, with optional white space (characters
+matching the nonterminal <nt def="NT-S">S</nt>) between each pair
+of child elements.</p></item>
+<item><p>The declaration matches <nt def="NT-Mixed">Mixed</nt> and
+the content consists of <termref def="dt-chardata">character
+data</termref> and <termref def="dt-parentchild">child elements</termref>
+whose types match names in the content model.</p></item>
+<item><p>The declaration matches <kw>ANY</kw>, and the types
+of any <termref def="dt-parentchild">child elements</termref> have
+been declared.</p></item>
+</olist>
+</vcnote>
+
+<div2 id="sec-starttags">
+<head>Start-Tags, End-Tags, and Empty-Element Tags</head>
+
+<p><termdef id="dt-stag" term="Start-Tag">The beginning of every
+non-empty XML element is marked by a <term>start-tag</term>.
+<scrap lang="ebnf">
+<head>Start-tag</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id="NT-STag"><lhs>STag</lhs>
+<rhs>'&lt;' <nt def="NT-Name">Name</nt>
+(<nt def="NT-S">S</nt> <nt def="NT-Attribute">Attribute</nt>)*
+<nt def="NT-S">S</nt>? '&gt;'</rhs>
+<wfc def="uniqattspec"/>
+</prod>
+<prod id="NT-Attribute"><lhs>Attribute</lhs>
+<rhs><nt def="NT-Name">Name</nt> <nt def="NT-Eq">Eq</nt>
+<nt def="NT-AttValue">AttValue</nt></rhs>
+<vc def="ValueType"/>
+<wfc def="NoExternalRefs"/>
+<wfc def="CleanAttrVals"/></prod>
+</prodgroup>
+</scrap>
+The <nt def="NT-Name">Name</nt> in
+the start- and end-tags gives the
+element's <term>type</term>.</termdef>
+<termdef id="dt-attr" term="Attribute">
+The <nt def="NT-Name">Name</nt>-<nt def="NT-AttValue">AttValue</nt> pairs are
+referred to as
+the <term>attribute specifications</term> of the element</termdef>,
+<termdef id="dt-attrname" term="Attribute Name">with the
+<nt def="NT-Name">Name</nt> in each pair
+referred to as the <term>attribute name</term></termdef> and
+<termdef id="dt-attrval" term="Attribute Value">the content of the
+<nt def="NT-AttValue">AttValue</nt> (the text between the
+<code>'</code> or <code>"</code> delimiters)
+as the <term>attribute value</term>.</termdef>
+</p>
+<wfcnote id="uniqattspec">
+<head>Unique Att Spec</head>
+<p>
+No attribute name may appear more than once in the same start-tag
+or empty-element tag.
+</p>
+</wfcnote>
+<vcnote id="ValueType">
+<head>Attribute Value Type</head>
+<p>
+The attribute must have been declared; the value must be of the type
+declared for it.
+(For attribute types, see <specref ref="attdecls"/>.)
+</p>
+</vcnote>
+<wfcnote id="NoExternalRefs">
+<head>No External Entity References</head>
+<p>
+Attribute values cannot contain direct or indirect entity references
+to external entities.
+</p>
+</wfcnote>
+<wfcnote id="CleanAttrVals">
+<head>No <code>&lt;</code> in Attribute Values</head>
+<p>The <termref def="dt-repltext">replacement text</termref> of any entity
+referred to directly or indirectly in an attribute
+value (other than "<code>&amp;lt;</code>") must not contain
+a <code>&lt;</code>.
+</p></wfcnote>
+<p>An example of a start-tag:
+<eg>&lt;termdef id="dt-dog" term="dog"&gt;</eg></p>
+<p><termdef id="dt-etag" term="End Tag">The end of every element
+that begins with a start-tag must
+be marked by an <term>end-tag</term>
+containing a name that echoes the element's type as given in the
+start-tag:
+<scrap lang="ebnf">
+<head>End-tag</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id="NT-ETag"><lhs>ETag</lhs>
+<rhs>'&lt;/' <nt def="NT-Name">Name</nt>
+<nt def="NT-S">S</nt>? '&gt;'</rhs></prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p>An example of an end-tag:<eg>&lt;/termdef&gt;</eg></p>
+<p><termdef id="dt-content" term="Content">The
+<termref def="dt-text">text</termref> between the start-tag and
+end-tag is called the element's
+<term>content</term>:
+<scrap lang="ebnf">
+<head>Content of Elements</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id="NT-content"><lhs>content</lhs>
+<rhs>(<nt def="NT-element">element</nt> | <nt def="NT-CharData">CharData</nt>
+| <nt def="NT-Reference">Reference</nt> | <nt def="NT-CDSect">CDSect</nt>
+| <nt def="NT-PI">PI</nt> | <nt def="NT-Comment">Comment</nt>)*</rhs>
+</prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p><termdef id="dt-empty" term="Empty">If an element is <term>empty</term>,
+it must be represented either by a start-tag immediately followed
+by an end-tag or by an empty-element tag.</termdef>
+<termdef id="dt-eetag" term="empty-element tag">An
+<term>empty-element tag</term> takes a special form:
+<scrap lang="ebnf">
+<head>Tags for Empty Elements</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id="NT-EmptyElemTag"><lhs>EmptyElemTag</lhs>
+<rhs>'&lt;' <nt def="NT-Name">Name</nt> (<nt def="NT-S">S</nt>
+<nt def="NT-Attribute">Attribute</nt>)* <nt def="NT-S">S</nt>?
+'/&gt;'</rhs>
+<wfc def="uniqattspec"/>
+</prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p>Empty-element tags may be used for any element which has no
+content, whether or not it is declared using the keyword
+<kw>EMPTY</kw>.
+<termref def="dt-interop">For interoperability</termref>, the empty-element
+tag must be used, and can only be used, for elements which are
+<termref def="dt-eldecl">declared</termref> <kw>EMPTY</kw>.</p>
+<p>Examples of empty elements:
+<eg>&lt;IMG align="left"
+ src="http://www.w3.org/Icons/WWW/w3c_home" /&gt;
+&lt;br&gt;&lt;/br&gt;
+&lt;br/&gt;</eg></p>
+</div2>
+
+<div2 id="elemdecls">
+<head>Element Type Declarations</head>
+
+<p>The <termref def="dt-element">element</termref> structure of an
+<termref def="dt-xml-doc">XML document</termref> may, for
+<termref def="dt-valid">validation</termref> purposes,
+be constrained
+using element type and attribute-list declarations.
+An element type declaration constrains the element's
+<termref def="dt-content">content</termref>.
+</p>
+
+<p>Element type declarations often constrain which element types can
+appear as <termref def="dt-parentchild">children</termref> of the element.
+At user option, an XML processor may issue a warning
+when a declaration mentions an element type for which no declaration
+is provided, but this is not an error.</p>
+<p><termdef id="dt-eldecl" term="Element Type declaration">An <term>element
+type declaration</term> takes the form:
+<scrap lang="ebnf">
+<head>Element Type Declaration</head>
+<prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id="NT-elementdecl"><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def="NT-S">S</nt>
+<nt def="NT-Name">Name</nt>
+<nt def="NT-S">S</nt>
+<nt def="NT-contentspec">contentspec</nt>
+<nt def="NT-S">S</nt>? '&gt;'</rhs>
+<vc def="EDUnique"/></prod>
+<prod id="NT-contentspec"><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def="NT-Mixed">Mixed</nt>
+| <nt def="NT-children">children</nt>
+</rhs>
+</prod>
+</prodgroup>
+</scrap>
+where the <nt def="NT-Name">Name</nt> gives the element type
+being declared.</termdef>
+</p>
+
+<vcnote id="EDUnique">
+<head>Unique Element Type Declaration</head>
+<p>
+No element type may be declared more than once.
+</p>
+</vcnote>
+
+<p>Examples of element type declarations:
+<eg>&lt;!ELEMENT br EMPTY&gt;
+&lt;!ELEMENT p (#PCDATA|emph)* &gt;
+&lt;!ELEMENT %name.para; %content.para; &gt;
+&lt;!ELEMENT container ANY&gt;</eg></p>
+
+<div3 id="sec-element-content">
+<head>Element Content</head>
+
+<p><termdef id="dt-elemcontent" term="Element content">An element <termref def="dt-stag">type</termref> has
+<term>element content</term> when elements of that
+type must contain only <termref def="dt-parentchild">child</termref>
+elements (no character data), optionally separated by
+white space (characters matching the nonterminal
+<nt def="NT-S">S</nt>).
+</termdef>
+In this case, the
+constraint includes a content model, a simple grammar governing
+the allowed types of the child
+elements and the order in which they are allowed to appear.
+The grammar is built on
+content particles (<nt def="NT-cp">cp</nt>s), which consist of names,
+choice lists of content particles, or
+sequence lists of content particles:
+<scrap lang="ebnf">
+<head>Element-content Models</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id="NT-children"><lhs>children</lhs>
+<rhs>(<nt def="NT-choice">choice</nt>
+| <nt def="NT-seq">seq</nt>)
+('?' | '*' | '+')?</rhs></prod>
+<prod id="NT-cp"><lhs>cp</lhs>
+<rhs>(<nt def="NT-Name">Name</nt>
+| <nt def="NT-choice">choice</nt>
+| <nt def="NT-seq">seq</nt>)
+('?' | '*' | '+')?</rhs></prod>
+<prod id="NT-choice"><lhs>choice</lhs>
+<rhs>'(' <nt def="NT-S">S</nt>? cp
+( <nt def="NT-S">S</nt>? '|' <nt def="NT-S">S</nt>? <nt def="NT-cp">cp</nt> )*
+<nt def="NT-S">S</nt>? ')'</rhs>
+<vc def="vc-PEinGroup"/></prod>
+<prod id="NT-seq"><lhs>seq</lhs>
+<rhs>'(' <nt def="NT-S">S</nt>? cp
+( <nt def="NT-S">S</nt>? ',' <nt def="NT-S">S</nt>? <nt def="NT-cp">cp</nt> )*
+<nt def="NT-S">S</nt>? ')'</rhs>
+<vc def="vc-PEinGroup"/></prod>
+
+</prodgroup>
+</scrap>
+where each <nt def="NT-Name">Name</nt> is the type of an element which may
+appear as a <termref def="dt-parentchild">child</termref>.
+Any content
+particle in a choice list may appear in the <termref def="dt-elemcontent">element content</termref> at the location where
+the choice list appears in the grammar;
+content particles occurring in a sequence list must each
+appear in the <termref def="dt-elemcontent">element content</termref> in the
+order given in the list.
+The optional character following a name or list governs
+whether the element or the content particles in the list may occur one
+or more (<code>+</code>), zero or more (<code>*</code>), or zero or
+one times (<code>?</code>).
+The absence of such an operator means that the element or content particle
+must appear exactly once.
+This syntax
+and meaning are identical to those used in the productions in this
+specification.</p>
+<p>
+The content of an element matches a content model if and only if it is
+possible to trace out a path through the content model, obeying the
+sequence, choice, and repetition operators and matching each element in
+the content against an element type in the content model. <termref def="dt-compat">For compatibility</termref>, it is an error
+if an element in the document can
+match more than one occurrence of an element type in the content model.
+For more information, see <specref ref="determinism"/>.
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+<vcnote id="vc-PEinGroup">
+<head>Proper Group/PE Nesting</head>
+<p>Parameter-entity
+<termref def="dt-repltext">replacement text</termref> must be properly nested
+with parenthetized groups.
+That is to say, if either of the opening or closing parentheses
+in a <nt def="NT-choice">choice</nt>, <nt def="NT-seq">seq</nt>, or
+<nt def="NT-Mixed">Mixed</nt> construct
+is contained in the replacement text for a
+<termref def="dt-PERef">parameter entity</termref>,
+both must be contained in the same replacement text.</p>
+<p><termref def="dt-interop">For interoperability</termref>,
+if a parameter-entity reference appears in a
+<nt def="NT-choice">choice</nt>, <nt def="NT-seq">seq</nt>, or
+<nt def="NT-Mixed">Mixed</nt> construct, its replacement text
+should not be empty, and
+neither the first nor last non-blank
+character of the replacement text should be a connector
+(<code>|</code> or <code>,</code>).
+</p>
+</vcnote>
+<p>Examples of element-content models:
+<eg>&lt;!ELEMENT spec (front, body, back?)&gt;
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)&gt;
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*&gt;</eg></p>
+</div3>
+
+<div3 id="sec-mixed-content">
+<head>Mixed Content</head>
+
+<p><termdef id="dt-mixed" term="Mixed Content">An element
+<termref def="dt-stag">type</termref> has
+<term>mixed content</term> when elements of that type may contain
+character data, optionally interspersed with
+<termref def="dt-parentchild">child</termref> elements.</termdef>
+In this case, the types of the child elements
+may be constrained, but not their order or their number of occurrences:
+<scrap lang="ebnf">
+<head>Mixed-content Declaration</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id="NT-Mixed"><lhs>Mixed</lhs>
+<rhs>'(' <nt def="NT-S">S</nt>?
+'#PCDATA'
+(<nt def="NT-S">S</nt>?
+'|'
+<nt def="NT-S">S</nt>?
+<nt def="NT-Name">Name</nt>)*
+<nt def="NT-S">S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def="NT-S">S</nt>? '#PCDATA' <nt def="NT-S">S</nt>? ')'
+</rhs><vc def="vc-PEinGroup"/>
+<vc def="vc-MixedChildrenUnique"/>
+</prod>
+
+</prodgroup>
+</scrap>
+where the <nt def="NT-Name">Name</nt>s give the types of elements
+that may appear as children.
+</p>
+<vcnote id="vc-MixedChildrenUnique">
+<head>No Duplicate Types</head>
+<p>The same name must not appear more than once in a single mixed-content
+declaration.
+</p></vcnote>
+<p>Examples of mixed content declarations:
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*&gt;
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* &gt;
+&lt;!ELEMENT b (#PCDATA)&gt;</eg></p>
+</div3>
+</div2>
+
+<div2 id="attdecls">
+<head>Attribute-List Declarations</head>
+
+<p><termref def="dt-attr">Attributes</termref> are used to associate
+name-value pairs with <termref def="dt-element">elements</termref>.
+Attribute specifications may appear only within <termref def="dt-stag">start-tags</termref>
+and <termref def="dt-eetag">empty-element tags</termref>;
+thus, the productions used to
+recognize them appear in <specref ref="sec-starttags"/>.
+Attribute-list
+declarations may be used:
+<ulist>
+<item><p>To define the set of attributes pertaining to a given
+element type.</p></item>
+<item><p>To establish type constraints for these
+attributes.</p></item>
+<item><p>To provide <termref def="dt-default">default values</termref>
+for attributes.</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>Attribute-list declarations</term> specify the name, data type, and default
+value (if any) of each attribute associated with a given element type:
+<scrap lang="ebnf">
+<head>Attribute-list Declaration</head>
+<prod id="NT-AttlistDecl"><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def="NT-S">S</nt>
+<nt def="NT-Name">Name</nt>
+<nt def="NT-AttDef">AttDef</nt>*
+<nt def="NT-S">S</nt>? '&gt;'</rhs>
+</prod>
+<prod id="NT-AttDef"><lhs>AttDef</lhs>
+<rhs><nt def="NT-S">S</nt> <nt def="NT-Name">Name</nt>
+<nt def="NT-S">S</nt> <nt def="NT-AttType">AttType</nt>
+<nt def="NT-S">S</nt> <nt def="NT-DefaultDecl">DefaultDecl</nt></rhs>
+</prod>
+</scrap>
+The <nt def="NT-Name">Name</nt> in the
+<nt def="NT-AttlistDecl">AttlistDecl</nt> rule is the type of an element. At
+user option, an XML processor may issue a warning if attributes are
+declared for an element type not itself declared, but this is not an
+error. The <nt def="NT-Name">Name</nt> in the
+<nt def="NT-AttDef">AttDef</nt> rule is
+the name of the attribute.</termdef></p>
+<p>
+When more than one <nt def="NT-AttlistDecl">AttlistDecl</nt> is provided for a
+given element type, the contents of all those provided are merged. When
+more than one definition is provided for the same attribute of a
+given element type, the first declaration is binding and later
+declarations are ignored.
+<termref def="dt-interop">For interoperability,</termref> writers of DTDs
+may choose to provide at most one attribute-list declaration
+for a given element type, at most one attribute definition
+for a given attribute name, and at least one attribute definition
+in each attribute-list declaration.
+For interoperability, an XML processor may at user option
+issue a warning when more than one attribute-list declaration is
+provided for a given element type, or more than one attribute definition
+is provided
+for a given attribute, but this is not an error.
+</p>
+
+<div3 id="sec-attribute-types">
+<head>Attribute Types</head>
+
+<p>XML attribute types are of three kinds: a string type, a
+set of tokenized types, and enumerated types. The string type may take
+any literal string as a value; the tokenized types have varying lexical
+and semantic constraints, as noted:
+<scrap lang="ebnf">
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id="NT-AttType"><lhs>AttType</lhs>
+<rhs><nt def="NT-StringType">StringType</nt>
+| <nt def="NT-TokenizedType">TokenizedType</nt>
+| <nt def="NT-EnumeratedType">EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id="NT-StringType"><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id="NT-TokenizedType"><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def="id"/>
+<vc def="one-id-per-el"/>
+<vc def="id-default"/>
+<rhs>| 'IDREF'</rhs>
+<vc def="idref"/>
+<rhs>| 'IDREFS'</rhs>
+<vc def="idref"/>
+<rhs>| 'ENTITY'</rhs>
+<vc def="entname"/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def="entname"/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def="nmtok"/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def="nmtok"/></prod>
+</prodgroup>
+</scrap>
+</p>
+<vcnote id="id">
+<head>ID</head>
+<p>
+Values of type <kw>ID</kw> must match the
+<nt def="NT-Name">Name</nt> production.
+A name must not appear more than once in
+an XML document as a value of this type; i.e., ID values must uniquely
+identify the elements which bear them.
+</p>
+</vcnote>
+<vcnote id="one-id-per-el">
+<head>One ID per Element Type</head>
+<p>No element type may have more than one ID attribute specified.</p>
+</vcnote>
+<vcnote id="id-default">
+<head>ID Attribute Default</head>
+<p>An ID attribute must have a declared default of <kw>#IMPLIED</kw> or
+<kw>#REQUIRED</kw>.</p>
+</vcnote>
+<vcnote id="idref">
+<head>IDREF</head>
+<p>
+Values of type <kw>IDREF</kw> must match
+the <nt def="NT-Name">Name</nt> production, and
+values of type <kw>IDREFS</kw> must match
+<nt def="NT-Names">Names</nt>;
+each <nt def="NT-Name">Name</nt> must match the value of an ID attribute on
+some element in the XML document; i.e. <kw>IDREF</kw> values must
+match the value of some ID attribute.
+</p>
+</vcnote>
+<vcnote id="entname">
+<head>Entity Name</head>
+<p>
+Values of type <kw>ENTITY</kw>
+must match the <nt def="NT-Name">Name</nt> production,
+values of type <kw>ENTITIES</kw> must match
+<nt def="NT-Names">Names</nt>;
+each <nt def="NT-Name">Name</nt> must
+match the
+name of an <termref def="dt-unparsed">unparsed entity</termref> declared in the
+<termref def="dt-doctype">DTD</termref>.
+</p>
+</vcnote>
+<vcnote id="nmtok">
+<head>Name Token</head>
+<p>
+Values of type <kw>NMTOKEN</kw> must match the
+<nt def="NT-Nmtoken">Nmtoken</nt> production;
+values of type <kw>NMTOKENS</kw> must
+match <termref def="NT-Nmtokens">Nmtokens</termref>.
+</p>
+</vcnote>
+<!-- why?
+<p>The XML processor must normalize attribute values before
+passing them to the application, as described in
+<specref ref="AVNormalize"/>.</p>-->
+<p><termdef id="dt-enumerated" term="Enumerated Attribute Values"><term>Enumerated attributes</term> can take one
+of a list of values provided in the declaration</termdef>. There are two
+kinds of enumerated types:
+<scrap lang="ebnf">
+<head>Enumerated Attribute Types</head>
+<prod id="NT-EnumeratedType"><lhs>EnumeratedType</lhs>
+<rhs><nt def="NT-NotationType">NotationType</nt>
+| <nt def="NT-Enumeration">Enumeration</nt>
+</rhs></prod>
+<prod id="NT-NotationType"><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def="NT-S">S</nt>
+'('
+<nt def="NT-S">S</nt>?
+<nt def="NT-Name">Name</nt>
+(<nt def="NT-S">S</nt>? '|' <nt def="NT-S">S</nt>?
+<nt def="NT-Name">Name</nt>)*
+<nt def="NT-S">S</nt>? ')'
+</rhs>
+<vc def="notatn"/></prod>
+<prod id="NT-Enumeration"><lhs>Enumeration</lhs>
+<rhs>'(' <nt def="NT-S">S</nt>?
+<nt def="NT-Nmtoken">Nmtoken</nt>
+(<nt def="NT-S">S</nt>? '|'
+<nt def="NT-S">S</nt>?
+<nt def="NT-Nmtoken">Nmtoken</nt>)*
+<nt def="NT-S">S</nt>?
+')'</rhs>
+<vc def="enum"/></prod>
+</scrap>
+A <kw>NOTATION</kw> attribute identifies a
+<termref def="dt-notation">notation</termref>, declared in the
+DTD with associated system and/or public identifiers, to
+be used in interpreting the element to which the attribute
+is attached.
+</p>
+
+<vcnote id="notatn">
+<head>Notation Attributes</head>
+<p>
+Values of this type must match
+one of the <titleref href="Notations">notation</titleref> names included in
+the declaration; all notation names in the declaration must
+be declared.
+</p>
+</vcnote>
+<vcnote id="enum">
+<head>Enumeration</head>
+<p>
+Values of this type
+must match one of the <nt def="NT-Nmtoken">Nmtoken</nt> tokens in the
+declaration.
+</p>
+</vcnote>
+<p><termref def="dt-interop">For interoperability,</termref> the same
+<nt def="NT-Nmtoken">Nmtoken</nt> should not occur more than once in the
+enumerated attribute types of a single element type.
+</p>
+</div3>
+
+<div3 id="sec-attr-defaults">
+<head>Attribute Defaults</head>
+
+<p>An <termref def="dt-attdecl">attribute declaration</termref> provides
+information on whether
+the attribute's presence is required, and if not, how an XML processor should
+react if a declared attribute is absent in a document.
+<scrap lang="ebnf">
+<head>Attribute Defaults</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id="NT-DefaultDecl"><lhs>DefaultDecl</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def="NT-AttValue">AttValue</nt>)</rhs>
+<vc def="RequiredAttr"/>
+<vc def="defattrvalid"/>
+<wfc def="CleanAttrVals"/>
+<vc def="FixedAttr"/>
+</prod>
+</prodgroup>
+</scrap>
+
+</p>
+<p>In an attribute declaration, <kw>#REQUIRED</kw> means that the
+attribute must always be provided, <kw>#IMPLIED</kw> that no default
+value is provided.
+<!-- not any more!!
+<kw>#IMPLIED</kw> means that if the attribute is omitted
+from an element of this type,
+the XML processor must inform the application
+that no value was specified; no constraint is placed on the behavior
+of the application. -->
+<termdef id="dt-default" term="Attribute Default">If the
+declaration
+is neither <kw>#REQUIRED</kw> nor <kw>#IMPLIED</kw>, then the
+<nt def="NT-AttValue">AttValue</nt> value contains the declared
+<term>default</term> value; the <kw>#FIXED</kw> keyword states that
+the attribute must always have the default value.
+If a default value
+is declared, when an XML processor encounters an omitted attribute, it
+is to behave as though the attribute were present with
+the declared default value.</termdef></p>
+<vcnote id="RequiredAttr">
+<head>Required Attribute</head>
+<p>If the default declaration is the keyword <kw>#REQUIRED</kw>, then
+the attribute must be specified for
+all elements of the type in the attribute-list declaration.
+</p></vcnote>
+<vcnote id="defattrvalid">
+<head>Attribute Default Legal</head>
+<p>
+The declared
+default value must meet the lexical constraints of the declared attribute type.
+</p>
+</vcnote>
+<vcnote id="FixedAttr">
+<head>Fixed Attribute Default</head>
+<p>If an attribute has a default value declared with the
+<kw>#FIXED</kw> keyword, instances of that attribute must
+match the default value.
+</p></vcnote>
+
+<p>Examples of attribute-list declarations:
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED&gt;
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered"&gt;
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"&gt;</eg></p>
+</div3>
+<div3 id="AVNormalize">
+<head>Attribute-Value Normalization</head>
+<p>Before the value of an attribute is passed to the application
+or checked for validity, the
+XML processor must normalize it as follows:
+<ulist>
+<item><p>a character reference is processed by appending the referenced
+character to the attribute value</p></item>
+<item><p>an entity reference is processed by recursively processing the
+replacement text of the entity</p></item>
+<item><p>a whitespace character (#x20, #xD, #xA, #x9) is processed by
+appending #x20 to the normalized value, except that only a single #x20
+is appended for a "#xD#xA" sequence that is part of an external
+parsed entity or the literal entity value of an internal parsed
+entity</p></item>
+<item><p>other characters are processed by appending them to the normalized
+value</p>
+</item></ulist>
+</p>
+<p>If the declared value is not CDATA, then the XML processor must
+further process the normalized attribute value by discarding any
+leading and trailing space (#x20) characters, and by replacing
+sequences of space (#x20) characters by a single space (#x20)
+character.</p>
+<p>
+All attributes for which no declaration has been read should be treated
+by a non-validating parser as if declared
+<kw>CDATA</kw>.
+</p>
+</div3>
+</div2>
+<div2 id="sec-condition-sect">
+<head>Conditional Sections</head>
+<p><termdef id="dt-cond-section" term="conditional section">
+<term>Conditional sections</term> are portions of the
+<termref def="dt-doctype">document type declaration external subset</termref>
+which are
+included in, or excluded from, the logical structure of the DTD based on
+the keyword which governs them.</termdef>
+<scrap lang="ebnf">
+<head>Conditional Section</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id="NT-conditionalSect"><lhs>conditionalSect</lhs>
+<rhs><nt def="NT-includeSect">includeSect</nt>
+| <nt def="NT-ignoreSect">ignoreSect</nt>
+</rhs>
+</prod>
+<prod id="NT-includeSect"><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+
+<nt def="NT-extSubsetDecl">extSubsetDecl</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id="NT-ignoreSect"><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+
+<prod id="NT-ignoreSectContents"><lhs>ignoreSectContents</lhs>
+<rhs><nt def="NT-Ignore">Ignore</nt>
+('&lt;![' <nt def="NT-ignoreSectContents">ignoreSectContents</nt> ']]&gt;'
+<nt def="NT-Ignore">Ignore</nt>)*</rhs></prod>
+<prod id="NT-Ignore"><lhs>Ignore</lhs>
+<rhs><nt def="NT-Char">Char</nt>* -
+(<nt def="NT-Char">Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def="NT-Char">Char</nt>*)
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>Like the internal and external DTD subsets, a conditional section
+may contain one or more complete declarations,
+comments, processing instructions,
+or nested conditional sections, intermingled with white space.
+</p>
+<p>If the keyword of the
+conditional section is <kw>INCLUDE</kw>, then the contents of the conditional
+section are part of the DTD.
+If the keyword of the conditional
+section is <kw>IGNORE</kw>, then the contents of the conditional section are
+not logically part of the DTD.
+Note that for reliable parsing, the contents of even ignored
+conditional sections must be read in order to
+detect nested conditional sections and ensure that the end of the
+outermost (ignored) conditional section is properly detected.
+If a conditional section with a
+keyword of <kw>INCLUDE</kw> occurs within a larger conditional
+section with a keyword of <kw>IGNORE</kw>, both the outer and the
+inner conditional sections are ignored.</p>
+<p>If the keyword of the conditional section is a
+parameter-entity reference, the parameter entity must be replaced by its
+content before the processor decides whether to
+include or ignore the conditional section.</p>
+<p>An example:
+<eg>&lt;!ENTITY % draft 'INCLUDE' &gt;
+&lt;!ENTITY % final 'IGNORE' &gt;
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)&gt;
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)&gt;
+]]&gt;
+</eg>
+</p>
+</div2>
+
+
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id="sec-physical-struct">
+<head>Physical Structures</head>
+
+<p><termdef id="dt-entity" term="Entity">An XML document may consist
+of one or many storage units. These are called
+<term>entities</term>; they all have <term>content</term> and are all
+(except for the document entity, see below, and
+the <termref def="dt-doctype">external DTD subset</termref>)
+identified by <term>name</term>.
+</termdef>
+Each XML document has one entity
+called the <termref def="dt-docent">document entity</termref>, which serves
+as the starting point for the <termref def="dt-xml-proc">XML
+processor</termref> and may contain the whole document.</p>
+<p>Entities may be either parsed or unparsed.
+<termdef id="dt-parsedent" term="Text Entity">A <term>parsed entity's</term>
+contents are referred to as its
+<termref def="dt-repltext">replacement text</termref>;
+this <termref def="dt-text">text</termref> is considered an
+integral part of the document.</termdef></p>
+
+<p><termdef id="dt-unparsed" term="Unparsed Entity">An
+<term>unparsed entity</term>
+is a resource whose contents may or may not be
+<termref def="dt-text">text</termref>, and if text, may not be XML.
+Each unparsed entity
+has an associated <termref def="dt-notation">notation</termref>, identified by name.
+Beyond a requirement
+that an XML processor make the identifiers for the entity and
+notation available to the application,
+XML places no constraints on the contents of unparsed entities.</termdef>
+</p>
+<p>
+Parsed entities are invoked by name using entity references;
+unparsed entities by name, given in the value of <kw>ENTITY</kw>
+or <kw>ENTITIES</kw>
+attributes.</p>
+<p><termdef id="gen-entity" term="general entity"><term>General entities</term>
+are entities for use within the document content.
+In this specification, general entities are sometimes referred
+to with the unqualified term <emph>entity</emph> when this leads
+to no ambiguity.</termdef>
+<termdef id="dt-PE" term="Parameter entity">Parameter entities
+are parsed entities for use within the DTD.</termdef>
+These two types of entities use different forms of reference and
+are recognized in different contexts.
+Furthermore, they occupy different namespaces; a parameter entity and
+a general entity with the same name are two distinct entities.
+</p>
+
+<div2 id="sec-references">
+<head>Character and Entity References</head>
+<p><termdef id="dt-charref" term="Character Reference">
+A <term>character reference</term> refers to a specific character in the
+ISO/IEC 10646 character set, for example one not directly accessible from
+available input devices.
+<scrap lang="ebnf">
+<head>Character Reference</head>
+<prod id="NT-CharRef"><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>Legal Character</head>
+<p>Characters referred to using character references must
+match the production for
+<termref def="NT-Char">Char</termref>.</p>
+</wfcnote>
+If the character reference begins with "<code>&amp;#x</code>", the digits and
+letters up to the terminating <code>;</code> provide a hexadecimal
+representation of the character's code point in ISO/IEC 10646.
+If it begins just with "<code>&amp;#</code>", the digits up to the terminating
+<code>;</code> provide a decimal representation of the character's
+code point.
+</termdef>
+</p>
+<p><termdef id="dt-entref" term="Entity Reference">An <term>entity
+reference</term> refers to the content of a named entity.</termdef>
+<termdef id="dt-GERef" term="General Entity Reference">References to
+parsed general entities
+use ampersand (<code>&amp;</code>) and semicolon (<code>;</code>) as
+delimiters.</termdef>
+<termdef id="dt-PERef" term="Parameter-entity reference">
+<term>Parameter-entity references</term> use percent-sign (<code>%</code>) and
+semicolon
+(<code>;</code>) as delimiters.</termdef>
+</p>
+<scrap lang="ebnf">
+<head>Entity Reference</head>
+<prod id="NT-Reference"><lhs>Reference</lhs>
+<rhs><nt def="NT-EntityRef">EntityRef</nt>
+| <nt def="NT-CharRef">CharRef</nt></rhs></prod>
+<prod id="NT-EntityRef"><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def="NT-Name">Name</nt> ';'</rhs>
+<wfc def="wf-entdeclared"/>
+<vc def="vc-entdeclared"/>
+<wfc def="textent"/>
+<wfc def="norecursion"/>
+</prod>
+<prod id="NT-PEReference"><lhs>PEReference</lhs>
+<rhs>'%' <nt def="NT-Name">Name</nt> ';'</rhs>
+<vc def="vc-entdeclared"/>
+<wfc def="norecursion"/>
+<wfc def="indtd"/>
+</prod>
+</scrap>
+
+<wfcnote id="wf-entdeclared">
+<head>Entity Declared</head>
+<p>In a document without any DTD, a document with only an internal
+DTD subset which contains no parameter entity references, or a document with
+"<code>standalone='yes'</code>",
+the <nt def="NT-Name">Name</nt> given in the entity reference must
+<termref def="dt-match">match</termref> that in an
+<titleref href="sec-entity-decl">entity declaration</titleref>, except that
+well-formed documents need not declare
+any of the following entities: &magicents;.
+The declaration of a parameter entity must precede any reference to it.
+Similarly, the declaration of a general entity must precede any
+reference to it which appears in a default value in an attribute-list
+declaration.</p>
+<p>Note that if entities are declared in the external subset or in
+external parameter entities, a non-validating processor is
+<titleref href="include-if-valid">not obligated to</titleref> read
+and process their declarations; for such documents, the rule that
+an entity must be declared is a well-formedness constraint only
+if <titleref href="sec-rmd">standalone='yes'</titleref>.</p>
+</wfcnote>
+<vcnote id="vc-entdeclared">
+<head>Entity Declared</head>
+<p>In a document with an external subset or external parameter
+entities with "<code>standalone='no'</code>",
+the <nt def="NT-Name">Name</nt> given in the entity reference must <termref def="dt-match">match</termref> that in an
+<titleref href="sec-entity-decl">entity declaration</titleref>.
+For interoperability, valid documents should declare the entities
+&magicents;, in the form
+specified in <specref ref="sec-predefined-ent"/>.
+The declaration of a parameter entity must precede any reference to it.
+Similarly, the declaration of a general entity must precede any
+reference to it which appears in a default value in an attribute-list
+declaration.</p>
+</vcnote>
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+<wfcnote id="textent">
+<head>Parsed Entity</head>
+<p>
+An entity reference must not contain the name of an <termref def="dt-unparsed">unparsed entity</termref>. Unparsed entities may be referred
+to only in <termref def="dt-attrval">attribute values</termref> declared to
+be of type <kw>ENTITY</kw> or <kw>ENTITIES</kw>.
+</p>
+</wfcnote>
+<wfcnote id="norecursion">
+<head>No Recursion</head>
+<p>
+A parsed entity must not contain a recursive reference to itself,
+either directly or indirectly.
+</p>
+</wfcnote>
+<wfcnote id="indtd">
+<head>In DTD</head>
+<p>
+Parameter-entity references may only appear in the
+<termref def="dt-doctype">DTD</termref>.
+</p>
+</wfcnote>
+<p>Examples of character and entity references:
+<eg>Type &lt;key&gt;less-than&lt;/key&gt; (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg></p>
+<p>Example of a parameter-entity reference:
+<eg><![CDATA[<!-- declare the parameter entity "ISOLat2"... -->
+<!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+<!-- ... now reference it. -->
+%ISOLat2;]]></eg></p>
+</div2>
+
+<div2 id="sec-entity-decl">
+<head>Entity Declarations</head>
+
+<p><termdef id="dt-entdecl" term="entity declaration">
+Entities are declared thus:
+<scrap lang="ebnf">
+<head>Entity Declaration</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id="NT-EntityDecl"><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt><!--</rhs><com>General entities</com>
+<rhs>--> | <nt def="NT-PEDecl">PEDecl</nt></rhs>
+<!--<com>Parameter entities</com>-->
+</prod>
+<prod id="NT-GEDecl"><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def="NT-S">S</nt> <nt def="NT-Name">Name</nt>
+<nt def="NT-S">S</nt> <nt def="NT-EntityDef">EntityDef</nt>
+<nt def="NT-S">S</nt>? '&gt;'</rhs>
+</prod>
+<prod id="NT-PEDecl"><lhs>PEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def="NT-S">S</nt> '%' <nt def="NT-S">S</nt>
+<nt def="NT-Name">Name</nt> <nt def="NT-S">S</nt>
+<nt def="NT-PEDef">PEDef</nt> <nt def="NT-S">S</nt>? '&gt;'</rhs>
+<!--<com>Parameter entities</com>-->
+</prod>
+<prod id="NT-EntityDef"><lhs>EntityDef</lhs>
+<rhs><nt def="NT-EntityValue">EntityValue</nt>
+<!--</rhs>
+<rhs>-->| (<nt def="NT-ExternalID">ExternalID</nt>
+<nt def="NT-NDataDecl">NDataDecl</nt>?)</rhs>
+<!-- <nt def='NT-ExternalDef'>ExternalDef</nt></rhs> -->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id="NT-PEDef"><lhs>PEDef</lhs>
+<rhs><nt def="NT-EntityValue">EntityValue</nt>
+| <nt def="NT-ExternalID">ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+The <nt def="NT-Name">Name</nt> identifies the entity in an
+<termref def="dt-entref">entity reference</termref> or, in the case of an
+unparsed entity, in the value of an <kw>ENTITY</kw> or <kw>ENTITIES</kw>
+attribute.
+If the same entity is declared more than once, the first declaration
+encountered is binding; at user option, an XML processor may issue a
+warning if entities are declared multiple times.</termdef>
+</p>
+
+<div3 id="sec-internal-ent">
+<head>Internal Entities</head>
+
+<p><termdef id="dt-internent" term="Internal Entity Replacement Text">If
+the entity definition is an
+<nt def="NT-EntityValue">EntityValue</nt>,
+the defined entity is called an <term>internal entity</term>.
+There is no separate physical
+storage object, and the content of the entity is given in the
+declaration. </termdef>
+Note that some processing of entity and character references in the
+<termref def="dt-litentval">literal entity value</termref> may be required to
+produce the correct <termref def="dt-repltext">replacement
+text</termref>: see <specref ref="intern-replacement"/>.
+</p>
+<p>An internal entity is a <termref def="dt-parsedent">parsed
+entity</termref>.</p>
+<p>Example of an internal entity declaration:
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the
+ specification."&gt;</eg></p>
+</div3>
+
+<div3 id="sec-external-ent">
+<head>External Entities</head>
+
+<p><termdef id="dt-extent" term="External Entity">If the entity is not
+internal, it is an <term>external
+entity</term>, declared as follows:
+<scrap lang="ebnf">
+<head>External Entity Declaration</head>
+<!--
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs></prod> -->
+<prod id="NT-ExternalID"><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def="NT-S">S</nt>
+<nt def="NT-SystemLiteral">SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def="NT-S">S</nt>
+<nt def="NT-PubidLiteral">PubidLiteral</nt>
+<nt def="NT-S">S</nt>
+<nt def="NT-SystemLiteral">SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id="NT-NDataDecl"><lhs>NDataDecl</lhs>
+<rhs><nt def="NT-S">S</nt> 'NDATA' <nt def="NT-S">S</nt>
+<nt def="NT-Name">Name</nt></rhs>
+<vc def="not-declared"/></prod>
+</scrap>
+If the <nt def="NT-NDataDecl">NDataDecl</nt> is present, this is a
+general <termref def="dt-unparsed">unparsed
+entity</termref>; otherwise it is a parsed entity.</termdef></p>
+<vcnote id="not-declared">
+<head>Notation Declared</head>
+<p>
+The <nt def="NT-Name">Name</nt> must match the declared name of a
+<termref def="dt-notation">notation</termref>.
+</p>
+</vcnote>
+<p><termdef id="dt-sysid" term="System Identifier">The
+<nt def="NT-SystemLiteral">SystemLiteral</nt>
+is called the entity's <term>system identifier</term>. It is a URI,
+which may be used to retrieve the entity.</termdef>
+Note that the hash mark (<code>#</code>) and fragment identifier
+frequently used with URIs are not, formally, part of the URI itself;
+an XML processor may signal an error if a fragment identifier is
+given as part of a system identifier.
+Unless otherwise provided by information outside the scope of this
+specification (e.g. a special XML element type defined by a particular
+DTD, or a processing instruction defined by a particular application
+specification), relative URIs are relative to the location of the
+resource within which the entity declaration occurs.
+A URI might thus be relative to the
+<termref def="dt-docent">document entity</termref>, to the entity
+containing the <termref def="dt-doctype">external DTD subset</termref>,
+or to some other <termref def="dt-extent">external parameter entity</termref>.
+</p>
+<p>An XML processor should handle a non-ASCII character in a URI by
+representing the character in UTF-8 as one or more bytes, and then
+escaping these bytes with the URI escaping mechanism (i.e., by
+converting each byte to %HH, where HH is the hexadecimal notation of the
+byte value).</p>
+<p><termdef id="dt-pubid" term="Public identifier">
+In addition to a system identifier, an external identifier may
+include a <term>public identifier</term>.</termdef>
+An XML processor attempting to retrieve the entity's content may use the public
+identifier to try to generate an alternative URI. If the processor
+is unable to do so, it must use the URI specified in the system
+literal. Before a match is attempted, all strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p>
+<p>Examples of external entity declarations:
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"&gt;
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml"&gt;
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif &gt;</eg></p>
+</div3>
+
+</div2>
+
+<div2 id="TextEntities">
+<head>Parsed Entities</head>
+<div3 id="sec-TextDecl">
+<head>The Text Declaration</head>
+<p>External parsed entities may each begin with a <term>text
+declaration</term>.
+<scrap lang="ebnf">
+<head>Text Declaration</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id="NT-TextDecl"><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def="NT-VersionInfo">VersionInfo</nt>?
+<nt def="NT-EncodingDecl">EncodingDecl</nt>
+<nt def="NT-S">S</nt>? &pic;</rhs>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>The text declaration must be provided literally, not
+by reference to a parsed entity.
+No text declaration may appear at any position other than the beginning of
+an external parsed entity.</p>
+</div3>
+<div3 id="wf-entities">
+<head>Well-Formed Parsed Entities</head>
+<p>The document entity is well-formed if it matches the production labeled
+<nt def="NT-document">document</nt>.
+An external general
+parsed entity is well-formed if it matches the production labeled
+<nt def="NT-extParsedEnt">extParsedEnt</nt>.
+An external parameter
+entity is well-formed if it matches the production labeled
+<nt def="NT-extPE">extPE</nt>.
+<scrap lang="ebnf">
+<head>Well-Formed External Parsed Entity</head>
+<prod id="NT-extParsedEnt"><lhs>extParsedEnt</lhs>
+<rhs><nt def="NT-TextDecl">TextDecl</nt>?
+<nt def="NT-content">content</nt></rhs>
+</prod>
+<prod id="NT-extPE"><lhs>extPE</lhs>
+<rhs><nt def="NT-TextDecl">TextDecl</nt>?
+<nt def="NT-extSubsetDecl">extSubsetDecl</nt></rhs>
+</prod>
+</scrap>
+An internal general parsed entity is well-formed if its replacement text
+matches the production labeled
+<nt def="NT-content">content</nt>.
+All internal parameter entities are well-formed by definition.
+</p>
+<p>A consequence of well-formedness in entities is that the logical
+and physical structures in an XML document are properly nested; no
+<termref def="dt-stag">start-tag</termref>,
+<termref def="dt-etag">end-tag</termref>,
+<termref def="dt-empty">empty-element tag</termref>,
+<termref def="dt-element">element</termref>,
+<termref def="dt-comment">comment</termref>,
+<termref def="dt-pi">processing instruction</termref>,
+<termref def="dt-charref">character
+reference</termref>, or
+<termref def="dt-entref">entity reference</termref>
+can begin in one entity and end in another.</p>
+</div3>
+<div3 id="charencoding">
+<head>Character Encoding in Entities</head>
+
+<p>Each external parsed entity in an XML document may use a different
+encoding for its characters. All XML processors must be able to read
+entities in either UTF-8 or UTF-16.
+
+</p>
+<p>Entities encoded in UTF-16 must
+begin with the Byte Order Mark described by ISO/IEC 10646 Annex E and
+Unicode Appendix B (the ZERO WIDTH NO-BREAK SPACE character, #xFEFF).
+This is an encoding signature, not part of either the markup or the
+character data of the XML document.
+XML processors must be able to use this character to
+differentiate between UTF-8 and UTF-16 encoded documents.</p>
+<p>Although an XML processor is required to read only entities in
+the UTF-8 and UTF-16 encodings, it is recognized that other encodings are
+used around the world, and it may be desired for XML processors
+to read entities that use them.
+Parsed entities which are stored in an encoding other than
+UTF-8 or UTF-16 must begin with a <titleref href="TextDecl">text
+declaration</titleref> containing an encoding declaration:
+<scrap lang="ebnf">
+<head>Encoding Declaration</head>
+<prod id="NT-EncodingDecl"><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def="NT-Eq">Eq</nt>
+('"' <nt def="NT-EncName">EncName</nt> '"' |
+"'" <nt def="NT-EncName">EncName</nt> "'" )
+</rhs>
+</prod>
+<prod id="NT-EncName"><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>Encoding name contains only Latin characters</com>
+</prod>
+</scrap>
+In the <termref def="dt-docent">document entity</termref>, the encoding
+declaration is part of the <termref def="dt-xmldecl">XML declaration</termref>.
+The <nt def="NT-EncName">EncName</nt> is the name of the encoding used.
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>In an encoding declaration, the values
+"<code>UTF-8</code>",
+"<code>UTF-16</code>",
+"<code>ISO-10646-UCS-2</code>", and
+"<code>ISO-10646-UCS-4</code>" should be
+used for the various encodings and transformations of Unicode /
+ISO/IEC 10646, the values
+"<code>ISO-8859-1</code>",
+"<code>ISO-8859-2</code>", ...
+"<code>ISO-8859-9</code>" should be used for the parts of ISO 8859, and
+the values
+"<code>ISO-2022-JP</code>",
+"<code>Shift_JIS</code>", and
+"<code>EUC-JP</code>"
+should be used for the various encoded forms of JIS X-0208-1997. XML
+processors may recognize other encodings; it is recommended that
+character encodings registered (as <emph>charset</emph>s)
+with the Internet Assigned Numbers
+Authority <bibref ref="IANA"/>, other than those just listed, should be
+referred to
+using their registered names.
+Note that these registered names are defined to be
+case-insensitive, so processors wishing to match against them
+should do so in a case-insensitive
+way.</p>
+<p>In the absence of information provided by an external
+transport protocol (e.g. HTTP or MIME),
+it is an <termref def="dt-error">error</termref> for an entity including
+an encoding declaration to be presented to the XML processor
+in an encoding other than that named in the declaration,
+for an encoding declaration to occur other than at the beginning
+of an external entity, or for
+an entity which begins with neither a Byte Order Mark nor an encoding
+declaration to use an encoding other than UTF-8.
+Note that since ASCII
+is a subset of UTF-8, ordinary ASCII entities do not strictly need
+an encoding declaration.</p>
+
+<p>It is a <termref def="dt-fatal">fatal error</termref> when an XML processor
+encounters an entity with an encoding that it is unable to process.</p>
+<p>Examples of encoding declarations:
+<eg>&lt;?xml encoding='UTF-8'?&gt;
+&lt;?xml encoding='EUC-JP'?&gt;</eg></p>
+</div3>
+</div2>
+<div2 id="entproc">
+<head>XML Processor Treatment of Entities and References</head>
+<p>The table below summarizes the contexts in which character references,
+entity references, and invocations of unparsed entities might appear and the
+required behavior of an <termref def="dt-xml-proc">XML processor</termref> in
+each case.
+The labels in the leftmost column describe the recognition context:
+<glist>
+<gitem><label>Reference in Content</label>
+<def><p>as a reference
+anywhere after the <termref def="dt-stag">start-tag</termref> and
+before the <termref def="dt-etag">end-tag</termref> of an element; corresponds
+to the nonterminal <nt def="NT-content">content</nt>.</p></def>
+</gitem>
+<gitem>
+<label>Reference in Attribute Value</label>
+<def><p>as a reference within either the value of an attribute in a
+<termref def="dt-stag">start-tag</termref>, or a default
+value in an <termref def="dt-attdecl">attribute declaration</termref>;
+corresponds to the nonterminal
+<nt def="NT-AttValue">AttValue</nt>.</p></def></gitem>
+<gitem>
+<label>Occurs as Attribute Value</label>
+<def><p>as a <nt def="NT-Name">Name</nt>, not a reference, appearing either as
+the value of an
+attribute which has been declared as type <kw>ENTITY</kw>, or as one of
+the space-separated tokens in the value of an attribute which has been
+declared as type <kw>ENTITIES</kw>.</p>
+</def></gitem>
+<gitem><label>Reference in Entity Value</label>
+<def><p>as a reference
+within a parameter or internal entity's
+<termref def="dt-litentval">literal entity value</termref> in
+the entity's declaration; corresponds to the nonterminal
+<nt def="NT-EntityValue">EntityValue</nt>.</p></def></gitem>
+<gitem><label>Reference in DTD</label>
+<def><p>as a reference within either the internal or external subsets of the
+<termref def="dt-doctype">DTD</termref>, but outside
+of an <nt def="NT-EntityValue">EntityValue</nt> or
+<nt def="NT-AttValue">AttValue</nt>.</p></def>
+</gitem>
+</glist></p>
+<htable border="1" cellpadding="7" align="center">
+<htbody>
+<tr><td bgcolor="&cellback;" rowspan="2" colspan="1"/>
+<td bgcolor="&cellback;" align="center" valign="bottom" colspan="4">Entity Type</td>
+<td bgcolor="&cellback;" rowspan="2" align="center">Character</td>
+</tr>
+<tr align="center" valign="bottom">
+<td bgcolor="&cellback;">Parameter</td>
+<td bgcolor="&cellback;">Internal
+General</td>
+<td bgcolor="&cellback;">External Parsed
+General</td>
+<td bgcolor="&cellback;">Unparsed</td>
+</tr>
+<tr align="center" valign="middle">
+
+<td bgcolor="&cellback;" align="right">Reference
+in Content</td>
+<td bgcolor="&cellback;"><titleref href="not-recognized">Not recognized</titleref></td>
+<td bgcolor="&cellback;"><titleref href="included">Included</titleref></td>
+<td bgcolor="&cellback;"><titleref href="include-if-valid">Included if validating</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="included">Included</titleref></td>
+</tr>
+<tr align="center" valign="middle">
+<td bgcolor="&cellback;" align="right">Reference
+in Attribute Value</td>
+<td bgcolor="&cellback;"><titleref href="not-recognized">Not recognized</titleref></td>
+<td bgcolor="&cellback;"><titleref href="inliteral">Included in literal</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="included">Included</titleref></td>
+</tr>
+<tr align="center" valign="middle">
+<td bgcolor="&cellback;" align="right">Occurs as
+Attribute Value</td>
+<td bgcolor="&cellback;"><titleref href="not-recognized">Not recognized</titleref></td>
+<td bgcolor="&cellback;"><titleref href="not-recognized">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="not-recognized">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="notify">Notify</titleref></td>
+<td bgcolor="&cellback;"><titleref href="not recognized">Not recognized</titleref></td>
+</tr>
+<tr align="center" valign="middle">
+<td bgcolor="&cellback;" align="right">Reference
+in EntityValue</td>
+<td bgcolor="&cellback;"><titleref href="inliteral">Included in literal</titleref></td>
+<td bgcolor="&cellback;"><titleref href="bypass">Bypassed</titleref></td>
+<td bgcolor="&cellback;"><titleref href="bypass">Bypassed</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="included">Included</titleref></td>
+</tr>
+<tr align="center" valign="middle">
+<td bgcolor="&cellback;" align="right">Reference
+in DTD</td>
+<td bgcolor="&cellback;"><titleref href="as-PE">Included as PE</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+<td bgcolor="&cellback;"><titleref href="forbidden">Forbidden</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id="not-recognized">
+<head>Not Recognized</head>
+<p>Outside the DTD, the <code>%</code> character has no
+special significance; thus, what would be parameter entity references in the
+DTD are not recognized as markup in <nt def="NT-content">content</nt>.
+Similarly, the names of unparsed entities are not recognized except
+when they appear in the value of an appropriately declared attribute.
+</p>
+</div3>
+<div3 id="included">
+<head>Included</head>
+<p><termdef id="dt-include" term="Include">An entity is
+<term>included</term> when its
+<termref def="dt-repltext">replacement text</termref> is retrieved
+and processed, in place of the reference itself,
+as though it were part of the document at the location the
+reference was recognized.
+The replacement text may contain both
+<termref def="dt-chardata">character data</termref>
+and (except for parameter entities) <termref def="dt-markup">markup</termref>,
+which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" and the remaining ampersand is not recognized
+as an entity-reference delimiter.)
+A character reference is <term>included</term> when the indicated
+character is processed in place of the reference itself.
+</termdef></p>
+</div3>
+<div3 id="include-if-valid">
+<head>Included If Validating</head>
+<p>When an XML processor recognizes a reference to a parsed entity, in order
+to <termref def="dt-valid">validate</termref>
+the document, the processor must
+<termref def="dt-include">include</termref> its
+replacement text.
+If the entity is external, and the processor is not
+attempting to validate the XML document, the
+processor <termref def="dt-may">may</termref>, but need not,
+include the entity's replacement text.
+If a non-validating parser does not include the replacement text,
+it must inform the application that it recognized, but did not
+read, the entity.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p>
+</div3>
+<div3 id="forbidden">
+<head>Forbidden</head>
+<p>The following are forbidden, and constitute
+<termref def="dt-fatal">fatal</termref> errors:
+<ulist>
+<item><p>the appearance of a reference to an
+<termref def="dt-unparsed">unparsed entity</termref>.
+</p></item>
+<item><p>the appearance of any character or general-entity reference in the
+DTD except within an <nt def="NT-EntityValue">EntityValue</nt> or
+<nt def="NT-AttValue">AttValue</nt>.</p></item>
+<item><p>a reference to an external entity in an attribute value.</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id="inliteral">
+<head>Included in Literal</head>
+<p>When an <termref def="dt-entref">entity reference</termref> appears in an
+attribute value, or a parameter entity reference appears in a literal entity
+value, its <termref def="dt-repltext">replacement text</termref> is
+processed in place of the reference itself as though it
+were part of the document at the location the reference was recognized,
+except that a single or double quote character in the replacement text
+is always treated as a normal data character and will not terminate the
+literal.
+For example, this is well-formed:
+<eg><![CDATA[<!ENTITY % YN '"Yes"' >
+<!ENTITY WhatHeSaid "He said &YN;" >]]></eg>
+while this is not:
+<eg>&lt;!ENTITY EndAttr "27'" &gt;
+&lt;element attribute='a-&amp;EndAttr;&gt;</eg>
+</p></div3>
+<div3 id="notify">
+<head>Notify</head>
+<p>When the name of an <termref def="dt-unparsed">unparsed
+entity</termref> appears as a token in the
+value of an attribute of declared type <kw>ENTITY</kw> or <kw>ENTITIES</kw>,
+a validating processor must inform the
+application of the <termref def="dt-sysid">system</termref>
+and <termref def="dt-pubid">public</termref> (if any)
+identifiers for both the entity and its associated
+<termref def="dt-notation">notation</termref>.</p>
+</div3>
+<div3 id="bypass">
+<head>Bypassed</head>
+<p>When a general entity reference appears in the
+<nt def="NT-EntityValue">EntityValue</nt> in an entity declaration,
+it is bypassed and left as is.</p>
+</div3>
+<div3 id="as-PE">
+<head>Included as PE</head>
+<p>Just as with external parsed entities, parameter entities
+need only be <titleref href="include-if-valid">included if
+validating</titleref>.
+When a parameter-entity reference is recognized in the DTD
+and included, its
+<termref def="dt-repltext">replacement
+text</termref> is enlarged by the attachment of one leading and one following
+space (#x20) character; the intent is to constrain the replacement
+text of parameter
+entities to contain an integral number of grammatical tokens in the DTD.
+</p>
+</div3>
+
+</div2>
+<div2 id="intern-replacement">
+<head>Construction of Internal Entity Replacement Text</head>
+<p>In discussing the treatment
+of internal entities, it is
+useful to distinguish two forms of the entity's value.
+<termdef id="dt-litentval" term="Literal Entity Value">The <term>literal
+entity value</term> is the quoted string actually
+present in the entity declaration, corresponding to the
+non-terminal <nt def="NT-EntityValue">EntityValue</nt>.</termdef>
+<termdef id="dt-repltext" term="Replacement Text">The <term>replacement
+text</term> is the content of the entity, after
+replacement of character references and parameter-entity
+references.
+</termdef></p>
+
+<p>The literal entity value
+as given in an internal entity declaration
+(<nt def="NT-EntityValue">EntityValue</nt>) may contain character,
+parameter-entity, and general-entity references.
+Such references must be contained entirely within the
+literal entity value.
+The actual replacement text that is
+<termref def="dt-include">included</termref> as described above
+must contain the <emph>replacement text</emph> of any
+parameter entities referred to, and must contain the character
+referred to, in place of any character references in the
+literal entity value; however,
+general-entity references must be left as-is, unexpanded.
+For example, given the following declarations:
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+then the replacement text for the entity "<code>book</code>" is:
+<eg>La Peste: Albert Camus,
+© 1947 Éditions Gallimard. &amp;rights;</eg>
+The general-entity reference "<code>&amp;rights;</code>" would be expanded
+should the reference "<code>&amp;book;</code>" appear in the document's
+content or an attribute value.</p>
+<p>These simple rules may have complex interactions; for a detailed
+discussion of a difficult example, see
+<specref ref="sec-entexpand"/>.
+</p>
+
+</div2>
+<div2 id="sec-predefined-ent">
+<head>Predefined Entities</head>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+<p>All XML processors must recognize these entities whether they
+are declared or not.
+<termref def="dt-interop">For interoperability</termref>,
+valid XML documents should declare these
+entities, like any others, before using them.
+If the entities in question are declared, they must be declared
+as internal entities whose replacement text is the single
+character being escaped or a character reference to
+that character, as shown below.
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+Note that the <code>&lt;</code> and <code>&amp;</code> characters
+in the declarations of "<code>lt</code>" and "<code>amp</code>"
+are doubly escaped to meet the requirement that entity replacement
+be well-formed.
+</p>
+</div2>
+
+<div2 id="Notations">
+<head>Notation Declarations</head>
+
+<p><termdef id="dt-notation" term="Notation"><term>Notations</term> identify by
+name the format of <termref def="dt-extent">unparsed
+entities</termref>, the
+format of elements which bear a notation attribute,
+or the application to which
+a <termref def="dt-pi">processing instruction</termref> is
+addressed.</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>Notation declarations</term>
+provide a name for the notation, for use in
+entity and attribute-list declarations and in attribute specifications,
+and an external identifier for the notation which may allow an XML
+processor or its client application to locate a helper application
+capable of processing data in the given notation.
+<scrap lang="ebnf">
+<head>Notation Declarations</head>
+<prod id="NT-NotationDecl"><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def="NT-S">S</nt> <nt def="NT-Name">Name</nt>
+<nt def="NT-S">S</nt>
+(<nt def="NT-ExternalID">ExternalID</nt> |
+<nt def="NT-PublicID">PublicID</nt>)
+<nt def="NT-S">S</nt>? '&gt;'</rhs></prod>
+<prod id="NT-PublicID"><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def="NT-S">S</nt>
+<nt def="NT-PubidLiteral">PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>XML processors must provide applications with the name and external
+identifier(s) of any notation declared and referred to in an attribute
+value, attribute definition, or entity declaration. They may
+additionally resolve the external identifier into the
+<termref def="dt-sysid">system identifier</termref>,
+file name, or other information needed to allow the
+application to call a processor for data in the notation described. (It
+is not an error, however, for XML documents to declare and refer to
+notations for which notation-specific applications are not available on
+the system where the XML processor or application is running.)</p>
+</div2>
+
+
+<div2 id="sec-doc-entity">
+<head>Document Entity</head>
+
+<p><termdef id="dt-docent" term="Document Entity">The <term>document
+entity</term> serves as the root of the entity
+tree and a starting-point for an <termref def="dt-xml-proc">XML
+processor</termref>.</termdef>
+This specification does
+not specify how the document entity is to be located by an XML
+processor; unlike other entities, the document entity has no name and might
+well appear on a processor input stream
+without any identification at all.</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+
+<div1 id="sec-conformance">
+<head>Conformance</head>
+
+<div2 id="proc-types">
+<head>Validating and Non-Validating Processors</head>
+<p>Conforming <termref def="dt-xml-proc">XML processors</termref> fall into two
+classes: validating and non-validating.</p>
+<p>Validating and non-validating processors alike must report
+violations of this specification's well-formedness constraints
+in the content of the
+<termref def="dt-docent">document entity</termref> and any
+other <termref def="dt-parsedent">parsed entities</termref> that
+they read.</p>
+<p><termdef id="dt-validating" term="Validating Processor">
+<term>Validating processors</term> must report
+violations of the constraints expressed by the declarations in the
+<termref def="dt-doctype">DTD</termref>, and
+failures to fulfill the validity constraints given
+in this specification.
+</termdef>
+To accomplish this, validating XML processors must read and process the entire
+DTD and all external parsed entities referenced in the document.
+</p>
+<p>Non-validating processors are required to check only the
+<termref def="dt-docent">document entity</termref>, including
+the entire internal DTD subset, for well-formedness.
+<termdef id="dt-use-mdecl" term="Process Declarations">
+While they are not required to check the document for validity,
+they are required to
+<term>process</term> all the declarations they read in the
+internal DTD subset and in any parameter entity that they
+read, up to the first reference
+to a parameter entity that they do <emph>not</emph> read; that is to
+say, they must
+use the information in those declarations to
+<titleref href="AVNormalize">normalize</titleref> attribute values,
+<titleref href="included">include</titleref> the replacement text of
+internal entities, and supply
+<titleref href="sec-attr-defaults">default attribute values</titleref>.
+</termdef>
+They must not <termref def="dt-use-mdecl">process</termref>
+<termref def="dt-entdecl">entity declarations</termref> or
+<termref def="dt-attdecl">attribute-list declarations</termref>
+encountered after a reference to a parameter entity that is not
+read, since the entity may have contained overriding declarations.
+</p>
+</div2>
+<div2 id="safe-behavior">
+<head>Using XML Processors</head>
+<p>The behavior of a validating XML processor is highly predictable; it
+must read every piece of a document and report all well-formedness and
+validity violations.
+Less is required of a non-validating processor; it need not read any
+part of the document other than the document entity.
+This has two effects that may be important to users of XML processors:
+<ulist>
+<item><p>Certain well-formedness errors, specifically those that require
+reading external entities, may not be detected by a non-validating processor.
+Examples include the constraints entitled
+<titleref href="wf-entdeclared">Entity Declared</titleref>,
+<titleref href="wf-textent">Parsed Entity</titleref>, and
+<titleref href="wf-norecursion">No Recursion</titleref>, as well
+as some of the cases described as
+<titleref href="forbidden">forbidden</titleref> in
+<specref ref="entproc"/>.</p></item>
+<item><p>The information passed from the processor to the application may
+vary, depending on whether the processor reads
+parameter and external entities.
+For example, a non-validating processor may not
+<titleref href="AVNormalize">normalize</titleref> attribute values,
+<titleref href="included">include</titleref> the replacement text of
+internal entities, or supply
+<titleref href="sec-attr-defaults">default attribute values</titleref>,
+where doing so depends on having read declarations in
+external or parameter entities.</p></item>
+</ulist>
+</p>
+<p>For maximum reliability in interoperating between different XML
+processors, applications which use non-validating processors should not
+rely on any behaviors not required of such processors.
+Applications which require facilities such as the use of default
+attributes or internal entities which are declared in external
+entities should use validating XML processors.</p>
+</div2>
+</div1>
+
+<div1 id="sec-notation">
+<head>Notation</head>
+
+<p>The formal grammar of XML is given in this specification using a simple
+Extended Backus-Naur Form (EBNF) notation. Each rule in the grammar defines
+one symbol, in the form
+<eg>symbol ::= expression</eg></p>
+<p>Symbols are written with an initial capital letter if they are
+defined by a regular expression, or with an initial lower case letter
+otherwise.
+Literal strings are quoted.
+
+</p>
+
+<p>Within the expression on the right-hand side of a rule, the following
+expressions are used to match strings of one or more characters:
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>where <code>N</code> is a hexadecimal integer, the
+expression matches the character in ISO/IEC 10646 whose canonical
+(UCS-4)
+code value, when interpreted as an unsigned binary number, has
+the value indicated. The number of leading zeros in the
+<code>#xN</code> form is insignificant; the number of leading
+zeros in the corresponding code value
+is governed by the character
+encoding in use and is not significant for XML.</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>matches any <termref def="dt-character">character</termref>
+with a value in the range(s) indicated (inclusive).</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>matches any <termref def="dt-character">character</termref>
+with a value <emph>outside</emph> the
+range indicated.</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>matches any <termref def="dt-character">character</termref>
+with a value not among the characters given.</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>matches a literal string <termref def="dt-match">matching</termref>
+that given inside the double quotes.</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>matches a literal string <termref def="dt-match">matching</termref>
+that given inside the single quotes.</p></def>
+</gitem>
+</glist>
+These symbols may be combined to match more complex patterns as follows,
+where <code>A</code> and <code>B</code> represent simple expressions:
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code> is treated as a unit
+and may be combined as described in this list.</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p>matches <code>A</code> or nothing; optional <code>A</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p>matches <code>A</code> followed by <code>B</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p>matches <code>A</code> or <code>B</code> but not both.</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p>matches any string that matches <code>A</code> but does not match
+<code>B</code>.
+</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p>matches one or more occurrences of <code>A</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p>matches zero or more occurrences of <code>A</code>.</p></def>
+</gitem>
+
+</glist>
+Other notations used in the productions are:
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>comment.</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>well-formedness constraint; this identifies by name a
+constraint on
+<termref def="dt-wellformed">well-formed</termref> documents
+associated with a production.</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>validity constraint; this identifies by name a constraint on
+<termref def="dt-valid">valid</termref> documents associated with
+a production.</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+
+<!-- &Biblio; -->
+<div1 id="sec-bibliography">
+
+<head>References</head>
+<div2 id="sec-existing-stds">
+<head>Normative References</head>
+
+<blist>
+<bibl id="IANA" key="IANA">
+(Internet Assigned Numbers Authority) <emph>Official Names for
+Character Sets</emph>,
+ed. Keld Simonsen et al.
+See <loc href="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets">ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets</loc>.
+</bibl>
+
+<bibl id="RFC1766" key="IETF RFC 1766">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id="ISO639" key="ISO 639">
+(International Organization for Standardization).
+<emph>ISO 639:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id="ISO3166" key="ISO 3166">
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id="ISO10646" key="ISO/IEC 10646">ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id="Unicode" key="Unicode">The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>Other References</head>
+
+<blist>
+
+<bibl id="Aho" key="Aho/Ullman">Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id="ABK" key="Brüggemann-Klein">Brüggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+
+</bibl>
+
+<bibl id="ABKDW" key="Brüggemann-Klein and Wood">Brüggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universität Freiburg, Institut für Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id="Clark" key="Clark">James Clark.
+Comparison of SGML and XML. See
+<loc href="http://www.w3.org/TR/NOTE-sgml-xml-971215">http://www.w3.org/TR/NOTE-sgml-xml-971215</loc>.
+</bibl>
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id="ISO8879" key="ISO 8879">ISO
+(International Organization for Standardization).
+<emph>ISO 8879:1986(E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id="ISO10744" key="ISO/IEC 10744">ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id="CharClasses">
+<head>Character Classes</head>
+<p>Following the characteristics defined in the Unicode standard,
+characters are classed as base characters (among others, these
+contain the alphabetic characters of the Latin alphabet, without
+diacritics), ideographic characters, and combining characters (among
+others, this class contains most diacritics); these classes combine
+to form the class of letters. Digits and extenders are
+also distinguished.
+<scrap lang="ebnf" id="CHARACTERS">
+<head>Characters</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id="NT-BaseChar"><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id="NT-Ideographic"><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id="NT-CombiningChar"><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;[#x05BB-#x05BD]
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;[#x064B-#x0652]
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;[#x06DD-#x06DF]
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id="NT-Digit"><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id="NT-Extender"><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>The character classes defined here can be derived from the
+Unicode character database as follows:
+<ulist>
+<item>
+<p>Name start characters must have one of the categories Ll, Lu,
+Lo, Lt, Nl.</p>
+</item>
+<item>
+<p>Name characters other than Name-start characters
+must have one of the categories Mc, Me, Mn, Lm, or Nd.</p>
+</item>
+<item>
+<p>Characters in the compatibility area (i.e. with character code
+greater than #xF900 and less than #xFFFE) are not allowed in XML
+names.</p>
+</item>
+<item>
+<p>Characters which have a font or compatibility decomposition (i.e. those
+with a "compatibility formatting tag" in field 5 of the database --
+marked by field 5 beginning with a "&lt;") are not allowed.</p>
+</item>
+<item>
+<p>The following characters are treated as name-start characters
+rather than name characters, because the property file classifies
+them as Alphabetic: [#x02BB-#x02C1], #x0559, #x06E5, #x06E6.</p>
+</item>
+<item>
+<p>Characters #x20DD-#x20E0 are excluded (in accordance with
+Unicode, section 5.14).</p>
+</item>
+<item>
+<p>Character #x00B7 is classified as an extender, because the
+property list so identifies it.</p>
+</item>
+<item>
+<p>Character #x0387 is added as a name character, because #x00B7
+is its canonical equivalent.</p>
+</item>
+<item>
+<p>Characters ':' and '_' are allowed as name-start characters.</p>
+</item>
+<item>
+<p>Characters '-' and '.' are allowed as name characters.</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XML and SGML</head>
+
+<p>XML is designed to be a subset of SGML, in that every
+<termref def="dt-valid">valid</termref> XML document should also be a
+conformant SGML document.
+For a detailed comparison of the additional restrictions that XML places on
+documents beyond those of SGML, see <bibref ref="Clark"/>.
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>Expansion of Entity and Character References</head>
+<p>This appendix contains some examples illustrating the
+sequence of entity- and character-reference recognition and
+expansion, as specified in <specref ref="entproc"/>.</p>
+<p>
+If the DTD contains the declaration
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+then the XML processor will recognize the character references
+when it parses the entity declaration, and resolve them before
+storing the following string as the
+value of the entity "<code>example</code>":
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+A reference in the document to "<code>&amp;example;</code>"
+will cause the text to be reparsed, at which time the
+start- and end-tags of the "<code>p</code>" element will be recognized
+and the three references will be recognized and expanded,
+resulting in a "<code>p</code>" element with the following content
+(all data, no delimiters or markup):
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>A more complex example will illustrate the rules and their
+effects fully. In the following example, the line numbers are
+solely for reference.
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+This produces the following:
+<ulist spacing="compact">
+<item><p>in line 4, the reference to character 37 is expanded immediately,
+and the parameter entity "<code>xx</code>" is stored in the symbol
+table with the value "<code>%zz;</code>". Since the replacement text
+is not rescanned, the reference to parameter entity "<code>zz</code>"
+is not recognized. (And it would be an error if it were, since
+"<code>zz</code>" is not yet declared.)</p></item>
+<item><p>in line 5, the character reference "<code>&amp;#60;</code>" is
+expanded immediately and the parameter entity "<code>zz</code>" is
+stored with the replacement text
+"<code>&lt;!ENTITY tricky "error-prone" &gt;</code>",
+which is a well-formed entity declaration.</p></item>
+<item><p>in line 6, the reference to "<code>xx</code>" is recognized,
+and the replacement text of "<code>xx</code>" (namely
+"<code>%zz;</code>") is parsed. The reference to "<code>zz</code>"
+is recognized in its turn, and its replacement text
+("<code>&lt;!ENTITY tricky "error-prone" &gt;</code>") is parsed.
+The general entity "<code>tricky</code>" has now been
+declared, with the replacement text "<code>error-prone</code>".</p></item>
+<item><p>
+in line 8, the reference to the general entity "<code>tricky</code>" is
+recognized, and it is expanded, so the full content of the
+"<code>test</code>" element is the self-describing (and ungrammatical) string
+<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>Deterministic Content Models</head>
+<p><termref def="dt-compat">For compatibility</termref>, it is
+required
+that content models in element type declarations be deterministic.
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGML
+requires deterministic content models (it calls them
+"unambiguous"); XML processors built using SGML systems may
+flag non-deterministic content models as errors.</p>
+<p>For example, the content model <code>((b, c) | (b, d))</code> is
+non-deterministic, because given an initial <code>b</code> the parser
+cannot know which <code>b</code> in the model is being matched without
+looking ahead to see which element follows the <code>b</code>.
+In this case, the two references to
+<code>b</code> can be collapsed
+into a single reference, making the model read
+<code>(b, (c | d))</code>. An initial <code>b</code> now clearly
+matches only a single name in the content model. The parser doesn't
+need to look ahead to see what follows; either <code>c</code> or
+<code>d</code> would be accepted.</p>
+<p>More formally: a finite state automaton may be constructed from the
+content model using the standard algorithms, e.g. algorithm 3.5
+in section 3.9
+of Aho, Sethi, and Ullman <bibref ref="Aho"/>.
+In many such algorithms, a follow set is constructed for each
+position in the regular expression (i.e., each leaf
+node in the
+syntax tree for the regular expression);
+if any position has a follow set in which
+more than one following position is
+labeled with the same element type name,
+then the content model is in error
+and may be reported as an error.
+</p>
+<p>Algorithms exist which allow many but not all non-deterministic
+content models to be reduced automatically to equivalent deterministic
+models; see Brüggemann-Klein 1991 <bibref ref="ABK"/>.</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>Autodetection of Character Encodings</head>
+<p>The XML encoding declaration functions as an internal label on each
+entity, indicating which character encoding is in use. Before an XML
+processor can read the internal label, however, it apparently has to
+know what character encoding is in use&mdash;which is what the internal label
+is trying to indicate. In the general case, this is a hopeless
+situation. It is not entirely hopeless in XML, however, because XML
+limits the general case in two ways: each implementation is assumed
+to support only a finite set of character encodings, and the XML
+encoding declaration is restricted in position and content in order to
+make it feasible to autodetect the character encoding in use in each
+entity in normal cases. Also, in many cases other sources of information
+are available in addition to the XML data stream itself.
+Two cases may be distinguished,
+depending on whether the XML entity is presented to the
+processor without, or with, any accompanying
+(external) information. We consider the first case first.
+</p>
+<p>
+Because each XML entity not in UTF-8 or UTF-16 format <emph>must</emph>
+begin with an XML encoding declaration, in which the first characters
+must be '<code>&lt;?xml</code>', any conforming processor can detect,
+after two to four octets of input, which of the following cases apply.
+In reading this list, it may help to know that in UCS-4, '&lt;' is
+"<code>#x0000003C</code>" and '?' is "<code>#x0000003F</code>", and the Byte
+Order Mark required of UTF-16 data streams is "<code>#xFEFF</code>".</p>
+<p>
+<ulist>
+<item>
+<p><code>00 00 00 3C</code>: UCS-4, big-endian machine (1234 order)</p>
+</item>
+<item>
+<p><code>3C 00 00 00</code>: UCS-4, little-endian machine (4321 order)</p>
+</item>
+<item>
+<p><code>00 00 3C 00</code>: UCS-4, unusual octet order (2143)</p>
+</item>
+<item>
+<p><code>00 3C 00 00</code>: UCS-4, unusual octet order (3412)</p>
+</item>
+<item>
+<p><code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p><code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p><code>00 3C 00 3F</code>: UTF-16, big-endian, no Byte Order Mark
+(and thus, strictly speaking, in error)</p>
+</item>
+<item>
+<p><code>3C 00 3F 00</code>: UTF-16, little-endian, no Byte Order Mark
+(and thus, strictly speaking, in error)</p>
+</item>
+<item>
+<p><code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, some part of ISO 8859,
+Shift-JIS, EUC, or any other 7-bit, 8-bit, or mixed-width encoding
+which ensures that the characters of ASCII have their normal positions,
+width,
+and values; the actual encoding declaration must be read to
+detect which of these applies, but since all of these encodings
+use the same bit patterns for the ASCII characters, the encoding
+declaration itself may be read reliably
+</p>
+</item>
+<item>
+<p><code>4C 6F A7 94</code>: EBCDIC (in some flavor; the full
+encoding declaration must be read to tell which code page is in
+use)</p>
+</item>
+<item>
+<p>other: UTF-8 without an encoding declaration, or else
+the data stream is corrupt, fragmentary, or enclosed in
+a wrapper of some kind</p>
+</item>
+</ulist>
+</p>
+<p>
+This level of autodetection is enough to read the XML encoding
+declaration and parse the character-encoding identifier, which is
+still necessary to distinguish the individual members of each family
+of encodings (e.g. to tell UTF-8 from 8859, and the parts of 8859
+from each other, or to distinguish the specific EBCDIC code page in
+use, and so on).
+</p>
+<p>
+Because the contents of the encoding declaration are restricted to
+ASCII characters, a processor can reliably read the entire encoding
+declaration as soon as it has detected which family of encodings is in
+use. Since in practice, all widely used character encodings fall into
+one of the categories above, the XML encoding declaration allows
+reasonably reliable in-band labeling of character encodings, even when
+external sources of information at the operating-system or
+transport-protocol level are unreliable.
+</p>
+<p>
+Once the processor has detected the character encoding in use, it can
+act appropriately, whether by invoking a separate input routine for
+each case, or by calling the proper conversion function on each
+character of input.
+</p>
+<p>
+Like any self-labeling system, the XML encoding declaration will not
+work if any software changes the entity's character set or encoding
+without updating the encoding declaration. Implementors of
+character-encoding routines should be careful to ensure the accuracy
+of the internal and external information used to label the entity.
+</p>
+<p>The second possible case occurs when the XML entity is accompanied
+by encoding information, as in some file systems and some network
+protocols.
+When multiple sources of information are available,
+
+their relative
+priority and the preferred method of handling conflict should be
+specified as part of the higher-level protocol used to deliver XML.
+Rules for the relative priority of the internal label and the
+MIME-type label in an external header, for example, should be part of the
+RFC document defining the text/xml and application/xml MIME types. In
+the interests of interoperability, however, the following rules
+are recommended.
+<ulist>
+<item><p>If an XML entity is in a file, the Byte-Order Mark
+and encoding-declaration PI are used (if present) to determine the
+character encoding. All other heuristics and sources of information
+are solely for error recovery.
+</p></item>
+<item><p>If an XML entity is delivered with a
+MIME type of text/xml, then the <code>charset</code> parameter
+on the MIME type determines the
+character encoding method; all other heuristics and sources of
+information are solely for error recovery.
+</p></item>
+<item><p>If an XML entity is delivered
+with a
+MIME type of application/xml, then the Byte-Order Mark and
+encoding-declaration PI are used (if present) to determine the
+character encoding. All other heuristics and sources of
+information are solely for error recovery.
+</p></item>
+</ulist>
+These rules apply only in the absence of protocol-level documentation;
+in particular, when the MIME types text/xml and application/xml are
+defined, the recommendations of the relevant RFC will supersede
+these rules.
+</p>
+
+</inform-div1>
+
+<inform-div1 id="sec-xml-wg">
+<head>W3C XML Working Group</head>
+
+<p>This specification was prepared and approved for publication by the
+W3C XML Working Group (WG). WG approval of this specification does
+not necessarily imply that all WG members voted for its approval.
+The current and former members of the XML WG are:</p>
+
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML
+Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name><role>W3C Liaison</role></member>
+<member><name>Paula Angerstein, Texcel</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, ISOGEN</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>Makoto Murata, Fuji Xerox Information Systems</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Conleth O'Connell, Vignette</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-default-dtd-file:"~/sgml/spec.ced"
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
diff --git a/result/valid/REC-xml-19980210.xml.err b/result/valid/REC-xml-19980210.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/REC-xml-19980210.xml.err
diff --git a/result/valid/REC-xml-19980210.xml.err.rdr b/result/valid/REC-xml-19980210.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/REC-xml-19980210.xml.err.rdr
diff --git a/result/valid/UTF16Entity.xml b/result/valid/UTF16Entity.xml
new file mode 100644
index 0000000..63cbba2
--- /dev/null
+++ b/result/valid/UTF16Entity.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ELEMENT foo (root)*>
+<!ELEMENT root EMPTY>
+<!ENTITY utf16b SYSTEM "dtds/utf16b.ent">
+<!ENTITY utf16l SYSTEM "dtds/utf16l.ent">
+]>
+<foo> &utf16b; &utf16l; </foo>
diff --git a/result/valid/UTF16Entity.xml.err b/result/valid/UTF16Entity.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/UTF16Entity.xml.err
diff --git a/result/valid/UTF16Entity.xml.err.rdr b/result/valid/UTF16Entity.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/UTF16Entity.xml.err.rdr
diff --git a/result/valid/dia.xml b/result/valid/dia.xml
new file mode 100644
index 0000000..01e3253
--- /dev/null
+++ b/result/valid/dia.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<!DOCTYPE dia:diagram [
+<!ELEMENT dia:diagram (dia:diagramdata , dia:layer*)>
+<!ATTLIST dia:diagram xmlns:dia CDATA #FIXED "http://www.lysator.liu.se/~alla/dia/">
+<!ELEMENT dia:diagramdata (dia:attribute)*>
+<!ELEMENT dia:layer (dia:object | dia:group)*>
+<!ATTLIST dia:layer dia:name CDATA #REQUIRED>
+<!ATTLIST dia:layer dia:visible (true | false) #REQUIRED>
+<!ELEMENT dia:object (dia:attribute* , dia:connections?)>
+<!ATTLIST dia:object dia:type CDATA #REQUIRED>
+<!ATTLIST dia:object dia:version NMTOKEN #REQUIRED>
+<!ATTLIST dia:object dia:id ID #REQUIRED>
+<!ELEMENT dia:connections (dia:connection)*>
+<!ELEMENT dia:connection EMPTY>
+<!ATTLIST dia:connection dia:handle NMTOKEN #REQUIRED>
+<!ATTLIST dia:connection dia:to IDREF #REQUIRED>
+<!ATTLIST dia:connection dia:connection NMTOKEN #REQUIRED>
+<!ELEMENT dia:group (dia:object | dia:group)*>
+<!ELEMENT dia:attribute (dia:composite | dia:int | dia:enum | dia:real | dia:boolean | dia:color | dia:point | dia:rectangle | dia:string | dia:font)*>
+<!ATTLIST dia:attribute dia:name CDATA #REQUIRED>
+<!ELEMENT dia:composite (dia:attribute)*>
+<!ATTLIST dia:composite dia:type CDATA #IMPLIED>
+<!ELEMENT dia:int EMPTY>
+<!ATTLIST dia:int dia:val NMTOKEN #REQUIRED>
+<!ELEMENT dia:enum EMPTY>
+<!ATTLIST dia:enum dia:val NMTOKEN #REQUIRED>
+<!ELEMENT dia:real EMPTY>
+<!ATTLIST dia:real dia:val CDATA #REQUIRED>
+<!ELEMENT dia:boolean EMPTY>
+<!ATTLIST dia:boolean dia:val (true | false) #REQUIRED>
+<!ELEMENT dia:color EMPTY>
+<!ATTLIST dia:color dia:val CDATA #REQUIRED>
+<!ELEMENT dia:point EMPTY>
+<!ATTLIST dia:point dia:val CDATA #REQUIRED>
+<!ELEMENT dia:rectangle EMPTY>
+<!ATTLIST dia:rectangle dia:val CDATA #REQUIRED>
+<!ELEMENT dia:string EMPTY>
+<!ATTLIST dia:string dia:val CDATA #IMPLIED>
+<!ELEMENT dia:font EMPTY>
+<!ATTLIST dia:font dia:name CDATA #REQUIRED>
+]>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute dia:name="background">
+ <dia:color dia:val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer dia:name="Background" dia:visible="true">
+ <dia:object dia:type="Standard - Line" dia:version="0" dia:id="O0">
+ <dia:attribute dia:name="obj_pos">
+ <dia:point dia:val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute dia:name="obj_bb">
+ <dia:rectangle dia:val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute dia:name="conn_endpoints">
+ <dia:point dia:val="1.95,6.85"/>
+ <dia:point dia:val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_color">
+ <dia:color dia:val="#000000"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_width">
+ <dia:real dia:val="0.1"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_style">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ <dia:attribute dia:name="start_arrow">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ <dia:attribute dia:name="end_arrow">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection dia:handle="1" dia:to="O2" dia:connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object dia:type="Standard - Text" dia:version="0" dia:id="O1">
+ <dia:attribute dia:name="obj_pos">
+ <dia:point dia:val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute dia:name="obj_bb">
+ <dia:rectangle dia:val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute dia:name="text">
+ <dia:composite dia:type="text">
+ <dia:attribute dia:name="string">
+ <dia:string dia:val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute dia:name="font">
+ <dia:font dia:name="Courier"/>
+ </dia:attribute>
+ <dia:attribute dia:name="height">
+ <dia:real dia:val="1"/>
+ </dia:attribute>
+ <dia:attribute dia:name="pos">
+ <dia:point dia:val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute dia:name="color">
+ <dia:color dia:val="#000000"/>
+ </dia:attribute>
+ <dia:attribute dia:name="alignment">
+ <dia:enum dia:val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object dia:type="Standard - Box" dia:version="0" dia:id="O2">
+ <dia:attribute dia:name="obj_pos">
+ <dia:point dia:val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute dia:name="obj_bb">
+ <dia:rectangle dia:val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute dia:name="elem_corner">
+ <dia:point dia:val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute dia:name="elem_width">
+ <dia:real dia:val="2.05"/>
+ </dia:attribute>
+ <dia:attribute dia:name="elem_height">
+ <dia:real dia:val="2"/>
+ </dia:attribute>
+ <dia:attribute dia:name="border_width">
+ <dia:real dia:val="0.1"/>
+ </dia:attribute>
+ <dia:attribute dia:name="border_color">
+ <dia:color dia:val="#000000"/>
+ </dia:attribute>
+ <dia:attribute dia:name="inner_color">
+ <dia:color dia:val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_style">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/result/valid/dia.xml.err b/result/valid/dia.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/dia.xml.err
diff --git a/result/valid/dia.xml.err.rdr b/result/valid/dia.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/dia.xml.err.rdr
diff --git a/result/valid/id1.xml b/result/valid/id1.xml
new file mode 100644
index 0000000..4f0b9f7
--- /dev/null
+++ b/result/valid/id1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (src | dest)*>
+<!ELEMENT src EMPTY>
+<!ELEMENT dest EMPTY>
+<!ATTLIST src ref IDREF #IMPLIED>
+<!ATTLIST dest id ID #IMPLIED>
+]>
+<doc>
+ <src ref="foo"/>
+ <dest id="foo"/>
+ <src ref="foo"/>
+</doc>
diff --git a/result/valid/id1.xml.err b/result/valid/id1.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/id1.xml.err
diff --git a/result/valid/id1.xml.err.rdr b/result/valid/id1.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/id1.xml.err.rdr
diff --git a/result/valid/id2.xml b/result/valid/id2.xml
new file mode 100644
index 0000000..0cef4a6
--- /dev/null
+++ b/result/valid/id2.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (src | dest)*>
+<!ELEMENT src EMPTY>
+<!ELEMENT dest EMPTY>
+<!ATTLIST src ref IDREF #IMPLIED>
+<!ATTLIST dest id ID #IMPLIED>
+<!ENTITY dest "<dest id='foo'/>">
+]>
+<doc>
+ <src ref="foo"/>
+ &dest;
+ <src ref="foo"/>
+</doc>
diff --git a/result/valid/id2.xml.err b/result/valid/id2.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/id2.xml.err
diff --git a/result/valid/id2.xml.err.rdr b/result/valid/id2.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/id2.xml.err.rdr
diff --git a/result/valid/id3.xml b/result/valid/id3.xml
new file mode 100644
index 0000000..623603c
--- /dev/null
+++ b/result/valid/id3.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (src | dest)*>
+<!ELEMENT src EMPTY>
+<!ELEMENT dest EMPTY>
+<!ATTLIST src ref IDREF #IMPLIED>
+<!ATTLIST dest id ID #IMPLIED>
+<!ENTITY dest SYSTEM "dtds/destfoo.ent">
+]>
+<doc>
+ <src ref="foo"/>
+ &dest;
+ <src ref="foo"/>
+</doc>
diff --git a/result/valid/id3.xml.err b/result/valid/id3.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/id3.xml.err
diff --git a/result/valid/id3.xml.err.rdr b/result/valid/id3.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/id3.xml.err.rdr
diff --git a/result/valid/index.xml b/result/valid/index.xml
new file mode 100644
index 0000000..734fa4d
--- /dev/null
+++ b/result/valid/index.xml
@@ -0,0 +1,808 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE NewsML PUBLIC "urn:newsml:iptc.org:20001006:NewsMLv1.0:1" "dtds/NewsMLv1.0.dtd" [
+<!ENTITY % nitf SYSTEM "dtds/nitf-2-5.dtd">
+<!--
+ News Industry Text Format
+ Document Type Definition - Version 2.5
+ http://www.nitf.org/
+
+ Copyright (c) 2000. All Rights Reserved.
+ International Press Telecommunications Council
+ http://www.iptc.org
+
+ Last changed: 9 August 2000 wb/kr/ak
+
+ For the list of modifications from previous releases, see:
+ http://www.nitf.org/recent-modifications.html
+
+ For the list of proposed modifications, see:
+ http://www.nitf.org/proposed-changes.html
+--><!ENTITY % enriched-text "
+ #PCDATA
+ | chron
+ | copyrite
+ | event
+ | function
+ | location
+ | money
+ | num
+ | object.title
+ | org
+ | person
+ | postaddr
+ | virtloc
+ | a
+ | br
+ | em
+ | lang
+ | pronounce
+ | q
+ ">
+<!ENTITY % block.head "dateline?, copyrite?, abstract?">
+<!ENTITY % block.content "p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr">
+<!ENTITY % block.end "datasource?">
+<!ENTITY % global-attributes "
+ id ID #IMPLIED
+ ">
+<!ENTITY % common-attributes "
+ %global-attributes;
+ class NMTOKENS #IMPLIED
+ style CDATA #IMPLIED
+ lang NMTOKEN #IMPLIED
+ dir (ltr | rtl) #IMPLIED
+ ">
+<!ENTITY % cell.align "
+ align (left | center | right | justify | char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+ ">
+<!ENTITY % cell.valign "
+ valign (top | middle | bottom | baseline) #IMPLIED
+ ">
+<!ENTITY % url.link "
+ md CDATA #IMPLIED
+ ">
+<!ENTITY % boolean "(true | false)">
+<!ELEMENT nitf (head , body)>
+<!ATTLIST nitf id ID #IMPLIED>
+<!ATTLIST nitf uno CDATA #IMPLIED>
+<!ATTLIST nitf version CDATA #FIXED "-//IPTC-NAA//DTD NITF-XML 2.1//EN">
+<!ATTLIST nitf change.date CDATA #FIXED "4 July 2000">
+<!ATTLIST nitf change.time CDATA #FIXED "1900">
+<!ATTLIST nitf baselang CDATA #IMPLIED>
+<!ATTLIST nitf class NMTOKENS #IMPLIED>
+<!ELEMENT head (title? , meta* , tobject? , iim? , docdata? , pubdata* , revision-history*)>
+<!ATTLIST head id ID #IMPLIED>
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title id ID #IMPLIED>
+<!ATTLIST title type (main | subtitle | parttitle | alternate | abbrev | other) #IMPLIED>
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta id ID #IMPLIED>
+<!ATTLIST meta http-equiv NMTOKEN #IMPLIED>
+<!ATTLIST meta name NMTOKEN #IMPLIED>
+<!ATTLIST meta content CDATA #REQUIRED>
+<!ELEMENT tobject (tobject.property* , tobject.subject*)>
+<!ATTLIST tobject id ID #IMPLIED>
+<!ATTLIST tobject tobject.type CDATA "news">
+<!ELEMENT tobject.property EMPTY>
+<!ATTLIST tobject.property id ID #IMPLIED>
+<!ATTLIST tobject.property tobject.property.type CDATA "current">
+<!ELEMENT tobject.subject EMPTY>
+<!ATTLIST tobject.subject id ID #IMPLIED>
+<!ATTLIST tobject.subject tobject.subject.ipr CDATA "IPTC">
+<!ATTLIST tobject.subject tobject.subject.refnum NMTOKEN #REQUIRED>
+<!ATTLIST tobject.subject tobject.subject.code CDATA #IMPLIED>
+<!ATTLIST tobject.subject tobject.subject.type CDATA #IMPLIED>
+<!ATTLIST tobject.subject tobject.subject.matter CDATA #IMPLIED>
+<!ATTLIST tobject.subject tobject.subject.detail CDATA #IMPLIED>
+<!ELEMENT iim (ds)*>
+<!ATTLIST iim id ID #IMPLIED>
+<!ATTLIST iim ver NMTOKEN #IMPLIED>
+<!ELEMENT ds EMPTY>
+<!ATTLIST ds id ID #IMPLIED>
+<!ATTLIST ds num NMTOKEN #REQUIRED>
+<!ATTLIST ds value CDATA #IMPLIED>
+<!ELEMENT docdata (correction | evloc | doc-id | del-list | urgency | fixture | date.issue | date.release | date.expire | doc-scope | series | ed-msg | du-key | doc.copyright | doc.rights | key-list)*>
+<!ATTLIST docdata id ID #IMPLIED>
+<!ELEMENT correction EMPTY>
+<!ATTLIST correction id ID #IMPLIED>
+<!ATTLIST correction info CDATA #IMPLIED>
+<!ATTLIST correction id-string CDATA #IMPLIED>
+<!ATTLIST correction reg-src CDATA #IMPLIED>
+<!ELEMENT evloc EMPTY>
+<!ATTLIST evloc id ID #IMPLIED>
+<!ATTLIST evloc iso-cc CDATA #IMPLIED>
+<!ATTLIST evloc state-prov CDATA #IMPLIED>
+<!ATTLIST evloc county-dist CDATA #IMPLIED>
+<!ATTLIST evloc city CDATA #IMPLIED>
+<!ELEMENT doc-id EMPTY>
+<!ATTLIST doc-id id ID #IMPLIED>
+<!ATTLIST doc-id regsrc CDATA #IMPLIED>
+<!ATTLIST doc-id id-string CDATA #IMPLIED>
+<!ELEMENT del-list (from-src)*>
+<!ATTLIST del-list id ID #IMPLIED>
+<!ELEMENT from-src EMPTY>
+<!ATTLIST from-src id ID #IMPLIED>
+<!ATTLIST from-src src-name CDATA #IMPLIED>
+<!ATTLIST from-src level-number CDATA #IMPLIED>
+<!ELEMENT urgency EMPTY>
+<!ATTLIST urgency id ID #IMPLIED>
+<!ATTLIST urgency ed-urg NMTOKEN #IMPLIED>
+<!ELEMENT fixture EMPTY>
+<!ATTLIST fixture id ID #IMPLIED>
+<!ATTLIST fixture fix-id CDATA #IMPLIED>
+<!ELEMENT date.issue EMPTY>
+<!ATTLIST date.issue id ID #IMPLIED>
+<!ATTLIST date.issue norm CDATA #IMPLIED>
+<!ELEMENT date.release EMPTY>
+<!ATTLIST date.release id ID #IMPLIED>
+<!ATTLIST date.release norm CDATA #IMPLIED>
+<!ELEMENT date.expire EMPTY>
+<!ATTLIST date.expire id ID #IMPLIED>
+<!ATTLIST date.expire norm CDATA #IMPLIED>
+<!ELEMENT doc-scope EMPTY>
+<!ATTLIST doc-scope id ID #IMPLIED>
+<!ATTLIST doc-scope scope CDATA #IMPLIED>
+<!ELEMENT series EMPTY>
+<!ATTLIST series id ID #IMPLIED>
+<!ATTLIST series series.name CDATA #IMPLIED>
+<!ATTLIST series series.part NMTOKEN "0">
+<!ATTLIST series series.totalpart NMTOKEN "0">
+<!ELEMENT ed-msg EMPTY>
+<!ATTLIST ed-msg id ID #IMPLIED>
+<!ATTLIST ed-msg msg-type CDATA #IMPLIED>
+<!ATTLIST ed-msg info CDATA #IMPLIED>
+<!ELEMENT du-key EMPTY>
+<!ATTLIST du-key id ID #IMPLIED>
+<!ATTLIST du-key generation NMTOKEN #IMPLIED>
+<!ATTLIST du-key part NMTOKEN #IMPLIED>
+<!ATTLIST du-key version NMTOKEN #IMPLIED>
+<!ATTLIST du-key key CDATA #IMPLIED>
+<!ELEMENT doc.copyright EMPTY>
+<!ATTLIST doc.copyright id ID #IMPLIED>
+<!ATTLIST doc.copyright year NMTOKEN #IMPLIED>
+<!ATTLIST doc.copyright holder CDATA #IMPLIED>
+<!ELEMENT doc.rights EMPTY>
+<!ATTLIST doc.rights id ID #IMPLIED>
+<!ATTLIST doc.rights owner CDATA #IMPLIED>
+<!ATTLIST doc.rights startdate CDATA #IMPLIED>
+<!ATTLIST doc.rights enddate CDATA #IMPLIED>
+<!ATTLIST doc.rights agent CDATA #IMPLIED>
+<!ATTLIST doc.rights geography CDATA #IMPLIED>
+<!ATTLIST doc.rights location-code CDATA #IMPLIED>
+<!ATTLIST doc.rights code-source CDATA #IMPLIED>
+<!ATTLIST doc.rights type CDATA #IMPLIED>
+<!ATTLIST doc.rights limitations CDATA #IMPLIED>
+<!ELEMENT key-list (keyword)*>
+<!ATTLIST key-list id ID #IMPLIED>
+<!ELEMENT keyword EMPTY>
+<!ATTLIST keyword id ID #IMPLIED>
+<!ATTLIST keyword key CDATA #IMPLIED>
+<!ELEMENT pubdata EMPTY>
+<!ATTLIST pubdata id ID #IMPLIED>
+<!ATTLIST pubdata type (print | audio | video | web | appliance | other) #IMPLIED>
+<!ATTLIST pubdata item-length CDATA #IMPLIED>
+<!ATTLIST pubdata unit-of-measure (word | character | byte | inch | pica | cm | hour | minute | second | other) #IMPLIED>
+<!ATTLIST pubdata date.publication CDATA #IMPLIED>
+<!ATTLIST pubdata name CDATA #IMPLIED>
+<!ATTLIST pubdata issn CDATA #IMPLIED>
+<!ATTLIST pubdata volume CDATA #IMPLIED>
+<!ATTLIST pubdata number CDATA #IMPLIED>
+<!ATTLIST pubdata issue CDATA #IMPLIED>
+<!ATTLIST pubdata edition.name CDATA #IMPLIED>
+<!ATTLIST pubdata edition.area CDATA #IMPLIED>
+<!ATTLIST pubdata position.section CDATA #IMPLIED>
+<!ATTLIST pubdata position.sequence CDATA #IMPLIED>
+<!ATTLIST pubdata ex-ref CDATA #IMPLIED>
+<!ELEMENT revision-history EMPTY>
+<!ATTLIST revision-history id ID #IMPLIED>
+<!ATTLIST revision-history name CDATA #IMPLIED>
+<!ATTLIST revision-history function (writer-author | editor | producer | archivist | videographer | graphic-artist | photographer | statistician | other) #IMPLIED>
+<!ATTLIST revision-history norm CDATA #IMPLIED>
+<!ATTLIST revision-history comment CDATA #IMPLIED>
+<!ELEMENT body (body.head? , body.content* , body.end?)>
+<!ATTLIST body id ID #IMPLIED>
+<!ATTLIST body class NMTOKENS #IMPLIED>
+<!ATTLIST body style CDATA #IMPLIED>
+<!ATTLIST body lang NMTOKEN #IMPLIED>
+<!ATTLIST body dir (ltr | rtl) #IMPLIED>
+<!ATTLIST body background CDATA #IMPLIED>
+<!ELEMENT body.head (hedline? , note* , rights? , byline* , distributor? , dateline* , abstract? , series?)>
+<!ATTLIST body.head id ID #IMPLIED>
+<!ELEMENT hedline (hl1 , hl2*)>
+<!ATTLIST hedline id ID #IMPLIED>
+<!ELEMENT hl1 (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST hl1 id ID #IMPLIED>
+<!ATTLIST hl1 class NMTOKENS #IMPLIED>
+<!ATTLIST hl1 style CDATA #IMPLIED>
+<!ATTLIST hl1 lang NMTOKEN #IMPLIED>
+<!ATTLIST hl1 dir (ltr | rtl) #IMPLIED>
+<!ELEMENT hl2 (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST hl2 id ID #IMPLIED>
+<!ATTLIST hl2 class NMTOKENS #IMPLIED>
+<!ATTLIST hl2 style CDATA #IMPLIED>
+<!ATTLIST hl2 lang NMTOKEN #IMPLIED>
+<!ATTLIST hl2 dir (ltr | rtl) #IMPLIED>
+<!ELEMENT note (body.content)+>
+<!ATTLIST note id ID #IMPLIED>
+<!ATTLIST note class NMTOKENS #IMPLIED>
+<!ATTLIST note style CDATA #IMPLIED>
+<!ATTLIST note lang NMTOKEN #IMPLIED>
+<!ATTLIST note dir (ltr | rtl) #IMPLIED>
+<!ATTLIST note noteclass (cpyrt | end | hd | editorsnote | trademk | undef) #IMPLIED>
+<!ATTLIST note type (std | pa | npa) "std">
+<!ATTLIST note src CDATA #IMPLIED>
+<!ATTLIST note md CDATA #IMPLIED>
+<!ELEMENT rights (#PCDATA | rights.owner | rights.startdate | rights.enddate | rights.agent | rights.geography | rights.type | rights.limitations)*>
+<!ATTLIST rights id ID #IMPLIED>
+<!ELEMENT rights.owner (#PCDATA)>
+<!ATTLIST rights.owner id ID #IMPLIED>
+<!ATTLIST rights.owner contact CDATA #IMPLIED>
+<!ELEMENT rights.startdate (#PCDATA)>
+<!ATTLIST rights.startdate id ID #IMPLIED>
+<!ATTLIST rights.startdate norm CDATA #IMPLIED>
+<!ELEMENT rights.enddate (#PCDATA)>
+<!ATTLIST rights.enddate id ID #IMPLIED>
+<!ATTLIST rights.enddate norm CDATA #IMPLIED>
+<!ELEMENT rights.agent (#PCDATA)>
+<!ATTLIST rights.agent id ID #IMPLIED>
+<!ATTLIST rights.agent contact CDATA #IMPLIED>
+<!ELEMENT rights.geography (#PCDATA)>
+<!ATTLIST rights.geography id ID #IMPLIED>
+<!ATTLIST rights.geography location-code CDATA #IMPLIED>
+<!ATTLIST rights.geography code-source CDATA #IMPLIED>
+<!ELEMENT rights.type (#PCDATA)>
+<!ATTLIST rights.type id ID #IMPLIED>
+<!ELEMENT rights.limitations (#PCDATA)>
+<!ATTLIST rights.limitations id ID #IMPLIED>
+<!ELEMENT byline (#PCDATA | person | byttl | location | virtloc)*>
+<!ATTLIST byline id ID #IMPLIED>
+<!ELEMENT byttl (#PCDATA | org)*>
+<!ATTLIST byttl id ID #IMPLIED>
+<!ELEMENT distributor (#PCDATA | org)*>
+<!ATTLIST distributor id ID #IMPLIED>
+<!ELEMENT dateline (#PCDATA | location | story.date)*>
+<!ATTLIST dateline id ID #IMPLIED>
+<!ATTLIST dateline class NMTOKENS #IMPLIED>
+<!ATTLIST dateline style CDATA #IMPLIED>
+<!ATTLIST dateline lang NMTOKEN #IMPLIED>
+<!ATTLIST dateline dir (ltr | rtl) #IMPLIED>
+<!ELEMENT story.date (#PCDATA)>
+<!ATTLIST story.date id ID #IMPLIED>
+<!ATTLIST story.date norm CDATA #IMPLIED>
+<!ELEMENT abstract (p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)+>
+<!ATTLIST abstract id ID #IMPLIED>
+<!ELEMENT copyrite (#PCDATA | copyrite.year | copyrite.holder)*>
+<!ATTLIST copyrite id ID #IMPLIED>
+<!ELEMENT copyrite.year (#PCDATA)>
+<!ATTLIST copyrite.year id ID #IMPLIED>
+<!ELEMENT copyrite.holder (#PCDATA)>
+<!ATTLIST copyrite.holder id ID #IMPLIED>
+<!ELEMENT body.content (block | p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)*>
+<!ATTLIST body.content id ID #IMPLIED>
+<!ELEMENT block ((dateline? , copyrite? , abstract?)? , (p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)* , datasource?)>
+<!ATTLIST block id ID #IMPLIED>
+<!ATTLIST block class NMTOKENS #IMPLIED>
+<!ATTLIST block style CDATA #IMPLIED>
+<!ATTLIST block lang NMTOKEN #IMPLIED>
+<!ATTLIST block dir (ltr | rtl) #IMPLIED>
+<!ELEMENT p (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST p id ID #IMPLIED>
+<!ATTLIST p class NMTOKENS #IMPLIED>
+<!ATTLIST p style CDATA #IMPLIED>
+<!ATTLIST p lang NMTOKEN #IMPLIED>
+<!ATTLIST p dir (ltr | rtl) #IMPLIED>
+<!ATTLIST p lede (true | false) #IMPLIED>
+<!ATTLIST p summary (true | false) #IMPLIED>
+<!ATTLIST p optional-text (true | false) #IMPLIED>
+<!ELEMENT table (caption? , (col* | colgroup*) , thead? , tfoot? , tbody+)>
+<!ATTLIST table id ID #IMPLIED>
+<!ATTLIST table class NMTOKENS #IMPLIED>
+<!ATTLIST table style CDATA #IMPLIED>
+<!ATTLIST table lang NMTOKEN #IMPLIED>
+<!ATTLIST table dir (ltr | rtl) #IMPLIED>
+<!ATTLIST table tabletype ENTITY #IMPLIED>
+<!ATTLIST table align (left | center | right) #IMPLIED>
+<!ATTLIST table width CDATA #IMPLIED>
+<!ATTLIST table cols NMTOKEN #IMPLIED>
+<!ATTLIST table border CDATA #IMPLIED>
+<!ATTLIST table frame (void | above | below | hsides | lhs | rhs | vsides | box | border) #IMPLIED>
+<!ATTLIST table rules (none | basic | rows | cols | all) #IMPLIED>
+<!ATTLIST table cellspacing CDATA #IMPLIED>
+<!ATTLIST table cellpadding CDATA #IMPLIED>
+<!ATTLIST table table.fmt CDATA #IMPLIED>
+<!ATTLIST table table.domain CDATA #IMPLIED>
+<!ATTLIST table table.inst CDATA #IMPLIED>
+<!ELEMENT media (media-metadata* , media-reference , media-object? , media-caption* , media-producer?)>
+<!ATTLIST media id ID #IMPLIED>
+<!ATTLIST media class NMTOKENS #IMPLIED>
+<!ATTLIST media style CDATA #IMPLIED>
+<!ATTLIST media lang NMTOKEN #IMPLIED>
+<!ATTLIST media dir (ltr | rtl) #IMPLIED>
+<!ATTLIST media media-type (text | audio | image | video | data | application | other) #REQUIRED>
+<!ELEMENT media-reference (#PCDATA)>
+<!ATTLIST media-reference id ID #IMPLIED>
+<!ATTLIST media-reference class NMTOKENS #IMPLIED>
+<!ATTLIST media-reference style CDATA #IMPLIED>
+<!ATTLIST media-reference lang NMTOKEN #IMPLIED>
+<!ATTLIST media-reference dir (ltr | rtl) #IMPLIED>
+<!ATTLIST media-reference data-location CDATA #REQUIRED>
+<!ATTLIST media-reference name CDATA #IMPLIED>
+<!ATTLIST media-reference source CDATA #IMPLIED>
+<!ATTLIST media-reference mime-type CDATA #REQUIRED>
+<!ATTLIST media-reference coding CDATA #IMPLIED>
+<!ATTLIST media-reference time CDATA #IMPLIED>
+<!ATTLIST media-reference time-unit-of-measure CDATA #IMPLIED>
+<!ATTLIST media-reference outcue CDATA #IMPLIED>
+<!ATTLIST media-reference source-credit CDATA #IMPLIED>
+<!ATTLIST media-reference copyright CDATA #IMPLIED>
+<!ATTLIST media-reference alternate-text CDATA #IMPLIED>
+<!ATTLIST media-reference height NMTOKEN #IMPLIED>
+<!ATTLIST media-reference width NMTOKEN #IMPLIED>
+<!ATTLIST media-reference units (pixels) "pixels">
+<!ATTLIST media-reference imagemap CDATA #IMPLIED>
+<!ATTLIST media-reference noflow (noflow) #IMPLIED>
+<!ELEMENT media-metadata EMPTY>
+<!ATTLIST media-metadata id ID #IMPLIED>
+<!ATTLIST media-metadata class NMTOKENS #IMPLIED>
+<!ATTLIST media-metadata style CDATA #IMPLIED>
+<!ATTLIST media-metadata lang NMTOKEN #IMPLIED>
+<!ATTLIST media-metadata dir (ltr | rtl) #IMPLIED>
+<!ATTLIST media-metadata name CDATA #REQUIRED>
+<!ATTLIST media-metadata value CDATA #IMPLIED>
+<!ELEMENT media-object (#PCDATA)>
+<!ATTLIST media-object id ID #IMPLIED>
+<!ATTLIST media-object class NMTOKENS #IMPLIED>
+<!ATTLIST media-object style CDATA #IMPLIED>
+<!ATTLIST media-object lang NMTOKEN #IMPLIED>
+<!ATTLIST media-object dir (ltr | rtl) #IMPLIED>
+<!ATTLIST media-object encoding CDATA #REQUIRED>
+<!ELEMENT media-caption (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q | p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)*>
+<!ATTLIST media-caption id ID #IMPLIED>
+<!ATTLIST media-caption class NMTOKENS #IMPLIED>
+<!ATTLIST media-caption style CDATA #IMPLIED>
+<!ATTLIST media-caption lang NMTOKEN #IMPLIED>
+<!ATTLIST media-caption dir (ltr | rtl) #IMPLIED>
+<!ELEMENT media-producer (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST media-producer id ID #IMPLIED>
+<!ATTLIST media-producer class NMTOKENS #IMPLIED>
+<!ATTLIST media-producer style CDATA #IMPLIED>
+<!ATTLIST media-producer lang NMTOKEN #IMPLIED>
+<!ATTLIST media-producer dir (ltr | rtl) #IMPLIED>
+<!ELEMENT ol (li)+>
+<!ATTLIST ol id ID #IMPLIED>
+<!ATTLIST ol class NMTOKENS #IMPLIED>
+<!ATTLIST ol style CDATA #IMPLIED>
+<!ATTLIST ol lang NMTOKEN #IMPLIED>
+<!ATTLIST ol dir (ltr | rtl) #IMPLIED>
+<!ATTLIST ol continue (continue) #IMPLIED>
+<!ATTLIST ol seqnum NMTOKEN #IMPLIED>
+<!ATTLIST ol compact (compact) #IMPLIED>
+<!ELEMENT ul (li)+>
+<!ATTLIST ul id ID #IMPLIED>
+<!ATTLIST ul class NMTOKENS #IMPLIED>
+<!ATTLIST ul style CDATA #IMPLIED>
+<!ATTLIST ul lang NMTOKEN #IMPLIED>
+<!ATTLIST ul dir (ltr | rtl) #IMPLIED>
+<!ATTLIST ul wrap (vert | horiz | none) "none">
+<!ATTLIST ul plain (plain) #IMPLIED>
+<!ATTLIST ul dingbat ENTITY #IMPLIED>
+<!ATTLIST ul src CDATA #IMPLIED>
+<!ATTLIST ul md CDATA #IMPLIED>
+<!ATTLIST ul compact (compact) #IMPLIED>
+<!ELEMENT li (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q | p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)*>
+<!ATTLIST li id ID #IMPLIED>
+<!ATTLIST li class NMTOKENS #IMPLIED>
+<!ATTLIST li style CDATA #IMPLIED>
+<!ATTLIST li lang NMTOKEN #IMPLIED>
+<!ATTLIST li dir (ltr | rtl) #IMPLIED>
+<!ATTLIST li dingbat ENTITY #IMPLIED>
+<!ATTLIST li src CDATA #IMPLIED>
+<!ATTLIST li md CDATA #IMPLIED>
+<!ATTLIST li skip NMTOKEN "0">
+<!ELEMENT dl (dt | dd)+>
+<!ATTLIST dl id ID #IMPLIED>
+<!ATTLIST dl class NMTOKENS #IMPLIED>
+<!ATTLIST dl style CDATA #IMPLIED>
+<!ATTLIST dl lang NMTOKEN #IMPLIED>
+<!ATTLIST dl dir (ltr | rtl) #IMPLIED>
+<!ELEMENT dt (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST dt id ID #IMPLIED>
+<!ATTLIST dt class NMTOKENS #IMPLIED>
+<!ATTLIST dt style CDATA #IMPLIED>
+<!ATTLIST dt lang NMTOKEN #IMPLIED>
+<!ATTLIST dt dir (ltr | rtl) #IMPLIED>
+<!ELEMENT dd (block)*>
+<!ATTLIST dd id ID #IMPLIED>
+<!ATTLIST dd class NMTOKENS #IMPLIED>
+<!ATTLIST dd style CDATA #IMPLIED>
+<!ATTLIST dd lang NMTOKEN #IMPLIED>
+<!ATTLIST dd dir (ltr | rtl) #IMPLIED>
+<!ELEMENT bq (block+ , credit?)*>
+<!ATTLIST bq id ID #IMPLIED>
+<!ATTLIST bq class NMTOKENS #IMPLIED>
+<!ATTLIST bq style CDATA #IMPLIED>
+<!ATTLIST bq lang NMTOKEN #IMPLIED>
+<!ATTLIST bq dir (ltr | rtl) #IMPLIED>
+<!ATTLIST bq nowrap (nowrap) #IMPLIED>
+<!ATTLIST bq quote-source CDATA #IMPLIED>
+<!ELEMENT credit (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST credit id ID #IMPLIED>
+<!ATTLIST credit class NMTOKENS #IMPLIED>
+<!ATTLIST credit style CDATA #IMPLIED>
+<!ATTLIST credit lang NMTOKEN #IMPLIED>
+<!ATTLIST credit dir (ltr | rtl) #IMPLIED>
+<!ELEMENT fn (body.content)+>
+<!ATTLIST fn id ID #IMPLIED>
+<!ATTLIST fn class NMTOKENS #IMPLIED>
+<!ATTLIST fn style CDATA #IMPLIED>
+<!ATTLIST fn lang NMTOKEN #IMPLIED>
+<!ATTLIST fn dir (ltr | rtl) #IMPLIED>
+<!ELEMENT pre (#PCDATA)>
+<!ATTLIST pre id ID #IMPLIED>
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr id ID #IMPLIED>
+<!ATTLIST hr src CDATA #IMPLIED>
+<!ELEMENT datasource (#PCDATA)>
+<!ATTLIST datasource id ID #IMPLIED>
+<!ELEMENT caption (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q | p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)*>
+<!ATTLIST caption id ID #IMPLIED>
+<!ATTLIST caption class NMTOKENS #IMPLIED>
+<!ATTLIST caption style CDATA #IMPLIED>
+<!ATTLIST caption lang NMTOKEN #IMPLIED>
+<!ATTLIST caption dir (ltr | rtl) #IMPLIED>
+<!ATTLIST caption align (top | bottom | left | right) #IMPLIED>
+<!ELEMENT col EMPTY>
+<!ATTLIST col id ID #IMPLIED>
+<!ATTLIST col class NMTOKENS #IMPLIED>
+<!ATTLIST col style CDATA #IMPLIED>
+<!ATTLIST col lang NMTOKEN #IMPLIED>
+<!ATTLIST col dir (ltr | rtl) #IMPLIED>
+<!ATTLIST col span NMTOKEN "1">
+<!ATTLIST col width CDATA #IMPLIED>
+<!ATTLIST col align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST col char CDATA #IMPLIED>
+<!ATTLIST col charoff CDATA #IMPLIED>
+<!ATTLIST col valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT colgroup (col)+>
+<!ATTLIST colgroup id ID #IMPLIED>
+<!ATTLIST colgroup class NMTOKENS #IMPLIED>
+<!ATTLIST colgroup style CDATA #IMPLIED>
+<!ATTLIST colgroup lang NMTOKEN #IMPLIED>
+<!ATTLIST colgroup dir (ltr | rtl) #IMPLIED>
+<!ATTLIST colgroup align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST colgroup char CDATA #IMPLIED>
+<!ATTLIST colgroup charoff CDATA #IMPLIED>
+<!ATTLIST colgroup valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT thead (tr)+>
+<!ATTLIST thead id ID #IMPLIED>
+<!ATTLIST thead class NMTOKENS #IMPLIED>
+<!ATTLIST thead style CDATA #IMPLIED>
+<!ATTLIST thead lang NMTOKEN #IMPLIED>
+<!ATTLIST thead dir (ltr | rtl) #IMPLIED>
+<!ATTLIST thead align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST thead char CDATA #IMPLIED>
+<!ATTLIST thead charoff CDATA #IMPLIED>
+<!ATTLIST thead valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT tbody (tr)+>
+<!ATTLIST tbody id ID #IMPLIED>
+<!ATTLIST tbody class NMTOKENS #IMPLIED>
+<!ATTLIST tbody style CDATA #IMPLIED>
+<!ATTLIST tbody lang NMTOKEN #IMPLIED>
+<!ATTLIST tbody dir (ltr | rtl) #IMPLIED>
+<!ATTLIST tbody align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST tbody char CDATA #IMPLIED>
+<!ATTLIST tbody charoff CDATA #IMPLIED>
+<!ATTLIST tbody valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT tfoot (tr)+>
+<!ATTLIST tfoot id ID #IMPLIED>
+<!ATTLIST tfoot class NMTOKENS #IMPLIED>
+<!ATTLIST tfoot style CDATA #IMPLIED>
+<!ATTLIST tfoot lang NMTOKEN #IMPLIED>
+<!ATTLIST tfoot dir (ltr | rtl) #IMPLIED>
+<!ATTLIST tfoot align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST tfoot char CDATA #IMPLIED>
+<!ATTLIST tfoot charoff CDATA #IMPLIED>
+<!ATTLIST tfoot valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT tr (th | td)+>
+<!ATTLIST tr id ID #IMPLIED>
+<!ATTLIST tr class NMTOKENS #IMPLIED>
+<!ATTLIST tr style CDATA #IMPLIED>
+<!ATTLIST tr lang NMTOKEN #IMPLIED>
+<!ATTLIST tr dir (ltr | rtl) #IMPLIED>
+<!ATTLIST tr align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST tr char CDATA #IMPLIED>
+<!ATTLIST tr charoff CDATA #IMPLIED>
+<!ATTLIST tr valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT th (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q | p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)*>
+<!ATTLIST th id ID #IMPLIED>
+<!ATTLIST th class NMTOKENS #IMPLIED>
+<!ATTLIST th style CDATA #IMPLIED>
+<!ATTLIST th lang NMTOKEN #IMPLIED>
+<!ATTLIST th dir (ltr | rtl) #IMPLIED>
+<!ATTLIST th axis CDATA #IMPLIED>
+<!ATTLIST th axes CDATA #IMPLIED>
+<!ATTLIST th nowrap (nowrap) #IMPLIED>
+<!ATTLIST th rowspan NMTOKEN "1">
+<!ATTLIST th colspan NMTOKEN "1">
+<!ATTLIST th align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST th char CDATA #IMPLIED>
+<!ATTLIST th charoff CDATA #IMPLIED>
+<!ATTLIST th valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT td (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q | p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr)*>
+<!ATTLIST td id ID #IMPLIED>
+<!ATTLIST td class NMTOKENS #IMPLIED>
+<!ATTLIST td style CDATA #IMPLIED>
+<!ATTLIST td lang NMTOKEN #IMPLIED>
+<!ATTLIST td dir (ltr | rtl) #IMPLIED>
+<!ATTLIST td axis CDATA #IMPLIED>
+<!ATTLIST td axes CDATA #IMPLIED>
+<!ATTLIST td nowrap (nowrap) #IMPLIED>
+<!ATTLIST td rowspan NMTOKEN "1">
+<!ATTLIST td colspan NMTOKEN "1">
+<!ATTLIST td align (left | center | right | justify | char) #IMPLIED>
+<!ATTLIST td char CDATA #IMPLIED>
+<!ATTLIST td charoff CDATA #IMPLIED>
+<!ATTLIST td valign (top | middle | bottom | baseline) #IMPLIED>
+<!ELEMENT chron (#PCDATA)>
+<!ATTLIST chron id ID #IMPLIED>
+<!ATTLIST chron norm CDATA #IMPLIED>
+<!ELEMENT event (#PCDATA | alt-code)*>
+<!ATTLIST event id ID #IMPLIED>
+<!ATTLIST event start-date CDATA #IMPLIED>
+<!ATTLIST event end-date CDATA #IMPLIED>
+<!ATTLIST event idsrc CDATA #REQUIRED>
+<!ATTLIST event value CDATA #REQUIRED>
+<!ELEMENT function (#PCDATA | alt-code)*>
+<!ATTLIST function id ID #IMPLIED>
+<!ATTLIST function idsrc CDATA #REQUIRED>
+<!ATTLIST function value CDATA #REQUIRED>
+<!ELEMENT location (#PCDATA | sublocation | city | state | region | country | alt-code)*>
+<!ATTLIST location id ID #IMPLIED>
+<!ATTLIST location location-code CDATA #IMPLIED>
+<!ATTLIST location code-source CDATA #IMPLIED>
+<!ELEMENT sublocation (#PCDATA | alt-code)*>
+<!ATTLIST sublocation id ID #IMPLIED>
+<!ATTLIST sublocation location-code CDATA #IMPLIED>
+<!ATTLIST sublocation code-source CDATA #IMPLIED>
+<!ELEMENT city (#PCDATA | alt-code)*>
+<!ATTLIST city id ID #IMPLIED>
+<!ATTLIST city city-code CDATA #IMPLIED>
+<!ATTLIST city code-source CDATA #IMPLIED>
+<!ELEMENT state (#PCDATA | alt-code)*>
+<!ATTLIST state id ID #IMPLIED>
+<!ATTLIST state state-code CDATA #IMPLIED>
+<!ATTLIST state code-source CDATA #IMPLIED>
+<!ELEMENT region (#PCDATA | alt-code)*>
+<!ATTLIST region id ID #IMPLIED>
+<!ATTLIST region region-code CDATA #IMPLIED>
+<!ATTLIST region code-source CDATA #IMPLIED>
+<!ELEMENT country (#PCDATA | alt-code)*>
+<!ATTLIST country id ID #IMPLIED>
+<!ATTLIST country iso-cc CDATA #IMPLIED>
+<!ELEMENT money (#PCDATA)>
+<!ATTLIST money id ID #IMPLIED>
+<!ATTLIST money unit CDATA #IMPLIED>
+<!ATTLIST money date CDATA #IMPLIED>
+<!ELEMENT num (#PCDATA | frac | sub | sup)*>
+<!ATTLIST num id ID #IMPLIED>
+<!ATTLIST num units CDATA #IMPLIED>
+<!ATTLIST num decimal-ch CDATA #IMPLIED>
+<!ATTLIST num thousands-ch CDATA #IMPLIED>
+<!ELEMENT frac (numer , frac-sep? , denom)>
+<!ATTLIST frac id ID #IMPLIED>
+<!ELEMENT numer (#PCDATA)>
+<!ATTLIST numer id ID #IMPLIED>
+<!ELEMENT frac-sep (#PCDATA)>
+<!ATTLIST frac-sep id ID #IMPLIED>
+<!ELEMENT denom (#PCDATA)>
+<!ATTLIST denom id ID #IMPLIED>
+<!ELEMENT sub (#PCDATA)>
+<!ATTLIST sub id ID #IMPLIED>
+<!ATTLIST sub class NMTOKENS #IMPLIED>
+<!ATTLIST sub style CDATA #IMPLIED>
+<!ATTLIST sub lang NMTOKEN #IMPLIED>
+<!ATTLIST sub dir (ltr | rtl) #IMPLIED>
+<!ELEMENT sup (#PCDATA)>
+<!ATTLIST sup id ID #IMPLIED>
+<!ATTLIST sup class NMTOKENS #IMPLIED>
+<!ATTLIST sup style CDATA #IMPLIED>
+<!ATTLIST sup lang NMTOKEN #IMPLIED>
+<!ATTLIST sup dir (ltr | rtl) #IMPLIED>
+<!ELEMENT object.title (#PCDATA | alt-code)*>
+<!ATTLIST object.title id ID #IMPLIED>
+<!ATTLIST object.title class NMTOKENS #IMPLIED>
+<!ATTLIST object.title style CDATA #IMPLIED>
+<!ATTLIST object.title lang NMTOKEN #IMPLIED>
+<!ATTLIST object.title dir (ltr | rtl) #IMPLIED>
+<!ATTLIST object.title idsrc CDATA #REQUIRED>
+<!ATTLIST object.title value CDATA #REQUIRED>
+<!ELEMENT org (#PCDATA | alt-code)*>
+<!ATTLIST org id ID #IMPLIED>
+<!ATTLIST org idsrc CDATA #REQUIRED>
+<!ATTLIST org value CDATA #REQUIRED>
+<!ELEMENT alt-code EMPTY>
+<!ATTLIST alt-code id ID #IMPLIED>
+<!ATTLIST alt-code idsrc CDATA #REQUIRED>
+<!ATTLIST alt-code value CDATA #REQUIRED>
+<!ELEMENT person (#PCDATA | name.given | name.family | function | alt-code)*>
+<!ATTLIST person id ID #IMPLIED>
+<!ATTLIST person idsrc CDATA #REQUIRED>
+<!ATTLIST person value CDATA #REQUIRED>
+<!ELEMENT name.given (#PCDATA)>
+<!ATTLIST name.given id ID #IMPLIED>
+<!ELEMENT name.family (#PCDATA)>
+<!ATTLIST name.family id ID #IMPLIED>
+<!ELEMENT postaddr (addressee , delivery.point? , (postcode | delivery.office | region | country)*)>
+<!ATTLIST postaddr id ID #IMPLIED>
+<!ELEMENT virtloc (#PCDATA | alt-code)*>
+<!ATTLIST virtloc id ID #IMPLIED>
+<!ATTLIST virtloc idsrc CDATA #REQUIRED>
+<!ATTLIST virtloc value CDATA #REQUIRED>
+<!ELEMENT a (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST a id ID #IMPLIED>
+<!ATTLIST a class NMTOKENS #IMPLIED>
+<!ATTLIST a style CDATA #IMPLIED>
+<!ATTLIST a lang NMTOKEN #IMPLIED>
+<!ATTLIST a dir (ltr | rtl) #IMPLIED>
+<!ATTLIST a href CDATA #IMPLIED>
+<!ATTLIST a name CDATA #IMPLIED>
+<!ATTLIST a md CDATA #IMPLIED>
+<!ATTLIST a rel NMTOKEN #IMPLIED>
+<!ATTLIST a rev NMTOKEN #IMPLIED>
+<!ATTLIST a title CDATA #IMPLIED>
+<!ATTLIST a methods NMTOKENS #IMPLIED>
+<!ELEMENT br EMPTY>
+<!ATTLIST br id ID #IMPLIED>
+<!ELEMENT em (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST em id ID #IMPLIED>
+<!ATTLIST em class NMTOKENS #IMPLIED>
+<!ATTLIST em style CDATA #IMPLIED>
+<!ATTLIST em lang NMTOKEN #IMPLIED>
+<!ATTLIST em dir (ltr | rtl) #IMPLIED>
+<!ELEMENT lang (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST lang id ID #IMPLIED>
+<!ATTLIST lang class NMTOKENS #IMPLIED>
+<!ATTLIST lang style CDATA #IMPLIED>
+<!ATTLIST lang lang NMTOKEN #IMPLIED>
+<!ATTLIST lang dir (ltr | rtl) #IMPLIED>
+<!ELEMENT pronounce (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST pronounce id ID #IMPLIED>
+<!ATTLIST pronounce guide CDATA #IMPLIED>
+<!ATTLIST pronounce phonetic CDATA #IMPLIED>
+<!ELEMENT q (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST q id ID #IMPLIED>
+<!ATTLIST q class NMTOKENS #IMPLIED>
+<!ATTLIST q style CDATA #IMPLIED>
+<!ATTLIST q lang NMTOKEN #IMPLIED>
+<!ATTLIST q dir (ltr | rtl) #IMPLIED>
+<!ATTLIST q quote-source CDATA #IMPLIED>
+<!ELEMENT addressee (person , function? , care.of?)>
+<!ATTLIST addressee id ID #IMPLIED>
+<!ELEMENT care.of (#PCDATA)>
+<!ATTLIST care.of id ID #IMPLIED>
+<!ELEMENT delivery.point (#PCDATA | br)*>
+<!ATTLIST delivery.point id ID #IMPLIED>
+<!ATTLIST delivery.point point-code CDATA #IMPLIED>
+<!ATTLIST delivery.point code-source CDATA #IMPLIED>
+<!ELEMENT postcode (#PCDATA)>
+<!ATTLIST postcode id ID #IMPLIED>
+<!ATTLIST postcode code-source CDATA #IMPLIED>
+<!ELEMENT delivery.office (#PCDATA | br)*>
+<!ATTLIST delivery.office id ID #IMPLIED>
+<!ATTLIST delivery.office office-code CDATA #IMPLIED>
+<!ATTLIST delivery.office code-source CDATA #IMPLIED>
+<!ELEMENT body.end (tagline? , bibliography?)>
+<!ATTLIST body.end id ID #IMPLIED>
+<!ELEMENT tagline (#PCDATA | chron | copyrite | event | function | location | money | num | object.title | org | person | postaddr | virtloc | a | br | em | lang | pronounce | q)*>
+<!ATTLIST tagline id ID #IMPLIED>
+<!ATTLIST tagline type (std | pa | npa) "std">
+<!ELEMENT bibliography (#PCDATA)>
+<!ATTLIST bibliography id ID #IMPLIED>
+]>
+<NewsML>
+ <Catalog Href="http://www.afp.com/dtd/AFPCatalog.xml"/>
+ <NewsEnvelope>
+ <DateAndTime>20011022T154508Z</DateAndTime>
+ </NewsEnvelope>
+ <NewsItem>
+ <Identification>
+ <NewsIdentifier>
+ <ProviderId>afp.com</ProviderId>
+ <DateId>20011022</DateId>
+ <NewsItemId>mmd--deutsch--journal--spo</NewsItemId>
+ <RevisionId PreviousRevision="0" Update="N">1</RevisionId>
+ <PublicIdentifier>urn:NewsML:afp.com:20011022:mmd--deutsch--journal--spo:1</PublicIdentifier>
+ </NewsIdentifier>
+ <NameLabel>HINTERGRUND</NameLabel>
+ </Identification>
+ <NewsManagement>
+ <NewsItemType FormalName="News"/>
+ <FirstCreated>20011022T154508Z</FirstCreated>
+ <ThisRevisionCreated>20011022T154508Z</ThisRevisionCreated>
+ <Status FormalName="Usable"/>
+ </NewsManagement>
+ <NewsComponent>
+ <AdministrativeMetadata>
+ <Provider>
+ <Party FormalName="AFP"/>
+ </Provider>
+ </AdministrativeMetadata>
+ <DescriptiveMetadata>
+ <Language FormalName="de"/>
+ </DescriptiveMetadata>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Berliner SPD führt Gespräche mit FDP und Grünen</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022154450.sq80bp9h.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>INFOGRAFIK: Das Berliner Wahlergebnis</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022113032.remo00m7.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Schwierige Koalitionsverhandlungen in Berlin</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022124314.9hv2kozk.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Die Lieblingsfarben des Kanzlers sind Rot Gelb Grün</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022134541.cmmaoim7.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>INFOGRAFIK: Wen wählt Wowereit?</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022122545.hl3z2as6.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>CDU ist auch in kommunalen Rathäusern der Verlierer</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022120205.b8sykfvu.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Gutes Abschneiden der PDS hat verschiedene Gründe</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022134159.agvne048.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Ans Regieren hat sich Klaus Wowereit gewöhnt</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021161031.1oq7qyub.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Steffel brachte CDU nicht auf Erfolgskurs</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021165007.kt9qog9m.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Sibyll Klotz: Vollblutpolitikerin mit "Berliner Schnauze"</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021184658.lctevest.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Mit Gysi muss weiter gerechnet werden</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021180441.6tpvgx0y.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Rexrodt - das Stehaufmännchen der Berliner FDP</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021165558.gujrz59m.xml"/>
+ </NewsComponent>
+ </NewsComponent>
+ </NewsItem>
+</NewsML>
diff --git a/result/valid/index.xml.err b/result/valid/index.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/index.xml.err
diff --git a/result/valid/index.xml.err.rdr b/result/valid/index.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/index.xml.err.rdr
diff --git a/result/valid/mixed_ns.xml b/result/valid/mixed_ns.xml
new file mode 100644
index 0000000..d8aedb8
--- /dev/null
+++ b/result/valid/mixed_ns.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ELEMENT a (#PCDATA | b | s:b)*>
+<!ATTLIST a xmlns:s CDATA #IMPLIED>
+<!ELEMENT b EMPTY>
+<!ATTLIST b xmlns:s CDATA #IMPLIED>
+<!ELEMENT s:b EMPTY>
+<!ATTLIST s:b xmlns:s CDATA #IMPLIED>
+]>
+<a xmlns:s="http://some.test.ns/a">
+ Some text.
+ <b/>
+ Some text.
+ <s:b/>
+ Some text.
+</a>
diff --git a/result/valid/mixed_ns.xml.err b/result/valid/mixed_ns.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/mixed_ns.xml.err
diff --git a/result/valid/mixed_ns.xml.err.rdr b/result/valid/mixed_ns.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/mixed_ns.xml.err.rdr
diff --git a/result/valid/notes.xml b/result/valid/notes.xml
new file mode 100644
index 0000000..6ab3aa3
--- /dev/null
+++ b/result/valid/notes.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE notes SYSTEM "dtds/notes.dtd">
+<pfx:notes xmlns:pfx="http://namespace/uri/here"><note/><pfx:note/></pfx:notes>
diff --git a/result/valid/notes.xml.err b/result/valid/notes.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/notes.xml.err
diff --git a/result/valid/notes.xml.err.rdr b/result/valid/notes.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/notes.xml.err.rdr
diff --git a/result/valid/ns.xml b/result/valid/ns.xml
new file mode 100644
index 0000000..ddade86
--- /dev/null
+++ b/result/valid/ns.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE a:outer [
+<!ELEMENT a:outer EMPTY>
+<!ATTLIST a:outer xmlns:a CDATA #FIXED "urn:namespace">
+<!ATTLIST a:outer xmlns:b CDATA #FIXED "urn:namespaceb">
+]>
+<a:outer xmlns:a="urn:namespace" xmlns:b="urn:namespaceb"/>
diff --git a/result/valid/ns.xml.err b/result/valid/ns.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/ns.xml.err
diff --git a/result/valid/ns.xml.err.rdr b/result/valid/ns.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/ns.xml.err.rdr
diff --git a/result/valid/ns2.xml b/result/valid/ns2.xml
new file mode 100644
index 0000000..a4c30a8
--- /dev/null
+++ b/result/valid/ns2.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE a:outer [
+<!ELEMENT a:outer (a:inner)>
+<!ATTLIST a:outer xmlns:a CDATA #FIXED "urn:namespace">
+<!ELEMENT a:inner EMPTY>
+<!ATTLIST a:inner xmlns:a CDATA #FIXED "urn:namespace">
+<!ATTLIST a:inner attr CDATA #FIXED "yes">
+]>
+<a:outer xmlns:a="urn:namespace">
+ <a:inner/>
+</a:outer>
diff --git a/result/valid/ns2.xml.err b/result/valid/ns2.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/ns2.xml.err
diff --git a/result/valid/ns2.xml.err.rdr b/result/valid/ns2.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/ns2.xml.err.rdr
diff --git a/result/valid/objednavka.xml b/result/valid/objednavka.xml
new file mode 100644
index 0000000..b0ffd92
--- /dev/null
+++ b/result/valid/objednavka.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE objednavka SYSTEM "dtds/objednavka.dtd">
+<objednavka>
+ <AdDoruÄeni>
+ <Jméno>Jan Novák</Jméno>
+ <Ulice>Bělehradská 147</Ulice>
+ <Město>Praha 2</Město>
+ <PSČ>12000</PSČ>
+ </AdDoruÄeni>
+ <AdÚÄtovací>
+ <Jméno>Petra Nováková</Jméno>
+ <Ulice>Anglická 15</Ulice>
+ <Město>Praha 2</Město>
+ <PSČ>12000</PSČ>
+ </AdÚÄtovací>
+ <ZpůsobDopravy>DPD</ZpůsobDopravy>
+ <ZpůsobPlatby>dobírka</ZpůsobPlatby>
+ <DatumPřijetí>2004-11-14</DatumPřijetí>
+ <DatumDoruÄení>2004-11-19</DatumDoruÄení>
+ <ObsahObjednávky>
+ <Zboží>
+ <Kód>2N7-516</Kód>
+ <Název>SekaÄka na trávu</Název>
+ <PoÄet jednotka="ks">1</PoÄet>
+ <Cena>2999</Cena>
+ <Popis>http://example.org/sekacka.html</Popis>
+ </Zboží>
+ <Zboží>
+ <Kód>Q3Y-116</Kód>
+ <Název>Travní semeno</Název>
+ <PoÄet jednotka="kg">2.5</PoÄet>
+ <Cena>127.50</Cena>
+ </Zboží>
+ </ObsahObjednávky>
+ <Komentář>
+ <Řádka>O dodávku mám zájem pouze v případě, že se jedná o trávu v odrůdě konopí.</Řádka>
+ <Řádka>Dále jsem se chtěl zeptat, zda je doprava zdarma.</Řádka>
+ </Komentář>
+</objednavka>
diff --git a/result/valid/objednavka.xml.err b/result/valid/objednavka.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/objednavka.xml.err
diff --git a/result/valid/objednavka.xml.err.rdr b/result/valid/objednavka.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/objednavka.xml.err.rdr
diff --git a/result/valid/rss.xml b/result/valid/rss.xml
new file mode 100644
index 0000000..642fb80
--- /dev/null
+++ b/result/valid/rss.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE rss [
+<!--
+
+ Rich Site Summary (RSS) 0.91 official DTD, proposed.
+
+ RSS is an XML vocabulary for describing
+ metadata about websites, and enabling the display of
+ "channels" on the "My Netscape" website.
+
+ RSS Info can be found at http://my.netscape.com/publish/
+ XML Info can be found at http://www.w3.org/XML/
+
+ copyright Netscape Communications, 1999
+
+ Dan Libby - danda@netscape.com
+
+ Based on RSS DTD originally created by
+ Lars Marius Garshol - larsga@ifi.uio.no.
+
+--><!ELEMENT rss (channel)>
+<!ATTLIST rss version CDATA #REQUIRED>
+<!-- must be "0.91"> --><!ELEMENT channel (title | description | link | language | item+ | rating | image | textinput | copyright | pubDate | lastBuildDate | docs | managingEditor | webMaster | skipHours | skipDays)*>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT description (#PCDATA)>
+<!ELEMENT link (#PCDATA)>
+<!ELEMENT image (title | url | link | width | height | description)*>
+<!ELEMENT url (#PCDATA)>
+<!ELEMENT item (title | link | description)*>
+<!ELEMENT textinput (title | description | name | link)*>
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT rating (#PCDATA)>
+<!ELEMENT language (#PCDATA)>
+<!ELEMENT width (#PCDATA)>
+<!ELEMENT height (#PCDATA)>
+<!ELEMENT copyright (#PCDATA)>
+<!ELEMENT pubDate (#PCDATA)>
+<!ELEMENT lastBuildDate (#PCDATA)>
+<!ELEMENT docs (#PCDATA)>
+<!ELEMENT managingEditor (#PCDATA)>
+<!ELEMENT webMaster (#PCDATA)>
+<!ELEMENT hour (#PCDATA)>
+<!ELEMENT day (#PCDATA)>
+<!ELEMENT skipHours (hour)+>
+<!ELEMENT skipDays (day)+>
+<!--
+ Copied from HTML 3.2 DTD, with modifications (removed CDATA)
+ http://www.w3.org/TR/REC-html32.html#dtd
+ =============== BEGIN ===================
+--><!--
+ Character Entities for ISO Latin-1
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+ This has been extended for use with HTML to cover the full
+ set of codes in the range 160-255 decimal.
+--><!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOlat1 PUBLIC
+ "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML">
+ %ISOlat1;
+--><!ENTITY nbsp "&#160;">
+<!-- no-break space --><!ENTITY iexcl "&#161;">
+<!-- inverted exclamation mark --><!ENTITY cent "&#162;">
+<!-- cent sign --><!ENTITY pound "&#163;">
+<!-- pound sterling sign --><!ENTITY curren "&#164;">
+<!-- general currency sign --><!ENTITY yen "&#165;">
+<!-- yen sign --><!ENTITY brvbar "&#166;">
+<!-- broken (vertical) bar --><!ENTITY sect "&#167;">
+<!-- section sign --><!ENTITY uml "&#168;">
+<!-- umlaut (dieresis) --><!ENTITY copy "&#169;">
+<!-- copyright sign --><!ENTITY ordf "&#170;">
+<!-- ordinal indicator, feminine --><!ENTITY laquo "&#171;">
+<!-- angle quotation mark, left --><!ENTITY not "&#172;">
+<!-- not sign --><!ENTITY shy "&#173;">
+<!-- soft hyphen --><!ENTITY reg "&#174;">
+<!-- registered sign --><!ENTITY macr "&#175;">
+<!-- macron --><!ENTITY deg "&#176;">
+<!-- degree sign --><!ENTITY plusmn "&#177;">
+<!-- plus-or-minus sign --><!ENTITY sup2 "&#178;">
+<!-- superscript two --><!ENTITY sup3 "&#179;">
+<!-- superscript three --><!ENTITY acute "&#180;">
+<!-- acute accent --><!ENTITY micro "&#181;">
+<!-- micro sign --><!ENTITY para "&#182;">
+<!-- pilcrow (paragraph sign) --><!ENTITY middot "&#183;">
+<!-- middle dot --><!ENTITY cedil "&#184;">
+<!-- cedilla --><!ENTITY sup1 "&#185;">
+<!-- superscript one --><!ENTITY ordm "&#186;">
+<!-- ordinal indicator, masculine --><!ENTITY raquo "&#187;">
+<!-- angle quotation mark, right --><!ENTITY frac14 "&#188;">
+<!-- fraction one-quarter --><!ENTITY frac12 "&#189;">
+<!-- fraction one-half --><!ENTITY frac34 "&#190;">
+<!-- fraction three-quarters --><!ENTITY iquest "&#191;">
+<!-- inverted question mark --><!ENTITY Agrave "&#192;">
+<!-- capital A, grave accent --><!ENTITY Aacute "&#193;">
+<!-- capital A, acute accent --><!ENTITY Acirc "&#194;">
+<!-- capital A, circumflex accent --><!ENTITY Atilde "&#195;">
+<!-- capital A, tilde --><!ENTITY Auml "&#196;">
+<!-- capital A, dieresis or umlaut mark --><!ENTITY Aring "&#197;">
+<!-- capital A, ring --><!ENTITY AElig "&#198;">
+<!-- capital AE diphthong (ligature) --><!ENTITY Ccedil "&#199;">
+<!-- capital C, cedilla --><!ENTITY Egrave "&#200;">
+<!-- capital E, grave accent --><!ENTITY Eacute "&#201;">
+<!-- capital E, acute accent --><!ENTITY Ecirc "&#202;">
+<!-- capital E, circumflex accent --><!ENTITY Euml "&#203;">
+<!-- capital E, dieresis or umlaut mark --><!ENTITY Igrave "&#204;">
+<!-- capital I, grave accent --><!ENTITY Iacute "&#205;">
+<!-- capital I, acute accent --><!ENTITY Icirc "&#206;">
+<!-- capital I, circumflex accent --><!ENTITY Iuml "&#207;">
+<!-- capital I, dieresis or umlaut mark --><!ENTITY ETH "&#208;">
+<!-- capital Eth, Icelandic --><!ENTITY Ntilde "&#209;">
+<!-- capital N, tilde --><!ENTITY Ograve "&#210;">
+<!-- capital O, grave accent --><!ENTITY Oacute "&#211;">
+<!-- capital O, acute accent --><!ENTITY Ocirc "&#212;">
+<!-- capital O, circumflex accent --><!ENTITY Otilde "&#213;">
+<!-- capital O, tilde --><!ENTITY Ouml "&#214;">
+<!-- capital O, dieresis or umlaut mark --><!ENTITY times "&#215;">
+<!-- multiply sign --><!ENTITY Oslash "&#216;">
+<!-- capital O, slash --><!ENTITY Ugrave "&#217;">
+<!-- capital U, grave accent --><!ENTITY Uacute "&#218;">
+<!-- capital U, acute accent --><!ENTITY Ucirc "&#219;">
+<!-- capital U, circumflex accent --><!ENTITY Uuml "&#220;">
+<!-- capital U, dieresis or umlaut mark --><!ENTITY Yacute "&#221;">
+<!-- capital Y, acute accent --><!ENTITY THORN "&#222;">
+<!-- capital THORN, Icelandic --><!ENTITY szlig "&#223;">
+<!-- small sharp s, German (sz ligature) --><!ENTITY agrave "&#224;">
+<!-- small a, grave accent --><!ENTITY aacute "&#225;">
+<!-- small a, acute accent --><!ENTITY acirc "&#226;">
+<!-- small a, circumflex accent --><!ENTITY atilde "&#227;">
+<!-- small a, tilde --><!ENTITY auml "&#228;">
+<!-- small a, dieresis or umlaut mark --><!ENTITY aring "&#229;">
+<!-- small a, ring --><!ENTITY aelig "&#230;">
+<!-- small ae diphthong (ligature) --><!ENTITY ccedil "&#231;">
+<!-- small c, cedilla --><!ENTITY egrave "&#232;">
+<!-- small e, grave accent --><!ENTITY eacute "&#233;">
+<!-- small e, acute accent --><!ENTITY ecirc "&#234;">
+<!-- small e, circumflex accent --><!ENTITY euml "&#235;">
+<!-- small e, dieresis or umlaut mark --><!ENTITY igrave "&#236;">
+<!-- small i, grave accent --><!ENTITY iacute "&#237;">
+<!-- small i, acute accent --><!ENTITY icirc "&#238;">
+<!-- small i, circumflex accent --><!ENTITY iuml "&#239;">
+<!-- small i, dieresis or umlaut mark --><!ENTITY eth "&#240;">
+<!-- small eth, Icelandic --><!ENTITY ntilde "&#241;">
+<!-- small n, tilde --><!ENTITY ograve "&#242;">
+<!-- small o, grave accent --><!ENTITY oacute "&#243;">
+<!-- small o, acute accent --><!ENTITY ocirc "&#244;">
+<!-- small o, circumflex accent --><!ENTITY otilde "&#245;">
+<!-- small o, tilde --><!ENTITY ouml "&#246;">
+<!-- small o, dieresis or umlaut mark --><!ENTITY divide "&#247;">
+<!-- divide sign --><!ENTITY oslash "&#248;">
+<!-- small o, slash --><!ENTITY ugrave "&#249;">
+<!-- small u, grave accent --><!ENTITY uacute "&#250;">
+<!-- small u, acute accent --><!ENTITY ucirc "&#251;">
+<!-- small u, circumflex accent --><!ENTITY uuml "&#252;">
+<!-- small u, dieresis or umlaut mark --><!ENTITY yacute "&#253;">
+<!-- small y, acute accent --><!ENTITY thorn "&#254;">
+<!-- small thorn, Icelandic --><!ENTITY yuml "&#255;">
+<!-- small y, dieresis or umlaut mark --><!--
+ Copied from HTML 3.2 DTD, with modifications (removed CDATA)
+ http://www.w3.org/TR/REC-html32.html#dtd
+ ================= END ===================
+-->]>
+<rss>
+<channel>
+<image/>
+<title>PP</title>
+</channel>
+</rss>
diff --git a/result/valid/rss.xml.err b/result/valid/rss.xml.err
new file mode 100644
index 0000000..2ec7c9e
--- /dev/null
+++ b/result/valid/rss.xml.err
@@ -0,0 +1,3 @@
+./test/valid/rss.xml:177: element rss: validity error : Element rss does not carry attribute version
+</rss>
+ ^
diff --git a/result/valid/rss.xml.err.rdr b/result/valid/rss.xml.err.rdr
new file mode 100644
index 0000000..2ec7c9e
--- /dev/null
+++ b/result/valid/rss.xml.err.rdr
@@ -0,0 +1,3 @@
+./test/valid/rss.xml:177: element rss: validity error : Element rss does not carry attribute version
+</rss>
+ ^
diff --git a/result/valid/t10.xml b/result/valid/t10.xml
new file mode 100644
index 0000000..b60f2f9
--- /dev/null
+++ b/result/valid/t10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root [
+<!ELEMENT root (cont1 , (cont1 , cont2?)+)>
+<!ELEMENT cont1 EMPTY>
+<!ELEMENT cont2 EMPTY>
+]>
+<root>
+ <cont1/>
+ <cont1/>
+ <cont1/>
+ <cont1/>
+</root>
diff --git a/result/valid/t10.xml.err b/result/valid/t10.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t10.xml.err
diff --git a/result/valid/t10.xml.err.rdr b/result/valid/t10.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t10.xml.err.rdr
diff --git a/result/valid/t11.xml b/result/valid/t11.xml
new file mode 100644
index 0000000..d871787
--- /dev/null
+++ b/result/valid/t11.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "dtds/external.ent">
+<root>&peInCdata;</root>
diff --git a/result/valid/t11.xml.err b/result/valid/t11.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t11.xml.err
diff --git a/result/valid/t11.xml.err.rdr b/result/valid/t11.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t11.xml.err.rdr
diff --git a/result/valid/t4.dtd b/result/valid/t4.dtd
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t4.dtd
diff --git a/result/valid/t4.dtd.err b/result/valid/t4.dtd.err
new file mode 100644
index 0000000..23a3258
--- /dev/null
+++ b/result/valid/t4.dtd.err
@@ -0,0 +1,6 @@
+./test/valid/t4.dtd:1: parser error : StartTag: invalid element name
+<!ENTITY % percent "&#x25;">
+ ^
+./test/valid/t4.dtd:1: parser error : Extra content at the end of the document
+<!ENTITY % percent "&#x25;">
+ ^
diff --git a/result/valid/t4.dtd.err.rdr b/result/valid/t4.dtd.err.rdr
new file mode 100644
index 0000000..23a3258
--- /dev/null
+++ b/result/valid/t4.dtd.err.rdr
@@ -0,0 +1,6 @@
+./test/valid/t4.dtd:1: parser error : StartTag: invalid element name
+<!ENTITY % percent "&#x25;">
+ ^
+./test/valid/t4.dtd:1: parser error : Extra content at the end of the document
+<!ENTITY % percent "&#x25;">
+ ^
diff --git a/result/valid/t4.xml b/result/valid/t4.xml
new file mode 100644
index 0000000..c198f76
--- /dev/null
+++ b/result/valid/t4.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "t4.dtd">
+<root>&abc;</root>
diff --git a/result/valid/t4.xml.err b/result/valid/t4.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t4.xml.err
diff --git a/result/valid/t4.xml.err.rdr b/result/valid/t4.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t4.xml.err.rdr
diff --git a/result/valid/t4a.dtd b/result/valid/t4a.dtd
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t4a.dtd
diff --git a/result/valid/t4a.dtd.err b/result/valid/t4a.dtd.err
new file mode 100644
index 0000000..48cdd5f
--- /dev/null
+++ b/result/valid/t4a.dtd.err
@@ -0,0 +1,6 @@
+./test/valid/t4a.dtd:1: parser error : StartTag: invalid element name
+<!ENTITY % percent "&#x25;">
+ ^
+./test/valid/t4a.dtd:1: parser error : Extra content at the end of the document
+<!ENTITY % percent "&#x25;">
+ ^
diff --git a/result/valid/t4a.dtd.err.rdr b/result/valid/t4a.dtd.err.rdr
new file mode 100644
index 0000000..48cdd5f
--- /dev/null
+++ b/result/valid/t4a.dtd.err.rdr
@@ -0,0 +1,6 @@
+./test/valid/t4a.dtd:1: parser error : StartTag: invalid element name
+<!ENTITY % percent "&#x25;">
+ ^
+./test/valid/t4a.dtd:1: parser error : Extra content at the end of the document
+<!ENTITY % percent "&#x25;">
+ ^
diff --git a/result/valid/t4a.xml b/result/valid/t4a.xml
new file mode 100644
index 0000000..37e80f7
--- /dev/null
+++ b/result/valid/t4a.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "t4a.dtd">
+<root>&abc;</root>
diff --git a/result/valid/t4a.xml.err b/result/valid/t4a.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t4a.xml.err
diff --git a/result/valid/t4a.xml.err.rdr b/result/valid/t4a.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t4a.xml.err.rdr
diff --git a/result/valid/t6.dtd b/result/valid/t6.dtd
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t6.dtd
diff --git a/result/valid/t6.dtd.err b/result/valid/t6.dtd.err
new file mode 100644
index 0000000..6e84d68
--- /dev/null
+++ b/result/valid/t6.dtd.err
@@ -0,0 +1,6 @@
+./test/valid/t6.dtd:1: parser error : StartTag: invalid element name
+<!ENTITY % xdef "def">
+ ^
+./test/valid/t6.dtd:1: parser error : Extra content at the end of the document
+<!ENTITY % xdef "def">
+ ^
diff --git a/result/valid/t6.dtd.err.rdr b/result/valid/t6.dtd.err.rdr
new file mode 100644
index 0000000..6e84d68
--- /dev/null
+++ b/result/valid/t6.dtd.err.rdr
@@ -0,0 +1,6 @@
+./test/valid/t6.dtd:1: parser error : StartTag: invalid element name
+<!ENTITY % xdef "def">
+ ^
+./test/valid/t6.dtd:1: parser error : Extra content at the end of the document
+<!ENTITY % xdef "def">
+ ^
diff --git a/result/valid/t6.xml b/result/valid/t6.xml
new file mode 100644
index 0000000..23f2d25
--- /dev/null
+++ b/result/valid/t6.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "t6.dtd">
+<root>&abc;</root>
diff --git a/result/valid/t6.xml.err b/result/valid/t6.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t6.xml.err
diff --git a/result/valid/t6.xml.err.rdr b/result/valid/t6.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t6.xml.err.rdr
diff --git a/result/valid/t8.xml b/result/valid/t8.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t8.xml
diff --git a/result/valid/t8.xml.err b/result/valid/t8.xml.err
new file mode 100644
index 0000000..d795788
--- /dev/null
+++ b/result/valid/t8.xml.err
@@ -0,0 +1,19 @@
+Entity: line 1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+Entity: line 1: parser error : DOCTYPE improperly terminated
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+Entity: line 1: parser error : Start tag expected, '<' not found
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+ ^
diff --git a/result/valid/t8.xml.err.rdr b/result/valid/t8.xml.err.rdr
new file mode 100644
index 0000000..c198a16
--- /dev/null
+++ b/result/valid/t8.xml.err.rdr
@@ -0,0 +1,14 @@
+Entity: line 1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+Entity: line 1: parser error : DOCTYPE improperly terminated
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+./test/valid/t8.xml : failed to parse
diff --git a/result/valid/t8a.xml b/result/valid/t8a.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t8a.xml
diff --git a/result/valid/t8a.xml.err b/result/valid/t8a.xml.err
new file mode 100644
index 0000000..d795788
--- /dev/null
+++ b/result/valid/t8a.xml.err
@@ -0,0 +1,19 @@
+Entity: line 1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+Entity: line 1: parser error : DOCTYPE improperly terminated
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+Entity: line 1: parser error : Start tag expected, '<' not found
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+ ^
diff --git a/result/valid/t8a.xml.err.rdr b/result/valid/t8a.xml.err.rdr
new file mode 100644
index 0000000..b6bdcbe
--- /dev/null
+++ b/result/valid/t8a.xml.err.rdr
@@ -0,0 +1,14 @@
+Entity: line 1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+Entity: line 1: parser error : DOCTYPE improperly terminated
+ %defroot;
+ ^
+Entity: line 1:
+&lt;!ELEMENT root (middle) >
+^
+./test/valid/t8a.xml : failed to parse
diff --git a/result/valid/t9.xml b/result/valid/t9.xml
new file mode 100644
index 0000000..6950b14
--- /dev/null
+++ b/result/valid/t9.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ENTITY % deftest "&#60;!ELEMENT test (#PCDATA) >">
+<!ENTITY % defmiddle "&#60;!ELEMENT middle (test) >">
+<!ENTITY % defroot "&#60;!ELEMENT root (middle) >">
+<!ELEMENT root (middle)>
+<!ELEMENT middle (test)>
+<!ELEMENT test (#PCDATA)>
+]>
+<root><middle><test>sample</test></middle></root>
diff --git a/result/valid/t9.xml.err b/result/valid/t9.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t9.xml.err
diff --git a/result/valid/t9.xml.err.rdr b/result/valid/t9.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t9.xml.err.rdr
diff --git a/result/valid/t9a.xml b/result/valid/t9a.xml
new file mode 100644
index 0000000..6950b14
--- /dev/null
+++ b/result/valid/t9a.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ENTITY % deftest "&#60;!ELEMENT test (#PCDATA) >">
+<!ENTITY % defmiddle "&#60;!ELEMENT middle (test) >">
+<!ENTITY % defroot "&#60;!ELEMENT root (middle) >">
+<!ELEMENT root (middle)>
+<!ELEMENT middle (test)>
+<!ELEMENT test (#PCDATA)>
+]>
+<root><middle><test>sample</test></middle></root>
diff --git a/result/valid/t9a.xml.err b/result/valid/t9a.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t9a.xml.err
diff --git a/result/valid/t9a.xml.err.rdr b/result/valid/t9a.xml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/t9a.xml.err.rdr
diff --git a/result/valid/xhtml1.xhtml b/result/valid/xhtml1.xhtml
new file mode 100644
index 0000000..907209b
--- /dev/null
+++ b/result/valid/xhtml1.xhtml
@@ -0,0 +1,1453 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "dtds/xhtml1-strict.dtd">
+<?xml-stylesheet href="W3C-PR.css" type="text/css"?>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>XHTML 1.0: The Extensible HyperText Markup
+Language</title>
+<link rel="stylesheet" href="W3C-PR.css" type="text/css" />
+<style type="text/css">
+span.term { font-style: italic; color: rgb(0, 0, 192) }
+code {
+ color: green;
+ font-family: monospace;
+ font-weight: bold;
+}
+
+code.greenmono {
+ color: green;
+ font-family: monospace;
+ font-weight: bold;
+}
+.good {
+ border: solid green;
+ border-width: 2px;
+ color: green;
+ font-weight: bold;
+ margin-right: 5%;
+ margin-left: 0;
+}
+.bad {
+ border: solid red;
+ border-width: 2px;
+ margin-left: 0;
+ margin-right: 5%;
+ color: rgb(192, 101, 101);
+}
+
+img {
+ color: white;
+ border: none;
+}
+
+div.navbar { text-align: center; }
+div.contents {
+ background-color: rgb(204,204,255);
+ padding: 0.5em;
+ border: none;
+ margin-right: 5%;
+}
+.tocline { list-style: none; }
+table.exceptions { background-color: rgb(255,255,153); }
+</style>
+</head>
+<body>
+<div class="navbar">
+ <a href="#toc">table of contents</a>
+ <hr />
+</div>
+<div class="head"><p><a href="http://www.w3.org/"><img class="head" src="w3c_home.gif" alt="W3C" /></a></p>
+
+<h1 class="head"><a name="title" id="title">XHTML</a><sup>&#x2122;</sup> 1.0:
+The Extensible HyperText Markup Language</h1>
+
+<h2>A Reformulation of HTML 4.0 in XML 1.0</h2>
+
+<h3>W3C Proposed Recommendation 10 December 1999</h3>
+
+<dl>
+<dt>This version:</dt>
+
+<dd><a href="http://www.w3.org/TR/1999/PR-xhtml1-19991210">
+http://www.w3.org/TR/1999/PR-xhtml1-19991210</a> <br />
+(<a href="xhtml1.ps">Postscript version</a>,
+<a href="xhtml1.pdf">PDF version</a>,
+<a href="xhtml1.zip">ZIP archive</a>, or
+<a href="xhtml1.tgz">Gzip'd TAR archive</a>)
+</dd>
+
+<dt>Latest version:</dt>
+
+<dd><a href="http://www.w3.org/TR/xhtml1">
+http://www.w3.org/TR/xhtml1</a></dd>
+
+<dt>Previous versions:</dt>
+
+<dd><a href="http://www.w3.org/TR/1999/WD-xhtml1-19991124">
+http://www.w3.org/TR/1999/WD-xhtml1-19991124</a></dd>
+<dd><a href="http://www.w3.org/TR/1999/PR-xhtml1-19990824">
+http://www.w3.org/TR/1999/PR-xhtml1-19990824</a></dd>
+
+<dt>Authors:</dt>
+
+<dd>See <a href="#acks">acknowledgements</a>.</dd>
+</dl>
+
+<p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">
+Copyright</a> &copy; 1999 <a href="http://www.w3.org/">W3C</a><sup>&reg;</sup>
+(<a href="http://www.lcs.mit.edu/">MIT</a>, <a href="http://www.inria.fr/">INRIA</a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">
+liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">
+trademark</a>, <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document
+use</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+<hr />
+</div>
+
+<h2 class="notoc">Abstract</h2>
+
+<p>This specification defines <abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 1.0, a reformulation of HTML
+4.0 as an XML 1.0 application, and three <abbr title="Document Type Definition">DTDs</abbr> corresponding to
+the ones defined by HTML 4.0. The semantics of the elements and
+their attributes are defined in the W3C Recommendation for HTML
+4.0. These semantics provide the foundation for future
+extensibility of XHTML. Compatibility with existing HTML user
+agents is possible by following a small set of guidelines.</p>
+
+<h2>Status of this document</h2>
+
+<p><em>This section describes the status of this document at the time
+of its publication. Other documents may supersede this document. The
+latest status of this document series is maintained at the W3C.</em></p>
+
+<p>This specification is a Proposed Recommendation of the HTML Working Group. It is
+a revision of the Proposed Recommendation dated <a href="http://www.w3.org/TR/1999/PR-xhtml1-19990824/">24 August
+1999</a> incorporating changes as a result of comments from the Proposed
+Recommendation review, and
+comments and further deliberations of the W3C HTML Working Group. A
+<a href="xhtml1-diff-19991210.html">diff-marked version</a> from the previous
+proposed recommendation is available for comparison purposes.</p>
+
+<p>On 10 December 1999, this document enters a
+<a href="http://www.w3.org/Consortium/Process/#RecsPR">
+Proposed Recommendation</a> review period. From that date until 8 January
+2000,
+W3C Advisory Committee representatives are encouraged
+to review this specification and return comments in their completed
+ballots to w3c-html-review@w3.org. Please send any comments of a
+confidential nature in separate email to w3t-html@w3.org, which is
+visible to the Team only.</p>
+
+<p>No sooner than 14 days after the end of the review period, the
+Director will announce the document's disposition: it may become a W3C
+Recommendation (possibly with minor changes), it may revert to Working
+Draft status, or it may be dropped as a W3C work item.</p>
+
+<p>Publication as a Proposed Recommendation does not imply endorsement
+by the W3C membership. This is still a draft document and may be
+updated, replaced or obsoleted by other documents at any time. It is
+inappropriate to cite W3C Proposed Recommendation as other than "work
+in progress."</p>
+
+<p>This document has been produced as part of the <a href="http://www.w3.org/MarkUp/">W3C HTML Activity</a>. The goals of
+the <a href="http://www.w3.org/MarkUp/Group/">HTML Working
+Group</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members
+only</a>)</i> are discussed in the <a href="http://www.w3.org/MarkUp/Group/HTMLcharter">HTML Working Group
+charter</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members
+only</a>)</i>.</p>
+
+<p>A list of current W3C Recommendations and other technical documents
+can be found at <a href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p>
+
+<p>Public discussion on <abbr title="HyperText Markup Language">HTML</abbr> features takes place on the mailing list <a href="mailto:www-html@w3.org"> www-html@w3.org</a> (<a href="http://lists.w3.org/Archives/Public/www-html/">archive</a>). The W3C
+staff contact for work on HTML is <a href="mailto:dsr@w3.org">Dave
+Raggett</a>.</p>
+
+<p>Please report errors in this document to <a href="mailto:www-html-editor@w3.org">www-html-editor@w3.org</a>.</p>
+
+<p>The list of known errors in this specification is available at <a href="http://www.w3.org/1999/12/PR-xhtml1-19991210-errata">http://www.w3.org/1999/12/PR-xhtml1-19991210-errata</a>.</p>
+
+<h2 class="notoc"><a id="toc" name="toc">Contents</a></h2>
+
+<div class="contents">
+<ul class="toc">
+<li class="tocline">1. <a href="#xhtml">What is XHTML?</a>
+
+<ul class="toc">
+<li class="tocline">1.1 <a href="#html4">What is HTML 4.0?</a></li>
+
+<li class="tocline">1.2 <a href="#xml">What is XML?</a></li>
+
+<li class="tocline">1.3 <a href="#why">Why the need for XHTML?</a></li>
+</ul>
+</li>
+
+<li class="tocline">2. <a href="#defs">Definitions</a>
+
+<ul class="toc">
+<li class="tocline">2.1 <a href="#terms">Terminology</a></li>
+
+<li class="tocline">2.2 <a href="#general">General Terms</a></li>
+</ul>
+</li>
+
+<li class="tocline">3. <a href="#normative">Normative Definition of XHTML 1.0</a>
+
+
+<ul class="toc">
+<li class="tocline">3.1 <a href="#docconf">Document Conformance</a></li>
+
+<li class="tocline">3.2 <a href="#uaconf">User Agent Conformance</a></li>
+</ul>
+</li>
+
+<li class="tocline">4. <a href="#diffs">Differences with HTML 4.0</a>
+
+</li>
+
+<li class="tocline">5. <a href="#issues">Compatibility Issues</a>
+
+<ul class="toc">
+<li class="tocline">5.1 <a href="#media">Internet Media Types</a></li>
+</ul>
+</li>
+
+<li class="tocline">6. <a href="#future">Future Directions</a>
+
+<ul class="toc">
+<li class="tocline">6.1 <a href="#mods">Modularizing HTML</a></li>
+
+<li class="tocline">6.2 <a href="#extensions">Subsets and Extensibility</a></li>
+
+<li class="tocline">6.3 <a href="#profiles">Document Profiles</a></li>
+</ul>
+</li>
+
+<li class="tocline"><a href="#dtds">Appendix A. DTDs</a></li>
+
+<li class="tocline"><a href="#prohibitions">Appendix B. Element
+Prohibitions</a></li>
+
+<li class="tocline"><a href="#guidelines">Appendix C. HTML Compatibility Guidelines</a></li>
+
+<li class="tocline"><a href="#acks">Appendix D. Acknowledgements</a></li>
+
+<li class="tocline"><a href="#refs">Appendix E. References</a></li>
+</ul>
+</div>
+
+<!--OddPage-->
+<h1><a name="xhtml" id="xhtml">1. What is XHTML?</a></h1>
+
+<p>XHTML is a family of current and future document types and modules that
+reproduce, subset, and extend HTML 4.0 <a href="#ref-html4">[HTML]</a>. XHTML family document types are <abbr title="Extensible Markup Language">XML</abbr> based,
+and ultimately are designed to work in conjunction with XML-based user agents.
+The details of this family and its evolution are
+discussed in more detail in the section on <a href="#future">Future
+Directions</a>. </p>
+
+<p>XHTML 1.0 (this specification) is the first document type in the XHTML
+family. It is a reformulation of the three HTML 4.0 document types as
+applications of XML 1.0 <a href="#ref-xml"> [XML]</a>. It is intended
+to be used as a language for content that is both XML-conforming and, if some
+simple <a href="#guidelines">guidelines</a> are followed,
+operates in HTML 4.0 conforming user agents. Developers who migrate
+their content to XHTML 1.0 will realize the following benefits:</p>
+
+<ul>
+<li>XHTML documents are XML conforming. As such, they are readily viewed,
+edited, and validated with standard XML tools.</li>
+<li>XHTML documents can be written to
+to operate as well or better than they did before in existing
+HTML 4.0-conforming user agents as well as in new, XHTML 1.0 conforming user
+agents.</li>
+<li>XHTML documents can utilize applications (e.g. scripts and applets) that rely
+upon either the HTML Document Object Model or the XML Document Object Model <a href="#ref-dom">[DOM]</a>.</li>
+<li>As the XHTML family evolves, documents conforming to XHTML 1.0 will be more
+likely to interoperate within and among various XHTML environments.</li>
+</ul>
+
+<p>The XHTML family is the next step in the evolution of the Internet. By
+migrating to XHTML today, content developers can enter the XML world with all
+of its attendant benefits, while still remaining confident in their
+content's backward and future compatibility.</p>
+
+<h2><a name="html4" id="html4">1.1 What is HTML 4.0?</a></h2>
+
+<p>HTML 4.0 <a href="#ref-html4">[HTML]</a> is an <abbr title="Standard Generalized Markup Language">SGML</abbr> (Standard
+Generalized Markup Language) application conforming to
+International Standard <abbr title="Organization for International Standardization">ISO</abbr> 8879, and is widely regarded as the
+standard publishing language of the World Wide Web.</p>
+
+<p>SGML is a language for describing markup languages,
+particularly those used in electronic document exchange, document
+management, and document publishing. HTML is an example of a
+language defined in SGML.</p>
+
+<p>SGML has been around since the middle 1980's and has remained
+quite stable. Much of this stability stems from the fact that the
+language is both feature-rich and flexible. This flexibility,
+however, comes at a price, and that price is a level of
+complexity that has inhibited its adoption in a diversity of
+environments, including the World Wide Web.</p>
+
+<p>HTML, as originally conceived, was to be a language for the
+exchange of scientific and other technical documents, suitable
+for use by non-document specialists. HTML addressed the problem
+of SGML complexity by specifying a small set of structural and
+semantic tags suitable for authoring relatively simple documents.
+In addition to simplifying the document structure, HTML added
+support for hypertext. Multimedia capabilities were added
+later.</p>
+
+<p>In a remarkably short space of time, HTML became wildly
+popular and rapidly outgrew its original purpose. Since HTML's
+inception, there has been rapid invention of new elements for use
+within HTML (as a standard) and for adapting HTML to vertical,
+highly specialized, markets. This plethora of new elements has
+led to compatibility problems for documents across different
+platforms.</p>
+
+<p>As the heterogeneity of both software and platforms rapidly
+proliferate, it is clear that the suitability of 'classic' HTML
+4.0 for use on these platforms is somewhat limited.</p>
+
+<h2><a name="xml" id="xml">1.2 What is XML?</a></h2>
+
+<p>XML<sup>&#x2122;</sup> is the shorthand for Extensible Markup
+Language, and is an acronym of Extensible Markup Language <a href="#ref-xml">[XML]</a>.</p>
+
+<p>XML was conceived as a means of regaining the power and
+flexibility of SGML without most of its complexity. Although a
+restricted form of SGML, XML nonetheless preserves most of SGML's
+power and richness, and yet still retains all of SGML's commonly
+used features.</p>
+
+<p>While retaining these beneficial features, XML removes many of
+the more complex features of SGML that make the authoring and
+design of suitable software both difficult and costly.</p>
+
+<h2><a name="why" id="why">1.3 Why the need for XHTML?</a></h2>
+
+<p>The benefits of migrating to XHTML 1.0 are described above. Some of the
+benefits of migrating to XHTML in general are:</p>
+
+<ul>
+<li>Document developers and user agent designers are constantly
+discovering new ways to express their ideas through new markup. In XML, it is
+relatively easy to introduce new elements or additional element
+attributes. The XHTML family is designed to accommodate these extensions
+through XHTML modules and techniques for developing new XHTML-conforming
+modules (described in the forthcoming XHTML Modularization specification).
+These modules will permit the combination of existing and
+new feature sets when developing content and when designing new user
+agents.</li>
+
+<li>Alternate ways of accessing the Internet are constantly being
+introduced. Some estimates indicate that by the year 2002, 75% of
+Internet document viewing will be carried out on these alternate
+platforms. The XHTML family is designed with general user agent
+interoperability in mind. Through a new user agent and document profiling
+mechanism, servers, proxies, and user agents will be able to perform
+best effort content transformation. Ultimately, it will be possible to
+develop XHTML-conforming content that is usable by any XHTML-conforming
+user agent.</li>
+
+</ul>
+<!--OddPage-->
+<h1><a name="defs" id="defs">2. Definitions</a></h1>
+
+<h2><a name="terms" id="terms">2.1 Terminology</a></h2>
+
+<p>The following terms are used in this specification. These
+terms extend the definitions in <a href="#ref-rfc2119">
+[RFC2119]</a> in ways based upon similar definitions in ISO/<abbr title="International Electro-technical Commission">IEC</abbr>
+9945-1:1990 <a href="#ref-posix">[POSIX.1]</a>:</p>
+
+<dl>
+<dt>Implementation-defined</dt>
+
+<dd>A value or behavior is implementation-defined when it is left
+to the implementation to define [and document] the corresponding
+requirements for correct document construction.</dd>
+
+<dt>May</dt>
+
+<dd>With respect to implementations, the word "may" is to be
+interpreted as an optional feature that is not required in this
+specification but can be provided. With respect to <a href="#docconf">Document Conformance</a>, the word "may" means that
+the optional feature must not be used. The term "optional" has
+the same definition as "may".</dd>
+
+<dt>Must</dt>
+
+<dd>In this specification, the word "must" is to be interpreted
+as a mandatory requirement on the implementation or on Strictly
+Conforming XHTML Documents, depending upon the context. The term
+"shall" has the same definition as "must".</dd>
+
+<dt>Reserved</dt>
+
+<dd>A value or behavior is unspecified, but it is not allowed to
+be used by Conforming Documents nor to be supported by a
+Conforming User Agents.</dd>
+
+<dt>Should</dt>
+
+<dd>With respect to implementations, the word "should" is to be
+interpreted as an implementation recommendation, but not a
+requirement. With respect to documents, the word "should" is to
+be interpreted as recommended programming practice for documents
+and a requirement for Strictly Conforming XHTML Documents.</dd>
+
+<dt>Supported</dt>
+
+<dd>Certain facilities in this specification are optional. If a
+facility is supported, it behaves as specified by this
+specification.</dd>
+
+<dt>Unspecified</dt>
+
+<dd>When a value or behavior is unspecified, the specification
+defines no portability requirements for a facility on an
+implementation even when faced with a document that uses the
+facility. A document that requires specific behavior in such an
+instance, rather than tolerating any behavior when using that
+facility, is not a Strictly Conforming XHTML Document.</dd>
+</dl>
+
+<h2><a name="general" id="general">2.2 General Terms</a></h2>
+
+<dl>
+<dt>Attribute</dt>
+
+<dd>An attribute is a parameter to an element declared in the
+DTD. An attribute's type and value range, including a possible
+default value, are defined in the DTD.</dd>
+
+<dt>DTD</dt>
+
+<dd>A DTD, or document type definition, is a collection of XML
+declarations that, as a collection, defines the legal structure,
+<span class="term">elements</span>, and <span class="term">
+attributes</span> that are available for use in a document that
+complies to the DTD.</dd>
+
+<dt>Document</dt>
+
+<dd>A document is a stream of data that, after being combined
+with any other streams it references, is structured such that it
+holds information contained within <span class="term">
+elements</span> that are organized as defined in the associated
+<span class="term">DTD</span>. See <a href="#docconf">Document
+Conformance</a> for more information.</dd>
+
+<dt>Element</dt>
+
+<dd>An element is a document structuring unit declared in the
+<span class="term">DTD</span>. The element's content model is
+defined in the <span class="term">DTD</span>, and additional
+semantics may be defined in the prose description of the
+element.</dd>
+
+<dt><a name="facilities" id="facilities">Facilities</a></dt>
+
+<dd>Functionality includes <span class="term">elements</span>,
+<span class="term">attributes</span>, and the semantics
+associated with those <span class="term">elements</span> and
+<span class="term">attributes</span>. An implementation
+supporting that functionality is said to provide the necessary
+facilities.</dd>
+
+<dt>Implementation</dt>
+
+<dd>An implementation is a system that provides collection of
+<span class="term">facilities</span> and services that supports
+this specification. See <a href="#uaconf">User Agent
+Conformance</a> for more information.</dd>
+
+<dt>Parsing</dt>
+
+<dd>Parsing is the act whereby a <span class="term">
+document</span> is scanned, and the information contained within
+the <span class="term">document</span> is filtered into the
+context of the <span class="term">elements</span> in which the
+information is structured.</dd>
+
+<dt>Rendering</dt>
+
+<dd>Rendering is the act whereby the information in a <span class="term">document</span> is presented. This presentation is
+done in the form most appropriate to the environment (e.g.
+aurally, visually, in print).</dd>
+
+<dt>User Agent</dt>
+
+<dd>A user agent is an <span class="term">implementation</span>
+that retrieves and processes XHTML documents. See <a href="#uaconf">User Agent Conformance</a> for more information.</dd>
+
+<dt>Validation</dt>
+
+<dd>Validation is a process whereby <span class="term">
+documents</span> are verified against the associated <span class="term">DTD</span>, ensuring that the structure, use of <span class="term">elements</span>, and use of <span class="term">
+attributes</span> are consistent with the definitions in the
+<span class="term">DTD</span>.</dd>
+
+<dt><a name="wellformed" id="wellformed">Well-formed</a></dt>
+
+<dd>A <span class="term">document</span> is well-formed when it
+is structured according to the rules defined in <a href="http://www.w3.org/TR/REC-xml#sec-well-formed">Section 2.1</a> of
+the XML 1.0 Recommendation <a href="#ref-xml">[XML]</a>.
+Basically, this definition states that elements, delimited by
+their start and end tags, are nested properly within one
+another.</dd>
+</dl>
+
+<!--OddPage-->
+<h1><a name="normative" id="normative">3. Normative Definition of
+XHTML 1.0</a></h1>
+
+<h2><a name="docconf" id="docconf">3.1 Document
+Conformance</a></h2>
+
+<p>This version of XHTML provides a definition of strictly
+conforming XHTML documents, which are restricted to tags and
+attributes from the XHTML namespace. See <a href="#well-formed">Section 3.1.2</a> for information on using XHTML
+with other namespaces, for instance, to include metadata
+expressed in <abbr title="Resource Description Format">RDF</abbr> within XHTML documents.</p>
+
+<h3><a name="strict" id="strict">3.1.1 Strictly Conforming
+Documents</a></h3>
+
+<p>A Strictly Conforming XHTML Document is a document that
+requires only the facilities described as mandatory in this
+specification. Such a document must meet all of the following
+criteria:</p>
+
+<ol>
+<li>
+<p>It must validate against one of the three DTDs found in <a href="#dtds">Appendix&#xA0;A</a>.</p>
+</li>
+
+<li>
+<p>The root element of the document must be <code>
+&lt;html&gt;</code>.</p>
+</li>
+
+<li>
+<p>The root element of the document must designate the XHTML
+namespace using the <code>xmlns</code> attribute <a href="#ref-xmlns">[XMLNAMES]</a>. The namespace for XHTML is
+defined to be
+<code>http://www.w3.org/1999/xhtml</code>.</p>
+</li>
+
+<li>
+<p>There must be a DOCTYPE declaration in the document prior to
+the root element. The public identifier included in
+the DOCTYPE declaration must reference one of the three DTDs
+found in <a href="#dtds">Appendix&#xA0;A</a> using the respective
+Formal Public Identifier. The system identifier may be changed to reflect
+local system conventions.</p>
+
+<pre>
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd&gt;
+
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-transitional.dtd&gt;
+
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-frameset.dtd&gt;
+</pre>
+</li>
+</ol>
+
+<p>Here is an example of a minimal XHTML document.</p>
+
+<div class="good">
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd"&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
+ &lt;head&gt;
+ &lt;title&gt;Virtual Library&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;p&gt;Moved to &lt;a href="http://vlib.org/"&gt;vlib.org&lt;/a&gt;.&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>Note that in this example, the XML declaration is included. An XML
+declaration like the one above is
+not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required
+when the character encoding of the document is other than the default UTF-8 or
+UTF-16.</p>
+
+<h3><a name="well-formed" id="well-formed">3.1.2 Using XHTML with
+other namespaces</a></h3>
+
+<p>The XHTML namespace may be used with other XML namespaces
+as per <a href="#ref-xmlns">[XMLNAMES]</a>, although such
+documents are not strictly conforming XHTML 1.0 documents as
+defined above. Future work by W3C will address ways to specify
+conformance for documents involving multiple namespaces.</p>
+
+<p>The following example shows the way in which XHTML 1.0 could
+be used in conjunction with the MathML Recommendation:</p>
+
+<div class="good">
+<pre>
+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
+ &lt;head&gt;
+ &lt;title&gt;A Math Example&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;p&gt;The following is MathML markup:&lt;/p&gt;
+ &lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;
+ &lt;apply&gt; &lt;log/&gt;
+ &lt;logbase&gt;
+ &lt;cn&gt; 3 &lt;/cn&gt;
+ &lt;/logbase&gt;
+ &lt;ci&gt; x &lt;/ci&gt;
+ &lt;/apply&gt;
+ &lt;/math&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<p>The following example shows the way in which XHTML 1.0 markup
+could be incorporated into another XML namespace:</p>
+
+<div class="good">
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!-- initially, the default namespace is "books" --&gt;
+&lt;book xmlns='urn:loc.gov:books'
+ xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"&gt;
+ &lt;title&gt;Cheaper by the Dozen&lt;/title&gt;
+ &lt;isbn:number&gt;1568491379&lt;/isbn:number&gt;
+ &lt;notes&gt;
+ &lt;!-- make HTML the default namespace for a hypertext commentary --&gt;
+ &lt;p xmlns='http://www.w3.org/1999/xhtml'&gt;
+ This is also available &lt;a href="http://www.w3.org/"&gt;online&lt;/a&gt;.
+ &lt;/p&gt;
+ &lt;/notes&gt;
+&lt;/book&gt;
+</pre>
+</div>
+
+<h2><a name="uaconf" id="uaconf">3.2 User Agent
+Conformance</a></h2>
+
+<p>A conforming user agent must meet all of the following
+criteria:</p>
+
+<ol>
+<li>In order to be consistent with the XML 1.0 Recommendation <a href="#ref-xml">[XML]</a>, the user agent must parse and evaluate
+an XHTML document for well-formedness. If the user agent claims
+to be a validating user agent, it must also validate documents
+against their referenced DTDs according to <a href="#ref-xml">
+[XML]</a>.</li>
+
+<li>When the user agent claims to support <a href="#facilities">
+facilities</a> defined within this specification or required by
+this specification through normative reference, it must do so in
+ways consistent with the facilities' definition.</li>
+
+<li>When a user agent processes an XHTML document as generic XML,
+it shall only recognize attributes of type
+<code>ID</code> (e.g. the <code>id</code> attribute on most XHTML elements)
+as fragment identifiers.</li>
+
+<li>If a user agent encounters an element it does not recognize,
+it must render the element's content.</li>
+
+<li>If a user agent encounters an attribute it does not
+recognize, it must ignore the entire attribute specification
+(i.e., the attribute and its value).</li>
+
+<li>If a user agent encounters an attribute value it doesn't
+recognize, it must use the default attribute value.</li>
+
+<li>If it encounters an entity reference (other than one
+of the predefined entities) for which the User Agent has
+processed no declaration (which could happen if the declaration
+is in the external subset which the User Agent hasn't read), the entity
+reference should be rendered as the characters (starting
+with the ampersand and ending with the semi-colon) that
+make up the entity reference.</li>
+
+<li>When rendering content, User Agents that encounter
+characters or character entity references that are recognized but not renderable should display the document in such a way that it is obvious to the user that normal rendering has not taken place.</li>
+
+<li>
+The following characters are defined in [XML] as whitespace characters:
+
+<ul>
+<li>Space (&amp;#x0020;)</li>
+<li>Tab (&amp;#x0009;)</li>
+<li>Carriage return (&amp;#x000D;)</li>
+<li>Line feed (&amp;#x000A;)</li>
+</ul>
+
+<p>
+The XML processor normalizes different system's line end codes into one
+single line-feed character, that is passed up to the application. The XHTML
+user agent in addition, must treat the following characters as whitespace:
+</p>
+
+<ul>
+<li>Form feed (&amp;#x000C;)</li>
+<li>Zero-width space (&amp;#x200B;)</li>
+</ul>
+
+<p>
+In elements where the 'xml:space' attribute is set to 'preserve', the user
+agent must leave all whitespace characters intact (with the exception of
+leading and trailing whitespace characters, which should be removed).
+Otherwise, whitespace
+is handled according to the following rules:
+</p>
+
+<ul>
+<li>
+All whitespace surrounding block elements should be removed.
+</li>
+<li>
+Comments are removed entirely and do not affect whitespace handling. One
+whitespace character on either side of a comment is treated as two white
+space characters.
+</li>
+<li>
+Leading and trailing whitespace inside a block element must be removed.
+</li>
+<li>Line feed characters within a block element must be converted into a
+space (except when the 'xml:space' attribute is set to 'preserve').
+</li>
+<li>
+A sequence of white space characters must be reduced to a single space
+character (except when the 'xml:space' attribute is set to 'preserve').
+</li>
+<li>
+With regard to rendition,
+the User Agent should render the content in a
+manner appropriate to the language in which the content is written.
+In languages whose primary script is Latinate, the ASCII space
+character is typically used to encode both grammatical word boundaries and
+typographic whitespace; in languages whose script is related to Nagari
+(e.g., Sanskrit, Thai, etc.), grammatical boundaries may be encoded using
+the ZW 'space' character, but will not typically be represented by
+typographic whitespace in rendered output; languages using Arabiform scripts
+may encode typographic whitespace using a space character, but may also use
+the ZW space character to delimit 'internal' grammatical boundaries (what
+look like words in Arabic to an English eye frequently encode several words,
+e.g. 'kitAbuhum' = 'kitAbu-hum' = 'book them' == their book); and languages
+in the Chinese script tradition typically neither encode such delimiters nor
+use typographic whitespace in this way.
+</li>
+</ul>
+
+<p>Whitespace in attribute values is processed according to <a href="#ref-xml">[XML]</a>.</p>
+</li>
+</ol>
+
+<!--OddPage-->
+<h1><a name="diffs" id="diffs">4. Differences with HTML
+4.0</a></h1>
+
+<p>Due to the fact that XHTML is an XML application, certain
+practices that were perfectly legal in SGML-based HTML 4.0 <a href="#ref-html4">[HTML]</a> must be changed.</p>
+
+<h2><a name="h-4.1" id="h-4.1">4.1 Documents must be
+well-formed</a></h2>
+
+<p><a href="#wellformed">Well-formedness</a> is a new concept
+introduced by <a href="#ref-xml">[XML]</a>. Essentially this
+means that all elements must either have closing tags or be
+written in a special form (as described below), and that all the
+elements must nest.</p>
+
+<p>Although overlapping is illegal in SGML, it was widely
+tolerated in existing browsers.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: nested elements.</em></strong></p>
+
+<p>&lt;p&gt;here is an emphasized
+&lt;em&gt;paragraph&lt;/em&gt;.&lt;/p&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: overlapping elements</em></strong></p>
+
+<p>&lt;p&gt;here is an emphasized
+&lt;em&gt;paragraph.&lt;/p&gt;&lt;/em&gt;</p>
+</div>
+
+<h2><a name="h-4.2" id="h-4.2">4.2 Element and attribute
+names must be in lower case</a></h2>
+
+<p>XHTML documents must use lower case for all HTML element and
+attribute names. This difference is necessary because XML is
+case-sensitive e.g. &lt;li&gt; and &lt;LI&gt; are different
+tags.</p>
+
+<h2><a name="h-4.3" id="h-4.3">4.3 For non-empty elements,
+end tags are required</a></h2>
+
+<p>In SGML-based HTML 4.0 certain elements were permitted to omit
+the end tag; with the elements that followed implying closure.
+This omission is not permitted in XML-based XHTML. All elements
+other than those declared in the DTD as <code>EMPTY</code> must
+have an end tag.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: terminated elements</em></strong></p>
+
+<p>&lt;p&gt;here is a paragraph.&lt;/p&gt;&lt;p&gt;here is
+another paragraph.&lt;/p&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: unterminated elements</em></strong></p>
+
+<p>&lt;p&gt;here is a paragraph.&lt;p&gt;here is another
+paragraph.</p>
+</div>
+
+<h2><a name="h-4.4" id="h-4.4">4.4 Attribute values must
+always be quoted</a></h2>
+
+<p>All attribute values must be quoted, even those which appear
+to be numeric.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: quoted attribute values</em></strong></p>
+
+<p>&lt;table rows="3"&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: unquoted attribute values</em></strong></p>
+
+<p>&lt;table rows=3&gt;</p>
+</div>
+
+<h2><a name="h-4.5" id="h-4.5">4.5 Attribute
+Minimization</a></h2>
+
+<p>XML does not support attribute minimization. Attribute-value
+pairs must be written in full. Attribute names such as <code>
+compact</code> and <code>checked</code> cannot occur in elements
+without their value being specified.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: unminimized attributes</em></strong></p>
+
+<p>&lt;dl compact="compact"&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: minimized attributes</em></strong></p>
+
+<p>&lt;dl compact&gt;</p>
+</div>
+
+<h2><a name="h-4.6" id="h-4.6">4.6 Empty Elements</a></h2>
+
+<p>Empty elements must either have an end tag or the start tag must end with <code>/&gt;</code>. For instance,
+<code>&lt;br/&gt;</code> or <code>&lt;hr&gt;&lt;/hr&gt;</code>. See <a href="#guidelines">HTML Compatibility Guidelines</a> for information on ways to
+ensure this is backward compatible with HTML 4.0 user agents.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: terminated empty tags</em></strong></p>
+
+<p>&lt;br/&gt;&lt;hr/&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: unterminated empty tags</em></strong></p>
+
+<p>&lt;br&gt;&lt;hr&gt;</p>
+</div>
+
+<h2><a name="h-4.7" id="h-4.7">4.7 Whitespace handling in
+attribute values</a></h2>
+
+<p>In attribute values, user agents will strip leading and
+trailing whitespace from attribute values and map sequences
+of one or more whitespace characters (including line breaks) to
+a single inter-word space (an ASCII space character for western
+scripts). See <a href="http://www.w3.org/TR/REC-xml#AVNormalize">
+Section 3.3.3</a> of <a href="#ref-xml">[XML]</a>.</p>
+
+<h2><a name="h-4.8" id="h-4.8">4.8 Script and Style
+elements</a></h2>
+
+<p>In XHTML, the script and style elements are declared as having
+<code>#PCDATA</code> content. As a result, <code>&lt;</code> and
+<code>&amp;</code> will be treated as the start of markup, and
+entities such as <code>&amp;lt;</code> and <code>&amp;amp;</code>
+will be recognized as entity references by the XML processor to
+<code>&lt;</code> and <code>&amp;</code> respectively. Wrapping
+the content of the script or style element within a <code>
+CDATA</code> marked section avoids the expansion of these
+entities.</p>
+
+<div class="good">
+<pre>
+&lt;script&gt;
+ &lt;![CDATA[
+ ... unescaped script content ...
+ ]]&gt;
+ &lt;/script&gt;
+</pre>
+</div>
+
+<p><code>CDATA</code> sections are recognized by the XML
+processor and appear as nodes in the Document Object Model, see
+<a href="http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597">
+Section 1.3</a> of the DOM Level 1 Recommendation <a href="#ref-dom">[DOM]</a>.</p>
+
+<p>An alternative is to use external script and style
+documents.</p>
+
+<h2><a name="h-4.9" id="h-4.9">4.9 SGML exclusions</a></h2>
+
+<p>SGML gives the writer of a DTD the ability to exclude specific
+elements from being contained within an element. Such
+prohibitions (called "exclusions") are not possible in XML.</p>
+
+<p>For example, the HTML 4.0 Strict DTD forbids the nesting of an
+'<code>a</code>' element within another '<code>a</code>' element
+to any descendant depth. It is not possible to spell out such
+prohibitions in XML. Even though these prohibitions cannot be
+defined in the DTD, certain elements should not be nested. A
+summary of such elements and the elements that should not be
+nested in them is found in the normative <a href="#prohibitions">
+Appendix&#xA0;B</a>.</p>
+
+<h2><a name="h-4.10" id="h-4.10">4.10 The elements with 'id' and 'name'
+attributes</a></h2>
+
+<p>HTML 4.0 defined the <code>name</code> attribute for the elements
+<code>a</code>,
+<code>applet</code>, <code>frame</code>,
+<code>iframe</code>, <code>img</code>, and <code>map</code>.
+HTML 4.0 also introduced
+the <code>id</code> attribute. Both of these attributes are designed to be
+used as fragment identifiers.</p>
+<p>In XML, fragment identifiers are of type <code>ID</code>, and
+there can only be a single attribute of type <code>ID</code> per element.
+Therefore, in XHTML 1.0 the <code>id</code>
+attribute is defined to be of type <code>ID</code>. In order to
+ensure that XHTML 1.0 documents are well-structured XML documents, XHTML 1.0
+documents MUST use the <code>id</code> attribute when defining fragment
+identifiers, even on elements that historically have also had a
+<code>name</code> attribute.
+See the <a href="#guidelines">HTML Compatibility
+Guidelines</a> for information on ensuring such anchors are backwards
+compatible when serving XHTML documents as media type <code>text/html</code>.
+</p>
+<p>Note that in XHTML 1.0, the <code>name</code> attribute of these
+elements is formally deprecated, and will be removed in a
+subsequent version of XHTML.</p>
+
+<!--OddPage-->
+<h1><a name="issues" id="issues">5. Compatibility Issues</a></h1>
+
+<p>Although there is no requirement for XHTML 1.0 documents to be
+compatible with existing user agents, in practice this is easy to
+accomplish. Guidelines for creating compatible documents can be
+found in <a href="#guidelines">Appendix&#xA0;C</a>.</p>
+
+<h2><a name="media" id="media">5.1 Internet Media Type</a></h2>
+<p>As of the publication of this recommendation, the general
+recommended MIME labeling for XML-based applications
+has yet to be resolved.</p>
+
+<p>However, XHTML Documents which follow the guidelines set forth
+in <a href="#guidelines">Appendix C</a>, "HTML Compatibility Guidelines" may be
+labeled with the Internet Media Type "text/html", as they
+are compatible with most HTML browsers. This document
+makes no recommendation about MIME labeling of other
+XHTML documents.</p>
+
+<!--OddPage-->
+<h1><a name="future" id="future">6. Future Directions</a></h1>
+
+<p>XHTML 1.0 provides the basis for a family of document types
+that will extend and subset XHTML, in order to support a wide
+range of new devices and applications, by defining modules and
+specifying a mechanism for combining these modules. This
+mechanism will enable the extension and sub-setting of XHTML 1.0
+in a uniform way through the definition of new modules.</p>
+
+<h2><a name="mods" id="mods">6.1 Modularizing HTML</a></h2>
+
+<p>As the use of XHTML moves from the traditional desktop user
+agents to other platforms, it is clear that not all of the XHTML
+elements will be required on all platforms. For example a hand
+held device or a cell-phone may only support a subset of XHTML
+elements.</p>
+
+<p>The process of modularization breaks XHTML up into a series of
+smaller element sets. These elements can then be recombined to
+meet the needs of different communities.</p>
+
+<p>These modules will be defined in a later W3C document.</p>
+
+<h2><a name="extensions" id="extensions">6.2 Subsets and
+Extensibility</a></h2>
+
+<p>Modularization brings with it several advantages:</p>
+
+<ul>
+<li>
+<p>It provides a formal mechanism for sub-setting XHTML.</p>
+</li>
+
+<li>
+<p>It provides a formal mechanism for extending XHTML.</p>
+</li>
+
+<li>
+<p>It simplifies the transformation between document types.</p>
+</li>
+
+<li>
+<p>It promotes the reuse of modules in new document types.</p>
+</li>
+</ul>
+
+<h2><a name="profiles" id="profiles">6.3 Document
+Profiles</a></h2>
+
+<p>A document profile specifies the syntax and semantics of a set
+of documents. Conformance to a document profile provides a basis
+for interoperability guarantees. The document profile specifies
+the facilities required to process documents of that type, e.g.
+which image formats can be used, levels of scripting, style sheet
+support, and so on.</p>
+
+<p>For product designers this enables various groups to define
+their own standard profile.</p>
+
+<p>For authors this will obviate the need to write several
+different versions of documents for different clients.</p>
+
+<p>For special groups such as chemists, medical doctors, or
+mathematicians this allows a special profile to be built using
+standard HTML elements plus a group of elements geared to the
+specialist's needs.</p>
+
+<!--OddPage-->
+<h1><a name="appendices" id="appendices"></a>
+<a name="dtds" id="dtds">Appendix A. DTDs</a></h1>
+
+<p><b>This appendix is normative.</b></p>
+
+<p>These DTDs and entity sets form a normative part of this
+specification. The complete set of DTD files together with an XML
+declaration and SGML Open Catalog is included in the <a href="xhtml1.zip">zip file</a> for this specification.</p>
+
+<h2><a name="h-A1" id="h-A1">A.1 Document Type
+Definitions</a></h2>
+
+<p>These DTDs approximate the HTML 4.0 DTDs. It is likely that
+when the DTDs are modularized, a method of DTD construction will
+be employed that corresponds more closely to HTML 4.0.</p>
+
+<ul>
+<li>
+<p><a href="DTD/xhtml1-strict.dtd" type="text/plain">
+XHTML-1.0-Strict</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml1-transitional.dtd" type="text/plain">
+XHTML-1.0-Transitional</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml1-frameset.dtd" type="text/plain">
+XHTML-1.0-Frameset</a></p>
+</li>
+</ul>
+
+<h2><a name="h-A2" id="h-A2">A.2 Entity Sets</a></h2>
+
+<p>The XHTML entity sets are the same as for HTML 4.0, but have
+been modified to be valid XML 1.0 entity declarations. Note the
+entity for the Euro currency sign (<code>&amp;euro;</code> or
+<code>&amp;#8364;</code> or <code>&amp;#x20AC;</code>) is defined
+as part of the special characters.</p>
+
+<ul>
+<li>
+<p><a href="DTD/xhtml-lat1.ent">Latin-1 characters</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml-special.ent">Special characters</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml-symbol.ent">Symbols</a></p>
+</li>
+</ul>
+
+<!--OddPage-->
+<h1><a name="prohibitions" id="prohibitions">Appendix B. Element
+Prohibitions</a></h1>
+
+<p><b>This appendix is normative.</b></p>
+
+<p>The following elements have prohibitions on which elements
+they can contain (see <a href="#h-4.9">Section 4.9</a>). This
+prohibition applies to all depths of nesting, i.e. it contains
+all the descendant elements.</p>
+
+<dl><dt><code class="tag">a</code></dt>
+<dd>
+cannot contain other <code>a</code> elements.</dd>
+<dt><code class="tag">pre</code></dt>
+<dd>cannot contain the <code>img</code>, <code>object</code>,
+<code>big</code>, <code>small</code>, <code>sub</code>, or <code>
+sup</code> elements.</dd>
+
+<dt><code class="tag">button</code></dt>
+<dd>cannot contain the <code>input</code>, <code>select</code>,
+<code>textarea</code>, <code>label</code>, <code>button</code>,
+<code>form</code>, <code>fieldset</code>, <code>iframe</code> or
+<code>isindex</code> elements.</dd>
+<dt><code class="tag">label</code></dt>
+<dd>cannot contain other <code class="tag">label</code> elements.</dd>
+<dt><code class="tag">form</code></dt>
+<dd>cannot contain other <code>form</code> elements.</dd>
+</dl>
+
+<!--OddPage-->
+<h1><a name="guidelines" id="guidelines">Appendix C.
+HTML Compatibility Guidelines</a></h1>
+
+<p><b>This appendix is informative.</b></p>
+
+<p>This appendix summarizes design guidelines for authors who
+wish their XHTML documents to render on existing HTML user
+agents.</p>
+
+<h2>C.1 Processing Instructions</h2>
+<p>Be aware that processing instructions are rendered on some
+user agents. However, also note that when the XML declaration is not included
+in a document, the document can only use the default character encodings UTF-8
+or UTF-16.</p>
+
+<h2>C.2 Empty Elements</h2>
+<p>Include a space before the trailing <code>/</code> and <code>
+&gt;</code> of empty elements, e.g. <code class="greenmono">
+&lt;br&#xA0;/&gt;</code>, <code class="greenmono">
+&lt;hr&#xA0;/&gt;</code> and <code class="greenmono">&lt;img
+src="karen.jpg" alt="Karen"&#xA0;/&gt;</code>. Also, use the
+minimized tag syntax for empty elements, e.g. <code class="greenmono">&lt;br /&gt;</code>, as the alternative syntax <code class="greenmono">&lt;br&gt;&lt;/br&gt;</code> allowed by XML
+gives uncertain results in many existing user agents.</p>
+
+<h2>C.3 Element Minimization and Empty Element Content</h2>
+<p>Given an empty instance of an element whose content model is
+not <code>EMPTY</code> (for example, an empty title or paragraph)
+do not use the minimized form (e.g. use <code class="greenmono">
+&lt;p&gt; &lt;/p&gt;</code> and not <code class="greenmono">
+&lt;p&#xA0;/&gt;</code>).</p>
+
+<h2>C.4 Embedded Style Sheets and Scripts</h2>
+<p>Use external style sheets if your style sheet uses <code>
+&lt;</code> or <code>&amp;</code> or <code>]]&gt;</code> or <code>--</code>. Use
+external scripts if your script uses <code>&lt;</code> or <code>
+&amp;</code> or <code>]]&gt;</code> or <code>--</code>. Note that XML parsers
+are permitted to silently remove the contents of comments. Therefore, the historical
+practice of "hiding" scripts and style sheets within comments to make the
+documents backward compatible is likely to not work as expected in XML-based
+implementations.</p>
+
+<h2>C.5 Line Breaks within Attribute Values</h2>
+<p>Avoid line breaks and multiple whitespace characters within
+attribute values. These are handled inconsistently by user
+agents.</p>
+
+<h2>C.6 Isindex</h2>
+<p>Don't include more than one <code>isindex</code> element in
+the document <code>head</code>. The <code>isindex</code> element
+is deprecated in favor of the <code>input</code> element.</p>
+
+<h2>C.7 The <code>lang</code> and <code>xml:lang</code> Attributes</h2>
+<p>Use both the <code>lang</code> and <code>xml:lang</code>
+attributes when specifying the language of an element. The value
+of the <code>xml:lang</code> attribute takes precedence.</p>
+
+<h2>C.8 Fragment Identifiers</h2>
+<p>In XML, <abbr title="Uniform Resource Identifiers">URIs</abbr> [<a href="#ref-rfc2396">RFC2396</a>] that end with fragment identifiers of the form
+<code>"#foo"</code> do not refer to elements with an attribute
+<code>name="foo"</code>; rather, they refer to elements with an
+attribute defined to be of type <code>ID</code>, e.g., the <code>
+id</code> attribute in HTML 4.0. Many existing HTML clients don't
+support the use of <code>ID</code>-type attributes in this way,
+so identical values may be supplied for both of these attributes to ensure
+maximum forward and backward compatibility (e.g., <code class="greenmono">&lt;a id="foo" name="foo"&gt;...&lt;/a&gt;</code>).</p>
+
+<p>Further, since the set of
+legal values for attributes of type <code>ID</code> is much smaller than
+for those of type <code>CDATA</code>, the type of the <code>name</code>
+attribute has been changed to <code>NMTOKEN</code>. This attribute is
+constrained such that it can only have the same values as type
+<code>ID</code>, or as the <code>Name</code> production in XML 1.0 Section
+2.5, production 5. Unfortunately, this constraint cannot be expressed in the
+XHTML 1.0 DTDs. Because of this change, care must be taken when
+converting existing HTML documents. The values of these attributes
+must be unique within the document, valid, and any references to these
+fragment identifiers (both
+internal and external) must be updated should the values be changed during
+conversion.</p>
+<p>Finally, note that XHTML 1.0 has deprecated the
+<code>name</code> attribute of the <code>a</code>, <code>applet</code>, <code>frame</code>, <code>iframe</code>, <code>img</code>, and <code>map</code>
+elements, and it will be
+removed from XHTML in subsequent versions.</p>
+
+<h2>C.9 Character Encoding</h2>
+<p>To specify a character encoding in the document, use both the
+encoding attribute specification on the xml declaration (e.g.
+<code class="greenmono">&lt;?xml version="1.0"
+encoding="EUC-JP"?&gt;</code>) and a meta http-equiv statement
+(e.g. <code class="greenmono">&lt;meta http-equiv="Content-type"
+content='text/html; charset="EUC-JP"'&#xA0;/&gt;</code>). The
+value of the encoding attribute of the xml processing instruction
+takes precedence.</p>
+
+<h2>C.10 Boolean Attributes</h2>
+<p>Some HTML user agents are unable to interpret boolean
+attributes when these appear in their full (non-minimized) form,
+as required by XML 1.0. Note this problem doesn't effect user
+agents compliant with HTML 4.0. The following attributes are
+involved: <code>compact</code>, <code>nowrap</code>, <code>
+ismap</code>, <code>declare</code>, <code>noshade</code>, <code>
+checked</code>, <code>disabled</code>, <code>readonly</code>,
+<code>multiple</code>, <code>selected</code>, <code>
+noresize</code>, <code>defer</code>.</p>
+
+<h2>C.11 Document Object Model and XHTML</h2>
+<p>
+The Document Object Model level 1 Recommendation [<a href="#ref-dom">DOM</a>]
+defines document object model interfaces for XML and HTML 4.0. The HTML 4.0
+document object model specifies that HTML element and attribute names are
+returned in upper-case. The XML document object model specifies that
+element and attribute names are returned in the case they are specified. In
+XHTML 1.0, elements and attributes are specified in lower-case. This apparent difference can be
+addressed in two ways:
+</p>
+<ol>
+<li>Applications that access XHTML documents served as Internet media type
+<code>text/html</code>
+via the <abbr title="Document Object Model">DOM</abbr> can use the HTML DOM,
+and can rely upon element and attribute names being returned in
+upper-case from those interfaces.</li>
+<li>Applications that access XHTML documents served as Internet media types
+<code>text/xml</code> or <code>application/xml</code>
+can also use the XML DOM. Elements and attributes will be returned in lower-case.
+Also, some XHTML elements may or may
+not appear
+in the object tree because they are optional in the content model
+(e.g. the <code>tbody</code> element within
+<code>table</code>). This occurs because in HTML 4.0 some elements were
+permitted to be minimized such that their start and end tags are both omitted
+(an SGML feature).
+This is not possible in XML. Rather than require document authors to insert
+extraneous elements, XHTML has made the elements optional.
+Applications need to adapt to this
+accordingly.</li>
+</ol>
+
+<h2>C.12 Using Ampersands in Attribute Values</h2>
+<p>
+When an attribute value contains an ampersand, it must be expressed as a character
+entity reference
+(e.g. "<code>&amp;amp;</code>"). For example, when the
+<code>href</code> attribute
+of the <code>a</code> element refers to a
+CGI script that takes parameters, it must be expressed as
+<code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;amp;name=user</code>
+rather than as
+<code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user</code>.
+</p>
+
+<h2>C.13 Cascading Style Sheets (CSS) and XHTML</h2>
+
+<p>The Cascading Style Sheets level 2 Recommendation [<a href="#ref-css2">CSS2</a>] defines style
+properties which are applied to the parse tree of the HTML or XML
+document. Differences in parsing will produce different visual or
+aural results, depending on the selectors used. The following hints
+will reduce this effect for documents which are served without
+modification as both media types:</p>
+
+<ol>
+<li>
+CSS style sheets for XHTML should use lower case element and
+attribute names.</li>
+
+
+<li>In tables, the tbody element will be inferred by the parser of an
+HTML user agent, but not by the parser of an XML user agent. Therefore
+you should always explicitely add a tbody element if it is referred to
+in a CSS selector.</li>
+
+<li>Within the XHTML name space, user agents are expected to
+recognize the "id" attribute as an attribute of type ID.
+Therefore, style sheets should be able to continue using the
+shorthand "#" selector syntax even if the user agent does not read
+the DTD.</li>
+
+<li>Within the XHTML name space, user agents are expected to
+recognize the "class" attribute. Therefore, style sheets should be
+able to continue using the shorthand "." selector syntax.</li>
+
+<li>
+CSS defines different conformance rules for HTML and XML documents;
+be aware that the HTML rules apply to XHTML documents delivered as
+HTML and the XML rules apply to XHTML documents delivered as XML.</li>
+</ol>
+<!--OddPage-->
+<h1><a name="acks" id="acks">Appendix D.
+Acknowledgements</a></h1>
+
+<p><b>This appendix is informative.</b></p>
+
+<p>This specification was written with the participation of the
+members of the W3C HTML working group:</p>
+
+<dl>
+<dd>Steven Pemberton, CWI (HTML Working Group Chair)<br />
+Murray Altheim, Sun Microsystems<br />
+Daniel Austin, CNET: The Computer Network<br />
+Frank Boumphrey, HTML Writers Guild<br />
+John Burger, Mitre<br />
+Andrew W. Donoho, IBM<br />
+Sam Dooley, IBM<br />
+Klaus Hofrichter, GMD<br />
+Philipp Hoschka, W3C<br />
+Masayasu Ishikawa, W3C<br />
+Warner ten Kate, Philips Electronics<br />
+Peter King, Phone.com<br />
+Paula Klante, JetForm<br />
+Shin'ichi Matsui, W3C/Panasonic<br />
+Shane McCarron, Applied Testing and Technology (The Open Group through August
+1999)<br />
+Ann Navarro, HTML Writers Guild<br />
+Zach Nies, Quark<br />
+Dave Raggett, W3C/HP (W3C lead for HTML)<br />
+Patrick Schmitz, Microsoft<br />
+Sebastian Schnitzenbaumer, Stack Overflow<br />
+Chris Wilson, Microsoft<br />
+Ted Wugofski, Gateway 2000<br />
+Dan Zigmond, WebTV Networks</dd>
+</dl>
+
+<!--OddPage-->
+<h1><a name="refs" id="refs">Appendix E. References</a></h1>
+
+<p><b>This appendix is informative.</b></p>
+
+<dl>
+
+<dt><a name="ref-css2" id="ref-css2"><b>[CSS2]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-CSS2">"Cascading Style Sheets, level 2 (CSS2) Specification"</a>, B.
+Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.<br />
+Available at: <a href="http://www.w3.org/TR/REC-CSS2">
+http://www.w3.org/TR/REC-CSS2</a></dd>
+
+<dt><a name="ref-dom" id="ref-dom"><b>[DOM]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-DOM-Level-1">"Document Object Model (DOM) Level 1 Specification"</a>, Lauren
+Wood <i>et al.</i>, 1 October 1998.<br />
+Available at: <a href="http://www.w3.org/TR/REC-DOM-Level-1">
+http://www.w3.org/TR/REC-DOM-Level-1</a></dd>
+
+<dt><a name="ref-html4" id="ref-html4"><b>[HTML]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/1999/PR-html40-19990824">"HTML 4.01 Specification"</a>, D. Raggett, A. Le&#xA0;Hors, I.
+Jacobs, 24 August 1999.<br />
+Available at: <a href="http://www.w3.org/TR/1999/PR-html40-19990824">
+http://www.w3.org/TR/1999/PR-html40-19990824</a></dd>
+
+<dt><a name="ref-posix" id="ref-posix"><b>[POSIX.1]</b></a></dt>
+
+<dd>"ISO/IEC 9945-1:1990 Information Technology - Portable
+Operating System Interface (POSIX) - Part 1: System Application
+Program Interface (API) [C Language]", Institute of Electrical
+and Electronics Engineers, Inc, 1990.</dd>
+
+<dt><a name="ref-rfc2046" id="ref-rfc2046"><b>
+[RFC2046]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2046.txt">"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part
+Two: Media Types"</a>, N. Freed and N. Borenstein, November
+1996.<br />
+Available at <a href="http://www.ietf.org/rfc/rfc2046.txt">
+http://www.ietf.org/rfc/rfc2046.txt</a>. Note that this RFC
+obsoletes RFC1521, RFC1522, and RFC1590.</dd>
+
+<dt><a name="ref-rfc2119" id="ref-rfc2119"><b>
+[RFC2119]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2119.txt">"RFC2119: Key words for use in RFCs to Indicate Requirement
+Levels"</a>, S. Bradner, March 1997.<br />
+Available at: <a href="http://www.ietf.org/rfc/rfc2119.txt">
+http://www.ietf.org/rfc/rfc2119.txt</a></dd>
+
+<dt><a name="ref-rfc2376" id="ref-rfc2376"><b>
+[RFC2376]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2376.txt">"RFC2376: XML Media Types"</a>, E. Whitehead, M. Murata, July
+1998.<br />
+Available at: <a href="http://www.ietf.org/rfc/rfc2376.txt">
+http://www.ietf.org/rfc/rfc2376.txt</a></dd>
+
+<dt><a name="ref-rfc2396" id="ref-rfc2396"><b>
+[RFC2396]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2396.txt">"RFC2396: Uniform Resource Identifiers (URI): Generic
+Syntax"</a>, T. Berners-Lee, R. Fielding, L. Masinter, August
+1998.<br />
+This document updates RFC1738 and RFC1808.<br />
+Available at: <a href="http://www.ietf.org/rfc/rfc2396.txt">
+http://www.ietf.org/rfc/rfc2396.txt</a></dd>
+
+<dt><a name="ref-xml" id="ref-xml"><b>[XML]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-xml">"Extensible Markup Language (XML) 1.0 Specification"</a>, T.
+Bray, J. Paoli, C. M. Sperberg-McQueen, 10 February 1998.<br />
+Available at: <a href="http://www.w3.org/TR/REC-xml">
+http://www.w3.org/TR/REC-xml</a></dd>
+
+<dt><a name="ref-xmlns" id="ref-xmlns"><b>[XMLNAMES]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-xml-names">"Namespaces in XML"</a>, T. Bray, D. Hollander, A. Layman, 14
+January 1999.<br />
+XML namespaces provide a simple method for qualifying names used
+in XML documents by associating them with namespaces identified
+by URI.<br />
+Available at: <a href="http://www.w3.org/TR/REC-xml-names">
+http://www.w3.org/TR/REC-xml-names</a></dd>
+
+</dl>
+<p><a href="http://www.w3.org/WAI/WCAG1AAA-Conformance" title="Explanation of Level Triple-A Conformance">
+<img height="32" width="88" src="wcag1AAA.gif" alt="Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /></a></p>
+<div class="navbar">
+ <hr />
+ <a href="#toc">table of contents</a>
+</div>
+</body>
+</html>
diff --git a/result/valid/xhtml1.xhtml.err b/result/valid/xhtml1.xhtml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/xhtml1.xhtml.err
diff --git a/result/valid/xhtml1.xhtml.err.rdr b/result/valid/xhtml1.xhtml.err.rdr
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/valid/xhtml1.xhtml.err.rdr
diff --git a/result/valid/xlink.xml b/result/valid/xlink.xml
new file mode 100644
index 0000000..7b35a0f
--- /dev/null
+++ b/result/valid/xlink.xml
@@ -0,0 +1,525 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification::19990205//EN" "dtds/xmlspec.dtd" [
+<!ENTITY doc-type "WD">
+<!ENTITY iso6.doc.date "29-May-1999">
+]>
+<!--ArborText, Inc., 1988-1998, v.4002-->
+<?Pub UDT _bookmark _target?>
+<?Pub Inc?>
+<?xml-stylesheet href="file:///C|/Program%20Files/SoftQuad/XMetaL%201/display/xmlspec.css"
+type="text/css"?>
+<spec>
+
+<!-- Last edited: 27 May 1999 by bent -->
+<header><?Pub Dtl?>
+ <title>XML Linking Language (XLink)</title>
+ <version>Version 1.0</version>
+ <w3c-designation><!-- &doc-type;-&iso6.doc.date; --> WD-xlink-19990527</w3c-designation>
+ <w3c-doctype>World Wide Web Consortium Working Draft</w3c-doctype>
+ <pubdate><day>29</day><month>May</month><year>1999</year></pubdate>
+ <notice>
+ <p>This draft is for public discussion.</p>
+ </notice>
+ <publoc><loc href="http://www.w3.org/XML/Group/1999/05/WD-xlink-current">http://www.w3.org/XML/Group/1999/05/WD-xlink-current</loc></publoc>
+ <prevlocs>
+ <!--Check: was it actually August?-->
+ <loc href="http://www.w3.org/XML/Group/1999/05/WD-xlink-19990527">http://www.w3.org/XML/Group/1999/05/WD-xlink-19990527</loc>
+ <loc href="http://www.w3.org/XML/Group/1999/05/WD-xlink-19990505">http://www.w3.org/XML/Group/1999/05/WD-xlink-19990505</loc>
+ <loc href="http://www.w3.org/TR/1998/WD-xlink-19980303">http://www.w3.org/TR/1998/WD-xlink-19980303</loc>
+ <loc href="http://www.w3.org/TR/WD-xml-link-970630">http://www.w3.org/TR/WD-xml-link-970630</loc></prevlocs>
+
+ <authlist>
+ <!--Updated author hrefs dorchard-->
+ <!-- Update Steve's email - bent -->
+ <author>
+ <name>Steve DeRose</name>
+ <affiliation>Inso Corp. and Brown University</affiliation>
+ <email href="mailto:Steven_DeRose@Brown.edu">Steven_DeRose@Brown.edu</email>
+ </author>
+ <author>
+ <name>David Orchard</name>
+ <affiliation>IBM Corp.</affiliation>
+ <email href="mailto:dorchard@ca.ibm.com">dorchard@ca.ibm.com</email>
+ </author>
+ <author>
+ <name>Ben Trafford</name>
+ <affiliation>Invited Expert</affiliation>
+ <email href="mailto:bent@exemplary.net">bent@exemplary.net</email>
+ </author>
+ <!-- I suggest we move Eve and Tim down to the Acknowledgements section. We
+ also ought to add Gabe Beged-Dov there, as well. bent
+ how shall we cite Tim? sjd What about with an Acknowledgments section?
+ -elm <AUTHOR> <NAME>Tim Bray</NAME> <AFFILIATION>Textuality</AFFILIATION>
+ <EMAIL>tbray@textuality.com</EMAIL> </AUTHOR>-->
+ </authlist>
+
+ <status>
+ <p>This is a W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". A list of current W3C working drafts can be found at <loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</p>
+ <p><emph>Note:</emph> Since working drafts are subject to frequent change, you are advised to reference the above URI, rather than the URIs for working drafts themselves. Some of the work remaining is described in <specref ref="unfinished"/>. </p>
+ <p>This work is part of the W3C XML Activity (for current status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity">http://www.w3.org/XML/Activity </loc>). For information about the XPointer language which is expected to be used with XLink, see <loc href="http://www.w3.org/MarkUp/SGML/Activity">http://www.w3.org/TR/WD-xptr</loc>.
+ </p>
+ <p>See <loc href="http://www.w3.org/TR/NOTE-xlink-principles">http://www.w3.org/TR/NOTE-xlink-principles </loc> for additional background on the design principles informing XLink.</p>
+ <p>Also see <loc href="http://www.w3.org/TR/NOTE-xlink-req/">http://www.w3.org/TR/NOTE-xlink-req/</loc> for the XLink requirements that this document attempts to satisfy.</p>
+ </status>
+
+ <abstract>
+ <!-- edited the abstract for further clarity - bent -->
+ <p>This specification defines constructs that may be inserted into XML DTDs, schemas and document instances to describe links between objects. It uses XML syntax to create structures that can describe the simple unidirectional hyperlinks of today's HTML as well as more sophisticated links.</p>
+ </abstract>
+
+ <pubstmt>
+ <p>Burlington, Seekonk, et al.: World-Wide Web Consortium, XML Working Group, 1998.</p>
+ </pubstmt>
+
+ <sourcedesc>
+ <p>Created in electronic form.</p>
+ </sourcedesc>
+
+ <langusage>
+ <language id="en">English</language>
+ <language id="ebnf">Extended Backus-Naur Form (formal grammar)</language>
+ </langusage>
+
+ <revisiondesc>
+ <slist>
+ <sitem>1997-01-15 : Skeleton draft by TB</sitem>
+ <sitem>1997-01-24 : Fleshed out by sjd</sitem>
+ <sitem>1997-04-08 : Substantive draft</sitem>
+ <sitem>1997-06-30 : Public draft</sitem>
+ <sitem>1997-08-01 : Public draft</sitem>
+ <sitem>1997-08-05 : Prose/organization work by sjd</sitem>
+ <sitem>1997-10-14: Conformance and design principles; a bit of cleanup by elm</sitem>
+ <sitem>1997-11-07: Update for editorial issues per issues doc, by sjd.</sitem>
+ <sitem>1997-12-01: Update for editorial issues per issues doc in preparation for F2F meeting, by sjd.</sitem>
+ <sitem>1998-01-13: Editorial cleanup, addition of new design principles, by elm.</sitem>
+ <sitem>1998-02-27: Splitting out of XLink and XPointer, by elm.</sitem>
+ <sitem>1998-03-03: Moved most of the XPointer locator stuff here. elm</sitem>
+ <sitem>1999-04-24: Editorial rewrites to represent new ideas on XLink, especially the inclusion of arcs. bent</sitem>
+ <sitem>1999-05-05: Prose/organization work by dorchard. Moved much of the semantics section around, from: locators, link semantics, remote resource semantics, local resource semantics; to: resource semantics, locators, behavior semantics, link semantics, arc semantics</sitem>
+ <sitem>1999-05-12: Prose/organization work. Re-organized some of the sections, removed XML constructs from the document, added descriptive prose, edited document text for clarity. Rewrote the link recognition section. bent</sitem>
+ <sitem>1999-05-17: Further prose work. Added non-normative examples. Clarified arcs. bent</sitem>
+ <sitem>1999-05-23: Edited for grammar and clarity. bent</sitem>
+ <sitem>1999-05-27: Final once-over before sending to group. Fixed sjd's email address. bent</sitem>
+ </slist>
+ </revisiondesc>
+</header>
+
+<body>
+ <div1><?Pub Dtl?>
+ <head>Introduction</head>
+ <p>This specification defines constructs that may be inserted into XML DTDs, schemas, and document instances to describe links between objects. A <termref def="dt-link">link</termref>, as the term is used here, is an explicit relationship between two or more data objects or portions of data objects. This specification is concerned with the syntax used to assert link existence and describe link characteristics. Implicit (unasserted) relationships, for example that of one word to the next or that of a word in a text to its entry in an on-line dictionary are obviously important, but outside its scope.</p>
+ <p>Links are asserted by <xtermref href="WD-xml-lang.html#dt-element">elements </xtermref> contained in <xtermref href="WD-xml-lang.html#dt-xml-doc">XML document instances</xtermref>. The simplest case is very like an HTML <code>A</code> link, and has these characteristics:
+ <ulist>
+ <item><p>The link is expressed at one of its ends (similar to the <code>A</code> element in some document)</p></item>
+ <item><p>Users can only initiate travel from that end to the other</p></item>
+ <item><p>The link's effect on windows, frames, go-back lists, stylesheets in use, and so on is mainly determined by browsers, not by the link itself. For example, traveral of <code>A</code> links normally replaces the current view, perhaps with a user option to open a new window.</p></item>
+ <item><p>The link goes to only one destination (although a server may have great freedom in finding or dynamically creating that destination).</p></item>
+ </ulist>
+ </p>
+ <p>While this set of characteristics is already very powerful and obviously has proven itself highly useful and effective, each of these assumptions also limits the range of hypertext functionality. The linking model defined here provides ways to create links that go beyond each of these specific characteristics, thus providing features previously available mostly in dedicated hypermedia systems.
+ </p>
+
+<div2>
+ <head>Origin and Goals</head>
+ <p>Following is a summary of the design principles governing XLink:
+ <olist>
+ <item><p>XLink must be straightforwardly usable over the Internet. </p></item>
+ <item><p>XLink must be usable by a wide variety of link usage domains and classes of linking application software.</p></item>
+ <item><p>XLink must support HTML 4.0 linking constructs.</p></item>
+ <item><p>The XLink expression language must be XML.</p></item>
+ <item><p>The XLink design must be formal, concise, and illustrative.</p></item>
+ <item><p>XLinks must be human-readable and human-writable.</p></item>
+ <item><p>XLinks may reside within or outside the documents in which the
+ participating resources reside. </p></item>
+ <item><p>XLink must represent the abstract structure and significance of links.</p></item>
+ <item><p>XLink must be feasible to implement.</p></item>
+ <item><p>XLink must be informed by knowledge of established hypermedia systems and standards.</p></item>
+ </olist>
+ </p>
+</div2>
+<!--Changed the list of requirements to reflect current XLink requirements
+document. bent-->
+
+<div2>
+ <head>Relationship to Existing Standards</head>
+ <p>Three standards have been especially influential:
+ <ulist>
+ <item><p><emph>HTML:</emph> Defines several SGML element types that represent links.</p></item>
+ <item><p><emph>HyTime:</emph> Defines inline and out-of-line link structures and some semantic features, including traversal control and presentation of objects. <!--Changed from "placement of objects into a display or other space" -elm-->
+ </p></item>
+ <item><p><emph>Text Encoding Initiative Guidelines (TEI P3):</emph> Provides structures for creating links, aggregate objects, and link collections out of them.</p></item>
+ </ulist>
+ </p>
+ <p>Many other linking systems have also informed this design, especially Dexter, FRESS, MicroCosm, and InterMedia.</p>
+</div2>
+
+<div2>
+ <head>Terminology</head>
+ <p>The following basic terms apply in this document. <!--<IMG
+ SRC="local://./linkdiag.gif">(figure to be inserted)-->
+ <glist>
+ <gitem>
+ <label><termdef id="dt-arc" term="Arc">arc</termdef></label>
+ <def><p>A symbolic representation of traversal behavior in links, especially the direction, context and timing of traversal.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-eltree" term="Element Tree">element tree</termdef></label>
+ <def><p>A representation of the relevant structure specified by the tags and attributes in an XML document, based on "groves" as defined in the ISO DSSSL standard. </p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-inline" term="In-Line Link">inline link</termdef></label>
+ <def><p>Abstractly, a <termref def="dt-link">link</termref> which serves as one of its own <termref def="dt-resource">resources</termref>. Concretely, a link where the content of the <termref def="dt-linkel">linking element</termref> serves as a <termref def="dt-particip-resource">participating resource</termref>.
+ HTML <code>A</code>, HyTime <code>clink</code>, and TEI <code>XREF</code>
+ are all inline links.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-link" term="Link">link</termdef></label>
+ <def><p>An explicit relationship between two or more data objects or portions of data objects.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-linkel" term="Linking Element">linking element </termdef></label>
+ <def><p>An <xtermref href="WD-xml-lang.html#dt-element">element</xtermref> that asserts the existence and describes the characteristics of a <termref def="dt-link"> link</termref>.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-local-resource" term="Local Resource">local resource</termdef></label>
+ <def><p>The content of an <termref def="dt-inline">inline</termref>linking element. Note that the content of the linking element could be explicitly pointed to by means of a regular <termref def="dt-locator">locator</termref> in the same linking element, in which case the resource is considered <termref def="dt-remote-resource"> remote</termref>, not local.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-locator" term="Locator">locator</termdef> </label>
+ <def><p>Data, provided as part of a link, which identifies a
+ <termref def="dt-resource">resource</termref>.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-multidir" term="Multi-Directional Link">multidirectional link</termdef></label>
+ <def><p>A <termref def="dt-link">link</termref> whose <termref def="dt-traversal"> traversal</termref> can be initiated from more than one of its <termref def="dt-particip-resource"> participating resources</termref>. Note that being able to "go back" after following a one-directional link does not make the link multidirectional.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-outofline" term="Out-of-line Link">out-of-line link</termdef></label>
+ <def><p>A <termref def="dt-link">link</termref> whose content does not serve as one of the link's <termref def="dt-particip-resource">participating resources </termref>. Such links presuppose a notion like <termref def="dt-xlg">extended link groups</termref>, which instruct application software where to look for links. Out-of-line links are generally required for supporting multidirectional <termref def="dt-traversal">traversal</termref> and for allowing read-only resources to have outgoing links.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-parsedq" term="Parsed">parsed</termdef></label> <def><p>In the context of link behavior, a parsed link is any link whose content is transcluded into the document where the link originated. The use of the term "parsed" directly refers to the concept in XML of a
+ parsed entity.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-particip-resource" term="Participating Resource"> participating resource</termdef></label>
+ <def><p>A <termref def="dt-resource">resource</termref> that belongs to a link. All resources are potential contributors to a link; participating resources are the actual contributors to a particular link.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-remote-resource" term="Remote Resource">remote resource</termdef></label>
+ <def><p>Any participating resource of a link that is pointed to with a locator. </p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-resource" term="Resource">resource</termdef></label>
+ <def><p>In the abstract sense, an addressable unit of information or service that is participating in a <termref def="dt-link">link</termref>. Examples include files, images, documents, programs, and query results. Concretely, anything reachable by the use of a <termref def="dt-locator">locator</termref> in some <termref def="dt-linkel">linking element</termref>. Note that this term and its definition are taken from the basic specifications governing the World Wide Web. <!--Joel notes: need link here. bent asks: A link?-->
+ </p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-subresource" term="sub-Resource">sub-resource</termdef></label>
+ <def><p>A portion of a resource, pointed to as the precise destination of a link. As one example, a link might specify that an entire document be retrieved and displayed, but that some specific part(s) of it is the specific linked data, to be treated in an application-appropriate manner such as indication by highlighting, scrolling, etc.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-traversal" term="Traversal">traversal</termdef></label>
+ <def><p>The action of using a <termref def="dt-link">link</termref>; that is, of accessing a <termref def="dt-resource">resource</termref>. Traversal may be initiated by a user action (for example, clicking on the displayed content of a <termref def="dt-linkel">linking element</termref>) or occur under program control.</p></def>
+ </gitem>
+ </glist>
+ </p>
+</div2>
+
+<div2>
+ <head>Notation</head>
+ <p>The formal grammar for <termref def="dt-locator">locators</termref> is given using a simple Extended Backus-Naur Form (EBNF) location, as described in <xspecref href="http://www.w3.org/TR/REC-xml#sec-notation">the XML specification</xspecref>.</p>
+ <!-- fixed link to XML spec - bent -->
+</div2>
+</div1>
+
+<div1 id="addressing"><?Pub Dtl?>
+ <head>Locator Syntax</head>
+ <p>The locator for a <termref def="dt-resource">resource</termref> is typically provided by means of a Uniform Resource Identifier, or URI. XPointers can be used in conjunction with the URI structure, as fragment identifiers, to specify a more precise sub-resource. </p>
+ <!-- Removed the discussion of queries from the previous paragraph, due to contention within the WG. bent -->
+ <p>A locator generally contains a URI, as described in IETF RFCs <bibref ref="rfc1738"/> and <bibref ref="rfc1808"/>. As these RFCs state, the URI may include a trailing <emph>query</emph> (marked by a leading "<code>?</code>"), and be followed by a "<code>#</code>" and a <emph>fragment identifier</emph>, with the query interpreted by the host providing the indicated resource, and the interpretation of the fragment identifier dependent on the data type of the indicated resource.</p>
+ <!--Is there some restriction on URNs having queries and/or fragment identifiers? Since these RFCs don't mention URIs explicitly, should the wording here lead from URLs to URIs more explicitly? -elm-->
+ <p>In order to locate XML documents and portions of documents, a locator value may contain either a <xtermref href="http://www.w3.org/Addressing/rfc1738.txt"> URI</xtermref> or a fragment identifier, or both. Any fragment identifier for pointing into XML must be an <xtermref href="http://www.w3.org/TR/WD-xptr#dt-xpointer"> XPointer</xtermref>.</p>
+ <p>Special syntax may be used to request the use of particular processing models in accessing the locator's resource. This is designed to reflect the realities of network operation, where it may or may not be desirable to exercise fine control over the distribution of work between local and remote processors.
+ <scrap id="locator" lang="ebnf">
+ <head>Locator</head>
+ <prod id="nt-locator">
+ <lhs>Locator</lhs>
+ <rhs><nt def="nt-uri">URI</nt></rhs>
+ <rhs>| <nt def="nt-connector">Connector</nt> (<xnt href="http://www.w3.org/TR/WD-xptr">XPointer</xnt> | <xnt href="WD-xml-lang.html#NT-Name">Name</xnt>)</rhs>
+ <rhs>| <nt def="nt-uri">URI</nt> <nt def="nt-connector">Connector</nt> (<xnt href="http://www.w3.org/TR/WD-xptr">XPointer</xnt> | <xnt href="WD-xml-lang.html#NT-Name">Name</xnt>)</rhs>
+ </prod>
+ <prod id="nt-connector">
+ <lhs>Connector</lhs><rhs>'#' | '|'</rhs>
+ </prod>
+ <prod id="nt-uri">
+ <lhs>URI</lhs><rhs><xnt href="WD-xml-lang.html#NT-URLchar">URIchar*</xnt></rhs>
+ </prod>
+ </scrap>
+ </p>
+ <p><termdef id="dt-designated" term="Designated Resource">In this discussion, the term <term>designated resource</term> refers to the resource which an entire locator serves to locate.</termdef> The following rules apply:
+ <ulist>
+ <item>
+ <p><termdef id="dt-containing-resource" term="Containing Resource"> The URI, if provided, locates a resource called the <term>containing resource</term>.</termdef></p>
+ </item>
+ <item>
+ <p>If the URI is not provided, the containing resource is considered to be the document in which the linking element is contained.
+ </p></item>
+ <item>
+ <p><termdef id="dt-sub-resource" term="Sub-Resource">If an XPointer is provided, the designated resource is a <term>sub-resource</term>
+ of the containing resource; otherwise the designated resource is the
+ containing resource.</termdef></p>
+ </item>
+ <!--Is this now incorrect, given the nature of the switch from here() to origin()? -elm
+ Oy, yes, i think so. it will require some fun wording, though, so i haven't fixed it yet here -sjd-->
+ <item>
+ <p>If the <nt def="nt-connector">Connector</nt> is followed directly by a <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt>, the <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt> is shorthand for the XPointer"<code>id(Name)</code>"; that is, the sub-resource is the element in the containing resource that has an XML <xtermref href="http://www.w3.org/TR/REC-xml#sec-attrtypes">ID attribute</xtermref> whose value <xtermref href="http://www.w3.org/TR/REC-xml#dt-match">matches</xtermref> the <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt>. This shorthand is to encourage use of the robust <code>id</code> addressing mode.</p>
+ </item>
+ <!-- fixed links to the XML recommendation - bent -->
+ <item>
+ <p>If the connector is "<code>#</code>", this signals an intent that the containing resource is to be fetched as a whole from the host that provides it, and that the XPointer processing to extract the sub-resource
+ is to be performed on the client, that is to say on the same system where the linking element is recognized and processed.</p>
+ </item>
+ <item>
+ <p>If the connector is "<code>|</code>", no intent is signaled as to what processing model is to be used to go about accessing the designated resource.</p>
+ </item>
+ </ulist>
+ </p>
+ <p>Note that the definition of a URI includes an optional query component. </p>
+ <p>In the case where the URI contains a query (to be interpreted by the server), information providers and authors of server software are urged to use queries as follows:
+ <scrap id="querysyntax" lang="ebnf">
+ <head>Query</head>
+ <prod id="nt-query">
+ <lhs>Query</lhs><rhs>'XML-XPTR=' (<xnt href="http://www.w3.org/TR/WD-xptr"> XPointer</xnt> | <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt>)</rhs>
+ </prod>
+ </scrap>
+ </p>
+ <!-- fixed link to XML recommendation - bent -->
+</div1>
+
+<div1><?Pub Dtl?>
+ <head>Link Recognition</head>
+ <p>The existence of a <termref def="dt-link">link</termref> is asserted by a <termref def="dt-linkel">linking element</termref>. Linking elements must be recognized reliably by application software in order to provide appropriate display and behavior. There are several ways link recognition could be accomplished: for example, reserving element type names, reserving attributes names, leaving the matter of recognition entirely up to stylesheets and application software, or using the XLink <xtermref href="http://www.w3.org/TR/REC-xml-names/">namespace</xtermref> to specify element names and attribute names that would be recognized by namespace and XLink-aware processors. Using element and attribute names within the XLink namespace provides a balance between giving users control of their own markup language design and keeping the identification of linking elements simple and unambiguous.</p>
+ <p>The two approaches to identifying linking elements are relatively simple to implement. For example, here's how the HTML <code>A</code> element would be declared using attributes within the XLink namespace, and then how an element within the XLink namespace might do the same:
+ <eg>&lt;A xlink:type="simple" xlink:href="http://www.w3.org/TR/wd-xlink/"
+xlink:title="The Xlink Working Draft"&gt;The XLink Working Draft.&lt;/A&gt;</eg>
+ <eg>&lt;xlink:simple href="http://www.w3.org/TR/wd-xlink/"
+title="The XLink Working Draft"&gt;The XLink Working Draft&lt;/xlink:simple&gt;</eg>
+ Any arbitrary element can be made into an XLink by using the <code>xlink:type</code> attribute. And, of course, the explicit XLink elements may be used, as well. This document will go on to describe the linking attributes that are associated with linking elements. It may be assumed by the reader that these attributes would require the <code>xlink</code> namespace prefix if they existed within an arbitrary element, or that they may be used directly if they exist within an explicit Xlink element.</p>
+ <!-- heavily modified this section to accomodate namespace-aware link recognition - bent -->
+</div1>
+
+<!-- Rewrote this entire section. - bent -->
+<div1>
+ <head>Linking Attributes</head>
+ <p>XLink has several attributes associated with the variety of links it may represent. These attributes define four main concepts: locators, arcs, behaviors, and semantics. <emph>Locators</emph> define where the actual resource is located. <emph>Arcs</emph> define the traversal of links. Where does the link come from? Where does it go to? All this information can be stored in the arc attributes. <emph>Behaviors</emph> define how the link is activated, and what the application should do with the resource being linked to. <emph>Semantics</emph> define useful information that the application may use, and enables the link for such specalized targets as constricted devices and accessibility software.</p>
+
+ <div2 id="link-locators">
+ <head>Locator Attributes</head>
+ <p>The only locator attribute at this time is <code>href</code>. This attribute must contain either a string in the form of a URI that defines the remote resource being linked to, a string containing a fragment identifier that links to a local resource, or a string containing a URI with a fragment identifier concacenated onto it.</p>
+ </div2>
+
+ <div2 id="link-arcs">
+ <head>Arc Attributes</head>
+ <p>Arcs contain two attributes, <code>from</code> and <code>to</code>. The <code>from</code> attribute may contain a string containing the content of a <code>role</code> attribute from the resource being linked from. The purpose of the <code>from</code> attribute is to define where this link is being actuated from.</p>
+ <p>The <code>to</code> attribute may contain a string containing the content of a <code>role</code> attribute from the resource being linked to. The purpose of the <code>to</code> attribute is to define where this link traverses to.</p>
+ <p>The application may use this information in a number of ways, especially in a complex hypertext system, but it is mainly useful in providing context for application behavior.</p>
+ <!-- I'm at a loss as to how to describe arcs more clearly than this. I don't want to devolve into discussions of directed graphs and n-ary links. -bent -->
+ </div2>
+
+ <div2 id="link-behaviors">
+ <head>Behavior Attributes</head>
+ <p>There are two attributes associated with behavior: <code>show</code> and <code>actuate</code>. The <code>show</code> attribute defines how the remote resource is to be revealed to the user. It has three options: <code>new</code>, <code>parsed</code>, and <code>replace</code>. The <code>new</code> option indicates that the remote resource should be shown in a new window (or other device context) without replacing the previous content. The <code>parsed</code> option, relating directly to the XML concept of a parsed entity, indicates that the content should be integrated into the document from which the link was actuated. The <code>replace</code> option is the one most commonly seen on the World Wide Web, where the document being linked from is entirely replaced by the object being linked to.</p>
+ <p>The <code>actuate</code> attribute defines how the link is initiated. It has two options: <code>user</code> and <code>auto</code>. The <code>user</code> option indicates that the link must be initiated by some sort of human-initiated selection, such as clicking on an HTML anchor. The <code>auto</code> option indicates that the link is automatically initiated when the application deems that the user has reached the link. It then follows the behavior set out in the <code>show</code> option.</p>
+ <!-- Something should be put here in terms of an example. Idea: "A" link versus automatically updating encyclopedia. -bent -->
+ </div2>
+
+ <div2 id="link-semantics">
+ <head>Semantic Attributes</head>
+ <p>There are two attributes associated with semantics, <code>role</code> and <code>title</code>. The <code>role</code> attribute is a generic string used to describe the function of the link's content. For example, a poem might have a link with a <code>role="stanza"</code>. The <code>role</code> is also used as an identifier for the <code>from</code> and <code>to</code> attributes of arcs.</p>
+ <p>The <code>title</code> attribute is designed to provide human-readable text describing the link. It is very useful for those who have text-based applications, whether that be due to a constricted device that cannot display the link's content, or if it's being read by an application to a visually-impaired user, or if it's being used to create a table of links. The <code>title</code> attribute contains a simple, descriptive string.</p>
+ </div2>
+</div1>
+
+<div1 id="linking-elements">
+ <head>Linking Elements</head>
+ <p>There are several kinds of linking elements in XLink: <code>simple</code> links, <code>locators</code>, <code>arcs</code>, and <code>extended</code> links. These elements may be instantiated via element declarations from the XLink namespace, or they may be instantiated via attribute declarations from the XLink namespace. Both kinds of instantiation are described in the definition of each linking element.</p>
+ <p>The <code>simple</code> link is used to declare a link that approximates the functionality of the HTML <code>A</code> element. It has, however, a few added features to increase its value, including the potential declaration of semantics and behavior. The <code>locator</code> elements are used to define the resource being linked to. Some links may contain multiple locators, representing a choice of potential links to be traversed. The <code>arcs</code> are used to define the traversal semantics of the link. Finally, an <code>extended</code> linking element differs from a simple link in that it can connect any number of resources, not just one local resource (optionally) and one remote resource, and in that extended links are more often out-of-line than simple links.</p>
+
+<div2 id="simple-links">
+ <head>Simple Links</head>
+ <p id="dt-simplelink"><termdef id="dt-simpleline" term="Simple Link"><term>Simple links</term> can be used for purposes that approximate the functionality of a basic HTML <code>A</code> link, but they can also support a limited amount of additional functionality. Simple links have only one locator and thus, for convenience, combine the functions of a linking element and a locator into a single element.</termdef> As a result of this combination, the simple linking element offers both a locator attribute and all the behavior and semantic attributes.</p>
+ <p>The following are two examples of linking elements, each showing all the possible attributes that can be associated with a simple link. Here is the explicit XLink simple linking element.
+ <eg>&lt;!ELEMENT xlink:simple ANY&gt;
+&lt;!ATTLIST xlink:slink
+ href CDATA #REQUIRED
+ role CDATA #IMPLIED
+ title CDATA #IMPLIED
+ show (new|parsed|replace) "replace"
+ actuate (user|auto) "user"
+&gt;</eg>
+ And here is how to make an arbitrary element into a simple link.
+ <eg>&lt;!ELEMENT xlink:simple ANY&gt;
+&lt;!ATTLIST foo
+ xlink:type (simple|extended|locator|arc) #FIXED "simple"
+ xlink:href CDATA #REQUIRED
+ xlink:role CDATA #IMPLIED
+ xlink:title CDATA #IMPLIED
+ xlink:show (new|parsed|replace) "replace"
+ xlink:actuate (user|auto) "user"
+&gt;</eg>
+ Here is how the first example might look in a document:
+<eg>&lt;xlink:simple href="http://www.w3.org/TR/wd-xlink" role="working draft"
+ title="The XLink Working Draft" show="replace" actuate="user"&gt;
+The XLink Working Draft.&lt;/xlink:simple&gt;</eg>
+<eg>&lt;foo xlink:href="http://www.w3.org/TR/wd-xlink" xlink:role="working draft"
+ xlink:title="The XLink Working Draft" xlink:show="new" xlink:actuate="user"&gt;
+The XLink Working Draft.&lt;/foo&gt;</eg>
+ Alternately, a simple link could be as terse as this:
+<eg>&lt;foo xlink:href="#stanza1"&gt;The First Stanza.&lt;/foo&gt;</eg>
+ </p>
+ <p>
+ There are no constraints on the contents of a simple linking element. In
+ the sample declaration above, it is given a content model of <code>ANY</code>
+ to illustrate that any content model or declared content is acceptable. In
+ a valid document, every element that is significant to XLink must still conform
+ to the constraints expressed in its governing DTD.</p>
+ <p>Note that it is meaningful to have an out-of-line simple link, although
+ such links are uncommon. They are called "one-ended" and are typically used
+ to associate discrete semantic properties with locations. The properties might
+ be expressed by attributes on the link, the link's element type name, or in
+ some other way, and are not considered full-fledged resources of the link.
+ Most out-of-line links are extended links, as these have a far wider range
+ of uses.</p>
+</div2>
+
+<div2 id="extended-link">
+<head>Extended Links</head>
+ <p><termdef id="dt-extendedlink" term="Extended Link">An <term>extended link</term> differs from a simple link in that it can connect any number of resources, not just one local resource (optionally) and one remote resource, and in that extended links are more often out-of-line than simple links.</termdef></p>
+ <p>These additional capabilities of extended links are required for:
+ <ulist>
+ <item>
+ <p>Enabling outgoing links in documents that cannot be modified to add an inline link</p>
+ </item>
+ <item>
+ <p>Creating links to and from resources in formats with no native support for embedded links (such as most multimedia formats)</p>
+ </item>
+ <item>
+ <p>Applying and filtering sets of relevant links on demand</p>
+ </item>
+ <item><p>Enabling other advanced hypermedia capabilities</p></item>
+ </ulist>
+ </p>
+ <p>Application software might be expected to provide traversal among all of a link's participating resources (subject to semantic constraints outside the scope of this specification) and to signal the fact that a given resource or sub-resource participates in one or more links when it is displayed (even though there is no markup at exactly that point to signal it).</p>
+ <p>A linking element for an extended link contains a series of <xtermref href="http://www.w3.org/TR/REC-xml/#dt-parentchild">child elements</xtermref> that serve as locators and arcs. Because an extended link can have more than one remote resource, it separates out linking itself from the mechanisms used to locate each resource (whereas a simple link combines the two).</p>
+ <p>The <code>xlink:type</code> attribute value for an extended link must be <code> extended</code>, if the link is being instantiated on an arbitrary element. Note that extended links introduce variants of the <code>show</code> and <code>actuate</code> behavior attributes. These attributes, the <code>showdefault</code> and <code>actuatedefault</code> define the same behavior as their counterparts. However, in this case, they are considered to define the default behavior for all the linking elements that they contain.</p>
+ <p>However, when a linking element within an extended link has a <code>show</code> or <code>actuate</code> attribute of its own, that attribute overrides the defaults set on the extended linking element.</p>
+ <p>The extended linking element itself retains those attributes relevant to the link as a whole, and to its local resource if any. Following are two sample declaration for an extended link. The first is an example of the explicit XLink extended link:
+
+<eg>&lt;!ELEMENT xlink:extended ((xlink:arc | xlink:locator)*)&gt;
+&lt;!ATTLIST xlink:extended
+ role CDATA #IMPLIED
+ title CDATA #IMPLIED
+ showdefault (new|parsed|replace) #IMPLIED
+ actuatedefault (user|auto) #IMPLIED &gt;</eg>
+
+ The second is an example of an arbitrary element being used an extended link:
+
+<eg>&lt;!ELEMENT foo ((xlink:arc | xlink:locator)*)&gt;
+&lt;!ATTLIST foo
+ xlink:type (simple|extended|locator|arc) #FIXED "extended"
+ xlink:role CDATA #IMPLIED
+ xlink:title CDATA #IMPLIED
+ xlink:showdefault (new|parsed|replace) #IMPLIED
+ xlink:actuatedefault (user|auto) #IMPLIED &gt;</eg>
+
+ The following two examples demonstrate how each of the above might appear within a document instance. Note that the content of these examples would be other elements. For brevity's sake, they've been left blank. The first example shows how the link might appear, using an explicit XLink extended link:
+
+<eg>&lt;xlink:extended role="address book" title="Ben's Address Book" showdefault="replace" actuatedefault="user"&gt; ... &lt;/xlink:extended&gt;</eg>
+
+ And the second shows how the link might appear, using an arbitrary element:
+
+<eg>&lt;foo xlink:type="extended" xlink:role="address book" xlink:title="Ben's Address Book" xlink:showdefault="replace" xlink:actuatedefault="user"&gt; ... &lt;/foo&gt;</eg>
+ </p>
+
+</div2>
+
+<div2 id="xlink-arcs">
+ <head>Arc Elements</head>
+ <p><termdef id="dt-arc" term="Arc">An <term>arc</term> is contained within an extended link for the purpose of defining traversal behavior.</termdef> More than one arc may be associated with a link. Otherwise, arc elements function exactly as the arc attributes might lead on to expect.</p>
+ <!-- More here? -bent -->
+</div2>
+
+</div1>
+<div1>
+<head>Conformance</head>
+<p>An element conforms to XLink if: <olist>
+<item><p>The element has an <code>xml:link</code> attribute whose value is
+one of the attribute values prescribed by this specification, and</p></item>
+<item><p>the element and all of its attributes and content adhere to the
+syntactic
+requirements imposed by the chosen <code>xml:link</code> attribute value,
+as prescribed in this specification.</p></item>
+</olist></p>
+<p>Note that conformance is assessed at the level of individual elements,
+rather than whole XML documents, because XLink and non-XLink linking mechanisms
+may be used side by side in any one document.</p>
+<p>An application conforms to XLink if it interprets XLink-conforming elements
+according to all required semantics prescribed by this specification and,
+for any optional semantics it chooses to support, supports them in the way
+prescribed. <!--If/when we split out the XLinkfunctionality
+(e.g. inline links and out-of-line links), the
+conformance language will have to address the different
+levels of support. -elm--> </p>
+</div1>
+</body><back>
+<div1 id="unfinished">
+<head>Unfinished Work</head>
+<div2>
+<head>Structured Titles</head>
+<p>The simple title mechanism described in this draft is insufficient to cope
+with internationalization or the use of multimedia in link titles. A future
+version will provide a mechanism for the use of structured link titles.</p>
+</div2>
+</div1>
+<div1>
+<head>References</head>
+<blist>
+<bibl id="xptr" key="XPTR">Eve Maler and Steve DeRose, editors. <titleref>
+XML Pointer Language (XPointer) V1.0</titleref>. ArborText, Inso, and Brown
+University. Burlington, Seekonk, et al.: World Wide Web Consortium, 1998.
+(See <loc href="http://www.w3.org/TR/WD-xptr">http://www.w3.org/TR/WD-xptr
+ </loc>.)</bibl>
+<bibl id="iso10744" key="ISO/IEC 10744">ISO (International Organization for
+Standardization). <titleref>ISO/IEC 10744-1992 (E). Information technology
+- Hypermedia/Time-based Structuring Language (HyTime).</titleref> [Geneva]:
+International Organization for Standardization, 1992. <titleref>Extended
+Facilities
+Annex.</titleref> [Geneva]: International Organization for Standardization,
+1996. (See <loc href="http://www.ornl.gov/sgml/wg8/hytime/html/is10744r.html">http://www.ornl.go
+v/sgml/wg8/hytime/html/is10744r.html </loc> <!--p m-r says this link is
+broken. elm --> ).</bibl>
+<bibl id="rfc1738" key="IETF RFC 1738">IETF (Internet Engineering Task
+Force). <titleref>
+RFC 1738: Uniform Resource Locators</titleref>. 1991. (See <loc href="http://www.w3.org/Addressing/rfc1738.txt">
+http://www.w3.org/Addressing/rfc1738.txt</loc>).</bibl>
+<bibl id="rfc1808" key="IETF RFC 1808">IETF (Internet Engineering Task
+Force). <titleref>
+RFC 1808: Relative Uniform Resource Locators</titleref>. 1995. (See <loc href="http://www.w3.org/Addressing/rfc1808.txt">http://www.w3.org/Addressing/rfc
+1808.txt </loc>).</bibl>
+<bibl id="tei" key="TEI">C. M. Sperberg-McQueen and Lou Burnard, editors.
+<titleref>
+Guidelines for Electronic Text Encoding and Interchange</titleref>. Association
+for Computers and the Humanities (ACH), Association for Computational
+Linguistics
+(ACL), and Association for Literary and Linguistic Computing (ALLC). Chicago,
+Oxford: Text Encoding Initiative, 1994. <!-- add cite to DOM work --> </bibl>
+<bibl id="chum" key="CHUM">]Steven J. DeRose and David G. Durand. 1995. "The
+TEI Hypertext Guidelines." In <titleref>Computing and the Humanities
+</titleref>29(3).
+Reprinted in <titleref>Text Encoding Initiative: Background and
+Context</titleref>,
+ed. Nancy Ide and Jean ronis <!-- fix this name -->, ISBN 0-7923-3704-2. </bibl>
+</blist></div1>
+</back></spec>
+<?Pub *0000052575?>
diff --git a/result/valid/xlink.xml.err b/result/valid/xlink.xml.err
new file mode 100644
index 0000000..c0eea7c
--- /dev/null
+++ b/result/valid/xlink.xml.err
@@ -0,0 +1,4 @@
+./test/valid/xlink.xml:450: element termdef: validity error : ID dt-arc already defined
+ <p><termdef id="dt-arc" term="Arc">An <term>arc</term> is contained within an e
+ ^
+./test/valid/xlink.xml:199: element termref: validity error : IDREF attribute def references an unknown ID "dt-xlg"
diff --git a/result/valid/xlink.xml.err.rdr b/result/valid/xlink.xml.err.rdr
new file mode 100644
index 0000000..38594f4
--- /dev/null
+++ b/result/valid/xlink.xml.err.rdr
@@ -0,0 +1,4 @@
+./test/valid/xlink.xml:450: element termdef: validity error : ID dt-arc already defined
+ <p><termdef id="dt-arc" term="Arc">An <ter
+ ^
+validity error : attribute def line 199 references an unknown ID "dt-xlg"
diff --git a/result/wap.xml b/result/wap.xml
new file mode 100644
index 0000000..694b49f
--- /dev/null
+++ b/result/wap.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd">
+<!-- (C) 1999, 2000 WAP Forum Ltd. All rights reserved -->
+<wml>
+<card id="card1">
+<onevent type="onenterforward">
+<go href="/vswap/run/result.eml">
+ <postfield name="var" value="$test"/>
+ <postfield name="v" value="dark"/>
+ <postfield name="ts" value="0003"/>
+ <postfield name="tp" value="wml/state/variables/parsing/1"/>
+ <postfield name="ti" value="1"/>
+ <postfield name="expected" value="var:pass"/>
+</go>
+</onevent>
+<p>If automatic testing failed, select <anchor>Failed<go href="/vswap/run/result.eml">
+ <postfield name="SUBMIT" value="No"/><postfield name="v" value="dark"/>
+ <postfield name="ts" value="0003"/>
+ <postfield name="tp" value="wml/state/variables/parsing/1"/>
+ <postfield name="ti" value="1"/>
+ <postfield name="expected" value="var:pass"/></go></anchor>.</p>
+</card>
+
+</wml>
diff --git a/result/wap.xml.rde b/result/wap.xml.rde
new file mode 100644
index 0000000..6867382
--- /dev/null
+++ b/result/wap.xml.rde
@@ -0,0 +1,70 @@
+0 10 wml 0 0
+0 8 #comment 0 1 (C) 1999, 2000 WAP Forum Ltd. All rights reserved
+0 1 wml 0 0
+1 14 #text 0 1
+
+1 1 card 0 0
+2 14 #text 0 1
+
+2 1 onevent 0 0
+3 14 #text 0 1
+
+3 1 go 0 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+3 15 go 0 0
+3 14 #text 0 1
+
+2 15 onevent 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 If automatic testing failed, select
+3 1 anchor 0 0
+4 3 #text 0 1 Failed
+4 1 go 0 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+4 15 go 0 0
+3 15 anchor 0 0
+3 3 #text 0 1 .
+2 15 p 0 0
+2 14 #text 0 1
+
+1 15 card 0 0
+1 14 #text 0 1
+
+
+0 15 wml 0 0
diff --git a/result/wap.xml.rdr b/result/wap.xml.rdr
new file mode 100644
index 0000000..6867382
--- /dev/null
+++ b/result/wap.xml.rdr
@@ -0,0 +1,70 @@
+0 10 wml 0 0
+0 8 #comment 0 1 (C) 1999, 2000 WAP Forum Ltd. All rights reserved
+0 1 wml 0 0
+1 14 #text 0 1
+
+1 1 card 0 0
+2 14 #text 0 1
+
+2 1 onevent 0 0
+3 14 #text 0 1
+
+3 1 go 0 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+4 1 postfield 1 0
+4 14 #text 0 1
+
+3 15 go 0 0
+3 14 #text 0 1
+
+2 15 onevent 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 If automatic testing failed, select
+3 1 anchor 0 0
+4 3 #text 0 1 Failed
+4 1 go 0 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+5 14 #text 0 1
+
+5 1 postfield 1 0
+4 15 go 0 0
+3 15 anchor 0 0
+3 3 #text 0 1 .
+2 15 p 0 0
+2 14 #text 0 1
+
+1 15 card 0 0
+1 14 #text 0 1
+
+
+0 15 wml 0 0
diff --git a/result/wap.xml.sax b/result/wap.xml.sax
new file mode 100644
index 0000000..ca89e70
--- /dev/null
+++ b/result/wap.xml.sax
@@ -0,0 +1,86 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd)
+SAX.externalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd)
+SAX.comment( (C) 1999, 2000 WAP Forum Ltd. All rights reserved )
+SAX.startElement(wml)
+SAX.characters(
+, 1)
+SAX.startElement(card, id='card1')
+SAX.characters(
+, 1)
+SAX.startElement(onevent, type='onenterforward')
+SAX.characters(
+, 1)
+SAX.startElement(go, href='/vswap/run/result.eml')
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='var', value='$test')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='v', value='dark')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='ts', value='0003')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='tp', value='wml/state/variables/parsing/1')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='ti', value='1')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='expected', value='var:pass')
+SAX.endElement(postfield)
+SAX.characters(
+, 1)
+SAX.endElement(go)
+SAX.characters(
+, 1)
+SAX.endElement(onevent)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.characters(If automatic testing failed, s, 36)
+SAX.startElement(anchor)
+SAX.characters(Failed, 6)
+SAX.startElement(go, href='/vswap/run/result.eml')
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='SUBMIT', value='No')
+SAX.endElement(postfield)
+SAX.startElement(postfield, name='v', value='dark')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='ts', value='0003')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='tp', value='wml/state/variables/parsing/1')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='ti', value='1')
+SAX.endElement(postfield)
+SAX.characters(
+ , 9)
+SAX.startElement(postfield, name='expected', value='var:pass')
+SAX.endElement(postfield)
+SAX.endElement(go)
+SAX.endElement(anchor)
+SAX.characters(., 1)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(card)
+SAX.characters(
+
+, 2)
+SAX.endElement(wml)
+SAX.endDocument()
diff --git a/result/wap.xml.sax2 b/result/wap.xml.sax2
new file mode 100644
index 0000000..6d40b25
--- /dev/null
+++ b/result/wap.xml.sax2
@@ -0,0 +1,87 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd)
+SAX.externalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd)
+SAX.comment( (C) 1999, 2000 WAP Forum Ltd. All rights reserved )
+SAX.startElementNs(wml, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(card, NULL, NULL, 0, 1, 0, id='card...', 5)
+SAX.characters(
+, 1)
+SAX.startElementNs(onevent, NULL, NULL, 0, 1, 0, type='onen...', 14)
+SAX.characters(
+, 1)
+SAX.startElementNs(go, NULL, NULL, 0, 1, 0, href='/vsw...', 21)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='var"...', 3, value='$tes...', 5)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='v" v...', 1, value='dark...', 4)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='ts" ...', 2, value='0003...', 4)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='tp" ...', 2, value='wml/...', 29)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='ti" ...', 2, value='1"/>...', 1)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='expe...', 8, value='var:...', 8)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(go, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(onevent, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters(If automatic testing failed, s, 36)
+SAX.startElementNs(anchor, NULL, NULL, 0, 0, 0)
+SAX.characters(Failed, 6)
+SAX.startElementNs(go, NULL, NULL, 0, 1, 0, href='/vsw...', 21)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='SUBM...', 6, value='No"/...', 2)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='v"
+v...', 1, value='dark...', 4)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='ts" ...', 2, value='0003...', 4)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='tp" ...', 2, value='wml/...', 29)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='ti" ...', 2, value='1"/>...', 1)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.characters(
+ , 9)
+SAX.startElementNs(postfield, NULL, NULL, 0, 2, 0, name='expe...', 8, value='var:...', 8)
+SAX.endElementNs(postfield, NULL, NULL)
+SAX.endElementNs(go, NULL, NULL)
+SAX.endElementNs(anchor, NULL, NULL)
+SAX.characters(., 1)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(card, NULL, NULL)
+SAX.characters(
+
+, 2)
+SAX.endElementNs(wml, NULL, NULL)
+SAX.endDocument()
diff --git a/result/winblanks.xml b/result/winblanks.xml
new file mode 100644
index 0000000..0044aa2
--- /dev/null
+++ b/result/winblanks.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<a>
+ <B>
+ <C/>
+</B>
+</a>
diff --git a/result/winblanks.xml.rde b/result/winblanks.xml.rde
new file mode 100644
index 0000000..2f6a5d3
--- /dev/null
+++ b/result/winblanks.xml.rde
@@ -0,0 +1,13 @@
+0 1 a 0 0
+1 14 #text 0 1
+
+1 1 B 0 0
+2 14 #text 0 1
+
+2 1 C 1 0
+2 14 #text 0 1
+
+1 15 B 0 0
+1 14 #text 0 1
+
+0 15 a 0 0
diff --git a/result/winblanks.xml.rdr b/result/winblanks.xml.rdr
new file mode 100644
index 0000000..2f6a5d3
--- /dev/null
+++ b/result/winblanks.xml.rdr
@@ -0,0 +1,13 @@
+0 1 a 0 0
+1 14 #text 0 1
+
+1 1 B 0 0
+2 14 #text 0 1
+
+2 1 C 1 0
+2 14 #text 0 1
+
+1 15 B 0 0
+1 14 #text 0 1
+
+0 15 a 0 0
diff --git a/result/winblanks.xml.sax b/result/winblanks.xml.sax
new file mode 100644
index 0000000..72e39d5
--- /dev/null
+++ b/result/winblanks.xml.sax
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(a)
+SAX.characters(
+ , 5)
+SAX.startElement(B)
+SAX.characters(
+ , 9)
+SAX.startElement(C)
+SAX.endElement(C)
+SAX.characters( , 3)
+SAX.characters(
+, 1)
+SAX.endElement(B)
+SAX.characters(
+, 1)
+SAX.endElement(a)
+SAX.endDocument()
diff --git a/result/winblanks.xml.sax2 b/result/winblanks.xml.sax2
new file mode 100644
index 0000000..6e9d693
--- /dev/null
+++ b/result/winblanks.xml.sax2
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElementNs(a, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(B, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 9)
+SAX.startElementNs(C, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(C, NULL, NULL)
+SAX.characters( , 3)
+SAX.characters(
+, 1)
+SAX.endElementNs(B, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(a, NULL, NULL)
+SAX.endDocument()
diff --git a/result/wml.xml b/result/wml.xml
new file mode 100644
index 0000000..3a96562
--- /dev/null
+++ b/result/wml.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Rubriques 75008">
+ <p>
+ <a href="rubmenu.asp?CP=75008&amp;RB=01">Cin&#xE9;ma</a><br/>
+ </p>
+
+</card>
+</wml>
diff --git a/result/wml.xml.rde b/result/wml.xml.rde
new file mode 100644
index 0000000..1bb28d4
--- /dev/null
+++ b/result/wml.xml.rde
@@ -0,0 +1,24 @@
+0 10 wml 0 0
+0 1 wml 0 0
+1 14 #text 0 1
+
+1 1 card 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 14 #text 0 1
+
+3 1 a 0 0
+4 3 #text 0 1 Cinéma
+3 15 a 0 0
+3 1 br 1 0
+3 14 #text 0 1
+
+2 15 p 0 0
+2 14 #text 0 1
+
+
+1 15 card 0 0
+1 14 #text 0 1
+
+0 15 wml 0 0
diff --git a/result/wml.xml.rdr b/result/wml.xml.rdr
new file mode 100644
index 0000000..1bb28d4
--- /dev/null
+++ b/result/wml.xml.rdr
@@ -0,0 +1,24 @@
+0 10 wml 0 0
+0 1 wml 0 0
+1 14 #text 0 1
+
+1 1 card 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 14 #text 0 1
+
+3 1 a 0 0
+4 3 #text 0 1 Cinéma
+3 15 a 0 0
+3 1 br 1 0
+3 14 #text 0 1
+
+2 15 p 0 0
+2 14 #text 0 1
+
+
+1 15 card 0 0
+1 14 #text 0 1
+
+0 15 wml 0 0
diff --git a/result/wml.xml.sax b/result/wml.xml.sax
new file mode 100644
index 0000000..46959bb
--- /dev/null
+++ b/result/wml.xml.sax
@@ -0,0 +1,31 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://www.wapforum.org/DTD/wml_1.1.xml)
+SAX.externalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://www.wapforum.org/DTD/wml_1.1.xml)
+SAX.startElement(wml)
+SAX.characters(
+ , 3)
+SAX.startElement(card, id='card1', title='Rubriques 75008')
+SAX.characters(
+ , 2)
+SAX.startElement(p)
+SAX.characters(
+ , 3)
+SAX.startElement(a, href='rubmenu.asp?CP=75008&#38;RB=01')
+SAX.characters(Cin, 3)
+SAX.characters(é, 2)
+SAX.characters(ma, 2)
+SAX.endElement(a)
+SAX.startElement(br)
+SAX.endElement(br)
+SAX.characters(
+ , 2)
+SAX.endElement(p)
+SAX.characters(
+
+, 2)
+SAX.endElement(card)
+SAX.characters(
+, 1)
+SAX.endElement(wml)
+SAX.endDocument()
diff --git a/result/wml.xml.sax2 b/result/wml.xml.sax2
new file mode 100644
index 0000000..bc86149
--- /dev/null
+++ b/result/wml.xml.sax2
@@ -0,0 +1,31 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://www.wapforum.org/DTD/wml_1.1.xml)
+SAX.externalSubset(wml, -//WAPFORUM//DTD WML 1.1//EN, http://www.wapforum.org/DTD/wml_1.1.xml)
+SAX.startElementNs(wml, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(card, NULL, NULL, 0, 2, 0, id='card...', 5, title='Rubr...', 15)
+SAX.characters(
+ , 2)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(a, NULL, NULL, 0, 1, 0, href='rubm...', 30)
+SAX.characters(Cin, 3)
+SAX.characters(é, 2)
+SAX.characters(ma, 2)
+SAX.endElementNs(a, NULL, NULL)
+SAX.startElementNs(br, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(br, NULL, NULL)
+SAX.characters(
+ , 2)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+
+, 2)
+SAX.endElementNs(card, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(wml, NULL, NULL)
+SAX.endDocument()
diff --git a/result/xhtml1 b/result/xhtml1
new file mode 100644
index 0000000..6c06a95
--- /dev/null
+++ b/result/xhtml1
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!-- 3.1.1 3/ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Virtual Library</title>
+ </head>
+ <!-- 4.8 -->
+ <script type="text/javascript">
+ ... unescaped script &lt; content ...
+ </script>
+ <body>
+ <p>Moved to <a href="http://example.org/">example.org</a>.</p>
+ </body>
+ <!-- C2 -->
+ <img src="foo.gif" alt="foo" />
+ <!-- C3 -->
+ <p></p>
+ <!-- C7 -->
+ <p lang="fr" xml:lang="fr">coucou</p>
+ <p xml:lang="fr" lang="fr">salut</p>
+ <!-- C8 -->
+ <p name="fragid" id="fragid">test</p>
+ <!-- 4.5 -->
+ <dl compact="compact">
+ <dt>Internet Engineering Task Force</dt>
+ <dd>An organization which establishes technical standards for the Internet</dd>
+ </dl>
+
+</html>
diff --git a/result/xhtml1.rde b/result/xhtml1.rde
new file mode 100644
index 0000000..4d2cc24
--- /dev/null
+++ b/result/xhtml1.rde
@@ -0,0 +1,95 @@
+0 10 html 0 0
+0 8 #comment 0 1 3.1.1 3/
+0 1 html 0 0
+1 14 #text 0 1
+
+1 1 head 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Virtual Library
+2 15 title 0 0
+2 14 #text 0 1
+
+1 15 head 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 4.8
+1 14 #text 0 1
+
+1 1 script 0 0
+2 3 #text 0 1
+ ... unescaped script < content ...
+
+1 15 script 0 0
+1 14 #text 0 1
+
+1 1 body 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 Moved to
+3 1 a 0 0
+4 3 #text 0 1 example.org
+3 15 a 0 0
+3 3 #text 0 1 .
+2 15 p 0 0
+2 14 #text 0 1
+
+1 15 body 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C2
+1 14 #text 0 1
+
+1 1 img 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C3
+1 14 #text 0 1
+
+1 1 p 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C7
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 coucou
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 salut
+1 15 p 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C8
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 test
+1 15 p 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 4.5
+1 14 #text 0 1
+
+1 1 dl 0 0
+2 14 #text 0 1
+
+2 1 dt 0 0
+3 3 #text 0 1 Internet Engineering Task Force
+2 15 dt 0 0
+2 14 #text 0 1
+
+2 1 dd 0 0
+3 3 #text 0 1 An organization which establishes technical standards for the Internet
+2 15 dd 0 0
+2 14 #text 0 1
+
+1 15 dl 0 0
+1 14 #text 0 1
+
+
+0 15 html 0 0
diff --git a/result/xhtml1.rdr b/result/xhtml1.rdr
new file mode 100644
index 0000000..4d2cc24
--- /dev/null
+++ b/result/xhtml1.rdr
@@ -0,0 +1,95 @@
+0 10 html 0 0
+0 8 #comment 0 1 3.1.1 3/
+0 1 html 0 0
+1 14 #text 0 1
+
+1 1 head 0 0
+2 14 #text 0 1
+
+2 1 title 0 0
+3 3 #text 0 1 Virtual Library
+2 15 title 0 0
+2 14 #text 0 1
+
+1 15 head 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 4.8
+1 14 #text 0 1
+
+1 1 script 0 0
+2 3 #text 0 1
+ ... unescaped script < content ...
+
+1 15 script 0 0
+1 14 #text 0 1
+
+1 1 body 0 0
+2 14 #text 0 1
+
+2 1 p 0 0
+3 3 #text 0 1 Moved to
+3 1 a 0 0
+4 3 #text 0 1 example.org
+3 15 a 0 0
+3 3 #text 0 1 .
+2 15 p 0 0
+2 14 #text 0 1
+
+1 15 body 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C2
+1 14 #text 0 1
+
+1 1 img 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C3
+1 14 #text 0 1
+
+1 1 p 1 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C7
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 coucou
+1 15 p 0 0
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 salut
+1 15 p 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 C8
+1 14 #text 0 1
+
+1 1 p 0 0
+2 3 #text 0 1 test
+1 15 p 0 0
+1 14 #text 0 1
+
+1 8 #comment 0 1 4.5
+1 14 #text 0 1
+
+1 1 dl 0 0
+2 14 #text 0 1
+
+2 1 dt 0 0
+3 3 #text 0 1 Internet Engineering Task Force
+2 15 dt 0 0
+2 14 #text 0 1
+
+2 1 dd 0 0
+3 3 #text 0 1 An organization which establishes technical standards for the Internet
+2 15 dd 0 0
+2 14 #text 0 1
+
+1 15 dl 0 0
+1 14 #text 0 1
+
+
+0 15 html 0 0
diff --git a/result/xhtml1.sax b/result/xhtml1.sax
new file mode 100644
index 0000000..624fa38
--- /dev/null
+++ b/result/xhtml1.sax
@@ -0,0 +1,103 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.externalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.comment( 3.1.1 3/ )
+SAX.startElement(html, xml:lang='en', lang='en')
+SAX.characters(
+ , 3)
+SAX.startElement(head)
+SAX.characters(
+ , 5)
+SAX.startElement(title)
+SAX.characters(Virtual Library, 15)
+SAX.endElement(title)
+SAX.characters(
+ , 3)
+SAX.endElement(head)
+SAX.characters(
+ , 3)
+SAX.comment( 4.8 )
+SAX.characters(
+ , 3)
+SAX.startElement(script, type='text/javascript')
+SAX.characters(
+ ... unescaped script , 24)
+SAX.characters(<, 1)
+SAX.characters( content ...
+ , 15)
+SAX.endElement(script)
+SAX.characters(
+ , 3)
+SAX.startElement(body)
+SAX.characters(
+ , 5)
+SAX.startElement(p)
+SAX.characters(Moved to , 9)
+SAX.startElement(a, href='http://example.org/')
+SAX.characters(example.org, 11)
+SAX.endElement(a)
+SAX.characters(., 1)
+SAX.endElement(p)
+SAX.characters(
+ , 3)
+SAX.endElement(body)
+SAX.characters(
+ , 3)
+SAX.comment( C2 )
+SAX.characters(
+ , 3)
+SAX.startElement(img, src='foo.gif', alt='foo')
+SAX.endElement(img)
+SAX.characters(
+ , 3)
+SAX.comment( C3 )
+SAX.characters(
+ , 3)
+SAX.startElement(p)
+SAX.endElement(p)
+SAX.characters(
+ , 3)
+SAX.comment( C7 )
+SAX.characters(
+ , 3)
+SAX.startElement(p, lang='fr')
+SAX.characters(coucou, 6)
+SAX.endElement(p)
+SAX.characters(
+ , 3)
+SAX.startElement(p, xml:lang='fr')
+SAX.characters(salut, 5)
+SAX.endElement(p)
+SAX.characters(
+ , 3)
+SAX.comment( C8 )
+SAX.characters(
+ , 3)
+SAX.startElement(p, name='fragid')
+SAX.characters(test, 4)
+SAX.endElement(p)
+SAX.characters(
+ , 3)
+SAX.comment( 4.5 )
+SAX.characters(
+ , 3)
+SAX.startElement(dl, compact='')
+SAX.characters(
+ , 3)
+SAX.startElement(dt)
+SAX.characters(Internet Engineering Task Forc, 31)
+SAX.endElement(dt)
+SAX.characters(
+ , 3)
+SAX.startElement(dd)
+SAX.characters(An organization which establis, 70)
+SAX.endElement(dd)
+SAX.characters(
+ , 3)
+SAX.endElement(dl)
+SAX.characters(
+
+, 2)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/xhtml1.sax2 b/result/xhtml1.sax2
new file mode 100644
index 0000000..e6952c8
--- /dev/null
+++ b/result/xhtml1.sax2
@@ -0,0 +1,104 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.externalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.comment( 3.1.1 3/ )
+SAX.startElementNs(html, NULL, NULL, 0, 2, 0, xml:lang='en" ...', 2, lang='en">...', 2)
+SAX.characters(
+ , 3)
+SAX.startElementNs(head, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(title, NULL, NULL, 0, 0, 0)
+SAX.characters(Virtual Library, 15)
+SAX.endElementNs(title, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(head, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( 4.8 )
+SAX.characters(
+ , 3)
+SAX.startElementNs(script, NULL, NULL, 0, 1, 0, type='text...', 15)
+SAX.characters(
+ ... unescaped script , 24)
+SAX.characters(<, 1)
+SAX.characters( content ...
+ , 15)
+SAX.endElementNs(script, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(body, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters(Moved to , 9)
+SAX.startElementNs(a, NULL, NULL, 0, 1, 0, href='http...', 19)
+SAX.characters(example.org, 11)
+SAX.endElementNs(a, NULL, NULL)
+SAX.characters(., 1)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(body, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( C2 )
+SAX.characters(
+ , 3)
+SAX.startElementNs(img, NULL, NULL, 0, 2, 0, src='foo....', 7, alt='foo"...', 3)
+SAX.endElementNs(img, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( C3 )
+SAX.characters(
+ , 3)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( C7 )
+SAX.characters(
+ , 3)
+SAX.startElementNs(p, NULL, NULL, 0, 1, 0, lang='fr">...', 2)
+SAX.characters(coucou, 6)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(p, NULL, NULL, 0, 1, 0, xml:lang='fr">...', 2)
+SAX.characters(salut, 5)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( C8 )
+SAX.characters(
+ , 3)
+SAX.startElementNs(p, NULL, NULL, 0, 1, 0, name='frag...', 6)
+SAX.characters(test, 4)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.comment( 4.5 )
+SAX.characters(
+ , 3)
+SAX.startElementNs(dl, NULL, NULL, 0, 1, 0, compact='">
+ ...', 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(dt, NULL, NULL, 0, 0, 0)
+SAX.characters(Internet Engineering Task Forc, 31)
+SAX.endElementNs(dt, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.startElementNs(dd, NULL, NULL, 0, 0, 0)
+SAX.characters(An organization which establis, 70)
+SAX.endElementNs(dd, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(dl, NULL, NULL)
+SAX.characters(
+
+, 2)
+SAX.endElementNs(html, NULL, NULL)
+SAX.endDocument()
diff --git a/result/xhtmlcomp b/result/xhtmlcomp
new file mode 100644
index 0000000..4ce634c
--- /dev/null
+++ b/result/xhtmlcomp
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <body>
+ <h1><abbr>a</abbr> b</h1>
+ </body>
+</html>
diff --git a/result/xhtmlcomp.rde b/result/xhtmlcomp.rde
new file mode 100644
index 0000000..97517b7
--- /dev/null
+++ b/result/xhtmlcomp.rde
@@ -0,0 +1,19 @@
+0 10 html 0 0
+0 1 html 0 0
+1 14 #text 0 1
+
+1 1 body 0 0
+2 14 #text 0 1
+
+2 1 h1 0 0
+3 1 abbr 0 0
+4 3 #text 0 1 a
+3 15 abbr 0 0
+3 3 #text 0 1 b
+2 15 h1 0 0
+2 14 #text 0 1
+
+1 15 body 0 0
+1 14 #text 0 1
+
+0 15 html 0 0
diff --git a/result/xhtmlcomp.rdr b/result/xhtmlcomp.rdr
new file mode 100644
index 0000000..97517b7
--- /dev/null
+++ b/result/xhtmlcomp.rdr
@@ -0,0 +1,19 @@
+0 10 html 0 0
+0 1 html 0 0
+1 14 #text 0 1
+
+1 1 body 0 0
+2 14 #text 0 1
+
+2 1 h1 0 0
+3 1 abbr 0 0
+4 3 #text 0 1 a
+3 15 abbr 0 0
+3 3 #text 0 1 b
+2 15 h1 0 0
+2 14 #text 0 1
+
+1 15 body 0 0
+1 14 #text 0 1
+
+0 15 html 0 0
diff --git a/result/xhtmlcomp.sax b/result/xhtmlcomp.sax
new file mode 100644
index 0000000..a7a0d69
--- /dev/null
+++ b/result/xhtmlcomp.sax
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.externalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.startElement(html)
+SAX.characters(
+ , 3)
+SAX.startElement(body)
+SAX.characters(
+ , 5)
+SAX.startElement(h1)
+SAX.startElement(abbr)
+SAX.characters(a, 1)
+SAX.endElement(abbr)
+SAX.characters( b, 2)
+SAX.endElement(h1)
+SAX.characters(
+ , 3)
+SAX.endElement(body)
+SAX.characters(
+, 1)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/xhtmlcomp.sax2 b/result/xhtmlcomp.sax2
new file mode 100644
index 0000000..085b770
--- /dev/null
+++ b/result/xhtmlcomp.sax2
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.externalSubset(html, -//W3C//DTD XHTML 1.0 Strict//EN, http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd)
+SAX.startElementNs(html, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 3)
+SAX.startElementNs(body, NULL, NULL, 0, 0, 0)
+SAX.characters(
+ , 5)
+SAX.startElementNs(h1, NULL, NULL, 0, 0, 0)
+SAX.startElementNs(abbr, NULL, NULL, 0, 0, 0)
+SAX.characters(a, 1)
+SAX.endElementNs(abbr, NULL, NULL)
+SAX.characters( b, 2)
+SAX.endElementNs(h1, NULL, NULL)
+SAX.characters(
+ , 3)
+SAX.endElementNs(body, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(html, NULL, NULL)
+SAX.endDocument()
diff --git a/result/xml1 b/result/xml1
new file mode 100644
index 0000000..d32f56c
--- /dev/null
+++ b/result/xml1
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+ numerically (&#38;#38;#38;) or with a general entity
+ (&amp;amp;).</p>">
+]>
+<test>&example;</test>
diff --git a/result/xml1.rde b/result/xml1.rde
new file mode 100644
index 0000000..ecd6154
--- /dev/null
+++ b/result/xml1.rde
@@ -0,0 +1,8 @@
+0 10 test 0 0
+0 1 test 0 0
+1 1 p 0 0
+2 3 #text 0 1 An ampersand (&) may be escaped
+ numerically (&#38;) or with a general entity
+ (&amp;).
+1 15 p 0 0
+0 15 test 0 0
diff --git a/result/xml1.rdr b/result/xml1.rdr
new file mode 100644
index 0000000..9c9b943
--- /dev/null
+++ b/result/xml1.rdr
@@ -0,0 +1,4 @@
+0 10 test 0 0
+0 1 test 0 0
+1 5 example 0 0
+0 15 test 0 0
diff --git a/result/xml1.sax b/result/xml1.sax
new file mode 100644
index 0000000..13f881b
--- /dev/null
+++ b/result/xml1.sax
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(test, , )
+SAX.entityDecl(example, 1, (null), (null), <p>An ampersand (&#38;) may be escaped
+ numerically (&#38;#38;) or with a general entity
+ (&amp;amp;).</p>)
+SAX.getEntity(example)
+SAX.externalSubset(test, , )
+SAX.startElement(test)
+SAX.getEntity(example)
+SAX.startElement(p)
+SAX.characters(An ampersand (, 14)
+SAX.characters(&, 1)
+SAX.characters() may be escaped
+ numerically , 31)
+SAX.characters(&, 1)
+SAX.characters(#38;) or with a general entity, 34)
+SAX.characters(&, 1)
+SAX.characters(amp;)., 6)
+SAX.endElement(p)
+SAX.reference(example)
+SAX.endElement(test)
+SAX.endDocument()
diff --git a/result/xml1.sax2 b/result/xml1.sax2
new file mode 100644
index 0000000..7b220f2
--- /dev/null
+++ b/result/xml1.sax2
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(test, , )
+SAX.entityDecl(example, 1, (null), (null), <p>An ampersand (&#38;) may be escaped
+ numerically (&#38;#38;) or with a general entity
+ (&amp;amp;).</p>)
+SAX.getEntity(example)
+SAX.externalSubset(test, , )
+SAX.startElementNs(test, NULL, NULL, 0, 0, 0)
+SAX.getEntity(example)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.characters(An ampersand (, 14)
+SAX.characters(&, 1)
+SAX.characters() may be escaped
+ numerically , 31)
+SAX.characters(&, 1)
+SAX.characters(#38;) or with a general entity, 34)
+SAX.characters(&, 1)
+SAX.characters(amp;)., 6)
+SAX.endElementNs(p, NULL, NULL)
+SAX.reference(example)
+SAX.endElementNs(test, NULL, NULL)
+SAX.endDocument()
diff --git a/result/xml2 b/result/xml2
new file mode 100644
index 0000000..b26b358
--- /dev/null
+++ b/result/xml2
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ELEMENT test (#PCDATA)>
+<!ENTITY % xx "&#37;zz;">
+<!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >'>
+<!ENTITY tricky "error-prone">
+]>
+<test>This sample shows a &tricky; method.</test>
diff --git a/result/xml2.rde b/result/xml2.rde
new file mode 100644
index 0000000..cfdf217
--- /dev/null
+++ b/result/xml2.rde
@@ -0,0 +1,4 @@
+0 10 test 0 0
+0 1 test 0 0
+1 3 #text 0 1 This sample shows a error-prone method.
+0 15 test 0 0
diff --git a/result/xml2.rdr b/result/xml2.rdr
new file mode 100644
index 0000000..05dce2a
--- /dev/null
+++ b/result/xml2.rdr
@@ -0,0 +1,6 @@
+0 10 test 0 0
+0 1 test 0 0
+1 3 #text 0 1 This sample shows a
+1 5 tricky 0 0
+1 3 #text 0 1 method.
+0 15 test 0 0
diff --git a/result/xml2.sax b/result/xml2.sax
new file mode 100644
index 0000000..141accd
--- /dev/null
+++ b/result/xml2.sax
@@ -0,0 +1,18 @@
+xmlSAXUserParseFile returned error 27
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(test, , )
+SAX.elementDecl(test, 3, ...)
+SAX.entityDecl(xx, 4, (null), (null), %zz;)
+SAX.getParameterEntity(xx)
+SAX.entityDecl(zz, 4, (null), (null), <!ENTITY tricky "error-prone" >)
+SAX.getParameterEntity(zz)
+SAX.getParameterEntity(xx)
+SAX.error: PEReference: %xx; not found
+SAX.characters(This sample shows a , 20)
+SAX.getEntity(tricky)
+SAX.error: Entity 'tricky' not defined
+SAX.reference(tricky)
+SAX.characters( method., 8)
+SAX.endDocument()
+xmlSAXUserParseFile returned error 27
diff --git a/result/xml2.sax2 b/result/xml2.sax2
new file mode 100644
index 0000000..141accd
--- /dev/null
+++ b/result/xml2.sax2
@@ -0,0 +1,18 @@
+xmlSAXUserParseFile returned error 27
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.internalSubset(test, , )
+SAX.elementDecl(test, 3, ...)
+SAX.entityDecl(xx, 4, (null), (null), %zz;)
+SAX.getParameterEntity(xx)
+SAX.entityDecl(zz, 4, (null), (null), <!ENTITY tricky "error-prone" >)
+SAX.getParameterEntity(zz)
+SAX.getParameterEntity(xx)
+SAX.error: PEReference: %xx; not found
+SAX.characters(This sample shows a , 20)
+SAX.getEntity(tricky)
+SAX.error: Entity 'tricky' not defined
+SAX.reference(tricky)
+SAX.characters( method., 8)
+SAX.endDocument()
+xmlSAXUserParseFile returned error 27
diff --git a/result/xmlid/id_err1.xml b/result/xmlid/id_err1.xml
new file mode 100644
index 0000000..2e47afd
--- /dev/null
+++ b/result/xmlid/id_err1.xml
@@ -0,0 +1,2 @@
+Object is a Node Set :
+Set contains 0 nodes:
diff --git a/result/xmlid/id_err1.xml.err b/result/xmlid/id_err1.xml.err
new file mode 100644
index 0000000..9efeb47
--- /dev/null
+++ b/result/xmlid/id_err1.xml.err
@@ -0,0 +1,3 @@
+./test/xmlid/id_err1.xml:1: validity error : xml:id : attribute value 0bar is not an NCName
+<foo xml:id="0bar"/>
+ ^
diff --git a/result/xmlid/id_err2.xml b/result/xmlid/id_err2.xml
new file mode 100644
index 0000000..33ee896
--- /dev/null
+++ b/result/xmlid/id_err2.xml
@@ -0,0 +1,6 @@
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT foo
+ ATTRIBUTE id
+ TEXT
+ content=bar
diff --git a/result/xmlid/id_err2.xml.err b/result/xmlid/id_err2.xml.err
new file mode 100644
index 0000000..9e974d4
--- /dev/null
+++ b/result/xmlid/id_err2.xml.err
@@ -0,0 +1,3 @@
+./test/xmlid/id_err2.xml:3: validity error : xml:id : attribute type should be ID
+<!ATTLIST foo xml:id CDATA #IMPLIED>
+ ^
diff --git a/result/xmlid/id_tst1.xml b/result/xmlid/id_tst1.xml
new file mode 100644
index 0000000..33ee896
--- /dev/null
+++ b/result/xmlid/id_tst1.xml
@@ -0,0 +1,6 @@
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT foo
+ ATTRIBUTE id
+ TEXT
+ content=bar
diff --git a/result/xmlid/id_tst1.xml.err b/result/xmlid/id_tst1.xml.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/xmlid/id_tst1.xml.err
diff --git a/result/xmlid/id_tst2.xml b/result/xmlid/id_tst2.xml
new file mode 100644
index 0000000..856a320
--- /dev/null
+++ b/result/xmlid/id_tst2.xml
@@ -0,0 +1,6 @@
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT n:foo
+ ATTRIBUTE id
+ TEXT
+ content=bar
diff --git a/result/xmlid/id_tst2.xml.err b/result/xmlid/id_tst2.xml.err
new file mode 100644
index 0000000..390d48d
--- /dev/null
+++ b/result/xmlid/id_tst2.xml.err
@@ -0,0 +1,3 @@
+./test/xmlid/id_tst2.xml:1: namespace error : Namespace prefix n on foo is not defined
+<n:foo xml:id="bar"/>
+ ^
diff --git a/result/xmlid/id_tst3.xml b/result/xmlid/id_tst3.xml
new file mode 100644
index 0000000..6d8865c
--- /dev/null
+++ b/result/xmlid/id_tst3.xml
@@ -0,0 +1,6 @@
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT f:o:o
+ ATTRIBUTE id
+ TEXT
+ content=bar
diff --git a/result/xmlid/id_tst3.xml.err b/result/xmlid/id_tst3.xml.err
new file mode 100644
index 0000000..7aa3e1c
--- /dev/null
+++ b/result/xmlid/id_tst3.xml.err
@@ -0,0 +1,6 @@
+./test/xmlid/id_tst3.xml:1: namespace error : Failed to parse QName 'f:o:'
+<f:o:o xml:id="bar"/>
+ ^
+./test/xmlid/id_tst3.xml:1: namespace error : Namespace prefix f on o:o is not defined
+<f:o:o xml:id="bar"/>
+ ^
diff --git a/result/xmlid/id_tst4.xml b/result/xmlid/id_tst4.xml
new file mode 100644
index 0000000..33ee896
--- /dev/null
+++ b/result/xmlid/id_tst4.xml
@@ -0,0 +1,6 @@
+Object is a Node Set :
+Set contains 1 nodes:
+1 ELEMENT foo
+ ATTRIBUTE id
+ TEXT
+ content=bar
diff --git a/result/xmlid/id_tst4.xml.err b/result/xmlid/id_tst4.xml.err
new file mode 100644
index 0000000..36c78c8
--- /dev/null
+++ b/result/xmlid/id_tst4.xml.err
@@ -0,0 +1,3 @@
+./test/xmlid/id_tst4.xml:3: element err: validity error : ID bar already defined
+<err xml:id="bar"/>
+ ^
diff --git a/runsuite.c b/runsuite.c
index d1dc2ca..aaab13e 100644
--- a/runsuite.c
+++ b/runsuite.c
@@ -1,16 +1,13 @@
/*
- * runsuite.c: C program to run libxml2 againts published testsuites
+ * runsuite.c: C program to run libxml2 againts published testsuites
*
* See Copyright for the status of this software.
*
* daniel@veillard.com
*/
-#ifdef HAVE_CONFIG_H
#include "libxml.h"
-#else
#include <stdio.h>
-#endif
#if !defined(_WIN32) || defined(__CYGWIN__)
#include <unistd.h>
@@ -38,10 +35,6 @@
static FILE *logfile = NULL;
static int verbose = 0;
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-#define vsnprintf _vsnprintf
-#define snprintf _snprintf
-#endif
/************************************************************************
* *
@@ -130,7 +123,7 @@ static int addEntity(char *name, char *content) {
* which is shared to the current running test. We also don't want to have
* network downloads modifying tests.
*/
-static xmlParserInputPtr
+static xmlParserInputPtr
testExternalEntityLoader(const char *URL, const char *ID,
xmlParserCtxtPtr ctxt) {
xmlParserInputPtr ret;
@@ -159,7 +152,7 @@ testExternalEntityLoader(const char *URL, const char *ID,
fprintf(stderr, "Failed to find resource %s\n", URL);
}
#endif
-
+
return(ret);
}
@@ -422,7 +415,7 @@ installDirs(xmlNodePtr tst, const xmlChar *base) {
xmlFree(res);
}
-static int
+static int
xsdTestCase(xmlNodePtr tst) {
xmlNodePtr test, tmp, cur;
xmlBufferPtr buf;
@@ -449,7 +442,7 @@ xsdTestCase(xmlNodePtr tst) {
if (cur == NULL) {
return(xsdIncorectTestCase(tst));
}
-
+
test = getNext(cur, "./*");
if (test == NULL) {
fprintf(stderr, "Failed to find test in correct line %ld\n",
@@ -495,7 +488,7 @@ xsdTestCase(xmlNodePtr tst) {
if (test == NULL) {
fprintf(stderr, "Failed to find test in <valid> line %ld\n",
xmlGetLineNo(tmp));
-
+
} else {
xmlBufferEmpty(buf);
if (dtd != NULL)
@@ -554,7 +547,7 @@ xsdTestCase(xmlNodePtr tst) {
if (test == NULL) {
fprintf(stderr, "Failed to find test in <invalid> line %ld\n",
xmlGetLineNo(tmp));
-
+
} else {
xmlBufferEmpty(buf);
xmlNodeDump(buf, test->doc, test, 0, 0);
@@ -615,7 +608,7 @@ done:
return(ret);
}
-static int
+static int
xsdTestSuite(xmlNodePtr cur) {
if (verbose) {
xmlChar *doc = getString(cur, "string(documentation)");
@@ -630,11 +623,11 @@ xsdTestSuite(xmlNodePtr cur) {
xsdTestCase(cur);
cur = getNext(cur, "following-sibling::testCase[1]");
}
-
+
return(0);
}
-static int
+static int
xsdTest(void) {
xmlDocPtr doc;
xmlNodePtr cur;
@@ -672,7 +665,7 @@ done:
return(ret);
}
-static int
+static int
rngTestSuite(xmlNodePtr cur) {
if (verbose) {
xmlChar *doc = getString(cur, "string(documentation)");
@@ -693,11 +686,11 @@ rngTestSuite(xmlNodePtr cur) {
xsdTestSuite(cur);
cur = getNext(cur, "following-sibling::testSuite[1]");
}
-
+
return(0);
}
-static int
+static int
rngTest1(void) {
xmlDocPtr doc;
xmlNodePtr cur;
@@ -735,7 +728,7 @@ done:
return(ret);
}
-static int
+static int
rngTest2(void) {
xmlDocPtr doc;
xmlNodePtr cur;
@@ -945,7 +938,7 @@ xstcTestGroup(xmlNodePtr cur, const char *base) {
instance = getNext(cur, "./ts:instanceTest[1]");
while (instance != NULL) {
if (schemas != NULL) {
- xstcTestInstance(instance, schemas, path, base);
+ xstcTestInstance(instance, schemas, path, base);
} else {
/*
* We'll automatically mark the instances as failed
diff --git a/runtest.c b/runtest.c
index dd74c88..02fe09a 100644
--- a/runtest.c
+++ b/runtest.c
@@ -11,11 +11,8 @@
* daniel@veillard.com
*/
-#ifdef HAVE_CONFIG_H
#include "libxml.h"
-#else
#include <stdio.h>
-#endif
#if !defined(_WIN32) || defined(__CYGWIN__)
#include <unistd.h>
@@ -195,10 +192,6 @@ static void globfree(glob_t *pglob) {
}
}
-#if !defined(__MINGW32__)
-#define vsnprintf _vsnprintf
-#define snprintf _snprintf
-#endif
#else
#include <glob.h>
#endif
@@ -1686,7 +1679,8 @@ saxParseTest(const char *filename, const char *result,
}
if (ret != 0) {
fprintf(stderr, "Failed to parse %s\n", filename);
- return(1);
+ ret = 1;
+ goto done;
}
#ifdef LIBXML_HTML_ENABLED
if (options & XML_PARSE_HTML) {
@@ -1708,6 +1702,8 @@ saxParseTest(const char *filename, const char *result,
fprintf(stderr, "Got a difference for %s\n", filename);
ret = 1;
}
+
+done:
if (temp != NULL) {
unlink(temp);
free(temp);
@@ -2100,7 +2096,7 @@ static void processNode(FILE *out, xmlTextReaderPtr reader) {
}
static int
streamProcessTest(const char *filename, const char *result, const char *err,
- xmlTextReaderPtr reader, const char *rng) {
+ xmlTextReaderPtr reader, const char *rng, int options) {
int ret;
char *temp = NULL;
FILE *t = NULL;
@@ -2196,7 +2192,7 @@ streamParseTest(const char *filename, const char *result, const char *err,
int ret;
reader = xmlReaderForFile(filename, NULL, options);
- ret = streamProcessTest(filename, result, err, reader, NULL);
+ ret = streamProcessTest(filename, result, err, reader, NULL, options);
xmlFreeTextReader(reader);
return(ret);
}
@@ -2224,7 +2220,7 @@ walkerParseTest(const char *filename, const char *result, const char *err,
return(-1);
}
reader = xmlReaderWalker(doc);
- ret = streamProcessTest(filename, result, err, reader, NULL);
+ ret = streamProcessTest(filename, result, err, reader, NULL, options);
xmlFreeTextReader(reader);
xmlFreeDoc(doc);
return(ret);
@@ -2256,7 +2252,7 @@ streamMemParseTest(const char *filename, const char *result, const char *err,
return(-1);
}
reader = xmlReaderForMemory(base, size, filename, NULL, options);
- ret = streamProcessTest(filename, result, err, reader, NULL);
+ ret = streamProcessTest(filename, result, err, reader, NULL, options);
free((char *)base);
xmlFreeTextReader(reader);
return(ret);
@@ -2731,7 +2727,7 @@ static const char *urip_testURLs[] = {
"file:///path/to/a%20b.html",
"/path/to/a b.html",
"/path/to/a%20b.html",
- "urip://example.com/résumé.html",
+ "urip://example.com/r" "\xe9" "sum" "\xe9" ".html",
"urip://example.com/test?a=1&b=2%263&c=4#foo",
NULL
};
@@ -3315,9 +3311,11 @@ rngStreamTest(const char *filename,
fprintf(stderr, "Failed to build reder for %s\n", instance);
}
if (disable_err == 1)
- ret = streamProcessTest(instance, result, NULL, reader, filename);
+ ret = streamProcessTest(instance, result, NULL, reader, filename,
+ options);
else
- ret = streamProcessTest(instance, result, err, reader, filename);
+ ret = streamProcessTest(instance, result, err, reader, filename,
+ options);
xmlFreeTextReader(reader);
if (ret != 0) {
fprintf(stderr, "instance %s failed\n", instance);
@@ -3939,60 +3937,7 @@ thread_specific_data(void *private_data)
return ((void *) Okay);
}
-#if defined(linux) || defined(__sun) || defined(__APPLE_CC__)
-
-#include <pthread.h>
-
-static pthread_t tid[MAX_ARGC];
-
-static int
-testThread(void)
-{
- unsigned int i, repeat;
- unsigned int num_threads = sizeof(testfiles) / sizeof(testfiles[0]);
- void *results[MAX_ARGC];
- int ret;
- int res = 0;
-
- xmlInitParser();
-
- for (repeat = 0; repeat < 500; repeat++) {
- xmlLoadCatalog(catalog);
- nb_tests++;
-
- for (i = 0; i < num_threads; i++) {
- results[i] = NULL;
- tid[i] = (pthread_t) - 1;
- }
-
- for (i = 0; i < num_threads; i++) {
- ret = pthread_create(&tid[i], 0, thread_specific_data,
- (void *) testfiles[i]);
- if (ret != 0) {
- fprintf(stderr, "pthread_create failed\n");
- return (1);
- }
- }
- for (i = 0; i < num_threads; i++) {
- ret = pthread_join(tid[i], &results[i]);
- if (ret != 0) {
- fprintf(stderr, "pthread_join failed\n");
- return (1);
- }
- }
-
- xmlCatalogCleanup();
- for (i = 0; i < num_threads; i++)
- if (results[i] != (void *) Okay) {
- fprintf(stderr, "Thread %d handling %s failed\n",
- i, testfiles[i]);
- res = 1;
- }
- }
- return (res);
-}
-
-#elif defined WIN32
+#if defined WIN32
#include <windows.h>
#include <string.h>
@@ -4118,6 +4063,59 @@ testThread(void)
return(1);
return (0);
}
+
+#elif defined HAVE_PTHREAD_H
+#include <pthread.h>
+
+static pthread_t tid[MAX_ARGC];
+
+static int
+testThread(void)
+{
+ unsigned int i, repeat;
+ unsigned int num_threads = sizeof(testfiles) / sizeof(testfiles[0]);
+ void *results[MAX_ARGC];
+ int ret;
+ int res = 0;
+
+ xmlInitParser();
+
+ for (repeat = 0; repeat < 500; repeat++) {
+ xmlLoadCatalog(catalog);
+ nb_tests++;
+
+ for (i = 0; i < num_threads; i++) {
+ results[i] = NULL;
+ tid[i] = (pthread_t) - 1;
+ }
+
+ for (i = 0; i < num_threads; i++) {
+ ret = pthread_create(&tid[i], 0, thread_specific_data,
+ (void *) testfiles[i]);
+ if (ret != 0) {
+ fprintf(stderr, "pthread_create failed\n");
+ return (1);
+ }
+ }
+ for (i = 0; i < num_threads; i++) {
+ ret = pthread_join(tid[i], &results[i]);
+ if (ret != 0) {
+ fprintf(stderr, "pthread_join failed\n");
+ return (1);
+ }
+ }
+
+ xmlCatalogCleanup();
+ for (i = 0; i < num_threads; i++)
+ if (results[i] != (void *) Okay) {
+ fprintf(stderr, "Thread %d handling %s failed\n",
+ i, testfiles[i]);
+ res = 1;
+ }
+ }
+ return (res);
+}
+
#else
static int
testThread(void)
@@ -4210,6 +4208,14 @@ testDesc testDescriptions[] = {
{ "Validity checking regression tests" ,
errParseTest, "./test/VC/*", "result/VC/", NULL, "",
XML_PARSE_DTDVALID },
+#ifdef LIBXML_READER_ENABLED
+ { "Streaming validity checking regression tests" ,
+ streamParseTest, "./test/valid/*.xml", "result/valid/", NULL, ".err.rdr",
+ XML_PARSE_DTDVALID },
+ { "Streaming validity error checking regression tests" ,
+ streamParseTest, "./test/VC/*", "result/VC/", NULL, ".rdr",
+ XML_PARSE_DTDVALID },
+#endif
{ "General documents valid regression tests" ,
errParseTest, "./test/valid/*", "result/valid/", "", ".err",
XML_PARSE_DTDVALID },
diff --git a/runxmlconf.c b/runxmlconf.c
index 52d50d7..cef20f4 100644
--- a/runxmlconf.c
+++ b/runxmlconf.c
@@ -6,11 +6,8 @@
* daniel@veillard.com
*/
-#ifdef HAVE_CONFIG_H
#include "libxml.h"
-#else
#include <stdio.h>
-#endif
#ifdef LIBXML_XPATH_ENABLED
@@ -37,10 +34,6 @@ static int verbose = 0;
#define NB_EXPECTED_ERRORS 15
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-#define vsnprintf _vsnprintf
-#define snprintf _snprintf
-#endif
const char *skipped_tests[] = {
/* http://lists.w3.org/Archives/Public/public-xml-testsuite/2008Jul/0000.html */
@@ -390,7 +383,7 @@ xmlconfTestItem(xmlDocPtr doc, xmlNodePtr cur) {
if (xmlStrEqual(type, BAD_CAST "not-wf")) {
if (nstest == 0)
xmlconfTestNotWF((char *) id, (char *) filename, options);
- else
+ else
xmlconfTestNotNSWF((char *) id, (char *) filename, options);
} else if (xmlStrEqual(type, BAD_CAST "valid")) {
options |= XML_PARSE_DTDVALID;
diff --git a/save.h b/save.h
new file mode 100644
index 0000000..2c32a10
--- /dev/null
+++ b/save.h
@@ -0,0 +1,35 @@
+/*
+ * Summary: Internal Interfaces for saving in libxml2
+ * Description: this module describes a few interfaces which were
+ * addded along with the API changes in 2.9.0
+ * those are private routines at this point
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: Daniel Veillard
+ */
+
+#ifndef __XML_SAVE_H__
+#define __XML_SAVE_H__
+
+#include <libxml/tree.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LIBXML_OUTPUT_ENABLED
+void xmlBufAttrSerializeTxtContent(xmlBufPtr buf, xmlDocPtr doc,
+ xmlAttrPtr attr, const xmlChar * string);
+void xmlBufDumpNotationTable(xmlBufPtr buf, xmlNotationTablePtr table);
+void xmlBufDumpElementDecl(xmlBufPtr buf, xmlElementPtr elem);
+void xmlBufDumpAttributeDecl(xmlBufPtr buf, xmlAttributePtr attr);
+void xmlBufDumpEntityDecl(xmlBufPtr buf, xmlEntityPtr ent);
+xmlChar *xmlEncodeAttributeEntities(xmlDocPtr doc, const xmlChar *input);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __XML_SAVE_H__ */
+
diff --git a/schematron.c b/schematron.c
index 07709e2..eb4befe 100644
--- a/schematron.c
+++ b/schematron.c
@@ -53,7 +53,7 @@ static const xmlChar *xmlOldSchematronNs = SCT_OLD_NS;
#define NEXT_SCHEMATRON(node) \
while (node != NULL) { \
- if ((node->type == XML_ELEMENT_NODE ) && (node->ns != NULL) && \
+ if ((node->type == XML_ELEMENT_NODE ) && (node->ns != NULL) && \
((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \
(xmlStrEqual(node->ns->href, xmlOldSchematronNs)))) \
break; \
@@ -65,7 +65,7 @@ static const xmlChar *xmlOldSchematronNs = SCT_OLD_NS;
*
* macro to flag unimplemented blocks
*/
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -165,8 +165,10 @@ struct _xmlSchematronValidCtxt {
FILE *outputFile; /* if using XML_SCHEMATRON_OUT_FILE */
xmlBufferPtr outputBuffer; /* if using XML_SCHEMATRON_OUT_BUFFER */
+#ifdef LIBXML_OUTPUT_ENABLED
xmlOutputWriteCallback iowrite; /* if using XML_SCHEMATRON_OUT_IO */
xmlOutputCloseCallback ioclose;
+#endif
void *ioctx;
/* error reporting data */
@@ -240,7 +242,7 @@ xmlSchematronPErrMemory(xmlSchematronParserCtxtPtr ctxt,
* @msg: the error message
* @str1: extra data
* @str2: extra data
- *
+ *
* Handle a parser error
*/
static void
@@ -568,7 +570,7 @@ xmlSchematronFree(xmlSchematronPtr schema)
if (schema->namespaces != NULL)
xmlFree((char **) schema->namespaces);
-
+
xmlSchematronFreeRules(schema->rules);
xmlSchematronFreePatterns(schema->patterns);
xmlDictFree(schema->dict);
@@ -826,9 +828,9 @@ xmlSchematronAddNamespace(xmlSchematronParserCtxtPtr ctxt,
ctxt->namespaces = tmp;
ctxt->maxNamespaces *= 2;
}
- ctxt->namespaces[2 * ctxt->nbNamespaces] =
+ ctxt->namespaces[2 * ctxt->nbNamespaces] =
xmlDictLookup(ctxt->dict, ns, -1);
- ctxt->namespaces[2 * ctxt->nbNamespaces + 1] =
+ ctxt->namespaces[2 * ctxt->nbNamespaces + 1] =
xmlDictLookup(ctxt->dict, prefix, -1);
ctxt->nbNamespaces++;
ctxt->namespaces[2 * ctxt->nbNamespaces] = NULL;
@@ -1288,7 +1290,7 @@ xmlSchematronReportOutput(xmlSchematronValidCtxtPtr ctxt ATTRIBUTE_UNUSED,
* to be deallocated by teh caller
*/
static xmlChar *
-xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt,
+xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt,
xmlNodePtr test, xmlNodePtr cur) {
xmlChar *ret = NULL;
xmlNodePtr child, node;
@@ -1314,7 +1316,7 @@ xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt,
xmlFree(path);
}
- if ((node->ns == NULL) || (node->ns->prefix == NULL))
+ if ((node->ns == NULL) || (node->ns->prefix == NULL))
ret = xmlStrcat(ret, node->name);
else {
ret = xmlStrcat(ret, node->ns->prefix);
@@ -1365,7 +1367,7 @@ xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt,
* been done.
*/
static void
-xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt,
+xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt,
xmlSchematronTestPtr test, xmlNodePtr cur, xmlSchematronPatternPtr pattern, int success) {
if ((ctxt == NULL) || (cur == NULL) || (test == NULL))
return;
@@ -1445,7 +1447,7 @@ xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt,
* called from the validation engine when starting to check a pattern
*/
static void
-xmlSchematronReportPattern(xmlSchematronValidCtxtPtr ctxt,
+xmlSchematronReportPattern(xmlSchematronValidCtxtPtr ctxt,
xmlSchematronPatternPtr pattern) {
if ((ctxt == NULL) || (pattern == NULL))
return;
@@ -1572,7 +1574,7 @@ xmlSchematronNextNode(xmlNodePtr cur) {
(cur->type != XML_DTD_NODE))
return(cur);
}
-
+
do {
cur = cur->parent;
if (cur == NULL) break;
@@ -1589,7 +1591,7 @@ xmlSchematronNextNode(xmlNodePtr cur) {
* xmlSchematronRunTest:
* @ctxt: the schema validation context
* @test: the current test
- * @instance: the document instace tree
+ * @instance: the document instace tree
* @cur: the current node in the instance
*
* Validate a rule against a tree instance at a given position
@@ -1653,7 +1655,7 @@ xmlSchematronRunTest(xmlSchematronValidCtxtPtr ctxt,
/**
* xmlSchematronValidateDoc:
* @ctxt: the schema validation context
- * @instance: the document instace tree
+ * @instance: the document instace tree
*
* Validate a tree instance against the schematron
*
@@ -1697,7 +1699,7 @@ xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance)
}
rule = rule->next;
}
-
+
cur = xmlSchematronNextNode(cur);
}
} else {
@@ -1705,14 +1707,14 @@ xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance)
* Process all contexts one at a time
*/
pattern = ctxt->schema->patterns;
-
+
while (pattern != NULL) {
xmlSchematronReportPattern(ctxt, pattern);
/*
* TODO convert the pattern rule to a direct XPath and
* compute directly instead of using the pattern matching
- * over the full document...
+ * over the full document...
* Check the exact semantic
*/
cur = root;
@@ -1728,7 +1730,7 @@ xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance)
}
rule = rule->patnext;
}
-
+
cur = xmlSchematronNextNode(cur);
}
pattern = pattern->next;
diff --git a/test/HTML/53867.html b/test/HTML/53867.html
new file mode 100644
index 0000000..ac27999
--- /dev/null
+++ b/test/HTML/53867.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+<style>
+.......
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+...............................................................
+</style>
+</head>
+</html>
diff --git a/test/HTML/Down.html b/test/HTML/Down.html
new file mode 100644
index 0000000..92eca21
--- /dev/null
+++ b/test/HTML/Down.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+ <title>This service is temporary down</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+<h1 align="center">Sorry, this service is temporary down</h1>
+We are doing our best to get it back on-line,
+
+<p>The W3C system administrators</p>
+</body>
+</html>
diff --git a/test/HTML/attrents.html b/test/HTML/attrents.html
new file mode 100644
index 0000000..8486ec0
--- /dev/null
+++ b/test/HTML/attrents.html
@@ -0,0 +1,5 @@
+<html>
+<body bgcolor="#FFFFFF">
+ <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#97;&#116;&#104;&#101;&#114;&#105;&#110;&#101;&#64;&#99;&#98;&#102;&#97;&#110;&#99;&#46;&#111;&#114;&#103;&#44;&#119;&#101;&#98;&#115;&#105;&#116;&#101;&#64;&#98;&#105;&#115;&#46;&#100;&#111;&#99;&#46;&#103;&#111;&#118;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#83;&#111;&#117;&#116;&#104;&#32;&#83;&#97;&#110;&#32;&#70;&#114;&#97;&#110;&#99;&#105;&#115;&#99;&#111;&#32;&#66;&#73;&#83;&#32;&#83;&#101;&#109;&#105;&#110;&#97;&#114;&#32;&#45;&#32;&#79;&#99;&#116;&#111;&#98;&#101;&#114;&#32;&#49;&#54;&#116;&#104;"></a><br>
+</body>
+</html>
diff --git a/test/HTML/autoclose.html b/test/HTML/autoclose.html
new file mode 100644
index 0000000..e123ba7
--- /dev/null
+++ b/test/HTML/autoclose.html
@@ -0,0 +1 @@
+<hr>
diff --git a/test/HTML/autoclose2.html b/test/HTML/autoclose2.html
new file mode 100644
index 0000000..d40082c
--- /dev/null
+++ b/test/HTML/autoclose2.html
@@ -0,0 +1 @@
+<p>toto
diff --git a/test/HTML/autoclose3.html b/test/HTML/autoclose3.html
new file mode 100644
index 0000000..8c7a45a
--- /dev/null
+++ b/test/HTML/autoclose3.html
@@ -0,0 +1,3 @@
+<ul>
+<li>item 1
+<li>item 2
diff --git a/test/HTML/cf_128.html b/test/HTML/cf_128.html
new file mode 100644
index 0000000..4cd118c
--- /dev/null
+++ b/test/HTML/cf_128.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<title>gnome-xml push mode bug</title>
+</head>
+<body>
+
+<table border="4">
+ <tr>
+ <td bgcolor="white">
+ Foo1
+ <table border="4">
+ <tr>
+ <td>Foo2<p><p></td></tr></table>
+ </td>
+ <td bgcolor="blue">Foo3</td>
+ </tr>
+ </table>
+ </body>
+</html>
diff --git a/test/HTML/doc2.htm b/test/HTML/doc2.htm
new file mode 100644
index 0000000..ff6f285
--- /dev/null
+++ b/test/HTML/doc2.htm
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- saved from url=(0016)http://intranet/ -->
+<!-- BEGIN Naviscope Javascript --><HTML><HEAD><TITLE>Welcome to Copernic.com</TITLE>
+<SCRIPT language=javascript>
+ NS_ActualOpen=window.open;
+ function NS_NullWindow(){this.window;}
+ function NS_NewOpen(url,nam,atr){return(new NS_NullWindow());}
+ window.open=NS_NewOpen;
+</SCRIPT>
+<!-- END Naviscope Javascript --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- saved from url=(0027)http://www.agents-tech.com/ -->
+<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
+<META
+content="Copernic.com Inc. develops innovative agent technology solutions to efficiently access and manage the overwhelming quantity of information available on the Internet and intranets."
+name=DESCRIPTION>
+<META
+content=agent,technology,intranet,extranet,management,filtering,ranking,solution,service,intelligent,intelligence,client,server,architecture,developer,development,information,telecommunication,announcement,press,product,profile,contact,multi-agent,meta-search,metasearch,multi-thread,mobile,wireless,shopping,robot,PCS,Copernic,engine,toolkit,CDK,EDK
+name=KEYWORDS>
+<META content="MSHTML 5.00.3103.1000" name=GENERATOR></HEAD><FRAMESET
+border=false cols=172,* frameBorder=0 frameSpacing=0><FRAME marginHeight=0
+marginWidth=0 name=left noResize scrolling=no src="doc2_files/side.htm"
+target="rtop"><FRAMESET rows=43,*><FRAME marginHeight=0 marginWidth=0 name=rtop
+noResize scrolling=no src="doc2_files/top.htm" target="rbottom"><FRAME
+name=rbottom noResize src="doc2_files/contents.htm"
+target="_top"></FRAMESET><NOFRAMES>
+
+ <body bgcolor="#FFFFFF" text="#000000" link="#000080" vlink="#000080" alink="#000080"
+ topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
+ <p>This page uses frames, but your browser doesn't support them.</p>
+ </body>
+ </NOFRAMES></FRAMESET></HTML>
diff --git a/test/HTML/doc3.htm b/test/HTML/doc3.htm
new file mode 100644
index 0000000..ba28998
--- /dev/null
+++ b/test/HTML/doc3.htm
@@ -0,0 +1,851 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!-- saved from url=(0025)http://bp6.gamesquad.net/ -->
+<!-- BEGIN Naviscope Javascript --><HTML><HEAD><TITLE>BP6.com #1 online resource for the BP6 Mobo....</TITLE>
+<SCRIPT language=javascript>
+ NS_ActualOpen=window.open;
+ function NS_NullWindow(){this.window;}
+ function NS_NewOpen(url,nam,atr){return(new NS_NullWindow());}
+ window.open=NS_NewOpen;
+</SCRIPT>
+<!-- END Naviscope Javascript --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><!--last modified on Tuesday, February 22, 2000 11:47 PM -->
+<META content=text/html;CHARSET=iso-8859-1 http-equiv=Content-Type>
+<META content=Tim name=Author>
+<STYLE type=text/css>A.nav {
+ COLOR: #003399; TEXT-DECORATION: none
+}
+A.nav:hover {
+ COLOR: #3366cc; TEXT-DECORATION: underline
+}
+</STYLE>
+
+<SCRIPT language=JavaScript>
+<!-- Idea by: Nic Wolfe (Nic@TimelapseProductions.com) -->
+<!-- Web URL: http://fineline.xs.mw -->
+
+<!-- This script and many more are available free online at -->
+<!-- The JavaScript Source!! http://javascript.internet.com -->
+
+<!-- Begin
+function popUp(URL) {
+day = new Date();
+id = day.getTime();
+eval("page" + id + " = window.open(URL, '" + id + "', 'toolbars=0, scrollbars=0, location=0, statusbars=0, menubars=0, resizable=0, width=145, height=250');");
+}
+// End -->
+</SCRIPT>
+
+<META content="MSHTML 5.00.3103.1000" name=GENERATOR></HEAD>
+<BODY aLink=red bgColor=black link=red text=white vLink=red>
+<P>
+<DIV align=center>
+<TABLE border=0 cellPadding=0 cellSpacing=0 width="80%">
+ <TBODY>
+ <TR>
+ <TD vAlign=top width=31><A href="http://bp6.gamesquad.net/"><IMG
+ align=bottom border=0 height=74 src="doc3_files/logo.gif"
+width=252></A></TD>
+ <TD align=left bgColor=#000000><IMG height=15 src="doc3_files/spacer.gif"
+ width=15><!-- START GAMESQUAD.NET IFRAME RICH MEDIA CODE --> <!-- © 2000 GameSquad.net All Rights Reserved. --><IFRAME border=0
+ frameBorder=no height=60 marginHeight=0 marginWidth=0 scrolling=no
+ src="doc3_files/adcycle.htm"
+ width=468>
+<a href="http://ads.gamesquad.net/addclick.exe/adclick.cgi?REGION=game|tech|ent&id=1" target="_top"><img src="http://ads.gamesquad.net/addclick.exe/adcycle.cgi?group=52&media=1&id=1" width=468 height=60 border=0 ALT="GSN ROS Ad"></a>
+</IFRAME><!-- END GAMESQUAD.NET IFRAME RICH MEDIA CODE --><BR><IMG
+ height=15 src="doc3_files/spacer.gif" width=400> </TD></TR>
+ <TR>
+ <TD bgColor=#003399 colSpan=2>
+ <P align=right><IMG align=right border=0 height=18 hspace=0
+ src="doc3_files/trcorner.gif" width=20><IMG align=left border=0 height=18
+ hspace=0 src="doc3_files/tlcorner.gif" width=20><FONT face=Verdana
+ size=2>Monday, July 31st, 2000</FONT> </P></TD></TR>
+ <TR>
+ <TD colSpan=2>
+ <TABLE bgColor=#003399 border=0 cellPadding=0 cellSpacing=4
+ width="100%"><TBODY>
+ <TR>
+ <TD bgColor=#666666 width="100%">
+ <CENTER>
+ <P>
+ <TABLE bgColor=black border=0 cellPadding=0 cellSpacing=1
+ width="100%">
+ <TBODY>
+ <TR>
+ <TD background=doc3_files/hscan.gif bgColor=#666666
+ width="100%"><IMG height=1 src="doc3_files/spacer.gif"
+ width=738><BR>
+ <CENTER>
+ <TABLE border=0 cellPadding=2 cellSpacing=0 width="91%">
+ <TBODY>
+ <TR>
+ <TD vAlign=top width="15%">
+ <P align=center><A
+ href="http://bp6.gamesquad.net/specs.phtml"><IMG
+ align=bottom
+ alt="Abit BP6 Motherboard specification and information."
+ border=0 height=45 src="doc3_files/bp6icon.gif"
+ width=70></A><FONT face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/specs.phtml"><FONT
+ color=white face=Verdana size=1>BP6 Specs</FONT></A>
+ </P></TD>
+ <TD vAlign=top width="15%">
+ <P align=center><A
+ href="http://bp6.gamesquad.net/bxcool.phtml"><IMG
+ align=bottom
+ alt="How to cool the BX Chipset on your BP6." border=0
+ height=45 src="doc3_files/bxcool.gif" width=70></A><FONT
+ face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/uc.phtml"><FONT
+ color=white face=Verdana size=1>BX Cooling</FONT></A>
+ </P></TD>
+ <TD vAlign=top width="15%">
+ <P align=center><A
+ href="http://bp6.gamesquad.net/contest.phtml"><IMG
+ align=bottom
+ alt="The U;timate Gaming Contest - Coming Soon!"
+ border=0 height=45 src="doc3_files/ugmcontest.gif"
+ width=70></A><FONT face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/contest.phtml"><FONT
+ color=white face=Verdana size=1>UGM Contest</FONT></A>
+ </P></TD>
+ <TD vAlign=top width="15%">
+ <P align=center><A
+ href="http://bp6.gamesquad.net/uc.phtml"><IMG
+ align=bottom
+ alt="Cooling &amp; Heatsink review for the BP6."
+ border=0 height=45 src="doc3_files/alpha.gif"
+ width=70></A><FONT face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/uc.phtml"><FONT
+ color=white face=Verdana size=1>Heatsinks</FONT></A>
+ </P></TD>
+ <TD vAlign=top width="15%">
+ <P align=center><A
+ href="http://bp6.gamesquad.net/101.phtml"><IMG
+ align=bottom
+ alt="BP6 101 - Class is now in session. Welcome newbies!"
+ border=0 height=45 src="doc3_files/bp6101.gif"
+ width=70></A><FONT face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/101.phtml"><FONT
+ color=white face=Verdana size=1>BP6 101</FONT></A>
+ </P></TD>
+ <TD vAlign=top width="15%">
+ <P align=center><A
+ href="http://bp6.gamesquad.net/win2k_install.phtml"><IMG
+ align=bottom
+ alt="Install guide for installing Windows 2000 on the BP6 "
+ border=0 height=45 src="doc3_files/win2kht.gif"
+ width=70></A><FONT face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/win2k_install.phtml"><FONT
+ color=white face=Verdana size=1>Win2k Install</FONT></A>
+ </P></TD>
+ <TD vAlign=top width="15%">
+ <P align=center><A href="http://www.gentus.com/"><IMG
+ align=bottom
+ alt="Taking a first look at the Abit Linux release called "
+ border=0 height=45 src="doc3_files/gentusbox.gif"
+ width=70 Gentus?.?></A><BR><A
+ href="http://www.gentus.com/"><FONT color=white
+ face=Verdana size=1>Gentus</FONT></A>
+ </P></TD></TR></TBODY></TABLE></CENTER></TD></TR></TBODY></TABLE></CENTER></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
+<TABLE bgColor=#003399 border=0 cellSpacing=6 width="80%">
+ <TBODY>
+ <TR>
+ <TD bgColor=black vAlign=top width="10%">
+ <TABLE border=0 cellPadding=3 cellSpacing=0 width="100%">
+ <TBODY>
+ <TR>
+ <TD width="100%"><IMG height=1 src="doc3_files/spacer.gif"
+ width=111><BR><B><FONT color=yellow face=Verdana
+ size=2>REVIEWS</FONT></B><FONT face=Verdana size=2><BR>
+ <HR align=center>
+ </FONT><A href="http://bp6.gamesquad.net/bp6reviews.phtml"><FONT
+ color=white face=Verdana size=1>BP6 Reviews</FONT></A><FONT
+ face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/h2o.phtml"><FONT color=white
+ face=Verdana size=1>BP6 Watercooling</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/bxcool.phtml"><FONT color=white
+ face=Verdana size=1>BX Chipset Cooling</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/benchmark.phtml"><FONT color=white
+ face=Verdana size=1>Benchmarks</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/bp6fsb.phtml"><FONT color=white
+ face=Verdana size=1>BP6FSB Utility</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/powerleap.phtml"><FONT color=white
+ face=Verdana size=1>PowerLeap NEO S370</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/seti.phtml"><FONT color=white
+ face=Verdana size=1>SETI on the BP6</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/orbs.phtml"><FONT color=white
+ face=Verdana size=1>Golden Orbs I</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/orbs/orbs2.phtml"><FONT color=white
+ face=Verdana size=1>Golden Orbs II</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/Q6fix.phtml"><FONT color=white
+ face=Verdana size=1>VTT Solution</FONT></A><FONT face=Verdana
+ size=1><BR><BR></FONT><B><FONT color=yellow face=Verdana
+ size=2>NAVIGATE</FONT></B><FONT color=yellow face=Verdana size=2>
+ <HR align=center>
+ </FONT><A href="http://www.bp6.com/"><FONT color=white face=Verdana
+ size=1>News</FONT></A><FONT face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/chat.phtml"><FONT color=white
+ face=Verdana size=1>Online Text Chat</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A href="javascript:popUp('chat_popup.htm')"><FONT
+ color=white face=Verdana size=1>Voice Chat</FONT></A><BR><A
+ href="http://216.247.220.192/Forum"><FONT color=white face=Verdana
+ size=1>Messageboard</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A href="http://bp6.gamesquad.net/cooling"><FONT
+ color=white face=Verdana size=1>Temp. Converter</FONT></A><FONT
+ face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/uc.phtml"><FONT color=white
+ face=Verdana size=1>Picture Gallery</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/bios.phtml"><FONT color=white
+ face=Verdana size=1>Latest BIOS</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A href="http://bp6.gamesquad.net/files/"><FONT
+ color=white face=Verdana size=1>Drivers &amp; Files</FONT></A><FONT
+ face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/uc.phtml"><FONT color=white
+ face=Verdana size=1>UGM of the week</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/contest.phtml"><FONT color=white
+ face=Verdana size=1>BP6 Contest</FONT></A><FONT face=Verdana
+ size=1><BR><BR></FONT><B><FONT color=yellow face=Verdana
+ size=2>OTHER STUFF</FONT></B><FONT color=yellow face=Verdana size=2>
+
+ <HR align=center>
+ </FONT><A href="http://bp6.gamesquad.net/whois.phtml"><FONT
+ color=white face=Verdana size=1>Who is Tim?</FONT></A><FONT
+ face=Verdana size=1><BR></FONT><A href="mailto:tim@bp6.com"><FONT
+ color=white face=Verdana size=1>Contact BP6.com</FONT></A><FONT
+ face=Verdana size=1><BR></FONT><A
+ href="http://bp6.gamesquad.net/uc.phtml"><FONT color=white
+ face=Verdana size=1>Affiliates Section</FONT></A><FONT face=Verdana
+ size=1><BR></FONT><A href="http://bp6.gamesquad.net/uc.phtml"><FONT
+ color=white face=Verdana size=1>Sponsors Section <BR></FONT><A
+ href="http://bp6.gamesquad.net/links.phtml"><FONT color=white
+ face=Verdana size=1>Links<BR><BR></FONT></A><B><FONT color=yellow
+ face=Verdana size=2>PC SPECIALS</FONT></B><FONT color=yellow
+ face=Verdana size=2>
+ <HR align=center>
+ </FONT><A href="http://bp6.gamesquad.net/specials.phtml"><FONT
+ color=white face=Verdana size=1>Vendor
+ Specials<BR><BR></FONT></A><BR></FONT></A><B><FONT color=yellow
+ face=Verdana size=2>Pic of the day</FONT></B>
+ <HR>
+
+ <CENTER>
+ <P align=center><FONT face="Verdana, Arial, Helvetica" size=1><A
+ href="http://bp6.gamesquad.net/cgi-bin/schlabo/potd.pl"><IMG
+ alt="No picture is available for today." border=0
+ src="doc3_files/potd_na_110x83.gif"></A> </FONT></P></CENTER><BR>
+ <CENTER></CENTER><BR><!--<A HREF="code:javascript:ID_FTPWebView.InvokeHelp()"><FONT SIZE="1" COLOR="white" FACE="Verdana">FTP Help</FONT></A>--></TD></TR></TBODY></TABLE></TD>
+ <TD bgColor=white vAlign=top width="80%"><IMG height=1
+ src="doc3_files/spacer.gif" width=490><BR>
+ <CENTER>
+ <P>
+ <TABLE bgColor=white border=0 cellPadding=10 cellSpacing=0 height="100%"
+ width="100%">
+ <TBODY>
+ <TR>
+ <TD bgColor=white vAlign=top width="100%">
+ <CENTER><A href="http://www.encounter2001.com/" target=_blank><IMG
+ border=0 height=60 src="doc3_files/banner2.gif" width=468></A>
+ </CENTER><BR><A name=news_top></A><FONT color=#003366
+ face=verdana,arial size=2><B>Headlines</B></FONT><BR><FONT
+ face=arial size=1><A class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem965012956,78924,">Chat
+ with ABIT - 8:09PM PDT</A></FONT><BR><FONT face=arial size=1><A
+ class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964766837,26344,">Fixed
+ wallpaper - 11:47PM PDT</A></FONT><BR><FONT face=arial size=1><A
+ class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964762841,25865,">Seti
+ update - 10:40PM PDT</A></FONT><BR><FONT face=arial size=1><A
+ class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964732235,45502,">Judge
+ gives Napster the Boot!! - 2:10PM PDT</A></FONT><BR><FONT face=arial
+ size=1><A class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964713289,83675,">Ram
+ Sinks.. more cooling for small places. - 8:54AM
+ PDT</A></FONT><BR><FONT face=arial size=1><A class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964671589,7831,">is
+ it [H]ard? - 9:19PM PDT</A></FONT><BR><FONT face=arial size=1><A
+ class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964644047,60218,">WiLd
+ CaSe!! - 1:40PM PDT</A></FONT><BR><FONT face=arial size=1><A
+ class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964631110,84122,">What
+ the heck is a Peltier?!?! - 10:05AM PDT</A></FONT><BR><FONT
+ face=arial size=1><A class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964587833,74573,">HELLO
+ EVERYONE!!! - 10:03PM PDT</A></FONT><BR><FONT face=arial size=1><A
+ class=nav
+ href="http://bp6.gamesquad.net/index.phtml#newsitem964429577,13375,">BP6
+ Q3 server up and running.. - 2:06AM PDT</A></FONT><BR><BR><!-- NP v3.7.5 --><A
+ name=newsitem965012956,78924,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Sunday,
+ July 30, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>Chat with
+ ABIT</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 8:09PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/965012956,78924,.html"><IMG
+ border=0 src="doc3_files/comments.gif">0 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>I&#8217;m slacking a little. All game no
+ work makes Holodeck2 a happy boy :-)<BR><BR>Wallpaper update: I got
+ off my lazy ass and redid the 1280x1024 wall paper, now it has the 2
+ celerons.<BR><BR><B><A href="http://fullon3d.com/chat/abit/"
+ target=3d>Fullon3d had a live chat with that Eric guy from Abit.
+ </A></B>Submitted by: MJS<BR><BR>Here&#8217;s a little clip:<BR>[Falcon]
+ BP6-2??<BR>[EricBoeing] We already have a micro ATX dual flip-chip
+ board<BR>[EricBoeing] but it's OEM only<BR>[EricBoeing] the full ATX
+ version should be out Septemberish<BR></FONT><BR><BR><A
+ name=newsitem964766837,26344,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Thursday,
+ July 27, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>Fixed
+ wallpaper</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 11:47PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964766837,26344,.html"><IMG
+ border=0 src="doc3_files/comments.gif">5 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2><B>Get them now!!</B><BR>This is a
+ fixed bp6 wallpaper. In all the popular flavors, err...
+ resolutions.<BR><IMG height=180 src="doc3_files/3-800.jpg"
+ width=240><BR>It's still the Intels Inside one with a spelling
+ change; from "Mothboard" to "Motherboard"<BR><BR>Thanks to Matt for
+ pointing that out to me.<BR>I would also like to thank Kevin for
+ hosting my last batch and Radu for the previous "DUEL"/"DUAL"
+ error.<BR>And 1 more person, THANK YOU TIM for letting me borrow
+ your server space ;-)<BR><BR>If you need a weird resolution, feel
+ free to <A href="mailto:Holodeck2@home.com">e-mail</A> me requesting
+ for one.<BR>If you have ideas or more errors to point out, <A
+ href="mailto:Holodeck2@home.com">mailto:Holodeck2@home.com</A><BR><BR><A
+ href="doc3_files/3-800.jpg" target=800>800x600 </A><BR><A
+ href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1024.jpg"
+ target=800>1024x768 </A><BR><A
+ href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1152.jpg"
+ target=800>1152x864 </A><BR><A
+ href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1280x1024.jpg"
+ target=800>1280x1024 </A><BR><A
+ href="http://www.bp6.com/pics/holodeck2/wallpaper/3-1600.jpg"
+ target=800>1600x1200 </A><BR>
+ <P>Enjoy :-)<BR>
+ <P><A href="mailto:Holodeck2@home.com">Holodeck2,</A><BR>[H]ard at
+ work on the Brand Spanking New Wallpaper.<BR></FONT><BR><BR><A
+ name=newsitem964762841,25865,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>Seti update</FONT></U></B><BR><FONT
+ color=#0066cc face=Arial size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 10:40PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964762841,25865,.html"><IMG
+ border=0 src="doc3_files/comments.gif">5 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2><IMG height=54
+ src="doc3_files/setiupdate.jpg" width=400><BR>You like the
+ pic?<BR><BR>Bp6 User Group Update:<BR>Completed 61531
+ units!!<BR><B>#168 on Top 200 All Groups</B> (Going to pass CLRC in
+ a few days)<BR><B>#74 on Top 200 Teams</B> (Gaining fast on
+ Starfleet)<BR><BR>We are flying though at the speed of light (may be
+ a little slower).<BR>Good job everyone!!<BR><BR>Check this page at
+ least once a day for new stuff :-)<BR></FONT><BR><BR><A
+ name=newsitem964732235,45502,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>Judge gives Napster the
+ Boot!!</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 2:10PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964732235,45502,.html"><IMG
+ border=0 src="doc3_files/comments.gif">0 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Good afternoon for everyone living in
+ EST. I was going to post today morning but I didn't. Here's my
+ story:<BR>I woke up and thought about posting something but I
+ decided to wax my car before the sun came up (draw your own
+ conclusions), wax on, wax off, wax on,..., did that for about an
+ hour. Then I saw the sun rise (Aaahh I'm melting... not). I sat in
+ front of my comp and started to search for good news to post. Saw
+ that a stoopid judge temporally shuts down napster. Goes to room and
+ cry. and now I'm here :-)<BR><BR><A
+ href="http://www.msnbc.com/news/437532.asp"
+ target="Judge vs Napster">Judge shuts Napster down
+ <P><IMG height=143 src="doc3_files/669915.jpg"
+ width=200></A><BR>Check out the Goofy guy in the suit<BR>He's Sean
+ Fanning, founder of Napster.<BR><BR>Got news?? <A
+ href="mailto:Holodeck2@home.com">mailto:Holodeck2@home.com</A><BR></FONT><BR><BR><A
+ name=newsitem964713289,83675,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>Ram Sinks.. more cooling for small
+ places.</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:tim@bp6.com">tim</A> @ 8:54AM PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964713289,83675,.html"><IMG
+ border=0 src="doc3_files/comments.gif">0 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Need some cooling for your Videocard
+ memory to get a little extra overclockability and FPS? <A
+ href="http://www.overclockershideout.com/RamSinks.html"
+ target=_BLANK>Overclockers Hiedout Ram Sinks</A> They just notified
+ me of their new design.<BR><IMG border=1
+ src="doc3_files/ramsink.jpg"></FONT><BR><BR><A
+ name=newsitem964671589,7831,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial
+ size=2><B>Wednesday, July 26,
+ 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>is it
+ [H]ard?</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 9:19PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964671589,7831,.html"><IMG
+ border=0 src="doc3_files/comments.gif">0 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Big heatsinks are good, very good. The
+ bigger the better.<BR>You can never can have a too big of heatsink
+ on a small chip (CPU, GPU, CHIPSET, etc)<BR><BR><IMG height=173
+ src="doc3_files/voodooside2.jpg" width=230><BR>My overclocked
+ Voodoo3 2000 with a BIG mofo heatsink on top.<BR>Peltier and
+ watercooling next up :-)<BR>(if you pry off the heatsink you void
+ the warranty )<BR><BR>it was originally posted on <A
+ href="http://www.hardocp.com/">[H]ardOCP </A><BR>I&#8217;m not only a
+ BP6er but also a [H]ardOCPer<BR></FONT><BR><BR><A
+ name=newsitem964644047,60218,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>WiLd CaSe!!</FONT></U></B><BR><FONT
+ color=#0066cc face=Arial size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 1:40PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964644047,60218,.html"><IMG
+ border=0 src="doc3_files/comments.gif">8 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Now this person really knows how to
+ keep his case cool!!<BR>Addin an 18" Fan!! WOW!!<BR><BR><A
+ href="http://www.envador.com/Photos/PVCII/" target=_blank><IMG
+ src="doc3_files/TN_OpenedUp1.jpg"></A><BR>Click to go to his
+ site.<BR></FONT><BR><BR><A
+ name=newsitem964631110,84122,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>What the heck is a
+ Peltier?!?!</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 10:05AM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964631110,84122,.html"><IMG
+ border=0 src="doc3_files/comments.gif">6 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>This is for all you people who wanted
+ to know what a peltier is.<BR><BR>The quest fo the Perfect
+ Peltier<BR><A
+ href="http://www.tweakmax.com/html/peltier/peltier-1.cfm"
+ target=_blank><IMG src="doc3_files/peltier.jpg"></A> <BR>Thanks to
+ <A href="http://www.tweakmax.com/" target=_blank>TweakMax.com</A>
+ <BR><BR>Note: Today morning when I woke up I saw my whole screen
+ cluttered with a bunch of IMs!! I live in the USA on EST. If you
+ live somewhere else please check the time in my area. for example:
+ If you live in Europe and IM me in the morning your time I would be
+ sleeping it would be like 4 in the morning here. Just to let you
+ know <IMG src="doc3_files/smile.gif"><BR>I'm not angry at anyone...
+ good thing I have a long fuse <IMG
+ src="doc3_files/tongue.gif"><BR></FONT><BR><BR><A
+ name=newsitem964587833,74573,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Tuesday,
+ July 25, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>HELLO
+ EVERYONE!!!</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:Holodeck@bp6.com">Holodeck2</A> @ 10:03PM
+ PDT</SMALL>&nbsp; <BR><FONT color=black face=Arial size=2>Hello
+ everyone, Woohoo!! I'm on!!<BR>Who is this Holodeck2 person
+ anyways?!?! Read on :-)<BR>I&#8217;m a regular on the bp6 messageboard,
+ trying to help people out with their problems.<BR>I&#8217;m the
+ self-proclaimed bp6 cooling expert, If you have a cooling idea, I&#8217;ve
+ probably already done it and can offer some incite.<BR>My computer
+ is always on so you can contact me whenever... problem is, I'm not
+ always in front of it. I'll try to update this page and keep
+ everyone happy :-)<BR>Any Questions or comments, you can either
+ contact me or post it on the messageboard.<BR><BR>Ways to contact
+ me.<BR>E-mail: <A
+ href="mailto:Holodeck2@home.com">Holodeck2@home.com</A> (All E-mails
+ will be answered in 24 hours or less, I guarantee it.)<BR>When you
+ write me an e-mail please put in the subject line "BP6" then the
+ rest of your subject so my e-mail program can sort it, thanks<BR><A
+ href="http://www.aol.com/aim">AIM: </A>Holodeck2 (instant response
+ if I&#8217;m in front of my comp and not trying to frag someone)<BR><A
+ href="http://www.icq.com/download">ICQ: </A>82640218 (rarely
+ on)<BR><BR>P.S. If someone named &#8220;Digital Vortex&#8221; on either Quake 3
+ or 2 frags you, it&#8217;s probably me. ;-)<BR></FONT><BR><BR><A
+ name=newsitem964429577,13375,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Monday,
+ July 24, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>BP6 Q3 server up and
+ running..</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:tim@bp6.com">tim</A> @ 2:06AM PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964429577,13375,.html"><IMG
+ border=0 src="doc3_files/comments.gif">3 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Setup a Q3 server for anyone wanting
+ to practice in preparation for Quakecon.. Connect to bp6.dyndns.org
+ default port. (SERVER: BP6 system, 256 MB ram, celeron 600 on a T3
+ connection)... Will be moved to another BP6 server eventually. This
+ is only a temporary test of the system and net connection. <BR>(BTW-
+ there are a few bot's running around in there..)</FONT><BR><BR><A
+ name=newsitem964425184,95812,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>BIOS Savior to the
+ rescue....</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:tim@bp6.com">tim</A> @ 12:53AM PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/964425184,95812,.html"><IMG
+ border=0 src="doc3_files/comments.gif">2 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Do you sweat during the BIOS flashing
+ procedure on your BP6 mobo? If so then this little gadget maybe
+ worth a first look. It's called the "<B>RD1 BIOS Savior</B>" and it
+ plugs in between your BIOS ROM and the BIOS ROM socket on your mobo.
+ This device will backup your BIOS and and allow you to recover your
+ BIOS in the event that your flashing session goes wrong. In the
+ event of a bad flash, just flip a switch on the RDI and boot up your
+ system, and flash again. This is also good as a failsafe in case you
+ don't believe in Virus Protecting your computer. (Thanks to Fred for
+ link)<BR><A href="http://www.ioss.com.tw/eg/rd1/RD1info0004.PDF"
+ target=_NEW>Manufacturers Brochure</A> (PDF Format)<BR><A
+ href="http://192.216.185.10/mwave/doc/A06950.html"
+ target='_BLANK"'>Another info page</A><BR><A
+ href="http://192.216.185.10/mwave/ProdMB-AC-MW.hmx?UID=&amp;CID=&amp;updepts=MB&amp;DNAME=%3Cb%3EMotherboards%3C%2Fb%3E&amp;Back=ProdMB-AC-MW.hmx?"
+ target=_BLANK>Available for about $20</A><BR><BR><IMG
+ src="doc3_files/rd1.jpg"></FONT><BR><BR><A
+ name=newsitem963875853,12731,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Monday,
+ July 17, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>How To
+ Overclock</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 4:17PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963875853,12731,.html"><IMG
+ border=0 src="doc3_files/comments.gif">3 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>For those of you who are new to
+ overclocking, this guide will explain to you how to overclock, and
+ what some of the terms are. Like 'FSB' (what the heck is that!?
+ :0))<BR><BR><A href="http://netkills.qgl.org/a_oc_comp.shtml"
+ target=_blank>How To Overclock</A> </FONT><BR><BR><A
+ name=newsitem963875485,23353,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>The Cardcooler
+ XT</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 4:11PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963875485,23353,.html"><IMG
+ border=0 src="doc3_files/comments.gif">1 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Wow! I am impressed! Nevermind keeping
+ the CPU's cool... Keep your whole board cool!<BR><BR><I>Even if your
+ not overclocking your system (or planning on it), this unit will
+ provide system stability and longevity. What would happen one day of
+ your GeForce or CPU fan went dead? You can also think of this
+ cooling unit as a backup to essential cooling fans in your
+ system.</I><BR><BR>Check this out!<BR><BR><A
+ href="http://www.brokenpixel.com/articles/coolerXT/cardcoolerXT_1.shtml"
+ target=_blank>http://www.brokenpixel.com/articles/coolerXT/cardcoolerXT_1.shtml</A>
+ </FONT><BR><BR><A name=newsitem963859982,88982,></A><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>'Nerd
+ Inside'</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 11:53AM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963859982,88982,.html"><IMG
+ border=0 src="doc3_files/comments.gif">1 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>We all need to have some fun
+ sometimes! Check out this little web site that sells 'nerd' clothing
+ ;) (I like the bibs in the Junior Hackerz section) :-Þ<BR><BR>
+ <DIV align=center><A href="http://www.nerdgear.com/"
+ target=_blank><IMG border=0
+ src="doc3_files/nerdinside.gif"></A></DIV></FONT><BR><BR><A
+ name=newsitem963819796,9688,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>Dual PSU Wiring diagram... (preview to
+ Part 1 Watercooling Project)</FONT></U></B><BR><FONT color=#0066cc
+ face=Arial size=1><SMALL>Posted by <A class=nav
+ href="mailto:tim@bp6.com">tim</A> @ 12:43AM PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963819796,9688,.html"><IMG
+ border=0 src="doc3_files/comments.gif">11 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>When is comes to overclocking your
+ system, cooling plays a big role. Powering all of those fans in your
+ system can cause quite a strain on your PSU (Power Supply Unit).
+ Depending on the number of peripherals in your system, adding a more
+ powerfull PSU or adding a second PSU may be neccesary. For
+ watercooling and using peltiers, dedicating a second PSU to power
+ the Peltiers (TEC's) is a good idea. Here I have come up with 2
+ diagrams on how I wired dual 300 watt ATX power supply units for the
+ Blizzard BP6 watercooling project. Consider this part of Step 1.
+ More will follow this week. BTW.. hacking up your PSU's is very
+ dangerous and is not recommended unless you know what you are doing.
+ <BR><BR>View Diagram 1 <A
+ href="http://bp6.gamesquad.net/images/wiring.jpg"
+ target=_BLANK>here</A>.<BR>View Diagram 2 <A
+ href="http://bp6.gamesquad.net/images/psu2.gif"
+ target=_BLANK>here</A>.<BR><BR>I used Tap-In Squeeze Connectors and
+ 22 guage wire to connect the wires. You can get them at Radio Shack
+ Part# 64-3053 or <A
+ href="http://www.radioshack.com/ProductCatalog/ProductDetail/Index/1,2098,,00.html?SKUString1=64&amp;SKUString2=3053"
+ target=_blank>click here</A>.</FONT><BR><BR><A
+ name=newsitem963766655,78511,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Sunday,
+ July 16, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>RAM Overclocking?
+ Hmmmmm.</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 9:57AM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963766655,78511,.html"><IMG
+ border=0 src="doc3_files/comments.gif">3 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>I know we're pretty big overclockers
+ here at BP6.Com so, this is a post of choice ;-) I've seen the
+ question in the message boards, 'why can't I overclock any higher?'
+ Well, it's not always the CPU that's holding you back... Many other
+ things need to be taken care of to overclock such as your PCI
+ devices (can they handle the higher bus speed), the actual CPU, and
+ your RAM. I'm not saying that that a high quality stick of silicon
+ will enable you to overclock your 366MHz to 1 GHZ (I wish!), but, it
+ will certainly help =)<BR><BR>Extreme Overclocking has tested
+ (overclocked) PC133 RAM to there full potential. Here's a quote I
+ found and the link:<BR><BR><I>Well, the guys at Extreme Overclocking
+ have been hard at work again with their latest review. This time
+ they have put seven 128MB PC133 memory modules through the torture
+ tests to determine their maximum overclocking potential. Which one's
+ came out on top? Read the review to find out....</I><BR><BR><A
+ href="http://www.extremeoverclocking.com/reviews/memory/ram_roundup_1.html"
+ target=_blank>Cooked RAM... Yummie</A><BR><BR>The
+ ÐÐ.</FONT><BR><BR><A name=newsitem963764236,76720,></A><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>CPU
+ Guide</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 9:17AM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963764236,76720,.html"><IMG
+ border=0 src="doc3_files/comments.gif">0 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>A follow up on the 'Weekly CPU
+ Prices', this guide will help you determine which cpu is best for
+ you (and your board ;-)). Sent to me by Spanky, here's the
+ link:<BR><BR>
+ <LI><A
+ href="http://www6.tomshardware.com/howto/00q2/000412/index.html"
+ target=_blank>http://www6.tomshardware.com/howto/00q2/000412/index.html</A></FONT><BR><BR><A
+ name=newsitem963685749,28290,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Saturday,
+ July 15, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>Weekly CPU
+ Prices</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 11:29AM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963685749,28290,.html"><IMG
+ border=0 src="doc3_files/comments.gif">2 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Wow, found this very useful! Wanting
+ to buy a new CPU? Check out this detailed price list!<BR><BR><A
+ href="http://www.sharkyextreme.com/hardware/weekly_cpu/"
+ target=_blank>Click Here.</A> <BR><BR>Thanks Sharky
+ Extreme!</FONT><BR><BR><A
+ name=newsitem963679881,35277,></A><B><U><FONT color=#003366
+ face="Verdana, Arial" size=2>Fast Wallpapers</FONT></U></B><BR><FONT
+ color=#0066cc face=Arial size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 9:51AM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963679881,35277,.html"><IMG
+ border=0 src="doc3_files/comments.gif">0 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>FAST-MHz has released some wallpapers!
+ <A href="http://64.29.18.111/wallpaper/index.html"
+ target=_blank>Click here</A> to view them. They come in sizes
+ 800x600 1024x768 and 1152x864. If you have your desktop set at a
+ larger size, just use the 'stretch' function in desktop properties
+ instead of 'center'. Works great.<BR><BR>In other news, we want to
+ finnish off all the sections at BP6.Com so, to start, we're going to
+ work on the <A href="http://bp6.gamesquad.net/uc.phtml"
+ target=_blank>Picture Gallery</A>. To help us out, you can send in
+ all your cool, wierd, crazy pics that you may have to: <A
+ href="mailto:thedaredevil@bp6.com">thedaredevil@bp6.com</A>. (The
+ topic being computers, duh! :0) And no... I don't want to recieve
+ any porno piccies in my mailbox! I have enough of those!) Kidding
+ guys.<BR><BR>Okay, that's all for now.<BR><BR>The
+ ÐÐ.</FONT><BR><BR><A name=newsitem963619505,3764,></A>
+ <TABLE bgColor=#003399 width="100%">
+ <TBODY>
+ <TR>
+ <TD><FONT color=#ffffff face=Verdana,arial size=2><B>Friday,
+ July 14, 2000</B></FONT></TD></TR></TBODY></TABLE><BR><!--<hr noshade width=100%>--><B><U><FONT
+ color=#003366 face="Verdana, Arial" size=2>Hey
+ There!</FONT></U></B><BR><FONT color=#0066cc face=Arial
+ size=1><SMALL>Posted by <A class=nav
+ href="mailto:killz@i82hq.com">DareDevil</A> @ 5:05PM
+ PDT</SMALL>&nbsp; <A
+ href="http://bp6.gamesquad.net/news/963619505,3764,.html"><IMG
+ border=0 src="doc3_files/comments.gif">7 comments</A>
+ &nbsp;|&nbsp;<A
+ href="http://bp6.gamesquad.net/#news_top">top</A></FONT> <BR><FONT
+ color=black face=Arial size=2>Hey guys, just wanted to introduce
+ myself, some of you may have already met me on the BP6.com board.
+ I'll be posting up news from time to time now so, if you'd like, you
+ may send me some news to be posted if you find any ( we don't want
+ to flood Tim ;-) ).<BR><BR>My e-mail address is <A
+ href="mailto:killz@i82hq.com">killz@i82hq.com</A><BR><BR>Ciao for
+ now.<BR><BR>The ÐÐ.</FONT><BR><BR>
+ <CENTER><IFRAME frameBorder=0 height=60 marginHeight=0 marginWidth=0
+ noResize scrolling=no src="doc3_files/ad_iframe.htm"
+ width=468><a href="http://ads.adflight.com/go_static.asp?asid=7708" target="_top"><img width=468 height=60 border=0 alt="Advertisement" src="http://ads.adflight.com/ad_static.asp?pid=2097&sid=1881&asid=7708"></a></IFRAME></CENTER></LI></FONT></TD></TR></TBODY></TABLE></CENTER></P></TD>
+ <TD bgColor=silver vAlign=top width="10%">
+ <CENTER>
+ <P>
+ <TABLE bgColor=silver border=0 cellPadding=0 cellSpacing=0 width="100%">
+ <TBODY>
+ <TR>
+ <TD COLSTART="1">
+ <CENTER><!-- <FORM ACTION="/cgi-bin/subscribe.pl" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">
+ <IMG SRC="/images/spacer.gif" WIDTH="111" HEIGHT="1"><BR>
+ <P><B><FONT SIZE="2" COLOR="#000066" FACE="Verdana">Newsletter</FONT></B><FONT SIZE="1" FACE="Verdana"><BR>
+ <INPUT TYPE="TEXT" NAME="email" SIZE="10" VALUE="ur@email.com"><BR>
+ <INPUT TYPE="HIDDEN" NAME="subscribe" SIZE="-1" VALUE="subscribe"><INPUT TYPE="IMAGE" SRC="/images/subscribe.gif" WIDTH="80"
+ HEIGHT="27" ALIGN="BOTTOM" BORDER="0"></FONT>
+ </FORM> -->
+ <FORM
+ action=http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?emaillist
+ method=post><IMG height=1 src="doc3_files/spacer.gif"
+ width=111><BR><FONT size=1>Newsletter<BR><INPUT name=npemail size=13
+ value="e-mail addr."><BR><INPUT name=npsubscribe style="BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold" type=submit value=Subscribe><BR><!-- <input type="submit" name="npunsubscribe" value="Unsubscribe" style="font-size: xx-small; font-family: Verdana; font-weight: bold; color: #ffffff; background-color: #000000;"> --></FONT></FORM><FONT
+ size=1>
+ <FORM
+ action=http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?search
+ method=post>Search news<BR><INPUT name=searchstring size=13><BR><INPUT name=submit style="BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold" type=submit value=Submit><BR><A
+ href="http://bp6.gamesquad.net/cgi-bin/news/viewnews.cgi?newsall">News
+ archive</A></FONT> </FORM></CENTER></TD></TR></TBODY></TABLE><!-- <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%" BGCOLOR="silver">
+ <TR>
+ <TD WIDTH="100%">
+ <P ALIGN="CENTER"><A HREF="http://www.free56k.com" target="_blank"><IMG SRC="/images/free56k.gif" WIDTH="100" HEIGHT="49"
+ ALIGN="BOTTOM" BORDER="0"></A>
+ </TD>
+ </TR>
+ </TABLE>
+-->
+ <TABLE bgColor=silver border=0 cellPadding=0 cellSpacing=0 width="100%">
+ <TBODY>
+ <TR>
+ <TD align=middle width="100%"><!-- BEGIN GoTo.com Search Box -->
+ <SCRIPT language=javascript type=text/javascript>
+ <!--
+ if ((parseInt(navigator.appVersion) >= 3)
+ && (navigator.appName != "Netscape")) {
+ document.write("<IFRAME marginheight=0 frameborder=0 ");
+ document.write("marginwidth=0 scrolling=no width=100 height");
+ document.write("=90 ");
+ document.write("SRC=http://www.goto.com/d/ssn/dynconsole/?t");
+ document.write("ype=html&size=100x90&url=http://www.goto.co");
+ document.write("m/d/search/ssn/&target=_blank&Partner=SSN80");
+ document.write("42DF8478957377></IFRAME>");
+ } else if ((parseInt(navigator.appVersion) > 3)
+ && (navigator.appName == "Netscape")) {
+ document.write("<SCRIPT language=javascript type=text/javas");
+ document.write("cript ");
+ document.write("SRC=http://www.goto.com/d/ssn/dynconsole/?t");
+ document.write("ype=js&size=100x90&url=http://www.goto.com/");
+ document.write("d/search/ssn/&target=_blank&Partner=SSN8042");
+ document.write("DF8478957377></SC");
+ document.write("RIPT>");
+ } else {
+ document.write("<A TARGET=_blank ");
+ document.write("HREF=http://www.goto.com/d/search/ssn/?from");
+ document.write("GIF=true>");
+ document.write("<IMG ismap ");
+ document.write("SRC=http://www.goto.com/d/ssn/dynconsole/?t");
+ document.write("ype=gif&size=100x90></A>");
+ }
+ // -->
+ </SCRIPT>
+ <B><NOSCRIPT></B><A
+ href="http://www.goto.com/d/search/ssn/?fromGIF=true"
+ target=_blank><IMG align=bottom border=0 height=90 isMap
+ src="doc3_files/100x90.gif" width=100></A><B><A
+ href="http://www.goto.com/d/search/ssn/?fromGIF=true" target=_blank>
+ </A></A></B><B></NOSCRIPT></B><B><!-- END GoTo.com Search Box --></B><!-- Pricewatch Search Box -->
+ <FORM action=http://www.pricewatch.com/search/search.asp method=get
+ target=_Blank>
+ <CENTER>
+ <P><B><FONT color=white face="ARIAL, HELVETICA" size=1>PC Price
+ Search<BR></FONT></B><INPUT maxLength=30 name=criteria size=10><BR><INPUT name=submit style="BACKGROUND-COLOR: #000000; COLOR: #ffffff; FONT-FAMILY: Verdana; FONT-SIZE: xx-small; FONT-WEIGHT: bold" type=submit value=Search>
+ </FORM><!-- Pricewatch Search Box --><A
+ href="http://www.puicorp.com/bp6specials.htm" target=_BLANK><IMG
+ src="doc3_files/puibp6.gif"></A><BR><BR><BR><BR><A
+ href="http://store.yahoo.com/dunamis-site/maxtor.html"
+ target=_BLANK><IMG
+ alt="BP6.com Special - Enter CODE: BP6-hd in the order (notes) to receive a discount"
+ src="doc3_files/hd5.gif"><FONT size=1><BR>BP6.COM
+ Special<BR>Code:BP6-hd</FONT></A> </P></CENTER></TD></TR></TBODY></TABLE>
+ <TABLE bgColor=silver border=0 cellPadding=0 cellSpacing=0 height="100%"
+ width="100%">
+ <TBODY>
+ <TR>
+ <TD
+width="100%">&nbsp;</TD></TR></TBODY></TABLE></P></CENTER></TR></TBODY></TABLE><!-- </TABLE>-->
+<CENTER></CENTER></TD></TR><TR><TD COLSPAN="3" VALIGN="TOP"
+HEIGHT="70">&nbsp;</TD> </TR></TABLE>
+<TABLE border=0 width=780>
+ <TBODY>
+ <TR>
+ <TD width=780>
+ <P align=center><FONT color=#999999 face=verdana,arial size=1>Copyright
+ ©1999-2000 BP6.com, All rights reserved.<BR>Got news? Send it to </FONT><A
+ href="mailto:tim@bp6.com"><FONT color=white face=Verdana
+ size=1>Tim</FONT></A> </P></TD></TR><!-- <TR> <TD WIDTH="780"> <P ALIGN="CENTER"><FONT SIZE="1" COLOR="#999999" FACE="Verdana,arial">Site design by Tim Brinkley</FONT> </TD> </TR> --></TBODY></TABLE></DIV>
+<SCRIPT> window.open=NS_ActualOpen; </SCRIPT>
+</BODY></HTML>
diff --git a/test/HTML/entities.html b/test/HTML/entities.html
new file mode 100644
index 0000000..97aeb14
--- /dev/null
+++ b/test/HTML/entities.html
@@ -0,0 +1,5 @@
+<p tst="a&amp;b" tst2="a&b" tst3="a & b">
+a&amp;b
+a&b
+a & b
+</p>
diff --git a/test/HTML/entities2.html b/test/HTML/entities2.html
new file mode 100644
index 0000000..53cc7b0
--- /dev/null
+++ b/test/HTML/entities2.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<form>
+ <input type="text" name="test" value="&scaron;">
+</form>
+</body>
+</html> \ No newline at end of file
diff --git a/test/HTML/fp40.htm b/test/HTML/fp40.htm
new file mode 100644
index 0000000..840b81e
--- /dev/null
+++ b/test/HTML/fp40.htm
@@ -0,0 +1,166 @@
+<!doctype html public "-//IETF//DTD HTML//EN">
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<title>README - Microsoft FrontPage 2000 Server Extensions</title>
+<meta name="Microsoft Theme" content="none">
+</head>
+
+<body>
+<font face="Verdana">
+<h1><a name="top">Microsoft FrontPage 2000 Server Extensions, UNIX</a></h1>
+
+<font size="2"><i>© Copyright Microsoft Corporation, 1999&nbsp;</i></font>
+
+
+<p>The FrontPage Server Extensions are a set of programs on the Web server that support:
+
+<ul>
+ <li>Authoring FrontPage webs</li>
+ <li>Administering FrontPage webs</li>
+ <li>Browse-time FrontPage web functionality</li>
+</ul>
+
+
+<h2>Contents&nbsp;</h2>
+
+<a href="#relnotes">Release Notes</a><br>
+<a href="#moreinfo">Resources for More Information</a>
+<p>&nbsp;</p>
+<hr>
+<h2><a name="relnotes">Release Notes</a></h2>
+
+<p>This section provides complementary or late-breaking
+information to supplement the Microsoft FrontPage Server Extensions documentation.</p>
+
+<p><a href="#apache">Apache 1.3.4 Support</a><br>
+<a href="#upgrading">Upgrading from previous version of FrontPage Server Extensions</a><br>
+<a href="#executables">Uploading files into executable folders</a></p>
+
+
+<p align="right"><font size="1"><a href="#top">Top of Page</a></font></p>
+
+
+<h3><a name="apache">Apache 1.3.4 Support</a></h3>
+
+<p>You need to take some special steps to run the FrontPage Server Extensions with Apache 1.3.4.
+FrontPage Server Extensions expect to find all resource directives in the main server
+configuration file, usually http.conf. To prevent the server extensions from using any secondary
+configuration files (access.conf, srm.conf), add the following lines to http.conf:</p>
+
+
+</font>
+<blockquote>
+ <font face="Courier New">
+ResourceConfig /dev/null&nbsp;<br>
+AccessConfig /dev/null</font>
+</blockquote>
+<font face="Verdana">
+
+
+<p>If you have some settings stored in secondary configuration files, move them to http.conf.</p>
+
+<p>You must stop and restart the web server for your changes to http.conf to take effect.</p>
+
+
+
+<p align="right"><font size="1"><a href="#relnotes">Top of Section</a></font></p>
+
+
+
+<h3><a name="upgrading">Upgrading from previous version of FrontPage Server Extensions</a></h3>
+
+<p>Custom entries in frontpage.cnf are not migrated to FrontPage 2000.</p>
+
+<p>When you install FrontPage 2000 Server Extensions, a new frontpage.cnf file is created in the /usr/local/frontpage/version4.0 directory.
+Any custom settings stored in a previous-version frontpage.cnf are not used. However, you can copy
+your custom settings from the previous-version frontpage.cnf file after you install the FrontPage 2000 Server Extensions.</p>
+
+<p>Do not overwrite the FrontPage 2000 frontpage.cnf file with a frontpage.cnf file from an
+earlier version of the FrontPage Server Extensions.</p>
+
+
+
+<p align="right"><font size="1"><a href="#relnotes">Top of Section</a></font></p>
+
+
+
+<h3><a name="executables">Uploading files into executable folders</a></h3>
+
+
+<p>After upgrading to FrontPage 2000, FrontPage authors will not be able to upload files into
+executable folders. For security reasons, the default setting on FrontPage 2000 webs does not
+allow authors to upload executable files into executable folders in a FrontPage web. This
+setting protects servers so that authors do not inadvertently upload a program containing a bug
+or a virus.</p>
+
+<p>To allow FrontPage authors to upload executables, set the NoExecutableCgiUpload configuration
+variable to zero (0). For information about FrontPage Server Extension configuration variables,
+see the FrontPage 2000 Server Extensions Resource Kit at <a href="http://officeupdate.microsoft.com/frontpage/wpp/serk/">http://officeupdate.microsoft.com/frontpage/wpp/serk/</a>.</p>
+
+
+
+<p align="right"><font size="1"><a href="#relnotes">Top of Section</a></font></p>
+
+
+
+<hr>
+
+
+
+<h2><a name="moreinfo">Resources for More Information</a></h2>
+
+<p>This section lists sources of more information about the
+FrontPage Server Extensions.</p>
+
+<p><a href="#serk">Server Extensions Resource Kit</a><br>
+<a href="#serkupdate">Server Extensions Resource Kit Update</a><br>
+<a href="#kb">Knowledge Base</a></p>
+
+
+<p align="right"><font size="1"><a href="#top">Top of Page</a></font></p>
+
+
+<h3><a name="serk">Server Extensions Resource Kit</a></h3>
+
+<p>The FrontPage 2000 Server Extensions include a full set of documentation: the Server
+Extensions Resource Kit. This is an HTML document installed on the server machine (by
+default) in /usr/local/frontpage/version4.0/serk. To view the Server Extensions Resource
+Kit, open /usr/local/frontpage/version4.0/serk/default.htm in your Web browser.</p>
+
+<p>The Server Extensions Resource Kit contains detailed information about installing and
+administering the FrontPage Server Extensions along with an overview of the Server
+Extensions, a detailed discussion of Server Extensions security on UNIX and Windows,
+troubleshooting information, and a full set of appendixes.</p>
+
+<p align="right"><font size="1"><a href="#moreinfo">Top of Section</a></font></p>
+
+
+<h3><a name="serkupdate">Server Extensions Resource Kit Update</a></h3>
+
+<p>For updated information about installing, setting up, and administrating the FrontPage Server
+Extensions, see the Server Extensions Resource Kit Update at: <a href="http://officeupdate.microsoft.com/frontpage/wpp/serk/">http://officeupdate.microsoft.com/frontpage/wpp/serk/</a>.</p>
+
+
+<p align="right"><font size="1"><a href="#moreinfo">Top of Section</a></font></p>
+
+
+<h3><a name="kb">Microsoft Knowledge Base</a></h3>
+
+<p>For further technical information on FrontPage, please consult Support Online. Use Support
+Online to easily search Microsoft Product Support Services' collection of resources including
+technical articles from Microsoft's extensive Knowledge Base, FAQs, & troubleshooters to find
+fast, accurate answers. You can also customize the site to control your search using either
+keywords or the site's natural language search engine, which uses normal everyday language for
+answering inquiries, so you can write your question in your own words. To begin, go to
+<a href="http://support.microsoft.com/support/">http://support.microsoft.com/support/</a>.</p>
+
+<p align="right"><font size="1"><a href="#moreinfo">Top of Section</a></font></p>
+
+
+<p>&nbsp;</p>
+
+</font>
+</body>
+</html>
diff --git a/test/HTML/html5_enc.html b/test/HTML/html5_enc.html
new file mode 100644
index 0000000..3ebf491
--- /dev/null
+++ b/test/HTML/html5_enc.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<meta charset="iso-8859-1"/>
+</head>
+<body>
+ <p>très</p>
+</body>
+</html>
diff --git a/test/HTML/liclose.html b/test/HTML/liclose.html
new file mode 100644
index 0000000..7364034
--- /dev/null
+++ b/test/HTML/liclose.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head>
+ <title></title>
+</head>
+<body>
+<ul>
+<li>First item
+<li>Second item, closes the first one
+</ul>
+
+</html>
diff --git a/test/HTML/lt.html b/test/HTML/lt.html
new file mode 100644
index 0000000..62f6d94
--- /dev/null
+++ b/test/HTML/lt.html
@@ -0,0 +1,5 @@
+<html>
+<head>
+<meta name="Author" content="Root <root@aol.com>">
+</head>
+</html>
diff --git a/test/HTML/noscript.html b/test/HTML/noscript.html
new file mode 100644
index 0000000..454e943
--- /dev/null
+++ b/test/HTML/noscript.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>omg</title>
+ <noscript><link rel="stylesheet" href="http://foo.com"></noscript>
+ </head>
+ <body id="xxx">
+ <p>yo</p>
+ </body>
+</html>
diff --git a/test/HTML/pre.html b/test/HTML/pre.html
new file mode 100644
index 0000000..8e1a66d
--- /dev/null
+++ b/test/HTML/pre.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+<pre><a href="toto"></a><img src="titi"></pre>
+</body>
+</html>
diff --git a/test/HTML/python.html b/test/HTML/python.html
new file mode 100644
index 0000000..51a6394
--- /dev/null
+++ b/test/HTML/python.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd" >
+<?xml-stylesheet href="./css/ht2html.css" type="text/css"?>
+<html>
+<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
+<head>
+<title>Python Programming Language</title>
+</head>
+<body>
+</body></html>
diff --git a/test/HTML/reg1.html b/test/HTML/reg1.html
new file mode 100644
index 0000000..ecdd007
--- /dev/null
+++ b/test/HTML/reg1.html
@@ -0,0 +1,10 @@
+<html>
+<head>
+<title>Regression test 1</title>
+</head>
+<body>
+<h1>Regression test 1</h1>
+<p>
+Ok file no problem
+</body>
+</html>
diff --git a/test/HTML/reg2.html b/test/HTML/reg2.html
new file mode 100644
index 0000000..7145c19
--- /dev/null
+++ b/test/HTML/reg2.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>Regression test 2</title>
+</head>
+<body>
+<h1>Regression test 2</h1>
+<p>
+Autoclose of tag P
+<p>
+Ok file no problem
+</body>
+</html>
diff --git a/test/HTML/reg3.html b/test/HTML/reg3.html
new file mode 100644
index 0000000..014483b
--- /dev/null
+++ b/test/HTML/reg3.html
@@ -0,0 +1,13 @@
+<html>
+<head>
+<title>Regression test 3</title>
+</head>
+<body>
+<h1>Regression test 3</h1>
+<p>
+Autoclose of tag P
+<hr>
+<p>
+Ok file no problem
+</body>
+</html>
diff --git a/test/HTML/reg4.html b/test/HTML/reg4.html
new file mode 100644
index 0000000..7d04ca2
--- /dev/null
+++ b/test/HTML/reg4.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>Regression test 4</title>
+</head>
+<body>
+<h1>Regression test 4</h1>
+<p>
+Wrong close of tag P
+<hr>
+</p>
+</body>
+</html>
diff --git a/test/HTML/repeat.html b/test/HTML/repeat.html
new file mode 100644
index 0000000..d6d6f97
--- /dev/null
+++ b/test/HTML/repeat.html
@@ -0,0 +1 @@
+<td><td><!-- <a><b> -->
diff --git a/test/HTML/script.html b/test/HTML/script.html
new file mode 100644
index 0000000..197b002
--- /dev/null
+++ b/test/HTML/script.html
@@ -0,0 +1,9 @@
+<HTML>
+<HEAD><TITLE>Script tests</TITLE></HEAD>
+<BODY>
+<SCRIPT language=javascript>
+ if (window.open<max) ;
+</SCRIPT>
+<INPUT ONCLICK="if(window.open<max);">
+</BODY>
+</HTML>
diff --git a/test/HTML/script2.html b/test/HTML/script2.html
new file mode 100644
index 0000000..2606a83
--- /dev/null
+++ b/test/HTML/script2.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Test Page</title>
+</head>
+<body>
+<div id="portal">
+<script type="text/javascript">
+ documen.write("PříliÅ¡ žluÅ¥ouÄký kůň úpÄ›l Äábelksé ódy");
+</script>
+ <p>
+ PříliÅ¡ žluÅ¥ouÄký kůň úpÄ›l Äábelksé ódy;
+ </p>
+</div>
+</body>
+</html>
+
diff --git a/test/HTML/test2.html b/test/HTML/test2.html
new file mode 100644
index 0000000..c8fd44c
--- /dev/null
+++ b/test/HTML/test2.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML><HEAD> <TITLE>Linux Today</TITLE></HEAD>
+<body bgcolor="White" link="Blue" text="Black" VLINK="Black" ALINK="Red">
+
+<center>
+<TABLE BORDER="0" WIDTH="100%" CELLSPACING="0" CELLPADDING="0">
+ <TR BGCOLOR="#FFFFFF">
+ <TD HEIGHT="90">
+<a href="http://linuxtoday.com/cgi-bin/click.pl?adnum=49"><img src="/pics/door_linux.gif" border="0" width="468" height="60" alt="Atipa Linux solutions. Your reliable cluster, server, and workstation solution. Win a Free Celeron Linux Workstation!"></A>
+
+ </TD>
+ <TD><IMG SRC="/pics/lt.gif" VSPACE=5 alt="Linux Today Logo"><br><font size="-1"><a href="http://linux.com">linux.com</a> partner</font><p></TD>
+
+ </TR>
+</TABLE>
+<font size="2" face="Helvetica">
+[ <a href="http://linuxtoday.com/">headlines</A> |
+<a href="http://features.linuxtoday.com/">features</A> |
+<a href="http://commercial.linuxtoday.com/">commercial</a> |
+<a href="http://security.linuxtoday.com/">security</a> |
+<a href="http://jobs.linuxtoday.com/">jobs</a> |
+<a href="http://linuxtoday.com/volt/">volt</a> |
+<a href="http://linuxtoday.com/contrib.pl">contribute/submit</a> |
+<a href="http://linuxtoday.com/advertise/">advertise</A> |
+<a href="http://linuxtoday.com/search.html">search</A> |
+<a href="http://linuxtoday.com/digests/">site digests</A> |
+<a href="http://linuxtoday.com/mail-lists">mailing lists</A> |
+<a href="http://linuxtoday.com/about/">about us</a> |
+<a href="http://linuxtoday.com/linkus.html">link us</A> ]</font>
+</center>
+<P>
+</body>
+</html>
diff --git a/test/HTML/test3.html b/test/HTML/test3.html
new file mode 100644
index 0000000..af1f190
--- /dev/null
+++ b/test/HTML/test3.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+<base target=contents>
+</head>
+<a name=ProblemDomain.Package><h2>Component Package diagram ProblemDomain</h2>
+</a><p><hr></p>
+<dl>
+<dt><b>Stereotype </b>problem domain</dt>
+<dt><b>Alias </b>Problem Domain</dt>
+<dt><b>Note </b><dd>The Problem Domain package is the model behind the Human
+<dd>Interface, thats stores and manipulates the Family Tree.
+</dl>
+<p><hr></p>
+<dl>
+
+<dt><h4>Class <a href=HumanInterface.FamilyFrame.html#HumanInterface.FamilyFrame>HumanInterface.FamilyFrame</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Birth.html#ProblemDomain.Birth>ProblemDomain.Birth</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Death.html#ProblemDomain.Death>ProblemDomain.Death</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Divorce.html#ProblemDomain.Divorce>ProblemDomain.Divorce</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Family.html#ProblemDomain.Family>ProblemDomain.Family</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Individual.html#ProblemDomain.Individual>ProblemDomain.Individual</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.LifeEvent.html#ProblemDomain.LifeEvent>ProblemDomain.LifeEvent</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Marriage.html#ProblemDomain.Marriage>ProblemDomain.Marriage</a></h4></dt>
+<dt><h4>Class <a href=ProblemDomain.Note.html#ProblemDomain.Note>ProblemDomain.Note</a></h4></dt>
+</dl>
+
+<h4><b>Links</h4></b>
+<ul><li><b>Link to </b><a href=HumanInterface.Package.html#HumanInterface.Package>HumanInterface</a></li></ul>
+<dir></dir>
+<ul><li><b>Link to </b><a href=DataManagement.FlatFile.Package.html#DataManagement.FlatFile.Package>DataManagement.FlatFile</a></li></ul>
+<dir></dir>
+<ul><li><b>Link to </b><a href=DataManagement.Package.html#DataManagement.Package>DataManagement</a></li></ul>
+<dir></dir>
+</html>
diff --git a/test/HTML/utf8bug.html b/test/HTML/utf8bug.html
new file mode 100644
index 0000000..c3cface
--- /dev/null
+++ b/test/HTML/utf8bug.html
@@ -0,0 +1,182 @@
+
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link href="CSS.css" type="text/css" rel="stylesheet" />
+<link rel="SHORTCUT ICON" href="favicon.ico">
+<title>شهير بلاگ</title>
+</head>
+
+<body>
+
+<table border="0" width="100%" id="MainTBL" cellspacing="0" cellpadding="0">
+ <tr>
+ <td class="Header1">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%">
+ <tr>
+ <td>
+ <img border="0" src="Shell/Shahir.ShahidSales1.png" width="442" height="110"></td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td height="28">
+ <div id="SideBar1">
+ <table width="100%">
+ <tr>
+ <td>
+ <span class="Item">
+<a href="Index.asp" >
+خانه </a></span> <span class="Item">
+<a href="Contact.asp" >
+تماس با من </a></span> <span class="Item">
+<a href="Archive.asp" >
+آرشيو </a></span> <span class="Item">
+<a href="Search.asp" >
+جستجو در سایت </a></span> <span class="Item">
+<a href="http://shahirblog.com/detail.asp?id=30" >
+درباره من </a></span> <span class="Item">
+<a href="RSS2.asp" >
+
+<img src="showimage.aspx?path=Files_Upload\192.png&width=%>" border="0" />
+RSS </a></span> <span class="Item">
+<a href="" >
+ </a></span>
+ </td>
+ <td align="left">
+ <div id="DateTime">
+ <p align="left">
+ &#1610;&#1705;&#1588;&#1606;&#1576;&#1607;&#1548;&nbsp;15&nbsp;&#1575;&#1585;&#1583;&#1610;&#1576;&#1607;&#1588;&#1578;&nbsp;1387&nbsp;
+ -&nbsp;&nbsp;
+ <span dir="ltr">Sunday, May 04, 2008</span>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">
+ <table border="0" width="100%" cellspacing="0" cellpadding="0" id="Content">
+ <tr>
+ <td class="Right" valign="top" style="padding-right: 60px">
+ <table width="100%">
+ <tr>
+ <td valign="top">
+
+<script>
+var tgs = new Array( 'div','td','tr','a');
+var szs = new Array( '7pt','8pt','9pt','10pt','11pt','12pt','13pt' );
+var startSz = 1;
+
+function ChangeSize( trgt,sz ) {
+ if (!document.getElementById) return
+ var d = document,cEl = null,i,j,cTags;
+
+ if ( !( cEl = d.getElementById( trgt ) ) ) cEl = d.getElementsByTagName( trgt )[ 0 ];
+
+ cEl.style.fontSize = sz;
+
+ for ( i = 0 ; i < tgs.length ; i++ ) {
+ cTags = cEl.getElementsByTagName( tgs[ i ] );
+ for ( j = 0 ; j < cTags.length ; j++ ) cTags[ j ].style.fontSize = sz; //szs[ sz ];
+ }
+}
+</script>
+
+<table width="100%" id="NewsDetail">
+ <tr>
+ <td valign="top">
+ <div class="News_Info">
+ &#1578;&#1575;&#1585;&#1610;&#1582; &#1583;&#1585;&#1580;: <font color="#000000">&#1670;&#1607;&#1575;&#1585;&#1588;&#1606;&#1576;&#1607;&#1548;&nbsp;29&nbsp;&#1575;&#1587;&#1601;&#1606;&#1583;&nbsp;1386
+ - Wednesday, March 19, 2008</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ &#1606;&#1608;&#1610;&#1587;&#1606;&#1583;&#1607;: <font color="#000000"></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ &#1583;&#1601;&#1593;&#1575;&#1578; &#1605;&#1588;&#1575;&#1607;&#1583;&#1607;: <font color="#000000">2688</font>
+ &#1576;&#1575;&#1585;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#1603;&#1583;: <font color="#000000">341</font>
+ </div>
+ <br>
+ <!--
+ <div>&#1575;&#1606;&#1583;&#1575;&#1586;&#1607; &#1601;&#1608;&#1606;&#1578;:&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','7pt')"><font size="1">&#1705;&#1608;&#1670;&#1705;</font></a>&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','10pt')"><font size="2">&#1605;&#1593;&#1605;&#1608;&#1604;&#1740;</font></a>&nbsp;
+ <a href="javascript:ChangeSize('NewsBody','13pt')"><font size="3">&#1576;&#1586;&#1585;&#1711;</font></a>&nbsp;
+ </div>-->
+
+
+ <div class="Titr1">
+ </div>
+ <br>
+ <div id="NewsBody">
+
+ <div class="Image">
+
+ <a href="showimage.aspx?path=Files_Upload\302.JPG&Width=" rel="lightbox" title="شهير بلاگ">
+ <img src="showimage.aspx?path=Files_Upload\302.JPG&Width=220" align="left" border="1" />
+ </a></div>
+ <STRONG><FONT size=4><FONT color=#0000ff>عکس</FONT> <FONT color=#0000ff>محصول هنر یکی از همکاران است. روی آن کلیک کند.</FONT></FONT></STRONG><S1> </div>
+ <br>
+ <div align="left">
+ <a href="printfriendly.asp?id=341">
+ <img src="shell/PrintFriendly.png" border="0"></a>
+ <a href="#" onclick="window.open('SendNews.asp?PageID=341','myWin','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=no,width=500, height=200'); return false">
+ <img border="0" src="Shell/SendToFriends.jpg" width="140" height="30">
+ </a>
+ </div>
+ <br>
+ </td>
+ </tr>
+ <tr>
+ <td> <br />
+ <hr><div
+ id=Comments><ul><b>&#1606;&#1592;&#1585;&#1575;&#1578;
+ &#1705;&#1575;&#1585;&#1576;&#1585;&#1575;&#1606;:</b><br><li><font
+ color='blue'>حاجی جÙرسون:</font><br><font size='1'>4/5/2008 -
+ 7:08:00 PM</font><br>با درود به شما...&nbsp;بدون هیچ گونه طنز
+ و دستکاری توسط حاجی دایی نقل شده است این ها که در بیان جدی
+ اینقدر طناز هستند وای به روزی که بخواهند طنز بنویسند. ببین
+ شهیر جان چه کسانی سر جوانان ما را با اصلاحات 8 سال گول
+ مالیدند.. این ها را بخوانید :::::((دبيركل مجمع اسلامي بانوان
+ Ú¯Ùت: به نظر مي&zwnj;رسد آقاي خاتمي قصد Ùاصله گرÙتن از تندروها
+ را ندارد Ùˆ تا اين روند ادامه دارد ما با تندروها در يك ائتلاÙ
+ شركت نمي&zwnj;كنيم. به گزارش خبرنگار سياسي خبرگزاري Ùارس،
+ Ùاطمه كروبي دبيركل مجمع اسلامي بانوان عصر امروز شنبه در جمع
+ خبرنگاران رسانه&zwnj;هاي گروهي روند برگزاري انتخابات هشتمين
+ دوره مجلس شوراي اسلامي را تحليل كرد. وي ضمن برشمردن مرزبندي خود
+ با جربان تندروي اصلاح طلب اÙزود: اين ما نيستيم كه با ستاد ائتلاÙ
+ اصلاح طلبان اختلا٠داريم اما انحصارگري برخي از گروه&zwnj;ها
+ جريان اصلاحات را دچار از هم&zwnj;گسستگي كرد. داوطلب هشتمين دوره
+ انتخابات مجلس شوراي اسلامي درباره تشكيل ستاد مردمي اصلاحات خاطر
+ نشان كرد: آقاي خاتمي به توصيه&zwnj;ها و نظرات دوستانشان توجهي
+ ندارند و اگر اين امكان وجود داشت كه همه جريانات اصلاح طلب زير
+ يك عنوان Ùعاليت كنند حتما از آن استقبال مي&zwnj;كرديم اما به
+ نظر نمي&zwnj;رسد كه آقاي خاتمي بخواهد از تندروها Ùاصله بگيرد Ùˆ
+ تا اين روند ادامه داشته باشد ما با تندروها در يك ائتلا٠شركت
+ نمي&zwnj;كنيم. وي در مورد شركت تشكل متبوع خود در مرحله بعدي
+ انتخابات مجلس Ú¯Ùت: برخي از كانديداهاي نزديك به ما به مرحله دوم
+ انتخابات راه ياÙته&zwnj;اند Ùˆ ما با تمام توان در اين مرحله از
+ آنها دÙاع خواهيم كرد. كروبي تاكيد كرد: گروهي انحصارگر با
+ اقدامات غيرعقلاني و تندروي&zwnj;هاي خود اتوبوس اصلاحات را در دره
+ سرنگون كردند)))) لطÙا پیدا کنید پرتقال Ùروش را......واقعا این
+ ها می خواهند دوباره وارد مجلس و دولت شوند.....اووووووووووووووو
+ لالالالالالا........نه!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! البته این
+ مجمع بانوان بیشتر به سÙره های نذر Ùˆ سبزی پاک کردن های خونه
+ مامان بزرگ و خاله زنک بازی های عصر قاجاریه و مجلس پا تختی و
+ حنا بندون عروس شباهت دارد. مهندس جان گویا ما از دست این ....و
+ عیالش باید برویم گوشه همان ابدارخانه و شاغلام و چایی
+ دیشلمه....شما تشری٠نمی آورید؟</li><br><br><li><font color='blue'>سیاوش:</font><br><font size='1'>4/3/2008 - 9:28:00 PM</font><br>مرد هزار چهره مرد هزار چهره کیست؟شخصیتی ساخته Ùˆ پرداخته مهران مدیری، پیمان قاسم خانی Ùˆ دیگر نویسندگان؟ تنها هدÙØ´ آنست Ú©Ù‡ چند روز تعطیلات، مارا سرگم کند Ùˆ دیگر هیچ؟ مرد هزار چهره یک طنز است یک طنز تلخ، برداشتی واقعی از جامعه ایرانی. من جوانم پس دردآشنای جوانانم Ùˆ خود را با خود Ùˆ دیگر جوانان طر٠می کنم بسیار اند جوانانی Ú©Ù‡ مصداق مرد هزار چهره هستند جوانانی سودا زده یا به قول خود مسعود &quot;جو گیر&quot; Ú©Ù‡ هر با محصولی کهنه را با تعریÙÛŒ جدید به آنها ارائه کنند چنان با تمام Ùˆ جود Ù…ÛŒ پذیرند Ú©Ù‡ گویی راه Ùائق آمدن بر تمام مشکلاتشان را یاÙته اند Ùˆ Ù…ÛŒ خرند، خواه این تحÙÙ‡ تئوری بر گرÙته از تÙکرات خشک Ùˆ Ùسیلی گروهی باشد یا مدل ملیجک وار لباسی در پشت ویترین Ùروشگاه. مهم نیست Ú†Ù‡ باشد! مهم نیست دلیل انتخابش Ú†Ù‡ باشد! مهم نیست نتیجه این انتخاب چیست! تنها مهم است Ú©Ù‡ Ù…ÛŒ گویند از این طر٠بÙرمائید!حال این بÙرمائید Ú†Ù‡ معنایی دارد باز هم مهم نیست!!! وای بر ما Ú©Ù‡ نه خود را Ù…ÛŒ شناسیم Ùˆ نه در جهت شناخت خویش قدم Ù…ÛŒ گذاریم. وای بر ما Ú©Ù‡ دیگر حتی ندای درون خویش را نمی توانیم بشنویم. وای بر ما Ú©Ù‡ نمی دانیم Ú†Ù‡ Ù…ÛŒ خواهیم Ùˆ هر بار Ú©Ù‡ چیزی Ù…ÛŒ خواهیم Ùˆ در مسیر وصال پا Ù…ÛŒ گذاریم به میانه راه نرسیده چنان مجذوب زرق Ùˆ برق راههای دیگر Ù…ÛŒ شویم Ú©Ù‡ مبدا Ùˆ مقصد را یکجا Ùراموش Ù…ÛŒ کنیم. وای بر ما Ú©Ù‡ نمی توانیم در برابر هر آنچه در مقابل انسانیت ما ایستاده &quot;نه&quot;بگوییم. درست است Ú©Ù‡ ما جوانان به تنهایی مقصر نیستیم اما چون شروع تقصیریم پس Ù…ÛŒ توانیم از ابتدا مانع مشکل هم باشیم. با احترام سیاوش<br>
+&nbsp;<br>
+<font color="#800000">بسیار زیبا سیاوش جان. درود بر تو. شهیر</font></li><br><br><li><font color='blue'>احسان __ خط سوم:</font><br><font size='1'>4/3/2008 - 8:21:00 PM</font><br>با سلام Ùˆ ادای احترام وکسب اجازه از شهیر عزیز . از عماد جان عزیزم بخاطر زحمتی Ú©Ù‡ کشیدند Ùˆ اطلاعات خوبی Ú©Ù‡ دادند ØŒ به سهم خودم تشکر Ù…ÛŒ کنم . با کمال شرمندگی از اینکه &quot;بدون هماهنگی&quot; Ùˆ &quot; اجازه ای قبلی شما&quot; Ùˆ &quot;بسرعت&quot; ØŒ معدود اشتباهات تایپی را Ú©Ù‡ با توجه به حجم مطلب ØŒ امری کاملا اجتناب ناپذیر است ØŒ سعی کردم Ú©Ù‡ اصلاح کنم ØŒ از شما پوزش Ù…ÛŒ خواهم . البته عماد جان عزیزم ØŒ بد نیست بدانید Ú©Ù‡ در میزان اشتباه در تایپ هرگز به پای بنده نخواهید رسید ! شاهد ادعای حقیر، شهیر Ùˆ حسین جان عزیزم هستند Ú©Ù‡ خبردارند Ú©Ù‡ چگونه بنده در یک Ùقره عملیات تایپ ØŒ دو صÙحه ای کامل را جا انداختم !!! کاÙÛŒ است بپرسید ØŒ در نهایت صداقت ØŒ بر این رکورد بی نظیر Ùˆ تاریخی شهادت خواهند داد ! باز هم از زحمات عماد جان Ùˆ نیز سوالات خوب حسین جان تشکر Ù…ÛŒ کنم Ú©Ù‡ ان وعده ای مقاله ای عیدانه ای Ù…Ùصل شهیر را در باره ای زنده یاد مرحوم مصدق ØŒ در وسع خود بجای اوردند . ضمن انکه هیچکدام از دوستان، این زحمت ارزشمند عماد جان را دلیل ان نخواهند دانست Ú©Ù‡ شهیرعزیز بعد از بازگشت از مساÙرت ØŒ سر Ùرصت وعده ای خود را عمل نکنند . مشتاقانه اما نه عجولانه ØŒ منتظر مقاله ای شهیر هم خواهیم ماند. با احترام : احسان<br>
+&nbsp;<br>
+<font color="#800000">احسان جان، من Ùکر کردم قضیه شامل مرور زمان شده است. تا امروز Ú©Ù‡ نرسیده ام دست به این پروژه بزنم. اگر عشق به Ø­Ùظ ارتباط با شما ها نبود تا روز 25 اپریل به خودم مرخصی Ù…ÛŒ دادم. در این سÙر خدا Ù…ÛŒ داند چند هزار مایل در 3 قاره را پیموده ام. از پوست Ú©Ù„Ùت خودم در عجبم Ú©Ù‡ چطوری تونستم اخبار را دنبال کنم Ùˆ چند مقاله کوتاه بنویسم. گرÙتاری زیاد بود. شهیر</font></li><br><br><li><font color='blue'>عماد Û²Û´ ساله از اصÙهان:</font><br><font size='1'>4/3/2008 - 7:14:00 PM</font><br>شهير جان اگر طولانی شد ببخشيد چاره ای نبود احسان جان از Ú©Ù…Ú© شما نيز در ويرايش اين مطلب متشکرم اميدوارم حسين عزیز نيز راضی باشد<br>
+&nbsp;<br>
+<font color="#800000">ممنون از زحمتی Ú©Ù‡ کشیدی عماد جان. شهیر</font></li><br><br><li><font color='blue'>حسین:</font><br><font size='1'>4/3/2008 - 7:04:00 PM</font><br>سلام آقا شهیر با اجازه شما خواستم از عماد عزیز وهمچنین سرور بزرگوار آقااحسان تشکر کنم وبه آقا عمادبگویم دستت درد نکنه بابت زحمتت ÙˆÙوق العاده عالی بود.قسمتی Ú©Ù‡ نوشتید" خود دکتر مصدق در تقریراتشان به اشتباه بودن تصمیمشان مبنی بر استعÙاء اقرار Ù…ÛŒ کنند"واقعا جالب وحاکی از روح بلند دکتر مصدق هست .بااینکه سوالات خرد وریز زیاد هست اما از اینکه به سوالات عمده من با توجه به کتاب دکتر مصدق پاسخ دادید بازهم تشکر میکنم .میخواستم این پاسخ را برای نویسنده مقاله رجانیوز copy&paste <br>
+کنم Ú¯Ùتم شاید هرچند به احتمال ضعی٠برای سایت دوست داشتنی آقا شهیر مشکلی پیش
+آید.خواستم با حذ٠نام آقا شهیر وشما از کامنت اینکار را بکنم احتمال دادم راضی
+نباشید .بنابراین Ùعلا علیرغم میل Ùراوان از اینکار صر٠نظر کردم .بهرحال بازهم
+ممنون ومتشکر </li><br><br><li><font color='blue'>حاجی جÙرسون:</font><br><font
+size='1'>4/3/2008 - 6:06:00 PM FOO!</font><br>با درود از قدیم Ú¯Ùته اند Ú©Ù‡ یک کلمه هم از مادر عروس بشنوید. بنابراین به اÙاضات اخیر کشور دوست Ùˆ برادر Ùˆ سوسیالیست چین عزیز Ùˆ جان جانان کمونیست عنایت بÙرمایید: رادیو Ùردا: ديپلمات ها در وين Ú¯Ùته اند: Ú©Ù‡ چين، از مخالÙان تشديد تحريم های ايران در شورای امينت، اطلاعات خود درباره ارتباط برنامه هسته ای تهران با تلاش برای دستيابی سلاح اتمی را در اختيار آژانس بين المللی انرژی اتمی قرار داده است. العجب!!!!!! انتخاب :با وجود اینکه چین به شدت با تحریمهای شورای امنیت سازمان ملل علیه ایران مخالÙت Ù…ÛŒ کرد، اطلاعاتی در رابطه با Ùعالیتهای هسته ای ایران در اختیار مقامات آژانس بین المللی انرژی اتمی قرار داده Ú©Ù‡ بر اساس آن ایران در تلاش برای دست یابی به سلاح های اتمی است. به گزارش خبرنگار سرویس بین الملل خبرگزاری انتخاب به نقل از Ùاکس نیوز؛جان بولتون ،نمایندۀ پیشین ایالات متحدۀ امریکا در سازمان ملل،در این باره Ú¯Ùت: اقدام اینچنینی از سوی چین به دلیل روابط نظامی Ú©Ù‡ میان دو کشور [ایران Ùˆ چین] برقرار است، بسیار قابل توجه است. خبرنگار انتخاب Ù…ÛŒ اÙزاید؛ در حالی چین به این اقدام دست زده است Ú©Ù‡ همکاری های تجاری Ùˆ نظامی ایران با این کشور بطور بی سابقه ای اÙزایش یاÙته است. یا باب الحوائج!!!!! رادیو زمانه: چین با وجود مخالÙت با تحریم&zwnj;های شدید شورای امنیت علیه تهران، اطلاعاتی درباره تلاش&zwnj;های تهران برای ساخت تسلیحات هسته&zwnj;ای به آژانس بین&zwnj;المللی انرژی اتمی ارائه کرده است. آسوشیتدپرس با اعلام این خبر به نقل از چند دیپلمات آشنا با پرونده هسته&zwnj;ای ایران نوشت، Ù¾Ú©Ù† به همراه مسکو همواره بر سر راه شورای امنیت Ùˆ امریکا برای اعمال مجازات های سخت تر علیه تهران به دلیل مقاومت هسته ای این کشور به صورت یک مانع عمل کرده&zwnj;اند. این گزارش Ù…ÛŒ اÙزاید، تصمیم چین برای ارائه اطلاعاتی جهت استÙاده در تحقیقات آژانس انرژی اتمی درباره برنامه تسلیحات هسته&zwnj;ای ایران، گویای اÙزایش نارضایتی بین&zwnj;المللی درباره برنامه هسته&zwnj;ای جمهوری اسلامی است Ú©Ù‡ حتی تلاش برای ساخت چنین تسلیحاتی را نیز تکذیب Ù…ÛŒ&zwnj;کند. بر اساس این گزارش، دو دیپلمات بلندپایه Ú©Ù‡ ارتباط نزدیکی با آژانس بین&zwnj;المللی انرژی اتمی دارند این اقدام چین را برملا کرده&zwnj;اند. آژانس بین&zwnj;المللی انرژی اتمی از اظهار نظر در این باره خودداری کرده است. العجب. من مامور Ùˆ معذور..حالا از پدر عروس چند کلمه بشنوید: سخنگوی آژانس بین المللی انرژی اتمی ادعای برخی از رسانه های غربی را درباره این Ú©Ù‡ چین اطلاعاتی را درباره برنامه هسته ای ایران در اختیار آژانس قرار داده است ØŒ تکذیب کرد . ملیسا Ùلمینگ در Ú¯Ùت Ùˆ Ú¯Ùˆ با خبرنگار واحد مرکزی خبر تاکید کرد : آژانس بین المللی انرژی اتمی هرگز درباره اطلاعات محرمانه دریاÙتی از کشورها اظهار نظر نمی کند . ÙˆÛŒ Ú¯Ùت: هم
diff --git a/test/HTML/wired.html b/test/HTML/wired.html
new file mode 100644
index 0000000..3d00d28
--- /dev/null
+++ b/test/HTML/wired.html
@@ -0,0 +1,516 @@
+<!-- Vignette StoryServer 4 Fri Oct 15 11:37:12 1999 -->
+<html><head><title>Top Stories News from Wired News</title></head><body bgcolor="#FFFFFF" text="#000000" link="#333399" vlink="#660066" alink="#666699">
+
+<table border="0" width="600" cellspacing="0" cellpadding="0">
+ <tr>
+ <td valign="top" align="LEFT"><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="468" HEIGHT="60" BGCOLOR="#FFFFFF"><FORM METHOD=GET ACTION="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=9688&RunID=14074&AdID=22584&GroupID=1&FamilyID=2684&TagValues=8.25.156.159.166.171.172.174.179.180.181.182.183.196.197.199.208.389.412.436.2041.6750.78456.79630.81880&amp;Redirect=http://www.springstreet.com/aa/citysearch.htm" id=form1 name=form1>
+<TR><TD BGCOLOR="#330099"><INPUT NAME="city" TYPE="text" SIZE="7" MAXLENGTH="20" VALUE="Seattle"></TD>
+<TD ROWSPAN=2 ALIGN=LEFT BGCOLOR=FFFFFF><INPUT TYPE="IMAGE" SRC="http://static.wired.com/advertising/blipverts/allapartments/990625jpa_ssthome.gif" WIDTH="375" HEIGHT="60" BORDER="0" VALUE="search" HSPACE=0 alt="Search over 6,000,000 Apts with SpringStreet"></TD></TR>
+<TR><TD BGCOLOR="#330099">
+<SELECT NAME="state">
+<OPTION VALUE="WA" SELECTED>WA
+<OPTION VALUE="AL">AL</OPTION><OPTION VALUE="AK">AK</OPTION>
+<OPTION VALUE="AZ">AZ</OPTION>
+<OPTION VALUE="AR">AR</OPTION>
+<OPTION VALUE="CA">CA</OPTION>
+<OPTION VALUE="CO">CO</OPTION>
+<OPTION VALUE="CT">CT</OPTION>
+<OPTION VALUE="DE">DE</OPTION>
+<OPTION VALUE="DC">DC</OPTION>
+<OPTION VALUE="FL">FL</OPTION>
+<OPTION VALUE="GA">GA</OPTION><OPTION VALUE="HI">HI</OPTION>
+<OPTION VALUE="ID">ID</OPTION>
+<OPTION VALUE="IL">IL</OPTION>
+<OPTION VALUE="IN">IN</OPTION><OPTION VALUE="IA">IA</OPTION><OPTION VALUE="KS">KS</OPTION><OPTION VALUE="KY">KY</OPTION>
+<OPTION VALUE="LA">LA</OPTION>
+<OPTION VALUE="ME">ME</OPTION><OPTION VALUE="MD">MD</OPTION>
+<OPTION VALUE="MA">MA</OPTION>
+<OPTION VALUE="MI">MI</OPTION><OPTION VALUE="MN">MN</OPTION><OPTION VALUE="MS">MS</OPTION>
+<OPTION VALUE="MO">MO</OPTION>
+<OPTION VALUE="MT">MT</OPTION><OPTION VALUE="NE">NE</OPTION>
+<OPTION VALUE="NV">NV</OPTION><OPTION VALUE="NH">NH</OPTION>
+<OPTION VALUE="NJ">NJ</OPTION>
+<OPTION VALUE="NM">NM</OPTION><OPTION VALUE="NY">NY</OPTION>
+<OPTION VALUE="NC">NC</OPTION>
+<OPTION VALUE="ND">ND</OPTION>
+<OPTION VALUE="OH">OH</OPTION><OPTION VALUE="OK">OK</OPTION>
+<OPTION VALUE="OR">OR</OPTION>
+<OPTION VALUE="PA">PA</OPTION>
+<OPTION VALUE="PR">PR</OPTION><OPTION VALUE="RI">RI</OPTION>
+<OPTION VALUE="SC">SC</OPTION>
+<OPTION VALUE="SD">SD</OPTION><OPTION VALUE="TN">TN</OPTION><OPTION VALUE="TX">TX</OPTION>
+<OPTION VALUE="UT">UT</OPTION>
+<OPTION VALUE="VT">VT</OPTION>
+<OPTION VALUE="VA">VA</OPTION>
+<OPTION VALUE="WA">WA</OPTION>
+<OPTION VALUE="WV">WV</OPTION>
+<OPTION VALUE="WI">WI</OPTION>
+<OPTION VALUE="WY">WY</OPTION>
+</SELECT><INPUT TYPE="hidden" NAME="source" VALUE="2hb8bhc059">
+</TD></TR></FORM>
+</TABLE></td>
+ <td valign="top" align="RIGHT"><a href="http://nsads.hotwired.com/event.ng/Type=click&ProfileID=5597&RunID=17167&AdID=22588&GroupID=1&FamilyID=3228&TagValues=8.25.159.171.172.174.179.180.181.182.183.196.197.199.208.241.389.412.436.2035.6749.6750.70367.78456.79630.81880&amp;Redirect=http:%2F%2Fwww.hp.com%2Fgo%2Foriginal%20" TARGET="_top"><img src="http://static.wired.com/advertising/blipverts/hp_colorinkjet/hp_970c_120x60_6.gif" BORDER=1 height=60 width=120 alt="True to the Original"></a></td>
+ </tr>
+</table>
+
+<!-- WIRED NEWS header -->
+<!-- CMD_HOST = scoop.hotwired.com -->
+
+<a name="#"></a>
+<table border="0" width="600" cellspacing="0" cellpadding="0">
+
+ <tr><td></td><td colspan="2"><img src="http://static.wired.com/news/images/spacer.gif" height="5" width="447" alt=""></td>
+</tr>
+
+ <tr>
+ <td valign="BOTTOM" align="RIGHT" class="wired" bgcolor="#FFFFFF"><a href="/news/0,1287,,00.html"><img src="http://static.wired.com/news/images/wired_000000.gif" width="153" height="30" border="0"></a></td>
+ <td bgcolor="#FF0000" valign="BOTTOM" align="LEFT" width="97"><a href="/news/0,1287,,00.html"><img src="http://static.wired.com/news/images/news_ffffff.gif" width="103" height="30" border="0"></a></td>
+
+
+<td bgcolor="#FF0000" align="left" valign="center"><nobr><img src="http://static.wired.com/news/images/spacer.gif" width="344" height="1"><br><font size="1" face="Verdana, Arial, Geneva, sans-serif" color="#FFFFFF">&nbsp;&nbsp;&nbsp;<b>updated 10:15 a.m.&nbsp;&nbsp;15.Oct.99.PDT</b></font></nobr></td>
+
+
+ </tr>
+ <tr>
+ <td valign="MIDDLE" align="RIGHT" bgcolor="#FFFFFF"><img src="http://static.wired.com/news/images/spacer.gif" width=1 height="30"></td>
+
+ <td colspan="2" bgcolor="#999999">
+
+ <TABLE border="0" cellspacing="0" cellpadding="5">
+<form name="RedirectSearch" action="http://redirect.wired.com/search">
+ <tr>
+ <td>
+<font face="courier" size="1"><input type="TEXT" name="query" size="20" value=""></font>
+ </td>
+
+ <td>
+<select name="url">
+
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate=vignette.hts&Collection=vignette&QueryMode=Internet&Query=" selected>Wired News</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate=webmonkey.hts&Collection=webmonkey&QueryMode=Internet&Query=">Webmonkey</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=webmonkey_guides&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate=webmonkey_guides.hts&QueryMode=Internet&Query=">Webmonkey Guides</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=hotwired&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate=hotwired_archive.hts&QueryMode=Internet&Query=">HotWired Archives</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate=magazine.hts&Collection=magazine&QueryMode=Internet&Query=">Wired Magazine</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?Action=FilterSearch&Filter=docs_filter.hts&ResultTemplate=animation.hts&Collection=animation&QueryMode=Internet&Query=">Animation Express</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=suck&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate=suck.hts&QueryMode=Internet&Query=">Suck.com</option>
+ <option value="http://search.hotwired.com/search97/s97.vts?collection=uber_hotwired&Action=FilterSearch&filter=docs_filter.hts&ResultTemplate=uber_hotwired.hts&QueryMode=Internet&Query=">All of HotWired</option>
+ <option value="http://www.hotbot.com/?SM=MC&DV=0&LG=any&RD=RG&DC=10&DE=2&_v=2&OPs=MDRTP&MT=">The Web -> HotBot</option>
+</select>
+
+
+
+ </td>
+ <td>
+ <input type="SUBMIT" name="SUBMIT" value="SEARCH">
+ </td>
+ </tr>
+ </form>
+ </TABLE>
+ </td>
+ </tr>
+<!--
+<TR>
+<td></td>
+<TD valign="TOP" align="LEFT" colspan="3" bgcolor="#F0F0F0"><img src="http://static.wired.com/news/images/spacer.gif" height=1 width=15 alt=""><br>
+<i><font face="Verdana, Arial, Geneva, sans-serif" size="2">Sponsored by<a href="#">Sun Microsystems.</a> We're the dot in .com</font></i><i></i></TD>
+</TR>
+-->
+</table>
+<!-- end WIRED NEWS header -->
+
+<!-- begin upper left side Navigation -->
+
+<table border="0" cellpadding="3" cellspacing="0" align="LEFT" bgcolor="#FFFFFF">
+ <tr>
+ <td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+ <img src="http://static.wired.com/news/images/spacer.gif" width=147 height=1 border=0><br><b>SECTIONS</b></font></td>
+ </tr>
+
+<tr><td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/business/0,1367,,00.html">Business</a></font></td></tr><tr><td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/culture/0,1284,,00.html">Culture</a></font></td></tr><tr><td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/technology/0,1282,,00.html">Technology</a></font></td></tr><tr><td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/politics/0,1283,,00.html">Politics</a></font></td></tr><tr>
+<td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+<b>WIRE SERVICE NEWS</b></font></td>
+</tr>
+
+<tr>
+<td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/news/reuters/">Top Headlines</a></font></td>
+</tr>
+
+<tr>
+<td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/news/reuters/sports/">Sports</a></font></td>
+</tr>
+
+<tr>
+<td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="/news/news/reuters/business/">Finance</a></font></td>
+</tr>
+<!-- End upper left nav --><!-- Begin lower Left Nav -->
+ <tr>
+ <td bgcolor="#FF0000"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+ <b><font size="1">FREE DELIVERY</font></b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99">
+<table cellspacing="0" cellpadding="0" border=0 >
+ <tr><td bgcolor="#99FF99">
+ <form action="http://r.hotwired.com/r/hw_wm_r_nav_nwsltr/http://perl.hotwired.com/massmail/cgiParser.cgi" method="get" target="_top">
+
+ <input type="hidden" name="success_page" value="http://www.hotwired.com/email/signup/wirednews-ascii.html">
+
+<input type="hidden" name="failure_page" value="http://www.hotwired.com/email/signup/wirednews-ascii.html">
+
+<input type="hidden" name="LIST" value="wn_ascii">
+<input type="hidden" name="SOURCE" value="other">
+ <input type="hidden" name="ACTION" value="subscribe">
+
+<input type="TEXT" name="from" size="10" value="enter email">&nbsp;
+</td>
+ <td valign="top" bgcolor="#99FF99">
+ <input type="SUBMIT" name="SUBMIT" value="GO">
+
+ </td>
+ </tr> </form>
+</table></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FF0000"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF">
+ <b><font size="1">STOCKS</font></b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Get Quote:</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99" marginwidth=0 marginheight=0><form method=get action="http://r.wired.com/r/10020/http://stocks.wired.com/stocks_quotes.asp"><input type="TEXT" name="Symbol" size="12">&nbsp;<input type="SUBMIT" name="submit" value="GO"></form></td>
+ </tr>
+<!-- BEGIN BUTTON ADS -->
+
+ <tr><td bgcolor="#CCFFCC">
+<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">Financial Services</font><br>
+<center>
+<img src="http://static.wired.com/news/images/spacer.gif" height=3 width=5 alt=""><BR><img src="http://static.wired.com/news/images/button_ads_news10.gif" width="143" height="56" border="0" ALT="" USEMAP="#buttons" hspace=0 vspace=0>
+</center>
+
+<MAP NAME="buttons">
+ <AREA SHAPE="RECT" ALT="Datek" COORDS="0,0,69,24" HREF="http://r.wired.com/r/1649/http://ads16.focalink.com/SmartBanner/page/1266.631">
+ <AREA SHAPE="RECT" ALT="Wired Index Fund" COORDS="73,0,142,24" HREF="http://r.wired.com/r/227/http://www.gffunds.com/wired">
+ <AREA SHAPE="RECT" ALT="internet.com Index Fund" COORDS="73,31,142,55" HREF="http://r.wired.com/r/298/http://www.gffunds.com/isdex/">
+ <AREA SHAPE="RECT" ALT="GetSmart's MortgageFinder" COORDS="0,31,69,55" HREF="http://r.wired.com/r/294/http://www.getsmartinc.com/mortgage/HomeBanner?BANNERNAME=www.getsmartinc.com/mwired001m6075x25"></MAP>
+ </td>
+ </tr> <!-- END BUTTON ADS -->
+
+ <tr>
+ <td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="http://redirect.wired.com/redir/51/http://stocks.wired.com/">Today's Summary</a></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#CCFFCC"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="http://r.wired.com/r/hb_fin_r_wn_top/http://stocks.wired.com/stocks_indexes_detail.asp?Symbol=$WIRED">Wired Index</a> | <a href="http://redirect.wired.com/redir/52/http://stocks.wired.com/stocks_indexes.asp ">All Indexes</a></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#99FF99"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><a href="http://redirect.wired.com/redir/53/http://stocks.wired.com/stocks_portfolios.asp">Portfolios</a></font></td>
+ </tr>
+
+<!-- BEGIN B&N spot -->
+
+<tr>
+ <td bgcolor="#FF0000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>FIND A BOOK</b></font></td>
+</tr>
+<tr><td bgcolor="#CCFFCC">
+<table cellspacing="0" cellpadding="0" border=0 width=145>
+ <tr><td bgcolor="#CCFFCC">
+ <form action="http://r.wired.com/r/wn_nav_c_bn/http://barnesandnoble.bfast.com/booklink/click">
+<input type="hidden" name="sourceid" value="383471">
+<input type=hidden name="categoryid" value="categorydropdown">
+ <font size="2">
+ <select name="Subjects" size=4>
+<option value="301">Business Top 20
+<option value="500">Computers
+<option value="503">Computer Games
+<option value="1604">Current Affairs
+<option value="511">Cyberculture
+<option value="510">Internet/Web
+<option value="303">Investing
+<option value="1606">Law
+<option value="513">Multimedia
+
+<option value="1605">Newsmakers
+<option value="1607">Politics/Govt.
+
+ <option value="315"> Web Business
+ <option value="2800"> Bargain Books
+
+<option value="4">Other
+
+
+
+
+
+ </select></font></td></tr>
+ <tr align=left valign=top>
+ <td valign="top" bgcolor="#CCFFCC"> <input type="submit" value="GO">
+
+<IMG SRC="http://barnesandnoble.bfast.com/booklink/serve?sourceid=383471&is_search=Y" border=0 align=top>
+<!--
+<IMG SRC="http://www.wired.com/partner/bn/trackingimg/ot_wn_nav_c_bn.gif" border=0 width=1 height=1 align=top>
+-->
+</td>
+
+ </tr>
+ <tr align=left valign=top>
+
+ <td align=left valign=top colspan="2" rowspan="1" bgcolor="#CCFFCC">
+<p>
+ <font size="1" face="Verdana, Arial, Helvetica, " color="#000000">Powered by <a href="http://r.wired.com/r/wn_nav_c_bn/http://barnesandnoble.bfast.com/booklink/click?sourceid=383471">barnesandnoble.com</a>
+ </font>
+<br clear=all>
+
+
+</td>
+ </tr> </form>
+ </table>
+
+</td></tr>
+ <!-- END B&N spot -->
+
+<!-- BEGIN MAGAZINE SPOT -->
+
+ <tr>
+ <td bgcolor="#000000"><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="1"><b>WIRED
+ MAGAZINE </b></font></td>
+ </tr>
+<tr>
+<td bgcolor="#FFFF99" align="CENTER">
+<font face="verdana, arial, helvetica, sans-serif" size="1">
+<b>
+<br>
+
+<a href="http://www.wired.com/wired/"><img src="http://static.wired.com/news/images/wiredcover.gif" width="91" height="109" border="0" alt="Wired Magazine"></a><br></b>
+
+Issue 7.11
+</font>
+</td>
+</tr>
+
+<tr>
+<td bgcolor="#FFFF99" align="center">
+<font face="verdana, arial, helvetica, sans-serif" size="1">
+
+<a href="http://www.wired.com/wired/subscribe/special/79WN">Subscribe to Wired.<br>Special offer!</a>
+
+
+</font>
+</td>
+</tr>
+<!-- END MAGAZINE SPOT -->
+
+ <tr>
+ <td bgcolor="#000000">
+ <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>HOTWIRED</b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FFFF99"> <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">
+<a href="http://www.hotwired.com/">Frontdoor</a><br>
+<a href="http://www.hotwired.com/webmonkey/">Webmonkey</a><br>
+<a href="http://www.hotwired.com/webmonkey/guides/index.html">Webmonkey Guides</a><br>
+<a href="http://www.hotwired.com/rgb/">RGB Gallery</a><br>
+<a href="http://www.hotwired.com/animation/">Animation Express</a><br>
+<a href="http://go.suck.com/su_wnfd">Suck.com</a><br>
+</font></td>
+ </tr>
+
+ <tr>
+ <td bgcolor="#000000">
+ <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>HOTBOT</b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FFFF99"> <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000000">
+<a href="http://redirect.wired.com/redir/54/http://www.hotbot.com/">Search</a><br>
+<a href="http://shop.hotbot.com/">Shopping</a><br>
+</font></td>
+ </tr>
+
+ <tr><td>
+ <br>
+ <font face="Verdana, Arial, Helvetica, sans-serif" size="1">
+ <font face="Verdana, Arial, Helvetica, sans-serif" size="1">
+ Wired News <a href="/news/who/0,1362,,00.html">staff</a><br><br>
+
+ <!-- Wired News is <a href="http://www.wired.com/news/jobs.html">hiring</a><br><br> -->
+
+ <b><a href="/news/feedback/0,1364,,00.html">Contact us</a></b></font>
+
+
+ <br><br>
+
+ <font face="Verdana, Arial, Helvetica, sans-serif" size="1">Wired News delivered<br>by <a href="/news/palmpilot/0,1365,,00.html">PalmPilot</a>,<br><a href="http://www.hotwired.com/email/signup/wn_outlook.html">Outlook Express</a>,<br><a href="http://redirect.wired.com/redir/55/http://form.netscape.com/ibd/html/ibd_frameset.html">In-Box Direct</a>,<br>
+or <a href="/news/pointcast/0,1366,,00.html">PointCast</a></font><br>
+
+<!-- TRACKING -->
+<img src="http://www.wired.com/special/modx/news.gif" height=1 width=1 alt="">
+</td>
+ </tr>
+
+</table>
+
+<!-- end lower left side Navigation -->
+<!-- CONTENT TABLE -->
+
+<TABLE border="0" width="447" cellspacing="0" cellpadding="0" bordercolor="#66FF00">
+ <TR>
+ <TD valign="TOP" align="LEFT" rowspan="2">
+ <img src="http://static.wired.com/news/images/spacer.gif" height=1 width=15 alt=""><BR>
+ </TD>
+ <TD colspan="3" valign="TOP" align="LEFT"><img src="http://static.wired.com/news/images/spacer.gif" height=7 width=432 alt=""><BR>
+
+
+<!-- SQL query for Package here -->
+
+<font face="Verdana, Arial, Geneva, sans-serif" size=2><b><i>Nomad's Land</i></b></font><br><img src="http://static.wired.com/news/images/pix155.gif" height=10 width=155 alt=""><br><!-- IBD_SUBJECT: Homeless, but ID'd, in Seattle --><font face="Arial, Helvetica, sans-serif" size=5><b><a href="/news/politics/0,1283,31911,00.html">Homeless, but ID'd, in Seattle</a></b></font><br><font size=1 face="Verdana, Arial, Geneva, sans-serif" color=#FF0000>8:15 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>The city council approves a plan to track the homeless by a numbering system, saying it'll improve services. The implications worry privacy advocates, naturally. By Craig Bicknell.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/politics/0,1283,,00.html">in&nbsp;Politics</a></i></font><br><table bgcolor="#F0F0F0" cellpadding="0" cellspacing="0" border="0" width="147" align="RIGHT">
+ <!-- Commentary Frag Begin -->
+ <TR>
+ <TD bgcolor="#000000">&nbsp;</TD>
+ <TD bgcolor="#000000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>HITS &amp; MISC.</b></font></TD>
+ </TR>
+ <tr>
+ <TD>&nbsp;</TD>
+ <td><img src="http://static.wired.com/news/images/spacer.gif" height=5 width=5 alt=""><br>
+
+ <font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/commentarySection/0,1292,31664,00.html">Calendar of E-Vents</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Ongoing goings-on. </font><br><br><font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/commentarySection/0,1292,31926,00.html">Rants & Raves</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Readers on Apple's G4 ... AOL's passwords ... MS vs. Linux.</font><br><br> </td>
+ </tr>
+<!-- Commentary Frag End -->
+<tr>
+<td align="left" bgcolor="#000000">&nbsp;</td>
+<td bgcolor="#000000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>CURRENT HOO-HA</b></font></td>
+</tr>
+
+<tr>
+<td>&nbsp;</td>
+<td>
+<img src="http://static.wired.com/news/images/spacer.gif" height=5 width=5 alt="">
+<br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/mp3/0,1285,,00.html">MP3 Rocks the Web</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Download the sound. <br><i>Sponsored by <a href="http://r.hotwired.com/r/wn_fd_mp3_r_mscm_txt/http://webfarm.mediaplex.com/click_thru_request/164-1361b-1052" style="text-decoration:none"><font color="#000000">Musicmaker</font></a></i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/wireless/0,1382,,00.html">The Wireless World</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Networking gets unplugged. <br><i>Sponsored by <a href="http://www.ericsson.se/get/internet/default.shtml" style="text-decoration:none"><font color="#000000">Ericsson</font></a></i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/digiwood/0,1412,,00.html">Digital Hollywood</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">The buzz of tech.</font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/ipo/0,1350,,00.html">IPO Outlook</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Deals in the pipeline. <br><i>Sponsored by <a href="http://r.hotwired.com/r/wn_ipo_r_sun_txt/http://sun.com/ads/smi/brand/hotwired.html" style="text-decoration:none"><font color="#000000">Sun</font></a></i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/ebiz/0,1272,,00.html">E-Biz</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Business unusual. <br><i>Sponsored by <a href="http://r.wired.com/r/wn_fd_r_ebiz_ibm_txt/http://www.ibm.com" style="text-decoration:none"><font color="#000000">IBM</font></a></i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/medtech/0,1286,,00.html">Med-Tech Center</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">From the bleeding edge.<br><i>Sponsored by WebMD</i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/linux/0,1411,,00.html">The Linux Effect</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Not just for geeks.</font><br><br> <img src="http://static.wired.com/news/images/spacer.gif" height=7 width=5 alt=""><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/exec/0,1370,,00.html">Executive Summary</a></b></font><br><font size=1 face="Arial, Helvetica, sans-serif" color="#000000">CEOs, COOs, CIOs unite. <br><i>Sponsored by <a href="http://r.wired.com/r/wn_exec_r_vign/http://www.vignette.com/" style="text-decoration:none"><font color="#000000">Vignette</a></i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/school/0,1383,,00.html">Making the Grade</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Reading, writing, and ROM. <br><i>Sponsored by <a href="http://r.hotwired.com/r/wn_sch_r_nav_uop/http://ads25.focalink.com/SmartBanner/page?12630.53" style="text-decoration:none"><font color="#000000">U of Phoenix</font></a></i></font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/infostructure/0,1377,,00.html">Infostructure</a></b></font><br><font size=1 face="Arial, Helvetica, sans-serif" color="#000000">An IS/IT resource <br><i>Sponsored by <a href="http://r.wired.com/r/wn_is_r_ssec/http://ad.doubleclick.net/clk;653163;3599571;s?http://www.sprintbiz.com/s
+ervlet/appservlet?from=/wired/sprint/&template=/security/security.html&SITE=
+wired.com&BANNER=Sprint" style="text-decoration:none"><font color="#000000">Sprint</a></i></font</font><br><br>
+
+<font size=2 face="Arial,Helvetica, sans-serif"><b><a href="/news/y2k/0,1360,,00.html">Y2K Watch</a></b></font><br><font size=2 face="Arial, Helvetica, sans-serif"><font size=1 face="Arial, Geneva, sans-serif" color="#000000">Tick... Tick... Tick...</font><br><br>
+
+<font face="Arial, Helvetica, sans-serif" size=2><b><i><a href="/news/special_reports/1,1293,,00.html">More Hoo-Ha</a></i></b></font><br>&nbsp;<br>
+
+</td>
+</tr>
+<!-- start of Gen News -->
+ <tr>
+ <td bgcolor="#000000">&nbsp;</td>
+ <td bgcolor="#000000"><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b>MEANWHILE...</b></font></td>
+ </tr>
+
+ <tr>
+ <td>&nbsp;</td>
+ <td align="left" valign="top">
+ <img src="http://static.wired.com/news/images/spacer.gif" height=5 width=5 alt=""><br>
+
+
+<!-- 31942 -->
+<font size="2" face="Arial, Helvetica, sans-serif" color="#000000"><b>Führer Furor</b></font><br><font size="1" face="Arial, Geneva, sans-serif" color="#000000"><p>
+Contruction workers in Berlin opened an old wound in the German psyche this week when they accidentally stumbled across Adolf Hitler's bunker while excavating near the Brandenburg Gate. The bunker, just south of the Gate, was where Hitler and his closest associates barricaded themselves as the Red Army approached Berlin in the waning days of World War II. It is also where the Führer and his bride, Eva Braun, committed suicide rather than fall into the hands of the Russians. Although the bunker's location has never been a mystery, it has been sealed off since the end of the war to keep neo-Nazis from turning it into a shrine.
+<br><li>More from <a
+href="http://www.lycos.com/news/flash/hitlerbunker.html?v=wn1015&lpv=1">Lycos</a></font><br><br>
+ </td>
+ </tr>
+<!-- end of Gen News -->
+</table>
+
+
+<font size="1">&nbsp;<br></font>
+
+<br>
+
+<font face="Verdana, Arial, Geneva, sans-serif" size=2><b><i>Other Top Stories</i></b></font><br>
+<img src="http://static.wired.com/news/images/pix155.gif" height=10 width=155 alt=""><br>
+
+<!-- SQL query here -->
+<!-- IBD_SUBJECT:Wall Street Keeps Reeling --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/reuters/0,1349,31934,00.html">Wall Street Keeps Reeling</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>10:15 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>The Dow and Nasdaq suffer sizeable losses during the first half of Friday trading. Why? Wholesale prices are the highest this decade, and Greenspan is concerned about stock prices.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/reuters/0,1349,,00.html">in&nbsp;Reuters</a></i></font><br><br><!-- IBD_SUBJECT:The Market's Madness --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/reuters/0,1349,31935,00.html">The Market's Madness</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>9:10 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>The bulls and the bears are in the midst of a Battle Royale, and all this turbulence is not a healthy thing. So say the experts.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/reuters/0,1349,,00.html">in&nbsp;Reuters</a></i></font><br><br><!-- IBD_SUBJECT:'Want a Loan? What's Your Race?' --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/politics/0,1283,31533,00.html">'Want a Loan? What's Your Race?'</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>The Federal Reserve is in the middle of changing banking regulations to let banks collect data on the race, sex, religion, and national origin of their customers. By Declan McCullagh. </font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/politics/0,1283,,00.html">in&nbsp;Politics</a></i></font><br><br><!-- IBD_SUBJECT:Music Regs: A Bagful of Noise --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/business/0,1367,31832,00.html">Music Regs: A Bagful of Noise</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>The struggle to come up with a digital music standard that would minimize download piracy is pushing right up against the holiday gift-giving season. By Jennifer Sullivan.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/business/0,1367,,00.html">in&nbsp;Business</a></i></font><br><br><!-- IBD_SUBJECT:Can't Beat 'Em? Green 'Em --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/technology/0,1282,31927,00.html">Can't Beat 'Em? Green 'Em</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>High-tech companies are notoriously environmentally unfriendly, and a growing number of "Greenies" are trying to change things from the inside ... with varying results. By Chris Gaither.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/technology/0,1282,,00.html">in&nbsp;Technology</a></i></font><br><br><!-- IBD_SUBJECT:Y2K Cloud Over MS Office --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/business/0,1367,31932,00.html">Y2K Cloud Over MS Office</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>Windows NT sales remain strong, but corporate clients are wary of upgrading to MS Office 2000. Analysts say that means strong, but not stunning, Microsoft earnings. </font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/business/0,1367,,00.html">in&nbsp;Business</a></i></font><br><br><font color=#FF0000 face="Verdana, Arial, Geneva, sans-serif" size=1>Med-Tech</font><br><!-- IBD_SUBJECT:Biochips for Custom Chemo --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/technology/0,1282,31914,00.html">Biochips for Custom Chemo</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>Different cancer patients need different medicine, but doctors can rarely determine the best match. New biochip technology promises chemotherapy tailored to a tumor's genetic make-up. By Kristen Philipkoski.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/technology/0,1282,,00.html">in&nbsp;Technology</a></i></font><br><br><!-- IBD_SUBJECT:High Stakes in Priceline Suit --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/business/0,1367,31916,00.html">High Stakes in Priceline Suit</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>It's not just another round of Redmond-bashing. A Priceline.com lawsuit against Microsoft's Expedia.com may have a big impact on how Net companies protect their business models. By Joanna Glasner.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/business/0,1367,,00.html">in&nbsp;Business</a></i></font><br><br><!-- IBD_SUBJECT:Biodiversity Merges Online --><font face="Arial, Helvetica, sans-serif" size=3><b><a href="/news/technology/0,1282,31918,00.html">Biodiversity Merges Online</a></b></font><br><font color=#ff0000 face="Verdana, Arial, Geneva, sans-serif" size=1>3:00 a.m.</font>&nbsp;<font face="Verdana, Arial, Geneva, sans-serif" size=2>The far-flung databases on global biodiversity get together to form one monster database. Soon the red-eyed tree frog will be eyeing those Swedish lingonberries. From the Environment News Service.</font><br><font face="Verdana, Arial, Helvetica, sans-serif" size=1><i><a href="/news/technology/0,1282,,00.html">in&nbsp;Technology</a></i></font><br><br><!-- SQL above -->
+
+
+
+<!------TRADES--------->
+<br>
+<font face= "Verdana, Arial, Geneva, sans-serif" size=2><b><i>Elsewhere Today</i></b></font><br>
+<img src="http://static.wired.com/news/images/pix155.gif" height=10 width=155 alt=""><br>
+
+<!-- SQL query here -->
+<font face="helvetica, arial" size=3><b><a href="http://www.thestandard.com/articles/display/0,1449,6975,00.html?home.tf">FCC: Hands-Off on Broadband</a></b></font><br><font face="geneva, arial" size=2><cite>The Industry Standard</cite></font><br><br><font face="helvetica, arial" size=3><b><a href="http://news.lycos.com/stories/TopNews/19991014RTNEWS-ARMS-TREATY.asp">White House Lashes Out on Treaty</a></b></font><br><font face="geneva, arial" size=2>Lycos</font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.pathfinder.com/time/magazine/articles/0,3266,32207,00.html">Steve Jobs at 44</a></b></font><br><font face="geneva, arial" size=2><cite>Time</cite></font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.zdnet.com/zdnn/stories/news/0,4586,2353608,00.html">Computers May Run on Gas</a></b></font><br><font face="geneva, arial" size=2>ZDNN</font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.nytimes.com/library/tech/99/10/biztech/articles/14free.html">Much Is Free in the Wired World</a></b></font><br><font face="geneva, arial" size=2><cite>The New York Times</cite> (Registration Required)</font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.usatoday.com/life/cyber/nb/nb4.htm">Melissa: I'm Baaaack</a></b></font><br><font face="geneva, arial" size=2><cite>USA Today</cite></font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.msnbc.com/news/322926.asp">Domain Owners Surrender Privacy</a></b></font><br><font face="geneva, arial" size=2>MSNBC</font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.washingtonpost.com/wp-srv/business/longterm/tech/techthursday/download/download.htm">Dividing to Conquer in VC Game</a></b></font><br><font face="geneva, arial" size=2><cite>The Washington Post</cite></font><br><br><font face="helvetica, arial" size=3><b><a href="http://www.salon.com/tech/books/1999/10/14/redhat_book/index.html">The Red Hat Diaries</a></b></font><br><font face="geneva, arial" size=2>Salon</font><br><br><font face="helvetica, arial" size=3><b><a href="http://news.bbc.co.uk/hi/english/sci/tech/newsid_473000/473856.stm">Screensaver to Predict Climate</a></b></font><br><font face="geneva, arial" size=2>BBC News</font><br><br><!-- SQL above -->
+
+
+
+<!-- - - - - - - - - - - - - -->
+
+ </TD>
+ </TR>
+
+ <TR>
+ <TD valign="TOP" align="LEFT">
+
+ <img src="http://static.wired.com/news/images/spacer.gif" height=1 width=280 alt=""><BR>
+
+ <!-- FOOTER -->
+
+<br><img src="http://static.wired.com/news/images/pix155.gif" height=10 width=155 border=0 usemap="#navstrip.map" alt="">
+<br>
+
+<img src="http://static.wired.com/news/images/navstrip_off.gif" height=17 width=126 usemap="#navstrip.map" border=0 alt=""><br><br>
+
+<p><font face="Verdana, Arial, Geneva, sans-serif" size=1>
+<a href="http://www.wired.com/news/feedback.html">Send us feedback</a>
+&nbsp;|&nbsp;
+<a href="http://www.hotwired.com/jobs/">Work at Wired Digital</a>
+&nbsp;|&nbsp;
+<a href="http://home.wired.com/advertising/">Advertise with us</a>
+<br>
+<a href="http://home.wired.com/">About Wired Digital</a>
+&nbsp;|&nbsp;
+<a href="http://www.wired.com/home/digital/privacy/">Our Privacy Policy</a></font>
+
+
+<p><font face="Verdana, Arial, Geneva" size=1><a href="http://www.wired.com/home/copyright.html">Copyright</a> &copy; 1994-99 Wired Digital Inc. All rights reserved.</font>
+
+<br>
+<!-- TRACKING -->
+<img src="http://www.wired.com/special/modx/news.gif" height=1 width=1 alt="">
+
+<MAP NAME="navstrip.map">
+<AREA SHAPE=rect COORDS="0,0,14,16" HREF="/news">
+<AREA SHAPE=rect COORDS="15,0 31,16" HREF="/news/business/">
+<AREA SHAPE=rect COORDS="32,0,48,16" HREF="/news/culture/">
+<AREA SHAPE=rect COORDS="49,0,65,16" HREF="/news/technology/">
+<AREA SHAPE=rect COORDS="66,0,83,16" HREF="/news/politics/">
+</MAP>
+ </TD>
+ <TD valign="TOP" align="LEFT">
+ <img src="http://static.wired.com/news/images/spacer.gif" height=1 width=5 alt="">
+ </TD>
+ <TD valign="TOP" align="LEFT">
+ </TD>
+ </TR>
+</TABLE>
+
+
+<br>
+</body>
+</html>
+
diff --git a/test/SVG/4rects.xml b/test/SVG/4rects.xml
new file mode 100755
index 0000000..b8d1a65
--- /dev/null
+++ b/test/SVG/4rects.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Four separate rectangles
+ </desc>
+ <rect width="20" height="60"/>
+ <rect width="30" height="70"/>
+ <rect width="40" height="80"/>
+ <rect width="50" height="90"/>
+</svg>
diff --git a/test/SVG/a-valid.xml b/test/SVG/a-valid.xml
new file mode 100755
index 0000000..233b78c
--- /dev/null
+++ b/test/SVG/a-valid.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This valid svg document draws a triangle which is a hyperlink
+ </desc>
+ <a href="http://www.w3.org">
+ <p d="M 0 0 L 200 0 L 100 200 Z"/>
+ </a>
+</svg>
diff --git a/test/SVG/a-wf.xml b/test/SVG/a-wf.xml
new file mode 100755
index 0000000..756e9c6
--- /dev/null
+++ b/test/SVG/a-wf.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <desc>This well formed svg document draws a triangle which is a hyperlink
+ </desc>
+ <a xml:link="simple" show="replace" actuate="user" href="http://www.w3.org">
+ <p d="M 0 0 L 200 0 L 100 200 Z"/>
+ </a>
+</svg>
diff --git a/test/SVG/bike.xml b/test/SVG/bike.xml
new file mode 100755
index 0000000..796b996
--- /dev/null
+++ b/test/SVG/bike.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<!--DOCTYPE svg SYSTEM "svg-19990412.dtd"-->
+<svg width="4in" height="3in">
+ <title>Kona Lavadome mountain bike
+ </title>
+ <desc>This picture shows a mountain bike, a human-propelled,
+ multi-terrain vehicle. While it can be succesfully used on moorland,
+ forest, roads, and large hills it is not actually suitable for going
+ up mountains.
+ </desc>
+ <g id="bike">
+ <defs>
+ <symbol id="spoke"><desc>14/12 gauge double butted spoke</desc>
+ <!-- the path data goes here --></symbol>
+
+ <symbol id="hub"><desc>black anodised low torsion hub</desc>
+ <!--the path data goes here --></symbol>
+
+ <symbol id="rim"><desc>twin wall, eyeletted rim</desc>
+ <!-- the path data goes here--></symbol>
+
+ <symbol id="cogs"><desc>8 speed, wide ratio gearing</desc>
+ <!--the path data goes here --></symbol>
+
+ <symbol id="lacing"><desc>double cross lacing of 32 spokes</desc>
+ </symbol>
+ </defs>
+ <!-- the overall bike drawing goes here -->
+ <g id="frontwheel">
+ <title>Front wheel</title>
+ <desc>The front wheel provides grip, steering and some shock absorption</desc>
+ <use href="id(lacing)" style="rotation: 20deg; fillcolor: black"/>
+ </g>
+ <g id="backwheel">
+ </g>
+ <g id="frame"><!-- and so on -->
+ </g>
+ </g>
+</svg>
diff --git a/test/SVG/circle.xml b/test/SVG/circle.xml
new file mode 100755
index 0000000..44e70e7
--- /dev/null
+++ b/test/SVG/circle.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This is a blue circle with a red outline
+ </desc>
+ <g>
+ <circle style="fill: blue; stroke: red"
+ cx="200" cy="200" r="100"/>
+ </g>
+</svg>
diff --git a/test/SVG/defs.xml b/test/SVG/defs.xml
new file mode 100755
index 0000000..0bf5f27
--- /dev/null
+++ b/test/SVG/defs.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <rect id="TemplateObject01" width="100" height="37.34"/>
+ <lineargradient id="Gradient01">
+ <gradientstop offset="30%" color="#39F"/>
+ </lineargradient>
+ </defs>
+ <desc>Defining things for later use
+ </desc>
+ <!-- SVG elements in here would reference/use
+ the elements defined in the <defs> -->
+</svg>
diff --git a/test/SVG/desc.xml b/test/SVG/desc.xml
new file mode 100755
index 0000000..87838db
--- /dev/null
+++ b/test/SVG/desc.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg SYSTEM "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+<g>
+ <title>
+ Company sales by region
+ </title>
+ <desc>
+ This is a bar chart which shows
+ company sales by region.
+ </desc>
+ <!-- Bar chart defined as vector data -->
+</g>
+</svg>
diff --git a/test/SVG/ellipse.xml b/test/SVG/ellipse.xml
new file mode 100755
index 0000000..2097ef5
--- /dev/null
+++ b/test/SVG/ellipse.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This is an ellipse, axis aligned and centered on the origin
+ </desc>
+ <g>
+ <ellipse major="85" minor="45"/>
+ </g>
+</svg>
diff --git a/test/SVG/flower2.xml b/test/SVG/flower2.xml
new file mode 100755
index 0000000..10064c9
--- /dev/null
+++ b/test/SVG/flower2.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="800px" height="800px">
+ <desc>This sample SVG file draws a flower</desc>
+ <g style="transform: matrix(1 0 0 -1 -25.88 798.60);
+ stroke: #000; stroke-width: 1" >
+ <path style="fill: #1A5466" d = "m 242.33 684.19
+ C 346.44 757.48 271.45 647.38 213.17 641.37
+ C 271.45 647.38 383.43 575.21 256.71 613.30
+ C 383.43 575.21 251.04 565.90 205.23 609.68
+ C 251.04 565.90 265.13 432.88 210.71 557.95
+ C 265.13 432.88 175.04 531.37 175.67 596.26
+ C 175.04 531.37 80.63 437.67 138.96 559.82
+ C 80.63 437.67 100.67 569.80 146.75 611.20
+ C 100.67 569.80 -31.14 585.98 95.49 617.49
+ C -31.14 585.98 83.94 652.25 140.24 643.26
+ C 83.94 652.25 13.98 766.12 113.04 687.55
+ C 13.98 766.12 137.45 716.63 161.05 668.30
+ C 137.45 716.63 182.02 842.45 178.39 717.23
+ C 182.02 842.45 220.90 714.46 193.51 667.46
+ C 220.90 714.46 346.44 757.48 242.33 684.19 z" />
+ <path style="fill: #34AACD" d = "M 235.33 691.19
+ C 339.44 764.48 264.45 654.38 206.17 648.37
+ C 264.45 654.38 376.43 582.21 249.71 620.30
+ C 376.43 582.21 244.04 572.90 198.23 616.68
+ C 244.04 572.90 258.13 439.88 203.71 564.95
+ C 258.13 439.88 168.04 538.37 168.67 603.26
+ C 168.04 538.37 73.63 444.67 131.96 566.82
+ C 73.63 444.67 93.67 576.80 139.75 618.20
+ C 93.67 576.80 -38.14 592.98 88.49 624.49
+ C -38.14 592.98 76.94 659.25 133.24 650.26
+ C 76.94 659.25 6.98 773.12 106.04 694.55
+ C 6.98 773.12 130.45 723.63 154.05 675.30
+ C 130.45 723.63 175.02 849.45 171.39 724.23
+ C 175.02 849.45 213.90 721.46 186.51 674.46
+ C 213.90 721.46 339.44 764.48 235.33 691.19 z" />
+ <path style="fill: #F881BF" d = "M 199.44 634.43
+ C 199.44 622.16 189.19 612.21 176.54 612.21
+ C 163.89 612.21 153.63 622.16 153.63 634.43
+ C 153.63 646.71 163.89 656.66 176.54 656.66
+ C 189.19 656.66 199.44 646.71 199.44 634.43 z"/>
+ </g>
+</svg>
diff --git a/test/SVG/gradient.xml b/test/SVG/gradient.xml
new file mode 100755
index 0000000..328d5e8
--- /dev/null
+++ b/test/SVG/gradient.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN" "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Gradient example
+ </desc>
+ <g>
+ <defs>
+ <lineargradient id="MyGradient">
+ <!-- Define linear gradient here -->
+ <gradientstop offset="0%" color="#F60"/>
+ <gradientstop offset="70%" color="#FF6"/>
+ </lineargradient>
+ </defs>
+ <rect style="fill: url(#MyGradient)" width="20" height="15.8"/>
+ </g>
+</svg>
diff --git a/test/SVG/group01.xml b/test/SVG/group01.xml
new file mode 100755
index 0000000..906a220
--- /dev/null
+++ b/test/SVG/group01.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Two groups, each of two rectangles
+ </desc>
+ <g style="fillcolor:red">
+ <rect x="100" y="100" width="100" height="100" />
+ <rect x="300" y="100" width="100" height="100" />
+ </g>
+ <g style="fillcolor:blue">
+ <rect x="100" y="300" width="100" height="100" />
+ <rect x="300" y="300" width="100" height="100" />
+ </g>
+</svg>
diff --git a/test/SVG/group02.xml b/test/SVG/group02.xml
new file mode 100755
index 0000000..082474a
--- /dev/null
+++ b/test/SVG/group02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Two named groups
+ </desc>
+ <g id="OBJECT1">
+ <rect x="100" y="100" width="100" height="100" />
+ </g>
+ <g id="OBJECT2">
+ <circle cx="150" cy="300" r="25" />
+ </g>
+</svg>
diff --git a/test/SVG/group03.xml b/test/SVG/group03.xml
new file mode 100755
index 0000000..ad25e93
--- /dev/null
+++ b/test/SVG/group03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Groups can nest
+ </desc>
+ <g>
+ <g>
+ <g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/test/SVG/image-valid.xml b/test/SVG/image-valid.xml
new file mode 100755
index 0000000..320e8d2
--- /dev/null
+++ b/test/SVG/image-valid.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This graphic links to an external image
+ </desc>
+ <image x="200" y="200" style="width: 100px; height: 100px"
+ href="myimage.png">
+ <title>My image</title>
+ </image>
+</svg>
diff --git a/test/SVG/image-wf.xml b/test/SVG/image-wf.xml
new file mode 100755
index 0000000..6d13b33
--- /dev/null
+++ b/test/SVG/image-wf.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns='http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <desc>This links to an external image
+ </desc>
+ <image x="200" y="200" style="width: 100px; height: 100px"
+ xml:link = 'simple' show = 'embed' actuate = 'auto'
+ href="myimage.png">
+ <title>My image</title>
+ </image>
+</svg>
diff --git a/test/SVG/lin-gradient.xml b/test/SVG/lin-gradient.xml
new file mode 100755
index 0000000..8ace2b4
--- /dev/null
+++ b/test/SVG/lin-gradient.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Linear gradient example
+ </desc>
+ <g>
+ <defs>
+ <lineargradient id="MyGradient">
+ <gradientstop offset="0%" color="#F60"/>
+ <gradientstop offset="70%" color="#FF6"/>
+ </lineargradient>
+ </defs>
+ <rect style="fill: url(#MyGradient)" width="20" height="15.8"/>
+ </g>
+</svg>
diff --git a/test/SVG/marker.xml b/test/SVG/marker.xml
new file mode 100755
index 0000000..62716a2
--- /dev/null
+++ b/test/SVG/marker.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="Triangle" min-x="0" min-y="0" max-x="100"
+ max-y="100" ref-x="0" ref-y="50">
+ <path d="M 0 0 L 0 100 L 100 50 z"/>
+ </symbol>
+ </defs>
+ <desc>An double-headed arrow example using markers
+ </desc>
+ <path d="M0 0">
+ <!-- Place an arrowhead rotated 180 degrees at the
+ beginning of the path -->
+ <marker href="#Triangle" width="200" height="200"
+ style="text-transform: rotate(180)"/>
+ <data d="M 2000 2000"/>
+
+ <!-- Turn off markers in the middle of the path -->
+ <marker href=""/>
+ <data d="L 4000 2000 L 4000 4000"/>
+
+ <!-- Place an arrowhead at the end of the path-->
+ <marker href="#Triangle" width="200" height="200"/>
+ <data d="L 6000 4000"/>
+ </path>
+</svg>
diff --git a/test/SVG/mask.xml b/test/SVG/mask.xml
new file mode 100755
index 0000000..f81aca1
--- /dev/null
+++ b/test/SVG/mask.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Example of using a mask
+ </desc>
+ <g>
+ <defs>
+ <image id="MyMask" href="transp.png"></image>
+ </defs>
+ <rect style="mask: url(#MyMask)" width="12.5" height="30" />
+ </g>
+</svg>
diff --git a/test/SVG/mathswitch.xml b/test/SVG/mathswitch.xml
new file mode 100755
index 0000000..4d28f33
--- /dev/null
+++ b/test/SVG/mathswitch.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <desc>This example uses the switch element to provide a
+ fallback graphical representation of an equation, if
+ MathML is not supported.
+ </desc>
+ <!-- The <switch> element will process the first child element
+ whose testing attributes evaluate to true.-->
+ <switch>
+
+ <!-- Process the MathML if the system-required attribute
+ evaluates to true (i.e., the user agent supports MathML
+ embedded within SVG). -->
+ <foreignobject
+ system-required="http://www.w3.org/TR/REC-MathML-19980407"
+ width="100" height="50">
+ <!-- MathML content goes here -->
+ </foreignobject>
+
+ <!-- Else, process the following alternate SVG.
+ Note that there are no testing attributes on the <g> element.
+ If no testing attributes are provided, it is as if there
+ were testing attributes and they evaluated to true.-->
+ <g>
+ <!-- Draw a red rectangle with a text string on top. -->
+ <rect style="fill: red"/>
+ <text>Formula goes here</text>
+ </g>
+
+ </switch>
+</svg>
diff --git a/test/SVG/parentns.xml b/test/SVG/parentns.xml
new file mode 100755
index 0000000..ba410e1
--- /dev/null
+++ b/test/SVG/parentns.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<ABC xmlns="http://parent.name.space"
+ xmlns:svg="http://www.w3.org/Graphics/SVG/1.0">
+ <!-- document in the parent namespace -->
+ <svg:svg width="40%" height="40%">
+ <svg:rectangle width="43.6" height="31.5"/>
+ <!-- svg graphic continues -->
+ </svg:svg>
+ <!-- document in parent namespace continues -->
+</ABC>
+
+
diff --git a/test/SVG/path01.xml b/test/SVG/path01.xml
new file mode 100755
index 0000000..4590b6c
--- /dev/null
+++ b/test/SVG/path01.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+<path d="M 100 100 L 140 100 L 120 140 z"/>
+</svg>
diff --git a/test/SVG/path02.xml b/test/SVG/path02.xml
new file mode 100755
index 0000000..a91aa61
--- /dev/null
+++ b/test/SVG/path02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <path d="M 100 100">
+ <data d="L 140 100"/>
+ <data d="L 120 140"/>
+ <data d="z"/>
+ </path>
+</svg>
diff --git a/test/SVG/patternfill.xml b/test/SVG/patternfill.xml
new file mode 100755
index 0000000..292f4f7
--- /dev/null
+++ b/test/SVG/patternfill.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="fourstar">
+ <!-- Define the pattern using standard graphics elements
+ such as paths, images, text and shapes -->
+ </symbol>
+ </defs>
+ <ellipse style="fill: url(#fourstar)" major="40" minor="27" />
+</svg>
diff --git a/test/SVG/polyline.xml b/test/SVG/polyline.xml
new file mode 100755
index 0000000..e6f7b62
--- /dev/null
+++ b/test/SVG/polyline.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>A sample polyline, and equivalent path
+ </desc>
+ <polyline verts="20,20 50,100 200,80 70,300"/>
+ <path d="M20,20 L50,100 L200,80 L70,300"/>
+</svg>
diff --git a/test/SVG/private.xml b/test/SVG/private.xml
new file mode 100755
index 0000000..3601365
--- /dev/null
+++ b/test/SVG/private.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <defs>
+ <private xmlns:myapp="http://mycompany/mapapp" >
+ <myapp:piechart title="Sales by Region">
+ <myapp:piece label="Northern Region" value="1.23"/>
+ <myapp:piece label="Eastern Region" value="2.53"/>
+ <myapp:piece label="Southern Region" value="3.89"/>
+ <myapp:piece label="Western Region" value="2.04"/>
+ <!-- Other private data goes here -->
+ </myapp:piechart>
+ </private>
+ </defs>
+ <desc>This chart includes private data in another namespace
+ </desc>
+ <!-- In here would be the actual graphics elements which
+ draw the pie chart -->
+</svg>
diff --git a/test/SVG/rad-gradient.xml b/test/SVG/rad-gradient.xml
new file mode 100755
index 0000000..9ad7683
--- /dev/null
+++ b/test/SVG/rad-gradient.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Radial gradient example with three gradient stops
+ </desc>
+ <g>
+ <defs>
+ <radialgradient id="MyGradient">
+ <gradientstop offset="0%" color="white"/>
+ <gradientstop offset="50%" color="red"/>
+ <gradientstop offset="100%" color="black"/>
+ </radialgradient>
+ </defs>
+ <circle style="fill: url(#MyGradient)" r="42"/>
+ </g>
+</svg>
diff --git a/test/SVG/rectangle.xml b/test/SVG/rectangle.xml
new file mode 100755
index 0000000..e6cdeea
--- /dev/null
+++ b/test/SVG/rectangle.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This is a rectangle
+ </desc>
+ <g>
+ <rect x="20" y="30" width="100" height="80"/>
+ </g>
+</svg>
diff --git a/test/SVG/richdesc.xml b/test/SVG/richdesc.xml
new file mode 100755
index 0000000..ccf8c8d
--- /dev/null
+++ b/test/SVG/richdesc.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns="http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+ <desc xmlns:mydoc="http://foo.org/mydoc">
+ <mydoc:title>This is an example SVG file</mydoc:title>
+ <mydoc:para>The global description uses markup from the
+ <mydoc:emph>mydoc</mydoc:emph> namespace.</mydoc:para>
+ </desc>
+ <g>
+ <!-- the picture goes here -->
+ </g>
+</svg>
diff --git a/test/SVG/script.xml b/test/SVG/script.xml
new file mode 100755
index 0000000..600365e
--- /dev/null
+++ b/test/SVG/script.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <script><![CDATA[
+ /* Beep on mouseclick */
+ MouseClickHandler() { beep(); }
+ ]]>
+ </script>
+ </defs>
+ <circle onclick="MouseClickHandler()" r="85"/>
+</svg>
diff --git a/test/SVG/structure01.xml b/test/SVG/structure01.xml
new file mode 100755
index 0000000..dec9143
--- /dev/null
+++ b/test/SVG/structure01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="yes"?>
+<parent xmlns="http://someplace.org"
+ xmlns:svg="http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+ <!-- parent stuff here -->
+ <svg:svg width="5cm" height="8cm">
+ <svg:ellipse major="200" minor="130" />
+ </svg:svg>
+ <!-- ... -->
+</parent>
+
diff --git a/test/SVG/style.xml b/test/SVG/style.xml
new file mode 100755
index 0000000..ba15041
--- /dev/null
+++ b/test/SVG/style.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <style><![CDATA[
+ .TitleText { font-size: 16; font-family: Helvetica } ]]>
+ </style>
+ </defs>
+ <text class="TitleText">Here is my title</text>
+</svg>
diff --git a/test/SVG/switch.xml b/test/SVG/switch.xml
new file mode 100755
index 0000000..18955c9
--- /dev/null
+++ b/test/SVG/switch.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" standalone="yes"?>
+<smil>
+ <body>
+ <!-- The SMIL <switch> element will process the
+ first child element which tests true and skip
+ past all others. -->
+ <switch>
+
+ <!-- The system-required attribute tests to see if
+ the user agent supports SVG. If true, then
+ render the file drawing.svg. -->
+ <ref system-required="http://www.w3.org/Graphics/SVG/svg-19990412.dtd"
+ type="image/svg" src="drawing.svg" />
+
+ <!-- Else, render the alternate image. -->
+ <img src="alternate_image.jpg" />
+ </switch>
+ </body>
+</smil>
+
+
diff --git a/test/SVG/symbol-use.xml b/test/SVG/symbol-use.xml
new file mode 100755
index 0000000..83bc458
--- /dev/null
+++ b/test/SVG/symbol-use.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="TemplateObject01">
+ <!-- symbol definition here -->
+ </symbol>
+ </defs>
+
+ <desc>Examples of inline and referenced content
+ </desc>
+
+ <!-- <g> with inline content -->
+ <g>
+ <!-- Inline content goes here -->
+ </g>
+
+ <!-- referenced content -->
+ <use href="#TemplateObject01" />
+
+ <!-- <g> with both referenced and inline content -->
+ <g>
+ <use href="#TemplateObject01" />
+ <!-- Inline content goes here -->
+ </g>
+
+</svg>
diff --git a/test/SVG/template.xml b/test/SVG/template.xml
new file mode 100755
index 0000000..0a9fee7
--- /dev/null
+++ b/test/SVG/template.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <desc>This well formed svg document contains a hyperlink
+ </desc>
+ <a xml:link="simple" show="replace" actuate="user" href="http://www.w3.org">
+ <p d="M 0 0 L 200 0 L 100 200 Z"/>
+ </a>
+</svg>
diff --git a/test/SVG/text01.xml b/test/SVG/text01.xml
new file mode 100755
index 0000000..395bafb
--- /dev/null
+++ b/test/SVG/text01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <text id="TextToUse">XYZ</text>
+ </defs>
+ <text>ABC</text>
+ <text>
+ <src href="#TextToUse"/>
+ </text>
+</svg>
diff --git a/test/SVG/text02.xml b/test/SVG/text02.xml
new file mode 100755
index 0000000..7b95292
--- /dev/null
+++ b/test/SVG/text02.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <defs>
+ <textflow id="TF1">
+ <t href="#T1"/>
+ <t href="#T3"/>
+ </textflow>
+ <textflow id="TF2">
+ <t href="#T2"/>
+ <t href="#T4"/>
+ </textflow>
+ </defs>
+ <text x="100" y="100" id="T1"><tf href="#TF1">123</tf></text>
+ <text x="100" y="200" id="T2"><tf href="#TF2">ABC</tf></text>
+ <text x="150" y="100" id="T3"><tf href="#TF1">456</tf></text>
+ <text x="150" y="200" id="T4"><tf href="#TF2">DEF</tf></text></svg>
diff --git a/test/SVG/text03.xml b/test/SVG/text03.xml
new file mode 100755
index 0000000..fae9af1
--- /dev/null
+++ b/test/SVG/text03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <textflow id="TF1">
+ <text x="100" y="100">123</text>
+ <text>456</text>
+ </textflow>
+</svg>
diff --git a/test/SVG/toap01.xml b/test/SVG/toap01.xml
new file mode 100755
index 0000000..32e16e6
--- /dev/null
+++ b/test/SVG/toap01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Simple text on a path
+ </desc>
+ <path id="MyPath" style="visibility: hidden"
+ d="M 100 100 C 125 125 175 125 200 100" />
+ <text><textpath href="#MyPath"/>Text on path</text>
+</svg>
diff --git a/test/SVG/toap02.xml b/test/SVG/toap02.xml
new file mode 100755
index 0000000..6898093
--- /dev/null
+++ b/test/SVG/toap02.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <defs>
+ <symbol id="Triangle1"
+ min-x="0" min-y="0" max-x="300" max-y="200">
+ <path d="M 50 0 L 50 200 L 250 0 z"/>
+ </symbol>
+ <symbol id="Triangle2"
+ min-x="0" min-y="0" max-x="300" max-y="200">
+ <path d="M 50 0 L 250 200 L 250 0 z"/>
+ </symbol>
+ </defs>
+
+ <desc>General graphics on a path
+ </desc>
+
+ <text>
+ <textpath href="#MyPath"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ <use href="#Triangle1"/>
+ <use href="#Triangle2"/>
+ </text>
+
+</svg>
diff --git a/test/SVG/transform.xml b/test/SVG/transform.xml
new file mode 100755
index 0000000..13075ee
--- /dev/null
+++ b/test/SVG/transform.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Demonstration of coordinate transforms
+ </desc>
+ <!-- The following two text elements will both draw with a
+ font height of 12 pixels -->
+ <text style="font-size: 12">This prints 12 pixels high.</text>
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+
+ <!-- Now scale the coordinate system by 2. -->
+ <g style="transform: scale(2)">
+
+ <!-- The following text will actually draw 24 pixels high
+ because each unit in the new coordinate system equals
+ 2 units in the previous coordinate system. -->
+ <text style="font-size: 12">This prints 24 pixels high.</text>
+
+ <!-- The following text will actually still draw 12 pixels high
+ because the CSS unit specifier has been provided. -->
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+
+ </g>
+
+</svg>
diff --git a/test/SVG/trivial.xml b/test/SVG/trivial.xml
new file mode 100755
index 0000000..b6122be
--- /dev/null
+++ b/test/SVG/trivial.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <!-- Insert drawing elements here -->
+</svg>
+
diff --git a/test/SVG/twin-gradients.xml b/test/SVG/twin-gradients.xml
new file mode 100755
index 0000000..6213f1b
--- /dev/null
+++ b/test/SVG/twin-gradients.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>Gradients apply to leaf nodes
+ </desc>
+ <g>
+ <defs>
+ <lineargradient id="MyGradient">
+ <gradientstop offset="0%" color="#F60"/>
+ <gradientstop offset="70%" color="#FF6"/>
+ </lineargradient>
+ </defs>
+ <g style="fill: url(#MyGradient)">
+ <rect width="20" height="15.8"/>
+ <rect width="35" height="8"/>
+ </g>
+ </g>
+</svg>
diff --git a/test/SVG/v-template.xml b/test/SVG/v-template.xml
new file mode 100755
index 0000000..d8643d7
--- /dev/null
+++ b/test/SVG/v-template.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>
+ </desc>
+ <g>
+ </g>
+</svg>
diff --git a/test/SVG/viewport-nest.xml b/test/SVG/viewport-nest.xml
new file mode 100755
index 0000000..981a7ac
--- /dev/null
+++ b/test/SVG/viewport-nest.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="4in" height="3in">
+ <desc>This SVG drawing embeds another one,
+ thus establishing a new viewport
+ </desc>
+ <!-- The following statement establishing a new viewport
+ and renders SVG drawing B into that viewport -->
+ <svg style="left: 25%; top: 25%" width="50%" height="50%">
+ <!-- drawing B goes here -->
+ </svg>
+</svg>
diff --git a/test/SVG/viewport-transform.xml b/test/SVG/viewport-transform.xml
new file mode 100755
index 0000000..e2434bd
--- /dev/null
+++ b/test/SVG/viewport-transform.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width="300px" height="3oopx">
+ <desc>Transformation with establishment of a new viewport
+ </desc>
+ <!-- The following two text elements will both draw with a
+ font height of 12 pixels -->
+ <text style="font-size: 12">This prints 12 pixels high.</text>
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+
+ <!-- Now scale the coordinate system by 2. -->
+ <g style="transform: scale(2)">
+
+ <!-- The following text will actually draw 24 pixels high
+ because each unit in the new coordinate system equals
+ 2 units in the previous coordinate system. -->
+ <text style="font-size: 12">This prints 24 pixels high.</text>
+
+ <!-- The following text will actually still draw 12 pixels high
+ because the CSS unit specifier has been provided. -->
+ <text style="font-size: 12px">This prints 12 pixels high.</text>
+ </g>
+
+ <!-- This time, scale the coordinate system by 3. -->
+ <g style="transform: scale(3)">
+
+ <!-- Establish a new viewport and thus change the meaning of
+ some CSS unit specifiers. -->
+ <svg style="left:0; top:0; right:100; bottom:100"
+ width="100%" height="100%">
+
+ <!-- The following two text elements will both draw with a
+ font height of 36 screen pixels. The first text element
+ defines its height in user coordinates, which have been
+ scaled by 3. The second text element defines its height
+ in CSS px units, which have been redefined to be three times
+ as big as screen pixels due the <svg> element establishing
+ a new viewport. -->
+ <text style="font-size: 12">This prints 36 pixels high.</text>
+ <text style="font-size: 12px">This prints 36 pixels high.</text>
+
+ </svg>
+ </g>
+
+</svg>
diff --git a/test/SVG/viewport.xml b/test/SVG/viewport.xml
new file mode 100755
index 0000000..0923fae
--- /dev/null
+++ b/test/SVG/viewport.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="yes"?>
+<parent xmlns="http://some.url">
+
+ <!-- SVG graphic -->
+ <svg xmlns='http://www.w3.org/Graphics/SVG/svg-19990412.dtd'
+ width="100px" height="200px">
+ <path d="M100,100 Q200,400,300,100"/>
+ <!-- rest of SVG graphic would go here -->
+ </svg>
+
+</parent>
diff --git a/test/SVG/wf-template.xml b/test/SVG/wf-template.xml
new file mode 100755
index 0000000..f1cad85
--- /dev/null
+++ b/test/SVG/wf-template.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="yes"?>
+<svg width="4in" height="3in"
+ xmlns = 'http://www.w3.org/Graphics/SVG/svg-19990412.dtd'>
+ <desc>
+ </desc>
+
+</svg>
diff --git a/test/URI/smith.uri b/test/URI/smith.uri
new file mode 100644
index 0000000..6cc6c87
--- /dev/null
+++ b/test/URI/smith.uri
@@ -0,0 +1,15 @@
+/foo/../bar
+foo/../bar
+./foo/../bar
+foo/./../bar
+foo/bar/.././../baz
+foo/..
+foo/bar/..
+./foo
+././foo
+.././foo./
+.././foo/.
+/foo
+../foo
+../../foo
+../../../foo
diff --git a/test/URI/uri.data b/test/URI/uri.data
new file mode 100644
index 0000000..a96ea5f
--- /dev/null
+++ b/test/URI/uri.data
@@ -0,0 +1,18 @@
+
+.
+bar
+bar#baz
+bar?baz
+bar?baz#baz2
+#baz
+?baz
+?baz#baz2
+../up.a.notch.html#wow
+../up.a.notch.html?wow
+../up.a.notch.html?wow#wow2
+/root.cgi#OK
+/root.cgi?OK
+/root.cgi?OK#OK2
+http://elsewhere.com/#deep
+http://elsewhere.com/?deep
+http://elsewhere.com/?deep#deep2
diff --git a/test/VC/AttributeDefaultLegal b/test/VC/AttributeDefaultLegal
new file mode 100644
index 0000000..471eb20
--- /dev/null
+++ b/test/VC/AttributeDefaultLegal
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc At NMTOKEN "$$$">
+<!ATTLIST doc Ok NMTOKEN "1abc_2">
+<!ATTLIST doc bad IDREF "1abc_2">
+<!ATTLIST doc ok2 IDREF "abc_2">
+<!ATTLIST doc bad2 IDREFS "abc:1 1abc_2">
+<!ATTLIST doc ok3 IDREFS "abc:1 a1bc_2">
+]>
+<doc val="v1"/>
+
diff --git a/test/VC/AttributeNmtokens b/test/VC/AttributeNmtokens
new file mode 100644
index 0000000..8710de4
--- /dev/null
+++ b/test/VC/AttributeNmtokens
@@ -0,0 +1,6 @@
+<!DOCTYPE test [
+ <!ELEMENT test EMPTY>
+ <!ATTLIST test attr1 NMTOKENS #IMPLIED>
+]>
+<!-- Should be invalid due to http://www.w3.org/XML/xml-V10-2e-errata#E20 -->
+<test attr1=" a&#x9;b "/>
diff --git a/test/VC/DuplicateType b/test/VC/DuplicateType
new file mode 100644
index 0000000..4b28804
--- /dev/null
+++ b/test/VC/DuplicateType
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ELEMENT a (#PCDATA | b | c | d | c)*>
+]>
+<a> violates [ VC: No Duplicate Types ] </a>
diff --git a/test/VC/ElementValid b/test/VC/ElementValid
new file mode 100644
index 0000000..c297ce6
--- /dev/null
+++ b/test/VC/ElementValid
@@ -0,0 +1,3 @@
+<!DOCTYPE doc [
+]>
+<doc/>
diff --git a/test/VC/ElementValid2 b/test/VC/ElementValid2
new file mode 100644
index 0000000..672a0f5
--- /dev/null
+++ b/test/VC/ElementValid2
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (p)*>
+]>
+<doc><p/></doc>
diff --git a/test/VC/ElementValid3 b/test/VC/ElementValid3
new file mode 100644
index 0000000..67cbab4
--- /dev/null
+++ b/test/VC/ElementValid3
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc>Oops, this element was declared EMPTY</doc>
diff --git a/test/VC/ElementValid4 b/test/VC/ElementValid4
new file mode 100644
index 0000000..56df55a
--- /dev/null
+++ b/test/VC/ElementValid4
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | a | b)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+]>
+<doc> This <b>seems</b> Ok <a/> but this <c>was not declared</c></doc>
diff --git a/test/VC/ElementValid5 b/test/VC/ElementValid5
new file mode 100644
index 0000000..2cef3c4
--- /dev/null
+++ b/test/VC/ElementValid5
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a , b* , c+)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+]>
+<doc><a/><b> but this</b><c>was not declared</c><b>seems</b></doc>
diff --git a/test/VC/ElementValid6 b/test/VC/ElementValid6
new file mode 100644
index 0000000..fbf721d
--- /dev/null
+++ b/test/VC/ElementValid6
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a , b? , c+)?>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+]>
+<doc><a/><b>lacks c</b></doc>
diff --git a/test/VC/ElementValid7 b/test/VC/ElementValid7
new file mode 100644
index 0000000..a88115f
--- /dev/null
+++ b/test/VC/ElementValid7
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)* , c+, a, b?, c, a?)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+]>
+<doc><a/><b/><a/><c/><c/><a/></doc>
diff --git a/test/VC/ElementValid8 b/test/VC/ElementValid8
new file mode 100644
index 0000000..5fd2044
--- /dev/null
+++ b/test/VC/ElementValid8
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a, b)| (a, c))>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+]>
+<doc><a/><c> doc is non-deterministic </c></doc>
diff --git a/test/VC/Enumeration b/test/VC/Enumeration
new file mode 100644
index 0000000..6c63968
--- /dev/null
+++ b/test/VC/Enumeration
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc val (v1 | v2 | v3) #IMPLIED>
+]>
+<doc val="v4"></doc>
diff --git a/test/VC/NS1 b/test/VC/NS1
new file mode 100644
index 0000000..2f74463
--- /dev/null
+++ b/test/VC/NS1
@@ -0,0 +1,13 @@
+<!DOCTYPE ns:doc [
+<!ELEMENT ns:doc (#PCDATA | ns:a | ns:b)*>
+<!ATTLIST ns:doc
+ ns:attr CDATA #REQUIRED
+ xmlns:ns CDATA #IMPLIED>
+<!ELEMENT ns:a EMPTY>
+<!ELEMENT ns:b (#PCDATA)>
+]>
+<ns:doc ns:attr="val" xmlns:ns="http://www.example.org/test/">
+ <ns:a/>
+ <ns:b>first line</ns:b>
+ <ns:b>second line</ns:b>
+</ns:doc>
diff --git a/test/VC/NS2 b/test/VC/NS2
new file mode 100644
index 0000000..d748d1a
--- /dev/null
+++ b/test/VC/NS2
@@ -0,0 +1,13 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | ns:a | ns:b)*>
+<!ATTLIST doc
+ attr CDATA #REQUIRED
+ xmlns:ns CDATA #IMPLIED>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)>
+]>
+<ns:doc ns:attr="val" xmlns:ns="http://www.example.org/test/">
+ <ns:a/>
+ <ns:b>first line</ns:b>
+ <ns:b>second line</ns:b>
+</ns:doc>
diff --git a/test/VC/NS3 b/test/VC/NS3
new file mode 100644
index 0000000..f53b0ca
--- /dev/null
+++ b/test/VC/NS3
@@ -0,0 +1,9 @@
+<?xml version="1.0" ?>
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo
+ xmlns CDATA #FIXED "http://example.com/fooo"
+ xmlns:foo CDATA #REQUIRED
+ foo:info CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"/>
diff --git a/test/VC/OneID b/test/VC/OneID
new file mode 100644
index 0000000..e9cbc0c
--- /dev/null
+++ b/test/VC/OneID
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc val ID #IMPLIED>
+<!ATTLIST doc id ID #IMPLIED>
+]>
+<doc val="v1"></doc>
diff --git a/test/VC/OneID2 b/test/VC/OneID2
new file mode 100644
index 0000000..ffa9d1f
--- /dev/null
+++ b/test/VC/OneID2
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ATTLIST doc val ID #IMPLIED>
+<!ATTLIST doc id ID #IMPLIED>
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc val="v1"></doc>
diff --git a/test/VC/OneID3 b/test/VC/OneID3
new file mode 100644
index 0000000..9696736
--- /dev/null
+++ b/test/VC/OneID3
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "dtds/doc.dtd" [
+<!ATTLIST doc id ID #IMPLIED>
+]>
+<doc val="v1"></doc>
diff --git a/test/VC/PENesting b/test/VC/PENesting
new file mode 100644
index 0000000..17332ae
--- /dev/null
+++ b/test/VC/PENesting
@@ -0,0 +1,2 @@
+<!ENTITY % pe1 "EMPTY> <!ELEMENT e2 EMPTY>">
+<!ELEMENT e1 %pe1;
diff --git a/test/VC/PENesting2 b/test/VC/PENesting2
new file mode 100644
index 0000000..27b0cca
--- /dev/null
+++ b/test/VC/PENesting2
@@ -0,0 +1,3 @@
+<!ENTITY % p1 "(A|B">
+<!ENTITY % p2 "|C|D)">
+<!ELEMENT X %p1;%p2;>
diff --git a/test/VC/UniqueElementTypeDeclaration b/test/VC/UniqueElementTypeDeclaration
new file mode 100644
index 0000000..2246f17
--- /dev/null
+++ b/test/VC/UniqueElementTypeDeclaration
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE a SYSTEM "dtds/a.dtd" [
+<!ELEMENT a (#PCDATA | b | c)*>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+]>
+<a> violates [ VC: Unique Element Type Declaration ] </a>
diff --git a/test/VC/UniqueElementTypeDeclaration2 b/test/VC/UniqueElementTypeDeclaration2
new file mode 100644
index 0000000..0805f8d
--- /dev/null
+++ b/test/VC/UniqueElementTypeDeclaration2
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ELEMENT a (#PCDATA | b | c)*>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT a (#PCDATA | b | c)*>
+]>
+<a> violates [ VC: Unique Element Type Declaration ] </a>
diff --git a/test/VC/dtds/a.dtd b/test/VC/dtds/a.dtd
new file mode 100644
index 0000000..b8571a4
--- /dev/null
+++ b/test/VC/dtds/a.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT a (#PCDATA | b | c)*>
+<!ATTLIST doc id ID #IMPLIED>
diff --git a/test/VC/dtds/doc.dtd b/test/VC/dtds/doc.dtd
new file mode 100644
index 0000000..71f8b41
--- /dev/null
+++ b/test/VC/dtds/doc.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc val ID #IMPLIED>
diff --git a/test/VCM/21.xml b/test/VCM/21.xml
new file mode 100644
index 0000000..78c8713
--- /dev/null
+++ b/test/VCM/21.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a, (b | c)*, d*)? >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+]>
+<doc><a/><d/></doc>
diff --git a/test/VCM/AttributeNmtokens.xml b/test/VCM/AttributeNmtokens.xml
new file mode 100644
index 0000000..575f811
--- /dev/null
+++ b/test/VCM/AttributeNmtokens.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE doc [
+ <!ELEMENT doc (norm+)>
+ <!ELEMENT norm EMPTY>
+ <!ATTLIST norm attr NMTOKENS #IMPLIED>
+]>
+<doc>
+ <norm attr = ' foo bar
+'/>
+ <norm attr = 'foobar
+
+'/>
+ <norm attr = 'foo bar '/>
+ <norm attr = ' foo &#x20;bar'/>
+</doc>
diff --git a/test/VCM/v1.xml b/test/VCM/v1.xml
new file mode 100644
index 0000000..8a7f679
--- /dev/null
+++ b/test/VCM/v1.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/test/VCM/v10.xml b/test/VCM/v10.xml
new file mode 100644
index 0000000..f293a42
--- /dev/null
+++ b/test/VCM/v10.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)* >
+<!ELEMENT a EMPTY>
+]>
+<doc></doc>
diff --git a/test/VCM/v11.xml b/test/VCM/v11.xml
new file mode 100644
index 0000000..c133523
--- /dev/null
+++ b/test/VCM/v11.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)* >
+<!ELEMENT a EMPTY>
+]>
+<doc><a/></doc>
diff --git a/test/VCM/v12.xml b/test/VCM/v12.xml
new file mode 100644
index 0000000..3eed3d6
--- /dev/null
+++ b/test/VCM/v12.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)* >
+<!ELEMENT a EMPTY>
+]>
+<doc>
+<a/>
+<a/>
+<a/>
+</doc>
diff --git a/test/VCM/v13.xml b/test/VCM/v13.xml
new file mode 100644
index 0000000..75f4352
--- /dev/null
+++ b/test/VCM/v13.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)+ >
+<!ELEMENT a EMPTY>
+]>
+<doc>
+<a/>
+</doc>
diff --git a/test/VCM/v14.xml b/test/VCM/v14.xml
new file mode 100644
index 0000000..fa70f9f
--- /dev/null
+++ b/test/VCM/v14.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)+ >
+<!ELEMENT a EMPTY>
+]>
+<doc>
+<a/>
+<a/>
+<a/>
+</doc>
diff --git a/test/VCM/v15.xml b/test/VCM/v15.xml
new file mode 100644
index 0000000..878e3e3
--- /dev/null
+++ b/test/VCM/v15.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b | c)*) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc>
+<b/>
+</doc>
diff --git a/test/VCM/v16.xml b/test/VCM/v16.xml
new file mode 100644
index 0000000..e676347
--- /dev/null
+++ b/test/VCM/v16.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a | b)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+]>
+<doc>
+<b/>
+</doc>
diff --git a/test/VCM/v17.xml b/test/VCM/v17.xml
new file mode 100644
index 0000000..bc9c8c2
--- /dev/null
+++ b/test/VCM/v17.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a? | b?) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc></doc>
diff --git a/test/VCM/v18.xml b/test/VCM/v18.xml
new file mode 100644
index 0000000..fccc440
--- /dev/null
+++ b/test/VCM/v18.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a? | b?) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc><b/></doc>
diff --git a/test/VCM/v19.xml b/test/VCM/v19.xml
new file mode 100644
index 0000000..17aacff
--- /dev/null
+++ b/test/VCM/v19.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a? | b+) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc><b/></doc>
diff --git a/test/VCM/v2.xml b/test/VCM/v2.xml
new file mode 100644
index 0000000..35c63af
--- /dev/null
+++ b/test/VCM/v2.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>text</doc>
diff --git a/test/VCM/v20.xml b/test/VCM/v20.xml
new file mode 100644
index 0000000..a9b0529
--- /dev/null
+++ b/test/VCM/v20.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)*, c, b) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc>
+<c/>
+<b/>
+</doc>
diff --git a/test/VCM/v21.xml b/test/VCM/v21.xml
new file mode 100644
index 0000000..4c8d923
--- /dev/null
+++ b/test/VCM/v21.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)+, c) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+]>
+<doc><a/><b/><c/></doc>
diff --git a/test/VCM/v22.xml b/test/VCM/v22.xml
new file mode 100644
index 0000000..d0376f7
--- /dev/null
+++ b/test/VCM/v22.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a, b, c, b, c, d) >
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+<!ENTITY c "<c/>">
+<!ENTITY bc "<b/>&c;">
+]>
+<doc>
+<a/>
+&bc;
+&bc;
+<d/>
+</doc>
diff --git a/test/VCM/v23.xml b/test/VCM/v23.xml
new file mode 100644
index 0000000..6aedcfb
--- /dev/null
+++ b/test/VCM/v23.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a?, (b, c?)?, d)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+]>
+<doc>
+<d/>
+</doc>
diff --git a/test/VCM/v24.xml b/test/VCM/v24.xml
new file mode 100644
index 0000000..25367c4
--- /dev/null
+++ b/test/VCM/v24.xml
@@ -0,0 +1,16 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a?, (b, c?, d?)?, (e | f | g)*, (h+ | i | j+))>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+<!ELEMENT e EMPTY>
+<!ELEMENT f EMPTY>
+<!ELEMENT g EMPTY>
+<!ELEMENT h EMPTY>
+<!ELEMENT i EMPTY>
+<!ELEMENT j EMPTY>
+]>
+<doc>
+<i/>
+</doc>
diff --git a/test/VCM/v3.xml b/test/VCM/v3.xml
new file mode 100644
index 0000000..f255589
--- /dev/null
+++ b/test/VCM/v3.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>
+<?pi value?>
+text
+<!-- and comments -->
+</doc>
diff --git a/test/VCM/v4.xml b/test/VCM/v4.xml
new file mode 100644
index 0000000..e96afe2
--- /dev/null
+++ b/test/VCM/v4.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)>
+<!ELEMENT a EMPTY>
+]>
+<doc><a/></doc>
diff --git a/test/VCM/v5.xml b/test/VCM/v5.xml
new file mode 100644
index 0000000..a7ff5ba
--- /dev/null
+++ b/test/VCM/v5.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)>
+<!ELEMENT a EMPTY>
+]>
+<doc>
+<a/>
+</doc>
diff --git a/test/VCM/v6.xml b/test/VCM/v6.xml
new file mode 100644
index 0000000..93fa4b8
--- /dev/null
+++ b/test/VCM/v6.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a, b)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+]>
+<doc>
+<a/>
+<b/>
+</doc>
diff --git a/test/VCM/v7.xml b/test/VCM/v7.xml
new file mode 100644
index 0000000..240c480
--- /dev/null
+++ b/test/VCM/v7.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a | b)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+]>
+<doc>
+<a/>
+</doc>
diff --git a/test/VCM/v8.xml b/test/VCM/v8.xml
new file mode 100644
index 0000000..421a1df
--- /dev/null
+++ b/test/VCM/v8.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)? >
+<!ELEMENT a EMPTY>
+]>
+<doc></doc>
diff --git a/test/VCM/v9.xml b/test/VCM/v9.xml
new file mode 100644
index 0000000..1c639ec
--- /dev/null
+++ b/test/VCM/v9.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)? >
+<!ELEMENT a EMPTY>
+]>
+<doc><a/></doc>
diff --git a/test/WFC/ElemTypeMatch b/test/WFC/ElemTypeMatch
new file mode 100644
index 0000000..11a2df3
--- /dev/null
+++ b/test/WFC/ElemTypeMatch
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a> violates [ WFC: Element Type Match ] </b>
diff --git a/test/WFC/EntityDeclared b/test/WFC/EntityDeclared
new file mode 100644
index 0000000..e3427a1
--- /dev/null
+++ b/test/WFC/EntityDeclared
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a> &unknown; violates [ WFC: Entity Declared ] </a>
diff --git a/test/WFC/EntityDeclared2 b/test/WFC/EntityDeclared2
new file mode 100644
index 0000000..e6d16dd
--- /dev/null
+++ b/test/WFC/EntityDeclared2
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ENTITY e "an entity">
+]>
+<a> &unknown; violates [ WFC: Entity Declared ] </a>
diff --git a/test/WFC/EntityDeclared3 b/test/WFC/EntityDeclared3
new file mode 100644
index 0000000..1670980
--- /dev/null
+++ b/test/WFC/EntityDeclared3
@@ -0,0 +1,3 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE a SYSTEM "a.dtd">
+<a> &unknown; violates [ WFC: Entity Declared ] </a>
diff --git a/test/WFC/EntityDeclared4 b/test/WFC/EntityDeclared4
new file mode 100644
index 0000000..15354ac
--- /dev/null
+++ b/test/WFC/EntityDeclared4
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+%unknown;
+<!ENTITY % unknown "<!ELEMENT a (#PCDATA)>">
+]>
+<a> violates [ WFC: Entity Declared ] </a>
diff --git a/test/WFC/EntityDeclared5 b/test/WFC/EntityDeclared5
new file mode 100644
index 0000000..f125373
--- /dev/null
+++ b/test/WFC/EntityDeclared5
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE a SYSTEM "a.dtd" [
+%unknown;
+<!ENTITY % unknown "<!ELEMENT a (#PCDATA)>">
+]>
+<a> violates [ WFC: Entity Declared ] </a>
diff --git a/test/WFC/LegalCharacter b/test/WFC/LegalCharacter
new file mode 100644
index 0000000..67ff388
--- /dev/null
+++ b/test/WFC/LegalCharacter
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a> &#5; violates [ WFC: Legal Character ] </a>
diff --git a/test/WFC/NoExternalEntityRef b/test/WFC/NoExternalEntityRef
new file mode 100644
index 0000000..43cd192
--- /dev/null
+++ b/test/WFC/NoExternalEntityRef
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ENTITY ext SYSTEM "ext.ent">
+]>
+<a att="wrong &ext; ref"> violates [ WFC: No External Entity References ] </a>
diff --git a/test/WFC/NoLtInAttValue b/test/WFC/NoLtInAttValue
new file mode 100644
index 0000000..cc459e9
--- /dev/null
+++ b/test/WFC/NoLtInAttValue
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ENTITY ext "no < workie">
+]>
+<a att="wrong &ext; ref"> violates [ WFC: No < in Attribute Values ] </a>
diff --git a/test/WFC/NoRecursion b/test/WFC/NoRecursion
new file mode 100644
index 0000000..970b897
--- /dev/null
+++ b/test/WFC/NoRecursion
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ENTITY a "&b;">
+<!ENTITY b "&c;">
+<!ENTITY c "&a;">
+]>
+<doc> &a; violates [ WFC: No Recursion ] </doc>
diff --git a/test/WFC/PEintsubset b/test/WFC/PEintsubset
new file mode 100644
index 0000000..e1ea331
--- /dev/null
+++ b/test/WFC/PEintsubset
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ENTITY % pcdata "(#PCDATA)">
+<!ELEMENT e %pcdata>
+]>
+<a> violates [ WFC: PEs in Internal Subset ] </a>
diff --git a/test/WFC/UniqueAttSpec b/test/WFC/UniqueAttSpec
new file mode 100644
index 0000000..5074ff2
--- /dev/null
+++ b/test/WFC/UniqueAttSpec
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a att="Ok" att2="Ok" att="Bad"> violates [ WFC: Unique Att Spec ] </a>
diff --git a/test/WFC/UniqueAttSpec2 b/test/WFC/UniqueAttSpec2
new file mode 100644
index 0000000..e4511f1
--- /dev/null
+++ b/test/WFC/UniqueAttSpec2
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a> <b att="Ok" att2="Ok" att="Bad"/> violates [ WFC: Unique Att Spec ] </a>
diff --git a/test/XInclude/docs/docids.xml b/test/XInclude/docs/docids.xml
new file mode 100644
index 0000000..7791620
--- /dev/null
+++ b/test/XInclude/docs/docids.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE book [
+<!ELEMENT book (doc*)>
+<!ELEMENT doc (isid*)>
+<!ELEMENT isid EMPTY>
+<!ATTLIST isid myid ID #IMPLIED>
+]>
+<book>
+<doc>
+<isid myid="mine"/>
+<isid myid="dup"/>
+</doc>
+<!-- including another XML document with IDs -->
+<xinclude:include xmlns:xinclude="http://www.w3.org/2001/XInclude"
+ href="../ents/ids.xml"/>
+</book>
diff --git a/test/XInclude/docs/fallback.xml b/test/XInclude/docs/fallback.xml
new file mode 100644
index 0000000..e80222e
--- /dev/null
+++ b/test/XInclude/docs/fallback.xml
@@ -0,0 +1,6 @@
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of a fallback on unavailble URI -->
+ <xinclude:include href="something.xml">
+ <xinclude:fallback><warning>Inclusion failed</warning></xinclude:fallback>
+ </xinclude:include>
+</x>
diff --git a/test/XInclude/docs/fallback2.xml b/test/XInclude/docs/fallback2.xml
new file mode 100644
index 0000000..dac71f9
--- /dev/null
+++ b/test/XInclude/docs/fallback2.xml
@@ -0,0 +1,10 @@
+<a>
+ <xi:include href="b.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback>There is no b.xml ... </xi:fallback>
+ </xi:include>
+ <xi:include href="c.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <xi:fallback>There is no c.xml ... </xi:fallback>
+ </xi:include>
+
+</a>
+
diff --git a/test/XInclude/docs/include.xml b/test/XInclude/docs/include.xml
new file mode 100644
index 0000000..806ac23
--- /dev/null
+++ b/test/XInclude/docs/include.xml
@@ -0,0 +1,4 @@
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including another XML document -->
+ <xinclude:include href="../ents/something.xml"/>
+</x>
diff --git a/test/XInclude/docs/nodes.xml b/test/XInclude/docs/nodes.xml
new file mode 100644
index 0000000..d0ccab9
--- /dev/null
+++ b/test/XInclude/docs/nodes.xml
@@ -0,0 +1,4 @@
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including a set of nodes from an XML document -->
+ <xinclude:include href="../ents/something.xml#xpointer(//p)"/>
+</x>
diff --git a/test/XInclude/docs/nodes2.xml b/test/XInclude/docs/nodes2.xml
new file mode 100644
index 0000000..32f8cfe
--- /dev/null
+++ b/test/XInclude/docs/nodes2.xml
@@ -0,0 +1,4 @@
+<x xmlns:xinclude="http://www.w3.org/2003/XInclude">
+ <!-- Simple test of including a set of nodes from an XML document -->
+ <xinclude:include href="../ents/something.xml" xpointer="xpointer(//p)"/>
+</x>
diff --git a/test/XInclude/docs/nodes3.xml b/test/XInclude/docs/nodes3.xml
new file mode 100644
index 0000000..355c548
--- /dev/null
+++ b/test/XInclude/docs/nodes3.xml
@@ -0,0 +1,4 @@
+<x xmlns:xinclude="http://www.w3.org/2003/XInclude">
+ <!-- Simple test of including a set of nodes from an XML document -->
+ <xinclude:include href="../ents/something.xml#xpointer(//p)"/>
+</x>
diff --git a/test/XInclude/docs/recursive.xml b/test/XInclude/docs/recursive.xml
new file mode 100644
index 0000000..a9285ac
--- /dev/null
+++ b/test/XInclude/docs/recursive.xml
@@ -0,0 +1,3 @@
+<this><xinc:include href="../ents/sub-inc.ent" parse="xml"
+ xmlns:xinc="http://www.w3.org/2001/XInclude"/></this>
+
diff --git a/test/XInclude/docs/tstencoding.xml b/test/XInclude/docs/tstencoding.xml
new file mode 100644
index 0000000..b1309a9
--- /dev/null
+++ b/test/XInclude/docs/tstencoding.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including another text document -->
+ <xinclude:include href="../ents/isolatin.txt" encoding="ISO-8859-1" parse="text"/>
+</x>
diff --git a/test/XInclude/docs/txtinclude.xml b/test/XInclude/docs/txtinclude.xml
new file mode 100644
index 0000000..f1af6a2
--- /dev/null
+++ b/test/XInclude/docs/txtinclude.xml
@@ -0,0 +1,4 @@
+<x xmlns:xinclude="http://www.w3.org/2001/XInclude">
+ <!-- Simple test of including another text document -->
+ <xinclude:include href="../ents/something.txt" parse="text"/>
+</x>
diff --git a/test/XInclude/ents/ids.xml b/test/XInclude/ents/ids.xml
new file mode 100644
index 0000000..8193231
--- /dev/null
+++ b/test/XInclude/ents/ids.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (isid*)>
+<!ELEMENT isid EMPTY>
+<!ATTLIST isid myid ID #IMPLIED>
+]>
+<doc>
+<isid myid="dup"/>
+<isid myid="foo"/>
+<isid myid="bar"/>
+</doc>
diff --git a/test/XInclude/ents/inc.txt b/test/XInclude/ents/inc.txt
new file mode 100644
index 0000000..d5cdd7c
--- /dev/null
+++ b/test/XInclude/ents/inc.txt
@@ -0,0 +1 @@
+is a test
diff --git a/test/XInclude/ents/isolatin.txt b/test/XInclude/ents/isolatin.txt
new file mode 100644
index 0000000..d1dbf70
--- /dev/null
+++ b/test/XInclude/ents/isolatin.txt
@@ -0,0 +1 @@
+test with accents in ISO-8859-1: À Á é è
diff --git a/test/XInclude/ents/something.txt b/test/XInclude/ents/something.txt
new file mode 100644
index 0000000..48c21b7
--- /dev/null
+++ b/test/XInclude/ents/something.txt
@@ -0,0 +1 @@
+this is some text in ASCII
diff --git a/test/XInclude/ents/something.xml b/test/XInclude/ents/something.xml
new file mode 100644
index 0000000..9bba683
--- /dev/null
+++ b/test/XInclude/ents/something.xml
@@ -0,0 +1,5 @@
+<doc>
+<p>something</p>
+<p>really</p>
+<p>simple</p>
+</doc>
diff --git a/test/XInclude/ents/sub-inc.ent b/test/XInclude/ents/sub-inc.ent
new file mode 100644
index 0000000..7726c9d
--- /dev/null
+++ b/test/XInclude/ents/sub-inc.ent
@@ -0,0 +1,2 @@
+<sub-inc><xinc:include href="inc.txt" parse="text"
+ xmlns:xinc="http://www.w3.org/2001/XInclude"/></sub-inc>
diff --git a/test/XPath/docs/chapters b/test/XPath/docs/chapters
new file mode 100644
index 0000000..c48f65e
--- /dev/null
+++ b/test/XPath/docs/chapters
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<EXAMPLE prop1="gnome is great" prop2="&amp; linux too">
+ <head>
+ <title>Welcome to Gnome</title>
+ </head>
+ <chapter id="chapter1">
+ <title>The Linux adventure</title>
+ <p>bla bla bla ...</p>
+ <image href="linus.gif"/>
+ <p>...</p>
+ </chapter>
+ <chapter id="chapter2">
+ <title>Chapter 2</title>
+ <p>this is chapter 2 ...</p>
+ </chapter>
+ <chapter id="chapter3">
+ <title>Chapter 3</title>
+ <p>this is chapter 3 ...</p>
+ </chapter>
+ <chapter id="chapter4">
+ <title>Chapter 4</title>
+ <p>this is chapter 4 ...</p>
+ </chapter>
+ <chapter id="chapter5">
+ <title>Chapter 5</title>
+ <p>this is chapter 5 ...</p>
+ </chapter>
+</EXAMPLE>
diff --git a/test/XPath/docs/id b/test/XPath/docs/id
new file mode 100644
index 0000000..4b6659f
--- /dev/null
+++ b/test/XPath/docs/id
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<EXAMPLE id="root" prop1="gnome is great" prop2="&amp; linux too">
+ <head id="head">
+ <title>Welcome to Gnome</title>
+ </head>
+ <chapter id="chapter1">
+ <title>The Linux adventure</title>
+ <p>bla bla bla ...</p>
+ <image href="linus.gif"/>
+ <p>...</p>
+ </chapter>
+ <chapter id="chapter2">
+ <title>Chapter 2</title>
+ <p>this is chapter 2 ...</p>
+ </chapter>
+ <chapter id="chapter3">
+ <title>Chapter 3</title>
+ <p>this is chapter 3 ...</p>
+ </chapter>
+ <chapter id="chapter4">
+ <title>Chapter 4</title>
+ <p>this is chapter 4 ...</p>
+ </chapter>
+ <chapter id="chapter5">
+ <title>Chapter 5</title>
+ <p>this is chapter 5 ...</p>
+ </chapter>
+</EXAMPLE>
diff --git a/test/XPath/docs/lang b/test/XPath/docs/lang
new file mode 100644
index 0000000..abfe1d6
--- /dev/null
+++ b/test/XPath/docs/lang
@@ -0,0 +1,13 @@
+<doc>
+ <x>1</x>
+ <b xml:lang="en">
+ <x>en</x>
+ <x>3</x>
+ </b>
+ <x>4</x>
+ <para xml:lang="en"/>
+ <div xml:lang="en"><para/></div>
+ <para xml:lang="EN"/>
+ <para xml:lang="en-us"/>
+ <para xml:lang="EN-US"/>
+</doc>
diff --git a/test/XPath/docs/mixed b/test/XPath/docs/mixed
new file mode 100644
index 0000000..3b457bc
--- /dev/null
+++ b/test/XPath/docs/mixed
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<root>
+ <s p="root"/>
+ <p1>
+ <s p="p1"/>
+ </p1>
+ <p2>
+ <s p="p2"/>
+ </p2>
+</root>
diff --git a/test/XPath/docs/nodes b/test/XPath/docs/nodes
new file mode 100644
index 0000000..a863df0
--- /dev/null
+++ b/test/XPath/docs/nodes
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<root><foo>txt<!--hello--><![CDATA[data]]><?target data?><bar>txt<!--hello--><![CDATA[data]]><?target data?></bar></foo></root> \ No newline at end of file
diff --git a/test/XPath/docs/simple b/test/XPath/docs/simple
new file mode 100644
index 0000000..ca665a2
--- /dev/null
+++ b/test/XPath/docs/simple
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<EXAMPLE prop1="gnome is great" prop2="&amp; linux too">
+ <head>
+ <title>Welcome to Gnome</title>
+ </head>
+ <chapter>
+ <title>The Linux adventure</title>
+ <p>bla bla bla ...</p>
+ <image href="linus.gif"/>
+ <p>...</p>
+ </chapter>
+</EXAMPLE>
diff --git a/test/XPath/docs/str b/test/XPath/docs/str
new file mode 100644
index 0000000..547e54d
--- /dev/null
+++ b/test/XPath/docs/str
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<chapter>
+ <p>a simple test</p>
+ <p>multiple tests</p>
+ <p>a diff<em>i</em>cult one</p>
+ <p><p>a span</p>n<p>ing one</p></p>
+ <p><p>and an unbal</p><empty/>anced test</p>
+ <p>for empty string <seq>123</seq></p>
+</chapter>
diff --git a/test/XPath/docs/usr1 b/test/XPath/docs/usr1
new file mode 100644
index 0000000..44c7529
--- /dev/null
+++ b/test/XPath/docs/usr1
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<BODY>
+<DECLARACION importador="123456789" fecha="08/09/2000"
+monto_factura="100.09">
+<ITEM monto="50.12" divisa="DOL">
+<SUFIJO codigo="NL34" valor="negro"/>
+<SUFIJO codigo="AS34" valor="grande"/>
+</ITEM>
+</DECLARACION>
+<FIRMA>N</FIRMA>
+</BODY>
+
diff --git a/test/XPath/docs/vid b/test/XPath/docs/vid
new file mode 100644
index 0000000..cdb7437
--- /dev/null
+++ b/test/XPath/docs/vid
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!DOCTYPE iddemo [
+<!ELEMENT iddemo (head?, (chapter)*)>
+<!ATTLIST iddemo id ID #IMPLIED>
+<!ELEMENT head (title?, (p)*)>
+<!ATTLIST head id ID #IMPLIED>
+<!ELEMENT chapter (title?, (p | image)*)>
+<!ATTLIST chapter id ID #IMPLIED>
+<!ELEMENT image EMPTY>
+<!ATTLIST image href CDATA #IMPLIED>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT p (#PCDATA)>
+]>
+
+<iddemo>
+ <head>
+ <title>Welcome to Gnome</title>
+ </head>
+ <chapter id="chapter1">
+ <title>The Linux adventure</title>
+ <p>bla bla bla ...</p>
+ <image href="linus.gif"/>
+ <p>...</p>
+ <p>third p</p>
+ <p>fourth p</p>
+ </chapter>
+ <chapter id="chapter2">
+ <title>Chapter 2</title>
+ <p>this is chapter 2 ...</p>
+ </chapter>
+ <chapter id="chapter3">
+ <title>Chapter 3</title>
+ <p>this is chapter 3 ...</p>
+ </chapter>
+ <chapter id="chapter4">
+ <title>Chapter 4</title>
+ <p>this is chapter 4 ...</p>
+ </chapter>
+ <chapter id="chapter5">
+ <title>Chapter 5</title>
+ <p>this is chapter 5 ...</p>
+ </chapter>
+</iddemo>
diff --git a/test/XPath/expr/base b/test/XPath/expr/base
new file mode 100644
index 0000000..9aaed4f
--- /dev/null
+++ b/test/XPath/expr/base
@@ -0,0 +1,5 @@
+1
+1+2
+2*3
+1+2*3+4
+(1+2)*(3+4)
diff --git a/test/XPath/expr/compare b/test/XPath/expr/compare
new file mode 100644
index 0000000..2d52eaf
--- /dev/null
+++ b/test/XPath/expr/compare
@@ -0,0 +1,46 @@
+0<0
+0<=0
+0>0
+0>=0
+0<1
+0<=1
+0>1
+0>=1
+1<0
+1<=0
+1>0
+1>=0
+1<1
+1<=1
+1>1
+1>=1
+'0'<1
+'0'<=1
+'0'>1
+'0'>=1
+0<'1.2'
+0<='1.2'
+0>'1.2'
+0>='1.2'
+0<'-0.2'
+0<='-0.2'
+0>'-0.2'
+0>='-0.2'
+false()<1
+false()<=1
+0>true()
+0>=true()
+'a' > 'a'
+'a' > 'b'
+'b' > 'a'
+'a' < 'a'
+'a' < 'b'
+'b' < 'a'
+'a' >= 'a'
+'a' >= 'b'
+'b' >= 'a'
+'a' <= 'a'
+'a' <= 'b'
+'b' <= 'a'
+'a' > '0.0'
+'a' < '0.0'
diff --git a/test/XPath/expr/equality b/test/XPath/expr/equality
new file mode 100644
index 0000000..7982173
--- /dev/null
+++ b/test/XPath/expr/equality
@@ -0,0 +1,26 @@
+1=1
+1!=1
+1=0
+1!=0
+true()=true()
+true()!=true()
+true()=false()
+false()!=true()
+'test'='test'
+'test'!='test'
+'test2'='test'
+'test2'!='test'
+false()=0
+false()!=0
+false()=1
+false()!=1
+0=true()
+0!=true()
+1=true()
+1!=true()
+true()='test'
+false()='test'
+'test'!=true()
+'test'!=false()
+'a'=0.0
+'a'!=0.0
diff --git a/test/XPath/expr/floats b/test/XPath/expr/floats
new file mode 100644
index 0000000..96c10d1
--- /dev/null
+++ b/test/XPath/expr/floats
@@ -0,0 +1,61 @@
+1
+123
+1.23
+0.123
+4.
+.4
+1.23e3
+1.23e-3
+1 div 0
+-1 div 0
+0 div 0
+1 div -0
+(1 div 0) > 0
+(1 div 0) < 0
+(-1 div 0) > 0
+(-1 div 0) < 0
+(0 div 0) > 0
+(0 div 0) < 0
+(1 div -0) > 0
+(1 div -0) < 0
+0 div 0 = 0 div 0
+0 div 0 != 0 div 0
+0 div 0 > 0 div 0
+0 div 0 < 0 div 0
+0 div 0 >= 0 div 0
+0 div 0 <= 0 div 0
+1 div 0 = -1 div 0
+1 div 0 != -1 div 0
+1 div 0 > -1 div 0
+1 div 0 < -1 div 0
+1 div 0 >= -1 div 0
+1 div 0 <= -1 div 0
+1 div 0 = 1 div 0
+1 div 0 != 1 div 0
+1 div 0 > 1 div 0
+1 div 0 < 1 div 0
+1 div 0 >= -1 div 0
+1 div 0 <= -1 div 0
+-2 div 0 = -1 div 0
+1 div floor(0.1)
+1 div floor(-0.1)
+1 div floor(-0)
+1 div floor(0)
+1 div ceiling(0.1)
+1 div ceiling(-0.1)
+1 div ceiling(-0)
+1 div ceiling(0)
+1 div round(0.1)
+1 div round(-0.1)
+1 div round(-0)
+1 div round(0)
+1 div number('f')
+number('f') div 1
+1 div (1 div 0)
+(1 div 0) div 1
+-(1 div 0) div 1
+5 mod 2
+5 mod -2
+-5 mod 2
+-5 mod -2
+8 mod 3 = 2
diff --git a/test/XPath/expr/functions b/test/XPath/expr/functions
new file mode 100644
index 0000000..d168b18
--- /dev/null
+++ b/test/XPath/expr/functions
@@ -0,0 +1,25 @@
+true()
+false()
+number("1.5")
+number('abc')
+-number('abc')
+floor(0.1)
+floor(-0.1)
+floor(-0)
+floor(0)
+floor(5.2)
+floor(-5.2)
+ceiling(0.1)
+ceiling(-0.1)
+ceiling(-0)
+ceiling(0)
+ceiling(5.2)
+ceiling(-5.2)
+round(0.1)
+round(5.2)
+round(5.5)
+round(5.6)
+round(-0.1)
+round(-5.2)
+round(-5.5)
+round(-5.6)
diff --git a/test/XPath/expr/strings b/test/XPath/expr/strings
new file mode 100644
index 0000000..849ca14
--- /dev/null
+++ b/test/XPath/expr/strings
@@ -0,0 +1,34 @@
+string(5)
+string(0.5)
+string(-0.5)
+string(true())
+string(false())
+concat("titi","toto")
+concat("titi","toto","tata")
+concat("titi",'toto')
+concat("titi",'toto',"tata","last")
+starts-with("tititoto","titi")
+starts-with("tititoto","to")
+contains("tititototata","titi")
+contains("tititototata","toto")
+contains("tititototata","tata")
+contains("tititototata","tita")
+substring("12345",2,3)
+substring("12345",2)
+substring("12345",-4)
+substring("12345",3.4)
+substring("12345",3.6)
+substring("12345",1.5,2.6)
+substring("12345",2.2,2.2)
+substring("12345",0,3)
+substring("12345",-8,10)
+substring("12345",4,-10)
+substring("12345",0 div 0, 3)
+substring("12345",1, 0 div 0)
+substring("12345",1 div 0, 3)
+substring("12345",3,-1 div 0)
+substring("12345",-42, 1 div 0)
+substring("12345",-1 div 0, 1 div 0)
+substring("12345",-1 div 0,5)
+string-length("")
+string-length("titi")
diff --git a/test/XPath/tests/chaptersbase b/test/XPath/tests/chaptersbase
new file mode 100644
index 0000000..daa53b7
--- /dev/null
+++ b/test/XPath/tests/chaptersbase
@@ -0,0 +1,9 @@
+/child::EXAMPLE
+/child::*
+/child::EXAMPLE/child::head
+/child::EXAMPLE/child::*
+/child::EXAMPLE/child::head/child::title
+/child::EXAMPLE/child::head/child::title/child::text()
+/child::EXAMPLE/child::head/node()
+/descendant::title
+/descendant::p/ancestor::chapter
diff --git a/test/XPath/tests/chaptersprefol b/test/XPath/tests/chaptersprefol
new file mode 100644
index 0000000..8f1e65b
--- /dev/null
+++ b/test/XPath/tests/chaptersprefol
@@ -0,0 +1,8 @@
+/following::*
+/preceding::*
+/child::EXAMPLE/preceding::*
+/child::EXAMPLE/following::*
+/child::EXAMPLE/child::chapter[3]/preceding::*
+/child::EXAMPLE/child::chapter[3]/following::*
+/child::EXAMPLE/child::chapter[1]/image/preceding::*
+/child::EXAMPLE/child::chapter[1]/image/following::*
diff --git a/test/XPath/tests/idsimple b/test/XPath/tests/idsimple
new file mode 100644
index 0000000..2841ae9
--- /dev/null
+++ b/test/XPath/tests/idsimple
@@ -0,0 +1,3 @@
+//*[@id="root"]
+//*[@id="chapter2"]
+//*[@id="chapter5"]
diff --git a/test/XPath/tests/langsimple b/test/XPath/tests/langsimple
new file mode 100644
index 0000000..f71a321
--- /dev/null
+++ b/test/XPath/tests/langsimple
@@ -0,0 +1,5 @@
+//*[lang('en')]
+//*[lang('en-us')]
+//*[lang('en-gb')]
+//*[lang('fr')]
+//*[lang('')]
diff --git a/test/XPath/tests/mixedpat b/test/XPath/tests/mixedpat
new file mode 100644
index 0000000..c212f6c
--- /dev/null
+++ b/test/XPath/tests/mixedpat
@@ -0,0 +1,7 @@
+s
+s|p1/s
+s|/root/p1/s
+/root/p1/s|s
+//s
+//s|p1
+p1|//s
diff --git a/test/XPath/tests/nodespat b/test/XPath/tests/nodespat
new file mode 100644
index 0000000..c157a3e
--- /dev/null
+++ b/test/XPath/tests/nodespat
@@ -0,0 +1,5 @@
+/.
+//.
+/root//.
+//.//./././/.
+/root//././/bar//. \ No newline at end of file
diff --git a/test/XPath/tests/simpleabbr b/test/XPath/tests/simpleabbr
new file mode 100644
index 0000000..8de476f
--- /dev/null
+++ b/test/XPath/tests/simpleabbr
@@ -0,0 +1,10 @@
+/EXAMPLE
+/EXAMPLE/head
+/EXAMPLE/chapter[1]
+//p
+//chapter/image
+//p/text()
+//p/text()[position()=1]
+//p/text()[position()=last()]
+(//p/text())[position()=1]
+(//p/text())[position()=last()]
diff --git a/test/XPath/tests/simplebase b/test/XPath/tests/simplebase
new file mode 100644
index 0000000..7e4203a
--- /dev/null
+++ b/test/XPath/tests/simplebase
@@ -0,0 +1,9 @@
+/child::*
+/child::EXAMPLE
+/child::EXAMPLE/child::head
+/child::EXAMPLE/child::*
+/child::EXAMPLE/child::head/child::title
+/child::EXAMPLE/child::head/child::title/child::text()
+/child::EXAMPLE/child::head/node()
+/descendant::title
+/descendant::p/ancestor::chapter
diff --git a/test/XPath/tests/usr1check b/test/XPath/tests/usr1check
new file mode 100644
index 0000000..c38d003
--- /dev/null
+++ b/test/XPath/tests/usr1check
@@ -0,0 +1 @@
+//ITEM[1]
diff --git a/test/XPath/tests/vidbase b/test/XPath/tests/vidbase
new file mode 100644
index 0000000..5cd79ac
--- /dev/null
+++ b/test/XPath/tests/vidbase
@@ -0,0 +1,5 @@
+id('chapter1')
+id('chapter3')
+id('chapter1')/p
+id('chapter1')//p
+id('chapter1')/p[1]
diff --git a/test/XPath/xptr/chapterschildseq b/test/XPath/xptr/chapterschildseq
new file mode 100644
index 0000000..3b52f5f
--- /dev/null
+++ b/test/XPath/xptr/chapterschildseq
@@ -0,0 +1,8 @@
+/1/2/3
+element(/1/2/3)
+element(foo)element(/1/2/3)
+element(/1/2/3)element(foo)
+chapter1/3
+element(chapter1/3)
+element(foo)element(chapter1/3)
+element(chapter1/3)element(foo)
diff --git a/test/XPath/xptr/chaptersparts b/test/XPath/xptr/chaptersparts
new file mode 100644
index 0000000..aadc47c
--- /dev/null
+++ b/test/XPath/xptr/chaptersparts
@@ -0,0 +1,6 @@
+xpointer(//chapitre[2])
+xpointer(//chapter[2])
+xpointer(//chapitre[2])xpointer(//chapter[2])
+xpointer(id("chapter1"))
+xpointer(//*[@id="chapter1"])
+xpointer(id("chapter1"))xpointer(//*[@id="chapter1"])
diff --git a/test/XPath/xptr/chaptersrange b/test/XPath/xptr/chaptersrange
new file mode 100644
index 0000000..4d7a55b
--- /dev/null
+++ b/test/XPath/xptr/chaptersrange
@@ -0,0 +1,4 @@
+xpointer(//chapter[position() = 2]/range-to(following::chapter[1]))
+xpointer(//chapter[position() <= 2]/range-to(following::chapter[1]))
+xpointer(//chapter[position() = last()]/range-to(following::chapter[1]))
+xpointer(//chapter[position() = 3]/range-to(/.//chapter[position() = 1]))
diff --git a/test/XPath/xptr/strpoint b/test/XPath/xptr/strpoint
new file mode 100644
index 0000000..0916ef1
--- /dev/null
+++ b/test/XPath/xptr/strpoint
@@ -0,0 +1,9 @@
+xpointer(start-point(string-range(//p,'multiple')))
+xpointer(end-point(string-range(//p,'multiple')))
+xpointer(start-point(string-range(//p,'test')))
+xpointer(end-point(string-range(//p,'test')))
+xpointer(start-point(string-range(//*,'multiple',1,0)))
+xpointer(end-point(string-range(//*,'multiple',1,0)))
+xpointer(start-point(string-range(//*,'multiple',1,1)))
+xpointer(end-point(string-range(//*,'multiple',1,1)))
+xpointer(start-point(string-range(//p,'test'))[1])
diff --git a/test/XPath/xptr/strrange b/test/XPath/xptr/strrange
new file mode 100644
index 0000000..3231927
--- /dev/null
+++ b/test/XPath/xptr/strrange
@@ -0,0 +1,6 @@
+xpointer(string-range(//p, 'simple'))
+xpointer(string-range(//p, 'test'))
+xpointer(string-range(//p, 'difficult'))
+xpointer(string-range(//p, 'spanning'))
+xpointer(string-range(//p, 'unbalanced'))
+xpointer(string-range(//seq, ''))
diff --git a/test/XPath/xptr/strrange2 b/test/XPath/xptr/strrange2
new file mode 100644
index 0000000..5133547
--- /dev/null
+++ b/test/XPath/xptr/strrange2
@@ -0,0 +1,3 @@
+xpointer(string-range(//p, 'test', 2))
+xpointer(string-range(//p, 'test', 2, 2))
+xpointer(string-range(//p, 'difficult', 1, 0))
diff --git a/test/XPath/xptr/strrange3 b/test/XPath/xptr/strrange3
new file mode 100644
index 0000000..aea5665
--- /dev/null
+++ b/test/XPath/xptr/strrange3
@@ -0,0 +1,4 @@
+xpointer(string-range(//p, 'test', 1, 0))
+xpointer(string-range(//*, 'test', 1, 0))
+xpointer(string-range(//p, 'test', 1, 0)[2])
+xpointer(string-range(//*, 'test', 1, 0)[2])
diff --git a/test/XPath/xptr/vidbase b/test/XPath/xptr/vidbase
new file mode 100644
index 0000000..b146383
--- /dev/null
+++ b/test/XPath/xptr/vidbase
@@ -0,0 +1,2 @@
+xpointer(id('chapter1')/p)
+xpointer(id('chapter1')/p[1]/range-to(following-sibling::p[2]))
diff --git a/test/XPath/xptr/vidchildseq b/test/XPath/xptr/vidchildseq
new file mode 100644
index 0000000..fe205dc
--- /dev/null
+++ b/test/XPath/xptr/vidchildseq
@@ -0,0 +1,4 @@
+/1/2/3
+element(/1/2/3)
+chapter1/3
+element(chapter1/3)
diff --git a/test/XPath/xptr/vidparts b/test/XPath/xptr/vidparts
new file mode 100644
index 0000000..3afbbdd
--- /dev/null
+++ b/test/XPath/xptr/vidparts
@@ -0,0 +1,3 @@
+xpointer(id("chapter1"))
+xpointer(//*[@id="chapter1"])
+xpointer(id("chapter1"))xpointer(//*[@id="chapter1"])
diff --git a/test/att1 b/test/att1
new file mode 100644
index 0000000..609e5cc
--- /dev/null
+++ b/test/att1
@@ -0,0 +1,2 @@
+<doc attr="to normalize
+with a space"/>
diff --git a/test/att10 b/test/att10
new file mode 100644
index 0000000..5c14dc6
--- /dev/null
+++ b/test/att10
@@ -0,0 +1,22 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (tst*)>
+<!ELEMENT tst (#PCDATA)>
+<!ATTLIST tst a NMTOKENS #IMPLIED>
+<!ATTLIST tst b CDATA #IMPLIED>
+<!ENTITY d "&#xD;">
+<!ENTITY a "&#xA;">
+<!ENTITY da "&#xD;&#xA;">
+]>
+<doc>
+<tst a="
+
+xyz" b="
+
+xyz"/>
+<tst a="&d;&d;A&a;&#x20;&a;B&da;" b="&d;&d;A&a;&#x20;&a;B&da;"/>
+<tst a="&#xd;&#xd;A&#xa;&#xa;B&#xd;&#xa;" b="&#xd;&#xd;A&#xa;&#xa;B&#xd;&#xa;"/>
+<tst a="&#32;x&#32;&#32;y&#32;" b="&#32;x&#32;&#32;y&#32;"/>
+<tst a=" a b " b=" a b "/>
+<tst a=" a b " b=" a b "/>
+</doc>
+
diff --git a/test/att11 b/test/att11
new file mode 100644
index 0000000..32faaf3
--- /dev/null
+++ b/test/att11
@@ -0,0 +1,13 @@
+<?xml version='1.0' standalone='yes'?>
+<!DOCTYPE attributes [
+<!ELEMENT attributes EMPTY>
+<!ATTLIST attributes
+ nmtoken NMTOKEN #IMPLIED
+ nmtokens NMTOKENS #IMPLIED>
+<!ENTITY ent " entity&recursive; ">
+<!ENTITY recursive "reference">
+]>
+<attributes
+ nmtoken = " &ent; &ent; &ent; "
+ nmtokens = " Test&#x0d;&#x0a; this&#x20; normalization "
+/>
diff --git a/test/att2 b/test/att2
new file mode 100644
index 0000000..e630ff5
--- /dev/null
+++ b/test/att2
@@ -0,0 +1 @@
+<doc attr="to normalize with a space"/>
diff --git a/test/att3 b/test/att3
new file mode 100644
index 0000000..d576fec
--- /dev/null
+++ b/test/att3
@@ -0,0 +1 @@
+<select onclick="aaaa&#10; bbbb&#160;">f&#160;oo</select>
diff --git a/test/att4 b/test/att4
new file mode 100644
index 0000000..2e8bbca
--- /dev/null
+++ b/test/att4
@@ -0,0 +1,9264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Slava (GIVC) -->
+<electroxml modified="20021216T072726">
+ <data from="20021031T22" to="20021130T22">
+ <select>
+ <device serialnumb="E00003562">
+ <par memind="113400" h="3dc1a8de">
+ <val o="0" v="53"/>
+ <val o="e08" v="53"/>
+ <val o="1c32" v="53"/>
+ <val o="2a3c" v="53"/>
+ <val o="3835" v="53"/>
+ <val o="4645" v="53"/>
+ <val o="5455" v="53"/>
+ <val o="6265" v="53"/>
+ <val o="7075" v="53"/>
+ <val o="7e85" v="53"/>
+ <val o="8c96" v="53"/>
+ <val o="9aa5" v="53"/>
+ <val o="a8b6" v="53"/>
+ <val o="b6c5" v="53"/>
+ <val o="c4d7" v="53"/>
+ <val o="d30b" v="53"/>
+ <val o="e0f6" v="53"/>
+ <val o="ef06" v="53"/>
+ <val o="fd17" v="53"/>
+ <val o="10b27" v="53"/>
+ <val o="11937" v="53"/>
+ <val o="12746" v="53"/>
+ <val o="13556" v="53"/>
+ <val o="14366" v="53"/>
+ <val o="15181" v="53"/>
+ <val o="15f85" v="53"/>
+ <val o="16d95" v="53"/>
+ <val o="17ba4" v="53"/>
+ <val o="189b5" v="53"/>
+ <val o="197c4" v="53"/>
+ <val o="1a5d5" v="53"/>
+ <val o="1b3e6" v="53"/>
+ <val o="1c1f6" v="53"/>
+ <val o="1d005" v="53"/>
+ <val o="1de15" v="53"/>
+ <val o="1ec25" v="53"/>
+ <val o="1fa36" v="53"/>
+ <val o="20845" v="53"/>
+ <val o="21656" v="53"/>
+ <val o="22465" v="53"/>
+ <val o="23276" v="53"/>
+ <val o="24086" v="53"/>
+ <val o="24e99" v="53"/>
+ <val o="25ca7" v="53"/>
+ <val o="26ab7" v="53"/>
+ <val o="278c6" v="53"/>
+ <val o="286d6" v="53"/>
+ <val o="294e6" v="53"/>
+ <val o="2a301" v="53"/>
+ <val o="2b105" v="53"/>
+ <val o="2bf15" v="53"/>
+ <val o="2cd25" v="53"/>
+ <val o="2db35" v="53"/>
+ <val o="2e946" v="53"/>
+ <val o="2f755" v="53"/>
+ <val o="30566" v="53"/>
+ <val o="31375" v="53"/>
+ <val o="3219e" v="53"/>
+ <val o="32f96" v="53"/>
+ <val o="33da6" v="53"/>
+ <val o="34bb6" v="53"/>
+ <val o="359de" v="53"/>
+ <val o="367d6" v="53"/>
+ <val o="375e6" v="53"/>
+ <val o="3840e" v="53"/>
+ <val o="3921e" v="53"/>
+ <val o="3a016" v="53"/>
+ <val o="3ae27" v="53"/>
+ <val o="3bc36" v="53"/>
+ <val o="3ca47" v="53"/>
+ <val o="3d856" v="53"/>
+ <val o="3e667" v="53"/>
+ <val o="3f481" v="53"/>
+ <val o="40285" v="53"/>
+ <val o="41095" v="53"/>
+ <val o="41ea5" v="53"/>
+ <val o="42cb5" v="53"/>
+ <val o="43ac5" v="53"/>
+ <val o="448d5" v="53"/>
+ <val o="456e6" v="53"/>
+ <val o="464f5" v="53"/>
+ <val o="480ff" v="53"/>
+ <val o="48f0e" v="53"/>
+ <val o="49d1d" v="53"/>
+ <val o="4ab46" v="53"/>
+ <val o="4b955" v="53"/>
+ <val o="4c769" v="53"/>
+ <val o="4d577" v="53"/>
+ <val o="4e387" v="53"/>
+ <val o="4f196" v="53"/>
+ <val o="4ffa6" v="53"/>
+ <val o="50dd0" v="53"/>
+ <val o="51bc6" v="53"/>
+ <val o="529d6" v="53"/>
+ <val o="537e7" v="53"/>
+ <val o="54600" v="53"/>
+ <val o="55406" v="53"/>
+ <val o="56215" v="53"/>
+ <val o="57026" v="53"/>
+ <val o="57e36" v="53"/>
+ <val o="58c46" v="53"/>
+ <val o="59a70" v="53"/>
+ <val o="5a867" v="53"/>
+ <val o="5b676" v="53"/>
+ <val o="5c487" v="53"/>
+ <val o="5d296" v="53"/>
+ <val o="5e0a9" v="53"/>
+ <val o="5eeb8" v="53"/>
+ <val o="5fcc6" v="53"/>
+ <val o="60ad7" v="53"/>
+ <val o="618e7" v="53"/>
+ <val o="626f7" v="53"/>
+ <val o="63507" v="53"/>
+ <val o="64317" v="53"/>
+ <val o="65127" v="53"/>
+ <val o="65f37" v="53"/>
+ <val o="66d46" v="53"/>
+ <val o="67b57" v="53"/>
+ <val o="68967" v="53"/>
+ <val o="69782" v="53"/>
+ <val o="6a586" v="53"/>
+ <val o="6b395" v="53"/>
+ <val o="6c1a6" v="53"/>
+ <val o="6cfb5" v="53"/>
+ <val o="6ddc6" v="53"/>
+ <val o="6ebd6" v="53"/>
+ <val o="6f9e6" v="53"/>
+ <val o="707f6" v="53"/>
+ <val o="71607" v="53"/>
+ <val o="72417" v="53"/>
+ <val o="73227" v="53"/>
+ <val o="74037" v="53"/>
+ <val o="74e47" v="53"/>
+ <val o="75c57" v="53"/>
+ <val o="76a63" v="53"/>
+ <val o="77873" v="53"/>
+ <val o="78680" v="53"/>
+ <val o="7948f" v="53"/>
+ <val o="7a29f" v="53"/>
+ <val o="7b0af" v="53"/>
+ <val o="7bebf" v="53"/>
+ <val o="7cccf" v="53"/>
+ <val o="7dadf" v="53"/>
+ <val o="7e8fa" v="53"/>
+ <val o="7f70a" v="53"/>
+ <val o="8051a" v="53"/>
+ <val o="8132a" v="53"/>
+ <val o="8213a" v="53"/>
+ <val o="82f4a" v="53"/>
+ <val o="83d5a" v="53"/>
+ <val o="84b6a" v="53"/>
+ <val o="8597a" v="53"/>
+ <val o="8678b" v="53"/>
+ <val o="8759b" v="53"/>
+ <val o="883ac" v="53"/>
+ <val o="891bb" v="53"/>
+ <val o="89fca" v="53"/>
+ <val o="8adda" v="53"/>
+ <val o="8bbeb" v="53"/>
+ <val o="8c9fc" v="53"/>
+ <val o="8d80b" v="53"/>
+ <val o="8e61a" v="53"/>
+ <val o="8f42a" v="53"/>
+ <val o="9023a" v="53"/>
+ <val o="9104a" v="53"/>
+ <val o="91e5a" v="53"/>
+ <val o="92c6a" v="53"/>
+ <val o="93a84" v="53"/>
+ <val o="94885" v="53"/>
+ <val o="95694" v="53"/>
+ <val o="964a5" v="53"/>
+ <val o="972b4" v="53"/>
+ <val o="980c5" v="53"/>
+ <val o="98ed4" v="53"/>
+ <val o="99ce5" v="53"/>
+ <val o="9aaf5" v="53"/>
+ <val o="9b906" v="53"/>
+ <val o="9c716" v="53"/>
+ <val o="9d526" v="53"/>
+ <val o="9e336" v="53"/>
+ <val o="9f145" v="53"/>
+ <val o="9ff56" v="53"/>
+ <val o="a0d65" v="53"/>
+ <val o="a1b77" v="53"/>
+ <val o="a2986" v="53"/>
+ <val o="a3795" v="53"/>
+ <val o="a45a7" v="53"/>
+ <val o="a53b6" v="53"/>
+ <val o="a61c7" v="53"/>
+ <val o="a6fd6" v="53"/>
+ <val o="a7e00" v="53"/>
+ <val o="a8c00" v="53"/>
+ <val o="a9a05" v="53"/>
+ <val o="aa815" v="53"/>
+ <val o="ab625" v="53"/>
+ <val o="ac435" v="53"/>
+ <val o="ad245" v="53"/>
+ <val o="ae055" v="53"/>
+ <val o="aee65" v="53"/>
+ <val o="afc75" v="53"/>
+ <val o="b0a85" v="53"/>
+ <val o="b26a6" v="53"/>
+ <val o="b34b6" v="53"/>
+ <val o="b42c6" v="53"/>
+ <val o="b50d6" v="53"/>
+ <val o="b5ee7" v="53"/>
+ <val o="b6cf6" v="53"/>
+ <val o="b7b07" v="53"/>
+ <val o="b8917" v="53"/>
+ <val o="b9728" v="53"/>
+ <val o="ba537" v="53"/>
+ <val o="bb347" v="53"/>
+ <val o="bc157" v="53"/>
+ <val o="bcf67" v="53"/>
+ <val o="bdd81" v="53"/>
+ <val o="beb86" v="53"/>
+ <val o="bf995" v="53"/>
+ <val o="c07a6" v="53"/>
+ <val o="c15b5" v="53"/>
+ <val o="c23c6" v="53"/>
+ <val o="c31d5" v="53"/>
+ <val o="c3fe6" v="53"/>
+ <val o="c4df5" v="53"/>
+ <val o="c5c06" v="53"/>
+ <val o="c6a16" v="53"/>
+ <val o="c7826" v="53"/>
+ <val o="c8636" v="53"/>
+ <val o="c9446" v="53"/>
+ <val o="ca256" v="53"/>
+ <val o="cb066" v="53"/>
+ <val o="cbe76" v="53"/>
+ <val o="ccc87" v="53"/>
+ <val o="cda96" v="53"/>
+ <val o="ce8a8" v="53"/>
+ <val o="cf6b7" v="53"/>
+ <val o="d04c8" v="53"/>
+ <val o="d12d7" v="53"/>
+ <val o="d20e7" v="53"/>
+ <val o="d2f02" v="53"/>
+ <val o="d3d05" v="53"/>
+ <val o="d4b15" v="53"/>
+ <val o="d5926" v="53"/>
+ <val o="d6735" v="53"/>
+ <val o="d7546" v="53"/>
+ <val o="d8355" v="53"/>
+ <val o="d9166" v="53"/>
+ <val o="d9f75" v="53"/>
+ <val o="dad87" v="53"/>
+ <val o="dbb97" v="53"/>
+ <val o="dc9a8" v="53"/>
+ <val o="dd7b7" v="53"/>
+ <val o="de5c6" v="53"/>
+ <val o="df3d7" v="53"/>
+ <val o="e01d7" v="53"/>
+ <val o="e0fe5" v="53"/>
+ <val o="e1df5" v="53"/>
+ <val o="e2c04" v="53"/>
+ <val o="e3a14" v="53"/>
+ <val o="e4824" v="53"/>
+ <val o="e5634" v="53"/>
+ <val o="e6444" v="53"/>
+ <val o="e7255" v="53"/>
+ <val o="e806f" v="53"/>
+ <val o="e8e7f" v="53"/>
+ <val o="e9c8e" v="53"/>
+ <val o="eaa9f" v="53"/>
+ <val o="eb8ae" v="53"/>
+ <val o="ec6bf" v="53"/>
+ <val o="ed4ce" v="53"/>
+ <val o="ee2df" v="53"/>
+ <val o="ef0ef" v="53"/>
+ <val o="eff01" v="53"/>
+ <val o="f0d10" v="53"/>
+ <val o="f1b20" v="53"/>
+ <val o="f2930" v="53"/>
+ <val o="f3740" v="53"/>
+ <val o="f4551" v="53"/>
+ <val o="f5361" v="53"/>
+ <val o="f6172" v="53"/>
+ <val o="f6f80" v="53"/>
+ <val o="f7d91" v="53"/>
+ <val o="f8ba1" v="53"/>
+ <val o="f99b1" v="53"/>
+ <val o="fa7c0" v="53"/>
+ <val o="fb5d1" v="53"/>
+ <val o="fc3e0" v="53"/>
+ <val o="fd1fb" v="53"/>
+ <val o="fe00b" v="53"/>
+ <val o="fee1c" v="53"/>
+ <val o="ffc2c" v="53"/>
+ <val o="100a3b" v="53"/>
+ <val o="10184c" v="53"/>
+ <val o="10265b" v="53"/>
+ <val o="10346c" v="53"/>
+ <val o="10427b" v="53"/>
+ <val o="10508d" v="53"/>
+ <val o="105e9d" v="53"/>
+ <val o="106cad" v="53"/>
+ <val o="107abd" v="53"/>
+ <val o="1088cd" v="53"/>
+ <val o="1096de" v="53"/>
+ <val o="10a4ed" v="53"/>
+ <val o="10b2fe" v="53"/>
+ <val o="10c10d" v="53"/>
+ <val o="10cf1e" v="53"/>
+ <val o="10dd2e" v="53"/>
+ <val o="10eb66" v="53"/>
+ <val o="10f94e" v="53"/>
+ <val o="11075e" v="53"/>
+ <val o="11156d" v="53"/>
+ <val o="112388" v="53"/>
+ <val o="113187" v="53"/>
+ <val o="113fb0" v="53"/>
+ <val o="114da6" v="53"/>
+ <val o="115bb6" v="53"/>
+ <val o="1169c6" v="53"/>
+ <val o="1177d6" v="53"/>
+ <val o="1185e8" v="53"/>
+ <val o="1193f7" v="53"/>
+ <val o="11a208" v="53"/>
+ <val o="11b017" v="53"/>
+ <val o="11be2f" v="53"/>
+ <val o="11cc37" v="53"/>
+ <val o="11da47" v="53"/>
+ <val o="11e857" v="53"/>
+ <val o="11f667" v="53"/>
+ <val o="120578" v="53"/>
+ <val o="121386" v="53"/>
+ <val o="122196" v="53"/>
+ <val o="122fa6" v="53"/>
+ <val o="123db5" v="53"/>
+ <val o="124bc5" v="53"/>
+ <val o="1259d5" v="53"/>
+ <val o="1267e4" v="53"/>
+ <val o="127600" v="53"/>
+ <val o="128305" v="53"/>
+ <val o="129115" v="53"/>
+ <val o="129f25" v="53"/>
+ <val o="12ad35" v="53"/>
+ <val o="12bb45" v="53"/>
+ <val o="12c954" v="53"/>
+ <val o="12d766" v="53"/>
+ <val o="12e575" v="53"/>
+ <val o="12f386" v="53"/>
+ <val o="130196" v="53"/>
+ <val o="130fa6" v="53"/>
+ <val o="131db7" v="53"/>
+ <val o="132bc5" v="53"/>
+ <val o="1339d4" v="53"/>
+ <val o="1347e5" v="53"/>
+ <val o="1355f4" v="53"/>
+ <val o="136404" v="53"/>
+ <val o="137214" v="53"/>
+ <val o="138024" v="53"/>
+ <val o="138e33" v="53"/>
+ <val o="139c44" v="53"/>
+ <val o="13aa54" v="53"/>
+ <val o="13b865" v="53"/>
+ <val o="13c67e" v="53"/>
+ <val o="13d48e" v="53"/>
+ <val o="13e29e" v="53"/>
+ <val o="13f0ae" v="53"/>
+ <val o="13febf" v="53"/>
+ <val o="140ccf" v="53"/>
+ <val o="141adf" v="53"/>
+ <val o="1428ef" v="53"/>
+ <val o="1436ff" v="53"/>
+ <val o="14450f" v="53"/>
+ <val o="14531f" v="53"/>
+ <val o="146130" v="53"/>
+ <val o="146f40" v="53"/>
+ <val o="147d44" v="53"/>
+ <val o="148b57" v="53"/>
+ <val o="149965" v="53"/>
+ <val o="14a775" v="53"/>
+ <val o="14b584" v="53"/>
+ <val o="14c397" v="53"/>
+ <val o="14d1a4" v="53"/>
+ <val o="14dfb6" v="53"/>
+ <val o="14edc5" v="53"/>
+ <val o="14fbd5" v="53"/>
+ <val o="1509e5" v="53"/>
+ <val o="1517ff" v="53"/>
+ <val o="152605" v="53"/>
+ <val o="153415" v="53"/>
+ <val o="154225" v="53"/>
+ <val o="155035" v="53"/>
+ <val o="155e45" v="53"/>
+ <val o="156c55" v="53"/>
+ <val o="157a65" v="53"/>
+ <val o="158875" v="53"/>
+ <val o="159686" v="53"/>
+ <val o="15a495" v="53"/>
+ <val o="15b2a6" v="53"/>
+ <val o="15c0b6" v="53"/>
+ <val o="15cec6" v="53"/>
+ <val o="15dcd5" v="53"/>
+ <val o="15eae6" v="53"/>
+ <val o="15f8f5" v="53"/>
+ <val o="160706" v="53"/>
+ <val o="161517" v="53"/>
+ <val o="162326" v="53"/>
+ <val o="163137" v="53"/>
+ <val o="163f46" v="53"/>
+ <val o="164d57" v="53"/>
+ <val o="165b67" v="53"/>
+ <val o="166982" v="53"/>
+ <val o="167786" v="53"/>
+ <val o="168596" v="53"/>
+ <val o="1693a6" v="53"/>
+ <val o="16a1b5" v="53"/>
+ <val o="16afc6" v="53"/>
+ <val o="16bdd5" v="53"/>
+ <val o="16cbe6" v="53"/>
+ <val o="16d9f6" v="53"/>
+ <val o="16e807" v="53"/>
+ <val o="16f616" v="53"/>
+ <val o="170429" v="53"/>
+ <val o="171236" v="53"/>
+ <val o="172047" v="53"/>
+ <val o="172e57" v="53"/>
+ <val o="173c67" v="53"/>
+ <val o="174a77" v="53"/>
+ <val o="175887" v="53"/>
+ <val o="176694" v="53"/>
+ <val o="1774a3" v="53"/>
+ <val o="1782b3" v="53"/>
+ <val o="1790c5" v="53"/>
+ <val o="179ed4" v="53"/>
+ <val o="17ace4" v="53"/>
+ <val o="17bafd" v="53"/>
+ <val o="17c90f" v="53"/>
+ <val o="17d71e" v="53"/>
+ <val o="17e52f" v="53"/>
+ <val o="17f33f" v="53"/>
+ <val o="18014f" v="53"/>
+ <val o="180f5f" v="53"/>
+ <val o="181d6e" v="53"/>
+ <val o="182b7f" v="53"/>
+ <val o="18398f" v="53"/>
+ <val o="1847a1" v="53"/>
+ <val o="1855af" v="53"/>
+ <val o="1863c0" v="53"/>
+ <val o="1871cf" v="53"/>
+ <val o="187fe0" v="53"/>
+ <val o="188def" v="53"/>
+ <val o="189c00" v="53"/>
+ <val o="18b80d" v="53"/>
+ <val o="18c61c" v="53"/>
+ <val o="18d42c" v="53"/>
+ <val o="18e23b" v="53"/>
+ <val o="18f04b" v="53"/>
+ <val o="18fe5e" v="53"/>
+ <val o="190c76" v="53"/>
+ <val o="191a86" v="53"/>
+ <val o="192896" v="53"/>
+ <val o="1936a6" v="53"/>
+ <val o="1944b7" v="53"/>
+ <val o="1952c6" v="53"/>
+ <val o="1960d7" v="53"/>
+ <val o="196ee6" v="53"/>
+ <val o="197cf8" v="53"/>
+ <val o="198b0f" v="53"/>
+ <val o="19991f" v="53"/>
+ <val o="19b541" v="53"/>
+ <val o="19c34d" v="53"/>
+ <val o="19d15e" v="53"/>
+ <val o="19df80" v="53"/>
+ <val o="19ed90" v="53"/>
+ <val o="19eebe" v="53"/>
+ <val o="19fb8e" v="53"/>
+ <val o="1a09a0" v="53"/>
+ <val o="1a17ae" v="53"/>
+ <val o="1a25be" v="53"/>
+ <val o="1a33cd" v="53"/>
+ <val o="1a41dd" v="53"/>
+ <val o="1a4fed" v="53"/>
+ <val o="1a5e08" v="53"/>
+ <val o="1a6c05" v="53"/>
+ <val o="1a7a15" v="53"/>
+ <val o="1a8826" v="53"/>
+ <val o="1a9637" v="53"/>
+ <val o="1aa445" v="53"/>
+ <val o="1ab255" v="53"/>
+ <val o="1ac065" v="53"/>
+ <val o="1ace75" v="53"/>
+ <val o="1adc87" v="53"/>
+ <val o="1aea96" v="53"/>
+ <val o="1af8a7" v="53"/>
+ <val o="1b06b7" v="53"/>
+ <val o="1b14c6" v="53"/>
+ <val o="1c7460" v="55"/>
+ <val o="1c8270" v="55"/>
+ <val o="1c907e" v="55"/>
+ <val o="1c9e8f" v="55"/>
+ <val o="1caca2" v="55"/>
+ <val o="1cbab1" v="55"/>
+ <val o="1cc8c1" v="55"/>
+ <val o="1cd6d0" v="55"/>
+ <val o="1ce4de" v="55"/>
+ <val o="1cf2f0" v="55"/>
+ <val o="1d0109" v="55"/>
+ <val o="1d0f06" v="55"/>
+ <val o="1d1d15" v="55"/>
+ <val o="1d2b25" v="55"/>
+ <val o="1d3935" v="55"/>
+ <val o="1d4745" v="55"/>
+ <val o="1d5555" v="55"/>
+ <val o="1d6366" v="55"/>
+ <val o="1d7175" v="55"/>
+ <val o="1d7f86" v="55"/>
+ <val o="1d8d95" v="55"/>
+ <val o="1d9ba6" v="55"/>
+ <val o="1da9b6" v="55"/>
+ <val o="1db7c7" v="55"/>
+ <val o="1dc5d5" v="55"/>
+ <val o="1dd3e6" v="55"/>
+ <val o="1de1f5" v="55"/>
+ <val o="1df006" v="55"/>
+ <val o="1dfe16" v="55"/>
+ <val o="1e0c26" v="55"/>
+ <val o="1e1a36" v="55"/>
+ <val o="1e2847" v="55"/>
+ <val o="1e3659" v="55"/>
+ <val o="1e4467" v="55"/>
+ <val o="1e5281" v="55"/>
+ <val o="1e6086" v="55"/>
+ <val o="1e6e96" v="55"/>
+ <val o="1e7ca6" v="55"/>
+ <val o="1e8ab5" v="55"/>
+ <val o="1e98c6" v="55"/>
+ <val o="1ea6d5" v="55"/>
+ <val o="1eb4e6" v="55"/>
+ <val o="1ec2f6" v="55"/>
+ <val o="1ed106" v="55"/>
+ <val o="1edf16" v="55"/>
+ <val o="1eed26" v="55"/>
+ <val o="1efb36" v="55"/>
+ <val o="1f0946" v="55"/>
+ <val o="1f1756" v="55"/>
+ <val o="1f2566" v="55"/>
+ <val o="1f3376" v="55"/>
+ <val o="1f4187" v="55"/>
+ <val o="1f4f96" v="55"/>
+ <val o="1f5da7" v="55"/>
+ <val o="1f6bb6" v="55"/>
+ <val o="1f79c7" v="55"/>
+ <val o="1f87d6" v="55"/>
+ <val o="1f95e7" v="55"/>
+ <val o="1fa401" v="55"/>
+ <val o="1fb204" v="55"/>
+ <val o="1fc016" v="55"/>
+ <val o="1fce25" v="55"/>
+ <val o="1fdc35" v="55"/>
+ <val o="1fea45" v="55"/>
+ <val o="1ff855" v="55"/>
+ <val o="200665" v="55"/>
+ <val o="201475" v="55"/>
+ <val o="202286" v="55"/>
+ <val o="203095" v="55"/>
+ <val o="203ea5" v="55"/>
+ <val o="204cb6" v="55"/>
+ <val o="205ac6" v="55"/>
+ <val o="2068d6" v="55"/>
+ <val o="2076e6" v="55"/>
+ <val o="2084f6" v="55"/>
+ <val o="209306" v="55"/>
+ <val o="20a116" v="55"/>
+ <val o="20af26" v="55"/>
+ <val o="20bd37" v="55"/>
+ <val o="20cb46" v="55"/>
+ <val o="20d957" v="55"/>
+ <val o="20e767" v="55"/>
+ <val o="20f581" v="55"/>
+ <val o="210386" v="55"/>
+ <val o="211194" v="55"/>
+ <val o="211fa5" v="55"/>
+ <val o="212db5" v="55"/>
+ <val o="213bc5" v="55"/>
+ <val o="2149d6" v="55"/>
+ <val o="2157e5" v="55"/>
+ <val o="2165f6" v="55"/>
+ <val o="217406" v="55"/>
+ <val o="218217" v="55"/>
+ <val o="219026" v="55"/>
+ <val o="219e39" v="55"/>
+ <val o="21ac46" v="55"/>
+ <val o="21ba57" v="55"/>
+ <val o="21c867" v="55"/>
+ <val o="21d677" v="55"/>
+ <val o="21e487" v="55"/>
+ <val o="21f296" v="55"/>
+ <val o="2200a6" v="55"/>
+ <val o="220eb7" v="55"/>
+ <val o="221cc6" v="55"/>
+ <val o="222ad7" v="55"/>
+ <val o="2238e7" v="55"/>
+ <val o="224701" v="55"/>
+ <val o="225505" v="55"/>
+ <val o="226315" v="55"/>
+ <val o="227125" v="55"/>
+ <val o="227f35" v="55"/>
+ <val o="228d45" v="55"/>
+ <val o="229b54" v="55"/>
+ <val o="22a965" v="55"/>
+ <val o="22b776" v="55"/>
+ <val o="22c586" v="55"/>
+ <val o="22d397" v="55"/>
+ <val o="22e1a6" v="55"/>
+ <val o="22efb6" v="55"/>
+ <val o="22fdc7" v="55"/>
+ <val o="230bd7" v="55"/>
+ <val o="2319e6" v="55"/>
+ <val o="2327f6" v="55"/>
+ <val o="23361b" v="55"/>
+ <val o="234416" v="55"/>
+ <val o="235226" v="55"/>
+ <val o="236037" v="55"/>
+ <val o="236e46" v="55"/>
+ <val o="237c57" v="55"/>
+ <val o="238a66" v="55"/>
+ <val o="239881" v="55"/>
+ <val o="23a685" v="55"/>
+ <val o="23b495" v="55"/>
+ <val o="23c2a4" v="55"/>
+ <val o="23d0b5" v="55"/>
+ <val o="23dec4" v="55"/>
+ <val o="23ecd5" v="55"/>
+ <val o="23fae4" v="55"/>
+ <val o="2408f6" v="55"/>
+ <val o="241706" v="55"/>
+ <val o="242518" v="55"/>
+ <val o="243325" v="55"/>
+ <val o="244137" v="55"/>
+ <val o="244f46" v="55"/>
+ <val o="246b66" v="55"/>
+ <val o="247976" v="55"/>
+ <val o="248786" v="55"/>
+ <val o="24957e" v="55"/>
+ <val o="24a38f" v="55"/>
+ <val o="24b19c" v="55"/>
+ <val o="24bfac" v="55"/>
+ <val o="24cdbc" v="55"/>
+ <val o="24dbcd" v="55"/>
+ <val o="24e9e5" v="55"/>
+ <val o="24f808" v="55"/>
+ <val o="250616" v="55"/>
+ <val o="251426" v="55"/>
+ <val o="252236" v="55"/>
+ <val o="253047" v="55"/>
+ <val o="253e56" v="55"/>
+ <val o="254c67" v="55"/>
+ <val o="255a76" v="55"/>
+ <val o="256887" v="55"/>
+ <val o="257697" v="55"/>
+ <val o="2584a8" v="55"/>
+ <val o="2592b6" v="55"/>
+ <val o="25a0c7" v="55"/>
+ <val o="25aed7" v="55"/>
+ <val o="25bce7" v="55"/>
+ <val o="25caf8" v="55"/>
+ <val o="25d907" v="55"/>
+ <val o="25e718" v="55"/>
+ <val o="25f527" v="55"/>
+ <val o="260338" v="55"/>
+ <val o="261149" v="55"/>
+ <val o="261f59" v="55"/>
+ <val o="262d68" v="55"/>
+ <val o="263b83" v="55"/>
+ <val o="264986" v="55"/>
+ <val o="265795" v="55"/>
+ <val o="2665a6" v="55"/>
+ <val o="2673b5" v="55"/>
+ <val o="2681c6" v="55"/>
+ <val o="268fd5" v="55"/>
+ <val o="269de6" v="55"/>
+ <val o="26abf6" v="55"/>
+ <val o="26ba06" v="55"/>
+ <val o="26c817" v="55"/>
+ <val o="26d62b" v="55"/>
+ <val o="26e436" v="55"/>
+ <val o="26f247" v="55"/>
+ <val o="270057" v="55"/>
+ <val o="270e67" v="55"/>
+ <val o="271c77" v="55"/>
+ <val o="272a87" v="55"/>
+ <val o="273897" v="55"/>
+ <val o="2746a8" v="55"/>
+ <val o="2754b9" v="55"/>
+ <val o="2762c7" v="55"/>
+ <val o="2770d8" v="55"/>
+ <val o="277ee7" v="55"/>
+ </par>
+ <par memind="16936600" h="3dc1a8de">
+ <val o="0" v="196.4"/>
+ <val o="e08" v="199.5"/>
+ <val o="1c32" v="200.8"/>
+ <val o="2a3c" v="201.8"/>
+ <val o="3835" v="199.9"/>
+ <val o="4645" v="197.9"/>
+ <val o="5455" v="193.2"/>
+ <val o="6265" v="197.6"/>
+ <val o="7075" v="195.6"/>
+ <val o="7e85" v="192.7"/>
+ <val o="8c96" v="195.3"/>
+ <val o="9aa5" v="195.4"/>
+ <val o="a8b6" v="195.6"/>
+ <val o="b6c5" v="197.3"/>
+ <val o="c4d7" v="222.6"/>
+ <val o="d30b" v="220.9"/>
+ <val o="e0f6" v="222.8"/>
+ <val o="ef06" v="180"/>
+ <val o="fd17" v="180"/>
+ <val o="10b27" v="221.4"/>
+ <val o="11937" v="222.2"/>
+ <val o="12746" v="222.5"/>
+ <val o="13556" v="220.5"/>
+ <val o="14366" v="220.8"/>
+ <val o="15181" v="220"/>
+ <val o="15f85" v="221.2"/>
+ <val o="16d95" v="220.3"/>
+ <val o="17ba4" v="221.1"/>
+ <val o="189b5" v="220.6"/>
+ <val o="197c4" v="220.9"/>
+ <val o="1a5d5" v="219.2"/>
+ <val o="1b3e6" v="219.3"/>
+ <val o="1c1f6" v="220.5"/>
+ <val o="1d005" v="220.7"/>
+ <val o="1de15" v="220.1"/>
+ <val o="1ec25" v="220.4"/>
+ <val o="1fa36" v="220.1"/>
+ <val o="20845" v="220.1"/>
+ <val o="21656" v="220.7"/>
+ <val o="22465" v="220.7"/>
+ <val o="23276" v="220.5"/>
+ <val o="24086" v="180"/>
+ <val o="24e99" v="222"/>
+ <val o="25ca7" v="221.8"/>
+ <val o="26ab7" v="220.6"/>
+ <val o="278c6" v="180"/>
+ <val o="286d6" v="220.8"/>
+ <val o="294e6" v="218.9"/>
+ <val o="2a301" v="220"/>
+ <val o="2b105" v="180"/>
+ <val o="2bf15" v="180"/>
+ <val o="2cd25" v="218.8"/>
+ <val o="2db35" v="180"/>
+ <val o="2e946" v="180"/>
+ <val o="2f755" v="180"/>
+ <val o="30566" v="219.9"/>
+ <val o="31375" v="220.5"/>
+ <val o="3219e" v="219.7"/>
+ <val o="32f96" v="220.8"/>
+ <val o="33da6" v="220.6"/>
+ <val o="34bb6" v="219"/>
+ <val o="359de" v="220.3"/>
+ <val o="367d6" v="219.3"/>
+ <val o="375e6" v="180"/>
+ <val o="3840e" v="180"/>
+ <val o="3921e" v="180"/>
+ <val o="3a016" v="180"/>
+ <val o="3ae27" v="220.9"/>
+ <val o="3bc36" v="220.1"/>
+ <val o="3ca47" v="180"/>
+ <val o="3d856" v="221.4"/>
+ <val o="3e667" v="220.2"/>
+ <val o="3f481" v="217.6"/>
+ <val o="40285" v="218.4"/>
+ <val o="41095" v="218.1"/>
+ <val o="41ea5" v="218.7"/>
+ <val o="42cb5" v="219.9"/>
+ <val o="43ac5" v="218.7"/>
+ <val o="448d5" v="180"/>
+ <val o="456e6" v="220.7"/>
+ <val o="464f5" v="222.7"/>
+ <val o="480ff" v="180"/>
+ <val o="48f0e" v="180"/>
+ <val o="49d1d" v="180"/>
+ <val o="4ab46" v="180"/>
+ <val o="4b955" v="180"/>
+ <val o="4c769" v="180"/>
+ <val o="4d577" v="180"/>
+ <val o="4e387" v="180"/>
+ <val o="4f196" v="180"/>
+ <val o="4ffa6" v="180"/>
+ <val o="50dd0" v="180"/>
+ <val o="51bc6" v="180"/>
+ <val o="529d6" v="180"/>
+ <val o="537e7" v="220.5"/>
+ <val o="54600" v="218.9"/>
+ <val o="55406" v="219.3"/>
+ <val o="56215" v="219.6"/>
+ <val o="57026" v="219.3"/>
+ <val o="57e36" v="219.7"/>
+ <val o="58c46" v="220.4"/>
+ <val o="59a70" v="220.5"/>
+ <val o="5a867" v="221.8"/>
+ <val o="5b676" v="180"/>
+ <val o="5c487" v="180"/>
+ <val o="5d296" v="180"/>
+ <val o="5e0a9" v="222.5"/>
+ <val o="5eeb8" v="224.5"/>
+ <val o="5fcc6" v="223.6"/>
+ <val o="60ad7" v="180"/>
+ <val o="618e7" v="180"/>
+ <val o="626f7" v="180"/>
+ <val o="63507" v="180"/>
+ <val o="64317" v="180"/>
+ <val o="65127" v="222.3"/>
+ <val o="65f37" v="222.6"/>
+ <val o="66d46" v="220.8"/>
+ <val o="67b57" v="220.8"/>
+ <val o="68967" v="220.2"/>
+ <val o="69782" v="220.2"/>
+ <val o="6a586" v="219.3"/>
+ <val o="6b395" v="219.8"/>
+ <val o="6c1a6" v="219"/>
+ <val o="6cfb5" v="218.7"/>
+ <val o="6ddc6" v="220.7"/>
+ <val o="6ebd6" v="180"/>
+ <val o="6f9e6" v="221.8"/>
+ <val o="707f6" v="222.8"/>
+ <val o="71607" v="180"/>
+ <val o="72417" v="180"/>
+ <val o="73227" v="180"/>
+ <val o="74037" v="223.8"/>
+ <val o="74e47" v="223.4"/>
+ <val o="75c57" v="180"/>
+ <val o="76a63" v="180"/>
+ <val o="77873" v="180"/>
+ <val o="78680" v="180"/>
+ <val o="7948f" v="180"/>
+ <val o="7a29f" v="180"/>
+ <val o="7b0af" v="222.1"/>
+ <val o="7bebf" v="221"/>
+ <val o="7cccf" v="219.5"/>
+ <val o="7dadf" v="219.9"/>
+ <val o="7e8fa" v="220.8"/>
+ <val o="7f70a" v="220.8"/>
+ <val o="8051a" v="217.9"/>
+ <val o="8132a" v="219"/>
+ <val o="8213a" v="218.6"/>
+ <val o="82f4a" v="219.4"/>
+ <val o="83d5a" v="219.7"/>
+ <val o="84b6a" v="180"/>
+ <val o="8597a" v="180"/>
+ <val o="8678b" v="180"/>
+ <val o="8759b" v="180"/>
+ <val o="883ac" v="223.1"/>
+ <val o="891bb" v="222"/>
+ <val o="89fca" v="224.2"/>
+ <val o="8adda" v="180"/>
+ <val o="8bbeb" v="180"/>
+ <val o="8c9fc" v="180"/>
+ <val o="8d80b" v="180"/>
+ <val o="8e61a" v="180"/>
+ <val o="8f42a" v="180"/>
+ <val o="9023a" v="180"/>
+ <val o="9104a" v="220.4"/>
+ <val o="91e5a" v="180"/>
+ <val o="92c6a" v="219.6"/>
+ <val o="93a84" v="219.2"/>
+ <val o="94885" v="219"/>
+ <val o="95694" v="218.5"/>
+ <val o="964a5" v="219.3"/>
+ <val o="972b4" v="219.4"/>
+ <val o="980c5" v="221"/>
+ <val o="98ed4" v="220.7"/>
+ <val o="99ce5" v="180"/>
+ <val o="9aaf5" v="180"/>
+ <val o="9b906" v="225.2"/>
+ <val o="9c716" v="225"/>
+ <val o="9d526" v="222.6"/>
+ <val o="9e336" v="223.6"/>
+ <val o="9f145" v="224.1"/>
+ <val o="9ff56" v="223.2"/>
+ <val o="a0d65" v="180"/>
+ <val o="a1b77" v="195.9"/>
+ <val o="a2986" v="190"/>
+ <val o="a3795" v="122.3"/>
+ <val o="a45a7" v="354.6"/>
+ <val o="a53b6" v="333.2"/>
+ <val o="a61c7" v="323.3"/>
+ <val o="a6fd6" v="278.1"/>
+ <val o="a7e00" v="286.2"/>
+ <val o="a8c00" v="292.3"/>
+ <val o="a9a05" v="21.4"/>
+ <val o="aa815" v="273.7"/>
+ <val o="ab625" v="272.9"/>
+ <val o="ac435" v="285.4"/>
+ <val o="ad245" v="28.5"/>
+ <val o="ae055" v="68.4"/>
+ <val o="aee65" v="147.1"/>
+ <val o="afc75" v="95.7"/>
+ <val o="b0a85" v="89.6"/>
+ <val o="b26a6" v="88.3"/>
+ <val o="b34b6" v="92.4"/>
+ <val o="b42c6" v="149.7"/>
+ <val o="b50d6" v="148.7"/>
+ <val o="b5ee7" v="127.7"/>
+ <val o="b6cf6" v="198.2"/>
+ <val o="b7b07" v="187.2"/>
+ <val o="b8917" v="182.1"/>
+ <val o="b9728" v="195.8"/>
+ <val o="ba537" v="203.8"/>
+ <val o="bb347" v="124.5"/>
+ <val o="bc157" v="159.2"/>
+ <val o="bcf67" v="230.6"/>
+ <val o="bdd81" v="79.8"/>
+ <val o="beb86" v="51.3"/>
+ <val o="bf995" v="22.5"/>
+ <val o="c07a6" v="323.7"/>
+ <val o="c15b5" v="341.6"/>
+ <val o="c23c6" v="46.4"/>
+ <val o="c31d5" v="71.9"/>
+ <val o="c3fe6" v="71.9"/>
+ <val o="c4df5" v="63.4"/>
+ <val o="c5c06" v="76.4"/>
+ <val o="c6a16" v="58.4"/>
+ <val o="c7826" v="92"/>
+ <val o="c8636" v="79.6"/>
+ <val o="c9446" v="63.1"/>
+ <val o="ca256" v="51.3"/>
+ <val o="cb066" v="81.7"/>
+ <val o="cbe76" v="205.3"/>
+ <val o="ccc87" v="96.1"/>
+ <val o="cda96" v="95.7"/>
+ <val o="ce8a8" v="96.7"/>
+ <val o="cf6b7" v="92.8"/>
+ <val o="d04c8" v="91.4"/>
+ <val o="d12d7" v="86.1"/>
+ <val o="d20e7" v="270"/>
+ <val o="d2f02" v="270.4"/>
+ <val o="d3d05" v="296.7"/>
+ <val o="d4b15" v="306.8"/>
+ <val o="d5926" v="331.7"/>
+ <val o="d6735" v="13.7"/>
+ <val o="d7546" v="46.4"/>
+ <val o="d8355" v="262.1"/>
+ <val o="d9166" v="166.2"/>
+ <val o="d9f75" v="143.6"/>
+ <val o="dad87" v="127.2"/>
+ <val o="dbb97" v="132.7"/>
+ <val o="dc9a8" v="128.3"/>
+ <val o="dd7b7" v="155.6"/>
+ <val o="de5c6" v="170.8"/>
+ <val o="df3d7" v="176.1"/>
+ <val o="e01d7" v="176.8"/>
+ <val o="e0fe5" v="168.8"/>
+ <val o="e1df5" v="172.2"/>
+ <val o="e2c04" v="185.2"/>
+ <val o="e3a14" v="196.3"/>
+ <val o="e4824" v="178.5"/>
+ <val o="e5634" v="193.7"/>
+ <val o="e6444" v="176.2"/>
+ <val o="e7255" v="196.7"/>
+ <val o="e806f" v="202.2"/>
+ <val o="e8e7f" v="99.9"/>
+ <val o="e9c8e" v="130.2"/>
+ <val o="eaa9f" v="132.9"/>
+ <val o="eb8ae" v="121.7"/>
+ <val o="ec6bf" v="100.9"/>
+ <val o="ed4ce" v="192.9"/>
+ <val o="ee2df" v="153.7"/>
+ <val o="ef0ef" v="170.4"/>
+ <val o="eff01" v="155.2"/>
+ <val o="f0d10" v="167.3"/>
+ <val o="f1b20" v="165.5"/>
+ <val o="f2930" v="184.3"/>
+ <val o="f3740" v="159.2"/>
+ <val o="f4551" v="163.4"/>
+ <val o="f5361" v="163.5"/>
+ <val o="f6172" v="160.8"/>
+ <val o="f6f80" v="165"/>
+ <val o="f7d91" v="156.4"/>
+ <val o="f8ba1" v="163.8"/>
+ <val o="f99b1" v="162.9"/>
+ <val o="fa7c0" v="154.9"/>
+ <val o="fb5d1" v="157.1"/>
+ <val o="fc3e0" v="197.2"/>
+ <val o="fd1fb" v="203.8"/>
+ <val o="fe00b" v="212.5"/>
+ <val o="fee1c" v="185.4"/>
+ <val o="ffc2c" v="187.2"/>
+ <val o="100a3b" v="162"/>
+ <val o="10184c" v="149.3"/>
+ <val o="10265b" v="136.8"/>
+ <val o="10346c" v="145.9"/>
+ <val o="10427b" v="164.1"/>
+ <val o="10508d" v="158.2"/>
+ <val o="105e9d" v="163"/>
+ <val o="106cad" v="161.6"/>
+ <val o="107abd" v="168.9"/>
+ <val o="1088cd" v="168.5"/>
+ <val o="1096de" v="165.1"/>
+ <val o="10a4ed" v="168.2"/>
+ <val o="10b2fe" v="163.9"/>
+ <val o="10c10d" v="147.5"/>
+ <val o="10cf1e" v="163"/>
+ <val o="10dd2e" v="166.3"/>
+ <val o="10eb66" v="177.4"/>
+ <val o="10f94e" v="179.7"/>
+ <val o="11075e" v="161"/>
+ <val o="11156d" v="174.4"/>
+ <val o="112388" v="203.6"/>
+ <val o="113187" v="158.3"/>
+ <val o="113fb0" v="172.9"/>
+ <val o="114da6" v="172.7"/>
+ <val o="115bb6" v="168.4"/>
+ <val o="1169c6" v="138"/>
+ <val o="1177d6" v="135.8"/>
+ <val o="1185e8" v="157.8"/>
+ <val o="1193f7" v="160.6"/>
+ <val o="11a208" v="175.7"/>
+ <val o="11b017" v="184.1"/>
+ <val o="11be2f" v="188.6"/>
+ <val o="11cc37" v="170"/>
+ <val o="11da47" v="173.6"/>
+ <val o="11e857" v="167"/>
+ <val o="11f667" v="172.6"/>
+ <val o="120578" v="164.6"/>
+ <val o="121386" v="166.8"/>
+ <val o="122196" v="151.9"/>
+ <val o="122fa6" v="158.6"/>
+ <val o="123db5" v="170.8"/>
+ <val o="124bc5" v="185.4"/>
+ <val o="1259d5" v="160.1"/>
+ <val o="1267e4" v="188.6"/>
+ <val o="127600" v="207.7"/>
+ <val o="128305" v="214.6"/>
+ <val o="129115" v="213.7"/>
+ <val o="129f25" v="218.4"/>
+ <val o="12ad35" v="210.5"/>
+ <val o="12bb45" v="178.8"/>
+ <val o="12c954" v="162.6"/>
+ <val o="12d766" v="156.4"/>
+ <val o="12e575" v="153.5"/>
+ <val o="12f386" v="143.9"/>
+ <val o="130196" v="160.8"/>
+ <val o="130fa6" v="153.4"/>
+ <val o="131db7" v="163.6"/>
+ <val o="132bc5" v="168.2"/>
+ <val o="1339d4" v="169.3"/>
+ <val o="1347e5" v="139.1"/>
+ <val o="1355f4" v="142.4"/>
+ <val o="136404" v="122.1"/>
+ <val o="137214" v="125.5"/>
+ <val o="138024" v="110.7"/>
+ <val o="138e33" v="110.6"/>
+ <val o="139c44" v="190.2"/>
+ <val o="13aa54" v="99.6"/>
+ <val o="13b865" v="209.4"/>
+ <val o="13c67e" v="76.2"/>
+ <val o="13d48e" v="61.5"/>
+ <val o="13e29e" v="44.5"/>
+ <val o="13f0ae" v="44.2"/>
+ <val o="13febf" v="60.4"/>
+ <val o="140ccf" v="64.6"/>
+ <val o="141adf" v="67.3"/>
+ <val o="1428ef" v="341.2"/>
+ <val o="1436ff" v="115.8"/>
+ <val o="14450f" v="117.3"/>
+ <val o="14531f" v="180"/>
+ <val o="146130" v="252.4"/>
+ <val o="146f40" v="261.8"/>
+ <val o="147d44" v="313.3"/>
+ <val o="148b57" v="311.3"/>
+ <val o="149965" v="292"/>
+ <val o="14a775" v="57.6"/>
+ <val o="14b584" v="151.6"/>
+ <val o="14c397" v="92.7"/>
+ <val o="14d1a4" v="93.4"/>
+ <val o="14dfb6" v="100.3"/>
+ <val o="14edc5" v="97.4"/>
+ <val o="14fbd5" v="184"/>
+ <val o="1509e5" v="289.1"/>
+ <val o="1517ff" v="274.2"/>
+ <val o="152605" v="39.8"/>
+ <val o="153415" v="6.5"/>
+ <val o="154225" v="355.9"/>
+ <val o="155035" v="19.4"/>
+ <val o="155e45" v="44.2"/>
+ <val o="156c55" v="61.4"/>
+ <val o="157a65" v="55.5"/>
+ <val o="158875" v="60.2"/>
+ <val o="159686" v="71.7"/>
+ <val o="15a495" v="66.3"/>
+ <val o="15b2a6" v="61.5"/>
+ <val o="15c0b6" v="38.5"/>
+ <val o="15cec6" v="17.3"/>
+ <val o="15dcd5" v="35.6"/>
+ <val o="15eae6" v="44.9"/>
+ <val o="15f8f5" v="71.4"/>
+ <val o="160706" v="166.1"/>
+ <val o="161517" v="125"/>
+ <val o="162326" v="176"/>
+ <val o="163137" v="195.3"/>
+ <val o="163f46" v="99.1"/>
+ <val o="164d57" v="90"/>
+ <val o="165b67" v="273.9"/>
+ <val o="166982" v="344.7"/>
+ <val o="167786" v="307.2"/>
+ <val o="168596" v="271.8"/>
+ <val o="1693a6" v="278.8"/>
+ <val o="16a1b5" v="291.5"/>
+ <val o="16afc6" v="52.9"/>
+ <val o="16bdd5" v="76.6"/>
+ <val o="16cbe6" v="87.6"/>
+ <val o="16d9f6" v="170.1"/>
+ <val o="16e807" v="174.2"/>
+ <val o="16f616" v="175.6"/>
+ <val o="170429" v="186.7"/>
+ <val o="171236" v="183.2"/>
+ <val o="172047" v="181.7"/>
+ <val o="172e57" v="173.6"/>
+ <val o="173c67" v="170.7"/>
+ <val o="174a77" v="165.4"/>
+ <val o="175887" v="163.8"/>
+ <val o="176694" v="161.7"/>
+ <val o="1774a3" v="165.4"/>
+ <val o="1782b3" v="170.9"/>
+ <val o="1790c5" v="173.5"/>
+ <val o="179ed4" v="187.9"/>
+ <val o="17ace4" v="201.8"/>
+ <val o="17bafd" v="205.9"/>
+ <val o="17c90f" v="204.6"/>
+ <val o="17d71e" v="204.1"/>
+ <val o="17e52f" v="208.2"/>
+ <val o="17f33f" v="204.4"/>
+ <val o="18014f" v="193.5"/>
+ <val o="180f5f" v="186.4"/>
+ <val o="181d6e" v="192.4"/>
+ <val o="182b7f" v="194.3"/>
+ <val o="18398f" v="184.4"/>
+ <val o="1847a1" v="184.1"/>
+ <val o="1855af" v="185.6"/>
+ <val o="1863c0" v="194.9"/>
+ <val o="1871cf" v="192.1"/>
+ <val o="187fe0" v="192.1"/>
+ <val o="188def" v="190.6"/>
+ <val o="189c00" v="185.4"/>
+ <val o="18b80d" v="170.9"/>
+ <val o="18c61c" v="187.4"/>
+ <val o="18d42c" v="191.1"/>
+ <val o="18e23b" v="191.1"/>
+ <val o="18f04b" v="197.1"/>
+ <val o="18fe5e" v="195.9"/>
+ <val o="190c76" v="189.8"/>
+ <val o="191a86" v="201.9"/>
+ <val o="192896" v="202.2"/>
+ <val o="1936a6" v="204.4"/>
+ <val o="1944b7" v="196.3"/>
+ <val o="1952c6" v="182.6"/>
+ <val o="1960d7" v="162.6"/>
+ <val o="196ee6" v="187.2"/>
+ <val o="197cf8" v="187.3"/>
+ <val o="198b0f" v="179.7"/>
+ <val o="19991f" v="181.7"/>
+ <val o="19b541" v="188.3"/>
+ <val o="19c34d" v="186.2"/>
+ <val o="19d15e" v="183.5"/>
+ <val o="19df80" v="182.2"/>
+ <val o="19ed90" v="176.5"/>
+ <val o="19eebe" v="175.6"/>
+ <val o="19fb8e" v="178.5"/>
+ <val o="1a09a0" v="223.8"/>
+ <val o="1a17ae" v="228.1"/>
+ <val o="1a25be" v="229.7"/>
+ <val o="1a33cd" v="216.1"/>
+ <val o="1a41dd" v="226.4"/>
+ <val o="1a4fed" v="249.6"/>
+ <val o="1a5e08" v="245.8"/>
+ <val o="1a6c05" v="250.1"/>
+ <val o="1a7a15" v="251.1"/>
+ <val o="1a8826" v="252.5"/>
+ <val o="1a9637" v="259.4"/>
+ <val o="1aa445" v="254.8"/>
+ <val o="1ab255" v="218.7"/>
+ <val o="1ac065" v="228.3"/>
+ <val o="1ace75" v="227.3"/>
+ <val o="1adc87" v="214.2"/>
+ <val o="1aea96" v="218.7"/>
+ <val o="1af8a7" v="217"/>
+ <val o="1b06b7" v="231.7"/>
+ <val o="1b14c6" v="230.6"/>
+ <val o="1c7460" v="52"/>
+ <val o="1c8270" v="340.3"/>
+ <val o="1c907e" v="18.5"/>
+ <val o="1c9e8f" v="357.5"/>
+ <val o="1caca2" v="344.7"/>
+ <val o="1cbab1" v="338.4"/>
+ <val o="1cc8c1" v="28.4"/>
+ <val o="1cd6d0" v="21.8"/>
+ <val o="1ce4de" v="10.4"/>
+ <val o="1cf2f0" v="343.9"/>
+ <val o="1d0109" v="342.8"/>
+ <val o="1d0f06" v="358.2"/>
+ <val o="1d1d15" v="353.5"/>
+ <val o="1d2b25" v="353.4"/>
+ <val o="1d3935" v="1.4"/>
+ <val o="1d4745" v="6.4"/>
+ <val o="1d5555" v="10.5"/>
+ <val o="1d6366" v="350.7"/>
+ <val o="1d7175" v="350.8"/>
+ <val o="1d7f86" v="357.6"/>
+ <val o="1d8d95" v="181.1"/>
+ <val o="1d9ba6" v="184.8"/>
+ <val o="1da9b6" v="192.6"/>
+ <val o="1db7c7" v="193.1"/>
+ <val o="1dc5d5" v="194.7"/>
+ <val o="1dd3e6" v="190.8"/>
+ <val o="1de1f5" v="195"/>
+ <val o="1df006" v="195.8"/>
+ <val o="1dfe16" v="195.3"/>
+ <val o="1e0c26" v="198.1"/>
+ <val o="1e1a36" v="198.4"/>
+ <val o="1e2847" v="199.5"/>
+ <val o="1e3659" v="200.2"/>
+ <val o="1e4467" v="202.3"/>
+ <val o="1e5281" v="200.7"/>
+ <val o="1e6086" v="203.5"/>
+ <val o="1e6e96" v="204.6"/>
+ <val o="1e7ca6" v="188.4"/>
+ <val o="1e8ab5" v="193.9"/>
+ <val o="1e98c6" v="184.4"/>
+ <val o="1ea6d5" v="190.5"/>
+ <val o="1eb4e6" v="188.9"/>
+ <val o="1ec2f6" v="192.2"/>
+ <val o="1ed106" v="185.6"/>
+ <val o="1edf16" v="186.6"/>
+ <val o="1eed26" v="182.8"/>
+ <val o="1efb36" v="187.6"/>
+ <val o="1f0946" v="186.9"/>
+ <val o="1f1756" v="168.2"/>
+ <val o="1f2566" v="164.2"/>
+ <val o="1f3376" v="154.3"/>
+ <val o="1f4187" v="134.3"/>
+ <val o="1f4f96" v="154.2"/>
+ <val o="1f5da7" v="182.2"/>
+ <val o="1f6bb6" v="188.3"/>
+ <val o="1f79c7" v="176"/>
+ <val o="1f87d6" v="206.4"/>
+ <val o="1f95e7" v="216.5"/>
+ <val o="1fa401" v="211.5"/>
+ <val o="1fb204" v="210.8"/>
+ <val o="1fc016" v="211.2"/>
+ <val o="1fce25" v="192.4"/>
+ <val o="1fdc35" v="185.1"/>
+ <val o="1fea45" v="176.6"/>
+ <val o="1ff855" v="171.5"/>
+ <val o="200665" v="129.5"/>
+ <val o="201475" v="173.4"/>
+ <val o="202286" v="157.2"/>
+ <val o="203095" v="161.2"/>
+ <val o="203ea5" v="163.5"/>
+ <val o="204cb6" v="176.8"/>
+ <val o="205ac6" v="166.8"/>
+ <val o="2068d6" v="161.5"/>
+ <val o="2076e6" v="159.3"/>
+ <val o="2084f6" v="177.6"/>
+ <val o="209306" v="183.2"/>
+ <val o="20a116" v="185.4"/>
+ <val o="20af26" v="182.6"/>
+ <val o="20bd37" v="189.3"/>
+ <val o="20cb46" v="173.2"/>
+ <val o="20d957" v="179.4"/>
+ <val o="20e767" v="193.5"/>
+ <val o="20f581" v="202.6"/>
+ <val o="210386" v="197.8"/>
+ <val o="211194" v="186.9"/>
+ <val o="211fa5" v="188.3"/>
+ <val o="212db5" v="178.7"/>
+ <val o="213bc5" v="160.2"/>
+ <val o="2149d6" v="168.3"/>
+ <val o="2157e5" v="184"/>
+ <val o="2165f6" v="191.1"/>
+ <val o="217406" v="177.3"/>
+ <val o="218217" v="182.9"/>
+ <val o="219026" v="185.4"/>
+ <val o="219e39" v="176.3"/>
+ <val o="21ac46" v="170.1"/>
+ <val o="21ba57" v="169.3"/>
+ <val o="21c867" v="159.8"/>
+ <val o="21d677" v="190.9"/>
+ <val o="21e487" v="173.9"/>
+ <val o="21f296" v="175.5"/>
+ <val o="2200a6" v="187.5"/>
+ <val o="220eb7" v="188.5"/>
+ <val o="221cc6" v="160"/>
+ <val o="222ad7" v="175.5"/>
+ <val o="2238e7" v="192.4"/>
+ <val o="224701" v="200.8"/>
+ <val o="225505" v="116.9"/>
+ <val o="226315" v="166.3"/>
+ <val o="227125" v="162.8"/>
+ <val o="227f35" v="130.4"/>
+ <val o="228d45" v="122"/>
+ <val o="229b54" v="193.5"/>
+ <val o="22a965" v="183.9"/>
+ <val o="22b776" v="180"/>
+ <val o="22c586" v="157.3"/>
+ <val o="22d397" v="142.7"/>
+ <val o="22e1a6" v="145.9"/>
+ <val o="22efb6" v="182.2"/>
+ <val o="22fdc7" v="182.7"/>
+ <val o="230bd7" v="173.3"/>
+ <val o="2319e6" v="188.6"/>
+ <val o="2327f6" v="179.4"/>
+ <val o="23361b" v="169.8"/>
+ <val o="234416" v="164.3"/>
+ <val o="235226" v="170.2"/>
+ <val o="236037" v="178.8"/>
+ <val o="236e46" v="158"/>
+ <val o="237c57" v="161.6"/>
+ <val o="238a66" v="175.8"/>
+ <val o="239881" v="169.9"/>
+ <val o="23a685" v="185.3"/>
+ <val o="23b495" v="191.6"/>
+ <val o="23c2a4" v="176.8"/>
+ <val o="23d0b5" v="167.7"/>
+ <val o="23dec4" v="154.1"/>
+ <val o="23ecd5" v="167"/>
+ <val o="23fae4" v="180"/>
+ <val o="2408f6" v="166.9"/>
+ <val o="241706" v="146.9"/>
+ <val o="242518" v="155.4"/>
+ <val o="243325" v="157.6"/>
+ <val o="244137" v="189.9"/>
+ <val o="244f46" v="187.4"/>
+ <val o="246b66" v="186.9"/>
+ <val o="247976" v="179.5"/>
+ <val o="248786" v="139.6"/>
+ <val o="24957e" v="161.8"/>
+ <val o="24a38f" v="172"/>
+ <val o="24b19c" v="189.5"/>
+ <val o="24bfac" v="187.3"/>
+ <val o="24cdbc" v="188.2"/>
+ <val o="24dbcd" v="186.1"/>
+ <val o="24e9e5" v="198.1"/>
+ <val o="24f808" v="193.3"/>
+ <val o="250616" v="195.6"/>
+ <val o="251426" v="198.3"/>
+ <val o="252236" v="180.5"/>
+ <val o="253047" v="180"/>
+ <val o="253e56" v="161.6"/>
+ <val o="254c67" v="165.8"/>
+ <val o="255a76" v="165.6"/>
+ <val o="256887" v="160.4"/>
+ <val o="257697" v="147.2"/>
+ <val o="2584a8" v="196.9"/>
+ <val o="2592b6" v="195.7"/>
+ <val o="25a0c7" v="186.9"/>
+ <val o="25aed7" v="178.3"/>
+ <val o="25bce7" v="177.6"/>
+ <val o="25caf8" v="172"/>
+ <val o="25d907" v="156.5"/>
+ <val o="25e718" v="154.3"/>
+ <val o="25f527" v="157"/>
+ <val o="260338" v="179.5"/>
+ <val o="261149" v="166"/>
+ <val o="261f59" v="172.3"/>
+ <val o="262d68" v="196.4"/>
+ <val o="263b83" v="179.5"/>
+ <val o="264986" v="195.7"/>
+ <val o="265795" v="202.7"/>
+ <val o="2665a6" v="209.9"/>
+ <val o="2673b5" v="204.1"/>
+ <val o="2681c6" v="199.9"/>
+ <val o="268fd5" v="186.3"/>
+ <val o="269de6" v="175.6"/>
+ <val o="26abf6" v="170.1"/>
+ <val o="26ba06" v="159.2"/>
+ <val o="26c817" v="156.4"/>
+ <val o="26d62b" v="137.7"/>
+ <val o="26e436" v="146"/>
+ <val o="26f247" v="139.6"/>
+ <val o="270057" v="143.2"/>
+ <val o="270e67" v="137.7"/>
+ <val o="271c77" v="177.9"/>
+ <val o="272a87" v="186.9"/>
+ <val o="273897" v="184.5"/>
+ <val o="2746a8" v="188.2"/>
+ <val o="2754b9" v="191.1"/>
+ <val o="2762c7" v="146.7"/>
+ <val o="2770d8" v="161.4"/>
+ <val o="277ee7" v="188.7"/>
+ </par>
+ <par memind="10695000" h="3dc1a8de">
+ <val o="0" v="50"/>
+ <val o="e08" v="50"/>
+ <val o="1c32" v="50"/>
+ <val o="2a3c" v="50"/>
+ <val o="3835" v="49.9"/>
+ <val o="4645" v="49.9"/>
+ <val o="5455" v="50"/>
+ <val o="6265" v="50"/>
+ <val o="7075" v="50"/>
+ <val o="7e85" v="50"/>
+ <val o="8c96" v="50"/>
+ <val o="9aa5" v="50.1"/>
+ <val o="a8b6" v="50"/>
+ <val o="b6c5" v="50"/>
+ <val o="c4d7" v="50"/>
+ <val o="d30b" v="50"/>
+ <val o="e0f6" v="50"/>
+ <val o="ef06" v="50"/>
+ <val o="fd17" v="50"/>
+ <val o="10b27" v="50"/>
+ <val o="11937" v="50"/>
+ <val o="12746" v="50"/>
+ <val o="13556" v="50"/>
+ <val o="14366" v="50"/>
+ <val o="15181" v="50"/>
+ <val o="15f85" v="50"/>
+ <val o="16d95" v="50"/>
+ <val o="17ba4" v="50"/>
+ <val o="189b5" v="50"/>
+ <val o="197c4" v="50.1"/>
+ <val o="1a5d5" v="50"/>
+ <val o="1b3e6" v="50"/>
+ <val o="1c1f6" v="50.1"/>
+ <val o="1d005" v="50"/>
+ <val o="1de15" v="50"/>
+ <val o="1ec25" v="50"/>
+ <val o="1fa36" v="50"/>
+ <val o="20845" v="50"/>
+ <val o="21656" v="50"/>
+ <val o="22465" v="50"/>
+ <val o="23276" v="50"/>
+ <val o="24086" v="50"/>
+ <val o="24e99" v="50"/>
+ <val o="25ca7" v="50"/>
+ <val o="26ab7" v="50"/>
+ <val o="278c6" v="50"/>
+ <val o="286d6" v="50.1"/>
+ <val o="294e6" v="50"/>
+ <val o="2a301" v="50"/>
+ <val o="2b105" v="50"/>
+ <val o="2bf15" v="50"/>
+ <val o="2cd25" v="50"/>
+ <val o="2db35" v="50"/>
+ <val o="2e946" v="50"/>
+ <val o="2f755" v="50"/>
+ <val o="30566" v="50"/>
+ <val o="31375" v="50"/>
+ <val o="3219e" v="50"/>
+ <val o="32f96" v="50"/>
+ <val o="33da6" v="50"/>
+ <val o="34bb6" v="50"/>
+ <val o="359de" v="50"/>
+ <val o="367d6" v="50"/>
+ <val o="375e6" v="50"/>
+ <val o="3840e" v="50"/>
+ <val o="3921e" v="50"/>
+ <val o="3a016" v="50"/>
+ <val o="3ae27" v="50"/>
+ <val o="3bc36" v="50"/>
+ <val o="3ca47" v="50"/>
+ <val o="3d856" v="50"/>
+ <val o="3e667" v="50"/>
+ <val o="3f481" v="50"/>
+ <val o="40285" v="50"/>
+ <val o="41095" v="50"/>
+ <val o="41ea5" v="50"/>
+ <val o="42cb5" v="50"/>
+ <val o="43ac5" v="49.9"/>
+ <val o="448d5" v="50"/>
+ <val o="456e6" v="49.9"/>
+ <val o="464f5" v="50"/>
+ <val o="480ff" v="49.9"/>
+ <val o="48f0e" v="50"/>
+ <val o="49d1d" v="50"/>
+ <val o="4ab46" v="50"/>
+ <val o="4b955" v="50"/>
+ <val o="4c769" v="50"/>
+ <val o="4d577" v="50"/>
+ <val o="4e387" v="50"/>
+ <val o="4f196" v="50"/>
+ <val o="4ffa6" v="50"/>
+ <val o="50dd0" v="50"/>
+ <val o="51bc6" v="50"/>
+ <val o="529d6" v="50"/>
+ <val o="537e7" v="50"/>
+ <val o="54600" v="50"/>
+ <val o="55406" v="50"/>
+ <val o="56215" v="50"/>
+ <val o="57026" v="50"/>
+ <val o="57e36" v="50"/>
+ <val o="58c46" v="50"/>
+ <val o="59a70" v="50"/>
+ <val o="5a867" v="50"/>
+ <val o="5b676" v="49.9"/>
+ <val o="5c487" v="50"/>
+ <val o="5d296" v="50"/>
+ <val o="5e0a9" v="50"/>
+ <val o="5eeb8" v="50"/>
+ <val o="5fcc6" v="50"/>
+ <val o="60ad7" v="50"/>
+ <val o="618e7" v="50"/>
+ <val o="626f7" v="50"/>
+ <val o="63507" v="50"/>
+ <val o="64317" v="50"/>
+ <val o="65127" v="50.1"/>
+ <val o="65f37" v="50"/>
+ <val o="66d46" v="50"/>
+ <val o="67b57" v="50"/>
+ <val o="68967" v="50"/>
+ <val o="69782" v="50.1"/>
+ <val o="6a586" v="50"/>
+ <val o="6b395" v="50"/>
+ <val o="6c1a6" v="49.9"/>
+ <val o="6cfb5" v="50"/>
+ <val o="6ddc6" v="50"/>
+ <val o="6ebd6" v="50"/>
+ <val o="6f9e6" v="50"/>
+ <val o="707f6" v="50"/>
+ <val o="71607" v="50"/>
+ <val o="72417" v="50"/>
+ <val o="73227" v="50"/>
+ <val o="74037" v="50"/>
+ <val o="74e47" v="50"/>
+ <val o="75c57" v="50"/>
+ <val o="76a63" v="50"/>
+ <val o="77873" v="50"/>
+ <val o="78680" v="50"/>
+ <val o="7948f" v="50"/>
+ <val o="7a29f" v="50"/>
+ <val o="7b0af" v="50.1"/>
+ <val o="7bebf" v="50"/>
+ <val o="7cccf" v="50"/>
+ <val o="7dadf" v="49.9"/>
+ <val o="7e8fa" v="50"/>
+ <val o="7f70a" v="50"/>
+ <val o="8051a" v="50"/>
+ <val o="8132a" v="50"/>
+ <val o="8213a" v="50"/>
+ <val o="82f4a" v="50"/>
+ <val o="83d5a" v="50"/>
+ <val o="84b6a" v="50"/>
+ <val o="8597a" v="50"/>
+ <val o="8678b" v="50"/>
+ <val o="8759b" v="50"/>
+ <val o="883ac" v="50"/>
+ <val o="891bb" v="50"/>
+ <val o="89fca" v="50"/>
+ <val o="8adda" v="50"/>
+ <val o="8bbeb" v="50"/>
+ <val o="8c9fc" v="50"/>
+ <val o="8d80b" v="50"/>
+ <val o="8e61a" v="50.1"/>
+ <val o="8f42a" v="50"/>
+ <val o="9023a" v="50.1"/>
+ <val o="9104a" v="49.9"/>
+ <val o="91e5a" v="50"/>
+ <val o="92c6a" v="50"/>
+ <val o="93a84" v="49.9"/>
+ <val o="94885" v="50"/>
+ <val o="95694" v="50"/>
+ <val o="964a5" v="50"/>
+ <val o="972b4" v="49.9"/>
+ <val o="980c5" v="50"/>
+ <val o="98ed4" v="50"/>
+ <val o="99ce5" v="49.9"/>
+ <val o="9aaf5" v="50.1"/>
+ <val o="9b906" v="50.1"/>
+ <val o="9c716" v="50"/>
+ <val o="9d526" v="50"/>
+ <val o="9e336" v="50"/>
+ <val o="9f145" v="50"/>
+ <val o="9ff56" v="50"/>
+ <val o="a0d65" v="50"/>
+ <val o="a1b77" v="49.9"/>
+ <val o="a2986" v="50"/>
+ <val o="a3795" v="50"/>
+ <val o="a45a7" v="50"/>
+ <val o="a53b6" v="50"/>
+ <val o="a61c7" v="50"/>
+ <val o="a6fd6" v="50"/>
+ <val o="a7e00" v="50.1"/>
+ <val o="a8c00" v="49.9"/>
+ <val o="a9a05" v="50"/>
+ <val o="aa815" v="50"/>
+ <val o="ab625" v="50"/>
+ <val o="ac435" v="50"/>
+ <val o="ad245" v="50"/>
+ <val o="ae055" v="50"/>
+ <val o="aee65" v="50"/>
+ <val o="afc75" v="50"/>
+ <val o="b0a85" v="50"/>
+ <val o="b26a6" v="50"/>
+ <val o="b34b6" v="50"/>
+ <val o="b42c6" v="50"/>
+ <val o="b50d6" v="50"/>
+ <val o="b5ee7" v="50"/>
+ <val o="b6cf6" v="50"/>
+ <val o="b7b07" v="50"/>
+ <val o="b8917" v="50"/>
+ <val o="b9728" v="50"/>
+ <val o="ba537" v="50"/>
+ <val o="bb347" v="50"/>
+ <val o="bc157" v="50"/>
+ <val o="bcf67" v="50"/>
+ <val o="bdd81" v="50"/>
+ <val o="beb86" v="50"/>
+ <val o="bf995" v="50"/>
+ <val o="c07a6" v="50"/>
+ <val o="c15b5" v="50"/>
+ <val o="c23c6" v="50"/>
+ <val o="c31d5" v="49.9"/>
+ <val o="c3fe6" v="50"/>
+ <val o="c4df5" v="50"/>
+ <val o="c5c06" v="50"/>
+ <val o="c6a16" v="50"/>
+ <val o="c7826" v="50"/>
+ <val o="c8636" v="50"/>
+ <val o="c9446" v="50"/>
+ <val o="ca256" v="50"/>
+ <val o="cb066" v="50"/>
+ <val o="cbe76" v="50"/>
+ <val o="ccc87" v="50"/>
+ <val o="cda96" v="50"/>
+ <val o="ce8a8" v="50"/>
+ <val o="cf6b7" v="50"/>
+ <val o="d04c8" v="49.9"/>
+ <val o="d12d7" v="50"/>
+ <val o="d20e7" v="50"/>
+ <val o="d2f02" v="50"/>
+ <val o="d3d05" v="50"/>
+ <val o="d4b15" v="50"/>
+ <val o="d5926" v="50"/>
+ <val o="d6735" v="50"/>
+ <val o="d7546" v="50"/>
+ <val o="d8355" v="50"/>
+ <val o="d9166" v="50"/>
+ <val o="d9f75" v="50.1"/>
+ <val o="dad87" v="50"/>
+ <val o="dbb97" v="49.9"/>
+ <val o="dc9a8" v="50"/>
+ <val o="dd7b7" v="50"/>
+ <val o="de5c6" v="50"/>
+ <val o="df3d7" v="50"/>
+ <val o="e01d7" v="50"/>
+ <val o="e0fe5" v="50"/>
+ <val o="e1df5" v="50"/>
+ <val o="e2c04" v="50"/>
+ <val o="e3a14" v="50"/>
+ <val o="e4824" v="50"/>
+ <val o="e5634" v="50"/>
+ <val o="e6444" v="50"/>
+ <val o="e7255" v="50"/>
+ <val o="e806f" v="50"/>
+ <val o="e8e7f" v="50"/>
+ <val o="e9c8e" v="50"/>
+ <val o="eaa9f" v="50"/>
+ <val o="eb8ae" v="50"/>
+ <val o="ec6bf" v="50"/>
+ <val o="ed4ce" v="50"/>
+ <val o="ee2df" v="50"/>
+ <val o="ef0ef" v="50"/>
+ <val o="eff01" v="50.1"/>
+ <val o="f0d10" v="50"/>
+ <val o="f1b20" v="50"/>
+ <val o="f2930" v="50"/>
+ <val o="f3740" v="50"/>
+ <val o="f4551" v="50"/>
+ <val o="f5361" v="50"/>
+ <val o="f6172" v="50"/>
+ <val o="f6f80" v="50"/>
+ <val o="f7d91" v="50"/>
+ <val o="f8ba1" v="50"/>
+ <val o="f99b1" v="50"/>
+ <val o="fa7c0" v="50"/>
+ <val o="fb5d1" v="50"/>
+ <val o="fc3e0" v="50"/>
+ <val o="fd1fb" v="50"/>
+ <val o="fe00b" v="50"/>
+ <val o="fee1c" v="50.1"/>
+ <val o="ffc2c" v="50"/>
+ <val o="100a3b" v="50"/>
+ <val o="10184c" v="50"/>
+ <val o="10265b" v="49.9"/>
+ <val o="10346c" v="50"/>
+ <val o="10427b" v="50"/>
+ <val o="10508d" v="49.9"/>
+ <val o="105e9d" v="50"/>
+ <val o="106cad" v="50"/>
+ <val o="107abd" v="50"/>
+ <val o="1088cd" v="49.9"/>
+ <val o="1096de" v="50"/>
+ <val o="10a4ed" v="50"/>
+ <val o="10b2fe" v="49.9"/>
+ <val o="10c10d" v="50"/>
+ <val o="10cf1e" v="50"/>
+ <val o="10dd2e" v="50"/>
+ <val o="10eb66" v="50"/>
+ <val o="10f94e" v="49.9"/>
+ <val o="11075e" v="50.1"/>
+ <val o="11156d" v="50.1"/>
+ <val o="112388" v="50"/>
+ <val o="113187" v="49.9"/>
+ <val o="113fb0" v="50"/>
+ <val o="114da6" v="49.9"/>
+ <val o="115bb6" v="50"/>
+ <val o="1169c6" v="50"/>
+ <val o="1177d6" v="50"/>
+ <val o="1185e8" v="50"/>
+ <val o="1193f7" v="50"/>
+ <val o="11a208" v="50"/>
+ <val o="11b017" v="50"/>
+ <val o="11be2f" v="50.1"/>
+ <val o="11cc37" v="50"/>
+ <val o="11da47" v="50"/>
+ <val o="11e857" v="50"/>
+ <val o="11f667" v="50"/>
+ <val o="120578" v="50"/>
+ <val o="121386" v="50"/>
+ <val o="122196" v="50"/>
+ <val o="122fa6" v="50"/>
+ <val o="123db5" v="50"/>
+ <val o="124bc5" v="50"/>
+ <val o="1259d5" v="50"/>
+ <val o="1267e4" v="50"/>
+ <val o="127600" v="49.9"/>
+ <val o="128305" v="50"/>
+ <val o="129115" v="50"/>
+ <val o="129f25" v="50"/>
+ <val o="12ad35" v="49.9"/>
+ <val o="12bb45" v="49.9"/>
+ <val o="12c954" v="49.9"/>
+ <val o="12d766" v="49.9"/>
+ <val o="12e575" v="50.1"/>
+ <val o="12f386" v="50.1"/>
+ <val o="130196" v="50"/>
+ <val o="130fa6" v="50.1"/>
+ <val o="131db7" v="49.9"/>
+ <val o="132bc5" v="50"/>
+ <val o="1339d4" v="50"/>
+ <val o="1347e5" v="50"/>
+ <val o="1355f4" v="50"/>
+ <val o="136404" v="50"/>
+ <val o="137214" v="50.1"/>
+ <val o="138024" v="50"/>
+ <val o="138e33" v="50"/>
+ <val o="139c44" v="50"/>
+ <val o="13aa54" v="50"/>
+ <val o="13b865" v="50"/>
+ <val o="13c67e" v="50"/>
+ <val o="13d48e" v="50"/>
+ <val o="13e29e" v="50"/>
+ <val o="13f0ae" v="50"/>
+ <val o="13febf" v="50"/>
+ <val o="140ccf" v="50"/>
+ <val o="141adf" v="50"/>
+ <val o="1428ef" v="50"/>
+ <val o="1436ff" v="49.9"/>
+ <val o="14450f" v="50"/>
+ <val o="14531f" v="50"/>
+ <val o="146130" v="50"/>
+ <val o="146f40" v="50"/>
+ <val o="147d44" v="50"/>
+ <val o="148b57" v="50"/>
+ <val o="149965" v="50"/>
+ <val o="14a775" v="50"/>
+ <val o="14b584" v="50"/>
+ <val o="14c397" v="50"/>
+ <val o="14d1a4" v="50"/>
+ <val o="14dfb6" v="49.9"/>
+ <val o="14edc5" v="50.1"/>
+ <val o="14fbd5" v="50"/>
+ <val o="1509e5" v="50"/>
+ <val o="1517ff" v="50"/>
+ <val o="152605" v="50"/>
+ <val o="153415" v="50"/>
+ <val o="154225" v="50"/>
+ <val o="155035" v="50"/>
+ <val o="155e45" v="50"/>
+ <val o="156c55" v="50"/>
+ <val o="157a65" v="50"/>
+ <val o="158875" v="49.9"/>
+ <val o="159686" v="50"/>
+ <val o="15a495" v="50"/>
+ <val o="15b2a6" v="50"/>
+ <val o="15c0b6" v="50"/>
+ <val o="15cec6" v="50"/>
+ <val o="15dcd5" v="50"/>
+ <val o="15eae6" v="49.9"/>
+ <val o="15f8f5" v="50"/>
+ <val o="160706" v="49.9"/>
+ <val o="161517" v="50"/>
+ <val o="162326" v="49.9"/>
+ <val o="163137" v="50"/>
+ <val o="163f46" v="50"/>
+ <val o="164d57" v="50"/>
+ <val o="165b67" v="50"/>
+ <val o="166982" v="50"/>
+ <val o="167786" v="50"/>
+ <val o="168596" v="50"/>
+ <val o="1693a6" v="50"/>
+ <val o="16a1b5" v="49.9"/>
+ <val o="16afc6" v="50"/>
+ <val o="16bdd5" v="50"/>
+ <val o="16cbe6" v="50"/>
+ <val o="16d9f6" v="50"/>
+ <val o="16e807" v="49.9"/>
+ <val o="16f616" v="50"/>
+ <val o="170429" v="50"/>
+ <val o="171236" v="50"/>
+ <val o="172047" v="50"/>
+ <val o="172e57" v="50"/>
+ <val o="173c67" v="50"/>
+ <val o="174a77" v="50"/>
+ <val o="175887" v="50"/>
+ <val o="176694" v="49.9"/>
+ <val o="1774a3" v="50"/>
+ <val o="1782b3" v="50"/>
+ <val o="1790c5" v="50"/>
+ <val o="179ed4" v="50"/>
+ <val o="17ace4" v="50.1"/>
+ <val o="17bafd" v="50.1"/>
+ <val o="17c90f" v="50"/>
+ <val o="17d71e" v="50"/>
+ <val o="17e52f" v="50"/>
+ <val o="17f33f" v="50"/>
+ <val o="18014f" v="50"/>
+ <val o="180f5f" v="50"/>
+ <val o="181d6e" v="50.1"/>
+ <val o="182b7f" v="50"/>
+ <val o="18398f" v="50"/>
+ <val o="1847a1" v="50"/>
+ <val o="1855af" v="50"/>
+ <val o="1863c0" v="50"/>
+ <val o="1871cf" v="49.9"/>
+ <val o="187fe0" v="50"/>
+ <val o="188def" v="50"/>
+ <val o="189c00" v="50"/>
+ <val o="18b80d" v="50"/>
+ <val o="18c61c" v="49.9"/>
+ <val o="18d42c" v="50"/>
+ <val o="18e23b" v="50"/>
+ <val o="18f04b" v="50"/>
+ <val o="18fe5e" v="50"/>
+ <val o="190c76" v="50"/>
+ <val o="191a86" v="50"/>
+ <val o="192896" v="50"/>
+ <val o="1936a6" v="50"/>
+ <val o="1944b7" v="50"/>
+ <val o="1952c6" v="49.9"/>
+ <val o="1960d7" v="50"/>
+ <val o="196ee6" v="50"/>
+ <val o="197cf8" v="50"/>
+ <val o="198b0f" v="50"/>
+ <val o="19991f" v="50"/>
+ <val o="19b541" v="50"/>
+ <val o="19c34d" v="50"/>
+ <val o="19d15e" v="50"/>
+ <val o="19df80" v="50"/>
+ <val o="19ed90" v="50"/>
+ <val o="19eebe" v="50"/>
+ <val o="19fb8e" v="49.9"/>
+ <val o="1a09a0" v="50"/>
+ <val o="1a17ae" v="49.9"/>
+ <val o="1a25be" v="50"/>
+ <val o="1a33cd" v="50"/>
+ <val o="1a41dd" v="50"/>
+ <val o="1a4fed" v="50"/>
+ <val o="1a5e08" v="50"/>
+ <val o="1a6c05" v="50"/>
+ <val o="1a7a15" v="50.1"/>
+ <val o="1a8826" v="50"/>
+ <val o="1a9637" v="50"/>
+ <val o="1aa445" v="50"/>
+ <val o="1ab255" v="50"/>
+ <val o="1ac065" v="50"/>
+ <val o="1ace75" v="50"/>
+ <val o="1adc87" v="50"/>
+ <val o="1aea96" v="49.9"/>
+ <val o="1af8a7" v="50"/>
+ <val o="1b06b7" v="50"/>
+ <val o="1b14c6" v="50"/>
+ <val o="1c7460" v="50"/>
+ <val o="1c8270" v="50"/>
+ <val o="1c907e" v="50"/>
+ <val o="1c9e8f" v="50"/>
+ <val o="1caca2" v="50"/>
+ <val o="1cbab1" v="50"/>
+ <val o="1cc8c1" v="50"/>
+ <val o="1cd6d0" v="50"/>
+ <val o="1ce4de" v="50"/>
+ <val o="1cf2f0" v="50"/>
+ <val o="1d0109" v="50"/>
+ <val o="1d0f06" v="50"/>
+ <val o="1d1d15" v="50"/>
+ <val o="1d2b25" v="50"/>
+ <val o="1d3935" v="50"/>
+ <val o="1d4745" v="50"/>
+ <val o="1d5555" v="50"/>
+ <val o="1d6366" v="50"/>
+ <val o="1d7175" v="50"/>
+ <val o="1d7f86" v="50"/>
+ <val o="1d8d95" v="50"/>
+ <val o="1d9ba6" v="50"/>
+ <val o="1da9b6" v="50"/>
+ <val o="1db7c7" v="50"/>
+ <val o="1dc5d5" v="49.9"/>
+ <val o="1dd3e6" v="49.9"/>
+ <val o="1de1f5" v="50"/>
+ <val o="1df006" v="50"/>
+ <val o="1dfe16" v="50"/>
+ <val o="1e0c26" v="49.9"/>
+ <val o="1e1a36" v="49.9"/>
+ <val o="1e2847" v="50"/>
+ <val o="1e3659" v="50"/>
+ <val o="1e4467" v="50"/>
+ <val o="1e5281" v="50"/>
+ <val o="1e6086" v="50"/>
+ <val o="1e6e96" v="50"/>
+ <val o="1e7ca6" v="50"/>
+ <val o="1e8ab5" v="50"/>
+ <val o="1e98c6" v="49.9"/>
+ <val o="1ea6d5" v="50"/>
+ <val o="1eb4e6" v="50"/>
+ <val o="1ec2f6" v="50"/>
+ <val o="1ed106" v="50"/>
+ <val o="1edf16" v="50"/>
+ <val o="1eed26" v="49.9"/>
+ <val o="1efb36" v="50"/>
+ <val o="1f0946" v="50"/>
+ <val o="1f1756" v="50"/>
+ <val o="1f2566" v="50"/>
+ <val o="1f3376" v="50"/>
+ <val o="1f4187" v="50"/>
+ <val o="1f4f96" v="50"/>
+ <val o="1f5da7" v="50"/>
+ <val o="1f6bb6" v="50"/>
+ <val o="1f79c7" v="50.1"/>
+ <val o="1f87d6" v="50.1"/>
+ <val o="1f95e7" v="50"/>
+ <val o="1fa401" v="50"/>
+ <val o="1fb204" v="50"/>
+ <val o="1fc016" v="50"/>
+ <val o="1fce25" v="49.9"/>
+ <val o="1fdc35" v="50"/>
+ <val o="1fea45" v="50"/>
+ <val o="1ff855" v="50"/>
+ <val o="200665" v="49.9"/>
+ <val o="201475" v="50"/>
+ <val o="202286" v="49.9"/>
+ <val o="203095" v="49.9"/>
+ <val o="203ea5" v="50"/>
+ <val o="204cb6" v="50"/>
+ <val o="205ac6" v="50"/>
+ <val o="2068d6" v="50"/>
+ <val o="2076e6" v="50"/>
+ <val o="2084f6" v="50"/>
+ <val o="209306" v="50"/>
+ <val o="20a116" v="50"/>
+ <val o="20af26" v="49.9"/>
+ <val o="20bd37" v="49.9"/>
+ <val o="20cb46" v="49.9"/>
+ <val o="20d957" v="50"/>
+ <val o="20e767" v="50"/>
+ <val o="20f581" v="50"/>
+ <val o="210386" v="50"/>
+ <val o="211194" v="50"/>
+ <val o="211fa5" v="50"/>
+ <val o="212db5" v="50"/>
+ <val o="213bc5" v="50"/>
+ <val o="2149d6" v="50"/>
+ <val o="2157e5" v="50"/>
+ <val o="2165f6" v="50"/>
+ <val o="217406" v="50"/>
+ <val o="218217" v="50"/>
+ <val o="219026" v="50"/>
+ <val o="219e39" v="50"/>
+ <val o="21ac46" v="50"/>
+ <val o="21ba57" v="50"/>
+ <val o="21c867" v="50"/>
+ <val o="21d677" v="50"/>
+ <val o="21e487" v="50"/>
+ <val o="21f296" v="50"/>
+ <val o="2200a6" v="50"/>
+ <val o="220eb7" v="50"/>
+ <val o="221cc6" v="50"/>
+ <val o="222ad7" v="50"/>
+ <val o="2238e7" v="50"/>
+ <val o="224701" v="49.9"/>
+ <val o="225505" v="50"/>
+ <val o="226315" v="50"/>
+ <val o="227125" v="50"/>
+ <val o="227f35" v="50"/>
+ <val o="228d45" v="50"/>
+ <val o="229b54" v="50"/>
+ <val o="22a965" v="50"/>
+ <val o="22b776" v="50"/>
+ <val o="22c586" v="50"/>
+ <val o="22d397" v="50"/>
+ <val o="22e1a6" v="50"/>
+ <val o="22efb6" v="50.1"/>
+ <val o="22fdc7" v="50"/>
+ <val o="230bd7" v="50"/>
+ <val o="2319e6" v="50"/>
+ <val o="2327f6" v="50"/>
+ <val o="23361b" v="50"/>
+ <val o="234416" v="50"/>
+ <val o="235226" v="50"/>
+ <val o="236037" v="50"/>
+ <val o="236e46" v="49.9"/>
+ <val o="237c57" v="50"/>
+ <val o="238a66" v="50.1"/>
+ <val o="239881" v="50"/>
+ <val o="23a685" v="50"/>
+ <val o="23b495" v="50"/>
+ <val o="23c2a4" v="50"/>
+ <val o="23d0b5" v="50"/>
+ <val o="23dec4" v="50"/>
+ <val o="23ecd5" v="49.9"/>
+ <val o="23fae4" v="50"/>
+ <val o="2408f6" v="50"/>
+ <val o="241706" v="50"/>
+ <val o="242518" v="49.9"/>
+ <val o="243325" v="50"/>
+ <val o="244137" v="50"/>
+ <val o="244f46" v="50.1"/>
+ <val o="246b66" v="50"/>
+ <val o="247976" v="50"/>
+ <val o="248786" v="49.9"/>
+ <val o="24957e" v="50"/>
+ <val o="24a38f" v="49.9"/>
+ <val o="24b19c" v="50"/>
+ <val o="24bfac" v="50"/>
+ <val o="24cdbc" v="50"/>
+ <val o="24dbcd" v="50"/>
+ <val o="24e9e5" v="50"/>
+ <val o="24f808" v="50"/>
+ <val o="250616" v="50"/>
+ <val o="251426" v="49.9"/>
+ <val o="252236" v="50"/>
+ <val o="253047" v="50"/>
+ <val o="253e56" v="50"/>
+ <val o="254c67" v="50"/>
+ <val o="255a76" v="50"/>
+ <val o="256887" v="50"/>
+ <val o="257697" v="50"/>
+ <val o="2584a8" v="50"/>
+ <val o="2592b6" v="50"/>
+ <val o="25a0c7" v="50"/>
+ <val o="25aed7" v="50"/>
+ <val o="25bce7" v="50"/>
+ <val o="25caf8" v="50"/>
+ <val o="25d907" v="49.9"/>
+ <val o="25e718" v="50"/>
+ <val o="25f527" v="50"/>
+ <val o="260338" v="50"/>
+ <val o="261149" v="50"/>
+ <val o="261f59" v="50"/>
+ <val o="262d68" v="50.1"/>
+ <val o="263b83" v="50"/>
+ <val o="264986" v="50"/>
+ <val o="265795" v="50"/>
+ <val o="2665a6" v="50"/>
+ <val o="2673b5" v="50"/>
+ <val o="2681c6" v="50"/>
+ <val o="268fd5" v="50"/>
+ <val o="269de6" v="50"/>
+ <val o="26abf6" v="50"/>
+ <val o="26ba06" v="50"/>
+ <val o="26c817" v="50"/>
+ <val o="26d62b" v="50"/>
+ <val o="26e436" v="50"/>
+ <val o="26f247" v="50"/>
+ <val o="270057" v="50"/>
+ <val o="270e67" v="50"/>
+ <val o="271c77" v="50"/>
+ <val o="272a87" v="50"/>
+ <val o="273897" v="50"/>
+ <val o="2746a8" v="50"/>
+ <val o="2754b9" v="50"/>
+ <val o="2762c7" v="49.9"/>
+ <val o="2770d8" v="50"/>
+ <val o="277ee7" v="50"/>
+ </par>
+ <par memind="8612" h="3dc1a8de">
+ <val o="0" v="25.07"/>
+ <val o="e08" v="24.067"/>
+ <val o="1c32" v="23.438"/>
+ <val o="2a3c" v="23.245"/>
+ <val o="3835" v="22.784"/>
+ <val o="4645" v="22.746"/>
+ <val o="5455" v="26.297"/>
+ <val o="6265" v="28.878"/>
+ <val o="7075" v="34.451"/>
+ <val o="7e85" v="40.017"/>
+ <val o="8c96" v="40.572"/>
+ <val o="9aa5" v="38.682"/>
+ <val o="a8b6" v="35.869"/>
+ <val o="b6c5" v="34.12"/>
+ <val o="c4d7" v="0.035"/>
+ <val o="d30b" v="0.036"/>
+ <val o="e0f6" v="0.035"/>
+ <val o="ef06" v="0.037"/>
+ <val o="fd17" v="0.038"/>
+ <val o="10b27" v="0.037"/>
+ <val o="11937" v="0.037"/>
+ <val o="12746" v="0.036"/>
+ <val o="13556" v="0.035"/>
+ <val o="14366" v="0.036"/>
+ <val o="15181" v="0.037"/>
+ <val o="15f85" v="0.036"/>
+ <val o="16d95" v="0.036"/>
+ <val o="17ba4" v="0.035"/>
+ <val o="189b5" v="0.038"/>
+ <val o="197c4" v="0.036"/>
+ <val o="1a5d5" v="0.037"/>
+ <val o="1b3e6" v="0.034"/>
+ <val o="1c1f6" v="0.037"/>
+ <val o="1d005" v="0.035"/>
+ <val o="1de15" v="0.033"/>
+ <val o="1ec25" v="0.035"/>
+ <val o="1fa36" v="0.035"/>
+ <val o="20845" v="0.037"/>
+ <val o="21656" v="0.035"/>
+ <val o="22465" v="0.037"/>
+ <val o="23276" v="0.035"/>
+ <val o="24086" v="0.034"/>
+ <val o="24e99" v="0.035"/>
+ <val o="25ca7" v="0.035"/>
+ <val o="26ab7" v="0.035"/>
+ <val o="278c6" v="0.036"/>
+ <val o="286d6" v="0.035"/>
+ <val o="294e6" v="0.034"/>
+ <val o="2a301" v="0.036"/>
+ <val o="2b105" v="0.034"/>
+ <val o="2bf15" v="0.034"/>
+ <val o="2cd25" v="0.036"/>
+ <val o="2db35" v="0.034"/>
+ <val o="2e946" v="0.033"/>
+ <val o="2f755" v="0.034"/>
+ <val o="30566" v="0.035"/>
+ <val o="31375" v="0.035"/>
+ <val o="3219e" v="0.035"/>
+ <val o="32f96" v="0.036"/>
+ <val o="33da6" v="0.035"/>
+ <val o="34bb6" v="0.035"/>
+ <val o="359de" v="0.033"/>
+ <val o="367d6" v="0.035"/>
+ <val o="375e6" v="0.034"/>
+ <val o="3840e" v="0.033"/>
+ <val o="3921e" v="0.035"/>
+ <val o="3a016" v="0.035"/>
+ <val o="3ae27" v="0.036"/>
+ <val o="3bc36" v="0.035"/>
+ <val o="3ca47" v="0.035"/>
+ <val o="3d856" v="0.036"/>
+ <val o="3e667" v="0.035"/>
+ <val o="3f481" v="0.037"/>
+ <val o="40285" v="0.034"/>
+ <val o="41095" v="0.035"/>
+ <val o="41ea5" v="0.035"/>
+ <val o="42cb5" v="0.035"/>
+ <val o="43ac5" v="0.036"/>
+ <val o="448d5" v="0.038"/>
+ <val o="456e6" v="0.036"/>
+ <val o="464f5" v="0.039"/>
+ <val o="480ff" v="0.036"/>
+ <val o="48f0e" v="0.036"/>
+ <val o="49d1d" v="0.038"/>
+ <val o="4ab46" v="0.036"/>
+ <val o="4b955" v="0.037"/>
+ <val o="4c769" v="0.036"/>
+ <val o="4d577" v="0.036"/>
+ <val o="4e387" v="0.036"/>
+ <val o="4f196" v="0.036"/>
+ <val o="4ffa6" v="0.036"/>
+ <val o="50dd0" v="0.038"/>
+ <val o="51bc6" v="0.036"/>
+ <val o="529d6" v="0.036"/>
+ <val o="537e7" v="0.035"/>
+ <val o="54600" v="0.036"/>
+ <val o="55406" v="0.034"/>
+ <val o="56215" v="0.035"/>
+ <val o="57026" v="0.034"/>
+ <val o="57e36" v="0.036"/>
+ <val o="58c46" v="0.035"/>
+ <val o="59a70" v="0.04"/>
+ <val o="5a867" v="0.034"/>
+ <val o="5b676" v="0.035"/>
+ <val o="5c487" v="0.036"/>
+ <val o="5d296" v="0.037"/>
+ <val o="5e0a9" v="0.036"/>
+ <val o="5eeb8" v="0.039"/>
+ <val o="5fcc6" v="0.036"/>
+ <val o="60ad7" v="0.035"/>
+ <val o="618e7" v="0.036"/>
+ <val o="626f7" v="0.035"/>
+ <val o="63507" v="0.036"/>
+ <val o="64317" v="0.037"/>
+ <val o="65127" v="0.039"/>
+ <val o="65f37" v="0.037"/>
+ <val o="66d46" v="0.035"/>
+ <val o="67b57" v="0.036"/>
+ <val o="68967" v="0.035"/>
+ <val o="69782" v="0.035"/>
+ <val o="6a586" v="0.037"/>
+ <val o="6b395" v="0.035"/>
+ <val o="6c1a6" v="0.037"/>
+ <val o="6cfb5" v="0.035"/>
+ <val o="6ddc6" v="0.033"/>
+ <val o="6ebd6" v="0.033"/>
+ <val o="6f9e6" v="0.035"/>
+ <val o="707f6" v="0.035"/>
+ <val o="71607" v="0.037"/>
+ <val o="72417" v="0.037"/>
+ <val o="73227" v="0.037"/>
+ <val o="74037" v="0.037"/>
+ <val o="74e47" v="0.037"/>
+ <val o="75c57" v="0.04"/>
+ <val o="76a63" v="0.036"/>
+ <val o="77873" v="0.035"/>
+ <val o="78680" v="0.037"/>
+ <val o="7948f" v="0.036"/>
+ <val o="7a29f" v="0.036"/>
+ <val o="7b0af" v="0.036"/>
+ <val o="7bebf" v="0.036"/>
+ <val o="7cccf" v="0.037"/>
+ <val o="7dadf" v="0.036"/>
+ <val o="7e8fa" v="0.035"/>
+ <val o="7f70a" v="0.035"/>
+ <val o="8051a" v="0.036"/>
+ <val o="8132a" v="0.034"/>
+ <val o="8213a" v="0.035"/>
+ <val o="82f4a" v="0.036"/>
+ <val o="83d5a" v="0.035"/>
+ <val o="84b6a" v="0.034"/>
+ <val o="8597a" v="0.035"/>
+ <val o="8678b" v="0.036"/>
+ <val o="8759b" v="0.034"/>
+ <val o="883ac" v="0.037"/>
+ <val o="891bb" v="0.037"/>
+ <val o="89fca" v="0.035"/>
+ <val o="8adda" v="0.035"/>
+ <val o="8bbeb" v="0.035"/>
+ <val o="8c9fc" v="0.035"/>
+ <val o="8d80b" v="0.034"/>
+ <val o="8e61a" v="0.035"/>
+ <val o="8f42a" v="0.034"/>
+ <val o="9023a" v="0.036"/>
+ <val o="9104a" v="0.035"/>
+ <val o="91e5a" v="0.035"/>
+ <val o="92c6a" v="0.034"/>
+ <val o="93a84" v="0.035"/>
+ <val o="94885" v="0.036"/>
+ <val o="95694" v="0.034"/>
+ <val o="964a5" v="0.034"/>
+ <val o="972b4" v="0.034"/>
+ <val o="980c5" v="0.034"/>
+ <val o="98ed4" v="0.035"/>
+ <val o="99ce5" v="0.037"/>
+ <val o="9aaf5" v="0.034"/>
+ <val o="9b906" v="0.036"/>
+ <val o="9c716" v="0.037"/>
+ <val o="9d526" v="0.035"/>
+ <val o="9e336" v="0.035"/>
+ <val o="9f145" v="0.035"/>
+ <val o="9ff56" v="0.035"/>
+ <val o="a0d65" v="0.036"/>
+ <val o="a1b77" v="36.117"/>
+ <val o="a2986" v="17.613"/>
+ <val o="a3795" v="8.357"/>
+ <val o="a45a7" v="5.957"/>
+ <val o="a53b6" v="7.134"/>
+ <val o="a61c7" v="8.646"/>
+ <val o="a6fd6" v="6.429"/>
+ <val o="a7e00" v="10.235"/>
+ <val o="a8c00" v="14.027"/>
+ <val o="a9a05" v="3.549"/>
+ <val o="aa815" v="3.8"/>
+ <val o="ab625" v="6.093"/>
+ <val o="ac435" v="5.204"/>
+ <val o="ad245" v="7.526"/>
+ <val o="ae055" v="11.39"/>
+ <val o="aee65" v="0.954"/>
+ <val o="afc75" v="5.773"/>
+ <val o="b0a85" v="21.019"/>
+ <val o="b26a6" v="22.636"/>
+ <val o="b34b6" v="19.316"/>
+ <val o="b42c6" v="1.265"/>
+ <val o="b50d6" v="3.13"/>
+ <val o="b5ee7" v="6.091"/>
+ <val o="b6cf6" v="7.273"/>
+ <val o="b7b07" v="9.373"/>
+ <val o="b8917" v="7.711"/>
+ <val o="b9728" v="8.183"/>
+ <val o="ba537" v="9.843"/>
+ <val o="bb347" v="5.251"/>
+ <val o="bc157" v="2.646"/>
+ <val o="bcf67" v="7.175"/>
+ <val o="bdd81" v="19.697"/>
+ <val o="beb86" v="4.703"/>
+ <val o="bf995" v="5.017"/>
+ <val o="c07a6" v="5.028"/>
+ <val o="c15b5" v="4.406"/>
+ <val o="c23c6" v="5.164"/>
+ <val o="c31d5" v="10.951"/>
+ <val o="c3fe6" v="5.096"/>
+ <val o="c4df5" v="10.032"/>
+ <val o="c5c06" v="4.084"/>
+ <val o="c6a16" v="5.223"/>
+ <val o="c7826" v="6.622"/>
+ <val o="c8636" v="2.571"/>
+ <val o="c9446" v="3.766"/>
+ <val o="ca256" v="2.925"/>
+ <val o="cb066" v="4.239"/>
+ <val o="cbe76" v="2.442"/>
+ <val o="ccc87" v="10.653"/>
+ <val o="cda96" v="15.045"/>
+ <val o="ce8a8" v="10.497"/>
+ <val o="cf6b7" v="14.243"/>
+ <val o="d04c8" v="11.318"/>
+ <val o="d12d7" v="7.26"/>
+ <val o="d20e7" v="3.278"/>
+ <val o="d2f02" v="12.768"/>
+ <val o="d3d05" v="8.863"/>
+ <val o="d4b15" v="8.423"/>
+ <val o="d5926" v="7.503"/>
+ <val o="d6735" v="7.803"/>
+ <val o="d7546" v="10.91"/>
+ <val o="d8355" v="5.743"/>
+ <val o="d9166" v="2.082"/>
+ <val o="d9f75" v="7.751"/>
+ <val o="dad87" v="16.785"/>
+ <val o="dbb97" v="18.467"/>
+ <val o="dc9a8" v="18.801"/>
+ <val o="dd7b7" v="16.008"/>
+ <val o="de5c6" v="13.629"/>
+ <val o="df3d7" v="14.479"/>
+ <val o="e01d7" v="14.927"/>
+ <val o="e0fe5" v="14.349"/>
+ <val o="e1df5" v="15.502"/>
+ <val o="e2c04" v="20.07"/>
+ <val o="e3a14" v="20.011"/>
+ <val o="e4824" v="16.357"/>
+ <val o="e5634" v="17.03"/>
+ <val o="e6444" v="11.901"/>
+ <val o="e7255" v="10.138"/>
+ <val o="e806f" v="8.731"/>
+ <val o="e8e7f" v="14.357"/>
+ <val o="e9c8e" v="4.86"/>
+ <val o="eaa9f" v="4.149"/>
+ <val o="eb8ae" v="6.019"/>
+ <val o="ec6bf" v="14.635"/>
+ <val o="ed4ce" v="9.989"/>
+ <val o="ee2df" v="11.96"/>
+ <val o="ef0ef" v="15.422"/>
+ <val o="eff01" v="22.742"/>
+ <val o="f0d10" v="22.428"/>
+ <val o="f1b20" v="24.11"/>
+ <val o="f2930" v="23.076"/>
+ <val o="f3740" v="23.241"/>
+ <val o="f4551" v="24.018"/>
+ <val o="f5361" v="25.989"/>
+ <val o="f6172" v="24.748"/>
+ <val o="f6f80" v="25.323"/>
+ <val o="f7d91" v="23.122"/>
+ <val o="f8ba1" v="19.403"/>
+ <val o="f99b1" v="19.28"/>
+ <val o="fa7c0" v="16.12"/>
+ <val o="fb5d1" v="16.228"/>
+ <val o="fc3e0" v="16.654"/>
+ <val o="fd1fb" v="14.2"/>
+ <val o="fe00b" v="14.054"/>
+ <val o="fee1c" v="9.557"/>
+ <val o="ffc2c" v="9.072"/>
+ <val o="100a3b" v="8.333"/>
+ <val o="10184c" v="9.771"/>
+ <val o="10265b" v="14.337"/>
+ <val o="10346c" v="16.049"/>
+ <val o="10427b" v="19.911"/>
+ <val o="10508d" v="23.238"/>
+ <val o="105e9d" v="23.213"/>
+ <val o="106cad" v="25.179"/>
+ <val o="107abd" v="21.591"/>
+ <val o="1088cd" v="19.665"/>
+ <val o="1096de" v="21.079"/>
+ <val o="10a4ed" v="21.109"/>
+ <val o="10b2fe" v="22.363"/>
+ <val o="10c10d" v="25.172"/>
+ <val o="10cf1e" v="23.223"/>
+ <val o="10dd2e" v="20.912"/>
+ <val o="10eb66" v="22.017"/>
+ <val o="10f94e" v="18.729"/>
+ <val o="11075e" v="16.761"/>
+ <val o="11156d" v="13.145"/>
+ <val o="112388" v="13.912"/>
+ <val o="113187" v="8.712"/>
+ <val o="113fb0" v="8.106"/>
+ <val o="114da6" v="8.195"/>
+ <val o="115bb6" v="8.301"/>
+ <val o="1169c6" v="10.111"/>
+ <val o="1177d6" v="14.213"/>
+ <val o="1185e8" v="15.617"/>
+ <val o="1193f7" v="19.095"/>
+ <val o="11a208" v="23.986"/>
+ <val o="11b017" v="20.919"/>
+ <val o="11be2f" v="26.06"/>
+ <val o="11cc37" v="21.493"/>
+ <val o="11da47" v="21.006"/>
+ <val o="11e857" v="22.144"/>
+ <val o="11f667" v="19.124"/>
+ <val o="120578" v="0.019"/>
+ <val o="121386" v="0.021"/>
+ <val o="122196" v="0.021"/>
+ <val o="122fa6" v="0.018"/>
+ <val o="123db5" v="0.015"/>
+ <val o="124bc5" v="0.016"/>
+ <val o="1259d5" v="0.011"/>
+ <val o="1267e4" v="0.01"/>
+ <val o="127600" v="0.011"/>
+ <val o="128305" v="0.01"/>
+ <val o="129115" v="0.01"/>
+ <val o="129f25" v="0.01"/>
+ <val o="12ad35" v="0.009"/>
+ <val o="12bb45" v="0.006"/>
+ <val o="12c954" v="0.009"/>
+ <val o="12d766" v="0.011"/>
+ <val o="12e575" v="0.017"/>
+ <val o="12f386" v="0.012"/>
+ <val o="130196" v="0.019"/>
+ <val o="130fa6" v="0.014"/>
+ <val o="131db7" v="0.015"/>
+ <val o="132bc5" v="0.015"/>
+ <val o="1339d4" v="0.279"/>
+ <val o="1347e5" v="0.096"/>
+ <val o="1355f4" v="0.141"/>
+ <val o="136404" v="0.207"/>
+ <val o="137214" v="0.218"/>
+ <val o="138024" v="0.213"/>
+ <val o="138e33" v="0.214"/>
+ <val o="139c44" v="0.075"/>
+ <val o="13aa54" v="0.05"/>
+ <val o="13b865" v="0.034"/>
+ <val o="13c67e" v="0.449"/>
+ <val o="13d48e" v="0.217"/>
+ <val o="13e29e" v="0.167"/>
+ <val o="13f0ae" v="0.158"/>
+ <val o="13febf" v="0.232"/>
+ <val o="140ccf" v="0.339"/>
+ <val o="141adf" v="0.212"/>
+ <val o="1428ef" v="0.044"/>
+ <val o="1436ff" v="0.033"/>
+ <val o="14450f" v="0.025"/>
+ <val o="14531f" v="0.023"/>
+ <val o="146130" v="0.058"/>
+ <val o="146f40" v="0.145"/>
+ <val o="147d44" v="0.064"/>
+ <val o="148b57" v="0.08"/>
+ <val o="149965" v="0.067"/>
+ <val o="14a775" v="0.111"/>
+ <val o="14b584" v="0.05"/>
+ <val o="14c397" v="0.239"/>
+ <val o="14d1a4" v="0.206"/>
+ <val o="14dfb6" v="0.163"/>
+ <val o="14edc5" v="0.063"/>
+ <val o="14fbd5" v="0.027"/>
+ <val o="1509e5" v="0.077"/>
+ <val o="1517ff" v="0.153"/>
+ <val o="152605" v="0.181"/>
+ <val o="153415" v="0.149"/>
+ <val o="154225" v="0.157"/>
+ <val o="155035" v="0.166"/>
+ <val o="155e45" v="0.216"/>
+ <val o="156c55" v="0.306"/>
+ <val o="157a65" v="0.168"/>
+ <val o="158875" v="0.145"/>
+ <val o="159686" v="0.252"/>
+ <val o="15a495" v="0.213"/>
+ <val o="15b2a6" v="0.19"/>
+ <val o="15c0b6" v="0.111"/>
+ <val o="15cec6" v="0.114"/>
+ <val o="15dcd5" v="0.107"/>
+ <val o="15eae6" v="0.115"/>
+ <val o="15f8f5" v="0.302"/>
+ <val o="160706" v="0.03"/>
+ <val o="161517" v="0.06"/>
+ <val o="162326" v="0.048"/>
+ <val o="163137" v="0.069"/>
+ <val o="163f46" v="0.063"/>
+ <val o="164d57" v="0.029"/>
+ <val o="165b67" v="0.105"/>
+ <val o="166982" v="0.096"/>
+ <val o="167786" v="0.142"/>
+ <val o="168596" v="0.101"/>
+ <val o="1693a6" v="0.092"/>
+ <val o="16a1b5" v="0.071"/>
+ <val o="16afc6" v="0.067"/>
+ <val o="16bdd5" v="0.17"/>
+ <val o="16cbe6" v="0.212"/>
+ <val o="16d9f6" v="0.089"/>
+ <val o="16e807" v="0.607"/>
+ <val o="16f616" v="0.675"/>
+ <val o="170429" v="0.723"/>
+ <val o="171236" v="0.477"/>
+ <val o="172047" v="0.477"/>
+ <val o="172e57" v="0.491"/>
+ <val o="173c67" v="0.496"/>
+ <val o="174a77" v="0.579"/>
+ <val o="175887" v="0.62"/>
+ <val o="176694" v="35.716"/>
+ <val o="1774a3" v="33.973"/>
+ <val o="1782b3" v="35.295"/>
+ <val o="1790c5" v="32.429"/>
+ <val o="179ed4" v="28.433"/>
+ <val o="17ace4" v="29.24"/>
+ <val o="17bafd" v="30.943"/>
+ <val o="17c90f" v="28.05"/>
+ <val o="17d71e" v="27.792"/>
+ <val o="17e52f" v="28.102"/>
+ <val o="17f33f" v="25.534"/>
+ <val o="18014f" v="25.021"/>
+ <val o="180f5f" v="30.046"/>
+ <val o="181d6e" v="32.772"/>
+ <val o="182b7f" v="38.186"/>
+ <val o="18398f" v="64.34"/>
+ <val o="1847a1" v="63.582"/>
+ <val o="1855af" v="60.895"/>
+ <val o="1863c0" v="57.167"/>
+ <val o="1871cf" v="59.436"/>
+ <val o="187fe0" v="56.655"/>
+ <val o="188def" v="60.597"/>
+ <val o="189c00" v="56.836"/>
+ <val o="18b80d" v="37.581"/>
+ <val o="18c61c" v="40.1"/>
+ <val o="18d42c" v="38.214"/>
+ <val o="18e23b" v="32.175"/>
+ <val o="18f04b" v="30.662"/>
+ <val o="18fe5e" v="26.933"/>
+ <val o="190c76" v="21.269"/>
+ <val o="191a86" v="21.646"/>
+ <val o="192896" v="21.244"/>
+ <val o="1936a6" v="20.855"/>
+ <val o="1944b7" v="19.588"/>
+ <val o="1952c6" v="20.809"/>
+ <val o="1960d7" v="25.64"/>
+ <val o="196ee6" v="29.166"/>
+ <val o="197cf8" v="31.236"/>
+ <val o="198b0f" v="28.424"/>
+ <val o="19991f" v="32.717"/>
+ <val o="19b541" v="32.231"/>
+ <val o="19c34d" v="29.816"/>
+ <val o="19d15e" v="29.219"/>
+ <val o="19df80" v="29.861"/>
+ <val o="19ed90" v="29.093"/>
+ <val o="19eebe" v="29.004"/>
+ <val o="19fb8e" v="10.445"/>
+ <val o="1a09a0" v="18.158"/>
+ <val o="1a17ae" v="23.713"/>
+ <val o="1a25be" v="25.84"/>
+ <val o="1a33cd" v="13.692"/>
+ <val o="1a41dd" v="15.619"/>
+ <val o="1a4fed" v="22.235"/>
+ <val o="1a5e08" v="20.533"/>
+ <val o="1a6c05" v="14.806"/>
+ <val o="1a7a15" v="17.786"/>
+ <val o="1a8826" v="18.205"/>
+ <val o="1a9637" v="14.86"/>
+ <val o="1aa445" v="11.317"/>
+ <val o="1ab255" v="6.403"/>
+ <val o="1ac065" v="13.389"/>
+ <val o="1ace75" v="18.094"/>
+ <val o="1adc87" v="16.688"/>
+ <val o="1aea96" v="16.251"/>
+ <val o="1af8a7" v="17.902"/>
+ <val o="1b06b7" v="16.864"/>
+ <val o="1b14c6" v="16.076"/>
+ <val o="1c7460" v="4.33"/>
+ <val o="1c8270" v="4.33"/>
+ <val o="1c907e" v="21.221"/>
+ <val o="1c9e8f" v="20.86"/>
+ <val o="1caca2" v="22.903"/>
+ <val o="1cbab1" v="22.672"/>
+ <val o="1cc8c1" v="34.711"/>
+ <val o="1cd6d0" v="33.792"/>
+ <val o="1ce4de" v="32.717"/>
+ <val o="1cf2f0" v="33.04"/>
+ <val o="1d0109" v="34.047"/>
+ <val o="1d0f06" v="36.536"/>
+ <val o="1d1d15" v="36.673"/>
+ <val o="1d2b25" v="36.752"/>
+ <val o="1d3935" v="37.932"/>
+ <val o="1d4745" v="37.857"/>
+ <val o="1d5555" v="37.029"/>
+ <val o="1d6366" v="32.844"/>
+ <val o="1d7175" v="31.917"/>
+ <val o="1d7f86" v="31.363"/>
+ <val o="1d8d95" v="15.349"/>
+ <val o="1d9ba6" v="17.623"/>
+ <val o="1da9b6" v="17.658"/>
+ <val o="1db7c7" v="16.597"/>
+ <val o="1dc5d5" v="17.621"/>
+ <val o="1dd3e6" v="18.017"/>
+ <val o="1de1f5" v="32.337"/>
+ <val o="1df006" v="37.113"/>
+ <val o="1dfe16" v="36.896"/>
+ <val o="1e0c26" v="37.646"/>
+ <val o="1e1a36" v="37.465"/>
+ <val o="1e2847" v="35.96"/>
+ <val o="1e3659" v="34.217"/>
+ <val o="1e4467" v="31.472"/>
+ <val o="1e5281" v="27.913"/>
+ <val o="1e6086" v="27.77"/>
+ <val o="1e6e96" v="27.092"/>
+ <val o="1e7ca6" v="9.65"/>
+ <val o="1e8ab5" v="8.989"/>
+ <val o="1e98c6" v="8.871"/>
+ <val o="1ea6d5" v="11.525"/>
+ <val o="1eb4e6" v="11.312"/>
+ <val o="1ec2f6" v="13.145"/>
+ <val o="1ed106" v="12.866"/>
+ <val o="1edf16" v="13.503"/>
+ <val o="1eed26" v="12.977"/>
+ <val o="1efb36" v="12.853"/>
+ <val o="1f0946" v="12.322"/>
+ <val o="1f1756" v="11.244"/>
+ <val o="1f2566" v="11.357"/>
+ <val o="1f3376" v="13.909"/>
+ <val o="1f4187" v="20.778"/>
+ <val o="1f4f96" v="17.384"/>
+ <val o="1f5da7" v="17.882"/>
+ <val o="1f6bb6" v="17.779"/>
+ <val o="1f79c7" v="15.628"/>
+ <val o="1f87d6" v="18.718"/>
+ <val o="1f95e7" v="19.687"/>
+ <val o="1fa401" v="15.856"/>
+ <val o="1fb204" v="14.235"/>
+ <val o="1fc016" v="14.121"/>
+ <val o="1fce25" v="10.417"/>
+ <val o="1fdc35" v="10.192"/>
+ <val o="1fea45" v="10.247"/>
+ <val o="1ff855" v="12.409"/>
+ <val o="200665" v="18.782"/>
+ <val o="201475" v="17.709"/>
+ <val o="202286" v="24.468"/>
+ <val o="203095" v="27.895"/>
+ <val o="203ea5" v="31.135"/>
+ <val o="204cb6" v="28.073"/>
+ <val o="205ac6" v="26.781"/>
+ <val o="2068d6" v="27.955"/>
+ <val o="2076e6" v="31.834"/>
+ <val o="2084f6" v="30.684"/>
+ <val o="209306" v="33.239"/>
+ <val o="20a116" v="31.592"/>
+ <val o="20af26" v="27.051"/>
+ <val o="20bd37" v="26.891"/>
+ <val o="20cb46" v="22.834"/>
+ <val o="20d957" v="21.1"/>
+ <val o="20e767" v="20.723"/>
+ <val o="20f581" v="20.412"/>
+ <val o="210386" v="17.178"/>
+ <val o="211194" v="14.845"/>
+ <val o="211fa5" v="14.404"/>
+ <val o="212db5" v="13.895"/>
+ <val o="213bc5" v="14.291"/>
+ <val o="2149d6" v="18.376"/>
+ <val o="2157e5" v="22.682"/>
+ <val o="2165f6" v="29.056"/>
+ <val o="217406" v="30.985"/>
+ <val o="218217" v="31.244"/>
+ <val o="219026" v="30.501"/>
+ <val o="219e39" v="30.757"/>
+ <val o="21ac46" v="29.766"/>
+ <val o="21ba57" v="29.686"/>
+ <val o="21c867" v="30.47"/>
+ <val o="21d677" v="31.06"/>
+ <val o="21e487" v="28.958"/>
+ <val o="21f296" v="28.474"/>
+ <val o="2200a6" v="27.753"/>
+ <val o="220eb7" v="26.676"/>
+ <val o="221cc6" v="24.07"/>
+ <val o="222ad7" v="18.889"/>
+ <val o="2238e7" v="17.556"/>
+ <val o="224701" v="16.434"/>
+ <val o="225505" v="18.47"/>
+ <val o="226315" v="9.837"/>
+ <val o="227125" v="9.73"/>
+ <val o="227f35" v="12.672"/>
+ <val o="228d45" v="17.29"/>
+ <val o="229b54" v="17.161"/>
+ <val o="22a965" v="19.388"/>
+ <val o="22b776" v="22.792"/>
+ <val o="22c586" v="25.973"/>
+ <val o="22d397" v="28.305"/>
+ <val o="22e1a6" v="28.475"/>
+ <val o="22efb6" v="23.531"/>
+ <val o="22fdc7" v="22.62"/>
+ <val o="230bd7" v="22.13"/>
+ <val o="2319e6" v="27.159"/>
+ <val o="2327f6" v="27.705"/>
+ <val o="23361b" v="29.796"/>
+ <val o="234416" v="27.341"/>
+ <val o="235226" v="25.887"/>
+ <val o="236037" v="25.842"/>
+ <val o="236e46" v="23.266"/>
+ <val o="237c57" v="21.664"/>
+ <val o="238a66" v="19.437"/>
+ <val o="239881" v="15.912"/>
+ <val o="23a685" v="16.037"/>
+ <val o="23b495" v="15.674"/>
+ <val o="23c2a4" v="13.705"/>
+ <val o="23d0b5" v="14.331"/>
+ <val o="23dec4" v="15.781"/>
+ <val o="23ecd5" v="18.196"/>
+ <val o="23fae4" v="22.115"/>
+ <val o="2408f6" v="26.066"/>
+ <val o="241706" v="34.813"/>
+ <val o="242518" v="35.914"/>
+ <val o="243325" v="36.775"/>
+ <val o="244137" v="34.277"/>
+ <val o="244f46" v="32.056"/>
+ <val o="246b66" v="33.001"/>
+ <val o="247976" v="31.687"/>
+ <val o="248786" v="36.854"/>
+ <val o="24957e" v="30.428"/>
+ <val o="24a38f" v="28.246"/>
+ <val o="24b19c" v="28.984"/>
+ <val o="24bfac" v="27.176"/>
+ <val o="24cdbc" v="26.455"/>
+ <val o="24dbcd" v="21.891"/>
+ <val o="24e9e5" v="20.073"/>
+ <val o="24f808" v="17.083"/>
+ <val o="250616" v="17.921"/>
+ <val o="251426" v="17.972"/>
+ <val o="252236" v="16.1"/>
+ <val o="253047" v="17.324"/>
+ <val o="253e56" v="20.97"/>
+ <val o="254c67" v="21.269"/>
+ <val o="255a76" v="25.041"/>
+ <val o="256887" v="31.27"/>
+ <val o="257697" v="33.712"/>
+ <val o="2584a8" v="82.744"/>
+ <val o="2592b6" v="46.746"/>
+ <val o="25a0c7" v="22.903"/>
+ <val o="25aed7" v="31.343"/>
+ <val o="25bce7" v="30.438"/>
+ <val o="25caf8" v="28.883"/>
+ <val o="25d907" v="30.794"/>
+ <val o="25e718" v="31.011"/>
+ <val o="25f527" v="28.098"/>
+ <val o="260338" v="27.177"/>
+ <val o="261149" v="24.941"/>
+ <val o="261f59" v="22.834"/>
+ <val o="262d68" v="23.209"/>
+ <val o="263b83" v="17.56"/>
+ <val o="264986" v="17.555"/>
+ <val o="265795" v="18.761"/>
+ <val o="2665a6" v="20.698"/>
+ <val o="2673b5" v="19.372"/>
+ <val o="2681c6" v="18.644"/>
+ <val o="268fd5" v="18.792"/>
+ <val o="269de6" v="18.951"/>
+ <val o="26abf6" v="18.907"/>
+ <val o="26ba06" v="23.409"/>
+ <val o="26c817" v="23.511"/>
+ <val o="26d62b" v="26.941"/>
+ <val o="26e436" v="24.008"/>
+ <val o="26f247" v="23.147"/>
+ <val o="270057" v="23.935"/>
+ <val o="270e67" v="24"/>
+ <val o="271c77" v="22.888"/>
+ <val o="272a87" v="26.246"/>
+ <val o="273897" v="25.909"/>
+ <val o="2746a8" v="25.109"/>
+ <val o="2754b9" v="24.725"/>
+ <val o="2762c7" v="23.755"/>
+ <val o="2770d8" v="18.839"/>
+ <val o="277ee7" v="15.362"/>
+ </par>
+ <par memind="8608" h="3dc1a8de">
+ <val o="0" v="0"/>
+ <val o="e08" v="0"/>
+ <val o="1c32" v="0"/>
+ <val o="2a3c" v="0"/>
+ <val o="3835" v="0"/>
+ <val o="4645" v="0"/>
+ <val o="5455" v="0"/>
+ <val o="6265" v="0"/>
+ <val o="7075" v="0"/>
+ <val o="7e85" v="0"/>
+ <val o="8c96" v="0"/>
+ <val o="9aa5" v="0"/>
+ <val o="a8b6" v="0"/>
+ <val o="b6c5" v="0"/>
+ <val o="c4d7" v="0"/>
+ <val o="d30b" v="0"/>
+ <val o="e0f6" v="0"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="0"/>
+ <val o="11937" v="0"/>
+ <val o="12746" v="0"/>
+ <val o="13556" v="0"/>
+ <val o="14366" v="0"/>
+ <val o="15181" v="0"/>
+ <val o="15f85" v="0"/>
+ <val o="16d95" v="0"/>
+ <val o="17ba4" v="0"/>
+ <val o="189b5" v="0"/>
+ <val o="197c4" v="0"/>
+ <val o="1a5d5" v="0"/>
+ <val o="1b3e6" v="0"/>
+ <val o="1c1f6" v="0"/>
+ <val o="1d005" v="0"/>
+ <val o="1de15" v="0"/>
+ <val o="1ec25" v="0"/>
+ <val o="1fa36" v="0"/>
+ <val o="20845" v="0"/>
+ <val o="21656" v="0"/>
+ <val o="22465" v="0"/>
+ <val o="23276" v="0"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="0"/>
+ <val o="25ca7" v="0"/>
+ <val o="26ab7" v="0"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="0"/>
+ <val o="294e6" v="0"/>
+ <val o="2a301" v="0"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="0"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="0"/>
+ <val o="31375" v="0"/>
+ <val o="3219e" v="0"/>
+ <val o="32f96" v="0"/>
+ <val o="33da6" v="0"/>
+ <val o="34bb6" v="0"/>
+ <val o="359de" v="0"/>
+ <val o="367d6" v="0"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="0"/>
+ <val o="3bc36" v="0"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="0"/>
+ <val o="3e667" v="0"/>
+ <val o="3f481" v="0"/>
+ <val o="40285" v="0"/>
+ <val o="41095" v="0"/>
+ <val o="41ea5" v="0"/>
+ <val o="42cb5" v="0"/>
+ <val o="43ac5" v="0"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="0"/>
+ <val o="464f5" v="0"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="0"/>
+ <val o="54600" v="0"/>
+ <val o="55406" v="0"/>
+ <val o="56215" v="0"/>
+ <val o="57026" v="0"/>
+ <val o="57e36" v="0"/>
+ <val o="58c46" v="0"/>
+ <val o="59a70" v="0"/>
+ <val o="5a867" v="0"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="0"/>
+ <val o="5eeb8" v="0"/>
+ <val o="5fcc6" v="0"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="0"/>
+ <val o="65f37" v="0"/>
+ <val o="66d46" v="0"/>
+ <val o="67b57" v="0"/>
+ <val o="68967" v="0"/>
+ <val o="69782" v="0"/>
+ <val o="6a586" v="0"/>
+ <val o="6b395" v="0"/>
+ <val o="6c1a6" v="0"/>
+ <val o="6cfb5" v="0"/>
+ <val o="6ddc6" v="0"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="0"/>
+ <val o="707f6" v="0"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="0"/>
+ <val o="74e47" v="0"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="0"/>
+ <val o="7bebf" v="0"/>
+ <val o="7cccf" v="0"/>
+ <val o="7dadf" v="0"/>
+ <val o="7e8fa" v="0"/>
+ <val o="7f70a" v="0"/>
+ <val o="8051a" v="0"/>
+ <val o="8132a" v="0"/>
+ <val o="8213a" v="0"/>
+ <val o="82f4a" v="0"/>
+ <val o="83d5a" v="0"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="0"/>
+ <val o="891bb" v="0"/>
+ <val o="89fca" v="0"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="0"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="0"/>
+ <val o="93a84" v="0"/>
+ <val o="94885" v="0"/>
+ <val o="95694" v="0"/>
+ <val o="964a5" v="0"/>
+ <val o="972b4" v="0"/>
+ <val o="980c5" v="0"/>
+ <val o="98ed4" v="0"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="0"/>
+ <val o="9c716" v="0"/>
+ <val o="9d526" v="0"/>
+ <val o="9e336" v="0"/>
+ <val o="9f145" v="0"/>
+ <val o="9ff56" v="0"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="0"/>
+ <val o="a2986" v="0"/>
+ <val o="a3795" v="0"/>
+ <val o="a45a7" v="0"/>
+ <val o="a53b6" v="0"/>
+ <val o="a61c7" v="0"/>
+ <val o="a6fd6" v="0"/>
+ <val o="a7e00" v="0"/>
+ <val o="a8c00" v="0"/>
+ <val o="a9a05" v="0"/>
+ <val o="aa815" v="0"/>
+ <val o="ab625" v="0"/>
+ <val o="ac435" v="0"/>
+ <val o="ad245" v="0"/>
+ <val o="ae055" v="0"/>
+ <val o="aee65" v="0"/>
+ <val o="afc75" v="0"/>
+ <val o="b0a85" v="0"/>
+ <val o="b26a6" v="0"/>
+ <val o="b34b6" v="0"/>
+ <val o="b42c6" v="0"/>
+ <val o="b50d6" v="0"/>
+ <val o="b5ee7" v="0"/>
+ <val o="b6cf6" v="0"/>
+ <val o="b7b07" v="0"/>
+ <val o="b8917" v="0"/>
+ <val o="b9728" v="0"/>
+ <val o="ba537" v="0"/>
+ <val o="bb347" v="0"/>
+ <val o="bc157" v="0"/>
+ <val o="bcf67" v="0"/>
+ <val o="bdd81" v="0"/>
+ <val o="beb86" v="0"/>
+ <val o="bf995" v="0"/>
+ <val o="c07a6" v="0"/>
+ <val o="c15b5" v="0"/>
+ <val o="c23c6" v="0"/>
+ <val o="c31d5" v="0"/>
+ <val o="c3fe6" v="0"/>
+ <val o="c4df5" v="0"/>
+ <val o="c5c06" v="0"/>
+ <val o="c6a16" v="0"/>
+ <val o="c7826" v="0"/>
+ <val o="c8636" v="0"/>
+ <val o="c9446" v="0"/>
+ <val o="ca256" v="0"/>
+ <val o="cb066" v="0"/>
+ <val o="cbe76" v="0"/>
+ <val o="ccc87" v="0"/>
+ <val o="cda96" v="0"/>
+ <val o="ce8a8" v="0"/>
+ <val o="cf6b7" v="0"/>
+ <val o="d04c8" v="0"/>
+ <val o="d12d7" v="0"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="0"/>
+ <val o="d3d05" v="0"/>
+ <val o="d4b15" v="0"/>
+ <val o="d5926" v="0"/>
+ <val o="d6735" v="0"/>
+ <val o="d7546" v="0"/>
+ <val o="d8355" v="0"/>
+ <val o="d9166" v="0"/>
+ <val o="d9f75" v="0"/>
+ <val o="dad87" v="0"/>
+ <val o="dbb97" v="0"/>
+ <val o="dc9a8" v="0"/>
+ <val o="dd7b7" v="0"/>
+ <val o="de5c6" v="0"/>
+ <val o="df3d7" v="0"/>
+ <val o="e01d7" v="0"/>
+ <val o="e0fe5" v="0"/>
+ <val o="e1df5" v="0"/>
+ <val o="e2c04" v="0"/>
+ <val o="e3a14" v="0"/>
+ <val o="e4824" v="0"/>
+ <val o="e5634" v="0"/>
+ <val o="e6444" v="0"/>
+ <val o="e7255" v="0"/>
+ <val o="e806f" v="0"/>
+ <val o="e8e7f" v="0"/>
+ <val o="e9c8e" v="0"/>
+ <val o="eaa9f" v="0"/>
+ <val o="eb8ae" v="0"/>
+ <val o="ec6bf" v="0"/>
+ <val o="ed4ce" v="0"/>
+ <val o="ee2df" v="0"/>
+ <val o="ef0ef" v="0"/>
+ <val o="eff01" v="0"/>
+ <val o="f0d10" v="0"/>
+ <val o="f1b20" v="0"/>
+ <val o="f2930" v="0"/>
+ <val o="f3740" v="0"/>
+ <val o="f4551" v="0"/>
+ <val o="f5361" v="0"/>
+ <val o="f6172" v="0"/>
+ <val o="f6f80" v="0"/>
+ <val o="f7d91" v="0"/>
+ <val o="f8ba1" v="0"/>
+ <val o="f99b1" v="0"/>
+ <val o="fa7c0" v="0"/>
+ <val o="fb5d1" v="0"/>
+ <val o="fc3e0" v="0"/>
+ <val o="fd1fb" v="0"/>
+ <val o="fe00b" v="0"/>
+ <val o="fee1c" v="0"/>
+ <val o="ffc2c" v="0"/>
+ <val o="100a3b" v="0"/>
+ <val o="10184c" v="0"/>
+ <val o="10265b" v="0"/>
+ <val o="10346c" v="0"/>
+ <val o="10427b" v="0"/>
+ <val o="10508d" v="0"/>
+ <val o="105e9d" v="0"/>
+ <val o="106cad" v="0"/>
+ <val o="107abd" v="0"/>
+ <val o="1088cd" v="0"/>
+ <val o="1096de" v="0"/>
+ <val o="10a4ed" v="0"/>
+ <val o="10b2fe" v="0"/>
+ <val o="10c10d" v="0"/>
+ <val o="10cf1e" v="0"/>
+ <val o="10dd2e" v="0"/>
+ <val o="10eb66" v="0"/>
+ <val o="10f94e" v="0"/>
+ <val o="11075e" v="0"/>
+ <val o="11156d" v="0"/>
+ <val o="112388" v="0"/>
+ <val o="113187" v="0"/>
+ <val o="113fb0" v="0"/>
+ <val o="114da6" v="0"/>
+ <val o="115bb6" v="0"/>
+ <val o="1169c6" v="0"/>
+ <val o="1177d6" v="0"/>
+ <val o="1185e8" v="0"/>
+ <val o="1193f7" v="0"/>
+ <val o="11a208" v="0"/>
+ <val o="11b017" v="0"/>
+ <val o="11be2f" v="0"/>
+ <val o="11cc37" v="0"/>
+ <val o="11da47" v="0"/>
+ <val o="11e857" v="0"/>
+ <val o="11f667" v="0"/>
+ <val o="120578" v="0"/>
+ <val o="121386" v="0"/>
+ <val o="122196" v="0"/>
+ <val o="122fa6" v="0"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="0"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="0"/>
+ <val o="128305" v="0"/>
+ <val o="129115" v="0"/>
+ <val o="129f25" v="0"/>
+ <val o="12ad35" v="0"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="0"/>
+ <val o="12d766" v="0"/>
+ <val o="12e575" v="0"/>
+ <val o="12f386" v="0"/>
+ <val o="130196" v="0"/>
+ <val o="130fa6" v="0"/>
+ <val o="131db7" v="0"/>
+ <val o="132bc5" v="0"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="0"/>
+ <val o="1774a3" v="0"/>
+ <val o="1782b3" v="0"/>
+ <val o="1790c5" v="0"/>
+ <val o="179ed4" v="0"/>
+ <val o="17ace4" v="0"/>
+ <val o="17bafd" v="0"/>
+ <val o="17c90f" v="0"/>
+ <val o="17d71e" v="0"/>
+ <val o="17e52f" v="0"/>
+ <val o="17f33f" v="0"/>
+ <val o="18014f" v="0"/>
+ <val o="180f5f" v="0"/>
+ <val o="181d6e" v="0"/>
+ <val o="182b7f" v="0"/>
+ <val o="18398f" v="0"/>
+ <val o="1847a1" v="0"/>
+ <val o="1855af" v="0"/>
+ <val o="1863c0" v="0"/>
+ <val o="1871cf" v="0"/>
+ <val o="187fe0" v="0"/>
+ <val o="188def" v="0"/>
+ <val o="189c00" v="0"/>
+ <val o="18b80d" v="0"/>
+ <val o="18c61c" v="0"/>
+ <val o="18d42c" v="0"/>
+ <val o="18e23b" v="0"/>
+ <val o="18f04b" v="0"/>
+ <val o="18fe5e" v="0"/>
+ <val o="190c76" v="0"/>
+ <val o="191a86" v="0"/>
+ <val o="192896" v="0"/>
+ <val o="1936a6" v="0"/>
+ <val o="1944b7" v="0"/>
+ <val o="1952c6" v="0"/>
+ <val o="1960d7" v="0"/>
+ <val o="196ee6" v="0"/>
+ <val o="197cf8" v="0"/>
+ <val o="198b0f" v="0"/>
+ <val o="19991f" v="0"/>
+ <val o="19b541" v="0"/>
+ <val o="19c34d" v="0"/>
+ <val o="19d15e" v="0"/>
+ <val o="19df80" v="0"/>
+ <val o="19ed90" v="0"/>
+ <val o="19eebe" v="0"/>
+ <val o="19fb8e" v="0"/>
+ <val o="1a09a0" v="0"/>
+ <val o="1a17ae" v="0"/>
+ <val o="1a25be" v="0"/>
+ <val o="1a33cd" v="0"/>
+ <val o="1a41dd" v="0"/>
+ <val o="1a4fed" v="0"/>
+ <val o="1a5e08" v="0"/>
+ <val o="1a6c05" v="0"/>
+ <val o="1a7a15" v="0"/>
+ <val o="1a8826" v="0"/>
+ <val o="1a9637" v="0"/>
+ <val o="1aa445" v="0"/>
+ <val o="1ab255" v="0"/>
+ <val o="1ac065" v="0"/>
+ <val o="1ace75" v="0"/>
+ <val o="1adc87" v="0"/>
+ <val o="1aea96" v="0"/>
+ <val o="1af8a7" v="0"/>
+ <val o="1b06b7" v="0"/>
+ <val o="1b14c6" v="0"/>
+ <val o="1c7460" v="0"/>
+ <val o="1c8270" v="0"/>
+ <val o="1c907e" v="0"/>
+ <val o="1c9e8f" v="0"/>
+ <val o="1caca2" v="0"/>
+ <val o="1cbab1" v="0"/>
+ <val o="1cc8c1" v="0"/>
+ <val o="1cd6d0" v="0"/>
+ <val o="1ce4de" v="0"/>
+ <val o="1cf2f0" v="0"/>
+ <val o="1d0109" v="0"/>
+ <val o="1d0f06" v="0"/>
+ <val o="1d1d15" v="0"/>
+ <val o="1d2b25" v="0"/>
+ <val o="1d3935" v="0"/>
+ <val o="1d4745" v="0"/>
+ <val o="1d5555" v="0"/>
+ <val o="1d6366" v="0"/>
+ <val o="1d7175" v="0"/>
+ <val o="1d7f86" v="0"/>
+ <val o="1d8d95" v="0"/>
+ <val o="1d9ba6" v="0"/>
+ <val o="1da9b6" v="0"/>
+ <val o="1db7c7" v="0"/>
+ <val o="1dc5d5" v="0"/>
+ <val o="1dd3e6" v="0"/>
+ <val o="1de1f5" v="0"/>
+ <val o="1df006" v="0"/>
+ <val o="1dfe16" v="0"/>
+ <val o="1e0c26" v="0"/>
+ <val o="1e1a36" v="0"/>
+ <val o="1e2847" v="0"/>
+ <val o="1e3659" v="0"/>
+ <val o="1e4467" v="0"/>
+ <val o="1e5281" v="0"/>
+ <val o="1e6086" v="0"/>
+ <val o="1e6e96" v="0"/>
+ <val o="1e7ca6" v="0"/>
+ <val o="1e8ab5" v="0"/>
+ <val o="1e98c6" v="0"/>
+ <val o="1ea6d5" v="0"/>
+ <val o="1eb4e6" v="0"/>
+ <val o="1ec2f6" v="0"/>
+ <val o="1ed106" v="0"/>
+ <val o="1edf16" v="0"/>
+ <val o="1eed26" v="0"/>
+ <val o="1efb36" v="0"/>
+ <val o="1f0946" v="0"/>
+ <val o="1f1756" v="0"/>
+ <val o="1f2566" v="0"/>
+ <val o="1f3376" v="0"/>
+ <val o="1f4187" v="0"/>
+ <val o="1f4f96" v="0"/>
+ <val o="1f5da7" v="0"/>
+ <val o="1f6bb6" v="0"/>
+ <val o="1f79c7" v="0"/>
+ <val o="1f87d6" v="0"/>
+ <val o="1f95e7" v="0"/>
+ <val o="1fa401" v="0"/>
+ <val o="1fb204" v="0"/>
+ <val o="1fc016" v="0"/>
+ <val o="1fce25" v="0"/>
+ <val o="1fdc35" v="0"/>
+ <val o="1fea45" v="0"/>
+ <val o="1ff855" v="0"/>
+ <val o="200665" v="0"/>
+ <val o="201475" v="0"/>
+ <val o="202286" v="0"/>
+ <val o="203095" v="0"/>
+ <val o="203ea5" v="0"/>
+ <val o="204cb6" v="0"/>
+ <val o="205ac6" v="0"/>
+ <val o="2068d6" v="0"/>
+ <val o="2076e6" v="0"/>
+ <val o="2084f6" v="0"/>
+ <val o="209306" v="0"/>
+ <val o="20a116" v="0"/>
+ <val o="20af26" v="0"/>
+ <val o="20bd37" v="0"/>
+ <val o="20cb46" v="0"/>
+ <val o="20d957" v="0"/>
+ <val o="20e767" v="0"/>
+ <val o="20f581" v="0"/>
+ <val o="210386" v="0"/>
+ <val o="211194" v="0"/>
+ <val o="211fa5" v="0"/>
+ <val o="212db5" v="0"/>
+ <val o="213bc5" v="0"/>
+ <val o="2149d6" v="0"/>
+ <val o="2157e5" v="0"/>
+ <val o="2165f6" v="0"/>
+ <val o="217406" v="0"/>
+ <val o="218217" v="0"/>
+ <val o="219026" v="0"/>
+ <val o="219e39" v="0"/>
+ <val o="21ac46" v="0"/>
+ <val o="21ba57" v="0"/>
+ <val o="21c867" v="0"/>
+ <val o="21d677" v="0"/>
+ <val o="21e487" v="0"/>
+ <val o="21f296" v="0"/>
+ <val o="2200a6" v="0"/>
+ <val o="220eb7" v="0"/>
+ <val o="221cc6" v="0"/>
+ <val o="222ad7" v="0"/>
+ <val o="2238e7" v="0"/>
+ <val o="224701" v="0"/>
+ <val o="225505" v="0"/>
+ <val o="226315" v="0"/>
+ <val o="227125" v="0"/>
+ <val o="227f35" v="0"/>
+ <val o="228d45" v="0"/>
+ <val o="229b54" v="0"/>
+ <val o="22a965" v="0"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="0"/>
+ <val o="22d397" v="0"/>
+ <val o="22e1a6" v="0"/>
+ <val o="22efb6" v="0"/>
+ <val o="22fdc7" v="0"/>
+ <val o="230bd7" v="0"/>
+ <val o="2319e6" v="0"/>
+ <val o="2327f6" v="0"/>
+ <val o="23361b" v="0"/>
+ <val o="234416" v="0"/>
+ <val o="235226" v="0"/>
+ <val o="236037" v="0"/>
+ <val o="236e46" v="0"/>
+ <val o="237c57" v="0"/>
+ <val o="238a66" v="0"/>
+ <val o="239881" v="0"/>
+ <val o="23a685" v="0"/>
+ <val o="23b495" v="0"/>
+ <val o="23c2a4" v="0"/>
+ <val o="23d0b5" v="0"/>
+ <val o="23dec4" v="0"/>
+ <val o="23ecd5" v="0"/>
+ <val o="23fae4" v="0"/>
+ <val o="2408f6" v="0"/>
+ <val o="241706" v="0"/>
+ <val o="242518" v="0"/>
+ <val o="243325" v="0"/>
+ <val o="244137" v="0"/>
+ <val o="244f46" v="0"/>
+ <val o="246b66" v="0"/>
+ <val o="247976" v="0"/>
+ <val o="248786" v="0"/>
+ <val o="24957e" v="0"/>
+ <val o="24a38f" v="0"/>
+ <val o="24b19c" v="0"/>
+ <val o="24bfac" v="0"/>
+ <val o="24cdbc" v="0"/>
+ <val o="24dbcd" v="0"/>
+ <val o="24e9e5" v="0"/>
+ <val o="24f808" v="0"/>
+ <val o="250616" v="0"/>
+ <val o="251426" v="0"/>
+ <val o="252236" v="0"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="0"/>
+ <val o="254c67" v="0"/>
+ <val o="255a76" v="0"/>
+ <val o="256887" v="0"/>
+ <val o="257697" v="0"/>
+ <val o="2584a8" v="0"/>
+ <val o="2592b6" v="0"/>
+ <val o="25a0c7" v="0"/>
+ <val o="25aed7" v="0"/>
+ <val o="25bce7" v="0"/>
+ <val o="25caf8" v="0"/>
+ <val o="25d907" v="0"/>
+ <val o="25e718" v="0"/>
+ <val o="25f527" v="0"/>
+ <val o="260338" v="0"/>
+ <val o="261149" v="0"/>
+ <val o="261f59" v="0"/>
+ <val o="262d68" v="0"/>
+ <val o="263b83" v="0"/>
+ <val o="264986" v="0"/>
+ <val o="265795" v="0"/>
+ <val o="2665a6" v="0"/>
+ <val o="2673b5" v="0"/>
+ <val o="2681c6" v="0"/>
+ <val o="268fd5" v="0"/>
+ <val o="269de6" v="0"/>
+ <val o="26abf6" v="0"/>
+ <val o="26ba06" v="0"/>
+ <val o="26c817" v="0"/>
+ <val o="26d62b" v="0"/>
+ <val o="26e436" v="0"/>
+ <val o="26f247" v="0"/>
+ <val o="270057" v="0"/>
+ <val o="270e67" v="0"/>
+ <val o="271c77" v="0"/>
+ <val o="272a87" v="0"/>
+ <val o="273897" v="0"/>
+ <val o="2746a8" v="0"/>
+ <val o="2754b9" v="0"/>
+ <val o="2762c7" v="0"/>
+ <val o="2770d8" v="0"/>
+ <val o="277ee7" v="0"/>
+ </par>
+ <par memind="8604" h="3dc1a8de">
+ <val o="0" v="21.043"/>
+ <val o="e08" v="20.051"/>
+ <val o="1c32" v="19.818"/>
+ <val o="2a3c" v="19.554"/>
+ <val o="3835" v="18.951"/>
+ <val o="4645" v="18.853"/>
+ <val o="5455" v="22.398"/>
+ <val o="6265" v="24.492"/>
+ <val o="7075" v="29.206"/>
+ <val o="7e85" v="35.063"/>
+ <val o="8c96" v="35.07"/>
+ <val o="9aa5" v="33.585"/>
+ <val o="a8b6" v="30.77"/>
+ <val o="b6c5" v="29.141"/>
+ <val o="c4d7" v="0.061"/>
+ <val o="d30b" v="0.061"/>
+ <val o="e0f6" v="0.06"/>
+ <val o="ef06" v="0.059"/>
+ <val o="fd17" v="0.06"/>
+ <val o="10b27" v="0.062"/>
+ <val o="11937" v="0.063"/>
+ <val o="12746" v="0.061"/>
+ <val o="13556" v="0.062"/>
+ <val o="14366" v="0.066"/>
+ <val o="15181" v="0.07"/>
+ <val o="15f85" v="0.064"/>
+ <val o="16d95" v="0.065"/>
+ <val o="17ba4" v="0.064"/>
+ <val o="189b5" v="0.063"/>
+ <val o="197c4" v="0.064"/>
+ <val o="1a5d5" v="0.066"/>
+ <val o="1b3e6" v="0.067"/>
+ <val o="1c1f6" v="0.066"/>
+ <val o="1d005" v="0.062"/>
+ <val o="1de15" v="0.062"/>
+ <val o="1ec25" v="0.063"/>
+ <val o="1fa36" v="0.066"/>
+ <val o="20845" v="0.066"/>
+ <val o="21656" v="0.066"/>
+ <val o="22465" v="0.064"/>
+ <val o="23276" v="0.063"/>
+ <val o="24086" v="0.061"/>
+ <val o="24e99" v="0.061"/>
+ <val o="25ca7" v="0.062"/>
+ <val o="26ab7" v="0.062"/>
+ <val o="278c6" v="0.061"/>
+ <val o="286d6" v="0.063"/>
+ <val o="294e6" v="0.066"/>
+ <val o="2a301" v="0.067"/>
+ <val o="2b105" v="0.06"/>
+ <val o="2bf15" v="0.061"/>
+ <val o="2cd25" v="0.063"/>
+ <val o="2db35" v="0.062"/>
+ <val o="2e946" v="0.061"/>
+ <val o="2f755" v="0.058"/>
+ <val o="30566" v="0.066"/>
+ <val o="31375" v="0.064"/>
+ <val o="3219e" v="0.066"/>
+ <val o="32f96" v="0.063"/>
+ <val o="33da6" v="0.062"/>
+ <val o="34bb6" v="0.063"/>
+ <val o="359de" v="0.064"/>
+ <val o="367d6" v="0.064"/>
+ <val o="375e6" v="0.062"/>
+ <val o="3840e" v="0.059"/>
+ <val o="3921e" v="0.06"/>
+ <val o="3a016" v="0.06"/>
+ <val o="3ae27" v="0.063"/>
+ <val o="3bc36" v="0.062"/>
+ <val o="3ca47" v="0.059"/>
+ <val o="3d856" v="0.062"/>
+ <val o="3e667" v="0.064"/>
+ <val o="3f481" v="0.068"/>
+ <val o="40285" v="0.065"/>
+ <val o="41095" v="0.066"/>
+ <val o="41ea5" v="0.065"/>
+ <val o="42cb5" v="0.066"/>
+ <val o="43ac5" v="0.064"/>
+ <val o="448d5" v="0.061"/>
+ <val o="456e6" v="0.062"/>
+ <val o="464f5" v="0.062"/>
+ <val o="480ff" v="0.058"/>
+ <val o="48f0e" v="0.056"/>
+ <val o="49d1d" v="0.057"/>
+ <val o="4ab46" v="0.056"/>
+ <val o="4b955" v="0.057"/>
+ <val o="4c769" v="0.055"/>
+ <val o="4d577" v="0.057"/>
+ <val o="4e387" v="0.057"/>
+ <val o="4f196" v="0.057"/>
+ <val o="4ffa6" v="0.058"/>
+ <val o="50dd0" v="0.06"/>
+ <val o="51bc6" v="0.062"/>
+ <val o="529d6" v="0.062"/>
+ <val o="537e7" v="0.065"/>
+ <val o="54600" v="0.067"/>
+ <val o="55406" v="0.065"/>
+ <val o="56215" v="0.065"/>
+ <val o="57026" v="0.065"/>
+ <val o="57e36" v="0.064"/>
+ <val o="58c46" v="0.063"/>
+ <val o="59a70" v="0.063"/>
+ <val o="5a867" v="0.06"/>
+ <val o="5b676" v="0.06"/>
+ <val o="5c487" v="0.056"/>
+ <val o="5d296" v="0.058"/>
+ <val o="5e0a9" v="0.06"/>
+ <val o="5eeb8" v="0.062"/>
+ <val o="5fcc6" v="0.061"/>
+ <val o="60ad7" v="0.057"/>
+ <val o="618e7" v="0.057"/>
+ <val o="626f7" v="0.059"/>
+ <val o="63507" v="0.059"/>
+ <val o="64317" v="0.061"/>
+ <val o="65127" v="0.062"/>
+ <val o="65f37" v="0.063"/>
+ <val o="66d46" v="0.062"/>
+ <val o="67b57" v="0.062"/>
+ <val o="68967" v="0.065"/>
+ <val o="69782" v="0.065"/>
+ <val o="6a586" v="0.064"/>
+ <val o="6b395" v="0.065"/>
+ <val o="6c1a6" v="0.066"/>
+ <val o="6cfb5" v="0.064"/>
+ <val o="6ddc6" v="0.063"/>
+ <val o="6ebd6" v="0.059"/>
+ <val o="6f9e6" v="0.061"/>
+ <val o="707f6" v="0.062"/>
+ <val o="71607" v="0.059"/>
+ <val o="72417" v="0.058"/>
+ <val o="73227" v="0.056"/>
+ <val o="74037" v="0.061"/>
+ <val o="74e47" v="0.061"/>
+ <val o="75c57" v="0.058"/>
+ <val o="76a63" v="0.058"/>
+ <val o="77873" v="0.058"/>
+ <val o="78680" v="0.058"/>
+ <val o="7948f" v="0.058"/>
+ <val o="7a29f" v="0.06"/>
+ <val o="7b0af" v="0.062"/>
+ <val o="7bebf" v="0.062"/>
+ <val o="7cccf" v="0.064"/>
+ <val o="7dadf" v="0.065"/>
+ <val o="7e8fa" v="0.065"/>
+ <val o="7f70a" v="0.067"/>
+ <val o="8051a" v="0.067"/>
+ <val o="8132a" v="0.066"/>
+ <val o="8213a" v="0.066"/>
+ <val o="82f4a" v="0.067"/>
+ <val o="83d5a" v="0.062"/>
+ <val o="84b6a" v="0.06"/>
+ <val o="8597a" v="0.059"/>
+ <val o="8678b" v="0.059"/>
+ <val o="8759b" v="0.057"/>
+ <val o="883ac" v="0.06"/>
+ <val o="891bb" v="0.061"/>
+ <val o="89fca" v="0.06"/>
+ <val o="8adda" v="0.059"/>
+ <val o="8bbeb" v="0.059"/>
+ <val o="8c9fc" v="0.058"/>
+ <val o="8d80b" v="0.058"/>
+ <val o="8e61a" v="0.059"/>
+ <val o="8f42a" v="0.06"/>
+ <val o="9023a" v="0.061"/>
+ <val o="9104a" v="0.062"/>
+ <val o="91e5a" v="0.06"/>
+ <val o="92c6a" v="0.063"/>
+ <val o="93a84" v="0.067"/>
+ <val o="94885" v="0.064"/>
+ <val o="95694" v="0.064"/>
+ <val o="964a5" v="0.065"/>
+ <val o="972b4" v="0.064"/>
+ <val o="980c5" v="0.062"/>
+ <val o="98ed4" v="0.065"/>
+ <val o="99ce5" v="0.064"/>
+ <val o="9aaf5" v="0.061"/>
+ <val o="9b906" v="0.061"/>
+ <val o="9c716" v="0.062"/>
+ <val o="9d526" v="0.062"/>
+ <val o="9e336" v="0.063"/>
+ <val o="9f145" v="0.063"/>
+ <val o="9ff56" v="0.061"/>
+ <val o="a0d65" v="0.061"/>
+ <val o="a1b77" v="30.22"/>
+ <val o="a2986" v="16.054"/>
+ <val o="a3795" v="10.22"/>
+ <val o="a45a7" v="3.839"/>
+ <val o="a53b6" v="3.301"/>
+ <val o="a61c7" v="4.19"/>
+ <val o="a6fd6" v="2.002"/>
+ <val o="a7e00" v="4.911"/>
+ <val o="a8c00" v="7.897"/>
+ <val o="a9a05" v="2.934"/>
+ <val o="aa815" v="1.487"/>
+ <val o="ab625" v="2.196"/>
+ <val o="ac435" v="1.679"/>
+ <val o="ad245" v="5.984"/>
+ <val o="ae055" v="10.661"/>
+ <val o="aee65" v="3.653"/>
+ <val o="afc75" v="7.252"/>
+ <val o="b0a85" v="19.708"/>
+ <val o="b26a6" v="21.128"/>
+ <val o="b34b6" v="18.358"/>
+ <val o="b42c6" v="3.456"/>
+ <val o="b50d6" v="4.916"/>
+ <val o="b5ee7" v="7.337"/>
+ <val o="b6cf6" v="7.205"/>
+ <val o="b7b07" v="9.191"/>
+ <val o="b8917" v="8.027"/>
+ <val o="b9728" v="7.688"/>
+ <val o="ba537" v="8.667"/>
+ <val o="bb347" v="7.734"/>
+ <val o="bc157" v="5.148"/>
+ <val o="bcf67" v="5.081"/>
+ <val o="bdd81" v="18.433"/>
+ <val o="beb86" v="4.676"/>
+ <val o="bf995" v="3.97"/>
+ <val o="c07a6" v="2.247"/>
+ <val o="c15b5" v="2.519"/>
+ <val o="c23c6" v="4.784"/>
+ <val o="c31d5" v="10.406"/>
+ <val o="c3fe6" v="5.863"/>
+ <val o="c4df5" v="9.668"/>
+ <val o="c5c06" v="5.194"/>
+ <val o="c6a16" v="5.35"/>
+ <val o="c7826" v="7.745"/>
+ <val o="c8636" v="3.651"/>
+ <val o="c9446" v="4.236"/>
+ <val o="ca256" v="3.281"/>
+ <val o="cb066" v="5.657"/>
+ <val o="cbe76" v="2.249"/>
+ <val o="ccc87" v="12.004"/>
+ <val o="cda96" v="15.833"/>
+ <val o="ce8a8" v="11.981"/>
+ <val o="cf6b7" v="15.145"/>
+ <val o="d04c8" v="12.386"/>
+ <val o="d12d7" v="8.53"/>
+ <val o="d20e7" v="1.474"/>
+ <val o="d2f02" v="7.441"/>
+ <val o="d3d05" v="4.262"/>
+ <val o="d4b15" v="3.805"/>
+ <val o="d5926" v="3.752"/>
+ <val o="d6735" v="5.538"/>
+ <val o="d7546" v="9.524"/>
+ <val o="d8355" v="1.988"/>
+ <val o="d9166" v="4.159"/>
+ <val o="d9f75" v="9.621"/>
+ <val o="dad87" v="17.704"/>
+ <val o="dbb97" v="19.171"/>
+ <val o="dc9a8" v="19.252"/>
+ <val o="dd7b7" v="14.961"/>
+ <val o="de5c6" v="12.816"/>
+ <val o="df3d7" v="13.113"/>
+ <val o="e01d7" v="13.435"/>
+ <val o="e0fe5" v="13.283"/>
+ <val o="e1df5" v="13.989"/>
+ <val o="e2c04" v="18.098"/>
+ <val o="e3a14" v="17.742"/>
+ <val o="e4824" v="15.229"/>
+ <val o="e5634" v="15.263"/>
+ <val o="e6444" v="11.968"/>
+ <val o="e7255" v="9.893"/>
+ <val o="e806f" v="7.997"/>
+ <val o="e8e7f" v="13.888"/>
+ <val o="e9c8e" v="6.336"/>
+ <val o="eaa9f" v="5.634"/>
+ <val o="eb8ae" v="7.369"/>
+ <val o="ec6bf" v="14.276"/>
+ <val o="ed4ce" v="9.674"/>
+ <val o="ee2df" v="12.81"/>
+ <val o="ef0ef" v="14.985"/>
+ <val o="eff01" v="21.531"/>
+ <val o="f0d10" v="21.038"/>
+ <val o="f1b20" v="22.908"/>
+ <val o="f2930" v="20.891"/>
+ <val o="f3740" v="22.234"/>
+ <val o="f4551" v="22.517"/>
+ <val o="f5361" v="24.172"/>
+ <val o="f6172" v="23.008"/>
+ <val o="f6f80" v="23.475"/>
+ <val o="f7d91" v="22.059"/>
+ <val o="f8ba1" v="18.671"/>
+ <val o="f99b1" v="18.447"/>
+ <val o="fa7c0" v="15.862"/>
+ <val o="fb5d1" v="16.38"/>
+ <val o="fc3e0" v="15.165"/>
+ <val o="fd1fb" v="12.335"/>
+ <val o="fe00b" v="12.283"/>
+ <val o="fee1c" v="8.941"/>
+ <val o="ffc2c" v="8.837"/>
+ <val o="100a3b" v="8.793"/>
+ <val o="10184c" v="10.043"/>
+ <val o="10265b" v="13.932"/>
+ <val o="10346c" v="15.974"/>
+ <val o="10427b" v="19.167"/>
+ <val o="10508d" v="22.237"/>
+ <val o="105e9d" v="21.533"/>
+ <val o="106cad" v="23.309"/>
+ <val o="107abd" v="20.333"/>
+ <val o="1088cd" v="18.556"/>
+ <val o="1096de" v="20.163"/>
+ <val o="10a4ed" v="19.978"/>
+ <val o="10b2fe" v="21.155"/>
+ <val o="10c10d" v="23.964"/>
+ <val o="10cf1e" v="21.874"/>
+ <val o="10dd2e" v="19.591"/>
+ <val o="10eb66" v="20.234"/>
+ <val o="10f94e" v="17.32"/>
+ <val o="11075e" v="16.556"/>
+ <val o="11156d" v="13.217"/>
+ <val o="112388" v="12.271"/>
+ <val o="113187" v="8.967"/>
+ <val o="113fb0" v="8.319"/>
+ <val o="114da6" v="8.357"/>
+ <val o="115bb6" v="8.49"/>
+ <val o="1169c6" v="10.458"/>
+ <val o="1177d6" v="13.998"/>
+ <val o="1185e8" v="15.461"/>
+ <val o="1193f7" v="18.331"/>
+ <val o="11a208" v="22.284"/>
+ <val o="11b017" v="19.151"/>
+ <val o="11be2f" v="23.464"/>
+ <val o="11cc37" v="20.211"/>
+ <val o="11da47" v="19.83"/>
+ <val o="11e857" v="20.8"/>
+ <val o="11f667" v="18.042"/>
+ <val o="120578" v="0.018"/>
+ <val o="121386" v="0.02"/>
+ <val o="122196" v="0.02"/>
+ <val o="122fa6" v="0.017"/>
+ <val o="123db5" v="0.015"/>
+ <val o="124bc5" v="0.014"/>
+ <val o="1259d5" v="0.011"/>
+ <val o="1267e4" v="0.01"/>
+ <val o="127600" v="0.009"/>
+ <val o="128305" v="0.008"/>
+ <val o="129115" v="0.008"/>
+ <val o="129f25" v="0.008"/>
+ <val o="12ad35" v="0.007"/>
+ <val o="12bb45" v="0.007"/>
+ <val o="12c954" v="0.01"/>
+ <val o="12d766" v="0.011"/>
+ <val o="12e575" v="0.016"/>
+ <val o="12f386" v="0.013"/>
+ <val o="130196" v="0.019"/>
+ <val o="130fa6" v="0.014"/>
+ <val o="131db7" v="0.015"/>
+ <val o="132bc5" v="0.015"/>
+ <val o="1339d4" v="0.269"/>
+ <val o="1347e5" v="0.124"/>
+ <val o="1355f4" v="0.16"/>
+ <val o="136404" v="0.227"/>
+ <val o="137214" v="0.243"/>
+ <val o="138024" v="0.236"/>
+ <val o="138e33" v="0.239"/>
+ <val o="139c44" v="0.074"/>
+ <val o="13aa54" v="0.086"/>
+ <val o="13b865" v="0.031"/>
+ <val o="13c67e" v="0.412"/>
+ <val o="13d48e" v="0.199"/>
+ <val o="13e29e" v="0.15"/>
+ <val o="13f0ae" v="0.14"/>
+ <val o="13febf" v="0.218"/>
+ <val o="140ccf" v="0.309"/>
+ <val o="141adf" v="0.206"/>
+ <val o="1428ef" v="0.032"/>
+ <val o="1436ff" v="0.065"/>
+ <val o="14450f" v="0.054"/>
+ <val o="14531f" v="0.037"/>
+ <val o="146130" v="0.025"/>
+ <val o="146f40" v="0.09"/>
+ <val o="147d44" v="0.03"/>
+ <val o="148b57" v="0.038"/>
+ <val o="149965" v="0.026"/>
+ <val o="14a775" v="0.109"/>
+ <val o="14b584" v="0.086"/>
+ <val o="14c397" v="0.251"/>
+ <val o="14d1a4" v="0.225"/>
+ <val o="14dfb6" v="0.193"/>
+ <val o="14edc5" v="0.103"/>
+ <val o="14fbd5" v="0.044"/>
+ <val o="1509e5" v="0.023"/>
+ <val o="1517ff" v="0.068"/>
+ <val o="152605" v="0.157"/>
+ <val o="153415" v="0.105"/>
+ <val o="154225" v="0.097"/>
+ <val o="155035" v="0.127"/>
+ <val o="155e45" v="0.189"/>
+ <val o="156c55" v="0.281"/>
+ <val o="157a65" v="0.162"/>
+ <val o="158875" v="0.15"/>
+ <val o="159686" v="0.246"/>
+ <val o="15a495" v="0.211"/>
+ <val o="15b2a6" v="0.188"/>
+ <val o="15c0b6" v="0.105"/>
+ <val o="15cec6" v="0.092"/>
+ <val o="15dcd5" v="0.099"/>
+ <val o="15eae6" v="0.112"/>
+ <val o="15f8f5" v="0.29"/>
+ <val o="160706" v="0.06"/>
+ <val o="161517" v="0.107"/>
+ <val o="162326" v="0.072"/>
+ <val o="163137" v="0.064"/>
+ <val o="163f46" v="0.101"/>
+ <val o="164d57" v="0.045"/>
+ <val o="165b67" v="0.035"/>
+ <val o="166982" v="0.057"/>
+ <val o="167786" v="0.07"/>
+ <val o="168596" v="0.035"/>
+ <val o="1693a6" v="0.029"/>
+ <val o="16a1b5" v="0.026"/>
+ <val o="16afc6" v="0.075"/>
+ <val o="16bdd5" v="0.178"/>
+ <val o="16cbe6" v="0.221"/>
+ <val o="16d9f6" v="0.109"/>
+ <val o="16e807" v="0.578"/>
+ <val o="16f616" v="0.633"/>
+ <val o="170429" v="0.678"/>
+ <val o="171236" v="0.456"/>
+ <val o="172047" v="0.461"/>
+ <val o="172e57" v="0.475"/>
+ <val o="173c67" v="0.487"/>
+ <val o="174a77" v="0.565"/>
+ <val o="175887" v="0.597"/>
+ <val o="176694" v="34.372"/>
+ <val o="1774a3" v="33.056"/>
+ <val o="1782b3" v="34.198"/>
+ <val o="1790c5" v="31.148"/>
+ <val o="179ed4" v="26.734"/>
+ <val o="17ace4" v="26.883"/>
+ <val o="17bafd" v="28.046"/>
+ <val o="17c90f" v="25.107"/>
+ <val o="17d71e" v="24.826"/>
+ <val o="17e52f" v="25.129"/>
+ <val o="17f33f" v="22.979"/>
+ <val o="18014f" v="22.968"/>
+ <val o="180f5f" v="28.04"/>
+ <val o="181d6e" v="30.608"/>
+ <val o="182b7f" v="35.156"/>
+ <val o="18398f" v="61.079"/>
+ <val o="1847a1" v="61.118"/>
+ <val o="1855af" v="58.214"/>
+ <val o="1863c0" v="54.149"/>
+ <val o="1871cf" v="56.141"/>
+ <val o="187fe0" v="53.757"/>
+ <val o="188def" v="57.188"/>
+ <val o="189c00" v="53.596"/>
+ <val o="18b80d" v="36.269"/>
+ <val o="18c61c" v="36.626"/>
+ <val o="18d42c" v="35.102"/>
+ <val o="18e23b" v="29.855"/>
+ <val o="18f04b" v="28.307"/>
+ <val o="18fe5e" v="25.364"/>
+ <val o="190c76" v="19.996"/>
+ <val o="191a86" v="19.748"/>
+ <val o="192896" v="19.345"/>
+ <val o="1936a6" v="18.873"/>
+ <val o="1944b7" v="18.11"/>
+ <val o="1952c6" v="20.032"/>
+ <val o="1960d7" v="25.137"/>
+ <val o="196ee6" v="27.508"/>
+ <val o="197cf8" v="29.449"/>
+ <val o="198b0f" v="27.372"/>
+ <val o="19991f" v="30.562"/>
+ <val o="19b541" v="29.963"/>
+ <val o="19c34d" v="28.336"/>
+ <val o="19d15e" v="28.102"/>
+ <val o="19df80" v="28.864"/>
+ <val o="19ed90" v="28.278"/>
+ <val o="19eebe" v="28.399"/>
+ <val o="19fb8e" v="11.016"/>
+ <val o="1a09a0" v="14.155"/>
+ <val o="1a17ae" v="19.132"/>
+ <val o="1a25be" v="20.28"/>
+ <val o="1a33cd" v="11.28"/>
+ <val o="1a41dd" v="12.25"/>
+ <val o="1a4fed" v="16.561"/>
+ <val o="1a5e08" v="15.15"/>
+ <val o="1a6c05" v="9.953"/>
+ <val o="1a7a15" v="12.732"/>
+ <val o="1a8826" v="12.958"/>
+ <val o="1a9637" v="9.685"/>
+ <val o="1aa445" v="6.805"/>
+ <val o="1ab255" v="4.559"/>
+ <val o="1ac065" v="10.632"/>
+ <val o="1ace75" v="14.64"/>
+ <val o="1adc87" v="14.182"/>
+ <val o="1aea96" v="13.717"/>
+ <val o="1af8a7" v="15.071"/>
+ <val o="1b06b7" v="13.236"/>
+ <val o="1b14c6" v="12.746"/>
+ <val o="1c7460" v="3.999"/>
+ <val o="1c8270" v="2.186"/>
+ <val o="1c907e" v="16.585"/>
+ <val o="1c9e8f" v="14.378"/>
+ <val o="1caca2" v="16.041"/>
+ <val o="1cbab1" v="15.799"/>
+ <val o="1cc8c1" v="29.25"/>
+ <val o="1cd6d0" v="27.621"/>
+ <val o="1ce4de" v="25.453"/>
+ <val o="1cf2f0" v="24.369"/>
+ <val o="1d0109" v="25.348"/>
+ <val o="1d0f06" v="28.687"/>
+ <val o="1d1d15" v="28.373"/>
+ <val o="1d2b25" v="28.801"/>
+ <val o="1d3935" v="30.045"/>
+ <val o="1d4745" v="30.644"/>
+ <val o="1d5555" v="30.354"/>
+ <val o="1d6366" v="24.933"/>
+ <val o="1d7175" v="23.813"/>
+ <val o="1d7f86" v="23.818"/>
+ <val o="1d8d95" v="15.153"/>
+ <val o="1d9ba6" v="16.69"/>
+ <val o="1da9b6" v="16.385"/>
+ <val o="1db7c7" v="15.643"/>
+ <val o="1dc5d5" v="16.269"/>
+ <val o="1dd3e6" v="16.689"/>
+ <val o="1de1f5" v="27.897"/>
+ <val o="1df006" v="31.449"/>
+ <val o="1dfe16" v="31.232"/>
+ <val o="1e0c26" v="32.001"/>
+ <val o="1e1a36" v="31.999"/>
+ <val o="1e2847" v="30.669"/>
+ <val o="1e3659" v="29.185"/>
+ <val o="1e4467" v="27.199"/>
+ <val o="1e5281" v="23.798"/>
+ <val o="1e6086" v="23.566"/>
+ <val o="1e6e96" v="23.035"/>
+ <val o="1e7ca6" v="8.573"/>
+ <val o="1e8ab5" v="7.913"/>
+ <val o="1e98c6" v="7.851"/>
+ <val o="1ea6d5" v="9.845"/>
+ <val o="1eb4e6" v="10.177"/>
+ <val o="1ec2f6" v="11.732"/>
+ <val o="1ed106" v="11.554"/>
+ <val o="1edf16" v="12.067"/>
+ <val o="1eed26" v="11.725"/>
+ <val o="1efb36" v="11.465"/>
+ <val o="1f0946" v="10.851"/>
+ <val o="1f1756" v="10.928"/>
+ <val o="1f2566" v="10.984"/>
+ <val o="1f3376" v="13.626"/>
+ <val o="1f4187" v="19.399"/>
+ <val o="1f4f96" v="16.326"/>
+ <val o="1f5da7" v="15.848"/>
+ <val o="1f6bb6" v="15.785"/>
+ <val o="1f79c7" v="14.319"/>
+ <val o="1f87d6" v="15.77"/>
+ <val o="1f95e7" v="16.295"/>
+ <val o="1fa401" v="13.382"/>
+ <val o="1fb204" v="11.752"/>
+ <val o="1fc016" v="11.694"/>
+ <val o="1fce25" v="9.24"/>
+ <val o="1fdc35" v="8.969"/>
+ <val o="1fea45" v="9.42"/>
+ <val o="1ff855" v="11.299"/>
+ <val o="200665" v="18.06"/>
+ <val o="201475" v="15.989"/>
+ <val o="202286" v="23.363"/>
+ <val o="203095" v="26.071"/>
+ <val o="203ea5" v="29.283"/>
+ <val o="204cb6" v="25.856"/>
+ <val o="205ac6" v="25.235"/>
+ <val o="2068d6" v="26.405"/>
+ <val o="2076e6" v="30.076"/>
+ <val o="2084f6" v="28.433"/>
+ <val o="209306" v="30.271"/>
+ <val o="20a116" v="28.557"/>
+ <val o="20af26" v="24.542"/>
+ <val o="20bd37" v="23.962"/>
+ <val o="20cb46" v="21.242"/>
+ <val o="20d957" v="19.633"/>
+ <val o="20e767" v="18.009"/>
+ <val o="20f581" v="17.798"/>
+ <val o="210386" v="15.304"/>
+ <val o="211194" v="13.453"/>
+ <val o="211fa5" v="13.055"/>
+ <val o="212db5" v="12.872"/>
+ <val o="213bc5" v="13.544"/>
+ <val o="2149d6" v="17.25"/>
+ <val o="2157e5" v="21.046"/>
+ <val o="2165f6" v="25.832"/>
+ <val o="217406" v="27.791"/>
+ <val o="218217" v="28.054"/>
+ <val o="219026" v="27.63"/>
+ <val o="219e39" v="28.457"/>
+ <val o="21ac46" v="27.725"/>
+ <val o="21ba57" v="27.922"/>
+ <val o="21c867" v="28.25"/>
+ <val o="21d677" v="27.539"/>
+ <val o="21e487" v="26.251"/>
+ <val o="21f296" v="25.947"/>
+ <val o="2200a6" v="24.671"/>
+ <val o="220eb7" v="24.383"/>
+ <val o="221cc6" v="22.742"/>
+ <val o="222ad7" v="17.742"/>
+ <val o="2238e7" v="16.117"/>
+ <val o="224701" v="14.548"/>
+ <val o="225505" v="18.418"/>
+ <val o="226315" v="10.147"/>
+ <val o="227125" v="10.648"/>
+ <val o="227f35" v="13.062"/>
+ <val o="228d45" v="17.082"/>
+ <val o="229b54" v="15.723"/>
+ <val o="22a965" v="17.627"/>
+ <val o="22b776" v="21.083"/>
+ <val o="22c586" v="24.293"/>
+ <val o="22d397" v="26.823"/>
+ <val o="22e1a6" v="27.04"/>
+ <val o="22efb6" v="22.091"/>
+ <val o="22fdc7" v="21.514"/>
+ <val o="230bd7" v="20.922"/>
+ <val o="2319e6" v="25.061"/>
+ <val o="2327f6" v="25.959"/>
+ <val o="23361b" v="27.644"/>
+ <val o="234416" v="25.578"/>
+ <val o="235226" v="24.199"/>
+ <val o="236037" v="23.83"/>
+ <val o="236e46" v="22.719"/>
+ <val o="237c57" v="20.952"/>
+ <val o="238a66" v="18.382"/>
+ <val o="239881" v="14.928"/>
+ <val o="23a685" v="14.859"/>
+ <val o="23b495" v="14.081"/>
+ <val o="23c2a4" v="13.309"/>
+ <val o="23d0b5" v="13.726"/>
+ <val o="23dec4" v="15.071"/>
+ <val o="23ecd5" v="17.064"/>
+ <val o="23fae4" v="20.612"/>
+ <val o="2408f6" v="24.891"/>
+ <val o="241706" v="32.942"/>
+ <val o="242518" v="34.247"/>
+ <val o="243325" v="34.787"/>
+ <val o="244137" v="31.176"/>
+ <val o="244f46" v="29.806"/>
+ <val o="246b66" v="30.569"/>
+ <val o="247976" v="29.175"/>
+ <val o="248786" v="34.921"/>
+ <val o="24957e" v="28.767"/>
+ <val o="24a38f" v="25.797"/>
+ <val o="24b19c" v="26.161"/>
+ <val o="24bfac" v="24.769"/>
+ <val o="24cdbc" v="24.053"/>
+ <val o="24dbcd" v="20.28"/>
+ <val o="24e9e5" v="18.22"/>
+ <val o="24f808" v="15.345"/>
+ <val o="250616" v="15.953"/>
+ <val o="251426" v="15.884"/>
+ <val o="252236" v="15.054"/>
+ <val o="253047" v="16.014"/>
+ <val o="253e56" v="19.574"/>
+ <val o="254c67" v="20.065"/>
+ <val o="255a76" v="23.936"/>
+ <val o="256887" v="29.274"/>
+ <val o="257697" v="31.691"/>
+ <val o="2584a8" v="75.154"/>
+ <val o="2592b6" v="41.458"/>
+ <val o="25a0c7" v="21.221"/>
+ <val o="25aed7" v="29.417"/>
+ <val o="25bce7" v="28.597"/>
+ <val o="25caf8" v="27.256"/>
+ <val o="25d907" v="28.925"/>
+ <val o="25e718" v="29.38"/>
+ <val o="25f527" v="26.559"/>
+ <val o="260338" v="25.234"/>
+ <val o="261149" v="23.312"/>
+ <val o="261f59" v="21.317"/>
+ <val o="262d68" v="20.761"/>
+ <val o="263b83" v="16.36"/>
+ <val o="264986" v="15.657"/>
+ <val o="265795" v="16.618"/>
+ <val o="2665a6" v="17.888"/>
+ <val o="2673b5" v="16.861"/>
+ <val o="2681c6" v="16.617"/>
+ <val o="268fd5" v="17.428"/>
+ <val o="269de6" v="18.225"/>
+ <val o="26abf6" v="18.415"/>
+ <val o="26ba06" v="22.126"/>
+ <val o="26c817" v="22.126"/>
+ <val o="26d62b" v="25.782"/>
+ <val o="26e436" v="22.774"/>
+ <val o="26f247" v="22.774"/>
+ <val o="270057" v="22.909"/>
+ <val o="270e67" v="23.139"/>
+ <val o="271c77" v="21.553"/>
+ <val o="272a87" v="23.539"/>
+ <val o="273897" v="23.139"/>
+ <val o="2746a8" v="22.735"/>
+ <val o="2754b9" v="22.335"/>
+ <val o="2762c7" v="23.205"/>
+ <val o="2770d8" v="18.238"/>
+ <val o="277ee7" v="14.136"/>
+ </par>
+ <par memind="9812" h="3dc1a8de">
+ <val o="0" v="114.081"/>
+ <val o="e08" v="117.19"/>
+ <val o="1c32" v="118.964"/>
+ <val o="2a3c" v="120.564"/>
+ <val o="3835" v="118.747"/>
+ <val o="4645" v="116.529"/>
+ <val o="5455" v="109.384"/>
+ <val o="6265" v="121.356"/>
+ <val o="7075" v="119.014"/>
+ <val o="7e85" v="116.226"/>
+ <val o="8c96" v="120.175"/>
+ <val o="9aa5" v="120.949"/>
+ <val o="a8b6" v="124.2"/>
+ <val o="b6c5" v="124.043"/>
+ <val o="c4d7" v="117.761"/>
+ <val o="d30b" v="118.092"/>
+ <val o="e0f6" v="118.354"/>
+ <val o="ef06" v="118.633"/>
+ <val o="fd17" v="118.494"/>
+ <val o="10b27" v="121.243"/>
+ <val o="11937" v="122.278"/>
+ <val o="12746" v="119.689"/>
+ <val o="13556" v="121.165"/>
+ <val o="14366" v="125.688"/>
+ <val o="15181" v="127.517"/>
+ <val o="15f85" v="119.508"/>
+ <val o="16d95" v="121.27"/>
+ <val o="17ba4" v="121.262"/>
+ <val o="189b5" v="120.595"/>
+ <val o="197c4" v="118.725"/>
+ <val o="1a5d5" v="126.913"/>
+ <val o="1b3e6" v="125.984"/>
+ <val o="1c1f6" v="124.971"/>
+ <val o="1d005" v="121.722"/>
+ <val o="1de15" v="122.233"/>
+ <val o="1ec25" v="122.836"/>
+ <val o="1fa36" v="124.125"/>
+ <val o="20845" v="125.105"/>
+ <val o="21656" v="125.266"/>
+ <val o="22465" v="125.381"/>
+ <val o="23276" v="123.688"/>
+ <val o="24086" v="119.437"/>
+ <val o="24e99" v="119.167"/>
+ <val o="25ca7" v="120.334"/>
+ <val o="26ab7" v="119.837"/>
+ <val o="278c6" v="120.109"/>
+ <val o="286d6" v="122.074"/>
+ <val o="294e6" v="125.542"/>
+ <val o="2a301" v="125.638"/>
+ <val o="2b105" v="117.398"/>
+ <val o="2bf15" v="118.807"/>
+ <val o="2cd25" v="119.644"/>
+ <val o="2db35" v="119.674"/>
+ <val o="2e946" v="117.549"/>
+ <val o="2f755" v="113.229"/>
+ <val o="30566" v="125.153"/>
+ <val o="31375" v="124.691"/>
+ <val o="3219e" v="123.556"/>
+ <val o="32f96" v="123.231"/>
+ <val o="33da6" v="123.404"/>
+ <val o="34bb6" v="123.932"/>
+ <val o="359de" v="123.328"/>
+ <val o="367d6" v="122.641"/>
+ <val o="375e6" v="121.544"/>
+ <val o="3840e" v="118.209"/>
+ <val o="3921e" v="118.675"/>
+ <val o="3a016" v="118.325"/>
+ <val o="3ae27" v="121.893"/>
+ <val o="3bc36" v="120.711"/>
+ <val o="3ca47" v="119.854"/>
+ <val o="3d856" v="120.165"/>
+ <val o="3e667" v="122.996"/>
+ <val o="3f481" v="126.557"/>
+ <val o="40285" v="124.061"/>
+ <val o="41095" v="124.874"/>
+ <val o="41ea5" v="125.244"/>
+ <val o="42cb5" v="125.083"/>
+ <val o="43ac5" v="123.182"/>
+ <val o="448d5" v="119.311"/>
+ <val o="456e6" v="122.524"/>
+ <val o="464f5" v="121.173"/>
+ <val o="480ff" v="118.696"/>
+ <val o="48f0e" v="117.559"/>
+ <val o="49d1d" v="118.947"/>
+ <val o="4ab46" v="118.797"/>
+ <val o="4b955" v="117.048"/>
+ <val o="4c769" v="116.182"/>
+ <val o="4d577" v="119.101"/>
+ <val o="4e387" v="119.152"/>
+ <val o="4f196" v="116.814"/>
+ <val o="4ffa6" v="118.943"/>
+ <val o="50dd0" v="120.844"/>
+ <val o="51bc6" v="119.109"/>
+ <val o="529d6" v="120.802"/>
+ <val o="537e7" v="123.095"/>
+ <val o="54600" v="125.922"/>
+ <val o="55406" v="122.082"/>
+ <val o="56215" v="123.001"/>
+ <val o="57026" v="123.033"/>
+ <val o="57e36" v="122.972"/>
+ <val o="58c46" v="120.717"/>
+ <val o="59a70" v="121.599"/>
+ <val o="5a867" v="120.977"/>
+ <val o="5b676" v="119.038"/>
+ <val o="5c487" v="115.798"/>
+ <val o="5d296" v="119.913"/>
+ <val o="5e0a9" v="120.284"/>
+ <val o="5eeb8" v="119.451"/>
+ <val o="5fcc6" v="118.325"/>
+ <val o="60ad7" v="117.111"/>
+ <val o="618e7" v="117.263"/>
+ <val o="626f7" v="120.147"/>
+ <val o="63507" v="117.534"/>
+ <val o="64317" v="118.902"/>
+ <val o="65127" v="120.099"/>
+ <val o="65f37" v="121.434"/>
+ <val o="66d46" v="121.986"/>
+ <val o="67b57" v="120.683"/>
+ <val o="68967" v="122.861"/>
+ <val o="69782" v="119.35"/>
+ <val o="6a586" v="120.845"/>
+ <val o="6b395" v="122.119"/>
+ <val o="6c1a6" v="122.506"/>
+ <val o="6cfb5" v="121.462"/>
+ <val o="6ddc6" v="118.909"/>
+ <val o="6ebd6" v="116.372"/>
+ <val o="6f9e6" v="121.311"/>
+ <val o="707f6" v="119.412"/>
+ <val o="71607" v="118.281"/>
+ <val o="72417" v="118.148"/>
+ <val o="73227" v="117.811"/>
+ <val o="74037" v="121.694"/>
+ <val o="74e47" v="120.755"/>
+ <val o="75c57" v="118.651"/>
+ <val o="76a63" v="118.08"/>
+ <val o="77873" v="118.282"/>
+ <val o="78680" v="113.911"/>
+ <val o="7948f" v="116.941"/>
+ <val o="7a29f" v="119.508"/>
+ <val o="7b0af" v="119.071"/>
+ <val o="7bebf" v="121.146"/>
+ <val o="7cccf" v="121.336"/>
+ <val o="7dadf" v="122.095"/>
+ <val o="7e8fa" v="121.785"/>
+ <val o="7f70a" v="124.065"/>
+ <val o="8051a" v="125.455"/>
+ <val o="8132a" v="126.011"/>
+ <val o="8213a" v="125.018"/>
+ <val o="82f4a" v="122.741"/>
+ <val o="83d5a" v="120.26"/>
+ <val o="84b6a" v="118.856"/>
+ <val o="8597a" v="118.817"/>
+ <val o="8678b" v="117.807"/>
+ <val o="8759b" v="117.444"/>
+ <val o="883ac" v="119.967"/>
+ <val o="891bb" v="121.141"/>
+ <val o="89fca" v="120.259"/>
+ <val o="8adda" v="118.558"/>
+ <val o="8bbeb" v="118.812"/>
+ <val o="8c9fc" v="118.633"/>
+ <val o="8d80b" v="118.948"/>
+ <val o="8e61a" v="117.315"/>
+ <val o="8f42a" v="118.146"/>
+ <val o="9023a" v="120.121"/>
+ <val o="9104a" v="120.561"/>
+ <val o="91e5a" v="118.638"/>
+ <val o="92c6a" v="122.844"/>
+ <val o="93a84" v="125.153"/>
+ <val o="94885" v="123.463"/>
+ <val o="95694" v="122.793"/>
+ <val o="964a5" v="123.093"/>
+ <val o="972b4" v="122.535"/>
+ <val o="980c5" v="120.189"/>
+ <val o="98ed4" v="123.097"/>
+ <val o="99ce5" v="119.336"/>
+ <val o="9aaf5" v="118.5"/>
+ <val o="9b906" v="115.743"/>
+ <val o="9c716" v="119.722"/>
+ <val o="9d526" v="120.222"/>
+ <val o="9e336" v="118.918"/>
+ <val o="9f145" v="117.551"/>
+ <val o="9ff56" v="116.649"/>
+ <val o="a0d65" v="116.52"/>
+ <val o="a1b77" v="116.703"/>
+ <val o="a2986" v="118.806"/>
+ <val o="a3795" v="118.461"/>
+ <val o="a45a7" v="119.593"/>
+ <val o="a53b6" v="119.78"/>
+ <val o="a61c7" v="119.973"/>
+ <val o="a6fd6" v="120.761"/>
+ <val o="a7e00" v="122.782"/>
+ <val o="a8c00" v="125.444"/>
+ <val o="a9a05" v="118.255"/>
+ <val o="aa815" v="119.302"/>
+ <val o="ab625" v="120.149"/>
+ <val o="ac435" v="119.678"/>
+ <val o="ad245" v="117.138"/>
+ <val o="ae055" v="114.681"/>
+ <val o="aee65" v="120.851"/>
+ <val o="afc75" v="119.099"/>
+ <val o="b0a85" v="116.609"/>
+ <val o="b26a6" v="116.729"/>
+ <val o="b34b6" v="118.045"/>
+ <val o="b42c6" v="115.477"/>
+ <val o="b50d6" v="115.891"/>
+ <val o="b5ee7" v="114.24"/>
+ <val o="b6cf6" v="122.794"/>
+ <val o="b7b07" v="119.002"/>
+ <val o="b8917" v="118.701"/>
+ <val o="b9728" v="119.602"/>
+ <val o="ba537" v="120.963"/>
+ <val o="bb347" v="119.924"/>
+ <val o="bc157" v="120.628"/>
+ <val o="bcf67" v="123.122"/>
+ <val o="bdd81" v="118.683"/>
+ <val o="beb86" v="118.301"/>
+ <val o="bf995" v="118.882"/>
+ <val o="c07a6" v="120.187"/>
+ <val o="c15b5" v="119.576"/>
+ <val o="c23c6" v="118.243"/>
+ <val o="c31d5" v="115.692"/>
+ <val o="c3fe6" v="117.56"/>
+ <val o="c4df5" v="116.057"/>
+ <val o="c5c06" v="117.411"/>
+ <val o="c6a16" v="117.486"/>
+ <val o="c7826" v="116.745"/>
+ <val o="c8636" v="118.265"/>
+ <val o="c9446" v="118.202"/>
+ <val o="ca256" v="118.004"/>
+ <val o="cb066" v="117.255"/>
+ <val o="cbe76" v="122.71"/>
+ <val o="ccc87" v="118.736"/>
+ <val o="cda96" v="116.734"/>
+ <val o="ce8a8" v="118.339"/>
+ <val o="cf6b7" v="118.66"/>
+ <val o="d04c8" v="119.703"/>
+ <val o="d12d7" v="121.536"/>
+ <val o="d20e7" v="123.419"/>
+ <val o="d2f02" v="126.186"/>
+ <val o="d3d05" v="119.31"/>
+ <val o="d4b15" v="120.58"/>
+ <val o="d5926" v="120.857"/>
+ <val o="d6735" v="119.582"/>
+ <val o="d7546" v="117.426"/>
+ <val o="d8355" v="124.349"/>
+ <val o="d9166" v="122.435"/>
+ <val o="d9f75" v="120.692"/>
+ <val o="dad87" v="117.233"/>
+ <val o="dbb97" v="116.862"/>
+ <val o="dc9a8" v="116.728"/>
+ <val o="dd7b7" v="118.212"/>
+ <val o="de5c6" v="117.857"/>
+ <val o="df3d7" v="117.176"/>
+ <val o="e01d7" v="117.271"/>
+ <val o="e0fe5" v="116.796"/>
+ <val o="e1df5" v="117.361"/>
+ <val o="e2c04" v="119.769"/>
+ <val o="e3a14" v="121.05"/>
+ <val o="e4824" v="120.921"/>
+ <val o="e5634" v="122.497"/>
+ <val o="e6444" v="120.677"/>
+ <val o="e7255" v="122.67"/>
+ <val o="e806f" v="123.778"/>
+ <val o="e8e7f" v="116.655"/>
+ <val o="e9c8e" v="118.109"/>
+ <val o="eaa9f" v="118.372"/>
+ <val o="eb8ae" v="117.527"/>
+ <val o="ec6bf" v="113.518"/>
+ <val o="ed4ce" v="123.496"/>
+ <val o="ee2df" v="120.611"/>
+ <val o="ef0ef" v="118.704"/>
+ <val o="eff01" v="115.651"/>
+ <val o="f0d10" v="117.487"/>
+ <val o="f1b20" v="117.186"/>
+ <val o="f2930" v="121.114"/>
+ <val o="f3740" v="117.611"/>
+ <val o="f4551" v="117.892"/>
+ <val o="f5361" v="117.718"/>
+ <val o="f6172" v="117.584"/>
+ <val o="f6f80" v="117.38"/>
+ <val o="f7d91" v="119.222"/>
+ <val o="f8ba1" v="121.037"/>
+ <val o="f99b1" v="120.221"/>
+ <val o="fa7c0" v="118.379"/>
+ <val o="fb5d1" v="118.238"/>
+ <val o="fc3e0" v="123.037"/>
+ <val o="fd1fb" v="123.007"/>
+ <val o="fe00b" v="126.294"/>
+ <val o="fee1c" v="123.682"/>
+ <val o="ffc2c" v="123.591"/>
+ <val o="100a3b" v="122.918"/>
+ <val o="10184c" v="121.387"/>
+ <val o="10265b" v="117.586"/>
+ <val o="10346c" v="117.716"/>
+ <val o="10427b" v="119.191"/>
+ <val o="10508d" v="117.355"/>
+ <val o="105e9d" v="117.862"/>
+ <val o="106cad" v="117.531"/>
+ <val o="107abd" v="119.886"/>
+ <val o="1088cd" v="119.426"/>
+ <val o="1096de" v="118.72"/>
+ <val o="10a4ed" v="119.004"/>
+ <val o="10b2fe" v="118.725"/>
+ <val o="10c10d" v="116.196"/>
+ <val o="10cf1e" v="118.111"/>
+ <val o="10dd2e" v="119.001"/>
+ <val o="10eb66" v="120.963"/>
+ <val o="10f94e" v="121.34"/>
+ <val o="11075e" v="119.151"/>
+ <val o="11156d" v="120.797"/>
+ <val o="112388" v="123.519"/>
+ <val o="113187" v="122.366"/>
+ <val o="113fb0" v="123.381"/>
+ <val o="114da6" v="123.296"/>
+ <val o="115bb6" v="123.047"/>
+ <val o="1169c6" v="120.874"/>
+ <val o="1177d6" v="118.017"/>
+ <val o="1185e8" v="118.388"/>
+ <val o="1193f7" v="117.753"/>
+ <val o="11a208" v="119.761"/>
+ <val o="11b017" v="121.547"/>
+ <val o="11be2f" v="122.028"/>
+ <val o="11cc37" v="122.195"/>
+ <val o="11da47" v="121.783"/>
+ <val o="11e857" v="120.581"/>
+ <val o="11f667" v="121.685"/>
+ <val o="120578" v="120.972"/>
+ <val o="121386" v="116.836"/>
+ <val o="122196" v="117.633"/>
+ <val o="122fa6" v="118.83"/>
+ <val o="123db5" v="120.746"/>
+ <val o="124bc5" v="122.541"/>
+ <val o="1259d5" v="120.249"/>
+ <val o="1267e4" v="122.708"/>
+ <val o="127600" v="124.538"/>
+ <val o="128305" v="125.289"/>
+ <val o="129115" v="125.325"/>
+ <val o="129f25" v="125.49"/>
+ <val o="12ad35" v="124.672"/>
+ <val o="12bb45" v="122.813"/>
+ <val o="12c954" v="121.573"/>
+ <val o="12d766" v="120.719"/>
+ <val o="12e575" v="119.706"/>
+ <val o="12f386" v="116.935"/>
+ <val o="130196" v="117.255"/>
+ <val o="130fa6" v="118.365"/>
+ <val o="131db7" v="119.829"/>
+ <val o="132bc5" v="119.607"/>
+ <val o="1339d4" v="0.109"/>
+ <val o="1347e5" v="0.109"/>
+ <val o="1355f4" v="0.108"/>
+ <val o="136404" v="0.106"/>
+ <val o="137214" v="0.106"/>
+ <val o="138024" v="0.107"/>
+ <val o="138e33" v="0.108"/>
+ <val o="139c44" v="0.109"/>
+ <val o="13aa54" v="0.108"/>
+ <val o="13b865" v="0.109"/>
+ <val o="13c67e" v="0.101"/>
+ <val o="13d48e" v="0.104"/>
+ <val o="13e29e" v="0.106"/>
+ <val o="13f0ae" v="0.106"/>
+ <val o="13febf" v="0.104"/>
+ <val o="140ccf" v="0.102"/>
+ <val o="141adf" v="0.104"/>
+ <val o="1428ef" v="0.108"/>
+ <val o="1436ff" v="0.107"/>
+ <val o="14450f" v="0.107"/>
+ <val o="14531f" v="0.107"/>
+ <val o="146130" v="0.108"/>
+ <val o="146f40" v="0.11"/>
+ <val o="147d44" v="0.108"/>
+ <val o="148b57" v="0.108"/>
+ <val o="149965" v="0.108"/>
+ <val o="14a775" v="0.106"/>
+ <val o="14b584" v="0.11"/>
+ <val o="14c397" v="0.107"/>
+ <val o="14d1a4" v="0.107"/>
+ <val o="14dfb6" v="0.108"/>
+ <val o="14edc5" v="0.11"/>
+ <val o="14fbd5" v="0.112"/>
+ <val o="1509e5" v="0.112"/>
+ <val o="1517ff" v="0.115"/>
+ <val o="152605" v="0.108"/>
+ <val o="153415" v="0.109"/>
+ <val o="154225" v="0.11"/>
+ <val o="155035" v="0.109"/>
+ <val o="155e45" v="0.107"/>
+ <val o="156c55" v="0.104"/>
+ <val o="157a65" v="0.107"/>
+ <val o="158875" v="0.107"/>
+ <val o="159686" v="0.106"/>
+ <val o="15a495" v="0.107"/>
+ <val o="15b2a6" v="0.108"/>
+ <val o="15c0b6" v="0.109"/>
+ <val o="15cec6" v="0.109"/>
+ <val o="15dcd5" v="0.108"/>
+ <val o="15eae6" v="0.108"/>
+ <val o="15f8f5" v="0.104"/>
+ <val o="160706" v="0.11"/>
+ <val o="161517" v="0.109"/>
+ <val o="162326" v="0.11"/>
+ <val o="163137" v="0.111"/>
+ <val o="163f46" v="0.109"/>
+ <val o="164d57" v="0.11"/>
+ <val o="165b67" v="0.112"/>
+ <val o="166982" v="0.111"/>
+ <val o="167786" v="0.112"/>
+ <val o="168596" v="0.113"/>
+ <val o="1693a6" v="0.113"/>
+ <val o="16a1b5" v="0.112"/>
+ <val o="16afc6" v="0.111"/>
+ <val o="16bdd5" v="0.109"/>
+ <val o="16cbe6" v="0.107"/>
+ <val o="16d9f6" v="0.111"/>
+ <val o="16e807" v="0.11"/>
+ <val o="16f616" v="0.11"/>
+ <val o="170429" v="0.111"/>
+ <val o="171236" v="0.112"/>
+ <val o="172047" v="0.112"/>
+ <val o="172e57" v="0.111"/>
+ <val o="173c67" v="0.111"/>
+ <val o="174a77" v="0.11"/>
+ <val o="175887" v="0.108"/>
+ <val o="176694" v="118.351"/>
+ <val o="1774a3" v="119.763"/>
+ <val o="1782b3" v="120.872"/>
+ <val o="1790c5" v="121.443"/>
+ <val o="179ed4" v="124.587"/>
+ <val o="17ace4" v="127.119"/>
+ <val o="17bafd" v="128.887"/>
+ <val o="17c90f" v="127.107"/>
+ <val o="17d71e" v="127.1"/>
+ <val o="17e52f" v="127.35"/>
+ <val o="17f33f" v="126.552"/>
+ <val o="18014f" v="124.71"/>
+ <val o="180f5f" v="124.077"/>
+ <val o="181d6e" v="125.099"/>
+ <val o="182b7f" v="125.025"/>
+ <val o="18398f" v="123.954"/>
+ <val o="1847a1" v="123.641"/>
+ <val o="1855af" v="124.308"/>
+ <val o="1863c0" v="126.201"/>
+ <val o="1871cf" v="125.426"/>
+ <val o="187fe0" v="125.045"/>
+ <val o="188def" v="124.868"/>
+ <val o="189c00" v="123.854"/>
+ <val o="18b80d" v="117.177"/>
+ <val o="18c61c" v="120.985"/>
+ <val o="18d42c" v="121.689"/>
+ <val o="18e23b" v="121.514"/>
+ <val o="18f04b" v="123.76"/>
+ <val o="18fe5e" v="125.848"/>
+ <val o="190c76" v="123.162"/>
+ <val o="191a86" v="124.87"/>
+ <val o="192896" v="126.457"/>
+ <val o="1936a6" v="126.565"/>
+ <val o="1944b7" v="125.821"/>
+ <val o="1952c6" v="123.654"/>
+ <val o="1960d7" v="120.985"/>
+ <val o="196ee6" v="121.019"/>
+ <val o="197cf8" v="120.771"/>
+ <val o="198b0f" v="120.139"/>
+ <val o="19991f" v="120.067"/>
+ <val o="19b541" v="122.459"/>
+ <val o="19c34d" v="121.603"/>
+ <val o="19d15e" v="120.856"/>
+ <val o="19df80" v="120.882"/>
+ <val o="19ed90" v="120.049"/>
+ <val o="19eebe" v="119.903"/>
+ <val o="19fb8e" v="116.012"/>
+ <val o="1a09a0" v="119.283"/>
+ <val o="1a17ae" v="120.303"/>
+ <val o="1a25be" v="121.728"/>
+ <val o="1a33cd" v="121.516"/>
+ <val o="1a41dd" v="122.849"/>
+ <val o="1a4fed" v="126.093"/>
+ <val o="1a5e08" v="126.725"/>
+ <val o="1a6c05" v="124.883"/>
+ <val o="1a7a15" v="125.931"/>
+ <val o="1a8826" v="126.096"/>
+ <val o="1a9637" v="124.906"/>
+ <val o="1aa445" v="123.654"/>
+ <val o="1ab255" v="121.493"/>
+ <val o="1ac065" v="123.897"/>
+ <val o="1ace75" v="123.756"/>
+ <val o="1adc87" v="122.369"/>
+ <val o="1aea96" v="121.934"/>
+ <val o="1af8a7" v="122.306"/>
+ <val o="1b06b7" v="124.041"/>
+ <val o="1b14c6" v="123.698"/>
+ <val o="1c7460" v="120.029"/>
+ <val o="1c8270" v="120.033"/>
+ <val o="1c907e" v="119.314"/>
+ <val o="1c9e8f" v="120.479"/>
+ <val o="1caca2" v="121.91"/>
+ <val o="1cbab1" v="122.485"/>
+ <val o="1cc8c1" v="118.564"/>
+ <val o="1cd6d0" v="119.367"/>
+ <val o="1ce4de" v="120.808"/>
+ <val o="1cf2f0" v="123.105"/>
+ <val o="1d0109" v="125.021"/>
+ <val o="1d0f06" v="123.274"/>
+ <val o="1d1d15" v="123.92"/>
+ <val o="1d2b25" v="123.876"/>
+ <val o="1d3935" v="122.883"/>
+ <val o="1d4745" v="122.072"/>
+ <val o="1d5555" v="121.544"/>
+ <val o="1d6366" v="123.27"/>
+ <val o="1d7175" v="123.513"/>
+ <val o="1d7f86" v="122.604"/>
+ <val o="1d8d95" v="121.281"/>
+ <val o="1d9ba6" v="121.716"/>
+ <val o="1da9b6" v="122.714"/>
+ <val o="1db7c7" v="123.129"/>
+ <val o="1dc5d5" v="123.431"/>
+ <val o="1dd3e6" v="122.987"/>
+ <val o="1de1f5" v="119.262"/>
+ <val o="1df006" v="118.087"/>
+ <val o="1dfe16" v="116.532"/>
+ <val o="1e0c26" v="118.618"/>
+ <val o="1e1a36" v="119.706"/>
+ <val o="1e2847" v="120.899"/>
+ <val o="1e3659" v="120.718"/>
+ <val o="1e4467" v="121.624"/>
+ <val o="1e5281" v="117.925"/>
+ <val o="1e6086" v="120.928"/>
+ <val o="1e6e96" v="122.34"/>
+ <val o="1e7ca6" v="122.972"/>
+ <val o="1e8ab5" v="123.05"/>
+ <val o="1e98c6" v="122.44"/>
+ <val o="1ea6d5" v="120.735"/>
+ <val o="1eb4e6" v="120.711"/>
+ <val o="1ec2f6" v="123.688"/>
+ <val o="1ed106" v="122.853"/>
+ <val o="1edf16" v="122.754"/>
+ <val o="1eed26" v="122.975"/>
+ <val o="1efb36" v="123.49"/>
+ <val o="1f0946" v="123.278"/>
+ <val o="1f1756" v="121.776"/>
+ <val o="1f2566" v="121.458"/>
+ <val o="1f3376" v="120.109"/>
+ <val o="1f4187" v="116.832"/>
+ <val o="1f4f96" v="119.948"/>
+ <val o="1f5da7" v="120.022"/>
+ <val o="1f6bb6" v="120.884"/>
+ <val o="1f79c7" v="119.618"/>
+ <val o="1f87d6" v="122.811"/>
+ <val o="1f95e7" v="123.997"/>
+ <val o="1fa401" v="126.654"/>
+ <val o="1fb204" v="125.574"/>
+ <val o="1fc016" v="126.495"/>
+ <val o="1fce25" v="126.021"/>
+ <val o="1fdc35" v="125.521"/>
+ <val o="1fea45" v="123.104"/>
+ <val o="1ff855" v="121.073"/>
+ <val o="200665" v="117.997"/>
+ <val o="201475" v="119.376"/>
+ <val o="202286" v="119.302"/>
+ <val o="203095" v="120.24"/>
+ <val o="203ea5" v="120.497"/>
+ <val o="204cb6" v="123.276"/>
+ <val o="205ac6" v="121.287"/>
+ <val o="2068d6" v="120.492"/>
+ <val o="2076e6" v="119.643"/>
+ <val o="2084f6" v="117.626"/>
+ <val o="209306" v="121.9"/>
+ <val o="20a116" v="120.861"/>
+ <val o="20af26" v="120.493"/>
+ <val o="20bd37" v="121.526"/>
+ <val o="20cb46" v="119.46"/>
+ <val o="20d957" v="120.284"/>
+ <val o="20e767" v="121.713"/>
+ <val o="20f581" v="124.203"/>
+ <val o="210386" v="126.587"/>
+ <val o="211194" v="124.627"/>
+ <val o="211fa5" v="124.526"/>
+ <val o="212db5" v="123.821"/>
+ <val o="213bc5" v="122.357"/>
+ <val o="2149d6" v="118.642"/>
+ <val o="2157e5" v="116.651"/>
+ <val o="2165f6" v="122.439"/>
+ <val o="217406" v="120.232"/>
+ <val o="218217" v="119.322"/>
+ <val o="219026" v="120.236"/>
+ <val o="219e39" v="120.346"/>
+ <val o="21ac46" v="119.148"/>
+ <val o="21ba57" v="118.907"/>
+ <val o="21c867" v="117.874"/>
+ <val o="21d677" v="122.584"/>
+ <val o="21e487" v="120.252"/>
+ <val o="21f296" v="120.469"/>
+ <val o="2200a6" v="121.303"/>
+ <val o="220eb7" v="122.183"/>
+ <val o="221cc6" v="118.747"/>
+ <val o="222ad7" v="120.81"/>
+ <val o="2238e7" v="123.937"/>
+ <val o="224701" v="126.687"/>
+ <val o="225505" v="119.553"/>
+ <val o="226315" v="119.757"/>
+ <val o="227125" v="119.753"/>
+ <val o="227f35" v="117.557"/>
+ <val o="228d45" v="116.262"/>
+ <val o="229b54" v="122.469"/>
+ <val o="22a965" v="119.765"/>
+ <val o="22b776" v="119.78"/>
+ <val o="22c586" v="119.006"/>
+ <val o="22d397" v="118.696"/>
+ <val o="22e1a6" v="119.018"/>
+ <val o="22efb6" v="120.765"/>
+ <val o="22fdc7" v="120.41"/>
+ <val o="230bd7" v="119.608"/>
+ <val o="2319e6" v="119.268"/>
+ <val o="2327f6" v="118.221"/>
+ <val o="23361b" v="119.234"/>
+ <val o="234416" v="118.199"/>
+ <val o="235226" v="119.524"/>
+ <val o="236037" v="120.76"/>
+ <val o="236e46" v="118.446"/>
+ <val o="237c57" v="119.86"/>
+ <val o="238a66" v="121.458"/>
+ <val o="239881" v="120.937"/>
+ <val o="23a685" v="122.353"/>
+ <val o="23b495" v="123.085"/>
+ <val o="23c2a4" v="123.145"/>
+ <val o="23d0b5" v="122.277"/>
+ <val o="23dec4" v="121.153"/>
+ <val o="23ecd5" v="119.31"/>
+ <val o="23fae4" v="120.616"/>
+ <val o="2408f6" v="118.482"/>
+ <val o="241706" v="117.789"/>
+ <val o="242518" v="118.178"/>
+ <val o="243325" v="118.65"/>
+ <val o="244137" v="119.893"/>
+ <val o="244f46" v="119.172"/>
+ <val o="246b66" v="118.88"/>
+ <val o="247976" v="118.03"/>
+ <val o="248786" v="115.2"/>
+ <val o="24957e" v="118.091"/>
+ <val o="24a38f" v="119.601"/>
+ <val o="24b19c" v="120.844"/>
+ <val o="24bfac" v="120.094"/>
+ <val o="24cdbc" v="123.851"/>
+ <val o="24dbcd" v="123.499"/>
+ <val o="24e9e5" v="124.806"/>
+ <val o="24f808" v="124.27"/>
+ <val o="250616" v="124.985"/>
+ <val o="251426" v="125.02"/>
+ <val o="252236" v="123.483"/>
+ <val o="253047" v="122.436"/>
+ <val o="253e56" v="120.041"/>
+ <val o="254c67" v="119.496"/>
+ <val o="255a76" v="119.362"/>
+ <val o="256887" v="117.767"/>
+ <val o="257697" v="118.616"/>
+ <val o="2584a8" v="117.274"/>
+ <val o="2592b6" v="118.975"/>
+ <val o="25a0c7" v="119.79"/>
+ <val o="25aed7" v="119.331"/>
+ <val o="25bce7" v="119.194"/>
+ <val o="25caf8" v="118.637"/>
+ <val o="25d907" v="120.535"/>
+ <val o="25e718" v="119.8"/>
+ <val o="25f527" v="120.403"/>
+ <val o="260338" v="121.054"/>
+ <val o="261149" v="119.413"/>
+ <val o="261f59" v="120.38"/>
+ <val o="262d68" v="123.203"/>
+ <val o="263b83" v="121.143"/>
+ <val o="264986" v="122.976"/>
+ <val o="265795" v="123.697"/>
+ <val o="2665a6" v="124.476"/>
+ <val o="2673b5" v="123.592"/>
+ <val o="2681c6" v="123.177"/>
+ <val o="268fd5" v="121.853"/>
+ <val o="269de6" v="121.298"/>
+ <val o="26abf6" v="120.593"/>
+ <val o="26ba06" v="118.763"/>
+ <val o="26c817" v="118.278"/>
+ <val o="26d62b" v="118.596"/>
+ <val o="26e436" v="119.984"/>
+ <val o="26f247" v="119.523"/>
+ <val o="270057" v="119.574"/>
+ <val o="270e67" v="119.013"/>
+ <val o="271c77" v="119.722"/>
+ <val o="272a87" v="120.875"/>
+ <val o="273897" v="120.668"/>
+ <val o="2746a8" v="121.451"/>
+ <val o="2754b9" v="121.838"/>
+ <val o="2762c7" v="119.053"/>
+ <val o="2770d8" v="121.03"/>
+ <val o="277ee7" v="123.544"/>
+ </par>
+ <par memind="9808" h="3dc1a8de">
+ <val o="0" v="0"/>
+ <val o="e08" v="0"/>
+ <val o="1c32" v="0"/>
+ <val o="2a3c" v="0"/>
+ <val o="3835" v="0"/>
+ <val o="4645" v="0"/>
+ <val o="5455" v="0"/>
+ <val o="6265" v="0"/>
+ <val o="7075" v="0"/>
+ <val o="7e85" v="0"/>
+ <val o="8c96" v="0"/>
+ <val o="9aa5" v="0"/>
+ <val o="a8b6" v="0"/>
+ <val o="b6c5" v="0"/>
+ <val o="c4d7" v="0"/>
+ <val o="d30b" v="0"/>
+ <val o="e0f6" v="0"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="0"/>
+ <val o="11937" v="0"/>
+ <val o="12746" v="0"/>
+ <val o="13556" v="0"/>
+ <val o="14366" v="0"/>
+ <val o="15181" v="0"/>
+ <val o="15f85" v="0"/>
+ <val o="16d95" v="0"/>
+ <val o="17ba4" v="0"/>
+ <val o="189b5" v="0"/>
+ <val o="197c4" v="0"/>
+ <val o="1a5d5" v="0"/>
+ <val o="1b3e6" v="0"/>
+ <val o="1c1f6" v="0"/>
+ <val o="1d005" v="0"/>
+ <val o="1de15" v="0"/>
+ <val o="1ec25" v="0"/>
+ <val o="1fa36" v="0"/>
+ <val o="20845" v="0"/>
+ <val o="21656" v="0"/>
+ <val o="22465" v="0"/>
+ <val o="23276" v="0"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="0"/>
+ <val o="25ca7" v="0"/>
+ <val o="26ab7" v="0"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="0"/>
+ <val o="294e6" v="0"/>
+ <val o="2a301" v="0"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="0"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="0"/>
+ <val o="31375" v="0"/>
+ <val o="3219e" v="0"/>
+ <val o="32f96" v="0"/>
+ <val o="33da6" v="0"/>
+ <val o="34bb6" v="0"/>
+ <val o="359de" v="0"/>
+ <val o="367d6" v="0"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="0"/>
+ <val o="3bc36" v="0"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="0"/>
+ <val o="3e667" v="0"/>
+ <val o="3f481" v="0"/>
+ <val o="40285" v="0"/>
+ <val o="41095" v="0"/>
+ <val o="41ea5" v="0"/>
+ <val o="42cb5" v="0"/>
+ <val o="43ac5" v="0"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="0"/>
+ <val o="464f5" v="0"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="0"/>
+ <val o="54600" v="0"/>
+ <val o="55406" v="0"/>
+ <val o="56215" v="0"/>
+ <val o="57026" v="0"/>
+ <val o="57e36" v="0"/>
+ <val o="58c46" v="0"/>
+ <val o="59a70" v="0"/>
+ <val o="5a867" v="0"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="0"/>
+ <val o="5eeb8" v="0"/>
+ <val o="5fcc6" v="0"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="0"/>
+ <val o="65f37" v="0"/>
+ <val o="66d46" v="0"/>
+ <val o="67b57" v="0"/>
+ <val o="68967" v="0"/>
+ <val o="69782" v="0"/>
+ <val o="6a586" v="0"/>
+ <val o="6b395" v="0"/>
+ <val o="6c1a6" v="0"/>
+ <val o="6cfb5" v="0"/>
+ <val o="6ddc6" v="0"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="0"/>
+ <val o="707f6" v="0"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="0"/>
+ <val o="74e47" v="0"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="0"/>
+ <val o="7bebf" v="0"/>
+ <val o="7cccf" v="0"/>
+ <val o="7dadf" v="0"/>
+ <val o="7e8fa" v="0"/>
+ <val o="7f70a" v="0"/>
+ <val o="8051a" v="0"/>
+ <val o="8132a" v="0"/>
+ <val o="8213a" v="0"/>
+ <val o="82f4a" v="0"/>
+ <val o="83d5a" v="0"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="0"/>
+ <val o="891bb" v="0"/>
+ <val o="89fca" v="0"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="0"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="0"/>
+ <val o="93a84" v="0"/>
+ <val o="94885" v="0"/>
+ <val o="95694" v="0"/>
+ <val o="964a5" v="0"/>
+ <val o="972b4" v="0"/>
+ <val o="980c5" v="0"/>
+ <val o="98ed4" v="0"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="0"/>
+ <val o="9c716" v="0"/>
+ <val o="9d526" v="0"/>
+ <val o="9e336" v="0"/>
+ <val o="9f145" v="0"/>
+ <val o="9ff56" v="0"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="0"/>
+ <val o="a2986" v="0"/>
+ <val o="a3795" v="0"/>
+ <val o="a45a7" v="0"/>
+ <val o="a53b6" v="0"/>
+ <val o="a61c7" v="0"/>
+ <val o="a6fd6" v="0"/>
+ <val o="a7e00" v="0"/>
+ <val o="a8c00" v="0"/>
+ <val o="a9a05" v="0"/>
+ <val o="aa815" v="0"/>
+ <val o="ab625" v="0"/>
+ <val o="ac435" v="0"/>
+ <val o="ad245" v="0"/>
+ <val o="ae055" v="0"/>
+ <val o="aee65" v="0"/>
+ <val o="afc75" v="0"/>
+ <val o="b0a85" v="0"/>
+ <val o="b26a6" v="0"/>
+ <val o="b34b6" v="0"/>
+ <val o="b42c6" v="0"/>
+ <val o="b50d6" v="0"/>
+ <val o="b5ee7" v="0"/>
+ <val o="b6cf6" v="0"/>
+ <val o="b7b07" v="0"/>
+ <val o="b8917" v="0"/>
+ <val o="b9728" v="0"/>
+ <val o="ba537" v="0"/>
+ <val o="bb347" v="0"/>
+ <val o="bc157" v="0"/>
+ <val o="bcf67" v="0"/>
+ <val o="bdd81" v="0"/>
+ <val o="beb86" v="0"/>
+ <val o="bf995" v="0"/>
+ <val o="c07a6" v="0"/>
+ <val o="c15b5" v="0"/>
+ <val o="c23c6" v="0"/>
+ <val o="c31d5" v="0"/>
+ <val o="c3fe6" v="0"/>
+ <val o="c4df5" v="0"/>
+ <val o="c5c06" v="0"/>
+ <val o="c6a16" v="0"/>
+ <val o="c7826" v="0"/>
+ <val o="c8636" v="0"/>
+ <val o="c9446" v="0"/>
+ <val o="ca256" v="0"/>
+ <val o="cb066" v="0"/>
+ <val o="cbe76" v="0"/>
+ <val o="ccc87" v="0"/>
+ <val o="cda96" v="0"/>
+ <val o="ce8a8" v="0"/>
+ <val o="cf6b7" v="0"/>
+ <val o="d04c8" v="0"/>
+ <val o="d12d7" v="0"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="0"/>
+ <val o="d3d05" v="0"/>
+ <val o="d4b15" v="0"/>
+ <val o="d5926" v="0"/>
+ <val o="d6735" v="0"/>
+ <val o="d7546" v="0"/>
+ <val o="d8355" v="0"/>
+ <val o="d9166" v="0"/>
+ <val o="d9f75" v="0"/>
+ <val o="dad87" v="0"/>
+ <val o="dbb97" v="0"/>
+ <val o="dc9a8" v="0"/>
+ <val o="dd7b7" v="0"/>
+ <val o="de5c6" v="0"/>
+ <val o="df3d7" v="0"/>
+ <val o="e01d7" v="0"/>
+ <val o="e0fe5" v="0"/>
+ <val o="e1df5" v="0"/>
+ <val o="e2c04" v="0"/>
+ <val o="e3a14" v="0"/>
+ <val o="e4824" v="0"/>
+ <val o="e5634" v="0"/>
+ <val o="e6444" v="0"/>
+ <val o="e7255" v="0"/>
+ <val o="e806f" v="0"/>
+ <val o="e8e7f" v="0"/>
+ <val o="e9c8e" v="0"/>
+ <val o="eaa9f" v="0"/>
+ <val o="eb8ae" v="0"/>
+ <val o="ec6bf" v="0"/>
+ <val o="ed4ce" v="0"/>
+ <val o="ee2df" v="0"/>
+ <val o="ef0ef" v="0"/>
+ <val o="eff01" v="0"/>
+ <val o="f0d10" v="0"/>
+ <val o="f1b20" v="0"/>
+ <val o="f2930" v="0"/>
+ <val o="f3740" v="0"/>
+ <val o="f4551" v="0"/>
+ <val o="f5361" v="0"/>
+ <val o="f6172" v="0"/>
+ <val o="f6f80" v="0"/>
+ <val o="f7d91" v="0"/>
+ <val o="f8ba1" v="0"/>
+ <val o="f99b1" v="0"/>
+ <val o="fa7c0" v="0"/>
+ <val o="fb5d1" v="0"/>
+ <val o="fc3e0" v="0"/>
+ <val o="fd1fb" v="0"/>
+ <val o="fe00b" v="0"/>
+ <val o="fee1c" v="0"/>
+ <val o="ffc2c" v="0"/>
+ <val o="100a3b" v="0"/>
+ <val o="10184c" v="0"/>
+ <val o="10265b" v="0"/>
+ <val o="10346c" v="0"/>
+ <val o="10427b" v="0"/>
+ <val o="10508d" v="0"/>
+ <val o="105e9d" v="0"/>
+ <val o="106cad" v="0"/>
+ <val o="107abd" v="0"/>
+ <val o="1088cd" v="0"/>
+ <val o="1096de" v="0"/>
+ <val o="10a4ed" v="0"/>
+ <val o="10b2fe" v="0"/>
+ <val o="10c10d" v="0"/>
+ <val o="10cf1e" v="0"/>
+ <val o="10dd2e" v="0"/>
+ <val o="10eb66" v="0"/>
+ <val o="10f94e" v="0"/>
+ <val o="11075e" v="0"/>
+ <val o="11156d" v="0"/>
+ <val o="112388" v="0"/>
+ <val o="113187" v="0"/>
+ <val o="113fb0" v="0"/>
+ <val o="114da6" v="0"/>
+ <val o="115bb6" v="0"/>
+ <val o="1169c6" v="0"/>
+ <val o="1177d6" v="0"/>
+ <val o="1185e8" v="0"/>
+ <val o="1193f7" v="0"/>
+ <val o="11a208" v="0"/>
+ <val o="11b017" v="0"/>
+ <val o="11be2f" v="0"/>
+ <val o="11cc37" v="0"/>
+ <val o="11da47" v="0"/>
+ <val o="11e857" v="0"/>
+ <val o="11f667" v="0"/>
+ <val o="120578" v="0"/>
+ <val o="121386" v="0"/>
+ <val o="122196" v="0"/>
+ <val o="122fa6" v="0"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="0"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="0"/>
+ <val o="128305" v="0"/>
+ <val o="129115" v="0"/>
+ <val o="129f25" v="0"/>
+ <val o="12ad35" v="0"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="0"/>
+ <val o="12d766" v="0"/>
+ <val o="12e575" v="0"/>
+ <val o="12f386" v="0"/>
+ <val o="130196" v="0"/>
+ <val o="130fa6" v="0"/>
+ <val o="131db7" v="0"/>
+ <val o="132bc5" v="0"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="0"/>
+ <val o="1774a3" v="0"/>
+ <val o="1782b3" v="0"/>
+ <val o="1790c5" v="0"/>
+ <val o="179ed4" v="0"/>
+ <val o="17ace4" v="0"/>
+ <val o="17bafd" v="0"/>
+ <val o="17c90f" v="0"/>
+ <val o="17d71e" v="0"/>
+ <val o="17e52f" v="0"/>
+ <val o="17f33f" v="0"/>
+ <val o="18014f" v="0"/>
+ <val o="180f5f" v="0"/>
+ <val o="181d6e" v="0"/>
+ <val o="182b7f" v="0"/>
+ <val o="18398f" v="0"/>
+ <val o="1847a1" v="0"/>
+ <val o="1855af" v="0"/>
+ <val o="1863c0" v="0"/>
+ <val o="1871cf" v="0"/>
+ <val o="187fe0" v="0"/>
+ <val o="188def" v="0"/>
+ <val o="189c00" v="0"/>
+ <val o="18b80d" v="0"/>
+ <val o="18c61c" v="0"/>
+ <val o="18d42c" v="0"/>
+ <val o="18e23b" v="0"/>
+ <val o="18f04b" v="0"/>
+ <val o="18fe5e" v="0"/>
+ <val o="190c76" v="0"/>
+ <val o="191a86" v="0"/>
+ <val o="192896" v="0"/>
+ <val o="1936a6" v="0"/>
+ <val o="1944b7" v="0"/>
+ <val o="1952c6" v="0"/>
+ <val o="1960d7" v="0"/>
+ <val o="196ee6" v="0"/>
+ <val o="197cf8" v="0"/>
+ <val o="198b0f" v="0"/>
+ <val o="19991f" v="0"/>
+ <val o="19b541" v="0"/>
+ <val o="19c34d" v="0"/>
+ <val o="19d15e" v="0"/>
+ <val o="19df80" v="0"/>
+ <val o="19ed90" v="0"/>
+ <val o="19eebe" v="0"/>
+ <val o="19fb8e" v="0"/>
+ <val o="1a09a0" v="0"/>
+ <val o="1a17ae" v="0"/>
+ <val o="1a25be" v="0"/>
+ <val o="1a33cd" v="0"/>
+ <val o="1a41dd" v="0"/>
+ <val o="1a4fed" v="0"/>
+ <val o="1a5e08" v="0"/>
+ <val o="1a6c05" v="0"/>
+ <val o="1a7a15" v="0"/>
+ <val o="1a8826" v="0"/>
+ <val o="1a9637" v="0"/>
+ <val o="1aa445" v="0"/>
+ <val o="1ab255" v="0"/>
+ <val o="1ac065" v="0"/>
+ <val o="1ace75" v="0"/>
+ <val o="1adc87" v="0"/>
+ <val o="1aea96" v="0"/>
+ <val o="1af8a7" v="0"/>
+ <val o="1b06b7" v="0"/>
+ <val o="1b14c6" v="0"/>
+ <val o="1c7460" v="0"/>
+ <val o="1c8270" v="0"/>
+ <val o="1c907e" v="0"/>
+ <val o="1c9e8f" v="0"/>
+ <val o="1caca2" v="0"/>
+ <val o="1cbab1" v="0"/>
+ <val o="1cc8c1" v="0"/>
+ <val o="1cd6d0" v="0"/>
+ <val o="1ce4de" v="0"/>
+ <val o="1cf2f0" v="0"/>
+ <val o="1d0109" v="0"/>
+ <val o="1d0f06" v="0"/>
+ <val o="1d1d15" v="0"/>
+ <val o="1d2b25" v="0"/>
+ <val o="1d3935" v="0"/>
+ <val o="1d4745" v="0"/>
+ <val o="1d5555" v="0"/>
+ <val o="1d6366" v="0"/>
+ <val o="1d7175" v="0"/>
+ <val o="1d7f86" v="0"/>
+ <val o="1d8d95" v="0"/>
+ <val o="1d9ba6" v="0"/>
+ <val o="1da9b6" v="0"/>
+ <val o="1db7c7" v="0"/>
+ <val o="1dc5d5" v="0"/>
+ <val o="1dd3e6" v="0"/>
+ <val o="1de1f5" v="0"/>
+ <val o="1df006" v="0"/>
+ <val o="1dfe16" v="0"/>
+ <val o="1e0c26" v="0"/>
+ <val o="1e1a36" v="0"/>
+ <val o="1e2847" v="0"/>
+ <val o="1e3659" v="0"/>
+ <val o="1e4467" v="0"/>
+ <val o="1e5281" v="0"/>
+ <val o="1e6086" v="0"/>
+ <val o="1e6e96" v="0"/>
+ <val o="1e7ca6" v="0"/>
+ <val o="1e8ab5" v="0"/>
+ <val o="1e98c6" v="0"/>
+ <val o="1ea6d5" v="0"/>
+ <val o="1eb4e6" v="0"/>
+ <val o="1ec2f6" v="0"/>
+ <val o="1ed106" v="0"/>
+ <val o="1edf16" v="0"/>
+ <val o="1eed26" v="0"/>
+ <val o="1efb36" v="0"/>
+ <val o="1f0946" v="0"/>
+ <val o="1f1756" v="0"/>
+ <val o="1f2566" v="0"/>
+ <val o="1f3376" v="0"/>
+ <val o="1f4187" v="0"/>
+ <val o="1f4f96" v="0"/>
+ <val o="1f5da7" v="0"/>
+ <val o="1f6bb6" v="0"/>
+ <val o="1f79c7" v="0"/>
+ <val o="1f87d6" v="0"/>
+ <val o="1f95e7" v="0"/>
+ <val o="1fa401" v="0"/>
+ <val o="1fb204" v="0"/>
+ <val o="1fc016" v="0"/>
+ <val o="1fce25" v="0"/>
+ <val o="1fdc35" v="0"/>
+ <val o="1fea45" v="0"/>
+ <val o="1ff855" v="0"/>
+ <val o="200665" v="0"/>
+ <val o="201475" v="0"/>
+ <val o="202286" v="0"/>
+ <val o="203095" v="0"/>
+ <val o="203ea5" v="0"/>
+ <val o="204cb6" v="0"/>
+ <val o="205ac6" v="0"/>
+ <val o="2068d6" v="0"/>
+ <val o="2076e6" v="0"/>
+ <val o="2084f6" v="0"/>
+ <val o="209306" v="0"/>
+ <val o="20a116" v="0"/>
+ <val o="20af26" v="0"/>
+ <val o="20bd37" v="0"/>
+ <val o="20cb46" v="0"/>
+ <val o="20d957" v="0"/>
+ <val o="20e767" v="0"/>
+ <val o="20f581" v="0"/>
+ <val o="210386" v="0"/>
+ <val o="211194" v="0"/>
+ <val o="211fa5" v="0"/>
+ <val o="212db5" v="0"/>
+ <val o="213bc5" v="0"/>
+ <val o="2149d6" v="0"/>
+ <val o="2157e5" v="0"/>
+ <val o="2165f6" v="0"/>
+ <val o="217406" v="0"/>
+ <val o="218217" v="0"/>
+ <val o="219026" v="0"/>
+ <val o="219e39" v="0"/>
+ <val o="21ac46" v="0"/>
+ <val o="21ba57" v="0"/>
+ <val o="21c867" v="0"/>
+ <val o="21d677" v="0"/>
+ <val o="21e487" v="0"/>
+ <val o="21f296" v="0"/>
+ <val o="2200a6" v="0"/>
+ <val o="220eb7" v="0"/>
+ <val o="221cc6" v="0"/>
+ <val o="222ad7" v="0"/>
+ <val o="2238e7" v="0"/>
+ <val o="224701" v="0"/>
+ <val o="225505" v="0"/>
+ <val o="226315" v="0"/>
+ <val o="227125" v="0"/>
+ <val o="227f35" v="0"/>
+ <val o="228d45" v="0"/>
+ <val o="229b54" v="0"/>
+ <val o="22a965" v="0"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="0"/>
+ <val o="22d397" v="0"/>
+ <val o="22e1a6" v="0"/>
+ <val o="22efb6" v="0"/>
+ <val o="22fdc7" v="0"/>
+ <val o="230bd7" v="0"/>
+ <val o="2319e6" v="0"/>
+ <val o="2327f6" v="0"/>
+ <val o="23361b" v="0"/>
+ <val o="234416" v="0"/>
+ <val o="235226" v="0"/>
+ <val o="236037" v="0"/>
+ <val o="236e46" v="0"/>
+ <val o="237c57" v="0"/>
+ <val o="238a66" v="0"/>
+ <val o="239881" v="0"/>
+ <val o="23a685" v="0"/>
+ <val o="23b495" v="0"/>
+ <val o="23c2a4" v="0"/>
+ <val o="23d0b5" v="0"/>
+ <val o="23dec4" v="0"/>
+ <val o="23ecd5" v="0"/>
+ <val o="23fae4" v="0"/>
+ <val o="2408f6" v="0"/>
+ <val o="241706" v="0"/>
+ <val o="242518" v="0"/>
+ <val o="243325" v="0"/>
+ <val o="244137" v="0"/>
+ <val o="244f46" v="0"/>
+ <val o="246b66" v="0"/>
+ <val o="247976" v="0"/>
+ <val o="248786" v="0"/>
+ <val o="24957e" v="0"/>
+ <val o="24a38f" v="0"/>
+ <val o="24b19c" v="0"/>
+ <val o="24bfac" v="0"/>
+ <val o="24cdbc" v="0"/>
+ <val o="24dbcd" v="0"/>
+ <val o="24e9e5" v="0"/>
+ <val o="24f808" v="0"/>
+ <val o="250616" v="0"/>
+ <val o="251426" v="0"/>
+ <val o="252236" v="0"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="0"/>
+ <val o="254c67" v="0"/>
+ <val o="255a76" v="0"/>
+ <val o="256887" v="0"/>
+ <val o="257697" v="0"/>
+ <val o="2584a8" v="0"/>
+ <val o="2592b6" v="0"/>
+ <val o="25a0c7" v="0"/>
+ <val o="25aed7" v="0"/>
+ <val o="25bce7" v="0"/>
+ <val o="25caf8" v="0"/>
+ <val o="25d907" v="0"/>
+ <val o="25e718" v="0"/>
+ <val o="25f527" v="0"/>
+ <val o="260338" v="0"/>
+ <val o="261149" v="0"/>
+ <val o="261f59" v="0"/>
+ <val o="262d68" v="0"/>
+ <val o="263b83" v="0"/>
+ <val o="264986" v="0"/>
+ <val o="265795" v="0"/>
+ <val o="2665a6" v="0"/>
+ <val o="2673b5" v="0"/>
+ <val o="2681c6" v="0"/>
+ <val o="268fd5" v="0"/>
+ <val o="269de6" v="0"/>
+ <val o="26abf6" v="0"/>
+ <val o="26ba06" v="0"/>
+ <val o="26c817" v="0"/>
+ <val o="26d62b" v="0"/>
+ <val o="26e436" v="0"/>
+ <val o="26f247" v="0"/>
+ <val o="270057" v="0"/>
+ <val o="270e67" v="0"/>
+ <val o="271c77" v="0"/>
+ <val o="272a87" v="0"/>
+ <val o="273897" v="0"/>
+ <val o="2746a8" v="0"/>
+ <val o="2754b9" v="0"/>
+ <val o="2762c7" v="0"/>
+ <val o="2770d8" v="0"/>
+ <val o="277ee7" v="0"/>
+ </par>
+ <par memind="9804" h="3dc1a8de">
+ <val o="0" v="113.768"/>
+ <val o="e08" v="117.131"/>
+ <val o="1c32" v="118.794"/>
+ <val o="2a3c" v="120.362"/>
+ <val o="3835" v="118.504"/>
+ <val o="4645" v="116.275"/>
+ <val o="5455" v="109.258"/>
+ <val o="6265" v="121.127"/>
+ <val o="7075" v="118.849"/>
+ <val o="7e85" v="116.093"/>
+ <val o="8c96" v="120.108"/>
+ <val o="9aa5" v="120.84"/>
+ <val o="a8b6" v="124.045"/>
+ <val o="b6c5" v="124.042"/>
+ <val o="c4d7" v="117.713"/>
+ <val o="d30b" v="118.048"/>
+ <val o="e0f6" v="118.051"/>
+ <val o="ef06" v="118.259"/>
+ <val o="fd17" v="118.054"/>
+ <val o="10b27" v="120.844"/>
+ <val o="11937" v="121.925"/>
+ <val o="12746" v="119.353"/>
+ <val o="13556" v="120.867"/>
+ <val o="14366" v="125.48"/>
+ <val o="15181" v="127.434"/>
+ <val o="15f85" v="119.069"/>
+ <val o="16d95" v="120.904"/>
+ <val o="17ba4" v="120.974"/>
+ <val o="189b5" v="120.25"/>
+ <val o="197c4" v="118.291"/>
+ <val o="1a5d5" v="126.573"/>
+ <val o="1b3e6" v="125.637"/>
+ <val o="1c1f6" v="124.668"/>
+ <val o="1d005" v="121.393"/>
+ <val o="1de15" v="121.998"/>
+ <val o="1ec25" v="122.555"/>
+ <val o="1fa36" v="123.941"/>
+ <val o="20845" v="124.746"/>
+ <val o="21656" v="125.085"/>
+ <val o="22465" v="125.143"/>
+ <val o="23276" v="123.315"/>
+ <val o="24086" v="119.026"/>
+ <val o="24e99" v="118.683"/>
+ <val o="25ca7" v="119.815"/>
+ <val o="26ab7" v="119.25"/>
+ <val o="278c6" v="119.678"/>
+ <val o="286d6" v="121.708"/>
+ <val o="294e6" v="125.182"/>
+ <val o="2a301" v="125.217"/>
+ <val o="2b105" v="117.12"/>
+ <val o="2bf15" v="118.489"/>
+ <val o="2cd25" v="119.338"/>
+ <val o="2db35" v="119.392"/>
+ <val o="2e946" v="117.277"/>
+ <val o="2f755" v="112.967"/>
+ <val o="30566" v="124.775"/>
+ <val o="31375" v="124.409"/>
+ <val o="3219e" v="123.268"/>
+ <val o="32f96" v="122.956"/>
+ <val o="33da6" v="123.032"/>
+ <val o="34bb6" v="123.555"/>
+ <val o="359de" v="123.004"/>
+ <val o="367d6" v="122.125"/>
+ <val o="375e6" v="121.078"/>
+ <val o="3840e" v="117.701"/>
+ <val o="3921e" v="118.101"/>
+ <val o="3a016" v="117.771"/>
+ <val o="3ae27" v="121.393"/>
+ <val o="3bc36" v="120.16"/>
+ <val o="3ca47" v="119.387"/>
+ <val o="3d856" v="119.887"/>
+ <val o="3e667" v="122.64"/>
+ <val o="3f481" v="125.954"/>
+ <val o="40285" v="123.51"/>
+ <val o="41095" v="124.328"/>
+ <val o="41ea5" v="124.639"/>
+ <val o="42cb5" v="124.448"/>
+ <val o="43ac5" v="122.434"/>
+ <val o="448d5" v="118.623"/>
+ <val o="456e6" v="122.169"/>
+ <val o="464f5" v="120.979"/>
+ <val o="480ff" v="118.358"/>
+ <val o="48f0e" v="117.271"/>
+ <val o="49d1d" v="118.68"/>
+ <val o="4ab46" v="118.562"/>
+ <val o="4b955" v="116.842"/>
+ <val o="4c769" v="115.913"/>
+ <val o="4d577" v="118.894"/>
+ <val o="4e387" v="118.59"/>
+ <val o="4f196" v="116.293"/>
+ <val o="4ffa6" v="118.299"/>
+ <val o="50dd0" v="120.233"/>
+ <val o="51bc6" v="118.495"/>
+ <val o="529d6" v="120.406"/>
+ <val o="537e7" v="122.644"/>
+ <val o="54600" v="125.528"/>
+ <val o="55406" v="121.746"/>
+ <val o="56215" v="122.642"/>
+ <val o="57026" v="122.581"/>
+ <val o="57e36" v="122.623"/>
+ <val o="58c46" v="120.431"/>
+ <val o="59a70" v="121.329"/>
+ <val o="5a867" v="120.651"/>
+ <val o="5b676" v="118.876"/>
+ <val o="5c487" v="115.661"/>
+ <val o="5d296" v="119.835"/>
+ <val o="5e0a9" v="120.34"/>
+ <val o="5eeb8" v="119.439"/>
+ <val o="5fcc6" v="118.245"/>
+ <val o="60ad7" v="117.004"/>
+ <val o="618e7" v="117.165"/>
+ <val o="626f7" v="119.95"/>
+ <val o="63507" v="117.149"/>
+ <val o="64317" v="118.541"/>
+ <val o="65127" v="119.822"/>
+ <val o="65f37" v="121.013"/>
+ <val o="66d46" v="121.577"/>
+ <val o="67b57" v="120.289"/>
+ <val o="68967" v="122.62"/>
+ <val o="69782" v="119.093"/>
+ <val o="6a586" v="120.493"/>
+ <val o="6b395" v="121.919"/>
+ <val o="6c1a6" v="122.218"/>
+ <val o="6cfb5" v="121.022"/>
+ <val o="6ddc6" v="118.433"/>
+ <val o="6ebd6" v="115.978"/>
+ <val o="6f9e6" v="120.971"/>
+ <val o="707f6" v="119.234"/>
+ <val o="71607" v="118.015"/>
+ <val o="72417" v="117.922"/>
+ <val o="73227" v="117.566"/>
+ <val o="74037" v="121.469"/>
+ <val o="74e47" v="120.514"/>
+ <val o="75c57" v="118.485"/>
+ <val o="76a63" v="117.889"/>
+ <val o="77873" v="117.946"/>
+ <val o="78680" v="113.611"/>
+ <val o="7948f" v="116.583"/>
+ <val o="7a29f" v="119.306"/>
+ <val o="7b0af" v="118.802"/>
+ <val o="7bebf" v="120.799"/>
+ <val o="7cccf" v="120.857"/>
+ <val o="7dadf" v="121.594"/>
+ <val o="7e8fa" v="121.421"/>
+ <val o="7f70a" v="123.74"/>
+ <val o="8051a" v="125.189"/>
+ <val o="8132a" v="125.673"/>
+ <val o="8213a" v="124.777"/>
+ <val o="82f4a" v="122.432"/>
+ <val o="83d5a" v="120.011"/>
+ <val o="84b6a" v="118.622"/>
+ <val o="8597a" v="118.559"/>
+ <val o="8678b" v="117.524"/>
+ <val o="8759b" v="117.257"/>
+ <val o="883ac" v="119.909"/>
+ <val o="891bb" v="120.921"/>
+ <val o="89fca" v="119.96"/>
+ <val o="8adda" v="118.481"/>
+ <val o="8bbeb" v="118.605"/>
+ <val o="8c9fc" v="118.282"/>
+ <val o="8d80b" v="118.663"/>
+ <val o="8e61a" v="117.009"/>
+ <val o="8f42a" v="117.766"/>
+ <val o="9023a" v="119.722"/>
+ <val o="9104a" v="120.299"/>
+ <val o="91e5a" v="118.366"/>
+ <val o="92c6a" v="122.529"/>
+ <val o="93a84" v="124.833"/>
+ <val o="94885" v="123.06"/>
+ <val o="95694" v="122.396"/>
+ <val o="964a5" v="122.792"/>
+ <val o="972b4" v="122.232"/>
+ <val o="980c5" v="119.79"/>
+ <val o="98ed4" v="122.86"/>
+ <val o="99ce5" v="119.012"/>
+ <val o="9aaf5" v="118.321"/>
+ <val o="9b906" v="115.456"/>
+ <val o="9c716" v="119.374"/>
+ <val o="9d526" v="120.344"/>
+ <val o="9e336" v="119.254"/>
+ <val o="9f145" v="117.83"/>
+ <val o="9ff56" v="117.001"/>
+ <val o="a0d65" v="116.782"/>
+ <val o="a1b77" v="116.803"/>
+ <val o="a2986" v="118.75"/>
+ <val o="a3795" v="118.358"/>
+ <val o="a45a7" v="119.493"/>
+ <val o="a53b6" v="119.698"/>
+ <val o="a61c7" v="119.908"/>
+ <val o="a6fd6" v="120.675"/>
+ <val o="a7e00" v="122.754"/>
+ <val o="a8c00" v="125.385"/>
+ <val o="a9a05" v="118.214"/>
+ <val o="aa815" v="119.329"/>
+ <val o="ab625" v="120.11"/>
+ <val o="ac435" v="119.689"/>
+ <val o="ad245" v="117.12"/>
+ <val o="ae055" v="114.729"/>
+ <val o="aee65" v="120.871"/>
+ <val o="afc75" v="119.177"/>
+ <val o="b0a85" v="116.699"/>
+ <val o="b26a6" v="116.768"/>
+ <val o="b34b6" v="118.075"/>
+ <val o="b42c6" v="115.571"/>
+ <val o="b50d6" v="115.867"/>
+ <val o="b5ee7" v="114.309"/>
+ <val o="b6cf6" v="122.787"/>
+ <val o="b7b07" v="118.904"/>
+ <val o="b8917" v="118.531"/>
+ <val o="b9728" v="119.438"/>
+ <val o="ba537" v="120.908"/>
+ <val o="bb347" v="119.844"/>
+ <val o="bc157" v="120.575"/>
+ <val o="bcf67" v="123.212"/>
+ <val o="bdd81" v="118.712"/>
+ <val o="beb86" v="118.316"/>
+ <val o="bf995" v="118.859"/>
+ <val o="c07a6" v="120.092"/>
+ <val o="c15b5" v="119.532"/>
+ <val o="c23c6" v="118.179"/>
+ <val o="c31d5" v="115.731"/>
+ <val o="c3fe6" v="117.671"/>
+ <val o="c4df5" v="116.046"/>
+ <val o="c5c06" v="117.416"/>
+ <val o="c6a16" v="117.578"/>
+ <val o="c7826" v="116.758"/>
+ <val o="c8636" v="118.319"/>
+ <val o="c9446" v="118.355"/>
+ <val o="ca256" v="118.136"/>
+ <val o="cb066" v="117.225"/>
+ <val o="cbe76" v="122.659"/>
+ <val o="ccc87" v="118.547"/>
+ <val o="cda96" v="116.635"/>
+ <val o="ce8a8" v="118.105"/>
+ <val o="cf6b7" v="118.503"/>
+ <val o="d04c8" v="119.547"/>
+ <val o="d12d7" v="121.4"/>
+ <val o="d20e7" v="123.396"/>
+ <val o="d2f02" v="126.068"/>
+ <val o="d3d05" v="119.33"/>
+ <val o="d4b15" v="120.524"/>
+ <val o="d5926" v="120.742"/>
+ <val o="d6735" v="119.548"/>
+ <val o="d7546" v="117.358"/>
+ <val o="d8355" v="124.267"/>
+ <val o="d9166" v="122.388"/>
+ <val o="d9f75" v="120.774"/>
+ <val o="dad87" v="117.345"/>
+ <val o="dbb97" v="116.698"/>
+ <val o="dc9a8" v="116.798"/>
+ <val o="dd7b7" v="118.219"/>
+ <val o="de5c6" v="117.879"/>
+ <val o="df3d7" v="117.287"/>
+ <val o="e01d7" v="117.42"/>
+ <val o="e0fe5" v="116.798"/>
+ <val o="e1df5" v="117.184"/>
+ <val o="e2c04" v="119.665"/>
+ <val o="e3a14" v="121.033"/>
+ <val o="e4824" v="120.839"/>
+ <val o="e5634" v="122.456"/>
+ <val o="e6444" v="120.534"/>
+ <val o="e7255" v="122.766"/>
+ <val o="e806f" v="123.735"/>
+ <val o="e8e7f" v="116.654"/>
+ <val o="e9c8e" v="118.111"/>
+ <val o="eaa9f" v="118.441"/>
+ <val o="eb8ae" v="117.463"/>
+ <val o="ec6bf" v="113.549"/>
+ <val o="ed4ce" v="123.596"/>
+ <val o="ee2df" v="120.709"/>
+ <val o="ef0ef" v="118.94"/>
+ <val o="eff01" v="116.002"/>
+ <val o="f0d10" v="117.741"/>
+ <val o="f1b20" v="117.49"/>
+ <val o="f2930" v="121.433"/>
+ <val o="f3740" v="117.735"/>
+ <val o="f4551" v="118.165"/>
+ <val o="f5361" v="117.839"/>
+ <val o="f6172" v="117.685"/>
+ <val o="f6f80" v="117.518"/>
+ <val o="f7d91" v="119.385"/>
+ <val o="f8ba1" v="121.202"/>
+ <val o="f99b1" v="120.254"/>
+ <val o="fa7c0" v="118.336"/>
+ <val o="fb5d1" v="118.267"/>
+ <val o="fc3e0" v="123.088"/>
+ <val o="fd1fb" v="123.183"/>
+ <val o="fe00b" v="126.377"/>
+ <val o="fee1c" v="123.772"/>
+ <val o="ffc2c" v="123.634"/>
+ <val o="100a3b" v="123.008"/>
+ <val o="10184c" v="121.382"/>
+ <val o="10265b" v="117.696"/>
+ <val o="10346c" v="117.901"/>
+ <val o="10427b" v="119.404"/>
+ <val o="10508d" v="117.646"/>
+ <val o="105e9d" v="118.147"/>
+ <val o="106cad" v="117.802"/>
+ <val o="107abd" v="120.151"/>
+ <val o="1088cd" v="119.733"/>
+ <val o="1096de" v="119.096"/>
+ <val o="10a4ed" v="119.291"/>
+ <val o="10b2fe" v="118.973"/>
+ <val o="10c10d" v="116.336"/>
+ <val o="10cf1e" v="118.171"/>
+ <val o="10dd2e" v="119.082"/>
+ <val o="10eb66" v="120.953"/>
+ <val o="10f94e" v="121.41"/>
+ <val o="11075e" v="119.088"/>
+ <val o="11156d" v="120.941"/>
+ <val o="112388" v="123.699"/>
+ <val o="113187" v="122.48"/>
+ <val o="113fb0" v="123.378"/>
+ <val o="114da6" v="123.312"/>
+ <val o="115bb6" v="123.217"/>
+ <val o="1169c6" v="120.961"/>
+ <val o="1177d6" v="118.076"/>
+ <val o="1185e8" v="118.573"/>
+ <val o="1193f7" v="117.978"/>
+ <val o="11a208" v="120.019"/>
+ <val o="11b017" v="121.662"/>
+ <val o="11be2f" v="122.268"/>
+ <val o="11cc37" v="122.317"/>
+ <val o="11da47" v="121.934"/>
+ <val o="11e857" v="120.776"/>
+ <val o="11f667" v="121.889"/>
+ <val o="120578" v="121.064"/>
+ <val o="121386" v="116.824"/>
+ <val o="122196" v="117.556"/>
+ <val o="122fa6" v="118.784"/>
+ <val o="123db5" v="120.77"/>
+ <val o="124bc5" v="122.565"/>
+ <val o="1259d5" v="120.263"/>
+ <val o="1267e4" v="122.729"/>
+ <val o="127600" v="124.561"/>
+ <val o="128305" v="125.237"/>
+ <val o="129115" v="125.344"/>
+ <val o="129f25" v="125.492"/>
+ <val o="12ad35" v="124.67"/>
+ <val o="12bb45" v="122.819"/>
+ <val o="12c954" v="121.713"/>
+ <val o="12d766" v="120.883"/>
+ <val o="12e575" v="119.85"/>
+ <val o="12f386" v="117.176"/>
+ <val o="130196" v="117.447"/>
+ <val o="130fa6" v="118.679"/>
+ <val o="131db7" v="120.016"/>
+ <val o="132bc5" v="119.959"/>
+ <val o="1339d4" v="0.109"/>
+ <val o="1347e5" v="0.109"/>
+ <val o="1355f4" v="0.108"/>
+ <val o="136404" v="0.106"/>
+ <val o="137214" v="0.106"/>
+ <val o="138024" v="0.106"/>
+ <val o="138e33" v="0.108"/>
+ <val o="139c44" v="0.109"/>
+ <val o="13aa54" v="0.108"/>
+ <val o="13b865" v="0.109"/>
+ <val o="13c67e" v="0.101"/>
+ <val o="13d48e" v="0.104"/>
+ <val o="13e29e" v="0.106"/>
+ <val o="13f0ae" v="0.106"/>
+ <val o="13febf" v="0.104"/>
+ <val o="140ccf" v="0.102"/>
+ <val o="141adf" v="0.104"/>
+ <val o="1428ef" v="0.108"/>
+ <val o="1436ff" v="0.107"/>
+ <val o="14450f" v="0.107"/>
+ <val o="14531f" v="0.107"/>
+ <val o="146130" v="0.108"/>
+ <val o="146f40" v="0.11"/>
+ <val o="147d44" v="0.108"/>
+ <val o="148b57" v="0.108"/>
+ <val o="149965" v="0.108"/>
+ <val o="14a775" v="0.106"/>
+ <val o="14b584" v="0.11"/>
+ <val o="14c397" v="0.106"/>
+ <val o="14d1a4" v="0.107"/>
+ <val o="14dfb6" v="0.108"/>
+ <val o="14edc5" v="0.11"/>
+ <val o="14fbd5" v="0.112"/>
+ <val o="1509e5" v="0.112"/>
+ <val o="1517ff" v="0.115"/>
+ <val o="152605" v="0.107"/>
+ <val o="153415" v="0.109"/>
+ <val o="154225" v="0.11"/>
+ <val o="155035" v="0.109"/>
+ <val o="155e45" v="0.107"/>
+ <val o="156c55" v="0.104"/>
+ <val o="157a65" v="0.107"/>
+ <val o="158875" v="0.107"/>
+ <val o="159686" v="0.106"/>
+ <val o="15a495" v="0.107"/>
+ <val o="15b2a6" v="0.108"/>
+ <val o="15c0b6" v="0.109"/>
+ <val o="15cec6" v="0.109"/>
+ <val o="15dcd5" v="0.109"/>
+ <val o="15eae6" v="0.108"/>
+ <val o="15f8f5" v="0.104"/>
+ <val o="160706" v="0.11"/>
+ <val o="161517" v="0.109"/>
+ <val o="162326" v="0.11"/>
+ <val o="163137" v="0.111"/>
+ <val o="163f46" v="0.109"/>
+ <val o="164d57" v="0.11"/>
+ <val o="165b67" v="0.112"/>
+ <val o="166982" v="0.111"/>
+ <val o="167786" v="0.112"/>
+ <val o="168596" v="0.112"/>
+ <val o="1693a6" v="0.113"/>
+ <val o="16a1b5" v="0.112"/>
+ <val o="16afc6" v="0.11"/>
+ <val o="16bdd5" v="0.108"/>
+ <val o="16cbe6" v="0.107"/>
+ <val o="16d9f6" v="0.112"/>
+ <val o="16e807" v="0.11"/>
+ <val o="16f616" v="0.11"/>
+ <val o="170429" v="0.111"/>
+ <val o="171236" v="0.112"/>
+ <val o="172047" v="0.112"/>
+ <val o="172e57" v="0.111"/>
+ <val o="173c67" v="0.111"/>
+ <val o="174a77" v="0.11"/>
+ <val o="175887" v="0.108"/>
+ <val o="176694" v="117.84"/>
+ <val o="1774a3" v="119.199"/>
+ <val o="1782b3" v="120.226"/>
+ <val o="1790c5" v="120.924"/>
+ <val o="179ed4" v="124.038"/>
+ <val o="17ace4" v="126.747"/>
+ <val o="17bafd" v="128.364"/>
+ <val o="17c90f" v="126.55"/>
+ <val o="17d71e" v="126.522"/>
+ <val o="17e52f" v="126.893"/>
+ <val o="17f33f" v="126.114"/>
+ <val o="18014f" v="124.219"/>
+ <val o="180f5f" v="123.691"/>
+ <val o="181d6e" v="124.723"/>
+ <val o="182b7f" v="124.667"/>
+ <val o="18398f" v="123.666"/>
+ <val o="1847a1" v="123.337"/>
+ <val o="1855af" v="124.042"/>
+ <val o="1863c0" v="125.92"/>
+ <val o="1871cf" v="125.144"/>
+ <val o="187fe0" v="124.769"/>
+ <val o="188def" v="124.549"/>
+ <val o="189c00" v="123.483"/>
+ <val o="18b80d" v="116.63"/>
+ <val o="18c61c" v="120.461"/>
+ <val o="18d42c" v="121.228"/>
+ <val o="18e23b" v="121.154"/>
+ <val o="18f04b" v="123.409"/>
+ <val o="18fe5e" v="125.403"/>
+ <val o="190c76" v="122.716"/>
+ <val o="191a86" v="124.385"/>
+ <val o="192896" v="126.046"/>
+ <val o="1936a6" v="126.166"/>
+ <val o="1944b7" v="125.26"/>
+ <val o="1952c6" v="123.29"/>
+ <val o="1960d7" v="120.499"/>
+ <val o="196ee6" v="120.705"/>
+ <val o="197cf8" v="120.492"/>
+ <val o="198b0f" v="119.996"/>
+ <val o="19991f" v="120.265"/>
+ <val o="19b541" v="122.232"/>
+ <val o="19c34d" v="121.49"/>
+ <val o="19d15e" v="120.704"/>
+ <val o="19df80" v="120.614"/>
+ <val o="19ed90" v="119.839"/>
+ <val o="19eebe" v="119.685"/>
+ <val o="19fb8e" v="115.593"/>
+ <val o="1a09a0" v="118.86"/>
+ <val o="1a17ae" v="119.97"/>
+ <val o="1a25be" v="121.369"/>
+ <val o="1a33cd" v="121.096"/>
+ <val o="1a41dd" v="122.451"/>
+ <val o="1a4fed" v="125.765"/>
+ <val o="1a5e08" v="126.302"/>
+ <val o="1a6c05" v="124.495"/>
+ <val o="1a7a15" v="125.659"/>
+ <val o="1a8826" v="125.773"/>
+ <val o="1a9637" v="124.464"/>
+ <val o="1aa445" v="123.167"/>
+ <val o="1ab255" v="121.137"/>
+ <val o="1ac065" v="123.677"/>
+ <val o="1ace75" v="123.569"/>
+ <val o="1adc87" v="122.254"/>
+ <val o="1aea96" v="121.794"/>
+ <val o="1af8a7" v="122.088"/>
+ <val o="1b06b7" v="123.87"/>
+ <val o="1b14c6" v="123.556"/>
+ <val o="1c7460" v="119.682"/>
+ <val o="1c8270" v="119.676"/>
+ <val o="1c907e" v="118.821"/>
+ <val o="1c9e8f" v="119.836"/>
+ <val o="1caca2" v="121.192"/>
+ <val o="1cbab1" v="121.685"/>
+ <val o="1cc8c1" v="117.874"/>
+ <val o="1cd6d0" v="118.762"/>
+ <val o="1ce4de" v="120.263"/>
+ <val o="1cf2f0" v="122.468"/>
+ <val o="1d0109" v="124.536"/>
+ <val o="1d0f06" v="122.598"/>
+ <val o="1d1d15" v="123.2"/>
+ <val o="1d2b25" v="123.218"/>
+ <val o="1d3935" v="122.202"/>
+ <val o="1d4745" v="121.424"/>
+ <val o="1d5555" v="120.888"/>
+ <val o="1d6366" v="122.743"/>
+ <val o="1d7175" v="123.078"/>
+ <val o="1d7f86" v="122.237"/>
+ <val o="1d8d95" v="120.858"/>
+ <val o="1d9ba6" v="121.231"/>
+ <val o="1da9b6" v="122.185"/>
+ <val o="1db7c7" v="122.648"/>
+ <val o="1dc5d5" v="122.992"/>
+ <val o="1dd3e6" v="122.482"/>
+ <val o="1de1f5" v="118.707"/>
+ <val o="1df006" v="117.367"/>
+ <val o="1dfe16" v="115.714"/>
+ <val o="1e0c26" v="117.74"/>
+ <val o="1e1a36" v="119.048"/>
+ <val o="1e2847" v="120.179"/>
+ <val o="1e3659" v="119.949"/>
+ <val o="1e4467" v="120.906"/>
+ <val o="1e5281" v="117.251"/>
+ <val o="1e6086" v="120.118"/>
+ <val o="1e6e96" v="121.521"/>
+ <val o="1e7ca6" v="122.188"/>
+ <val o="1e8ab5" v="122.212"/>
+ <val o="1e98c6" v="121.531"/>
+ <val o="1ea6d5" v="119.981"/>
+ <val o="1eb4e6" v="119.977"/>
+ <val o="1ec2f6" v="122.939"/>
+ <val o="1ed106" v="122.289"/>
+ <val o="1edf16" v="122.05"/>
+ <val o="1eed26" v="122.271"/>
+ <val o="1efb36" v="122.856"/>
+ <val o="1f0946" v="122.611"/>
+ <val o="1f1756" v="121.148"/>
+ <val o="1f2566" v="120.864"/>
+ <val o="1f3376" v="119.609"/>
+ <val o="1f4187" v="116.101"/>
+ <val o="1f4f96" v="119.165"/>
+ <val o="1f5da7" v="119.287"/>
+ <val o="1f6bb6" v="120.208"/>
+ <val o="1f79c7" v="118.775"/>
+ <val o="1f87d6" v="122.222"/>
+ <val o="1f95e7" v="123.288"/>
+ <val o="1fa401" v="126.026"/>
+ <val o="1fb204" v="124.828"/>
+ <val o="1fc016" v="125.769"/>
+ <val o="1fce25" v="125.218"/>
+ <val o="1fdc35" v="124.795"/>
+ <val o="1fea45" v="122.393"/>
+ <val o="1ff855" v="120.523"/>
+ <val o="200665" v="117.319"/>
+ <val o="201475" v="118.772"/>
+ <val o="202286" v="118.808"/>
+ <val o="203095" v="119.686"/>
+ <val o="203ea5" v="119.99"/>
+ <val o="204cb6" v="122.708"/>
+ <val o="205ac6" v="120.762"/>
+ <val o="2068d6" v="119.92"/>
+ <val o="2076e6" v="119.129"/>
+ <val o="2084f6" v="117.091"/>
+ <val o="209306" v="121.219"/>
+ <val o="20a116" v="120.28"/>
+ <val o="20af26" v="119.69"/>
+ <val o="20bd37" v="120.677"/>
+ <val o="20cb46" v="118.756"/>
+ <val o="20d957" v="119.608"/>
+ <val o="20e767" v="121.059"/>
+ <val o="20f581" v="123.573"/>
+ <val o="210386" v="125.976"/>
+ <val o="211194" v="123.926"/>
+ <val o="211fa5" v="123.888"/>
+ <val o="212db5" v="123.08"/>
+ <val o="213bc5" v="121.69"/>
+ <val o="2149d6" v="117.916"/>
+ <val o="2157e5" v="116.014"/>
+ <val o="2165f6" v="121.935"/>
+ <val o="217406" v="119.675"/>
+ <val o="218217" v="118.8"/>
+ <val o="219026" v="119.649"/>
+ <val o="219e39" v="119.715"/>
+ <val o="21ac46" v="118.622"/>
+ <val o="21ba57" v="118.459"/>
+ <val o="21c867" v="117.339"/>
+ <val o="21d677" v="122.095"/>
+ <val o="21e487" v="119.556"/>
+ <val o="21f296" v="119.761"/>
+ <val o="2200a6" v="120.53"/>
+ <val o="220eb7" v="121.428"/>
+ <val o="221cc6" v="118.003"/>
+ <val o="222ad7" v="120.228"/>
+ <val o="2238e7" v="123.33"/>
+ <val o="224701" v="125.861"/>
+ <val o="225505" v="118.788"/>
+ <val o="226315" v="119.106"/>
+ <val o="227125" v="119.116"/>
+ <val o="227f35" v="116.908"/>
+ <val o="228d45" v="115.642"/>
+ <val o="229b54" v="122.013"/>
+ <val o="22a965" v="119.234"/>
+ <val o="22b776" v="119.31"/>
+ <val o="22c586" v="118.566"/>
+ <val o="22d397" v="118.243"/>
+ <val o="22e1a6" v="118.579"/>
+ <val o="22efb6" v="120.288"/>
+ <val o="22fdc7" v="119.996"/>
+ <val o="230bd7" v="119.249"/>
+ <val o="2319e6" v="118.866"/>
+ <val o="2327f6" v="117.741"/>
+ <val o="23361b" v="118.543"/>
+ <val o="234416" v="117.538"/>
+ <val o="235226" v="118.709"/>
+ <val o="236037" v="119.94"/>
+ <val o="236e46" v="117.668"/>
+ <val o="237c57" v="119.159"/>
+ <val o="238a66" v="120.771"/>
+ <val o="239881" v="120.234"/>
+ <val o="23a685" v="121.624"/>
+ <val o="23b495" v="122.272"/>
+ <val o="23c2a4" v="122.422"/>
+ <val o="23d0b5" v="121.687"/>
+ <val o="23dec4" v="120.361"/>
+ <val o="23ecd5" v="118.751"/>
+ <val o="23fae4" v="120.028"/>
+ <val o="2408f6" v="117.974"/>
+ <val o="241706" v="117.305"/>
+ <val o="242518" v="117.71"/>
+ <val o="243325" v="118.193"/>
+ <val o="244137" v="119.542"/>
+ <val o="244f46" v="118.741"/>
+ <val o="246b66" v="118.295"/>
+ <val o="247976" v="117.534"/>
+ <val o="248786" v="114.472"/>
+ <val o="24957e" v="117.357"/>
+ <val o="24a38f" v="118.851"/>
+ <val o="24b19c" v="120.137"/>
+ <val o="24bfac" v="119.349"/>
+ <val o="24cdbc" v="123.226"/>
+ <val o="24dbcd" v="122.921"/>
+ <val o="24e9e5" v="124.273"/>
+ <val o="24f808" v="123.515"/>
+ <val o="250616" v="124.182"/>
+ <val o="251426" v="124.27"/>
+ <val o="252236" v="122.827"/>
+ <val o="253047" v="121.801"/>
+ <val o="253e56" v="119.514"/>
+ <val o="254c67" v="118.922"/>
+ <val o="255a76" v="118.86"/>
+ <val o="256887" v="117.264"/>
+ <val o="257697" v="118.022"/>
+ <val o="2584a8" v="116.819"/>
+ <val o="2592b6" v="118.384"/>
+ <val o="25a0c7" v="119.276"/>
+ <val o="25aed7" v="118.81"/>
+ <val o="25bce7" v="118.676"/>
+ <val o="25caf8" v="118.108"/>
+ <val o="25d907" v="119.625"/>
+ <val o="25e718" v="119.042"/>
+ <val o="25f527" v="119.638"/>
+ <val o="260338" v="120.355"/>
+ <val o="261149" v="118.728"/>
+ <val o="261f59" v="119.777"/>
+ <val o="262d68" v="122.621"/>
+ <val o="263b83" v="120.494"/>
+ <val o="264986" v="122.335"/>
+ <val o="265795" v="123.001"/>
+ <val o="2665a6" v="123.827"/>
+ <val o="2673b5" v="122.939"/>
+ <val o="2681c6" v="122.398"/>
+ <val o="268fd5" v="121.212"/>
+ <val o="269de6" v="120.844"/>
+ <val o="26abf6" v="120.054"/>
+ <val o="26ba06" v="118.297"/>
+ <val o="26c817" v="117.795"/>
+ <val o="26d62b" v="117.996"/>
+ <val o="26e436" v="119.287"/>
+ <val o="26f247" v="118.815"/>
+ <val o="270057" v="118.955"/>
+ <val o="270e67" v="118.449"/>
+ <val o="271c77" v="119.157"/>
+ <val o="272a87" v="120.124"/>
+ <val o="273897" v="119.858"/>
+ <val o="2746a8" v="120.668"/>
+ <val o="2754b9" v="121.067"/>
+ <val o="2762c7" v="118.265"/>
+ <val o="2770d8" v="120.308"/>
+ <val o="277ee7" v="122.851"/>
+ </par>
+ <par memind="440600" h="3dc1a8de">
+ <val o="0" v="-1275"/>
+ <val o="e08" v="-1482"/>
+ <val o="1c32" v="-1562"/>
+ <val o="2a3c" v="-1643"/>
+ <val o="3835" v="-1446"/>
+ <val o="4645" v="-1276"/>
+ <val o="5455" v="-1049"/>
+ <val o="6265" v="-1694"/>
+ <val o="7075" v="-1760"/>
+ <val o="7e85" v="-1662"/>
+ <val o="8c96" v="-2067"/>
+ <val o="9aa5" v="-1992"/>
+ <val o="a8b6" v="-1928"/>
+ <val o="b6c5" v="-2018"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-6"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="-7"/>
+ <val o="11937" v="-7"/>
+ <val o="12746" v="-7"/>
+ <val o="13556" v="-7"/>
+ <val o="14366" v="-7"/>
+ <val o="15181" v="-8"/>
+ <val o="15f85" v="-7"/>
+ <val o="16d95" v="-7"/>
+ <val o="17ba4" v="-7"/>
+ <val o="189b5" v="-7"/>
+ <val o="197c4" v="-7"/>
+ <val o="1a5d5" v="-7"/>
+ <val o="1b3e6" v="-7"/>
+ <val o="1c1f6" v="-7"/>
+ <val o="1d005" v="-7"/>
+ <val o="1de15" v="-7"/>
+ <val o="1ec25" v="-7"/>
+ <val o="1fa36" v="-7"/>
+ <val o="20845" v="-7"/>
+ <val o="21656" v="-7"/>
+ <val o="22465" v="-7"/>
+ <val o="23276" v="-7"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-7"/>
+ <val o="26ab7" v="-7"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="-7"/>
+ <val o="294e6" v="-7"/>
+ <val o="2a301" v="-7"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="-7"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="-7"/>
+ <val o="31375" v="-7"/>
+ <val o="3219e" v="-7"/>
+ <val o="32f96" v="-7"/>
+ <val o="33da6" v="-7"/>
+ <val o="34bb6" v="-7"/>
+ <val o="359de" v="-7"/>
+ <val o="367d6" v="-7"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="-7"/>
+ <val o="3bc36" v="-7"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="-7"/>
+ <val o="3e667" v="-7"/>
+ <val o="3f481" v="-7"/>
+ <val o="40285" v="-7"/>
+ <val o="41095" v="-7"/>
+ <val o="41ea5" v="-7"/>
+ <val o="42cb5" v="-7"/>
+ <val o="43ac5" v="-7"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="-7"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="-7"/>
+ <val o="54600" v="-7"/>
+ <val o="55406" v="-7"/>
+ <val o="56215" v="-7"/>
+ <val o="57026" v="-7"/>
+ <val o="57e36" v="-7"/>
+ <val o="58c46" v="-7"/>
+ <val o="59a70" v="-7"/>
+ <val o="5a867" v="-7"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-7"/>
+ <val o="66d46" v="-7"/>
+ <val o="67b57" v="-7"/>
+ <val o="68967" v="-7"/>
+ <val o="69782" v="-7"/>
+ <val o="6a586" v="-7"/>
+ <val o="6b395" v="-7"/>
+ <val o="6c1a6" v="-7"/>
+ <val o="6cfb5" v="-7"/>
+ <val o="6ddc6" v="-7"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="-7"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-7"/>
+ <val o="7cccf" v="-7"/>
+ <val o="7dadf" v="-7"/>
+ <val o="7e8fa" v="-7"/>
+ <val o="7f70a" v="-7"/>
+ <val o="8051a" v="-7"/>
+ <val o="8132a" v="-7"/>
+ <val o="8213a" v="-7"/>
+ <val o="82f4a" v="-7"/>
+ <val o="83d5a" v="-7"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-7"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="-7"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="-7"/>
+ <val o="93a84" v="-7"/>
+ <val o="94885" v="-7"/>
+ <val o="95694" v="-7"/>
+ <val o="964a5" v="-7"/>
+ <val o="972b4" v="-7"/>
+ <val o="980c5" v="-7"/>
+ <val o="98ed4" v="-7"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="-1845"/>
+ <val o="a2986" v="-631"/>
+ <val o="a3795" v="1564"/>
+ <val o="a45a7" v="-66"/>
+ <val o="a53b6" v="-393"/>
+ <val o="a61c7" v="-691"/>
+ <val o="a6fd6" v="-883"/>
+ <val o="a7e00" v="-1575"/>
+ <val o="a8c00" v="-2209"/>
+ <val o="a9a05" v="109"/>
+ <val o="aa815" v="-420"/>
+ <val o="ab625" v="-859"/>
+ <val o="ac435" v="-628"/>
+ <val o="ad245" v="516"/>
+ <val o="ae055" v="1839"/>
+ <val o="aee65" v="293"/>
+ <val o="afc75" v="1185"/>
+ <val o="b0a85" v="3946"/>
+ <val o="b26a6" v="4230"/>
+ <val o="b34b6" v="3689"/>
+ <val o="b42c6" v="248"/>
+ <val o="b50d6" v="430"/>
+ <val o="b5ee7" v="1026"/>
+ <val o="b6cf6" v="-526"/>
+ <val o="b7b07" v="-258"/>
+ <val o="b8917" v="-65"/>
+ <val o="b9728" v="-489"/>
+ <val o="ba537" v="-842"/>
+ <val o="bb347" v="1082"/>
+ <val o="bc157" v="310"/>
+ <val o="bcf67" v="-1112"/>
+ <val o="bdd81" v="3632"/>
+ <val o="beb86" v="513"/>
+ <val o="bf995" v="214"/>
+ <val o="c07a6" v="-292"/>
+ <val o="c15b5" v="-127"/>
+ <val o="c23c6" v="495"/>
+ <val o="c31d5" v="1815"/>
+ <val o="c3fe6" v="818"/>
+ <val o="c4df5" v="1539"/>
+ <val o="c5c06" v="680"/>
+ <val o="c6a16" v="712"/>
+ <val o="c7826" v="1280"/>
+ <val o="c8636" v="397"/>
+ <val o="c9446" v="493"/>
+ <val o="ca256" v="250"/>
+ <val o="cb066" v="785"/>
+ <val o="cbe76" v="-201"/>
+ <val o="ccc87" v="2156"/>
+ <val o="cda96" v="2937"/>
+ <val o="ce8a8" v="2107"/>
+ <val o="cf6b7" v="2824"/>
+ <val o="d04c8" v="2269"/>
+ <val o="d12d7" v="1441"/>
+ <val o="d20e7" v="-297"/>
+ <val o="d2f02" v="-2280"/>
+ <val o="d3d05" v="-1189"/>
+ <val o="d4b15" v="-964"/>
+ <val o="d5926" v="-442"/>
+ <val o="d6735" v="261"/>
+ <val o="d7546" v="1309"/>
+ <val o="d8355" v="-849"/>
+ <val o="d9166" v="178"/>
+ <val o="d9f75" v="1111"/>
+ <val o="dad87" v="2750"/>
+ <val o="dbb97" v="2769"/>
+ <val o="dc9a8" v="2973"/>
+ <val o="dd7b7" v="1327"/>
+ <val o="de5c6" v="454"/>
+ <val o="df3d7" v="199"/>
+ <val o="e01d7" v="167"/>
+ <val o="e0fe5" v="556"/>
+ <val o="e1df5" v="416"/>
+ <val o="e2c04" v="-370"/>
+ <val o="e3a14" v="-1154"/>
+ <val o="e4824" v="93"/>
+ <val o="e5634" v="-843"/>
+ <val o="e6444" v="171"/>
+ <val o="e7255" v="-646"/>
+ <val o="e806f" v="-723"/>
+ <val o="e8e7f" v="2665"/>
+ <val o="e9c8e" v="837"/>
+ <val o="eaa9f" v="698"/>
+ <val o="eb8ae" v="1097"/>
+ <val o="ec6bf" v="2649"/>
+ <val o="ed4ce" v="-495"/>
+ <val o="ee2df" v="1165"/>
+ <val o="ef0ef" v="542"/>
+ <val o="eff01" v="1871"/>
+ <val o="f0d10" v="979"/>
+ <val o="f1b20" v="1210"/>
+ <val o="f2930" v="-356"/>
+ <val o="f3740" v="1654"/>
+ <val o="f4551" v="1368"/>
+ <val o="f5361" v="1462"/>
+ <val o="f6172" v="1612"/>
+ <val o="f6f80" v="1309"/>
+ <val o="f7d91" v="1886"/>
+ <val o="f8ba1" v="1136"/>
+ <val o="f99b1" v="1169"/>
+ <val o="fa7c0" v="1403"/>
+ <val o="fb5d1" v="1316"/>
+ <val o="fc3e0" v="-1041"/>
+ <val o="fd1fb" v="-1190"/>
+ <val o="fe00b" v="-1609"/>
+ <val o="fee1c" v="-199"/>
+ <val o="ffc2c" v="-252"/>
+ <val o="100a3b" v="585"/>
+ <val o="10184c" v="1069"/>
+ <val o="10265b" v="1973"/>
+ <val o="10346c" v="1831"/>
+ <val o="10427b" v="1127"/>
+ <val o="10508d" v="1767"/>
+ <val o="105e9d" v="1343"/>
+ <val o="106cad" v="1564"/>
+ <val o="107abd" v="849"/>
+ <val o="1088cd" v="805"/>
+ <val o="1096de" v="1093"/>
+ <val o="10a4ed" v="880"/>
+ <val o="10b2fe" v="1254"/>
+ <val o="10c10d" v="2664"/>
+ <val o="10cf1e" v="1368"/>
+ <val o="10dd2e" v="1009"/>
+ <val o="10eb66" v="208"/>
+ <val o="10f94e" v="22"/>
+ <val o="11075e" v="1142"/>
+ <val o="11156d" v="286"/>
+ <val o="112388" v="-1168"/>
+ <val o="113187" v="712"/>
+ <val o="113fb0" v="227"/>
+ <val o="114da6" v="236"/>
+ <val o="115bb6" v="372"/>
+ <val o="1169c6" v="1441"/>
+ <val o="1177d6" v="2015"/>
+ <val o="1185e8" v="1211"/>
+ <val o="1193f7" v="1284"/>
+ <val o="11a208" v="369"/>
+ <val o="11b017" v="-310"/>
+ <val o="11be2f" v="-802"/>
+ <val o="11cc37" v="781"/>
+ <val o="11da47" v="491"/>
+ <val o="11e857" v="1023"/>
+ <val o="11f667" v="516"/>
+ <val o="120578" v="1"/>
+ <val o="121386" v="1"/>
+ <val o="122196" v="2"/>
+ <val o="122fa6" v="1"/>
+ <val o="123db5" v="1"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="1"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="-1"/>
+ <val o="128305" v="-1"/>
+ <val o="129115" v="-1"/>
+ <val o="129f25" v="-1"/>
+ <val o="12ad35" v="-1"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="1"/>
+ <val o="12d766" v="1"/>
+ <val o="12e575" v="2"/>
+ <val o="12f386" v="1"/>
+ <val o="130196" v="1"/>
+ <val o="130fa6" v="1"/>
+ <val o="131db7" v="1"/>
+ <val o="132bc5" v="1"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="2274"/>
+ <val o="1774a3" v="1775"/>
+ <val o="1782b3" v="1153"/>
+ <val o="1790c5" v="769"/>
+ <val o="179ed4" v="-846"/>
+ <val o="17ace4" v="-2362"/>
+ <val o="17bafd" v="-2961"/>
+ <val o="17c90f" v="-2519"/>
+ <val o="17d71e" v="-2447"/>
+ <val o="17e52f" v="-2865"/>
+ <val o="17f33f" v="-2276"/>
+ <val o="18014f" v="-1250"/>
+ <val o="180f5f" v="-716"/>
+ <val o="181d6e" v="-1489"/>
+ <val o="182b7f" v="-2004"/>
+ <val o="18398f" v="-1055"/>
+ <val o="1847a1" v="-978"/>
+ <val o="1855af" v="-1269"/>
+ <val o="1863c0" v="-3170"/>
+ <val o="1871cf" v="-2668"/>
+ <val o="187fe0" v="-2540"/>
+ <val o="188def" v="-2377"/>
+ <val o="189c00" v="-1126"/>
+ <val o="18b80d" v="1219"/>
+ <val o="18c61c" v="-1061"/>
+ <val o="18d42c" v="-1519"/>
+ <val o="18e23b" v="-1284"/>
+ <val o="18f04b" v="-1902"/>
+ <val o="18fe5e" v="-1623"/>
+ <val o="190c76" v="-778"/>
+ <val o="191a86" v="-1730"/>
+ <val o="192896" v="-1745"/>
+ <val o="1936a6" v="-1872"/>
+ <val o="1944b7" v="-1207"/>
+ <val o="1952c6" v="-211"/>
+ <val o="1960d7" v="1619"/>
+ <val o="196ee6" v="-764"/>
+ <val o="197cf8" v="-827"/>
+ <val o="198b0f" v="40"/>
+ <val o="19991f" v="-199"/>
+ <val o="19b541" v="-967"/>
+ <val o="19c34d" v="-680"/>
+ <val o="19d15e" v="-385"/>
+ <val o="19df80" v="-241"/>
+ <val o="19ed90" v="371"/>
+ <val o="19eebe" v="471"/>
+ <val o="19fb8e" v="61"/>
+ <val o="1a09a0" v="-2440"/>
+ <val o="1a17ae" v="-3447"/>
+ <val o="1a25be" v="-3862"/>
+ <val o="1a33cd" v="-1657"/>
+ <val o="1a41dd" v="-2273"/>
+ <val o="1a4fed" v="-4132"/>
+ <val o="1a5e08" v="-3735"/>
+ <val o="1a6c05" v="-2655"/>
+ <val o="1a7a15" v="-3286"/>
+ <val o="1a8826" v="-3377"/>
+ <val o="1a9637" v="-2707"/>
+ <val o="1aa445" v="-1980"/>
+ <val o="1ab255" v="-797"/>
+ <val o="1ac065" v="-2046"/>
+ <val o="1ace75" v="-2793"/>
+ <val o="1adc87" v="-1939"/>
+ <val o="1aea96" v="-2092"/>
+ <val o="1af8a7" v="-2211"/>
+ <val o="1b06b7" v="-2679"/>
+ <val o="1b14c6" v="-2530"/>
+ <val o="1c7460" v="453"/>
+ <val o="1c8270" v="-157"/>
+ <val o="1c907e" v="1143"/>
+ <val o="1c9e8f" v="-146"/>
+ <val o="1caca2" v="-1002"/>
+ <val o="1cbab1" v="-1402"/>
+ <val o="1cc8c1" v="2949"/>
+ <val o="1cd6d0" v="2229"/>
+ <val o="1ce4de" v="1022"/>
+ <val o="1cf2f0" v="-1628"/>
+ <val o="1d0109" v="-1835"/>
+ <val o="1d0f06" v="-211"/>
+ <val o="1d1d15" v="-767"/>
+ <val o="1d2b25" v="-792"/>
+ <val o="1d3935" v="173"/>
+ <val o="1d4745" v="776"/>
+ <val o="1d5555" v="1249"/>
+ <val o="1d6366" v="-957"/>
+ <val o="1d7175" v="-911"/>
+ <val o="1d7f86" v="-243"/>
+ <val o="1d8d95" v="-65"/>
+ <val o="1d9ba6" v="-308"/>
+ <val o="1da9b6" v="-811"/>
+ <val o="1db7c7" v="-806"/>
+ <val o="1dc5d5" v="-952"/>
+ <val o="1dd3e6" v="-716"/>
+ <val o="1de1f5" v="-1618"/>
+ <val o="1df006" v="-1910"/>
+ <val o="1dfe16" v="-1809"/>
+ <val o="1e0c26" v="-2224"/>
+ <val o="1e1a36" v="-2272"/>
+ <val o="1e2847" v="-2317"/>
+ <val o="1e3659" v="-2283"/>
+ <val o="1e4467" v="-2334"/>
+ <val o="1e5281" v="-1860"/>
+ <val o="1e6086" v="-2139"/>
+ <val o="1e6e96" v="-2206"/>
+ <val o="1e7ca6" v="-296"/>
+ <val o="1e8ab5" v="-449"/>
+ <val o="1e98c6" v="-142"/>
+ <val o="1ea6d5" v="-422"/>
+ <val o="1eb4e6" v="-365"/>
+ <val o="1ec2f6" v="-581"/>
+ <val o="1ed106" v="-263"/>
+ <val o="1edf16" v="-325"/>
+ <val o="1eed26" v="-142"/>
+ <val o="1efb36" v="-355"/>
+ <val o="1f0946" v="-310"/>
+ <val o="1f1756" v="496"/>
+ <val o="1f2566" v="660"/>
+ <val o="1f3376" v="1246"/>
+ <val o="1f4187" v="2889"/>
+ <val o="1f4f96" v="1532"/>
+ <val o="1f5da7" v="-143"/>
+ <val o="1f6bb6" v="-518"/>
+ <val o="1f79c7" v="225"/>
+ <val o="1f87d6" v="-1667"/>
+ <val o="1f95e7" v="-2330"/>
+ <val o="1fa401" v="-1727"/>
+ <val o="1fb204" v="-1489"/>
+ <val o="1fc016" v="-1515"/>
+ <val o="1fce25" v="-476"/>
+ <val o="1fdc35" v="-193"/>
+ <val o="1fea45" v="128"/>
+ <val o="1ff855" v="376"/>
+ <val o="200665" v="2872"/>
+ <val o="201475" v="408"/>
+ <val o="202286" v="1923"/>
+ <val o="203095" v="1830"/>
+ <val o="203ea5" v="1798"/>
+ <val o="204cb6" v="334"/>
+ <val o="205ac6" v="1260"/>
+ <val o="2068d6" v="1815"/>
+ <val o="2076e6" v="2272"/>
+ <val o="2084f6" v="262"/>
+ <val o="209306" v="-387"/>
+ <val o="20a116" v="-613"/>
+ <val o="20af26" v="-251"/>
+ <val o="20bd37" v="-885"/>
+ <val o="20cb46" v="551"/>
+ <val o="20d957" v="48"/>
+ <val o="20e767" v="-982"/>
+ <val o="20f581" v="-1612"/>
+ <val o="210386" v="-1125"/>
+ <val o="211194" v="-381"/>
+ <val o="211fa5" v="-441"/>
+ <val o="212db5" v="71"/>
+ <val o="213bc5" v="1020"/>
+ <val o="2149d6" v="760"/>
+ <val o="2157e5" v="-319"/>
+ <val o="2165f6" v="-1144"/>
+ <val o="217406" v="302"/>
+ <val o="218217" v="-319"/>
+ <val o="219026" v="-582"/>
+ <val o="219e39" v="408"/>
+ <val o="21ac46" v="1031"/>
+ <val o="21ba57" v="1139"/>
+ <val o="21c867" v="2082"/>
+ <val o="21d677" v="-1202"/>
+ <val o="21e487" v="622"/>
+ <val o="21f296" v="456"/>
+ <val o="2200a6" v="-736"/>
+ <val o="220eb7" v="-818"/>
+ <val o="221cc6" v="1684"/>
+ <val o="222ad7" v="307"/>
+ <val o="2238e7" v="-801"/>
+ <val o="224701" v="-1256"/>
+ <val o="225505" v="3308"/>
+ <val o="226315" v="506"/>
+ <val o="227125" v="639"/>
+ <val o="227f35" v="1963"/>
+ <val o="228d45" v="2867"/>
+ <val o="229b54" v="-831"/>
+ <val o="22a965" v="-270"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="2010"/>
+ <val o="22d397" v="3408"/>
+ <val o="22e1a6" v="3190"/>
+ <val o="22efb6" v="-187"/>
+ <val o="22fdc7" v="-225"/>
+ <val o="230bd7" v="531"/>
+ <val o="2319e6" v="-823"/>
+ <val o="2327f6" v="62"/>
+ <val o="23361b" v="1079"/>
+ <val o="234416" v="1547"/>
+ <val o="235226" v="900"/>
+ <val o="236037" v="112"/>
+ <val o="236e46" v="1780"/>
+ <val o="237c57" v="1407"/>
+ <val o="238a66" v="298"/>
+ <val o="239881" v="565"/>
+ <val o="23a685" v="-311"/>
+ <val o="23b495" v="-657"/>
+ <val o="23c2a4" v="168"/>
+ <val o="23d0b5" v="647"/>
+ <val o="23dec4" v="1427"/>
+ <val o="23ecd5" v="829"/>
+ <val o="23fae4" v="-5"/>
+ <val o="2408f6" v="1197"/>
+ <val o="241706" v="3751"/>
+ <val o="242518" v="2991"/>
+ <val o="243325" v="2801"/>
+ <val o="244137" v="-1188"/>
+ <val o="244f46" v="-828"/>
+ <val o="246b66" v="-799"/>
+ <val o="247976" v="57"/>
+ <val o="248786" v="4601"/>
+ <val o="24957e" v="1911"/>
+ <val o="24a38f" v="799"/>
+ <val o="24b19c" v="-972"/>
+ <val o="24bfac" v="-708"/>
+ <val o="24cdbc" v="-790"/>
+ <val o="24dbcd" v="-490"/>
+ <val o="24e9e5" v="-1316"/>
+ <val o="24f808" v="-825"/>
+ <val o="250616" v="-1012"/>
+ <val o="251426" v="-1178"/>
+ <val o="252236" v="-35"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="1352"/>
+ <val o="254c67" v="1059"/>
+ <val o="255a76" v="1290"/>
+ <val o="256887" v="2079"/>
+ <val o="257697" v="3618"/>
+ <val o="2584a8" v="-4684"/>
+ <val o="2592b6" v="-2470"/>
+ <val o="25a0c7" v="-556"/>
+ <val o="25aed7" v="189"/>
+ <val o="25bce7" v="260"/>
+ <val o="25caf8" v="816"/>
+ <val o="25d907" v="2489"/>
+ <val o="25e718" v="2732"/>
+ <val o="25f527" v="2234"/>
+ <val o="260338" v="57"/>
+ <val o="261149" v="1219"/>
+ <val o="261f59" v="632"/>
+ <val o="262d68" v="-1360"/>
+ <val o="263b83" v="38"/>
+ <val o="264986" v="-980"/>
+ <val o="265795" v="-1501"/>
+ <val o="2665a6" v="-2119"/>
+ <val o="2673b5" v="-1618"/>
+ <val o="2681c6" v="-1314"/>
+ <val o="268fd5" v="-432"/>
+ <val o="269de6" v="309"/>
+ <val o="26abf6" v="685"/>
+ <val o="26ba06" v="1692"/>
+ <val o="26c817" v="1899"/>
+ <val o="26d62b" v="3622"/>
+ <val o="26e436" v="2709"/>
+ <val o="26f247" v="3037"/>
+ <val o="270057" v="2898"/>
+ <val o="270e67" v="3251"/>
+ <val o="271c77" v="186"/>
+ <val o="272a87" v="-636"/>
+ <val o="273897" v="-421"/>
+ <val o="2746a8" v="-729"/>
+ <val o="2754b9" v="-978"/>
+ <val o="2762c7" v="2670"/>
+ <val o="2770d8" v="1255"/>
+ <val o="277ee7" v="-496"/>
+ </par>
+ <par memind="424600" h="3dc1a8de">
+ <val o="0" v="-4313"/>
+ <val o="e08" v="-4163"/>
+ <val o="1c32" v="-4102"/>
+ <val o="2a3c" v="-4091"/>
+ <val o="3835" v="-3982"/>
+ <val o="4645" v="-3934"/>
+ <val o="5455" v="-4439"/>
+ <val o="6265" v="-5323"/>
+ <val o="7075" v="-6298"/>
+ <val o="7e85" v="-7332"/>
+ <val o="8c96" v="-7541"/>
+ <val o="9aa5" v="-7248"/>
+ <val o="a8b6" v="-6869"/>
+ <val o="b6c5" v="-6454"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-7"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="-7"/>
+ <val o="fd17" v="-7"/>
+ <val o="10b27" v="-8"/>
+ <val o="11937" v="-8"/>
+ <val o="12746" v="-7"/>
+ <val o="13556" v="-8"/>
+ <val o="14366" v="-9"/>
+ <val o="15181" v="-9"/>
+ <val o="15f85" v="-8"/>
+ <val o="16d95" v="-8"/>
+ <val o="17ba4" v="-8"/>
+ <val o="189b5" v="-8"/>
+ <val o="197c4" v="-8"/>
+ <val o="1a5d5" v="-9"/>
+ <val o="1b3e6" v="-9"/>
+ <val o="1c1f6" v="-8"/>
+ <val o="1d005" v="-8"/>
+ <val o="1de15" v="-8"/>
+ <val o="1ec25" v="-8"/>
+ <val o="1fa36" v="-8"/>
+ <val o="20845" v="-9"/>
+ <val o="21656" v="-8"/>
+ <val o="22465" v="-8"/>
+ <val o="23276" v="-8"/>
+ <val o="24086" v="-7"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-8"/>
+ <val o="26ab7" v="-8"/>
+ <val o="278c6" v="-8"/>
+ <val o="286d6" v="-8"/>
+ <val o="294e6" v="-9"/>
+ <val o="2a301" v="-9"/>
+ <val o="2b105" v="-8"/>
+ <val o="2bf15" v="-8"/>
+ <val o="2cd25" v="-8"/>
+ <val o="2db35" v="-8"/>
+ <val o="2e946" v="-8"/>
+ <val o="2f755" v="-7"/>
+ <val o="30566" v="-9"/>
+ <val o="31375" v="-8"/>
+ <val o="3219e" v="-8"/>
+ <val o="32f96" v="-8"/>
+ <val o="33da6" v="-8"/>
+ <val o="34bb6" v="-8"/>
+ <val o="359de" v="-8"/>
+ <val o="367d6" v="-8"/>
+ <val o="375e6" v="-8"/>
+ <val o="3840e" v="-7"/>
+ <val o="3921e" v="-7"/>
+ <val o="3a016" v="-7"/>
+ <val o="3ae27" v="-8"/>
+ <val o="3bc36" v="-8"/>
+ <val o="3ca47" v="-7"/>
+ <val o="3d856" v="-8"/>
+ <val o="3e667" v="-8"/>
+ <val o="3f481" v="-9"/>
+ <val o="40285" v="-9"/>
+ <val o="41095" v="-9"/>
+ <val o="41ea5" v="-9"/>
+ <val o="42cb5" v="-9"/>
+ <val o="43ac5" v="-8"/>
+ <val o="448d5" v="-7"/>
+ <val o="456e6" v="-8"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="-7"/>
+ <val o="48f0e" v="-6"/>
+ <val o="49d1d" v="-7"/>
+ <val o="4ab46" v="-7"/>
+ <val o="4b955" v="-7"/>
+ <val o="4c769" v="-6"/>
+ <val o="4d577" v="-7"/>
+ <val o="4e387" v="-7"/>
+ <val o="4f196" v="-7"/>
+ <val o="4ffa6" v="-7"/>
+ <val o="50dd0" v="-7"/>
+ <val o="51bc6" v="-7"/>
+ <val o="529d6" v="-8"/>
+ <val o="537e7" v="-8"/>
+ <val o="54600" v="-9"/>
+ <val o="55406" v="-8"/>
+ <val o="56215" v="-8"/>
+ <val o="57026" v="-8"/>
+ <val o="57e36" v="-8"/>
+ <val o="58c46" v="-8"/>
+ <val o="59a70" v="-8"/>
+ <val o="5a867" v="-8"/>
+ <val o="5b676" v="-7"/>
+ <val o="5c487" v="-6"/>
+ <val o="5d296" v="-7"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="-7"/>
+ <val o="618e7" v="-7"/>
+ <val o="626f7" v="-7"/>
+ <val o="63507" v="-7"/>
+ <val o="64317" v="-7"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-8"/>
+ <val o="66d46" v="-8"/>
+ <val o="67b57" v="-8"/>
+ <val o="68967" v="-8"/>
+ <val o="69782" v="-8"/>
+ <val o="6a586" v="-8"/>
+ <val o="6b395" v="-8"/>
+ <val o="6c1a6" v="-9"/>
+ <val o="6cfb5" v="-8"/>
+ <val o="6ddc6" v="-8"/>
+ <val o="6ebd6" v="-7"/>
+ <val o="6f9e6" v="-8"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="-6"/>
+ <val o="72417" v="-6"/>
+ <val o="73227" v="-6"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="-7"/>
+ <val o="76a63" v="-6"/>
+ <val o="77873" v="-7"/>
+ <val o="78680" v="-6"/>
+ <val o="7948f" v="-7"/>
+ <val o="7a29f" v="-7"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-8"/>
+ <val o="7cccf" v="-8"/>
+ <val o="7dadf" v="-8"/>
+ <val o="7e8fa" v="-8"/>
+ <val o="7f70a" v="-8"/>
+ <val o="8051a" v="-9"/>
+ <val o="8132a" v="-9"/>
+ <val o="8213a" v="-9"/>
+ <val o="82f4a" v="-8"/>
+ <val o="83d5a" v="-8"/>
+ <val o="84b6a" v="-7"/>
+ <val o="8597a" v="-7"/>
+ <val o="8678b" v="-7"/>
+ <val o="8759b" v="-7"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-8"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="-7"/>
+ <val o="8bbeb" v="-7"/>
+ <val o="8c9fc" v="-7"/>
+ <val o="8d80b" v="-7"/>
+ <val o="8e61a" v="-7"/>
+ <val o="8f42a" v="-7"/>
+ <val o="9023a" v="-7"/>
+ <val o="9104a" v="-8"/>
+ <val o="91e5a" v="-7"/>
+ <val o="92c6a" v="-8"/>
+ <val o="93a84" v="-9"/>
+ <val o="94885" v="-8"/>
+ <val o="95694" v="-9"/>
+ <val o="964a5" v="-9"/>
+ <val o="972b4" v="-8"/>
+ <val o="980c5" v="-8"/>
+ <val o="98ed4" v="-8"/>
+ <val o="99ce5" v="-8"/>
+ <val o="9aaf5" v="-7"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="-7"/>
+ <val o="a1b77" v="-6460"/>
+ <val o="a2986" v="-3546"/>
+ <val o="a3795" v="-986"/>
+ <val o="a45a7" v="697"/>
+ <val o="a53b6" v="776"/>
+ <val o="a61c7" v="925"/>
+ <val o="a6fd6" v="125"/>
+ <val o="a7e00" v="456"/>
+ <val o="a8c00" v="903"/>
+ <val o="a9a05" v="278"/>
+ <val o="aa815" v="27"/>
+ <val o="ab625" v="43"/>
+ <val o="ac435" v="173"/>
+ <val o="ad245" v="947"/>
+ <val o="ae055" v="728"/>
+ <val o="aee65" v="-452"/>
+ <val o="afc75" v="-117"/>
+ <val o="b0a85" v="23"/>
+ <val o="b26a6" v="182"/>
+ <val o="b34b6" v="-152"/>
+ <val o="b42c6" v="-423"/>
+ <val o="b50d6" v="-705"/>
+ <val o="b5ee7" v="-790"/>
+ <val o="b6cf6" v="-1575"/>
+ <val o="b7b07" v="-2027"/>
+ <val o="b8917" v="-1757"/>
+ <val o="b9728" v="-1722"/>
+ <val o="ba537" v="-1901"/>
+ <val o="bb347" v="-741"/>
+ <val o="bc157" v="-812"/>
+ <val o="bcf67" v="-891"/>
+ <val o="bdd81" v="652"/>
+ <val o="beb86" v="411"/>
+ <val o="bf995" v="516"/>
+ <val o="c07a6" v="398"/>
+ <val o="c15b5" v="382"/>
+ <val o="c23c6" v="470"/>
+ <val o="c31d5" v="591"/>
+ <val o="c3fe6" v="267"/>
+ <val o="c4df5" v="770"/>
+ <val o="c5c06" v="164"/>
+ <val o="c6a16" v="438"/>
+ <val o="c7826" v="-43"/>
+ <val o="c8636" v="72"/>
+ <val o="c9446" v="249"/>
+ <val o="ca256" v="201"/>
+ <val o="cb066" v="115"/>
+ <val o="cbe76" v="-425"/>
+ <val o="ccc87" v="-229"/>
+ <val o="cda96" v="-284"/>
+ <val o="ce8a8" v="-247"/>
+ <val o="cf6b7" v="-135"/>
+ <val o="d04c8" v="-54"/>
+ <val o="d12d7" v="96"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="16"/>
+ <val o="d3d05" v="598"/>
+ <val o="d4b15" v="721"/>
+ <val o="d5926" v="818"/>
+ <val o="d6735" v="1067"/>
+ <val o="d7546" v="1245"/>
+ <val o="d8355" v="-117"/>
+ <val o="d9166" v="-721"/>
+ <val o="d9f75" v="-1504"/>
+ <val o="dad87" v="-2084"/>
+ <val o="dbb97" v="-2554"/>
+ <val o="dc9a8" v="-2345"/>
+ <val o="dd7b7" v="-2920"/>
+ <val o="de5c6" v="-2712"/>
+ <val o="df3d7" v="-2858"/>
+ <val o="e01d7" v="-2928"/>
+ <val o="e0fe5" v="-2803"/>
+ <val o="e1df5" v="-3032"/>
+ <val o="e2c04" v="-4017"/>
+ <val o="e3a14" v="-3918"/>
+ <val o="e4824" v="-3412"/>
+ <val o="e5634" v="-3441"/>
+ <val o="e6444" v="-2561"/>
+ <val o="e7255" v="-2139"/>
+ <val o="e806f" v="-1765"/>
+ <val o="e8e7f" v="-465"/>
+ <val o="e9c8e" v="-702"/>
+ <val o="eaa9f" v="-647"/>
+ <val o="eb8ae" v="-676"/>
+ <val o="ec6bf" v="-509"/>
+ <val o="ed4ce" v="-2150"/>
+ <val o="ee2df" v="-2355"/>
+ <val o="ef0ef" v="-3171"/>
+ <val o="eff01" v="-4031"/>
+ <val o="f0d10" v="-4338"/>
+ <val o="f1b20" v="-4651"/>
+ <val o="f2930" v="-4668"/>
+ <val o="f3740" v="-4346"/>
+ <val o="f4551" v="-4571"/>
+ <val o="f5361" v="-4929"/>
+ <val o="f6172" v="-4607"/>
+ <val o="f6f80" v="-4866"/>
+ <val o="f7d91" v="-4308"/>
+ <val o="f8ba1" v="-3897"/>
+ <val o="f99b1" v="-3784"/>
+ <val o="fa7c0" v="-2988"/>
+ <val o="fb5d1" v="-3099"/>
+ <val o="fc3e0" v="-3335"/>
+ <val o="fd1fb" v="-2686"/>
+ <val o="fe00b" v="-2522"/>
+ <val o="fee1c" v="-2074"/>
+ <val o="ffc2c" v="-1989"/>
+ <val o="100a3b" v="-1788"/>
+ <val o="10184c" v="-1795"/>
+ <val o="10265b" v="-2075"/>
+ <val o="10346c" v="-2698"/>
+ <val o="10427b" v="-3932"/>
+ <val o="10508d" v="-4406"/>
+ <val o="105e9d" v="-4366"/>
+ <val o="106cad" v="-4692"/>
+ <val o="107abd" v="-4302"/>
+ <val o="1088cd" v="-3927"/>
+ <val o="1096de" v="-4101"/>
+ <val o="10a4ed" v="-4187"/>
+ <val o="10b2fe" v="-4342"/>
+ <val o="10c10d" v="-4162"/>
+ <val o="10cf1e" v="-4456"/>
+ <val o="10dd2e" v="-4132"/>
+ <val o="10eb66" v="-4499"/>
+ <val o="10f94e" v="-3882"/>
+ <val o="11075e" v="-3295"/>
+ <val o="11156d" v="-2863"/>
+ <val o="112388" v="-2668"/>
+ <val o="113187" v="-1778"/>
+ <val o="113fb0" v="-1810"/>
+ <val o="114da6" v="-1829"/>
+ <val o="115bb6" v="-1800"/>
+ <val o="1169c6" v="-1595"/>
+ <val o="1177d6" v="-2050"/>
+ <val o="1185e8" v="-2961"/>
+ <val o="1193f7" v="-3627"/>
+ <val o="11a208" v="-4830"/>
+ <val o="11b017" v="-4296"/>
+ <val o="11be2f" v="-5257"/>
+ <val o="11cc37" v="-4408"/>
+ <val o="11da47" v="-4326"/>
+ <val o="11e857" v="-4420"/>
+ <val o="11f667" v="-3950"/>
+ <val o="120578" v="-4"/>
+ <val o="121386" v="-4"/>
+ <val o="122196" v="-4"/>
+ <val o="122fa6" v="-3"/>
+ <val o="123db5" v="-3"/>
+ <val o="124bc5" v="-3"/>
+ <val o="1259d5" v="-2"/>
+ <val o="1267e4" v="-2"/>
+ <val o="127600" v="-2"/>
+ <val o="128305" v="-2"/>
+ <val o="129115" v="-2"/>
+ <val o="129f25" v="-2"/>
+ <val o="12ad35" v="-2"/>
+ <val o="12bb45" v="-1"/>
+ <val o="12c954" v="-2"/>
+ <val o="12d766" v="-2"/>
+ <val o="12e575" v="-3"/>
+ <val o="12f386" v="-2"/>
+ <val o="130196" v="-4"/>
+ <val o="130fa6" v="-3"/>
+ <val o="131db7" v="-3"/>
+ <val o="132bc5" v="-3"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="-6868"/>
+ <val o="1774a3" v="-6790"/>
+ <val o="1782b3" v="-7252"/>
+ <val o="1790c5" v="-6734"/>
+ <val o="179ed4" v="-6030"/>
+ <val o="17ace4" v="-5892"/>
+ <val o="17bafd" v="-6066"/>
+ <val o="17c90f" v="-5486"/>
+ <val o="17d71e" v="-5444"/>
+ <val o="17e52f" v="-5339"/>
+ <val o="17f33f" v="-4983"/>
+ <val o="18014f" v="-5190"/>
+ <val o="180f5f" v="-6313"/>
+ <val o="181d6e" v="-6839"/>
+ <val o="182b7f" v="-7853"/>
+ <val o="18398f" v="-13507"/>
+ <val o="1847a1" v="-13381"/>
+ <val o="1855af" v="-12778"/>
+ <val o="1863c0" v="-11890"/>
+ <val o="1871cf" v="-12338"/>
+ <val o="187fe0" v="-11774"/>
+ <val o="188def" v="-12649"/>
+ <val o="189c00" v="-11849"/>
+ <val o="18b80d" v="-7471"/>
+ <val o="18c61c" v="-8126"/>
+ <val o="18d42c" v="-7696"/>
+ <val o="18e23b" v="-6538"/>
+ <val o="18f04b" v="-6175"/>
+ <val o="18fe5e" v="-5664"/>
+ <val o="190c76" v="-4480"/>
+ <val o="191a86" v="-4300"/>
+ <val o="192896" v="-4263"/>
+ <val o="1936a6" v="-4119"/>
+ <val o="1944b7" v="-4103"/>
+ <val o="1952c6" v="-4511"/>
+ <val o="1960d7" v="-5135"/>
+ <val o="196ee6" v="-6038"/>
+ <val o="197cf8" v="-6392"/>
+ <val o="198b0f" v="-5899"/>
+ <val o="19991f" v="-6690"/>
+ <val o="19b541" v="-6603"/>
+ <val o="19c34d" v="-6159"/>
+ <val o="19d15e" v="-6128"/>
+ <val o="19df80" v="-6220"/>
+ <val o="19ed90" v="-6047"/>
+ <val o="19eebe" v="-6009"/>
+ <val o="19fb8e" v="-2295"/>
+ <val o="1a09a0" v="-2543"/>
+ <val o="1a17ae" v="-3085"/>
+ <val o="1a25be" v="-3269"/>
+ <val o="1a33cd" v="-2267"/>
+ <val o="1a41dd" v="-2159"/>
+ <val o="1a4fed" v="-1532"/>
+ <val o="1a5e08" v="-1675"/>
+ <val o="1a6c05" v="-960"/>
+ <val o="1a7a15" v="-1122"/>
+ <val o="1a8826" v="-1061"/>
+ <val o="1a9637" v="-505"/>
+ <val o="1aa445" v="-536"/>
+ <val o="1ab255" v="-991"/>
+ <val o="1ac065" v="-1818"/>
+ <val o="1ace75" v="-2574"/>
+ <val o="1adc87" v="-2844"/>
+ <val o="1aea96" v="-2608"/>
+ <val o="1af8a7" v="-2928"/>
+ <val o="1b06b7" v="-2112"/>
+ <val o="1b14c6" v="-2074"/>
+ <val o="1c7460" v="354"/>
+ <val o="1c8270" v="438"/>
+ <val o="1c907e" v="3408"/>
+ <val o="1c9e8f" v="3269"/>
+ <val o="1caca2" v="3655"/>
+ <val o="1cbab1" v="3521"/>
+ <val o="1cc8c1" v="5431"/>
+ <val o="1cd6d0" v="5560"/>
+ <val o="1ce4de" v="5660"/>
+ <val o="1cf2f0" v="5623"/>
+ <val o="1d0109" v="5896"/>
+ <val o="1d0f06" v="6656"/>
+ <val o="1d1d15" v="6647"/>
+ <val o="1d2b25" v="6733"/>
+ <val o="1d3935" v="6914"/>
+ <val o="1d4745" v="6873"/>
+ <val o="1d5555" v="6691"/>
+ <val o="1d6366" v="5814"/>
+ <val o="1d7175" v="5617"/>
+ <val o="1d7f86" v="5608"/>
+ <val o="1d8d95" v="-3230"/>
+ <val o="1d9ba6" v="-3656"/>
+ <val o="1da9b6" v="-3620"/>
+ <val o="1db7c7" v="-3449"/>
+ <val o="1dc5d5" v="-3601"/>
+ <val o="1dd3e6" v="-3735"/>
+ <val o="1de1f5" v="-5996"/>
+ <val o="1df006" v="-6718"/>
+ <val o="1dfe16" v="-6583"/>
+ <val o="1e0c26" v="-6767"/>
+ <val o="1e1a36" v="-6800"/>
+ <val o="1e2847" v="-6525"/>
+ <val o="1e3659" v="-6170"/>
+ <val o="1e4467" v="-5676"/>
+ <val o="1e5281" v="-4911"/>
+ <val o="1e6086" v="-4911"/>
+ <val o="1e6e96" v="-4801"/>
+ <val o="1e7ca6" v="-1982"/>
+ <val o="1e8ab5" v="-1810"/>
+ <val o="1e98c6" v="-1834"/>
+ <val o="1ea6d5" v="-2256"/>
+ <val o="1eb4e6" v="-2325"/>
+ <val o="1ec2f6" v="-2684"/>
+ <val o="1ed106" v="-2675"/>
+ <val o="1edf16" v="-2778"/>
+ <val o="1eed26" v="-2688"/>
+ <val o="1efb36" v="-2650"/>
+ <val o="1f0946" v="-2557"/>
+ <val o="1f1756" v="-2355"/>
+ <val o="1f2566" v="-2318"/>
+ <val o="1f3376" v="-2582"/>
+ <val o="1f4187" v="-2811"/>
+ <val o="1f4f96" v="-3182"/>
+ <val o="1f5da7" v="-3578"/>
+ <val o="1f6bb6" v="-3544"/>
+ <val o="1f79c7" v="-3148"/>
+ <val o="1f87d6" v="-3345"/>
+ <val o="1f95e7" v="-3137"/>
+ <val o="1fa401" v="-2809"/>
+ <val o="1fb204" v="-2501"/>
+ <val o="1fc016" v="-2493"/>
+ <val o="1fce25" v="-2157"/>
+ <val o="1fdc35" v="-2137"/>
+ <val o="1fea45" v="-2155"/>
+ <val o="1ff855" v="-2498"/>
+ <val o="200665" v="-2368"/>
+ <val o="201475" v="-3513"/>
+ <val o="202286" v="-4566"/>
+ <val o="203095" v="-5345"/>
+ <val o="203ea5" v="-6057"/>
+ <val o="204cb6" v="-5799"/>
+ <val o="205ac6" v="-5341"/>
+ <val o="2068d6" v="-5395"/>
+ <val o="2076e6" v="-5979"/>
+ <val o="2084f6" v="-6090"/>
+ <val o="209306" v="-6778"/>
+ <val o="20a116" v="-6378"/>
+ <val o="20af26" v="-5473"/>
+ <val o="20bd37" v="-5382"/>
+ <val o="20cb46" v="-4608"/>
+ <val o="20d957" v="-4316"/>
+ <val o="20e767" v="-4055"/>
+ <val o="20f581" v="-3867"/>
+ <val o="210386" v="-3482"/>
+ <val o="211194" v="-3116"/>
+ <val o="211fa5" v="-3010"/>
+ <val o="212db5" v="-2944"/>
+ <val o="213bc5" v="-2819"/>
+ <val o="2149d6" v="-3644"/>
+ <val o="2157e5" v="-4499"/>
+ <val o="2165f6" v="-5795"/>
+ <val o="217406" v="-6198"/>
+ <val o="218217" v="-6174"/>
+ <val o="219026" v="-6102"/>
+ <val o="219e39" v="-6218"/>
+ <val o="21ac46" v="-5898"/>
+ <val o="21ba57" v="-5986"/>
+ <val o="21c867" v="-5633"/>
+ <val o="21d677" v="-6210"/>
+ <val o="21e487" v="-5783"/>
+ <val o="21f296" v="-5726"/>
+ <val o="2200a6" v="-5539"/>
+ <val o="220eb7" v="-5408"/>
+ <val o="221cc6" v="-4608"/>
+ <val o="222ad7" v="-3876"/>
+ <val o="2238e7" v="-3618"/>
+ <val o="224701" v="-3292"/>
+ <val o="225505" v="-1685"/>
+ <val o="226315" v="-2072"/>
+ <val o="227125" v="-2050"/>
+ <val o="227f35" v="-1670"/>
+ <val o="228d45" v="-1792"/>
+ <val o="229b54" v="-3485"/>
+ <val o="22a965" v="-3911"/>
+ <val o="22b776" v="-4578"/>
+ <val o="22c586" v="-4788"/>
+ <val o="22d397" v="-4459"/>
+ <val o="22e1a6" v="-4693"/>
+ <val o="22efb6" v="-4830"/>
+ <val o="22fdc7" v="-4652"/>
+ <val o="230bd7" v="-4452"/>
+ <val o="2319e6" v="-5394"/>
+ <val o="2327f6" v="-5538"/>
+ <val o="23361b" v="-5866"/>
+ <val o="234416" v="-5225"/>
+ <val o="235226" v="-5162"/>
+ <val o="236037" v="-5250"/>
+ <val o="236e46" v="-4384"/>
+ <val o="237c57" v="-4218"/>
+ <val o="238a66" v="-4016"/>
+ <val o="239881" v="-3222"/>
+ <val o="23a685" v="-3311"/>
+ <val o="23b495" v="-3183"/>
+ <val o="23c2a4" v="-2974"/>
+ <val o="23d0b5" v="-2945"/>
+ <val o="23dec4" v="-2933"/>
+ <val o="23ecd5" v="-3570"/>
+ <val o="23fae4" v="-4545"/>
+ <val o="2408f6" v="-5119"/>
+ <val o="241706" v="-5737"/>
+ <val o="242518" v="-6515"/>
+ <val o="243325" v="-6776"/>
+ <val o="244137" v="-6755"/>
+ <val o="244f46" v="-6361"/>
+ <val o="246b66" v="-6546"/>
+ <val o="247976" v="-6273"/>
+ <val o="248786" v="-5402"/>
+ <val o="24957e" v="-5797"/>
+ <val o="24a38f" v="-5647"/>
+ <val o="24b19c" v="-5747"/>
+ <val o="24bfac" v="-5443"/>
+ <val o="24cdbc" v="-5445"/>
+ <val o="24dbcd" v="-4557"/>
+ <val o="24e9e5" v="-4019"/>
+ <val o="24f808" v="-3484"/>
+ <val o="250616" v="-3616"/>
+ <val o="251426" v="-3559"/>
+ <val o="252236" v="-3408"/>
+ <val o="253047" v="-3609"/>
+ <val o="253e56" v="-4020"/>
+ <val o="254c67" v="-4182"/>
+ <val o="255a76" v="-4997"/>
+ <val o="256887" v="-5810"/>
+ <val o="257697" v="-5595"/>
+ <val o="2584a8" v="-15224"/>
+ <val o="2592b6" v="-8695"/>
+ <val o="25a0c7" v="-4575"/>
+ <val o="25aed7" v="-6313"/>
+ <val o="25bce7" v="-6104"/>
+ <val o="25caf8" v="-5750"/>
+ <val o="25d907" v="-5764"/>
+ <val o="25e718" v="-5649"/>
+ <val o="25f527" v="-5249"/>
+ <val o="260338" v="-5562"/>
+ <val o="261149" v="-4875"/>
+ <val o="261f59" v="-4619"/>
+ <val o="262d68" v="-4611"/>
+ <val o="263b83" v="-3619"/>
+ <val o="264986" v="-3467"/>
+ <val o="265795" v="-3564"/>
+ <val o="2665a6" v="-3672"/>
+ <val o="2673b5" v="-3614"/>
+ <val o="2681c6" v="-3621"/>
+ <val o="268fd5" v="-3868"/>
+ <val o="269de6" v="-3969"/>
+ <val o="26abf6" v="-3886"/>
+ <val o="26ba06" v="-4381"/>
+ <val o="26c817" v="-4271"/>
+ <val o="26d62b" v="-3967"/>
+ <val o="26e436" v="-4002"/>
+ <val o="26f247" v="-3562"/>
+ <val o="270057" v="-3874"/>
+ <val o="270e67" v="-3561"/>
+ <val o="271c77" v="-4690"/>
+ <val o="272a87" v="-5196"/>
+ <val o="273897" v="-5211"/>
+ <val o="2746a8" v="-5037"/>
+ <val o="2754b9" v="-4963"/>
+ <val o="2762c7" v="-4048"/>
+ <val o="2770d8" v="-3708"/>
+ <val o="277ee7" v="-3215"/>
+ </par>
+ <par memind="438200" h="3dc1a8de">
+ <val o="0" v="-1103"/>
+ <val o="e08" v="-1286"/>
+ <val o="1c32" v="-1351"/>
+ <val o="2a3c" v="-1427"/>
+ <val o="3835" v="-1246"/>
+ <val o="4645" v="-1101"/>
+ <val o="5455" v="-909"/>
+ <val o="6265" v="-1472"/>
+ <val o="7075" v="-1523"/>
+ <val o="7e85" v="-1435"/>
+ <val o="8c96" v="-1784"/>
+ <val o="9aa5" v="-1757"/>
+ <val o="a8b6" v="-1682"/>
+ <val o="b6c5" v="-1745"/>
+ <val o="c4d7" v="-6"/>
+ <val o="d30b" v="-6"/>
+ <val o="e0f6" v="-6"/>
+ <val o="ef06" v="0"/>
+ <val o="fd17" v="0"/>
+ <val o="10b27" v="-6"/>
+ <val o="11937" v="-6"/>
+ <val o="12746" v="-6"/>
+ <val o="13556" v="-6"/>
+ <val o="14366" v="-6"/>
+ <val o="15181" v="-7"/>
+ <val o="15f85" v="-6"/>
+ <val o="16d95" v="-6"/>
+ <val o="17ba4" v="-6"/>
+ <val o="189b5" v="-6"/>
+ <val o="197c4" v="-6"/>
+ <val o="1a5d5" v="-6"/>
+ <val o="1b3e6" v="-6"/>
+ <val o="1c1f6" v="-6"/>
+ <val o="1d005" v="-6"/>
+ <val o="1de15" v="-6"/>
+ <val o="1ec25" v="-6"/>
+ <val o="1fa36" v="-6"/>
+ <val o="20845" v="-6"/>
+ <val o="21656" v="-6"/>
+ <val o="22465" v="-6"/>
+ <val o="23276" v="-6"/>
+ <val o="24086" v="0"/>
+ <val o="24e99" v="-6"/>
+ <val o="25ca7" v="-6"/>
+ <val o="26ab7" v="-6"/>
+ <val o="278c6" v="0"/>
+ <val o="286d6" v="-6"/>
+ <val o="294e6" v="-6"/>
+ <val o="2a301" v="-6"/>
+ <val o="2b105" v="0"/>
+ <val o="2bf15" v="0"/>
+ <val o="2cd25" v="-6"/>
+ <val o="2db35" v="0"/>
+ <val o="2e946" v="0"/>
+ <val o="2f755" v="0"/>
+ <val o="30566" v="-6"/>
+ <val o="31375" v="-6"/>
+ <val o="3219e" v="-6"/>
+ <val o="32f96" v="-6"/>
+ <val o="33da6" v="-6"/>
+ <val o="34bb6" v="-6"/>
+ <val o="359de" v="-6"/>
+ <val o="367d6" v="-6"/>
+ <val o="375e6" v="0"/>
+ <val o="3840e" v="0"/>
+ <val o="3921e" v="0"/>
+ <val o="3a016" v="0"/>
+ <val o="3ae27" v="-6"/>
+ <val o="3bc36" v="-6"/>
+ <val o="3ca47" v="0"/>
+ <val o="3d856" v="-6"/>
+ <val o="3e667" v="-6"/>
+ <val o="3f481" v="-6"/>
+ <val o="40285" v="-6"/>
+ <val o="41095" v="-6"/>
+ <val o="41ea5" v="-6"/>
+ <val o="42cb5" v="-6"/>
+ <val o="43ac5" v="-6"/>
+ <val o="448d5" v="0"/>
+ <val o="456e6" v="-6"/>
+ <val o="464f5" v="-6"/>
+ <val o="480ff" v="0"/>
+ <val o="48f0e" v="0"/>
+ <val o="49d1d" v="0"/>
+ <val o="4ab46" v="0"/>
+ <val o="4b955" v="0"/>
+ <val o="4c769" v="0"/>
+ <val o="4d577" v="0"/>
+ <val o="4e387" v="0"/>
+ <val o="4f196" v="0"/>
+ <val o="4ffa6" v="0"/>
+ <val o="50dd0" v="0"/>
+ <val o="51bc6" v="0"/>
+ <val o="529d6" v="0"/>
+ <val o="537e7" v="-6"/>
+ <val o="54600" v="-6"/>
+ <val o="55406" v="-6"/>
+ <val o="56215" v="-6"/>
+ <val o="57026" v="-6"/>
+ <val o="57e36" v="-6"/>
+ <val o="58c46" v="-6"/>
+ <val o="59a70" v="-6"/>
+ <val o="5a867" v="-6"/>
+ <val o="5b676" v="0"/>
+ <val o="5c487" v="0"/>
+ <val o="5d296" v="0"/>
+ <val o="5e0a9" v="-6"/>
+ <val o="5eeb8" v="-6"/>
+ <val o="5fcc6" v="-6"/>
+ <val o="60ad7" v="0"/>
+ <val o="618e7" v="0"/>
+ <val o="626f7" v="0"/>
+ <val o="63507" v="0"/>
+ <val o="64317" v="0"/>
+ <val o="65127" v="-6"/>
+ <val o="65f37" v="-6"/>
+ <val o="66d46" v="-6"/>
+ <val o="67b57" v="-6"/>
+ <val o="68967" v="-6"/>
+ <val o="69782" v="-6"/>
+ <val o="6a586" v="-6"/>
+ <val o="6b395" v="-6"/>
+ <val o="6c1a6" v="-6"/>
+ <val o="6cfb5" v="-6"/>
+ <val o="6ddc6" v="-6"/>
+ <val o="6ebd6" v="0"/>
+ <val o="6f9e6" v="-6"/>
+ <val o="707f6" v="-6"/>
+ <val o="71607" v="0"/>
+ <val o="72417" v="0"/>
+ <val o="73227" v="0"/>
+ <val o="74037" v="-6"/>
+ <val o="74e47" v="-6"/>
+ <val o="75c57" v="0"/>
+ <val o="76a63" v="0"/>
+ <val o="77873" v="0"/>
+ <val o="78680" v="0"/>
+ <val o="7948f" v="0"/>
+ <val o="7a29f" v="0"/>
+ <val o="7b0af" v="-6"/>
+ <val o="7bebf" v="-6"/>
+ <val o="7cccf" v="-6"/>
+ <val o="7dadf" v="-6"/>
+ <val o="7e8fa" v="-6"/>
+ <val o="7f70a" v="-6"/>
+ <val o="8051a" v="-6"/>
+ <val o="8132a" v="-6"/>
+ <val o="8213a" v="-6"/>
+ <val o="82f4a" v="-6"/>
+ <val o="83d5a" v="-6"/>
+ <val o="84b6a" v="0"/>
+ <val o="8597a" v="0"/>
+ <val o="8678b" v="0"/>
+ <val o="8759b" v="0"/>
+ <val o="883ac" v="-6"/>
+ <val o="891bb" v="-6"/>
+ <val o="89fca" v="-6"/>
+ <val o="8adda" v="0"/>
+ <val o="8bbeb" v="0"/>
+ <val o="8c9fc" v="0"/>
+ <val o="8d80b" v="0"/>
+ <val o="8e61a" v="0"/>
+ <val o="8f42a" v="0"/>
+ <val o="9023a" v="0"/>
+ <val o="9104a" v="-6"/>
+ <val o="91e5a" v="0"/>
+ <val o="92c6a" v="-6"/>
+ <val o="93a84" v="-6"/>
+ <val o="94885" v="-6"/>
+ <val o="95694" v="-6"/>
+ <val o="964a5" v="-6"/>
+ <val o="972b4" v="-6"/>
+ <val o="980c5" v="-6"/>
+ <val o="98ed4" v="-6"/>
+ <val o="99ce5" v="0"/>
+ <val o="9aaf5" v="0"/>
+ <val o="9b906" v="-6"/>
+ <val o="9c716" v="-6"/>
+ <val o="9d526" v="-6"/>
+ <val o="9e336" v="-6"/>
+ <val o="9f145" v="-6"/>
+ <val o="9ff56" v="-6"/>
+ <val o="a0d65" v="0"/>
+ <val o="a1b77" v="-1590"/>
+ <val o="a2986" v="-500"/>
+ <val o="a3795" v="1379"/>
+ <val o="a45a7" v="-45"/>
+ <val o="a53b6" v="-346"/>
+ <val o="a61c7" v="-580"/>
+ <val o="a6fd6" v="-752"/>
+ <val o="a7e00" v="-1367"/>
+ <val o="a8c00" v="-1906"/>
+ <val o="a9a05" v="101"/>
+ <val o="aa815" v="-366"/>
+ <val o="ab625" v="-740"/>
+ <val o="ac435" v="-550"/>
+ <val o="ad245" v="432"/>
+ <val o="ae055" v="1595"/>
+ <val o="aee65" v="275"/>
+ <val o="afc75" v="1019"/>
+ <val o="b0a85" v="3444"/>
+ <val o="b26a6" v="3629"/>
+ <val o="b34b6" v="3203"/>
+ <val o="b42c6" v="215"/>
+ <val o="b50d6" v="380"/>
+ <val o="b5ee7" v="890"/>
+ <val o="b6cf6" v="-446"/>
+ <val o="b7b07" v="-200"/>
+ <val o="b8917" v="-44"/>
+ <val o="b9728" v="-424"/>
+ <val o="ba537" v="-718"/>
+ <val o="bb347" v="946"/>
+ <val o="bc157" v="276"/>
+ <val o="bcf67" v="-944"/>
+ <val o="bdd81" v="3129"/>
+ <val o="beb86" v="453"/>
+ <val o="bf995" v="194"/>
+ <val o="c07a6" v="-246"/>
+ <val o="c15b5" v="-122"/>
+ <val o="c23c6" v="430"/>
+ <val o="c31d5" v="1582"/>
+ <val o="c3fe6" v="720"/>
+ <val o="c4df5" v="1333"/>
+ <val o="c5c06" v="588"/>
+ <val o="c6a16" v="642"/>
+ <val o="c7826" v="1096"/>
+ <val o="c8636" v="313"/>
+ <val o="c9446" v="374"/>
+ <val o="ca256" v="204"/>
+ <val o="cb066" v="692"/>
+ <val o="cbe76" v="-196"/>
+ <val o="ccc87" v="1888"/>
+ <val o="cda96" v="2502"/>
+ <val o="ce8a8" v="1840"/>
+ <val o="cf6b7" v="2437"/>
+ <val o="d04c8" v="1930"/>
+ <val o="d12d7" v="1219"/>
+ <val o="d20e7" v="-250"/>
+ <val o="d2f02" v="-1971"/>
+ <val o="d3d05" v="-1029"/>
+ <val o="d4b15" v="-1072"/>
+ <val o="d5926" v="-388"/>
+ <val o="d6735" v="229"/>
+ <val o="d7546" v="1131"/>
+ <val o="d8355" v="-726"/>
+ <val o="d9166" v="166"/>
+ <val o="d9f75" v="965"/>
+ <val o="dad87" v="2341"/>
+ <val o="dbb97" v="2354"/>
+ <val o="dc9a8" v="2565"/>
+ <val o="dd7b7" v="1136"/>
+ <val o="de5c6" v="367"/>
+ <val o="df3d7" v="173"/>
+ <val o="e01d7" v="156"/>
+ <val o="e0fe5" v="460"/>
+ <val o="e1df5" v="358"/>
+ <val o="e2c04" v="-308"/>
+ <val o="e3a14" v="-1006"/>
+ <val o="e4824" v="93"/>
+ <val o="e5634" v="-723"/>
+ <val o="e6444" v="147"/>
+ <val o="e7255" v="-551"/>
+ <val o="e806f" v="-626"/>
+ <val o="e8e7f" v="2316"/>
+ <val o="e9c8e" v="714"/>
+ <val o="eaa9f" v="600"/>
+ <val o="eb8ae" v="953"/>
+ <val o="ec6bf" v="2267"/>
+ <val o="ed4ce" v="-403"/>
+ <val o="ee2df" v="999"/>
+ <val o="ef0ef" v="475"/>
+ <val o="eff01" v="1663"/>
+ <val o="f0d10" v="829"/>
+ <val o="f1b20" v="1055"/>
+ <val o="f2930" v="-314"/>
+ <val o="f3740" v="1431"/>
+ <val o="f4551" v="1201"/>
+ <val o="f5361" v="1280"/>
+ <val o="f6172" v="1431"/>
+ <val o="f6f80" v="1145"/>
+ <val o="f7d91" v="1635"/>
+ <val o="f8ba1" v="957"/>
+ <val o="f99b1" v="1019"/>
+ <val o="fa7c0" v="1219"/>
+ <val o="fb5d1" v="1143"/>
+ <val o="fc3e0" v="-893"/>
+ <val o="fd1fb" v="-1019"/>
+ <val o="fe00b" v="-1389"/>
+ <val o="fee1c" v="-182"/>
+ <val o="ffc2c" v="-220"/>
+ <val o="100a3b" v="502"/>
+ <val o="10184c" v="940"/>
+ <val o="10265b" v="1719"/>
+ <val o="10346c" v="1592"/>
+ <val o="10427b" v="960"/>
+ <val o="10508d" v="1537"/>
+ <val o="105e9d" v="1177"/>
+ <val o="106cad" v="1337"/>
+ <val o="107abd" v="737"/>
+ <val o="1088cd" v="723"/>
+ <val o="1096de" v="917"/>
+ <val o="10a4ed" v="794"/>
+ <val o="10b2fe" v="1075"/>
+ <val o="10c10d" v="2328"/>
+ <val o="10cf1e" v="1192"/>
+ <val o="10dd2e" v="867"/>
+ <val o="10eb66" v="184"/>
+ <val o="10f94e" v="12"/>
+ <val o="11075e" v="978"/>
+ <val o="11156d" v="256"/>
+ <val o="112388" v="-1007"/>
+ <val o="113187" v="614"/>
+ <val o="113fb0" v="205"/>
+ <val o="114da6" v="195"/>
+ <val o="115bb6" v="316"/>
+ <val o="1169c6" v="1241"/>
+ <val o="1177d6" v="1748"/>
+ <val o="1185e8" v="1046"/>
+ <val o="1193f7" v="1099"/>
+ <val o="11a208" v="309"/>
+ <val o="11b017" v="-202"/>
+ <val o="11be2f" v="-722"/>
+ <val o="11cc37" v="680"/>
+ <val o="11da47" v="440"/>
+ <val o="11e857" v="870"/>
+ <val o="11f667" v="475"/>
+ <val o="120578" v="1"/>
+ <val o="121386" v="1"/>
+ <val o="122196" v="2"/>
+ <val o="122fa6" v="1"/>
+ <val o="123db5" v="0"/>
+ <val o="124bc5" v="0"/>
+ <val o="1259d5" v="1"/>
+ <val o="1267e4" v="0"/>
+ <val o="127600" v="-1"/>
+ <val o="128305" v="-1"/>
+ <val o="129115" v="-1"/>
+ <val o="129f25" v="-1"/>
+ <val o="12ad35" v="-1"/>
+ <val o="12bb45" v="0"/>
+ <val o="12c954" v="1"/>
+ <val o="12d766" v="1"/>
+ <val o="12e575" v="1"/>
+ <val o="12f386" v="1"/>
+ <val o="130196" v="1"/>
+ <val o="130fa6" v="1"/>
+ <val o="131db7" v="1"/>
+ <val o="132bc5" v="1"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="1959"/>
+ <val o="1774a3" v="1506"/>
+ <val o="1782b3" v="1027"/>
+ <val o="1790c5" v="677"/>
+ <val o="179ed4" v="-759"/>
+ <val o="17ace4" v="-2042"/>
+ <val o="17bafd" v="-2554"/>
+ <val o="17c90f" v="-2178"/>
+ <val o="17d71e" v="-2126"/>
+ <val o="17e52f" v="-2484"/>
+ <val o="17f33f" v="-1980"/>
+ <val o="18014f" v="-1072"/>
+ <val o="180f5f" v="-524"/>
+ <val o="181d6e" v="-1366"/>
+ <val o="182b7f" v="-1753"/>
+ <val o="18398f" v="-893"/>
+ <val o="1847a1" v="-845"/>
+ <val o="1855af" v="-1148"/>
+ <val o="1863c0" v="-2710"/>
+ <val o="1871cf" v="-2297"/>
+ <val o="187fe0" v="-2208"/>
+ <val o="188def" v="-2037"/>
+ <val o="189c00" v="-997"/>
+ <val o="18b80d" v="1048"/>
+ <val o="18c61c" v="-955"/>
+ <val o="18d42c" v="-1334"/>
+ <val o="18e23b" v="-1121"/>
+ <val o="18f04b" v="-1625"/>
+ <val o="18fe5e" v="-1419"/>
+ <val o="190c76" v="-671"/>
+ <val o="191a86" v="-1501"/>
+ <val o="192896" v="-1511"/>
+ <val o="1936a6" v="-1618"/>
+ <val o="1944b7" v="-1037"/>
+ <val o="1952c6" v="-192"/>
+ <val o="1960d7" v="1397"/>
+ <val o="196ee6" v="-627"/>
+ <val o="197cf8" v="-711"/>
+ <val o="198b0f" v="20"/>
+ <val o="19991f" v="-130"/>
+ <val o="19b541" v="-843"/>
+ <val o="19c34d" v="-642"/>
+ <val o="19d15e" v="-320"/>
+ <val o="19df80" v="-210"/>
+ <val o="19ed90" v="295"/>
+ <val o="19eebe" v="417"/>
+ <val o="19fb8e" v="37"/>
+ <val o="1a09a0" v="-2105"/>
+ <val o="1a17ae" v="-2980"/>
+ <val o="1a25be" v="-3329"/>
+ <val o="1a33cd" v="-1430"/>
+ <val o="1a41dd" v="-1986"/>
+ <val o="1a4fed" v="-3570"/>
+ <val o="1a5e08" v="-3230"/>
+ <val o="1a6c05" v="-2288"/>
+ <val o="1a7a15" v="-2846"/>
+ <val o="1a8826" v="-2946"/>
+ <val o="1a9637" v="-2342"/>
+ <val o="1aa445" v="-1719"/>
+ <val o="1ab255" v="-668"/>
+ <val o="1ac065" v="-1761"/>
+ <val o="1ace75" v="-2413"/>
+ <val o="1adc87" v="-1727"/>
+ <val o="1aea96" v="-1832"/>
+ <val o="1af8a7" v="-1889"/>
+ <val o="1b06b7" v="-2346"/>
+ <val o="1b14c6" v="-2176"/>
+ <val o="1c7460" v="374"/>
+ <val o="1c8270" v="-132"/>
+ <val o="1c907e" v="993"/>
+ <val o="1c9e8f" v="-150"/>
+ <val o="1caca2" v="-843"/>
+ <val o="1cbab1" v="-1196"/>
+ <val o="1cc8c1" v="2577"/>
+ <val o="1cd6d0" v="1582"/>
+ <val o="1ce4de" v="909"/>
+ <val o="1cf2f0" v="-1405"/>
+ <val o="1d0109" v="-1597"/>
+ <val o="1d0f06" v="-186"/>
+ <val o="1d1d15" v="-658"/>
+ <val o="1d2b25" v="-679"/>
+ <val o="1d3935" v="89"/>
+ <val o="1d4745" v="680"/>
+ <val o="1d5555" v="1095"/>
+ <val o="1d6366" v="-832"/>
+ <val o="1d7175" v="-785"/>
+ <val o="1d7f86" v="-228"/>
+ <val o="1d8d95" v="-40"/>
+ <val o="1d9ba6" v="-280"/>
+ <val o="1da9b6" v="-697"/>
+ <val o="1db7c7" v="-697"/>
+ <val o="1dc5d5" v="-811"/>
+ <val o="1dd3e6" v="-629"/>
+ <val o="1de1f5" v="-1408"/>
+ <val o="1df006" v="-1666"/>
+ <val o="1dfe16" v="-1574"/>
+ <val o="1e0c26" v="-1928"/>
+ <val o="1e1a36" v="-1970"/>
+ <val o="1e2847" v="-2017"/>
+ <val o="1e3659" v="-1984"/>
+ <val o="1e4467" v="-2007"/>
+ <val o="1e5281" v="-1611"/>
+ <val o="1e6086" v="-1851"/>
+ <val o="1e6e96" v="-1908"/>
+ <val o="1e7ca6" v="-251"/>
+ <val o="1e8ab5" v="-386"/>
+ <val o="1e98c6" v="-121"/>
+ <val o="1ea6d5" v="-365"/>
+ <val o="1eb4e6" v="-313"/>
+ <val o="1ec2f6" v="-506"/>
+ <val o="1ed106" v="-232"/>
+ <val o="1edf16" v="-288"/>
+ <val o="1eed26" v="-121"/>
+ <val o="1efb36" v="-310"/>
+ <val o="1f0946" v="-245"/>
+ <val o="1f1756" v="439"/>
+ <val o="1f2566" v="609"/>
+ <val o="1f3376" v="1078"/>
+ <val o="1f4187" v="2491"/>
+ <val o="1f4f96" v="1327"/>
+ <val o="1f5da7" v="-115"/>
+ <val o="1f6bb6" v="-442"/>
+ <val o="1f79c7" v="203"/>
+ <val o="1f87d6" v="-1439"/>
+ <val o="1f95e7" v="-2019"/>
+ <val o="1fa401" v="-1491"/>
+ <val o="1fb204" v="-1285"/>
+ <val o="1fc016" v="-1309"/>
+ <val o="1fce25" v="-409"/>
+ <val o="1fdc35" v="-162"/>
+ <val o="1fea45" v="90"/>
+ <val o="1ff855" v="319"/>
+ <val o="200665" v="2483"/>
+ <val o="201475" v="357"/>
+ <val o="202286" v="1681"/>
+ <val o="203095" v="1572"/>
+ <val o="203ea5" v="1575"/>
+ <val o="204cb6" v="302"/>
+ <val o="205ac6" v="1076"/>
+ <val o="2068d6" v="1555"/>
+ <val o="2076e6" v="1971"/>
+ <val o="2084f6" v="239"/>
+ <val o="209306" v="-351"/>
+ <val o="20a116" v="-527"/>
+ <val o="20af26" v="-215"/>
+ <val o="20bd37" v="-782"/>
+ <val o="20cb46" v="452"/>
+ <val o="20d957" v="60"/>
+ <val o="20e767" v="-848"/>
+ <val o="20f581" v="-1383"/>
+ <val o="210386" v="-989"/>
+ <val o="211194" v="-325"/>
+ <val o="211fa5" v="-382"/>
+ <val o="212db5" v="60"/>
+ <val o="213bc5" v="884"/>
+ <val o="2149d6" v="659"/>
+ <val o="2157e5" v="-264"/>
+ <val o="2165f6" v="-990"/>
+ <val o="217406" v="289"/>
+ <val o="218217" v="-292"/>
+ <val o="219026" v="-542"/>
+ <val o="219e39" v="366"/>
+ <val o="21ac46" v="909"/>
+ <val o="21ba57" v="992"/>
+ <val o="21c867" v="1808"/>
+ <val o="21d677" v="-1049"/>
+ <val o="21e487" v="543"/>
+ <val o="21f296" v="377"/>
+ <val o="2200a6" v="-619"/>
+ <val o="220eb7" v="-712"/>
+ <val o="221cc6" v="1459"/>
+ <val o="222ad7" v="257"/>
+ <val o="2238e7" v="-696"/>
+ <val o="224701" v="-1085"/>
+ <val o="225505" v="2873"/>
+ <val o="226315" v="421"/>
+ <val o="227125" v="557"/>
+ <val o="227f35" v="1696"/>
+ <val o="228d45" v="2480"/>
+ <val o="229b54" v="-707"/>
+ <val o="22a965" v="-237"/>
+ <val o="22b776" v="0"/>
+ <val o="22c586" v="1730"/>
+ <val o="22d397" v="2990"/>
+ <val o="22e1a6" v="2746"/>
+ <val o="22efb6" v="-174"/>
+ <val o="22fdc7" v="-194"/>
+ <val o="230bd7" v="485"/>
+ <val o="2319e6" v="-729"/>
+ <val o="2327f6" v="70"/>
+ <val o="23361b" v="907"/>
+ <val o="234416" v="1297"/>
+ <val o="235226" v="776"/>
+ <val o="236037" v="123"/>
+ <val o="236e46" v="1557"/>
+ <val o="237c57" v="1208"/>
+ <val o="238a66" v="253"/>
+ <val o="239881" v="508"/>
+ <val o="23a685" v="-274"/>
+ <val o="23b495" v="-571"/>
+ <val o="23c2a4" v="146"/>
+ <val o="23d0b5" v="567"/>
+ <val o="23dec4" v="1222"/>
+ <val o="23ecd5" v="733"/>
+ <val o="23fae4" v="8"/>
+ <val o="2408f6" v="1041"/>
+ <val o="241706" v="3222"/>
+ <val o="242518" v="2576"/>
+ <val o="243325" v="2422"/>
+ <val o="244137" v="-1036"/>
+ <val o="244f46" v="-746"/>
+ <val o="246b66" v="-661"/>
+ <val o="247976" v="45"/>
+ <val o="248786" v="3983"/>
+ <val o="24957e" v="1694"/>
+ <val o="24a38f" v="709"/>
+ <val o="24b19c" v="-844"/>
+ <val o="24bfac" v="-605"/>
+ <val o="24cdbc" v="-661"/>
+ <val o="24dbcd" v="-436"/>
+ <val o="24e9e5" v="-1155"/>
+ <val o="24f808" v="-716"/>
+ <val o="250616" v="-877"/>
+ <val o="251426" v="-1024"/>
+ <val o="252236" v="-7"/>
+ <val o="253047" v="0"/>
+ <val o="253e56" v="1185"/>
+ <val o="254c67" v="884"/>
+ <val o="255a76" v="1103"/>
+ <val o="256887" v="1789"/>
+ <val o="257697" v="3132"/>
+ <val o="2584a8" v="-4032"/>
+ <val o="2592b6" v="-2114"/>
+ <val o="25a0c7" v="-498"/>
+ <val o="25aed7" v="174"/>
+ <val o="25bce7" v="210"/>
+ <val o="25caf8" v="710"/>
+ <val o="25d907" v="2127"/>
+ <val o="25e718" v="2386"/>
+ <val o="25f527" v="1916"/>
+ <val o="260338" v="53"/>
+ <val o="261149" v="1070"/>
+ <val o="261f59" v="564"/>
+ <val o="262d68" v="-1181"/>
+ <val o="263b83" v="34"/>
+ <val o="264986" v="-847"/>
+ <val o="265795" v="-1318"/>
+ <val o="2665a6" v="-1842"/>
+ <val o="2673b5" v="-1404"/>
+ <val o="2681c6" v="-1129"/>
+ <val o="268fd5" v="-372"/>
+ <val o="269de6" v="269"/>
+ <val o="26abf6" v="572"/>
+ <val o="26ba06" v="1413"/>
+ <val o="26c817" v="1586"/>
+ <val o="26d62b" v="3161"/>
+ <val o="26e436" v="2347"/>
+ <val o="26f247" v="2627"/>
+ <val o="270057" v="2502"/>
+ <val o="270e67" v="2818"/>
+ <val o="271c77" v="158"/>
+ <val o="272a87" v="-545"/>
+ <val o="273897" v="-370"/>
+ <val o="2746a8" v="-624"/>
+ <val o="2754b9" v="-847"/>
+ <val o="2762c7" v="2315"/>
+ <val o="2770d8" v="1099"/>
+ <val o="277ee7" v="-417"/>
+ </par>
+ <par memind="422200" h="3dc1a8de">
+ <val o="0" v="-4307"/>
+ <val o="e08" v="-4169"/>
+ <val o="1c32" v="-4096"/>
+ <val o="2a3c" v="-4087"/>
+ <val o="3835" v="-3963"/>
+ <val o="4645" v="-3969"/>
+ <val o="5455" v="-4411"/>
+ <val o="6265" v="-5358"/>
+ <val o="7075" v="-6317"/>
+ <val o="7e85" v="-7298"/>
+ <val o="8c96" v="-7519"/>
+ <val o="9aa5" v="-7351"/>
+ <val o="a8b6" v="-6890"/>
+ <val o="b6c5" v="-6465"/>
+ <val o="c4d7" v="-7"/>
+ <val o="d30b" v="-7"/>
+ <val o="e0f6" v="-7"/>
+ <val o="ef06" v="-7"/>
+ <val o="fd17" v="-7"/>
+ <val o="10b27" v="-8"/>
+ <val o="11937" v="-8"/>
+ <val o="12746" v="-8"/>
+ <val o="13556" v="-8"/>
+ <val o="14366" v="-8"/>
+ <val o="15181" v="-9"/>
+ <val o="15f85" v="-8"/>
+ <val o="16d95" v="-8"/>
+ <val o="17ba4" v="-8"/>
+ <val o="189b5" v="-8"/>
+ <val o="197c4" v="-8"/>
+ <val o="1a5d5" v="-9"/>
+ <val o="1b3e6" v="-9"/>
+ <val o="1c1f6" v="-8"/>
+ <val o="1d005" v="-8"/>
+ <val o="1de15" v="-8"/>
+ <val o="1ec25" v="-8"/>
+ <val o="1fa36" v="-8"/>
+ <val o="20845" v="-9"/>
+ <val o="21656" v="-8"/>
+ <val o="22465" v="-8"/>
+ <val o="23276" v="-8"/>
+ <val o="24086" v="-7"/>
+ <val o="24e99" v="-7"/>
+ <val o="25ca7" v="-8"/>
+ <val o="26ab7" v="-8"/>
+ <val o="278c6" v="-8"/>
+ <val o="286d6" v="-8"/>
+ <val o="294e6" v="-9"/>
+ <val o="2a301" v="-9"/>
+ <val o="2b105" v="-8"/>
+ <val o="2bf15" v="-8"/>
+ <val o="2cd25" v="-8"/>
+ <val o="2db35" v="-8"/>
+ <val o="2e946" v="-8"/>
+ <val o="2f755" v="-7"/>
+ <val o="30566" v="-9"/>
+ <val o="31375" v="-8"/>
+ <val o="3219e" v="-8"/>
+ <val o="32f96" v="-8"/>
+ <val o="33da6" v="-8"/>
+ <val o="34bb6" v="-8"/>
+ <val o="359de" v="-8"/>
+ <val o="367d6" v="-8"/>
+ <val o="375e6" v="-8"/>
+ <val o="3840e" v="-7"/>
+ <val o="3921e" v="-7"/>
+ <val o="3a016" v="-7"/>
+ <val o="3ae27" v="-8"/>
+ <val o="3bc36" v="-8"/>
+ <val o="3ca47" v="-7"/>
+ <val o="3d856" v="-8"/>
+ <val o="3e667" v="-8"/>
+ <val o="3f481" v="-9"/>
+ <val o="40285" v="-9"/>
+ <val o="41095" v="-9"/>
+ <val o="41ea5" v="-9"/>
+ <val o="42cb5" v="-9"/>
+ <val o="43ac5" v="-8"/>
+ <val o="448d5" v="-8"/>
+ <val o="456e6" v="-8"/>
+ <val o="464f5" v="-7"/>
+ <val o="480ff" v="-7"/>
+ <val o="48f0e" v="-6"/>
+ <val o="49d1d" v="-6"/>
+ <val o="4ab46" v="-7"/>
+ <val o="4b955" v="-7"/>
+ <val o="4c769" v="-6"/>
+ <val o="4d577" v="-7"/>
+ <val o="4e387" v="-7"/>
+ <val o="4f196" v="-7"/>
+ <val o="4ffa6" v="-7"/>
+ <val o="50dd0" v="-7"/>
+ <val o="51bc6" v="-7"/>
+ <val o="529d6" v="-8"/>
+ <val o="537e7" v="-8"/>
+ <val o="54600" v="-9"/>
+ <val o="55406" v="-8"/>
+ <val o="56215" v="-8"/>
+ <val o="57026" v="-8"/>
+ <val o="57e36" v="-8"/>
+ <val o="58c46" v="-8"/>
+ <val o="59a70" v="-8"/>
+ <val o="5a867" v="-7"/>
+ <val o="5b676" v="-7"/>
+ <val o="5c487" v="-6"/>
+ <val o="5d296" v="-7"/>
+ <val o="5e0a9" v="-7"/>
+ <val o="5eeb8" v="-7"/>
+ <val o="5fcc6" v="-7"/>
+ <val o="60ad7" v="-7"/>
+ <val o="618e7" v="-7"/>
+ <val o="626f7" v="-7"/>
+ <val o="63507" v="-7"/>
+ <val o="64317" v="-7"/>
+ <val o="65127" v="-7"/>
+ <val o="65f37" v="-8"/>
+ <val o="66d46" v="-8"/>
+ <val o="67b57" v="-8"/>
+ <val o="68967" v="-8"/>
+ <val o="69782" v="-8"/>
+ <val o="6a586" v="-8"/>
+ <val o="6b395" v="-8"/>
+ <val o="6c1a6" v="-9"/>
+ <val o="6cfb5" v="-8"/>
+ <val o="6ddc6" v="-8"/>
+ <val o="6ebd6" v="-7"/>
+ <val o="6f9e6" v="-8"/>
+ <val o="707f6" v="-7"/>
+ <val o="71607" v="-7"/>
+ <val o="72417" v="-6"/>
+ <val o="73227" v="-6"/>
+ <val o="74037" v="-7"/>
+ <val o="74e47" v="-7"/>
+ <val o="75c57" v="-7"/>
+ <val o="76a63" v="-7"/>
+ <val o="77873" v="-7"/>
+ <val o="78680" v="-6"/>
+ <val o="7948f" v="-7"/>
+ <val o="7a29f" v="-7"/>
+ <val o="7b0af" v="-7"/>
+ <val o="7bebf" v="-8"/>
+ <val o="7cccf" v="-8"/>
+ <val o="7dadf" v="-8"/>
+ <val o="7e8fa" v="-8"/>
+ <val o="7f70a" v="-9"/>
+ <val o="8051a" v="-9"/>
+ <val o="8132a" v="-9"/>
+ <val o="8213a" v="-9"/>
+ <val o="82f4a" v="-9"/>
+ <val o="83d5a" v="-8"/>
+ <val o="84b6a" v="-7"/>
+ <val o="8597a" v="-7"/>
+ <val o="8678b" v="-7"/>
+ <val o="8759b" v="-7"/>
+ <val o="883ac" v="-7"/>
+ <val o="891bb" v="-8"/>
+ <val o="89fca" v="-7"/>
+ <val o="8adda" v="-7"/>
+ <val o="8bbeb" v="-7"/>
+ <val o="8c9fc" v="-7"/>
+ <val o="8d80b" v="-7"/>
+ <val o="8e61a" v="-7"/>
+ <val o="8f42a" v="-7"/>
+ <val o="9023a" v="-7"/>
+ <val o="9104a" v="-8"/>
+ <val o="91e5a" v="-7"/>
+ <val o="92c6a" v="-8"/>
+ <val o="93a84" v="-9"/>
+ <val o="94885" v="-8"/>
+ <val o="95694" v="-9"/>
+ <val o="964a5" v="-9"/>
+ <val o="972b4" v="-8"/>
+ <val o="980c5" v="-8"/>
+ <val o="98ed4" v="-8"/>
+ <val o="99ce5" v="-8"/>
+ <val o="9aaf5" v="-7"/>
+ <val o="9b906" v="-7"/>
+ <val o="9c716" v="-7"/>
+ <val o="9d526" v="-7"/>
+ <val o="9e336" v="-7"/>
+ <val o="9f145" v="-7"/>
+ <val o="9ff56" v="-7"/>
+ <val o="a0d65" v="-7"/>
+ <val o="a1b77" v="-6324"/>
+ <val o="a2986" v="-3516"/>
+ <val o="a3795" v="-963"/>
+ <val o="a45a7" v="644"/>
+ <val o="a53b6" v="700"/>
+ <val o="a61c7" v="942"/>
+ <val o="a6fd6" v="99"/>
+ <val o="a7e00" v="464"/>
+ <val o="a8c00" v="912"/>
+ <val o="a9a05" v="289"/>
+ <val o="aa815" v="32"/>
+ <val o="ab625" v="46"/>
+ <val o="ac435" v="200"/>
+ <val o="ad245" v="921"/>
+ <val o="ae055" v="744"/>
+ <val o="aee65" v="-561"/>
+ <val o="afc75" v="-68"/>
+ <val o="b0a85" v="31"/>
+ <val o="b26a6" v="142"/>
+ <val o="b34b6" v="-123"/>
+ <val o="b42c6" v="-451"/>
+ <val o="b50d6" v="-729"/>
+ <val o="b5ee7" v="-712"/>
+ <val o="b6cf6" v="-1584"/>
+ <val o="b7b07" v="-1983"/>
+ <val o="b8917" v="-1753"/>
+ <val o="b9728" v="-1758"/>
+ <val o="ba537" v="-1891"/>
+ <val o="bb347" v="-827"/>
+ <val o="bc157" v="-882"/>
+ <val o="bcf67" v="-899"/>
+ <val o="bdd81" v="644"/>
+ <val o="beb86" v="417"/>
+ <val o="bf995" v="524"/>
+ <val o="c07a6" v="400"/>
+ <val o="c15b5" v="372"/>
+ <val o="c23c6" v="484"/>
+ <val o="c31d5" v="591"/>
+ <val o="c3fe6" v="336"/>
+ <val o="c4df5" v="741"/>
+ <val o="c5c06" v="114"/>
+ <val o="c6a16" v="507"/>
+ <val o="c7826" v="-51"/>
+ <val o="c8636" v="136"/>
+ <val o="c9446" v="334"/>
+ <val o="ca256" v="235"/>
+ <val o="cb066" v="116"/>
+ <val o="cbe76" v="-417"/>
+ <val o="ccc87" v="-232"/>
+ <val o="cda96" v="-184"/>
+ <val o="ce8a8" v="-219"/>
+ <val o="cf6b7" v="-134"/>
+ <val o="d04c8" v="-51"/>
+ <val o="d12d7" v="143"/>
+ <val o="d20e7" v="0"/>
+ <val o="d2f02" v="11"/>
+ <val o="d3d05" v="600"/>
+ <val o="d4b15" v="644"/>
+ <val o="d5926" v="836"/>
+ <val o="d6735" v="1068"/>
+ <val o="d7546" v="1213"/>
+ <val o="d8355" v="-135"/>
+ <val o="d9166" v="-755"/>
+ <val o="d9f75" v="-1498"/>
+ <val o="dad87" v="-2011"/>
+ <val o="dbb97" v="-2561"/>
+ <val o="dc9a8" v="-2338"/>
+ <val o="dd7b7" v="-2895"/>
+ <val o="de5c6" v="-2780"/>
+ <val o="df3d7" v="-2912"/>
+ <val o="e01d7" v="-2913"/>
+ <val o="e0fe5" v="-2832"/>
+ <val o="e1df5" v="-3018"/>
+ <val o="e2c04" v="-4099"/>
+ <val o="e3a14" v="-3979"/>
+ <val o="e4824" v="-3370"/>
+ <val o="e5634" v="-3428"/>
+ <val o="e6444" v="-2551"/>
+ <val o="e7255" v="-2189"/>
+ <val o="e806f" v="-1757"/>
+ <val o="e8e7f" v="-477"/>
+ <val o="e9c8e" v="-709"/>
+ <val o="eaa9f" v="-653"/>
+ <val o="eb8ae" v="-653"/>
+ <val o="ec6bf" v="-468"/>
+ <val o="ed4ce" v="-2112"/>
+ <val o="ee2df" v="-2239"/>
+ <val o="ef0ef" v="-3198"/>
+ <val o="eff01" v="-4087"/>
+ <val o="f0d10" v="-4308"/>
+ <val o="f1b20" v="-4550"/>
+ <val o="f2930" v="-4628"/>
+ <val o="f3740" v="-4301"/>
+ <val o="f4551" v="-4608"/>
+ <val o="f5361" v="-4857"/>
+ <val o="f6172" v="-4613"/>
+ <val o="f6f80" v="-4818"/>
+ <val o="f7d91" v="-4244"/>
+ <val o="f8ba1" v="-3915"/>
+ <val o="f99b1" v="-3805"/>
+ <val o="fa7c0" v="-3025"/>
+ <val o="fb5d1" v="-3034"/>
+ <val o="fc3e0" v="-3295"/>
+ <val o="fd1fb" v="-2680"/>
+ <val o="fe00b" v="-2530"/>
+ <val o="fee1c" v="-2083"/>
+ <val o="ffc2c" v="-1982"/>
+ <val o="100a3b" v="-1790"/>
+ <val o="10184c" v="-1791"/>
+ <val o="10265b" v="-2077"/>
+ <val o="10346c" v="-2724"/>
+ <val o="10427b" v="-4016"/>
+ <val o="10508d" v="-4320"/>
+ <val o="105e9d" v="-4339"/>
+ <val o="106cad" v="-4725"/>
+ <val o="107abd" v="-4338"/>
+ <val o="1088cd" v="-3906"/>
+ <val o="1096de" v="-4119"/>
+ <val o="10a4ed" v="-4322"/>
+ <val o="10b2fe" v="-4345"/>
+ <val o="10c10d" v="-4169"/>
+ <val o="10cf1e" v="-4354"/>
+ <val o="10dd2e" v="-4160"/>
+ <val o="10eb66" v="-4453"/>
+ <val o="10f94e" v="-3895"/>
+ <val o="11075e" v="-3281"/>
+ <val o="11156d" v="-2866"/>
+ <val o="112388" v="-2663"/>
+ <val o="113187" v="-1794"/>
+ <val o="113fb0" v="-1797"/>
+ <val o="114da6" v="-1823"/>
+ <val o="115bb6" v="-1782"/>
+ <val o="1169c6" v="-1585"/>
+ <val o="1177d6" v="-2082"/>
+ <val o="1185e8" v="-2885"/>
+ <val o="1193f7" v="-3558"/>
+ <val o="11a208" v="-4838"/>
+ <val o="11b017" v="-4322"/>
+ <val o="11be2f" v="-5393"/>
+ <val o="11cc37" v="-4456"/>
+ <val o="11da47" v="-4279"/>
+ <val o="11e857" v="-4354"/>
+ <val o="11f667" v="-3900"/>
+ <val o="120578" v="-4"/>
+ <val o="121386" v="-4"/>
+ <val o="122196" v="-4"/>
+ <val o="122fa6" v="-3"/>
+ <val o="123db5" v="-3"/>
+ <val o="124bc5" v="-3"/>
+ <val o="1259d5" v="-2"/>
+ <val o="1267e4" v="-2"/>
+ <val o="127600" v="-2"/>
+ <val o="128305" v="-2"/>
+ <val o="129115" v="-2"/>
+ <val o="129f25" v="-2"/>
+ <val o="12ad35" v="-2"/>
+ <val o="12bb45" v="-1"/>
+ <val o="12c954" v="-2"/>
+ <val o="12d766" v="-2"/>
+ <val o="12e575" v="-3"/>
+ <val o="12f386" v="-2"/>
+ <val o="130196" v="-4"/>
+ <val o="130fa6" v="-3"/>
+ <val o="131db7" v="-3"/>
+ <val o="132bc5" v="-3"/>
+ <val o="1339d4" v="0"/>
+ <val o="1347e5" v="0"/>
+ <val o="1355f4" v="0"/>
+ <val o="136404" v="0"/>
+ <val o="137214" v="0"/>
+ <val o="138024" v="0"/>
+ <val o="138e33" v="0"/>
+ <val o="139c44" v="0"/>
+ <val o="13aa54" v="0"/>
+ <val o="13b865" v="0"/>
+ <val o="13c67e" v="0"/>
+ <val o="13d48e" v="0"/>
+ <val o="13e29e" v="0"/>
+ <val o="13f0ae" v="0"/>
+ <val o="13febf" v="0"/>
+ <val o="140ccf" v="0"/>
+ <val o="141adf" v="0"/>
+ <val o="1428ef" v="0"/>
+ <val o="1436ff" v="0"/>
+ <val o="14450f" v="0"/>
+ <val o="14531f" v="0"/>
+ <val o="146130" v="0"/>
+ <val o="146f40" v="0"/>
+ <val o="147d44" v="0"/>
+ <val o="148b57" v="0"/>
+ <val o="149965" v="0"/>
+ <val o="14a775" v="0"/>
+ <val o="14b584" v="0"/>
+ <val o="14c397" v="0"/>
+ <val o="14d1a4" v="0"/>
+ <val o="14dfb6" v="0"/>
+ <val o="14edc5" v="0"/>
+ <val o="14fbd5" v="0"/>
+ <val o="1509e5" v="0"/>
+ <val o="1517ff" v="0"/>
+ <val o="152605" v="0"/>
+ <val o="153415" v="0"/>
+ <val o="154225" v="0"/>
+ <val o="155035" v="0"/>
+ <val o="155e45" v="0"/>
+ <val o="156c55" v="0"/>
+ <val o="157a65" v="0"/>
+ <val o="158875" v="0"/>
+ <val o="159686" v="0"/>
+ <val o="15a495" v="0"/>
+ <val o="15b2a6" v="0"/>
+ <val o="15c0b6" v="0"/>
+ <val o="15cec6" v="0"/>
+ <val o="15dcd5" v="0"/>
+ <val o="15eae6" v="0"/>
+ <val o="15f8f5" v="0"/>
+ <val o="160706" v="0"/>
+ <val o="161517" v="0"/>
+ <val o="162326" v="0"/>
+ <val o="163137" v="0"/>
+ <val o="163f46" v="0"/>
+ <val o="164d57" v="0"/>
+ <val o="165b67" v="0"/>
+ <val o="166982" v="0"/>
+ <val o="167786" v="0"/>
+ <val o="168596" v="0"/>
+ <val o="1693a6" v="0"/>
+ <val o="16a1b5" v="0"/>
+ <val o="16afc6" v="0"/>
+ <val o="16bdd5" v="0"/>
+ <val o="16cbe6" v="0"/>
+ <val o="16d9f6" v="0"/>
+ <val o="16e807" v="0"/>
+ <val o="16f616" v="0"/>
+ <val o="170429" v="0"/>
+ <val o="171236" v="0"/>
+ <val o="172047" v="0"/>
+ <val o="172e57" v="0"/>
+ <val o="173c67" v="0"/>
+ <val o="174a77" v="0"/>
+ <val o="175887" v="0"/>
+ <val o="176694" v="-6844"/>
+ <val o="1774a3" v="-6848"/>
+ <val o="1782b3" v="-7276"/>
+ <val o="1790c5" v="-6718"/>
+ <val o="179ed4" v="-6044"/>
+ <val o="17ace4" v="-5879"/>
+ <val o="17bafd" v="-6067"/>
+ <val o="17c90f" v="-5484"/>
+ <val o="17d71e" v="-5437"/>
+ <val o="17e52f" v="-5342"/>
+ <val o="17f33f" v="-4981"/>
+ <val o="18014f" v="-5193"/>
+ <val o="180f5f" v="-6321"/>
+ <val o="181d6e" v="-6923"/>
+ <val o="182b7f" v="-7889"/>
+ <val o="18398f" v="-13464"/>
+ <val o="1847a1" v="-13354"/>
+ <val o="1855af" v="-12813"/>
+ <val o="1863c0" v="-11996"/>
+ <val o="1871cf" v="-12436"/>
+ <val o="187fe0" v="-11658"/>
+ <val o="188def" v="-12508"/>
+ <val o="189c00" v="-11965"/>
+ <val o="18b80d" v="-7567"/>
+ <val o="18c61c" v="-8100"/>
+ <val o="18d42c" v="-7676"/>
+ <val o="18e23b" v="-6565"/>
+ <val o="18f04b" v="-6167"/>
+ <val o="18fe5e" v="-5660"/>
+ <val o="190c76" v="-4475"/>
+ <val o="191a86" v="-4306"/>
+ <val o="192896" v="-4252"/>
+ <val o="1936a6" v="-4125"/>
+ <val o="1944b7" v="-4125"/>
+ <val o="1952c6" v="-4498"/>
+ <val o="1960d7" v="-5137"/>
+ <val o="196ee6" v="-5967"/>
+ <val o="197cf8" v="-6354"/>
+ <val o="198b0f" v="-5965"/>
+ <val o="19991f" v="-6615"/>
+ <val o="19b541" v="-6619"/>
+ <val o="19c34d" v="-6199"/>
+ <val o="19d15e" v="-6235"/>
+ <val o="19df80" v="-6313"/>
+ <val o="19ed90" v="-6079"/>
+ <val o="19eebe" v="-6075"/>
+ <val o="19fb8e" v="-2390"/>
+ <val o="1a09a0" v="-2600"/>
+ <val o="1a17ae" v="-3051"/>
+ <val o="1a25be" v="-3338"/>
+ <val o="1a33cd" v="-2238"/>
+ <val o="1a41dd" v="-2137"/>
+ <val o="1a4fed" v="-1546"/>
+ <val o="1a5e08" v="-1670"/>
+ <val o="1a6c05" v="-969"/>
+ <val o="1a7a15" v="-1123"/>
+ <val o="1a8826" v="-1072"/>
+ <val o="1a9637" v="-481"/>
+ <val o="1aa445" v="-537"/>
+ <val o="1ab255" v="-995"/>
+ <val o="1ac065" v="-1819"/>
+ <val o="1ace75" v="-2636"/>
+ <val o="1adc87" v="-2920"/>
+ <val o="1aea96" v="-2594"/>
+ <val o="1af8a7" v="-2898"/>
+ <val o="1b06b7" v="-2173"/>
+ <val o="1b14c6" v="-2092"/>
+ <val o="1c7460" v="311"/>
+ <val o="1c8270" v="399"/>
+ <val o="1c907e" v="3486"/>
+ <val o="1c9e8f" v="3357"/>
+ <val o="1caca2" v="3670"/>
+ <val o="1cbab1" v="3580"/>
+ <val o="1cc8c1" v="5398"/>
+ <val o="1cd6d0" v="5478"/>
+ <val o="1ce4de" v="5618"/>
+ <val o="1cf2f0" v="5659"/>
+ <val o="1d0109" v="5923"/>
+ <val o="1d0f06" v="6651"/>
+ <val o="1d1d15" v="6654"/>
+ <val o="1d2b25" v="6713"/>
+ <val o="1d3935" v="6885"/>
+ <val o="1d4745" v="6893"/>
+ <val o="1d5555" v="6705"/>
+ <val o="1d6366" v="5853"/>
+ <val o="1d7175" v="5545"/>
+ <val o="1d7f86" v="5589"/>
+ <val o="1d8d95" v="-3219"/>
+ <val o="1d9ba6" v="-3620"/>
+ <val o="1da9b6" v="-3623"/>
+ <val o="1db7c7" v="-3472"/>
+ <val o="1dc5d5" v="-3630"/>
+ <val o="1dd3e6" v="-3723"/>
+ <val o="1de1f5" v="-6033"/>
+ <val o="1df006" v="-6752"/>
+ <val o="1dfe16" v="-6647"/>
+ <val o="1e0c26" v="-6778"/>
+ <val o="1e1a36" v="-6794"/>
+ <val o="1e2847" v="-6593"/>
+ <val o="1e3659" v="-6136"/>
+ <val o="1e4467" v="-5653"/>
+ <val o="1e5281" v="-4910"/>
+ <val o="1e6086" v="-4908"/>
+ <val o="1e6e96" v="-4803"/>
+ <val o="1e7ca6" v="-1970"/>
+ <val o="1e8ab5" v="-1820"/>
+ <val o="1e98c6" v="-1821"/>
+ <val o="1ea6d5" v="-2271"/>
+ <val o="1eb4e6" v="-2332"/>
+ <val o="1ec2f6" v="-2646"/>
+ <val o="1ed106" v="-2644"/>
+ <val o="1edf16" v="-2749"/>
+ <val o="1eed26" v="-2728"/>
+ <val o="1efb36" v="-2587"/>
+ <val o="1f0946" v="-2548"/>
+ <val o="1f1756" v="-2377"/>
+ <val o="1f2566" v="-2339"/>
+ <val o="1f3376" v="-2566"/>
+ <val o="1f4187" v="-2784"/>
+ <val o="1f4f96" v="-3191"/>
+ <val o="1f5da7" v="-3581"/>
+ <val o="1f6bb6" v="-3591"/>
+ <val o="1f79c7" v="-3124"/>
+ <val o="1f87d6" v="-3337"/>
+ <val o="1f95e7" v="-3142"/>
+ <val o="1fa401" v="-2806"/>
+ <val o="1fb204" v="-2480"/>
+ <val o="1fc016" v="-2497"/>
+ <val o="1fce25" v="-2171"/>
+ <val o="1fdc35" v="-2133"/>
+ <val o="1fea45" v="-2159"/>
+ <val o="1ff855" v="-2500"/>
+ <val o="200665" v="-2395"/>
+ <val o="201475" v="-3469"/>
+ <val o="202286" v="-4512"/>
+ <val o="203095" v="-5355"/>
+ <val o="203ea5" v="-5915"/>
+ <val o="204cb6" v="-5771"/>
+ <val o="205ac6" v="-5287"/>
+ <val o="2068d6" v="-5386"/>
+ <val o="2076e6" v="-5976"/>
+ <val o="2084f6" v="-6100"/>
+ <val o="209306" v="-6742"/>
+ <val o="20a116" v="-6312"/>
+ <val o="20af26" v="-5533"/>
+ <val o="20bd37" v="-5455"/>
+ <val o="20cb46" v="-4630"/>
+ <val o="20d957" v="-4348"/>
+ <val o="20e767" v="-4046"/>
+ <val o="20f581" v="-3855"/>
+ <val o="210386" v="-3519"/>
+ <val o="211194" v="-3131"/>
+ <val o="211fa5" v="-3014"/>
+ <val o="212db5" v="-2904"/>
+ <val o="213bc5" v="-2826"/>
+ <val o="2149d6" v="-3680"/>
+ <val o="2157e5" v="-4507"/>
+ <val o="2165f6" v="-5844"/>
+ <val o="217406" v="-6195"/>
+ <val o="218217" v="-6165"/>
+ <val o="219026" v="-6142"/>
+ <val o="219e39" v="-6223"/>
+ <val o="21ac46" v="-5938"/>
+ <val o="21ba57" v="-5926"/>
+ <val o="21c867" v="-5557"/>
+ <val o="21d677" v="-6240"/>
+ <val o="21e487" v="-5750"/>
+ <val o="21f296" v="-5772"/>
+ <val o="2200a6" v="-5468"/>
+ <val o="220eb7" v="-5393"/>
+ <val o="221cc6" v="-4543"/>
+ <val o="222ad7" v="-3876"/>
+ <val o="2238e7" v="-3622"/>
+ <val o="224701" v="-3292"/>
+ <val o="225505" v="-1681"/>
+ <val o="226315" v="-2082"/>
+ <val o="227125" v="-2043"/>
+ <val o="227f35" v="-1675"/>
+ <val o="228d45" v="-1785"/>
+ <val o="229b54" v="-3494"/>
+ <val o="22a965" v="-4080"/>
+ <val o="22b776" v="-4454"/>
+ <val o="22c586" v="-4816"/>
+ <val o="22d397" v="-4405"/>
+ <val o="22e1a6" v="-4620"/>
+ <val o="22efb6" v="-4820"/>
+ <val o="22fdc7" v="-4643"/>
+ <val o="230bd7" v="-4435"/>
+ <val o="2319e6" v="-5397"/>
+ <val o="2327f6" v="-5558"/>
+ <val o="23361b" v="-5883"/>
+ <val o="234416" v="-5207"/>
+ <val o="235226" v="-5203"/>
+ <val o="236037" v="-5253"/>
+ <val o="236e46" v="-4342"/>
+ <val o="237c57" v="-4194"/>
+ <val o="238a66" v="-3991"/>
+ <val o="239881" v="-3195"/>
+ <val o="23a685" v="-3328"/>
+ <val o="23b495" v="-3191"/>
+ <val o="23c2a4" v="-2966"/>
+ <val o="23d0b5" v="-2959"/>
+ <val o="23dec4" v="-2916"/>
+ <val o="23ecd5" v="-3620"/>
+ <val o="23fae4" v="-4562"/>
+ <val o="2408f6" v="-5013"/>
+ <val o="241706" v="-5793"/>
+ <val o="242518" v="-6605"/>
+ <val o="243325" v="-6787"/>
+ <val o="244137" v="-6732"/>
+ <val o="244f46" v="-6435"/>
+ <val o="246b66" v="-6415"/>
+ <val o="247976" v="-6261"/>
+ <val o="248786" v="-5371"/>
+ <val o="24957e" v="-5703"/>
+ <val o="24a38f" v="-5668"/>
+ <val o="24b19c" v="-5810"/>
+ <val o="24bfac" v="-5495"/>
+ <val o="24cdbc" v="-5368"/>
+ <val o="24dbcd" v="-4539"/>
+ <val o="24e9e5" v="-4003"/>
+ <val o="24f808" v="-3487"/>
+ <val o="250616" v="-3597"/>
+ <val o="251426" v="-3575"/>
+ <val o="252236" v="-3422"/>
+ <val o="253047" v="-3610"/>
+ <val o="253e56" v="-4069"/>
+ <val o="254c67" v="-4209"/>
+ <val o="255a76" v="-4977"/>
+ <val o="256887" v="-5845"/>
+ <val o="257697" v="-5662"/>
+ <val o="2584a8" v="-15155"/>
+ <val o="2592b6" v="-8621"/>
+ <val o="25a0c7" v="-4609"/>
+ <val o="25aed7" v="-6329"/>
+ <val o="25bce7" v="-6120"/>
+ <val o="25caf8" v="-5819"/>
+ <val o="25d907" v="-5800"/>
+ <val o="25e718" v="-5627"/>
+ <val o="25f527" v="-5318"/>
+ <val o="260338" v="-5543"/>
+ <val o="261149" v="-4916"/>
+ <val o="261f59" v="-4589"/>
+ <val o="262d68" v="-4670"/>
+ <val o="263b83" v="-3694"/>
+ <val o="264986" v="-3491"/>
+ <val o="265795" v="-3582"/>
+ <val o="2665a6" v="-3683"/>
+ <val o="2673b5" v="-3608"/>
+ <val o="2681c6" v="-3681"/>
+ <val o="268fd5" v="-3850"/>
+ <val o="269de6" v="-3923"/>
+ <val o="26abf6" v="-3955"/>
+ <val o="26ba06" v="-4467"/>
+ <val o="26c817" v="-4257"/>
+ <val o="26d62b" v="-3915"/>
+ <val o="26e436" v="-3897"/>
+ <val o="26f247" v="-3531"/>
+ <val o="270057" v="-3798"/>
+ <val o="270e67" v="-3628"/>
+ <val o="271c77" v="-4540"/>
+ <val o="272a87" v="-5171"/>
+ <val o="273897" v="-5038"/>
+ <val o="2746a8" v="-5028"/>
+ <val o="2754b9" v="-5029"/>
+ <val o="2762c7" v="-3993"/>
+ <val o="2770d8" v="-3551"/>
+ <val o="277ee7" v="-3206"/>
+ </par>
+ <par memind="674601" h="3dc1a7e0">
+ <val o="0" v="22123:137:88:76:103:69:89:6047:6571:2134:6414:2223:2727.231:1435.675:5.979:0.067:0:4171:41039:29052:42104:12218:24721:13504:8975:11153:2990:8665:9759:11742"/>
+ </par>
+ <par memind="673801" h="3dc1a7e0">
+ <val o="0" v="0:0:0:0:0:0:0:2472:22505:25160:16425:30012:23514.229:11675.362:9.272:0.416:0:6491:3221:2867:4204:22822:3047:6263:15342:9785:32424:23346:21578:23508"/>
+ </par>
+ <par memind="673401" h="3dc1a7e0">
+ <val o="0" v="72898:191:188:176:178:174:181:10441:14079:1360:46667:74131:80996.13:50324.326:32.188:0.038:0:44027:200289:109216:52461:12951:75896:69196:104852:117036:96903:120714:124308:96207"/>
+ </par>
+ <par memind="673001" h="3dc1a7e0">
+ <val o="0" v="0:0:0:0:0:0:0:3476:3226:5597:4853:0:0:0:0.001:0.137:0:0:0:0:0:50735:59205:0:0:0:0:0:0:0"/>
+ </par>
+ <par memind="26274601" h="3dc1a7e0">
+ <val o="0" v="0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::0::6::13::20::27::32::34::41::48::54::61::68::75::82::89::96::103::110::110::111::116::119::123::129"/>
+ <val o="2a300" v="0::5::5::7::11::12::12::17::24::30::37::44::51::58::65::69::71::71::71::73::75::76::76::81::0::6::13::20::27::34::40::44::50::::51::51::51::51::51::51::51::51::51::51::54::60::63::69::0"/>
+ <val o="55410" v="6::13::20::27::34::38::44::46::46::47::52::58::65::66::66::67::69::69::70::76::83::89::96::0::5::12::19::25::30::31::35::37::37::37::37::38::44::45::45::45::45::45::45::48::51::56::62::0"/>
+ <val o="7f710" v="6::14::21::28::35::42::47::50::50::50::52::59::65::69::72::74::75::75::75::75::78::79::82::0::7::14::21::28::34::38::44::45::45::49::56::63::70::76::80::835::1675::2038::2039::2856::3158::3607::4431::0"/>
+ <val o="a9a10" v="629::797::1456::2382::2476::2477::2821::2821::2821::::2821::2821::2856::2865::2865::3049::3223::3267::3532::4304::5147::5147::5449::0::101::102::252::592::605::605::605::605::612::612::612::612::612::612::612::679::767::767::767::767::767::767::910::0::1158"/>
+ <val o="d4b20" v="2289::2701::3076::3076::3385::3904::3904::3904::3904::3904::3904::3904::3904::3904::3904::3911::4023::4599::5237::5494::5780::6072::0::622::622::622::622::622::716::819::819::819::819::819::819::870::870::870::870::870::870::870::870::870::870::1024::0::1127"/>
+ <val o="fee20" v="1954::2173::2377::2377::2377::2377::2377::2377::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2381::2384::2400::2400::0::163::163::163::163::163::163::163::163::204::330::751::1400::1433::1433::1433::1435.1::1435.1::1435.1::1435.1::1435.1::1435.144::1435.375::1435.381::0::1.179"/>
+ <val o="129120" v="2.486::3.869::5.278::5.809::5.811::5.811::5.811::5.843::5.967::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.968::5.969::5.969::0::0::0::0::0::0::0::0::0::0::0::0.001::0.014::0.032::0.04::0.046::0.049::0.05::0.05::0.05::0.05::0.05::0.05::0.053::0::0.005"/>
+ <val o="153420" v="0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.005::0.009::0.009::0.009::0.009::0.009::0.009::0.014::0::0.004::0.02::0.031::0.042::0.044::0.044::0.044::0.044::0.044::0.044::0.044::0.047::0.05::0.051::0.054::0.054::0.054::0::0::0::0::175::1878::0::2303"/>
+ <val o="17d720" v="5016::7889::10825::12785::13428::14568::16281::17870::18757::19673::22314::25317::28017::30611::32571::::33078::33570::34865::36124::37670::39908::0::978::2540::4236::5992::6773::6818::6915::7643::8510::8618::::9354::10334::10857::11190::11387::11387::12818::15547::19011::21077::22610::25682::0::2682::5757::9094"/>
+ <val o="1a9640" v="12439::14810::16426::18172::20462::22851::24957::26912::29200::31789"/>
+ <val o="1c7460" v="8197::8264::8365::8365::8996::9996::10570::10570::10570::10807::0::388::776::1655::2374::2391::2391::2429::3332::3677::3768::3851::4294::4930::5847::6625::7852::9492::11328::13376::15620::17946::20170::22469::0::1979::4179::4817::5302::5612::5802::6075::6787::7172::7489::7668::7867::8184"/>
+ <val o="1f1760" v="8270::8270::8270::8270::8270::8279::8425::8766::9261::11379::0::967::2232::3224::3584::3708::3742::4192::4373::4379::4379::4379::4379::4379::4379::4468::4816::5111::5533::6393::6740::7394::7394::7988::0::1479::2407::2907::3341::3347::3347::3522::4521::4702::5104::5399::6511::6511"/>
+ <val o="21ba60" v="6511::6511::7554::8046::8046::8084::8781::9437::9437::10034::0::258::258::258::258::258::303::541::1097::1122::1122::1122::1122::1397::1429::2052::2638::2638::2638::2638::2638::2779::2779::2779::0::211::716::993::993::993::993::1058::1060::1060::1060::1060::1123::1640"/>
+ <val o="246b70" v="3280::3952::3962::3962::3962::4297::5586::6998::7956::0::492::1570::2683::3585::3615::3618::3659::3659::3659::3659::3973::6767::8644::8717::8718::8718::8718::8718::8718::8718::8898::8898::9205::0::502::1825::3722::5758::7237::8159::8226::8226::8226::8226::8226::8226::8226::8226"/>
+ <val o="270e70" v="8226::8240::8504::8980::9466::10308::10666::10666::10739"/>
+ </par>
+ <par memind="26273801" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::0"/>
+ <val o="a9a10" v="273::304::304::304::392::1467::1961::2735::4511::::12114::16337::18252::18452::19051::20724::21115::21611::21616::21616::21647::22460::22505::0::1428::1786::1821::1821::2100::3116::4606::5700::6263::7232::8321::9202::9706::10109::10567::11827::12356::14818::17416::20186::22628::24467::25160::0::16"/>
+ <val o="d4b20" v="16::16::18::761::2317::2345::3031::5010::7681::10719::13491::14079::14541::14788::15028::15551::16182::16182::16327::16351::16394::16424::0::1254::2521::3304::4214::6189::8542::8884::9714::10907::12447::13604::14407::14928::16855::18323::20016::22306::23952::25511::26700::27858::29512::30012::0::0"/>
+ <val o="fee20" v="14::14::16::848::2512::4114::5556::7070::7967::9424::10812::11722::12829::13950::15033::17095::19423::20670::21129::21828::22608::23444::0::1024::1508::1786::1985::2951::4900::6589::8053::8849::8929::8929::8929::9502::10380::11200::11669.43::11670.714::11671.501::11673.236::11674.324::11674.616::11674.887::11675.345::0::0"/>
+ <val o="129120" v="0::0::0::0::0.632::1.57::2.787::4.389::5.353::6.676::7.825::8.473::9.059::9.07::9.083::9.113::9.149::9.186::9.222::9.254::9.263::9.267::0::0.054::0.078::0.094::0.113::0.149::0.2::0.229::0.234::0.241::0.244::0.245::0.245::0.245::0.245::0.245::0.246::0.276::0.309::0.348::0.383::0.408::0.415::0.416::0::0.022"/>
+ <val o="153420" v="0.031::0.032::0.033::0.045::0.076::0.1::0.121::0.161::0.197::0.227::0.252::0.257::0.264::0.275::0.295::0.315::0.322::0.329::0.332::0.348::0.357::0.357::0::0::0::0::0::0::0.015::0.051::0.062::0.068::0.079::0.091::0.094::0.094::0.097::0.108::0.125::0.161::1425::3563::5087::6081::6491::6491::0::0"/>
+ <val o="17d720" v="0::0::0::0::3::4::17::17::17::17::83::83::83::83::83::::2815::3221::3221::3221::3221::3221::0::0::0::0::0::0::503::2124::2124::2135::2187::::2220::2220::2220::2220::2231::2857::2867::2867::2867::2867::2867::2867::0::0::0::0"/>
+ <val o="1a9640" v="0::0::0::0::5::5::5::5::5::5"/>
+ <val o="1c7460" v="14139::14218::14538::16467::16493::16493::17913::20388::22503::22822::0::242::242::242::242::473::1614::2783::2783::2785::3043::3046::3046::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::3047::0::0::0::101::101::101::155::155::155::155::155::158::158::158"/>
+ <val o="1f1760" v="303::689::1267::3291::5362::5964::5964::6205::6263::6263::0::67::78::78::78::96::279::1257::2169::3382::5628::7692::9144::9800::11410::13193::13770::14500::14502::14526::14528::14693::15337::15342::0::0::128::128::128::631::1960::2834::2847::2994::3445::3445::3445::4010"/>
+ <val o="21ba60" v="5304::6802::7188::7304::7777::8119::8119::8238::9731::9785::0::3202::5137::5593::6304::8577::12322::12561::12561::13960::16533::20127::22841::22863::23106::23247::23247::24987::26402::27590::28075::29263::31438::32325::0::171::171::200::344::1476::2425::3387::4145::5875::9210::12291::15144::15144"/>
+ <val o="246b70" v="15144::15144::17267::21864::23232::23346::23346::23346::23346::0::86::86::86::86::188::709::1333::2511::4313::7593::10434::10434::10443::10622::10810::11293::12302::14859::17476::19565::19742::21035::21234::0::13::13::13::13::13::13::216::929::2058::3700::5698::8782::11698::14663"/>
+ <val o="270e70" v="17767::18546::19155::19155::19155::19155::20730::23016::23508"/>
+ </par>
+ <par memind="26273401" h="3dc1a7e0">
+ <val o="0" v="0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::0::8::16::24::32::40::48::56::65::73::81::89::97::105::114::122::131::138::145::152::160::167::175::183"/>
+ <val o="2a300" v="0::8::16::23::31::39::47::55::63::71::79::87::96::104::112::120::128::135::142::150::157::165::172::180::0::8::17::25::34::43::51::58::66::::79::85::92::98::105::111::117::124::131::138::145::153::160::168::0"/>
+ <val o="55410" v="8::16::25::33::41::49::56::64::70::77::84::91::98::105::111::118::125::132::139::147::154::162::170::0::7::16::24::32::40::48::55::63::69::76::82::89::96::103::109::116::122::128::135::143::150::158::166::0"/>
+ <val o="7f710" v="8::17::25::34::43::51::58::66::73::80::87::94::101::108::115::122::129::135::142::150::157::165::172::0::8::17::25::34::42::50::58::65::72::78::85::92::100::107::114::2595::7913::10294::10439::10439::10439::10441::10441::0"/>
+ <val o="a9a10" v="2::4::9::9::9::9::69::181::236::::327::461::720::1393::2215::3059::4593::6342::8041::9944::11561::12314::13166::0::47::47::47::47::47::47::47::47::48::59::87::127::134::135::142::182::537::769::1000::1156::1208::1230::1264::0::0"/>
+ <val o="d4b20" v="0::0::0::0::58::464::1214::2866::5195::7644::10189::13108::15902::18773::21557::24345::28271::32267::36012::39360::42352::44782::0::1215::1879::2581::3232::3730::4627::6845::9426::13213::17460::21812::26408::30878::35346::40061::44776::49145::53501::57575::61429::64968::68029::71154::0::2541"/>
+ <val o="fee20" v="4757::6749::8707::10446::12296::14817::18021::22192::24710::29209::33799::38000::42199::46375::50681::55062::59387::63686::67971::71883::75378::78274::0::1965::3785::5589::7408::9042::10735::13143::16254::20473::25210::29898::34989::39265::43547::47659::50298.816::50302.733::50306.729::50310.326::50313.783::50317.062::50320.016::50322.277::0::1.986"/>
+ <val o="129120" v="3.746::5.427::7.116::8.649::10.225::12.377::14.972::18.155::21.519::24.079::26.789::29.872::32.038::32.075::32.093::32.11::32.132::32.149::32.163::32.173::32.181::32.183::0::0::0::0::0::0::0::0::0::0.001::0.005::0.008::0.012::0.014::0.014::0.014::0.014::0.017::0.023::0.026::0.029::0.032::0.035::0.038::0::0"/>
+ <val o="153420" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.004::0.013::0.023::0.035::0.039::0.04::0.04::0::0::0::0::0::0::0::0::0.011::0.064::0.184::0.299::0.403::0.491::0.587::0.684::0.777::0.882::4649::11369::18384::25539::32098::38189::0::5631"/>
+ <val o="17d720" v="11134::16580::21819::26934::32449::39011::46164::57329::70535::83592::96112::107934::119836::131836::143932::::159972::167838::175759::182940::189261::195260::0::4361::8637::12844::17026::21292::26185::31514::37629::44147::50295::::62972::69142::75490::81871::88411::92634::95263::98136::101493::104338::106264::108086::0::1118::2125::3163"/>
+ <val o="1a9640" v="3972::4424::5117::6670::8682::11273::14036::16800::19585::21687"/>
+ <val o="1c7460" v="12951::12951::12951::12951::12951::12951::12951::12951::12951::12951::0::0::0::0::0::0::0::0::0::0::2097::5658::9307::12837::16437::20072::24855::31120::37813::44635::51509::58224::64519::70460::0::4912::9779::12468::14377::16196::18098::20357::22916::25572::28333::31048::33673::36268"/>
+ <val o="1f1760" v="38769::41197::43617::46222::49307::52694::56229::59586::62790::66147::0::2563::5010::7377::9547::11662::13970::16722::19820::23668::28455::34079::39799::45148::50589::56448::62674::69084::75584::81629::87007::92190::96664::100953::0::3686::6981::10109::13149::16039::19168::23164::28263::34238::40473::46590::52821::58868"/>
+ <val o="21ba60" v="64810::70628::77026::83160::89027::94673::100155::105383::109691::113559::0::1996::3876::5949::7945::9673::11583::15197::19355::23959::28689::33229::37981::42745::47470::52656::58228::63768::69353::74634::79872::84699::88966::93090::0::3272::6519::9646::12665::15529::18785::22767::27361::33026::39197::45634::52231::58688"/>
+ <val o="246b70" v="71623::77897::83661::88919::94509::100226::106004::111517::116497::0::3504::7147::10760::14341::17823::21561::25845::30381::35821::41529::48026::57310::64898::70924::77195::83135::89105::94900::100321::105698::111053::115727::120309::0::3610::7127::10778::14421::18015::21712::25564::29454::33598::37946::42100::46054::49824::53500"/>
+ <val o="270e70" v="57099::61385::66221::71352::76382::81368::85828::89677::93036"/>
+ </par>
+ <par memind="26273001" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::0"/>
+ <val o="a9a10" v="1070::1205::1242::1361::1873::2688::2888::2968::3013::::3093::3165::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::3226::0::504::975::1420::1776::2305::2796::3212::4002::4254::4373::4494::4549::4753::4950::5087::5453::5453::5453::5453::5454::5473::5509::5581::0::581"/>
+ <val o="d4b20" v="1231::1927::2760::3902::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::4853::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="fee20" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="129120" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0.017::0.031::0.048::0.065::0.085::0.105::0.114::0.116::0.116::0.116::0.116::0.116::0.117::0.12::0.123::0.128::0.135::0.135::0.135::0.135::0.135::0.135::0.136::0::0.016"/>
+ <val o="153420" v="0.036::0.054::0.074::0.096::0.119::0.137::0.152::0.165::0.178::0.19::0.204::0.216::0.228::0.237::0.249::0.256::0.256::0.256::0.256::0.256::0.256::0.257::0::0.012::0.018::0.02::0.021::0.025::0.032::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0.037::0::0::0::0::0::0::0::0"/>
+ <val o="17d720" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1a9640" v="0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1c7460" v="9208::9490::12579::16633::20164::23882::28334::33713::39220::44909::0::6542::13180::19855::26594::33432::40280::46777::52524::57875::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::59205::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="1f1760" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="21ba60" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="246b70" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="270e70" v="0::0::0::0::0::0::0::0::0"/>
+ </par>
+ <par memind="1314601" h="3dc1a7e0">
+ <val o="0" v="270370"/>
+ </par>
+ <par memind="1313801" h="3dc1a7e0">
+ <val o="0" v="306693"/>
+ </par>
+ <par memind="1313401" h="3dc1a7e0">
+ <val o="0" v="1576111"/>
+ </par>
+ <par memind="1313001" h="3dc1a7e0">
+ <val o="0" v="127098"/>
+ </par>
+ <par memind="52514601" h="3dc1a7e0">
+ <val o="0" v="0::1305::2869::4482::6066::7396::8573::10262::11922::13773::15492::17522::19544::21452::22070::22075::22080::22084::22085::22090::22097::22103::22109::22116::22123::22129::22136::22143::22150::22156::22158::22166::22173::22180::22186::22193::22200::22207::22214::22221::22228::22235::22235::22236::22241::22244::22247::22254"/>
+ <val o="2a300" v="22261::22267::22267::22269::22273::22274::22274::22280::22287::22294::22301::22308::22315::22322::22329::22333::22335::22335::22335::22336::22338::22339::22339::22344::22351::22358::22365::22372::22379::22386::22391::22395::22402::::22404::22404::22404::22404::22404::22404::22404::22404::22404::22404::22407::22413::22416::22422::22429"/>
+ <val o="55410" v="22436::22443::22450::22457::22464::22468::22475::22477::22477::22478::22483::22489::22495::22497::22497::22498::22499::22499::22500::22507::22513::22520::22526::22533::22538::22545::22552::22559::22564::22564::22569::22571::22572::22572::22572::22573::22579::22580::22580::22580::22580::22580::22580::22583::22585::22590::22596::22603"/>
+ <val o="7f710" v="22610::22617::22624::22632::22639::22645::22650::22653::22653::22653::22655::22662::22669::22672::22675::22677::22678::22678::22678::22678::22682::22683::22686::22693::22701::22708::22715::22722::22728::22732::22738::22740::22740::22744::22751::22758::22765::22770::22775::23529::24370::24733::24734::25551::25853::26301::27126::28742"/>
+ <val o="a9a10" v="29372::29540::30199::31125::31218::31219::31564::31564::31564::::31564::31564::31599::31607::31607::31792::31965::32010::32274::33047::33890::33890::34193::35316::35417::35418::35569::35909::35921::35921::35921::35921::35928::35928::35928::35928::35928::35928::35928::35995::36083::36083::36083::36083::36083::36083::36226::37450::38609"/>
+ <val o="d4b20" v="39740::40151::40527::40527::40836::41356::41356::41356::41356::41356::41356::41356::41356::41356::41356::41363::41476::42051::42690::42946::43231::43524::43865::44488::44488::44488::44488::44488::44582::44685::44685::44685::44685::44685::44685::44736::44736::44736::44736::44736::44736::44736::44736::44736::44736::44890::46089::47216"/>
+ <val o="fee20" v="48043::48262::48466::48466::48466::48466::48466::48466::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48471::48474::48491::48491::48816::48980::48980::48980::48980::48980::48980::48980::48980::49022::49147::49569::50218::50251::50251::50251::50252.91::50252.91::50252.91::50252.91::50252.91::50252.954::50253.185::50253.192::50253.487::50254.667"/>
+ <val o="129120" v="50255.973::50257.356::50258.765::50259.296::50259.299::50259.299::50259.299::50259.332::50259.455::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.456::50259.457::50259.458::50259.458::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.467::50259.469::50259.482::50259.5::50259.507::50259.513::50259.516::50259.517::50259.517::50259.517::50259.517::50259.517::50259.517::50259.521::50259.535::50259.54"/>
+ <val o="153420" v="50259.54::50259.54::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.541::50259.546::50259.546::50259.546::50259.546::50259.547::50259.547::50259.552::50259.557::50259.561::50259.577::50259.588::50259.6::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.601::50259.604::50259.608::50259.609::50259.612::50259.612::50259.612::50258::50258::50258::50258::50434::52137::54431::56734"/>
+ <val o="17d720" v="59447::62321::65257::67217::67860::69000::70713::72302::73189::74106::76746::79750::82449::85043::87003::::87510::88002::89297::90556::92102::94340::95470::96449::98011::99707::101463::102244::102289::102386::103115::103983::104091::::104826::105806::106330::106662::106859::106859::108290::111019::114483::116549::118083::121154::124524::127207::130282::133619"/>
+ <val o="1a9640" v="136963::139335::140951::142698::144988::147377::149483::151438::153726::156315"/>
+ <val o="1c7460" v="174829::174896::174996::174996::175627::176628::177201::177201::177201::177439::178849::179238::179626::180505::181224::181241::181241::181279::182183::182528::182619::182701::183144::183780::184697::185475::186702::188342::190179::192226::194470::196796::199020::201319::203571::205550::207751::208389::208873::209184::209373::209646::210358::210744::211061::211240::211439::211756"/>
+ <val o="1f1760" v="211843::211843::211843::211843::211843::211852::211998::212339::212833::214951::217077::218045::219309::220302::220662::220786::220819::221269::221451::221458::221458::221458::221458::221458::221458::221547::221895::222189::222611::223471::223818::224472::224473::225066::226054::227533::228461::228962::229396::229401::229401::229577::230576::230758::231159::231454::232566::232566"/>
+ <val o="21ba60" v="232566::232566::233609::234101::234101::234139::234836::235492::235492::236089::237208::237467::237467::237467::237467::237467::237511::237749::238306::238331::238331::238331::238331::238606::238637::239260::239846::239846::239846::239846::239847::239988::239988::239988::240200::240411::240916::241193::241194::241194::241194::241260::241262::241262::241262::241262::241325::241842"/>
+ <val o="246b70" v="243482::244154::244164::244164::244164::244499::245788::247200::248157::248866::249358::250436::251549::252452::252482::252484::252526::252526::252526::252526::252840::255634::257511::257584::257585::257585::257585::257585::257585::257585::257766::257766::258073::258628::259130::260454::262350::264387::265865::266787::266854::266854::266854::266854::266854::266854::266854::266854"/>
+ <val o="270e70" v="266854::266868::267132::267609::268095::268936::269294::269294::269367"/>
+ </par>
+ <par memind="52513801" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::680::1753::2436::2439::2471::2472::2472::2472"/>
+ <val o="a9a10" v="2745::2776::2776::2776::2864::3939::4434::5207::6983::::14587::18809::20724::20924::21523::23196::23587::24084::24088::24088::24119::24933::24978::24978::26406::26764::26799::26799::27079::28094::29584::30678::31242::32211::33301::34181::34685::35088::35546::36806::37336::39798::42396::45166::47608::49447::50139::50139::50155"/>
+ <val o="d4b20" v="50155::50156::50158::50901::52457::52486::53171::55151::57821::60860::63632::64220::64682::64929::65169::65692::66324::66324::66469::66492::66535::66565::66565::67820::69087::69869::70780::72755::75107::75449::76279::77473::79013::80171::80973::81494::83421::84889::86582::88872::90518::92077::93266::94424::96079::96579::96579::96579"/>
+ <val o="fee20" v="96594::96594::96596::97428::99092::100694::102136::103651::104547::106004::107392::108302::109410::110530::111613::113676::116005::117251::117711::118409::119188::120024::120093::121118::121602::121880::122079::123044::124994::126683::128148::128945::129025::129025::129025::129597::130475::131295::131764.303::131765.588::131766.375::131768.11::131769.198::131769.49::131769.761::131770.219::131770.236::131770.236"/>
+ <val o="129120" v="131770.236::131770.236::131770.236::131770.236::131770.868::131771.806::131773.023::131774.625::131775.589::131776.912::131778.062::131778.709::131779.295::131779.306::131779.319::131779.349::131779.386::131779.423::131779.458::131779.49::131779.499::131779.503::131779.509::131779.564::131779.587::131779.604::131779.623::131779.659::131779.709::131779.738::131779.744::131779.752::131779.755::131779.755::131779.755::131779.755::131779.755::131779.755::131779.756::131779.786::131779.819::131779.858::131779.893::131779.918::131779.926::131779.926::131779.926::131779.949"/>
+ <val o="153420" v="131779.958::131779.959::131779.96::131779.972::131780.003::131780.027::131780.049::131780.089::131780.125::131780.155::131780.179::131780.184::131780.191::131780.202::131780.222::131780.243::131780.251::131780.258::131780.261::131780.277::131780.285::131780.285::131780.288::131780.288::131780.288::131780.288::131780.288::131780.289::131780.303::131780.34::131780.35::131780.356::131780.368::131780.381::131780.384::131780.384::131780.386::131780.398::131780.415::131780.451::133205::135343::136866::137861::138272::138272::138272::138272"/>
+ <val o="17d720" v="138272::138272::138272::138272::138275::138277::138290::138290::138290::138290::138355::138355::138355::138355::138355::::141088::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141493::141997::143618::143618::143629::143681::::143714::143714::143714::143714::143725::144351::144362::144362::144362::144362::144362::144362::144362::144362::144362::144362"/>
+ <val o="1a9640" v="144362::144362::144362::144362::144368::144368::144368::144368::144368::144368"/>
+ <val o="1c7460" v="162707::162786::163107::165035::165062::165062::166481::168956::171072::171391::171391::171634::171634::171634::171634::171865::173006::174175::174175::174177::174435::174438::174438::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174439::174540::174540::174540::174594::174594::174594::174594::174594::174598::174598::174598"/>
+ <val o="1f1760" v="174742::175129::175706::177731::179803::180405::180405::180646::180704::180704::180704::180771::180782::180782::180782::180801::180983::181961::182873::184086::186332::188396::189848::190504::192114::193897::194474::195204::195206::195230::195232::195397::196041::196046::196046::196046::196175::196175::196175::196678::198007::198881::198895::199043::199494::199494::199494::200058"/>
+ <val o="21ba60" v="201353::202851::203237::203353::203825::204167::204167::204286::205778::205833::205833::209036::210970::211426::212138::214410::218156::218395::218395::219795::222368::225963::228676::228698::228941::229082::229082::230822::232237::233425::233910::235098::237273::238160::238259::238431::238431::238460::238604::239735::240685::241648::242406::244137::247471::250551::253404::253404"/>
+ <val o="246b70" v="253404::253404::255527::260124::261492::261606::261606::261606::261606::261606::261692::261692::261692::261692::261794::262315::262939::264118::265921::269200::272041::272041::272049::272229::272417::272900::273909::276466::279084::281173::281349::282642::282841::283185::283198::283198::283198::283198::283198::283198::283402::284114::285244::286886::288884::291968::294884::297849"/>
+ <val o="270e70" v="300954::301733::302341::302341::302341::302341::303915::306201::306693"/>
+ </par>
+ <par memind="52513401" h="3dc1a7e0">
+ <val o="0" v="0::4177::8348::12421::16466::20389::24550::29638::35390::42329::49608::56982::64119::70819::72824::72831::72838::72845::72851::72859::72866::72873::72881::72889::72898::72906::72914::72922::72931::72938::72946::72955::72963::72972::72979::72987::72995::73004::73012::73021::73029::73037::73045::73052::73060::73067::73074::73083"/>
+ <val o="2a300" v="73092::73100::73108::73116::73124::73131::73139::73147::73155::73164::73172::73180::73189::73197::73205::73213::73221::73228::73235::73242::73250::73258::73265::73273::73281::73290::73298::73307::73316::73324::73333::73341::73349::::73362::73368::73374::73381::73387::73394::73400::73407::73414::73421::73428::73436::73443::73451::73459"/>
+ <val o="55410" v="73467::73476::73484::73492::73501::73508::73516::73523::73529::73536::73543::73550::73557::73564::73571::73578::73585::73592::73599::73607::73614::73622::73630::73639::73647::73655::73663::73672::73680::73687::73694::73702::73709::73715::73721::73728::73735::73742::73748::73755::73762::73769::73776::73783::73791::73798::73806::73814"/>
+ <val o="7f710" v="73823::73831::73840::73849::73858::73866::73874::73881::73888::73895::73902::73909::73917::73924::73931::73938::73945::73952::73959::73966::73973::73980::73988::73996::74005::74014::74022::74031::74039::74047::74055::74062::74069::74076::74084::74091::74098::74105::74112::76593::81912::84293::84438::84438::84438::84439::84440::84440"/>
+ <val o="a9a10" v="84442::84445::84450::84450::84450::84450::84510::84622::84677::::84768::84902::85161::85834::86656::87500::89034::90783::92482::94386::96003::96756::97608::98520::98568::98568::98568::98568::98568::98568::98569::98569::98570::98581::98609::98649::98656::98657::98664::98704::99059::99291::99522::99679::99730::99752::99786::99882::99882"/>
+ <val o="d4b20" v="99882::99882::99882::99882::99940::100346::101096::102749::105078::107527::110072::112991::115786::118656::121441::124228::128154::132149::135895::139243::142235::144665::146550::147766::148430::149132::149783::150281::151178::153396::155977::159764::164011::168363::172959::177429::181897::186612::191328::195697::200054::204127::207981::211520::214581::217705::220682::223224"/>
+ <val o="fee20" v="225440::227431::229389::231128::232979::235501::238705::242877::245395::249894::254484::258685::262884::267059::271365::275747::280072::284371::288656::292567::296062::298958::301678::303643::305464::307268::309087::310721::312414::314823::317933::322153::326889::331577::336668::340944::345227::349338::151978.697::151982.614::151986.61::151990.207::151993.665::151996.943::151999.897::152002.158::152004.207::152006.194"/>
+ <val o="129120" v="152007.954::152009.635::152011.324::152012.857::152014.433::152016.586::152019.181::152022.365::152025.728::152028.288::152030.998::152034.081::152036.247::152036.284::152036.302::152036.319::152036.341::152036.359::152036.372::152036.383::152036.39::152036.393::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.398::152036.399::152036.404::152036.407::152036.412::152036.414::152036.414::152036.414::152036.414::152036.417::152036.422::152036.425::152036.428::152036.432::152036.435::152036.437::152036.437::152036.437"/>
+ <val o="153420" v="152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.437::152036.441::152036.45::152036.46::152036.472::152036.476::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.478::152036.489::152036.543::152036.663::152036.778::152036.883::152036.971::152037.066::152037.164::152037.257::152037.361::356685::363405::370420::377575::384134::390225::396064::401696"/>
+ <val o="17d720" v="407198::412644::417883::422998::428513::435075::442229::453395::466601::479658::492177::504000::515901::527901::539997::::556036::563903::571823::579005::585326::591325::596354::600715::604992::609199::613381::617646::622539::627868::633983::640502::646650::::659328::665498::671845::678227::684766::688990::691619::694492::697849::700694::702620::704442::705572::706691::707697::708736"/>
+ <val o="1a9640" v="709545::709997::710690::712243::714255::716847::719609::722373::725158::727261"/>
+ <val o="1c7460" v="770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::770988::773086::776647::780296::783826::787426::791061::795844::802109::808801::815624::822498::829213::835508::841449::846886::851798::856665::859354::861263::863083::864985::867245::869803::872460::875221::877937::880561::883156"/>
+ <val o="1f1760" v="885657::888085::890505::893110::896194::899581::903116::906473::909677::913034::916082::918646::921093::923460::925630::927744::930053::932806::935904::939753::944540::950163::955884::961233::966673::972533::978758::985168::991668::997713::1003091::1008274::1012749::1017038::1020937::1024624::1027919::1031047::1034087::1036976::1040106::1044102::1049201::1055177::1061411::1067528::1073759::1079806"/>
+ <val o="21ba60" v="1085748::1091566::1097964::1104098::1109965::1115611::1121093::1126321::1130630::1134497::1137973::1139970::1141849::1143923::1145918::1147647::1149557::1153171::1157329::1161934::1166664::1171204::1175957::1180721::1185446::1190632::1196204::1201743::1207328::1212608::1217847::1222674::1226942::1231066::1234878::1238151::1241398::1244525::1247544::1250408::1253663::1257645::1262239::1267905::1274075::1280512::1287109::1293566"/>
+ <val o="246b70" v="1306501::1312775::1318539::1323798::1329387::1335105::1340883::1346396::1351376::1355594::1359099::1362742::1366355::1369936::1373418::1377156::1381440::1385976::1391416::1397124::1403622::1412905::1420494::1426519::1432791::1438731::1444700::1450495::1455916::1461293::1466648::1471323::1475904::1479903::1483514::1487030::1490682::1494324::1497918::1501615::1505468::1509358::1513503::1517850::1522004::1525957::1529728::1533403"/>
+ <val o="270e70" v="1537003::1541289::1546124::1551256::1556286::1561272::1565731::1569581::1572940"/>
+ </par>
+ <par memind="52513001" h="3dc1a7e0">
+ <val o="0" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="2a300" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="55410" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0"/>
+ <val o="7f710" v="0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::0::10::521::1009::1914::2329::2804::3476"/>
+ <val o="a9a10" v="4546::4682::4719::4838::5350::6165::6365::6445::6490::::6571::6643::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::6704::7208::7679::8124::8480::9010::9501::9918::10708::10960::11079::11200::11255::11459::11656::11793::12159::12159::12159::12159::12160::12179::12215::12287::12302::12884"/>
+ <val o="d4b20" v="13533::14230::15062::16204::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="fee20" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492"/>
+ <val o="129120" v="17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.492::17157.493::17157.511::17157.525::17157.542::17157.558::17157.579::17157.599::17157.608::17157.611::17157.612::17157.612::17157.612::17157.612::17157.613::17157.616::17157.618::17157.623::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.631::17157.632::17157.649"/>
+ <val o="153420" v="17157.669::17157.686::17157.706::17157.728::17157.752::17157.771::17157.786::17157.799::17157.812::17157.824::17157.838::17157.85::17157.861::17157.871::17157.883::17157.89::17157.89::17157.89::17157.89::17157.89::17157.89::17157.891::17157.899::17157.911::17157.918::17157.92::17157.921::17157.925::17157.932::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17157.937::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="17d720" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="1a9640" v="17156::17156::17156::17156::17156::17156::17156::17156::17156::17156"/>
+ <val o="1c7460" v="26366::26648::29737::33790::37320::41038::45491::50870::56378::62066::67892::74435::81073::87748::94487::101325::108173::114671::120417::125768::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="1f1760" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="21ba60" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="246b70" v="127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ <val o="270e70" v="127098::127098::127098::127098::127098::127098::127098::127098::127098"/>
+ </par>
+ <par memind="34601" h="3dc1a7e0">
+ <val o="0" v="6094564::6095869::6097433::6099046::6100630::6101960::6103137::6104826::6106487::6108338::6110057::6112087::6114108::6116017::6116635::6116640::6116645::6116648::6116649::6116654::6116661::6116667::6116674::6116681::6116688::6116694::6116701::6116708::6116715::6116721::6116723::6116730::6116738::6116745::6116751::6116757::6116764::6116771::6116779::6116786::6116793::6116799::6116800::6116800::6116805::6116808::6116812::6116819"/>
+ <val o="2a300" v="6116826::6116832::6116832::6116834::6116838::6116839::6116839::6116845::6116852::6116859::6116866::6116873::6116880::6116887::6116893::6116898::6116899::6116899::6116899::6116901::6116902::6116904::6116905::6116910::6116917::6116924::6116931::6116938::6116945::6116952::6116957::6116961::6116968::::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116970::6116972::6116978::6116980::6116987::6116994"/>
+ <val o="55410" v="6117001::6117008::6117015::6117022::6117029::6117033::6117039::6117042::6117042::6117044::6117049::6117054::6117061::6117062::6117062::6117063::6117065::6117065::6117066::6117072::6117078::6117084::6117091::6117098::6117103::6117110::6117117::6117124::6117129::6117129::6117134::6117136::6117137::6117137::6117137::6117138::6117144::6117145::6117145::6117145::6117145::6117145::6117145::6117148::6117150::6117154::6117160::6117167"/>
+ <val o="7f710" v="6117174::6117181::6117189::6117196::6117203::6117210::6117216::6117219::6117220::6117220::6117222::6117228::6117235::6117239::6117241::6117244::6117244::6117244::6117244::6117244::6117247::6117248::6117252::6117259::6117266::6117273::6117280::6117287::6117293::6117297::6117303::6117304::6117305::6117309::6117316::6117323::6117330::6117336::6117340::6118095::6118936::6119299::6119300::6120117::6120419::6120867::6121692::6123308"/>
+ <val o="a9a10" v="6123938::6124106::6124765::6125691::6125784::6125785::6126129::6126129::6126129::::6126129::6126129::6126164::6126173::6126173::6126358::6126531::6126576::6126840::6127612::6128455::6128455::6128757::6129880::6129981::6129983::6130133::6130473::6130485::6130485::6130485::6130485::6130493::6130493::6130493::6130493::6130493::6130493::6130493::6130561::6130649::6130649::6130649::6130649::6130649::6130649::6130792::6132016::6133175"/>
+ <val o="d4b20" v="6134306::6134717::6135093::6135093::6135402::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135922::6135929::6136041::6136617::6137256::6137512::6137797::6138089::6138431::6139053::6139053::6139053::6139053::6139053::6139147::6139251::6139251::6139251::6139251::6139251::6139251::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139302::6139456::6140655::6141782"/>
+ <val o="fee20" v="6142609::6142828::6143032::6143032::6143032::6143032::6143032::6143032::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143036::6143039::6143056::6143056::6143382::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143545::6143587::6143713::6144135::6144783::6144816::6144816::6144816::144818.2::144818.2::144818.2::144818.2::144818.2::144818.243::144818.474::144818.48::144818.775::144819.955"/>
+ <val o="129120" v="144821.261::144822.644::144824.053::144824.584::144824.587::144824.587::144824.587::144824.62::144824.744::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.746::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.755::144824.756::144824.756::144824.756::144824.756::144824.757::144824.77::144824.788::144824.796::144824.802::144824.805::144824.806::144824.806::144824.806::144824.806::144824.806::144824.806::144824.809::144824.823::144824.828"/>
+ <val o="153420" v="144824.828::144824.828::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.829::144824.834::144824.834::144824.834::144824.834::144824.835::144824.835::144824.84::144824.845::144824.849::144824.865::144824.876::144824.888::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.889::144824.892::144824.896::144824.897::144824.9::144824.9::144824.9::6144824::6144824::6144824::6144824::6145000::6146702::6148995::6151298"/>
+ <val o="17d720" v="6154011::6156885::6159821::6161781::6162424::6163565::6165278::6166868::6167755::6168671::6171312::6174315::6177014::6179609::6181568::::6182076::6182567::6183863::6185122::6186668::6188906::6190037::6191016::6192577::6194274::6196029::6196810::6196855::6196952::6197681::6198548::6198657::::6199392::6200372::6200895::6201228::6201425::6201425::6202856::6205585::6209048::6211115::6212648::6215720::6219090::6221773::6224848::6228185"/>
+ <val o="1a9640" v="6231530::6233901::6235517::6237264::6239554::6241943::6244049::6246003::6248291::6250880"/>
+ <val o="1c7460" v="6269393::6269460::6269561::6269561::6270193::6271193::6271766::6271766::6271766::6272003::6273414::6273802::6274190::6275070::6275788::6275805::6275805::6275844::6276747::6277093::6277184::6277267::6277710::6278346::6279262::6280041::6281268::6282908::6284744::6286792::6289036::6291362::6293586::6295884::6298136::6300115::6302316::6302954::6303439::6303749::6303938::6304212::6304924::6305309::6305626::6305804::6306004::6306321"/>
+ <val o="1f1760" v="6306407::6306407::6306407::6306407::6306407::6306417::6306562::6306904::6307399::6309517::6311643::6312611::6313875::6314868::6315228::6315352::6315385::6315835::6316016::6316023::6316023::6316023::6316023::6316023::6316023::6316113::6316460::6316755::6317177::6318036::6318383::6319038::6319038::6319632::6320620::6322099::6323027::6323528::6323962::6323967::6323967::6324143::6325141::6325322::6325724::6326020::6327132::6327132"/>
+ <val o="21ba60" v="6327132::6327132::6328174::6328667::6328667::6328705::6329402::6330058::6330058::6330655::6331774::6332033::6332033::6332033::6332033::6332033::6332078::6332316::6332872::6332897::6332897::6332897::6332897::6333173::6333204::6333827::6334413::6334413::6334413::6334413::6334413::6334554::6334554::6334554::6334765::6334977::6335481::6335759::6335759::6335759::6335759::6335824::6335826::6335826::6335826::6335826::6335889::6336407"/>
+ <val o="246b70" v="6338047::6338719::6338729::6338729::6338729::6339065::6340354::6341766::6342723::6343432::6343924::6345002::6346115::6347018::6347048::6347050::6347091::6347091::6347091::6347091::6347406::6350200::6352077::6352150::6352150::6352150::6352150::6352150::6352150::6352150::6352331::6352331::6352638::6353193::6353695::6355019::6356915::6358952::6360430::6361352::6361420::6361420::6361420::6361420::6361420::6361420::6361420::6361420"/>
+ <val o="270e70" v="6361420::6361434::6361698::6362174::6362660::6363502::6363860::6363860::6363933"/>
+ </par>
+ <par memind="33801" h="3dc1a7e0">
+ <val o="0" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="2a300" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="55410" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422"/>
+ <val o="7f710" v="88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88179422::88180102::88181176::88181859::88181861::88181894::88181896::88181896::88181896"/>
+ <val o="a9a10" v="88182169::88182200::88182200::88182200::88182288::88183363::88183857::88184631::88186407::::88194010::88198233::88200148::88200348::88200947::88202620::88203011::88203507::88203512::88203512::88203543::88204356::88204401::88204401::88205830::88206188::88206222::88206222::88206502::88207517::88209008::88210102::88210666::88211635::88212724::88213604::88214108::88214512::88214969::88216229::88216759::88219221::88221818::88224589::88227031::88228870::88229563::88229563::88229580"/>
+ <val o="d4b20" v="88229580::88229580::88229582::88230325::88231881::88231910::88232595::88234574::88237245::88240283::88243056::88243643::88244105::88244352::88244593::88245115::88245746::88245746::88245891::88245915::88245959::88245988::88245989::88247244::88248510::88249293::88250203::88252178::88254531::88254874::88255704::88256898::88258438::88259595::88260398::88260919::88262845::88264314::88266006::88268297::88269942::88271502::88272690::88273849::88275503::88276003::88276003::88276003"/>
+ <val o="fee20" v="88276017::88276017::88276019::88276851::88278515::88280118::88281560::88283074::88283971::88285428::88286815::88287726::88288833::88289953::88291037::88293099::88295427::88296674::88297133::88297832::88298612::88299447::88299517::88300541::88301025::88301304::88301503::88302468::88304417::88306106::88307571::88308368::88308448::88308448::88308448::88309021::88309899::88310719::111188.016::111189.3::111190.088::111191.823::111192.91::111193.202::111193.473::111193.931::111193.948::111193.948"/>
+ <val o="129120" v="111193.948::111193.948::111193.948::111193.948::111194.58::111195.519::111196.735::111198.338::111199.302::111200.625::111201.775::111202.422::111203.008::111203.02::111203.032::111203.062::111203.098::111203.135::111203.171::111203.203::111203.212::111203.216::111203.221::111203.276::111203.299::111203.316::111203.335::111203.371::111203.422::111203.452::111203.457::111203.464::111203.468::111203.468::111203.468::111203.468::111203.468::111203.468::111203.469::111203.5::111203.532::111203.571::111203.606::111203.632::111203.639::111203.639::111203.639::111203.661"/>
+ <val o="153420" v="111203.671::111203.671::111203.672::111203.684::111203.715::111203.739::111203.761::111203.801::111203.837::111203.867::111203.891::111203.897::111203.904::111203.915::111203.935::111203.955::111203.962::111203.969::111203.972::111203.988::111203.997::111203.997::111204::111204.001::111204.001::111204.001::111204.001::111204.001::111204.016::111204.052::111204.063::111204.07::111204.081::111204.093::111204.097::111204.097::111204.099::111204.11::111204.128::111204.164::88312628::88314767::88316290::88317284::88317694::88317694::88317694::88317694"/>
+ <val o="17d720" v="88317694::88317694::88317694::88317694::88317698::88317700::88317713::88317713::88317713::88317713::88317778::88317778::88317778::88317778::88317778::::88320511::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88320917::88321420::88323042::88323042::88323053::88323105::::88323137::88323137::88323137::88323137::88323148::88323775::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785::88323785"/>
+ <val o="1a9640" v="88323785::88323785::88323785::88323785::88323790::88323790::88323790::88323790::88323790::88323790"/>
+ <val o="1c7460" v="88342130::88342209::88342529::88344458::88344485::88344485::88345905::88348379::88350494::88350813::88350813::88351056::88351056::88351056::88351056::88351287::88352428::88353598::88353598::88353601::88353859::88353862::88353862::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353863::88353965::88353965::88353965::88354018::88354018::88354018::88354018::88354018::88354021::88354021::88354021"/>
+ <val o="1f1760" v="88354166::88354552::88355130::88357154::88359226::88359828::88359828::88360068::88360126::88360126::88360126::88360194::88360205::88360205::88360205::88360223::88360406::88361385::88362297::88363511::88365757::88367821::88369273::88369929::88371538::88373322::88373899::88374629::88374631::88374655::88374657::88374822::88375466::88375471::88375471::88375471::88375599::88375599::88375599::88376102::88377432::88378306::88378319::88378467::88378917::88378917::88378918::88379482"/>
+ <val o="21ba60" v="88380777::88382275::88382661::88382777::88383250::88383592::88383592::88383711::88385203::88385257::88385257::88388459::88390394::88390850::88391561::88393834::88397579::88397819::88397819::88399218::88401792::88405386::88408100::88408122::88408365::88408505::88408505::88410246::88411660::88412849::88413333::88414521::88416696::88417583::88417683::88417854::88417854::88417883::88418027::88419159::88420108::88421071::88421828::88423559::88426894::88429975::88432828::88432828"/>
+ <val o="246b70" v="88432828::88432828::88434951::88439548::88440916::88441030::88441030::88441030::88441030::88441030::88441116::88441116::88441116::88441116::88441218::88441739::88442363::88443542::88445344::88448624::88451464::88451464::88451473::88451652::88451840::88452323::88453332::88455889::88458507::88460595::88460772::88462065::88462264::88462608::88462622::88462622::88462622::88462622::88462622::88462622::88462826::88463538::88464667::88466310::88468309::88471393::88474308::88477274"/>
+ <val o="270e70" v="88480378::88481157::88481766::88481766::88481766::88481766::88483340::88485626::88486118"/>
+ </par>
+ <par memind="33401" h="3dc1a7e0">
+ <val o="0" v="9437795::9441972::9446144::9450217::9454261::9458184::9462346::9467434::9473186::9480126::9487404::9494779::9501916::9508615::9510621::9510628::9510635::9510642::9510649::9510656::9510663::9510671::9510678::9510687::9510695::9510703::9510712::9510720::9510728::9510736::9510743::9510751::9510760::9510768::9510776::9510784::9510792::9510800::9510809::9510817::9510826::9510833::9510840::9510847::9510855::9510863::9510871::9510879"/>
+ <val o="2a300" v="9510888::9510896::9510904::9510912::9510920::9510928::9510935::9510944::9510952::9510960::9510968::9510976::9510984::9510993::9511001::9511009::9511016::9511023::9511030::9511038::9511045::9511053::9511061::9511069::9511078::9511086::9511095::9511103::9511112::9511121::9511129::9511137::9511144::::9511158::9511165::9511171::9511178::9511184::9511190::9511197::9511203::9511209::9511216::9511223::9511231::9511239::9511247::9511255"/>
+ <val o="55410" v="9511264::9511272::9511280::9511289::9511297::9511305::9511313::9511320::9511327::9511333::9511340::9511347::9511354::9511361::9511368::9511375::9511382::9511389::9511397::9511404::9511412::9511419::9511427::9511435::9511443::9511451::9511460::9511468::9511476::9511484::9511492::9511500::9511506::9511513::9511519::9511526::9511533::9511539::9511546::9511553::9511559::9511565::9511572::9511580::9511587::9511595::9511603::9511611"/>
+ <val o="7f710" v="9511619::9511628::9511637::9511646::9511654::9511662::9511670::9511677::9511684::9511691::9511698::9511705::9511713::9511720::9511727::9511734::9511740::9511747::9511754::9511761::9511769::9511777::9511785::9511794::9511803::9511811::9511820::9511828::9511836::9511844::9511852::9511859::9511866::9511873::9511880::9511888::9511895::9511902::9511909::9514390::9519709::9522089::9522234::9522234::9522234::9522235::9522235::9522235"/>
+ <val o="a9a10" v="9522237::9522240::9522245::9522245::9522245::9522245::9522305::9522417::9522472::::9522564::9522698::9522957::9523630::9524451::9525296::9526830::9528579::9530279::9532182::9533799::9534552::9535404::9536317::9536364::9536364::9536364::9536364::9536364::9536364::9536365::9536365::9536366::9536378::9536405::9536445::9536452::9536454::9536460::9536501::9536855::9537087::9537318::9537474::9537525::9537548::9537581::9537677::9537678"/>
+ <val o="d4b20" v="9537678::9537678::9537678::9537678::9537736::9538143::9538893::9540546::9542875::9545324::9547869::9550788::9553582::9556453::9559237::9562025::9565951::9569947::9573692::9577040::9580032::9582462::9584347::9585562::9586226::9586928::9587579::9588077::9588974::9591192::9593773::9597560::9601808::9606160::9610756::9615226::9619694::9624409::9629124::9633493::9637849::9641922::9645776::9649316::9652378::9655502::9658479::9661021"/>
+ <val o="fee20" v="9663237::9665228::9667187::9668925::9670776::9673297::9676502::9680673::9683191::9687690::9692279::9696481::9700679::9704855::9709161::9713542::9717867::9722167::9726451::9730363::9733859::9736754::9739475::9741440::9743260::9745064::9746883::9748517::9750210::9752619::9755730::9759949::9764686::9769374::9774465::9778741::9783023::9787135::89775.123::89779.04::89783.036::89786.633::89790.091::89793.369::89796.324::89798.585::89800.635::89802.621"/>
+ <val o="129120" v="89804.381::89806.063::89807.752::89809.284::89810.86::89813.012::89815.607::89818.79::89822.154::89824.714::89827.425::89830.508::89832.673::89832.71::89832.728::89832.745::89832.767::89832.785::89832.798::89832.809::89832.817::89832.82::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.825::89832.826::89832.831::89832.834::89832.838::89832.84::89832.84::89832.84::89832.84::89832.843::89832.848::89832.851::89832.854::89832.858::89832.861::89832.864::89832.864::89832.864"/>
+ <val o="153420" v="89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.864::89832.868::89832.877::89832.887::89832.899::89832.903::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.904::89832.916::89832.97::89833.09::89833.204::89833.309::89833.397::89833.492::89833.59::89833.683::89833.788::9794482::9801201::9808217::9815372::9821930::9828022::9833861::9839493"/>
+ <val o="17d720" v="9844996::9850441::9855681::9860795::9866311::9872873::9880027::9891193::9904398::9917454::9929974::9941796::9953698::9965698::9977794::::9993834::10001701::10009621::10016803::10023124::10029123::10034151::10038513::10042789::10046996::10051178::10055443::10060336::10065665::10071780::10078299::10084446::::10097123::10103293::10109641::10116023::10122562::10126785::10129414::10132288::10135645::10138489::10140416::10142238::10143368::10144487::10145494::10146532"/>
+ <val o="1a9640" v="10147341::10147793::10148486::10150039::10152051::10154643::10157406::10160170::10162955::10165058"/>
+ <val o="1c7460" v="10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10208784::10210882::10214444::10218093::10221623::10225223::10228858::10233641::10239906::10246598::10253420::10260295::10267010::10273305::10279245::10284682::10289594::10294461::10297150::10299060::10300879::10302781::10305041::10307600::10310256::10313017::10315732::10318357::10320952"/>
+ <val o="1f1760" v="10323453::10325881::10328301::10330906::10333991::10337378::10340913::10344270::10347474::10350831::10353880::10356443::10358890::10361257::10363427::10365542::10367850::10370602::10373700::10377548::10382335::10387959::10393679::10399028::10404469::10410328::10416554::10422964::10429464::10435510::10440887::10446070::10450544::10454833::10458732::10462419::10465714::10468842::10471882::10474772::10477901::10481897::10486997::10492973::10499207::10505324::10511555::10517602"/>
+ <val o="21ba60" v="10523544::10529362::10535760::10541894::10547762::10553407::10558890::10564118::10568426::10572294::10575771::10577767::10579647::10581720::10583716::10585444::10587354::10590968::10595126::10599731::10604460::10609000::10613753::10618516::10623241::10628428::10633999::10639539::10645125::10650405::10655643::10660471::10664738::10668862::10672675::10675947::10679195::10682322::10685340::10688204::10691460::10695443::10700037::10705702::10711873::10718309::10724907::10731364"/>
+ <val o="246b70" v="10744298::10750573::10756336::10761594::10767184::10772901::10778679::10784193::10789173::10793391::10796895::10800538::10804151::10807732::10811214::10814952::10819236::10823772::10829212::10834920::10841418::10850701::10858289::10864315::10870586::10876526::10882496::10888291::10893713::10899090::10904444::10909119::10913700::10917699::10921310::10924826::10928478::10932121::10935715::10939412::10943265::10947154::10951299::10955647::10959802::10963755::10967526::10971201"/>
+ <val o="270e70" v="10974801::10979086::10983922::10989053::10994083::10999069::11003529::11007379::11010738"/>
+ </par>
+ <par memind="33001" h="3dc1a7e0">
+ <val o="0" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="2a300" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="55410" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576"/>
+ <val o="7f710" v="38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612576::38612587::38613097::38613585::38614490::38614906::38615380::38616053"/>
+ <val o="a9a10" v="38617123::38617258::38617296::38617414::38617926::38618741::38618942::38619021::38619066::::38619147::38619219::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619281::38619786::38620257::38620702::38621058::38621587::38622078::38622494::38623284::38623536::38623655::38623776::38623831::38624035::38624232::38624369::38624735::38624735::38624735::38624735::38624737::38624755::38624791::38624863::38624879::38625460"/>
+ <val o="d4b20" v="38626110::38626807::38627639::38628781::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732"/>
+ <val o="fee20" v="38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::38629732::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398"/>
+ <val o="129120" v="229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.398::229734.399::229734.417::229734.431::229734.448::229734.465::229734.485::229734.505::229734.514::229734.517::229734.517::229734.517::229734.517::229734.517::229734.518::229734.521::229734.523::229734.528::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.536::229734.537::229734.554"/>
+ </par>
+ </device>
+ </select>
+ </data>
+</electroxml>
diff --git a/test/att5 b/test/att5
new file mode 100644
index 0000000..2c05105
--- /dev/null
+++ b/test/att5
@@ -0,0 +1,73 @@
+<!DOCTYPE doc [<!ATTLIST normId attr NMTOKENS #IMPLIED>]>
+<doc>
+ <!-- no normalization -->
+ <norm attr=' '/>
+ <norm attr='
+ foo bar '/>
+ <norm attr='
+
+foobar'/>
+ <norm attr=' foo bar
+'/>
+ <norm attr='foobar
+
+'/>
+ <norm attr=' &amp; '/>
+ <norm attr='
+ foo&amp;bar '/>
+ <norm attr='
+
+foobar&amp;'/>
+ <norm attr='&amp;foo bar
+'/>
+ <norm attr='foobar
+
+&amp;'/>
+ <norm attr=' &lt; '/>
+ <norm attr='
+ foo&lt;bar '/>
+ <norm attr='
+
+foobar&lt;'/>
+ <norm attr='&lt;foo bar
+'/>
+ <norm attr='foobar
+
+&lt;'/>
+ <norm attr=' &#x20;&#13;&#xa;&#9; '/>
+ <!-- normalization -->
+ <normId attr=' '/>
+ <normId attr='
+ foo bar '/>
+ <normId attr='
+
+foobar'/>
+ <normId attr=' foo bar
+'/>
+ <normId attr='foobar
+
+'/>
+ <normId attr=' &amp; '/>
+ <normId attr='
+ foo&amp;bar '/>
+ <normId attr='
+
+foobar&amp;'/>
+ <normId attr='&amp;foo bar
+'/>
+ <normId attr='foobar
+
+&amp;'/>
+ <normId attr=' &lt; '/>
+ <normId attr='
+ foo&lt;bar '/>
+ <normId attr='
+
+foobar&lt;'/>
+ <normId attr='&lt;foo bar
+'/>
+ <normId attr='foobar
+
+&lt;'/>
+ <normId attr=' &#13;&#xa;&#9; '/> <!-- PBM serializing back -->
+</doc>
diff --git a/test/att6 b/test/att6
new file mode 100644
index 0000000..79508e9
--- /dev/null
+++ b/test/att6
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Invoice xmlns:ccts="urn:oasis:names:tc:ubl:CoreComponentParameters:1.0:0.70" xmlns:cct="urn:oasis:names:tc:ubl:CoreComponentTypes:1.0:0.70" xmlns:cat="urn:oasis:names:tc:ubl:CommonAggregateTypes:1.0:0.70" xmlns="urn:oasis:names:tc:ubl:Invoice:1.0:0.70">
+ <cat:ReferencedOrder>
+ <cat:SellersOrderID schemeID="pvalue->ReferencedOrder.SellersOrderID.schemeID" schemeAgencyID="pvalue->ReferencedOrder.SellersOrderID.schemeAgencyID" schemeVersionID="pvalue->ReferencedOrder.SellersOrderID.schemeVersionID" schemeAgencySchemeID="pvalue->ReferencedOrder.SellersOrderID.schemeAgencySchemeID" schemeAgencySchemeAgencyID="pvalue->ReferencedOrder.SellersOrderID.schemeAgencySchemeAgencyID" schemeDataURI="pvalue->ReferencedOrder.SellersOrderID.schemeDataURI" schemeURI="pvalue->ReferencedOrder.SellersOrderID.schemeURI" UID="pvalue->ReferencedOrder.SellersOrderID.UID" UIDRef="pvalue->ReferencedOrder.SellersOrderID.UIDRef" UIDRefs="pvalue-&gt;ReferencedOrder.SellersOrderID.UIDRefs0" language="pvalue->ReferencedOrder.SellersOrderID.language">pvalue-&gt;ReferencedOrder.SellersOrderID</cat:SellersOrderID>
+ </cat:ReferencedOrder>
+</Invoice> \ No newline at end of file
diff --git a/test/att7 b/test/att7
new file mode 100644
index 0000000..cd31c3d
--- /dev/null
+++ b/test/att7
@@ -0,0 +1,10 @@
+<!DOCTYPE x [
+<!ELEMENT x (test*)>
+<!ELEMENT test EMPTY>
+<!ATTLIST test att CDATA "attvalue">
+<!ENTITY test.ent "<test/>">
+]>
+<x>
+ <test/>
+ &test.ent;
+</x>
diff --git a/test/att8 b/test/att8
new file mode 100644
index 0000000..2cb6f56
--- /dev/null
+++ b/test/att8
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><ino:response xmlns:ino="http://namespaces.softwareag.com/tamino/response2" xmlns:xql="http://metalab.unc.edu/xql/" ino:sessionid="556" ino:sessionkey="1590469677"><xql:query>/bsk:DocPart[@docId=&apos;20040308152601345236&apos; and @docPartNo=1]</xql:query><ino:message ino:returnvalue="0"><ino:messageline>XQL Request processing</ino:messageline></ino:message><xql:result><bsk:DocPart docId="20040308152601345236" docPartNo="1" ino:id="15290" xmlns:bsk="http://www.heitec.net/sara4/tamino/basket"><bsk:File name="4898WPZEO2M65" size="75195"> </bsk:File></bsk:DocPart></xql:result><ino:message ino:returnvalue="0"><ino:messageline>XQL Request processed</ino:messageline></ino:message></ino:response>
diff --git a/test/att9 b/test/att9
new file mode 100644
index 0000000..f06b531
--- /dev/null
+++ b/test/att9
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ATTLIST doc a1 NMTOKENS " 1 2 ">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc/>
diff --git a/test/attrib.xml b/test/attrib.xml
new file mode 100644
index 0000000..5be33fa
--- /dev/null
+++ b/test/attrib.xml
@@ -0,0 +1 @@
+<item title="Icrontic.com - Warning: Breakdancing midget with tourette&apos;s syndrome on-board&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;" url="http://www.icrontic.com/" first_time="985034339" last_time="985034339" visits="1"/>
diff --git a/test/automata/a b/test/automata/a
new file mode 100644
index 0000000..e1f3e91
--- /dev/null
+++ b/test/automata/a
@@ -0,0 +1,14 @@
+#
+# tests just "a"
+#
+t 0 1 a
+f 1
+-------
+a
+=>
+a
+a
+=>
+=>
+b
+=>
diff --git a/test/automata/aba b/test/automata/aba
new file mode 100644
index 0000000..ee9a873
--- /dev/null
+++ b/test/automata/aba
@@ -0,0 +1,26 @@
+#
+# Tests a[ab]*
+#
+t 0 1 a
+t 1 1 a
+t 1 1 b
+f 1
+-------
+a
+=>
+a
+a
+=>
+a
+b
+a
+b
+a
+b
+=>
+b
+=>
+a
+c
+=>
+=>
diff --git a/test/automata/abaa b/test/automata/abaa
new file mode 100644
index 0000000..7862ba2
--- /dev/null
+++ b/test/automata/abaa
@@ -0,0 +1,43 @@
+#
+# Tests: a[ab]*a{2,3}
+#
+t 0 1 a
+t 1 1 a
+t 1 1 b
+c 1 2 2 3 a
+f 2
+-------
+a
+a
+a
+=>
+# Pass
+a
+b
+a
+a
+=>
+# Pass
+a
+a
+a
+a
+a
+a
+a
+a
+a
+=>
+# Pass
+a
+b
+a
+=>
+# Fail
+a
+b
+a
+a
+b
+=>
+# Fail
diff --git a/test/automata/abba b/test/automata/abba
new file mode 100644
index 0000000..86c08f1
--- /dev/null
+++ b/test/automata/abba
@@ -0,0 +1,30 @@
+#
+# Tests ab*a with an eliminated epsilon transition
+#
+t 0 1 a
+t 1 2 b
+e 1 2
+t 2 2 b
+t 2 3 a
+f 3
+-------
+a
+a
+=>
+# Pass
+a
+b
+b
+a
+=>
+# Pass
+a
+b
+=>
+# Fail
+a
+b
+a
+b
+=>
+# Fail
diff --git a/test/automata/po b/test/automata/po
new file mode 100644
index 0000000..592b8c9
--- /dev/null
+++ b/test/automata/po
@@ -0,0 +1,19 @@
+#
+# purchaseOrder
+#
+t 0 1 shipTo
+t 1 2 billTo
+t 2 3 comment
+t 3 4 items
+e 2 3
+f 4
+-------
+shipTo
+billTo
+comment
+items
+=>
+shipTo
+billTo
+items
+=>
diff --git a/test/badcomment.xml b/test/badcomment.xml
new file mode 100644
index 0000000..147414c
--- /dev/null
+++ b/test/badcomment.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<foo>
+<!-- def='NT-Char'--><!-->Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>-->
+</foo>
diff --git a/test/bigentname.xml b/test/bigentname.xml
new file mode 100644
index 0000000..aa6e336
--- /dev/null
+++ b/test/bigentname.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name '"Yes"' >
+<!ENTITY WhatHeSaid "He said &very_big_entity_name01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_very_big_ent_name;" >
+]>
+<doc>&WhatHeSaid;</doc>
diff --git a/test/bigname.xml b/test/bigname.xml
new file mode 100644
index 0000000..6c303e4
--- /dev/null
+++ b/test/bigname.xml
@@ -0,0 +1 @@
+<this_is_a_very_large_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name/>
diff --git a/test/bigname2.xml b/test/bigname2.xml
new file mode 100644
index 0000000..c67cda9
--- /dev/null
+++ b/test/bigname2.xml
@@ -0,0 +1 @@
+<this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix:start_nc_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_the_very_large_name xmlns:this_is_a_very_large_qualified_name_01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789_end_of_prefix="http://www.example.com/testns/"/>
diff --git a/test/c14n/1-1-without-comments/doc.dtd b/test/c14n/1-1-without-comments/doc.dtd
new file mode 100755
index 0000000..c460239
--- /dev/null
+++ b/test/c14n/1-1-without-comments/doc.dtd
@@ -0,0 +1 @@
+<!-- Empty DTD --> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/example-1.xml b/test/c14n/1-1-without-comments/example-1.xml
new file mode 100755
index 0000000..ed450c7
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="doc.xsl"
+ type="text/xsl" ?>
+
+<!DOCTYPE doc SYSTEM "doc.dtd">
+
+<doc>Hello, world!<!-- Comment 1 --></doc>
+
+<?pi-without-data ?>
+
+<!-- Comment 2 -->
+
+<!-- Comment 3 -->
diff --git a/test/c14n/1-1-without-comments/example-2.xml b/test/c14n/1-1-without-comments/example-2.xml
new file mode 100755
index 0000000..74eeea1
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-2.xml
@@ -0,0 +1,11 @@
+<doc>
+ <clean> </clean>
+ <dirty> A B </dirty>
+ <mixed>
+ A
+ <clean> </clean>
+ B
+ <dirty> A B </dirty>
+ C
+ </mixed>
+</doc>
diff --git a/test/c14n/1-1-without-comments/example-3.xml b/test/c14n/1-1-without-comments/example-3.xml
new file mode 100755
index 0000000..a7a1950
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-3.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>
+<doc>
+ <e1 />
+ <e2 ></e2>
+ <e3 name = "elem3" id="elem3" />
+ <e4 name="elem4" id="elem4" ></e4>
+ <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"
+ xmlns:b="http://www.ietf.org"
+ xmlns:a="http://www.w3.org"
+ xmlns="http://www.uvic.ca"/>
+ <e6 xmlns="" xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org">
+ <e9 xmlns="" xmlns:a="http://www.ietf.org"/>
+ </e8>
+ </e7>
+ </e6>
+</doc>
diff --git a/test/c14n/1-1-without-comments/example-4.xml b/test/c14n/1-1-without-comments/example-4.xml
new file mode 100755
index 0000000..3fba138
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-4.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [<!ATTLIST normId id ID #IMPLIED>]>
+<doc>
+ <text>First line&#x0d;&#10;Second line</text>
+ <value>&#x32;</value>
+ <compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>
+ <compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>
+ <norm attr=' &apos; &#x20;&#13;&#xa;&#9; &apos; '/>
+ <normId id=' &apos; &#x20;&#13;&#xa;&#9; &apos; '/>
+</doc>
diff --git a/test/c14n/1-1-without-comments/example-5.xml b/test/c14n/1-1-without-comments/example-5.xml
new file mode 100755
index 0000000..92c5322
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-5.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc [
+<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>
+<!ENTITY ent1 "Hello">
+<!ENTITY ent2 SYSTEM "world.txt">
+<!ENTITY entExt SYSTEM "earth.gif" NDATA gif>
+<!NOTATION gif SYSTEM "viewgif.exe">
+]>
+<doc attrExtEnt="entExt">
+ &ent1;, &ent2;!
+</doc>
+
+<!-- Let world.txt contain "world" (excluding the quotes) -->
diff --git a/test/c14n/1-1-without-comments/example-6.xml b/test/c14n/1-1-without-comments/example-6.xml
new file mode 100755
index 0000000..31e2071
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-6.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<doc>&#169;</doc>
diff --git a/test/c14n/1-1-without-comments/example-7.xml b/test/c14n/1-1-without-comments/example-7.xml
new file mode 100755
index 0000000..41171cb
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-7.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc [
+<!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+<!ATTLIST e3 id ID #IMPLIED>
+]>
+<doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <e1>
+ <e2 xmlns="">
+ <e3 id="E3"/>
+ </e2>
+ </e1>
+</doc>
diff --git a/test/c14n/1-1-without-comments/example-7.xpath b/test/c14n/1-1-without-comments/example-7.xpath
new file mode 100755
index 0000000..84ddb08
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-7.xpath
@@ -0,0 +1,10 @@
+<XPath xmlns:ietf="http://www.ietf.org" >
+ (//.|//@*|//namespace::*)
+ [
+ self::ietf:e1
+ or
+ (parent::ietf:e1 and not(self::text() or self::e2))
+ or
+ count(id("E3")|ancestor-or-self::node()) = count(ancestor-or-self::node())
+ ]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/example-8.xml b/test/c14n/1-1-without-comments/example-8.xml
new file mode 100755
index 0000000..a07f6c7
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-8.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc [
+<!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+<!ATTLIST e3 id ID #IMPLIED>
+]>
+<doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="something/else">
+ <e1>
+ <e2 xmlns="" xml:id="abc" xml:base="bar/">
+ <e3 id="E3" xml:base="foo"/>
+ </e2>
+ </e1>
+</doc>
diff --git a/test/c14n/1-1-without-comments/example-8.xpath b/test/c14n/1-1-without-comments/example-8.xpath
new file mode 100755
index 0000000..84ddb08
--- /dev/null
+++ b/test/c14n/1-1-without-comments/example-8.xpath
@@ -0,0 +1,10 @@
+<XPath xmlns:ietf="http://www.ietf.org" >
+ (//.|//@*|//namespace::*)
+ [
+ self::ietf:e1
+ or
+ (parent::ietf:e1 and not(self::text() or self::e2))
+ or
+ count(id("E3")|ancestor-or-self::node()) = count(ancestor-or-self::node())
+ ]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/world.txt b/test/c14n/1-1-without-comments/world.txt
new file mode 100755
index 0000000..04fea06
--- /dev/null
+++ b/test/c14n/1-1-without-comments/world.txt
@@ -0,0 +1 @@
+world \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xml b/test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xml
new file mode 100644
index 0000000..18b7c75
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xml
@@ -0,0 +1,16 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-c14n11spec-102
+
+Check that correct xml:base fixup is performed.
+-->
+<!DOCTYPE doc [
+ <!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+ <!ATTLIST e3 id ID #IMPLIED>
+]>
+<doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://www.example.com/something/else">
+ <e1>
+ <e2 xmlns="" xml:id="abc" xml:base="../bar/">
+ <e3 id="E3" xml:base="foo"/>
+ </e2>
+ </e1>
+</doc> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xpath b/test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xpath
new file mode 100644
index 0000000..e919acc
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-c14n11spec-102.xpath
@@ -0,0 +1,9 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-c14n11spec-102
+
+Check that correct xml:base fixup is performed.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[self::ietf:e1 or (parent::ietf:e1 and not(self::text() or self::e2)) or count(id("E3")|ancestor-or-self::node()) = count(ancestor-or-self::node())]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xml b/test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xml
new file mode 100644
index 0000000..d271afd
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xml
@@ -0,0 +1,16 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-c14n11spec2-102
+
+Check that correct xml:base fixup is performed.
+-->
+<!DOCTYPE doc [
+ <!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+ <!ATTLIST e3 id ID #IMPLIED>
+]>
+<doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="something/else">
+ <e1>
+ <e2 xmlns="" xml:id="abc" xml:base="bar/">
+ <e3 id="E3" xml:base="foo"/>
+ </e2>
+ </e1>
+</doc> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xpath b/test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xpath
new file mode 100644
index 0000000..cdaad3e
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-c14n11spec2-102.xpath
@@ -0,0 +1,9 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-c14n11spec2-102
+
+Check that correct xml:base fixup is performed.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[self::ietf:e1 or (parent::ietf:e1 and not(self::text() or self::e2)) or count(id("E3")|ancestor-or-self::node()) = count(ancestor-or-self::node())]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xml b/test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xml
new file mode 100644
index 0000000..f46e1e9
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-c14n11spec3-102
+
+Check that correct xml:base fixup is performed.
+-->
+<a xml:base="foo/bar">
+ <b xml:base="..">
+ <c xml:base="..">
+ <d xml:base="x">
+ </d>
+ </c>
+ </b>
+</a>
diff --git a/test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xpath b/test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xpath
new file mode 100644
index 0000000..1d8dd71
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-c14n11spec3-102.xpath
@@ -0,0 +1,9 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-c14n11spec2-102
+
+Check that correct xml:base fixup is performed.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[self::a or ancestor-or-self::d]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-1.xml b/test/c14n/1-1-without-comments/xmlbase-prop-1.xml
new file mode 100755
index 0000000..24a899b
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-1.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-1
+
+Check that implementations of [XML-C14N1.1] work properly when the
+xml:base origin appears in the output document subset and also children
+with xml:base, which do not require further processing, are also present.
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-1.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-1.xpath
new file mode 100755
index 0000000..168e98d
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-1.xpath
@@ -0,0 +1,11 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-1
+
+Check that implementations of [XML-C14N1.1] work properly when the
+xml:base origin appears in the output document subset and also children
+with xml:base, which do not require further processing, are also present.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:c14n11XmlBaseDoc1 and not(ancestor-or-self::ietf:e2)]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-2.xml b/test/c14n/1-1-without-comments/xmlbase-prop-2.xml
new file mode 100755
index 0000000..4c85329
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-2.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-2
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+at the first level (ietf:e1).
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-2.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-2.xpath
new file mode 100755
index 0000000..fdab085
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-2.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-2
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+at the first level (ietf:e1).
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e1]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-3.xml b/test/c14n/1-1-without-comments/xmlbase-prop-3.xml
new file mode 100755
index 0000000..19ce738
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-3.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-3
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+if one of intermediate the levels (ietf:e1) are absent from the document
+subset.
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-3.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-3.xpath
new file mode 100755
index 0000000..de87508
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-3.xpath
@@ -0,0 +1,11 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-3
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+if one of intermediate the levels (ietf:e1) are absent from the document
+subset.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e11]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-4.xml b/test/c14n/1-1-without-comments/xmlbase-prop-4.xml
new file mode 100755
index 0000000..57e4436
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-4.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-4
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+if several intermediate levels (ietf:e1 and ietf:e11) are absent from
+the document subset.
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-4.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-4.xpath
new file mode 100755
index 0000000..818ef10
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-4.xpath
@@ -0,0 +1,11 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-4
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+if several intermediate levels (ietf:e1 and ietf:e11) are absent from
+the document subset.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e111]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-5.xml b/test/c14n/1-1-without-comments/xmlbase-prop-5.xml
new file mode 100755
index 0000000..f92a897
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-5.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-5
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+if one intermediate level (ietf:e2) without any xml:base attribute is absent
+from the document subset.
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-5.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-5.xpath
new file mode 100755
index 0000000..7020803
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-5.xpath
@@ -0,0 +1,11 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-5
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base
+if one intermediate level (ietf:e2) without any xml:base attribute is absent
+from the document subset.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e21]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-6.xml b/test/c14n/1-1-without-comments/xmlbase-prop-6.xml
new file mode 100755
index 0000000..62824f9
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-6.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-6
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base in
+one element that originally had no xml:base attribute.
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-6.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-6.xpath
new file mode 100755
index 0000000..2b93c64
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-6.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-6
+
+Check that implementations of [XML-C14N1.1] properly build the xml:base in
+one element that originally had no xml:base attribute.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e3]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-7.xml b/test/c14n/1-1-without-comments/xmlbase-prop-7.xml
new file mode 100755
index 0000000..ee13916
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-7.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-7
+
+Check that implementations of [XML-C14N1.1] do not pass the xml:base
+to another element when it is not necessary.
+-->
+<ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org" xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+</ietf:c14n11XmlBaseDoc1>
diff --git a/test/c14n/1-1-without-comments/xmlbase-prop-7.xpath b/test/c14n/1-1-without-comments/xmlbase-prop-7.xpath
new file mode 100755
index 0000000..7d37ab8
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlbase-prop-7.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#c14n11xmlbase-prop-7
+
+Check that implementations of [XML-C14N1.1] do not pass the xml:base
+to another element when it is not necessary.
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:c14n11XmlBaseDoc1 and not(ancestor-or-self::ietf:e1 or ancestor-or-self::ietf:e2)]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlid-prop-1.xml b/test/c14n/1-1-without-comments/xmlid-prop-1.xml
new file mode 100644
index 0000000..ca58c2b
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlid-prop-1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLID
+
+Check that implementations of [XML-C14N1.1] handle xml:id attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11XmlIdDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:id="IdInterop">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11XmlIdDoc1> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlid-prop-1.xpath b/test/c14n/1-1-without-comments/xmlid-prop-1.xpath
new file mode 100755
index 0000000..dc5573c
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlid-prop-1.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLID
+
+Check that implementations of [XML-C14N1.1] handle xml:id attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e1]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlid-prop-2.xml b/test/c14n/1-1-without-comments/xmlid-prop-2.xml
new file mode 100644
index 0000000..ca58c2b
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlid-prop-2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLID
+
+Check that implementations of [XML-C14N1.1] handle xml:id attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11XmlIdDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:id="IdInterop">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11XmlIdDoc1> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlid-prop-2.xpath b/test/c14n/1-1-without-comments/xmlid-prop-2.xpath
new file mode 100755
index 0000000..bed44b7
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlid-prop-2.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLID
+
+Check that implementations of [XML-C14N1.1] handle xml:id attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e11 or ancestor-or-self::ietf:e12]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-1.xml b/test/c14n/1-1-without-comments/xmllang-prop-1.xml
new file mode 100644
index 0000000..1111e33
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11Xmllang xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11Xmllang> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-1.xpath b/test/c14n/1-1-without-comments/xmllang-prop-1.xpath
new file mode 100755
index 0000000..224924e
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-1.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e1]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-2.xml b/test/c14n/1-1-without-comments/xmllang-prop-2.xml
new file mode 100644
index 0000000..1111e33
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11Xmllang xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11Xmllang> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-2.xpath b/test/c14n/1-1-without-comments/xmllang-prop-2.xpath
new file mode 100755
index 0000000..ca21758
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-2.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e2]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-3.xml b/test/c14n/1-1-without-comments/xmllang-prop-3.xml
new file mode 100644
index 0000000..1111e33
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-3.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11Xmllang xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11Xmllang> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-3.xpath b/test/c14n/1-1-without-comments/xmllang-prop-3.xpath
new file mode 100755
index 0000000..86e77fa
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-3.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e11]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-4.xml b/test/c14n/1-1-without-comments/xmllang-prop-4.xml
new file mode 100644
index 0000000..1111e33
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-4.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11Xmllang xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11Xmllang> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmllang-prop-4.xpath b/test/c14n/1-1-without-comments/xmllang-prop-4.xpath
new file mode 100755
index 0000000..fdc7661
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmllang-prop-4.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLLANG
+
+Check that implementations of [XML-C14N1.1] handle xml:lang attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e11 or ancestor-or-self::ietf:e12]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-1.xml b/test/c14n/1-1-without-comments/xmlspace-prop-1.xml
new file mode 100644
index 0000000..62da9e4
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11XmlSpaceDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:space="true">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11XmlSpaceDoc1> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-1.xpath b/test/c14n/1-1-without-comments/xmlspace-prop-1.xpath
new file mode 100755
index 0000000..bad373a
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-1.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e1]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-2.xml b/test/c14n/1-1-without-comments/xmlspace-prop-2.xml
new file mode 100644
index 0000000..62da9e4
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11XmlSpaceDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:space="true">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11XmlSpaceDoc1> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-2.xpath b/test/c14n/1-1-without-comments/xmlspace-prop-2.xpath
new file mode 100755
index 0000000..ffb7d85
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-2.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e2]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-3.xml b/test/c14n/1-1-without-comments/xmlspace-prop-3.xml
new file mode 100644
index 0000000..62da9e4
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-3.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11XmlSpaceDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:space="true">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11XmlSpaceDoc1> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-3.xpath b/test/c14n/1-1-without-comments/xmlspace-prop-3.xpath
new file mode 100755
index 0000000..3f27aed
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-3.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e11]
+</XPath>
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-4.xml b/test/c14n/1-1-without-comments/xmlspace-prop-4.xml
new file mode 100644
index 0000000..62da9e4
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-4.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<ietf:c14n11XmlSpaceDoc1 xmlns:ietf="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:space="true">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+</ietf:c14n11XmlSpaceDoc1> \ No newline at end of file
diff --git a/test/c14n/1-1-without-comments/xmlspace-prop-4.xpath b/test/c14n/1-1-without-comments/xmlspace-prop-4.xpath
new file mode 100755
index 0000000..49c4395
--- /dev/null
+++ b/test/c14n/1-1-without-comments/xmlspace-prop-4.xpath
@@ -0,0 +1,10 @@
+<!--
+http://www.w3.org/TR/xmldsig2ed-tests/#XMLSPACE
+
+Check that implementations of [XML-C14N1.1] handle xml:space attributes
+as defined in [XML-C14N1.1]
+-->
+<XPath xmlns:ietf="http://www.ietf.org" >
+(//. | //@* | //namespace::*)
+[ancestor-or-self::ietf:e11 or ancestor-or-self::ietf:e12]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-09.xml b/test/c14n/exc-without-comments/merlin-c14n-two-09.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-09.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-09.xpath
new file mode 100644
index 0000000..717b66a
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-09.xpath
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- everything -->
+ ancestor-or-self::bar:Something
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-10.xml b/test/c14n/exc-without-comments/merlin-c14n-two-10.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-10.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-10.xpath
new file mode 100644
index 0000000..8ea2795
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-10.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements or directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ ((name() != "bar") or parent::bar:Something) and
+ ((name() != "foo") or parent::foo:Something) and
+ ((name() != "baz") or parent::baz:Something) and
+ ((name() != "") or self::text())
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-11.xml b/test/c14n/exc-without-comments/merlin-c14n-two-11.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-11.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-11.xpath
new file mode 100644
index 0000000..37d65e0
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-11.xpath
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements or directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != "") or
+ (string(self::node()) = namespace-uri(parent::node())))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-12.xml b/test/c14n/exc-without-comments/merlin-c14n-two-12.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-12.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-12.xpath
new file mode 100644
index 0000000..ed8ae68
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-12.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements, or directly-used namespace nodes but not foo:Something -->
+ ancestor-or-self::bar:Something and
+ not (self::foo:Something) and
+ (self::text() or
+ (namespace-uri() != "") or
+ (string(self::node()) = namespace-uri(parent::node())))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-13.xml b/test/c14n/exc-without-comments/merlin-c14n-two-13.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-13.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-13.xpath
new file mode 100644
index 0000000..7d0170b
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-13.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes; I am not in my parent's namespace axis -->
+ ancestor-or-self::bar:Something and
+ (count(parent::node()/namespace::*) !=
+ count(parent::node()/namespace::* | self::node()))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-14.xml b/test/c14n/exc-without-comments/merlin-c14n-two-14.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-14.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-14.xpath
new file mode 100644
index 0000000..2732894
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-14.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes; I am text or have nonempty namespace URI -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != ""))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-15.xml b/test/c14n/exc-without-comments/merlin-c14n-two-15.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-15.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-15.xpath
new file mode 100644
index 0000000..ae6589e
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-15.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (count(parent::node()/namespace::*) =
+ count(parent::node()/namespace::* | self::node()))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-16.xml b/test/c14n/exc-without-comments/merlin-c14n-two-16.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-16.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-16.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-16.xpath
new file mode 100644
index 0000000..bdca528
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-16.xpath
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (string(self::node()) = namespace-uri(parent::node()))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-17.xml b/test/c14n/exc-without-comments/merlin-c14n-two-17.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-17.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-17.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-17.xpath
new file mode 100644
index 0000000..24fdd3f
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-17.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes but the default on alternate elements -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != "") or
+ ((name() = "") and
+ ((count(ancestor-or-self::node()) mod 2) = 1)))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-18.ns b/test/c14n/exc-without-comments/merlin-c14n-two-18.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-18.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-18.xml b/test/c14n/exc-without-comments/merlin-c14n-two-18.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-18.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-18.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-18.xpath
new file mode 100644
index 0000000..717b66a
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-18.xpath
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- everything -->
+ ancestor-or-self::bar:Something
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-19.ns b/test/c14n/exc-without-comments/merlin-c14n-two-19.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-19.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-19.xml b/test/c14n/exc-without-comments/merlin-c14n-two-19.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-19.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-19.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-19.xpath
new file mode 100644
index 0000000..8ea2795
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-19.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements or directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ ((name() != "bar") or parent::bar:Something) and
+ ((name() != "foo") or parent::foo:Something) and
+ ((name() != "baz") or parent::baz:Something) and
+ ((name() != "") or self::text())
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-20.ns b/test/c14n/exc-without-comments/merlin-c14n-two-20.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-20.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-20.xml b/test/c14n/exc-without-comments/merlin-c14n-two-20.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-20.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-20.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-20.xpath
new file mode 100644
index 0000000..37d65e0
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-20.xpath
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements or directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != "") or
+ (string(self::node()) = namespace-uri(parent::node())))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-21.ns b/test/c14n/exc-without-comments/merlin-c14n-two-21.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-21.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-21.xml b/test/c14n/exc-without-comments/merlin-c14n-two-21.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-21.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-21.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-21.xpath
new file mode 100644
index 0000000..ed8ae68
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-21.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements, or directly-used namespace nodes but not foo:Something -->
+ ancestor-or-self::bar:Something and
+ not (self::foo:Something) and
+ (self::text() or
+ (namespace-uri() != "") or
+ (string(self::node()) = namespace-uri(parent::node())))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-22.ns b/test/c14n/exc-without-comments/merlin-c14n-two-22.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-22.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-22.xml b/test/c14n/exc-without-comments/merlin-c14n-two-22.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-22.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-22.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-22.xpath
new file mode 100644
index 0000000..7d0170b
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-22.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes; I am not in my parent's namespace axis -->
+ ancestor-or-self::bar:Something and
+ (count(parent::node()/namespace::*) !=
+ count(parent::node()/namespace::* | self::node()))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-23.ns b/test/c14n/exc-without-comments/merlin-c14n-two-23.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-23.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-23.xml b/test/c14n/exc-without-comments/merlin-c14n-two-23.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-23.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-23.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-23.xpath
new file mode 100644
index 0000000..2732894
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-23.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes; I am text or have nonempty namespace URI -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != ""))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-24.ns b/test/c14n/exc-without-comments/merlin-c14n-two-24.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-24.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-24.xml b/test/c14n/exc-without-comments/merlin-c14n-two-24.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-24.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-24.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-24.xpath
new file mode 100644
index 0000000..ae6589e
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-24.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (count(parent::node()/namespace::*) =
+ count(parent::node()/namespace::* | self::node()))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-25.ns b/test/c14n/exc-without-comments/merlin-c14n-two-25.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-25.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-25.xml b/test/c14n/exc-without-comments/merlin-c14n-two-25.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-25.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-25.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-25.xpath
new file mode 100644
index 0000000..bdca528
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-25.xpath
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (string(self::node()) = namespace-uri(parent::node()))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-26.ns b/test/c14n/exc-without-comments/merlin-c14n-two-26.ns
new file mode 100644
index 0000000..3886aed
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-26.ns
@@ -0,0 +1 @@
+#default \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-26.xml b/test/c14n/exc-without-comments/merlin-c14n-two-26.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-26.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/exc-without-comments/merlin-c14n-two-26.xpath b/test/c14n/exc-without-comments/merlin-c14n-two-26.xpath
new file mode 100644
index 0000000..24fdd3f
--- /dev/null
+++ b/test/c14n/exc-without-comments/merlin-c14n-two-26.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes but the default on alternate elements -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != "") or
+ ((name() = "") and
+ ((count(ancestor-or-self::node()) mod 2) = 1)))
+ ]
+</XPath>
diff --git a/test/c14n/exc-without-comments/test-0.xml b/test/c14n/exc-without-comments/test-0.xml
new file mode 100644
index 0000000..c7c42d9
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-0.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>
+<doc xmlns:foo="http://www.bar.org" xml:base="http://www.example.org/2002/">
+ <e1 />
+ <e2 ></e2>
+ <e3 name = "elem3" id="elem3" />
+ <e4 name="elem4" id="elem4" ></e4>
+ <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"
+ xmlns:b="http://www.ietf.org"
+ xmlns:a="http://www.w3.org"
+ xmlns="http://example.org"/>
+ <e6 xmlns="" test="../baz" xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org" a:foo="bar">
+ <e9 xmlns="" xmlns:a="http://www.ietf.org"/>
+ </e8>
+ </e7>
+ </e6>
+</doc>
diff --git a/test/c14n/exc-without-comments/test-0.xpath b/test/c14n/exc-without-comments/test-0.xpath
new file mode 100644
index 0000000..faa0070
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-0.xpath
@@ -0,0 +1,3 @@
+<XPath>
+(//. | //@* | //namespace::*)[ancestor-or-self::e6]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/test-1.ns b/test/c14n/exc-without-comments/test-1.ns
new file mode 100644
index 0000000..2e65efe
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-1.ns
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/test-1.xml b/test/c14n/exc-without-comments/test-1.xml
new file mode 100644
index 0000000..c7c42d9
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-1.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>
+<doc xmlns:foo="http://www.bar.org" xml:base="http://www.example.org/2002/">
+ <e1 />
+ <e2 ></e2>
+ <e3 name = "elem3" id="elem3" />
+ <e4 name="elem4" id="elem4" ></e4>
+ <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"
+ xmlns:b="http://www.ietf.org"
+ xmlns:a="http://www.w3.org"
+ xmlns="http://example.org"/>
+ <e6 xmlns="" test="../baz" xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org" a:foo="bar">
+ <e9 xmlns="" xmlns:a="http://www.ietf.org"/>
+ </e8>
+ </e7>
+ </e6>
+</doc>
diff --git a/test/c14n/exc-without-comments/test-1.xpath b/test/c14n/exc-without-comments/test-1.xpath
new file mode 100644
index 0000000..faa0070
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-1.xpath
@@ -0,0 +1,3 @@
+<XPath>
+(//. | //@* | //namespace::*)[ancestor-or-self::e6]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/exc-without-comments/test-2.xml b/test/c14n/exc-without-comments/test-2.xml
new file mode 100644
index 0000000..83d15a7
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <ds:CanonicalizationMethod xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+ <Reference URI="#ndid:1234-5678-0987">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>sj1VXDB2VMCU5qmva2OtDw3kKOs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>...</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509Certificate>...</X509Certificate>
+ </X509Data>
+ </KeyInfo>
+</Signature>
diff --git a/test/c14n/exc-without-comments/test-2.xpath b/test/c14n/exc-without-comments/test-2.xpath
new file mode 100644
index 0000000..e57652f
--- /dev/null
+++ b/test/c14n/exc-without-comments/test-2.xpath
@@ -0,0 +1,6 @@
+<XPath xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+(//. | //@* | //namespace::*)
+[
+ ancestor-or-self::ds:SignedInfo
+]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/with-comments/doc.dtd b/test/c14n/with-comments/doc.dtd
new file mode 100644
index 0000000..c460239
--- /dev/null
+++ b/test/c14n/with-comments/doc.dtd
@@ -0,0 +1 @@
+<!-- Empty DTD --> \ No newline at end of file
diff --git a/test/c14n/with-comments/example-1.xml b/test/c14n/with-comments/example-1.xml
new file mode 100644
index 0000000..ed450c7
--- /dev/null
+++ b/test/c14n/with-comments/example-1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="doc.xsl"
+ type="text/xsl" ?>
+
+<!DOCTYPE doc SYSTEM "doc.dtd">
+
+<doc>Hello, world!<!-- Comment 1 --></doc>
+
+<?pi-without-data ?>
+
+<!-- Comment 2 -->
+
+<!-- Comment 3 -->
diff --git a/test/c14n/with-comments/example-2.xml b/test/c14n/with-comments/example-2.xml
new file mode 100644
index 0000000..74eeea1
--- /dev/null
+++ b/test/c14n/with-comments/example-2.xml
@@ -0,0 +1,11 @@
+<doc>
+ <clean> </clean>
+ <dirty> A B </dirty>
+ <mixed>
+ A
+ <clean> </clean>
+ B
+ <dirty> A B </dirty>
+ C
+ </mixed>
+</doc>
diff --git a/test/c14n/with-comments/example-3.xml b/test/c14n/with-comments/example-3.xml
new file mode 100644
index 0000000..a7a1950
--- /dev/null
+++ b/test/c14n/with-comments/example-3.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>
+<doc>
+ <e1 />
+ <e2 ></e2>
+ <e3 name = "elem3" id="elem3" />
+ <e4 name="elem4" id="elem4" ></e4>
+ <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"
+ xmlns:b="http://www.ietf.org"
+ xmlns:a="http://www.w3.org"
+ xmlns="http://www.uvic.ca"/>
+ <e6 xmlns="" xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org">
+ <e9 xmlns="" xmlns:a="http://www.ietf.org"/>
+ </e8>
+ </e7>
+ </e6>
+</doc>
diff --git a/test/c14n/with-comments/example-4.xml b/test/c14n/with-comments/example-4.xml
new file mode 100644
index 0000000..3fba138
--- /dev/null
+++ b/test/c14n/with-comments/example-4.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [<!ATTLIST normId id ID #IMPLIED>]>
+<doc>
+ <text>First line&#x0d;&#10;Second line</text>
+ <value>&#x32;</value>
+ <compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>
+ <compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>
+ <norm attr=' &apos; &#x20;&#13;&#xa;&#9; &apos; '/>
+ <normId id=' &apos; &#x20;&#13;&#xa;&#9; &apos; '/>
+</doc>
diff --git a/test/c14n/with-comments/example-5.xml b/test/c14n/with-comments/example-5.xml
new file mode 100644
index 0000000..92c5322
--- /dev/null
+++ b/test/c14n/with-comments/example-5.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc [
+<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>
+<!ENTITY ent1 "Hello">
+<!ENTITY ent2 SYSTEM "world.txt">
+<!ENTITY entExt SYSTEM "earth.gif" NDATA gif>
+<!NOTATION gif SYSTEM "viewgif.exe">
+]>
+<doc attrExtEnt="entExt">
+ &ent1;, &ent2;!
+</doc>
+
+<!-- Let world.txt contain "world" (excluding the quotes) -->
diff --git a/test/c14n/with-comments/example-6.xml b/test/c14n/with-comments/example-6.xml
new file mode 100644
index 0000000..31e2071
--- /dev/null
+++ b/test/c14n/with-comments/example-6.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<doc>&#169;</doc>
diff --git a/test/c14n/with-comments/example-7.xml b/test/c14n/with-comments/example-7.xml
new file mode 100644
index 0000000..41171cb
--- /dev/null
+++ b/test/c14n/with-comments/example-7.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc [
+<!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+<!ATTLIST e3 id ID #IMPLIED>
+]>
+<doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <e1>
+ <e2 xmlns="">
+ <e3 id="E3"/>
+ </e2>
+ </e1>
+</doc>
diff --git a/test/c14n/with-comments/example-7.xpath b/test/c14n/with-comments/example-7.xpath
new file mode 100644
index 0000000..84ddb08
--- /dev/null
+++ b/test/c14n/with-comments/example-7.xpath
@@ -0,0 +1,10 @@
+<XPath xmlns:ietf="http://www.ietf.org" >
+ (//.|//@*|//namespace::*)
+ [
+ self::ietf:e1
+ or
+ (parent::ietf:e1 and not(self::text() or self::e2))
+ or
+ count(id("E3")|ancestor-or-self::node()) = count(ancestor-or-self::node())
+ ]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/with-comments/world.txt b/test/c14n/with-comments/world.txt
new file mode 100644
index 0000000..04fea06
--- /dev/null
+++ b/test/c14n/with-comments/world.txt
@@ -0,0 +1 @@
+world \ No newline at end of file
diff --git a/test/c14n/without-comments/doc.dtd b/test/c14n/without-comments/doc.dtd
new file mode 100644
index 0000000..c460239
--- /dev/null
+++ b/test/c14n/without-comments/doc.dtd
@@ -0,0 +1 @@
+<!-- Empty DTD --> \ No newline at end of file
diff --git a/test/c14n/without-comments/example-1.xml b/test/c14n/without-comments/example-1.xml
new file mode 100644
index 0000000..ed450c7
--- /dev/null
+++ b/test/c14n/without-comments/example-1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="doc.xsl"
+ type="text/xsl" ?>
+
+<!DOCTYPE doc SYSTEM "doc.dtd">
+
+<doc>Hello, world!<!-- Comment 1 --></doc>
+
+<?pi-without-data ?>
+
+<!-- Comment 2 -->
+
+<!-- Comment 3 -->
diff --git a/test/c14n/without-comments/example-2.xml b/test/c14n/without-comments/example-2.xml
new file mode 100644
index 0000000..74eeea1
--- /dev/null
+++ b/test/c14n/without-comments/example-2.xml
@@ -0,0 +1,11 @@
+<doc>
+ <clean> </clean>
+ <dirty> A B </dirty>
+ <mixed>
+ A
+ <clean> </clean>
+ B
+ <dirty> A B </dirty>
+ C
+ </mixed>
+</doc>
diff --git a/test/c14n/without-comments/example-3.xml b/test/c14n/without-comments/example-3.xml
new file mode 100644
index 0000000..a7a1950
--- /dev/null
+++ b/test/c14n/without-comments/example-3.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>
+<doc>
+ <e1 />
+ <e2 ></e2>
+ <e3 name = "elem3" id="elem3" />
+ <e4 name="elem4" id="elem4" ></e4>
+ <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"
+ xmlns:b="http://www.ietf.org"
+ xmlns:a="http://www.w3.org"
+ xmlns="http://www.uvic.ca"/>
+ <e6 xmlns="" xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org">
+ <e9 xmlns="" xmlns:a="http://www.ietf.org"/>
+ </e8>
+ </e7>
+ </e6>
+</doc>
diff --git a/test/c14n/without-comments/example-4.xml b/test/c14n/without-comments/example-4.xml
new file mode 100644
index 0000000..3fba138
--- /dev/null
+++ b/test/c14n/without-comments/example-4.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [<!ATTLIST normId id ID #IMPLIED>]>
+<doc>
+ <text>First line&#x0d;&#10;Second line</text>
+ <value>&#x32;</value>
+ <compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>
+ <compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>
+ <norm attr=' &apos; &#x20;&#13;&#xa;&#9; &apos; '/>
+ <normId id=' &apos; &#x20;&#13;&#xa;&#9; &apos; '/>
+</doc>
diff --git a/test/c14n/without-comments/example-5.xml b/test/c14n/without-comments/example-5.xml
new file mode 100644
index 0000000..92c5322
--- /dev/null
+++ b/test/c14n/without-comments/example-5.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc [
+<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>
+<!ENTITY ent1 "Hello">
+<!ENTITY ent2 SYSTEM "world.txt">
+<!ENTITY entExt SYSTEM "earth.gif" NDATA gif>
+<!NOTATION gif SYSTEM "viewgif.exe">
+]>
+<doc attrExtEnt="entExt">
+ &ent1;, &ent2;!
+</doc>
+
+<!-- Let world.txt contain "world" (excluding the quotes) -->
diff --git a/test/c14n/without-comments/example-6.xml b/test/c14n/without-comments/example-6.xml
new file mode 100644
index 0000000..31e2071
--- /dev/null
+++ b/test/c14n/without-comments/example-6.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<doc>&#169;</doc>
diff --git a/test/c14n/without-comments/example-7.xml b/test/c14n/without-comments/example-7.xml
new file mode 100644
index 0000000..41171cb
--- /dev/null
+++ b/test/c14n/without-comments/example-7.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc [
+<!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+<!ATTLIST e3 id ID #IMPLIED>
+]>
+<doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org">
+ <e1>
+ <e2 xmlns="">
+ <e3 id="E3"/>
+ </e2>
+ </e1>
+</doc>
diff --git a/test/c14n/without-comments/example-7.xpath b/test/c14n/without-comments/example-7.xpath
new file mode 100644
index 0000000..84ddb08
--- /dev/null
+++ b/test/c14n/without-comments/example-7.xpath
@@ -0,0 +1,10 @@
+<XPath xmlns:ietf="http://www.ietf.org" >
+ (//.|//@*|//namespace::*)
+ [
+ self::ietf:e1
+ or
+ (parent::ietf:e1 and not(self::text() or self::e2))
+ or
+ count(id("E3")|ancestor-or-self::node()) = count(ancestor-or-self::node())
+ ]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/without-comments/merlin-c14n-two-00.xml b/test/c14n/without-comments/merlin-c14n-two-00.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-00.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-00.xpath b/test/c14n/without-comments/merlin-c14n-two-00.xpath
new file mode 100644
index 0000000..717b66a
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-00.xpath
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- everything -->
+ ancestor-or-self::bar:Something
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-01.xml b/test/c14n/without-comments/merlin-c14n-two-01.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-01.xpath b/test/c14n/without-comments/merlin-c14n-two-01.xpath
new file mode 100644
index 0000000..8ea2795
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-01.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements or directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ ((name() != "bar") or parent::bar:Something) and
+ ((name() != "foo") or parent::foo:Something) and
+ ((name() != "baz") or parent::baz:Something) and
+ ((name() != "") or self::text())
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-02.xml b/test/c14n/without-comments/merlin-c14n-two-02.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-02.xpath b/test/c14n/without-comments/merlin-c14n-two-02.xpath
new file mode 100644
index 0000000..37d65e0
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-02.xpath
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements or directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != "") or
+ (string(self::node()) = namespace-uri(parent::node())))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-03.xml b/test/c14n/without-comments/merlin-c14n-two-03.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-03.xpath b/test/c14n/without-comments/merlin-c14n-two-03.xpath
new file mode 100644
index 0000000..ed8ae68
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-03.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only text, elements, or directly-used namespace nodes but not foo:Something -->
+ ancestor-or-self::bar:Something and
+ not (self::foo:Something) and
+ (self::text() or
+ (namespace-uri() != "") or
+ (string(self::node()) = namespace-uri(parent::node())))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-04.xml b/test/c14n/without-comments/merlin-c14n-two-04.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-04.xpath b/test/c14n/without-comments/merlin-c14n-two-04.xpath
new file mode 100644
index 0000000..7d0170b
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-04.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes; I am not in my parent's namespace axis -->
+ ancestor-or-self::bar:Something and
+ (count(parent::node()/namespace::*) !=
+ count(parent::node()/namespace::* | self::node()))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-05.xml b/test/c14n/without-comments/merlin-c14n-two-05.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-05.xpath b/test/c14n/without-comments/merlin-c14n-two-05.xpath
new file mode 100644
index 0000000..2732894
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-05.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes; I am text or have nonempty namespace URI -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != ""))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-06.xml b/test/c14n/without-comments/merlin-c14n-two-06.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-06.xpath b/test/c14n/without-comments/merlin-c14n-two-06.xpath
new file mode 100644
index 0000000..ae6589e
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-06.xpath
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (count(parent::node()/namespace::*) =
+ count(parent::node()/namespace::* | self::node()))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-07.xml b/test/c14n/without-comments/merlin-c14n-two-07.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-07.xpath b/test/c14n/without-comments/merlin-c14n-two-07.xpath
new file mode 100644
index 0000000..bdca528
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-07.xpath
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- only directly-used namespace nodes -->
+ ancestor-or-self::bar:Something and
+ (string(self::node()) = namespace-uri(parent::node()))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/merlin-c14n-two-08.xml b/test/c14n/without-comments/merlin-c14n-two-08.xml
new file mode 100644
index 0000000..714c9d1
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+ <bar:Something>
+ <foo:Something>
+ <bar:Something>
+ <foo:Something>
+ <baz:Something />
+ </foo:Something>
+ </bar:Something>
+ </foo:Something>
+ </bar:Something>
+</foo:Root>
diff --git a/test/c14n/without-comments/merlin-c14n-two-08.xpath b/test/c14n/without-comments/merlin-c14n-two-08.xpath
new file mode 100644
index 0000000..24fdd3f
--- /dev/null
+++ b/test/c14n/without-comments/merlin-c14n-two-08.xpath
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+ (//. | //@* | //namespace::*)
+ [
+ <!-- no namespace nodes but the default on alternate elements -->
+ ancestor-or-self::bar:Something and
+ (self::text() or
+ (namespace-uri() != "") or
+ ((name() = "") and
+ ((count(ancestor-or-self::node()) mod 2) = 1)))
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/test-0.xml b/test/c14n/without-comments/test-0.xml
new file mode 100644
index 0000000..7e1f9d4
--- /dev/null
+++ b/test/c14n/without-comments/test-0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE envelope [
+ <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+ <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+ <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<Object Id="object-1" MimeType="text/plain">I am the text.</Object>
diff --git a/test/c14n/without-comments/test-0.xpath b/test/c14n/without-comments/test-0.xpath
new file mode 100644
index 0000000..1fca7bf
--- /dev/null
+++ b/test/c14n/without-comments/test-0.xpath
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE envelope [
+ <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+ <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+ <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<XPath>
+ (//.|//@*|//namespace::*)
+ [
+ self::text()
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/test-1.xml b/test/c14n/without-comments/test-1.xml
new file mode 100644
index 0000000..2156615
--- /dev/null
+++ b/test/c14n/without-comments/test-1.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!DOCTYPE envelope [
+ <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+ <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+ <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="signature">
+ <Object Id="object-4">
+ <X509Data>
+ <X509SubjectName>
+ CN=Merlin Hughes,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+ </X509SubjectName>
+ <X509IssuerSerial>
+ <X509IssuerName>
+ CN=Test DSA CA,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+ </X509IssuerName>
+ <X509SerialNumber>970849936</X509SerialNumber>
+ </X509IssuerSerial>
+ <X509Certificate>
+ MIIDNzCCAvWgAwIBAgIEOd3+kDAJBgcqhkjOOAQDMFsxCzAJBgNVBAYTAklFMQ8w
+ DQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMs
+ IEx0ZC4xFDASBgNVBAMTC1Rlc3QgRFNBIENBMB4XDTAwMTAwNjE2MzIxNVoXDTAx
+ MTAwNjE2MzIxNFowXTELMAkGA1UEBhMCSUUxDzANBgNVBAgTBkR1YmxpbjElMCMG
+ A1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLjEWMBQGA1UEAxMNTWVy
+ bGluIEh1Z2hlczCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQDaJjfDTrawMHf8MiUt
+ Y54b37hSmYNnR3KpGT10uU1Dqppcju06uN0iGbqf947DjkBC25hKnqykK31xBw0E
+ CPbYq/KC98kghdf2xJCu6B8aqJ95K9jdVflJ3WP7PQxJn+fmM23zy6HYLXVICpfq
+ etdNj/VHCShZE3bdJiE6VobSFQIVAPQecqS2PaTDprcQnkwx4MHTRXhrAoGAMuGA
+ lqeB1ax+vyO2+Osubjhl7pHxLu47RIH+/M52DjESA9KMSrwzsYx8yNR2WooByrE0
+ t6fu0VncK7UK8olO4t7wpv2z4AFQPRVCKFwo0qgn5aKIkICGMlrRy81avb27wGcW
+ othx3iPPMtFXtoDqK0JItaI9R8zc1msFhM1GKMYDgYQAAoGActA8YGxrtngg/zKV
+ vqEOefnwmViFztcnPBYPlJsvh6yKI4iDm68fnp4Mi3RrJ6bZAygFrUIQLxLjV+OJ
+ tgJAEto0xAs+Mehuq1DkSFEpP3oDzCTOsrOiS1DwQe4oIb7zVk/9l7aPtJMHW0LV
+ lMdwZNFNNJoqMcT2ZfCPrfvYvQ2jRzBFMB4GA1UdEQQXMBWBE21lcmxpbkBiYWx0
+ aW1vcmUuaWUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdIwQMMAqACEJZQG0KwRbPMAkG
+ ByqGSM44BAMDMQAwLgIVAK4skWEFYgrggaJA8vYAwSjg12+KAhUAwHTo7wd4tENw
+ 9LAKPklQ/74fH18=
+ </X509Certificate>
+ </X509Data>
+ </Object>
+ </Signature> \ No newline at end of file
diff --git a/test/c14n/without-comments/test-1.xpath b/test/c14n/without-comments/test-1.xpath
new file mode 100644
index 0000000..3c11e29
--- /dev/null
+++ b/test/c14n/without-comments/test-1.xpath
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE envelope [
+ <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+ <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+ <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<XPath xmlns:dsig="&dsig;">
+ (//.|//@*|//namespace::*)
+ [
+ ancestor-or-self::dsig:X509Data
+ ]
+</XPath>
diff --git a/test/c14n/without-comments/test-2.xml b/test/c14n/without-comments/test-2.xml
new file mode 100644
index 0000000..9fda49e
--- /dev/null
+++ b/test/c14n/without-comments/test-2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<n0:local xmlns:n0="foo://bar" xmlns:n3="ftp://example.org">
+ <n1:elem2 xmlns:n1="http://example.net" xml:lang="en">
+ <n3:stuff xmlns:n3="ftp://example.org"/>
+ </n1:elem2>
+</n0:local>
+
+ \ No newline at end of file
diff --git a/test/c14n/without-comments/test-2.xpath b/test/c14n/without-comments/test-2.xpath
new file mode 100644
index 0000000..9653bc3
--- /dev/null
+++ b/test/c14n/without-comments/test-2.xpath
@@ -0,0 +1,8 @@
+
+<XPath xmlns:n1="http://example.net" >
+ (//. | //@* | //namespace::*)
+ [
+ ancestor-or-self::n1:elem2
+ ]
+</XPath>
+ \ No newline at end of file
diff --git a/test/c14n/without-comments/test-3.xml b/test/c14n/without-comments/test-3.xml
new file mode 100644
index 0000000..c7c42d9
--- /dev/null
+++ b/test/c14n/without-comments/test-3.xml
@@ -0,0 +1,18 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>
+<doc xmlns:foo="http://www.bar.org" xml:base="http://www.example.org/2002/">
+ <e1 />
+ <e2 ></e2>
+ <e3 name = "elem3" id="elem3" />
+ <e4 name="elem4" id="elem4" ></e4>
+ <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"
+ xmlns:b="http://www.ietf.org"
+ xmlns:a="http://www.w3.org"
+ xmlns="http://example.org"/>
+ <e6 xmlns="" test="../baz" xmlns:a="http://www.w3.org">
+ <e7 xmlns="http://www.ietf.org">
+ <e8 xmlns="" xmlns:a="http://www.w3.org" a:foo="bar">
+ <e9 xmlns="" xmlns:a="http://www.ietf.org"/>
+ </e8>
+ </e7>
+ </e6>
+</doc>
diff --git a/test/c14n/without-comments/test-3.xpath b/test/c14n/without-comments/test-3.xpath
new file mode 100644
index 0000000..faa0070
--- /dev/null
+++ b/test/c14n/without-comments/test-3.xpath
@@ -0,0 +1,3 @@
+<XPath>
+(//. | //@* | //namespace::*)[ancestor-or-self::e6]
+</XPath> \ No newline at end of file
diff --git a/test/c14n/without-comments/world.txt b/test/c14n/without-comments/world.txt
new file mode 100644
index 0000000..04fea06
--- /dev/null
+++ b/test/c14n/without-comments/world.txt
@@ -0,0 +1 @@
+world \ No newline at end of file
diff --git a/test/catalogs/catal.script b/test/catalogs/catal.script
new file mode 100644
index 0000000..1c644d1
--- /dev/null
+++ b/test/catalogs/catal.script
@@ -0,0 +1,4 @@
+public "-//OASIS//DTD DocBook XML CALS Table Model V4.1//EN"
+public "-//Davenport//DTD DocBook V3.0//EN"
+public "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
+public "-//Davenport//ENTITIES DocBook Additional General Entities V3.0//EN"
diff --git a/test/catalogs/catal.sgml b/test/catalogs/catal.sgml
new file mode 100644
index 0000000..03fc2c5
--- /dev/null
+++ b/test/catalogs/catal.sgml
@@ -0,0 +1,2 @@
+CATALOG catal1.sgml
+CATALOG catal2.sgml
diff --git a/test/catalogs/catal1.sgml b/test/catalogs/catal1.sgml
new file mode 100644
index 0000000..b8319ca
--- /dev/null
+++ b/test/catalogs/catal1.sgml
@@ -0,0 +1 @@
+CATALOG catal3.sgml
diff --git a/test/catalogs/catal2.sgml b/test/catalogs/catal2.sgml
new file mode 100644
index 0000000..ff4cf8c
--- /dev/null
+++ b/test/catalogs/catal2.sgml
@@ -0,0 +1,4 @@
+PUBLIC "-//Davenport//DTD DocBook V3.0//EN" "docbook.dtd"
+PUBLIC "-//USA-DOD//DTD Table Model 951010//EN" "cals-tbl.dtd"
+PUBLIC "-//Davenport//ELEMENTS DocBook Information Pool V3.0//EN" "dbpool.mod"
+PUBLIC "-//Davenport//ELEMENTS DocBook Document Hierarchy V3.0//EN" "dbhier.mod"PUBLIC "-//Davenport//ENTITIES DocBook Additional General Entities V3.0//EN" "dbgenent.mod"
diff --git a/test/catalogs/catal3.sgml b/test/catalogs/catal3.sgml
new file mode 100644
index 0000000..bf54724
--- /dev/null
+++ b/test/catalogs/catal3.sgml
@@ -0,0 +1,8 @@
+PUBLIC "-//OASIS//DTD DocBook XML CALS Table Model V4.1//EN" "calstblx.dtd"
+PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN" "soextblx.dtd"
+PUBLIC "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1//EN" "dbpool.mod"
+PUBLIC "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1//EN" "dbhier.mod"PUBLIC "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1//EN" "dbgenent.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook XML Notations V4.1//EN" "dbnotn.mod"
+PUBLIC "-//OASIS//ENTITIES DocBook XML Character Entities V4.1//EN" "dbcent.mod"
+
+
diff --git a/test/catalogs/docbook.script b/test/catalogs/docbook.script
new file mode 100644
index 0000000..faa06b0
--- /dev/null
+++ b/test/catalogs/docbook.script
@@ -0,0 +1,5 @@
+resolve toto http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod
+public "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN"
+system urn:publicid:-:OASIS:DTD+DocBook+XML+V4.1.2:EN
+public urn:publicid:-:OASIS:DTD+DocBook+XML+V4.1.2:EN
+resolve toto toto
diff --git a/test/catalogs/docbook.xml b/test/catalogs/docbook.xml
new file mode 100644
index 0000000..c8dd2bf
--- /dev/null
+++ b/test/catalogs/docbook.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
+<public publicId="-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod"/>
+<public publicId="-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod"/>
+<public publicId="-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod"/>
+<public publicId="-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbhierx.mod"/>
+<public publicId="-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbgenent.mod"/>
+<public publicId="-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd"/>
+<public publicId="-//OASIS//DTD DocBook MathML Module V1.0//EN" uri="http://www.oasis-open.org/docbook/xml/mathml/1.0/dbmathml.dtd"/>
+<nextCatalog catalog="stylesheet.xml"/>
+<rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/" rewritePrefix="/usr/share/xml/docbook/"/>
+</catalog>
diff --git a/test/catalogs/registry.script b/test/catalogs/registry.script
new file mode 100644
index 0000000..9bb944c
--- /dev/null
+++ b/test/catalogs/registry.script
@@ -0,0 +1,4 @@
+resolve toto http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod
+public "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN"
+system http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod
+system urn:publicid:-:OASIS:DTD+DocBook+XML+V4.1.2:EN
diff --git a/test/catalogs/registry.xml b/test/catalogs/registry.xml
new file mode 100644
index 0000000..5caccfc
--- /dev/null
+++ b/test/catalogs/registry.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+
+<delegatePublic publicIdStartString="-//OASIS//"
+ catalog="oasis.xml"/>
+<delegateSystem systemIdStartString="http://www.oasis-open.org/"
+ catalog="oasis.xml"/>
+<delegateURI uriStartString="http://www.oasis-open.org/"
+ catalog="oasis.xml"/>
+
+<delegatePublic publicIdStartString="-//OASIS//DTD XML Catalog //"
+ catalog="docbook.xml"/>
+<delegatePublic publicIdStartString="-//OASIS//ENTITIES DocBook XML"
+ catalog="docbook.xml"/>
+<delegatePublic publicIdStartString="-//OASIS//DTD DocBook XML"
+ catalog="docbook.xml"/>
+<delegateSystem systemIdStartString="http://www.oasis-open.org/docbook/"
+ catalog="docbook.xml"/>
+<delegateURI uriStartString="http://www.oasis-open.org/docbook/"
+ catalog="docbook.xml"/>
+
+</catalog>
diff --git a/test/catalogs/stylesheet.xml b/test/catalogs/stylesheet.xml
new file mode 100644
index 0000000..4b611e1
--- /dev/null
+++ b/test/catalogs/stylesheet.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE catalog
+ PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
+ "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
+ prefer="public">
+
+<!-- Circumvent relative URI in spec.xsl that doesn't work online -->
+<uri name="http://www.oasis-open.org/committes/tr.xsl"
+ uri="http://www.oasis-open.org/committes/entity/stylesheets/base/tr.xsl"/>
+<public publicId="toto" uri="file:///usr/share/xml/toto/toto.dtd"/>
+</catalog>
+
diff --git a/test/catalogs/whites.script b/test/catalogs/whites.script
new file mode 100644
index 0000000..8f4dd13
--- /dev/null
+++ b/test/catalogs/whites.script
@@ -0,0 +1,4 @@
+public "-//OASIS//DTD DocBook XML CALS Table Model V4.1//EN "
+public "-//Davenport//DTD DocBook V3.0//EN"
+public " -//OASIS//DTD XML Exchange Table Model 19990315//EN"
+public "-//Davenport//ENTITIES DocBook Additional General Entities V3.0//EN"
diff --git a/test/catalogs/whites.sgml b/test/catalogs/whites.sgml
new file mode 100644
index 0000000..50269b7
--- /dev/null
+++ b/test/catalogs/whites.sgml
@@ -0,0 +1,5 @@
+PUBLIC " -//OASIS//DTD DocBook XML CALS Table Model V4.1//EN" "calstblx.dtd"
+PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN " "soextblx.dtd"
+PUBLIC "-//Davenport//DTD DocBook
+ V3.0//EN" "docbook.dtd"
+PUBLIC "-//Davenport//ENTITIES DocBook Additional General Entities V3.0//EN" "dbgenent.mod"
diff --git a/test/catalogs/whitex.script b/test/catalogs/whitex.script
new file mode 100644
index 0000000..a49ca23
--- /dev/null
+++ b/test/catalogs/whitex.script
@@ -0,0 +1,7 @@
+resolve "toto " http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod
+public "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN"
+public " -//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN"
+public "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN "
+system urn:publicid:+-:OASIS:DTD+++DocBook+XML+V4.1.2:EN+
+public urn:publicid:+-:OASIS:DTD+DocBook+XML+++V4.1.2:EN+
+resolve " toto " toto
diff --git a/test/catalogs/whitex.xml b/test/catalogs/whitex.xml
new file mode 100644
index 0000000..d742887
--- /dev/null
+++ b/test/catalogs/whitex.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
+<public publicId="-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod"/>
+<public publicId=" -//OASIS//ENTITIES DocBook
+ XML Character Entities V4.1.2//EN " uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod"/>
+<public publicId="-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod"/>
+<public publicId="-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbhierx.mod"/>
+<public publicId="-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/dbgenent.mod"/>
+<public publicId="-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd"/>
+<public publicId="-//OASIS//DTD DocBook MathML Module V1.0//EN" uri="http://www.oasis-open.org/docbook/xml/mathml/1.0/dbmathml.dtd"/>
+<nextCatalog catalog="stylesheet.xml"/>
+<rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/" rewritePrefix="/usr/share/xml/docbook/"/>
+</catalog>
diff --git a/test/cdata b/test/cdata
new file mode 100644
index 0000000..bd8c474
--- /dev/null
+++ b/test/cdata
@@ -0,0 +1,3 @@
+<doc>
+<![CDATA[<greeting>Hello, world!</greeting>]]>
+</doc>
diff --git a/test/cdata2 b/test/cdata2
new file mode 100644
index 0000000..b4db791
--- /dev/null
+++ b/test/cdata2
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection>
+ <test><![CDATA[
+ <![CDATA[abc]]]>]&gt;<![CDATA[
+ ]]></test>
+</collection>
diff --git a/test/comment.xml b/test/comment.xml
new file mode 100644
index 0000000..98c5eff
--- /dev/null
+++ b/test/comment.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+<!-- document start -->
+<empty/>
+<!-- document end -->
+</doc>
diff --git a/test/comment2.xml b/test/comment2.xml
new file mode 100644
index 0000000..9e122ec
--- /dev/null
+++ b/test/comment2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- document start -->
+<doc>
+<empty/>
+</doc>
+<!-- document end -->
diff --git a/test/comment3.xml b/test/comment3.xml
new file mode 100644
index 0000000..395f67c
--- /dev/null
+++ b/test/comment3.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of very very long comments and buffer limits
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789
+-->
+<doc/>
diff --git a/test/comment4.xml b/test/comment4.xml
new file mode 100644
index 0000000..93282d8
--- /dev/null
+++ b/test/comment4.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of non ascii comments like là et très -->
+<!--à another one -->
+<!-- another one à-->
+<doc/>
diff --git a/test/comment5.xml b/test/comment5.xml
new file mode 100644
index 0000000..398f974
--- /dev/null
+++ b/test/comment5.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- test of hyphen and line break handling
+ some text - interrupted -
+- - - - - - - - - - - - - - - - - - - - - -
+ this should stop here^
+
+
+-->
+<doc/>
diff --git a/test/comment6.xml b/test/comment6.xml
new file mode 100644
index 0000000..014500b
--- /dev/null
+++ b/test/comment6.xml
@@ -0,0 +1,13 @@
+<!--
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+long comment long comment long comment long comment long comment long comment
+-->
+<!DOCTYPE a [
+<!ELEMENT a EMPTY>
+]>
+<a/>
diff --git a/test/dav1 b/test/dav1
new file mode 100644
index 0000000..cbfd4c4
--- /dev/null
+++ b/test/dav1
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema">
+ <D:response>
+ <D:prop>
+ <R:bigbox>
+ <R:BoxType>Box type A</R:BoxType>
+ </R:bigbox>
+ <R:author>
+ <R:Name>J.J. Dingleheimerschmidt</R:Name>
+ </R:author>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:prop>
+ <R:DingALing/>
+ <R:Random/>
+ </D:prop>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ <D:responsedescription> The user does not have access to the DingALing property.
+ </D:responsedescription>
+ </D:response>
+ <D:responsedescription> There has been an access violation error.
+ </D:responsedescription>
+</D:multistatus>
diff --git a/test/dav10 b/test/dav10
new file mode 100644
index 0000000..4b00da4
--- /dev/null
+++ b/test/dav10
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<D:owner xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:href>
+</D:owner>
diff --git a/test/dav11 b/test/dav11
new file mode 100644
index 0000000..8ac23d6
--- /dev/null
+++ b/test/dav11
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<D:prop xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:lockdiscovery>
+ <D:activelock>
+ <D:locktype>write</D:locktype>
+ <D:lockscope>exclusive</D:lockscope>
+ <D:addlocks/>
+ <D:owner>
+ <D:href>
+ http://www.ics.uci.edu/~ejw/contact.html
+ </D:href>
+ </D:owner>
+ <D:timeout>Second-604800</D:timeout>
+ <D:locktoken>
+ <D:href>
+ opaquelocktoken:xyz122393481230912asdfa09s8df09s7df
+ </D:href>
+ </D:locktoken>
+ </D:activelock>
+ </D:lockdiscovery>
+</D:prop>
diff --git a/test/dav12 b/test/dav12
new file mode 100644
index 0000000..d8d03fe
--- /dev/null
+++ b/test/dav12
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<D:href xmlns:D="http://www.ietf.org/standards/dav/">http://www.ics.uci.edu/~ejw/contact.html</D:href>
diff --git a/test/dav13 b/test/dav13
new file mode 100644
index 0000000..f44ae38
--- /dev/null
+++ b/test/dav13
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:href>
+ http://webdav.sb.aol.com/workspace/webdav/proposal.doc
+ </D:href>
+ <D:href>
+ http://webdav.sb.aol.com/workspace/webdav/
+ </D:href>
+ <D:status>HTTP/1.1 202 Accepted</D:status>
+ </D:response>
+ <D:response>
+ <D:href>http://foo.bar/blah</D:href>
+ <D:status>HTTP/1.1 403 Forbidden</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/test/dav15 b/test/dav15
new file mode 100644
index 0000000..b80802e
--- /dev/null
+++ b/test/dav15
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<D:prop xmlns:D="http://www.ietf.org/standards/dav/" xmlns:F="http://www.foocorp.com/Project/">
+ <D:Source>
+ <D:link>
+ <F:projfiles>Source</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/main.c</D:dst>
+ </D:link>
+ <D:link>
+ <F:projfiles>Library</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/main.lib</D:dst>
+ </D:link>
+ <D:link>
+ <F:projfiles>Makefile</F:projfiles>
+ <D:src>http://foo.bar/program</D:src>
+ <D:dst>http://foo.bar/src/makefile</D:dst>
+ </D:link>
+ </D:Source>
+</D:prop>
diff --git a/test/dav16 b/test/dav16
new file mode 100644
index 0000000..9a7dc36
--- /dev/null
+++ b/test/dav16
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<D:propfind xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:prop>
+ <lockdiscovery/>
+ </D:prop>
+</D:propfind>
diff --git a/test/dav17 b/test/dav17
new file mode 100644
index 0000000..1137662
--- /dev/null
+++ b/test/dav17
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:prop>
+ <D:lockdiscovery>
+ <D:activelock>
+ <D:locktype>write</D:locktype>
+ <D:lockscope>exclusive</D:lockscope>
+ <D:addlocks>
+ <D:href>http://foo.com/doc/</D:href>
+ </D:addlocks>
+ <D:owner>Jane Smith</D:owner>
+ <D:timeout>Infinite</D:timeout>
+ <D:locktoken>
+ <D:href>iamuri:unique!!!!!</D:href>
+ </D:locktoken>
+ </D:activelock>
+ </D:lockdiscovery>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/test/dav18 b/test/dav18
new file mode 100644
index 0000000..3de1c19
--- /dev/null
+++ b/test/dav18
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<D:propfind xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:prop>
+ <supportedlock/>
+ </D:prop>
+</D:propfind>
diff --git a/test/dav19 b/test/dav19
new file mode 100644
index 0000000..9535ffc
--- /dev/null
+++ b/test/dav19
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:prop>
+ <D:supportedlock>
+ <D:LockEntry>
+ <D:locktype>Write</D:locktype>
+ <D:lockscope>Exclusive</D:lockscope>
+ </D:LockEntry>
+ <D:LockEntry>
+ <D:locktype>Write</D:locktype>
+ <D:lockscope>Shared</D:lockscope>
+ </D:LockEntry>
+ </D:supportedlock>
+ </D:prop>
+ <D:status>HTTP/1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/test/dav2 b/test/dav2
new file mode 100644
index 0000000..f831b4b
--- /dev/null
+++ b/test/dav2
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<S:multistatus xmlns:S="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema/">
+ <S:response>
+ <S:href>http://www.foo.bar/container/</S:href>
+ <S:prop>
+ <R:bigbox>
+ <R:BoxType>Box type A</R:BoxType>
+ </R:bigbox>
+ <R:author>
+ <R:Name>Hadrian</R:Name>
+ </R:author>
+ </S:prop>
+ <S:status>HTTP 1.1 200 OK</S:status>
+ </S:response>
+ <S:response>
+ <S:href>http://www.foo.bar/container/index.html</S:href>
+ <S:prop>
+ <R:bigbox>
+ <R:BoxType>Box type B</R:BoxType>
+ </R:bigbox>
+ </S:prop>
+ <S:status>HTTP 1.1 200 OK</S:status>
+ </S:response>
+</S:multistatus>
diff --git a/test/dav3 b/test/dav3
new file mode 100644
index 0000000..986b3fe
--- /dev/null
+++ b/test/dav3
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:R="http://www.foo.bar/boxschema/">
+ <D:response>
+ <D:href>http://www.foo.bar/container/</D:href>
+ <D:prop>
+ <R:bigbox/>
+ <R:author/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:href>http://www.foo.bar/container/index.html</D:href>
+ <D:prop>
+ <R:bigbox/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/test/dav4 b/test/dav4
new file mode 100644
index 0000000..9ab7ceb
--- /dev/null
+++ b/test/dav4
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<D:propertyupdate xmlns:D="http://www.ietf.org/standards/dav/" xmlns:Z="http://www.w3.com/standards/z39.50/">
+ <D:set>
+ <D:prop>
+ <Z:authors>
+ <Z:Author>Jim Whitehead</Z:Author>
+ <Z:Author>Roy Fielding</Z:Author>
+ </Z:authors>
+ </D:prop>
+ </D:set>
+ <D:remove>
+ <D:prop>
+ <Z:Copyright-Owner/>
+ </D:prop>
+ </D:remove>
+</D:propertyupdate>
diff --git a/test/dav5 b/test/dav5
new file mode 100644
index 0000000..68ebab9
--- /dev/null
+++ b/test/dav5
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/" xmlns:Z="http://www.w3.com/standards/z39.50/">
+ <D:response>
+ <D:prop>
+ <Z:Authors/>
+ </D:prop>
+ <D:status>HTTP/1.1 420 Method Failure</D:status>
+ </D:response>
+ <D:response>
+ <D:prop>
+ <Z:Copyright-Owner/>
+ </D:prop>
+ <D:status>HTTP/1.1 409 Conflict</D:status>
+ </D:response>
+ <D:responsedescription> Copyright Owner can not be deleted or
+altered.</D:responsedescription>
+</D:multistatus>
diff --git a/test/dav6 b/test/dav6
new file mode 100644
index 0000000..3d0de24
--- /dev/null
+++ b/test/dav6
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<D:multistatus xmlns:D="http://www.ietf.org/standards/dav/">
+ <D:response>
+ <D:href>http://www.microsoft.com/user/yarong/dav_drafts/
+ </D:href>
+ <D:prop>
+ <D:resourcetype>
+ <D:collection/>
+ </D:resourcetype>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+ <D:response>
+ <D:href>
+ http://www.microsoft.com/user/yarong/dav_drafts/base
+ </D:href>
+ <D:prop>
+ <D:resourcetype/>
+ </D:prop>
+ <D:status>HTTP 1.1 200 OK</D:status>
+ </D:response>
+</D:multistatus>
diff --git a/test/dav7 b/test/dav7
new file mode 100644
index 0000000..ec4a952
--- /dev/null
+++ b/test/dav7
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource1</d:href>
+ <d:href>http://www.foo.bar/container/resource2</d:href>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/</d:href>
+ <d:status>HTTP/1.1 420 Method Failure</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource3</d:href>
+ <d:status>HTTP/1.1 412 Precondition Failed</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/test/dav8 b/test/dav8
new file mode 100644
index 0000000..7f99baf
--- /dev/null
+++ b/test/dav8
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/resource1</d:href>
+ <d:href>http://www.foo.bar/othercontainer/resource2</d:href>
+ <d:href>http://www.foo.bar/othercontainer/</d:href>
+ <d:href>http://www.foo.bar/othercontainer/R2/D2</d:href>
+ <d:status>HTTP/1.1 201 Created</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/R2/</d:href>
+ <d:status>HTTP/1.1 412 Precondition Failed</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/test/dav9 b/test/dav9
new file mode 100644
index 0000000..8ed63b8
--- /dev/null
+++ b/test/dav9
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<d:multistatus xmlns:d="http://www.ietf.org/standards/dav/">
+ <d:response>
+ <d:href>http://www.foo.bar/container/resource1</d:href>
+ <d:href>http://www.foo.bar/container/resource2</d:href>
+ <d:href>http://www.foo.bar/container/</d:href>
+ <d:href>http://www.foo.bar/container/C2/R2</d:href>
+ <d:status>HTTP/1.1 201 Created</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/container/C2</d:href>
+ <d:status>HTTP/1.1 420 Method Failure</d:status>
+ </d:response>
+ <d:response>
+ <d:href>http://www.foo.bar/othercontainer/C2</d:href>
+ <d:status>HTTP/1.1 409 Conflict</d:status>
+ </d:response>
+</d:multistatus>
diff --git a/test/defattr.xml b/test/defattr.xml
new file mode 100644
index 0000000..3f16a50
--- /dev/null
+++ b/test/defattr.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc
+ xmlns CDATA #FIXED "http://www.example.com/">
+]>
+<doc/>
diff --git a/test/defattr2.xml b/test/defattr2.xml
new file mode 100644
index 0000000..ab50709
--- /dev/null
+++ b/test/defattr2.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc
+ defatt (0|1) "0"
+ xmlns:tst CDATA #FIXED "http://example.org"
+ tst:att (0|1) "1">
+]>
+<doc att="1"/>
diff --git a/test/dia1 b/test/dia1
new file mode 100644
index 0000000..207bd73
--- /dev/null
+++ b/test/dia1
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true">
+ <dia:object type="Standard - Line" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="1.95,6.85"/>
+ <dia:point val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O2" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="2.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/test/dia2 b/test/dia2
new file mode 100644
index 0000000..207bd73
--- /dev/null
+++ b/test/dia2
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true">
+ <dia:object type="Standard - Line" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="1.95,6.85"/>
+ <dia:point val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="start_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O2" connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="2.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.1"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="line_style">
+ <dia:enum val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/test/dtd1 b/test/dtd1
new file mode 100644
index 0000000..35c9dc7
--- /dev/null
+++ b/test/dtd1
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE MEMO PUBLIC "-//SGMLSOURCE//DTD MEMO//EN"
+ "http://www.sgmlsource.com/dtds/memo.dtd">
+<MEMO>
+</MEMO>
diff --git a/test/dtd10 b/test/dtd10
new file mode 100644
index 0000000..f5e49e7
--- /dev/null
+++ b/test/dtd10
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b)+ , c , d)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><c> is a</c><d> valid document</d></doc>
diff --git a/test/dtd11 b/test/dtd11
new file mode 100644
index 0000000..bdd512b
--- /dev/null
+++ b/test/dtd11
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc val CDATA #IMPLIED>
+]>
+<doc val="v1"/>
diff --git a/test/dtd12 b/test/dtd12
new file mode 100644
index 0000000..a0fbf22
--- /dev/null
+++ b/test/dtd12
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY YN '"Yes"' >
+<!ENTITY WhatHeSaid "He said &YN;" >
+]>
+<doc>&WhatHeSaid;</doc>
diff --git a/test/dtd13 b/test/dtd13
new file mode 100644
index 0000000..d18d00c
--- /dev/null
+++ b/test/dtd13
@@ -0,0 +1,6 @@
+<!-- comment before the DTD -->
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<!-- comment after the DTD -->
+<doc/>
diff --git a/test/dtd2 b/test/dtd2
new file mode 100644
index 0000000..3bcc101
--- /dev/null
+++ b/test/dtd2
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>This is a valid document !</doc>
diff --git a/test/dtd3 b/test/dtd3
new file mode 100644
index 0000000..63f44a5
--- /dev/null
+++ b/test/dtd3
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<doc>This is a valid document !</doc>
+
diff --git a/test/dtd4 b/test/dtd4
new file mode 100644
index 0000000..5457b91
--- /dev/null
+++ b/test/dtd4
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>]>
+<doc/>
diff --git a/test/dtd5 b/test/dtd5
new file mode 100644
index 0000000..a33889b
--- /dev/null
+++ b/test/dtd5
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | a | b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a> is a <b>valid</b> document</doc>
diff --git a/test/dtd6 b/test/dtd6
new file mode 100644
index 0000000..35e63fc
--- /dev/null
+++ b/test/dtd6
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a | b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a><b> is a valid</b><a> document</a></doc>
diff --git a/test/dtd7 b/test/dtd7
new file mode 100644
index 0000000..b151c21
--- /dev/null
+++ b/test/dtd7
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a , b)*>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+]>
+<doc><a>This</a><b> is a valid document</b></doc>
diff --git a/test/dtd8 b/test/dtd8
new file mode 100644
index 0000000..ce7a291
--- /dev/null
+++ b/test/dtd8
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b) , (c | d))+>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><c> is a valid document</c></doc>
diff --git a/test/dtd9 b/test/dtd9
new file mode 100644
index 0000000..144b8c5
--- /dev/null
+++ b/test/dtd9
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((a | b | c) , d)?>
+<!ELEMENT a (#PCDATA)>
+<!ELEMENT b (#PCDATA)>
+<!ELEMENT c (#PCDATA)>
+<!ELEMENT d (#PCDATA)>
+]>
+<doc><b>This</b><d> is a valid document</d></doc>
diff --git a/test/dtds/eve.dtd b/test/dtds/eve.dtd
new file mode 100644
index 0000000..b1fc883
--- /dev/null
+++ b/test/dtds/eve.dtd
@@ -0,0 +1,4 @@
+<!ENTITY % local.p.class "">
+<!ENTITY % p.class "p
+ %local.p.class;">
+
diff --git a/test/ebcdic_566012.xml b/test/ebcdic_566012.xml
new file mode 100644
index 0000000..09b4e7b
--- /dev/null
+++ b/test/ebcdic_566012.xml
@@ -0,0 +1 @@
+Lo§”“@¥…™¢‰–•~ñKð@…•ƒ–„‰•‡~ÉÂÔ`ññôñ@on%L£…¢£@££™~JàZ@an% \ No newline at end of file
diff --git a/test/emptycdata.xml b/test/emptycdata.xml
new file mode 100644
index 0000000..bc98388
--- /dev/null
+++ b/test/emptycdata.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<![CDATA[]]>
+</html>
diff --git a/test/ent1 b/test/ent1
new file mode 100644
index 0000000..3e24756
--- /dev/null
+++ b/test/ent1
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE>
+ &xml;
+</EXAMPLE>
diff --git a/test/ent10 b/test/ent10
new file mode 100644
index 0000000..4778d89
--- /dev/null
+++ b/test/ent10
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE rnode [
+<!ELEMENT rnode (f)>
+
+<!ELEMENT f (#PCDATA)>
+<!ATTLIST f
+ att1 CDATA #FIXED 'J'>
+
+<!ENTITY f
+ "
+ <f>
+ hello world
+ </f>
+ "
+>
+]>
+
+<rnode>
+ &f;
+</rnode>
+
diff --git a/test/ent11 b/test/ent11
new file mode 100644
index 0000000..6c611c1
--- /dev/null
+++ b/test/ent11
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE doc [
+ <!ENTITY newl "&#13;">
+]>
+
+<doc>&newl;</doc>
diff --git a/test/ent12 b/test/ent12
new file mode 100644
index 0000000..f495831
--- /dev/null
+++ b/test/ent12
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ENTITY foo 'abc'>
+<!ENTITY bar 'def'>
+]>
+<root attribute="&foo;">
+ <element>&bar;</element>
+</root>
diff --git a/test/ent13 b/test/ent13
new file mode 100644
index 0000000..f5ebd89
--- /dev/null
+++ b/test/ent13
@@ -0,0 +1,6 @@
+<?xml version='1.0' ?>
+<!DOCTYPE test [
+<!ENTITY ampproblem '&amp;'>
+]>
+<t a="&ampproblem;">a</t>
+
diff --git a/test/ent2 b/test/ent2
new file mode 100644
index 0000000..155e2d2
--- /dev/null
+++ b/test/ent2
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+<!ENTITY title PUBLIC "-//MY-TITLE//FR" "title.xml">
+<!ENTITY image SYSTEM "img.gif" NDATA GIF>
+]>
+<EXAMPLE>
+ &title;
+ This text is about XML, the &xml; and this is an embedded <IMG src="image"/>
+</EXAMPLE>
+
diff --git a/test/ent3 b/test/ent3
new file mode 100644
index 0000000..f9803b8
--- /dev/null
+++ b/test/ent3
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE prop1="a&amp;b" prop2="&xml;">
+ Test of entities in attributes.
+</EXAMPLE>
+
diff --git a/test/ent4 b/test/ent4
new file mode 100644
index 0000000..e668b40
--- /dev/null
+++ b/test/ent4
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "Extensible Markup Language">
+]>
+<EXAMPLE >
+ Test of &amp;amp; behaviour a&amp;b .
+</EXAMPLE>
+
diff --git a/test/ent5 b/test/ent5
new file mode 100644
index 0000000..adb9ea7
--- /dev/null
+++ b/test/ent5
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<EXAMPLE>
+ This is an inverted exclamation sign &#xA1;
+ This is a space &#32;
+</EXAMPLE>
diff --git a/test/ent6 b/test/ent6
new file mode 100644
index 0000000..40b2f12
--- /dev/null
+++ b/test/ent6
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]>
+<doc/>
diff --git a/test/ent7 b/test/ent7
new file mode 100644
index 0000000..3ef2030
--- /dev/null
+++ b/test/ent7
@@ -0,0 +1,7 @@
+<!DOCTYPE item [
+<!ENTITY % sampleEnt "<!ELEMENT item (para)+>">
+<!ENTITY sampleEnt "the hyacinth girl">
+%sampleEnt;
+<!ELEMENT para (#PCDATA)>
+]>
+<item><para>'they called me &sampleEnt;'</para></item>
diff --git a/test/ent8 b/test/ent8
new file mode 100644
index 0000000..5eeccf2
--- /dev/null
+++ b/test/ent8
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [
+<!ENTITY test1 "test 1">
+<!ENTITY test2 "test 2">
+]>
+<doc>
+ <Content>Reten&#231;&#227;o</Content>
+ <Content>&lt;&gt;</Content>
+ <Content>&test1;&test2;</Content>
+</doc>
diff --git a/test/ent9 b/test/ent9
new file mode 100644
index 0000000..5db63ba
--- /dev/null
+++ b/test/ent9
@@ -0,0 +1,61 @@
+<!DOCTYPE doc [
+<!ENTITY test1 "<a/>,<b/>,<c/>,<d/>">
+]>
+<doc>
+ <ent>&test1;</ent>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <p> WE need lot of garbage now to trigger the problem</p>
+ <ent>&test1;</ent>
+</doc>
+
diff --git a/test/errors/attr1.xml b/test/errors/attr1.xml
new file mode 100644
index 0000000..96be477
--- /dev/null
+++ b/test/errors/attr1.xml
@@ -0,0 +1 @@
+<foo foo="oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
diff --git a/test/errors/attr2.xml b/test/errors/attr2.xml
new file mode 100644
index 0000000..e230c84
--- /dev/null
+++ b/test/errors/attr2.xml
@@ -0,0 +1 @@
+<foo foo=">oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
diff --git a/test/errors/attr3.xml b/test/errors/attr3.xml
new file mode 100644
index 0000000..e2567f5
--- /dev/null
+++ b/test/errors/attr3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
+<!ATTLIST doc a1 CDATA "z1">
+]>
+<doc></doc>
diff --git a/test/errors/attr4.xml b/test/errors/attr4.xml
new file mode 100644
index 0000000..553bbce
--- /dev/null
+++ b/test/errors/attr4.xml
@@ -0,0 +1 @@
+<ROOT attr="XY"/>
diff --git a/test/errors/cdata.xml b/test/errors/cdata.xml
new file mode 100644
index 0000000..8f2bc09
--- /dev/null
+++ b/test/errors/cdata.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<A><![CDATA[Cár]]></A>
diff --git a/test/errors/charref1.xml b/test/errors/charref1.xml
new file mode 100644
index 0000000..11423df
--- /dev/null
+++ b/test/errors/charref1.xml
@@ -0,0 +1 @@
+<bla>&#010100000000000000000000000000000000000000000000000060;</bla>
diff --git a/test/errors/comment1.xml b/test/errors/comment1.xml
new file mode 100644
index 0000000..b02bb17
--- /dev/null
+++ b/test/errors/comment1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x0e
+ in p02:  -->
+<book/>
diff --git a/test/errors/content1.xml b/test/errors/content1.xml
new file mode 100644
index 0000000..7264694
--- /dev/null
+++ b/test/errors/content1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing closing bracket in choice *-->
+<!ELEMENT aElement (a |b * >
+]>
+<root>Any content</root>
+
diff --git a/test/errors/dtd13 b/test/errors/dtd13
new file mode 100644
index 0000000..d7658b0
--- /dev/null
+++ b/test/errors/dtd13
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY EndAttr "27'" >
+]>
+<doc>
+<element attribute='a-&EndAttr;>
+</doc>
diff --git a/test/errors/extparsedent.xml b/test/errors/extparsedent.xml
new file mode 100644
index 0000000..07e4c54
--- /dev/null
+++ b/test/errors/extparsedent.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ENTITY c PUBLIC "bar" "/etc/doesnotexist">
+]>
+<root>&c;</root>
diff --git a/test/errors/name.xml b/test/errors/name.xml
new file mode 100644
index 0000000..0fc34b4
--- /dev/null
+++ b/test/errors/name.xml
@@ -0,0 +1 @@
+<foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
diff --git a/test/errors/name2.xml b/test/errors/name2.xml
new file mode 100644
index 0000000..af3592b
--- /dev/null
+++ b/test/errors/name2.xml
@@ -0,0 +1 @@
+<foo foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
diff --git a/test/eve.xml b/test/eve.xml
new file mode 100644
index 0000000..c6ca1c7
--- /dev/null
+++ b/test/eve.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE spec PUBLIC "-//testspec//" "dtds/eve.dtd" [
+<!ENTITY iso6.doc.date '29-May-1999'>
+]>
+<spec>
+</spec>
diff --git a/test/expr/base b/test/expr/base
new file mode 100644
index 0000000..7ba11e2
--- /dev/null
+++ b/test/expr/base
@@ -0,0 +1,86 @@
+=>a
+1 a
+1 a | a
+0 b
+=>a|b
+1 a
+1 b
+1 a | b
+0 a{0}
+0 b{0}
+=>a | b | a
+1 a
+1 b
+1 a | b
+1 b | a
+1 a | b | b
+1 a | b | a
+1 b | a | b
+=>a,a
+1 a,a
+0 a
+0 a,a,a
+=>a{0,3}
+1 a{3}
+1 a
+1 a,a,a
+1 a{1,3}
+=>(a|b){0,4}
+1 a
+1 b
+1 a,b
+1 a,b,a,b
+0 b,a,b,a,b
+1 b,a{1,3}
+1 a{1,3},b
+0 a{1,3},b,a
+0 a{1,4},b
+0 a{0,5}
+1 (b|a){0,4}
+0 (b|a){0,4},a
+1 (a,b){0,2}
+1 (a,b){0,1},b
+=> a*
+1 a
+1 a?
+1 a+
+1 a*
+1 a{0}
+=> a+
+1 a
+0 a?
+1 a+
+0 a*
+1 a?,a
+1 a,a*
+1 a*,a
+1 a?,a*,a
+1 a*,a?,a
+=>(a|b)*
+1 a
+1 b
+1 a,b
+1 a,b,a,b
+1 (b|a){0,4}
+1 (b|a){0,4},a
+1 a*
+1 b*
+1 (a|b)*
+1 a{1,3}
+1 b,a{1,3}
+1 a{1,3},b
+1 a*,(a|b)*
+1 a*,b{2,5}
+1 a*,(a|b)*,b{2,5}
+=>(a|b)+,(c|d)
+1 a+,c
+0 a*,c
+1 a,c
+1 a,b*,a*,c
+# more complex
+=>(a|b),(a|c){0,100}
+1 a{0,100},(a|c)
+0 a{0,101},(a|c)
+# the example from cmsmcq at extreme markup 05
+=>(a, ((b, c, d){0,5}, e{0,1}){0,4}, f)
+1 (a, b, (c, d, b){2,3}, c, d, e, f)
diff --git a/test/intsubset.xml b/test/intsubset.xml
new file mode 100644
index 0000000..709de15
--- /dev/null
+++ b/test/intsubset.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!-- " -->
+]>
+<root/>
diff --git a/test/intsubset2.xml b/test/intsubset2.xml
new file mode 100644
index 0000000..4ae845a
--- /dev/null
+++ b/test/intsubset2.xml
@@ -0,0 +1,282 @@
+<?xml version="1.0"?>
+<!DOCTYPE kanjidic2 [
+ <!-- Version 1.3
+ This is the DTD of the XML-format kanji file combining information from
+ the KANJIDIC and KANJD212 files. It is intended to be largely self-
+ documenting, with each field being accompanied by an explanatory
+ comment.
+
+ The file covers the following kanji:
+ (a) the 6,355 kanji from JIS X 0208;
+ (b) the 5,801 kanji from JIS X 0212;
+ (c) the 3,625 kanji from JIS X 0213 as follows:
+ (i) the 2,741 kanji which are also in JIS X 0212 have
+ JIS X 0213 code-points (kuten) added to the existing entry;
+ (ii) the 884 "new" kanji have new entries.
+
+ At the end of the explanation for a number of fields there is a tag
+ with the format [N]. This indicates the leading letter(s) of the
+ equivalent field in the KANJIDIC and KANJD212 files.
+
+ The KANJIDIC documentation should also be read for additional
+ information about the information in the file.
+ -->
+<!ELEMENT kanjidic2 (header,character*)>
+<!ELEMENT header (file_version,database_version,date_of_creation)>
+<!--
+ The single header element will contain identification information
+ about the version of the file
+ -->
+<!ELEMENT file_version (#PCDATA)>
+<!--
+ This field denotes the version of kanjidic2 structure, as more
+ than one version may exist.
+ -->
+<!ELEMENT database_version (#PCDATA)>
+<!--
+ The version of the file, in the format YYYY-NN, where NN will be
+ a number starting with 01 for the first version released in a
+ calendar year, then increasing for each version in that year.
+ -->
+<!ELEMENT date_of_creation (#PCDATA)>
+<!--
+ The date the file was created in international format (YYYY-MM-DD).
+ -->
+<!ELEMENT character (literal,codepoint, radical, misc, dic_number?, query_code?, reading_meaning?,nanori?)*>
+<!ELEMENT literal (#PCDATA)>
+<!--
+ The character itself in UTF8 coding.
+ -->
+<!ELEMENT codepoint (cp_value+)>
+ <!--
+ The codepoint element states the code of the character in the various
+ character set standards.
+ -->
+<!ELEMENT cp_value (#PCDATA)>
+ <!--
+ The cp_value contains the codepoint of the character in a particular
+ standard. The standard will be identified in the cp_type attribute.
+ -->
+<!ATTLIST cp_value cp_type CDATA #REQUIRED>
+ <!--
+ The cp_type attribute states the coding standard applying to the
+ element. The values assigned so far are:
+ jis208 - JIS X 0208-1997 - kuten coding (nn-nn)
+ jis212 - JIS X 0212-1990 - kuten coding (nn-nn)
+ jis213 - JIS X 0213-2000 - kuten coding (p-nn-nn)
+ ucs - Unicode 4.0 - hex coding (4 or 5 hexadecimal digits)
+ -->
+<!ELEMENT radical (rad_value+)>
+<!ELEMENT rad_value (#PCDATA)>
+ <!--
+ The radical number, in the range 1 to 214. The particular
+ classification type is stated in the rad_type attribute.
+ -->
+<!ATTLIST rad_value rad_type CDATA #REQUIRED>
+ <!--
+ The rad_type attribute states the type of radical classification.
+ classical - as recorded in the KangXi Zidian.
+ nelson - as used in the Nelson "Modern Japanese-English
+ Character Dictionary" (i.e. the Classic, not the New Nelson).
+ This will only be used where Nelson reclassified the kanji.
+ -->
+<!ELEMENT misc (grade?, stroke_count+, variant*, freq*, rad_name*)>
+<!ELEMENT grade (#PCDATA)>
+ <!--
+ The Jouyou Kanji grade level. 1 through 6 indicate the grade in which
+ the kanji is taught in Japanese schools. 8 indicates it is one of the
+ remaining Jouyou Kanji to be learned in junior high school, and 9
+ indicates it is a Jinmeiyou (for use in names) kanji. [G]
+ -->
+<!ELEMENT stroke_count (#PCDATA)>
+ <!--
+ The stroke count of the kanji, including the radical. If more than
+ one, the first is considered the accepted count, while subsequent ones
+ are common miscounts. (See Appendix E. of the KANJIDIC documentation
+ for some of the rules applied when counting strokes in some of the
+ radicals.) [S]
+ -->
+<!ELEMENT variant (#PCDATA)>
+ <!--
+ A cross-reference code to another kanji, usually regarded as a variant.
+ The type of cross-reference is given in the var_type attribute.
+ -->
+<!ATTLIST variant var_type CDATA #REQUIRED>
+ <!--
+ The var_type attribute indicates the type of variant code. The current
+ values are:
+ jis208 - in JIS X 0208 - kuten coding
+ jis212 - in JIS X 0212 - kuten coding
+ jis213 - in JIS X 0213 - kuten coding
+ deroo - De Roo number - numeric
+ njecd - Halpern NJECD index number - numeric
+ s_h - The Kanji Dictionary (Spahn & Hadamitzky) - descriptor
+ nelson - "Classic" Nelson - numeric
+ oneill - Japanese Names (O'Neill) - numeric
+ -->
+<!ELEMENT freq (#PCDATA)>
+ <!--
+ A frequency-of-use ranking. The 2,500 most-used characters have a
+ ranking; those characters that lack this field are not ranked. The
+ frequency is a number from 1 to 2,500 that expresses the relative
+ frequency of occurrence of a character in modern Japanese. This is
+ based on a survey in newspapers, so it is biassed towards kanji
+ used in newspaper articles. The discrimination between the less
+ frequently used kanji is not strong.
+ -->
+<!ELEMENT rad_name (#PCDATA)>
+ <!--
+ When the kanji is itself a radical and has a name, this element
+ contains the name (in hiragana.) [T2]
+ -->
+<!ELEMENT dic_number (dic_ref+)>
+ <!--
+ This element contains the index numbers and similar unstructured
+ information such as page numbers in a number of published dictionaries,
+ and instructional books on kanji.
+ -->
+<!ELEMENT dic_ref (#PCDATA)>
+ <!--
+ Each dic_ref contains an index number. The particular dictionary,
+ etc. is defined by the dr_type attribute.
+ -->
+<!ATTLIST dic_ref dr_type CDATA #REQUIRED>
+ <!--
+ The dr_type defines the dictionary or reference book, etc. to which
+ dic_ref element applies. The initial allocation is:
+ nelson_c - "Modern Reader's Japanese-English Character Dictionary",
+ edited by Andrew Nelson (now published as the "Classic"
+ Nelson).
+ nelson_n - "The New Nelson Japanese-English Character Dictionary",
+ edited by John Haig.
+ halpern_njecd - "New Japanese-English Character Dictionary",
+ edited by Jack Halpern.
+ halpern_kkld - "Kanji Learners Dictionary" (Kodansha) edited by
+ Jack Halpern.
+ heisig - "Remembering The Kanji" by James Heisig.
+ gakken - "A New Dictionary of Kanji Usage" (Gakken)
+ oneill_names - "Japanese Names", by P.G. O'Neill.
+ oneill_kk - "Essential Kanji" by P.G. O'Neill.
+ moro - "Daikanwajiten" compiled by Morohashi. For some kanji two
+ additional attributes are used: m_vol: the volume of the
+ dictionary in which the kanji is found, and m_page: the page
+ number in the volume.
+ henshall - "A Guide To Remembering Japanese Characters" by
+ Kenneth G. Henshall.
+ sh_kk - "Kanji and Kana" by Spahn and Hadamitzky.
+ sakade - "A Guide To Reading and Writing Japanese" edited by
+ Florence Sakade.
+ henshall3 - "A Guide To Reading and Writing Japanese" 3rd
+ edition, edited by Henshall, Seeley and De Groot.
+ tutt_cards - Tuttle Kanji Cards, compiled by Alexander Kask.
+ crowley - "The Kanji Way to Japanese Language Power" by
+ Dale Crowley.
+ kanji_in_context - "Kanji in Context" by Nishiguchi and Kono.
+ busy_people - "Japanese For Busy People" vols I-III, published
+ by the AJLT. The codes are the volume.chapter.
+ kodansha_compact - the "Kodansha Compact Kanji Guide".
+ -->
+<!ATTLIST dic_ref m_vol CDATA #IMPLIED>
+ <!--
+ See above under "moro".
+ -->
+<!ATTLIST dic_ref m_page CDATA #IMPLIED>
+ <!--
+ See above under "moro".
+ -->
+<!ELEMENT query_code (q_code+)>
+ <!--
+ These codes contain information relating to the glyph, and can be used
+ for finding a required kanji. The type of code is defined by the
+ qc_type attribute.
+ -->
+<!ELEMENT q_code (#PCDATA)>
+ <!--
+ The q_code contains the actual query-code value, according to the
+ qc_type attribute.
+ -->
+<!ATTLIST q_code qc_type CDATA #REQUIRED>
+ <!--
+ The q_code attribute defines the type of query code. The current values
+ are:
+ skip - Halpern's SKIP (System of Kanji Indexing by Patterns)
+ code. The format is n-nn-nn. See the KANJIDIC documentation
+ for a description of the code and restrictions on the
+ commercial use of this data. [P]
+
+ sh_desc - the descriptor codes for The Kanji Dictionary (Tuttle
+ 1996) by Spahn and Hadamitzky. They are in the form nxnn.n,
+ e.g. 3k11.2, where the kanji has 3 strokes in the
+ identifying radical, it is radical "k" in the SH
+ classification system, there are 11 other strokes, and it is
+ the 2nd kanji in the 3k11 sequence. (I am very grateful to
+ Mark Spahn for providing the list of these descriptor codes
+ for the kanji in this file.) [I]
+ four_corner - the "Four Corner" code for the kanji. This is a code
+ invented by Wang Chen in 1928. See the KANJIDIC documentation
+ for an overview of the Four Corner System. [Q]
+
+ deroo - the codes developed by the late Father Joseph De Roo, and
+ published in his book "2001 Kanji" (Bojinsha). Fr De Roo
+ gave his permission for these codes to be included. [DR]
+ misclass - a possible misclassification of the kanji according
+ to one of the code types. (See the "Z" codes in the KANJIDIC
+ documentation for more details.)
+
+ -->
+<!ELEMENT reading_meaning (rmgroup*, nanori*)>
+ <!--
+ The readings for the kanji in several languages, and the meanings, also
+ in several languages. The readings and meanings are grouped to enable
+ the handling of the situation where the meaning is differentiated by
+ reading. [T1]
+ -->
+<!ELEMENT nanori (#PCDATA)>
+ <!--
+ Japanese readings that are now only associated with names.
+ -->
+<!ELEMENT rmgroup (reading*, meaning*)>
+<!ELEMENT reading (#PCDATA)>
+ <!--
+ The reading element contains the reading or pronunciation
+ of the kanji.
+ -->
+<!ATTLIST reading r_type CDATA #REQUIRED>
+ <!--
+ The r_type attribute defines the type of reading in the reading
+ element. The current values are:
+ pinyin - the modern PinYin romanization of the Chinese reading
+ of the kanji. The tones are represented by a concluding
+ digit. [Y]
+ korean_r - the romanized form of the Korean reading(s) of the
+ kanji. The readings are in the (Republic of Korea) Ministry
+ of Education style of romanization. [W]
+ korean_h - the Korean reading(s) of the kanji in hangul.
+ ja_on - the "on" Japanese reading of the kanji, in katakana. A
+ second attribute r_status, if present, will indicate with
+ a value of "jy" whether the reading is approved for a
+ "Jouyou kanji".
+ ja_kun - the "kun" Japanese reading of the kanji, in hiragana.
+ Where relevant the okurigana is also included separated by a
+ ".". Readings associated with prefixes and suffixes are
+ marked with a "-". A second attribute r_status, if present,
+ will indicate with a value of "jy" whether the reading is
+ approved for a "Jouyou kanji".
+ -->
+<!ATTLIST reading r_status CDATA #IMPLIED>
+ <!--
+ See under ja_on and ja_kun above.
+ -->
+<!ELEMENT meaning (#PCDATA)>
+ <!--
+ The meaning associated with the kanji.
+ -->
+<!ATTLIST meaning m_lang CDATA #IMPLIED>
+ <!--
+ The m_lang attribute defines the target language of the meaning. It
+ will be coded using the two-letter language code from the ISO 639
+ standard. When absent, the value "en" (i.e. English) is implied. [{}]
+ -->
+] >
+<kanjidic2>
+</kanjidic2>
diff --git a/test/isolat1 b/test/isolat1
new file mode 100644
index 0000000..1e5a059
--- /dev/null
+++ b/test/isolat1
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<très>là</très>
diff --git a/test/isolat2 b/test/isolat2
new file mode 100644
index 0000000..8c290b9
--- /dev/null
+++ b/test/isolat2
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<tst>
+
+ The following table displays the characters in ISO 8859
+ Latin-1, which are printable and unlisted in the ascii
+ manual page.
+
+ Oct Dec Hex Char Description
+ --------------------------------------------------------------------
+ 240 160 A0 NO-BREAK SPACE
+ 241 161 A1 ¡ INVERTED EXCLAMATION MARK
+ 242 162 A2 ¢ CENT SIGN
+ 243 163 A3 £ POUND SIGN
+ 244 164 A4 ¤ CURRENCY SIGN
+ 245 165 A5 ¥ YEN SIGN
+ 246 166 A6 ¦ BROKEN BAR
+ 247 167 A7 § SECTION SIGN
+ 250 168 A8 ¨ DIAERESIS
+ 251 169 A9 © COPYRIGHT SIGN
+ 252 170 AA ª FEMININE ORDINAL INDICATOR
+ 253 171 AB « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 254 172 AC ¬ NOT SIGN
+ 255 173 AD ­ SOFT HYPHEN
+ 256 174 AE ® REGISTERED SIGN
+ 257 175 AF ¯ MACRON
+ 260 176 B0 ° DEGREE SIGN
+ 261 177 B1 ± PLUS-MINUS SIGN
+ 262 178 B2 ² SUPERSCRIPT TWO
+ 263 179 B3 ³ SUPERSCRIPT THREE
+ 264 180 B4 ´ ACUTE ACCENT
+ 265 181 B5 µ MICRO SIGN
+ 266 182 B6 ¶ PILCROW SIGN
+ 267 183 B7 · MIDDLE DOT
+ 270 184 B8 ¸ CEDILLA
+ 271 185 B9 ¹ SUPERSCRIPT ONE
+ 272 186 BA º MASCULINE ORDINAL INDICATOR
+ 273 187 BB » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 274 188 BC ¼ VULGAR FRACTION ONE QUARTER
+ 275 189 BD ½ VULGAR FRACTION ONE HALF
+ 276 190 BE ¾ VULGAR FRACTION THREE QUARTERS
+ 277 191 BF ¿ INVERTED QUESTION MARK
+ 300 192 C0 À LATIN CAPITAL LETTER A WITH GRAVE
+ 301 193 C1 Á LATIN CAPITAL LETTER A WITH ACUTE
+ 302 194 C2 Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 303 195 C3 Ã LATIN CAPITAL LETTER A WITH TILDE
+ 304 196 C4 Ä LATIN CAPITAL LETTER A WITH DIAERESIS
+ 305 197 C5 Å LATIN CAPITAL LETTER A WITH RING ABOVE
+ 306 198 C6 Æ LATIN CAPITAL LETTER AE
+ 307 199 C7 Ç LATIN CAPITAL LETTER C WITH CEDILLA
+ 310 200 C8 È LATIN CAPITAL LETTER E WITH GRAVE
+ 311 201 C9 É LATIN CAPITAL LETTER E WITH ACUTE
+ 312 202 CA Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 313 203 CB Ë LATIN CAPITAL LETTER E WITH DIAERESIS
+ 314 204 CC Ì LATIN CAPITAL LETTER I WITH GRAVE
+ 315 205 CD Í LATIN CAPITAL LETTER I WITH ACUTE
+ 316 206 CE Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 317 207 CF Ï LATIN CAPITAL LETTER I WITH DIAERESIS
+ 320 208 D0 Ð LATIN CAPITAL LETTER ETH
+ 321 209 D1 Ñ LATIN CAPITAL LETTER N WITH TILDE
+ 322 210 D2 Ò LATIN CAPITAL LETTER O WITH GRAVE
+ 323 211 D3 Ó LATIN CAPITAL LETTER O WITH ACUTE
+ 324 212 D4 Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 325 213 D5 Õ LATIN CAPITAL LETTER O WITH TILDE
+ 326 214 D6 Ö LATIN CAPITAL LETTER O WITH DIAERESIS
+ 327 215 D7 × MULTIPLICATION SIGN
+ 330 216 D8 Ø LATIN CAPITAL LETTER O WITH STROKE
+ 331 217 D9 Ù LATIN CAPITAL LETTER U WITH GRAVE
+ 332 218 DA Ú LATIN CAPITAL LETTER U WITH ACUTE
+ 333 219 DB Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 334 220 DC Ü LATIN CAPITAL LETTER U WITH DIAERESIS
+ 335 221 DD Ý LATIN CAPITAL LETTER Y WITH ACUTE
+ 336 222 DE Þ LATIN CAPITAL LETTER THORN
+ 337 223 DF ß LATIN SMALL LETTER SHARP S
+ 340 224 E0 à LATIN SMALL LETTER A WITH GRAVE
+ 341 225 E1 á LATIN SMALL LETTER A WITH ACUTE
+ 342 226 E2 â LATIN SMALL LETTER A WITH CIRCUMFLEX
+ 343 227 E3 ã LATIN SMALL LETTER A WITH TILDE
+ 344 228 E4 ä LATIN SMALL LETTER A WITH DIAERESIS
+ 345 229 E5 å LATIN SMALL LETTER A WITH RING ABOVE
+ 346 230 E6 æ LATIN SMALL LETTER AE
+ 347 231 E7 ç LATIN SMALL LETTER C WITH CEDILLA
+ 350 232 E8 è LATIN SMALL LETTER E WITH GRAVE
+ 351 233 E9 é LATIN SMALL LETTER E WITH ACUTE
+ 352 234 EA ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+ 353 235 EB ë LATIN SMALL LETTER E WITH DIAERESIS
+ 354 236 EC ì LATIN SMALL LETTER I WITH GRAVE
+ 355 237 ED í LATIN SMALL LETTER I WITH ACUTE
+ 356 238 EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
+ 357 239 EF ï LATIN SMALL LETTER I WITH DIAERESIS
+ 360 240 F0 ð LATIN SMALL LETTER ETH
+ 361 241 F1 ñ LATIN SMALL LETTER N WITH TILDE
+ 362 242 F2 ò LATIN SMALL LETTER O WITH GRAVE
+ 363 243 F3 ó LATIN SMALL LETTER O WITH ACUTE
+ 364 244 F4 ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+ 365 245 F5 õ LATIN SMALL LETTER O WITH TILDE
+ 366 246 F6 ö LATIN SMALL LETTER O WITH DIAERESIS
+ 367 247 F7 ÷ DIVISION SIGN
+ 370 248 F8 ø LATIN SMALL LETTER O WITH STROKE
+ 371 249 F9 ù LATIN SMALL LETTER U WITH GRAVE
+ 372 250 FA ú LATIN SMALL LETTER U WITH ACUTE
+ 373 251 FB û LATIN SMALL LETTER U WITH CIRCUMFLEX
+ 374 252 FC ü LATIN SMALL LETTER U WITH DIAERESIS
+ 375 253 FD ý LATIN SMALL LETTER Y WITH ACUTE
+ 376 254 FE þ LATIN SMALL LETTER THORN
+ 377 255 FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
+
+</tst>
diff --git a/test/isolat3 b/test/isolat3
new file mode 100644
index 0000000..40fb3a0
--- /dev/null
+++ b/test/isolat3
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<rec>
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+then the replacement text for the entity "<code>book</code>" is:
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+</rec>
diff --git a/test/japancrlf.xml b/test/japancrlf.xml
new file mode 100644
index 0000000..480cb2d
--- /dev/null
+++ b/test/japancrlf.xml
@@ -0,0 +1,6 @@
+<入力メッセージ
+ xmlns="http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826">
+ <c8c:Ele
+ xmlns:c8c="http://schemas.cordys.com/webapps/1.0/bpm/c8c8b82a-0ac0-3d19-01e2-bda74af9b826"
+ />
+</入力メッセージ> \ No newline at end of file
diff --git a/test/namespaces/err_0.xml b/test/namespaces/err_0.xml
new file mode 100644
index 0000000..50bdd32
--- /dev/null
+++ b/test/namespaces/err_0.xml
@@ -0,0 +1 @@
+<foo xmlnsbar="1"/>
diff --git a/test/namespaces/err_1.xml b/test/namespaces/err_1.xml
new file mode 100644
index 0000000..eb6f43b
--- /dev/null
+++ b/test/namespaces/err_1.xml
@@ -0,0 +1 @@
+<foo xmlns:="http://example.com/"/>
diff --git a/test/namespaces/err_10.xml b/test/namespaces/err_10.xml
new file mode 100644
index 0000000..cf36261
--- /dev/null
+++ b/test/namespaces/err_10.xml
@@ -0,0 +1 @@
+<tst xmlns="http://example.com/" xmlns="http://example.com/"/>
diff --git a/test/namespaces/err_11.xml b/test/namespaces/err_11.xml
new file mode 100644
index 0000000..9d81939
--- /dev/null
+++ b/test/namespaces/err_11.xml
@@ -0,0 +1 @@
+<tst xmlns:a="http://example.com/" xmlns:a="http://example.com/"/>
diff --git a/test/namespaces/err_2.xml b/test/namespaces/err_2.xml
new file mode 100644
index 0000000..9fd51b3
--- /dev/null
+++ b/test/namespaces/err_2.xml
@@ -0,0 +1 @@
+<:/>
diff --git a/test/namespaces/err_3.xml b/test/namespaces/err_3.xml
new file mode 100644
index 0000000..3d4d439
--- /dev/null
+++ b/test/namespaces/err_3.xml
@@ -0,0 +1 @@
+<:foo/>
diff --git a/test/namespaces/err_4.xml b/test/namespaces/err_4.xml
new file mode 100644
index 0000000..9dc294e
--- /dev/null
+++ b/test/namespaces/err_4.xml
@@ -0,0 +1 @@
+<f: xmlns:f="http://example.com/foo"/>
diff --git a/test/namespaces/err_5.xml b/test/namespaces/err_5.xml
new file mode 100644
index 0000000..5943c11
--- /dev/null
+++ b/test/namespaces/err_5.xml
@@ -0,0 +1 @@
+<f:a: xmlns:f="http://example.com/foo"/>
diff --git a/test/namespaces/err_6.xml b/test/namespaces/err_6.xml
new file mode 100644
index 0000000..e3eb3b2
--- /dev/null
+++ b/test/namespaces/err_6.xml
@@ -0,0 +1 @@
+<f:a:b xmlns:f="http://example.com/foo"/>
diff --git a/test/namespaces/err_7.xml b/test/namespaces/err_7.xml
new file mode 100644
index 0000000..5bbe235
--- /dev/null
+++ b/test/namespaces/err_7.xml
@@ -0,0 +1 @@
+<f:foo/>
diff --git a/test/namespaces/err_8.xml b/test/namespaces/err_8.xml
new file mode 100644
index 0000000..8321da2
--- /dev/null
+++ b/test/namespaces/err_8.xml
@@ -0,0 +1 @@
+<tst xmlns:xml="http://example.com/"/>
diff --git a/test/namespaces/err_9.xml b/test/namespaces/err_9.xml
new file mode 100644
index 0000000..4478c60
--- /dev/null
+++ b/test/namespaces/err_9.xml
@@ -0,0 +1,2 @@
+<tst xmlns:a="http://example.com/" xmlns:b="http://example.com/"
+ a:err="1" b:err="2"/>
diff --git a/test/namespaces/reconcile/tests-to-c.xsl b/test/namespaces/reconcile/tests-to-c.xsl
new file mode 100644
index 0000000..9a0d1c6
--- /dev/null
+++ b/test/namespaces/reconcile/tests-to-c.xsl
@@ -0,0 +1,275 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text"/>
+
+ <xsl:template match="/">
+ <xsl:text><![CDATA[
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xpath.h>
+#include <libxml/xpathInternals.h>
+]]>
+</xsl:text>
+ <xsl:call-template name="serializer"/>
+ <xsl:apply-templates select="tests/test"/>
+ <xsl:text>
+
+int main(int argc, char **argv) {&#xA;</xsl:text>
+ <xsl:apply-templates select="tests/test" mode="call"/>
+ <xsl:text>
+ /* printf("finished.\n"); */
+ return (0);
+}
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tests/test" mode="call">
+ <xsl:text> nsTest_</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>();&#xA;</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="xml-text">
+ <xsl:param name="text"/>
+ <xsl:call-template name="replace-string">
+ <!-- Substitute #10 for " -->
+ <xsl:with-param name="from" select="'&#10;'"/>
+ <xsl:with-param name="to" select="'&quot;&#10;&quot;'"/>
+ <xsl:with-param name="text">
+ <xsl:call-template name="replace-string">
+ <!-- Substitute " for \" -->
+ <xsl:with-param name="from" select="'&quot;'"/>
+ <xsl:with-param name="to" select="'\&quot;'"/>
+ <xsl:with-param name="text">
+ <xsl:call-template name="replace-string">
+ <!-- Remove tabs. -->
+ <xsl:with-param name="from" select="'&#9;'"/>
+ <xsl:with-param name="to" select="''"/>
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ </xsl:template>
+
+ <xsl:template match="doc" mode="define">
+ <xsl:text> xmlDocPtr </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>;&#xA;</xsl:text>
+ <xsl:text> const char * </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>_str = "</xsl:text>
+ <xsl:call-template name="xml-text">
+ <xsl:with-param name="text" select="."/>
+ </xsl:call-template>
+ <xsl:text>";&#xA;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="expected" mode="define">
+ <xsl:text> const char * </xsl:text>
+ <xsl:text>exp_str = "</xsl:text>
+ <xsl:call-template name="xml-text">
+ <xsl:with-param name="text" select="."/>
+ </xsl:call-template>
+ <xsl:text>";&#xA;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="doc">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text> = xmlReadDoc(BAD_CAST </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>_str, NULL, NULL, 0);&#xA;</xsl:text>
+
+ <xsl:apply-templates select="following-sibling::*[1]"/>
+
+ <xsl:text> xmlFreeDoc(</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>);&#xA;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="xpath">
+ </xsl:template>
+
+ <xsl:template match="var" mode="define">
+ <xsl:text> xmlNodePtr </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>;&#xA;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="var">
+ <xsl:if test="xpath">
+ <!-- Create XPath context. -->
+ <xsl:text> /* Selecting node "</xsl:text><xsl:value-of select="@name"/><xsl:text>". */&#xA;</xsl:text>
+ <xsl:text> xp = xmlXPathNewContext(</xsl:text>
+ <xsl:value-of select="xpath/@doc"/>
+ <xsl:text>);&#xA;</xsl:text>
+ <!-- Register namespaces. -->
+ <xsl:for-each select="xpath/reg-ns">
+ <xsl:text> xmlXPathRegisterNs(xp, BAD_CAST "</xsl:text>
+ <xsl:value-of select="@prefix"/>
+ <xsl:text>", BAD_CAST "</xsl:text>
+ <xsl:value-of select="@ns"/>
+ <xsl:text>");&#xA;</xsl:text>
+ </xsl:for-each>
+ <!-- Evaluate. -->
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text> = nsSelectNode(xp, "</xsl:text>
+ <xsl:value-of select="xpath/@select-node"/>
+ <xsl:text>");&#xA;</xsl:text>
+ <xsl:text> xmlXPathFreeContext(xp);&#xA;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="following-sibling::*[1]"/>
+ </xsl:template>
+
+ <xsl:template match="reconcile-ns">
+ <xsl:text> /* Reconcile node "</xsl:text><xsl:value-of select="@ref"/><xsl:text>". */&#xA;</xsl:text>
+ <xsl:text> xmlDOMWrapReconcileNamespaces(NULL, </xsl:text>
+ <xsl:value-of select="@node"/>
+ <xsl:text>, 0);&#xA;</xsl:text>
+ <xsl:apply-templates select="following-sibling::*[1]"/>
+ </xsl:template>
+
+ <xsl:template match="remove">
+ <xsl:text> xmlDOMWrapRemoveNode(NULL, </xsl:text>
+ <xsl:value-of select="@node"/>
+ <xsl:text>->doc, </xsl:text>
+ <xsl:value-of select="@node"/>
+ <xsl:text>, 0);&#xA;</xsl:text>
+ <xsl:apply-templates select="following-sibling::*[1]"/>
+ </xsl:template>
+
+ <xsl:template match="adopt">
+ <xsl:text> /* Adopt "</xsl:text><xsl:value-of select="@node"/><xsl:text>". */&#xA;</xsl:text>
+ <xsl:text> xmlDOMWrapAdoptNode(NULL, </xsl:text>
+ <xsl:value-of select="@node"/>
+ <xsl:text>->doc, </xsl:text>
+ <xsl:value-of select="@node"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="@dest-doc"/>
+ <xsl:text>, </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@dest-parent">
+ <xsl:value-of select="@dest-parent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>NULL</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>, 0);&#xA;</xsl:text>
+ <xsl:apply-templates select="following-sibling::*[1]"/>
+ </xsl:template>
+
+ <xsl:template match="append-child">
+ <xsl:text> xmlAddChild(</xsl:text>
+ <xsl:value-of select="@parent"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="@child"/>
+ <xsl:text>);&#xA;</xsl:text>
+ <xsl:apply-templates select="following-sibling::*[1]"/>
+ </xsl:template>
+
+ <xsl:template match="expected">
+ <xsl:text> /* Serialize "</xsl:text><xsl:value-of select="@doc"/><xsl:text>". */&#xA;</xsl:text>
+ <xsl:text> result_str = nsSerializeNode(xmlDocGetRootElement(</xsl:text>
+ <xsl:value-of select="@doc"/>
+ <xsl:text>));&#xA;</xsl:text>
+ <xsl:text> /* Compare result. */
+ if (! xmlStrEqual(BAD_CAST result_str, BAD_CAST exp_str)) {
+ printf("FAILED\n");
+ printf("%s\n", (const char *) result_str);
+ printf("- - -\n");
+ printf("Expected:\n%s\n", exp_str);
+ printf("= = =\n");
+ }
+ xmlFree(result_str);&#xA;</xsl:text>
+ </xsl:template>
+
+ <!--********
+ * TEST *
+ ********-->
+ <xsl:template match="test">
+ <xsl:text>void nsTest_</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>(void) {
+ xmlChar * result_str;
+ xmlXPathContextPtr xp;
+ int memory;&#xA;</xsl:text>
+ <xsl:apply-templates select="*" mode="define"/>
+ <xsl:text>
+ memory = xmlMemUsed();
+ xmlInitParser();&#xA;&#xA;</xsl:text>
+ <xsl:apply-templates select="child::*[1]"/>
+ <xsl:text>
+ xmlCleanupParser();
+ memory = xmlMemUsed() - memory;
+
+ if (memory != 0) {
+ printf("## '%s' MEMORY leak: %d\n", "</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>", memory);
+ }
+}
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="serializer">
+ <xsl:text>
+
+xmlChar * nsSerializeNode(xmlNodePtr node) {
+ xmlChar * ret;
+
+ xmlOutputBufferPtr buf;
+ buf = xmlAllocOutputBuffer(NULL);
+ xmlNodeDumpOutput(buf, node->doc, node, 0, 0, NULL);
+ xmlOutputBufferFlush(buf);
+ ret = (xmlChar *) buf->buffer->content;
+ buf->buffer->content = NULL;
+ (void) xmlOutputBufferClose(buf);
+ return (ret);
+}
+
+xmlNodePtr nsSelectNode(xmlXPathContextPtr xp, const char * xpath) {
+ xmlXPathObjectPtr xpres;
+ xmlNodePtr ret;
+
+ xpres = xmlXPathEval(BAD_CAST xpath, xp);
+ ret = xpres->nodesetval->nodeTab[0];
+ xmlXPathFreeObject(xpres);
+ return (ret);
+}
+
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="replace-string">
+ <xsl:param name="text"/>
+ <xsl:param name="from"/>
+ <xsl:param name="to"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($text, $from)">
+
+ <xsl:variable name="before" select="substring-before($text, $from)"/>
+ <xsl:variable name="after" select="substring-after($text, $from)"/>
+ <xsl:variable name="prefix" select="concat($before, $to)"/>
+
+ <xsl:value-of select="$before"/>
+ <xsl:value-of select="$to"/>
+ <xsl:call-template name="replace-string">
+ <xsl:with-param name="text" select="$after"/>
+ <xsl:with-param name="from" select="$from"/>
+ <xsl:with-param name="to" select="$to"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/test/namespaces/reconcile/tests.xml b/test/namespaces/reconcile/tests.xml
new file mode 100644
index 0000000..c6f8c54
--- /dev/null
+++ b/test/namespaces/reconcile/tests.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0"?>
+<tests>
+ <test name="adopt_recon_default">
+
+ <doc name="doc1"><![CDATA[<p1 xmlns="urn:test:AAA"><a/></p1>]]></doc>
+ <doc name="doc2"><![CDATA[<p1 xmlns="urn:test:BBB"><b/></p1>]]></doc>
+ <doc name="doc3"><![CDATA[<p2 xmlns="urn:test:ZZZ"/>]]></doc>
+ <var name="a">
+ <xpath doc="doc1" select-node="/a:p1/a:a">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="b" >
+ <xpath doc="doc2" select-node="/b:p1/b:b">
+ <reg-ns prefix="b" ns="urn:test:BBB"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc3" select-node="/z:p2">
+ <reg-ns prefix="z" ns="urn:test:ZZZ"/>
+ </xpath>
+ </var>
+
+ <remove node="a"/>
+ <adopt dest-doc="doc3" node="a"/>
+ <append-child parent="p2" child="a"/>
+
+ <!-- This time without a previous removing. -->
+ <adopt dest-doc="doc3" node="b"/>
+ <append-child parent="p2" child="b"/>
+
+ <reconcile-ns node="p2"/>
+ <expected doc="doc3"><![CDATA[<p2 xmlns="urn:test:ZZZ"><a xmlns="urn:test:AAA"/><b xmlns="urn:test:BBB"/></p2>]]></expected>
+ </test>
+
+ <test name="adopt_recon">
+ <doc name="doc1"><![CDATA[<a:p1 xmlns:a="urn:test:AAA"><a:a/></a:p1>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
+ <var name="a">
+ <xpath doc="doc1" select-node="/a:p1/a:a">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="a"/>
+ <append-child parent="p2" child="a"/>
+ <reconcile-ns node="a"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"><a:a/></a:p2>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr">
+ <doc name="doc1"><![CDATA[<p1 xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@b:attr">
+ <reg-ns prefix="b" ns="urn:test:BBB"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA" xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_2">
+ <!-- Here we will specify a destination-parent for adoption. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@b:attr">
+ <reg-ns prefix="b" ns="urn:test:BBB"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" dest-parent="p2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA" xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_3">
+ <!-- Conflicting ns-prefixes for the added attribute. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:aaa"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:aaa"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:aaa" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_4">
+ <!-- Qualified attribute added to default namespaced elem. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<p2 xmlns="urn:test:AAA"/>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p2">
+ <xpath doc="doc2" select-node="/a:p2">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" />
+ <append-child parent="p2" child="attr"/>
+ <reconcile-ns node="p2"/>
+ <expected doc="doc2"><![CDATA[<p2 xmlns="urn:test:AAA" xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_5">
+ <!-- Shadowed and conflicting prefix. dest-parent IS given. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<p2 xmlns:a="urn:test:AAA"><a:p3 xmlns:a="urn:test:ZZZ"/></p2>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p3">
+ <xpath doc="doc2" select-node="/p2/a:p3">
+ <reg-ns prefix="a" ns="urn:test:ZZZ"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr" dest-parent="p3"/>
+ <append-child parent="p3" child="attr"/>
+ <!-- Note that we don't need to reconcile here, since done during
+ adoption. -->
+ <expected doc="doc2"><![CDATA[
+<p2 xmlns:a="urn:test:AAA">
+ <a:p3 xmlns:a="urn:test:ZZZ" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>
+</p2>]]></expected>
+ </test>
+
+ <test name="adopt_recon_attr_6">
+ <!-- Shadowed and conflicting prefix. dest-parent NOT given. -->
+ <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
+ <doc name="doc2"><![CDATA[<p2 xmlns:a="urn:test:AAA"><a:p3 xmlns:a="urn:test:ZZZ"/></p2>]]></doc>
+ <var name="attr">
+ <xpath doc="doc1" select-node="/p1/@a:attr">
+ <reg-ns prefix="a" ns="urn:test:AAA"/>
+ </xpath>
+ </var>
+ <var name="p3">
+ <xpath doc="doc2" select-node="/p2/a:p3">
+ <reg-ns prefix="a" ns="urn:test:ZZZ"/>
+ </xpath>
+ </var>
+ <adopt dest-doc="doc2" node="attr"/>
+ <append-child parent="p3" child="attr"/>
+ <reconcile-ns node="p3"/>
+ <expected doc="doc2"><![CDATA[
+<p2 xmlns:a="urn:test:AAA">
+ <a:p3 xmlns:a="urn:test:ZZZ" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>
+</p2>]]></expected>
+ </test>
+
+ <test name="shadow_1">
+
+ <doc name="doc"><![CDATA[
+<foo xmlns:foo="urn:test:mine">
+ <p xmlns:bar="urn:test:mine"/>
+ <a1>
+ <a2 xmlns:bar="urn:test:OTHER">
+ <foo:a3/>
+ </a2>
+ </a1>
+</foo>
+]]></doc>
+ <var name="a1">
+ <xpath doc="doc" select-node="/foo/a1"/>
+ </var>
+ <var name="p" >
+ <xpath doc="doc" select-node="/foo/p"/>
+ </var>
+ <remove node="a1"/>
+ <append-child parent="p" child="a1"/>
+ <reconcile-ns node="a1"/>
+ <expected doc="doc"><![CDATA[
+<foo xmlns:foo="urn:test:mine">
+ <p xmlns:bar="urn:test:mine">
+ <a1>
+ <a2 xmlns:bar="urn:test:OTHER">
+ <foo:a3/>
+ </a2>
+ </a1>
+ </p>
+</foo>
+]]></expected>
+ </test>
+
+ <test name="norm_1">
+
+ <doc name="doc"><![CDATA[
+<foo>
+ <p1 xmlns:a="urn:test:A" xmlns:b="urn:test:B" xmlns:c="urn:test:C">
+ <a:a>
+ <b:b a:attr="dont" c:attr="panic"/>
+ </a:a>
+ </p1>
+ <p2/>
+</foo>
+]]></doc>
+ <var name="a">
+ <xpath doc="doc" select-node="/foo/p1/a:a">
+ <reg-ns prefix="a" ns="urn:test:A"/>
+ </xpath>
+ </var>
+ <var name="p2" >
+ <xpath doc="doc" select-node="/foo/p2"/>
+ </var>
+ <remove node="a"/>
+ <append-child parent="p2" child="a"/>
+ <reconcile-ns node="a"/>
+ <expected doc="doc"><![CDATA[
+<foo>
+ <p1 xmlns:a="urn:test:A" xmlns:b="urn:test:B" xmlns:c="urn:test:C"/>
+ <p2>
+ <a:a xmlns:a="urn:test:A">
+ <b:b xmlns:b="urn:test:B" xmlns:c="urn:test:C" a:attr="dont" c:attr="panic"/>
+ </a:a>
+ </p2>
+</foo>
+]]></expected>
+ </test>
+</tests>
diff --git a/test/ns b/test/ns
new file mode 100644
index 0000000..94b927e
--- /dev/null
+++ b/test/ns
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata dia:testattr="test"/>
+</dia:diagram>
diff --git a/test/ns2 b/test/ns2
new file mode 100644
index 0000000..80aaf94
--- /dev/null
+++ b/test/ns2
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/"
+ dia:testattr="test"/>
diff --git a/test/ns3 b/test/ns3
new file mode 100644
index 0000000..76bb20d
--- /dev/null
+++ b/test/ns3
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<dia:diagram dia:testattr="test"
+ xmlns:dia="http://www.lysator.liu.se/~alla/dia/"/>
diff --git a/test/ns4 b/test/ns4
new file mode 100644
index 0000000..136bf92
--- /dev/null
+++ b/test/ns4
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<diagram testattr="test" xml:lang="en" xml:link="simple" xml:space="preserve"/>
diff --git a/test/ns5 b/test/ns5
new file mode 100644
index 0000000..d75d345
--- /dev/null
+++ b/test/ns5
@@ -0,0 +1,4 @@
+<element name="foo" xmlns:rng="http://example.org/ns/1" xmlns="http://example.org/ns/1">
+ <empty/>
+</element>
+
diff --git a/test/ns6 b/test/ns6
new file mode 100644
index 0000000..1f2a8b3
--- /dev/null
+++ b/test/ns6
@@ -0,0 +1,4 @@
+<root>
+ <foo xmlns="http://abc" />
+ <bar />
+</root>
diff --git a/test/ns7 b/test/ns7
new file mode 100644
index 0000000..d32b3b4
--- /dev/null
+++ b/test/ns7
@@ -0,0 +1 @@
+<xml:test/>
diff --git a/test/nsclean.xml b/test/nsclean.xml
new file mode 100644
index 0000000..c293ddb
--- /dev/null
+++ b/test/nsclean.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="tag:foofoofoofoofoofoofoofoo"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:dcterms="http://purl.org/dc/terms/">
+<foop:content xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:foop="tag:foofoofoofoofoofoofoofoo">
+</foop:content>
+</article>
+
diff --git a/test/p3p b/test/p3p
new file mode 100644
index 0000000..dad8fb7
--- /dev/null
+++ b/test/p3p
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:p3p="http://www.w3.org/TR/1998/WD-P3P10-syntax#proposal.DTD"
+ xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#">
+<PROP realm="http://www.CoolCatalog.com/catalogue/"
+ entity="CoolCatalog" agreeID="94df1293a3e519bb"
+ assurance="http://www.TrustUs.org">
+ <USES>
+ <STATEMENT purp="2,3" recpnt="0" id="0"
+ consq="a site with clothes you'd appreciate.">
+ <WITH><PREFIX name="User.">
+ <REF name="Name.First"/>
+ <REF name="Bdate.Year" optional="1"/>
+ <REF name="Gender"/>
+ </PREFIX></WITH>
+ </STATEMENT>
+ </USES>
+ <USES>
+ <STATEMENT action="read&amp;write" purp="0" recpnt="0" id="1">
+ <REF name="User.Shipping."/>
+ </STATEMENT>
+ </USES>
+ <DISCLOSURE discURI="http://www.CoolCatalog.com/PrivacyPractice.html"
+ access="3" other="0,1"/>
+</PROP></RDF:RDF>
diff --git a/test/pattern/conj.pat b/test/pattern/conj.pat
new file mode 100644
index 0000000..ca80a06
--- /dev/null
+++ b/test/pattern/conj.pat
@@ -0,0 +1,8 @@
+a|b
+a|c
+b|c
+a|b|c
+/a|b
+b|/a
+a//c|b//c
+d|e|f|g|h|a
diff --git a/test/pattern/conj.xml b/test/pattern/conj.xml
new file mode 100644
index 0000000..c1c770e
--- /dev/null
+++ b/test/pattern/conj.xml
@@ -0,0 +1,13 @@
+<a>
+ <b>
+ <c><b/></c>
+ <c>
+ <b/>
+ <c><b/></c>
+ </c>
+ </b>
+ <c>
+ <b>
+ </b>
+ </c>
+</a>
diff --git a/test/pattern/multiple.pat b/test/pattern/multiple.pat
new file mode 100644
index 0000000..3f1ee3e
--- /dev/null
+++ b/test/pattern/multiple.pat
@@ -0,0 +1,27 @@
+a
+b
+c
+c/a
+c/b
+b/a
+c/b/a
+c//a
+c//b
+b//a
+c//b//a
+c/b//a
+c//b/a
+/a
+/b
+/c
+/c/a
+/c/b
+/b/a
+/c/b/a
+/c//a
+/c//b
+/b//a
+/c//b//a
+/c/b//a
+/c//b/a
+
diff --git a/test/pattern/multiple.xml b/test/pattern/multiple.xml
new file mode 100644
index 0000000..62f31a5
--- /dev/null
+++ b/test/pattern/multiple.xml
@@ -0,0 +1,5 @@
+<c>
+<b><a/><a/></b>
+<c><b><a/><a/></b></c>
+<b><a/><a/></b>
+</c>
diff --git a/test/pattern/namespaces.pat b/test/pattern/namespaces.pat
new file mode 100644
index 0000000..c273a10
--- /dev/null
+++ b/test/pattern/namespaces.pat
@@ -0,0 +1,10 @@
+//a
+//a:a
+//b
+//b:b
+/a//a
+/a/a
+/a/b
+/a/a:a
+/a/a:b
+/a/c:a
diff --git a/test/pattern/namespaces.xml b/test/pattern/namespaces.xml
new file mode 100644
index 0000000..1ebb50f
--- /dev/null
+++ b/test/pattern/namespaces.xml
@@ -0,0 +1,17 @@
+<a xmlns:a="http://a" xmlns:b="http://b" xmlns:c="http://a">
+ <b/>
+ <a:a>
+ <b:b/>
+ </a:a>
+ <b:b>
+ <a>
+ <a:a>
+ <b:b/>
+ </a:a>
+ </a>
+ </b:b>
+ <a xmlns="http://a">
+ <a xmlns=""/>
+ </a>
+ <c:a/>
+</a>
diff --git a/test/pattern/simple.pat b/test/pattern/simple.pat
new file mode 100644
index 0000000..1b298ae
--- /dev/null
+++ b/test/pattern/simple.pat
@@ -0,0 +1,15 @@
+a
+b
+b
+/a
+/b
+/c
+a/b
+a/b/c
+//a
+//b
+//c
+a//b
+a//c
+b//c
+
diff --git a/test/pattern/simple.xml b/test/pattern/simple.xml
new file mode 100644
index 0000000..16ac6c2
--- /dev/null
+++ b/test/pattern/simple.xml
@@ -0,0 +1,5 @@
+<a>
+ <b>
+ <c d="attr">text</c>
+ </b>
+</a>
diff --git a/test/pi.xml b/test/pi.xml
new file mode 100644
index 0000000..48c7ff0
--- /dev/null
+++ b/test/pi.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+<?document-start doc?>
+<empty/>
+<?document-end doc?>
+</doc>
diff --git a/test/pi2.xml b/test/pi2.xml
new file mode 100644
index 0000000..710d51c
--- /dev/null
+++ b/test/pi2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<?document-start doc?>
+<doc>
+<empty/>
+</doc>
+<?document-end doc?>
diff --git a/test/rdf1 b/test/rdf1
new file mode 100644
index 0000000..d44c3c6
--- /dev/null
+++ b/test/rdf1
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RPM="http://www.rpm.org/" xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#">
+ <RDF:Description HREF="ftp://rufus.w3.org/linux/redhat/redhat-5.1/i386/RedHat/RPMS/rpm-2.5-2.i386.rpm">
+ <RPM:Name>rpm</RPM:Name>
+ <RPM:Version>2.5</RPM:Version>
+ <RPM:Release>2</RPM:Release>
+ <RPM:Arch>i386</RPM:Arch>
+ <RPM:Os>Linux</RPM:Os>
+ <RPM:Distribution>Manhattan </RPM:Distribution>
+ <RPM:Vendor>Red Hat Software</RPM:Vendor>
+ <RPM:Packager>Red Hat Software &lt;bugs@redhat.com&gt;</RPM:Packager>
+ <RPM:Group>Utilities/System</RPM:Group>
+ <RPM:Summary>Red Hat Package Manager</RPM:Summary>
+ <RPM:Description>RPM is a powerful package manager, which can be used to build, install,
+query, verify, update, and uninstall individual software packages. A
+package consists of an archive of files, and package information, including
+name, version, and description.</RPM:Description>
+ <RPM:Copyright>GPL</RPM:Copyright>
+ <RPM:Changelog>* Sun May 10 1998 Prospector System &lt;bugs@redhat.com&gt;
+ - translations modified for de, fr, tr
+</RPM:Changelog>
+ <RPM:Sources>rpm-2.5-2.src.rpm</RPM:Sources>
+ <RPM:SourcesFtp>ftp://ftp.redhat.com/pub/redhat/redhat-5.1/SRPMS</RPM:SourcesFtp>
+ <RPM:BuildDate>Sun May 10 14:52:32 1998</RPM:BuildDate>
+ <RPM:Date>894826352</RPM:Date>
+ <RPM:Size>850599</RPM:Size>
+ <RPM:BuildHost>porky.redhat.com</RPM:BuildHost>
+ <RPM:Provides>
+ <RDF:Bag>
+ <RPM:Resource>rpm</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Provides>
+ <RPM:Requires>
+ <RDF:Bag>
+ <RPM:Resource>/bin/sh</RPM:Resource>
+ <RPM:Resource>ld-linux.so.2</RPM:Resource>
+ <RPM:Resource>libc.so.6</RPM:Resource>
+ <RPM:Resource>libdb.so.2</RPM:Resource>
+ <RPM:Resource>libz.so.1</RPM:Resource>
+ <RPM:Resource>/bin/bash</RPM:Resource>
+ <RPM:Resource>/bin/sh</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Requires>
+ <RPM:Files>/bin/rpm
+/usr/bin/find-provides
+/usr/bin/find-requires
+/usr/bin/gendiff
+/usr/bin/rpm2cpio
+/usr/doc/rpm-2.5
+/usr/doc/rpm-2.5/CHANGES
+/usr/doc/rpm-2.5/RPM-PGP-KEY
+/usr/doc/rpm-2.5/buildroot
+/usr/doc/rpm-2.5/dependencies
+/usr/doc/rpm-2.5/format
+/usr/doc/rpm-2.5/groups
+/usr/doc/rpm-2.5/macros
+/usr/doc/rpm-2.5/queryformat
+/usr/doc/rpm-2.5/relocatable
+/usr/doc/rpm-2.5/signatures
+/usr/doc/rpm-2.5/spec
+/usr/doc/rpm-2.5/triggers
+/usr/lib/rpmpopt
+/usr/lib/rpmrc
+/usr/man/man8/rpm.8
+/usr/man/man8/rpm2cpio.8
+/usr/share/locale/de/LC_MESSAGES/rpm.mo
+/usr/share/locale/fr/LC_MESSAGES/rpm.mo
+/usr/share/locale/pt-br/LC_MESSAGES/rpm.mo
+/usr/share/locale/sv/LC_MESSAGES/rpm.mo
+/usr/share/locale/tr/LC_MESSAGES/rpm.mo
+/usr/src/redhat
+/usr/src/redhat/BUILD
+/usr/src/redhat/RPMS
+/usr/src/redhat/RPMS/i386
+/usr/src/redhat/RPMS/noarch
+/usr/src/redhat/SOURCES
+/usr/src/redhat/SPECS
+/usr/src/redhat/SRPMS
+</RPM:Files>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/test/rdf2 b/test/rdf2
new file mode 100644
index 0000000..fe80399
--- /dev/null
+++ b/test/rdf2
@@ -0,0 +1,1899 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/TR/WD-rdf-syntax#" xmlns:RPM="http://www.rpm.org/">
+ <RDF:Description about="ftp://rufus.w3.org/linux/dld/5.4/i386/RPMS/i386/ncurses4-4.2-3.i386.rpm">
+ <RPM:Name>ncurses4</RPM:Name>
+ <RPM:Version>4.2</RPM:Version>
+ <RPM:Release>3</RPM:Release>
+ <RPM:Arch>i386</RPM:Arch>
+ <RPM:Os>Linux</RPM:Os>
+ <RPM:Distribution>DLD</RPM:Distribution>
+ <RPM:Vendor>delix Computer GmbH</RPM:Vendor>
+ <RPM:Packager>Till Bubeck &lt;bubeck@delix.de&gt;, Ngo Than &lt;than@delix.de&gt;</RPM:Packager>
+ <RPM:Group>Libraries</RPM:Group>
+ <RPM:Summary>Bibliothek zur Ansteuerung von Terminals</RPM:Summary>
+ <RPM:Description>Diese Library stellt dem Programmierer vom Terminal unabh&#228;ngige
+Routinen zur Ansteuerung Ihres Bildschirms zur Verf&#252;gung, die
+speziell optimiert sind.
+Diese Version ist die &apos;new curses&apos; (ncurses) Variante und ist der
+anerkannte Ersatz f&#252;r die klassische Curses-Library, die nicht mehr
+weiterentwickelt wird.</RPM:Description>
+ <RPM:Copyright>GPL</RPM:Copyright>
+ <RPM:Sources>ncurses4-4.2-3.src.rpm</RPM:Sources>
+ <RPM:BuildDate>Tue May 12 19:30:26 1998</RPM:BuildDate>
+ <RPM:Date>895015826</RPM:Date>
+ <RPM:Size>1373513</RPM:Size>
+ <RPM:BuildHost>erdbeere.delix.de</RPM:BuildHost>
+ <RPM:Provides>
+ <RDF:Bag>
+ <RPM:Resource href="../../../../../resources/ncurses4.rdf">ncurses4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libpanel.so.4.rdf">libpanel.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libncurses.so.4.rdf">libncurses.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libmenu.so.4.rdf">libmenu.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/libform.so.4.rdf">libform.so.4</RPM:Resource>
+ <RPM:Resource href="../../../../../resources/ncurses.rdf">ncurses</RPM:Resource>
+ </RDF:Bag>
+ </RPM:Provides>
+ <RPM:Files>/lib/libncurses.so.4
+/lib/libncurses.so.4.2
+/usr/doc/ncurses4-4.2-3
+/usr/doc/ncurses4-4.2-3/ANNOUNCE.gz
+/usr/doc/ncurses4-4.2-3/NEWS.gz
+/usr/doc/ncurses4-4.2-3/README.gz
+/usr/doc/ncurses4-4.2-3/TO-DO.gz
+/usr/lib/libform.so.4
+/usr/lib/libform.so.4.2
+/usr/lib/libmenu.so.4
+/usr/lib/libmenu.so.4.2
+/usr/lib/libpanel.so.4
+/usr/lib/libpanel.so.4.2
+/usr/share/ncurses4
+/usr/share/ncurses4/tabset
+/usr/share/ncurses4/tabset/std
+/usr/share/ncurses4/tabset/stdcrt
+/usr/share/ncurses4/tabset/vt100
+/usr/share/ncurses4/tabset/vt300
+/usr/share/ncurses4/terminfo
+/usr/share/ncurses4/terminfo/1
+/usr/share/ncurses4/terminfo/1/1178
+/usr/share/ncurses4/terminfo/1/1730-lm
+/usr/share/ncurses4/terminfo/2
+/usr/share/ncurses4/terminfo/2/2621
+/usr/share/ncurses4/terminfo/2/2621-wl
+/usr/share/ncurses4/terminfo/2/2621A
+/usr/share/ncurses4/terminfo/2/2621a
+/usr/share/ncurses4/terminfo/3
+/usr/share/ncurses4/terminfo/3/386at
+/usr/share/ncurses4/terminfo/3/3b1
+/usr/share/ncurses4/terminfo/4
+/usr/share/ncurses4/terminfo/4/4025ex
+/usr/share/ncurses4/terminfo/4/4027ex
+/usr/share/ncurses4/terminfo/4/4410-w
+/usr/share/ncurses4/terminfo/5
+/usr/share/ncurses4/terminfo/5/5051
+/usr/share/ncurses4/terminfo/5/5410-w
+/usr/share/ncurses4/terminfo/5/5620
+/usr/share/ncurses4/terminfo/5/5630-24
+/usr/share/ncurses4/terminfo/5/5630DMD-24
+/usr/share/ncurses4/terminfo/6
+/usr/share/ncurses4/terminfo/6/630-lm
+/usr/share/ncurses4/terminfo/6/630MTG-24
+/usr/share/ncurses4/terminfo/7
+/usr/share/ncurses4/terminfo/7/730MTG-24
+/usr/share/ncurses4/terminfo/7/730MTG-41
+/usr/share/ncurses4/terminfo/7/730MTG-41r
+/usr/share/ncurses4/terminfo/7/730MTGr
+/usr/share/ncurses4/terminfo/7/730MTGr-24
+/usr/share/ncurses4/terminfo/8
+/usr/share/ncurses4/terminfo/8/8510
+/usr/share/ncurses4/terminfo/9
+/usr/share/ncurses4/terminfo/9/955-hb
+/usr/share/ncurses4/terminfo/9/955-w
+/usr/share/ncurses4/terminfo/P
+/usr/share/ncurses4/terminfo/P/P12
+/usr/share/ncurses4/terminfo/P/P12-M
+/usr/share/ncurses4/terminfo/P/P12-M-W
+/usr/share/ncurses4/terminfo/P/P12-W
+/usr/share/ncurses4/terminfo/P/P14
+/usr/share/ncurses4/terminfo/P/P14-M
+/usr/share/ncurses4/terminfo/P/P14-M-W
+/usr/share/ncurses4/terminfo/P/P14-W
+/usr/share/ncurses4/terminfo/P/P4
+/usr/share/ncurses4/terminfo/P/P5
+/usr/share/ncurses4/terminfo/P/P7
+/usr/share/ncurses4/terminfo/P/P8
+/usr/share/ncurses4/terminfo/P/P8-W
+/usr/share/ncurses4/terminfo/P/P9
+/usr/share/ncurses4/terminfo/P/P9-8
+/usr/share/ncurses4/terminfo/P/P9-8-W
+/usr/share/ncurses4/terminfo/P/P9-W
+/usr/share/ncurses4/terminfo/X
+/usr/share/ncurses4/terminfo/X/X-hpterm
+/usr/share/ncurses4/terminfo/a
+/usr/share/ncurses4/terminfo/a/a210
+/usr/share/ncurses4/terminfo/a/a80
+/usr/share/ncurses4/terminfo/a/a980
+/usr/share/ncurses4/terminfo/a/aa4080
+/usr/share/ncurses4/terminfo/a/aaa
+/usr/share/ncurses4/terminfo/a/aaa+dec
+/usr/share/ncurses4/terminfo/a/aaa+rv
+/usr/share/ncurses4/terminfo/a/aaa+unk
+/usr/share/ncurses4/terminfo/a/aaa-18
+/usr/share/ncurses4/terminfo/a/aaa-18-rv
+/usr/share/ncurses4/terminfo/a/aaa-20
+/usr/share/ncurses4/terminfo/a/aaa-22
+/usr/share/ncurses4/terminfo/a/aaa-24
+/usr/share/ncurses4/terminfo/a/aaa-24-rv
+/usr/share/ncurses4/terminfo/a/aaa-26
+/usr/share/ncurses4/terminfo/a/aaa-28
+/usr/share/ncurses4/terminfo/a/aaa-30
+/usr/share/ncurses4/terminfo/a/aaa-30-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s
+/usr/share/ncurses4/terminfo/a/aaa-30-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-30-s-rv-ct
+/usr/share/ncurses4/terminfo/a/aaa-36
+/usr/share/ncurses4/terminfo/a/aaa-36-rv
+/usr/share/ncurses4/terminfo/a/aaa-40
+/usr/share/ncurses4/terminfo/a/aaa-40-rv
+/usr/share/ncurses4/terminfo/a/aaa-48
+/usr/share/ncurses4/terminfo/a/aaa-48-rv
+/usr/share/ncurses4/terminfo/a/aaa-60
+/usr/share/ncurses4/terminfo/a/aaa-60-dec-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-rv
+/usr/share/ncurses4/terminfo/a/aaa-60-s
+/usr/share/ncurses4/terminfo/a/aaa-60-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-db
+/usr/share/ncurses4/terminfo/a/aaa-rv
+/usr/share/ncurses4/terminfo/a/aaa-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-rv-unk
+/usr/share/ncurses4/terminfo/a/aaa-s
+/usr/share/ncurses4/terminfo/a/aaa-s-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-s-rv
+/usr/share/ncurses4/terminfo/a/aaa-s-rv-ctxt
+/usr/share/ncurses4/terminfo/a/aaa-unk
+/usr/share/ncurses4/terminfo/a/aas1901
+/usr/share/ncurses4/terminfo/a/abm80
+/usr/share/ncurses4/terminfo/a/abm85
+/usr/share/ncurses4/terminfo/a/abm85e
+/usr/share/ncurses4/terminfo/a/abm85h
+/usr/share/ncurses4/terminfo/a/abm85h-old
+/usr/share/ncurses4/terminfo/a/act4
+/usr/share/ncurses4/terminfo/a/act5
+/usr/share/ncurses4/terminfo/a/addrinfo
+/usr/share/ncurses4/terminfo/a/adds980
+/usr/share/ncurses4/terminfo/a/addsviewpoint
+/usr/share/ncurses4/terminfo/a/addsvp60
+/usr/share/ncurses4/terminfo/a/adm+sgr
+/usr/share/ncurses4/terminfo/a/adm1
+/usr/share/ncurses4/terminfo/a/adm11
+/usr/share/ncurses4/terminfo/a/adm1178
+/usr/share/ncurses4/terminfo/a/adm12
+/usr/share/ncurses4/terminfo/a/adm1a
+/usr/share/ncurses4/terminfo/a/adm2
+/usr/share/ncurses4/terminfo/a/adm20
+/usr/share/ncurses4/terminfo/a/adm21
+/usr/share/ncurses4/terminfo/a/adm22
+/usr/share/ncurses4/terminfo/a/adm3
+/usr/share/ncurses4/terminfo/a/adm31
+/usr/share/ncurses4/terminfo/a/adm31-old
+/usr/share/ncurses4/terminfo/a/adm36
+/usr/share/ncurses4/terminfo/a/adm3a
+/usr/share/ncurses4/terminfo/a/adm3a+
+/usr/share/ncurses4/terminfo/a/adm42
+/usr/share/ncurses4/terminfo/a/adm42-ns
+/usr/share/ncurses4/terminfo/a/adm5
+/usr/share/ncurses4/terminfo/a/aepro
+/usr/share/ncurses4/terminfo/a/aixterm-m
+/usr/share/ncurses4/terminfo/a/aixterm-m-old
+/usr/share/ncurses4/terminfo/a/aj
+/usr/share/ncurses4/terminfo/a/aj510
+/usr/share/ncurses4/terminfo/a/aj830
+/usr/share/ncurses4/terminfo/a/aj832
+/usr/share/ncurses4/terminfo/a/alt2
+/usr/share/ncurses4/terminfo/a/alt3
+/usr/share/ncurses4/terminfo/a/alt4
+/usr/share/ncurses4/terminfo/a/alt5
+/usr/share/ncurses4/terminfo/a/alt7
+/usr/share/ncurses4/terminfo/a/alt7pc
+/usr/share/ncurses4/terminfo/a/alto-h19
+/usr/share/ncurses4/terminfo/a/alto-heath
+/usr/share/ncurses4/terminfo/a/altoh19
+/usr/share/ncurses4/terminfo/a/altoheath
+/usr/share/ncurses4/terminfo/a/altos-2
+/usr/share/ncurses4/terminfo/a/altos-3
+/usr/share/ncurses4/terminfo/a/altos-4
+/usr/share/ncurses4/terminfo/a/altos-5
+/usr/share/ncurses4/terminfo/a/altos2
+/usr/share/ncurses4/terminfo/a/altos3
+/usr/share/ncurses4/terminfo/a/altos4
+/usr/share/ncurses4/terminfo/a/altos5
+/usr/share/ncurses4/terminfo/a/altos7
+/usr/share/ncurses4/terminfo/a/altos7pc
+/usr/share/ncurses4/terminfo/a/ambas
+/usr/share/ncurses4/terminfo/a/ambassador
+/usr/share/ncurses4/terminfo/a/amiga
+/usr/share/ncurses4/terminfo/a/amiga-h
+/usr/share/ncurses4/terminfo/a/amp219
+/usr/share/ncurses4/terminfo/a/amp219w
+/usr/share/ncurses4/terminfo/a/ampex-219
+/usr/share/ncurses4/terminfo/a/ampex-219w
+/usr/share/ncurses4/terminfo/a/ampex-232
+/usr/share/ncurses4/terminfo/a/ampex175
+/usr/share/ncurses4/terminfo/a/ampex175-b
+/usr/share/ncurses4/terminfo/a/ampex210
+/usr/share/ncurses4/terminfo/a/ampex219
+/usr/share/ncurses4/terminfo/a/ampex219w
+/usr/share/ncurses4/terminfo/a/ampex232
+/usr/share/ncurses4/terminfo/a/ampex232w
+/usr/share/ncurses4/terminfo/a/ampex80
+/usr/share/ncurses4/terminfo/a/annarbor4080
+/usr/share/ncurses4/terminfo/a/ansi
+/usr/share/ncurses4/terminfo/a/ansi-color-2-emx
+/usr/share/ncurses4/terminfo/a/ansi-color-3-emx
+/usr/share/ncurses4/terminfo/a/ansi-emx
+/usr/share/ncurses4/terminfo/a/ansi-m
+/usr/share/ncurses4/terminfo/a/ansi-mini
+/usr/share/ncurses4/terminfo/a/ansi-mono
+/usr/share/ncurses4/terminfo/a/ansi-nt
+/usr/share/ncurses4/terminfo/a/ansi.sys
+/usr/share/ncurses4/terminfo/a/ansi.sys-old
+/usr/share/ncurses4/terminfo/a/ansi.sysk
+/usr/share/ncurses4/terminfo/a/ansi43m
+/usr/share/ncurses4/terminfo/a/ansi77
+/usr/share/ncurses4/terminfo/a/ansi80x25
+/usr/share/ncurses4/terminfo/a/ansi80x25-mono
+/usr/share/ncurses4/terminfo/a/ansi80x25-raw
+/usr/share/ncurses4/terminfo/a/ansi80x30
+/usr/share/ncurses4/terminfo/a/ansi80x30-mono
+/usr/share/ncurses4/terminfo/a/ansi80x43
+/usr/share/ncurses4/terminfo/a/ansi80x43-mono
+/usr/share/ncurses4/terminfo/a/ansi80x50
+/usr/share/ncurses4/terminfo/a/ansi80x50-mono
+/usr/share/ncurses4/terminfo/a/ansi80x60
+/usr/share/ncurses4/terminfo/a/ansi80x60-mono
+/usr/share/ncurses4/terminfo/a/ansil
+/usr/share/ncurses4/terminfo/a/ansil-mono
+/usr/share/ncurses4/terminfo/a/ansis
+/usr/share/ncurses4/terminfo/a/ansis-mono
+/usr/share/ncurses4/terminfo/a/ansisysk
+/usr/share/ncurses4/terminfo/a/ansiw
+/usr/share/ncurses4/terminfo/a/ap-vm80
+/usr/share/ncurses4/terminfo/a/apl
+/usr/share/ncurses4/terminfo/a/apollo
+/usr/share/ncurses4/terminfo/a/apollo_15P
+/usr/share/ncurses4/terminfo/a/apollo_19L
+/usr/share/ncurses4/terminfo/a/apollo_color
+/usr/share/ncurses4/terminfo/a/apple-80
+/usr/share/ncurses4/terminfo/a/apple-ae
+/usr/share/ncurses4/terminfo/a/apple-soroc
+/usr/share/ncurses4/terminfo/a/apple-uterm
+/usr/share/ncurses4/terminfo/a/apple-uterm-vb
+/usr/share/ncurses4/terminfo/a/apple-videx
+/usr/share/ncurses4/terminfo/a/apple-videx2
+/usr/share/ncurses4/terminfo/a/apple-videx3
+/usr/share/ncurses4/terminfo/a/apple-vm80
+/usr/share/ncurses4/terminfo/a/apple2e
+/usr/share/ncurses4/terminfo/a/apple2e-p
+/usr/share/ncurses4/terminfo/a/apple80p
+/usr/share/ncurses4/terminfo/a/appleII
+/usr/share/ncurses4/terminfo/a/appleIIc
+/usr/share/ncurses4/terminfo/a/appleIIe
+/usr/share/ncurses4/terminfo/a/appleIIgs
+/usr/share/ncurses4/terminfo/a/at386
+/usr/share/ncurses4/terminfo/a/atari
+/usr/share/ncurses4/terminfo/a/att2300
+/usr/share/ncurses4/terminfo/a/att2350
+/usr/share/ncurses4/terminfo/a/att4410
+/usr/share/ncurses4/terminfo/a/att4410-w
+/usr/share/ncurses4/terminfo/a/att4410v1
+/usr/share/ncurses4/terminfo/a/att4410v1-w
+/usr/share/ncurses4/terminfo/a/att4415
+/usr/share/ncurses4/terminfo/a/att4415+nl
+/usr/share/ncurses4/terminfo/a/att4415-nl
+/usr/share/ncurses4/terminfo/a/att4415-rv
+/usr/share/ncurses4/terminfo/a/att4415-rv-nl
+/usr/share/ncurses4/terminfo/a/att4415-w
+/usr/share/ncurses4/terminfo/a/att4415-w-nl
+/usr/share/ncurses4/terminfo/a/att4415-w-rv
+/usr/share/ncurses4/terminfo/a/att4415-w-rv-n
+/usr/share/ncurses4/terminfo/a/att4418
+/usr/share/ncurses4/terminfo/a/att4418-w
+/usr/share/ncurses4/terminfo/a/att4420
+/usr/share/ncurses4/terminfo/a/att4424
+/usr/share/ncurses4/terminfo/a/att4424-1
+/usr/share/ncurses4/terminfo/a/att4424m
+/usr/share/ncurses4/terminfo/a/att4425
+/usr/share/ncurses4/terminfo/a/att4425-nl
+/usr/share/ncurses4/terminfo/a/att4425-w
+/usr/share/ncurses4/terminfo/a/att4426
+/usr/share/ncurses4/terminfo/a/att500
+/usr/share/ncurses4/terminfo/a/att505
+/usr/share/ncurses4/terminfo/a/att505-24
+/usr/share/ncurses4/terminfo/a/att510a
+/usr/share/ncurses4/terminfo/a/att510d
+/usr/share/ncurses4/terminfo/a/att513
+/usr/share/ncurses4/terminfo/a/att5310
+/usr/share/ncurses4/terminfo/a/att5320
+/usr/share/ncurses4/terminfo/a/att5410
+/usr/share/ncurses4/terminfo/a/att5410-w
+/usr/share/ncurses4/terminfo/a/att5410v1
+/usr/share/ncurses4/terminfo/a/att5410v1-w
+/usr/share/ncurses4/terminfo/a/att5418
+/usr/share/ncurses4/terminfo/a/att5418-w
+/usr/share/ncurses4/terminfo/a/att5420
+/usr/share/ncurses4/terminfo/a/att5420+nl
+/usr/share/ncurses4/terminfo/a/att5420-nl
+/usr/share/ncurses4/terminfo/a/att5420-rv
+/usr/share/ncurses4/terminfo/a/att5420-rv-nl
+/usr/share/ncurses4/terminfo/a/att5420-w
+/usr/share/ncurses4/terminfo/a/att5420-w-nl
+/usr/share/ncurses4/terminfo/a/att5420-w-rv
+/usr/share/ncurses4/terminfo/a/att5420-w-rv-n
+/usr/share/ncurses4/terminfo/a/att5420_2
+/usr/share/ncurses4/terminfo/a/att5420_2-w
+/usr/share/ncurses4/terminfo/a/att5425
+/usr/share/ncurses4/terminfo/a/att5425-nl
+/usr/share/ncurses4/terminfo/a/att5425-w
+/usr/share/ncurses4/terminfo/a/att5430
+/usr/share/ncurses4/terminfo/a/att5620
+/usr/share/ncurses4/terminfo/a/att5620-1
+/usr/share/ncurses4/terminfo/a/att5620-24
+/usr/share/ncurses4/terminfo/a/att5620-34
+/usr/share/ncurses4/terminfo/a/att5620-s
+/usr/share/ncurses4/terminfo/a/att605
+/usr/share/ncurses4/terminfo/a/att605-pc
+/usr/share/ncurses4/terminfo/a/att605-w
+/usr/share/ncurses4/terminfo/a/att610
+/usr/share/ncurses4/terminfo/a/att610-103k
+/usr/share/ncurses4/terminfo/a/att610-103k-w
+/usr/share/ncurses4/terminfo/a/att610-w
+/usr/share/ncurses4/terminfo/a/att615
+/usr/share/ncurses4/terminfo/a/att615-103k
+/usr/share/ncurses4/terminfo/a/att615-103k-w
+/usr/share/ncurses4/terminfo/a/att615-w
+/usr/share/ncurses4/terminfo/a/att620
+/usr/share/ncurses4/terminfo/a/att620-103k
+/usr/share/ncurses4/terminfo/a/att620-103k-w
+/usr/share/ncurses4/terminfo/a/att620-w
+/usr/share/ncurses4/terminfo/a/att630
+/usr/share/ncurses4/terminfo/a/att630-24
+/usr/share/ncurses4/terminfo/a/att6386
+/usr/share/ncurses4/terminfo/a/att730
+/usr/share/ncurses4/terminfo/a/att730-24
+/usr/share/ncurses4/terminfo/a/att730-41
+/usr/share/ncurses4/terminfo/a/att7300
+/usr/share/ncurses4/terminfo/a/att730r
+/usr/share/ncurses4/terminfo/a/att730r-24
+/usr/share/ncurses4/terminfo/a/att730r-41
+/usr/share/ncurses4/terminfo/a/avatar
+/usr/share/ncurses4/terminfo/a/avatar0
+/usr/share/ncurses4/terminfo/a/avatar0+
+/usr/share/ncurses4/terminfo/a/avatar1
+/usr/share/ncurses4/terminfo/a/avt
+/usr/share/ncurses4/terminfo/a/avt+s
+/usr/share/ncurses4/terminfo/a/avt-ns
+/usr/share/ncurses4/terminfo/a/avt-rv
+/usr/share/ncurses4/terminfo/a/avt-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-rv-s
+/usr/share/ncurses4/terminfo/a/avt-s
+/usr/share/ncurses4/terminfo/a/avt-w
+/usr/share/ncurses4/terminfo/a/avt-w-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv
+/usr/share/ncurses4/terminfo/a/avt-w-rv-ns
+/usr/share/ncurses4/terminfo/a/avt-w-rv-s
+/usr/share/ncurses4/terminfo/a/avt-w-s
+/usr/share/ncurses4/terminfo/a/aws
+/usr/share/ncurses4/terminfo/a/awsc
+/usr/share/ncurses4/terminfo/b
+/usr/share/ncurses4/terminfo/b/b-128
+/usr/share/ncurses4/terminfo/b/bantam
+/usr/share/ncurses4/terminfo/b/basic4
+/usr/share/ncurses4/terminfo/b/basis
+/usr/share/ncurses4/terminfo/b/bct510a
+/usr/share/ncurses4/terminfo/b/bct510d
+/usr/share/ncurses4/terminfo/b/beacon
+/usr/share/ncurses4/terminfo/b/bee
+/usr/share/ncurses4/terminfo/b/beehive
+/usr/share/ncurses4/terminfo/b/beehive3
+/usr/share/ncurses4/terminfo/b/beehive4
+/usr/share/ncurses4/terminfo/b/beehiveIIIm
+/usr/share/ncurses4/terminfo/b/beterm
+/usr/share/ncurses4/terminfo/b/bg1.25
+/usr/share/ncurses4/terminfo/b/bg1.25nv
+/usr/share/ncurses4/terminfo/b/bg1.25rv
+/usr/share/ncurses4/terminfo/b/bg2.0
+/usr/share/ncurses4/terminfo/b/bg2.0nv
+/usr/share/ncurses4/terminfo/b/bg2.0rv
+/usr/share/ncurses4/terminfo/b/bg3.10
+/usr/share/ncurses4/terminfo/b/bg3.10nv
+/usr/share/ncurses4/terminfo/b/bg3.10rv
+/usr/share/ncurses4/terminfo/b/bh3m
+/usr/share/ncurses4/terminfo/b/bh4
+/usr/share/ncurses4/terminfo/b/bitgraph
+/usr/share/ncurses4/terminfo/b/blit
+/usr/share/ncurses4/terminfo/b/bobcat
+/usr/share/ncurses4/terminfo/b/bsdos
+/usr/share/ncurses4/terminfo/b/bsdos-bold
+/usr/share/ncurses4/terminfo/c
+/usr/share/ncurses4/terminfo/c/c100
+/usr/share/ncurses4/terminfo/c/c100-1p
+/usr/share/ncurses4/terminfo/c/c100-4p
+/usr/share/ncurses4/terminfo/c/c100-rv
+/usr/share/ncurses4/terminfo/c/c100-rv-4p
+/usr/share/ncurses4/terminfo/c/c104
+/usr/share/ncurses4/terminfo/c/c108
+/usr/share/ncurses4/terminfo/c/c108-4p
+/usr/share/ncurses4/terminfo/c/c108-8p
+/usr/share/ncurses4/terminfo/c/c108-rv
+/usr/share/ncurses4/terminfo/c/c108-rv-4p
+/usr/share/ncurses4/terminfo/c/c108-rv-8p
+/usr/share/ncurses4/terminfo/c/c108-w
+/usr/share/ncurses4/terminfo/c/c108-w-8p
+/usr/share/ncurses4/terminfo/c/c300
+/usr/share/ncurses4/terminfo/c/c301
+/usr/share/ncurses4/terminfo/c/c321
+/usr/share/ncurses4/terminfo/c/ca22851
+/usr/share/ncurses4/terminfo/c/cad68-2
+/usr/share/ncurses4/terminfo/c/cad68-3
+/usr/share/ncurses4/terminfo/c/cbblit
+/usr/share/ncurses4/terminfo/c/cbunix
+/usr/share/ncurses4/terminfo/c/cci
+/usr/share/ncurses4/terminfo/c/cci1
+/usr/share/ncurses4/terminfo/c/cdc456
+/usr/share/ncurses4/terminfo/c/cdc721
+/usr/share/ncurses4/terminfo/c/cdc721-esc
+/usr/share/ncurses4/terminfo/c/cdc721ll
+/usr/share/ncurses4/terminfo/c/cdc752
+/usr/share/ncurses4/terminfo/c/cdc756
+/usr/share/ncurses4/terminfo/c/cg7900
+/usr/share/ncurses4/terminfo/c/cgc2
+/usr/share/ncurses4/terminfo/c/cgc3
+/usr/share/ncurses4/terminfo/c/chromatics
+/usr/share/ncurses4/terminfo/c/ci8510
+/usr/share/ncurses4/terminfo/c/cit-80
+/usr/share/ncurses4/terminfo/c/cit101
+/usr/share/ncurses4/terminfo/c/cit101e
+/usr/share/ncurses4/terminfo/c/cit101e-132
+/usr/share/ncurses4/terminfo/c/cit101e-n
+/usr/share/ncurses4/terminfo/c/cit101e-n132
+/usr/share/ncurses4/terminfo/c/cit101e-rv
+/usr/share/ncurses4/terminfo/c/cit500
+/usr/share/ncurses4/terminfo/c/cit80
+/usr/share/ncurses4/terminfo/c/citc
+/usr/share/ncurses4/terminfo/c/citoh
+/usr/share/ncurses4/terminfo/c/citoh-6lpi
+/usr/share/ncurses4/terminfo/c/citoh-8lpi
+/usr/share/ncurses4/terminfo/c/citoh-comp
+/usr/share/ncurses4/terminfo/c/citoh-elite
+/usr/share/ncurses4/terminfo/c/citoh-pica
+/usr/share/ncurses4/terminfo/c/citoh-prop
+/usr/share/ncurses4/terminfo/c/citoh-ps
+/usr/share/ncurses4/terminfo/c/coco3
+/usr/share/ncurses4/terminfo/c/coherent
+/usr/share/ncurses4/terminfo/c/color_xterm
+/usr/share/ncurses4/terminfo/c/colorscan
+/usr/share/ncurses4/terminfo/c/commodore
+/usr/share/ncurses4/terminfo/c/concept
+/usr/share/ncurses4/terminfo/c/concept-avt
+/usr/share/ncurses4/terminfo/c/concept100
+/usr/share/ncurses4/terminfo/c/concept100-rv
+/usr/share/ncurses4/terminfo/c/concept108
+/usr/share/ncurses4/terminfo/c/concept108-4p
+/usr/share/ncurses4/terminfo/c/concept108-8p
+/usr/share/ncurses4/terminfo/c/concept108-w-8
+/usr/share/ncurses4/terminfo/c/concept108-w8p
+/usr/share/ncurses4/terminfo/c/concept108rv4p
+/usr/share/ncurses4/terminfo/c/cons25
+/usr/share/ncurses4/terminfo/c/cons25-iso-m
+/usr/share/ncurses4/terminfo/c/cons25-iso8859
+/usr/share/ncurses4/terminfo/c/cons25-koi8-r
+/usr/share/ncurses4/terminfo/c/cons25-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons25-m
+/usr/share/ncurses4/terminfo/c/cons25l1
+/usr/share/ncurses4/terminfo/c/cons25l1-m
+/usr/share/ncurses4/terminfo/c/cons25r
+/usr/share/ncurses4/terminfo/c/cons25r-m
+/usr/share/ncurses4/terminfo/c/cons25w
+/usr/share/ncurses4/terminfo/c/cons30
+/usr/share/ncurses4/terminfo/c/cons30-m
+/usr/share/ncurses4/terminfo/c/cons43
+/usr/share/ncurses4/terminfo/c/cons43-m
+/usr/share/ncurses4/terminfo/c/cons50
+/usr/share/ncurses4/terminfo/c/cons50-iso-m
+/usr/share/ncurses4/terminfo/c/cons50-iso8859
+/usr/share/ncurses4/terminfo/c/cons50-koi8r
+/usr/share/ncurses4/terminfo/c/cons50-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons50-m
+/usr/share/ncurses4/terminfo/c/cons50l1
+/usr/share/ncurses4/terminfo/c/cons50l1-m
+/usr/share/ncurses4/terminfo/c/cons50r
+/usr/share/ncurses4/terminfo/c/cons50r-m
+/usr/share/ncurses4/terminfo/c/cons60
+/usr/share/ncurses4/terminfo/c/cons60-iso
+/usr/share/ncurses4/terminfo/c/cons60-iso-m
+/usr/share/ncurses4/terminfo/c/cons60-koi8r
+/usr/share/ncurses4/terminfo/c/cons60-koi8r-m
+/usr/share/ncurses4/terminfo/c/cons60-m
+/usr/share/ncurses4/terminfo/c/cons60l1
+/usr/share/ncurses4/terminfo/c/cons60l1-m
+/usr/share/ncurses4/terminfo/c/cons60r
+/usr/share/ncurses4/terminfo/c/cons60r-m
+/usr/share/ncurses4/terminfo/c/contel300
+/usr/share/ncurses4/terminfo/c/contel301
+/usr/share/ncurses4/terminfo/c/contel320
+/usr/share/ncurses4/terminfo/c/contel321
+/usr/share/ncurses4/terminfo/c/cops
+/usr/share/ncurses4/terminfo/c/cops-10
+/usr/share/ncurses4/terminfo/c/cops10
+/usr/share/ncurses4/terminfo/c/cs10
+/usr/share/ncurses4/terminfo/c/cs10-w
+/usr/share/ncurses4/terminfo/c/ct82
+/usr/share/ncurses4/terminfo/c/ct8500
+/usr/share/ncurses4/terminfo/c/ctrm
+/usr/share/ncurses4/terminfo/c/cx
+/usr/share/ncurses4/terminfo/c/cx100
+/usr/share/ncurses4/terminfo/c/cyb110
+/usr/share/ncurses4/terminfo/c/cyb83
+/usr/share/ncurses4/terminfo/d
+/usr/share/ncurses4/terminfo/d/d132
+/usr/share/ncurses4/terminfo/d/d80
+/usr/share/ncurses4/terminfo/d/d800
+/usr/share/ncurses4/terminfo/d/datagraphix
+/usr/share/ncurses4/terminfo/d/datamedia2500
+/usr/share/ncurses4/terminfo/d/datapoint
+/usr/share/ncurses4/terminfo/d/dataspeed40
+/usr/share/ncurses4/terminfo/d/dd5000
+/usr/share/ncurses4/terminfo/d/ddr
+/usr/share/ncurses4/terminfo/d/ddr3180
+/usr/share/ncurses4/terminfo/d/dec-vt100
+/usr/share/ncurses4/terminfo/d/dec-vt220
+/usr/share/ncurses4/terminfo/d/dec-vt330
+/usr/share/ncurses4/terminfo/d/dec-vt340
+/usr/share/ncurses4/terminfo/d/dec-vt400
+/usr/share/ncurses4/terminfo/d/decpro
+/usr/share/ncurses4/terminfo/d/decwriter
+/usr/share/ncurses4/terminfo/d/delta
+/usr/share/ncurses4/terminfo/d/dg-ansi
+/usr/share/ncurses4/terminfo/d/dg100
+/usr/share/ncurses4/terminfo/d/dg200
+/usr/share/ncurses4/terminfo/d/dg210
+/usr/share/ncurses4/terminfo/d/dg211
+/usr/share/ncurses4/terminfo/d/dg450
+/usr/share/ncurses4/terminfo/d/dg460-ansi
+/usr/share/ncurses4/terminfo/d/dg6053
+/usr/share/ncurses4/terminfo/d/dg6134
+/usr/share/ncurses4/terminfo/d/diablo
+/usr/share/ncurses4/terminfo/d/diablo-lm
+/usr/share/ncurses4/terminfo/d/diablo1620
+/usr/share/ncurses4/terminfo/d/diablo1620-m8
+/usr/share/ncurses4/terminfo/d/diablo1640
+/usr/share/ncurses4/terminfo/d/diablo1640-lm
+/usr/share/ncurses4/terminfo/d/diablo1640-m8
+/usr/share/ncurses4/terminfo/d/diablo1720
+/usr/share/ncurses4/terminfo/d/diablo1730
+/usr/share/ncurses4/terminfo/d/diablo1740
+/usr/share/ncurses4/terminfo/d/diablo1740-lm
+/usr/share/ncurses4/terminfo/d/diablo450
+/usr/share/ncurses4/terminfo/d/diablo630
+/usr/share/ncurses4/terminfo/d/dialogue
+/usr/share/ncurses4/terminfo/d/dialogue80
+/usr/share/ncurses4/terminfo/d/digilog
+/usr/share/ncurses4/terminfo/d/dku7003
+/usr/share/ncurses4/terminfo/d/dku7003-dumb
+/usr/share/ncurses4/terminfo/d/dm1520
+/usr/share/ncurses4/terminfo/d/dm1521
+/usr/share/ncurses4/terminfo/d/dm2500
+/usr/share/ncurses4/terminfo/d/dm3025
+/usr/share/ncurses4/terminfo/d/dm3045
+/usr/share/ncurses4/terminfo/d/dm80
+/usr/share/ncurses4/terminfo/d/dm80w
+/usr/share/ncurses4/terminfo/d/dmchat
+/usr/share/ncurses4/terminfo/d/dmd
+/usr/share/ncurses4/terminfo/d/dmd-24
+/usr/share/ncurses4/terminfo/d/dmd-34
+/usr/share/ncurses4/terminfo/d/dmd1
+/usr/share/ncurses4/terminfo/d/dmdt80
+/usr/share/ncurses4/terminfo/d/dmdt80w
+/usr/share/ncurses4/terminfo/d/dmterm
+/usr/share/ncurses4/terminfo/d/dp3360
+/usr/share/ncurses4/terminfo/d/dp8242
+/usr/share/ncurses4/terminfo/d/ds40
+/usr/share/ncurses4/terminfo/d/ds40-2
+/usr/share/ncurses4/terminfo/d/dt-100
+/usr/share/ncurses4/terminfo/d/dt-100w
+/usr/share/ncurses4/terminfo/d/dt100
+/usr/share/ncurses4/terminfo/d/dt100w
+/usr/share/ncurses4/terminfo/d/dt110
+/usr/share/ncurses4/terminfo/d/dt80
+/usr/share/ncurses4/terminfo/d/dt80-sas
+/usr/share/ncurses4/terminfo/d/dt80w
+/usr/share/ncurses4/terminfo/d/dtc300s
+/usr/share/ncurses4/terminfo/d/dtc382
+/usr/share/ncurses4/terminfo/d/dtterm
+/usr/share/ncurses4/terminfo/d/dumb
+/usr/share/ncurses4/terminfo/d/dw
+/usr/share/ncurses4/terminfo/d/dw1
+/usr/share/ncurses4/terminfo/d/dw2
+/usr/share/ncurses4/terminfo/d/dw3
+/usr/share/ncurses4/terminfo/d/dw4
+/usr/share/ncurses4/terminfo/d/dwk
+/usr/share/ncurses4/terminfo/d/dwk-vt
+/usr/share/ncurses4/terminfo/e
+/usr/share/ncurses4/terminfo/e/ecma+color
+/usr/share/ncurses4/terminfo/e/ecma+sgr
+/usr/share/ncurses4/terminfo/e/emots
+/usr/share/ncurses4/terminfo/e/emu
+/usr/share/ncurses4/terminfo/e/env230
+/usr/share/ncurses4/terminfo/e/envision230
+/usr/share/ncurses4/terminfo/e/ep40
+/usr/share/ncurses4/terminfo/e/ep4000
+/usr/share/ncurses4/terminfo/e/ep4080
+/usr/share/ncurses4/terminfo/e/ep48
+/usr/share/ncurses4/terminfo/e/ergo4000
+/usr/share/ncurses4/terminfo/e/esprit
+/usr/share/ncurses4/terminfo/e/esprit-am
+/usr/share/ncurses4/terminfo/e/eterm
+/usr/share/ncurses4/terminfo/e/ex155
+/usr/share/ncurses4/terminfo/e/excel62
+/usr/share/ncurses4/terminfo/e/excel62-rv
+/usr/share/ncurses4/terminfo/e/excel62-w
+/usr/share/ncurses4/terminfo/e/excel64
+/usr/share/ncurses4/terminfo/e/excel64-rv
+/usr/share/ncurses4/terminfo/e/excel64-w
+/usr/share/ncurses4/terminfo/e/exec80
+/usr/share/ncurses4/terminfo/f
+/usr/share/ncurses4/terminfo/f/f100
+/usr/share/ncurses4/terminfo/f/f100-rv
+/usr/share/ncurses4/terminfo/f/f110
+/usr/share/ncurses4/terminfo/f/f110-14
+/usr/share/ncurses4/terminfo/f/f110-14w
+/usr/share/ncurses4/terminfo/f/f110-w
+/usr/share/ncurses4/terminfo/f/f1720
+/usr/share/ncurses4/terminfo/f/f1720a
+/usr/share/ncurses4/terminfo/f/f200
+/usr/share/ncurses4/terminfo/f/f200-w
+/usr/share/ncurses4/terminfo/f/f200vi
+/usr/share/ncurses4/terminfo/f/f200vi-w
+/usr/share/ncurses4/terminfo/f/falco
+/usr/share/ncurses4/terminfo/f/falco-p
+/usr/share/ncurses4/terminfo/f/fenix
+/usr/share/ncurses4/terminfo/f/fenixw
+/usr/share/ncurses4/terminfo/f/fixterm
+/usr/share/ncurses4/terminfo/f/fortune
+/usr/share/ncurses4/terminfo/f/fos
+/usr/share/ncurses4/terminfo/f/fox
+/usr/share/ncurses4/terminfo/f/freedom
+/usr/share/ncurses4/terminfo/f/freedom-rv
+/usr/share/ncurses4/terminfo/f/freedom100
+/usr/share/ncurses4/terminfo/f/freedom110
+/usr/share/ncurses4/terminfo/f/freedom200
+/usr/share/ncurses4/terminfo/g
+/usr/share/ncurses4/terminfo/g/gator
+/usr/share/ncurses4/terminfo/g/gator-52
+/usr/share/ncurses4/terminfo/g/gator-52t
+/usr/share/ncurses4/terminfo/g/gator-t
+/usr/share/ncurses4/terminfo/g/gigi
+/usr/share/ncurses4/terminfo/g/glasstty
+/usr/share/ncurses4/terminfo/g/go-225
+/usr/share/ncurses4/terminfo/g/go140
+/usr/share/ncurses4/terminfo/g/go140w
+/usr/share/ncurses4/terminfo/g/go225
+/usr/share/ncurses4/terminfo/g/graphos
+/usr/share/ncurses4/terminfo/g/graphos-30
+/usr/share/ncurses4/terminfo/g/gs5430
+/usr/share/ncurses4/terminfo/g/gs5430-22
+/usr/share/ncurses4/terminfo/g/gs5430-24
+/usr/share/ncurses4/terminfo/g/gs6300
+/usr/share/ncurses4/terminfo/g/gsi
+/usr/share/ncurses4/terminfo/g/gt100
+/usr/share/ncurses4/terminfo/g/gt100a
+/usr/share/ncurses4/terminfo/g/gt40
+/usr/share/ncurses4/terminfo/g/gt42
+/usr/share/ncurses4/terminfo/g/guru
+/usr/share/ncurses4/terminfo/g/guru+rv
+/usr/share/ncurses4/terminfo/g/guru+s
+/usr/share/ncurses4/terminfo/g/guru+unk
+/usr/share/ncurses4/terminfo/g/guru-24
+/usr/share/ncurses4/terminfo/g/guru-33
+/usr/share/ncurses4/terminfo/g/guru-33-rv
+/usr/share/ncurses4/terminfo/g/guru-33-s
+/usr/share/ncurses4/terminfo/g/guru-44
+/usr/share/ncurses4/terminfo/g/guru-44-s
+/usr/share/ncurses4/terminfo/g/guru-76
+/usr/share/ncurses4/terminfo/g/guru-76-lp
+/usr/share/ncurses4/terminfo/g/guru-76-s
+/usr/share/ncurses4/terminfo/g/guru-76-w
+/usr/share/ncurses4/terminfo/g/guru-76-w-s
+/usr/share/ncurses4/terminfo/g/guru-76-wm
+/usr/share/ncurses4/terminfo/g/guru-lp
+/usr/share/ncurses4/terminfo/g/guru-nctxt
+/usr/share/ncurses4/terminfo/g/guru-rv
+/usr/share/ncurses4/terminfo/g/guru-s
+/usr/share/ncurses4/terminfo/h
+/usr/share/ncurses4/terminfo/h/h-100
+/usr/share/ncurses4/terminfo/h/h-100bw
+/usr/share/ncurses4/terminfo/h/h100
+/usr/share/ncurses4/terminfo/h/h100bw
+/usr/share/ncurses4/terminfo/h/h19
+/usr/share/ncurses4/terminfo/h/h19-a
+/usr/share/ncurses4/terminfo/h/h19-b
+/usr/share/ncurses4/terminfo/h/h19-bs
+/usr/share/ncurses4/terminfo/h/h19-g
+/usr/share/ncurses4/terminfo/h/h19-smul
+/usr/share/ncurses4/terminfo/h/h19-u
+/usr/share/ncurses4/terminfo/h/h19-us
+/usr/share/ncurses4/terminfo/h/h19a
+/usr/share/ncurses4/terminfo/h/h19g
+/usr/share/ncurses4/terminfo/h/h19k
+/usr/share/ncurses4/terminfo/h/h19kermit
+/usr/share/ncurses4/terminfo/h/h19us
+/usr/share/ncurses4/terminfo/h/h29a-kc-bc
+/usr/share/ncurses4/terminfo/h/h29a-kc-uc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-bc
+/usr/share/ncurses4/terminfo/h/h29a-nkc-uc
+/usr/share/ncurses4/terminfo/h/h80
+/usr/share/ncurses4/terminfo/h/ha8675
+/usr/share/ncurses4/terminfo/h/ha8686
+/usr/share/ncurses4/terminfo/h/hazel
+/usr/share/ncurses4/terminfo/h/hds200
+/usr/share/ncurses4/terminfo/h/he80
+/usr/share/ncurses4/terminfo/h/heath
+/usr/share/ncurses4/terminfo/h/heath-19
+/usr/share/ncurses4/terminfo/h/heath-ansi
+/usr/share/ncurses4/terminfo/h/heathkit
+/usr/share/ncurses4/terminfo/h/heathkit-a
+/usr/share/ncurses4/terminfo/h/hft
+/usr/share/ncurses4/terminfo/h/hft-c
+/usr/share/ncurses4/terminfo/h/hirez100
+/usr/share/ncurses4/terminfo/h/hirez100-w
+/usr/share/ncurses4/terminfo/h/hmod1
+/usr/share/ncurses4/terminfo/h/hp
+/usr/share/ncurses4/terminfo/h/hp+arrows
+/usr/share/ncurses4/terminfo/h/hp+color
+/usr/share/ncurses4/terminfo/h/hp+labels
+/usr/share/ncurses4/terminfo/h/hp+pfk+arrows
+/usr/share/ncurses4/terminfo/h/hp+pfk+cr
+/usr/share/ncurses4/terminfo/h/hp+pfk-cr
+/usr/share/ncurses4/terminfo/h/hp+printer
+/usr/share/ncurses4/terminfo/h/hp110
+/usr/share/ncurses4/terminfo/h/hp150
+/usr/share/ncurses4/terminfo/h/hp2
+/usr/share/ncurses4/terminfo/h/hp236
+/usr/share/ncurses4/terminfo/h/hp2382
+/usr/share/ncurses4/terminfo/h/hp2382a
+/usr/share/ncurses4/terminfo/h/hp2392
+/usr/share/ncurses4/terminfo/h/hp2397
+/usr/share/ncurses4/terminfo/h/hp2397a
+/usr/share/ncurses4/terminfo/h/hp2621
+/usr/share/ncurses4/terminfo/h/hp2621-48
+/usr/share/ncurses4/terminfo/h/hp2621-a
+/usr/share/ncurses4/terminfo/h/hp2621-ba
+/usr/share/ncurses4/terminfo/h/hp2621-fl
+/usr/share/ncurses4/terminfo/h/hp2621-k45
+/usr/share/ncurses4/terminfo/h/hp2621-nl
+/usr/share/ncurses4/terminfo/h/hp2621-nt
+/usr/share/ncurses4/terminfo/h/hp2621-wl
+/usr/share/ncurses4/terminfo/h/hp2621A
+/usr/share/ncurses4/terminfo/h/hp2621a
+/usr/share/ncurses4/terminfo/h/hp2621a-a
+/usr/share/ncurses4/terminfo/h/hp2621b
+/usr/share/ncurses4/terminfo/h/hp2621b-kx
+/usr/share/ncurses4/terminfo/h/hp2621b-kx-p
+/usr/share/ncurses4/terminfo/h/hp2621b-p
+/usr/share/ncurses4/terminfo/h/hp2621k45
+/usr/share/ncurses4/terminfo/h/hp2621p
+/usr/share/ncurses4/terminfo/h/hp2621p-a
+/usr/share/ncurses4/terminfo/h/hp2622
+/usr/share/ncurses4/terminfo/h/hp2622a
+/usr/share/ncurses4/terminfo/h/hp2623
+/usr/share/ncurses4/terminfo/h/hp2623a
+/usr/share/ncurses4/terminfo/h/hp2624
+/usr/share/ncurses4/terminfo/h/hp2624-10p
+/usr/share/ncurses4/terminfo/h/hp2624a
+/usr/share/ncurses4/terminfo/h/hp2624a-10p
+/usr/share/ncurses4/terminfo/h/hp2624b
+/usr/share/ncurses4/terminfo/h/hp2624b-10p
+/usr/share/ncurses4/terminfo/h/hp2624b-10p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p
+/usr/share/ncurses4/terminfo/h/hp2624b-4p-p
+/usr/share/ncurses4/terminfo/h/hp2624b-p
+/usr/share/ncurses4/terminfo/h/hp2626
+/usr/share/ncurses4/terminfo/h/hp2626-12
+/usr/share/ncurses4/terminfo/h/hp2626-12-s
+/usr/share/ncurses4/terminfo/h/hp2626-12x40
+/usr/share/ncurses4/terminfo/h/hp2626-ns
+/usr/share/ncurses4/terminfo/h/hp2626-s
+/usr/share/ncurses4/terminfo/h/hp2626-x40
+/usr/share/ncurses4/terminfo/h/hp2626a
+/usr/share/ncurses4/terminfo/h/hp2626p
+/usr/share/ncurses4/terminfo/h/hp2627a
+/usr/share/ncurses4/terminfo/h/hp2627a-rev
+/usr/share/ncurses4/terminfo/h/hp2627c
+/usr/share/ncurses4/terminfo/h/hp262x
+/usr/share/ncurses4/terminfo/h/hp2640a
+/usr/share/ncurses4/terminfo/h/hp2640b
+/usr/share/ncurses4/terminfo/h/hp2641a
+/usr/share/ncurses4/terminfo/h/hp2644a
+/usr/share/ncurses4/terminfo/h/hp2645
+/usr/share/ncurses4/terminfo/h/hp2645a
+/usr/share/ncurses4/terminfo/h/hp2647a
+/usr/share/ncurses4/terminfo/h/hp2648
+/usr/share/ncurses4/terminfo/h/hp2648a
+/usr/share/ncurses4/terminfo/h/hp300h
+/usr/share/ncurses4/terminfo/h/hp45
+/usr/share/ncurses4/terminfo/h/hp700
+/usr/share/ncurses4/terminfo/h/hp700-wy
+/usr/share/ncurses4/terminfo/h/hp70092
+/usr/share/ncurses4/terminfo/h/hp70092A
+/usr/share/ncurses4/terminfo/h/hp70092a
+/usr/share/ncurses4/terminfo/h/hp9837
+/usr/share/ncurses4/terminfo/h/hp9845
+/usr/share/ncurses4/terminfo/h/hp98550
+/usr/share/ncurses4/terminfo/h/hp98550a
+/usr/share/ncurses4/terminfo/h/hp98720
+/usr/share/ncurses4/terminfo/h/hp98721
+/usr/share/ncurses4/terminfo/h/hpansi
+/usr/share/ncurses4/terminfo/h/hpex
+/usr/share/ncurses4/terminfo/h/hpex2
+/usr/share/ncurses4/terminfo/h/hpgeneric
+/usr/share/ncurses4/terminfo/h/hpsub
+/usr/share/ncurses4/terminfo/h/hpterm
+/usr/share/ncurses4/terminfo/h/htx11
+/usr/share/ncurses4/terminfo/h/hz1000
+/usr/share/ncurses4/terminfo/h/hz1420
+/usr/share/ncurses4/terminfo/h/hz1500
+/usr/share/ncurses4/terminfo/h/hz1510
+/usr/share/ncurses4/terminfo/h/hz1520
+/usr/share/ncurses4/terminfo/h/hz1520-noesc
+/usr/share/ncurses4/terminfo/h/hz1552
+/usr/share/ncurses4/terminfo/h/hz1552-rv
+/usr/share/ncurses4/terminfo/h/hz2000
+/usr/share/ncurses4/terminfo/i
+/usr/share/ncurses4/terminfo/i/i100
+/usr/share/ncurses4/terminfo/i/i3101
+/usr/share/ncurses4/terminfo/i/i3151
+/usr/share/ncurses4/terminfo/i/i3164
+/usr/share/ncurses4/terminfo/i/i400
+/usr/share/ncurses4/terminfo/i/ibcs2
+/usr/share/ncurses4/terminfo/i/ibm-apl
+/usr/share/ncurses4/terminfo/i/ibm-pc
+/usr/share/ncurses4/terminfo/i/ibm-system1
+/usr/share/ncurses4/terminfo/i/ibm3101
+/usr/share/ncurses4/terminfo/i/ibm3151
+/usr/share/ncurses4/terminfo/i/ibm3161
+/usr/share/ncurses4/terminfo/i/ibm3163
+/usr/share/ncurses4/terminfo/i/ibm3164
+/usr/share/ncurses4/terminfo/i/ibm327x
+/usr/share/ncurses4/terminfo/i/ibm5051
+/usr/share/ncurses4/terminfo/i/ibm5081
+/usr/share/ncurses4/terminfo/i/ibm5081-c
+/usr/share/ncurses4/terminfo/i/ibm5151
+/usr/share/ncurses4/terminfo/i/ibm5154
+/usr/share/ncurses4/terminfo/i/ibm5154-c
+/usr/share/ncurses4/terminfo/i/ibm6153
+/usr/share/ncurses4/terminfo/i/ibm6154
+/usr/share/ncurses4/terminfo/i/ibm6154-c
+/usr/share/ncurses4/terminfo/i/ibm6155
+/usr/share/ncurses4/terminfo/i/ibm8512
+/usr/share/ncurses4/terminfo/i/ibm8513
+/usr/share/ncurses4/terminfo/i/ibm8514
+/usr/share/ncurses4/terminfo/i/ibm8514-c
+/usr/share/ncurses4/terminfo/i/ibmaed
+/usr/share/ncurses4/terminfo/i/ibmapa16
+/usr/share/ncurses4/terminfo/i/ibmapa8
+/usr/share/ncurses4/terminfo/i/ibmapa8c
+/usr/share/ncurses4/terminfo/i/ibmapa8c-c
+/usr/share/ncurses4/terminfo/i/ibmega
+/usr/share/ncurses4/terminfo/i/ibmega-c
+/usr/share/ncurses4/terminfo/i/ibmmono
+/usr/share/ncurses4/terminfo/i/ibmmpel
+/usr/share/ncurses4/terminfo/i/ibmmpel-c
+/usr/share/ncurses4/terminfo/i/ibmpc
+/usr/share/ncurses4/terminfo/i/ibmpc3
+/usr/share/ncurses4/terminfo/i/ibmpc3r
+/usr/share/ncurses4/terminfo/i/ibmpc3r-mono
+/usr/share/ncurses4/terminfo/i/ibmpcx
+/usr/share/ncurses4/terminfo/i/ibmvga
+/usr/share/ncurses4/terminfo/i/ibmvga-c
+/usr/share/ncurses4/terminfo/i/ibmx
+/usr/share/ncurses4/terminfo/i/ifmr
+/usr/share/ncurses4/terminfo/i/ims-ansi
+/usr/share/ncurses4/terminfo/i/ims950
+/usr/share/ncurses4/terminfo/i/ims950-b
+/usr/share/ncurses4/terminfo/i/ims950-rv
+/usr/share/ncurses4/terminfo/i/infoton
+/usr/share/ncurses4/terminfo/i/intertec
+/usr/share/ncurses4/terminfo/i/intertube
+/usr/share/ncurses4/terminfo/i/intertube2
+/usr/share/ncurses4/terminfo/i/intext
+/usr/share/ncurses4/terminfo/i/intext2
+/usr/share/ncurses4/terminfo/i/intextii
+/usr/share/ncurses4/terminfo/i/ips
+/usr/share/ncurses4/terminfo/i/ipsi
+/usr/share/ncurses4/terminfo/i/iq120
+/usr/share/ncurses4/terminfo/i/iq140
+/usr/share/ncurses4/terminfo/i/iris-ansi
+/usr/share/ncurses4/terminfo/i/iris-ansi-ap
+/usr/share/ncurses4/terminfo/i/iris-color
+/usr/share/ncurses4/terminfo/i/iris40
+/usr/share/ncurses4/terminfo/j
+/usr/share/ncurses4/terminfo/j/jaixterm-m
+/usr/share/ncurses4/terminfo/j/jerq
+/usr/share/ncurses4/terminfo/k
+/usr/share/ncurses4/terminfo/k/k45
+/usr/share/ncurses4/terminfo/k/kaypro
+/usr/share/ncurses4/terminfo/k/kaypro2
+/usr/share/ncurses4/terminfo/k/kermit
+/usr/share/ncurses4/terminfo/k/kermit-am
+/usr/share/ncurses4/terminfo/k/klone+acs
+/usr/share/ncurses4/terminfo/k/klone+color
+/usr/share/ncurses4/terminfo/k/klone+koi8acs
+/usr/share/ncurses4/terminfo/k/klone+sgr
+/usr/share/ncurses4/terminfo/k/klone+sgr-dumb
+/usr/share/ncurses4/terminfo/k/kt7
+/usr/share/ncurses4/terminfo/k/kt7ix
+/usr/share/ncurses4/terminfo/k/kterm
+/usr/share/ncurses4/terminfo/k/ktm
+/usr/share/ncurses4/terminfo/l
+/usr/share/ncurses4/terminfo/l/la120
+/usr/share/ncurses4/terminfo/l/layer
+/usr/share/ncurses4/terminfo/l/linux
+/usr/share/ncurses4/terminfo/l/linux-c
+/usr/share/ncurses4/terminfo/l/linux-c-nc
+/usr/share/ncurses4/terminfo/l/linux-koi8
+/usr/share/ncurses4/terminfo/l/linux-koi8r
+/usr/share/ncurses4/terminfo/l/linux-m
+/usr/share/ncurses4/terminfo/l/linux-nic
+/usr/share/ncurses4/terminfo/l/lisa
+/usr/share/ncurses4/terminfo/l/lisaterm
+/usr/share/ncurses4/terminfo/l/lisaterm-w
+/usr/share/ncurses4/terminfo/l/liswb
+/usr/share/ncurses4/terminfo/l/ln03
+/usr/share/ncurses4/terminfo/l/ln03-w
+/usr/share/ncurses4/terminfo/l/lpr
+/usr/share/ncurses4/terminfo/l/luna
+/usr/share/ncurses4/terminfo/l/luna68k
+/usr/share/ncurses4/terminfo/m
+/usr/share/ncurses4/terminfo/m/m2-nam
+/usr/share/ncurses4/terminfo/m/mac
+/usr/share/ncurses4/terminfo/m/mac-w
+/usr/share/ncurses4/terminfo/m/macintosh
+/usr/share/ncurses4/terminfo/m/macterminal-w
+/usr/share/ncurses4/terminfo/m/mai
+/usr/share/ncurses4/terminfo/m/masscomp
+/usr/share/ncurses4/terminfo/m/masscomp1
+/usr/share/ncurses4/terminfo/m/masscomp2
+/usr/share/ncurses4/terminfo/m/mdl110
+/usr/share/ncurses4/terminfo/m/megatek
+/usr/share/ncurses4/terminfo/m/memhp
+/usr/share/ncurses4/terminfo/m/mgr
+/usr/share/ncurses4/terminfo/m/mgr-linux
+/usr/share/ncurses4/terminfo/m/mgr-sun
+/usr/share/ncurses4/terminfo/m/microb
+/usr/share/ncurses4/terminfo/m/microbee
+/usr/share/ncurses4/terminfo/m/microterm
+/usr/share/ncurses4/terminfo/m/microterm5
+/usr/share/ncurses4/terminfo/m/mime
+/usr/share/ncurses4/terminfo/m/mime-3ax
+/usr/share/ncurses4/terminfo/m/mime-fb
+/usr/share/ncurses4/terminfo/m/mime-hb
+/usr/share/ncurses4/terminfo/m/mime1
+/usr/share/ncurses4/terminfo/m/mime2
+/usr/share/ncurses4/terminfo/m/mime2a
+/usr/share/ncurses4/terminfo/m/mime2a-s
+/usr/share/ncurses4/terminfo/m/mime2a-v
+/usr/share/ncurses4/terminfo/m/mime314
+/usr/share/ncurses4/terminfo/m/mime340
+/usr/share/ncurses4/terminfo/m/mime3a
+/usr/share/ncurses4/terminfo/m/mime3ax
+/usr/share/ncurses4/terminfo/m/mimei
+/usr/share/ncurses4/terminfo/m/mimeii
+/usr/share/ncurses4/terminfo/m/minitel
+/usr/share/ncurses4/terminfo/m/minitel-2
+/usr/share/ncurses4/terminfo/m/minitel-2-nam
+/usr/share/ncurses4/terminfo/m/minix
+/usr/share/ncurses4/terminfo/m/minix-old
+/usr/share/ncurses4/terminfo/m/minix-old-am
+/usr/share/ncurses4/terminfo/m/mm314
+/usr/share/ncurses4/terminfo/m/mm340
+/usr/share/ncurses4/terminfo/m/mod
+/usr/share/ncurses4/terminfo/m/mod24
+/usr/share/ncurses4/terminfo/m/modgraph
+/usr/share/ncurses4/terminfo/m/modgraph2
+/usr/share/ncurses4/terminfo/m/modgraph48
+/usr/share/ncurses4/terminfo/m/mono-emx
+/usr/share/ncurses4/terminfo/m/msk227
+/usr/share/ncurses4/terminfo/m/msk22714
+/usr/share/ncurses4/terminfo/m/msk227am
+/usr/share/ncurses4/terminfo/m/mskermit227
+/usr/share/ncurses4/terminfo/m/mskermit22714
+/usr/share/ncurses4/terminfo/m/mskermit227am
+/usr/share/ncurses4/terminfo/m/mt-70
+/usr/share/ncurses4/terminfo/m/mt4520-rv
+/usr/share/ncurses4/terminfo/m/mt70
+/usr/share/ncurses4/terminfo/n
+/usr/share/ncurses4/terminfo/n/nansi.sys
+/usr/share/ncurses4/terminfo/n/nansi.sysk
+/usr/share/ncurses4/terminfo/n/nansisys
+/usr/share/ncurses4/terminfo/n/nansisysk
+/usr/share/ncurses4/terminfo/n/ncr7900
+/usr/share/ncurses4/terminfo/n/ncr7900i
+/usr/share/ncurses4/terminfo/n/ncr7900iv
+/usr/share/ncurses4/terminfo/n/ncr7901
+/usr/share/ncurses4/terminfo/n/nec
+/usr/share/ncurses4/terminfo/n/nec5520
+/usr/share/ncurses4/terminfo/n/newhp
+/usr/share/ncurses4/terminfo/n/newhpkeyboard
+/usr/share/ncurses4/terminfo/n/news
+/usr/share/ncurses4/terminfo/n/news-29
+/usr/share/ncurses4/terminfo/n/news-29-euc
+/usr/share/ncurses4/terminfo/n/news-29-sjis
+/usr/share/ncurses4/terminfo/n/news-33
+/usr/share/ncurses4/terminfo/n/news-33-euc
+/usr/share/ncurses4/terminfo/n/news-33-sjis
+/usr/share/ncurses4/terminfo/n/news-42
+/usr/share/ncurses4/terminfo/n/news-42-euc
+/usr/share/ncurses4/terminfo/n/news-42-sjis
+/usr/share/ncurses4/terminfo/n/news-a
+/usr/share/ncurses4/terminfo/n/news-o
+/usr/share/ncurses4/terminfo/n/news-old-unk
+/usr/share/ncurses4/terminfo/n/news-unk
+/usr/share/ncurses4/terminfo/n/news28
+/usr/share/ncurses4/terminfo/n/news28-a
+/usr/share/ncurses4/terminfo/n/news29
+/usr/share/ncurses4/terminfo/n/news31
+/usr/share/ncurses4/terminfo/n/news31-a
+/usr/share/ncurses4/terminfo/n/news31-o
+/usr/share/ncurses4/terminfo/n/news33
+/usr/share/ncurses4/terminfo/n/news40
+/usr/share/ncurses4/terminfo/n/news40-a
+/usr/share/ncurses4/terminfo/n/news40-o
+/usr/share/ncurses4/terminfo/n/news42
+/usr/share/ncurses4/terminfo/n/newscbm
+/usr/share/ncurses4/terminfo/n/newscbm-a
+/usr/share/ncurses4/terminfo/n/newscbm-o
+/usr/share/ncurses4/terminfo/n/newscbm33
+/usr/share/ncurses4/terminfo/n/next
+/usr/share/ncurses4/terminfo/n/nextshell
+/usr/share/ncurses4/terminfo/n/northstar
+/usr/share/ncurses4/terminfo/n/nwe501
+/usr/share/ncurses4/terminfo/n/nwe501-a
+/usr/share/ncurses4/terminfo/n/nwe501-o
+/usr/share/ncurses4/terminfo/n/nwp-511
+/usr/share/ncurses4/terminfo/n/nwp-517
+/usr/share/ncurses4/terminfo/n/nwp-517-w
+/usr/share/ncurses4/terminfo/n/nwp251-a
+/usr/share/ncurses4/terminfo/n/nwp251-o
+/usr/share/ncurses4/terminfo/n/nwp511
+/usr/share/ncurses4/terminfo/n/nwp512
+/usr/share/ncurses4/terminfo/n/nwp512-a
+/usr/share/ncurses4/terminfo/n/nwp512-o
+/usr/share/ncurses4/terminfo/n/nwp513
+/usr/share/ncurses4/terminfo/n/nwp513-a
+/usr/share/ncurses4/terminfo/n/nwp513-o
+/usr/share/ncurses4/terminfo/n/nwp514
+/usr/share/ncurses4/terminfo/n/nwp514-a
+/usr/share/ncurses4/terminfo/n/nwp514-o
+/usr/share/ncurses4/terminfo/n/nwp517
+/usr/share/ncurses4/terminfo/n/nwp517-w
+/usr/share/ncurses4/terminfo/n/nwp518
+/usr/share/ncurses4/terminfo/n/nwp518-a
+/usr/share/ncurses4/terminfo/n/nwp518-o
+/usr/share/ncurses4/terminfo/o
+/usr/share/ncurses4/terminfo/o/o31
+/usr/share/ncurses4/terminfo/o/o4112-nd
+/usr/share/ncurses4/terminfo/o/o85h
+/usr/share/ncurses4/terminfo/o/oabm85h
+/usr/share/ncurses4/terminfo/o/oblit
+/usr/share/ncurses4/terminfo/o/oc100
+/usr/share/ncurses4/terminfo/o/oconcept
+/usr/share/ncurses4/terminfo/o/ojerq
+/usr/share/ncurses4/terminfo/o/oldibmpc3
+/usr/share/ncurses4/terminfo/o/oldpc3
+/usr/share/ncurses4/terminfo/o/oldsun
+/usr/share/ncurses4/terminfo/o/omron
+/usr/share/ncurses4/terminfo/o/opus3n1+
+/usr/share/ncurses4/terminfo/o/origibmpc3
+/usr/share/ncurses4/terminfo/o/origpc3
+/usr/share/ncurses4/terminfo/o/os9LII
+/usr/share/ncurses4/terminfo/o/osborne
+/usr/share/ncurses4/terminfo/o/osborne-w
+/usr/share/ncurses4/terminfo/o/osborne1
+/usr/share/ncurses4/terminfo/o/osborne1-w
+/usr/share/ncurses4/terminfo/o/osexec
+/usr/share/ncurses4/terminfo/o/otek4112
+/usr/share/ncurses4/terminfo/o/otek4113
+/usr/share/ncurses4/terminfo/o/otek4114
+/usr/share/ncurses4/terminfo/o/otek4115
+/usr/share/ncurses4/terminfo/o/owl
+/usr/share/ncurses4/terminfo/p
+/usr/share/ncurses4/terminfo/p/p12
+/usr/share/ncurses4/terminfo/p/p12-m
+/usr/share/ncurses4/terminfo/p/p12-m-w
+/usr/share/ncurses4/terminfo/p/p12-w
+/usr/share/ncurses4/terminfo/p/p14
+/usr/share/ncurses4/terminfo/p/p14-m
+/usr/share/ncurses4/terminfo/p/p14-m-w
+/usr/share/ncurses4/terminfo/p/p14-w
+/usr/share/ncurses4/terminfo/p/p19
+/usr/share/ncurses4/terminfo/p/p4
+/usr/share/ncurses4/terminfo/p/p5
+/usr/share/ncurses4/terminfo/p/p7
+/usr/share/ncurses4/terminfo/p/p8
+/usr/share/ncurses4/terminfo/p/p8-w
+/usr/share/ncurses4/terminfo/p/p8gl
+/usr/share/ncurses4/terminfo/p/p9
+/usr/share/ncurses4/terminfo/p/p9-8
+/usr/share/ncurses4/terminfo/p/p9-8-w
+/usr/share/ncurses4/terminfo/p/p9-w
+/usr/share/ncurses4/terminfo/p/pc-coherent
+/usr/share/ncurses4/terminfo/p/pc-minix
+/usr/share/ncurses4/terminfo/p/pc-venix
+/usr/share/ncurses4/terminfo/p/pc3
+/usr/share/ncurses4/terminfo/p/pc3-bold
+/usr/share/ncurses4/terminfo/p/pc3r
+/usr/share/ncurses4/terminfo/p/pc3r-m
+/usr/share/ncurses4/terminfo/p/pc6300plus
+/usr/share/ncurses4/terminfo/p/pc7300
+/usr/share/ncurses4/terminfo/p/pcansi
+/usr/share/ncurses4/terminfo/p/pcansi-25
+/usr/share/ncurses4/terminfo/p/pcansi-25-m
+/usr/share/ncurses4/terminfo/p/pcansi-33
+/usr/share/ncurses4/terminfo/p/pcansi-33-m
+/usr/share/ncurses4/terminfo/p/pcansi-43
+/usr/share/ncurses4/terminfo/p/pcansi-43-m
+/usr/share/ncurses4/terminfo/p/pcansi-m
+/usr/share/ncurses4/terminfo/p/pcansi-mono
+/usr/share/ncurses4/terminfo/p/pcansi25
+/usr/share/ncurses4/terminfo/p/pcansi25m
+/usr/share/ncurses4/terminfo/p/pcansi33
+/usr/share/ncurses4/terminfo/p/pcansi33m
+/usr/share/ncurses4/terminfo/p/pcansi43
+/usr/share/ncurses4/terminfo/p/pccons
+/usr/share/ncurses4/terminfo/p/pcconsole
+/usr/share/ncurses4/terminfo/p/pcix
+/usr/share/ncurses4/terminfo/p/pckermit
+/usr/share/ncurses4/terminfo/p/pckermit12
+/usr/share/ncurses4/terminfo/p/pckermit120
+/usr/share/ncurses4/terminfo/p/pcplot
+/usr/share/ncurses4/terminfo/p/pcvt25
+/usr/share/ncurses4/terminfo/p/pcvt25w
+/usr/share/ncurses4/terminfo/p/pcvt28
+/usr/share/ncurses4/terminfo/p/pcvt28w
+/usr/share/ncurses4/terminfo/p/pcvt35
+/usr/share/ncurses4/terminfo/p/pcvt35w
+/usr/share/ncurses4/terminfo/p/pcvt40
+/usr/share/ncurses4/terminfo/p/pcvt40w
+/usr/share/ncurses4/terminfo/p/pcvt43
+/usr/share/ncurses4/terminfo/p/pcvt43w
+/usr/share/ncurses4/terminfo/p/pcvt50
+/usr/share/ncurses4/terminfo/p/pcvt50w
+/usr/share/ncurses4/terminfo/p/pcvtXX
+/usr/share/ncurses4/terminfo/p/pcz19
+/usr/share/ncurses4/terminfo/p/pe1100
+/usr/share/ncurses4/terminfo/p/pe1200
+/usr/share/ncurses4/terminfo/p/pe1251
+/usr/share/ncurses4/terminfo/p/pe550
+/usr/share/ncurses4/terminfo/p/pe6100
+/usr/share/ncurses4/terminfo/p/pe6300
+/usr/share/ncurses4/terminfo/p/pe6312
+/usr/share/ncurses4/terminfo/p/pe7000c
+/usr/share/ncurses4/terminfo/p/pe7000m
+/usr/share/ncurses4/terminfo/p/pilot
+/usr/share/ncurses4/terminfo/p/printer
+/usr/share/ncurses4/terminfo/p/prism12
+/usr/share/ncurses4/terminfo/p/prism12-m
+/usr/share/ncurses4/terminfo/p/prism12-m-w
+/usr/share/ncurses4/terminfo/p/prism12-w
+/usr/share/ncurses4/terminfo/p/prism14
+/usr/share/ncurses4/terminfo/p/prism14-m
+/usr/share/ncurses4/terminfo/p/prism14-m-w
+/usr/share/ncurses4/terminfo/p/prism14-w
+/usr/share/ncurses4/terminfo/p/prism2
+/usr/share/ncurses4/terminfo/p/prism4
+/usr/share/ncurses4/terminfo/p/prism5
+/usr/share/ncurses4/terminfo/p/prism7
+/usr/share/ncurses4/terminfo/p/prism8
+/usr/share/ncurses4/terminfo/p/prism8-w
+/usr/share/ncurses4/terminfo/p/prism8gl
+/usr/share/ncurses4/terminfo/p/prism9
+/usr/share/ncurses4/terminfo/p/prism9-8
+/usr/share/ncurses4/terminfo/p/prism9-8-w
+/usr/share/ncurses4/terminfo/p/prism9-w
+/usr/share/ncurses4/terminfo/p/pro350
+/usr/share/ncurses4/terminfo/p/ps300
+/usr/share/ncurses4/terminfo/p/psterm
+/usr/share/ncurses4/terminfo/p/psterm-80x24
+/usr/share/ncurses4/terminfo/p/psterm-90x28
+/usr/share/ncurses4/terminfo/p/psterm-96x48
+/usr/share/ncurses4/terminfo/p/psterm-basic
+/usr/share/ncurses4/terminfo/p/psterm-fast
+/usr/share/ncurses4/terminfo/p/psx_ansi
+/usr/share/ncurses4/terminfo/p/pt100
+/usr/share/ncurses4/terminfo/p/pt100w
+/usr/share/ncurses4/terminfo/p/pt200
+/usr/share/ncurses4/terminfo/p/pt200w
+/usr/share/ncurses4/terminfo/p/pt210
+/usr/share/ncurses4/terminfo/p/pt250
+/usr/share/ncurses4/terminfo/p/pt250w
+/usr/share/ncurses4/terminfo/p/pt505
+/usr/share/ncurses4/terminfo/p/pt505-22
+/usr/share/ncurses4/terminfo/p/pt505-24
+/usr/share/ncurses4/terminfo/p/pty
+/usr/share/ncurses4/terminfo/q
+/usr/share/ncurses4/terminfo/q/qdcons
+/usr/share/ncurses4/terminfo/q/qdss
+/usr/share/ncurses4/terminfo/q/qnx
+/usr/share/ncurses4/terminfo/q/qnx4
+/usr/share/ncurses4/terminfo/q/qume
+/usr/share/ncurses4/terminfo/q/qume5
+/usr/share/ncurses4/terminfo/q/qvt101
+/usr/share/ncurses4/terminfo/q/qvt101+
+/usr/share/ncurses4/terminfo/q/qvt101p
+/usr/share/ncurses4/terminfo/q/qvt102
+/usr/share/ncurses4/terminfo/q/qvt103
+/usr/share/ncurses4/terminfo/q/qvt103-w
+/usr/share/ncurses4/terminfo/q/qvt108
+/usr/share/ncurses4/terminfo/q/qvt119
+/usr/share/ncurses4/terminfo/q/qvt119+
+/usr/share/ncurses4/terminfo/q/qvt119+-25
+/usr/share/ncurses4/terminfo/q/qvt119+-25-w
+/usr/share/ncurses4/terminfo/q/qvt119+-w
+/usr/share/ncurses4/terminfo/q/qvt119-25-w
+/usr/share/ncurses4/terminfo/q/qvt119-w
+/usr/share/ncurses4/terminfo/q/qvt119p
+/usr/share/ncurses4/terminfo/q/qvt119p-25
+/usr/share/ncurses4/terminfo/q/qvt119p-25-w
+/usr/share/ncurses4/terminfo/q/qvt119p-w
+/usr/share/ncurses4/terminfo/q/qvt203
+/usr/share/ncurses4/terminfo/q/qvt203+
+/usr/share/ncurses4/terminfo/q/qvt203-25
+/usr/share/ncurses4/terminfo/q/qvt203-25-w
+/usr/share/ncurses4/terminfo/q/qvt203-w
+/usr/share/ncurses4/terminfo/q/qvt203-w-am
+/usr/share/ncurses4/terminfo/r
+/usr/share/ncurses4/terminfo/r/rbcomm
+/usr/share/ncurses4/terminfo/r/rbcomm-nam
+/usr/share/ncurses4/terminfo/r/rbcomm-w
+/usr/share/ncurses4/terminfo/r/rca
+/usr/share/ncurses4/terminfo/r/rebus3180
+/usr/share/ncurses4/terminfo/r/regent
+/usr/share/ncurses4/terminfo/r/regent100
+/usr/share/ncurses4/terminfo/r/regent20
+/usr/share/ncurses4/terminfo/r/regent200
+/usr/share/ncurses4/terminfo/r/regent25
+/usr/share/ncurses4/terminfo/r/regent40
+/usr/share/ncurses4/terminfo/r/regent40+
+/usr/share/ncurses4/terminfo/r/regent60
+/usr/share/ncurses4/terminfo/r/rt6221
+/usr/share/ncurses4/terminfo/r/rt6221-w
+/usr/share/ncurses4/terminfo/r/rtpc
+/usr/share/ncurses4/terminfo/r/rxvt
+/usr/share/ncurses4/terminfo/r/rxvt-basic
+/usr/share/ncurses4/terminfo/s
+/usr/share/ncurses4/terminfo/s/s
+/usr/share/ncurses4/terminfo/s/s4
+/usr/share/ncurses4/terminfo/s/sb1
+/usr/share/ncurses4/terminfo/s/sb2
+/usr/share/ncurses4/terminfo/s/sb3
+/usr/share/ncurses4/terminfo/s/sbi
+/usr/share/ncurses4/terminfo/s/sbobcat
+/usr/share/ncurses4/terminfo/s/sc410
+/usr/share/ncurses4/terminfo/s/sc415
+/usr/share/ncurses4/terminfo/s/scanset
+/usr/share/ncurses4/terminfo/s/scoansi
+/usr/share/ncurses4/terminfo/s/screen
+/usr/share/ncurses4/terminfo/s/screen-w
+/usr/share/ncurses4/terminfo/s/screen2
+/usr/share/ncurses4/terminfo/s/screen3
+/usr/share/ncurses4/terminfo/s/screwpoint
+/usr/share/ncurses4/terminfo/s/scrhp
+/usr/share/ncurses4/terminfo/s/simterm
+/usr/share/ncurses4/terminfo/s/soroc
+/usr/share/ncurses4/terminfo/s/soroc120
+/usr/share/ncurses4/terminfo/s/soroc140
+/usr/share/ncurses4/terminfo/s/spinwriter
+/usr/share/ncurses4/terminfo/s/st52
+/usr/share/ncurses4/terminfo/s/sun
+/usr/share/ncurses4/terminfo/s/sun-1
+/usr/share/ncurses4/terminfo/s/sun-12
+/usr/share/ncurses4/terminfo/s/sun-17
+/usr/share/ncurses4/terminfo/s/sun-24
+/usr/share/ncurses4/terminfo/s/sun-34
+/usr/share/ncurses4/terminfo/s/sun-48
+/usr/share/ncurses4/terminfo/s/sun-c
+/usr/share/ncurses4/terminfo/s/sun-cmd
+/usr/share/ncurses4/terminfo/s/sun-e
+/usr/share/ncurses4/terminfo/s/sun-e-s
+/usr/share/ncurses4/terminfo/s/sun-il
+/usr/share/ncurses4/terminfo/s/sun-nic
+/usr/share/ncurses4/terminfo/s/sun-s
+/usr/share/ncurses4/terminfo/s/sun-s-e
+/usr/share/ncurses4/terminfo/s/sun-ss5
+/usr/share/ncurses4/terminfo/s/sun1
+/usr/share/ncurses4/terminfo/s/sun2
+/usr/share/ncurses4/terminfo/s/sune
+/usr/share/ncurses4/terminfo/s/superbee
+/usr/share/ncurses4/terminfo/s/superbee-xsb
+/usr/share/ncurses4/terminfo/s/superbeeic
+/usr/share/ncurses4/terminfo/s/superbrain
+/usr/share/ncurses4/terminfo/s/sv80
+/usr/share/ncurses4/terminfo/s/swtp
+/usr/share/ncurses4/terminfo/s/synertek
+/usr/share/ncurses4/terminfo/s/synertek380
+/usr/share/ncurses4/terminfo/s/system1
+/usr/share/ncurses4/terminfo/t
+/usr/share/ncurses4/terminfo/t/t10
+/usr/share/ncurses4/terminfo/t/t1061
+/usr/share/ncurses4/terminfo/t/t1061f
+/usr/share/ncurses4/terminfo/t/t16
+/usr/share/ncurses4/terminfo/t/t3700
+/usr/share/ncurses4/terminfo/t/t3800
+/usr/share/ncurses4/terminfo/t/t653x
+/usr/share/ncurses4/terminfo/t/tab
+/usr/share/ncurses4/terminfo/t/tab132
+/usr/share/ncurses4/terminfo/t/tab132-15
+/usr/share/ncurses4/terminfo/t/tab132-rv
+/usr/share/ncurses4/terminfo/t/tab132-w
+/usr/share/ncurses4/terminfo/t/tab132-w-rv
+/usr/share/ncurses4/terminfo/t/tandem6510
+/usr/share/ncurses4/terminfo/t/tandem653
+/usr/share/ncurses4/terminfo/t/tek
+/usr/share/ncurses4/terminfo/t/tek4012
+/usr/share/ncurses4/terminfo/t/tek4013
+/usr/share/ncurses4/terminfo/t/tek4014
+/usr/share/ncurses4/terminfo/t/tek4014-sm
+/usr/share/ncurses4/terminfo/t/tek4015
+/usr/share/ncurses4/terminfo/t/tek4015-sm
+/usr/share/ncurses4/terminfo/t/tek4023
+/usr/share/ncurses4/terminfo/t/tek4024
+/usr/share/ncurses4/terminfo/t/tek4025
+/usr/share/ncurses4/terminfo/t/tek4025-17
+/usr/share/ncurses4/terminfo/t/tek4025-17-ws
+/usr/share/ncurses4/terminfo/t/tek4025-cr
+/usr/share/ncurses4/terminfo/t/tek4025-ex
+/usr/share/ncurses4/terminfo/t/tek4025a
+/usr/share/ncurses4/terminfo/t/tek4025ex
+/usr/share/ncurses4/terminfo/t/tek4027
+/usr/share/ncurses4/terminfo/t/tek4027-ex
+/usr/share/ncurses4/terminfo/t/tek4105
+/usr/share/ncurses4/terminfo/t/tek4105-30
+/usr/share/ncurses4/terminfo/t/tek4105a
+/usr/share/ncurses4/terminfo/t/tek4106brl
+/usr/share/ncurses4/terminfo/t/tek4107
+/usr/share/ncurses4/terminfo/t/tek4107brl
+/usr/share/ncurses4/terminfo/t/tek4109
+/usr/share/ncurses4/terminfo/t/tek4109brl
+/usr/share/ncurses4/terminfo/t/tek4112
+/usr/share/ncurses4/terminfo/t/tek4112-5
+/usr/share/ncurses4/terminfo/t/tek4112-nd
+/usr/share/ncurses4/terminfo/t/tek4113
+/usr/share/ncurses4/terminfo/t/tek4113-34
+/usr/share/ncurses4/terminfo/t/tek4113-nd
+/usr/share/ncurses4/terminfo/t/tek4114
+/usr/share/ncurses4/terminfo/t/tek4115
+/usr/share/ncurses4/terminfo/t/tek4125
+/usr/share/ncurses4/terminfo/t/tek4205
+/usr/share/ncurses4/terminfo/t/tek4207
+/usr/share/ncurses4/terminfo/t/tek4207-s
+/usr/share/ncurses4/terminfo/t/tek4404
+/usr/share/ncurses4/terminfo/t/teleray
+/usr/share/ncurses4/terminfo/t/teletec
+/usr/share/ncurses4/terminfo/t/terminet
+/usr/share/ncurses4/terminfo/t/terminet1200
+/usr/share/ncurses4/terminfo/t/terminet300
+/usr/share/ncurses4/terminfo/t/tgtelnet
+/usr/share/ncurses4/terminfo/t/ti700
+/usr/share/ncurses4/terminfo/t/ti733
+/usr/share/ncurses4/terminfo/t/ti735
+/usr/share/ncurses4/terminfo/t/ti745
+/usr/share/ncurses4/terminfo/t/ti800
+/usr/share/ncurses4/terminfo/t/ti916
+/usr/share/ncurses4/terminfo/t/ti916-132
+/usr/share/ncurses4/terminfo/t/ti916-220-7
+/usr/share/ncurses4/terminfo/t/ti916-220-8
+/usr/share/ncurses4/terminfo/t/ti916-8
+/usr/share/ncurses4/terminfo/t/ti916-8-132
+/usr/share/ncurses4/terminfo/t/ti924
+/usr/share/ncurses4/terminfo/t/ti924-8
+/usr/share/ncurses4/terminfo/t/ti924-8w
+/usr/share/ncurses4/terminfo/t/ti924w
+/usr/share/ncurses4/terminfo/t/ti926
+/usr/share/ncurses4/terminfo/t/ti926-8
+/usr/share/ncurses4/terminfo/t/ti928
+/usr/share/ncurses4/terminfo/t/ti928-8
+/usr/share/ncurses4/terminfo/t/ti931
+/usr/share/ncurses4/terminfo/t/ti_ansi
+/usr/share/ncurses4/terminfo/t/tn1200
+/usr/share/ncurses4/terminfo/t/tn300
+/usr/share/ncurses4/terminfo/t/trs16
+/usr/share/ncurses4/terminfo/t/trs2
+/usr/share/ncurses4/terminfo/t/trs80II
+/usr/share/ncurses4/terminfo/t/trsII
+/usr/share/ncurses4/terminfo/t/ts-1
+/usr/share/ncurses4/terminfo/t/ts-1p
+/usr/share/ncurses4/terminfo/t/ts1
+/usr/share/ncurses4/terminfo/t/ts100
+/usr/share/ncurses4/terminfo/t/ts100-ctxt
+/usr/share/ncurses4/terminfo/t/ts100-sp
+/usr/share/ncurses4/terminfo/t/ts1p
+/usr/share/ncurses4/terminfo/t/tt505-22
+/usr/share/ncurses4/terminfo/t/tty33
+/usr/share/ncurses4/terminfo/t/tty35
+/usr/share/ncurses4/terminfo/t/tty37
+/usr/share/ncurses4/terminfo/t/tty40
+/usr/share/ncurses4/terminfo/t/tty43
+/usr/share/ncurses4/terminfo/t/tty4420
+/usr/share/ncurses4/terminfo/t/tty4424
+/usr/share/ncurses4/terminfo/t/tty4424-1
+/usr/share/ncurses4/terminfo/t/tty4424m
+/usr/share/ncurses4/terminfo/t/tty4426
+/usr/share/ncurses4/terminfo/t/tty5410
+/usr/share/ncurses4/terminfo/t/tty5410-w
+/usr/share/ncurses4/terminfo/t/tty5410v1
+/usr/share/ncurses4/terminfo/t/tty5410v1-w
+/usr/share/ncurses4/terminfo/t/tty5420
+/usr/share/ncurses4/terminfo/t/tty5420+nl
+/usr/share/ncurses4/terminfo/t/tty5420-nl
+/usr/share/ncurses4/terminfo/t/tty5420-rv
+/usr/share/ncurses4/terminfo/t/tty5420-rv-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w
+/usr/share/ncurses4/terminfo/t/tty5420-w-nl
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv
+/usr/share/ncurses4/terminfo/t/tty5420-w-rv-n
+/usr/share/ncurses4/terminfo/t/tty5425
+/usr/share/ncurses4/terminfo/t/tty5425-nl
+/usr/share/ncurses4/terminfo/t/tty5425-w
+/usr/share/ncurses4/terminfo/t/tty5620
+/usr/share/ncurses4/terminfo/t/tty5620-1
+/usr/share/ncurses4/terminfo/t/tty5620-24
+/usr/share/ncurses4/terminfo/t/tty5620-34
+/usr/share/ncurses4/terminfo/t/tty5620-s
+/usr/share/ncurses4/terminfo/t/ttydmd
+/usr/share/ncurses4/terminfo/t/tvi-2p
+/usr/share/ncurses4/terminfo/t/tvi803
+/usr/share/ncurses4/terminfo/t/tvi9065
+/usr/share/ncurses4/terminfo/t/tvi910
+/usr/share/ncurses4/terminfo/t/tvi910+
+/usr/share/ncurses4/terminfo/t/tvi912
+/usr/share/ncurses4/terminfo/t/tvi912-2p
+/usr/share/ncurses4/terminfo/t/tvi912b
+/usr/share/ncurses4/terminfo/t/tvi912c
+/usr/share/ncurses4/terminfo/t/tvi912cc
+/usr/share/ncurses4/terminfo/t/tvi914
+/usr/share/ncurses4/terminfo/t/tvi920
+/usr/share/ncurses4/terminfo/t/tvi920-2p
+/usr/share/ncurses4/terminfo/t/tvi920b
+/usr/share/ncurses4/terminfo/t/tvi920c
+/usr/share/ncurses4/terminfo/t/tvi921
+/usr/share/ncurses4/terminfo/t/tvi924
+/usr/share/ncurses4/terminfo/t/tvi925
+/usr/share/ncurses4/terminfo/t/tvi925-hi
+/usr/share/ncurses4/terminfo/t/tvi92B
+/usr/share/ncurses4/terminfo/t/tvi92D
+/usr/share/ncurses4/terminfo/t/tvi950
+/usr/share/ncurses4/terminfo/t/tvi950-2p
+/usr/share/ncurses4/terminfo/t/tvi950-4p
+/usr/share/ncurses4/terminfo/t/tvi950-rv
+/usr/share/ncurses4/terminfo/t/tvi950-rv-2p
+/usr/share/ncurses4/terminfo/t/tvi950-rv-4p
+/usr/share/ncurses4/terminfo/t/tvi955
+/usr/share/ncurses4/terminfo/t/tvi955-hb
+/usr/share/ncurses4/terminfo/t/tvi955-w
+/usr/share/ncurses4/terminfo/t/tvi970
+/usr/share/ncurses4/terminfo/t/tvi970-2p
+/usr/share/ncurses4/terminfo/t/tvi970-vb
+/usr/share/ncurses4/terminfo/t/tvipt
+/usr/share/ncurses4/terminfo/u
+/usr/share/ncurses4/terminfo/u/ultima2
+/usr/share/ncurses4/terminfo/u/ultimaII
+/usr/share/ncurses4/terminfo/u/uniterm
+/usr/share/ncurses4/terminfo/u/uniterm49
+/usr/share/ncurses4/terminfo/u/unixpc
+/usr/share/ncurses4/terminfo/u/unknown
+/usr/share/ncurses4/terminfo/u/uts30
+/usr/share/ncurses4/terminfo/v
+/usr/share/ncurses4/terminfo/v/v200-nam
+/usr/share/ncurses4/terminfo/v/v320n
+/usr/share/ncurses4/terminfo/v/v3220
+/usr/share/ncurses4/terminfo/v/v5410
+/usr/share/ncurses4/terminfo/v/vapple
+/usr/share/ncurses4/terminfo/v/vc103
+/usr/share/ncurses4/terminfo/v/vc203
+/usr/share/ncurses4/terminfo/v/vc303
+/usr/share/ncurses4/terminfo/v/vc303a
+/usr/share/ncurses4/terminfo/v/vc403a
+/usr/share/ncurses4/terminfo/v/vc404
+/usr/share/ncurses4/terminfo/v/vc404-s
+/usr/share/ncurses4/terminfo/v/vc414
+/usr/share/ncurses4/terminfo/v/vc414h
+/usr/share/ncurses4/terminfo/v/vc415
+/usr/share/ncurses4/terminfo/v/venix
+/usr/share/ncurses4/terminfo/v/versaterm
+/usr/share/ncurses4/terminfo/v/vi200
+/usr/share/ncurses4/terminfo/v/vi200-f
+/usr/share/ncurses4/terminfo/v/vi200-rv
+/usr/share/ncurses4/terminfo/v/vi300
+/usr/share/ncurses4/terminfo/v/vi300-old
+/usr/share/ncurses4/terminfo/v/vi50
+/usr/share/ncurses4/terminfo/v/vi500
+/usr/share/ncurses4/terminfo/v/vi50adm
+/usr/share/ncurses4/terminfo/v/vi55
+/usr/share/ncurses4/terminfo/v/vi550
+/usr/share/ncurses4/terminfo/v/vi603
+/usr/share/ncurses4/terminfo/v/viewpoint
+/usr/share/ncurses4/terminfo/v/viewpoint3a+
+/usr/share/ncurses4/terminfo/v/viewpoint60
+/usr/share/ncurses4/terminfo/v/viewpoint90
+/usr/share/ncurses4/terminfo/v/visa50
+/usr/share/ncurses4/terminfo/v/visual603
+/usr/share/ncurses4/terminfo/v/vitty
+/usr/share/ncurses4/terminfo/v/vk100
+/usr/share/ncurses4/terminfo/v/vp3a+
+/usr/share/ncurses4/terminfo/v/vp60
+/usr/share/ncurses4/terminfo/v/vp90
+/usr/share/ncurses4/terminfo/v/vremote
+/usr/share/ncurses4/terminfo/v/vs100
+/usr/share/ncurses4/terminfo/v/vs100-x10
+/usr/share/ncurses4/terminfo/v/vsc
+/usr/share/ncurses4/terminfo/v/vt-61
+/usr/share/ncurses4/terminfo/v/vt100
+/usr/share/ncurses4/terminfo/v/vt100-am
+/usr/share/ncurses4/terminfo/v/vt100-bm
+/usr/share/ncurses4/terminfo/v/vt100-bm-o
+/usr/share/ncurses4/terminfo/v/vt100-bot-s
+/usr/share/ncurses4/terminfo/v/vt100-nam
+/usr/share/ncurses4/terminfo/v/vt100-nam-w
+/usr/share/ncurses4/terminfo/v/vt100-nav
+/usr/share/ncurses4/terminfo/v/vt100-nav-w
+/usr/share/ncurses4/terminfo/v/vt100-s
+/usr/share/ncurses4/terminfo/v/vt100-s-bot
+/usr/share/ncurses4/terminfo/v/vt100-s-top
+/usr/share/ncurses4/terminfo/v/vt100-top-s
+/usr/share/ncurses4/terminfo/v/vt100-vb
+/usr/share/ncurses4/terminfo/v/vt100-w
+/usr/share/ncurses4/terminfo/v/vt100-w-am
+/usr/share/ncurses4/terminfo/v/vt100-w-nam
+/usr/share/ncurses4/terminfo/v/vt100-w-nav
+/usr/share/ncurses4/terminfo/v/vt100nam
+/usr/share/ncurses4/terminfo/v/vt102
+/usr/share/ncurses4/terminfo/v/vt102-nsgr
+/usr/share/ncurses4/terminfo/v/vt102-w
+/usr/share/ncurses4/terminfo/v/vt125
+/usr/share/ncurses4/terminfo/v/vt131
+/usr/share/ncurses4/terminfo/v/vt132
+/usr/share/ncurses4/terminfo/v/vt200
+/usr/share/ncurses4/terminfo/v/vt200-js
+/usr/share/ncurses4/terminfo/v/vt200-w
+/usr/share/ncurses4/terminfo/v/vt220
+/usr/share/ncurses4/terminfo/v/vt220-8
+/usr/share/ncurses4/terminfo/v/vt220-js
+/usr/share/ncurses4/terminfo/v/vt220-nam
+/usr/share/ncurses4/terminfo/v/vt220-w
+/usr/share/ncurses4/terminfo/v/vt220d
+/usr/share/ncurses4/terminfo/v/vt300
+/usr/share/ncurses4/terminfo/v/vt300-nam
+/usr/share/ncurses4/terminfo/v/vt300-w
+/usr/share/ncurses4/terminfo/v/vt300-w-nam
+/usr/share/ncurses4/terminfo/v/vt320
+/usr/share/ncurses4/terminfo/v/vt320-k3
+/usr/share/ncurses4/terminfo/v/vt320-k311
+/usr/share/ncurses4/terminfo/v/vt320-nam
+/usr/share/ncurses4/terminfo/v/vt320-w
+/usr/share/ncurses4/terminfo/v/vt320-w-nam
+/usr/share/ncurses4/terminfo/v/vt320nam
+/usr/share/ncurses4/terminfo/v/vt330
+/usr/share/ncurses4/terminfo/v/vt340
+/usr/share/ncurses4/terminfo/v/vt400
+/usr/share/ncurses4/terminfo/v/vt400-24
+/usr/share/ncurses4/terminfo/v/vt420
+/usr/share/ncurses4/terminfo/v/vt420f
+/usr/share/ncurses4/terminfo/v/vt420pc
+/usr/share/ncurses4/terminfo/v/vt420pcdos
+/usr/share/ncurses4/terminfo/v/vt50
+/usr/share/ncurses4/terminfo/v/vt50h
+/usr/share/ncurses4/terminfo/v/vt510
+/usr/share/ncurses4/terminfo/v/vt510pc
+/usr/share/ncurses4/terminfo/v/vt510pcdos
+/usr/share/ncurses4/terminfo/v/vt52
+/usr/share/ncurses4/terminfo/v/vt520
+/usr/share/ncurses4/terminfo/v/vt525
+/usr/share/ncurses4/terminfo/v/vt61
+/usr/share/ncurses4/terminfo/v/vt61.5
+/usr/share/ncurses4/terminfo/w
+/usr/share/ncurses4/terminfo/w/wren
+/usr/share/ncurses4/terminfo/w/wrenw
+/usr/share/ncurses4/terminfo/w/wsiris
+/usr/share/ncurses4/terminfo/w/wy-75ap
+/usr/share/ncurses4/terminfo/w/wy100
+/usr/share/ncurses4/terminfo/w/wy100q
+/usr/share/ncurses4/terminfo/w/wy120
+/usr/share/ncurses4/terminfo/w/wy120-25
+/usr/share/ncurses4/terminfo/w/wy120-25-w
+/usr/share/ncurses4/terminfo/w/wy120-vb
+/usr/share/ncurses4/terminfo/w/wy120-w
+/usr/share/ncurses4/terminfo/w/wy120-w-vb
+/usr/share/ncurses4/terminfo/w/wy120-wvb
+/usr/share/ncurses4/terminfo/w/wy150
+/usr/share/ncurses4/terminfo/w/wy150-25
+/usr/share/ncurses4/terminfo/w/wy150-25-w
+/usr/share/ncurses4/terminfo/w/wy150-vb
+/usr/share/ncurses4/terminfo/w/wy150-w
+/usr/share/ncurses4/terminfo/w/wy150-w-vb
+/usr/share/ncurses4/terminfo/w/wy160
+/usr/share/ncurses4/terminfo/w/wy160-25
+/usr/share/ncurses4/terminfo/w/wy160-25-w
+/usr/share/ncurses4/terminfo/w/wy160-42
+/usr/share/ncurses4/terminfo/w/wy160-42-w
+/usr/share/ncurses4/terminfo/w/wy160-43
+/usr/share/ncurses4/terminfo/w/wy160-43-w
+/usr/share/ncurses4/terminfo/w/wy160-tek
+/usr/share/ncurses4/terminfo/w/wy160-vb
+/usr/share/ncurses4/terminfo/w/wy160-w
+/usr/share/ncurses4/terminfo/w/wy160-w-vb
+/usr/share/ncurses4/terminfo/w/wy160-wvb
+/usr/share/ncurses4/terminfo/w/wy185
+/usr/share/ncurses4/terminfo/w/wy185-24
+/usr/share/ncurses4/terminfo/w/wy185-vb
+/usr/share/ncurses4/terminfo/w/wy185-w
+/usr/share/ncurses4/terminfo/w/wy185-wvb
+/usr/share/ncurses4/terminfo/w/wy30
+/usr/share/ncurses4/terminfo/w/wy30-mc
+/usr/share/ncurses4/terminfo/w/wy30-vb
+/usr/share/ncurses4/terminfo/w/wy325
+/usr/share/ncurses4/terminfo/w/wy325-25
+/usr/share/ncurses4/terminfo/w/wy325-25w
+/usr/share/ncurses4/terminfo/w/wy325-42
+/usr/share/ncurses4/terminfo/w/wy325-42w
+/usr/share/ncurses4/terminfo/w/wy325-42w-vb
+/usr/share/ncurses4/terminfo/w/wy325-42wvb
+/usr/share/ncurses4/terminfo/w/wy325-43
+/usr/share/ncurses4/terminfo/w/wy325-43w
+/usr/share/ncurses4/terminfo/w/wy325-43w-vb
+/usr/share/ncurses4/terminfo/w/wy325-43wvb
+/usr/share/ncurses4/terminfo/w/wy325-80
+/usr/share/ncurses4/terminfo/w/wy325-vb
+/usr/share/ncurses4/terminfo/w/wy325-w
+/usr/share/ncurses4/terminfo/w/wy325-w-vb
+/usr/share/ncurses4/terminfo/w/wy325-wvb
+/usr/share/ncurses4/terminfo/w/wy325w-24
+/usr/share/ncurses4/terminfo/w/wy350
+/usr/share/ncurses4/terminfo/w/wy350-vb
+/usr/share/ncurses4/terminfo/w/wy350-w
+/usr/share/ncurses4/terminfo/w/wy350-wvb
+/usr/share/ncurses4/terminfo/w/wy370
+/usr/share/ncurses4/terminfo/w/wy370-101k
+/usr/share/ncurses4/terminfo/w/wy370-105k
+/usr/share/ncurses4/terminfo/w/wy370-EPC
+/usr/share/ncurses4/terminfo/w/wy370-nk
+/usr/share/ncurses4/terminfo/w/wy370-rv
+/usr/share/ncurses4/terminfo/w/wy370-tek
+/usr/share/ncurses4/terminfo/w/wy370-vb
+/usr/share/ncurses4/terminfo/w/wy370-w
+/usr/share/ncurses4/terminfo/w/wy370-wvb
+/usr/share/ncurses4/terminfo/w/wy50
+/usr/share/ncurses4/terminfo/w/wy50-mc
+/usr/share/ncurses4/terminfo/w/wy50-vb
+/usr/share/ncurses4/terminfo/w/wy50-w
+/usr/share/ncurses4/terminfo/w/wy50-wvb
+/usr/share/ncurses4/terminfo/w/wy520
+/usr/share/ncurses4/terminfo/w/wy520-24
+/usr/share/ncurses4/terminfo/w/wy520-36
+/usr/share/ncurses4/terminfo/w/wy520-36pc
+/usr/share/ncurses4/terminfo/w/wy520-36w
+/usr/share/ncurses4/terminfo/w/wy520-36wpc
+/usr/share/ncurses4/terminfo/w/wy520-48
+/usr/share/ncurses4/terminfo/w/wy520-48pc
+/usr/share/ncurses4/terminfo/w/wy520-48w
+/usr/share/ncurses4/terminfo/w/wy520-48wpc
+/usr/share/ncurses4/terminfo/w/wy520-epc
+/usr/share/ncurses4/terminfo/w/wy520-epc-24
+/usr/share/ncurses4/terminfo/w/wy520-epc-vb
+/usr/share/ncurses4/terminfo/w/wy520-epc-w
+/usr/share/ncurses4/terminfo/w/wy520-epc-wvb
+/usr/share/ncurses4/terminfo/w/wy520-vb
+/usr/share/ncurses4/terminfo/w/wy520-w
+/usr/share/ncurses4/terminfo/w/wy520-wvb
+/usr/share/ncurses4/terminfo/w/wy60
+/usr/share/ncurses4/terminfo/w/wy60-25
+/usr/share/ncurses4/terminfo/w/wy60-25-w
+/usr/share/ncurses4/terminfo/w/wy60-316X
+/usr/share/ncurses4/terminfo/w/wy60-42
+/usr/share/ncurses4/terminfo/w/wy60-42-w
+/usr/share/ncurses4/terminfo/w/wy60-43
+/usr/share/ncurses4/terminfo/w/wy60-43-w
+/usr/share/ncurses4/terminfo/w/wy60-vb
+/usr/share/ncurses4/terminfo/w/wy60-w
+/usr/share/ncurses4/terminfo/w/wy60-w-vb
+/usr/share/ncurses4/terminfo/w/wy60-wvb
+/usr/share/ncurses4/terminfo/w/wy75
+/usr/share/ncurses4/terminfo/w/wy75-mc
+/usr/share/ncurses4/terminfo/w/wy75-vb
+/usr/share/ncurses4/terminfo/w/wy75-w
+/usr/share/ncurses4/terminfo/w/wy75-wvb
+/usr/share/ncurses4/terminfo/w/wy75ap
+/usr/share/ncurses4/terminfo/w/wy85
+/usr/share/ncurses4/terminfo/w/wy85-vb
+/usr/share/ncurses4/terminfo/w/wy85-w
+/usr/share/ncurses4/terminfo/w/wy85-wvb
+/usr/share/ncurses4/terminfo/w/wy99gt
+/usr/share/ncurses4/terminfo/w/wy99gt-25
+/usr/share/ncurses4/terminfo/w/wy99gt-25-w
+/usr/share/ncurses4/terminfo/w/wy99gt-tek
+/usr/share/ncurses4/terminfo/w/wy99gt-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-w
+/usr/share/ncurses4/terminfo/w/wy99gt-w-vb
+/usr/share/ncurses4/terminfo/w/wy99gt-wvb
+/usr/share/ncurses4/terminfo/w/wyse-325
+/usr/share/ncurses4/terminfo/w/wyse-75ap
+/usr/share/ncurses4/terminfo/w/wyse-vp
+/usr/share/ncurses4/terminfo/w/wyse120
+/usr/share/ncurses4/terminfo/w/wyse120-25
+/usr/share/ncurses4/terminfo/w/wyse120-25-w
+/usr/share/ncurses4/terminfo/w/wyse120-vb
+/usr/share/ncurses4/terminfo/w/wyse120-w
+/usr/share/ncurses4/terminfo/w/wyse120-wvb
+/usr/share/ncurses4/terminfo/w/wyse150
+/usr/share/ncurses4/terminfo/w/wyse150-25
+/usr/share/ncurses4/terminfo/w/wyse150-25-w
+/usr/share/ncurses4/terminfo/w/wyse150-vb
+/usr/share/ncurses4/terminfo/w/wyse150-w
+/usr/share/ncurses4/terminfo/w/wyse150-w-vb
+/usr/share/ncurses4/terminfo/w/wyse160
+/usr/share/ncurses4/terminfo/w/wyse160-25
+/usr/share/ncurses4/terminfo/w/wyse160-25-w
+/usr/share/ncurses4/terminfo/w/wyse160-42
+/usr/share/ncurses4/terminfo/w/wyse160-42-w
+/usr/share/ncurses4/terminfo/w/wyse160-43
+/usr/share/ncurses4/terminfo/w/wyse160-43-w
+/usr/share/ncurses4/terminfo/w/wyse160-vb
+/usr/share/ncurses4/terminfo/w/wyse160-w
+/usr/share/ncurses4/terminfo/w/wyse160-wvb
+/usr/share/ncurses4/terminfo/w/wyse185
+/usr/share/ncurses4/terminfo/w/wyse185-24
+/usr/share/ncurses4/terminfo/w/wyse185-vb
+/usr/share/ncurses4/terminfo/w/wyse185-w
+/usr/share/ncurses4/terminfo/w/wyse185-wvb
+/usr/share/ncurses4/terminfo/w/wyse30
+/usr/share/ncurses4/terminfo/w/wyse30-mc
+/usr/share/ncurses4/terminfo/w/wyse30-vb
+/usr/share/ncurses4/terminfo/w/wyse325
+/usr/share/ncurses4/terminfo/w/wyse325-25
+/usr/share/ncurses4/terminfo/w/wyse325-25w
+/usr/share/ncurses4/terminfo/w/wyse325-42
+/usr/share/ncurses4/terminfo/w/wyse325-42w
+/usr/share/ncurses4/terminfo/w/wyse325-43
+/usr/share/ncurses4/terminfo/w/wyse325-43w
+/usr/share/ncurses4/terminfo/w/wyse325-vb
+/usr/share/ncurses4/terminfo/w/wyse325-w
+/usr/share/ncurses4/terminfo/w/wyse325-wvb
+/usr/share/ncurses4/terminfo/w/wyse350
+/usr/share/ncurses4/terminfo/w/wyse350-vb
+/usr/share/ncurses4/terminfo/w/wyse350-w
+/usr/share/ncurses4/terminfo/w/wyse350-wvb
+/usr/share/ncurses4/terminfo/w/wyse370
+/usr/share/ncurses4/terminfo/w/wyse50
+/usr/share/ncurses4/terminfo/w/wyse50-mc
+/usr/share/ncurses4/terminfo/w/wyse50-vb
+/usr/share/ncurses4/terminfo/w/wyse50-w
+/usr/share/ncurses4/terminfo/w/wyse50-wvb
+/usr/share/ncurses4/terminfo/w/wyse520
+/usr/share/ncurses4/terminfo/w/wyse520-24
+/usr/share/ncurses4/terminfo/w/wyse520-36
+/usr/share/ncurses4/terminfo/w/wyse520-36pc
+/usr/share/ncurses4/terminfo/w/wyse520-36w
+/usr/share/ncurses4/terminfo/w/wyse520-36wpc
+/usr/share/ncurses4/terminfo/w/wyse520-48
+/usr/share/ncurses4/terminfo/w/wyse520-48pc
+/usr/share/ncurses4/terminfo/w/wyse520-48w
+/usr/share/ncurses4/terminfo/w/wyse520-48wpc
+/usr/share/ncurses4/terminfo/w/wyse520-epc
+/usr/share/ncurses4/terminfo/w/wyse520-epc-w
+/usr/share/ncurses4/terminfo/w/wyse520-p-wvb
+/usr/share/ncurses4/terminfo/w/wyse520-pc-24
+/usr/share/ncurses4/terminfo/w/wyse520-pc-vb
+/usr/share/ncurses4/terminfo/w/wyse520-vb
+/usr/share/ncurses4/terminfo/w/wyse520-w
+/usr/share/ncurses4/terminfo/w/wyse520-wvb
+/usr/share/ncurses4/terminfo/w/wyse60
+/usr/share/ncurses4/terminfo/w/wyse60-25
+/usr/share/ncurses4/terminfo/w/wyse60-25-w
+/usr/share/ncurses4/terminfo/w/wyse60-316X
+/usr/share/ncurses4/terminfo/w/wyse60-42
+/usr/share/ncurses4/terminfo/w/wyse60-42-w
+/usr/share/ncurses4/terminfo/w/wyse60-43
+/usr/share/ncurses4/terminfo/w/wyse60-43-w
+/usr/share/ncurses4/terminfo/w/wyse60-vb
+/usr/share/ncurses4/terminfo/w/wyse60-w
+/usr/share/ncurses4/terminfo/w/wyse60-wvb
+/usr/share/ncurses4/terminfo/w/wyse75
+/usr/share/ncurses4/terminfo/w/wyse75-mc
+/usr/share/ncurses4/terminfo/w/wyse75-vb
+/usr/share/ncurses4/terminfo/w/wyse75-w
+/usr/share/ncurses4/terminfo/w/wyse75-wvb
+/usr/share/ncurses4/terminfo/w/wyse75ap
+/usr/share/ncurses4/terminfo/w/wyse85
+/usr/share/ncurses4/terminfo/w/wyse85-vb
+/usr/share/ncurses4/terminfo/w/wyse85-w
+/usr/share/ncurses4/terminfo/w/wyse85-wvb
+/usr/share/ncurses4/terminfo/w/wyse99gt
+/usr/share/ncurses4/terminfo/w/wyse99gt-25
+/usr/share/ncurses4/terminfo/w/wyse99gt-25-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-vb
+/usr/share/ncurses4/terminfo/w/wyse99gt-w
+/usr/share/ncurses4/terminfo/w/wyse99gt-wvb
+/usr/share/ncurses4/terminfo/x
+/usr/share/ncurses4/terminfo/x/x10term
+/usr/share/ncurses4/terminfo/x/x1700
+/usr/share/ncurses4/terminfo/x/x1700-lm
+/usr/share/ncurses4/terminfo/x/x1720
+/usr/share/ncurses4/terminfo/x/x1750
+/usr/share/ncurses4/terminfo/x/x68k
+/usr/share/ncurses4/terminfo/x/x68k-ite
+/usr/share/ncurses4/terminfo/x/x820
+/usr/share/ncurses4/terminfo/x/xenix
+/usr/share/ncurses4/terminfo/x/xerox
+/usr/share/ncurses4/terminfo/x/xerox-lm
+/usr/share/ncurses4/terminfo/x/xerox1720
+/usr/share/ncurses4/terminfo/x/xerox820
+/usr/share/ncurses4/terminfo/x/xl83
+/usr/share/ncurses4/terminfo/x/xtalk
+/usr/share/ncurses4/terminfo/x/xterm
+/usr/share/ncurses4/terminfo/x/xterm+sl
+/usr/share/ncurses4/terminfo/x/xterm+sl-twm
+/usr/share/ncurses4/terminfo/x/xterm-16color
+/usr/share/ncurses4/terminfo/x/xterm-8bit
+/usr/share/ncurses4/terminfo/x/xterm-bold
+/usr/share/ncurses4/terminfo/x/xterm-nic
+/usr/share/ncurses4/terminfo/x/xterm-old
+/usr/share/ncurses4/terminfo/x/xterm-pcolor
+/usr/share/ncurses4/terminfo/x/xterm-r5
+/usr/share/ncurses4/terminfo/x/xterm-r6
+/usr/share/ncurses4/terminfo/x/xterm-sun
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v32
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v33
+/usr/share/ncurses4/terminfo/x/xterm-xf86-v40
+/usr/share/ncurses4/terminfo/x/xterm-xi
+/usr/share/ncurses4/terminfo/x/xterm1
+/usr/share/ncurses4/terminfo/x/xterms
+/usr/share/ncurses4/terminfo/x/xterms-sun
+/usr/share/ncurses4/terminfo/x/xwsh
+/usr/share/ncurses4/terminfo/z
+/usr/share/ncurses4/terminfo/z/z-100
+/usr/share/ncurses4/terminfo/z/z-100bw
+/usr/share/ncurses4/terminfo/z/z100
+/usr/share/ncurses4/terminfo/z/z100bw
+/usr/share/ncurses4/terminfo/z/z110
+/usr/share/ncurses4/terminfo/z/z110bw
+/usr/share/ncurses4/terminfo/z/z19
+/usr/share/ncurses4/terminfo/z/z29
+/usr/share/ncurses4/terminfo/z/z29a
+/usr/share/ncurses4/terminfo/z/z29a-kc-bc
+/usr/share/ncurses4/terminfo/z/z29a-kc-uc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-bc
+/usr/share/ncurses4/terminfo/z/z29a-nkc-uc
+/usr/share/ncurses4/terminfo/z/z29b
+/usr/share/ncurses4/terminfo/z/z30
+/usr/share/ncurses4/terminfo/z/z340
+/usr/share/ncurses4/terminfo/z/z340-nam
+/usr/share/ncurses4/terminfo/z/z39-a
+/usr/share/ncurses4/terminfo/z/z39a
+/usr/share/ncurses4/terminfo/z/z50
+/usr/share/ncurses4/terminfo/z/z8001
+/usr/share/ncurses4/terminfo/z/zen30
+/usr/share/ncurses4/terminfo/z/zen50
+/usr/share/ncurses4/terminfo/z/zen8001
+/usr/share/ncurses4/terminfo/z/zenith
+/usr/share/ncurses4/terminfo/z/zenith29
+/usr/share/ncurses4/terminfo/z/zenith39-a
+/usr/share/ncurses4/terminfo/z/zenith39-ansi
+/usr/share/ncurses4/terminfo/z/zt-1
+/usr/share/ncurses4/terminfo/z/ztx
+/usr/share/ncurses4/terminfo/z/ztx-1-a
+/usr/share/ncurses4/terminfo/z/ztx11
+</RPM:Files>
+ </RDF:Description>
+</RDF:RDF>
diff --git a/test/recurse/good.xml b/test/recurse/good.xml
new file mode 100644
index 0000000..60aa1b6
--- /dev/null
+++ b/test/recurse/good.xml
@@ -0,0 +1,343 @@
+<!DOCTYPE foo [
+<!ENTITY f "some internal data">
+<!ENTITY e "&f;&f;">
+<!ENTITY d "&e;&e;">
+]>
+<foo>&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;</foo>
diff --git a/test/recurse/goodattr.xml b/test/recurse/goodattr.xml
new file mode 100644
index 0000000..94f7071
--- /dev/null
+++ b/test/recurse/goodattr.xml
@@ -0,0 +1,343 @@
+<!DOCTYPE foo [
+<!ENTITY f "some internal data rather large taking quite some room">
+<!ENTITY e "&f;&f;">
+<!ENTITY d "&e;&e;">
+]>
+<foo bar="&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;
+&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;"/>
diff --git a/test/recurse/lol1.xml b/test/recurse/lol1.xml
new file mode 100644
index 0000000..d92c985
--- /dev/null
+++ b/test/recurse/lol1.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE billion [
+<!ELEMENT billion (#PCDATA)>
+<!ENTITY laugh0 "ha">
+<!ENTITY laugh1 "&laugh0;&laugh0;">
+<!ENTITY laugh2 "&laugh1;&laugh1;">
+<!ENTITY laugh3 "&laugh2;&laugh2;">
+<!ENTITY laugh4 "&laugh3;&laugh3;">
+<!ENTITY laugh5 "&laugh4;&laugh4;">
+<!ENTITY laugh6 "&laugh5;&laugh5;">
+<!ENTITY laugh7 "&laugh6;&laugh6;">
+<!ENTITY laugh8 "&laugh7;&laugh7;">
+<!ENTITY laugh9 "&laugh8;&laugh8;">
+<!ENTITY laugh10 "&laugh9;&laugh9;">
+<!ENTITY laugh11
+"&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;">
+<!ENTITY laugh12
+"&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;">
+<!ENTITY laugh13
+"&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;">
+]>
+<billion>&laugh13;</billion>
+
diff --git a/test/recurse/lol2.xml b/test/recurse/lol2.xml
new file mode 100644
index 0000000..e07dc4d
--- /dev/null
+++ b/test/recurse/lol2.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE billion [
+<!ELEMENT billion (#PCDATA)>
+<!ENTITY laugh0 "ha">
+<!ENTITY laugh1 "&laugh0;&laugh0;">
+<!ENTITY laugh2 "&laugh1;&laugh1;">
+<!ENTITY laugh3 "&laugh2;&laugh2;">
+<!ENTITY laugh4 "&laugh3;&laugh3;">
+<!ENTITY laugh5 "&laugh4;&laugh4;">
+<!ENTITY laugh6 "&laugh5;&laugh5;">
+<!ENTITY laugh7 "&laugh6;&laugh6;">
+<!ENTITY laugh8 "&laugh7;&laugh7;">
+<!ENTITY laugh9 "&laugh8;&laugh8;">
+<!ENTITY laugh10 "&laugh9;&laugh9;">
+<!ENTITY laugh11
+"&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;&laugh10;">
+<!ENTITY laugh12
+"&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;&laugh11;">
+<!ENTITY laugh13
+"&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;&laugh12;">
+]>
+<billion location="&laugh13;">text</billion>
+
diff --git a/test/recurse/lol3.dtd b/test/recurse/lol3.dtd
new file mode 100644
index 0000000..eb3bc20
--- /dev/null
+++ b/test/recurse/lol3.dtd
@@ -0,0 +1,20 @@
+<!ELEMENT billion (#PCDATA)>
+<!ENTITY % laugh0 "<!-- Ha ! -->">
+<!ENTITY % laugh1 "%laugh0;%laugh0;">
+<!ENTITY % laugh2 "%laugh1;%laugh1;">
+<!ENTITY % laugh3 "%laugh2;%laugh2;">
+<!ENTITY % laugh4 "%laugh3;%laugh3;">
+<!ENTITY % laugh5 "%laugh4;%laugh4;">
+<!ENTITY % laugh6 "%laugh5;%laugh5;">
+<!ENTITY % laugh7 "%laugh6;%laugh6;">
+<!ENTITY % laugh8 "%laugh7;%laugh7;">
+<!ENTITY % laugh9 "%laugh8;%laugh8;">
+<!ENTITY % laugh10 "%laugh9;%laugh9;">
+<!ENTITY % laugh11
+"%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;%laugh10;">
+<!ENTITY % laugh12
+"%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;%laugh11;">
+<!ENTITY % laugh13
+"%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;%laugh12;">
+%laugh13;
+
diff --git a/test/recurse/lol3.xml b/test/recurse/lol3.xml
new file mode 100644
index 0000000..acc2346
--- /dev/null
+++ b/test/recurse/lol3.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE billion SYSTEM "lol3.dtd">
+
+<billion></billion>
+
diff --git a/test/recurse/lol4.patch b/test/recurse/lol4.patch
new file mode 100644
index 0000000..f41be28
--- /dev/null
+++ b/test/recurse/lol4.patch
@@ -0,0 +1,16 @@
+Index: parser.c
+===================================================================
+--- parser.c (revision 3773)
++++ parser.c (working copy)
+@@ -2505,6 +2505,11 @@ xmlStringLenDecodeEntities(xmlParserCtxt
+ c = CUR_SCHAR(str, l);
+ else
+ c = 0;
++ if ((nbchars > 500000) &&
++ (ctxt->instate == XML_PARSER_ATTRIBUTE_VALUE)) {
++ xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
++ goto int_error;
++ }
+ }
+ buffer[nbchars++] = 0;
+ return(buffer);
diff --git a/test/recurse/lol4.xml b/test/recurse/lol4.xml
new file mode 100644
index 0000000..dd6d9eb
--- /dev/null
+++ b/test/recurse/lol4.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE billion [
+<!ELEMENT billion (#PCDATA)>
+<!ENTITY laugh0 "aahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhhhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa">
+<!ENTITY laugh1 "&laugh0;&laugh0;">
+<!ENTITY laugh2 "&laugh1;&laugh1;">
+<!ENTITY laugh3 "&laugh2;&laugh2;">
+<!ENTITY laugh4 "&laugh3;&laugh3;">
+<!ENTITY laugh5 "&laugh4;&laugh4;">
+<!ENTITY laugh6 "&laugh5;&laugh5;">
+<!ENTITY laugh7 "&laugh6;&laugh6;">
+<!ENTITY laugh8 "&laugh7;&laugh7;">
+<!ENTITY laugh9 "&laugh8;&laugh8;">
+<!ENTITY laugh10 "&laugh9;&laugh9;">
+<!ENTITY laugh11 "&laugh10;&laugh10;">
+<!ENTITY laugh12 "&laugh11;&laugh11;">
+<!ENTITY laugh13 "&laugh12;&laugh12;">
+<!ENTITY laugh14 "&laugh13;&laugh13;">
+<!ENTITY laugh15 "&laugh14;&laugh14;">
+<!ENTITY laugh16 "&laugh15;&laugh15;">
+<!ENTITY laugh17 "&laugh16;&laugh16;">
+<!ENTITY laugh18 "&laugh17;&laugh17;">
+<!ENTITY laugh19 "&laugh18;&laugh18;">
+<!ENTITY laugh20 "&laugh19;&laugh19;">
+<!ENTITY laugh21 "&laugh20;&laugh20;">
+<!ENTITY laugh22 "&laugh21;&laugh21;">
+<!ENTITY laugh23 "&laugh22;&laugh22;">
+<!ENTITY laugh24 "&laugh23;&laugh23;">
+<!ENTITY laugh25 "&laugh24;&laugh24;">
+<!ENTITY laugh26 "&laugh25;&laugh25;">
+<!ENTITY laugh27 "&laugh26;&laugh26;">
+<!ENTITY laugh28 "&laugh27;&laugh27;">
+<!ENTITY laugh29 "&laugh28;&laugh28;">
+<!ENTITY laugh30 "&laugh29;&laugh29;">
+]>
+<billion location="&laugh29;">text</billion>
diff --git a/test/recurse/lol5.xml b/test/recurse/lol5.xml
new file mode 100644
index 0000000..b2aa6cb
--- /dev/null
+++ b/test/recurse/lol5.xml
@@ -0,0 +1,51 @@
+<!DOCTYPE root [
+ <!ENTITY ha "Ha !">
+ <!ENTITY ha2 "&ha; &ha;">
+ <!ENTITY ha3 "&ha2; &ha2;">
+ <!ENTITY ha4 "&ha3; &ha3;">
+ <!ENTITY ha5 "&ha4; &ha4;">
+ <!ENTITY ha6 "&ha5; &ha5;">
+ <!ENTITY ha7 "&ha6; &ha6;">
+ <!ENTITY ha8 "&ha7; &ha7;">
+ <!ENTITY ha9 "&ha8; &ha8;">
+ <!ENTITY ha10 "&ha9; &ha9;">
+ <!ENTITY ha11 "&ha10; &ha10;">
+ <!ENTITY ha12 "&ha11; &ha11;">
+ <!ENTITY ha13 "&ha12; &ha12;">
+ <!ENTITY ha14 "&ha13; &ha13;">
+ <!ENTITY ha15 "&ha14; &ha14;">
+ <!ENTITY ha16 "&ha15; &ha15;">
+ <!ENTITY ha17 "&ha16; &ha16;">
+ <!ENTITY ha18 "&ha17; &ha17;">
+ <!ENTITY ha19 "&ha18; &ha18;">
+ <!ENTITY ha20 "&ha19; &ha19;">
+ <!ENTITY ha21 "&ha20; &ha20;">
+ <!ENTITY ha22 "&ha21; &ha21;">
+ <!ENTITY ha23 "&ha22; &ha22;">
+ <!ENTITY ha24 "&ha23; &ha23;">
+ <!ENTITY ha25 "&ha24; &ha24;">
+ <!ENTITY ha26 "&ha25; &ha25;">
+ <!ENTITY ha27 "&ha26; &ha26;">
+ <!ENTITY ha28 "&ha27; &ha27;">
+ <!ENTITY ha29 "&ha28; &ha28;">
+ <!ENTITY ha30 "&ha29; &ha29;">
+ <!ENTITY ha31 "&ha30; &ha30;">
+ <!ENTITY ha32 "&ha31; &ha31;">
+ <!ENTITY ha33 "&ha32; &ha32;">
+ <!ENTITY ha34 "&ha33; &ha33;">
+ <!ENTITY ha35 "&ha34; &ha34;">
+ <!ENTITY ha36 "&ha35; &ha35;">
+ <!ENTITY ha37 "&ha36; &ha36;">
+ <!ENTITY ha38 "&ha37; &ha37;">
+ <!ENTITY ha39 "&ha38; &ha38;">
+ <!ENTITY ha40 "&ha39; &ha39;">
+ <!ENTITY ha41 "&ha40; &ha40;">
+ <!ENTITY ha42 "&ha41; &ha41;">
+ <!ENTITY ha43 "&ha42; &ha42;">
+ <!ENTITY ha44 "&ha43; &ha43;">
+ <!ENTITY ha45 "&ha44; &ha44;">
+ <!ENTITY ha46 "&ha45; &ha45;">
+ <!ENTITY ha47 "&ha46; &ha46;">
+ <!ENTITY ha48 "&ha47; &ha47;">
+]>
+<root>&ha48;</root>
diff --git a/test/recurse/lol6.xml b/test/recurse/lol6.xml
new file mode 100644
index 0000000..2e9d55e
--- /dev/null
+++ b/test/recurse/lol6.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE billion [
+<!ELEMENT billion (#PCDATA)>
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh0 "ha">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh1 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh0;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh0;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh2 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh1;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh1;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh3 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh2;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh2;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh4 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh3;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh3;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh5 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh4;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh4;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh6 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh5;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh5;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh7 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh6;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh6;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh8 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh7;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh7;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh9 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh8;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh8;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10 "&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh9;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh9;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11
+"&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh10;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12
+"&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh11;">
+<!ENTITY laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh13
+"&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh12;">
+]>
+<billion location="&laughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh13;">text</billion>
+
diff --git a/test/regexp/branch b/test/regexp/branch
new file mode 100644
index 0000000..6a728e6
--- /dev/null
+++ b/test/regexp/branch
@@ -0,0 +1,14 @@
+=>a|b(d|e(g|h|i)|f)|c
+a
+c
+bd
+bf
+beg
+beh
+bei
+b
+be
+bi
+f
+ab
+ac
diff --git a/test/regexp/bug316338 b/test/regexp/bug316338
new file mode 100644
index 0000000..98c7838
--- /dev/null
+++ b/test/regexp/bug316338
@@ -0,0 +1,20 @@
+=>(((C|c)(([\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*))+
+C 433
+C 433 12
+C 433 123
+C 433 123 456
+C 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12
+=>(((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*))+
+C 433
+C 433 12
+C 433 123
+C 433 123 456
+C 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12
+=>(((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?){3})+[\s]*))+
+C 433
+C 433 12
+C 433 123
+C 433 123 456
+C 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12
+=>(((M|m)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)[\s]*)|((L|l)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((H|h)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((V|v)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((C|c)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){3})+[\s]*)|((Q|q)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){2})+[\s]*)|((S|s)(([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?){2})+[\s]*)|((A|a)([\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]+[0-1][\s]+[0-1][\s]+\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?[\s]*,[\s]*\-?[0-9]+(\.[0-9]+)?((e|E)\-?[0-9]+)?)+[\s]*)|((Z|z)[\s]*))*
+M 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12 724.64,433.12 718.08,433.12 711.52,433.12
diff --git a/test/regexp/bug420596 b/test/regexp/bug420596
new file mode 100644
index 0000000..b6f285d
--- /dev/null
+++ b/test/regexp/bug420596
@@ -0,0 +1,10 @@
+=>(\+|-)(0[0-9]|1[0-1])
++01
+-01
++10
+-10
+=>[+-](0[0-9]|1[0-1])
++01
+-01
++10
+-10
diff --git a/test/regexp/content b/test/regexp/content
new file mode 100644
index 0000000..9d01c8b
--- /dev/null
+++ b/test/regexp/content
@@ -0,0 +1,12 @@
+=>((a|b|c)def)
+adef
+bdef
+adefg
+aaef
+=>((a|b|c|d|e|f)?(g|h|i)+(k|l)*)
+g
+gi
+fil
+gikl
+cghhhiill
+ak
diff --git a/test/regexp/hard b/test/regexp/hard
new file mode 100644
index 0000000..ddb4cfd
--- /dev/null
+++ b/test/regexp/hard
@@ -0,0 +1,12 @@
+=>((a|b|\p{Nd}){1,2}|aaa|bbbb){1,2}
+bab
+aaca
+aaabbbb
+a0b
+aa0aaa
+b0aaa
+=>(\d{1,3}\.){3}\d{1,3}
+1.2.3.4
+1.22.333.44
+1.2.3
+1..2.3
diff --git a/test/regexp/ncname b/test/regexp/ncname
new file mode 100644
index 0000000..1e452a8
--- /dev/null
+++ b/test/regexp/ncname
@@ -0,0 +1,6 @@
+=>[\i-[:]][\c-[:]]*
+a
+abc
+abc1d
+1ac
+a1b:c
diff --git a/test/regexp/ranges b/test/regexp/ranges
new file mode 100644
index 0000000..cb7c22f
--- /dev/null
+++ b/test/regexp/ranges
@@ -0,0 +1,15 @@
+=>a{2,3}
+a
+aa
+aaa
+aaaa
+=>ba{2,3}c
+bac
+baac
+baaac
+baaaac
+=>a(b|c){2,3}d
+abcd
+acccd
+abd
+accccd
diff --git a/test/regexp/ranges2 b/test/regexp/ranges2
new file mode 100644
index 0000000..a8eb884
--- /dev/null
+++ b/test/regexp/ranges2
@@ -0,0 +1,14 @@
+=>(a|b{0,3}){0,1}
+a
+aa
+b
+bb
+bbb
+bbbb
+ab
+ba
+=>([0-9]{0,3}|([0-9]{0}|[0-9]{0,3})){0,3}
+0
+00
+123
+abc
diff --git a/test/regexp/xpath b/test/regexp/xpath
new file mode 100644
index 0000000..62c18c4
--- /dev/null
+++ b/test/regexp/xpath
@@ -0,0 +1,37 @@
+=>(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*
+a
+a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3
+*
+a|b
+.//a:b
+a/b/c
+a/*/b
+a:*/b:*/c:*
+child::a/child::b:*
+child::a/child::b:*|a/*/b|.//a:b
+1
+1ab
+a:1
+@a
+ancestor::a
+#
+# the previous regexp from the Schemas for Schemas was broken
+# here is the fixed one:
+# http://lists.w3.org/Archives/Public/www-xml-schema-comments/2002AprJun/0005.html
+#
+=>(\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*(\|(\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*)*
+a
+a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3
+*
+a|b
+.//a:b
+a/b/c
+a/*/b
+a:*/b:*/c:*
+child::a/child::b:*
+child::a/child::b:*|a/*/b|.//a:b
+1
+1ab
+a:1
+@a
+ancestor::a
diff --git a/test/relaxng/302836.rng b/test/relaxng/302836.rng
new file mode 100644
index 0000000..b4db298
--- /dev/null
+++ b/test/relaxng/302836.rng
@@ -0,0 +1,35 @@
+<element name="base"
+xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <group>
+ <element name="data">
+ <value>firstValue</value>
+ </element>
+ <oneOrMore>
+ <element name="option">
+ <element name="value">
+ <text/>
+ </element>
+ <element name="label">
+ <text/>
+ </element>
+ </element>
+ </oneOrMore>
+ </group>
+ <group>
+ <element name="data">
+ <value>secondValue</value>
+ </element>
+ <oneOrMore>
+ <element name="option">
+ <element name="value">
+ <text/>
+ </element>
+ <element name="label">
+ <text/>
+ </element>
+ </element>
+ </oneOrMore>
+ </group>
+ </choice>
+</element>
diff --git a/test/relaxng/302836_0.xml b/test/relaxng/302836_0.xml
new file mode 100644
index 0000000..25eb2f1
--- /dev/null
+++ b/test/relaxng/302836_0.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" ?>
+<base>
+ <data>secondValue</data>
+ <option>
+ <value>how</value>
+ <label>some</label>
+ </option>
+ <option>
+ <value>this</value>
+ <label>more</label>
+ </option>
+</base>
diff --git a/test/relaxng/307377.rng b/test/relaxng/307377.rng
new file mode 100644
index 0000000..37a87c9
--- /dev/null
+++ b/test/relaxng/307377.rng
@@ -0,0 +1,14 @@
+<element name="number" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="val">
+ <list>
+ <oneOrMore>
+ <choice>
+ <value>1</value>
+ <value>2</value>
+ <value>3</value>
+ </choice>
+ </oneOrMore>
+ </list>
+ </attribute>
+ <text/>
+</element>
diff --git a/test/relaxng/307377_0.xml b/test/relaxng/307377_0.xml
new file mode 100644
index 0000000..106d02a
--- /dev/null
+++ b/test/relaxng/307377_0.xml
@@ -0,0 +1 @@
+<number val="a 1 b 2 c 3" />
diff --git a/test/relaxng/307377_1.xml b/test/relaxng/307377_1.xml
new file mode 100644
index 0000000..73b0d1c
--- /dev/null
+++ b/test/relaxng/307377_1.xml
@@ -0,0 +1 @@
+<number val="1 a 2 b 3 c" />
diff --git a/test/relaxng/307377_2.xml b/test/relaxng/307377_2.xml
new file mode 100644
index 0000000..4a041aa
--- /dev/null
+++ b/test/relaxng/307377_2.xml
@@ -0,0 +1 @@
+<number val="1 2 3" />
diff --git a/test/relaxng/492317.rng b/test/relaxng/492317.rng
new file mode 100644
index 0000000..343f294
--- /dev/null
+++ b/test/relaxng/492317.rng
@@ -0,0 +1,16 @@
+<element name="root" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <element name="child">
+ <attribute name="type">
+ <value>Foo</value>
+ </attribute>
+ <!-- Define stuff that's only valid when type is "Foo" -->
+ </element>
+ <element name="child">
+ <attribute name="type">
+ <value>Bar</value>
+ </attribute>
+ <!-- Define stuff that's only valid when type is "Bar" -->
+ </element>
+ </choice>
+</element>
diff --git a/test/relaxng/492317_0.xml b/test/relaxng/492317_0.xml
new file mode 100644
index 0000000..6ab9d80
--- /dev/null
+++ b/test/relaxng/492317_0.xml
@@ -0,0 +1,4 @@
+<root>
+ <child type="Foo">
+ </child>
+</root>
diff --git a/test/relaxng/492317_1.xml b/test/relaxng/492317_1.xml
new file mode 100644
index 0000000..d325ac2
--- /dev/null
+++ b/test/relaxng/492317_1.xml
@@ -0,0 +1,4 @@
+<root>
+ <child type="Bar">
+ </child>
+</root>
diff --git a/test/relaxng/492317_2.xml b/test/relaxng/492317_2.xml
new file mode 100644
index 0000000..33bbc5d
--- /dev/null
+++ b/test/relaxng/492317_2.xml
@@ -0,0 +1,4 @@
+<root>
+ <child type="">
+ </child>
+</root>
diff --git a/test/relaxng/558452.rng b/test/relaxng/558452.rng
new file mode 100644
index 0000000..80fbf7b
--- /dev/null
+++ b/test/relaxng/558452.rng
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<grammar ns="http://www.example.com/choice"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="doc" ns="">
+ <ref name="elem"/>
+ <optional>
+ <ref name="elem"/>
+ <optional>
+ <ref name="elem"/>
+ </optional>
+ </optional>
+ </element>
+ </start>
+
+ <define name="elem">
+ <element name="elem" ns="">
+ <text/>
+ </element>
+ </define>
+</grammar>
diff --git a/test/relaxng/558452_0.xml b/test/relaxng/558452_0.xml
new file mode 100644
index 0000000..70440e2
--- /dev/null
+++ b/test/relaxng/558452_0.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+ <elem/>
+ <elem/>
+ <elem/>
+</doc>
diff --git a/test/relaxng/558452_1.xml b/test/relaxng/558452_1.xml
new file mode 100644
index 0000000..2c569f9
--- /dev/null
+++ b/test/relaxng/558452_1.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<doc>
+</doc>
diff --git a/test/relaxng/558452_2.xml b/test/relaxng/558452_2.xml
new file mode 100644
index 0000000..6e24626
--- /dev/null
+++ b/test/relaxng/558452_2.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<doc>
+ <elem/>
+</doc>
diff --git a/test/relaxng/558452_3.xml b/test/relaxng/558452_3.xml
new file mode 100644
index 0000000..5ceb468
--- /dev/null
+++ b/test/relaxng/558452_3.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<doc>
+ <elem/>
+ <elem/>
+</doc>
diff --git a/test/relaxng/558452_4.xml b/test/relaxng/558452_4.xml
new file mode 100644
index 0000000..a1ee72b
--- /dev/null
+++ b/test/relaxng/558452_4.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<doc>
+ <elem/>
+ <elem/>
+ <elem/>
+ <elem/>
+</doc>
diff --git a/test/relaxng/595792-ext.rng b/test/relaxng/595792-ext.rng
new file mode 100644
index 0000000..58990cb
--- /dev/null
+++ b/test/relaxng/595792-ext.rng
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="t">
+ <ref name="tcont"/>
+ </element>
+ </start>
+ <define name="tcont">
+ <text/>
+ </define>
+</grammar>
diff --git a/test/relaxng/595792.rng b/test/relaxng/595792.rng
new file mode 100644
index 0000000..fb2eb93
--- /dev/null
+++ b/test/relaxng/595792.rng
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="root">
+ <externalRef href="595792-ext.rng"/>
+ </element>
+ </start>
+</grammar>
diff --git a/test/relaxng/595792_0.xml b/test/relaxng/595792_0.xml
new file mode 100644
index 0000000..546c589
--- /dev/null
+++ b/test/relaxng/595792_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<root>
+ <t>foo</t>
+</root>
diff --git a/test/relaxng/710744.rng b/test/relaxng/710744.rng
new file mode 100644
index 0000000..aeea0b8
--- /dev/null
+++ b/test/relaxng/710744.rng
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="test" ns="http://example.com/1/">
+ <zeroOrMore>
+ <attribute>
+ <choice>
+ <nsName ns="http://example.com/1/"/>
+ <nsName ns="http://example.com/2/"/>
+ </choice>
+ <text/>
+ </attribute>
+ </zeroOrMore>
+ </element>
+ </start>
+</grammar>
diff --git a/test/relaxng/710744_1.xml b/test/relaxng/710744_1.xml
new file mode 100644
index 0000000..f17c808
--- /dev/null
+++ b/test/relaxng/710744_1.xml
@@ -0,0 +1,2 @@
+<ex1:test xmlns:ex1="http://example.com/1/"
+ ex1:foo="bar"/>
diff --git a/test/relaxng/710744_2.xml b/test/relaxng/710744_2.xml
new file mode 100644
index 0000000..1aef3a9
--- /dev/null
+++ b/test/relaxng/710744_2.xml
@@ -0,0 +1,3 @@
+<ex1:test xmlns:ex1="http://example.com/1/"
+ xmlns:ex3="http://example.com/3/"
+ ex3:foo="bar"/>
diff --git a/test/relaxng/OASIS/spectest.xml b/test/relaxng/OASIS/spectest.xml
new file mode 100644
index 0000000..18afb2e
--- /dev/null
+++ b/test/relaxng/OASIS/spectest.xml
@@ -0,0 +1,6845 @@
+<!DOCTYPE testSuite [
+<!ENTITY dii "<&#xE14;&#xE35;/>">
+]>
+<testSuite>
+<author>James Clark</author>
+<email>jjc@jclark.com</email>
+<documentation>For October 26 version of the spec.</documentation>
+<testSuite>
+<section>3</section>
+<testSuite>
+<documentation>Various possible syntax errors.</documentation>
+<testCase>
+<section>3</section>
+<incorrect>
+<thisIsJunk/>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="foo">
+ <empty/>
+ </element>
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <define name="bar">
+ <text/>
+ </define>
+ <text/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <name>foo</name>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <group>
+ <name>bar</name>
+ </group>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName>
+ <except>
+ <name>foo</name>
+ </except>
+ <except>
+ <name>bar</name>
+ </except>
+ </anyName>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <nsName>
+ <except>
+ <name>foo</name>
+ </except>
+ <except>
+ <name>bar</name>
+ </except>
+ </nsName>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <data type="token">
+ <except>
+ <value>foo</value>
+ </except>
+ <except>
+ <value>bar</value>
+ </except>
+ </data>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty name="bar"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" extra="bar">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty>
+ <empty/>
+ </empty>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <text>
+ <empty/>
+ </text>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <choice>
+ <text/>
+ <notAllowed>
+ <empty/>
+ </notAllowed>
+ </choice>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo">
+ <empty/>
+ </ref>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <start>
+ <parentRef name="foo">
+ <empty/>
+ </parentRef>
+ </start>
+ </grammar>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Tests for obsolete syntax</documentation>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" ns="http://www.example.com">
+ <attribute name="bar" global="true">
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <not>
+ <name>foo</name>
+ </not>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <difference>
+ <anyName/>
+ <name>foo</name>
+ </difference>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <data type="token" key="foo"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <data type="token" keyRef="foo"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <keyRef name="foo">
+ <data type="token"/>
+ </keyRef>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <key name="foo">
+ <data type="token"/>
+ </key>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Tests for missing attributes and child elements</documentation>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>foo</name>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <mixed/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice/>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName>
+ <except/>
+ </anyName>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <nsName ns="">
+ <except/>
+ </nsName>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string">
+ <except/>
+ </data>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string">
+ <param/>
+ </data>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <grammar>
+ <start/>
+ </grammar>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="bar">
+ <empty/>
+ </element>
+ </start>
+ <define name="baz"/>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <externalRef/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include/>
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+ <define>
+ <element name="bar">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref/>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <start>
+ <parentRef/>
+ </start>
+ </grammar>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Checking of ns attribute</documentation>
+<testCase>
+<section>3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>No checking of ns attribute is performed</documentation>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="DAV:">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo xmlns="DAV:"/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>No checking of ns attribute is performed</documentation>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="xyzzy">
+ <empty/>
+</element>
+</correct>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>No checking of ns attribute is performed</documentation>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="bad_scheme://">
+ <empty/>
+</element>
+</correct>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Checking of datatypeLibrary attribute</documentation>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo_bar:xyzzy">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foobar:xyzzy">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http:ok">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%xx">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%Aa">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must not be relative</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must not be relative</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy#foo:bar">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must not be relative</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy?foo:bar">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must not be relative</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy/foo:bar">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:bar">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data datatypeLibrary="" type="string"/>
+</element>
+</correct>
+<valid>
+<foo>x</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.example.com#xyzzy">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.example.com#">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Tests for QName and NCNames in schemas</documentation>
+<testCase>
+<section>3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="&#xE14;&#xE35;">
+ <empty/>
+ </element>
+</element>
+</correct>
+<valid>
+<foo>&dii;</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="&#xE35;" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>&#xE35;</name>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="&#xE35;"/>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="&#xE35;"/>
+ </start>
+ <define name="&#xE35;">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="&#xE14;&#xE35;"/>
+ </start>
+ <define name="&#xE14;&#xE35;">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name=""/>
+ </start>
+ <define name="">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="x y"/>
+ </start>
+ <define name="x y">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:x="http://www.example.com/x">
+ <start>
+ <ref name="x:y"/>
+ </start>
+ <define name="x:y">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:x="http://www.example.com/x"
+ name="x:&#xE35;">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:x="http://www.example.com/x"
+ name="x:y:z">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:x="http://www.example.com/x"
+ name="x:">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Tests for elements that allow only a single pattern child.</documentation>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ <empty/>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <attribute name="bar">
+ <text/>
+ <empty/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <attribute>
+ <name>bar</name>
+ <text/>
+ <empty/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Tests for foreign element and attribute handling.</documentation>
+<testCase>
+<section>3</section>
+<incorrect>
+<r:element name="foo" xmlns:r="http://relaxng.org/ns/structure/1.0" r:a="val">
+ <r:empty/>
+</r:element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>foo<eg:comment xmlns:eg="http://www.example.com"/></name>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <value>foo<eg:comment xmlns:eg="http://www.example.com"/></value>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <data type="string"><eg:comment xmlns:eg="http://www.example.com"/></data>
+</element>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty>
+ <ext xmlns="http://www.example.com">
+ <element xmlns="http://relaxng.org/ns/structure/1.0"/>
+ </ext>
+ </empty>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com">
+ <eg:comment/>
+ <eg:comment/>
+ <start>
+ <eg:comment/>
+ <element>
+ <eg:comment/>
+ <eg:comment/>
+ <name>foo</name>
+ <eg:comment/>
+ <data type="string"/>
+ <eg:comment/>
+ <empty>
+ <eg:comment/>
+ <eg:comment/>
+ </empty>
+ <eg:comment/>
+ <eg:comment/>
+ </element>
+ <eg:comment/>
+ </start>
+ <eg:comment/>
+</grammar>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com"
+ eg:comment="">
+ <start eg:comment="">
+ <element eg:comment="">
+ <name eg:comment="">foo</name>
+ <data eg:comment="" type="string"/>
+ <empty eg:comment=""/>
+ </element>
+ </start>
+</grammar>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://www.example.com">
+ <comment/>
+ <comment/>
+ <rng:start>
+ <comment/>
+ <rng:element>
+ <comment/>
+ <comment/>
+ <rng:name>foo</rng:name>
+ <comment/>
+ <rng:data type="string"/>
+ <comment/>
+ </rng:element>
+ <comment/>
+ </rng:start>
+ <comment/>
+</rng:grammar>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<correct>
+<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0">
+ <comment/>
+ <comment/>
+ <rng:start>
+ <comment/>
+ <rng:element>
+ <comment/>
+ <comment/>
+ <rng:name>foo</rng:name>
+ <comment/>
+ <rng:data type="string"/>
+ <comment/>
+ </rng:element>
+ <comment/>
+ </rng:start>
+ <comment/>
+</rng:grammar>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+</testSuite>
+</testSuite>
+<testSuite>
+<section>4</section>
+<testSuite>
+<section>4.2</section>
+<testCase>
+<section>4.2</section>
+<correct>
+<element name="&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;"/>
+</element>
+</correct>
+<valid>
+<foo bar=""/>
+</valid>
+</testCase>
+<testCase>
+<section>4.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;">bar</value>
+</element>
+</correct>
+<valid>
+<foo>bar</foo>
+</valid>
+<invalid>
+<foo>bar </foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;"/>
+</element>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+<testCase>
+<section>4.2</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;</name>
+ <attribute><name>&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;</name></attribute>
+</element>
+</correct>
+<valid>
+<foo bar=""/>
+</valid>
+</testCase>
+<testCase>
+<section>4.2</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="&#xA;&#xD;&#x20;&#x9;choice&#xA;&#xD;&#x20;&#x9;">
+ <ref name="&#xA;&#xD;&#x20;&#x9;x&#xA;&#xD;&#x20;&#x9;"/>
+ </start>
+ <define name="x">
+ <ref name="y"/>
+ </define>
+ <define name="&#xA;&#xD;&#x20;&#x9;y&#xA;&#xD;&#x20;&#x9;">
+ <grammar>
+ <start combine="&#xA;&#xD;&#x20;&#x9;interleave&#xA;&#xD;&#x20;&#x9;">
+ <parentRef name="&#xA;&#xD;&#x20;&#x9;z&#xA;&#xD;&#x20;&#x9;"/>
+ </start>
+ </grammar>
+ </define>
+ <define name="z">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+</testSuite>
+<testCase>
+<section>4.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value datatypeLibrary="http://www.example.com/this-does-not-exist">bar</value>
+</element>
+</correct>
+<valid>
+<foo>bar</foo>
+</valid>
+<valid>
+<foo>
+ bar
+</foo>
+</valid>
+<valid>
+<foo> bar </foo>
+</valid>
+<invalid>
+<foo>baz</foo>
+</invalid>
+<invalid>
+<foo>ba r</foo>
+</invalid>
+</testCase>
+<testSuite>
+<section>4.5</section>
+<testCase>
+<section>4.5</section>
+<dir name="sub">
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty/>
+</element>
+</resource>
+</dir>
+<correct>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0"
+ xml:base="sub/y" href="x"/>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.5</section>
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="bar">
+ <empty/>
+</element>
+</resource>
+<dir name="sub1">
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="bar">
+ <empty/>
+</element>
+</resource>
+<dir name="sub3">
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty/>
+</element>
+</resource>
+</dir>
+</dir>
+<correct>
+<group xmlns="http://relaxng.org/ns/structure/1.0" xml:base="sub1/">
+ <group>
+ <group xml:base="sub2">
+ <group>
+ <group xml:base="sub3/y">
+ <externalRef href="x"/>
+ </group>
+ </group>
+ </group>
+ </group>
+</group>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.5</section>
+<resource name="x">
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
+</resource>
+<incorrect>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x#foo"/>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.6</section>
+<testCase>
+<section>4.6</section>
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty/>
+</element>
+</resource>
+<correct>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.6</section>
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty/>
+</element>
+</resource>
+<correct>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x" ns="http://www.example.com"/>
+</correct>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.6</section>
+<resource name="x">
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
+</resource>
+<incorrect>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.6</section>
+<resource name="x">
+<start xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="foo">
+ <empty/>
+ </element>
+</start>
+</resource>
+<incorrect>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.6</section>
+<resource name="x">
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="y"/>
+</resource>
+<resource name="y">
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
+</resource>
+<incorrect>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.6</section>
+<documentation>Same value of href before resolution, but not a loop.</documentation>
+<dir name="sub">
+<resource name="x">
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/>
+</resource>
+<dir name="sub">
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty/>
+</element>
+</resource>
+</dir>
+</dir>
+<correct>
+<externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.7</section>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x" ns="http://www.example.com"/>
+</grammar>
+</correct>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="y"/>
+</grammar>
+</resource>
+<resource name="y">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
+</resource>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</resource>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="y"/>
+</grammar>
+</resource>
+<resource name="y">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</resource>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.7</section>
+<dir name="sub">
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="sub/x"/>
+</grammar>
+</resource>
+<dir name="sub">
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+</grammar>
+</resource>
+</dir>
+</dir>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="sub/x"/>
+</grammar>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x">
+ <start>
+ <ref name="foo"/>
+ </start>
+ </include>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+ <start>
+ <ref name="foo"/>
+ </start>
+</grammar>
+</correct>
+<valid><foo/></valid>
+<invalid><bar/></invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+</grammar>
+</resource>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </include>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="x"/>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid><foo/></valid>
+<invalid><bar/></invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="x">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="foo" combine="choice">
+ <element name="foo3">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+ <include href="x">
+ <define name="foo" combine="choice">
+ <element name="foo1">
+ <empty/>
+ </element>
+ </define>
+ </include>
+ <define name="foo">
+ <element name="foo2">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid><foo1/></valid>
+<valid><foo2/></valid>
+<invalid><foo3/></invalid>
+</testCase>
+<testCase>
+<section>4.7</section>
+<resource name="level1.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<include href="level2.rng">
+ <define name="foo">
+ <element name="bar">
+ <empty/>
+ </element>
+ </define>
+</include>
+</grammar>
+</resource>
+<resource name="level2.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="bar">
+ <element name="bar">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <ref name="foo"/>
+</start>
+<include href="level1.rng">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</include>
+</grammar>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.8</section>
+<testCase>
+<section>4.8</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
+ <attribute name="bar" ns="http://www.example.com"/>
+</element>
+</correct>
+<valid>
+<eg:foo eg:bar="x" xmlns:eg="http://www.example.com"/>
+</valid>
+<invalid>
+<eg:foo xmlns:eg="http://www.example.com" bar="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.8</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
+ <attribute name="bar"/>
+</element>
+</correct>
+<invalid>
+<eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/>
+</invalid>
+<valid>
+<eg:foo xmlns:eg="http://www.example.com" bar="x"/>
+</valid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.9</section>
+<testCase>
+<section>4.9</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
+ <attribute>
+ <name>bar</name>
+ </attribute>
+</element>
+</correct>
+<valid>
+<eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/>
+</valid>
+<invalid>
+<eg:foo xmlns:eg="http://www.example.com" bar="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.6</section>
+<section>4.9</section>
+<resource name="x">
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <empty/>
+</element>
+</resource>
+<correct>
+<group ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0" >
+<externalRef href="x"/>
+</group>
+</correct>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<group xmlns="http://relaxng.org/ns/structure/1.0">
+ <element ns="http://www.example.com">
+ <name>foo</name>
+ <empty/>
+ </element>
+</group>
+</correct>
+<valid><foo xmlns="http://www.example.com"/></valid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<correct>
+<element ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>foo</name>
+ <empty/>
+</element>
+</correct>
+<valid><foo xmlns="http://www.example.com"/></valid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute ns="http://www.example.com">
+ <name>bar</name>
+ <text/>
+ </attribute>
+</element>
+</correct>
+<valid><foo xmlns:x="http://www.example.com" x:bar="whatever"/></valid>
+<invalid><foo bar="whatever"/></invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.10</section>
+<testCase>
+<section>4.10</section>
+<incorrect>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo:bar">
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.10</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="eg:foo" xmlns:eg="http://www.example.com">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<invalid>
+<foo xmlns="http://www.example.com/"/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.10</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" xmlns:eg="http://www.example.com">
+ <attribute name="eg:bar"/>
+</element>
+</correct>
+<valid>
+<foo xmlns:ex="http://www.example.com" ex:bar="x"/>
+</valid>
+<invalid>
+<foo xmlns:ex="http://www.example.com/" ex:bar="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.10</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <attribute name="xml:lang"/>
+</element>
+</correct>
+<valid>
+<foo xml:lang="en"/>
+</valid>
+<invalid>
+<foo lang="en"/>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.11</section>
+<testCase>
+<section>4.11</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <div ns="http://www.example.com">
+ <div>
+ <start>
+ <ref name="foo"/>
+ </start>
+ </div>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <div/>
+</grammar>
+</correct>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<testCase>
+<section>4.12</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+<start>
+ <element name="foo">
+ <ref name="bars"/>
+ </element>
+</start>
+
+<define name="bars">
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+</define>
+
+</grammar>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo></foo>
+</invalid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/>X<bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<valid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo></foo>
+</invalid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/>X<bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<section>4.15</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<valid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<valid>
+<foo></foo>
+</valid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/>X<bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<section>4.14</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </optional>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<valid>
+<foo></foo>
+</valid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/>X<bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <value>x</value>
+ <value>y</value>
+ <value>z</value>
+ </list>
+</element>
+</correct>
+<valid>
+<foo>x y z</foo>
+</valid>
+<invalid>
+<foo>x</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<section>4.13</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <mixed>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </mixed>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo></foo>
+</invalid>
+<valid>
+<foo><bar/>X<bar/><bar/></foo>
+</valid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>foo</name>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo></foo>
+</invalid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/>X<bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName>
+ <except>
+ <name>foo</name>
+ <name>bar</name>
+ <name>baz</name>
+ </except>
+ </anyName>
+ <empty/>
+</element>
+</correct>
+<valid><xyzzy/></valid>
+<invalid><foo/></invalid>
+<invalid><bar/></invalid>
+<invalid><baz/></invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="token">
+ <except>
+ <value>x</value>
+ <value>y</value>
+ <value>z</value>
+ </except>
+ </data>
+</element>
+</correct>
+<valid><foo/></valid>
+<valid><foo>xyz</foo></valid>
+<invalid><foo>x</foo></invalid>
+<invalid><foo>y</foo></invalid>
+<invalid><foo>y</foo></invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+</element>
+</correct>
+<valid>
+<foo bar=""/>
+</valid>
+<valid>
+<foo bar="x"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name>bar</name>
+ </attribute>
+</element>
+</correct>
+<valid>
+<foo bar=""/>
+</valid>
+<valid>
+<foo bar="x"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo></foo>
+</invalid>
+<invalid>
+<foo>X</foo>
+</invalid>
+<invalid>
+<foo><bar/>X<bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <element name="bar1">
+ <empty/>
+ </element>
+ <element name="bar2">
+ <empty/>
+ </element>
+ <element name="bar3">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</correct>
+<valid><foo><bar1/></foo></valid>
+<valid><foo><bar2/></foo></valid>
+<valid><foo><bar3/></foo></valid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar1">
+ <empty/>
+ </element>
+ <element name="bar2">
+ <empty/>
+ </element>
+ <element name="bar3">
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<valid><foo><bar1/><bar2/><bar3/></foo></valid>
+<valid><foo><bar1/><bar3/><bar2/></foo></valid>
+<valid><foo><bar2/><bar1/><bar3/></foo></valid>
+<valid><foo><bar2/><bar3/><bar1/></foo></valid>
+<valid><foo><bar3/><bar1/><bar2/></foo></valid>
+<valid><foo><bar3/><bar2/><bar1/></foo></valid>
+<invalid><foo><bar2/><bar1/></foo></invalid>
+<invalid><foo><bar1/><bar3/><bar2/><bar1/></foo></invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<valid><foo><bar/></foo></valid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<valid><foo><bar/></foo></valid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<section>4.12</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <element name="bar">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</correct>
+<valid><foo><bar/></foo></valid>
+<invalid><foo/></invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.13</section>
+<testCase>
+<section>4.13</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <mixed>
+ <element name="bar">
+ <empty/>
+ </element>
+ </mixed>
+</element>
+</correct>
+<valid><foo>x<bar/></foo></valid>
+<valid><foo><bar/></foo></valid>
+<valid><foo><bar/>x</foo></valid>
+<valid><foo>x<bar/>y</foo></valid>
+<invalid><foo/></invalid>
+<invalid><foo><bar/><bar/></foo></invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.14</section>
+<testCase>
+<section>4.14</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <element name="bar">
+ <empty/>
+ </element>
+ </optional>
+</element>
+</correct>
+<valid><foo><bar/></foo></valid>
+<valid><foo/></valid>
+<invalid><foo>x<bar/></foo></invalid>
+<invalid><foo><bar/><bar/></foo></invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.15</section>
+<testCase>
+<section>4.15</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+</element>
+</correct>
+<valid><foo><bar/></foo></valid>
+<valid><foo/></valid>
+<invalid><foo>x<bar/></foo></invalid>
+<invalid><foo><baz/></foo></invalid>
+<valid><foo><bar/><bar/></foo></valid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.16</section>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element>
+ <anyName>
+ <except>
+ <anyName/>
+ </except>
+ </anyName>
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element>
+ <anyName>
+ <except>
+ <choice>
+ <anyName/>
+ <name>foo</name>
+ </choice>
+ </except>
+ </anyName>
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element>
+ <nsName ns="">
+ <except>
+ <nsName ns=""/>
+ </except>
+ </nsName>
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element>
+ <nsName ns="">
+ <except>
+ <choice>
+ <nsName ns=""/>
+ <name>foo</name>
+ </choice>
+ </except>
+ </nsName>
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element>
+ <nsName ns="">
+ <except>
+ <anyName/>
+ </except>
+ </nsName>
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element>
+ <nsName ns="">
+ <except>
+ <choice>
+ <anyName/>
+ <name>foo</name>
+ </choice>
+ </except>
+ </nsName>
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<documentation>Tests that 4.16 is before 4.20.</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <anyName/>
+ </except>
+ </anyName>
+ <text/>
+ </attribute>
+ <notAllowed/>
+ </zeroOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<documentation>Tests that 4.16 is before removal of unreachable definitions.</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <empty/>
+ </element>
+</start>
+<define name="bar">
+ <element>
+ <anyName>
+ <except>
+ <anyName/>
+ </except>
+ </anyName>
+ <empty/>
+ </element>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="xmlns">
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<correct>
+<element name="xmlns" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
+</correct>
+<valid><xmlns/></valid>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name=" xmlns">
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <notAllowed/>
+ <attribute name="xmlns">
+ <text/>
+ </attribute>
+ </optional>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+ <define name="foo">
+ <attribute name="xmlns">
+ <text/>
+ </attribute>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="xmlns" ns="">
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <choice>
+ <name ns="">xmlns</name>
+ <name>foo</name>
+ </choice>
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name ns="">xmlns</name>
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name>xmlns</name>
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name>
+ xmlns
+ </name>
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <choice>
+ <name>foo</name>
+ <name ns="">xmlns</name>
+ </choice>
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <name>xmlns</name>
+ </except>
+ </anyName>
+ <text/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <nsName ns="">
+ <except>
+ <name>xmlns</name>
+ </except>
+ </nsName>
+ <text/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute ns="http://www.w3.org/2000/xmlns" name="bar">
+ <text/>
+ </attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.w3.org/2000/xmlns">
+ <empty/>
+</element>
+</correct>
+<valid><foo xmlns="http://www.w3.org/2000/xmlns"/></valid>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="token">
+ <param name="minLength">2</param>
+ </data>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="tok"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="tok"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <notAllowed/>
+ <data type="token">
+ <param name="minLength">2</param>
+ </data>
+ </optional>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <notAllowed/>
+ <data type="tok"/>
+ </optional>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <notAllowed/>
+ <value type="tok"/>
+ </optional>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <empty/>
+ </element>
+</start>
+<define name="foo">
+ <data type="token">
+ <param name="minLength">2</param>
+ </data>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <empty/>
+ </element>
+</start>
+<define name="foo">
+ <data type="tok"/>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.16</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <empty/>
+ </element>
+</start>
+<define name="foo">
+ <value type="tok"/>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.17</section>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <ref name="x"/>
+</start>
+<define name="x">
+ <element name="foo1">
+ <empty/>
+ </element>
+</define>
+<define name="x" combine="choice">
+ <element name="foo2">
+ <empty/>
+ </element>
+</define>
+<define name="x">
+ <element name="foo3">
+ <empty/>
+ </element>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start name="x">
+ <element name="foo1">
+ <empty/>
+ </element>
+</start>
+<start name="x" combine="choice">
+ <element name="foo2">
+ <empty/>
+ </element>
+</start>
+<start name="x">
+ <element name="foo3">
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <ref name="x"/>
+</start>
+<define name="x">
+ <element name="foo1">
+ <empty/>
+ </element>
+</define>
+<define name="x">
+ <element name="foo2">
+ <empty/>
+ </element>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start name="x">
+ <element name="foo1">
+ <empty/>
+ </element>
+</start>
+<start name="x">
+ <element name="foo2">
+ <empty/>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <ref name="x"/>
+</start>
+<define name="x" combine="choice">
+ <element name="foo1">
+ <empty/>
+ </element>
+</define>
+<define name="x" combine="choice">
+ <element name="foo2">
+ <empty/>
+ </element>
+</define>
+<define name="x">
+ <element name="foo3">
+ <empty/>
+ </element>
+</define>
+</grammar>
+</correct>
+<valid>
+<foo1/>
+</valid>
+<valid>
+<foo2/>
+</valid>
+<valid>
+<foo3/>
+</valid>
+<invalid>
+<foo4/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.17</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start combine="choice">
+ <element name="foo1">
+ <empty/>
+ </element>
+</start>
+<start combine="choice">
+ <element name="foo2">
+ <empty/>
+ </element>
+</start>
+<start>
+ <element name="foo3">
+ <empty/>
+ </element>
+</start>
+</grammar>
+</correct>
+<valid>
+<foo1/>
+</valid>
+<valid>
+<foo2/>
+</valid>
+<valid>
+<foo3/>
+</valid>
+<invalid>
+<foo4/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <ref name="x"/>
+ </element>
+</start>
+<define name="x" combine="choice">
+ <element name="bar1">
+ <empty/>
+ </element>
+</define>
+<define name="x">
+ <element name="bar2">
+ <empty/>
+ </element>
+</define>
+<define name="x" combine="interleave">
+ <element name="bar3">
+ <empty/>
+ </element>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+<grammar>
+<start name="x" combine="choice">
+ <element name="bar1">
+ <empty/>
+ </element>
+</start>
+<start name="x">
+ <element name="bar2">
+ <empty/>
+ </element>
+</start>
+<start name="x" combine="interleave">
+ <element name="bar3">
+ <empty/>
+ </element>
+</start>
+</grammar>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <ref name="x"/>
+ </element>
+</start>
+<define name="x" combine="interleave">
+ <element name="bar1">
+ <empty/>
+ </element>
+</define>
+<define name="x" combine="interleave">
+ <element name="bar2">
+ <empty/>
+ </element>
+</define>
+<define name="x">
+ <element name="bar3">
+ <empty/>
+ </element>
+</define>
+</grammar>
+</correct>
+<valid>
+<foo><bar1/><bar2/><bar3/></foo>
+</valid>
+<valid>
+<foo><bar1/><bar3/><bar2/></foo>
+</valid>
+<valid>
+<foo><bar2/><bar3/><bar1/></foo>
+</valid>
+<invalid>
+<foo><bar2/><bar3/><bar1/><bar2/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.17</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+<grammar>
+<start combine="interleave">
+ <element name="bar1">
+ <empty/>
+ </element>
+</start>
+<start>
+ <element name="bar2">
+ <empty/>
+ </element>
+</start>
+<start combine="interleave">
+ <element name="bar3">
+ <empty/>
+ </element>
+</start>
+</grammar>
+</element>
+</correct>
+<valid>
+<foo><bar1/><bar2/><bar3/></foo>
+</valid>
+<valid>
+<foo><bar1/><bar3/><bar2/></foo>
+</valid>
+<valid>
+<foo><bar2/><bar3/><bar1/></foo>
+</valid>
+<invalid>
+<foo><bar2/><bar3/><bar1/><bar2/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <ref name="x"/>
+ </element>
+</start>
+<define name="x">
+ <element name="bar1">
+ <empty/>
+ </element>
+</define>
+<define name="x" combine="interleave">
+ <element name="bar2">
+ <empty/>
+ </element>
+</define>
+<define name="x">
+ <element name="bar3">
+ <empty/>
+ </element>
+</define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.17</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+<grammar>
+<start name="x">
+ <element name="bar1">
+ <empty/>
+ </element>
+</start>
+<start name="x" combine="interleave">
+ <element name="bar2">
+ <empty/>
+ </element>
+</start>
+<start name="x">
+ <element name="bar3">
+ <empty/>
+ </element>
+</start>
+</grammar>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.18</section>
+<testCase>
+<section>4.18</section>
+<documentation>grammar must have a start</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>4.17 is before 4.18</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+ <define name="bar">
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>4.17 is before 4.19</documentation>
+<incorrect>
+<choice xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="foo">
+ <empty/>
+ </element>
+ <group>
+ <notAllowed/>
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </group>
+</choice>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>every ref must have a def</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>4.17 is before 4.18</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+ <define name="foo">
+ <ref name="bar"/>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>4.17 is before 4.19</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <group>
+ <notAllowed/>
+ <ref name="foo"/>
+ </group>
+ </choice>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>every parentRef must have a def</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <parentRef name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>4.17 is before 4.18</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+ <define name="bar">
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <parentRef name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<documentation>4.17 is before 4.19</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <group>
+ <notAllowed/>
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <parentRef name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </group>
+ </choice>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+ <define name="foo">
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <parentRef name="foo"/>
+ </start>
+ </grammar>
+ </choice>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.18</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+ <define name="foo">
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="foo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </define>
+</grammar>
+</correct>
+<valid><foo/></valid>
+</testCase>
+<testCase>
+<section>4.18</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <start>
+ <ref name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="innerFoo">
+ <parentRef name="foo"/>
+ </element>
+ </define>
+ </grammar>
+ </start>
+ <define name="foo">
+ <element name="outerFoo">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid><innerFoo><outerFoo/></innerFoo></valid>
+<invalid><outerFoo/></invalid>
+</testCase>
+<testCase>
+<section>4.18</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="outerFoo">
+ <grammar>
+ <start>
+ <ref name="foo"/>
+ </start>
+ <define name="foo">
+ <element name="innerFoo">
+ <empty/>
+ </element>
+ </define>
+ </grammar>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid><outerFoo><innerFoo/></outerFoo></valid>
+<invalid><innerFoo/></invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>4.19</section>
+<testCase>
+<section>4.19</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <ref name="bar"/>
+ </element>
+ </start>
+ <define name="bar">
+ <optional>
+ <element name="bar">
+ <empty/>
+ </element>
+ <ref name="bar"/>
+ </optional>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>4.19</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <ref name="bar"/>
+ </element>
+ </start>
+ <define name="bar">
+ <element name="bar">
+ <optional>
+ <ref name="bar"/>
+ </optional>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo><bar><bar/></bar></foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>4.19</section>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <empty/>
+ </element>
+ </start>
+ <define name="bar">
+ <ref name="bar"/>
+ </define>
+</grammar>
+</correct>
+<valid><foo/></valid>
+</testCase>
+<testCase>
+<section>4.19</section>
+<section>4.20</section>
+<documentation>Tests that recursion detection happens before
+normalization of notAllowed.</documentation>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <group>
+ <notAllowed/>
+ <ref name="bar"/>
+ </group>
+ </choice>
+ </start>
+ <define name="bar">
+ <element name="bar">
+ <empty/>
+ </element>
+ <optional>
+ <ref name="bar"/>
+ </optional>
+ </define>
+</grammar>
+</incorrect>
+</testCase>
+</testSuite>
+</testSuite>
+<testSuite>
+<section>6</section>
+<testSuite>
+<section>6.1</section>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName/>
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName>
+ <except>
+ <name ns="">foo</name>
+ </except>
+ </anyName>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<valid>
+<bar/>
+</valid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName>
+ <except>
+ <nsName ns=""/>
+ </except>
+ </anyName>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <nsName ns=""/>
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<foo xmlns="http://www.example.com"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <nsName ns="http://www.example.com"/>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo xmlns="HTTP://www.example.com"/>
+</invalid>
+<invalid>
+<foo xmlns="http://www.example.com/"/>
+</invalid>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <nsName ns="http://www.example.com">
+ <except>
+ <name ns="http://www.example.com">foo</name>
+ </except>
+ </nsName>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo xmlns="http://www.example.com"/>
+</invalid>
+<valid>
+<bar xmlns="http://www.example.com"/>
+</valid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <nsName ns="http://www.example.com">
+ <except>
+ <name ns="">foo</name>
+ </except>
+ </nsName>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<bar/>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<valid>
+<bar xmlns="http://www.example.com"/>
+</valid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name ns="http://www.example.com">foo</name>
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo xmlns="http://www.example.com"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<bar xmlns="http://www.example.com"/>
+</invalid>
+<invalid>
+<foo xmlns="http://www.example.org"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name ns="">foo</name>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<foo xmlns="http://www.example.com"/>
+</invalid>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<bar xmlns="http://www.example.com"/>
+</invalid>
+<invalid>
+<bar/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.1</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <name ns="">foo</name>
+ <name ns="">bar</name>
+ </choice>
+ <empty/>
+</element>
+</correct>
+<invalid>
+<baz/>
+</invalid>
+<valid>
+<foo/>
+</valid>
+<valid>
+<bar/>
+</valid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2</section>
+<testSuite>
+<section>6.2.1</section>
+<testCase>
+<section>6.2.1</section>
+<correct>
+<choice xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="foo">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+</choice>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<bar/>
+</valid>
+<invalid>
+<baz/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.1</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <group>
+ <element name="bar1">
+ <empty/>
+ </element>
+ <element name="bar2">
+ <empty/>
+ </element>
+ </group>
+ <group>
+ <element name="bar1">
+ <empty/>
+ </element>
+ <element name="bar3">
+ <empty/>
+ </element>
+ </group>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo><bar1/><bar2/></foo>
+</valid>
+<valid>
+<foo><bar1/><bar3/></foo>
+</valid>
+<invalid>
+<foo><bar1/></foo>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo><bar2/></foo>
+</invalid>
+<invalid>
+<foo><bar3/></foo>
+</invalid>
+<invalid>
+<foo><bar1/><bar2/><bar3/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.1</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <group>
+ <attribute name="bar1">
+ <text/>
+ </attribute>
+ <attribute name="bar2">
+ <text/>
+ </attribute>
+ </group>
+ <group>
+ <attribute name="bar1">
+ <text/>
+ </attribute>
+ <attribute name="bar3">
+ <text/>
+ </attribute>
+ </group>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo bar1="x" bar2="x"/>
+</valid>
+<valid>
+<foo bar1="x" bar3="x"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo bar1="x"/>
+</invalid>
+<invalid>
+<foo bar2="x"/>
+</invalid>
+<invalid>
+<foo bar3="x"/>
+</invalid>
+<invalid>
+<foo bar1="x" bar2="x" bar3="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.1</section>
+<correct>
+<choice xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="foo">
+ <element name="bar">
+ <empty/>
+ </element>
+ </element>
+ <element name="foo">
+ <element name="baz">
+ <empty/>
+ </element>
+ </element>
+</choice>
+</correct>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo><baz/></foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo><foo/></foo>
+</invalid>
+<invalid>
+<bar/>
+</invalid>
+<invalid>
+<fobaz/>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.2</section>
+<testCase>
+<section>6.2.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="baz">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<valid>
+<foo><bar/><baz/></foo>
+</valid>
+<invalid>
+<foo><baz/><bar/></foo>
+</invalid>
+<invalid>
+<foo><bar/><baz/><bar/><baz/></foo>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo><baz/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ <attribute name="baz">
+ <text/>
+ </attribute>
+ </group>
+</element>
+</correct>
+<valid>
+<foo bar="x" baz="x"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ <attribute name="baz">
+ <text/>
+ </attribute>
+ </group>
+</element>
+</correct>
+<valid>
+<foo bar="x" baz="x"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo bar="x"/>
+</invalid>
+<invalid>
+<foo baz="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <attribute name="baz">
+ <text/>
+ </attribute>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ </group>
+</element>
+</correct>
+<valid>
+<foo bar="x" baz="x"/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo bar="x"/>
+</invalid>
+<invalid>
+<foo baz="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ <element name="baz">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<valid>
+<foo bar="x"><baz/></foo>
+</valid>
+<invalid>
+<foo><baz/></foo>
+</invalid>
+<invalid>
+<foo bar="x"/>
+</invalid>
+<invalid>
+<foo baz="x"><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.2</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <element name="baz">
+ <empty/>
+ </element>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ </group>
+</element>
+</correct>
+<valid>
+<foo bar="x"><baz/></foo>
+</valid>
+<invalid>
+<foo><baz/></foo>
+</invalid>
+<invalid>
+<foo bar="x"/>
+</invalid>
+<invalid>
+<foo baz="x"><bar/></foo>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.3</section>
+<testCase>
+<section>6.2.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo> </foo>
+</valid>
+<valid>
+<foo>
+
+
+</foo>
+</valid>
+<valid>
+<foo>
+<?target data?>
+<?target data?>
+<?target data?>
+<?target data?>
+</foo>
+</valid>
+<invalid>
+<foo>x</foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo bar="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar">
+ <empty/>
+ </attribute>
+</element>
+</correct>
+<valid><foo bar=""/></valid>
+<valid><foo bar=" "/></valid>
+<invalid><foo bar="x"/></invalid>
+</testCase>
+<testCase>
+<section>6.2.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <empty/>
+ </list>
+</element>
+</correct>
+<valid><foo/></valid>
+<valid><foo> </foo></valid>
+<invalid><foo>x</foo></invalid>
+<invalid><foo><bar/></foo></invalid>
+<invalid><foo bar=""/></invalid>
+</testCase>
+<testCase>
+<section>6.2.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar">
+ <list>
+ <empty/>
+ </list>
+ </attribute>
+</element>
+</correct>
+<valid><foo bar=""/></valid>
+<valid><foo bar=" "/></valid>
+<invalid><foo bar="x"/></invalid>
+</testCase>
+<testCase>
+<section>6.2.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <element name="bar">
+ <empty/>
+ </element>
+ <choice>
+ <empty/>
+ <element name="baz">
+ <empty/>
+ </element>
+ </choice>
+ </group>
+</element>
+</correct>
+<valid>
+<foo><bar/><baz/></foo>
+</valid>
+<valid>
+<foo><bar/></foo>
+</valid>
+<invalid>
+<foo></foo>
+</invalid>
+<invalid>
+<foo><bar/><baz/><baz/></foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <empty/>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo bar="x"/>
+</valid>
+<valid>
+<foo/>
+</valid>
+<invalid>
+<foo baz="x"/>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.4</section>
+<testCase>
+<section>6.2.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <text/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo> </foo>
+</valid>
+<valid>
+<foo>x</foo>
+</valid>
+<valid>
+<foo>
+x
+<?target data?>
+y
+</foo>
+</valid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <text/>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo>
+<bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+x
+<bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+x
+<?target data?>
+y
+<bar/></foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo><bar/>x</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <element name="bar">
+ <empty/>
+ </element>
+ <text/>
+ </group>
+</element>
+</correct>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo>
+<bar/>
+</foo>
+</valid>
+<invalid>
+<foo>
+x
+<bar/>
+</foo>
+</invalid>
+<valid>
+<foo>
+<bar/>
+x
+<?target data?>
+y
+</foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo><bar/>x</foo>
+</valid>
+</testCase>
+<testCase>
+<section>6.2.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <text/>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo>
+<bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+x
+<bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+<bar/>
+x
+<?target data?>
+y
+</foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo><bar/>x</foo>
+</valid>
+<valid>
+<foo>x<bar/>x</foo>
+</valid>
+<invalid>
+<foo>x<bar/>x<bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar">
+ <text/>
+ </attribute>
+</element>
+</correct>
+<valid>
+<foo bar=""/>
+</valid>
+<valid>
+<foo bar="x"/>
+</valid>
+<valid>
+<foo bar=" "/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo><bar/>x<bar/></foo>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.5</section>
+<testCase>
+<section>6.2.5</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo><bar/><bar/></foo>
+</valid>
+<valid>
+<foo><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.5</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <group>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo><bar/><bar/></foo>
+</valid>
+<valid>
+<foo><bar/><bar/><bar/><bar/></foo>
+</valid>
+<valid>
+<foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo><bar/><bar/><bar/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.5</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <nsName ns=""/>
+ <text/>
+ </attribute>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo x=""/>
+</valid>
+<valid>
+<foo x="" y=""/>
+</valid>
+<valid>
+<foo x="" y="" z=""/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo xmlns:ns="http://www.example.com" ns:x=""/>
+</invalid>
+<invalid>
+<foo x="" xmlns:ns="http://www.example.com" ns:x=""/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.5</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <choice>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ <element name="bar">
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo bar=""><bar/><bar/></foo>
+</valid>
+<valid>
+<foo><bar/></foo>
+</valid>
+<valid>
+<foo bar=""/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.6</section>
+<testCase>
+<section>6.2.6</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="baz">
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo><bar/><baz/></foo>
+</valid>
+<valid>
+<foo><baz/><bar/></foo>
+</valid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo><baz/></foo>
+</invalid>
+<invalid>
+<foo><bar/><bar/></foo>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.6</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <group>
+ <element name="bar1">
+ <empty/>
+ </element>
+ <element name="bar2">
+ <empty/>
+ </element>
+ </group>
+ <element name="baz">
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo><baz/><bar1/><bar2/></foo>
+</valid>
+<valid>
+<foo><bar1/><baz/><bar2/></foo>
+</valid>
+<valid>
+<foo><bar1/><bar2/><baz/></foo>
+</valid>
+<invalid>
+<foo><baz/><bar2/><bar1/></foo>
+</invalid>
+<invalid>
+<foo><bar2/><bar1/></foo>
+</invalid>
+<invalid>
+<foo><baz/><bar2/><bar1/></foo>
+</invalid>
+<invalid>
+<foo><baz/><bar1/></foo>
+</invalid>
+<invalid>
+<foo><baz/><bar2/></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.6</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <attribute name="bar">
+ <text/>
+ </attribute>
+ <attribute name="baz">
+ <text/>
+ </attribute>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo bar="" baz=""/>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo bar=""/>
+</invalid>
+<invalid>
+<foo baz=""/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.6</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <attribute name="baz">
+ <text/>
+ </attribute>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo baz=""><bar/></foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo bar=""/>
+</invalid>
+<invalid>
+<foo bar=""><baz/><baz/></foo>
+</invalid>
+<invalid>
+<foo><baz/><baz/></foo>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.7</section>
+<testCase>
+<section>6.2.7</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name ns="">bar</name>
+ <value type="string" datatypeLibrary="">baz</value>
+ </attribute>
+</element>
+</correct>
+<valid>
+<foo bar="baz"/>
+</valid>
+<invalid>
+<foo bar=" baz"/>
+</invalid>
+<invalid>
+<foo bar="b"/>
+</invalid>
+<invalid>
+<foo bar=""/>
+</invalid>
+<invalid>
+<foo bar=" "/>
+</invalid>
+<invalid>
+<foo><bar>baz</bar></foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name ns="">bar</name>
+ <choice>
+ <value type="string" datatypeLibrary="">baz</value>
+ <empty/>
+ </choice>
+ </attribute>
+</element>
+</correct>
+<valid>
+<foo bar="baz"/>
+</valid>
+<valid>
+<foo bar=""/>
+</valid>
+<invalid>
+<foo bar=" baz"/>
+</invalid>
+<invalid>
+<foo bar="b"/>
+</invalid>
+<invalid>
+<foo><bar>baz</bar></foo>
+</invalid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute>
+ <name ns="">bar</name>
+ <value type="string"/>
+ </attribute>
+</element>
+</correct>
+<valid>
+<foo bar=""/>
+</valid>
+<invalid>
+<foo bar=" "/>
+</invalid>
+<invalid>
+<foo bar="x"/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name ns="">foo</name>
+ <group>
+ <element>
+ <name ns="">bar</name>
+ <empty/>
+ </element>
+ <element>
+ <name ns="">baz</name>
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<valid>
+<foo><bar/><baz/></foo>
+</valid>
+<valid>
+<foo>
+<bar/>
+<baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+<bar/>
+&#xD;
+<baz/>
+</foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<bar><bar/><baz/></bar>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="string"/>
+</element>
+</correct>
+<valid><foo/></valid>
+<invalid><foo> </foo></invalid>
+<invalid><foo>x</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <value type="string"/>
+ <empty/>
+ </choice>
+</element>
+</correct>
+<valid><foo/></valid>
+<valid><foo> </foo></valid>
+<invalid><foo>x</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<section>6.2.8</section>
+<section>6.2.10</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <data type="token"/>
+ </list>
+</element>
+</correct>
+<invalid><foo/></invalid>
+<invalid><foo> </foo></invalid>
+<valid><foo>x</foo></valid>
+<valid><foo> x </foo></valid>
+<invalid><foo>x y</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<section>6.2.8</section>
+<requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <param name="minLength">2</param>
+ </data>
+</element>
+</correct>
+<valid><foo>xx</foo></valid>
+<valid><foo>xxx</foo></valid>
+<valid><foo> </foo></valid>
+<valid><foo> </foo></valid>
+<invalid><foo>x</foo></invalid>
+<invalid><foo> </foo></invalid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <value>x</value>
+ <element name="bar">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</correct>
+<valid><foo> x </foo></valid>
+<valid><foo>x</foo></valid>
+<invalid><foo>y</foo></invalid>
+<valid><foo><bar/></foo></valid>
+<valid>
+<foo>
+<bar/>
+</foo>
+</valid>
+<invalid><foo>x<bar/></foo></invalid>
+<invalid><foo/></invalid>
+<invalid><foo><bar/>x</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.7</section>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <value>x</value>
+ <mixed>
+ <element name="bar">
+ <empty/>
+ </element>
+ </mixed>
+ </choice>
+</element>
+</correct>
+<valid><foo> x </foo></valid>
+<valid><foo>x</foo></valid>
+<invalid><foo>y</foo></invalid>
+<valid><foo><bar/></foo></valid>
+<valid>
+<foo>
+<bar/>
+</foo>
+</valid>
+<valid><foo>x<bar/></foo></valid>
+<invalid><foo/></invalid>
+<valid><foo><bar/>x</foo></valid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.8</section>
+<testCase>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string">
+ <except>
+ <choice>
+ <value>x</value>
+ <value>y</value>
+ </choice>
+ </except>
+ </data>
+</element>
+</correct>
+<valid>
+<foo>xyzzy</foo>
+</valid>
+<invalid>
+<foo>x</foo>
+</invalid>
+<invalid>
+<foo>y</foo>
+</invalid>
+<invalid>
+<foo> x</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string"/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>6.2.8</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string">
+ <except>
+ <value/>
+ </except>
+ </data>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>x</foo>
+</valid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.9</section>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string" datatypeLibrary=""/>
+</element>
+</correct>
+<valid>
+<foo>xyzzy</foo>
+</valid>
+<valid>
+<foo>
+x
+<?target data?>
+y
+<?target data?>
+z
+</foo>
+</valid>
+<valid>
+<foo></foo>
+</valid>
+<valid>
+<foo>
+</foo>
+</valid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo bar=""/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="token" datatypeLibrary=""/>
+</element>
+</correct>
+<valid>
+<foo>xyzzy</foo>
+</valid>
+<valid>
+<foo>
+x
+<?target data?>
+y
+<?target data?>
+z
+</foo>
+</valid>
+<valid>
+<foo></foo>
+</valid>
+<valid>
+<foo>
+</foo>
+</valid>
+<invalid>
+<foo><bar/></foo>
+</invalid>
+<invalid>
+<foo bar=""/>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="string" datatypeLibrary="">x</value>
+</element>
+</correct>
+<valid><foo>x</foo></valid>
+<invalid><foo>xy</foo></invalid>
+<invalid><foo> x</foo></invalid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="string" datatypeLibrary=""> x</value>
+</element>
+</correct>
+<valid><foo> x</foo></valid>
+<invalid><foo> xy</foo></invalid>
+<invalid><foo>x</foo></invalid>
+<invalid><foo/></invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="token" datatypeLibrary="">x</value>
+</element>
+</correct>
+<valid><foo>x</foo></valid>
+<valid><foo> x</foo></valid>
+<valid><foo>x </foo></valid>
+<valid><foo>&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</foo></valid>
+<invalid><foo/></invalid>
+<invalid><foo>xy</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="token" datatypeLibrary="">x y</value>
+</element>
+</correct>
+<valid><foo>x y</foo></valid>
+<valid><foo> x y </foo></valid>
+<valid><foo>x&#xA;&#xD;&#x9;&#x20;y</foo></valid>
+<invalid><foo>xy</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="token" datatypeLibrary="">&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</value>
+</element>
+</correct>
+<valid><foo>x</foo></valid>
+<valid><foo> x</foo></valid>
+<valid><foo>x </foo></valid>
+<valid><foo>&#xD;&#x9;x&#x20;&#xA;</foo></valid>
+<invalid><foo/></invalid>
+<invalid><foo>xy</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="token" datatypeLibrary="">x&#xA;&#xD;&#x9;&#x20;y</value>
+</element>
+</correct>
+<valid><foo>x y</foo></valid>
+<valid><foo>x y</foo></valid>
+<valid><foo> x y </foo></valid>
+<valid><foo>x&#xD;&#x9;y</foo></valid>
+<valid><foo>x&#x20;&#xA;y</foo></valid>
+<invalid><foo/></invalid>
+<invalid><foo>xy</foo></invalid>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="decimal" datatypeLibrary=""/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <value type="decimal" datatypeLibrary=""/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string" datatypeLibrary="">
+ <param name="length">2</param>
+ </data>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>6.2.9</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="token" datatypeLibrary="">
+ <param name="length">2</param>
+ </data>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>6.2.10</section>
+<testCase>
+<section>6.2.10</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <value type="string">x</value>
+ </list>
+</element>
+</correct>
+<valid>
+<foo>x</foo>
+</valid>
+<valid>
+<foo> x </foo>
+</valid>
+<invalid>
+<foo>x x</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.10</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <oneOrMore>
+ <value type="string">x</value>
+ </oneOrMore>
+ </list>
+</element>
+</correct>
+<valid>
+<foo>x</foo>
+</valid>
+<valid>
+<foo> x x x x </foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo>x y</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.10</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <group>
+ <value type="string">x</value>
+ <value type="string">y</value>
+ </group>
+ </list>
+</element>
+</correct>
+<valid>
+<foo>x y</foo>
+</valid>
+<valid>
+<foo>x y</foo>
+</valid>
+<valid>
+<foo>&#xD;x&#xA;y&#x9;</foo>
+</valid>
+<invalid>
+<foo>x</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.10</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <group>
+ <data type="token"/>
+ <data type="token"/>
+ </group>
+ </list>
+</element>
+</correct>
+<valid>
+<foo>x y</foo>
+</valid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo>x y z</foo>
+</invalid>
+</testCase>
+<testCase>
+<section>6.2.10</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <list>
+ <value>x y</value>
+ </list>
+</element>
+</correct>
+<invalid>
+<foo>x y</foo>
+</invalid>
+</testCase>
+</testSuite>
+</testSuite>
+</testSuite>
+<testSuite>
+<section>7</section>
+<testSuite>
+<section>7.1</section>
+<testCase>
+<section>7.1.1</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <attribute name="bar">
+ <element name="baz">
+ <empty/>
+ </element>
+ </attribute>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.1</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <attribute name="bar">
+ <choice>
+ <element name="baz">
+ <empty/>
+ </element>
+ <text/>
+ </choice>
+ </attribute>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.1</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <attribute name="bar">
+ <attribute name="baz"/>
+ </attribute>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.1</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <attribute name="bar">
+ <choice>
+ <attribute name="baz"/>
+ <text/>
+ </choice>
+ </attribute>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <group>
+ <attribute name="bar"/>
+ <attribute name="baz"/>
+ </group>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <group>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </group>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <choice>
+ <group>
+ <choice>
+ <attribute name="bar"/>
+ <attribute name="baz"/>
+ </choice>
+ <choice>
+ <attribute name="bar"/>
+ <attribute name="baz"/>
+ </choice>
+ </group>
+ <attribute name="bar"/>
+ </choice>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <interleave>
+ <attribute name="bar"/>
+ <attribute name="baz"/>
+ </interleave>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <interleave>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </interleave>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <choice>
+ <interleave>
+ <choice>
+ <attribute name="bar"/>
+ <attribute name="baz"/>
+ </choice>
+ <choice>
+ <attribute name="bar"/>
+ <attribute name="baz"/>
+ </choice>
+ </interleave>
+ <attribute name="bar"/>
+ </choice>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <list>
+ <data type="token"/>
+ </list>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <choice>
+ <list>
+ <data type="token"/>
+ </list>
+ <data type="token"/>
+ </choice>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <element name="bar">
+ <empty/>
+ </element>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <choice>
+ <data type="token"/>
+ <element name="bar">
+ <empty/>
+ </element>
+ </choice>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <attribute name="bar">
+ <empty/>
+ </attribute>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <choice>
+ <attribute name="bar">
+ <empty/>
+ </attribute>
+ <data type="token"/>
+ </choice>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <choice>
+ <text/>
+ <data type="token"/>
+ </choice>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <interleave>
+ <value>x</value>
+ <value>y</value>
+ </interleave>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <list>
+ <choice>
+ <interleave>
+ <value>x</value>
+ <value>y</value>
+ </interleave>
+ <value>z</value>
+ </choice>
+ </list>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <attribute name="bar"/>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <element name="bar">
+ <empty/>
+ </element>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <text/>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <list>
+ <data type="token"/>
+ </list>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <group>
+ <data type="token"/>
+ <data type="token"/>
+ </group>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <interleave>
+ <data type="token"/>
+ <data type="token"/>
+ </interleave>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <oneOrMore>
+ <data type="token"/>
+ </oneOrMore>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.4</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <data type="string">
+ <except>
+ <empty/>
+ </except>
+ </data>
+ </element>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <attribute name="foo"/>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <data type="string"/>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <data type="string"/>
+ <element name="foo">
+ <empty/>
+ </element>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <value>foo</value>
+ <element name="foo">
+ <empty/>
+ </element>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <text/>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <text/>
+ <element name="foo">
+ <empty/>
+ </element>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <list>
+ <data type="token"/>
+ </list>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <list>
+ <data type="token"/>
+ </list>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <group>
+ <element name="foo">
+ <empty/>
+ </element>
+ <element name="foo">
+ <empty/>
+ </element>
+ </group>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <group>
+ <element name="foo">
+ <empty/>
+ </element>
+ <element name="foo">
+ <empty/>
+ </element>
+ </group>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <interleave>
+ <element name="foo">
+ <empty/>
+ </element>
+ <element name="foo">
+ <empty/>
+ </element>
+ </interleave>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <interleave>
+ <element name="foo">
+ <empty/>
+ </element>
+ <element name="foo">
+ <empty/>
+ </element>
+ </interleave>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <oneOrMore>
+ <element name="foo">
+ <empty/>
+ </element>
+ </oneOrMore>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <oneOrMore>
+ <element name="foo">
+ <empty/>
+ </element>
+ </oneOrMore>
+ <element name="foo">
+ <empty/>
+ </element>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <empty/>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <choice>
+ <element name="foo">
+ <empty/>
+ </element>
+ <empty/>
+ </choice>
+</start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<section>7</section>
+<section>4.18</section>
+<documentation>Tests that constraints are post-normalization</documentation>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <grammar>
+ <start>
+ <text/>
+ </start>
+ </grammar>
+</element>
+</correct>
+<valid>
+<foo>text</foo>
+</valid>
+</testCase>
+<testCase>
+<section>7.1.5</section>
+<section>7</section>
+<section>4.18</section>
+<incorrect>
+<text xmlns="http://relaxng.org/ns/structure/1.0"/>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.1.1</section>
+<section>7</section>
+<section>4.20</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <optional>
+ <attribute name="bar">
+ <group>
+ <notAllowed/>
+ <attribute name="baz"/>
+ </group>
+ </attribute>
+ </optional>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>7.1.1</section>
+<section>7</section>
+<section>4.20</section>
+<documentation>The nested attribute element is normalized out because
+of the not allowed.</documentation>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <attribute name="bar">
+ <choice>
+ <text/>
+ <group>
+ <notAllowed/>
+ <attribute name="baz"/>
+ </group>
+ </choice>
+ </attribute>
+</element>
+</correct>
+<valid>
+<foo bar="baz"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<section>7</section>
+<section>4.12</section>
+<documentation>The group element is normalized out.</documentation>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <group>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </group>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</correct>
+<valid>
+<foo xyzzy1="val1" xyzzy2="val2"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<section>7</section>
+<section>4.21</section>
+<documentation>The group element is normalized out.</documentation>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <oneOrMore>
+ <group>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <empty/>
+ </group>
+ </oneOrMore>
+ </element>
+</start>
+</grammar>
+</correct>
+<valid>
+<foo xyzzy1="val1" xyzzy2="val2"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.1.2</section>
+<section>7</section>
+<section>4.20</section>
+<documentation>The attribute elements are all normalized out.</documentation>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+ <optional>
+ <attribute name="a1">
+ <attribute name="a2">
+ <attribute name="a3">
+ <notAllowed/>
+ </attribute>
+ </attribute>
+ </attribute>
+ </optional>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+</testSuite>
+<testSuite>
+<section>7.2</section>
+<testCase>
+<section>7.2</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="foo">
+ <group>
+ <data type="token"/>
+ <data type="token"/>
+ </group>
+ </element>
+ </start>
+</grammar>
+</incorrect>
+</testCase>
+<testCase>
+<documentation>Checks that normalization of notAllowed happens
+before string sequence checking.</documentation>
+<section>7.2</section>
+<section>4.20</section>
+<correct>
+<choice xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="foo">
+ <empty/>
+ </element>
+ <group>
+ <notAllowed/>
+ <element name="bar">
+ <group>
+ <data type="token"/>
+ <data type="token"/>
+ </group>
+ </element>
+ </group>
+</choice>
+</correct>
+<valid>
+<foo/>
+</valid>
+</testCase>
+<testCase>
+<section>4.20</section>
+<section>7.2</section>
+<documentation>notAllowed in an element is not normalized</documentation>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <group>
+ <element name="bar">
+ <notAllowed/>
+ </element>
+ <data type="token"/>
+ <data type="token"/>
+ </group>
+ <element name="baz">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>7.3</section>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <attribute name="bar"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <zeroOrMore>
+ <attribute name="bar"/>
+ </zeroOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute name="bar"/>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo bar="xx"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <attribute name="bar"/>
+ <attribute name="bar"/>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <attribute name="bar"/>
+ </optional>
+ <optional>
+ <attribute name="bar"/>
+ </optional>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <oneOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <oneOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <name>baz</name>
+ </except>
+ </anyName>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <oneOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <name>bar</name>
+ </except>
+ </anyName>
+ </attribute>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo bar="val" xyzzy="anotherval"/>
+</valid>
+<valid>
+<foo bar="val" baz=""/>
+</valid>
+<invalid>
+<foo bar="val"/>
+</invalid>
+<invalid>
+<foo/>
+</invalid>
+<invalid>
+<foo xyzzy="val"/>
+</invalid>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <oneOrMore>
+ <attribute>
+ <nsName ns=""/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <oneOrMore>
+ <attribute>
+ <nsName ns="">
+ <except>
+ <name>baz</name>
+ </except>
+ </nsName>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </oneOrMore>
+ <oneOrMore>
+ <attribute>
+ <nsName ns=""/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </oneOrMore>
+ <oneOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <nsName ns=""/>
+ </attribute>
+ </oneOrMore>
+ <oneOrMore>
+ <attribute>
+ <nsName ns="">
+ <except>
+ <name>bar</name>
+ </except>
+ </nsName>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName>
+ <except>
+ <name>foo</name>
+ </except>
+ </nsName>
+ </except>
+ </anyName>
+ </attribute>
+ </oneOrMore>
+ <attribute name="foo"/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName>
+ <except>
+ <name>foo</name>
+ </except>
+ </nsName>
+ </except>
+ </anyName>
+ </attribute>
+ </oneOrMore>
+ <oneOrMore>
+ <attribute>
+ <nsName/>
+ </attribute>
+ </oneOrMore>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName>
+ <except>
+ <name>bar</name>
+ </except>
+ </nsName>
+ </except>
+ </anyName>
+ </attribute>
+ </oneOrMore>
+ <attribute name="baz"/>
+</element>
+</correct>
+<valid>
+<foo bar="xx" baz="yy"/>
+</valid>
+<invalid>
+<foo x="xx" baz="yy"/>
+</invalid>
+<valid>
+<foo xmlns:eg="http://www.example.com/" eg:x="xx" baz="yy"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <attribute>
+ <nsName ns="http://www.example.com/1"/>
+ </attribute>
+ </oneOrMore>
+ <oneOrMore>
+ <attribute>
+ <nsName ns="http://www.example.com/2"/>
+ </attribute>
+ </oneOrMore>
+</element>
+</correct>
+<valid>
+<foo xmlns:eg1="http://www.example.com/1"
+ xmlns:eg2="http://www.example.com/2"
+ eg1:x="xx" eg2:y="yy"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.3</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <attribute name="bar"/>
+ <attribute name="bar"/>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo bar="xx"/>
+</valid>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="bar"/>
+ <choice>
+ <attribute name="baz"/>
+ <attribute name="bar"/>
+ </choice>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute><anyName/><text/></attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute><nsName ns =""/><text/></attribute>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute><choice><nsName ns =""/><name>foo</name></choice><text/></attribute>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+<testSuite>
+<section>7.4</section>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <interleave>
+ <element name="baz">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </interleave>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <group>
+ <element name="baz">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <group>
+ <element name="baz">
+ <empty/>
+ </element>
+ <interleave>
+ <element name="baz">
+ <empty/>
+ </element>
+ <element name="bar">
+ <empty/>
+ </element>
+ </interleave>
+ </group>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <optional>
+ <element name="bar">
+ <empty/>
+ </element>
+ </optional>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element>
+ <nsName ns=""/>
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element>
+ <anyName/>
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <notAllowed/>
+ </element>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element>
+ <anyName>
+ <except>
+ <name>bar</name>
+ </except>
+ </anyName>
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo><bar/><baz/></foo>
+</valid>
+</testCase>
+<testCase>
+<section>7.4</section>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <choice>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="bar">
+ <text/>
+ </element>
+ </choice>
+ <element name="baz">
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<valid>
+<foo><bar/><baz/></foo>
+</valid>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <text/>
+ <text/>
+ </interleave>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>7.4</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <mixed>
+ <mixed>
+ <element name="bar">
+ <empty/>
+ </element>
+ </mixed>
+ <element name="baz">
+ <empty/>
+ </element>
+ </mixed>
+</element>
+</incorrect>
+</testCase>
+</testSuite>
+</testSuite>
+<testSuite>
+<documentation>Regressions</documentation>
+<testCase>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <element name="foo">
+ <choice>
+ <group>
+ <attribute name="bar"><empty/></attribute>
+ <element name="baz1"><empty/></element>
+ </group>
+ <group>
+ <attribute name="bar"><text/></attribute>
+ <element name="baz2"><empty/></element>
+ </group>
+ </choice>
+ </element>
+</start>
+</grammar>
+</correct>
+<valid>
+<foo bar=" "><baz1/></foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<notAllowed xmlns="http://relaxng.org/ns/structure/1.0"/>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+</testCase>
+</testSuite>
+</testSuite>
diff --git a/test/relaxng/OpenDocumentSub.rng b/test/relaxng/OpenDocumentSub.rng
new file mode 100644
index 0000000..161be66
--- /dev/null
+++ b/test/relaxng/OpenDocumentSub.rng
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ OASIS OpenDocument v1.0
+ Relax-NG Schema
+
+ ** It's only a very small sub-set of the schema, meant for debugging text-notes-configuration element **
+-->
+
+<grammar
+ xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+>
+<define name="office-process-content">
+ <optional>
+ <attribute name="office:process-content" a:defaultValue="true">
+ <ref name="boolean"/>
+ </attribute>
+ </optional>
+</define>
+<start>
+ <choice>
+ <ref name="office-document-styles"/>
+ </choice>
+</start>
+<define name="office-document-styles">
+ <element name="office:document-styles">
+ <ref name="office-document-common-attrs"/>
+ <ref name="office-styles"/>
+ </element>
+</define>
+<define name="office-document-common-attrs" combine="interleave">
+ <optional>
+ <attribute name="office:version">
+ <ref name="string"/>
+ </attribute>
+ </optional>
+</define>
+<define name="office-styles">
+ <optional>
+ <element name="office:styles">
+ <interleave>
+ <zeroOrMore>
+ <ref name="text-notes-configuration"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </optional>
+</define>
+<define name="text-notes-configuration">
+ <element name="text:notes-configuration">
+ <ref name="text-notes-configuration-content"/>
+ </element>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <ref name="text-note-class"/>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:citation-style-name">
+ <ref name="styleNameRef"/>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:citation-body-style-name">
+ <ref name="styleNameRef"/>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:default-style-name">
+ <ref name="styleNameRef"/>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:master-page-name">
+ <ref name="styleNameRef"/>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:start-value">
+ <ref name="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <ref name="common-num-format-prefix-suffix-attlist"/>
+ <optional>
+ <ref name="common-num-format-attlist"/>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:start-numbering-at">
+ <choice>
+ <value>document</value>
+ <value>chapter</value>
+ <value>page</value>
+ </choice>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <attribute name="text:footnotes-position">
+ <choice>
+ <value>text</value>
+ <value>page</value>
+ <value>section</value>
+ <value>document</value>
+ </choice>
+ </attribute>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <element name="text:note-continuation-notice-forward">
+ <text/>
+ </element>
+ </optional>
+</define>
+<define name="text-notes-configuration-content" combine="interleave">
+ <optional>
+ <element name="text:note-continuation-notice-backward">
+ <text/>
+ </element>
+ </optional>
+</define>
+<define name="common-num-format-prefix-suffix-attlist" combine="interleave">
+ <optional>
+ <attribute name="style:num-prefix">
+ <ref name="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style:num-suffix">
+ <ref name="string"/>
+ </attribute>
+ </optional>
+</define>
+<define name="common-num-format-attlist" combine="interleave">
+ <choice>
+ <attribute name="style:num-format">
+ <choice>
+ <value>1</value>
+ <value>i</value>
+ <value>I</value>
+ <ref name="string"/>
+ <empty/>
+ </choice>
+ </attribute>
+ <group>
+ <attribute name="style:num-format">
+ <choice>
+ <value>a</value>
+ <value>A</value>
+ </choice>
+ </attribute>
+ <ref name="style-num-letter-sync-attlist"/>
+ </group>
+ <empty/>
+ </choice>
+</define>
+<define name="style-num-letter-sync-attlist" combine="interleave">
+ <optional>
+ <attribute name="style:num-letter-sync">
+ <ref name="boolean"/>
+ </attribute>
+ </optional>
+</define>
+<define name="text-note-class">
+ <attribute name="text:note-class">
+ <choice>
+ <value>footnote</value>
+ <value>endnote</value>
+ </choice>
+ </attribute>
+</define>
+<define name="styleNameRef">
+ <choice>
+ <data type="NCName"/>
+ <empty/>
+ </choice>
+</define>
+<define name="nonNegativeInteger">
+ <data type="nonNegativeInteger"/>
+</define>
+<define name="boolean">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+</define>
+<define name="string">
+ <data type="string"/>
+</define>
+</grammar>
diff --git a/test/relaxng/OpenDocumentSub_0.xml b/test/relaxng/OpenDocumentSub_0.xml
new file mode 100644
index 0000000..9cfb198
--- /dev/null
+++ b/test/relaxng/OpenDocumentSub_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" office:version="1.0">
+ <office:styles>
+ <text:notes-configuration text:note-class="endnote" style:num-format="1" text:start-value="0"/>
+ </office:styles>
+</office:document-styles>
diff --git a/test/relaxng/addressBook.rng b/test/relaxng/addressBook.rng
new file mode 100644
index 0000000..3d910f9
--- /dev/null
+++ b/test/relaxng/addressBook.rng
@@ -0,0 +1,24 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <element name="addressBook">
+ <zeroOrMore>
+ <element name="card">
+ <ref name="cardContent"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="cardContent">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </define>
+
+</grammar>
+
+
diff --git a/test/relaxng/choice0.rng b/test/relaxng/choice0.rng
new file mode 100644
index 0000000..99526e1
--- /dev/null
+++ b/test/relaxng/choice0.rng
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="device">
+ <choice>
+ <group>
+ <attribute name="link">
+ <value>ethernet</value>
+ </attribute>
+ <optional>
+ <element name="ethernet-element">
+ <text/>
+ </element>
+ </optional>
+ </group>
+ <group>
+ <attribute name="link">
+ <value>serial</value>
+ </attribute>
+ <optional>
+ <element name="serial-element">
+ <text/>
+ </element>
+ </optional>
+ </group>
+ </choice>
+</element>
diff --git a/test/relaxng/choice0_0.xml b/test/relaxng/choice0_0.xml
new file mode 100644
index 0000000..113ffa8
--- /dev/null
+++ b/test/relaxng/choice0_0.xml
@@ -0,0 +1,2 @@
+<device link="ethernet">
+</device>
diff --git a/test/relaxng/choice0_1.xml b/test/relaxng/choice0_1.xml
new file mode 100644
index 0000000..f0c441d
--- /dev/null
+++ b/test/relaxng/choice0_1.xml
@@ -0,0 +1,2 @@
+<device link="serial">
+</device>
diff --git a/test/relaxng/choice0_2.xml b/test/relaxng/choice0_2.xml
new file mode 100644
index 0000000..5f67e0b
--- /dev/null
+++ b/test/relaxng/choice0_2.xml
@@ -0,0 +1,3 @@
+<device link="ethernet">
+ <ethernet-element/>
+</device>
diff --git a/test/relaxng/choice0_3.xml b/test/relaxng/choice0_3.xml
new file mode 100644
index 0000000..79ac4a6
--- /dev/null
+++ b/test/relaxng/choice0_3.xml
@@ -0,0 +1,3 @@
+<device link="serial">
+ <serial-element/>
+</device>
diff --git a/test/relaxng/choice0_4.xml b/test/relaxng/choice0_4.xml
new file mode 100644
index 0000000..1de1abc
--- /dev/null
+++ b/test/relaxng/choice0_4.xml
@@ -0,0 +1,2 @@
+<device link="unknown">
+</device>
diff --git a/test/relaxng/choice0_5.xml b/test/relaxng/choice0_5.xml
new file mode 100644
index 0000000..2ac50f7
--- /dev/null
+++ b/test/relaxng/choice0_5.xml
@@ -0,0 +1,3 @@
+<device link="ethernet">
+ <serial-element/>
+</device>
diff --git a/test/relaxng/choice0_6.xml b/test/relaxng/choice0_6.xml
new file mode 100644
index 0000000..1e4d1d2
--- /dev/null
+++ b/test/relaxng/choice0_6.xml
@@ -0,0 +1,3 @@
+<device link="serial">
+ <ethernet-element/>
+</device>
diff --git a/test/relaxng/choice0_7.xml b/test/relaxng/choice0_7.xml
new file mode 100644
index 0000000..f28f89f
--- /dev/null
+++ b/test/relaxng/choice0_7.xml
@@ -0,0 +1,3 @@
+<device link="ethernet">
+ <unknown-element/>
+</device>
diff --git a/test/relaxng/choice0_8.xml b/test/relaxng/choice0_8.xml
new file mode 100644
index 0000000..f810229
--- /dev/null
+++ b/test/relaxng/choice0_8.xml
@@ -0,0 +1,3 @@
+<device link="unknown">
+ <unknown-element/>
+</device>
diff --git a/test/relaxng/compare0.rng b/test/relaxng/compare0.rng
new file mode 100644
index 0000000..a0446c8
--- /dev/null
+++ b/test/relaxng/compare0.rng
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<element name="number" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <attribute name="att1">
+ <value type="integer"> 1 </value>
+ </attribute>
+</element>
+
diff --git a/test/relaxng/compare0_0.xml b/test/relaxng/compare0_0.xml
new file mode 100644
index 0000000..6a74b2f
--- /dev/null
+++ b/test/relaxng/compare0_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" ?>
+<number att1="x"></number>
+
diff --git a/test/relaxng/comps.rng b/test/relaxng/comps.rng
new file mode 100644
index 0000000..86172c1
--- /dev/null
+++ b/test/relaxng/comps.rng
@@ -0,0 +1,177 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+<start>
+ <ref name="comps"/>
+</start>
+
+<define name="package-name">
+ <text/>
+</define>
+
+<define name="group-name">
+ <text/>
+</define>
+
+<define name="lang">
+ <text/>
+</define>
+
+<define name="description-text">
+ <text/>
+</define>
+
+<define name="comps">
+ <element name="comps">
+ <oneOrMore>
+ <ref name="group"/>
+ </oneOrMore>
+ <ref name="grouphierarchy"/>
+ <oneOrMore>
+ <ref name="package"/>
+ </oneOrMore>
+ </element>
+</define>
+
+<define name="group">
+ <element name="group">
+ <element name="id">
+ <ref name="group-name"/>
+ </element>
+ <interleave>
+ <ref name="names"/>
+ <optional>
+ <element name="default">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </element>
+ </optional>
+ <optional>
+ <ref name="descriptions"/>
+ </optional>
+ <optional>
+ <element name="uservisible">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </element>
+ </optional>
+ <optional>
+ <element name="langonly">
+ <ref name="lang"/>
+ </element>
+ </optional>
+ </interleave>
+ <optional>
+ <element name="grouplist">
+ <zeroOrMore>
+ <element name="groupreq">
+ <ref name="group-name"/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="metapkg">
+ <attribute name="type">
+ <choice>
+ <value>default</value>
+ <!-- <value>mandatory</value> ?? -->
+ <value>optional</value>
+ </choice>
+ </attribute>
+ <ref name="package-name"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </optional>
+ <optional>
+ <element name="packagelist">
+ <oneOrMore>
+ <element name="packagereq">
+ <attribute name="type">
+ <choice>
+ <value>default</value>
+ <value>mandatory</value>
+ <value>optional</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="requires">
+ <ref name="package-name"/>
+ </attribute>
+ </optional>
+ <ref name="package-name"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </element>
+</define>
+
+<define name="grouphierarchy">
+ <element name="grouphierarchy">
+ <oneOrMore>
+ <ref name="category"/>
+ </oneOrMore>
+ </element>
+</define>
+
+<define name="category">
+ <element name="category">
+ <ref name="names"/>
+ <optional>
+ <element name="subcategories">
+ <oneOrMore>
+ <element name="subcategory">
+ <ref name="package-name"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </element>
+</define>
+
+<define name="package">
+ <element name="package">
+ <element name="name">
+ <ref name="package-name"/>
+ </element>
+ <element name="dependencylist">
+ <zeroOrMore>
+ <element name="dependency">
+ <ref name="package-name"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </element>
+</define>
+
+<define name="names">
+ <element name="name">
+ <ref name="description-text"/>
+ </element>
+ <zeroOrMore>
+ <element name="name">
+ <attribute name="xml:lang">
+ <ref name="lang"/>
+ </attribute>
+ <ref name="description-text"/>
+ </element>
+ </zeroOrMore>
+</define>
+
+<define name="descriptions">
+ <element name="description">
+ <ref name="description-text"/>
+ </element>
+ <zeroOrMore>
+ <element name="description">
+ <attribute name="xml:lang">
+ <ref name="lang"/>
+ </attribute>
+ <ref name="description-text"/>
+ </element>
+ </zeroOrMore>
+</define>
+
+</grammar>
diff --git a/test/relaxng/comps_0.xml b/test/relaxng/comps_0.xml
new file mode 100644
index 0000000..c0168a5
--- /dev/null
+++ b/test/relaxng/comps_0.xml
@@ -0,0 +1,17870 @@
+<?xml version="1.0"?>
+<comps>
+<!-- <meta> -->
+<!-- Meta information will go here eventually -->
+<!-- </meta> -->
+ <group>
+ <id>core</id>
+ <name>Core</name>
+ <name xml:lang="cs">Jádro</name>
+ <name xml:lang="da">Grundlæggende</name>
+ <name xml:lang="de">Haupt</name>
+ <name xml:lang="es">Núcleo</name>
+ <name xml:lang="fr">Tore</name>
+ <name xml:lang="is">Lágmarkskerfi</name>
+ <name xml:lang="it">Principale</name>
+ <name xml:lang="ja">コア</name>
+ <name xml:lang="ko">핵심</name>
+ <name xml:lang="no">Kjerne</name>
+ <name xml:lang="pt">Núcleo</name>
+ <name xml:lang="ru">ОÑнова</name>
+ <name xml:lang="sv">Grundläggande</name>
+ <name xml:lang="zh_CN">核心</name>
+ <name xml:lang="zh_TW">主è¦</name>
+ <default>true</default>
+ <description>Smallest possible installation</description>
+ <description xml:lang="cs">Nejmenší možná instalace</description>
+ <description xml:lang="da">Mindst mulige installation</description>
+ <description xml:lang="de">Kleinstmögliche Installation</description>
+ <description xml:lang="es">Instalación lo más pequeña posible</description>
+ <description xml:lang="fr">Plus petite installation possible</description>
+ <description xml:lang="is">Lágmarks uppsetning</description>
+ <description xml:lang="it">Installazione minima</description>
+ <description xml:lang="ja">最低å¯èƒ½ãªã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«</description>
+ <description xml:lang="ko">가능한 최소 설치</description>
+ <description xml:lang="no">Minste mulige installering</description>
+ <description xml:lang="pt">A mais pequena instalação possível</description>
+ <description xml:lang="ru">Минимально Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ ÑƒÑтановка</description>
+ <description xml:lang="sv">Minsta möjliga installation</description>
+ <description xml:lang="zh_CN">最å°å®‰è£…</description>
+ <description xml:lang="zh_TW">最å°çš„安è£</description>
+ <uservisible>false</uservisible>
+ <packagelist>
+ <packagereq type="default">ash</packagereq>
+ <packagereq type="mandatory">basesystem</packagereq>
+ <packagereq type="mandatory">bash</packagereq>
+ <packagereq type="mandatory">bdflush</packagereq>
+ <packagereq type="mandatory">cpio</packagereq>
+ <packagereq type="mandatory">e2fsprogs</packagereq>
+ <packagereq type="mandatory">ed</packagereq>
+ <packagereq type="mandatory">file</packagereq>
+ <packagereq type="mandatory">filesystem</packagereq>
+ <packagereq type="mandatory">glibc</packagereq>
+ <packagereq type="mandatory">grub</packagereq>
+ <packagereq type="mandatory">hdparm</packagereq>
+ <packagereq type="mandatory">hotplug</packagereq>
+ <packagereq type="mandatory">initscripts</packagereq>
+ <packagereq type="mandatory">iproute</packagereq>
+ <packagereq type="mandatory">iputils</packagereq>
+ <packagereq type="mandatory">kbd</packagereq>
+ <packagereq type="mandatory">kernel</packagereq>
+ <packagereq type="mandatory">ksymoops</packagereq>
+ <packagereq type="mandatory">libgcc</packagereq>
+ <packagereq type="mandatory">libtermcap</packagereq>
+ <packagereq type="mandatory">losetup</packagereq>
+ <packagereq type="mandatory">passwd</packagereq>
+ <packagereq type="mandatory">procps</packagereq>
+ <packagereq type="mandatory">raidtools</packagereq>
+ <packagereq type="mandatory">readline</packagereq>
+ <packagereq type="mandatory">redhat-logos</packagereq>
+ <packagereq type="mandatory">redhat-release</packagereq>
+ <packagereq type="mandatory">rootfiles</packagereq>
+ <packagereq type="mandatory">rpm</packagereq>
+ <packagereq type="mandatory">setserial</packagereq>
+ <packagereq type="mandatory">setup</packagereq>
+ <packagereq type="mandatory">sysklogd</packagereq>
+ <packagereq type="mandatory">SysVinit</packagereq>
+ <packagereq type="mandatory">termcap</packagereq>
+ <packagereq type="mandatory">util-linux</packagereq>
+ <packagereq type="mandatory">vim-minimal</packagereq>
+<!-- the following are needed for anaconda post-install bits -->
+ <packagereq type="mandatory">authconfig</packagereq>
+ <packagereq type="mandatory">kudzu</packagereq>
+ <packagereq type="default">lilo</packagereq>
+ <packagereq type="mandatory">mouseconfig</packagereq>
+ <packagereq type="mandatory">shadow-utils</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>base</id>
+ <name>Base</name>
+ <name xml:lang="cs">Základ</name>
+ <name xml:lang="da">Base</name>
+ <name xml:lang="de">Basis</name>
+ <name xml:lang="es">Base</name>
+ <name xml:lang="fr">Base</name>
+ <name xml:lang="is">Grunnur</name>
+ <name xml:lang="it">Base</name>
+ <name xml:lang="ja">ベース</name>
+ <name xml:lang="ko">기준</name>
+ <name xml:lang="no">Grunnpakker</name>
+ <name xml:lang="pt">Base</name>
+ <name xml:lang="ru">ОÑнова</name>
+ <name xml:lang="sv">Bas</name>
+ <name xml:lang="zh_CN">基本</name>
+ <name xml:lang="zh_TW">基礎</name>
+ <description></description>
+ <uservisible>false</uservisible>
+ <default>true</default>
+ <grouplist>
+ <groupreq>core</groupreq>
+ <groupreq>dialup</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">acl</packagereq>
+ <packagereq type="default">anacron</packagereq>
+ <packagereq type="default">apmd</packagereq>
+ <packagereq type="mandatory">aspell</packagereq>
+ <packagereq type="mandatory">at</packagereq>
+ <packagereq type="mandatory">attr</packagereq>
+ <packagereq type="mandatory">authconfig</packagereq>
+ <packagereq type="default">autofs</packagereq>
+ <packagereq type="mandatory">bc</packagereq>
+ <packagereq type="mandatory">bind-utils</packagereq>
+ <packagereq type="mandatory">bzip2</packagereq>
+ <packagereq type="mandatory">crontabs</packagereq>
+ <packagereq type="mandatory">cyrus-sasl-plain</packagereq>
+ <packagereq type="mandatory">dhclient</packagereq>
+ <packagereq type="mandatory">diffutils</packagereq>
+ <packagereq type="mandatory">dos2unix</packagereq>
+ <packagereq type="default">dosfstools</packagereq>
+ <packagereq type="default">dump</packagereq>
+ <packagereq type="mandatory">ethtool</packagereq>
+ <packagereq type="mandatory">eject</packagereq>
+ <packagereq type="default">fbset</packagereq>
+ <packagereq type="default">finger</packagereq>
+ <packagereq type="default">ftp</packagereq>
+ <packagereq type="default">gpm</packagereq>
+ <packagereq type="default">irda-utils</packagereq>
+ <packagereq type="mandatory">kbdconfig</packagereq>
+ <packagereq type="default">kernel-pcmcia-cs</packagereq>
+ <packagereq type="optional">krb5-workstation</packagereq>
+ <packagereq type="mandatory">kudzu</packagereq>
+ <packagereq type="default">lftp</packagereq>
+ <packagereq type="mandatory">lha</packagereq>
+ <packagereq type="mandatory">logrotate</packagereq>
+ <packagereq type="mandatory">lsof</packagereq>
+ <packagereq type="default">logwatch</packagereq>
+ <packagereq type="mandatory">lokkit</packagereq>
+ <packagereq type="mandatory">mailcap</packagereq>
+ <packagereq type="mandatory">man</packagereq>
+ <packagereq type="default">man-pages</packagereq>
+ <packagereq type="mandatory">mkbootdisk</packagereq>
+ <packagereq type="mandatory">mt-st</packagereq>
+ <packagereq type="default">mtools</packagereq>
+ <packagereq type="default">mtr</packagereq>
+ <packagereq type="mandatory">netconfig</packagereq>
+ <packagereq type="default">nfs-utils</packagereq>
+ <packagereq type="default">nss_ldap</packagereq>
+ <packagereq type="mandatory">ntsysv</packagereq>
+ <packagereq type="default">openssh-clients</packagereq>
+ <packagereq type="default">pam_krb5</packagereq>
+ <packagereq type="default">pam_smb</packagereq>
+ <packagereq type="mandatory">parted</packagereq>
+ <packagereq type="default">pax</packagereq>
+ <packagereq type="mandatory">pciutils</packagereq>
+ <packagereq type="optional">pidentd</packagereq>
+ <packagereq type="mandatory">pinfo</packagereq>
+ <packagereq type="mandatory">quota</packagereq>
+ <packagereq type="default">rdate</packagereq>
+ <packagereq type="mandatory">redhat-logos</packagereq>
+ <packagereq type="default">reiserfs-utils</packagereq>
+ <packagereq type="default">rp-pppoe</packagereq>
+ <packagereq type="default">rsh</packagereq>
+ <packagereq type="mandatory">rsync</packagereq>
+ <packagereq type="default">jfsutils</packagereq>
+ <packagereq type="default">setuptool</packagereq>
+ <packagereq type="default">sendmail</packagereq>
+ <packagereq type="mandatory">slocate</packagereq>
+ <packagereq type="default">specspo</packagereq>
+ <packagereq type="mandatory">star</packagereq>
+ <packagereq type="default">sudo</packagereq>
+ <packagereq type="default">stunnel</packagereq>
+ <packagereq type="mandatory">talk</packagereq>
+ <packagereq type="default">tcp_wrappers</packagereq>
+ <packagereq type="mandatory">tcsh</packagereq>
+ <packagereq type="mandatory">telnet</packagereq>
+ <packagereq type="mandatory">traceroute</packagereq>
+ <packagereq type="mandatory">time</packagereq>
+ <packagereq type="default">timeconfig</packagereq>
+ <packagereq type="mandatory">tmpwatch</packagereq>
+ <packagereq type="default">up2date</packagereq>
+ <packagereq type="mandatory">utempter</packagereq>
+ <packagereq type="default">wireless-tools</packagereq>
+ <packagereq type="default">rdist</packagereq>
+ <packagereq type="default">tcpdump</packagereq>
+ <packagereq type="default">net-snmp-utils</packagereq>
+ <packagereq type="default">openssh-server</packagereq>
+ <packagereq type="default">wget</packagereq>
+ <packagereq type="mandatory">unix2dos</packagereq>
+ <packagereq type="mandatory">unzip</packagereq>
+ <packagereq type="mandatory">whois</packagereq>
+ <packagereq type="mandatory">vim-common</packagereq>
+ <packagereq type="mandatory">vixie-cron</packagereq>
+ <packagereq type="default">ypbind</packagereq>
+ <packagereq type="mandatory">zip</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>printing</id>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <name>Printing Support</name>
+ <name xml:lang="cs">Podpora pro tisk</name>
+ <name xml:lang="da">Udskriftsunderstøttelse</name>
+ <name xml:lang="de">Drucker-Support</name>
+ <name xml:lang="es">Soporte para la impresión</name>
+ <name xml:lang="fr">Support d&apos;impression</name>
+ <name xml:lang="is">Prentstuðningur</name>
+ <name xml:lang="it">Supporto per la stampa</name>
+ <name xml:lang="ja">å°åˆ·ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ì¸ì‡„ 지ì›</name>
+ <name xml:lang="no">Skriverstøtte</name>
+ <name xml:lang="pt">Suporte a Impressão</name>
+ <name xml:lang="ru">Поддержка печати</name>
+ <name xml:lang="sv">Utskriftsstöd</name>
+ <name xml:lang="zh_CN">打å°æ”¯æŒ</name>
+ <name xml:lang="zh_TW">列å°æ”¯æ´</name>
+ <description>Install these tools to enable the system to print or act as a print server.</description>
+ <description xml:lang="cs">Nainstalováním tÄ›chto nástrojů umožníte VaÅ¡emu poÄítaÄi tisknout nebo vystupovat jako tiskový server.</description>
+ <description xml:lang="da">Installér disse værktøjer for at lade systemet udskrive eller fungere som udskriftsserver.</description>
+ <description xml:lang="de">Installieren Sie diese Tools, um es dem System zu ermöglichen zu drucken oder als Drucker-Server zu funktionieren.</description>
+ <description xml:lang="es">Instalar estas herramientas para habilitar el sistema para imprimir o actuar como un servidor de impresión.</description>
+ <description xml:lang="fr">Installer ces outils pour habiliter le système à imprimer ou agir comme un serveur d&apos;impression.</description>
+ <description xml:lang="is">Settu þessa pakka inn ef þú vilt prenta eða setja upp prentþjón.</description>
+ <description xml:lang="it">Installare questi strumenti per permettere al sistema di stampare o fungere da server di stampa.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ„ールをインストールã—ã¦ã‚·ã‚¹ãƒ†ãƒ ã‚’å°åˆ·å¯èƒ½ã«ã€åˆã¯ãƒ—リントサーãƒã¨ã—㦠有効ã«ã—ã¾ã™ã€‚</description>
+ <description xml:lang="ko">시스템ì—ì„œ ì¸ì‡„ 가능하게 하거나 ì¸ì‡„ 서버로 기능하게 하시려면 ì´ ë„구를 설치하십시오.</description>
+ <description xml:lang="no">Installer disse verktøyene for å kunne bruke skriver og å kunne sette opp systemet some utskriftstjener.</description>
+ <description xml:lang="pt">Instale estas ferramentas se desejar imprimir com o computador ou que este funcione como servidor de impressão.</description>
+ <description xml:lang="ru">УÑтановите Ñти пакеты, чтобы получить возможноÑÑ‚ÑŒ печатать файлы или иÑпользовать ÑиÑтему как Ñервер печати.</description>
+ <description xml:lang="sv">Installera dessa verktyg för att låta systemet skriva ut eller agera utskriftsserver.</description>
+ <description xml:lang="zh_CN">安装这些工具æ¥å¯ç”¨æ‰“å°ç³»ç»Ÿæˆ–充当打å°æœåŠ¡å™¨çš„系统。</description>
+ <description xml:lang="zh_TW">請安è£é€™äº›å¥—件,以啟用系統的列å°åŠŸèƒ½æˆ–當作一部列å°ä¼ºæœå™¨ã€‚</description>
+ <grouplist>
+ <metapkg type="optional">cups</metapkg>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">4Suite</packagereq>
+ <packagereq type="mandatory">XFree86-font-utils</packagereq>
+ <packagereq type="mandatory">a2ps</packagereq>
+ <packagereq type="mandatory">ghostscript</packagereq>
+ <packagereq type="default">hpijs</packagereq>
+ <packagereq type="default">LPRng</packagereq>
+ <packagereq type="mandatory">ttfprint</packagereq>
+ <packagereq type="mandatory">redhat-config-printer</packagereq>
+ <packagereq type="default">redhat-switch-printer</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>cups</id>
+ <uservisible>false</uservisible>
+ <default>false</default>
+ <name>Cups</name>
+ <name xml:lang="cs">Cups</name>
+ <name xml:lang="da">CUPS</name>
+ <name xml:lang="de">Cups</name>
+ <name xml:lang="es">Cups</name>
+ <name xml:lang="fr">Coupes </name>
+ <name xml:lang="is">Cups</name>
+ <name xml:lang="it">Cups</name>
+ <name xml:lang="ja">カップ</name>
+ <name xml:lang="ko">CUPS</name>
+ <name xml:lang="no">Cups</name>
+ <name xml:lang="pt">Cups</name>
+ <name xml:lang="ru">Cups</name>
+ <name xml:lang="sv">Cups</name>
+ <name xml:lang="zh_CN">Cups</name>
+ <name xml:lang="zh_TW">Cups</name>
+ <description>Cups printing service and drivers to use it.</description>
+ <description xml:lang="cs">Tisková služba Cups a ovladaÄe pro její použití.</description>
+ <description xml:lang="da">Udskriftstjenesten CUPS og de driverrutiner som behøves for brug af den.</description>
+ <description xml:lang="de">Cups Druckerdienst und Treiber für die Verwendung.</description>
+ <description xml:lang="es">Servicios de impresión cups y drivers para usarlo.</description>
+ <description xml:lang="fr">Service d&apos;impression des coupes et lecteurs pour l&apos;utiliser. </description>
+ <description xml:lang="is">Cups prentkerfið og reklar fyrir það.</description>
+ <description xml:lang="it">Servizio di stampa Cups e relativi driver per utilizzarlo.</description>
+ <description xml:lang="ja">カップå°åˆ·ã‚µãƒ¼ãƒ“スã¨ãれを使用ã™ã‚‹ãƒ‰ãƒ©ã‚¤ãƒãƒ¼ </description>
+ <description xml:lang="ko">CUPS ì¸ì‡„ 서비스와 ì´ ì„œë¹„ìŠ¤ë¥¼ 사용할 ë“œë¼ì´ë²„.</description>
+ <description xml:lang="no">Utskriftssystemet Cups med drivere.</description>
+ <description xml:lang="pt">Serviço de impressão cups e controladores para o utilizar.</description>
+ <description xml:lang="ru">Служба печати Cups и драйверы Ð´Ð»Ñ ÐµÐµ иÑпользованиÑ</description>
+ <description xml:lang="sv">Utskriftstjänsten Cups och de drivrutiner som behövs för användning av den.</description>
+ <description xml:lang="zh_CN">Cups 打å°æœåŠ¡åŠæ‰€éœ€é©±åŠ¨ç¨‹åºã€‚</description>
+ <description xml:lang="zh_TW">Cups 列å°æœå‹™èˆ‡è¦ä½¿ç”¨çš„驅動程å¼ã€‚</description>
+ <packagelist>
+ <packagereq type="mandatory">cups</packagereq>
+ <packagereq type="mandatory">cups-drivers</packagereq>
+ <packagereq type="default">cups-drivers-hpijs</packagereq>
+ <packagereq type="default">cups-drivers-pnm2ppa</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>base-x</id>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <name>X Window System</name>
+ <name xml:lang="cs">X Window System</name>
+ <name xml:lang="da">Vinduessystemet X</name>
+ <name xml:lang="de">X Window System</name>
+ <name xml:lang="es">Sistema X Window</name>
+ <name xml:lang="fr">Système X Window</name>
+ <name xml:lang="is">X gluggakerfið</name>
+ <name xml:lang="it">Sistema X Window</name>
+ <name xml:lang="ja">X Window System</name>
+ <name xml:lang="ko">X 윈ë„ìš° 시스템</name>
+ <name xml:lang="no">X</name>
+ <name xml:lang="pt">Sistema de Janelas X</name>
+ <name xml:lang="ru">СиÑтема X Window</name>
+ <name xml:lang="sv">Fönstersystemet X</name>
+ <name xml:lang="zh_CN">X 窗å£ç³»ç»Ÿ</name>
+ <name xml:lang="zh_TW">X 視窗系統</name>
+ <description>Install this group of packages to use the base graphical (X) user interface.</description>
+ <description xml:lang="cs">Tuto skupinu balíÄků nainstalujte pro použití grafického (X) uživatelského prostÅ™edí.</description>
+ <description xml:lang="da">Installér denne pakkegruppe for at bruge den grundlæggende grafiske brugergrænseflade (X).</description>
+ <description xml:lang="de">Installieren Sie diese Paketgruppe, um die grafische Hauptbenutzeroberfläche (X) zu verwenden.</description>
+ <description xml:lang="es">Instalar este grupo de paquetes para usar la interfaz de usuario (X) gráfica.</description>
+ <description xml:lang="fr">Installer ce groupe de paquetages pour utiliser l&apos;interface utilisateur graphique de base (X).</description>
+ <description xml:lang="is">Settu þessa pakka inn ef þú vilt nota myndræn forrit (X).</description>
+ <description xml:lang="it">Installare questo gruppo di pacchetti per usare l&apos;interfaccia utente grafica (X) di base.</description>
+ <description xml:lang="ja">ã“ã®ãƒ‘ッケージã®ã‚°ãƒ«ãƒ¼ãƒ—をインストールã—ã¦ã€åŸºæœ¬çš„グラフィカル(X)ユーザーインターフェイスを使用ã—ã¾ã™ã€‚</description>
+ <description xml:lang="ko">기본 그래픽 (X) ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 사용하시려면 ì´ íŒ¨í‚¤ì§€ ê·¸ë£¹ì„ ì„¤ì¹˜í•˜ì‹­ì‹œì˜¤.</description>
+ <description xml:lang="no">Installer denne pakkegruppen for å bruke et grafisk grensesnitt (X).</description>
+ <description xml:lang="pt">Instale este grupo de pacotes para usar a interface gráfica básica de utilizador (o X).</description>
+ <description xml:lang="ru">УÑтановите Ñту группу пакетов, чтобы получить графичеÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (X)</description>
+ <description xml:lang="sv">Installera denna paketgrupp för att använda det grundläggande grafiska gränssnittet (X).</description>
+ <description xml:lang="zh_CN">安装这组软件包æ¥ä½¿ç”¨åŸºç¡€å›¾å½¢åŒ–用户界é¢(X)。</description>
+ <description xml:lang="zh_TW">請安è£é€™å€‹å¥—件群組,以用來使用基礎的圖形 (X) 使用者介é¢ã€‚</description>
+ <grouplist>
+ <groupreq>printing</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">authconfig-gtk</packagereq>
+ <packagereq type="mandatory">bitmap-fonts</packagereq>
+ <packagereq type="default">firstboot</packagereq>
+ <packagereq type="mandatory">desktop-backgrounds-basic</packagereq>
+ <packagereq type="default">desktop-backgrounds-extra</packagereq>
+ <packagereq type="default">gdm</packagereq>
+ <packagereq type="default">openssh-askpass</packagereq>
+ <packagereq type="default">openssh-askpass-gnome</packagereq>
+ <packagereq type="default">redhat-config-date</packagereq>
+ <packagereq type="default">redhat-config-network</packagereq>
+ <packagereq type="default">redhat-config-services</packagereq>
+ <packagereq type="default">redhat-config-soundcard</packagereq>
+ <packagereq type="default">redhat-config-users</packagereq>
+ <packagereq type="default">redhat-config-xfree86</packagereq>
+ <packagereq type="default">redhat-logviewer</packagereq>
+ <packagereq type="default">redhat-config-printer-gui</packagereq>
+ <packagereq type="default">redhat-switch-printer-gnome</packagereq>
+ <packagereq type="default">redhat-switchmail-gnome</packagereq>
+ <packagereq type="default">redhat-config-packages</packagereq>
+ <packagereq type="default">switchdesk</packagereq>
+ <packagereq type="default">usermode-gtk</packagereq>
+ <packagereq type="mandatory">XFree86</packagereq>
+ <packagereq type="mandatory">Xtest</packagereq>
+ <packagereq type="mandatory">XFree86-font-utils</packagereq>
+ <packagereq type="mandatory">XFree86-tools</packagereq>
+ <packagereq type="mandatory">XFree86-twm</packagereq>
+ <packagereq type="mandatory">XFree86-xauth</packagereq>
+ <packagereq type="mandatory">XFree86-75dpi-fonts</packagereq>
+ <packagereq type="mandatory">XFree86-100dpi-fonts</packagereq>
+ <packagereq type="mandatory">xinitrc</packagereq>
+ <packagereq type="default">XFree86-xdm</packagereq>
+ <packagereq type="default">up2date-gnome</packagereq>
+ <packagereq type="default">rhn-applet</packagereq>
+ <packagereq type="optional">WindowMaker</packagereq>
+ <packagereq type="default">xisdnload</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>dialup</id>
+ <uservisible>false</uservisible>
+ <default>true</default>
+ <name>Dialup Networking Support</name>
+ <name xml:lang="cs">Podpora vytáÄeného pÅ™ipojení k síti</name>
+ <name xml:lang="da">Understøttelse for opkaldt opkopling</name>
+ <name xml:lang="de">Dialup Netzwerk Support</name>
+ <name xml:lang="es">Soporte de red del marcado</name>
+ <name xml:lang="fr">Support d&apos;accès distant au réseau</name>
+ <name xml:lang="is">Upphringinetsstuðningur</name>
+ <name xml:lang="it">Supporto di networking dialup</name>
+ <name xml:lang="ja">ダイヤルアップãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">전화연결 네트워킹 지ì›</name>
+ <name xml:lang="no">Støtte for oppringt nettverk</name>
+ <name xml:lang="pt">Suporte a Ligações Telefónicas</name>
+ <name xml:lang="ru">Удаленный доÑтуп к Ñети</name>
+ <name xml:lang="sv">Stöd för uppringd uppkoppling</name>
+ <name xml:lang="zh_CN">拨å·è”网支æŒ</name>
+ <name xml:lang="zh_TW">撥號網路支æ´</name>
+ <packagelist>
+ <packagereq type="mandatory">ppp</packagereq>
+ <packagereq type="default">lrzsz</packagereq>
+ <packagereq type="mandatory">minicom</packagereq>
+ <packagereq type="mandatory">statserial</packagereq>
+ <packagereq type="default">wvdial</packagereq>
+ <packagereq type="default">isdn4k-utils</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>gnome-desktop</id>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <name>GNOME Desktop Environment</name>
+ <name xml:lang="cs">Prostředí pracovní plochy GNOME</name>
+ <name xml:lang="da">Skrivebordsmiljøet Gnome</name>
+ <name xml:lang="de">GNOME Desktopumgebung</name>
+ <name xml:lang="es">Entorno de escritorio de GNOME</name>
+ <name xml:lang="fr">Environnement de bureau GNOME</name>
+ <name xml:lang="is">GNOME skjáborðið</name>
+ <name xml:lang="it">Ambiente desktop di GNOME</name>
+ <name xml:lang="ja">GNOMEデスクトップ環境</name>
+ <name xml:lang="ko">GNOME ë°ìŠ¤í¬íƒ‘ 환경</name>
+ <name xml:lang="no">Skrivebordsmiljøet GNOME</name>
+ <name xml:lang="pt">Ambiente de Trabalho GNOME</name>
+ <name xml:lang="ru">Окружение рабочего Ñтола GNOME</name>
+ <name xml:lang="sv">Skrivbordsmiljön GNOME</name>
+ <name xml:lang="zh_CN">GNOME æ¡Œé¢çŽ¯å¢ƒ</name>
+ <name xml:lang="zh_TW">GNOME æ¡Œé¢ç’°å¢ƒ</name>
+ <description>GNOME is a powerful, graphical user interface which includes a panel, desktop, system icons, and a graphical file manager.</description>
+ <description xml:lang="cs">GNOME je výkonné grafické uživatelské prostředí, které zahrnuje panel, prostředí pracovní plochy, systémové ikony a grafického správce souborů.</description>
+ <description xml:lang="da">Gnome er en stærk grafisk brugergrænseflade som indholder et panel, et skrivebord, systemikoner og en grafisk filbehandler.</description>
+ <description xml:lang="de">GNOME ist eine leistungsstarkes grafisches Benutzerinterface mit Panel, Desktop, Systemsymbolen und grafischem Fenstermanager.</description>
+ <description xml:lang="es">GNOME es una interfaz gráfica de usuario potente que incluye un panel, un escritorio, iconos del sistema y gestores de ficheros gráficos.</description>
+ <description xml:lang="fr">GNOME est une interface utilisateur graphique puissante qui comprend un tableau de bord, un bureau, des icônes de système et un gestionnaire de fichiers graphique.</description>
+ <description xml:lang="is">GNOME er öflugt myndrænt vinnuumhverfi sem inniheldur spjald, skjáborð, kerfissmámyndir og myndrænann skráarstjóra.</description>
+ <description xml:lang="it">GNOME è una potente interfaccia grafica utente che include un pannello, un desktop, icone di sistema e un file manager grafico.</description>
+ <description xml:lang="ja">GNOMEã¯ã€ãƒ‘ãƒãƒ«ã€ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã€ã‚·ã‚¹ãƒ†ãƒ ã‚¢ã‚¤ã‚³ãƒ³ã€åŠã³ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ« ファイルマãƒã‚¸ãƒ£ã‚’å«ã‚€å¼·åŠ›ãªã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã§ã™ã€‚</description>
+ <description xml:lang="ko">GNOMEì€ ê°•ë ¥í•œ 그래픽 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¡œì„œ 패ë„, ë°ìŠ¤í¬íƒ‘, 시스템 ì•„ì´ì½˜ê³¼ 그래픽 íŒŒì¼ ê´€ë¦¬ìž ê¸°ëŠ¥ì„ ê°–ì¶”ê³  있습니다.</description>
+ <description xml:lang="no">GNOME er et kraftig, grafisk brukergrensesnitt som inkluderer et panel, skrivebord, systemikoner og en grafisk filhåndterer</description>
+ <description xml:lang="pt">GNOME is a powerful, graphical user interface which includes a panel, desktop, system icons, and a graphical file manager.</description>
+ <description xml:lang="ru">GNOME - Ñто мощный графичеÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, который включает панель, рабочий Ñтол, ÑиÑтемные пиктограммы и графичеÑкий менеджер файлов.</description>
+ <description xml:lang="sv">GNOME är ett kraftfullt, grafiskt användargränssnitt som innehåller en panel, ett skrivbord, systemikoner och en grafisk filhanterare.</description>
+ <description xml:lang="zh_CN">GNOME 是一个功能强大的图形化用户界é¢ï¼Œå®ƒåŒ…括一个é¢æ¿ã€ æ¡Œé¢ã€ç³»ç»Ÿå›¾æ ‡ã€ä»¥åŠå›¾å½¢åŒ–文件管ç†å™¨ã€‚</description>
+ <description xml:lang="zh_TW">GNOME 是一個功能強大的圖形使用者介é¢ï¼Œå®ƒå«æœ‰ä¸€å€‹é¢æ¿ã€æ¡Œé¢ã€ç³»çµ±åœ–示 以åŠä¸€å€‹åœ–形的檔案管ç†å“¡ã€‚</description>
+ <grouplist>
+ <groupreq>base-x</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">control-center</packagereq>
+ <packagereq type="mandatory">desktop-file-utils</packagereq>
+ <packagereq type="default">eog</packagereq>
+ <packagereq type="default">file-roller</packagereq>
+ <packagereq type="default">gconf-editor</packagereq>
+ <packagereq type="default">gedit</packagereq>
+ <packagereq type="default">gftp</packagereq>
+ <packagereq type="default">gimp-print-utils</packagereq>
+ <packagereq type="mandatory">gnome-applets</packagereq>
+ <packagereq type="default">gnome-audio</packagereq>
+ <packagereq type="default">gnome-media</packagereq>
+ <packagereq type="mandatory">gnome-panel</packagereq>
+ <packagereq type="mandatory">gnome-session</packagereq>
+ <packagereq type="mandatory">gnome-spell</packagereq>
+ <packagereq type="default">gnome-system-monitor</packagereq>
+ <packagereq type="mandatory">gnome-terminal</packagereq>
+ <packagereq type="default">gnome-user-docs</packagereq>
+ <packagereq type="mandatory">gnome-utils</packagereq>
+ <packagereq type="default">gnome-vfs-extras</packagereq>
+ <packagereq type="default">gnome-vfs2-extras</packagereq>
+ <packagereq type="default">gqview</packagereq>
+ <packagereq type="default">gtk-engines</packagereq>
+ <packagereq type="default">gtk2-engines</packagereq>
+ <packagereq type="default">ggv</packagereq>
+ <packagereq type="default">mtr-gtk</packagereq>
+ <packagereq type="default">magicdev</packagereq>
+ <packagereq type="default">hwbrowser</packagereq>
+ <packagereq type="mandatory">metacity</packagereq>
+ <packagereq type="mandatory">nautilus</packagereq>
+ <packagereq type="mandatory">switchdesk-gnome</packagereq>
+ <packagereq type="mandatory">yelp</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>kde-desktop</id>
+ <name>KDE Desktop Environment</name>
+ <name xml:lang="cs">Prostředí pracovní plochy KDE</name>
+ <name xml:lang="da">Skrivebordsmiljøet KDE</name>
+ <name xml:lang="de">KDE Desktopumgebung</name>
+ <name xml:lang="es">Entorno de escritorio para KDE</name>
+ <name xml:lang="fr">Environnement de bureau KDE</name>
+ <name xml:lang="is">KDE skjáborðið</name>
+ <name xml:lang="it">Ambiente desktop KDE</name>
+ <name xml:lang="ja">KDEデスクトップ環境</name>
+ <name xml:lang="ko">KDE ë°ìŠ¤í¬íƒ‘ 환경</name>
+ <name xml:lang="no">Skrivebordsmiljøet KDE</name>
+ <name xml:lang="pt">Ambiente de Trabalho KDE</name>
+ <name xml:lang="ru">Окружение рабочего Ñтола KDE</name>
+ <name xml:lang="sv">Skrivbordsmiljön KDE</name>
+ <name xml:lang="zh_CN">KDE æ¡Œé¢çŽ¯å¢ƒ</name>
+ <name xml:lang="zh_TW">KDE æ¡Œé¢ç’°å¢ƒ</name>
+ <description>KDE is a powerful, graphical user interface which includes a panel, desktop, system icons, and a graphical file manager.</description>
+ <description xml:lang="cs">KDE je výkonné grafické uživatelské prostředí, které zahrnuje panel, prostředí pracovní plochy, systémové ikony a grafického správce souborů.</description>
+ <description xml:lang="da">KDE er en stærk, grafisk brugergrænseflade som indholder et panel, et skrivebord, systemikoner og en grafisk filbehandler.</description>
+ <description xml:lang="de">KDE ist eine leistungsstarkes grafisches Benutzerinterface mit Panel, Desktop, Systemsymbolen und grafischem Fenstermanager.</description>
+ <description xml:lang="es">KDE es una interfaz de usuario gráfica y potente que incluye un panel, un escritorio, iconos del sistema y un gestor gráfico de ficheros. </description>
+ <description xml:lang="fr">KDE est une interface utilisateur graphique puissante comprenant un tableau de bord, un bureau, des icônes de système et un gestionnaire de fichier graphique. </description>
+ <description xml:lang="is">KDE er öflugt myndrænt vinnuumhverfi sem inniheldur spjald, skjáborð, kerfissmámyndir og myndrænann skráarstjóra.</description>
+ <description xml:lang="it">KDE è una potente interfaccia grafica utente che include un pannello, un desktop, icone di sistema e un file manager grafico.</description>
+ <description xml:lang="ja">KDEã¯ã€ãƒ‘ãƒãƒ«ã€ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã€ã‚·ã‚¹ãƒ†ãƒ ã‚¢ã‚¤ã‚³ãƒ³åŠã³ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ãƒ•ã‚¡ã‚¤ãƒ« マãƒã‚¸ãƒ£ã‚’å«ã‚€å¼·åŠ›ãªã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã§ã™ã€‚</description>
+ <description xml:lang="ko">KDE는 강력한 그래픽 ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¡œì„œ 패ë„, ë°ìŠ¤í¬íƒ‘, 시스템 ì•„ì´ì½˜ê³¼ 그래픽 íŒŒì¼ ê´€ë¦¬ìž ê¸°ëŠ¥ì„ ê°–ì¶”ê³  있습니다.</description>
+ <description xml:lang="no">KDE er et kraftig, grafisk brukergrensesnitt som inkluderer et panel, skrivebord, systemikoner og en grafisk filhåndterer.</description>
+ <description xml:lang="pt">O KDE é uma interface gráfica poderosa que inclui um painel, um ambiente de trabalho, os ícones de sistema e um gestor de ficheiros gráfico.</description>
+ <description xml:lang="ru">KDE Ñто мощный графичеÑкий интерфейÑ, включающий в ÑÐµÐ±Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ приложений, рабочий Ñтол, ÑиÑтемные иконки, и графичеÑкий менеджер файлов.</description>
+ <description xml:lang="sv">KDE är ett kraftfullt, grafiskt användargränssnitt som innehåller en panel, ett skrivbord, systemikoner och en grafisk filhanterare.</description>
+ <description xml:lang="zh_CN">KDE 是一个功能强大的图形化用户界é¢ã€‚它包括é¢æ¿ã€æ¡Œé¢ã€ 系统图标ã€ä»¥åŠå›¾å½¢åŒ–文件管ç†å™¨ã€‚</description>
+ <description xml:lang="zh_TW">KDE 是一個功能強大的圖形使用者介é¢ï¼Œå®ƒå«æœ‰ä¸€å€‹é¢æ¿ã€æ¡Œé¢ã€ç³»çµ±åœ–示 以åŠä¸€å€‹åœ–形的檔案管ç†å“¡ã€‚</description>
+ <grouplist>
+ <groupreq>base-x</groupreq>
+ <groupreq>dialup</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">ark</packagereq>
+ <packagereq type="mandatory">arts</packagereq>
+ <packagereq type="default">autorun</packagereq>
+ <packagereq type="mandatory">fam</packagereq>
+ <packagereq type="mandatory">htdig</packagereq>
+ <packagereq type="optional">kaboodle</packagereq>
+ <packagereq type="default">kamera</packagereq>
+ <packagereq type="optional">karm</packagereq>
+ <packagereq type="mandatory">kcalc</packagereq>
+ <packagereq type="mandatory">kcharselect</packagereq>
+ <packagereq type="optional">kdeaddons-kate</packagereq>
+ <packagereq type="optional">kdeaddons-noatun</packagereq>
+ <packagereq type="optional">kdeaddons-konqueror</packagereq>
+ <packagereq type="default">kdeaddons-kicker</packagereq>
+ <packagereq type="default">kdeaddons-konqueror</packagereq>
+ <packagereq type="optional">kdeadmin</packagereq>
+ <packagereq type="mandatory">kdeartwork</packagereq>
+ <packagereq type="default">kdeartwork-locolor</packagereq>
+ <packagereq type="mandatory">kdeartwork-screensavers</packagereq>
+ <packagereq type="default">kdemultimedia-arts</packagereq>
+ <packagereq type="default">kdemultimedia-kfile</packagereq>
+ <packagereq type="mandatory">kdepasswd</packagereq>
+ <packagereq type="default">kdepim</packagereq>
+ <packagereq type="mandatory">kdebase</packagereq>
+ <packagereq type="mandatory">kdessh</packagereq>
+ <packagereq type="mandatory">kdf</packagereq>
+ <packagereq type="default">kdict</packagereq>
+ <packagereq type="default">kedit</packagereq>
+ <packagereq type="default">kdeaddons-knewsticker</packagereq>
+ <packagereq type="mandatory">kdeutils-laptop</packagereq>
+ <packagereq type="mandatory">kfloppy</packagereq>
+ <packagereq type="mandatory">kfile-pdf</packagereq>
+ <packagereq type="mandatory">kfile-png</packagereq>
+ <packagereq type="mandatory">khexedit</packagereq>
+ <packagereq type="mandatory">kjots</packagereq>
+ <packagereq type="mandatory">kljettool</packagereq>
+ <packagereq type="mandatory">klprfax</packagereq>
+ <packagereq type="mandatory">klpq</packagereq>
+ <packagereq type="mandatory">kmix</packagereq>
+ <packagereq type="default">kpf</packagereq>
+ <packagereq type="mandatory">kregexpeditor</packagereq>
+ <packagereq type="mandatory">kscd</packagereq>
+ <packagereq type="mandatory">ksnapshot</packagereq>
+ <packagereq type="mandatory">ktimer</packagereq>
+ <packagereq type="default">lisa</packagereq>
+ <packagereq type="mandatory">switchdesk-kde</packagereq>
+ <packagereq type="mandatory">xinetd</packagereq>
+ <packagereq type="default">kppp</packagereq>
+ <packagereq type="default">kpppload</packagereq>
+ <packagereq type="default">kghostview</packagereq>
+ <packagereq type="default">kdvi</packagereq>
+ <packagereq type="default">kiconedit</packagereq>
+ <packagereq type="default">kmail</packagereq>
+ <packagereq type="default">kit</packagereq>
+ <packagereq type="default">koncd</packagereq>
+ <packagereq type="default">kpaint</packagereq>
+ <packagereq type="default">kuickshow</packagereq>
+ <packagereq type="default">kview</packagereq>
+ <packagereq type="default">kviewshell</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>graphical-internet</id>
+ <name>Graphical Internet</name>
+ <name xml:lang="cs">Grafický Internet</name>
+ <name xml:lang="da">Grafisk internet</name>
+ <name xml:lang="de">Grafisches Internet</name>
+ <name xml:lang="es">Internet gráfica</name>
+ <name xml:lang="fr">Internet graphique</name>
+ <name xml:lang="is">Myndræn Internettól</name>
+ <name xml:lang="it">Internet grafico</name>
+ <name xml:lang="ja">グラフィカルインターãƒãƒƒãƒˆ</name>
+ <name xml:lang="ko">그래픽 ì¸í„°ë„·</name>
+ <name xml:lang="no">Grafisk Internet</name>
+ <name xml:lang="pt">Internet em Modo Gráfico</name>
+ <name xml:lang="ru">ГрафичеÑкие ÑредÑтва Интернет</name>
+ <name xml:lang="sv">Grafiskt Internet</name>
+ <name xml:lang="zh_CN">图形化互è”网</name>
+ <name xml:lang="zh_TW">圖形化網際網路</name>
+ <description>This group includes graphical email, Web, and chat clients.</description>
+ <description xml:lang="cs">Tato skupina obsahuje grafické klienty pro email, WWW a chat.</description>
+ <description xml:lang="da">Denne gruppe indeholder grafiske klienter for e-post, netlæsning og chat.</description>
+ <description xml:lang="de">Diese Gruppe umfasst grafische E-Mail, Web und Chat-Clients.</description>
+ <description xml:lang="es">El grupo incluye clientes gráficos de correo electrónico, Web y chat. </description>
+ <description xml:lang="fr">Ce groupe comprend le courrier électronique graphique, Web et les clients de conversation.</description>
+ <description xml:lang="is">Þessi hópur inniheldur myndræn póst, vef og spjallforrit.</description>
+ <description xml:lang="it">Questo gruppo include e-mail, Web e chat client grafici.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«emailã€Webã€åŠã³ãƒãƒ£ãƒƒãƒˆã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒ å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì—는 그래픽 ì´ë©”ì¼, 웹, 채팅 í´ë¼ì´ì–¸íŠ¸ê°€ í¬í•¨ë˜ì–´ 있습니다.</description>
+ <description xml:lang="no">Denne gruppen inkluderer grafiske epost, web og chat-klienter.</description>
+ <description xml:lang="pt">Este grupo contém clientes gráficso de email, Web e chat.</description>
+ <description xml:lang="ru">Эта группа включает графичеÑкие клиенты Ñлектронной почты, Веб и чата.</description>
+ <description xml:lang="sv">Denna grupp inkluderar grafiska klienter för e-post, webbsurfande och chatt.</description>
+ <description xml:lang="zh_CN">这组软件包包å«å›¾å½¢åŒ–电å­é‚®ä»¶ã€ä¸‡ç»´ç½‘å’ŒèŠå¤©å®¢æˆ·ã€‚</description>
+ <description xml:lang="zh_TW">這個群組包括圖形的電å­éƒµä»¶ã€ç¶²é ä»¥åŠèŠå¤©ç”¨æˆ¶ç«¯ã€‚</description>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <packagelist>
+ <packagereq type="optional">balsa</packagereq>
+ <packagereq type="default">evolution</packagereq>
+ <packagereq type="default">gaim</packagereq>
+ <packagereq type="optional">galeon</packagereq>
+ <packagereq type="optional">gnomemeeting</packagereq>
+ <packagereq type="default">mozilla</packagereq>
+ <packagereq type="default">mozilla-psm</packagereq>
+ <packagereq type="optional">mozilla-chat</packagereq>
+ <packagereq type="default">mozilla-mail</packagereq>
+ <packagereq type="optional">pan</packagereq>
+ <packagereq type="default">xchat</packagereq>
+ <packagereq type="mandatory">indexhtml</packagereq>
+ <packagereq type="optional">licq-kde</packagereq>
+ <packagereq type="optional">ksirc</packagereq>
+ <packagereq type="optional">kmail</packagereq>
+ <packagereq type="optional">korn</packagereq>
+ <packagereq type="optional">knode</packagereq>
+ <packagereq type="optional">kit</packagereq>
+ <packagereq type="optional">quanta</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>text-internet</id>
+ <name>Text-based Internet</name>
+ <name xml:lang="cs">Textový Internet</name>
+ <name xml:lang="da">Tekstbaseret internet</name>
+ <name xml:lang="de">Textbasiertes Internet</name>
+ <name xml:lang="es">Internet basada en texto</name>
+ <name xml:lang="fr">Internet basé sur texte</name>
+ <name xml:lang="is">Internet með textaskilum</name>
+ <name xml:lang="it">Internet text-based</name>
+ <name xml:lang="ja">テキストベースã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆ</name>
+ <name xml:lang="ko">í…스트-기반 ì¸í„°ë„·</name>
+ <name xml:lang="no">Tekstbaserte Internett-programmer</name>
+ <name xml:lang="pt">Internet em modo texto</name>
+ <name xml:lang="ru">ТеÑтовые ÑредÑтва Интернет</name>
+ <name xml:lang="sv">Textbaserat Internet</name>
+ <name xml:lang="zh_CN">基于文本的互è”网</name>
+ <name xml:lang="zh_TW">文字為主的網際網路</name>
+ <description>This group includes text-based email, Web, and chat clients. These applications do not require the X Window System.</description>
+ <description xml:lang="cs">Tato skupina obsahuje textové klienty pro email, WWW a chat. Tyto aplikace nepotřebují X Window System.</description>
+ <description xml:lang="da">Denne gruppe indeholder tekst-baserede klienter for e-post, netlæsning og chat. Disse programmer kræver ikke vinduessystemet X.</description>
+ <description xml:lang="de">Diese Gruppe enthält text-basierte E-Mail, Web und Chat-Clients. Diese Anwendungen benötigen das X Window System nicht.</description>
+ <description xml:lang="es">Este grupo incluye correo electrónico en forma de texto, Web y clientes de chats. Estas aplicaciones no necesitan el sistema X Window.</description>
+ <description xml:lang="fr">Ce groupe contient une messagerie électronique en modalité texte et des clients de conversation. Ces applications ne nécessitent pas le système X Window.</description>
+ <description xml:lang="is">Þessi hópur inniheldur póst, vef og spjallforrit með textaskilum. Þessi tól þurfa ekki X gluggakerfið.</description>
+ <description xml:lang="it">Questo gruppo include e-mail, Web e chat client text-based. Tali applicazioni non richiedono il sistema X Window.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€ãƒ†ã‚­ã‚¹ãƒˆãƒ™ãƒ¼ã‚¹ã®email, Web,åŠã³ãƒãƒ£ãƒƒãƒˆã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒå«ã¾ã‚Œã¦ ã„ã¾ã™ã€‚ã“れらã®ã‚¢ãƒ—リケーションã¯X Window Systemã‚’å¿…è¦ã¨ã—ã¾ã›ã‚“。</description>
+ <description xml:lang="ko">ì´ ê·¸ë¦…ì—는 í…스트-기반 ì´ë©”ì¼, 웹, 채팅 í´ë¼ì´ì–¸íŠ¸ê°€ í¬í•¨ë˜ì–´ 있습니다. X 윈ë„ìš° ì‹œìŠ¤í…œì´ ì—†ì–´ë„ ìž‘ë™í•©ë‹ˆë‹¤.</description>
+ <description xml:lang="no">Denne gruppen inneholder tekstbaserte epost, web og chat-klienter. Disse programmene trenger ikke X.</description>
+ <description xml:lang="pt">Este grupo inclui o email em modo texto, a Web e os clientes de conversação. Estas aplicações não necessitam do X Window System.</description>
+ <description xml:lang="ru">Эта группа Ñодержит текÑтовые Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ñлектронной почтой, интернетом, а также чат-клиенты. ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ñтой группе не требуют X Window System</description>
+ <description xml:lang="sv">Denna grupp inkluderar text-baserade klienter för e-post, webbsurfande och chatt. Dessa program kräver inte fönstersystemet X.</description>
+ <description xml:lang="zh_CN">这组软件包包å«åŸºäºŽæ–‡æœ¬çš„电å­é‚®ä»¶ã€ä¸‡ç»´ç½‘ã€å’ŒèŠå¤©å®¢æˆ·çš„软件包。 这些应用程åºä¸è¦æ±‚ X 窗å£ç³»ç»Ÿã€‚</description>
+ <description xml:lang="zh_TW">這個群組包括文字為主的電å­éƒµä»¶ã€ç¶²é èˆ‡èŠå¤©ç”¨æˆ¶ç«¯ã€‚ é€™äº›æ‡‰ç”¨ç¨‹å¼ ä¸¦ä¸éœ€è¦ X 視窗系統。</description>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">fetchmail</packagereq>
+ <packagereq type="optional">epic</packagereq>
+ <packagereq type="optional">lynx</packagereq>
+ <packagereq type="default">mutt</packagereq>
+ <packagereq type="optional">ncftp</packagereq>
+ <packagereq type="optional">pine</packagereq>
+ <packagereq type="default">slrn</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>sound-and-video</id>
+ <name>Sound and Video</name>
+ <name xml:lang="cs">Zvuk a video</name>
+ <name xml:lang="da">Lyd og video</name>
+ <name xml:lang="de">Sound und Video</name>
+ <name xml:lang="es">Sonido y vídeo</name>
+ <name xml:lang="fr">Son et vidéo</name>
+ <name xml:lang="is">Hljóð og mynd</name>
+ <name xml:lang="it">Audio e video</name>
+ <name xml:lang="ja">サウンドã¨ãƒ“デオ</name>
+ <name xml:lang="ko">사운드와 비디오</name>
+ <name xml:lang="no">Lyd og bilde</name>
+ <name xml:lang="pt">Som e Video</name>
+ <name xml:lang="ru">Звук и видео</name>
+ <name xml:lang="sv">Ljud och video</name>
+ <name xml:lang="zh_CN">视频和音频</name>
+ <name xml:lang="zh_TW">音效與視訊</name>
+ <description>From CD recording to playing audio CDs and multimedia files, this package group allows you to work with sound and video on the system.</description>
+ <description xml:lang="cs">Tato skupina balíÄků Vám umožňuje pracovat se zvukem a videem od vypalování CD po pÅ™ehrávání zvukových CD a multimediálních souborů.</description>
+ <description xml:lang="da">Denne gruppe lader dig arbejde med lyd og video på systemet, med altfra cd-optagning til afspilning af lyd-cd&apos;er og multimedie-filer.</description>
+ <description xml:lang="de">Von der Aufnahme von CDs bis zum Abspielen von Audio-CDs ermöglicht Ihnen diese Paketgruppe eine optimale Nutzung der Sound- und Videofunktionen des Systems.</description>
+ <description xml:lang="es">Desde la grabación de CDs hasta la reproducción de CDs de audio y archivos multimedia, este paquete le permite trabajar con audio y video en su sistema.</description>
+ <description xml:lang="ja">CDã®éŒ²éŸ³ã‹ã‚‰ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªCDã¨ãƒžãƒ«ãƒãƒ¡ãƒ‡ã‚£ã‚¢ãƒ•ã‚¡ã‚¤ãƒ«ã®å†ç”Ÿã¾ã§ã€ã“㮠パッケージグループã§ã‚·ã‚¹ãƒ†ãƒ ä¸Šã®ã‚µã‚¦ãƒ³ãƒ‰ã¨ãƒ“デオを機能を使用ã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì—¬ CD ë…¹ìŒì—ì„œ 오디오 CD ë° ë©€í‹°ë¯¸ë””ì–´ íŒŒì¼ ìž¬ìƒì— ì´ë¥´ê¸°ê¹Œì§€ 다양한 사운드와 비디오 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ì‹¤ 수 있습니다.</description>
+ <description xml:lang="no">Denne pakkegruppen inneholder programmer for å spille av CDer og multimediefiler samt arbeide med lyd og bilde på systemet.</description>
+ <description xml:lang="pt">Desde a gravação de CDs até à reprodução de CDs áudio e multimédia, este\ngrupo de pacotes permite-lhe lidar com o som e o vídeo no sistema.</description>
+ <description xml:lang="ru">От запиÑи CD до Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð²Ñ‹Ñ… диÑков и MP3, Ñта группа пакетов позволÑет работать Ñо звуком и видео в ÑиÑтеме.</description>
+ <description xml:lang="sv">Denna paketgrupp låter dig arbeta med ljud och video, vare sig det gäller cdinspelning eller att lyssna på musikskivor och multimediafiler.</description>
+ <description xml:lang="zh_CN">从光盘录制到播放音频光盘和多媒体文件,该软件包组å…许您使用系统上的音频和视频资æºã€‚</description>
+ <description xml:lang="zh_TW">從燒錄 CD 到播放音效 CD 與多媒體檔案,這個套件群組讓您å¯ä»¥åœ¨ç³»çµ±ä¸Šä½¿ç”¨éŸ³æ•ˆèˆ‡è¦–訊的功能。</description>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <grouplist>
+ <groupreq>base</groupreq>
+ <groupreq>base-x</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">aumix</packagereq>
+ <packagereq type="default">cdda2wav</packagereq>
+ <packagereq type="default">cdlabelgen</packagereq>
+ <packagereq type="default">cdp</packagereq>
+ <packagereq type="default">cdparanoia</packagereq>
+ <packagereq type="default">cdrecord</packagereq>
+ <packagereq type="default">dvdrecord</packagereq>
+ <packagereq type="optional">dvgrab</packagereq>
+ <packagereq type="default">grip</packagereq>
+ <packagereq type="default">gtoaster</packagereq>
+ <packagereq type="optional">kaboodle</packagereq>
+ <packagereq type="optional">kdeaddons-noatun</packagereq>
+ <packagereq type="optional">kmid</packagereq>
+ <packagereq type="optional">kmidi</packagereq>
+ <packagereq type="optional">koncd</packagereq>
+ <packagereq type="optional">mikmod</packagereq>
+ <packagereq type="optional">sndconfig</packagereq>
+ <packagereq type="mandatory">sox</packagereq>
+ <packagereq type="mandatory">vorbis-tools</packagereq>
+ <packagereq type="default">xawtv</packagereq>
+ <packagereq type="optional">xcdroast</packagereq>
+ <packagereq type="default">xmms</packagereq>
+ <packagereq type="optional">xmms-skins</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>graphics</id>
+ <name>Graphics</name>
+ <name xml:lang="cs">Grafika</name>
+ <name xml:lang="da">Grafik</name>
+ <name xml:lang="de">Grafik</name>
+ <name xml:lang="es">Gráficos</name>
+ <name xml:lang="fr">Graphismes</name>
+ <name xml:lang="is">Myndvinnsla</name>
+ <name xml:lang="it">Grafica</name>
+ <name xml:lang="ja">グラフィクス</name>
+ <name xml:lang="ko">그래픽</name>
+ <name xml:lang="no">Grafikk</name>
+ <name xml:lang="pt">Gráficos</name>
+ <name xml:lang="ru">Графика</name>
+ <name xml:lang="sv">Grafik</name>
+ <name xml:lang="zh_CN">图形</name>
+ <name xml:lang="zh_TW">圖形</name>
+ <description>This group includes packages to help you manipulate and scan images.</description>
+ <description xml:lang="cs">Tato skupina obsahuje balíÄky, které Vám pomohou pracovat s obrázky a skenovat je.</description>
+ <description xml:lang="da">Denne gruppe indeholder pakker som hjælper dig med at manipulere og indlæse billeder.</description>
+ <description xml:lang="de">Diese Gruppe umfasst Pakete, mit denen Sie Bilder bearbeiten und scannen können.</description>
+ <description xml:lang="es">Este grupo incluye paquetes que le permitirán manipular y escanera imágenes.</description>
+ <description xml:lang="fr">Ce groupe comprend des paquetages qui vous aident à manipuler et scanner des images. </description>
+ <description xml:lang="is">Þessi hópur inniheldur pakka sem gera þér kleyft að skanna og breyta myndum.</description>
+ <description xml:lang="it">Questo gruppo include i pacchetti per la manipolazione e la scansione delle immagini.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã®å‡¦ç†ã¨ã‚¹ã‚­ãƒ£ãƒ³ã‚’手ä¼ã†ãƒ‘ッケージãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì— í¬í•¨ëœ 패키지는 ì´ë¯¸ì§€ë¥¼ 스캔, ì¡°ìž‘ ìž‘ì—…ì„ ë„와드립니다.</description>
+ <description xml:lang="no">Denne gruppen inneholder pakker for manipulering og innscanning av bilder.</description>
+ <description xml:lang="pt">Este grupo inclui pacotes que o ajudam a manipular e digitalizar imagens.</description>
+ <description xml:lang="ru">Эта группа Ñодержит Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ðµ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ¾Ð¹ и Ñканерами.</description>
+ <description xml:lang="sv">Denna grupp inkluderar paket som hjälper dig manipulera och läsa in bilder.</description>
+ <description xml:lang="zh_CN">这组软件包包括用æ¥å¸®åŠ©æ‚¨æ“作和扫æ图åƒçš„软件包。</description>
+ <description xml:lang="zh_TW">這個群組包括了幫助您處ç†èˆ‡æŽƒæå½±åƒçš„套件。</description>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <grouplist>
+ <groupreq>base</groupreq>
+ <groupreq>base-x</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">ImageMagick</packagereq>
+ <packagereq type="default">sane-frontends</packagereq>
+ <packagereq type="default">xsane</packagereq>
+ <packagereq type="default">xsane-gimp</packagereq>
+ <packagereq type="default">dia</packagereq>
+ <packagereq type="default">gimp</packagereq>
+ <packagereq type="default">gimp-data-extras</packagereq>
+ <packagereq type="default">gtkam</packagereq>
+ <packagereq type="optional">gtkam-gimp</packagereq>
+ <packagereq type="optional">kamera</packagereq>
+ <packagereq type="optional">kcoloredit</packagereq>
+ <packagereq type="optional">kiconedit</packagereq>
+ <packagereq type="optional">kooka</packagereq>
+ <packagereq type="optional">kpaint</packagereq>
+ <packagereq type="optional">kuickshow</packagereq>
+ <packagereq type="default">netpbm-progs</packagereq>
+ <packagereq type="optional">xfig</packagereq>
+ </packagelist>
+ </group>
+
+
+ <group>
+ <id>office</id>
+ <name>Office/Productivity</name>
+ <name xml:lang="cs">Kancelář/produktivita</name>
+ <name xml:lang="da">Kontorprogrammel</name>
+ <name xml:lang="de">Office/Produktivität</name>
+ <name xml:lang="es">Oficina/Productividad</name>
+ <name xml:lang="fr">Bureau/Productivité</name>
+ <name xml:lang="is">Skrifstofuforrit</name>
+ <name xml:lang="it">Office/Produttività</name>
+ <name xml:lang="ja">Office/生産性</name>
+ <name xml:lang="ko">사무/ìƒì‚°ì„±</name>
+ <name xml:lang="no">Kontor/Produktivitet</name>
+ <name xml:lang="pt">Escritório/Produtividade</name>
+ <name xml:lang="ru">ОфиÑные приложениÑ</name>
+ <name xml:lang="sv">Kontorsprogramvara</name>
+ <name xml:lang="zh_CN">办公/生产率</name>
+ <name xml:lang="zh_TW">辦公軟體/作業軟體</name>
+ <description>The applications include office suites, PDF viewers, and more.</description>
+ <description xml:lang="cs">Aplikace zahrnují kancelářské balíky, prohlížeÄe PDF atd.</description>
+ <description xml:lang="da">Programmerne inkluderer suiter med kontorprogrammel, PDF-visere, med mere.</description>
+ <description xml:lang="de">Die Anwendungen enthalten Office-Programme, PDF-Anzeigeprogramme u.v.m.</description>
+ <description xml:lang="es">Las aplicaciones incluyen los paquetes de ofimática, los visualizadores de PDF y mucho más.</description>
+ <description xml:lang="fr">Les applications comprennent des suites de bureau, des afficheurs PDF et bien plus encore.</description>
+ <description xml:lang="is">Forritin innihalda meðal annars skrifstofutól, PDF sjár og fleira.</description>
+ <description xml:lang="it">Le applicazioni includono pacchetti per l&apos;ufficio, programmi per visualizzare i PDF e altro.</description>
+ <description xml:lang="ja">アプリケーションã«ã¯ã€ã‚ªãƒ•ã‚£ã‚¹ã‚»ãƒƒãƒˆã€PDFビューアåŠã³ãã®ä»–ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ì‘ìš© í”„ë¡œê·¸ëž¨ì€ ì‚¬ë¬´ìš© 프로그램 모ìŒ, PDF 보기 프로그램 ë“±ì„ í¬í•¨í•©ë‹ˆë‹¤.</description>
+ <description xml:lang="no">Applikasjonene innerholder kontorstøtteprogrammer, PDV-lesere og mer.</description>
+ <description xml:lang="pt">As aplicações incluem pacotes de escritório, visualizadores de PDF e outros.</description>
+ <description xml:lang="ru">Эта группа включает в ÑÐµÐ±Ñ Ð¾Ñ„Ð¸Ñные приложениÑ: редакторы текÑта, программы Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра PDF файлов, и проч.</description>
+ <description xml:lang="sv">Programmen inkluderar sviter med kontorsprogramvara, PDF-visare, med mera.</description>
+ <description xml:lang="zh_CN">包括的应用程åºæœ‰åŠžå…¬å¥—件ã€PDF 查看器等等。</description>
+ <description xml:lang="zh_TW">應用程å¼åŒ…括了辦公室套è£è»Ÿé«”ã€PDF 檢視器等等。</description>
+ <uservisible>true</uservisible>
+ <default>true</default>
+ <grouplist>
+ <groupreq>base-x</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">openoffice</packagereq>
+ <packagereq type="default">xpdf</packagereq>
+ <packagereq type="optional">MagicPoint</packagereq>
+ <packagereq type="optional">abiword</packagereq>
+ <packagereq type="optional">ggv</packagereq>
+ <packagereq type="optional">gnumeric</packagereq>
+ <packagereq type="optional">gnucash</packagereq>
+ <packagereq type="default">mrproject</packagereq>
+ <packagereq type="optional">kdepim-pilot</packagereq>
+ <packagereq type="optional">koffice</packagereq>
+ <packagereq type="optional">kdvi</packagereq>
+ <packagereq type="optional">kghostview</packagereq>
+ <packagereq type="optional">kfax</packagereq>
+ <packagereq type="optional">tetex-xdvi</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>mail-server</id>
+ <name>Mail Server</name>
+ <name xml:lang="cs">Poštovní server</name>
+ <name xml:lang="da">Postserver</name>
+ <name xml:lang="de">Mail-Server</name>
+ <name xml:lang="es">Servidor de correo </name>
+ <name xml:lang="fr">Serveur de courrier</name>
+ <name xml:lang="is">Póstþjónn</name>
+ <name xml:lang="it">Server Mail</name>
+ <name xml:lang="ja">メールサーãƒ</name>
+ <name xml:lang="ko">ë©”ì¼ ì„œë²„</name>
+ <name xml:lang="no">Eposttjener</name>
+ <name xml:lang="pt">Servidor de Mail</name>
+ <name xml:lang="ru">Сервер Ñлектронной почты</name>
+ <name xml:lang="sv">E-postserver</name>
+ <name xml:lang="zh_CN">邮件æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">郵件伺æœå™¨</name>
+ <description>These packages allow you to configure an IMAP or Postfix mail server.</description>
+ <description xml:lang="cs">Tyto balíÄky Vám umožní nakonfigurovat server IMAP nebo poÅ¡tovní server Postfix.</description>
+ <description xml:lang="da">Disse pakker lader dig konfigurere en IMAP- eller Postfix-postserver.</description>
+ <description xml:lang="de">Mit diesen Paketen können Sie einen IMAP oder Postfix Mail-Server konfigurieren.</description>
+ <description xml:lang="es">Estos paquetes le permiten configurar un servidor de correo IMAP o Postfix.</description>
+ <description xml:lang="fr">Ces paquetages vous permettent de configurer un serveur de courrier IMAP ou Postfix.</description>
+ <description xml:lang="is">Þessir pakkar gera þér kleyft að setja upp IMAP eða Postfix pósthús.</description>
+ <description xml:lang="it">Questi pacchetti consentono di configurare un server di posta IMAP o Postfix.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ‘ッケージã§ã€IMAP ã‹ Postfixメールサーãƒã‚’設定ã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ëŠ” IMAPê³¼ Postfix ë©”ì¼ ì„œë²„ ì„¤ì •ì„ ë„와ì¤ë‹ˆë‹¤.</description>
+ <description xml:lang="no">Disse pakkene lar deg konfigurere en IMAP eller Postfix eposttjener.</description>
+ <description xml:lang="pt">Este pacotes permitem-lhe configurar os servidores de mail IMAP ou Postfix.</description>
+ <description xml:lang="ru">Эти пакеты позволÑÑŽÑ‚ наÑтроить почтовый Ñервер IMAP или Postfix.</description>
+ <description xml:lang="sv">Dessa paket låter dig konfigurera en IMAP- eller Postfix-epostserver.</description>
+ <description xml:lang="zh_CN">这些软件包å…许您é…ç½® IMAP 或 Postfix 邮件æœåŠ¡å™¨ã€‚</description>
+ <description xml:lang="zh_TW">這些套件讓您å¯ä»¥è¨­å®šä¸€å€‹ IMAP 或 Postfix 郵件伺æœå™¨ã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">sendmail</packagereq>
+ <packagereq type="default">imap</packagereq>
+ <packagereq type="optional">sendmail-cf</packagereq>
+ <packagereq type="optional">mailman</packagereq>
+ <packagereq type="optional">spamassassin</packagereq>
+ <packagereq type="optional">squirrelmail</packagereq>
+ <packagereq type="optional">postfix</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>network-server</id>
+ <name>Network Servers</name>
+ <name xml:lang="cs">Síťové servery</name>
+ <name xml:lang="da">Netværksservere</name>
+ <name xml:lang="de">Netzwerk-Server</name>
+ <name xml:lang="es">Servidores de red</name>
+ <name xml:lang="fr">Serveur de réseau</name>
+ <name xml:lang="is">Netþjónustur</name>
+ <name xml:lang="it">Server di rete</name>
+ <name xml:lang="ja">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚µãƒ¼ãƒ</name>
+ <name xml:lang="ko">ë„¤íŠ¸ì›Œí¬ ì„œë²„</name>
+ <name xml:lang="no">Nettverkstjener</name>
+ <name xml:lang="pt">Servidores de Rede</name>
+ <name xml:lang="ru">Сетевые Ñерверы</name>
+ <name xml:lang="sv">Nätverksservrar</name>
+ <name xml:lang="zh_CN">网络æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">網路伺æœå™¨</name>
+ <description>These packages include network-based servers such as CIPE, DHCP, and telnet.</description>
+ <description xml:lang="cs">Tyto balíÄky zahrnují síťové servery jako CIPE, DHCP a telnet.</description>
+ <description xml:lang="da">Disse pakker inkluderer netværksbaserede servere som fx CIPE, DHCP og telnet.</description>
+ <description xml:lang="de">Diese Pakete enthalten netzwerkbasierte Server wie CIPE, DHCP und telnet.</description>
+ <description xml:lang="es">Estos paquetes incluyen servidores basados en la red tales como CIPE, DHCP, y telnet.</description>
+ <description xml:lang="fr">Ces paquetages comprennent des serveurs basés sur réseau comme CIPE, DHCP et telnet.</description>
+ <description xml:lang="is">Þessir pakkar innihalda netþjónustur eins og CIPE, DHCP og telnet.</description>
+ <description xml:lang="it">Questi pacchetti includono server network-based quali CIPE, DHCP e telnet.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ‘ッケージã«ã¯ã€CIPE, DHCP, ã‚„ telnetãªã©ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ™ãƒ¼ã‚¹ã®ã‚µãƒ¼ãƒãŒ å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ì—는 CIPE, DHCP, telnetê³¼ ê°™ì€ ë„¤íŠ¸ì›Œí¬-기반 서버가 í¬í•¨ë˜ì–´ 있습니다.</description>
+ <description xml:lang="no">Disse pakkene inkluderer nettverks-baserte tjenester som CIPE, DHCP og telnet.</description>
+ <description xml:lang="pt">Estes pacotes incluem servdores de rede como o CIPE, DHCP e telnet.</description>
+ <description xml:lang="ru">Эти пакеты включают в ÑÐµÐ±Ñ Ñ‚Ð°ÐºÐ¸Ðµ Ñетевые ÑервиÑÑ‹, как CIPE, DHCP и telet</description>
+ <description xml:lang="sv">Dessa paket inkluderar nätverksbaserade servrar som exempelvis CIPE, DHCP och telnet.</description>
+ <description xml:lang="zh_CN">这些软件包包括基于网络的æœåŠ¡å™¨ï¼Œä¾‹å¦‚ CIPEã€DHCPã€å’Œ telnet。</description>
+ <description xml:lang="zh_TW">這些套件包括網路為主的伺æœå™¨ï¼Œä¾‹å¦‚ CIPE, DHCP 與 telnet。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional">amanda-server</packagereq>
+ <packagereq type="optional">am-utils</packagereq>
+ <packagereq type="default">cipe</packagereq>
+ <packagereq type="optional">dhcp</packagereq>
+ <packagereq type="default">finger-server</packagereq>
+ <packagereq type="optional">krb5-server</packagereq>
+ <packagereq type="default">pxe</packagereq>
+ <packagereq type="optional">radvd</packagereq>
+ <packagereq type="default">rsh-server</packagereq>
+ <packagereq type="default">talk-server</packagereq>
+ <packagereq type="default">telnet-server</packagereq>
+ <packagereq type="default">ypserv</packagereq>
+ <packagereq type="optional">zebra</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>news-server</id>
+ <name>News Server</name>
+ <name xml:lang="cs">News server</name>
+ <name xml:lang="da">Nyhedsgruppesserver</name>
+ <name xml:lang="de">News-Server</name>
+ <name xml:lang="es">Servidor de noticias</name>
+ <name xml:lang="fr">Serveur de news</name>
+ <name xml:lang="is">Fréttaþjónn</name>
+ <name xml:lang="it">Server news</name>
+ <name xml:lang="ja">ニュースサーãƒ</name>
+ <name xml:lang="ko">뉴스 서버</name>
+ <name xml:lang="no">News-tjenere</name>
+ <name xml:lang="pt">Servidor de News</name>
+ <name xml:lang="ru">Сервер новоÑтей</name>
+ <name xml:lang="sv">Diskussionsgruppsserver</name>
+ <name xml:lang="zh_CN">æ–°é—»æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">æ–°èžä¼ºæœå™¨</name>
+ <description>This group allows you to configure the system as a news server.</description>
+ <description xml:lang="cs">Tato skupina Vám umožní nakonfigurovat poÄítaÄ jako news server.</description>
+ <description xml:lang="da">Denne gruppe lader dig konfigurere systemet som en nyhedsgruppesserver.</description>
+ <description xml:lang="de">Mit dieser Gruppe können Sie das System als News-Server konfigurieren.</description>
+ <description xml:lang="es">Este grupo le permite configurar el sistema como un servidor nuevo.</description>
+ <description xml:lang="fr">Ce groupe vous permet de configurer le système comme nouveau serveur.</description>
+ <description xml:lang="is">Þessi tól gera þér kleyft að stilla vélina sem news þjón.</description>
+ <description xml:lang="it">Questo gruppo consente di configurare il sistema come server news.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã§ã€ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚µãƒ¼ãƒã¨ã—ã¦ã‚·ã‚¹ãƒ†ãƒ ã‚’設定ã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì—¬ ì‹œìŠ¤í…œì„ ë‰´ìŠ¤ 서버로 설정하실 수 있습니다.</description>
+ <description xml:lang="no">Disse verktøyene lar deg kjøre en news-tjener på systemet.</description>
+ <description xml:lang="pt">Este grupo permite-lhe configurar o sistema como um servidor de notícias.</description>
+ <description xml:lang="ru">Эта группа позволÑет иÑпользовать ÑиÑтему как Ñервер новоÑтей.</description>
+ <description xml:lang="sv">Denna grupp låter dig konfigurera systemet som en diskussionsgruppsserver.</description>
+ <description xml:lang="zh_CN">这组软件包å…许您把系统é…ç½®æˆæ–°é—»æœåŠ¡å™¨ã€‚</description>
+ <description xml:lang="zh_TW">這個群組讓您å¯ä»¥è¨­å®šç³»çµ±ç‚ºä¸€éƒ¨æ–°èžä¼ºæœå™¨ã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">inn</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>smb-server</id>
+ <name>Windows File Server</name>
+ <name xml:lang="cs">Souborový server pro Windows</name>
+ <name xml:lang="da">Windows-filserver</name>
+ <name xml:lang="de">Windows Datei-Server</name>
+ <name xml:lang="es">Servidor de ficheros Windows</name>
+ <name xml:lang="fr">Serveur de fichier Windows</name>
+ <name xml:lang="is">Skráaþjónn fyrir Windows</name>
+ <name xml:lang="it">File server Windows</name>
+ <name xml:lang="ja">Windowsファイルサーãƒ</name>
+ <name xml:lang="ko">Windows íŒŒì¼ ì„œë²„</name>
+ <name xml:lang="no">Filtjener for Windows</name>
+ <name xml:lang="pt">Servidor de Ficheiros Windows</name>
+ <name xml:lang="ru">Файловый Ñервер Ð´Ð»Ñ Windows</name>
+ <name xml:lang="sv">Windows-filserver</name>
+ <name xml:lang="zh_CN">Windows 文件æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">Windows 檔案伺æœå™¨</name>
+ <description>This package group allows you to share files between Linux and MS Windows(tm) systems.</description>
+ <description xml:lang="cs">Tato skupina balíÄků Vám umožní sdílet soubory mezi systémy Linux a MS Windows (tm).</description>
+ <description xml:lang="da">Denne pakkegruppe lader dig dele filer mellem Linux og system med MS Windows(tm).</description>
+ <description xml:lang="de">Mit dieser Paketgruppe können Sie Dateien in Linux und MS Windows (tm) gemeinsam nutzen.</description>
+ <description xml:lang="es">Este grupo de paquetes le permite compartir ficheros entre los sistemas Linux y MS Windows (tm).</description>
+ <description xml:lang="fr">Ce groupe de paquetages vous permet de partager des fichiers entre les systèmes Linux et Windows (m).</description>
+ <description xml:lang="is">Þessi pakkahópur gerir þér kleyft að skiptast á skrám milli Linux og MS Windows véla.</description>
+ <description xml:lang="it">Questo gruppo di pacchetti consente di condividere i file tra sistemi Linux e MS Windows(tm).</description>
+ <description xml:lang="ja">ã“ã®ãƒ‘ッケージグループã§ã€Linux 㨠MS Windows(tm) システムã®é–“ã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’共有 ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì—¬ Linux와 MS Windows (tm) 시스템 사ì´ì—ì„œ 파ì¼ì„ 공유할 수 있습니다.</description>
+ <description xml:lang="no">Denne pakkegruppen lar deg dele filer mellom Linux og MS Windows(tm)-systemer.</description>
+ <description xml:lang="pt">Este grupo de pacotes permite-lhe partilhar os ficheiros entre os sistemas Linux e MS Windows (tm).</description>
+ <description xml:lang="ru">Эта группа пакетов делает возможным доÑтуп к файлам между ÑиÑтемами Linux и MS Windows(tm).</description>
+ <description xml:lang="sv">Denna paketgrupp låter dig dela ut filer mellan Linux och system med MS Windows(tm).</description>
+ <description xml:lang="zh_CN">该软件包组å…许您在 Linux å’Œ MS Windows(tm) 系统间共享文件。</description>
+ <description xml:lang="zh_TW">這個套件群組使您å¯ä»¥åœ¨ Linux 與 MS Windows (tm) 系統間共享檔案。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">samba-client</packagereq>
+ <packagereq type="mandatory">samba</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>server-cfg</id>
+ <name>Server Configuration Tools</name>
+ <name xml:lang="cs">Nástroje pro konfiguraci serveru</name>
+ <name xml:lang="da">Serverkonfigurationsværktøjer</name>
+ <name xml:lang="de">Server Konfigurationstools</name>
+ <name xml:lang="es">Herramientas de configuración del servidor</name>
+ <name xml:lang="fr">Outils de configuration de serveur</name>
+ <name xml:lang="is">Stillingatól fyrir þjóna</name>
+ <name xml:lang="it">Tool di configurazione del server</name>
+ <name xml:lang="ja">サーãƒè¨­å®šãƒ„ール</name>
+ <name xml:lang="ko">서버 설정 ë„구</name>
+ <name xml:lang="no">Konfigurasjonsverktøy for tjenere</name>
+ <name xml:lang="pt">Ferramentas de Configuração de Servidores</name>
+ <name xml:lang="ru">СредÑтва наÑтройки Ñервера</name>
+ <name xml:lang="sv">Serverkonfigurationsverktyg</name>
+ <name xml:lang="zh_CN">æœåŠ¡å™¨é…置工具</name>
+ <name xml:lang="zh_TW">伺æœå™¨è¨­å®šå·¥å…·</name>
+ <description>This group contains all of Red Hat's custom server configuration tools.</description>
+ <description xml:lang="cs">Tato skupina obsahuje vÅ¡echny nástroje pro konfiguraci serveru od spoleÄnosti Red Hat.</description>
+ <description xml:lang="da">Denne gruppe indholder alle Red Hats specialtilpassede serverkonfigureringsværktøjer.</description>
+ <description xml:lang="de">Diese Gruppe enthält alle Tools für die benutzerdefinierte Konfiguration des Servers von Red Hat.</description>
+ <description xml:lang="es">Este grupo contiene todas las herramientas de configuración del servidor de personalización de Red Hat.</description>
+ <description xml:lang="fr">Ce groupe contient tous les outils de configuration du serveur personnalisé Red Hat.</description>
+ <description xml:lang="is">Þessi hópur inniheldur öll Red Hat stillingatólin.</description>
+ <description xml:lang="it">Questo gruppo contiene tutti gli strumenti per personalizzare la configurazione del server Red Hat.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€å…¨ã¦ã®Red Hatカスタムサーãƒè¨­å®šãƒ„ールãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì—는 Red Hatì˜ ì‚¬ìš©ìž ì„¤ì • 서버 설정 ë„구가 ëª¨ë‘ í¬í•¨ë˜ì–´ 있습니다.</description>
+ <description xml:lang="no">Denne gruppen inneholder Red Hats konfigurasjonsverktøy.</description>
+ <description xml:lang="pt">Este grupo contém todas as ferramentas de configuração de servidores da Red Hat.</description>
+ <description xml:lang="ru">Эта группа включает в ÑÐµÐ±Ñ Ð²Ñе ÑредÑтва админиÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñервера, напиÑанные в Red Hat.</description>
+ <description xml:lang="sv">Denna grupp innehåller alla Red Hats specialanpassade serverkonfigurationsverktyg.</description>
+ <description xml:lang="zh_CN">这组软件包包å«æ‰€æœ‰ Red Hat 的定制æœåŠ¡å™¨é…置工具。</description>
+ <description xml:lang="zh_TW">這個群組包括所有 Red Hat 自訂的伺æœå™¨è¨­å®šå·¥å…·ã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">redhat-config-bind</packagereq>
+ <packagereq type="default">redhat-config-httpd</packagereq>
+ <packagereq type="default">redhat-config-nfs</packagereq>
+ <packagereq type="default">redhat-config-network</packagereq>
+ <packagereq type="default">redhat-config-printer</packagereq>
+ <packagereq type="default">redhat-config-printer-gui</packagereq>
+ <packagereq type="default">redhat-config-securitylevel</packagereq>
+ <packagereq type="default">redhat-config-services</packagereq>
+ <packagereq type="default">redhat-switch-printer</packagereq>
+ <packagereq type="default">redhat-switch-printer-gnome</packagereq>
+ <packagereq type="default">redhat-switchmail</packagereq>
+ <packagereq type="default">redhat-switchmail-gnome</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>ftp-server</id>
+ <name>FTP Server</name>
+ <name xml:lang="cs">FTP server</name>
+ <name xml:lang="da">FTP-server</name>
+ <name xml:lang="de">FTP-Server</name>
+ <name xml:lang="es">Servidor FTP</name>
+ <name xml:lang="fr">Serveur FTP</name>
+ <name xml:lang="is">FTP þjónn</name>
+ <name xml:lang="it">Server FTP</name>
+ <name xml:lang="ja">FTP サーãƒ</name>
+ <name xml:lang="ko">FTP 서버</name>
+ <name xml:lang="no">FTP-tjener</name>
+ <name xml:lang="pt">Servidor FTP</name>
+ <name xml:lang="ru">Сервер FTP</name>
+ <name xml:lang="sv">FTP-server</name>
+ <name xml:lang="zh_CN">FTP æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">FTP 伺æœå™¨</name>
+ <description>These tools allow you to run an FTP server on the system.</description>
+ <description xml:lang="cs">Tyto nástroje Vám umožní na poÄítaÄi provozovat FTP server.</description>
+ <description xml:lang="da">Disse værktøjer lader dig køre en FTP-server på systemet.</description>
+ <description xml:lang="de">Mit diesen Tools können Sie einen FTP-Server im System ausführen.</description>
+ <description xml:lang="es">Estas herramientas le permiten ejecutar un servidor FTP en el sistema.</description>
+ <description xml:lang="fr">Ces outils vous permettent d&apos;exécuter un serveur FTP sur le système. </description>
+ <description xml:lang="is">Þessi tól gera þér kleyft að keyra FTP þjón á vélinni.</description>
+ <description xml:lang="it">Questi strumenti consentono di eseguire un server FTP sul sistema.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ„ールã§ã‚·ã‚¹ãƒ†ãƒ ä¸Šã®FTPサーãƒã‚’実行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ë„구를 사용하여 시스템 ìƒì—ì„œ FTP 서버를 ìš´ì˜í•˜ì‹¤ 수 있습니다.</description>
+ <description xml:lang="no">Disse verktøyene lar deg kjøre en ftp-tjener på systemet.</description>
+ <description xml:lang="pt">Estas ferramentas permitem-lhe correr um servidor FTP no seu computador.</description>
+ <description xml:lang="ru">Эти ÑредÑтва позволÑÑŽÑ‚ иÑпользовать ÑиÑтему как Ñервер FTP.</description>
+ <description xml:lang="sv">Dessa verktyg låter dig köra en FTP-server på systemet.</description>
+ <description xml:lang="zh_CN">这些工具å…许您在系统上è¿è¡Œ FTP æœåŠ¡å™¨ã€‚</description>
+ <description xml:lang="zh_TW">這些工具讓您å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œä¸€å€‹ FTP 伺æœå™¨ã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">anonftp</packagereq>
+ <packagereq type="mandatory">vsftpd</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>sql-server</id>
+ <name>SQL Database Server</name>
+ <name xml:lang="cs">Databázový server SQL</name>
+ <name xml:lang="da">SQL-databaseserver</name>
+ <name xml:lang="de">SQL Datenbank-Server</name>
+ <name xml:lang="es">Servidor de la base de datos SQL</name>
+ <name xml:lang="fr">Serveur de base de données SQL</name>
+ <name xml:lang="is">SQL gagnagrunnur</name>
+ <name xml:lang="it">Server per database SQL</name>
+ <name xml:lang="ja">SQLデータベースサーãƒ</name>
+ <name xml:lang="ko">SQL ë°ì´í„°ë² ì´ìŠ¤ 서버</name>
+ <name xml:lang="no">Database-tjener</name>
+ <name xml:lang="pt">Servidor de Base de Dados SQL</name>
+ <name xml:lang="ru">Сервер базы данных SQL</name>
+ <name xml:lang="sv">SQL-databasserver</name>
+ <name xml:lang="zh_CN">SQL æ•°æ®åº“æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">SQL 資料庫伺æœå™¨</name>
+ <description>This package group allows you to run an SQL server on the system.</description>
+ <description xml:lang="cs">Tato skupina balíÄků Vám umožní na poÄítaÄi provozovat SQL server.</description>
+ <description xml:lang="da">Denne pakkegruppe lader dig køre en SQL-server på systemet.</description>
+ <description xml:lang="de">Mit dieser Paketgruppe können Sie einen SQL-Server im System ausführen.</description>
+ <description xml:lang="es">Este grupo de paquetes le permite ejecutar un servidor SQL en el sistema. </description>
+ <description xml:lang="fr">Ce groupe de paquetages vous permet d&apos;exécuter un serveur SQL sur le système.</description>
+ <description xml:lang="is">Þessi pakkahópur gerir þér kleyft að keyra SQL þjónustu.</description>
+ <description xml:lang="it">Questo gruppo di pacchetti consente di eseguire un server SQL sul sistema.</description>
+ <description xml:lang="ja">ã“ã®ãƒ‘ッケージグループã§ã€ã‚·ã‚¹ãƒ†ãƒ ä¸Šã®SQLサーãƒã‚’実行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì—¬ 시스템 ìƒì—ì„œ SQL 서버를 ìš´ì˜í•˜ì‹¤ 수 있습니다.</description>
+ <description xml:lang="no">Denne pakkegruppen lar deg kjøre en database-tjenere på systemet.</description>
+ <description xml:lang="pt">Este grupo de pacotes permite-lhe correr um servidor SQL no seu sistema.</description>
+ <description xml:lang="ru">Ð’ Ñту группу включены различные SQL Ñерверы.</description>
+ <description xml:lang="sv">Denna paketgrupp låter dig köra en SQL-server på systemet.</description>
+ <description xml:lang="zh_CN">该软件包组å…许您在系统上è¿è¡Œ SQL æœåŠ¡å™¨ã€‚</description>
+ <description xml:lang="zh_TW">這個套件群組讓您å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œä¸€éƒ¨ SQL 伺æœå™¨ã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">postgresql-server</packagereq>
+ <packagereq type="mandatory">unixODBC</packagereq>
+ <packagereq type="mandatory">perl-DBD-Pg</packagereq>
+ <packagereq type="mandatory">perl-DB_File</packagereq>
+ <packagereq type="optional">mysql-server</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>web-server</id>
+ <name>Web Server</name>
+ <name xml:lang="cs">WWW server</name>
+ <name xml:lang="da">Webserver</name>
+ <name xml:lang="de">Web-Server</name>
+ <name xml:lang="es">Servidor Web</name>
+ <name xml:lang="fr">Serveur Web</name>
+ <name xml:lang="is">Vefþjónn</name>
+ <name xml:lang="it">Server Web</name>
+ <name xml:lang="ja">Webサーãƒ</name>
+ <name xml:lang="ko">웹 서버</name>
+ <name xml:lang="no">Webtjener</name>
+ <name xml:lang="pt">Servidor Web</name>
+ <name xml:lang="ru">Веб-Ñервер</name>
+ <name xml:lang="sv">Webbserver</name>
+ <name xml:lang="zh_CN">万维网æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">網é ä¼ºæœå™¨</name>
+ <description>These tools allow you to run a Web server on the system.</description>
+ <description xml:lang="cs">Tyto nástroje Vám umožní na poÄítaÄi provozovat WWW server.</description>
+ <description xml:lang="da">Disse værktøjer lader dig køre en webserver på systemet.</description>
+ <description xml:lang="de">Mit diesen Tools können Sie einen Web-Server im System ausführen.</description>
+ <description xml:lang="es">Estas herramientas le permiten ejecutar un servidor Web en el sistema.</description>
+ <description xml:lang="fr">Ces outils vous permettent d&apos;exécuter un serveur Web sur le système.</description>
+ <description xml:lang="is">Þessi tól gera þér kleyft að keyra vefþjón á vélinni.</description>
+ <description xml:lang="it">Questi strumenti consentono di eseguire un server Web sul sistema.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ„ールã§ã‚·ã‚¹ãƒ†ãƒ ä¸Šã®Webサーãƒã‚’実行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ë„구를 사용하여 시스템 ìƒì—ì„œ 웹서버를 ìš´ì˜í•˜ì‹¤ 수 있습니다.</description>
+ <description xml:lang="no">Disse verktøyene lar deg kjøre en web-tjener på systemet.</description>
+ <description xml:lang="pt">Estas ferramentas permitem-lhe correr um servidor Web no seu computador.</description>
+ <description xml:lang="ru">Эти ÑредÑтва позволÑÑŽÑ‚ иÑпользовать ÑиÑтему как Веб-Ñервер</description>
+ <description xml:lang="sv">Dessa verktyg låter dig köra en webbserver på systemet.</description>
+ <description xml:lang="zh_CN">这些工具å…许您在系统生è¿è¡Œä¸‡ç»´ç½‘æœåŠ¡å™¨ã€‚</description>
+ <description xml:lang="zh_TW">這些工具讓您å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œä¸€å€‹ç¶²é ä¼ºæœå™¨ã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">httpd</packagereq>
+ <packagereq type="mandatory">httpd-manual</packagereq>
+ <packagereq type="default">hwcrypto</packagereq>
+ <packagereq type="default">mod_python</packagereq>
+ <packagereq type="default">mod_perl</packagereq>
+ <packagereq type="default">mod_ssl</packagereq>
+ <packagereq type="default">php</packagereq>
+ <packagereq type="default">php-imap</packagereq>
+ <packagereq type="default">php-ldap</packagereq>
+ <packagereq type="optional">php-pgsql</packagereq>
+ <packagereq type="optional">mod_auth_pgsql</packagereq>
+ <packagereq type="default">squid</packagereq>
+ <packagereq type="default">tux</packagereq>
+ <packagereq type="default">webalizer</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>dns-server</id>
+ <name>DNS Name Server</name>
+ <name xml:lang="cs">Jmenný server DNS</name>
+ <name xml:lang="da">DNS-navneserver</name>
+ <name xml:lang="de">DNS Name-Server</name>
+ <name xml:lang="es">Servidor del nombre DNS</name>
+ <name xml:lang="fr">Nom de serveur DNS</name>
+ <name xml:lang="is">DNS nafnaþjónn</name>
+ <name xml:lang="it">Nome server DNS</name>
+ <name xml:lang="ja">DNSãƒãƒ¼ãƒ ã‚µãƒ¼ãƒ</name>
+ <name xml:lang="ko">DNS ì´ë¦„ 서버</name>
+ <name xml:lang="no">DNS-tjener</name>
+ <name xml:lang="pt">Servidor de Nomes DNS</name>
+ <name xml:lang="ru">Сервер DNS</name>
+ <name xml:lang="sv">DNS-namnserver</name>
+ <name xml:lang="zh_CN">DNS å称æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">DNS å稱伺æœå™¨</name>
+ <description>This package group allows you to run a DNS name server (BIND) on the system.</description>
+ <description xml:lang="cs">Tato skupina balíÄků Vám umožní na poÄítaÄi provozovat jmenný server DNS (BIND).</description>
+ <description xml:lang="da">Denne pakkegruppe lader dig køre en DNS-navneserver (BIND) på systemet.</description>
+ <description xml:lang="de">Mit dieser Paketgruppe können Sie einen DNS Name-Server (BIND) im System ausführen.</description>
+ <description xml:lang="es">Este paquete le permite ejecutar un servidor de nombre DNS (BIND) en el sistema.</description>
+ <description xml:lang="fr">Ce groupe de paquetages vous permet d&apos;exécuter un nom de serveur DNS (BIND) sur le système.</description>
+ <description xml:lang="is">Þessi pakkahópur gerir þér kleyft að keyra DNS nafnaþjón (BIND) á vélinni þinni.</description>
+ <description xml:lang="it">Questo gruppo di pacchetti consente di eseguire un name server DNS (BIND) sul sistema.</description>
+ <description xml:lang="ja">ã“ã®ãƒ‘ッケージグループã§ã€ã‚·ã‚¹ãƒ†ãƒ ä¸Šã®DNSãƒãƒ¼ãƒ ã‚µãƒ¼ãƒ(BIND)を実行ã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ ê·¸ë£¹ì„ ì‚¬ìš©í•˜ì—¬ 시스템 ìƒì—ì„œ DNS ì´ë¦„ 서버 (BIND)를 ìš´ì˜í•˜ì‹¤ 수 있습니다.</description>
+ <description xml:lang="no">Denne pakkegruppen lar deg kjøre en DNS-tjener (BIND) på systemet.</description>
+ <description xml:lang="pt">Este grupo de pacotes permite-lhe correr um servidor de nomes de DNS (o BIND) no sistema.</description>
+ <description xml:lang="ru">Пакеты в Ñтой группе позволÑÑ‚ вам уÑтановить и наÑтроить DNS (BIND).</description>
+ <description xml:lang="sv">Denna paketgrupp låter dig köra en DNS-namnserver (BIND) på systemet.</description>
+ <description xml:lang="zh_CN">该软件包组å…许您在系统上è¿è¡Œ DNS å称æœåŠ¡å™¨(BIND)。</description>
+ <description xml:lang="zh_TW">這個套件群組讓您å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œä¸€éƒ¨ DNS å稱伺æœå™¨ (BIND)。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">caching-nameserver</packagereq>
+ <packagereq type="mandatory">bind</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>authoring-and-publishing</id>
+ <name>Authoring and Publishing</name>
+ <name xml:lang="cs">Tvoření a publikování</name>
+ <name xml:lang="da">Forfatterskab og publicering</name>
+ <name xml:lang="de">Authoring und Publishing</name>
+ <name xml:lang="es">Autorización y publicación</name>
+ <name xml:lang="fr">Authoring et Publishing</name>
+ <name xml:lang="is">Umbrot og ritstörf</name>
+ <name xml:lang="it">Authoring e publishing</name>
+ <name xml:lang="ja">著作ã¨ç™ºè¡Œ</name>
+ <name xml:lang="ko">제작과 출íŒ</name>
+ <name xml:lang="no">Tekstpublisering</name>
+ <name xml:lang="pt">Autoria e Publicação</name>
+ <name xml:lang="ru">Подготовка публикаций</name>
+ <name xml:lang="sv">Författande och publicering</name>
+ <name xml:lang="zh_CN">授æƒå’Œå‡ºç‰ˆ</name>
+ <name xml:lang="zh_TW">編寫與出版</name>
+ <description>These tools allow you to create documentation in the DocBook format and convert them to HTML, PDF, Postscript, and text.</description>
+ <description xml:lang="cs">Tyto nástroje Vám umožní vytvářet dokumentaci ve formátu DocBook a konvertovat ji do HTML, PDF, Postscriptu a textu.</description>
+ <description xml:lang="da">Disse værktøjer lader dig skabe dokumentation i DocBook-formatet og konvertere dem til HTML, PDF, Postscript og tekst.</description>
+ <description xml:lang="de">Mit diesen Tools können Sie Dokumentation im DocBook Format anlegen und diese in die Formate HTML, PDF, Postscript und Text konvertieren.</description>
+ <description xml:lang="es">Estas herramientas le permiten crear documentación en formato DocBook y convertirla a HTML, PDF, Postscript y texto.</description>
+ <description xml:lang="fr">Ces outils vous permettent de créer de la documentation sous format DocBook et de la convertir en HTML, PDF, Postscript et texte.</description>
+ <description xml:lang="is">Þessi tól gera þér kleyft að búa til skjöl á DocBook sniði og breyta þeim í HTML, PDF, Postscript og texta.</description>
+ <description xml:lang="it">Questi strumenti consentono di creare documenti in formato DocBook e di convertirli in HTML, PDF, Postscript e testo.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ„ールã§ã€DocBookå½¢å¼ã§æ–‡æ›¸ã‚’作æˆã—ã¦ã€ãれらをHTML, PDF, Postscript, åŠã³ textã¸å¤‰æ›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚.</description>
+ <description xml:lang="ko">ì´ ë„구를 사용하여 DocBook 형ì‹ì˜ 문서를 ìƒì„±í•˜ì‹¤ 수 있으며 ìƒì„±ëœ 문서를 HTML, PDF, Postscript와 í…스트 형ì‹ìœ¼ë¡œ 변환하실 수 있습니다.</description>
+ <description xml:lang="no">Disse verktøyene lar deg lage dokumentasjon i DocBook-formatet og konvertere dem til HTML, PDF, Postscript og tekst.</description>
+ <description xml:lang="pt">Estas ferramentas permitem-lhe criar a documentação no formato DocBook e convertê-la para HTML, PDF, PostScript e texto.</description>
+ <description xml:lang="ru">Эти ÑредÑтва позволÑÑŽÑ‚ Ñоздавать документацию в формате DocBook и преобразовывать в HTML, PDF, Postscript и текÑÑ‚.</description>
+ <description xml:lang="sv">Dessa verktyg låter dig skapa dokumentation i DocBook-formatet och konvertera dem till HTML, PDF, Postscript och text.</description>
+ <description xml:lang="zh_CN">这些软件包å…许您创建 DocBook æ ¼å¼çš„文档,并将它们转æ¢æˆ HTML〠PDFã€Postscript 和文本格å¼ã€‚</description>
+ <description xml:lang="zh_TW">這些工具讓您å¯ä»¥å»ºç«‹ DocBook æ ¼å¼çš„說明文件,並且 將它們轉æ›ç‚º HTML, PDF, Postscript 與文字。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">docbook-dtds</packagereq>
+ <packagereq type="mandatory">docbook-style-dsssl</packagereq>
+ <packagereq type="mandatory">docbook-utils</packagereq>
+ <packagereq type="mandatory">docbook-utils-pdf</packagereq>
+ <packagereq type="mandatory">linuxdoc-tools</packagereq>
+ <packagereq type="mandatory">tetex</packagereq>
+ <packagereq type="mandatory">tetex-afm</packagereq>
+ <packagereq type="default">tetex-xdvi</packagereq>
+ <packagereq type="optional">tetex-latex</packagereq>
+ <packagereq type="mandatory">xmlto</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>engineering-and-scientific</id>
+ <name>Engineering and Scientific</name>
+ <name xml:lang="cs">Vědecké nástroje</name>
+ <name xml:lang="da">Ingeniør- og naturvidenskab</name>
+ <name xml:lang="de">Engineering und Wissenschaft</name>
+ <name xml:lang="es">Ingeniería y científico</name>
+ <name xml:lang="fr">Engineering et Scientifique</name>
+ <name xml:lang="is">Vísindi og verkfræði</name>
+ <name xml:lang="it">Settori engineering e scientifico</name>
+ <name xml:lang="ja">技術系ã¨ç§‘学系</name>
+ <name xml:lang="ko">공학과 과학</name>
+ <name xml:lang="no">Vitenskapelige programmer</name>
+ <name xml:lang="pt">Engenharia e Ciência</name>
+ <name xml:lang="ru">Ðаучные и инженерные</name>
+ <name xml:lang="sv">Konstruktion och forskning</name>
+ <name xml:lang="zh_CN">工程和科学</name>
+ <name xml:lang="zh_TW">工程與科學</name>
+ <description>This group includes packages for performing mathematical and scientific computations and plotting, as well as unit conversion.</description>
+ <description xml:lang="cs">Tato skupina obsahuje balíÄky pro provádÄ›ní matematických a vÄ›deckých výpoÄtů, tvorbu grafů a pÅ™evod mezi jednotkami.</description>
+ <description xml:lang="da">Denne gruppe indeholder pakker for udførsel af matematiske og videnskabelige beregninger og diagramtegning såvel som enhedskonvertering.</description>
+ <description xml:lang="de">Diese Gruppe enthält Pakete für mathematische und wissenschaftliche Berechnungen und Plotting sowie die Konversion von Einheiten.</description>
+ <description xml:lang="es">El grupo incluye paquetes para ejecutar cálculos matemáticos y científicos y trazados, así como la conversión de la unidad.</description>
+ <description xml:lang="fr">Ce groupe comprend les paquetages pour exécuter des calculs mathématiques et scientifiques, le traçage et la conversion des unités.</description>
+ <description xml:lang="is">Þessi hópur inniheldur pakka til að framkvæma stærðfræði og vísindaútreikninga ásamt tólum til að umbreyta milli eininga.</description>
+ <description xml:lang="it">Questo gruppo include i pacchetti per l&apos;esecuzione e il plotting di operazioni matematiche e scientifiche, nonché la conversione di unità.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€ãƒ¦ãƒ‹ãƒƒãƒˆå¤‰æ›ã¨å…±ã«ã€æ•°å­¦çš„åŠã³ç§‘学的ãªæ¼”ç®—ã¨ãƒ—ロッティングを 実践ã™ã‚‹ç‚ºã®ãƒ‘ッケージãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì€ ë‹¨ìœ„ 변환 ê¸°ëŠ¥ì„ ë¹„ë¡¯í•˜ì—¬ 수학 계산과 과학 ê³„ì‚°ì„ ìˆ˜í–‰í•˜ê³  출력하는 패키지를 í¬í•¨í•©ë‹ˆë‹¤.</description>
+ <description xml:lang="no">Denne gruppen inneholder pakker for å utføre matematiske og vitenskapelige beregninger/visualiseringer samt enhetskonverteringer.</description>
+ <description xml:lang="pt">Este grupo inclui os pacotes para efecutar cálculos matemáticos e científicos, apresentá-los e efectuar a conversão de unidades.</description>
+ <description xml:lang="ru">Эта группа Ñодержит Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких и прочих научных вычиÑлений и преобразований.</description>
+ <description xml:lang="sv">Denna grupp inkluderar paket för utförande av matematiska och vetenskapliga beräkningar och diagramritning såväl som enhetskonvertering.</description>
+ <description xml:lang="zh_CN">这组软件包包括用æ¥æ‰§è¡Œæ•°å­¦å’Œç§‘学计算ã€ç»˜å›¾ã€ä»¥åŠè®¡é‡å•ä½è½¬æ¢çš„软件包。</description>
+ <description xml:lang="zh_TW">這個群組包括的套件å¯ç”¨ä¾†åŸ·è¡Œæ•¸å­¸èˆ‡ç§‘學的計算與繪圖,以åŠå–®ä½çš„æ›ç®—。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional">blas</packagereq>
+ <packagereq type="default">gnuplot</packagereq>
+ <packagereq type="optional">lam</packagereq>
+ <packagereq type="optional">lapack</packagereq>
+ <packagereq type="default">octave</packagereq>
+ <packagereq type="optional">pvm</packagereq>
+ <packagereq type="default">units</packagereq>
+ </packagelist>
+ </group>
+
+
+ <group>
+ <id>editors</id>
+ <name>Editors</name>
+ <name xml:lang="cs">Editory</name>
+ <name xml:lang="da">Tekstredigering</name>
+ <name xml:lang="de">Editoren</name>
+ <name xml:lang="es">Editores</name>
+ <name xml:lang="fr">Editeurs</name>
+ <name xml:lang="is">Ritlar</name>
+ <name xml:lang="it">Editor</name>
+ <name xml:lang="ja">エディタ</name>
+ <name xml:lang="ko">편집기</name>
+ <name xml:lang="no">Editorer</name>
+ <name xml:lang="pt">Editores</name>
+ <name xml:lang="ru">Редакторы</name>
+ <name xml:lang="sv">Textredigerare</name>
+ <name xml:lang="zh_CN">编辑器</name>
+ <name xml:lang="zh_TW">編輯器</name>
+ <description>Sometimes called text editors, these are programs that allow you to create and edit files. These include Emacs and Vi.</description>
+ <description xml:lang="cs">NÄ›kdy oznaÄované jako textové editory, tyto programy Vám umožní vytvářet a upravovat soubory. Tato skupina zahrnuje Emacs a Vi.</description>
+ <description xml:lang="da">Dette er programmer som lader dig skabe og redigere filer, og de kaldes ofte for tekstredigerere. Disse inkluderer Emacs og Vi.</description>
+ <description xml:lang="de">Diese auch Text-Editoren genannten Programme ermöglichen das Anlegen und Bearbeiten von Dateien. Dazu gehören Emacs und Vi.</description>
+ <description xml:lang="es">Existen programas que permiten crear y modificar ficheros, a veces llamados editores de texto. Estos incluyen Emacs y Vi.</description>
+ <description xml:lang="fr">Parfois appelés éditeurs de texte, ces programmes vous permettent de créer et d&apos;éditer des fichiers. Ils comprennent Emacs et Vi.</description>
+ <description xml:lang="is">Forrit sem kallast ritlar. Þetta eru tólin sem gera þér kleyft að búa til og breyta skrám. Þetta inniheldur meðal annars Emacs og Vi.</description>
+ <description xml:lang="it">Talvolta definiti editor di testo, questi programmi consentono di creare emodificare i file. Sono inclusi Emacs e Vi.</description>
+ <description xml:lang="ja">時ã«ã¯ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒ‡ã‚£ã‚¿ã¨å‘¼ã°ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’作æˆã¨ç·¨é›†ã§ãるプログラム㌠ã‚ã‚Šã¾ã™ã€‚ã“れらã«ã¯Emacs 㨠ViãŒå«ã¾ã‚Œã¾ã™ã€‚</description>
+ <description xml:lang="ko">ê°€ë”씩 í…스트 편집기ë¼ê³ ë„ 불리우는 ì´ í”„ë¡œê·¸ëž¨ì€ íŒŒì¼ì„ ìƒì„±í•˜ê³  íŽ¸ì§‘í•˜ëŠ”ë° ì‚¬ìš©ë©ë‹ˆë‹¤. ì´ëŸ¬í•œ 프로그램ì—는 Emacs와 Viê°€ í¬í•¨ë©ë‹ˆë‹¤.</description>
+ <description xml:lang="no">Disse programmene, ofte kalt teksteditorer, lar deg lage og redigere filer. Emacs og Vi er inkludert her.</description>
+ <description xml:lang="pt">Normalmente chamados editores de texto, estes programas permite-lhe criar e editar ficheiros. Inclui o Emacs e o Vi.</description>
+ <description xml:lang="ru">Эти программы, иногда называемые текÑтовыми редакторами, позволÑÑŽÑ‚ редактировать текÑÑ‚Ñ‹. Включают Emacs and Vi.</description>
+ <description xml:lang="sv">Detta är program som låter dig skapa och redigera filer, och kallas ofta textredigerare. Dessa inkluderar Emacs och Vi.</description>
+ <description xml:lang="zh_CN">有时å«åšæ–‡æœ¬ç¼–辑器。它们是å…许您创建和编辑文件的程åºã€‚包括 Emacs å’Œ Vi。</description>
+ <description xml:lang="zh_TW">這些是讓您å¯ä»¥å»ºç«‹èˆ‡ç·¨è¼¯æª”案的程å¼ï¼Œæœ‰æ™‚候稱為文字編輯器。 這些包括了 Emacs 與 Vi。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ <metapkg type="default">emacs</metapkg>
+ <metapkg type="optional">xemacs</metapkg>
+ </grouplist>
+ <packagelist>
+ <packagereq type="default">vim-enhanced</packagereq>
+ </packagelist>
+ </group>
+
+
+ <group>
+ <id>emacs</id>
+ <name>Emacs</name>
+ <name xml:lang="cs">Emacs</name>
+ <name xml:lang="da">Emacs</name>
+ <name xml:lang="de">Emacs</name>
+ <name xml:lang="es">Emacs</name>
+ <name xml:lang="fr">Emacs</name>
+ <name xml:lang="is">Emacs</name>
+ <name xml:lang="it">Emacs</name>
+ <name xml:lang="ja">Emacs</name>
+ <name xml:lang="ko">Emacs</name>
+ <name xml:lang="no">Emacs</name>
+ <name xml:lang="pt">Emacs</name>
+ <name xml:lang="ru">Emacs</name>
+ <name xml:lang="sv">Emacs</name>
+ <name xml:lang="zh_CN">Emacs</name>
+ <name xml:lang="zh_TW">Emacs</name>
+ <description>The GNU Emacs text editor.</description>
+ <description xml:lang="cs">Textový editor GNU Emacs.</description>
+ <description xml:lang="da">Tekstredigereren GNU Emacs.</description>
+ <description xml:lang="de">Der Text-Editor GNU Emacs.</description>
+ <description xml:lang="es">Editor de textos Emacs de GNU.</description>
+ <description xml:lang="fr">Editeur de texte GNU Emacs.</description>
+ <description xml:lang="is">GNU Emacs ritillinn.</description>
+ <description xml:lang="it">Editor di testo GNU Emacs.</description>
+ <description xml:lang="ja">GNU Emacsテキストエディタ</description>
+ <description xml:lang="ko">GNU Emacs í…스트 편집기.</description>
+ <description xml:lang="no">Teksteditoren GNU Emacs.</description>
+ <description xml:lang="pt">O editor de texto GNU Emacs.</description>
+ <description xml:lang="ru">ТекÑтовый редактор GNU Emacs.</description>
+ <description xml:lang="sv">Textredigeraren GNU Emacs.</description>
+ <description xml:lang="zh_CN">GNU Emacs 文本编辑器</description>
+ <description xml:lang="zh_TW">GNU Emacs 文字編輯器。</description>
+ <uservisible>false</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">emacs</packagereq>
+ <packagereq type="mandatory">emacs-leim</packagereq>
+ <packagereq type="default">psgml</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>xemacs</id>
+ <name>XEmacs</name>
+ <name xml:lang="cs">XEmacs</name>
+ <name xml:lang="da">XEmacs</name>
+ <name xml:lang="de">XEmacs</name>
+ <name xml:lang="es">XEmacs</name>
+ <name xml:lang="fr">XEmacs</name>
+ <name xml:lang="is">XEmacs</name>
+ <name xml:lang="it">XEmacs</name>
+ <name xml:lang="ja">XEmacs</name>
+ <name xml:lang="ko">XEmacs</name>
+ <name xml:lang="no">XEmacs</name>
+ <name xml:lang="pt">XEmacs</name>
+ <name xml:lang="ru">XEmacs</name>
+ <name xml:lang="sv">XEmacs</name>
+ <name xml:lang="zh_CN">XEmacs</name>
+ <name xml:lang="zh_TW">XEmacs</name>
+ <description>The XEmacs text editor.</description>
+ <description xml:lang="cs">Textový editor XEmacs.</description>
+ <description xml:lang="da">Tekstredigereren XEmacs.</description>
+ <description xml:lang="de">Der Text-Editor XEmacs.</description>
+ <description xml:lang="es">Editor de textos de XEmacs.</description>
+ <description xml:lang="fr">Editeur de texte XEmacs.</description>
+ <description xml:lang="is">XEmacs ritillinn.</description>
+ <description xml:lang="it">Editor di testo XEmacs.</description>
+ <description xml:lang="ja">XEmacsテキストエディタ</description>
+ <description xml:lang="ko">XEmacs í…스트 편집기.</description>
+ <description xml:lang="no">Teksteditoren XEmacs.</description>
+ <description xml:lang="pt">O editor de texto XEmacs.</description>
+ <description xml:lang="ru">ТекÑтовый редактор XEmacs</description>
+ <description xml:lang="sv">Textredigeraren XEmacs.</description>
+ <description xml:lang="zh_CN">XEmacs 文本编辑器</description>
+ <description xml:lang="zh_TW">XEmacs 文字編輯器。</description>
+ <uservisible>false</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">xemacs</packagereq>
+ <packagereq type="mandatory">xemacs-el</packagereq>
+ <packagereq type="default">xemacs-info</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>system-tools</id>
+ <name>System Tools</name>
+ <name xml:lang="cs">Systémové nástroje</name>
+ <name xml:lang="da">Systemværktøjer</name>
+ <name xml:lang="de">Systemtools</name>
+ <name xml:lang="es">Herramientas del sistema </name>
+ <name xml:lang="fr">Outils de système</name>
+ <name xml:lang="is">Kerfistól</name>
+ <name xml:lang="it">Tool di sistema</name>
+ <name xml:lang="ja">システムツールã€</name>
+ <name xml:lang="ko">시스템 ë„구</name>
+ <name xml:lang="no">Systemverktøy</name>
+ <name xml:lang="pt">Ferramentas do Sistema</name>
+ <name xml:lang="ru">СиÑтемные ÑредÑтва</name>
+ <name xml:lang="sv">Systemverktyg</name>
+ <name xml:lang="zh_CN">系统工具</name>
+ <name xml:lang="zh_TW">系統工具</name>
+ <description>This group is a collection of various tools for the system, such as the client for connecting to SMB shares and tools to monitor network traffic.</description>
+ <description xml:lang="cs">Tato skupina je soubor různých systémových nástrojů, např. klient pro připojení ke svazkům SMB a nástroje pro sledování síťového provozu.</description>
+ <description xml:lang="da">Denne gruppe er en samling med diverse værktøjer til systemet, som fx klienten for tilslutning til SMB-delinger og værktøjer for overvågning af netværkstrafik.</description>
+ <description xml:lang="de">Diese Gruppe bietet eine Reihe Systemtools wie beispielsweise den Client für die Verbindung zu SMB-Shares sowie Tools für die Kontrolle des Netzwerkverkehrs.</description>
+ <description xml:lang="es">Este grupo es una colección de varias herramientas para el sistema, tales como el cliente para conectarse a las particiones SMB y herramientas para monitorizar el tráfico de redes. </description>
+ <description xml:lang="fr">Ce groupe est un ensemble de différents outils pour le système, ainsi qu&apos;un client pour la connexion aux parts SMB et d&apos;outils permettant de gérer le trafic dans le réseau. </description>
+ <description xml:lang="is">Þessi hópur inniheldur safn kerfistóla eins og til dæmis tól til að tengjast SMB deildum og tól til að fylgjast með umferð á neti.</description>
+ <description xml:lang="it">Questo gruppo è una raccolta di vari strumenti per il sistema, che comprende ilclient per la connessione alle partizioni SMB e gli strumenti per monitorare il traffico di rete.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã¯ã€SMB共有ã¸æŽ¥ç¶šã™ã‚‹ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚„ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é€šä¿¡é‡ã‚’モニタã™ã‚‹ ツールãªã©ã®ã‚·ã‚¹ãƒ†ãƒ ç”¨ã®å„種ツールã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã§ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì€ SMB ê³µìœ ì— ì ‘ì†í•˜ëŠ”ë° ì‚¬ìš©ë˜ëŠ” í´ë¼ì´ì–¸íŠ¸ì™€ ë„¤íŠ¸ì›Œí¬ ì†Œí†µëŸ‰ì„ ê°ì‹œí•˜ëŠ” ë„구와 ê°™ì€ ë‹¤ì–‘í•œ 시스템 ë„구 모ìŒìž…니다.</description>
+ <description xml:lang="no">Denne gruppen er en samling av ulike systemverktøy, som oppkobling mot SMB-ressurser og nettverksovervåkning.</description>
+ <description xml:lang="pt">Este grupo é uma colecção de ferramentas para o sistema, tal como o cliente para se ligar a partilhas de SMB e as ferramentas para monitorizar o tráfego de rede.</description>
+ <description xml:lang="ru">Эта группа Ñодержит различные ÑиÑтемные утилиты: например, Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¾Ñтупа к SMB Ñерверам, и программы Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸Ñ‚Ð¾Ñ€Ð¸Ð½Ð³Ð° Ñетевого траффика.</description>
+ <description xml:lang="sv">Denna grupp är en samling med diverse verktyg för systemet, som exempelvis klienten för anslutning till SMB-utdelningar och verktyg för övervakning av nätverkstrafik.</description>
+ <description xml:lang="zh_CN">这组软件包是å„类系统工具的集åˆï¼Œè­¬å¦‚:连接 SMB 共享的客户;监控网络交通的工具。</description>
+ <description xml:lang="zh_TW">這個群組是系統上許多種工具的收集,例如用來連線到 SMB 共享的用戶端, 以åŠç”¨ä¾†ç›£è¦–網路æµé‡çš„工具。</description>
+ <uservisible>true</uservisible>
+ <packagelist>
+ <packagereq type="optional">amanda-client</packagereq>
+ <packagereq type="default">ethereal</packagereq>
+ <packagereq type="optional">ethereal-gnome</packagereq>
+ <packagereq type="optional">gnome-lokkit</packagereq>
+ <packagereq type="default">nmap</packagereq>
+ <packagereq type="optional">nmap-frontend</packagereq>
+ <packagereq type="optional">rdesktop</packagereq>
+ <packagereq type="default">samba-client</packagereq>
+ <packagereq type="optional">shapecfg</packagereq>
+ <packagereq type="optional">vnc</packagereq>
+ <packagereq type="default">xdelta</packagereq>
+ <packagereq type="optional">mc</packagereq>
+ <packagereq type="default">screen</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>admin-tools</id>
+ <name>Administration Tools</name>
+ <name xml:lang="cs">Nástroje pro administraci</name>
+ <name xml:lang="da">Administrationsværktøjer</name>
+ <name xml:lang="de">Verwaltungstools</name>
+ <name xml:lang="es">Herramientas de administración</name>
+ <name xml:lang="fr">Outils d&apos;administration</name>
+ <name xml:lang="is">Kerfisstjórnunartól</name>
+ <name xml:lang="it">Strumenti amministrativi</name>
+ <name xml:lang="ja">管ç†ãƒ„ール</name>
+ <name xml:lang="ko">관리 ë„구</name>
+ <name xml:lang="no">Administrasjonsverktøy</name>
+ <name xml:lang="pt">Ferramentas de Administração</name>
+ <name xml:lang="ru">СредÑтва админиÑтрированиÑ</name>
+ <name xml:lang="sv">Administrationsverktyg</name>
+ <name xml:lang="zh_CN">管ç†å·¥å…·</name>
+ <name xml:lang="zh_TW">管ç†å·¥å…·</name>
+ <description>This group is a collection of graphical administration tools for the system, such as for managing user accounts and configuring system hardware.</description>
+ <description xml:lang="cs">Tato skupina je soubor grafických nástrojů administrace, napÅ™. pro správu uživatelských úÄtů a nastavení hardware poÄítaÄe.</description>
+ <description xml:lang="da">Denne gruppe er en samling grafiske administrationsværktøjer for systemet, som fx behandling af brugerkonti og konfiguration af systemudstyr.</description>
+ <description xml:lang="de">Diese Gruppe bietet eine Reihe von grafische Verwaltungstools für das System, darunter Tools für die Verwaltung von Benutzeraccounts und die Konfiguration der Systemhardware.</description>
+ <description xml:lang="es">Este grupo es una colección de herramientas de administración gráficas, tales como cuentas de usuario de gestión y configuración del hardware del sistema.</description>
+ <description xml:lang="fr">Ce groupe est un ensemble d&apos;outils d&apos;administration graphique pour le système, ainsi que pour la gestion des comptes utilisateurs et la configuration du matériel système.</description>
+ <description xml:lang="is">Þessi hópur inniheldur safn myndrænna kerfisstjórnunartóla fyrir vélina eins og til dæmis tól til að vinna með notendur og stilla vélbúnað.</description>
+ <description xml:lang="it">Questo gruppo è una raccolta di tool per la gestione della grafica del sistema, che consente di gestire gli account utente e di configurare l&apos;hardware di sistema.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’管ç†ã—ãŸã‚Šã€ã‚·ã‚¹ãƒ†ãƒ ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚’設定ã—ãŸã‚Šã™ã‚‹ システムã®ç‚ºã®ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ç®¡ç†ãƒ„ールã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã§ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ê·¸ë£¹ì€ ì‚¬ìš©ìž ê³„ì •ì„ ê´€ë¦¬í•˜ê³  시스템 하드웨어를 설정하는 그래픽 시스템 관리 ë„구 모ìŒìž…니다. </description>
+ <description xml:lang="no">Denne gruppen er en samling av grafiske administrasjonsverktøy for systemet, inkludert brukeradministrasjon og hardwarekonfigurering.</description>
+ <description xml:lang="pt">Este grupo é uma colecção de ferramentas gráficas de administração para o sistema, tal como a gestão das contas de utilizadores e configurar o &apos;hardware&apos; do sistema.</description>
+ <description xml:lang="ru">Эта группа Ñодержит графичеÑкие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð½Ð°Ñтройки ÑиÑтемы. С помощью Ñтих приложений можно добавить новых пользователей, наÑтроить звук, разрешение Ñкрана, и проч.</description>
+ <description xml:lang="sv">Denna grupp är en samling grafiska administrationsverktyg för systemet, som exempelvis hantering av användarkonton och konfiguration av systemhårdvara.</description>
+ <description xml:lang="zh_CN">这组软件包包括一个系统图形化管ç†å·¥å…·çš„集åˆï¼Œè­¬å¦‚:管ç†ç”¨æˆ·å¸å·å’Œé…置系统硬件。</description>
+ <description xml:lang="zh_TW">這個群組是系統中圖形管ç†å·¥å…·çš„收集,例如用來管ç†ä½¿ç”¨è€…帳號與 設定系統硬體。</description>
+ <uservisible>true</uservisible>
+ <packagelist>
+ <packagereq type="default">authconfig-gtk</packagereq>
+ <packagereq type="default">redhat-config-date</packagereq>
+ <packagereq type="default">redhat-config-keyboard</packagereq>
+ <packagereq type="default">redhat-config-kickstart</packagereq>
+ <packagereq type="default">redhat-config-language</packagereq>
+ <packagereq type="default">redhat-config-mouse</packagereq>
+ <packagereq type="default">redhat-config-rootpassword</packagereq>
+ <packagereq type="default">redhat-config-soundcard</packagereq>
+ <packagereq type="default">redhat-config-users</packagereq>
+ <packagereq type="default">redhat-config-packages</packagereq>
+ <packagereq type="default">redhat-config-proc</packagereq>
+ <packagereq type="default">redhat-logviewer</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>games</id>
+ <name>Games and Entertainment</name>
+ <name xml:lang="cs">Hry a zábava</name>
+ <name xml:lang="da">Spil og underholdning</name>
+ <name xml:lang="de">Spiele und Zeitvertreib</name>
+ <name xml:lang="es">Juegos y entretenimiento</name>
+ <name xml:lang="fr">Jeux et Divertissements</name>
+ <name xml:lang="is">Leikir og skemmtun</name>
+ <name xml:lang="it">Giochi e divertimento</name>
+ <name xml:lang="ja">ゲームã¨å¨¯æ¥½</name>
+ <name xml:lang="ko">게임과 오ë½</name>
+ <name xml:lang="no">Spill og underholdning</name>
+ <name xml:lang="pt">Jogos e Entretenimento</name>
+ <name xml:lang="ru">Игры и развлечениÑ</name>
+ <name xml:lang="sv">Spel och underhållning</name>
+ <name xml:lang="zh_CN">游æˆå’Œå¨±ä¹</name>
+ <name xml:lang="zh_TW">éŠæˆ²èˆ‡å¨›æ¨‚</name>
+ <description>Various ways to relax and spend your free time.</description>
+ <description xml:lang="cs">Různé způsoby, jak relaxovat a trávit volný Äas.</description>
+ <description xml:lang="da">Diverse måder at slappe af og bruge fritiden.</description>
+ <description xml:lang="de">Verschiedene Möglichkeiten zur Entspannung und zum Zeitvertreib.</description>
+ <description xml:lang="es">Maneras de relajarse y pasar el tiempo libre.</description>
+ <description xml:lang="fr">Différentes manières de vous relaxer et de passer le temps.</description>
+ <description xml:lang="is">Ãmslegt til að slappa af yfir og eyða lausum tíma.</description>
+ <description xml:lang="it">Vari modi per rilassarsi e passare il tempo libero.</description>
+ <description xml:lang="ja">リラックスã—ã¦æš‡ãªæ™‚é–“ã‚’éŽã”ã™ã„ã‚ã„ã‚ãªæ–¹æ³•</description>
+ <description xml:lang="ko">휴ì‹ì„ 취하면서 여가 ì‹œê°„ì„ ë³´ë‚¼ 수 있는 다양한 방법.</description>
+ <description xml:lang="no">Forskjellige måter å slappe av og fordrive fritiden.</description>
+ <description xml:lang="pt">Várias maneiras de relaxar e passar o seu tempo livre.</description>
+ <description xml:lang="ru">Различные ÑпоÑобы раÑÑлабитьÑÑ Ð¸ провеÑти Ñвободное времÑ.</description>
+ <description xml:lang="sv">Diverse sätt att slappna av och fördriva ledig tid.</description>
+ <description xml:lang="zh_CN">放æ¾å’Œæ‰“å‘时间的途径。</description>
+ <description xml:lang="zh_TW">許多種讓您放鬆以åŠæ¶ˆç£¨æ™‚間的方法。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>base</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">fortune-mod</packagereq>
+ <packagereq type="mandatory">joystick</packagereq>
+ <packagereq type="default">Maelstrom</packagereq>
+ <packagereq type="default">chromium</packagereq>
+ <packagereq type="default">freeciv</packagereq>
+ <packagereq type="default">tuxracer</packagereq>
+ <packagereq type="default">xboard</packagereq>
+ <packagereq type="default">gnome-games</packagereq>
+ <packagereq type="default">kdegames</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>ISO8859-2-support</id>
+ <name>ISO8859-2 Support</name>
+ <name xml:lang="cs">Podpora pro ISO8859-2</name>
+ <name xml:lang="da">Understøttelse for ISO8-859-2</name>
+ <name xml:lang="de">ISO8859-2 Support</name>
+ <name xml:lang="es">Soporte ISO8859-2</name>
+ <name xml:lang="fr">Support ISO8859-2 </name>
+ <name xml:lang="is">ISO8859-2 stuðningur</name>
+ <name xml:lang="it">Supporto ISO8859-2</name>
+ <name xml:lang="ja">ISO8859-2 サãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ISO8859-2 지ì›</name>
+ <name xml:lang="no">Støtte for ISO8859-2</name>
+ <name xml:lang="pt">Suporte a ISO8859-2</name>
+ <name xml:lang="ru">Поддержка ISO8859-2</name>
+ <name xml:lang="sv">Stöd för ISO8859-2</name>
+ <name xml:lang="zh_CN">ISO8859-2 支æŒ</name>
+ <name xml:lang="zh_TW">ISO8859-2 支æ´</name>
+ <uservisible>false</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">fonts-ISO8859-2</packagereq>
+ <packagereq type="mandatory">fonts-ISO8859-2-75dpi</packagereq>
+ <packagereq type="mandatory">fonts-ISO8859-2-100dpi</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>ISO8859-9-support</id>
+ <name>ISO8859-9 Support</name>
+ <name xml:lang="cs">Podpora pro ISO8859-9</name>
+ <name xml:lang="da">Understøttelse for ISO-8859-9</name>
+ <name xml:lang="de">ISO8859-9 Support</name>
+ <name xml:lang="es">Soporte ISO8859-9</name>
+ <name xml:lang="fr">Support ISO8859-9 </name>
+ <name xml:lang="is">ISO8859-9 stuðningur</name>
+ <name xml:lang="it">Supporto ISO8859-9</name>
+ <name xml:lang="ja">ISO8859-9 サãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ISO8859-9 지ì›</name>
+ <name xml:lang="no">Støtte for ISO8859-9</name>
+ <name xml:lang="pt">Suporte a ISO8859-9</name>
+ <name xml:lang="ru">Поддержка ISO8859-9</name>
+ <name xml:lang="sv">Stöd för ISO8859-9</name>
+ <name xml:lang="zh_CN">ISO8859-9 支æŒ</name>
+ <name xml:lang="zh_TW">ISO8859-9 支æ´</name>
+ <uservisible>false</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">XFree86-ISO8859-9-75dpi-fonts</packagereq>
+ <packagereq type="mandatory">XFree86-ISO8859-9-100dpi-fonts</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>cyrillic-support</id>
+ <uservisible>false</uservisible>
+ <name>Cyrillic Support</name>
+ <name xml:lang="cs">Podpora pro azbuku</name>
+ <name xml:lang="da">Understøttelse for kyrillisk alfabet</name>
+ <name xml:lang="de">Support für Kyrillisch</name>
+ <name xml:lang="es">Soporte para el cirílico</name>
+ <name xml:lang="fr">Support cyrillique</name>
+ <name xml:lang="is">Kýrílíska</name>
+ <name xml:lang="it">Supporto per il cirillico</name>
+ <name xml:lang="ja">シリル語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">키릴 ë¬¸ìž ì§€ì›</name>
+ <name xml:lang="no">Støtte for kyrillisk</name>
+ <name xml:lang="pt">Suporte a Cirilico</name>
+ <name xml:lang="ru">Поддержка кириллицы</name>
+ <name xml:lang="sv">Stöd för kyrilliskt alfabet</name>
+ <name xml:lang="zh_CN">西里尔语支æŒ</name>
+ <name xml:lang="zh_TW">斯拉夫語支æ´</name>
+ <packagelist>
+ <packagereq type="mandatory">XFree86-cyrillic-fonts</packagereq>
+ <packagereq type="mandatory">fonts-KOI8-R</packagereq>
+ <packagereq type="mandatory">fonts-KOI8-R-100dpi</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>british-support</id>
+ <uservisible>false</uservisible>
+ <name>British Support</name>
+ <name xml:lang="cs">Podpora pro angliÄtinu (Velká Británie)</name>
+ <name xml:lang="da">Understøttelse for britisk engelsk</name>
+ <name xml:lang="de">Support für Englisch (Großbritannien)</name>
+ <name xml:lang="es">Soporte para el inglés británico</name>
+ <name xml:lang="fr">Support anglais</name>
+ <name xml:lang="is">Breska</name>
+ <name xml:lang="it">Supporto per l&apos;inglese britannico</name>
+ <name xml:lang="ja">英国語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ì˜êµ­ì‹ ì˜ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for britisk</name>
+ <name xml:lang="pt">Suporte a Inglês Britânico</name>
+ <name xml:lang="ru">Поддержка британÑкого английÑкого</name>
+ <name xml:lang="sv">Stöd för brittisk engelska</name>
+ <name xml:lang="zh_CN">英å¼è‹±è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">英å¼è‹±æ–‡æ”¯æ´</name>
+ <langonly>en_GB</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-en-gb</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-British</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>canadian-support</id>
+ <uservisible>false</uservisible>
+ <name>Canadian Support</name>
+ <name xml:lang="cs">Podpora pro angliÄtinu (Kanada)</name>
+ <name xml:lang="da">Understøttelse for canadisk engelsk</name>
+ <name xml:lang="de">Support für Englisch (Kanada)</name>
+ <name xml:lang="es">Soporte para el francés de Canadá</name>
+ <name xml:lang="fr">Support canadien</name>
+ <name xml:lang="is">Canadíska</name>
+ <name xml:lang="it">Supporto per il canadese</name>
+ <name xml:lang="ja">カナダ英語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ìºë‚˜ë‹¤ì‹ ì˜ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for kanadisk</name>
+ <name xml:lang="pt">Suporte a Canadiano</name>
+ <name xml:lang="ru">Поддержка канадÑкого английÑкого</name>
+ <name xml:lang="sv">Stöd för kanadensisk engelska</name>
+ <name xml:lang="zh_CN">加拿大å¼è‹±è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">加拿大英文支æ´</name>
+ <langonly>en_CA</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-en-ca</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>catalan-support</id>
+ <uservisible>false</uservisible>
+ <name>Catalan Support</name>
+ <name xml:lang="cs">Podpora pro katalánštinu</name>
+ <name xml:lang="da">Understøttelse for katalansk</name>
+ <name xml:lang="de">Support für Spanisch (Katalanien)</name>
+ <name xml:lang="es">Soporte para el catalán</name>
+ <name xml:lang="fr">Support catalan</name>
+ <name xml:lang="is">Catalónska</name>
+ <name xml:lang="it">Supporto per il catalano</name>
+ <name xml:lang="ja">カタルーニャ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">카탈로니아어 지ì›</name>
+ <name xml:lang="no">Støtte for katalansk</name>
+ <name xml:lang="pt">Suporte a Catalão</name>
+ <name xml:lang="ru">Поддержка каталонÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för katalanska</name>
+ <name xml:lang="zh_CN">加泰隆语支æŒ</name>
+ <name xml:lang="zh_TW">加泰隆語支æ´</name>
+ <langonly>ca</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-ca</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Catalan</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>brazilian-support</id>
+ <uservisible>false</uservisible>
+ <name>Brazilian Support</name>
+ <name xml:lang="cs">Podpora pro portugalštinu (Brazílie)</name>
+ <name xml:lang="da">Understøttelse for brasiliansk portugisisk</name>
+ <name xml:lang="de">Support für Portugiesisch (Brasilien)</name>
+ <name xml:lang="es">Soporte para el brasileño</name>
+ <name xml:lang="fr">Support brésilien</name>
+ <name xml:lang="is">Brasílíska</name>
+ <name xml:lang="it">Supporto per il brasiliano</name>
+ <name xml:lang="ja">ブラジル語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">브ë¼ì§ˆì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for portugisisk(Brasil)</name>
+ <name xml:lang="pt">Suporte a Português do Brasil</name>
+ <name xml:lang="ru">Поддержка бразильÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för brasiliansk portugisiska</name>
+ <name xml:lang="zh_CN">巴西语支æŒ</name>
+ <name xml:lang="zh_TW">巴西å¼è‘¡è„牙語支æ´</name>
+ <langonly>pt_BR</langonly>
+ <grouplist>
+ <groupreq>portuguese-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">aspell-pt_BR</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Brazil</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>czech-support</id>
+ <uservisible>false</uservisible>
+ <name>Czech Support</name>
+ <name xml:lang="cs">Podpora pro ÄeÅ¡tinu</name>
+ <name xml:lang="da">Understøttelse for tjekkisk</name>
+ <name xml:lang="de">Support für Tschechisch</name>
+ <name xml:lang="es">Soporte para el checo</name>
+ <name xml:lang="fr">Support tchèque</name>
+ <name xml:lang="is">Tjékkneska</name>
+ <name xml:lang="it">Supporto per il ceco</name>
+ <name xml:lang="ja">ãƒã‚§ã‚³èªžã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">체코어 지ì›</name>
+ <name xml:lang="no">Støtte for tsjekkisk</name>
+ <name xml:lang="pt">Suporte a Checo</name>
+ <name xml:lang="ru">Поддержка чешÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för tjeckiska</name>
+ <name xml:lang="zh_CN">æ·å…‹è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">æ·å…‹èªžæ”¯æ´</name>
+ <langonly>cz</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Czech</packagereq>
+ <packagereq type="mandatory">man-pages-cs</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>danish-support</id>
+ <uservisible>false</uservisible>
+ <name>Danish Support</name>
+ <name xml:lang="cs">Podpora pro dánštinu</name>
+ <name xml:lang="da">Understøttelse for dansk</name>
+ <name xml:lang="de">Support für Dänisch</name>
+ <name xml:lang="es">Soporte para el danés</name>
+ <name xml:lang="fr">Support danois</name>
+ <name xml:lang="is">Danska</name>
+ <name xml:lang="it">Supporto per il danese</name>
+ <name xml:lang="ja">デンマーク語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ë´ë§ˆí¬ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for dansk</name>
+ <name xml:lang="pt">Suporte a Dinamarquês</name>
+ <name xml:lang="ru">Поддержка датÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för danska</name>
+ <name xml:lang="zh_CN">丹麦语支æŒ</name>
+ <name xml:lang="zh_TW">丹麥語支æ´</name>
+ <langonly>da_DK</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-da</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Danish</packagereq>
+ <packagereq type="mandatory">man-pages-da</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>dutch-support</id>
+ <uservisible>false</uservisible>
+ <name>Dutch Support</name>
+ <name xml:lang="cs">Podpora holandštiny</name>
+ <name xml:lang="da">Understøttelse for hollandsk</name>
+ <name xml:lang="de">Support für Holländisch</name>
+ <name xml:lang="es">Soporte para el holandés</name>
+ <name xml:lang="fr">Support hollandais</name>
+ <name xml:lang="is">Hollenska</name>
+ <name xml:lang="it">Supporto per l&apos;olandese</name>
+ <name xml:lang="ja">オランダ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">네ë¸ëž€ë“œì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for nederlandsk</name>
+ <name xml:lang="pt">Suporte a Holandês</name>
+ <name xml:lang="ru">Поддержка датÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för nederländska</name>
+ <name xml:lang="zh_CN">è·å…°è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">è·è˜­èªžæ”¯æ´</name>
+ <langonly>nl</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-nl</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Dutch</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>estonian-support</id>
+ <uservisible>false</uservisible>
+ <name>Estonian Support</name>
+ <name xml:lang="cs">Podpora pro estonštinu</name>
+ <name xml:lang="da">Understøttelse for estisk</name>
+ <name xml:lang="de">Support für Estonisch</name>
+ <name xml:lang="es">Soporte para el estonio</name>
+ <name xml:lang="fr">Support estonien</name>
+ <name xml:lang="is">Eistneska</name>
+ <name xml:lang="it">Supporto per l&apos;estone</name>
+ <name xml:lang="ja">エストニア語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ì—스토니아어 지ì›</name>
+ <name xml:lang="no">Støtte for estlandsk</name>
+ <name xml:lang="pt">Suporte a Estónio</name>
+ <name xml:lang="ru">Поддержка ÑÑтонÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för estniska</name>
+ <name xml:lang="zh_CN">爱沙尼亚语支æŒ</name>
+ <name xml:lang="zh_TW">愛沙尼亞語支æ´</name>
+ <langonly>et_EE</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Estonian</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>finish-support</id>
+ <uservisible>false</uservisible>
+ <name>Finnish Support</name>
+ <name xml:lang="cs">Podpora pro finštinu</name>
+ <name xml:lang="da">Understøttelse for finsk</name>
+ <name xml:lang="de">Support für Finnisch</name>
+ <name xml:lang="es">Finalizar el soporte</name>
+ <name xml:lang="fr">Support finnois</name>
+ <name xml:lang="is">Finnska</name>
+ <name xml:lang="it">Supporto per il finlandese</name>
+ <name xml:lang="ja">フィンランド語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">핀란드어 지ì›</name>
+ <name xml:lang="no">Støtte for finsk</name>
+ <name xml:lang="pt">Suporte a Finlandês</name>
+ <name xml:lang="ru">Поддержка финÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för finska</name>
+ <name xml:lang="zh_CN">芬兰语支æŒ</name>
+ <name xml:lang="zh_TW">芬蘭語支æ´</name>
+ <langonly>fi_FI</langonly>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Finnish</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>german-support</id>
+ <uservisible>false</uservisible>
+ <name>German Support</name>
+ <name xml:lang="cs">Podpora pro nÄ›mÄinu</name>
+ <name xml:lang="da">Understøttelse for tysk</name>
+ <name xml:lang="de">Support für Deutsch</name>
+ <name xml:lang="es">Soporte para el alemán</name>
+ <name xml:lang="fr">Support allemand</name>
+ <name xml:lang="is">Þýska</name>
+ <name xml:lang="it">Supporto per il tedesco</name>
+ <name xml:lang="ja">ドイツ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ë…ì¼ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for tysk</name>
+ <name xml:lang="pt">Suporte a Alemão</name>
+ <name xml:lang="ru">Поддержка немецкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för tyska</name>
+ <name xml:lang="zh_CN">德语支æŒ</name>
+ <name xml:lang="zh_TW">德語支æ´</name>
+ <langonly>de_DE</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-de</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-German</packagereq>
+ <packagereq type="mandatory">man-pages-de</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>greek-support</id>
+ <uservisible>false</uservisible>
+ <name>Greek Support</name>
+ <name xml:lang="cs">Podpora pro Å™eÄtinu</name>
+ <name xml:lang="da">Understøttelse for græsk</name>
+ <name xml:lang="de">Support für Griechisch</name>
+ <name xml:lang="es">Soporte para el griego</name>
+ <name xml:lang="fr">Support grec</name>
+ <name xml:lang="is">Gríska</name>
+ <name xml:lang="it">Supporto per il greco</name>
+ <name xml:lang="ja">ギリシャ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">그리스어 지ì›</name>
+ <name xml:lang="no">Støtte for gresk</name>
+ <name xml:lang="pt">Suporte a Grego</name>
+ <name xml:lang="ru">Поддержка гречеÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för grekiska</name>
+ <name xml:lang="zh_CN">希腊语支æŒ</name>
+ <name xml:lang="zh_TW">希臘語支æ´</name>
+ <langonly>el_GR</langonly>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Greek</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>hebrew-support</id>
+ <uservisible>false</uservisible>
+ <name>Hebrew Support</name>
+ <name xml:lang="cs">Podpora pro hebrejštinu</name>
+ <name xml:lang="da">Understøttelse for hebraisk</name>
+ <name xml:lang="de">Support für Hebräisch</name>
+ <name xml:lang="es">Soporte para el hebreo</name>
+ <name xml:lang="fr">Support hébreu</name>
+ <name xml:lang="is">Hebreska</name>
+ <name xml:lang="it">Supporto per l&apos;ebraico</name>
+ <name xml:lang="ja">ヘブライ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">헤브루어 지ì›</name>
+ <name xml:lang="no">Støtte for hebraisk</name>
+ <name xml:lang="pt">Suporte a Hebreu</name>
+ <name xml:lang="ru">Поддержка Ñзыка иврит</name>
+ <name xml:lang="sv">Stöd för hebreiska</name>
+ <name xml:lang="zh_CN">希伯æ¥è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">希伯來語支æ´</name>
+ <langonly>he_IL</langonly>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Hebrew</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>hungarian-support</id>
+ <uservisible>false</uservisible>
+ <name>Hungarian Support</name>
+ <name xml:lang="cs">Podpora pro maÄarÅ¡tinu</name>
+ <name xml:lang="da">Understøttelse for ungarnsk</name>
+ <name xml:lang="de">Support für Ungarisch</name>
+ <name xml:lang="es">Soporte para el húngaro</name>
+ <name xml:lang="fr">Support hongrois</name>
+ <name xml:lang="is">Ungverska</name>
+ <name xml:lang="it">Supporto per l&apos;ungherese</name>
+ <name xml:lang="ja">ãƒãƒ³ã‚¬ãƒªãƒ¼èªžã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">í—가리아어 지ì›</name>
+ <name xml:lang="no">Støtte for ungarsk</name>
+ <name xml:lang="pt">Suporte a Hungaro</name>
+ <name xml:lang="ru">Поддержка венгерÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för ungerska</name>
+ <name xml:lang="zh_CN">匈牙利语支æŒ</name>
+ <name xml:lang="zh_TW">匈牙利語支æ´</name>
+ <langonly>hu_HU</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Hungarian</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>spanish-support</id>
+ <uservisible>false</uservisible>
+ <name>Spanish Support</name>
+ <name xml:lang="cs">Podpora pro španělštinu</name>
+ <name xml:lang="da">Understøttelse for spansk</name>
+ <name xml:lang="de">Support für Spanisch</name>
+ <name xml:lang="es">Soporte para el español</name>
+ <name xml:lang="fr">Support espagnol</name>
+ <name xml:lang="is">Spánska</name>
+ <name xml:lang="it">Supporto per lo spagnolo</name>
+ <name xml:lang="ja">スペイン語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">스페ì¸ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for spansk</name>
+ <name xml:lang="pt">Suporte a Espanhol</name>
+ <name xml:lang="ru">Поддержка иÑпанÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för spanska</name>
+ <name xml:lang="zh_CN">西ç­ç‰™è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">西ç­ç‰™èªžæ”¯æ´</name>
+ <langonly>es_ES</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-es</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Spanish</packagereq>
+ <packagereq type="mandatory">man-pages-es</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>french-support</id>
+ <uservisible>false</uservisible>
+ <name>French Support</name>
+ <name xml:lang="cs">Podpora pro francouzštinu</name>
+ <name xml:lang="da">Understøttelse for fransk</name>
+ <name xml:lang="de">Support für Französisch</name>
+ <name xml:lang="es">Soporte para el francés</name>
+ <name xml:lang="fr">Support français</name>
+ <name xml:lang="is">Franska</name>
+ <name xml:lang="it">Supporto per il francese</name>
+ <name xml:lang="ja">フランス語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">프랑스어 지ì›</name>
+ <name xml:lang="no">Støtte for fransk</name>
+ <name xml:lang="pt">Suporte a Francês</name>
+ <name xml:lang="ru">Поддержка французÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för franska</name>
+ <name xml:lang="zh_CN">法语支æŒ</name>
+ <name xml:lang="zh_TW">法語支æ´</name>
+ <langonly>fr_FR</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-fr</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-French</packagereq>
+ <packagereq type="mandatory">man-pages-fr</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>icelandic-support</id>
+ <uservisible>false</uservisible>
+ <name>Icelandic Support</name>
+ <name xml:lang="cs">Podpora pro islandštinu</name>
+ <name xml:lang="da">Understøttelse for islandsk</name>
+ <name xml:lang="de">Support für Isländisch</name>
+ <name xml:lang="es">Soporte para el islandés</name>
+ <name xml:lang="fr">Support islandais</name>
+ <name xml:lang="is">Ãslenska</name>
+ <name xml:lang="it">Supporto per l&apos;islandese</name>
+ <name xml:lang="ja">アイスランド語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ì•„ì´ìŠ¬ëž€ë“œì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for islandsk</name>
+ <name xml:lang="pt">Suporte a Islandês</name>
+ <name xml:lang="ru">Поддержка иÑландÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för isländska</name>
+ <name xml:lang="zh_CN">冰岛语支æŒ</name>
+ <name xml:lang="zh_TW">冰島語支æ´</name>
+ <langonly>is_IS</langonly>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Icelandic</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>italian-support</id>
+ <uservisible>false</uservisible>
+ <name>Italian Support</name>
+ <name xml:lang="cs">Podpora pro italštinu</name>
+ <name xml:lang="da">Understøttelse for italiensk</name>
+ <name xml:lang="de">Support für Italienisch</name>
+ <name xml:lang="es">Soporte para el italiano</name>
+ <name xml:lang="fr">Support italien</name>
+ <name xml:lang="is">Ãtalska</name>
+ <name xml:lang="it">Supporto per l&apos;italiano</name>
+ <name xml:lang="ja">イタリア語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ì´íƒˆë¦¬ì•„ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for italiensk</name>
+ <name xml:lang="pt">Suporte a Italiano</name>
+ <name xml:lang="ru">Поддержка итальÑнÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för italienska</name>
+ <name xml:lang="zh_CN">æ„大利语支æŒ</name>
+ <name xml:lang="zh_TW">義大利文支æ´</name>
+ <langonly>it_IT</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-it</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Italian</packagereq>
+ <packagereq type="mandatory">man-pages-it</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>korean-support</id>
+ <uservisible>false</uservisible>
+ <name>Korean Support</name>
+ <name xml:lang="cs">Podpora pro korejštinu</name>
+ <name xml:lang="da">Understøttelse for koreansk</name>
+ <name xml:lang="de">Support für Koreanisch</name>
+ <name xml:lang="es">Soporte para el coreano</name>
+ <name xml:lang="fr">Support coréen</name>
+ <name xml:lang="is">Kóreska</name>
+ <name xml:lang="it">Supporto per il coreano</name>
+ <name xml:lang="ja">韓国語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">한국어 지ì›</name>
+ <name xml:lang="no">Støtte for koreansk</name>
+ <name xml:lang="pt">Suporte a Coreano</name>
+ <name xml:lang="ru">Поддержка корейÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för koreanska</name>
+ <name xml:lang="zh_CN">韩文支æŒ</name>
+ <name xml:lang="zh_TW">韓文支æ´</name>
+ <langonly>ko_KR</langonly>
+ <packagelist>
+ <packagereq type="mandatory">nvi-m17n</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Korean</packagereq>
+ <packagereq type="mandatory">man-pages-ko</packagereq>
+ <packagereq type="mandatory">kWnn-devel</packagereq>
+ <packagereq type="mandatory">ami</packagereq>
+ <packagereq type="mandatory">kWnn</packagereq>
+ <packagereq type="mandatory">hanterm-xf</packagereq>
+ <packagereq type="mandatory">h2ps</packagereq>
+ <packagereq type="mandatory">nhpf</packagereq>
+ <packagereq type="mandatory">ttfonts-ko</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>norwegian-support</id>
+ <uservisible>false</uservisible>
+ <name>Norwegian Support</name>
+ <name xml:lang="cs">Podpora pro norštinu</name>
+ <name xml:lang="da">Understøttelse for norsk</name>
+ <name xml:lang="de">Support für Norwegisch</name>
+ <name xml:lang="es">Soporte para el noruego</name>
+ <name xml:lang="fr">Support norvégien</name>
+ <name xml:lang="is">Norska</name>
+ <name xml:lang="it">Supporto per il norvegese</name>
+ <name xml:lang="ja">ノルウェー語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">노르웨ì´ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for norsk</name>
+ <name xml:lang="pt">Suporte a Norueguês</name>
+ <name xml:lang="ru">Поддержка норвежÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för norska</name>
+ <name xml:lang="zh_CN">挪å¨æ”¯æŒ</name>
+ <name xml:lang="zh_TW">挪å¨èªžæ”¯æ´</name>
+ <langonly>no_NO</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-no</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Norwegian</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Norwegian-Nynorsk</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>polish-support</id>
+ <uservisible>false</uservisible>
+ <name>Polish Support</name>
+ <name xml:lang="cs">Podpora pro polštinu</name>
+ <name xml:lang="da">Understøttelse for polsk</name>
+ <name xml:lang="de">Support für Polnisch</name>
+ <name xml:lang="es">Soporte para el polaco</name>
+ <name xml:lang="fr">Support polonais</name>
+ <name xml:lang="is">Pólska</name>
+ <name xml:lang="it">Supporto per il polacco</name>
+ <name xml:lang="ja">ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªžã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">í´ëž€ë“œì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for polsk</name>
+ <name xml:lang="pt">Suporte a Polaco</name>
+ <name xml:lang="ru">Поддержка польÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för polska</name>
+ <name xml:lang="zh_CN">波兰语支æŒ</name>
+ <name xml:lang="zh_TW">波蘭語支æ´</name>
+ <langonly>pl_PL</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Polish</packagereq>
+ <packagereq type="mandatory">man-pages-pl</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>portuguese-support</id>
+ <uservisible>false</uservisible>
+ <name>Portuguese Support</name>
+ <name xml:lang="cs">Podpora pro portugalštinu</name>
+ <name xml:lang="da">Understøttelse for portugisisk</name>
+ <name xml:lang="de">Support für Portugiesisch</name>
+ <name xml:lang="es">Soporte para el portugués</name>
+ <name xml:lang="fr">Support portugais</name>
+ <name xml:lang="is">Portúgalska</name>
+ <name xml:lang="it">Supporto per il portoghese</name>
+ <name xml:lang="ja">ãƒãƒ«ãƒˆã‚¬ãƒ«èªžã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">í¬ë¥´íˆ¬ê°ˆì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for portugisisk</name>
+ <name xml:lang="pt">Suporte a Português</name>
+ <name xml:lang="ru">Поддержка португальÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för portugisiska</name>
+ <name xml:lang="zh_CN">è‘¡è„牙语支æŒ</name>
+ <name xml:lang="zh_TW">è‘¡è„牙語支æ´</name>
+ <langonly>pt</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-pt</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Portuguese</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>romanian-support</id>
+ <uservisible>false</uservisible>
+ <name>Romanian Support</name>
+ <name xml:lang="cs">Podpora pro rumunštinu</name>
+ <name xml:lang="da">Understøttelse for rumænsk</name>
+ <name xml:lang="de">Support für Rumänisch</name>
+ <name xml:lang="es">Soporte para el rumano</name>
+ <name xml:lang="fr">Support roumain</name>
+ <name xml:lang="is">Rómanska</name>
+ <name xml:lang="it">Supporto per il romeno</name>
+ <name xml:lang="ja">ルーマニア語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">루마니아어 지ì›</name>
+ <name xml:lang="no">Støtte for rumensk</name>
+ <name xml:lang="pt">Suporte a Romeno</name>
+ <name xml:lang="ru">Поддержка румынÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för rumänska</name>
+ <name xml:lang="zh_CN">罗马尼亚语支æŒ</name>
+ <name xml:lang="zh_TW">羅馬尼亞語支æ´</name>
+ <langonly>ro_RO</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Romanian</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>russian-support</id>
+ <uservisible>false</uservisible>
+ <name>Russian Support</name>
+ <name xml:lang="cs">Podpora pro ruštinu</name>
+ <name xml:lang="da">Understøttelse for russisk</name>
+ <name xml:lang="de">Support für Russisch</name>
+ <name xml:lang="es">Soporte para el ruso</name>
+ <name xml:lang="fr">Support russe</name>
+ <name xml:lang="is">Rússnenska</name>
+ <name xml:lang="it">Supporto per il russo</name>
+ <name xml:lang="ja">ロシア語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">러시아어 지ì›</name>
+ <name xml:lang="no">Støtte for russisk</name>
+ <name xml:lang="pt">Suporte a Russo</name>
+ <name xml:lang="ru">Поддержка руÑÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för ryska</name>
+ <name xml:lang="zh_CN">俄语支æŒ</name>
+ <name xml:lang="zh_TW">俄語支æ´</name>
+ <langonly>ru_RU</langonly>
+ <grouplist>
+ <groupreq>cyrillic-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Russian</packagereq>
+ <packagereq type="mandatory">man-pages-ru</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>serbian-support</id>
+ <uservisible>false</uservisible>
+ <name>Serbian Support</name>
+ <name xml:lang="cs">Podpora srbštiny</name>
+ <name xml:lang="da">Understøttelse for serbisk</name>
+ <name xml:lang="de">Support für Serbisch</name>
+ <name xml:lang="es">Soporte para el serbio</name>
+ <name xml:lang="fr">Support serbe</name>
+ <name xml:lang="is">Serbneska</name>
+ <name xml:lang="it">Supporto per il serbo</name>
+ <name xml:lang="ja">シベリア語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">세르비아어 지ì›</name>
+ <name xml:lang="no">Støtte for serbisk</name>
+ <name xml:lang="pt">Suporte a Sérvio</name>
+ <name xml:lang="ru">Поддержка ÑербÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för serbiska</name>
+ <name xml:lang="zh_CN">塞尔维亚语支æŒ</name>
+ <name xml:lang="zh_TW">賽爾維亞語支æ´</name>
+ <langonly>sr_YU</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Serbian</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>slovak-support</id>
+ <uservisible>false</uservisible>
+ <name>Slovak Support</name>
+ <name xml:lang="cs">Podpora pro slovenštinu</name>
+ <name xml:lang="da">Understøttelse for slovakisk</name>
+ <name xml:lang="de">Support für Slowakisch</name>
+ <name xml:lang="es">Soporte para el eslovaco</name>
+ <name xml:lang="fr">Support slovaque</name>
+ <name xml:lang="is">Slóvak</name>
+ <name xml:lang="it">Supporto per lo slovacco</name>
+ <name xml:lang="ja">スロãƒã‚­ã‚¢èªžã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">슬로바키아어 지ì›</name>
+ <name xml:lang="no">Støtte for slovakisk</name>
+ <name xml:lang="pt">Suporte a Eslovaco</name>
+ <name xml:lang="ru">Поддержка Ñловацкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för slovakiska</name>
+ <name xml:lang="zh_CN">斯洛ä¼å…‹è¯­æ”¯æŒ</name>
+ <name xml:lang="zh_TW">斯洛ä¼å…‹èªžæ”¯æ´</name>
+ <langonly>sk_SK</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Slovak</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>slovenian-support</id>
+ <uservisible>false</uservisible>
+ <name>Slovenian Support</name>
+ <name xml:lang="cs">Podpora pro slovinštinu</name>
+ <name xml:lang="da">Understøttelse for slovensk</name>
+ <name xml:lang="de">Support für Slowenisch</name>
+ <name xml:lang="es">Soporte para el eslovenio</name>
+ <name xml:lang="fr">Support slovène</name>
+ <name xml:lang="is">Slóvnenska</name>
+ <name xml:lang="it">Supporto per lo sloveno</name>
+ <name xml:lang="ja">スロベニア語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">슬로베ì´ì•„ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for slovensk</name>
+ <name xml:lang="pt">Suporte a Eslovénio</name>
+ <name xml:lang="ru">Поддержка ÑловенÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för slovenska</name>
+ <name xml:lang="zh_CN">斯洛文尼亚语支æŒ</name>
+ <name xml:lang="zh_TW">斯洛法尼亞語支æ´</name>
+ <langonly>sl_SI</langonly>
+ <grouplist>
+ <groupreq>ISO8859-2-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Slovenian</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>swedish-support</id>
+ <uservisible>false</uservisible>
+ <name>Swedish Support</name>
+ <name xml:lang="cs">Podpora pro švédštinu</name>
+ <name xml:lang="da">Understøttelse for svensk</name>
+ <name xml:lang="de">Support für Schwedisch</name>
+ <name xml:lang="es">Soporte para el sueco</name>
+ <name xml:lang="fr">Support suédois</name>
+ <name xml:lang="is">Sænska</name>
+ <name xml:lang="it">Supporto per lo svedese</name>
+ <name xml:lang="ja">スウェデーン語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">스웨ë´ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for svensk</name>
+ <name xml:lang="pt">Suporte a Sueco</name>
+ <name xml:lang="ru">Поддержка шведÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för svenska</name>
+ <name xml:lang="zh_CN">瑞典语支æŒ</name>
+ <name xml:lang="zh_TW">瑞典語支æ´</name>
+ <langonly>sv_SE</langonly>
+ <packagelist>
+ <packagereq type="mandatory">aspell-sv</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Swedish</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>turkish-support</id>
+ <uservisible>false</uservisible>
+ <name>Turkish Support</name>
+ <name xml:lang="cs">Podpora pro tureÄtinu</name>
+ <name xml:lang="da">Understøttelse for tyrkisk</name>
+ <name xml:lang="de">Support für Türkisch</name>
+ <name xml:lang="es">Soporte para el turco</name>
+ <name xml:lang="fr">Support turc</name>
+ <name xml:lang="is">Tyrkneska</name>
+ <name xml:lang="it">Supporto per il turco</name>
+ <name xml:lang="ja">トルコ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">터키어 지ì›</name>
+ <name xml:lang="no">Støtte for Tyrkisk</name>
+ <name xml:lang="pt">Suporte a Turco</name>
+ <name xml:lang="ru">Поддержка турецкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för turkiska</name>
+ <name xml:lang="zh_CN">土耳其语支æŒ</name>
+ <name xml:lang="zh_TW">土耳其語支æ´</name>
+ <langonly>tr_TR</langonly>
+ <grouplist>
+ <groupreq>ISO8859-9-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Turkish</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>ukrainian-support</id>
+ <uservisible>false</uservisible>
+ <name>Ukrainian Support</name>
+ <name xml:lang="cs">Podpora pro ukrajinštinu</name>
+ <name xml:lang="da">Understøttelse for ukrainsk</name>
+ <name xml:lang="de">Support für Ukrainisch</name>
+ <name xml:lang="es">Soporte para el ucraniano </name>
+ <name xml:lang="fr">Support ukrainien</name>
+ <name xml:lang="is">Úkraínska</name>
+ <name xml:lang="it">Supporto per l&apos;ucraino</name>
+ <name xml:lang="ja">ウクライナ語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ìš°í¬ë¼ì´ë‚˜ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for ukrainsk</name>
+ <name xml:lang="pt">Suporte a Ucraniano</name>
+ <name xml:lang="ru">Поддержка украинÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för ukrainska</name>
+ <name xml:lang="zh_CN">乌克兰语支æŒ</name>
+ <name xml:lang="zh_TW">çƒå…‹è˜­èªžæ”¯æ´</name>
+ <langonly>uk_UA</langonly>
+ <grouplist>
+ <groupreq>cyrillic-support</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Ukrainian</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>chinese-support</id>
+ <uservisible>false</uservisible>
+ <name>Chinese Support</name>
+ <name xml:lang="cs">Podpora pro ÄínÅ¡tinu</name>
+ <name xml:lang="da">Understøttelse for kinesisk</name>
+ <name xml:lang="de">Support für Chinesisch</name>
+ <name xml:lang="es">Soporte para el chino </name>
+ <name xml:lang="fr">Support chinois</name>
+ <name xml:lang="is">Kínverska</name>
+ <name xml:lang="it">Supporto per il cinese</name>
+ <name xml:lang="ja">中国語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">중국어 지ì›</name>
+ <name xml:lang="no">Støtte for kinesisk</name>
+ <name xml:lang="pt">Suporte a Chinês</name>
+ <name xml:lang="ru">Поддержка китайÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för kinesiska</name>
+ <name xml:lang="zh_CN">中文支æŒ</name>
+ <name xml:lang="zh_TW">中文支æ´</name>
+ <langonly>zh</langonly>
+ <packagelist>
+ <packagereq type="mandatory">nvi-m17n</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Chinese</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Chinese-Big5</packagereq>
+ <packagereq type="mandatory">man-pages-ko</packagereq>
+ <packagereq type="mandatory">cWnn-devel</packagereq>
+ <packagereq type="mandatory">libtabe-devel</packagereq>
+ <packagereq type="mandatory">cWnn</packagereq>
+ <packagereq type="mandatory">miniChinput</packagereq>
+ <packagereq type="mandatory">stardict</packagereq>
+ <packagereq type="mandatory">tWnn</packagereq>
+ <packagereq type="mandatory">ttfonts-zh_TW</packagereq>
+ <packagereq type="mandatory">ttfonts-zh_CN</packagereq>
+ <packagereq type="mandatory">taipeifonts</packagereq>
+ <packagereq type="mandatory">xcin</packagereq>
+ <packagereq type="mandatory">bg5ps</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>japanese-support</id>
+ <uservisible>false</uservisible>
+ <name>Japanese Support</name>
+ <name xml:lang="cs">Podpora pro japonštinu</name>
+ <name xml:lang="da">Understøttelse for japansk</name>
+ <name xml:lang="de">Support für Japanisch</name>
+ <name xml:lang="es">Soporte para el japonés</name>
+ <name xml:lang="fr">Support japonais</name>
+ <name xml:lang="is">Japanska</name>
+ <name xml:lang="it">Supporto per il giapponese</name>
+ <name xml:lang="ja">日本語ã®ã‚µãƒãƒ¼ãƒˆ</name>
+ <name xml:lang="ko">ì¼ë³¸ì–´ 지ì›</name>
+ <name xml:lang="no">Støtte for japansk</name>
+ <name xml:lang="pt">Suporte a Japonês</name>
+ <name xml:lang="ru">Поддержка ÑпонÑкого Ñзыка</name>
+ <name xml:lang="sv">Stöd för japanska</name>
+ <name xml:lang="zh_CN">日语支æŒ</name>
+ <name xml:lang="zh_TW">日文支æ´</name>
+ <langonly>ja_JP</langonly>
+ <packagelist>
+ <packagereq type="mandatory">Canna</packagereq>
+ <packagereq type="mandatory">jcode.pl</packagereq>
+ <packagereq type="mandatory">kakasi-dict</packagereq>
+ <packagereq type="mandatory">kcc</packagereq>
+ <packagereq type="mandatory">kon2</packagereq>
+ <packagereq type="mandatory">kon2-fonts</packagereq>
+ <packagereq type="mandatory">lv</packagereq>
+ <packagereq type="mandatory">nvi-m17n</packagereq>
+ <packagereq type="mandatory">nvi-m17n-canna</packagereq>
+ <packagereq type="mandatory">perl-NKF</packagereq>
+ <packagereq type="mandatory">perl-Text-Kakasi</packagereq>
+ <packagereq type="mandatory">nkf</packagereq>
+ <packagereq type="mandatory">ttfonts-ja</packagereq>
+ <packagereq type="mandatory">watanabe-vf</packagereq>
+ <packagereq type="optional" requires="kdelibs">kde-i18n-Japanese</packagereq>
+ <packagereq type="mandatory">fonts-ja</packagereq>
+ <packagereq type="mandatory">jisksp14</packagereq>
+ <packagereq type="mandatory">jisksp16-1990</packagereq>
+ <packagereq type="mandatory">FreeWnn</packagereq>
+ <packagereq type="mandatory">kappa20</packagereq>
+ <packagereq type="mandatory">kinput2-canna-wnn6</packagereq>
+ <packagereq type="mandatory">knm_new</packagereq>
+ <packagereq type="mandatory">kterm</packagereq>
+ <packagereq type="mandatory">skkdic</packagereq>
+ <packagereq type="mandatory">skkinput</packagereq>
+ <packagereq type="mandatory">man-pages-ja</packagereq>
+ <packagereq type="mandatory">kakasi-devel</packagereq>
+ <packagereq type="mandatory">Wnn6-SDK-devel</packagereq>
+ <packagereq type="mandatory">namazu-devel</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>development-tools</id>
+ <name>Development Tools</name>
+ <name xml:lang="cs">Vývojové nástroje</name>
+ <name xml:lang="da">Udviklingsværktøjer</name>
+ <name xml:lang="de">Entwicklungstools</name>
+ <name xml:lang="es">Herramientas de desarrollo</name>
+ <name xml:lang="fr">Outils de développement</name>
+ <name xml:lang="is">Þróunartól</name>
+ <name xml:lang="it">Strumenti di sviluppo</name>
+ <name xml:lang="ja">開発ツール</name>
+ <name xml:lang="ko">개발용 ë„구</name>
+ <name xml:lang="no">Utviklingsverktøy</name>
+ <name xml:lang="pt">Ferramentas de Desenvolvimento</name>
+ <name xml:lang="ru">СредÑтва разработки</name>
+ <name xml:lang="sv">Utvecklingsverktyg</name>
+ <name xml:lang="zh_CN">å¼€å‘工具</name>
+ <name xml:lang="zh_TW">開發工具</name>
+ <description>These tools include core development tools such as automake, gcc, perl, python, and debuggers.</description>
+ <description xml:lang="cs">Tyto nástroje zahrnují základní vývojové nástroje jako automake, gcc, perl, python a ladící nástroje.</description>
+ <description xml:lang="da">Disse værktøjer inkluderer basale udviklingsværktøjer som fx automake, gcc, perl, python og fejlsøgningsværktøjer.</description>
+ <description xml:lang="de">Zu diesen Tools gehören grundlegende Entwicklungstools wie automake, gcc, perl, python und debuggers.</description>
+ <description xml:lang="es">Estas herramientas incluyen herramientas de desarrollo de núcleo como por ejemplo automake, gcc, perl, python y depuradores.</description>
+ <description xml:lang="fr">Ces outils comprennent des outils de développement mémoire comme automake, gcc, perl, python, ainsi que des débogueurs.</description>
+ <description xml:lang="is">Þessi tól eru meðal annars automake, gcc, perl, python og aflúsunartól.</description>
+ <description xml:lang="it">Questi strumenti includono i principali tool di sviluppo tra cui automake, gcc, perl, python, e i debugger.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ„ールã«ã¯ã€automake, gcc, perl, python, åŠã³ãƒ‡ãƒãƒƒã‚¬ãªã©ã®ã‚³ã‚¢é–‹ç™ºãƒ„ール㌠å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ ë„구ì—는 automake, gcc, perl, pythonê³¼ 디버거와 ê°™ì€ í•µì‹¬ 개발용 ë„구가 í¬í•¨ë˜ì–´ 있습니다.</description>
+ <description xml:lang="no">Disse verktøyene inkluderer utviklingsverktøy som automake, gcc, perl, python og avlusere.</description>
+ <description xml:lang="pt">Estas ferramentas incluem as ferramentas básicas de desenvolvimento como o automake, o gcc, o perl, o python e os depuradores.</description>
+ <description xml:lang="ru">Эти ÑредÑтва включают оÑновные ÑредÑтва разработки, такие как automake, gcc, perl, python и отладчики.</description>
+ <description xml:lang="sv">Dessa verktyg inkluderar kärnutvecklingsverktyg som exempelvis automake, gcc, perl, python och felsökningsverktyg.</description>
+ <description xml:lang="zh_CN">这些工具包括 automakeã€gccã€perlã€python 和调试器之类的核心开å‘工具。</description>
+ <description xml:lang="zh_TW">這些工具包括主è¦çš„開發工具,例如 automake, gcc, perl, python ä»¥åŠ debuggers。</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>development-libs</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="optional">ElectricFence</packagereq>
+ <packagereq type="mandatory">autoconf</packagereq>
+ <packagereq type="default">automake14</packagereq>
+ <packagereq type="default">automake15</packagereq>
+ <packagereq type="mandatory">automake</packagereq>
+ <packagereq type="mandatory">binutils</packagereq>
+ <packagereq type="mandatory">bison</packagereq>
+ <packagereq type="mandatory">byacc</packagereq>
+ <packagereq type="mandatory">cdecl</packagereq>
+ <packagereq type="optional">cproto</packagereq>
+ <packagereq type="default">cvs</packagereq>
+ <packagereq type="optional">ddd</packagereq>
+ <packagereq type="mandatory">dev86</packagereq>
+ <packagereq type="default">diffstat</packagereq>
+ <packagereq type="default">doxygen</packagereq>
+ <packagereq type="optional">dmalloc</packagereq>
+ <packagereq type="optional">expect</packagereq>
+ <packagereq type="mandatory">flex</packagereq>
+ <packagereq type="mandatory">gcc</packagereq>
+ <packagereq type="mandatory">gcc-c++</packagereq>
+ <packagereq type="default">gcc-g77</packagereq>
+ <packagereq type="default">gcc-gnat</packagereq>
+ <packagereq type="default">gcc-java</packagereq>
+ <packagereq type="optional">gcc-objc</packagereq>
+ <packagereq type="mandatory">gdb</packagereq>
+ <packagereq type="mandatory">gettext</packagereq>
+ <packagereq type="default">indent</packagereq>
+ <packagereq type="mandatory">libtool</packagereq>
+ <packagereq type="default">ltrace</packagereq>
+ <packagereq type="mandatory">make</packagereq>
+ <packagereq type="default">memprof</packagereq>
+ <packagereq type="optional">nasm</packagereq>
+ <packagereq type="optional">njamd</packagereq>
+ <packagereq type="default">patchutils</packagereq>
+ <packagereq type="mandatory">perl-CPAN</packagereq>
+ <packagereq type="mandatory">pkgconfig</packagereq>
+ <packagereq type="optional">pmake</packagereq>
+ <packagereq type="optional">pstack</packagereq>
+ <packagereq type="mandatory">python-devel</packagereq>
+ <packagereq type="default">rcs</packagereq>
+ <packagereq type="mandatory">rpm-build</packagereq>
+ <packagereq type="mandatory">redhat-rpm-config</packagereq>
+ <packagereq type="default">splint</packagereq>
+ <packagereq type="mandatory">strace</packagereq>
+ <packagereq type="mandatory">texinfo</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>development-libs</id>
+ <name>Development Libraries</name>
+ <name xml:lang="cs">Knihovny pro vývoj</name>
+ <name xml:lang="da">Udviklingsbiblioteker</name>
+ <name xml:lang="de">Entwicklungsbibliotheken</name>
+ <name xml:lang="es">Librerías de desarrollo</name>
+ <name xml:lang="fr">Bibliothèques de développement</name>
+ <name xml:lang="is">Þróunaraðgerðasöfn</name>
+ <name xml:lang="it">Librerie di sviluppo</name>
+ <name xml:lang="ja">開発ライブラリ</name>
+ <name xml:lang="ko">개발용 ë¼ì´ë¸ŒëŸ¬ë¦¬</name>
+ <name xml:lang="no">Utviklingsbibliotek</name>
+ <name xml:lang="pt">Bibliotecas de Desenvolvimento</name>
+ <name xml:lang="ru">Библиотеки Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸</name>
+ <name xml:lang="sv">Utvecklingsbibliotek</name>
+ <name xml:lang="zh_CN">å¼€å‘库</name>
+ <name xml:lang="zh_TW">開發函å¼åº«</name>
+ <description>The packages in this group are core libraries needed to develop applications.</description>
+ <description xml:lang="cs">BalíÄky v této skupinÄ› jsou základní knihovny potÅ™ebné pro vývoj aplikací.</description>
+ <description xml:lang="da">Pakkerne i denne gruppe er basale biblioteker som behøves til udvikling af program.</description>
+ <description xml:lang="de">Bei den Paketen dieser Gruppe handelt es sich um grundlegende Bibliotheken für die Entwicklung von Anwendungen.</description>
+ <description xml:lang="es">Los paquetes de este grupo son librerías de núcleo necesarias para desarrollar aplicaciones.</description>
+ <description xml:lang="fr">Les paquetages de ce groupe sont des bibliothèques de mémoire nécessaires au développement d&apos;applications.</description>
+ <description xml:lang="is">Pakkarnir í þessum hóp eru grunnaðgerðasöfnin sem þarf til að þróa hugbúnað.</description>
+ <description xml:lang="it">I pacchetti di questo gruppo sono le principali librerie di sviluppo delle applicazioni.</description>
+ <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‘ッケージã¯ã‚¢ãƒ—リケーションã®é–‹ç™ºã«å¿…è¦ãªã‚³ã‚¢ãƒ©ã‚¤ãƒ–ラリã§ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ ê·¸ë£¹ì€ ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ê°œë°œí•˜ëŠ”ë° í•„ìš”í•œ 핵심 ë¼ì´ë¸ŒëŸ¬ë¦¬ìž…니다.</description>
+ <description xml:lang="no">Pakkene i denne gruppen er basis-biblioteker for bruk ved programutvikling.</description>
+ <description xml:lang="pt">Os pacotes neste grupo contém bibliotecas de base necessárias para desenvolver aplicações.</description>
+ <description xml:lang="ru">Эта группа Ñодержит библиотеки необходимые Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ приложений.</description>
+ <description xml:lang="sv">Paketen i denna grupp är kärnbibliotek som behövs för utveckling av program.</description>
+ <description xml:lang="zh_CN">该组中的软件包是开å‘应用程åºæ‰€éœ€çš„核心库。</description>
+ <description xml:lang="zh_TW">這個群組中的套件是用來開發應用程å¼æ‰€éœ€çš„主è¦å‡½å¼åº«ã€‚</description>
+ <uservisible>false</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">curl-devel</packagereq>
+ <packagereq type="mandatory">cyrus-sasl-devel</packagereq>
+ <packagereq type="mandatory">db4-devel</packagereq>
+ <packagereq type="mandatory">db4-utils</packagereq>
+ <packagereq type="mandatory">dialog</packagereq>
+ <packagereq type="mandatory">expat-devel</packagereq>
+ <packagereq type="mandatory">gdbm-devel</packagereq>
+ <packagereq type="mandatory">gmp-devel</packagereq>
+ <packagereq type="mandatory">gpm-devel</packagereq>
+ <packagereq type="mandatory">hesiod-devel</packagereq>
+ <packagereq type="mandatory">krb5-devel</packagereq>
+ <packagereq type="mandatory">krbafs-devel</packagereq>
+ <packagereq type="mandatory">kudzu-devel</packagereq>
+ <packagereq type="mandatory">libcap-devel</packagereq>
+ <packagereq type="mandatory">libtermcap-devel</packagereq>
+ <packagereq type="mandatory">libusb-devel</packagereq>
+ <packagereq type="mandatory">libuser-devel</packagereq>
+ <packagereq type="mandatory">libxml-devel</packagereq>
+ <packagereq type="mandatory">libxml2-devel</packagereq>
+ <packagereq type="mandatory">lockdev-devel</packagereq>
+ <packagereq type="mandatory">modutils-devel</packagereq>
+ <packagereq type="mandatory">ncurses-devel</packagereq>
+ <packagereq type="mandatory">newt-devel</packagereq>
+ <packagereq type="mandatory">openldap-devel</packagereq>
+ <packagereq type="mandatory">openssl-devel</packagereq>
+ <packagereq type="mandatory">pam-devel</packagereq>
+ <packagereq type="mandatory">pciutils-devel</packagereq>
+ <packagereq type="mandatory">readline-devel</packagereq>
+ <packagereq type="mandatory">rpm-devel</packagereq>
+ <packagereq type="mandatory">slang-devel</packagereq>
+ <packagereq type="mandatory">swig</packagereq>
+ <packagereq type="mandatory">zlib-devel</packagereq>
+ <packagereq type="default">libogg-devel</packagereq>
+ <packagereq type="default">libvorbis-devel</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>kernel-development</id>
+ <name>Kernel Development</name>
+ <name xml:lang="cs">Vývoj jádra</name>
+ <name xml:lang="da">Kerneudvikling</name>
+ <name xml:lang="de">Kernel-Entwicklung</name>
+ <name xml:lang="es">Desarrollo del kernel</name>
+ <name xml:lang="fr">Développement du noyau</name>
+ <name xml:lang="is">Kjarnaþróun</name>
+ <name xml:lang="it">Sviluppo del kernel</name>
+ <name xml:lang="ja">カーãƒãƒ«é–‹ç™º</name>
+ <name xml:lang="ko">ì»¤ë„ ê°œë°œ</name>
+ <name xml:lang="no">Kjerneutvikling</name>
+ <name xml:lang="pt">Desenvolvimento do Kernel</name>
+ <name xml:lang="ru">СредÑтва Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñдра</name>
+ <name xml:lang="sv">Kärnutveckling</name>
+ <name xml:lang="zh_CN">内核开å‘</name>
+ <name xml:lang="zh_TW">核心開發</name>
+ <description>Install these packages to recompile the kernel.</description>
+ <description xml:lang="cs">Tyto balíÄky nainstalujte pro rekompilaci jádra.</description>
+ <description xml:lang="da">Installér disse pakker for at oversætte om kernen.</description>
+ <description xml:lang="de">Installieren Sie diese Pakete, wenn Sie selber den Kernel übersetzen möchten.</description>
+ <description xml:lang="is">Settu þessa pakka inn ef þú vilt endurþýða kjarnann.</description>
+ <description xml:lang="ja">カーãƒãƒ«ã‚’å†ã‚³ãƒ³ãƒ‘イルã™ã‚‹ç‚ºã«ã“れらã®ãƒ‘ッケージをインストールã—ã¾ã™ã€‚</description>
+ <description xml:lang="ko">커ë„ì„ ìž¬ì»´íŒŒì¼í•˜ì‹œë ¤ë©´ ì´ íŒ¨í‚¤ì§€ë¥¼ 설치하십시오.</description>
+ <description xml:lang="no">Installer disse pakkene for å rekompilere kjernen.</description>
+ <description xml:lang="pt">Instale estes pacotes para recompilar o núcleo.</description>
+ <description xml:lang="ru">УÑтановите Ñти пакеты Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñции Ñдра ÑиÑтемы.</description>
+ <description xml:lang="sv">Installera dessa paket för att kompilera om kärnan.</description>
+ <description xml:lang="zh_CN">安装这些软件包æ¥é‡æ–°ç¼–译内核。</description>
+ <description xml:lang="zh_TW">請安è£é€™äº›å¥—件以é‡æ–°ç·¨è­¯æ ¸å¿ƒã€‚</description>
+ <uservisible>true</uservisible>
+ <grouplist>
+ <groupreq>development-tools</groupreq>
+ </grouplist>
+ <packagelist>
+ <packagereq type="mandatory">kernel-source</packagereq>
+ <packagereq type="mandatory">libattr-devel</packagereq>
+ <packagereq type="mandatory">libacl-devel</packagereq>
+ <packagereq type="default">tk</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>legacy-software-development</id>
+ <name>Legacy Software Development</name>
+ <name xml:lang="cs">Podpora pro vývoj zděděného software</name>
+ <name xml:lang="da">Udvikling af ældre programmel</name>
+ <name xml:lang="de">Legacy-Software Entwicklung</name>
+ <name xml:lang="es">Desarrollo del software de legado</name>
+ <name xml:lang="fr">Développement du logiciel hérité</name>
+ <name xml:lang="is">Þróunartól fyrir gömul forrit</name>
+ <name xml:lang="it">Sviluppo del legacy software</name>
+ <name xml:lang="ja">レガシーソフトウェアーã®é–‹ç™º</name>
+ <name xml:lang="ko">레거시 소프트웨어 개발</name>
+ <name xml:lang="no">Programvareutvikling for eldre systemer.</name>
+ <name xml:lang="pt">Desenvolvimento de Software Legado</name>
+ <name xml:lang="ru">СредÑтва Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ уÑтаревших приложений</name>
+ <name xml:lang="sv">Utveckling av äldre programvara</name>
+ <name xml:lang="zh_CN">原有的软件开å‘</name>
+ <name xml:lang="zh_TW">舊å¼è»Ÿé«”開發</name>
+ <uservisible>false</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">compat-gcc</packagereq>
+ <packagereq type="mandatory">compat-gcc-c++</packagereq>
+ <packagereq type="mandatory">compat-gcc-g77</packagereq>
+ <packagereq type="mandatory">compat-libstdc++</packagereq>
+ <packagereq type="mandatory">compat-libstdc++-devel</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>x-software-development</id>
+ <name>X Software Development</name>
+ <name xml:lang="cs">Vývoj software pro X</name>
+ <name xml:lang="da">X-programmeludvikling</name>
+ <name xml:lang="de">X Softwareentwicklung</name>
+ <name xml:lang="es">Desarrollo del software X</name>
+ <name xml:lang="fr">Développement du logiciel X</name>
+ <name xml:lang="is">Hugbúnaðarþróun fyrir X gluggakerfið</name>
+ <name xml:lang="it">Sviluppo del software X</name>
+ <name xml:lang="ja">Xソフトウェア開発</name>
+ <name xml:lang="ko">X 소프트웨어 개발</name>
+ <name xml:lang="no">Programvareutvikling for X</name>
+ <name xml:lang="pt">Desenvolvimento de Software para X</name>
+ <name xml:lang="ru">Разработка ПО Ð´Ð»Ñ X</name>
+ <name xml:lang="sv">X-programvaruutveckling</name>
+ <name xml:lang="zh_CN">X 软件开å‘</name>
+ <name xml:lang="zh_TW">X 軟體開發</name>
+ <description>These packages allow you to develop applications for the X Window System.</description>
+ <description xml:lang="cs">Tyto balíÄky Vám umožní vyvíjet aplikace pro X Window System.</description>
+ <description xml:lang="da">Disse pakker lader dig udvikle programmer for vinduessystemet X.</description>
+ <description xml:lang="de">Mit diesen Paketen können Sie Anwendungen für das X Window System entwickeln.</description>
+ <description xml:lang="es">Estos paquetes le permiten desarrollar aplicaciones para el sistema X Window.</description>
+ <description xml:lang="fr">Ces paquetages vous permettent de développer les applications pour le système X Window.</description>
+ <description xml:lang="is">Þessir pakkar gera þér kleyft að þróa hugbúnað fyrir X gluggakerfið.</description>
+ <description xml:lang="it">Questi pacchetti consentono di sviluppare applicazioni per il sistema X Window.</description>
+ <description xml:lang="ja">ã“れらã®ãƒ‘ッケージã§X Window System用ã®ã‚¢ãƒ—リケーションを開発ã§ãã¾ã™ã€‚</description>
+ <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ëŠ” X 윈ë„ìš° 시스템ì—ì„œ ì‚¬ìš©ë  ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ê°œë°œí•  수 있게 í•´ì¤ë‹ˆë‹¤.</description>
+ <description xml:lang="no">Disse pakkene lar deg utvikle programmer for X.</description>
+ <description xml:lang="pt">Este pacotes permitem-lhe desenvolver aplicações para o X Window System.</description>
+ <description xml:lang="ru">Эти пакеты позволÑÑŽÑ‚ разрабатывать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ X Window System.</description>
+ <description xml:lang="sv">Dessa paket låter dig utveckla program för fönstersystemet X.</description>
+ <description xml:lang="zh_CN">这些软件包å…许您开å‘用于 X 窗å£ç³»ç»Ÿçš„应用程åºã€‚</description>
+ <description xml:lang="zh_TW">這些套件讓您å¯ä»¥ç‚º X 視窗系統開發應用程å¼ã€‚</description>
+ <uservisible>true</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">Glide3-devel</packagereq>
+ <packagereq type="mandatory">XFree86-devel</packagereq>
+ <packagereq type="mandatory">Xaw3d-devel</packagereq>
+ <packagereq type="mandatory">gd-devel</packagereq>
+ <packagereq type="default">lesstif-devel</packagereq>
+ <packagereq type="mandatory">libjpeg-devel</packagereq>
+ <packagereq type="mandatory">libtiff-devel</packagereq>
+ <packagereq type="mandatory">libpng-devel</packagereq>
+ <packagereq type="mandatory">libmng-devel</packagereq>
+ <packagereq type="mandatory">libungif-devel</packagereq>
+ <packagereq type="mandatory">freetype-devel</packagereq>
+ <packagereq type="mandatory">netpbm-devel</packagereq>
+ <packagereq type="default">libpng10-devel</packagereq>
+ <packagereq type="default">openmotif-devel</packagereq>
+ <packagereq type="default">SDL-devel</packagereq>
+ <packagereq type="default">SDL_image-devel</packagereq>
+ <packagereq type="default">SDL_mixer-devel</packagereq>
+ <packagereq type="default">SDL_net-devel</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>gnome-software-development</id>
+ <name>GNOME Software Development</name>
+ <name xml:lang="cs">Vývoj software pro GNOMOE</name>
+ <name xml:lang="da">Gnome-programmeludvikling</name>
+ <name xml:lang="de">GNOME Softwareentwicklung</name>
+ <name xml:lang="es">Desarrollo de software de GNOME</name>
+ <name xml:lang="fr">Développement de logiciel GNOME</name>
+ <name xml:lang="is">Hugbúnaðarþróun fyrir GNOME</name>
+ <name xml:lang="it">Sviluppo del software di GNOME</name>
+ <name xml:lang="ja">GNOME ソフトウェア開発</name>
+ <name xml:lang="ko">GNOME 소프트웨어 개발</name>
+ <name xml:lang="no">Programvareutvikling for GNOME</name>
+ <name xml:lang="pt">Desenvolvimento de Software GNOME</name>
+ <name xml:lang="ru">Разработка Ñ Ð¸Ñпользованием GNOME</name>
+ <name xml:lang="sv">GNOME-programvaruutveckling</name>
+ <name xml:lang="zh_CN">GNOME 软件开å‘</name>
+ <name xml:lang="zh_TW">GNOME 軟體開發</name>
+ <description>Install these packages in order to develop GTK+ and GNOME graphical applications.</description>
+ <description xml:lang="cs">Tyto balíÄky nainstalujte pro vývoj grafických aplikací pro GTK+ a GNOME.</description>
+ <description xml:lang="da">Installér disse pakker for at kunne udvikle grafiske programmer som bruger GTK+ og Gnome.</description>
+ <description xml:lang="de">Installieren Sie diese Pakete, um Applikationen für GTK+ und GNOME zu entwickeln.</description>
+ <description xml:lang="es">Instalar estos paquetes para desarrollar GTK+ y las aplicaciones gráficas de GNOME. </description>
+ <description xml:lang="fr">Installer ces paquetages pour développer les applications graphiques GTK+ et GNOME.</description>
+ <description xml:lang="is">Settu þessa pakka inn ef þú vilt þróa GTK+ og GNOME forrit.</description>
+ <description xml:lang="it">Installare questi pacchetti per sviluppare le applicazioni grafiche GTK+ e GNOME.</description>
+ <description xml:lang="ja">GTK+ 㨠GNOMEã®ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ã‚¢ãƒ—リケーションを開発ã™ã‚‹ç‚ºã«ã¯ã“れら㮠パッケージをインストールã—ã¦ä¸‹ã•ã„。</description>
+ <description xml:lang="ko">GTK+와 GNOME 그래픽 ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ê°œë°œí•˜ì‹œë ¤ë©´ ì´ íŒ¨í‚¤ì§€ë¥¼ 설치하십시오.</description>
+ <description xml:lang="no">Installer disse pakkene for utvikling av GTK+- og GNOME-programmer.</description>
+ <description xml:lang="pt">Instale estes pacotes se quiser desenvolver aplicações gráficas GTK+ ou GNOME.</description>
+ <description xml:lang="ru">УÑтановите Ñти пакеты Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ графичеÑких приложений GTK+ и GNOME.</description>
+ <description xml:lang="sv">Installera dessa paket för att kunna utveckla grafiska program som använder GTK+ och GNOME.</description>
+ <description xml:lang="zh_CN">安装这些软件包æ¥å¼€å‘ GTK+ å’Œ GNOME 图形化应用程åºã€‚</description>
+ <description xml:lang="zh_TW">請安è£é€™äº›å¥—件,用來開發 GTK+ 與 GNOME 的圖形應用程å¼ã€‚</description>
+ <uservisible>true</uservisible>
+ <packagelist>
+ <packagereq type="default">bug-buddy</packagereq>
+ <packagereq type="default">pygtk2-devel</packagereq>
+ <packagereq type="mandatory">glib-devel</packagereq>
+ <packagereq type="mandatory">glib2-devel</packagereq>
+ <packagereq type="mandatory">gtk+-devel</packagereq>
+ <packagereq type="mandatory">GConf-devel</packagereq>
+ <packagereq type="mandatory">GConf2-devel</packagereq>
+ <packagereq type="default">Guppi-devel</packagereq>
+ <packagereq type="mandatory">ORBit-devel</packagereq>
+ <packagereq type="mandatory">ORBit2-devel</packagereq>
+ <packagereq type="mandatory">atk-devel</packagereq>
+ <packagereq type="mandatory">bonobo-activation-devel</packagereq>
+ <packagereq type="default">bonobo-conf-devel</packagereq>
+ <packagereq type="mandatory">bonobo-devel</packagereq>
+ <packagereq type="mandatory">eel2-devel</packagereq>
+ <packagereq type="mandatory">fontconfig-devel</packagereq>
+ <packagereq type="mandatory">gail-devel</packagereq>
+ <packagereq type="mandatory">gal-devel</packagereq>
+ <packagereq type="mandatory">gdk-pixbuf-devel</packagereq>
+ <packagereq type="mandatory">gnome-libs-devel</packagereq>
+ <packagereq type="default">gnome-pilot-devel</packagereq>
+ <packagereq type="mandatory">gnome-print-devel</packagereq>
+ <packagereq type="mandatory">gnome-vfs-devel</packagereq>
+ <packagereq type="mandatory">gnome-vfs2-devel</packagereq>
+ <packagereq type="mandatory">gtkhtml-devel</packagereq>
+ <packagereq type="mandatory">gtk2-devel</packagereq>
+ <packagereq type="default">imlib-devel</packagereq>
+ <packagereq type="mandatory">libIDL-devel</packagereq>
+ <packagereq type="mandatory">libart_lgpl-devel</packagereq>
+ <packagereq type="mandatory">libbonobo-devel</packagereq>
+ <packagereq type="mandatory">libbonoboui-devel</packagereq>
+ <packagereq type="mandatory">libglade-devel</packagereq>
+ <packagereq type="mandatory">libglade2-devel</packagereq>
+ <packagereq type="mandatory">libgnome-devel</packagereq>
+ <packagereq type="mandatory">libgnomecanvas-devel</packagereq>
+ <packagereq type="mandatory">libgnomeui-devel</packagereq>
+ <packagereq type="mandatory">libgtop-devel</packagereq>
+ <packagereq type="mandatory">libole2-devel</packagereq>
+ <packagereq type="mandatory">librsvg-devel</packagereq>
+ <packagereq type="mandatory">librsvg2-devel</packagereq>
+ <packagereq type="mandatory">libunicode-devel</packagereq>
+ <packagereq type="mandatory">libxslt-devel</packagereq>
+ <packagereq type="mandatory">linc-devel</packagereq>
+ <packagereq type="mandatory">oaf-devel</packagereq>
+ <packagereq type="mandatory">pango-devel</packagereq>
+ <packagereq type="optional">glade</packagereq>
+ <packagereq type="optional">glade2</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>kde-software-development</id>
+ <name>KDE Software Development</name>
+ <name xml:lang="cs">Vývoj software pro GNOME</name>
+ <name xml:lang="da">KDE-programmeludvikling</name>
+ <name xml:lang="de">KDE Softwareentwicklung</name>
+ <name xml:lang="es">Desarrollo de software para KDE</name>
+ <name xml:lang="fr">Développement de logiciel KDE</name>
+ <name xml:lang="is">Hugbúnaðarþróun fyrir KDE</name>
+ <name xml:lang="it">Sviluppo software KDE</name>
+ <name xml:lang="ja">KDEソフトウェア開発</name>
+ <name xml:lang="ko">KDE 소프트웨어 개발</name>
+ <name xml:lang="no">Programvareutvikling for KDE</name>
+ <name xml:lang="pt">Desenvolvimento de Software KDE</name>
+ <name xml:lang="ru">СредÑтва Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ в KDE</name>
+ <name xml:lang="sv">KDE-programvaruutveckling</name>
+ <name xml:lang="zh_CN">KDE 软件开å‘</name>
+ <name xml:lang="zh_TW">KDE 軟體開發</name>
+ <description>Install these packages to develop QT and KDE graphical applications.</description>
+ <description xml:lang="cs">Tyto balíÄky nainstalujte pro vývoj grafických aplikací pro QT a KDE.</description>
+ <description xml:lang="da">Installér disse pakker for at udvikle grafiske programmer som bruger QT og KDE.</description>
+ <description xml:lang="de">Installieren Sie diese Pakete, um Applikationen für QT und KDE zu entwickeln.</description>
+ <description xml:lang="es">Instalar estos paquetes para desarrollar las aplicaciones gráficas QT y KDE.</description>
+ <description xml:lang="fr">Installer ces paquetages pour développer les applications graphiques QT et KDE.</description>
+ <description xml:lang="is">Settu þessa pakka inn ef þú vilt þróa QT og KDE forrit</description>
+ <description xml:lang="it">Installare questi pacchetti per sviluppare le applicazioni grafiche QT e KDE.</description>
+ <description xml:lang="ja">QTã¨KDEã®ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ã‚¢ãƒ—リケーション開発ã«ã¯ã“れらã®ãƒ‘ッケージをインストールã—ã¾ã™ã€‚</description>
+ <description xml:lang="ko">QT와 KDE 그래픽 ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ê°œë°œí•˜ì‹œë ¤ë©´ ì´ íŒ¨í‚¤ì§€ë¥¼ 설치하십시오.</description>
+ <description xml:lang="no">Installer disse pakkene for utvikling av QT og KDE-programmer.</description>
+ <description xml:lang="pt">Instale estes pacotes se quiser desenvolver aplicações gráficas QT ou KDE.</description>
+ <description xml:lang="ru">УÑтановите Ñти пакеты Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ приложений QT и KDE.</description>
+ <description xml:lang="sv">Installera dessa paket för att utveckla grafiska program för QT och KDE.</description>
+ <description xml:lang="zh_CN">安装这些软件包æ¥å¼€å‘ QT å’Œ KDE 图形化应用程åºã€‚</description>
+ <description xml:lang="zh_TW">請安è£é€™äº›å¥—件,用來開發 QT 與 KDE 的圖形應用程å¼ã€‚</description>
+ <uservisible>true</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">PyQt-devel</packagereq>
+ <packagereq type="mandatory">arts-devel</packagereq>
+ <packagereq type="mandatory">cdparanoia-devel</packagereq>
+ <packagereq type="mandatory">cervisia</packagereq>
+ <packagereq type="mandatory">cups-devel</packagereq>
+ <packagereq type="mandatory">kdbg</packagereq>
+ <packagereq type="mandatory">kdebase-devel</packagereq>
+ <packagereq type="mandatory">kdelibs-devel</packagereq>
+ <packagereq type="mandatory">kdenetwork-devel</packagereq>
+ <packagereq type="mandatory">kdesdk-kapptemplate</packagereq>
+ <packagereq type="mandatory">kdesdk-kbabel</packagereq>
+ <packagereq type="mandatory">kdesdk-kbugbuster</packagereq>
+ <packagereq type="mandatory">kdesdk-kmtrace</packagereq>
+ <packagereq type="mandatory">kdesdk-kompare</packagereq>
+ <packagereq type="mandatory">kdesdk-kspy</packagereq>
+ <packagereq type="mandatory">kdepim-devel</packagereq>
+ <packagereq type="mandatory">kdevelop</packagereq>
+ <packagereq type="mandatory">kdoc</packagereq>
+ <packagereq type="mandatory">kregexpeditor-devel</packagereq>
+ <packagereq type="mandatory">kviewshell-devel</packagereq>
+ <packagereq type="mandatory">libkscan-devel</packagereq>
+ <packagereq type="mandatory">pilot-link-devel</packagereq>
+ <packagereq type="mandatory">qt-designer</packagereq>
+ <packagereq type="mandatory">qt-devel</packagereq>
+ <packagereq type="mandatory">sane-backends-devel</packagereq>
+ <packagereq type="mandatory">sip-devel</packagereq>
+ <packagereq type="mandatory">libxslt-devel</packagereq>
+ </packagelist>
+ </group>
+
+ <!-- META GROUPS -->
+ <group>
+ <id>workstation-common</id>
+ <uservisible>false</uservisible>
+ <name>Workstation Common</name>
+ <name xml:lang="cs">SpoleÄné pro pracovní stanici</name>
+ <name xml:lang="da">Fælles for arbejdsstation</name>
+ <name xml:lang="de">Workstation Common</name>
+ <name xml:lang="es">Zona común de la estación de trabajo</name>
+ <name xml:lang="fr">Poste de travail commun</name>
+ <name xml:lang="is">Almennt fyrir vinnustöðvar</name>
+ <name xml:lang="it">Workstation Common</name>
+ <name xml:lang="ja">ワークステーション共通</name>
+ <name xml:lang="ko">ì›ìŠ¤í…Œì´ì…˜ 공통</name>
+ <name xml:lang="no">Arbeidsstasjon - felles</name>
+ <name xml:lang="pt">Estação de Trabalho Comum</name>
+ <name xml:lang="ru">Ð¢Ð¸Ð¿Ð¾Ð²Ð°Ñ Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ Ð¡Ñ‚Ð°Ð½Ñ†Ð¸Ñ</name>
+ <name xml:lang="sv">Gemensamt för arbetsstation</name>
+ <name xml:lang="zh_CN">工作站通用</name>
+ <name xml:lang="zh_TW">工作站共åŒ</name>
+ <grouplist>
+ <groupreq>base</groupreq>
+ <groupreq>base-x</groupreq>
+ <groupreq>admin-tools</groupreq>
+ <groupreq>editors</groupreq>
+ <groupreq>sound-and-video</groupreq>
+ <groupreq>dialup</groupreq>
+ <groupreq>office</groupreq>
+ <groupreq>graphical-internet</groupreq>
+ <groupreq>text-internet</groupreq>
+ <groupreq>printing</groupreq>
+ <groupreq>graphics</groupreq>
+ <groupreq>games</groupreq>
+ </grouplist>
+ </group>
+
+ <group>
+ <id>server</id>
+ <uservisible>false</uservisible>
+ <name>Server</name>
+ <name xml:lang="cs">Server</name>
+ <name xml:lang="da">Server</name>
+ <name xml:lang="de">Server</name>
+ <name xml:lang="es">Servidor</name>
+ <name xml:lang="fr">Serveur</name>
+ <name xml:lang="is">Þjónn</name>
+ <name xml:lang="it">Server</name>
+ <name xml:lang="ja">サーãƒ</name>
+ <name xml:lang="ko">서버</name>
+ <name xml:lang="no">Tjener</name>
+ <name xml:lang="pt">Servidor</name>
+ <name xml:lang="ru">Сервер</name>
+ <name xml:lang="sv">Server</name>
+ <name xml:lang="zh_CN">æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">伺æœå™¨</name>
+ <grouplist>
+ <groupreq>base</groupreq>
+ <groupreq>printing</groupreq>
+ <groupreq>text-internet</groupreq>
+ <groupreq>dialup</groupreq>
+ <groupreq>web-server</groupreq>
+ <groupreq>smb-server</groupreq>
+ <groupreq>server-cfg</groupreq>
+ <groupreq>admin-tools</groupreq>
+ </grouplist>
+ </group>
+
+ <group>
+ <id>gnome</id>
+ <uservisible>false</uservisible>
+ <name>GNOME</name>
+ <name xml:lang="cs">GNOME</name>
+ <name xml:lang="da">Gnome</name>
+ <name xml:lang="de">GNOME</name>
+ <name xml:lang="es">GNOME</name>
+ <name xml:lang="fr">GNOME</name>
+ <name xml:lang="is">GNOME</name>
+ <name xml:lang="it">GNOME</name>
+ <name xml:lang="ja">GNOME </name>
+ <name xml:lang="ko">GNOME</name>
+ <name xml:lang="no">GNOME</name>
+ <name xml:lang="pt">GNOME</name>
+ <name xml:lang="ru">GNOME</name>
+ <name xml:lang="sv">GNOME</name>
+ <name xml:lang="zh_CN">GNOME</name>
+ <name xml:lang="zh_TW">GNOME</name>
+ <grouplist>
+ <groupreq>gnome-desktop</groupreq>
+ </grouplist>
+ </group>
+
+ <group>
+ <id>kde</id>
+ <uservisible>false</uservisible>
+ <name>KDE</name>
+ <name xml:lang="cs">KDE</name>
+ <name xml:lang="da">KDE</name>
+ <name xml:lang="de">KDE</name>
+ <name xml:lang="es">KDE</name>
+ <name xml:lang="fr">KDE</name>
+ <name xml:lang="is">KDE</name>
+ <name xml:lang="it">KDE</name>
+ <name xml:lang="ja">KDE</name>
+ <name xml:lang="ko">KDE</name>
+ <name xml:lang="no">KDE</name>
+ <name xml:lang="pt">KDE</name>
+ <name xml:lang="ru">KDE</name>
+ <name xml:lang="sv">KDE</name>
+ <name xml:lang="zh_CN">KDE</name>
+ <name xml:lang="zh_TW">KDE</name>
+ <grouplist>
+ <groupreq>kde-desktop</groupreq>
+ </grouplist>
+ </group>
+
+ <group>
+ <id>supported</id>
+ <uservisible>false</uservisible>
+ <name>Supported Packages</name>
+ <name xml:lang="cs">Podporované balíÄky</name>
+ <name xml:lang="da">Pakker som understøttes</name>
+ <name xml:lang="de">Unterstützte Pakete</name>
+ <name xml:lang="es">Paquetes soportados</name>
+ <name xml:lang="fr">Paquetages pris en charge</name>
+ <name xml:lang="is">Studdir pakkar</name>
+ <name xml:lang="it">Pacchetti supportati</name>
+ <name xml:lang="ja">サãƒãƒ¼ãƒˆã•ã‚Œã‚‹ãƒ‘ッケージ</name>
+ <name xml:lang="ko">지ì›í•˜ëŠ” 패키지</name>
+ <name xml:lang="no">Støttede pakker</name>
+ <name xml:lang="pt">Pacotes Suportados</name>
+ <name xml:lang="ru">Поддерживаемые пакеты</name>
+ <name xml:lang="sv">Paket som stöds</name>
+ <name xml:lang="zh_CN">支æŒçš„软件包</name>
+ <name xml:lang="zh_TW">支æ´çš„套件</name>
+ <packagelist>
+ <packagereq type="optional">anaconda</packagereq>
+ <packagereq type="optional">anaconda-help</packagereq>
+ <packagereq type="optional">anaconda-images</packagereq>
+ <packagereq type="optional">anaconda-runtime</packagereq>
+ <packagereq type="optional">booty</packagereq>
+ </packagelist>
+ </group>
+
+ <!-- group hierarchy -->
+ <grouphierarchy>
+ <category>
+ <name>Desktops</name>
+ <name xml:lang="cs">Prostředí pracovní plochy</name>
+ <name xml:lang="da">Skriveborde</name>
+ <name xml:lang="is">Skjáborð</name>
+ <name xml:lang="ja">デスクトップ</name>
+ <name xml:lang="ko">ë°ìŠ¤í¬íƒ‘</name>
+ <name xml:lang="no">Skrivebord</name>
+ <name xml:lang="pt">Ambiente de Trabalho</name>
+ <name xml:lang="ru">Оконные менеджеры</name>
+ <name xml:lang="sv">Skrivbord</name>
+ <name xml:lang="zh_CN">æ¡Œé¢</name>
+ <name xml:lang="zh_TW">æ¡Œé¢</name>
+ <subcategories>
+ <subcategory>base-x</subcategory>
+ <subcategory>gnome-desktop</subcategory>
+ <subcategory>kde-desktop</subcategory>
+ </subcategories>
+ </category>
+ <category>
+ <name>Applications</name>
+ <name xml:lang="cs">Aplikace</name>
+ <name xml:lang="da">Programmer</name>
+ <name xml:lang="is">Forrit</name>
+ <name xml:lang="ja">アプリケーション</name>
+ <name xml:lang="ko">ì‘ìš© 프로그램</name>
+ <name xml:lang="no">Programmer</name>
+ <name xml:lang="pt">Aplicações</name>
+ <name xml:lang="ru">ПриложениÑ</name>
+ <name xml:lang="sv">Program</name>
+ <name xml:lang="zh_CN">应用程åº</name>
+ <name xml:lang="zh_TW">應用程å¼</name>
+ <subcategories>
+ <subcategory>editors</subcategory>
+ <subcategory>engineering-and-scientific</subcategory>
+ <subcategory>graphical-internet</subcategory>
+ <subcategory>text-internet</subcategory>
+ <subcategory>office</subcategory>
+ <subcategory>sound-and-video</subcategory>
+ <subcategory>authoring-and-publishing</subcategory>
+ <subcategory>graphics</subcategory>
+ <subcategory>games</subcategory>
+ </subcategories>
+ </category>
+ <category>
+ <name>Servers</name>
+ <name xml:lang="cs">Servery</name>
+ <name xml:lang="da">Servere</name>
+ <name xml:lang="de">Server</name>
+ <name xml:lang="is">Þjónar</name>
+ <name xml:lang="ja">サーãƒ</name>
+ <name xml:lang="ko">서버</name>
+ <name xml:lang="no">Tjenere</name>
+ <name xml:lang="pt">Servidores</name>
+ <name xml:lang="ru">Серверы</name>
+ <name xml:lang="sv">Servrar</name>
+ <name xml:lang="zh_CN">æœåŠ¡å™¨</name>
+ <name xml:lang="zh_TW">伺æœå™¨</name>
+ <subcategories>
+ <subcategory>server-cfg</subcategory>
+ <subcategory>web-server</subcategory>
+ <subcategory>mail-server</subcategory>
+ <subcategory>smb-server</subcategory>
+ <subcategory>dns-server</subcategory>
+ <subcategory>ftp-server</subcategory>
+ <subcategory>sql-server</subcategory>
+ <subcategory>news-server</subcategory>
+ <subcategory>network-server</subcategory>
+ </subcategories>
+ </category>
+ <category>
+ <name>Development</name>
+ <name xml:lang="cs">Vývoj</name>
+ <name xml:lang="da">Udvikling</name>
+ <name xml:lang="de">Softwareentwicklung</name>
+ <name xml:lang="is">Þróun</name>
+ <name xml:lang="ja">開発</name>
+ <name xml:lang="ko">개발용 ë„구</name>
+ <name xml:lang="no">Utviklingsverktøy</name>
+ <name xml:lang="pt">Desenvolvimento</name>
+ <name xml:lang="ru">Программирование</name>
+ <name xml:lang="sv">Utveckling</name>
+ <name xml:lang="zh_CN">å¼€å‘</name>
+ <name xml:lang="zh_TW">程å¼é–‹ç™¼</name>
+ <subcategories>
+ <subcategory>development-tools</subcategory>
+ <subcategory>kernel-development</subcategory>
+ <subcategory>x-software-development</subcategory>
+ <subcategory>gnome-software-development</subcategory>
+ <subcategory>kde-software-development</subcategory>
+ </subcategories>
+ </category>
+ <category>
+ <name>System</name>
+ <name xml:lang="cs">Systém</name>
+ <name xml:lang="da">System</name>
+ <name xml:lang="de">Systemtools</name>
+ <name xml:lang="is">Kerfi</name>
+ <name xml:lang="ja">システム</name>
+ <name xml:lang="ko">시스템</name>
+ <name xml:lang="no">System</name>
+ <name xml:lang="pt">Sistema</name>
+ <name xml:lang="ru">СиÑтема</name>
+ <name xml:lang="sv">System</name>
+ <name xml:lang="zh_CN">系统</name>
+ <name xml:lang="zh_TW">系統</name>
+ <subcategories>
+ <subcategory>admin-tools</subcategory>
+ <subcategory>system-tools</subcategory>
+ <subcategory>printing</subcategory>
+ </subcategories>
+ </category>
+ </grouphierarchy>
+
+ <!-- packages -->
+ <package>
+ <name>busybox</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtool-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kpaint</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Estonian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libpng10-devel</name>
+ <dependencylist>
+ <dependency>libpng10</dependency>
+ <dependency>zlib-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tclx</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tk</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnomemeeting</name>
+ <dependencylist>
+ <dependency>openh323</dependency>
+ <dependency>pwlib</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>openldap</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>SDL</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk+-devel</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>glib-devel</dependency>
+ <dependency>XFree86-devel</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdbm</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdrecord-devel</name>
+ <dependencylist>
+ <dependency>cdrecord</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wl-xemacs</name>
+ <dependencylist>
+ <dependency>xemacs</dependency>
+ <dependency>wl-common</dependency>
+ <dependency>flim-xemacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lapack-man</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Compress-Zlib</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>modutils-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnuchess</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-audio</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mikmod</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ruby-tcltk</name>
+ <dependencylist>
+ <dependency>ruby-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tk</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tk</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>tcl</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xbae</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>openmotif</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bzip2-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cadaver</name>
+ <dependencylist>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>klpq</name>
+ <dependencylist>
+ <dependency>LPRng</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-es</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-es</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fam</name>
+ <dependencylist>
+ <dependency>portmap</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openh323</name>
+ <dependencylist>
+ <dependency>pwlib</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ <dependency>expat</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncftp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>basesystem</name>
+ <dependencylist>
+ <dependency>setup</dependency>
+ <dependency>filesystem</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ttfonts-ko</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rpm-build</name>
+ <dependencylist>
+ <dependency>rpm</dependency>
+ <dependency>patch</dependency>
+ <dependency>file</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libelf</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mew-common</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rhmask</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libaio-devel</name>
+ <dependencylist>
+ <dependency>libaio</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lisa</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-perl</name>
+ <dependencylist>
+ <dependency>gimp</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Gtk-Perl</dependency>
+ <dependency>perl-PDL</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>parted</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>e2fsprogs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>zlib</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dosfstools</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xmms</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>unzip</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>redhat-artwork</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>mikmod</dependency>
+ <dependency>libogg</dependency>
+ <dependency>libvorbis</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtermcap</name>
+ <dependencylist>
+ <dependency>termcap</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>firstboot</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>metacity</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>redhat-config-date</dependency>
+ <dependency>redhat-config-language</dependency>
+ <dependency>redhat-config-mouse</dependency>
+ <dependency>redhat-config-keyboard</dependency>
+ <dependency>redhat-config-soundcard</dependency>
+ <dependency>redhat-config-securitylevel</dependency>
+ <dependency>redhat-config-rootpassword</dependency>
+ <dependency>redhat-config-packages</dependency>
+ <dependency>up2date</dependency>
+ <dependency>redhat-logos</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxslt</name>
+ <dependencylist>
+ <dependency>libxml2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-base-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-DBD-Pg</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-DBI</dependency>
+ <dependency>glibc</dependency>
+ <dependency>postgresql-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sendmail</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>gawk</dependency>
+ <dependency>sed</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>procmail</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>hesiod</dependency>
+ <dependency>openldap</dependency>
+ <dependency>cyrus-sasl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Devel-Symdump</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssl-devel</name>
+ <dependencylist>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>asp2php</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-pcmcia-cs</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>kudzu</dependency>
+ <dependency>hotplug</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libwnck-devel</name>
+ <dependencylist>
+ <dependency>libwnck</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>pango-devel</dependency>
+ <dependency>gtk2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pump-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ggv</name>
+ <dependencylist>
+ <dependency>GConf2</dependency>
+ <dependency>scrollkeeper</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncurses-devel</name>
+ <dependencylist>
+ <dependency>ncurses</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-printer</name>
+ <dependencylist>
+ <dependency>alchemist</dependency>
+ <dependency>python</dependency>
+ <dependency>perl</dependency>
+ <dependency>PyXML</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>gzip</dependency>
+ <dependency>sed</dependency>
+ <dependency>LPRng</dependency>
+ <dependency>m4</dependency>
+ <dependency>pnm2ppa</dependency>
+ <dependency>bzip2</dependency>
+ <dependency>foomatic</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>newt</dependency>
+ <dependency>Omni-foomatic</dependency>
+ <dependency>mpage</dependency>
+ <dependency>usermode</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libao-devel</name>
+ <dependencylist>
+ <dependency>libao</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mew</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ <dependency>mew-common</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xinetd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>filesystem</dependency>
+ <dependency>setup</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>knewsticker</name>
+ <dependencylist>
+ <dependency>kdenetwork-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>galeon</name>
+ <dependencylist>
+ <dependency>glib</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>libxml</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>GConf</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>gnome-vfs</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libglade</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>perl</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxslt-devel</name>
+ <dependencylist>
+ <dependency>libxslt</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vim-X11</name>
+ <dependencylist>
+ <dependency>vim-common</dependency>
+ <dependency>libacl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>gpm</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>perl</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>symlinks</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rpm2html</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>popt</dependency>
+ <dependency>rpm</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkam</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>gphoto2</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sh-utils</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-twm</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>alchemist</name>
+ <dependencylist>
+ <dependency>libxml2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>python</dependency>
+ <dependency>glib</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>njamd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xosview</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dictd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ethereal-gnome</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>usermode</dependency>
+ <dependency>ethereal</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>libpcap</dependency>
+ <dependency>net-snmp</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netpbm-devel</name>
+ <dependencylist>
+ <dependency>netpbm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mouseconfig</name>
+ <dependencylist>
+ <dependency>findutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeaddons-kate</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vlock</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-lsb</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>gawk</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>cpio</dependency>
+ <dependency>grep</dependency>
+ <dependency>gzip</dependency>
+ <dependency>net-tools</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>mount</dependency>
+ <dependency>procps</dependency>
+ <dependency>sed</dependency>
+ <dependency>bash</dependency>
+ <dependency>tar</dependency>
+ <dependency>psmisc</dependency>
+ <dependency>SysVinit</dependency>
+ <dependency>binutils</dependency>
+ <dependency>at</dependency>
+ <dependency>bc</dependency>
+ <dependency>diffutils</dependency>
+ <dependency>vixie-cron</dependency>
+ <dependency>file</dependency>
+ <dependency>findutils</dependency>
+ <dependency>glibc-common</dependency>
+ <dependency>LPRng</dependency>
+ <dependency>m4</dependency>
+ <dependency>make</dependency>
+ <dependency>man</dependency>
+ <dependency>passwd</dependency>
+ <dependency>patch</dependency>
+ <dependency>rsync</dependency>
+ <dependency>time</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>postfix</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>usermode-gtk</name>
+ <dependencylist>
+ <dependency>usermode</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ltrace</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-XML-Parser</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-libwww-perl</dependency>
+ <dependency>perl-URI</dependency>
+ <dependency>glibc</dependency>
+ <dependency>expat</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fortune-mod</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gphoto2-devel</name>
+ <dependencylist>
+ <dependency>gphoto2</dependency>
+ <dependency>pkgconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librsvg-devel</name>
+ <dependencylist>
+ <dependency>librsvg</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-vfs2-devel</name>
+ <dependencylist>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>GConf2-devel</dependency>
+ <dependency>libbonobo-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mysql-devel</name>
+ <dependencylist>
+ <dependency>mysql</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kpppload</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Filter-Simple</name>
+ <dependencylist>
+ <dependency>perl-Filter</dependency>
+ <dependency>perl-Parse-RecDescent</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gmp-devel</name>
+ <dependencylist>
+ <dependency>gmp</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-kickstart</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>python</dependency>
+ <dependency>hwdata</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kmid</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>WindowMaker-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-spell</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>aspell</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>pspell</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vte-devel</name>
+ <dependencylist>
+ <dependency>vte</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libbonoboui</name>
+ <dependencylist>
+ <dependency>libxml2</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>linc</dependency>
+ <dependency>pango</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>m4</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>timeconfig</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>gawk</dependency>
+ <dependency>bash</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bash</name>
+ <dependencylist>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kmix</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Frontier-RPC</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-libwww-perl</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>blas</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeprintui-devel</name>
+ <dependencylist>
+ <dependency>libgnomeprintui</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libgnomeprint-devel</dependency>
+ <dependency>libgnomecanvas-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>expat</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nkf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>authconfig-gtk</name>
+ <dependencylist>
+ <dependency>authconfig</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pam</dependency>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>statserial</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdenetwork-devel</name>
+ <dependencylist>
+ <dependency>kdenetwork-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>perl</dependency>
+ <dependency>psmisc</dependency>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>indexhtml</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>portmap</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Maelstrom</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>SDL</dependency>
+ <dependency>SDL_net</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sysreport</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>gawk</dependency>
+ <dependency>grep</dependency>
+ <dependency>sed</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdparanoia</name>
+ <dependencylist>
+ <dependency>cdparanoia-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>indent</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xsane</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>sane-backends</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libusb</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>parted-devel</name>
+ <dependencylist>
+ <dependency>parted</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mc</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>dev</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>gpm</dependency>
+ <dependency>slang</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>autoconf213</name>
+ <dependencylist>
+ <dependency>gawk</dependency>
+ <dependency>m4</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>perl</dependency>
+ <dependency>textutils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ruby-libs</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>setup</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>desktop-backgrounds-basic</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-ISO8859-9-75dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>db4-utils</name>
+ <dependencylist>
+ <dependency>db4</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-jdbc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Norwegian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kamera</name>
+ <dependencylist>
+ <dependency>gphoto2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libusb</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>samba-swat</name>
+ <dependencylist>
+ <dependency>samba</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>libacl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>pam</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mx</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bg5ps</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nautilus</name>
+ <dependencylist>
+ <dependency>fam</dependency>
+ <dependency>filesystem</dependency>
+ <dependency>eog</dependency>
+ <dependency>scrollkeeper</dependency>
+ <dependency>desktop-backgrounds-basic</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>redhat-artwork</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>eel2</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gail</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-desktop</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>librsvg2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sendmail-cf</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>diffstat</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-75dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk2-devel</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>pango-devel</dependency>
+ <dependency>atk-devel</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>XFree86-devel</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-libgcj-devel</name>
+ <dependencylist>
+ <dependency>zip</dependency>
+ <dependency>compat-libgcj</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL_mixer-devel</name>
+ <dependencylist>
+ <dependency>SDL_mixer</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Serbian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncurses4</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openldap-devel</name>
+ <dependencylist>
+ <dependency>openldap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kon2-fonts</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>routed</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-vfs2</name>
+ <dependencylist>
+ <dependency>gnome-mime-data</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>fam</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ImageMagick-c++</name>
+ <dependencylist>
+ <dependency>ImageMagick</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glib-devel</name>
+ <dependencylist>
+ <dependency>glib</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xloadimage</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eruby</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>eruby-libs</dependency>
+ <dependency>ruby-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cyrus-sasl-gssapi</name>
+ <dependencylist>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>passivetex</name>
+ <dependencylist>
+ <dependency>tetex</dependency>
+ <dependency>xmltex</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-pilot-devel</name>
+ <dependencylist>
+ <dependency>ORBit-devel</dependency>
+ <dependency>pilot-link-devel</dependency>
+ <dependency>gnome-pilot</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>emacs-leim</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeui-devel</name>
+ <dependencylist>
+ <dependency>libgnomeui</dependency>
+ <dependency>zlib-devel</dependency>
+ <dependency>esound-devel</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>pango-devel</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>GConf2-devel</dependency>
+ <dependency>gnome-vfs2-devel</dependency>
+ <dependency>libgnomecanvas-devel</dependency>
+ <dependency>bonobo-activation-devel</dependency>
+ <dependency>libbonobo-devel</dependency>
+ <dependency>libbonoboui-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>libgnome-devel</dependency>
+ <dependency>libart_lgpl-devel</dependency>
+ <dependency>libglade2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rhpl</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk-engines</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xft</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lam</name>
+ <dependencylist>
+ <dependency>openssh-server</dependency>
+ <dependency>openssh-clients</dependency>
+ <dependency>bash</dependency>
+ <dependency>libaio</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jadetex</name>
+ <dependencylist>
+ <dependency>sgml-common</dependency>
+ <dependency>tetex</dependency>
+ <dependency>tetex-latex</dependency>
+ <dependency>openjade</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-vfs-extras</name>
+ <dependencylist>
+ <dependency>gnome-vfs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jfsutils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cWnn-devel</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>inn-devel</name>
+ <dependencylist>
+ <dependency>inn</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xdelta</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>glib</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ghostscript-gtk</name>
+ <dependencylist>
+ <dependency>ghostscript</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-ISO8859-2-100dpi</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netdump-server</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>openssh-server</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Crypt-SSLeay</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell</name>
+ <dependencylist>
+ <dependency>pspell</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdemultimedia-kfile</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libogg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libvorbis</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openh323-devel</name>
+ <dependencylist>
+ <dependency>openh323</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lha</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postfix</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>pcre</dependency>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mrproject</name>
+ <dependencylist>
+ <dependency>glib</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>libxml</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>gnome-vfs</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>popt</dependency>
+ <dependency>gnome-print</dependency>
+ <dependency>gal</dependency>
+ <dependency>libglade</dependency>
+ <dependency>libmrproject</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pciutils</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>hwdata</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Glide3</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libwvstreams</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wine</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>arts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>sane-backends</dependency>
+ <dependency>libusb</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssh-clients</name>
+ <dependencylist>
+ <dependency>openssh</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qtcups</name>
+ <dependencylist>
+ <dependency>cups</dependency>
+ <dependency>qt</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libIDL-devel</name>
+ <dependencylist>
+ <dependency>libIDL</dependency>
+ <dependency>pkgconfig</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mars-nwe</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>ipxutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-fr</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Time-HiRes</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>x3270</name>
+ <dependencylist>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xmms-skins</name>
+ <dependencylist>
+ <dependency>xmms</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>anonftp</name>
+ <dependencylist>
+ <dependency>vsftpd</dependency>
+ <dependency>grep</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>gzip</dependency>
+ <dependency>cpio</dependency>
+ <dependency>tar</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>python-tools</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bonobo-conf</name>
+ <dependencylist>
+ <dependency>bonobo</dependency>
+ <dependency>GConf</dependency>
+ <dependency>oaf</dependency>
+ <dependency>glib</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libungif-devel</name>
+ <dependencylist>
+ <dependency>libungif</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-devel</name>
+ <dependencylist>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kregexpeditor</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ttfonts-ja</name>
+ <dependencylist>
+ <dependency>fontconfig</dependency>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cipe</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lslk</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libmng-devel</name>
+ <dependencylist>
+ <dependency>libmng</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>im-sdk</name>
+ <dependencylist>
+ <dependency>Canna-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>pam</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-KOI8-R-75dpi</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-nss</name>
+ <dependencylist>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>doxygen-doxywizard</name>
+ <dependencylist>
+ <dependency>doxygen</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kmidi</name>
+ <dependencylist>
+ <dependency>timidity++</dependency>
+ <dependency>arts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-logos</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-gcc-g77</name>
+ <dependencylist>
+ <dependency>compat-gcc</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Dutch</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdemultimedia-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libogg</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libvorbis</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>quanta</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>grep</dependency>
+ <dependency>textutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>freetype</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>atk-devel</name>
+ <dependencylist>
+ <dependency>atk</dependency>
+ <dependency>glib2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>giftrans</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk2-engines</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>foomatic</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-DateManip</dependency>
+ <dependency>perl-libxml-enno</dependency>
+ <dependency>perl-libxml-perl</dependency>
+ <dependency>perl-Parse-Yapp</dependency>
+ <dependency>perl-XML-Dumper</dependency>
+ <dependency>perl-XML-Encoding</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-libwww-perl</dependency>
+ <dependency>perl-XML-Grove</dependency>
+ <dependency>perl-XML-Twig</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncpfs</name>
+ <dependencylist>
+ <dependency>ipxutils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-mime-data</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ImageMagick-c++-devel</name>
+ <dependencylist>
+ <dependency>ImageMagick</dependency>
+ <dependency>ImageMagick-c++</dependency>
+ <dependency>ImageMagick-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kcharselect</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dhclient</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libdbi</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Slovenian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xmltex</name>
+ <dependencylist>
+ <dependency>tetex</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxml2-devel</name>
+ <dependencylist>
+ <dependency>libxml2</dependency>
+ <dependency>zlib-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>amanda-server</name>
+ <dependencylist>
+ <dependency>gnuplot</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>amanda</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>diskcheck</name>
+ <dependencylist>
+ <dependency>crontabs</dependency>
+ <dependency>postfix</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>e2fsprogs-devel</name>
+ <dependencylist>
+ <dependency>e2fsprogs</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pdksh</name>
+ <dependencylist>
+ <dependency>grep</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-ja</name>
+ <dependencylist>
+ <dependency>XFree86-100dpi-fonts</dependency>
+ <dependency>XFree86-75dpi-fonts</dependency>
+ <dependency>chkfontpath</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kWnn-devel</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>awesfx</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-doc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-applets</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>gnome-panel</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>gail</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>libgtop2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-SGMLSpm</name>
+ <dependencylist>
+ <dependency>openjade</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtool-libs13</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>koffice</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>arts</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>docbook-style-dsssl</name>
+ <dependencylist>
+ <dependency>openjade</dependency>
+ <dependency>docbook-dtds</dependency>
+ <dependency>sgml-common</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libavc1394-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cyrus-sasl-devel</name>
+ <dependencylist>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>umb-scheme</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eel2-devel</name>
+ <dependencylist>
+ <dependency>eel2</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libgnomeui-devel</dependency>
+ <dependency>gnome-vfs2-devel</dependency>
+ <dependency>librsvg2-devel</dependency>
+ <dependency>bonobo-activation-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>libart_lgpl-devel</dependency>
+ <dependency>gail-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>expect</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tk</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-print-cups</name>
+ <dependencylist>
+ <dependency>cups</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>gimp-print</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-kerberos</name>
+ <dependencylist>
+ <dependency>atk</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ftp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>enscript</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>noatun</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdemultimedia-arts</dependency>
+ <dependency>arts</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeprint-devel</name>
+ <dependencylist>
+ <dependency>libgnomeprint</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>pango-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>libart_lgpl-devel</dependency>
+ <dependency>libbonobo-devel</dependency>
+ <dependency>bonobo-activation-devel</dependency>
+ <dependency>freetype</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>freeciv</name>
+ <dependencylist>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>Xaw3d</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librpm404</name>
+ <dependencylist>
+ <dependency>gawk</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-print-devel</name>
+ <dependencylist>
+ <dependency>gnome-print</dependency>
+ <dependency>gdk-pixbuf-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librep-devel</name>
+ <dependencylist>
+ <dependency>librep</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkhtml2-devel</name>
+ <dependencylist>
+ <dependency>gtkhtml2</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>gnome-vfs2-devel</dependency>
+ <dependency>gail-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xtraceroute</name>
+ <dependencylist>
+ <dependency>gtkglarea</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-libstdc++-devel</name>
+ <dependencylist>
+ <dependency>compat-libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>losetup</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ntp</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>sed</dependency>
+ <dependency>libcap</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sharutils</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-python</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>mx</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>postgresql-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>PyQt-examples</name>
+ <dependencylist>
+ <dependency>PyQt</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL_mixer</name>
+ <dependencylist>
+ <dependency>SDL</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libogg</dependency>
+ <dependency>libvorbis</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ktalkd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ash</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eruby-libs</name>
+ <dependencylist>
+ <dependency>ruby-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebase-devel</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings-qtc</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>VFlib2</name>
+ <dependencylist>
+ <dependency>XFree86-truetype-fonts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xsane-gimp</name>
+ <dependencylist>
+ <dependency>gawk</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>gimp</dependency>
+ <dependency>glib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>sane-backends</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libusb</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtabe-devel</name>
+ <dependencylist>
+ <dependency>libtabe</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-media</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gail</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssh</name>
+ <dependencylist>
+ <dependency>util-linux</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssl</name>
+ <dependencylist>
+ <dependency>mktemp</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>festival</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>stardict</name>
+ <dependencylist>
+ <dependency>openmotif</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qmkbootdisk</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>qt</dependency>
+ <dependency>mkbootdisk</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ImageMagick</name>
+ <dependencylist>
+ <dependency>bzip2</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>zlib</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libxml2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wordtrans-web</name>
+ <dependencylist>
+ <dependency>wordtrans</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nedit</name>
+ <dependencylist>
+ <dependency>openmotif</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-KOI8-R-100dpi</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>oaf-devel</name>
+ <dependencylist>
+ <dependency>oaf</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ipxutils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kudzu-devel</name>
+ <dependencylist>
+ <dependency>pciutils-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ethereal</name>
+ <dependencylist>
+ <dependency>libpcap</dependency>
+ <dependency>net-snmp</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bootparamd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>portmap</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>licq-gnome</name>
+ <dependencylist>
+ <dependency>licq</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdbg</name>
+ <dependencylist>
+ <dependency>gdb</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>usbview</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cups</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>htmlview</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gpm</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>glibc</dependency>
+ <dependency>info</dependency>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pmake</name>
+ <dependencylist>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xbae-devel</name>
+ <dependencylist>
+ <dependency>Xbae</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pkgconfig</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-mysql</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>grep</dependency>
+ <dependency>mysql</dependency>
+ <dependency>zlib</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jed</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>slang</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>autorun</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krb5-server</name>
+ <dependencylist>
+ <dependency>krb5-libs</dependency>
+ <dependency>grep</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gkrellm</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kmessedwords</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkhtml</name>
+ <dependencylist>
+ <dependency>gnome-print</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>pspell</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libcapplet0</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>libghttp</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-bigmem</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>modutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>mkinitrd</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt-PostgreSQL</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>postgresql-libs</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>setuptool</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lrzsz</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>skkdic</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wordtrans</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>beecrypt</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>isdn4k-utils-devel</name>
+ <dependencylist>
+ <dependency>isdn4k-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>grep</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>pcre</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>guile</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>readline</dependency>
+ <dependency>umb-scheme</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ttfprint</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mkbootdisk</name>
+ <dependencylist>
+ <dependency>mkinitrd</dependency>
+ <dependency>dosfstools</dependency>
+ <dependency>syslinux</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tree</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>isdn4k-utils</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>PyQt</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>sip</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>h2ps</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openmotif</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnupg</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openldap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Italian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>emacs-el</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>python-docs</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-httpd</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>alchemist</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>httpd</dependency>
+ <dependency>usermode</dependency>
+ <dependency>4Suite</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kstars</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cproto</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-British</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libraw1394-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>knotes</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ORBit</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssl095a</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Spanish</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Parse-RecDescent</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>linuxdoc-tools</name>
+ <dependencylist>
+ <dependency>openjade</dependency>
+ <dependency>tetex-latex</dependency>
+ <dependency>gawk</dependency>
+ <dependency>groff</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxml-devel</name>
+ <dependencylist>
+ <dependency>libxml</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-KOI8-R</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-libgcj</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>zip</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-ISO8859-2-100dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>amanda-devel</name>
+ <dependencylist>
+ <dependency>amanda</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>genromfs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>python-devel</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kvoctrain</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>licq-qt</name>
+ <dependencylist>
+ <dependency>licq</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>automake14</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>automake15</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-date</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>gnome-python2-canvas</dependency>
+ <dependency>usermode</dependency>
+ <dependency>ntp</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-print</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-sv</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wireless-tools</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>passwd</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>popt</dependency>
+ <dependency>libuser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-ldap</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openldap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>quota</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>isdn4k-utils-vboxgetty</name>
+ <dependencylist>
+ <dependency>isdn4k-utils</dependency>
+ <dependency>tcl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdk-pixbuf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>desktop-file-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdm</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>scrollkeeper</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>librsvg2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>pam</dependency>
+ <dependency>xinitrc</dependency>
+ <dependency>usermode</dependency>
+ <dependency>xsri</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>redhat-artwork</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libwnck</name>
+ <dependencylist>
+ <dependency>glib2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>pango</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eel2</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>librsvg2</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>gail</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>atk</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>usermode</name>
+ <dependencylist>
+ <dependency>util-linux</dependency>
+ <dependency>pam</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libuser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hesiod-devel</name>
+ <dependencylist>
+ <dependency>hesiod</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sendmail-doc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt-designer</name>
+ <dependencylist>
+ <dependency>qt-devel</dependency>
+ <dependency>glibc</dependency>
+ <dependency>qt</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xft</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdelibs</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>arts</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>python</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pcre</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-contrib</name>
+ <dependencylist>
+ <dependency>postgresql-libs</dependency>
+ <dependency>postgresql</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>perl</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-DBD-Pg</dependency>
+ <dependency>perl-DBI</dependency>
+ <dependency>postgresql-perl</dependency>
+ <dependency>perl-Time-HiRes</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gsl</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pam</name>
+ <dependencylist>
+ <dependency>cracklib</dependency>
+ <dependency>cracklib-dicts</dependency>
+ <dependency>glib</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>grep</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>sed</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>db4</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-dom-inspector</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librsvg2-devel</name>
+ <dependencylist>
+ <dependency>librsvg2</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>freetype-devel</dependency>
+ <dependency>libart_lgpl-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ac-archive</name>
+ <dependencylist>
+ <dependency>autoconf</dependency>
+ <dependency>perl</dependency>
+ <dependency>automake</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bonobo-activation-devel</name>
+ <dependencylist>
+ <dependency>bonobo-activation</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>glib2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>anaconda-runtime</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-nspr-devel</name>
+ <dependencylist>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-mouse</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>pyxf86config</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openldap-servers</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>make</dependency>
+ <dependency>openldap</dependency>
+ <dependency>openssl</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>pam</dependency>
+ <dependency>cyrus-sasl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-XML-Twig</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>stunnel</name>
+ <dependencylist>
+ <dependency>textutils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>glibc</dependency>
+ <dependency>words</dependency>
+ <dependency>net-tools</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc-common</dependency>
+ <dependency>make</dependency>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ddskk</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ <dependency>apel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeartwork-kworldclock</name>
+ <dependencylist>
+ <dependency>kdetoys</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-system-monitor</name>
+ <dependencylist>
+ <dependency>libgnomeui</dependency>
+ <dependency>libgtop2</dependency>
+ <dependency>libwnck</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>findutils</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>isicom</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>popt</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>finger-server</name>
+ <dependencylist>
+ <dependency>xinetd</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fontconfig</name>
+ <dependencylist>
+ <dependency>freetype</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>expat</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>up2date-gnome</name>
+ <dependencylist>
+ <dependency>up2date</dependency>
+ <dependency>usermode</dependency>
+ <dependency>pam</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>gnome-python2-canvas</dependency>
+ <dependency>usermode-gtk</dependency>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>patchutils</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sox-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-tools</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gcc-c++</name>
+ <dependencylist>
+ <dependency>gcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libstdc++-devel</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-print-utils</name>
+ <dependencylist>
+ <dependency>gimp-print</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gsl-devel</name>
+ <dependencylist>
+ <dependency>gsl</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>iptables</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kinput2-canna-wnn6</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>Canna-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Wnn6-SDK</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kviewshell-devel</name>
+ <dependencylist>
+ <dependency>kviewshell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-XML-Dumper</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>unix2dos</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>licq-text</name>
+ <dependencylist>
+ <dependency>licq</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libdbi-devel</name>
+ <dependencylist>
+ <dependency>libdbi</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>prelink</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kernel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-gcc-c++</name>
+ <dependencylist>
+ <dependency>compat-gcc</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>compat-libstdc++-devel</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdepim-cellphone</name>
+ <dependencylist>
+ <dependency>kdepim</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bitmap-fonts</name>
+ <dependencylist>
+ <dependency>fontconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdbm-devel</name>
+ <dependencylist>
+ <dependency>gdbm</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdvi</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>kviewshell</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeaddons-noatun</name>
+ <dependencylist>
+ <dependency>noatun</dependency>
+ <dependency>kdemultimedia-arts</dependency>
+ <dependency>arts</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>SDL</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aumix-X11</name>
+ <dependencylist>
+ <dependency>aumix</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>gpm</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libelf-devel</name>
+ <dependencylist>
+ <dependency>libelf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex-dvips</name>
+ <dependencylist>
+ <dependency>tetex</dependency>
+ <dependency>psutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-CPAN</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>patch</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mew-xemacs</name>
+ <dependencylist>
+ <dependency>xemacs</dependency>
+ <dependency>mew-common</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libelf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-kspy</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnome-devel</name>
+ <dependencylist>
+ <dependency>libgnome</dependency>
+ <dependency>zlib-devel</dependency>
+ <dependency>esound-devel</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>libbonobo-devel</dependency>
+ <dependency>GConf2-devel</dependency>
+ <dependency>gnome-vfs2-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>libxslt-devel</dependency>
+ <dependency>bonobo-activation-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>taipeifonts</name>
+ <dependencylist>
+ <dependency>grep</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2</name>
+ <dependencylist>
+ <dependency>gnome-python2-bonobo</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pcre-devel</name>
+ <dependencylist>
+ <dependency>pcre</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dump</name>
+ <dependencylist>
+ <dependency>setup</dependency>
+ <dependency>rmt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nut</name>
+ <dependencylist>
+ <dependency>nut-client</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssh-askpass</name>
+ <dependencylist>
+ <dependency>openssh</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rdesktop</name>
+ <dependencylist>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sed</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>LPRng</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>gawk</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pygtk2-libglade</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mgetty</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ark</name>
+ <dependencylist>
+ <dependency>zip</dependency>
+ <dependency>unzip</dependency>
+ <dependency>tar</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mdadm</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-xtrap-clients</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libaio</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libart_lgpl-devel</name>
+ <dependencylist>
+ <dependency>libart_lgpl</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xawtv</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libungif-progs</name>
+ <dependencylist>
+ <dependency>libungif</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-debug</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>modutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>mkinitrd</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>indexhtml</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libmng-static</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>timidity++</name>
+ <dependencylist>
+ <dependency>arts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libogg</dependency>
+ <dependency>slang</dependency>
+ <dependency>libvorbis</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>finger</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-debug-static</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glibc-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libpng</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeprint</name>
+ <dependencylist>
+ <dependency>urw-fonts</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>ghostscript-fonts</dependency>
+ <dependency>libxml</dependency>
+ <dependency>perl</dependency>
+ <dependency>XFree86</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>freetype</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>irb</name>
+ <dependencylist>
+ <dependency>ruby</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kterm</name>
+ <dependencylist>
+ <dependency>utempter</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libole2-devel</name>
+ <dependencylist>
+ <dependency>libole2</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-terminal</name>
+ <dependencylist>
+ <dependency>vte</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-DateManip</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wl</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ <dependency>wl-common</dependency>
+ <dependency>flim</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cyrus-sasl</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>db4</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>WindowMaker</name>
+ <dependencylist>
+ <dependency>cpp</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>WindowMaker-libs</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Guppi-devel</name>
+ <dependencylist>
+ <dependency>Guppi</dependency>
+ <dependency>gnome-libs-devel</dependency>
+ <dependency>gnome-print-devel</dependency>
+ <dependency>bonobo-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pydict</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>newt</name>
+ <dependencylist>
+ <dependency>slang</dependency>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xchat</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-print</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>urw-fonts</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>ghostscript-fonts</dependency>
+ <dependency>libxml</dependency>
+ <dependency>perl</dependency>
+ <dependency>XFree86</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>bash</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mrtg</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>gd</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-CGI</dependency>
+ <dependency>perl-URI</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xaw3d-devel</name>
+ <dependencylist>
+ <dependency>Xaw3d</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kfile-pdf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sysstat</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>vixie-cron</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-ISO8859-2</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>arts-devel</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>arts</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeartwork-screensavers</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>iptables-ipv6</name>
+ <dependencylist>
+ <dependency>iptables</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lsof</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>binutils</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>freetype-demos</name>
+ <dependencylist>
+ <dependency>freetype</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-RPM2</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libelf</dependency>
+ <dependency>popt</dependency>
+ <dependency>rpm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>namazu</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-File-MMagic</dependency>
+ <dependency>perl-NKF</dependency>
+ <dependency>kakasi</dependency>
+ <dependency>perl-Text-Kakasi</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ElectricFence</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>autoconvert-xchat</name>
+ <dependencylist>
+ <dependency>xchat</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Gtk-Perl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>gtkglarea</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng10</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-libwww-perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdicconf</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krbafs-utils</name>
+ <dependencylist>
+ <dependency>krbafs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>krb5-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>byacc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>memprof</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>binutils</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-rpm-config</name>
+ <dependencylist>
+ <dependency>rpm-build</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Japanese</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-slang</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Inline</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkglarea</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mod_perl</name>
+ <dependencylist>
+ <dependency>httpd</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-kernheaders</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>specspo</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-printer-gui</name>
+ <dependencylist>
+ <dependency>redhat-config-printer</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>gnome-python2-gtkhtml2</dependency>
+ <dependency>usermode</dependency>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncurses</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nfs-utils</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>portmap</dependency>
+ <dependency>sed</dependency>
+ <dependency>gawk</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gal</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gedit</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>eel2</dependency>
+ <dependency>gail</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeprint</dependency>
+ <dependency>libgnomeprintui</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libpng10</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>squirrelmail</name>
+ <dependencylist>
+ <dependency>httpd</dependency>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>tmpwatch</dependency>
+ <dependency>postfix</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>imap</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>metacity</name>
+ <dependencylist>
+ <dependency>redhat-artwork</dependency>
+ <dependency>bash</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xpdf-japanese</name>
+ <dependencylist>
+ <dependency>xpdf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librep</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>gmp</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>busybox-anaconda</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>readline-devel</name>
+ <dependencylist>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>amanda-client</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>amanda</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeaddons-knewsticker</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>kdenetwork-libs</dependency>
+ <dependency>knewsticker</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pam_krb5</name>
+ <dependencylist>
+ <dependency>krbafs</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>irda-utils</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>grep</dependency>
+ <dependency>modutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hwcrypto</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>gawk</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings-kmozilla</name>
+ <dependencylist>
+ <dependency>mozilla</dependency>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdebindings</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdparanoia-libs</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-DBD-MySQL</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-DBI</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mysql</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kaboodle</name>
+ <dependencylist>
+ <dependency>arts</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tripwire</name>
+ <dependencylist>
+ <dependency>sed</dependency>
+ <dependency>grep</dependency>
+ <dependency>gzip</dependency>
+ <dependency>tar</dependency>
+ <dependency>gawk</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdecl</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>net-snmp-devel</name>
+ <dependencylist>
+ <dependency>net-snmp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libart_lgpl</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>freetype-devel</name>
+ <dependencylist>
+ <dependency>freetype</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxml</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex</name>
+ <dependencylist>
+ <dependency>tmpwatch</dependency>
+ <dependency>dialog</dependency>
+ <dependency>ed</dependency>
+ <dependency>info</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>tetex-fonts</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ksymoops</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>glib</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libpng10</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Canna</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>setup</dependency>
+ <dependency>grep</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>Canna-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Wnn6-SDK-devel</name>
+ <dependencylist>
+ <dependency>Wnn6-SDK</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openmotif21</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>make</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>balsa</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>libesmtp</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>gtkhtml</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>openldap</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>pcre</dependency>
+ <dependency>pspell</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>slang-devel</name>
+ <dependencylist>
+ <dependency>slang</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ruby-mode</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vnc-server</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>bash</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>beecrypt-devel</name>
+ <dependencylist>
+ <dependency>beecrypt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gconf-editor</name>
+ <dependencylist>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ipchains</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>karm</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>itcl</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tk</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Korean</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-dbg-server</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL_image-devel</name>
+ <dependencylist>
+ <dependency>SDL_image</dependency>
+ <dependency>SDL-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kit</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fam-devel</name>
+ <dependencylist>
+ <dependency>fam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>exmh</name>
+ <dependencylist>
+ <dependency>nmh</dependency>
+ <dependency>tk</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Filter</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgcj-devel</name>
+ <dependencylist>
+ <dependency>zip</dependency>
+ <dependency>libgcj</dependency>
+ <dependency>gawk</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-utils</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>gnome-panel</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2-canvas</name>
+ <dependencylist>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxml10</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gqview</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>libpng</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ImageMagick-perl</name>
+ <dependencylist>
+ <dependency>ImageMagick</dependency>
+ <dependency>perl</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cups-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>GConf2-devel</name>
+ <dependencylist>
+ <dependency>GConf2</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>glib2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ghostscript-devel</name>
+ <dependencylist>
+ <dependency>ghostscript</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>slrn</name>
+ <dependencylist>
+ <dependency>slang</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ORBit2-devel</name>
+ <dependencylist>
+ <dependency>indent</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>linc-devel</dependency>
+ <dependency>libIDL-devel</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libIDL</dependency>
+ <dependency>linc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeadmin</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>usermode</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pam</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gzip</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>less</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lilo</name>
+ <dependencylist>
+ <dependency>mkinitrd</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Russian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nss_db-compat</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dejagnu</name>
+ <dependencylist>
+ <dependency>tcl</dependency>
+ <dependency>expect</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librsvg2</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>popt</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>libpng</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-uml</name>
+ <dependencylist>
+ <dependency>kernel-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-logviewer</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>spamassassin</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>perl-Net-DNS</dependency>
+ <dependency>perl-Time-HiRes</dependency>
+ <dependency>procmail</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>mrtg</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rhn-applet</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>rpm</dependency>
+ <dependency>rpm-python</dependency>
+ <dependency>rhnlib</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>up2date-gnome</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>gnome-python2-gtkhtml2</dependency>
+ <dependency>up2date</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mysql</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>info</dependency>
+ <dependency>grep</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl-DBI</dependency>
+ <dependency>perl-DBD-MySQL</dependency>
+ <dependency>perl</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-CGI</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netconfig</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeprintui</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>libgnomeprint</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Chinese</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libpcap</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3c-libwww</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdessh</name>
+ <dependencylist>
+ <dependency>openssh-clients</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tuxracer</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>SDL</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>tcl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>skkinput</name>
+ <dependencylist>
+ <dependency>dbskkd-cdb</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lokkit</name>
+ <dependencylist>
+ <dependency>iptables</dependency>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ <dependency>slang</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-utils</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>net-snmp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-pwdb</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kfax</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>kviewshell</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libattr-devel</name>
+ <dependencylist>
+ <dependency>libattr</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebase</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>xinitrc</dependency>
+ <dependency>XFree86-xdm</dependency>
+ <dependency>cdparanoia-libs</dependency>
+ <dependency>desktop-backgrounds-basic</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>redhat-artwork</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>lm_sensors</dependency>
+ <dependency>glibc</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>XFree86-xfs</dependency>
+ <dependency>bash</dependency>
+ <dependency>arts</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>openssl</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>openldap</dependency>
+ <dependency>pam</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libvorbis</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gd-devel</name>
+ <dependencylist>
+ <dependency>gd</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kjots</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cups-drivers-hpijs</name>
+ <dependencylist>
+ <dependency>hpijs</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-devel</name>
+ <dependencylist>
+ <dependency>postgresql-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eruby-devel</name>
+ <dependencylist>
+ <dependency>eruby-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>desktop-backgrounds-extra</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3m-el</name>
+ <dependencylist>
+ <dependency>w3m-el-common</dependency>
+ <dependency>emacs</dependency>
+ <dependency>flim</dependency>
+ <dependency>w3m</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bonobo-activation</name>
+ <dependencylist>
+ <dependency>linc</dependency>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ <dependency>glib2</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3c-libwww-devel</name>
+ <dependencylist>
+ <dependency>w3c-libwww</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ktimer</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>magicdev</name>
+ <dependencylist>
+ <dependency>gnome-mime-data</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-TermReadKey</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pyOpenSSL</name>
+ <dependencylist>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rsync</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnat</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libpng-devel</name>
+ <dependencylist>
+ <dependency>libpng</dependency>
+ <dependency>zlib-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>g-wrap-devel</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>g-wrap</dependency>
+ <dependency>guile-devel</dependency>
+ <dependency>bash</dependency>
+ <dependency>guile</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gcc-g77</name>
+ <dependencylist>
+ <dependency>gcc</dependency>
+ <dependency>libf2c</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>termcap</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex-latex</name>
+ <dependencylist>
+ <dependency>tetex</dependency>
+ <dependency>netpbm-progs</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vnc-doc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>klettres</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings-qtjava</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>libgcj</dependency>
+ <dependency>jdkgcj</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cWnn</name>
+ <dependencylist>
+ <dependency>FreeWnn-common</dependency>
+ <dependency>cWnn-common</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vnc</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xemacs</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>ctags</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>perl</dependency>
+ <dependency>Canna-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>openldap</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libpng</dependency>
+ <dependency>postgresql-libs</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>FreeWnn-libs</dependency>
+ <dependency>openmotif</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgal19</name>
+ <dependencylist>
+ <dependency>gal</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-kbugbuster</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sysklogd</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dvdrecord</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kedit</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>GConf2</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sylpheed</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgtop2</name>
+ <dependencylist>
+ <dependency>glib2</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc</name>
+ <dependencylist>
+ <dependency>glibc-common</dependency>
+ <dependency>basesystem</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86</name>
+ <dependencylist>
+ <dependency>utempter</dependency>
+ <dependency>cpp</dependency>
+ <dependency>XFree86-xauth</dependency>
+ <dependency>Glide3</dependency>
+ <dependency>XFree86-xfs</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>XFree86-base-fonts</dependency>
+ <dependency>pam</dependency>
+ <dependency>kernel</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>x3270-x11</name>
+ <dependencylist>
+ <dependency>x3270</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Wnn6-SDK</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdepim-pilot</name>
+ <dependencylist>
+ <dependency>kdepim</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>pilot-link</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtermcap-devel</name>
+ <dependencylist>
+ <dependency>libtermcap</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>epic</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtiff-devel</name>
+ <dependencylist>
+ <dependency>libtiff</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>FreeWnn-devel</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bc</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-gcc</name>
+ <dependencylist>
+ <dependency>binutils</dependency>
+ <dependency>glibc-devel</dependency>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkam-gimp</name>
+ <dependencylist>
+ <dependency>gtkam</dependency>
+ <dependency>gimp</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>gawk</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>gphoto2</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wget</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-kapptemplate</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libdbi-dbd-mysql</name>
+ <dependencylist>
+ <dependency>libdbi</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mysql</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sawfish</name>
+ <dependencylist>
+ <dependency>librep</dependency>
+ <dependency>rep-gtk</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>atk</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>gmp</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>imlib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pango</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdepim-devel</name>
+ <dependencylist>
+ <dependency>kdepim</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdemultimedia-arts</name>
+ <dependencylist>
+ <dependency>kdemultimedia-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>arts</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libogg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libvorbis</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>postgresql-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>pam</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mgetty-voice</name>
+ <dependencylist>
+ <dependency>mgetty</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>freetype-utils</name>
+ <dependencylist>
+ <dependency>freetype</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-bind</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>alchemist</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>bind</dependency>
+ <dependency>4Suite</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>words</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>FreeWnn-common</name>
+ <dependencylist>
+ <dependency>grep</dependency>
+ <dependency>textutils</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-xfree86</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>hwdata</dependency>
+ <dependency>kudzu</dependency>
+ <dependency>pyxf86config</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dialog</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pccts</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glib2</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncurses-c++-devel</name>
+ <dependencylist>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-kmtrace</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hesiod</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libmrproject-devel</name>
+ <dependencylist>
+ <dependency>libmrproject</dependency>
+ <dependency>gtk+-devel</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Finnish</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>webalizer</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>gd</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-BOOT</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>modutils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL_image</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>SDL</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>httpd-devel</name>
+ <dependencylist>
+ <dependency>libtool</dependency>
+ <dependency>httpd</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-gimp</name>
+ <dependencylist>
+ <dependency>gimp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xemacs-el</name>
+ <dependencylist>
+ <dependency>xemacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pilot-link095-compat</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>shapecfg</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>iproute</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dhcp-devel</name>
+ <dependencylist>
+ <dependency>dhcp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>GConf</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glib</dependency>
+ <dependency>oaf</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>libxml</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sox</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libogg</dependency>
+ <dependency>libvorbis</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bdflush</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pcre</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sane-frontends</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>gimp</dependency>
+ <dependency>sane-backends</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libusb</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-devel</name>
+ <dependencylist>
+ <dependency>pspell-devel</dependency>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sane-backends</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>grep</dependency>
+ <dependency>textutils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libusb</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-snmp</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>net-snmp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-ru</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>recode-devel</name>
+ <dependencylist>
+ <dependency>recode</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ctags</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tcpdump</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>zisofs-tools</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Polish</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>docbook-utils</name>
+ <dependencylist>
+ <dependency>docbook-style-dsssl</dependency>
+ <dependency>docbook-dtds</dependency>
+ <dependency>perl-SGMLSpm</dependency>
+ <dependency>which</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt-MySQL</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>mysql</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>traceroute</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cyrus-sasl-plain</name>
+ <dependencylist>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>file-roller</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mod_auth_pgsql</name>
+ <dependencylist>
+ <dependency>httpd</dependency>
+ <dependency>glibc</dependency>
+ <dependency>postgresql-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-truetype-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2-applet</name>
+ <dependencylist>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>gnome-panel</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libcapplet0-devel</name>
+ <dependencylist>
+ <dependency>libcapplet0</dependency>
+ <dependency>gnome-libs-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rp-pppoe</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>ppp</dependency>
+ <dependency>kernel</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>info</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pwlib-devel</name>
+ <dependencylist>
+ <dependency>pwlib</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>expat</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>attr</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libattr</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-kompare</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-it</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mtr</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cervisia</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fontconfig-devel</name>
+ <dependencylist>
+ <dependency>fontconfig</dependency>
+ <dependency>freetype-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>autofs</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>sed</dependency>
+ <dependency>gawk</dependency>
+ <dependency>textutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>grep</dependency>
+ <dependency>procps</dependency>
+ <dependency>redhat-release</dependency>
+ <dependency>glibc</dependency>
+ <dependency>hesiod</dependency>
+ <dependency>openldap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ppp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>autoconf</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>gawk</dependency>
+ <dependency>m4</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>perl</dependency>
+ <dependency>textutils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xinitrc</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>bash</dependency>
+ <dependency>switchdesk</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pam-devel</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-mail</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>compat-libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ypserv</name>
+ <dependencylist>
+ <dependency>gawk</dependency>
+ <dependency>make</dependency>
+ <dependency>portmap</dependency>
+ <dependency>bash</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>arpwatch</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-vfs</name>
+ <dependencylist>
+ <dependency>glib</dependency>
+ <dependency>GConf</dependency>
+ <dependency>oaf</dependency>
+ <dependency>gnome-mime-data</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mailx</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ksirc</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Date-Calc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl-Bit-Vector</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>diffutils</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ruby-docs</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>curl</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hpijs</name>
+ <dependencylist>
+ <dependency>ghostscript</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tix</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tk</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnuplot</name>
+ <dependencylist>
+ <dependency>gd</dependency>
+ <dependency>libpng</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-NKF</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nc</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kgeo</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kviewshell</name>
+ <dependencylist>
+ <dependency>kview</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cups-drivers</name>
+ <dependencylist>
+ <dependency>cups</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>plugger</name>
+ <dependencylist>
+ <dependency>mozilla</dependency>
+ <dependency>mikmod</dependency>
+ <dependency>xloadimage</dependency>
+ <dependency>sox</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>FreeWnn</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>grep</dependency>
+ <dependency>textutils</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>FreeWnn-common</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>korn</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>kdenetwork-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-session</name>
+ <dependencylist>
+ <dependency>redhat-artwork</dependency>
+ <dependency>redhat-logos</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeartwork</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>GConf-devel</name>
+ <dependencylist>
+ <dependency>GConf</dependency>
+ <dependency>ORBit-devel</dependency>
+ <dependency>glib-devel</dependency>
+ <dependency>oaf-devel</dependency>
+ <dependency>gtk+-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Digest-HMAC</name>
+ <dependencylist>
+ <dependency>perl-Digest-SHA1</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-desktop</name>
+ <dependencylist>
+ <dependency>redhat-artwork</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>htdig-web</name>
+ <dependencylist>
+ <dependency>htdig</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libogg</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ncompress</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pwlib</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ <dependency>expat</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dos2unix</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt2-designer</name>
+ <dependencylist>
+ <dependency>qt2-devel</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libmng</dependency>
+ <dependency>libpng</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xemacs-info</name>
+ <dependencylist>
+ <dependency>xemacs</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hanterm-xf</name>
+ <dependencylist>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xaw3d</dependency>
+ <dependency>ttfonts-ko</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>utempter</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomecanvas</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>time</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kxmlrpcd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-lokkit</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>iptables</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nasm</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gv</name>
+ <dependencylist>
+ <dependency>ghostscript</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xaw3d</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cyrus-sasl-md5</name>
+ <dependencylist>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gkermit</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>iputils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-HTML-Tagset</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-cyrillic-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>python-optik</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-switchmail</name>
+ <dependencylist>
+ <dependency>newt</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>python</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pciutils-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>recode</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-pgsql</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>postgresql-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fileutils</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ <dependency>libacl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xsnow</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wmix</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dtach</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>klprfax</name>
+ <dependencylist>
+ <dependency>LPRng</dependency>
+ <dependency>kdebase</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gcc-objc</name>
+ <dependencylist>
+ <dependency>gcc</dependency>
+ <dependency>libobjc</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kview</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rpm-devel</name>
+ <dependencylist>
+ <dependency>rpm</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>libelf</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tcllib</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lftp</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>unzip</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>psacct</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssl096</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kcc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>linc-devel</name>
+ <dependencylist>
+ <dependency>linc</dependency>
+ <dependency>pkgconfig</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mkisofs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-Xnest</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk2</name>
+ <dependencylist>
+ <dependency>glib2</dependency>
+ <dependency>atk</dependency>
+ <dependency>pango</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk+</name>
+ <dependencylist>
+ <dependency>glib</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>apmd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ghostscript</name>
+ <dependencylist>
+ <dependency>VFlib2</dependency>
+ <dependency>zlib</dependency>
+ <dependency>libpng</dependency>
+ <dependency>glib</dependency>
+ <dependency>urw-fonts</dependency>
+ <dependency>ghostscript-fonts</dependency>
+ <dependency>Omni</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>gimp-print</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>freetype</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bind-devel</name>
+ <dependencylist>
+ <dependency>bind</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnucash</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libghttp</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>gtkhtml</dependency>
+ <dependency>guile</dependency>
+ <dependency>Guppi</dependency>
+ <dependency>g-wrap</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-CPAN</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dia</name>
+ <dependencylist>
+ <dependency>libxml</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>popt</dependency>
+ <dependency>libunicode</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fbset</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-devel</name>
+ <dependencylist>
+ <dependency>mozilla</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>compat-libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>a2ps</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>info</dependency>
+ <dependency>psutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>booty</name>
+ <dependencylist>
+ <dependency>rhpl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdenetwork-libs</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rusers</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fetchmail</name>
+ <dependencylist>
+ <dependency>postfix</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>hesiod</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tora</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nss_ldap</name>
+ <dependencylist>
+ <dependency>nscd</dependency>
+ <dependency>grep</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>sed</dependency>
+ <dependency>textutils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>openldap</dependency>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2-nautilus</name>
+ <dependencylist>
+ <dependency>orbit-python</dependency>
+ <dependency>nautilus</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>eel2</dependency>
+ <dependency>gail</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dev</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sed</dependency>
+ <dependency>textutils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>anaconda</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>rpm404-python</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>python</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mktemp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jisksp14</name>
+ <dependencylist>
+ <dependency>XFree86-xfs</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>imlib-devel</name>
+ <dependencylist>
+ <dependency>imlib</dependency>
+ <dependency>libtiff-devel</dependency>
+ <dependency>libjpeg-devel</dependency>
+ <dependency>zlib-devel</dependency>
+ <dependency>gtk+-devel</dependency>
+ <dependency>libungif-devel</dependency>
+ <dependency>XFree86-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mkinitrd</name>
+ <dependencylist>
+ <dependency>dev</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>bash</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>mount</dependency>
+ <dependency>gzip</dependency>
+ <dependency>tar</dependency>
+ <dependency>modutils</dependency>
+ <dependency>losetup</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>findutils</dependency>
+ <dependency>lvm</dependency>
+ <dependency>filesystem</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>reiserfs-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-dbg-base</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kakasi</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nvi-m17n</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>tcsh</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Catalan</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bridge-utils-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-doc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>macutils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gawk</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tcl</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>raidtools</name>
+ <dependencylist>
+ <dependency>MAKEDEV</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-panel</name>
+ <dependencylist>
+ <dependency>gnome-desktop</dependency>
+ <dependency>gawk</dependency>
+ <dependency>textutils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libpng</dependency>
+ <dependency>popt</dependency>
+ <dependency>libwnck</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>octave</name>
+ <dependencylist>
+ <dependency>gnuplot</dependency>
+ <dependency>less</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>blas</dependency>
+ <dependency>libf2c</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>lapack</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-devel</name>
+ <dependencylist>
+ <dependency>gtk+-devel</dependency>
+ <dependency>gimp</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libbonoboui-devel</name>
+ <dependencylist>
+ <dependency>libbonoboui</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>bonobo-activation-devel</dependency>
+ <dependency>libbonobo-devel</dependency>
+ <dependency>libgnomecanvas-devel</dependency>
+ <dependency>libgnome-devel</dependency>
+ <dependency>libart_lgpl-devel</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libglade2-devel</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xpdf</name>
+ <dependencylist>
+ <dependency>urw-fonts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>unixODBC-kde</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>unixODBC</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xpdf-korean</name>
+ <dependencylist>
+ <dependency>xpdf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>scrollkeeper</name>
+ <dependencylist>
+ <dependency>intltool</dependency>
+ <dependency>docbook-dtds</dependency>
+ <dependency>openjade</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeui</name>
+ <dependencylist>
+ <dependency>ORBit2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>esound</dependency>
+ <dependency>Xft</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>popt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdda2wav</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libraw1394</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bind-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-en-gb</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-language</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kudzu</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>modutils</dependency>
+ <dependency>pam</dependency>
+ <dependency>hwdata</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nmap</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-ja</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>comsat</name>
+ <dependencylist>
+ <dependency>xinetd</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-fr</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pxe</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-psm</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>mozilla-nss</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>compat-libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>zip</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libstdc++-devel</name>
+ <dependencylist>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>perl-Filter</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kregexpeditor-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dietlibc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3c-libwww-apps</name>
+ <dependencylist>
+ <dependency>w3c-libwww</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>telnet-server</name>
+ <dependencylist>
+ <dependency>xinetd</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pygtk2-devel</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sudo</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bug-buddy</name>
+ <dependencylist>
+ <dependency>gdb</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Hebrew</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ntsysv</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pinfo</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jisksp16-1990</name>
+ <dependencylist>
+ <dependency>XFree86-xfs</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netdump</name>
+ <dependencylist>
+ <dependency>openssh</dependency>
+ <dependency>openssh-clients</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>gawk</dependency>
+ <dependency>net-tools</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-services</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>gnome-python2-canvas</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>usermode</dependency>
+ <dependency>usermode-gtk</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lm_sensors</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xfig</name>
+ <dependencylist>
+ <dependency>transfig</dependency>
+ <dependency>xpdf</dependency>
+ <dependency>ImageMagick</dependency>
+ <dependency>aspell</dependency>
+ <dependency>htmlview</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>Xaw3d</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libjpeg-devel</name>
+ <dependencylist>
+ <dependency>libjpeg</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>flim-xemacs</name>
+ <dependencylist>
+ <dependency>xemacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xpdf-chinese-traditional</name>
+ <dependencylist>
+ <dependency>xpdf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sip-devel</name>
+ <dependencylist>
+ <dependency>sip</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>htmlview</name>
+ <dependencylist>
+ <dependency>redhat-menus</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xsri</name>
+ <dependencylist>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tar</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-File-MMagic</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wu-ftpd</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>openssl</dependency>
+ <dependency>xinetd</dependency>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pilot-link-devel</name>
+ <dependencylist>
+ <dependency>pilot-link</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>keduca</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Hungarian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>imlib</name>
+ <dependencylist>
+ <dependency>libtiff</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>zlib</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libungif</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>logrotate</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cWnn-common</name>
+ <dependencylist>
+ <dependency>FreeWnn-common</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-libs</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>imlib</dependency>
+ <dependency>esound</dependency>
+ <dependency>htmlview</dependency>
+ <dependency>utempter</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng10</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>htdig</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rdist</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-devel</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc-kernheaders</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gcc</name>
+ <dependencylist>
+ <dependency>cpp</dependency>
+ <dependency>binutils</dependency>
+ <dependency>glibc-devel</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sip</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>python</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mod_ssl</name>
+ <dependencylist>
+ <dependency>openssl</dependency>
+ <dependency>dev</dependency>
+ <dependency>textutils</dependency>
+ <dependency>httpd</dependency>
+ <dependency>make</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kghostview</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librsvg</name>
+ <dependencylist>
+ <dependency>glib</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>libxml</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>popt</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libpng</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>fonts-ISO8859-2-75dpi</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-desktop-devel</name>
+ <dependencylist>
+ <dependency>gnome-desktop</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>GConf2-devel</dependency>
+ <dependency>gnome-vfs2-devel</dependency>
+ <dependency>libgnomeui-devel</dependency>
+ <dependency>libgnome-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openoffice-libs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rep-gtk</name>
+ <dependencylist>
+ <dependency>librep</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>bash</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>guile-devel</name>
+ <dependencylist>
+ <dependency>guile</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sndconfig</name>
+ <dependencylist>
+ <dependency>sox</dependency>
+ <dependency>kudzu</dependency>
+ <dependency>aumix</dependency>
+ <dependency>kernel</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxslt-python</name>
+ <dependencylist>
+ <dependency>libxslt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tcsh</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nut-client</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-en-ca</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>librpm404-devel</name>
+ <dependencylist>
+ <dependency>librpm404</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nasm-rdoff</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>caching-nameserver</name>
+ <dependencylist>
+ <dependency>bind</dependency>
+ <dependency>textutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wmapm</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pspell</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kljettool</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pyxf86config</name>
+ <dependencylist>
+ <dependency>glib2</dependency>
+ <dependency>python</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libf2c</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>less</dependency>
+ <dependency>groff</dependency>
+ <dependency>findutils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>zlib-devel</name>
+ <dependencylist>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>miniChinput</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>imlib</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bind</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>textutils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sed</dependency>
+ <dependency>bind-utils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>logwatch</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>textutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>grep</dependency>
+ <dependency>mailx</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libglade2-devel</name>
+ <dependencylist>
+ <dependency>libglade2</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pvm</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>tcsh</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rpm404-python</name>
+ <dependencylist>
+ <dependency>librpm404</dependency>
+ <dependency>python</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>talk</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libao</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt-Xt</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libuser</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>openldap</dependency>
+ <dependency>pam</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libole2</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nss_db</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>make</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sgml-common</name>
+ <dependencylist>
+ <dependency>sh-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kbd</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>usermode</dependency>
+ <dependency>sed</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gcc-gnat</name>
+ <dependencylist>
+ <dependency>gcc</dependency>
+ <dependency>libgnat</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Archive-Tar</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pine</name>
+ <dependencylist>
+ <dependency>krb5-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openldap</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mutt</name>
+ <dependencylist>
+ <dependency>slang</dependency>
+ <dependency>postfix</dependency>
+ <dependency>wget</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cyrus-sasl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>transfig</name>
+ <dependencylist>
+ <dependency>tcsh</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>anaconda-images</name>
+ <dependencylist>
+ <dependency>anaconda-runtime</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netatalk-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tmpwatch</name>
+ <dependencylist>
+ <dependency>psmisc</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wvdial</name>
+ <dependencylist>
+ <dependency>ppp</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>lockdev</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libwvstreams</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL_net-devel</name>
+ <dependencylist>
+ <dependency>SDL_net</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bonobo-conf-devel</name>
+ <dependencylist>
+ <dependency>bonobo-conf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdemultimedia-devel</name>
+ <dependencylist>
+ <dependency>kdemultimedia-arts</dependency>
+ <dependency>noatun</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libglade2</name>
+ <dependencylist>
+ <dependency>libxml2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Afrikaans</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jpilot</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>pilot-link</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pilot-link</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libpng</dependency>
+ <dependency>readline</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ruby</name>
+ <dependencylist>
+ <dependency>ruby-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xcpustate</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Text-Kakasi</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>kakasi</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>apel</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>at-spi-devel</name>
+ <dependencylist>
+ <dependency>at-spi</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libbonobo-devel</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>gail-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>flex</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>am-utils</name>
+ <dependencylist>
+ <dependency>portmap</dependency>
+ <dependency>grep</dependency>
+ <dependency>gawk</dependency>
+ <dependency>findutils</dependency>
+ <dependency>info</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>hesiod</dependency>
+ <dependency>openldap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sendmail-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Swedish</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>python</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>expat</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>gmp</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>splint</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdegames</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>arts</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3m-el-xemacs</name>
+ <dependencylist>
+ <dependency>w3m-el-common</dependency>
+ <dependency>xemacs</dependency>
+ <dependency>flim-xemacs</dependency>
+ <dependency>w3m</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SysVinit</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>groff-gxditview</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>net-snmp-utils</name>
+ <dependencylist>
+ <dependency>net-snmp</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pango</name>
+ <dependencylist>
+ <dependency>glib2</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>freetype</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wl-common</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libstdc++</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krb5-devel</name>
+ <dependencylist>
+ <dependency>krb5-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>knm_new</name>
+ <dependencylist>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-gcc-java</name>
+ <dependencylist>
+ <dependency>compat-gcc</dependency>
+ <dependency>compat-libgcj</dependency>
+ <dependency>compat-libgcj-devel</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libjpeg</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cleanfeed</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>expat-devel</name>
+ <dependencylist>
+ <dependency>expat</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wordtrans-qt</name>
+ <dependencylist>
+ <dependency>wordtrans</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qtcups-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>psmisc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Czech</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xmms-devel</name>
+ <dependencylist>
+ <dependency>xmms</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kpf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wordtrans-kde</name>
+ <dependencylist>
+ <dependency>wordtrans</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bonobo</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>libxml</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>popt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssh-askpass-gnome</name>
+ <dependencylist>
+ <dependency>openssh</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeaddons-kicker</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ed</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openoffice</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>perl</dependency>
+ <dependency>openoffice-libs</dependency>
+ <dependency>openoffice-i18n</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>mozilla-mail</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xtoolwait</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gpm-devel</name>
+ <dependencylist>
+ <dependency>gpm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgcc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>zebra</name>
+ <dependencylist>
+ <dependency>grep</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>pam</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libmng</name>
+ <dependencylist>
+ <dependency>zlib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bitmap-fonts-cjk</name>
+ <dependencylist>
+ <dependency>fontconfig</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgcj</name>
+ <dependencylist>
+ <dependency>zip</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pvm-gui</name>
+ <dependencylist>
+ <dependency>pvm</dependency>
+ <dependency>tcsh</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tk</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nhpf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeutils-laptop</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bzip2-devel</name>
+ <dependencylist>
+ <dependency>bzip2</dependency>
+ <dependency>bzip2-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-Mesa-libGL</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gperf</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rwall-server</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>portmap</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtabe</name>
+ <dependencylist>
+ <dependency>db4</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-odbc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dhcp</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mtx</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openjade</name>
+ <dependencylist>
+ <dependency>sgml-common</dependency>
+ <dependency>docbook-dtds</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdepim</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-devel</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Parse-Yapp</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-audio-extra</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kcoloredit</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt2-devel</name>
+ <dependencylist>
+ <dependency>qt2</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libmng</dependency>
+ <dependency>libpng</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-ISO8859-15-75dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>procmail</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dev86</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnumeric</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>libglade</dependency>
+ <dependency>guile</dependency>
+ <dependency>gnome-print</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libole2</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rdate</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-switchmail-gnome</name>
+ <dependencylist>
+ <dependency>redhat-switchmail</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>chkconfig</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-XML-Encoding</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt-ODBC</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>unixODBC</dependency>
+ <dependency>Xft</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-common</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-xdm</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>pam</dependency>
+ <dependency>xinitrc</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdict</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rootfiles</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt-devel</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>Xft</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openoffice-i18n</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>blas-man</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libdbi-dbd-pgsql</name>
+ <dependencylist>
+ <dependency>libdbi</dependency>
+ <dependency>glibc</dependency>
+ <dependency>postgresql-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rarpd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>slocate</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mt-st</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tftp-server</name>
+ <dependencylist>
+ <dependency>xinetd</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-db</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>tcl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-debug</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glibc-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tWnn</name>
+ <dependencylist>
+ <dependency>FreeWnn-common</dependency>
+ <dependency>cWnn-common</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tcp_wrappers</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pam_smb</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mtools</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pygtk2</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-French</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openldap12</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>open</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-nl</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-no</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vim-minimal</name>
+ <dependencylist>
+ <dependency>vim-common</dependency>
+ <dependency>libacl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rmt</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL_net</name>
+ <dependencylist>
+ <dependency>SDL</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-profile</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>emacspeak</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kWnn</name>
+ <dependencylist>
+ <dependency>FreeWnn-common</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-it</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>groff-perl</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>urw-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libkscan-devel</name>
+ <dependencylist>
+ <dependency>libkscan</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>alchemist-devel</name>
+ <dependencylist>
+ <dependency>alchemist</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kmail</name>
+ <dependencylist>
+ <dependency>kdenetwork-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xmlto</name>
+ <dependencylist>
+ <dependency>docbook-style-xsl</dependency>
+ <dependency>passivetex</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>docbook-dtds</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-vfs-devel</name>
+ <dependencylist>
+ <dependency>gnome-vfs</dependency>
+ <dependency>GConf-devel</dependency>
+ <dependency>oaf-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>SDL-devel</name>
+ <dependencylist>
+ <dependency>SDL</dependency>
+ <dependency>XFree86-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>comps-extras</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mgetty-sendfax</name>
+ <dependencylist>
+ <dependency>mgetty</dependency>
+ <dependency>netpbm-progs</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rsh</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-perl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>postgresql-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdelibs-devel</name>
+ <dependencylist>
+ <dependency>qt-devel</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>pcre-devel</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kcalc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ftpcopy</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>psutils</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>authconfig</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>glib2</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libusb</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hdparm</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-100dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libcap-devel</name>
+ <dependencylist>
+ <dependency>libcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-server</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>postgresql</dependency>
+ <dependency>postgresql-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xlt</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jdkgcj</name>
+ <dependencylist>
+ <dependency>gcc-java</dependency>
+ <dependency>libgcj</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-pt</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-HTML-Parser</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-HTML-Tagset</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kruler</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xaw3d</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ttcp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-source</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>gawk</dependency>
+ <dependency>gcc</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lm_sensors-devel</name>
+ <dependencylist>
+ <dependency>lm_sensors</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xtest</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gftp</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>docbook-dtds</name>
+ <dependencylist>
+ <dependency>xml-common</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>perl</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>sgml-common</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>privoxy</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>httpd-manual</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>zsh</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>info</dependency>
+ <dependency>libcap</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pidentd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sed</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xft-devel</name>
+ <dependencylist>
+ <dependency>Xft</dependency>
+ <dependency>freetype-devel</dependency>
+ <dependency>fontconfig-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>setserial</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libobjc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bonobo-devel</name>
+ <dependencylist>
+ <dependency>bonobo</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>control-center</name>
+ <dependencylist>
+ <dependency>xscreensaver</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>esound</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>freetype</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-desktop</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>Xft</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xisdnload</name>
+ <dependencylist>
+ <dependency>isdn4k-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xboard</name>
+ <dependencylist>
+ <dependency>gnuchess</dependency>
+ <dependency>info</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkhtml2</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>gail</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>pango</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ypbind</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>portmap</dependency>
+ <dependency>yp-tools</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>licq</name>
+ <dependencylist>
+ <dependency>htmlview</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>inews</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libelf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-securitylevel</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>crontabs</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-vfs2-extras</name>
+ <dependencylist>
+ <dependency>gnome-vfs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>net-snmp</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>libelf</dependency>
+ <dependency>popt</dependency>
+ <dependency>rpm</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dbskkd-cdb</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Greek</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libglade-devel</name>
+ <dependencylist>
+ <dependency>libglade</dependency>
+ <dependency>gnome-libs-devel</dependency>
+ <dependency>libxml-devel</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>VFlib2-conf-ja</name>
+ <dependencylist>
+ <dependency>VFlib2</dependency>
+ <dependency>ttfonts-ja</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vixie-cron</name>
+ <dependencylist>
+ <dependency>sysklogd</dependency>
+ <dependency>bash</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-libxml-enno</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-DateManip</dependency>
+ <dependency>perl-libwww-perl</dependency>
+ <dependency>perl-Parse-Yapp</dependency>
+ <dependency>perl-XML-Encoding</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>which</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libcap</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-packages</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>usermode</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>comps-extras</dependency>
+ <dependency>rpm404-python</dependency>
+ <dependency>libxml2-python</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>samba-client</name>
+ <dependencylist>
+ <dependency>samba-common</dependency>
+ <dependency>bash</dependency>
+ <dependency>libacl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>pam</dependency>
+ <dependency>popt</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kscd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hwbrowser</name>
+ <dependencylist>
+ <dependency>gnome-python2</dependency>
+ <dependency>usermode</dependency>
+ <dependency>kudzu</dependency>
+ <dependency>parted</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cracklib-dicts</name>
+ <dependencylist>
+ <dependency>words</dependency>
+ <dependency>bash</dependency>
+ <dependency>cracklib</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-ko</name>
+ <dependencylist>
+ <dependency>man</dependency>
+ <dependency>gzip</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-pt_BR</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gal-devel</name>
+ <dependencylist>
+ <dependency>gal</dependency>
+ <dependency>libgal19</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Norwegian-Nynorsk</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2-gtkhtml2</name>
+ <dependencylist>
+ <dependency>gtkhtml2</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wmclock</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdetoys</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-nspr</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eject</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdoc</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>strace</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libbonobo</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pango-devel</name>
+ <dependencylist>
+ <dependency>pango</dependency>
+ <dependency>XFree86-devel</dependency>
+ <dependency>glib2-devel</dependency>
+ <dependency>freetype-devel</dependency>
+ <dependency>fontconfig-devel</dependency>
+ <dependency>Xft-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>elinks</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gpm</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hwdata</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libusb-devel</name>
+ <dependencylist>
+ <dependency>libusb</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>readline41</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex-xdvi</name>
+ <dependencylist>
+ <dependency>tetex-fonts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>w3c-libwww</dependency>
+ <dependency>VFlib2</dependency>
+ <dependency>Xaw3d</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ktouch</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gail</name>
+ <dependencylist>
+ <dependency>atk</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>iproute</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>docbook-style-xsl</name>
+ <dependencylist>
+ <dependency>docbook-dtds</dependency>
+ <dependency>xml-common</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libkscan</name>
+ <dependencylist>
+ <dependency>sane-backends</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libusb</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ImageMagick-devel</name>
+ <dependencylist>
+ <dependency>ImageMagick</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>docbook-utils-pdf</name>
+ <dependencylist>
+ <dependency>tetex-dvips</dependency>
+ <dependency>jadetex</dependency>
+ <dependency>docbook-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>db4-java</name>
+ <dependencylist>
+ <dependency>db4</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgtop-examples</name>
+ <dependencylist>
+ <dependency>libgtop</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>glib</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>guile</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libIDL</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>linc</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openldap-clients</name>
+ <dependencylist>
+ <dependency>openldap</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>pam</dependency>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bash-doc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>unixODBC-devel</name>
+ <dependencylist>
+ <dependency>unixODBC</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krb5-workstation</name>
+ <dependencylist>
+ <dependency>krb5-libs</dependency>
+ <dependency>grep</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>up2date</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>rpm</dependency>
+ <dependency>rpm-python</dependency>
+ <dependency>gnupg</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>rhnlib</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>mkinitrd</dependency>
+ <dependency>python-optik</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>newt</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgtop2-devel</name>
+ <dependencylist>
+ <dependency>libgtop2</dependency>
+ <dependency>glib2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ethtool</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ksnapshot</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vorbis-tools</name>
+ <dependencylist>
+ <dependency>libogg</dependency>
+ <dependency>libvorbis</dependency>
+ <dependency>libao</dependency>
+ <dependency>glibc</dependency>
+ <dependency>curl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Xlt-devel</name>
+ <dependencylist>
+ <dependency>Xlt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-rootpassword</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>libuser</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pnm2ppa</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdegames-devel</name>
+ <dependencylist>
+ <dependency>kdegames</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cpio</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kfract</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nmap-frontend</name>
+ <dependencylist>
+ <dependency>nmap</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex-fonts</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>textutils</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>util-linux</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>db4</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-Xvfb</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>evolution</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>GConf</dependency>
+ <dependency>oaf</dependency>
+ <dependency>mozilla-nss</dependency>
+ <dependency>mozilla-nspr</dependency>
+ <dependency>glibc</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>perl</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bonobo-conf</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>gnome-vfs</dependency>
+ <dependency>gnome-pilot</dependency>
+ <dependency>gtkhtml</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>openldap</dependency>
+ <dependency>pilot-link</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lesstif</name>
+ <dependencylist>
+ <dependency>XFree86</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glibc-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>gd</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>Xft</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libmng</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libvorbis-devel</name>
+ <dependencylist>
+ <dependency>libogg-devel</dependency>
+ <dependency>libvorbis</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krb5-libs</name>
+ <dependencylist>
+ <dependency>grep</dependency>
+ <dependency>glibc</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bison</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>net-tools</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libvorbis</name>
+ <dependencylist>
+ <dependency>libogg</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libunicode-devel</name>
+ <dependencylist>
+ <dependency>libunicode</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>amanda</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>grep</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>tar</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>autoconvert</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt2-static</name>
+ <dependencylist>
+ <dependency>qt2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>modutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>mkinitrd</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>asp2php-gtk</name>
+ <dependencylist>
+ <dependency>asp2php</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lockdev-devel</name>
+ <dependencylist>
+ <dependency>lockdev</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openmotif-devel</name>
+ <dependencylist>
+ <dependency>openmotif</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-manual</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>adjtimex</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3m-el-common</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-nfs</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>nfs-utils</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>efax</name>
+ <dependencylist>
+ <dependency>make</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>MySQL-python</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>mx</dependency>
+ <dependency>mysql</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tmake</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mailcap</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libghttp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdepasswd</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-menus</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Portuguese</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-release</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-ca</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ORBit2</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ipvsadm</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>VFlib2-VFjfm</name>
+ <dependencylist>
+ <dependency>VFlib2</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnome</name>
+ <dependencylist>
+ <dependency>glib2</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>utempter</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>esound</dependency>
+ <dependency>linc</dependency>
+ <dependency>popt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krbafs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libunicode</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-network</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>usermode</dependency>
+ <dependency>alchemist</dependency>
+ <dependency>kudzu</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>gnome-python2</dependency>
+ <dependency>wvdial</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>gnome-python2-canvas</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tux</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-proc</name>
+ <dependencylist>
+ <dependency>procps</dependency>
+ <dependency>usermode</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt2</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libmng</dependency>
+ <dependency>libpng</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>audiofile-devel</name>
+ <dependencylist>
+ <dependency>audiofile</dependency>
+ <dependency>pkgconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kakasi-dict</name>
+ <dependencylist>
+ <dependency>kakasi</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>screen</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ <dependency>utempter</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lynx</name>
+ <dependencylist>
+ <dependency>indexhtml</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>zlib</dependency>
+ <dependency>perl-CGI</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>MyODBC</name>
+ <dependencylist>
+ <dependency>unixODBC</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mysql</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nscd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kfloppy</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>joe</name>
+ <dependencylist>
+ <dependency>ncurses</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vte</name>
+ <dependencylist>
+ <dependency>bitmap-fonts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>atk</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>freetype</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>Xft</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-xauth</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtk-doc</name>
+ <dependencylist>
+ <dependency>docbook-utils</dependency>
+ <dependency>openjade</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libghttp-devel</name>
+ <dependencylist>
+ <dependency>libghttp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tkinter</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>tcl</dependency>
+ <dependency>tix</dependency>
+ <dependency>tk</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ORBit-devel</name>
+ <dependencylist>
+ <dependency>indent</dependency>
+ <dependency>glib-devel</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-XML-Grove</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-libxml-perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Canna-devel</name>
+ <dependencylist>
+ <dependency>Canna-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdrecord</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lockdev</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>filesystem</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kakasi-devel</name>
+ <dependencylist>
+ <dependency>kakasi</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ami</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-pilot</name>
+ <dependencylist>
+ <dependency>pilot-link</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>libglade</dependency>
+ <dependency>libxml</dependency>
+ <dependency>gnome-vfs</dependency>
+ <dependency>redhat-menus</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libcapplet0</dependency>
+ <dependency>esound</dependency>
+ <dependency>GConf</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>oaf</dependency>
+ <dependency>popt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mtr-gtk</name>
+ <dependencylist>
+ <dependency>mtr</dependency>
+ <dependency>usermode</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>switchdesk-kde</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libattr</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>modutils</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kappa20</name>
+ <dependencylist>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-DBI</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdk-pixbuf-gnome</name>
+ <dependencylist>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lesstif-devel</name>
+ <dependencylist>
+ <dependency>XFree86-devel</dependency>
+ <dependency>lesstif</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kernel-smp</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>modutils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>mkinitrd</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-German</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mysql-server</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>mysql</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>at-spi</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>gail</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>db4-devel</name>
+ <dependencylist>
+ <dependency>db4</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Glide3-devel</name>
+ <dependencylist>
+ <dependency>Glide3</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lv</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>arts</name>
+ <dependencylist>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-switch-printer</name>
+ <dependencylist>
+ <dependency>newt</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>python</dependency>
+ <dependency>sh-utils</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-dbg-client</name>
+ <dependencylist>
+ <dependency>php-dbg-base</dependency>
+ <dependency>php-dbg-server</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>pcre</dependency>
+ <dependency>readline</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>yp-tools</name>
+ <dependencylist>
+ <dependency>ypbind</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libacl</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libattr</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>PyQt-devel</name>
+ <dependencylist>
+ <dependency>PyQt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Omni-foomatic</name>
+ <dependencylist>
+ <dependency>Omni</dependency>
+ <dependency>foomatic</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-imap</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rhnlib</name>
+ <dependencylist>
+ <dependency>pyOpenSSL</dependency>
+ <dependency>python</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssl-perl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glib2-devel</name>
+ <dependencylist>
+ <dependency>pkgconfig</dependency>
+ <dependency>glib2</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>radvd</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cracklib</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php-odbc</name>
+ <dependencylist>
+ <dependency>php</dependency>
+ <dependency>perl</dependency>
+ <dependency>grep</dependency>
+ <dependency>unixODBC</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>esound</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>audiofile</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>talk-server</name>
+ <dependencylist>
+ <dependency>xinetd</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Chinese-Big5</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rsh-server</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-URI</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>doxygen</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nasm-doc</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>chkfontpath</name>
+ <dependencylist>
+ <dependency>XFree86-xfs</dependency>
+ <dependency>SysVinit</dependency>
+ <dependency>glibc</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>utempter</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mgetty-viewfax</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libogg-devel</name>
+ <dependencylist>
+ <dependency>libogg</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netpbm-progs</name>
+ <dependencylist>
+ <dependency>netpbm</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mount</name>
+ <dependencylist>
+ <dependency>mktemp</dependency>
+ <dependency>gawk</dependency>
+ <dependency>diffutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>licq-kde</name>
+ <dependencylist>
+ <dependency>licq</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cvs</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>tcsh</dependency>
+ <dependency>perl</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pstack</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netpbm</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>MagicPoint</name>
+ <dependencylist>
+ <dependency>watanabe-vf</dependency>
+ <dependency>VFlib2</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libmng</dependency>
+ <dependency>libpng</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libungif</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgtop</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>glib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gd-progs</name>
+ <dependencylist>
+ <dependency>gd</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>procps</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-de</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kfile-png</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pychecker</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hexedit</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-da</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex-doc</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxml2</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-de</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>squid</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>logrotate</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openldap</dependency>
+ <dependency>pam</dependency>
+ <dependency>perl-URI</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Ukrainian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aspell-da</name>
+ <dependencylist>
+ <dependency>aspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>imlib-cfgeditor</name>
+ <dependencylist>
+ <dependency>imlib</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Brazil</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>chkconfig</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>texinfo</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>switchdesk</name>
+ <dependencylist>
+ <dependency>textutils</dependency>
+ <dependency>desktop-file-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ttfonts-zh_TW</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>PyXML</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mpage</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>whois</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Net-DNS</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-Digest-HMAC</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pax</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-ISO8859-9-100dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>iscsi</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sane-backends-devel</name>
+ <dependencylist>
+ <dependency>sane-backends</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgail-gnome</name>
+ <dependencylist>
+ <dependency>atk</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>at-spi</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glade2</name>
+ <dependencylist>
+ <dependency>gail-devel</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeprint</dependency>
+ <dependency>libgnomeprintui</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>units</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>psgml</name>
+ <dependencylist>
+ <dependency>sgml-common</dependency>
+ <dependency>emacs</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Digest-SHA1</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pan</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ddskk-xemacs</name>
+ <dependencylist>
+ <dependency>xemacs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-cs</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-nss-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>unixODBC</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>qt</dependency>
+ <dependency>readline</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bzip2</name>
+ <dependencylist>
+ <dependency>bzip2-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>namazu-devel</name>
+ <dependencylist>
+ <dependency>namazu</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mod_auth_mysql</name>
+ <dependencylist>
+ <dependency>httpd</dependency>
+ <dependency>glibc</dependency>
+ <dependency>mysql</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>m2crypto</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openldap</name>
+ <dependencylist>
+ <dependency>cyrus-sasl</dependency>
+ <dependency>cyrus-sasl-md5</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rpm-python</name>
+ <dependencylist>
+ <dependency>rpm</dependency>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>libelf</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gcc-java</name>
+ <dependencylist>
+ <dependency>gcc</dependency>
+ <dependency>libgcj</dependency>
+ <dependency>libgcj-devel</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>php</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>httpd</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>curl</dependency>
+ <dependency>db4</dependency>
+ <dependency>expat</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>gd</dependency>
+ <dependency>gmp</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>pam</dependency>
+ <dependency>libpng</dependency>
+ <dependency>pspell</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-soundcard</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>sox</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tftp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libacl-devel</name>
+ <dependencylist>
+ <dependency>libacl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>imap-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdk-pixbuf-devel</name>
+ <dependencylist>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>gnome-libs-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeartwork-locolor</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>filesystem</name>
+ <dependencylist>
+ <dependency>setup</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>namazu-cgi</name>
+ <dependencylist>
+ <dependency>namazu</dependency>
+ <dependency>httpd</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>joystick</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kbdconfig</name>
+ <dependencylist>
+ <dependency>kbd</dependency>
+ <dependency>glibc</dependency>
+ <dependency>newt</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nut-cgi</name>
+ <dependencylist>
+ <dependency>httpd</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gd</dependency>
+ <dependency>libpng</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-user-docs</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vim-common</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>gawk</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xml-common</name>
+ <dependencylist>
+ <dependency>sh-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>grep</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>less</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glut</name>
+ <dependencylist>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomecanvas-devel</name>
+ <dependencylist>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libart_lgpl-devel</dependency>
+ <dependency>libglade2-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vsftpd</name>
+ <dependencylist>
+ <dependency>xinetd</dependency>
+ <dependency>logrotate</dependency>
+ <dependency>libcap</dependency>
+ <dependency>glibc</dependency>
+ <dependency>pam</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gdb</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xferstats</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>glib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2-gconf</name>
+ <dependencylist>
+ <dependency>GConf2</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>glib2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>orbit-python-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kon2</name>
+ <dependencylist>
+ <dependency>sh-utils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>termcap</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>samba</name>
+ <dependencylist>
+ <dependency>pam</dependency>
+ <dependency>samba-common</dependency>
+ <dependency>logrotate</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>psmisc</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sed</dependency>
+ <dependency>bash</dependency>
+ <dependency>tcsh</dependency>
+ <dependency>perl</dependency>
+ <dependency>libacl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>popt</dependency>
+ <dependency>perl-CGI</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xcdroast</name>
+ <dependencylist>
+ <dependency>cdrecord</dependency>
+ <dependency>mkisofs</dependency>
+ <dependency>cdda2wav</dependency>
+ <dependency>usermode</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mingetty</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lapack</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>blas</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xscreensaver</name>
+ <dependencylist>
+ <dependency>fortune-mod</dependency>
+ <dependency>redhat-logos</dependency>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-PDL</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gsl</dependency>
+ <dependency>perl-Filter</dependency>
+ <dependency>perl-Inline</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgtop-devel</name>
+ <dependencylist>
+ <dependency>libgtop</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nvi-m17n-canna</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>Canna-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cups-devel</name>
+ <dependencylist>
+ <dependency>cups-libs</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings-devel</name>
+ <dependencylist>
+ <dependency>kdebindings</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>watanabe-vf</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>chromium</name>
+ <dependencylist>
+ <dependency>zlib</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-Mesa-libGLU</dependency>
+ <dependency>qt</dependency>
+ <dependency>SDL</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libbonobo-devel</name>
+ <dependencylist>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation-devel</dependency>
+ <dependency>ORBit2-devel</dependency>
+ <dependency>libxml2-devel</dependency>
+ <dependency>linc-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gmp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>grip</name>
+ <dependencylist>
+ <dependency>vorbis-tools</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>cdparanoia-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>libghttp</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>jcode.pl</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ruby-devel</name>
+ <dependencylist>
+ <dependency>ruby-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libesmtp-devel</name>
+ <dependencylist>
+ <dependency>libesmtp</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>swig</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>orbit-python</name>
+ <dependencylist>
+ <dependency>ORBit2</dependency>
+ <dependency>linc</dependency>
+ <dependency>libIDL</dependency>
+ <dependency>glib2</dependency>
+ <dependency>python</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libcapplet0</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libglade</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>libxml</dependency>
+ <dependency>glibc</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xcin</name>
+ <dependencylist>
+ <dependency>libtabe</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Romanian</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde2-compat</name>
+ <dependencylist>
+ <dependency>qt2</dependency>
+ <dependency>openssl</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ <dependency>python</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>fam</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pcre</dependency>
+ <dependency>libpng</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ytalk</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Icelandic</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>minicom</name>
+ <dependencylist>
+ <dependency>lockdev</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-Mesa-libGLU</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-Bit-Vector</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl-Date-Calc</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rusers-server</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>portmap</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>procps</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-DB_File</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>postgresql-tcl</name>
+ <dependencylist>
+ <dependency>tcl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>pam</dependency>
+ <dependency>postgresql-libs</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>grub</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-libs-devel</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>gtk+-devel</dependency>
+ <dependency>ORBit-devel</dependency>
+ <dependency>imlib-devel</dependency>
+ <dependency>esound-devel</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdf</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-users</name>
+ <dependencylist>
+ <dependency>libuser</dependency>
+ <dependency>python</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kiconedit</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>switchdesk-gnome</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>pspell-devel</name>
+ <dependencylist>
+ <dependency>pspell</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-libxml-perl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-XML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>intltool</name>
+ <dependencylist>
+ <dependency>patch</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rpm</name>
+ <dependencylist>
+ <dependency>gawk</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>popt</dependency>
+ <dependency>libelf</dependency>
+ <dependency>bash</dependency>
+ <dependency>bzip2-libs</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>automake</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>shadow-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libwvstreams-devel</name>
+ <dependencylist>
+ <dependency>libwvstreams</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-TimeDate</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdeaddons-konqueror</name>
+ <dependencylist>
+ <dependency>kdebase</dependency>
+ <dependency>arts</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ddd</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>openmotif</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libelf</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>x3270-text</name>
+ <dependencylist>
+ <dependency>x3270</dependency>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtkhtml-devel</name>
+ <dependencylist>
+ <dependency>gtkhtml</dependency>
+ <dependency>gnome-libs-devel</dependency>
+ <dependency>gnome-print-devel</dependency>
+ <dependency>libunicode-devel</dependency>
+ <dependency>gdk-pixbuf-devel</dependency>
+ <dependency>libglade-devel</dependency>
+ <dependency>libxml-devel</dependency>
+ <dependency>bonobo-devel</dependency>
+ <dependency>gal-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dvgrab</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libraw1394</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Canna-libs</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cups-drivers-pnm2ppa</name>
+ <dependencylist>
+ <dependency>pnm2ppa</dependency>
+ <dependency>ghostscript</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>anacron</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>vixie-cron</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>syslinux</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-games</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>guile</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdesdk-kbabel</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Danish</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mailman</name>
+ <dependencylist>
+ <dependency>shadow-utils</dependency>
+ <dependency>postfix</dependency>
+ <dependency>vixie-cron</dependency>
+ <dependency>httpd</dependency>
+ <dependency>python</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>MAKEDEV</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nmh</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>vim-enhanced</name>
+ <dependencylist>
+ <dependency>vim-common</dependency>
+ <dependency>bash</dependency>
+ <dependency>libacl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gpm</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Turkish</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libuser-devel</name>
+ <dependencylist>
+ <dependency>libuser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libesmtp</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>openssl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Guppi</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>bonobo</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgal19</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>libglade</dependency>
+ <dependency>glib</dependency>
+ <dependency>gdk-pixbuf-gnome</dependency>
+ <dependency>libgnomeprint15</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>oaf</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glut-devel</name>
+ <dependencylist>
+ <dependency>glut</dependency>
+ <dependency>XFree86-Mesa-libGL</dependency>
+ <dependency>XFree86-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glade</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>acl</name>
+ <dependencylist>
+ <dependency>libacl</dependency>
+ <dependency>libattr</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-print-devel</name>
+ <dependencylist>
+ <dependency>gimp-print</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>iptraf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>khexedit</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>abiword</name>
+ <dependencylist>
+ <dependency>libpng10</dependency>
+ <dependency>chkfontpath</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>pspell</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtool</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>autoconf</dependency>
+ <dependency>automake</dependency>
+ <dependency>m4</dependency>
+ <dependency>perl</dependency>
+ <dependency>libtool-libs</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>festival-devel</name>
+ <dependencylist>
+ <dependency>festival</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libgnomeprint15</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>freetype</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libavc1394</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libraw1394</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gail-devel</name>
+ <dependencylist>
+ <dependency>gail</dependency>
+ <dependency>gtk2-devel</dependency>
+ <dependency>libgnomecanvas-devel</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libtiff</name>
+ <dependencylist>
+ <dependency>zlib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-gcc-objc</name>
+ <dependencylist>
+ <dependency>compat-gcc</dependency>
+ <dependency>libobjc</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-artwork</name>
+ <dependencylist>
+ <dependency>redhat-logos</dependency>
+ <dependency>qt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xdelta-devel</name>
+ <dependencylist>
+ <dependency>xdelta</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>aumix</name>
+ <dependencylist>
+ <dependency>initscripts</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gpm</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>g-wrap</name>
+ <dependencylist>
+ <dependency>guile</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libungif</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mod_python</name>
+ <dependencylist>
+ <dependency>httpd</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>knode</name>
+ <dependencylist>
+ <dependency>kdenetwork-libs</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kooka</name>
+ <dependencylist>
+ <dependency>libkscan</dependency>
+ <dependency>sane-backends</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libusb</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>w3m</name>
+ <dependencylist>
+ <dependency>indexhtml</dependency>
+ <dependency>perl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>ImageMagick</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gpm</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>imlib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>httpd</name>
+ <dependencylist>
+ <dependency>mailcap</dependency>
+ <dependency>gawk</dependency>
+ <dependency>file</dependency>
+ <dependency>findutils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>textutils</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>expat</dependency>
+ <dependency>gdbm</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-ISO8859-15-100dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rcs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>netatalk</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>initscripts</dependency>
+ <dependency>pam</dependency>
+ <dependency>tcp_wrappers</dependency>
+ <dependency>openssl</dependency>
+ <dependency>cracklib</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>emacs</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>dev</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>Xaw3d</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-libwww-perl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>perl-URI</dependency>
+ <dependency>perl-HTML-Parser</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>groff</name>
+ <dependencylist>
+ <dependency>mktemp</dependency>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>wine-devel</name>
+ <dependencylist>
+ <dependency>wine</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>glib</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-js-debugger</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hotplug-gtk</name>
+ <dependencylist>
+ <dependency>gnome-libs</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>esound</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>imlib</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>openssh-server</name>
+ <dependencylist>
+ <dependency>openssh</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>pam</dependency>
+ <dependency>bash</dependency>
+ <dependency>krb5-libs</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kde-i18n-Slovak</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-switch-printer-gnome</name>
+ <dependencylist>
+ <dependency>redhat-switch-printer</dependency>
+ <dependency>libglade2</dependency>
+ <dependency>pygtk2-libglade</dependency>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>chkconfig</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>dmalloc</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>unarj</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gaim</name>
+ <dependencylist>
+ <dependency>gtk+</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gnome-desktop</dependency>
+ <dependency>aspell</dependency>
+ <dependency>htmlview</dependency>
+ <dependency>bash</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>esound</dependency>
+ <dependency>gdk-pixbuf</dependency>
+ <dependency>glib</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libmrproject</name>
+ <dependencylist>
+ <dependency>gtk2</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnome-python2-bonobo</name>
+ <dependencylist>
+ <dependency>orbit-python</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>bridge-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>VFlib2-devel</name>
+ <dependencylist>
+ <dependency>VFlib2</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>4Suite</name>
+ <dependencylist>
+ <dependency>python</dependency>
+ <dependency>PyXML</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdrdao</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>flim</name>
+ <dependencylist>
+ <dependency>emacs</dependency>
+ <dependency>apel</dependency>
+ <dependency>info</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>initscripts</name>
+ <dependencylist>
+ <dependency>mingetty</dependency>
+ <dependency>gawk</dependency>
+ <dependency>sed</dependency>
+ <dependency>mktemp</dependency>
+ <dependency>e2fsprogs</dependency>
+ <dependency>procps</dependency>
+ <dependency>sysklogd</dependency>
+ <dependency>setup</dependency>
+ <dependency>psmisc</dependency>
+ <dependency>which</dependency>
+ <dependency>grep</dependency>
+ <dependency>modutils</dependency>
+ <dependency>util-linux</dependency>
+ <dependency>mount</dependency>
+ <dependency>bash</dependency>
+ <dependency>SysVinit</dependency>
+ <dependency>iproute</dependency>
+ <dependency>iputils</dependency>
+ <dependency>net-tools</dependency>
+ <dependency>bdflush</dependency>
+ <dependency>redhat-release</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>libxml2-python</name>
+ <dependencylist>
+ <dependency>libxml2</dependency>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>xpdf-chinese-simplified</name>
+ <dependencylist>
+ <dependency>xpdf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-xfs</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>sed</dependency>
+ <dependency>shadow-utils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gphoto2</name>
+ <dependencylist>
+ <dependency>hotplug</dependency>
+ <dependency>glibc</dependency>
+ <dependency>grep</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>lockdev</dependency>
+ <dependency>bash</dependency>
+ <dependency>glib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>ncurses</dependency>
+ <dependency>readline</dependency>
+ <dependency>libusb</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-CGI</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>lvm</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>newt-devel</name>
+ <dependencylist>
+ <dependency>slang-devel</dependency>
+ <dependency>newt</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>procinfo</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-BSD-Resource</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>koffice-devel</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>krbafs-devel</name>
+ <dependencylist>
+ <dependency>krbafs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>koncd</name>
+ <dependencylist>
+ <dependency>cdrecord</dependency>
+ <dependency>mkisofs</dependency>
+ <dependency>arts</dependency>
+ <dependency>audiofile</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>hotplug</name>
+ <dependencylist>
+ <dependency>usbutils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>compat-libstdc++</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>inn</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>grep</dependency>
+ <dependency>textutils</dependency>
+ <dependency>sed</dependency>
+ <dependency>fileutils</dependency>
+ <dependency>sh-utils</dependency>
+ <dependency>cleanfeed</dependency>
+ <dependency>bash</dependency>
+ <dependency>inews</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>db4</dependency>
+ <dependency>libelf</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>at</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>file</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rwall</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>samba-common</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>libacl</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ <dependency>pam</dependency>
+ <dependency>popt</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>mozilla-chat</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>mozilla</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>anaconda-help</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>oaf</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>perl</dependency>
+ <dependency>glib</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdevelop</name>
+ <dependencylist>
+ <dependency>kdelibs-devel</dependency>
+ <dependency>make</dependency>
+ <dependency>perl</dependency>
+ <dependency>autoconf</dependency>
+ <dependency>automake</dependency>
+ <dependency>flex</dependency>
+ <dependency>qt-designer</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>uucp</name>
+ <dependencylist>
+ <dependency>fileutils</dependency>
+ <dependency>info</dependency>
+ <dependency>lockdev</dependency>
+ <dependency>bash</dependency>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>freetype</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>perl-suidperl</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gettext</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>python</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libgcj</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdparanoia-devel</name>
+ <dependencylist>
+ <dependency>cdparanoia-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gtoaster</name>
+ <dependencylist>
+ <dependency>cdrecord</dependency>
+ <dependency>cdrdao</dependency>
+ <dependency>mkisofs</dependency>
+ <dependency>cdda2wav</dependency>
+ <dependency>sox</dependency>
+ <dependency>usermode</dependency>
+ <dependency>glibc</dependency>
+ <dependency>gtk+</dependency>
+ <dependency>glib</dependency>
+ <dependency>ORBit</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>esound-devel</name>
+ <dependencylist>
+ <dependency>esound</dependency>
+ <dependency>audiofile-devel</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gimp-data-extras</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-font-utils</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>freetype</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>redhat-config-keyboard</name>
+ <dependencylist>
+ <dependency>pygtk2</dependency>
+ <dependency>python</dependency>
+ <dependency>usermode</dependency>
+ <dependency>rhpl</dependency>
+ <dependency>pyxf86config</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>stat</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>gnumeric-devel</name>
+ <dependencylist>
+ <dependency>gnumeric</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>star</name>
+ <dependencylist>
+ <dependency>libacl</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>rwho</name>
+ <dependencylist>
+ <dependency>chkconfig</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>nvi-m17n-nocanna</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libtermcap</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>telnet</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>ncurses</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings-kdejava</name>
+ <dependencylist>
+ <dependency>kdelibs</dependency>
+ <dependency>kdebindings-qtjava</dependency>
+ <dependency>libgcj</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pcre</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kppp</name>
+ <dependencylist>
+ <dependency>usermode</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>man-pages-pl</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+ <package>
+ <name>readline</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>curl-devel</name>
+ <dependencylist>
+ <dependency>curl</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>slang</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>eog</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>libgnomeprint</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>libpng</dependency>
+ <dependency>popt</dependency>
+ <dependency>librsvg2</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kuickshow</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>imlib</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>libpng</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>libtiff</dependency>
+ <dependency>libungif</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>yelp</name>
+ <dependencylist>
+ <dependency>scrollkeeper</dependency>
+ <dependency>gtk2</dependency>
+ <dependency>gnome-vfs2</dependency>
+ <dependency>gtkhtml2</dependency>
+ <dependency>libgnomeui</dependency>
+ <dependency>libbonobo</dependency>
+ <dependency>libart_lgpl</dependency>
+ <dependency>atk</dependency>
+ <dependency>bonobo-activation</dependency>
+ <dependency>libbonoboui</dependency>
+ <dependency>glibc</dependency>
+ <dependency>GConf2</dependency>
+ <dependency>glib2</dependency>
+ <dependency>libgnome</dependency>
+ <dependency>libgnomecanvas</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>linc</dependency>
+ <dependency>ORBit2</dependency>
+ <dependency>pango</dependency>
+ <dependency>popt</dependency>
+ <dependency>libxml2</dependency>
+ <dependency>libxslt</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>Omni</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>cups-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>tetex-afm</name>
+ <dependencylist>
+ <dependency>tetex</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>slrn-pull</name>
+ <dependencylist>
+ <dependency>slrn</dependency>
+ <dependency>bash</dependency>
+ <dependency>openssl</dependency>
+ <dependency>glibc</dependency>
+ <dependency>slang</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>kdebindings-kdec</name>
+ <dependencylist>
+ <dependency>qt</dependency>
+ <dependency>kdebindings-qtc</dependency>
+ <dependency>glibc</dependency>
+ <dependency>kdelibs</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>XFree86-libs</dependency>
+ <dependency>libjpeg</dependency>
+ <dependency>pcre</dependency>
+ <dependency>libpng</dependency>
+ <dependency>libstdc++</dependency>
+ <dependency>zlib</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>usbutils</name>
+ <dependencylist>
+ <dependency>hwdata</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>e2fsprogs</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>audiofile</name>
+ <dependencylist>
+ <dependency>glibc</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>XFree86-ISO8859-2-75dpi-fonts</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ttfonts-zh_CN</name>
+ <dependencylist>
+ <dependency>chkfontpath</dependency>
+ <dependency>XFree86-font-utils</dependency>
+ <dependency>fontconfig</dependency>
+ <dependency>bash</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cdlabelgen</name>
+ <dependencylist>
+ <dependency>perl</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>ghostscript-fonts</name>
+ <dependencylist>
+ <dependency>ghostscript</dependency>
+ <dependency>fontconfig</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>FreeWnn-libs</name>
+ <dependencylist>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>qt2-Xt</name>
+ <dependencylist>
+ <dependency>qt2</dependency>
+ <dependency>glibc</dependency>
+ <dependency>compat-libstdc++</dependency>
+ <dependency>XFree86-libs</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>cpp</name>
+ <dependencylist>
+ <dependency>info</dependency>
+ <dependency>bash</dependency>
+ <dependency>glibc</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>oprofile</name>
+ <dependencylist>
+ <dependency>kernel</dependency>
+ <dependency>bash</dependency>
+ <dependency>binutils</dependency>
+ <dependency>glibc</dependency>
+ <dependency>libgcc</dependency>
+ <dependency>popt</dependency>
+ <dependency>qt</dependency>
+ <dependency>libstdc++</dependency>
+ </dependencylist>
+ </package>
+ <package>
+ <name>sash</name>
+ <dependencylist>
+ </dependencylist>
+ </package>
+</comps>
diff --git a/test/relaxng/demo.rng b/test/relaxng/demo.rng
new file mode 100644
index 0000000..1a7f17c
--- /dev/null
+++ b/test/relaxng/demo.rng
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<include href="demo2.rng">
+<define name="TEI.prose"><ref name="INCLUDE"/></define>
+</include>
+</grammar>
+
+
+
diff --git a/test/relaxng/demo.xml b/test/relaxng/demo.xml
new file mode 100644
index 0000000..6b0cac1
--- /dev/null
+++ b/test/relaxng/demo.xml
@@ -0,0 +1 @@
+<TEI.2>hello</TEI.2> \ No newline at end of file
diff --git a/test/relaxng/demo2.rng b/test/relaxng/demo2.rng
new file mode 100644
index 0000000..f528f73
--- /dev/null
+++ b/test/relaxng/demo2.rng
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:t="http://www.thaiopensource.com/ns/annotations" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <start>
+ <ref name="TEI.2"/>
+ </start>
+ <define name="IGNORE">
+ <notAllowed/>
+ </define>
+ <define name="INCLUDE">
+ <empty/>
+ </define>
+
+
+ <include href="demo3.rng"/>
+
+ <define name="TEI.2">
+ <element name="TEI.2">
+ <text/>
+ </element>
+ </define>
+
+</grammar> \ No newline at end of file
diff --git a/test/relaxng/demo3.rng b/test/relaxng/demo3.rng
new file mode 100644
index 0000000..73e1eb6
--- /dev/null
+++ b/test/relaxng/demo3.rng
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:t="http://www.thaiopensource.com/ns/annotations" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <define name="TEI.prose" combine="interleave">
+ <ref name="IGNORE"/>
+ </define>
+
+</grammar> \ No newline at end of file
diff --git a/test/relaxng/docbook.rng b/test/relaxng/docbook.rng
new file mode 100644
index 0000000..85a6aed
--- /dev/null
+++ b/test/relaxng/docbook.rng
@@ -0,0 +1,9141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Id: docbook.rng,v 1.5 2001/10/23 05:56:47 jjc Exp $ -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <choice>
+ <ref name="set"/>
+ <ref name="book"/>
+ <ref name="chapter"/>
+ <ref name="appendix"/>
+ <ref name="article"/>
+ <ref name="part"/>
+ <ref name="reference"/>
+ <ref name="refentry"/>
+ <ref name="section"/>
+ <ref name="sect1"/>
+ <ref name="sect2"/>
+ <ref name="sect3"/>
+ <ref name="sect4"/>
+ <ref name="sect5"/>
+ <ref name="para"/>
+ </choice>
+ </start>
+ <define name="ndxterm.class">
+ <ref name="indexterm"/>
+ </define>
+ <define name="list.class">
+ <choice>
+ <ref name="calloutlist"/>
+ <ref name="glosslist"/>
+ <ref name="itemizedlist"/>
+ <ref name="orderedlist"/>
+ <ref name="segmentedlist"/>
+ <ref name="simplelist"/>
+ <ref name="variablelist"/>
+ </choice>
+ </define>
+ <define name="admon.class">
+ <choice>
+ <ref name="caution"/>
+ <ref name="important"/>
+ <ref name="note"/>
+ <ref name="tip"/>
+ <ref name="warning"/>
+ </choice>
+ </define>
+ <define name="linespecific.class">
+ <choice>
+ <ref name="literallayout"/>
+ <ref name="programlisting"/>
+ <ref name="programlistingco"/>
+ <ref name="screen"/>
+ <ref name="screenco"/>
+ <ref name="screenshot"/>
+ </choice>
+ </define>
+ <define name="method.synop.class">
+ <choice>
+ <ref name="constructorsynopsis"/>
+ <ref name="destructorsynopsis"/>
+ <ref name="methodsynopsis"/>
+ </choice>
+ </define>
+ <define name="synop.class">
+ <choice>
+ <ref name="synopsis"/>
+ <ref name="cmdsynopsis"/>
+ <ref name="funcsynopsis"/>
+ <ref name="classsynopsis"/>
+ <ref name="fieldsynopsis"/>
+ </choice>
+ </define>
+ <define name="para.class">
+ <choice>
+ <ref name="formalpara"/>
+ <ref name="para"/>
+ <ref name="simpara"/>
+ </choice>
+ </define>
+ <define name="informal.class">
+ <choice>
+ <ref name="address"/>
+ <ref name="blockquote"/>
+ <ref name="graphic"/>
+ <ref name="graphicco"/>
+ <ref name="mediaobject"/>
+ <ref name="mediaobjectco"/>
+ <ref name="informalequation"/>
+ <ref name="informalexample"/>
+ <ref name="informalfigure"/>
+ <ref name="informaltable"/>
+ </choice>
+ </define>
+ <define name="formal.class">
+ <choice>
+ <ref name="equation"/>
+ <ref name="example"/>
+ <ref name="figure"/>
+ <ref name="table"/>
+ </choice>
+ </define>
+ <define name="compound.class">
+ <choice>
+ <ref name="msgset"/>
+ <ref name="procedure"/>
+ <ref name="sidebar"/>
+ <ref name="qandaset"/>
+ </choice>
+ </define>
+ <define name="genobj.class">
+ <choice>
+ <ref name="anchor"/>
+ <ref name="bridgehead"/>
+ <ref name="remark"/>
+ <ref name="highlights"/>
+ </choice>
+ </define>
+ <define name="descobj.class">
+ <choice>
+ <ref name="abstract"/>
+ <ref name="authorblurb"/>
+ <ref name="epigraph"/>
+ </choice>
+ </define>
+ <define name="xref.char.class">
+ <choice>
+ <ref name="footnoteref"/>
+ <ref name="xref"/>
+ </choice>
+ </define>
+ <define name="gen.char.class">
+ <choice>
+ <ref name="abbrev"/>
+ <ref name="acronym"/>
+ <ref name="citation"/>
+ <ref name="citerefentry"/>
+ <ref name="citetitle"/>
+ <ref name="emphasis"/>
+ <ref name="firstterm"/>
+ <ref name="foreignphrase"/>
+ <ref name="glossterm"/>
+ <ref name="footnote"/>
+ <ref name="phrase"/>
+ <ref name="quote"/>
+ <ref name="trademark"/>
+ <ref name="wordasword"/>
+ </choice>
+ </define>
+ <define name="link.char.class">
+ <choice>
+ <ref name="link"/>
+ <ref name="olink"/>
+ <ref name="ulink"/>
+ </choice>
+ </define>
+ <define name="tech.char.class">
+ <choice>
+ <ref name="action"/>
+ <ref name="application"/>
+ <ref name="classname"/>
+ <ref name="methodname"/>
+ <ref name="interfacename"/>
+ <ref name="exceptionname"/>
+ <ref name="ooclass"/>
+ <ref name="oointerface"/>
+ <ref name="ooexception"/>
+ <ref name="command"/>
+ <ref name="computeroutput"/>
+ <ref name="database"/>
+ <ref name="email"/>
+ <ref name="envar"/>
+ <ref name="errorcode"/>
+ <ref name="errorname"/>
+ <ref name="errortype"/>
+ <ref name="filename"/>
+ <ref name="function"/>
+ <ref name="guibutton"/>
+ <ref name="guiicon"/>
+ <ref name="guilabel"/>
+ <ref name="guimenu"/>
+ <ref name="guimenuitem"/>
+ <ref name="guisubmenu"/>
+ <ref name="hardware"/>
+ <ref name="interface"/>
+ <ref name="keycap"/>
+ <ref name="keycode"/>
+ <ref name="keycombo"/>
+ <ref name="keysym"/>
+ <ref name="literal"/>
+ <ref name="constant"/>
+ <ref name="markup"/>
+ <ref name="medialabel"/>
+ <ref name="menuchoice"/>
+ <ref name="mousebutton"/>
+ <ref name="option"/>
+ <ref name="optional"/>
+ <ref name="parameter"/>
+ <ref name="prompt"/>
+ <ref name="property"/>
+ <ref name="replaceable"/>
+ <ref name="returnvalue"/>
+ <ref name="sgmltag"/>
+ <ref name="structfield"/>
+ <ref name="structname"/>
+ <ref name="symbol"/>
+ <ref name="systemitem"/>
+ <ref name="token"/>
+ <ref name="type"/>
+ <ref name="userinput"/>
+ <ref name="varname"/>
+ </choice>
+ </define>
+ <define name="base.char.class">
+ <ref name="anchor"/>
+ </define>
+ <define name="docinfo.char.class">
+ <choice>
+ <ref name="author"/>
+ <ref name="authorinitials"/>
+ <ref name="corpauthor"/>
+ <ref name="modespec"/>
+ <ref name="othercredit"/>
+ <ref name="productname"/>
+ <ref name="productnumber"/>
+ <ref name="revhistory"/>
+ </choice>
+ </define>
+ <define name="other.char.class">
+ <choice>
+ <ref name="remark"/>
+ <ref name="subscript"/>
+ <ref name="superscript"/>
+ </choice>
+ </define>
+ <define name="inlineobj.char.class">
+ <choice>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="inlineequation"/>
+ </choice>
+ </define>
+ <define name="component.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="compound.class"/>
+ <ref name="genobj.class"/>
+ <ref name="descobj.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="sidebar.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="procedure"/>
+ <ref name="genobj.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="qandaset.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="procedure"/>
+ <ref name="genobj.class"/>
+ <ref name="ndxterm.class"/>
+ </choice>
+ </define>
+ <define name="revdescription.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="procedure"/>
+ <ref name="genobj.class"/>
+ <ref name="ndxterm.class"/>
+ </choice>
+ </define>
+ <define name="footnote.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ </choice>
+ </define>
+ <define name="example.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="highlights.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="para.class"/>
+ <ref name="ndxterm.class"/>
+ </choice>
+ </define>
+ <define name="para.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ </choice>
+ </define>
+ <define name="admon.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="procedure"/>
+ <ref name="sidebar"/>
+ <ref name="anchor"/>
+ <ref name="bridgehead"/>
+ <ref name="remark"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="figure.mix">
+ <choice>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="informal.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="tabentry.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="para.class"/>
+ <ref name="graphic"/>
+ <ref name="mediaobject"/>
+ </choice>
+ </define>
+ <define name="glossdef.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="remark"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="legalnotice.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="para.class"/>
+ <ref name="blockquote"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="textobject.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="para.class"/>
+ <ref name="blockquote"/>
+ </choice>
+ </define>
+ <define name="mediaobject.mix">
+ <choice>
+ <ref name="videoobject"/>
+ <ref name="audioobject"/>
+ <ref name="imageobject"/>
+ </choice>
+ </define>
+ <define name="para.char.mix">
+ <choice>
+ <ref name="xref.char.class"/>
+ <ref name="gen.char.class"/>
+ <ref name="link.char.class"/>
+ <ref name="tech.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="docinfo.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlineobj.char.class"/>
+ <ref name="synop.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="title.char.mix">
+ <choice>
+ <ref name="xref.char.class"/>
+ <ref name="gen.char.class"/>
+ <ref name="link.char.class"/>
+ <ref name="tech.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="docinfo.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlineobj.char.class"/>
+ <ref name="ndxterm.class"/>
+ </choice>
+ </define>
+ <define name="ndxterm.char.mix">
+ <choice>
+ <ref name="xref.char.class"/>
+ <ref name="gen.char.class"/>
+ <ref name="link.char.class"/>
+ <ref name="tech.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="docinfo.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ </choice>
+ </define>
+ <define name="cptr.char.mix">
+ <choice>
+ <ref name="link.char.class"/>
+ <ref name="tech.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="smallcptr.char.mix">
+ <choice>
+ <ref name="replaceable"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="word.char.mix">
+ <choice>
+ <ref name="acronym"/>
+ <ref name="emphasis"/>
+ <ref name="trademark"/>
+ <ref name="link.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="docinfo.char.mix">
+ <choice>
+ <ref name="link.char.class"/>
+ <ref name="emphasis"/>
+ <ref name="trademark"/>
+ <ref name="replaceable"/>
+ <ref name="other.char.class"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="ndxterm.class"/>
+ </choice>
+ </define>
+ <define name="formalobject.title.content">
+ <ref name="title"/>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ </define>
+ <define name="arch.attrib">
+ <optional>
+ <attribute name="arch">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="condition.attrib">
+ <optional>
+ <attribute name="condition">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="conformance.attrib">
+ <optional>
+ <attribute name="conformance">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="os.attrib">
+ <optional>
+ <attribute name="os">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="revision.attrib">
+ <optional>
+ <attribute name="revision">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="security.attrib">
+ <optional>
+ <attribute name="security">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="userlevel.attrib">
+ <optional>
+ <attribute name="userlevel">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="vendor.attrib">
+ <optional>
+ <attribute name="vendor">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="effectivity.attrib">
+ <ref name="arch.attrib"/>
+ <ref name="condition.attrib"/>
+ <ref name="conformance.attrib"/>
+ <ref name="os.attrib"/>
+ <ref name="revision.attrib"/>
+ <ref name="security.attrib"/>
+ <ref name="userlevel.attrib"/>
+ <ref name="vendor.attrib"/>
+ </define>
+ <define name="id.attrib">
+ <optional>
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="idreq.attrib">
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ </define>
+ <define name="lang.attrib">
+ <optional>
+ <attribute name="lang">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="remap.attrib">
+ <optional>
+ <attribute name="remap">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="role.attrib">
+ <optional>
+ <attribute name="role">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="xreflabel.attrib">
+ <optional>
+ <attribute name="xreflabel">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="revisionflag.attrib">
+ <optional>
+ <attribute name="revisionflag">
+ <choice>
+ <value>changed</value>
+ <value>added</value>
+ <value>deleted</value>
+ <value>off</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="common.attrib">
+ <ref name="id.attrib"/>
+ <ref name="lang.attrib"/>
+ <ref name="remap.attrib"/>
+ <ref name="xreflabel.attrib"/>
+ <ref name="revisionflag.attrib"/>
+ <ref name="effectivity.attrib"/>
+ </define>
+ <define name="idreq.common.attrib">
+ <ref name="idreq.attrib"/>
+ <ref name="lang.attrib"/>
+ <ref name="remap.attrib"/>
+ <ref name="xreflabel.attrib"/>
+ <ref name="revisionflag.attrib"/>
+ <ref name="effectivity.attrib"/>
+ </define>
+ <define name="graphics.attrib">
+ <optional>
+ <attribute name="fileref">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="format">
+ <choice>
+ <value>BMP</value>
+ <value>CGM-CHAR</value>
+ <value>CGM-BINARY</value>
+ <value>CGM-CLEAR</value>
+ <value>DITROFF</value>
+ <value>DVI</value>
+ <value>EPS</value>
+ <value>EQN</value>
+ <value>FAX</value>
+ <value>GIF</value>
+ <value>GIF87a</value>
+ <value>GIF89a</value>
+ <value>JPG</value>
+ <value>JPEG</value>
+ <value>IGES</value>
+ <value>PCX</value>
+ <value>PIC</value>
+ <value>PNG</value>
+ <value>PS</value>
+ <value>SGML</value>
+ <value>TBL</value>
+ <value>TEX</value>
+ <value>TIFF</value>
+ <value>WMF</value>
+ <value>WPG</value>
+ <value>linespecific</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="srccredit">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scale">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scalefit">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="keyaction.attrib">
+ <optional>
+ <attribute name="action">
+ <choice>
+ <value>click</value>
+ <value>double-click</value>
+ <value>press</value>
+ <value>seq</value>
+ <value>simul</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otheraction">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="label.attrib">
+ <optional>
+ <attribute name="label">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="linespecific.attrib">
+ <optional>
+ <attribute name="format">
+ <value>linespecific</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="linenumbering">
+ <choice>
+ <value>numbered</value>
+ <value>unnumbered</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="linkend.attrib">
+ <optional>
+ <attribute name="linkend">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="linkendreq.attrib">
+ <attribute name="linkend">
+ <data type="IDREF"/>
+ </attribute>
+ </define>
+ <define name="linkends.attrib">
+ <optional>
+ <attribute name="linkends">
+ <data type="IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="mark.attrib">
+ <optional>
+ <attribute name="mark">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="moreinfo.attrib">
+ <optional>
+ <attribute name="moreinfo">
+ <choice>
+ <value>refentry</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="pagenum.attrib">
+ <optional>
+ <attribute name="pagenum">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="status.attrib">
+ <optional>
+ <attribute name="status">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="width.attrib">
+ <optional>
+ <attribute name="width">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="title.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="title">
+ <element name="title">
+ <ref name="title.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="title.attlist">
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="title.role.attrib"/>
+ </define>
+ <define name="titleabbrev.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="titleabbrev">
+ <element name="titleabbrev">
+ <ref name="titleabbrev.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="titleabbrev.attlist">
+ <ref name="common.attrib"/>
+ <ref name="titleabbrev.role.attrib"/>
+ </define>
+ <define name="subtitle.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="subtitle">
+ <element name="subtitle">
+ <ref name="subtitle.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="subtitle.attlist">
+ <ref name="common.attrib"/>
+ <ref name="subtitle.role.attrib"/>
+ </define>
+ <define name="person.ident.mix">
+ <choice>
+ <ref name="honorific"/>
+ <ref name="firstname"/>
+ <ref name="surname"/>
+ <ref name="lineage"/>
+ <ref name="othername"/>
+ <ref name="affiliation"/>
+ <ref name="authorblurb"/>
+ <ref name="contrib"/>
+ </choice>
+ </define>
+ <define name="bibliocomponent.mix">
+ <choice>
+ <ref name="abbrev"/>
+ <ref name="abstract"/>
+ <ref name="address"/>
+ <ref name="artpagenums"/>
+ <ref name="author"/>
+ <ref name="authorgroup"/>
+ <ref name="authorinitials"/>
+ <ref name="bibliomisc"/>
+ <ref name="biblioset"/>
+ <ref name="collab"/>
+ <ref name="confgroup"/>
+ <ref name="contractnum"/>
+ <ref name="contractsponsor"/>
+ <ref name="copyright"/>
+ <ref name="corpauthor"/>
+ <ref name="corpname"/>
+ <ref name="date"/>
+ <ref name="edition"/>
+ <ref name="editor"/>
+ <ref name="invpartnumber"/>
+ <ref name="isbn"/>
+ <ref name="issn"/>
+ <ref name="issuenum"/>
+ <ref name="orgname"/>
+ <ref name="othercredit"/>
+ <ref name="pagenums"/>
+ <ref name="printhistory"/>
+ <ref name="productname"/>
+ <ref name="productnumber"/>
+ <ref name="pubdate"/>
+ <ref name="publisher"/>
+ <ref name="publishername"/>
+ <ref name="pubsnumber"/>
+ <ref name="releaseinfo"/>
+ <ref name="revhistory"/>
+ <ref name="seriesvolnums"/>
+ <ref name="subtitle"/>
+ <ref name="title"/>
+ <ref name="titleabbrev"/>
+ <ref name="volumenum"/>
+ <ref name="citetitle"/>
+ <ref name="person.ident.mix"/>
+ <ref name="ndxterm.class"/>
+ </choice>
+ </define>
+ <define name="biblioentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="biblioentry">
+ <element name="biblioentry">
+ <ref name="biblioentry.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="articleinfo"/>
+ <ref name="bibliocomponent.mix"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="biblioentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="biblioentry.role.attrib"/>
+ </define>
+ <define name="bibliomixed.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bibliomixed">
+ <element name="bibliomixed">
+ <ref name="bibliomixed.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="bibliocomponent.mix"/>
+ <ref name="bibliomset"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="bibliomixed.attlist">
+ <ref name="common.attrib"/>
+ <ref name="bibliomixed.role.attrib"/>
+ </define>
+ <define name="articleinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="infoContentModel">
+ <oneOrMore>
+ <choice>
+ <ref name="graphic"/>
+ <ref name="mediaobject"/>
+ <ref name="legalnotice"/>
+ <ref name="modespec"/>
+ <ref name="subjectset"/>
+ <ref name="keywordset"/>
+ <ref name="itermset"/>
+ <ref name="bibliocomponent.mix"/>
+ </choice>
+ </oneOrMore>
+ </define>
+ <define name="articleinfo">
+ <element name="articleinfo">
+ <ref name="articleinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="articleinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="articleinfo.role.attrib"/>
+ </define>
+ <define name="biblioset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="biblioset">
+ <element name="biblioset">
+ <ref name="biblioset.attlist"/>
+ <oneOrMore>
+ <ref name="bibliocomponent.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="biblioset.attlist">
+ <ref name="common.attrib"/>
+ <ref name="biblioset.role.attrib"/>
+ <optional>
+ <attribute name="relation">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibliomset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bibliomset">
+ <element name="bibliomset">
+ <ref name="bibliomset.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="bibliocomponent.mix"/>
+ <ref name="bibliomset"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="bibliomset.attlist">
+ <ref name="bibliomset.role.attrib"/>
+ <ref name="common.attrib"/>
+ <optional>
+ <attribute name="relation">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bibliomisc.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bibliomisc">
+ <element name="bibliomisc">
+ <ref name="bibliomisc.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="bibliomisc.attlist">
+ <ref name="common.attrib"/>
+ <ref name="bibliomisc.role.attrib"/>
+ </define>
+ <define name="subjectset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="subjectset">
+ <element name="subjectset">
+ <ref name="subjectset.attlist"/>
+ <oneOrMore>
+ <ref name="subject"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="subjectset.attlist">
+ <ref name="common.attrib"/>
+ <ref name="subjectset.role.attrib"/>
+ <optional>
+ <attribute name="scheme">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="subject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="subject">
+ <element name="subject">
+ <ref name="subject.attlist"/>
+ <oneOrMore>
+ <ref name="subjectterm"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="subject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="subject.role.attrib"/>
+ <optional>
+ <attribute name="weight">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="subjectterm.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="subjectterm">
+ <element name="subjectterm">
+ <ref name="subjectterm.attlist"/>
+ <text/>
+ </element>
+ </define>
+ <define name="subjectterm.attlist">
+ <ref name="common.attrib"/>
+ <ref name="subjectterm.role.attrib"/>
+ </define>
+ <define name="keywordset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="keywordset">
+ <element name="keywordset">
+ <ref name="keywordset.attlist"/>
+ <oneOrMore>
+ <ref name="keyword"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="keywordset.attlist">
+ <ref name="common.attrib"/>
+ <ref name="keywordset.role.attrib"/>
+ </define>
+ <define name="keyword.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="keyword">
+ <element name="keyword">
+ <ref name="keyword.attlist"/>
+ <text/>
+ </element>
+ </define>
+ <define name="keyword.attlist">
+ <ref name="common.attrib"/>
+ <ref name="keyword.role.attrib"/>
+ </define>
+ <define name="itermset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="itermset">
+ <element name="itermset">
+ <ref name="itermset.attlist"/>
+ <oneOrMore>
+ <ref name="indexterm"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="itermset.attlist">
+ <ref name="common.attrib"/>
+ <ref name="itermset.role.attrib"/>
+ </define>
+ <define name="msgset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgset">
+ <element name="msgset">
+ <ref name="msgset.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="msgentry"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplemsgentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="msgset.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgset.role.attrib"/>
+ </define>
+ <define name="msgentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgentry">
+ <element name="msgentry">
+ <ref name="msgentry.attlist"/>
+ <oneOrMore>
+ <ref name="msg"/>
+ </oneOrMore>
+ <optional>
+ <ref name="msginfo"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="msgexplan"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="msgentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgentry.role.attrib"/>
+ </define>
+ <define name="simplemsgentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="simplemsgentry">
+ <element name="simplemsgentry">
+ <ref name="simplemsgentry.attlist"/>
+ <ref name="msgtext"/>
+ <ref name="msgexplan"/>
+ </element>
+ </define>
+ <define name="simplemsgentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="simplemsgentry.role.attrib"/>
+ <optional>
+ <attribute name="audience">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="level">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="origin">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="msg.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msg">
+ <element name="msg">
+ <ref name="msg.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="msgmain"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="msgsub"/>
+ <ref name="msgrel"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="msg.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msg.role.attrib"/>
+ </define>
+ <define name="msgmain.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgmain">
+ <element name="msgmain">
+ <ref name="msgmain.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="msgtext"/>
+ </element>
+ </define>
+ <define name="msgmain.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgmain.role.attrib"/>
+ </define>
+ <define name="msgsub.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgsub">
+ <element name="msgsub">
+ <ref name="msgsub.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="msgtext"/>
+ </element>
+ </define>
+ <define name="msgsub.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgsub.role.attrib"/>
+ </define>
+ <define name="msgrel.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgrel">
+ <element name="msgrel">
+ <ref name="msgrel.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <ref name="msgtext"/>
+ </element>
+ </define>
+ <define name="msgrel.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgrel.role.attrib"/>
+ </define>
+ <define name="msginfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msginfo">
+ <element name="msginfo">
+ <ref name="msginfo.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="msglevel"/>
+ <ref name="msgorig"/>
+ <ref name="msgaud"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="msginfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msginfo.role.attrib"/>
+ </define>
+ <define name="msglevel.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msglevel">
+ <element name="msglevel">
+ <ref name="msglevel.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="msglevel.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msglevel.role.attrib"/>
+ </define>
+ <define name="msgorig.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgorig">
+ <element name="msgorig">
+ <ref name="msgorig.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="msgorig.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgorig.role.attrib"/>
+ </define>
+ <define name="msgaud.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgaud">
+ <element name="msgaud">
+ <ref name="msgaud.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="msgaud.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgaud.role.attrib"/>
+ </define>
+ <define name="msgexplan.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgexplan">
+ <element name="msgexplan">
+ <ref name="msgexplan.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="msgexplan.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgexplan.role.attrib"/>
+ </define>
+ <define name="qandset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="qandaset">
+ <element name="qandaset">
+ <ref name="qandaset.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="qandaset.mix"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="qandadiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="qandaentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="qandaset.attlist">
+ <ref name="common.attrib"/>
+ <ref name="qandset.role.attrib"/>
+ <optional>
+ <attribute name="defaultlabel">
+ <choice>
+ <value>qanda</value>
+ <value>number</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="qandadiv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="qandadiv">
+ <element name="qandadiv">
+ <ref name="qandadiv.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="qandaset.mix"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="qandadiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="qandaentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="qandadiv.attlist">
+ <ref name="common.attrib"/>
+ <ref name="qandadiv.role.attrib"/>
+ </define>
+ <define name="qandaentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="qandaentry">
+ <element name="qandaentry">
+ <ref name="qandaentry.attlist"/>
+ <optional>
+ <ref name="revhistory"/>
+ </optional>
+ <ref name="question"/>
+ <zeroOrMore>
+ <ref name="answer"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="qandaentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="qandaentry.role.attrib"/>
+ </define>
+ <define name="question.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="question">
+ <element name="question">
+ <ref name="question.attlist"/>
+ <optional>
+ <ref name="label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="qandaset.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="question.attlist">
+ <ref name="common.attrib"/>
+ <ref name="question.role.attrib"/>
+ </define>
+ <define name="answer.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="answer">
+ <element name="answer">
+ <ref name="answer.attlist"/>
+ <optional>
+ <ref name="label"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="qandaset.mix"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="qandaentry"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="answer.attlist">
+ <ref name="common.attrib"/>
+ <ref name="answer.role.attrib"/>
+ </define>
+ <define name="label.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="label">
+ <element name="label">
+ <ref name="label.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="label.attlist">
+ <ref name="common.attrib"/>
+ <ref name="label.role.attrib"/>
+ </define>
+ <define name="procedure.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="procedure">
+ <element name="procedure">
+ <ref name="procedure.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="step"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="procedure.attlist">
+ <ref name="common.attrib"/>
+ <ref name="procedure.role.attrib"/>
+ </define>
+ <define name="step.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="step">
+ <element name="step">
+ <ref name="step.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="component.mix"/>
+ </oneOrMore>
+ <optional>
+ <ref name="substeps"/>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ </optional>
+ </group>
+ <group>
+ <ref name="substeps"/>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </element>
+ </define>
+ <define name="step.attlist">
+ <ref name="common.attrib"/>
+ <ref name="step.role.attrib"/>
+ <optional>
+ <attribute name="performance">
+ <choice>
+ <value>optional</value>
+ <value>required</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="substeps.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="substeps">
+ <element name="substeps">
+ <ref name="substeps.attlist"/>
+ <oneOrMore>
+ <ref name="step"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="substeps.attlist">
+ <ref name="common.attrib"/>
+ <ref name="substeps.role.attrib"/>
+ <optional>
+ <attribute name="performance">
+ <choice>
+ <value>optional</value>
+ <value>required</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sidebarinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sidebarinfo">
+ <element name="sidebarinfo">
+ <ref name="sidebarinfo.attlist"/>
+ <text/>
+ </element>
+ </define>
+ <define name="sidebarinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sidebarinfo.role.attrib"/>
+ </define>
+ <define name="sidebar.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sidebar">
+ <element name="sidebar">
+ <ref name="sidebar.attlist"/>
+ <optional>
+ <ref name="sidebarinfo"/>
+ </optional>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="sidebar.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="sidebar.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sidebar.role.attrib"/>
+ </define>
+ <define name="abstract.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="abstract">
+ <element name="abstract">
+ <ref name="abstract.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <oneOrMore>
+ <ref name="para.class"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="abstract.attlist">
+ <ref name="common.attrib"/>
+ <ref name="abstract.role.attrib"/>
+ </define>
+ <define name="authorblurb.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="authorblurb">
+ <element name="authorblurb">
+ <ref name="authorblurb.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <oneOrMore>
+ <ref name="para.class"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="authorblurb.attlist">
+ <ref name="common.attrib"/>
+ <ref name="authorblurb.role.attrib"/>
+ </define>
+ <define name="blockquote.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="blockquote">
+ <element name="blockquote">
+ <ref name="blockquote.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <optional>
+ <ref name="attribution"/>
+ </optional>
+ <oneOrMore>
+ <ref name="component.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="blockquote.attlist">
+ <ref name="common.attrib"/>
+ <ref name="blockquote.role.attrib"/>
+ </define>
+ <define name="attribution.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="attribution">
+ <element name="attribution">
+ <ref name="attribution.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="attribution.attlist">
+ <ref name="common.attrib"/>
+ <ref name="attribution.role.attrib"/>
+ </define>
+ <define name="bridgehead.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bridgehead">
+ <element name="bridgehead">
+ <ref name="bridgehead.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="bridgehead.attlist">
+ <ref name="common.attrib"/>
+ <ref name="bridgehead.role.attrib"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <value>other</value>
+ <value>sect1</value>
+ <value>sect2</value>
+ <value>sect3</value>
+ <value>sect4</value>
+ <value>sect5</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="remark.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="remark">
+ <element name="remark">
+ <ref name="remark.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="remark.attlist">
+ <ref name="common.attrib"/>
+ <ref name="remark.role.attrib"/>
+ </define>
+ <define name="epigraph.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="epigraph">
+ <element name="epigraph">
+ <ref name="epigraph.attlist"/>
+ <optional>
+ <ref name="attribution"/>
+ </optional>
+ <oneOrMore>
+ <ref name="para.class"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="epigraph.attlist">
+ <ref name="common.attrib"/>
+ <ref name="epigraph.role.attrib"/>
+ </define>
+ <define name="footnote.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="footnote">
+ <element name="footnote">
+ <ref name="footnote.attlist"/>
+ <oneOrMore>
+ <ref name="footnote.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="footnote.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="footnote.role.attrib"/>
+ </define>
+ <define name="highlights.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="highlights">
+ <element name="highlights">
+ <ref name="highlights.attlist"/>
+ <oneOrMore>
+ <ref name="highlights.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="highlights.attlist">
+ <ref name="common.attrib"/>
+ <ref name="highlights.role.attrib"/>
+ </define>
+ <define name="formalpara.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="formalpara">
+ <element name="formalpara">
+ <ref name="formalpara.attlist"/>
+ <ref name="title"/>
+ <zeroOrMore>
+ <ref name="ndxterm.class"/>
+ </zeroOrMore>
+ <ref name="para"/>
+ </element>
+ </define>
+ <define name="formalpara.attlist">
+ <ref name="common.attrib"/>
+ <ref name="formalpara.role.attrib"/>
+ </define>
+ <define name="para.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="para">
+ <element name="para">
+ <ref name="para.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="para.char.mix"/>
+ <ref name="para.mix"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="para.attlist">
+ <ref name="common.attrib"/>
+ <ref name="para.role.attrib"/>
+ </define>
+ <define name="simpara.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="simpara">
+ <element name="simpara">
+ <ref name="simpara.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="simpara.attlist">
+ <ref name="common.attrib"/>
+ <ref name="simpara.role.attrib"/>
+ </define>
+ <define name="admon.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="admonitionType">
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <oneOrMore>
+ <ref name="admon.mix"/>
+ </oneOrMore>
+ </define>
+ <define name="important">
+ <element name="important">
+ <ref name="important.attlist"/>
+ <ref name="admonitionType"/>
+ </element>
+ </define>
+ <define name="important.attlist">
+ <ref name="common.attrib"/>
+ <ref name="admon.role.attrib"/>
+ </define>
+ <define name="warning">
+ <element name="warning">
+ <ref name="warning.attlist"/>
+ <ref name="admonitionType"/>
+ </element>
+ </define>
+ <define name="warning.attlist">
+ <ref name="common.attrib"/>
+ <ref name="admon.role.attrib"/>
+ </define>
+ <define name="caution">
+ <element name="caution">
+ <ref name="caution.attlist"/>
+ <ref name="admonitionType"/>
+ </element>
+ </define>
+ <define name="caution.attlist">
+ <ref name="common.attrib"/>
+ <ref name="admon.role.attrib"/>
+ </define>
+ <define name="note">
+ <element name="note">
+ <ref name="note.attlist"/>
+ <ref name="admonitionType"/>
+ </element>
+ </define>
+ <define name="note.attlist">
+ <ref name="common.attrib"/>
+ <ref name="admon.role.attrib"/>
+ </define>
+ <define name="tip">
+ <element name="tip">
+ <ref name="tip.attlist"/>
+ <ref name="admonitionType"/>
+ </element>
+ </define>
+ <define name="tip.attlist">
+ <ref name="common.attrib"/>
+ <ref name="admon.role.attrib"/>
+ </define>
+ <define name="glosslist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glosslist">
+ <element name="glosslist">
+ <ref name="glosslist.attlist"/>
+ <oneOrMore>
+ <ref name="glossentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="glosslist.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glosslist.role.attrib"/>
+ </define>
+ <define name="glossentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossentry">
+ <element name="glossentry">
+ <ref name="glossentry.attlist"/>
+ <ref name="glossterm"/>
+ <optional>
+ <ref name="acronym"/>
+ </optional>
+ <optional>
+ <ref name="abbrev"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="ndxterm.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="revhistory"/>
+ </optional>
+ <choice>
+ <ref name="glosssee"/>
+ <oneOrMore>
+ <ref name="glossdef"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="glossentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glossentry.role.attrib"/>
+ <optional>
+ <attribute name="sortas">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="glossdef.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossdef">
+ <element name="glossdef">
+ <ref name="glossdef.attlist"/>
+ <oneOrMore>
+ <ref name="glossdef.mix"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="glossseealso"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="glossdef.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glossdef.role.attrib"/>
+ <optional>
+ <attribute name="subject">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="glosssee.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glosssee">
+ <element name="glosssee">
+ <ref name="glosssee.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="glosssee.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glosssee.role.attrib"/>
+ <optional>
+ <attribute name="otherterm">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="glossseealso.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossseealso">
+ <element name="glossseealso">
+ <ref name="glossseealso.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="glossseealso.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glossseealso.role.attrib"/>
+ <optional>
+ <attribute name="otherterm">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="itemizedlist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="itemizedlist">
+ <element name="itemizedlist">
+ <ref name="itemizedlist.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="listitem"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="itemizedlist.attlist">
+ <ref name="mark.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="itemizedlist.role.attrib"/>
+ <optional>
+ <attribute name="spacing">
+ <choice>
+ <value>normal</value>
+ <value>compact</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="orderedlist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="orderedlist">
+ <element name="orderedlist">
+ <ref name="orderedlist.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="listitem"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="orderedlist.attlist">
+ <ref name="common.attrib"/>
+ <ref name="orderedlist.role.attrib"/>
+ <optional>
+ <attribute name="numeration">
+ <choice>
+ <value>arabic</value>
+ <value>upperalpha</value>
+ <value>loweralpha</value>
+ <value>upperroman</value>
+ <value>lowerroman</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="inheritnum">
+ <choice>
+ <value>inherit</value>
+ <value>ignore</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="continuation">
+ <choice>
+ <value>continues</value>
+ <value>restarts</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="spacing">
+ <choice>
+ <value>normal</value>
+ <value>compact</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="listitem.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="listitem">
+ <element name="listitem">
+ <ref name="listitem.attlist"/>
+ <oneOrMore>
+ <ref name="component.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="listitem.attlist">
+ <ref name="common.attrib"/>
+ <ref name="listitem.role.attrib"/>
+ <optional>
+ <attribute name="override">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="segmentedlist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="segmentedlist">
+ <element name="segmentedlist">
+ <ref name="segmentedlist.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <ref name="segtitle"/>
+ <zeroOrMore>
+ <ref name="segtitle"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="seglistitem"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="segmentedlist.attlist">
+ <ref name="common.attrib"/>
+ <ref name="segmentedlist.role.attrib"/>
+ </define>
+ <define name="segtitle.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="segtitle">
+ <element name="segtitle">
+ <ref name="segtitle.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="title.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="segtitle.attlist">
+ <ref name="common.attrib"/>
+ <ref name="segtitle.role.attrib"/>
+ </define>
+ <define name="seglistitem.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="seglistitem">
+ <element name="seglistitem">
+ <ref name="seglistitem.attlist"/>
+ <ref name="seg"/>
+ <zeroOrMore>
+ <ref name="seg"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="seglistitem.attlist">
+ <ref name="common.attrib"/>
+ <ref name="seglistitem.role.attrib"/>
+ </define>
+ <define name="seg.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="seg">
+ <element name="seg">
+ <ref name="seg.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="seg.attlist">
+ <ref name="common.attrib"/>
+ <ref name="seg.role.attrib"/>
+ </define>
+ <define name="simplelist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="simplelist">
+ <element name="simplelist">
+ <ref name="simplelist.attlist"/>
+ <oneOrMore>
+ <ref name="member"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="simplelist.attlist">
+ <ref name="common.attrib"/>
+ <ref name="simplelist.role.attrib"/>
+ <optional>
+ <attribute name="columns">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>inline</value>
+ <value>vert</value>
+ <value>horiz</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="member.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="member">
+ <element name="member">
+ <ref name="member.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="member.attlist">
+ <ref name="common.attrib"/>
+ <ref name="member.role.attrib"/>
+ </define>
+ <define name="variablelist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="variablelist">
+ <element name="variablelist">
+ <ref name="variablelist.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="varlistentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="variablelist.attlist">
+ <ref name="common.attrib"/>
+ <ref name="variablelist.role.attrib"/>
+ <optional>
+ <attribute name="termlength">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="varlistentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="varlistentry">
+ <element name="varlistentry">
+ <ref name="varlistentry.attlist"/>
+ <oneOrMore>
+ <ref name="term"/>
+ </oneOrMore>
+ <ref name="listitem"/>
+ </element>
+ </define>
+ <define name="varlistentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="varlistentry.role.attrib"/>
+ </define>
+ <define name="term.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="term">
+ <element name="term">
+ <ref name="term.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="term.attlist">
+ <ref name="common.attrib"/>
+ <ref name="term.role.attrib"/>
+ </define>
+ <define name="calloutlist.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="calloutlist">
+ <element name="calloutlist">
+ <ref name="calloutlist.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="callout"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="calloutlist.attlist">
+ <ref name="common.attrib"/>
+ <ref name="calloutlist.role.attrib"/>
+ </define>
+ <define name="callout.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="callout">
+ <element name="callout">
+ <ref name="callout.attlist"/>
+ <oneOrMore>
+ <ref name="component.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="callout.attlist">
+ <ref name="common.attrib"/>
+ <ref name="callout.role.attrib"/>
+ <optional>
+ <attribute name="arearefs">
+ <data type="IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="example.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="example">
+ <element name="example">
+ <ref name="example.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="example.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="example.attlist">
+ <ref name="label.attrib"/>
+ <ref name="width.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="example.role.attrib"/>
+ </define>
+ <define name="informalexample.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="informalexample">
+ <element name="informalexample">
+ <ref name="informalexample.attlist"/>
+ <oneOrMore>
+ <ref name="example.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="informalexample.attlist">
+ <ref name="width.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="informalexample.role.attrib"/>
+ </define>
+ <define name="programlistingco.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="programlistingco">
+ <element name="programlistingco">
+ <ref name="programlistingco.attlist"/>
+ <ref name="areaspec"/>
+ <ref name="programlisting"/>
+ <zeroOrMore>
+ <ref name="calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="programlistingco.attlist">
+ <ref name="common.attrib"/>
+ <ref name="programlistingco.role.attrib"/>
+ </define>
+ <define name="areaspec.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="areaspec">
+ <element name="areaspec">
+ <ref name="areaspec.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="area"/>
+ <ref name="areaset"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="areaspec.attlist">
+ <ref name="common.attrib"/>
+ <ref name="areaspec.role.attrib"/>
+ <optional>
+ <attribute name="units">
+ <choice>
+ <value>calspair</value>
+ <value>linecolumn</value>
+ <value>linerange</value>
+ <value>linecolumnpair</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otherunits">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="area.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="area">
+ <element name="area">
+ <ref name="area.attlist"/>
+ </element>
+ </define>
+ <define name="area.attlist">
+ <ref name="label.attrib"/>
+ <ref name="linkends.attrib"/>
+ <ref name="idreq.common.attrib"/>
+ <ref name="area.role.attrib"/>
+ <optional>
+ <attribute name="units">
+ <choice>
+ <value>calspair</value>
+ <value>linecolumn</value>
+ <value>linerange</value>
+ <value>linecolumnpair</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otherunits">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <attribute name="coords">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="areaset.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="areaset">
+ <element name="areaset">
+ <ref name="areaset.attlist"/>
+ <oneOrMore>
+ <ref name="area"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="areaset.attlist">
+ <ref name="label.attrib"/>
+ <ref name="idreq.common.attrib"/>
+ <ref name="areaset.role.attrib"/>
+ <optional>
+ <attribute name="units">
+ <choice>
+ <value>calspair</value>
+ <value>linecolumn</value>
+ <value>linerange</value>
+ <value>linecolumnpair</value>
+ <value>other</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="otherunits">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <attribute name="coords">
+ <data type="string"/>
+ </attribute>
+ </define>
+ <define name="programlisting.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="programlisting">
+ <element name="programlisting">
+ <ref name="programlisting.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="para.char.mix"/>
+ <ref name="co"/>
+ <ref name="lineannotation"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="programlisting.attlist">
+ <ref name="width.attrib"/>
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="programlisting.role.attrib"/>
+ </define>
+ <define name="literallayout.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="literallayout">
+ <element name="literallayout">
+ <ref name="literallayout.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="para.char.mix"/>
+ <ref name="co"/>
+ <ref name="lineannotation"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="literallayout.attlist">
+ <ref name="width.attrib"/>
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="literallayout.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>monospaced</value>
+ <value>normal</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="screenco.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="screenco">
+ <element name="screenco">
+ <ref name="screenco.attlist"/>
+ <ref name="areaspec"/>
+ <ref name="screen"/>
+ <zeroOrMore>
+ <ref name="calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="screenco.attlist">
+ <ref name="common.attrib"/>
+ <ref name="screenco.role.attrib"/>
+ </define>
+ <define name="screen.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="screen">
+ <element name="screen">
+ <ref name="screen.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="para.char.mix"/>
+ <ref name="co"/>
+ <ref name="lineannotation"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="screen.attlist">
+ <ref name="width.attrib"/>
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="screen.role.attrib"/>
+ </define>
+ <define name="screenshot.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="screenshot">
+ <element name="screenshot">
+ <ref name="screenshot.attlist"/>
+ <optional>
+ <ref name="screeninfo"/>
+ </optional>
+ <choice>
+ <ref name="graphic"/>
+ <ref name="graphicco"/>
+ <ref name="mediaobject"/>
+ <ref name="mediaobjectco"/>
+ </choice>
+ </element>
+ </define>
+ <define name="screenshot.attlist">
+ <ref name="common.attrib"/>
+ <ref name="screenshot.role.attrib"/>
+ </define>
+ <define name="screeninfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="screeninfo">
+ <element name="screeninfo">
+ <ref name="screeninfo.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="screeninfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="screeninfo.role.attrib"/>
+ </define>
+ <define name="figure.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="figure">
+ <element name="figure">
+ <ref name="figure.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <ref name="figure.mix"/>
+ <ref name="link.char.class"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="figure.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="figure.role.attrib"/>
+ <optional>
+ <attribute name="float">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pgwide">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="informalfigure.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="informalfigure">
+ <element name="informalfigure">
+ <ref name="informalfigure.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="figure.mix"/>
+ <ref name="link.char.class"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="informalfigure.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="informalfigure.role.attrib"/>
+ <optional>
+ <attribute name="float">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pgwide">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="graphicco.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="graphicco">
+ <element name="graphicco">
+ <ref name="graphicco.attlist"/>
+ <ref name="areaspec"/>
+ <ref name="graphic"/>
+ <zeroOrMore>
+ <ref name="calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="graphicco.attlist">
+ <ref name="common.attrib"/>
+ <ref name="graphicco.role.attrib"/>
+ </define>
+ <define name="graphic.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="graphic">
+ <element name="graphic">
+ <ref name="graphic.attlist"/>
+ </element>
+ </define>
+ <define name="graphic.attlist">
+ <ref name="graphics.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="graphic.role.attrib"/>
+ </define>
+ <define name="inlinegraphic.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="inlinegraphic">
+ <element name="inlinegraphic">
+ <ref name="inlinegraphic.attlist"/>
+ </element>
+ </define>
+ <define name="inlinegraphic.attlist">
+ <ref name="graphics.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="inlinegraphic.role.attrib"/>
+ </define>
+ <define name="mediaobject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="mediaobject">
+ <element name="mediaobject">
+ <ref name="mediaobject.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <ref name="mediaobject.mix"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="mediaobject.mix"/>
+ <ref name="textobject"/>
+ </choice>
+ </zeroOrMore>
+ <optional>
+ <ref name="caption"/>
+ </optional>
+ </element>
+ </define>
+ <define name="mediaobject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="mediaobject.role.attrib"/>
+ </define>
+ <define name="inlinemediaobject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="inlinemediaobject">
+ <element name="inlinemediaobject">
+ <ref name="inlinemediaobject.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <ref name="mediaobject.mix"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="mediaobject.mix"/>
+ <ref name="textobject"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="inlinemediaobject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="inlinemediaobject.role.attrib"/>
+ </define>
+ <define name="videoobject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="videoobject">
+ <element name="videoobject">
+ <ref name="videoobject.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <ref name="videodata"/>
+ </element>
+ </define>
+ <define name="videoobject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="videoobject.role.attrib"/>
+ </define>
+ <define name="audioobject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="audioobject">
+ <element name="audioobject">
+ <ref name="audioobject.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <ref name="audiodata"/>
+ </element>
+ </define>
+ <define name="audioobject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="audioobject.role.attrib"/>
+ </define>
+ <define name="imageobject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="imageobject">
+ <element name="imageobject">
+ <ref name="imageobject.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <ref name="imagedata"/>
+ </element>
+ </define>
+ <define name="imageobject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="imageobject.role.attrib"/>
+ </define>
+ <define name="textobject.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="textobject">
+ <element name="textobject">
+ <ref name="textobject.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <choice>
+ <ref name="phrase"/>
+ <oneOrMore>
+ <ref name="textobject.mix"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="textobject.attlist">
+ <ref name="common.attrib"/>
+ <ref name="textobject.role.attrib"/>
+ </define>
+ <define name="objectinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="objectinfo">
+ <element name="objectinfo">
+ <ref name="objectinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="objectinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="objectinfo.role.attrib"/>
+ </define>
+ <define name="objectdata.attrib">
+ <optional>
+ <attribute name="fileref">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="format">
+ <choice>
+ <value>BMP</value>
+ <value>CGM-CHAR</value>
+ <value>CGM-BINARY</value>
+ <value>CGM-CLEAR</value>
+ <value>DITROFF</value>
+ <value>DVI</value>
+ <value>EPS</value>
+ <value>EQN</value>
+ <value>FAX</value>
+ <value>GIF</value>
+ <value>GIF87a</value>
+ <value>GIF89a</value>
+ <value>JPG</value>
+ <value>JPEG</value>
+ <value>IGES</value>
+ <value>PCX</value>
+ <value>PIC</value>
+ <value>PNG</value>
+ <value>PS</value>
+ <value>SGML</value>
+ <value>TBL</value>
+ <value>TEX</value>
+ <value>TIFF</value>
+ <value>WMF</value>
+ <value>WPG</value>
+ <value>linespecific</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="srccredit">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="videodata.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="videodata">
+ <element name="videodata">
+ <ref name="videodata.attlist"/>
+ </element>
+ </define>
+ <define name="videodata.attlist">
+ <ref name="common.attrib"/>
+ <ref name="objectdata.attrib"/>
+ <optional>
+ <attribute name="width">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scale">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scalefit">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="audiodata.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="audiodata">
+ <element name="audiodata">
+ <ref name="audiodata.attlist"/>
+ </element>
+ </define>
+ <define name="audiodata.attlist">
+ <ref name="common.attrib"/>
+ <ref name="objectdata.attrib"/>
+ <ref name="audiodata.role.attrib"/>
+ </define>
+ <define name="imagedata.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="imagedata">
+ <element name="imagedata">
+ <ref name="imagedata.attlist"/>
+ </element>
+ </define>
+ <define name="imagedata.attlist">
+ <ref name="common.attrib"/>
+ <ref name="objectdata.attrib"/>
+ <ref name="imagedata.role.attrib"/>
+ <optional>
+ <attribute name="width">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="depth">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scale">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scalefit">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="caption.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="caption">
+ <element name="caption">
+ <ref name="caption.attlist"/>
+ <zeroOrMore>
+ <ref name="textobject.mix"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="caption.attlist">
+ <ref name="common.attrib"/>
+ <ref name="caption.role.attrib"/>
+ </define>
+ <define name="mediaobjectco.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="mediaobjectco">
+ <element name="mediaobjectco">
+ <ref name="mediaobjectco.attlist"/>
+ <optional>
+ <ref name="objectinfo"/>
+ </optional>
+ <ref name="imageobjectco"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="imageobjectco"/>
+ <ref name="textobject"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="mediaobjectco.attlist">
+ <ref name="common.attrib"/>
+ <ref name="mediaobjectco.role.attrib"/>
+ </define>
+ <define name="imageobjectco.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="imageobjectco">
+ <element name="imageobjectco">
+ <ref name="imageobjectco.attlist"/>
+ <ref name="areaspec"/>
+ <ref name="imageobject"/>
+ <zeroOrMore>
+ <ref name="calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="imageobjectco.attlist">
+ <ref name="common.attrib"/>
+ <ref name="imageobjectco.role.attrib"/>
+ </define>
+ <define name="equation.content">
+ <optional>
+ <ref name="alt"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="mediaobject"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="inlineequation.content">
+ <optional>
+ <ref name="alt"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="inlinemediaobject"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="equation.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="equation">
+ <element name="equation">
+ <ref name="equation.attlist"/>
+ <optional>
+ <ref name="formalobject.title.content"/>
+ </optional>
+ <choice>
+ <ref name="informalequation"/>
+ <ref name="equation.content"/>
+ </choice>
+ </element>
+ </define>
+ <define name="equation.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="equation.role.attrib"/>
+ </define>
+ <define name="informalequation.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="informalequation">
+ <element name="informalequation">
+ <ref name="informalequation.attlist"/>
+ <ref name="equation.content"/>
+ </element>
+ </define>
+ <define name="informalequation.attlist">
+ <ref name="common.attrib"/>
+ <ref name="informalequation.role.attrib"/>
+ </define>
+ <define name="inlineequation.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="inlineequation">
+ <element name="inlineequation">
+ <ref name="inlineequation.attlist"/>
+ <ref name="inlineequation.content"/>
+ </element>
+ </define>
+ <define name="inlineequation.attlist">
+ <ref name="common.attrib"/>
+ <ref name="inlineequation.role.attrib"/>
+ </define>
+ <define name="alt.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="alt">
+ <element name="alt">
+ <ref name="alt.attlist"/>
+ <text/>
+ </element>
+ </define>
+ <define name="alt.attlist">
+ <ref name="common.attrib"/>
+ <ref name="alt.role.attrib"/>
+ </define>
+ <define name="synopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="synopsis">
+ <element name="synopsis">
+ <ref name="synopsis.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="para.char.mix"/>
+ <ref name="graphic"/>
+ <ref name="mediaobject"/>
+ <ref name="lineannotation"/>
+ <ref name="co"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="synopsis.attlist">
+ <ref name="label.attrib"/>
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="synopsis.role.attrib"/>
+ </define>
+ <define name="cmdsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="cmdsynopsis">
+ <element name="cmdsynopsis">
+ <ref name="cmdsynopsis.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="command"/>
+ <ref name="arg"/>
+ <ref name="group"/>
+ <ref name="sbr"/>
+ </choice>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="synopfragment"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="cmdsynopsis.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="cmdsynopsis.role.attrib"/>
+ <optional>
+ <attribute name="sepchar">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cmdlength">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="arg.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="arg">
+ <element name="arg">
+ <ref name="arg.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="arg"/>
+ <ref name="group"/>
+ <ref name="option"/>
+ <ref name="synopfragmentref"/>
+ <ref name="replaceable"/>
+ <ref name="sbr"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="arg.attlist">
+ <ref name="common.attrib"/>
+ <ref name="arg.role.attrib"/>
+ <optional>
+ <attribute name="choice">
+ <choice>
+ <value>opt</value>
+ <value>req</value>
+ <value>plain</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rep">
+ <choice>
+ <value>norepeat</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="group.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="group">
+ <element name="group">
+ <ref name="group.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="arg"/>
+ <ref name="group"/>
+ <ref name="option"/>
+ <ref name="synopfragmentref"/>
+ <ref name="replaceable"/>
+ <ref name="sbr"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="group.attlist">
+ <ref name="common.attrib"/>
+ <ref name="group.role.attrib"/>
+ <optional>
+ <attribute name="choice">
+ <choice>
+ <value>opt</value>
+ <value>req</value>
+ <value>plain</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rep">
+ <choice>
+ <value>norepeat</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sbr.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sbr">
+ <element name="sbr">
+ <ref name="sbr.attlist"/>
+ </element>
+ </define>
+ <define name="sbr.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sbr.role.attrib"/>
+ </define>
+ <define name="synopfragmentref.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="synopfragmentref">
+ <element name="synopfragmentref">
+ <ref name="synopfragmentref.attlist"/>
+ <text/>
+ </element>
+ </define>
+ <define name="synopfragmentref.attlist">
+ <ref name="linkendreq.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="synopfragmentref.role.attrib"/>
+ </define>
+ <define name="synopfragment.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="synopfragment">
+ <element name="synopfragment">
+ <ref name="synopfragment.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="arg"/>
+ <ref name="group"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="synopfragment.attlist">
+ <ref name="idreq.common.attrib"/>
+ <ref name="synopfragment.role.attrib"/>
+ </define>
+ <define name="funcsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="funcsynopsis">
+ <element name="funcsynopsis">
+ <ref name="funcsynopsis.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="funcsynopsisinfo"/>
+ <ref name="funcprototype"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="funcsynopsis.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="funcsynopsis.role.attrib"/>
+ </define>
+ <define name="funcsynopsisinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="funcsynopsisinfo">
+ <element name="funcsynopsisinfo">
+ <ref name="funcsynopsisinfo.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="cptr.char.mix"/>
+ <ref name="lineannotation"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="funcsynopsisinfo.attlist">
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="funcsynopsisinfo.role.attrib"/>
+ </define>
+ <define name="funcprototype.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="funcprototype">
+ <element name="funcprototype">
+ <ref name="funcprototype.attlist"/>
+ <ref name="funcdef"/>
+ <oneOrMore>
+ <choice>
+ <ref name="void"/>
+ <ref name="varargs"/>
+ <ref name="paramdef"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="funcprototype.attlist">
+ <ref name="common.attrib"/>
+ <ref name="funcprototype.role.attrib"/>
+ </define>
+ <define name="funcdef.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="funcdef">
+ <element name="funcdef">
+ <ref name="funcdef.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="replaceable"/>
+ <ref name="function"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="funcdef.attlist">
+ <ref name="common.attrib"/>
+ <ref name="funcdef.role.attrib"/>
+ </define>
+ <define name="void.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="void">
+ <element name="void">
+ <ref name="void.attlist"/>
+ </element>
+ </define>
+ <define name="void.attlist">
+ <ref name="common.attrib"/>
+ <ref name="void.role.attrib"/>
+ </define>
+ <define name="varargs.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="varargs">
+ <element name="varargs">
+ <ref name="varargs.attlist"/>
+ </element>
+ </define>
+ <define name="varargs.attlist">
+ <ref name="common.attrib"/>
+ <ref name="varargs.role.attrib"/>
+ </define>
+ <define name="paramdef.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="paramdef">
+ <element name="paramdef">
+ <ref name="paramdef.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="replaceable"/>
+ <ref name="parameter"/>
+ <ref name="funcparams"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="paramdef.attlist">
+ <ref name="common.attrib"/>
+ <ref name="paramdef.role.attrib"/>
+ </define>
+ <define name="funcparams.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="funcparams">
+ <element name="funcparams">
+ <ref name="funcparams.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="funcparams.attlist">
+ <ref name="common.attrib"/>
+ <ref name="funcparams.role.attrib"/>
+ </define>
+ <define name="classsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="classsynopsis">
+ <element name="classsynopsis">
+ <ref name="classsynopsis.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="ooclass"/>
+ <ref name="oointerface"/>
+ <ref name="ooexception"/>
+ </choice>
+ </oneOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="classsynopsisinfo"/>
+ <ref name="fieldsynopsis"/>
+ <ref name="method.synop.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="classsynopsis.attlist">
+ <ref name="common.attrib"/>
+ <ref name="classsynopsis.role.attrib"/>
+ <optional>
+ <attribute name="language">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>class</value>
+ <value>interface</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="classsynopsisinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="classsynopsisinfo">
+ <element name="classsynopsisinfo">
+ <ref name="classsynopsisinfo.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="cptr.char.mix"/>
+ <ref name="lineannotation"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="classsynopsisinfo.attlist">
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="classsynopsisinfo.role.attrib"/>
+ </define>
+ <define name="ooclass.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="ooclass">
+ <element name="ooclass">
+ <ref name="ooclass.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <ref name="classname"/>
+ </element>
+ </define>
+ <define name="ooclass.attlist">
+ <ref name="common.attrib"/>
+ <ref name="ooclass.role.attrib"/>
+ </define>
+ <define name="oointerface.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="oointerface">
+ <element name="oointerface">
+ <ref name="oointerface.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <ref name="interfacename"/>
+ </element>
+ </define>
+ <define name="oointerface.attlist">
+ <ref name="common.attrib"/>
+ <ref name="oointerface.role.attrib"/>
+ </define>
+ <define name="ooexception.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="ooexception">
+ <element name="ooexception">
+ <ref name="ooexception.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <ref name="exceptionname"/>
+ </element>
+ </define>
+ <define name="ooexception.attlist">
+ <ref name="common.attrib"/>
+ <ref name="ooexception.role.attrib"/>
+ </define>
+ <define name="modifier.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="modifier">
+ <element name="modifier">
+ <ref name="modifier.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="modifier.attlist">
+ <ref name="common.attrib"/>
+ <ref name="modifier.role.attrib"/>
+ </define>
+ <define name="interfacename.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="interfacename">
+ <element name="interfacename">
+ <ref name="interfacename.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="interfacename.attlist">
+ <ref name="common.attrib"/>
+ <ref name="interfacename.role.attrib"/>
+ </define>
+ <define name="exceptionname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="exceptionname">
+ <element name="exceptionname">
+ <ref name="exceptionname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="exceptionname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="exceptionname.role.attrib"/>
+ </define>
+ <define name="fieldsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="fieldsynopsis">
+ <element name="fieldsynopsis">
+ <ref name="fieldsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="type"/>
+ </optional>
+ <ref name="varname"/>
+ <optional>
+ <ref name="initializer"/>
+ </optional>
+ </element>
+ </define>
+ <define name="fieldsynopsis.attlist">
+ <ref name="common.attrib"/>
+ <ref name="fieldsynopsis.role.attrib"/>
+ </define>
+ <define name="initializer.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="initializer">
+ <element name="initializer">
+ <ref name="initializer.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="initializer.attlist">
+ <ref name="common.attrib"/>
+ <ref name="initializer.role.attrib"/>
+ </define>
+ <define name="constructorsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="constructorsynopsis">
+ <element name="constructorsynopsis">
+ <ref name="constructorsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="methodname"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="methodparam"/>
+ </oneOrMore>
+ <ref name="void"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="exceptionname"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="constructorsynopsis.attlist">
+ <ref name="common.attrib"/>
+ <ref name="constructorsynopsis.role.attrib"/>
+ </define>
+ <define name="destructorsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="destructorsynopsis">
+ <element name="destructorsynopsis">
+ <ref name="destructorsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="methodname"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="methodparam"/>
+ </oneOrMore>
+ <ref name="void"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="exceptionname"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="destructorsynopsis.attlist">
+ <ref name="common.attrib"/>
+ <ref name="destructorsynopsis.role.attrib"/>
+ </define>
+ <define name="methodsynopsis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="methodsynopsis">
+ <element name="methodsynopsis">
+ <ref name="methodsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ <optional>
+ <choice>
+ <ref name="type"/>
+ <ref name="void"/>
+ </choice>
+ </optional>
+ <optional>
+ <ref name="methodname"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="methodparam"/>
+ </oneOrMore>
+ <ref name="void"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="exceptionname"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="modifier"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="methodsynopsis.attlist">
+ <ref name="common.attrib"/>
+ <ref name="methodsynopsis.role.attrib"/>
+ </define>
+ <define name="methodname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="methodname">
+ <element name="methodname">
+ <ref name="methodname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="methodname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="methodname.role.attrib"/>
+ </define>
+ <define name="methodparam.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="methodparam">
+ <element name="methodparam">
+ <ref name="methodparam.attlist"/>
+ <zeroOrMore>
+ <element name="modifier">
+ <text/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="type">
+ <text/>
+ </element>
+ </optional>
+ <choice>
+ <group>
+ <element name="parameter">
+ <text/>
+ </element>
+ <optional>
+ <element name="initializer">
+ <text/>
+ </element>
+ </optional>
+ </group>
+ <element name="funcparams">
+ <text/>
+ </element>
+ </choice>
+ <zeroOrMore>
+ <element name="modifier">
+ <text/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="methodparam.attlist">
+ <ref name="common.attrib"/>
+ <ref name="methodparam.role.attrib"/>
+ <optional>
+ <attribute name="choice">
+ <choice>
+ <value>opt</value>
+ <value>req</value>
+ <value>plain</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rep">
+ <choice>
+ <value>norepeat</value>
+ <value>repeat</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ackno.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="ackno">
+ <element name="ackno">
+ <ref name="ackno.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="ackno.attlist">
+ <ref name="common.attrib"/>
+ <ref name="ackno.role.attrib"/>
+ </define>
+ <define name="address.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="address">
+ <element name="address">
+ <ref name="address.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="person.ident.mix"/>
+ <ref name="street"/>
+ <ref name="pob"/>
+ <ref name="postcode"/>
+ <ref name="city"/>
+ <ref name="state"/>
+ <ref name="country"/>
+ <ref name="phone"/>
+ <ref name="fax"/>
+ <ref name="email"/>
+ <ref name="otheraddr"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="address.attlist">
+ <ref name="linespecific.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="address.role.attrib"/>
+ </define>
+ <define name="street.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="street">
+ <element name="street">
+ <ref name="street.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="street.attlist">
+ <ref name="common.attrib"/>
+ <ref name="street.role.attrib"/>
+ </define>
+ <define name="pob.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="pob">
+ <element name="pob">
+ <ref name="pob.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="pob.attlist">
+ <ref name="common.attrib"/>
+ <ref name="pob.role.attrib"/>
+ </define>
+ <define name="postcode.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="postcode">
+ <element name="postcode">
+ <ref name="postcode.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="postcode.attlist">
+ <ref name="common.attrib"/>
+ <ref name="postcode.role.attrib"/>
+ </define>
+ <define name="city.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="city">
+ <element name="city">
+ <ref name="city.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="city.attlist">
+ <ref name="common.attrib"/>
+ <ref name="city.role.attrib"/>
+ </define>
+ <define name="state.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="state">
+ <element name="state">
+ <ref name="state.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="state.attlist">
+ <ref name="common.attrib"/>
+ <ref name="state.role.attrib"/>
+ </define>
+ <define name="country.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="country">
+ <element name="country">
+ <ref name="country.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="country.attlist">
+ <ref name="common.attrib"/>
+ <ref name="country.role.attrib"/>
+ </define>
+ <define name="phone.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="phone">
+ <element name="phone">
+ <ref name="phone.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="phone.attlist">
+ <ref name="common.attrib"/>
+ <ref name="phone.role.attrib"/>
+ </define>
+ <define name="fax.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="fax">
+ <element name="fax">
+ <ref name="fax.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="fax.attlist">
+ <ref name="common.attrib"/>
+ <ref name="fax.role.attrib"/>
+ </define>
+ <define name="otheraddr.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="otheraddr">
+ <element name="otheraddr">
+ <ref name="otheraddr.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="otheraddr.attlist">
+ <ref name="common.attrib"/>
+ <ref name="otheraddr.role.attrib"/>
+ </define>
+ <define name="affiliation.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="affiliation">
+ <element name="affiliation">
+ <ref name="affiliation.attlist"/>
+ <optional>
+ <ref name="shortaffil"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="jobtitle"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="orgname"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="orgdiv"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="address"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="affiliation.attlist">
+ <ref name="common.attrib"/>
+ <ref name="affiliation.role.attrib"/>
+ </define>
+ <define name="shortaffil.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="shortaffil">
+ <element name="shortaffil">
+ <ref name="shortaffil.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="shortaffil.attlist">
+ <ref name="common.attrib"/>
+ <ref name="shortaffil.role.attrib"/>
+ </define>
+ <define name="jobtitle.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="jobtitle">
+ <element name="jobtitle">
+ <ref name="jobtitle.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="jobtitle.attlist">
+ <ref name="common.attrib"/>
+ <ref name="jobtitle.role.attrib"/>
+ </define>
+ <define name="orgdiv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="orgdiv">
+ <element name="orgdiv">
+ <ref name="orgdiv.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="orgdiv.attlist">
+ <ref name="common.attrib"/>
+ <ref name="orgdiv.role.attrib"/>
+ </define>
+ <define name="artpagenums.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="artpagenums">
+ <element name="artpagenums">
+ <ref name="artpagenums.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="artpagenums.attlist">
+ <ref name="common.attrib"/>
+ <ref name="artpagenums.role.attrib"/>
+ </define>
+ <define name="author.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="author">
+ <element name="author">
+ <ref name="author.attlist"/>
+ <oneOrMore>
+ <ref name="person.ident.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="author.attlist">
+ <ref name="common.attrib"/>
+ <ref name="author.role.attrib"/>
+ </define>
+ <define name="authorgroup.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="authorgroup">
+ <element name="authorgroup">
+ <ref name="authorgroup.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="author"/>
+ <ref name="editor"/>
+ <ref name="collab"/>
+ <ref name="corpauthor"/>
+ <ref name="othercredit"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="authorgroup.attlist">
+ <ref name="common.attrib"/>
+ <ref name="authorgroup.role.attrib"/>
+ </define>
+ <define name="collab.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="collab">
+ <element name="collab">
+ <ref name="collab.attlist"/>
+ <ref name="collabname"/>
+ <zeroOrMore>
+ <ref name="affiliation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="collab.attlist">
+ <ref name="common.attrib"/>
+ <ref name="collab.role.attrib"/>
+ </define>
+ <define name="collabname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="collabname">
+ <element name="collabname">
+ <ref name="collabname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="collabname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="collabname.role.attrib"/>
+ </define>
+ <define name="authorinitials.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="authorinitials">
+ <element name="authorinitials">
+ <ref name="authorinitials.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="authorinitials.attlist">
+ <ref name="common.attrib"/>
+ <ref name="authorinitials.role.attrib"/>
+ </define>
+ <define name="confgroup.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="confgroup">
+ <element name="confgroup">
+ <ref name="confgroup.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="confdates"/>
+ <ref name="conftitle"/>
+ <ref name="confnum"/>
+ <ref name="address"/>
+ <ref name="confsponsor"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="confgroup.attlist">
+ <ref name="common.attrib"/>
+ <ref name="confgroup.role.attrib"/>
+ </define>
+ <define name="confdates.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="confdates">
+ <element name="confdates">
+ <ref name="confdates.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="confdates.attlist">
+ <ref name="common.attrib"/>
+ <ref name="confdates.role.attrib"/>
+ </define>
+ <define name="conftitle.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="conftitle">
+ <element name="conftitle">
+ <ref name="conftitle.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="conftitle.attlist">
+ <ref name="common.attrib"/>
+ <ref name="conftitle.role.attrib"/>
+ </define>
+ <define name="confnum.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="confnum">
+ <element name="confnum">
+ <ref name="confnum.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="confnum.attlist">
+ <ref name="common.attrib"/>
+ <ref name="confnum.role.attrib"/>
+ </define>
+ <define name="confsponsor.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="confsponsor">
+ <element name="confsponsor">
+ <ref name="confsponsor.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="confsponsor.attlist">
+ <ref name="common.attrib"/>
+ <ref name="confsponsor.role.attrib"/>
+ </define>
+ <define name="contractnum.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="contractnum">
+ <element name="contractnum">
+ <ref name="contractnum.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="contractnum.attlist">
+ <ref name="common.attrib"/>
+ <ref name="contractnum.role.attrib"/>
+ </define>
+ <define name="contractsponsor.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="contractsponsor">
+ <element name="contractsponsor">
+ <ref name="contractsponsor.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="contractsponsor.attlist">
+ <ref name="common.attrib"/>
+ <ref name="contractsponsor.role.attrib"/>
+ </define>
+ <define name="copyright.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="copyright">
+ <element name="copyright">
+ <ref name="copyright.attlist"/>
+ <oneOrMore>
+ <ref name="year"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="holder"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="copyright.attlist">
+ <ref name="common.attrib"/>
+ <ref name="copyright.role.attrib"/>
+ </define>
+ <define name="year.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="year">
+ <element name="year">
+ <ref name="year.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="year.attlist">
+ <ref name="common.attrib"/>
+ <ref name="year.role.attrib"/>
+ </define>
+ <define name="holder.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="holder">
+ <element name="holder">
+ <ref name="holder.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="holder.attlist">
+ <ref name="common.attrib"/>
+ <ref name="holder.role.attrib"/>
+ </define>
+ <define name="corpauthor.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="corpauthor">
+ <element name="corpauthor">
+ <ref name="corpauthor.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="corpauthor.attlist">
+ <ref name="common.attrib"/>
+ <ref name="corpauthor.role.attrib"/>
+ </define>
+ <define name="corpname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="corpname">
+ <element name="corpname">
+ <ref name="corpname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="corpname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="corpname.role.attrib"/>
+ </define>
+ <define name="date.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="date">
+ <element name="date">
+ <ref name="date.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="date.attlist">
+ <ref name="common.attrib"/>
+ <ref name="date.role.attrib"/>
+ </define>
+ <define name="edition.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="edition">
+ <element name="edition">
+ <ref name="edition.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="edition.attlist">
+ <ref name="common.attrib"/>
+ <ref name="edition.role.attrib"/>
+ </define>
+ <define name="editor.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="editor">
+ <element name="editor">
+ <ref name="editor.attlist"/>
+ <oneOrMore>
+ <ref name="person.ident.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="editor.attlist">
+ <ref name="common.attrib"/>
+ <ref name="editor.role.attrib"/>
+ </define>
+ <define name="isbn.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="isbn">
+ <element name="isbn">
+ <ref name="isbn.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="isbn.attlist">
+ <ref name="common.attrib"/>
+ <ref name="isbn.role.attrib"/>
+ </define>
+ <define name="issn.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="issn">
+ <element name="issn">
+ <ref name="issn.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="issn.attlist">
+ <ref name="common.attrib"/>
+ <ref name="issn.role.attrib"/>
+ </define>
+ <define name="invpartnumber.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="invpartnumber">
+ <element name="invpartnumber">
+ <ref name="invpartnumber.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="invpartnumber.attlist">
+ <ref name="common.attrib"/>
+ <ref name="invpartnumber.role.attrib"/>
+ </define>
+ <define name="issuenum.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="issuenum">
+ <element name="issuenum">
+ <ref name="issuenum.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="issuenum.attlist">
+ <ref name="common.attrib"/>
+ <ref name="issuenum.role.attrib"/>
+ </define>
+ <define name="legalnotice.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="legalnotice">
+ <element name="legalnotice">
+ <ref name="legalnotice.attlist"/>
+ <optional>
+ <ref name="title"/>
+ </optional>
+ <oneOrMore>
+ <ref name="legalnotice.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="legalnotice.attlist">
+ <ref name="common.attrib"/>
+ <ref name="legalnotice.role.attrib"/>
+ </define>
+ <define name="modespec.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="modespec">
+ <element name="modespec">
+ <ref name="modespec.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="modespec.attlist">
+ <ref name="common.attrib"/>
+ <ref name="modespec.role.attrib"/>
+ <optional>
+ <attribute name="application">
+ <choice>
+ <value>BMP</value>
+ <value>CGM-CHAR</value>
+ <value>CGM-BINARY</value>
+ <value>CGM-CLEAR</value>
+ <value>DITROFF</value>
+ <value>DVI</value>
+ <value>EPS</value>
+ <value>EQN</value>
+ <value>FAX</value>
+ <value>GIF</value>
+ <value>GIF87a</value>
+ <value>GIF89a</value>
+ <value>JPG</value>
+ <value>JPEG</value>
+ <value>IGES</value>
+ <value>PCX</value>
+ <value>PIC</value>
+ <value>PNG</value>
+ <value>PS</value>
+ <value>SGML</value>
+ <value>TBL</value>
+ <value>TEX</value>
+ <value>TIFF</value>
+ <value>WMF</value>
+ <value>WPG</value>
+ <value>linespecific</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="orgname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="orgname">
+ <element name="orgname">
+ <ref name="orgname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="orgname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="orgname.role.attrib"/>
+ </define>
+ <define name="othercredit.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="othercredit">
+ <element name="othercredit">
+ <ref name="othercredit.attlist"/>
+ <oneOrMore>
+ <ref name="person.ident.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="othercredit.attlist">
+ <ref name="common.attrib"/>
+ <ref name="othercredit.role.attrib"/>
+ </define>
+ <define name="pagenums.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="pagenums">
+ <element name="pagenums">
+ <ref name="pagenums.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="pagenums.attlist">
+ <ref name="common.attrib"/>
+ <ref name="pagenums.role.attrib"/>
+ </define>
+ <define name="contrib.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="contrib">
+ <element name="contrib">
+ <ref name="contrib.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="contrib.attlist">
+ <ref name="common.attrib"/>
+ <ref name="contrib.role.attrib"/>
+ </define>
+ <define name="firstname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="firstname">
+ <element name="firstname">
+ <ref name="firstname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="firstname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="firstname.role.attrib"/>
+ </define>
+ <define name="honorific.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="honorific">
+ <element name="honorific">
+ <ref name="honorific.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="honorific.attlist">
+ <ref name="common.attrib"/>
+ <ref name="honorific.role.attrib"/>
+ </define>
+ <define name="lineage.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="lineage">
+ <element name="lineage">
+ <ref name="lineage.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="lineage.attlist">
+ <ref name="common.attrib"/>
+ <ref name="lineage.role.attrib"/>
+ </define>
+ <define name="othername.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="othername">
+ <element name="othername">
+ <ref name="othername.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="othername.attlist">
+ <ref name="common.attrib"/>
+ <ref name="othername.role.attrib"/>
+ </define>
+ <define name="surname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="surname">
+ <element name="surname">
+ <ref name="surname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="surname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="surname.role.attrib"/>
+ </define>
+ <define name="printhistory.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="printhistory">
+ <element name="printhistory">
+ <ref name="printhistory.attlist"/>
+ <oneOrMore>
+ <ref name="para.class"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="printhistory.attlist">
+ <ref name="common.attrib"/>
+ <ref name="printhistory.role.attrib"/>
+ </define>
+ <define name="productname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="productname">
+ <element name="productname">
+ <ref name="productname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="productname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="productname.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>service</value>
+ <value>trade</value>
+ <value>registered</value>
+ <value>copyright</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="productnumber.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="productnumber">
+ <element name="productnumber">
+ <ref name="productnumber.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="productnumber.attlist">
+ <ref name="common.attrib"/>
+ <ref name="productnumber.role.attrib"/>
+ </define>
+ <define name="pubdate.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="pubdate">
+ <element name="pubdate">
+ <ref name="pubdate.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="pubdate.attlist">
+ <ref name="common.attrib"/>
+ <ref name="pubdate.role.attrib"/>
+ </define>
+ <define name="publisher.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="publisher">
+ <element name="publisher">
+ <ref name="publisher.attlist"/>
+ <ref name="publishername"/>
+ <zeroOrMore>
+ <ref name="address"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="publisher.attlist">
+ <ref name="common.attrib"/>
+ <ref name="publisher.role.attrib"/>
+ </define>
+ <define name="publishername.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="publishername">
+ <element name="publishername">
+ <ref name="publishername.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="publishername.attlist">
+ <ref name="common.attrib"/>
+ <ref name="publishername.role.attrib"/>
+ </define>
+ <define name="pubsnumber.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="pubsnumber">
+ <element name="pubsnumber">
+ <ref name="pubsnumber.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="pubsnumber.attlist">
+ <ref name="common.attrib"/>
+ <ref name="pubsnumber.role.attrib"/>
+ </define>
+ <define name="releaseinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="releaseinfo">
+ <element name="releaseinfo">
+ <ref name="releaseinfo.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="releaseinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="releaseinfo.role.attrib"/>
+ </define>
+ <define name="revhistory.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="revhistory">
+ <element name="revhistory">
+ <ref name="revhistory.attlist"/>
+ <oneOrMore>
+ <ref name="revision"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="revhistory.attlist">
+ <ref name="common.attrib"/>
+ <ref name="revhistory.role.attrib"/>
+ </define>
+ <define name="revision.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="revision">
+ <element name="revision">
+ <ref name="revision.attlist"/>
+ <ref name="revnumber"/>
+ <ref name="date"/>
+ <zeroOrMore>
+ <ref name="authorinitials"/>
+ </zeroOrMore>
+ <optional>
+ <choice>
+ <ref name="revremark"/>
+ <ref name="revdescription"/>
+ </choice>
+ </optional>
+ </element>
+ </define>
+ <define name="revision.attlist">
+ <ref name="common.attrib"/>
+ <ref name="revision.role.attrib"/>
+ </define>
+ <define name="revnumber.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="revnumber">
+ <element name="revnumber">
+ <ref name="revnumber.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="revnumber.attlist">
+ <ref name="common.attrib"/>
+ <ref name="revnumber.role.attrib"/>
+ </define>
+ <define name="revremark.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="revremark">
+ <element name="revremark">
+ <ref name="revremark.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="revremark.attlist">
+ <ref name="common.attrib"/>
+ <ref name="revremark.role.attrib"/>
+ </define>
+ <define name="revdescription.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="revdescription">
+ <element name="revdescription">
+ <ref name="revdescription.attlist"/>
+ <oneOrMore>
+ <ref name="revdescription.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="revdescription.attlist">
+ <ref name="common.attrib"/>
+ <ref name="revdescription.role.attrib"/>
+ </define>
+ <define name="seriesvolnums.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="seriesvolnums">
+ <element name="seriesvolnums">
+ <ref name="seriesvolnums.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="seriesvolnums.attlist">
+ <ref name="common.attrib"/>
+ <ref name="seriesvolnums.role.attrib"/>
+ </define>
+ <define name="volumenum.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="volumenum">
+ <element name="volumenum">
+ <ref name="volumenum.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="volumenum.attlist">
+ <ref name="common.attrib"/>
+ <ref name="volumenum.role.attrib"/>
+ </define>
+ <define name="accel.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="accel">
+ <element name="accel">
+ <ref name="accel.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="accel.attlist">
+ <ref name="common.attrib"/>
+ <ref name="accel.role.attrib"/>
+ </define>
+ <define name="action.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="action">
+ <element name="action">
+ <ref name="action.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="action.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="action.role.attrib"/>
+ </define>
+ <define name="application.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="application">
+ <element name="application">
+ <ref name="application.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="application.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="application.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>hardware</value>
+ <value>software</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="classname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="classname">
+ <element name="classname">
+ <ref name="classname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="classname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="classname.role.attrib"/>
+ </define>
+ <define name="co.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="co">
+ <element name="co">
+ <ref name="co.attlist"/>
+ </element>
+ </define>
+ <define name="co.attlist">
+ <ref name="label.attrib"/>
+ <ref name="linkends.attrib"/>
+ <ref name="idreq.common.attrib"/>
+ <ref name="co.role.attrib"/>
+ </define>
+ <define name="command.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="command">
+ <element name="command">
+ <ref name="command.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="command.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="command.role.attrib"/>
+ </define>
+ <define name="computeroutput.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="computeroutput">
+ <element name="computeroutput">
+ <ref name="computeroutput.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="computeroutput.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="computeroutput.role.attrib"/>
+ </define>
+ <define name="database.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="database">
+ <element name="database">
+ <ref name="database.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="database.attlist">
+ <ref name="common.attrib"/>
+ <ref name="database.role.attrib"/>
+ <ref name="moreinfo.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>name</value>
+ <value>table</value>
+ <value>field</value>
+ <value>key1</value>
+ <value>key2</value>
+ <value>record</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="email.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="email">
+ <element name="email">
+ <ref name="email.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="email.attlist">
+ <ref name="common.attrib"/>
+ <ref name="email.role.attrib"/>
+ </define>
+ <define name="envar.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="envar">
+ <element name="envar">
+ <ref name="envar.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="envar.attlist">
+ <ref name="common.attrib"/>
+ <ref name="envar.role.attrib"/>
+ </define>
+ <define name="errorcode.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="errorcode">
+ <element name="errorcode">
+ <ref name="errorcode.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="errorcode.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="errorcode.role.attrib"/>
+ </define>
+ <define name="errorname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="errorname">
+ <element name="errorname">
+ <ref name="errorname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="errorname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="errorname.role.attrib"/>
+ </define>
+ <define name="errortype.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="errortype">
+ <element name="errortype">
+ <ref name="errortype.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="errortype.attlist">
+ <ref name="common.attrib"/>
+ <ref name="errortype.role.attrib"/>
+ </define>
+ <define name="filename.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="filename">
+ <element name="filename">
+ <ref name="filename.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="filename.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="filename.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>headerfile</value>
+ <value>devicefile</value>
+ <value>libraryfile</value>
+ <value>directory</value>
+ <value>symlink</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="path">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="function.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="function">
+ <element name="function">
+ <ref name="function.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="function.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="function.role.attrib"/>
+ </define>
+ <define name="guibutton.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="guibutton">
+ <element name="guibutton">
+ <ref name="guibutton.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="guibutton.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="guibutton.role.attrib"/>
+ </define>
+ <define name="guiicon.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="guiicon">
+ <element name="guiicon">
+ <ref name="guiicon.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="guiicon.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="guiicon.role.attrib"/>
+ </define>
+ <define name="guilabel.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="guilabel">
+ <element name="guilabel">
+ <ref name="guilabel.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="guilabel.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="guilabel.role.attrib"/>
+ </define>
+ <define name="guimenu.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="guimenu">
+ <element name="guimenu">
+ <ref name="guimenu.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="guimenu.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="guimenu.role.attrib"/>
+ </define>
+ <define name="guimenuitem.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="guimenuitem">
+ <element name="guimenuitem">
+ <ref name="guimenuitem.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="guimenuitem.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="guimenuitem.role.attrib"/>
+ </define>
+ <define name="guisubmenu.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="guisubmenu">
+ <element name="guisubmenu">
+ <ref name="guisubmenu.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="guisubmenu.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="guisubmenu.role.attrib"/>
+ </define>
+ <define name="hardware.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="hardware">
+ <element name="hardware">
+ <ref name="hardware.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="hardware.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="hardware.role.attrib"/>
+ </define>
+ <define name="interface.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="interface">
+ <element name="interface">
+ <ref name="interface.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="accel"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="interface.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="interface.role.attrib"/>
+ </define>
+ <define name="keycap.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="keycap">
+ <element name="keycap">
+ <ref name="keycap.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="keycap.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="keycap.role.attrib"/>
+ </define>
+ <define name="keycode.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="keycode">
+ <element name="keycode">
+ <ref name="keycode.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="keycode.attlist">
+ <ref name="common.attrib"/>
+ <ref name="keycode.role.attrib"/>
+ </define>
+ <define name="keycombo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="keycombo">
+ <element name="keycombo">
+ <ref name="keycombo.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="keycap"/>
+ <ref name="keycombo"/>
+ <ref name="keysym"/>
+ <ref name="mousebutton"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="keycombo.attlist">
+ <ref name="keyaction.attrib"/>
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="keycombo.role.attrib"/>
+ </define>
+ <define name="keysysm.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="keysym">
+ <element name="keysym">
+ <ref name="keysym.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="keysym.attlist">
+ <ref name="common.attrib"/>
+ <ref name="keysysm.role.attrib"/>
+ </define>
+ <define name="lineannotation.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="lineannotation">
+ <element name="lineannotation">
+ <ref name="lineannotation.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="lineannotation.attlist">
+ <ref name="common.attrib"/>
+ <ref name="lineannotation.role.attrib"/>
+ </define>
+ <define name="literal.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="literal">
+ <element name="literal">
+ <ref name="literal.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="literal.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="literal.role.attrib"/>
+ </define>
+ <define name="constant.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="constant">
+ <element name="constant">
+ <ref name="constant.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="constant.attlist">
+ <ref name="common.attrib"/>
+ <ref name="constant.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <value>limit</value>
+ </attribute>
+ </optional>
+ </define>
+ <define name="varname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="varname">
+ <element name="varname">
+ <ref name="varname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="varname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="varname.role.attrib"/>
+ </define>
+ <define name="markup.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="markup">
+ <element name="markup">
+ <ref name="markup.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="markup.attlist">
+ <ref name="common.attrib"/>
+ <ref name="markup.role.attrib"/>
+ </define>
+ <define name="medialabel.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="medialabel">
+ <element name="medialabel">
+ <ref name="medialabel.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="medialabel.attlist">
+ <ref name="common.attrib"/>
+ <ref name="medialabel.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>cartridge</value>
+ <value>cdrom</value>
+ <value>disk</value>
+ <value>tape</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="menuchoice.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="menuchoice">
+ <element name="menuchoice">
+ <ref name="menuchoice.attlist"/>
+ <optional>
+ <ref name="shortcut"/>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <ref name="guibutton"/>
+ <ref name="guiicon"/>
+ <ref name="guilabel"/>
+ <ref name="guimenu"/>
+ <ref name="guimenuitem"/>
+ <ref name="guisubmenu"/>
+ <ref name="interface"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="menuchoice.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="menuchoice.role.attrib"/>
+ </define>
+ <define name="shortcut.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="shortcut">
+ <element name="shortcut">
+ <ref name="shortcut.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="keycap"/>
+ <ref name="keycombo"/>
+ <ref name="keysym"/>
+ <ref name="mousebutton"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="shortcut.attlist">
+ <ref name="keyaction.attrib"/>
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="shortcut.role.attrib"/>
+ </define>
+ <define name="mousebutton.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="mousebutton">
+ <element name="mousebutton">
+ <ref name="mousebutton.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="mousebutton.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="mousebutton.role.attrib"/>
+ </define>
+ <define name="msgtext.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="msgtext">
+ <element name="msgtext">
+ <ref name="msgtext.attlist"/>
+ <oneOrMore>
+ <ref name="component.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="msgtext.attlist">
+ <ref name="common.attrib"/>
+ <ref name="msgtext.role.attrib"/>
+ </define>
+ <define name="option.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="option">
+ <element name="option">
+ <ref name="option.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="option.attlist">
+ <ref name="common.attrib"/>
+ <ref name="option.role.attrib"/>
+ </define>
+ <define name="optional.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="optional">
+ <element name="optional">
+ <ref name="optional.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="optional.attlist">
+ <ref name="common.attrib"/>
+ <ref name="optional.role.attrib"/>
+ </define>
+ <define name="parameter.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="parameter">
+ <element name="parameter">
+ <ref name="parameter.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="parameter.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="parameter.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>command</value>
+ <value>function</value>
+ <value>option</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="prompt.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="prompt">
+ <element name="prompt">
+ <ref name="prompt.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="prompt.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="prompt.role.attrib"/>
+ </define>
+ <define name="property.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="property">
+ <element name="property">
+ <ref name="property.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="property.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="property.role.attrib"/>
+ </define>
+ <define name="replaceable.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="replaceable">
+ <element name="replaceable">
+ <ref name="replaceable.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="link.char.class"/>
+ <ref name="optional"/>
+ <ref name="base.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="replaceable.attlist">
+ <ref name="common.attrib"/>
+ <ref name="replaceable.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>command</value>
+ <value>function</value>
+ <value>option</value>
+ <value>parameter</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="returnvalue.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="returnvalue">
+ <element name="returnvalue">
+ <ref name="returnvalue.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="returnvalue.attlist">
+ <ref name="common.attrib"/>
+ <ref name="returnvalue.role.attrib"/>
+ </define>
+ <define name="sgmltag.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sgmltag">
+ <element name="sgmltag">
+ <ref name="sgmltag.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="sgmltag.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sgmltag.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>attribute</value>
+ <value>attvalue</value>
+ <value>element</value>
+ <value>endtag</value>
+ <value>emptytag</value>
+ <value>genentity</value>
+ <value>numcharref</value>
+ <value>paramentity</value>
+ <value>pi</value>
+ <value>xmlpi</value>
+ <value>starttag</value>
+ <value>sgmlcomment</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="structfield.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="structfield">
+ <element name="structfield">
+ <ref name="structfield.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="structfield.attlist">
+ <ref name="common.attrib"/>
+ <ref name="structfield.role.attrib"/>
+ </define>
+ <define name="structname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="structname">
+ <element name="structname">
+ <ref name="structname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="structname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="structname.role.attrib"/>
+ </define>
+ <define name="symbol.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="symbol">
+ <element name="symbol">
+ <ref name="symbol.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="symbol.attlist">
+ <ref name="common.attrib"/>
+ <ref name="symbol.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <value>limit</value>
+ </attribute>
+ </optional>
+ </define>
+ <define name="systemitem.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="systemitem">
+ <element name="systemitem">
+ <ref name="systemitem.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="smallcptr.char.mix"/>
+ <ref name="acronym"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="systemitem.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="systemitem.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>constant</value>
+ <value>groupname</value>
+ <value>library</value>
+ <value>macro</value>
+ <value>osname</value>
+ <value>resource</value>
+ <value>systemname</value>
+ <value>username</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="token.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="token">
+ <element name="token">
+ <ref name="token.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="token.attlist">
+ <ref name="common.attrib"/>
+ <ref name="token.role.attrib"/>
+ </define>
+ <define name="type.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="type">
+ <element name="type">
+ <ref name="type.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="smallcptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="type.attlist">
+ <ref name="common.attrib"/>
+ <ref name="type.role.attrib"/>
+ </define>
+ <define name="userinput.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="userinput">
+ <element name="userinput">
+ <ref name="userinput.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="cptr.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="userinput.attlist">
+ <ref name="moreinfo.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="userinput.role.attrib"/>
+ </define>
+ <define name="abbrev.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="abbrev">
+ <element name="abbrev">
+ <ref name="abbrev.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="abbrev.attlist">
+ <ref name="common.attrib"/>
+ <ref name="abbrev.role.attrib"/>
+ </define>
+ <define name="acronym.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="acronym">
+ <element name="acronym">
+ <ref name="acronym.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="acronym.attlist">
+ <ref name="common.attrib"/>
+ <ref name="acronym.role.attrib"/>
+ </define>
+ <define name="citation.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="citation">
+ <element name="citation">
+ <ref name="citation.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="citation.attlist">
+ <ref name="common.attrib"/>
+ <ref name="citation.role.attrib"/>
+ </define>
+ <define name="citerefentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="citerefentry">
+ <element name="citerefentry">
+ <ref name="citerefentry.attlist"/>
+ <ref name="refentrytitle"/>
+ <optional>
+ <ref name="manvolnum"/>
+ </optional>
+ </element>
+ </define>
+ <define name="citerefentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="citerefentry.role.attrib"/>
+ </define>
+ <define name="refentrytitle.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refentrytitle">
+ <element name="refentrytitle">
+ <ref name="refentrytitle.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="refentrytitle.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refentrytitle.role.attrib"/>
+ </define>
+ <define name="namvolnum.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="manvolnum">
+ <element name="manvolnum">
+ <ref name="manvolnum.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="manvolnum.attlist">
+ <ref name="common.attrib"/>
+ <ref name="namvolnum.role.attrib"/>
+ </define>
+ <define name="citetitle.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="citetitle">
+ <element name="citetitle">
+ <ref name="citetitle.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="citetitle.attlist">
+ <ref name="common.attrib"/>
+ <ref name="citetitle.role.attrib"/>
+ <optional>
+ <attribute name="pubwork">
+ <choice>
+ <value>article</value>
+ <value>book</value>
+ <value>chapter</value>
+ <value>part</value>
+ <value>refentry</value>
+ <value>section</value>
+ <value>journal</value>
+ <value>series</value>
+ <value>set</value>
+ <value>manuscript</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="emphasis.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="emphasis">
+ <element name="emphasis">
+ <ref name="emphasis.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="emphasis.attlist">
+ <ref name="common.attrib"/>
+ <ref name="emphasis.role.attrib"/>
+ </define>
+ <define name="firstterm.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="firstterm">
+ <element name="firstterm">
+ <ref name="firstterm.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="firstterm.attlist">
+ <ref name="common.attrib"/>
+ <ref name="firstterm.role.attrib"/>
+ <ref name="linkend.attrib"/>
+ </define>
+ <define name="foreignphrase.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="foreignphrase">
+ <element name="foreignphrase">
+ <ref name="foreignphrase.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="foreignphrase.attlist">
+ <ref name="common.attrib"/>
+ <ref name="foreignphrase.role.attrib"/>
+ </define>
+ <define name="glossterm.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossterm">
+ <element name="glossterm">
+ <ref name="glossterm.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="glossterm.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glossterm.role.attrib"/>
+ <ref name="linkend.attrib"/>
+ <optional>
+ <attribute name="baseform">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="phrase.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="phrase">
+ <element name="phrase">
+ <ref name="phrase.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="phrase.attlist">
+ <ref name="common.attrib"/>
+ <ref name="phrase.role.attrib"/>
+ </define>
+ <define name="quote.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="quote">
+ <element name="quote">
+ <ref name="quote.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="quote.attlist">
+ <ref name="common.attrib"/>
+ <ref name="quote.role.attrib"/>
+ </define>
+ <define name="ssscript.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="subscriptContentModel">
+ <zeroOrMore>
+ <choice>
+ <ref name="link.char.class"/>
+ <ref name="emphasis"/>
+ <ref name="replaceable"/>
+ <ref name="symbol"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="base.char.class"/>
+ <ref name="other.char.class"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="subscript">
+ <element name="subscript">
+ <ref name="subscript.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="subscriptContentModel"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="subscript.attlist">
+ <ref name="common.attrib"/>
+ <ref name="ssscript.role.attrib"/>
+ </define>
+ <define name="superscript">
+ <element name="superscript">
+ <ref name="superscript.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="subscriptContentModel"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="superscript.attlist">
+ <ref name="common.attrib"/>
+ <ref name="ssscript.role.attrib"/>
+ </define>
+ <define name="trademark.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="trademark">
+ <element name="trademark">
+ <ref name="trademark.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="link.char.class"/>
+ <ref name="tech.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="inlinegraphic"/>
+ <ref name="inlinemediaobject"/>
+ <ref name="emphasis"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="trademark.attlist">
+ <ref name="common.attrib"/>
+ <ref name="trademark.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>service</value>
+ <value>trade</value>
+ <value>registered</value>
+ <value>copyright</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="wordasword.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="wordasword">
+ <element name="wordasword">
+ <ref name="wordasword.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="word.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="wordasword.attlist">
+ <ref name="common.attrib"/>
+ <ref name="wordasword.role.attrib"/>
+ </define>
+ <define name="link.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="link">
+ <element name="link">
+ <ref name="link.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="link.attlist">
+ <ref name="linkendreq.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="link.role.attrib"/>
+ <optional>
+ <attribute name="endterm">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="olink.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="olink">
+ <element name="olink">
+ <ref name="olink.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="olink.attlist">
+ <ref name="common.attrib"/>
+ <ref name="olink.role.attrib"/>
+ <optional>
+ <attribute name="linkmode">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="localinfo">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="ulink.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="ulink">
+ <element name="ulink">
+ <ref name="ulink.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="ulink.attlist">
+ <ref name="common.attrib"/>
+ <ref name="ulink.role.attrib"/>
+ <attribute name="url">
+ <data type="string"/>
+ </attribute>
+ <optional>
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="footnoteref.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="footnoteref">
+ <element name="footnoteref">
+ <ref name="footnoteref.attlist"/>
+ </element>
+ </define>
+ <define name="footnoteref.attlist">
+ <ref name="linkendreq.attrib"/>
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="footnoteref.role.attrib"/>
+ </define>
+ <define name="xref.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="xref">
+ <element name="xref">
+ <ref name="xref.attlist"/>
+ </element>
+ </define>
+ <define name="xref.attlist">
+ <ref name="linkendreq.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="xref.role.attrib"/>
+ <optional>
+ <attribute name="endterm">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="anchor.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="anchor">
+ <element name="anchor">
+ <ref name="anchor.attlist"/>
+ </element>
+ </define>
+ <define name="anchor.attlist">
+ <ref name="idreq.attrib"/>
+ <ref name="pagenum.attrib"/>
+ <ref name="remap.attrib"/>
+ <ref name="xreflabel.attrib"/>
+ <ref name="revisionflag.attrib"/>
+ <ref name="effectivity.attrib"/>
+ <ref name="anchor.role.attrib"/>
+ </define>
+ <define name="beginpage.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="beginpage">
+ <element name="beginpage">
+ <ref name="beginpage.attlist"/>
+ </element>
+ </define>
+ <define name="beginpage.attlist">
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="beginpage.role.attrib"/>
+ </define>
+ <define name="indexterm.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="indexterm">
+ <element name="indexterm">
+ <ref name="indexterm.attlist"/>
+ <optional>
+ <ref name="primary"/>
+ </optional>
+ <optional>
+ <choice>
+ <group>
+ <ref name="secondary"/>
+ <optional>
+ <choice>
+ <group>
+ <ref name="tertiary"/>
+ <optional>
+ <choice>
+ <ref name="see"/>
+ <oneOrMore>
+ <ref name="seealso"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </group>
+ <ref name="see"/>
+ <oneOrMore>
+ <ref name="seealso"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </group>
+ <ref name="see"/>
+ <oneOrMore>
+ <ref name="seealso"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </element>
+ </define>
+ <define name="indexterm.attlist">
+ <ref name="common.attrib"/>
+ <ref name="indexterm.role.attrib"/>
+ <ref name="pagenum.attrib"/>
+ <optional>
+ <attribute name="scope">
+ <choice>
+ <value>all</value>
+ <value>global</value>
+ <value>local</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="significance">
+ <choice>
+ <value>preferred</value>
+ <value>normal</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>singular</value>
+ <value>startofrange</value>
+ <value>endofrange</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="startref">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="zone">
+ <data type="IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="primsecter.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="primary">
+ <element name="primary">
+ <ref name="primary.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="primary.attlist">
+ <ref name="common.attrib"/>
+ <ref name="primsecter.role.attrib"/>
+ <optional>
+ <attribute name="sortas">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="secondary">
+ <element name="secondary">
+ <ref name="secondary.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="secondary.attlist">
+ <ref name="common.attrib"/>
+ <ref name="primsecter.role.attrib"/>
+ <optional>
+ <attribute name="sortas">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tertiary">
+ <element name="tertiary">
+ <ref name="tertiary.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="tertiary.attlist">
+ <ref name="common.attrib"/>
+ <ref name="primsecter.role.attrib"/>
+ <optional>
+ <attribute name="sortas">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="seeseealso.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="see">
+ <element name="see">
+ <ref name="see.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="see.attlist">
+ <ref name="common.attrib"/>
+ <ref name="seeseealso.role.attrib"/>
+ </define>
+ <define name="seealso">
+ <element name="seealso">
+ <ref name="seealso.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="seealso.attlist">
+ <ref name="common.attrib"/>
+ <ref name="seeseealso.role.attrib"/>
+ </define>
+ <define name="appendix.class">
+ <ref name="appendix"/>
+ </define>
+ <define name="article.class">
+ <ref name="article"/>
+ </define>
+ <define name="book.class">
+ <ref name="book"/>
+ </define>
+ <define name="chapter.class">
+ <ref name="chapter"/>
+ </define>
+ <define name="index.class">
+ <choice>
+ <ref name="index"/>
+ <ref name="setindex"/>
+ </choice>
+ </define>
+ <define name="refentry.class">
+ <ref name="refentry"/>
+ </define>
+ <define name="nav.class">
+ <choice>
+ <ref name="toc"/>
+ <ref name="lot"/>
+ <ref name="index"/>
+ <ref name="glossary"/>
+ <ref name="bibliography"/>
+ </choice>
+ </define>
+ <define name="divcomponent.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="compound.class"/>
+ <ref name="genobj.class"/>
+ <ref name="descobj.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="refcomponent.mix">
+ <choice>
+ <ref name="list.class"/>
+ <ref name="admon.class"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="formal.class"/>
+ <ref name="compound.class"/>
+ <ref name="genobj.class"/>
+ <ref name="descobj.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="indexdivcomponent.mix">
+ <choice>
+ <ref name="itemizedlist"/>
+ <ref name="orderedlist"/>
+ <ref name="variablelist"/>
+ <ref name="simplelist"/>
+ <ref name="linespecific.class"/>
+ <ref name="synop.class"/>
+ <ref name="para.class"/>
+ <ref name="informal.class"/>
+ <ref name="anchor"/>
+ <ref name="remark"/>
+ <ref name="link.char.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="refname.char.mix">
+ <ref name="tech.char.class"/>
+ </define>
+ <define name="partcontent.mix">
+ <choice>
+ <ref name="appendix.class"/>
+ <ref name="chapter.class"/>
+ <ref name="nav.class"/>
+ <ref name="article.class"/>
+ <ref name="preface"/>
+ <ref name="refentry.class"/>
+ <ref name="reference"/>
+ </choice>
+ </define>
+ <define name="refinline.char.mix">
+ <choice>
+ <ref name="xref.char.class"/>
+ <ref name="gen.char.class"/>
+ <ref name="link.char.class"/>
+ <ref name="tech.char.class"/>
+ <ref name="base.char.class"/>
+ <ref name="docinfo.char.class"/>
+ <ref name="other.char.class"/>
+ <ref name="ndxterm.class"/>
+ <ref name="beginpage"/>
+ </choice>
+ </define>
+ <define name="refclass.char.mix">
+ <ref name="application"/>
+ </define>
+ <define name="div.title.content">
+ <ref name="title"/>
+ <optional>
+ <ref name="subtitle"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ </define>
+ <define name="bookcomponent.title.content">
+ <ref name="title"/>
+ <optional>
+ <ref name="subtitle"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ </define>
+ <define name="sect.title.content">
+ <ref name="title"/>
+ <optional>
+ <ref name="subtitle"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ </define>
+ <define name="refsect.title.content">
+ <ref name="title"/>
+ <optional>
+ <ref name="subtitle"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ </define>
+ <define name="bookcomponent.content">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="sect1"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="sect1"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="section"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ </define>
+ <define name="set.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="set">
+ <element name="set">
+ <ref name="set.attlist"/>
+ <optional>
+ <ref name="div.title.content"/>
+ </optional>
+ <optional>
+ <ref name="setinfo"/>
+ </optional>
+ <optional>
+ <ref name="toc"/>
+ </optional>
+ <oneOrMore>
+ <ref name="book.class"/>
+ </oneOrMore>
+ <optional>
+ <ref name="setindex"/>
+ </optional>
+ </element>
+ </define>
+ <define name="set.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="set.role.attrib"/>
+ <optional>
+ <attribute name="fpi">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="setinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="setinfo">
+ <element name="setinfo">
+ <ref name="setinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="setinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="setinfo.role.attrib"/>
+ <optional>
+ <attribute name="contents">
+ <data type="IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="book.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="book">
+ <element name="book">
+ <ref name="book.attlist"/>
+ <optional>
+ <ref name="div.title.content"/>
+ </optional>
+ <optional>
+ <ref name="bookinfo"/>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="dedication"/>
+ <ref name="toc"/>
+ <ref name="lot"/>
+ <ref name="glossary"/>
+ <ref name="bibliography"/>
+ <ref name="preface"/>
+ <ref name="chapter.class"/>
+ <ref name="reference"/>
+ <ref name="part"/>
+ <ref name="article.class"/>
+ <ref name="appendix.class"/>
+ <ref name="index.class"/>
+ <ref name="colophon"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="book.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="book.role.attrib"/>
+ <optional>
+ <attribute name="fpi">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="bookinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bookinfo">
+ <element name="bookinfo">
+ <ref name="bookinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="bookinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="bookinfo.role.attrib"/>
+ <optional>
+ <attribute name="contents">
+ <data type="IDREFS"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="dedication.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="dedication">
+ <element name="dedication">
+ <ref name="dedication.attlist"/>
+ <optional>
+ <ref name="sect.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="legalnotice.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="dedication.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="dedication.role.attrib"/>
+ </define>
+ <define name="colophon.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="colophon">
+ <element name="colophon">
+ <ref name="colophon.attlist"/>
+ <optional>
+ <ref name="sect.title.content"/>
+ </optional>
+ <oneOrMore>
+ <ref name="textobject.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="colophon.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="colophon.role.attrib"/>
+ </define>
+ <define name="toc.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="toc">
+ <element name="toc">
+ <ref name="toc.attlist"/>
+ <optional>
+ <ref name="bookcomponent.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="tocfront"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="tocpart"/>
+ <ref name="tocchap"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="tocback"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="toc.attlist">
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="toc.role.attrib"/>
+ </define>
+ <define name="tocfront.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="tocfront">
+ <element name="tocfront">
+ <ref name="tocfront.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="tocfront.attlist">
+ <ref name="label.attrib"/>
+ <ref name="linkend.attrib"/>
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="tocfront.role.attrib"/>
+ </define>
+ <define name="tocentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="tocentry">
+ <element name="tocentry">
+ <ref name="tocentry.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="tocentry.attlist">
+ <ref name="linkend.attrib"/>
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="tocentry.role.attrib"/>
+ </define>
+ <define name="tocpart.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="tocpart">
+ <element name="tocpart">
+ <ref name="tocpart.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="tocchap"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="tocpart.attlist">
+ <ref name="common.attrib"/>
+ <ref name="tocpart.role.attrib"/>
+ </define>
+ <define name="tocchap.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="tocchap">
+ <element name="tocchap">
+ <ref name="tocchap.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel1"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="tocchap.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="tocchap.role.attrib"/>
+ </define>
+ <define name="toclevel1.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="toclevel1">
+ <element name="toclevel1">
+ <ref name="toclevel1.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel2"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="toclevel1.attlist">
+ <ref name="common.attrib"/>
+ <ref name="toclevel1.role.attrib"/>
+ </define>
+ <define name="toclevel2.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="toclevel2">
+ <element name="toclevel2">
+ <ref name="toclevel2.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel3"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="toclevel2.attlist">
+ <ref name="common.attrib"/>
+ <ref name="toclevel2.role.attrib"/>
+ </define>
+ <define name="toclevel3.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="toclevel3">
+ <element name="toclevel3">
+ <ref name="toclevel3.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel4"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="toclevel3.attlist">
+ <ref name="common.attrib"/>
+ <ref name="toclevel3.role.attrib"/>
+ </define>
+ <define name="toclevel4.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="toclevel4">
+ <element name="toclevel4">
+ <ref name="toclevel4.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="toclevel5"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="toclevel4.attlist">
+ <ref name="common.attrib"/>
+ <ref name="toclevel4.role.attrib"/>
+ </define>
+ <define name="toclevel5.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="toclevel5">
+ <element name="toclevel5">
+ <ref name="toclevel5.attlist"/>
+ <oneOrMore>
+ <ref name="tocentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="toclevel5.attlist">
+ <ref name="common.attrib"/>
+ <ref name="toclevel5.role.attrib"/>
+ </define>
+ <define name="tocback.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="tocback">
+ <element name="tocback">
+ <ref name="tocback.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="tocback.attlist">
+ <ref name="label.attrib"/>
+ <ref name="linkend.attrib"/>
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="tocback.role.attrib"/>
+ </define>
+ <define name="lot.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="lot">
+ <element name="lot">
+ <ref name="lot.attlist"/>
+ <optional>
+ <ref name="bookcomponent.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="lotentry"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="lot.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="lot.role.attrib"/>
+ </define>
+ <define name="lotentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="lotentry">
+ <element name="lotentry">
+ <ref name="lotentry.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="para.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="lotentry.attlist">
+ <ref name="pagenum.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="linkend.attrib"/>
+ <ref name="lotentry.role.attrib"/>
+ <optional>
+ <attribute name="srccredit">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="appendix.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="appendix">
+ <element name="appendix">
+ <ref name="appendix.attlist"/>
+ <optional>
+ <ref name="appendixinfo"/>
+ </optional>
+ <ref name="bookcomponent.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="tocchap"/>
+ </optional>
+ <ref name="bookcomponent.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="appendix.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="appendix.role.attrib"/>
+ </define>
+ <define name="chapter.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="chapter">
+ <element name="chapter">
+ <ref name="chapter.attlist"/>
+ <optional>
+ <ref name="chapterinfo"/>
+ </optional>
+ <ref name="bookcomponent.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="tocchap"/>
+ </optional>
+ <ref name="bookcomponent.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="chapter.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="chapter.role.attrib"/>
+ </define>
+ <define name="part.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="part">
+ <element name="part">
+ <ref name="part.attlist"/>
+ <optional>
+ <ref name="partinfo"/>
+ </optional>
+ <ref name="bookcomponent.title.content"/>
+ <optional>
+ <ref name="partintro"/>
+ </optional>
+ <oneOrMore>
+ <ref name="partcontent.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="part.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="part.role.attrib"/>
+ </define>
+ <define name="preface.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="preface">
+ <element name="preface">
+ <ref name="preface.attlist"/>
+ <optional>
+ <ref name="prefaceinfo"/>
+ </optional>
+ <ref name="bookcomponent.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="tocchap"/>
+ </optional>
+ <ref name="bookcomponent.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="preface.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="preface.role.attrib"/>
+ </define>
+ <define name="reference.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="reference">
+ <element name="reference">
+ <ref name="reference.attlist"/>
+ <optional>
+ <ref name="referenceinfo"/>
+ </optional>
+ <ref name="bookcomponent.title.content"/>
+ <optional>
+ <ref name="partintro"/>
+ </optional>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="reference.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="reference.role.attrib"/>
+ </define>
+ <define name="partintro.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="partintro">
+ <element name="partintro">
+ <ref name="partintro.attlist"/>
+ <optional>
+ <ref name="div.title.content"/>
+ </optional>
+ <ref name="bookcomponent.content"/>
+ </element>
+ </define>
+ <define name="partintro.attlist">
+ <ref name="label.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="partintro.role.attrib"/>
+ </define>
+ <define name="appendixinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="appendixinfo">
+ <element name="appendixinfo">
+ <ref name="appendixinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="appendixinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="appendixinfo.role.attrib"/>
+ </define>
+ <define name="bibliographyinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bibliographyinfo">
+ <element name="bibliographyinfo">
+ <ref name="bibliographyinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="bibliographyinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="bibliographyinfo.role.attrib"/>
+ </define>
+ <define name="chapterinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="chapterinfo">
+ <element name="chapterinfo">
+ <ref name="chapterinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="chapterinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="chapterinfo.role.attrib"/>
+ </define>
+ <define name="glossaryinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossaryinfo">
+ <element name="glossaryinfo">
+ <ref name="glossaryinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="glossaryinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="glossaryinfo.role.attrib"/>
+ </define>
+ <define name="indexinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="indexinfo">
+ <element name="indexinfo">
+ <ref name="indexinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="indexinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="indexinfo.role.attrib"/>
+ </define>
+ <define name="setindexinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="setindexinfo">
+ <element name="setindexinfo">
+ <ref name="setindexinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="setindexinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="setindexinfo.role.attrib"/>
+ </define>
+ <define name="partinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="partinfo">
+ <element name="partinfo">
+ <ref name="partinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="partinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="partinfo.role.attrib"/>
+ </define>
+ <define name="prefaceinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="prefaceinfo">
+ <element name="prefaceinfo">
+ <ref name="prefaceinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="prefaceinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="prefaceinfo.role.attrib"/>
+ </define>
+ <define name="refentryinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refentryinfo">
+ <element name="refentryinfo">
+ <ref name="refentryinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="refentryinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refentryinfo.role.attrib"/>
+ </define>
+ <define name="refsect1info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsect1info">
+ <element name="refsect1info">
+ <ref name="refsect1info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="refsect1info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refsect1info.role.attrib"/>
+ </define>
+ <define name="refsect2info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsect2info">
+ <element name="refsect2info">
+ <ref name="refsect2info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="refsect2info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refsect2info.role.attrib"/>
+ </define>
+ <define name="refsect3info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsect3info">
+ <element name="refsect3info">
+ <ref name="refsect3info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="refsect3info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refsect3info.role.attrib"/>
+ </define>
+ <define name="refsynopsisdivinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsynopsisdivinfo">
+ <element name="refsynopsisdivinfo">
+ <ref name="refsynopsisdivinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="refsynopsisdivinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refsynopsisdivinfo.role.attrib"/>
+ </define>
+ <define name="referenceinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="referenceinfo">
+ <element name="referenceinfo">
+ <ref name="referenceinfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="referenceinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="referenceinfo.role.attrib"/>
+ </define>
+ <define name="sect1info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect1info">
+ <element name="sect1info">
+ <ref name="sect1info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="sect1info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sect1info.role.attrib"/>
+ </define>
+ <define name="sect2info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect2info">
+ <element name="sect2info">
+ <ref name="sect2info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="sect2info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sect2info.role.attrib"/>
+ </define>
+ <define name="sect3info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect3info">
+ <element name="sect3info">
+ <ref name="sect3info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="sect3info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sect3info.role.attrib"/>
+ </define>
+ <define name="sect4info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect4info">
+ <element name="sect4info">
+ <ref name="sect4info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="sect4info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sect4info.role.attrib"/>
+ </define>
+ <define name="sect5info.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect5info">
+ <element name="sect5info">
+ <ref name="sect5info.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="sect5info.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sect5info.role.attrib"/>
+ </define>
+ <define name="section.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="section">
+ <element name="section">
+ <ref name="section.attlist"/>
+ <optional>
+ <ref name="sectioninfo"/>
+ </optional>
+ <ref name="sect.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="section"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="section"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="section.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="section.role.attrib"/>
+ </define>
+ <define name="sectioninfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sectioninfo">
+ <element name="sectioninfo">
+ <ref name="sectioninfo.attlist"/>
+ <ref name="infoContentModel"/>
+ </element>
+ </define>
+ <define name="sectioninfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="sectioninfo.role.attrib"/>
+ </define>
+ <define name="sect1.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect1">
+ <element name="sect1">
+ <ref name="sect1.attlist"/>
+ <optional>
+ <ref name="sect1info"/>
+ </optional>
+ <ref name="sect.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect2"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect2"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="sect1.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="sect1.role.attrib"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <value>sect2</value>
+ <value>sect3</value>
+ <value>sect4</value>
+ <value>sect5</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect2.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect2">
+ <element name="sect2">
+ <ref name="sect2.attlist"/>
+ <optional>
+ <ref name="sect2info"/>
+ </optional>
+ <ref name="sect.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect3"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect3"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="sect2.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="sect2.role.attrib"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <value>sect1</value>
+ <value>sect3</value>
+ <value>sect4</value>
+ <value>sect5</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect3.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect3">
+ <element name="sect3">
+ <ref name="sect3.attlist"/>
+ <optional>
+ <ref name="sect3info"/>
+ </optional>
+ <ref name="sect.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect4"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect4"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="sect3.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="sect3.role.attrib"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <value>sect1</value>
+ <value>sect2</value>
+ <value>sect4</value>
+ <value>sect5</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect4.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect4">
+ <element name="sect4">
+ <ref name="sect4.attlist"/>
+ <optional>
+ <ref name="sect4info"/>
+ </optional>
+ <ref name="sect.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="sect5"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="sect5"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="sect4.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="sect4.role.attrib"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <value>sect1</value>
+ <value>sect2</value>
+ <value>sect3</value>
+ <value>sect5</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="sect5.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="sect5">
+ <element name="sect5">
+ <ref name="sect5.attlist"/>
+ <optional>
+ <ref name="sect5info"/>
+ </optional>
+ <ref name="sect.title.content"/>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="refentry.class"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="simplesect"/>
+ </zeroOrMore>
+ </choice>
+ </group>
+ <choice>
+ <oneOrMore>
+ <ref name="refentry.class"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="simplesect"/>
+ </oneOrMore>
+ </choice>
+ </choice>
+ <zeroOrMore>
+ <ref name="nav.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="sect5.attlist">
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="sect5.role.attrib"/>
+ <optional>
+ <attribute name="renderas">
+ <choice>
+ <value>sect1</value>
+ <value>sect2</value>
+ <value>sect3</value>
+ <value>sect4</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="simplesect.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="simplesect">
+ <element name="simplesect">
+ <ref name="simplesect.attlist"/>
+ <ref name="sect.title.content"/>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="simplesect.attlist">
+ <ref name="common.attrib"/>
+ <ref name="simplesect.role.attrib"/>
+ </define>
+ <define name="bibliography.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bibliography">
+ <element name="bibliography">
+ <ref name="bibliography.attlist"/>
+ <zeroOrMore>
+ <ref name="bibliographyinfo"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="bibliodiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="biblioentry"/>
+ <ref name="bibliomixed"/>
+ </choice>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="bibliography.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="bibliography.role.attrib"/>
+ </define>
+ <define name="bibliodiv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="bibliodiv">
+ <element name="bibliodiv">
+ <ref name="bibliodiv.attlist"/>
+ <optional>
+ <ref name="sect.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="biblioentry"/>
+ <ref name="bibliomixed"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="bibliodiv.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="bibliodiv.role.attrib"/>
+ </define>
+ <define name="glossary.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossary">
+ <element name="glossary">
+ <ref name="glossary.attlist"/>
+ <zeroOrMore>
+ <ref name="glossaryinfo"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="glossdiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="glossentry"/>
+ </oneOrMore>
+ </choice>
+ <optional>
+ <ref name="bibliography"/>
+ </optional>
+ </element>
+ </define>
+ <define name="glossary.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="glossary.role.attrib"/>
+ </define>
+ <define name="glossdiv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="glossdiv">
+ <element name="glossdiv">
+ <ref name="glossdiv.attlist"/>
+ <optional>
+ <ref name="sect.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="glossentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="glossdiv.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="glossdiv.role.attrib"/>
+ </define>
+ <define name="indexes.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="index">
+ <element name="index">
+ <ref name="index.attlist"/>
+ <zeroOrMore>
+ <ref name="indexinfo"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="indexdiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="indexentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="index.attlist">
+ <ref name="common.attrib"/>
+ <ref name="indexes.role.attrib"/>
+ </define>
+ <define name="setindex">
+ <element name="setindex">
+ <ref name="setindex.attlist"/>
+ <zeroOrMore>
+ <ref name="setindexinfo"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="bookcomponent.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="component.mix"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="indexdiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="indexentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="setindex.attlist">
+ <ref name="common.attrib"/>
+ <ref name="indexes.role.attrib"/>
+ </define>
+ <define name="indexdiv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="indexdiv">
+ <element name="indexdiv">
+ <ref name="indexdiv.attlist"/>
+ <optional>
+ <ref name="sect.title.content"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="indexdivcomponent.mix"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="indexentry"/>
+ </zeroOrMore>
+ <ref name="segmentedlist"/>
+ </element>
+ </define>
+ <define name="indexdiv.attlist">
+ <ref name="common.attrib"/>
+ <ref name="indexdiv.role.attrib"/>
+ </define>
+ <define name="indexentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="indexentry">
+ <element name="indexentry">
+ <ref name="indexentry.attlist"/>
+ <ref name="primaryie"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="seeie"/>
+ <ref name="seealsoie"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="secondaryie"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="seeie"/>
+ <ref name="seealsoie"/>
+ <ref name="tertiaryie"/>
+ </choice>
+ </zeroOrMore>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="indexentry.attlist">
+ <ref name="common.attrib"/>
+ <ref name="indexentry.role.attrib"/>
+ </define>
+ <define name="primsecterie.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="primaryie">
+ <element name="primaryie">
+ <ref name="primaryie.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="primaryie.attlist">
+ <ref name="linkends.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="primsecterie.role.attrib"/>
+ </define>
+ <define name="secondaryie">
+ <element name="secondaryie">
+ <ref name="secondaryie.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="secondaryie.attlist">
+ <ref name="linkends.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="primsecterie.role.attrib"/>
+ </define>
+ <define name="tertiaryie">
+ <element name="tertiaryie">
+ <ref name="tertiaryie.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="tertiaryie.attlist">
+ <ref name="linkends.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="primsecterie.role.attrib"/>
+ </define>
+ <define name="seeie.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="seeie">
+ <element name="seeie">
+ <ref name="seeie.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="seeie.attlist">
+ <ref name="linkend.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="seeie.role.attrib"/>
+ </define>
+ <define name="seealsoie.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="seealsoie">
+ <element name="seealsoie">
+ <ref name="seealsoie.attlist"/>
+ <zeroOrMore>
+ <ref name="ndxterm.char.mix"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="seealsoie.attlist">
+ <ref name="linkends.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="seealsoie.role.attrib"/>
+ </define>
+ <define name="refentry.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refentry">
+ <element name="refentry">
+ <ref name="refentry.attlist"/>
+ <zeroOrMore>
+ <ref name="ndxterm.class"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="refentryinfo"/>
+ </optional>
+ <optional>
+ <ref name="refmeta"/>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="remark"/>
+ <ref name="link.char.class"/>
+ </choice>
+ </zeroOrMore>
+ <ref name="refnamediv"/>
+ <optional>
+ <ref name="refsynopsisdiv"/>
+ </optional>
+ <oneOrMore>
+ <ref name="refsect1"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="refentry.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="refentry.role.attrib"/>
+ </define>
+ <define name="refmeta.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refmeta">
+ <element name="refmeta">
+ <ref name="refmeta.attlist"/>
+ <zeroOrMore>
+ <ref name="ndxterm.class"/>
+ </zeroOrMore>
+ <ref name="refentrytitle"/>
+ <optional>
+ <ref name="manvolnum"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="refmiscinfo"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="ndxterm.class"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="refmeta.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refmeta.role.attrib"/>
+ </define>
+ <define name="refmiscinfo.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refmiscinfo">
+ <element name="refmiscinfo">
+ <ref name="refmiscinfo.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="docinfo.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="refmiscinfo.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refmiscinfo.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="refnamediv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refnamediv">
+ <element name="refnamediv">
+ <ref name="refnamediv.attlist"/>
+ <optional>
+ <ref name="refdescriptor"/>
+ </optional>
+ <oneOrMore>
+ <ref name="refname"/>
+ </oneOrMore>
+ <ref name="refpurpose"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="remark"/>
+ <ref name="link.char.class"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="refnamediv.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refnamediv.role.attrib"/>
+ </define>
+ <define name="refdescriptor.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refdescriptor">
+ <element name="refdescriptor">
+ <ref name="refdescriptor.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refname.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="refdescriptor.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refdescriptor.role.attrib"/>
+ </define>
+ <define name="refname.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refname">
+ <element name="refname">
+ <ref name="refname.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refname.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="refname.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refname.role.attrib"/>
+ </define>
+ <define name="refpurpose.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refpurpose">
+ <element name="refpurpose">
+ <ref name="refpurpose.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refinline.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="refpurpose.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refpurpose.role.attrib"/>
+ </define>
+ <define name="refclass.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refclass">
+ <element name="refclass">
+ <ref name="refclass.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <ref name="refclass.char.mix"/>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="refclass.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refclass.role.attrib"/>
+ </define>
+ <define name="refsynopsisdiv.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsynopsisdiv">
+ <element name="refsynopsisdiv">
+ <ref name="refsynopsisdiv.attlist"/>
+ <optional>
+ <ref name="refsynopsisdivinfo"/>
+ </optional>
+ <optional>
+ <ref name="refsect.title.content"/>
+ </optional>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="refcomponent.mix"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="refsect2"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="refsect2"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="refsynopsisdiv.attlist">
+ <ref name="common.attrib"/>
+ <ref name="refsynopsisdiv.role.attrib"/>
+ </define>
+ <define name="refsect1.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsect1">
+ <element name="refsect1">
+ <ref name="refsect1.attlist"/>
+ <optional>
+ <ref name="refsect1info"/>
+ </optional>
+ <ref name="refsect.title.content"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="refcomponent.mix"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="refsect2"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="refsect2"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="refsect1.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="refsect1.role.attrib"/>
+ </define>
+ <define name="refsect2.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsect2">
+ <element name="refsect2">
+ <ref name="refsect2.attlist"/>
+ <optional>
+ <ref name="refsect2info"/>
+ </optional>
+ <ref name="refsect.title.content"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="refcomponent.mix"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="refsect3"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="refsect3"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="refsect2.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="refsect2.role.attrib"/>
+ </define>
+ <define name="refsect3.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="refsect3">
+ <element name="refsect3">
+ <ref name="refsect3.attlist"/>
+ <optional>
+ <ref name="refsect3info"/>
+ </optional>
+ <ref name="refsect.title.content"/>
+ <oneOrMore>
+ <ref name="refcomponent.mix"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="refsect3.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="refsect3.role.attrib"/>
+ </define>
+ <define name="article.role.attrib">
+ <ref name="role.attrib"/>
+ </define>
+ <define name="article">
+ <element name="article">
+ <ref name="article.attlist"/>
+ <optional>
+ <ref name="div.title.content"/>
+ </optional>
+ <optional>
+ <ref name="articleinfo"/>
+ </optional>
+ <optional>
+ <ref name="tocchap"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="lot"/>
+ </zeroOrMore>
+ <ref name="bookcomponent.content"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="nav.class"/>
+ <ref name="appendix.class"/>
+ <ref name="ackno"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="article.attlist">
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="article.role.attrib"/>
+ <optional>
+ <attribute name="class">
+ <choice>
+ <value>journalarticle</value>
+ <value>productsheet</value>
+ <value>whitepaper</value>
+ <value>techreport</value>
+ <value>specification</value>
+ <value>faq</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="parentbook">
+ <data type="IDREF"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="table.att">
+ <empty/>
+ </define>
+ <define name="tgroup.att">
+ <empty/>
+ </define>
+ <define name="colspec.att">
+ <empty/>
+ </define>
+ <define name="thead.att">
+ <empty/>
+ </define>
+ <define name="tbody.att">
+ <empty/>
+ </define>
+ <define name="row.att">
+ <empty/>
+ </define>
+ <define name="entry.att">
+ <empty/>
+ </define>
+ <define name="table">
+ <element name="table">
+ <ref name="table.attlist"/>
+ <ref name="formalobject.title.content"/>
+ <optional>
+ <ref name="ndxterm.class"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="mediaobject"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="tgroup"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="table.attlist">
+ <ref name="table.att"/>
+ <optional>
+ <attribute name="frame">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ <value>topbot</value>
+ <value>all</value>
+ <value>sides</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="informaltable">
+ <element name="informaltable">
+ <ref name="informaltable.attlist"/>
+ <choice>
+ <oneOrMore>
+ <ref name="graphic"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="mediaobject"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="tgroup"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ <define name="informaltable.attlist">
+ <ref name="table.att"/>
+ <optional>
+ <attribute name="frame">
+ <choice>
+ <value>top</value>
+ <value>bottom</value>
+ <value>topbot</value>
+ <value>all</value>
+ <value>sides</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tgroup">
+ <element name="tgroup">
+ <ref name="tgroup.attlist"/>
+ <zeroOrMore>
+ <ref name="colspec"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="thead"/>
+ </optional>
+ <ref name="tbody"/>
+ </element>
+ </define>
+ <define name="tgroup.attlist">
+ <ref name="tgroup.att"/>
+ <attribute name="cols">
+ <data type="integer"/>
+ </attribute>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="colspec">
+ <element name="colspec">
+ <ref name="colspec.attlist"/>
+ </element>
+ </define>
+ <define name="colspec.attlist">
+ <ref name="colspec.att"/>
+ <optional>
+ <attribute name="colnum">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colname">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colwidth">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charoff">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="thead">
+ <element name="thead">
+ <ref name="thead.attlist"/>
+ <oneOrMore>
+ <ref name="row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="thead.attlist">
+ <ref name="thead.att"/>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="tbody">
+ <element name="tbody">
+ <ref name="tbody.attlist"/>
+ <oneOrMore>
+ <ref name="row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="tbody.attlist">
+ <ref name="tbody.att"/>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="row">
+ <element name="row">
+ <ref name="row.attlist"/>
+ <oneOrMore>
+ <ref name="entry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="row.attlist">
+ <ref name="row.att"/>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="entry">
+ <element name="entry">
+ <ref name="entry.attlist"/>
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <ref name="para.char.mix"/>
+ <ref name="tabentry.mix"/>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ </element>
+ </define>
+ <define name="entry.attlist">
+ <ref name="entry.att"/>
+ <optional>
+ <attribute name="colname">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="namest">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="nameend">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="morerows">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowsep">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="align">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ <value>center</value>
+ <value>justify</value>
+ <value>char</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char">
+ <data type="string"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charoff">
+ <data type="NMTOKEN"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="valign">
+ <choice>
+ <value>top</value>
+ <value>middle</value>
+ <value>bottom</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+</grammar>
diff --git a/test/relaxng/docbook_0.xml b/test/relaxng/docbook_0.xml
new file mode 100644
index 0000000..ede051d
--- /dev/null
+++ b/test/relaxng/docbook_0.xml
@@ -0,0 +1,4448 @@
+<?xml version="1.0"?>
+<!DOCTYPE article [
+<!ENTITY version "1.0.53">
+<!ENTITY mdash "--">
+<!ENTITY hellip "...">
+<!ENTITY copy "&#x00A9;"> <!-- COPYRIGHT SIGN -->
+ <!-- replace version above with actual application version number-->
+ <!-- Template Version: 1.0.1 (do not remove this line) -->
+
+
+
+<!ENTITY APPLET-TEMPLATE-1x-SHELL SYSTEM
+"templates/applet_template_1-applet.sgml.cdata">
+<!ENTITY APPLET-TEMPLATE-1x SYSTEM
+"templates/applet_template_1.sgml.cdata">
+]>
+
+<!-- Version: 1.0.1 -->
+
+<article id="index">
+ <articleinfo>
+
+ <authorgroup>
+
+ <author>
+ <firstname>David</firstname>
+ <surname>Mason</surname>
+ <affiliation>
+ <orgname>Red Hat, Inc.</orgname>
+ <address>
+ <email>dcm@redhat.com</email>
+ </address>
+ </affiliation>
+ </author>
+
+ <author>
+ <firstname>Daniel</firstname>
+ <surname>Mueth</surname>
+ <affiliation>
+ <address>
+ <email>d-mueth@uchicago.edu</email>
+ </address>
+ </affiliation>
+ </author>
+
+ <author>
+ <firstname>Alexander</firstname>
+ <surname>Kirillov</surname>
+ <affiliation>
+ <address>
+ <email>kirillov@math.sunysb.edu</email>
+ </address>
+ </affiliation>
+ </author>
+
+ </authorgroup>
+
+ <releaseinfo>
+ This is a pre-release!
+ </releaseinfo>
+
+ <revhistory>
+ <revision>
+ <revnumber>
+ 0.99
+ </revnumber>
+ <date>
+ 04.10.2000
+ </date>
+ </revision>
+ </revhistory>
+
+ <copyright>
+ <year>2000</year>
+ <holder>Red Hat, Inc., Daniel Mueth, and Alexander Kirillov</holder>
+ </copyright>
+
+ <legalnotice>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the <citetitle>GNU Free Documentation
+ License</citetitle>, Version 1.1 or any later version published
+ by the Free Software Foundation with no Invariant Sections, no
+ Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy
+ of the <citetitle>GNU Free Documentation License</citetitle> from
+ the Free Software Foundation by visiting <ulink type="http"
+ url="http://www.fsf.org">their Web site</ulink> or by writing to:
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ </para>
+ <para>
+ Many of the names used by companies to distinguish their products and
+ services are claimed as trademarks. Where those names appear in any
+ GNOME documentation, and those trademarks are made aware to the members
+ of the GNOME Documentation Project, the names have been printed in caps
+ or initial caps.
+ </para>
+ </legalnotice>
+
+ <title>The GNOME Handbook of Writing Software Documentation</title>
+
+ </articleinfo>
+
+ <!-- ################# Introduction ############### -->
+
+ <sect1 id="intro">
+ <title>Introduction</title>
+
+ <!-- ####### Introduction | The GNOME Documentation Project ####### -->
+
+ <sect2 id="gdp">
+ <title>The GNOME Documentation Project</title>
+
+ <sect3 id="goals">
+ <title>Goals</title>
+ <para>
+ The GNOME Documentation Project (GDP) aims to provide GNOME
+ and GNOME applications with a complete, intuitive, and clear
+ documentation system. At the center of the GDP is the
+ <application>GNOME Help Browser</application>, which
+ presents a unified interface to GNOME-specific documentation
+ as well as other Linux documentation such as man pages and
+ texinfo documents. The GNOME Help System provides a
+ comprehensive view of documentation on a machine by
+ dynamically assembling the documentation of GNOME
+ applications and components which are installed. The GDP is
+ responsible for writing numerous GNOME-related documents,
+ both for developers and for users. Developer documentation
+ includes <ulink url="http://developer.gnome.org/doc/API/"
+ type="http">APIs for the GNOME libraries</ulink>, <ulink
+ url="http://developer.gnome.org/doc/whitepapers/"
+ type="http"><citetitle>GNOME White
+ Papers</citetitle></ulink>, GNOME developer <ulink
+ url="http://developer.gnome.org/doc/tutorials/"
+ type="http">tutorials</ulink>, the <ulink
+ url="http://developer.gnome.org/doc/FAQ/"
+ type="http"><citetitle>GNOME Developer
+ FAQ</citetitle></ulink>, the <ulink
+ url="http://developer.gnome.org" type="http">GNOME
+ Developer's Website</ulink>, and <citetitle>GNOME
+ Handbook</citetitle>'s, such as the one you are reading.
+ User documentation include the <ulink
+ url="http://www.gnome.org/learn/"
+ type="http"><citetitle>GNOME User's
+ Guide</citetitle></ulink>, the <ulink
+ url="http://www.gnome.org/learn/"
+ type="http"><citetitle>GNOME FAQ</citetitle></ulink>, and
+ GNOME application documentation. Most GNOME applications
+ have their own manual in addition to context sensitive help.
+ </para>
+ </sect3>
+
+ <sect3 id="joining">
+ <title>Joining the GDP</title>
+ <para>
+ Documenting GNOME and all the numerous GNOME applications is
+ a very large project. The GDP is always looking for people
+ to help write, update, and edit documentation. If you are
+ interested in joining the GDP team, you should join the
+ <ulink url="http://mail.gnome.org/mailman/listinfo/gnome-doc-list/">
+ <citetitle>gnome-doc-list mailing list</citetitle> </ulink>.
+ Read <xref linkend="gettingstarted" />, for help selecting a
+ project to work on. Feel free to introduce yourself on the
+ gnome-doc-list mailing list and indicate which project you
+ intend to work on, or else ask for suggestions of important
+ documents which need work done. You may also want to join the
+ #docs IRC channel on irc.gnome.org to meet other GDP members
+ and discuss any questions you may have. For a list of GDP
+ projects and members, see the
+ <ulink url="http://developer.gnome.org/projects/gdp">
+ <citetitle>GDP Website</citetitle></ulink>.
+ </para>
+ </sect3>
+
+ <sect3 id="collaborating">
+ <title>Collaborating with the GDP</title>
+ <para>
+ GNOME developers, packagers, and translators may not be
+ writing GNOME documentation but will want to understand how
+ the GNOME documentation system works and will need to
+ collaborate with GDP members. This document should help to
+ outline the structure of how the GNOME documentation system
+ works. Developers who do not write the documentation for
+ their applications are encouraged to find a GDP member to
+ write the documentation. This is best done by sending an
+ email to the <ulink
+ url="http://mail.gnome.org/mailman/listinfo/gnome-doc-list/">
+ <citetitle>gnome-doc-list mailing list</citetitle> </ulink>
+ describing the application, where it can be downloaded from,
+ and that the developer(s) would like a GDP member to write
+ documentation for the application. The #docs IRC channel on
+ irc.gnome.org is another option for contacting GDP members.
+ </para>
+ </sect3>
+ </sect2>
+
+ <!-- ####### Introduction | Notation and Conventions ####### -->
+
+ <sect2 id="notation">
+ <title>Notation and Conventions</title>
+ <para>
+ This Handbook uses the following notation:
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>
+ <filename class="directory">/usr/bin</filename>
+ </entry>
+ <entry>
+ Directory
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <filename>foo.sgml</filename>
+ </entry>
+ <entry>
+ Filename
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <command>command</command>
+ </entry>
+ <entry>
+ Command or text that would be typed.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <command><replaceable>replaceable</replaceable></command>
+ </entry>
+ <entry>
+ "Variable" text that can be replaced.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>Program or Doc Code</literal>
+ </entry>
+ <entry>Program or document code</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </sect2>
+
+ <!-- ####### Introduction | About This Handbook ####### -->
+
+ <sect2 id="about">
+ <title>About This Handbook</title>
+ <para>
+ This Handbook is a guide for both writing documentation for
+ GNOME components and applications and for properly binding and
+ packaging documentation into GNOME applications.
+ </para>
+ <para>
+ This Handbook, like all GNOME documentation, was written in
+ DocBook(SGML) and is available in several formats including
+ SGML, HTML, PostScript, and PDF. For the latest version, see
+ <ulink
+ url="http://developer.gnome.org/projects/gdp/handbook.html">
+ <citetitle>Getting The GNOME Handbook of Writing Software
+ Documentation</citetitle> </ulink>. Alternately, one may
+ download it anonymously from GNOME CVS under <filename
+ class="directory">gnome-docu/gdp</filename>.
+ </para>
+ </sect2>
+ </sect1>
+
+<!-- ################# Getting Started ############### -->
+
+ <sect1 id="gettingstarted">
+ <title>Getting Started Writing GNOME Documentation</title>
+
+<!--####### Getting Started | Selecting A Document ####### -->
+
+ <sect2 id="selecting">
+ <title>Selecting A Document</title>
+
+ <sect3 id="know">
+ <title>Document Something You Know</title>
+ <para>
+ The most frequently asked question of new contributors who
+ join the GDP is "which document should I start
+ with?". Because most people involved are volunteers, we do
+ not <emphasis>assign</emphasis> projects and applications to
+ write documents for. The first step is all yours - you must
+ decide what about GNOME interests you most and find out if
+ it has complete documents or not.
+ </para>
+ <para>
+ It is also important to spend some time with GNOME to make
+ sure you are familiar enough with it to be
+ <emphasis>authoritative</emphasis> in your writing. The
+ best way to do this is to just sit down and play with GNOME
+ as much as possible before starting to write.
+ </para>
+ <para>
+ The easiest way to get started is to improve existing
+ documentation. If you notice some inaccuracies or omissions
+ in the documentation, or you think that you can explain the
+ material more clearly, just send your suggestions to the
+ author of the original documentation or to the GNOME
+ documentation project at <email>docs@gnome.org</email>.
+ </para>
+ </sect3>
+
+ <sect3 id="doctable">
+ <title>The GNOME Documentation Status Table</title>
+ <para>
+ The <citetitle>GDP Documentation Status Table</citetitle>
+ (<citetitle>DocTable</citetitle>) (<ulink
+ url="http://www.gnome.org/gdp/doctable/"
+ type="http">http://www.gnome.org/gdp/doctable/</ulink>) is a
+ web page which tracks the status of all the various
+ documentation components of GNOME. These components include
+ application documentation, internal GNOME component
+ documentation, user documentation, and developer
+ documentation. For each documentation item, it tracks the
+ current status of the documentation, who is working on the
+ particular document, where the documentation can be found,
+ and provides a forum for the discussion of each item.
+ </para>
+ <para>
+ You should use the <citetitle>DocTable</citetitle> to help
+ you select a documentation item which needs work done. Once
+ you have selected an item to work on, please register
+ yourself as an author so that other authors do not duplicate
+ your work and may contact you to help or offer suggestions.
+ Also be sure to keep the status icons up-to-date so that
+ the GDP team can easily identify which items need additional
+ help. The <citetitle>DocTable</citetitle> also allows
+ people to make announcements and suggestions and to discuss
+ issues in the comments section.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ Note that the information in the
+ <citetitle>DocTable</citetitle> may not always be up-to-date
+ or accurate. When you assign yourself to documenting an
+ application, make sure you find out the latest status of
+ documentation by contacting the application author.
+ </para>
+ </note>
+ </sect3>
+ </sect2>
+
+<!-- ####### Getting Started | Installing And Using DocBook ####### -->
+
+ <sect2 id="docbook">
+ <title>Installing and Using DocBook</title>
+ <para>
+ All documentation for the GNOME project is written in SGML
+ using the DocBook DTD. There are many advantages to using
+ this for documentation, not least of which is the single
+ source nature of SGML. To contribute to the GDP you should
+ learn to use DocBook.
+ </para>
+ <note>
+ <title>NOTE</title>
+ <para>
+ To get started writing for the GDP you do not need to rush
+ out and learn DocBook - if you feel it is too much to handle
+ for now, you can submit plain ASCII text to the <ulink
+ url="http://mail.gnome.org/mailman/listinfo/gnome-doc-list/">
+ <citetitle>gnome-doc-list mailing list</citetitle>
+ </ulink>and a volunteer will mark it up for you. Seeing your
+ document marked up will also be a great way for you to start
+ learning DocBook.
+ </para>
+ </note>
+ <sect3 id="installingdocbook">
+ <title>Installing DocBook</title>
+ <para>
+ Download and install the following <ulink
+ url="ftp://sourceware.cygnus.com:/pub/docbook-tools/"
+ type="ftp">DocBook Tools packages</ulink>: jade, docbook,
+ jadetex, sgml-common, and stylesheets. (RPM users should note
+ that jade is platform dependent (eg. i386), while the other packages
+ are in the <filename class="directory">noarch</filename>
+ directory.) You can find more
+ information on DocBook Tools <ulink url="
+ http://sourceware.cygnus.com/docbook-tools/"
+ type="http">here</ulink>.
+ </para>
+ <para>
+ If you are an <application>Emacs</application> user you may
+ want to grab the psgml package as well. This is a major mode
+ for editing sgml files in <application>Emacs</application>.
+ </para>
+ </sect3>
+
+ <sect3 id="gdpstylesheets">
+ <title>GDP Stylesheets</title>
+ <para>
+ The GDP uses its own DocBook stylesheets. To use the GDP
+ stylesheets, you should download the file
+ <filename>gdp-both.dsl</filename> from the <filename
+ class="directory">gnome-docu/gdp/dsssl</filename> module in
+ CVS (or from <ulink
+ url="http://developer.gnome.org/projects/gdp/stylesheets.html">
+ GDP Custom DSSSL Stylesheet</ulink>)and copy it
+<!-- into <filename
+ class="directory">/usr/lib/sgml/stylesheets</filename>. You
+ will need to point DocBook Tools to this stylesheet with the
+ <command><option>-d</option></command> option:
+ <command>db2html -d /usr/lib/sgml/stylesheets/gdp-both.dsl
+ <replaceable>foo.sgml</replaceable></command>. (Creating an
+ alias to include this option and path is convenient.)
+ Alternately, you could overwrite
+ <filename>/usr/lib/sgml/stylesheets/cygnus-both.dsl</filename>
+ with <filename>gdp-both.dsl</filename>.
+-->
+ over the file
+ <filename>/usr/lib/sgml/stylesheets/cygnus-both.dsl</filename>.
+ Alternately, you can download and install the
+ <ulink url="http://people.redhat.com/dcm/software.html"
+ type="http">gnome-doc-tools package</ulink> which will set
+ up the stylesheets as well as the DTD discussed below.
+ </para>
+
+<!-- <note>
+ <para>
+ The current version of the DocBook Tools command
+ <command>db2ps</command> does not have a
+ <command><option>-d</option></command> option. In order to
+ create PostScript output, you must overwrite
+ <filename>/usr/lib/sgml/stylesheets/cygnus-both.dsl</filename>
+ with <filename>gdp-both.dsl</filename>.
+ </para>
+ </note>
+-->
+ </sect3>
+
+ <sect3 id="gdpdtd">
+ <title>GDP DTD (PNG Image Support)</title>
+ <para>
+ Due to some license issues involved with the creation of
+ gifs, the GNOME Documentation Project has decided to use the
+ PNG image format for all images in GNOME documentation. You
+ can read more about the issues involved with gifs at <ulink
+ url="http://www.gnu.org/philosophy/gif.html"
+ type="http">http://www.gnu.org/philosophy/gif.html</ulink>.
+ </para>
+ <para>
+ The current DocBook DTD(3.1) does not include support for
+ embedding PNG images in your documents. Since the GDP uses
+ many screenshots in its documentation, we use our own
+ variation on the DocBook DTD which has PNG image support.
+ We encourage everybody to use this DTD instead of the
+ default DocBook DTD since your source document header and
+ your output document appearance subtly vary between the two
+ DTD's. To install the GDP custom DTD with PNG image support
+ by hand:
+ </para>
+ <itemizedlist mark="opencircle">
+ <listitem>
+ <para>
+ Download <ulink
+ url="http://www.labs.redhat.com/png/png-support.html">the
+ GDP DocBook DTD for PNG support</ulink> and install it
+ where you keep your DTD's. (On Red Hat use <filename
+ class="directory">/usr/lib/sgml/</filename>.) Note that
+ the 3.0 DTD is missing support for the
+ <sgmltag>&lt;legalnotice></sgmltag> tag, so it is
+ recommended that you use version 3.1
+ </para>
+ </listitem>
+ <listitem override="bullet">
+ <para>
+ Add the new DTD to your SGML CATALOG file. The location
+ of your SGML CATALOG file may vary depending upon your
+ distribution. (On Red Hat it is usually in
+ /usr/lib/sgml/CATALOG.) Add the following line to this
+ file:
+ <programlisting>
+PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.0//EN" "png-support-3.0.dtd"
+ </programlisting>
+ If you are using the 3.1 DTD, use:
+ <programlisting>
+PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN" "png-support-3.1.dtd"
+ </programlisting>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Alternately, you can download and install the
+ <ulink url="http://people.redhat.com/dcm/software.html"
+ type="http">gnome-doc-tools package</ulink> which will set
+ up the custom stylesheets and DTD for you.
+ </para>
+ <para>
+ To include PNG files in your documents, you will need to
+ indicate that you are using this special DTD. To do
+ this, use the following headers:
+ </para>
+ <para>
+ Articles:
+ <programlisting>
+<![CDATA[<!DOCTYPE Article PUBLIC "-//GNOME//DTD DocBook PNG Variant
+V1.1//EN"[]>]]>
+ </programlisting>
+ </para>
+ <para>
+ Books:
+ <programlisting>
+<![CDATA[<!DOCTYPE Book PUBLIC "-//GNOME//DTD DocBook PNG Variant
+V1.1//EN"[]>]]>
+ </programlisting>
+ </para>
+
+ </sect3>
+
+ <sect3 id="editors">
+ <title>Editors</title>
+ <para>
+ There are many editors on Linux and UNIX systems available
+ to you. Which editor you use to work on the sgml documents
+ is completely up to you, as long as the editor is able to
+ preserve sgml and produce the source in a format that is
+ readable by everyone.
+ </para>
+ <para>
+ Probably the two most popular editors available are
+ <application>Emacs</application> and
+ <application>vi</application>. These and other editors are
+ used regularly by members of the GDP. Emacs has a major
+ mode, psgml, for editing sgml files which can save you time
+ and effort in adding and closing tags. You will find the
+ psgml package in DocBook Tools, which is the standard set of
+ tools for the GDP. You may find out more about DocBook Tools
+ in <xref linkend="installingdocbook" />.
+ </para>
+ </sect3>
+
+ <sect3 id="make-output">
+ <title>Creating Something Useful with your Docs</title>
+ <para>
+ The tools available in DocBook Tools allow you to convert
+ your sgml document to many different formats including html
+ and Postscript. The primary tool used to do the conversion
+ is an application called <application>Jade</application>. In
+ most cases you will not have to work directly with
+ <application>Jade</application>; Instead, you will use the
+ scripts provided by DocBook Tools.
+ </para>
+ <para>
+ To preview your DocBook document, it is easiest to convert
+ it to <filename>html</filename>. If you have installed the
+ DocBook tools described above, all you have to do is to run
+ the command <prompt>$</prompt><command>db2html
+ mydocument.sgml</command>. If there are no sgml syntax
+ errors, this will create a directory <filename
+ class="directory">mydocument</filename> and place the
+ resulting html files in it. The title page of the document
+ will typically be
+ <filename>mydocument/index.html</filename>. If you have
+ screenshots in your document, you will have to copy these
+ files into the <filename
+ class="directory">mydocument</filename> directory by
+ hand. You can use any web browser to view your document.
+ Note that every time you run <command>db2html</command>, it
+ creates the <filename
+ class="directory">mydocument</filename> directory over, so
+ you will have to copy the screenshots over each time.
+ </para>
+ <para>
+ You can also convert your document to PostScript by running
+ the command <prompt>$</prompt><command>db2ps
+ mydocument.sgml</command>, after which you can print out or
+ view the resulting .ps file.
+ </para>
+ <note>
+ <title>NOTE</title>
+ <para>
+ The html files you get will not look quite the same as the
+ documentation distributed with GNOME unless you have the
+ custom stylesheets installed on your machine. DocBook
+ Tools' default stylesheets will produce a different look
+ to your docs. You can read more about the GDP stylesheets
+ in <xref linkend="gdpstylesheets" />.
+ </para>
+ </note>
+ </sect3>
+
+ <sect3 id="jadeimages">
+ <title>Images in DocBook Tools</title>
+ <para>
+ If your document uses images you will need to take note of a
+ few things that should take place in order for you to make
+ use of those images in your output.
+ </para>
+ <para>
+ The DocBook Tools scripts and applications are smart enough
+ to know that when you are creating html you will be using
+ PNG files and when you are creating Postscript you will be
+ using EPS files (you must use EPS with Postscript).
+ </para>
+ <para>
+ Thus, you should never explicitly
+ include the extension of the image file, since DocBook
+ Tools will automatically insert it for you. For example:
+ </para>
+ <programlisting>
+<![CDATA[
+<figure>
+ <title>My Image</title>
+ <screenshot>
+ <screeninfo>Sample GNOME Display</screeninfo>
+ <graphic format="png" fileref="myfile" srccredit="me">
+ </graphic>
+ </screenshot>
+</figure>
+]]> </programlisting>
+ <para>
+ You will notice in this example that the file
+ <filename>myfile.png</filename> was referred to as simply
+ <filename>myfile</filename>. Now when you run
+ <command>db2html</command> to create an html file, it will
+ automatically look for <filename>myfile.png</filename> in
+ the directory.
+ </para>
+ <para>
+ If you want to create PostScript ouput, you will need to create an
+ EPS version of your image file to be displayed in the
+ PostScript file. There is a simple script available which
+ allows you to change a PNG image into an EPS file
+ easily. You can download this file - img2eps - from <ulink
+ url="http://people.redhat.com/dcm/sgml.html"
+ type="html">http://people.redhat.com/dcm/sgml.html</ulink>
+ (look for the img2eps section). Note that this script is
+ included in the gnome-doc-tools package, so if you are using
+ this package, you should already have
+ <command>img2eps</command> on you system.
+ </para>
+ </sect3>
+
+ <sect3 id="moredocbookinfo">
+ <title>Learning DocBook</title>
+ <para>
+ There are many resources available to help you learn DocBook.
+ The following resources on the web are useful for learning
+ DocBook:
+ </para>
+ <itemizedlist mark="bullet">
+ <listitem>
+ <para>
+ <ulink url="http://www.docbook.org"
+ type="http">http://www.docbook.org</ulink> - Norman
+ Walsh's <citetitle>DocBook: The Definitive
+ Guide</citetitle>. Online O'Reilly book on using
+ DocBook. Contains an excellent element reference. May be
+ too formal for a beginner.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink
+ url="http://www.oswg.org/oswg-nightly/oswg/en_US.ISO_8859-1/articles/DocBook-Intro/docbook-intro/index.html"
+ type="http">A Practical Introduction to DocBook</ulink>
+ - The Open Source Writers Group's introduction to using
+ DocBook. This is an excellent HOW-TO type article on
+ getting started.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink
+ url="http://nis-www.lanl.gov/~rosalia/mydocs/docbook-intro/docbook-intro.html"
+ type="http">Getting Going with DocBook: Notes for
+ Hackers</ulink> - Mark Galassi's introduction to DocBook
+ for hackers. This has to be one of the first
+ introductions to DocBook ever - still as good as it ever
+ was.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink type="http" url="http://www.freebsd.org/tutorials/docproj-primer/">
+ FreeBSD Documentation Project Primer for New
+ Contributors</ulink> - FreeBSD documentation project
+ primer. Chapter 4.2 provides a very good introduction to
+ writing documentation using DocBook. Note that it also
+ describes some custom extensions of DocBook;
+ fortunately, they are clearly marked as such.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Norman Walsh's book is also available in print.
+ </para>
+ <para>
+ The following sections of this document are designed to help
+ documentation authors write correct and consistent DocBook:
+ </para>
+ <itemizedlist mark="bullet">
+ <listitem>
+ <para>
+ <xref linkend="docbookbasics" /> - Descriptions of
+ commonly used DocBook tags.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ You may also discuss specific DocBook questions with GDP
+ members on the #docs IRC channel at irc.gnome.org and on the
+ gnome-doc-list mailing list.
+ </para>
+ </sect3>
+ </sect2>
+
+<!-- ####### Getting Started | GDP Document Examples ####### -->
+<!--
+ <sect2 id="examples">
+ <title>GDP Document Examples</title>
+ <para>
+ Examples of various types of GNOME documents are found in
+ <xref linkend="examples" />. There is also an example GNOME
+ application with documentation called
+ <application>gnome-hello</application> in GNOME cvs.
+ </para>
+ </sect2>
+-->
+<!-- ####### Getting Started | GDP Document Templates ####### -->
+
+ <sect2 id="gdptemplates">
+ <title>GDP Document Templates</title>
+ <para>
+ Templates for various types of GNOME documents are found in
+ <xref linkend="templates" />. They are kept in CVS in
+ gnome-docu/gdp/templates. The easiest source to get them from
+ is probably the <ulink
+ url="http://developer.gnome.org/projects/gdp/templates.html"
+ type="http">GDP
+ Document Templates</ulink> web page, which is typically kept
+ completely up-to-date with CVS and has a basic description of
+ each file from CVS.
+ </para>
+ </sect2>
+
+<!-- ####### Getting Started | Screenshots ####### -->
+
+ <sect2 id="screenshots">
+ <title>Screenshots</title>
+ <para>
+ Most GNOME documents will have screenshots of the particular
+ applet, application, GNOME component, or widget being
+ discussed. As discussed above in <xref linkend="gdpdtd"/> you
+ will need to install the special GDP DocBook DTD which
+ supports PNG images, the format used for all images in GNOME
+ documentation. For the basic DocBook structure used to insert
+ images in a document, see <xref linkend="jadeimages"/> above.
+ </para>
+ <sect3 id="screenshotappearance">
+ <title>Screenshot Appearance</title>
+ <para>
+ For all screenshots of windows that typically have border
+ decorations (e.g. applications and dialogs, but not applets
+ in a <interface>panel</interface>), GDP standards dictate
+ the appearance of the window. (This is to minimize possible
+ confusion to the reader, improve the appearance of GNOME
+ documents, and guarantee the screenshot is readable when
+ printed.) All screenshots should be taken with the SawFish
+ (formerly known as Sawmill) window manager using the
+ MicroGui theme and Helvetica 12pt font. (A different window
+ manager can be used provided the MicroGui theme is available
+ for this window manager and the appearance is identical to
+ that when using the SawFish window manager.) The default
+ GTK+ theme(gtk) and font (Helvetica 12 pt) should be used
+ for all screenshots. If you are unable to provide
+ screenshots in this form, you should create screenshots as
+ you wish them to appear and send them to the
+ <ulink url="http://mail.gnome.org/mailman/listinfo/gnome-doc-list/">
+ <citetitle>gnome-doc-list mailing list</citetitle> </ulink>
+ requesting a GDP member reproduce these screenshots in the
+ correct format and email them to you.
+ </para>
+ </sect3>
+ <sect3 id="screenshottools">
+ <title>Screenshot Tools</title>
+ <para>
+ There are many tools for taking screenshots in
+ GNOME/Linux. Perhaps the most convenient is the
+ <application>Screen-Shooter Applet</application>. Just click
+ on the window icon in the applet and then on the window you
+ would like to take a screenshot of. (Note that
+ at the time of this writing, PNG images taken by
+ screenshooter do not appear properly in
+ <application>Netscape</application> or the
+ <application>GNOME Help Browser</application>. You
+ should save your screenshot as a GIF and
+ then use <command>convert filename.gif
+ filename.png</command>.) For applets
+ in a <interface>Panel</interface>,
+ <application>xv</application> can be used to crop the
+ screenshot to only include the relevant portion of the
+ <interface>Panel</interface>. Note that
+ <application>xv</application> and
+ <application>gimp</application> can both be used for taking
+ screenshots, cropping screenshots, and converting image
+ formats.
+ </para>
+ </sect3>
+ <sect3 id="screenshotfiles">
+ <title>Screenshot Files</title>
+ <para>
+ Screenshots should be kept in the main documentation
+ directory with your SGML file for applets, or should be
+ kept in a directory called "figs" for application and other
+ documentation. After you use <command>db2html</command> to
+ convert your SGML file to HTML (see <xref
+ linkend="make-output"/>), you will need to copy your
+ screenshots (either the individual PNG files for applet
+ documentation, or the whole "figs" directory for other
+ documentation) into the newly created HTML directory. Note
+ that every time you use <command>db2html</command> the HTML
+ directory is erased and rewritten, so do not store your only
+ copy of the screenshots in that directory. If you wish to
+ create PostScript or PDF output, you will need to manually
+ convert the PNG images to EPS as described in <xref
+ linkend="jadeimages"/>, but will not need to copy these
+ images from their default location, as they are included
+ directly into the output(PostScript of PDF) file.
+ </para>
+ </sect3>
+ </sect2>
+
+
+<!-- ####### Getting Started | Application Bugs ####### -->
+
+ <sect2 id="applicationbugs">
+ <title>Application Bugs</title>
+ <para>
+ Documentation authors tend to investigate and test applets and
+ applications more thoroughly than most
+ users. Often documentation authors will discover one or
+ more bugs in the software. These bugs vary from small ones,
+ such as mis-spelled words or missing
+ <interface>About</interface> dialogs in the menu, to large
+ ones which cause the applet to crash. As all users, you
+ should be sure to report these bugs so that application
+ developers know of them and can fix them. The easiest way to
+ submit a bug report is by using the <application>Bug
+ Buddy</application> applet which is part of the gnome-applets
+ package.
+ </para>
+ </sect2>
+
+
+<!-- ####### Getting Started | Using CVS ####### -->
+
+ <sect2 id="cvs">
+ <title>Using CVS</title>
+ <para>
+ CVS (Concurrent Versions System) is a tool that allows
+ multiple developers to concurrently work on a set of
+ documents, keeping track of the modifications made by each
+ person. The files are stored on a server and each developer
+ checks files out, modifies them, and then checks in their
+ modified version of the files. Many GNOME programs and
+ documents are stored in CVS. The GNOME CVS server allows
+ users to anonymously check out CVS files. Most GDP members
+ will need to use anonymous CVS to download the most up-to-date
+ version of documentation or programs. Modified documents will
+ typically be emailed to the the application developer. Core
+ GDP members may also be granted login CVS privileges so they
+ may commit modified files directly to CVS.
+ </para>
+
+ <sect3 id="anonymouscvs">
+ <title>Anonymous CVS</title>
+ <para>
+ To anonymously check out documents from CVS, you must first
+ log in. From the bash shell, you should set your CVSROOT
+ shell variable with <command> export
+ CVSROOT=':pserver:anonymous@anoncvs.gnome.org:/cvs/gnome'</command>
+ and then login with <command>cvs login</command>(there is no
+ password, just hit return). As an example, we will use the
+ "gnome-docu/gdp" module which contains this and several
+ other documents. To check these documents out for the first
+ time, type <command>cvs -z3 checkout
+ gnome-docu/gdp</command>. After you have this document
+ checked out and you would like to download any updates on
+ the CVS server, use <command>cvs -z3 update -Pd</command>.
+ </para>
+ </sect3>
+
+ <sect3 id="logincvs">
+ <title>Login CVS</title> <para> If you have been given a
+ login for the GNOME CVS server, you may commit your file
+ modifications to CVS. Be sure to read the following section
+ on CVS etiquette before making any commits to CVS. To log in
+ to the CVS server as user
+ <command><replaceable>username</replaceable></command> with a
+ password, you must first set your CVSROOT shell variable with
+ <command> export
+ CVSROOT=':pserver:<replaceable>username</replaceable>@cvs.gnome.org:/cvs/gnome'</command>.
+ Log in with <command>cvs login</command> and enter your
+ password. You may check out and update modules as described
+ above for anonymous CVS access. As a login CVS user, you may
+ also check modified versions of a file into the CVS server.
+ To check
+ <command><replaceable>filename</replaceable></command> into
+ the CVS server, type <command>cvs -z3 commit
+ <replaceable>filename</replaceable></command>. You will be
+ given a vi editor window to type in a brief log entry,
+ summarizing your changes. The default editor can be changed
+ using the <varname>EDITOR</varname> environment variable or
+ with the <command><option>-e</option></command> option. You
+ may also check in any modifications to files in the working
+ directory and subdirectories using <command>cvs -z3
+ commit</command>. To
+ add a new file to the CVS server, use <command>cvs -z3 add
+ <replaceable>filename</replaceable></command>, followed by the
+ commit command.
+ </para>
+ </sect3>
+
+ <sect3 id="cvsetiquette">
+ <title>CVS Etiquette</title>
+ <para>
+ Because files in CVS are typically used and modified by
+ multiple developers and documentation authors, users should
+ exercise a few simple practices out of courtesy towards the
+ other CVS users and the project leader. First, you should
+ not make CVS commits to a package without first discussing
+ your plans with the project leader. This way, the project
+ leader knows who is modifying the files and generally, what
+ sort of changes/development is being done. Also, whenever a
+ CVS user commits a file to CVS, they should make an entry in
+ the CVS log and in the <filename>ChangeLog</filename> so
+ that other users know who is making modifications and what
+ is being modified. When modifying files created by others,
+ you should follow the indentation scheme used by the initial
+ author.
+ </para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+<!-- ################# The GNOME Documentation System###############
+-->
+
+ <sect1 id="gnomedocsystem">
+ <title>The GNOME Documentation System</title>
+
+<!-- ####### The GNOME Documentation System | The GNOME Help Browser
+####### -->
+
+ <sect2 id="gnomehelpbrowser">
+ <title>The GNOME Help Browser</title>
+ <para>
+ At the core of the GNOME help system is the <application>GNOME
+ Help Browser</application>. The <application>Help
+ Browser</application> provides a unified interface to several
+ distinct documentation systems on Linux/Unix systems: man
+ pages, texinfo pages, Linux Documentation Project(LDP)
+ documents, GNOME application documentation, and other GNOME
+ documents.
+ </para>
+ <para>
+ The <application>GNOME Help Browser</application> works by
+ searching standard directories for documents which are to be
+ presented. Thus, the documentation that appears in the GHB is
+ specific to each computer and will typically only represent
+ software that is installed on the computer.
+ </para>
+ </sect2>
+
+<!-- ####### The GNOME Documentation System | The GNOME Help Browser
+####### -->
+
+ <sect2 id="gnomehelpbrowser2">
+ <title>The GNOME Help Browser (GNOME-2.0)</title> <para> In
+ GNOME 2.0, the <application>GNOME Help Browser</application>
+ will be replaced by <application>Nautilus</application>.
+ Nautilus will be the file manager/graphical shell for GNOME 2.0
+ and will also implement a more sophisticated help system than
+ that used by the <application>GNOME Help Browser</application>
+ used in GNOME 1.0. It will read and display DocBook files
+ directly, avoiding the need for duplicating documents in both
+ DocBook and HTML formats. Its display engine for DocBook will
+ be much faster than running <application>jade</application> to
+ convert to HTML for rendering. Because it uses the original
+ DocBook source for documentation, it will be possible to do more
+ sophisticated searching using the meta information included in
+ the documents. And since Nautilus is a virtual file system
+ layer which is Internet-capable, it will be able to find and
+ display documents which are on the web as well as those on the
+ local file system. For more information on
+ <application>Nautilus</application>, visit the #nautilus IRC
+ channel on irc.gnome.org. </para>
+ </sect2>
+
+<!-- ####### The GNOME Documentation System | GNOME On-The-Fly
+Documentation Generation ####### -->
+
+ <sect2 id="gnomehelponthefly">
+ <title>Dynamic Document Synthesis(GNOME-2.0)</title>
+ <para>
+ GNOME uses the documentation presented by all the various
+ GNOME components and applications installed on the system to
+ present a complete and customized documentation environment
+ describing only components which are currently installed on a
+ users system. Some of this documentation, such as the manuals
+ for applets, will be combined in such a way that it appears to
+ be a single document.
+ </para>
+ <para>
+ By using such a system, you can be sure that any GNOME app you
+ install that has documentation will show up in the index,
+ table of contents, any search you do in the help browser.
+ </para>
+ </sect2>
+
+<!-- ####### The GNOME Documentation System | The GNOME Documentation
+Components ####### -->
+
+ <sect2 id="gnomehelpcomponents">
+ <title>The GNOME Documentation Components</title>
+
+ <sect3 id="applicationmanualsintro">
+ <title>Application Manuals</title>
+ <para>
+ Every GNOME application should have an application manual.
+ An application manual is a document specific to the
+ particular application which explains the various windows
+ and features of the application. Application Manuals
+ typically use screenshots (PNG format) for clarity. Writing
+ application manuals is discussed in more detail in <xref
+ linkend="writingapplicationmanuals" /> below.
+ </para>
+ </sect3>
+
+ <sect3 id="applicationhelpintro">
+ <title>Application Help</title>
+ <para>
+ Applications should have a <guibutton>Help</guibutton>
+ button on screens on which users may need help. These
+ <guibutton>Help</guibutton> buttons should pull up the
+ default help browser, determined by the
+ <varname>ghelp</varname> URL Handler (configured using the
+ <application>Control Center</application>), typically the
+ <application>GNOME Help Browser</application>. The help
+ browser should show either the first page of the application
+ manual, or else the relevant page thereof. Application help
+ is described in more detail in <xref
+ linkend="applicationhelpbuttons" /> below.
+ </para>
+ </sect3>
+
+ <sect3 id="contextsensitivehelpintro">
+ <title>Application Context Sensitive Help (coming in
+ GNOME-2.0)</title>
+ <para>
+ Context sensitive help is a system which will allow the user
+ to query any part (button, widget, etc.) of an application
+ window. This is done by either entering a CS Help mode by
+ clicking on an icon or by right clicking on the application
+ part and selecting "What's This" or whatever is decided on
+ at the time. Context sensitive help is described in more
+ detail in <xref linkend="writingcontextsensitivehelp" />
+ below.
+ </para>
+ </sect3>
+
+ <sect3 id="userguide">
+ <title>The GNOME User Guide</title>
+ <para>
+ The <citetitle>GNOME User Guide</citetitle> describes the
+ GNOME desktop environment and core components of GNOME such
+ as the <application>panel</application> and
+ <application>control center</application>. In GNOME 1.x this
+ was the main and only source of documentation. In GNOME 2.0
+ this will become a document for the web and for printing
+ that is derived from various parts chosen in the system that
+ are necessary for the new user to understand.
+ </para>
+ </sect3>
+
+ <sect3 id="userdocs">
+ <title>User Documents</title>
+ <para>
+ Aside from the <citetitle>GNOME User Guide</citetitle>,
+ there are several other documents to help GNOME users learn
+ GNOME, including the <citetitle>GNOME FAQ</citetitle>,
+ <citetitle>GNOME Installation and Configuration
+ Guide</citetitle>, and the <citetitle>GNOME Administrators
+ Guide</citetitle>.
+ </para>
+ </sect3>
+
+ <sect3 id="developerdocs">
+ <title>Developer Documents</title>
+ <para>
+ There are many White Papers, Tutorials, HOWTO's and FAQ's to
+ make programming GNOME and GNOME applications as easy as
+ possible.
+ </para>
+ <para>
+ API documentation is also available for the GNOME libraries. This is
+ detailed documentation of the code that is used to build GNOME
+ apps. You can keep up with the GNOME API docs on the <ulink
+ url="http://developer.gnome.org/doc/API/" type="http">GNOME API
+ Reference</ulink> page.
+ </para>
+ </sect3>
+
+ <sect3 id="projectdocs">
+ <title>Project Documents</title>
+ <para>
+ Some GNOME projects have documentation to maintain
+ consistency in their product and to help new contributors
+ get up to speed quickly. Among these are the GDP documents,
+ such as the one you are reading now.
+ </para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+
+<!-- ################# DocBook Basics ############### -->
+
+ <sect1 id="docbookbasics">
+ <title>DocBook Basics </title>
+<!-- ####### DocBook Basics | Introduction to DocBook ####### -->
+
+ <sect2 id="introtodocbook">
+ <title>Introduction to DocBook</title>
+ <para>
+ To understand DocBook, a basic understanding of SGML is
+ helpful. SGML stands for Standard General Markup Language and
+ is one of the first markup languages every created. HTML is
+ actually derived from SGML and XML is a subset of SGML. SGML
+ uses what is called a Document Type Definition to specify
+ <emphasis>elements</emphasis> which are contained between
+ brackets, &lt; and >. Text is marked by both beginning and
+ ending elements, for example in the DocBook DTD, one denotes a
+ title with <sgmltag>&lt;title></sgmltag>The
+ Title<sgmltag>&lt;/title></sgmltag>.
+ </para>
+ <para>
+ The DTD (in the case of the GDP, DocBook) defines rules for how the
+ elements can be used. For example, if one element can only be used when
+ embedded within another, this is defined in the DTD.
+ </para>
+ <para>
+ An SGML file is just a plain ASCII file containing the text
+ with the markup specified above. To convert it to some easily
+ readable format, you need special tools. The GDP uses <emphasis>DocBook
+ Tools</emphasis>, a free package of utilities for working with DocBook
+ which includes <emphasis>Jade</emphasis>, which does the SGML/DSSL
+ parsing. You can read more about DocBook Tools in <xref
+ linkend="installingdocbook" />.
+ </para>
+ <para>
+ The final appearance of the output (e.g. PostScript or HTML)
+ is determined by a
+ <emphasis>stylesheet</emphasis>. Stylesheets are files,
+ written in a special language (DSSSL &mdash; Document Style
+ Semantics and Specification Language), which specify the
+ appearance of various DocBook elements, for example,
+ what fonts to use for titles and various inline elements, page
+ numbering style, and much more. DocBook tools come with a
+ collection of stylesheets (Norman Walsh's modular
+ stylesheets); GNOME Document Project uses some customized
+ version of this stylesheets &mdash; see <xref
+ linkend="gdpstylesheets"/>.
+ </para>
+ <para>
+ The advantage of specifying the <emphasis>structure</emphasis>
+ of a document with SGML instead of specifying the
+ <emphasis>appearance</emphasis> of the document with a typical
+ word processor, or with html, is that the resulting document
+ can be processed in a variety of ways using the structural
+ information. Whereas formatting a document for appearance
+ assumes a medium (typically written text on a standard-sized
+ piece of paper), SGML can be processed to produce output for a
+ large variety of media such as text, postscript, HTML,
+ Braille, audio, and potentially many other formats.
+ </para>
+ <para>
+ Using 'content' as the elements to define the text of a document also
+ allows for search engines to make use of the actual elements to make a
+ "smarter search". For example, if you are searching for all documents
+ written by the author "Susie" your search engine could be made smart
+ enough to only search &lt;author> elements, making for a faster and more
+ accurate search.
+ </para>
+ <para>
+ Since the overall appearance of the output is determined not by the DTD
+ or the SGML document, but rather by a stylesheet, the appearance of a
+ document can be easily changed just by changing the stylesheet. This
+ allows everyone in the project to create documents that all look the
+ same.
+ </para>
+ <para>
+ As stated before, the GDP uses the DocBook DTD. For a list of
+ introductory and reference resources on DocBook, see <xref
+ linkend="resources" />. The following sections also provide
+ convenient instructions on which markup tags to use in various
+ circumstances. Be sure to read <xref linkend="conventions" />
+ for GDP documentation-specific guidelines.
+ </para>
+ </sect2>
+
+ <!-- ###### DocBook Basics | XML and SGML ########-->
+ <sect2 id="xml">
+ <title>XML and SGML</title>
+
+ <para> In not so distant future (probably before GNOME 2.0),
+ DocBook itself and GNOME Documentation project will migrate from
+ SGML to XML. This transition should be relatively painless:
+ (almost) all DocBook tags will remain the same. However, XML has
+ stricter syntax rules than SGML; thus, some constructions which
+ are valid in SGML will not be valid in XML. Therefore, to be
+ ready for this transistion, it is <emphasis>strongly
+ advised</emphasis> that the documentation writers conform to XML
+ syntax rules. Here are most important differences:
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term> <emphasis>Minimization</emphasis></term>
+ <listitem>
+
+ <para>
+ It is possible with some implementations of SGML to use
+ minimizations to close elements in a document by using
+ &lt;/>, for example:
+ <literal><sgmltag>&lt;title></sgmltag>The
+ Title<sgmltag>&lt;/></sgmltag></literal>. This is not
+ allowed in XML. You can use <command>sgmlnorm</command> command,
+ included in DocBook Tools package, to expand minimized tags;
+ if you are using <application>Emacs</application> with psgml
+ mode, you can also use menu command
+ <menuchoice>
+ <guimenu>Modify</guimenu>
+ <guimenuitem>Normalize</guimenuitem>
+ </menuchoice>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term> <emphasis>Self-closing tags</emphasis></term>
+ <listitem>
+
+ <para>
+ Also, in SGML some tags are allowed not to have closing
+ tags. For example, it is legal for
+ <sgmltag>&lt;xref></sgmltag> not to have a closing tag:
+ <literal><sgmltag>&lt;xref
+ linkend="someid"></sgmltag></literal>. In
+ XML, it is illegal; instead, you should use
+ <literal><sgmltag>&lt;xref
+ linkend="someid"/></sgmltag></literal> (note the
+ slash!).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term> <emphasis>Case sensitive tags</emphasis></term>
+ <listitem>
+ <para>
+ In XML, unlike SGML, tags are case-senstive
+ <sgmltag>&lt;title></sgmltag> and
+ <sgmltag>&lt;TITLE></sgmltag> are different tags!
+ Therefore, please always use lowercase tags (except for
+ things like <literal>DOCTYPE, CDATA</literal> and
+ <literal>ENTITY</literal>, which are not DocBook tags).
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+
+</variablelist>
+</sect2>
+
+
+
+ <!-- ####### DocBook Basics | Structure Elements ####### -->
+
+
+ <sect2 id="structure"> <title> Structure Elements</title>
+
+ <sect3 id="section">
+ <title>Sections and paragraphs</title>
+ <para>
+ Top-level element of a book body must be
+ <sgmltag>&lt;chapter></sgmltag>; it may contain one or more
+ <sgmltag>&lt;sect1></sgmltag>, each of them may contain
+ <sgmltag>&lt;sect2></sgmltag> and so on up to
+ <sgmltag>&lt;sect5></sgmltag>. The top-level element of an
+ article body is always
+ <sgmltag>&lt;sect1></sgmltag>. Regardless of which elements
+ you use, give each structural element a unique id, so that
+ you can link to it. For usage example, see the template.
+ </para>
+ <para> Please try to avoid using deeply nested sections; for
+ most situations, <sgmltag>&lt;sect1></sgmltag> and
+ <sgmltag>&lt;sect2></sgmltag> should be sufficient. If not,
+ you probably should split your <sgmltag>&lt;sect1></sgmltag>
+ into several smaller ones.
+ </para>
+ <para> Use the tag <sgmltag>&lt;para></sgmltag> for
+ paragraphs, even if there is only one paragraph in a
+ section&mdash;see template for examples.
+ </para>
+ </sect3>
+
+ <sect3 id="notes">
+ <title>Notes, Warnings, And Tips</title>
+ <para>
+ For notes, tips, warnings, and important information, which
+ should be set apart from the main text (usually as a
+ paragraph with some warning sign on the margin), use tags
+ <sgmltag>&lt;note></sgmltag>, <sgmltag>&lt;tip></sgmltag>,
+ <sgmltag>&lt;warning></sgmltag>,
+ <sgmltag>&lt;important></sgmltag> respectively. For example:
+ <programlisting>
+<![CDATA[
+<tip>
+ <title>TIP</title>
+ <para>
+ To speed up program compilation, use <application>gcc</application>
+ compiler with Pentium optimization.
+ </para>
+</tip>]]> </programlisting> produces
+ </para>
+ <tip id="extip">
+ <title>TIP</title>
+ <para>
+ To speed up program compilation, use
+ <application>gcc</application> compiler with Pentium
+ optimization. </para>
+ </tip>
+ <para>
+ Note that this should not be inside a
+ <sgmltag>&lt;para></sgmltag> but between paragraphs.
+ </para>
+ </sect3>
+ <sect3 id="figures">
+ <title> Screenshots and other figures</title>
+ <para>
+ To include screenshots and other figures, use the following
+ tags:
+
+ <programlisting>
+<![CDATA[
+<figure id="shot1">
+ <title>Screenshot</title>
+ <screenshot>
+ <screeninfo>Screenshot of a program</screeninfo>
+ <graphic format="PNG" fileref="figures/example_screenshot" srccredit="ME">
+ </graphic>
+ </screenshot>
+</figure>]]>
+ </programlisting>
+ replacing <filename>example_screenshot</filename> with the
+ actual file name (without extension). The result will look like this:
+
+ <figure id="shot1">
+ <title>Screenshot</title>
+ <screenshot>
+ <screeninfo>Screenshot of a program</screeninfo>
+ <graphic format="PNG"
+ fileref="figures/example_screenshot" srccredit="ME"/>
+
+ </screenshot>
+ </figure>
+ </para>
+ <note>
+ <title>NOTE</title>
+ <para>
+ Notice in this example that the screenshot file name does
+ not include the file type extension &mdash; to find out
+ why, please read <xref linkend="jadeimages" />.
+ </para>
+ </note>
+ </sect3>
+ <sect3 id="listing">
+ <title>Program listings and terminal session</title> <para>
+ To show a file fragment&mdash;for example, program
+ listing&mdash;use <sgmltag>&lt;programlisting></sgmltag> tag:
+ <programlisting>
+<![CDATA[
+<programlisting>
+[Desktop Entry]
+Name=Gnumeric spreadsheet
+Exec=gnumeric
+Icon=gnome-gnumeric.png
+Terminal=0
+Type=Application
+</programlisting>]]>
+ </programlisting>
+ which produces
+ <programlisting>
+[Desktop Entry]
+Name=Gnumeric spreadsheet
+Exec=gnumeric
+Icon=gnome-gnumeric.png
+Terminal=0
+Type=Application
+ </programlisting>
+ As a matter of fact, all examples in this document were
+ produced using <sgmltag>&lt;programlisting></sgmltag>.
+ </para>
+ <para>
+ To show a record of terminal session&mdash;i.e., sequence of
+ commands entered at the command line&mdash;use
+ <sgmltag>&lt;screen></sgmltag> tag:
+ <programlisting>
+<![CDATA[
+<screen>
+<prompt>bash$</prompt><userinput>make love</userinput>
+make: *** No rule to make target `love'. Stop.
+</screen>]]>
+ </programlisting>
+ which produces
+ <screen>
+<prompt>bash$</prompt><userinput>make love</userinput>
+make: *** No rule to make target `love'. Stop.
+ </screen>
+ Note the use of tags <sgmltag>&lt;prompt></sgmltag> and
+ <sgmltag>&lt;userinput></sgmltag> for marking system prompt
+ and commands entered by user.
+ <note>
+ <title>NOTE</title>
+ <para>
+ Note that both <sgmltag>&lt;programlisting></sgmltag>
+ and <sgmltag>&lt;screen></sgmltag> preserve linebreaks,
+ but interpret SGML tags (unlike LaTeX
+ <markup>verbatim</markup> environment). Take a look at
+ the source of this document to see how you can have SGML
+ tags literally shown but not interpreted,
+ </para>
+ </note>
+ </para>
+ </sect3>
+ <sect3 id="lists">
+ <title> Lists</title>
+ <para>
+ The most common list types in DocBook are
+ <sgmltag>&lt;itemizedlist></sgmltag>,
+ <sgmltag>&lt;orderedlist></sgmltag>, and
+ <sgmltag>&lt;variablelist></sgmltag>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term> <sgmltag>&lt;itemizedlist></sgmltag></term>
+ <listitem><para>
+ This is the simplest unnumbered list, parallel to
+ <sgmltag>&lt;ul></sgmltag> in HTML. Here is an example:
+ <programlisting>
+<![CDATA[
+<itemizedlist>
+ <listitem>
+ <para>
+ <guilabel>Show backup files</guilabel> &mdash; This will
+ show any backup file that might be on your system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guilabel>Show hidden files</guilabel> &mdash; This will
+ show all "dot files" or files that begin with a dot. This
+ files typically include configuration files and directories.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guilabel>Mix files and directories</guilabel> &mdash; This
+ option will display files and directories in the order you
+ sort them instead of
+ always having directories shown above files.
+ </para>
+ </listitem>
+</itemizedlist>
+]]>
+ </programlisting>
+ and output:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <guilabel>Show backup files</guilabel> &mdash;
+ This will show any backup file that might be on
+ your system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <guilabel>Show hidden files</guilabel> &mdash;
+ This will show all "dot files" or files that
+ begin with a dot. This files typically include
+ configuration files and directories.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <guilabel>Mix files and directories</guilabel>
+ &mdash; This option will display files and
+ directories in the order you sort them instead
+ of always having directories shown above files.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para> Note the use of <sgmltag>&amp;mdash;</sgmltag>
+ for long dash (see <xref linkend="specsymb" />). Also,
+ please note that the result looks much nicer because the
+ terms being explained (<guilabel>Show backup
+ files</guilabel>, etc.) are set in a different font. In
+ this case, it was achieved by using <link
+ linkend="gui"><sgmltag>&lt;guilabel></sgmltag></link>
+ tag. In other cases, use appropriate tags such as
+ <link linkend="gui"><sgmltag>&lt;guimenuitem></sgmltag></link>,
+ <link
+ linkend="filenames"><sgmltag>&lt;command></sgmltag></link>,
+ or &mdash; if none of
+ this applies &mdash; use
+ <link linkend="gui"><sgmltag>&lt;emphasis></sgmltag></link>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term> <sgmltag>&lt;orderedlist></sgmltag></term>
+ <listitem><para>
+ This list is completely analogous to
+ <sgmltag>&lt;itemizedlist></sgmltag> and has the same
+ syntax, but it produces numbered list. By default,
+ this list uses Arabic numerals for numbering entries;
+ you can override this using <sgmltag>numeration</sgmltag>,
+ for example <sgmltag>&lt;orderedlist
+ numeration="lowerroman"></sgmltag>. Possible values of
+ these attribute are <sgmltag>arabic</sgmltag>,
+ <sgmltag>upperalpha</sgmltag>,
+ <sgmltag>loweralpha</sgmltag>,
+ <sgmltag>upperroman</sgmltag>,
+ <sgmltag>lowerroman</sgmltag>.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term> <sgmltag>&lt;variablelist></sgmltag></term>
+ <listitem><para> This list is used when each entry is
+ rather long, so it should be formatted as a block of text
+ with some subtitle, like a small subsection. The
+ <sgmltag>&lt;variablelist></sgmltag> is more complicated
+ than itemizedlists, but for larger blocks of text, or when
+ you're explaining or defining something, it's best to use
+ them. Their greatest advantage is that it's easier for a
+ computer to search. The lines you are reading now were
+ produced by <sgmltag>&lt;variablelist></sgmltag>. The
+ source looked liked this:
+ <programlisting>
+<![CDATA[
+<variablelist>
+ <varlistentry>
+ <term> <sgmltag>&lt;itemizedlist></sgmltag></term>
+ <listitem><para>
+ This is the simplest unnumbered list, parallel to
+ <sgmltag>&lt;ul></sgmltag> in HTML. Here is an example:...
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term> <sgmltag>&lt;orderedlist></sgmltag></term>
+ <listitem><para>
+ This list is completely analogous to
+ <sgmltag>&lt;itemizedlist></sgmltag>
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term> <sgmltag>&lt;variablelist></sgmltag></term>
+ <listitem><para>
+ This list is used when each entry is rather long,...
+ </para></listitem>
+ </varlistentry>
+</variablelist>
+]]>
+ </programlisting>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Lists can be nested; in this case, the stylesheets
+ are smart enough to change the numeration (for
+ <sgmltag>&lt;orderedlist></sgmltag>) or marks of each entry
+ (in <sgmltag>&lt;itemizedlist></sgmltag>) for sub-lists
+ </para>
+ </sect3>
+
+ </sect2>
+
+<!-- ####### DocBook Basics | Inline Elements ####### -->
+
+ <sect2 id="inline">
+ <title>Inline Elements</title>
+
+ <sect3 id="gui">
+ <title>GUI elements</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <sgmltag>&lt;guibutton></sgmltag> &mdash; used for
+ buttons, including checkbuttons and radio buttons
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <sgmltag>&lt;guimenu></sgmltag>,
+ <sgmltag>&lt;guisubmenu></sgmltag> &mdash;used for
+ top-level menus and submenus
+ respectively, for example <literal><![CDATA[
+ <guisubmenu>Utilities</guisubmenu> submenu of the
+ <guimenu>Main Menu</guimenu>]]></literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <sgmltag>&lt;guimenuitem></sgmltag>&mdash;an entry in a
+ menu
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <sgmltag>&lt;guiicon></sgmltag>&mdash;an icon
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <sgmltag>&lt;guilabel></sgmltag>&mdash;for items which have
+ labels, like tabs, or bounding boxes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <sgmltag>&lt;interface></sgmltag>&mdash; for most everything
+ else... a window, a dialog box, the Panel, etc.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ If you need to refer to a sequence of menu choices, such as
+ <menuchoice>
+ <guimenu>Main Menu</guimenu>
+ <guisubmenu>Utilities</guisubmenu> <guimenuitem>GNOME
+ terminal</guimenuitem>
+ </menuchoice>
+ there is a special construction for this, too:
+ <programlisting>
+<![CDATA[
+<menuchoice>
+ <guimenu>Main Menu</guimenu> <guisubmenu>Utilities</guisubmenu>
+ <guimenuitem>GNOME terminal</guimenuitem> </menuchoice>]]>
+ </programlisting>
+ </para>
+ </sect3>
+
+ <sect3 id="links">
+ <title>Links and references</title>
+ <para>
+ To refer to another place in the same document, you can use
+ tags <sgmltag>&lt;xref></sgmltag> and
+ <sgmltag>&lt;link></sgmltag>. The first of them
+ automatically inserts the full name of the element you refer
+ to (section, figure, etc.), while the second just creates a
+ link (in HTML output). Here is an example:
+ <programlisting>
+<![CDATA[An example of a <link linkend="extip">tip</link> was given in
+<xref linkend="notes" />. ]]>
+ </programlisting>
+ which produces: An example of a <link
+ linkend="extip">tip</link> was given in <xref
+ linkend="notes" />.
+ </para>
+ <para>
+ Here <sgmltag>notes</sgmltag> and <sgmltag>extip</sgmltag>
+ are the id attributes of <xref linkend="notes" /> and of the
+ example of a tip in it.
+ </para>
+ <para> To produce a link to an external source, such as a
+ Web page or a local file, use <sgmltag>&lt;ulink></sgmltag>
+ tag, for example:
+ <programlisting>
+<![CDATA[ To find more about GNOME, please visit <ulink type="http"
+url="http://www.gnome.org">GNOME Web page</ulink> ]]>
+ </programlisting>
+ which produces: To find more about GNOME, please visit
+ <ulink type="http" url="http://www.gnome.org">The GNOME Web
+ Site</ulink> You can use any of the standard URL types, such
+ as <literal>http, ftp, file, telnet, mailto</literal> (in
+ most cases, however, use of <literal>mailto</literal> is
+ unnecessary&mdash;see discussion of
+ <sgmltag>&lt;email></sgmltag> tag).
+ </para>
+ </sect3>
+
+ <sect3 id="filenames"> <title>Filenames, commands, and other
+ computer-related things</title>
+ <para>
+ Here are some tags used to describe operating system-related
+ things:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para> <sgmltag>&lt;filename></sgmltag> &mdash; used
+ for filenames,
+ e.g.<sgmltag>&lt;filename></sgmltag>
+ foo.sgml
+ <sgmltag>&lt;/filename></sgmltag>
+ produces: <filename>foo.sgml</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para> <sgmltag>&lt;filename
+ class="directory"></sgmltag> &mdash; used for
+ directories, e.g.<sgmltag>&lt;filename
+ class="directory"></sgmltag>/usr/bin
+ <sgmltag>&lt;/filename></sgmltag>
+ produces: <filename
+ class="directory">/usr/bin</filename>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <sgmltag>&lt;application></sgmltag> &mdash; used for
+ application names,
+ e.g. <sgmltag>&lt;application></sgmltag>Gnumeric
+ <sgmltag>&lt;/application></sgmltag> produces:
+ <application>Gnumeric</application>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <sgmltag>&lt;envar></sgmltag> &mdash; used for
+ environment variables, e.g.
+ <sgmltag>&lt;envar></sgmltag>PATH<sgmltag>&lt;/envar></sgmltag>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <sgmltag>&lt;command></sgmltag> &mdash; used for
+ commands entered on command line, e.g.
+ <sgmltag>&lt;command></sgmltag>make install
+ <sgmltag>&lt;/command></sgmltag> produces:
+ <command>make install</command>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <sgmltag>&lt;replaceable></sgmltag> &mdash; used for
+ replaceable text, e.g.
+ <sgmltag>&lt;command></sgmltag>db2html<sgmltag>&lt;replaceable></sgmltag>
+ foo.sgml
+ <sgmltag>&lt;/replaceable></sgmltag><sgmltag>&lt;/command></sgmltag>
+ produces: <command>db2html
+ <replaceable>foo.sgml</replaceable></command>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3 id="keys">
+ <title>Keyboard input</title>
+ <para> To mark up text input by the user, use
+ <sgmltag>&lt;userinput></sgmltag>.
+ </para>
+ <para> To mark keystrokes such as shortcuts and other
+ commands, use <sgmltag>&lt;keycap></sgmltag>.
+ This is used for marking up what is printed on the top
+ of the physical key on the keyboard. There are a couple of
+ other tags for keys, too: <sgmltag>&lt;keysym&gt;</sgmltag>
+ and <sgmltag>&lt;keycode&gt;</sgmltag>. However you are
+ unlikely to need these for most documentation. For reference,
+ <sgmltag>&lt;keysym&gt;</sgmltag> is for the <quote>symbolic
+ name</quote> of a key. <sgmltag>&lt;keycode&gt;</sgmltag> is
+ for the <quote>scan code</quote> of a key. These are not
+ terms commonly required in <acronym>GNOME</acronym> documentation,
+ although <sgmltag>&lt;keysym&gt;</sgmltag> is useful for marking
+ up control codes.
+ </para>
+ <para>
+ To mark up a combination of keystrokes, use the
+ <sgmltag>&lt;keycombo></sgmltag> wrapper:
+ <programlisting>
+<![CDATA[
+<keycombo>
+ <keycap>Ctrl</keycap>
+ <keycap>Alt</keycap>
+ <keycap>F1</keycap>
+</keycombo>]]>
+ </programlisting>
+ </para>
+ <para>
+ Finally, if you want to show a shortcut for some menu
+ command, here are the appropriate tags (rather long):
+ <programlisting>
+<![CDATA[
+<menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>q</keycap></keycombo>
+ </shortcut>
+ <guimenuitem> Quit</guimenuitem>
+</menuchoice>]]>
+ </programlisting>
+ which produces simply
+ <menuchoice>
+ <shortcut> <keysym>Ctrl-q</keysym> </shortcut>
+ <guimenuitem> Quit</guimenuitem>
+ </menuchoice>
+ </para>
+ </sect3>
+
+ <sect3 id="email">
+ <title>E-mail addresses</title> <para> To mark up e-mail
+ address, use <sgmltag>&lt;email></sgmltag>:
+ <programlisting>
+<![CDATA[ The easiest way to get in touch with me is by e-mail
+(<email>me@mydomain.com</email>)]]>
+ </programlisting>
+ which produces: The easiest way to get in touch with me is
+ by e-mail (<email>me@mydomain.com</email>) Note that
+ <sgmltag>&lt;email></sgmltag> automatically produces a link
+ in html version.
+ </para>
+ </sect3>
+
+ <sect3 id="specsymb">
+ <title> Special symbols </title>
+ <para>
+ DocBook also provides special means for entering
+ typographic symbols which can not be entered directly
+ form the keyboard (such as copyright sign). This is done using
+ <emphasis>entities</emphasis>, which is SGML analogue of
+ macros, or commands, of LaTeX. They generally have the form
+ <sgmltag>&amp;entityname;</sgmltag>. Note that the semicolon
+ is required.
+ </para>
+ <para>
+ here is partial list of most commonly used enitites:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <sgmltag>&amp;amp;</sgmltag> &mdash; ampersend (&amp;)
+ </para></listitem>
+ <listitem><para>
+ <sgmltag>&amp;lt;</sgmltag> &mdash; left angle bracket (&lt;)
+ </para></listitem>
+ <listitem><para>
+ <sgmltag>&amp;copy;</sgmltag> &mdash; copyright sign (&copy;)
+ </para></listitem>
+ <listitem><para>
+ <sgmltag>&amp;mdash;</sgmltag> &mdash; long dash (&mdash;)
+ </para></listitem>
+ <listitem><para>
+ <sgmltag>&amp;hellip;</sgmltag> &mdash; ellipsis (&hellip;)
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ Note that the actual look of the resulting symbols depends
+ on the fonts used by your browser; for example, it might
+ happen that long dash (<sgmltag>&amp;mdash;</sgmltag>) looks
+ exactly like the usual dash (-). However, in the PostScript
+ (and thus, in print) the output will look markedly better if
+ you use appropriate tags.
+ </para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+<!-- ################# GDP Documentation Conventions ############### -->
+
+ <sect1 id="conventions">
+ <title>GDP Documentation Conventions </title>
+
+<!-- ####### GDP Documentation Conventions | All Documentation ####### -->
+
+ <sect2 id="conventionsalldocs">
+ <title>Conventions for All GDP Documentation</title>
+ <sect3 id="xmlcomp">
+ <title> XML compatibility </title>
+ <para>
+ All GNOME documentation should conform to XML syntax
+ requirements, which are stricter than SGML ones &mdash; see
+ <xref linkend="xml" /> for more informaion.
+ </para>
+ </sect3>
+
+ <sect3 id="authorsnames">
+ <title> Authors' names</title>
+ <para>
+ All GNOME documentation should contain the names of both the
+ application authors and documentation authors, as well as a
+ link to the application web page (if it exists) and
+ information for bug submission &mdash; see templates for an
+ example.
+ </para>
+ </sect3>
+ </sect2>
+
+<!-- ####### GDP Documentation Conventions | All Documentation ####### -->
+
+ <sect2 id="conventionsappdocs">
+ <title>Conventions for Application Documentation</title>
+
+ <sect3 id="applicationversionid">
+ <title>Application Version Identification</title>
+ <para>
+ Application documentation should identify the version of the
+ application for which the documentation is written:
+ <programlisting>
+<![CDATA[
+<sect1 id="intro">
+ <title>Introduction</title>
+ <para>
+ blah-blah-blah This document describes version 1.0.53 of gfoo.
+ </para>
+</sect1>]]>
+ </programlisting>
+ </para>
+ </sect3>
+ <sect3 id="license">
+ <title> Copyright information </title>
+ <para> Application
+ documentation should contain a copyright notice, stating the
+ licensing terms. It is suggested that you use the GNU Free
+ Documentation License. You could also use some other license
+ allowing free redistribution, such as GPL or Open Content
+ license. If documentation uses some trademarks (such as UNIX,
+ Linux, Windows, etc.), proper legal junk should also be
+ included (see templates).
+ </para>
+ </sect3>
+ <sect3 id="license2">
+ <title>Software license</title>
+ <para>
+ All GNOME applications must contain information about the
+ license (for software, not for documentation), either in the
+ "About" box or in the manual.
+ </para>
+ </sect3>
+
+ <sect3 id="bugtraq">
+ <title> Bug reporting</title>
+ <para>
+ Application documentation should give an address for
+ reporting bugs and for submitting comments about the
+ documentaion (see templates for an example).
+ </para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+<!-- ################# Writing Application Manuals ###############-->
+
+ <sect1 id="writingapplicationmanuals">
+ <title>Writing Application and Applet Manuals</title>
+ <para>
+ Every GNOME application or applet should have a manual specific
+ to that particular application. This manual should be a complete
+ and authoritative guide. The manual should describe what the
+ program does and how to use it. Manuals will typically describe
+ each window or panel presented to the user using screenshots (in
+ PNG format only) when appropriate. They should also describe
+ each feature and preference option available.
+ </para>
+ <note>
+ <title>Documentation Availability</title>
+ <para>
+ Applications and applets should not rely on documentation
+ which is only available on the internet. All manuals and
+ other documentation should be packaged with the application or
+ applet and be made available to the user through the standard
+ GNOME help system methods described below.
+ </para>
+ </note>
+ <para> Application manuals should be based on the template in
+ <xref linkend="template1" />. Applet manuals should be based on
+ the templates in <xref linkend="template2-1x" /> for GNOME
+ versions 1.x and the templates in <xref linkend="template2-2x" />
+ for GNOME versions 2.x.
+ </para>
+ <note>
+ <title>Manuals For Large Applications</title>
+ <para>
+ Manuals for very large applications, such as GNOME Workshop
+ components should be a <sgmltag>&lt;book></sgmltag> (and thus
+ use <sgmltag>&lt;chapter></sgmltag> for each primary section)
+ , instead of <sgmltag>&lt;article></sgmltag> which most
+ applications use(with each primary section being a
+ <sgmltag>&lt;sect1></sgmltag>).
+ </para>
+ </note>
+ <note>
+ <title>Applet Manuals in GNOME 2.0</title>
+ <para>
+ Note that applet manuals in GNOME 2.0 are treated in a special
+ way. The manuals for all applets are merged into a single
+ virtual document by Nautilus. For this reason, the header
+ information for applet manuals is omitted and the first
+ section of each applet is
+ <sgmltag>&lt;sect1></sgmltag>. Applet manuals will typically
+ have several sections, each of which is
+ <sgmltag>&lt;sect2></sgmltag>.
+ </para>
+ </note>
+ <para>
+ Application manuals should be made available by having a
+ "Manual" entry in the <guimenu>Help</guimenu> pull-down menu
+ at the top of the
+ application, as described in <xref linkend="listingdocsinhelpmenu" />.
+ Applets should make their manuals available by
+ right-clicking on the applet.
+ </para>
+ </sect1>
+
+
+<!-- ############### Listing Documents in the Help Menu ############# -->
+
+ <sect1 id="listingdocsinhelpmenu">
+ <title>Listing Documents in the Help Menu</title>
+
+ <note>
+ <title>Developer Information</title>
+ <para>
+ This section is for developers. Documentation authors
+ generally do not need to know this material.
+ </para>
+ </note>
+ <para>
+ Typically the application manual and possibly additional help
+ documents will be made available to the user under the
+ <guimenu>Help</guimenu> menu at the top right of the
+ application. To do this, you must first write a
+ <filename>topic.dat</filename> file. The format for this file is:
+ <programlisting>
+One line for each 'topic'.
+
+Two columns, as defined by perl -e 'split(/\s+/,$aline,2)'
+
+First column is the HTML file (and optional section) for the topic,
+relative to the app's help file dir.
+
+Second column is the user-visible topic name.
+ </programlisting>
+ For example, <application>Gnumeric</application>'s
+ <filename>topic.dat</filename> file is:
+ <programlisting>
+gnumeric.html Gnumeric manual
+function-reference.html Gnumeric function reference
+ </programlisting>
+ When the application is installed, the
+ <filename>topic.dat</filename> file should be placed in the
+ <filename
+ class="directory">$prefix/share/gnome/help/<replaceable>appname</replaceable>/C/</filename> directory
+ where <replaceable>appname</replaceable> is replaced by the
+ application's name. The application documentation (converted
+ from SGML into HTML with <command>db2html</command>) should be
+ placed in this directory too.
+ </para>
+ <note>
+ <para>
+ If the help files are not present in the correct directory, the
+ menu items will NOT appear when the program is run.
+ </para>
+ </note>
+ <para>
+ The <filename>topic.dat</filename> file is used by the GNOME
+ menu building code to generate the <guimenu>Help</guimenu>
+ menu. When you define your menu:
+<programlisting>
+GnomeUIInfo helpmenu[] = {
+ {GNOME_APP_UI_ITEM,
+ N_("About"), N_("Info about this program"),
+ about_cb, NULL, NULL,
+ GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ABOUT,
+ 0, 0, NULL},
+ GNOMEUIINFO_SEPARATOR,
+ GNOMEUIINFO_HELP("<emphasis>appname</emphasis>"),
+ GNOMEUIINFO_END
+ };
+</programlisting>
+ the line specifying <varname>GNOMEUIINFO_HELP</varname> causes
+ GNOME to create a menu entry which is tied to the documentation
+ in the directory mentioned above. Also, all the topics in the
+ <filename>topic.dat</filename> file will get menu entries in the
+ <guimenu>Help</guimenu> menu. When the user selects any of these
+ topics from the <guimenu>Help</guimenu> menu, a help browser
+ will be started with the associated HTML documentation.
+ </para>
+ </sect1>
+
+
+<!-- ################# Application Help Buttons ############### -->
+
+ <sect1 id="applicationhelpbuttons">
+ <title>Application Help Buttons</title>
+
+ <note>
+ <title>Developer Information</title>
+ <para>
+ This section is for developers. Documentation authors
+ generally do not need to know this material.
+ </para>
+ </note>
+ <para>
+ Most GNOME applications will have <guibutton>Help</guibutton>
+ buttons. These are most often seen in Preference windows. (All
+ Preference windows should have <guibutton>Help</guibutton>
+ buttons.) Most <guibutton>Help</guibutton> buttons will connect
+ to the application manual, although some may connect to special
+ documents. Because the <guibutton>Help</guibutton> buttons do
+ not generally have their own special documentation, the
+ documentation author(s) do not need to do very much. However,
+ the application author must be careful to guarantee that the
+ application correctly opens the help documentation when the
+ <guibutton>Help</guibutton> buttons are pressed.
+ </para>
+ <para>
+ To make the Help buttons call the correct document in the GNOME Help
+ Browser the developer should add code based on the following example:
+ </para>
+ <programlisting>
+gchar *tmp;
+tmp = gnome_help_file_find_file ("module", "page.html");
+if (tmp) {
+ gnome_help_goto(0, tmp);
+ g_free(tmp);
+}
+ </programlisting>
+ <note>
+ <title>NOTE</title>
+ <para>
+ The example above is in the C language, please refer to other
+ documentation or forums for other GNOME language bindings.
+ </para>
+ </note>
+ </sect1>
+
+<!-- ################# Packaging Applet Documentation ############### -->
+
+ <sect1 id="packagingappletdocs">
+ <title>Packaging Applet Documentation</title>
+ <sect2 id="appletfiles">
+ <title>Applet Documentation Files</title>
+ <para>
+ In GNOME 2.0 each applet will have its own documentation
+ installed separately, and the GNOME 2.0 help
+ browser (<application>Nautilus</application>) will dynamically
+ merge the applet documents into a single virtual book
+ called <citetitle>GNOME Applets</citetitle>. During the
+ transitionary stage between GNOME 1.0 and GNOME 2.0, each
+ applet in the gnome-applets package has its own manual(stored
+ with the applet in CVS), but they are merged together manually
+ to create the <citetitle>GNOME Applets</citetitle> book before
+ distribution. Telsa
+ <email>hobbit@aloss.ukuu.org.uk</email> is the maintainer of
+ this document. Applet documentation should be sent to Telsa
+ (or placed in CVS) who will make sure they are correctly
+ packaged with the applets. The applet author should be
+ contacted to modify the menu items and help buttons to bind to
+ the applet documentation if necessary.
+ </para>
+ <para>
+ Images which are part of the applet documentation should be in
+ PNG format and should reside in the same directory as the SGML
+ document file in CVS(gnome-applets/APPLETNAME/help/C).
+ </para>
+ <para>
+ Applets which are not part of the gnome-applets package must
+ package their documentation with the particular applet
+ package. They should use the same applet template as other
+ applets. However, the <sgmltag>&lt;xref></sgmltag> links to
+ the introductory chapter of the <citetitle>GNOME
+ Applets</citetitle> book must be removed (as the 1.x
+ <application>GNOME Help Browser</application> does not allow
+ you to create links between separate documents) and replaced
+ with suitable text. Note that since this document is not part
+ of the <citetitle>GNOME Applets</citetitle> book, you must
+ remember to add <sgmltag>&lt;legalnotice></sgmltag> and
+ <sgmltag>&lt;copyright></sgmltag> sections.
+ </para>
+ </sect2>
+
+ <sect2 id="appletmenu">
+ <title>Adding Documentation to an Applet Menu</title>
+ <note>
+ <title>Developer Information</title>
+ <para>
+ This section is for developers. Documentation authors
+ generally do not need to know this material.
+ </para>
+ </note>
+ <para>
+ Applets should have <guimenu>About</guimenu> and
+ <guimenu>Manual</guimenu> menu items, typically as the first
+ and second top-most items in the menu respectively. This
+ section describes how the developer creates these menu items
+ and links them to the documentation.
+ </para>
+ <para>
+ To add an applet's manual to its applet menu, use:
+<programlisting>
+/* add an item to the applet menu */
+applet_widget_register_callback(APPLET_WIDGET(applet), "manual",
+_("Manual"), &amp;open_manual, NULL);
+</programlisting>
+ Here the second argument is an arbitrary name for the
+ callback, the third argument is the label which will appear
+ when the user right clicks on the applet, and the fourth
+ argument is the callback function.
+ </para>
+ <para>
+ You will need to write a simple callback function to open the
+ help browser to the appropriate document. This is done using
+ the <function>gnome_help_file_find_file</function> function,
+ as described in <xref linkend="applicationhelpbuttons" />.
+ </para>
+ <para>
+ You will also want to add an <guimenu>About</guimenu> menu
+ item to the applet's menu. This is a
+ stock menu item and is done:
+<programlisting>
+applet_widget_register_stock_callback (APPLET_WIDGET(applet), "about",
+ GNOME_STOCK_MENU_ABOUT, _("About"), &amp;my_applet_cb_about,
+ NULL);
+</programlisting>
+ </para>
+ <para>
+ More information can be found at <ulink type="http"
+ url="http://developer.gnome.org/doc/tutorials/applet/index.html">Writing
+ GNOME panel applets using the GTK+/GTK-- widget set</ulink>.
+ </para>
+ </sect2>
+ </sect1>
+
+
+<!-- ################# Writing Context Sensitive Help ###############
+-->
+
+ <sect1 id="writingcontextsensitivehelp">
+ <title>Writing Context Sensitive Help (coming in GNOME-2.0)</title>
+ <para>
+ Context sensitive help, also known as "pop-up" help, will allow
+ a user to obtain help information about specific buttons or
+ parts of an application.
+ </para>
+ <para>
+ Context sensitive help is still under development and not all
+ the details are available at this time. However, the basics can
+ be shown here so that you can understand how the system will
+ work.
+ </para>
+ <para>
+ The Context Sensitive Help system is designed to allow the
+ developer to give an id to a particular portion of the User
+ Interface, for example, a button. Once the interface is complete
+ a Perl script can then be run against the interface code to
+ create a "map" file. This map file allows the developer or
+ writer to associate particular paragraph sections from an XML
+ document to the interface items.
+ </para>
+ <para>
+ The XML used for the document is a small XML DTD that is being
+ developed to use the same tags (albeit, much fewer) as DocBook
+ so that writers do not have to re-learn a new DTD.
+ </para>
+ <para>
+ Once the document is written and map file is complete, when the
+ user launches context sensitive help on the interface (either by
+ pressing a button and then clicking on the interface item they
+ want information on, or by right mouse clicking on the interface
+ item and selecting a pop-up menu item like "What's This") a
+ small transient window will appear with brief but detailed
+ information on the interface item.
+ </para>
+ </sect1>
+
+<!-- ################# Referring to Other GNOME Documentation
+############# -->
+
+ <sect1 id="referring">
+ <title>Referring to Other GNOME Documentation (coming in
+ GNOME-2.0)</title>
+ <para>
+ In the GNOME 2.0 Help System, you will be able to create links
+ from one document to another. The exact mechanism for doing
+ this is in development.
+ </para>
+ </sect1>
+
+
+<!-- ################# Basics of Documentation Style ############### -->
+
+ <sect1 id="basics">
+ <title>Basics of Documentation Style</title>
+ <para>
+ Most people have never enjoyed reading a software manual, and
+ they probably never will. Many times, they'll read the
+ documentation only when they run into problems, and they'll be
+ frustrated and upset before they even read a word. On the
+ other hand, some readers will read the manual all the way
+ through, or at least look at the introduction before they
+ start. Your document might serve as a reference for an expert
+ or a guide to a beginner, and it must have enough depth to
+ satisfy the first without overwhelming the second. Ideally, it
+ will serve beginners as they <emphasis>become</emphasis>
+ experts. Remember, your goal is to produce <emphasis>complete,
+ intuitive and clear</emphasis> documentation.
+ </para>
+ <para>
+ In order to write useful documentation, you'll have to know who
+ your audience is likely to be. Then, you can look for the
+ problems they're likely to run into, and solve them. It will
+ also help if you focus on the tasks users will perform, and
+ group features accordingly, rather than simply describing
+ features at random.
+ </para>
+
+<!-- *********** Basics of Documentation Style: planning -->
+
+ <sect2 id="styleplanning">
+ <title>Planning</title>
+ <para>
+ Begin documenting by learning how to use the application and
+ reading over any existing documentation. Pay attention to
+ places where your document will differ from the template. It
+ may help to develop a document skeleton: a valid XML or SGML
+ document that has little or no content. For very large
+ applications, you will need to make significant departures
+ from the templates, since you'll be using the
+ <sgmltag>&lt;book></sgmltag> tag instead of
+ <sgmltag>&lt;chapter></sgmltag> or
+ <sgmltag>&lt;article></sgmltag>.
+ </para>
+ </sect2>
+
+
+<!-- ####### Basics of Documentation Style | Balance ####### -->
+ <sect2 id="balance">
+ <title>Achieving a Balanced Style</title>
+
+ <para>
+ Just as you need to juggle expert and novice readers,
+ you'll have to juggle a number of other extremes as you write:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Documents should be complete, yet concise. You should
+ describe every feature, but you'll have decide how much
+ detail is really necessary. It's not, for example,
+ necessary to describe every button and form field in a
+ dialog box, but you should make sure that your readers
+ know how to bring up the dialog and what it does. If
+ you spend fewer words on the obvious, you can spend more
+ time clarifying the ambiguous labels and explaining
+ items that are more complex.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Be engaging and friendly, yet professional. Games
+ documents may be less formal than productivity
+ application documents (people don't
+ <emphasis>use</emphasis> games, they
+ <emphasis>play</emphasis> them), but all of them should
+ maintain a standard of style which holds the reader's
+ interest without resorting to jokes and untranslatable
+ allusions or puns.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Examples, tips, notes, and screenshots are useful to
+ break up long stretches of text, but too many can get in
+ the way, and make your documents too choppy to read.
+ It's good to provide a screenshot of any dialog windows
+ a user might run into, but if a dialog box has several
+ tabs, it's not usually necessary to have one for each.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The GDP strives to have all of its documentation conform
+ to certain standards of style and content, but every
+ document (and every writer) is different. You will need
+ to use your judgement, and write documents to fit with
+ the rest of the project, without compromising the
+ individual needs of your subject, or your own
+ individuality as a writer.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+ </sect2>
+
+
+<!-- ####### Basics of Documentation Style | Structure ####### -->
+
+ <sect2 id="stylestructure">
+ <title>Structure</title>
+ <para>
+ In general, you won't have to worry too much about structure,
+ because the templates provide you with an excellent example.
+ As a general rule, try to follow that structural example.
+ That means using links, hierarchical nesting, and, if
+ necessary, a glossary or index. You probably won't need to
+ use every available structural tag, but take advantage of
+ what DocBook provides you.
+ </para>
+ <para>
+ As to linking, there's some disagreement about whether to use
+ <sgmltag>&lt;xref></sgmltag> <sgmltag>&lt;link></sgmltag>
+ when you make links within your documents. You'll have to
+ decide, based on the different ways that they are presented
+ in output, which is more appropriate given the context.
+ Regardless of which you use, you should not forget to use
+ them. Help your readers find information that relevant to
+ the issue at hand.
+ </para>
+ <para>
+ The table of contents will be generated automatically, but
+ you will probably have to develop your own index if you wish
+ to have one. The Nautilus Help Browser will have new, and
+ currently unknown, indexing capabilities, so index style and
+ structure are still under discussion. The GNOME User's Guide
+ will contain a glossary in its next versions; unless you're
+ writing a<sgmltag>&lt;book></sgmltag>, it will probably be best to
+ contribute to that rather than developing your own.
+ </para>
+ </sect2>
+<!-- ####### Basics of Documentation Style | Grammar & Spelling ####### -->
+
+ <sect2 id="stylegrammar">
+ <title>Grammar and Spelling</title>
+ <para>
+ Nobody expects you to be perfect; they just expect the
+ documentation for their software to be error-free. That means
+ that, in the same way that developers look for bugs and accept
+ bug reports, writers must check for errors in their documents.
+ Poor grammar, bad spelling, and gross technical errors in
+ draft documents are fine. However, if those problems show up
+ in a "real" release, they can count against the credibility of
+ GNOME and Linux. They'll also make you look bad.
+ </para>
+ <para>
+ There is no substitute for a human proofreader; use a
+ spell-check program, then read it over yourself, and then find
+ someone else to help you. Other GDP members are, of course,
+ willing and able to help you, but non-writers are often at
+ least as helpful.
+ </para>
+ <para>
+ Proofreading documents is both a also a good way to
+ familiarize yourself with documentation, and it certainly
+ makes you valuable to the GDP. Help other writers proof their
+ documents, and they will help you with yours.
+ </para>
+ </sect2>
+ </sect1>
+
+<!-- ################# Teamwork ############### -->
+
+ <sect1 id="teamwork">
+ <title>Teamwork</title> <!-- ####### Teamwork | Working With The
+GDP Team ####### -->
+
+ <sect2 id="teamworkgdp">
+ <title>Working With The GDP Team</title>
+ <para>
+ The GDP team is a valuable resource for any documentation
+ author. GDP members can answer most questions documentation
+ authors have during the course of their work. It is also
+ important to make sure you are not duplicating work of other
+ GDP members by visiting the <citetitle>GDP Documentation
+ Status Table</citetitle> (<ulink
+ url="http://www.gnome.org/gdp/doctable/"
+ type="http">http://www.gnome.org/gdp/doctable/</ulink>) and
+ assigning a documentation item to yourself. This table also
+ provides a forum for making suggestions and announcements for
+ each documentation item. The best way to get in touch with
+ GDP members is on the #docs IRC channel at irc.gnome.org or
+ else by emailing the <ulink type="http"
+ url="http://mail.gnome.org/mailman/listinfo/gnome-doc-list/">
+ <citetitle>gnome-doc-list mailing list</citetitle></ulink>.
+ </para>
+ <para>
+ After an author has finished a document (or even a draft
+ version of the document), it is a good idea to ask a member of
+ the GDP team to read the document, checking it for grammar,
+ proper DocBook markup, and clarity. One may typically find
+ another author to do this by either asking on the #docs IRC
+ channel at irc.gnome.org or by emailing the <ulink type="http"
+ url="http://mail.gnome.org/mailman/listinfo/gnome-doc-list/">
+ <citetitle>gnome-doc-list mailing list</citetitle></ulink>.
+ </para>
+ </sect2>
+
+<!-- ####### Teamwork | Working With Developers ####### -->
+
+ <sect2 id="teamworkdevelopers">
+ <title>Working With Developers</title>
+ <para>
+ Writing documentation typically involves a certain amount of
+ interaction with the developers of GNOME or the application
+ which is being documented. Often a document author will need
+ to ask the developer technical questions during the course of
+ writing a document. After the document is finished, it is good
+ idea to ask the developer to read the document to make sure it
+ is technically correct. The documentation author should also
+ make sure that the application author correctly binds and
+ packages the documentation with the application.
+ </para>
+ </sect2>
+
+<!-- ####### Teamwork | Working With Users #######
+
+ <sect2 id="teamworkusers">
+ <title>Working With Users</title>
+ <para>
+ Some document authors may wish to get feedback on their
+ documents directly from users. This may be done by ...
+ </para>
+ </sect2>-->
+ </sect1>
+
+<!-- ################# Finishing a Document ############### -->
+
+ <sect1 id="finishing">
+ <title>Finishing A Document</title>
+
+<!-- ####### Finishing a Document | Editting the Document ####### -->
+
+ <sect2 id="editting">
+ <title>Editing The Document</title>
+ <para>
+ When the document is finished, the document should be edited
+ by another member of the GDP for spelling, clarity, and
+ DocBook markup. It should also be read by an application
+ author to make sure the document is technically accurate.
+ </para>
+ </sect2>
+
+<!-- ####### Finishing a Document | Submitting the Document ####### -->
+
+ <sect2 id="submitting">
+ <title>Submitting The Document</title>
+ <para>
+ After the document has been edited and checked for technical
+ accuracy, it is ready to be combined with the application or
+ documentation package. This is typically done by passing the
+ document to the application or package developer. In some
+ cases, the documents can be committed directly into CVS,
+ however this should only be done after obtaining permission to
+ make CVS commits from the developer. Note that in many cases,
+ the application may need to be modified to correctly link to
+ the documentation. The packaging system (tarballs and binary
+ packages) may also need to be modified to include the
+ documentation in the package. Generally, this should be done
+ by the developers.
+ </para>
+ <para>
+ The final step is to email the GNOME Translation Team at
+ <email>gnome-i18n@nuclecu.unam.mx</email> to notify them that
+ there is a new document for them to translate.
+ </para>
+ </sect2>
+ </sect1>
+
+<!-- ################# Resources ############### -->
+
+ <sect1 id="resources">
+ <title>Resources</title>
+<!-- ####### Resources | Resources on the Web ####### -->
+
+ <sect2 id="resourcesweb">
+ <title>Resources On The Web</title> <para> The <ulink
+ type="http" url="http://developer.gnome.org/projects/gdp/">GNOME
+ Documentation Project Web page</ulink> lists current GDP
+ projects and members.
+ </para>
+ <para>
+ The <ulink url="http://www.gnome.org/gdp/doctable/"
+ type="http">GDP Documentation Status Table</ulink> tracks the
+ status of all the various documentation components of GNOME.
+ </para>
+ <para>
+ Norman Walsh's <ulink url="http://www.docbook.org"
+ type="http"> <citetitle>DocBook: The Definitive
+ Guide</citetitle></ulink> in an excellent book on DocBook,
+ available both online and in print.
+ </para>
+ </sect2>
+
+<!-- ####### Resources | Books ####### -->
+
+ <sect2 id="resourcesbooks">
+ <title>Books</title>
+ <para>
+ Docbook: The Definitive Guide is available in both printed
+ form and on the web at:
+ <ulink url="http://www.docbook.org/tdg/index.html">
+ <citetitle>Docbook: The Definitive Guide</citetitle>
+ </ulink>
+ </para>
+ </sect2>
+
+<!-- ####### Resources | Mailing Lists ####### -->
+
+ <sect2 id="mailinglists">
+ <title>Mailing Lists</title>
+ <para>
+ The <emphasis>gnome-docs-list</emphasis> mailing list is the
+ main discussion area for all contributors to the GNOME
+ Documentation Project. You can find out how to subscribe to
+ this list on <ulink
+ url="http://www.gnome.org/resources/mailing-lists.html"
+ type="http">GNOME Mailing Lists</ulink>. This is a rather
+ low-volume list, so you will not be flooded with messages.
+ </para>
+ </sect2>
+
+<!-- ####### Resources | IRC ####### -->
+
+ <sect2 id="irc">
+ <title>IRC</title>
+ <para>
+ Internet Relay Chat (IRC) is a fast and easy way to get in
+ touch with other GDP members. There are generally at least a
+ few members here who can answer questions or discuss
+ documentation issues. The IRC channel is #docs at
+ irc.gnome.org.
+ </para>
+ </sect2>
+ </sect1>
+
+<!-- ################# Example Docs ###############
+
+ <appendix id="exampledocs">
+ <title>Example Docs</title>
+
+####### Example Docs | Example 1: Application Manual #######
+
+ <sect1 id="ex1">
+ <title>Example 1: Application Manual</title>
+ <programlisting>
+<![CDATA[ (Put sgml here.)]]> </programlisting>
+ </sect1>
+
+####### Example Docs | Example 2: Applet Manual #######
+
+ <sect1 id="ex2">
+ <title>Example 2: Applet Manual</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]> </programlisting>
+ </sect1>
+
+##### Example Docs | Example 3: Application Context Sensitive Help ####
+
+ <sect1 id="ex3">
+ <title>Example 3: Application Context Sensitive Help</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]> </programlisting>
+ </sect1>
+
+####### Example Docs | Example 4: Complete Application: gnome-hello #######
+
+ <sect1 id="ex4">
+ <title>Example 4: Complete Application: gnome-hello</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]> </programlisting>
+ </sect1>
+
+####### Example Docs | Example 5: Tutorial #######
+
+ <sect1 id="ex5">
+ <title>Example 5: Tutorial</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]> </programlisting>
+ </sect1>
+ </appendix>-->
+
+<!-- ################# Document Templates ############### -->
+
+ <appendix id="templates">
+ <title>Document Templates</title>
+<!-- ####### Document Templates | Templates 1: Application Manual ####### -->
+
+ <sect1 id="template1">
+ <title>Template 1: Application Manual</title>
+ <para>
+ The following template should be used for all application
+ manuals. You can always get the latest copy of this
+ template from <ulink type="http"
+ url="http://developer.gnome.org/projects/gdp/templates.html">GDP
+ Documentation Templates</ulink>.
+ <programlisting>
+
+<![CDATA[
+<!DOCTYPE Article PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN"[
+ <!-- if not using PNG graphic, replace reference above with
+ .....PUBLIC "-//OASIS//DTD DocBook V3.1//EN"[
+ -->
+<!ENTITY version "1.0.53">
+ <!-- replace version above with actual application version number-->
+ <!-- Template Version: 1.0.1 (do not remove this line) -->
+]>
+
+
+<!-- This is a GNOME documentation template, designed by the GNOME
+ Documentation Project Team. Please use it for writing GNOME
+ documentation, making obvious changes. In particular, all the words
+ written in UPPERCASE (with the exception of GNOME) should be
+ replaced. As for "legalnotice", please leave the reference
+ unchanged.
+
+ Remember that this is a guide, rather than a perfect model to follow
+ slavishly. Make your manual logical and readable. And don't forget
+ to remove these comments in your final documentation! ;-)
+ -->
+
+<!-- =============Document Header ============================= -->
+
+<article id="index"> <!-- please do not change the id -->
+
+ <artheader>
+ <title>MY-GNOME-APP</title>
+ <copyright>
+ <year>2000</year>
+ <holder>ME-THE-AUTHOR</holder>
+ </copyright>
+
+ <!-- translators: uncomment this:
+
+ <copyright>
+ <year>2000</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+
+ -->
+
+ <!-- do not put authorname in the header except in copyright - use
+ section "authors" below -->
+
+ <legalnotice>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the <citetitle>GNU Free
+ Documentation License</citetitle>, Version 1.1 or any later
+ version published by the Free Software Foundation with no
+ Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. You may obtain a copy of the <citetitle>GNU Free
+ Documentation License</citetitle> from the Free Software
+ Foundation by visiting <ulink type="http"
+ url="http://www.fsf.org">their Web site</ulink> or by writing
+ to: Free Software Foundation, Inc., 59 Temple Place - Suite
+ 330, Boston, MA 02111-1307, USA.
+ </para>
+ <para>
+ Many of the names used by companies to distinguish their
+ products and services are claimed as trademarks. Where those
+ names appear in any GNOME documentation, and those trademarks
+ are made aware to the members of the GNOME Documentation
+ Project, the names have been printed in caps or initial caps.
+ </para>
+ </legalnotice>
+
+ <!-- this is the version of manual, not application -->
+ <releaseinfo>
+ This is version 1.0 of MY-GNOME-APP manual.
+ </releaseinfo>
+
+ </artheader>
+
+ <!-- ============= Document Body ============================= -->
+
+ <!-- ============= Introduction ============================== -->
+ <sect1 id="intro">
+ <title>Introduction</title>
+
+ <para>
+ <application>MY-GNOME-APP</application> is an application which
+ proves mathematical theorems. It has all the basic features
+ expected from a mathematical theorem prover, as well as a number
+ of advanced ones, such as proof by confusion. In fact, many of
+ the proofs produced by <application>MY-GNOME-APP</application>
+ are so complex that they are capable of proving almost anything
+ with a virtually null likelihood of being disproven. It also has
+ the very popular predecessor of proof by confusion, proof by
+ dialog, first implemented by Plato.
+ </para>
+ <para>
+ It also allows you to save and print theorem proofs and to add
+ comments to the proofs it produces.
+ </para>
+
+ <para>
+ To run <application>MY-GNOME-APP</application>, select
+ <menuchoice>
+ <guisubmenu>SUBMENU</guisubmenu>
+ <guimenuitem>MY-GNOME-APP</guimenuitem>
+ </menuchoice>
+ from the <guimenu>Main Menu</guimenu>, or type
+ <command>MYGNOMEAPP</command> on the command line.
+ </para>
+
+ <para>
+ <application>MY-GNOME-APP</application> is included in the
+ <filename>GNOME-PACKAGE</filename> package, which is part of the
+ GNOME desktop environment. This document describes version
+ &version; of <application>MY-GNOME-APP</application>.
+ </para>
+ </sect1>
+
+
+ <!-- ================ Usage ================================ -->
+ <!-- This section should describe basic usage of the application. -->
+
+ <sect1 id="usage">
+ <title>Using MY-GNOME-APP</title>
+ <para>
+ <application>MY-GNOME-APP</application> can be used to produce a
+ perfect proof of <emphasis>any</emphasis> mathematical theorem
+ (provided, of course, that this theorem is correct), thus
+ providing for new users an easy-to-use graphical interface to
+ modern mathematics. This section describes basic usage of
+ <application>MY-GNOME-APP</application>.
+ </para>
+
+ <!-- ========= Basic Usage =========================== -->
+ <sect2 id="mainwin">
+ <title>Basic usage</title>
+ <para>
+ Starting <application>MY-GNOME-APP</application> opens the
+ <interface>Main window</interface>, shown in <xref
+ linkend="mainwindow-fig">. The window is at first empty.
+
+ <!-- ==== Figure ==== -->
+ <figure id="mainwindow-fig">
+ <title>MY-GNOME-APP Main Window</title>
+ <screenshot>
+ <screeninfo>MY-GNOME-APP Main Window</screeninfo>
+ <graphic fileref="SCREENSHOT" format="png" srccredit="ME">
+ </graphic>
+ </screenshot>
+ </figure>
+ <!-- ==== End of Figure ==== -->
+ </para>
+
+
+ <!-- For this app, one could put "proving" or "edit" (probably even
+ both of them) as sect2's seperate from the main window
+ section. Since they were both so closely involved with the main
+ window, I decided to have them as sect3's isntead. Judgement
+ call. -->
+
+ <sect3 id="proving">
+ <title>Proving a Theorem</title>
+ <para>
+ To get a proof of a theorem, select
+ <menuchoice>
+ <guisubmenu>File</guisubmenu>
+ <guimenuitem>New</guimenuitem>
+ </menuchoice>,
+ which will
+ bring up the <interface>New Proof</interface> dialog box.
+ Enter the statement of the theorem in the
+ <guilabel>Theorem statement</guilabel> field, select your
+ desired proof type from the drop-down menu, and and press
+ <guibutton>Prove!</guibutton>.
+ </para>
+ <para>
+ If <application>MY-GNOME-APP</application> cannot prove the
+ theorem by the method you have chosen, or if you have not
+ selected a proof type at all,
+ <application>MY-GNOME-APP</application> will attempt to
+ choose the one that it thinks is most conclusive. In order,
+ it will attempt to prove the theorem with the following techniques:
+
+ <variablelist>
+ <varlistentry>
+ <term>Deduction</term>
+ <listitem>
+ <para>
+ This is a proof method that is generally accepted
+ for full credit by Logic professors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Induction</term>
+ <listitem>
+ <para>
+ This logical style will also earn you full credit on
+ your homework.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Dialog</term>
+ <listitem>
+ <para>
+ This logical method is best for Philosophy classes,
+ and will probably only merit partial credit on Logic
+ or Mathematics homework.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Confusion</term>
+ <listitem>
+ <para>
+ Suitable only for political debates, battles of wits
+ against the unarmed, and Philosophy classes focusing
+ on the works of Kant. Use with caution.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <!-- You might want to include a note, warning, or tip, e.g. -->
+
+ <warning>
+ <title>Proving Incorrect Theorms</title>
+ <para>
+ <application>MY-GNOME-APP</application> cannot prove
+ incorrect theorems. If the theorem you have entered is not
+ demonstrably true, you will get a message to that effect
+ in the main window. To disprove a theorem, ask
+ <application>MY-GNOME-APP</application> to prove its
+ logical inverse.
+ </para>
+ </warning>
+ </sect3>
+ <sect3 id="editing">
+ <title>Editing Proofs</title>
+ <para>
+ Once you have proven the theorem, it will be displayed in
+ the <interface>main window</interface>. There, you can read
+ it over, choose text styles for different portions of it,
+ and make comments on it. This section will guide you through
+ that process.
+ </para>
+ <para>
+ To alter text styles, first select the statement you wish to
+ change by clicking on it once. You can select several
+ statements by Then, choose the style you want to apply from
+ the <guisubmenu>Style</guisubmenu> submenu of the
+ <guimenu>Edit</guimenu> menu.
+ <application>MY-GNOME-APP</application> will convert the
+ text to that style.
+ </para>
+ <para>
+ You can also enter comments on a statement by selecting that
+ statement, and then beginning to type. Comments will appear
+ after the statement you have selected.
+ </para>
+
+ <note>
+ <title>Altering The Proofs Themselves</title>
+ <para>
+ <application>MY-GNOME-APP</application> does not allow you
+ to alter a proof it has produced itself. You can, save
+ your proof as a plain text file (using the
+ <guimenuitem>Save as...</guimenuitem> menu), and alter it
+ that way. Be aware, however, that
+ <application>MY-GNOME-APP</application> uses its own file
+ format for saved proofs, and cannot re-open a file unless
+ it is in the .mga format.
+ </para>
+ </note>
+ </sect3>
+
+
+ <!-- If there are other functions performed from the main window,
+ they belong here. -->
+
+ </sect2>
+
+ <!-- =========================================================
+ Additional Sect2's should describe additional windows, such as
+ larger dialog boxes, or functionality that differs significantly
+ from the most immediate functions of the application. Make the
+ structure logical.
+ ============================================================= -->
+
+
+ <sect2 id="toolbar">
+ <title>Toolbar</title>
+ <para>
+ The toolbar (shown in <xref linkend="figure-usage-toolbar">)
+ provides access to several commonly used routines.
+ <figure id="figure-usage-toolbar">
+ <title>MY-GNOME-APP Toolbar</title>
+ <screenshot>
+ <screeninfo>MY-GNOME-APP Toolbar</screeninfo>
+ <graphic fileref="usage-toolbar.png" format="png"></graphic>
+ </screenshot>
+ </figure>
+ <variablelist>
+ <varlistentry>
+ <term>New</term>
+ <listitem>
+ <para>
+ Brings up the <interface>New Theorem</interface>
+ dialog.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Open</term>
+ <listitem>
+ <para>
+ Open an exisiting theorem you want to prove, or a
+ completed proof you wish to print or format.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Save</term>
+ <listitem>
+ <para>
+ Save the current theorem permanently in a
+ file.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect2>
+ <!-- ========= Menus =========================== -->
+
+ <sect2 id="menubar">
+
+ <!-- Describing the menubar ensures comprehensive feature
+ coverage. Nest itemizedlists inside variablelists so that each
+ menu is easily located by indexing software. Proper indentation
+ makes it easier! -->
+
+ <title>Menus</title>
+ <para>
+ The menu bar, located at the top of the <interface>Main
+ Window</interface>, contains the following menus:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><guimenu>File</guimenu></term>
+ <listitem>
+ <para>
+ This menu contains:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycap>F3</keycap>
+ </shortcut>
+ <guimenuitem>Open</guimenuitem>
+ </menuchoice>
+ &mdash; This opens a file which is saved on your computer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>S</keycap></keycombo>
+ </shortcut>
+ <guimenuitem>Save</guimenuitem>
+ </menuchoice>
+ &mdash; This saves your file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>W</keycap></keycombo>
+ </shortcut>
+ <guimenuitem>Close</guimenuitem>
+ </menuchoice>
+ &mdash; This closes your file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>Q</keycap></keycombo>
+ </shortcut>
+ <guimenuitem>Exit</guimenuitem>
+ </menuchoice>
+ &mdash; This quits the application.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><guimenu>Edit</guimenu></term>
+ <listitem>
+ <para>
+ This menu contains:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>X</keycap></keycombo>
+ </shortcut>
+ <guimenuitem>Cut</guimenuitem>
+ </menuchoice>
+ &mdash; This removes any text or data which is selected and
+ places it in the buffer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>
+ </shortcut>
+ <guimenuitem>Copy</guimenuitem>
+ </menuchoice>
+ &mdash; This copies any text or data which is selected into
+ the buffer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <menuchoice>
+ <shortcut>
+ <keycombo><keycap>Ctrl</keycap><keycap>V</keycap></keycombo>
+ </shortcut>
+ <guimenuitem>Paste</guimenuitem>
+ </menuchoice>
+ &mdash; This pastes any text or data which is copied into
+ the buffer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guimenuitem>COMMAND1&hellip;</guimenuitem>
+ &mdash; This opens the <interface>COMMAND1</interface>
+ dialog, which is used to ....
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guimenuitem>COMMAND2</guimenuitem>
+ &mdash; This ....
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term><guimenu>Settings</guimenu></term>
+ <listitem>
+ <para>
+ This menu contains:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <guimenuitem>Preferences&hellip;</guimenuitem>
+ &mdash; This opens the <link
+ linkend="prefs"><interface>Preferences
+ Dialog</interface></link>, which allows you to configure
+ many settings.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guimenuitem>COMMAND3</guimenuitem> &mdash;
+ This command does something.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><guimenu>Help</guimenu></term>
+ <listitem>
+ <para>
+ This menu contains:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <guimenuitem>Manual</guimenuitem> &mdash; This
+ opens the <application>GNOME Help
+ Browser</application> and displays this manual.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <guimenuitem>About</guimenuitem> &mdash; This
+ opens the <interface>About</interface> dialog
+ which shows basic information about
+ <application>MY-GNOME-APP</application>, such as
+ the author's name, the application version number,
+ and the URL for the application's Web page if one
+ exists.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
+ </sect1>
+
+
+
+ <!-- ============= Customization ============================= -->
+
+ <sect1 id="prefs">
+ <title>Customization</title>
+ <para>
+ To change the application settings, select
+ <menuchoice>
+ <guimenu>Settings</guimenu>
+ <guimenuitem>Preferences...</guimenuitem>
+ </menuchoice>. This opens the
+ <interface>Preferences</interface> dialog, shown in <xref
+ linkend="preferences-fig">.
+ </para>
+
+ <figure id="preferences-fig">
+ <title>Preferences Dialog</title>
+ <screenshot>
+ <screeninfo>Preferences Dialog</screeninfo>
+ <graphic fileref="SCREENSHOT" format="png"
+ srccredit="ME">
+ </graphic>
+ </screenshot>
+ </figure>
+
+ <para>
+ The properties in the <guilabel>PREFSTABNAME</guilabel> tab are:
+
+ <!--many people use itemizedlists in cases like this. Variablelists
+ are more appropriate -->
+
+ <variablelist>
+ <varlistentry>
+ <term> <guilabel>Default Text Style</guilabel></term>
+ <listitem>
+ <para>
+ Select the default text style for statements in your
+ proof. You can still change the style for individual
+ proofs or sections of a proof at a later date.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>(Configuration Item Label)</term>
+ <listitem>
+ <para>
+ (Description of Configuration)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>(Configuration Item Label)</term>
+ <listitem>
+ <para>
+ (Description of Configuration)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ The properties in the <guilabel>SECONDTABNAME</guilabel> tab are:
+ <variablelist>
+ <varlistentry>
+ <term>(Configuration Item Label)</term>
+ <listitem>
+ <para>
+ (Description of Configuration)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>(Configuration Item Label)</term>
+ <listitem>
+ <para>
+ (Description of Configuration)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ After you have made all the changes you want, click on
+ <guibutton>OK</guibutton> to apply the changes and close the
+ <interface>Properties</interface> dialog. To cancel the changes
+ and return to previous values, click the
+ <guibutton>Close</guibutton> button.
+ </para>
+
+ </sect1>
+
+
+ <!-- ============= Various Sections ============================= -->
+
+ <!-- Here you should add, if necessary, several more sect1's,
+ describing other windows (besides the main one), file formats,
+ preferences dialogs, etc. as appropriate. Try not to make any of
+ these sections too long. -->
+
+
+ <!-- ============= Bugs ================================== -->
+ <!-- This section should describe known bugs and limitations of
+ the program if there are any - please be frank and list all
+ problems you know of. -->
+ <sect1 id="bugs">
+ <title>Known Bugs and Limitations</title>
+ <para>
+ This application has no known bugs.
+ </para>
+ </sect1>
+
+
+<!-- ============= Authors ================================ -->
+
+ <sect1 id="authors">
+ <title>Authors</title>
+ <para>
+ <application>MY-GNOME-APP</application> was written by GNOME-HACKER
+ (<email>hacker@gnome.org</email>). To find more information about
+ <application>MY-GNOME-APP</application>, please visit the <ulink
+ url="http://www.my-gnome-app.org" type="http">MY-GNOME-APP Web
+ page</ulink>. Please send all comments, suggestions, and bug
+ reports to the <ulink url="http://bugs.gnome.org" type="http">GNOME
+ bug tracking database</ulink>. (Instructions for submitting bug
+ reports can be found <ulink
+ url="http://bugs.gnome.org/Reporting.html" type="http">
+ on-line</ulink>.) You can also use <application>Bug Report
+ Tool</application> (<command>bug-buddy</command>), available in the
+ <guisubmenu>Utilities</guisubmenu> submenu of <guimenu>Main
+ Menu</guimenu>, for submitting bug reports.
+ </para>
+
+ <para>
+ This manual was written by ME
+ (<email>MYNAME@MYADDRESS</email>). Please send all comments and
+ suggestions regarding this manual to the <ulink type="http"
+ url="http://developer.gnome.org/projects/gdp">GNOME Documentation
+ Project</ulink> by sending an email to
+ <email>docs@gnome.org</email>. You can also add your comments online
+ by using the <ulink type="http"
+ url="http://www.gnome.org/gdp/doctable/">GNOME Documentation Status
+ Table</ulink>.
+ </para>
+
+ <!-- For translations: uncomment this:
+
+ <para>
+ Latin translation was done by ME
+ (<email>MYNAME@MYADDRESS</email>). Please send all comments and
+ suggestions regarding this translation to SOMEWHERE.
+ </para>
+
+ -->
+
+ </sect1>
+
+
+ <!-- ============= Application License ============================= -->
+
+ <sect1 id="license">
+ <title>License</title>
+ <para>
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the <citetitle>GNU General Public
+ License</citetitle> as published by the Free Software Foundation;
+ either version 2 of the License, or (at your option) any later
+ version.
+ </para>
+ <para>
+ 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
+ <citetitle>GNU General Public License</citetitle> for more details.
+ </para>
+ <para>
+ A copy of the <citetitle>GNU General Public License</citetitle> is
+ included as an appendix to the <citetitle>GNOME Users
+ Guide</citetitle>. You may also obtain a copy of the
+ <citetitle>GNU General Public License</citetitle> from the Free
+ Software Foundation by visiting <ulink type="http"
+ url="http://www.fsf.org">their Web site</ulink> or by writing to
+ <address>
+ Free Software Foundation, Inc.
+ <street>59 Temple Place</street> - Suite 330
+ <city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>
+ <country>USA</country>
+ </address>
+ </para>
+ </sect1>
+</article>
+
+
+
+
+
+
+
+
+
+]]>
+
+
+</programlisting>
+ </para>
+ </sect1>
+
+<!-- ####### Document Templates | Templates 2-1.x: Applet Manual ####### -->
+
+ <sect1 id="template2-1x">
+ <title>Template 2: Applet Manual For GNOME 1.x</title>
+ <para>
+ The following templates should be used for all applet
+ manuals in GNOME 1.x releases. You can always get the latest
+ copy of these templates from <ulink type="http"
+ url="http://developer.gnome.org/projects/gdp/templates.html">GDP
+ Documentation Templates</ulink>. Note that the template
+ consists of two files; the first file calls the second as an
+ entity. You should name the first file
+ <filename><replaceable>appletname</replaceable>-applet.sgml</filename>
+ and the second file should be named
+ <filename><replaceable>appletname</replaceable>.sgml</filename>,
+ where
+ <filename><replaceable>appletname</replaceable></filename> is
+ the name of the applet.
+ <programlisting>
+
+<![CDATA[
+<!DOCTYPE Article PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN"[
+ <!entity APPLETNAME.sgml SYSTEM "applet_template_1.sgml">
+ <!-- Template Version: 1.0.1 (do not remove this line) -->
+]>
+
+<!-- This is a GNOME documentation template, designed by the GNOME
+ Documentation Project Team. Please use it for writing GNOME
+ documentation, making obvious changes. In particular, all the words
+ written in UPPERCASE (with the exception of GNOME) should be
+ replaced. As for "legalnotice", please leave the reference
+ unchanged,make sure to add/remove trademarks to the list as
+ appropriate for your document.
+
+ Please don't forget to remove these comments in your final documentation,
+ thanks ;-).
+-->
+
+<article id="index"> <!-- please do not change the id -->
+
+ <!-- ============= Document Header ============================= -->
+ <artheader>
+ <title>APPLETNAME Applet</title>
+ <copyright>
+ <year>2000</year>
+ <holder>YOURFULLNAME</holder>
+ </copyright>
+
+ <!-- translators: uncomment this:
+
+ <copyright>
+ <year>2000</year>
+ <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+ </copyright>
+
+ -->
+
+ <!-- do not put authorname in the header except in copyright - use
+ section "authors" below -->
+
+ <legalnotice>
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the <citetitle>GNU Free Documentation
+ License</citetitle>, Version 1.1 or any later version published
+ by the Free Software Foundation with no Invariant Sections, no
+ Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy
+ of the <citetitle>GNU Free Documentation License</citetitle> from
+ the Free Software Foundation by visiting <ulink type="http"
+ url="http://www.fsf.org">their Web site</ulink> or by writing to:
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+ </para>
+ <para>
+ Many of the names used by companies to distinguish their products and
+ services are claimed as trademarks. Where those names appear in any
+ GNOME documentation, and those trademarks are made aware to the members
+ of the GNOME Documentation Project, the names have been printed in caps
+ or initial caps.
+ </para>
+ </legalnotice>
+
+ <releaseinfo>
+ This is version XXX of the APPLETNAME applet manual.
+ </releaseinfo>
+ </artheader>
+
+ <!-- ============= Document Body ============================= -->
+
+ &APPLETNAME.sgml;
+
+</article>
+
+
+]]>
+
+
+</programlisting>
+ <programlisting>
+<![CDATA[
+ <!-- Template Version: 1.0.1 (do not remove this line) -->
+
+ <sect1 id="APPLET">
+ <title>APPLET Applet</title>
+
+ <para>
+ <application>APPLET</application> applet, shown in <xref
+ linkend="APPLETapplet-fig">, allows you to &hellip;. To add this
+ applet to a <interface>Panel</interface>,
+ right-click on the <interface>Panel</interface> and choose
+ <menuchoice>
+ <guimenu>Panel</guimenu>
+ <guisubmenu>Add to panel</guisubmenu>
+ <guisubmenu>Applet</guisubmenu>
+ <guisubmenu>SECTION</guisubmenu>
+ <guimenuitem>APPLET</guimenuitem>
+ </menuchoice>.
+ </para>
+
+ <figure id="APPLETapplet-fig">
+ <title>APPLET Applet</title>
+ <screenshot>
+ <screeninfo>APPLET Applet</screeninfo>
+ <graphic format="png" fileref="APPLET_applet"
+ srccredit="YOURNAME">
+ </graphic>
+ </screenshot>
+ </figure>
+
+ <!-- ============= Usage ================================ -->
+ <sect2 id="APPLET-usage">
+ <title>Usage</title>
+ <para>
+ (Place a short description of how to use the applet here.)
+ </para>
+
+ <para>
+ Right-clicking on the applet brings up a menu containing the
+ following items:
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <guimenuitem>Properties&hellip;</guimenuitem> &mdash;
+ opens the <link linkend="APPLET-prefs">
+ <guilabel>Properties</guilabel></link> dialog.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <guimenuitem>Help</guimenuitem> &mdash;
+ displays this document.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <guimenuitem>About&hellip;</guimenuitem> &mdash;
+ shows basic information about <application>APPLET
+ Applet</application>, including the applet's version and the
+ author's name.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+ </sect2>
+
+
+ <!-- ============= Customization ============================= -->
+ <sect2 id="APPLET-prefs">
+ <title>Customization</title>
+ <para>
+ You can customize <application>APPLET</application>
+ applet by right-clicking on it and choosing
+ <guimenuitem>Properties&hellip;</guimenuitem>. This will open the
+ <interface>Properties</interface> dialog(shown in <xref
+ linkend="APPLET-settings-fig">), which allows you to
+ change various settings.
+ </para>
+
+ <figure id="APPLET-settings-fig">
+ <title>Properties dialog</title>
+ <screenshot>
+ <screeninfo>Properties dialog</screeninfo>
+ <graphic format="png" fileref="APPLET_settings"
+ srccredit="YOURNAME">
+ </graphic>
+ </screenshot>
+ </figure>
+
+ <para>
+ The properties are:
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ (Configuration Item Label) &mdash; If this button is
+ checked&hellip;(description)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Configuration Item Label) &mdash; Selecting this
+ button&hellip;(description)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Configuration Item Label) &mdash; Enter the name of
+ &hellip;(description)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ After you have made all the changes you want, click on
+ <guibutton>OK</guibutton> to apply the changes and close the
+ <interface>Properties</interface> dialog. To cancel the changes
+ and return to previous values, click the
+ <guibutton>Close</guibutton> button.
+ </para>
+ </sect2>
+
+
+ <!-- ============= Bugs ================================== -->
+ <!-- This section should describe known bugs and limitations of
+ the program if there are any - please be frank and list all
+ problems you know of -->
+ <sect2 id="bugs">
+ <title>Known Bugs and Limitations</title>
+ <para>
+ This applet has no known bugs.
+ </para>
+ </sect2>
+
+
+ <!-- ============= Authors ================================ -->
+
+ <sect2 id="authors">
+ <title>Authors</title>
+ <para>
+ <application>APPLET</application> was written by GNOME-HACKER
+ (<email>hacker@gnome.org</email>). Please send all comments,
+ suggestions, and bug
+ reports to the <ulink url="http://bugs.gnome.org" type="http">GNOME
+ bug tracking database</ulink>. (Instructions for submitting bug
+ reports can be found <ulink
+ url="http://bugs.gnome.org/Reporting.html" type="http">
+ on-line</ulink>. You can also use <application>Bug Report
+ Tool</application> (<command>bug-buddy</command>), available in the
+ <guisubmenu>Utilities</guisubmenu> submenu of <guimenu>Main
+ Menu</guimenu>, for submitting bug reports.
+ </para>
+
+ <para>
+ This manual was written by ME
+ (<email>MYNAME@MYADDRESS</email>). Please send all comments and
+ suggestions regarding this manual to the <ulink type="http"
+ url="http://developer.gnome.org/projects/gdp">GNOME Documentation
+ Project</ulink> by sending an email to
+ <email>docs@gnome.org</email>. You can also submit comments online
+ by using the <ulink type="http"
+ url="http://www.gnome.org/gdp/doctable/">GNOME Documentation
+ Status Table</ulink>.
+ </para>
+
+ <!-- For translations: uncomment this:
+
+ <para>
+ Latin translation was done by ME
+ (<email>MYNAME@MYADDRESS</email>). Please send all comments and
+ suggestions regarding this translation to SOMEWHERE.
+ </para>
+
+ -->
+
+ </sect2>
+
+
+ <!-- ============= Application License ============================= -->
+
+ <sect2 id="license">
+ <title>License</title>
+ <para>
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the <citetitle>GNU General Public
+ License</citetitle> as published by the Free Software Foundation;
+ either version 2 of the License, or (at your option) any later
+ version.
+ </para>
+ <para>
+ 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
+ <citetitle>GNU General Public License</citetitle> for more details.
+ </para>
+ <para>
+ A copy of the <citetitle>GNU General Public License</citetitle> is
+ included as an appendix to the <citetitle>GNOME Users
+ Guide</citetitle>. You may also obtain a copy of the
+ <citetitle>GNU General Public License</citetitle> from the Free
+ Software Foundation by visiting <ulink type="http"
+ url="http://www.fsf.org">their Web site</ulink> or by writing to
+ <address>
+ Free Software Foundation, Inc.
+ <street>59 Temple Place</street> - Suite 330
+ <city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>
+ <country>USA</country>
+ </address>
+ </para>
+ </sect2>
+
+ </sect1>
+
+
+
+
+]]>
+
+
+
+</programlisting>
+ </para>
+ </sect1>
+
+<!-- ####### Document Templates | Templates 2-2.x: Applet Manual ####### -->
+
+ <sect1 id="template2-2x">
+ <title>Template 2: Applet Manual For GNOME 2.x</title>
+ <para>
+ The following templates should be used for all applet
+ manuals in GNOME 2.x releases. You can always get the latest
+ copy of these templates from <ulink type="http"
+ url="http://developer.gnome.org/projects/gdp/templates.html">GDP
+ Documentation Templates</ulink>.
+ </para>
+ <para>
+ Note that this template consists of two files. The first file
+ is an introductory chapter. You should not modify this
+ chapter. The second file is the actual applet document, which
+ you should modify to describe the applet you are documenting.
+ You can name the first file whatever you like, such as
+ <filename>gnome-applets.sgml</filename>. Name the second file
+ according to the applet's name:
+ <filename><replaceable>appletname</replaceable>-applet.sgml</filename>.
+ Make sure you update the entity
+ at the top of the shell document to reflect the new name of
+ the applet document.
+ </para>
+ <para>
+ <programlisting>
+<![CDATA[
+<!DOCTYPE book PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN"[
+<!ENTITY TEMPLATE-APPLET SYSTEM "gnome-applet-template.sgml.part">
+
+]>
+
+<book id="gnome-applets">
+
+ <bookinfo>
+ <title>GNOME Applets</title>
+ <authorgroup>
+ <author><firstname>Telsa</firstname><surname>Gwynne</surname></author>
+ <author><firstname>John</firstname><surname>Fleck</surname></author>
+ <author><firstname>David</firstname><surname>Mason</surname>
+ <affiliation><orgname>Red Hat, Inc.</orgname></affiliation>
+ </author>
+ <author><firstname>Dan</firstname><surname>Mueth</surname></author>
+ <author><firstname>Alexander</firstname><surname>Kirillov</surname></author>
+ </authorgroup>
+ <edition>GNOME Applets version 0.1 for GNOME 1.1.5</edition>
+ <pubdate>2000</pubdate>
+ <copyright>
+ <year>2000</year>
+ <holder>Telsa Gwynne, John Fleck, Red Hat Inc., Dan Mueth, and
+ Alexander Kirillov</holder>
+ </copyright>
+ <legalnotice>
+ <para>
+ Permission is granted to make and distribute verbatim copies of this
+ manual provided the copyright notice and this permission notice are
+ preserved on all copies.
+ </para>
+ <para>
+ Permission is granted to copy and distribute modified versions of
+ this manual under the conditions for verbatim copying, provided that
+ the entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.
+ </para>
+ <para>
+ Permission is granted to copy and distribute translations of this
+ manual into another language, under the above conditions for modified
+ versions, except that this permission notice may be stated in a
+ translation approved by the Free Software Foundation.
+ </para>
+ <para>
+ Many of the names used by companies to distinguish their products and
+ services are claimed as trademarks. Where those names appear in any
+ GNOME documentation, and those trademarks are made aware to the members
+ of the GNOME Documentation Project, the names have been printed in caps
+ or initial caps.
+ </para>
+ </legalnotice>
+ </bookinfo>
+
+ <!-- #### Introduction ###### -->
+ <chapter id="applets-intro">
+ <title>Introduction</title>
+
+ <!-- #### Intro | What Are Applets? ###### -->
+ <sect1 id="applets-what-are">
+ <title>What Are Applets?</title>
+ <para>
+ Applets are one of the most popular and useful objects you can add
+ to your <interface>Panel</interface> to customize your desktop.
+ An applet is a small application which runs inside a small area of
+ your <interface>Panel</interface>. Applets have been written for
+ a wide range of purposes. Some are very powerful interactive
+ tools, such as the <application>Tasklist</application> Applet
+ which allows you to easily
+ control all of your main applications. Others are simple system
+ monitors, displaying information such as the amount of power left
+ in the battery on your laptop (see <application>Battery Charge
+ Monitor</application>) or weather
+ information(see <application>GNOME Weather</application>). Some
+ are simply for amusement(see <application>Fish</application>).
+ </para>
+
+ <para>
+ Applets are similar to swallowed applications in that both of them
+ reside within the <interface>Panel</interface>. However,
+ swallowed applications are generally applications which were
+ not designed to run within the <interface>Panel</interface>.
+ Typically one will swallow an application which already exists in
+ the main <interface>desktop</interface> area, putting it into your
+ <interface>Panel</interface>. The application will continue to
+ run in the <interface>Panel</interface> until you end the
+ application or unswallow it, placing it back onto the main part of
+ your desktop when you need to.
+ </para>
+
+ <para>
+ <figure id="example-applets-fig">
+ <title>Example Applets</title>
+ <screenshot>
+ <screeninfo>Example Applets</screeninfo>
+ <graphic fileref="example_applets" format="png"
+ srccredit="muet">
+ </graphic>
+ </screenshot>
+ </figure>
+ Several example applets are shown in <xref
+ linkend="example-applets-fig">. From left to right, they are: (1)
+ <application>Mixer Applet</application>, which allows you to turn
+ on/off sound and control its volume by clicking on the applet. (2)
+ <application>Sound Monitor</application> Applet, which displays
+ the current volume of sound being played and allows you to control
+ various sound features. (3) <application>GTCD</application>
+ Applet, a CD player which has all its controls
+ available in the applet and displays the track and time. (4)
+ <application>Drive Mount</application> Applet, used to mount and
+ unmount drives with a single click of the mouse. (5)
+ <application>Desk Guide</application> which allows you to view
+ and control multiple virtual screens. (6)
+ <application>Tasklist</application> Applet which allows you to
+ control your various windows and applications.
+ </para>
+ <para>
+ There are many other applets to choose from. The rest of this
+ chapter will explain the basic information to get you started
+ adding, moving, and removing applets from your
+ <interface>Panels</interface> and using them. The following
+ chapters go through each of the standard GNOME applets describing
+ them in detail. There are also additional applets which can be
+ downloaded off the Web. See <ulink type="http"
+ url="http://www.gnome.org/applist/list-martin.phtml">The GNOME
+ Software Map</ulink> for lists of additional GNOME applications
+ and applets.
+ </para>
+ <para>
+ As you read through the the rest of this chapter, you should try
+ adding and removing applets from your <interface>Panel</interface> and
+ experiment with them freely.
+ </para>
+ </sect1>
+
+ <!-- #### Intro | Adding, Moving, and Removing Applets ###### -->
+ <sect1 id="applet-add-move-replace">
+ <title>Adding, Moving, and Removing Applets</title>
+
+ <sect2 id="adding-applets">
+ <title>Adding Applets to a Panel</title>
+ <para>
+ To add an applet to a <interface>Panel</interface>, right-click
+ on the <interface>Panel</interface> and select
+ <menuchoice><guimenu>Panel</guimenu><guisubmenu>Add to panel</guisubmenu>
+ <guisubmenu>Applet</guisubmenu></menuchoice>. This will show you
+ the menu of all the applets on your system, divided into
+ categories. Choosing any applet from this menu will add it to the
+ <interface>Panel</interface>.
+ </para>
+ </sect2>
+
+ <sect2 id="moving-applets">
+ <title>Moving Applets In or Between Panels</title>
+ <para>
+ It is easy to move applets in a <interface>Panel</interface> or
+ between two <interface>Panels</interface>. If you have a
+ three-button mouse, just move the mouse over the applet, depress
+ the middle mouse button and drag the applet to its new location,
+ releasing the middle mouse button when you are finished. Note
+ that you can drag applets within a <interface>Panel</interface>
+ or between two <interface>Panels</interface> this way. If you
+ don't have a three-button mouse, just
+ right-click on the applet and choose
+ <guimenuitem>Move</guimenuitem>. The cursor will turn into a
+ cross and the applet will move with your mouse until you press
+ any mouse button to indicate you are finished moving it.
+ If, in the course of this movement, it hits
+ other objects, the behavior depends on the global preferences
+ you have set for your <interface>Panels</interface> in the
+ <application>GNOME Control Center</application>: the applet you are
+ moving can switch places with other objects, "push" all objects
+ it meets, or "jump" over all other objects without disturbing
+ them. You can also override the default behavior by holding
+ <keycap>Shift</keycap> button (for "push" mode),
+ <keycap>Ctrl</keycap> (for "switched" mode), or
+ <keycap>Alt</keycap> (for "free" mode, i.e. jumping other other
+ objects without disturbing them) button while dragging.
+ </para>
+ <para>
+ To change the global Panel preferences, right-click on any applet
+ or <interface>Panel</interface> and select
+ <menuchoice>
+ <guimenu>Panel</guimenu>
+ <guimenuitem>Global Preferences...</guimenuitem>
+ </menuchoice>.
+ The <guilabel>Default movement mode</guilabel> is set under the
+ <guilabel>Applets</guilabel> tab.
+ </para>
+ </sect2>
+
+ <sect2 id="removing-applets">
+ <title>Removing Applets from a Panel</title>
+ <para>
+ To remove an applet from a <interface>Panel</interface>,
+ right-click on the applet and select <guimenuitem>Remove from
+ panel...</guimenuitem>.
+ </para>
+ </sect2>
+ </sect1>
+
+
+ <!-- #### Intro | The Right-Click Pop-Up Menu ###### -->
+ <sect1 id="right-click-pop-up-menu">
+ <title>The Right-Click Pop-Up Menu</title>
+ <para>
+ Clicking the right mouse button on any applet brings up
+ a <guimenu>pop-up menu</guimenu>. This
+ menu always has certain standard menu items in it and
+ often has additional items which vary depending on the particular
+ applet.
+ </para>
+ <sect2 id="standard-right-click-items">
+ <title>Standard Pop-Up Items</title>
+ <para>
+ All applets should have the following items in their right-click
+ <guimenu>pop-up menu</guimenu>:
+ <variablelist>
+ <varlistentry>
+ <term>Remove from panel</term>
+ <listitem>
+ <para>
+ The <guimenuitem>Remove from panel</guimenuitem> menu item
+ removes the applet from the <interface>Panel</interface>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Move</term>
+ <listitem>
+ <para>
+ After selecting <guimenuitem>Move</guimenuitem>, your mouse
+ pointer will change appearance (typically to a cross with
+ arrows in each direction). As you move your mouse, the applet
+ will move with it. When you have finished moving the applet,
+ click any mouse button and the applet will anchor in its
+ current position. Note that applets can be moved between two
+ <interface>Panels</interface> this way.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Panel</term>
+ <listitem>
+ <para>
+ The <guisubmenu>Panel</guisubmenu> submenu contains various
+ items and submenus for adding and removing
+ <interface>Panels</interface> and applets and for changing
+ the configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>About</term>
+ <listitem>
+ <para>
+ The <guimenuitem>About...</guimenuitem> menu item brings up a
+ dialogue box containing various information about the applet,
+ typically including the applet's name, version, author,
+ copyright, license and desciption.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Help</term>
+ <listitem>
+ <para>
+ The <guimenuitem>Help</guimenuitem> menu item brings up the help
+ manual for the applet.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect2>
+
+ <sect2 id="applet-properties-dialog">
+ <title>The Applet Properties Dialog</title>
+ <para>
+ Many applets have customizable properties. These applets will
+ have a <guimenuitem>Properties...</guimenuitem> menu item in their
+ right-click <guimenu>pop-up menu</guimenu> which brings up the
+ <interface>Properties</interface> dialog where you can alter the
+ appearance or behaviour of the applet.
+ <figure id="example-props-dialog-fig">
+ <title>An Example Applet Properties Dialog</title>
+ <screenshot>
+ <screeninfo>An Example Applets Properties Dialog</screeninfo>
+ <graphic fileref="applet_props_dialog" format="png"
+ srccredit="muet">
+ </graphic>
+ </screenshot>
+ </figure>
+ All <interface>Properties</interface> dialogs have the following
+ buttons at the bottom of the dialog:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <guibutton>OK</guibutton> &mdash;
+ Pressing <guibutton>OK</guibutton> will activate any changes
+ in the properties you have made and close the
+ <interface>Properties</interface> dialog.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guibutton>Apply</guibutton> &mdash;
+ Pressing <guibutton>Apply</guibutton> at any time will
+ make your changes active without closing the
+ <interface>Properties</interface> dialog. This is helpful if
+ you would like to test the effects of the changes you have
+ made but may want to continue changing the properties.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guibutton>Close</guibutton> &mdash;
+ Pressing <guibutton>Close</guibutton> will close the
+ <interface>Properties</interface> dialog. Only changes in the
+ configuration which were previously applied with the
+ <guibutton>Apply</guibutton> button will persist. Other
+ changes will not be made active.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guibutton>Help</guibutton> &mdash;
+ Pressing <guibutton>Help</guibutton> brings up the manual for
+ the application, opening it to the page describing the
+ <interface>Properties</interface> dialog.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2 id="common-right-click-items">
+ <title>Other Common Pop-Up Items</title>
+ <para>
+ Many applets also have one or more of the following items in their
+ right-click pop-up menu:
+ <variablelist>
+ <varlistentry>
+ <term>Run...</term>
+ <listitem>
+ <para>
+ The <guimenuitem>Run...</guimenuitem> menu item generally
+ invokes a program which is related to the applet in some way
+ but which runs in its own window rather than in the
+ panel. For example:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ The <application>CPU Load</application> applet, which monitors
+ what programs are running, has a <guimenuitem>Run
+ gtop...</guimenuitem> menu item. Selecting this menu item
+ starts <application>GTop</application>, which allows you to
+ view and control programs which are running.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <application>CD Player</application> applet has a
+ <guimenuitem>Run gtcd...</guimenuitem> menu item which
+ starts the GNOME <application>CD Player</application> when
+ selected, which has more capabilities than the applet.
+ </para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="feedback">
+ <title>Feedback</title>
+ <sect2 id="reporting-bugs">
+ <title>Reporting Applet Bugs</title>
+ <para>
+ GNOME users are encouraged to report bugs to <ulink type="http"
+ url="http://bugs.gnome.org">The GNOME Bug Tracking
+ System</ulink>. The easiest way to submit bugs is to use the
+ <application>Bug Report Tool</application> program by selecting
+ <menuchoice>
+ <guimenu>Main Menu</guimenu> <guisubmenu>Utilities</guisubmenu>
+ <guimenuitem>Bug Report Tool</guimenuitem>
+ </menuchoice>.
+ Be sure to be complete in describing what you did to cause the
+ bug to surface and, if possible, describe how the developer can
+ reproduce the the scenario.
+ </para>
+ </sect2>
+ <sect2 id="documentation-feedback">
+ <title>Providing Feedback</title>
+ <para>
+ GNOME users are welcome to provide suggestions for how
+ applications and documentation can be improved. Suggestions for
+ application changes should be submitted using the
+ <application>Bug Report Tool</application> discussed above.
+ Suggestions for documentation changes can be emailed directly to
+ the documentation author (whose email should be included in the
+ "Authors" section of the document) or by sending an email to
+ <email>docs@gnome.org</email>.
+ </para>
+ </sect2>
+ <sect2 id="joining-gnome">
+ <title>Joining GNOME</title>
+ <para>
+ GNOME is a community project, created by hundreds of programmers,
+ documentation writers, icon design artists, web masters, and
+ other people, most of whom work on a volunteer basis. New GNOME
+ contributors are always welcome. To join the GNOME team, visit
+ these web sites: developers &mdash; <ulink type="http"
+ url="http://developer.gnome.org">The GNOME Development
+ Site</ulink>, documentation writers &mdash; <ulink type="http"
+ url="http://developer.gnome.org/projects/gdp">The GNOME Documentation
+ Project</ulink>, icon design artists &mdash; <ulink type="http"
+ url="http://gnome-icons.sourceforge.net/">Gnome Icon Web</ulink>,
+ general &mdash; <ulink type="http"
+ url="http://developer.gnome.org/helping/">Helping GNOME</ulink>,
+ or just join the gnome-list email list (see <ulink type="http"
+ url="http://www.gnome.org/resources/mailing-lists.html">GNOME Mailing
+ Lists</ulink>) to discuss what you are interested in doing.
+ </para>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <!-- ############### Template Applets ##################### -->
+ <chapter id="template-applets">
+ <title>Template Applets</title>
+
+ &TEMPLATE-APPLET
+
+ </chapter>
+
+</book>
+
+
+
+
+
+
+
+]]>
+ </programlisting>
+
+ <programlisting>
+<![CDATA[
+
+ <!-- Please replace everywhere below GNOMEAPPLET with the name of -->
+ <!-- your applet. Most importantly, all id attributes should start -->
+ <!-- with the name of your applet - this is necessary to avoid name -->
+ <!-- conflict among different applets -->
+ <!-- Please replace YOUR-NAME with your name and YOUR-EMAIL with your email-->
+ <!-- Please replace HACKER-NAME with the applet author's name and -->
+ <!-- HACKER-EMAIL with the applet author's email -->
+
+ <!-- You should name your file: GNOMEAPPLET-applet.sgml -->
+ <!-- Screenshots should be in PNG format and placed in the -->
+ <!-- same directory as GNOMEAPPLET-applet.sgml -->
+
+ <!-- Applet docs will be merged into <chapter>'s inside a -->
+ <!-- <book>. Thus, the indentation below (2 spaces before the <sect1>) is -->
+ <!-- correct.-->
+
+ <!-- Permission is granted to make and distribute verbatim copies of -->
+ <!-- this manual provided the copyright notice and this permission -->
+ <!-- notice are preserved on all copies. -->
+ <!-- -->
+ <!-- Permission is granted to copy and distribute modified versions of -->
+ <!-- this manual under the conditions for verbatim copying, provided -->
+ <!-- that the entire resulting derived work is distributed under the -->
+ <!-- terms of a permission notice identical to this one. -->
+ <!-- -->
+ <!-- Permission is granted to copy and distribute translations of this -->
+ <!-- manual into another language, under the above conditions for -->
+ <!-- modified versions, except that this permission notice may be -->
+ <!-- stated in a translation approved by the Foundation. -->
+
+ <!-- ############### GNOMEAPPLET ############### -->
+ <sect1 id="GNOMEAPPLET">
+ <title>GNOMEAPPLET Applet</title>
+
+ <para>
+ <application>GNOMEAPPLET</application> applet, shown in <xref
+ linkend="GNOMEAPPLET-fig">, does this and that. To learn how to
+ add this applet to a <interface>Panel</interface>, see <xref
+ linkend="adding-applets">.
+ </para>
+
+
+ <figure id="GNOMEAPPLET-fig">
+ <title>GNOMEAPPLET</title>
+ <screenshot>
+ <screeninfo>GNOMEAPPLET</screeninfo>
+ <graphic format="png" fileref="GNOMEAPPLET-fig" srccredit="ME">
+ </graphic>
+ </screenshot>
+ </figure>
+
+ <sect2 id="GNOMEAPPLET-usage">
+ <title>Usage</title>
+ <para>
+ This applet does nothing. To use it, just
+ left-click on it and it will instantly do nothing.
+ </para>
+ </sect2>
+
+ <sect2 id="GNOMEAPPLET-right-click">
+ <title>Right-Click Pop-Up Menu Items</title>
+ <para>
+ In addition to the standard menu items (see <xref
+ linkend="standard-right-click-items">), the right-click pop-up menu has
+ the following items:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <guimenuitem>Properties...</guimenuitem> &mdash; This menu
+ item opens the <interface>Properties</interface> dialog (see
+ <xref linkend="GNOMEAPPLET-properties">) which allows you to
+ customize the appearance and behavior of this applet.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <guimenuitem>Run Hello World...</guimenuitem> &mdash; This
+ menu item starts the program <application>Hello
+ World</application>, used to say "hello" to the world.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2 id="GNOMEAPPLET-properties">
+ <title>Properties</title>
+ <para>
+ You can configure <application>GNOMEAPPLET</application> applet by
+ right-clicking on the applet and choosing the
+ <guimenuitem>Properties...</guimenuitem> menu item. This will open the
+ <interface>Properties</interface> dialog, shown in <xref
+ linkend="GNOMEAPPLET-properties-fig">.
+ </para>
+ <figure id="GNOMEAPPLET-properties-fig">
+ <title>Properties Dialog</title>
+ <screenshot>
+ <screeninfo>Properties Dialog</screeninfo>
+ <graphic format="png" fileref="GNOMEAPPLET-properties" srccredit="ME">
+ </graphic>
+ </screenshot>
+ </figure>
+
+ <para>
+ To change the color of the applet, click on the
+ <guibutton>color</guibutton> button. To change other properties,
+ click on other buttons.
+ </para>
+
+ <para>
+ For more information on the <interface>Properties</interface>
+ dialog, including descriptions of the <guibutton>OK</guibutton>,
+ <guibutton>Apply</guibutton>, <guibutton>Cancel</guibutton>, and
+ <guibutton>Help</guibutton> buttons, see <xref
+ linkend="applet-properties-dialog">.
+ </para>
+ </sect2>
+
+ <sect2 id="GNOMEAPPLET-bugs">
+ <title> Known Bugs and Limitations</title>
+ <para>
+ There are no known bugs in the
+ <application>GNOMEAPPLET</application> applet.
+ </para>
+ </sect2>
+
+ <sect2 id="GNOMEAPPLET-authors">
+ <title>Authors</title>
+ <para>
+ This applet was writen by HACKER-NAME
+ <email>HACKER-EMAIL</email>. The documentation for this applet
+ which you are reading now was written by
+ YOUR-NAME <email>YOUR-EMAIL</email>. For information on submitting
+ bug reports and suggestions for improvements, see <xref
+ linkend="feedback">.
+ </para>
+ </sect2>
+
+ </sect1>
+
+
+
+
+
+]]>
+
+
+</programlisting>
+ </para>
+ </sect1>
+
+<!-- ####### Document Templates | Templates 3: Application Help #######
+
+ <sect1 id="template3">
+ <title>Template 2: Application Help</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]> </programlisting>
+ </sect1>
+
+####### Document Templates | Templates 4: Application Context Sensitive Help #######
+
+ <sect1 id="template4">
+ <title>Template 3: Application Context Sensitive Help</title>
+ <para>
+ Context sensitive help is still in development.
+ </para>
+ </sect1>
+
+####### Document Templates | Templates 5: Complete Application: gnome-hello #######
+
+ <sect1 id="template5">
+ <title>Template 4: Complete Application: gnome-hello</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]>
+ </programlisting>
+ </sect1>
+
+####### Document Templates | Templates 6: Tutorial #######
+
+ <sect1 id="template6">
+ <title>Template 5: Tutorial</title>
+ <programlisting>
+<![CDATA[(Put sgml here.)]]>
+ </programlisting>
+ </sect1>-->
+ </appendix>
+
+</article>
diff --git a/test/relaxng/empty0.rng b/test/relaxng/empty0.rng
new file mode 100644
index 0000000..dbe4f5e
--- /dev/null
+++ b/test/relaxng/empty0.rng
@@ -0,0 +1,16 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="top"/>
+ </start>
+ <define name="empty">
+ <empty/>
+ </define>
+ <define name="top">
+ <element name="top">
+ <ref name="empty"/>
+ <element name="a">
+ <text/>
+ </element>
+ </element>
+ </define>
+</grammar>
diff --git a/test/relaxng/empty0_0.xml b/test/relaxng/empty0_0.xml
new file mode 100644
index 0000000..32b42bc
--- /dev/null
+++ b/test/relaxng/empty0_0.xml
@@ -0,0 +1,3 @@
+<top>
+ <a/>
+</top>
diff --git a/test/relaxng/empty1.rng b/test/relaxng/empty1.rng
new file mode 100644
index 0000000..45dceff
--- /dev/null
+++ b/test/relaxng/empty1.rng
@@ -0,0 +1,18 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="top"/>
+ </start>
+ <define name="empty">
+ <empty/>
+ </define>
+ <define name="top">
+ <element name="top">
+ <choice>
+ <ref name="empty"/>
+ <element name="a">
+ <text/>
+ </element>
+ </choice>
+ </element>
+ </define>
+</grammar>
diff --git a/test/relaxng/empty1_0.xml b/test/relaxng/empty1_0.xml
new file mode 100644
index 0000000..32b42bc
--- /dev/null
+++ b/test/relaxng/empty1_0.xml
@@ -0,0 +1,3 @@
+<top>
+ <a/>
+</top>
diff --git a/test/relaxng/empty1_1.xml b/test/relaxng/empty1_1.xml
new file mode 100644
index 0000000..a5a04a7
--- /dev/null
+++ b/test/relaxng/empty1_1.xml
@@ -0,0 +1,2 @@
+<top>
+</top>
diff --git a/test/relaxng/inline.rng b/test/relaxng/inline.rng
new file mode 100644
index 0000000..7b40959
--- /dev/null
+++ b/test/relaxng/inline.rng
@@ -0,0 +1,20 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="inline"/>
+ </start>
+
+ <define name="inline">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ <!-- etc -->
+ </choice>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/test/relaxng/inline2.rng b/test/relaxng/inline2.rng
new file mode 100644
index 0000000..088dc2b
--- /dev/null
+++ b/test/relaxng/inline2.rng
@@ -0,0 +1,21 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <define name="inline">
+ <zeroOrMore>
+ <ref name="inline.class"/>
+ </zeroOrMore>
+ </define>
+
+ <define name="inline.class">
+ <choice>
+ <text/>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/inline3.rng b/test/relaxng/inline3.rng
new file mode 100644
index 0000000..72f9db6
--- /dev/null
+++ b/test/relaxng/inline3.rng
@@ -0,0 +1,22 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <define name="inline">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ <ref name="inline.extra"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+
+ <define name="inline.extra">
+ <notAllowed/>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/interleave0_0.rng b/test/relaxng/interleave0_0.rng
new file mode 100644
index 0000000..b105549
--- /dev/null
+++ b/test/relaxng/interleave0_0.rng
@@ -0,0 +1,24 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <interleave>
+ <zeroOrMore>
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="company">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/interleave1_0.rng b/test/relaxng/interleave1_0.rng
new file mode 100644
index 0000000..e8e94d0
--- /dev/null
+++ b/test/relaxng/interleave1_0.rng
@@ -0,0 +1,15 @@
+<element name="doc" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="a">
+ <empty/>
+ </element>
+ <zeroOrMore>
+ <element name="b">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ </interleave>
+ <element name="c">
+ <empty/>
+ </element>
+</element>
diff --git a/test/relaxng/libvirt.rng b/test/relaxng/libvirt.rng
new file mode 100644
index 0000000..c1f586e
--- /dev/null
+++ b/test/relaxng/libvirt.rng
@@ -0,0 +1,1258 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- We handle only document defining a domain -->
+ <start>
+ <ref name="domain"/>
+ </start>
+
+ <!--
+ We handle only document defining a domain
+ -->
+ <define name="domain">
+ <element name="domain">
+ <ref name="hvs"/>
+ <ref name="ids"/>
+ <interleave>
+ <ref name="os"/>
+ <ref name="clock"/>
+ <ref name="resources"/>
+ <ref name="features"/>
+ <ref name="termination"/>
+ <optional>
+ <ref name="devices"/>
+ </optional>
+ <optional>
+ <ref name="seclabel"/>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+ <define name="seclabel">
+ <element name="seclabel">
+ <attribute name="model">
+ <text/>
+ </attribute>
+ <attribute name="type">
+ <choice>
+ <value>dynamic</value>
+ <value>static</value>
+ </choice>
+ </attribute>
+ <element name="label">
+ <text/>
+ </element>
+ </element>
+ </define>
+ <define name="hvs">
+ <attribute name="type">
+ <choice>
+ <value>xen</value>
+ <value>kvm</value>
+ <value>kqemu</value>
+ <value>qemu</value>
+ <value>lxc</value>
+ <value>openvz</value>
+ <value>test</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="os">
+ <choice>
+ <ref name="osxen"/>
+ <ref name="oshvm"/>
+ <ref name="osexe"/>
+ </choice>
+ </define>
+ <define name="osxen">
+ <choice>
+ <group>
+ <optional>
+ <ref name="bootloader"/>
+ </optional>
+ <element name="os">
+ <ref name="ostypexen"/>
+ <ref name="osbootkernel"/>
+ </element>
+ </group>
+ <group>
+ <ref name="bootloader"/>
+ <optional>
+ <element name="os">
+ <ref name="ostypexen"/>
+ <optional>
+ <ref name="osbootkernel"/>
+ </optional>
+ </element>
+ </optional>
+ </group>
+ </choice>
+ </define>
+ <define name="oshvm">
+ <element name="os">
+ <ref name="ostypehvm"/>
+ <interleave>
+ <optional>
+ <element name="loader">
+ <ref name="absFilePath"/>
+ </element>
+ </optional>
+ <choice>
+ <ref name="osbootkernel"/>
+ <ref name="osbootdev"/>
+ </choice>
+ </interleave>
+ </element>
+ </define>
+ <define name="ostypexen">
+ <element name="type">
+ <optional>
+ <attribute name="arch">
+ <choice>
+ <value>i686</value>
+ <value>x86_64</value>
+ <value>ia64</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="machine">
+ <choice>
+ <value>xenpv</value>
+ <value>xenner</value>
+ </choice>
+ </attribute>
+ </optional>
+ <choice>
+ <value>xen</value>
+ <value>linux</value>
+ </choice>
+ </element>
+ </define>
+ <define name="ostypehvm">
+ <element name="type">
+ <optional>
+ <choice>
+ <ref name="hvmx86"/>
+ <ref name="hvmmips"/>
+ <ref name="hvmsparc"/>
+ <ref name="hvmppc"/>
+ </choice>
+ </optional>
+ <value>hvm</value>
+ </element>
+ </define>
+ <define name="hvmx86">
+ <group>
+ <attribute name="arch">
+ <choice>
+ <value>i686</value>
+ <value>x86_64</value>
+ </choice>
+ </attribute>
+ <attribute name="machine">
+ <choice>
+ <value>xenfv</value>
+ <value>pc</value>
+ <value>isapc</value>
+ </choice>
+ </attribute>
+ </group>
+ </define>
+ <define name="hvmmips">
+ <group>
+ <attribute name="arch">
+ <value>mips</value>
+ </attribute>
+ <attribute name="machine">
+ <value>mips</value>
+ </attribute>
+ </group>
+ </define>
+ <define name="hvmsparc">
+ <group>
+ <attribute name="arch">
+ <value>sparc</value>
+ </attribute>
+ <attribute name="machine">
+ <value>sun4m</value>
+ </attribute>
+ </group>
+ </define>
+ <define name="hvmppc">
+ <group>
+ <attribute name="arch">
+ <value>ppc</value>
+ </attribute>
+ <attribute name="machine">
+ <choice>
+ <value>g3beige</value>
+ <value>mac99</value>
+ <value>prep</value>
+ </choice>
+ </attribute>
+ </group>
+ </define>
+ <define name="osexe">
+ <element name="os">
+ <element name="type">
+ <value>exe</value>
+ </element>
+ <interleave>
+ <optional>
+ <element name="init">
+ <ref name="absFilePath"/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+ <!--
+ The Identifiers can be:
+ - an optional id attribute with a number on the domain element
+ - a mandatory name
+ - an optional uuid
+ -->
+ <define name="ids">
+ <optional>
+ <attribute name="id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <interleave>
+ <element name="name">
+ <ref name="domainName"/>
+ </element>
+ <optional>
+ <element name="uuid">
+ <ref name="UUID"/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <!--
+ Resources usage defines the amount of memory (maximum and possibly
+ current usage) and number of virtual CPUs used by that domain.
+ We can't check here the rule that currentMemory <= memory
+ -->
+ <define name="resources">
+ <interleave>
+ <element name="memory">
+ <ref name="memoryKB"/>
+ </element>
+ <optional>
+ <element name="currentMemory">
+ <ref name="memoryKB"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="memoryBacking">
+ <optional>
+ <element name="hugepages">
+ <empty/>
+ </element>
+ </optional>
+ </element>
+ </optional>
+ <optional>
+ <element name="vcpu">
+ <optional>
+ <attribute name="cpuset"/>
+ </optional>
+ <ref name="countCPU"/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <define name="clock">
+ <optional>
+ <element name="clock">
+ <attribute name="offset">
+ <choice>
+ <value>localtime</value>
+ <value>utc</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ </define>
+ <!--
+ A bootloader may be used to extract the OS information instead of
+ defining the OS parameter in the instance. It points just to the
+ binary or script used to extract the data from the first disk device.
+ -->
+ <define name="bootloader">
+ <interleave>
+ <element name="bootloader">
+ <choice>
+ <ref name="absFilePath"/>
+ <empty/>
+ </choice>
+ </element>
+ <optional>
+ <element name="bootloader_args">
+ <text/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <define name="osbootkernel">
+ <interleave>
+ <element name="kernel">
+ <ref name="absFilePath"/>
+ </element>
+ <optional>
+ <element name="initrd">
+ <ref name="absFilePath"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="root">
+ <ref name="devicePath"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="cmdline">
+ <text/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <define name="osbootdev">
+ <element name="boot">
+ <attribute name="dev">
+ <choice>
+ <value>hd</value>
+ <value>fd</value>
+ <value>cdrom</value>
+ <value>network</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </define>
+ <define name="diskspec">
+ <optional>
+ <ref name="driver"/>
+ </optional>
+ <ref name="target"/>
+ <optional>
+ <element name="readonly">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="shareable">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="serial">
+ <ref name="diskSerial"/>
+ </element>
+ </optional>
+ </define>
+ <!--
+ A disk description can be either of type file or block
+ The name of the attribute on the source element depends on the type
+
+ -->
+ <define name="disk">
+ <element name="disk">
+ <optional>
+ <attribute name="device">
+ <choice>
+ <value>floppy</value>
+ <value>disk</value>
+ <value>cdrom</value>
+ </choice>
+ </attribute>
+ </optional>
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>file</value>
+ </attribute>
+ <interleave>
+ <optional>
+ <element name="source">
+ <attribute name="file">
+ <ref name="absFilePath"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <ref name="diskspec"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>block</value>
+ </attribute>
+ <interleave>
+ <optional>
+ <element name="source">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <ref name="diskspec"/>
+ </interleave>
+ </group>
+ <ref name="diskspec"/>
+ </choice>
+ </element>
+ </define>
+ <define name="target">
+ <element name="target">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ <optional>
+ <attribute name="bus">
+ <choice>
+ <value>ide</value>
+ <value>fdc</value>
+ <value>scsi</value>
+ <value>virtio</value>
+ <value>xen</value>
+ <value>usb</value>
+ <value>uml</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <!--
+ Disk may use a special driver for access. Currently this is
+ only defined for Xen for tap/aio and file, but will certainly be
+ extended in the future, and libvirt doesn't look for specific values.
+ -->
+ <define name="driver">
+ <element name="driver">
+ <choice>
+ <group>
+ <ref name="driverFormat"/>
+ <optional>
+ <ref name="driverCache"/>
+ </optional>
+ </group>
+ <group>
+ <optional>
+ <ref name="driverFormat"/>
+ </optional>
+ <ref name="driverCache"/>
+ </group>
+ </choice>
+ <empty/>
+ </element>
+ </define>
+ <define name="driverFormat">
+ <attribute name="name">
+ <ref name="genericName"/>
+ </attribute>
+ <optional>
+ <attribute name="type">
+ <ref name="genericName"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="driverCache">
+ <attribute name="cache">
+ <choice>
+ <value>none</value>
+ <value>writeback</value>
+ <value>writethrough</value>
+ </choice>
+ </attribute>
+ </define>
+ <define name="filesystem">
+ <element name="filesystem">
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>file</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="file">
+ <ref name="absFilePath"/>
+ </attribute>
+ <empty/>
+ </element>
+ <ref name="filesystemtgt"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>block</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ <ref name="filesystemtgt"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>mount</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="dir">
+ <ref name="absFilePath"/>
+ </attribute>
+ <empty/>
+ </element>
+ <ref name="filesystemtgt"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>template</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="name">
+ <ref name="genericName"/>
+ </attribute>
+ <empty/>
+ </element>
+ <ref name="filesystemtgt"/>
+ </interleave>
+ </group>
+ </choice>
+ </element>
+ </define>
+ <define name="filesystemtgt">
+ <element name="target">
+ <attribute name="dir">
+ <ref name="absDirPath"/>
+ </attribute>
+ <empty/>
+ </element>
+ </define>
+ <!--
+ An interface description can either be of type bridge in which case
+ it will use a bridging source, or of type ethernet which uses a device
+ source and a device target instead. They both share a set of interface
+ options. FIXME
+ -->
+ <define name="interface">
+ <element name="interface">
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>bridge</value>
+ </attribute>
+ <interleave>
+ <optional>
+ <element name="source">
+ <attribute name="bridge">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <ref name="interface-options"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>ethernet</value>
+ </attribute>
+ <interleave>
+ <optional>
+ <element name="source">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <ref name="interface-options"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>network</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="network">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ <ref name="interface-options"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>user</value>
+ </attribute>
+ <interleave>
+ <ref name="interface-options"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>internal</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="name">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ <ref name="interface-options"/>
+ </interleave>
+ </group>
+ </choice>
+ </element>
+ </define>
+ <!--
+ The interface options possible are:
+ - the MAC address
+ - the IP address bound to the interface
+ - the name of the script used to set up the binding
+ - the target device used
+ -->
+ <define name="interface-options">
+ <interleave>
+ <optional>
+ <element name="target">
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mac">
+ <attribute name="address">
+ <ref name="addrMAC"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="ip">
+ <attribute name="address">
+ <ref name="addrIP"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="script">
+ <attribute name="path">
+ <ref name="filePath"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="model">
+ <attribute name="type"/>
+ <empty/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <!--
+ An emulator description is just a path to the binary used for the task
+ -->
+ <define name="emulator">
+ <element name="emulator">
+ <ref name="absFilePath"/>
+ </element>
+ </define>
+ <!--
+ A graphic description, currently in Xen only 2 types are supported:
+ - sdl with optional display, xauth and fullscreen
+ - vnc with a required port and optional listen IP address, password
+ and keymap
+ -->
+ <define name="graphic">
+ <element name="graphics">
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>sdl</value>
+ </attribute>
+ <optional>
+ <attribute name="display">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="xauth">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fullscreen">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>vnc</value>
+ </attribute>
+ <optional>
+ <attribute name="port">
+ <ref name="PortNumber"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="autoport">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="listen">
+ <ref name="addrIP"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="passwd">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="keymap">
+ <text/>
+ </attribute>
+ </optional>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>rdp</value>
+ </attribute>
+ <optional>
+ <attribute name="port">
+ <ref name="PortNumber"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="autoport">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="replaceUser">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="multiUser">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="listen">
+ <ref name="addrIP"/>
+ </attribute>
+ </optional>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>desktop</value>
+ </attribute>
+ <optional>
+ <attribute name="display">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="fullscreen">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ </group>
+ </choice>
+ </element>
+ </define>
+ <!--
+ A graphic description, currently in Xen only 2 types are supported:
+ - sdl with optional display, xauth and fullscreen
+ - vnc with a required port and optional listen IP address, password
+ and keymap
+ -->
+ <define name="video">
+ <element name="video">
+ <optional>
+ <element name="model">
+ <attribute name="type">
+ <choice>
+ <value>vga</value>
+ <value>cirrus</value>
+ <value>vmvga</value>
+ <value>xen</value>
+ <value>vbox</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="vram">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="heads">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
+ <optional>
+ <element name="acceleration">
+ <optional>
+ <attribute name="accel3d">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="accel2d">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </optional>
+ </element>
+ </optional>
+ </element>
+ </define>
+ <!--
+ When a domain terminates multiple policies can be applied depending
+ on how it ended:
+ -->
+ <define name="termination">
+ <interleave>
+ <optional>
+ <element name="on_reboot">
+ <ref name="offOptions"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="on_poweroff">
+ <ref name="offOptions"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="on_crash">
+ <ref name="offOptions"/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <!--
+ Options when a domain terminates:
+ destroy: The domain is cleaned up
+ restart: A new domain is started in place of the old one
+ preserve: The domain will remain in memory until it is destroyed manually
+ rename-restart: a variant of the previous one but where the old domain is
+ renamed before being saved to allow a restart
+ -->
+ <define name="offOptions">
+ <choice>
+ <value>destroy</value>
+ <value>restart</value>
+ <value>preserve</value>
+ <value>rename-restart</value>
+ </choice>
+ </define>
+ <!--
+ Specific setup for a qemu emulated character device. Note: this
+ definition doesn't fully specify the constraints on this node.
+ -->
+ <define name="qemucdev">
+ <attribute name="type">
+ <choice>
+ <value>dev</value>
+ <value>file</value>
+ <value>pipe</value>
+ <value>unix</value>
+ <value>tcp</value>
+ <value>udp</value>
+ <value>null</value>
+ <value>stdio</value>
+ <value>vc</value>
+ <value>pty</value>
+ </choice>
+ </attribute>
+ <interleave>
+ <optional>
+ <oneOrMore>
+ <element name="source">
+ <optional>
+ <attribute name="mode"/>
+ </optional>
+ <optional>
+ <attribute name="path"/>
+ </optional>
+ <optional>
+ <attribute name="host"/>
+ </optional>
+ <optional>
+ <attribute name="service"/>
+ </optional>
+ <optional>
+ <attribute name="wiremode"/>
+ </optional>
+ </element>
+ </oneOrMore>
+ </optional>
+ <optional>
+ <element name="protocol">
+ <optional>
+ <attribute name="type"/>
+ </optional>
+ </element>
+ </optional>
+ <optional>
+ <element name="target">
+ <optional>
+ <attribute name="port"/>
+ </optional>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+ <!--
+ The description for a console
+ just a tty device
+ -->
+ <define name="console">
+ <element name="console">
+ <choice>
+ <group>
+ <optional>
+ <attribute name="tty">
+ <ref name="devicePath"/>
+ </attribute>
+ </optional>
+ <empty/>
+ </group>
+ <ref name="qemucdev"/>
+ </choice>
+ </element>
+ </define>
+ <define name="sound">
+ <element name="sound">
+ <attribute name="model">
+ <choice>
+ <value>sb16</value>
+ <value>es1370</value>
+ <value>pcspk</value>
+ <value>ac97</value>
+ </choice>
+ </attribute>
+ </element>
+ </define>
+ <define name="parallel">
+ <element name="parallel">
+ <ref name="qemucdev"/>
+ </element>
+ </define>
+ <define name="serial">
+ <element name="serial">
+ <ref name="qemucdev"/>
+ </element>
+ </define>
+ <define name="input">
+ <element name="input">
+ <attribute name="type">
+ <choice>
+ <value>tablet</value>
+ <value>mouse</value>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="bus">
+ <choice>
+ <value>ps2</value>
+ <value>usb</value>
+ <value>xen</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+ <define name="hostdev">
+ <element name="hostdev">
+ <optional>
+ <attribute name="mode">
+ <choice>
+ <value>subsystem</value>
+ <value>capabilities</value>
+ </choice>
+ </attribute>
+ <attribute name="type">
+ <choice>
+ <value>usb</value>
+ <value>pci</value>
+ </choice>
+ </attribute>
+ <attribute name="managed">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
+ <group>
+ <element name="source">
+ <choice>
+ <ref name="usbproduct"/>
+ <ref name="usbaddress"/>
+ <ref name="pciaddress"/>
+ </choice>
+ </element>
+ </group>
+ </element>
+ </define>
+ <define name="usbproduct">
+ <element name="vendor">
+ <attribute name="id">
+ <ref name="usbId"/>
+ </attribute>
+ </element>
+ <element name="product">
+ <attribute name="id">
+ <ref name="usbId"/>
+ </attribute>
+ </element>
+ </define>
+ <define name="usbaddress">
+ <element name="address">
+ <attribute name="bus">
+ <ref name="usbAddr"/>
+ </attribute>
+ <attribute name="device">
+ <ref name="usbAddr"/>
+ </attribute>
+ </element>
+ </define>
+ <define name="pciaddress">
+ <element name="address">
+ <optional>
+ <attribute name="domain">
+ <ref name="pciDomain"/>
+ </attribute>
+ </optional>
+ <attribute name="bus">
+ <ref name="pciBus"/>
+ </attribute>
+ <attribute name="slot">
+ <ref name="pciSlot"/>
+ </attribute>
+ <attribute name="function">
+ <ref name="pciFunc"/>
+ </attribute>
+ </element>
+ </define>
+ <!--
+ Devices attached to a domain.
+ -->
+ <define name="devices">
+ <element name="devices">
+ <interleave>
+ <optional>
+ <ref name="emulator"/>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="disk"/>
+ <ref name="filesystem"/>
+ <ref name="interface"/>
+ <ref name="input"/>
+ <ref name="sound"/>
+ <ref name="hostdev"/>
+ <ref name="graphic"/>
+ <ref name="video"/>
+ <ref name="console"/>
+ <ref name="parallel"/>
+ <ref name="serial"/>
+ </choice>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <!--
+ A set of optional features: PAE, APIC and ACPI support
+ -->
+ <define name="features">
+ <optional>
+ <element name="features">
+ <interleave>
+ <optional>
+ <element name="pae">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="apic">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="acpi">
+ <empty/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </optional>
+ </define>
+ <!--
+ Type library
+
+ Our unsignedInt doesn't allow a leading '+' in its lexical form
+ A domain name shoul be made of ascii, numbers, _-+ and is non-empty
+ UUID currently allows only the 32 characters strict syntax
+ memoryKB request at least 4Mbytes though Xen will grow bigger if too low
+ -->
+ <define name="unsignedInt">
+ <data type="unsignedInt">
+ <param name="pattern">[0-9]+</param>
+ </data>
+ </define>
+ <define name="countCPU">
+ <data type="unsignedShort">
+ <param name="pattern">[0-9]+</param>
+ <param name="minInclusive">1</param>
+ </data>
+ </define>
+ <define name="PortNumber">
+ <data type="short">
+ <param name="minInclusive">-1</param>
+ </data>
+ </define>
+ <define name="memoryKB">
+ <data type="unsignedInt">
+ <param name="pattern">[0-9]+</param>
+ <param name="minInclusive">4000</param>
+ </data>
+ </define>
+ <define name="domainName">
+ <data type="string">
+ <param name="pattern">[A-Za-z0-9_\.\+\-&amp;:/]+</param>
+ </data>
+ </define>
+ <define name="diskSerial">
+ <data type="string">
+ <param name="pattern">[A-Za-z0-9_\.\+\-]+</param>
+ </data>
+ </define>
+ <define name="genericName">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9_\+\-]+</param>
+ </data>
+ </define>
+ <define name="UUID">
+ <choice>
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9]{32}</param>
+ </data>
+ <data type="string">
+ <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
+ </data>
+ </choice>
+ </define>
+ <define name="filePath">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9_\.\+\-&amp;/%]+</param>
+ </data>
+ </define>
+ <define name="absFilePath">
+ <data type="string">
+ <param name="pattern">/[a-zA-Z0-9_\.\+\-&amp;/%]+</param>
+ </data>
+ </define>
+ <define name="absDirPath">
+ <data type="string">
+ <param name="pattern">/[a-zA-Z0-9_\.\+\-&amp;/%]*</param>
+ </data>
+ </define>
+ <define name="devicePath">
+ <data type="string">
+ <param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
+ </data>
+ </define>
+ <define name="deviceName">
+ <data type="string">
+ <param name="pattern">[a-zA-Z0-9_\.\-:/]+</param>
+ </data>
+ </define>
+ <define name="addrMAC">
+ <data type="string">
+ <param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
+ </data>
+ </define>
+ <define name="addrIP">
+ <data type="string">
+ <param name="pattern">([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]</param>
+ </data>
+ </define>
+ <define name="usbId">
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
+ </data>
+ </define>
+ <define name="usbAddr">
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{1,3}</param>
+ </data>
+ </define>
+ <define name="pciDomain">
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
+ </data>
+ </define>
+ <define name="pciBus">
+ <data type="string">
+ <param name="pattern">(0x)?[0-9a-fA-F]{1,2}</param>
+ </data>
+ </define>
+ <define name="pciSlot">
+ <data type="string">
+ <param name="pattern">(0x)?[0-1]?[0-9a-fA-F]</param>
+ </data>
+ </define>
+ <define name="pciFunc">
+ <data type="string">
+ <param name="pattern">(0x)?[0-7]</param>
+ </data>
+ </define>
+</grammar>
diff --git a/test/relaxng/libvirt_0.xml b/test/relaxng/libvirt_0.xml
new file mode 100644
index 0000000..c17d9d5
--- /dev/null
+++ b/test/relaxng/libvirt_0.xml
@@ -0,0 +1,23 @@
+<domain type='xen' id='6'>
+ <name>pvtest</name>
+ <uuid>596a5d2171f48fb2e068e2386a5c413e</uuid>
+ <os>
+ <type>linux</type>
+ <kernel>/var/lib/xen/vmlinuz.2Dn2YT</kernel>
+ <initrd>/var/lib/xen/initrd.img.0u-Vhq</initrd>
+ <cmdline> method=http://download.fedora.devel.redhat.com/pub/fedora/linux/core/test/5.91/x86_64/os </cmdline>
+ </os>
+ <memory>430080</memory>
+ <vcpu>2</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>destroy</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='file' device='disk'>
+ <driver name='file'/>
+ <source file='/root/some.img'/>
+ <target dev='xvda'/>
+ </disk>
+ <graphics type='vnc' port='-1' autoport='yes' listen="127.0.0.1" passwd="123456" keymap="ja"/>
+ </devices>
+</domain>
diff --git a/test/relaxng/list.rng b/test/relaxng/list.rng
new file mode 100644
index 0000000..57de17c
--- /dev/null
+++ b/test/relaxng/list.rng
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar
+ xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<define name="pattern1">
+ <data type="string">
+ <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)</param>
+ </data>
+</define>
+
+<start>
+ <element name="elem1">
+ <attribute name="attr1">
+ <list>
+ <ref name="pattern1"/>
+ </list>
+ </attribute>
+ </element>
+</start>
+
+</grammar>
diff --git a/test/relaxng/list_0.xml b/test/relaxng/list_0.xml
new file mode 100644
index 0000000..a6b4d60
--- /dev/null
+++ b/test/relaxng/list_0.xml
@@ -0,0 +1 @@
+<elem1 attr1="0"/>
diff --git a/test/relaxng/list_1.xml b/test/relaxng/list_1.xml
new file mode 100644
index 0000000..a8907cc
--- /dev/null
+++ b/test/relaxng/list_1.xml
@@ -0,0 +1 @@
+<elem1 attr1="a"/>
diff --git a/test/relaxng/pattern1.rng b/test/relaxng/pattern1.rng
new file mode 100644
index 0000000..a585e85
--- /dev/null
+++ b/test/relaxng/pattern1.rng
@@ -0,0 +1,8 @@
+<group xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="a">
+ <text/>
+ </element>
+ <element name="b">
+ <text/>
+ </element>
+</group>
diff --git a/test/relaxng/pattern2.rng b/test/relaxng/pattern2.rng
new file mode 100644
index 0000000..66a4a44
--- /dev/null
+++ b/test/relaxng/pattern2.rng
@@ -0,0 +1,9 @@
+<group xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="c">
+ <text/>
+ </element>
+ <element name="d">
+ <text/>
+ </element>
+</group>
+
diff --git a/test/relaxng/proofsystem.rng b/test/relaxng/proofsystem.rng
new file mode 100644
index 0000000..7fe6bd3
--- /dev/null
+++ b/test/relaxng/proofsystem.rng
@@ -0,0 +1,96 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ ns="http://relaxng.org/ns/proofsystem">
+
+<start>
+ <element name="proofSystem">
+ <oneOrMore>
+ <element name="rule">
+ <attribute name="name"/>
+ <zeroOrMore>
+ <ref name="antecedent"/>
+ </zeroOrMore>
+ <ref name="consequent"/>
+ </element>
+ </oneOrMore>
+ </element>
+</start>
+
+<define name="formula">
+ <element name="formula">
+ <choice>
+ <ref name="judgement"/>
+ <ref name="expr"/>
+ </choice>
+ </element>
+</define>
+
+<define name="consequent">
+ <ref name="judgement"/>
+</define>
+
+<define name="antecedent">
+ <ref name="judgement"/>
+</define>
+
+<define name="judgement">
+ <choice>
+ <element name="judgement">
+ <attribute name="name"/>
+ <zeroOrMore>
+ <ref name="expr"/>
+ </zeroOrMore>
+ </element>
+ <element name="not">
+ <ref name="judgement"/>
+ </element>
+ </choice>
+</define>
+
+<define name="expr">
+ <choice>
+ <element name="var">
+ <attribute name="range"/>
+ <optional>
+ <attribute name="index"/>
+ </optional>
+ <optional>
+ <attribute name="sub"/>
+ </optional>
+ </element>
+ <element name="function">
+ <attribute name="name"/>
+ <zeroOrMore>
+ <ref name="expr"/>
+ </zeroOrMore>
+ </element>
+ <element name="element">
+ <attribute name="name"/>
+ <zeroOrMore>
+ <element name="attribute">
+ <attribute name="name"/>
+ <ref name="expr"/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <ref name="context"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="expr"/>
+ </zeroOrMore>
+ </element>
+ <element name="group">
+ <zeroOrMore>
+ <ref name="expr"/>
+ </zeroOrMore>
+ </element>
+ <element name="string"><text/></element>
+ </choice>
+</define>
+
+<define name="context">
+ <element name="context">
+ <ref name="expr"/>
+ </element>
+</define>
+
+</grammar>
diff --git a/test/relaxng/rngbug-001.ext b/test/relaxng/rngbug-001.ext
new file mode 100644
index 0000000..cb1883d
--- /dev/null
+++ b/test/relaxng/rngbug-001.ext
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="e2"/>
+ </start>
+ <define name="e2">
+ <element name="e2">
+ <element name="e3">
+ <text/>
+ </element>
+ </element>
+ </define>
+</grammar>
diff --git a/test/relaxng/rngbug-001.rng b/test/relaxng/rngbug-001.rng
new file mode 100644
index 0000000..0bb5b0a
--- /dev/null
+++ b/test/relaxng/rngbug-001.rng
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="root"/>
+ </start>
+ <define name="root">
+ <element name="root">
+ <interleave>
+ <element name="e1">
+ <text/>
+ </element>
+ <externalRef href="rngbug-001.ext"/>
+ </interleave>
+ </element>
+ </define>
+</grammar>
diff --git a/test/relaxng/rngbug-001.xml b/test/relaxng/rngbug-001.xml
new file mode 100644
index 0000000..83ba73e
--- /dev/null
+++ b/test/relaxng/rngbug-001.xml
@@ -0,0 +1,6 @@
+ <root>
+ <e1>x</e1>
+ <e2>
+ <e3>y</e3>
+ </e2>
+ </root>
diff --git a/test/relaxng/spec.rng b/test/relaxng/spec.rng
new file mode 100644
index 0000000..9650f71
--- /dev/null
+++ b/test/relaxng/spec.rng
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- $Id: spec.rng,v 1.3 2001/10/23 05:54:24 jjc Exp $ -->
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+ xmlns:p="http://relaxng.org/ns/proofsystem">
+
+<start>
+ <grammar>
+ <include href="docbook.rng"/>
+ <define name="synop.class" combine="choice">
+ <choice>
+ <parentRef name="rngref"/>
+ <parentRef name="grammarref"/>
+ <grammar>
+ <include href="proofsystem.rng"/>
+ <start combine="choice">
+ <ref name="formula"/>
+ </start>
+ </grammar>
+ </choice>
+ </define>
+ <define name="tech.char.class" combine="choice">
+ <parentRef name="terms"/>
+ </define>
+ </grammar>
+</start>
+
+<define name="rngref">
+ <element name="rngref">
+ <attribute name="src">
+ <data type="anyURI"/>
+ </attribute>
+ </element>
+</define>
+
+<define name="grammarref">
+ <element name="grammarref">
+ <attribute name="src">
+ <data type="anyURI"/>
+ </attribute>
+ </element>
+</define>
+
+<define name="terms">
+ <grammar>
+ <include href="proofsystem.rng">
+ <start>
+ <choice>
+ <ref name="expr"/>
+ <ref name="judgement"/>
+ <ref name="context"/>
+ </choice>
+ </start>
+ </include>
+ </grammar>
+</define>
+
+</grammar>
+
+
diff --git a/test/relaxng/spec1.rng b/test/relaxng/spec1.rng
new file mode 100644
index 0000000..e8e9ef2
--- /dev/null
+++ b/test/relaxng/spec1.rng
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<element name="foo"
+ xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:a="http://relaxng.org/ns/annotation/1.0"
+ xmlns:ex1="http://www.example.com/n1"
+ xmlns:ex2="http://www.example.com/n2">
+ <a:documentation>A foo element.</a:documentation>
+ <element name="ex1:bar1">
+ <empty/>
+ </element>
+ <element name="ex2:bar2">
+ <empty/>
+ </element>
+</element>
diff --git a/test/relaxng/spec1_1.xml b/test/relaxng/spec1_1.xml
new file mode 100644
index 0000000..e12b620
--- /dev/null
+++ b/test/relaxng/spec1_1.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>
+
diff --git a/test/relaxng/spec_0.xml b/test/relaxng/spec_0.xml
new file mode 100644
index 0000000..cb8f7be
--- /dev/null
+++ b/test/relaxng/spec_0.xml
@@ -0,0 +1,3589 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE article [
+<!-- ELEMENT declarations work around MSXML bug. -->
+<!ELEMENT section ANY>
+<!ATTLIST section id ID #IMPLIED>
+<!ELEMENT appendix ANY>
+<!ATTLIST appendix id ID #IMPLIED>
+<!ELEMENT bibliomixed ANY>
+<!ATTLIST bibliomixed id ID #IMPLIED>
+]>
+<article status="Committee Specification" xmlns:p="http://relaxng.org/ns/proofsystem">
+
+<articleinfo>
+<releaseinfo>$Id: spec.xml,v 1.159 2001/12/02 12:12:12 jjc Exp $</releaseinfo>
+<title>RELAX NG Specification</title>
+<authorgroup>
+<editor>
+ <firstname>James</firstname><surname>Clark</surname>
+ <affiliation>
+ <address><email>jjc@jclark.com</email></address>
+ </affiliation>
+</editor>
+<editor>
+ <surname>MURATA</surname><firstname>Makoto</firstname>
+ <affiliation>
+ <address><email>EB2M-MRT@asahi-net.or.jp</email></address>
+ </affiliation>
+</editor>
+</authorgroup>
+<pubdate>3 December 2001</pubdate>
+<releaseinfo role="meta">
+$Id: spec.xml,v 1.159 2001/12/02 12:12:12 jjc Exp $
+</releaseinfo>
+
+<copyright><year>2001</year><holder>OASIS</holder></copyright>
+
+<legalnotice>
+
+<para>Copyright &#169; The Organization for the Advancement of
+Structured Information Standards [OASIS] 2001. All Rights
+Reserved.</para>
+
+<para>This document and translations of it may be copied and furnished
+to others, and derivative works that comment on or otherwise explain
+it or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any kind,
+provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to OASIS, except as needed for the
+purpose of developing OASIS specifications, in which case the
+procedures for copyrights defined in the OASIS Intellectual Property
+Rights document must be followed, or as required to translate it into
+languages other than English.</para>
+
+<para>The limited permissions granted above are perpetual and will not
+be revoked by OASIS or its successors or assigns.</para>
+
+<para>This document and the information contained herein is provided
+on an <quote>AS IS</quote> basis and OASIS DISCLAIMS ALL WARRANTIES,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE
+USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
+IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
+PURPOSE.</para>
+
+</legalnotice>
+
+<legalnotice role="status"><title>Status of this Document</title>
+
+<para>This Committee Specification was approved for publication by the
+OASIS RELAX NG technical committee. It is a stable document which
+represents the consensus of the committee. Comments on this document
+may be sent to <ulink
+url="mailto:relax-ng-comment@lists.oasis-open.org"
+>relax-ng-comment@lists.oasis-open.org</ulink>.</para>
+
+<para>A list of known errors in this document is available at <ulink
+url="http://www.oasis-open.org/committees/relax-ng/spec-20011203-errata.html"
+>http://www.oasis-open.org/committees/relax-ng/spec-20011203-errata.html</ulink
+>.</para>
+
+</legalnotice>
+
+<abstract>
+<para>This is the definitive specification of RELAX NG, a simple
+schema language for XML, based on <xref linkend="relax"/> and <xref
+linkend="trex"/>. A RELAX NG schema specifies a pattern for the
+structure and content of an XML document. A RELAX NG schema is itself
+an XML document.</para>
+</abstract>
+
+<revhistory>
+<revision>
+ <revnumber>Committee Specification</revnumber>
+ <date>3 December 2001</date>
+</revision>
+<revision>
+ <revnumber>Committee Specification</revnumber>
+ <date>11 August 2001</date>
+</revision>
+</revhistory>
+</articleinfo>
+
+
+<section>
+<title>Introduction</title>
+
+<para>This document specifies</para>
+
+<itemizedlist>
+
+<listitem><para>when an XML document is a correct RELAX NG
+schema</para></listitem>
+
+<listitem><para>when an XML document is valid with respect to a
+correct RELAX NG schema</para></listitem>
+
+</itemizedlist>
+
+<para>An XML document that is being validated with respect to a RELAX NG
+schema is referred to as an instance.</para>
+
+<para>The structure of this document is as follows. <xref
+linkend="data-model"/> describes the data model, which is the
+abstraction of an XML document used throughout the rest of the
+document. <xref linkend="full-syntax"/> describes the syntax of a
+RELAX NG schema; any correct RELAX NG schema must conform to this
+syntax. <xref linkend="simplification"/> describes a sequence of
+transformations that are applied to simplify a RELAX NG schema;
+applying the transformations also involves checking certain
+restrictions that must be satisfied by a correct RELAX NG
+schema. <xref linkend="simple-syntax"/> describes the syntax that
+results from applying the transformations; this simple syntax is a
+subset of the full syntax. <xref linkend="semantics"/> describes the
+semantics of a correct RELAX NG schema that uses the simple syntax;
+the semantics specify when an element is valid with respect to a RELAX
+NG schema. <xref linkend="restriction"/> describes restrictions in
+terms of the simple syntax; a correct RELAX NG schema must be such
+that, after transformation into the simple form, it satisfies these
+restrictions. Finally, <xref linkend="conformance"/> describes
+conformance requirements for RELAX NG validators.</para>
+
+<para>A tutorial is available separately (see <xref
+linkend="tutorial"/>).</para>
+
+</section>
+
+<section id="data-model">
+<title>Data model</title>
+
+<para>RELAX NG deals with XML documents representing both schemas and
+instances through an abstract data model. XML documents representing
+schemas and instances must be well-formed in conformance with <xref
+linkend="xml-rec"/> and must conform to the constraints of <xref
+linkend="xml-names"/>.</para>
+
+<para>An XML document is represented by an element. An element consists
+of</para>
+
+<itemizedlist>
+
+<listitem><para>a name</para></listitem>
+
+<listitem><para>a context</para></listitem>
+
+<listitem><para>a set of attributes</para></listitem>
+
+<listitem><para>an ordered sequence of zero or more children; each
+child is either an element or a non-empty string; the sequence never contains
+two consecutive strings</para></listitem>
+
+</itemizedlist>
+
+<para>A name consists of</para>
+
+<itemizedlist>
+<listitem><para>a string representing the namespace URI; the empty
+string has special significance, representing the absence of any
+namespace</para></listitem>
+
+<listitem><para>a string representing the local name; this string matches the NCName
+production of <xref linkend="xml-names"/></para></listitem>
+</itemizedlist>
+
+<para>A context consists of</para>
+
+<itemizedlist>
+<listitem><para>a base URI</para></listitem>
+<listitem><para>a namespace map; this maps prefixes to namespace URIs,
+and also may specify a default namespace URI (as declared
+by the <literal>xmlns</literal> attribute)</para></listitem>
+</itemizedlist>
+
+<para>An attribute consists of</para>
+
+<itemizedlist>
+<listitem><para>a name</para></listitem>
+<listitem><para>a string representing the value</para></listitem>
+</itemizedlist>
+
+<para>A string consists of a sequence of zero or more characters,
+where a character is as defined in <xref linkend="xml-rec"/>.</para>
+
+<para>The element for an XML document is constructed from an instance
+of the <xref linkend="infoset"/> as follows. We use the notation
+[<replaceable>x</replaceable>] to refer to the value of the
+<replaceable>x</replaceable> property of an information item. An
+element is constructed from a document information item by
+constructing an element from the [document element]. An element is
+constructed from an element information item by constructing the name
+from the [namespace name] and [local name], the context from the [base
+URI] and [in-scope namespaces], the attributes from the [attributes],
+and the children from the [children]. The attributes of an element
+are constructed from the unordered set of attribute information items
+by constructing an attribute for each attribute information item. The
+children of an element are constructed from the list of child
+information items first by removing information items other than
+element information items and character information items, and then by
+constructing an element for each element information item in the list
+and a string for each maximal sequence of character information items.
+An attribute is constructed from an attribute information item by
+constructing the name from the [namespace name] and [local name], and
+the value from the [normalized value]. When constructing the name of
+an element or attribute from the [namespace name] and [local name], if
+the [namespace name] property is not present, then the name is
+constructed from an empty string and the [local name]. A string is
+constructed from a sequence of character information items by
+constructing a character from the [character code] of each character
+information item.</para>
+
+<para>It is possible for there to be multiple distinct infosets for a
+single XML document. This is because XML parsers are not required to
+process all DTD declarations or expand all external parsed general
+entities. Amongst these multiple infosets, there is exactly one
+infoset for which [all declarations processed] is true and which does
+not contain any unexpanded entity reference information items. This
+is the infoset that is the basis for defining the RELAX NG data
+model.</para>
+
+<section id="data-model-example">
+<title>Example</title>
+
+<para>Suppose the document
+<literal>http://www.example.com/doc.xml</literal> is as
+follows:</para>
+
+<programlisting><![CDATA[<?xml version="1.0"?>
+<foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2
+ xmlns:pre2="http://www.example.com/n2"/></foo>
+]]></programlisting>
+
+<para>The element representing this document has</para>
+
+<itemizedlist>
+<listitem><para>a name which has</para>
+<itemizedlist>
+
+<listitem><para>the empty string as the namespace URI, representing
+the absence of any namespace</para></listitem>
+
+<listitem><para><literal>foo</literal> as the local
+name</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+
+<listitem><para>a context which has</para>
+
+<itemizedlist>
+<listitem><para><literal>http://www.example.com/doc.xml</literal> as the base
+URI</para></listitem>
+
+<listitem><para>a namespace map which</para>
+
+<itemizedlist>
+
+<listitem><para>maps the prefix <literal>xml</literal> to the
+namespace URI
+<literal>http://www.w3.org/XML/1998/namespace</literal>
+(the <literal>xml</literal> prefix is implicitly declared
+by every XML document)</para></listitem>
+
+<listitem><para>specifies the empty string as the default namespace
+URI</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+
+</itemizedlist>
+
+</listitem>
+
+<listitem><para>an empty set of attributes</para></listitem>
+
+<listitem><para>a sequence of children consisting
+of an element which has</para>
+
+<itemizedlist>
+<listitem><para>a name which has</para>
+<itemizedlist>
+
+<listitem><para><literal>http://www.example.com/n1</literal> as the
+namespace URI</para></listitem>
+
+<listitem><para><literal>bar1</literal> as the local
+name</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+
+<listitem><para>a context which has</para>
+
+<itemizedlist>
+<listitem><para><literal>http://www.example.com/doc.xml</literal> as the base
+URI</para></listitem>
+
+<listitem><para>a namespace map which</para>
+
+<itemizedlist>
+
+<listitem><para>maps the prefix <literal>pre1</literal> to the
+namespace URI
+<literal>http://www.example.com/n1</literal></para></listitem>
+
+<listitem><para>maps the prefix <literal>xml</literal> to the
+namespace URI
+<literal>http://www.w3.org/XML/1998/namespace</literal></para></listitem>
+
+<listitem><para>specifies the empty string as the default namespace
+URI</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+
+</itemizedlist>
+
+</listitem>
+
+<listitem><para>an empty set of attributes</para></listitem>
+
+<listitem><para>an empty sequence of children</para></listitem>
+
+</itemizedlist>
+
+<para>followed by an element which has</para>
+
+<itemizedlist>
+<listitem><para>a name which has</para>
+<itemizedlist>
+
+<listitem><para><literal>http://www.example.com/n2</literal> as the
+namespace URI</para></listitem>
+
+<listitem><para><literal>bar2</literal> as the local
+name</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+
+<listitem><para>a context which has</para>
+
+<itemizedlist>
+<listitem><para><literal>http://www.example.com/doc.xml</literal> as the base
+URI</para></listitem>
+
+<listitem><para>a namespace map which</para>
+
+<itemizedlist>
+
+<listitem><para>maps the prefix <literal>pre2</literal> to the
+namespace URI
+<literal>http://www.example.com/n2</literal></para></listitem>
+
+<listitem><para>maps the prefix <literal>xml</literal> to the
+namespace URI
+<literal>http://www.w3.org/XML/1998/namespace</literal></para></listitem>
+
+<listitem><para>specifies the empty string as the default namespace
+URI</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+
+</itemizedlist>
+
+</listitem>
+
+<listitem><para>an empty set of attributes</para></listitem>
+
+<listitem><para>an empty sequence of children</para></listitem>
+
+</itemizedlist>
+
+</listitem>
+</itemizedlist>
+
+</section>
+
+</section>
+
+<section id="full-syntax">
+<title>Full syntax</title>
+
+<para>The following grammar summarizes the syntax of RELAX NG.
+Although we use a notation based on the XML representation of an RELAX
+NG schema as a sequence of characters, the grammar must be understood
+as operating at the data model level. For example, although the
+syntax uses <literal><![CDATA[<text/>]]></literal>, an instance or
+schema can use <literal><![CDATA[<text></text>]]></literal> instead,
+because they both represent the same element at the data model level.
+All elements shown in the grammar are qualified with the namespace
+URI:</para>
+
+<programlisting>http://relaxng.org/ns/structure/1.0</programlisting>
+
+<para>The symbols QName and NCName are defined in <xref
+linkend="xml-names"/>. The anyURI symbol has the same meaning as the
+anyURI datatype of <xref linkend="xmlschema-2"/>: it indicates a
+string that, after escaping of disallowed values as described in
+Section 5.4 of <xref linkend="xlink"/>, is a URI reference as defined
+in <xref linkend="rfc2396"/> (as modified by <xref
+linkend="rfc2732"/>). The symbol string matches any string.</para>
+
+<para>In addition to the attributes shown explicitly, any element can
+have an <literal>ns</literal> attribute and any element can have a
+<literal>datatypeLibrary</literal> attribute. The
+<literal>ns</literal> attribute can have any value. The value of the
+<literal>datatypeLibrary</literal> attribute must match the anyURI
+symbol as described in the previous paragraph; in addition, it must
+not use the relative form of URI reference and must not have a
+fragment identifier; as an exception to this, the value may be the
+empty string.</para>
+
+<para>Any element can also have foreign attributes in addition to the
+attributes shown in the grammar. A foreign attribute is an attribute
+with a name whose namespace URI is neither the empty string nor the
+RELAX NG namespace URI. Any element that cannot have string children
+(that is, any element other than <literal>value</literal>, <literal>param</literal>
+and <literal>name</literal>) may have foreign child elements in addition
+to the child elements shown in the grammar. A foreign element is an
+element with a name whose namespace URI is not the RELAX NG namespace
+URI. There are no constraints on the relative position of foreign
+child elements with respect to other child elements.</para>
+
+<para>Any element can also have as children strings that consist
+entirely of whitespace characters, where a whitespace character is one
+of #x20, #x9, #xD or #xA. There are no constraints on the relative
+position of whitespace string children with respect to child
+elements.</para>
+
+<para>Leading and trailing whitespace is allowed for value of each
+<literal>name</literal>, <literal>type</literal> and
+<literal>combine</literal> attribute and for the content of each
+<literal>name</literal> element.</para>
+
+<grammarref src="full.rng"/>
+
+<section id="full-syntax-example">
+<title>Example</title>
+
+<para>Here is an example of a schema in the full syntax for the
+document in <xref linkend="data-model-example"/>.</para>
+
+<programlisting><![CDATA[<?xml version="1.0"?>
+<element name="foo"
+ xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:a="http://relaxng.org/ns/annotation/1.0"
+ xmlns:ex1="http://www.example.com/n1"
+ xmlns:ex2="http://www.example.com/n2">
+ <a:documentation>A foo element.</a:document>
+ <element name="ex1:bar1">
+ <empty/>
+ </element>
+ <element name="ex2:bar2">
+ <empty/>
+ </element>
+</element>]]></programlisting>
+
+</section>
+
+</section>
+
+<section id="simplification">
+<title>Simplification</title>
+
+<para>The full syntax given in the previous section is transformed
+into a simpler syntax by applying the following transformation rules
+in order. The effect must be as if each rule was applied to all
+elements in the schema before the next rule is applied. A
+transformation rule may also specify constraints that must be
+satisfied by a correct schema. The transformation rules are applied
+at the data model level. Before the transformations are applied, the
+schema is parsed into an instance of the data model.</para>
+
+<section>
+<title>Annotations</title>
+
+<para>Foreign attributes and elements are removed.</para>
+
+<note><para>It is safe to remove <literal>xml:base</literal>
+attributes at this stage because <literal>xml:base</literal>
+attributes are used in determining the [base URI] of an element
+information item, which is in turn used to construct the base URI of
+the context of an element. Thus, after a document has been parsed
+into an instance of the data model, <literal>xml:base</literal>
+attributes can be discarded.</para></note>
+
+</section>
+
+<section>
+<title>Whitespace</title>
+
+<para>For each element other than <literal>value</literal> and
+<literal>param</literal>, each child that is a string containing only
+whitespace characters is removed.</para>
+
+<para>Leading and trailing whitespace characters are removed from the
+value of each <literal>name</literal>, <literal>type</literal> and
+<literal>combine</literal> attribute and from the content of each
+<literal>name</literal> element.</para>
+
+</section>
+
+<section>
+<title><literal>datatypeLibrary</literal> attribute</title>
+
+<para>The value of each <literal>datatypeLibary</literal> attribute is
+transformed by escaping disallowed characters as specified in Section
+5.4 of <xref linkend="xlink"/>.</para>
+
+<para>For any <literal>data</literal> or <literal>value</literal>
+element that does not have a <literal>datatypeLibrary</literal>
+attribute, a <literal>datatypeLibrary</literal> attribute is
+added. The value of the added <literal>datatypeLibrary</literal>
+attribute is the value of the <literal>datatypeLibrary</literal>
+attribute of the nearest ancestor element that has a
+<literal>datatypeLibrary</literal> attribute, or the empty string if
+there is no such ancestor. Then, any <literal>datatypeLibrary</literal>
+attribute that is on an element other than <literal>data</literal> or
+<literal>value</literal> is removed.</para>
+
+</section>
+
+<section>
+<title><literal>type</literal> attribute of <literal>value</literal> element</title>
+
+<para>For any <literal>value</literal> element that does not have a
+<literal>type</literal> attribute, a <literal>type</literal> attribute
+is added with value <literal>token</literal> and the value of the
+<literal>datatypeLibrary</literal> attribute is changed to the empty
+string.</para>
+
+</section>
+
+<section id="href">
+<title><literal>href</literal> attribute</title>
+
+<para>The value of the <literal>href</literal> attribute on an
+<literal>externalRef</literal> or <literal>include</literal> element
+is first transformed by escaping disallowed characters as specified in
+Section 5.4 of <xref linkend="xlink"/>. The URI reference is then
+resolved into an absolute form as described in section 5.2 of <xref
+linkend="rfc2396"/> using the base URI from the context of the element
+that bears the <literal>href</literal> attribute.</para>
+
+<para>The value of the <literal>href</literal> attribute will be used
+to construct an element (as specified in <xref
+linkend="data-model"/>). This must be done as follows. The URI
+reference consists of the URI itself and an optional fragment
+identifier. The resource identified by the URI is retrieved. The
+result is a MIME entity: a sequence of bytes labeled with a MIME
+media type. The media type determines how an element is constructed
+from the MIME entity and optional fragment identifier. When the media
+type is <literal>application/xml</literal> or
+<literal>text/xml</literal>, the MIME entity must be parsed as an XML
+document in accordance with the applicable RFC (at the term of writing
+<xref linkend="rfc3023"/>) and an element constructed from the result
+of the parse as specified in <xref linkend="data-model"/>. In
+particular, the <literal>charset</literal> parameter must be handled
+as specified by the RFC. This specification does not define the
+handling of media types other than <literal>application/xml</literal>
+and <literal>text/xml</literal>. The <literal>href</literal> attribute
+must not include a fragment identifier unless the registration of the
+media type of the resource identified by the attribute defines the
+interpretation of fragment identifiers for that media type.</para>
+
+<note><para><xref linkend="rfc3023"/> does not define the
+interpretation of fragment identifiers for
+<literal>application/xml</literal> or
+<literal>text/xml</literal>.</para></note>
+
+</section>
+
+<section>
+<title><literal>externalRef</literal> element</title>
+
+<para>An <literal>externalRef</literal> element is transformed as
+follows. An element is constructed using the URI reference that is
+the value of <literal>href</literal> attribute as specified in <xref
+linkend="href"/>. This element must match the syntax for pattern. The
+element is transformed by recursively applying the rules from this
+subsection and from previous subsections of this section. This must
+not result in a loop. In other words, the transformation of the
+referenced element must not require the dereferencing of an
+<literal>externalRef</literal> attribute with an
+<literal>href</literal> attribute with the same value.</para>
+
+<para>Any <literal>ns</literal> attribute on the
+<literal>externalRef</literal> element is transferred to the
+referenced element if the referenced element does not already have an
+<literal>ns</literal> attribute. The <literal>externalRef</literal>
+element is then replaced by the referenced element.</para>
+
+</section>
+
+<section>
+<title><literal>include</literal> element</title>
+
+<para>An <literal>include</literal> element is transformed as follows.
+An element is constructed using the URI reference that is the value of
+<literal>href</literal> attribute as specified in <xref
+linkend="href"/>. This element must be a <literal>grammar</literal>
+element, matching the syntax for grammar.</para>
+
+<para>This <literal>grammar</literal> element is transformed by
+recursively applying the rules from this subsection and from previous
+subsections of this section. This must not result in a loop. In other
+words, the transformation of the <literal>grammar</literal> element
+must not require the dereferencing of an <literal>include</literal>
+attribute with an <literal>href</literal> attribute with the same
+value.</para>
+
+<para>Define the <firstterm>components</firstterm> of an element to
+be the children of the element together with the components of any
+<literal>div</literal> child elements. If the
+<literal>include</literal> element has a <literal>start</literal>
+component, then the <literal>grammar</literal> element must have a
+<literal>start</literal> component. If the <literal>include</literal>
+element has a <literal>start</literal> component, then all
+<literal>start</literal> components are removed from the
+<literal>grammar</literal> element. If the <literal>include</literal>
+element has a <literal>define</literal> component, then the
+<literal>grammar</literal> element must have a
+<literal>define</literal> component with the same name. For every
+<literal>define</literal> component of the <literal>include</literal>
+element, all <literal>define</literal> components with the same name
+are removed from the <literal>grammar</literal> element.</para>
+
+<para>The <literal>include</literal> element is transformed into a
+<literal>div</literal> element. The attributes of the
+<literal>div</literal> element are the attributes of the
+<literal>include</literal> element other than the
+<literal>href</literal> attribute. The children of the
+<literal>div</literal> element are the <literal>grammar</literal>
+element (after the removal of the <literal>start</literal> and
+<literal>define</literal> components described by the preceding
+paragraph) followed by the children of the <literal>include</literal>
+element. The <literal>grammar</literal> element is then renamed to
+<literal>div</literal>.</para>
+
+</section>
+
+<section>
+<title><literal>name</literal> attribute of <literal>element</literal>
+and <literal>attribute</literal> elements</title>
+
+<para>The <literal>name</literal> attribute on an
+<literal>element</literal> or <literal>attribute</literal> element is
+transformed into a <literal>name</literal> child element.</para>
+
+<para>If an <literal>attribute</literal> element has a
+<literal>name</literal> attribute but no <literal>ns</literal>
+attribute, then an <literal>ns=""</literal> attribute is added to the
+<literal>name</literal> child element.</para>
+
+</section>
+
+<section>
+<title><literal>ns</literal> attribute</title>
+
+<para>For any <literal>name</literal>, <literal>nsName</literal> or
+<literal>value</literal> element that does not have an
+<literal>ns</literal> attribute, an <literal>ns</literal> attribute is
+added. The value of the added <literal>ns</literal> attribute is the
+value of the <literal>ns</literal> attribute of the nearest ancestor
+element that has an <literal>ns</literal> attribute, or the empty
+string if there is no such ancestor. Then, any <literal>ns</literal>
+attribute that is on an element other than <literal>name</literal>,
+<literal>nsName</literal> or <literal>value</literal> is
+removed.</para>
+
+<note><para>The value of the <literal>ns</literal> attribute is
+<emphasis role="strong">not</emphasis> transformed either by escaping
+disallowed characters, or in any other way, because the value of the
+<literal>ns</literal> attribute is compared against namespace URIs in
+the instance, which are not subject to any
+transformation.</para></note>
+
+<note><para>Since <literal>include</literal> and
+<literal>externalRef</literal> elements are resolved after
+<literal>datatypeLibrary</literal> attributes are added but before
+<literal>ns</literal> attributes are added, <literal>ns</literal>
+attributes are inherited into external schemas but
+<literal>datatypeLibrary</literal> attributes are not.</para></note>
+
+</section>
+
+<section>
+<title>QNames</title>
+
+<para>For any <literal>name</literal> element containing a prefix, the
+prefix is removed and an <literal>ns</literal> attribute is added
+replacing any existing <literal>ns</literal> attribute. The value of
+the added <literal>ns</literal> attribute is the value to which the
+namespace map of the context of the <literal>name</literal> element
+maps the prefix. The context must have a mapping for the
+prefix.</para>
+
+</section>
+
+<section>
+<title><literal>div</literal> element</title>
+
+<para>Each <literal>div</literal> element is replaced by its
+children.</para>
+
+</section>
+
+<section id="number-child-elements">
+<title>Number of child elements</title>
+
+<para>A <literal>define</literal>, <literal>oneOrMore</literal>,
+<literal>zeroOrMore</literal>, <literal>optional</literal>, <literal>list</literal> or
+<literal>mixed</literal> element is transformed so that it has exactly
+one child element. If it has more than one child element, then its
+child elements are wrapped in a <literal>group</literal>
+element. Similarly, an <literal>element</literal> element is transformed so
+that it has exactly two child elements, the first being a name class
+and the second being a pattern. If it has more than two child elements,
+then the child elements other than the first are wrapped in a
+<literal>group</literal> element.</para>
+
+<para>A <literal>except</literal> element is transformed
+so that it has exactly one child element. If it has more
+than one child element, then its child elements are wrapped
+in a <literal>choice</literal> element.</para>
+
+<para>If an <literal>attribute</literal> element has only one child
+element (a name class), then a <literal>text</literal> element is
+added.</para>
+
+<para>A <literal>choice</literal>, <literal>group</literal> or
+<literal>interleave</literal> element is transformed so that it has
+exactly two child elements. If it has one child element, then it is
+replaced by its child element. If it has more than two child
+elements, then the first two child elements are combined into a new
+element with the same name as the parent element and with the first
+two child elements as its children. For example,</para>
+
+<programlisting>&lt;choice&gt; <replaceable>p1</replaceable> <replaceable>p2</replaceable> <replaceable>p3</replaceable> &lt;/choice&gt;</programlisting>
+
+<para>is transformed to</para>
+
+<programlisting>&lt;choice&gt; &lt;choice&gt; <replaceable>p1</replaceable> <replaceable>p2</replaceable> &lt;/choice&gt; <replaceable>p3</replaceable> &lt;/choice&gt;</programlisting>
+
+<para>This reduces the number of child elements by one. The
+transformation is applied repeatedly until there are exactly two child
+elements.</para>
+
+</section>
+
+<section>
+<title><literal>mixed</literal> element</title>
+
+<para>A <literal>mixed</literal> element is transformed into an
+interleaving with a <literal>text</literal> element:</para>
+
+<programlisting>&lt;mixed> <replaceable>p</replaceable> &lt;/mixed></programlisting>
+
+<para>is transformed into</para>
+
+<programlisting>&lt;interleave> <replaceable>p</replaceable> &lt;text/> &lt;/interleave></programlisting>
+
+</section>
+
+<section>
+<title><literal>optional</literal> element</title>
+
+<para>An <literal>optional</literal> element is transformed into
+a choice with <literal>empty</literal>:</para>
+
+<programlisting>&lt;optional> <replaceable>p</replaceable> &lt;/optional></programlisting>
+
+<para>is transformed into</para>
+
+<programlisting>&lt;choice> <replaceable>p</replaceable> &lt;empty/> &lt;/choice></programlisting>
+
+</section>
+
+<section>
+<title><literal>zeroOrMore</literal> element</title>
+
+<para>A <literal>zeroOrMore</literal> element is transformed into a choice
+between <literal>oneOrMore</literal> and
+<literal>empty</literal>:</para>
+
+<programlisting>&lt;zeroOrMore> <replaceable>p</replaceable> &lt;/zeroOrMore></programlisting>
+
+<para>is transformed into</para>
+
+<programlisting>&lt;choice> &lt;oneOrMore> <replaceable>p</replaceable> &lt;/oneOrMore> &lt;empty/> &lt;/choice></programlisting>
+
+</section>
+
+<section id="constraints">
+<title>Constraints</title>
+
+<para>In this rule, no transformation is performed, but various
+constraints are checked.</para>
+
+<note><para>The constraints in this section, unlike the constraints
+specified in <xref linkend="restriction"/>, can be checked without
+resolving any <literal>ref</literal> elements, and are accordingly
+applied even to patterns that will disappear during later stages of
+simplification because they are not reachable (see <xref
+linkend="define-ref"/>) or because of <literal>notAllowed</literal>
+(see <xref linkend="notAllowed"/>).</para></note>
+
+<para>An <literal>except</literal> element that is a child of an
+<literal>anyName</literal> element must not have any
+<literal>anyName</literal> descendant elements. An
+<literal>except</literal> element that is a child of an
+<literal>nsName</literal> element must not have any
+<literal>nsName</literal> or <literal>anyName</literal> descendant
+elements.</para>
+
+<para>A <literal>name</literal> element that occurs as the first child
+of an <literal>attribute</literal> element or as the descendant of the
+first child of an <literal>attribute</literal> element and that has an
+<literal>ns</literal> attribute with value equal to the empty string
+must not have content equal to <literal>xmlns</literal>.</para>
+
+<para>A <literal>name</literal> or <literal>nsName</literal> element
+that occurs as the first child of an <literal>attribute</literal>
+element or as the descendant of the first child of an
+<literal>attribute</literal> element must not have an
+<literal>ns</literal> attribute with value
+<literal>http://www.w3.org/2000/xmlns</literal>.</para>
+
+<note><para>The <xref linkend="infoset"/> defines the namespace URI of
+namespace declaration attributes to be
+<literal>http://www.w3.org/2000/xmlns</literal>.</para></note>
+
+<para>A <literal>data</literal> or <literal>value</literal> element
+must be correct in its use of datatypes. Specifically, the
+<literal>type</literal> attribute must identify a datatype within the
+datatype library identified by the value of the
+<literal>datatypeLibrary</literal> attribute. For a
+<literal>data</literal> element, the parameter list must be one that
+is allowed by the datatype (see <xref
+linkend="data-pattern"/>).</para>
+
+</section>
+
+<section>
+<title><literal>combine</literal> attribute</title>
+
+<para>For each <literal>grammar</literal> element, all
+<literal>define</literal> elements with the same name are combined
+together. For any name, there must not be more than one
+<literal>define</literal> element with that name that does not have a
+<literal>combine</literal> attribute. For any name, if there is a
+<literal>define</literal> element with that name that has a
+<literal>combine</literal> attribute with the value
+<literal>choice</literal>, then there must not also be a
+<literal>define</literal> element with that name that has a
+<literal>combine</literal> attribute with the value
+<literal>interleave</literal>. Thus, for any name, if there is more
+than one <literal>define</literal> element with that name, then there
+is a unique value for the <literal>combine</literal> attribute for
+that name. After determining this unique value, the
+<literal>combine</literal> attributes are removed. A pair of
+definitions</para>
+
+<programlisting>&lt;define name="<replaceable>n</replaceable>"&gt;
+ <replaceable>p1</replaceable>
+&lt;/define>
+&lt;define name="<replaceable>n</replaceable>"&gt;
+ <replaceable>p2</replaceable>
+&lt;/define></programlisting>
+
+<para>is combined into</para>
+
+<programlisting>&lt;define name="<replaceable>n</replaceable>">
+ &lt;<replaceable>c</replaceable>&gt;
+ <replaceable>p1</replaceable>
+ <replaceable>p2</replaceable>
+ &lt;/<replaceable>c</replaceable>&gt;
+&lt;/define></programlisting>
+
+<para>where <replaceable>c</replaceable> is the value of the
+<literal>combine</literal> attribute. Pairs of definitions are
+combined until there is exactly one <literal>define</literal> element
+for each name.</para>
+
+<para>Similarly, for each <literal>grammar</literal> element all
+<literal>start</literal> elements are combined together. There must
+not be more than one <literal>start</literal> element that does not
+have a <literal>combine</literal> attribute. If there is a
+<literal>start</literal> element that has a <literal>combine</literal>
+attribute with the value <literal>choice</literal>, there must not
+also be a <literal>start</literal> element that has a
+<literal>combine</literal> attribute with the value
+<literal>interleave</literal>.</para>
+
+</section>
+
+<section>
+<title><literal>grammar</literal> element</title>
+
+<para>In this rule, the schema is transformed so that its top-level
+element is <literal>grammar</literal> and so that it has no other
+<literal>grammar</literal> elements.</para>
+
+<para>Define the <firstterm>in-scope grammar</firstterm> for an
+element to be the nearest ancestor <literal>grammar</literal> element. A
+<literal>ref</literal> element <firstterm>refers to</firstterm> a
+<literal>define</literal> element if the value of their
+<literal>name</literal> attributes is the same and their in-scope
+grammars are the same. A <literal>parentRef</literal> element
+<firstterm>refers to</firstterm> a <literal>define</literal> element
+if the value of their <literal>name</literal> attributes is the same
+and the in-scope grammar of the in-scope grammar of the
+<literal>parentRef</literal> element is the same as the in-scope
+grammar of the <literal>define</literal> element. Every
+<literal>ref</literal> or <literal>parentRef</literal> element must
+refer to a <literal>define</literal> element. A
+<literal>grammar</literal> must have a <literal>start</literal> child
+element.</para>
+
+<para>First, transform the top-level pattern
+<replaceable>p</replaceable> into
+<literal>&lt;grammar>&lt;start><replaceable>p</replaceable>&lt;/start>&lt;/grammar></literal>.
+Next, rename <literal>define</literal> elements so that no two
+<literal>define</literal> elements anywhere in the schema have the
+same name. To rename a <literal>define</literal> element, change the
+value of its <literal>name</literal> attribute and change the value of
+the <literal>name</literal> attribute of all <literal>ref</literal>
+and <literal>parentRef</literal> elements that refer to that
+<literal>define</literal> element. Next, move all
+<literal>define</literal> elements to be children of the top-level
+<literal>grammar</literal> element, replace each nested
+<literal>grammar</literal> element by the child of its
+<literal>start</literal> element and rename each
+<literal>parentRef</literal> element to <literal>ref</literal>.</para>
+
+</section>
+
+
+<section id="define-ref">
+<title><literal>define</literal> and <literal>ref</literal> elements</title>
+
+<para>In this rule, the grammar is transformed so that every
+<literal>element</literal> element is the child of a
+<literal>define</literal> element, and the child of every
+<literal>define</literal> element is an <literal>element</literal>
+element.</para>
+
+<para>First, remove any <literal>define</literal> element that is not
+<firstterm>reachable</firstterm>. A <literal>define</literal> element
+is reachable if there is reachable <literal>ref</literal> element
+referring to it. A <literal>ref</literal> element is reachable if it
+is the descendant of the <literal>start</literal> element or of a
+reachable <literal>define</literal> element. Now, for
+each <literal>element</literal> element that is not the child of a
+<literal>define</literal> element, add a <literal>define</literal>
+element to the <literal>grammar</literal> element, and replace the
+<literal>element</literal> element by a <literal>ref</literal> element
+referring to the added <literal>define</literal> element. The value of
+the <literal>name</literal> attribute of the added
+<literal>define</literal> element must be different from value of the
+<literal>name</literal> attribute of all other
+<literal>define</literal> elements. The child of the added
+<literal>define</literal> element is the <literal>element</literal>
+element.</para>
+
+<para>Define a <literal>ref</literal> element to be
+<firstterm>expandable</firstterm> if it refers to a
+<literal>define</literal> element whose child is not an
+<literal>element</literal> element. For each <literal>ref</literal>
+element that is expandable and is a descendant of a
+<literal>start</literal> element or an <literal>element</literal>
+element, expand it by replacing the <literal>ref</literal> element by
+the child of the <literal>define</literal> element to which it refers and
+then recursively expanding any expandable <literal>ref</literal>
+elements in this replacement. This must not result in a loop.
+In other words expanding the replacement of a
+<literal>ref</literal> element having a <literal>name</literal> with
+value <replaceable>n</replaceable> must not require the expansion of
+<literal>ref</literal> element also having a <literal>name</literal>
+with value <replaceable>n</replaceable>. Finally, remove any
+<literal>define</literal> element whose child is not an
+<literal>element</literal> element.</para>
+
+</section>
+
+<section id="notAllowed">
+<title><literal>notAllowed</literal> element</title>
+
+<para>In this rule, the grammar is transformed so that a
+<literal>notAllowed</literal> element occurs only as the child of
+a <literal>start</literal> or <literal>element</literal> element. An
+<literal>attribute</literal>, <literal>list</literal>,
+<literal>group</literal>, <literal>interleave</literal>,
+or <literal>oneOrMore</literal> element that has a
+<literal>notAllowed</literal> child element is transformed into a
+<literal>notAllowed</literal> element. A <literal>choice</literal>
+element that has two <literal>notAllowed</literal> child elements is
+transformed into a <literal>notAllowed</literal> element. A
+<literal>choice</literal> element that has one
+<literal>notAllowed</literal> child element is transformed into its
+other child element. An <literal>except</literal> element that has a
+<literal>notAllowed</literal> child element is removed.
+The preceding transformations are applied
+repeatedly until none of them is applicable any more.
+Any <literal>define</literal> element that is no longer reachable
+is removed.</para>
+
+</section>
+
+<section>
+<title><literal>empty</literal> element</title>
+
+<para>In this rule, the grammar is transformed so that an
+<literal>empty</literal> element does not occur as a child of a
+<literal>group</literal>, <literal>interleave</literal>, or
+<literal>oneOrMore</literal> element or as the second child of
+a <literal>choice</literal> element. A <literal>group</literal>,
+<literal>interleave</literal> or <literal>choice</literal> element
+that has two <literal>empty</literal> child elements is transformed
+into an <literal>empty</literal> element. A <literal>group</literal>
+or <literal>interleave</literal> element that has one
+<literal>empty</literal> child element is transformed into its other
+child element. A <literal>choice</literal> element whose
+second child element is an <literal>empty</literal> element is
+transformed by interchanging its two child elements. A
+<literal>oneOrMore</literal> element that has an
+<literal>empty</literal> child element is transformed into an
+<literal>empty</literal> element. The preceding transformations are applied
+repeatedly until none of them is applicable any more.</para>
+
+</section>
+
+</section>
+
+<section id="simple-syntax">
+<title>Simple syntax</title>
+
+<para>After applying all the rules in <xref
+linkend="simplification"/>, the schema will match the following
+grammar:</para>
+
+<grammarref src="simple.rng"/>
+
+<para>With this grammar, no elements or attributes are allowed other
+than those explicitly shown.</para>
+
+<section id="simple-syntax-example">
+<title>Example</title>
+
+<para>The following is an example of how the schema in <xref
+linkend="full-syntax-example"/> can be transformed into the simple
+syntax:</para>
+
+<programlisting><![CDATA[<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="foo.element"/>
+ </start>
+
+ <define name="foo.element">
+ <element>
+ <name ns="">foo</name>
+ <group>
+ <ref name="bar1.element"/>
+ <ref name="bar2.element"/>
+ </group>
+ </element>
+ </define>
+
+ <define name="bar1.element">
+ <element>
+ <name ns="http://www.example.com/n1">bar1</name>
+ <empty/>
+ </element>
+ </define>
+
+ <define name="bar2.element">
+ <element>
+ <name ns="http://www.example.com/n2">bar2</name>
+ <empty/>
+ </element>
+ </define>
+</grammar>]]></programlisting>
+
+<note><para>Strictly speaking, the result of simplification is an
+instance of the data model rather than an XML document. For
+convenience, we use an XML document to represent an instance of the
+data model.</para></note>
+
+</section>
+
+</section>
+
+<section id="semantics">
+<title>Semantics</title>
+
+<para>In this section, we define the semantics of a correct RELAX NG
+schema that has been transformed into the simple syntax. The
+semantics of a RELAX NG schema consist of a specification of what XML
+documents are valid with respect to that schema. The semantics are
+described formally. The formalism uses axioms and inference rules.
+Axioms are propositions that are provable unconditionally. An
+inference rule consists of one or more antecedents and exactly one
+consequent. An antecedent is either positive or negative. If all the
+positive antecedents of an inference rule are provable and none of the
+negative antecedents are provable, then the consequent of the
+inference rule is provable. An XML document is valid with respect to a
+RELAX NG schema if and only if the proposition that it is valid is
+provable in the formalism specified in this section.</para>
+
+<note><para>This kind of formalism is similar to a proof system.
+However, a traditional proof system only has positive
+antecedents.</para></note>
+
+<para>The notation for inference rules separates the antecedents from
+the consequent by a horizontal line: the antecedents are above the
+line; the consequent is below the line. If an antecedent is of the
+form not(<replaceable>p</replaceable>), then it is a negative
+antecedent; otherwise, it is a positive antecedent. Both axioms and
+inferences
+rules may use variables. A variable has a name and optionally a
+subscript. The name of a variable is italicized. Each variable has a
+range that is determined by its name. Axioms and inference rules are
+implicitly universally quantified over the variables they contain. We
+explain this further below.</para>
+
+<para>The possibility that an inference rule or axiom may contain more
+than one occurrence of a particular variable requires that an identity
+relation be defined on each kind of object over which a variable can
+range. The identity relation for all kinds of object is value-based.
+Two objects of a particular kind are identical if the constituents of
+the objects are identical. For example, two attributes are considered
+the same if they have the same name and the same value. Two characters
+are identical if their Unicode character codes are the same.</para>
+
+<section id="name-classes">
+<title>Name classes</title>
+
+<para>The main semantic concept for name classes is that of a name
+belonging to a name class. A name class is an element that matches the
+production nameClass. A name is as defined in <xref
+linkend="data-model"/>: it consists of a namespace URI and a local
+name.</para>
+
+<para>We use the following notation:</para>
+
+<variablelist>
+
+<varlistentry><term><p:var range="name"/></term><listitem><para>is a variable
+that ranges over names</para></listitem></varlistentry>
+
+<varlistentry><term><p:var range="nameClass"/></term><listitem><para>ranges over name classes</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:var range="nameClass"/>
+ </p:judgement></term><listitem><para>
+
+asserts that name <p:var range="name"/> is a member of name class <p:var range="nameClass"/>
+
+</para></listitem></varlistentry>
+
+</variablelist>
+
+<para>We are now ready for our first axiom, which is called "anyName
+1":</para>
+
+<p:proofSystem>
+ <p:rule name="anyName 1">
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:element name="anyName"/>
+ </p:judgement>
+ </p:rule>
+</p:proofSystem>
+
+<para>This says for any name <p:var range="name"/>, <p:var
+range="name"/> belongs to the name class <p:element name="anyName"/>,
+in other words <p:element name="anyName"/> matches any name. Note the
+effect of the implicit universal quantification over the variables in
+the axiom: this is what makes the axiom apply for any name <p:var
+range="name"/>.</para>
+
+<para>Our first inference rule is almost as simple:</para>
+
+<p:proofSystem>
+ <p:rule name="anyName 2">
+ <p:not>
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:var range="nameClass"/>
+ </p:judgement>
+ </p:not>
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:element name="anyName">
+ <p:element name="except">
+ <p:var range="nameClass"/>
+ </p:element>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+</p:proofSystem>
+
+<para>This says that for any name <p:var range="name"/>
+and for any name class <p:var range="nameClass"/>,
+if <p:var range="name"/> does not belong to <p:var range="nameClass"/>,
+then <p:var range="name"/> belongs to
+ <p:element name="anyName">
+ <p:element name="except">
+ <p:var range="nameClass"/>
+ </p:element>
+ </p:element>. In other words, <p:element name="anyName">
+ <p:element name="except">
+ <p:var range="nameClass"/>
+ </p:element>
+ </p:element> matches any name that does not match <p:var range="nameClass"/>.</para>
+
+<para>We now need the following additional notation:</para>
+
+<variablelist>
+
+<varlistentry><term><p:var range="ncname"/></term>
+
+<listitem><para>ranges over local names; a local name is a string that
+matches the NCName production of <xref linkend="xml-names"/>, that is,
+a name with no colons</para></listitem>
+</varlistentry>
+
+<varlistentry><term><p:var range="uri"/></term><listitem><para>ranges over URIs</para></listitem></varlistentry>
+
+<varlistentry>
+<term>
+ <p:function name="name">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ </p:function>
+</term>
+<listitem><para>constructs a name with URI <p:var range="uri"/> and local
+name <p:var range="ncname"/></para></listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The remaining axioms and inference rules for name classes are as
+follows:</para>
+
+<p:proofSystem>
+
+ <p:rule name="nsName 1">
+ <p:judgement name="belongs">
+ <p:function name="name">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ </p:function>
+ <p:element name="nsName">
+ <p:attribute name="ns">
+ <p:var range="uri"/>
+ </p:attribute>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="nsName 2">
+ <p:not>
+ <p:judgement name="belongs">
+ <p:function name="name">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ </p:function>
+ <p:var range="nameClass"/>
+ </p:judgement>
+ </p:not>
+ <p:judgement name="belongs">
+ <p:function name="name">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ </p:function>
+ <p:element name="nsName">
+ <p:attribute name="ns">
+ <p:var range="uri"/>
+ </p:attribute>
+ <p:element name="except">
+ <p:var range="nameClass"/>
+ </p:element>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="name">
+ <p:judgement name="belongs">
+ <p:function name="name">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ </p:function>
+ <p:element name="name">
+ <p:attribute name="ns">
+ <p:var range="uri"/>
+ </p:attribute>
+ <p:var range="ncname"/>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="name choice 1">
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:var range="nameClass" sub="1"/>
+ </p:judgement>
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:element name="choice">
+ <p:var range="nameClass" sub="1"/>
+ <p:var range="nameClass" sub="2"/>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="name choice 2">
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:var range="nameClass" sub="2"/>
+ </p:judgement>
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:element name="choice">
+ <p:var range="nameClass" sub="1"/>
+ <p:var range="nameClass" sub="2"/>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+</p:proofSystem>
+
+</section>
+
+
+<section>
+<title>Patterns</title>
+
+<para>The axioms and inference rules for patterns use the following
+notation:</para>
+
+<variablelist>
+
+<varlistentry><term><p:var range="context"/></term><listitem><para>ranges
+over contexts (as defined in <xref
+linkend="data-model"/>)</para></listitem></varlistentry>
+
+<varlistentry><term><p:var range="att"/></term><listitem><para>ranges over
+sets of attributes; a set with a single member
+is considered the same as that member</para></listitem></varlistentry>
+
+<varlistentry><term><p:var
+range="mixed"/></term><listitem><para>ranges over sequences of
+elements and strings; a sequence with a single member is considered
+the same as that member; the sequences ranged over by <p:var
+range="mixed"/> may contain consecutive strings and may contain strings
+that are empty; thus, there are sequences ranged over by <p:var
+range="mixed"/> that cannot occur as the children of an
+element</para></listitem></varlistentry>
+
+<varlistentry><term><p:var range="pattern"/></term><listitem><para>ranges
+over patterns (elements matching the pattern
+production)</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern"/>
+ </p:judgement></term><listitem><para>
+
+asserts that with respect to context <p:var range="context"/>, the
+attributes <p:var range="att"/> and the sequence of elements and
+strings <p:var range="mixed"/> matches the pattern <p:var
+range="pattern"/></para></listitem></varlistentry>
+
+</variablelist>
+
+<section id="choice-pattern">
+<title><literal>choice</literal> pattern</title>
+
+<para>The semantics of the <literal>choice</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="choice 1">
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern" sub="1"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:element name="choice">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+
+ <p:rule name="choice 2">
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern" sub="2"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:element name="choice">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+
+
+</p:proofSystem>
+
+</section>
+
+<section>
+<title><literal>group</literal> pattern</title>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+
+<varlistentry><term><p:function name="append">
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ </p:function></term><listitem>
+<para>represents the concatenation of the sequences <p:var range="mixed" sub="1"/> and <p:var range="mixed" sub="2"/>
+
+</para></listitem></varlistentry>
+
+<varlistentry><term><p:function name="union">
+ <p:var range="att" sub="1"/>
+ <p:var range="att" sub="2"/>
+ </p:function></term><listitem>
+<para>represents the union of <p:var range="att" sub="1"/>
+and <p:var range="att" sub="2"/></para>
+</listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The semantics of the <literal>group</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="group">
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att" sub="1"/>
+ <p:var range="mixed" sub="1"/>
+ <p:var range="pattern" sub="1"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att" sub="2"/>
+ <p:var range="mixed" sub="2"/>
+ <p:var range="pattern" sub="2"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="union">
+ <p:var range="att" sub="1"/>
+ <p:var range="att" sub="2"/>
+ </p:function>
+ <p:function name="append">
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ </p:function>
+ <p:element name="group">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+
+</p:proofSystem>
+
+<note><para>The restriction in <xref linkend="attribute-restrictions"/>
+ensures that the set of attributes constructed in the consequent will
+not have multiple attributes with the same name.</para></note>
+
+</section>
+
+
+<section id="empty-pattern">
+<title><literal>empty</literal> pattern</title>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+<varlistentry><term><p:function name="emptySequence"/></term><listitem><para>represents an empty sequence</para></listitem></varlistentry>
+
+<varlistentry><term><p:function name="emptySet"/></term><listitem><para>represents an empty set</para></listitem></varlistentry>
+
+</variablelist>
+
+<para>The semantics of the <literal>empty</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="empty">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:function name="emptySequence"/>
+ <p:element name="empty"></p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ </p:rule>
+</p:proofSystem>
+
+</section>
+
+
+<section id="text-pattern">
+<title><literal>text</literal> pattern</title>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+<varlistentry><term><p:var range="string"/></term><listitem><para>ranges
+over strings</para></listitem></varlistentry>
+</variablelist>
+
+<para>The semantics of the <literal>text</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="text 1">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:function name="emptySequence"/>
+ <p:element name="text"></p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="text 2">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:var range="mixed"/>
+ <p:element name="text"></p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:function name="append">
+ <p:var range="mixed"/>
+ <p:var range="string"/>
+ </p:function>
+ <p:element name="text"></p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ </p:rule>
+
+</p:proofSystem>
+
+<para>The effect of the above rule is that a <literal>text</literal>
+element matches zero or more strings.</para>
+
+</section>
+
+
+<section>
+<title><literal>oneOrMore</literal> pattern</title>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+<varlistentry><term><p:judgement name="disjoint">
+ <p:var range="att" sub="1"/>
+ <p:var range="att" sub="2"/>
+ </p:judgement></term><listitem><para>
+asserts that there is no name that is
+the name of both an attribute in <p:var range="att" sub="1"/>
+and of an attribute in <p:var range="att" sub="2"/>
+</para></listitem></varlistentry>
+</variablelist>
+
+<para>The semantics of the <literal>oneOrMore</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="oneOrMore 1">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:element name="oneOrMore">
+ <p:var range="pattern"/>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="oneOrMore 2">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att" sub="1"/>
+ <p:var range="mixed" sub="1"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att" sub="2"/>
+ <p:var range="mixed" sub="2"/>
+ <p:element name="oneOrMore">
+ <p:var range="pattern"/>
+ </p:element>
+ </p:judgement>
+
+ <p:judgement name="disjoint">
+ <p:var range="att" sub="1"/>
+ <p:var range="att" sub="2"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="union">
+ <p:var range="att" sub="1"/>
+ <p:var range="att" sub="2"/>
+ </p:function>
+ <p:function name="append">
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ </p:function>
+ <p:element name="oneOrMore">
+ <p:var range="pattern"/>
+ </p:element>
+ </p:judgement>
+ </p:rule>
+
+</p:proofSystem>
+
+</section>
+
+
+<section>
+<title><literal>interleave</literal> pattern</title>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+<varlistentry><term><p:judgement name="interleave">
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ <p:var range="mixed" sub="3"/>
+ </p:judgement></term><listitem><para>
+
+asserts that <p:var range="mixed" sub="1"/>
+is an interleaving of <p:var range="mixed" sub="2"/>
+and <p:var range="mixed" sub="3"/>
+</para></listitem></varlistentry>
+
+</variablelist>
+
+<para>The semantics of interleaving are defined by the following rules.</para>
+
+
+<p:proofSystem>
+ <p:rule name="interleaves 1">
+
+ <p:judgement name="interleave">
+ <p:function name="emptySequence"/>
+ <p:function name="emptySequence"/>
+ <p:function name="emptySequence"/>
+ </p:judgement>
+
+ </p:rule>
+
+ <p:rule name="interleaves 2">
+
+ <p:judgement name="interleave">
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ <p:var range="mixed" sub="3"/>
+ </p:judgement>
+
+ <p:judgement name="interleave">
+ <p:function name="append">
+ <p:var range="mixed" sub="4"/>
+ <p:var range="mixed" sub="1"/>
+ </p:function>
+ <p:function name="append">
+ <p:var range="mixed" sub="4"/>
+ <p:var range="mixed" sub="2"/>
+ </p:function>
+ <p:var range="mixed" sub="3"/>
+ </p:judgement>
+
+ </p:rule>
+
+ <p:rule name="interleaves 3">
+
+ <p:judgement name="interleave">
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ <p:var range="mixed" sub="3"/>
+ </p:judgement>
+
+ <p:judgement name="interleave">
+ <p:function name="append">
+ <p:var range="mixed" sub="4"/>
+ <p:var range="mixed" sub="1"/>
+ </p:function>
+ <p:var range="mixed" sub="2"/>
+ <p:function name="append">
+ <p:var range="mixed" sub="4"/>
+ <p:var range="mixed" sub="3"/>
+ </p:function>
+ </p:judgement>
+
+ </p:rule>
+
+</p:proofSystem>
+
+<para>For example, the interleavings of
+<literal><![CDATA[<a/><a/>]]></literal> and
+<literal><![CDATA[<b/>]]></literal> are
+<literal><![CDATA[<a/><a/><b/>]]></literal>,
+<literal><![CDATA[<a/><b/><a/>]]></literal>, and
+<literal><![CDATA[<b/><a/><a/>]]></literal>.</para>
+
+<para>The semantics of the <literal>interleave</literal> pattern are
+as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="interleave">
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att" sub="1"/>
+ <p:var range="mixed" sub="1"/>
+ <p:var range="pattern" sub="1"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att" sub="2"/>
+ <p:var range="mixed" sub="2"/>
+ <p:var range="pattern" sub="2"/>
+ </p:judgement>
+
+ <p:judgement name="interleave">
+ <p:var range="mixed" sub="3"/>
+ <p:var range="mixed" sub="1"/>
+ <p:var range="mixed" sub="2"/>
+ </p:judgement>
+
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="union">
+ <p:var range="att" sub="1"/>
+ <p:var range="att" sub="2"/>
+ </p:function>
+ <p:var range="mixed" sub="3"/>
+ <p:element name="interleave">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+
+</p:proofSystem>
+
+<note><para>The restriction in <xref linkend="attribute-restrictions"/>
+ensures that the set of attributes constructed in the consequent will
+not have multiple attributes with the same name.</para></note>
+
+</section>
+
+<section id="element-pattern">
+<title><literal>element</literal> and <literal>attribute</literal> pattern</title>
+
+<para>The value of an attribute is always a single string, which may
+be empty. Thus, the empty sequence is not a possible attribute value.
+On the hand, the children of an element can be an empty sequence and
+cannot consist of an empty string. In order to ensure that validation
+handles attributes and elements consistently, we introduce a variant
+of matching called <firstterm>weak matching</firstterm>. Weak
+matching is used when matching the pattern for the value of an
+attribute or for the attributes and children of an element. We use
+the following notation to define weak matching.</para>
+
+<variablelist>
+
+<varlistentry><term><p:function
+name="emptyString"/></term><listitem><para>represents an empty
+string</para></listitem></varlistentry>
+
+<varlistentry><term><p:var
+range="whiteSpace"/></term><listitem><para>ranges over the empty
+sequence and strings that consist entirely of
+whitespace</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="weakMatch">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern"/>
+ </p:judgement></term><listitem><para>
+
+asserts that with respect to context <p:var range="context"/>, the
+attributes <p:var range="att"/> and the sequence of elements and
+strings <p:var range="mixed"/> weakly matches the pattern <p:var
+range="pattern"/></para></listitem></varlistentry>
+
+</variablelist>
+
+<para>The semantics of weak matching are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="weak match 1">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ <p:judgement name="weakMatch">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ </p:rule>
+ <p:rule name="weak match 2">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:function name="emptySequence"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ <p:judgement name="weakMatch">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="whiteSpace"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ </p:rule>
+ <p:rule name="weak match 3">
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:function name="emptyString"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ <p:judgement name="weakMatch">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:function name="emptySequence"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ </p:rule>
+</p:proofSystem>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+
+<varlistentry><term><p:function name="attribute">
+ <p:var range="name"/>
+ <p:var range="string"/>
+ </p:function></term><listitem><para>
+
+constructs an attribute with name <p:var range="name"/>
+and value <p:var range="string"/>
+</para></listitem></varlistentry>
+
+<varlistentry><term><p:function name="element">
+ <p:var range="name"/>
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ </p:function></term><listitem><para>
+
+constructs an element with name <p:var range="name"/>,
+context <p:var range="context"/>,
+attributes <p:var range="att"/>
+and mixed sequence <p:var range="mixed"/> as children
+</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="okAsChildren">
+ <p:var range="mixed"/>
+ </p:judgement></term><listitem><para>
+
+asserts that the mixed sequence <p:var range="mixed"/> can occur as
+the children of an element: it does not contain any member that is an
+empty string, nor does it contain two consecutive members that are
+both strings</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="bind">
+ <p:var range="ncname"/>
+ <p:var range="nameClass"/>
+ <p:var range="pattern"/>
+ </p:judgement></term><listitem><para>
+
+asserts that the grammar contains
+<p:element name="define">
+ <p:attribute name="name">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:element name="element">
+ <p:var range="nameClass"/>
+ <p:var range="pattern"/>
+ </p:element>
+</p:element>
+</para></listitem></varlistentry>
+
+</variablelist>
+
+<para>The semantics of the <literal>attribute</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="attribute">
+
+ <p:judgement name="weakMatch">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:var range="string"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:var range="nameClass"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="attribute">
+ <p:var range="name"/>
+ <p:var range="string"/>
+ </p:function>
+ <p:function name="emptySequence"/>
+ <p:element name="attribute">
+ <p:var range="nameClass"/>
+ <p:var range="pattern"/>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+
+</p:proofSystem>
+
+<para>The semantics of the <literal>element</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="element">
+
+ <p:judgement name="weakMatch">
+ <p:var range="context" sub="1"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+
+ <p:judgement name="belongs">
+ <p:var range="name"/>
+ <p:var range="nameClass"/>
+ </p:judgement>
+
+ <p:judgement name="okAsChildren">
+ <p:var range="mixed"/>
+ </p:judgement>
+
+ <p:judgement name="bind">
+ <p:var range="ncname"/>
+ <p:var range="nameClass"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context" sub="2"/>
+ <p:function name="emptySet"/>
+ <p:function name="append">
+ <p:var range="whiteSpace" sub="1"/>
+ <p:function name="element">
+ <p:var range="name"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="att"/>
+ <p:var range="mixed"/>
+ </p:function>
+ <p:var range="whiteSpace" sub="2"/>
+ </p:function>
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:var range="ncname"/>
+ </p:attribute>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+
+</p:proofSystem>
+
+
+</section>
+
+<section id="data-pattern">
+<title><literal>data</literal> and <literal>value</literal> pattern</title>
+
+<para>RELAX NG relies on datatype libraries to perform datatyping.
+A datatype library is identified by a URI. A datatype within a
+datatype library is identified by an NCName. A datatype library
+provides two services.</para>
+
+<itemizedlist>
+
+<listitem><para>It can determine whether a string is a legal
+representation of a datatype. This service accepts a list of zero or
+more parameters. For example, a string datatype might have a parameter
+specifying the length of a string. The datatype library determines
+what parameters are applicable for each datatype.</para></listitem>
+
+<listitem><para>It can determine whether two strings represent the
+same value of a datatype. This service does not have any
+parameters.</para></listitem>
+
+</itemizedlist>
+
+<para>Both services may make use of the context of a string. For
+example, a datatype representing a QName would use the namespace
+map.</para>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+<varlistentry><term><p:judgement name="datatypeAllows">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="params"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement></term><listitem><para>
+
+asserts that in the datatype library identified by URI <p:var range="uri"/>, the string <p:var range="string"/> interpreted with
+context <p:var range="context"/> is a legal
+value of datatype <p:var range="ncname"/> with parameters <p:var range="params"/></para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string" sub="2"/>
+ <p:var range="context" sub="2"/>
+ </p:judgement></term><listitem><para>
+
+asserts that in the datatype library identified by URI <p:var range="uri"/>, string <p:var range="string" sub="1"/> interpreted with
+context <p:var range="context" sub="1"/> represents the same value of
+the datatype <p:var range="ncname"/> as the string <p:var range="string" sub="2"/> interpreted in the context of <p:var range="context" sub="2"/>
+</para></listitem></varlistentry>
+
+<varlistentry><term><p:var range="params"/></term><listitem><para>ranges over sequences of parameters</para></listitem></varlistentry>
+
+<varlistentry><term><p:context>
+ <p:var range="context"/>
+ </p:context></term><listitem><para>
+
+within the start-tag of a pattern refers to the context
+of the pattern element
+</para></listitem></varlistentry>
+
+<varlistentry>
+<term>
+ <p:function name="context">
+ <p:var range="uri"/>
+ <p:var range="context"/>
+ </p:function>
+</term>
+<listitem><para>constructs a context which is the same as <p:var range="context"/>
+except that the default namespace is <p:var range="uri"/>; if <p:var
+range="uri"/> is the empty string, then there is no default namespace
+in the constructed context</para></listitem></varlistentry>
+
+</variablelist>
+
+<para>The datatypeEqual function must be reflexive, transitive
+and symmetric, that is, the following inference rules must hold:</para>
+
+<p:proofSystem>
+ <p:rule name="datatypeEqual reflexive">
+ <p:judgement name="datatypeAllows">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="params"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement>
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement>
+ </p:rule>
+ <p:rule name="datatypeEqual transitive">
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string" sub="2"/>
+ <p:var range="context" sub="2"/>
+ </p:judgement>
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="2"/>
+ <p:var range="context" sub="3"/>
+ <p:var range="string" sub="3"/>
+ <p:var range="context" sub="3"/>
+ </p:judgement>
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string" sub="3"/>
+ <p:var range="context" sub="3"/>
+ </p:judgement>
+ </p:rule>
+ <p:rule name="datatypeEqual symmetric">
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string" sub="2"/>
+ <p:var range="context" sub="2"/>
+ </p:judgement>
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="2"/>
+ <p:var range="context" sub="2"/>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ </p:judgement>
+ </p:rule>
+</p:proofSystem>
+
+<para>The semantics of the <literal>data</literal> and
+<literal>value</literal> patterns are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="value">
+ <p:judgement name="datatypeEqual">
+ <p:var range="uri" sub="1"/>
+ <p:var range="ncname"/>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string" sub="2"/>
+ <p:function name="context">
+ <p:var range="uri" sub="2"/>
+ <p:var range="context" sub="2"/>
+ </p:function>
+ </p:judgement>
+ <p:judgement name="match">
+ <p:var range="context" sub="1"/>
+ <p:function name="emptySet"/>
+ <p:var range="string" sub="1"/>
+ <p:element name="value">
+ <p:attribute name="datatypeLibrary">
+ <p:var range="uri" sub="1"/>
+ </p:attribute>
+ <p:attribute name="type">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:attribute name="ns">
+ <p:var range="uri" sub="2"/>
+ </p:attribute>
+ <p:context>
+ <p:var range="context" sub="2"/>
+ </p:context>
+ <p:var range="string" sub="2"/>
+ </p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="data 1">
+ <p:judgement name="datatypeAllows">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="params"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement>
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:var range="string"/>
+ <p:element name="data">
+ <p:attribute name="datatypeLibrary">
+ <p:var range="uri"/>
+ </p:attribute>
+ <p:attribute name="type">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:var range="params"/>
+ </p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="data 2">
+ <p:judgement name="datatypeAllows">
+ <p:var range="uri"/>
+ <p:var range="ncname"/>
+ <p:var range="params"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement>
+ <p:not>
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:var range="att"/>
+ <p:var range="string"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ </p:not>
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:var range="string"/>
+ <p:element name="data">
+ <p:attribute name="datatypeLibrary">
+ <p:var range="uri"/>
+ </p:attribute>
+ <p:attribute name="type">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:var range="params"/>
+ <p:element name="except">
+ <p:var range="pattern"/>
+ </p:element>
+ </p:element>
+ <p:function name="emptySet"/>
+ <p:function name="emptySet"/>
+ </p:judgement>
+ </p:rule>
+
+</p:proofSystem>
+
+</section>
+
+<section id="built-in-datatype">
+<title>Built-in datatype library</title>
+
+<para>The empty URI identifies a special built-in datatype library.
+This provides two datatypes, <literal>string</literal> and
+<literal>token</literal>. No parameters are allowed for either of
+these datatypes.</para>
+
+<variablelist>
+<varlistentry><term>
+ <p:judgement name="equal">
+ <p:var range="string" sub="1"/>
+ <p:var range="string" sub="2"/>
+ </p:judgement></term>
+<listitem><para>asserts that <p:var range="string" sub="1"/>
+and <p:var range="string" sub="2"/> are identical</para></listitem>
+</varlistentry>
+
+<varlistentry><term>
+ <p:function name="normalizeWhiteSpace">
+ <p:var range="string"/>
+ </p:function>
+</term>
+<listitem><para>returns the string <p:var range="string"/>,
+with leading and trailing whitespace characters removed,
+and with each other maximal sequence of whitespace characters
+replaced by a single space character </para></listitem>
+</varlistentry>
+</variablelist>
+
+<para>The semantics of the two built-in datatypes are as
+follows:</para>
+
+<p:proofSystem>
+
+ <p:rule name="string allows">
+ <p:judgement name="datatypeAllows">
+ <p:function name="emptyString"/>
+ <p:string>string</p:string>
+ <p:function name="emptySequence"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="string equal">
+ <p:judgement name="datatypeEqual">
+ <p:function name="emptyString"/>
+ <p:string>string</p:string>
+ <p:var range="string"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string"/>
+ <p:var range="context" sub="2"/>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="token allows">
+ <p:judgement name="datatypeAllows">
+ <p:function name="emptyString"/>
+ <p:string>token</p:string>
+ <p:function name="emptySequence"/>
+ <p:var range="string"/>
+ <p:var range="context"/>
+ </p:judgement>
+ </p:rule>
+
+ <p:rule name="token equal">
+ <p:judgement name="equal">
+ <p:function name="normalizeWhiteSpace">
+ <p:var range="string" sub="1"/>
+ </p:function>
+ <p:function name="normalizeWhiteSpace">
+ <p:var range="string" sub="2"/>
+ </p:function>
+ </p:judgement>
+ <p:judgement name="datatypeEqual">
+ <p:function name="emptyString"/>
+ <p:string>token</p:string>
+ <p:var range="string" sub="1"/>
+ <p:var range="context" sub="1"/>
+ <p:var range="string" sub="2"/>
+ <p:var range="context" sub="2"/>
+ </p:judgement>
+ </p:rule>
+
+</p:proofSystem>
+
+</section>
+
+<section>
+<title><literal>list</literal> pattern</title>
+
+<para>We use the following additional notation:</para>
+
+<variablelist>
+<varlistentry><term><p:function name="split">
+ <p:var range="string"/>
+ </p:function></term><listitem><para>
+
+returns a sequence of strings one for each whitespace delimited token
+of <p:var range="string"/>; each string in the returned sequence will
+be non-empty and will not contain any
+whitespace</para></listitem></varlistentry>
+
+</variablelist>
+
+<para>The semantics of the <literal>list</literal> pattern are as follows:</para>
+
+<p:proofSystem>
+ <p:rule name="list">
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:function name="split">
+ <p:var range="string"/>
+ </p:function>
+ <p:var range="pattern"/>
+ </p:judgement>
+
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:var range="string"/>
+ <p:element name="list">
+ <p:var range="pattern"/>
+ </p:element>
+ </p:judgement>
+
+ </p:rule>
+</p:proofSystem>
+
+<note><para>It is crucial in the above inference rule that the
+sequence that is matched against a pattern can contain consecutive
+strings.</para></note>
+
+</section>
+
+</section>
+
+<section id="validity">
+<title>Validity</title>
+
+<para>Now we can define when an element is valid with respect to a
+schema. We use the following additional notation:</para>
+
+<variablelist>
+
+<varlistentry><term><p:var range="element"/></term><listitem><para>ranges over elements</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="valid">
+ <p:var range="element"/>
+ </p:judgement></term><listitem><para>
+
+asserts that the element <p:var range="element"/> is valid with
+respect to the grammar</para></listitem></varlistentry>
+
+<varlistentry><term><p:judgement name="start">
+ <p:var range="pattern"/>
+ </p:judgement></term><listitem><para>
+asserts that the grammar contains
+<p:element name="start"><p:var range="pattern"/> </p:element></para></listitem></varlistentry>
+
+</variablelist>
+
+<para>An element is valid if together with an empty set of attributes
+it matches the <literal>start</literal> pattern of the grammar.</para>
+
+<p:proofSystem>
+ <p:rule name="valid">
+ <p:judgement name="start">
+ <p:var range="pattern"/>
+ </p:judgement>
+ <p:judgement name="match">
+ <p:var range="context"/>
+ <p:function name="emptySet"/>
+ <p:var range="element"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ <p:judgement name="valid">
+ <p:var range="element"/>
+ </p:judgement>
+ </p:rule>
+
+
+</p:proofSystem>
+
+</section>
+
+<section>
+<title>Example</title>
+
+<para>Let <p:var range="element" sub="0"/> be</para>
+
+<p:formula>
+
+<p:function name="element">
+ <p:function name="name">
+ <p:function name="emptyString"/>
+ <p:string>foo</p:string>
+ </p:function>
+ <p:var range="context" sub="0"/>
+ <p:function name="emptySet"/>
+ <p:var range="mixed"/>
+</p:function>
+
+</p:formula>
+
+<para>where <p:var range="mixed"/> is</para>
+
+<p:formula>
+ <p:function name="append">
+ <p:var range="element" sub="1"/>
+ <p:var range="element" sub="2"/>
+ </p:function>
+</p:formula>
+
+<para>and <p:var range="element" sub="1"/> is</para>
+
+<p:formula>
+ <p:function name="element">
+ <p:function name="name">
+ <p:string>http://www.example.com/n1</p:string>
+ <p:string>bar1</p:string>
+ </p:function>
+ <p:var range="context" sub="1"/>
+ <p:function name="emptySet"/>
+ <p:function name="emptySequence"/>
+ </p:function>
+</p:formula>
+
+<para>and <p:var range="element" sub="2"/> is</para>
+
+<p:formula>
+ <p:function name="element">
+ <p:function name="name">
+ <p:string>http://www.example.com/n2</p:string>
+ <p:string>bar2</p:string>
+ </p:function>
+ <p:var range="context" sub="2"/>
+ <p:function name="emptySet"/>
+ <p:function name="emptySequence"/>
+ </p:function>
+</p:formula>
+
+<para>Assuming appropriate definitions of <p:var range="context"
+sub="0"/>, <p:var range="context" sub="1"/> and <p:var range="context"
+sub="2"/>, this represents the document in <xref
+linkend="data-model-example"/>.</para>
+
+<para>We now show how <p:var range="element" sub="0"/> can be shown to
+be valid with respect to the schema in <xref
+linkend="simple-syntax-example"/>. The schema is equivalent to the
+following propositions:</para>
+
+<p:formula>
+ <p:judgement name="start">
+ <p:element name="ref">
+ <p:attribute name="name"><p:string>foo</p:string></p:attribute>
+ </p:element>
+ </p:judgement>
+</p:formula>
+
+<p:formula>
+ <p:judgement name="bind">
+ <p:string>foo.element</p:string>
+ <p:element name="name">
+ <p:attribute name="ns"><p:function name="emptyString"/></p:attribute>
+ <p:string>foo</p:string>
+ </p:element>
+ <p:element name="group">
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>bar1</p:string>
+ </p:attribute>
+ </p:element>
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>bar2</p:string>
+ </p:attribute>
+ </p:element>
+ </p:element>
+ </p:judgement>
+</p:formula>
+
+<p:formula>
+ <p:judgement name="bind">
+ <p:string>bar1.element</p:string>
+ <p:element name="name">
+ <p:attribute name="ns">
+ <p:string>http://www.example.com/n1</p:string>
+ </p:attribute>
+ <p:string>bar1</p:string>
+ </p:element>
+ <p:element name="empty"/>
+ </p:judgement>
+</p:formula>
+
+<p:formula>
+ <p:judgement name="bind">
+ <p:string>bar2.element</p:string>
+ <p:element name="name">
+ <p:attribute name="ns">
+ <p:string>http://www.example.com/n2</p:string>
+ </p:attribute>
+ <p:string>bar2</p:string>
+ </p:element>
+ <p:element name="empty"/>
+ </p:judgement>
+</p:formula>
+
+
+<para>Let name class <p:var range="nameClass" sub="1"/> be</para>
+
+<p:formula>
+ <p:element name="name">
+ <p:attribute name="ns">
+ <p:string>http://www.example.com/n1</p:string>
+ </p:attribute>
+ <p:string>bar1</p:string>
+ </p:element>
+</p:formula>
+
+<para>and let <p:var range="nameClass" sub="2"/> be</para>
+
+<p:formula>
+ <p:element name="name">
+ <p:attribute name="ns">
+ <p:string>http://www.example.com/n2</p:string>
+ </p:attribute>
+ <p:string>bar2</p:string>
+ </p:element>
+</p:formula>
+
+<para>Then, by the inference rule (name) in <xref
+linkend="name-classes"/>, we have</para>
+
+<p:formula>
+ <p:judgement name="belongs">
+ <p:function name="name">
+ <p:string>http://www.example.com/n1</p:string>
+ <p:string>bar1</p:string>
+ </p:function>
+ <p:var range="nameClass" sub="1"/>
+ </p:judgement>
+</p:formula>
+
+<para>and</para>
+
+<p:formula>
+ <p:judgement name="belongs">
+ <p:function name="name">
+ <p:string>http://www.example.com/n2</p:string>
+ <p:string>bar2</p:string>
+ </p:function>
+ <p:var range="nameClass" sub="2"/>
+ </p:judgement>
+</p:formula>
+
+
+<para>By the inference rule (empty) in <xref linkend="empty-pattern"/>,
+we have</para>
+
+<p:formula>
+ <p:judgement name="match">
+ <p:var range="context" sub="1"/>
+ <p:function name="emptySet"/>
+ <p:function name="emptySequence"/>
+ <p:element name="empty"></p:element>
+ </p:judgement>
+</p:formula>
+
+<para>and</para>
+
+<p:formula>
+ <p:judgement name="match">
+ <p:var range="context" sub="2"/>
+ <p:function name="emptySet"/>
+ <p:function name="emptySequence"/>
+ <p:element name="empty"></p:element>
+ </p:judgement>
+</p:formula>
+
+<para>Thus by the inference rule (element) in <xref
+linkend="element-pattern"/>, we have</para>
+
+<p:formula>
+ <p:judgement name="match">
+ <p:var range="context" sub="0"/>
+ <p:function name="emptySet"/>
+ <p:var range="element" sub="1"/>
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>bar1</p:string>
+ </p:attribute>
+ </p:element>
+ </p:judgement>
+</p:formula>
+
+<para>Note that we have chosen <p:var
+range="context" sub="0"/>, since any context is allowed.</para>
+
+<para>Likewise, we have</para>
+
+<p:formula>
+ <p:judgement name="match">
+ <p:var range="context" sub="0"/>
+ <p:function name="emptySet"/>
+ <p:var range="element" sub="2"/>
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>bar2</p:string>
+ </p:attribute>
+ </p:element>
+ </p:judgement>
+</p:formula>
+
+<para>By the inference rule (group) in <xref
+linkend="choice-pattern"/>, we have</para>
+
+<p:formula>
+ <p:judgement name="match">
+ <p:var range="context" sub="0"/>
+ <p:function name="emptySet"/>
+ <p:function name="append">
+ <p:var range="element" sub="1"/>
+ <p:var range="element" sub="2"/>
+ </p:function>
+ <p:element name="group">
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>bar1</p:string>
+ </p:attribute>
+ </p:element>
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>bar2</p:string>
+ </p:attribute>
+ </p:element>
+ </p:element>
+ </p:judgement>
+</p:formula>
+
+<para>By the inference rule (element) in <xref
+linkend="element-pattern"/>, we have</para>
+
+<p:formula>
+ <p:judgement name="match">
+ <p:var range="context" sub="3"/>
+ <p:function name="emptySet"/>
+ <p:function name="element">
+ <p:function name="name">
+ <p:function name="emptyString"/>
+ <p:string>foo</p:string>
+ </p:function>
+ <p:var range="context" sub="0"/>
+ <p:function name="emptySet"/>
+ <p:var range="mixed"/>
+ </p:function>
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:string>foo</p:string>
+ </p:attribute>
+ </p:element>
+ </p:judgement>
+</p:formula>
+
+<para>Here <p:var range="context" sub="3"/> is an arbitrary
+context.</para>
+
+<para>Thus we can apply the inference rule (valid) in <xref
+linkend="validity"/> and obtain</para>
+
+<p:formula>
+ <p:judgement name="valid">
+ <p:var range="element" sub="0"/>
+ </p:judgement>
+</p:formula>
+
+</section>
+
+</section>
+
+<section id="restriction">
+<title>Restrictions</title>
+
+<para>The following constraints are all checked after the grammar has
+been transformed to the simple form described in <xref
+linkend="simple-syntax"/>. The purpose of these restrictions is to
+catch user errors and to facilitate implementation.</para>
+
+<section id="contextual-restriction">
+<title>Contextual restrictions</title>
+
+<para>In this section we describe restrictions on where elements are
+allowed in the schema based on the names of the ancestor elements. We
+use the concept of a <firstterm>prohibited path</firstterm> to
+describe these restrictions. A path is a sequence of NCNames separated
+by <literal>/</literal> or <literal>//</literal>.</para>
+
+<itemizedlist>
+
+<listitem><para>An element matches a path
+<replaceable>x</replaceable>, where <replaceable>x</replaceable> is an
+NCName, if and only if the local name of the element is
+<replaceable>x</replaceable></para></listitem>
+
+<listitem><para>An element matches a path
+<replaceable>x</replaceable><literal>/</literal><replaceable>p</replaceable>,
+where <replaceable>x</replaceable> is an NCName and
+<replaceable>p</replaceable> is a path, if and only if the local name
+of the element is <replaceable>x</replaceable> and the element has a
+child that matches <replaceable>p</replaceable></para></listitem>
+
+<listitem><para>An element matches a path
+<replaceable>x</replaceable><literal>//</literal><replaceable>p</replaceable>,
+where <replaceable>x</replaceable> is an NCName and
+<replaceable>p</replaceable> is a path, if and only if the local name
+of the element is <replaceable>x</replaceable> and the element has a
+descendant that matches <replaceable>p</replaceable></para></listitem>
+
+</itemizedlist>
+
+<para>For example, the element</para>
+
+<programlisting><![CDATA[<foo>
+ <bar>
+ <baz/>
+ </bar>
+</foo>]]></programlisting>
+
+<para>matches the paths <literal>foo</literal>,
+<literal>foo/bar</literal>, <literal>foo//bar</literal>,
+<literal>foo//baz</literal>, <literal>foo/bar/baz</literal>,
+<literal>foo/bar//baz</literal> and <literal>foo//bar/baz</literal>,
+but not <literal>foo/baz</literal> or
+<literal>foobar</literal>.</para>
+
+<para>A correct RELAX NG schema must be such that, after
+transformation to the simple form, it does not contain any element
+that matches a prohibited path.</para>
+
+<section>
+<title><literal>attribute</literal> pattern</title>
+
+<para>The following paths are prohibited:</para>
+
+<itemizedlist>
+<listitem><para><literal>attribute//ref</literal></para></listitem>
+<listitem><para><literal>attribute//attribute</literal></para></listitem>
+</itemizedlist>
+
+</section>
+
+<section>
+<title><literal>oneOrMore</literal> pattern</title>
+
+<para>The following paths are prohibited:</para>
+
+<itemizedlist>
+<listitem><para><literal>oneOrMore//group//attribute</literal></para></listitem>
+<listitem><para><literal>oneOrMore//interleave//attribute</literal></para></listitem>
+</itemizedlist>
+
+</section>
+
+<section id="list-restrictions">
+<title><literal>list</literal> pattern</title>
+
+<para>The following paths are prohibited:</para>
+
+<itemizedlist>
+<listitem><para><literal>list//list</literal></para></listitem>
+<listitem><para><literal>list//ref</literal></para></listitem>
+<listitem><para><literal>list//attribute</literal></para></listitem>
+<listitem><para><literal>list//text</literal></para></listitem>
+<listitem><para><literal>list//interleave</literal></para></listitem>
+</itemizedlist>
+</section>
+
+<section id="context-data-except">
+<title><literal>except</literal> in <literal>data</literal> pattern</title>
+
+<para>The following paths are prohibited:</para>
+
+<itemizedlist>
+<listitem><para><literal>data/except//attribute</literal></para></listitem>
+<listitem><para><literal>data/except//ref</literal></para></listitem>
+<listitem><para><literal>data/except//text</literal></para></listitem>
+<listitem><para><literal>data/except//list</literal></para></listitem>
+<listitem><para><literal>data/except//group</literal></para></listitem>
+<listitem><para><literal>data/except//interleave</literal></para></listitem>
+<listitem><para><literal>data/except//oneOrMore</literal></para></listitem>
+<listitem><para><literal>data/except//empty</literal></para></listitem>
+</itemizedlist>
+
+<note><para>This implies that an <literal>except</literal> element
+with a <literal>data</literal> parent can contain only
+<literal>data</literal>, <literal>value</literal> and
+<literal>choice</literal> elements.</para></note>
+
+</section>
+
+<section id="context-start">
+<title><literal>start</literal> element</title>
+
+<para>The following paths are prohibited:</para>
+
+<itemizedlist>
+<listitem><para><literal>start//attribute</literal></para></listitem>
+<listitem><para><literal>start//data</literal></para></listitem>
+<listitem><para><literal>start//value</literal></para></listitem>
+<listitem><para><literal>start//text</literal></para></listitem>
+<listitem><para><literal>start//list</literal></para></listitem>
+<listitem><para><literal>start//group</literal></para></listitem>
+<listitem><para><literal>start//interleave</literal></para></listitem>
+<listitem><para><literal>start//oneOrMore</literal></para></listitem>
+<listitem><para><literal>start//empty</literal></para></listitem>
+</itemizedlist>
+</section>
+
+</section>
+
+<section id="string-sequences">
+<title>String sequences</title>
+
+<para>RELAX NG does not allow a pattern such as:</para>
+
+<programlisting><![CDATA[<element name="foo">
+ <group>
+ <data type="int"/>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+</element>]]></programlisting>
+
+<para>Nor does it allow a pattern such as:</para>
+
+<programlisting><![CDATA[<element name="foo">
+ <group>
+ <data type="int"/>
+ <text/>
+ </group>
+</element>]]></programlisting>
+
+<para>More generally, if the pattern for the content of an element or
+attribute contains</para>
+
+<itemizedlist>
+
+<listitem><para>a pattern that can match a child
+(that is, an <literal>element</literal>, <literal>data</literal>,
+<literal>value</literal>, <literal>list</literal> or
+<literal>text</literal> pattern), and</para></listitem>
+
+<listitem><para>a pattern that matches a single string (that is, a
+<literal>data</literal>, <literal>value</literal> or
+<literal>list</literal> pattern),</para></listitem>
+
+</itemizedlist>
+
+<para>then the two patterns must be alternatives to each other.</para>
+
+<para>This rule does not apply to patterns occurring within a
+<literal>list</literal> pattern.</para>
+
+<para>To formalize this, we use the concept of a content-type. A
+pattern that is allowable as the content of an element has one of
+three content-types: empty, complex and simple. We use the following
+notation.</para>
+
+<variablelist>
+
+<varlistentry>
+<term><p:function name="empty"/></term>
+<listitem><para>returns the empty content-type</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><p:function name="complex"/></term>
+<listitem><para>returns the complex content-type</para></listitem>
+</varlistentry>
+
+<varlistentry>
+<term><p:function name="simple"/></term>
+<listitem><para>returns the simple content-type</para></listitem>
+</varlistentry>
+
+<varlistentry><term><p:var range="contentType"/></term>
+<listitem><para>ranges over content-types</para></listitem>
+</varlistentry>
+
+<varlistentry><term>
+ <p:judgement name="groupable">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:judgement>
+</term>
+<listitem><para>asserts that the content-types <p:var
+range="contentType" sub="1"/> and <p:var range="contentType" sub="2"/>
+are groupable</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The empty content-type is groupable with anything. In addition,
+the complex content-type is groupable with the complex content-type. The
+following rules formalize this.</para>
+
+<p:proofSystem>
+<p:rule name="group empty 1">
+ <p:judgement name="groupable">
+ <p:function name="empty"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+</p:rule>
+<p:rule name="group empty 2">
+ <p:judgement name="groupable">
+ <p:var range="contentType"/>
+ <p:function name="empty"/>
+ </p:judgement>
+</p:rule>
+<p:rule name="group complex">
+ <p:judgement name="groupable">
+ <p:function name="complex"/>
+ <p:function name="complex"/>
+ </p:judgement>
+</p:rule>
+</p:proofSystem>
+
+<para>Some patterns have a content-type. We use the following
+additional notation.</para>
+
+<variablelist>
+
+<varlistentry><term>
+ <p:judgement name="contentType">
+ <p:var range="pattern"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+</term>
+<listitem><para>asserts that pattern <p:var range="pattern"/> has
+content-type <p:var range="contentType"/></para></listitem>
+</varlistentry>
+
+<varlistentry><term>
+ <p:function name="max">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:function>
+</term>
+<listitem><para>returns the maximum of <p:var range="contentType"
+sub="1"/> and <p:var range="contentType" sub="2"/> where the
+content-types in increasing order are <p:function name="empty"/>,
+<p:function name="complex"/>, <p:function
+name="simple"/></para></listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>The following rules define when a pattern has a content-type and,
+if so, what it is.</para>
+
+<p:proofSystem>
+<p:rule name="value">
+ <p:judgement name="contentType">
+ <p:element name="value">
+ <p:attribute name="datatypeLibrary">
+ <p:var range="uri" sub="1"/>
+ </p:attribute>
+ <p:attribute name="type">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:attribute name="ns">
+ <p:var range="uri" sub="2"/>
+ </p:attribute>
+ <p:var range="string"/>
+ </p:element>
+ <p:function name="simple"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="data 1">
+ <p:judgement name="contentType">
+ <p:element name="data">
+ <p:attribute name="datatypeLibrary">
+ <p:var range="uri"/>
+ </p:attribute>
+ <p:attribute name="type">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:var range="params"/>
+ </p:element>
+ <p:function name="simple"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="data 2">
+ <p:judgement name="contentType">
+ <p:var range="pattern"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:element name="data">
+ <p:attribute name="datatypeLibrary">
+ <p:var range="uri"/>
+ </p:attribute>
+ <p:attribute name="type">
+ <p:var range="ncname"/>
+ </p:attribute>
+ <p:var range="params"/>
+ <p:element name="except">
+ <p:var range="pattern"/>
+ </p:element>
+ </p:element>
+ <p:function name="simple"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="list">
+ <p:judgement name="contentType">
+ <p:element name="list">
+ <p:var range="pattern"/>
+ </p:element>
+ <p:function name="simple"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="text">
+ <p:judgement name="contentType">
+ <p:element name="text"/>
+ <p:function name="complex"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="ref">
+ <p:judgement name="contentType">
+ <p:element name="ref">
+ <p:attribute name="name">
+ <p:var range="ncname"/>
+ </p:attribute>
+ </p:element>
+ <p:function name="complex"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="empty">
+ <p:judgement name="contentType">
+ <p:element name="empty"/>
+ <p:function name="empty"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="attribute">
+ <p:judgement name="contentType">
+ <p:var range="pattern"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:element name="attribute">
+ <p:var range="nameClass"/>
+ <p:var range="pattern"/>
+ </p:element>
+ <p:function name="empty"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="group">
+ <p:judgement name="contentType">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="contentType" sub="1"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:var range="pattern" sub="2"/>
+ <p:var range="contentType" sub="2"/>
+ </p:judgement>
+ <p:judgement name="groupable">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:element name="group">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ <p:function name="max">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:function>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="interleave">
+ <p:judgement name="contentType">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="contentType" sub="1"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:var range="pattern" sub="2"/>
+ <p:var range="contentType" sub="2"/>
+ </p:judgement>
+ <p:judgement name="groupable">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:element name="interleave">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ <p:function name="max">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:function>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="oneOrMore">
+ <p:judgement name="contentType">
+ <p:var range="pattern"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+ <p:judgement name="groupable">
+ <p:var range="contentType"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:element name="oneOrMore">
+ <p:var range="pattern"/>
+ </p:element>
+ <p:var range="contentType"/>
+ </p:judgement>
+</p:rule>
+
+<p:rule name="choice">
+ <p:judgement name="contentType">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="contentType" sub="1"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:var range="pattern" sub="2"/>
+ <p:var range="contentType" sub="2"/>
+ </p:judgement>
+ <p:judgement name="contentType">
+ <p:element name="choice">
+ <p:var range="pattern" sub="1"/>
+ <p:var range="pattern" sub="2"/>
+ </p:element>
+ <p:function name="max">
+ <p:var range="contentType" sub="1"/>
+ <p:var range="contentType" sub="2"/>
+ </p:function>
+ </p:judgement>
+</p:rule>
+
+</p:proofSystem>
+
+<note><para>The antecedent in the (data 2) rule above is in fact
+redundant because of the prohibited paths in <xref
+linkend="context-data-except"/>.</para></note>
+
+<para>Now we can describe the restriction. We use the following
+notation.</para>
+
+<variablelist>
+
+<varlistentry><term>
+ <p:judgement name="incorrectSchema"/>
+</term>
+<listitem><para>asserts that the schema is incorrect</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>All patterns occurring as the content of an element pattern must
+have a content-type.</para>
+
+<p:proofSystem>
+
+<p:rule name="element">
+ <p:judgement name="bind">
+ <p:var range="ncname"/>
+ <p:var range="nameClass"/>
+ <p:var range="pattern"/>
+ </p:judgement>
+ <p:not>
+ <p:judgement name="contentType">
+ <p:var range="pattern"/>
+ <p:var range="contentType"/>
+ </p:judgement>
+ </p:not>
+ <p:judgement name="incorrectSchema"/>
+</p:rule>
+
+</p:proofSystem>
+
+</section>
+
+<section id="attribute-restrictions">
+<title>Restrictions on attributes</title>
+
+<para>Duplicate attributes are not allowed. More precisely, for a
+pattern <literal>&lt;group> <replaceable>p1</replaceable>
+<replaceable>p2</replaceable> &lt;/group></literal> or
+<literal>&lt;interleave> <replaceable>p1</replaceable>
+<replaceable>p2</replaceable> &lt;/interleave></literal>, there must
+not be a name that belongs to both the name class of an
+<literal>attribute</literal> pattern occurring in
+<replaceable>p1</replaceable> and the name class of an
+<literal>attribute</literal> pattern occurring in
+<replaceable>p2</replaceable>. A pattern <replaceable>p1</replaceable>
+is defined to <firstterm>occur in</firstterm> a pattern
+<replaceable>p2</replaceable> if</para>
+
+<itemizedlist>
+
+<listitem><para><replaceable>p1</replaceable> is
+<replaceable>p2</replaceable>, or</para></listitem>
+
+<listitem><para><replaceable>p2</replaceable> is a
+<literal>choice</literal>, <literal>interleave</literal>,
+<literal>group</literal> or <literal>oneOrMore</literal> element and
+<replaceable>p1</replaceable> occurs in one or more children of
+<replaceable>p2</replaceable>.</para></listitem>
+
+</itemizedlist>
+
+<para>Attributes using infinite name classes must be repeated. More
+precisely, an <literal>attribute</literal> element that has an
+<literal>anyName</literal> or <literal>nsName</literal> descendant
+element must have a <literal>oneOrMore</literal> ancestor
+element.</para>
+
+<note><para>This restriction is necessary for closure under
+negation.</para></note>
+
+</section>
+
+<section id="interleave-restrictions">
+<title>Restrictions on <literal>interleave</literal></title>
+
+<para>For a pattern <literal>&lt;interleave>
+<replaceable>p1</replaceable> <replaceable>p2</replaceable>
+&lt;/interleave></literal>,</para>
+
+<itemizedlist>
+
+<listitem><para>there must not be a name that belongs to both the name
+class of an <literal>element</literal> pattern referenced by a
+<literal>ref</literal> pattern occurring in
+<replaceable>p1</replaceable> and the name class of an
+<literal>element</literal> pattern referenced by a
+<literal>ref</literal> pattern occurring in
+<replaceable>p2</replaceable>, and</para></listitem>
+
+<listitem><para>a <literal>text</literal> pattern must not occur in
+both <replaceable>p1</replaceable> and
+<replaceable>p2</replaceable>.</para></listitem>
+
+</itemizedlist>
+
+<para><xref linkend="attribute-restrictions"/> defines when one
+pattern is considered to occur in another pattern.</para>
+
+</section>
+
+</section>
+
+<section id="conformance">
+<title>Conformance</title>
+
+<para>A conforming RELAX NG validator must be able to determine for
+any XML document whether it is a correct RELAX NG schema. A
+conforming RELAX NG validator must be able to determine for any XML
+document and for any correct RELAX NG schema whether the document is
+valid with respect to the schema.</para>
+
+<para>However, the requirements in the preceding paragraph do not
+apply if the schema uses a datatype library that the validator does
+not support. A conforming RELAX NG validator is only required to
+support the built-in datatype library described in <xref
+linkend="built-in-datatype"/>. A validator that claims conformance to
+RELAX NG should document which datatype libraries it supports. The
+requirements in the preceding paragraph also do not apply if the
+schema includes <literal>externalRef</literal> or
+<literal>include</literal> elements and the validator is unable to
+retrieve the resource identified by the URI or is unable to construct
+an element from the retrieved resource. A validator that claims
+conformance to RELAX NG should document its capabilities for handling
+URI references.</para>
+
+</section>
+
+<appendix>
+<title>RELAX NG schema for RELAX NG</title>
+
+<rngref src="relaxng.rng"/>
+
+</appendix>
+
+<appendix>
+<title>Changes since version 0.9</title>
+
+<para>The changes in this version relative to version 0.9
+are as follows:</para>
+
+<itemizedlist>
+
+<listitem><para>in the namespace URI, <literal>0.9</literal> has been
+changed to <literal>1.0</literal></para></listitem>
+
+<listitem><para><literal>data/except//empty</literal> has been added
+as a prohibited path (see <xref
+linkend="context-data-except"/>)</para></listitem>
+
+<listitem><para><literal>start//empty</literal> has been added
+as a prohibited path (see <xref
+linkend="context-start"/>)</para></listitem>
+
+<listitem><para><xref linkend="number-child-elements"/> now specifies how a
+<literal>list</literal> element with more than one child element is
+transformed</para></listitem>
+
+<listitem><para><xref linkend="notAllowed"/> now specifies how a
+<literal>notAllowed</literal> element occurring in an
+<literal>except</literal> element is transformed</para></listitem>
+
+<listitem><para>although a relative URI is not allowed as the value of
+the <literal>ns</literal> and <literal>datatypeLibrary</literal>
+attributes, an empty string is allowed (see <xref
+linkend="full-syntax"/>)</para></listitem>
+
+<listitem><para>the removal of unreachable definitions in <xref
+linkend="define-ref"/> is now correctly specified</para></listitem>
+
+<listitem><para><xref linkend="notAllowed"/> now specifies that
+<literal>define</literal> elements that are no longer reachable are
+removed</para></listitem>
+
+<listitem><para><xref linkend="constraints"/> has been added; the
+restrictions on the contents of <literal>except</literal> in name
+classes that are now specified in the newly added section were
+previously specified in a subsection of <xref
+linkend="contextual-restriction"/>, which has been
+removed</para></listitem>
+
+<listitem><para>the treatment of element and attribute values that
+consist only of whitespace has been refined (see <xref
+linkend="element-pattern"/> and <xref
+linkend="data-pattern"/>)</para></listitem>
+
+<listitem><para>attributes with infinite name classes are now required
+to be repeated (see <xref
+linkend="attribute-restrictions"/>)</para></listitem>
+
+<listitem><para>restrictions have been imposed on
+<literal>interleave</literal> (see <xref
+linkend="interleave-restrictions"/>); <literal>list//interleave</literal>
+has been added as a prohibited path (see <xref
+linkend="list-restrictions"/>)</para></listitem>
+
+<listitem><para>some of the prohibited paths in <xref
+linkend="contextual-restriction"/> have been corrected to use
+<literal>ref</literal> rather than
+<literal>element</literal></para></listitem>
+
+<listitem><para>an error in the inference rule (text 1) in <xref
+linkend="text-pattern"/> has been corrected</para></listitem>
+
+<listitem><para>the value of the <literal>ns</literal> attribute is
+now unconstrained (see <xref
+linkend="full-syntax"/>)</para></listitem>
+
+</itemizedlist>
+
+</appendix>
+
+<appendix>
+<title>RELAX NG TC (Non-Normative)</title>
+
+<para>This specification was prepared and approved for publication by
+the RELAX NG TC. The current members of the TC are:</para>
+
+<itemizedlist>
+<listitem><para>Fabio Arciniegas</para></listitem>
+<listitem><para>James Clark</para></listitem>
+<listitem><para>Mike Fitzgerald</para></listitem>
+<listitem><para>KAWAGUCHI Kohsuke</para></listitem>
+<listitem><para>Josh Lubell</para></listitem>
+<listitem><para>MURATA Makoto</para></listitem>
+<listitem><para>Norman Walsh</para></listitem>
+<listitem><para>David Webber</para></listitem>
+</itemizedlist>
+
+</appendix>
+
+<bibliography><title>References</title>
+
+<bibliodiv><title>Normative</title>
+
+<bibliomixed id="xml-rec"><abbrev>XML 1.0</abbrev>Tim Bray,
+Jean Paoli, and
+C. M. Sperberg-McQueen, Eve Maler, editors.
+<citetitle><ulink url="http://www.w3.org/TR/REC-xml">Extensible Markup
+Language (XML) 1.0 Second Edition</ulink></citetitle>.
+W3C (World Wide Web Consortium), 2000.</bibliomixed>
+
+<bibliomixed id="xml-names"><abbrev>XML Namespaces</abbrev>Tim Bray,
+Dave Hollander,
+and Andrew Layman, editors.
+<citetitle><ulink url="http://www.w3.org/TR/REC-xml-names/">Namespaces in
+XML</ulink></citetitle>.
+W3C (World Wide Web Consortium), 1999.</bibliomixed>
+
+<bibliomixed id="xlink"><abbrev>XLink</abbrev>Steve DeRose, Eve Maler
+and David Orchard, editors.
+<citetitle><ulink url="http://www.w3.org/TR/xlink/">XML Linking
+Language (XLink) Version 1.0</ulink></citetitle>.
+W3C (World Wide Web Consortium), 2001.</bibliomixed>
+
+<bibliomixed id="infoset"><abbrev>XML Infoset</abbrev>John Cowan, Richard Tobin,
+editors.
+<citetitle><ulink url="http://www.w3.org/TR/xml-infoset/">XML
+Information Set</ulink></citetitle>.
+W3C (World Wide Web Consortium), 2001.</bibliomixed>
+
+<bibliomixed id="rfc2396"><abbrev>RFC 2396</abbrev>T. Berners-Lee, R. Fielding, L. Masinter.
+<citetitle><ulink url="http://www.ietf.org/rfc/rfc2396.txt" >RFC 2396:
+Uniform Resource Identifiers (URI): Generic
+Syntax</ulink></citetitle>.
+IETF (Internet Engineering Task Force). 1998.</bibliomixed>
+
+<bibliomixed id="rfc2732"><abbrev>RFC 2732</abbrev>R. Hinden, B. Carpenter, L. Masinter.
+<citetitle><ulink url="http://www.ietf.org/rfc/rfc2732.txt">RFC 2732: Format for Literal IPv6 Addresses in URL's</ulink></citetitle>.
+IETF (Internet Engineering Task Force), 1999.</bibliomixed>
+
+<bibliomixed id="rfc3023"><abbrev>RFC 3023</abbrev> M. Murata,
+S. St.Laurent, D. Kohn. <citetitle><ulink
+url="http://www.ietf.org/rfc/rfc3023.txt">RFC 3023: XML Media
+Types</ulink></citetitle>. IETF (Internet Engineering Task Force),
+2001.</bibliomixed>
+
+</bibliodiv>
+
+<bibliodiv><title>Non-Normative</title>
+
+<bibliomixed id="xmlschema-2"><abbrev>W3C XML Schema Datatypes</abbrev>Paul V. Biron, Ashok Malhotra, editors.
+<citetitle><ulink url="http://www.w3.org/TR/xmlschema-2/">XML Schema Part 2: Datatypes</ulink></citetitle>.
+W3C (World Wide Web Consortium), 2001.</bibliomixed>
+
+<bibliomixed id="trex"><abbrev>TREX</abbrev>James Clark.
+<citetitle><ulink url="http://www.thaiopensource.com/trex/">TREX - Tree Regular Expressions for XML</ulink></citetitle>.
+Thai Open Source Software Center, 2001.</bibliomixed>
+
+<bibliomixed id="relax"><abbrev>RELAX</abbrev>MURATA Makoto.
+<citetitle><ulink url="http://www.xml.gr.jp/relax/">RELAX (Regular
+Language description for XML)</ulink></citetitle>. INSTAC
+(Information Technology Research and Standardization Center), 2001.</bibliomixed>
+
+<bibliomixed id="xsfd"><abbrev>XML Schema Formal</abbrev>Allen Brown,
+Matthew Fuchs, Jonathan Robie, Philip Wadler, editors.
+<citetitle><ulink url="http://www.w3.org/TR/xmlschema-formal/">XML Schema: Formal Description</ulink></citetitle>.
+W3C (World Wide Web Consortium), 2001.</bibliomixed>
+
+<bibliomixed id="tutorial"><abbrev>Tutorial</abbrev>James Clark,
+Makoto MURATA, editors. <citetitle><ulink
+url="http://www.oasis-open.org/committees/relax-ng/tutorial.html">RELAX
+NG Tutorial</ulink></citetitle>. OASIS, 2001.</bibliomixed>
+
+</bibliodiv>
+
+</bibliography>
+
+</article>
diff --git a/test/relaxng/table.rng b/test/relaxng/table.rng
new file mode 100644
index 0000000..c14e603
--- /dev/null
+++ b/test/relaxng/table.rng
@@ -0,0 +1,21 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+<define name="cell.content">
+ <notAllowed/>
+</define>
+
+<start>
+ <element name="table">
+ <oneOrMore>
+ <element name="tr">
+ <oneOrMore>
+ <element name="td">
+ <ref name="cell.content"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+</start>
+
+</grammar>
diff --git a/test/relaxng/testsuite.xml b/test/relaxng/testsuite.xml
new file mode 100644
index 0000000..09a8f38
--- /dev/null
+++ b/test/relaxng/testsuite.xml
@@ -0,0 +1,1708 @@
+<testSuite>
+<author>Daniel Veillard</author>
+<email>daniel@veillard.com</email>
+<documentation>For libxml2 implementation of Relax NG spec.</documentation>
+<testSuite>
+<documentation>Test of node matches</documentation>
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <anyName>
+ <except>
+ <nsName ns="http://example.org"/>
+ </except>
+ </anyName>
+ <empty/>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo xmlns="http://example.org/"/>
+</valid>
+<valid>
+<foo xmlns="http://EXAMPLE.ORG"/>
+</valid>
+<invalid>
+<foo xmlns="http://example.org"/>
+</invalid>
+<invalid>
+<a:foo xmlns:a="http://example.org"/>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="top" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <element name="foo" ns="http://example.org">
+ <empty/>
+ </element>
+ <element>
+ <anyName>
+ <except>
+ <nsName ns="http://example.org"/>
+ </except>
+ </anyName>
+ <empty/>
+ </element>
+ </interleave>
+</element>
+</correct>
+<invalid>
+<top>
+<foo/>
+<bar/>
+</top>
+</invalid>
+<invalid>
+<top>
+<foo xmlns="http://example.org"/>
+<bar xmlns="http://example.org"/>
+</top>
+</invalid>
+<valid>
+<top>
+<foo xmlns="http://example.org"/>
+<bar/>
+</top>
+</valid>
+<valid>
+<top>
+<bar/>
+<foo xmlns="http://example.org"/>
+</top>
+</valid>
+<valid>
+<top>
+<foo xmlns="http://example.org"/>
+<bar xmlns="http://example.org/"/>
+</top>
+</valid>
+<valid>
+<top>
+<bar xmlns="http://example.org/"/>
+<foo xmlns="http://example.org"/>
+</top>
+</valid>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Test of indeterminism</documentation>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="baz">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="baz">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="baz">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<invalid>
+<foo>
+ <bar/>
+ <baz/>
+</foo>
+</invalid>
+<invalid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <bar/>
+ <baz/>
+</foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="baz">
+ <empty/>
+ </element>
+ </choice>
+ <element name="baz">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+<invalid>
+<foo>
+ <bar/>
+ <baz/>
+ <baz/>
+</foo>
+</invalid>
+<invalid>
+<foo>
+ <baz/>
+ <bar/>
+ <baz/>
+</foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <zeroOrMore>
+ <choice>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="baz">
+ <empty/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </choice>
+</element>
+</correct>
+<valid>
+<foo/>
+</valid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <baz/>
+ <baz/>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <bar/>
+ <baz/>
+ <bar/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <element name="bar">
+ <empty/>
+ </element>
+ </optional>
+ <element name="baz">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+<invalid>
+<foo>
+ <bar/>
+ <bar/>
+ <baz/>
+</foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <element name="bar">
+ <empty/>
+ </element>
+ </optional>
+ <element name="bar">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<invalid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <oneOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </oneOrMore>
+ </optional>
+ <element name="baz">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <baz/>
+</foo>
+</valid>
+<invalid>
+<foo>
+ <bar/>
+ <bar/>
+</foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <optional>
+ <oneOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </oneOrMore>
+ </optional>
+ <element name="bar">
+ <empty/>
+ </element>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <group>
+ <zeroOrMore>
+ <choice>
+ <element name="bar">
+ <empty/>
+ </element>
+ <element name="baz">
+ <empty/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ <element name="bar">
+ <empty/>
+ </element>
+ </group>
+</element>
+</correct>
+<invalid>
+<foo/>
+</invalid>
+<valid>
+<foo>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <bar/>
+ <bar/>
+ <bar/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <baz/>
+ <baz/>
+ <bar/>
+</foo>
+</valid>
+<valid>
+<foo>
+ <baz/>
+ <bar/>
+ <baz/>
+ <bar/>
+</foo>
+</valid>
+<invalid>
+<foo>
+ <bar/>
+ <baz/>
+ <bar/>
+ <baz/>
+</foo>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <element name="label">
+ <empty/>
+ </element>
+ <optional>
+ <element name="opt">
+ <empty/>
+ </element>
+ </optional>
+ <element name="item">
+ <empty/>
+ </element>
+ </oneOrMore>
+</element>
+</correct>
+<invalid>
+<list>
+</list>
+</invalid>
+<valid>
+<list>
+ <label/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <opt/>
+ <item/>
+ <label/>
+ <opt/>
+ <item/>
+</list>
+</valid>
+<invalid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <opt/>
+ <opt/>
+ <item/>
+</list>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <element name="label">
+ <empty/>
+ </element>
+ <zeroOrMore>
+ <element name="opt">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="item">
+ <empty/>
+ </element>
+ </oneOrMore>
+</element>
+</correct>
+<invalid>
+<list>
+</list>
+</invalid>
+<valid>
+<list>
+ <label/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <opt/>
+ <item/>
+ <label/>
+ <opt/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <opt/>
+ <opt/>
+ <item/>
+</list>
+</valid>
+</testCase>
+<testCase>
+<correct>
+<element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <element name="label">
+ <empty/>
+ </element>
+ <zeroOrMore>
+ <element name="opt">
+ <empty/>
+ </element>
+ <element name="opt2">
+ <empty/>
+ </element>
+ </zeroOrMore>
+ <element name="item">
+ <empty/>
+ </element>
+ </oneOrMore>
+</element>
+</correct>
+<invalid>
+<list>
+</list>
+</invalid>
+<valid>
+<list>
+ <label/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <opt/>
+ <opt2/>
+ <item/>
+ <label/>
+ <opt/>
+ <opt2/>
+ <item/>
+</list>
+</valid>
+<valid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <opt/>
+ <opt2/>
+ <opt/>
+ <opt2/>
+ <item/>
+</list>
+</valid>
+<invalid>
+<list>
+ <label/>
+ <opt/>
+ <item/>
+ <label/>
+ <item/>
+</list>
+</invalid>
+<invalid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <opt2/>
+ <opt/>
+ <item/>
+</list>
+</invalid>
+<invalid>
+<list>
+ <label/>
+ <item/>
+ <label/>
+ <opt/>
+ <opt2/>
+ <opt/>
+ <item/>
+</list>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Test of grammars merging</documentation>
+<testCase>
+<resource name="dbk.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="p"/>
+ </start>
+ <define name="p.ext">
+ <notAllowed/>
+ </define>
+ <define name="p">
+ <element name="p">
+ <choice>
+ <ref name="p.ext"/>
+ <empty/>
+ <element name="a">
+ <text/>
+ </element>
+ </choice>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <include href="dbk.rng"/>
+ <define name="p.ext" combine="choice">
+ <element name="b">
+ <text/>
+ </element>
+ </define>
+ </grammar>
+ </start>
+</grammar>
+</correct>
+<valid>
+<p/>
+</valid>
+<valid>
+<p>
+ <a/>
+</p>
+</valid>
+<valid>
+<p>
+ <b/>
+</p>
+</valid>
+<invalid>
+<b/>
+</invalid>
+<invalid>
+<p>
+ <b/>
+ <b/>
+</p>
+</invalid>
+</testCase>
+<testCase>
+<resource name="dbk.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="p"/>
+ </start>
+ <define name="p.ext">
+ <notAllowed/>
+ </define>
+ <define name="p">
+ <element name="p">
+ <choice>
+ <ref name="p.ext"/>
+ <empty/>
+ <element name="a">
+ <text/>
+ </element>
+ </choice>
+ </element>
+ </define>
+ <define name="c">
+ <element name="c">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <include href="dbk.rng"/>
+ <define name="p.ext" combine="choice">
+ <choice>
+ <ref name="c"/>
+ <parentRef name="d"/>
+ <element name="b">
+ <text/>
+ </element>
+ </choice>
+ </define>
+ </grammar>
+ </start>
+ <define name="d">
+ <element name="d">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid>
+<p/>
+</valid>
+<valid>
+<p>
+ <a/>
+</p>
+</valid>
+<valid>
+<p>
+ <b/>
+</p>
+</valid>
+<valid>
+<p>
+ <c/>
+</p>
+</valid>
+<valid>
+<p>
+ <d/>
+</p>
+</valid>
+<invalid>
+<b/>
+</invalid>
+<invalid>
+<c/>
+</invalid>
+<invalid>
+<d/>
+</invalid>
+<invalid>
+<p>
+ <b/>
+ <c/>
+</p>
+</invalid>
+<invalid>
+<p>
+ <d/>
+ <c/>
+</p>
+</invalid>
+</testCase>
+<testCase>
+<resource name="dbk.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="p"/>
+ </start>
+ <define name="p.ext">
+ <notAllowed/>
+ </define>
+ <define name="p">
+ <element name="p">
+ <choice>
+ <ref name="p.ext"/>
+ <empty/>
+ <element name="a">
+ <text/>
+ </element>
+ </choice>
+ </element>
+ </define>
+ <define name="c">
+ <element name="c">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<resource name="proof.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="e"/>
+ </start>
+ <define name="d">
+ <element name="d">
+ <empty/>
+ </element>
+ </define>
+ <define name="e">
+ <element name="e">
+ <empty/>
+ </element>
+ </define>
+ <define name="f">
+ <element name="f">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <include href="dbk.rng"/>
+ <define name="p.ext" combine="choice">
+ <choice>
+ <ref name="c"/>
+ <grammar>
+ <include href="proof.rng"/>
+ <start combine="choice">
+ <ref name="d"/>
+ </start>
+ </grammar>
+ <element name="b">
+ <text/>
+ </element>
+ </choice>
+ </define>
+ </grammar>
+ </start>
+ <define name="g">
+ <element name="g">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid>
+<p/>
+</valid>
+<valid>
+<p>
+ <a/>
+</p>
+</valid>
+<valid>
+<p>
+ <b/>
+</p>
+</valid>
+<valid>
+<p>
+ <c/>
+</p>
+</valid>
+<valid>
+<p>
+ <d/>
+</p>
+</valid>
+<valid>
+<p>
+ <e/>
+</p>
+</valid>
+<invalid>
+<p>
+ <f/>
+</p>
+</invalid>
+<invalid>
+<p>
+ <g/>
+</p>
+</invalid>
+<invalid>
+<b/>
+</invalid>
+<invalid>
+<c/>
+</invalid>
+<invalid>
+<d/>
+</invalid>
+<invalid>
+<e/>
+</invalid>
+<invalid>
+<f/>
+</invalid>
+<invalid>
+<g/>
+</invalid>
+<invalid>
+<p>
+ <d/>
+ <c/>
+</p>
+</invalid>
+<invalid>
+<p>
+ <d/>
+ <e/>
+</p>
+</invalid>
+</testCase>
+<testCase>
+<resource name="dbk.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="p"/>
+ </start>
+ <define name="p.ext">
+ <notAllowed/>
+ </define>
+ <define name="p">
+ <element name="p">
+ <choice>
+ <ref name="p.ext"/>
+ <empty/>
+ <element name="a">
+ <text/>
+ </element>
+ </choice>
+ </element>
+ </define>
+ <define name="c">
+ <element name="c">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<resource name="proof.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ ns="http://example.org/ns/proofsystem">
+ <start>
+ <ref name="e"/>
+ </start>
+ <define name="d">
+ <element name="d">
+ <empty/>
+ </element>
+ </define>
+ <define name="e">
+ <element name="e">
+ <empty/>
+ </element>
+ </define>
+ <define name="f">
+ <element name="f">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <grammar>
+ <include href="dbk.rng"/>
+ <define name="p.ext" combine="choice">
+ <choice>
+ <ref name="c"/>
+ <grammar>
+ <include href="proof.rng"/>
+ <start combine="choice">
+ <ref name="d"/>
+ </start>
+ </grammar>
+ <element name="b">
+ <text/>
+ </element>
+ </choice>
+ </define>
+ </grammar>
+ </start>
+ <define name="g">
+ <element name="g">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</correct>
+<valid>
+<p/>
+</valid>
+<valid>
+<p>
+ <a/>
+</p>
+</valid>
+<valid>
+<p>
+ <b/>
+</p>
+</valid>
+<valid>
+<p>
+ <c/>
+</p>
+</valid>
+<valid>
+<p xmlns:p="http://example.org/ns/proofsystem">
+ <p:d/>
+</p>
+</valid>
+<invalid>
+<p>
+ <d/>
+</p>
+</invalid>
+<valid>
+<p xmlns:p="http://example.org/ns/proofsystem">
+ <p:e/>
+</p>
+</valid>
+<invalid>
+<p>
+ <e/>
+</p>
+</invalid>
+<invalid>
+<p xmlns:p="http://example.org/ns/proofsystem">
+ <p:f/>
+</p>
+</invalid>
+<invalid>
+<p>
+ <f/>
+</p>
+</invalid>
+<invalid>
+<p>
+ <g/>
+</p>
+</invalid>
+<invalid>
+<b/>
+</invalid>
+<invalid>
+<c/>
+</invalid>
+<invalid>
+<d/>
+</invalid>
+<invalid>
+<e/>
+</invalid>
+<invalid>
+<f/>
+</invalid>
+<invalid>
+<g/>
+</invalid>
+<invalid>
+<p xmlns:p="http://example.org/ns/proofsystem">
+ <p:d/>
+ <c/>
+</p>
+</invalid>
+<invalid>
+<p xmlns:p="http://example.org/ns/proofsystem">
+ <p:d/>
+ <p:e/>
+</p>
+</invalid>
+</testCase>
+<testCase>
+<resource name="ext.rng">
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="p"/>
+ </start>
+ <define name="p">
+ <element name="p">
+ <empty/>
+ </element>
+ </define>
+</grammar>
+</resource>
+<correct>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="top">
+ <choice>
+ <ref name="include1"/>
+ <ref name="include2"/>
+ </choice>
+ </element>
+ </start>
+ <define name="include1">
+ <grammar>
+ <include href="ext.rng">
+ <start>
+ <element name="a">
+ <choice>
+ <empty/>
+ <ref name="p"/>
+ </choice>
+ </element>
+ </start>
+ </include>
+ </grammar>
+ </define>
+ <define name="include2">
+ <grammar>
+ <include href="ext.rng">
+ <start>
+ <element name="b">
+ <choice>
+ <empty/>
+ <ref name="p"/>
+ </choice>
+ </element>
+ </start>
+ </include>
+ </grammar>
+ </define>
+</grammar>
+</correct>
+<invalid>
+<top/>
+</invalid>
+<invalid>
+<a/>
+</invalid>
+<invalid>
+<b/>
+</invalid>
+<invalid>
+<p/>
+</invalid>
+<valid>
+<top>
+ <a/>
+</top>
+</valid>
+<valid>
+<top>
+ <b/>
+</top>
+</valid>
+<valid>
+<top>
+ <a>
+ <p/>
+ </a>
+</top>
+</valid>
+<valid>
+<top>
+ <b>
+ <p/>
+ </b>
+</top>
+</valid>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Test of ID/IDREF</documentation>
+<testCase>
+<correct>
+<element name="top" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <zeroOrMore>
+ <choice>
+ <element name="ref">
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="xref">
+ <attribute name="link">
+ <data type="IDREF"/>
+ </attribute>
+ <text/>
+ </element>
+ </choice>
+ </zeroOrMore>
+</element>
+</correct>
+<valid>
+<top>
+</top>
+</valid>
+<invalid>
+<top>
+ <xref link="id1"/>
+</top>
+</invalid>
+<valid>
+<top>
+ <ref id="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <xref link="id1"/>
+ <ref id="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <xref link=" id1 "/>
+ <ref id=" id1 "/>
+ <xref link="id1 "/>
+ <xref link=" id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <ref id="id1"/>
+ <xref link="id1"/>
+</top>
+</valid>
+<invalid>
+<top>
+ <ref id="id1"/>
+ <ref id="id1"/>
+</top>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element name="top" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <zeroOrMore>
+ <choice>
+ <element name="ref">
+ <attribute name="id">
+ <data type="ID"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="xref">
+ <attribute name="link">
+ <data type="IDREFS"/>
+ </attribute>
+ <text/>
+ </element>
+ </choice>
+ </zeroOrMore>
+</element>
+</correct>
+<valid>
+<top>
+</top>
+</valid>
+<invalid>
+<top>
+ <xref link="id1"/>
+</top>
+</invalid>
+<valid>
+<top>
+ <ref id="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <xref link="id1"/>
+ <ref id="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <xref link="id1 id1"/>
+ <ref id="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <ref id="id1"/>
+ <xref link="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <ref id="id2"/>
+ <xref link="id1 id2"/>
+ <ref id="id1"/>
+</top>
+</valid>
+<valid>
+<top>
+ <ref id="id2"/>
+ <xref link=" id2 id1 id2 "/>
+ <ref id="id1"/>
+</top>
+</valid>
+<invalid>
+<top>
+ <ref id="id2"/>
+ <xref link="id1 id2"/>
+</top>
+</invalid>
+<invalid>
+<top>
+ <xref link="id1 id2"/>
+ <ref id="id1"/>
+</top>
+</invalid>
+<invalid>
+<top>
+ <ref id="id1"/>
+ <ref id="id1"/>
+</top>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Test of ENTITY/ENTITIES</documentation>
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ENTITY"/>
+</element>
+</correct>
+<invalid>
+<doc></doc>
+</invalid>
+<invalid>
+<doc>foo</doc>
+</invalid>
+<valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+<doc>foo</doc>
+</valid>
+<valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+<doc> foo </doc>
+</valid>
+<invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+<doc>foo bar</doc>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ENTITIES"/>
+</element>
+</correct>
+<invalid>
+<doc></doc>
+</invalid>
+<invalid>
+<doc>foo</doc>
+</invalid>
+<valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
+<doc> foo bar </doc>
+</valid>
+<valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
+<doc> foo bar foo</doc>
+</valid>
+<invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;]&gt;">
+<doc>foo bar</doc>
+</invalid>
+</testCase>
+</testSuite>
+<testSuite>
+<documentation>Test of Mixed</documentation>
+<testCase>
+<correct>
+<element name="mix" xmlns="http://relaxng.org/ns/structure/1.0">
+ <mixed>
+ <zeroOrMore>
+ <choice>
+ <element name="a">
+ <empty/>
+ </element>
+ <element name="b">
+ <empty/>
+ </element>
+ <element name="c">
+ <empty/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ </mixed>
+ <element name="d">
+ <empty/>
+ </element>
+</element>
+</correct>
+<valid>
+<mix>
+ <d/>
+</mix>
+</valid>
+<valid>
+<mix>
+ <b/>
+ <a/>
+ <c/>
+ <b/>
+ <d/>
+</mix>
+</valid>
+<valid>
+<mix>
+ mixed
+ <c/>
+ <d/>
+</mix>
+</valid>
+<valid>
+<mix>
+ <c/>
+ mixed
+ <d/>
+</mix>
+</valid>
+<valid>
+<mix>
+ <b/>
+ is
+ <a/>
+ inter
+ <c/>
+ mixed
+ <b/>
+ <d/>
+</mix>
+</valid>
+<valid>
+<mix>
+ mixed
+ <b/>
+ .
+ <d/>
+</mix>
+</valid>
+<valid>
+<mix>
+ this
+ <b/>
+ is
+ <a/>
+ inter
+ <c/>
+ mixed
+ <b/>
+ .
+ <d/>
+</mix>
+</valid>
+</testCase>
+</testSuite>
+</testSuite>
diff --git a/test/relaxng/tutor10_1.rng b/test/relaxng/tutor10_1.rng
new file mode 100644
index 0000000..98df277
--- /dev/null
+++ b/test/relaxng/tutor10_1.rng
@@ -0,0 +1,4 @@
+<element name="foo" ns="http://www.example.com"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
diff --git a/test/relaxng/tutor10_10.rng b/test/relaxng/tutor10_10.rng
new file mode 100644
index 0000000..375b628
--- /dev/null
+++ b/test/relaxng/tutor10_10.rng
@@ -0,0 +1,13 @@
+<element name="addressBook" ns="http://www.example.com/addressBook"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card" ns="http://www.example.com/addressBook">
+ <element name="name" ns="http://www.example.com/address">
+ <text/>
+ </element>
+ <element name="email" ns="http://www.example.com/address">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_10_1.xml b/test/relaxng/tutor10_10_1.xml
new file mode 100644
index 0000000..607982a
--- /dev/null
+++ b/test/relaxng/tutor10_10_1.xml
@@ -0,0 +1,5 @@
+<a:addressBook xmlns:a="http://www.example.com/addressBook">
+ <a:card xmlns="http://www.example.com/address">
+ <name>foo</name><email>bar</email>
+ </a:card>
+</a:addressBook>
diff --git a/test/relaxng/tutor10_1_1.xml b/test/relaxng/tutor10_1_1.xml
new file mode 100644
index 0000000..898193d
--- /dev/null
+++ b/test/relaxng/tutor10_1_1.xml
@@ -0,0 +1 @@
+<foo xmlns="http://www.example.com"/>
diff --git a/test/relaxng/tutor10_1_2.xml b/test/relaxng/tutor10_1_2.xml
new file mode 100644
index 0000000..16d900a
--- /dev/null
+++ b/test/relaxng/tutor10_1_2.xml
@@ -0,0 +1 @@
+<e:foo xmlns:e="http://www.example.com"/>
diff --git a/test/relaxng/tutor10_1_3.xml b/test/relaxng/tutor10_1_3.xml
new file mode 100644
index 0000000..756c73f
--- /dev/null
+++ b/test/relaxng/tutor10_1_3.xml
@@ -0,0 +1 @@
+<example:foo xmlns:example="http://www.example.com"/>
diff --git a/test/relaxng/tutor10_1_4.xml b/test/relaxng/tutor10_1_4.xml
new file mode 100644
index 0000000..f1999f8
--- /dev/null
+++ b/test/relaxng/tutor10_1_4.xml
@@ -0,0 +1 @@
+<foo/>
diff --git a/test/relaxng/tutor10_1_5.xml b/test/relaxng/tutor10_1_5.xml
new file mode 100644
index 0000000..ed0f048
--- /dev/null
+++ b/test/relaxng/tutor10_1_5.xml
@@ -0,0 +1 @@
+<e:foo xmlns:e="http://WWW.EXAMPLE.COM"/>
diff --git a/test/relaxng/tutor10_1_6.xml b/test/relaxng/tutor10_1_6.xml
new file mode 100644
index 0000000..7dd6aed
--- /dev/null
+++ b/test/relaxng/tutor10_1_6.xml
@@ -0,0 +1 @@
+<example:foo xmlns:example="http://www.example.net"/>
diff --git a/test/relaxng/tutor10_2.rng b/test/relaxng/tutor10_2.rng
new file mode 100644
index 0000000..ebf08de
--- /dev/null
+++ b/test/relaxng/tutor10_2.rng
@@ -0,0 +1,3 @@
+<element name="foo" ns="" xmlns="http://relaxng.org/ns/structure/1.0">
+ <empty/>
+</element>
diff --git a/test/relaxng/tutor10_2_1.xml b/test/relaxng/tutor10_2_1.xml
new file mode 100644
index 0000000..24e0b22
--- /dev/null
+++ b/test/relaxng/tutor10_2_1.xml
@@ -0,0 +1 @@
+<foo xmlns=""/>
diff --git a/test/relaxng/tutor10_2_2.xml b/test/relaxng/tutor10_2_2.xml
new file mode 100644
index 0000000..f1999f8
--- /dev/null
+++ b/test/relaxng/tutor10_2_2.xml
@@ -0,0 +1 @@
+<foo/>
diff --git a/test/relaxng/tutor10_2_3.xml b/test/relaxng/tutor10_2_3.xml
new file mode 100644
index 0000000..898193d
--- /dev/null
+++ b/test/relaxng/tutor10_2_3.xml
@@ -0,0 +1 @@
+<foo xmlns="http://www.example.com"/>
diff --git a/test/relaxng/tutor10_2_4.xml b/test/relaxng/tutor10_2_4.xml
new file mode 100644
index 0000000..16d900a
--- /dev/null
+++ b/test/relaxng/tutor10_2_4.xml
@@ -0,0 +1 @@
+<e:foo xmlns:e="http://www.example.com"/>
diff --git a/test/relaxng/tutor10_3.rng b/test/relaxng/tutor10_3.rng
new file mode 100644
index 0000000..86f8cd1
--- /dev/null
+++ b/test/relaxng/tutor10_3.rng
@@ -0,0 +1,12 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_3_1.xml b/test/relaxng/tutor10_3_1.xml
new file mode 100644
index 0000000..693df18
--- /dev/null
+++ b/test/relaxng/tutor10_3_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card><name>foo</name><email>bar</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor10_4.rng b/test/relaxng/tutor10_4.rng
new file mode 100644
index 0000000..9a0ad34
--- /dev/null
+++ b/test/relaxng/tutor10_4.rng
@@ -0,0 +1,12 @@
+<element name="addressBook" ns="" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card" ns="">
+ <element name="name" ns="">
+ <text/>
+ </element>
+ <element name="email" ns="">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_4_1.xml b/test/relaxng/tutor10_4_1.xml
new file mode 100644
index 0000000..693df18
--- /dev/null
+++ b/test/relaxng/tutor10_4_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card><name>foo</name><email>bar</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor10_5.rng b/test/relaxng/tutor10_5.rng
new file mode 100644
index 0000000..85f5418
--- /dev/null
+++ b/test/relaxng/tutor10_5.rng
@@ -0,0 +1,13 @@
+<element name="addressBook" ns="http://www.example.com"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_5_1.xml b/test/relaxng/tutor10_5_1.xml
new file mode 100644
index 0000000..94e62f0
--- /dev/null
+++ b/test/relaxng/tutor10_5_1.xml
@@ -0,0 +1,3 @@
+<addressBook xmlns="http://www.example.com">
+ <card><name>foo</name><email>bar</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor10_6.rng b/test/relaxng/tutor10_6.rng
new file mode 100644
index 0000000..fd50547
--- /dev/null
+++ b/test/relaxng/tutor10_6.rng
@@ -0,0 +1,13 @@
+<element name="addressBook" ns="http://www.example.com"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card" ns="http://www.example.com">
+ <element name="name" ns="http://www.example.com">
+ <text/>
+ </element>
+ <element name="email" ns="http://www.example.com">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_6_1.xml b/test/relaxng/tutor10_6_1.xml
new file mode 100644
index 0000000..94e62f0
--- /dev/null
+++ b/test/relaxng/tutor10_6_1.xml
@@ -0,0 +1,3 @@
+<addressBook xmlns="http://www.example.com">
+ <card><name>foo</name><email>bar</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor10_7.rng b/test/relaxng/tutor10_7.rng
new file mode 100644
index 0000000..ce93df7
--- /dev/null
+++ b/test/relaxng/tutor10_7.rng
@@ -0,0 +1,9 @@
+<element name="addressBook" ns="http://www.example.com"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <attribute name="name"/>
+ <attribute name="email"/>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_7_1.xml b/test/relaxng/tutor10_7_1.xml
new file mode 100644
index 0000000..740d0d3
--- /dev/null
+++ b/test/relaxng/tutor10_7_1.xml
@@ -0,0 +1,3 @@
+<addressBook xmlns="http://www.example.com">
+ <card name="John Smith" email="js@example.com"/>
+</addressBook>
diff --git a/test/relaxng/tutor10_7_2.xml b/test/relaxng/tutor10_7_2.xml
new file mode 100644
index 0000000..97436e5
--- /dev/null
+++ b/test/relaxng/tutor10_7_2.xml
@@ -0,0 +1,3 @@
+<example:addressBook xmlns:example="http://www.example.com">
+ <example:card name="John Smith" email="js@example.com"/>
+</example:addressBook>
diff --git a/test/relaxng/tutor10_7_3.xml b/test/relaxng/tutor10_7_3.xml
new file mode 100644
index 0000000..7f58a8b
--- /dev/null
+++ b/test/relaxng/tutor10_7_3.xml
@@ -0,0 +1,3 @@
+<example:addressBook xmlns:example="http://www.example.com">
+ <example:card example:name="John Smith" example:email="js@example.com"/>
+</example:addressBook>
diff --git a/test/relaxng/tutor10_8.rng b/test/relaxng/tutor10_8.rng
new file mode 100644
index 0000000..caeffec
--- /dev/null
+++ b/test/relaxng/tutor10_8.rng
@@ -0,0 +1,9 @@
+<element name="addressBook" ns="http://www.example.com"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card" ns="http://www.example.com">
+ <attribute name="name" ns=""/>
+ <attribute name="email" ns=""/>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_8_1.xml b/test/relaxng/tutor10_8_1.xml
new file mode 100644
index 0000000..740d0d3
--- /dev/null
+++ b/test/relaxng/tutor10_8_1.xml
@@ -0,0 +1,3 @@
+<addressBook xmlns="http://www.example.com">
+ <card name="John Smith" email="js@example.com"/>
+</addressBook>
diff --git a/test/relaxng/tutor10_8_2.xml b/test/relaxng/tutor10_8_2.xml
new file mode 100644
index 0000000..97436e5
--- /dev/null
+++ b/test/relaxng/tutor10_8_2.xml
@@ -0,0 +1,3 @@
+<example:addressBook xmlns:example="http://www.example.com">
+ <example:card name="John Smith" email="js@example.com"/>
+</example:addressBook>
diff --git a/test/relaxng/tutor10_8_3.xml b/test/relaxng/tutor10_8_3.xml
new file mode 100644
index 0000000..7f58a8b
--- /dev/null
+++ b/test/relaxng/tutor10_8_3.xml
@@ -0,0 +1,3 @@
+<example:addressBook xmlns:example="http://www.example.com">
+ <example:card example:name="John Smith" example:email="js@example.com"/>
+</example:addressBook>
diff --git a/test/relaxng/tutor10_9.rng b/test/relaxng/tutor10_9.rng
new file mode 100644
index 0000000..c954a91
--- /dev/null
+++ b/test/relaxng/tutor10_9.rng
@@ -0,0 +1,14 @@
+<element name="ab:addressBook" xmlns:ab="http://www.example.com/addressBook"
+ xmlns:a="http://www.example.com/address"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="ab:card">
+ <element name="a:name">
+ <text/>
+ </element>
+ <element name="a:email">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor10_9_1.xml b/test/relaxng/tutor10_9_1.xml
new file mode 100644
index 0000000..607982a
--- /dev/null
+++ b/test/relaxng/tutor10_9_1.xml
@@ -0,0 +1,5 @@
+<a:addressBook xmlns:a="http://www.example.com/addressBook">
+ <a:card xmlns="http://www.example.com/address">
+ <name>foo</name><email>bar</email>
+ </a:card>
+</a:addressBook>
diff --git a/test/relaxng/tutor11_1.rng b/test/relaxng/tutor11_1.rng
new file mode 100644
index 0000000..2511af1
--- /dev/null
+++ b/test/relaxng/tutor11_1.rng
@@ -0,0 +1,22 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <ref name="anyElement"/>
+ </start>
+
+ <define name="anyElement">
+ <element>
+ <anyName/>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor11_1_1.xml b/test/relaxng/tutor11_1_1.xml
new file mode 100644
index 0000000..2511af1
--- /dev/null
+++ b/test/relaxng/tutor11_1_1.xml
@@ -0,0 +1,22 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <ref name="anyElement"/>
+ </start>
+
+ <define name="anyElement">
+ <element>
+ <anyName/>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="anyElement"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor11_1_2.xml b/test/relaxng/tutor11_1_2.xml
new file mode 100644
index 0000000..f45fc3b
--- /dev/null
+++ b/test/relaxng/tutor11_1_2.xml
@@ -0,0 +1,7 @@
+<addressBook>
+ <card>
+ <name>foo</name>
+ <email>bar</email>
+ <note>this guy is <em>annoying</em> !</note>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor11_1_3.xml b/test/relaxng/tutor11_1_3.xml
new file mode 100644
index 0000000..c778ce0
--- /dev/null
+++ b/test/relaxng/tutor11_1_3.xml
@@ -0,0 +1,4197 @@
+<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
+<!DOCTYPE spec SYSTEM "../valid/dtds/spec.dtd" [
+
+<!-- LAST TOUCHED BY: Tim Bray, 8 February 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "10 February 1998">
+<!ENTITY iso6.doc.date "19980210">
+<!ENTITY w3c.doc.date "02-Feb-1998">
+<!ENTITY draft.day '10'>
+<!ENTITY draft.month 'February'>
+<!ENTITY draft.year '1998'>
+
+<!ENTITY WebSGML
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash "--"> <!-- &#x2014, but nsgmls doesn't grok hex -->
+<!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp " "> -->
+<!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+
+<!-- audience and distribution status: for use at publication time -->
+<!ENTITY doc.audience "public review and discussion">
+<!ENTITY doc.distribution "may be distributed freely, as long as
+all text and legal notices remain intact">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>Extensible Markup Language (XML) 1.0</title>
+<version></version>
+<w3c-designation>REC-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>W3C Recommendation</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+
+<publoc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps</loc>
+</publoc>
+<latestloc>
+<loc href="http://www.w3.org/TR/REC-xml">
+http://www.w3.org/TR/REC-xml</loc>
+</latestloc>
+<prevlocs>
+<loc href="http://www.w3.org/TR/PR-xml-971208">
+http://www.w3.org/TR/PR-xml-971208</loc>
+<!--
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>-->
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<abstract>
+<p>The Extensible Markup Language (XML) is a subset of
+SGML that is completely described in this document. Its goal is to
+enable generic SGML to be served, received, and processed on the Web
+in the way that is now possible with HTML. XML has been designed for
+ease of implementation and for interoperability with both SGML and
+HTML.</p>
+</abstract>
+<status>
+<p>This document has been reviewed by W3C Members and
+other interested parties and has been endorsed by the
+Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited
+as a normative reference from another document. W3C's
+role in making the Recommendation is to draw attention
+to the specification and to promote its widespread
+deployment. This enhances the functionality and
+interoperability of the Web.</p>
+<p>
+This document specifies a syntax created by subsetting an existing,
+widely used international text processing standard (Standard
+Generalized Markup Language, ISO 8879:1986(E) as amended and
+corrected) for use on the World Wide Web. It is a product of the W3C
+XML Activity, details of which can be found at <loc
+href='http://www.w3.org/XML'>http://www.w3.org/XML</loc>. A list of
+current W3C Recommendations and other technical documents can be found
+at <loc href='http://www.w3.org/TR'>http://www.w3.org/TR</loc>.
+</p>
+<p>This specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+</p>
+<p>The list of known errors in this specification is
+available at
+<loc href='http://www.w3.org/XML/xml-19980210-errata'>http://www.w3.org/XML/xml-19980210-errata</loc>.</p>
+<p>Please report errors in this document to
+<loc href='mailto:xml-editor@w3.org'>xml-editor@w3.org</loc>.
+</p>
+</status>
+
+
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XML Working Group, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id='sec-intro'>
+<head>Introduction</head>
+<p>Extensible Markup Language, abbreviated XML, describes a class of
+data objects called <termref def="dt-xml-doc">XML documents</termref> and
+partially describes the behavior of
+computer programs which process them. XML is an application profile or
+restricted form of SGML, the Standard Generalized Markup
+Language <bibref ref='ISO8879'/>.
+By construction, XML documents
+are conforming SGML documents.
+</p>
+<p>XML documents are made up of storage units called <termref
+def="dt-entity">entities</termref>, which contain either parsed
+or unparsed data.
+Parsed data is made up of <termref def="dt-character">characters</termref>,
+some
+of which form <termref def="dt-chardata">character data</termref>,
+and some of which form <termref def="dt-markup">markup</termref>.
+Markup encodes a description of the document's storage layout and
+logical structure. XML provides a mechanism to impose constraints on
+the storage layout and logical structure.</p>
+<p><termdef id="dt-xml-proc" term="XML Processor">A software module
+called an <term>XML processor</term> is used to read XML documents
+and provide access to their content and structure.</termdef> <termdef
+id="dt-app" term="Application">It is assumed that an XML processor is
+doing its work on behalf of another module, called the
+<term>application</term>.</termdef> This specification describes the
+required behavior of an XML processor in terms of how it must read XML
+data and the information it must provide to the application.</p>
+
+<div2 id='sec-origin-goals'>
+<head>Origin and Goals</head>
+<p>XML was developed by an XML Working Group (originally known as the
+SGML Editorial Review Board) formed under the auspices of the World
+Wide Web Consortium (W3C) in 1996.
+It was chaired by Jon Bosak of Sun
+Microsystems with the active participation of an XML Special
+Interest Group (previously known as the SGML Working Group) also
+organized by the W3C. The membership of the XML Working Group is given
+in an appendix. Dan Connolly served as the WG's contact with the W3C.
+</p>
+<p>The design goals for XML are:<olist>
+<item><p>XML shall be straightforwardly usable over the
+Internet.</p></item>
+<item><p>XML shall support a wide variety of applications.</p></item>
+<item><p>XML shall be compatible with SGML.</p></item>
+<item><p>It shall be easy to write programs which process XML
+documents.</p></item>
+<item><p>The number of optional features in XML is to be kept to the
+absolute minimum, ideally zero.</p></item>
+<item><p>XML documents should be human-legible and reasonably
+clear.</p></item>
+<item><p>The XML design should be prepared quickly.</p></item>
+<item><p>The design of XML shall be formal and concise.</p></item>
+<item><p>XML documents shall be easy to create.</p></item>
+<item><p>Terseness in XML markup is of minimal importance.</p></item></olist>
+</p>
+<p>This specification,
+together with associated standards
+(Unicode and ISO/IEC 10646 for characters,
+Internet RFC 1766 for language identification tags,
+ISO 639 for language name codes, and
+ISO 3166 for country name codes),
+provides all the information necessary to understand
+XML Version &XML.version;
+and construct computer programs to process it.</p>
+<p>This version of the XML specification
+<!-- is for &doc.audience;.-->
+&doc.distribution;.</p>
+
+</div2>
+
+
+
+
+<div2 id='sec-terminology'>
+<head>Terminology</head>
+
+<p>The terminology used to describe XML documents is defined in the body of
+this specification.
+The terms defined in the following list are used in building those
+definitions and in describing the actions of an XML processor:
+<glist>
+<gitem>
+<label>may</label>
+<def><p><termdef id="dt-may" term="May">Conforming documents and XML
+processors are permitted to but need not behave as
+described.</termdef></p></def>
+</gitem>
+<gitem>
+<label>must</label>
+<def><p>Conforming documents and XML processors
+are required to behave as described; otherwise they are in error.
+<!-- do NOT change this! this is what defines a violation of
+a 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>error</label>
+<def><p><termdef id='dt-error' term='Error'
+>A violation of the rules of this
+specification; results are
+undefined. Conforming software may detect and report an error and may
+recover from it.</termdef></p></def>
+</gitem>
+<gitem>
+<label>fatal error</label>
+<def><p><termdef id="dt-fatal" term="Fatal Error">An error
+which a conforming <termref def="dt-xml-proc">XML processor</termref>
+must detect and report to the application.
+After encountering a fatal error, the
+processor may continue
+processing the data to search for further errors and may report such
+errors to the application. In order to support correction of errors,
+the processor may make unprocessed data from the document (with
+intermingled character data and markup) available to the application.
+Once a fatal error is detected, however, the processor must not
+continue normal processing (i.e., it must not
+continue to pass character data and information about the document's
+logical structure to the application in the normal way).
+</termdef></p></def>
+</gitem>
+<gitem>
+<label>at user option</label>
+<def><p>Conforming software may or must (depending on the modal verb in the
+sentence) behave as described; if it does, it must
+provide users a means to enable or disable the behavior
+described.</p></def>
+</gitem>
+<gitem>
+<label>validity constraint</label>
+<def><p>A rule which applies to all
+<termref def="dt-valid">valid</termref> XML documents.
+Violations of validity constraints are errors; they must, at user option,
+be reported by
+<termref def="dt-validating">validating XML processors</termref>.</p></def>
+</gitem>
+<gitem>
+<label>well-formedness constraint</label>
+<def><p>A rule which applies to all <termref
+def="dt-wellformed">well-formed</termref> XML documents.
+Violations of well-formedness constraints are
+<termref def="dt-fatal">fatal errors</termref>.</p></def>
+</gitem>
+
+<gitem>
+<label>match</label>
+<def><p><termdef id="dt-match" term="match">(Of strings or names:)
+Two strings or names being compared must be identical.
+Characters with multiple possible representations in ISO/IEC 10646 (e.g.
+characters with
+both precomposed and base+diacritic forms) match only if they have the
+same representation in both strings.
+At user option, processors may normalize such characters to
+some canonical form.
+No case folding is performed.
+(Of strings and rules in the grammar:)
+A string matches a grammatical production if it belongs to the
+language generated by that production.
+(Of content and content models:)
+An element matches its declaration when it conforms
+in the fashion described in the constraint
+<specref ref='elementvalid'/>.
+</termdef>
+</p></def>
+</gitem>
+<gitem>
+<label>for compatibility</label>
+<def><p><termdef id="dt-compat" term="For Compatibility">A feature of
+XML included solely to ensure that XML remains compatible with SGML.
+</termdef></p></def>
+</gitem>
+<gitem>
+<label>for interoperability</label>
+<def><p><termdef id="dt-interop" term="For interoperability">A
+non-binding recommendation included to increase the chances that XML
+documents can be processed by the existing installed base of SGML
+processors which predate the
+&WebSGML;.</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+
+
+</div1>
+<!-- &Docs; -->
+
+<div1 id='sec-documents'>
+<head>Documents</head>
+
+<p><termdef id="dt-xml-doc" term="XML Document">
+A data object is an
+<term>XML document</term> if it is
+<termref def="dt-wellformed">well-formed</termref>, as
+defined in this specification.
+A well-formed XML document may in addition be
+<termref def="dt-valid">valid</termref> if it meets certain further
+constraints.</termdef></p>
+
+<p>Each XML document has both a logical and a physical structure.
+Physically, the document is composed of units called <termref
+def="dt-entity">entities</termref>. An entity may <termref
+def="dt-entref">refer</termref> to other entities to cause their
+inclusion in the document. A document begins in a "root" or <termref
+def="dt-docent">document entity</termref>.
+Logically, the document is composed of declarations, elements,
+comments,
+character references, and
+processing
+instructions, all of which are indicated in the document by explicit
+markup.
+The logical and physical structures must nest properly, as described
+in <specref ref='wf-entities'/>.
+</p>
+
+<div2 id='sec-well-formed'>
+<head>Well-Formed XML Documents</head>
+
+<p><termdef id="dt-wellformed" term="Well-Formed">
+A textual object is
+a well-formed XML document if:</termdef>
+<olist>
+<item><p>Taken as a whole, it
+matches the production labeled <nt def='NT-document'>document</nt>.</p></item>
+<item><p>It
+meets all the well-formedness constraints given in this specification.</p>
+</item>
+<item><p>Each of the <termref def='dt-parsedent'>parsed entities</termref>
+which is referenced directly or indirectly within the document is
+<titleref href='wf-entities'>well-formed</titleref>.</p></item>
+</olist></p>
+<p>
+<scrap lang='ebnf' id='document'>
+<head>Document</head>
+<prod id='NT-document'><lhs>document</lhs>
+<rhs><nt def='NT-prolog'>prolog</nt>
+<nt def='NT-element'>element</nt>
+<nt def='NT-Misc'>Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p>Matching the <nt def="NT-document">document</nt> production
+implies that:
+<olist>
+<item><p>It contains one or more
+<termref def="dt-element">elements</termref>.</p>
+</item>
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+<item><p><termdef id="dt-root" term="Root Element">There is exactly
+one element, called the <term>root</term>, or document element, no
+part of which appears in the <termref
+def="dt-content">content</termref> of any other element.</termdef>
+For all other elements, if the start-tag is in the content of another
+element, the end-tag is in the content of the same element. More
+simply stated, the elements, delimited by start- and end-tags, nest
+properly within each other.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-parentchild" term="Parent/Child">As a consequence
+of this,
+for each non-root element
+<code>C</code> in the document, there is one other element <code>P</code>
+in the document such that
+<code>C</code> is in the content of <code>P</code>, but is not in
+the content of any other element that is in the content of
+<code>P</code>.
+<code>P</code> is referred to as the
+<term>parent</term> of <code>C</code>, and <code>C</code> as a
+<term>child</term> of <code>P</code>.</termdef></p></div2>
+
+<div2 id="charsets">
+<head>Characters</head>
+
+<p><termdef id="dt-text" term="Text">A parsed entity contains
+<term>text</term>, a sequence of
+<termref def="dt-character">characters</termref>,
+which may represent markup or character data.</termdef>
+<termdef id="dt-character" term="Character">A <term>character</term>
+is an atomic unit of text as specified by
+ISO/IEC 10646 <bibref ref="ISO10646"/>.
+Legal characters are tab, carriage return, line feed, and the legal
+graphic characters of Unicode and ISO/IEC 10646.
+The use of "compatibility characters", as defined in section 6.8
+of <bibref ref='Unicode'/>, is discouraged.
+</termdef>
+<scrap lang="ebnf" id="char32">
+<head>Character Range</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>any Unicode character, excluding the
+surrogate blocks, FFFE, and FFFF.</com> </prod>
+</prodgroup>
+</scrap>
+</p>
+
+<p>The mechanism for encoding character code points into bit patterns may
+vary from entity to entity. All XML processors must accept the UTF-8
+and UTF-16 encodings of 10646; the mechanisms for signaling which of
+the two is in use, or for bringing other encodings into play, are
+discussed later, in <specref ref='charencoding'/>.
+</p>
+<!--
+<p>Regardless of the specific encoding used, any character in the ISO/IEC
+10646 character set may be referred to by the decimal or hexadecimal
+equivalent of its
+UCS-4 code value.
+</p>-->
+</div2>
+
+<div2 id='sec-common-syn'>
+<head>Common Syntactic Constructs</head>
+
+<p>This section defines some symbols used widely in the grammar.</p>
+<p><nt def="NT-S">S</nt> (white space) consists of one or more space (#x20)
+characters, carriage returns, line feeds, or tabs.
+
+<scrap lang="ebnf" id='white'>
+<head>White Space</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id='NT-S'><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>Characters are classified for convenience as letters, digits, or other
+characters. Letters consist of an alphabetic or syllabic
+base character possibly
+followed by one or more combining characters, or of an ideographic
+character.
+Full definitions of the specific characters in each class
+are given in <specref ref='CharClasses'/>.</p>
+<p><termdef id="dt-name" term="Name">A <term>Name</term> is a token
+beginning with a letter or one of a few punctuation characters, and continuing
+with letters, digits, hyphens, underscores, colons, or full stops, together
+known as name characters.</termdef>
+Names beginning with the string "<code>xml</code>", or any string
+which would match <code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>, are
+reserved for standardization in this or future versions of this
+specification.
+</p>
+<note>
+<p>The colon character within XML names is reserved for experimentation with
+name spaces.
+Its meaning is expected to be
+standardized at some future point, at which point those documents
+using the colon for experimental purposes may need to be updated.
+(There is no guarantee that any name-space mechanism
+adopted for XML will in fact use the colon as a name-space delimiter.)
+In practice, this means that authors should not use the colon in XML
+names except as part of name-space experiments, but that XML processors
+should accept the colon as a name character.</p>
+</note>
+<p>An
+<nt def='NT-Nmtoken'>Nmtoken</nt> (name token) is any mixture of
+name characters.
+<scrap lang='ebnf'>
+<head>Names and Tokens</head>
+<prod id='NT-NameChar'><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def='NT-Digit'>Digit</nt>
+| '.' | '-' | '_' | ':'
+| <nt def='NT-CombiningChar'>CombiningChar</nt>
+| <nt def='NT-Extender'>Extender</nt></rhs>
+</prod>
+<prod id='NT-Name'><lhs>Name</lhs>
+<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')
+(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>
+<prod id='NT-Names'><lhs>Names</lhs>
+<rhs><nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>
+<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>
+<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>
+<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>
+<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>Literal data is any quoted string not containing
+the quotation mark used as a delimiter for that string.
+Literals are used
+for specifying the content of internal entities
+(<nt def='NT-EntityValue'>EntityValue</nt>),
+the values of attributes (<nt def='NT-AttValue'>AttValue</nt>),
+and external identifiers
+(<nt def="NT-SystemLiteral">SystemLiteral</nt>).
+Note that a <nt def='NT-SystemLiteral'>SystemLiteral</nt>
+can be parsed without scanning for markup.
+<scrap lang='ebnf'>
+<head>Literals</head>
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>'"'
+([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+'"'
+</rhs>
+<rhs>|&nbsp;
+"'"
+([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+"'"</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>'"'
+([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+'"'
+</rhs>
+<rhs>|&nbsp;
+"'"
+([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+"'"</rhs>
+</prod>
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs>('"' [^"]* '"') |&nbsp;("'" [^']* "'")
+</rhs>
+</prod>
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>'"' <nt def='NT-PubidChar'>PubidChar</nt>*
+'"'
+| "'" (<nt def='NT-PubidChar'>PubidChar</nt> - "'")* "'"</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?;!*#@$_%]</rhs>
+</prod>
+</scrap>
+</p>
+
+</div2>
+
+<div2 id='syntax'>
+<head>Character Data and Markup</head>
+
+<p><termref def='dt-text'>Text</termref> consists of intermingled
+<termref def="dt-chardata">character
+data</termref> and markup.
+<termdef id="dt-markup" term="Markup"><term>Markup</term> takes the form of
+<termref def="dt-stag">start-tags</termref>,
+<termref def="dt-etag">end-tags</termref>,
+<termref def="dt-empty">empty-element tags</termref>,
+<termref def="dt-entref">entity references</termref>,
+<termref def="dt-charref">character references</termref>,
+<termref def="dt-comment">comments</termref>,
+<termref def="dt-cdsection">CDATA section</termref> delimiters,
+<termref def="dt-doctype">document type declarations</termref>, and
+<termref def="dt-pi">processing instructions</termref>.
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">All text that is not markup
+constitutes the <term>character data</term> of
+the document.</termdef></p>
+<p>The ampersand character (&amp;) and the left angle bracket (&lt;)
+may appear in their literal form <emph>only</emph> when used as markup
+delimiters, or within a <termref def="dt-comment">comment</termref>, a
+<termref def="dt-pi">processing instruction</termref>,
+or a <termref def="dt-cdsection">CDATA section</termref>.
+
+They are also legal within the <termref def='dt-litentval'>literal entity
+value</termref> of an internal entity declaration; see
+<specref ref='wf-entities'/>.
+<!-- FINAL EDIT: restore internal entity decl or leave it out. -->
+If they are needed elsewhere,
+they must be <termref def="dt-escape">escaped</termref>
+using either <termref def='dt-charref'>numeric character references</termref>
+or the strings
+"<code>&amp;amp;</code>" and "<code>&amp;lt;</code>" respectively.
+The right angle
+bracket (>) may be represented using the string
+"<code>&amp;gt;</code>", and must, <termref def='dt-compat'>for
+compatibility</termref>,
+be escaped using
+"<code>&amp;gt;</code>" or a character reference
+when it appears in the string
+"<code>]]&gt;</code>"
+in content,
+when that string is not marking the end of
+a <termref def="dt-cdsection">CDATA section</termref>.
+</p>
+<p>
+In the content of elements, character data
+is any string of characters which does
+not contain the start-delimiter of any markup.
+In a CDATA section, character data
+is any string of characters not including the CDATA-section-close
+delimiter, "<code>]]&gt;</code>".</p>
+<p>
+To allow attribute values to contain both single and double quotes, the
+apostrophe or single-quote character (') may be represented as
+"<code>&amp;apos;</code>", and the double-quote character (") as
+"<code>&amp;quot;</code>".
+<scrap lang="ebnf">
+<head>Character Data</head>
+<prod id='NT-CharData'>
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id='sec-comments'>
+<head>Comments</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>Comments</term> may
+appear anywhere in a document outside other
+<termref def='dt-markup'>markup</termref>; in addition,
+they may appear within the document type declaration
+at places allowed by the grammar.
+They are not part of the document's <termref def="dt-chardata">character
+data</termref>; an XML
+processor may, but need not, make it possible for an application to
+retrieve the text of comments.
+<termref def="dt-compat">For compatibility</termref>, the string
+"<code>--</code>" (double-hyphen) must not occur within
+comments.
+<scrap lang="ebnf">
+<head>Comments</head>
+<prod id='NT-Comment'><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def='NT-Char'>Char</nt> - '-')
+| ('-' (<nt def='NT-Char'>Char</nt> - '-')))*
+'-->'</rhs>
+</prod>
+</scrap>
+</termdef></p>
+<p>An example of a comment:
+<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-pi'>
+<head>Processing Instructions</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>Processing
+instructions</term> (PIs) allow documents to contain instructions
+for applications.
+
+<scrap lang="ebnf">
+<head>Processing Instructions</head>
+<prod id='NT-PI'><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt>
+(<nt def='NT-S'>S</nt>
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id='NT-PITarget'><lhs>PITarget</lhs>
+<rhs><nt def='NT-Name'>Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PIs are not part of the document's <termref def="dt-chardata">character
+data</termref>, but must be passed through to the application. The
+PI begins with a target (<nt def='NT-PITarget'>PITarget</nt>) used
+to identify the application to which the instruction is directed.
+The target names "<code>XML</code>", "<code>xml</code>", and so on are
+reserved for standardization in this or future versions of this
+specification.
+The
+XML <termref def='dt-notation'>Notation</termref> mechanism
+may be used for
+formal declaration of PI targets.
+</p>
+</div2>
+
+<div2 id='sec-cdata-sect'>
+<head>CDATA Sections</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATA sections</term>
+may occur
+anywhere character data may occur; they are
+used to escape blocks of text containing characters which would
+otherwise be recognized as markup. CDATA sections begin with the
+string "<code>&lt;![CDATA[</code>" and end with the string
+"<code>]]&gt;</code>":
+<scrap lang="ebnf">
+<head>CDATA Sections</head>
+<prod id='NT-CDSect'><lhs>CDSect</lhs>
+<rhs><nt def='NT-CDStart'>CDStart</nt>
+<nt def='NT-CData'>CData</nt>
+<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>
+<prod id='NT-CDStart'><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id='NT-CData'><lhs>CData</lhs>
+<rhs>(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+</rhs>
+</prod>
+<prod id='NT-CDEnd'><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+Within a CDATA section, only the <nt def='NT-CDEnd'>CDEnd</nt> string is
+recognized as markup, so that left angle brackets and ampersands may occur in
+their literal form; they need not (and cannot) be escaped using
+"<code>&amp;lt;</code>" and "<code>&amp;amp;</code>". CDATA sections
+cannot nest.</termdef>
+</p>
+
+<p>An example of a CDATA section, in which "<code>&lt;greeting></code>" and
+"<code>&lt;/greeting></code>"
+are recognized as <termref def='dt-chardata'>character data</termref>, not
+<termref def='dt-markup'>markup</termref>:
+<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-prolog-dtd'>
+<head>Prolog and Document Type Declaration</head>
+
+<p><termdef id='dt-xmldecl' term='XML Declaration'>XML documents
+may, and should,
+begin with an <term>XML declaration</term> which specifies
+the version of
+XML being used.</termdef>
+For example, the following is a complete XML document, <termref
+def="dt-wellformed">well-formed</termref> but not
+<termref def="dt-valid">valid</termref>:
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+and so is this:
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+
+<p>The version number "<code>1.0</code>" should be used to indicate
+conformance to this version of this specification; it is an error
+for a document to use the value "<code>1.0</code>"
+if it does not conform to this version of this specification.
+It is the intent
+of the XML working group to give later versions of this specification
+numbers other than "<code>1.0</code>", but this intent does not
+indicate a
+commitment to produce any future versions of XML, nor if any are produced, to
+use any particular numbering scheme.
+Since future versions are not ruled out, this construct is provided
+as a means to allow the possibility of automatic version recognition, should
+it become necessary.
+Processors may signal an error if they receive documents labeled with
+versions they do not support.
+</p>
+<p>The function of the markup in an XML document is to describe its
+storage and logical structure and to associate attribute-value pairs
+with its logical structures. XML provides a mechanism, the <termref
+def="dt-doctype">document type declaration</termref>, to define
+constraints on the logical structure and to support the use of
+predefined storage units.
+
+<termdef id="dt-valid" term="Validity">An XML document is
+<term>valid</term> if it has an associated document type
+declaration and if the document
+complies with the constraints expressed in it.</termdef></p>
+<p>The document type declaration must appear before
+the first <termref def="dt-element">element</termref> in the document.
+<scrap lang="ebnf" id='xmldoc'>
+<head>Prolog</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-prolog'><lhs>prolog</lhs>
+<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>?
+<nt def='NT-Misc'>Misc</nt>*
+(<nt def='NT-doctypedecl'>doctypedecl</nt>
+<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>
+<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>?
+<nt def='NT-SDDecl'>SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt>
+(' <nt def="NT-VersionNum">VersionNum</nt> '
+| " <nt def="NT-VersionNum">VersionNum</nt> ")</rhs>
+</prod>
+<prod id='NT-Eq'><lhs>Eq</lhs>
+<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id='NT-Misc'><lhs>Misc</lhs>
+<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> |
+<nt def='NT-S'>S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p><termdef id="dt-doctype" term="Document Type Declaration">The XML
+<term>document type declaration</term>
+contains or points to
+<termref def='dt-markupdecl'>markup declarations</termref>
+that provide a grammar for a
+class of documents.
+This grammar is known as a document type definition,
+or <term>DTD</term>.
+The document type declaration can point to an external subset (a
+special kind of
+<termref def='dt-extent'>external entity</termref>) containing markup
+declarations, or can
+contain the markup declarations directly in an internal subset, or can do
+both.
+The DTD for a document consists of both subsets taken
+together.</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+A <term>markup declaration</term> is
+an <termref def="dt-eldecl">element type declaration</termref>,
+an <termref def="dt-attdecl">attribute-list declaration</termref>,
+an <termref def="dt-entdecl">entity declaration</termref>, or
+a <termref def="dt-notdecl">notation declaration</termref>.
+</termdef>
+These declarations may be contained in whole or in part
+within <termref def='dt-PE'>parameter entities</termref>,
+as described in the well-formedness and validity constraints below.
+For fuller information, see
+<specref ref="sec-physical-struct"/>.</p>
+<scrap lang="ebnf" id='dtd'>
+<head>Document Type Definition</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-ExternalID'>ExternalID</nt>)?
+<nt def='NT-S'>S</nt>? ('['
+(<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>)*
+']'
+<nt def='NT-S'>S</nt>?)? '>'</rhs>
+<vc def="vc-roottype"/>
+</prod>
+<prod id='NT-markupdecl'><lhs>markupdecl</lhs>
+<rhs><nt def='NT-elementdecl'>elementdecl</nt>
+| <nt def='NT-AttlistDecl'>AttlistDecl</nt>
+| <nt def='NT-EntityDecl'>EntityDecl</nt>
+| <nt def='NT-NotationDecl'>NotationDecl</nt>
+| <nt def='NT-PI'>PI</nt>
+| <nt def='NT-Comment'>Comment</nt>
+</rhs>
+<vc def='vc-PEinMarkupDecl'/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+
+</prodgroup>
+</scrap>
+
+<p>The markup declarations may be made up in whole or in part of
+the <termref def='dt-repltext'>replacement text</termref> of
+<termref def='dt-PE'>parameter entities</termref>.
+The productions later in this specification for
+individual nonterminals (<nt def='NT-elementdecl'>elementdecl</nt>,
+<nt def='NT-AttlistDecl'>AttlistDecl</nt>, and so on) describe
+the declarations <emph>after</emph> all the parameter entities have been
+<termref def='dt-include'>included</termref>.</p>
+
+<vcnote id="vc-roottype">
+<head>Root Element Type</head>
+<p>
+The <nt def='NT-Name'>Name</nt> in the document type declaration must
+match the element type of the <termref def='dt-root'>root element</termref>.
+</p>
+</vcnote>
+
+<vcnote id='vc-PEinMarkupDecl'>
+<head>Proper Declaration/PE Nesting</head>
+<p>Parameter-entity
+<termref def='dt-repltext'>replacement text</termref> must be properly nested
+with markup declarations.
+That is to say, if either the first character
+or the last character of a markup
+declaration (<nt def='NT-markupdecl'>markupdecl</nt> above)
+is contained in the replacement text for a
+<termref def='dt-PERef'>parameter-entity reference</termref>,
+both must be contained in the same replacement text.</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>PEs in Internal Subset</head>
+<p>In the internal DTD subset,
+<termref def='dt-PERef'>parameter-entity references</termref>
+can occur only where markup declarations can occur, not
+within markup declarations. (This does not apply to
+references that occur in
+external parameter entities or to the external subset.)
+</p>
+</wfcnote>
+<p>
+Like the internal subset, the external subset and
+any external parameter entities referred to in the DTD
+must consist of a series of complete markup declarations of the types
+allowed by the non-terminal symbol
+<nt def="NT-markupdecl">markupdecl</nt>, interspersed with white space
+or <termref def="dt-PERef">parameter-entity references</termref>.
+However, portions of the contents
+of the
+external subset or of external parameter entities may conditionally be ignored
+by using
+the <termref def="dt-cond-section">conditional section</termref>
+construct; this is not allowed in the internal subset.
+
+<scrap id="ext-Subset">
+<head>External Subset</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-extSubset'><lhs>extSubset</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubsetDecl'>extSubsetDecl</nt></rhs></prod>
+<prod id='NT-extSubsetDecl'><lhs>extSubsetDecl</lhs>
+<rhs>(
+<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-conditionalSect'>conditionalSect</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>The external subset and external parameter entities also differ
+from the internal subset in that in them,
+<termref def="dt-PERef">parameter-entity references</termref>
+are permitted <emph>within</emph> markup declarations,
+not only <emph>between</emph> markup declarations.</p>
+<p>An example of an XML document with a document type declaration:
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+The <termref def="dt-sysid">system identifier</termref>
+"<code>hello.dtd</code>" gives the URI of a DTD for the document.</p>
+<p>The declarations can also be given locally, as in this
+example:
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+If both the external and internal subsets are used, the
+internal subset is considered to occur before the external subset.
+<!-- 'is considered to'? boo. whazzat mean? -->
+This has the effect that entity and attribute-list declarations in the
+internal subset take precedence over those in the external subset.
+</p>
+</div2>
+
+<div2 id='sec-rmd'>
+<head>Standalone Document Declaration</head>
+<p>Markup declarations can affect the content of the document,
+as passed from an <termref def="dt-xml-proc">XML processor</termref>
+to an application; examples are attribute defaults and entity
+declarations.
+The standalone document declaration,
+which may appear as a component of the XML declaration, signals
+whether or not there are such declarations which appear external to
+the <termref def='dt-docent'>document entity</termref>.
+<scrap lang="ebnf" id='fulldtd'>
+<head>Standalone Document Declaration</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id='NT-SDDecl'><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt>
+(("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
+</rhs>
+<vc def='vc-check-rmd'/></prod>
+</prodgroup>
+</scrap></p>
+<p>
+In a standalone document declaration, the value "<code>yes</code>" indicates
+that there
+are no markup declarations external to the <termref def='dt-docent'>document
+entity</termref> (either in the DTD external subset, or in an
+external parameter entity referenced from the internal subset)
+which affect the information passed from the XML processor to
+the application.
+The value "<code>no</code>" indicates that there are or may be such
+external markup declarations.
+Note that the standalone document declaration only
+denotes the presence of external <emph>declarations</emph>; the presence, in a
+document, of
+references to external <emph>entities</emph>, when those entities are
+internally declared,
+does not change its standalone status.</p>
+<p>If there are no external markup declarations, the standalone document
+declaration has no meaning.
+If there are external markup declarations but there is no standalone
+document declaration, the value "<code>no</code>" is assumed.</p>
+<p>Any XML document for which <code>standalone="no"</code> holds can
+be converted algorithmically to a standalone document,
+which may be desirable for some network delivery applications.</p>
+<vcnote id='vc-check-rmd'>
+<head>Standalone Document Declaration</head>
+<p>The standalone document declaration must have
+the value "<code>no</code>" if any external markup declarations
+contain declarations of:</p><ulist>
+<item><p>attributes with <termref def="dt-default">default</termref> values, if
+elements to which
+these attributes apply appear in the document without
+specifications of values for these attributes, or</p></item>
+<item><p>entities (other than &magicents;),
+if <termref def="dt-entref">references</termref> to those
+entities appear in the document, or</p>
+</item>
+<item><p>attributes with values subject to
+<titleref href='AVNormalize'>normalization</titleref>, where the
+attribute appears in the document with a value which will
+change as a result of normalization, or</p>
+</item>
+<item>
+<p>element types with <termref def="dt-elemcontent">element content</termref>,
+if white space occurs
+directly within any instance of those types.
+</p></item>
+</ulist>
+
+</vcnote>
+<p>An example XML declaration with a standalone document declaration:<eg
+>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>
+</div2>
+<div2 id='sec-white-space'>
+<head>White Space Handling</head>
+
+<p>In editing XML documents, it is often convenient to use "white space"
+(spaces, tabs, and blank lines, denoted by the nonterminal
+<nt def='NT-S'>S</nt> in this specification) to
+set apart the markup for greater readability. Such white space is typically
+not intended for inclusion in the delivered version of the document.
+On the other hand, "significant" white space that should be preserved in the
+delivered version is common, for example in poetry and
+source code.</p>
+<p>An <termref def='dt-xml-proc'>XML processor</termref>
+must always pass all characters in a document that are not
+markup through to the application. A <termref def='dt-validating'>
+validating XML processor</termref> must also inform the application
+which of these characters constitute white space appearing
+in <termref def="dt-elemcontent">element content</termref>.
+</p>
+<p>A special <termref def='dt-attr'>attribute</termref>
+named <kw>xml:space</kw> may be attached to an element
+to signal an intention that in that element,
+white space should be preserved by applications.
+In valid documents, this attribute, like any other, must be
+<termref def="dt-attdecl">declared</termref> if it is used.
+When declared, it must be given as an
+<termref def='dt-enumerated'>enumerated type</termref> whose only
+possible values are "<code>default</code>" and "<code>preserve</code>".
+For example:<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg></p>
+<p>The value "<code>default</code>" signals that applications'
+default white-space processing modes are acceptable for this element; the
+value "<code>preserve</code>" indicates the intent that applications preserve
+all the white space.
+This declared intent is considered to apply to all elements within the content
+of the element where it is specified, unless overriden with another instance
+of the <kw>xml:space</kw> attribute.
+</p>
+<p>The <termref def='dt-root'>root element</termref> of any document
+is considered to have signaled no intentions as regards application space
+handling, unless it provides a value for
+this attribute or the attribute is declared with a default value.
+</p>
+
+</div2>
+<div2 id='sec-line-ends'>
+<head>End-of-Line Handling</head>
+<p>XML <termref def='dt-parsedent'>parsed entities</termref> are often stored in
+computer files which, for editing convenience, are organized into lines.
+These lines are typically separated by some combination of the characters
+carriage-return (#xD) and line-feed (#xA).</p>
+<p>To simplify the tasks of <termref def='dt-app'>applications</termref>,
+wherever an external parsed entity or the literal entity value
+of an internal parsed entity contains either the literal
+two-character sequence "#xD#xA" or a standalone literal
+#xD, an <termref def='dt-xml-proc'>XML processor</termref> must
+pass to the application the single character #xA.
+(This behavior can
+conveniently be produced by normalizing all
+line breaks to #xA on input, before parsing.)
+</p>
+</div2>
+<div2 id='sec-lang-tag'>
+<head>Language Identification</head>
+<p>In document processing, it is often useful to
+identify the natural or formal language
+in which the content is
+written.
+A special <termref def="dt-attr">attribute</termref> named
+<kw>xml:lang</kw> may be inserted in
+documents to specify the
+language used in the contents and attribute values
+of any element in an XML document.
+In valid documents, this attribute, like any other, must be
+<termref def="dt-attdecl">declared</termref> if it is used.
+The values of the attribute are language identifiers as defined
+by <bibref ref="RFC1766"/>, "Tags for the Identification of Languages":
+<scrap lang='ebnf'>
+<head>Language Identification</head>
+<prod id='NT-LanguageID'><lhs>LanguageID</lhs>
+<rhs><nt def='NT-Langcode'>Langcode</nt>
+('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>
+<prod id='NT-Langcode'><lhs>Langcode</lhs>
+<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> |
+<nt def='NT-IanaCode'>IanaCode</nt> |
+<nt def='NT-UserCode'>UserCode</nt></rhs>
+</prod>
+<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id='NT-IanaCode'><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-UserCode'><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-Subcode'><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+The <nt def='NT-Langcode'>Langcode</nt> may be any of the following:
+<ulist>
+<item><p>a two-letter language code as defined by
+<bibref ref="ISO639"/>, "Codes
+for the representation of names of languages"</p></item>
+<item><p>a language identifier registered with the Internet
+Assigned Numbers Authority <bibref ref='IANA'/>; these begin with the
+prefix "<code>i-</code>" (or "<code>I-</code>")</p></item>
+<item><p>a language identifier assigned by the user, or agreed on
+between parties in private use; these must begin with the
+prefix "<code>x-</code>" or "<code>X-</code>" in order to ensure that they do not conflict
+with names later standardized or registered with IANA</p></item>
+</ulist></p>
+<p>There may be any number of <nt def='NT-Subcode'>Subcode</nt> segments; if
+the first
+subcode segment exists and the Subcode consists of two
+letters, then it must be a country code from
+<bibref ref="ISO3166"/>, "Codes
+for the representation of names of countries."
+If the first
+subcode consists of more than two letters, it must be
+a subcode for the language in question registered with IANA,
+unless the <nt def='NT-Langcode'>Langcode</nt> begins with the prefix
+"<code>x-</code>" or
+"<code>X-</code>". </p>
+<p>It is customary to give the language code in lower case, and
+the country code (if any) in upper case.
+Note that these values, unlike other names in XML documents,
+are case insensitive.</p>
+<p>For example:
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>durchaus studiert mit heißem Bemüh'n.</l>
+ </sp>]]></eg></p>
+<!--<p>The xml:lang value is considered to apply both to the contents of an
+element and
+(unless otherwise via attribute default values) to the
+values of all of its attributes with free-text (CDATA) values. -->
+<p>The intent declared with <kw>xml:lang</kw> is considered to apply to
+all attributes and content of the element where it is specified,
+unless overridden with an instance of <kw>xml:lang</kw>
+on another element within that content.</p>
+<!--
+If no
+value is specified for xml:lang on an element, and no default value is
+defined for it in the DTD, then the xml:lang attribute of any element
+takes the same value it has in the parent element, if any. The two
+technical terms in the following example both have the same effective
+value for xml:lang:
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+The application, not the XML processor, is responsible for this '
+inheritance' of attribute values.
+-->
+<p>A simple declaration for <kw>xml:lang</kw> might take
+the form
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+but specific default values may also be given, if appropriate. In a
+collection of French poems for English students, with glosses and
+notes in English, the xml:lang attribute might be declared this way:
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id='sec-logical-struct'>
+<head>Logical Structures</head>
+
+<p><termdef id="dt-element" term="Element">Each <termref
+def="dt-xml-doc">XML document</termref> contains one or more
+<term>elements</term>, the boundaries of which are
+either delimited by <termref def="dt-stag">start-tags</termref>
+and <termref def="dt-etag">end-tags</termref>, or, for <termref
+def="dt-empty">empty</termref> elements, by an <termref
+def="dt-eetag">empty-element tag</termref>. Each element has a type,
+identified by name, sometimes called its "generic
+identifier" (GI), and may have a set of
+attribute specifications.</termdef> Each attribute specification
+has a <termref
+def="dt-attrname">name</termref> and a <termref
+def="dt-attrval">value</termref>.
+</p>
+<scrap lang='ebnf'><head>Element</head>
+<prod id='NT-element'><lhs>element</lhs>
+<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>
+<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt>
+<nt def='NT-ETag'>ETag</nt></rhs>
+<wfc def='GIMatch'/>
+<vc def='elementvalid'/>
+</prod>
+</scrap>
+<p>This specification does not constrain the semantics, use, or (beyond
+syntax) names of the element types and attributes, except that names
+beginning with a match to <code>(('X'|'x')('M'|'m')('L'|'l'))</code>
+are reserved for standardization in this or future versions of this
+specification.
+</p>
+<wfcnote id='GIMatch'>
+<head>Element Type Match</head>
+<p>
+The <nt def='NT-Name'>Name</nt> in an element's end-tag must match
+the element type in
+the start-tag.
+</p>
+</wfcnote>
+<vcnote id='elementvalid'>
+<head>Element Valid</head>
+<p>An element is
+valid if
+there is a declaration matching
+<nt def='NT-elementdecl'>elementdecl</nt> where the
+<nt def='NT-Name'>Name</nt> matches the element type, and
+one of the following holds:</p>
+<olist>
+<item><p>The declaration matches <kw>EMPTY</kw> and the element has no
+<termref def='dt-content'>content</termref>.</p></item>
+<item><p>The declaration matches <nt def='NT-children'>children</nt> and
+the sequence of
+<termref def="dt-parentchild">child elements</termref>
+belongs to the language generated by the regular expression in
+the content model, with optional white space (characters
+matching the nonterminal <nt def='NT-S'>S</nt>) between each pair
+of child elements.</p></item>
+<item><p>The declaration matches <nt def='NT-Mixed'>Mixed</nt> and
+the content consists of <termref def='dt-chardata'>character
+data</termref> and <termref def='dt-parentchild'>child elements</termref>
+whose types match names in the content model.</p></item>
+<item><p>The declaration matches <kw>ANY</kw>, and the types
+of any <termref def='dt-parentchild'>child elements</termref> have
+been declared.</p></item>
+</olist>
+</vcnote>
+
+<div2 id='sec-starttags'>
+<head>Start-Tags, End-Tags, and Empty-Element Tags</head>
+
+<p><termdef id="dt-stag" term="Start-Tag">The beginning of every
+non-empty XML element is marked by a <term>start-tag</term>.
+<scrap lang='ebnf'>
+<head>Start-tag</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-STag'><lhs>STag</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)*
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<wfc def="uniqattspec"/>
+</prod>
+<prod id='NT-Attribute'><lhs>Attribute</lhs>
+<rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt>
+<nt def='NT-AttValue'>AttValue</nt></rhs>
+<vc def='ValueType'/>
+<wfc def='NoExternalRefs'/>
+<wfc def='CleanAttrVals'/></prod>
+</prodgroup>
+</scrap>
+The <nt def='NT-Name'>Name</nt> in
+the start- and end-tags gives the
+element's <term>type</term>.</termdef>
+<termdef id="dt-attr" term="Attribute">
+The <nt def='NT-Name'>Name</nt>-<nt def='NT-AttValue'>AttValue</nt> pairs are
+referred to as
+the <term>attribute specifications</term> of the element</termdef>,
+<termdef id="dt-attrname" term="Attribute Name">with the
+<nt def='NT-Name'>Name</nt> in each pair
+referred to as the <term>attribute name</term></termdef> and
+<termdef id="dt-attrval" term="Attribute Value">the content of the
+<nt def='NT-AttValue'>AttValue</nt> (the text between the
+<code>'</code> or <code>"</code> delimiters)
+as the <term>attribute value</term>.</termdef>
+</p>
+<wfcnote id='uniqattspec'>
+<head>Unique Att Spec</head>
+<p>
+No attribute name may appear more than once in the same start-tag
+or empty-element tag.
+</p>
+</wfcnote>
+<vcnote id='ValueType'>
+<head>Attribute Value Type</head>
+<p>
+The attribute must have been declared; the value must be of the type
+declared for it.
+(For attribute types, see <specref ref='attdecls'/>.)
+</p>
+</vcnote>
+<wfcnote id='NoExternalRefs'>
+<head>No External Entity References</head>
+<p>
+Attribute values cannot contain direct or indirect entity references
+to external entities.
+</p>
+</wfcnote>
+<wfcnote id='CleanAttrVals'>
+<head>No <code>&lt;</code> in Attribute Values</head>
+<p>The <termref def='dt-repltext'>replacement text</termref> of any entity
+referred to directly or indirectly in an attribute
+value (other than "<code>&amp;lt;</code>") must not contain
+a <code>&lt;</code>.
+</p></wfcnote>
+<p>An example of a start-tag:
+<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>
+<p><termdef id="dt-etag" term="End Tag">The end of every element
+that begins with a start-tag must
+be marked by an <term>end-tag</term>
+containing a name that echoes the element's type as given in the
+start-tag:
+<scrap lang='ebnf'>
+<head>End-tag</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-ETag'><lhs>ETag</lhs>
+<rhs>'&lt;/' <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p>An example of an end-tag:<eg>&lt;/termdef></eg></p>
+<p><termdef id="dt-content" term="Content">The
+<termref def='dt-text'>text</termref> between the start-tag and
+end-tag is called the element's
+<term>content</term>:
+<scrap lang='ebnf'>
+<head>Content of Elements</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-content'><lhs>content</lhs>
+<rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt>
+| <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt>
+| <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs>
+</prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p><termdef id="dt-empty" term="Empty">If an element is <term>empty</term>,
+it must be represented either by a start-tag immediately followed
+by an end-tag or by an empty-element tag.</termdef>
+<termdef id="dt-eetag" term="empty-element tag">An
+<term>empty-element tag</term> takes a special form:
+<scrap lang='ebnf'>
+<head>Tags for Empty Elements</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>?
+'/&gt;'</rhs>
+<wfc def="uniqattspec"/>
+</prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p>Empty-element tags may be used for any element which has no
+content, whether or not it is declared using the keyword
+<kw>EMPTY</kw>.
+<termref def='dt-interop'>For interoperability</termref>, the empty-element
+tag must be used, and can only be used, for elements which are
+<termref def='dt-eldecl'>declared</termref> <kw>EMPTY</kw>.</p>
+<p>Examples of empty elements:
+<eg>&lt;IMG align="left"
+ src="http://www.w3.org/Icons/WWW/w3c_home" />
+&lt;br>&lt;/br>
+&lt;br/></eg></p>
+</div2>
+
+<div2 id='elemdecls'>
+<head>Element Type Declarations</head>
+
+<p>The <termref def="dt-element">element</termref> structure of an
+<termref def="dt-xml-doc">XML document</termref> may, for
+<termref def="dt-valid">validation</termref> purposes,
+be constrained
+using element type and attribute-list declarations.
+An element type declaration constrains the element's
+<termref def="dt-content">content</termref>.
+</p>
+
+<p>Element type declarations often constrain which element types can
+appear as <termref def="dt-parentchild">children</termref> of the element.
+At user option, an XML processor may issue a warning
+when a declaration mentions an element type for which no declaration
+is provided, but this is not an error.</p>
+<p><termdef id="dt-eldecl" term="Element Type declaration">An <term>element
+type declaration</term> takes the form:
+<scrap lang='ebnf'>
+<head>Element Type Declaration</head>
+<prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id='NT-elementdecl'><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-contentspec'>contentspec</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<vc def='EDUnique'/></prod>
+<prod id='NT-contentspec'><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def='NT-Mixed'>Mixed</nt>
+| <nt def='NT-children'>children</nt>
+</rhs>
+</prod>
+</prodgroup>
+</scrap>
+where the <nt def='NT-Name'>Name</nt> gives the element type
+being declared.</termdef>
+</p>
+
+<vcnote id='EDUnique'>
+<head>Unique Element Type Declaration</head>
+<p>
+No element type may be declared more than once.
+</p>
+</vcnote>
+
+<p>Examples of element type declarations:
+<eg>&lt;!ELEMENT br EMPTY>
+&lt;!ELEMENT p (#PCDATA|emph)* >
+&lt;!ELEMENT %name.para; %content.para; >
+&lt;!ELEMENT container ANY></eg></p>
+
+<div3 id='sec-element-content'>
+<head>Element Content</head>
+
+<p><termdef id='dt-elemcontent' term='Element content'>An element <termref
+def="dt-stag">type</termref> has
+<term>element content</term> when elements of that
+type must contain only <termref def='dt-parentchild'>child</termref>
+elements (no character data), optionally separated by
+white space (characters matching the nonterminal
+<nt def='NT-S'>S</nt>).
+</termdef>
+In this case, the
+constraint includes a content model, a simple grammar governing
+the allowed types of the child
+elements and the order in which they are allowed to appear.
+The grammar is built on
+content particles (<nt def='NT-cp'>cp</nt>s), which consist of names,
+choice lists of content particles, or
+sequence lists of content particles:
+<scrap lang='ebnf'>
+<head>Element-content Models</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-children'><lhs>children</lhs>
+<rhs>(<nt def='NT-choice'>choice</nt>
+| <nt def='NT-seq'>seq</nt>)
+('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-cp'><lhs>cp</lhs>
+<rhs>(<nt def='NT-Name'>Name</nt>
+| <nt def='NT-choice'>choice</nt>
+| <nt def='NT-seq'>seq</nt>)
+('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>? cp
+( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*
+<nt def='NT-S'>S</nt>? ')'</rhs>
+<vc def='vc-PEinGroup'/></prod>
+<prod id='NT-seq'><lhs>seq</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>? cp
+( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*
+<nt def='NT-S'>S</nt>? ')'</rhs>
+<vc def='vc-PEinGroup'/></prod>
+
+</prodgroup>
+</scrap>
+where each <nt def='NT-Name'>Name</nt> is the type of an element which may
+appear as a <termref def="dt-parentchild">child</termref>.
+Any content
+particle in a choice list may appear in the <termref
+def="dt-elemcontent">element content</termref> at the location where
+the choice list appears in the grammar;
+content particles occurring in a sequence list must each
+appear in the <termref def="dt-elemcontent">element content</termref> in the
+order given in the list.
+The optional character following a name or list governs
+whether the element or the content particles in the list may occur one
+or more (<code>+</code>), zero or more (<code>*</code>), or zero or
+one times (<code>?</code>).
+The absence of such an operator means that the element or content particle
+must appear exactly once.
+This syntax
+and meaning are identical to those used in the productions in this
+specification.</p>
+<p>
+The content of an element matches a content model if and only if it is
+possible to trace out a path through the content model, obeying the
+sequence, choice, and repetition operators and matching each element in
+the content against an element type in the content model. <termref
+def='dt-compat'>For compatibility</termref>, it is an error
+if an element in the document can
+match more than one occurrence of an element type in the content model.
+For more information, see <specref ref="determinism"/>.
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+<vcnote id='vc-PEinGroup'>
+<head>Proper Group/PE Nesting</head>
+<p>Parameter-entity
+<termref def='dt-repltext'>replacement text</termref> must be properly nested
+with parenthetized groups.
+That is to say, if either of the opening or closing parentheses
+in a <nt def='NT-choice'>choice</nt>, <nt def='NT-seq'>seq</nt>, or
+<nt def='NT-Mixed'>Mixed</nt> construct
+is contained in the replacement text for a
+<termref def='dt-PERef'>parameter entity</termref>,
+both must be contained in the same replacement text.</p>
+<p><termref def='dt-interop'>For interoperability</termref>,
+if a parameter-entity reference appears in a
+<nt def='NT-choice'>choice</nt>, <nt def='NT-seq'>seq</nt>, or
+<nt def='NT-Mixed'>Mixed</nt> construct, its replacement text
+should not be empty, and
+neither the first nor last non-blank
+character of the replacement text should be a connector
+(<code>|</code> or <code>,</code>).
+</p>
+</vcnote>
+<p>Examples of element-content models:
+<eg>&lt;!ELEMENT spec (front, body, back?)>
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>
+</div3>
+
+<div3 id='sec-mixed-content'>
+<head>Mixed Content</head>
+
+<p><termdef id='dt-mixed' term='Mixed Content'>An element
+<termref def='dt-stag'>type</termref> has
+<term>mixed content</term> when elements of that type may contain
+character data, optionally interspersed with
+<termref def="dt-parentchild">child</termref> elements.</termdef>
+In this case, the types of the child elements
+may be constrained, but not their order or their number of occurrences:
+<scrap lang='ebnf'>
+<head>Mixed-content Declaration</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-Mixed'><lhs>Mixed</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+'#PCDATA'
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'
+</rhs><vc def='vc-PEinGroup'/>
+<vc def='vc-MixedChildrenUnique'/>
+</prod>
+
+</prodgroup>
+</scrap>
+where the <nt def='NT-Name'>Name</nt>s give the types of elements
+that may appear as children.
+</p>
+<vcnote id='vc-MixedChildrenUnique'>
+<head>No Duplicate Types</head>
+<p>The same name must not appear more than once in a single mixed-content
+declaration.
+</p></vcnote>
+<p>Examples of mixed content declarations:
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
+&lt;!ELEMENT b (#PCDATA)></eg></p>
+</div3>
+</div2>
+
+<div2 id='attdecls'>
+<head>Attribute-List Declarations</head>
+
+<p><termref def="dt-attr">Attributes</termref> are used to associate
+name-value pairs with <termref def="dt-element">elements</termref>.
+Attribute specifications may appear only within <termref
+def="dt-stag">start-tags</termref>
+and <termref def="dt-eetag">empty-element tags</termref>;
+thus, the productions used to
+recognize them appear in <specref ref='sec-starttags'/>.
+Attribute-list
+declarations may be used:
+<ulist>
+<item><p>To define the set of attributes pertaining to a given
+element type.</p></item>
+<item><p>To establish type constraints for these
+attributes.</p></item>
+<item><p>To provide <termref def="dt-default">default values</termref>
+for attributes.</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>Attribute-list declarations</term> specify the name, data type, and default
+value (if any) of each attribute associated with a given element type:
+<scrap lang='ebnf'>
+<head>Attribute-list Declaration</head>
+<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-AttDef'>AttDef</nt>*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-AttDef'><lhs>AttDef</lhs>
+<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-DefaultDecl'>DefaultDecl</nt></rhs>
+</prod>
+</scrap>
+The <nt def="NT-Name">Name</nt> in the
+<nt def='NT-AttlistDecl'>AttlistDecl</nt> rule is the type of an element. At
+user option, an XML processor may issue a warning if attributes are
+declared for an element type not itself declared, but this is not an
+error. The <nt def='NT-Name'>Name</nt> in the
+<nt def='NT-AttDef'>AttDef</nt> rule is
+the name of the attribute.</termdef></p>
+<p>
+When more than one <nt def='NT-AttlistDecl'>AttlistDecl</nt> is provided for a
+given element type, the contents of all those provided are merged. When
+more than one definition is provided for the same attribute of a
+given element type, the first declaration is binding and later
+declarations are ignored.
+<termref def='dt-interop'>For interoperability,</termref> writers of DTDs
+may choose to provide at most one attribute-list declaration
+for a given element type, at most one attribute definition
+for a given attribute name, and at least one attribute definition
+in each attribute-list declaration.
+For interoperability, an XML processor may at user option
+issue a warning when more than one attribute-list declaration is
+provided for a given element type, or more than one attribute definition
+is provided
+for a given attribute, but this is not an error.
+</p>
+
+<div3 id='sec-attribute-types'>
+<head>Attribute Types</head>
+
+<p>XML attribute types are of three kinds: a string type, a
+set of tokenized types, and enumerated types. The string type may take
+any literal string as a value; the tokenized types have varying lexical
+and semantic constraints, as noted:
+<scrap lang='ebnf'>
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-AttType'><lhs>AttType</lhs>
+<rhs><nt def='NT-StringType'>StringType</nt>
+| <nt def='NT-TokenizedType'>TokenizedType</nt>
+| <nt def='NT-EnumeratedType'>EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id='NT-StringType'><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def='id'/>
+<vc def='one-id-per-el'/>
+<vc def='id-default'/>
+<rhs>| 'IDREF'</rhs>
+<vc def='idref'/>
+<rhs>| 'IDREFS'</rhs>
+<vc def='idref'/>
+<rhs>| 'ENTITY'</rhs>
+<vc def='entname'/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def='entname'/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def='nmtok'/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def='nmtok'/></prod>
+</prodgroup>
+</scrap>
+</p>
+<vcnote id='id' >
+<head>ID</head>
+<p>
+Values of type <kw>ID</kw> must match the
+<nt def='NT-Name'>Name</nt> production.
+A name must not appear more than once in
+an XML document as a value of this type; i.e., ID values must uniquely
+identify the elements which bear them.
+</p>
+</vcnote>
+<vcnote id='one-id-per-el'>
+<head>One ID per Element Type</head>
+<p>No element type may have more than one ID attribute specified.</p>
+</vcnote>
+<vcnote id='id-default'>
+<head>ID Attribute Default</head>
+<p>An ID attribute must have a declared default of <kw>#IMPLIED</kw> or
+<kw>#REQUIRED</kw>.</p>
+</vcnote>
+<vcnote id='idref'>
+<head>IDREF</head>
+<p>
+Values of type <kw>IDREF</kw> must match
+the <nt def="NT-Name">Name</nt> production, and
+values of type <kw>IDREFS</kw> must match
+<nt def="NT-Names">Names</nt>;
+each <nt def='NT-Name'>Name</nt> must match the value of an ID attribute on
+some element in the XML document; i.e. <kw>IDREF</kw> values must
+match the value of some ID attribute.
+</p>
+</vcnote>
+<vcnote id='entname'>
+<head>Entity Name</head>
+<p>
+Values of type <kw>ENTITY</kw>
+must match the <nt def="NT-Name">Name</nt> production,
+values of type <kw>ENTITIES</kw> must match
+<nt def="NT-Names">Names</nt>;
+each <nt def="NT-Name">Name</nt> must
+match the
+name of an <termref def="dt-unparsed">unparsed entity</termref> declared in the
+<termref def="dt-doctype">DTD</termref>.
+</p>
+</vcnote>
+<vcnote id='nmtok'>
+<head>Name Token</head>
+<p>
+Values of type <kw>NMTOKEN</kw> must match the
+<nt def="NT-Nmtoken">Nmtoken</nt> production;
+values of type <kw>NMTOKENS</kw> must
+match <termref def="NT-Nmtokens">Nmtokens</termref>.
+</p>
+</vcnote>
+<!-- why?
+<p>The XML processor must normalize attribute values before
+passing them to the application, as described in
+<specref ref="AVNormalize"/>.</p>-->
+<p><termdef id='dt-enumerated' term='Enumerated Attribute
+Values'><term>Enumerated attributes</term> can take one
+of a list of values provided in the declaration</termdef>. There are two
+kinds of enumerated types:
+<scrap lang='ebnf'>
+<head>Enumerated Attribute Types</head>
+<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs>
+<rhs><nt def='NT-NotationType'>NotationType</nt>
+| <nt def='NT-Enumeration'>Enumeration</nt>
+</rhs></prod>
+<prod id='NT-NotationType'><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def='NT-S'>S</nt>
+'('
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>? ')'
+</rhs>
+<vc def='notatn' /></prod>
+<prod id='NT-Enumeration'><lhs>Enumeration</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>
+(<nt def='NT-S'>S</nt>? '|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>)*
+<nt def='NT-S'>S</nt>?
+')'</rhs>
+<vc def='enum'/></prod>
+</scrap>
+A <kw>NOTATION</kw> attribute identifies a
+<termref def='dt-notation'>notation</termref>, declared in the
+DTD with associated system and/or public identifiers, to
+be used in interpreting the element to which the attribute
+is attached.
+</p>
+
+<vcnote id='notatn'>
+<head>Notation Attributes</head>
+<p>
+Values of this type must match
+one of the <titleref href='Notations'>notation</titleref> names included in
+the declaration; all notation names in the declaration must
+be declared.
+</p>
+</vcnote>
+<vcnote id='enum'>
+<head>Enumeration</head>
+<p>
+Values of this type
+must match one of the <nt def='NT-Nmtoken'>Nmtoken</nt> tokens in the
+declaration.
+</p>
+</vcnote>
+<p><termref def='dt-interop'>For interoperability,</termref> the same
+<nt def='NT-Nmtoken'>Nmtoken</nt> should not occur more than once in the
+enumerated attribute types of a single element type.
+</p>
+</div3>
+
+<div3 id='sec-attr-defaults'>
+<head>Attribute Defaults</head>
+
+<p>An <termref def="dt-attdecl">attribute declaration</termref> provides
+information on whether
+the attribute's presence is required, and if not, how an XML processor should
+react if a declared attribute is absent in a document.
+<scrap lang='ebnf'>
+<head>Attribute Defaults</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-DefaultDecl'><lhs>DefaultDecl</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+<vc def='RequiredAttr'/>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+<vc def='FixedAttr'/>
+</prod>
+</prodgroup>
+</scrap>
+
+</p>
+<p>In an attribute declaration, <kw>#REQUIRED</kw> means that the
+attribute must always be provided, <kw>#IMPLIED</kw> that no default
+value is provided.
+<!-- not any more!!
+<kw>#IMPLIED</kw> means that if the attribute is omitted
+from an element of this type,
+the XML processor must inform the application
+that no value was specified; no constraint is placed on the behavior
+of the application. -->
+<termdef id="dt-default" term="Attribute Default">If the
+declaration
+is neither <kw>#REQUIRED</kw> nor <kw>#IMPLIED</kw>, then the
+<nt def='NT-AttValue'>AttValue</nt> value contains the declared
+<term>default</term> value; the <kw>#FIXED</kw> keyword states that
+the attribute must always have the default value.
+If a default value
+is declared, when an XML processor encounters an omitted attribute, it
+is to behave as though the attribute were present with
+the declared default value.</termdef></p>
+<vcnote id='RequiredAttr'>
+<head>Required Attribute</head>
+<p>If the default declaration is the keyword <kw>#REQUIRED</kw>, then
+the attribute must be specified for
+all elements of the type in the attribute-list declaration.
+</p></vcnote>
+<vcnote id='defattrvalid'>
+<head>Attribute Default Legal</head>
+<p>
+The declared
+default value must meet the lexical constraints of the declared attribute type.
+</p>
+</vcnote>
+<vcnote id='FixedAttr'>
+<head>Fixed Attribute Default</head>
+<p>If an attribute has a default value declared with the
+<kw>#FIXED</kw> keyword, instances of that attribute must
+match the default value.
+</p></vcnote>
+
+<p>Examples of attribute-list declarations:
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED>
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered">
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"></eg></p>
+</div3>
+<div3 id='AVNormalize'>
+<head>Attribute-Value Normalization</head>
+<p>Before the value of an attribute is passed to the application
+or checked for validity, the
+XML processor must normalize it as follows:
+<ulist>
+<item><p>a character reference is processed by appending the referenced
+character to the attribute value</p></item>
+<item><p>an entity reference is processed by recursively processing the
+replacement text of the entity</p></item>
+<item><p>a whitespace character (#x20, #xD, #xA, #x9) is processed by
+appending #x20 to the normalized value, except that only a single #x20
+is appended for a "#xD#xA" sequence that is part of an external
+parsed entity or the literal entity value of an internal parsed
+entity</p></item>
+<item><p>other characters are processed by appending them to the normalized
+value</p>
+</item></ulist>
+</p>
+<p>If the declared value is not CDATA, then the XML processor must
+further process the normalized attribute value by discarding any
+leading and trailing space (#x20) characters, and by replacing
+sequences of space (#x20) characters by a single space (#x20)
+character.</p>
+<p>
+All attributes for which no declaration has been read should be treated
+by a non-validating parser as if declared
+<kw>CDATA</kw>.
+</p>
+</div3>
+</div2>
+<div2 id='sec-condition-sect'>
+<head>Conditional Sections</head>
+<p><termdef id='dt-cond-section' term='conditional section'>
+<term>Conditional sections</term> are portions of the
+<termref def='dt-doctype'>document type declaration external subset</termref>
+which are
+included in, or excluded from, the logical structure of the DTD based on
+the keyword which governs them.</termdef>
+<scrap lang='ebnf'>
+<head>Conditional Section</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>
+<rhs><nt def='NT-includeSect'>includeSect</nt>
+| <nt def='NT-ignoreSect'>ignoreSect</nt>
+</rhs>
+</prod>
+<prod id='NT-includeSect'><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+
+<nt def="NT-extSubsetDecl">extSubsetDecl</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+
+<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>
+<rhs><nt def='NT-Ignore'>Ignore</nt>
+('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt> ']]&gt;'
+<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>
+<prod id='NT-Ignore'><lhs>Ignore</lhs>
+<rhs><nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def='NT-Char'>Char</nt>*)
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>Like the internal and external DTD subsets, a conditional section
+may contain one or more complete declarations,
+comments, processing instructions,
+or nested conditional sections, intermingled with white space.
+</p>
+<p>If the keyword of the
+conditional section is <kw>INCLUDE</kw>, then the contents of the conditional
+section are part of the DTD.
+If the keyword of the conditional
+section is <kw>IGNORE</kw>, then the contents of the conditional section are
+not logically part of the DTD.
+Note that for reliable parsing, the contents of even ignored
+conditional sections must be read in order to
+detect nested conditional sections and ensure that the end of the
+outermost (ignored) conditional section is properly detected.
+If a conditional section with a
+keyword of <kw>INCLUDE</kw> occurs within a larger conditional
+section with a keyword of <kw>IGNORE</kw>, both the outer and the
+inner conditional sections are ignored.</p>
+<p>If the keyword of the conditional section is a
+parameter-entity reference, the parameter entity must be replaced by its
+content before the processor decides whether to
+include or ignore the conditional section.</p>
+<p>An example:
+<eg>&lt;!ENTITY % draft 'INCLUDE' >
+&lt;!ENTITY % final 'IGNORE' >
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)>
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)>
+]]&gt;
+</eg>
+</p>
+</div2>
+
+
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id='sec-physical-struct'>
+<head>Physical Structures</head>
+
+<p><termdef id="dt-entity" term="Entity">An XML document may consist
+of one or many storage units. These are called
+<term>entities</term>; they all have <term>content</term> and are all
+(except for the document entity, see below, and
+the <termref def='dt-doctype'>external DTD subset</termref>)
+identified by <term>name</term>.
+</termdef>
+Each XML document has one entity
+called the <termref def="dt-docent">document entity</termref>, which serves
+as the starting point for the <termref def="dt-xml-proc">XML
+processor</termref> and may contain the whole document.</p>
+<p>Entities may be either parsed or unparsed.
+<termdef id="dt-parsedent" term="Text Entity">A <term>parsed entity's</term>
+contents are referred to as its
+<termref def='dt-repltext'>replacement text</termref>;
+this <termref def="dt-text">text</termref> is considered an
+integral part of the document.</termdef></p>
+
+<p><termdef id="dt-unparsed" term="Unparsed Entity">An
+<term>unparsed entity</term>
+is a resource whose contents may or may not be
+<termref def='dt-text'>text</termref>, and if text, may not be XML.
+Each unparsed entity
+has an associated <termref
+def="dt-notation">notation</termref>, identified by name.
+Beyond a requirement
+that an XML processor make the identifiers for the entity and
+notation available to the application,
+XML places no constraints on the contents of unparsed entities.</termdef>
+</p>
+<p>
+Parsed entities are invoked by name using entity references;
+unparsed entities by name, given in the value of <kw>ENTITY</kw>
+or <kw>ENTITIES</kw>
+attributes.</p>
+<p><termdef id='gen-entity' term='general entity'
+><term>General entities</term>
+are entities for use within the document content.
+In this specification, general entities are sometimes referred
+to with the unqualified term <emph>entity</emph> when this leads
+to no ambiguity.</termdef>
+<termdef id='dt-PE' term='Parameter entity'>Parameter entities
+are parsed entities for use within the DTD.</termdef>
+These two types of entities use different forms of reference and
+are recognized in different contexts.
+Furthermore, they occupy different namespaces; a parameter entity and
+a general entity with the same name are two distinct entities.
+</p>
+
+<div2 id='sec-references'>
+<head>Character and Entity References</head>
+<p><termdef id="dt-charref" term="Character Reference">
+A <term>character reference</term> refers to a specific character in the
+ISO/IEC 10646 character set, for example one not directly accessible from
+available input devices.
+<scrap lang='ebnf'>
+<head>Character Reference</head>
+<prod id='NT-CharRef'><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>Legal Character</head>
+<p>Characters referred to using character references must
+match the production for
+<termref def="NT-Char">Char</termref>.</p>
+</wfcnote>
+If the character reference begins with "<code>&amp;#x</code>", the digits and
+letters up to the terminating <code>;</code> provide a hexadecimal
+representation of the character's code point in ISO/IEC 10646.
+If it begins just with "<code>&amp;#</code>", the digits up to the terminating
+<code>;</code> provide a decimal representation of the character's
+code point.
+</termdef>
+</p>
+<p><termdef id="dt-entref" term="Entity Reference">An <term>entity
+reference</term> refers to the content of a named entity.</termdef>
+<termdef id='dt-GERef' term='General Entity Reference'>References to
+parsed general entities
+use ampersand (<code>&amp;</code>) and semicolon (<code>;</code>) as
+delimiters.</termdef>
+<termdef id='dt-PERef' term='Parameter-entity reference'>
+<term>Parameter-entity references</term> use percent-sign (<code>%</code>) and
+semicolon
+(<code>;</code>) as delimiters.</termdef>
+</p>
+<scrap lang="ebnf">
+<head>Entity Reference</head>
+<prod id='NT-Reference'><lhs>Reference</lhs>
+<rhs><nt def='NT-EntityRef'>EntityRef</nt>
+| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>
+<prod id='NT-EntityRef'><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+</prod>
+<prod id='NT-PEReference'><lhs>PEReference</lhs>
+<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<vc def='vc-entdeclared'/>
+<wfc def='norecursion'/>
+<wfc def='indtd'/>
+</prod>
+</scrap>
+
+<wfcnote id='wf-entdeclared'>
+<head>Entity Declared</head>
+<p>In a document without any DTD, a document with only an internal
+DTD subset which contains no parameter entity references, or a document with
+"<code>standalone='yes'</code>",
+the <nt def='NT-Name'>Name</nt> given in the entity reference must
+<termref def="dt-match">match</termref> that in an
+<titleref href='sec-entity-decl'>entity declaration</titleref>, except that
+well-formed documents need not declare
+any of the following entities: &magicents;.
+The declaration of a parameter entity must precede any reference to it.
+Similarly, the declaration of a general entity must precede any
+reference to it which appears in a default value in an attribute-list
+declaration.</p>
+<p>Note that if entities are declared in the external subset or in
+external parameter entities, a non-validating processor is
+<titleref href='include-if-valid'>not obligated to</titleref> read
+and process their declarations; for such documents, the rule that
+an entity must be declared is a well-formedness constraint only
+if <titleref href='sec-rmd'>standalone='yes'</titleref>.</p>
+</wfcnote>
+<vcnote id="vc-entdeclared">
+<head>Entity Declared</head>
+<p>In a document with an external subset or external parameter
+entities with "<code>standalone='no'</code>",
+the <nt def='NT-Name'>Name</nt> given in the entity reference must <termref
+def="dt-match">match</termref> that in an
+<titleref href='sec-entity-decl'>entity declaration</titleref>.
+For interoperability, valid documents should declare the entities
+&magicents;, in the form
+specified in <specref ref="sec-predefined-ent"/>.
+The declaration of a parameter entity must precede any reference to it.
+Similarly, the declaration of a general entity must precede any
+reference to it which appears in a default value in an attribute-list
+declaration.</p>
+</vcnote>
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+<wfcnote id='textent'>
+<head>Parsed Entity</head>
+<p>
+An entity reference must not contain the name of an <termref
+def="dt-unparsed">unparsed entity</termref>. Unparsed entities may be referred
+to only in <termref def="dt-attrval">attribute values</termref> declared to
+be of type <kw>ENTITY</kw> or <kw>ENTITIES</kw>.
+</p>
+</wfcnote>
+<wfcnote id='norecursion'>
+<head>No Recursion</head>
+<p>
+A parsed entity must not contain a recursive reference to itself,
+either directly or indirectly.
+</p>
+</wfcnote>
+<wfcnote id='indtd'>
+<head>In DTD</head>
+<p>
+Parameter-entity references may only appear in the
+<termref def='dt-doctype'>DTD</termref>.
+</p>
+</wfcnote>
+<p>Examples of character and entity references:
+<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg></p>
+<p>Example of a parameter-entity reference:
+<eg><![CDATA[<!-- declare the parameter entity "ISOLat2"... -->
+<!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+<!-- ... now reference it. -->
+%ISOLat2;]]></eg></p>
+</div2>
+
+<div2 id='sec-entity-decl'>
+<head>Entity Declarations</head>
+
+<p><termdef id="dt-entdecl" term="entity declaration">
+Entities are declared thus:
+<scrap lang='ebnf'>
+<head>Entity Declaration</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt><!--</rhs><com>General entities</com>
+<rhs>--> | <nt def="NT-PEDecl">PEDecl</nt></rhs>
+<!--<com>Parameter entities</com>-->
+</prod>
+<prod id='NT-GEDecl'><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-PEDecl'><lhs>PEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>
+<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<!--<com>Parameter entities</com>-->
+</prod>
+<prod id='NT-EntityDef'><lhs>EntityDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+<!--</rhs>
+<rhs>-->| (<nt def='NT-ExternalID'>ExternalID</nt>
+<nt def='NT-NDataDecl'>NDataDecl</nt>?)</rhs>
+<!-- <nt def='NT-ExternalDef'>ExternalDef</nt></rhs> -->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id='NT-PEDef'><lhs>PEDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+The <nt def='NT-Name'>Name</nt> identifies the entity in an
+<termref def="dt-entref">entity reference</termref> or, in the case of an
+unparsed entity, in the value of an <kw>ENTITY</kw> or <kw>ENTITIES</kw>
+attribute.
+If the same entity is declared more than once, the first declaration
+encountered is binding; at user option, an XML processor may issue a
+warning if entities are declared multiple times.</termdef>
+</p>
+
+<div3 id='sec-internal-ent'>
+<head>Internal Entities</head>
+
+<p><termdef id='dt-internent' term="Internal Entity Replacement Text">If
+the entity definition is an
+<nt def='NT-EntityValue'>EntityValue</nt>,
+the defined entity is called an <term>internal entity</term>.
+There is no separate physical
+storage object, and the content of the entity is given in the
+declaration. </termdef>
+Note that some processing of entity and character references in the
+<termref def='dt-litentval'>literal entity value</termref> may be required to
+produce the correct <termref def='dt-repltext'>replacement
+text</termref>: see <specref ref='intern-replacement'/>.
+</p>
+<p>An internal entity is a <termref def="dt-parsedent">parsed
+entity</termref>.</p>
+<p>Example of an internal entity declaration:
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the
+ specification."></eg></p>
+</div3>
+
+<div3 id='sec-external-ent'>
+<head>External Entities</head>
+
+<p><termdef id="dt-extent" term="External Entity">If the entity is not
+internal, it is an <term>external
+entity</term>, declared as follows:
+<scrap lang='ebnf'>
+<head>External Entity Declaration</head>
+<!--
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs></prod> -->
+<prod id='NT-ExternalID'><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>
+<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt></rhs>
+<vc def='not-declared'/></prod>
+</scrap>
+If the <nt def='NT-NDataDecl'>NDataDecl</nt> is present, this is a
+general <termref def="dt-unparsed">unparsed
+entity</termref>; otherwise it is a parsed entity.</termdef></p>
+<vcnote id='not-declared'>
+<head>Notation Declared</head>
+<p>
+The <nt def='NT-Name'>Name</nt> must match the declared name of a
+<termref def="dt-notation">notation</termref>.
+</p>
+</vcnote>
+<p><termdef id="dt-sysid" term="System Identifier">The
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+is called the entity's <term>system identifier</term>. It is a URI,
+which may be used to retrieve the entity.</termdef>
+Note that the hash mark (<code>#</code>) and fragment identifier
+frequently used with URIs are not, formally, part of the URI itself;
+an XML processor may signal an error if a fragment identifier is
+given as part of a system identifier.
+Unless otherwise provided by information outside the scope of this
+specification (e.g. a special XML element type defined by a particular
+DTD, or a processing instruction defined by a particular application
+specification), relative URIs are relative to the location of the
+resource within which the entity declaration occurs.
+A URI might thus be relative to the
+<termref def='dt-docent'>document entity</termref>, to the entity
+containing the <termref def='dt-doctype'>external DTD subset</termref>,
+or to some other <termref def='dt-extent'>external parameter entity</termref>.
+</p>
+<p>An XML processor should handle a non-ASCII character in a URI by
+representing the character in UTF-8 as one or more bytes, and then
+escaping these bytes with the URI escaping mechanism (i.e., by
+converting each byte to %HH, where HH is the hexadecimal notation of the
+byte value).</p>
+<p><termdef id="dt-pubid" term="Public identifier">
+In addition to a system identifier, an external identifier may
+include a <term>public identifier</term>.</termdef>
+An XML processor attempting to retrieve the entity's content may use the public
+identifier to try to generate an alternative URI. If the processor
+is unable to do so, it must use the URI specified in the system
+literal. Before a match is attempted, all strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p>
+<p>Examples of external entity declarations:
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif ></eg></p>
+</div3>
+
+</div2>
+
+<div2 id='TextEntities'>
+<head>Parsed Entities</head>
+<div3 id='sec-TextDecl'>
+<head>The Text Declaration</head>
+<p>External parsed entities may each begin with a <term>text
+declaration</term>.
+<scrap lang='ebnf'>
+<head>Text Declaration</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id='NT-TextDecl'><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>?
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>
+<nt def='NT-S'>S</nt>? &pic;</rhs>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>The text declaration must be provided literally, not
+by reference to a parsed entity.
+No text declaration may appear at any position other than the beginning of
+an external parsed entity.</p>
+</div3>
+<div3 id='wf-entities'>
+<head>Well-Formed Parsed Entities</head>
+<p>The document entity is well-formed if it matches the production labeled
+<nt def='NT-document'>document</nt>.
+An external general
+parsed entity is well-formed if it matches the production labeled
+<nt def='NT-extParsedEnt'>extParsedEnt</nt>.
+An external parameter
+entity is well-formed if it matches the production labeled
+<nt def='NT-extPE'>extPE</nt>.
+<scrap lang='ebnf'>
+<head>Well-Formed External Parsed Entity</head>
+<prod id='NT-extParsedEnt'><lhs>extParsedEnt</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-content'>content</nt></rhs>
+</prod>
+<prod id='NT-extPE'><lhs>extPE</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubsetDecl'>extSubsetDecl</nt></rhs>
+</prod>
+</scrap>
+An internal general parsed entity is well-formed if its replacement text
+matches the production labeled
+<nt def='NT-content'>content</nt>.
+All internal parameter entities are well-formed by definition.
+</p>
+<p>A consequence of well-formedness in entities is that the logical
+and physical structures in an XML document are properly nested; no
+<termref def='dt-stag'>start-tag</termref>,
+<termref def='dt-etag'>end-tag</termref>,
+<termref def="dt-empty">empty-element tag</termref>,
+<termref def='dt-element'>element</termref>,
+<termref def='dt-comment'>comment</termref>,
+<termref def='dt-pi'>processing instruction</termref>,
+<termref def='dt-charref'>character
+reference</termref>, or
+<termref def='dt-entref'>entity reference</termref>
+can begin in one entity and end in another.</p>
+</div3>
+<div3 id='charencoding'>
+<head>Character Encoding in Entities</head>
+
+<p>Each external parsed entity in an XML document may use a different
+encoding for its characters. All XML processors must be able to read
+entities in either UTF-8 or UTF-16.
+
+</p>
+<p>Entities encoded in UTF-16 must
+begin with the Byte Order Mark described by ISO/IEC 10646 Annex E and
+Unicode Appendix B (the ZERO WIDTH NO-BREAK SPACE character, #xFEFF).
+This is an encoding signature, not part of either the markup or the
+character data of the XML document.
+XML processors must be able to use this character to
+differentiate between UTF-8 and UTF-16 encoded documents.</p>
+<p>Although an XML processor is required to read only entities in
+the UTF-8 and UTF-16 encodings, it is recognized that other encodings are
+used around the world, and it may be desired for XML processors
+to read entities that use them.
+Parsed entities which are stored in an encoding other than
+UTF-8 or UTF-16 must begin with a <titleref href='TextDecl'>text
+declaration</titleref> containing an encoding declaration:
+<scrap lang='ebnf'>
+<head>Encoding Declaration</head>
+<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def='NT-Eq'>Eq</nt>
+('"' <nt def='NT-EncName'>EncName</nt> '"' |
+"'" <nt def='NT-EncName'>EncName</nt> "'" )
+</rhs>
+</prod>
+<prod id='NT-EncName'><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>Encoding name contains only Latin characters</com>
+</prod>
+</scrap>
+In the <termref def='dt-docent'>document entity</termref>, the encoding
+declaration is part of the <termref def="dt-xmldecl">XML declaration</termref>.
+The <nt def="NT-EncName">EncName</nt> is the name of the encoding used.
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>In an encoding declaration, the values
+"<code>UTF-8</code>",
+"<code>UTF-16</code>",
+"<code>ISO-10646-UCS-2</code>", and
+"<code>ISO-10646-UCS-4</code>" should be
+used for the various encodings and transformations of Unicode /
+ISO/IEC 10646, the values
+"<code>ISO-8859-1</code>",
+"<code>ISO-8859-2</code>", ...
+"<code>ISO-8859-9</code>" should be used for the parts of ISO 8859, and
+the values
+"<code>ISO-2022-JP</code>",
+"<code>Shift_JIS</code>", and
+"<code>EUC-JP</code>"
+should be used for the various encoded forms of JIS X-0208-1997. XML
+processors may recognize other encodings; it is recommended that
+character encodings registered (as <emph>charset</emph>s)
+with the Internet Assigned Numbers
+Authority <bibref ref='IANA'/>, other than those just listed, should be
+referred to
+using their registered names.
+Note that these registered names are defined to be
+case-insensitive, so processors wishing to match against them
+should do so in a case-insensitive
+way.</p>
+<p>In the absence of information provided by an external
+transport protocol (e.g. HTTP or MIME),
+it is an <termref def="dt-error">error</termref> for an entity including
+an encoding declaration to be presented to the XML processor
+in an encoding other than that named in the declaration,
+for an encoding declaration to occur other than at the beginning
+of an external entity, or for
+an entity which begins with neither a Byte Order Mark nor an encoding
+declaration to use an encoding other than UTF-8.
+Note that since ASCII
+is a subset of UTF-8, ordinary ASCII entities do not strictly need
+an encoding declaration.</p>
+
+<p>It is a <termref def='dt-fatal'>fatal error</termref> when an XML processor
+encounters an entity with an encoding that it is unable to process.</p>
+<p>Examples of encoding declarations:
+<eg>&lt;?xml encoding='UTF-8'?>
+&lt;?xml encoding='EUC-JP'?></eg></p>
+</div3>
+</div2>
+<div2 id='entproc'>
+<head>XML Processor Treatment of Entities and References</head>
+<p>The table below summarizes the contexts in which character references,
+entity references, and invocations of unparsed entities might appear and the
+required behavior of an <termref def='dt-xml-proc'>XML processor</termref> in
+each case.
+The labels in the leftmost column describe the recognition context:
+<glist>
+<gitem><label>Reference in Content</label>
+<def><p>as a reference
+anywhere after the <termref def='dt-stag'>start-tag</termref> and
+before the <termref def='dt-etag'>end-tag</termref> of an element; corresponds
+to the nonterminal <nt def='NT-content'>content</nt>.</p></def>
+</gitem>
+<gitem>
+<label>Reference in Attribute Value</label>
+<def><p>as a reference within either the value of an attribute in a
+<termref def='dt-stag'>start-tag</termref>, or a default
+value in an <termref def='dt-attdecl'>attribute declaration</termref>;
+corresponds to the nonterminal
+<nt def='NT-AttValue'>AttValue</nt>.</p></def></gitem>
+<gitem>
+<label>Occurs as Attribute Value</label>
+<def><p>as a <nt def='NT-Name'>Name</nt>, not a reference, appearing either as
+the value of an
+attribute which has been declared as type <kw>ENTITY</kw>, or as one of
+the space-separated tokens in the value of an attribute which has been
+declared as type <kw>ENTITIES</kw>.</p>
+</def></gitem>
+<gitem><label>Reference in Entity Value</label>
+<def><p>as a reference
+within a parameter or internal entity's
+<termref def='dt-litentval'>literal entity value</termref> in
+the entity's declaration; corresponds to the nonterminal
+<nt def='NT-EntityValue'>EntityValue</nt>.</p></def></gitem>
+<gitem><label>Reference in DTD</label>
+<def><p>as a reference within either the internal or external subsets of the
+<termref def='dt-doctype'>DTD</termref>, but outside
+of an <nt def='NT-EntityValue'>EntityValue</nt> or
+<nt def="NT-AttValue">AttValue</nt>.</p></def>
+</gitem>
+</glist></p>
+<htable border='1' cellpadding='7' align='center'>
+<htbody>
+<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>
+<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>Entity Type</td>
+<td bgcolor='&cellback;' rowspan='2' align='center'>Character</td>
+</tr>
+<tr align='center' valign='bottom'>
+<td bgcolor='&cellback;'>Parameter</td>
+<td bgcolor='&cellback;'>Internal
+General</td>
+<td bgcolor='&cellback;'>External Parsed
+General</td>
+<td bgcolor='&cellback;'>Unparsed</td>
+</tr>
+<tr align='center' valign='middle'>
+
+<td bgcolor='&cellback;' align='right'>Reference
+in Content</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Not recognized</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+<td bgcolor='&cellback;'><titleref href='include-if-valid'>Included if validating</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Reference
+in Attribute Value</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Not recognized</titleref></td>
+<td bgcolor='&cellback;'><titleref href='inliteral'>Included in literal</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Occurs as
+Attribute Value</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Not recognized</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='notify'>Notify</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not recognized'>Not recognized</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Reference
+in EntityValue</td>
+<td bgcolor='&cellback;'><titleref href='inliteral'>Included in literal</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>Bypassed</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>Bypassed</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Reference
+in DTD</td>
+<td bgcolor='&cellback;'><titleref href='as-PE'>Included as PE</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id='not-recognized'>
+<head>Not Recognized</head>
+<p>Outside the DTD, the <code>%</code> character has no
+special significance; thus, what would be parameter entity references in the
+DTD are not recognized as markup in <nt def='NT-content'>content</nt>.
+Similarly, the names of unparsed entities are not recognized except
+when they appear in the value of an appropriately declared attribute.
+</p>
+</div3>
+<div3 id='included'>
+<head>Included</head>
+<p><termdef id="dt-include" term="Include">An entity is
+<term>included</term> when its
+<termref def='dt-repltext'>replacement text</termref> is retrieved
+and processed, in place of the reference itself,
+as though it were part of the document at the location the
+reference was recognized.
+The replacement text may contain both
+<termref def='dt-chardata'>character data</termref>
+and (except for parameter entities) <termref def="dt-markup">markup</termref>,
+which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" and the remaining ampersand is not recognized
+as an entity-reference delimiter.)
+A character reference is <term>included</term> when the indicated
+character is processed in place of the reference itself.
+</termdef></p>
+</div3>
+<div3 id='include-if-valid'>
+<head>Included If Validating</head>
+<p>When an XML processor recognizes a reference to a parsed entity, in order
+to <termref def="dt-valid">validate</termref>
+the document, the processor must
+<termref def="dt-include">include</termref> its
+replacement text.
+If the entity is external, and the processor is not
+attempting to validate the XML document, the
+processor <termref def="dt-may">may</termref>, but need not,
+include the entity's replacement text.
+If a non-validating parser does not include the replacement text,
+it must inform the application that it recognized, but did not
+read, the entity.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p>
+</div3>
+<div3 id='forbidden'>
+<head>Forbidden</head>
+<p>The following are forbidden, and constitute
+<termref def='dt-fatal'>fatal</termref> errors:
+<ulist>
+<item><p>the appearance of a reference to an
+<termref def='dt-unparsed'>unparsed entity</termref>.
+</p></item>
+<item><p>the appearance of any character or general-entity reference in the
+DTD except within an <nt def='NT-EntityValue'>EntityValue</nt> or
+<nt def="NT-AttValue">AttValue</nt>.</p></item>
+<item><p>a reference to an external entity in an attribute value.</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id='inliteral'>
+<head>Included in Literal</head>
+<p>When an <termref def='dt-entref'>entity reference</termref> appears in an
+attribute value, or a parameter entity reference appears in a literal entity
+value, its <termref def='dt-repltext'>replacement text</termref> is
+processed in place of the reference itself as though it
+were part of the document at the location the reference was recognized,
+except that a single or double quote character in the replacement text
+is always treated as a normal data character and will not terminate the
+literal.
+For example, this is well-formed:
+<eg><![CDATA[<!ENTITY % YN '"Yes"' >
+<!ENTITY WhatHeSaid "He said &YN;" >]]></eg>
+while this is not:
+<eg>&lt;!ENTITY EndAttr "27'" >
+&lt;element attribute='a-&amp;EndAttr;></eg>
+</p></div3>
+<div3 id='notify'>
+<head>Notify</head>
+<p>When the name of an <termref def='dt-unparsed'>unparsed
+entity</termref> appears as a token in the
+value of an attribute of declared type <kw>ENTITY</kw> or <kw>ENTITIES</kw>,
+a validating processor must inform the
+application of the <termref def='dt-sysid'>system</termref>
+and <termref def='dt-pubid'>public</termref> (if any)
+identifiers for both the entity and its associated
+<termref def="dt-notation">notation</termref>.</p>
+</div3>
+<div3 id='bypass'>
+<head>Bypassed</head>
+<p>When a general entity reference appears in the
+<nt def='NT-EntityValue'>EntityValue</nt> in an entity declaration,
+it is bypassed and left as is.</p>
+</div3>
+<div3 id='as-PE'>
+<head>Included as PE</head>
+<p>Just as with external parsed entities, parameter entities
+need only be <titleref href='include-if-valid'>included if
+validating</titleref>.
+When a parameter-entity reference is recognized in the DTD
+and included, its
+<termref def='dt-repltext'>replacement
+text</termref> is enlarged by the attachment of one leading and one following
+space (#x20) character; the intent is to constrain the replacement
+text of parameter
+entities to contain an integral number of grammatical tokens in the DTD.
+</p>
+</div3>
+
+</div2>
+<div2 id='intern-replacement'>
+<head>Construction of Internal Entity Replacement Text</head>
+<p>In discussing the treatment
+of internal entities, it is
+useful to distinguish two forms of the entity's value.
+<termdef id="dt-litentval" term='Literal Entity Value'>The <term>literal
+entity value</term> is the quoted string actually
+present in the entity declaration, corresponding to the
+non-terminal <nt def='NT-EntityValue'>EntityValue</nt>.</termdef>
+<termdef id='dt-repltext' term='Replacement Text'>The <term>replacement
+text</term> is the content of the entity, after
+replacement of character references and parameter-entity
+references.
+</termdef></p>
+
+<p>The literal entity value
+as given in an internal entity declaration
+(<nt def='NT-EntityValue'>EntityValue</nt>) may contain character,
+parameter-entity, and general-entity references.
+Such references must be contained entirely within the
+literal entity value.
+The actual replacement text that is
+<termref def='dt-include'>included</termref> as described above
+must contain the <emph>replacement text</emph> of any
+parameter entities referred to, and must contain the character
+referred to, in place of any character references in the
+literal entity value; however,
+general-entity references must be left as-is, unexpanded.
+For example, given the following declarations:
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+then the replacement text for the entity "<code>book</code>" is:
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+The general-entity reference "<code>&amp;rights;</code>" would be expanded
+should the reference "<code>&amp;book;</code>" appear in the document's
+content or an attribute value.</p>
+<p>These simple rules may have complex interactions; for a detailed
+discussion of a difficult example, see
+<specref ref='sec-entexpand'/>.
+</p>
+
+</div2>
+<div2 id='sec-predefined-ent'>
+<head>Predefined Entities</head>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+<p>All XML processors must recognize these entities whether they
+are declared or not.
+<termref def='dt-interop'>For interoperability</termref>,
+valid XML documents should declare these
+entities, like any others, before using them.
+If the entities in question are declared, they must be declared
+as internal entities whose replacement text is the single
+character being escaped or a character reference to
+that character, as shown below.
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+Note that the <code>&lt;</code> and <code>&amp;</code> characters
+in the declarations of "<code>lt</code>" and "<code>amp</code>"
+are doubly escaped to meet the requirement that entity replacement
+be well-formed.
+</p>
+</div2>
+
+<div2 id='Notations'>
+<head>Notation Declarations</head>
+
+<p><termdef id="dt-notation" term="Notation"><term>Notations</term> identify by
+name the format of <termref def="dt-extent">unparsed
+entities</termref>, the
+format of elements which bear a notation attribute,
+or the application to which
+a <termref def="dt-pi">processing instruction</termref> is
+addressed.</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>Notation declarations</term>
+provide a name for the notation, for use in
+entity and attribute-list declarations and in attribute specifications,
+and an external identifier for the notation which may allow an XML
+processor or its client application to locate a helper application
+capable of processing data in the given notation.
+<scrap lang='ebnf'>
+<head>Notation Declarations</head>
+<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+(<nt def='NT-ExternalID'>ExternalID</nt> |
+<nt def='NT-PublicID'>PublicID</nt>)
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+<prod id='NT-PublicID'><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>XML processors must provide applications with the name and external
+identifier(s) of any notation declared and referred to in an attribute
+value, attribute definition, or entity declaration. They may
+additionally resolve the external identifier into the
+<termref def="dt-sysid">system identifier</termref>,
+file name, or other information needed to allow the
+application to call a processor for data in the notation described. (It
+is not an error, however, for XML documents to declare and refer to
+notations for which notation-specific applications are not available on
+the system where the XML processor or application is running.)</p>
+</div2>
+
+
+<div2 id='sec-doc-entity'>
+<head>Document Entity</head>
+
+<p><termdef id="dt-docent" term="Document Entity">The <term>document
+entity</term> serves as the root of the entity
+tree and a starting-point for an <termref def="dt-xml-proc">XML
+processor</termref>.</termdef>
+This specification does
+not specify how the document entity is to be located by an XML
+processor; unlike other entities, the document entity has no name and might
+well appear on a processor input stream
+without any identification at all.</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+
+<div1 id='sec-conformance'>
+<head>Conformance</head>
+
+<div2 id='proc-types'>
+<head>Validating and Non-Validating Processors</head>
+<p>Conforming <termref def="dt-xml-proc">XML processors</termref> fall into two
+classes: validating and non-validating.</p>
+<p>Validating and non-validating processors alike must report
+violations of this specification's well-formedness constraints
+in the content of the
+<termref def='dt-docent'>document entity</termref> and any
+other <termref def='dt-parsedent'>parsed entities</termref> that
+they read.</p>
+<p><termdef id="dt-validating" term="Validating Processor">
+<term>Validating processors</term> must report
+violations of the constraints expressed by the declarations in the
+<termref def="dt-doctype">DTD</termref>, and
+failures to fulfill the validity constraints given
+in this specification.
+</termdef>
+To accomplish this, validating XML processors must read and process the entire
+DTD and all external parsed entities referenced in the document.
+</p>
+<p>Non-validating processors are required to check only the
+<termref def='dt-docent'>document entity</termref>, including
+the entire internal DTD subset, for well-formedness.
+<termdef id='dt-use-mdecl' term='Process Declarations'>
+While they are not required to check the document for validity,
+they are required to
+<term>process</term> all the declarations they read in the
+internal DTD subset and in any parameter entity that they
+read, up to the first reference
+to a parameter entity that they do <emph>not</emph> read; that is to
+say, they must
+use the information in those declarations to
+<titleref href='AVNormalize'>normalize</titleref> attribute values,
+<titleref href='included'>include</titleref> the replacement text of
+internal entities, and supply
+<titleref href='sec-attr-defaults'>default attribute values</titleref>.
+</termdef>
+They must not <termref def='dt-use-mdecl'>process</termref>
+<termref def='dt-entdecl'>entity declarations</termref> or
+<termref def='dt-attdecl'>attribute-list declarations</termref>
+encountered after a reference to a parameter entity that is not
+read, since the entity may have contained overriding declarations.
+</p>
+</div2>
+<div2 id='safe-behavior'>
+<head>Using XML Processors</head>
+<p>The behavior of a validating XML processor is highly predictable; it
+must read every piece of a document and report all well-formedness and
+validity violations.
+Less is required of a non-validating processor; it need not read any
+part of the document other than the document entity.
+This has two effects that may be important to users of XML processors:
+<ulist>
+<item><p>Certain well-formedness errors, specifically those that require
+reading external entities, may not be detected by a non-validating processor.
+Examples include the constraints entitled
+<titleref href='wf-entdeclared'>Entity Declared</titleref>,
+<titleref href='wf-textent'>Parsed Entity</titleref>, and
+<titleref href='wf-norecursion'>No Recursion</titleref>, as well
+as some of the cases described as
+<titleref href='forbidden'>forbidden</titleref> in
+<specref ref='entproc'/>.</p></item>
+<item><p>The information passed from the processor to the application may
+vary, depending on whether the processor reads
+parameter and external entities.
+For example, a non-validating processor may not
+<titleref href='AVNormalize'>normalize</titleref> attribute values,
+<titleref href='included'>include</titleref> the replacement text of
+internal entities, or supply
+<titleref href='sec-attr-defaults'>default attribute values</titleref>,
+where doing so depends on having read declarations in
+external or parameter entities.</p></item>
+</ulist>
+</p>
+<p>For maximum reliability in interoperating between different XML
+processors, applications which use non-validating processors should not
+rely on any behaviors not required of such processors.
+Applications which require facilities such as the use of default
+attributes or internal entities which are declared in external
+entities should use validating XML processors.</p>
+</div2>
+</div1>
+
+<div1 id='sec-notation'>
+<head>Notation</head>
+
+<p>The formal grammar of XML is given in this specification using a simple
+Extended Backus-Naur Form (EBNF) notation. Each rule in the grammar defines
+one symbol, in the form
+<eg>symbol ::= expression</eg></p>
+<p>Symbols are written with an initial capital letter if they are
+defined by a regular expression, or with an initial lower case letter
+otherwise.
+Literal strings are quoted.
+
+</p>
+
+<p>Within the expression on the right-hand side of a rule, the following
+expressions are used to match strings of one or more characters:
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>where <code>N</code> is a hexadecimal integer, the
+expression matches the character in ISO/IEC 10646 whose canonical
+(UCS-4)
+code value, when interpreted as an unsigned binary number, has
+the value indicated. The number of leading zeros in the
+<code>#xN</code> form is insignificant; the number of leading
+zeros in the corresponding code value
+is governed by the character
+encoding in use and is not significant for XML.</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>matches any <termref def='dt-character'>character</termref>
+with a value in the range(s) indicated (inclusive).</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>matches any <termref def='dt-character'>character</termref>
+with a value <emph>outside</emph> the
+range indicated.</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>matches any <termref def='dt-character'>character</termref>
+with a value not among the characters given.</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>matches a literal string <termref def="dt-match">matching</termref>
+that given inside the double quotes.</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>matches a literal string <termref def="dt-match">matching</termref>
+that given inside the single quotes.</p></def>
+</gitem>
+</glist>
+These symbols may be combined to match more complex patterns as follows,
+where <code>A</code> and <code>B</code> represent simple expressions:
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code> is treated as a unit
+and may be combined as described in this list.</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p>matches <code>A</code> or nothing; optional <code>A</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p>matches <code>A</code> followed by <code>B</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p>matches <code>A</code> or <code>B</code> but not both.</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p>matches any string that matches <code>A</code> but does not match
+<code>B</code>.
+</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p>matches one or more occurrences of <code>A</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p>matches zero or more occurrences of <code>A</code>.</p></def>
+</gitem>
+
+</glist>
+Other notations used in the productions are:
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>comment.</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>well-formedness constraint; this identifies by name a
+constraint on
+<termref def="dt-wellformed">well-formed</termref> documents
+associated with a production.</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>validity constraint; this identifies by name a constraint on
+<termref def="dt-valid">valid</termref> documents associated with
+a production.</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+
+<!-- &Biblio; -->
+<div1 id='sec-bibliography'>
+
+<head>References</head>
+<div2 id='sec-existing-stds'>
+<head>Normative References</head>
+
+<blist>
+<bibl id='IANA' key='IANA'>
+(Internet Assigned Numbers Authority) <emph>Official Names for
+Character Sets</emph>,
+ed. Keld Simonsen et al.
+See <loc href='ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets'>ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets</loc>.
+</bibl>
+
+<bibl id='RFC1766' key='IETF RFC 1766'>
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id='ISO639' key='ISO 639'>
+(International Organization for Standardization).
+<emph>ISO 639:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id='ISO3166' key='ISO 3166'>
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id='ISO10646' key='ISO/IEC 10646'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id='Unicode' key='Unicode'>The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>Other References</head>
+
+<blist>
+
+<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id='ABK' key='Brüggemann-Klein'>Brüggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+
+</bibl>
+
+<bibl id='ABKDW' key='Brüggemann-Klein and Wood'>Brüggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universität Freiburg, Institut für Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id='Clark' key='Clark'>James Clark.
+Comparison of SGML and XML. See
+<loc href='http://www.w3.org/TR/NOTE-sgml-xml-971215'>http://www.w3.org/TR/NOTE-sgml-xml-971215</loc>.
+</bibl>
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id='ISO8879' key='ISO 8879'>ISO
+(International Organization for Standardization).
+<emph>ISO 8879:1986(E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id='ISO10744' key='ISO/IEC 10744'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id='CharClasses'>
+<head>Character Classes</head>
+<p>Following the characteristics defined in the Unicode standard,
+characters are classed as base characters (among others, these
+contain the alphabetic characters of the Latin alphabet, without
+diacritics), ideographic characters, and combining characters (among
+others, this class contains most diacritics); these classes combine
+to form the class of letters. Digits and extenders are
+also distinguished.
+<scrap lang="ebnf" id="CHARACTERS">
+<head>Characters</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id='NT-BaseChar'><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id='NT-Ideographic'><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;[#x05BB-#x05BD]
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;[#x064B-#x0652]
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;[#x06DD-#x06DF]
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id='NT-Digit'><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id='NT-Extender'><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>The character classes defined here can be derived from the
+Unicode character database as follows:
+<ulist>
+<item>
+<p>Name start characters must have one of the categories Ll, Lu,
+Lo, Lt, Nl.</p>
+</item>
+<item>
+<p>Name characters other than Name-start characters
+must have one of the categories Mc, Me, Mn, Lm, or Nd.</p>
+</item>
+<item>
+<p>Characters in the compatibility area (i.e. with character code
+greater than #xF900 and less than #xFFFE) are not allowed in XML
+names.</p>
+</item>
+<item>
+<p>Characters which have a font or compatibility decomposition (i.e. those
+with a "compatibility formatting tag" in field 5 of the database --
+marked by field 5 beginning with a "&lt;") are not allowed.</p>
+</item>
+<item>
+<p>The following characters are treated as name-start characters
+rather than name characters, because the property file classifies
+them as Alphabetic: [#x02BB-#x02C1], #x0559, #x06E5, #x06E6.</p>
+</item>
+<item>
+<p>Characters #x20DD-#x20E0 are excluded (in accordance with
+Unicode, section 5.14).</p>
+</item>
+<item>
+<p>Character #x00B7 is classified as an extender, because the
+property list so identifies it.</p>
+</item>
+<item>
+<p>Character #x0387 is added as a name character, because #x00B7
+is its canonical equivalent.</p>
+</item>
+<item>
+<p>Characters ':' and '_' are allowed as name-start characters.</p>
+</item>
+<item>
+<p>Characters '-' and '.' are allowed as name characters.</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XML and SGML</head>
+
+<p>XML is designed to be a subset of SGML, in that every
+<termref def="dt-valid">valid</termref> XML document should also be a
+conformant SGML document.
+For a detailed comparison of the additional restrictions that XML places on
+documents beyond those of SGML, see <bibref ref='Clark'/>.
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>Expansion of Entity and Character References</head>
+<p>This appendix contains some examples illustrating the
+sequence of entity- and character-reference recognition and
+expansion, as specified in <specref ref='entproc'/>.</p>
+<p>
+If the DTD contains the declaration
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+then the XML processor will recognize the character references
+when it parses the entity declaration, and resolve them before
+storing the following string as the
+value of the entity "<code>example</code>":
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+A reference in the document to "<code>&amp;example;</code>"
+will cause the text to be reparsed, at which time the
+start- and end-tags of the "<code>p</code>" element will be recognized
+and the three references will be recognized and expanded,
+resulting in a "<code>p</code>" element with the following content
+(all data, no delimiters or markup):
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>A more complex example will illustrate the rules and their
+effects fully. In the following example, the line numbers are
+solely for reference.
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+This produces the following:
+<ulist spacing="compact">
+<item><p>in line 4, the reference to character 37 is expanded immediately,
+and the parameter entity "<code>xx</code>" is stored in the symbol
+table with the value "<code>%zz;</code>". Since the replacement text
+is not rescanned, the reference to parameter entity "<code>zz</code>"
+is not recognized. (And it would be an error if it were, since
+"<code>zz</code>" is not yet declared.)</p></item>
+<item><p>in line 5, the character reference "<code>&amp;#60;</code>" is
+expanded immediately and the parameter entity "<code>zz</code>" is
+stored with the replacement text
+"<code>&lt;!ENTITY tricky "error-prone" ></code>",
+which is a well-formed entity declaration.</p></item>
+<item><p>in line 6, the reference to "<code>xx</code>" is recognized,
+and the replacement text of "<code>xx</code>" (namely
+"<code>%zz;</code>") is parsed. The reference to "<code>zz</code>"
+is recognized in its turn, and its replacement text
+("<code>&lt;!ENTITY tricky "error-prone" ></code>") is parsed.
+The general entity "<code>tricky</code>" has now been
+declared, with the replacement text "<code>error-prone</code>".</p></item>
+<item><p>
+in line 8, the reference to the general entity "<code>tricky</code>" is
+recognized, and it is expanded, so the full content of the
+"<code>test</code>" element is the self-describing (and ungrammatical) string
+<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>Deterministic Content Models</head>
+<p><termref def='dt-compat'>For compatibility</termref>, it is
+required
+that content models in element type declarations be deterministic.
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGML
+requires deterministic content models (it calls them
+"unambiguous"); XML processors built using SGML systems may
+flag non-deterministic content models as errors.</p>
+<p>For example, the content model <code>((b, c) | (b, d))</code> is
+non-deterministic, because given an initial <code>b</code> the parser
+cannot know which <code>b</code> in the model is being matched without
+looking ahead to see which element follows the <code>b</code>.
+In this case, the two references to
+<code>b</code> can be collapsed
+into a single reference, making the model read
+<code>(b, (c | d))</code>. An initial <code>b</code> now clearly
+matches only a single name in the content model. The parser doesn't
+need to look ahead to see what follows; either <code>c</code> or
+<code>d</code> would be accepted.</p>
+<p>More formally: a finite state automaton may be constructed from the
+content model using the standard algorithms, e.g. algorithm 3.5
+in section 3.9
+of Aho, Sethi, and Ullman <bibref ref='Aho'/>.
+In many such algorithms, a follow set is constructed for each
+position in the regular expression (i.e., each leaf
+node in the
+syntax tree for the regular expression);
+if any position has a follow set in which
+more than one following position is
+labeled with the same element type name,
+then the content model is in error
+and may be reported as an error.
+</p>
+<p>Algorithms exist which allow many but not all non-deterministic
+content models to be reduced automatically to equivalent deterministic
+models; see Brüggemann-Klein 1991 <bibref ref='ABK'/>.</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>Autodetection of Character Encodings</head>
+<p>The XML encoding declaration functions as an internal label on each
+entity, indicating which character encoding is in use. Before an XML
+processor can read the internal label, however, it apparently has to
+know what character encoding is in use&mdash;which is what the internal label
+is trying to indicate. In the general case, this is a hopeless
+situation. It is not entirely hopeless in XML, however, because XML
+limits the general case in two ways: each implementation is assumed
+to support only a finite set of character encodings, and the XML
+encoding declaration is restricted in position and content in order to
+make it feasible to autodetect the character encoding in use in each
+entity in normal cases. Also, in many cases other sources of information
+are available in addition to the XML data stream itself.
+Two cases may be distinguished,
+depending on whether the XML entity is presented to the
+processor without, or with, any accompanying
+(external) information. We consider the first case first.
+</p>
+<p>
+Because each XML entity not in UTF-8 or UTF-16 format <emph>must</emph>
+begin with an XML encoding declaration, in which the first characters
+must be '<code>&lt;?xml</code>', any conforming processor can detect,
+after two to four octets of input, which of the following cases apply.
+In reading this list, it may help to know that in UCS-4, '&lt;' is
+"<code>#x0000003C</code>" and '?' is "<code>#x0000003F</code>", and the Byte
+Order Mark required of UTF-16 data streams is "<code>#xFEFF</code>".</p>
+<p>
+<ulist>
+<item>
+<p><code>00 00 00 3C</code>: UCS-4, big-endian machine (1234 order)</p>
+</item>
+<item>
+<p><code>3C 00 00 00</code>: UCS-4, little-endian machine (4321 order)</p>
+</item>
+<item>
+<p><code>00 00 3C 00</code>: UCS-4, unusual octet order (2143)</p>
+</item>
+<item>
+<p><code>00 3C 00 00</code>: UCS-4, unusual octet order (3412)</p>
+</item>
+<item>
+<p><code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p><code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p><code>00 3C 00 3F</code>: UTF-16, big-endian, no Byte Order Mark
+(and thus, strictly speaking, in error)</p>
+</item>
+<item>
+<p><code>3C 00 3F 00</code>: UTF-16, little-endian, no Byte Order Mark
+(and thus, strictly speaking, in error)</p>
+</item>
+<item>
+<p><code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, some part of ISO 8859,
+Shift-JIS, EUC, or any other 7-bit, 8-bit, or mixed-width encoding
+which ensures that the characters of ASCII have their normal positions,
+width,
+and values; the actual encoding declaration must be read to
+detect which of these applies, but since all of these encodings
+use the same bit patterns for the ASCII characters, the encoding
+declaration itself may be read reliably
+</p>
+</item>
+<item>
+<p><code>4C 6F A7 94</code>: EBCDIC (in some flavor; the full
+encoding declaration must be read to tell which code page is in
+use)</p>
+</item>
+<item>
+<p>other: UTF-8 without an encoding declaration, or else
+the data stream is corrupt, fragmentary, or enclosed in
+a wrapper of some kind</p>
+</item>
+</ulist>
+</p>
+<p>
+This level of autodetection is enough to read the XML encoding
+declaration and parse the character-encoding identifier, which is
+still necessary to distinguish the individual members of each family
+of encodings (e.g. to tell UTF-8 from 8859, and the parts of 8859
+from each other, or to distinguish the specific EBCDIC code page in
+use, and so on).
+</p>
+<p>
+Because the contents of the encoding declaration are restricted to
+ASCII characters, a processor can reliably read the entire encoding
+declaration as soon as it has detected which family of encodings is in
+use. Since in practice, all widely used character encodings fall into
+one of the categories above, the XML encoding declaration allows
+reasonably reliable in-band labeling of character encodings, even when
+external sources of information at the operating-system or
+transport-protocol level are unreliable.
+</p>
+<p>
+Once the processor has detected the character encoding in use, it can
+act appropriately, whether by invoking a separate input routine for
+each case, or by calling the proper conversion function on each
+character of input.
+</p>
+<p>
+Like any self-labeling system, the XML encoding declaration will not
+work if any software changes the entity's character set or encoding
+without updating the encoding declaration. Implementors of
+character-encoding routines should be careful to ensure the accuracy
+of the internal and external information used to label the entity.
+</p>
+<p>The second possible case occurs when the XML entity is accompanied
+by encoding information, as in some file systems and some network
+protocols.
+When multiple sources of information are available,
+
+their relative
+priority and the preferred method of handling conflict should be
+specified as part of the higher-level protocol used to deliver XML.
+Rules for the relative priority of the internal label and the
+MIME-type label in an external header, for example, should be part of the
+RFC document defining the text/xml and application/xml MIME types. In
+the interests of interoperability, however, the following rules
+are recommended.
+<ulist>
+<item><p>If an XML entity is in a file, the Byte-Order Mark
+and encoding-declaration PI are used (if present) to determine the
+character encoding. All other heuristics and sources of information
+are solely for error recovery.
+</p></item>
+<item><p>If an XML entity is delivered with a
+MIME type of text/xml, then the <code>charset</code> parameter
+on the MIME type determines the
+character encoding method; all other heuristics and sources of
+information are solely for error recovery.
+</p></item>
+<item><p>If an XML entity is delivered
+with a
+MIME type of application/xml, then the Byte-Order Mark and
+encoding-declaration PI are used (if present) to determine the
+character encoding. All other heuristics and sources of
+information are solely for error recovery.
+</p></item>
+</ulist>
+These rules apply only in the absence of protocol-level documentation;
+in particular, when the MIME types text/xml and application/xml are
+defined, the recommendations of the relevant RFC will supersede
+these rules.
+</p>
+
+</inform-div1>
+
+<inform-div1 id="sec-xml-wg">
+<head>W3C XML Working Group</head>
+
+<p>This specification was prepared and approved for publication by the
+W3C XML Working Group (WG). WG approval of this specification does
+not necessarily imply that all WG members voted for its approval.
+The current and former members of the XML WG are:</p>
+
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML
+Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name><role>W3C Liaison</role></member>
+<member><name>Paula Angerstein, Texcel</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, ISOGEN</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>Makoto Murata, Fuji Xerox Information Systems</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Conleth O'Connell, Vignette</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-default-dtd-file:"~/sgml/spec.ced"
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
diff --git a/test/relaxng/tutor11_2.rng b/test/relaxng/tutor11_2.rng
new file mode 100644
index 0000000..038ac48
--- /dev/null
+++ b/test/relaxng/tutor11_2.rng
@@ -0,0 +1,14 @@
+<element name="card" ns="http://www.example.com"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName/>
+ <nsName ns=""/>
+ </except>
+ </anyName>
+ </attribute>
+ </zeroOrMore>
+ <text/>
+</element>
diff --git a/test/relaxng/tutor11_2_1.xml b/test/relaxng/tutor11_2_1.xml
new file mode 100644
index 0000000..2b84ebb
--- /dev/null
+++ b/test/relaxng/tutor11_2_1.xml
@@ -0,0 +1,5 @@
+<card xmlns="http://www.example.com"
+ xmlns:a="http://www.example.com/a" a:foo="works"
+ xmlns:b="http://www.example.com/b" b:foo="works">
+ This should work
+</card>
diff --git a/test/relaxng/tutor11_2_2.xml b/test/relaxng/tutor11_2_2.xml
new file mode 100644
index 0000000..b06b4e7
--- /dev/null
+++ b/test/relaxng/tutor11_2_2.xml
@@ -0,0 +1,5 @@
+<card xmlns="http://www.example.com"
+ xmlns:a="http://www.example.com/a" a:foo="works"
+ xmlns:b="http://www.example.com" b:foo="fails">
+ This should fail
+</card>
diff --git a/test/relaxng/tutor11_2_3.xml b/test/relaxng/tutor11_2_3.xml
new file mode 100644
index 0000000..c849c03
--- /dev/null
+++ b/test/relaxng/tutor11_2_3.xml
@@ -0,0 +1,5 @@
+<card xmlns="http://www.example.com"
+ xmlns:a="http://example.com/a" a:foo="works"
+ b="fails">
+ This should fail
+</card>
diff --git a/test/relaxng/tutor11_3.rng b/test/relaxng/tutor11_3.rng
new file mode 100644
index 0000000..72e041d
--- /dev/null
+++ b/test/relaxng/tutor11_3.rng
@@ -0,0 +1,15 @@
+<element name="example" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <attribute>
+ <anyName/>
+ </attribute>
+ </zeroOrMore>
+ <optional>
+ <attribute name="xml:space">
+ <choice>
+ <value>default</value>
+ <value>preserve</value>
+ </choice>
+ </attribute>
+ </optional>
+</element>
diff --git a/test/relaxng/tutor11_3_1.xml b/test/relaxng/tutor11_3_1.xml
new file mode 100644
index 0000000..01b47fc
--- /dev/null
+++ b/test/relaxng/tutor11_3_1.xml
@@ -0,0 +1 @@
+<example foo="bar" xml:space="default"/>
diff --git a/test/relaxng/tutor11_4.rng b/test/relaxng/tutor11_4.rng
new file mode 100644
index 0000000..158c7a5
--- /dev/null
+++ b/test/relaxng/tutor11_4.rng
@@ -0,0 +1,19 @@
+<element name="example" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <name>xml:space</name>
+ </except>
+ </anyName>
+ </attribute>
+ </zeroOrMore>
+ <optional>
+ <attribute name="xml:space">
+ <choice>
+ <value>default</value>
+ <value>preserve</value>
+ </choice>
+ </attribute>
+ </optional>
+</element>
diff --git a/test/relaxng/tutor11_4_1.xml b/test/relaxng/tutor11_4_1.xml
new file mode 100644
index 0000000..01b47fc
--- /dev/null
+++ b/test/relaxng/tutor11_4_1.xml
@@ -0,0 +1 @@
+<example foo="bar" xml:space="default"/>
diff --git a/test/relaxng/tutor12_1.rng b/test/relaxng/tutor12_1.rng
new file mode 100644
index 0000000..3902687
--- /dev/null
+++ b/test/relaxng/tutor12_1.rng
@@ -0,0 +1,13 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:a="http://www.example.com/annotation">
+ <zeroOrMore>
+ <element name="card">
+ <a:documentation>Information about a single email address.</a:documentation>
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor12_1_1.xml b/test/relaxng/tutor12_1_1.xml
new file mode 100644
index 0000000..693df18
--- /dev/null
+++ b/test/relaxng/tutor12_1_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card><name>foo</name><email>bar</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor13_1.rng b/test/relaxng/tutor13_1.rng
new file mode 100644
index 0000000..f945142
--- /dev/null
+++ b/test/relaxng/tutor13_1.rng
@@ -0,0 +1,33 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+<start>
+ <element name="doc">
+ <zeroOrMore>
+ <choice>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ <grammar>
+ <include href="table.rng">
+ <define name="cell.content">
+ <parentRef name="inline"/>
+ </define>
+ </include>
+ </grammar>
+ </choice>
+ </zeroOrMore>
+ </element>
+</start>
+
+<define name="inline">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+</define>
+
+</grammar>
diff --git a/test/relaxng/tutor13_1_1.xml b/test/relaxng/tutor13_1_1.xml
new file mode 100644
index 0000000..a5cb437
--- /dev/null
+++ b/test/relaxng/tutor13_1_1.xml
@@ -0,0 +1,12 @@
+<doc>
+ <p>start</p>
+ <table>
+ <tr>
+ <td> <em>hello</em> !</td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+ <p>end</p>
+</doc>
diff --git a/test/relaxng/tutor14_1.rng b/test/relaxng/tutor14_1.rng
new file mode 100644
index 0000000..8744356
--- /dev/null
+++ b/test/relaxng/tutor14_1.rng
@@ -0,0 +1,53 @@
+<element name="html" xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="head">
+ <element name="title">
+ <text/>
+ </element>
+ </element>
+ <element name="body">
+ <element name="table">
+ <attribute name="class">
+ <value>addressBook</value>
+ </attribute>
+ <oneOrMore>
+ <element name="tr">
+ <attribute name="class">
+ <value>card</value>
+ </attribute>
+ <element name="td">
+ <attribute name="class">
+ <value>name</value>
+ </attribute>
+ <interleave>
+ <text/>
+ <optional>
+ <element name="span">
+ <attribute name="class">
+ <value>givenName</value>
+ </attribute>
+ <text/>
+ </element>
+ </optional>
+ <optional>
+ <element name="span">
+ <attribute name="class">
+ <value>familyName</value>
+ </attribute>
+ <text/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ <element name="td">
+ <attribute name="class">
+ <value>email</value>
+ </attribute>
+ <text/>
+ </element>
+ </element>
+ </oneOrMore>
+ </element>
+ </element>
+</element>
+
+
diff --git a/test/relaxng/tutor1_1.rng b/test/relaxng/tutor1_1.rng
new file mode 100644
index 0000000..86f8cd1
--- /dev/null
+++ b/test/relaxng/tutor1_1.rng
@@ -0,0 +1,12 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor1_1_1.xml b/test/relaxng/tutor1_1_1.xml
new file mode 100644
index 0000000..edac8ba
--- /dev/null
+++ b/test/relaxng/tutor1_1_1.xml
@@ -0,0 +1,10 @@
+<addressBook>
+ <card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ </card>
+ <card>
+ <name>Fred Bloggs</name>
+ <email>fb@example.net</email>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor1_2.rng b/test/relaxng/tutor1_2.rng
new file mode 100644
index 0000000..ed9cf7a
--- /dev/null
+++ b/test/relaxng/tutor1_2.rng
@@ -0,0 +1,12 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <oneOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </element>
+ </oneOrMore>
+</element>
diff --git a/test/relaxng/tutor1_2_1.xml b/test/relaxng/tutor1_2_1.xml
new file mode 100644
index 0000000..edac8ba
--- /dev/null
+++ b/test/relaxng/tutor1_2_1.xml
@@ -0,0 +1,10 @@
+<addressBook>
+ <card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ </card>
+ <card>
+ <name>Fred Bloggs</name>
+ <email>fb@example.net</email>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor1_3.rng b/test/relaxng/tutor1_3.rng
new file mode 100644
index 0000000..23886d0
--- /dev/null
+++ b/test/relaxng/tutor1_3.rng
@@ -0,0 +1,17 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ <optional>
+ <element name="note">
+ <text/>
+ </element>
+ </optional>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor1_3_1.xml b/test/relaxng/tutor1_3_1.xml
new file mode 100644
index 0000000..edac8ba
--- /dev/null
+++ b/test/relaxng/tutor1_3_1.xml
@@ -0,0 +1,10 @@
+<addressBook>
+ <card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ </card>
+ <card>
+ <name>Fred Bloggs</name>
+ <email>fb@example.net</email>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor1_4.rng b/test/relaxng/tutor1_4.rng
new file mode 100644
index 0000000..5744fce
--- /dev/null
+++ b/test/relaxng/tutor1_4.rng
@@ -0,0 +1,12 @@
+<rng:element name="addressBook" xmlns:rng="http://relaxng.org/ns/structure/1.0">
+ <rng:zeroOrMore>
+ <rng:element name="card">
+ <rng:element name="name">
+ <rng:text/>
+ </rng:element>
+ <rng:element name="email">
+ <rng:text/>
+ </rng:element>
+ </rng:element>
+ </rng:zeroOrMore>
+</rng:element>
diff --git a/test/relaxng/tutor1_4_1.xml b/test/relaxng/tutor1_4_1.xml
new file mode 100644
index 0000000..edac8ba
--- /dev/null
+++ b/test/relaxng/tutor1_4_1.xml
@@ -0,0 +1,10 @@
+<addressBook>
+ <card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ </card>
+ <card>
+ <name>Fred Bloggs</name>
+ <email>fb@example.net</email>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor2_1.rng b/test/relaxng/tutor2_1.rng
new file mode 100644
index 0000000..76a3ce4
--- /dev/null
+++ b/test/relaxng/tutor2_1.rng
@@ -0,0 +1,27 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <choice>
+ <element name="name">
+ <text/>
+ </element>
+ <group>
+ <element name="givenName">
+ <text/>
+ </element>
+ <element name="familyName">
+ <text/>
+ </element>
+ </group>
+ </choice>
+ <element name="email">
+ <text/>
+ </element>
+ <optional>
+ <element name="note">
+ <text/>
+ </element>
+ </optional>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor2_1_1.xml b/test/relaxng/tutor2_1_1.xml
new file mode 100644
index 0000000..79b5584
--- /dev/null
+++ b/test/relaxng/tutor2_1_1.xml
@@ -0,0 +1,11 @@
+<addressBook>
+ <card>
+ <givenName>John</givenName>
+ <familyName>Smith</familyName>
+ <email>js@example.com</email>
+ </card>
+ <card>
+ <name>Fred Bloggs</name>
+ <email>fb@example.net</email>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor3_1.rng b/test/relaxng/tutor3_1.rng
new file mode 100644
index 0000000..78d6736
--- /dev/null
+++ b/test/relaxng/tutor3_1.rng
@@ -0,0 +1,12 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <attribute name="name">
+ <text/>
+ </attribute>
+ <attribute name="email">
+ <text/>
+ </attribute>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor3_1_1.xml b/test/relaxng/tutor3_1_1.xml
new file mode 100644
index 0000000..f9849e6
--- /dev/null
+++ b/test/relaxng/tutor3_1_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="John Smith" email="js@example.com"/>
+</addressBook>
diff --git a/test/relaxng/tutor3_1_2.xml b/test/relaxng/tutor3_1_2.xml
new file mode 100644
index 0000000..e9a766f
--- /dev/null
+++ b/test/relaxng/tutor3_1_2.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card email="js@example.com" name="John Smith"/>
+</addressBook>
diff --git a/test/relaxng/tutor3_2.rng b/test/relaxng/tutor3_2.rng
new file mode 100644
index 0000000..eeb6fa4
--- /dev/null
+++ b/test/relaxng/tutor3_2.rng
@@ -0,0 +1,8 @@
+<element name="card" xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+</element>
diff --git a/test/relaxng/tutor3_2_1.xml b/test/relaxng/tutor3_2_1.xml
new file mode 100644
index 0000000..73c2fa6
--- /dev/null
+++ b/test/relaxng/tutor3_2_1.xml
@@ -0,0 +1 @@
+<card><email>js@example.com</email><name>John Smith</name></card>
diff --git a/test/relaxng/tutor3_3.rng b/test/relaxng/tutor3_3.rng
new file mode 100644
index 0000000..66193e8
--- /dev/null
+++ b/test/relaxng/tutor3_3.rng
@@ -0,0 +1,17 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <attribute name="name">
+ <text/>
+ </attribute>
+ <attribute name="email">
+ <text/>
+ </attribute>
+ <optional>
+ <attribute name="note">
+ <text/>
+ </attribute>
+ </optional>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor3_3_1.xml b/test/relaxng/tutor3_3_1.xml
new file mode 100644
index 0000000..d9c9560
--- /dev/null
+++ b/test/relaxng/tutor3_3_1.xml
@@ -0,0 +1,4 @@
+<addressBook>
+ <card name="foo" email="bar"/>
+ <card name="foo2" note="second" email="bar2"/>
+</addressBook>
diff --git a/test/relaxng/tutor3_4.rng b/test/relaxng/tutor3_4.rng
new file mode 100644
index 0000000..9a63917
--- /dev/null
+++ b/test/relaxng/tutor3_4.rng
@@ -0,0 +1,22 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <choice>
+ <attribute name="name">
+ <text/>
+ </attribute>
+ <group>
+ <attribute name="givenName">
+ <text/>
+ </attribute>
+ <attribute name="familyName">
+ <text/>
+ </attribute>
+ </group>
+ </choice>
+ <attribute name="email">
+ <text/>
+ </attribute>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor3_4_1.xml b/test/relaxng/tutor3_4_1.xml
new file mode 100644
index 0000000..bb2a54b
--- /dev/null
+++ b/test/relaxng/tutor3_4_1.xml
@@ -0,0 +1,4 @@
+<addressBook>
+ <card name="foo" email="bar"/>
+ <card givenName="d" familyName="v" email="bar"/>
+</addressBook>
diff --git a/test/relaxng/tutor3_5.rng b/test/relaxng/tutor3_5.rng
new file mode 100644
index 0000000..829f219
--- /dev/null
+++ b/test/relaxng/tutor3_5.rng
@@ -0,0 +1,22 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <choice>
+ <element name="name">
+ <text/>
+ </element>
+ <attribute name="name">
+ <text/>
+ </attribute>
+ </choice>
+ <choice>
+ <element name="email">
+ <text/>
+ </element>
+ <attribute name="email">
+ <text/>
+ </attribute>
+ </choice>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor3_5_1.xml b/test/relaxng/tutor3_5_1.xml
new file mode 100644
index 0000000..a457220
--- /dev/null
+++ b/test/relaxng/tutor3_5_1.xml
@@ -0,0 +1,7 @@
+<addressBook>
+<card name="John Smith" email="js@example.com"/>
+<card email="js@example.com" name="John Smith"/>
+<card email="js@example.com"><name>John Smith</name></card>
+<card name="John Smith"><email>js@example.com</email></card>
+<card><name>John Smith</name><email>js@example.com</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor3_5_2.xml b/test/relaxng/tutor3_5_2.xml
new file mode 100644
index 0000000..baa56dc
--- /dev/null
+++ b/test/relaxng/tutor3_5_2.xml
@@ -0,0 +1,3 @@
+<addressBook>
+<card><email>js@example.com</email><name>John Smith</name></card>
+</addressBook>
diff --git a/test/relaxng/tutor3_6.rng b/test/relaxng/tutor3_6.rng
new file mode 100644
index 0000000..1c8814a
--- /dev/null
+++ b/test/relaxng/tutor3_6.rng
@@ -0,0 +1,8 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <attribute name="email"/>
+ </element>
+ </zeroOrMore>
+</element>
+
diff --git a/test/relaxng/tutor3_6_1.xml b/test/relaxng/tutor3_6_1.xml
new file mode 100644
index 0000000..8081734
--- /dev/null
+++ b/test/relaxng/tutor3_6_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+<card email="js@example.com"/>
+</addressBook>
diff --git a/test/relaxng/tutor3_7.rng b/test/relaxng/tutor3_7.rng
new file mode 100644
index 0000000..84ff576
--- /dev/null
+++ b/test/relaxng/tutor3_7.rng
@@ -0,0 +1,2 @@
+<element name="x" xmlns="http://relaxng.org/ns/structure/1.0"/>
+
diff --git a/test/relaxng/tutor3_7_1.xml b/test/relaxng/tutor3_7_1.xml
new file mode 100644
index 0000000..61aa6d7
--- /dev/null
+++ b/test/relaxng/tutor3_7_1.xml
@@ -0,0 +1 @@
+<x/>
diff --git a/test/relaxng/tutor3_8.rng b/test/relaxng/tutor3_8.rng
new file mode 100644
index 0000000..1b780e6
--- /dev/null
+++ b/test/relaxng/tutor3_8.rng
@@ -0,0 +1,17 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ <optional>
+ <element name="prefersHTML">
+ <empty/>
+ </element>
+ </optional>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor3_8_1.xml b/test/relaxng/tutor3_8_1.xml
new file mode 100644
index 0000000..8d47e27
--- /dev/null
+++ b/test/relaxng/tutor3_8_1.xml
@@ -0,0 +1,4 @@
+<addressBook>
+ <card><name>foo</name><email>bar</email><prefersHTML/></card>
+ <card><name>foo</name><email>bar</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor3_9.rng b/test/relaxng/tutor3_9.rng
new file mode 100644
index 0000000..a3895cc
--- /dev/null
+++ b/test/relaxng/tutor3_9.rng
@@ -0,0 +1,5 @@
+<element name="card" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="email">
+ <text/>
+ </attribute>
+</element>
diff --git a/test/relaxng/tutor3_9_1.xml b/test/relaxng/tutor3_9_1.xml
new file mode 100644
index 0000000..9153bc8
--- /dev/null
+++ b/test/relaxng/tutor3_9_1.xml
@@ -0,0 +1 @@
+<card email="foo"/>
diff --git a/test/relaxng/tutor4_1.rng b/test/relaxng/tutor4_1.rng
new file mode 100644
index 0000000..dd10602
--- /dev/null
+++ b/test/relaxng/tutor4_1.rng
@@ -0,0 +1,22 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <element name="addressBook">
+ <zeroOrMore>
+ <element name="card">
+ <ref name="cardContent"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="cardContent">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor4_1_1.xml b/test/relaxng/tutor4_1_1.xml
new file mode 100644
index 0000000..9b8616a
--- /dev/null
+++ b/test/relaxng/tutor4_1_1.xml
@@ -0,0 +1,4 @@
+<addressBook>
+ <card><name>John Smith</name><email>js@example.com"</email></card>
+ <card><name>John Smith2</name><email>js2@example.com"</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor4_2.rng b/test/relaxng/tutor4_2.rng
new file mode 100644
index 0000000..644b06e
--- /dev/null
+++ b/test/relaxng/tutor4_2.rng
@@ -0,0 +1,34 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <ref name="AddressBook"/>
+ </start>
+
+ <define name="AddressBook">
+ <element name="addressBook">
+ <zeroOrMore>
+ <ref name="Card"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="Card">
+ <element name="card">
+ <ref name="Name"/>
+ <ref name="Email"/>
+ </element>
+ </define>
+
+ <define name="Name">
+ <element name="name">
+ <text/>
+ </element>
+ </define>
+
+ <define name="Email">
+ <element name="email">
+ <text/>
+ </element>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor4_2_1.xml b/test/relaxng/tutor4_2_1.xml
new file mode 100644
index 0000000..9b8616a
--- /dev/null
+++ b/test/relaxng/tutor4_2_1.xml
@@ -0,0 +1,4 @@
+<addressBook>
+ <card><name>John Smith</name><email>js@example.com"</email></card>
+ <card><name>John Smith2</name><email>js2@example.com"</email></card>
+</addressBook>
diff --git a/test/relaxng/tutor4_3.rng b/test/relaxng/tutor4_3.rng
new file mode 100644
index 0000000..0f2a0a9
--- /dev/null
+++ b/test/relaxng/tutor4_3.rng
@@ -0,0 +1,27 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ </start>
+
+ <define name="inline">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ <element name="span">
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/test/relaxng/tutor4_3_1.xml b/test/relaxng/tutor4_3_1.xml
new file mode 100644
index 0000000..31ee882
--- /dev/null
+++ b/test/relaxng/tutor4_3_1.xml
@@ -0,0 +1 @@
+<p></p>
diff --git a/test/relaxng/tutor4_3_2.xml b/test/relaxng/tutor4_3_2.xml
new file mode 100644
index 0000000..3a8b953
--- /dev/null
+++ b/test/relaxng/tutor4_3_2.xml
@@ -0,0 +1 @@
+<p>a</p>
diff --git a/test/relaxng/tutor4_3_3.xml b/test/relaxng/tutor4_3_3.xml
new file mode 100644
index 0000000..dbf9bd5
--- /dev/null
+++ b/test/relaxng/tutor4_3_3.xml
@@ -0,0 +1 @@
+<p><bold></bold></p>
diff --git a/test/relaxng/tutor4_3_4.xml b/test/relaxng/tutor4_3_4.xml
new file mode 100644
index 0000000..5c284e6
--- /dev/null
+++ b/test/relaxng/tutor4_3_4.xml
@@ -0,0 +1 @@
+<p><bold><italic>c</italic></bold></p>
diff --git a/test/relaxng/tutor4_3_5.xml b/test/relaxng/tutor4_3_5.xml
new file mode 100644
index 0000000..ddc7af2
--- /dev/null
+++ b/test/relaxng/tutor4_3_5.xml
@@ -0,0 +1 @@
+<p>a<bold>b<italic>c</italic>d</bold>e<span>f</span>g</p>
diff --git a/test/relaxng/tutor4_3_6.xml b/test/relaxng/tutor4_3_6.xml
new file mode 100644
index 0000000..f715763
--- /dev/null
+++ b/test/relaxng/tutor4_3_6.xml
@@ -0,0 +1 @@
+<p>a<bold>b<span style="foo">c</span>d</bold>e<italic>f</italic>g</p>
diff --git a/test/relaxng/tutor4_4.rng b/test/relaxng/tutor4_4.rng
new file mode 100644
index 0000000..4e4f19c
--- /dev/null
+++ b/test/relaxng/tutor4_4.rng
@@ -0,0 +1,28 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ </start>
+
+ <define name="inline">
+ <choice>
+ <text/>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ <element name="span">
+ <optional>
+ <attribute name="style"/>
+ </optional>
+ <ref name="inline"/>
+ </element>
+ </choice>
+ <optional>
+ <ref name="inline"/>
+ </optional>
+ </define>
+</grammar>
diff --git a/test/relaxng/tutor4_4_1.xml b/test/relaxng/tutor4_4_1.xml
new file mode 100644
index 0000000..ddc7af2
--- /dev/null
+++ b/test/relaxng/tutor4_4_1.xml
@@ -0,0 +1 @@
+<p>a<bold>b<italic>c</italic>d</bold>e<span>f</span>g</p>
diff --git a/test/relaxng/tutor5_1.rng b/test/relaxng/tutor5_1.rng
new file mode 100644
index 0000000..503a043
--- /dev/null
+++ b/test/relaxng/tutor5_1.rng
@@ -0,0 +1,3 @@
+<element name="number" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="int" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+</element>
diff --git a/test/relaxng/tutor5_1_1.xml b/test/relaxng/tutor5_1_1.xml
new file mode 100644
index 0000000..aa01853
--- /dev/null
+++ b/test/relaxng/tutor5_1_1.xml
@@ -0,0 +1 @@
+<number>5</number>
diff --git a/test/relaxng/tutor5_2.rng b/test/relaxng/tutor5_2.rng
new file mode 100644
index 0000000..9d749dc
--- /dev/null
+++ b/test/relaxng/tutor5_2.rng
@@ -0,0 +1,9 @@
+<element name="point" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <element name="x">
+ <data type="double"/>
+ </element>
+ <element name="y">
+ <data type="double"/>
+ </element>
+</element>
diff --git a/test/relaxng/tutor5_2_1.xml b/test/relaxng/tutor5_2_1.xml
new file mode 100644
index 0000000..75c387d
--- /dev/null
+++ b/test/relaxng/tutor5_2_1.xml
@@ -0,0 +1 @@
+<point><x>1</x><y>5.20</y></point>
diff --git a/test/relaxng/tutor5_3.rng b/test/relaxng/tutor5_3.rng
new file mode 100644
index 0000000..e49f6ec
--- /dev/null
+++ b/test/relaxng/tutor5_3.rng
@@ -0,0 +1,6 @@
+<element name="bad" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string"/>
+ <element name="note">
+ <text/>
+ </element>
+</element>
diff --git a/test/relaxng/tutor5_3_1.xml b/test/relaxng/tutor5_3_1.xml
new file mode 100644
index 0000000..bd73098
--- /dev/null
+++ b/test/relaxng/tutor5_3_1.xml
@@ -0,0 +1 @@
+<bad>5<note>fails</note></bad>
diff --git a/test/relaxng/tutor5_4.rng b/test/relaxng/tutor5_4.rng
new file mode 100644
index 0000000..e6aae94
--- /dev/null
+++ b/test/relaxng/tutor5_4.rng
@@ -0,0 +1,6 @@
+<element name="ok" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string"/>
+ <attribute name="note">
+ <text/>
+ </attribute>
+</element>
diff --git a/test/relaxng/tutor5_4_1.xml b/test/relaxng/tutor5_4_1.xml
new file mode 100644
index 0000000..c9cdef4
--- /dev/null
+++ b/test/relaxng/tutor5_4_1.xml
@@ -0,0 +1 @@
+<ok note="foo">5</ok>
diff --git a/test/relaxng/tutor5_5.rng b/test/relaxng/tutor5_5.rng
new file mode 100644
index 0000000..b620ab8
--- /dev/null
+++ b/test/relaxng/tutor5_5.rng
@@ -0,0 +1,5 @@
+<element name="email" xmlns="http://relaxng.org/ns/structure/1.0">
+ <data type="string">
+ <param name="maxLength">127</param>
+ </data>
+</element>
diff --git a/test/relaxng/tutor6_1.rng b/test/relaxng/tutor6_1.rng
new file mode 100644
index 0000000..7a06092
--- /dev/null
+++ b/test/relaxng/tutor6_1.rng
@@ -0,0 +1,10 @@
+<element name="card" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="name"/>
+ <attribute name="email"/>
+ <attribute name="preferredFormat">
+ <choice>
+ <value>html</value>
+ <value>text</value>
+ </choice>
+ </attribute>
+</element>
diff --git a/test/relaxng/tutor6_1_1.xml b/test/relaxng/tutor6_1_1.xml
new file mode 100644
index 0000000..30460ae
--- /dev/null
+++ b/test/relaxng/tutor6_1_1.xml
@@ -0,0 +1 @@
+<card name="foo" email="bar" preferredFormat="text"/>
diff --git a/test/relaxng/tutor6_1_2.xml b/test/relaxng/tutor6_1_2.xml
new file mode 100644
index 0000000..bf3dfc2
--- /dev/null
+++ b/test/relaxng/tutor6_1_2.xml
@@ -0,0 +1 @@
+<card name="foo" email="bar" preferredFormat="html"/>
diff --git a/test/relaxng/tutor6_1_3.xml b/test/relaxng/tutor6_1_3.xml
new file mode 100644
index 0000000..6038d79
--- /dev/null
+++ b/test/relaxng/tutor6_1_3.xml
@@ -0,0 +1 @@
+<card name="foo" email="bar" preferredFormat="error"/>
diff --git a/test/relaxng/tutor6_1_4.xml b/test/relaxng/tutor6_1_4.xml
new file mode 100644
index 0000000..0ad64dd
--- /dev/null
+++ b/test/relaxng/tutor6_1_4.xml
@@ -0,0 +1 @@
+<card name="John Smith" email="js@example.com" preferredFormat=" html "/>
diff --git a/test/relaxng/tutor6_1_5.xml b/test/relaxng/tutor6_1_5.xml
new file mode 100644
index 0000000..c5d22bd
--- /dev/null
+++ b/test/relaxng/tutor6_1_5.xml
@@ -0,0 +1,2 @@
+<card name="John Smith" email="js@example.com" preferredFormat="html"/>
+
diff --git a/test/relaxng/tutor6_2.rng b/test/relaxng/tutor6_2.rng
new file mode 100644
index 0000000..1237fa7
--- /dev/null
+++ b/test/relaxng/tutor6_2.rng
@@ -0,0 +1,14 @@
+<element name="card" xmlns="http://relaxng.org/ns/structure/1.0">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ <element name="preferredFormat">
+ <choice>
+ <value>html</value>
+ <value>text</value>
+ </choice>
+ </element>
+</element>
diff --git a/test/relaxng/tutor6_2_1.xml b/test/relaxng/tutor6_2_1.xml
new file mode 100644
index 0000000..5064bf2
--- /dev/null
+++ b/test/relaxng/tutor6_2_1.xml
@@ -0,0 +1,5 @@
+<card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ <preferredFormat>text</preferredFormat>
+</card>
diff --git a/test/relaxng/tutor6_2_2.xml b/test/relaxng/tutor6_2_2.xml
new file mode 100644
index 0000000..57da2e8
--- /dev/null
+++ b/test/relaxng/tutor6_2_2.xml
@@ -0,0 +1,5 @@
+<card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ <preferredFormat>html</preferredFormat>
+</card>
diff --git a/test/relaxng/tutor6_2_3.xml b/test/relaxng/tutor6_2_3.xml
new file mode 100644
index 0000000..acca979
--- /dev/null
+++ b/test/relaxng/tutor6_2_3.xml
@@ -0,0 +1,5 @@
+<card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ <preferredFormat> html </preferredFormat>
+</card>
diff --git a/test/relaxng/tutor6_2_4.xml b/test/relaxng/tutor6_2_4.xml
new file mode 100644
index 0000000..c3f723b
--- /dev/null
+++ b/test/relaxng/tutor6_2_4.xml
@@ -0,0 +1,5 @@
+<card>
+ <name>John Smith</name>
+ <email>js@example.com</email>
+ <preferredFormat>error</preferredFormat>
+</card>
diff --git a/test/relaxng/tutor6_3.rng b/test/relaxng/tutor6_3.rng
new file mode 100644
index 0000000..0683d0b
--- /dev/null
+++ b/test/relaxng/tutor6_3.rng
@@ -0,0 +1,10 @@
+<element name="card" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="name"/>
+ <attribute name="email"/>
+ <attribute name="preferredFormat">
+ <choice>
+ <value type="string">html</value>
+ <value type="string">text</value>
+ </choice>
+ </attribute>
+</element>
diff --git a/test/relaxng/tutor6_3_1.xml b/test/relaxng/tutor6_3_1.xml
new file mode 100644
index 0000000..0ad64dd
--- /dev/null
+++ b/test/relaxng/tutor6_3_1.xml
@@ -0,0 +1 @@
+<card name="John Smith" email="js@example.com" preferredFormat=" html "/>
diff --git a/test/relaxng/tutor7_1.rng b/test/relaxng/tutor7_1.rng
new file mode 100644
index 0000000..116e912
--- /dev/null
+++ b/test/relaxng/tutor7_1.rng
@@ -0,0 +1,7 @@
+<element name="vector" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <list>
+ <data type="float"/>
+ <data type="float"/>
+ </list>
+</element>
diff --git a/test/relaxng/tutor7_1_1.xml b/test/relaxng/tutor7_1_1.xml
new file mode 100644
index 0000000..3f03eea
--- /dev/null
+++ b/test/relaxng/tutor7_1_1.xml
@@ -0,0 +1 @@
+<vector>1.2 3.4</vector>
diff --git a/test/relaxng/tutor7_1_2.xml b/test/relaxng/tutor7_1_2.xml
new file mode 100644
index 0000000..adbfdbd
--- /dev/null
+++ b/test/relaxng/tutor7_1_2.xml
@@ -0,0 +1 @@
+<vector>1.2</vector>
diff --git a/test/relaxng/tutor7_1_3.xml b/test/relaxng/tutor7_1_3.xml
new file mode 100644
index 0000000..f9eeb5c
--- /dev/null
+++ b/test/relaxng/tutor7_1_3.xml
@@ -0,0 +1 @@
+<vector>1.2 3.4 5.6</vector>
diff --git a/test/relaxng/tutor7_1_4.xml b/test/relaxng/tutor7_1_4.xml
new file mode 100644
index 0000000..c9bda7f
--- /dev/null
+++ b/test/relaxng/tutor7_1_4.xml
@@ -0,0 +1 @@
+<vector> 1.2 3.4 </vector>
diff --git a/test/relaxng/tutor7_2.rng b/test/relaxng/tutor7_2.rng
new file mode 100644
index 0000000..a1c71d2
--- /dev/null
+++ b/test/relaxng/tutor7_2.rng
@@ -0,0 +1,8 @@
+<element name="vector" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <list>
+ <oneOrMore>
+ <data type="double"/>
+ </oneOrMore>
+ </list>
+</element>
diff --git a/test/relaxng/tutor7_2_1.xml b/test/relaxng/tutor7_2_1.xml
new file mode 100644
index 0000000..adbfdbd
--- /dev/null
+++ b/test/relaxng/tutor7_2_1.xml
@@ -0,0 +1 @@
+<vector>1.2</vector>
diff --git a/test/relaxng/tutor7_2_2.xml b/test/relaxng/tutor7_2_2.xml
new file mode 100644
index 0000000..f9eeb5c
--- /dev/null
+++ b/test/relaxng/tutor7_2_2.xml
@@ -0,0 +1 @@
+<vector>1.2 3.4 5.6</vector>
diff --git a/test/relaxng/tutor7_2_3.xml b/test/relaxng/tutor7_2_3.xml
new file mode 100644
index 0000000..5274bad
--- /dev/null
+++ b/test/relaxng/tutor7_2_3.xml
@@ -0,0 +1 @@
+<vector> 1.2 3.4 </vector>
diff --git a/test/relaxng/tutor7_2_4.xml b/test/relaxng/tutor7_2_4.xml
new file mode 100644
index 0000000..719ba5f
--- /dev/null
+++ b/test/relaxng/tutor7_2_4.xml
@@ -0,0 +1 @@
+<vector></vector>
diff --git a/test/relaxng/tutor7_3.rng b/test/relaxng/tutor7_3.rng
new file mode 100644
index 0000000..cbedaf9
--- /dev/null
+++ b/test/relaxng/tutor7_3.rng
@@ -0,0 +1,9 @@
+<element name="path" xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <list>
+ <oneOrMore>
+ <data type="double"/>
+ <data type="double"/>
+ </oneOrMore>
+ </list>
+</element>
diff --git a/test/relaxng/tutor7_3_1.xml b/test/relaxng/tutor7_3_1.xml
new file mode 100644
index 0000000..bf61b50
--- /dev/null
+++ b/test/relaxng/tutor7_3_1.xml
@@ -0,0 +1 @@
+<path>1.2 3.4</path>
diff --git a/test/relaxng/tutor7_3_2.xml b/test/relaxng/tutor7_3_2.xml
new file mode 100644
index 0000000..45b4857
--- /dev/null
+++ b/test/relaxng/tutor7_3_2.xml
@@ -0,0 +1 @@
+<path>1.2 3.4 5 6 7 8</path>
diff --git a/test/relaxng/tutor7_3_3.xml b/test/relaxng/tutor7_3_3.xml
new file mode 100644
index 0000000..4abd17d
--- /dev/null
+++ b/test/relaxng/tutor7_3_3.xml
@@ -0,0 +1 @@
+<path> 1.2 3.4 5 6 </path>
diff --git a/test/relaxng/tutor7_3_4.xml b/test/relaxng/tutor7_3_4.xml
new file mode 100644
index 0000000..62099ae
--- /dev/null
+++ b/test/relaxng/tutor7_3_4.xml
@@ -0,0 +1 @@
+<path>1.2 3.4 5.6</path>
diff --git a/test/relaxng/tutor7_3_5.xml b/test/relaxng/tutor7_3_5.xml
new file mode 100644
index 0000000..fef5f25
--- /dev/null
+++ b/test/relaxng/tutor7_3_5.xml
@@ -0,0 +1 @@
+<path>1.2</path>
diff --git a/test/relaxng/tutor8_1.rng b/test/relaxng/tutor8_1.rng
new file mode 100644
index 0000000..c7bbe8b
--- /dev/null
+++ b/test/relaxng/tutor8_1.rng
@@ -0,0 +1,15 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <interleave>
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ </interleave>
+ </element>
+ </zeroOrMore>
+</element>
+
diff --git a/test/relaxng/tutor8_1_1.xml b/test/relaxng/tutor8_1_1.xml
new file mode 100644
index 0000000..8f1e1a8
--- /dev/null
+++ b/test/relaxng/tutor8_1_1.xml
@@ -0,0 +1,6 @@
+<addressBook>
+ <card>
+ <email>b@b</email>
+ <name>b</name>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor8_1_2.xml b/test/relaxng/tutor8_1_2.xml
new file mode 100644
index 0000000..c1f3767
--- /dev/null
+++ b/test/relaxng/tutor8_1_2.xml
@@ -0,0 +1,7 @@
+<addressBook>
+ <card>
+ <name>b</name>
+ <email>b@b</email>
+ </card>
+</addressBook>
+
diff --git a/test/relaxng/tutor8_2.rng b/test/relaxng/tutor8_2.rng
new file mode 100644
index 0000000..495968e
--- /dev/null
+++ b/test/relaxng/tutor8_2.rng
@@ -0,0 +1,57 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="head"/>
+ </start>
+ <define name="head">
+ <element name="head">
+ <interleave>
+ <ref name="title"/>
+ <optional>
+ <ref name="base"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="style"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="script"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="link"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="meta"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ <define name="title">
+ <element name="title">
+ <text/>
+ </element>
+ </define>
+ <define name="base">
+ <element name="base">
+ <text/>
+ </element>
+ </define>
+ <define name="style">
+ <element name="style">
+ <text/>
+ </element>
+ </define>
+ <define name="script">
+ <element name="script">
+ <text/>
+ </element>
+ </define>
+ <define name="meta">
+ <element name="meta">
+ <text/>
+ </element>
+ </define>
+ <define name="link">
+ <element name="link">
+ <text/>
+ </element>
+ </define>
+</grammar>
diff --git a/test/relaxng/tutor8_2_1.xml b/test/relaxng/tutor8_2_1.xml
new file mode 100644
index 0000000..fed80d4
--- /dev/null
+++ b/test/relaxng/tutor8_2_1.xml
@@ -0,0 +1,5 @@
+<head>
+ <meta>meta1</meta>
+ <title>foo</title>
+ <meta>meta2</meta>
+</head>
diff --git a/test/relaxng/tutor8_2_2.xml b/test/relaxng/tutor8_2_2.xml
new file mode 100644
index 0000000..24c2e6b
--- /dev/null
+++ b/test/relaxng/tutor8_2_2.xml
@@ -0,0 +1,36 @@
+<head>
+ <meta>meta</meta>
+ <meta>meta</meta>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <base>base</base>
+ <title>foo</title>
+ <meta>meta</meta>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <meta>meta</meta>
+ <meta>meta</meta>
+ <meta>meta</meta>
+ <meta>meta</meta>
+ <meta>meta</meta>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+ <script>script</script>
+ <link>link</link>
+ <style>link</style>
+</head>
diff --git a/test/relaxng/tutor8_2_3.xml b/test/relaxng/tutor8_2_3.xml
new file mode 100644
index 0000000..920f99d
--- /dev/null
+++ b/test/relaxng/tutor8_2_3.xml
@@ -0,0 +1,3 @@
+<head>
+ <title>title</title>
+</head>
diff --git a/test/relaxng/tutor8_2_4.xml b/test/relaxng/tutor8_2_4.xml
new file mode 100644
index 0000000..68f3865
--- /dev/null
+++ b/test/relaxng/tutor8_2_4.xml
@@ -0,0 +1,6 @@
+<head>
+ <meta>meta1</meta>
+ <title>foo</title>
+ <meta>meta2</meta>
+ <title>error</title>
+</head>
diff --git a/test/relaxng/tutor8_2_5.xml b/test/relaxng/tutor8_2_5.xml
new file mode 100644
index 0000000..75b9d53
--- /dev/null
+++ b/test/relaxng/tutor8_2_5.xml
@@ -0,0 +1,3 @@
+<head>
+ <meta>meta2</meta>
+</head>
diff --git a/test/relaxng/tutor8_2_6.xml b/test/relaxng/tutor8_2_6.xml
new file mode 100644
index 0000000..20fb4c7
--- /dev/null
+++ b/test/relaxng/tutor8_2_6.xml
@@ -0,0 +1,5 @@
+<head>
+ <base>base</base>
+ <title>foo</title>
+ <base>error</base>
+</head>
diff --git a/test/relaxng/tutor8_3.rng b/test/relaxng/tutor8_3.rng
new file mode 100644
index 0000000..b68814d
--- /dev/null
+++ b/test/relaxng/tutor8_3.rng
@@ -0,0 +1,9 @@
+<element name="content" xmlns="http://relaxng.org/ns/structure/1.0">
+ <interleave>
+ <text/>
+ <element name="p">
+ <text/>
+ </element>
+ </interleave>
+</element>
+
diff --git a/test/relaxng/tutor8_3_1.xml b/test/relaxng/tutor8_3_1.xml
new file mode 100644
index 0000000..86ea447
--- /dev/null
+++ b/test/relaxng/tutor8_3_1.xml
@@ -0,0 +1 @@
+<content> how are you <p> 'yau de poelle </p> ? </content>
diff --git a/test/relaxng/tutor9_1.rng b/test/relaxng/tutor9_1.rng
new file mode 100644
index 0000000..43a59fc
--- /dev/null
+++ b/test/relaxng/tutor9_1.rng
@@ -0,0 +1,17 @@
+<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <zeroOrMore>
+ <element name="card">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="email">
+ <text/>
+ </element>
+ <optional>
+ <element name="note">
+ <externalRef href="inline.rng"/>
+ </element>
+ </optional>
+ </element>
+ </zeroOrMore>
+</element>
diff --git a/test/relaxng/tutor9_10.rng b/test/relaxng/tutor9_10.rng
new file mode 100644
index 0000000..c5b38db
--- /dev/null
+++ b/test/relaxng/tutor9_10.rng
@@ -0,0 +1,26 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <include href="inline3.rng"/>
+
+ <start>
+ <element name="doc">
+ <zeroOrMore>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="inline.extra" combine="choice">
+ <choice>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor9_10_1.xml b/test/relaxng/tutor9_10_1.xml
new file mode 100644
index 0000000..139a079
--- /dev/null
+++ b/test/relaxng/tutor9_10_1.xml
@@ -0,0 +1,3 @@
+<doc>
+ <p>a<bold>b<em>c<italic>d</italic>e</em>f</bold>g</p>
+</doc>
diff --git a/test/relaxng/tutor9_11.rng b/test/relaxng/tutor9_11.rng
new file mode 100644
index 0000000..cf63b02
--- /dev/null
+++ b/test/relaxng/tutor9_11.rng
@@ -0,0 +1,16 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <include href="addressBook.rng">
+
+ <define name="cardContent">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="emailAddress">
+ <text/>
+ </element>
+ </define>
+
+ </include>
+
+</grammar>
diff --git a/test/relaxng/tutor9_11_1.xml b/test/relaxng/tutor9_11_1.xml
new file mode 100644
index 0000000..c542fa6
--- /dev/null
+++ b/test/relaxng/tutor9_11_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card><name>foo</name><emailAddress>bar</emailAddress></card>
+</addressBook>
diff --git a/test/relaxng/tutor9_12.rng b/test/relaxng/tutor9_12.rng
new file mode 100644
index 0000000..be10b85
--- /dev/null
+++ b/test/relaxng/tutor9_12.rng
@@ -0,0 +1,22 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <element name="addressBook">
+ <zeroOrMore>
+ <element name="card">
+ <ref name="cardContent"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="cardContent">
+ <element name="name">
+ <text/>
+ </element>
+ <element name="emailAddress">
+ <text/>
+ </element>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor9_12_1.xml b/test/relaxng/tutor9_12_1.xml
new file mode 100644
index 0000000..c542fa6
--- /dev/null
+++ b/test/relaxng/tutor9_12_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card><name>foo</name><emailAddress>bar</emailAddress></card>
+</addressBook>
diff --git a/test/relaxng/tutor9_1_1.xml b/test/relaxng/tutor9_1_1.xml
new file mode 100644
index 0000000..f45fc3b
--- /dev/null
+++ b/test/relaxng/tutor9_1_1.xml
@@ -0,0 +1,7 @@
+<addressBook>
+ <card>
+ <name>foo</name>
+ <email>bar</email>
+ <note>this guy is <em>annoying</em> !</note>
+ </card>
+</addressBook>
diff --git a/test/relaxng/tutor9_2.rng b/test/relaxng/tutor9_2.rng
new file mode 100644
index 0000000..cb434bd
--- /dev/null
+++ b/test/relaxng/tutor9_2.rng
@@ -0,0 +1,7 @@
+<element name="data" xmlns="http://relaxng.org/ns/structure/1.0">
+ <choice>
+ <externalRef href="pattern1.rng"/>
+ <externalRef href="pattern2.rng"/>
+ </choice>
+</element>
+
diff --git a/test/relaxng/tutor9_2_1.xml b/test/relaxng/tutor9_2_1.xml
new file mode 100644
index 0000000..2ca54ee
--- /dev/null
+++ b/test/relaxng/tutor9_2_1.xml
@@ -0,0 +1,4 @@
+<data>
+ <a>a</a>
+ <b>a</b>
+</data>
diff --git a/test/relaxng/tutor9_2_2.xml b/test/relaxng/tutor9_2_2.xml
new file mode 100644
index 0000000..2ca54ee
--- /dev/null
+++ b/test/relaxng/tutor9_2_2.xml
@@ -0,0 +1,4 @@
+<data>
+ <a>a</a>
+ <b>a</b>
+</data>
diff --git a/test/relaxng/tutor9_3.rng b/test/relaxng/tutor9_3.rng
new file mode 100644
index 0000000..62c6e7d
--- /dev/null
+++ b/test/relaxng/tutor9_3.rng
@@ -0,0 +1,37 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="data">
+ <interleave>
+ <text/>
+ <ref name="inline.class"/>
+ </interleave>
+ </element>
+ </start>
+
+ <define name="inline.class" combine="choice">
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ </define>
+
+ <define name="inline.class" combine="choice">
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ </define>
+
+ <define name="inline">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ <!-- etc -->
+ </choice>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/test/relaxng/tutor9_3_1.xml b/test/relaxng/tutor9_3_1.xml
new file mode 100644
index 0000000..50bfa20
--- /dev/null
+++ b/test/relaxng/tutor9_3_1.xml
@@ -0,0 +1 @@
+<data> a <bold> b <em> c </em> d </bold> e </data>
diff --git a/test/relaxng/tutor9_3_2.xml b/test/relaxng/tutor9_3_2.xml
new file mode 100644
index 0000000..f089542
--- /dev/null
+++ b/test/relaxng/tutor9_3_2.xml
@@ -0,0 +1 @@
+<data> a <italic> b <code> c </code> d <em>foo</em> </italic> e </data>
diff --git a/test/relaxng/tutor9_4.rng b/test/relaxng/tutor9_4.rng
new file mode 100644
index 0000000..d3b7e8e
--- /dev/null
+++ b/test/relaxng/tutor9_4.rng
@@ -0,0 +1,36 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="data">
+ <interleave>
+ <text/>
+ <ref name="inline.class"/>
+ </interleave>
+ </element>
+ </start>
+
+ <define name="inline.class">
+ <choice>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+ <define name="inline">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ <!-- etc -->
+ </choice>
+ </zeroOrMore>
+ </define>
+</grammar>
diff --git a/test/relaxng/tutor9_4_1.xml b/test/relaxng/tutor9_4_1.xml
new file mode 100644
index 0000000..50bfa20
--- /dev/null
+++ b/test/relaxng/tutor9_4_1.xml
@@ -0,0 +1 @@
+<data> a <bold> b <em> c </em> d </bold> e </data>
diff --git a/test/relaxng/tutor9_4_2.xml b/test/relaxng/tutor9_4_2.xml
new file mode 100644
index 0000000..f089542
--- /dev/null
+++ b/test/relaxng/tutor9_4_2.xml
@@ -0,0 +1 @@
+<data> a <italic> b <code> c </code> d <em>foo</em> </italic> e </data>
diff --git a/test/relaxng/tutor9_5.rng b/test/relaxng/tutor9_5.rng
new file mode 100644
index 0000000..b8b0a84
--- /dev/null
+++ b/test/relaxng/tutor9_5.rng
@@ -0,0 +1,25 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <element name="addressBook">
+ <zeroOrMore>
+ <element name="card">
+ <ref name="card.attlist"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="card.attlist" combine="interleave">
+ <attribute name="name">
+ <text/>
+ </attribute>
+ </define>
+
+ <define name="card.attlist" combine="interleave">
+ <attribute name="email">
+ <text/>
+ </attribute>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor9_5_1.xml b/test/relaxng/tutor9_5_1.xml
new file mode 100644
index 0000000..275753b
--- /dev/null
+++ b/test/relaxng/tutor9_5_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="foo" email="bar"/>
+</addressBook>
diff --git a/test/relaxng/tutor9_5_2.xml b/test/relaxng/tutor9_5_2.xml
new file mode 100644
index 0000000..1ff1d3c
--- /dev/null
+++ b/test/relaxng/tutor9_5_2.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="foo"/>
+</addressBook>
diff --git a/test/relaxng/tutor9_5_3.xml b/test/relaxng/tutor9_5_3.xml
new file mode 100644
index 0000000..b70c5bf
--- /dev/null
+++ b/test/relaxng/tutor9_5_3.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="foo" email="bar" error="extra"/>
+</addressBook>
diff --git a/test/relaxng/tutor9_6.rng b/test/relaxng/tutor9_6.rng
new file mode 100644
index 0000000..0730038
--- /dev/null
+++ b/test/relaxng/tutor9_6.rng
@@ -0,0 +1,24 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <element name="addressBook">
+ <zeroOrMore>
+ <element name="card">
+ <ref name="card.attlist"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="card.attlist">
+ <group>
+ <attribute name="name">
+ <text/>
+ </attribute>
+ <attribute name="email">
+ <text/>
+ </attribute>
+ </group>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor9_6_1.xml b/test/relaxng/tutor9_6_1.xml
new file mode 100644
index 0000000..275753b
--- /dev/null
+++ b/test/relaxng/tutor9_6_1.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="foo" email="bar"/>
+</addressBook>
diff --git a/test/relaxng/tutor9_6_2.xml b/test/relaxng/tutor9_6_2.xml
new file mode 100644
index 0000000..1ff1d3c
--- /dev/null
+++ b/test/relaxng/tutor9_6_2.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="foo"/>
+</addressBook>
diff --git a/test/relaxng/tutor9_6_3.xml b/test/relaxng/tutor9_6_3.xml
new file mode 100644
index 0000000..b70c5bf
--- /dev/null
+++ b/test/relaxng/tutor9_6_3.xml
@@ -0,0 +1,3 @@
+<addressBook>
+ <card name="foo" email="bar" error="extra"/>
+</addressBook>
diff --git a/test/relaxng/tutor9_7.rng b/test/relaxng/tutor9_7.rng
new file mode 100644
index 0000000..ae5e509
--- /dev/null
+++ b/test/relaxng/tutor9_7.rng
@@ -0,0 +1,26 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <include href="inline2.rng"/>
+
+ <start>
+ <element name="doc">
+ <zeroOrMore>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="inline.class" combine="choice">
+ <choice>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor9_7_1.xml b/test/relaxng/tutor9_7_1.xml
new file mode 100644
index 0000000..139a079
--- /dev/null
+++ b/test/relaxng/tutor9_7_1.xml
@@ -0,0 +1,3 @@
+<doc>
+ <p>a<bold>b<em>c<italic>d</italic>e</em>f</bold>g</p>
+</doc>
diff --git a/test/relaxng/tutor9_8.rng b/test/relaxng/tutor9_8.rng
new file mode 100644
index 0000000..16a141d
--- /dev/null
+++ b/test/relaxng/tutor9_8.rng
@@ -0,0 +1,42 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <define name="inline">
+ <zeroOrMore>
+ <ref name="inline.class"/>
+ </zeroOrMore>
+ </define>
+
+ <define name="inline.class">
+ <choice>
+ <text/>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+ <start>
+ <element name="doc">
+ <zeroOrMore>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+ <define name="inline.class" combine="choice">
+ <choice>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+</grammar>
diff --git a/test/relaxng/tutor9_8_1.xml b/test/relaxng/tutor9_8_1.xml
new file mode 100644
index 0000000..139a079
--- /dev/null
+++ b/test/relaxng/tutor9_8_1.xml
@@ -0,0 +1,3 @@
+<doc>
+ <p>a<bold>b<em>c<italic>d</italic>e</em>f</bold>g</p>
+</doc>
diff --git a/test/relaxng/tutor9_9.rng b/test/relaxng/tutor9_9.rng
new file mode 100644
index 0000000..9f2e5ea
--- /dev/null
+++ b/test/relaxng/tutor9_9.rng
@@ -0,0 +1,37 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <define name="inline">
+ <zeroOrMore>
+ <ref name="inline.class"/>
+ </zeroOrMore>
+ </define>
+
+ <define name="inline.class">
+ <choice>
+ <text/>
+ <element name="bold">
+ <ref name="inline"/>
+ </element>
+ <element name="italic">
+ <ref name="inline"/>
+ </element>
+ <element name="code">
+ <ref name="inline"/>
+ </element>
+ <element name="em">
+ <ref name="inline"/>
+ </element>
+ </choice>
+ </define>
+
+ <start>
+ <element name="doc">
+ <zeroOrMore>
+ <element name="p">
+ <ref name="inline"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </start>
+
+</grammar>
diff --git a/test/relaxng/tutor9_9_1.xml b/test/relaxng/tutor9_9_1.xml
new file mode 100644
index 0000000..139a079
--- /dev/null
+++ b/test/relaxng/tutor9_9_1.xml
@@ -0,0 +1,3 @@
+<doc>
+ <p>a<bold>b<em>c<italic>d</italic>e</em>f</bold>g</p>
+</doc>
diff --git a/test/relaxng/tutorA.rng b/test/relaxng/tutorA.rng
new file mode 100644
index 0000000..b9ef4e1
--- /dev/null
+++ b/test/relaxng/tutorA.rng
@@ -0,0 +1,334 @@
+<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
+ ns="http://relaxng.org/ns/structure/1.0"
+ xmlns="http://relaxng.org/ns/structure/1.0">
+
+ <start>
+ <ref name="pattern"/>
+ </start>
+
+ <define name="pattern">
+ <choice>
+ <element name="element">
+ <choice>
+ <attribute name="name">
+ <data type="QName"/>
+ </attribute>
+ <ref name="open-name-class"/>
+ </choice>
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="attribute">
+ <ref name="common-atts"/>
+ <choice>
+ <attribute name="name">
+ <data type="QName"/>
+ </attribute>
+ <ref name="open-name-class"/>
+ </choice>
+ <interleave>
+ <ref name="other"/>
+ <optional>
+ <ref name="pattern"/>
+ </optional>
+ </interleave>
+ </element>
+ <element name="group">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="interleave">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="choice">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="optional">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="zeroOrMore">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="oneOrMore">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="list">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="mixed">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ <element name="ref">
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="common-atts"/>
+ <ref name="other"/>
+ </element>
+ <element name="parentRef">
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="common-atts"/>
+ <ref name="other"/>
+ </element>
+ <element name="empty">
+ <ref name="common-atts"/>
+ <ref name="other"/>
+ </element>
+ <element name="text">
+ <ref name="common-atts"/>
+ <ref name="other"/>
+ </element>
+ <element name="value">
+ <optional>
+ <attribute name="type">
+ <data type="NCName"/>
+ </attribute>
+ </optional>
+ <ref name="common-atts"/>
+ <text/>
+ </element>
+ <element name="data">
+ <attribute name="type">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="common-atts"/>
+ <interleave>
+ <ref name="other"/>
+ <group>
+ <zeroOrMore>
+ <element name="param">
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="common-atts"/>
+ <text/>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <element name="except">
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ </optional>
+ </group>
+ </interleave>
+ </element>
+ <element name="notAllowed">
+ <ref name="common-atts"/>
+ <ref name="other"/>
+ </element>
+ <element name="externalRef">
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ <ref name="common-atts"/>
+ <ref name="other"/>
+ </element>
+ <element name="grammar">
+ <ref name="common-atts"/>
+ <ref name="grammar-content"/>
+ </element>
+ </choice>
+ </define>
+
+ <define name="grammar-content">
+ <interleave>
+ <ref name="other"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="start-element"/>
+ <ref name="define-element"/>
+ <element name="div">
+ <ref name="common-atts"/>
+ <ref name="grammar-content"/>
+ </element>
+ <element name="include">
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ <ref name="common-atts"/>
+ <ref name="include-content"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ </interleave>
+ </define>
+
+ <define name="include-content">
+ <interleave>
+ <ref name="other"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="start-element"/>
+ <ref name="define-element"/>
+ <element name="div">
+ <ref name="common-atts"/>
+ <ref name="include-content"/>
+ </element>
+ </choice>
+ </zeroOrMore>
+ </interleave>
+ </define>
+
+ <define name="start-element">
+ <element name="start">
+ <ref name="combine-att"/>
+ <ref name="common-atts"/>
+ <ref name="open-pattern"/>
+ </element>
+ </define>
+
+ <define name="define-element">
+ <element name="define">
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <ref name="combine-att"/>
+ <ref name="common-atts"/>
+ <ref name="open-patterns"/>
+ </element>
+ </define>
+
+ <define name="combine-att">
+ <optional>
+ <attribute name="combine">
+ <choice>
+ <value>choice</value>
+ <value>interleave</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+
+ <define name="open-patterns">
+ <interleave>
+ <ref name="other"/>
+ <oneOrMore>
+ <ref name="pattern"/>
+ </oneOrMore>
+ </interleave>
+ </define>
+
+ <define name="open-pattern">
+ <interleave>
+ <ref name="other"/>
+ <ref name="pattern"/>
+ </interleave>
+ </define>
+
+ <define name="name-class">
+ <choice>
+ <element name="name">
+ <ref name="common-atts"/>
+ <data type="QName"/>
+ </element>
+ <element name="anyName">
+ <ref name="common-atts"/>
+ <ref name="except-name-class"/>
+ </element>
+ <element name="nsName">
+ <ref name="common-atts"/>
+ <ref name="except-name-class"/>
+ </element>
+ <element name="choice">
+ <ref name="common-atts"/>
+ <ref name="open-name-classes"/>
+ </element>
+ </choice>
+ </define>
+
+ <define name="except-name-class">
+ <interleave>
+ <ref name="other"/>
+ <optional>
+ <element name="except">
+ <ref name="open-name-classes"/>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+
+ <define name="open-name-classes">
+ <interleave>
+ <ref name="other"/>
+ <oneOrMore>
+ <ref name="name-class"/>
+ </oneOrMore>
+ </interleave>
+ </define>
+
+ <define name="open-name-class">
+ <interleave>
+ <ref name="other"/>
+ <ref name="name-class"/>
+ </interleave>
+ </define>
+
+ <define name="common-atts">
+ <optional>
+ <attribute name="ns"/>
+ </optional>
+ <optional>
+ <attribute name="datatypeLibrary">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <zeroOrMore>
+ <attribute>
+ <anyName>
+ <except>
+ <nsName/>
+ <nsName ns=""/>
+ </except>
+ </anyName>
+ </attribute>
+ </zeroOrMore>
+ </define>
+
+ <define name="other">
+ <zeroOrMore>
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </zeroOrMore>
+ </define>
+
+ <define name="any">
+ <element>
+ <anyName/>
+ <zeroOrMore>
+ <choice>
+ <attribute>
+ <anyName/>
+ </attribute>
+ <text/>
+ <ref name="any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+
+</grammar>
+
diff --git a/test/schemas/570702_0.xml b/test/schemas/570702_0.xml
new file mode 100644
index 0000000..774e56f
--- /dev/null
+++ b/test/schemas/570702_0.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by asdf (fdsa) -->
+<!--Sample XML file generated by XML Spy v4.3 U (http://www.xmlspy.com)-->
+<dn_len_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:noNamespaceSchemaLocation="Z:\proto\wsif\temp.xsd">
+ <dn_length>15</dn_length>
+ <destroy>127</destroy>
+ <dn_length>15</dn_length>
+ <destroy>127</destroy>
+ <dn_length>15</dn_length>
+ <destroy>127</destroy>
+</dn_len_list>
+
diff --git a/test/schemas/570702_0.xsd b/test/schemas/570702_0.xsd
new file mode 100644
index 0000000..397a4d6
--- /dev/null
+++ b/test/schemas/570702_0.xsd
@@ -0,0 +1,25 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+elementFormDefault="qualified" attributeFormDefault="unqualified">
+<xs:element name="dn_len_list">
+<xs:complexType>
+ <xs:sequence maxOccurs="3">
+ <xs:element name="dn_length" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Destination Number Length</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:byte">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="destroy" type="xs:byte" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>destroy flag</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+</xs:complexType>
+</xs:element>
+</xs:schema>
diff --git a/test/schemas/579746_0.xml b/test/schemas/579746_0.xml
new file mode 100644
index 0000000..7e42f2a
--- /dev/null
+++ b/test/schemas/579746_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<contact>
+</contact>
diff --git a/test/schemas/579746_0.xsd b/test/schemas/579746_0.xsd
new file mode 100644
index 0000000..1695fe6
--- /dev/null
+++ b/test/schemas/579746_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name= "contact" type="ContactType"/>
+ <xsd:complexType name="ContactType">
+ <xsd:choice minOccurs="2" maxOccurs="2">
+ <xsd:element name="customer" type="xsd:string" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:complexType>
+</xsd:schema>
+
diff --git a/test/schemas/579746_1.xml b/test/schemas/579746_1.xml
new file mode 100644
index 0000000..12f3d4d
--- /dev/null
+++ b/test/schemas/579746_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<contact>
+ <customer/>
+</contact>
diff --git a/test/schemas/579746_1.xsd b/test/schemas/579746_1.xsd
new file mode 100644
index 0000000..e354967
--- /dev/null
+++ b/test/schemas/579746_1.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name= "contact" type="ContactType"/>
+ <xsd:complexType name="ContactType">
+ <xsd:choice minOccurs="1" maxOccurs="2">
+ <xsd:element name="customer" type="xsd:string" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/test/schemas/579746_2.xml b/test/schemas/579746_2.xml
new file mode 100644
index 0000000..5d16dea
--- /dev/null
+++ b/test/schemas/579746_2.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<contact>
+ <customer/>
+ <customer/>
+</contact>
diff --git a/test/schemas/579746_3.xml b/test/schemas/579746_3.xml
new file mode 100644
index 0000000..aedcc21
--- /dev/null
+++ b/test/schemas/579746_3.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<contact>
+ <customer/>
+ <comment/>
+ <customer/>
+ <comment/>
+</contact>
diff --git a/test/schemas/579746_4.xml b/test/schemas/579746_4.xml
new file mode 100644
index 0000000..94bdc55
--- /dev/null
+++ b/test/schemas/579746_4.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<contact>
+ <customer/>
+ <comment/>
+</contact>
diff --git a/test/schemas/579746_5.xml b/test/schemas/579746_5.xml
new file mode 100644
index 0000000..b4b1350
--- /dev/null
+++ b/test/schemas/579746_5.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<contact>
+ <comment/>
+ <customer/>
+ <comment/>
+</contact>
diff --git a/test/schemas/582887-attribute.xsd b/test/schemas/582887-attribute.xsd
new file mode 100644
index 0000000..75d7d4a
--- /dev/null
+++ b/test/schemas/582887-attribute.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.example.org/test-import-case"
+ targetNamespace="http://www.example.org/test-import-case">
+
+ <xs:simpleType name="test-attribute">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="this" />
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/test/schemas/582887-common.xsd b/test/schemas/582887-common.xsd
new file mode 100644
index 0000000..c1c385d
--- /dev/null
+++ b/test/schemas/582887-common.xsd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.example.org/test-import-case"
+ targetNamespace="http://www.example.org/test-import-case">
+ <xs:include schemaLocation="./582887-element.xsd" />
+ <xs:include schemaLocation="./582887-attribute.xsd" />
+
+</xs:schema>
diff --git a/test/schemas/582887-element.xsd b/test/schemas/582887-element.xsd
new file mode 100644
index 0000000..0562021
--- /dev/null
+++ b/test/schemas/582887-element.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.example.org/test-import-case"
+ targetNamespace="http://www.example.org/test-import-case">
+ <xs:include schemaLocation="./582887-common.xsd" />
+
+ <xs:complexType name="test-element">
+ <xs:attribute name="test-attribute" type="test-attribute" />
+ </xs:complexType>
+ <xs:element name="test-element" type="test-element" />
+</xs:schema>
diff --git a/test/schemas/582887_0.xml b/test/schemas/582887_0.xml
new file mode 100644
index 0000000..0a74714
--- /dev/null
+++ b/test/schemas/582887_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test-case xmlns="http://www.example.org/test-case"
+ xmlns:tc="http://www.example.org/test-import-case"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.example.org/test-case ./582887-case.xsd">
+ <tc:test-element test-attribute="this" />
+</test-case>
diff --git a/test/schemas/582887_0.xsd b/test/schemas/582887_0.xsd
new file mode 100644
index 0000000..a3b175a
--- /dev/null
+++ b/test/schemas/582887_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tc="http://www.example.org/test-import-case"
+ xmlns="http://www.example.org/test-case"
+ targetNamespace="http://www.example.org/test-case">
+
+ <xs:import namespace="http://www.example.org/test-import-case"
+ schemaLocation="./582887-common.xsd" />
+
+ <xs:complexType name="test-case">
+ <xs:sequence>
+ <xs:element ref="tc:test-element" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="test-case" type="test-case" />
+
+</xs:schema>
diff --git a/test/schemas/582906-1-common.xsd b/test/schemas/582906-1-common.xsd
new file mode 100644
index 0000000..aa7cbda
--- /dev/null
+++ b/test/schemas/582906-1-common.xsd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+</xs:schema>
diff --git a/test/schemas/582906-1-prog1.xsd b/test/schemas/582906-1-prog1.xsd
new file mode 100644
index 0000000..33dde56
--- /dev/null
+++ b/test/schemas/582906-1-prog1.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns="http://example.com/xml/Prog1"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Prog1">
+
+ <xs:include schemaLocation="582906-1-common.xsd"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-1-prog2-include.xsd b/test/schemas/582906-1-prog2-include.xsd
new file mode 100644
index 0000000..8701cfc
--- /dev/null
+++ b/test/schemas/582906-1-prog2-include.xsd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified"
+ xml:lang="en">
+
+ <xs:include schemaLocation="582906-1-common.xsd"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-1-prog2.xsd b/test/schemas/582906-1-prog2.xsd
new file mode 100644
index 0000000..4528fff
--- /dev/null
+++ b/test/schemas/582906-1-prog2.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns="http://example.com/xml/Prog2"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Prog2">
+
+ <xs:include schemaLocation="582906-1-common.xsd"/>
+
+ <xs:include schemaLocation="582906-1-prog2-include.xsd"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-1_0.xml b/test/schemas/582906-1_0.xml
new file mode 100644
index 0000000..311d85f
--- /dev/null
+++ b/test/schemas/582906-1_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CollectedOutput xmlns="http://example.com/xml/Aggregator"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://example.com/xml/Aggregator
+ 582906-1.xsd">5.3</CollectedOutput>
diff --git a/test/schemas/582906-1_0.xsd b/test/schemas/582906-1_0.xsd
new file mode 100644
index 0000000..578f5a4
--- /dev/null
+++ b/test/schemas/582906-1_0.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns="http://example.com/xml/Aggregator"
+ xmlns:prog1="http://example.com/xml/Prog1"
+ xmlns:prog2="http://example.com/xml/Prog2"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Aggregator">
+
+ <xs:import schemaLocation="582906-1-prog1.xsd"
+ namespace="http://example.com/xml/Prog1" />
+
+ <xs:import schemaLocation="582906-1-prog2.xsd"
+ namespace="http://example.com/xml/Prog2"
+ />
+
+ <xs:element name="CollectedOutput" type="xs:float"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-2-common.xsd b/test/schemas/582906-2-common.xsd
new file mode 100644
index 0000000..c3b8c37
--- /dev/null
+++ b/test/schemas/582906-2-common.xsd
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Prog3">
+</xs:schema>
diff --git a/test/schemas/582906-2-prog1.xsd b/test/schemas/582906-2-prog1.xsd
new file mode 100644
index 0000000..5cd2d41
--- /dev/null
+++ b/test/schemas/582906-2-prog1.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns="http://example.com/xml/Prog1"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Prog1">
+
+ <xs:include schemaLocation="582906-2-common.xsd"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-2-prog2-include.xsd b/test/schemas/582906-2-prog2-include.xsd
new file mode 100644
index 0000000..4985aa3
--- /dev/null
+++ b/test/schemas/582906-2-prog2-include.xsd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified"
+ xml:lang="en">
+
+ <xs:include schemaLocation="582906-2-common.xsd"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-2-prog2.xsd b/test/schemas/582906-2-prog2.xsd
new file mode 100644
index 0000000..9446f21
--- /dev/null
+++ b/test/schemas/582906-2-prog2.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns="http://example.com/xml/Prog2"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Prog2">
+
+ <xs:include schemaLocation="582906-2-common.xsd"/>
+
+ <xs:include schemaLocation="582906-2-prog2-include.xsd"/>
+
+</xs:schema>
diff --git a/test/schemas/582906-2_0.xml b/test/schemas/582906-2_0.xml
new file mode 100644
index 0000000..e928957
--- /dev/null
+++ b/test/schemas/582906-2_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CollectedOutput xmlns="http://example.com/xml/Aggregator"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://example.com/xml/Aggregator
+ 582906-2-0.xsd">5.3</CollectedOutput>
diff --git a/test/schemas/582906-2_0.xsd b/test/schemas/582906-2_0.xsd
new file mode 100644
index 0000000..e62ebb8
--- /dev/null
+++ b/test/schemas/582906-2_0.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<xs:schema xmlns="http://example.com/xml/Aggregator"
+ xmlns:prog1="http://example.com/xml/Prog1"
+ xmlns:prog2="http://example.com/xml/Prog2"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ targetNamespace="http://example.com/xml/Aggregator">
+
+ <xs:import schemaLocation="582906-2-prog1.xsd"
+ namespace="http://example.com/xml/Prog1" />
+
+ <xs:import schemaLocation="582906-2-prog2.xsd"
+ namespace="http://example.com/xml/Prog2"
+ />
+
+ <xs:element name="CollectedOutput" type="xs:float"/>
+
+</xs:schema>
diff --git a/test/schemas/all.xsd b/test/schemas/all.xsd
new file mode 100644
index 0000000..b2e70e3
--- /dev/null
+++ b/test/schemas/all.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:all>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:all>
+ <xsd:sequence>
+ <xsd:element ref="comment" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/test/schemas/all1_0.xml b/test/schemas/all1_0.xml
new file mode 100644
index 0000000..f50088c
--- /dev/null
+++ b/test/schemas/all1_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<a>
+ <b/>
+</a>
diff --git a/test/schemas/all1_0.xsd b/test/schemas/all1_0.xsd
new file mode 100644
index 0000000..28fee0e
--- /dev/null
+++ b/test/schemas/all1_0.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="A">
+ <xs:all>
+ <xs:element name="b" type="xs:string" minOccurs="0"/>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:element name="a" type="A"/>
+</xs:schema>
diff --git a/test/schemas/all_0.xml b/test/schemas/all_0.xml
new file mode 100644
index 0000000..fb5b0fa
--- /dev/null
+++ b/test/schemas/all_0.xml
@@ -0,0 +1 @@
+<doc><a/><b/><c/></doc>
diff --git a/test/schemas/all_0.xsd b/test/schemas/all_0.xsd
new file mode 100644
index 0000000..55c04ee
--- /dev/null
+++ b/test/schemas/all_0.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:all minOccurs="1">
+ <xsd:element name="a"/>
+ <xsd:element name="b"/>
+ <xsd:element name="c"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/all_1.xml b/test/schemas/all_1.xml
new file mode 100644
index 0000000..41d797e
--- /dev/null
+++ b/test/schemas/all_1.xml
@@ -0,0 +1,2 @@
+<doc><b/><c/><a/></doc>
+
diff --git a/test/schemas/all_1.xsd b/test/schemas/all_1.xsd
new file mode 100644
index 0000000..bc386f3
--- /dev/null
+++ b/test/schemas/all_1.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:all minOccurs="0">
+ <xsd:element name="a"/>
+ <xsd:element name="b"/>
+ <xsd:element name="c"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/all_2.xml b/test/schemas/all_2.xml
new file mode 100644
index 0000000..cc1580b
--- /dev/null
+++ b/test/schemas/all_2.xml
@@ -0,0 +1 @@
+<doc><b/><a/><c/></doc>
diff --git a/test/schemas/all_2.xsd b/test/schemas/all_2.xsd
new file mode 100644
index 0000000..630b0df
--- /dev/null
+++ b/test/schemas/all_2.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:all>
+ <xsd:element name="a"/>
+ <xsd:element minOccurs="0" name="b"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/all_3.xml b/test/schemas/all_3.xml
new file mode 100644
index 0000000..c011b3f
--- /dev/null
+++ b/test/schemas/all_3.xml
@@ -0,0 +1 @@
+<doc><a/><b/></doc>
diff --git a/test/schemas/all_4.xml b/test/schemas/all_4.xml
new file mode 100644
index 0000000..afa807c
--- /dev/null
+++ b/test/schemas/all_4.xml
@@ -0,0 +1 @@
+<doc></doc>
diff --git a/test/schemas/all_5.xml b/test/schemas/all_5.xml
new file mode 100644
index 0000000..d68f321
--- /dev/null
+++ b/test/schemas/all_5.xml
@@ -0,0 +1 @@
+<doc><a/><b/><a/></doc>
diff --git a/test/schemas/all_6.xml b/test/schemas/all_6.xml
new file mode 100644
index 0000000..7dd71b1
--- /dev/null
+++ b/test/schemas/all_6.xml
@@ -0,0 +1 @@
+<doc><a/></doc>
diff --git a/test/schemas/all_7.xml b/test/schemas/all_7.xml
new file mode 100644
index 0000000..c011b3f
--- /dev/null
+++ b/test/schemas/all_7.xml
@@ -0,0 +1 @@
+<doc><a/><b/></doc>
diff --git a/test/schemas/allsg_0.xml b/test/schemas/allsg_0.xml
new file mode 100644
index 0000000..814646f
--- /dev/null
+++ b/test/schemas/allsg_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo sg-all.xsd">
+ <gm-B-2/>
+ <gm-A-1/>
+</foo> \ No newline at end of file
diff --git a/test/schemas/allsg_0.xsd b/test/schemas/allsg_0.xsd
new file mode 100644
index 0000000..11d27a8
--- /dev/null
+++ b/test/schemas/allsg_0.xsd
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ xmlns:foo="urn:test:foo">
+
+ <!-- Substitution group heads. -->
+ <xsd:element name="gh-A" abstract="true"/>
+ <xsd:element name="gh-B" abstract="true"/>
+
+ <!-- Substitution group members. -->
+ <xsd:element name="gm-A-1" substitutionGroup="foo:gh-A"/>
+ <xsd:element name="gm-A-2" substitutionGroup="foo:gh-A"/>
+
+ <xsd:element name="gm-B-1" substitutionGroup="foo:gh-B"/>
+ <xsd:element name="gm-B-2" substitutionGroup="foo:gh-B"/>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:all>
+ <xsd:element ref="foo:gh-A"/>
+ <xsd:element ref="foo:gh-B"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/allsg_1.xml b/test/schemas/allsg_1.xml
new file mode 100644
index 0000000..d1dc9c4
--- /dev/null
+++ b/test/schemas/allsg_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo sg-all.xsd">
+ <gm-B-2/>
+ <gm-A-2/>
+</foo>
+
diff --git a/test/schemas/allsg_2.xml b/test/schemas/allsg_2.xml
new file mode 100644
index 0000000..b39cb7a
--- /dev/null
+++ b/test/schemas/allsg_2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo sg-all.xsd">
+ <gm-A-2/>
+ <gm-B-2/>
+</foo>
+
diff --git a/test/schemas/allsg_3.xml b/test/schemas/allsg_3.xml
new file mode 100644
index 0000000..ac37b7b
--- /dev/null
+++ b/test/schemas/allsg_3.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo sg-all.xsd">
+ <gm-B-2/>
+ <gm-B-1/>
+</foo>
diff --git a/test/schemas/allsg_4.xml b/test/schemas/allsg_4.xml
new file mode 100644
index 0000000..bbb654a
--- /dev/null
+++ b/test/schemas/allsg_4.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo sg-all.xsd">
+ <gm-A-1/>
+ <gm-A-1/>
+</foo>
diff --git a/test/schemas/allsg_5.xml b/test/schemas/allsg_5.xml
new file mode 100644
index 0000000..44dde3e
--- /dev/null
+++ b/test/schemas/allsg_5.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo sg-all.xsd">
+ <gm-B-1/>
+ <gm-A-2/>
+ <gm-B-2/>
+</foo>
diff --git a/test/schemas/annot-err_0.xml b/test/schemas/annot-err_0.xml
new file mode 100644
index 0000000..fe92b0a
--- /dev/null
+++ b/test/schemas/annot-err_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO annot-err_0.xsd"/> \ No newline at end of file
diff --git a/test/schemas/annot-err_0.xsd b/test/schemas/annot-err_0.xsd
new file mode 100644
index 0000000..94d818c
--- /dev/null
+++ b/test/schemas/annot-err_0.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:goo="http://GOO"
+ xmlns:but="http://BUT">
+ <xsd:element name="foo" xml:lang="hhh">
+ <xsd:annotation id="id1" death="is a good entertainer" but:such="is life">
+ I shouldn't do this here...
+ <xsd:appinfo id="id2" source="somewhere"
+ goo:fun="bag" fun="another fun-bag">
+ weeelll
+ </xsd:appinfo>
+ <xsd:documentation xml:lang="*" id="id3" source="anywhere"
+ goo:mothers="of invention" mothers="don't do your dishes">
+ hmmmmmm
+ </xsd:documentation>
+ ...and here as well - more than ever
+ </xsd:annotation>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/test/schemas/any1_0.xml b/test/schemas/any1_0.xml
new file mode 100644
index 0000000..91264e4
--- /dev/null
+++ b/test/schemas/any1_0.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Tests xsd:any with "##any". -->
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO any1_0.xsd">
+
+ <foo:anything>
+ <foo:boo booAttr="123"/>
+ </foo:anything>
+ <bar:anything>
+ <foo:boo booAttr="213"/>
+ </bar:anything>
+ <anything>
+ <foo:boo booAttr="213"/>
+ </anything>
+
+
+</foo:foo>
+
diff --git a/test/schemas/any1_0.xsd b/test/schemas/any1_0.xsd
new file mode 100644
index 0000000..ed0087b
--- /dev/null
+++ b/test/schemas/any1_0.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!-- Tests xsd:any with "##any". -->
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+
+ <xsd:element name="boo">
+ <xsd:complexType>
+ <xsd:attribute name="booAttr" type="xsd:integer" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="3"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/any2_0.xml b/test/schemas/any2_0.xml
new file mode 100644
index 0000000..e649a2c
--- /dev/null
+++ b/test/schemas/any2_0.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Tests xsd:any with a set of namespaces, icluding
+ "##local" and "##targetNamespace". -->
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO any2_0.xsd">
+
+ <foo:anything>
+ <foo:boo booAttr="123"/>
+ </foo:anything>
+
+ <bar:anything>
+ <foo:boo booAttr="123"/>
+ </bar:anything>
+
+ <anything>
+ <foo:boo booAttr="123"/>
+ </anything>
+
+
+</foo:foo>
+
diff --git a/test/schemas/any2_0.xsd b/test/schemas/any2_0.xsd
new file mode 100644
index 0000000..2bf726e
--- /dev/null
+++ b/test/schemas/any2_0.xsd
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!-- Tests xsd:any with a set of namespaces, icluding
+ "##local" and "##targetNamespace". -->
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+
+ <xsd:element name="boo">
+ <xsd:complexType>
+ <xsd:attribute name="booAttr" type="xsd:integer" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any
+ namespace="##targetNamespace http://BAR ##local"
+ processContents="lax"
+ maxOccurs="3"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/any3_0.xml b/test/schemas/any3_0.xml
new file mode 100644
index 0000000..158f91c
--- /dev/null
+++ b/test/schemas/any3_0.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Tests xsd:any.
+ invalid: <bar.A/> and <foo:bar.B/>
+ valid: <bar:bar.C/>
+-->
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO any3_0.xsd">
+
+ <bar.A/>
+ <foo:bar.B/>
+ <bar:bar.C/>
+
+</foo:foo>
+
diff --git a/test/schemas/any3_0.xsd b/test/schemas/any3_0.xsd
new file mode 100644
index 0000000..b5c29f6
--- /dev/null
+++ b/test/schemas/any3_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any namespace="##other" processContents="lax"/>
+ <xsd:any namespace="##other" processContents="lax"/>
+ <xsd:any namespace="##other" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/any4_0.xml b/test/schemas/any4_0.xml
new file mode 100644
index 0000000..1620397
--- /dev/null
+++ b/test/schemas/any4_0.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Tests xsd:any.
+ invalid: <bar.A/> and <foo:bar.B/>
+ valid: <bar:bar.C/>
+-->
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO any4_0.xsd">
+
+ <foo:anything>
+ <foo:boo booAttr="123"/>
+ </foo:anything>
+
+</foo:foo>
+
diff --git a/test/schemas/any4_0.xsd b/test/schemas/any4_0.xsd
new file mode 100644
index 0000000..fa93577
--- /dev/null
+++ b/test/schemas/any4_0.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+
+ <xsd:element name="boo">
+ <xsd:complexType>
+ <xsd:attribute name="booAttr" type="xsd:integer" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:any namespace="http://FOO" processContents="lax" maxOccurs="1"/>
+ <xsd:element name="anything" form="qualified">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="foo:boo"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/any5_0.xml b/test/schemas/any5_0.xml
new file mode 100644
index 0000000..e716cb1
--- /dev/null
+++ b/test/schemas/any5_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo/>
+</foo>
diff --git a/test/schemas/any5_0.xsd b/test/schemas/any5_0.xsd
new file mode 100644
index 0000000..70c8789
--- /dev/null
+++ b/test/schemas/any5_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="boo"/>
+ <xsd:any namespace="##other" maxOccurs="5" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/any5_1.xml b/test/schemas/any5_1.xml
new file mode 100644
index 0000000..91dcb54
--- /dev/null
+++ b/test/schemas/any5_1.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+</foo>
diff --git a/test/schemas/any5_1.xsd b/test/schemas/any5_1.xsd
new file mode 100644
index 0000000..4d3c9de
--- /dev/null
+++ b/test/schemas/any5_1.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="boo"/>
+ <xsd:any namespace="##other" maxOccurs="5" processContents="lax"/>
+ <xsd:element name="boo"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/any5_2.xml b/test/schemas/any5_2.xml
new file mode 100644
index 0000000..e8434d1
--- /dev/null
+++ b/test/schemas/any5_2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo xmlns="urn:test:bar"/>
+ <boo/>
+</foo>
diff --git a/test/schemas/any5_3.xml b/test/schemas/any5_3.xml
new file mode 100644
index 0000000..828c4b3
--- /dev/null
+++ b/test/schemas/any5_3.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+</foo>
diff --git a/test/schemas/any5_4.xml b/test/schemas/any5_4.xml
new file mode 100644
index 0000000..91dcb54
--- /dev/null
+++ b/test/schemas/any5_4.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+</foo>
diff --git a/test/schemas/any5_5.xml b/test/schemas/any5_5.xml
new file mode 100644
index 0000000..e09d8a1
--- /dev/null
+++ b/test/schemas/any5_5.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo/>
+</foo>
diff --git a/test/schemas/any5_6.xml b/test/schemas/any5_6.xml
new file mode 100644
index 0000000..3b0ad73
--- /dev/null
+++ b/test/schemas/any5_6.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any5_0.xsd">
+ <boo/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo xmlns="urn:test:bar"/>
+ <boo/>
+</foo>
diff --git a/test/schemas/any6_0.xml b/test/schemas/any6_0.xml
new file mode 100755
index 0000000..068a1a9
--- /dev/null
+++ b/test/schemas/any6_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Dummy instance for any-1_1.xsd -->
+<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any-1_1.xsd">
+ <foo:bar/>
+ <moo:moo/>
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/any6_1.xsd b/test/schemas/any6_1.xsd
new file mode 100644
index 0000000..23b2f5d
--- /dev/null
+++ b/test/schemas/any6_1.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+Content model error:
+
+any-err-not-determinist-1.xsd:29: element complexType: Schemas parser error :
+local complex type: The content model is not determinist.
+
+As per Xerces and XSV this schema is OK.
+
+The problem appears when the maxOccurs of <bar> is greater than
+the one of the <any> wildcard. Additionally if both are "unbounded".
+If the latter is a different issue we should add an explicit test
+for it.
+
+Examples:
+<bar> <any> result
+ 2 1 error
+ 2 2 OK
+ 1 2 OK
+ unbounded 2 error
+ unbounded unbounded error
+ 2 unbounded OK
+-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar" maxOccurs="2"/>
+ <xs:any namespace="##other" maxOccurs="1" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema> \ No newline at end of file
diff --git a/test/schemas/any6_2.xsd b/test/schemas/any6_2.xsd
new file mode 100644
index 0000000..a552ca8
--- /dev/null
+++ b/test/schemas/any6_2.xsd
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+ "element complexType: Schemas parser error :
+ local complex type: The content model is not determinist."
+
+ This schema is OK with XSV and Xerces.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar" maxOccurs="unbounded"/>
+ <xs:any namespace="##other" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/any7_0.xml b/test/schemas/any7_0.xml
new file mode 100755
index 0000000..288b1e7
--- /dev/null
+++ b/test/schemas/any7_0.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+No error reported.
+
+Seems like <moo> is accepted, but should not, since "##other" rules out
+elements in no namespace.
+
+Xerces reports:
+any-err-2.xml:18,8: (Error) cvc-complex-type.2.4.a: Invalid content starting
+with element 'moo'.
+One of '{"urn:test:foo":bar, WC[##other:"urn:test:foo"]}' is expected.
+
+-->
+<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any-2_1.xsd">
+ <foo:bar/>
+ <moo/>
+</foo:foo>
diff --git a/test/schemas/any7_1.xml b/test/schemas/any7_1.xml
new file mode 100755
index 0000000..624c712
--- /dev/null
+++ b/test/schemas/any7_1.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+Error reported:
+
+any-2_1.xml:17: element bar: Schemas validity error :
+Element '{urn:test:foo}bar': This element is not expected.
+Expected is one of ( {##other:urn:test:foo}* ).
+
+Tiny glitch: the error report mechanism fails to recognize
+that there is only one element of choice. It should report:
+"Excepted is ( {##other:urn:test:foo}* ).".
+-->
+<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any-2_1.xsd">
+ <foo:bar/>
+ <foo:bar/>
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/any7_1.xsd b/test/schemas/any7_1.xsd
new file mode 100755
index 0000000..546904f
--- /dev/null
+++ b/test/schemas/any7_1.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar"/>
+ <xs:any namespace="##other" processContents="lax"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema> \ No newline at end of file
diff --git a/test/schemas/any7_2.xml b/test/schemas/any7_2.xml
new file mode 100644
index 0000000..66d84d0
--- /dev/null
+++ b/test/schemas/any7_2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+No error reported.
+
+Seems like <moo> is accepted, but should not, since "##other" rules out
+elements in no namespace.
+
+Xerces reports:
+any-err-2.xml:18,8: (Error) cvc-complex-type.2.4.a: Invalid content starting
+with element 'moo'.
+One of '{"urn:test:foo":bar, WC[##other:"urn:test:foo"]}' is expected.
+
+-->
+<foo:foo xmlns:foo="urn:test:foo" xmlns:moo="urn:test:moo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any7_2.xsd">
+ <foo:bar/>
+ <moo:moo/>
+</foo:foo>
+
diff --git a/test/schemas/any7_2.xsd b/test/schemas/any7_2.xsd
new file mode 100755
index 0000000..cabfd98
--- /dev/null
+++ b/test/schemas/any7_2.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar"/>
+ <xs:any namespace="##other" processContents="lax" maxOccurs="2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/any8_0.xml b/test/schemas/any8_0.xml
new file mode 100644
index 0000000..6e87cff
--- /dev/null
+++ b/test/schemas/any8_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<foo:foo xmlns:foo="urn:test:foo"
+ xmlns:moo="urn:test:moo"
+ xmlns:boo="urn:test:boo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo any8_1.xsd">
+ <foo:bar/>
+ <foo:bar/>
+</foo:foo>
diff --git a/test/schemas/any8_1.xsd b/test/schemas/any8_1.xsd
new file mode 100644
index 0000000..9264893
--- /dev/null
+++ b/test/schemas/any8_1.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+ "element complexType: Schemas parser error :
+ local complex type: The content model is not determinist."
+
+ This schema is OK with XSV and Xerces.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:test:foo"
+ elementFormDefault="qualified">
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
+ <xs:element name="bar"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/anyAttr-derive-errors1_0.xml b/test/schemas/anyAttr-derive-errors1_0.xml
new file mode 100644
index 0000000..98e948c
--- /dev/null
+++ b/test/schemas/anyAttr-derive-errors1_0.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:doo="http://DOO"
+ xmlns:import="http://IMPORT"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO anyAttr-derive-errors1_0.xsd">
+
+ <derive.1_1 barA="o" bar:barB="o" foo:barC="o"/>
+ <derive.1_4 barA="o" bar:barB="o" foo:barC="o"/>
+ <derive.2_1 barA="o" bar:barB="o" foo:barC="o" doo:barD="o" />
+ <derive.3_1 barA="o" foo:barC="o" doo:barD="o" />
+ <derive.4_1 bar:barB="o" foo:barC="o" doo:barD="o"/>
+
+ <derive.5_1_a barA="o" bar:barB="o" foo:barC="o" doo:barD="o" />
+ <derive.5_1_b barA="o" bar:barB="o" foo:barC="o" doo:barD="o" />
+
+ <derive.5_2_a bar:barB="o" foo:barC="o" doo:barD="o" />
+ <derive.5_2_b bar:barB="o" foo:barC="o" doo:barD="o" />
+
+ <derive.5_4_a bar:barB="o" doo:barD="o" />
+ <derive.5_4_b bar:barB="o" doo:barD="o" />
+
+ <derive.6_1 barA="o" bar:barB="o" foo:barC="o" doo:barD="o"/>
+ <derive.6_2 bar:barB="o" foo:barC="o" doo:barD="o"/>
+</foo>
+
+
diff --git a/test/schemas/anyAttr-derive-errors1_0.xsd b/test/schemas/anyAttr-derive-errors1_0.xsd
new file mode 100644
index 0000000..1ab9bab
--- /dev/null
+++ b/test/schemas/anyAttr-derive-errors1_0.xsd
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:foo="http://FOO" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:import="http://IMPORT"
+ targetNamespace="http://FOO" elementFormDefault="qualified">
+ <xsd:import namespace="http://IMPORT" schemaLocation="anyAttr.importA.1_0.xsd"/>
+ <xsd:import schemaLocation="anyAttr.importB.1_0.xsd"/>
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!-- Attribute Wildcard Union -->
+ <xsd:element name="derive.1_1" type="foo:type.1_1"/>
+ <xsd:element name="derive.1_4" type="foo:type.1_4"/>
+ <xsd:element name="derive.2_1" type="foo:type.2_1"/>
+ <xsd:element name="derive.3_1" type="foo:type.3_1"/>
+ <xsd:element name="derive.4_1" type="foo:type.4_1"/>
+ <xsd:element name="derive.5_1_a" type="foo:type.5_1_a"/>
+ <xsd:element name="derive.5_1_b" type="foo:type.5_1_b"/>
+ <xsd:element name="derive.5_2_a" type="foo:type.5_2_a"/>
+ <xsd:element name="derive.5_2_b" type="foo:type.5_2_b"/>
+ <xsd:element name="derive.5_4_a" type="foo:type.5_4_a"/>
+ <xsd:element name="derive.5_4_b" type="foo:type.5_4_b"/>
+ <xsd:element name="derive.6_1" type="foo:type.6_1"/>
+ <xsd:element name="derive.6_2" type="foo:type.6_2"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <!-- Attribute Wildcard Union -->
+
+ <!-- 1. If O1 and O2 are the same value, then that value must be the value. -->
+ <xsd:complexType name="type.1_1">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.1_1">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.1_1">
+ <xsd:attributeGroup ref="foo:attrGr.1_1"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.1_1">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:attributeGroup>
+
+ <xsd:complexType name="type.1_4">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.1_4">
+ <xsd:anyAttribute namespace="http://BAR ##local http://FOO" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.1_4">
+ <xsd:attributeGroup ref="foo:attrGr.1_4"/>
+ <xsd:anyAttribute namespace="##local http://BAR ##targetNamespace " processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.1_4">
+ <xsd:anyAttribute namespace=" http://FOO http://BAR ##local"/>
+ </xsd:attributeGroup>
+
+ <!-- 2. If either O1 or O2 is any, then any must be the value. -->
+ <xsd:complexType name="type.2_1">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.2_1">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.2_1">
+ <xsd:attributeGroup ref="foo:attrGr.2_1"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.2_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace"/>
+ </xsd:attributeGroup>
+
+ <!-- 3. If both O1 and O2 are sets of (namespace names or ·absent·),
+ then the union of those sets must be the value. -->
+ <xsd:complexType name="type.3_1">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.3_1">
+ <xsd:anyAttribute namespace="##targetNamespace http://DOO" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.3_1">
+ <xsd:attributeGroup ref="foo:attrGr.3_1"/>
+ <xsd:anyAttribute namespace="##local" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.3_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace http://BAR"/>
+ </xsd:attributeGroup>
+ <!-- 4 If the two are negations of different values (namespace
+ names or ·absent·), then a pair of not and ·absent· must be the value. -->
+ <xsd:complexType name="type.4_1">
+ <xsd:complexContent>
+ <xsd:extension base="imp.type.base.derive.4_1">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!-- 5 If either O1 or O2 is a pair of not and a namespace name and
+ the other is a set of (namespace names or ·absent·) (call this set S),
+ then The appropriate case among the following must be true: -->
+ <!-- 5.1 If the set S includes both the negated namespace name and
+ ·absent·, then any must be the value. -->
+ <xsd:complexType name="type.5_1_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_1_a">
+ <xsd:anyAttribute namespace="##local ##targetNamespace" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_1_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_1_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_1_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_1_b">
+ <xsd:anyAttribute namespace="##local ##targetNamespace" processContents="lax"/>
+ </xsd:complexType>
+
+ <!-- 5.2 If the set S includes the negated namespace name but not ·absent·,
+ then a pair of not and ·absent· must be the value. -->
+ <xsd:complexType name="type.5_2_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_2_a">
+ <xsd:anyAttribute namespace="##targetNamespace http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_2_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_2_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_2_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_2_b">
+ <xsd:anyAttribute namespace="##targetNamespace http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ <!-- 5.3 If the set S includes ·absent· but not the negated namespace name,
+ then the union is not expressible. -->
+ <!--
+ <xsd:complexType name="type.5_3_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_3_a">
+ <xsd:anyAttribute namespace="##local http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_3_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_3_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_3_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_3_b">
+ <xsd:anyAttribute namespace="##local http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ -->
+ <!-- 5.4 If the set S does not include either the negated namespace name
+ or ·absent·, then whichever of O1 or O2 is a pair of not and a namespace
+ name must be the value. -->
+ <xsd:complexType name="type.5_4_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_4_a">
+ <xsd:anyAttribute namespace="http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_4_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_4_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_4_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_4_b">
+ <xsd:anyAttribute namespace="http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ <!-- 6 If either O1 or O2 is a pair of not and ·absent· and the other is a
+ set of (namespace names or ·absent·) (again, call this set S), then The
+ appropriate case among the following must be true: -->
+ <!-- 6.1 If the set S includes ·absent·, then any must be the value. -->
+ <xsd:complexType name="type.6_1">
+ <xsd:complexContent>
+ <xsd:extension base="imp.type.base.derive.6">
+ <xsd:anyAttribute namespace="##local http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!-- 6.2 If the set S does not include ·absent·, then a pair of not and ·absent·
+ must be the value. -->
+ <xsd:complexType name="type.6_2">
+ <xsd:complexContent>
+ <xsd:extension base="imp.type.base.derive.6">
+ <xsd:anyAttribute namespace="http://BAR http://DOO" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+</xsd:schema>
+
+
diff --git a/test/schemas/anyAttr-derive1_0.xml b/test/schemas/anyAttr-derive1_0.xml
new file mode 100644
index 0000000..de89f45
--- /dev/null
+++ b/test/schemas/anyAttr-derive1_0.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:doo="http://DOO"
+ xmlns:import="http://IMPORT"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO anyAttr-derive1_0.xsd">
+
+ <derive.1_1 barA="o" bar:barB="o" foo:barC="o"/>
+ <derive.1_4 barA="o" bar:barB="o" foo:barC="o"/>
+ <derive.2_1 barA="o" bar:barB="o" foo:barC="o" doo:barD="o" />
+ <derive.3_1 barA="o" foo:barC="o" doo:barD="o" />
+ <derive.4_1 bar:barB="o" foo:barC="o" doo:barD="o"/>
+
+ <derive.5_1_a barA="o" bar:barB="o" foo:barC="o" doo:barD="o" />
+ <derive.5_1_b barA="o" bar:barB="o" foo:barC="o" doo:barD="o" />
+
+ <derive.5_2_a bar:barB="o" foo:barC="o" doo:barD="o" />
+ <derive.5_2_b bar:barB="o" foo:barC="o" doo:barD="o" />
+
+ <derive.5_4_a bar:barB="o" doo:barD="o" />
+ <derive.5_4_b bar:barB="o" doo:barD="o" />
+
+ <derive.6_1 barA="o" bar:barB="o" foo:barC="o" doo:barD="o"/>
+ <derive.6_2 bar:barB="o" foo:barC="o" doo:barD="o"/>
+</foo>
+
+
diff --git a/test/schemas/anyAttr-derive1_0.xsd b/test/schemas/anyAttr-derive1_0.xsd
new file mode 100644
index 0000000..bc14d99
--- /dev/null
+++ b/test/schemas/anyAttr-derive1_0.xsd
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:foo="http://FOO" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:import="http://IMPORT"
+ targetNamespace="http://FOO" elementFormDefault="qualified">
+ <xsd:import namespace="http://IMPORT" schemaLocation="anyAttr.importA.1_0.xsd"/>
+ <xsd:import schemaLocation="anyAttr.importB.1_0.xsd"/>
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!-- Attribute Wildcard Union -->
+ <xsd:element name="derive.1_1" type="foo:type.1_1"/>
+ <xsd:element name="derive.1_4" type="foo:type.1_4"/>
+
+ <xsd:element name="derive.2_1" type="foo:type.2_1"/>
+
+ <xsd:element name="derive.3_1" type="foo:type.3_1"/>
+
+ <xsd:element name="derive.4_1" type="foo:type.4_1"/>
+
+ <xsd:element name="derive.5_1_a" type="foo:type.5_1_a"/>
+ <xsd:element name="derive.5_1_b" type="foo:type.5_1_b"/>
+ <xsd:element name="derive.5_2_a" type="foo:type.5_2_a"/>
+ <xsd:element name="derive.5_2_b" type="foo:type.5_2_b"/>
+ <xsd:element name="derive.5_4_a" type="foo:type.5_4_a"/>
+ <xsd:element name="derive.5_4_b" type="foo:type.5_4_b"/>
+ <xsd:element name="derive.6_1" type="foo:type.6_1"/>
+ <xsd:element name="derive.6_2" type="foo:type.6_2"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <!-- Attribute Wildcard Union -->
+
+ <!-- 1. If O1 and O2 are the same value, then that value must be the value. -->
+ <xsd:complexType name="type.1_1">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.1_1">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.1_1">
+ <xsd:attributeGroup ref="foo:attrGr.1_1"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.1_1">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:attributeGroup>
+
+ <xsd:complexType name="type.1_4">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.1_4">
+ <xsd:anyAttribute namespace="http://BAR ##local http://FOO" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.1_4">
+ <xsd:attributeGroup ref="foo:attrGr.1_4"/>
+ <xsd:anyAttribute namespace="##local http://BAR ##targetNamespace " processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.1_4">
+ <xsd:anyAttribute namespace=" http://FOO http://BAR ##local"/>
+ </xsd:attributeGroup>
+
+ <!-- 2. If either O1 or O2 is any, then any must be the value. -->
+ <xsd:complexType name="type.2_1">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.2_1">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.2_1">
+ <xsd:attributeGroup ref="foo:attrGr.2_1"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.2_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace"/>
+ </xsd:attributeGroup>
+
+ <!-- 3. If both O1 and O2 are sets of (namespace names or ·absent·),
+ then the union of those sets must be the value. -->
+ <xsd:complexType name="type.3_1">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.3_1">
+ <xsd:anyAttribute namespace="##targetNamespace http://DOO" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.3_1">
+ <xsd:attributeGroup ref="foo:attrGr.3_1"/>
+ <xsd:anyAttribute namespace="##local" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.3_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace http://BAR"/>
+ </xsd:attributeGroup>
+ <!-- 4 If the two are negations of different values (namespace
+ names or ·absent·), then a pair of not and ·absent· must be the value. -->
+ <xsd:complexType name="type.4_1">
+ <xsd:complexContent>
+ <xsd:extension base="imp.type.base.derive.4_1">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!-- 5 If either O1 or O2 is a pair of not and a namespace name and
+ the other is a set of (namespace names or ·absent·) (call this set S),
+ then The appropriate case among the following must be true: -->
+ <!-- 5.1 If the set S includes both the negated namespace name and
+ ·absent·, then any must be the value. -->
+ <xsd:complexType name="type.5_1_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_1_a">
+ <xsd:anyAttribute namespace="##local ##targetNamespace" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_1_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_1_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_1_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_1_b">
+ <xsd:anyAttribute namespace="##local ##targetNamespace" processContents="lax"/>
+ </xsd:complexType>
+
+ <!-- 5.2 If the set S includes the negated namespace name but not ·absent·,
+ then a pair of not and ·absent· must be the value. -->
+ <xsd:complexType name="type.5_2_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_2_a">
+ <xsd:anyAttribute namespace="##targetNamespace http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_2_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_2_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_2_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_2_b">
+ <xsd:anyAttribute namespace="##targetNamespace http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ <!-- 5.3 If the set S includes ·absent· but not the negated namespace name,
+ then the union is not expressible. -->
+ <!--
+ <xsd:complexType name="type.5_3_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_3_a">
+ <xsd:anyAttribute namespace="##local http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_3_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_3_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_3_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_3_b">
+ <xsd:anyAttribute namespace="##local http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ -->
+ <!-- 5.4 If the set S does not include either the negated namespace name
+ or ·absent·, then whichever of O1 or O2 is a pair of not and a namespace
+ name must be the value. -->
+ <xsd:complexType name="type.5_4_a">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_4_a">
+ <xsd:anyAttribute namespace="http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_4_a">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="type.5_4_b">
+ <xsd:complexContent>
+ <xsd:extension base="foo:type.base.5_4_b">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="type.base.5_4_b">
+ <xsd:anyAttribute namespace="http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ <!-- 6 If either O1 or O2 is a pair of not and ·absent· and the other is a
+ set of (namespace names or ·absent·) (again, call this set S), then The
+ appropriate case among the following must be true: -->
+ <!-- 6.1 If the set S includes ·absent·, then any must be the value. -->
+ <xsd:complexType name="type.6_1">
+ <xsd:complexContent>
+ <xsd:extension base="imp.type.base.derive.6">
+ <xsd:anyAttribute namespace="##local http://BAR" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!-- 6.2 If the set S does not include ·absent·, then a pair of not and ·absent·
+ must be the value. -->
+ <xsd:complexType name="type.6_2">
+ <xsd:complexContent>
+ <xsd:extension base="imp.type.base.derive.6">
+ <xsd:anyAttribute namespace="http://BAR http://DOO" processContents="lax"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+</xsd:schema>
+
+
diff --git a/test/schemas/anyAttr-derive2_0.xml b/test/schemas/anyAttr-derive2_0.xml
new file mode 100644
index 0000000..c90cb88
--- /dev/null
+++ b/test/schemas/anyAttr-derive2_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+-->
+<foo xmlns="http://FOO" xmlns:foo="http://FOO" xmlns:bar="http://BAR" xmlns:boo="http://BOO" xmlns:doo="http://DOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO attrGroup-wildcard1_0.xsd"
+ foo:bar="o" doo:bar="o"/>
+
+
diff --git a/test/schemas/anyAttr-derive2_0.xsd b/test/schemas/anyAttr-derive2_0.xsd
new file mode 100644
index 0000000..3a74d68
--- /dev/null
+++ b/test/schemas/anyAttr-derive2_0.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO" elementFormDefault="qualified" attributeFormDefault="qualified">
+
+ <element name="foo">
+ <complexType>
+ <complexContent>
+ <extension base="foo:type.A">
+ <anyAttribute namespace="http://DOO" processContents="skip"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ </element>
+
+ <complexType name="type.A">
+ <attributeGroup ref="foo:attrGr.A_1"/>
+ <attributeGroup ref="foo:attrGr.A_2"/>
+ <anyAttribute namespace="http://FOO" processContents="skip"/>
+ </complexType>
+
+ <attributeGroup name="attrGr.A_1">
+ <anyAttribute namespace="http://FOO http://BOO" processContents="skip"/>
+ </attributeGroup>
+
+ <attributeGroup name="attrGr.A_2">
+ <anyAttribute namespace="http://BAR http://DOO http://FOO" processContents="skip"/>
+ </attributeGroup>
+
+
+</schema>
diff --git a/test/schemas/anyAttr-errors1_0.xml b/test/schemas/anyAttr-errors1_0.xml
new file mode 100644
index 0000000..769a5bb
--- /dev/null
+++ b/test/schemas/anyAttr-errors1_0.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:import="http://IMPORT"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO file:///c:/dev/libxml2/patches/2004-05-17/anyAttr-errors1_0.xsd">
+
+ <!-- not allowed: foo:barC -->
+ <basic.B foo:barC="o"/>
+ <!-- not allowed: foo:barC -->
+ <basic.C foo:barC="o"/>
+ <!-- not allowed: barA, bar:barB -->
+ <basic.D barA="o" bar:barB="o"/>
+ <!-- not allowed: bar:barB -->
+ <inters.2_1 barA="o" bar:barB="o" foo:barC="o"/>
+ <!-- not allowed: barA, foo:barC -->
+ <inters.3_1 barA="o" bar:barB="o" foo:barC="o"/>
+ <!-- not allowed: bar:barB -->
+ <inters.4_1 barA="o" bar:barB="o" foo:barC="o"/>
+ <!-- not allowed: barA, foo:barC -->
+ <inters.6_1 barA="o" bar:barB="o" foo:barC="o"/>
+</foo>
+
+
diff --git a/test/schemas/anyAttr-processContents-err1_0.xml b/test/schemas/anyAttr-processContents-err1_0.xml
new file mode 100644
index 0000000..a0122f4
--- /dev/null
+++ b/test/schemas/anyAttr-processContents-err1_0.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO anyAttr-processContents1_0.xsd">
+ <elem.lax foo:bar="o o"/>
+ <elem.strict foo:barB="GB"/>
+</foo>
+
diff --git a/test/schemas/anyAttr-processContents-err1_0.xsd b/test/schemas/anyAttr-processContents-err1_0.xsd
new file mode 100644
index 0000000..cc2a0fd
--- /dev/null
+++ b/test/schemas/anyAttr-processContents-err1_0.xsd
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:foo="http://FOO"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://FOO">
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="elem.lax" type="foo:type.lax"/>
+ <xsd:element name="elem.strict" type="foo:type.strict"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:attribute name="bar" type="xsd:language" />
+
+ <xsd:complexType name="type.lax">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.strict">
+ <xsd:anyAttribute namespace="##any" processContents="strict"/>
+ </xsd:complexType>
+
+</xsd:schema>
+
diff --git a/test/schemas/anyAttr-processContents1_0.xml b/test/schemas/anyAttr-processContents1_0.xml
new file mode 100644
index 0000000..f821089
--- /dev/null
+++ b/test/schemas/anyAttr-processContents1_0.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO anyAttr-processContents1_0.xsd">
+ <elem.lax.A foo:barA_1="PL"/>
+ <elem.lax.B foo:barA_2="o"/>
+ <elem.strict foo:barB="FR"/>
+ <elem.skip foo:barC="o"/>
+</foo>
+
diff --git a/test/schemas/anyAttr-processContents1_0.xsd b/test/schemas/anyAttr-processContents1_0.xsd
new file mode 100644
index 0000000..a468702
--- /dev/null
+++ b/test/schemas/anyAttr-processContents1_0.xsd
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:foo="http://FOO"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://FOO">
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="elem.lax.A" type="foo:type.lax"/>
+ <xsd:element name="elem.lax.B" type="foo:type.lax"/>
+ <xsd:element name="elem.strict" type="foo:type.strict"/>
+ <xsd:element name="elem.skip" type="foo:type.skip"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:attribute name="barA" type="xsd:language" />
+ <xsd:attribute name="barB" type="xsd:language" />
+
+ <xsd:complexType name="type.lax">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.strict">
+ <xsd:anyAttribute namespace="##any"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.skip">
+ <xsd:anyAttribute namespace="##any" processContents="skip"/>
+ </xsd:complexType>
+
+</xsd:schema>
+
diff --git a/test/schemas/anyAttr.importA.1_0.xsd b/test/schemas/anyAttr.importA.1_0.xsd
new file mode 100644
index 0000000..92e0bbe
--- /dev/null
+++ b/test/schemas/anyAttr.importA.1_0.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://IMPORT"
+ xmlns:imp="http://IMPORT" xmlns:boo="http://BOO">
+
+ <xsd:attributeGroup name="attrGr.inters.5_1">
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+ <xsd:element name="imp.element"/>
+
+ <xsd:attribute name="imp.attribute" type="xsd:string"/>
+
+ <xsd:group name="imp.group">
+ <xsd:sequence>
+ <xsd:element ref="imp:imp.element"/>
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:complexType name="imp.complexType">
+ <xsd:attribute ref="imp:imp.attribute"/>
+ </xsd:complexType>
+
+</xsd:schema>
+
diff --git a/test/schemas/anyAttr.importB.1_0.xsd b/test/schemas/anyAttr.importB.1_0.xsd
new file mode 100644
index 0000000..33eaba8
--- /dev/null
+++ b/test/schemas/anyAttr.importB.1_0.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:attributeGroup name="attrGr.inters.6_1">
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+
+ <xsd:complexType name="imp.type.base.inters.4_1">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="imp.type.base.derive.4_1">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="imp.type.base.derive.6">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+</xsd:schema>
+
diff --git a/test/schemas/anyAttr1_0.xml b/test/schemas/anyAttr1_0.xml
new file mode 100644
index 0000000..50b5b16
--- /dev/null
+++ b/test/schemas/anyAttr1_0.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:boo="http://BOO"
+ xmlns:import="http://IMPORT"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO anyAttr1_0.xsd">
+ <import:imp.element/>
+ <imp.attribute import:imp.attribute="p"/>
+ <imp.group>
+ <import:imp.element/>
+ </imp.group>
+ <basic.A bar:barA="o"/>
+ <basic.B bar:barB="o"/>
+ <basic.C barC="o"/>
+ <basic.D foo:barD="o"/>
+ <basic.E barA="o" bar:barB="o" foo:barC="o"/>
+ <inters.1_1 barA="o" bar:barB="o" foo:barC="o"/>
+ <inters.1_2 bar:barB="o"/>
+ <inters.1_3 barA="o" foo:barC="o"/>
+ <inters.1_4 barA="o" bar:barB="o" foo:barC="o"/>
+ <inters.2_1 barA="o" foo:barC="o"/>
+ <inters.3_1 bar:barB="o"/>
+ <inters.4_1 barA="o" foo:barC="o"/>
+ <!--inters.5_1 barA="o" bar:barB="o" foo:barC="o"/-->
+ <inters.6_1 bar:barB="o"/>
+</foo>
+
+
diff --git a/test/schemas/anyAttr1_0.xsd b/test/schemas/anyAttr1_0.xsd
new file mode 100644
index 0000000..1fcf898
--- /dev/null
+++ b/test/schemas/anyAttr1_0.xsd
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:foo="http://FOO" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:import="http://IMPORT"
+ targetNamespace="http://FOO" elementFormDefault="qualified">
+ <xsd:import namespace="http://IMPORT" schemaLocation="anyAttr.importA.1_0.xsd"/>
+ <xsd:import schemaLocation="anyAttr.importB.1_0.xsd"/>
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <!-- Import -->
+ <xsd:element ref="import:imp.element"/>
+ <xsd:element name="imp.attribute">
+ <xsd:complexType>
+ <xsd:attribute ref="import:imp.attribute"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="imp.group">
+ <xsd:complexType>
+ <xsd:group ref="import:imp.group"/>
+ </xsd:complexType>
+ </xsd:element>
+ <!-- Basic -->
+ <xsd:element name="basic.A" type="foo:type.basic.A"/>
+ <xsd:element name="basic.B" type="foo:type.basic.B"/>
+ <xsd:element name="basic.C" type="foo:type.basic.C"/>
+ <xsd:element name="basic.D" type="foo:type.basic.D"/>
+ <xsd:element name="basic.E" type="foo:type.basic.E"/>
+ <!-- Attribute Wildcard Intersection -->
+ <xsd:element name="inters.1_1" type="foo:type.inters.1_1"/>
+ <xsd:element name="inters.1_2" type="foo:type.inters.1_2"/>
+ <xsd:element name="inters.1_3" type="foo:type.inters.1_3"/>
+ <xsd:element name="inters.1_4" type="foo:type.inters.1_4"/>
+
+ <xsd:element name="inters.2_1" type="foo:type.inters.2_1"/>
+
+ <xsd:element name="inters.3_1" type="foo:type.inters.3_1"/>
+
+ <xsd:element name="inters.4_1" type="foo:type.inters.4_1"/>
+
+ <!--xsd:element name="inters.5_1" type="type.inters.5_1"/-->
+ <xsd:element name="inters.6_1" type="foo:type.inters.6_1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <!-- Basic -->
+ <xsd:complexType name="type.basic.A">
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.basic.B">
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.basic.C">
+ <xsd:anyAttribute namespace="##local" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.basic.D">
+ <xsd:anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:complexType name="type.basic.E">
+ <xsd:anyAttribute namespace="##targetNamespace ##local http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ <!-- Attribute Wildcard Intersection -->
+
+ <!-- 1. If O1 and O2 are the same value, then that value must be the value. -->
+ <xsd:complexType name="type.inters.1_1">
+ <xsd:attributeGroup ref="foo:attrGr.inters.1_1"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.1_1">
+ <xsd:anyAttribute namespace="##any"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="type.inters.1_2">
+ <xsd:attributeGroup ref="foo:attrGr.inters.1_2"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.1_2">
+ <xsd:anyAttribute namespace="##other"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="type.inters.1_3">
+ <xsd:attributeGroup ref="foo:attrGr.inters.1_3"/>
+ <xsd:anyAttribute namespace="##local ##targetNamespace" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.1_3">
+ <xsd:anyAttribute namespace="##local ##targetNamespace"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="type.inters.1_4">
+ <xsd:attributeGroup ref="foo:attrGr.inters.1_4"/>
+ <xsd:anyAttribute namespace="##local http://BAR ##targetNamespace " processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.1_4">
+ <xsd:anyAttribute namespace=" ##targetNamespace http://BAR ##local"/>
+ </xsd:attributeGroup>
+
+ <!-- 2. If either O1 or O2 is any, then the other must be the value. -->
+ <xsd:complexType name="type.inters.2_1">
+ <xsd:attributeGroup ref="foo:attrGr.inters.2_1"/>
+ <xsd:anyAttribute namespace="##any" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.2_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace"/>
+ </xsd:attributeGroup>
+ <!-- 3. If either O1 or O2 is a pair of not and a value (a namespace name or ·absent·)
+ and the other is a set of (namespace names or ·absent·), then that set, minus the
+ negated value if it was in the set, minus ·absent· if it was in the set, must be the value. -->
+ <xsd:complexType name="type.inters.3_1">
+ <xsd:attributeGroup ref="foo:attrGr.inters.3_1"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.3_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace http://BAR"/>
+ </xsd:attributeGroup>
+ <!-- 4. If both O1 and O2 are sets of (namespace names or ·absent·), then the
+ intersection of those sets must be the value. -->
+ <xsd:complexType name="type.inters.4_1">
+ <xsd:attributeGroup ref="foo:attrGr.inters.4_1"/>
+ <xsd:anyAttribute namespace="##local ##targetNamespace http://BAR" processContents="lax"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="attrGr.inters.4_1">
+ <xsd:anyAttribute namespace="##local ##targetNamespace"/>
+ </xsd:attributeGroup>
+ <!-- 5. If the two are negations of different namespace names,
+ then the intersection is not expressible. -->
+ <!--
+ <xsd:complexType name="type.inters.5_1">
+ <xsd:attributeGroup ref="import:attrGr.inters.5_1"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+ -->
+ <!--6. If the one is a negation of a namespace name and the other is a negation of ·absent·,
+ then the one which is the negation of a namespace name must be the value.
+
+ This one uses an attribute group from an imported schema with no targetNamespace.
+ -->
+ <xsd:complexType name="type.inters.6_1">
+ <xsd:attributeGroup ref="attrGr.inters.6_1"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:attributeGroup name="attrGrA">
+ <xsd:anyAttribute namespace="##targetNamespace"/>
+ </xsd:attributeGroup>
+
+</xsd:schema>
+
+
diff --git a/test/schemas/attr0_0.xml b/test/schemas/attr0_0.xml
new file mode 100644
index 0000000..cb5b1a6
--- /dev/null
+++ b/test/schemas/attr0_0.xml
@@ -0,0 +1 @@
+<foo id="abc"/>
diff --git a/test/schemas/attr0_0.xsd b/test/schemas/attr0_0.xsd
new file mode 100644
index 0000000..d2031ba
--- /dev/null
+++ b/test/schemas/attr0_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/attruse_0_0.xml b/test/schemas/attruse_0_0.xml
new file mode 100644
index 0000000..241ab27
--- /dev/null
+++ b/test/schemas/attruse_0_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo>
+ <barA attr="bar"/>
+ <barB attr="bar"/>
+ <barB />
+ <barC/>
+</foo>
+
diff --git a/test/schemas/attruse_0_0.xsd b/test/schemas/attruse_0_0.xsd
new file mode 100644
index 0000000..bc9ccef
--- /dev/null
+++ b/test/schemas/attruse_0_0.xsd
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+
+ <xs:element name="barA" >
+ <xs:complexType>
+ <xs:attribute name="attr" type="xs:string" use="required" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="barB" >
+ <xs:complexType>
+ <xs:attribute name="attr" type="xs:string" use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="barC" >
+ <xs:complexType>
+ <xs:attribute name="attr" type="xs:string" use="prohibited" />
+ </xs:complexType>
+ </xs:element>
+
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
+
diff --git a/test/schemas/attruse_0_1.xml b/test/schemas/attruse_0_1.xml
new file mode 100644
index 0000000..b857c6d
--- /dev/null
+++ b/test/schemas/attruse_0_1.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo>
+ <barA />
+ <barB attr="bar"/>
+ <barB />
+ <barC/>
+</foo>
+
diff --git a/test/schemas/attruse_0_2.xml b/test/schemas/attruse_0_2.xml
new file mode 100644
index 0000000..f55ccdc
--- /dev/null
+++ b/test/schemas/attruse_0_2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo>
+ <barA attr="bar" />
+ <barB attr="bar"/>
+ <barB />
+ <barC attr="bar" />
+</foo>
+
diff --git a/test/schemas/bug141312_0.xml b/test/schemas/bug141312_0.xml
new file mode 100644
index 0000000..7d7abb1
--- /dev/null
+++ b/test/schemas/bug141312_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://FOO">lalala</foo>
diff --git a/test/schemas/bug141312_0.xsd b/test/schemas/bug141312_0.xsd
new file mode 100644
index 0000000..c9a7e2c
--- /dev/null
+++ b/test/schemas/bug141312_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<schema
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+
+ <element name="foo" type="foo:fooType" nillable="false" />
+
+ <complexType name="fooType" mixed="true">
+ <simpleContent>
+ <extension base="string" />
+ </simpleContent>
+ </complexType>
+
+</schema>
+
diff --git a/test/schemas/bug141333.xml b/test/schemas/bug141333.xml
new file mode 100644
index 0000000..e14aa46
--- /dev/null
+++ b/test/schemas/bug141333.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="bug141333.xsd" attrA="valueA">
+
+ <bar attrA="valueA" attrB="valueB"/>
+
+</foo>
+
diff --git a/test/schemas/bug141333.xsd b/test/schemas/bug141333.xsd
new file mode 100644
index 0000000..1b81a7b
--- /dev/null
+++ b/test/schemas/bug141333.xsd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+
+ <xs:element name="foo" type="baseType"/>
+
+ <xs:complexType name="baseType">
+ <xs:all>
+ <xs:element name="bar" type="derivedType" minOccurs="0"/>
+ </xs:all>
+ <xs:attribute name="attrA" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="derivedType">
+ <xs:complexContent>
+ <xs:extension base="baseType">
+ <xs:attribute name="attrB" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
+
+
+
+
diff --git a/test/schemas/bug141333_0.xml b/test/schemas/bug141333_0.xml
new file mode 100644
index 0000000..e14aa46
--- /dev/null
+++ b/test/schemas/bug141333_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="bug141333.xsd" attrA="valueA">
+
+ <bar attrA="valueA" attrB="valueB"/>
+
+</foo>
+
diff --git a/test/schemas/bug141333_0.xsd b/test/schemas/bug141333_0.xsd
new file mode 100644
index 0000000..1b81a7b
--- /dev/null
+++ b/test/schemas/bug141333_0.xsd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+
+ <xs:element name="foo" type="baseType"/>
+
+ <xs:complexType name="baseType">
+ <xs:all>
+ <xs:element name="bar" type="derivedType" minOccurs="0"/>
+ </xs:all>
+ <xs:attribute name="attrA" type="xs:string" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="derivedType">
+ <xs:complexContent>
+ <xs:extension base="baseType">
+ <xs:attribute name="attrB" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
+
+
+
+
diff --git a/test/schemas/bug143951.imp b/test/schemas/bug143951.imp
new file mode 100644
index 0000000..58420d3
--- /dev/null
+++ b/test/schemas/bug143951.imp
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<xs:schema targetNamespace="http://www.newport-networks.com/NNL"
+xmlns:nnl="http://www.newport-networks.com/NNL"
+xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
+attributeFormDefault="unqualified" version="1.00">
+ <xs:group name="schema2group">
+ <xs:sequence>
+ <xs:element name="file" type="xs:string"
+default="$File$"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
diff --git a/test/schemas/bug143951_0.xml b/test/schemas/bug143951_0.xml
new file mode 100644
index 0000000..a742a0d
--- /dev/null
+++ b/test/schemas/bug143951_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<MenuDefinitionFile xmlns:nnl="http://www.newport-networks.com/NNL"
+xmlns="http://www.newport-networks.com/cli"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.newport-networks.com/cli bug143951_0.xsd">
+ <nnl:file>$File: //depot/NNL/R1.0_SandM_Dev/Projects/SandM/src/uisupport
+/xml/cliTestCommands.xml $</nnl:file>
+</MenuDefinitionFile>
+
diff --git a/test/schemas/bug143951_0.xsd b/test/schemas/bug143951_0.xsd
new file mode 100644
index 0000000..d5c9511
--- /dev/null
+++ b/test/schemas/bug143951_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<xs:schema targetNamespace="http://www.newport-networks.com/cli"
+ xmlns:nnl="http://www.newport-networks.com/NNL"
+ xmlns:cli="http://www.newport-networks.com/cli"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified"
+ version="1.00">
+ <xs:import namespace="http://www.newport-networks.com/NNL" schemaLocation="bug143951.imp"/>
+ <xs:element name="MenuDefinitionFile">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="nnl:schema2group"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
+
diff --git a/test/schemas/bug145246.xsd.imp b/test/schemas/bug145246.xsd.imp
new file mode 100644
index 0000000..7d92e1c
--- /dev/null
+++ b/test/schemas/bug145246.xsd.imp
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://purl.org/dc/elements/1.1/"
+ targetNamespace="http://purl.org/dc/elements/1.1/"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ DCMES 1.1 XML Schema
+ XML Schema for http://purl.org/dc/elements/1.1/ namespace
+
+ Created 2003-04-02
+
+ Created by
+
+ Tim Cole (t-cole3@uiuc.edu)
+ Tom Habing (thabing@uiuc.edu)
+ Jane Hunter (jane@dstc.edu.au)
+ Pete Johnston (p.johnston@ukoln.ac.uk),
+ Carl Lagoze (lagoze@cs.cornell.edu)
+
+ This schema declares XML elements for the 15 DC elements from the
+ http://purl.org/dc/elements/1.1/ namespace.
+
+ It defines a complexType SimpleLiteral which permits mixed content
+ and makes the xml:lang attribute available. It disallows child elements by
+ use of minOcccurs/maxOccurs.
+
+ However, this complexType does permit the derivation of other complexTypes
+ which would permit child elements.
+
+ All elements are declared as substitutable for the abstract element any,
+ which means that the default type for all elements is dc:SimpleLiteral.
+
+ </xs:documentation>
+
+ </xs:annotation>
+
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ </xs:import>
+ <!--http://www.w3.org/2001/03/xml.xsd-->
+ <xs:complexType name="SimpleLiteral">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This is the default type for all of the DC elements.
+ It permits text content only with optional
+ xml:lang attribute.
+ Text is allowed because mixed="true", but sub-elements
+ are disallowed because minOccurs="0" and maxOccurs="0"
+ are on the xs:any tag.
+
+ This complexType allows for restriction or extension permitting
+ child elements.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent mixed="true">
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="1" maxOccurs="2"/>
+ </xs:sequence>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" type="SimpleLiteral" abstract="true"/>
+
+ <xs:element name="title" substitutionGroup="any"/>
+ <xs:element name="creator" substitutionGroup="any"/>
+ <xs:element name="subject" substitutionGroup="any"/>
+ <xs:element name="description" substitutionGroup="any"/>
+ <xs:element name="publisher" substitutionGroup="any"/>
+ <xs:element name="contributor" substitutionGroup="any"/>
+ <xs:element name="date" substitutionGroup="any"/>
+ <xs:element name="type" substitutionGroup="any"/>
+ <xs:element name="format" substitutionGroup="any"/>
+ <xs:element name="identifier" substitutionGroup="any"/>
+ <xs:element name="source" substitutionGroup="any"/>
+ <xs:element name="language" substitutionGroup="any"/>
+ <xs:element name="relation" substitutionGroup="any"/>
+ <xs:element name="coverage" substitutionGroup="any"/>
+ <xs:element name="rights" substitutionGroup="any"/>
+
+ <xs:group name="elementsGroup">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This group is included as a convenience for schema authors
+ who need to refer to all the elements in the
+ http://purl.org/dc/elements/1.1/ namespace.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="any"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="elementContainer">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This complexType is included as a convenience for schema authors who need to define a root
+ or container element for all of the DC elements.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:choice>
+ <xs:group ref="elementsGroup"/>
+ </xs:choice>
+ </xs:complexType>
+
+
+</xs:schema>
+
diff --git a/test/schemas/bug145246_0.xml b/test/schemas/bug145246_0.xml
new file mode 100644
index 0000000..09050c6
--- /dev/null
+++ b/test/schemas/bug145246_0.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--DOCTYPE giml SYSTEM "http://gitk.sourceforge.net/giml.dtd"-->
+<!-- $Id: gitkTemplate_message.xml.in,v 1.11 2004/01/07 14:21:17 ensonic Exp $
+ * @file gitkTemplate_message.xml
+ * @author Stefan Kost <ensonic@users.sf.net>
+ * @date Thu Jan 17 11:22:38 2002
+ *
+ * @brief message dialog template
+ * @ingroup gitkcore
+ *
+-->
+<giml xmlns="http://gitk.sourceforge.net/"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://gitk.sourceforge.net/ bug145246.xsd"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.0"
+ >
+ <dialog focus="ctrl">
+ <meta>
+ <dc:title><i18n:text>message</i18n:text></dc:title>
+ </meta>
+ <dialogwidgets>
+ <dialogwidget id="Okay"/>
+ </dialogwidgets>
+ <widgetgroup>
+ <widget id="Message" type="label"/>
+ </widgetgroup>
+ </dialog>
+</giml>
+
diff --git a/test/schemas/bug145246_0.xsd b/test/schemas/bug145246_0.xsd
new file mode 100644
index 0000000..9cfe8c6
--- /dev/null
+++ b/test/schemas/bug145246_0.xsd
@@ -0,0 +1,173 @@
+<?xml version="1.0" ?>
+<!--
+ * $Id: giml.xsd,v 1.3 2004/06/25 09:03:53 ensonic Exp $
+ * @file giml.xsd
+ * @author Stefan Kost <ensonic@users.sf.net>
+ * @date Thu Jun 24 17:28:26 MEST 2004
+ *
+ * @brief giml document schema definition
+ * @ingroup gitkcore
+ *
+-->
+<xs:schema targetNamespace="http://gitk.sourceforge.net/"
+ xmlns="http://gitk.sourceforge.net/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.0/">
+ <xs:annotation>
+ <xs:documentation>
+ This schema describes giml dialog sources
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://purl.org/dc/elements/1.1/"
+ schemaLocation="bug145246.xsd.imp"
+ />
+ <!--xs:import namespace="http://apache.org/cocoon/i18n/2.0/"
+ schemaLocation="file://./i18n.xsd"
+ /-->
+
+ <!-- foreign namespace
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="text">
+ <xs:complexType mixed="true"></xs:complexType>
+ </xs:element>
+ -->
+
+ <xs:element name="option">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded"></xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="options">
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="option"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="disabled">
+ <xs:complexType mixed="true"></xs:complexType>
+ </xs:element>
+
+ <xs:element name="required">
+ <xs:complexType mixed="true"></xs:complexType>
+ </xs:element>
+
+ <xs:element name="value">
+ <xs:complexType mixed="true"></xs:complexType>
+ </xs:element>
+
+ <xs:element name="label">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="1"></xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="widget">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="meta" minOccurs="0"/>
+ <xs:element ref="label" minOccurs="0"/>
+ <xs:element ref="disabled" minOccurs="0"/>
+ <xs:element ref="value" minOccurs="0"/>
+ <xs:element ref="options" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="type" default="action">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="action"/>
+ <xs:enumeration value="characterinput"/>
+ <xs:enumeration value="characterinput_numeric"/>
+ <xs:enumeration value="characterinput_alphabetic"/>
+ <xs:enumeration value="optionchoice"/>
+ <xs:enumeration value="optionchoice_boolean"/>
+ <xs:enumeration value="optionchoice_single"/>
+ <xs:enumeration value="optionchoice_single_compact"/>
+ <xs:enumeration value="label"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="hasFocus" default="false">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="widgetgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="meta" minOccurs="0"/>
+ <xs:element ref="label" minOccurs="0"/>
+ <xs:element ref="widget" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="widgetgroup" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="dialogwidget">
+ <xs:complexType mixed="true">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="dialogwidgets">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="dialogwidget" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="meta">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="dc:title"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="dialog">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="meta" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="dialogwidgets" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="widgetgroup" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="focus" default="main">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="main"/>
+ <xs:enumeration value="ctrl"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="giml">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="dialog" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ <!--xs:attribute name="xmlns" type="xs:string" fixed="http://gitk.sourceforge.net/"/-->
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
+
diff --git a/test/schemas/bug152470_1.xml b/test/schemas/bug152470_1.xml
new file mode 100755
index 0000000..adca237
--- /dev/null
+++ b/test/schemas/bug152470_1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<roap:deviceHello
+ xmlns:roap="urn:oma:bac:dldrm:roap-1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <deviceID>
+ <keyIdentifier
+><hash>vXENc+Um/9/NvmYKiHDLaErK0gk=</hash></keyIdentifier>
+ </deviceID>
+</roap:deviceHello> \ No newline at end of file
diff --git a/test/schemas/bug152470_1.xsd b/test/schemas/bug152470_1.xsd
new file mode 100755
index 0000000..7fc9747
--- /dev/null
+++ b/test/schemas/bug152470_1.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<schema
+ targetNamespace="urn:oma:bac:dldrm:roap-1.0"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:roap="urn:oma:bac:dldrm:roap-1.0"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+<!-- Basic Types -->
+<complexType name="Request" abstract="true"/>
+<!-- Basic types to identify entities -->
+
+<complexType name="Identifier">
+ <choice>
+ <element name="keyIdentifier" type="roap:X509SPKIHash"/> <!-- was: type="roap:KeyIdentifier" -->
+ </choice>
+</complexType>
+
+<complexType name="KeyIdentifier" /> <!-- removed: abstract="true" -->
+
+<complexType name="X509SPKIHash">
+ <complexContent>
+ <extension base="roap:KeyIdentifier">
+ <sequence>
+ <element name="hash" type="base64Binary"/>
+ </sequence>
+ <attribute name="algorithm" type="anyURI"
+ default="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ </extension>
+ </complexContent>
+</complexType>
+
+<element name="deviceHello" type="roap:DeviceHello"/>
+
+<complexType name="DeviceHello">
+ <complexContent>
+ <extension base="roap:Request">
+ <sequence>
+ <element name="deviceID" type="roap:Identifier"
+ maxOccurs="unbounded"/>
+ </sequence>
+ </extension>
+ </complexContent>
+</complexType>
+
+</schema>
+
+
diff --git a/test/schemas/bug167754_0.xml b/test/schemas/bug167754_0.xml
new file mode 100644
index 0000000..e5ec7d7
--- /dev/null
+++ b/test/schemas/bug167754_0.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<test xmlns="http://www.example.com/Test"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.example.com/Test bug167754.xsd">
+ <child>
+ <foo/>
+ </child>
+ <child>
+ <foo/>
+ <joe/>
+ </child>
+</test>
diff --git a/test/schemas/bug167754_0.xsd b/test/schemas/bug167754_0.xsd
new file mode 100644
index 0000000..e7883d2
--- /dev/null
+++ b/test/schemas/bug167754_0.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:target="http://www.example.com/Test"
+ targetNamespace="http://www.example.com/Test"
+ version="1.0"
+ elementFormDefault="qualified" >
+
+ <xsd:element name="foo" />
+ <xsd:element name="bar" />
+ <xsd:element name="joe" />
+
+ <xsd:complexType name="dominik">
+ <xsd:all>
+ <xsd:element minOccurs="0" ref="target:foo" />
+ <xsd:element minOccurs="0" ref="target:bar" />
+ <xsd:element minOccurs="0" ref="target:joe" />
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:element name="test">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" name="child" type="target:dominik" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/bug303566_1.xml b/test/schemas/bug303566_1.xml
new file mode 100644
index 0000000..1bf56dc
--- /dev/null
+++ b/test/schemas/bug303566_1.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<Test
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="bug303566_1.xsd">
+ <Country code="D">
+ <City name="Berlin"
+ code="B">
+ <Part country="D"/>
+ <Part country="B"/>
+ </City>
+ </Country>
+ <Country code="F">
+ <City name="Paris" code="P">
+ <Part country="F"/>
+ <Part country="F"/>
+ </City>
+ </Country>
+</Test>
+
diff --git a/test/schemas/bug303566_1.xsd b/test/schemas/bug303566_1.xsd
new file mode 100644
index 0000000..fee99f7
--- /dev/null
+++ b/test/schemas/bug303566_1.xsd
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="codeType">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[A-Z]+"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="Test">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="Country"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="Country">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="City"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="code"
+ type="codeType"
+ use="required"/>
+ </xsd:complexType>
+ <xsd:key name="CountryDummyKey">
+ <xsd:selector xpath="."/>
+ <xsd:field xpath="@code"/>
+ </xsd:key>
+ <xsd:keyref name="PartRefCountryDummy"
+ refer="CountryDummyKey">
+ <xsd:selector xpath=".//Part"/>
+ <xsd:field xpath="@country"/>
+ </xsd:keyref>
+ </xsd:element>
+
+ <xsd:element name="City">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="Part"
+ minOccurs="2"
+ maxOccurs="2"/>
+ </xsd:sequence>
+ <xsd:attribute name="name"
+ type="xsd:string"
+ use="required"/>
+ <xsd:attribute name="code"
+ type="xsd:string"
+ use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="Part">
+ <xsd:complexType>
+ <xsd:attribute name="country"
+ type="codeType"
+ use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/bug306806_0.xml b/test/schemas/bug306806_0.xml
new file mode 100644
index 0000000..90c55e1
--- /dev/null
+++ b/test/schemas/bug306806_0.xml
@@ -0,0 +1,111 @@
+<?xml version = '1.0'?>
+<targetGeometry
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+ xsi:noNamespaceSchemaLocation='bug306806_1.xsd'>
+ <!-- type 1 cylinder (original) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <length dimension='L' Length='inch'> 30.250 </length>
+ <cyl-transform>
+ <translation dimension='L' Length='inch'> -13.125 0.000 0.000</translation>
+ <rotation dimension='L' Length='degree'> -0.000 90.000 0.000</rotation>
+ </cyl-transform>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+<geometryGroup name='g0'>
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+<geometryGroup name='g1'>
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+</geometryGroup>
+
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+</geometryGroup>
+
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+ <!-- type 2 cylinder (new, version2) -->
+ <component name="1502">
+ <description>/all/turbine/r.turbshaft</description>
+ <cylinder name="s.turbshaft">
+ <radius dimension='L' Length='inch'> 1.375 </radius>
+ <base1 dimension='L' Length='inch'> 0 0 0 </base1>
+ <base2 dimension='L' Length='inch'> 1.1 1.1 1.1 </base2>
+ <description>/all/turbine/r.turbshaft/s.turbshaft</description>
+ </cylinder>
+ </component>
+
+</targetGeometry>
diff --git a/test/schemas/bug306806_1.xsd b/test/schemas/bug306806_1.xsd
new file mode 100644
index 0000000..edc805d
--- /dev/null
+++ b/test/schemas/bug306806_1.xsd
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="targetGeometry">
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="geometry-element"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="geometryGroup" type="geometryGroup-content"/>
+ <xs:complexType name="geometryGroup-content">
+ <xs:group maxOccurs="unbounded" ref="geometry-element"/>
+ <xs:attribute name="name" use="required" type="xs:token"/>
+ </xs:complexType>
+ <xs:group name="geometry-element">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="component"/>
+ <xs:element ref="geometryGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="component">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="description"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="cylinder"/>
+ <xs:element ref="ellipsoid"/>
+ <xs:element ref="faceSet"/>
+ <xs:element ref="tube"/>
+ <xs:element ref="sphere"/>
+ <xs:element ref="box"/>
+ <xs:element ref="extrusion"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="translation">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="rotation">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="about">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="length">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:restriction base="xs:anyType">
+ <xs:simpleType>
+ <xs:restriction base="xs:double">
+ <xs:minExclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="radius">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:restriction base="xs:anyType">
+ <xs:simpleType>
+ <xs:restriction base="xs:double">
+ <xs:minExclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="base1">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="base2">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="transform">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="translation"/>
+ <xs:element minOccurs="0" ref="rotation"/>
+ <xs:element minOccurs="0" ref="about"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="cyl-transform">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="translation"/>
+ <xs:element minOccurs="0" ref="rotation"/>
+ <xs:element minOccurs="0" ref="about"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="cylinder">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="radius"/>
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="length"/>
+ <xs:element ref="cyl-transform"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:element ref="base1"/>
+ <xs:element ref="base2"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="transform"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:element ref="description"/>
+ <xs:element ref="vMaterial"/>
+ </xs:choice>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ellipsoid">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="radius">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="vMaterial"/>
+ <xs:element ref="transform"/>
+ </xs:choice>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="faceSet">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="description"/>
+ <xs:element ref="vertex_normals"/>
+ <xs:element ref="vertices"/>
+ <xs:element ref="facets"/>
+ <xs:group ref="optional-content"/>
+ </xs:choice>
+ <xs:attribute name="name" type="xs:token"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="facets" type="facets-content"/>
+ <xs:simpleType name="facets-content">
+ <xs:restriction base="integer-list"/>
+ </xs:simpleType>
+ <xs:element name="vertex_normals" type="vertex_normals-content"/>
+ <xs:complexType name="vertex_normals-content">
+ <xs:simpleContent>
+ <xs:restriction base="xs:anyType">
+ <xs:simpleType>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value="9"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup ref="length-attribute"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="vertices" type="vertices-content"/>
+ <xs:complexType name="vertices-content">
+ <xs:simpleContent>
+ <xs:restriction base="xs:anyType">
+ <xs:simpleType>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value="9"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup ref="length-attribute"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="tube" type="tube-content"/>
+ <xs:complexType name="tube-content">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="spine"/>
+ <xs:element ref="radius"/>
+ <xs:group ref="optional-content"/>
+ </xs:choice>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ <xs:element name="spine" type="spine-content"/>
+ <xs:complexType name="spine-content">
+ <xs:simpleContent>
+ <xs:restriction base="xs:anyType">
+ <xs:simpleType>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value="6"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup ref="length-attribute"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="sphere" type="sphere-content"/>
+ <xs:complexType name="sphere-content">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="radius"/>
+ <xs:element ref="position"/>
+ </xs:choice>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ <xs:element name="position" type="position-content"/>
+ <xs:complexType name="position-content">
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="box" type="box-content"/>
+ <xs:complexType name="box-content">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="size"/>
+ <xs:choice>
+ <xs:element ref="position"/>
+ <xs:element ref="transform"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ <xs:element name="size" type="size-content"/>
+ <xs:complexType name="size-content">
+ <xs:simpleContent>
+ <xs:extension base="three-doubles-list">
+ <xs:attributeGroup ref="length-attribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="extrusion" type="extrusion-content"/>
+ <xs:complexType name="extrusion-content">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="spine"/>
+ <xs:element ref="scale"/>
+ <xs:element ref="crossSection"/>
+ <xs:group ref="optional-content"/>
+ </xs:choice>
+ <xs:attributeGroup ref="name-attribute"/>
+ </xs:complexType>
+ <xs:element name="scale" type="scale-content"/>
+ <xs:simpleType name="scale-content">
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="crossSection" type="crossSection-content"/>
+ <xs:complexType name="crossSection-content">
+ <xs:simpleContent>
+ <xs:restriction base="xs:anyType">
+ <xs:simpleType>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value="9"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup ref="length-attribute"/>
+ <xs:attributeGroup ref="closed-attribute"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:attributeGroup name="closed-attribute">
+ <xs:attribute name="closed" use="required" type="xs:boolean"/>
+ </xs:attributeGroup>
+ <xs:group name="optional-content">
+ <xs:annotation>
+ <xs:documentation>global #############</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="transform"/>
+ <xs:element ref="vMaterial"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="description" type="xs:string"/>
+ <xs:attributeGroup name="length-attribute">
+ <xs:attributeGroup ref="dimension-attribute"/>
+ <xs:attributeGroup ref="Length-attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dimension-attribute">
+ <xs:attribute name="dimension" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="L"/>
+ <xs:enumeration value="F"/>
+ <xs:enumeration value="M"/>
+ <xs:enumeration value="T"/>
+ <xs:enumeration value="F/L"/>
+ <xs:enumeration value="F/LL"/>
+ <xs:enumeration value="F/LLL"/>
+ <xs:enumeration value="F/T"/>
+ <xs:enumeration value="F/TT"/>
+ <xs:enumeration value="F/TTT"/>
+ <xs:enumeration value="L/T"/>
+ <xs:enumeration value="L/TT"/>
+ <xs:enumeration value="LLLLL"/>
+ <xs:enumeration value="D/D"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="Length-attribute">
+ <xs:attribute name="Length" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="meter"/>
+ <xs:enumeration value="m"/>
+ <xs:enumeration value="foot"/>
+ <xs:enumeration value="f"/>
+ <xs:enumeration value="inch"/>
+ <xs:enumeration value="in"/>
+ <xs:enumeration value="centimeter"/>
+ <xs:enumeration value="cm"/>
+ <xs:enumeration value="decimeter"/>
+ <xs:enumeration value="dm"/>
+ <xs:enumeration value="millimeter"/>
+ <xs:enumeration value="mm"/>
+ <xs:enumeration value="degree"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="Time-attribute">
+ <xs:attribute name="Time" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="second"/>
+ <xs:enumeration value="s"/>
+ <xs:enumeration value="sec"/>
+ <xs:enumeration value="minute"/>
+ <xs:enumeration value="min"/>
+ <xs:enumeration value="hour"/>
+ <xs:enumeration value="hr"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="Force-attribute">
+ <xs:attribute name="Force" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="newton"/>
+ <xs:enumeration value="n"/>
+ <xs:enumeration value="pound"/>
+ <xs:enumeration value="grain"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="Mass-attribute">
+ <xs:attribute name="Mass" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="kilogram"/>
+ <xs:enumeration value="kg"/>
+ <xs:enumeration value="gram"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="Dimensionless-attribute">
+ <xs:attribute name="Dimensionless" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="radian"/>
+ <xs:enumeration value="rad"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:simpleType name="three-doubles-list">
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:double xs:double xs:double"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:length value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="integer-list">
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:integer xs:integer"/>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="name-attribute">
+ <xs:attribute name="name" use="required" type="xs:token"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="description-attribute">
+ <xs:attribute name="description" use="required"/>
+ </xs:attributeGroup>
+ <xs:element name="vMaterial">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="diffuseColor"/>
+ <xs:element minOccurs="0" ref="emissiveColor"/>
+ <xs:element minOccurs="0" ref="specularColor"/>
+ <xs:element minOccurs="0" ref="shininess"/>
+ <xs:element minOccurs="0" ref="transparency"/>
+ <xs:element minOccurs="0" ref="ambientIntensity"/>
+ <xs:element minOccurs="0" ref="DEF"/>
+ <xs:element minOccurs="0" ref="USE"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="diffuseColor" type="xs:string"/>
+ <xs:element name="emissiveColor" type="xs:string"/>
+ <xs:element name="specularColor" type="xs:string"/>
+ <xs:element name="shininess" type="xs:string"/>
+ <xs:element name="transparency" type="xs:string"/>
+ <xs:element name="ambientIntensity" type="xs:string"/>
+ <xs:element name="DEF" type="xs:string"/>
+ <xs:element name="USE" type="xs:string"/>
+</xs:schema>
diff --git a/test/schemas/bug309338_0.xml b/test/schemas/bug309338_0.xml
new file mode 100644
index 0000000..33cbf95
--- /dev/null
+++ b/test/schemas/bug309338_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<foo xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo bug309338.xsd">2000.00</foo>
diff --git a/test/schemas/bug309338_1.xsd b/test/schemas/bug309338_1.xsd
new file mode 100644
index 0000000..0aa586c
--- /dev/null
+++ b/test/schemas/bug309338_1.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:f="urn:test:foo"
+ targetNamespace="urn:test:foo">
+ <xsd:element name="foo" type="f:fooType"/>
+
+ <xsd:simpleType name="fooType">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/bug310264_0.xml b/test/schemas/bug310264_0.xml
new file mode 100644
index 0000000..98f057c
--- /dev/null
+++ b/test/schemas/bug310264_0.xml
@@ -0,0 +1,41 @@
+<c xmlns="http://myns" >
+ <a/> <!-- 1 -->
+ <a/> <!-- 2 -->
+ <a/> <!-- 3 -->
+ <a/> <!-- 4 -->
+ <a/> <!-- 5 -->
+ <a/> <!-- 6 -->
+ <a/> <!-- 7 -->
+ <a/> <!-- 8 -->
+ <a/> <!-- 9 -->
+ <a/> <!-- 10 -->
+ <a/> <!-- 1 -->
+ <a/> <!-- 2 -->
+ <a/> <!-- 3 -->
+ <a/> <!-- 4 -->
+ <a/> <!-- 5 -->
+ <a/> <!-- 6 -->
+ <a/> <!-- 7 -->
+ <a/> <!-- 8 -->
+ <a/> <!-- 9 -->
+ <a/> <!-- 20 -->
+ <a/> <!-- 1 -->
+ <a/> <!-- 2 -->
+ <a/> <!-- 3 -->
+ <a/> <!-- 4 -->
+ <a/> <!-- 5 -->
+ <a/> <!-- 6 -->
+ <a/> <!-- 7 -->
+ <a/> <!-- 8 -->
+ <a/> <!-- 9 -->
+ <a/> <!-- 30 -->
+ <a/> <!-- 1 -->
+ <a/> <!-- 2 -->
+ <a/> <!-- 3 -->
+ <a/> <!-- 4 -->
+ <a/> <!-- 5 -->
+ <a/> <!-- 6 -->
+ <a/> <!-- 7 -->
+ <a/> <!-- 8 -->
+</c>
+
diff --git a/test/schemas/bug310264_0.xsd b/test/schemas/bug310264_0.xsd
new file mode 100644
index 0000000..6f2b333
--- /dev/null
+++ b/test/schemas/bug310264_0.xsd
@@ -0,0 +1,18 @@
+<xs:schema xmlns:tns="http://myns"
+ targetNamespace="http://myns"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+>
+
+ <xs:element name="a" />
+
+ <xs:complexType name="c" >
+ <xs:sequence minOccurs="2" maxOccurs="4">
+ <xs:sequence minOccurs="19" maxOccurs="20">
+ <xs:element ref="tns:a" />
+ </xs:sequence>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="c" type="tns:c" />
+
+</xs:schema>
diff --git a/test/schemas/bug312957_0.xml b/test/schemas/bug312957_0.xml
new file mode 100644
index 0000000..c22444f
--- /dev/null
+++ b/test/schemas/bug312957_0.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<family xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="bug312957_1.xsd"
+ name="test">
+ <siblings>
+ <sibling name="gill"/>
+ </siblings>
+ <sisters>
+ <sister name="gill"/>
+ <sister name="annie"/>
+ </sisters>
+</family>
+
+
diff --git a/test/schemas/bug312957_1.xsd b/test/schemas/bug312957_1.xsd
new file mode 100644
index 0000000..fb7972e
--- /dev/null
+++ b/test/schemas/bug312957_1.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="family" type="family_type">
+ <xs:key name="sibling_key">
+ <xs:selector xpath="siblings/sibling"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+ <xs:keyref name="sibling_key_ref" refer="sibling_key">
+ <xs:selector xpath="sisters/sister"/>
+ <xs:field xpath="@name"/>
+ </xs:keyref>
+ </xs:element>
+ <xs:complexType name="family_type">
+ <xs:sequence>
+ <xs:element name="siblings" type="siblings_type" />
+ <xs:element name="sisters" type="sisters_type" />
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
+ <xs:complexType name="siblings_type">
+ <xs:sequence>
+ <xs:element name="sibling" type="sibling_type" minOccurs="0"
+maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="sisters_type">
+ <xs:sequence>
+ <xs:element name="sister" type="sister_type" minOccurs="0"
+maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="sibling_type">
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
+ <xs:complexType name="sister_type">
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/test/schemas/bug313982_0.xml b/test/schemas/bug313982_0.xml
new file mode 100644
index 0000000..18c81ea
--- /dev/null
+++ b/test/schemas/bug313982_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testDecimalFacet xmlns="http://www.foo.com"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.foo.com bug313982_0.xsd">0.99</testDecimalFacet>
diff --git a/test/schemas/bug313982_0.xsd b/test/schemas/bug313982_0.xsd
new file mode 100644
index 0000000..69d0613
--- /dev/null
+++ b/test/schemas/bug313982_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.foo.com" elementFormDefault="qualified"
+xmlns="http://www.foo.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="testDecimalFacet">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/bug321475_0.xml b/test/schemas/bug321475_0.xml
new file mode 100644
index 0000000..6190231
--- /dev/null
+++ b/test/schemas/bug321475_0.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<animation xmlns="http://www.collada.org/2005/11/COLLADASchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.collada.org/2005/11/COLLADASchema bug321475.xsd">
+ <asset/>
+ <source/>
+ <sampler/>
+ <channel/>
+</animation>
+
diff --git a/test/schemas/bug321475_1.xsd b/test/schemas/bug321475_1.xsd
new file mode 100644
index 0000000..b714a0d
--- /dev/null
+++ b/test/schemas/bug321475_1.xsd
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<xs:schema targetNamespace="http://www.collada.org/2005/11/COLLADASchema"
+ xmlns="http://www.collada.org/2005/11/COLLADASchema"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ elementFormDefault="qualified" version="1.4.0" xml:lang="EN">
+ <xs:element name="animation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="asset" minOccurs="0"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="source" maxOccurs="unbounded"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element ref="sampler" maxOccurs="unbounded"/>
+ <xs:element ref="channel" maxOccurs="unbounded"/>
+ <xs:element ref="animation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:element ref="animation" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element ref="sampler" maxOccurs="unbounded"/>
+ <xs:element ref="channel" maxOccurs="unbounded"/>
+ <xs:element ref="animation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:element ref="animation" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:element ref="extra" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="name" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="extra"/>
+ <xs:element name="asset"/>
+ <xs:element name="channel"/>
+ <xs:element name="sampler"/>
+ <xs:element name="source"/>
+ <xs:element name="technique"/>
+</xs:schema>
+
+
+
+
+ \ No newline at end of file
diff --git a/test/schemas/bug322411_0.xml b/test/schemas/bug322411_0.xml
new file mode 100644
index 0000000..f883648
--- /dev/null
+++ b/test/schemas/bug322411_0.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<ELEMENTS>
+ <ELEMENT>
+ <items>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <!-- Some dupls. -->
+ <item>dupl1</item>
+ <item>dupl2</item>
+ <item>dupl3</item>
+ <item>dupl4</item>
+ <item>dupl5</item>
+ <item>dupl6</item>
+ <item>dupl7</item>
+ <item>dupl8</item>
+ <item>dupl9</item>
+ <item>dupl10</item>
+ <item>dupl11</item>
+
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ <item>10</item>
+ <item>11</item>
+ <items>
+ <item>12</item>
+ <item>13</item>
+ <item>14</item>
+ <item>15</item>
+ <!-- Some dupls. -->
+ <item>dupl1</item>
+ <item>dupl2</item>
+ <item>dupl3</item>
+ <item>dupl4</item>
+ <item>dupl5</item>
+ <item>dupl6</item>
+ <item>dupl7</item>
+ <item>dupl8</item>
+ <item>dupl9</item>
+ <item>dupl10</item>
+ <item>dupl11</item>
+
+ <item>16</item>
+ <item>17</item>
+ <item>18</item>
+ <item>19</item>
+ <item>20</item>
+ <item>21</item>
+ </items>
+ <items>
+ <item>22</item>
+ <item>23</item>
+ <item>24</item>
+ <item>25</item>
+ <item>26</item>
+ <item>27</item>
+ <item>28</item>
+ <item>29</item>
+ <item>30</item>
+ <item>31</item>
+ <item>32</item>
+ <item>33</item>
+ <item>34</item>
+ <item>35</item>
+ <item>36</item>
+ <item>37</item>
+ <item>38</item>
+ <item>39</item>
+ <item>40</item>
+ <item>41</item>
+ <!-- Some dupls. -->
+ <item>dupl1</item>
+ <item>dupl2</item>
+ <item>dupl3</item>
+ <item>dupl4</item>
+ <item>dupl5</item>
+ <item>dupl6</item>
+ <item>dupl7</item>
+ <item>dupl8</item>
+ <item>dupl9</item>
+ <item>dupl10</item>
+ <item>dupl11</item>
+ </items>
+ </items>
+ <!-- Keyrefs. -->
+ <ref>41</ref>
+ </ELEMENT>
+</ELEMENTS>
+
diff --git a/test/schemas/bug322411_1.xsd b/test/schemas/bug322411_1.xsd
new file mode 100644
index 0000000..383dee6
--- /dev/null
+++ b/test/schemas/bug322411_1.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="items">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="item" maxOccurs="unbounded" type="xsd:string"/>
+ <xsd:element ref="items" minOccurs="0" maxOccurs="2"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:unique name="ItemUnique">
+ <xsd:selector xpath="item"/>
+ <xsd:field xpath="."/>
+ </xsd:unique>
+ </xsd:element>
+
+ <xsd:element name="ELEMENTS">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="ELEMENT">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="items"/>
+ <xsd:element name="ref" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:keyref name="ItemRef" refer="ItemUnique">
+ <xsd:selector xpath="ref"/>
+ <xsd:field xpath="."/>
+ </xsd:keyref>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/bug323510_0.xml b/test/schemas/bug323510_0.xml
new file mode 100644
index 0000000..ce7647d
--- /dev/null
+++ b/test/schemas/bug323510_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<foo/>
+
diff --git a/test/schemas/bug323510_1.xsd b/test/schemas/bug323510_1.xsd
new file mode 100644
index 0000000..8b047ce
--- /dev/null
+++ b/test/schemas/bug323510_1.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema> \ No newline at end of file
diff --git a/test/schemas/bug455953_0.xml b/test/schemas/bug455953_0.xml
new file mode 100644
index 0000000..448907c
--- /dev/null
+++ b/test/schemas/bug455953_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pre:MainElement xmlns:pre="http://www.tempuri.org/MainSchema" xmlns:ns="http://www.tempuri.org/ImportedSchema">
+ <pre:MainA MainID="1"/>
+ <ns:AnotherElement>
+ <ns:B BID="3">
+ <ns:MyB>EMPTY</ns:MyB>
+ </ns:B>
+ </ns:AnotherElement>
+</pre:MainElement> \ No newline at end of file
diff --git a/test/schemas/bug455953_0.xsd b/test/schemas/bug455953_0.xsd
new file mode 100644
index 0000000..f635570
--- /dev/null
+++ b/test/schemas/bug455953_0.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.tempuri.org/MainSchema"
+ xmlns:tns="http://www.tempuri.org/MainSchema"
+ xmlns:ns="http://www.tempuri.org/ImportedSchema"
+ elementFormDefault="qualified" >
+
+ <xs:import namespace="http://www.tempuri.org/ImportedSchema" schemaLocation="./import-455953.xsd" />
+
+ <xs:complexType name="MyMainType">
+ <xs:sequence>
+ <xs:element name="MainA">
+ <xs:complexType>
+ <xs:attribute name="MainID" type="xs:int"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="ns:AnotherElement" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="MainElement" type="tns:MyMainType">
+ <xs:key name="MainKey" >
+ <xs:selector xpath="tns:MainA" />
+ <xs:field xpath="@MainID" />
+ </xs:key>
+ </xs:element>
+
+
+</xs:schema>
diff --git a/test/schemas/changelog093_0.xml b/test/schemas/changelog093_0.xml
new file mode 100644
index 0000000..4b49612
--- /dev/null
+++ b/test/schemas/changelog093_0.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<changelog
+ xmlns="http://www.blackperl.com/XML/ChangeLog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.blackperl.com/XML/ChangeLog changelog093.xsd">
+ <description lang="PL"/>
+ <description lang="PL"/>
+ <release version="1" date="2005-04-08T21:12:00">
+ <item>
+ <file path="abc"/>
+ <description lang="FR"/>
+ </item>
+ </release>
+</changelog>
diff --git a/test/schemas/changelog093_1.xsd b/test/schemas/changelog093_1.xsd
new file mode 100644
index 0000000..cf2bcc6
--- /dev/null
+++ b/test/schemas/changelog093_1.xsd
@@ -0,0 +1,253 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.blackperl.com/XML/ChangeLog"
+ targetNamespace="http://www.blackperl.com/XML/ChangeLog"
+ elementFormDefault="qualified" attributeFormDefault="unqualified"
+ version="0.93" id="changelog0.93">
+ <!--
+ Refer to this schema using the following namespace:
+ http://www.blackperl.com/XML/ChangeLog
+ -->
+ <xsd:annotation>
+ <xsd:documentation>
+ A description of an XML application which itemizes changes over the
+ life-span of a software project. Changes are tracked by releases, with a
+ granularity of individual items made up of files that were affected.
+ </xsd:documentation>
+ <xsd:appinfo xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:creator>Randy J. Ray (rjray@blackperl.com)</dc:creator>
+ <dc:date>2004-11-22</dc:date>
+ <dc:subject>changelog,xml,schema</dc:subject>
+ <dc:description>
+ An XML Schema declaration describing an XML expression of software
+ project change-logs.
+ </dc:description>
+ </xsd:appinfo>
+ <xsd:appinfo>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>XML Schema for Changelogs</dc:title>
+ <dc:description>
+ An XML Schema declaration describing an XML expression of software
+ project change-logs.
+ </dc:description>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Randy J. Ray</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Randy J. Ray</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </xsd:appinfo>
+ </xsd:annotation>
+
+ <xsd:complexType id="informationType" name="informationType"
+ mixed="true">
+ <xsd:annotation>
+ <xsd:documentation>
+ An open-ended container type for including version-control information
+ at various levels within the changelog structure. This is the only
+ type which explicitly permits content from foreign namespaces.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+ <xsd:any processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="source" type="xsd:anyURI" />
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+ <xsd:complexType id="descriptionType" name="descriptionType">
+ <xsd:annotation>
+ <xsd:documentation>
+ A description block is used to document everything from specific change
+ items to the release as a whole.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute default="en-US" name="lang" type="xsd:language" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:simpleType id="versionString" name="versionString">
+ <xsd:annotation>
+ <xsd:documentation>
+ The versionString type is applied to attributes that describe simple
+ revision-number strings. It only supports CVS (RCS) styled version
+ numbers.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d+(\.\d+)*" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType id="fileType" name="fileType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The fileType definition is used for the file element, a part of the
+ itemType declaration. It is defined separately so that it can be
+ referred to from multiple places.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence maxOccurs="1" minOccurs="0">
+ <xsd:element name="description" type="tns:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
+ type="tns:informationType" nillable="true" />
+ </xsd:sequence>
+ <xsd:attribute name="path" type="xsd:string" use="required" />
+ <xsd:attribute name="revision" type="tns:versionString" use="optional"/>
+ <xsd:attribute name="author" type="xsd:NMTOKEN" use="optional" />
+ <xsd:attribute name="action" use="optional">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="ADD" />
+ <xsd:enumeration value="DELETE" />
+ <xsd:enumeration value="RESTORE" />
+ <xsd:enumeration value="MOVE" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="note" type="xsd:string" use="optional" />
+ </xsd:complexType>
+
+ <xsd:element id="file" name="file" nillable="true" type="tns:fileType">
+ <xsd:annotation>
+ <xsd:documentation>
+ A file element contains a single block representing a fileType.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:unique name="fileDescriptionLangConstraint">
+ <xsd:selector xpath="tns:description" />
+ <xsd:field xpath="@lang" />
+ </xsd:unique>
+ </xsd:element>
+
+ <xsd:complexType id="itemType" name="itemType">
+ <xsd:annotation>
+ <xsd:documentation>
+ These element blocks define a single change-item within the scope of a
+ given release. A change-item consists of one or more files that were
+ affected, and a description of the change itself.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
+ type="tns:informationType" nillable="true" />
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element ref="tns:file" />
+ <xsd:element name="fileset" nillable="false">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
+ type="tns:informationType" nillable="true" />
+ <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:file" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:element name="description" type="tns:descriptionType"
+ minOccurs="1" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID" />
+ </xsd:complexType>
+
+ <xsd:element id="item" name="item" nillable="false" type="tns:itemType">
+ <xsd:annotation>
+ <xsd:documentation>
+ An item element contains a single block representing an itemType.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:unique name="itemDescriptionLangConstraint">
+ <xsd:selector xpath="tns:description" />
+ <xsd:field xpath="@lang" />
+ </xsd:unique>
+ </xsd:element>
+
+ <xsd:complexType id="releaseType" name="releaseType">
+ <xsd:annotation>
+ <xsd:documentation>
+ The release is the primary piece of information that a changelog
+ collects and organizes. A release contains an optional description,
+ followed by one or more item blocks. The release element is also the
+ greatest user of attributes besides the file element. A release element
+ must have at least a "version" attribute, uniquely identifying the
+ release itself. Additionally, it may have "tag" to associate it with
+ a release-system tag and "date" to specify the date the release was
+ created.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description" type="tns:descriptionType"
+ minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="information"
+ type="tns:informationType" nillable="true" />
+ <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
+ type="tns:informationType" nillable="true" />
+ <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:item" />
+ </xsd:sequence>
+ <xsd:attribute name="version" type="xsd:token" use="required" />
+ <xsd:attribute name="tag" type="xsd:NMTOKEN" />
+ <xsd:attribute name="date" type="xsd:token" use="required" /> <!-- type="xsd:dateTime" -->
+ </xsd:complexType>
+
+ <xsd:element id="release" name="release" nillable="false"
+ type="tns:releaseType">
+ <xsd:annotation>
+ <xsd:documentation>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:unique name="releaseDescriptionLangConstraint">
+ <xsd:selector xpath="tns:description" />
+ <xsd:field xpath="@lang" />
+ </xsd:unique>
+ </xsd:element>
+
+ <xsd:element id="changelog" name="changelog" nillable="false">
+ <xsd:annotation>
+ <xsd:documentation>
+ The changelog element is intended as the document root element. It
+ contains an overview element (identical in structure to the description
+ element, but named differently to prevent collision in XPath queries)
+ and one or more release blocks.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="1" name="description"
+ nillable="false" type="tns:descriptionType" />
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="information"
+ type="tns:informationType" nillable="true" />
+ <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
+ type="tns:informationType" nillable="true" />
+ <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:release" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:unique name="changelogDescriptionLangConstraint">
+ <xsd:selector xpath="tns:description" />
+ <xsd:field xpath="@lang" />
+ </xsd:unique>
+ </xsd:element>
+
+</xsd:schema>
+
diff --git a/test/schemas/choice_0.xml b/test/schemas/choice_0.xml
new file mode 100644
index 0000000..677b039
--- /dev/null
+++ b/test/schemas/choice_0.xml
@@ -0,0 +1,3 @@
+<doc>
+<a/>
+</doc>
diff --git a/test/schemas/choice_0.xsd b/test/schemas/choice_0.xsd
new file mode 100644
index 0000000..1491b6b
--- /dev/null
+++ b/test/schemas/choice_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="doc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="a"/>
+ <xs:element name="b"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/choice_1.xml b/test/schemas/choice_1.xml
new file mode 100644
index 0000000..d5c0dd1
--- /dev/null
+++ b/test/schemas/choice_1.xml
@@ -0,0 +1,3 @@
+<doc>
+<b/>
+</doc>
diff --git a/test/schemas/choice_1.xsd b/test/schemas/choice_1.xsd
new file mode 100644
index 0000000..00614d0
--- /dev/null
+++ b/test/schemas/choice_1.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="doc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element name="a"/>
+ <xs:element name="b"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/choice_2.xml b/test/schemas/choice_2.xml
new file mode 100644
index 0000000..7b27f17
--- /dev/null
+++ b/test/schemas/choice_2.xml
@@ -0,0 +1,4 @@
+<doc>
+<a/>
+<b/>
+</doc>
diff --git a/test/schemas/choice_2.xsd b/test/schemas/choice_2.xsd
new file mode 100644
index 0000000..9f2b094
--- /dev/null
+++ b/test/schemas/choice_2.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="doc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="3">
+ <xs:element name="a"/>
+ <xs:element name="b"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/choice_3.xml b/test/schemas/choice_3.xml
new file mode 100644
index 0000000..0358109
--- /dev/null
+++ b/test/schemas/choice_3.xml
@@ -0,0 +1,4 @@
+<doc>
+<a/>
+<a/>
+</doc>
diff --git a/test/schemas/choice_4.xml b/test/schemas/choice_4.xml
new file mode 100644
index 0000000..636923c
--- /dev/null
+++ b/test/schemas/choice_4.xml
@@ -0,0 +1,2 @@
+<doc>
+</doc>
diff --git a/test/schemas/choice_5.xml b/test/schemas/choice_5.xml
new file mode 100644
index 0000000..3345a68
--- /dev/null
+++ b/test/schemas/choice_5.xml
@@ -0,0 +1,6 @@
+<doc>
+<a/>
+<b/>
+<a/>
+</doc>
+
diff --git a/test/schemas/choice_6.xml b/test/schemas/choice_6.xml
new file mode 100644
index 0000000..394153d
--- /dev/null
+++ b/test/schemas/choice_6.xml
@@ -0,0 +1,7 @@
+<doc>
+<a/>
+<b/>
+<a/>
+<a/>
+</doc>
+
diff --git a/test/schemas/complex-type-extension_0.xml b/test/schemas/complex-type-extension_0.xml
new file mode 100644
index 0000000..8cdda23
--- /dev/null
+++ b/test/schemas/complex-type-extension_0.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ItemsList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <Item xsi:type="ItemWithNumber">
+ <Name>Name1</Name>
+ <Number>20</Number>
+ </Item>
+ <Item xsi:type="ItemWithNumber">
+ <Name>Name1</Name>
+ <Name>Name2</Name>
+ <Number>20</Number>
+ </Item>
+</ItemsList>
diff --git a/test/schemas/complex-type-extension_0.xsd b/test/schemas/complex-type-extension_0.xsd
new file mode 100644
index 0000000..6a6237a
--- /dev/null
+++ b/test/schemas/complex-type-extension_0.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="Item" abstract="true">
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Name" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="ItemWithNumber">
+ <xs:complexContent>
+ <xs:extension base="Item">
+ <xs:sequence>
+ <xs:element name="Number" type="xs:nonNegativeInteger"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="ItemsList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" type="Item" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/cos-ct-extends-1-3_0.xml b/test/schemas/cos-ct-extends-1-3_0.xml
new file mode 100644
index 0000000..a0b8a59
--- /dev/null
+++ b/test/schemas/cos-ct-extends-1-3_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+-->
+<foo xmlns="http://FOO" xmlns:foo="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO cos-ct-extends-1-3_0.xsd">
+ <bar.A foo:bar="o"/>
+ <bar.B foo:bar="o"/>
+</foo>
diff --git a/test/schemas/cos-ct-extends-1-3_0.xsd b/test/schemas/cos-ct-extends-1-3_0.xsd
new file mode 100644
index 0000000..7655a8e
--- /dev/null
+++ b/test/schemas/cos-ct-extends-1-3_0.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+ Schema Component Constraint: Derivation Valid (Extension)
+
+ 1.3 If it has an {attribute wildcard}, the complex type definition must
+ also have one, and the base type definition's {attribute wildcard}'s
+ {namespace constraint} must be a subset of the complex type definition's
+ {attribute wildcard}'s {namespace constraint}, as defined by Wildcard Subset (§3.10.6).
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO"
+ elementFormDefault="qualified">
+
+ <element name="foo">
+ <complexType>
+ <sequence>
+ <element name="bar.A" type="foo:type.A" />
+ <element name="bar.B" type="foo:type.B" />
+ </sequence>
+ </complexType>
+ </element>
+
+ <complexType name="type.A">
+ <complexContent>
+ <!-- This is OK, since the complete wildcard
+ is the wildcard of the base type. -->
+ <extension base="foo:base.type.A" />
+ </complexContent>
+ </complexType>
+
+ <complexType name="base.type.A">
+ <anyAttribute namespace="##any" processContents="skip" />
+ </complexType>
+
+ <complexType name="type.B">
+ <complexContent>
+ <extension base="foo:base.type.B">
+ <!-- This is OK, since the complete wildcard is a union
+ of "##any" and "http://FOO" = "##any". Thus the complete
+ wildcard is equal to that one in the base class. -->
+ <anyAttribute namespace="http://FOO" processContents="skip" />
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="base.type.B">
+ <anyAttribute namespace="##any" processContents="skip" />
+ </complexType>
+
+</schema>
diff --git a/test/schemas/cos-st-restricts-1-2-err_0.xml b/test/schemas/cos-st-restricts-1-2-err_0.xml
new file mode 100644
index 0000000..6f60e5b
--- /dev/null
+++ b/test/schemas/cos-st-restricts-1-2-err_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO cos-st-restricts-1-2-err_0.xsd">1 2</foo>
diff --git a/test/schemas/cos-st-restricts-1-2-err_0.xsd b/test/schemas/cos-st-restricts-1-2-err_0.xsd
new file mode 100644
index 0000000..9d3fabf
--- /dev/null
+++ b/test/schemas/cos-st-restricts-1-2-err_0.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO" xmlns:foo="http://FOO">
+
+ <element name="foo" type="foo:type.A"/>
+
+ <simpleType name="type.A">
+ <restriction>
+ <simpleType>
+ <list itemType="integer"/>
+ </simpleType>
+ <length value="3"/>
+ </restriction>
+ </simpleType>
+
+ <!--restriction base="foo:type.base.A">
+
+ </restriction-->
+
+ <simpleType name="type.base.A">
+ <restriction>
+ <simpleType>
+ <list itemType="integer"/>
+ </simpleType>
+ </restriction>
+ </simpleType>
+
+
+
+</schema>
diff --git a/test/schemas/ct-sc-nobase_0.xml b/test/schemas/ct-sc-nobase_0.xml
new file mode 100644
index 0000000..8678410
--- /dev/null
+++ b/test/schemas/ct-sc-nobase_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO ct-sc-nobase_0.xsd"/> \ No newline at end of file
diff --git a/test/schemas/ct-sc-nobase_0.xsd b/test/schemas/ct-sc-nobase_0.xsd
new file mode 100644
index 0000000..a00e941
--- /dev/null
+++ b/test/schemas/ct-sc-nobase_0.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+
+ <xsd:complexType name="base">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:restriction base="foo:base">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/date_0.xml b/test/schemas/date_0.xml
new file mode 100644
index 0000000..6c677ed
--- /dev/null
+++ b/test/schemas/date_0.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<date>
+ <time>01:02:59</time>
+ <time1>01:02:59</time1>
+ <time2>12:59:59.0001</time2>
+ <time2>12:00:00</time2>
+ <date1>1996-05-20</date1>
+ <date1>2002-05-18</date1>
+ <date2>1996-05-19Z</date2>
+ <date2>2002-05-19Z</date2>
+ <date1>2002-05-18Z</date1>
+ <date1>2000-05-18Z</date1>
+ <dt1>2000-05-18T00:00:00</dt1>
+ <dt2>2002-05-19T21:30:00.99</dt2>
+ <dt1>1969-12-31T23:00:01-01:00</dt1>
+ <hol>--01-01</hol>
+ <hol>--07-04</hol>
+ <hol>--12-25</hol>
+ <year1>2002</year1>
+ <yearmon1>2002-05</yearmon1>
+ <mon1>--05Z</mon1>
+ <day1>---31</day1>
+ <monthday1>--02-28Z</monthday1>
+ <monthday1>--12-31-06:00</monthday1>
+ <dt2>2003-04-30T18:00:00-06:00</dt2>
+</date>
diff --git a/test/schemas/date_0.xsd b/test/schemas/date_0.xsd
new file mode 100644
index 0000000..7247394
--- /dev/null
+++ b/test/schemas/date_0.xsd
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Testing date/time data types
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="date">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="time" type="xsd:time"/>
+ <xsd:element name="time1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxInclusive value="23:59:59.9999999"/>
+ <xsd:minInclusive value="00:00:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="time2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxInclusive value="13:50:50"/>
+ <xsd:minInclusive value="12:00:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="date1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxExclusive value="2002-05-19"/>
+ <xsd:minExclusive value="1996-05-19"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="date2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxInclusive value="2002-05-19Z"/>
+ <xsd:minInclusive value="1996-05-19Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="dt1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxExclusive value="2002-01-01T00:00:00Z"/>
+ <xsd:minExclusive value="1970-01-01T00:00:00Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="dt2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxInclusive value="2003-05-01T00:00:00Z"/>
+ <xsd:minInclusive value="1996-05-19T21:30:00Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="hol" type="holidays"/>
+ <xsd:element name="year1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:maxInclusive value="2003Z"/>
+ <xsd:minInclusive value="1996Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="yearmon1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:maxInclusive value="2003-05Z"/>
+ <xsd:minInclusive value="1996-05Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="mon1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:minInclusive value="--01Z"/>
+ <xsd:maxInclusive value="--05Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="day1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:minInclusive value="---28"/>
+ <xsd:maxInclusive value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="monthday1" type="xsd:gMonthDay"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name='holidays'>
+ <xsd:annotation>
+ <xsd:documentation>some US holidays</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base='xsd:gMonthDay'>
+ <xsd:enumeration value='--01-01'>
+ <xsd:annotation>
+ <xsd:documentation>New Year's day</xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+ <xsd:enumeration value='--07-04'>
+ <xsd:annotation>
+ <xsd:documentation>4th of July</xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+ <xsd:enumeration value='--12-25'>
+ <xsd:annotation>
+ <xsd:documentation>Christmas</xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/decimal-1.xml b/test/schemas/decimal-1.xml
new file mode 100644
index 0000000..4568ff1
--- /dev/null
+++ b/test/schemas/decimal-1.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!-- test the values:
+ - BAD
+ + BAD
+ 1.
+ .1
+ 0.
+ .0
+ - 1 BAD
+ + 1 BAD
+ . BAD
+ 000 !
+ -->
+<foo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="decimal-1.xsd">
+ <!-- The good ones. -->
+ <val> 0. </val>
+ <val> .0 </val>
+ <val> .10 </val>
+ <val> 01. </val>
+ <val> 000 </val>
+ <val>123456789012345678</val>
+ <val>-123456789012345678</val>
+ <val>0.123456789012345678</val>
+ <val>-0.123456789012345678</val>
+ <!-- The bad ones. -->
+ <val>.</val>
+ <val>-</val>
+ <val>+</val>
+ <val>*</val>
+ <val>- 1</val>
+ <val>+ 1</val>
+ <val>+ 0</val>
+ <val>- 0</val>
+ <!--ref>0.0</ref-->
+</foo>
diff --git a/test/schemas/decimal-1.xsd b/test/schemas/decimal-1.xsd
new file mode 100644
index 0000000..830ca3e
--- /dev/null
+++ b/test/schemas/decimal-1.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="myDecimal">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="18"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="val" type="myDecimal" maxOccurs="unbounded"/>
+ <xsd:element name="ref" type="myDecimal" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!--xsd:key name="myKey">
+ <xsd:selector xpath="val"/>
+ <xsd:field xpath="."/>
+ </xsd:key>
+
+ <xsd:keyref name="myKeyRef" refer="myKey">
+ <xsd:selector xpath="ref"/>
+ <xsd:field xpath="."/>
+ </xsd:keyref-->
+ </xsd:element>
+
+</xsd:schema>
diff --git a/test/schemas/decimal-1_0.xml b/test/schemas/decimal-1_0.xml
new file mode 100644
index 0000000..7bf3719
--- /dev/null
+++ b/test/schemas/decimal-1_0.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<foo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="decimal-1.xsd">
+ <!-- The good ones. -->
+ <val> 0. </val>
+ <val> .0 </val>
+ <val> .10 </val>
+ <val> 01. </val>
+ <val> 000 </val>
+ <val>123456789012345678</val>
+ <val>-123456789012345678</val>
+ <val>0.123456789012345678</val>
+ <val>-0.123456789012345678</val>
+ <!-- The bad ones. -->
+ <val>.</val>
+ <val>-</val>
+ <val>+</val>
+ <val>*</val>
+ <val>- 1</val>
+ <val>+ 1</val>
+ <val>+ 0</val>
+ <val>- 0</val>
+</foo>
diff --git a/test/schemas/decimal-1_1.xsd b/test/schemas/decimal-1_1.xsd
new file mode 100644
index 0000000..f598c86
--- /dev/null
+++ b/test/schemas/decimal-1_1.xsd
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="myDecimal">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="18"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="val" type="myDecimal" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ </xsd:element>
+
+</xsd:schema>
diff --git a/test/schemas/decimal-2_0.xml b/test/schemas/decimal-2_0.xml
new file mode 100644
index 0000000..166f781
--- /dev/null
+++ b/test/schemas/decimal-2_0.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<foo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="decimal-2.xsd">
+ <!-- The good ones. -->
+ <val>0.1</val>
+ <val>0.001</val>
+ <val>0.0</val>
+ <val>-0.0</val>
+ <val>1</val>
+ <!-- The bad ones. -->
+ <val>-0.1</val>
+ <val>-1</val>
+</foo>
diff --git a/test/schemas/decimal-2_1.xsd b/test/schemas/decimal-2_1.xsd
new file mode 100644
index 0000000..cc71670
--- /dev/null
+++ b/test/schemas/decimal-2_1.xsd
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="myDecimal">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="val" type="myDecimal" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/test/schemas/decimal-3_0.xml b/test/schemas/decimal-3_0.xml
new file mode 100644
index 0000000..fec1ed3
--- /dev/null
+++ b/test/schemas/decimal-3_0.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<foo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="decimal-3.xsd">
+ <!-- The good ones. -->
+ <val>0.12</val>
+ <val>0.0</val>
+ <val>0.02</val>
+ <val>12</val>
+ <val>1.2</val>
+ <!-- The bad ones. -->
+ <val>0.123</val>
+ <val>0.023</val>
+ <val>123</val>
+ <val>12.3</val>
+</foo>
+
diff --git a/test/schemas/decimal-3_1.xsd b/test/schemas/decimal-3_1.xsd
new file mode 100644
index 0000000..23ae8f7
--- /dev/null
+++ b/test/schemas/decimal-3_1.xsd
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:simpleType name="myDecimal">
+ <xsd:restriction base="xsd:decimal">
+ <xsd:totalDigits value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="val" type="myDecimal" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/test/schemas/derivation-ok-extension-err_0.xml b/test/schemas/derivation-ok-extension-err_0.xml
new file mode 100644
index 0000000..ccfa348
--- /dev/null
+++ b/test/schemas/derivation-ok-extension-err_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO derivation-ok-extension-err_0.xsd"
+ barA_1="o" barA_2="o"/>
+
+
+
+
diff --git a/test/schemas/derivation-ok-extension-err_0.xsd b/test/schemas/derivation-ok-extension-err_0.xsd
new file mode 100644
index 0000000..89be581
--- /dev/null
+++ b/test/schemas/derivation-ok-extension-err_0.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://FOO" targetNamespace="http://FOO">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="typeA">
+ <xs:attribute name="barA_1" type="xs:string" use="optional"/>
+ <xs:attribute name="barA_2" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="typeA">
+ <xs:attribute name="barA_1" type="xs:string" use="required"/>
+ </xs:complexType>
+
+</xs:schema>
+
+
diff --git a/test/schemas/derivation-ok-extension_0.xml b/test/schemas/derivation-ok-extension_0.xml
new file mode 100644
index 0000000..0cf871e
--- /dev/null
+++ b/test/schemas/derivation-ok-extension_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO derivation-ok-extension_0.xsd"
+ barA_1="o" barA_2="o"/>
+
+
+
+
diff --git a/test/schemas/derivation-ok-extension_0.xsd b/test/schemas/derivation-ok-extension_0.xsd
new file mode 100644
index 0000000..b99065b
--- /dev/null
+++ b/test/schemas/derivation-ok-extension_0.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://FOO" targetNamespace="http://FOO">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="typeA">
+ <xs:attribute name="barA_2" type="xs:string" use="required"/>
+ <xs:attribute name="barA_1" type="xs:string" use="prohibited"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="typeA">
+ <xs:attribute name="barA_1" type="xs:string" use="required"/>
+ </xs:complexType>
+
+</xs:schema>
+
+
diff --git a/test/schemas/derivation-ok-restriction-2-1-1_0.xml b/test/schemas/derivation-ok-restriction-2-1-1_0.xml
new file mode 100644
index 0000000..a92fb0c
--- /dev/null
+++ b/test/schemas/derivation-ok-restriction-2-1-1_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO derivation-ok-restriction-2-1-1_0.xsd"/>
+
+
+
+
diff --git a/test/schemas/derivation-ok-restriction-2-1-1_0.xsd b/test/schemas/derivation-ok-restriction-2-1-1_0.xsd
new file mode 100644
index 0000000..e91fe43
--- /dev/null
+++ b/test/schemas/derivation-ok-restriction-2-1-1_0.xsd
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://FOO" targetNamespace="http://FOO">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="typeA">
+ <xs:attribute name="barA_1" type="xs:string" use="optional"/>
+ <!-- OK -->
+ <xs:attribute name="barA_2" type="xs:string" use="required"/>
+ <!-- OK -->
+ <xs:attribute name="barA_3" type="xs:string" use="prohibited"/>
+ <!-- OK -->
+
+ <xs:attribute name="barB_1" type="xs:string" use="optional"/>
+ <!-- 2.1.1 inconsistent ( OR 3 ) -->
+ <xs:attribute name="barB_2" type="xs:string" use="required"/>
+ <!-- OK -->
+ <xs:attribute name="barB_3" type="xs:string" use="prohibited"/>
+ <!-- 3 -->
+
+ <xs:attribute name="barC_1" type="xs:string" use="optional"/>
+ <!-- 2.2 no match in base -->
+ <xs:attribute name="barC_2" type="xs:string" use="required"/>
+ <!-- 2.2 no match in base -->
+ <xs:attribute name="barC_3" type="xs:string" use="prohibited"/>
+ <!-- OK -->
+
+ <xs:attribute name="barD_1" type="xs:string" use="optional"/>
+ <!-- 2.2 no match in base -->
+ <xs:attribute name="barD_2" type="xs:string" use="required"/>
+ <!-- 2.2 no match in base -->
+ <xs:attribute name="barD_3" type="xs:string" use="prohibited"/>
+ <!-- OK -->
+
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="typeA">
+ <xs:attribute name="barA_1" type="xs:string" use="optional"/>
+ <xs:attribute name="barA_2" type="xs:string" use="optional"/>
+ <xs:attribute name="barA_3" type="xs:string" use="optional"/>
+ <xs:attribute name="barB_1" type="xs:string" use="required"/>
+ <xs:attribute name="barB_2" type="xs:string" use="required"/>
+ <xs:attribute name="barB_3" type="xs:string" use="required"/>
+ <xs:attribute name="barC_1" type="xs:string" use="prohibited"/>
+ <xs:attribute name="barC_2" type="xs:string" use="prohibited"/>
+ <xs:attribute name="barC_3" type="xs:string" use="prohibited"/>
+ </xs:complexType>
+
+</xs:schema>
+
+
diff --git a/test/schemas/derivation-ok-restriction-4-1-err_0.xml b/test/schemas/derivation-ok-restriction-4-1-err_0.xml
new file mode 100644
index 0000000..6021eb9
--- /dev/null
+++ b/test/schemas/derivation-ok-restriction-4-1-err_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://FOO" xmlns:foo="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO derivation-ok-restriction-4-1-err_0.xsd">
+ <bar.A />
+ <bar.B />
+ <bar.C />
+</foo>
diff --git a/test/schemas/derivation-ok-restriction-4-1-err_0.xsd b/test/schemas/derivation-ok-restriction-4-1-err_0.xsd
new file mode 100644
index 0000000..c7400ac
--- /dev/null
+++ b/test/schemas/derivation-ok-restriction-4-1-err_0.xsd
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+ Schema Component Constraint: Derivation Valid (Restriction, Complex)
+
+ 4 If there is an {attribute wildcard}, all of the following must be true:
+
+ 4.1 The {base type definition} must also have one.
+
+ 4.2 The complex type definition's {attribute wildcard}'s {namespace constraint}
+ must be a subset of the {base type definition}'s {attribute wildcard}'s {namespace
+ constraint}, as defined by Wildcard Subset (§3.10.6).
+
+ 4.3 Unless the {base type definition} is the ·ur-type definition·, the complex type
+ definition's {attribute wildcard}'s {process contents} must be identical to or stronger
+ than the {base type definition}'s {attribute wildcard}'s {process contents},
+ where strict is stronger than lax is stronger than skip.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO"
+ >
+
+ <element name="foo">
+ <complexType>
+ <sequence>
+ <element name="bar.A" type="foo:type.A" />
+ <element name="bar.B" type="foo:type.B" />
+ <element name="bar.C" type="foo:type.C" />
+ </sequence>
+ </complexType>
+ </element>
+
+ <complexType name="type.A">
+ <complexContent>
+ <restriction base="foo:base.type.A">
+ <anyAttribute namespace="##any" processContents="skip" />
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="base.type.A">
+ <attribute name="bar" type="string"/>
+ </complexType>
+
+ <complexType name="type.B">
+ <complexContent>
+ <restriction base="foo:base.type.B">
+ <anyAttribute namespace="##any" processContents="skip" />
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="base.type.B">
+ <anyAttribute namespace="http://FOO" processContents="skip" />
+ </complexType>
+
+ <complexType name="type.C">
+ <complexContent>
+ <restriction base="foo:base.type.C">
+ <anyAttribute namespace="##any" processContents="skip" />
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="base.type.C">
+ <anyAttribute namespace="##any" processContents="lax" />
+ </complexType>
+
+</schema>
diff --git a/test/schemas/derivation-restriction-anyAttr_0.xml b/test/schemas/derivation-restriction-anyAttr_0.xml
new file mode 100644
index 0000000..66e7d3f
--- /dev/null
+++ b/test/schemas/derivation-restriction-anyAttr_0.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo
+ xmlns:f="http://FOO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:bar="http://BAR"
+ xsi:noNamespaceSchemaLocation="file:///c:/dev/libxml2/patches/2004-05-17/derivation-restriction-anyAttr_0.xsd"
+ >
+ <bar barA="ooo" />
+</foo>
+
+
+
+
diff --git a/test/schemas/derivation-restriction-anyAttr_0.xsd b/test/schemas/derivation-restriction-anyAttr_0.xsd
new file mode 100644
index 0000000..f72c316
--- /dev/null
+++ b/test/schemas/derivation-restriction-anyAttr_0.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="unqualified">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bar" type="typeA"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:attributeGroup name="attrGrA">
+ <xs:anyAttribute namespace="##targetNamespace"/>
+ </xs:attributeGroup>
+
+ <xs:complexType name="typeA">
+ <xs:attributeGroup ref="attrGrA" />
+ <xs:anyAttribute namespace="##targetNamespace" processContents="lax"/>
+ </xs:complexType>
+
+</xs:schema>
+
+
diff --git a/test/schemas/derivation-restriction-anyType.xml b/test/schemas/derivation-restriction-anyType.xml
new file mode 100644
index 0000000..c86c50a
--- /dev/null
+++ b/test/schemas/derivation-restriction-anyType.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO file:///c:/dev/libxml2/patches/2004-05-17/derivation-restriction-anyType.xsd"
+ barA_2="xxx"/>
+
+
+
+
diff --git a/test/schemas/derivation-restriction-anyType.xsd b/test/schemas/derivation-restriction-anyType.xsd
new file mode 100644
index 0000000..ec217d2
--- /dev/null
+++ b/test/schemas/derivation-restriction-anyType.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://FOO" targetNamespace="http://FOO">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:anyType">
+ <xs:attribute name="barA_1" type="xs:string" use="optional"/>
+ <!-- OK -->
+ <xs:attribute name="barA_2" type="xs:string" use="required"/>
+ <!-- OK -->
+ <xs:attribute name="barA_3" type="xs:string" use="prohibited"/>
+ <!-- OK -->
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
+
+
diff --git a/test/schemas/deter0_0.xml b/test/schemas/deter0_0.xml
new file mode 100644
index 0000000..0ea1a41
--- /dev/null
+++ b/test/schemas/deter0_0.xml
@@ -0,0 +1,5 @@
+<book>
+ <odd-page>first page</odd-page>
+ <even-page>second page</even-page>
+ <odd-page>third page</odd-page>
+</book>
diff --git a/test/schemas/deter0_0.xsd b/test/schemas/deter0_0.xsd
new file mode 100644
index 0000000..8b5da69
--- /dev/null
+++ b/test/schemas/deter0_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="odd-page" type="xs:string"/>
+ <xs:element name="even-page" type="xs:string"/>
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="odd-page"/>
+ <xs:element ref="even-page"/>
+ </xs:sequence>
+ <xs:element ref="odd-page" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/dur_0.xml b/test/schemas/dur_0.xml
new file mode 100644
index 0000000..be84943
--- /dev/null
+++ b/test/schemas/dur_0.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<duration>
+ <second1>PT0.9S</second1>
+ <second2>PT0.1S</second2>
+ <second2>PT0.999999S</second2>
+ <month1>P0Y27D</month1>
+ <month1>P27DT23H59M59S</month1>
+ <month2>P0Y</month2>
+ <year1>P367DT23H59M59S</year1>
+ <year1>P13M</year1>
+ <year2>P12M</year2>
+ <month3>PT86399S</month3>
+</duration>
diff --git a/test/schemas/dur_0.xsd b/test/schemas/dur_0.xsd
new file mode 100644
index 0000000..374c038
--- /dev/null
+++ b/test/schemas/dur_0.xsd
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Testing duration data types
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="duration">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="second1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="PT1S"/>
+ <xsd:minExclusive value="PT0.1S"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="second2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="PT1S"/>
+ <xsd:minInclusive value="PT0.1S"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="month1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="P1M"/>
+ <xsd:minExclusive value="P0M"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="month2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="P1M"/>
+ <xsd:minInclusive value="P0M"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="month3" type="MSD"/>
+ <xsd:element name="year1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="P2Y"/>
+ <xsd:minExclusive value="P1Y"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="year2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="P2Y"/>
+ <xsd:minInclusive value="P1Y"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name="MSD">
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="PT24H"/>
+ <xsd:minExclusive value="-PT24H"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/elem0_0.xml b/test/schemas/elem0_0.xml
new file mode 100644
index 0000000..f741c58
--- /dev/null
+++ b/test/schemas/elem0_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<doc/>
+
diff --git a/test/schemas/elem0_0.xsd b/test/schemas/elem0_0.xsd
new file mode 100644
index 0000000..2c5bf5f
--- /dev/null
+++ b/test/schemas/elem0_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation>
+ Testing min and max occurance attributes on element
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name='a' minOccurs='0' maxOccurs='3'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/element-err_0.xml b/test/schemas/element-err_0.xml
new file mode 100644
index 0000000..4f43fd9
--- /dev/null
+++ b/test/schemas/element-err_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO element-err_0.xsd"/> \ No newline at end of file
diff --git a/test/schemas/element-err_0.xsd b/test/schemas/element-err_0.xsd
new file mode 100644
index 0000000..92604c8
--- /dev/null
+++ b/test/schemas/element-err_0.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:goo="http://GOO">
+
+ <xsd:element name="bar" type="xsd:string"/>
+ <xsd:element type="xsd:string"/>
+ <xsd:element name="foo"
+ ref="foo:bar" minOccurs="3" maxOccurs="2"
+ abstract="true" block="flute"
+ form="qualified" id="b12" nillable="true"
+ substitutionGroup="foo:bar"
+ default="Jimi" fixed="Hendrix" final="fantasy">
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="foo:bar" name="myomy" minOccurs="3"
+ maxOccurs="2" abstract="true" block="flute"
+ form="qualified" id="b13" nillable="true"
+ substitutionGroup="foo:bar" type="xsd:string"
+ default="Jimi" fixed="Hendrix" final="fantasy">
+ <xsd:complexType/>
+ <xsd:simpleType/>
+ </xsd:element>
+ <xsd:element name="myomy" maxOccurs="0"
+ abstract="true" block="flute"
+ form="qualified" id="b14" nillable="true"
+ substitutionGroup="foo:bar" type="xsd:string"
+ default="Jimi" fixed="Hendrix" final="fantasy">
+ <xsd:complexType/>
+ <xsd:simpleType/>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ </xsd:element>
+
+</xsd:schema>
diff --git a/test/schemas/element-minmax-err_0.xml b/test/schemas/element-minmax-err_0.xml
new file mode 100644
index 0000000..62c5ec1
--- /dev/null
+++ b/test/schemas/element-minmax-err_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="element-minmax-err_0.xsd">
+ <bar/>
+</foo> \ No newline at end of file
diff --git a/test/schemas/element-minmax-err_0.xsd b/test/schemas/element-minmax-err_0.xsd
new file mode 100644
index 0000000..3384e7c
--- /dev/null
+++ b/test/schemas/element-minmax-err_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="bar" minOccurs="1" maxOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/empty-value_0.xml b/test/schemas/empty-value_0.xml
new file mode 100644
index 0000000..e7058e2
--- /dev/null
+++ b/test/schemas/empty-value_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<element1/>
diff --git a/test/schemas/empty-value_1.xml b/test/schemas/empty-value_1.xml
new file mode 100644
index 0000000..674ba86
--- /dev/null
+++ b/test/schemas/empty-value_1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<element2 att="test"/>
diff --git a/test/schemas/empty-value_1.xsd b/test/schemas/empty-value_1.xsd
new file mode 100644
index 0000000..5e17d5f
--- /dev/null
+++ b/test/schemas/empty-value_1.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xs:simpleType name="myDouble">
+ <xs:union memberTypes="xs:double">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\s*(N/A)?\s*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:element name="element1" type="myDouble"/>
+ <xs:element name="element2">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="myDouble">
+ <xs:attribute name="att" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/empty_0.xml b/test/schemas/empty_0.xml
new file mode 100644
index 0000000..e9906b7
--- /dev/null
+++ b/test/schemas/empty_0.xml
@@ -0,0 +1 @@
+<internationalPrice currency="EUR" value="423.46"/>
diff --git a/test/schemas/empty_0.xsd b/test/schemas/empty_0.xsd
new file mode 100644
index 0000000..76e5f45
--- /dev/null
+++ b/test/schemas/empty_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="internationalPrice">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="xsd:anyType">
+ <xsd:attribute name="currency" type="xsd:string"/>
+ <xsd:attribute name="value" type="xsd:decimal"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/empty_1.xsd b/test/schemas/empty_1.xsd
new file mode 100644
index 0000000..2c81c09
--- /dev/null
+++ b/test/schemas/empty_1.xsd
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="internationalPrice">
+ <xsd:complexType>
+ <xsd:attribute name="currency" type="xsd:string"/>
+ <xsd:attribute name="value" type="xsd:decimal"/>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/extension0_0.xml b/test/schemas/extension0_0.xml
new file mode 100644
index 0000000..60dd348
--- /dev/null
+++ b/test/schemas/extension0_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<addressee>
+ <forename>Albert</forename>
+ <forename>Arnold</forename>
+ <surname>Gore</surname>
+ <generation>Jr</generation>
+</addressee>
diff --git a/test/schemas/extension0_0.xsd b/test/schemas/extension0_0.xsd
new file mode 100644
index 0000000..d89751a
--- /dev/null
+++ b/test/schemas/extension0_0.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="personName">
+ <xs:sequence>
+ <xs:element name="title" minOccurs="0"/>
+ <xs:element name="forename" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="surname"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="extendedName">
+ <xs:complexContent>
+ <xs:extension base="personName">
+ <xs:sequence>
+ <xs:element name="generation" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="addressee" type="extendedName"/>
+</xs:schema>
diff --git a/test/schemas/extension1_0.xml b/test/schemas/extension1_0.xml
new file mode 100644
index 0000000..5c3a0c9
--- /dev/null
+++ b/test/schemas/extension1_0.xml
@@ -0,0 +1 @@
+<title lang="fr">salut</title>
diff --git a/test/schemas/extension1_0.xsd b/test/schemas/extension1_0.xsd
new file mode 100644
index 0000000..0a11e14
--- /dev/null
+++ b/test/schemas/extension1_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute name="lang" type="xs:language"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/extension1_1.xml b/test/schemas/extension1_1.xml
new file mode 100644
index 0000000..7780cf6
--- /dev/null
+++ b/test/schemas/extension1_1.xml
@@ -0,0 +1 @@
+<title langue="fr">salut</title>
diff --git a/test/schemas/extension1_2.xml b/test/schemas/extension1_2.xml
new file mode 100644
index 0000000..3d65bb0
--- /dev/null
+++ b/test/schemas/extension1_2.xml
@@ -0,0 +1 @@
+<title lang="fr"><salut/></title>
diff --git a/test/schemas/extension2_0.xml b/test/schemas/extension2_0.xml
new file mode 100644
index 0000000..202c988
--- /dev/null
+++ b/test/schemas/extension2_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<foo xmlns="http://myns"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://myns extension2_1.xsd"/>
diff --git a/test/schemas/extension2_1.xsd b/test/schemas/extension2_1.xsd
new file mode 100644
index 0000000..0fa88af
--- /dev/null
+++ b/test/schemas/extension2_1.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://myns"
+ targetNamespace="http://myns"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ xml:lang="en">
+
+ <xs:complexType name="dataInlineType">
+ <xs:complexContent>
+ <xs:extension base="xs:anyType"/>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="foo" type="dataInlineType"/>
+
+ </xs:schema>
diff --git a/test/schemas/facet-unionST-err1_0.xml b/test/schemas/facet-unionST-err1_0.xml
new file mode 100644
index 0000000..b47df61
--- /dev/null
+++ b/test/schemas/facet-unionST-err1_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO facet-unionST-err1_0.xsd">tiny</foo>
+
diff --git a/test/schemas/facet-unionST-err1_0.xsd b/test/schemas/facet-unionST-err1_0.xsd
new file mode 100644
index 0000000..476668b
--- /dev/null
+++ b/test/schemas/facet-unionST-err1_0.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO" xmlns:foo="http://FOO">
+
+ <xsd:element name="foo" type="foo:fooType.B"/>
+
+ <xsd:simpleType name="fooType.B">
+ <xsd:restriction base="foo:fooType.A">
+ <xsd:enumeration value="medium"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="fooType.A">
+ <xsd:union>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="small"/>
+ <xsd:enumeration value="medium"/>
+ <xsd:enumeration value="large"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
+
+
+</xsd:schema>
diff --git a/test/schemas/facet-whiteSpace_0.xml b/test/schemas/facet-whiteSpace_0.xml
new file mode 100644
index 0000000..dba26ca
--- /dev/null
+++ b/test/schemas/facet-whiteSpace_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO facet-whiteSpace_0.xsd">hmmm
+
+ f f ff f
+ </foo> \ No newline at end of file
diff --git a/test/schemas/facet-whiteSpace_0.xsd b/test/schemas/facet-whiteSpace_0.xsd
new file mode 100644
index 0000000..83ef142
--- /dev/null
+++ b/test/schemas/facet-whiteSpace_0.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO" xmlns="http://FOO">
+
+ <xsd:element name="foo">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="replace"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/group0_0.xml b/test/schemas/group0_0.xml
new file mode 100644
index 0000000..bf58ba6
--- /dev/null
+++ b/test/schemas/group0_0.xml
@@ -0,0 +1,3 @@
+<author>
+ <name>Foo Bar</name>
+</author>
diff --git a/test/schemas/group0_0.xsd b/test/schemas/group0_0.xsd
new file mode 100644
index 0000000..7dfa393
--- /dev/null
+++ b/test/schemas/group0_0.xsd
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:group name="name">
+ <xs:choice>
+ <xs:element name="name" type="xs:string"/>
+ <xs:sequence>
+ <xs:element name="first-name" type="xs:string"/>
+ <xs:element name="middle-name" type="xs:string" minOccurs="0"/>
+ <xs:element name="last-name" type="xs:string"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:group ref="name"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/hexbinary_0.xml b/test/schemas/hexbinary_0.xml
new file mode 100644
index 0000000..9513445
--- /dev/null
+++ b/test/schemas/hexbinary_0.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsd_hexBinary>
+ <hex>00</hex>
+ <hex>0123456789ABCDEF</hex>
+ <hex>abcdef0123456789</hex>
+ <hex>0123456789abcdef</hex>
+ <hex>0123456789ABCDEF</hex>
+ <hex>0123456789abcdef0123456789ABCDEF</hex>
+ <hex>0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF</hex>
+ <hex>01234567899876543210</hex>
+ <hex>00112233445566778899aAbBcCdDeEfF</hex>
+ <hex>A0B1C2D3E4F5</hex>
+ <!-- minLength and maxLength -->
+ <hex2>00</hex2>
+ <hex2>0000000000000000</hex2>
+ <hex2>1122334455667788</hex2>
+ <!-- length -->
+ <hex3>abcd</hex3>
+ <hex3>0ed0</hex3>
+</xsd_hexBinary>
diff --git a/test/schemas/hexbinary_0.xsd b/test/schemas/hexbinary_0.xsd
new file mode 100644
index 0000000..60a6bec
--- /dev/null
+++ b/test/schemas/hexbinary_0.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Testing hexBinary data types
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="xsd_hexBinary">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="hex" type="xsd:hexBinary"/>
+ <xsd:element name="hex2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:maxLength value="8"/>
+ <xsd:minLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="hex3">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/hexbinary_1.xml b/test/schemas/hexbinary_1.xml
new file mode 100644
index 0000000..0f34854
--- /dev/null
+++ b/test/schemas/hexbinary_1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- all (except 2 first) should fail to validate -->
+<xsd_hexBinary>
+ <hex></hex>
+ <hex/>
+ <hex>0</hex>
+ <hex>0123456789ABCDEFGH</hex>
+ <hex>+abcdef0123456789</hex>
+ <hex>-0123456789abcdef</hex>
+ <!-- minLength and maxLength -->
+ <hex2>112233445566778899</hex2>
+ <!-- length -->
+ <hex3>ab</hex3>
+ <hex3>00fedc</hex3>
+</xsd_hexBinary>
diff --git a/test/schemas/idc-keyref-err1_0.xml b/test/schemas/idc-keyref-err1_0.xml
new file mode 100644
index 0000000..64a1d0b
--- /dev/null
+++ b/test/schemas/idc-keyref-err1_0.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<Foo
+ xmlns="urn:test:foo"
+ xmlns:foo="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo idc-keyref_1.xsd">
+
+ <Def>
+ <Link foo:linkKey="L4"/>
+ </Def>
+
+ <Ref foo:linkRef="L4"/>
+
+</Foo> \ No newline at end of file
diff --git a/test/schemas/idc-keyref-err1_1.xsd b/test/schemas/idc-keyref-err1_1.xsd
new file mode 100644
index 0000000..43c769f
--- /dev/null
+++ b/test/schemas/idc-keyref-err1_1.xsd
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<xs:schema
+ targetNamespace="urn:test:foo"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:foo="urn:test:foo"
+ elementFormDefault="qualified"
+ attributeFormDefault="qualified">
+
+ <xs:element name="Link">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="linkKey" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+
+ <!-- -->
+ <xs:element name="Foo">
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element name="Def">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="foo:Link"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Ref">
+ <xs:complexType>
+ <xs:attribute name="linkRef" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:key name="LinkKey">
+ <xs:selector xpath=".//foo:Link | .//foo:Link"/>
+ <xs:field xpath="@foo:linkKey"/>
+ </xs:key>
+
+ <xs:keyref name="LinkKeyRef" refer="foo:LinkKey">
+ <xs:selector xpath=".//foo:Ref"/>
+ <xs:field xpath="@foo:linkRef"/>
+ </xs:keyref>
+ </xs:element>
+
+</xs:schema> \ No newline at end of file
diff --git a/test/schemas/import-455953.xsd b/test/schemas/import-455953.xsd
new file mode 100644
index 0000000..4613d8f
--- /dev/null
+++ b/test/schemas/import-455953.xsd
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xs:schema targetNamespace="http://www.tempuri.org/ImportedSchema" elementFormDefault="qualified" xmlns:tns="http://www.tempuri.org/ImportedSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="AnotherType">
+ <xs:sequence>
+ <xs:element name="B">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="MyB" type="xs:string" />
+ </xs:sequence>
+ <xs:attribute name="BID" type="xs:int"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="AnotherElement" type="tns:AnotherType">
+ <xs:key name="AnotherKey">
+ <xs:selector xpath="tns:B"/>
+ <xs:field xpath="@BID"/>
+ </xs:key>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/import-bad-1_0.imp b/test/schemas/import-bad-1_0.imp
new file mode 100755
index 0000000..d70c012
--- /dev/null
+++ b/test/schemas/import-bad-1_0.imp
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<xsd:lalala
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://BAR">
+</xsd:lalala> \ No newline at end of file
diff --git a/test/schemas/import0_0.imp b/test/schemas/import0_0.imp
new file mode 100644
index 0000000..ce446d8
--- /dev/null
+++ b/test/schemas/import0_0.imp
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://example.net/xmlschema2"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://example.net/xmlschema2"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+<xs:simpleType name="tfoo">
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:maxLength value="2"/>
+ </xs:restriction>
+</xs:simpleType>
+
+</xs:schema>
diff --git a/test/schemas/import0_0.xml b/test/schemas/import0_0.xml
new file mode 100644
index 0000000..5ba7e3f
--- /dev/null
+++ b/test/schemas/import0_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<bar xmlns="http://example.net/xmlschema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://example.net/xmlschema testImportTypes.xsd">
+ <foo1>
+ xy
+ </foo1>
+</bar>
diff --git a/test/schemas/import0_0.xsd b/test/schemas/import0_0.xsd
new file mode 100644
index 0000000..e973d64
--- /dev/null
+++ b/test/schemas/import0_0.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://example.net/xmlschema"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:ns1="http://example.net/xmlschema"
+ xmlns:ns2="http://example.net/xmlschema2"
+ xmlns="http://example.net/xmlschema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+<xs:import namespace="http://example.net/xmlschema2"
+ schemaLocation="import0_0.imp"/>
+
+<xs:element name="bar">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="foo1" type="ns2:tfoo"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+
+</xs:schema>
diff --git a/test/schemas/import1_0.imp b/test/schemas/import1_0.imp
new file mode 100644
index 0000000..b7fd2ec
--- /dev/null
+++ b/test/schemas/import1_0.imp
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://BAR">
+
+ <xsd:element name="bar.A"/>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/import1_0.xml b/test/schemas/import1_0.xml
new file mode 100644
index 0000000..7046521
--- /dev/null
+++ b/test/schemas/import1_0.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- This one tests the document access strategy for <import> -->
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO import1_0.xsd">
+ <foo:bar/>
+ <bar:bar.A/>
+ <bar:bar.B/>
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/import1_0.xsd b/test/schemas/import1_0.xsd
new file mode 100644
index 0000000..309139c
--- /dev/null
+++ b/test/schemas/import1_0.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!-- This one tests the document access strategy for <import> -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ elementFormDefault="qualified">
+ <xsd:import namespace="http://BAR" />
+
+ <!-- This document does not exist. -->
+ <xsd:import namespace="http://BAR" schemaLocation="import1_0bc.imp" />
+ <!-- This document is ok. -->
+ <xsd:import namespace="http://BAR" schemaLocation="import1_0.imp" />
+ <!-- This document will be skipped, since a schema for the namespace
+ "http://BAR" was already imported. -->
+ <xsd:import namespace="http://BAR" schemaLocation="import1_0b.imp" />
+
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="bar"/>
+ <xsd:element ref="bar:bar.A"/>
+ <!-- The reference cannot be resolved since
+ "import1_0b.imp" was skipped -->
+ <xsd:element ref="bar:bar.B"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/import1_0b.imp b/test/schemas/import1_0b.imp
new file mode 100644
index 0000000..70bddd7
--- /dev/null
+++ b/test/schemas/import1_0b.imp
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://BAR">
+
+ <xsd:element name="bar.B"/>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/import2_0.imp b/test/schemas/import2_0.imp
new file mode 100644
index 0000000..298e6b1
--- /dev/null
+++ b/test/schemas/import2_0.imp
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ elementFormDefault="qualified">
+
+ <!-- We need to import the namespace for the schema to be valid. -->
+ <xsd:import namespace="http://BAR"/>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="foo.B" type="bar:fooType"/>
+ <xsd:element ref="bar:bar"/>
+ </xsd:sequence>
+ <xsd:attribute name="foo.attr"/>
+
+ </xsd:complexType>
+ </xsd:element>
+
+
+
+</xsd:schema>
diff --git a/test/schemas/import2_0.xml b/test/schemas/import2_0.xml
new file mode 100644
index 0000000..67723d4
--- /dev/null
+++ b/test/schemas/import2_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo:foo xmlns:foo="http://FOO"
+ xmlns:bar="http://BAR"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://BAR import2_0.xsd" foo.attr="oo">
+ <foo:foo.B/>
+ <bar:bar/>
+</foo:foo>
diff --git a/test/schemas/import2_0.xsd b/test/schemas/import2_0.xsd
new file mode 100644
index 0000000..6922bec
--- /dev/null
+++ b/test/schemas/import2_0.xsd
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:foo="http://FOO"
+ targetNamespace="http://BAR"
+ elementFormDefault="qualified">
+
+ <xsd:import namespace="http://FOO" schemaLocation="import2_0.imp"/>
+
+ <xsd:simpleType name="fooType">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="10"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="bar">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="foo:foo" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+
+</xsd:schema>
diff --git a/test/schemas/include1_0.inc b/test/schemas/include1_0.inc
new file mode 100644
index 0000000..1745abe
--- /dev/null
+++ b/test/schemas/include1_0.inc
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
+
+ <xsd:simpleType name="barType">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="10" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:attribute name="bar" type="barType" fixed="o"/>
+
+ <xsd:element name="bar.B" type="xsd:anyURI" block="#all" nillable="true" final="restriction extension"/>
+
+ <xsd:element name="bar">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="bar.A" block="restriction" form="qualified" nillable="true" />
+ <xsd:element ref="bar.B"/>
+ </xsd:sequence>
+
+ <xsd:attribute ref="bar" xml:lang="DE">
+ <xsd:annotation/>
+ </xsd:attribute>
+ <xsd:attribute name="uri" type="xsd:token" />
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/include1_0.xml b/test/schemas/include1_0.xml
new file mode 100644
index 0000000..8ffee0e
--- /dev/null
+++ b/test/schemas/include1_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<foo:foo xmlns:foo="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO include1_0.xsd" foo:req="oo">
+ <foo:bar foo:bar="o" uri="asd"><foo:bar.A/><foo:bar.B>anyURI</foo:bar.B></foo:bar>
+ <boo/>
+
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/include1_0.xsd b/test/schemas/include1_0.xsd
new file mode 100644
index 0000000..5e6d837
--- /dev/null
+++ b/test/schemas/include1_0.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO" version="">
+ <xsd:include schemaLocation="include1_0.inc" />
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="foo:bar"/>
+ <xsd:element name="boo" type="xsd:string"/>
+ </xsd:sequence>
+ <xsd:attribute name="req" use="required" form="qualified"/>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/include2_0.inc b/test/schemas/include2_0.inc
new file mode 100644
index 0000000..3104cd5
--- /dev/null
+++ b/test/schemas/include2_0.inc
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="qualified"
+ blockDefault="extension" finalDefault="extension">
+
+ <xsd:element name="bar">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="bar.B" type="xsd:anyType"/>
+ </xsd:sequence>
+ <xsd:attribute name="bar"/>
+ </xsd:complexType>
+
+ </xsd:element>
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/include2_0.xml b/test/schemas/include2_0.xml
new file mode 100644
index 0000000..b460b93
--- /dev/null
+++ b/test/schemas/include2_0.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO include2_0.xsd">
+ <foo:bar foo:bar="ooo">
+ <foo:bar.B foo:bar="ooo"/>
+ </foo:bar>
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/include2_0.xsd b/test/schemas/include2_0.xsd
new file mode 100644
index 0000000..5f63102
--- /dev/null
+++ b/test/schemas/include2_0.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+ <xsd:include schemaLocation="include2_0.inc" />
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="foo:bar"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/include3_0.inc b/test/schemas/include3_0.inc
new file mode 100644
index 0000000..c0436e8
--- /dev/null
+++ b/test/schemas/include3_0.inc
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="bar" />
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/include3_0.xml b/test/schemas/include3_0.xml
new file mode 100644
index 0000000..e880cc5
--- /dev/null
+++ b/test/schemas/include3_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo:foo
+ xmlns:foo="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO include3_0.xsd">
+ <foo:bar />
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/include3_0.xsd b/test/schemas/include3_0.xsd
new file mode 100644
index 0000000..5319486
--- /dev/null
+++ b/test/schemas/include3_0.xsd
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO"
+ xmlns:foo="http://FOO">
+ <xsd:include schemaLocation="include3_0.inc" />
+
+ <xsd:element name="bar"/>
+ <xsd:element name="foo"/>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/item_0.xml b/test/schemas/item_0.xml
new file mode 100644
index 0000000..19d0790
--- /dev/null
+++ b/test/schemas/item_0.xml
@@ -0,0 +1,6 @@
+<Item partNum="926-AA" shipBy="air">
+<productName>foo</productName>
+<quantity>2</quantity>
+<USPrice>1.0</USPrice>
+<comment>No comment !</comment>
+</Item>
diff --git a/test/schemas/item_0.xsd b/test/schemas/item_0.xsd
new file mode 100644
index 0000000..315e06e
--- /dev/null
+++ b/test/schemas/item_0.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="comment" type="xsd:string"/>
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="Item">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ <!-- add weightKg and shipBy attributes -->
+ <xsd:attribute name="weightKg" type="xsd:decimal"/>
+ <xsd:attribute name="shipBy">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="air"/>
+ <xsd:enumeration value="land"/>
+ <xsd:enumeration value="any"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/item_1.xsd b/test/schemas/item_1.xsd
new file mode 100644
index 0000000..3cf966e
--- /dev/null
+++ b/test/schemas/item_1.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="comment" type="xsd:string"/>
+<!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="Item">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+<!-- attributeGroup replaces individual declarations -->
+ <xsd:attributeGroup ref="ItemDelivery"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:attributeGroup name="ItemDelivery">
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ <xsd:attribute name="weightKg" type="xsd:decimal"/>
+ <xsd:attribute name="shipBy">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="air"/>
+ <xsd:enumeration value="land"/>
+ <xsd:enumeration value="any"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+</xsd:schema>
diff --git a/test/schemas/length1_0.xml b/test/schemas/length1_0.xml
new file mode 100644
index 0000000..0a8cd3f
--- /dev/null
+++ b/test/schemas/length1_0.xml
@@ -0,0 +1 @@
+<width unit="cm">25</width>
diff --git a/test/schemas/length1_0.xsd b/test/schemas/length1_0.xsd
new file mode 100644
index 0000000..8a1ba0f
--- /dev/null
+++ b/test/schemas/length1_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="length1">
+ <xs:simpleContent>
+ <xs:extension base="xs:nonNegativeInteger">
+ <xs:attribute name="unit" type="xs:NMTOKEN"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="width" type="length1"/>
+</xs:schema>
diff --git a/test/schemas/length2_0.xml b/test/schemas/length2_0.xml
new file mode 100644
index 0000000..5c851da
--- /dev/null
+++ b/test/schemas/length2_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<depth>
+ <size>25</size>
+ <unit>cm</unit>
+</depth>
diff --git a/test/schemas/length2_0.xsd b/test/schemas/length2_0.xsd
new file mode 100644
index 0000000..76d73c0
--- /dev/null
+++ b/test/schemas/length2_0.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="length2">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:element name="size" type="xs:nonNegativeInteger"/>
+ <xs:element name="unit" type="xs:NMTOKEN"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="depth" type="length2"/>
+</xs:schema>
diff --git a/test/schemas/length3_0.xml b/test/schemas/length3_0.xml
new file mode 100644
index 0000000..5c851da
--- /dev/null
+++ b/test/schemas/length3_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<depth>
+ <size>25</size>
+ <unit>cm</unit>
+</depth>
diff --git a/test/schemas/length3_0.xsd b/test/schemas/length3_0.xsd
new file mode 100644
index 0000000..b97e688
--- /dev/null
+++ b/test/schemas/length3_0.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="length3">
+ <xs:sequence>
+ <xs:element name="size" type="xs:non-positive-integer"/>
+ <xs:element name="unit" type="xs:NMTOKEN"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="depth" type="length3"/>
+</xs:schema>
diff --git a/test/schemas/list0_0.xml b/test/schemas/list0_0.xml
new file mode 100644
index 0000000..a58fe8b
--- /dev/null
+++ b/test/schemas/list0_0.xml
@@ -0,0 +1,6 @@
+<test>
+ <string>hello world</string>
+ <string>hello world</string>
+ <string>hello world</string>
+ <string>hello world</string>
+</test>
diff --git a/test/schemas/list0_0.xsd b/test/schemas/list0_0.xsd
new file mode 100644
index 0000000..33d7d66
--- /dev/null
+++ b/test/schemas/list0_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="test">
+ <xs:annotation>
+ <xs:documentation>Comment describing your root element</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="string" type="xs:string" minOccurs="2" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/list0_1.xml b/test/schemas/list0_1.xml
new file mode 100644
index 0000000..8878e5d
--- /dev/null
+++ b/test/schemas/list0_1.xml
@@ -0,0 +1,3 @@
+<test>
+ <string>hello world</string>
+</test>
diff --git a/test/schemas/list0_1.xsd b/test/schemas/list0_1.xsd
new file mode 100644
index 0000000..8966075
--- /dev/null
+++ b/test/schemas/list0_1.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="test">
+ <xs:annotation>
+ <xs:documentation>Comment describing your root element</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="string" type="xs:string" minOccurs="2" maxOccurs="3"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/list0_2.xml b/test/schemas/list0_2.xml
new file mode 100644
index 0000000..e94d481
--- /dev/null
+++ b/test/schemas/list0_2.xml
@@ -0,0 +1,4 @@
+<test>
+ <string>hello world</string>
+ <string>hello world</string>
+</test>
diff --git a/test/schemas/mixed0_0.xml b/test/schemas/mixed0_0.xml
new file mode 100644
index 0000000..5864343
--- /dev/null
+++ b/test/schemas/mixed0_0.xml
@@ -0,0 +1 @@
+<my>x</my>
diff --git a/test/schemas/mixed0_0.xsd b/test/schemas/mixed0_0.xsd
new file mode 100644
index 0000000..a82226e
--- /dev/null
+++ b/test/schemas/mixed0_0.xsd
@@ -0,0 +1,5 @@
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='my'>
+ <xs:complexType mixed='true'/>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/mixed1_0.xml b/test/schemas/mixed1_0.xml
new file mode 100644
index 0000000..d8cf633
--- /dev/null
+++ b/test/schemas/mixed1_0.xml
@@ -0,0 +1 @@
+<my myattr='y'>x</my>
diff --git a/test/schemas/mixed1_0.xsd b/test/schemas/mixed1_0.xsd
new file mode 100644
index 0000000..a9ea6cc
--- /dev/null
+++ b/test/schemas/mixed1_0.xsd
@@ -0,0 +1,7 @@
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='my'>
+ <xs:complexType mixed='true'>
+ <xs:attribute name='myattr' type='xs:string' use='required'/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/ns0_0.xml b/test/schemas/ns0_0.xml
new file mode 100644
index 0000000..1cbaf1f
--- /dev/null
+++ b/test/schemas/ns0_0.xml
@@ -0,0 +1,2 @@
+<foo xmlns="http://example.com/xsd/ns" id="abc"/>
+
diff --git a/test/schemas/ns0_0.xsd b/test/schemas/ns0_0.xsd
new file mode 100644
index 0000000..38951d6
--- /dev/null
+++ b/test/schemas/ns0_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://example.com/xsd/ns"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/ns0_1.xml b/test/schemas/ns0_1.xml
new file mode 100644
index 0000000..6550f5c
--- /dev/null
+++ b/test/schemas/ns0_1.xml
@@ -0,0 +1,2 @@
+<n:foo xmlns:n="http://example.com/xsd/ns" id="abc"/>
+
diff --git a/test/schemas/ns0_1.xsd b/test/schemas/ns0_1.xsd
new file mode 100644
index 0000000..df2e79a
--- /dev/null
+++ b/test/schemas/ns0_1.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://example.com/xsd/ns"
+ elementFormDefault="qualified"
+ attributeFormDefault="qualified">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/ns0_2.xml b/test/schemas/ns0_2.xml
new file mode 100644
index 0000000..8f2bdba
--- /dev/null
+++ b/test/schemas/ns0_2.xml
@@ -0,0 +1,2 @@
+<foo id="abc"/>
+
diff --git a/test/schemas/ns0_3.xml b/test/schemas/ns0_3.xml
new file mode 100644
index 0000000..4c5c1e4
--- /dev/null
+++ b/test/schemas/ns0_3.xml
@@ -0,0 +1,2 @@
+<n:foo xmlns:n="http://example.com/xsd/ns" n:id="abc"/>
+
diff --git a/test/schemas/ns0_4.xml b/test/schemas/ns0_4.xml
new file mode 100644
index 0000000..dcdd418
--- /dev/null
+++ b/test/schemas/ns0_4.xml
@@ -0,0 +1,3 @@
+<l:foo xmlns:l="http://example.com/xsd/ns"
+ xmlns:b="http://example.com/xsd/ns" b:id="abc"/>
+
diff --git a/test/schemas/ns1_0.xml b/test/schemas/ns1_0.xml
new file mode 100644
index 0000000..410ed26
--- /dev/null
+++ b/test/schemas/ns1_0.xml
@@ -0,0 +1,2 @@
+<my xmlns='http://my.ns/'
+>some</my>
diff --git a/test/schemas/ns1_0.xsd b/test/schemas/ns1_0.xsd
new file mode 100644
index 0000000..a77ec57
--- /dev/null
+++ b/test/schemas/ns1_0.xsd
@@ -0,0 +1,3 @@
+<schema xmlns='http://www.w3.org/2001/XMLSchema' targetNamespace='http://my.ns/'>
+ <element name='my' type='string'/>
+</schema>
diff --git a/test/schemas/ns2_0.xml b/test/schemas/ns2_0.xml
new file mode 100644
index 0000000..c3bb126
--- /dev/null
+++ b/test/schemas/ns2_0.xml
@@ -0,0 +1 @@
+<m:my xmlns:m='http://my.ns/' m:other='1'>content</m:my>
diff --git a/test/schemas/ns2_0.xsd b/test/schemas/ns2_0.xsd
new file mode 100644
index 0000000..9393beb
--- /dev/null
+++ b/test/schemas/ns2_0.xsd
@@ -0,0 +1,15 @@
+<schema xmlns:my='http://my.ns/'
+ xmlns='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://my.ns/'
+ >
+ <attribute name='other' type='string'/>
+ <element name='my'>
+ <complexType>
+ <simpleContent>
+ <extension base='string'>
+ <attribute ref='my:other'/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+</schema>
diff --git a/test/schemas/nvdcve_0.xml b/test/schemas/nvdcve_0.xml
new file mode 100644
index 0000000..20a0aed
--- /dev/null
+++ b/test/schemas/nvdcve_0.xml
@@ -0,0 +1,5235 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<nvd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://nvd.nist.gov/feeds/cve/1.2" nvd_xml_version="1.2" pub_date="2008-10-17" xsi:schemaLocation="http://nvd.nist.gov/feeds/cve/1.2 http://nvd.nist.gov/schema/nvdcve.xsd">
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-4503" seq="2008-4503" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-11">
+ <desc>
+ <descript source="cve">The Settings Manager in Adobe Flash Player 9.0.124.0 and earlier allows remote attackers to cause victims to unknowingly click on a link or dialog via access control dialogs disguised as normal graphical elements, as demonstrated by hijacking the camera or microphone, and related to "clickjacking."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45721">adobe-flash-click-hijacking(45721)</ref>
+ <ref source="SECTRACK" url="http://www.securitytracker.com/id?1020996">1020996</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31625">31625</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2764">ADV-2008-2764</ref>
+ <ref source="CONFIRM" url="http://www.adobe.com/support/security/advisories/apsa08-08.html" adv="1">http://www.adobe.com/support/security/advisories/apsa08-08.html</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32163" adv="1">32163</ref>
+ <ref source="MISC" url="http://ha.ckers.org/blog/20081007/clickjacking-details/">http://ha.ckers.org/blog/20081007/clickjacking-details/</ref>
+ <ref source="MISC" url="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/">http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="adobe" name="flash_player">
+ <vers num="7" />
+ <vers num="7.0" />
+ <vers num="7.0.1" />
+ <vers num="7.0.25" />
+ <vers edition="" num="7.0.63" />
+ <vers edition=":linux" num="7.0.63" />
+ <vers num="7.0.69.0" />
+ <vers num="7.0.70.0" />
+ <vers edition="" num="7.0_r67" />
+ <vers edition=":solaris" num="7.0_r67" />
+ <vers num="7.1" />
+ <vers num="7.1.1" />
+ <vers num="7.2" />
+ <vers edition="" num="8" />
+ <vers edition=":professional" num="8" />
+ <vers edition=":pro" num="8" />
+ <vers num="8.0" />
+ <vers num="8.0.24.0" />
+ <vers num="8.0.34.0" />
+ <vers num="8.0.35.0" />
+ <vers num="8.0.39.0" />
+ <vers num="9" />
+ <vers num="9.0.114.0" />
+ <vers num="9.0.115.0" />
+ <vers num="9.0.124.0" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-4504" seq="2008-4504" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in Mplayer.exe in Herosoft Inc. Hero DVD Player 3.0.8 allows user-assisted remote attackers to execute arbitrary code via an M3u file with a "long entry." NOTE: the provenance of this information is unknown; the details are obtained solely from third party information.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31627">31627</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/31933" adv="1">31933</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="herosoft" name="hero_dvd_player">
+ <vers num="3.0.8" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.8" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.9" name="CVE-2008-4505" seq="2008-4505" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.8" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in IBM Lotus Quickr 8.1 before Fix pack 1 (8.1.0.1) might allow attackers to cause a denial of service (system crash) via a "nonstandard URL argument" to the OpenDocument command. NOTE: due to lack of details from the vendor, it is not clear whether this is a vulnerability.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45692">lotus-quickr-opendocument-dos(45692)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31608">31608</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2753" adv="1">ADV-2008-2753</ref>
+ <ref source="CONFIRM" url="http://www-01.ibm.com/support/docview.wss?uid=swg27013341">http://www-01.ibm.com/support/docview.wss?uid=swg27013341</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32098" adv="1">32098</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ibm" name="lotus_quickr">
+ <vers num="8.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4506" seq="2008-4506" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-11">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in IBM Lotus Quickr 8.1 before Fix pack 1 (8.1.0.1) allows a place manager to "demote or delete a place superuser group" via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45694">lotus-quickr-placemanager-security-bypass(45694)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31608">31608</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2753" adv="1">ADV-2008-2753</ref>
+ <ref source="CONFIRM" url="http://www-01.ibm.com/support/docview.wss?uid=swg27013341">http://www-01.ibm.com/support/docview.wss?uid=swg27013341</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32098" adv="1">32098</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ibm" name="lotus_quickr">
+ <vers num="8.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4507" seq="2008-4507" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in IBM Lotus Quickr 8.1 before Fix pack 1 (8.1.0.1) allows editors to delete pages that were created by a different author via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45693">lotus-quickr-editor-security-bypass(45693)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31608">31608</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2753" adv="1">ADV-2008-2753</ref>
+ <ref source="CONFIRM" url="http://www-01.ibm.com/support/docview.wss?uid=swg27013341">http://www-01.ibm.com/support/docview.wss?uid=swg27013341</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32098" adv="1">32098</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ibm" name="lotus_quickr">
+ <vers num="8.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.8" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.9" name="CVE-2008-4508" seq="2008-4508" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.8" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Stack-based buffer overflow in the file parsing function in Tonec Internet Download Manager, possibly 5.14 and earlier, allows remote attackers to cause a denial of service (crash) and possibly execute arbitrary code via a crafted AppleDouble file containing a long string. NOTE: this is probably a different vulnerability than CVE-2005-2210.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45711">internetdownloadmanager-file-bo(45711)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31603">31603</ref>
+ <ref source="MISC" url="http://downloads.securityfocus.com/vulnerabilities/exploits/31603.pl">http://downloads.securityfocus.com/vulnerabilities/exploits/31603.pl</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="tonec_inc." name="internet_download_manager">
+ <vers num="5.14" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4509" seq="2008-4509" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Unrestricted file upload vulnerability in processFiles.php in FOSS Gallery Admin and FOSS Gallery Public 1.0 beta allows remote attackers to execute arbitrary code by uploading a file with an executable extension, then accessing it via a direct request to the file in the root directory.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45683">fossgallery-multiple-file-upload(45683)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31574">31574</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6680">6680</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6674">6674</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6670">6670</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="foss_gallery" name="foss_gallery">
+ <vers edition="beta" num="1.0" />
+ <vers edition="beta:public" num="1.0" />
+ <vers edition="beta:admin" num="1.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="4.9" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="6.9" name="CVE-2008-4510" seq="2008-4510" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="4.9" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Microsoft Windows Vista Home and Ultimate Edition SP1 and earlier allows local users to cause a denial of service (page fault and system crash) via multiple attempts to access a virtual address in a PAGE_NOACCESS memory page.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31570">31570</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6671">6671</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32115" adv="1">32115</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows-nt">
+ <vers edition="" num="vista" />
+ <vers edition=":home_premium" num="vista" />
+ <vers edition=":x64-home_premium" num="vista" />
+ <vers edition=":x64-ultimate" num="vista" />
+ <vers edition="sp1" num="vista" />
+ <vers edition="sp1:x64-home_premium" num="vista" />
+ <vers edition="sp1:ultimate" num="vista" />
+ <vers edition="sp1:x64-ultimate" num="vista" />
+ <vers edition="sp1:home_premium" num="vista" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:N/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4511" seq="2008-4511" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Todd Woolums ASP News Management, possibly 2.21, stores db/news.mdb under the web root with insufficient access control, which allows remote attackers to obtain sensitive information via a direct request.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/496787/100/0/threaded">20080927 ASP News Remote Password Disclouse Vulnerability</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="todd_woolums" name="asp_news_management">
+ <vers num="2.21" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:N/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4512" seq="2008-4512" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-09">
+ <desc>
+ <descript source="cve">ASP/MS Access Shoutbox, probably 1.1 beta, stores db/shoutdb.mdb under the web root with insufficient access control, which allows remote attackers to obtain sensitive information via a direct request.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/496789/100/0/threaded">20080927 shoutbox Remote Password Disclouse Vulnerability</ref>
+ </refs>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4513" seq="2008-4513" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in BBcode API module in Phorum 5.2.8 allows remote attackers to inject arbitrary web script or HTML via nested BBcode image tags.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45686">phorum-img-xss(45686)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31589">31589</ref>
+ <ref source="CONFIRM" url="http://trac.phorum.org/changeset/3528">http://trac.phorum.org/changeset/3528</ref>
+ <ref source="MISC" url="http://nulledcore.com/?p=126">http://nulledcore.com/?p=126</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="phorum" name="phorum">
+ <vers num="5.2.8" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4514" seq="2008-4514" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-09">
+ <desc>
+ <descript source="cve">The HTML parser in KDE Konqueror 3.5.9 allows remote attackers to cause a denial of service (application crash) via a font tag with a long color value, which triggers an assertion error.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31605">31605</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6689">6689</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="konqueror" name="konqueror">
+ <vers num="3.5.9" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4515" seq="2008-4515" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-09">
+ <desc>
+ <descript source="cve">Blue Coat K9 Web Protection 4.0.230 Beta relies on client-side JavaScript as a protection mechanism, which allows remote attackers to bypass authentication and access the (1) summary, (2) detail, (3) overrides, and (4) pwemail pages by disabling JavaScript.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45696">k9webprotection-multiple-auth-bypass(45696)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31584">31584</ref>
+ <ref source="FULLDISC" url="http://seclists.org/fulldisclosure/2008/Oct/0070.html">20081004 Blue Coat K9 Web Protection V4.0.230 Beta Vulnerability</ref>
+ <ref source="MISC" url="http://dicas3000.blogspot.com/2008/10/blue-coat-k9-web-protection-v40230-beta.html">http://dicas3000.blogspot.com/2008/10/blue-coat-k9-web-protection-v40230-beta.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="blue_coat_systems" name="k9_web_protection">
+ <vers edition="beta" num="4.0.230" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4516" seq="2008-4516" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-09">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in galerie.php in Galerie 3.2 allows remote attackers to execute arbitrary SQL commands via the pic parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45698">galerie-pic-sql-injection(45698)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31593">31593</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6675">6675</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="galerie" name="galerie">
+ <vers num="3.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4517" seq="2008-4517" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-09">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in leggi.php in geccBBlite 2.0 allows remote attackers to execute arbitrary SQL commands via the id parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31585">31585</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6677">6677</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="geccbblite" name="geccbblite">
+ <vers num="2.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4518" seq="2008-4518" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Multiple SQL injection vulnerabilities in Fastpublish CMS 1.9.9.9.9 d (1.9999 d) allow remote attackers to execute arbitrary SQL commands via the (1) sprache parameter to index2.php and the (2) artikel parameter to index.php.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31582">31582</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6678">6678</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32126" adv="1">32126</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="fastpublish" name="fastpublish_cms">
+ <vers num="1.9.9.9.9d" />
+ <vers num="1.9999d" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4519" seq="2008-4519" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Multiple directory traversal vulnerabilities in Fastpublish CMS 1.9999 d allow remote attackers to include and execute arbitrary local files via a .. (dot dot) in the target parameter to (1) index2.php and (2) index.php.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31582">31582</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6678">6678</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32126" adv="1">32126</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="fastpublish" name="fastpublish_cms">
+ <vers num="1.9.9.9.9d" />
+ <vers num="1.9999d" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4520" seq="2008-4520" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in bulk_update.pl in AutoNessus before 1.2.2 allows remote attackers to inject arbitrary web script or HTML via the remark parameter.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31559">31559</ref>
+ <ref source="CONFIRM" patch="1" url="http://sourceforge.net/project/shownotes.php?group_id=216367&amp;release_id=630124">http://sourceforge.net/project/shownotes.php?group_id=216367&amp;release_id=630124</ref>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45634">autonessus-bulkupdate-xss(45634)</ref>
+ <ref source="MISC" url="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=2141884&amp;group_id=216367&amp;atid=1037394" adv="1">http://sourceforge.net/tracker/index.php?func=detail&amp;aid=2141884&amp;group_id=216367&amp;atid=1037394</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32046" adv="1">32046</ref>
+ <ref source="MISC" url="http://autonessus.cvs.sourceforge.net/viewvc/autonessus/AutoNessus/www/bulk_update.pl?r1=1.2&amp;r2=1.3">http://autonessus.cvs.sourceforge.net/viewvc/autonessus/AutoNessus/www/bulk_update.pl?r1=1.2&amp;r2=1.3</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="autonessus" name="autonessus">
+ <vers num="1.0" />
+ <vers num="1.1" />
+ <vers num="1.1.1" />
+ <vers num="1.2" />
+ <vers num="1.2.1" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4521" seq="2008-4521" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in thisraidprogress.php in the World of Warcraft tracker infusion (raidtracker_panel) module 2.0 for PHP-Fusion allows remote attackers to execute arbitrary SQL commands via the INFO_RAID_ID parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31579">31579</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6682">6682</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="php-fusion" name="world_of_warcraft_tracker_infusion_module">
+ <vers num="2.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4522" seq="2008-4522" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Multiple directory traversal vulnerabilities in JMweb MP3 Music Audio Search and Download Script allow remote attackers to include and execute arbitrary local files via a .. (dot dot) in the src parameter to (1) listen.php and (2) download.php.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31573">31573</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6669">6669</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32141" adv="1">32141</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="jesse-web" name="jmweb_mp3_music_audio_search_and_download_script">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4523" seq="2008-4523" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in login.php in IP Reg 0.4 and earlier allows remote attackers to execute arbitrary SQL commands via the user_name parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45641">ipreg-login-sql-injection(45641)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31561">31561</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6657">6657</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ip_reg" name="ip_reg">
+ <vers num="0.1" />
+ <vers num="0.2" />
+ <vers num="0.3" />
+ <vers num="0.4" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4524" seq="2008-4524" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in the "Check User" feature (includes/check_user.php) in AdaptCMS Lite and AdaptCMS Pro 1.3 allows remote attackers to execute arbitrary SQL commands via the user_name parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" patch="1" url="http://www.adaptcms.com/article/51/News/URGENT-AdaptCMS-13-Security-Fix-Released/" adv="1">http://www.adaptcms.com/article/51/News/URGENT-AdaptCMS-13-Security-Fix-Released/</ref>
+ <ref source="SECUNIA" patch="1" url="http://secunia.com/advisories/32171" adv="1">32171</ref>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45642">adaptcmslite-checkuser-sql-injection(45642)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31557">31557</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6662">6662</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="adaptcms" name="adaptcms">
+ <vers edition="unknown" num="1.3" />
+ <vers edition="unknown:lite" num="1.3" />
+ <vers edition="unknown:pro" num="1.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4525" seq="2008-4525" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in index.php in AmpJuke 0.7.5 allows remote attackers to execute arbitrary SQL commands via the special parameter in a performerid action.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31592">31592</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32168" adv="1">32168</ref>
+ <ref source="MISC" url="http://packetstorm.linuxsecurity.com/0810-exploits/ampjuke-sql.txt">http://packetstorm.linuxsecurity.com/0810-exploits/ampjuke-sql.txt</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ampjuke" name="ampjuke">
+ <vers num="0.7.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4526" seq="2008-4526" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Multiple directory traversal vulnerabilities in CCMS 3.1 allow remote attackers to include and execute arbitrary local files via a .. (dot dot) in the skin parameter to (1) index.php, (2) forums.php, (3) admin.php, (4) header.php, (5) pages/story.php and (6) pages/poll.php.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31566">31566</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6663">6663</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="customcms" name="ccms">
+ <vers num="3.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4527" seq="2008-4527" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in recept.php in the Recepies (Recept) module 1.1 for PHP-Fusion allows remote attackers to execute arbitrary SQL commands via the kat_id parameter in a kategorier action. NOTE: some of these details are obtained from third party information.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31578">31578</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6683">6683</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32004" adv="1">32004</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="php-fusion" name="recepies_module">
+ <vers num="1.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4528" seq="2008-4528" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Directory traversal vulnerability in notes.php in Phlatline's Personal Information Manager (pPIM) 1.01 allows remote attackers to include and execute arbitrary local files via a .. (dot dot) in the id parameter in an edit action.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31571">31571</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6667">6667</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="phlatline" name="personal_information_manager">
+ <vers num="1.01" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4529" seq="2008-4529" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-11">
+ <desc>
+ <descript source="cve">Multiple PHP remote file inclusion vulnerabilities in asiCMS alpha 0.208 allow remote attackers to execute arbitrary PHP code via a URL in the _ENV[asicms][path] parameter to (1) Association.php, (2) BigMath.php, (3) DiffieHellman.php, (4) DumbStore.php, (5) Extension.php, (6) FileStore.php, (7) HMAC.php, (8) MemcachedStore.php, (9) Message.php, (10) Nonce.php, (11) SQLStore.php, (12) SReg.php, (13) TrustRoot.php, and (14) URINorm.php in classes/Auth/OpenID/; and (15) XRDS.php, (16) XRI.php and (17) XRIRes.php in classes/Auth/Yadis/.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31601">31601</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6685">6685</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="asicms" name="asicms">
+ <vers edition="alpha" num="0.208" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4530" seq="2008-4530" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in Brilliant Gallery 5.x before 5.x-4.2, a module for Drupal, allows remote authenticated users with permissions to inject arbitrary web script or HTML via unspecified vectors related to posting of answers.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="CONFIRM" patch="1" url="http://drupal.org/node/315919" adv="1">http://drupal.org/node/315919</ref>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45636">brilliantgallery-unspecified-xss(45636)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31554">31554</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32106" adv="1">32106</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="drupal" name="brilliant_gallery">
+ <vers num="5.x-1.0" />
+ <vers num="5.x-1.1" />
+ <vers num="5.x-1.2" />
+ <vers num="5.x-2.1" />
+ <vers num="5.x-2.10" />
+ <vers num="5.x-2.11" />
+ <vers num="5.x-2.12" />
+ <vers num="5.x-2.13" />
+ <vers num="5.x-2.14" />
+ <vers num="5.x-2.15" />
+ <vers num="5.x-2.16" />
+ <vers num="5.x-2.17" />
+ <vers num="5.x-2.2" />
+ <vers num="5.x-2.3" />
+ <vers num="5.x-2.4" />
+ <vers num="5.x-2.5" />
+ <vers num="5.x-2.6" />
+ <vers num="5.x-2.7" />
+ <vers num="5.x-2.8" />
+ <vers num="5.x-2.9" />
+ <vers num="5.x-3.0" />
+ <vers num="5.x-3.1" />
+ <vers num="5.x-3.2" />
+ <vers num="5.x-3.3" />
+ <vers num="5.x-4.0" />
+ <vers num="5.x-4.1" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4531" seq="2008-4531" severity="High" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in Brilliant Gallery 5.x before 5.x-4.2, a module for Drupal, allows remote attackers to execute arbitrary SQL commands via unspecified vectors, related to queries. NOTE: this might be the same issue as CVE-2008-4338.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" patch="1" url="http://xforce.iss.net/xforce/xfdb/45637">brilliantgallery-unspecified-sql-injection(45637)</ref>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31554">31554</ref>
+ <ref source="SECUNIA" patch="1" url="http://secunia.com/advisories/32106" adv="1">32106</ref>
+ <ref source="CONFIRM" patch="1" url="http://drupal.org/node/315919">http://drupal.org/node/315919</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="drupal" name="brilliant_gallery">
+ <vers num="5.x-1.0" />
+ <vers num="5.x-1.1" />
+ <vers num="5.x-1.2" />
+ <vers num="5.x-2.1" />
+ <vers num="5.x-2.10" />
+ <vers num="5.x-2.11" />
+ <vers num="5.x-2.12" />
+ <vers num="5.x-2.13" />
+ <vers num="5.x-2.14" />
+ <vers num="5.x-2.15" />
+ <vers num="5.x-2.16" />
+ <vers num="5.x-2.17" />
+ <vers num="5.x-2.2" />
+ <vers num="5.x-2.3" />
+ <vers num="5.x-2.4" />
+ <vers num="5.x-2.5" />
+ <vers num="5.x-2.6" />
+ <vers num="5.x-2.7" />
+ <vers num="5.x-2.8" />
+ <vers num="5.x-2.9" />
+ <vers num="5.x-3.0" />
+ <vers num="5.x-3.1" />
+ <vers num="5.x-3.2" />
+ <vers num="5.x-3.3" />
+ <vers num="5.x-4.0" />
+ <vers num="5.x-4.1" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4532" seq="2008-4532" severity="Medium" type="CVE" published="2008-10-09" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in index.php in MaxiScript Website Directory allows remote attackers to inject arbitrary web script or HTML via the keyword parameter in a search action.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45657">websitedirectory-index-xss(45657)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31562">31562</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/496967/100/0/threaded">20081003 Website Directory - XSS Exploit</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32176" adv="1">32176</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="maxiscript" name="website_directory">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-3432" seq="2008-3432" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in the mch_expand_wildcards function in os_unix.c in Vim 6.2 and 6.3 allows user-assisted attackers to execute arbitrary code via shell metacharacters in filenames, as demonstrated by the netrw.v3 test case.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" patch="1" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/08/01/1">[oss-security] 20080731 Re: Re: More arbitrary code executions in Netrw</ref>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/07/15/4">[oss-security] 20080715 Re: Re: More arbitrary code executions in Netrw</ref>
+ <ref source="CONFIRM" url="ftp://ftp.vim.org/pub/vim/patches/6.3/6.3.059">ftp://ftp.vim.org/pub/vim/patches/6.3/6.3.059</ref>
+ <ref source="CONFIRM" url="ftp://ftp.vim.org/pub/vim/patches/6.2.429">ftp://ftp.vim.org/pub/vim/patches/6.2.429</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="vim" name="vim">
+ <vers num="6.2" />
+ <vers num="6.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-3641" seq="2008-3641" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">The Hewlett-Packard Graphics Language (HPGL) filter in CUPS before 1.3.9 allows remote attackers to execute arbitrary code via crafted pen width and pen color opcodes that overwrite arbitrary memory.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="CONFIRM" patch="1" url="http://cups.org/articles.php?L575" adv="1">http://www.cups.org/articles.php?L575</ref>
+ <ref source="REDHAT" url="http://www.redhat.com/support/errata/RHSA-2008-0937.html">RHSA-2008:0937</ref>
+ <ref source="MANDRIVA" url="http://www.mandriva.com/security/advisories?name=MDVSA-2008:211">MDVSA-2008:211</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2782">ADV-2008-2782</ref>
+ <ref source="CONFIRM" url="http://www.cups.org/str.php?L2911">http://www.cups.org/str.php?L2911</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32226">32226</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32084">32084</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="cups">
+ <vers num="1.1" />
+ <vers num="1.1.1" />
+ <vers num="1.1.10" />
+ <vers num="1.1.10-1" />
+ <vers num="1.1.11" />
+ <vers num="1.1.12" />
+ <vers num="1.1.13" />
+ <vers num="1.1.14" />
+ <vers num="1.1.15" />
+ <vers num="1.1.16" />
+ <vers num="1.1.17" />
+ <vers num="1.1.18" />
+ <vers edition="rc1" num="1.1.19" />
+ <vers edition="rc2" num="1.1.19" />
+ <vers edition="rc3" num="1.1.19" />
+ <vers edition="rc4" num="1.1.19" />
+ <vers edition="rc5" num="1.1.19" />
+ <vers num="1.1.2" />
+ <vers edition="rc1" num="1.1.20" />
+ <vers edition="rc2" num="1.1.20" />
+ <vers edition="rc3" num="1.1.20" />
+ <vers edition="rc4" num="1.1.20" />
+ <vers edition="rc5" num="1.1.20" />
+ <vers edition="rc6" num="1.1.20" />
+ <vers edition="rc1" num="1.1.21" />
+ <vers edition="rc2" num="1.1.21" />
+ <vers edition="rc1" num="1.1.22" />
+ <vers edition="rc2" num="1.1.22" />
+ <vers edition="rc1" num="1.1.23" />
+ <vers num="1.1.3" />
+ <vers num="1.1.4" />
+ <vers num="1.1.5" />
+ <vers num="1.1.5-1" />
+ <vers num="1.1.5-2" />
+ <vers num="1.1.6" />
+ <vers num="1.1.6-1" />
+ <vers num="1.1.6-2" />
+ <vers num="1.1.6-3" />
+ <vers num="1.1.7" />
+ <vers num="1.1.8" />
+ <vers num="1.1.9" />
+ <vers num="1.1.9-1" />
+ <vers edition="b1" num="1.2" />
+ <vers edition="b2" num="1.2" />
+ <vers edition="rc1" num="1.2" />
+ <vers edition="rc2" num="1.2" />
+ <vers edition="rc3" num="1.2" />
+ <vers num="1.2.0" />
+ <vers num="1.2.1" />
+ <vers num="1.2.10" />
+ <vers num="1.2.11" />
+ <vers num="1.2.12" />
+ <vers num="1.2.2" />
+ <vers num="1.2.3" />
+ <vers num="1.2.4" />
+ <vers num="1.2.5" />
+ <vers num="1.2.6" />
+ <vers num="1.2.7" />
+ <vers num="1.2.8" />
+ <vers num="1.2.9" />
+ <vers edition="b1" num="1.3" />
+ <vers edition="rc1" num="1.3" />
+ <vers edition="rc2" num="1.3" />
+ <vers num="1.3.0" />
+ <vers num="1.3.1" />
+ <vers num="1.3.2" />
+ <vers num="1.3.3" />
+ <vers num="1.3.4" />
+ <vers num="1.3.5" />
+ <vers num="1.3.6" />
+ <vers num="1.3.7" />
+ <vers num="1.3.8" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3642" seq="2008-3642" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Buffer overflow in ColorSync in Mac OS X 10.4.11 and 10.5.5 allows remote attackers to cause a denial of service (application termination) and possibly execute arbitrary code via an image with a crafted ICC profile.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.8" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.9" name="CVE-2008-3643" seq="2008-3643" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="7.8" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in Finder in Mac OS X 10.5.5 allows user-assisted attackers to cause a denial of service (continuous termination and restart) via a crafted Desktop file that generates an error when producing its icon, related to an "error recovery issue."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html" adv="1">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-3645" seq="2008-3645" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in the local IPC component in the EAPOLController plugin for configd (Networking component) in Mac OS X 10.4.11 and 10.5.5 allows local users to execute arbitrary code via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html" adv="1">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-3646" seq="2008-3646" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-10">
+ <desc>
+ <descript source="cve">The Postfix configuration file in Mac OS X 10.5.5 causes Postfix to be network-accessible when mail is sent from a local command-line tool, which allows remote attackers to send mail to local Mac OS X users.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3647" seq="2008-3647" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Buffer overflow in PSNormalizer in Mac OS X 10.4.11 and 10.5.5 allows remote attackers to cause a denial of service (application termination) and execute arbitrary code via a PostScript file with a crafted bounding box comment.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4211" seq="2008-4211" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Integer signedness error in QuickLook in Mac OS X 10.5.5 allows remote attackers to cause a denial of service (application termination) and execute arbitrary code via a crafted Microsoft Excel file that triggers an out-of-bounds memory access.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4212" seq="2008-4212" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in rlogind in the rlogin component in Mac OS X 10.4.11 and 10.5.5 applies hosts.equiv entries to root despite what is stated in documentation, which might allow remote attackers to bypass intended access restrictions.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html" adv="1">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="4.6" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="6.4" name="CVE-2008-4214" seq="2008-4214" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="4.6" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in Script Editor in Mac OS X 10.4.11 and 10.5.5 allows local users to cause the scripting dictionary to be written to arbitrary locations, related to an "insecure file operation" on temporary files.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.4.11" />
+ <vers num="10.5.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4215" seq="2008-4215" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Weblog in Mac OS X Server 10.4.11 does not properly check an error condition when a weblog posting access control list is specified for a user that has multiple short names, which might allow attackers to bypass intended access restrictions.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31681">31681</ref>
+ <ref source="APPLE" url="http://lists.apple.com/archives/security-announce/2008/Oct/msg00001.html" adv="1">APPLE-SA-2008-10-09</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="mac_os_x_server">
+ <vers num="10.4.11" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="6.9" CVSS_exploit_subscore="3.4" CVSS_impact_subscore="10.0" name="CVE-2008-4394" seq="2008-4394" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="6.9" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Multiple untrusted search path vulnerabilities in Portage before 2.1.4.5 include the current working directory in the Python search path, which allows local users to execute arbitrary code via a modified Python module that is loaded by the (1) ys-apps/portage, (2) net-mail/fetchmail, (3) app-editors/leo ebuilds, and other ebuilds.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <local />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31670">31670</ref>
+ <ref source="GENTOO" url="http://security.gentoo.org/glsa/glsa-200810-02.xml">GLSA-200810-02</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="gentoo" name="portage">
+ <vers edition="r3" num="2.0.51.22" />
+ <vers edition="r2" num="2.1.1" />
+ <vers num="2.1.3.10" />
+ <vers num="2.1.4.4" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4533" seq="2008-4533" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in Kantan WEB Server 1.8 and earlier allows remote attackers to inject arbitrary web script or HTML via unknown vectors.</descript>
+ </desc>
+ <sols>
+ <sol source="nvd">Patch Information - http://unyora.sakura.ne.jp/soft/EasyHTTPServer/index.html</sol>
+ </sols>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31244">31244</ref>
+ <ref source="OSVDB" url="http://www.osvdb.org/48222">48222</ref>
+ <ref source="JVNDB" url="http://jvndb.jvn.jp/en/contents/2008/JVNDB-2008-000060.html">JVNDB-2008-000060</ref>
+ <ref source="JVN" url="http://jvn.jp/en/jp/JVN94163107/index.html">JVN#94163107</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="katan" name="web_server">
+ <vers num="1.6" />
+ <vers num="1.8" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4534" seq="2008-4534" severity="High" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-10">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in EC-CUBE Ver2 2.1.2a and earlier, and Ver2 RC 2.3.0-rc1 and earlier, allows remote attackers to execute arbitrary SQL commands via unspecified vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" patch="1" url="http://www.ec-cube.net/info/080829">http://www.ec-cube.net/info/080829</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32065" adv="1">32065</ref>
+ <ref source="JVNDB" url="http://jvndb.jvn.jp/ja/contents/2008/JVNDB-2008-000065.html">JVNDB-2008-000065</ref>
+ <ref source="JVN" url="http://jvn.jp/en/jp/JVN81111541/index.html">JVN#81111541</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ec-cube" name="ec-cube">
+ <vers num="1.0" />
+ <vers num="1.4.7" />
+ <vers edition="b2" num="1.5.0" />
+ <vers num="2.1.2a" prev="1" />
+ <vers num="2.3.0" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4535" seq="2008-4535" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in EC-CUBE Ver2 2.1.2a and earlier, EC-CUBE Ver2 Beta(RC) 2.2.0-beta and earlier, and EC-CUBE Community Edition Nighly-Build r17623 and earlier allows remote attackers to inject arbitrary web script or HTML via unspecified vectors, a different issue than CVE-2008-4536 and CVE-2008-4537.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MISC" patch="1" url="http://www.ec-cube.net/release/detail.php?release_id=193" adv="1">http://www.ec-cube.net/release/detail.php?release_id=193</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32065">32065</ref>
+ <ref source="JVNDB" url="http://jvndb.jvn.jp/ja/contents/2008/JVNDB-2008-000064.html">JVNDB-2008-000064</ref>
+ <ref source="JVN" url="http://jvn.jp/en/jp/JVN99916563/index.html">JVN#99916563</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ec-cube" name="ec-cube">
+ <vers num="1.0" />
+ <vers num="1.4.7" />
+ <vers edition="b2" num="1.5.0" />
+ <vers num="2.1.2a" prev="1" />
+ <vers num="2.3.0" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4536" seq="2008-4536" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in EC-CUBE Ver1 1.4.6 and earlier, Ver1 Beta 1.5.0-beta and earlier, Ver2 2.1.2a and earlier, Ver2 Beta(RC) 2.2.0-beta and earlier, Community Edition 1.3.4 and earlier, and Community Edition Nightly-Build r17319 and earlier allows remote attackers to inject arbitrary web script or HTML via unspecified vectors, a different issue than CVE-2008-4535 and CVE-2008-4537.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MISC" patch="1" url="http://www.ec-cube.net/release/detail.php?release_id=193" adv="1">http://www.ec-cube.net/release/detail.php?release_id=193</ref>
+ <ref source="SECUNIA" patch="1" url="http://secunia.com/advisories/32065" adv="1">32065</ref>
+ <ref source="JVN" url="http://jvn.jp/en/jp/JVN36085487/index.html">JVN#36085487</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ec-cube" name="ec-cube">
+ <vers num="1.0" />
+ <vers edition="unknown" num="1.3.4" prev="1" />
+ <vers edition="unknown:community_edition" num="1.3.4" prev="1" />
+ <vers num="1.4.7" />
+ <vers edition="b2" num="1.5.0" />
+ <vers num="2.1.2a" prev="1" />
+ <vers num="2.3.0" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4537" seq="2008-4537" severity="Medium" type="CVE" published="2008-10-10" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-10">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in EC-CUBE Ver1 1.4.6 and earlier, Ver1 Beta 1.5.0-beta and earlier, Ver2 2.1.2a and earlier, Ver2 Beta(RC) 2.1.1-beta and earlier, Community Edition 1.3.4 and earlier, and Community Edition Nightly-Build r17336 and earlier allows remote attackers to inject arbitrary web script or HTML via unspecified vectors, a different issue than CVE-2008-4535 and CVE-2008-4536.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MISC" patch="1" url="http://www.ec-cube.net/release/detail.php?release_id=193" adv="1">http://www.ec-cube.net/release/detail.php?release_id=193</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32065" adv="1">32065</ref>
+ <ref source="JVNDB" url="http://jvndb.jvn.jp/ja/contents/2008/JVNDB-2008-000062.html">JVNDB-2008-000062</ref>
+ <ref source="JVN" url="http://jvn.jp/en/jp/JVN26621646/index.html">JVN#26621646</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ec-cube" name="ec-cube">
+ <vers num="1.0" />
+ <vers edition="unknown" num="1.3.4" prev="1" />
+ <vers edition="unknown:community_edition" num="1.3.4" prev="1" />
+ <vers num="1.4.7" />
+ <vers edition="b2" num="1.5.0" />
+ <vers num="2.1.2a" prev="1" />
+ <vers num="2.3.0" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:N/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-3271" seq="2008-3271" severity="Medium" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Apache Tomcat 5.5.0 and 4.1.0 through 4.1.31 allows remote attackers to bypass an IP address restriction and obtain sensitive information via a request that is processed concurrently with another request but in a different thread, leading to an instance-variable overwrite associated with a "synchronization problem" and lack of thread safety, and related to RemoteFilterValve, RemoteAddrValve, and RemoteHostValve.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="https://issues.apache.org/bugzilla/show_bug.cgi?id=25835">https://issues.apache.org/bugzilla/show_bug.cgi?id=25835</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31698">31698</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497220/100/0/threaded">20081009 [SECURITY] CVE-2008-3271 - Apache Tomcat information disclosure</ref>
+ <ref source="CONFIRM" url="http://www.fujitsu.com/global/support/software/security/products-f/interstage-200806e.html">http://www.fujitsu.com/global/support/software/security/products-f/interstage-200806e.html</ref>
+ <ref source="CONFIRM" url="http://tomcat.apache.org/security-5.html">http://tomcat.apache.org/security-5.html</ref>
+ <ref source="CONFIRM" url="http://tomcat.apache.org/security-4.html" adv="1">http://tomcat.apache.org/security-4.html</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32234" adv="1">32234</ref>
+ <ref source="JVN" url="http://jvn.jp/en/jp/JVN30732239/index.html">JVN#30732239</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apache" name="tomcat">
+ <vers num="4.1.0" />
+ <vers num="4.1.1" />
+ <vers num="4.1.10" />
+ <vers num="4.1.11" />
+ <vers num="4.1.12" />
+ <vers num="4.1.13" />
+ <vers num="4.1.14" />
+ <vers num="4.1.15" />
+ <vers num="4.1.16" />
+ <vers num="4.1.17" />
+ <vers num="4.1.18" />
+ <vers num="4.1.19" />
+ <vers num="4.1.2" />
+ <vers num="4.1.20" />
+ <vers num="4.1.21" />
+ <vers num="4.1.22" />
+ <vers num="4.1.23" />
+ <vers num="4.1.24" />
+ <vers num="4.1.25" />
+ <vers num="4.1.26" />
+ <vers num="4.1.27" />
+ <vers num="4.1.28" />
+ <vers num="4.1.29" />
+ <vers edition="beta" num="4.1.3" />
+ <vers num="4.1.30" />
+ <vers num="4.1.31" />
+ <vers num="4.1.4" />
+ <vers num="4.1.5" />
+ <vers num="4.1.6" />
+ <vers num="4.1.7" />
+ <vers num="4.1.8" />
+ <vers num="4.1.9" />
+ <vers num="5.5.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:C)" CVSS_base_score="9.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="8.5" name="CVE-2008-3544" seq="2008-3544" severity="High" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="9.0" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Multiple stack-based buffer overflows in ovalarmsrv in HP OpenView Network Node Manager (OV NNM) 7.51, and possibly 7.01, 7.50, and 7.53, allow remote attackers to execute arbitrary code via a long (1) REQUEST_SEV_CHANGE (aka number 47), (2) REQUEST_SAVE_STATE (aka number 61), or (3) REQUEST_RESTORE_STATE (aka number 62) request to TCP port 2954.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="HP" patch="1" url="http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01537275" adv="1">SSRT080042</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/28668">28668</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/490541">20080407 Multiple vulnerabilities in HP OpenView NNM 7.53</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/31688" adv="1">31688</ref>
+ <ref source="MISC" url="http://downloads.securityfocus.com/vulnerabilities/exploits/28668.c">http://downloads.securityfocus.com/vulnerabilities/exploits/28668.c</ref>
+ <ref source="MISC" url="http://aluigi.altervista.org/adv/closedview_old-adv.txt">http://aluigi.altervista.org/adv/closedview_old-adv.txt</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="hp" name="openview_network_node_manager">
+ <vers num="7.01" />
+ <vers num="7.50" />
+ <vers num="7.51" />
+ <vers num="7.53" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.8" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.9" name="CVE-2008-3545" seq="2008-3545" severity="High" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="7.8" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in ovtopmd in HP OpenView Network Node Manager (OV NNM) 7.01, 7.51, and 7.53 allows remote attackers to cause a denial of service via unknown vectors, a different vulnerability than CVE-2008-3536, CVE-2008-3537, and CVE-2008-3544. NOTE: due to insufficient details from the vendor, it is not clear whether this is the same as CVE-2008-1853.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="HP" patch="1" url="http://marc.info/?l=bugtraq&amp;m=122356907004075&amp;w=2">SSRT080046</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31669">31669</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021014">1021014</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/29796" adv="1">29796</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="hp" name="openview_network_node_manager">
+ <vers num="7.01" />
+ <vers num="7.51" />
+ <vers num="7.53" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4411" seq="2008-4411" severity="Medium" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-13">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in HP System Management Homepage (SMH) before 2.1.15.210 on Linux and Windows allows remote attackers to inject arbitrary web script or HTML via unspecified vectors, a different vulnerability than CVE-2008-1663.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31663">31663</ref>
+ <ref source="FRSIRT" patch="1" url="http://www.frsirt.com/english/advisories/2008/2778" adv="1">ADV-2008-2778</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021015">1021015</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32199" adv="1">32199</ref>
+ <ref source="HP" url="http://marc.info/?l=bugtraq&amp;m=122356588429626&amp;w=2">HPSBMA02376</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="hp" name="system_management_homepage">
+ <vers num="2.0.0" />
+ <vers num="2.0.1" />
+ <vers num="2.0.2" />
+ <vers num="2.1" />
+ <vers num="2.1.0-103" />
+ <vers num="2.1.0-103(a)" />
+ <vers num="2.1.0-109" />
+ <vers num="2.1.0-118" />
+ <vers num="2.1.1" />
+ <vers num="2.1.10" />
+ <vers num="2.1.10-186" />
+ <vers num="2.1.11" />
+ <vers num="2.1.11-197" />
+ <vers num="2.1.12-118" />
+ <vers num="2.1.12-200" prev="1" />
+ <vers num="2.1.2" />
+ <vers num="2.1.2-127" />
+ <vers num="2.1.3" />
+ <vers num="2.1.3.132" />
+ <vers num="2.1.4" />
+ <vers num="2.1.4-143" />
+ <vers num="2.1.5" />
+ <vers num="2.1.5-146" />
+ <vers num="2.1.6" />
+ <vers num="2.1.6-156" />
+ <vers num="2.1.7" />
+ <vers num="2.1.7-168" />
+ <vers num="2.1.8" />
+ <vers num="2.1.8-177" />
+ <vers num="2.1.9" />
+ <vers num="2.1.9-178" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:P/I:N/A:N)" CVSS_base_score="2.1" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="2.9" name="CVE-2008-4540" seq="2008-4540" severity="Low" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="2.1" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Windows Mobile 6 on the HTC Hermes device makes WLAN passwords available to an auto-completion mechanism for the password input field, which allows physically proximate attackers to bypass password authentication and obtain WLAN access.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497151/100/0/threaded">20081008 Windows Mobile 6 insecure password handling and too short WLAN-password</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_mobile">
+ <vers num="6.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4541" seq="2008-4541" severity="High" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in the FTP subsystem in Sun Java System Web Proxy Server 4.0 through 4.0.7 allows remote attackers to execute arbitrary code via unspecified vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45782">sun-webproxy-ftp-bo(45782)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31691">31691</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2781" adv="1">ADV-2008-2781</ref>
+ <ref source="SUNALERT" url="http://sunsolve.sun.com/search/document.do?assetkey=1-26-242986-1">242986</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021038">1021038</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32227" adv="1">32227</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="sun" name="java_system_web_proxy_server">
+ <vers edition="sp1" num="4.0" />
+ <vers edition="sp1" num="4.0.1" />
+ <vers edition="sp2" num="4.0.1" />
+ <vers edition="sp3" num="4.0.1" />
+ <vers edition="sp4" num="4.0.1" />
+ <vers edition="sp5" num="4.0.1" />
+ <vers edition="sp6" num="4.0.1" />
+ <vers edition="sp1" num="4.0.2" />
+ <vers edition="sp2" num="4.0.2" />
+ <vers edition="sp3" num="4.0.2" />
+ <vers edition="sp4" num="4.0.2" />
+ <vers edition="sp5" num="4.0.2" />
+ <vers edition="sp6" num="4.0.2" />
+ <vers edition="sp1" num="4.0.3" />
+ <vers edition="sp2" num="4.0.3" />
+ <vers edition="sp3" num="4.0.3" />
+ <vers edition="sp4" num="4.0.3" />
+ <vers edition="sp5" num="4.0.3" />
+ <vers edition="sp6" num="4.0.3" />
+ <vers edition="sp1" num="4.0.4" />
+ <vers edition="sp2" num="4.0.4" />
+ <vers edition="sp3" num="4.0.4" />
+ <vers edition="sp4" num="4.0.4" />
+ <vers edition="sp5" num="4.0.4" />
+ <vers edition="sp6" num="4.0.4" />
+ <vers edition="sp1" num="4.0.5" />
+ <vers edition="sp2" num="4.0.5" />
+ <vers edition="sp3" num="4.0.5" />
+ <vers edition="sp4" num="4.0.5" />
+ <vers edition="sp5" num="4.0.5" />
+ <vers edition="sp6" num="4.0.5" />
+ <vers edition="" num="4.0.6" />
+ <vers edition=":windows" num="4.0.6" />
+ <vers edition=":x86" num="4.0.6" />
+ <vers edition=":hp_ux" num="4.0.6" />
+ <vers edition=":sparc" num="4.0.6" />
+ <vers edition=":linux" num="4.0.6" />
+ <vers edition="" num="4.0.7" />
+ <vers edition=":sparc" num="4.0.7" />
+ <vers edition=":windows" num="4.0.7" />
+ <vers edition=":x86" num="4.0.7" />
+ <vers edition=":hp_ux" num="4.0.7" />
+ <vers edition=":linux" num="4.0.7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:N/I:P/A:N)" CVSS_base_score="3.5" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="2.9" name="CVE-2008-4542" seq="2008-4542" severity="Low" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="3.5" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in Cisco Unity 4.x before 4.2(1)ES162, 5.x before 5.0(1)ES56, and 7.x before 7.0(2)ES8 allows remote authenticated administrators to inject arbitrary web script or HTML by entering it in the database (aka data store).</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.voipshield.com/research-details.php?id=127">http://www.voipshield.com/research-details.php?id=127</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31642">31642</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2771" adv="1">ADV-2008-2771</ref>
+ <ref source="CISCO" url="http://www.cisco.com/en/US/products/products_security_response09186a0080a0d861.html" adv="1">20081008 VoIPshield Reported Vulnerabilities in Cisco Unity Server</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021012">1021012</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32207" adv="1">32207</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="cisco" name="unity">
+ <vers num="4.0" />
+ <vers num="4.0(1)" />
+ <vers num="4.0(2)" />
+ <vers edition="sr2" num="4.0(3)" />
+ <vers edition="sr1" num="4.0(4)" />
+ <vers num="4.0(5)" />
+ <vers num="4.1(1)" />
+ <vers num="4.2(1)" prev="1" />
+ <vers num="5.0" />
+ <vers num="5.0(1)" prev="1" />
+ <vers num="7.0" />
+ <vers num="7.0(2)" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.1" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.9" name="CVE-2008-4543" seq="2008-4543" severity="High" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="7.1" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Cisco Unity 4.x before 4.2(1)ES161, 5.x before 5.0(1)ES53, and 7.x before 7.0(2)ES8, when using anonymous authentication (aka native Unity authentication), allows remote attackers to cause a denial of service (session exhaustion) via a large number of connections.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.voipshield.com/research-details.php?id=128">http://www.voipshield.com/research-details.php?id=128</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31642">31642</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2771" adv="1">ADV-2008-2771</ref>
+ <ref source="CISCO" url="http://www.cisco.com/en/US/products/products_security_response09186a0080a0d861.html" adv="1">20081008 VoIPshield Reported Vulnerabilities in Cisco Unity Server</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021013">1021013</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32187" adv="1">32187</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="cisco" name="unity">
+ <vers num="4.0" />
+ <vers num="4.0(1)" />
+ <vers num="4.0(2)" />
+ <vers edition="sr2" num="4.0(3)" />
+ <vers edition="sr1" num="4.0(4)" />
+ <vers num="4.0(5)" />
+ <vers num="4.1(1)" />
+ <vers num="4.2(1)" prev="1" />
+ <vers num="5.0" />
+ <vers num="5.0(1)" prev="1" />
+ <vers num="7.0" />
+ <vers num="7.0(2)" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4544" seq="2008-4544" severity="Medium" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in an unspecified Microsoft API, as used by Cisco Unity and possibly other products, allows remote attackers to cause a denial of service by sending crafted packets to dynamic UDP ports, related to a "processing error."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.voipshield.com/research-details.php?id=129">http://www.voipshield.com/research-details.php?id=129</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31642">31642</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2771" adv="1">ADV-2008-2771</ref>
+ <ref source="CISCO" url="http://www.cisco.com/en/US/products/products_security_response09186a0080a0d861.html" adv="1">20081008 VoIPshield Reported Vulnerabilities in Cisco Unity Server</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021020">1021020</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="cisco" name="unity">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:N/A:N)" CVSS_base_score="4.0" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="2.9" name="CVE-2008-4545" seq="2008-4545" severity="Medium" type="CVE" published="2008-10-13" CVSS_version="2.0" CVSS_score="4.0" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Cisco Unity 4.x before 4.2(1)ES161, 5.x before 5.0(1)ES53, and 7.x before 7.0(2)ES8 uses weak permissions for the D:\CommServer\Reports directory, which allows remote authenticated users to obtain sensitive information by reading files in this directory.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.voipshield.com/research-details.php?id=130">http://www.voipshield.com/research-details.php?id=130</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31642">31642</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2771" adv="1">ADV-2008-2771</ref>
+ <ref source="CISCO" url="http://www.cisco.com/en/US/products/products_security_response09186a0080a0d861.html" adv="1">20081008 VoIPshield Reported Vulnerabilities in Cisco Unity Server</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021022">1021022</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32187" adv="1">32187</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="cisco" name="unity">
+ <vers num="4.0" />
+ <vers num="4.0(1)" />
+ <vers num="4.0(2)" />
+ <vers edition="sr2" num="4.0(3)" />
+ <vers edition="sr1" num="4.0(4)" />
+ <vers num="4.0(5)" />
+ <vers num="4.1(1)" />
+ <vers num="4.2(1)" prev="1" />
+ <vers num="5.0" />
+ <vers num="5.0(1)" prev="1" />
+ <vers num="7.0" />
+ <vers num="7.0(2)" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.8" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.9" name="CVE-2008-4441" seq="2008-4441" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.8" modified="2008-10-17">
+ <desc>
+ <descript source="cve">The Marvell driver for the Linksys WAP4400N Wi-Fi access point with firmware 1.2.14 on the Marvell 88W8361P-BEM1 chipset, when WEP mode is enabled, does not properly parse malformed 802.11 frames, which allows remote attackers to cause a denial of service (reboot or hang-up) via a malformed association request containing the WEP flag, as demonstrated by a request that is too short, a different vulnerability than CVE-2008-1144 and CVE-2008-1197.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45841">linksys-wap4400n-request-dos(45841)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31742">31742</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497285/100/0/threaded">20081013 Marvell Driver Malformed Association Request Vulnerability</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2805">ADV-2008-2805</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32259">32259</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="linksys" name="wap400n">
+ <vers num="1.2.14" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:N/A:P)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4546" seq="2008-4546" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-14">
+ <desc>
+ <descript source="cve">Adobe Flash Player 9.0.45.0, 9.0.112.0, 9.0.124.0, and 10.0.12.10 allows remote web servers to cause a denial of service (NULL pointer dereference and browser crash) by returning a different response when an HTTP request is sent a second time, as demonstrated by two responses that provide SWF files with different SWF version numbers.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/496929/100/0/threaded">20081002 Adobe Flash Player plug-in null pointer dereference and browser crash</ref>
+ <ref source="MISC" url="http://www.mochimedia.com/~matthew/flashcrash/">http://www.mochimedia.com/~matthew/flashcrash/</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="adobe" name="flash_player">
+ <vers num="10.0.12.10" />
+ <vers num="9.0.112.0" />
+ <vers num="9.0.115.0" />
+ <vers num="9.0.45.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-4547" seq="2008-4547" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in the PdvrAtl.PdvrOcx.1 ActiveX control (pdvratl.dll) in DVRHOST Web CMS OCX 1.0.1.25 allows remote attackers to execute arbitrary code via a long second argument to the TimeSpanFormat method.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/39640">dvrhost-pdvrocx-bo(39640)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27267">27267</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/4903">4903</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28443" adv="1">28443</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="dvrhost" name="web_cms">
+ <vers num="1.0.1.25" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-4548" seq="2008-4548" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Stack-based buffer overflow in the PTZCamPanelCtrl ActiveX control (CamPanel.dll) in RTS Sentry 2.1.0.2 allows remote attackers to execute arbitrary code via a long second argument to the ConnectServer method.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/39725">rtssentry-ptzcampanelctrl-bo(39725)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27304">27304</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/4918">4918</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28435" adv="1">28435</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="rtssentry" name="rtssentry">
+ <vers num="2.1.0.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:H/Au:N/C:P/I:N/A:N)" CVSS_base_score="2.6" CVSS_exploit_subscore="4.9" CVSS_impact_subscore="2.9" name="CVE-2008-4549" seq="2008-4549" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="2.6" modified="2008-10-15">
+ <desc>
+ <descript source="cve">The ImageShack Toolbar ActiveX control (ImageShackToolbar.dll) in ImageShack Toolbar 4.5.7, possibly including 4.5.7.69, allows remote attackers to force the upload of arbitrary image files to the ImageShack site via a file: URI argument to the BuildSlideShow method.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/39921">toolbar-imageshacktoolbar-info-disclosure(39921)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27439">27439</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/486941/100/200/threaded">20080124 ImageShack Toolbar FileUploader Class insecurities</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/4981">4981</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28644" adv="1">28644</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="imageshack" name="imageshack_toolbar">
+ <vers num="4.5.7" />
+ <vers num="4.5.7.69" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4551" seq="2008-4551" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">strongSwan 4.2.6 and earlier allows remote attackers to cause a denial of service (daemon crash) via an IKE_SA_INIT message with a large number of NULL values in a Key Exchange payload, which triggers a NULL pointer dereference for the return value of the mpz_export function in the GNU Multiprecision Library (GMP).</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="SECTRACK" url="http://www.securitytracker.com/id?1020903">1020903</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31291">31291</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2660" adv="1">ADV-2008-2660</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/31963" adv="1">31963</ref>
+ <ref source="MISC" url="http://labs.mudynamics.com/advisories/MU-200809-01.txt">http://labs.mudynamics.com/advisories/MU-200809-01.txt</ref>
+ <ref source="CONFIRM" url="http://download.strongswan.org/CHANGES4.txt">http://download.strongswan.org/CHANGES4.txt</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="strongswan" name="strongswan">
+ <vers num="2.0.0" />
+ <vers num="2.0.1" />
+ <vers num="2.0.2" />
+ <vers num="2.1.0" />
+ <vers num="2.1.1" />
+ <vers num="2.1.2" />
+ <vers num="2.1.3" />
+ <vers num="2.1.4" />
+ <vers num="2.1.5" />
+ <vers num="2.2.0" />
+ <vers num="2.2.1" />
+ <vers num="2.2.2" />
+ <vers num="2.3.0" />
+ <vers num="2.3.1" />
+ <vers num="2.3.2" />
+ <vers num="2.4.0" />
+ <vers num="2.4.0a" />
+ <vers num="2.4.1" />
+ <vers num="2.4.2" />
+ <vers num="2.4.3" />
+ <vers num="2.5.0" />
+ <vers num="2.5.1" />
+ <vers num="2.5.2" />
+ <vers num="2.5.3" />
+ <vers num="2.5.4" />
+ <vers num="2.5.5" />
+ <vers num="2.5.6" />
+ <vers num="2.5.7" />
+ <vers num="2.6.0" />
+ <vers num="2.6.1" />
+ <vers num="2.6.2" />
+ <vers num="2.6.3" />
+ <vers num="2.6.4" />
+ <vers num="2.7.0" />
+ <vers num="4.0.0" />
+ <vers num="4.0.1" />
+ <vers num="4.0.2" />
+ <vers num="4.0.3" />
+ <vers num="4.0.4" />
+ <vers num="4.0.5" />
+ <vers num="4.0.6" />
+ <vers num="4.0.7" />
+ <vers num="4.1.0" />
+ <vers num="4.1.1" />
+ <vers num="4.1.10" />
+ <vers num="4.1.11" />
+ <vers num="4.1.2" />
+ <vers num="4.1.3" />
+ <vers num="4.1.4" />
+ <vers num="4.1.5" />
+ <vers num="4.1.6" />
+ <vers num="4.1.7" />
+ <vers num="4.1.8" />
+ <vers num="4.1.9" />
+ <vers num="4.2.0" />
+ <vers num="4.2.1" />
+ <vers num="4.2.2" />
+ <vers num="4.2.3" />
+ <vers num="4.2.4" />
+ <vers num="4.2.5" />
+ <vers num="4.2.6" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4552" seq="2008-4552" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">nfs-utils 1.0.9, and possibly other versions before 1.1.3, invokes the host_ctl function with the wrong order of arguments, which causes TCP Wrappers to ignore netgroups and allows remote attackers to bypass intended access restrictions.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="https://bugzilla.redhat.com/show_bug.cgi?id=458676">https://bugzilla.redhat.com/show_bug.cgi?id=458676</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="nfs" name="nfs-utils">
+ <vers num="0.2" />
+ <vers num="0.2.1" />
+ <vers num="0.3.1" />
+ <vers num="0.3.3" />
+ <vers num="1.0" />
+ <vers num="1.0.1" />
+ <vers num="1.0.10" />
+ <vers num="1.0.11" />
+ <vers num="1.0.12" />
+ <vers num="1.0.2" />
+ <vers num="1.0.3" />
+ <vers num="1.0.4" />
+ <vers num="1.0.6" />
+ <vers edition="pre-1" num="1.0.7" />
+ <vers edition="pre-2" num="1.0.7" />
+ <vers edition="rc-1" num="1.0.8" />
+ <vers edition="rc-2" num="1.0.8" />
+ <vers edition="rc-3" num="1.0.8" />
+ <vers edition="rc-4" num="1.0.8" />
+ <vers num="1.0.9" />
+ <vers edition="rc-1" num="1.1.0" />
+ <vers num="1.1.1" />
+ <vers num="1.1.2" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-3639" seq="2008-3639" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in the read_rle16 function in imagetops in CUPS before 1.3.9 allows remote attackers to execute arbitrary code via an SGI image with malformed Run Length Encoded (RLE) data containing a small image and a large row count.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="SECTRACK" url="http://www.securitytracker.com/id?1021033">1021033</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31690">31690</ref>
+ <ref source="REDHAT" url="http://www.redhat.com/support/errata/RHSA-2008-0937.html">RHSA-2008:0937</ref>
+ <ref source="MANDRIVA" url="http://www.mandriva.com/security/advisories?name=MDVSA-2008:211">MDVSA-2008:211</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2782" adv="1">ADV-2008-2782</ref>
+ <ref source="CONFIRM" url="http://www.cups.org/str.php?L2918" adv="1">http://www.cups.org/str.php?L2918</ref>
+ <ref source="CONFIRM" url="http://www.cups.org/articles.php?L575">http://www.cups.org/articles.php?L575</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32226" adv="1">32226</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32084" adv="1">32084</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="cups">
+ <vers num="1.1" />
+ <vers num="1.1.1" />
+ <vers num="1.1.10" />
+ <vers num="1.1.10-1" />
+ <vers num="1.1.11" />
+ <vers num="1.1.12" />
+ <vers num="1.1.13" />
+ <vers num="1.1.14" />
+ <vers num="1.1.15" />
+ <vers num="1.1.16" />
+ <vers num="1.1.17" />
+ <vers num="1.1.18" />
+ <vers edition="rc1" num="1.1.19" />
+ <vers edition="rc2" num="1.1.19" />
+ <vers edition="rc3" num="1.1.19" />
+ <vers edition="rc4" num="1.1.19" />
+ <vers edition="rc5" num="1.1.19" />
+ <vers num="1.1.2" />
+ <vers edition="rc1" num="1.1.20" />
+ <vers edition="rc2" num="1.1.20" />
+ <vers edition="rc3" num="1.1.20" />
+ <vers edition="rc4" num="1.1.20" />
+ <vers edition="rc5" num="1.1.20" />
+ <vers edition="rc6" num="1.1.20" />
+ <vers edition="rc1" num="1.1.21" />
+ <vers edition="rc2" num="1.1.21" />
+ <vers edition="rc1" num="1.1.22" />
+ <vers edition="rc2" num="1.1.22" />
+ <vers edition="rc1" num="1.1.23" />
+ <vers num="1.1.3" />
+ <vers num="1.1.4" />
+ <vers num="1.1.5" />
+ <vers num="1.1.5-1" />
+ <vers num="1.1.5-2" />
+ <vers num="1.1.6" />
+ <vers num="1.1.6-1" />
+ <vers num="1.1.6-2" />
+ <vers num="1.1.6-3" />
+ <vers num="1.1.7" />
+ <vers num="1.1.8" />
+ <vers num="1.1.9" />
+ <vers num="1.1.9-1" />
+ <vers edition="b1" num="1.2" />
+ <vers edition="b2" num="1.2" />
+ <vers edition="rc1" num="1.2" />
+ <vers edition="rc2" num="1.2" />
+ <vers edition="rc3" num="1.2" />
+ <vers num="1.2.0" />
+ <vers num="1.2.1" />
+ <vers num="1.2.10" />
+ <vers num="1.2.11" />
+ <vers num="1.2.12" />
+ <vers num="1.2.2" />
+ <vers num="1.2.3" />
+ <vers num="1.2.4" />
+ <vers num="1.2.5" />
+ <vers num="1.2.6" />
+ <vers num="1.2.7" />
+ <vers num="1.2.8" />
+ <vers num="1.2.9" />
+ <vers edition="b1" num="1.3" />
+ <vers edition="rc1" num="1.3" />
+ <vers edition="rc2" num="1.3" />
+ <vers num="1.3.0" />
+ <vers num="1.3.1" />
+ <vers num="1.3.2" />
+ <vers num="1.3.3" />
+ <vers num="1.3.4" />
+ <vers num="1.3.5" />
+ <vers num="1.3.6" />
+ <vers num="1.3.7" />
+ <vers num="1.3.8" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-3640" seq="2008-3640" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Integer overflow in the WriteProlog function in texttops in CUPS before 1.3.9 allows remote attackers to execute arbitrary code via a crafted PostScript file that triggers a heap-based buffer overflow.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="SECTRACK" url="http://www.securitytracker.com/id?1021034">1021034</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31690">31690</ref>
+ <ref source="REDHAT" url="http://www.redhat.com/support/errata/RHSA-2008-0937.html">RHSA-2008:0937</ref>
+ <ref source="MANDRIVA" url="http://www.mandriva.com/security/advisories?name=MDVSA-2008:211">MDVSA-2008:211</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2782" adv="1">ADV-2008-2782</ref>
+ <ref source="CONFIRM" url="http://www.cups.org/str.php?L2919">http://www.cups.org/str.php?L2919</ref>
+ <ref source="CONFIRM" url="http://www.cups.org/articles.php?L575">http://www.cups.org/articles.php?L575</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32226" adv="1">32226</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32084" adv="1">32084</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="apple" name="cups">
+ <vers num="1.1" />
+ <vers num="1.1.1" />
+ <vers num="1.1.10" />
+ <vers num="1.1.10-1" />
+ <vers num="1.1.11" />
+ <vers num="1.1.12" />
+ <vers num="1.1.13" />
+ <vers num="1.1.14" />
+ <vers num="1.1.15" />
+ <vers num="1.1.16" />
+ <vers num="1.1.17" />
+ <vers num="1.1.18" />
+ <vers edition="rc1" num="1.1.19" />
+ <vers edition="rc2" num="1.1.19" />
+ <vers edition="rc3" num="1.1.19" />
+ <vers edition="rc4" num="1.1.19" />
+ <vers edition="rc5" num="1.1.19" />
+ <vers num="1.1.2" />
+ <vers edition="rc1" num="1.1.20" />
+ <vers edition="rc2" num="1.1.20" />
+ <vers edition="rc3" num="1.1.20" />
+ <vers edition="rc4" num="1.1.20" />
+ <vers edition="rc5" num="1.1.20" />
+ <vers edition="rc6" num="1.1.20" />
+ <vers edition="rc1" num="1.1.21" />
+ <vers edition="rc2" num="1.1.21" />
+ <vers edition="rc1" num="1.1.22" />
+ <vers edition="rc2" num="1.1.22" />
+ <vers edition="rc1" num="1.1.23" />
+ <vers num="1.1.3" />
+ <vers num="1.1.4" />
+ <vers num="1.1.5" />
+ <vers num="1.1.5-1" />
+ <vers num="1.1.5-2" />
+ <vers num="1.1.6" />
+ <vers num="1.1.6-1" />
+ <vers num="1.1.6-2" />
+ <vers num="1.1.6-3" />
+ <vers num="1.1.7" />
+ <vers num="1.1.8" />
+ <vers num="1.1.9" />
+ <vers num="1.1.9-1" />
+ <vers edition="b1" num="1.2" />
+ <vers edition="b2" num="1.2" />
+ <vers edition="rc1" num="1.2" />
+ <vers edition="rc2" num="1.2" />
+ <vers edition="rc3" num="1.2" />
+ <vers num="1.2.0" />
+ <vers num="1.2.1" />
+ <vers num="1.2.10" />
+ <vers num="1.2.11" />
+ <vers num="1.2.12" />
+ <vers num="1.2.2" />
+ <vers num="1.2.3" />
+ <vers num="1.2.4" />
+ <vers num="1.2.5" />
+ <vers num="1.2.6" />
+ <vers num="1.2.7" />
+ <vers num="1.2.8" />
+ <vers num="1.2.9" />
+ <vers edition="b1" num="1.3" />
+ <vers edition="rc1" num="1.3" />
+ <vers edition="rc2" num="1.3" />
+ <vers num="1.3.0" />
+ <vers num="1.3.1" />
+ <vers num="1.3.2" />
+ <vers num="1.3.3" />
+ <vers num="1.3.4" />
+ <vers num="1.3.5" />
+ <vers num="1.3.6" />
+ <vers num="1.3.7" />
+ <vers num="1.3.8" prev="1" />
+ </prod>
+ <prod vendor="cups" name="cups">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-4385" seq="2008-4385" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Husdawg, LLC Systems Requirements Lab 3 allows remote attackers to force the download and execution of arbitrary programs via unknown vectors in (1) ActiveX control (sysreqlab.dll, sysreqlabsli.dll, or sysreqlab2.dll) and (2) Java applet in RLApplet.class in sysreqlab2.jar or sysreqlab.jar.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CERT-VN" url="http://www.kb.cert.org/vuls/id/166651" adv="1">VU#166651</ref>
+ <ref source="CONFIRM" url="http://www.systemrequirementslab.com/bulletins/security_bulletin_1.html" adv="1">http://www.systemrequirementslab.com/bulletins/security_bulletin_1.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="systemrequirementslab" name="system_requirements_lab">
+ <vers num="3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4397" seq="2008-4397" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Directory traversal vulnerability in the RPC interface (asdbapi.dll) in CA ARCserve Backup (formerly BrightStor ARCserve Backup) r11.1 through r12.0 allows remote attackers to execute arbitrary commands via a .. (dot dot) in an RPC call with opnum 0x10A.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" patch="1" url="https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143" adv="1">https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497281/100/0/threaded">20081011 CA BrightStor ARCServe BackUp Message Engine Remote Command Injection Vulnerability</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ca" name="arcserve_backup">
+ <vers num="r11.1" />
+ <vers num="r11.5" />
+ <vers num="r12.0" />
+ </prod>
+ <prod vendor="ca" name="business_protection_suite">
+ <vers edition="" num="r2" />
+ <vers edition=":microsoft_small_business_server_premium" num="r2" />
+ <vers edition=":microsoft_small_business_server_standard" num="r2" />
+ </prod>
+ <prod vendor="ca" name="server_protection_suite">
+ <vers num="r2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4398" seq="2008-4398" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the tape engine service in asdbapi.dll in CA ARCserve Backup (formerly BrightStor ARCserve Backup) r11.1 through r12.0 allows remote attackers to cause a denial of service (crash) via a crafted request.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143" adv="1">https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ca" name="arcserve_backup">
+ <vers num="r11.1" />
+ <vers num="r11.5" />
+ <vers num="r12.0" />
+ </prod>
+ <prod vendor="ca" name="business_protection_suite">
+ <vers edition="" num="r2" />
+ <vers edition=":microsoft_small_business_server_premium" num="r2" />
+ <vers edition=":microsoft_small_business_server_standard" num="r2" />
+ </prod>
+ <prod vendor="ca" name="server_protection_suite">
+ <vers num="r2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4399" seq="2008-4399" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the database engine service in asdbapi.dll in CA ARCserve Backup (formerly BrightStor ARCserve Backup) r11.1 through r12.0 allows remote attackers to cause a denial of service (crash) via a crafted request, related to "insufficient validation."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" patch="1" url="https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143" adv="1">https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ca" name="arcserve_backup">
+ <vers num="r11.1" />
+ <vers num="r11.5" />
+ <vers num="r12.0" />
+ </prod>
+ <prod vendor="ca" name="business_protection_suite">
+ <vers edition="" num="r2" />
+ <vers edition=":microsoft_small_business_server_premium" num="r2" />
+ <vers edition=":microsoft_small_business_server_standard" num="r2" />
+ </prod>
+ <prod vendor="ca" name="server_protection_suite">
+ <vers num="r2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4400" seq="2008-4400" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in asdbapi.dll in CA ARCserve Backup (formerly BrightStor ARCserve Backup) r11.1 through r12.0 allows remote attackers to cause a denial of service (crash of multiple services) via crafted authentication credentials, related to "insufficient validation."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" patch="1" url="https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143" adv="1">https://support.ca.com/irj/portal/anonymous/phpsupcontent?contentID=188143</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ca" name="arcserve_backup">
+ <vers num="r11.1" />
+ <vers num="r11.5" />
+ <vers num="r12.0" />
+ </prod>
+ <prod vendor="ca" name="business_protection_suite">
+ <vers edition="" num="r2" />
+ <vers edition=":microsoft_small_business_server_premium" num="r2" />
+ <vers edition=":microsoft_small_business_server_standard" num="r2" />
+ </prod>
+ <prod vendor="ca" name="server_protection_suite">
+ <vers num="r2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:C/I:C/A:C)" CVSS_base_score="8.5" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="10.0" name="CVE-2008-4555" seq="2008-4555" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="8.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Stack-based buffer overflow in the push_subg function in parser.y (lib/graph/parser.c) in Graphviz 2.20.2, and possibly earlier versions, allows user-assisted remote attackers to cause a denial of service (memory corruption) or execute arbitrary code via a DOT file with a large number of Agraph_t elements.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31648">31648</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497150/100/0/threaded">20081008 Advisory: Graphviz Buffer Overflow Code Execution</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32186" adv="1">32186</ref>
+ <ref source="MISC" url="http://roeehay.blogspot.com/2008/10/graphviz-buffer-overflow-code-execution.html">http://roeehay.blogspot.com/2008/10/graphviz-buffer-overflow-code-execution.html</ref>
+ <ref source="CONFIRM" url="http://bugs.gentoo.org/show_bug.cgi?id=240636">http://bugs.gentoo.org/show_bug.cgi?id=240636</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="graphviz" name="graphviz">
+ <vers num="1.10_2003-09-15_0415_1" />
+ <vers num="1.10_2003-09-15_0415_2" />
+ <vers num="1.12.1" />
+ <vers num="1.12.2" />
+ <vers num="1.12.3" />
+ <vers num="1.14.1" />
+ <vers num="1.16.1" />
+ <vers num="1.5.1" />
+ <vers num="1.5.2" />
+ <vers num="1.5.3" />
+ <vers num="1.7.16.1" />
+ <vers num="1.7.16.2" />
+ <vers num="1.7.5.1" />
+ <vers num="1.7.5.2" />
+ <vers num="1.7.5.3" />
+ <vers num="1.7.5.4" />
+ <vers num="1.7.5.5" />
+ <vers num="1.7.5.6" />
+ <vers num="1.7.5.7" />
+ <vers num="1.7.5_0.1" />
+ <vers num="1.7.5_0.2" />
+ <vers num="1.7.5_0.3" />
+ <vers num="1.8.5.1" />
+ <vers num="1.8.5.2" />
+ <vers num="1.8.9.1" />
+ <vers num="2.10" />
+ <vers num="2.12" />
+ <vers num="2.14" />
+ <vers num="2.16" />
+ <vers num="2.18" />
+ <vers num="2.2" />
+ <vers num="2.2.1" />
+ <vers num="2.2.1.1" />
+ <vers num="2.2.2" />
+ <vers num="2.20.0" />
+ <vers num="2.20.1" />
+ <vers num="2.20.2" prev="1" />
+ <vers num="2.4" />
+ <vers num="2.6" />
+ <vers num="2.8" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:P/I:N/A:N)" CVSS_base_score="2.1" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="2.9" name="CVE-2008-2588" seq="2008-2588" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="2.1" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle JDeveloper component in Oracle Application Server 10.1.2.2 allows local users to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="jdeveloper">
+ <vers num="10.1.2.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:S/C:N/I:N/A:P)" CVSS_base_score="1.7" CVSS_exploit_subscore="3.1" CVSS_impact_subscore="2.9" name="CVE-2008-2619" seq="2008-2619" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="1.7" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Reports Developer component in Oracle Application Server 1.0.2.2, 9.0.4.3, and 10.1.2.2, and E-Business Suite 11.5.10.2, allows remote authenticated users to affect availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="application_server">
+ <vers num="1.0.2.2" />
+ <vers num="10.1.2.2" />
+ <vers num="9.0.4.3" />
+ </prod>
+ <prod vendor="oracle" name="e-business_suite">
+ <vers num="11.5.10.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:P)" CVSS_base_score="6.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="6.4" name="CVE-2008-2624" seq="2008-2624" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle OLAP component in Oracle Database 10.1.0.5 allows remote authenticated users to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:H/Au:N/C:P/I:P/A:N)" CVSS_base_score="4.0" CVSS_exploit_subscore="4.9" CVSS_impact_subscore="4.9" name="CVE-2008-2625" seq="2008-2625" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Core RDBMS component in Oracle Database 9.2.0.8, 9.2.0.8DV, 10.1.0.5, and 10.2.0.2 allows remote attackers to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.2" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:P/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-3975" seq="2008-3975" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Portal component in Oracle Application Server 9.0.4.3 and 10.1.2.3 allows remote attackers to affect integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="application_server">
+ <vers num="10.1.2.3" />
+ <vers num="9.0.4.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3976" seq="2008-3976" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Spatial component in Oracle Database 9.2.0.8, 9.2.0.8DV, 10.1.0.5, and 10.2.0.3 allows remote authenticated users to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.3" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:P/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-3977" seq="2008-3977" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Portal component in Oracle Application Server 9.0.4.3 and 10.1.2.3 allows remote attackers to affect integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="application_server">
+ <vers num="10.1.2.3" />
+ <vers num="9.0.4.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:P/I:P/A:N)" CVSS_base_score="4.9" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="4.9" name="CVE-2008-3980" seq="2008-3980" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.9" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Upgrade component in Oracle Database 10.1.0.5 and 10.2.0.3 allows remote authenticated users to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3982" seq="2008-3982" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Workspace Manager component in Oracle Database 9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.3, and 11.1.0.6 allows remote authenticated users to affect confidentiality and integrity, related to SYS.LT and WMSYS.LT.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.3" />
+ </prod>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3983" seq="2008-3983" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Workspace Manager component in Oracle Database 9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.3, and 11.1.0.6 allows remote authenticated users to affect confidentiality and integrity, related to SYS.LT and WMSYS.LT.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.3" />
+ </prod>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3984" seq="2008-3984" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Workspace Manager component in Oracle Database 9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.3, and 11.1.0.6 allows remote authenticated users to affect confidentiality and integrity, related to SYS.LT and WMSYS.LT.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.3" />
+ </prod>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:N/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-3985" seq="2008-3985" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Applications Technology Stack component in Oracle E-Business Suite 12.0.4 allows remote attackers to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="e-business_suite">
+ <vers num="12.0.4" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:H/Au:S/C:P/I:N/A:N)" CVSS_base_score="1.0" CVSS_exploit_subscore="1.5" CVSS_impact_subscore="2.9" name="CVE-2008-3986" seq="2008-3986" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="1.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Discoverer Administrator component in Oracle Application Server 9.0.4.3 and 10.1.2.2 allows local users to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="application_server">
+ <vers num="10.1.2.2" />
+ <vers num="9.0.4.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:H/Au:S/C:P/I:N/A:N)" CVSS_base_score="1.0" CVSS_exploit_subscore="1.5" CVSS_impact_subscore="2.9" name="CVE-2008-3987" seq="2008-3987" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="1.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Discoverer Desktop component in Oracle Application Server 10.1.2.3 allows local users to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="application_server">
+ <vers num="10.1.2.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:N/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-3988" seq="2008-3988" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the iSupplier Portal component in Oracle E-Business Suite 11.5.10.2 and 12.0.4 allows remote attackers to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="e-business_suite">
+ <vers num="10.2" />
+ <vers num="11.5" />
+ <vers num="12.0.4" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:P)" CVSS_base_score="6.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="6.4" name="CVE-2008-3989" seq="2008-3989" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Data Mining component in Oracle Database 10.2.0.3 allows remote authenticated users to affect confidentiality, integrity, and availability, related to DMSYS.ODM_MODEL_UTIL.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.2.0.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:N/I:N/A:P)" CVSS_base_score="4.0" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="2.9" name="CVE-2008-3990" seq="2008-3990" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle OLAP component in Oracle Database 9.2.08, 9.2.0.8DV, and 10.1.0.5 allows remote authenticated users to affect availability, related to OLAPSYS.CWM2_OLAP_AW_AWUTIL.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:N/I:N/A:P)" CVSS_base_score="4.0" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="2.9" name="CVE-2008-3991" seq="2008-3991" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle OLAP component in Oracle Database 9.2.08, 9.2.0.8DV, and 10.1.0.5 allows remote authenticated users to affect availability, related to OLAPSYS.CWM2_OLAP_AW_AWUTIL.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3992" seq="2008-3992" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Data Mining component in Oracle Database 10.2.0.4 allows remote authenticated users to affect confidentiality and integrity, related to DMSYS.DBMS_DM_EXP_INTERNAL.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.2.0.4" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:N/I:P/A:N)" CVSS_base_score="3.5" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="2.9" name="CVE-2008-3993" seq="2008-3993" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="3.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Applications Framework component in Oracle E-Business Suite 11.5.10.2 and 12.0.4 allows remote authenticated users to affect integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="e-business_suite">
+ <vers num="10.2" />
+ <vers num="11.5" />
+ <vers num="12.0.4" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3994" seq="2008-3994" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Workspace Manager component in Oracle Database 9.2.0.8, 9.2.0.8DV, 10.1.0.5, 10.2.0.3, and 11.1.0.6 allows remote authenticated users to affect confidentiality and integrity, related to WMSYS.LTADM.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.3" />
+ </prod>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ <prod vendor="oracle" name="database_9i">
+ <vers num="9.2.0.8" />
+ <vers num="9.2.0.8dv" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3995" seq="2008-3995" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Change Data Capture component in Oracle Database 10.1.0.5, 10.2.0.4, and 11.1.0.6 allows remote authenticated users to affect confidentiality and integrity, related to DBMS_CDC_PUBLISH.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.4" />
+ </prod>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="5.5" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="4.9" name="CVE-2008-3996" seq="2008-3996" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Change Data Capture component in Oracle Database 10.1.0.5, 10.2.0.4, and 11.1.0.6 allows remote authenticated users to affect confidentiality and integrity, related to SYS.DBMS_CDC_IPUBLISH.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_10g">
+ <vers num="10.1.0.5" />
+ <vers num="10.2.0.4" />
+ </prod>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:P/I:P/A:N)" CVSS_base_score="4.9" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="4.9" name="CVE-2008-3998" seq="2008-3998" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.9" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle iStore component in Oracle E-Business Suite 12.0.4 allows remote authenticated users to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="e-business_suite">
+ <vers num="12.0.4" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:N)" CVSS_base_score="6.4" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="4.9" name="CVE-2008-4000" seq="2008-4000" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.4" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the PeopleTools component in Oracle PeopleSoft Enterprise and JD Edwards EnterpriseOne 8.48.18 and 8.49.14 allows remote attackers to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="jdedwards" name="enterpriseone">
+ <vers num="8.48.18" />
+ </prod>
+ <prod vendor="oracle" name="jd_edwards_enterpriseone">
+ <vers num="8.49.14" />
+ </prod>
+ <prod vendor="oracle" name="peoplesoft_enterprise">
+ <vers num="8.48.18" />
+ </prod>
+ <prod vendor="oracle" name="peoplesoft_peopletools">
+ <vers num="8.49.14" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:P/I:P/A:N)" CVSS_base_score="4.9" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="4.9" name="CVE-2008-4001" seq="2008-4001" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.9" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the PeopleSoft Enterprise Portal component in Oracle PeopleSoft Enterprise and JD Edwards EnterpriseOne EP 8.9 and EP 9.0 allows remote authenticated users to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="jd_edwards_enterpriseone_ep">
+ <vers num="8.9" />
+ <vers num="9.0" />
+ </prod>
+ <prod vendor="oracle" name="peoplesoft_enterprise">
+ <vers num="8.9" />
+ <vers num="9.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:S/C:P/I:N/A:N)" CVSS_base_score="3.5" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="2.9" name="CVE-2008-4002" seq="2008-4002" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="3.5" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the PeopleTools component in Oracle PeopleSoft Enterprise and JD Edwards EnterpriseOne 8.48.18 and 8.49.14 allows remote authenticated users to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="jd_edwards_enterpriseone">
+ <vers num="8.48.18" />
+ <vers num="8.49.14" />
+ </prod>
+ <prod vendor="oracle" name="peoplesoft_enterprise">
+ <vers num="8.48.18" />
+ <vers num="8.49.14" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:N/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4003" seq="2008-4003" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the PeopleTools component in Oracle PeopleSoft Enterprise and JD Edwards EnterpriseOne 8.48.18 and 8.49.14 allows remote attackers to affect confidentiality via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="jd_edwards_enterpriseone">
+ <vers num="8.48.18" />
+ <vers num="8.49.14" />
+ </prod>
+ <prod vendor="oracle" name="peoplesoft_enterprise">
+ <vers num="8.48.18" />
+ <vers num="8.49.14" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:S/C:P/I:P/A:N)" CVSS_base_score="3.2" CVSS_exploit_subscore="3.1" CVSS_impact_subscore="4.9" name="CVE-2008-4004" seq="2008-4004" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="3.2" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the JDE EnterpriseOne Business Service Server component in Oracle PeopleSoft Enterprise and JD Edwards EnterpriseOne 8.97.2.2 and 8.98.0.1 allows local users to affect confidentiality and integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="jdedwards" name="enterpriseone">
+ <vers num="8.97.2.2" />
+ <vers num="8.98.0.1" />
+ </prod>
+ <prod vendor="oracle" name="peoplesoft_enterprise">
+ <vers num="8.97.2.2" />
+ <vers num="8.98.0.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:H/Au:M/C:P/I:P/A:P)" CVSS_base_score="4.3" CVSS_exploit_subscore="3.2" CVSS_impact_subscore="6.4" name="CVE-2008-4005" seq="2008-4005" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the Oracle Application Express component in Oracle Database 11.1.0.6 allows remote authenticated users to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="database_11i">
+ <vers num="11.1.0.6" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4008" seq="2008-4008" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the WebLogic Server Plugins for Apache component in BEA Product Suite 10.3, 10.0 MP1, 9.2 MP3, 9.1, 9.0, 8.1 SP6, 7.0 SP7, and 6.1 SP7 allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="bea_product_suite">
+ <vers edition="mp1" num="10.0" />
+ <vers num="10.3" />
+ <vers edition="sp7" num="6.1" />
+ <vers edition="sp7" num="7.0" />
+ <vers edition="sp6" num="8.1" />
+ <vers num="9.0" />
+ <vers num="9.1" />
+ <vers edition="mp3" num="9.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:H/Au:N/C:P/I:P/A:P)" CVSS_base_score="5.1" CVSS_exploit_subscore="4.9" CVSS_impact_subscore="6.4" name="CVE-2008-4009" seq="2008-4009" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.1" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the WebLogic Server component in BEA Product Suite 9.1 allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="bea_product_suite">
+ <vers num="9.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-4010" seq="2008-4010" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the WebLogic Workshop component in BEA Product Suite 10.3, 10.2, 10.0 MP1, 9.2 MP3, and 8.1 SP6 allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="bea_product_suite">
+ <vers edition="mp1" num="10.0" />
+ <vers num="10.2" />
+ <vers num="10.3" />
+ <vers edition="sp6" num="8.1" />
+ <vers edition="mp3" num="9.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:H/Au:S/C:N/I:P/A:N)" CVSS_base_score="2.1" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="2.9" name="CVE-2008-4011" seq="2008-4011" severity="Low" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="2.1" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the WebLogic Server component in BEA Product Suite 10.0 MP1, 9.2 MP3, 9.1, and 9.0 allows remote authenticated users to affect integrity via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="bea_product_suite">
+ <vers edition="mp1" num="10.0" />
+ <vers num="9.0" />
+ <vers num="9.1" />
+ <vers edition="mp3" num="9.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:H/Au:N/C:P/I:P/A:P)" CVSS_base_score="5.1" CVSS_exploit_subscore="4.9" CVSS_impact_subscore="6.4" name="CVE-2008-4012" seq="2008-4012" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="5.1" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the WebLogic Workshop component in BEA Product Suite WLW 8.1SP5 allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html" adv="1">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="bea" name="weblogic_workshop">
+ <vers edition="sp5" num="8.1" />
+ </prod>
+ <prod vendor="oracle" name="weblogic_workshop">
+ <vers edition="sp5" num="8.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-4013" seq="2008-4013" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the WebLogic Server component in BEA Product Suite 10.0 MP1, 9.2 MP3, 9.1, 9.0, and 8.1 SP6 allows remote attackers to affect confidentiality, integrity, and availability via unknown vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html">http://www.oracle.com/technology/deploy/security/critical-patch-updates/cpuoct2008.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="oracle" name="bea_product_suite">
+ <vers edition="mp1" num="10.0" />
+ <vers edition="sp6" num="8.1" />
+ <vers num="9.0" />
+ <vers num="9.1" />
+ <vers edition="mp3" num="9.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4478" seq="2008-4478" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Multiple integer overflows in dhost.exe in Novell eDirectory 8.8 before 8.8.3, and 8.73 before 8.7.3.10 ftf1, allow remote attackers to execute arbitrary code via a crafted (1) Content-Length header in a SOAP request or (2) Netware Core Protocol opcode 0x0F message, which triggers a heap-based buffer overflow.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.zerodayinitiative.com/advisories/ZDI-08-065">http://www.zerodayinitiative.com/advisories/ZDI-08-065</ref>
+ <ref source="MISC" url="http://www.zerodayinitiative.com/advisories/ZDI-08-063">http://www.zerodayinitiative.com/advisories/ZDI-08-063</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497165/100/0/threaded">20081008 ZDI-08-065: Novell eDirectory Core Protocol Opcode 0x0F Heap Overflow Vulnerability</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497163/100/0/threaded">20081008 ZDI-08-063: Novell eDirectory dhost.exe Content-Length Header Heap Overflow Vulnerability</ref>
+ <ref source="CONFIRM" url="http://www.novell.com/support/php/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=7001184&amp;sliceId=1&amp;docTypeID=DT_TID_1_1&amp;dialogID=78066829&amp;stateId=0%200%2078062953" adv="1">http://www.novell.com/support/php/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=7001184&amp;sliceId=1&amp;docTypeID=DT_TID_1_1&amp;dialogID=78066829&amp;stateId=0%200%2078062953</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="novell" name="edirectory">
+ <vers num="8.7" />
+ <vers edition="sp1" num="8.7.1" />
+ <vers num="8.7.3" />
+ <vers num="8.7.3.10" prev="1" />
+ <vers num="8.7.3.8" />
+ <vers num="8.7.3.8_presp9" />
+ <vers edition="" num="8.7.3.9" />
+ <vers edition=":linux" num="8.7.3.9" />
+ <vers edition=":windows_2003" num="8.7.3.9" />
+ <vers edition=":solaris" num="8.7.3.9" />
+ <vers edition=":windows_2000" num="8.7.3.9" />
+ <vers edition="" num="8.8" />
+ <vers edition=":solaris" num="8.8" />
+ <vers edition=":windows_2003" num="8.8" />
+ <vers edition=":windows_2000" num="8.8" />
+ <vers edition=":linux" num="8.8" />
+ <vers edition="" num="8.8.1" />
+ <vers edition=":windows_2003" num="8.8.1" />
+ <vers edition=":windows_2000" num="8.8.1" />
+ <vers edition=":linux" num="8.8.1" />
+ <vers edition=":solaris" num="8.8.1" />
+ <vers edition="" num="8.8.2" />
+ <vers edition=":solaris" num="8.8.2" />
+ <vers edition=":windows_2000" num="8.8.2" />
+ <vers edition=":windows_2003" num="8.8.2" />
+ <vers edition=":linux" num="8.8.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4479" seq="2008-4479" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in dhost.exe in Novell eDirectory 8.8 before 8.8.3, and 8.7.3 before 8.7.3.10 ftf1, allows remote attackers to execute arbitrary code via a SOAP request with a long Accept-Language header.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.zerodayinitiative.com/advisories/ZDI-08-064">http://www.zerodayinitiative.com/advisories/ZDI-08-064</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497164/100/0/threaded">20081008 ZDI-08-064: Novell eDirectory dhost.exe Accept Language Header Heap Overflow Vulnerability</ref>
+ <ref source="CONFIRM" url="http://www.novell.com/support/php/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=7000086&amp;sliceId=1&amp;docTypeID=DT_TID_1_1&amp;dialogID=78066829&amp;stateId=0%200%2078062953">http://www.novell.com/support/php/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=7000086&amp;sliceId=1&amp;docTypeID=DT_TID_1_1&amp;dialogID=78066829&amp;stateId=0%200%2078062953</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="novell" name="edirectory">
+ <vers num="8.7.3" />
+ <vers num="8.7.3.10" prev="1" />
+ <vers num="8.7.3.8" />
+ <vers num="8.7.3.8_presp9" />
+ <vers edition="" num="8.7.3.9" />
+ <vers edition=":windows_2003" num="8.7.3.9" />
+ <vers edition=":solaris" num="8.7.3.9" />
+ <vers edition=":linux" num="8.7.3.9" />
+ <vers edition=":windows_2000" num="8.7.3.9" />
+ <vers edition="" num="8.8" />
+ <vers edition=":solaris" num="8.8" />
+ <vers edition=":windows_2003" num="8.8" />
+ <vers edition=":windows_2000" num="8.8" />
+ <vers edition=":linux" num="8.8" />
+ <vers edition="" num="8.8.1" />
+ <vers edition=":windows_2000" num="8.8.1" />
+ <vers edition=":linux" num="8.8.1" />
+ <vers edition=":windows_2003" num="8.8.1" />
+ <vers edition=":solaris" num="8.8.1" />
+ <vers edition="" num="8.8.2" prev="1" />
+ <vers edition=":linux" num="8.8.2" prev="1" />
+ <vers edition=":solaris" num="8.8.2" prev="1" />
+ <vers edition=":windows_2000" num="8.8.2" prev="1" />
+ <vers edition=":windows_2003" num="8.8.2" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4480" seq="2008-4480" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in dhost.exe in Novell eDirectory 8.x before 8.8.3, and 8.7.3 before 8.7.3.10 ftf1, allows remote attackers to execute arbitrary code via a crafted Netware Core Protocol opcode 0x24 message that triggers a calculation error that under-allocates a heap buffer.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MISC" url="http://www.zerodayinitiative.com/advisories/ZDI-08-066/">http://www.zerodayinitiative.com/advisories/ZDI-08-066/</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497169/100/0/threaded">20081008 ZDI-08-066: Novell eDirectory Core Protocol Opcode 0x24 Heap Overflow Vulnerability</ref>
+ <ref source="CONFIRM" url="http://www.novell.com/support/php/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=7001183&amp;sliceId=1&amp;docTypeID=DT_TID_1_1&amp;dialogID=78066829&amp;stateId=0%200%2078062953" adv="1">http://www.novell.com/support/php/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=7001183&amp;sliceId=1&amp;docTypeID=DT_TID_1_1&amp;dialogID=78066829&amp;stateId=0%200%2078062953</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="novell" name="edirectory">
+ <vers num="8.7.3" />
+ <vers num="8.7.3.10" prev="1" />
+ <vers num="8.7.3.8" />
+ <vers num="8.7.3.8_presp9" />
+ <vers edition="" num="8.7.3.9" />
+ <vers edition=":windows_2003" num="8.7.3.9" />
+ <vers edition=":solaris" num="8.7.3.9" />
+ <vers edition=":linux" num="8.7.3.9" />
+ <vers edition=":windows_2000" num="8.7.3.9" />
+ <vers edition="" num="8.8" />
+ <vers edition=":solaris" num="8.8" />
+ <vers edition=":windows_2003" num="8.8" />
+ <vers edition=":windows_2000" num="8.8" />
+ <vers edition=":linux" num="8.8" />
+ <vers edition="" num="8.8.1" />
+ <vers edition=":windows_2000" num="8.8.1" />
+ <vers edition=":linux" num="8.8.1" />
+ <vers edition=":windows_2003" num="8.8.1" />
+ <vers edition=":solaris" num="8.8.1" />
+ <vers edition="" num="8.8.2" prev="1" />
+ <vers edition=":linux" num="8.8.2" prev="1" />
+ <vers edition=":solaris" num="8.8.2" prev="1" />
+ <vers edition=":windows_2000" num="8.8.2" prev="1" />
+ <vers edition=":windows_2003" num="8.8.2" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4556" seq="2008-4556" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Stack-based buffer overflow in the adm_build_path function in sadmind in Sun Solstice AdminSuite on Solaris 8 and 9 allows remote attackers to execute arbitrary code via a crafted request.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31751">31751</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497311/100/0/threaded">20081014 [RISE-2008001] Sun Solstice AdminSuite sadmind adm_build_path()Buffer Overflow Vulnerability</ref>
+ <ref source="MISC" url="http://risesecurity.org/advisories/RISE-2008001.txt">http://risesecurity.org/advisories/RISE-2008001.txt</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="sun" name="solaris">
+ <vers edition="" num="8" />
+ <vers edition=":x86" num="8" />
+ <vers edition=":sparc" num="8" />
+ <vers edition="" num="9" />
+ <vers edition=":x86" num="9" />
+ <vers edition=":sparc" num="9" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4557" seq="2008-4557" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">plugins/wacko/highlight/html.php in Strawberry in CuteNews.ru 1.1.1 (aka Strawberry) allows remote attackers to execute arbitrary PHP code via the text parameter, which is inserted into an executable regular expression.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/39450">cutenews-html-code-execution(39450)</ref>
+ <ref source="OSVDB" url="http://www.osvdb.org/40236">40236</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/4851">4851</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28330" adv="1">28330</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="cutephp" name="cutenews">
+ <vers num="1.1.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-4558" seq="2008-4558" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Array index error in VLC media player 0.9.2 allows remote attackers to overwrite arbitrary memory and execute arbitrary code via an XSPF playlist file with a negative identifier tag, which passes a signed comparison.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MISC" patch="1" url="http://www.coresecurity.com/content/vlc-xspf-memory-corruption">http://www.coresecurity.com/content/vlc-xspf-memory-corruption</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="videolan" name="vlc_media_player">
+ <vers num="0.9.2" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:C/I:C/A:C)" CVSS_base_score="9.0" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="10.0" name="CVE-2008-1446" seq="2008-1446" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Integer overflow in the Internet Printing Protocol (IPP) ISAPI extension in Microsoft Internet Information Services (IIS) 5.0 through 7.0 on Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, and Server 2008 allows remote authenticated users to execute arbitrary code via an HTTP POST request that triggers an outbound IPP connection from a web server to a machine operated by the attacker, aka "Integer Overflow in IPP Service Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-062.mspx">MS08-062</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="iis">
+ <vers num="5.0" />
+ <vers num="5.1" />
+ <vers edition="beta" num="6.0" />
+ <vers num="7.0" />
+ </prod>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2003">
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp2:itanium" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2008">
+ <vers edition=":itanium" num="" />
+ <vers edition=":x32" num="" />
+ <vers edition=":x64" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-2250" seq="2008-2250" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-15">
+ <desc>
+ <descript source="cve">The kernel in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, Vista Gold and SP1, and Server 2008 does not properly validate window properties sent from a parent window to a child window during creation of a new window, which allows local users to gain privileges via a crafted application, aka "Windows Kernel Window Creation Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-061.mspx" adv="1">MS08-061</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2003">
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp2:itanium" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2008">
+ <vers edition=":itanium" num="" />
+ <vers edition=":x32" num="" />
+ <vers edition=":x64" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_vista">
+ <vers edition=":x64" num="" />
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers num="sp1" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="" />
+ <vers edition="x64" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-2251" seq="2008-2251" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Double free vulnerability in the kernel in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, Vista Gold and SP1, and Server 2008 allows local users to gain privileges via a crafted application that makes system calls within multiple threads, aka "Windows Kernel Unhandled Exception Vulnerability." NOTE: according to Microsoft, this is not a duplicate of CVE-2008-4510.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-061.mspx" adv="1">MS08-061</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2003">
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp2:itanium" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2008">
+ <vers edition=":itanium" num="" />
+ <vers edition=":x32" num="" />
+ <vers edition=":x64" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="" />
+ <vers edition="x64" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-2252" seq="2008-2252" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-15">
+ <desc>
+ <descript source="cve">The kernel in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, Vista Gold and SP1, and Server 2008 does not properly validate parameters sent from user mode to the kernel, which allows local users to gain privileges via a crafted application, aka "Windows Kernel Memory Corruption Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-061.mspx" adv="1">MS08-061</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2003">
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp2:itanium" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2008">
+ <vers edition=":itanium" num="" />
+ <vers edition=":x32" num="" />
+ <vers edition=":x64" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_vista">
+ <vers edition=":x64" num="" />
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers num="sp1" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="" />
+ <vers edition="x64" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-3464" seq="2008-3464" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-15">
+ <desc>
+ <descript source="cve">afd.sys in the Ancillary Function Driver (AFD) component in Microsoft Windows XP SP2 and SP3 and Windows Server 2003 SP1 and SP2 does not properly validate input sent from user mode to the kernel, which allows local users to gain privileges via a crafted application, aka "AFD Kernel Overwrite Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-066.mspx" adv="1">MS08-066</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2003_server">
+ <vers edition=":x64" num="" />
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:itanium" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="professional" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition=":professional_x64" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:professional_x64" num="" />
+ <vers edition="sp3" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-3466" seq="2008-3466" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Host Integration Server (HIS) 2000, 2004, and 2006 does not limit RPC access to administrative functions, which allows remote attackers to bypass authentication and execute arbitrary code via a crafted SNA RPC message, aka "HIS Command Execution Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-059.mspx" adv="1">MS08-059</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsft" name="host_integration_server">
+ <vers edition="sp2" num="2000" />
+ <vers edition="sp2:server" num="2000" />
+ <vers edition="unknown" num="2000" />
+ <vers edition="unknown:administrator_client" num="2000" />
+ <vers edition="sp1" num="2004" />
+ <vers edition="sp1:server" num="2004" />
+ <vers edition="unknown" num="2004" />
+ <vers edition="unknown:client" num="2004" />
+ <vers edition="unknown:server" num="2004" />
+ <vers edition="unknown" num="2006" />
+ <vers edition="unknown:x32" num="2006" />
+ <vers edition="x64" num="2006unknown" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-3471" seq="2008-3471" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Excel 2000 SP3, 2002 SP3, 2003 SP2 and SP3, and 2007 Gold and SP1; Office Excel Viewer 2003 SP3; Office Excel Viewer; Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats Gold and SP1; Office 2004 and 2008 for Mac; and Open XML File Format Converter for Mac do not properly allocate memory when loading Excel objects during parsing of the Excel spreadsheet file format, which allows remote attackers to execute arbitrary code via a crafted BIFF file, aka "File Format Parsing Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-057.mspx">MS08-057</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsft" name="open_xml_file_format_converter">
+ <vers edition="mac" num="unknown" />
+ </prod>
+ <prod vendor="microsoft" name="office">
+ <vers edition="sp3" num="2000" />
+ <vers edition="sp2" num="2003" />
+ <vers edition="sp3" num="2003" />
+ <vers edition="" num="2004" />
+ <vers edition=":mac" num="2004" />
+ <vers edition="sp1" num="2007" />
+ <vers edition="" num="2008" />
+ <vers edition=":mac" num="2008" />
+ <vers edition="sp3" num="xp" />
+ </prod>
+ <prod vendor="microsoft" name="office_compatibility_pack_for_word_excel_ppt_2007">
+ <vers edition=":sp1" num="" />
+ </prod>
+ <prod vendor="microsoft" name="office_excel_viewer">
+ <vers edition="sp3" num="2003" />
+ </prod>
+ <prod vendor="microsoft" name="office_sharepoint_server">
+ <vers edition="sp1" num="2007" />
+ <vers edition="sp1:x64" num="2007" />
+ <vers edition="unknown" num="2007" />
+ <vers edition="unknown:x64" num="2007" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3472" seq="2008-3472" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Internet Explorer 6 and 7 does not properly determine the domain or security zone of origin of web script, which allows remote attackers to bypass the intended cross-domain security policy, and execute arbitrary code or obtain sensitive information, via a crafted HTML document, aka "HTML Element Cross-Domain Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-058.mspx">MS08-058</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="internet_explorer">
+ <vers edition="sp4" num="5.01" />
+ <vers edition="sp1" num="6" />
+ <vers num="7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3473" seq="2008-3473" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Internet Explorer 6 and 7 does not properly determine the domain or security zone of origin of web script, which allows remote attackers to bypass the intended cross-domain security policy, and execute arbitrary code or obtain sensitive information, via a crafted HTML document, aka "Event Handling Cross-Domain Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-058.mspx" adv="1">MS08-058</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="internet_explorer">
+ <vers edition="sp4" num="5.01" />
+ <vers edition="sp1" num="6" />
+ <vers num="7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:N/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-3474" seq="2008-3474" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Internet Explorer 6 and 7 does not properly determine the domain or security zone of origin of web script, which allows remote attackers to bypass the intended cross-domain security policy and obtain sensitive information via a crafted HTML document, aka "Cross-Domain Information Disclosure Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-058.mspx">MS08-058</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="internet_explorer">
+ <vers edition="sp4" num="5.01" />
+ <vers edition="sp1" num="6" />
+ <vers num="7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3475" seq="2008-3475" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Internet Explorer 6 does not properly handle errors associated with access to an object that has been (1) incorrectly initialized or (2) deleted, which allows remote attackers to execute arbitrary code via a crafted HTML document, aka "Uninitialized Memory Corruption Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-058.mspx" adv="1">MS08-058</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="internet_explorer">
+ <vers edition="sp4" num="5.01" />
+ <vers edition="sp1" num="6" />
+ <vers num="7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3476" seq="2008-3476" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Internet Explorer 5.01 SP4 and 6 does not properly handle errors associated with access to uninitialized memory, which allows remote attackers to execute arbitrary code via a crafted HTML document, aka "HTML Objects Memory Corruption Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-058.mspx" adv="1">MS08-058</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="internet_explorer">
+ <vers edition="sp4" num="5.01" />
+ <vers edition="sp1" num="6" />
+ <vers num="7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-3477" seq="2008-3477" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Microsoft Excel 2000 SP3, 2002 SP3, and 2003 SP2 and SP3 does not properly validate data in the VBA Performance Cache, which allows remote attackers to execute arbitrary code via a crafted Excel file, aka "Calendar Object Validation Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-057.mspx" adv="1">MS08-057</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="internet_explorer">
+ <vers edition="sp4" num="5.01" />
+ <vers edition="sp1" num="6" />
+ <vers num="7" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-3479" seq="2008-3479" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">The Microsoft Message Queuing (MSMQ) service in Microsoft Windows 2000 SP4 does not properly validate parameters to string APIs, which allows remote attackers to execute arbitrary code via a crafted RPC call that overflows a "heap request," aka "Message Queuing Service Remote Code Execution Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-065.mspx" adv="1">MS08-065</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-4019" seq="2008-4019" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Integer overflow in the REPT function in Microsoft Excel 2000 SP3, 2002 SP3, 2003 SP2 and SP3, and 2007 Gold and SP1; Office Excel Viewer 2003 SP3; Office Excel Viewer; Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats Gold and SP1; Office SharePoint Server 2007 Gold and SP1; Office 2004 and 2008 for Mac; and Open XML File Format Converter for Mac allows remote attackers to execute arbitrary code via an Excel file containing a formula within a cell, aka "Formula Parsing Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-057.mspx" adv="1">MS08-057</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsft" name="open_xml_file_format_converter">
+ <vers edition="mac" num="unknown" />
+ </prod>
+ <prod vendor="microsoft" name="office">
+ <vers edition="sp3" num="2000" />
+ <vers edition="sp2" num="2003" />
+ <vers edition="sp3" num="2003" />
+ <vers edition="" num="2004" />
+ <vers edition=":mac" num="2004" />
+ <vers edition="sp1" num="2007" />
+ <vers edition="" num="2008" />
+ <vers edition=":mac" num="2008" />
+ <vers edition="sp3" num="xp" />
+ </prod>
+ <prod vendor="microsoft" name="office_compatibility_pack_for_word_excel_ppt_2007">
+ <vers edition=":sp1" num="" />
+ </prod>
+ <prod vendor="microsoft" name="office_excel_viewer">
+ <vers edition="sp3" num="2003" />
+ </prod>
+ <prod vendor="microsoft" name="office_sharepoint_server">
+ <vers edition="sp1" num="2007" />
+ <vers edition="sp1:x64" num="2007" />
+ <vers edition="unknown" num="2007" />
+ <vers edition="unknown:x64" num="2007" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4020" seq="2008-4020" severity="Medium" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in Microsoft Office XP SP3 allows remote attackers to inject arbitrary web script or HTML via a document that contains a "Content-Disposition: attachment" header and is accessed through a cdo: URL, which renders the content instead of raising a File Download dialog box, aka "Vulnerability in Content-Disposition Header Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-056.mspx" adv="1">MS08-056</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="office">
+ <vers edition="sp3" num="xp" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4023" seq="2008-4023" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Active Directory in Microsoft Windows 2000 SP4 does not properly allocate memory for (1) LDAP and (2) LDAPS requests, which allows remote attackers to execute arbitrary code via a crafted request, aka "Active Directory Overflow Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-060.mspx" adv="1">MS08-060</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-4036" seq="2008-4036" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Integer overflow in Memory Manager in Microsoft Windows XP SP2 and SP3, Server 2003 SP1 and SP2, Vista Gold and SP1, and Server 2008 allows local users to gain privileges via a crafted application that triggers an erroneous decrement of a variable, related to validation of parameters for Virtual Address Descriptors (VADs) and a "memory allocation mapping error," aka "Virtual Address Descriptor Elevation of Privilege Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-064.mspx">MS08-064</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_server_2003">
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp2:itanium" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2008">
+ <vers edition=":itanium" num="" />
+ <vers edition=":x32" num="" />
+ <vers edition=":x64" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_vista">
+ <vers edition=":x64" num="" />
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers num="sp1" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="" />
+ <vers edition="x64" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4038" seq="2008-4038" severity="High" type="CVE" published="2008-10-14" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Buffer underflow in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2, Vista Gold and SP1, and Server 2008 allows remote attackers to execute arbitrary code via a Server Message Block (SMB) request that contains a filename with a crafted length, aka "SMB Buffer Underflow Vulnerability."</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MS" url="http://www.microsoft.com/technet/security/Bulletin/MS08-063.mspx" adv="1">MS08-063</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="microsoft" name="windows_2000">
+ <vers edition="sp4" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2003">
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers edition="sp1:itanium" num="" />
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp2:itanium" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_server_2008">
+ <vers edition=":itanium" num="" />
+ <vers edition=":x32" num="" />
+ <vers edition=":x64" num="" />
+ </prod>
+ <prod vendor="microsoft" name="windows_vista">
+ <vers edition=":x64" num="" />
+ <vers edition="sp1" num="" />
+ <vers edition="sp1:x64" num="" />
+ <vers num="sp1" />
+ </prod>
+ <prod vendor="microsoft" name="windows_xp">
+ <vers edition="sp2" num="" />
+ <vers edition="sp2:x64" num="" />
+ <vers edition="sp3" num="" />
+ <vers edition="x64" num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4569" seq="2008-4569" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in xlacomments.asp in XIGLA Software Absolute Poll Manager XE 4.1 allows remote attackers to execute arbitrary SQL commands via the p parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31724">31724</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6731">6731</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="xigla" name="absolute_poll_manager_xe">
+ <vers num="4.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4570" seq="2008-4570" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in index.php in Real Estate Classifieds allows remote attackers to execute arbitrary SQL commands via the cat parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31723">31723</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6736">6736</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32223" adv="1">32223</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="real-estate-scripts" name="real-estate-scripts">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4571" seq="2008-4571" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in the LiveSearch module in Plone before 3.0.4 allows remote attackers to inject arbitrary web script or HTML via the Description field for search results, as demonstrated using the onerror Javascript even in an IMG tag.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/27098">27098</ref>
+ <ref source="CONFIRM" patch="1" url="http://plone.org/products/plone/releases/3.0.4">http://plone.org/products/plone/releases/3.0.4</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28293" adv="1">28293</ref>
+ <ref source="CONFIRM" url="http://dev.plone.org/plone/ticket/7439" adv="1">http://dev.plone.org/plone/ticket/7439</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="plone" name="plone">
+ <vers num="2.0.5" />
+ <vers num="2.1.2" />
+ <vers num="2.5" />
+ <vers num="2.5.1" />
+ <vers num="2.5.1_rc" />
+ <vers num="2.5.4" />
+ <vers num="2.5_beta1" />
+ <vers num="3.0" />
+ <vers num="3.0.1" />
+ <vers num="3.0.2" />
+ <vers num="3.0.3" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4572" seq="2008-4572" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-16">
+ <desc>
+ <descript source="cve">GuildFTPd 0.999.14, and possibly other versions, allows remote attackers to cause a denial of service (crash) and possibly execute arbitrary code via long arguments to the CWD and LIST commands, which triggers heap corruption related to an improper free call, and possibly triggering a heap-based buffer overflow.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31729">31729</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6738">6738</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2794" adv="1">ADV-2008-2794</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32218" adv="1">32218</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="guildftpd" name="guildftpd">
+ <vers num="0.999.14" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4573" seq="2008-4573" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in kategori.asp in MunzurSoft Wep Portal W3 allows remote attackers to execute arbitrary SQL commands via the kat parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31713">31713</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6725">6725</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32238" adv="1">32238</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="aspindir" name="munzursoft_web_portal_w3">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4574" seq="2008-4574" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in default.asp in Ayco Okul Portali allows remote attackers to execute arbitrary SQL commands via the linkid parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45801">aop-linkid-sql-injection(45801)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31704">31704</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6720">6720</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32244">32244</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="aspindir" name="ayco_okul_portali">
+ <vers num="" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-4553" seq="2008-4553" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-16">
+ <desc>
+ <descript source="cve">qemu-make-debian-root in qemu 0.9.1-5 on Debian GNU/Linux allows local users to overwrite arbitrary files via a symlink attack on temporary files and directories.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/14/4">[oss-security] 20081014 Re: CVE id request: qemu</ref>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/13/2">[oss-security] 20081013 CVE id request: qemu</ref>
+ <ref source="CONFIRM" url="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=496394">http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=496394</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="qemu" name="qemu">
+ <vers num="0.9.1-5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="4.6" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="6.4" name="CVE-2008-4554" seq="2008-4554" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="4.6" modified="2008-10-16">
+ <desc>
+ <descript source="cve">The do_splice_from function in fs/splice.c in the Linux kernel before 2.6.27 does not reject file descriptors that have the O_APPEND flag set, which allows local users to bypass append mode and make arbitrary changes to other locations in the file.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/14/5">[oss-security] 20081014 Re: CVE request: kernel: don't allow splice() to files opened with O_APPEND</ref>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/13/1">[oss-security] 20081013 CVE request: kernel: don't allow splice() to files opened with O_APPEND</ref>
+ <ref source="CONFIRM" url="http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.27">http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.27</ref>
+ <ref source="CONFIRM" url="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.26.y.git;a=commit;h=efc968d450e013049a662d22727cf132618dcb2f">http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.26.y.git;a=commit;h=efc968d450e013049a662d22727cf132618dcb2f</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="linux" name="kernel">
+ <vers num="2.2.27" />
+ <vers num="2.4.36" />
+ <vers num="2.4.36.1" />
+ <vers num="2.4.36.2" />
+ <vers num="2.4.36.3" />
+ <vers num="2.4.36.4" />
+ <vers num="2.4.36.5" />
+ <vers num="2.4.36.6" />
+ <vers num="2.6" />
+ <vers edition="rc1" num="2.6.18" />
+ <vers edition="rc2" num="2.6.18" />
+ <vers edition="rc3" num="2.6.18" />
+ <vers edition="rc4" num="2.6.18" />
+ <vers edition="rc5" num="2.6.18" />
+ <vers edition="rc6" num="2.6.18" />
+ <vers edition="rc7" num="2.6.18" />
+ <vers num="2.6.19.4" />
+ <vers num="2.6.19.5" />
+ <vers num="2.6.19.6" />
+ <vers num="2.6.19.7" />
+ <vers num="2.6.20.16" />
+ <vers num="2.6.20.17" />
+ <vers num="2.6.20.18" />
+ <vers num="2.6.20.19" />
+ <vers num="2.6.20.20" />
+ <vers num="2.6.20.21" />
+ <vers num="2.6.21.5" />
+ <vers num="2.6.21.6" />
+ <vers num="2.6.21.7" />
+ <vers num="2.6.22" />
+ <vers num="2.6.22.1" />
+ <vers num="2.6.22.10" />
+ <vers num="2.6.22.11" />
+ <vers num="2.6.22.12" />
+ <vers num="2.6.22.13" />
+ <vers num="2.6.22.14" />
+ <vers num="2.6.22.15" />
+ <vers num="2.6.22.17" />
+ <vers num="2.6.22.18" />
+ <vers num="2.6.22.19" />
+ <vers num="2.6.22.2" />
+ <vers num="2.6.22.20" />
+ <vers num="2.6.22.21" />
+ <vers num="2.6.22.22" />
+ <vers num="2.6.22.8" />
+ <vers num="2.6.22.9" />
+ <vers num="2.6.22_rc1" />
+ <vers num="2.6.22_rc7" />
+ <vers num="2.6.23" />
+ <vers num="2.6.23.10" />
+ <vers num="2.6.23.11" />
+ <vers num="2.6.23.12" />
+ <vers num="2.6.23.13" />
+ <vers num="2.6.23.15" />
+ <vers num="2.6.23.16" />
+ <vers num="2.6.23.17" />
+ <vers num="2.6.23.8" />
+ <vers num="2.6.23.9" />
+ <vers num="2.6.23_rc1" />
+ <vers num="2.6.24" />
+ <vers num="2.6.24.1" />
+ <vers num="2.6.24.2" />
+ <vers num="2.6.24.3" />
+ <vers num="2.6.24.4" />
+ <vers num="2.6.24.5" />
+ <vers num="2.6.24.6" />
+ <vers num="2.6.24.7" />
+ <vers num="2.6.24_rc1" />
+ <vers num="2.6.24_rc4" />
+ <vers num="2.6.24_rc5" />
+ <vers edition="" num="2.6.25" />
+ <vers edition=":x86_64" num="2.6.25" />
+ <vers edition="" num="2.6.25.1" />
+ <vers edition=":x86_64" num="2.6.25.1" />
+ <vers edition="" num="2.6.25.10" />
+ <vers edition=":x86_64" num="2.6.25.10" />
+ <vers edition="" num="2.6.25.11" />
+ <vers edition=":x86_64" num="2.6.25.11" />
+ <vers edition="" num="2.6.25.12" />
+ <vers edition=":x86_64" num="2.6.25.12" />
+ <vers num="2.6.25.13" />
+ <vers num="2.6.25.14" />
+ <vers num="2.6.25.15" />
+ <vers edition="" num="2.6.25.2" />
+ <vers edition=":x86_64" num="2.6.25.2" />
+ <vers edition="" num="2.6.25.3" />
+ <vers edition=":x86_64" num="2.6.25.3" />
+ <vers edition="" num="2.6.25.4" />
+ <vers edition=":x86_64" num="2.6.25.4" />
+ <vers edition="" num="2.6.25.5" />
+ <vers edition=":x86_64" num="2.6.25.5" />
+ <vers edition="" num="2.6.25.6" />
+ <vers edition=":x86_64" num="2.6.25.6" />
+ <vers edition="" num="2.6.25.7" />
+ <vers edition=":x86_64" num="2.6.25.7" />
+ <vers edition="" num="2.6.25.8" />
+ <vers edition=":x86_64" num="2.6.25.8" />
+ <vers edition="" num="2.6.25.9" />
+ <vers edition=":x86_64" num="2.6.25.9" />
+ <vers edition="rc4" num="2.6.26" />
+ <vers num="2.6.26.1" />
+ <vers num="2.6.26.2" />
+ <vers num="2.6.26.3" />
+ <vers num="2.6.26.4" />
+ <vers num="2.6.26.5" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:P)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4575" seq="2008-4575" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-15">
+ <desc>
+ <descript source="cve">Buffer overflow in the DoCommand function in jhead before 2.84 might allow context-dependent attackers to cause a denial of service (crash) via (1) a long -cmd argument and (2) possibly other unspecified vectors.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="CONFIRM" url="https://bugs.launchpad.net/ubuntu/+source/jhead/+bug/271020">https://bugs.launchpad.net/ubuntu/+source/jhead/+bug/271020</ref>
+ <ref source="CONFIRM" url="http://www.sentex.net/~mwandel/jhead/changes.txt">http://www.sentex.net/~mwandel/jhead/changes.txt</ref>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/15/6">[oss-security] 20081015 Re: CVE request: jhead</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="sentex" name="jhead">
+ <vers num="1.2" />
+ <vers num="1.3" />
+ <vers num="1.4" />
+ <vers num="1.5" />
+ <vers num="1.6" />
+ <vers num="1.7" />
+ <vers num="1.8" />
+ <vers num="1.9" />
+ <vers num="2.0" />
+ <vers num="2.1" />
+ <vers num="2.2" />
+ <vers num="2.3" />
+ <vers num="2.4" />
+ <vers num="2.4-1" />
+ <vers num="2.4-2" />
+ <vers num="2.5" />
+ <vers num="2.6" />
+ <vers num="2.7" />
+ <vers num="2.8" />
+ <vers num="2.82" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:N/A:C)" CVSS_base_score="7.8" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.9" name="CVE-2008-4576" seq="2008-4576" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.8" modified="2008-10-16">
+ <desc>
+ <descript source="cve">sctp in Linux kernel before 2.6.25.18 allows remote attackers to cause a denial of service (OOPS) via an INIT-ACK that states the peer does not support AUTH, which causes the sctp_process_init function to clean up active transports and triggers the OOPS when the T1-Init timer expires.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MLIST" url="http://www.gossamer-threads.com/lists/linux/kernel/981012?page=last">[linux-kernel] 20081006 [patch 58/71] sctp: Fix oops when INIT-ACK indicates that peer doesnt support AUTH</ref>
+ <ref source="CONFIRM" url="http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.25.18">http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.25.18</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="linux" name="kernel">
+ <vers num="2.2.27" />
+ <vers num="2.4.36" />
+ <vers num="2.4.36.1" />
+ <vers num="2.4.36.2" />
+ <vers num="2.4.36.3" />
+ <vers num="2.4.36.4" />
+ <vers num="2.4.36.5" />
+ <vers num="2.4.36.6" />
+ <vers num="2.6" />
+ <vers edition="rc1" num="2.6.18" />
+ <vers edition="rc2" num="2.6.18" />
+ <vers edition="rc3" num="2.6.18" />
+ <vers edition="rc4" num="2.6.18" />
+ <vers edition="rc5" num="2.6.18" />
+ <vers edition="rc6" num="2.6.18" />
+ <vers edition="rc7" num="2.6.18" />
+ <vers num="2.6.19.4" />
+ <vers num="2.6.19.5" />
+ <vers num="2.6.19.6" />
+ <vers num="2.6.19.7" />
+ <vers num="2.6.20.16" />
+ <vers num="2.6.20.17" />
+ <vers num="2.6.20.18" />
+ <vers num="2.6.20.19" />
+ <vers num="2.6.20.20" />
+ <vers num="2.6.20.21" />
+ <vers num="2.6.21.5" />
+ <vers num="2.6.21.6" />
+ <vers num="2.6.21.7" />
+ <vers num="2.6.22" />
+ <vers num="2.6.22.1" />
+ <vers num="2.6.22.10" />
+ <vers num="2.6.22.11" />
+ <vers num="2.6.22.12" />
+ <vers num="2.6.22.13" />
+ <vers num="2.6.22.14" />
+ <vers num="2.6.22.15" />
+ <vers num="2.6.22.17" />
+ <vers num="2.6.22.18" />
+ <vers num="2.6.22.19" />
+ <vers num="2.6.22.2" />
+ <vers num="2.6.22.20" />
+ <vers num="2.6.22.21" />
+ <vers num="2.6.22.22" />
+ <vers num="2.6.22.8" />
+ <vers num="2.6.22.9" />
+ <vers num="2.6.22_rc1" />
+ <vers num="2.6.22_rc7" />
+ <vers num="2.6.23" />
+ <vers num="2.6.23.10" />
+ <vers num="2.6.23.11" />
+ <vers num="2.6.23.12" />
+ <vers num="2.6.23.13" />
+ <vers num="2.6.23.15" />
+ <vers num="2.6.23.16" />
+ <vers num="2.6.23.17" />
+ <vers num="2.6.23.8" />
+ <vers num="2.6.23.9" />
+ <vers num="2.6.23_rc1" />
+ <vers num="2.6.24" />
+ <vers num="2.6.24.1" />
+ <vers num="2.6.24.2" />
+ <vers num="2.6.24.3" />
+ <vers num="2.6.24.4" />
+ <vers num="2.6.24.5" />
+ <vers num="2.6.24.6" />
+ <vers num="2.6.24.7" />
+ <vers num="2.6.24_rc1" />
+ <vers num="2.6.24_rc4" />
+ <vers num="2.6.24_rc5" />
+ <vers num="2.6.25" />
+ <vers edition="" num="2.6.25.1" />
+ <vers edition=":x86_64" num="2.6.25.1" />
+ <vers edition="" num="2.6.25.10" />
+ <vers edition=":x86_64" num="2.6.25.10" />
+ <vers edition="" num="2.6.25.11" />
+ <vers edition=":x86_64" num="2.6.25.11" />
+ <vers edition="" num="2.6.25.12" />
+ <vers edition=":x86_64" num="2.6.25.12" />
+ <vers num="2.6.25.13" />
+ <vers num="2.6.25.14" />
+ <vers num="2.6.25.15" />
+ <vers num="2.6.25.16" />
+ <vers num="2.6.25.17" prev="1" />
+ <vers edition="" num="2.6.25.2" />
+ <vers edition=":x86_64" num="2.6.25.2" />
+ <vers edition="" num="2.6.25.3" />
+ <vers edition=":x86_64" num="2.6.25.3" />
+ <vers edition="" num="2.6.25.4" />
+ <vers edition=":x86_64" num="2.6.25.4" />
+ <vers edition="" num="2.6.25.5" />
+ <vers edition=":x86_64" num="2.6.25.5" />
+ <vers edition="" num="2.6.25.6" />
+ <vers edition=":x86_64" num="2.6.25.6" />
+ <vers edition="" num="2.6.25.7" />
+ <vers edition=":x86_64" num="2.6.25.7" />
+ <vers edition="" num="2.6.25.8" />
+ <vers edition=":x86_64" num="2.6.25.8" />
+ <vers edition="" num="2.6.25.9" />
+ <vers edition=":x86_64" num="2.6.25.9" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:N)" CVSS_base_score="6.4" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="4.9" name="CVE-2008-4577" seq="2008-4577" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="6.4" modified="2008-10-16">
+ <desc>
+ <descript source="cve">The ACL plugin in Dovecot before 1.1.4 treats negative access rights as if they are positive access rights, which allows attackers to bypass intended access restrictions.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="FRSIRT" patch="1" url="http://www.frsirt.com/english/advisories/2008/2745" adv="1">ADV-2008-2745</ref>
+ <ref source="MLIST" patch="1" url="http://www.dovecot.org/list/dovecot-news/2008-October/000085.html">[Dovecot-news] 20081005 v1.1.4 released</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31587">31587</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32164" adv="1">32164</ref>
+ <ref source="CONFIRM" url="http://bugs.gentoo.org/show_bug.cgi?id=240409">http://bugs.gentoo.org/show_bug.cgi?id=240409</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="dovecot" name="dovecot">
+ <vers num="0.99.13" />
+ <vers num="0.99.14" />
+ <vers num="1.0" />
+ <vers num="1.0.10" />
+ <vers num="1.0.12" />
+ <vers num="1.0.2" />
+ <vers num="1.0.3" />
+ <vers num="1.0.4" />
+ <vers num="1.0.5" />
+ <vers num="1.0.6" />
+ <vers num="1.0.7" />
+ <vers num="1.0.8" />
+ <vers num="1.0.9" />
+ <vers num="1.0.beta1" />
+ <vers num="1.0.beta2" />
+ <vers num="1.0.beta3" />
+ <vers num="1.0.beta4" />
+ <vers num="1.0.beta5" />
+ <vers num="1.0.beta6" />
+ <vers num="1.0.beta7" />
+ <vers num="1.0.beta8" />
+ <vers num="1.0.beta9" />
+ <vers num="1.0.rc1" />
+ <vers num="1.0.rc10" />
+ <vers num="1.0.rc11" />
+ <vers num="1.0.rc12" />
+ <vers num="1.0.rc13" />
+ <vers num="1.0.rc14" />
+ <vers num="1.0.rc15" />
+ <vers num="1.0.rc16" />
+ <vers num="1.0.rc17" />
+ <vers num="1.0.rc18" />
+ <vers num="1.0.rc19" />
+ <vers num="1.0.rc2" />
+ <vers num="1.0.rc20" />
+ <vers num="1.0.rc21" />
+ <vers num="1.0.rc22" />
+ <vers num="1.0.rc23" />
+ <vers num="1.0.rc24" />
+ <vers num="1.0.rc25" />
+ <vers num="1.0.rc26" />
+ <vers num="1.0.rc27" />
+ <vers num="1.0.rc28" />
+ <vers num="1.0.rc3" />
+ <vers num="1.0.rc4" />
+ <vers num="1.0.rc5" />
+ <vers num="1.0.rc6" />
+ <vers num="1.0.rc7" />
+ <vers num="1.0.rc8" />
+ <vers num="1.0.rc9" />
+ <vers num="1.0_rc29" />
+ <vers edition="rc2" num="1.1" />
+ <vers num="1.1.0" />
+ <vers num="1.1.1" />
+ <vers num="1.1.2" />
+ <vers num="1.1.3" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:P/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4578" seq="2008-4578" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-16">
+ <desc>
+ <descript source="cve">The ACL plugin in Dovecot before 1.1.4 allows attackers to bypass intended access restrictions by using the "k" right to create unauthorized "parent/child/child" mailboxes.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MLIST" patch="1" url="http://www.dovecot.org/list/dovecot-news/2008-October/000085.html">[Dovecot-news] 20081005 v1.1.4 released</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31587">31587</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2745" adv="1">ADV-2008-2745</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32164" adv="1">32164</ref>
+ <ref source="CONFIRM" url="http://bugs.gentoo.org/show_bug.cgi?id=240409">http://bugs.gentoo.org/show_bug.cgi?id=240409</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="dovecot" name="dovecot">
+ <vers num="0.99.13" />
+ <vers num="0.99.14" />
+ <vers num="1.0" />
+ <vers num="1.0.10" />
+ <vers num="1.0.12" />
+ <vers num="1.0.2" />
+ <vers num="1.0.3" />
+ <vers num="1.0.4" />
+ <vers num="1.0.5" />
+ <vers num="1.0.6" />
+ <vers num="1.0.7" />
+ <vers num="1.0.8" />
+ <vers num="1.0.9" />
+ <vers num="1.0.beta1" />
+ <vers num="1.0.beta2" />
+ <vers num="1.0.beta3" />
+ <vers num="1.0.beta4" />
+ <vers num="1.0.beta5" />
+ <vers num="1.0.beta6" />
+ <vers num="1.0.beta7" />
+ <vers num="1.0.beta8" />
+ <vers num="1.0.beta9" />
+ <vers num="1.0.rc1" />
+ <vers num="1.0.rc10" />
+ <vers num="1.0.rc11" />
+ <vers num="1.0.rc12" />
+ <vers num="1.0.rc13" />
+ <vers num="1.0.rc14" />
+ <vers num="1.0.rc15" />
+ <vers num="1.0.rc16" />
+ <vers num="1.0.rc17" />
+ <vers num="1.0.rc18" />
+ <vers num="1.0.rc19" />
+ <vers num="1.0.rc2" />
+ <vers num="1.0.rc20" />
+ <vers num="1.0.rc21" />
+ <vers num="1.0.rc22" />
+ <vers num="1.0.rc23" />
+ <vers num="1.0.rc24" />
+ <vers num="1.0.rc25" />
+ <vers num="1.0.rc26" />
+ <vers num="1.0.rc27" />
+ <vers num="1.0.rc28" />
+ <vers num="1.0.rc3" />
+ <vers num="1.0.rc4" />
+ <vers num="1.0.rc5" />
+ <vers num="1.0.rc6" />
+ <vers num="1.0.rc7" />
+ <vers num="1.0.rc8" />
+ <vers num="1.0.rc9" />
+ <vers num="1.0_rc29" />
+ <vers edition="rc2" num="1.1" />
+ <vers num="1.1.0" />
+ <vers num="1.1.1" />
+ <vers num="1.1.2" />
+ <vers num="1.1.3" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="1.9" CVSS_exploit_subscore="3.4" CVSS_impact_subscore="2.9" name="CVE-2008-4579" seq="2008-4579" severity="Low" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="1.9" modified="2008-10-16">
+ <desc>
+ <descript source="cve">The (1) fence_apc and (2) fence_apc_snmp programs, as used in (a) fence 2.02.00-r1 and possibly (b) cman, when running in verbose mode, allows local users to append to arbitrary files via a symlink attack on the apclog temporary file.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/13/3">[oss-security] 20081013 Re: CVE Request</ref>
+ <ref source="MISC" url="http://bugs.gentoo.org/show_bug.cgi?id=240576">http://bugs.gentoo.org/show_bug.cgi?id=240576</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="gentoo" name="cman">
+ <vers edition="r1" num="2.02.00" />
+ </prod>
+ <prod vendor="gentoo" name="fence">
+ <vers edition="r1" num="2.02.00" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-4580" seq="2008-4580" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-16">
+ <desc>
+ <descript source="cve">fence_manual in fence allows local users to modify arbitrary files via a symlink attack on the fence_manual.fifo temporary file.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="MLIST" url="http://www.openwall.com/lists/oss-security/2008/10/13/3">[oss-security] 20081013 Re: CVE Request</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="gentoo" name="cman">
+ <vers edition="r1" num="2.02.00" />
+ </prod>
+ <prod vendor="gentoo" name="fence">
+ <vers edition="r1" num="2.02.00" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:S/C:P/I:N/A:N)" CVSS_base_score="4.0" CVSS_exploit_subscore="8.0" CVSS_impact_subscore="2.9" name="CVE-2008-4581" seq="2008-4581" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="4.0" modified="2008-10-16">
+ <desc>
+ <descript source="cve">The Editor in IBM ENOVIA SmarTeam 5 before release 18 SP5, and release 19 before SP01, allows remote authenticated users to bypass intended access restrictions and read Document objects via the Workflow Process (aka Flow Process) view.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31748">31748</ref>
+ <ref source="AIXAPAR" url="http://www-1.ibm.com/support/docview.wss?uid=swg1HD71425" adv="1">HD71425</ref>
+ <ref source="CONFIRM" url="http://www-01.ibm.com/support/docview.wss?uid=swg27012567&amp;aid=1">http://www-01.ibm.com/support/docview.wss?uid=swg27012567&amp;aid=1</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32105">32105</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="ibm" name="enovia_smarteam">
+ <vers num="5" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:N/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4582" seq="2008-4582" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Mozilla Firefox 3.0.1 through 3.0.3 on Windows does not properly identify the context of Windows .url shortcut files, which allows user-assisted remote attackers to bypass the Same Origin Policy and obtain sensitive information via an HTML document that is directly accessible through a filesystem, as demonstrated by documents in (1) local folders, (2) Windows share folders, and (3) RAR archives, and as demonstrated by IFRAMEs referencing shortcuts that point to (a) about:cache?device=memory and (b) about:cache?device=disk, a variant of CVE-2008-2810.</descript>
+ </desc>
+ <loss_types>
+ <conf />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497091/100/0/threaded">20081007 Firefox Privacy Broken If Used to Open Web Page File</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32192" adv="1">32192</ref>
+ <ref source="MISC" url="http://liudieyu0.blog124.fc2.com/blog-entry-6.html">http://liudieyu0.blog124.fc2.com/blog-entry-6.html</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="mozilla" name="firefox">
+ <vers num="3.0.1" />
+ <vers num="3.0.2" />
+ <vers num="3.0.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4583" seq="2008-4583" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Insecure method vulnerability in the Chilkat FTP 2.0 ActiveX component (ChilkatCert.dll) allows remote attackers to overwrite arbitrary files via a full pathname in the SavePkcs8File method.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27540">27540</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/5028">5028</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="chilkat_software" name="ftp">
+ <vers num="2.0" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:P/I:P/A:P)" CVSS_base_score="6.8" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="6.4" name="CVE-2008-4584" seq="2008-4584" severity="Medium" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="6.8" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Insecure method vulnerability in Chilkat Mail 7.8 ActiveX control (ChilkatCert.dll) allows remote attackers to overwrite arbitrary files via a full pathname to the SaveLastError method.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/40041">chilkatmail-chilkatcert-file-overwrite(40041)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27493">27493</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/5005">5005</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="chilkat_software" name="mail">
+ <vers num="7.8" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4585" seq="2008-4585" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Belong Software Site Builder 0.1 beta allows remote attackers to bypass intended access restrictions and perform administrative actions via a direct request to admin/home.php.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/39842">belongsitebuilder-admin-security-bypass(39842)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27402">27402</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/486803/100/200/threaded">20080122 Belong Site Builder 0.1b Bypass Admincp</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="belong_software" name="site_builder">
+ <vers edition="beta" num="0.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-4586" seq="2008-4586" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Insecure method vulnerability in the MVSNCLientWebAgent61.WebAgent.1 ActiveX control (isusweb.dll 6.1.100.61372) in Macrovision FLEXnet Connect 6.1 allows remote attackers to force the download and execution of arbitrary files via the DownloadAndExecute method.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27279">27279</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/4913">4913</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28496" adv="1">28496</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="acresso" name="flexnet_connect">
+ <vers num="6.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:C/I:C/A:C)" CVSS_base_score="9.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="10.0" name="CVE-2008-4587" seq="2008-4587" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="9.3" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Insecure method vulnerability in the MSVNClientDownloadManager61Lib.DownloadManager.1 ActiveX control (ISDM.exe 6.1.100.61372) in Macrovision FLEXnet Connect 6.1 allows remote attackers to force the download and execution of arbitrary files via the AddFile and RunScheduledJobs methods. NOTE: this could be leveraged for code execution by uploading executable files to Startup folders.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/39653">macrovision-flexnet-file-overwrite(39653)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/27279">27279</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/4909">4909</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/28496" adv="1">28496</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="acresso" name="flexnet_connect">
+ <vers num="6.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4588" seq="2008-4588" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Stack-based buffer overflow in the FTP server in Etype Eserv 3.x, possibly 3.26, allows remote attackers to cause a denial of service (daemon crash) and possibly execute arbitrary code via a long argument to the ABOR command.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45864">eservftp-abor-bo(45864)</ref>
+ <ref source="MISC" url="http://www.zeroscience.org/codes/eserv_bof.txt">http://www.zeroscience.org/codes/eserv_bof.txt</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31753">31753</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6752">6752</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="etype" name="eserv">
+ <vers num="3.0" />
+ <vers num="3.25" />
+ <vers num="3.26" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:L/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="7.2" CVSS_exploit_subscore="3.9" CVSS_impact_subscore="10.0" name="CVE-2008-4589" seq="2008-4589" severity="High" type="CVE" published="2008-10-15" CVSS_version="2.0" CVSS_score="7.2" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Heap-based buffer overflow in the tvtumin.sys kernel driver in Lenovo Rescue and Recovery 4.20, including 4.20.0511 and 4.20.0512, allows local users to execute arbitrary code via a long file name.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ </loss_types>
+ <range>
+ <local />
+ </range>
+ <refs>
+ <ref source="BID" patch="1" url="http://www.securityfocus.com/bid/31737">31737</ref>
+ <ref source="CONFIRM" patch="1" url="http://www-307.ibm.com/pc/support/site.wss/MIGR-70699.html" adv="1">http://www-307.ibm.com/pc/support/site.wss/MIGR-70699.html</ref>
+ <ref source="CONFIRM" patch="1" url="http://www-307.ibm.com/pc/support/site.wss/MIGR-4Q2QAK.html" adv="1">http://www-307.ibm.com/pc/support/site.wss/MIGR-4Q2QAK.html</ref>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45839">lenovo-rescue-recovery-tvtumin-bo(45839)</ref>
+ <ref source="SECTRACK" url="http://www.securitytracker.com/id?1021041">1021041</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497277/100/0/threaded">20081010 iSEC Partners Security Advisory - 2008-002-lenovornr - Lenovo Rescue and Recovery 4.20</ref>
+ <ref source="MISC" url="http://www.isecpartners.com/advisories/2008-02-lenovornr.txt">http://www.isecpartners.com/advisories/2008-02-lenovornr.txt</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2806" adv="1">ADV-2008-2806</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32252" adv="1">32252</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="lenovo" name="resuce_and_recovery">
+ <vers num="4.20" />
+ <vers num="4.20.0511" />
+ <vers num="4.20.0512" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:P)" CVSS_base_score="7.5" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="6.4" name="CVE-2008-4590" seq="2008-4590" severity="High" type="CVE" published="2008-10-16" CVSS_version="2.0" CVSS_score="7.5" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Multiple SQL injection vulnerabilities in Stash 1.0.3 allow remote attackers to execute arbitrary SQL commands via (1) the username parameter to admin/login.php and (2) the post parameter to admin/news.php.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot other="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45799">stash-news-sql-injection(45799)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31687">31687</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6714">6714</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="stash" name="stash">
+ <vers num="1.0.3" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:M/Au:N/C:N/I:P/A:N)" CVSS_base_score="4.3" CVSS_exploit_subscore="8.6" CVSS_impact_subscore="2.9" name="CVE-2008-4591" seq="2008-4591" severity="Medium" type="CVE" published="2008-10-16" CVSS_version="2.0" CVSS_score="4.3" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Multiple cross-site scripting (XSS) vulnerabilities in admin/include/isadmin.inc.php in PhpWebGallery 1.3.4 allow remote attackers to inject arbitrary web script or HTML via the (1) lang[access_forbiden] and (2) lang[ident_title] parameters.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ <user_init />
+ </range>
+ <refs>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6425">6425</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="phpwebgallery" name="phpwebgallery">
+ <vers num="1.3.4" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:C/I:C/A:C)" CVSS_base_score="10.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="10.0" name="CVE-2008-4592" seq="2008-4592" severity="High" type="CVE" published="2008-10-16" CVSS_version="2.0" CVSS_score="10.0" modified="2008-10-16">
+ <desc>
+ <descript source="cve">Directory traversal vulnerability in index.php in Sports Clubs Web Panel 0.0.1 allows remote attackers to include and execute arbitrary local files via a .. (dot dot) in the p parameter.</descript>
+ </desc>
+ <loss_types>
+ <avail />
+ <conf />
+ <int />
+ <sec_prot admin="1" />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6427">6427</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2550" adv="1">ADV-2008-2550</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="sportspanel" name="sports_clubs_web_portal">
+ <vers num="0.0.1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry CVSS_vector="(AV:N/AC:L/Au:N/C:N/I:P/A:N)" CVSS_base_score="5.0" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="2.9" name="CVE-2008-4401" seq="2008-4401" severity="Medium" type="CVE" published="2008-10-17" CVSS_version="2.0" CVSS_score="5.0" modified="2008-10-17">
+ <desc>
+ <descript source="cve">ActionScript in Adobe Flash Player 9.0.124.0 and earlier does not require user interaction in conjunction with (1) the FileReference.browse operation in the FileReference upload API or (2) the FileReference.download operation in the FileReference download API, which allows remote attackers to create a browse dialog box, and possibly have unspecified other impact, via an SWF file.</descript>
+ </desc>
+ <loss_types>
+ <int />
+ </loss_types>
+ <range>
+ <network />
+ </range>
+ <refs>
+ <ref source="XF" patch="1" url="http://xforce.iss.net/xforce/xfdb/45913">adobe-flash-filereference-file-upload(45913)</ref>
+ <ref source="CONFIRM" patch="1" url="http://www.adobe.com/support/security/bulletins/apsb08-18.html">http://www.adobe.com/support/security/bulletins/apsb08-18.html</ref>
+ <ref source="SECUNIA" patch="1" url="http://secunia.com/advisories/32270" adv="1">32270</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2838" adv="1">ADV-2008-2838</ref>
+ <ref source="CONFIRM" url="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes.html">http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes.html</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021061">1021061</ref>
+ </refs>
+ <vuln_soft>
+ <prod vendor="adobe" name="flash_player">
+ <vers num="7" />
+ <vers num="7.0" />
+ <vers num="7.0.1" />
+ <vers num="7.0.25" />
+ <vers num="7.0.63" />
+ <vers num="7.0.69.0" />
+ <vers num="7.0.70.0" />
+ <vers num="7.0_r67" />
+ <vers num="7.1" />
+ <vers num="7.1.1" />
+ <vers num="7.2" />
+ <vers num="8" />
+ <vers num="8.0" />
+ <vers num="8.0.24.0" />
+ <vers num="8.0.34.0" />
+ <vers num="8.0.35.0" />
+ <vers num="8.0.39.0" />
+ <vers num="9" />
+ <vers num="9.0.112.0" />
+ <vers num="9.0.114.0" />
+ <vers num="9.0.115.0" />
+ <vers num="9.0.124.0" prev="1" />
+ </prod>
+ </vuln_soft>
+ </entry>
+ <entry name="CVE-2008-4473" seq="2008-4473" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Multiple heap-based buffer overflows in Adobe Flash CS3 Professional on Windows and Flash MX 2004 allow remote attackers to execute arbitrary code via an SWF file containing long control parameters.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45914">adobe-flash-cs3-bo(45914)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31769">31769</ref>
+ <ref source="BUGTRAQ" url="http://www.securityfocus.com/archive/1/archive/1/497397/100/0/threaded">20081015 Multiple Flash Authoring Heap Overflows - Malformed SWF Files</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2837">ADV-2008-2837</ref>
+ <ref source="CONFIRM" url="http://www.adobe.com/support/security/advisories/apsa08-09.html">http://www.adobe.com/support/security/advisories/apsa08-09.html</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021060">1021060</ref>
+ <ref source="MISC" url="http://security-assessment.com/files/advisories/2008-10-16_Multiple_Flash_Authoring_Heap_Overflows.pdf">http://security-assessment.com/files/advisories/2008-10-16_Multiple_Flash_Authoring_Heap_Overflows.pdf</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32246">32246</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4412" seq="2008-4412" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in HP Systems Insight Manager (SIM) before 5.2 Update 2 (C.05.02.02.00) allows remote attackers to obtain sensitive information via unspecified vectors.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45916">hp-sim-unspecified-security-bypass(45916)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31777">31777</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2836">ADV-2008-2836</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32287">32287</ref>
+ <ref source="HP" url="http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01571962">SSRT080035</ref>
+ <ref source="HP" url="http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01571962">HPSBMA02378</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4593" seq="2008-4593" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Apple iPhone 2.1 with firmware 5F136, when Require Passcode is enabled and Show SMS Preview is disabled, allows physically proximate attackers to obtain sensitive information by performing an Emergency Call tap and then reading SMS messages on the device screen, aka Apple bug number 6267416.</descript>
+ </desc>
+ <refs>
+ <ref source="MISC" url="http://www.karlkraft.com/index.php/2008/10/03/yet-another-iphone-emergency-call-security-bug/">http://www.karlkraft.com/index.php/2008/10/03/yet-another-iphone-emergency-call-security-bug/</ref>
+ <ref source="SECTRACK" url="http://securitytracker.com/id?1021021">1021021</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4594" seq="2008-4594" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in the SNMPv3 component in Linksys WAP4400N firmware 1.2.14 on the Marvell Semiconductor 88W8361P-BEM1 chipset has unknown impact and attack vectors, probably remote.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45842">linksys-wap4400n-unspecified(45842)</ref>
+ <ref source="FRSIRT" url="http://www.frsirt.com/english/advisories/2008/2805">ADV-2008-2805</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32259">32259</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4595" seq="2008-4595" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Multiple unspecified vulnerabilities in Slaytanic Scripts Content Plus 2.1.1 have unknown impact and remote attack vectors.</descript>
+ </desc>
+ <refs>
+ <ref source="CONFIRM" url="http://sourceforge.net/project/shownotes.php?release_id=632842">http://sourceforge.net/project/shownotes.php?release_id=632842</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32245">32245</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4596" seq="2008-4596" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in Shindig-Integrator 5.x, a module for Drupal, allows remote authenticated users to inject arbitrary web script or HTML via unspecified vectors in generated pages.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45925">shindigintegrator-unspecified-xss(45925)</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32285">32285</ref>
+ <ref source="CONFIRM" url="http://drupal.org/node/321758">http://drupal.org/node/321758</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4597" seq="2008-4597" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Shindig-Integrator 5.x, a module for Drupal, does not properly restrict generated page access, which allows remote attackers to gain privileges via unspecified vectors.</descript>
+ </desc>
+ <refs>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32285">32285</ref>
+ <ref source="CONFIRM" url="http://drupal.org/node/321758">http://drupal.org/node/321758</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4598" seq="2008-4598" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Unspecified vulnerability in Shindig-Integrator 5.x, a module for Drupal, has unspecified impact and remote attack vectors related to "numerous flaws" that are not related to XSS or access control, a different vulnerability than CVE-2008-4596 and CVE-2008-4597.</descript>
+ </desc>
+ <refs>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32285">32285</ref>
+ <ref source="CONFIRM" url="http://drupal.org/node/321758">http://drupal.org/node/321758</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4599" seq="2008-4599" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in category.php in Mosaic Commerce allows remote attackers to execute arbitrary SQL commands via the cid parameter.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45926">mosaiccommerce-category-sql-injection(45926)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31782">31782</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6763">6763</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4600" seq="2008-4600" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">configure.php in PokerMax Poker League Tournament Script 0.13 allows remote attackers to bypass authentication and gain administrative access by setting the ValidUserAdmin cookie.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45931">pokermax-cookie-security-bypass(45931)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31784">31784</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6766">6766</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32312">32312</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4601" seq="2008-4601" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Cross-site scripting (XSS) vulnerability in the login feature in Habari CMS 0.5.1 allows remote attackers to inject arbitrary web script or HTML via the habari_username parameter.</descript>
+ </desc>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31794">31794</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32311">32311</ref>
+ <ref source="MISC" url="http://packetstorm.linuxsecurity.com/0810-exploits/habaricms-xss.txt">http://packetstorm.linuxsecurity.com/0810-exploits/habaricms-xss.txt</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4602" seq="2008-4602" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Directory traversal vulnerability in index.php in Post Affiliate Pro 2.0 allows remote authenticated users to read and possibly execute arbitrary local files via a .. (dot dot) in the md parameter.</descript>
+ </desc>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31796">31796</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6772">6772</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4603" seq="2008-4603" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in search.php in iGaming CMS 2.0 Alpha 1 allows remote attackers to execute arbitrary SQL commands via the keywords parameter in a search_games action.</descript>
+ </desc>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31793">31793</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6769">6769</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4604" seq="2008-4604" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in index.php in Easy CafeEngine 1.1 allows remote attackers to execute arbitrary SQL commands via the itemid parameter.</descript>
+ </desc>
+ <refs>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31788">31788</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6762">6762</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32307">32307</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4605" seq="2008-4605" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">SQL injection vulnerability in CafeEngine allows remote attackers to execute arbitrary SQL commands via the id parameter to (1) dish.php and (2) menu.php.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45929">cafeengine-dish-menu-sql-injection(45929)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31786">31786</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6762">6762</ref>
+ <ref source="SECUNIA" url="http://secunia.com/advisories/32308">32308</ref>
+ </refs>
+ </entry>
+ <entry name="CVE-2008-4606" seq="2008-4606" type="CVE" published="2008-10-17" modified="2008-10-17">
+ <desc>
+ <descript source="cve">Multiple SQL injection vulnerabilities in IP Reg 0.4 and earlier allow remote attackers to execute arbitrary SQL commands via the (1) location_id parameter to locationdel.php and (2) vlan_id parameter to it.php. NOTE: the vlanview.php and vlandel.php vectors are already covered by CVE-2007-6579.</descript>
+ </desc>
+ <refs>
+ <ref source="XF" url="http://xforce.iss.net/xforce/xfdb/45934">ipreg-locationid-vlanid-sql-injection(45934)</ref>
+ <ref source="BID" url="http://www.securityfocus.com/bid/31781">31781</ref>
+ <ref source="MILW0RM" url="http://www.milw0rm.com/exploits/6765">6765</ref>
+ </refs>
+ </entry>
+
+</nvd> \ No newline at end of file
diff --git a/test/schemas/nvdcve_0.xsd b/test/schemas/nvdcve_0.xsd
new file mode 100644
index 0000000..f24b574
--- /dev/null
+++ b/test/schemas/nvdcve_0.xsd
@@ -0,0 +1,498 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://nvd.nist.gov/feeds/cve/1.2"
+ xmlns:cve="http://nvd.nist.gov/feeds/cve/1.2"
+ elementFormDefault="qualified" attributeFormDefault="unqualified"
+ version="1.2">
+ <xs:annotation>
+ <xs:documentation>This schema defines the structure of the National
+ Vulnerability Database XML feed files version: 1.2. The elements and
+ attribute in this document are described by xs:annotation tags. This
+ file is kept at http://nvd.nist.gov/schema/nvdcve.xsd. The NVD XML
+ feeds are available at http://nvd.nist.gov/download.cfm.
+
+ Release Notes:
+
+ Version 1.2:
+ * CVSS version 2 scores and vectors have been added. Please see
+ http://nvd.nist.gov/cvss.cfm?vectorinfo and
+ http://www.first.org/cvss/cvss-guide.html for more information on
+ how to interpret this data. </xs:documentation>
+ </xs:annotation>
+ <xs:element name="nvd">
+ <xs:annotation>
+ <xs:documentation>The root element of the NVD CVE feed. Multiple "entry" child elements describe specific NVD CVE entries.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="cve:entry" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="nvd_xml_version" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation>The schema version number supported by the feed.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="pub_date" type="cve:dateType" use="required">
+ <xs:annotation>
+ <xs:documentation>The date the feed was generated.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="entry" type="cve:entryType">
+ <xs:annotation>
+ <xs:documentation>A CVE entry.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <!-- ******************************************************************* -->
+ <!-- * Complex Types * -->
+ <!-- ******************************************************************* -->
+ <xs:complexType name="entryType">
+ <xs:annotation>
+ <xs:documentation> Documents one CVE entry. The child elements should always
+ appear in the sequence defined below. These elements are compatible with
+ entry elements from the CVE XML feeds.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="desc">
+ <xs:annotation>
+ <xs:documentation>Description wrapper tag, parent to any
+ documented descriptions of this CVE entry. While the "desc"
+ tag will always be present, there may be no "descript" child
+ tags. Only one "descript" tag will exist for each
+ description source (i.e. CVE, NVD, ...). </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="descript" type="cve:descriptType" minOccurs="0" maxOccurs="2">
+ <xs:annotation>
+ <xs:documentation>A description of a CVE entry
+ from the source indicated by the "source"
+ attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="impacts" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Impact wrapper tag (may or may not be
+ present). Only one "impact" tag will exist for each impact
+ explanation source. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="impact" type="cve:impactType">
+ <xs:annotation>
+ <xs:documentation> Contains a specific impact
+ explanation of this CVE entry from source
+ indicated by the "source" attribute.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sols" type="cve:solsType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Solution wrapper tag (may or may not be
+ present). Only one "sol" tag will exist for each solution
+ explanation source. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="loss_types" type="cve:lossTypeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Loss type tag (may or may not be present).
+ Contains one loss type child for each loss type of this CVE
+ entry. Potential loss types are: "avail" => availability
+ "conf" => confidentiality "int" => integrity "sec_prot" =>
+ security protection </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="vuln_types" type="cve:vulnType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Vulnerability type tag (may or may not be
+ present). Contains one vulnerability type child for each
+ vulnerability type of this CVE entry. Potential
+ vulnerability types are: "access" => Access validation error
+ "input" => Input validation error "design" => Design error
+ "exception" => Exceptional condition error "env" =>
+ Environmental error "config" => Configuration error "race"
+ => Race condition error "other" => other </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="range" type="cve:rangeType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Vulnerability range tag (may or may not be
+ present). Contains one vulnerability range child for each
+ vulnerability range of this CVE entry. Potential
+ vulnerability ranges are: "local" => Locally exploitable
+ "local_network" => Local network exploitable "network" =>
+ Network exploitable "user_init" => User accesses attacker
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="refs">
+ <xs:annotation>
+ <xs:documentation> Reference wrapper tag (always present).
+ External references to this CVE entry are contained within
+ this tag. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ref" type="cve:refType" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation> Individual reference to this CVE
+ entry. Text is the name of this vulnerability at
+ this particular reference. Attributes: "source"
+ (required) => Name of reference source "url"
+ (required) => hyperlink to reference "sig" =>
+ indicates this reference includes a tool
+ signature "adv" => indicates this reference is a
+ Security Advisory "patch" => indicates this
+ reference includes a patch for this
+ vulnerability </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="vuln_soft" type="cve:vulnSoftType" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Vulnerable software wrapper tag (may or may
+ not be present). Software affected by this CVE entry are
+ listed within this tag. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="type" use="required">
+ <xs:annotation>
+ <xs:documentation>CVE or CAN</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="CAN"/>
+ <xs:enumeration value="CVE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="name" use="required">
+ <xs:annotation>
+ <xs:documentation>the full CVE name</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:ID">
+ <xs:pattern value="(CAN|CVE)\-\d\d\d\d\-\d\d\d\d"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="seq" use="required">
+ <xs:annotation>
+ <xs:documentation>the sequence number from CVE name</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:pattern value="\d\d\d\d\-\d\d\d\d"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="nvd_name" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>the NVD name (if it exists)</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="discovered" type="cve:dateType">
+ <xs:annotation>
+ <xs:documentation>the date this entry was discovered</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="published" type="cve:dateType" use="required">
+ <xs:annotation>
+ <xs:documentation>the date this entry was published</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="modified" type="cve:dateType">
+ <xs:annotation>
+ <xs:documentation>the date this entry was last modified</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="severity">
+ <xs:annotation>
+ <xs:documentation>the entry's severity as determined by the NVD analysts: High, Medium, or Low</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="High"/>
+ <xs:enumeration value="Medium"/>
+ <xs:enumeration value="Low"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="reject" type="cve:trueOnlyAttribute">
+ <xs:annotation>
+ <xs:documentation>indicates that this CVE entry has been rejected by CVE or NVD</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="CVSS_version" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>the CVSS Version Indicator</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="CVSS_score" type="cve:zeroToTen">
+ <xs:annotation>
+ <xs:documentation>Same as the CVSS_base_score to provide backwards compatability with the previous CVE XML feed format. This field is deprecated an may be removed at a future date.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="CVSS_base_score" type="cve:zeroToTen">
+ <xs:annotation>
+ <xs:documentation>CVSS version 2 Base Score</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="CVSS_impact_subscore" type="cve:zeroToTen">
+ <xs:annotation>
+ <xs:documentation>CVSS version 2 Impact Score</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="CVSS_exploit_subscore" type="cve:zeroToTen">
+ <xs:annotation>
+ <xs:documentation>CVSS version 2 Exploit Score</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="CVSS_vector" type="cve:CVSSVector">
+ <xs:annotation>
+ <xs:documentation>the CVSS version 2 Vector string</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <xs:complexType name="descriptType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="source" type="cve:descriptSourceType" use="required">
+ <xs:annotation>
+ <xs:documentation>The source of the CVE description.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="impactType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="source" type="cve:impactSourceType" use="required">
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="vulnType">
+ <xs:sequence>
+ <xs:element name="access" minOccurs="0"/>
+ <xs:element name="input" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Input validation error tag with
+ one attribute for each input validation error
+ type. Potential input validation error types
+ are: "bound" => Boundary condition error
+ "buffer" => Buffer overflow </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="bound" type="cve:trueOnlyAttribute"/>
+ <xs:attribute name="buffer" type="cve:trueOnlyAttribute"
+ />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="design" minOccurs="0"/>
+ <xs:element name="exception" minOccurs="0"/>
+ <xs:element name="env" minOccurs="0"/>
+ <xs:element name="config" minOccurs="0"/>
+ <xs:element name="race" minOccurs="0"/>
+ <xs:element name="other" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="solsType">
+ <xs:sequence>
+ <xs:element name="sol">
+ <xs:annotation>
+ <xs:documentation> Contains a specific solution
+ explanation of this CVE entry from source
+ indicated by the "source" attribute.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="source" type="cve:solsSourceType" use="required">
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="lossTypeType">
+ <xs:sequence>
+ <xs:element name="avail" minOccurs="0"/>
+ <xs:element name="conf" minOccurs="0"/>
+ <xs:element name="int" minOccurs="0"/>
+ <xs:element name="sec_prot" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation> Security Protection tag with one
+ attribute for each security protection type.
+ Potential security protection types are: "admin"
+ => gain administrative access "user" => gain
+ user access "other" => other </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="admin" type="cve:trueOnlyAttribute"/>
+ <xs:attribute name="user" type="cve:trueOnlyAttribute"/>
+ <xs:attribute name="other" type="cve:trueOnlyAttribute"
+ />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="rangeType">
+ <xs:sequence>
+ <xs:element name="local" minOccurs="0"/>
+ <xs:element name="local_network" minOccurs="0"/>
+ <xs:element name="network" minOccurs="0"/>
+ <xs:element name="user_init" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="refType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="source" type="xs:string" use="required"/>
+ <xs:attribute name="url" type="cve:urlType" use="required"/>
+ <xs:attribute name="sig" type="cve:trueOnlyAttribute"/>
+ <xs:attribute name="adv" type="cve:trueOnlyAttribute"/>
+ <xs:attribute name="patch" type="cve:trueOnlyAttribute"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="vulnSoftType">
+ <xs:sequence>
+ <xs:element name="prod" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation> Product wrapper tag. Versions of
+ this product that are affected by this
+ vulnerability are listed within this tag.
+ Attributes: "name" => Product name "vendor" =>
+ Vendor of this product </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="vers" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation> Represents a version
+ of this product that is affected by
+ this vulnerability. Attributes:
+ "num" => This version number "prev"
+ => Indicates that versions previous
+ to this version number are also
+ affected by this vulnerability
+ "edition" => Indicates the edition
+ associated with the version number
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="num"
+ type="xs:string" use="required"/>
+ <xs:attribute name="prev"
+ type="cve:trueOnlyAttribute"/>
+ <xs:attribute name="edition"
+ type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"
+ use="required"/>
+ <xs:attribute name="vendor" type="xs:string"
+ use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- ******************************************************************* -->
+ <!-- * Simple Types * -->
+ <!-- ******************************************************************* -->
+ <xs:simpleType name="descriptSourceType">
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="cve"/>
+ <xs:enumeration value="nvd"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="impactSourceType">
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="nvd"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="solsSourceType">
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="nvd"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="dateType">
+ <xs:annotation>
+ <xs:documentation> Defines date format for NVD. Dates follow the mask "yyyy-mm-dd"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern
+ value="(19|20)\d\d-((01|03|05|07|08|10|12)-(0[1-9]|[1-2]\d|3[01])|(04|06|09|11)-(0[1-9]|[1-2]\d|30)|02-(0[1-9]|1\d|2\d))"
+ />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="urlType">
+ <xs:annotation>
+ <xs:documentation> Restricts urls in NVD beyond the xs:anyURI restrictions.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:anyURI">
+ <xs:whiteSpace value="collapse"/>
+ <xs:pattern value="(news|(ht|f)tp(s)?)://.+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="trueOnlyAttribute">
+ <xs:annotation>
+ <xs:documentation> simpleType used for attributes that are only present when they are
+ true. Such attributes appear only in the form attribute_name="1".
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="zeroToTen">
+ <xs:annotation>
+ <xs:documentation> simpleType used when scoring on a scale of 0-10, inclusive
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:decimal">
+ <xs:minInclusive value="0" fixed="true"/>
+ <xs:maxInclusive value="10" fixed="true"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="CVSSVector">
+ <xs:annotation>
+ <xs:documentation>simpleType to describe the CVSS Base Vector </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern
+ value="\(AV:[LAN]/AC:[HML]/Au:[NSM]/C:[NPC]/I:[NPC]/A:[NPC]\)"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/test/schemas/po0_0.xml b/test/schemas/po0_0.xml
new file mode 100644
index 0000000..387232d
--- /dev/null
+++ b/test/schemas/po0_0.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<purchaseOrder orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <comment>Hurry, my lawn is going wild!</comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</purchaseOrder>
diff --git a/test/schemas/po0_0.xsd b/test/schemas/po0_0.xsd
new file mode 100644
index 0000000..5a1e660
--- /dev/null
+++ b/test/schemas/po0_0.xsd
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+ </xsd:complexType>
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+<!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/po1_0.xml b/test/schemas/po1_0.xml
new file mode 100644
index 0000000..8781bbf
--- /dev/null
+++ b/test/schemas/po1_0.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <apo:comment>Confirm this is electric</apo:comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
+
diff --git a/test/schemas/po1_0.xsd b/test/schemas/po1_0.xsd
new file mode 100644
index 0000000..a630561
--- /dev/null
+++ b/test/schemas/po1_0.xsd
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:po="http://www.example.com/PO1"
+ targetNamespace="http://www.example.com/PO1"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="po:USAddress"/>
+ <xsd:element name="billTo" type="po:USAddress"/>
+ <xsd:element ref="po:comment" minOccurs="0"/>
+ <xsd:element name="items" type="po:Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+ </xsd:complexType>
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="po:comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="po:SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+<!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
+
diff --git a/test/schemas/poschargrp0_0.xml b/test/schemas/poschargrp0_0.xml
new file mode 100644
index 0000000..0800b1b
--- /dev/null
+++ b/test/schemas/poschargrp0_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testElem xmlns="http://obj-sys.com/mySchema">value</testElem> \ No newline at end of file
diff --git a/test/schemas/poschargrp0_0.xsd b/test/schemas/poschargrp0_0.xsd
new file mode 100644
index 0000000..3243a2f
--- /dev/null
+++ b/test/schemas/poschargrp0_0.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema targetNamespace="http://obj-sys.com/mySchema"
+ xmlns:elementFormDefault="qualified"
+ xmlns="http://obj-sys.com/mySchema"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="testElem">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[^.:/]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/regexp-char-ref_0.xml b/test/schemas/regexp-char-ref_0.xml
new file mode 100644
index 0000000..f6f463e
--- /dev/null
+++ b/test/schemas/regexp-char-ref_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+
+<test test1="5"
+ test2="6"
+ test3="#"
+ test4=";"
+ test5="&amp;" />
diff --git a/test/schemas/regexp-char-ref_0.xsd b/test/schemas/regexp-char-ref_0.xsd
new file mode 100644
index 0000000..2d91c6c
--- /dev/null
+++ b/test/schemas/regexp-char-ref_0.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="test">
+ <xs:complexType>
+ <xs:attribute name="test1" type="myType"/>
+ <xs:attribute name="test2" type="myType"/>
+ <xs:attribute name="test3" type="myType"/>
+ <xs:attribute name="test4" type="myType"/>
+ <xs:attribute name="test5" type="myType"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="myType">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[56;&amp;#]"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/test/schemas/regexp-char-ref_1.xsd b/test/schemas/regexp-char-ref_1.xsd
new file mode 100644
index 0000000..598a4d5
--- /dev/null
+++ b/test/schemas/regexp-char-ref_1.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="test">
+ <xs:complexType>
+ <xs:attribute name="test1" type="myType"/>
+ <xs:attribute name="test2" type="myType"/>
+ <xs:attribute name="test3" type="myType"/>
+ <xs:attribute name="test4" type="myType"/>
+ <xs:attribute name="test5" type="myType"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="myType">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[&amp;#65;]"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/test/schemas/restrict-CT-attr-ref_0.xml b/test/schemas/restrict-CT-attr-ref_0.xml
new file mode 100644
index 0000000..d021a83
--- /dev/null
+++ b/test/schemas/restrict-CT-attr-ref_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<foo:foo xmlns:foo="http://FOO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO restrict-CT-attr-ref_0.xsd" foo:id="b0836217462"/> \ No newline at end of file
diff --git a/test/schemas/restrict-CT-attr-ref_0.xsd b/test/schemas/restrict-CT-attr-ref_0.xsd
new file mode 100644
index 0000000..a98b82a
--- /dev/null
+++ b/test/schemas/restrict-CT-attr-ref_0.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ attributeFormDefault="qualified"
+ xmlns:foo="http://FOO"
+ targetNamespace="http://FOO">
+
+ <xsd:attribute name="id" type="xsd:ID"/>
+
+ <xsd:complexType name="typeIDAttr">
+ <xsd:attribute ref="foo:id"/>
+ </xsd:complexType>
+
+ <xsd:simpleType name="fooID">
+ <xsd:restriction base="xsd:ID">
+ <xsd:pattern value="b\d{10}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="foo:typeIDAttr">
+ <xsd:attribute name="id" type="foo:fooID"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/restriction-attr1_0.xml b/test/schemas/restriction-attr1_0.xml
new file mode 100644
index 0000000..33b8f19
--- /dev/null
+++ b/test/schemas/restriction-attr1_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<foo xmlns="http://FOO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO file:///l:/libxml2/test/schemas/restriction-attr1_0.xsd" barA="hh"/>
diff --git a/test/schemas/restriction-attr1_0.xsd b/test/schemas/restriction-attr1_0.xsd
new file mode 100644
index 0000000..31c288f
--- /dev/null
+++ b/test/schemas/restriction-attr1_0.xsd
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://FOO" targetNamespace="http://FOO">
+
+ <xs:element name="foo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="typeA">
+ <xs:attribute name="barA" type="xs:string" use="optional"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="typeA">
+ <xs:attribute name="barA" type="xs:string" use="required"/>
+ </xs:complexType>
+
+</xs:schema> \ No newline at end of file
diff --git a/test/schemas/restriction-enum-1_0.xml b/test/schemas/restriction-enum-1_0.xml
new file mode 100644
index 0000000..9bdb4a3
--- /dev/null
+++ b/test/schemas/restriction-enum-1_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- This instance should raise an error, since in
+ "restriction-enum-1_1.xsd", the restricting enumeration
+ rules out the value "c" (which is allowed in the restricted
+ type).
+-->
+<foo>c</foo>
diff --git a/test/schemas/restriction-enum-1_1.xsd b/test/schemas/restriction-enum-1_1.xsd
new file mode 100644
index 0000000..69e353d
--- /dev/null
+++ b/test/schemas/restriction-enum-1_1.xsd
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:simpleType name="fooType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="a"/>
+ <xs:enumeration value="b"/>
+ <xs:enumeration value="c"/>
+ <xs:enumeration value="d"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="barType">
+ <xs:restriction base="fooType">
+ <xs:enumeration value="a"/>
+ <xs:enumeration value="b"/>
+ <xs:enumeration value="d"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="foo" type="barType" />
+</xs:schema>
diff --git a/test/schemas/restriction0_0.xml b/test/schemas/restriction0_0.xml
new file mode 100644
index 0000000..8656d2c
--- /dev/null
+++ b/test/schemas/restriction0_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<who>
+ <forename>Bill</forename>
+ <surname>Clinton</surname>
+</who>
diff --git a/test/schemas/restriction0_0.xsd b/test/schemas/restriction0_0.xsd
new file mode 100644
index 0000000..6b35b9f
--- /dev/null
+++ b/test/schemas/restriction0_0.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="personName">
+ <xs:sequence>
+ <xs:element name="title" minOccurs="0"/>
+ <xs:element name="forename" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="surname"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="simpleName">
+ <xs:complexContent>
+ <xs:restriction base="personName">
+ <xs:sequence>
+ <xs:element name="forename" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="surname"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="who" type="simpleName"/>
+</xs:schema>
diff --git a/test/schemas/scc-no-xmlns_0.xml b/test/schemas/scc-no-xmlns_0.xml
new file mode 100644
index 0000000..b85cdcb
--- /dev/null
+++ b/test/schemas/scc-no-xmlns_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://foo"/>
+
diff --git a/test/schemas/scc-no-xmlns_0.xsd b/test/schemas/scc-no-xmlns_0.xsd
new file mode 100644
index 0000000..731c81b
--- /dev/null
+++ b/test/schemas/scc-no-xmlns_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- C.4 Schema Component Constraints: no-xmlns -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute name="xmlns" type="string" />
+ </complexType>
+ </element>
+
+</schema>
diff --git a/test/schemas/scc-no-xsi_0.xml b/test/schemas/scc-no-xsi_0.xml
new file mode 100644
index 0000000..b85cdcb
--- /dev/null
+++ b/test/schemas/scc-no-xsi_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://foo"/>
+
diff --git a/test/schemas/scc-no-xsi_0.xsd b/test/schemas/scc-no-xsi_0.xsd
new file mode 100644
index 0000000..388b6a9
--- /dev/null
+++ b/test/schemas/scc-no-xsi_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.6 Schema Component Constraint: xsi: Not Allowed -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2001/XMLSchema-instance">
+
+ <element name="foo">
+ <complexType>
+ <attribute name="bar" form="qualified" type="string"/>
+ </complexType>
+ </element>
+
+</schema>
diff --git a/test/schemas/seq-dubl-elem1_0.xml b/test/schemas/seq-dubl-elem1_0.xml
new file mode 100644
index 0000000..a93c8ee
--- /dev/null
+++ b/test/schemas/seq-dubl-elem1_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<foo:foo xmlns:foo="http://FOO"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://FOO seq-dubl-elem1_0.xsd">
+ <foo:PGPKeyID>PEhlbGxvIHdvcmxkIT4=</foo:PGPKeyID>
+ <foo:PGPKeyPacket>PEhlbGxvIHdvcmxkIT4=</foo:PGPKeyPacket>
+</foo:foo> \ No newline at end of file
diff --git a/test/schemas/seq-dubl-elem1_0.xsd b/test/schemas/seq-dubl-elem1_0.xsd
new file mode 100644
index 0000000..fd05da7
--- /dev/null
+++ b/test/schemas/seq-dubl-elem1_0.xsd
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:foo="http://FOO"
+ targetNamespace="http://FOO" version="0.1"
+ elementFormDefault="qualified">
+
+ <complexType name="fooType">
+ <choice>
+ <sequence>
+ <element name="PGPKeyID" type="base64Binary"/>
+ <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+maxOccurs="unbounded"/>
+ </sequence>
+ <sequence>
+ <element name="PGPKeyPacket" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+maxOccurs="unbounded"/>
+ </sequence>
+ </choice>
+ </complexType>
+
+ <element name="foo" type="foo:fooType"/>
+
+</schema> \ No newline at end of file
diff --git a/test/schemas/seq0_0.xml b/test/schemas/seq0_0.xml
new file mode 100644
index 0000000..54b1c1c
--- /dev/null
+++ b/test/schemas/seq0_0.xml
@@ -0,0 +1,61 @@
+<doc>
+ <!-- at least one present -->
+ <z-o>
+ <b/>
+ </z-o>
+ <o-o>
+ <c/>
+ </o-o>
+ <z-u>
+ <d/>
+ </z-u>
+ <o-u>
+ <e/>
+ </o-u>
+ <z-3>
+ <f/>
+ </z-3>
+ <o-3>
+ <g/>
+ </o-3>
+ <!-- more than one present when allowed -->
+ <z-o>
+ <b/>
+ </z-o>
+ <o-o>
+ <c/>
+ </o-o>
+ <z-u>
+ <d/>
+ <d/>
+ <d/>
+ </z-u>
+ <o-u>
+ <e/>
+ <e/>
+ <e/>
+ </o-u>
+ <z-3>
+ <f/>
+ <f/>
+ <f/>
+ </z-3>
+ <o-3>
+ <g/>
+ <g/>
+ <g/>
+ </o-3>
+ <!-- min 0 are not present -->
+ <z-o/>
+ <o-o>
+ <c/>
+ </o-o>
+ <z-u/>
+ <o-u>
+ <e/>
+ </o-u>
+ <z-3/>
+ <o-3>
+ <g/>
+ </o-3>
+</doc>
diff --git a/test/schemas/seq0_0.xsd b/test/schemas/seq0_0.xsd
new file mode 100644
index 0000000..34d3a78
--- /dev/null
+++ b/test/schemas/seq0_0.xsd
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation>
+ Testing min and max occurance attributes on sequences
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+
+ <xsd:element name="z-o">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='1'>
+ <xsd:element name='b'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="o-o">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='1' maxOccurs='1'>
+ <xsd:element name='c'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="z-u">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element name='d'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="o-u">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element name='e'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="z-3">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='3'>
+ <xsd:element name='f'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="o-3">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='1' maxOccurs='3'>
+ <xsd:element name='g'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/src-attribute1_0.xml b/test/schemas/src-attribute1_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute1_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute1_0.xsd b/test/schemas/src-attribute1_0.xsd
new file mode 100644
index 0000000..dba8b48
--- /dev/null
+++ b/test/schemas/src-attribute1_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 1
+ default and fixed must not both be present
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute name="bar" type="string" default="moo" fixed="true"/>
+ </complexType>
+ </element>
+
+</schema>
diff --git a/test/schemas/src-attribute2_0.xml b/test/schemas/src-attribute2_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute2_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute2_0.xsd b/test/schemas/src-attribute2_0.xsd
new file mode 100644
index 0000000..d10cc81
--- /dev/null
+++ b/test/schemas/src-attribute2_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 2
+ If default and use are both present, use must have the ·actual value· optional
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute name="bar" type="string" use="required" default="moo" />
+ </complexType>
+ </element>
+
+</schema>
diff --git a/test/schemas/src-attribute3-1_0.xml b/test/schemas/src-attribute3-1_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute3-1_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute3-1_0.xsd b/test/schemas/src-attribute3-1_0.xsd
new file mode 100644
index 0000000..28e003c
--- /dev/null
+++ b/test/schemas/src-attribute3-1_0.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 3.1
+ One of ref or name must be present, but not both
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute name="bar" ref="foo:bar" />
+ </complexType>
+ </element>
+
+ <attribute name="bar" type="string" />
+
+</schema>
diff --git a/test/schemas/src-attribute3-2-form_0.xml b/test/schemas/src-attribute3-2-form_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute3-2-form_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute3-2-form_0.xsd b/test/schemas/src-attribute3-2-form_0.xsd
new file mode 100644
index 0000000..0c7cc23
--- /dev/null
+++ b/test/schemas/src-attribute3-2-form_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 3.2
+ If ref is present, then all of <simpleType>, form and type must be absent
+ This one tests "form"
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute ref="foo:bar" form="qualified"/>
+ </complexType>
+ </element>
+
+ <attribute name="bar" type="string"/>
+
+</schema>
diff --git a/test/schemas/src-attribute3-2-st_0.xml b/test/schemas/src-attribute3-2-st_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute3-2-st_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute3-2-st_0.xsd b/test/schemas/src-attribute3-2-st_0.xsd
new file mode 100644
index 0000000..f256381
--- /dev/null
+++ b/test/schemas/src-attribute3-2-st_0.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 3.2
+ If ref is present, then all of <simpleType>, form and type must be absent
+ This one tests <simpleType>
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute ref="foo:bar">
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </complexType>
+ </element>
+
+ <attribute name="bar" type="string" />
+
+</schema>
diff --git a/test/schemas/src-attribute3-2-type_0.xml b/test/schemas/src-attribute3-2-type_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute3-2-type_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute3-2-type_0.xsd b/test/schemas/src-attribute3-2-type_0.xsd
new file mode 100644
index 0000000..54f1973
--- /dev/null
+++ b/test/schemas/src-attribute3-2-type_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 3.2
+ If ref is present, then all of <simpleType>, form and type must be absent
+ This one tests "type"
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo">
+ <complexType>
+ <attribute ref="foo:bar" type="string"/>
+ </complexType>
+ </element>
+
+ <attribute name="bar" type="string"/>
+
+</schema>
diff --git a/test/schemas/src-attribute4_0.xml b/test/schemas/src-attribute4_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-attribute4_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-attribute4_0.xsd b/test/schemas/src-attribute4_0.xsd
new file mode 100644
index 0000000..cc9d8ac
--- /dev/null
+++ b/test/schemas/src-attribute4_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 3.2
+ type and <simpleType> must not both be present
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <attribute name="bar" type="string">
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+
+ <element name="foo"/>
+
+</schema>
diff --git a/test/schemas/src-element1_0.xml b/test/schemas/src-element1_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-element1_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-element1_0.xsd b/test/schemas/src-element1_0.xsd
new file mode 100644
index 0000000..ffd8d57
--- /dev/null
+++ b/test/schemas/src-element1_0.xsd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 1
+ default and fixed must not both be present
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo" type="string" default="Joni" fixed="Mitchel"/>
+
+</schema>
diff --git a/test/schemas/src-element2-1_0.xml b/test/schemas/src-element2-1_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-element2-1_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-element2-1_0.xsd b/test/schemas/src-element2-1_0.xsd
new file mode 100644
index 0000000..61c2edf
--- /dev/null
+++ b/test/schemas/src-element2-1_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 2.1
+ One of ref or name must be present, but not both.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="bar" type="string"/>
+
+ <element name="foo">
+ <complexType>
+ <sequence>
+ <element name="bar" ref="foo:bar"/>
+ </sequence>
+ </complexType>
+ </element>
+
+</schema>
diff --git a/test/schemas/src-element2-2_0.xml b/test/schemas/src-element2-2_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-element2-2_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-element2-2_0.xsd b/test/schemas/src-element2-2_0.xsd
new file mode 100644
index 0000000..a70740a
--- /dev/null
+++ b/test/schemas/src-element2-2_0.xsd
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 2.2
+ If ref is present, then all of <complexType>, <simpleType>, <key>, <keyref>, <unique>,
+ nillable, default, fixed, form, block and type must be absent, i.e. only minOccurs, maxOccurs,
+ id are allowed in addition to ref, along with <annotation>.
+
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="bar" type="string"/>
+
+ <element name="foo">
+ <complexType>
+ <choice>
+
+ <!-- The good ones. -->
+ <element ref="foo:bar" minOccurs="0"/>
+ <element ref="foo:bar" maxOccurs="0"/>
+ <element ref="foo:bar" id="myomy"/>
+
+ <!-- The bad ones. -->
+ <element ref="foo:bar">
+ <complexType>
+ <attribute name="bar" type="string"/>
+ </complexType>
+ </element>
+
+ <element ref="foo:bar">
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ </element>
+
+ <element ref="foo:bar" type="string"/>
+ <element ref="foo:bar" nillable="true"/>
+ <element ref="foo:bar" default="Joni"/>
+ <element ref="foo:bar" fixed="Mitchel"/>
+ <element ref="foo:bar" form="unqualified"/>
+ <element ref="foo:bar" block="restriction"/>
+
+ </choice>
+ </complexType>
+ </element>
+
+
+</schema>
diff --git a/test/schemas/src-element3_0.xml b/test/schemas/src-element3_0.xml
new file mode 100644
index 0000000..760efd9
--- /dev/null
+++ b/test/schemas/src-element3_0.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<foo xmlns="http://FOO"/>
diff --git a/test/schemas/src-element3_0.xsd b/test/schemas/src-element3_0.xsd
new file mode 100644
index 0000000..28b69d8
--- /dev/null
+++ b/test/schemas/src-element3_0.xsd
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- 3.2.3 : 3
+ type and either <simpleType> or <complexType> are mutually exclusive
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://foo" xmlns:foo="http://foo">
+
+ <element name="foo" type="foo:someType">
+ <complexType>
+ <sequence>
+ <element name="bar" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="bar" type="foo:someType">
+ <simpleType>
+ <restriction base="string">
+ <maxLength value="20"/>
+ </restriction>
+ </simpleType>
+ </element>
+
+ <complexType name="someType">
+ <sequence>
+ <element name="bar" type="string"/>
+ </sequence>
+ </complexType>
+
+</schema>
diff --git a/test/schemas/subst-group-1_0.xsd b/test/schemas/subst-group-1_0.xsd
new file mode 100644
index 0000000..af21eeb
--- /dev/null
+++ b/test/schemas/subst-group-1_0.xsd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Test for bug #341150 -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
+
+ <!-- This is the head of our substitution group for events that have only
+ simple content. -->
+ <xs:element name="SimpleEvent" type="SimpleEventType"/>
+
+ <!-- All SimpleEvent elements have the required set of attributes -->
+ <xs:complexType name="SimpleEventType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anySimpleType">
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <!-- Common members of the SimpleEvent substitution group -->
+ <xs:element name="TestEvent" substitutionGroup="SimpleEvent">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:restriction base="SimpleEventType">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Root element -->
+ <xs:element name="TestRoot" type="TestRootType"/>
+
+ <!-- Core data type of an audit trail -->
+ <xs:complexType name="TestRootType">
+ <xs:sequence>
+ <xs:element name="Events">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="SimpleEvent"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema> \ No newline at end of file
diff --git a/test/schemas/subst-group-1_1.xml b/test/schemas/subst-group-1_1.xml
new file mode 100644
index 0000000..087fe02
--- /dev/null
+++ b/test/schemas/subst-group-1_1.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Test for bug #341150 -->
+<TestRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="subst-group-1.xsd">
+ <Events>
+ <TestEvent>Test 1.</TestEvent>
+ <!-- Uncomment the following element to cause libxml's xmllint to
+ fail to validate. -->
+ <TestEvent>Test 2.</TestEvent>
+ </Events>
+</TestRoot>
+
diff --git a/test/schemas/union2_1.xml b/test/schemas/union2_1.xml
new file mode 100644
index 0000000..e148080
--- /dev/null
+++ b/test/schemas/union2_1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<ELEMENTS xmlns="urn:test:foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:test:foo union_1.xsd">
+ 5
+</ELEMENTS> \ No newline at end of file
diff --git a/test/schemas/union2_1.xsd b/test/schemas/union2_1.xsd
new file mode 100644
index 0000000..6d83726
--- /dev/null
+++ b/test/schemas/union2_1.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:test:foo">
+ <xsd:element name="ELEMENTS">
+ <xsd:simpleType>
+ <xsd:union>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="10"/>
+ <xsd:maxInclusive value="20"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="30"/>
+ <xsd:maxInclusive value="40"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/test/schemas/union_0_0.xml b/test/schemas/union_0_0.xml
new file mode 100644
index 0000000..1a47763
--- /dev/null
+++ b/test/schemas/union_0_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<foo xmlns="http://foo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://foo union_0_0.xsd">
+ <em>EMP0090</em>
+ <em>EMP0099</em>
+</foo>
+
diff --git a/test/schemas/union_0_0.xsd b/test/schemas/union_0_0.xsd
new file mode 100644
index 0000000..23e93d1
--- /dev/null
+++ b/test/schemas/union_0_0.xsd
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://foo"
+ xmlns="http://foo"
+ xmlns:a="http://foo">
+
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="em"
+ type="emType"
+ maxOccurs="unbounded"
+ form="qualified"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="emp0001_3Type">
+ <xsd:restriction base="xsd:ID">
+ <xsd:enumeration value="EMP0040"/>
+ <xsd:enumeration value="EMP0003"/>
+ <xsd:enumeration value="EMP0004"/>
+ <xsd:enumeration value="EMP0005"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="emp0004_5Type">
+ <xsd:restriction base="xsd:ID">
+ <xsd:enumeration value="EMP0002"/>
+ <xsd:enumeration value="EMP0090"/>
+ <xsd:enumeration value="EMP0007"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="unboundedEmType">
+ <xsd:union memberTypes="a:emp0001_3Type emp0004_5Type">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:ID">
+ <xsd:enumeration value="EMP0099"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="emType">
+ <xsd:restriction base="unboundedEmType">
+ <xsd:pattern value="EMP[0-9]*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+
+
+</xsd:schema>
diff --git a/test/schemas/vdv-complexTypes.xsd b/test/schemas/vdv-complexTypes.xsd
new file mode 100644
index 0000000..cd40fb8
--- /dev/null
+++ b/test/schemas/vdv-complexTypes.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/complexTypes.xsd,v 1.1 2001/11/26 13:27:07 vdv Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+
+ <xs:complexType name="elementWithID">
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ <xs:complexType name="bookTmp">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="available"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="personType">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ <xs:element ref="qualification" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+</xs:schema>
diff --git a/test/schemas/vdv-first0_0.xml b/test/schemas/vdv-first0_0.xml
new file mode 100644
index 0000000..a12bcad
--- /dev/null
+++ b/test/schemas/vdv-first0_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first.xml,v 1.2 2001/11/01 22:03:06 vdv Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first0_0.xsd b/test/schemas/vdv-first0_0.xsd
new file mode 100644
index 0000000..e58bed2
--- /dev/null
+++ b/test/schemas/vdv-first0_0.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="qualification" type="xs:string"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ <xs:element name="isbn" type="xs:integer"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="xs:language"/>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="available"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first1_0.xml b/test/schemas/vdv-first1_0.xml
new file mode 100644
index 0000000..a12bcad
--- /dev/null
+++ b/test/schemas/vdv-first1_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first.xml,v 1.2 2001/11/01 22:03:06 vdv Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first1_0.xsd b/test/schemas/vdv-first1_0.xsd
new file mode 100644
index 0000000..c0d6f27
--- /dev/null
+++ b/test/schemas/vdv-first1_0.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="book" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="isbn" type="xs:integer"/>
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="lang" type="xs:language"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="author" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="character" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="qualification" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/vdv-first2_0.xml b/test/schemas/vdv-first2_0.xml
new file mode 100644
index 0000000..a12bcad
--- /dev/null
+++ b/test/schemas/vdv-first2_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first.xml,v 1.2 2001/11/01 22:03:06 vdv Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first2_0.xsd b/test/schemas/vdv-first2_0.xsd
new file mode 100644
index 0000000..c768e97
--- /dev/null
+++ b/test/schemas/vdv-first2_0.xsd
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first-user-dt.xsd,v 1.1 2001/11/01 12:27:47 vdv Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string32">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="isbn">
+ <xs:restriction base="xs:unsignedLong">
+ <xs:totalDigits value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="supportedLanguages">
+ <xs:restriction base="xs:language">
+ <xs:enumeration value="en"/>
+ <xs:enumeration value="es"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="name" type="string32"/>
+ <xs:element name="qualification" type="string255"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ <xs:element name="isbn" type="isbn"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="supportedLanguages"/>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="available"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first3_0.xml b/test/schemas/vdv-first3_0.xml
new file mode 100644
index 0000000..a12bcad
--- /dev/null
+++ b/test/schemas/vdv-first3_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first.xml,v 1.2 2001/11/01 22:03:06 vdv Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first3_0.xsd b/test/schemas/vdv-first3_0.xsd
new file mode 100644
index 0000000..18b1459
--- /dev/null
+++ b/test/schemas/vdv-first3_0.xsd
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first-token.xsd,v 1.2 2001/11/01 12:27:47 vdv Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="name" type="xs:token"/>
+ <xs:element name="qualification" type="xs:token"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ <xs:element name="isbn" type="xs:unsignedLong"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="xs:language"/>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:token">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="available"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first4_0.xml b/test/schemas/vdv-first4_0.xml
new file mode 100644
index 0000000..0b2d7e2
--- /dev/null
+++ b/test/schemas/vdv-first4_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first3_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first4_0.xsd b/test/schemas/vdv-first4_0.xsd
new file mode 100755
index 0000000..9e8e236
--- /dev/null
+++ b/test/schemas/vdv-first4_0.xsd
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first-complex-types.xsd,v 1.1 2001/11/12 20:54:00 vdv Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="string32">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="isbn">
+ <xs:restriction base="xs:unsignedLong">
+ <xs:totalDigits value="10"/>
+ <xs:pattern value="\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="bookID">
+ <xs:restriction base="xs:ID">
+ <xs:pattern value="b\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="supportedLanguages">
+ <xs:restriction base="xs:language">
+ <xs:enumeration value="en"/>
+ <xs:enumeration value="es"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date">
+ <xs:restriction base="xs:date">
+ <xs:pattern value="[^:Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:element name="name" type="string32"/>
+ <xs:element name="qualification" type="string255"/>
+ <xs:element name="born" type="date"/>
+ <xs:element name="dead" type="date"/>
+ <xs:element name="isbn" type="isbn"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="supportedLanguages"/>
+
+ <xs:complexType name="elementWithID">
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+
+ <xs:complexType name="bookTmp">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="available"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="personType">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ <xs:element ref="qualification" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="bookTmp">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="bookID"/>
+ <xs:attribute ref="available"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first4_1.xml b/test/schemas/vdv-first4_1.xml
new file mode 100644
index 0000000..1259ef2
--- /dev/null
+++ b/test/schemas/vdv-first4_1.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first3_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>196T6-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first4_2.xml b/test/schemas/vdv-first4_2.xml
new file mode 100644
index 0000000..c4acce6
--- /dev/null
+++ b/test/schemas/vdv-first4_2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first3_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>2000-01-20Z</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first5_0.xml b/test/schemas/vdv-first5_0.xml
new file mode 100644
index 0000000..7d4e662
--- /dev/null
+++ b/test/schemas/vdv-first5_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first0_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first5_0.xsd b/test/schemas/vdv-first5_0.xsd
new file mode 100644
index 0000000..6d5ffaa
--- /dev/null
+++ b/test/schemas/vdv-first5_0.xsd
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first-building-blocks.xsd,v 1.1 2001/11/26 13:27:07 vdv Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+<xs:include schemaLocation="vdv-simpleTypes.xsd"/>
+<xs:include schemaLocation="vdv-complexTypes.xsd"/>
+
+ <xs:element name="name" type="string32"/>
+ <xs:element name="qualification" type="string255"/>
+ <xs:element name="born" type="date"/>
+ <xs:element name="dead" type="date"/>
+ <xs:element name="isbn" type="isbn"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="supportedLanguages"/>
+
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="bookTmp">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="bookID"/>
+ <xs:attribute ref="available"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-simpleTypes.xsd b/test/schemas/vdv-simpleTypes.xsd
new file mode 100644
index 0000000..79f95fd
--- /dev/null
+++ b/test/schemas/vdv-simpleTypes.xsd
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/simpleTypes.xsd,v 1.1 2001/11/26 13:27:08 vdv Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string32">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="isbn">
+ <xs:restriction base="xs:unsignedLong">
+ <xs:totalDigits value="10"/>
+ <xs:pattern value="\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="bookID">
+ <xs:restriction base="xs:ID">
+ <xs:pattern value="b\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="supportedLanguages">
+ <xs:restriction base="xs:language">
+ <xs:enumeration value="en"/>
+ <xs:enumeration value="es"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="date">
+ <xs:restriction base="xs:date">
+ <xs:pattern value="[^:Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
diff --git a/test/schemas/xml.xsd b/test/schemas/xml.xsd
new file mode 100644
index 0000000..e49fff8
--- /dev/null
+++ b/test/schemas/xml.xsd
@@ -0,0 +1,117 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<!--!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" -->
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ &lt;schema . . .>
+ . . .
+ &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ &lt;type . . .>
+ . . .
+ &lt;attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+ <xs:annotation>
+ <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space" default="preserve">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/test/schemas/xsd-list-itemType_0.xml b/test/schemas/xsd-list-itemType_0.xml
new file mode 100644
index 0000000..a20e408
--- /dev/null
+++ b/test/schemas/xsd-list-itemType_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- This is the test data for the check of the implementation of the "itemType" attribute of the xsd:list element. -->
+<foo xmlns="http://FOO">tea for two and two for tea</foo>
diff --git a/test/schemas/xsd-list-itemType_0.xsd b/test/schemas/xsd-list-itemType_0.xsd
new file mode 100644
index 0000000..b96dbb4
--- /dev/null
+++ b/test/schemas/xsd-list-itemType_0.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!-- This test checks the implementation of the "itemType" attribute of the xsd:list element. -->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://FOO" xmlns:foo="http://FOO">
+
+ <element name="foo">
+ <simpleType>
+ <list itemType="string"/>
+ </simpleType>
+ </element>
+
+
+</schema> \ No newline at end of file
diff --git a/test/schemas/xsd-simpleType-varieties_0.xml b/test/schemas/xsd-simpleType-varieties_0.xml
new file mode 100644
index 0000000..83a0b2a
--- /dev/null
+++ b/test/schemas/xsd-simpleType-varieties_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!-- This is the test data for the check of the implementation of varieties of xsd:simpleType element. -->
+<foo xmlns="http://FOO">
+ <barA>fajita</barA>
+ <barB>pub pub</barB>
+ <barC><![CDATA[tequilla]]></barC>
+</foo>
+
diff --git a/test/schemas/xsd-simpleType-varieties_0.xsd b/test/schemas/xsd-simpleType-varieties_0.xsd
new file mode 100644
index 0000000..8a752e2
--- /dev/null
+++ b/test/schemas/xsd-simpleType-varieties_0.xsd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!-- This test checks the implementation of the varieties of the xsd:simpleType element. -->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://FOO" xmlns:foo="http://FOO"
+ elementFormDefault="qualified">
+
+ <element name="foo">
+ <complexType>
+ <sequence maxOccurs="unbounded">
+ <element name="barA">
+ <simpleType>
+ <union memberTypes="foo:typeA foo:typeB"/>
+ </simpleType>
+ </element>
+ <element name="barB">
+ <simpleType>
+ <list itemType="foo:typeA"/>
+ </simpleType>
+ </element>
+ <element name="barC">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="tequilla"/>
+ </restriction>
+ </simpleType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+
+ <simpleType name="typeA">
+ <restriction base="string">
+ <enumeration value="pub"/>
+ </restriction>
+ </simpleType>
+
+ <simpleType name="typeB">
+ <restriction base="string">
+ <enumeration value="fajita"/>
+ </restriction>
+ </simpleType>
+
+</schema>
diff --git a/test/schematron/zvon1.sct b/test/schematron/zvon1.sct
new file mode 100644
index 0000000..36179dd
--- /dev/null
+++ b/test/schematron/zvon1.sct
@@ -0,0 +1,23 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Print both cases">
+ <rule context="AAA">
+ <assert test="BBB">BBB element is missing.</assert>
+ <report test="BBB">BBB element is present.</report>
+ <assert test="@name">AAA misses attribute name.</assert>
+ <report test="@name">AAA contains attribute name.</report>
+ </rule>
+ </pattern>
+ <pattern name="Print positive result only">
+ <rule context="AAA">
+ <report test="BBB">BBB element is present.</report>
+ <report test="@name">AAA contains attribute name.</report>
+ </rule>
+ </pattern>
+ <pattern name="Print negative result only">
+ <rule context="AAA">
+ <assert test="BBB">BBB element is missing.</assert>
+ <assert test="@name">AAA misses attribute name.</assert>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon10.sct b/test/schematron/zvon10.sct
new file mode 100644
index 0000000..783fac5
--- /dev/null
+++ b/test/schematron/zvon10.sct
@@ -0,0 +1,15 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Open model">
+ <rule context="AAA">
+ <assert test="BBB"> BBB element is not present</assert>
+ <assert test="CCC"> CCC element is not present</assert>
+ </rule>
+ </pattern>
+ <pattern name="Closed model">
+ <rule context="AAA">
+ <assert test="BBB"> BBB element is not present</assert>
+ <assert test="CCC"> CCC element is not present</assert>
+ <assert test="count(BBB|CCC) = count (*)">There is an extra element</assert>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon10_0.xml b/test/schematron/zvon10_0.xml
new file mode 100644
index 0000000..d3ac388
--- /dev/null
+++ b/test/schematron/zvon10_0.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB/>
+</AAA>
diff --git a/test/schematron/zvon10_1.xml b/test/schematron/zvon10_1.xml
new file mode 100644
index 0000000..ba9bdca
--- /dev/null
+++ b/test/schematron/zvon10_1.xml
@@ -0,0 +1,4 @@
+<AAA>
+ <BBB/>
+ <DDD/>
+</AAA>
diff --git a/test/schematron/zvon11.sct b/test/schematron/zvon11.sct
new file mode 100644
index 0000000..79b01fd
--- /dev/null
+++ b/test/schematron/zvon11.sct
@@ -0,0 +1,8 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Attributes present">
+ <rule context="BBB">
+ <assert test="not(@aaa) or (@aaa and @bbb)">The element must not have an isolated aaa attribute</assert>
+ <assert test="not(@bbb) or (@aaa and @bbb)">The element must not have an isolated bbb attribute</assert>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon11_0.xml b/test/schematron/zvon11_0.xml
new file mode 100644
index 0000000..f065eed
--- /dev/null
+++ b/test/schematron/zvon11_0.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB aaa="A" bbb="B"/>
+</AAA>
diff --git a/test/schematron/zvon11_1.xml b/test/schematron/zvon11_1.xml
new file mode 100644
index 0000000..c889933
--- /dev/null
+++ b/test/schematron/zvon11_1.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB bbb="B"/>
+</AAA>
diff --git a/test/schematron/zvon11_2.xml b/test/schematron/zvon11_2.xml
new file mode 100644
index 0000000..26e1221
--- /dev/null
+++ b/test/schematron/zvon11_2.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB aaa="A"/>
+</AAA>
diff --git a/test/schematron/zvon11_3.xml b/test/schematron/zvon11_3.xml
new file mode 100644
index 0000000..d3ac388
--- /dev/null
+++ b/test/schematron/zvon11_3.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB/>
+</AAA>
diff --git a/test/schematron/zvon12.sct b/test/schematron/zvon12.sct
new file mode 100644
index 0000000..049b125
--- /dev/null
+++ b/test/schematron/zvon12.sct
@@ -0,0 +1,8 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Number of characters in an abbreviation">
+ <rule context="BBB">
+ <report test="string-length(@bbb) &lt; 2">There is not enough letters in the abbreviation</report>
+ <report test="string-length(@bbb) > 3">There is too much letters in the abbreviation</report>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon12_0.xml b/test/schematron/zvon12_0.xml
new file mode 100644
index 0000000..d5f28d5
--- /dev/null
+++ b/test/schematron/zvon12_0.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB bbb="C"/>
+</AAA>
diff --git a/test/schematron/zvon12_1.xml b/test/schematron/zvon12_1.xml
new file mode 100644
index 0000000..3507f6b
--- /dev/null
+++ b/test/schematron/zvon12_1.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB bbb="CZ"/>
+</AAA>
diff --git a/test/schematron/zvon12_2.xml b/test/schematron/zvon12_2.xml
new file mode 100644
index 0000000..e0d81af
--- /dev/null
+++ b/test/schematron/zvon12_2.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB bbb="CZCZ"/>
+</AAA>
diff --git a/test/schematron/zvon13.sct b/test/schematron/zvon13.sct
new file mode 100644
index 0000000..cd433e0
--- /dev/null
+++ b/test/schematron/zvon13.sct
@@ -0,0 +1,7 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Sum equals 100%.">
+ <rule context="Total">
+ <assert test="sum(//Percent) = 100">The values do not sum to 100%. </assert>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon13_0.xml b/test/schematron/zvon13_0.xml
new file mode 100644
index 0000000..52619c3
--- /dev/null
+++ b/test/schematron/zvon13_0.xml
@@ -0,0 +1,6 @@
+<Total>
+ <Percent>20</Percent>
+ <Percent>30</Percent>
+ <Percent>10</Percent>
+ <Percent>50</Percent>
+</Total>
diff --git a/test/schematron/zvon13_1.xml b/test/schematron/zvon13_1.xml
new file mode 100644
index 0000000..8fb7368
--- /dev/null
+++ b/test/schematron/zvon13_1.xml
@@ -0,0 +1,5 @@
+<Total>
+ <Percent>20</Percent>
+ <Percent>10</Percent>
+ <Percent>50</Percent>
+</Total>
diff --git a/test/schematron/zvon13_2.xml b/test/schematron/zvon13_2.xml
new file mode 100644
index 0000000..af4d76a
--- /dev/null
+++ b/test/schematron/zvon13_2.xml
@@ -0,0 +1,5 @@
+<Total>
+ <Percent>20</Percent>
+ <Percent>30</Percent>
+ <Percent>50</Percent>
+</Total>
diff --git a/test/schematron/zvon14.sct b/test/schematron/zvon14.sct
new file mode 100644
index 0000000..f98b6d8
--- /dev/null
+++ b/test/schematron/zvon14.sct
@@ -0,0 +1,10 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="a child of selected elements">
+ <rule context="CCC">
+ <assert test="parent::*[name()='BBB' or name()='DDD']">Element CCC must not be a child of element
+ <name path="parent::*"/>
+ </assert>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon14_0.xml b/test/schematron/zvon14_0.xml
new file mode 100644
index 0000000..b627043
--- /dev/null
+++ b/test/schematron/zvon14_0.xml
@@ -0,0 +1,12 @@
+<AAA>
+ <BBB>
+ <CCC/>
+ </BBB>
+ <CCC/>
+ <DDD>
+ <CCC/>
+ <EEE>
+ <CCC/>
+ </EEE>
+ </DDD>
+</AAA>
diff --git a/test/schematron/zvon15.sct b/test/schematron/zvon15.sct
new file mode 100644
index 0000000..7da5d86
--- /dev/null
+++ b/test/schematron/zvon15.sct
@@ -0,0 +1,11 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="id is the only permited attribute name">
+ <rule context="*">
+ <report test="@*[not(name()='id')]">Attribute
+ <name path="@*[not(name()='id')]"/> is forbidden in element
+ <name/>
+ </report>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon15_0.xml b/test/schematron/zvon15_0.xml
new file mode 100644
index 0000000..390aedb
--- /dev/null
+++ b/test/schematron/zvon15_0.xml
@@ -0,0 +1,4 @@
+<AAA name="aaa">
+<BBB id="bbb"/>
+<CCC color="ccc"/>
+</AAA>
diff --git a/test/schematron/zvon1_0.xml b/test/schematron/zvon1_0.xml
new file mode 100644
index 0000000..d3ac388
--- /dev/null
+++ b/test/schematron/zvon1_0.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <BBB/>
+</AAA>
diff --git a/test/schematron/zvon1_1.xml b/test/schematron/zvon1_1.xml
new file mode 100644
index 0000000..861c90a
--- /dev/null
+++ b/test/schematron/zvon1_1.xml
@@ -0,0 +1,3 @@
+<AAA>
+ <CCC/>
+</AAA>
diff --git a/test/schematron/zvon2.sct b/test/schematron/zvon2.sct
new file mode 100644
index 0000000..56974a0
--- /dev/null
+++ b/test/schematron/zvon2.sct
@@ -0,0 +1,9 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Character @ forbidden">
+ <rule context="*">
+ <report test="contains(.,'@')">Text in element
+ <name/> must not contain character @
+ </report>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon2_0.xml b/test/schematron/zvon2_0.xml
new file mode 100644
index 0000000..832c507
--- /dev/null
+++ b/test/schematron/zvon2_0.xml
@@ -0,0 +1,4 @@
+<AAA>
+ <BBB>bbbb</BBB>
+ <CCC>cccc</CCC>
+</AAA>
diff --git a/test/schematron/zvon2_1.xml b/test/schematron/zvon2_1.xml
new file mode 100644
index 0000000..6ade195
--- /dev/null
+++ b/test/schematron/zvon2_1.xml
@@ -0,0 +1,4 @@
+<AAA>
+ <BBB>bbbb@bbb.com</BBB>
+ <CCC>ccc@ccc.com</CCC>
+</AAA>
diff --git a/test/schematron/zvon2_2.xml b/test/schematron/zvon2_2.xml
new file mode 100644
index 0000000..812d44a
--- /dev/null
+++ b/test/schematron/zvon2_2.xml
@@ -0,0 +1,5 @@
+<AAA>
+ <BBB>bbbb</BBB>
+ <CCC>cccc</CCC>
+ aaa@aaa.net
+</AAA>
diff --git a/test/schematron/zvon3.sct b/test/schematron/zvon3.sct
new file mode 100644
index 0000000..f75b67b
--- /dev/null
+++ b/test/schematron/zvon3.sct
@@ -0,0 +1,8 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Attribute test">
+ <rule context="CCC">
+ <assert test="@name">attribute name is not present</assert>
+ <report test="@name">attribute name is present</report>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon3_0.xml b/test/schematron/zvon3_0.xml
new file mode 100644
index 0000000..ec8dc43
--- /dev/null
+++ b/test/schematron/zvon3_0.xml
@@ -0,0 +1,8 @@
+<AAA>
+ <BBB>
+ <CCC/>
+ <CCC/>
+ </BBB>
+ <CCC name="c1"/>
+ <CCC name="c2"/>
+</AAA>
diff --git a/test/schematron/zvon4.sct b/test/schematron/zvon4.sct
new file mode 100644
index 0000000..0b8a4e1
--- /dev/null
+++ b/test/schematron/zvon4.sct
@@ -0,0 +1,10 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Root test">
+ <rule context="/*">
+ <assert test="name()='AAA'">Root element is
+ <name/>, not AAA
+ </assert>
+ <report test="name()='AAA'">Root element is AAA</report>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon4_0.xml b/test/schematron/zvon4_0.xml
new file mode 100644
index 0000000..4ba332e
--- /dev/null
+++ b/test/schematron/zvon4_0.xml
@@ -0,0 +1,6 @@
+<AAA>
+ <BBB>
+ <CCC/>
+ <CCC/>
+ </BBB>
+</AAA>
diff --git a/test/schematron/zvon4_1.xml b/test/schematron/zvon4_1.xml
new file mode 100644
index 0000000..5becbcf
--- /dev/null
+++ b/test/schematron/zvon4_1.xml
@@ -0,0 +1,6 @@
+<XXX>
+ <BBB>
+ <CCC/>
+ <CCC/>
+ </BBB>
+</XXX>
diff --git a/test/schematron/zvon5.sct b/test/schematron/zvon5.sct
new file mode 100644
index 0000000..36cb8bb
--- /dev/null
+++ b/test/schematron/zvon5.sct
@@ -0,0 +1,12 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Select empty elements CCC">
+ <rule context="CCC">
+ <assert test="normalize-space(.) and *">Source contains an empty element CCC </assert>
+ <report test="normalize-space(.) = ''">[1]An element CCC does not contain any text</report>
+ <assert test="normalize-space(.)">[2]An element CCC does not contain any text</assert>
+ <report test="not(*)">[1]An element CCC does not contain any child element</report>
+ <assert test="*">[2]An element CCC does not contain any child element</assert>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon5_0.xml b/test/schematron/zvon5_0.xml
new file mode 100644
index 0000000..dc7c36b
--- /dev/null
+++ b/test/schematron/zvon5_0.xml
@@ -0,0 +1,5 @@
+<AAA>
+ <BBB>
+ <CCC/>
+ </BBB>
+</AAA>
diff --git a/test/schematron/zvon5_1.xml b/test/schematron/zvon5_1.xml
new file mode 100644
index 0000000..6915fa6
--- /dev/null
+++ b/test/schematron/zvon5_1.xml
@@ -0,0 +1,5 @@
+<AAA>
+ <BBB>
+ <CCC>I am CCC element</CCC>
+ </BBB>
+</AAA>
diff --git a/test/schematron/zvon5_2.xml b/test/schematron/zvon5_2.xml
new file mode 100644
index 0000000..2a11400
--- /dev/null
+++ b/test/schematron/zvon5_2.xml
@@ -0,0 +1,7 @@
+<AAA>
+ <BBB>
+ <CCC>
+ <DDD/>
+ </CCC>
+ </BBB>
+</AAA>
diff --git a/test/schematron/zvon6.sct b/test/schematron/zvon6.sct
new file mode 100644
index 0000000..678ae58
--- /dev/null
+++ b/test/schematron/zvon6.sct
@@ -0,0 +1,8 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Predefined values">
+ <rule context="AAA">
+ <report test="normalize-space(.) = 'aaa' or normalize-space(.) = 'bbb'">O.K.</report>
+ <assert test="normalize-space(.) = 'aaa' or normalize-space(.) = 'bbb'">The AAA value is not permitted.</assert>
+ </rule>
+ </pattern>
+</schema>
diff --git a/test/schematron/zvon6_0.xml b/test/schematron/zvon6_0.xml
new file mode 100644
index 0000000..a3efb70
--- /dev/null
+++ b/test/schematron/zvon6_0.xml
@@ -0,0 +1,3 @@
+<AAA>
+aaa
+</AAA>
diff --git a/test/schematron/zvon6_1.xml b/test/schematron/zvon6_1.xml
new file mode 100644
index 0000000..7d7daf8
--- /dev/null
+++ b/test/schematron/zvon6_1.xml
@@ -0,0 +1,3 @@
+<AAA>
+ bbb
+</AAA>
diff --git a/test/schematron/zvon6_2.xml b/test/schematron/zvon6_2.xml
new file mode 100644
index 0000000..555f24d
--- /dev/null
+++ b/test/schematron/zvon6_2.xml
@@ -0,0 +1,3 @@
+<AAA>
+ ccc
+</AAA>
diff --git a/test/schematron/zvon7.sct b/test/schematron/zvon7.sct
new file mode 100644
index 0000000..a22a89e
--- /dev/null
+++ b/test/schematron/zvon7.sct
@@ -0,0 +1,9 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Test integer">
+ <rule context="AAA">
+ <report test="floor(.) = number(.)">O.K.</report>
+ <assert test="floor(.) = number(.)">The AAA value is not an integer.</assert>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon7_0.xml b/test/schematron/zvon7_0.xml
new file mode 100644
index 0000000..a3efb70
--- /dev/null
+++ b/test/schematron/zvon7_0.xml
@@ -0,0 +1,3 @@
+<AAA>
+aaa
+</AAA>
diff --git a/test/schematron/zvon7_1.xml b/test/schematron/zvon7_1.xml
new file mode 100644
index 0000000..8da0ae5
--- /dev/null
+++ b/test/schematron/zvon7_1.xml
@@ -0,0 +1,3 @@
+<AAA>
+ 12.234
+</AAA>
diff --git a/test/schematron/zvon7_2.xml b/test/schematron/zvon7_2.xml
new file mode 100644
index 0000000..e27cfe7
--- /dev/null
+++ b/test/schematron/zvon7_2.xml
@@ -0,0 +1,3 @@
+<AAA>
+45
+</AAA>
diff --git a/test/schematron/zvon7_3.xml b/test/schematron/zvon7_3.xml
new file mode 100644
index 0000000..c17295a
--- /dev/null
+++ b/test/schematron/zvon7_3.xml
@@ -0,0 +1,3 @@
+<AAA>
+0
+</AAA>
diff --git a/test/schematron/zvon7_4.xml b/test/schematron/zvon7_4.xml
new file mode 100644
index 0000000..4f34fbe
--- /dev/null
+++ b/test/schematron/zvon7_4.xml
@@ -0,0 +1,3 @@
+<AAA>
+-45
+</AAA>
diff --git a/test/schematron/zvon8.sct b/test/schematron/zvon8.sct
new file mode 100644
index 0000000..5641ecd
--- /dev/null
+++ b/test/schematron/zvon8.sct
@@ -0,0 +1,10 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Test count">
+ <rule context="/*">
+ <report test="count(//BBB) = count(//AAA)">O.K.</report>
+ <assert test="count(//BBB) &lt;= count(//AAA)">Some AAA are missing</assert>
+ <report test="count(//BBB) &lt; count(//AAA)">Some BBB are missing</report>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon8_0.xml b/test/schematron/zvon8_0.xml
new file mode 100644
index 0000000..b6739bb
--- /dev/null
+++ b/test/schematron/zvon8_0.xml
@@ -0,0 +1,8 @@
+<XXX>
+ <BBB/>
+ <BBB/>
+ <AAA/>
+ <BBB/>
+ <AAA/>
+ <AAA/>
+</XXX>
diff --git a/test/schematron/zvon8_1.xml b/test/schematron/zvon8_1.xml
new file mode 100644
index 0000000..196dbe2
--- /dev/null
+++ b/test/schematron/zvon8_1.xml
@@ -0,0 +1,7 @@
+<XXX>
+ <BBB/>
+ <AAA/>
+ <BBB/>
+ <AAA/>
+ <AAA/>
+</XXX>
diff --git a/test/schematron/zvon8_2.xml b/test/schematron/zvon8_2.xml
new file mode 100644
index 0000000..f85de82
--- /dev/null
+++ b/test/schematron/zvon8_2.xml
@@ -0,0 +1,7 @@
+<XXX>
+ <BBB/>
+ <BBB/>
+ <AAA/>
+ <BBB/>
+ <AAA/>
+</XXX>
diff --git a/test/schematron/zvon9.sct b/test/schematron/zvon9.sct
new file mode 100644
index 0000000..6f67877
--- /dev/null
+++ b/test/schematron/zvon9.sct
@@ -0,0 +1,9 @@
+<schema xmlns="http://www.ascc.net/xml/schematron" >
+ <pattern name="Test attribute">
+ <rule context="CCC">
+ <report test="parent::BBB and not(@id)">Attribute id is missing</report>
+ <report test="not(parent::BBB) and @id">Attribute id is used in wrong context</report>
+ </rule>
+ </pattern>
+</schema>
+
diff --git a/test/schematron/zvon9_0.xml b/test/schematron/zvon9_0.xml
new file mode 100644
index 0000000..d871519
--- /dev/null
+++ b/test/schematron/zvon9_0.xml
@@ -0,0 +1,7 @@
+<AAA>
+ <CCC/>
+ <CCC/>
+ <BBB>
+ <CCC id="Q1"/>
+ </BBB>
+</AAA>
diff --git a/test/schematron/zvon9_1.xml b/test/schematron/zvon9_1.xml
new file mode 100644
index 0000000..5c1c1bf
--- /dev/null
+++ b/test/schematron/zvon9_1.xml
@@ -0,0 +1,7 @@
+<AAA>
+ <CCC id="Q2"/>
+ <CCC/>
+ <BBB>
+ <CCC id="Q1"/>
+ </BBB>
+</AAA>
diff --git a/test/schematron/zvon9_2.xml b/test/schematron/zvon9_2.xml
new file mode 100644
index 0000000..7e09fab
--- /dev/null
+++ b/test/schematron/zvon9_2.xml
@@ -0,0 +1,7 @@
+<AAA>
+ <CCC/>
+ <CCC/>
+ <BBB>
+ <CCC/>
+ </BBB>
+</AAA>
diff --git a/test/scripts/base.script b/test/scripts/base.script
new file mode 100644
index 0000000..1fc3f57
--- /dev/null
+++ b/test/scripts/base.script
@@ -0,0 +1,7 @@
+base
+cd //e
+base
+cd .//img
+base
+exit
+
diff --git a/test/scripts/base.xml b/test/scripts/base.xml
new file mode 100644
index 0000000..81f71cb
--- /dev/null
+++ b/test/scripts/base.xml
@@ -0,0 +1,7 @@
+<doc>
+ <e xml:base="http://example.com/base/">
+ <images xml:base="images/">
+ <img href="img1.gif"/>
+ </images>
+ </e>
+</doc>
diff --git a/test/scripts/base2.script b/test/scripts/base2.script
new file mode 100644
index 0000000..1fc3f57
--- /dev/null
+++ b/test/scripts/base2.script
@@ -0,0 +1,7 @@
+base
+cd //e
+base
+cd .//img
+base
+exit
+
diff --git a/test/scripts/base2.xml b/test/scripts/base2.xml
new file mode 100644
index 0000000..0e92a10
--- /dev/null
+++ b/test/scripts/base2.xml
@@ -0,0 +1,7 @@
+<doc>
+ <e xml:base="html/">
+ <images xml:base="../images/">
+ <img href="img1.gif"/>
+ </images>
+ </e>
+</doc>
diff --git a/test/scripts/set1.script b/test/scripts/set1.script
new file mode 100644
index 0000000..e9a3e69
--- /dev/null
+++ b/test/scripts/set1.script
@@ -0,0 +1,2 @@
+set <b/>
+save -
diff --git a/test/scripts/set1.xml b/test/scripts/set1.xml
new file mode 100644
index 0000000..dcd0694
--- /dev/null
+++ b/test/scripts/set1.xml
@@ -0,0 +1 @@
+<a>foo</a>
diff --git a/test/scripts/set3.script b/test/scripts/set3.script
new file mode 100644
index 0000000..e99745a
--- /dev/null
+++ b/test/scripts/set3.script
@@ -0,0 +1,5 @@
+cd *
+xpath //*[namespace-uri()="bar"]
+set <b/>
+xpath //*[namespace-uri()="bar"]
+save -
diff --git a/test/scripts/set3.xml b/test/scripts/set3.xml
new file mode 100644
index 0000000..211b4e5
--- /dev/null
+++ b/test/scripts/set3.xml
@@ -0,0 +1 @@
+<a xmlns="bar">foo</a>
diff --git a/test/scripts/set4.script b/test/scripts/set4.script
new file mode 100644
index 0000000..39d64cb
--- /dev/null
+++ b/test/scripts/set4.script
@@ -0,0 +1,4 @@
+cd a/b
+set <a:c/>
+xpath //*[namespace-uri()="foo"]
+save -
diff --git a/test/scripts/set4.xml b/test/scripts/set4.xml
new file mode 100644
index 0000000..1ba4401
--- /dev/null
+++ b/test/scripts/set4.xml
@@ -0,0 +1 @@
+<a xmlns:a="bar"><b xmlns:a="foo"/></a>
diff --git a/test/slashdot.rdf b/test/slashdot.rdf
new file mode 100644
index 0000000..a7a624c
--- /dev/null
+++ b/test/slashdot.rdf
@@ -0,0 +1,66 @@
+<?xml version="1.0"?><rdf:RDF
+xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+xmlns="http://my.netscape.com/rdf/simple/0.9/">
+
+ <channel>
+ <title>Slashdot:News for Nerds. Stuff that Matters.</title>
+ <link>http://slashdot.org/</link>
+ <description>News for Nerds. Stuff that Matters</description>
+ </channel>
+
+ <image>
+ <title>Slashdot</title>
+ <url>http://slashdot.org/images/slashdotlg.gif</url>
+ <link>http://slashdot.org</link>
+ </image>
+
+ <item>
+ <title>100 Mbit/s on Fibre to the home</title>
+ <link>http://slashdot.org/articles/99/06/06/1440211.shtml</link>
+ </item>
+
+ <item>
+ <title>Gimp 1.2 Preview</title>
+ <link>http://slashdot.org/articles/99/06/06/1438246.shtml</link>
+ </item>
+
+ <item>
+ <title>Sony's AIBO robot Sold Out</title>
+ <link>http://slashdot.org/articles/99/06/06/1432256.shtml</link>
+ </item>
+
+ <item>
+ <title>Ask Slashdot: Another Word for "Hacker"?</title>
+ <link>http://slashdot.org/askslashdot/99/06/05/1815225.shtml</link>
+ </item>
+
+ <item>
+ <title>Corel Linux FAQ</title>
+ <link>http://slashdot.org/articles/99/06/05/1842218.shtml</link>
+ </item>
+
+ <item>
+ <title>Upside downsides MP3.COM.</title>
+ <link>http://slashdot.org/articles/99/06/05/1558210.shtml</link>
+ </item>
+
+ <item>
+ <title>2 Terabits of Bandwidth</title>
+ <link>http://slashdot.org/articles/99/06/05/1554258.shtml</link>
+ </item>
+
+ <item>
+ <title>Suppression of cold fusion research?</title>
+ <link>http://slashdot.org/articles/99/06/04/2313200.shtml</link>
+ </item>
+
+ <item>
+ <title>California Gov. Halts Wage Info Sale</title>
+ <link>http://slashdot.org/articles/99/06/04/235256.shtml</link>
+ </item>
+
+ <item>
+ <title>Red Hat Announces IPO</title>
+ <link>http://slashdot.org/articles/99/06/04/0849207.shtml</link>
+ </item>
+</rdf:RDF> \ No newline at end of file
diff --git a/test/slashdot.xml b/test/slashdot.xml
new file mode 100644
index 0000000..f8e79e6
--- /dev/null
+++ b/test/slashdot.xml
@@ -0,0 +1,112 @@
+<ultramode>
+ <story>
+ <title>100 Mbit/s on Fibre to the home</title>
+ <url>http://slashdot.org/articles/99/06/06/1440211.shtml</url>
+ <time>1999-06-06 14:39:59</time>
+ <author>CmdrTaco</author>
+ <department>wouldn't-it-be-nice</department>
+ <topic>internet</topic>
+ <comments>20</comments>
+ <section>articles</section>
+ <image>topicinternet.jpg</image>
+ </story>
+ <story>
+ <title>Gimp 1.2 Preview</title>
+ <url>http://slashdot.org/articles/99/06/06/1438246.shtml</url>
+ <time>1999-06-06 14:38:40</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-read</department>
+ <topic>gimp</topic>
+ <comments>12</comments>
+ <section>articles</section>
+ <image>topicgimp.gif</image>
+ </story>
+ <story>
+ <title>Sony's AIBO robot Sold Out</title>
+ <url>http://slashdot.org/articles/99/06/06/1432256.shtml</url>
+ <time>1999-06-06 14:32:51</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-see</department>
+ <topic>tech</topic>
+ <comments>10</comments>
+ <section>articles</section>
+ <image>topictech2.jpg</image>
+ </story>
+ <story>
+ <title>Ask Slashdot: Another Word for "Hacker"?</title>
+ <url>http://slashdot.org/askslashdot/99/06/05/1815225.shtml</url>
+ <time>1999-06-05 20:00:00</time>
+ <author>Cliff</author>
+ <department>hacker-vs-cracker</department>
+ <topic>news</topic>
+ <comments>385</comments>
+ <section>askslashdot</section>
+ <image>topicnews.gif</image>
+ </story>
+ <story>
+ <title>Corel Linux FAQ</title>
+ <url>http://slashdot.org/articles/99/06/05/1842218.shtml</url>
+ <time>1999-06-05 18:42:06</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-read</department>
+ <topic>corel</topic>
+ <comments>164</comments>
+ <section>articles</section>
+ <image>topiccorel.gif</image>
+ </story>
+ <story>
+ <title>Upside downsides MP3.COM.</title>
+ <url>http://slashdot.org/articles/99/06/05/1558210.shtml</url>
+ <time>1999-06-05 15:56:45</time>
+ <author>CmdrTaco</author>
+ <department>stuff-to-think-about</department>
+ <topic>music</topic>
+ <comments>48</comments>
+ <section>articles</section>
+ <image>topicmusic.gif</image>
+ </story>
+ <story>
+ <title>2 Terabits of Bandwidth</title>
+ <url>http://slashdot.org/articles/99/06/05/1554258.shtml</url>
+ <time>1999-06-05 15:53:43</time>
+ <author>CmdrTaco</author>
+ <department>faster-porn</department>
+ <topic>internet</topic>
+ <comments>66</comments>
+ <section>articles</section>
+ <image>topicinternet.jpg</image>
+ </story>
+ <story>
+ <title>Suppression of cold fusion research?</title>
+ <url>http://slashdot.org/articles/99/06/04/2313200.shtml</url>
+ <time>1999-06-04 23:12:29</time>
+ <author>Hemos</author>
+ <department>possibly-probably</department>
+ <topic>science</topic>
+ <comments>217</comments>
+ <section>articles</section>
+ <image>topicscience.gif</image>
+ </story>
+ <story>
+ <title>California Gov. Halts Wage Info Sale</title>
+ <url>http://slashdot.org/articles/99/06/04/235256.shtml</url>
+ <time>1999-06-04 23:05:34</time>
+ <author>Hemos</author>
+ <department>woo-hoo!</department>
+ <topic>usa</topic>
+ <comments>16</comments>
+ <section>articles</section>
+ <image>topicus.gif</image>
+ </story>
+ <story>
+ <title>Red Hat Announces IPO</title>
+ <url>http://slashdot.org/articles/99/06/04/0849207.shtml</url>
+ <time>1999-06-04 19:30:18</time>
+ <author>Justin</author>
+ <department>details-sketchy</department>
+ <topic>redhat</topic>
+ <comments>155</comments>
+ <section>articles</section>
+ <image>topicredhat.gif</image>
+ </story>
+</ultramode>
diff --git a/test/slashdot16.xml b/test/slashdot16.xml
new file mode 100644
index 0000000..f6a7f2a
--- /dev/null
+++ b/test/slashdot16.xml
Binary files differ
diff --git a/test/svg1 b/test/svg1
new file mode 100644
index 0000000..53bf38f
--- /dev/null
+++ b/test/svg1
@@ -0,0 +1,163 @@
+<?xml version = "1.0" standalone = "yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width = "242px" height="383px">
+<g style = "stroke: #000000" >
+</g>
+<g style = "fill: #f2cc99" >
+ <polyline verts = " 69,18 82,8 99,3 118,5 135,12 149,21 156,13 165,9 177,13 183,28 180,50 164,91 155,107 154,114 151,121 141,127 139,136 155,206 157,251 126,342 133,357 128,376 83,376 75,368 67,350 61,350 53,369 4,369 2,361 5,354 12,342 16,321 4,257 4,244 7,218 9,179 26,127 43,93 32,77 30,70 24,67 16,49 17,35 18,23 30,12 40,7 53,7 62,12 69,18 69,18 69,18"/>
+</g>
+<g style = "fill: #e5b27f" >
+ <polyline verts = " 142,79 136,74 138,82 133,78 133,84 127,78 128,85 124,80 125,87 119,82 119,90 125,99 125,96 128,100 128,94 131,98 132,93 135,97 136,93 138,97 139,94 141,98 143,94 144,85 142,79 142,79 142,79"/>
+</g>
+<g style = "fill: #eb8080" >
+ <polyline verts = " 127,101 132,100 137,99 144,101 143,105 135,110 127,101 127,101 127,101"/>
+</g>
+<g style = "fill: #f2cc99" >
+ <polyline verts = " 178,229 157,248 139,296 126,349 137,356 158,357 183,342 212,332 235,288 235,261 228,252 212,250 188,251 178,229 178,229 178,229"/>
+</g>
+<g style = "fill: #9c826b" >
+ <polyline verts = " 56,229 48,241 48,250 57,281 63,325 71,338 81,315 76,321 79,311 83,301 75,308 80,298 73,303 76,296 71,298 74,292 69,293 74,284 78,278 71,278 74,274 68,273 70,268 66,267 68,261 60,266 62,259 65,253 57,258 59,251 55,254 55,248 60,237 54,240 58,234 54,236 56,229 56,229 56,229"/>
+ <polyline verts = " 74,363 79,368 81,368 85,362 89,363 92,370 96,373 101,372 108,361 110,371 113,373 116,371 120,358 122,363 123,371 126,371 129,367 132,357 135,361 130,376 127,377 94,378 84,376 76,371 74,363 74,363 74,363"/>
+ <polyline verts = " 212,250 219,251 228,258 236,270 235,287 225,304 205,332 177,343 171,352 158,357 166,352 168,346 168,339 165,333 155,327 155,323 161,320 165,316 169,316 167,312 171,313 168,308 173,309 170,306 177,306 175,308 177,311 174,311 176,316 171,315 174,319 168,320 168,323 175,327 179,332 183,326 184,332 189,323 190,328 194,320 194,325 199,316 201,320 204,313 206,316 208,310 211,305 219,298 226,288 229,279 228,266 224,259 217,253 212,250 212,250 212,250"/>
+ <polyline verts = " 151,205 151,238 149,252 141,268 128,282 121,301 130,300 126,313 118,324 116,337 120,346 133,352 133,340 137,333 145,329 156,327 153,319 153,291 157,271 170,259 178,277 193,250 174,216 151,205 151,205 151,205"/>
+ <polyline verts = " 78,127 90,142 95,155 108,164 125,167 139,175 150,206 152,191 141,140 121,148 100,136 78,127 78,127 78,127"/>
+ <polyline verts = " 21,58 35,63 38,68 32,69 42,74 40,79 47,80 54,83 45,94 34,81 32,73 24,66 21,58 21,58 21,58"/>
+ <polyline verts = " 71,34 67,34 66,27 59,24 54,17 48,17 39,22 30,26 28,31 31,39 38,46 29,45 36,54 41,61 41,70 50,69 54,71 55,58 67,52 76,43 76,39 68,44 71,34 71,34 71,34"/>
+ <polyline verts = " 139,74 141,83 143,89 144,104 148,104 155,106 154,86 157,77 155,72 150,77 144,77 139,74 139,74 139,74"/>
+ <polyline verts = " 105,44 102,53 108,58 111,62 112,55 105,44 105,44 105,44"/>
+ <polyline verts = " 141,48 141,54 144,58 139,62 137,66 136,59 137,52 141,48 141,48 141,48"/>
+ <polyline verts = " 98,135 104,130 105,134 108,132 108,135 112,134 113,137 116,136 116,139 119,139 124,141 128,140 133,138 140,133 139,140 126,146 104,144 98,135 98,135 98,135"/>
+ <polyline verts = " 97,116 103,119 103,116 111,118 116,117 122,114 127,107 135,111 142,107 141,114 145,118 149,121 145,125 140,124 127,121 113,125 100,124 97,116 97,116 97,116"/>
+ <polyline verts = " 147,33 152,35 157,34 153,31 160,31 156,28 161,28 159,24 163,25 163,21 165,22 170,23 167,17 172,21 174,18 175,23 176,22 177,28 177,33 174,37 176,39 174,44 171,49 168,53 164,57 159,68 156,70 154,60 150,51 146,43 144,35 147,33 147,33 147,33"/>
+ <polyline verts = " 85,72 89,74 93,75 100,76 105,75 102,79 94,79 88,76 85,72 85,72 85,72"/>
+ <polyline verts = " 86,214 79,221 76,232 82,225 78,239 82,234 78,245 81,243 79,255 84,250 84,267 87,254 90,271 90,257 95,271 93,256 95,249 92,252 93,243 89,253 89,241 86,250 87,236 83,245 87,231 82,231 90,219 84,221 86,214 86,214 86,214"/>
+</g>
+<g style = "fill: #ffcc7f" >
+ <polyline verts = " 93,68 96,72 100,73 106,72 108,66 105,63 100,62 93,68 93,68 93,68"/>
+ <polyline verts = " 144,64 142,68 142,73 146,74 150,73 154,64 149,62 144,64 144,64 144,64"/>
+</g>
+<g style = "fill: #9c826b" >
+ <polyline verts = " 57,91 42,111 52,105 41,117 53,112 46,120 53,116 50,124 57,119 55,127 61,122 60,130 67,126 66,134 71,129 72,136 77,130 76,137 80,133 82,138 86,135 96,135 94,129 86,124 83,117 77,123 79,117 73,120 75,112 68,116 71,111 65,114 69,107 63,110 68,102 61,107 66,98 61,103 63,97 57,99 57,91 57,91 57,91"/>
+ <polyline verts = " 83,79 76,79 67,82 75,83 65,88 76,87 65,92 76,91 68,96 77,95 70,99 80,98 72,104 80,102 76,108 85,103 92,101 87,98 93,96 86,94 91,93 85,91 93,89 99,89 105,93 107,85 102,82 92,80 83,79 83,79 83,79"/>
+ <polyline verts = " 109,77 111,83 109,89 113,94 117,90 117,81 114,78 109,77 109,77 109,77"/>
+ <polyline verts = " 122,128 127,126 134,127 136,129 134,130 130,128 124,129 122,128 122,128 122,128"/>
+ <polyline verts = " 78,27 82,32 80,33 82,36 78,37 82,40 78,42 81,46 76,47 78,49 74,50 82,52 87,50 83,48 91,46 86,45 91,42 88,40 92,37 86,34 90,31 86,29 89,26 78,27 78,27 78,27"/>
+ <polyline verts = " 82,17 92,20 79,21 90,25 81,25 94,28 93,26 101,30 101,26 107,33 108,28 111,40 113,34 115,45 117,39 119,54 121,46 124,58 126,47 129,59 130,49 134,58 133,44 137,48 133,37 137,40 133,32 126,20 135,26 132,19 138,23 135,17 142,18 132,11 116,6 94,6 78,11 92,12 80,14 90,16 82,17 82,17 82,17"/>
+ <polyline verts = " 142,234 132,227 124,223 115,220 110,225 118,224 127,229 135,236 122,234 115,237 113,242 121,238 139,243 121,245 111,254 95,254 102,244 104,235 110,229 100,231 104,224 113,216 122,215 132,217 141,224 145,230 149,240 142,234 142,234 142,234"/>
+ <polyline verts = " 115,252 125,248 137,249 143,258 134,255 125,254 115,252 115,252 115,252"/>
+ <polyline verts = " 114,212 130,213 140,219 147,225 144,214 137,209 128,207 114,212 114,212 114,212"/>
+ <polyline verts = " 102,263 108,258 117,257 131,258 116,260 109,265 102,263 102,263 102,263"/>
+ <polyline verts = " 51,241 35,224 40,238 23,224 31,242 19,239 28,247 17,246 25,250 37,254 39,263 44,271 47,294 48,317 51,328 60,351 60,323 53,262 47,246 51,241 51,241 51,241"/>
+ <polyline verts = " 2,364 9,367 14,366 18,355 20,364 26,366 31,357 35,364 39,364 42,357 47,363 53,360 59,357 54,369 7,373 2,364 2,364 2,364"/>
+ <polyline verts = " 7,349 19,345 25,339 18,341 23,333 28,326 23,326 27,320 23,316 25,311 20,298 15,277 12,264 9,249 10,223 3,248 5,261 15,307 17,326 11,343 7,349 7,349 7,349"/>
+ <polyline verts = " 11,226 15,231 25,236 18,227 11,226 11,226 11,226"/>
+ <polyline verts = " 13,214 19,217 32,227 23,214 16,208 15,190 24,148 31,121 24,137 14,170 8,189 13,214 13,214 13,214"/>
+ <polyline verts = " 202,254 195,258 199,260 193,263 197,263 190,268 196,268 191,273 188,282 200,272 194,272 201,266 197,265 204,262 200,258 204,256 202,254 202,254 202,254"/>
+</g>
+<g style = "fill: #845433" >
+ <polyline verts = " 151,213 165,212 179,225 189,246 187,262 179,275 176,263 177,247 171,233 163,230 165,251 157,264 146,298 145,321 133,326 143,285 154,260 153,240 151,213 151,213 151,213"/>
+ <polyline verts = " 91,132 95,145 97,154 104,148 107,155 109,150 111,158 115,152 118,159 120,153 125,161 126,155 133,164 132,154 137,163 137,152 142,163 147,186 152,192 148,167 141,143 124,145 105,143 91,132 91,132 91,132"/>
+</g>
+<g style = "fill: #9c826b" >
+ <polyline verts = " 31,57 23,52 26,51 20,44 23,42 21,36 22,29 25,23 24,32 30,43 26,41 30,50 26,48 31,57 31,57 31,57"/>
+ <polyline verts = " 147,21 149,28 155,21 161,16 167,14 175,15 173,11 161,9 147,21 147,21 147,21"/>
+ <polyline verts = " 181,39 175,51 169,57 171,65 165,68 165,75 160,76 162,91 171,71 180,51 181,39 181,39 181,39"/>
+ <polyline verts = " 132,346 139,348 141,346 142,341 147,342 143,355 133,350 132,346 132,346 132,346"/>
+ <polyline verts = " 146,355 151,352 155,348 157,343 160,349 151,356 147,357 146,355 146,355 146,355"/>
+ <polyline verts = " 99,266 100,281 94,305 86,322 78,332 72,346 73,331 91,291 99,266 99,266 99,266"/>
+ <polyline verts = " 20,347 32,342 45,340 54,345 45,350 42,353 38,350 31,353 29,356 23,350 19,353 15,349 20,347 20,347 20,347"/>
+ <polyline verts = " 78,344 86,344 92,349 88,358 84,352 78,344 78,344 78,344"/>
+ <polyline verts = " 93,347 104,344 117,345 124,354 121,357 116,351 112,351 108,355 102,351 93,347 93,347 93,347"/>
+</g>
+<g style = "fill: #000000" >
+ <polyline verts = " 105,12 111,18 113,24 113,29 119,34 116,23 112,16 105,12 105,12 105,12"/>
+ <polyline verts = " 122,27 125,34 127,43 128,34 125,29 122,27 122,27 122,27"/>
+ <polyline verts = " 115,13 122,19 122,15 113,10 115,13 115,13 115,13"/>
+</g>
+<g style = "fill: #ffe5b2" >
+ <polyline verts = " 116,172 107,182 98,193 98,183 90,199 89,189 84,207 88,206 87,215 95,206 93,219 91,230 98,216 97,226 104,214 112,209 104,208 113,202 126,200 139,207 132,198 142,203 134,192 142,195 134,187 140,185 130,181 136,177 126,177 125,171 116,180 116,172 116,172 116,172"/>
+ <polyline verts = " 74,220 67,230 67,221 59,235 63,233 60,248 70,232 65,249 71,243 67,256 73,250 69,262 73,259 71,267 76,262 72,271 78,270 76,275 82,274 78,290 86,279 86,289 92,274 88,275 87,264 82,270 82,258 77,257 78,247 73,246 77,233 72,236 74,220 74,220 74,220"/>
+ <polyline verts = " 133,230 147,242 148,250 145,254 138,247 129,246 142,245 138,241 128,237 137,238 133,230 133,230 133,230"/>
+ <polyline verts = " 133,261 125,261 116,263 111,267 125,265 133,261 133,261 133,261"/>
+ <polyline verts = " 121,271 109,273 103,279 99,305 92,316 85,327 83,335 89,340 97,341 94,336 101,336 96,331 103,330 97,327 108,325 99,322 109,321 100,318 110,317 105,314 110,312 107,310 113,308 105,306 114,303 105,301 115,298 107,295 115,294 108,293 117,291 109,289 117,286 109,286 118,283 112,281 118,279 114,278 119,276 115,274 121,271 121,271 121,271"/>
+ <polyline verts = " 79,364 74,359 74,353 76,347 80,351 83,356 82,360 79,364 79,364 79,364"/>
+ <polyline verts = " 91,363 93,356 97,353 103,355 105,360 103,366 99,371 94,368 91,363 91,363 91,363"/>
+ <polyline verts = " 110,355 114,353 118,357 117,363 113,369 111,362 110,355 110,355 110,355"/>
+ <polyline verts = " 126,354 123,358 124,367 126,369 129,361 129,357 126,354 126,354 126,354"/>
+ <polyline verts = " 30,154 24,166 20,182 23,194 29,208 37,218 41,210 41,223 46,214 46,227 52,216 52,227 61,216 59,225 68,213 73,219 70,207 77,212 69,200 77,202 70,194 78,197 68,187 76,182 64,182 58,175 58,185 53,177 50,186 46,171 44,182 39,167 36,172 36,162 30,166 30,154 30,154 30,154"/>
+ <polyline verts = " 44,130 41,137 45,136 43,150 48,142 48,157 53,150 52,164 60,156 61,169 64,165 66,175 70,167 74,176 77,168 80,183 85,172 90,182 93,174 98,181 99,173 104,175 105,169 114,168 102,163 95,157 94,166 90,154 87,162 82,149 75,159 72,148 68,155 67,143 62,148 62,138 58,145 56,133 52,142 52,128 49,134 47,125 44,130 44,130 44,130"/>
+ <polyline verts = " 13,216 19,219 36,231 22,223 16,222 22,227 12,224 13,220 16,220 13,216 13,216 13,216"/>
+ <polyline verts = " 10,231 14,236 25,239 27,237 19,234 10,231 10,231 10,231"/>
+ <polyline verts = " 9,245 14,242 25,245 13,245 9,245 9,245 9,245"/>
+ <polyline verts = " 33,255 26,253 18,254 25,256 18,258 27,260 18,263 27,265 19,267 29,270 21,272 29,276 21,278 30,281 22,283 31,287 24,288 32,292 23,293 34,298 26,299 37,303 32,305 39,309 33,309 39,314 34,314 40,318 34,317 40,321 34,321 41,326 33,326 40,330 33,332 39,333 33,337 42,337 54,341 49,337 52,335 47,330 50,330 45,325 49,325 45,321 48,321 45,316 46,306 45,286 43,274 36,261 33,255 33,255 33,255"/>
+ <polyline verts = " 7,358 9,351 14,351 17,359 11,364 7,358 7,358 7,358"/>
+ <polyline verts = " 44,354 49,351 52,355 49,361 44,354 44,354 44,354"/>
+ <polyline verts = " 32,357 37,353 40,358 36,361 32,357 32,357 32,357"/>
+ <polyline verts = " 139,334 145,330 154,330 158,334 154,341 152,348 145,350 149,340 147,336 141,339 139,345 136,342 136,339 139,334 139,334 139,334"/>
+ <polyline verts = " 208,259 215,259 212,255 220,259 224,263 225,274 224,283 220,292 208,300 206,308 203,304 199,315 197,309 195,318 193,313 190,322 190,316 185,325 182,318 180,325 172,321 178,320 176,313 186,312 180,307 188,307 184,303 191,302 186,299 195,294 187,290 197,288 192,286 201,283 194,280 203,277 198,275 207,271 200,269 209,265 204,265 212,262 208,259 208,259 208,259"/>
+ <polyline verts = " 106,126 106,131 109,132 111,134 115,132 115,135 119,133 118,137 123,137 128,137 133,134 136,130 136,127 132,124 118,128 112,128 106,126 106,126 106,126"/>
+ <polyline verts = " 107,114 101,110 98,102 105,97 111,98 119,102 121,108 118,112 113,115 107,114 107,114 107,114"/>
+ <polyline verts = " 148,106 145,110 146,116 150,118 152,111 151,107 148,106 148,106 148,106"/>
+ <polyline verts = " 80,55 70,52 75,58 63,57 72,61 57,61 67,66 57,67 62,69 54,71 61,73 54,77 63,78 53,85 60,84 56,90 69,84 63,82 75,76 70,75 77,72 72,71 78,69 72,66 81,67 78,64 82,63 80,60 86,62 80,55 80,55 80,55"/>
+ <polyline verts = " 87,56 91,52 96,50 102,56 98,56 92,60 87,56 87,56 87,56"/>
+ <polyline verts = " 85,68 89,73 98,76 106,74 96,73 91,70 85,68 85,68 85,68"/>
+ <polyline verts = " 115,57 114,64 111,64 115,75 122,81 122,74 126,79 126,74 131,78 130,72 133,77 131,68 126,61 119,57 115,57 115,57 115,57"/>
+ <polyline verts = " 145,48 143,53 147,59 151,59 150,55 145,48 145,48 145,48"/>
+ <polyline verts = " 26,22 34,15 43,10 52,10 59,16 47,15 32,22 26,22 26,22 26,22"/>
+ <polyline verts = " 160,19 152,26 149,34 154,33 152,30 157,30 155,26 158,27 157,23 161,23 160,19 160,19 160,19"/>
+</g>
+<g style = "fill: #000000" >
+ <polyline verts = " 98,117 105,122 109,122 105,117 113,120 121,120 130,112 128,108 123,103 123,99 128,101 132,106 135,109 142,105 142,101 145,101 145,91 148,101 145,105 136,112 135,116 143,124 148,120 150,122 142,128 133,122 121,125 112,126 103,125 100,129 96,124 98,117 98,117 98,117"/>
+ <polyline verts = " 146,118 152,118 152,115 149,115 146,118 146,118 146,118"/>
+ <polyline verts = " 148,112 154,111 154,109 149,109 148,112 148,112 148,112"/>
+ <polyline verts = " 106,112 108,115 114,116 118,114 106,112 106,112 106,112"/>
+ <polyline verts = " 108,108 111,110 116,110 119,108 108,108 108,108 108,108"/>
+ <polyline verts = " 106,104 109,105 117,106 115,104 106,104 106,104 106,104"/>
+ <polyline verts = " 50,25 41,26 34,33 39,43 49,58 36,51 47,68 55,69 54,59 61,57 74,46 60,52 67,42 57,48 61,40 54,45 60,36 59,29 48,38 52,30 47,32 50,25 50,25 50,25"/>
+ <polyline verts = " 147,34 152,41 155,49 161,53 157,47 164,47 158,43 168,44 159,40 164,37 169,37 164,33 169,34 165,28 170,30 170,25 173,29 175,27 176,32 173,36 175,39 172,42 172,46 168,49 170,55 162,57 158,63 155,58 153,50 149,46 147,34 147,34 147,34"/>
+ <polyline verts = " 155,71 159,80 157,93 157,102 155,108 150,101 149,93 154,101 152,91 151,83 155,79 155,71 155,71 155,71"/>
+ <polyline verts = " 112,78 115,81 114,91 112,87 113,82 112,78 112,78 112,78"/>
+ <polyline verts = " 78,28 64,17 58,11 47,9 36,10 28,16 21,26 18,41 20,51 23,61 33,65 28,68 37,74 36,81 43,87 48,90 43,100 40,98 39,90 31,80 30,72 22,71 17,61 14,46 16,28 23,17 33,9 45,6 54,6 65,12 78,28 78,28 78,28"/>
+ <polyline verts = " 67,18 76,9 87,5 101,2 118,3 135,8 149,20 149,26 144,19 132,12 121,9 105,7 89,8 76,14 70,20 67,18 67,18 67,18"/>
+ <polyline verts = " 56,98 48,106 56,103 47,112 56,110 52,115 57,113 52,121 62,115 58,123 65,119 63,125 69,121 68,127 74,125 74,129 79,128 83,132 94,135 93,129 85,127 81,122 76,126 75,121 71,124 71,117 66,121 66,117 62,117 64,112 60,113 60,110 57,111 61,105 57,107 60,101 55,102 56,98 56,98 56,98"/>
+ <polyline verts = " 101,132 103,138 106,134 106,139 112,136 111,142 115,139 114,143 119,142 125,145 131,142 135,138 140,134 140,129 143,135 145,149 150,171 149,184 145,165 141,150 136,147 132,151 131,149 126,152 125,150 121,152 117,148 111,152 110,148 105,149 104,145 98,150 96,138 94,132 94,130 98,132 101,132 101,132 101,132"/>
+ <polyline verts = " 41,94 32,110 23,132 12,163 6,190 7,217 5,236 3,247 9,230 12,211 12,185 18,160 26,134 35,110 43,99 41,94 41,94 41,94"/>
+ <polyline verts = " 32,246 41,250 50,257 52,267 53,295 53,323 59,350 54,363 51,365 44,366 42,360 40,372 54,372 59,366 62,353 71,352 75,335 73,330 66,318 68,302 64,294 67,288 63,286 63,279 59,275 58,267 56,262 50,247 42,235 44,246 32,236 35,244 32,246 32,246 32,246"/>
+ <polyline verts = " 134,324 146,320 159,322 173,327 179,337 179,349 172,355 158,357 170,350 174,343 170,333 163,328 152,326 134,329 134,324 134,324 134,324"/>
+ <polyline verts = " 173,339 183,334 184,338 191,329 194,332 199,323 202,325 206,318 209,320 213,309 221,303 228,296 232,289 234,279 233,269 230,262 225,256 219,253 208,252 198,252 210,249 223,250 232,257 237,265 238,277 238,291 232,305 221,323 218,335 212,342 200,349 178,348 173,339 173,339 173,339"/>
+ <polyline verts = " 165,296 158,301 156,310 156,323 162,324 159,318 162,308 162,304 165,296 165,296 165,296"/>
+ <polyline verts = " 99,252 105,244 107,234 115,228 121,228 131,235 122,233 113,235 109,246 121,239 133,243 121,243 110,251 99,252 99,252 99,252"/>
+ <polyline verts = " 117,252 124,247 134,249 136,253 126,252 117,252 117,252 117,252"/>
+ <polyline verts = " 117,218 132,224 144,233 140,225 132,219 117,218 117,218 117,218"/>
+ <polyline verts = " 122,212 134,214 143,221 141,213 132,210 122,212 122,212 122,212"/>
+ <polyline verts = " 69,352 70,363 76,373 86,378 97,379 108,379 120,377 128,378 132,373 135,361 133,358 132,366 127,375 121,374 121,362 119,367 117,374 110,376 110,362 107,357 106,371 104,375 97,376 90,375 90,368 86,362 83,364 86,369 85,373 78,370 73,362 71,351 69,352 69,352 69,352"/>
+ <polyline verts = " 100,360 96,363 99,369 102,364 100,360 100,360 100,360"/>
+ <polyline verts = " 115,360 112,363 114,369 117,364 115,360 115,360 115,360"/>
+ <polyline verts = " 127,362 125,364 126,369 128,365 127,362 127,362 127,362"/>
+ <polyline verts = " 5,255 7,276 11,304 15,320 13,334 6,348 2,353 0,363 5,372 12,374 25,372 38,372 44,369 42,367 36,368 31,369 30,360 27,368 20,370 16,361 15,368 10,369 3,366 3,359 6,352 11,348 17,331 19,316 12,291 9,274 5,255 5,255 5,255"/>
+ <polyline verts = " 10,358 7,362 10,366 11,362 10,358 10,358 10,358"/>
+ <polyline verts = " 25,357 22,360 24,366 27,360 25,357 25,357 25,357"/>
+ <polyline verts = " 37,357 34,361 36,365 38,361 37,357 37,357 37,357"/>
+ <polyline verts = " 49,356 46,359 47,364 50,360 49,356 49,356 49,356"/>
+ <polyline verts = " 130,101 132,102 135,101 139,102 143,103 142,101 137,100 133,100 130,101 130,101 130,101"/>
+ <polyline verts = " 106,48 105,52 108,56 109,52 106,48 106,48 106,48"/>
+ <polyline verts = " 139,52 139,56 140,60 142,58 141,56 139,52 139,52 139,52"/>
+ <polyline verts = " 25,349 29,351 30,355 33,350 37,348 42,351 45,347 49,345 44,343 36,345 25,349 25,349 25,349"/>
+ <polyline verts = " 98,347 105,351 107,354 109,349 115,349 120,353 118,349 113,346 104,346 98,347 98,347 98,347"/>
+ <polyline verts = " 83,348 87,352 87,357 89,351 87,348 83,348 83,348 83,348"/>
+ <polyline verts = " 155,107 163,107 170,107 186,108 175,109 155,109 155,107 155,107 155,107"/>
+ <polyline verts = " 153,114 162,113 175,112 192,114 173,114 154,115 153,114 153,114 153,114"/>
+ <polyline verts = " 152,118 164,120 180,123 197,129 169,123 151,120 152,118 152,118 152,118"/>
+ <polyline verts = " 68,109 87,106 107,106 106,108 88,108 68,109 68,109 68,109"/>
+ <polyline verts = " 105,111 95,112 79,114 71,116 85,115 102,113 105,111 105,111 105,111"/>
+ <polyline verts = " 108,101 98,99 87,99 78,99 93,100 105,102 108,101 108,101 108,101"/>
+ <polyline verts = " 85,63 91,63 97,60 104,60 108,62 111,69 112,75 110,74 108,71 103,73 106,69 105,65 103,64 103,67 102,70 99,70 97,66 94,67 97,72 88,67 84,66 85,63 85,63 85,63"/>
+ <polyline verts = " 140,74 141,66 144,61 150,61 156,62 153,70 150,73 152,65 150,65 151,68 149,71 146,71 144,66 143,70 143,74 140,74 140,74 140,74"/>
+ <polyline verts = " 146,20 156,11 163,9 172,9 178,14 182,18 184,32 182,42 182,52 177,58 176,67 171,76 165,90 157,105 160,92 164,85 168,78 167,73 173,66 172,62 175,59 174,55 177,53 180,46 181,29 179,21 173,13 166,11 159,13 153,18 148,23 146,20 146,20 146,20"/>
+ <polyline verts = " 150,187 148,211 150,233 153,247 148,267 135,283 125,299 136,292 131,313 122,328 122,345 129,352 133,359 133,367 137,359 148,356 140,350 131,347 129,340 132,332 140,328 137,322 140,304 154,265 157,244 155,223 161,220 175,229 186,247 185,260 176,275 178,287 185,277 188,261 196,253 189,236 174,213 150,187 150,187 150,187"/>
+ <polyline verts = " 147,338 142,341 143,345 141,354 147,343 147,338 147,338 147,338"/>
+ <polyline verts = " 157,342 156,349 150,356 157,353 163,346 162,342 157,342 157,342 157,342"/>
+ <polyline verts = " 99,265 96,284 92,299 73,339 73,333 87,300 99,265 99,265 99,265"/>
+</g></svg>
+
diff --git a/test/svg2 b/test/svg2
new file mode 100644
index 0000000..aa1adac
--- /dev/null
+++ b/test/svg2
@@ -0,0 +1,58 @@
+<?xml version = "1.0" standalone = "yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG April 1999//EN"
+ "http://www.w3.org/Graphics/SVG/svg-19990412.dtd">
+<svg width = "268px" height="207px">
+<g style = "stroke: #000000" >
+ <path d = " M 29 28 "/>
+ <path d = " L 19 74 "/>
+</g>
+<g style = "stroke: #800040" >
+ <polyline verts = " 32,100 72,50 90,82 73,16 120,64 152,9 177,107"/>
+</g>
+<g style = "stroke: #000000" >
+</g>
+<g style = "stroke: #0000ff" >
+ <rect x = "30" y = "101" width = "51" height = "33"/>
+</g>
+<g style = "fill: #0000ff" >
+ <ellipse cx = "182" cy = "127" major = "37" minor = "31" angle = "90"/>
+</g>
+<g style = "fill: #ff0000" >
+ <polyline verts = " 78,180 76,151 131,149 136,182 135,182 134,183 127,185 117,186 109,192 104,194 98,199 96,200 95,201 94,202 92,202 85,202 70,200 54,199 47,198 46,197 45,197 37,195 26,193 17,187 9,181 8,181 7,176 6,175 6,173 6,172 6,170 8,164 8,163 8,162 9,162 10,162 11,162 13,162 20,162 26,162 27,162 28,162 30,162 30,163 31,163 32,164 34,166 35,166 36,167 36,168 37,169 38,169 39,169 41,170 43,170 45,170 47,170 49,170 50,168 50,161 50,160 50,159 47,162 78,180"/>
+ <g>
+ <desc> Java Font definition:Dialog 0</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Helvetica 0</desc>
+ </g>
+</g>
+<g style = "stroke: #000000" >
+ <text x = "188" y = "36" >this is text</text>
+</g>
+<g style = "stroke: #000000" >
+ <g>
+ <desc> Java Font definition:Dialog 0</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Helvetica 700</desc>
+ </g>
+</g>
+<g style = "stroke: #008080" >
+ <text x = "176" y = "85" >sadfsadfsad</text>
+</g>
+<g style = "stroke: #000000" >
+</g>
+<g style = "fill: #800040" >
+ <ellipse cx = "208" cy = "180" major = "45" minor = "31" angle = "0"/>
+</g>
+<g style = "stroke: #000000" >
+</g>
+<g style = "fill: #ffffff" >
+ <g>
+ <desc> Java Font definition:Dialog 700</desc>
+ </g>
+ <g>
+ <desc> Java Font definition:Dialog 700</desc>
+ </g>
+</g></svg>
+
diff --git a/test/svg3 b/test/svg3
new file mode 100644
index 0000000..9b0de5a
--- /dev/null
+++ b/test/svg3
@@ -0,0 +1,722 @@
+<svg>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M77.696 284.285C77.696 284.285 77.797 286.179 76.973 286.16C76.149 286.141 59.695 238.066 39.167 240.309C39.167 240.309 56.95 232.956 77.696 284.285z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M81.226 281.262C81.226 281.262 80.677 283.078 79.908 282.779C79.14 282.481 80.023 231.675 59.957 226.801C59.957 226.801 79.18 225.937 81.226 281.262z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M108.716 323.59C108.716 323.59 110.352 324.55 109.882 325.227C109.411 325.904 60.237 313.102 50.782 331.459C50.782 331.459 54.461 312.572 108.716 323.59z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M105.907 333.801C105.907 333.801 107.763 334.197 107.529 334.988C107.296 335.779 56.593 339.121 53.403 359.522C53.403 359.522 50.945 340.437 105.907 333.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M101.696 328.276C101.696 328.276 103.474 328.939 103.128 329.687C102.782 330.435 52.134 326.346 46.002 346.064C46.002 346.064 46.354 326.825 101.696 328.276z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M90.991 310.072C90.991 310.072 92.299 311.446 91.66 311.967C91.021 312.488 47.278 286.634 33.131 301.676C33.131 301.676 41.872 284.533 90.991 310.072z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M83.446 314.263C83.446 314.263 84.902 315.48 84.326 316.071C83.75 316.661 37.362 295.922 25.008 312.469C25.008 312.469 31.753 294.447 83.446 314.263z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M80.846 318.335C80.846 318.335 82.454 319.343 81.964 320.006C81.474 320.669 32.692 306.446 22.709 324.522C22.709 324.522 26.934 305.749 80.846 318.335z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M91.58 318.949C91.58 318.949 92.702 320.48 92.001 320.915C91.3 321.35 51.231 290.102 35.273 303.207C35.273 303.207 46.138 287.326 91.58 318.949z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M71.8 290C71.8 290 72.4 291.8 71.6 292C70.8 292.2 42.2 250.2 22.999 257.8C22.999 257.8 38.2 246 71.8 290z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M72.495 296.979C72.495 296.979 73.47 298.608 72.731 298.975C71.993 299.343 35.008 264.499 17.899 276.061C17.899 276.061 30.196 261.261 72.495 296.979z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+ <path d="M72.38 301.349C72.38 301.349 73.502 302.88 72.801 303.315C72.1 303.749 32.031 272.502 16.073 285.607C16.073 285.607 26.938 269.726 72.38 301.349z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000">
+ <path d="M70.17 303.065C70.673 309.113 71.661 315.682 73.4 318.801C73.4 318.801 69.8 331.201 78.6 344.401C78.6 344.401 78.2 351.601 79.8 354.801C79.8 354.801 83.8 363.201 88.6 364.001C92.484 364.648 101.207 367.717 111.068 369.121C111.068 369.121 128.2 383.201 125 396.001C125 396.001 124.6 412.401 121 414.001C121 414.001 132.6 402.801 123 419.601L118.6 438.401C118.6 438.401 144.2 416.801 128.6 435.201L118.6 461.201C118.6 461.201 138.2 442.801 131 451.201L127.8 460.001C127.8 460.001 171 432.801 140.2 462.401C140.2 462.401 148.2 458.801 152.6 461.601C152.6 461.601 159.4 460.401 158.6 462.001C158.6 462.001 137.8 472.401 134.2 490.801C134.2 490.801 142.6 480.801 139.4 491.601L139.8 503.201C139.8 503.201 143.8 481.601 143.4 519.201C143.4 519.201 162.6 501.201 151 522.001L151 538.801C151 538.801 166.2 522.401 159.8 535.201C159.8 535.201 169.8 526.401 165.8 541.601C165.8 541.601 165 552.001 169.4 540.801C169.4 540.801 185.4 510.201 179.4 536.401C179.4 536.401 178.6 555.601 183.4 540.801C183.4 540.801 183.8 551.201 193 558.401C193 558.401 191.8 507.601 204.6 543.601L208.6 560.001C208.6 560.001 211.4 550.801 211 545.601C211 545.601 225.8 529.201 219 553.601C219 553.601 234.2 530.801 231 544.001C231 544.001 223.4 560.001 225 564.801C225 564.801 241.8 530.001 243 528.401C243 528.401 241 570.802 251.8 534.801C251.8 534.801 257.4 546.801 254.6 551.201C254.6 551.201 262.6 543.201 261.8 540.001C261.8 540.001 266.4 531.801 269.2 545.401C269.2 545.401 271 554.801 272.6 551.601C272.6 551.601 276.6 575.602 277.8 552.801C277.8 552.801 279.4 539.201 272.2 527.601C272.2 527.601 273 524.401 270.2 520.401C270.2 520.401 283.8 542.001 276.6 513.201C276.6 513.201 287.801 521.201 289.001 521.201C289.001 521.201 275.4 498.001 284.2 502.801C284.2 502.801 279 492.401 297.001 504.401C297.001 504.401 281 488.401 298.601 498.001C298.601 498.001 306.601 504.401 299.001 494.401C299.001 494.401 284.6 478.401 306.601 496.401C306.601 496.401 318.201 512.801 319.001 515.601C319.001 515.601 309.001 486.401 304.601 483.601C304.601 483.601 313.001 447.201 354.201 462.801C354.201 462.801 361.001 480.001 365.401 461.601C365.401 461.601 378.201 455.201 389.401 482.801C389.401 482.801 393.401 469.201 392.601 466.401C392.601 466.401 399.401 467.601 398.601 466.401C398.601 466.401 411.801 470.801 413.001 470.001C413.001 470.001 419.801 476.801 420.201 473.201C420.201 473.201 429.401 476.001 427.401 472.401C427.401 472.401 436.201 488.001 436.601 491.601L439.001 477.601L441.001 480.401C441.001 480.401 442.601 472.801 441.801 471.601C441.001 470.401 461.801 478.401 466.601 499.201L468.601 507.601C468.601 507.601 474.601 492.801 473.001 488.801C473.001 488.801 478.201 489.601 478.601 494.001C478.601 494.001 482.601 470.801 477.801 464.801C477.801 464.801 482.201 464.001 483.401 467.601L483.401 460.401C483.401 460.401 490.601 461.201 490.601 458.801C490.601 458.801 495.001 454.801 497.001 459.601C497.001 459.601 484.601 424.401 503.001 443.601C503.001 443.601 510.201 454.401 506.601 435.601C503.001 416.801 499.001 415.201 503.801 414.801C503.801 414.801 504.601 411.201 502.601 409.601C500.601 408.001 503.801 409.601 503.801 409.601C503.801 409.601 508.601 413.601 503.401 391.601C503.401 391.601 509.801 393.201 497.801 364.001C497.801 364.001 500.601 361.601 496.601 353.201C496.601 353.201 504.601 357.601 507.401 356.001C507.401 356.001 507.001 354.401 503.801 350.401C503.801 350.401 482.201 295.6 502.601 317.601C502.601 317.601 514.451 331.151 508.051 308.351C508.051 308.351 498.94 284.341 499.717 280.045L70.17 303.065z"/>
+ </g>
+ <g style="fill: #cc7226; stroke:#000000">
+ <path d="M499.717 280.245C500.345 280.426 502.551 281.55 503.801 283.2C503.801 283.2 510.601 294 505.401 275.6C505.401 275.6 496.201 246.8 505.001 258C505.001 258 511.001 265.2 507.801 251.6C503.936 235.173 501.401 228.8 501.401 228.8C501.401 228.8 513.001 233.6 486.201 194L495.001 197.6C495.001 197.6 475.401 158 453.801 152.8L445.801 146.8C445.801 146.8 484.201 108.8 471.401 72C471.401 72 464.601 66.8 455.001 76C455.001 76 448.601 80.8 442.601 79.2C442.601 79.2 411.801 80.4 409.801 80.4C407.801 80.4 373.001 43.2 307.401 60.8C307.401 60.8 302.201 62.8 297.801 61.6C297.801 61.6 279.4 45.6 230.6 68.4C230.6 68.4 220.6 70.4 219 70.4C217.4 70.4 214.6 70.4 206.6 76.8C198.6 83.2 198.2 84 196.2 85.6C196.2 85.6 179.8 96.8 175 97.6C175 97.6 163.4 104 159 114L155.4 115.2C155.4 115.2 153.8 122.4 153.4 123.6C153.4 123.6 148.6 127.2 147.8 132.8C147.8 132.8 139 138.8 139.4 143.2C139.4 143.2 137.8 148.4 137 153.2C137 153.2 129.8 158 130.6 160.8C130.6 160.8 123 174.8 124.2 181.6C124.2 181.6 117.8 181.2 115 183.6C115 183.6 114.2 188.4 112.6 188.8C112.6 188.8 109.8 190 112.2 194C112.2 194 110.6 196.8 110.2 198.4C110.2 198.4 111 201.2 106.6 206.8C106.6 206.8 100.2 225.6 102.2 230.8C102.2 230.8 102.6 235.6 99.8 237.2C99.8 237.2 96.2 236.8 104.6 248.8C104.6 248.8 105.4 250 102.2 252.4C102.2 252.4 85 256 82.6 272.4C82.6 272.4 69 287.2 69 292.4C69 294.705 69.271 297.852 69.97 302.465C69.97 302.465 69.4 310.801 97 311.601C124.6 312.401 499.717 280.245 499.717 280.245z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M84.4 302.6C59.4 263.2 73.8 319.601 73.8 319.601C82.6 354.001 212.2 316.401 212.2 316.401C212.2 316.401 381.001 286 392.201 282C403.401 278 498.601 284.4 498.601 284.4L493.001 267.6C428.201 221.2 409.001 244.4 395.401 240.4C381.801 236.4 384.201 246 381.001 246.8C377.801 247.6 338.601 222.8 332.201 223.6C325.801 224.4 300.459 200.649 315.401 232.4C331.401 266.4 257 271.6 240.2 260.4C223.4 249.2 247.4 278.8 247.4 278.8C265.8 298.8 231.4 282 231.4 282C197 269.2 173 294.8 169.8 295.6C166.6 296.4 161.8 299.6 161 293.2C160.2 286.8 152.69 270.099 121 296.4C101 313.001 87.2 291 87.2 291L84.4 302.6z"/>
+ </g>
+ <g style="fill: #e87f3a">
+ <path d="M333.51 225.346C327.11 226.146 301.743 202.407 316.71 234.146C333.31 269.346 258.31 273.346 241.51 262.146C224.709 250.946 248.71 280.546 248.71 280.546C267.11 300.546 232.709 283.746 232.709 283.746C198.309 270.946 174.309 296.546 171.109 297.346C167.909 298.146 163.109 301.346 162.309 294.946C161.509 288.546 154.13 272.012 122.309 298.146C101.073 315.492 87.582 294.037 87.582 294.037L84.382 304.146C59.382 264.346 74.454 322.655 74.454 322.655C83.255 357.056 213.509 318.146 213.509 318.146C213.509 318.146 382.31 287.746 393.51 283.746C404.71 279.746 499.038 286.073 499.038 286.073L493.51 268.764C428.71 222.364 410.31 246.146 396.71 242.146C383.11 238.146 385.51 247.746 382.31 248.546C379.11 249.346 339.91 224.546 333.51 225.346z"/>
+ </g>
+ <g style="fill: #ea8c4d">
+ <path d="M334.819 227.091C328.419 227.891 303.685 203.862 318.019 235.891C334.219 272.092 259.619 275.092 242.819 263.892C226.019 252.692 250.019 282.292 250.019 282.292C268.419 302.292 234.019 285.492 234.019 285.492C199.619 272.692 175.618 298.292 172.418 299.092C169.218 299.892 164.418 303.092 163.618 296.692C162.818 290.292 155.57 273.925 123.618 299.892C101.145 317.983 87.964 297.074 87.964 297.074L84.364 305.692C60.564 266.692 75.109 325.71 75.109 325.71C83.909 360.11 214.819 319.892 214.819 319.892C214.819 319.892 383.619 289.492 394.819 285.492C406.019 281.492 499.474 287.746 499.474 287.746L494.02 269.928C429.219 223.528 411.619 247.891 398.019 243.891C384.419 239.891 386.819 249.491 383.619 250.292C380.419 251.092 341.219 226.291 334.819 227.091z"/>
+ </g>
+ <g style="fill: #ec9961">
+ <path d="M336.128 228.837C329.728 229.637 304.999 205.605 319.328 237.637C336.128 275.193 260.394 276.482 244.128 265.637C227.328 254.437 251.328 284.037 251.328 284.037C269.728 304.037 235.328 287.237 235.328 287.237C200.928 274.437 176.928 300.037 173.728 300.837C170.528 301.637 165.728 304.837 164.928 298.437C164.128 292.037 157.011 275.839 124.927 301.637C101.218 320.474 88.345 300.11 88.345 300.11L84.345 307.237C62.545 270.437 75.764 328.765 75.764 328.765C84.564 363.165 216.128 321.637 216.128 321.637C216.128 321.637 384.928 291.237 396.129 287.237C407.329 283.237 499.911 289.419 499.911 289.419L494.529 271.092C429.729 224.691 412.929 249.637 399.329 245.637C385.728 241.637 388.128 251.237 384.928 252.037C381.728 252.837 342.528 228.037 336.128 228.837z"/>
+ </g>
+ <g style="fill: #eea575">
+ <path d="M337.438 230.583C331.037 231.383 306.814 207.129 320.637 239.383C337.438 278.583 262.237 278.583 245.437 267.383C228.637 256.183 252.637 285.783 252.637 285.783C271.037 305.783 236.637 288.983 236.637 288.983C202.237 276.183 178.237 301.783 175.037 302.583C171.837 303.383 167.037 306.583 166.237 300.183C165.437 293.783 158.452 277.752 126.237 303.383C101.291 322.965 88.727 303.146 88.727 303.146L84.327 308.783C64.527 273.982 76.418 331.819 76.418 331.819C85.218 366.22 217.437 323.383 217.437 323.383C217.437 323.383 386.238 292.983 397.438 288.983C408.638 284.983 500.347 291.092 500.347 291.092L495.038 272.255C430.238 225.855 414.238 251.383 400.638 247.383C387.038 243.383 389.438 252.983 386.238 253.783C383.038 254.583 343.838 229.783 337.438 230.583z"/>
+ </g>
+ <g style="fill: #f1b288">
+ <path d="M338.747 232.328C332.347 233.128 306.383 209.677 321.947 241.128C341.147 279.928 263.546 280.328 246.746 269.128C229.946 257.928 253.946 287.528 253.946 287.528C272.346 307.528 237.946 290.728 237.946 290.728C203.546 277.928 179.546 303.528 176.346 304.328C173.146 305.128 168.346 308.328 167.546 301.928C166.746 295.528 159.892 279.665 127.546 305.128C101.364 325.456 89.109 306.183 89.109 306.183L84.309 310.328C66.309 277.128 77.073 334.874 77.073 334.874C85.873 369.274 218.746 325.128 218.746 325.128C218.746 325.128 387.547 294.728 398.747 290.728C409.947 286.728 500.783 292.764 500.783 292.764L495.547 273.419C430.747 227.019 415.547 253.128 401.947 249.128C388.347 245.128 390.747 254.728 387.547 255.528C384.347 256.328 345.147 231.528 338.747 232.328z"/>
+ </g>
+ <g style="fill: #f3bf9c">
+ <path d="M340.056 234.073C333.655 234.873 307.313 211.613 323.255 242.873C343.656 282.874 264.855 282.074 248.055 270.874C231.255 259.674 255.255 289.274 255.255 289.274C273.655 309.274 239.255 292.474 239.255 292.474C204.855 279.674 180.855 305.274 177.655 306.074C174.455 306.874 169.655 310.074 168.855 303.674C168.055 297.274 161.332 281.578 128.855 306.874C101.436 327.947 89.491 309.219 89.491 309.219L84.291 311.874C68.291 281.674 77.727 337.929 77.727 337.929C86.527 372.329 220.055 326.874 220.055 326.874C220.055 326.874 388.856 296.474 400.056 292.474C411.256 288.474 501.22 294.437 501.22 294.437L496.056 274.583C431.256 228.183 416.856 254.874 403.256 250.874C389.656 246.873 392.056 256.474 388.856 257.274C385.656 258.074 346.456 233.273 340.056 234.073z"/>
+ </g>
+ <g style="fill: #f5ccb0">
+ <path d="M341.365 235.819C334.965 236.619 307.523 213.944 324.565 244.619C346.565 284.219 266.164 283.819 249.364 272.619C232.564 261.419 256.564 291.019 256.564 291.019C274.964 311.019 240.564 294.219 240.564 294.219C206.164 281.419 182.164 307.019 178.964 307.819C175.764 308.619 170.964 311.819 170.164 305.419C169.364 299.019 162.773 283.492 130.164 308.619C101.509 330.438 89.873 312.256 89.873 312.256L84.273 313.419C69.872 285.019 78.382 340.983 78.382 340.983C87.182 375.384 221.364 328.619 221.364 328.619C221.364 328.619 390.165 298.219 401.365 294.219C412.565 290.219 501.656 296.11 501.656 296.11L496.565 275.746C431.765 229.346 418.165 256.619 404.565 252.619C390.965 248.619 393.365 258.219 390.165 259.019C386.965 259.819 347.765 235.019 341.365 235.819z"/>
+ </g>
+ <g style="fill: #f8d8c4">
+ <path d="M342.674 237.565C336.274 238.365 308.832 215.689 325.874 246.365C347.874 285.965 267.474 285.565 250.674 274.365C233.874 263.165 257.874 292.765 257.874 292.765C276.274 312.765 241.874 295.965 241.874 295.965C207.473 283.165 183.473 308.765 180.273 309.565C177.073 310.365 172.273 313.565 171.473 307.165C170.673 300.765 164.214 285.405 131.473 310.365C101.582 332.929 90.255 315.293 90.255 315.293L84.255 314.965C70.654 288.564 79.037 344.038 79.037 344.038C87.837 378.438 222.673 330.365 222.673 330.365C222.673 330.365 391.474 299.965 402.674 295.965C413.874 291.965 502.093 297.783 502.093 297.783L497.075 276.91C432.274 230.51 419.474 258.365 405.874 254.365C392.274 250.365 394.674 259.965 391.474 260.765C388.274 261.565 349.074 236.765 342.674 237.565z"/>
+ </g>
+ <g style="fill: #fae5d7">
+ <path d="M343.983 239.31C337.583 240.11 310.529 217.223 327.183 248.11C349.183 288.91 268.783 287.31 251.983 276.11C235.183 264.91 259.183 294.51 259.183 294.51C277.583 314.51 243.183 297.71 243.183 297.71C208.783 284.91 184.783 310.51 181.583 311.31C178.382 312.11 173.582 315.31 172.782 308.91C171.982 302.51 165.654 287.318 132.782 312.11C101.655 335.42 90.637 318.329 90.637 318.329L84.236 316.51C71.236 292.51 79.691 347.093 79.691 347.093C88.491 381.493 223.983 332.11 223.983 332.11C223.983 332.11 392.783 301.71 403.983 297.71C415.183 293.71 502.529 299.456 502.529 299.456L497.583 278.074C432.783 231.673 420.783 260.11 407.183 256.11C393.583 252.11 395.983 261.71 392.783 262.51C389.583 263.31 350.383 238.51 343.983 239.31z"/>
+ </g>
+ <g style="fill: #fcf2eb">
+ <path d="M345.292 241.055C338.892 241.855 312.917 218.411 328.492 249.855C349.692 292.656 270.092 289.056 253.292 277.856C236.492 266.656 260.492 296.256 260.492 296.256C278.892 316.256 244.492 299.456 244.492 299.456C210.092 286.656 186.092 312.256 182.892 313.056C179.692 313.856 174.892 317.056 174.092 310.656C173.292 304.256 167.095 289.232 134.092 313.856C101.727 337.911 91.018 321.365 91.018 321.365L84.218 318.056C71.418 294.856 80.346 350.147 80.346 350.147C89.146 384.547 225.292 333.856 225.292 333.856C225.292 333.856 394.093 303.456 405.293 299.456C416.493 295.456 502.965 301.128 502.965 301.128L498.093 279.237C433.292 232.837 422.093 261.856 408.493 257.856C394.893 253.855 397.293 263.456 394.093 264.256C390.892 265.056 351.692 240.255 345.292 241.055z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M84.2 319.601C71.4 297.6 81 353.201 81 353.201C89.8 387.601 226.6 335.601 226.6 335.601C226.6 335.601 395.401 305.2 406.601 301.2C417.801 297.2 503.401 302.8 503.401 302.8L498.601 280.4C433.801 234 423.401 263.6 409.801 259.6C396.201 255.6 398.601 265.2 395.401 266C392.201 266.8 353.001 242 346.601 242.8C340.201 243.6 314.981 219.793 329.801 251.6C352.028 299.307 269.041 289.227 254.6 279.6C237.8 268.4 261.8 298 261.8 298C280.2 318.001 245.8 301.2 245.8 301.2C211.4 288.4 187.4 314.001 184.2 314.801C181 315.601 176.2 318.801 175.4 312.401C174.6 306 168.535 291.144 135.4 315.601C101.8 340.401 91.4 324.401 91.4 324.401L84.2 319.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M125.8 349.601C125.8 349.601 118.6 361.201 139.4 374.401C139.4 374.401 140.8 375.801 122.8 371.601C122.8 371.601 116.6 369.601 115 359.201C115 359.201 110.2 354.801 105.4 349.201C100.6 343.601 125.8 349.601 125.8 349.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M265.8 302C265.8 302 283.498 328.821 282.9 333.601C281.6 344.001 281.4 353.601 284.6 357.601C287.801 361.601 296.601 394.801 296.601 394.801C296.601 394.801 296.201 396.001 308.601 358.001C308.601 358.001 320.201 342.001 300.201 323.601C300.201 323.601 265 294.8 265.8 302z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M145.8 376.401C145.8 376.401 157 383.601 142.6 414.801L149 412.401C149 412.401 148.2 423.601 145 426.001L152.2 422.801C152.2 422.801 157 430.801 153 435.601C153 435.601 169.8 443.601 169 450.001C169 450.001 175.4 442.001 171.4 435.601C167.4 429.201 160.2 433.201 161 414.801L152.2 418.001C152.2 418.001 157.8 409.201 157.8 402.801L149.8 405.201C149.8 405.201 165.269 378.623 154.6 377.201C148.6 376.401 145.8 376.401 145.8 376.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M178.2 393.201C178.2 393.201 181 388.801 178.2 389.601C175.4 390.401 144.2 405.201 138.2 414.801C138.2 414.801 172.6 390.401 178.2 393.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M188.6 401.201C188.6 401.201 191.4 396.801 188.6 397.601C185.8 398.401 154.6 413.201 148.6 422.801C148.6 422.801 183 398.401 188.6 401.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M201.8 386.001C201.8 386.001 204.6 381.601 201.8 382.401C199 383.201 167.8 398.001 161.8 407.601C161.8 407.601 196.2 383.201 201.8 386.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M178.6 429.601C178.6 429.601 178.6 423.601 175.8 424.401C173 425.201 137 442.801 131 452.401C131 452.401 173 426.801 178.6 429.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M179.8 418.801C179.8 418.801 181 414.001 178.2 414.801C176.2 414.801 149.8 426.401 143.8 436.001C143.8 436.001 173.4 414.401 179.8 418.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M165.4 466.401L155.4 474.001C155.4 474.001 165.8 466.401 169.4 467.601C169.4 467.601 162.6 478.801 161.8 484.001C161.8 484.001 172.2 471.201 177.8 471.601C177.8 471.601 185.4 472.001 185.4 482.801C185.4 482.801 191 472.401 194.2 472.801C194.2 472.801 195.4 479.201 194.2 486.001C194.2 486.001 198.2 478.401 202.2 480.001C202.2 480.001 208.6 478.001 207.8 489.601C207.8 489.601 207.8 500.001 207 502.801C207 502.801 212.6 476.401 215 476.001C215 476.001 223 474.801 227.8 483.601C227.8 483.601 223.8 476.001 228.6 478.001C228.6 478.001 239.4 479.601 242.6 486.401C242.6 486.401 235.8 474.401 241.4 477.601C241.4 477.601 248.2 477.601 249.4 484.001C249.4 484.001 257.8 505.201 259.8 506.801C259.8 506.801 252.2 485.201 253.8 485.201C253.8 485.201 251.8 473.201 257 488.001C257 488.001 253.8 474.001 259.4 474.801C265 475.601 269.4 485.601 277.8 483.201C277.8 483.201 287.401 488.801 289.401 419.601L165.4 466.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M170.2 373.601C170.2 373.601 185 367.601 225 373.601C225 373.601 232.2 374.001 239 365.201C245.8 356.401 272.6 349.201 279 351.201L288.601 357.601L289.401 358.801C289.401 358.801 301.801 369.201 302.201 376.801C302.601 384.401 287.801 432.401 278.2 448.401C268.6 464.401 259 476.801 239.8 474.401C239.8 474.401 219 470.401 193.4 474.401C193.4 474.401 164.2 472.801 161.4 464.801C158.6 456.801 172.6 441.601 172.6 441.601C172.6 441.601 177 433.201 175.8 418.801C174.6 404.401 175 376.401 170.2 373.601z"/>
+ </g>
+ <g style="fill: #e5668c">
+ <path d="M192.2 375.601C200.6 394.001 171 459.201 171 459.201C169 460.801 183.66 466.846 193.8 464.401C204.746 461.763 245 466.001 245 466.001C268.6 450.401 281.4 406.001 281.4 406.001C281.4 406.001 291.801 382.001 274.2 378.801C256.6 375.601 192.2 375.601 192.2 375.601z"/>
+ </g>
+ <g style="fill: #b23259">
+ <path d="M190.169 406.497C193.495 393.707 195.079 381.906 192.2 375.601C192.2 375.601 254.6 382.001 265.8 361.201C270.041 353.326 284.801 384.001 284.4 393.601C284.4 393.601 221.4 408.001 206.6 396.801L190.169 406.497z"/>
+ </g>
+ <g style="fill: #a5264c">
+ <path d="M194.6 422.801C194.6 422.801 196.6 430.001 194.2 434.001C194.2 434.001 192.6 434.801 191.4 435.201C191.4 435.201 192.6 438.801 198.6 440.401C198.6 440.401 200.6 444.801 203 445.201C205.4 445.601 210.2 451.201 214.2 450.001C218.2 448.801 229.4 444.801 229.4 444.801C229.4 444.801 235 441.601 243.8 445.201C243.8 445.201 246.175 444.399 246.6 440.401C247.1 435.701 250.2 432.001 252.2 430.001C254.2 428.001 263.8 415.201 262.6 414.801C261.4 414.401 194.6 422.801 194.6 422.801z"/>
+ </g>
+ <g style="fill: #ff727f; stroke:#000000">
+ <path d="M190.2 374.401C190.2 374.401 187.4 396.801 190.6 405.201C193.8 413.601 193 415.601 192.2 419.601C191.4 423.601 195.8 433.601 201.4 439.601L213.4 441.201C213.4 441.201 228.6 437.601 237.8 440.401C237.8 440.401 246.794 441.744 250.2 426.801C250.2 426.801 255 420.401 262.2 417.601C269.4 414.801 276.6 373.201 272.6 365.201C268.6 357.201 254.2 352.801 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M191.8 449.201C191.8 449.201 191 447.201 186.6 446.801C186.6 446.801 164.2 443.201 155.8 430.801C155.8 430.801 149 425.201 153.4 436.801C153.4 436.801 163.8 457.201 170.6 460.001C170.6 460.001 187 464.001 191.8 449.201z"/>
+ </g>
+ <g style="fill: #cc3f4c">
+ <path d="M271.742 385.229C272.401 377.323 274.354 368.709 272.6 365.201C266.154 352.307 249.181 357.695 238.2 368.401C222.2 384.001 220.2 367.201 190.2 374.401C190.2 374.401 188.455 388.364 189.295 398.376C189.295 398.376 226.6 386.801 227.4 392.401C227.4 392.401 229 389.201 238.2 389.201C247.4 389.201 270.142 388.029 271.742 385.229z"/>
+ </g>
+ <g style="stroke:#a51926; stroke-width:2">
+ <path d="M228.6 375.201C228.6 375.201 233.4 380.001 229.8 389.601C229.8 389.601 215.4 405.601 217.4 419.601"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M180.6 460.001C180.6 460.001 176.2 447.201 185 454.001C185 454.001 189.8 456.001 188.6 457.601C187.4 459.201 181.8 463.201 180.6 460.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M185.64 461.201C185.64 461.201 182.12 450.961 189.16 456.401C189.16 456.401 193.581 458.849 192.04 459.281C187.48 460.561 192.04 463.121 185.64 461.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M190.44 461.201C190.44 461.201 186.92 450.961 193.96 456.401C193.96 456.401 198.335 458.711 196.84 459.281C193.48 460.561 196.84 463.121 190.44 461.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M197.04 461.401C197.04 461.401 193.52 451.161 200.56 456.601C200.56 456.601 204.943 458.933 203.441 459.481C200.48 460.561 203.441 463.321 197.04 461.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M203.52 461.321C203.52 461.321 200 451.081 207.041 456.521C207.041 456.521 210.881 458.121 209.921 459.401C208.961 460.681 209.921 463.241 203.52 461.321z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M210.2 462.001C210.2 462.001 205.4 449.601 214.6 456.001C214.6 456.001 219.4 458.001 218.2 459.601C217 461.201 218.2 464.401 210.2 462.001z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M181.8 444.801C181.8 444.801 195 442.001 201 445.201C201 445.201 207 446.401 208.2 446.001C209.4 445.601 212.6 445.201 212.6 445.201"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M215.8 453.601C215.8 453.601 227.8 440.001 239.8 444.401C246.816 446.974 245.8 443.601 246.6 440.801C247.4 438.001 247.6 433.801 252.6 430.801"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M233 437.601C233 437.601 229 426.801 226.2 439.601C223.4 452.401 220.2 456.001 218.6 458.801C218.6 458.801 218.6 464.001 227 463.601C227 463.601 237.8 463.201 238.2 460.401C238.6 457.601 237 446.001 233 437.601z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M247 444.801C247 444.801 250.6 442.401 253 443.601"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+ <path d="M253.5 428.401C253.5 428.401 256.4 423.501 261.2 422.701"/>
+ </g>
+ <g style="fill: #b2b2b2">
+ <path d="M174.2 465.201C174.2 465.201 192.2 468.401 196.6 466.801C196.6 466.801 205.4 466.801 197 468.801C197 468.801 184.2 468.801 176.2 467.601C176.2 467.601 164.6 462.001 174.2 465.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M188.2 372.001C188.2 372.001 205.8 372.001 207.8 372.801C207.8 372.801 215 403.601 211.4 411.201C211.4 411.201 210.2 414.001 207.4 408.401C207.4 408.401 189 375.601 185.8 373.601C182.6 371.601 187 372.001 188.2 372.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M111.1 369.301C111.1 369.301 120 371.001 132.6 373.601C132.6 373.601 137.4 396.001 140.6 400.801C143.8 405.601 140.2 405.601 136.6 402.801C133 400.001 118.2 386.001 116.2 381.601C114.2 377.201 111.1 369.301 111.1 369.301z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M132.961 373.818C132.961 373.818 138.761 375.366 139.77 377.581C140.778 379.795 138.568 383.092 138.568 383.092C138.568 383.092 137.568 386.397 136.366 384.235C135.164 382.072 132.292 374.412 132.961 373.818z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M133 373.601C133 373.601 136.6 378.801 140.2 378.801C143.8 378.801 144.182 378.388 147 379.001C151.6 380.001 151.2 378.001 157.8 379.201C160.44 379.681 163 378.801 165.8 380.001C168.6 381.201 171.8 380.401 173 378.401C174.2 376.401 179 372.201 179 372.201C179 372.201 166.2 374.001 163.4 374.801C163.4 374.801 141 376.001 133 373.601z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M177.6 373.801C177.6 373.801 171.15 377.301 170.75 379.701C170.35 382.101 176 385.801 176 385.801C176 385.801 178.75 390.401 179.35 388.001C179.95 385.601 178.4 374.201 177.6 373.801z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M140.115 379.265C140.115 379.265 147.122 390.453 147.339 379.242C147.339 379.242 147.896 377.984 146.136 377.962C140.061 377.886 141.582 373.784 140.115 379.265z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M147.293 379.514C147.293 379.514 155.214 390.701 154.578 379.421C154.578 379.421 154.585 379.089 152.832 378.936C148.085 378.522 148.43 374.004 147.293 379.514z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M154.506 379.522C154.506 379.522 162.466 390.15 161.797 380.484C161.797 380.484 161.916 379.251 160.262 378.95C156.37 378.244 156.159 374.995 154.506 379.522z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+ <path d="M161.382 379.602C161.382 379.602 169.282 391.163 169.63 381.382C169.63 381.382 171.274 380.004 169.528 379.782C163.71 379.042 164.508 374.588 161.382 379.602z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+ <path d="M125.208 383.132L117.55 381.601C114.95 376.601 112.85 370.451 112.85 370.451C112.85 370.451 119.2 371.451 131.7 374.251C131.7 374.251 132.576 377.569 134.048 383.364L125.208 383.132z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+ <path d="M190.276 378.47C188.61 375.964 187.293 374.206 186.643 373.8C183.63 371.917 187.773 372.294 188.902 372.294C188.902 372.294 205.473 372.294 207.356 373.047C207.356 373.047 207.88 375.289 208.564 378.68C208.564 378.68 198.476 376.67 190.276 378.47z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M243.88 240.321C271.601 244.281 297.121 208.641 298.881 198.96C300.641 189.28 290.521 177.4 290.521 177.4C291.841 174.32 287.001 160.24 281.721 151C276.441 141.76 260.54 142.734 243 141.76C227.16 140.88 208.68 164.2 207.36 165.96C206.04 167.72 212.2 206.001 213.52 211.721C214.84 217.441 212.2 243.841 212.2 243.841C246.44 234.741 216.16 236.361 243.88 240.321z"/>
+ </g>
+ <g style="fill: #ea8e51">
+ <path d="M208.088 166.608C206.792 168.336 212.84 205.921 214.136 211.537C215.432 217.153 212.84 243.073 212.84 243.073C245.512 234.193 216.728 235.729 243.944 239.617C271.161 243.505 296.217 208.513 297.945 199.008C299.673 189.504 289.737 177.84 289.737 177.84C291.033 174.816 286.281 160.992 281.097 151.92C275.913 142.848 260.302 143.805 243.08 142.848C227.528 141.984 209.384 164.88 208.088 166.608z"/>
+ </g>
+ <g style="fill: #efaa7c">
+ <path d="M208.816 167.256C207.544 168.952 213.48 205.841 214.752 211.353C216.024 216.865 213.48 242.305 213.48 242.305C244.884 233.145 217.296 235.097 244.008 238.913C270.721 242.729 295.313 208.385 297.009 199.056C298.705 189.728 288.953 178.28 288.953 178.28C290.225 175.312 285.561 161.744 280.473 152.84C275.385 143.936 260.063 144.875 243.16 143.936C227.896 143.088 210.088 165.56 208.816 167.256z"/>
+ </g>
+ <g style="fill: #f4c6a8">
+ <path d="M209.544 167.904C208.296 169.568 214.12 205.761 215.368 211.169C216.616 216.577 214.12 241.537 214.12 241.537C243.556 232.497 217.864 234.465 244.072 238.209C270.281 241.953 294.409 208.257 296.073 199.105C297.737 189.952 288.169 178.72 288.169 178.72C289.417 175.808 284.841 162.496 279.849 153.76C274.857 145.024 259.824 145.945 243.24 145.024C228.264 144.192 210.792 166.24 209.544 167.904z"/>
+ </g>
+ <g style="fill: #f9e2d3">
+ <path d="M210.272 168.552C209.048 170.184 214.76 205.681 215.984 210.985C217.208 216.289 214.76 240.769 214.76 240.769C242.628 231.849 218.432 233.833 244.136 237.505C269.841 241.177 293.505 208.129 295.137 199.152C296.769 190.176 287.385 179.16 287.385 179.16C288.609 176.304 284.121 163.248 279.225 154.68C274.329 146.112 259.585 147.015 243.32 146.112C228.632 145.296 211.496 166.92 210.272 168.552z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M244.2 236.8C269.4 240.4 292.601 208 294.201 199.2C295.801 190.4 286.601 179.6 286.601 179.6C287.801 176.8 283.4 164 278.6 155.6C273.8 147.2 259.346 148.086 243.4 147.2C229 146.4 212.2 167.6 211 169.2C209.8 170.8 215.4 205.6 216.6 210.8C217.8 216 215.4 240 215.4 240C240.9 231.4 219 233.2 244.2 236.8z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M290.601 202.8C290.601 202.8 262.8 210.4 251.2 208.8C251.2 208.8 235.4 202.2 226.6 224C226.6 224 223 231.2 221 233.2C219 235.2 290.601 202.8 290.601 202.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M294.401 200.6C294.401 200.6 265.4 212.8 255.4 212.4C255.4 212.4 239 207.8 230.6 222.4C230.6 222.4 222.2 231.6 219 233.2C219 233.2 218.6 234.8 225 230.8L235.4 236C235.4 236 250.2 245.6 259.8 229.6C259.8 229.6 263.8 218.4 263.8 216.4C263.8 214.4 285 208.8 286.601 208.4C288.201 208 294.801 203.8 294.401 200.6z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M247 236.514C240.128 236.514 231.755 232.649 231.755 226.4C231.755 220.152 240.128 213.887 247 213.887C253.874 213.887 259.446 218.952 259.446 225.2C259.446 231.449 253.874 236.514 247 236.514z"/>
+ </g>
+ <g style="fill: #659900">
+ <path d="M243.377 219.83C238.531 220.552 233.442 222.055 233.514 221.839C235.054 217.22 241.415 213.887 247 213.887C251.296 213.887 255.084 215.865 257.32 218.875C257.32 218.875 252.004 218.545 243.377 219.83z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M255.4 219.6C255.4 219.6 251 216.4 251 218.6C251 218.6 254.6 223 255.4 219.6z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M245.4 227.726C242.901 227.726 240.875 225.7 240.875 223.2C240.875 220.701 242.901 218.675 245.4 218.675C247.9 218.675 249.926 220.701 249.926 223.2C249.926 225.7 247.9 227.726 245.4 227.726z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M141.4 214.4C141.4 214.4 138.2 193.2 140.6 188.8C140.6 188.8 151.4 178.8 151 175.2C151 175.2 150.6 157.2 149.4 156.4C148.2 155.6 140.6 149.6 134.6 156C134.6 156 124.2 174 125 180.4L125 182.4C125 182.4 117.4 182 115.8 184C115.8 184 114.6 189.2 113.4 189.6C113.4 189.6 110.6 192 112.6 194.8C112.6 194.8 110.6 197.2 111 201.2L118.6 205.2C118.6 205.2 120.6 219.6 131.4 224.8C136.236 227.129 139.4 220.4 141.4 214.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M140.4 212.56C140.4 212.56 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.52 159.64 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.96 140.4 212.56z"/>
+ </g>
+ <g style="fill: #eb955c">
+ <path d="M148.95 157.39C147.86 156.53 140.37 150.76 134.52 157C134.52 157 124.38 174.55 125.16 180.79L125.16 182.74C125.16 182.74 117.75 182.35 116.19 184.3C116.19 184.3 115.02 189.37 113.85 189.76C113.85 189.76 111.12 192.1 113.07 194.83C113.07 194.83 111.12 197.17 111.51 201.07L118.92 204.97C118.92 204.97 120.87 219.01 131.4 224.08C136.114 226.35 139.2 219.79 141.15 213.94C141.15 213.94 138.03 193.27 140.37 188.98C140.37 188.98 150.9 179.23 150.51 175.72C150.51 175.72 150.12 158.17 148.95 157.39z"/>
+ </g>
+ <g style="fill: #f2b892">
+ <path d="M148.5 158.38C147.52 157.46 140.14 151.92 134.44 158C134.44 158 124.56 175.1 125.32 181.18L125.32 183.08C125.32 183.08 118.1 182.7 116.58 184.6C116.58 184.6 115.44 189.54 114.3 189.92C114.3 189.92 111.64 192.2 113.54 194.86C113.54 194.86 111.64 197.14 112.02 200.94L119.24 204.74C119.24 204.74 121.14 218.42 131.4 223.36C135.994 225.572 139 219.18 140.9 213.48C140.9 213.48 137.86 193.34 140.14 189.16C140.14 189.16 150.4 179.66 150.02 176.24C150.02 176.24 149.64 159.14 148.5 158.38z"/>
+ </g>
+ <g style="fill: #f8dcc8">
+ <path d="M148.05 159.37C147.18 158.39 139.91 153.08 134.36 159C134.36 159 124.74 175.65 125.48 181.57L125.48 183.42C125.48 183.42 118.45 183.05 116.97 184.9C116.97 184.9 115.86 189.71 114.75 190.08C114.75 190.08 112.16 192.3 114.01 194.89C114.01 194.89 112.16 197.11 112.53 200.81L119.56 204.51C119.56 204.51 121.41 217.83 131.4 222.64C135.873 224.794 138.8 218.57 140.65 213.02C140.65 213.02 137.69 193.41 139.91 189.34C139.91 189.34 149.9 180.09 149.53 176.76C149.53 176.76 149.16 160.11 148.05 159.37z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M140.4 212.46C140.4 212.46 137.52 193.48 139.68 189.52C139.68 189.52 149.4 180.52 149.04 177.28C149.04 177.28 148.68 161.08 147.6 160.36C146.84 159.32 139.68 154.24 134.28 160C134.28 160 124.92 176.2 125.64 181.96L125.64 183.76C125.64 183.76 118.8 183.4 117.36 185.2C117.36 185.2 116.28 189.88 115.2 190.24C115.2 190.24 112.68 192.4 114.48 194.92C114.48 194.92 112.68 197.08 113.04 200.68L119.88 204.28C119.88 204.28 121.68 217.24 131.4 221.92C135.752 224.015 138.6 217.86 140.4 212.46z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M137.3 206.2C137.3 206.2 115.7 196 114.8 195.2C114.8 195.2 123.9 203.4 124.7 203.4C125.5 203.4 137.3 206.2 137.3 206.2z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M120.2 200C120.2 200 138.6 203.6 138.6 208C138.6 210.912 138.357 224.331 133 222.8C124.6 220.4 128.2 206 120.2 200z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M128.6 203.8C128.6 203.8 137.578 205.274 138.6 208C139.2 209.6 139.863 217.908 134.4 219C129.848 219.911 127.618 209.69 128.6 203.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M214.595 246.349C214.098 244.607 215.409 244.738 217.2 244.2C219.2 243.6 231.4 239.8 232.2 237.2C233 234.6 246.2 239 246.2 239C248 239.8 252.4 242.4 252.4 242.4C257.2 243.6 263.8 244 263.8 244C266.2 245 269.6 247.8 269.6 247.8C284.2 258 296.601 250.8 296.601 250.8C316.601 244.2 310.601 227 310.601 227C307.601 218 310.801 214.6 310.801 214.6C311.001 210.8 318.201 217.2 318.201 217.2C320.801 221.4 321.601 226.4 321.601 226.4C329.601 237.6 326.201 219.8 326.201 219.8C326.401 218.8 323.601 215.2 323.601 214C323.601 212.8 321.801 209.4 321.801 209.4C318.801 206 321.201 199 321.201 199C323.001 185.2 320.801 187 320.801 187C319.601 185.2 310.401 195.2 310.401 195.2C308.201 198.6 302.201 200.2 302.201 200.2C299.401 202 296.001 200.6 296.001 200.6C293.401 200.2 287.801 207.2 287.801 207.2C290.601 207 293.001 211.4 295.401 211.6C297.801 211.8 299.601 209.2 301.201 208.6C302.801 208 305.601 213.8 305.601 213.8C306.001 216.4 300.401 221.2 300.401 221.2C300.001 225.8 298.401 224.2 298.401 224.2C295.401 223.6 294.201 227.4 293.201 232C292.201 236.6 288.001 237 288.001 237C286.401 244.4 285.2 241.4 285.2 241.4C285 235.8 279 241.6 279 241.6C277.8 243.6 273.2 241.4 273.2 241.4C266.4 239.4 268.8 237.4 268.8 237.4C270.6 235.2 281.8 237.4 281.8 237.4C284 235.8 276 231.8 276 231.8C275.4 230 276.4 225.6 276.4 225.6C277.6 222.4 284.4 216.8 284.4 216.8C293.801 215.6 291.001 214 291.001 214C284.801 208.8 279 216.4 279 216.4C276.8 222.6 259.4 237.6 259.4 237.6C254.6 241 257.2 234.2 253.2 237.6C249.2 241 228.6 232 228.6 232C217.038 230.807 214.306 246.549 210.777 243.429C210.777 243.429 216.195 251.949 214.595 246.349z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M409.401 80C409.401 80 383.801 88 381.001 106.8C381.001 106.8 378.601 129.6 399.001 147.2C399.001 147.2 399.401 153.6 401.401 156.8C401.401 156.8 399.801 161.6 418.601 154L445.801 145.6C445.801 145.6 452.201 143.2 457.401 134.4C462.601 125.6 477.801 106.8 474.201 81.6C474.201 81.6 475.401 70.4 469.401 70C469.401 70 461.001 68.4 453.801 76C453.801 76 447.001 79.2 444.601 78.8L409.401 80z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M464.022 79.01C464.022 79.01 466.122 70.08 461.282 74.92C461.282 74.92 454.242 80.64 446.761 80.64C446.761 80.64 432.241 82.84 427.841 96.04C427.841 96.04 423.881 122.88 431.801 128.6C431.801 128.6 436.641 136.08 443.681 129.48C450.722 122.88 466.222 92.65 464.022 79.01z"/>
+ </g>
+ <g style="fill: #323232">
+ <path d="M463.648 79.368C463.648 79.368 465.738 70.624 460.986 75.376C460.986 75.376 454.074 80.992 446.729 80.992C446.729 80.992 432.473 83.152 428.153 96.112C428.153 96.112 424.265 122.464 432.041 128.08C432.041 128.08 436.793 135.424 443.705 128.944C450.618 122.464 465.808 92.76 463.648 79.368z"/>
+ </g>
+ <g style="fill: #666666">
+ <path d="M463.274 79.726C463.274 79.726 465.354 71.168 460.69 75.832C460.69 75.832 453.906 81.344 446.697 81.344C446.697 81.344 432.705 83.464 428.465 96.184C428.465 96.184 424.649 122.048 432.281 127.56C432.281 127.56 436.945 134.768 443.729 128.408C450.514 122.048 465.394 92.87 463.274 79.726z"/>
+ </g>
+ <g style="fill: #999999">
+ <path d="M462.9 80.084C462.9 80.084 464.97 71.712 460.394 76.288C460.394 76.288 453.738 81.696 446.665 81.696C446.665 81.696 432.937 83.776 428.777 96.256C428.777 96.256 425.033 121.632 432.521 127.04C432.521 127.04 437.097 134.112 443.753 127.872C450.41 121.632 464.98 92.98 462.9 80.084z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M462.526 80.442C462.526 80.442 464.586 72.256 460.098 76.744C460.098 76.744 453.569 82.048 446.633 82.048C446.633 82.048 433.169 84.088 429.089 96.328C429.089 96.328 425.417 121.216 432.761 126.52C432.761 126.52 437.249 133.456 443.777 127.336C450.305 121.216 464.566 93.09 462.526 80.442z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M462.151 80.8C462.151 80.8 464.201 72.8 459.801 77.2C459.801 77.2 453.401 82.4 446.601 82.4C446.601 82.4 433.401 84.4 429.401 96.4C429.401 96.4 425.801 120.8 433.001 126C433.001 126 437.401 132.8 443.801 126.8C450.201 120.8 464.151 93.2 462.151 80.8z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M250.6 284C250.6 284 230.2 264.8 222.2 264C222.2 264 187.8 260 173 278C173 278 190.6 257.6 218.2 263.2C218.2 263.2 196.6 258.8 184.2 262C184.2 262 167.4 262 157.8 276L155 280.8C155 280.8 159 266 177.4 260C177.4 260 200.2 255.2 211 260C211 260 189.4 253.2 179.4 255.2C179.4 255.2 149 252.8 136.2 279.2C136.2 279.2 140.2 264.8 155 257.6C155 257.6 168.6 248.8 189 251.6C189 251.6 203.4 254.8 208.6 257.2C213.8 259.6 212.6 256.8 204.2 252C204.2 252 198.6 242 184.6 242.4C184.6 242.4 141.8 246 131.4 258C131.4 258 145 246.8 155.4 244C155.4 244 177.8 236 186.2 236.8C186.2 236.8 211 237.8 218.6 233.8C218.6 233.8 207.4 238.8 210.6 242C213.8 245.2 220.6 252.8 220.6 254C220.6 255.2 244.8 277.3 248.4 281.7L250.6 284z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M389 478C389 478 373.5 441.5 361 432C361 432 387 448 390.5 466C390.5 466 390.5 476 389 478z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M436 485.5C436 485.5 409.5 430.5 391 406.5C391 406.5 434.5 444 439.5 470.5L440 476L437 473.5C437 473.5 436.5 482.5 436 485.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M492.5 437C492.5 437 430 377.5 428.5 375C428.5 375 489 441 492 448.5C492 448.5 490 439.5 492.5 437z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M304 480.5C304 480.5 323.5 428.5 342.5 451C342.5 451 357.5 461 357 464C357 464 353 457.5 335 458C335 458 316 455 304 480.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M494.5 353C494.5 353 449.5 324.5 442 323C430.193 320.639 491.5 352 496.5 362.5C496.5 362.5 498.5 360 494.5 353z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M343.801 459.601C343.801 459.601 364.201 457.601 371.001 450.801L375.401 454.401L393.001 416.001L396.601 421.201C396.601 421.201 411.001 406.401 410.201 398.401C409.401 390.401 423.001 404.401 423.001 404.401C423.001 404.401 422.201 392.801 429.401 399.601C429.401 399.601 427.001 384.001 435.401 392.001C435.401 392.001 424.864 361.844 447.401 387.601C453.001 394.001 448.601 387.201 448.601 387.201C448.601 387.201 422.601 339.201 444.201 353.601C444.201 353.601 446.201 330.801 445.001 326.401C443.801 322.001 441.801 299.6 437.001 294.4C432.201 289.2 437.401 287.6 443.001 292.8C443.001 292.8 431.801 268.8 445.001 280.8C445.001 280.8 441.401 265.6 437.001 262.8C437.001 262.8 431.401 245.6 446.601 256.4C446.601 256.4 442.201 244 439.001 240.8C439.001 240.8 427.401 213.2 434.601 218L439.001 221.6C439.001 221.6 432.201 207.6 438.601 212C445.001 216.4 445.001 216 445.001 216C445.001 216 423.801 182.8 444.201 200.4C444.201 200.4 436.042 186.482 432.601 179.6C432.601 179.6 413.801 159.2 428.201 165.6L433.001 167.2C433.001 167.2 424.201 157.2 416.201 155.6C408.201 154 418.601 147.6 425.001 149.6C431.401 151.6 447.001 159.2 447.001 159.2C447.001 159.2 459.801 178 463.801 178.4C463.801 178.4 443.801 170.8 449.801 178.8C449.801 178.8 464.201 192.8 457.001 192.4C457.001 192.4 451.001 199.6 455.801 208.4C455.801 208.4 437.342 190.009 452.201 215.6L459.001 232C459.001 232 434.601 207.2 445.801 229.2C445.801 229.2 463.001 252.8 465.001 253.2C467.001 253.6 471.401 262.4 471.401 262.4L467.001 260.4L472.201 269.2C472.201 269.2 461.001 257.2 467.001 270.4L472.601 284.8C472.601 284.8 452.201 262.8 465.801 292.4C465.801 292.4 449.401 287.2 458.201 304.4C458.201 304.4 456.601 320.401 457.001 325.601C457.401 330.801 458.601 359.201 454.201 367.201C449.801 375.201 460.201 394.401 462.201 398.401C464.201 402.401 467.801 413.201 459.001 404.001C450.201 394.801 454.601 400.401 456.601 409.201C458.601 418.001 464.601 433.601 463.801 439.201C463.801 439.201 462.601 440.401 459.401 436.801C459.401 436.801 444.601 414.001 446.201 428.401C446.201 428.401 445.001 436.401 441.801 445.201C441.801 445.201 438.601 456.001 438.601 447.201C438.601 447.201 435.401 430.401 432.601 438.001C429.801 445.601 426.201 451.601 423.401 454.001C420.601 456.401 415.401 433.601 414.201 444.001C414.201 444.001 402.201 431.601 397.401 448.001L385.801 464.401C385.801 464.401 385.401 452.001 384.201 458.001C384.201 458.001 354.201 464.001 343.801 459.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M309.401 102.8C309.401 102.8 297.801 94.8 293.801 95.2C289.801 95.6 321.401 86.4 362.601 114C362.601 114 367.401 116.8 371.001 116.4C371.001 116.4 374.201 118.8 371.401 122.4C371.401 122.4 362.601 132 373.801 143.2C373.801 143.2 392.201 150 386.601 141.2C386.601 141.2 397.401 145.2 399.801 149.2C402.201 153.2 401.001 149.2 401.001 149.2C401.001 149.2 394.601 142 388.601 136.8C388.601 136.8 383.401 134.8 380.601 126.4C377.801 118 375.401 108 379.801 104.8C379.801 104.8 375.801 109.2 376.601 105.2C377.401 101.2 381.001 97.6 382.601 97.2C384.201 96.8 400.601 81 407.401 80.6C407.401 80.6 398.201 82 395.201 81C392.201 80 365.601 68.6 359.601 67.4C359.601 67.4 342.801 60.8 354.801 62.8C354.801 62.8 390.601 66.6 408.801 79.8C408.801 79.8 401.601 71.4 383.201 64.4C383.201 64.4 361.001 51.8 325.801 56.8C325.801 56.8 308.001 60 300.201 61.8C300.201 61.8 297.601 61.2 297.001 60.8C296.401 60.4 284.6 51.4 257 58.4C257 58.4 240 63 231.4 67.8C231.4 67.8 216.2 69 212.6 72.2C212.6 72.2 194 86.8 192 87.6C190 88.4 178.6 96 177.8 96.4C177.8 96.4 202.4 89.8 204.8 87.4C207.2 85 224.6 82.4 227 83.8C229.4 85.2 237.8 84.6 228.2 85.2C228.2 85.2 303.801 100 304.601 102C305.401 104 309.401 102.8 309.401 102.8z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M380.801 93.6C380.801 93.6 370.601 86.2 368.601 86.2C366.601 86.2 354.201 76 350.001 76.4C345.801 76.8 333.601 66.8 306.201 75C306.201 75 305.601 73 309.201 72.2C309.201 72.2 315.601 70 316.001 69.4C316.001 69.4 336.201 65.2 343.401 68.8C343.401 68.8 352.601 71.4 358.801 77.6C358.801 77.6 370.001 80.8 373.201 79.8C373.201 79.8 382.001 82 382.401 83.8C382.401 83.8 388.201 86.8 386.401 89.4C386.401 89.4 386.801 91 380.801 93.6z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M368.33 91.491C369.137 92.123 370.156 92.221 370.761 93.03C370.995 93.344 370.706 93.67 370.391 93.767C369.348 94.084 368.292 93.514 367.15 94.102C366.748 94.309 366.106 94.127 365.553 93.978C363.921 93.537 362.092 93.512 360.401 94.2C358.416 93.071 356.056 93.655 353.975 92.654C353.917 92.627 353.695 92.973 353.621 92.946C350.575 91.801 346.832 92.084 344.401 89.8C341.973 89.388 339.616 88.926 337.188 88.246C335.37 87.737 333.961 86.748 332.341 85.916C330.964 85.208 329.507 84.686 327.973 84.314C326.11 83.862 324.279 83.974 322.386 83.454C322.293 83.429 322.101 83.773 322.019 83.746C321.695 83.638 321.405 83.055 321.234 83.108C319.553 83.63 318.065 82.658 316.401 83C315.223 81.776 313.495 82.021 311.949 81.579C308.985 80.731 305.831 82.001 302.801 81C306.914 79.158 311.601 80.39 315.663 78.321C317.991 77.135 320.653 78.237 323.223 77.477C323.71 77.333 324.401 77.131 324.801 77.8C324.935 77.665 325.117 77.426 325.175 77.454C327.625 78.611 329.94 79.885 332.422 80.951C332.763 81.097 333.295 80.865 333.547 81.067C335.067 82.283 337.01 82.18 338.401 83.4C340.099 82.898 341.892 83.278 343.621 82.654C343.698 82.627 343.932 82.968 343.965 82.946C345.095 82.198 346.25 82.469 347.142 82.773C347.48 82.888 348.143 83.135 348.448 83.209C349.574 83.485 350.43 83.965 351.609 84.148C351.723 84.166 351.908 83.826 351.98 83.854C353.103 84.292 354.145 84.236 354.801 85.4C354.936 85.265 355.101 85.027 355.183 85.054C356.21 85.392 356.859 86.147 357.96 86.388C358.445 86.494 359.057 87.12 359.633 87.296C362.025 88.027 363.868 89.556 366.062 90.451C366.821 90.761 367.697 90.995 368.33 91.491z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M291.696 77.261C289.178 75.536 286.81 74.43 284.368 72.644C284.187 72.511 283.827 72.681 283.625 72.559C282.618 71.95 281.73 71.369 280.748 70.673C280.209 70.291 279.388 70.302 278.88 70.044C276.336 68.752 273.707 68.194 271.2 67C271.882 66.362 273.004 66.606 273.6 65.8C273.795 66.08 274.033 66.364 274.386 66.173C276.064 65.269 277.914 65.116 279.59 65.206C281.294 65.298 283.014 65.603 284.789 65.875C285.096 65.922 285.295 66.445 285.618 66.542C287.846 67.205 290.235 66.68 292.354 67.518C293.945 68.147 295.515 68.97 296.754 70.245C297.006 70.505 296.681 70.806 296.401 71C296.789 70.891 297.062 71.097 297.173 71.41C297.257 71.649 297.257 71.951 297.173 72.19C297.061 72.502 296.782 72.603 296.408 72.654C295.001 72.844 296.773 71.464 296.073 71.912C294.8 72.726 295.546 74.132 294.801 75.4C294.521 75.206 294.291 74.988 294.401 74.6C294.635 75.122 294.033 75.412 293.865 75.728C293.48 76.453 292.581 77.868 291.696 77.261z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M259.198 84.609C256.044 83.815 252.994 83.93 249.978 82.654C249.911 82.626 249.688 82.973 249.624 82.946C248.258 82.352 247.34 81.386 246.264 80.34C245.351 79.452 243.693 79.839 242.419 79.352C242.095 79.228 241.892 78.716 241.591 78.677C240.372 78.52 239.445 77.571 238.4 77C240.736 76.205 243.147 76.236 245.609 75.852C245.722 75.834 245.867 76.155 246 76.155C246.136 76.155 246.266 75.934 246.4 75.8C246.595 76.08 246.897 76.406 247.154 76.152C247.702 75.612 248.258 75.802 248.798 75.842C248.942 75.852 249.067 76.155 249.2 76.155C249.336 76.155 249.467 75.844 249.6 75.844C249.736 75.845 249.867 76.155 250 76.155C250.136 76.155 250.266 75.934 250.4 75.8C251.092 76.582 251.977 76.028 252.799 76.207C253.837 76.434 254.104 77.582 255.178 77.88C259.893 79.184 264.03 81.329 268.393 83.416C268.7 83.563 268.91 83.811 268.8 84.2C269.067 84.2 269.38 84.112 269.57 84.244C270.628 84.976 271.669 85.524 272.366 86.622C272.582 86.961 272.253 87.368 272.02 87.316C267.591 86.321 263.585 85.713 259.198 84.609z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M245.338 128.821C243.746 127.602 243.162 125.571 242.034 123.779C241.82 123.439 242.094 123.125 242.411 123.036C242.971 122.877 243.514 123.355 243.923 123.557C245.668 124.419 247.203 125.661 249.2 125.8C251.19 128.034 255.45 128.419 255.457 131.8C255.458 132.659 254.03 131.741 253.6 132.6C251.149 131.597 248.76 131.7 246.38 130.233C245.763 129.852 246.093 129.399 245.338 128.821z"/>
+ </g>
+ <g style="fill: #cc7226">
+ <path d="M217.8 76.244C217.935 76.245 224.966 76.478 224.949 76.592C224.904 76.901 217.174 77.95 216.81 77.78C216.646 77.704 209.134 80.134 209 80C209.268 79.865 217.534 76.244 217.8 76.244z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M233.2 86C233.2 86 218.4 87.8 214 89C209.6 90.2 191 97.8 188 99.8C188 99.8 174.6 105.2 157.6 125.2C157.6 125.2 165.2 121.8 167.4 119C167.4 119 181 106.4 180.8 109C180.8 109 193 100.4 192.4 102.6C192.4 102.6 216.8 91.4 214.8 94.6C214.8 94.6 236.4 90 235.4 92C235.4 92 254.2 96.4 251.4 96.6C251.4 96.6 245.6 97.8 252 101.4C252 101.4 248.6 105.8 243.2 101.8C237.8 97.8 240.8 100 235.8 101C235.8 101 233.2 101.8 228.6 97.8C228.6 97.8 223 93.2 214.2 96.8C214.2 96.8 183.6 109.4 181.6 110C181.6 110 178 112.8 175.6 116.4C175.6 116.4 169.8 120.8 166.8 122.2C166.8 122.2 154 133.8 152.8 135.2C152.8 135.2 149.4 140.4 148.6 140.8C148.6 140.8 155 137 157 135C157 135 171 125 176.4 124.2C176.4 124.2 180.8 121.2 181.6 119.8C181.6 119.8 196 110.6 200.2 110.6C200.2 110.6 209.4 115.8 211.8 108.8C211.8 108.8 217.6 107 223.2 108.2C223.2 108.2 226.4 105.6 225.6 103.4C225.6 103.4 227.2 101.6 228.2 105.4C228.2 105.4 231.6 109 236.4 107C236.4 107 240.4 106.8 238.4 109.2C238.4 109.2 234 113 222.2 113.2C222.2 113.2 209.8 113.8 193.4 121.4C193.4 121.4 163.6 131.8 154.4 142.2C154.4 142.2 148 151 142.6 152.2C142.6 152.2 136.8 153 130.8 160.4C130.8 160.4 140.6 154.6 149.6 154.6C149.6 154.6 153.6 152.2 149.8 155.8C149.8 155.8 146.2 163.4 147.8 168.8C147.8 168.8 147.2 174 146.4 175.6C146.4 175.6 138.6 188.4 138.6 190.8C138.6 193.2 139.8 203 140.2 203.6C140.6 204.2 139.2 202 143 204.4C146.8 206.8 149.6 208.4 150.4 211.2C151.2 214 148.4 205.8 148.2 204C148 202.2 143.8 195 144.6 192.6C144.6 192.6 145.6 193.6 146.4 195C146.4 195 145.8 194.4 146.4 190.8C146.4 190.8 147.2 185.6 148.6 182.4C150 179.2 152 175.4 152.4 174.6C152.8 173.8 152.8 168 154.2 170.6L157.6 173.2C157.6 173.2 154.8 170.6 157 168.4C157 168.4 156 162.8 157.8 160.2C157.8 160.2 164.8 151.8 166.4 150.8C168 149.8 166.6 150.2 166.6 150.2C166.6 150.2 172.6 146 166.8 147.6C166.8 147.6 162.8 149.2 159.8 149.2C159.8 149.2 152.2 151.2 156.2 147C160.2 142.8 170.2 137.4 174 137.6L174.8 139.2L186 136.8L184.8 137.6C184.8 137.6 184.6 137.4 188.8 137C193 136.6 198.8 138 200.2 136.2C201.6 134.4 205 133.4 204.6 134.8C204.2 136.2 204 138.2 204 138.2C204 138.2 209 132.4 208.4 134.6C207.8 136.8 199.6 142 198.2 148.2L208.6 140L212.2 137C212.2 137 215.8 139.2 216 137.6C216.2 136 220.8 130.2 222 130.4C223.2 130.6 225.2 127.8 225 130.4C224.8 133 232.4 138.4 232.4 138.4C232.4 138.4 235.6 136.6 237 138C238.4 139.4 242.6 118.2 242.6 118.2L267.6 107.6L311.201 104.2L294.201 97.4L233.2 86z"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M251.4 285C251.4 285 236.4 268.2 228 265.6C228 265.6 214.6 258.8 190 266.6"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M224.8 264.2C224.8 264.2 199.6 256.2 184.2 260.4C184.2 260.4 165.8 262.4 157.4 276.2"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M221.2 263C221.2 263 204.2 255.8 189.4 253.6C189.4 253.6 172.8 251 156.2 258.2C156.2 258.2 144 264.2 138.6 274.4"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+ <path d="M222.2 263.4C222.2 263.4 206.8 252.4 205.8 251C205.8 251 198.8 240 185.8 239.6C185.8 239.6 164.4 240.4 147.2 248.4"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M220.895 254.407C222.437 255.87 249.4 284.8 249.4 284.8C284.6 321.401 256.6 287.2 256.6 287.2C249 282.4 239.8 263.6 239.8 263.6C238.6 260.8 253.8 270.8 253.8 270.8C257.8 271.6 271.4 290.8 271.4 290.8C264.6 288.4 269.4 295.6 269.4 295.6C272.2 297.6 292.601 313.201 292.601 313.201C296.201 317.201 300.201 318.801 300.201 318.801C314.201 313.601 307.801 326.801 307.801 326.801C310.201 333.601 315.801 322.001 315.801 322.001C327.001 305.2 310.601 307.601 310.601 307.601C280.6 310.401 273.8 294.4 273.8 294.4C271.4 292 280.2 294.4 280.2 294.4C288.601 296.4 273 282 273 282C275.4 282 284.6 288.8 284.6 288.8C295.001 298 297.001 296 297.001 296C315.001 287.2 325.401 294.8 325.401 294.8C327.401 296.4 321.801 303.2 323.401 308.401C325.001 313.601 329.801 326.001 329.801 326.001C327.401 327.601 327.801 338.401 327.801 338.401C344.601 361.601 335.001 359.601 335.001 359.601C319.401 359.201 334.201 366.801 334.201 366.801C337.401 368.801 346.201 376.001 346.201 376.001C343.401 374.801 341.801 380.001 341.801 380.001C346.601 384.001 343.801 388.801 343.801 388.801C337.801 390.001 336.601 394.001 336.601 394.001C343.401 402.001 333.401 402.401 333.401 402.401C337.001 406.801 332.201 418.801 332.201 418.801C327.401 418.801 321.001 424.401 321.001 424.401C323.401 429.201 313.001 434.801 313.001 434.801C304.601 436.401 307.401 443.201 307.401 443.201C299.401 449.201 297.001 465.201 297.001 465.201C296.201 475.601 293.801 478.801 299.001 476.801C304.201 474.801 303.401 462.401 303.401 462.401C298.601 446.801 341.401 430.801 341.401 430.801C345.401 429.201 346.201 424.001 346.201 424.001C348.201 424.401 357.001 432.001 357.001 432.001C364.601 443.201 365.001 434.001 365.001 434.001C366.201 430.401 364.601 424.401 364.601 424.401C370.601 402.801 356.601 396.401 356.601 396.401C346.601 362.801 360.601 371.201 360.601 371.201C363.401 376.801 374.201 382.001 374.201 382.001L377.801 379.601C376.201 374.801 384.601 368.801 384.601 368.801C387.401 375.201 393.401 367.201 393.401 367.201C397.001 342.801 409.401 357.201 409.401 357.201C413.401 358.401 414.601 351.601 414.601 351.601C418.201 341.201 414.601 327.601 414.601 327.601C418.201 327.201 427.801 333.201 427.801 333.201C430.601 329.601 421.401 312.801 425.401 315.201C429.401 317.601 433.801 319.201 433.801 319.201C434.601 317.201 424.601 304.801 424.601 304.801C420.201 302 415.001 281.6 415.001 281.6C422.201 285.2 412.201 270 412.201 270C412.201 266.8 418.201 255.6 418.201 255.6C417.401 248.8 418.201 249.2 418.201 249.2C421.001 250.4 429.001 252 422.201 245.6C415.401 239.2 423.001 234.4 423.001 234.4C427.401 231.6 413.801 232 413.801 232C408.601 227.6 409.001 223.6 409.001 223.6C417.001 225.6 402.601 211.2 400.201 207.6C397.801 204 407.401 198.8 407.401 198.8C420.601 195.2 409.001 192 409.001 192C389.401 192.4 400.201 181.6 400.201 181.6C406.201 182 404.601 179.6 404.601 179.6C399.401 178.4 389.801 172 389.801 172C385.801 168.4 389.401 169.2 389.401 169.2C406.201 170.4 377.401 159.2 377.401 159.2C385.401 159.2 367.401 148.8 367.401 148.8C365.401 147.2 362.201 139.6 362.201 139.6C356.201 134.4 351.401 127.6 351.401 127.6C351.001 123.2 346.201 118.4 346.201 118.4C334.601 104.8 329.001 105.2 329.001 105.2C314.201 101.6 309.001 102.4 309.001 102.4L256.2 106.8C229.8 119.6 237.6 140.6 237.6 140.6C244 149 253.2 145.2 253.2 145.2C257.8 139 269.4 141.2 269.4 141.2C289.801 144.4 287.201 140.8 287.201 140.8C284.801 136.2 268.6 130 268.4 129.4C268.2 128.8 259.4 125.4 259.4 125.4C256.4 124.2 252 115 252 115C248.8 111.6 264.6 117.4 264.6 117.4C263.4 118.4 270.8 122.4 270.8 122.4C288.201 121.4 298.801 132.2 298.801 132.2C309.601 148.8 309.801 140.6 309.801 140.6C312.601 131.2 300.801 110 300.801 110C301.201 108 309.401 114.6 309.401 114.6C310.801 112.6 311.601 118.4 311.601 118.4C311.801 120.8 315.601 128.8 315.601 128.8C318.401 141.8 322.001 134.4 322.001 134.4L326.601 143.8C328.001 146.4 322.001 154 322.001 154C321.801 156.8 322.601 156.6 317.001 164.2C311.401 171.8 314.801 176.2 314.801 176.2C313.401 182.8 322.201 182.4 322.201 182.4C324.801 184.6 328.201 184.6 328.201 184.6C330.001 186.6 332.401 186 332.401 186C334.001 182.2 340.201 184.2 340.201 184.2C341.601 181.8 349.801 181.4 349.801 181.4C350.801 178.8 351.201 177.2 354.601 176.6C358.001 176 333.401 133 333.401 133C339.801 132.2 331.601 119.8 331.601 119.8C329.401 113.2 340.801 127.8 343.001 129.2C345.201 130.6 346.201 132.8 344.601 132.6C343.001 132.4 341.201 134.6 342.601 134.8C344.001 135 357.001 150 360.401 160.2C363.801 170.4 369.801 174.4 376.001 180.4C382.201 186.4 381.401 210.6 381.401 210.6C381.001 219.4 387.001 230 387.001 230C389.001 233.8 384.801 252 384.801 252C382.801 254.2 384.201 255 384.201 255C385.201 256.2 392.001 269.4 392.001 269.4C390.201 269.2 393.801 272.8 393.801 272.8C399.001 278.8 392.601 275.8 392.601 275.8C386.601 274.2 393.601 284 393.601 284C394.801 285.8 385.801 281.2 385.801 281.2C376.601 280.6 388.201 287.8 388.201 287.8C396.801 295 385.401 290.6 385.401 290.6C380.801 288.8 384.001 295.6 384.001 295.6C387.201 297.2 404.401 304.2 404.401 304.2C404.801 308.001 401.801 313.001 401.801 313.001C402.201 317.001 400.001 320.401 400.001 320.401C398.801 328.601 398.201 329.401 398.201 329.401C394.001 329.601 386.601 343.401 386.601 343.401C384.801 346.001 374.601 358.001 374.601 358.001C372.601 365.001 354.601 357.801 354.601 357.801C348.001 361.201 350.001 357.801 350.001 357.801C349.601 355.601 354.401 349.601 354.401 349.601C361.401 347.001 358.801 336.201 358.801 336.201C362.801 334.801 351.601 332.001 351.801 330.801C352.001 329.601 357.801 328.201 357.801 328.201C365.801 326.201 361.401 323.801 361.401 323.801C360.801 319.801 363.801 314.201 363.801 314.201C375.401 313.401 363.801 297.2 363.801 297.2C353.001 289.6 352.001 283.8 352.001 283.8C364.601 275.6 356.401 263.2 356.601 259.6C356.801 256 358.001 234.4 358.001 234.4C356.001 228.2 353.001 214.6 353.001 214.6C355.201 209.4 362.601 196.8 362.601 196.8C365.401 192.6 374.201 187.8 372.001 184.8C369.801 181.8 362.001 183.6 362.001 183.6C354.201 182.2 354.801 187.4 354.801 187.4C353.201 188.4 352.401 193.4 352.401 193.4C351.68 201.333 342.801 207.6 342.801 207.6C331.601 213.8 340.801 217.8 340.801 217.8C346.801 224.4 337.001 224.6 337.001 224.6C326.001 222.8 334.201 233 334.201 233C345.001 245.8 342.001 248.6 342.001 248.6C331.801 249.6 344.401 258.8 344.401 258.8C344.401 258.8 343.601 256.8 343.801 258.6C344.001 260.4 347.001 264.6 347.801 266.6C348.601 268.6 344.601 268.8 344.601 268.8C345.201 278.4 329.801 274.2 329.801 274.2C329.801 274.2 329.801 274.2 328.201 274.4C326.601 274.6 315.401 273.8 309.601 271.6C303.801 269.4 297.001 269.4 297.001 269.4C297.001 269.4 293.001 271.2 285.4 271C277.8 270.8 269.8 273.6 269.8 273.6C265.4 273.2 274 268.8 274.2 269C274.4 269.2 280 263.6 272 264.2C250.203 265.835 239.4 255.6 239.4 255.6C237.4 254.2 234.8 251.4 234.8 251.4C224.8 249.4 236.2 263.8 236.2 263.8C237.4 265.2 236 266.2 236 266.2C235.2 264.6 227.4 259.2 227.4 259.2C224.589 258.227 223.226 256.893 220.895 254.407z"/>
+ </g>
+ <g style="fill: #4c0000">
+ <path d="M197 242.8C197 242.8 208.6 248.4 211.2 251.2C213.8 254 227.8 265.4 227.8 265.4C227.8 265.4 222.4 263.4 219.8 261.6C217.2 259.8 206.4 251.6 206.4 251.6C206.4 251.6 202.6 245.6 197 242.8z"/>
+ </g>
+ <g style="fill: #99cc32">
+ <path d="M138.991 211.603C139.328 211.455 138.804 208.743 138.6 208.2C137.578 205.474 128.6 204 128.6 204C128.373 205.365 128.318 206.961 128.424 208.599C128.424 208.599 133.292 214.118 138.991 211.603z"/>
+ </g>
+ <g style="fill: #659900">
+ <path d="M138.991 211.403C138.542 211.561 138.976 208.669 138.8 208.2C137.778 205.474 128.6 203.9 128.6 203.9C128.373 205.265 128.318 206.861 128.424 208.499C128.424 208.499 132.692 213.618 138.991 211.403z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M134.6 211.546C133.975 211.546 133.469 210.406 133.469 209C133.469 207.595 133.975 206.455 134.6 206.455C135.225 206.455 135.732 207.595 135.732 209C135.732 210.406 135.225 211.546 134.6 211.546z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M134.6 209z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M89 309.601C89 309.601 83.4 319.601 108.2 313.601C108.2 313.601 122.2 312.401 124.6 310.001C125.8 310.801 134.166 313.734 137 314.401C143.8 316.001 152.2 306 152.2 306C152.2 306 156.8 295.5 159.6 295.5C162.4 295.5 159.2 297.1 159.2 297.1C159.2 297.1 152.6 307.201 153 308.801C153 308.801 147.8 328.801 131.8 329.601C131.8 329.601 115.65 330.551 117 336.401C117 336.401 125.8 334.001 128.2 336.401C128.2 336.401 139 336.001 131 342.401L124.2 354.001C124.2 354.001 124.34 357.919 114.2 354.401C104.4 351.001 94.1 338.101 94.1 338.101C94.1 338.101 78.15 323.551 89 309.601z"/>
+ </g>
+ <g style="fill: #e59999">
+ <path d="M87.8 313.601C87.8 313.601 85.8 323.201 122.6 312.801C122.6 312.801 127 312.801 129.4 313.601C131.8 314.401 143.8 317.201 145.8 316.001C145.8 316.001 138.6 329.601 127 328.001C127 328.001 113.8 329.601 114.2 334.401C114.2 334.401 118.2 341.601 123 344.001C123 344.001 125.8 346.401 125.4 349.601C125 352.801 122.2 354.401 120.2 355.201C118.2 356.001 115 352.801 113.4 352.801C111.8 352.801 103.4 346.401 99 341.601C94.6 336.801 86.2 324.801 86.6 322.001C87 319.201 87.8 313.601 87.8 313.601z"/>
+ </g>
+ <g style="fill: #b26565">
+ <path d="M91 331.051C93.6 335.001 96.8 339.201 99 341.601C103.4 346.401 111.8 352.801 113.4 352.801C115 352.801 118.2 356.001 120.2 355.201C122.2 354.401 125 352.801 125.4 349.601C125.8 346.401 123 344.001 123 344.001C119.934 342.468 117.194 338.976 115.615 336.653C115.615 336.653 115.8 339.201 110.6 338.401C105.4 337.601 100.2 334.801 98.6 331.601C97 328.401 94.6 326.001 96.2 329.601C97.8 333.201 100.2 336.801 101.8 337.201C103.4 337.601 103 338.801 100.6 338.401C98.2 338.001 95.4 337.601 91 332.401z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M88.4 310.001C88.4 310.001 90.2 296.4 91.4 292.4C91.4 292.4 90.6 285.6 93 281.4C95.4 277.2 97.4 271 100.4 265.6C103.4 260.2 103.6 256.2 107.6 254.6C111.6 253 117.6 244.4 120.4 243.4C123.2 242.4 123 243.2 123 243.2C123 243.2 129.8 228.4 143.4 232.4C143.4 232.4 127.2 229.6 143 220.2C143 220.2 138.2 221.3 141.5 214.3C143.701 209.632 143.2 216.4 132.2 228.2C132.2 228.2 127.2 236.8 122 239.8C116.8 242.8 104.8 249.8 103.6 253.6C102.4 257.4 99.2 263.2 97.2 264.8C95.2 266.4 92.4 270.6 92 274C92 274 90.8 278 89.4 279.2C88 280.4 87.8 283.6 87.8 285.6C87.8 287.6 85.8 290.4 86 292.8C86 292.8 86.8 311.801 86.4 313.801L88.4 310.001z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M79.8 314.601C79.8 314.601 77.8 313.201 73.4 319.201C73.4 319.201 80.7 352.201 80.7 353.601C80.7 353.601 81.8 351.501 80.5 344.301C79.2 337.101 78.3 324.401 78.3 324.401L79.8 314.601z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M101.4 254C101.4 254 83.8 257.2 84.2 286.4L83.4 311.201C83.4 311.201 82.2 285.6 81 284C79.8 282.4 83.8 271.2 80.6 277.2C80.6 277.2 66.6 291.2 74.6 312.401C74.6 312.401 76.1 315.701 73.1 311.101C73.1 311.101 68.5 298.5 69.6 292.1C69.6 292.1 69.8 289.9 71.7 287.1C71.7 287.1 80.3 275.4 83 273.1C83 273.1 84.8 258.7 100.2 253.5C100.2 253.5 105.9 251.2 101.4 254z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M240.8 187.8C241.46 187.446 241.451 186.476 242.031 186.303C243.18 185.959 243.344 184.892 243.862 184.108C244.735 182.789 244.928 181.256 245.51 179.765C245.782 179.065 245.809 178.11 245.496 177.45C244.322 174.969 243.62 172.52 242.178 170.094C241.91 169.644 241.648 168.85 241.447 168.252C240.984 166.868 239.727 165.877 238.867 164.557C238.579 164.116 239.104 163.191 238.388 163.107C237.491 163.002 236.042 162.422 235.809 163.448C235.221 166.035 236.232 168.558 237.2 171C236.418 171.692 236.752 172.613 236.904 173.38C237.614 176.986 236.416 180.338 235.655 183.812C235.632 183.916 235.974 184.114 235.946 184.176C234.724 186.862 233.272 189.307 231.453 191.688C230.695 192.68 229.823 193.596 229.326 194.659C228.958 195.446 228.55 196.412 228.8 197.4C225.365 200.18 223.115 204.025 220.504 207.871C220.042 208.551 220.333 209.76 220.884 210.029C221.697 210.427 222.653 209.403 223.123 208.557C223.512 207.859 223.865 207.209 224.356 206.566C224.489 206.391 224.31 205.972 224.445 205.851C227.078 203.504 228.747 200.568 231.2 198.2C233.15 197.871 234.687 196.873 236.435 195.86C236.743 195.681 237.267 195.93 237.557 195.735C239.31 194.558 239.308 192.522 239.414 190.612C239.464 189.728 239.66 188.411 240.8 187.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M231.959 183.334C232.083 183.257 231.928 182.834 232.037 182.618C232.199 182.294 232.602 182.106 232.764 181.782C232.873 181.566 232.71 181.186 232.846 181.044C235.179 178.597 235.436 175.573 234.4 172.6C235.424 171.98 235.485 170.718 235.06 169.871C234.207 168.171 234.014 166.245 233.039 164.702C232.237 163.433 230.659 162.189 229.288 163.492C228.867 163.892 228.546 164.679 228.824 165.391C228.888 165.554 229.173 165.7 229.146 165.782C229.039 166.106 228.493 166.33 228.487 166.602C228.457 168.098 227.503 169.609 228.133 170.938C228.905 172.567 229.724 174.424 230.4 176.2C229.166 178.316 230.199 180.765 228.446 182.642C228.31 182.788 228.319 183.174 228.441 183.376C228.733 183.862 229.139 184.268 229.625 184.56C229.827 184.681 230.175 184.683 230.375 184.559C230.953 184.197 231.351 183.71 231.959 183.334z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M294.771 173.023C296.16 174.815 296.45 177.61 294.401 179C294.951 182.309 298.302 180.33 300.401 179.8C300.292 179.412 300.519 179.068 300.802 179.063C301.859 179.048 302.539 178.016 303.601 178.2C304.035 176.643 305.673 175.941 306.317 174.561C308.043 170.866 307.452 166.593 304.868 163.347C304.666 163.093 304.883 162.576 304.759 162.214C304.003 160.003 301.935 159.688 300.001 159C298.824 155.125 298.163 151.094 296.401 147.4C294.787 147.15 294.089 145.411 292.752 144.691C291.419 143.972 290.851 145.551 290.892 146.597C290.899 146.802 291.351 147.026 291.181 147.391C291.105 147.555 290.845 147.666 290.845 147.8C290.846 147.935 291.067 148.066 291.201 148.2C290.283 149.02 288.86 149.497 288.565 150.642C287.611 154.352 290.184 157.477 291.852 160.678C292.443 161.813 291.707 163.084 290.947 164.292C290.509 164.987 290.617 166.114 290.893 166.97C291.645 169.301 293.236 171.04 294.771 173.023z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M257.611 191.409C256.124 193.26 252.712 195.829 255.629 197.757C255.823 197.886 256.193 197.89 256.366 197.756C258.387 196.191 260.39 195.288 262.826 194.706C262.95 194.677 263.224 195.144 263.593 194.983C265.206 194.28 267.216 194.338 268.4 193C272.167 193.224 275.732 192.108 279.123 190.8C280.284 190.352 281.554 189.793 282.755 189.291C284.131 188.715 285.335 187.787 286.447 186.646C286.58 186.51 286.934 186.6 287.201 186.6C287.161 185.737 288.123 185.61 288.37 184.988C288.462 184.756 288.312 184.36 288.445 184.258C290.583 182.628 291.503 180.61 290.334 178.233C290.049 177.655 289.8 177.037 289.234 176.561C288.149 175.65 287.047 176.504 286 176.2C285.841 176.828 285.112 176.656 284.726 176.854C283.867 177.293 282.534 176.708 281.675 177.146C280.313 177.841 279.072 178.01 277.65 178.387C277.338 178.469 276.56 178.373 276.4 179C276.266 178.866 276.118 178.632 276.012 178.654C274.104 179.05 272.844 179.264 271.543 180.956C271.44 181.089 270.998 180.91 270.839 181.045C269.882 181.853 269.477 183.087 268.376 183.759C268.175 183.882 267.823 183.714 267.629 183.843C266.983 184.274 266.616 184.915 265.974 185.362C265.645 185.591 265.245 185.266 265.277 185.01C265.522 183.063 266.175 181.276 265.6 179.4C267.677 176.88 270.194 174.931 272 172.2C272.015 170.034 272.707 167.888 272.594 165.811C272.584 165.618 272.296 164.885 272.17 164.538C271.858 163.684 272.764 162.618 271.92 161.894C270.516 160.691 269.224 161.567 268.4 163C266.562 163.39 264.496 164.083 262.918 162.849C261.911 162.062 261.333 161.156 260.534 160.1C259.549 158.798 259.884 157.362 259.954 155.798C259.96 155.67 259.645 155.534 259.645 155.4C259.646 155.265 259.866 155.134 260 155C259.294 154.374 259.019 153.316 258 153C258.305 151.908 257.629 151.024 256.758 150.722C254.763 150.031 253.086 151.943 251.194 152.016C250.68 152.035 250.213 150.997 249.564 150.672C249.132 150.456 248.428 150.423 248.066 150.689C247.378 151.193 246.789 151.307 246.031 151.512C244.414 151.948 243.136 153.042 241.656 153.897C240.171 154.754 239.216 156.191 238.136 157.511C237.195 158.663 237.059 161.077 238.479 161.577C240.322 162.227 241.626 159.524 243.592 159.85C243.904 159.901 244.11 160.212 244 160.6C244.389 160.709 244.607 160.48 244.8 160.2C245.658 161.219 246.822 161.556 247.76 162.429C248.73 163.333 250.476 162.915 251.491 163.912C253.02 165.414 252.461 168.095 254.4 169.4C253.814 170.713 253.207 171.99 252.872 173.417C252.59 174.623 253.584 175.82 254.795 175.729C256.053 175.635 256.315 174.876 256.8 173.8C257.067 174.067 257.536 174.364 257.495 174.58C257.038 176.967 256.011 178.96 255.553 181.391C255.494 181.708 255.189 181.91 254.8 181.8C254.332 185.949 250.28 188.343 247.735 191.508C247.332 192.01 247.328 193.259 247.737 193.662C249.14 195.049 251.1 193.503 252.8 193C253.013 191.794 253.872 190.852 255.204 190.908C255.46 190.918 255.695 190.376 256.019 190.246C256.367 190.108 256.869 190.332 257.155 190.134C258.884 188.939 260.292 187.833 262.03 186.644C262.222 186.513 262.566 186.672 262.782 186.564C263.107 186.402 263.294 186.015 263.617 185.83C263.965 185.63 264.207 185.92 264.4 186.2C263.754 186.549 263.75 187.506 263.168 187.708C262.393 187.976 261.832 188.489 261.158 188.936C260.866 189.129 260.207 188.881 260.103 189.06C259.505 190.088 258.321 190.526 257.611 191.409z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M202.2 142C202.2 142 192.962 139.128 181.8 164.8C181.8 164.8 179.4 170 177 172C174.6 174 163.4 177.6 161.4 181.6L151 197.6C151 197.6 165.8 181.6 169 179.2C169 179.2 177 170.8 173.8 177.6C173.8 177.6 159.8 188.4 161 197.6C161 197.6 155.4 212 154.6 214C154.6 214 170.6 182 173 180.8C175.4 179.6 176.6 179.6 175.4 183.2C174.2 186.8 173.8 203.2 171 205.2C171 205.2 179 184.8 178.2 181.6C178.2 181.6 181.4 178 183.8 183.2L182.6 199.2L187 211.2C187 211.2 184.6 200 186.2 184.4C186.2 184.4 184.2 174 188.2 179.6C192.2 185.2 201.8 191.2 201.8 196C201.8 196 196.6 178.4 187.4 173.6L183.4 179.6L182.2 177.6C182.2 177.6 178.6 176.8 183 170C187.4 163.2 187 162.4 187 162.4C187 162.4 193.4 169.6 195 169.6C195 169.6 208.2 162 209.4 186.4C209.4 186.4 216.2 172 207 165.2C207 165.2 192.2 163.2 193.4 158L200.6 145.6C204.2 140.4 202.6 143.2 202.6 143.2z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M182.2 158.4C182.2 158.4 169.4 158.4 166.2 163.6L159 173.2C159 173.2 176.2 163.2 180.2 162C184.2 160.8 182.2 158.4 182.2 158.4z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M142.2 164.8C142.2 164.8 140.2 166 139.8 168.8C139.4 171.6 137 172 137.8 174.8C138.6 177.6 140.6 180 140.6 176C140.6 172 142.2 170 143 168.8C143.8 167.6 145.4 163.2 142.2 164.8z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M133.4 226C133.4 226 125 222 121.8 218.4C118.6 214.8 119.052 219.966 114.2 219.6C108.353 219.159 109.4 203.2 109.4 203.2L105.4 210.8C105.4 210.8 104.2 225.2 112.2 222.8C116.107 221.628 117.4 223.2 115.8 224C114.2 224.8 121.4 225.2 118.6 226.8C115.8 228.4 130.2 223.2 127.8 233.6L133.4 226z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M120.8 240.4C120.8 240.4 105.4 244.8 101.8 235.2C101.8 235.2 97 237.6 99.2 240.6C101.4 243.6 102.6 244 102.6 244C102.6 244 108 245.2 107.4 246C106.8 246.8 104.4 250.2 104.4 250.2C104.4 250.2 114.6 244.2 120.8 240.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M349.201 318.601C348.774 320.735 347.103 321.536 345.201 322.201C343.284 321.243 340.686 318.137 338.801 320.201C338.327 319.721 337.548 319.661 337.204 318.999C336.739 318.101 337.011 317.055 336.669 316.257C336.124 314.985 335.415 313.619 335.601 312.201C337.407 311.489 338.002 309.583 337.528 307.82C337.459 307.563 337.03 307.366 337.23 307.017C337.416 306.694 337.734 306.467 338.001 306.2C337.866 306.335 337.721 306.568 337.61 306.548C337 306.442 337.124 305.805 337.254 305.418C337.839 303.672 339.853 303.408 341.201 304.6C341.457 304.035 341.966 304.229 342.401 304.2C342.351 303.621 342.759 303.094 342.957 302.674C343.475 301.576 345.104 302.682 345.901 302.07C346.977 301.245 348.04 300.546 349.118 301.149C350.927 302.162 352.636 303.374 353.835 305.115C354.41 305.949 354.65 307.23 354.592 308.188C354.554 308.835 353.173 308.483 352.83 309.412C352.185 311.16 354.016 311.679 354.772 313.017C354.97 313.366 354.706 313.67 354.391 313.768C353.98 313.896 353.196 313.707 353.334 314.16C354.306 317.353 351.55 318.031 349.201 318.601z"/>
+ </g>
+ <g style="fill: #ffffff">
+ <path d="M339.6 338.201C339.593 336.463 337.992 334.707 339.201 333.001C339.336 333.135 339.467 333.356 339.601 333.356C339.736 333.356 339.867 333.135 340.001 333.001C341.496 335.217 345.148 336.145 345.006 338.991C344.984 339.438 343.897 340.356 344.801 341.001C342.988 342.349 342.933 344.719 342.001 346.601C340.763 346.315 339.551 345.952 338.401 345.401C338.753 343.915 338.636 342.231 339.456 340.911C339.89 340.213 339.603 339.134 339.6 338.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M173.4 329.201C173.4 329.201 156.542 339.337 170.6 324.001C179.4 314.401 189.4 308.801 189.4 308.801C189.4 308.801 199.8 304.4 203.4 303.2C207 302 222.2 296.8 225.4 296.4C228.6 296 238.2 292 245 296C251.8 300 259.8 304.4 259.8 304.4C259.8 304.4 243.4 296 239.8 298.4C236.2 300.8 229 300.4 223 303.6C223 303.6 208.2 308.001 205 310.001C201.8 312.001 191.4 323.601 189.8 322.801C188.2 322.001 190.2 321.601 191.4 318.801C192.6 316.001 190.6 314.401 182.6 320.801C174.6 327.201 173.4 329.201 173.4 329.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M180.805 323.234C180.805 323.234 182.215 310.194 190.693 311.859C190.693 311.859 198.919 307.689 201.641 305.721C201.641 305.721 209.78 304.019 211.09 303.402C229.569 294.702 244.288 299.221 244.835 298.101C245.381 296.982 265.006 304.099 268.615 308.185C269.006 308.628 258.384 302.588 248.686 300.697C240.413 299.083 218.811 300.944 207.905 306.48C204.932 307.989 195.987 313.773 193.456 313.662C190.925 313.55 180.805 323.234 180.805 323.234z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M177 348.801C177 348.801 161.8 346.401 178.6 344.801C178.6 344.801 196.6 342.801 200.6 337.601C200.6 337.601 214.2 328.401 217 328.001C219.8 327.601 249.8 320.401 250.2 318.001C250.6 315.601 256.2 315.601 257.8 316.401C259.4 317.201 258.6 318.401 255.8 319.201C253 320.001 221.8 336.401 215.4 337.601C209 338.801 197.4 346.401 192.6 347.601C187.8 348.801 177 348.801 177 348.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M196.52 341.403C196.52 341.403 187.938 340.574 196.539 339.755C196.539 339.755 205.355 336.331 207.403 333.668C207.403 333.668 214.367 328.957 215.8 328.753C217.234 328.548 231.194 324.861 231.399 323.633C231.604 322.404 265.67 309.823 270.09 313.013C273.001 315.114 263.1 313.437 253.466 317.847C252.111 318.467 218.258 333.054 214.981 333.668C211.704 334.283 205.765 338.174 203.307 338.788C200.85 339.403 196.52 341.403 196.52 341.403z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M188.6 343.601C188.6 343.601 193.8 343.201 192.6 344.801C191.4 346.401 189 345.601 189 345.601L188.6 343.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M181.4 345.201C181.4 345.201 186.6 344.801 185.4 346.401C184.2 348.001 181.8 347.201 181.8 347.201L181.4 345.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M171 346.801C171 346.801 176.2 346.401 175 348.001C173.8 349.601 171.4 348.801 171.4 348.801L171 346.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M163.4 347.601C163.4 347.601 168.6 347.201 167.4 348.801C166.2 350.401 163.8 349.601 163.8 349.601L163.4 347.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M201.8 308.001C201.8 308.001 206.2 308.001 205 309.601C203.8 311.201 200.6 310.801 200.6 310.801L201.8 308.001z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M191.8 313.601C191.8 313.601 198.306 311.46 195.8 314.801C194.6 316.401 192.2 315.601 192.2 315.601L191.8 313.601z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M180.6 318.401C180.6 318.401 185.8 318.001 184.6 319.601C183.4 321.201 181 320.401 181 320.401L180.6 318.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M173 324.401C173 324.401 178.2 324.001 177 325.601C175.8 327.201 173.4 326.401 173.4 326.401L173 324.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M166.2 329.201C166.2 329.201 171.4 328.801 170.2 330.401C169 332.001 166.6 331.201 166.6 331.201L166.2 329.201z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M205.282 335.598C205.282 335.598 212.203 335.066 210.606 337.195C209.009 339.325 205.814 338.26 205.814 338.26L205.282 335.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M215.682 330.798C215.682 330.798 222.603 330.266 221.006 332.395C219.409 334.525 216.214 333.46 216.214 333.46L215.682 330.798z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M226.482 326.398C226.482 326.398 233.403 325.866 231.806 327.995C230.209 330.125 227.014 329.06 227.014 329.06L226.482 326.398z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M236.882 321.598C236.882 321.598 243.803 321.066 242.206 323.195C240.609 325.325 237.414 324.26 237.414 324.26L236.882 321.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M209.282 303.598C209.282 303.598 216.203 303.066 214.606 305.195C213.009 307.325 209.014 307.06 209.014 307.06L209.282 303.598z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M219.282 300.398C219.282 300.398 226.203 299.866 224.606 301.995C223.009 304.125 218.614 303.86 218.614 303.86L219.282 300.398z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M196.6 340.401C196.6 340.401 201.8 340.001 200.6 341.601C199.4 343.201 197 342.401 197 342.401L196.6 340.401z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M123.4 241.2C123.4 241.2 119 250 118.6 253.2C118.6 253.2 119.4 244.4 120.6 242.4C121.8 240.4 123.4 241.2 123.4 241.2z"/>
+ </g>
+ <g style="fill: #992600">
+ <path d="M105 255.2C105 255.2 101.8 269.6 102.2 272.4C102.2 272.4 101 260.8 101.4 259.6C101.8 258.4 105 255.2 105 255.2z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M125.8 180.6L125.6 183.8L123.4 184C123.4 184 137.6 196.6 138.2 204.2C138.2 204.2 139 196 125.8 180.6z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M129.784 181.865C129.353 181.449 129.572 180.704 129.164 180.444C128.355 179.928 130.462 179.871 130.234 179.155C129.851 177.949 130.038 177.928 129.916 176.652C129.859 176.054 130.447 174.514 130.832 174.074C132.278 172.422 130.954 169.49 132.594 167.939C132.898 167.65 133.274 167.098 133.559 166.68C134.218 165.717 135.402 165.229 136.352 164.401C136.67 164.125 136.469 163.298 137.038 163.39C137.752 163.505 138.993 163.375 138.948 164.216C138.835 166.336 137.506 168.056 136.226 169.724C136.677 170.428 136.219 171.063 135.935 171.62C134.6 174.24 134.789 177.081 134.615 179.921C134.61 180.006 134.303 180.084 134.311 180.137C134.664 182.472 135.248 184.671 136.127 186.9C136.493 187.83 136.964 188.725 137.114 189.652C137.225 190.338 137.328 191.171 136.92 191.876C138.955 194.766 137.646 197.417 138.815 200.948C139.022 201.573 140.714 203.487 140.251 203.326C137.738 202.455 137.626 202.057 137.449 201.304C137.303 200.681 136.973 199.304 136.736 198.702C136.672 198.538 136.501 196.654 136.423 196.532C134.91 194.15 136.268 194.326 134.898 191.968C133.47 191.288 132.504 190.184 131.381 189.022C131.183 188.818 132.326 188.094 132.145 187.881C131.053 186.592 129.9 185.825 130.236 184.332C130.391 183.642 130.528 182.585 129.784 181.865z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M126.2 183.6C126.2 183.6 126.6 190.4 129 192C131.4 193.6 130.2 192.8 127 191.6C123.8 190.4 125 189.6 125 189.6C125 189.6 122.2 190 124.6 192C127 194 130.6 196.4 129 196.4C127.4 196.4 119.8 192.4 119.8 189.6C119.8 186.8 118.8 182.7 118.8 182.7C118.8 182.7 119.9 181.9 124.7 182C124.7 182 126.1 182.7 126.2 183.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M125.4 202.2C125.4 202.2 116.88 199.409 98.4 202.8C98.4 202.8 107.431 200.722 126.2 203C136.5 204.25 125.4 202.2 125.4 202.2z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M127.498 202.129C127.498 202.129 119.252 198.611 100.547 200.392C100.547 200.392 109.725 199.103 128.226 202.995C138.38 205.131 127.498 202.129 127.498 202.129z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M129.286 202.222C129.286 202.222 121.324 198.101 102.539 198.486C102.539 198.486 111.787 197.882 129.948 203.14C139.914 206.025 129.286 202.222 129.286 202.222z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M130.556 202.445C130.556 202.445 123.732 198.138 106.858 197.04C106.858 197.04 115.197 197.21 131.078 203.319C139.794 206.672 130.556 202.445 130.556 202.445z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M245.84 212.961C245.84 212.961 244.91 213.605 245.124 212.424C245.339 211.243 273.547 198.073 277.161 198.323C277.161 198.323 246.913 211.529 245.84 212.961z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M242.446 213.6C242.446 213.6 241.57 214.315 241.691 213.121C241.812 211.927 268.899 196.582 272.521 196.548C272.521 196.548 243.404 212.089 242.446 213.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M239.16 214.975C239.16 214.975 238.332 215.747 238.374 214.547C238.416 213.348 258.233 197.851 268.045 195.977C268.045 195.977 250.015 204.104 239.16 214.975z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M236.284 216.838C236.284 216.838 235.539 217.532 235.577 216.453C235.615 215.373 253.449 201.426 262.28 199.74C262.28 199.74 246.054 207.054 236.284 216.838z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M204.6 364.801C204.6 364.801 189.4 362.401 206.2 360.801C206.2 360.801 224.2 358.801 228.2 353.601C228.2 353.601 241.8 344.401 244.6 344.001C247.4 343.601 263.8 340.001 264.2 337.601C264.6 335.201 270.6 332.801 272.2 333.601C273.8 334.401 273.8 343.601 271 344.401C268.2 345.201 249.4 352.401 243 353.601C236.6 354.801 225 362.401 220.2 363.601C215.4 364.801 204.6 364.801 204.6 364.801z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M277.6 327.401C277.6 327.401 274.6 329.001 273.4 331.601C273.4 331.601 267 342.201 252.8 345.401C252.8 345.401 229.8 354.401 222 356.401C222 356.401 208.6 361.401 201.2 360.601C201.2 360.601 194.2 360.801 200.4 362.401C200.4 362.401 220.6 360.401 224 358.601C224 358.601 239.6 353.401 242.6 350.801C245.6 348.201 263.8 343.201 266 341.201C268.2 339.201 278 330.801 277.6 327.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M218.882 358.911C218.882 358.911 224.111 358.685 222.958 360.234C221.805 361.784 219.357 360.91 219.357 360.91L218.882 358.911z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M211.68 360.263C211.68 360.263 216.908 360.037 215.756 361.586C214.603 363.136 212.155 362.263 212.155 362.263L211.68 360.263z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M201.251 361.511C201.251 361.511 206.48 361.284 205.327 362.834C204.174 364.383 201.726 363.51 201.726 363.51L201.251 361.511z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M193.617 362.055C193.617 362.055 198.846 361.829 197.693 363.378C196.54 364.928 194.092 364.054 194.092 364.054L193.617 362.055z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M235.415 351.513C235.415 351.513 242.375 351.212 240.84 353.274C239.306 355.336 236.047 354.174 236.047 354.174L235.415 351.513z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M245.73 347.088C245.73 347.088 251.689 343.787 251.155 348.849C250.885 351.405 246.362 349.749 246.362 349.749L245.73 347.088z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M254.862 344.274C254.862 344.274 262.021 340.573 260.287 346.035C259.509 348.485 255.493 346.935 255.493 346.935L254.862 344.274z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M264.376 339.449C264.376 339.449 268.735 334.548 269.801 341.21C270.207 343.748 265.008 342.11 265.008 342.11L264.376 339.449z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M226.834 355.997C226.834 355.997 232.062 355.77 230.91 357.32C229.757 358.869 227.308 357.996 227.308 357.996L226.834 355.997z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M262.434 234.603C262.434 234.603 261.708 235.268 261.707 234.197C261.707 233.127 279.191 219.863 288.034 218.479C288.034 218.479 271.935 225.208 262.434 234.603z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M265.4 298.4C265.4 298.4 287.401 320.801 296.601 324.401C296.601 324.401 305.801 335.601 301.801 361.601C301.801 361.601 298.601 369.201 295.401 348.401C295.401 348.401 298.601 323.201 287.401 339.201C287.401 339.201 279 329.301 285.4 329.601C285.4 329.601 288.601 331.601 289.001 330.001C289.401 328.401 281.4 314.801 264.2 300.4C247 286 265.4 298.4 265.4 298.4z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M207 337.201C207 337.201 206.8 335.401 208.6 336.201C210.4 337.001 304.601 343.201 336.201 367.201C336.201 367.201 291.001 344.001 207 337.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M217.4 332.801C217.4 332.801 217.2 331.001 219 331.801C220.8 332.601 357.401 331.601 381.001 364.001C381.001 364.001 359.001 338.801 217.4 332.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M229 328.801C229 328.801 228.8 327.001 230.6 327.801C232.4 328.601 405.801 315.601 429.401 348.001C429.401 348.001 419.801 322.401 229 328.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M239 324.001C239 324.001 238.8 322.201 240.6 323.001C242.4 323.801 364.601 285.2 388.201 317.601C388.201 317.601 374.801 293 239 324.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M181 346.801C181 346.801 180.8 345.001 182.6 345.801C184.4 346.601 202.2 348.801 204.2 387.601C204.2 387.601 197 345.601 181 346.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M172.2 348.401C172.2 348.401 172 346.601 173.8 347.401C175.6 348.201 189.8 343.601 187 382.401C187 382.401 188.2 347.201 172.2 348.401z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M164.2 348.801C164.2 348.801 164 347.001 165.8 347.801C167.6 348.601 183 349.201 170.6 371.601C170.6 371.601 180.2 347.601 164.2 348.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M211.526 304.465C211.526 304.465 211.082 306.464 212.631 305.247C228.699 292.622 261.141 233.72 316.826 228.086C316.826 228.086 278.518 215.976 211.526 304.465z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M222.726 302.665C222.726 302.665 221.363 301.472 223.231 300.847C225.099 300.222 337.541 227.72 376.826 235.686C376.826 235.686 349.719 228.176 222.726 302.665z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M201.885 308.767C201.885 308.767 201.376 310.366 203.087 309.39C212.062 304.27 215.677 247.059 259.254 245.804C259.254 245.804 226.843 231.09 201.885 308.767z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M181.962 319.793C181.962 319.793 180.885 321.079 182.838 320.825C193.084 319.493 214.489 278.222 258.928 283.301C258.928 283.301 226.962 268.955 181.962 319.793z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M193.2 313.667C193.2 313.667 192.389 315.136 194.258 314.511C204.057 311.237 217.141 266.625 261.729 263.078C261.729 263.078 227.603 255.135 193.2 313.667z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M174.922 324.912C174.922 324.912 174.049 325.954 175.631 325.748C183.93 324.669 201.268 291.24 237.264 295.354C237.264 295.354 211.371 283.734 174.922 324.912z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M167.323 330.821C167.323 330.821 166.318 331.866 167.909 331.748C172.077 331.439 202.715 298.36 221.183 313.862C221.183 313.862 209.168 295.139 167.323 330.821z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M236.855 298.898C236.855 298.898 235.654 297.543 237.586 297.158C239.518 296.774 360.221 239.061 398.184 251.927C398.184 251.927 372.243 241.053 236.855 298.898z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M203.4 363.201C203.4 363.201 203.2 361.401 205 362.201C206.8 363.001 222.2 363.601 209.8 386.001C209.8 386.001 219.4 362.001 203.4 363.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M213.8 361.601C213.8 361.601 213.6 359.801 215.4 360.601C217.2 361.401 235 363.601 237 402.401C237 402.401 229.8 360.401 213.8 361.601z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M220.6 360.001C220.6 360.001 220.4 358.201 222.2 359.001C224 359.801 248.6 363.201 272.2 395.601C272.2 395.601 236.6 358.801 220.6 360.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M228.225 357.972C228.225 357.972 227.788 356.214 229.678 356.768C231.568 357.322 252.002 355.423 290.099 389.599C290.099 389.599 243.924 354.656 228.225 357.972z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M238.625 353.572C238.625 353.572 238.188 351.814 240.078 352.368C241.968 352.922 276.802 357.423 328.499 392.399C328.499 392.399 254.324 350.256 238.625 353.572z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M198.2 342.001C198.2 342.001 198 340.201 199.8 341.001C201.6 341.801 255 344.401 285.4 371.201C285.4 371.201 250.499 346.426 198.2 342.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M188.2 346.001C188.2 346.001 188 344.201 189.8 345.001C191.6 345.801 216.2 349.201 239.8 381.601C239.8 381.601 204.2 344.801 188.2 346.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M249.503 348.962C249.503 348.962 248.938 347.241 250.864 347.655C252.79 348.068 287.86 350.004 341.981 381.098C341.981 381.098 264.317 346.704 249.503 348.962z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M257.903 346.562C257.903 346.562 257.338 344.841 259.264 345.255C261.19 345.668 296.26 347.604 350.381 378.698C350.381 378.698 273.317 343.904 257.903 346.562z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+ <path d="M267.503 341.562C267.503 341.562 266.938 339.841 268.864 340.255C270.79 340.668 313.86 345.004 403.582 379.298C403.582 379.298 282.917 338.904 267.503 341.562z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M156.2 348.401C156.2 348.401 161.4 348.001 160.2 349.601C159 351.201 156.6 350.401 156.6 350.401L156.2 348.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M187 362.401C187 362.401 192.2 362.001 191 363.601C189.8 365.201 187.4 364.401 187.4 364.401L187 362.401z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M178.2 362.001C178.2 362.001 183.4 361.601 182.2 363.201C181 364.801 178.6 364.001 178.6 364.001L178.2 362.001z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M82.831 350.182C82.831 350.182 87.876 351.505 86.218 352.624C84.561 353.744 82.554 352.202 82.554 352.202L82.831 350.182z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M84.831 340.582C84.831 340.582 89.876 341.905 88.218 343.024C86.561 344.144 84.554 342.602 84.554 342.602L84.831 340.582z"/>
+ </g>
+ <g style="fill: #000000">
+ <path d="M77.631 336.182C77.631 336.182 82.676 337.505 81.018 338.624C79.361 339.744 77.354 338.202 77.354 338.202L77.631 336.182z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M157.4 411.201C157.4 411.201 155.8 411.201 151.8 413.201C149.8 413.201 138.6 416.801 133 426.801C133 426.801 145.4 417.201 157.4 411.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M245.116 503.847C245.257 504.105 245.312 504.525 245.604 504.542C246.262 504.582 247.495 504.883 247.37 504.247C246.522 499.941 245.648 495.004 241.515 493.197C240.876 492.918 239.434 493.331 239.36 494.215C239.233 495.739 239.116 497.088 239.425 498.554C239.725 499.975 241.883 499.985 242.8 498.601C243.736 500.273 244.168 502.116 245.116 503.847z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M234.038 508.581C234.786 509.994 234.659 511.853 236.074 512.416C236.814 512.71 238.664 511.735 238.246 510.661C237.444 508.6 237.056 506.361 235.667 504.55C235.467 504.288 235.707 503.755 235.547 503.427C234.953 502.207 233.808 501.472 232.4 501.801C231.285 504.004 232.433 506.133 233.955 507.842C234.091 507.994 233.925 508.37 234.038 508.581z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M194.436 503.391C194.328 503.014 194.29 502.551 194.455 502.23C194.986 501.197 195.779 500.075 195.442 499.053C195.094 497.997 193.978 498.179 193.328 498.748C192.193 499.742 192.144 501.568 191.453 502.927C191.257 503.313 191.308 503.886 190.867 504.277C190.393 504.698 189.953 506.222 190.049 506.793C190.102 507.106 189.919 517.014 190.141 516.751C190.76 516.018 193.81 506.284 193.879 505.392C193.936 504.661 194.668 504.196 194.436 503.391z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M168.798 496.599C171.432 494.1 174.222 491.139 173.78 487.427C173.664 486.451 171.889 486.978 171.702 487.824C170.9 491.449 168.861 494.11 166.293 496.502C164.097 498.549 162.235 504.893 162 505.401C165.697 500.145 167.954 497.399 168.798 496.599z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M155.224 490.635C155.747 490.265 155.445 489.774 155.662 489.442C156.615 487.984 157.916 486.738 157.934 485C157.937 484.723 157.559 484.414 157.224 484.638C156.947 484.822 156.605 484.952 156.497 485.082C154.467 487.531 153.067 490.202 151.624 493.014C151.441 493.371 150.297 497.862 150.61 497.973C150.849 498.058 152.569 493.877 152.779 493.763C154.042 493.077 154.054 491.462 155.224 490.635z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M171.957 510.179C172.401 509.31 173.977 508.108 173.864 507.219C173.746 506.291 174.214 504.848 173.302 505.536C172.045 506.484 168.596 507.833 168.326 513.641C168.3 514.212 171.274 511.519 171.957 510.179z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M186.4 493.001C186.8 492.333 187.508 492.806 187.967 492.543C188.615 492.171 189.226 491.613 189.518 490.964C190.488 488.815 192.257 486.995 192.4 484.601C190.909 483.196 190.23 485.236 189.6 486.201C188.277 484.554 187.278 486.428 185.978 486.947C185.908 486.975 185.695 486.628 185.62 486.655C184.443 487.095 183.763 488.176 182.765 488.957C182.594 489.091 182.189 488.911 182.042 489.047C181.39 489.65 180.417 489.975 180.137 490.657C179.027 493.364 175.887 495.459 174 503.001C174.381 503.91 178.512 496.359 178.999 495.661C179.835 494.465 179.953 497.322 181.229 496.656C181.28 496.629 181.466 496.867 181.6 497.001C181.794 496.721 182.012 496.492 182.4 496.601C182.4 496.201 182.266 495.645 182.467 495.486C183.704 494.509 183.62 493.441 184.4 492.201C184.858 492.99 185.919 492.271 186.4 493.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M246.2 547.401C246.2 547.401 253.6 527.001 249.2 515.801C249.2 515.801 260.6 537.401 256 548.601C256 548.601 255.6 538.201 251.6 533.201C251.6 533.201 247.6 546.001 246.2 547.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M231.4 544.801C231.4 544.801 236.8 536.001 228.8 517.601C228.8 517.601 228 538.001 221.2 549.001C221.2 549.001 235.4 528.801 231.4 544.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M221.4 542.801C221.4 542.801 221.2 522.801 221.6 519.801C221.6 519.801 217.8 536.401 207.6 546.001C207.6 546.001 222 534.001 221.4 542.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M211.8 510.801C211.8 510.801 217.8 524.401 207.8 542.801C207.8 542.801 214.2 530.601 209.4 523.601C209.4 523.601 212 520.201 211.8 510.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M192.6 542.401C192.6 542.401 191.6 526.801 193.4 524.601C193.4 524.601 193.6 518.201 193.2 517.201C193.2 517.201 197.2 511.001 197.4 518.401C197.4 518.401 198.8 526.201 201.6 530.801C201.6 530.801 205.2 536.201 205 542.601C205 542.601 195 512.401 192.6 542.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M189 514.801C189 514.801 182.4 525.601 180.6 544.601C180.6 544.601 179.2 538.401 183 524.001C183 524.001 187.2 508.601 189 514.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M167.2 534.601C167.2 534.601 172.2 529.201 173.6 524.201C173.6 524.201 177.2 508.401 170.8 517.001C170.8 517.001 171 525.001 162.8 532.401C162.8 532.401 167.6 530.001 167.2 534.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M161.4 529.601C161.4 529.601 164.8 512.201 165.6 511.401C165.6 511.401 167.4 508.001 164.6 511.201C164.6 511.201 155.8 530.401 151.8 537.001C151.8 537.001 159.8 527.801 161.4 529.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M155.6 513.001C155.6 513.001 167.2 490.601 145.4 516.401C145.4 516.401 156.4 506.601 155.6 513.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M140.2 498.401C140.2 498.401 145 479.601 147.6 479.801C147.6 479.801 155.8 470.801 149.2 481.401C149.2 481.401 143.2 491.001 143.8 500.801C143.8 500.801 143.2 491.201 140.2 498.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M470.5 487C470.5 487 458.5 477 456 473.5C456 473.5 469.5 492 469.5 499C469.5 499 472 491.5 470.5 487z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M476 465C476 465 455 450 451.5 442.5C451.5 442.5 478 472 478 476.5C478 476.5 478.5 467.5 476 465z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M493 311C493 311 481 303 479.5 305C479.5 305 490 311.5 492.5 320C492.5 320 491 311 493 311z"/>
+ </g>
+ <g style="fill: #cccccc">
+ <path d="M501.5 391.5L484 379.5C484 379.5 503 396.5 503.5 400.5L501.5 391.5z"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M110.75 369L132.75 373.75"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M161 531C161 531 160.5 527.5 151.5 538"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M166.5 536C166.5 536 168.5 529.5 162 534"/>
+ </g>
+ <g style="stroke:#000000">
+ <path d="M220.5 544.5C220.5 544.5 222 533.5 210.5 546.5"/>
+ </g>
+</svg>
diff --git a/test/threads/a.example.org.xml b/test/threads/a.example.org.xml
new file mode 100644
index 0000000..3de2c45
--- /dev/null
+++ b/test/threads/a.example.org.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<rewriteSystem systemIdStartString="http://example.org/a" rewritePrefix="a"/>
+<nextCatalog catalog="c.example.org.xml"/>
+</catalog>
diff --git a/test/threads/a/a.dtd b/test/threads/a/a.dtd
new file mode 100644
index 0000000..b298085
--- /dev/null
+++ b/test/threads/a/a.dtd
@@ -0,0 +1 @@
+<!ELEMENT a (#PCDATA)>
diff --git a/test/threads/abc.dtd b/test/threads/abc.dtd
new file mode 100644
index 0000000..b7a08fe
--- /dev/null
+++ b/test/threads/abc.dtd
@@ -0,0 +1,7 @@
+<!ENTITY % a SYSTEM "http://example.org/a/a.dtd">
+%a;
+<!ENTITY % b SYSTEM "http://example.org/b/b.dtd">
+%b;
+<!ENTITY % c SYSTEM "http://example.org/c/c.dtd">
+%c;
+<!ELEMENT abc (a, b, c)>
diff --git a/test/threads/abc.xml b/test/threads/abc.xml
new file mode 100644
index 0000000..ee98144
--- /dev/null
+++ b/test/threads/abc.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE abc SYSTEM "http://example.org/abc.dtd">
+<abc>
+ <a>Let's use predefined entites &amp; &lt; &gt;</a>
+ <b>Let's use a DTD defined entity &bent;</b>
+ <c/>
+</abc>
+
diff --git a/test/threads/acb.dtd b/test/threads/acb.dtd
new file mode 100644
index 0000000..9fc77c5
--- /dev/null
+++ b/test/threads/acb.dtd
@@ -0,0 +1,7 @@
+<!ENTITY % a SYSTEM "http://example.org/a/a.dtd">
+%a;
+<!ENTITY % c SYSTEM "http://example.org/c/c.dtd">
+%c;
+<!ENTITY % b SYSTEM "http://example.org/b/b.dtd">
+%b;
+<!ELEMENT acb (a, c, b)>
diff --git a/test/threads/acb.xml b/test/threads/acb.xml
new file mode 100644
index 0000000..a14e362
--- /dev/null
+++ b/test/threads/acb.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE acb SYSTEM "http://example.org/acb.dtd">
+<acb>
+ <a>Let's use predefined entites &amp; &lt; &gt;</a>
+ <c/>
+ <b>Let's use a DTD defined entity &bent;</b>
+</acb>
+
diff --git a/test/threads/b.example.org.xml b/test/threads/b.example.org.xml
new file mode 100644
index 0000000..2dfe5fc
--- /dev/null
+++ b/test/threads/b.example.org.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<rewriteSystem systemIdStartString="http://example.org/b" rewritePrefix="b"/>
+<nextCatalog catalog="c.example.org.xml"/>
+</catalog>
diff --git a/test/threads/b/b.dtd b/test/threads/b/b.dtd
new file mode 100644
index 0000000..59de88e
--- /dev/null
+++ b/test/threads/b/b.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT b (#PCDATA)>
+<!ENTITY bent "the b entity">
diff --git a/test/threads/bac.dtd b/test/threads/bac.dtd
new file mode 100644
index 0000000..d36a4e6
--- /dev/null
+++ b/test/threads/bac.dtd
@@ -0,0 +1,7 @@
+<!ENTITY % b SYSTEM "http://example.org/b/b.dtd">
+%b;
+<!ENTITY % a SYSTEM "http://example.org/a/a.dtd">
+%a;
+<!ENTITY % c SYSTEM "http://example.org/c/c.dtd">
+%c;
+<!ELEMENT bac (b, a, c)>
diff --git a/test/threads/bac.xml b/test/threads/bac.xml
new file mode 100644
index 0000000..63d6efc
--- /dev/null
+++ b/test/threads/bac.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE bac SYSTEM "http://example.org/bac.dtd">
+<bac>
+ <b>Let's use a DTD defined entity &bent;</b>
+ <a>Let's use predefined entites &amp; &lt; &gt;</a>
+ <c/>
+</bac>
+
diff --git a/test/threads/bca.dtd b/test/threads/bca.dtd
new file mode 100644
index 0000000..239192a
--- /dev/null
+++ b/test/threads/bca.dtd
@@ -0,0 +1,7 @@
+<!ENTITY % b SYSTEM "http://example.org/b/b.dtd">
+%b;
+<!ENTITY % c SYSTEM "http://example.org/c/c.dtd">
+%c;
+<!ENTITY % a SYSTEM "http://example.org/a/a.dtd">
+%a;
+<!ELEMENT bca (b, c, a)>
diff --git a/test/threads/bca.xml b/test/threads/bca.xml
new file mode 100644
index 0000000..ce60d01
--- /dev/null
+++ b/test/threads/bca.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE bca SYSTEM "http://example.org/bca.dtd">
+<bca>
+ <b>Let's use a DTD defined entity &bent;</b>
+ <c/>
+ <a>Let's use predefined entites &amp; &lt; &gt;</a>
+</bca>
+
diff --git a/test/threads/c.example.org.xml b/test/threads/c.example.org.xml
new file mode 100644
index 0000000..41348b1
--- /dev/null
+++ b/test/threads/c.example.org.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<rewriteSystem systemIdStartString="http://example.org/c" rewritePrefix="c"/>
+<rewriteSystem systemIdStartString="http://example.org/" rewritePrefix="./"/>
+</catalog>
diff --git a/test/threads/c/c.dtd b/test/threads/c/c.dtd
new file mode 100644
index 0000000..7248a5b
--- /dev/null
+++ b/test/threads/c/c.dtd
@@ -0,0 +1 @@
+<!ELEMENT c EMPTY>
diff --git a/test/threads/cab.dtd b/test/threads/cab.dtd
new file mode 100644
index 0000000..0a62e91
--- /dev/null
+++ b/test/threads/cab.dtd
@@ -0,0 +1,7 @@
+<!ENTITY % c SYSTEM "http://example.org/c/c.dtd">
+%c;
+<!ENTITY % a SYSTEM "http://example.org/a/a.dtd">
+%a;
+<!ENTITY % b SYSTEM "http://example.org/b/b.dtd">
+%b;
+<!ELEMENT cab (c, a, b)>
diff --git a/test/threads/cab.xml b/test/threads/cab.xml
new file mode 100644
index 0000000..a1631d0
--- /dev/null
+++ b/test/threads/cab.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE cab SYSTEM "http://example.org/cab.dtd">
+<cab>
+ <c/>
+ <a>Let's use predefined entites &amp; &lt; &gt;</a>
+ <b>Let's use a DTD defined entity &bent;</b>
+</cab>
+
diff --git a/test/threads/cba.dtd b/test/threads/cba.dtd
new file mode 100644
index 0000000..71b96b4
--- /dev/null
+++ b/test/threads/cba.dtd
@@ -0,0 +1,7 @@
+<!ENTITY % c SYSTEM "http://example.org/c/c.dtd">
+%c;
+<!ENTITY % b SYSTEM "http://example.org/b/b.dtd">
+%b;
+<!ENTITY % a SYSTEM "http://example.org/a/a.dtd">
+%a;
+<!ELEMENT cba (c, b, a)>
diff --git a/test/threads/cba.xml b/test/threads/cba.xml
new file mode 100644
index 0000000..78708e4
--- /dev/null
+++ b/test/threads/cba.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE cba SYSTEM "http://example.org/cba.dtd">
+<cba>
+ <c/>
+ <b>Let's use a DTD defined entity &bent;</b>
+ <a>Let's use predefined entites &amp; &lt; &gt;</a>
+</cba>
+
diff --git a/test/threads/complex.xml b/test/threads/complex.xml
new file mode 100644
index 0000000..0174e90
--- /dev/null
+++ b/test/threads/complex.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<delegateSystem systemIdStartString="http://example.org/"
+ catalog="example.org.xml"/>
+</catalog>
diff --git a/test/threads/example.org.xml b/test/threads/example.org.xml
new file mode 100644
index 0000000..21c2602
--- /dev/null
+++ b/test/threads/example.org.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+<delegateSystem systemIdStartString="http://example.org/a"
+ catalog="a.example.org.xml"/>
+<delegateSystem systemIdStartString="http://example.org/b"
+ catalog="b.example.org.xml"/>
+<nextCatalog catalog="c.example.org.xml"/>
+</catalog>
diff --git a/test/threads/invalid.xml b/test/threads/invalid.xml
new file mode 100644
index 0000000..9123275
--- /dev/null
+++ b/test/threads/invalid.xml
@@ -0,0 +1,2 @@
+<!-- Well formed but invalid -->
+<doc/>
diff --git a/test/title.xml b/test/title.xml
new file mode 100644
index 0000000..1b3fe07
--- /dev/null
+++ b/test/title.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<title>my title</title>
diff --git a/test/tstblanks.xml b/test/tstblanks.xml
new file mode 100644
index 0000000..7c5a23d
--- /dev/null
+++ b/test/tstblanks.xml
@@ -0,0 +1,495 @@
+<?xml version="1.0"?>
+<a
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test="passed">content</a>
diff --git a/test/utf16bebom.xml b/test/utf16bebom.xml
new file mode 100644
index 0000000..8c402e0
--- /dev/null
+++ b/test/utf16bebom.xml
Binary files differ
diff --git a/test/utf16bom.xml b/test/utf16bom.xml
new file mode 100644
index 0000000..1916dc1
--- /dev/null
+++ b/test/utf16bom.xml
Binary files differ
diff --git a/test/utf16lebom.xml b/test/utf16lebom.xml
new file mode 100644
index 0000000..933640c
--- /dev/null
+++ b/test/utf16lebom.xml
Binary files differ
diff --git a/test/utf8bom.xml b/test/utf8bom.xml
new file mode 100644
index 0000000..b4cdff0
--- /dev/null
+++ b/test/utf8bom.xml
@@ -0,0 +1 @@
+<foo/>
diff --git a/test/valid/127772.xml b/test/valid/127772.xml
new file mode 100644
index 0000000..ba39194
--- /dev/null
+++ b/test/valid/127772.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE a SYSTEM "dtds/127772.dtd">
+
+<a>
+ <b xlink:href="http://fakeurl.net">b text</b>
+</a>
+
diff --git a/test/valid/694228.xml b/test/valid/694228.xml
new file mode 100644
index 0000000..057c926
--- /dev/null
+++ b/test/valid/694228.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE root SYSTEM "dtds/694228.dtd">
+<root>
+ &entity;
+</root>
diff --git a/test/valid/REC-xml-19980210.xml b/test/valid/REC-xml-19980210.xml
new file mode 100644
index 0000000..4e93fb3
--- /dev/null
+++ b/test/valid/REC-xml-19980210.xml
@@ -0,0 +1,4197 @@
+<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
+<!DOCTYPE spec SYSTEM "dtds/spec.dtd" [
+
+<!-- LAST TOUCHED BY: Tim Bray, 8 February 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "10 February 1998">
+<!ENTITY iso6.doc.date "19980210">
+<!ENTITY w3c.doc.date "02-Feb-1998">
+<!ENTITY draft.day '10'>
+<!ENTITY draft.month 'February'>
+<!ENTITY draft.year '1998'>
+
+<!ENTITY WebSGML
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash "--"> <!-- &#x2014, but nsgmls doesn't grok hex -->
+<!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp " "> -->
+<!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+
+<!-- audience and distribution status: for use at publication time -->
+<!ENTITY doc.audience "public review and discussion">
+<!ENTITY doc.distribution "may be distributed freely, as long as
+all text and legal notices remain intact">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>Extensible Markup Language (XML) 1.0</title>
+<version></version>
+<w3c-designation>REC-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>W3C Recommendation</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+
+<publoc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf</loc>
+<loc href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps</loc>
+</publoc>
+<latestloc>
+<loc href="http://www.w3.org/TR/REC-xml">
+http://www.w3.org/TR/REC-xml</loc>
+</latestloc>
+<prevlocs>
+<loc href="http://www.w3.org/TR/PR-xml-971208">
+http://www.w3.org/TR/PR-xml-971208</loc>
+<!--
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>-->
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<abstract>
+<p>The Extensible Markup Language (XML) is a subset of
+SGML that is completely described in this document. Its goal is to
+enable generic SGML to be served, received, and processed on the Web
+in the way that is now possible with HTML. XML has been designed for
+ease of implementation and for interoperability with both SGML and
+HTML.</p>
+</abstract>
+<status>
+<p>This document has been reviewed by W3C Members and
+other interested parties and has been endorsed by the
+Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited
+as a normative reference from another document. W3C's
+role in making the Recommendation is to draw attention
+to the specification and to promote its widespread
+deployment. This enhances the functionality and
+interoperability of the Web.</p>
+<p>
+This document specifies a syntax created by subsetting an existing,
+widely used international text processing standard (Standard
+Generalized Markup Language, ISO 8879:1986(E) as amended and
+corrected) for use on the World Wide Web. It is a product of the W3C
+XML Activity, details of which can be found at <loc
+href='http://www.w3.org/XML'>http://www.w3.org/XML</loc>. A list of
+current W3C Recommendations and other technical documents can be found
+at <loc href='http://www.w3.org/TR'>http://www.w3.org/TR</loc>.
+</p>
+<p>This specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+</p>
+<p>The list of known errors in this specification is
+available at
+<loc href='http://www.w3.org/XML/xml-19980210-errata'>http://www.w3.org/XML/xml-19980210-errata</loc>.</p>
+<p>Please report errors in this document to
+<loc href='mailto:xml-editor@w3.org'>xml-editor@w3.org</loc>.
+</p>
+</status>
+
+
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XML Working Group, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id='sec-intro'>
+<head>Introduction</head>
+<p>Extensible Markup Language, abbreviated XML, describes a class of
+data objects called <termref def="dt-xml-doc">XML documents</termref> and
+partially describes the behavior of
+computer programs which process them. XML is an application profile or
+restricted form of SGML, the Standard Generalized Markup
+Language <bibref ref='ISO8879'/>.
+By construction, XML documents
+are conforming SGML documents.
+</p>
+<p>XML documents are made up of storage units called <termref
+def="dt-entity">entities</termref>, which contain either parsed
+or unparsed data.
+Parsed data is made up of <termref def="dt-character">characters</termref>,
+some
+of which form <termref def="dt-chardata">character data</termref>,
+and some of which form <termref def="dt-markup">markup</termref>.
+Markup encodes a description of the document's storage layout and
+logical structure. XML provides a mechanism to impose constraints on
+the storage layout and logical structure.</p>
+<p><termdef id="dt-xml-proc" term="XML Processor">A software module
+called an <term>XML processor</term> is used to read XML documents
+and provide access to their content and structure.</termdef> <termdef
+id="dt-app" term="Application">It is assumed that an XML processor is
+doing its work on behalf of another module, called the
+<term>application</term>.</termdef> This specification describes the
+required behavior of an XML processor in terms of how it must read XML
+data and the information it must provide to the application.</p>
+
+<div2 id='sec-origin-goals'>
+<head>Origin and Goals</head>
+<p>XML was developed by an XML Working Group (originally known as the
+SGML Editorial Review Board) formed under the auspices of the World
+Wide Web Consortium (W3C) in 1996.
+It was chaired by Jon Bosak of Sun
+Microsystems with the active participation of an XML Special
+Interest Group (previously known as the SGML Working Group) also
+organized by the W3C. The membership of the XML Working Group is given
+in an appendix. Dan Connolly served as the WG's contact with the W3C.
+</p>
+<p>The design goals for XML are:<olist>
+<item><p>XML shall be straightforwardly usable over the
+Internet.</p></item>
+<item><p>XML shall support a wide variety of applications.</p></item>
+<item><p>XML shall be compatible with SGML.</p></item>
+<item><p>It shall be easy to write programs which process XML
+documents.</p></item>
+<item><p>The number of optional features in XML is to be kept to the
+absolute minimum, ideally zero.</p></item>
+<item><p>XML documents should be human-legible and reasonably
+clear.</p></item>
+<item><p>The XML design should be prepared quickly.</p></item>
+<item><p>The design of XML shall be formal and concise.</p></item>
+<item><p>XML documents shall be easy to create.</p></item>
+<item><p>Terseness in XML markup is of minimal importance.</p></item></olist>
+</p>
+<p>This specification,
+together with associated standards
+(Unicode and ISO/IEC 10646 for characters,
+Internet RFC 1766 for language identification tags,
+ISO 639 for language name codes, and
+ISO 3166 for country name codes),
+provides all the information necessary to understand
+XML Version &XML.version;
+and construct computer programs to process it.</p>
+<p>This version of the XML specification
+<!-- is for &doc.audience;.-->
+&doc.distribution;.</p>
+
+</div2>
+
+
+
+
+<div2 id='sec-terminology'>
+<head>Terminology</head>
+
+<p>The terminology used to describe XML documents is defined in the body of
+this specification.
+The terms defined in the following list are used in building those
+definitions and in describing the actions of an XML processor:
+<glist>
+<gitem>
+<label>may</label>
+<def><p><termdef id="dt-may" term="May">Conforming documents and XML
+processors are permitted to but need not behave as
+described.</termdef></p></def>
+</gitem>
+<gitem>
+<label>must</label>
+<def><p>Conforming documents and XML processors
+are required to behave as described; otherwise they are in error.
+<!-- do NOT change this! this is what defines a violation of
+a 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>error</label>
+<def><p><termdef id='dt-error' term='Error'
+>A violation of the rules of this
+specification; results are
+undefined. Conforming software may detect and report an error and may
+recover from it.</termdef></p></def>
+</gitem>
+<gitem>
+<label>fatal error</label>
+<def><p><termdef id="dt-fatal" term="Fatal Error">An error
+which a conforming <termref def="dt-xml-proc">XML processor</termref>
+must detect and report to the application.
+After encountering a fatal error, the
+processor may continue
+processing the data to search for further errors and may report such
+errors to the application. In order to support correction of errors,
+the processor may make unprocessed data from the document (with
+intermingled character data and markup) available to the application.
+Once a fatal error is detected, however, the processor must not
+continue normal processing (i.e., it must not
+continue to pass character data and information about the document's
+logical structure to the application in the normal way).
+</termdef></p></def>
+</gitem>
+<gitem>
+<label>at user option</label>
+<def><p>Conforming software may or must (depending on the modal verb in the
+sentence) behave as described; if it does, it must
+provide users a means to enable or disable the behavior
+described.</p></def>
+</gitem>
+<gitem>
+<label>validity constraint</label>
+<def><p>A rule which applies to all
+<termref def="dt-valid">valid</termref> XML documents.
+Violations of validity constraints are errors; they must, at user option,
+be reported by
+<termref def="dt-validating">validating XML processors</termref>.</p></def>
+</gitem>
+<gitem>
+<label>well-formedness constraint</label>
+<def><p>A rule which applies to all <termref
+def="dt-wellformed">well-formed</termref> XML documents.
+Violations of well-formedness constraints are
+<termref def="dt-fatal">fatal errors</termref>.</p></def>
+</gitem>
+
+<gitem>
+<label>match</label>
+<def><p><termdef id="dt-match" term="match">(Of strings or names:)
+Two strings or names being compared must be identical.
+Characters with multiple possible representations in ISO/IEC 10646 (e.g.
+characters with
+both precomposed and base+diacritic forms) match only if they have the
+same representation in both strings.
+At user option, processors may normalize such characters to
+some canonical form.
+No case folding is performed.
+(Of strings and rules in the grammar:)
+A string matches a grammatical production if it belongs to the
+language generated by that production.
+(Of content and content models:)
+An element matches its declaration when it conforms
+in the fashion described in the constraint
+<specref ref='elementvalid'/>.
+</termdef>
+</p></def>
+</gitem>
+<gitem>
+<label>for compatibility</label>
+<def><p><termdef id="dt-compat" term="For Compatibility">A feature of
+XML included solely to ensure that XML remains compatible with SGML.
+</termdef></p></def>
+</gitem>
+<gitem>
+<label>for interoperability</label>
+<def><p><termdef id="dt-interop" term="For interoperability">A
+non-binding recommendation included to increase the chances that XML
+documents can be processed by the existing installed base of SGML
+processors which predate the
+&WebSGML;.</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+
+
+</div1>
+<!-- &Docs; -->
+
+<div1 id='sec-documents'>
+<head>Documents</head>
+
+<p><termdef id="dt-xml-doc" term="XML Document">
+A data object is an
+<term>XML document</term> if it is
+<termref def="dt-wellformed">well-formed</termref>, as
+defined in this specification.
+A well-formed XML document may in addition be
+<termref def="dt-valid">valid</termref> if it meets certain further
+constraints.</termdef></p>
+
+<p>Each XML document has both a logical and a physical structure.
+Physically, the document is composed of units called <termref
+def="dt-entity">entities</termref>. An entity may <termref
+def="dt-entref">refer</termref> to other entities to cause their
+inclusion in the document. A document begins in a "root" or <termref
+def="dt-docent">document entity</termref>.
+Logically, the document is composed of declarations, elements,
+comments,
+character references, and
+processing
+instructions, all of which are indicated in the document by explicit
+markup.
+The logical and physical structures must nest properly, as described
+in <specref ref='wf-entities'/>.
+</p>
+
+<div2 id='sec-well-formed'>
+<head>Well-Formed XML Documents</head>
+
+<p><termdef id="dt-wellformed" term="Well-Formed">
+A textual object is
+a well-formed XML document if:</termdef>
+<olist>
+<item><p>Taken as a whole, it
+matches the production labeled <nt def='NT-document'>document</nt>.</p></item>
+<item><p>It
+meets all the well-formedness constraints given in this specification.</p>
+</item>
+<item><p>Each of the <termref def='dt-parsedent'>parsed entities</termref>
+which is referenced directly or indirectly within the document is
+<titleref href='wf-entities'>well-formed</titleref>.</p></item>
+</olist></p>
+<p>
+<scrap lang='ebnf' id='document'>
+<head>Document</head>
+<prod id='NT-document'><lhs>document</lhs>
+<rhs><nt def='NT-prolog'>prolog</nt>
+<nt def='NT-element'>element</nt>
+<nt def='NT-Misc'>Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p>Matching the <nt def="NT-document">document</nt> production
+implies that:
+<olist>
+<item><p>It contains one or more
+<termref def="dt-element">elements</termref>.</p>
+</item>
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+<item><p><termdef id="dt-root" term="Root Element">There is exactly
+one element, called the <term>root</term>, or document element, no
+part of which appears in the <termref
+def="dt-content">content</termref> of any other element.</termdef>
+For all other elements, if the start-tag is in the content of another
+element, the end-tag is in the content of the same element. More
+simply stated, the elements, delimited by start- and end-tags, nest
+properly within each other.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-parentchild" term="Parent/Child">As a consequence
+of this,
+for each non-root element
+<code>C</code> in the document, there is one other element <code>P</code>
+in the document such that
+<code>C</code> is in the content of <code>P</code>, but is not in
+the content of any other element that is in the content of
+<code>P</code>.
+<code>P</code> is referred to as the
+<term>parent</term> of <code>C</code>, and <code>C</code> as a
+<term>child</term> of <code>P</code>.</termdef></p></div2>
+
+<div2 id="charsets">
+<head>Characters</head>
+
+<p><termdef id="dt-text" term="Text">A parsed entity contains
+<term>text</term>, a sequence of
+<termref def="dt-character">characters</termref>,
+which may represent markup or character data.</termdef>
+<termdef id="dt-character" term="Character">A <term>character</term>
+is an atomic unit of text as specified by
+ISO/IEC 10646 <bibref ref="ISO10646"/>.
+Legal characters are tab, carriage return, line feed, and the legal
+graphic characters of Unicode and ISO/IEC 10646.
+The use of "compatibility characters", as defined in section 6.8
+of <bibref ref='Unicode'/>, is discouraged.
+</termdef>
+<scrap lang="ebnf" id="char32">
+<head>Character Range</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>any Unicode character, excluding the
+surrogate blocks, FFFE, and FFFF.</com> </prod>
+</prodgroup>
+</scrap>
+</p>
+
+<p>The mechanism for encoding character code points into bit patterns may
+vary from entity to entity. All XML processors must accept the UTF-8
+and UTF-16 encodings of 10646; the mechanisms for signaling which of
+the two is in use, or for bringing other encodings into play, are
+discussed later, in <specref ref='charencoding'/>.
+</p>
+<!--
+<p>Regardless of the specific encoding used, any character in the ISO/IEC
+10646 character set may be referred to by the decimal or hexadecimal
+equivalent of its
+UCS-4 code value.
+</p>-->
+</div2>
+
+<div2 id='sec-common-syn'>
+<head>Common Syntactic Constructs</head>
+
+<p>This section defines some symbols used widely in the grammar.</p>
+<p><nt def="NT-S">S</nt> (white space) consists of one or more space (#x20)
+characters, carriage returns, line feeds, or tabs.
+
+<scrap lang="ebnf" id='white'>
+<head>White Space</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id='NT-S'><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>Characters are classified for convenience as letters, digits, or other
+characters. Letters consist of an alphabetic or syllabic
+base character possibly
+followed by one or more combining characters, or of an ideographic
+character.
+Full definitions of the specific characters in each class
+are given in <specref ref='CharClasses'/>.</p>
+<p><termdef id="dt-name" term="Name">A <term>Name</term> is a token
+beginning with a letter or one of a few punctuation characters, and continuing
+with letters, digits, hyphens, underscores, colons, or full stops, together
+known as name characters.</termdef>
+Names beginning with the string "<code>xml</code>", or any string
+which would match <code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>, are
+reserved for standardization in this or future versions of this
+specification.
+</p>
+<note>
+<p>The colon character within XML names is reserved for experimentation with
+name spaces.
+Its meaning is expected to be
+standardized at some future point, at which point those documents
+using the colon for experimental purposes may need to be updated.
+(There is no guarantee that any name-space mechanism
+adopted for XML will in fact use the colon as a name-space delimiter.)
+In practice, this means that authors should not use the colon in XML
+names except as part of name-space experiments, but that XML processors
+should accept the colon as a name character.</p>
+</note>
+<p>An
+<nt def='NT-Nmtoken'>Nmtoken</nt> (name token) is any mixture of
+name characters.
+<scrap lang='ebnf'>
+<head>Names and Tokens</head>
+<prod id='NT-NameChar'><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def='NT-Digit'>Digit</nt>
+| '.' | '-' | '_' | ':'
+| <nt def='NT-CombiningChar'>CombiningChar</nt>
+| <nt def='NT-Extender'>Extender</nt></rhs>
+</prod>
+<prod id='NT-Name'><lhs>Name</lhs>
+<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')
+(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>
+<prod id='NT-Names'><lhs>Names</lhs>
+<rhs><nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>
+<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>
+<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>
+<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>
+<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>Literal data is any quoted string not containing
+the quotation mark used as a delimiter for that string.
+Literals are used
+for specifying the content of internal entities
+(<nt def='NT-EntityValue'>EntityValue</nt>),
+the values of attributes (<nt def='NT-AttValue'>AttValue</nt>),
+and external identifiers
+(<nt def="NT-SystemLiteral">SystemLiteral</nt>).
+Note that a <nt def='NT-SystemLiteral'>SystemLiteral</nt>
+can be parsed without scanning for markup.
+<scrap lang='ebnf'>
+<head>Literals</head>
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>'"'
+([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+'"'
+</rhs>
+<rhs>|&nbsp;
+"'"
+([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+"'"</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>'"'
+([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+'"'
+</rhs>
+<rhs>|&nbsp;
+"'"
+([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+"'"</rhs>
+</prod>
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs>('"' [^"]* '"') |&nbsp;("'" [^']* "'")
+</rhs>
+</prod>
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>'"' <nt def='NT-PubidChar'>PubidChar</nt>*
+'"'
+| "'" (<nt def='NT-PubidChar'>PubidChar</nt> - "'")* "'"</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?;!*#@$_%]</rhs>
+</prod>
+</scrap>
+</p>
+
+</div2>
+
+<div2 id='syntax'>
+<head>Character Data and Markup</head>
+
+<p><termref def='dt-text'>Text</termref> consists of intermingled
+<termref def="dt-chardata">character
+data</termref> and markup.
+<termdef id="dt-markup" term="Markup"><term>Markup</term> takes the form of
+<termref def="dt-stag">start-tags</termref>,
+<termref def="dt-etag">end-tags</termref>,
+<termref def="dt-empty">empty-element tags</termref>,
+<termref def="dt-entref">entity references</termref>,
+<termref def="dt-charref">character references</termref>,
+<termref def="dt-comment">comments</termref>,
+<termref def="dt-cdsection">CDATA section</termref> delimiters,
+<termref def="dt-doctype">document type declarations</termref>, and
+<termref def="dt-pi">processing instructions</termref>.
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">All text that is not markup
+constitutes the <term>character data</term> of
+the document.</termdef></p>
+<p>The ampersand character (&amp;) and the left angle bracket (&lt;)
+may appear in their literal form <emph>only</emph> when used as markup
+delimiters, or within a <termref def="dt-comment">comment</termref>, a
+<termref def="dt-pi">processing instruction</termref>,
+or a <termref def="dt-cdsection">CDATA section</termref>.
+
+They are also legal within the <termref def='dt-litentval'>literal entity
+value</termref> of an internal entity declaration; see
+<specref ref='wf-entities'/>.
+<!-- FINAL EDIT: restore internal entity decl or leave it out. -->
+If they are needed elsewhere,
+they must be <termref def="dt-escape">escaped</termref>
+using either <termref def='dt-charref'>numeric character references</termref>
+or the strings
+"<code>&amp;amp;</code>" and "<code>&amp;lt;</code>" respectively.
+The right angle
+bracket (>) may be represented using the string
+"<code>&amp;gt;</code>", and must, <termref def='dt-compat'>for
+compatibility</termref>,
+be escaped using
+"<code>&amp;gt;</code>" or a character reference
+when it appears in the string
+"<code>]]&gt;</code>"
+in content,
+when that string is not marking the end of
+a <termref def="dt-cdsection">CDATA section</termref>.
+</p>
+<p>
+In the content of elements, character data
+is any string of characters which does
+not contain the start-delimiter of any markup.
+In a CDATA section, character data
+is any string of characters not including the CDATA-section-close
+delimiter, "<code>]]&gt;</code>".</p>
+<p>
+To allow attribute values to contain both single and double quotes, the
+apostrophe or single-quote character (') may be represented as
+"<code>&amp;apos;</code>", and the double-quote character (") as
+"<code>&amp;quot;</code>".
+<scrap lang="ebnf">
+<head>Character Data</head>
+<prod id='NT-CharData'>
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id='sec-comments'>
+<head>Comments</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>Comments</term> may
+appear anywhere in a document outside other
+<termref def='dt-markup'>markup</termref>; in addition,
+they may appear within the document type declaration
+at places allowed by the grammar.
+They are not part of the document's <termref def="dt-chardata">character
+data</termref>; an XML
+processor may, but need not, make it possible for an application to
+retrieve the text of comments.
+<termref def="dt-compat">For compatibility</termref>, the string
+"<code>--</code>" (double-hyphen) must not occur within
+comments.
+<scrap lang="ebnf">
+<head>Comments</head>
+<prod id='NT-Comment'><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def='NT-Char'>Char</nt> - '-')
+| ('-' (<nt def='NT-Char'>Char</nt> - '-')))*
+'-->'</rhs>
+</prod>
+</scrap>
+</termdef></p>
+<p>An example of a comment:
+<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-pi'>
+<head>Processing Instructions</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>Processing
+instructions</term> (PIs) allow documents to contain instructions
+for applications.
+
+<scrap lang="ebnf">
+<head>Processing Instructions</head>
+<prod id='NT-PI'><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt>
+(<nt def='NT-S'>S</nt>
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id='NT-PITarget'><lhs>PITarget</lhs>
+<rhs><nt def='NT-Name'>Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PIs are not part of the document's <termref def="dt-chardata">character
+data</termref>, but must be passed through to the application. The
+PI begins with a target (<nt def='NT-PITarget'>PITarget</nt>) used
+to identify the application to which the instruction is directed.
+The target names "<code>XML</code>", "<code>xml</code>", and so on are
+reserved for standardization in this or future versions of this
+specification.
+The
+XML <termref def='dt-notation'>Notation</termref> mechanism
+may be used for
+formal declaration of PI targets.
+</p>
+</div2>
+
+<div2 id='sec-cdata-sect'>
+<head>CDATA Sections</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATA sections</term>
+may occur
+anywhere character data may occur; they are
+used to escape blocks of text containing characters which would
+otherwise be recognized as markup. CDATA sections begin with the
+string "<code>&lt;![CDATA[</code>" and end with the string
+"<code>]]&gt;</code>":
+<scrap lang="ebnf">
+<head>CDATA Sections</head>
+<prod id='NT-CDSect'><lhs>CDSect</lhs>
+<rhs><nt def='NT-CDStart'>CDStart</nt>
+<nt def='NT-CData'>CData</nt>
+<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>
+<prod id='NT-CDStart'><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id='NT-CData'><lhs>CData</lhs>
+<rhs>(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+</rhs>
+</prod>
+<prod id='NT-CDEnd'><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+Within a CDATA section, only the <nt def='NT-CDEnd'>CDEnd</nt> string is
+recognized as markup, so that left angle brackets and ampersands may occur in
+their literal form; they need not (and cannot) be escaped using
+"<code>&amp;lt;</code>" and "<code>&amp;amp;</code>". CDATA sections
+cannot nest.</termdef>
+</p>
+
+<p>An example of a CDATA section, in which "<code>&lt;greeting></code>" and
+"<code>&lt;/greeting></code>"
+are recognized as <termref def='dt-chardata'>character data</termref>, not
+<termref def='dt-markup'>markup</termref>:
+<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-prolog-dtd'>
+<head>Prolog and Document Type Declaration</head>
+
+<p><termdef id='dt-xmldecl' term='XML Declaration'>XML documents
+may, and should,
+begin with an <term>XML declaration</term> which specifies
+the version of
+XML being used.</termdef>
+For example, the following is a complete XML document, <termref
+def="dt-wellformed">well-formed</termref> but not
+<termref def="dt-valid">valid</termref>:
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+and so is this:
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+
+<p>The version number "<code>1.0</code>" should be used to indicate
+conformance to this version of this specification; it is an error
+for a document to use the value "<code>1.0</code>"
+if it does not conform to this version of this specification.
+It is the intent
+of the XML working group to give later versions of this specification
+numbers other than "<code>1.0</code>", but this intent does not
+indicate a
+commitment to produce any future versions of XML, nor if any are produced, to
+use any particular numbering scheme.
+Since future versions are not ruled out, this construct is provided
+as a means to allow the possibility of automatic version recognition, should
+it become necessary.
+Processors may signal an error if they receive documents labeled with
+versions they do not support.
+</p>
+<p>The function of the markup in an XML document is to describe its
+storage and logical structure and to associate attribute-value pairs
+with its logical structures. XML provides a mechanism, the <termref
+def="dt-doctype">document type declaration</termref>, to define
+constraints on the logical structure and to support the use of
+predefined storage units.
+
+<termdef id="dt-valid" term="Validity">An XML document is
+<term>valid</term> if it has an associated document type
+declaration and if the document
+complies with the constraints expressed in it.</termdef></p>
+<p>The document type declaration must appear before
+the first <termref def="dt-element">element</termref> in the document.
+<scrap lang="ebnf" id='xmldoc'>
+<head>Prolog</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-prolog'><lhs>prolog</lhs>
+<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>?
+<nt def='NT-Misc'>Misc</nt>*
+(<nt def='NT-doctypedecl'>doctypedecl</nt>
+<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>
+<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>?
+<nt def='NT-SDDecl'>SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt>
+(' <nt def="NT-VersionNum">VersionNum</nt> '
+| " <nt def="NT-VersionNum">VersionNum</nt> ")</rhs>
+</prod>
+<prod id='NT-Eq'><lhs>Eq</lhs>
+<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id='NT-Misc'><lhs>Misc</lhs>
+<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> |
+<nt def='NT-S'>S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p><termdef id="dt-doctype" term="Document Type Declaration">The XML
+<term>document type declaration</term>
+contains or points to
+<termref def='dt-markupdecl'>markup declarations</termref>
+that provide a grammar for a
+class of documents.
+This grammar is known as a document type definition,
+or <term>DTD</term>.
+The document type declaration can point to an external subset (a
+special kind of
+<termref def='dt-extent'>external entity</termref>) containing markup
+declarations, or can
+contain the markup declarations directly in an internal subset, or can do
+both.
+The DTD for a document consists of both subsets taken
+together.</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+A <term>markup declaration</term> is
+an <termref def="dt-eldecl">element type declaration</termref>,
+an <termref def="dt-attdecl">attribute-list declaration</termref>,
+an <termref def="dt-entdecl">entity declaration</termref>, or
+a <termref def="dt-notdecl">notation declaration</termref>.
+</termdef>
+These declarations may be contained in whole or in part
+within <termref def='dt-PE'>parameter entities</termref>,
+as described in the well-formedness and validity constraints below.
+For fuller information, see
+<specref ref="sec-physical-struct"/>.</p>
+<scrap lang="ebnf" id='dtd'>
+<head>Document Type Definition</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-ExternalID'>ExternalID</nt>)?
+<nt def='NT-S'>S</nt>? ('['
+(<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>)*
+']'
+<nt def='NT-S'>S</nt>?)? '>'</rhs>
+<vc def="vc-roottype"/>
+</prod>
+<prod id='NT-markupdecl'><lhs>markupdecl</lhs>
+<rhs><nt def='NT-elementdecl'>elementdecl</nt>
+| <nt def='NT-AttlistDecl'>AttlistDecl</nt>
+| <nt def='NT-EntityDecl'>EntityDecl</nt>
+| <nt def='NT-NotationDecl'>NotationDecl</nt>
+| <nt def='NT-PI'>PI</nt>
+| <nt def='NT-Comment'>Comment</nt>
+</rhs>
+<vc def='vc-PEinMarkupDecl'/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+
+</prodgroup>
+</scrap>
+
+<p>The markup declarations may be made up in whole or in part of
+the <termref def='dt-repltext'>replacement text</termref> of
+<termref def='dt-PE'>parameter entities</termref>.
+The productions later in this specification for
+individual nonterminals (<nt def='NT-elementdecl'>elementdecl</nt>,
+<nt def='NT-AttlistDecl'>AttlistDecl</nt>, and so on) describe
+the declarations <emph>after</emph> all the parameter entities have been
+<termref def='dt-include'>included</termref>.</p>
+
+<vcnote id="vc-roottype">
+<head>Root Element Type</head>
+<p>
+The <nt def='NT-Name'>Name</nt> in the document type declaration must
+match the element type of the <termref def='dt-root'>root element</termref>.
+</p>
+</vcnote>
+
+<vcnote id='vc-PEinMarkupDecl'>
+<head>Proper Declaration/PE Nesting</head>
+<p>Parameter-entity
+<termref def='dt-repltext'>replacement text</termref> must be properly nested
+with markup declarations.
+That is to say, if either the first character
+or the last character of a markup
+declaration (<nt def='NT-markupdecl'>markupdecl</nt> above)
+is contained in the replacement text for a
+<termref def='dt-PERef'>parameter-entity reference</termref>,
+both must be contained in the same replacement text.</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>PEs in Internal Subset</head>
+<p>In the internal DTD subset,
+<termref def='dt-PERef'>parameter-entity references</termref>
+can occur only where markup declarations can occur, not
+within markup declarations. (This does not apply to
+references that occur in
+external parameter entities or to the external subset.)
+</p>
+</wfcnote>
+<p>
+Like the internal subset, the external subset and
+any external parameter entities referred to in the DTD
+must consist of a series of complete markup declarations of the types
+allowed by the non-terminal symbol
+<nt def="NT-markupdecl">markupdecl</nt>, interspersed with white space
+or <termref def="dt-PERef">parameter-entity references</termref>.
+However, portions of the contents
+of the
+external subset or of external parameter entities may conditionally be ignored
+by using
+the <termref def="dt-cond-section">conditional section</termref>
+construct; this is not allowed in the internal subset.
+
+<scrap id="ext-Subset">
+<head>External Subset</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-extSubset'><lhs>extSubset</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubsetDecl'>extSubsetDecl</nt></rhs></prod>
+<prod id='NT-extSubsetDecl'><lhs>extSubsetDecl</lhs>
+<rhs>(
+<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-conditionalSect'>conditionalSect</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>The external subset and external parameter entities also differ
+from the internal subset in that in them,
+<termref def="dt-PERef">parameter-entity references</termref>
+are permitted <emph>within</emph> markup declarations,
+not only <emph>between</emph> markup declarations.</p>
+<p>An example of an XML document with a document type declaration:
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+The <termref def="dt-sysid">system identifier</termref>
+"<code>hello.dtd</code>" gives the URI of a DTD for the document.</p>
+<p>The declarations can also be given locally, as in this
+example:
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+If both the external and internal subsets are used, the
+internal subset is considered to occur before the external subset.
+<!-- 'is considered to'? boo. whazzat mean? -->
+This has the effect that entity and attribute-list declarations in the
+internal subset take precedence over those in the external subset.
+</p>
+</div2>
+
+<div2 id='sec-rmd'>
+<head>Standalone Document Declaration</head>
+<p>Markup declarations can affect the content of the document,
+as passed from an <termref def="dt-xml-proc">XML processor</termref>
+to an application; examples are attribute defaults and entity
+declarations.
+The standalone document declaration,
+which may appear as a component of the XML declaration, signals
+whether or not there are such declarations which appear external to
+the <termref def='dt-docent'>document entity</termref>.
+<scrap lang="ebnf" id='fulldtd'>
+<head>Standalone Document Declaration</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id='NT-SDDecl'><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt>
+(("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
+</rhs>
+<vc def='vc-check-rmd'/></prod>
+</prodgroup>
+</scrap></p>
+<p>
+In a standalone document declaration, the value "<code>yes</code>" indicates
+that there
+are no markup declarations external to the <termref def='dt-docent'>document
+entity</termref> (either in the DTD external subset, or in an
+external parameter entity referenced from the internal subset)
+which affect the information passed from the XML processor to
+the application.
+The value "<code>no</code>" indicates that there are or may be such
+external markup declarations.
+Note that the standalone document declaration only
+denotes the presence of external <emph>declarations</emph>; the presence, in a
+document, of
+references to external <emph>entities</emph>, when those entities are
+internally declared,
+does not change its standalone status.</p>
+<p>If there are no external markup declarations, the standalone document
+declaration has no meaning.
+If there are external markup declarations but there is no standalone
+document declaration, the value "<code>no</code>" is assumed.</p>
+<p>Any XML document for which <code>standalone="no"</code> holds can
+be converted algorithmically to a standalone document,
+which may be desirable for some network delivery applications.</p>
+<vcnote id='vc-check-rmd'>
+<head>Standalone Document Declaration</head>
+<p>The standalone document declaration must have
+the value "<code>no</code>" if any external markup declarations
+contain declarations of:</p><ulist>
+<item><p>attributes with <termref def="dt-default">default</termref> values, if
+elements to which
+these attributes apply appear in the document without
+specifications of values for these attributes, or</p></item>
+<item><p>entities (other than &magicents;),
+if <termref def="dt-entref">references</termref> to those
+entities appear in the document, or</p>
+</item>
+<item><p>attributes with values subject to
+<titleref href='AVNormalize'>normalization</titleref>, where the
+attribute appears in the document with a value which will
+change as a result of normalization, or</p>
+</item>
+<item>
+<p>element types with <termref def="dt-elemcontent">element content</termref>,
+if white space occurs
+directly within any instance of those types.
+</p></item>
+</ulist>
+
+</vcnote>
+<p>An example XML declaration with a standalone document declaration:<eg
+>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>
+</div2>
+<div2 id='sec-white-space'>
+<head>White Space Handling</head>
+
+<p>In editing XML documents, it is often convenient to use "white space"
+(spaces, tabs, and blank lines, denoted by the nonterminal
+<nt def='NT-S'>S</nt> in this specification) to
+set apart the markup for greater readability. Such white space is typically
+not intended for inclusion in the delivered version of the document.
+On the other hand, "significant" white space that should be preserved in the
+delivered version is common, for example in poetry and
+source code.</p>
+<p>An <termref def='dt-xml-proc'>XML processor</termref>
+must always pass all characters in a document that are not
+markup through to the application. A <termref def='dt-validating'>
+validating XML processor</termref> must also inform the application
+which of these characters constitute white space appearing
+in <termref def="dt-elemcontent">element content</termref>.
+</p>
+<p>A special <termref def='dt-attr'>attribute</termref>
+named <kw>xml:space</kw> may be attached to an element
+to signal an intention that in that element,
+white space should be preserved by applications.
+In valid documents, this attribute, like any other, must be
+<termref def="dt-attdecl">declared</termref> if it is used.
+When declared, it must be given as an
+<termref def='dt-enumerated'>enumerated type</termref> whose only
+possible values are "<code>default</code>" and "<code>preserve</code>".
+For example:<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg></p>
+<p>The value "<code>default</code>" signals that applications'
+default white-space processing modes are acceptable for this element; the
+value "<code>preserve</code>" indicates the intent that applications preserve
+all the white space.
+This declared intent is considered to apply to all elements within the content
+of the element where it is specified, unless overriden with another instance
+of the <kw>xml:space</kw> attribute.
+</p>
+<p>The <termref def='dt-root'>root element</termref> of any document
+is considered to have signaled no intentions as regards application space
+handling, unless it provides a value for
+this attribute or the attribute is declared with a default value.
+</p>
+
+</div2>
+<div2 id='sec-line-ends'>
+<head>End-of-Line Handling</head>
+<p>XML <termref def='dt-parsedent'>parsed entities</termref> are often stored in
+computer files which, for editing convenience, are organized into lines.
+These lines are typically separated by some combination of the characters
+carriage-return (#xD) and line-feed (#xA).</p>
+<p>To simplify the tasks of <termref def='dt-app'>applications</termref>,
+wherever an external parsed entity or the literal entity value
+of an internal parsed entity contains either the literal
+two-character sequence "#xD#xA" or a standalone literal
+#xD, an <termref def='dt-xml-proc'>XML processor</termref> must
+pass to the application the single character #xA.
+(This behavior can
+conveniently be produced by normalizing all
+line breaks to #xA on input, before parsing.)
+</p>
+</div2>
+<div2 id='sec-lang-tag'>
+<head>Language Identification</head>
+<p>In document processing, it is often useful to
+identify the natural or formal language
+in which the content is
+written.
+A special <termref def="dt-attr">attribute</termref> named
+<kw>xml:lang</kw> may be inserted in
+documents to specify the
+language used in the contents and attribute values
+of any element in an XML document.
+In valid documents, this attribute, like any other, must be
+<termref def="dt-attdecl">declared</termref> if it is used.
+The values of the attribute are language identifiers as defined
+by <bibref ref="RFC1766"/>, "Tags for the Identification of Languages":
+<scrap lang='ebnf'>
+<head>Language Identification</head>
+<prod id='NT-LanguageID'><lhs>LanguageID</lhs>
+<rhs><nt def='NT-Langcode'>Langcode</nt>
+('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>
+<prod id='NT-Langcode'><lhs>Langcode</lhs>
+<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> |
+<nt def='NT-IanaCode'>IanaCode</nt> |
+<nt def='NT-UserCode'>UserCode</nt></rhs>
+</prod>
+<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id='NT-IanaCode'><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-UserCode'><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-Subcode'><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+The <nt def='NT-Langcode'>Langcode</nt> may be any of the following:
+<ulist>
+<item><p>a two-letter language code as defined by
+<bibref ref="ISO639"/>, "Codes
+for the representation of names of languages"</p></item>
+<item><p>a language identifier registered with the Internet
+Assigned Numbers Authority <bibref ref='IANA'/>; these begin with the
+prefix "<code>i-</code>" (or "<code>I-</code>")</p></item>
+<item><p>a language identifier assigned by the user, or agreed on
+between parties in private use; these must begin with the
+prefix "<code>x-</code>" or "<code>X-</code>" in order to ensure that they do not conflict
+with names later standardized or registered with IANA</p></item>
+</ulist></p>
+<p>There may be any number of <nt def='NT-Subcode'>Subcode</nt> segments; if
+the first
+subcode segment exists and the Subcode consists of two
+letters, then it must be a country code from
+<bibref ref="ISO3166"/>, "Codes
+for the representation of names of countries."
+If the first
+subcode consists of more than two letters, it must be
+a subcode for the language in question registered with IANA,
+unless the <nt def='NT-Langcode'>Langcode</nt> begins with the prefix
+"<code>x-</code>" or
+"<code>X-</code>". </p>
+<p>It is customary to give the language code in lower case, and
+the country code (if any) in upper case.
+Note that these values, unlike other names in XML documents,
+are case insensitive.</p>
+<p>For example:
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>durchaus studiert mit heißem Bemüh'n.</l>
+ </sp>]]></eg></p>
+<!--<p>The xml:lang value is considered to apply both to the contents of an
+element and
+(unless otherwise via attribute default values) to the
+values of all of its attributes with free-text (CDATA) values. -->
+<p>The intent declared with <kw>xml:lang</kw> is considered to apply to
+all attributes and content of the element where it is specified,
+unless overridden with an instance of <kw>xml:lang</kw>
+on another element within that content.</p>
+<!--
+If no
+value is specified for xml:lang on an element, and no default value is
+defined for it in the DTD, then the xml:lang attribute of any element
+takes the same value it has in the parent element, if any. The two
+technical terms in the following example both have the same effective
+value for xml:lang:
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+The application, not the XML processor, is responsible for this '
+inheritance' of attribute values.
+-->
+<p>A simple declaration for <kw>xml:lang</kw> might take
+the form
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+but specific default values may also be given, if appropriate. In a
+collection of French poems for English students, with glosses and
+notes in English, the xml:lang attribute might be declared this way:
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id='sec-logical-struct'>
+<head>Logical Structures</head>
+
+<p><termdef id="dt-element" term="Element">Each <termref
+def="dt-xml-doc">XML document</termref> contains one or more
+<term>elements</term>, the boundaries of which are
+either delimited by <termref def="dt-stag">start-tags</termref>
+and <termref def="dt-etag">end-tags</termref>, or, for <termref
+def="dt-empty">empty</termref> elements, by an <termref
+def="dt-eetag">empty-element tag</termref>. Each element has a type,
+identified by name, sometimes called its "generic
+identifier" (GI), and may have a set of
+attribute specifications.</termdef> Each attribute specification
+has a <termref
+def="dt-attrname">name</termref> and a <termref
+def="dt-attrval">value</termref>.
+</p>
+<scrap lang='ebnf'><head>Element</head>
+<prod id='NT-element'><lhs>element</lhs>
+<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>
+<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt>
+<nt def='NT-ETag'>ETag</nt></rhs>
+<wfc def='GIMatch'/>
+<vc def='elementvalid'/>
+</prod>
+</scrap>
+<p>This specification does not constrain the semantics, use, or (beyond
+syntax) names of the element types and attributes, except that names
+beginning with a match to <code>(('X'|'x')('M'|'m')('L'|'l'))</code>
+are reserved for standardization in this or future versions of this
+specification.
+</p>
+<wfcnote id='GIMatch'>
+<head>Element Type Match</head>
+<p>
+The <nt def='NT-Name'>Name</nt> in an element's end-tag must match
+the element type in
+the start-tag.
+</p>
+</wfcnote>
+<vcnote id='elementvalid'>
+<head>Element Valid</head>
+<p>An element is
+valid if
+there is a declaration matching
+<nt def='NT-elementdecl'>elementdecl</nt> where the
+<nt def='NT-Name'>Name</nt> matches the element type, and
+one of the following holds:</p>
+<olist>
+<item><p>The declaration matches <kw>EMPTY</kw> and the element has no
+<termref def='dt-content'>content</termref>.</p></item>
+<item><p>The declaration matches <nt def='NT-children'>children</nt> and
+the sequence of
+<termref def="dt-parentchild">child elements</termref>
+belongs to the language generated by the regular expression in
+the content model, with optional white space (characters
+matching the nonterminal <nt def='NT-S'>S</nt>) between each pair
+of child elements.</p></item>
+<item><p>The declaration matches <nt def='NT-Mixed'>Mixed</nt> and
+the content consists of <termref def='dt-chardata'>character
+data</termref> and <termref def='dt-parentchild'>child elements</termref>
+whose types match names in the content model.</p></item>
+<item><p>The declaration matches <kw>ANY</kw>, and the types
+of any <termref def='dt-parentchild'>child elements</termref> have
+been declared.</p></item>
+</olist>
+</vcnote>
+
+<div2 id='sec-starttags'>
+<head>Start-Tags, End-Tags, and Empty-Element Tags</head>
+
+<p><termdef id="dt-stag" term="Start-Tag">The beginning of every
+non-empty XML element is marked by a <term>start-tag</term>.
+<scrap lang='ebnf'>
+<head>Start-tag</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-STag'><lhs>STag</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)*
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<wfc def="uniqattspec"/>
+</prod>
+<prod id='NT-Attribute'><lhs>Attribute</lhs>
+<rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt>
+<nt def='NT-AttValue'>AttValue</nt></rhs>
+<vc def='ValueType'/>
+<wfc def='NoExternalRefs'/>
+<wfc def='CleanAttrVals'/></prod>
+</prodgroup>
+</scrap>
+The <nt def='NT-Name'>Name</nt> in
+the start- and end-tags gives the
+element's <term>type</term>.</termdef>
+<termdef id="dt-attr" term="Attribute">
+The <nt def='NT-Name'>Name</nt>-<nt def='NT-AttValue'>AttValue</nt> pairs are
+referred to as
+the <term>attribute specifications</term> of the element</termdef>,
+<termdef id="dt-attrname" term="Attribute Name">with the
+<nt def='NT-Name'>Name</nt> in each pair
+referred to as the <term>attribute name</term></termdef> and
+<termdef id="dt-attrval" term="Attribute Value">the content of the
+<nt def='NT-AttValue'>AttValue</nt> (the text between the
+<code>'</code> or <code>"</code> delimiters)
+as the <term>attribute value</term>.</termdef>
+</p>
+<wfcnote id='uniqattspec'>
+<head>Unique Att Spec</head>
+<p>
+No attribute name may appear more than once in the same start-tag
+or empty-element tag.
+</p>
+</wfcnote>
+<vcnote id='ValueType'>
+<head>Attribute Value Type</head>
+<p>
+The attribute must have been declared; the value must be of the type
+declared for it.
+(For attribute types, see <specref ref='attdecls'/>.)
+</p>
+</vcnote>
+<wfcnote id='NoExternalRefs'>
+<head>No External Entity References</head>
+<p>
+Attribute values cannot contain direct or indirect entity references
+to external entities.
+</p>
+</wfcnote>
+<wfcnote id='CleanAttrVals'>
+<head>No <code>&lt;</code> in Attribute Values</head>
+<p>The <termref def='dt-repltext'>replacement text</termref> of any entity
+referred to directly or indirectly in an attribute
+value (other than "<code>&amp;lt;</code>") must not contain
+a <code>&lt;</code>.
+</p></wfcnote>
+<p>An example of a start-tag:
+<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>
+<p><termdef id="dt-etag" term="End Tag">The end of every element
+that begins with a start-tag must
+be marked by an <term>end-tag</term>
+containing a name that echoes the element's type as given in the
+start-tag:
+<scrap lang='ebnf'>
+<head>End-tag</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-ETag'><lhs>ETag</lhs>
+<rhs>'&lt;/' <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p>An example of an end-tag:<eg>&lt;/termdef></eg></p>
+<p><termdef id="dt-content" term="Content">The
+<termref def='dt-text'>text</termref> between the start-tag and
+end-tag is called the element's
+<term>content</term>:
+<scrap lang='ebnf'>
+<head>Content of Elements</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-content'><lhs>content</lhs>
+<rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt>
+| <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt>
+| <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs>
+</prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p><termdef id="dt-empty" term="Empty">If an element is <term>empty</term>,
+it must be represented either by a start-tag immediately followed
+by an end-tag or by an empty-element tag.</termdef>
+<termdef id="dt-eetag" term="empty-element tag">An
+<term>empty-element tag</term> takes a special form:
+<scrap lang='ebnf'>
+<head>Tags for Empty Elements</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>?
+'/&gt;'</rhs>
+<wfc def="uniqattspec"/>
+</prod>
+</prodgroup>
+</scrap>
+</termdef></p>
+<p>Empty-element tags may be used for any element which has no
+content, whether or not it is declared using the keyword
+<kw>EMPTY</kw>.
+<termref def='dt-interop'>For interoperability</termref>, the empty-element
+tag must be used, and can only be used, for elements which are
+<termref def='dt-eldecl'>declared</termref> <kw>EMPTY</kw>.</p>
+<p>Examples of empty elements:
+<eg>&lt;IMG align="left"
+ src="http://www.w3.org/Icons/WWW/w3c_home" />
+&lt;br>&lt;/br>
+&lt;br/></eg></p>
+</div2>
+
+<div2 id='elemdecls'>
+<head>Element Type Declarations</head>
+
+<p>The <termref def="dt-element">element</termref> structure of an
+<termref def="dt-xml-doc">XML document</termref> may, for
+<termref def="dt-valid">validation</termref> purposes,
+be constrained
+using element type and attribute-list declarations.
+An element type declaration constrains the element's
+<termref def="dt-content">content</termref>.
+</p>
+
+<p>Element type declarations often constrain which element types can
+appear as <termref def="dt-parentchild">children</termref> of the element.
+At user option, an XML processor may issue a warning
+when a declaration mentions an element type for which no declaration
+is provided, but this is not an error.</p>
+<p><termdef id="dt-eldecl" term="Element Type declaration">An <term>element
+type declaration</term> takes the form:
+<scrap lang='ebnf'>
+<head>Element Type Declaration</head>
+<prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id='NT-elementdecl'><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-contentspec'>contentspec</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<vc def='EDUnique'/></prod>
+<prod id='NT-contentspec'><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def='NT-Mixed'>Mixed</nt>
+| <nt def='NT-children'>children</nt>
+</rhs>
+</prod>
+</prodgroup>
+</scrap>
+where the <nt def='NT-Name'>Name</nt> gives the element type
+being declared.</termdef>
+</p>
+
+<vcnote id='EDUnique'>
+<head>Unique Element Type Declaration</head>
+<p>
+No element type may be declared more than once.
+</p>
+</vcnote>
+
+<p>Examples of element type declarations:
+<eg>&lt;!ELEMENT br EMPTY>
+&lt;!ELEMENT p (#PCDATA|emph)* >
+&lt;!ELEMENT %name.para; %content.para; >
+&lt;!ELEMENT container ANY></eg></p>
+
+<div3 id='sec-element-content'>
+<head>Element Content</head>
+
+<p><termdef id='dt-elemcontent' term='Element content'>An element <termref
+def="dt-stag">type</termref> has
+<term>element content</term> when elements of that
+type must contain only <termref def='dt-parentchild'>child</termref>
+elements (no character data), optionally separated by
+white space (characters matching the nonterminal
+<nt def='NT-S'>S</nt>).
+</termdef>
+In this case, the
+constraint includes a content model, a simple grammar governing
+the allowed types of the child
+elements and the order in which they are allowed to appear.
+The grammar is built on
+content particles (<nt def='NT-cp'>cp</nt>s), which consist of names,
+choice lists of content particles, or
+sequence lists of content particles:
+<scrap lang='ebnf'>
+<head>Element-content Models</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-children'><lhs>children</lhs>
+<rhs>(<nt def='NT-choice'>choice</nt>
+| <nt def='NT-seq'>seq</nt>)
+('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-cp'><lhs>cp</lhs>
+<rhs>(<nt def='NT-Name'>Name</nt>
+| <nt def='NT-choice'>choice</nt>
+| <nt def='NT-seq'>seq</nt>)
+('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>? cp
+( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*
+<nt def='NT-S'>S</nt>? ')'</rhs>
+<vc def='vc-PEinGroup'/></prod>
+<prod id='NT-seq'><lhs>seq</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>? cp
+( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*
+<nt def='NT-S'>S</nt>? ')'</rhs>
+<vc def='vc-PEinGroup'/></prod>
+
+</prodgroup>
+</scrap>
+where each <nt def='NT-Name'>Name</nt> is the type of an element which may
+appear as a <termref def="dt-parentchild">child</termref>.
+Any content
+particle in a choice list may appear in the <termref
+def="dt-elemcontent">element content</termref> at the location where
+the choice list appears in the grammar;
+content particles occurring in a sequence list must each
+appear in the <termref def="dt-elemcontent">element content</termref> in the
+order given in the list.
+The optional character following a name or list governs
+whether the element or the content particles in the list may occur one
+or more (<code>+</code>), zero or more (<code>*</code>), or zero or
+one times (<code>?</code>).
+The absence of such an operator means that the element or content particle
+must appear exactly once.
+This syntax
+and meaning are identical to those used in the productions in this
+specification.</p>
+<p>
+The content of an element matches a content model if and only if it is
+possible to trace out a path through the content model, obeying the
+sequence, choice, and repetition operators and matching each element in
+the content against an element type in the content model. <termref
+def='dt-compat'>For compatibility</termref>, it is an error
+if an element in the document can
+match more than one occurrence of an element type in the content model.
+For more information, see <specref ref="determinism"/>.
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+<vcnote id='vc-PEinGroup'>
+<head>Proper Group/PE Nesting</head>
+<p>Parameter-entity
+<termref def='dt-repltext'>replacement text</termref> must be properly nested
+with parenthetized groups.
+That is to say, if either of the opening or closing parentheses
+in a <nt def='NT-choice'>choice</nt>, <nt def='NT-seq'>seq</nt>, or
+<nt def='NT-Mixed'>Mixed</nt> construct
+is contained in the replacement text for a
+<termref def='dt-PERef'>parameter entity</termref>,
+both must be contained in the same replacement text.</p>
+<p><termref def='dt-interop'>For interoperability</termref>,
+if a parameter-entity reference appears in a
+<nt def='NT-choice'>choice</nt>, <nt def='NT-seq'>seq</nt>, or
+<nt def='NT-Mixed'>Mixed</nt> construct, its replacement text
+should not be empty, and
+neither the first nor last non-blank
+character of the replacement text should be a connector
+(<code>|</code> or <code>,</code>).
+</p>
+</vcnote>
+<p>Examples of element-content models:
+<eg>&lt;!ELEMENT spec (front, body, back?)>
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>
+</div3>
+
+<div3 id='sec-mixed-content'>
+<head>Mixed Content</head>
+
+<p><termdef id='dt-mixed' term='Mixed Content'>An element
+<termref def='dt-stag'>type</termref> has
+<term>mixed content</term> when elements of that type may contain
+character data, optionally interspersed with
+<termref def="dt-parentchild">child</termref> elements.</termdef>
+In this case, the types of the child elements
+may be constrained, but not their order or their number of occurrences:
+<scrap lang='ebnf'>
+<head>Mixed-content Declaration</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-Mixed'><lhs>Mixed</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+'#PCDATA'
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'
+</rhs><vc def='vc-PEinGroup'/>
+<vc def='vc-MixedChildrenUnique'/>
+</prod>
+
+</prodgroup>
+</scrap>
+where the <nt def='NT-Name'>Name</nt>s give the types of elements
+that may appear as children.
+</p>
+<vcnote id='vc-MixedChildrenUnique'>
+<head>No Duplicate Types</head>
+<p>The same name must not appear more than once in a single mixed-content
+declaration.
+</p></vcnote>
+<p>Examples of mixed content declarations:
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
+&lt;!ELEMENT b (#PCDATA)></eg></p>
+</div3>
+</div2>
+
+<div2 id='attdecls'>
+<head>Attribute-List Declarations</head>
+
+<p><termref def="dt-attr">Attributes</termref> are used to associate
+name-value pairs with <termref def="dt-element">elements</termref>.
+Attribute specifications may appear only within <termref
+def="dt-stag">start-tags</termref>
+and <termref def="dt-eetag">empty-element tags</termref>;
+thus, the productions used to
+recognize them appear in <specref ref='sec-starttags'/>.
+Attribute-list
+declarations may be used:
+<ulist>
+<item><p>To define the set of attributes pertaining to a given
+element type.</p></item>
+<item><p>To establish type constraints for these
+attributes.</p></item>
+<item><p>To provide <termref def="dt-default">default values</termref>
+for attributes.</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>Attribute-list declarations</term> specify the name, data type, and default
+value (if any) of each attribute associated with a given element type:
+<scrap lang='ebnf'>
+<head>Attribute-list Declaration</head>
+<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-AttDef'>AttDef</nt>*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-AttDef'><lhs>AttDef</lhs>
+<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-DefaultDecl'>DefaultDecl</nt></rhs>
+</prod>
+</scrap>
+The <nt def="NT-Name">Name</nt> in the
+<nt def='NT-AttlistDecl'>AttlistDecl</nt> rule is the type of an element. At
+user option, an XML processor may issue a warning if attributes are
+declared for an element type not itself declared, but this is not an
+error. The <nt def='NT-Name'>Name</nt> in the
+<nt def='NT-AttDef'>AttDef</nt> rule is
+the name of the attribute.</termdef></p>
+<p>
+When more than one <nt def='NT-AttlistDecl'>AttlistDecl</nt> is provided for a
+given element type, the contents of all those provided are merged. When
+more than one definition is provided for the same attribute of a
+given element type, the first declaration is binding and later
+declarations are ignored.
+<termref def='dt-interop'>For interoperability,</termref> writers of DTDs
+may choose to provide at most one attribute-list declaration
+for a given element type, at most one attribute definition
+for a given attribute name, and at least one attribute definition
+in each attribute-list declaration.
+For interoperability, an XML processor may at user option
+issue a warning when more than one attribute-list declaration is
+provided for a given element type, or more than one attribute definition
+is provided
+for a given attribute, but this is not an error.
+</p>
+
+<div3 id='sec-attribute-types'>
+<head>Attribute Types</head>
+
+<p>XML attribute types are of three kinds: a string type, a
+set of tokenized types, and enumerated types. The string type may take
+any literal string as a value; the tokenized types have varying lexical
+and semantic constraints, as noted:
+<scrap lang='ebnf'>
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-AttType'><lhs>AttType</lhs>
+<rhs><nt def='NT-StringType'>StringType</nt>
+| <nt def='NT-TokenizedType'>TokenizedType</nt>
+| <nt def='NT-EnumeratedType'>EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id='NT-StringType'><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def='id'/>
+<vc def='one-id-per-el'/>
+<vc def='id-default'/>
+<rhs>| 'IDREF'</rhs>
+<vc def='idref'/>
+<rhs>| 'IDREFS'</rhs>
+<vc def='idref'/>
+<rhs>| 'ENTITY'</rhs>
+<vc def='entname'/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def='entname'/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def='nmtok'/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def='nmtok'/></prod>
+</prodgroup>
+</scrap>
+</p>
+<vcnote id='id' >
+<head>ID</head>
+<p>
+Values of type <kw>ID</kw> must match the
+<nt def='NT-Name'>Name</nt> production.
+A name must not appear more than once in
+an XML document as a value of this type; i.e., ID values must uniquely
+identify the elements which bear them.
+</p>
+</vcnote>
+<vcnote id='one-id-per-el'>
+<head>One ID per Element Type</head>
+<p>No element type may have more than one ID attribute specified.</p>
+</vcnote>
+<vcnote id='id-default'>
+<head>ID Attribute Default</head>
+<p>An ID attribute must have a declared default of <kw>#IMPLIED</kw> or
+<kw>#REQUIRED</kw>.</p>
+</vcnote>
+<vcnote id='idref'>
+<head>IDREF</head>
+<p>
+Values of type <kw>IDREF</kw> must match
+the <nt def="NT-Name">Name</nt> production, and
+values of type <kw>IDREFS</kw> must match
+<nt def="NT-Names">Names</nt>;
+each <nt def='NT-Name'>Name</nt> must match the value of an ID attribute on
+some element in the XML document; i.e. <kw>IDREF</kw> values must
+match the value of some ID attribute.
+</p>
+</vcnote>
+<vcnote id='entname'>
+<head>Entity Name</head>
+<p>
+Values of type <kw>ENTITY</kw>
+must match the <nt def="NT-Name">Name</nt> production,
+values of type <kw>ENTITIES</kw> must match
+<nt def="NT-Names">Names</nt>;
+each <nt def="NT-Name">Name</nt> must
+match the
+name of an <termref def="dt-unparsed">unparsed entity</termref> declared in the
+<termref def="dt-doctype">DTD</termref>.
+</p>
+</vcnote>
+<vcnote id='nmtok'>
+<head>Name Token</head>
+<p>
+Values of type <kw>NMTOKEN</kw> must match the
+<nt def="NT-Nmtoken">Nmtoken</nt> production;
+values of type <kw>NMTOKENS</kw> must
+match <termref def="NT-Nmtokens">Nmtokens</termref>.
+</p>
+</vcnote>
+<!-- why?
+<p>The XML processor must normalize attribute values before
+passing them to the application, as described in
+<specref ref="AVNormalize"/>.</p>-->
+<p><termdef id='dt-enumerated' term='Enumerated Attribute
+Values'><term>Enumerated attributes</term> can take one
+of a list of values provided in the declaration</termdef>. There are two
+kinds of enumerated types:
+<scrap lang='ebnf'>
+<head>Enumerated Attribute Types</head>
+<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs>
+<rhs><nt def='NT-NotationType'>NotationType</nt>
+| <nt def='NT-Enumeration'>Enumeration</nt>
+</rhs></prod>
+<prod id='NT-NotationType'><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def='NT-S'>S</nt>
+'('
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>? ')'
+</rhs>
+<vc def='notatn' /></prod>
+<prod id='NT-Enumeration'><lhs>Enumeration</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>
+(<nt def='NT-S'>S</nt>? '|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>)*
+<nt def='NT-S'>S</nt>?
+')'</rhs>
+<vc def='enum'/></prod>
+</scrap>
+A <kw>NOTATION</kw> attribute identifies a
+<termref def='dt-notation'>notation</termref>, declared in the
+DTD with associated system and/or public identifiers, to
+be used in interpreting the element to which the attribute
+is attached.
+</p>
+
+<vcnote id='notatn'>
+<head>Notation Attributes</head>
+<p>
+Values of this type must match
+one of the <titleref href='Notations'>notation</titleref> names included in
+the declaration; all notation names in the declaration must
+be declared.
+</p>
+</vcnote>
+<vcnote id='enum'>
+<head>Enumeration</head>
+<p>
+Values of this type
+must match one of the <nt def='NT-Nmtoken'>Nmtoken</nt> tokens in the
+declaration.
+</p>
+</vcnote>
+<p><termref def='dt-interop'>For interoperability,</termref> the same
+<nt def='NT-Nmtoken'>Nmtoken</nt> should not occur more than once in the
+enumerated attribute types of a single element type.
+</p>
+</div3>
+
+<div3 id='sec-attr-defaults'>
+<head>Attribute Defaults</head>
+
+<p>An <termref def="dt-attdecl">attribute declaration</termref> provides
+information on whether
+the attribute's presence is required, and if not, how an XML processor should
+react if a declared attribute is absent in a document.
+<scrap lang='ebnf'>
+<head>Attribute Defaults</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-DefaultDecl'><lhs>DefaultDecl</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+<vc def='RequiredAttr'/>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+<vc def='FixedAttr'/>
+</prod>
+</prodgroup>
+</scrap>
+
+</p>
+<p>In an attribute declaration, <kw>#REQUIRED</kw> means that the
+attribute must always be provided, <kw>#IMPLIED</kw> that no default
+value is provided.
+<!-- not any more!!
+<kw>#IMPLIED</kw> means that if the attribute is omitted
+from an element of this type,
+the XML processor must inform the application
+that no value was specified; no constraint is placed on the behavior
+of the application. -->
+<termdef id="dt-default" term="Attribute Default">If the
+declaration
+is neither <kw>#REQUIRED</kw> nor <kw>#IMPLIED</kw>, then the
+<nt def='NT-AttValue'>AttValue</nt> value contains the declared
+<term>default</term> value; the <kw>#FIXED</kw> keyword states that
+the attribute must always have the default value.
+If a default value
+is declared, when an XML processor encounters an omitted attribute, it
+is to behave as though the attribute were present with
+the declared default value.</termdef></p>
+<vcnote id='RequiredAttr'>
+<head>Required Attribute</head>
+<p>If the default declaration is the keyword <kw>#REQUIRED</kw>, then
+the attribute must be specified for
+all elements of the type in the attribute-list declaration.
+</p></vcnote>
+<vcnote id='defattrvalid'>
+<head>Attribute Default Legal</head>
+<p>
+The declared
+default value must meet the lexical constraints of the declared attribute type.
+</p>
+</vcnote>
+<vcnote id='FixedAttr'>
+<head>Fixed Attribute Default</head>
+<p>If an attribute has a default value declared with the
+<kw>#FIXED</kw> keyword, instances of that attribute must
+match the default value.
+</p></vcnote>
+
+<p>Examples of attribute-list declarations:
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED>
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered">
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"></eg></p>
+</div3>
+<div3 id='AVNormalize'>
+<head>Attribute-Value Normalization</head>
+<p>Before the value of an attribute is passed to the application
+or checked for validity, the
+XML processor must normalize it as follows:
+<ulist>
+<item><p>a character reference is processed by appending the referenced
+character to the attribute value</p></item>
+<item><p>an entity reference is processed by recursively processing the
+replacement text of the entity</p></item>
+<item><p>a whitespace character (#x20, #xD, #xA, #x9) is processed by
+appending #x20 to the normalized value, except that only a single #x20
+is appended for a "#xD#xA" sequence that is part of an external
+parsed entity or the literal entity value of an internal parsed
+entity</p></item>
+<item><p>other characters are processed by appending them to the normalized
+value</p>
+</item></ulist>
+</p>
+<p>If the declared value is not CDATA, then the XML processor must
+further process the normalized attribute value by discarding any
+leading and trailing space (#x20) characters, and by replacing
+sequences of space (#x20) characters by a single space (#x20)
+character.</p>
+<p>
+All attributes for which no declaration has been read should be treated
+by a non-validating parser as if declared
+<kw>CDATA</kw>.
+</p>
+</div3>
+</div2>
+<div2 id='sec-condition-sect'>
+<head>Conditional Sections</head>
+<p><termdef id='dt-cond-section' term='conditional section'>
+<term>Conditional sections</term> are portions of the
+<termref def='dt-doctype'>document type declaration external subset</termref>
+which are
+included in, or excluded from, the logical structure of the DTD based on
+the keyword which governs them.</termdef>
+<scrap lang='ebnf'>
+<head>Conditional Section</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>
+<rhs><nt def='NT-includeSect'>includeSect</nt>
+| <nt def='NT-ignoreSect'>ignoreSect</nt>
+</rhs>
+</prod>
+<prod id='NT-includeSect'><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+
+<nt def="NT-extSubsetDecl">extSubsetDecl</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+
+<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>
+<rhs><nt def='NT-Ignore'>Ignore</nt>
+('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt> ']]&gt;'
+<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>
+<prod id='NT-Ignore'><lhs>Ignore</lhs>
+<rhs><nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def='NT-Char'>Char</nt>*)
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>Like the internal and external DTD subsets, a conditional section
+may contain one or more complete declarations,
+comments, processing instructions,
+or nested conditional sections, intermingled with white space.
+</p>
+<p>If the keyword of the
+conditional section is <kw>INCLUDE</kw>, then the contents of the conditional
+section are part of the DTD.
+If the keyword of the conditional
+section is <kw>IGNORE</kw>, then the contents of the conditional section are
+not logically part of the DTD.
+Note that for reliable parsing, the contents of even ignored
+conditional sections must be read in order to
+detect nested conditional sections and ensure that the end of the
+outermost (ignored) conditional section is properly detected.
+If a conditional section with a
+keyword of <kw>INCLUDE</kw> occurs within a larger conditional
+section with a keyword of <kw>IGNORE</kw>, both the outer and the
+inner conditional sections are ignored.</p>
+<p>If the keyword of the conditional section is a
+parameter-entity reference, the parameter entity must be replaced by its
+content before the processor decides whether to
+include or ignore the conditional section.</p>
+<p>An example:
+<eg>&lt;!ENTITY % draft 'INCLUDE' >
+&lt;!ENTITY % final 'IGNORE' >
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)>
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)>
+]]&gt;
+</eg>
+</p>
+</div2>
+
+
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id='sec-physical-struct'>
+<head>Physical Structures</head>
+
+<p><termdef id="dt-entity" term="Entity">An XML document may consist
+of one or many storage units. These are called
+<term>entities</term>; they all have <term>content</term> and are all
+(except for the document entity, see below, and
+the <termref def='dt-doctype'>external DTD subset</termref>)
+identified by <term>name</term>.
+</termdef>
+Each XML document has one entity
+called the <termref def="dt-docent">document entity</termref>, which serves
+as the starting point for the <termref def="dt-xml-proc">XML
+processor</termref> and may contain the whole document.</p>
+<p>Entities may be either parsed or unparsed.
+<termdef id="dt-parsedent" term="Text Entity">A <term>parsed entity's</term>
+contents are referred to as its
+<termref def='dt-repltext'>replacement text</termref>;
+this <termref def="dt-text">text</termref> is considered an
+integral part of the document.</termdef></p>
+
+<p><termdef id="dt-unparsed" term="Unparsed Entity">An
+<term>unparsed entity</term>
+is a resource whose contents may or may not be
+<termref def='dt-text'>text</termref>, and if text, may not be XML.
+Each unparsed entity
+has an associated <termref
+def="dt-notation">notation</termref>, identified by name.
+Beyond a requirement
+that an XML processor make the identifiers for the entity and
+notation available to the application,
+XML places no constraints on the contents of unparsed entities.</termdef>
+</p>
+<p>
+Parsed entities are invoked by name using entity references;
+unparsed entities by name, given in the value of <kw>ENTITY</kw>
+or <kw>ENTITIES</kw>
+attributes.</p>
+<p><termdef id='gen-entity' term='general entity'
+><term>General entities</term>
+are entities for use within the document content.
+In this specification, general entities are sometimes referred
+to with the unqualified term <emph>entity</emph> when this leads
+to no ambiguity.</termdef>
+<termdef id='dt-PE' term='Parameter entity'>Parameter entities
+are parsed entities for use within the DTD.</termdef>
+These two types of entities use different forms of reference and
+are recognized in different contexts.
+Furthermore, they occupy different namespaces; a parameter entity and
+a general entity with the same name are two distinct entities.
+</p>
+
+<div2 id='sec-references'>
+<head>Character and Entity References</head>
+<p><termdef id="dt-charref" term="Character Reference">
+A <term>character reference</term> refers to a specific character in the
+ISO/IEC 10646 character set, for example one not directly accessible from
+available input devices.
+<scrap lang='ebnf'>
+<head>Character Reference</head>
+<prod id='NT-CharRef'><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>Legal Character</head>
+<p>Characters referred to using character references must
+match the production for
+<termref def="NT-Char">Char</termref>.</p>
+</wfcnote>
+If the character reference begins with "<code>&amp;#x</code>", the digits and
+letters up to the terminating <code>;</code> provide a hexadecimal
+representation of the character's code point in ISO/IEC 10646.
+If it begins just with "<code>&amp;#</code>", the digits up to the terminating
+<code>;</code> provide a decimal representation of the character's
+code point.
+</termdef>
+</p>
+<p><termdef id="dt-entref" term="Entity Reference">An <term>entity
+reference</term> refers to the content of a named entity.</termdef>
+<termdef id='dt-GERef' term='General Entity Reference'>References to
+parsed general entities
+use ampersand (<code>&amp;</code>) and semicolon (<code>;</code>) as
+delimiters.</termdef>
+<termdef id='dt-PERef' term='Parameter-entity reference'>
+<term>Parameter-entity references</term> use percent-sign (<code>%</code>) and
+semicolon
+(<code>;</code>) as delimiters.</termdef>
+</p>
+<scrap lang="ebnf">
+<head>Entity Reference</head>
+<prod id='NT-Reference'><lhs>Reference</lhs>
+<rhs><nt def='NT-EntityRef'>EntityRef</nt>
+| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>
+<prod id='NT-EntityRef'><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+</prod>
+<prod id='NT-PEReference'><lhs>PEReference</lhs>
+<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<vc def='vc-entdeclared'/>
+<wfc def='norecursion'/>
+<wfc def='indtd'/>
+</prod>
+</scrap>
+
+<wfcnote id='wf-entdeclared'>
+<head>Entity Declared</head>
+<p>In a document without any DTD, a document with only an internal
+DTD subset which contains no parameter entity references, or a document with
+"<code>standalone='yes'</code>",
+the <nt def='NT-Name'>Name</nt> given in the entity reference must
+<termref def="dt-match">match</termref> that in an
+<titleref href='sec-entity-decl'>entity declaration</titleref>, except that
+well-formed documents need not declare
+any of the following entities: &magicents;.
+The declaration of a parameter entity must precede any reference to it.
+Similarly, the declaration of a general entity must precede any
+reference to it which appears in a default value in an attribute-list
+declaration.</p>
+<p>Note that if entities are declared in the external subset or in
+external parameter entities, a non-validating processor is
+<titleref href='include-if-valid'>not obligated to</titleref> read
+and process their declarations; for such documents, the rule that
+an entity must be declared is a well-formedness constraint only
+if <titleref href='sec-rmd'>standalone='yes'</titleref>.</p>
+</wfcnote>
+<vcnote id="vc-entdeclared">
+<head>Entity Declared</head>
+<p>In a document with an external subset or external parameter
+entities with "<code>standalone='no'</code>",
+the <nt def='NT-Name'>Name</nt> given in the entity reference must <termref
+def="dt-match">match</termref> that in an
+<titleref href='sec-entity-decl'>entity declaration</titleref>.
+For interoperability, valid documents should declare the entities
+&magicents;, in the form
+specified in <specref ref="sec-predefined-ent"/>.
+The declaration of a parameter entity must precede any reference to it.
+Similarly, the declaration of a general entity must precede any
+reference to it which appears in a default value in an attribute-list
+declaration.</p>
+</vcnote>
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+<wfcnote id='textent'>
+<head>Parsed Entity</head>
+<p>
+An entity reference must not contain the name of an <termref
+def="dt-unparsed">unparsed entity</termref>. Unparsed entities may be referred
+to only in <termref def="dt-attrval">attribute values</termref> declared to
+be of type <kw>ENTITY</kw> or <kw>ENTITIES</kw>.
+</p>
+</wfcnote>
+<wfcnote id='norecursion'>
+<head>No Recursion</head>
+<p>
+A parsed entity must not contain a recursive reference to itself,
+either directly or indirectly.
+</p>
+</wfcnote>
+<wfcnote id='indtd'>
+<head>In DTD</head>
+<p>
+Parameter-entity references may only appear in the
+<termref def='dt-doctype'>DTD</termref>.
+</p>
+</wfcnote>
+<p>Examples of character and entity references:
+<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg></p>
+<p>Example of a parameter-entity reference:
+<eg><![CDATA[<!-- declare the parameter entity "ISOLat2"... -->
+<!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+<!-- ... now reference it. -->
+%ISOLat2;]]></eg></p>
+</div2>
+
+<div2 id='sec-entity-decl'>
+<head>Entity Declarations</head>
+
+<p><termdef id="dt-entdecl" term="entity declaration">
+Entities are declared thus:
+<scrap lang='ebnf'>
+<head>Entity Declaration</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt><!--</rhs><com>General entities</com>
+<rhs>--> | <nt def="NT-PEDecl">PEDecl</nt></rhs>
+<!--<com>Parameter entities</com>-->
+</prod>
+<prod id='NT-GEDecl'><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-PEDecl'><lhs>PEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>
+<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<!--<com>Parameter entities</com>-->
+</prod>
+<prod id='NT-EntityDef'><lhs>EntityDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+<!--</rhs>
+<rhs>-->| (<nt def='NT-ExternalID'>ExternalID</nt>
+<nt def='NT-NDataDecl'>NDataDecl</nt>?)</rhs>
+<!-- <nt def='NT-ExternalDef'>ExternalDef</nt></rhs> -->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id='NT-PEDef'><lhs>PEDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+The <nt def='NT-Name'>Name</nt> identifies the entity in an
+<termref def="dt-entref">entity reference</termref> or, in the case of an
+unparsed entity, in the value of an <kw>ENTITY</kw> or <kw>ENTITIES</kw>
+attribute.
+If the same entity is declared more than once, the first declaration
+encountered is binding; at user option, an XML processor may issue a
+warning if entities are declared multiple times.</termdef>
+</p>
+
+<div3 id='sec-internal-ent'>
+<head>Internal Entities</head>
+
+<p><termdef id='dt-internent' term="Internal Entity Replacement Text">If
+the entity definition is an
+<nt def='NT-EntityValue'>EntityValue</nt>,
+the defined entity is called an <term>internal entity</term>.
+There is no separate physical
+storage object, and the content of the entity is given in the
+declaration. </termdef>
+Note that some processing of entity and character references in the
+<termref def='dt-litentval'>literal entity value</termref> may be required to
+produce the correct <termref def='dt-repltext'>replacement
+text</termref>: see <specref ref='intern-replacement'/>.
+</p>
+<p>An internal entity is a <termref def="dt-parsedent">parsed
+entity</termref>.</p>
+<p>Example of an internal entity declaration:
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the
+ specification."></eg></p>
+</div3>
+
+<div3 id='sec-external-ent'>
+<head>External Entities</head>
+
+<p><termdef id="dt-extent" term="External Entity">If the entity is not
+internal, it is an <term>external
+entity</term>, declared as follows:
+<scrap lang='ebnf'>
+<head>External Entity Declaration</head>
+<!--
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs></prod> -->
+<prod id='NT-ExternalID'><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>
+<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt></rhs>
+<vc def='not-declared'/></prod>
+</scrap>
+If the <nt def='NT-NDataDecl'>NDataDecl</nt> is present, this is a
+general <termref def="dt-unparsed">unparsed
+entity</termref>; otherwise it is a parsed entity.</termdef></p>
+<vcnote id='not-declared'>
+<head>Notation Declared</head>
+<p>
+The <nt def='NT-Name'>Name</nt> must match the declared name of a
+<termref def="dt-notation">notation</termref>.
+</p>
+</vcnote>
+<p><termdef id="dt-sysid" term="System Identifier">The
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+is called the entity's <term>system identifier</term>. It is a URI,
+which may be used to retrieve the entity.</termdef>
+Note that the hash mark (<code>#</code>) and fragment identifier
+frequently used with URIs are not, formally, part of the URI itself;
+an XML processor may signal an error if a fragment identifier is
+given as part of a system identifier.
+Unless otherwise provided by information outside the scope of this
+specification (e.g. a special XML element type defined by a particular
+DTD, or a processing instruction defined by a particular application
+specification), relative URIs are relative to the location of the
+resource within which the entity declaration occurs.
+A URI might thus be relative to the
+<termref def='dt-docent'>document entity</termref>, to the entity
+containing the <termref def='dt-doctype'>external DTD subset</termref>,
+or to some other <termref def='dt-extent'>external parameter entity</termref>.
+</p>
+<p>An XML processor should handle a non-ASCII character in a URI by
+representing the character in UTF-8 as one or more bytes, and then
+escaping these bytes with the URI escaping mechanism (i.e., by
+converting each byte to %HH, where HH is the hexadecimal notation of the
+byte value).</p>
+<p><termdef id="dt-pubid" term="Public identifier">
+In addition to a system identifier, an external identifier may
+include a <term>public identifier</term>.</termdef>
+An XML processor attempting to retrieve the entity's content may use the public
+identifier to try to generate an alternative URI. If the processor
+is unable to do so, it must use the URI specified in the system
+literal. Before a match is attempted, all strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p>
+<p>Examples of external entity declarations:
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif ></eg></p>
+</div3>
+
+</div2>
+
+<div2 id='TextEntities'>
+<head>Parsed Entities</head>
+<div3 id='sec-TextDecl'>
+<head>The Text Declaration</head>
+<p>External parsed entities may each begin with a <term>text
+declaration</term>.
+<scrap lang='ebnf'>
+<head>Text Declaration</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id='NT-TextDecl'><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>?
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>
+<nt def='NT-S'>S</nt>? &pic;</rhs>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>The text declaration must be provided literally, not
+by reference to a parsed entity.
+No text declaration may appear at any position other than the beginning of
+an external parsed entity.</p>
+</div3>
+<div3 id='wf-entities'>
+<head>Well-Formed Parsed Entities</head>
+<p>The document entity is well-formed if it matches the production labeled
+<nt def='NT-document'>document</nt>.
+An external general
+parsed entity is well-formed if it matches the production labeled
+<nt def='NT-extParsedEnt'>extParsedEnt</nt>.
+An external parameter
+entity is well-formed if it matches the production labeled
+<nt def='NT-extPE'>extPE</nt>.
+<scrap lang='ebnf'>
+<head>Well-Formed External Parsed Entity</head>
+<prod id='NT-extParsedEnt'><lhs>extParsedEnt</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-content'>content</nt></rhs>
+</prod>
+<prod id='NT-extPE'><lhs>extPE</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubsetDecl'>extSubsetDecl</nt></rhs>
+</prod>
+</scrap>
+An internal general parsed entity is well-formed if its replacement text
+matches the production labeled
+<nt def='NT-content'>content</nt>.
+All internal parameter entities are well-formed by definition.
+</p>
+<p>A consequence of well-formedness in entities is that the logical
+and physical structures in an XML document are properly nested; no
+<termref def='dt-stag'>start-tag</termref>,
+<termref def='dt-etag'>end-tag</termref>,
+<termref def="dt-empty">empty-element tag</termref>,
+<termref def='dt-element'>element</termref>,
+<termref def='dt-comment'>comment</termref>,
+<termref def='dt-pi'>processing instruction</termref>,
+<termref def='dt-charref'>character
+reference</termref>, or
+<termref def='dt-entref'>entity reference</termref>
+can begin in one entity and end in another.</p>
+</div3>
+<div3 id='charencoding'>
+<head>Character Encoding in Entities</head>
+
+<p>Each external parsed entity in an XML document may use a different
+encoding for its characters. All XML processors must be able to read
+entities in either UTF-8 or UTF-16.
+
+</p>
+<p>Entities encoded in UTF-16 must
+begin with the Byte Order Mark described by ISO/IEC 10646 Annex E and
+Unicode Appendix B (the ZERO WIDTH NO-BREAK SPACE character, #xFEFF).
+This is an encoding signature, not part of either the markup or the
+character data of the XML document.
+XML processors must be able to use this character to
+differentiate between UTF-8 and UTF-16 encoded documents.</p>
+<p>Although an XML processor is required to read only entities in
+the UTF-8 and UTF-16 encodings, it is recognized that other encodings are
+used around the world, and it may be desired for XML processors
+to read entities that use them.
+Parsed entities which are stored in an encoding other than
+UTF-8 or UTF-16 must begin with a <titleref href='TextDecl'>text
+declaration</titleref> containing an encoding declaration:
+<scrap lang='ebnf'>
+<head>Encoding Declaration</head>
+<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def='NT-Eq'>Eq</nt>
+('"' <nt def='NT-EncName'>EncName</nt> '"' |
+"'" <nt def='NT-EncName'>EncName</nt> "'" )
+</rhs>
+</prod>
+<prod id='NT-EncName'><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>Encoding name contains only Latin characters</com>
+</prod>
+</scrap>
+In the <termref def='dt-docent'>document entity</termref>, the encoding
+declaration is part of the <termref def="dt-xmldecl">XML declaration</termref>.
+The <nt def="NT-EncName">EncName</nt> is the name of the encoding used.
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>In an encoding declaration, the values
+"<code>UTF-8</code>",
+"<code>UTF-16</code>",
+"<code>ISO-10646-UCS-2</code>", and
+"<code>ISO-10646-UCS-4</code>" should be
+used for the various encodings and transformations of Unicode /
+ISO/IEC 10646, the values
+"<code>ISO-8859-1</code>",
+"<code>ISO-8859-2</code>", ...
+"<code>ISO-8859-9</code>" should be used for the parts of ISO 8859, and
+the values
+"<code>ISO-2022-JP</code>",
+"<code>Shift_JIS</code>", and
+"<code>EUC-JP</code>"
+should be used for the various encoded forms of JIS X-0208-1997. XML
+processors may recognize other encodings; it is recommended that
+character encodings registered (as <emph>charset</emph>s)
+with the Internet Assigned Numbers
+Authority <bibref ref='IANA'/>, other than those just listed, should be
+referred to
+using their registered names.
+Note that these registered names are defined to be
+case-insensitive, so processors wishing to match against them
+should do so in a case-insensitive
+way.</p>
+<p>In the absence of information provided by an external
+transport protocol (e.g. HTTP or MIME),
+it is an <termref def="dt-error">error</termref> for an entity including
+an encoding declaration to be presented to the XML processor
+in an encoding other than that named in the declaration,
+for an encoding declaration to occur other than at the beginning
+of an external entity, or for
+an entity which begins with neither a Byte Order Mark nor an encoding
+declaration to use an encoding other than UTF-8.
+Note that since ASCII
+is a subset of UTF-8, ordinary ASCII entities do not strictly need
+an encoding declaration.</p>
+
+<p>It is a <termref def='dt-fatal'>fatal error</termref> when an XML processor
+encounters an entity with an encoding that it is unable to process.</p>
+<p>Examples of encoding declarations:
+<eg>&lt;?xml encoding='UTF-8'?>
+&lt;?xml encoding='EUC-JP'?></eg></p>
+</div3>
+</div2>
+<div2 id='entproc'>
+<head>XML Processor Treatment of Entities and References</head>
+<p>The table below summarizes the contexts in which character references,
+entity references, and invocations of unparsed entities might appear and the
+required behavior of an <termref def='dt-xml-proc'>XML processor</termref> in
+each case.
+The labels in the leftmost column describe the recognition context:
+<glist>
+<gitem><label>Reference in Content</label>
+<def><p>as a reference
+anywhere after the <termref def='dt-stag'>start-tag</termref> and
+before the <termref def='dt-etag'>end-tag</termref> of an element; corresponds
+to the nonterminal <nt def='NT-content'>content</nt>.</p></def>
+</gitem>
+<gitem>
+<label>Reference in Attribute Value</label>
+<def><p>as a reference within either the value of an attribute in a
+<termref def='dt-stag'>start-tag</termref>, or a default
+value in an <termref def='dt-attdecl'>attribute declaration</termref>;
+corresponds to the nonterminal
+<nt def='NT-AttValue'>AttValue</nt>.</p></def></gitem>
+<gitem>
+<label>Occurs as Attribute Value</label>
+<def><p>as a <nt def='NT-Name'>Name</nt>, not a reference, appearing either as
+the value of an
+attribute which has been declared as type <kw>ENTITY</kw>, or as one of
+the space-separated tokens in the value of an attribute which has been
+declared as type <kw>ENTITIES</kw>.</p>
+</def></gitem>
+<gitem><label>Reference in Entity Value</label>
+<def><p>as a reference
+within a parameter or internal entity's
+<termref def='dt-litentval'>literal entity value</termref> in
+the entity's declaration; corresponds to the nonterminal
+<nt def='NT-EntityValue'>EntityValue</nt>.</p></def></gitem>
+<gitem><label>Reference in DTD</label>
+<def><p>as a reference within either the internal or external subsets of the
+<termref def='dt-doctype'>DTD</termref>, but outside
+of an <nt def='NT-EntityValue'>EntityValue</nt> or
+<nt def="NT-AttValue">AttValue</nt>.</p></def>
+</gitem>
+</glist></p>
+<htable border='1' cellpadding='7' align='center'>
+<htbody>
+<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>
+<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>Entity Type</td>
+<td bgcolor='&cellback;' rowspan='2' align='center'>Character</td>
+</tr>
+<tr align='center' valign='bottom'>
+<td bgcolor='&cellback;'>Parameter</td>
+<td bgcolor='&cellback;'>Internal
+General</td>
+<td bgcolor='&cellback;'>External Parsed
+General</td>
+<td bgcolor='&cellback;'>Unparsed</td>
+</tr>
+<tr align='center' valign='middle'>
+
+<td bgcolor='&cellback;' align='right'>Reference
+in Content</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Not recognized</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+<td bgcolor='&cellback;'><titleref href='include-if-valid'>Included if validating</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Reference
+in Attribute Value</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Not recognized</titleref></td>
+<td bgcolor='&cellback;'><titleref href='inliteral'>Included in literal</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Occurs as
+Attribute Value</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Not recognized</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='notify'>Notify</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not recognized'>Not recognized</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Reference
+in EntityValue</td>
+<td bgcolor='&cellback;'><titleref href='inliteral'>Included in literal</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>Bypassed</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>Bypassed</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Included</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>Reference
+in DTD</td>
+<td bgcolor='&cellback;'><titleref href='as-PE'>Included as PE</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>Forbidden</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id='not-recognized'>
+<head>Not Recognized</head>
+<p>Outside the DTD, the <code>%</code> character has no
+special significance; thus, what would be parameter entity references in the
+DTD are not recognized as markup in <nt def='NT-content'>content</nt>.
+Similarly, the names of unparsed entities are not recognized except
+when they appear in the value of an appropriately declared attribute.
+</p>
+</div3>
+<div3 id='included'>
+<head>Included</head>
+<p><termdef id="dt-include" term="Include">An entity is
+<term>included</term> when its
+<termref def='dt-repltext'>replacement text</termref> is retrieved
+and processed, in place of the reference itself,
+as though it were part of the document at the location the
+reference was recognized.
+The replacement text may contain both
+<termref def='dt-chardata'>character data</termref>
+and (except for parameter entities) <termref def="dt-markup">markup</termref>,
+which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" and the remaining ampersand is not recognized
+as an entity-reference delimiter.)
+A character reference is <term>included</term> when the indicated
+character is processed in place of the reference itself.
+</termdef></p>
+</div3>
+<div3 id='include-if-valid'>
+<head>Included If Validating</head>
+<p>When an XML processor recognizes a reference to a parsed entity, in order
+to <termref def="dt-valid">validate</termref>
+the document, the processor must
+<termref def="dt-include">include</termref> its
+replacement text.
+If the entity is external, and the processor is not
+attempting to validate the XML document, the
+processor <termref def="dt-may">may</termref>, but need not,
+include the entity's replacement text.
+If a non-validating parser does not include the replacement text,
+it must inform the application that it recognized, but did not
+read, the entity.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p>
+</div3>
+<div3 id='forbidden'>
+<head>Forbidden</head>
+<p>The following are forbidden, and constitute
+<termref def='dt-fatal'>fatal</termref> errors:
+<ulist>
+<item><p>the appearance of a reference to an
+<termref def='dt-unparsed'>unparsed entity</termref>.
+</p></item>
+<item><p>the appearance of any character or general-entity reference in the
+DTD except within an <nt def='NT-EntityValue'>EntityValue</nt> or
+<nt def="NT-AttValue">AttValue</nt>.</p></item>
+<item><p>a reference to an external entity in an attribute value.</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id='inliteral'>
+<head>Included in Literal</head>
+<p>When an <termref def='dt-entref'>entity reference</termref> appears in an
+attribute value, or a parameter entity reference appears in a literal entity
+value, its <termref def='dt-repltext'>replacement text</termref> is
+processed in place of the reference itself as though it
+were part of the document at the location the reference was recognized,
+except that a single or double quote character in the replacement text
+is always treated as a normal data character and will not terminate the
+literal.
+For example, this is well-formed:
+<eg><![CDATA[<!ENTITY % YN '"Yes"' >
+<!ENTITY WhatHeSaid "He said &YN;" >]]></eg>
+while this is not:
+<eg>&lt;!ENTITY EndAttr "27'" >
+&lt;element attribute='a-&amp;EndAttr;></eg>
+</p></div3>
+<div3 id='notify'>
+<head>Notify</head>
+<p>When the name of an <termref def='dt-unparsed'>unparsed
+entity</termref> appears as a token in the
+value of an attribute of declared type <kw>ENTITY</kw> or <kw>ENTITIES</kw>,
+a validating processor must inform the
+application of the <termref def='dt-sysid'>system</termref>
+and <termref def='dt-pubid'>public</termref> (if any)
+identifiers for both the entity and its associated
+<termref def="dt-notation">notation</termref>.</p>
+</div3>
+<div3 id='bypass'>
+<head>Bypassed</head>
+<p>When a general entity reference appears in the
+<nt def='NT-EntityValue'>EntityValue</nt> in an entity declaration,
+it is bypassed and left as is.</p>
+</div3>
+<div3 id='as-PE'>
+<head>Included as PE</head>
+<p>Just as with external parsed entities, parameter entities
+need only be <titleref href='include-if-valid'>included if
+validating</titleref>.
+When a parameter-entity reference is recognized in the DTD
+and included, its
+<termref def='dt-repltext'>replacement
+text</termref> is enlarged by the attachment of one leading and one following
+space (#x20) character; the intent is to constrain the replacement
+text of parameter
+entities to contain an integral number of grammatical tokens in the DTD.
+</p>
+</div3>
+
+</div2>
+<div2 id='intern-replacement'>
+<head>Construction of Internal Entity Replacement Text</head>
+<p>In discussing the treatment
+of internal entities, it is
+useful to distinguish two forms of the entity's value.
+<termdef id="dt-litentval" term='Literal Entity Value'>The <term>literal
+entity value</term> is the quoted string actually
+present in the entity declaration, corresponding to the
+non-terminal <nt def='NT-EntityValue'>EntityValue</nt>.</termdef>
+<termdef id='dt-repltext' term='Replacement Text'>The <term>replacement
+text</term> is the content of the entity, after
+replacement of character references and parameter-entity
+references.
+</termdef></p>
+
+<p>The literal entity value
+as given in an internal entity declaration
+(<nt def='NT-EntityValue'>EntityValue</nt>) may contain character,
+parameter-entity, and general-entity references.
+Such references must be contained entirely within the
+literal entity value.
+The actual replacement text that is
+<termref def='dt-include'>included</termref> as described above
+must contain the <emph>replacement text</emph> of any
+parameter entities referred to, and must contain the character
+referred to, in place of any character references in the
+literal entity value; however,
+general-entity references must be left as-is, unexpanded.
+For example, given the following declarations:
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+then the replacement text for the entity "<code>book</code>" is:
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+The general-entity reference "<code>&amp;rights;</code>" would be expanded
+should the reference "<code>&amp;book;</code>" appear in the document's
+content or an attribute value.</p>
+<p>These simple rules may have complex interactions; for a detailed
+discussion of a difficult example, see
+<specref ref='sec-entexpand'/>.
+</p>
+
+</div2>
+<div2 id='sec-predefined-ent'>
+<head>Predefined Entities</head>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+<p>All XML processors must recognize these entities whether they
+are declared or not.
+<termref def='dt-interop'>For interoperability</termref>,
+valid XML documents should declare these
+entities, like any others, before using them.
+If the entities in question are declared, they must be declared
+as internal entities whose replacement text is the single
+character being escaped or a character reference to
+that character, as shown below.
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+Note that the <code>&lt;</code> and <code>&amp;</code> characters
+in the declarations of "<code>lt</code>" and "<code>amp</code>"
+are doubly escaped to meet the requirement that entity replacement
+be well-formed.
+</p>
+</div2>
+
+<div2 id='Notations'>
+<head>Notation Declarations</head>
+
+<p><termdef id="dt-notation" term="Notation"><term>Notations</term> identify by
+name the format of <termref def="dt-extent">unparsed
+entities</termref>, the
+format of elements which bear a notation attribute,
+or the application to which
+a <termref def="dt-pi">processing instruction</termref> is
+addressed.</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>Notation declarations</term>
+provide a name for the notation, for use in
+entity and attribute-list declarations and in attribute specifications,
+and an external identifier for the notation which may allow an XML
+processor or its client application to locate a helper application
+capable of processing data in the given notation.
+<scrap lang='ebnf'>
+<head>Notation Declarations</head>
+<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+(<nt def='NT-ExternalID'>ExternalID</nt> |
+<nt def='NT-PublicID'>PublicID</nt>)
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+<prod id='NT-PublicID'><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>XML processors must provide applications with the name and external
+identifier(s) of any notation declared and referred to in an attribute
+value, attribute definition, or entity declaration. They may
+additionally resolve the external identifier into the
+<termref def="dt-sysid">system identifier</termref>,
+file name, or other information needed to allow the
+application to call a processor for data in the notation described. (It
+is not an error, however, for XML documents to declare and refer to
+notations for which notation-specific applications are not available on
+the system where the XML processor or application is running.)</p>
+</div2>
+
+
+<div2 id='sec-doc-entity'>
+<head>Document Entity</head>
+
+<p><termdef id="dt-docent" term="Document Entity">The <term>document
+entity</term> serves as the root of the entity
+tree and a starting-point for an <termref def="dt-xml-proc">XML
+processor</termref>.</termdef>
+This specification does
+not specify how the document entity is to be located by an XML
+processor; unlike other entities, the document entity has no name and might
+well appear on a processor input stream
+without any identification at all.</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+
+<div1 id='sec-conformance'>
+<head>Conformance</head>
+
+<div2 id='proc-types'>
+<head>Validating and Non-Validating Processors</head>
+<p>Conforming <termref def="dt-xml-proc">XML processors</termref> fall into two
+classes: validating and non-validating.</p>
+<p>Validating and non-validating processors alike must report
+violations of this specification's well-formedness constraints
+in the content of the
+<termref def='dt-docent'>document entity</termref> and any
+other <termref def='dt-parsedent'>parsed entities</termref> that
+they read.</p>
+<p><termdef id="dt-validating" term="Validating Processor">
+<term>Validating processors</term> must report
+violations of the constraints expressed by the declarations in the
+<termref def="dt-doctype">DTD</termref>, and
+failures to fulfill the validity constraints given
+in this specification.
+</termdef>
+To accomplish this, validating XML processors must read and process the entire
+DTD and all external parsed entities referenced in the document.
+</p>
+<p>Non-validating processors are required to check only the
+<termref def='dt-docent'>document entity</termref>, including
+the entire internal DTD subset, for well-formedness.
+<termdef id='dt-use-mdecl' term='Process Declarations'>
+While they are not required to check the document for validity,
+they are required to
+<term>process</term> all the declarations they read in the
+internal DTD subset and in any parameter entity that they
+read, up to the first reference
+to a parameter entity that they do <emph>not</emph> read; that is to
+say, they must
+use the information in those declarations to
+<titleref href='AVNormalize'>normalize</titleref> attribute values,
+<titleref href='included'>include</titleref> the replacement text of
+internal entities, and supply
+<titleref href='sec-attr-defaults'>default attribute values</titleref>.
+</termdef>
+They must not <termref def='dt-use-mdecl'>process</termref>
+<termref def='dt-entdecl'>entity declarations</termref> or
+<termref def='dt-attdecl'>attribute-list declarations</termref>
+encountered after a reference to a parameter entity that is not
+read, since the entity may have contained overriding declarations.
+</p>
+</div2>
+<div2 id='safe-behavior'>
+<head>Using XML Processors</head>
+<p>The behavior of a validating XML processor is highly predictable; it
+must read every piece of a document and report all well-formedness and
+validity violations.
+Less is required of a non-validating processor; it need not read any
+part of the document other than the document entity.
+This has two effects that may be important to users of XML processors:
+<ulist>
+<item><p>Certain well-formedness errors, specifically those that require
+reading external entities, may not be detected by a non-validating processor.
+Examples include the constraints entitled
+<titleref href='wf-entdeclared'>Entity Declared</titleref>,
+<titleref href='wf-textent'>Parsed Entity</titleref>, and
+<titleref href='wf-norecursion'>No Recursion</titleref>, as well
+as some of the cases described as
+<titleref href='forbidden'>forbidden</titleref> in
+<specref ref='entproc'/>.</p></item>
+<item><p>The information passed from the processor to the application may
+vary, depending on whether the processor reads
+parameter and external entities.
+For example, a non-validating processor may not
+<titleref href='AVNormalize'>normalize</titleref> attribute values,
+<titleref href='included'>include</titleref> the replacement text of
+internal entities, or supply
+<titleref href='sec-attr-defaults'>default attribute values</titleref>,
+where doing so depends on having read declarations in
+external or parameter entities.</p></item>
+</ulist>
+</p>
+<p>For maximum reliability in interoperating between different XML
+processors, applications which use non-validating processors should not
+rely on any behaviors not required of such processors.
+Applications which require facilities such as the use of default
+attributes or internal entities which are declared in external
+entities should use validating XML processors.</p>
+</div2>
+</div1>
+
+<div1 id='sec-notation'>
+<head>Notation</head>
+
+<p>The formal grammar of XML is given in this specification using a simple
+Extended Backus-Naur Form (EBNF) notation. Each rule in the grammar defines
+one symbol, in the form
+<eg>symbol ::= expression</eg></p>
+<p>Symbols are written with an initial capital letter if they are
+defined by a regular expression, or with an initial lower case letter
+otherwise.
+Literal strings are quoted.
+
+</p>
+
+<p>Within the expression on the right-hand side of a rule, the following
+expressions are used to match strings of one or more characters:
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>where <code>N</code> is a hexadecimal integer, the
+expression matches the character in ISO/IEC 10646 whose canonical
+(UCS-4)
+code value, when interpreted as an unsigned binary number, has
+the value indicated. The number of leading zeros in the
+<code>#xN</code> form is insignificant; the number of leading
+zeros in the corresponding code value
+is governed by the character
+encoding in use and is not significant for XML.</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>matches any <termref def='dt-character'>character</termref>
+with a value in the range(s) indicated (inclusive).</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>matches any <termref def='dt-character'>character</termref>
+with a value <emph>outside</emph> the
+range indicated.</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>matches any <termref def='dt-character'>character</termref>
+with a value not among the characters given.</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>matches a literal string <termref def="dt-match">matching</termref>
+that given inside the double quotes.</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>matches a literal string <termref def="dt-match">matching</termref>
+that given inside the single quotes.</p></def>
+</gitem>
+</glist>
+These symbols may be combined to match more complex patterns as follows,
+where <code>A</code> and <code>B</code> represent simple expressions:
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code> is treated as a unit
+and may be combined as described in this list.</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p>matches <code>A</code> or nothing; optional <code>A</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p>matches <code>A</code> followed by <code>B</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p>matches <code>A</code> or <code>B</code> but not both.</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p>matches any string that matches <code>A</code> but does not match
+<code>B</code>.
+</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p>matches one or more occurrences of <code>A</code>.</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p>matches zero or more occurrences of <code>A</code>.</p></def>
+</gitem>
+
+</glist>
+Other notations used in the productions are:
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>comment.</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>well-formedness constraint; this identifies by name a
+constraint on
+<termref def="dt-wellformed">well-formed</termref> documents
+associated with a production.</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>validity constraint; this identifies by name a constraint on
+<termref def="dt-valid">valid</termref> documents associated with
+a production.</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+
+<!-- &Biblio; -->
+<div1 id='sec-bibliography'>
+
+<head>References</head>
+<div2 id='sec-existing-stds'>
+<head>Normative References</head>
+
+<blist>
+<bibl id='IANA' key='IANA'>
+(Internet Assigned Numbers Authority) <emph>Official Names for
+Character Sets</emph>,
+ed. Keld Simonsen et al.
+See <loc href='ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets'>ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets</loc>.
+</bibl>
+
+<bibl id='RFC1766' key='IETF RFC 1766'>
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id='ISO639' key='ISO 639'>
+(International Organization for Standardization).
+<emph>ISO 639:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id='ISO3166' key='ISO 3166'>
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id='ISO10646' key='ISO/IEC 10646'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id='Unicode' key='Unicode'>The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>Other References</head>
+
+<blist>
+
+<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id='ABK' key='Brüggemann-Klein'>Brüggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+
+</bibl>
+
+<bibl id='ABKDW' key='Brüggemann-Klein and Wood'>Brüggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universität Freiburg, Institut für Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id='Clark' key='Clark'>James Clark.
+Comparison of SGML and XML. See
+<loc href='http://www.w3.org/TR/NOTE-sgml-xml-971215'>http://www.w3.org/TR/NOTE-sgml-xml-971215</loc>.
+</bibl>
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id='ISO8879' key='ISO 8879'>ISO
+(International Organization for Standardization).
+<emph>ISO 8879:1986(E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id='ISO10744' key='ISO/IEC 10744'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id='CharClasses'>
+<head>Character Classes</head>
+<p>Following the characteristics defined in the Unicode standard,
+characters are classed as base characters (among others, these
+contain the alphabetic characters of the Latin alphabet, without
+diacritics), ideographic characters, and combining characters (among
+others, this class contains most diacritics); these classes combine
+to form the class of letters. Digits and extenders are
+also distinguished.
+<scrap lang="ebnf" id="CHARACTERS">
+<head>Characters</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id='NT-BaseChar'><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id='NT-Ideographic'><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;[#x05BB-#x05BD]
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;[#x064B-#x0652]
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;[#x06DD-#x06DF]
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id='NT-Digit'><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id='NT-Extender'><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>The character classes defined here can be derived from the
+Unicode character database as follows:
+<ulist>
+<item>
+<p>Name start characters must have one of the categories Ll, Lu,
+Lo, Lt, Nl.</p>
+</item>
+<item>
+<p>Name characters other than Name-start characters
+must have one of the categories Mc, Me, Mn, Lm, or Nd.</p>
+</item>
+<item>
+<p>Characters in the compatibility area (i.e. with character code
+greater than #xF900 and less than #xFFFE) are not allowed in XML
+names.</p>
+</item>
+<item>
+<p>Characters which have a font or compatibility decomposition (i.e. those
+with a "compatibility formatting tag" in field 5 of the database --
+marked by field 5 beginning with a "&lt;") are not allowed.</p>
+</item>
+<item>
+<p>The following characters are treated as name-start characters
+rather than name characters, because the property file classifies
+them as Alphabetic: [#x02BB-#x02C1], #x0559, #x06E5, #x06E6.</p>
+</item>
+<item>
+<p>Characters #x20DD-#x20E0 are excluded (in accordance with
+Unicode, section 5.14).</p>
+</item>
+<item>
+<p>Character #x00B7 is classified as an extender, because the
+property list so identifies it.</p>
+</item>
+<item>
+<p>Character #x0387 is added as a name character, because #x00B7
+is its canonical equivalent.</p>
+</item>
+<item>
+<p>Characters ':' and '_' are allowed as name-start characters.</p>
+</item>
+<item>
+<p>Characters '-' and '.' are allowed as name characters.</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XML and SGML</head>
+
+<p>XML is designed to be a subset of SGML, in that every
+<termref def="dt-valid">valid</termref> XML document should also be a
+conformant SGML document.
+For a detailed comparison of the additional restrictions that XML places on
+documents beyond those of SGML, see <bibref ref='Clark'/>.
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>Expansion of Entity and Character References</head>
+<p>This appendix contains some examples illustrating the
+sequence of entity- and character-reference recognition and
+expansion, as specified in <specref ref='entproc'/>.</p>
+<p>
+If the DTD contains the declaration
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+then the XML processor will recognize the character references
+when it parses the entity declaration, and resolve them before
+storing the following string as the
+value of the entity "<code>example</code>":
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+A reference in the document to "<code>&amp;example;</code>"
+will cause the text to be reparsed, at which time the
+start- and end-tags of the "<code>p</code>" element will be recognized
+and the three references will be recognized and expanded,
+resulting in a "<code>p</code>" element with the following content
+(all data, no delimiters or markup):
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>A more complex example will illustrate the rules and their
+effects fully. In the following example, the line numbers are
+solely for reference.
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+This produces the following:
+<ulist spacing="compact">
+<item><p>in line 4, the reference to character 37 is expanded immediately,
+and the parameter entity "<code>xx</code>" is stored in the symbol
+table with the value "<code>%zz;</code>". Since the replacement text
+is not rescanned, the reference to parameter entity "<code>zz</code>"
+is not recognized. (And it would be an error if it were, since
+"<code>zz</code>" is not yet declared.)</p></item>
+<item><p>in line 5, the character reference "<code>&amp;#60;</code>" is
+expanded immediately and the parameter entity "<code>zz</code>" is
+stored with the replacement text
+"<code>&lt;!ENTITY tricky "error-prone" ></code>",
+which is a well-formed entity declaration.</p></item>
+<item><p>in line 6, the reference to "<code>xx</code>" is recognized,
+and the replacement text of "<code>xx</code>" (namely
+"<code>%zz;</code>") is parsed. The reference to "<code>zz</code>"
+is recognized in its turn, and its replacement text
+("<code>&lt;!ENTITY tricky "error-prone" ></code>") is parsed.
+The general entity "<code>tricky</code>" has now been
+declared, with the replacement text "<code>error-prone</code>".</p></item>
+<item><p>
+in line 8, the reference to the general entity "<code>tricky</code>" is
+recognized, and it is expanded, so the full content of the
+"<code>test</code>" element is the self-describing (and ungrammatical) string
+<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>Deterministic Content Models</head>
+<p><termref def='dt-compat'>For compatibility</termref>, it is
+required
+that content models in element type declarations be deterministic.
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGML
+requires deterministic content models (it calls them
+"unambiguous"); XML processors built using SGML systems may
+flag non-deterministic content models as errors.</p>
+<p>For example, the content model <code>((b, c) | (b, d))</code> is
+non-deterministic, because given an initial <code>b</code> the parser
+cannot know which <code>b</code> in the model is being matched without
+looking ahead to see which element follows the <code>b</code>.
+In this case, the two references to
+<code>b</code> can be collapsed
+into a single reference, making the model read
+<code>(b, (c | d))</code>. An initial <code>b</code> now clearly
+matches only a single name in the content model. The parser doesn't
+need to look ahead to see what follows; either <code>c</code> or
+<code>d</code> would be accepted.</p>
+<p>More formally: a finite state automaton may be constructed from the
+content model using the standard algorithms, e.g. algorithm 3.5
+in section 3.9
+of Aho, Sethi, and Ullman <bibref ref='Aho'/>.
+In many such algorithms, a follow set is constructed for each
+position in the regular expression (i.e., each leaf
+node in the
+syntax tree for the regular expression);
+if any position has a follow set in which
+more than one following position is
+labeled with the same element type name,
+then the content model is in error
+and may be reported as an error.
+</p>
+<p>Algorithms exist which allow many but not all non-deterministic
+content models to be reduced automatically to equivalent deterministic
+models; see Brüggemann-Klein 1991 <bibref ref='ABK'/>.</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>Autodetection of Character Encodings</head>
+<p>The XML encoding declaration functions as an internal label on each
+entity, indicating which character encoding is in use. Before an XML
+processor can read the internal label, however, it apparently has to
+know what character encoding is in use&mdash;which is what the internal label
+is trying to indicate. In the general case, this is a hopeless
+situation. It is not entirely hopeless in XML, however, because XML
+limits the general case in two ways: each implementation is assumed
+to support only a finite set of character encodings, and the XML
+encoding declaration is restricted in position and content in order to
+make it feasible to autodetect the character encoding in use in each
+entity in normal cases. Also, in many cases other sources of information
+are available in addition to the XML data stream itself.
+Two cases may be distinguished,
+depending on whether the XML entity is presented to the
+processor without, or with, any accompanying
+(external) information. We consider the first case first.
+</p>
+<p>
+Because each XML entity not in UTF-8 or UTF-16 format <emph>must</emph>
+begin with an XML encoding declaration, in which the first characters
+must be '<code>&lt;?xml</code>', any conforming processor can detect,
+after two to four octets of input, which of the following cases apply.
+In reading this list, it may help to know that in UCS-4, '&lt;' is
+"<code>#x0000003C</code>" and '?' is "<code>#x0000003F</code>", and the Byte
+Order Mark required of UTF-16 data streams is "<code>#xFEFF</code>".</p>
+<p>
+<ulist>
+<item>
+<p><code>00 00 00 3C</code>: UCS-4, big-endian machine (1234 order)</p>
+</item>
+<item>
+<p><code>3C 00 00 00</code>: UCS-4, little-endian machine (4321 order)</p>
+</item>
+<item>
+<p><code>00 00 3C 00</code>: UCS-4, unusual octet order (2143)</p>
+</item>
+<item>
+<p><code>00 3C 00 00</code>: UCS-4, unusual octet order (3412)</p>
+</item>
+<item>
+<p><code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p><code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p><code>00 3C 00 3F</code>: UTF-16, big-endian, no Byte Order Mark
+(and thus, strictly speaking, in error)</p>
+</item>
+<item>
+<p><code>3C 00 3F 00</code>: UTF-16, little-endian, no Byte Order Mark
+(and thus, strictly speaking, in error)</p>
+</item>
+<item>
+<p><code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, some part of ISO 8859,
+Shift-JIS, EUC, or any other 7-bit, 8-bit, or mixed-width encoding
+which ensures that the characters of ASCII have their normal positions,
+width,
+and values; the actual encoding declaration must be read to
+detect which of these applies, but since all of these encodings
+use the same bit patterns for the ASCII characters, the encoding
+declaration itself may be read reliably
+</p>
+</item>
+<item>
+<p><code>4C 6F A7 94</code>: EBCDIC (in some flavor; the full
+encoding declaration must be read to tell which code page is in
+use)</p>
+</item>
+<item>
+<p>other: UTF-8 without an encoding declaration, or else
+the data stream is corrupt, fragmentary, or enclosed in
+a wrapper of some kind</p>
+</item>
+</ulist>
+</p>
+<p>
+This level of autodetection is enough to read the XML encoding
+declaration and parse the character-encoding identifier, which is
+still necessary to distinguish the individual members of each family
+of encodings (e.g. to tell UTF-8 from 8859, and the parts of 8859
+from each other, or to distinguish the specific EBCDIC code page in
+use, and so on).
+</p>
+<p>
+Because the contents of the encoding declaration are restricted to
+ASCII characters, a processor can reliably read the entire encoding
+declaration as soon as it has detected which family of encodings is in
+use. Since in practice, all widely used character encodings fall into
+one of the categories above, the XML encoding declaration allows
+reasonably reliable in-band labeling of character encodings, even when
+external sources of information at the operating-system or
+transport-protocol level are unreliable.
+</p>
+<p>
+Once the processor has detected the character encoding in use, it can
+act appropriately, whether by invoking a separate input routine for
+each case, or by calling the proper conversion function on each
+character of input.
+</p>
+<p>
+Like any self-labeling system, the XML encoding declaration will not
+work if any software changes the entity's character set or encoding
+without updating the encoding declaration. Implementors of
+character-encoding routines should be careful to ensure the accuracy
+of the internal and external information used to label the entity.
+</p>
+<p>The second possible case occurs when the XML entity is accompanied
+by encoding information, as in some file systems and some network
+protocols.
+When multiple sources of information are available,
+
+their relative
+priority and the preferred method of handling conflict should be
+specified as part of the higher-level protocol used to deliver XML.
+Rules for the relative priority of the internal label and the
+MIME-type label in an external header, for example, should be part of the
+RFC document defining the text/xml and application/xml MIME types. In
+the interests of interoperability, however, the following rules
+are recommended.
+<ulist>
+<item><p>If an XML entity is in a file, the Byte-Order Mark
+and encoding-declaration PI are used (if present) to determine the
+character encoding. All other heuristics and sources of information
+are solely for error recovery.
+</p></item>
+<item><p>If an XML entity is delivered with a
+MIME type of text/xml, then the <code>charset</code> parameter
+on the MIME type determines the
+character encoding method; all other heuristics and sources of
+information are solely for error recovery.
+</p></item>
+<item><p>If an XML entity is delivered
+with a
+MIME type of application/xml, then the Byte-Order Mark and
+encoding-declaration PI are used (if present) to determine the
+character encoding. All other heuristics and sources of
+information are solely for error recovery.
+</p></item>
+</ulist>
+These rules apply only in the absence of protocol-level documentation;
+in particular, when the MIME types text/xml and application/xml are
+defined, the recommendations of the relevant RFC will supersede
+these rules.
+</p>
+
+</inform-div1>
+
+<inform-div1 id="sec-xml-wg">
+<head>W3C XML Working Group</head>
+
+<p>This specification was prepared and approved for publication by the
+W3C XML Working Group (WG). WG approval of this specification does
+not necessarily imply that all WG members voted for its approval.
+The current and former members of the XML WG are:</p>
+
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML
+Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name><role>W3C Liaison</role></member>
+<member><name>Paula Angerstein, Texcel</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, ISOGEN</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>Makoto Murata, Fuji Xerox Information Systems</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Conleth O'Connell, Vignette</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-default-dtd-file:"~/sgml/spec.ced"
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
diff --git a/test/valid/UTF16Entity.xml b/test/valid/UTF16Entity.xml
new file mode 100644
index 0000000..8bb29ac
--- /dev/null
+++ b/test/valid/UTF16Entity.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (root*)>
+<!ELEMENT root EMPTY>
+<!ENTITY utf16b SYSTEM "dtds/utf16b.ent">
+<!ENTITY utf16l SYSTEM "dtds/utf16l.ent">
+]>
+
+<foo> &utf16b; &utf16l; </foo>
diff --git a/test/valid/dia.xml b/test/valid/dia.xml
new file mode 100644
index 0000000..3ab3d06
--- /dev/null
+++ b/test/valid/dia.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!DOCTYPE dia:diagram [
+<!ELEMENT dia:diagram (dia:diagramdata, (dia:layer)*) >
+<!ATTLIST dia:diagram
+ xmlns:dia CDATA #FIXED "http://www.lysator.liu.se/~alla/dia/">
+
+
+<!ELEMENT dia:diagramdata (dia:attribute)* >
+
+<!ELEMENT dia:layer (dia:object | dia:group)*>
+<!ATTLIST dia:layer
+ dia:name CDATA #REQUIRED
+ dia:visible (true|false) #REQUIRED >
+
+<!ELEMENT dia:object ((dia:attribute)*, dia:connections?)>
+<!ATTLIST dia:object
+ dia:type CDATA #REQUIRED
+ dia:version NMTOKEN #REQUIRED
+ dia:id ID #REQUIRED >
+
+<!ELEMENT dia:connections (dia:connection)*>
+
+<!ELEMENT dia:connection EMPTY>
+<!ATTLIST dia:connection
+ dia:handle NMTOKEN #REQUIRED
+ dia:to IDREF #REQUIRED
+ dia:connection NMTOKEN #REQUIRED>
+
+<!ELEMENT dia:group (dia:object | dia:group)*>
+
+<!ELEMENT dia:attribute (dia:composite | dia:int | dia:enum | dia:real | dia:boolean |
+ dia:color | dia:point | dia:rectangle | dia:string | dia:font)*>
+<!ATTLIST dia:attribute dia:name CDATA #REQUIRED >
+
+<!ELEMENT dia:composite (dia:attribute)*>
+<!ATTLIST dia:composite dia:type CDATA #IMPLIED>
+
+<!ELEMENT dia:int EMPTY>
+<!ATTLIST dia:int dia:val NMTOKEN #REQUIRED>
+
+<!ELEMENT dia:enum EMPTY>
+<!ATTLIST dia:enum dia:val NMTOKEN #REQUIRED>
+
+<!ELEMENT dia:real EMPTY>
+<!ATTLIST dia:real dia:val CDATA #REQUIRED>
+
+<!ELEMENT dia:boolean EMPTY>
+<!ATTLIST dia:boolean dia:val (true|false) #REQUIRED>
+
+<!ELEMENT dia:color EMPTY>
+<!ATTLIST dia:color dia:val CDATA #REQUIRED>
+
+<!ELEMENT dia:point EMPTY>
+<!ATTLIST dia:point dia:val CDATA #REQUIRED>
+
+<!ELEMENT dia:rectangle EMPTY>
+<!ATTLIST dia:rectangle dia:val CDATA #REQUIRED>
+
+<!ELEMENT dia:string EMPTY>
+<!ATTLIST dia:string dia:val CDATA #IMPLIED>
+
+<!ELEMENT dia:font EMPTY>
+<!ATTLIST dia:font dia:name CDATA #REQUIRED>
+]>
+
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute dia:name="background">
+ <dia:color dia:val="#ffffff"/>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer dia:name="Background" dia:visible="true">
+ <dia:object dia:type="Standard - Line" dia:version="0" dia:id="O0">
+ <dia:attribute dia:name="obj_pos">
+ <dia:point dia:val="1.95,6.85"/>
+ </dia:attribute>
+ <dia:attribute dia:name="obj_bb">
+ <dia:rectangle dia:val="1.9,6.8;11,8.55"/>
+ </dia:attribute>
+ <dia:attribute dia:name="conn_endpoints">
+ <dia:point dia:val="1.95,6.85"/>
+ <dia:point dia:val="10.95,8.5"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_color">
+ <dia:color dia:val="#000000"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_width">
+ <dia:real dia:val="0.1"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_style">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ <dia:attribute dia:name="start_arrow">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ <dia:attribute dia:name="end_arrow">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection dia:handle="1" dia:to="O2" dia:connection="3"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object dia:type="Standard - Text" dia:version="0" dia:id="O1">
+ <dia:attribute dia:name="obj_pos">
+ <dia:point dia:val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute dia:name="obj_bb">
+ <dia:rectangle dia:val="2.579,3.96359;7.021,4.96359"/>
+ </dia:attribute>
+ <dia:attribute dia:name="text">
+ <dia:composite dia:type="text">
+ <dia:attribute dia:name="string">
+ <dia:string dia:val="sdfsdfg"/>
+ </dia:attribute>
+ <dia:attribute dia:name="font">
+ <dia:font dia:name="Courier"/>
+ </dia:attribute>
+ <dia:attribute dia:name="height">
+ <dia:real dia:val="1"/>
+ </dia:attribute>
+ <dia:attribute dia:name="pos">
+ <dia:point dia:val="4.8,4.75"/>
+ </dia:attribute>
+ <dia:attribute dia:name="color">
+ <dia:color dia:val="#000000"/>
+ </dia:attribute>
+ <dia:attribute dia:name="alignment">
+ <dia:enum dia:val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object dia:type="Standard - Box" dia:version="0" dia:id="O2">
+ <dia:attribute dia:name="obj_pos">
+ <dia:point dia:val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute dia:name="obj_bb">
+ <dia:rectangle dia:val="10.9,7.45;13.05,9.55"/>
+ </dia:attribute>
+ <dia:attribute dia:name="elem_corner">
+ <dia:point dia:val="10.95,7.5"/>
+ </dia:attribute>
+ <dia:attribute dia:name="elem_width">
+ <dia:real dia:val="2.05"/>
+ </dia:attribute>
+ <dia:attribute dia:name="elem_height">
+ <dia:real dia:val="2"/>
+ </dia:attribute>
+ <dia:attribute dia:name="border_width">
+ <dia:real dia:val="0.1"/>
+ </dia:attribute>
+ <dia:attribute dia:name="border_color">
+ <dia:color dia:val="#000000"/>
+ </dia:attribute>
+ <dia:attribute dia:name="inner_color">
+ <dia:color dia:val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute dia:name="line_style">
+ <dia:enum dia:val="0"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
diff --git a/test/valid/dtds/127772.dtd b/test/valid/dtds/127772.dtd
new file mode 100644
index 0000000..873fb35
--- /dev/null
+++ b/test/valid/dtds/127772.dtd
@@ -0,0 +1,7 @@
+<!ELEMENT a (b*)>
+
+<!ELEMENT b (#PCDATA)>
+<!ATTLIST b xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
+ xlink:type (simple) #FIXED 'simple'
+ xlink:href CDATA #IMPLIED>
+
diff --git a/test/valid/dtds/694228.dtd b/test/valid/dtds/694228.dtd
new file mode 100644
index 0000000..7abc19f
--- /dev/null
+++ b/test/valid/dtds/694228.dtd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!ENTITY entity "This is an external entity that uses non-ASCII characters… 日本">
+<!ELEMENT root (#PCDATA)>
diff --git a/test/valid/dtds/NewsMLv1.0.dtd b/test/valid/dtds/NewsMLv1.0.dtd
new file mode 100644
index 0000000..5799b29
--- /dev/null
+++ b/test/valid/dtds/NewsMLv1.0.dtd
@@ -0,0 +1,1578 @@
+<!--
+ ===========================================
+ NewsML Document Type Definition Version 1.0
+ ===========================================
+ International Press Telecommunications Council
+ 6 October 2000
+ Copyright (c) IPTC, 2000
+ All rights reserved
+ NewsML is a trademark of IPTC
+
+ ======================================
+ DO NOT REMOVE THESE LICENCE CONDITIONS
+ ======================================
+ LICENCE OF THE IPTC NewsML TRADEMARK TO NON-MEMBERS OF THE IPTC
+
+Use of the IPTC trademark shall be licensed by the IPTC ("the Licensor") to a
+Non-Member ("the Licensee") in consideration of the following obligations
+undertaken by the Licensee under the terms of this contract.
+
+ 1. The Licensee recognises the Licensor as the sole owner of the intellectual
+ property protected by the trademark.
+
+ 2. The Licensee recognises that the Licensor has the right to grant licenses
+ of the intellectual property protected by the trademark and has agreed to
+ grant such a licence to the Licensee in the terms set out in this contract.
+
+ 3. The Licensee shall not during the subsistence of this contract or at any
+ future time register to use in its own name as proprietor any of the
+ intellectual property protected by the trademark.
+
+ 4. The Licensee shall not claim any right title or interest in the
+ intellectual property or any part of it save as is granted by this contract.
+
+ 5. The Licensee shall immediately call to the attention of the Licensor the use
+ of any part of the intellectual property by any third party or any activity
+ of any third party which might in the opinion of the Licensee amount to
+ infringement of the rights protected by the trademark.
+
+ 6. The Licensee shall not assign the benefit of this contract or grant any
+ sub-licence without the prior written consent of the Licensor.
+
+ 7. Use of the IPTC trademark is licensed only to those Licensees who comply
+ with the requirements of the official published description of NewsML.
+
+ 8. The Licensee promises to respect the integrity and quality standard of the
+ trademark and shall refrain from all acts and omissions which threaten the
+ integrity of the trademark as a mark of quality.
+
+ 9. The Licensee shall communicate immediately to the IPTC any instances of
+ actual or suspected misuse or non-compliance with the official published
+ description of NewsML which come to the attention of the Licensee.
+
+10. The Licensee shall, at the request of the IPTC Management Committee acting
+ unanimously, accede to any reasonable request of the IPTC to inspect the
+ address of the Licensee to verify compliance and each Licensee shall afford
+ to the IPTC such assistance as is requested by the IPTC in response to the
+ latter's reasonable enquiries in instances of suspected non-compliance with
+ the official published description of NewsML requirements.
+
+The Licensee shall from time to time provide the IPTC with the full address of
+its place of business and that place will be deemed the Licensee's address.
+
+The IPTC reserves the right to terminate the use of the trademark by the
+Licensee at any time without notice or without the need to give reasons to the
+Licensee for such termination.
+
+This contract shall be governed and construed in accordance with the laws of
+England and Wales whose courts shall be courts of competent jurisdiction.
+-->
+<!--
+ ================
+ NOTE ON SPELLING
+ ================
+NewsML element and attribute names use US-English spellings. With this
+exception, this DTD and its accompanying specification use British English
+spellings.
+-->
+<!--
+ =============================
+ PARAMETER ENTITY DECLARATIONS
+ =============================
+-->
+<!--
+================================================================================
+ Attribute sets
+================================================================================
+-->
+<!--
+================================== assignment ==================================
+AssignedBy
+==========
+An identifier for the party assigning a piece of metadata. This can be a
+string that designates the party informally (for example, a person's name),
+or a pointer in the form a fragment identifier consisting of a # character
+followed by the Duid of a Topic corresponding to the party.
+
+Importance
+==========
+An indication of the importance the party assigning a piece of metadata
+attaches to it. The value of the Importance attribute is a formal name for a
+level of importance. Its meaning and permitted values are determined by a
+controlled vocabulary.
+
+Confidence
+==========
+An indication of the confidence with which a piece of metadata has been
+assigned. The value of the Confidence attribute is a formal name for a
+degree of confidence. Its meaning and permitted values are determined by a
+controlled vocabulary.
+
+HowPresent
+==========
+An indication of the way in which a piece of metadata applies. The value of
+the HowPresent attribute is a formal name for the way the metadata applies.
+Its meaning and permitted values are determined by a controlled vocabulary.
+
+DateAndTime
+===========
+The date and (optionally) time at which a piece of metadata was assigned.
+
+Uses the format CCYYMMDDTHHMMSS{+or-}HHMM (century, year, month, day, time
+separator, hours, minutes, seconds, timezone separator, hours, minutes). If
+only the Date is needed, then the substring from T onwards may be omitted.
+
+This is the Basic Format defined by ISO 8601. CCYY is a 4-digit year number.
+MM is a 2-digit month number. DD is a 2-digit day number. T is the letter 'T'.
+HH is a 2-digit hour number (using a 24-hour clock). MM is a 2 digit minute
+number. (Note that midnight may be represented as 2400 or 240000 on the date
+of the day that is ending, or as 0000 or 000000 on the date of the day that is
+beginning.)
+
+{+or-} is the '+' character or the '-' character, and the following HHMM are
+hours and minutes of offset from Universal Co-ordinated Time (UTC) as defined
+by ISO 8601. If the time is being expressed in UTC, then the timezone offset
+may be '+0000' or '-0000'. If the time is behind UTC, the timezone separator
+is '-'. If the time is ahead of UTC the timezone separator is '+'.
+
+Example: 10:27 p.m. in New York on 31 December 2000 would be expressed as
+"20001231T222700-0500" as New York is five hours behind UTC in winter.
+At the same moment in London, the date and time would be expressed as
+time would be expressed as "20010101T032700+0000" or as , "20010101T00+0000", as
+in London, it is now 3:27 a.m. on 1 January 2001. At the same moment in Paris,
+the date and time would be expressed as "20010101T042700+0100", as Paris is one
+hour ahead of UTC in winter, and it is now 4:27 a.m. on 1 January 2001.
+================================================================================
+
+-->
+<!ENTITY % assignment " AssignedBy CDATA #IMPLIED
+ Importance CDATA #IMPLIED
+ Confidence CDATA #IMPLIED
+ HowPresent CDATA #IMPLIED
+ DateAndTime CDATA #IMPLIED">
+
+<!--
+================================= formalname ===================================
+
+FormalName
+==========
+A string of characters whose meaning is determined by a controlled vocabulary.
+
+Vocabulary
+==========
+The Vocabulary attribute, if present, provides a pointer to a TopicSet which is
+the controlled vocabulary that can be used to resolve the meaning of the
+FormalName. The value of the Vocabulary attribute is an http URL or a NewsML
+URN, or the # character followed by the value of the Duid attribute of the a
+TopicSet in the current document.
+
+If there is no Vocabulary attribute, then the controlled vocabulary to be used
+is located by the following algorithm:
+- Proceed to the parent of the current element.
+- If it has a Catalog element as its immediate child, see whether that Catalog
+ contains a Resource element whose DefaultVocabularyFor child contains an XPath
+ pattern that is matched by the current element. If so, then the controlled
+ vocabulary is the resource identified by that Resource element.
+- If the parent does not meet the above condition, proceed to its parent and
+ check the same condition.
+- Continue until a vocabulary is found, or no further parent elements are
+ available because the root element has been reached and it too fails to meet
+ the condition.
+
+If there is no Vocabulary attribute and the above algorithm fails to identify
+a resource that serves as the controlled vocabulary, there is an error, which
+the NewsML system may signal to the user.
+
+The NewsML system may also signal an error if a vocabulary is successfully
+identified, but it contains no item that matches the value of the FormalName
+whose meaning is sought.
+
+Scheme
+======
+The Scheme attribute, if present, serves to distinguish which of possibly
+multiple naming schemes in the controlled vocabulary is the one that governs
+this FormalName. For a match to be obtained within the controlled vocabulary,
+the rule is that the FormalName and the Scheme must both match. If there is
+no Scheme attribute on the current element, the match will be to an item in
+the vocabulary that has the current formal name and no scheme. If there is a
+Scheme attribute on the current element, then both the formal name and the
+scheme in the controlled vocabulary must match.
+================================================================================
+-->
+<!ENTITY % formalname " FormalName CDATA #REQUIRED
+ Vocabulary CDATA #IMPLIED
+ Scheme CDATA #IMPLIED">
+
+<!--
+=================================== localid ====================================
+
+Duid
+====
+Duid is a "Document-unique Identifier". It must satisfy the rules for XML ID
+attributes: it must only contain name characters, and it must start with a
+name-start character (not a digit). Its value must be unique within any NewsML
+document.
+
+Every NewsML element type has Duid as an optional attribute. Combined with the
+Identifier element, providing a value for the Duid of any element in a NewsML
+document makes the element globally identifiable. The Identifier element gives
+global identification to the document, and the Duid provides local
+identification for the element within the document.
+
+Euid
+====
+Euid is an "Element-unique Identifier". Its value must be unique among elements
+of the same element-type and having the same parent element.
+
+Use of Euid attribute makes it possible to identify any NewsML element within
+the context of its local branch of the NewsML document tree. This makes it
+possible to copy, or include by reference, subtrees into new combinations in
+ways that would break the uniqueness of Duids (thereby forcing new Duids to be
+allocated), but still being able to retain the identity of each element. If
+Euids are maintained at every level, it is possible to identify, for example
+"The ContentItem whose Euid is abc within the NewsComponent whose Euid is def".
+Such identification patterns would be preserved even after "pruning and
+grafting" of subtrees.
+================================================================================
+-->
+<!ENTITY % localid " Duid ID #IMPLIED
+ Euid CDATA #IMPLIED">
+
+<!--
+================================================================================
+ Content Models
+================================================================================
+-->
+<!--
+===================================== data =====================================
+Where data is included, it may be directly in the form of a DataContent element,
+or in the form of DataContent wrapped in an Encoding element, or by reference
+through an Href attribute, in which case neither a DataContent nor an Encoding
+element will be present.
+================================================================================
+-->
+<!ENTITY % data " (Encoding
+ | DataContent )?">
+
+<!--
+==================================== party =====================================
+Person, organisation or company playing a specific role in the
+news workflow. The role being played is determined by the parent element. More
+information about it can be provided in the optional Comment subelements.
+================================================================================
+
+-->
+<!ENTITY % party " (Comment*
+ , Party+ )">
+
+<!--
+ =========================
+ ELEMENT TYPE DECLARATIONS
+ =========================
+-->
+<!--
+============================ AdministrativeMetadata ============================
+Information about the provenance of a NewsComponent.
+================================================================================
+-->
+<!ELEMENT AdministrativeMetadata (Catalog? , FileName? , SystemIdentifier? , Provider? , Creator? , Source* , Contributor* , Property* )>
+<!ATTLIST AdministrativeMetadata %localid; >
+<!--
+
+================================ AssociatedWith ================================
+A reference to a NewsItem with which this one is associated (for example, a
+series of articles, or a collection of photos, of which it is a part). The
+NewsItem attribute identifies the relevant NewsItem. Its value can be an
+http URL or a NewsML URN as described in the comment to PublicIdentifier. The
+Comment can be used to indicate the nature of the association.
+================================================================================
+
+-->
+<!ELEMENT AssociatedWith (Comment* )>
+<!ATTLIST AssociatedWith %localid;
+ NewsItem CDATA #IMPLIED >
+<!--
+================================ BasisForChoice ================================
+The content of this element is an XPath statement or element-type name
+identifying information within each NewsComponent or ContentItem that can be
+used as a basis for choice between equivalent NewsComponents or ContentItems.
+The root of the XPath corresponds to the NewsComponent or ContentItem itself.
+The optional Rank attribute allows providers to place a numerical order on the
+importance they think should be attached to the different bases for choice.
+Smaller numbers represent higher importance.
+================================================================================
+-->
+<!ELEMENT BasisForChoice (#PCDATA )>
+<!ATTLIST BasisForChoice %localid;
+ Rank CDATA #IMPLIED >
+<!--
+
+==================================== ByLine ====================================
+A natural-language statement of the author/creator information.
+================================================================================
+-->
+<!ELEMENT ByLine (#PCDATA | Origin )*>
+<!ATTLIST ByLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+=================================== Catalog ====================================
+A container for Resource and TopicUse elements. Resource elements map URNs to
+URLs and indicate default vocabularies which apply to the formal names of
+certain elements within the subtree that begins with the immediate parent of
+the Catalog element. TopicUse elements indicate where in the NewsML document
+certain Topics are used. The optional Href attribute provides a pointer to
+a Catalog element elsewhere in this or another document. Its value consists of
+a # character followed by the value of the Duid attribute of the referenced
+Catalog element and preceded, if the referenced Catalog is not in the current
+document, by an http URL or a NewsML URN identifying the document or NewsItem
+in which the Catalog appears. If the Href attribute is present on a Catalog
+element, then that element should be empty. If it contains subelements, the
+NewsML system may signal an error.
+================================================================================
+-->
+<!ELEMENT Catalog (Resource* , TopicUse* )>
+<!ATTLIST Catalog %localid;
+ Href CDATA #IMPLIED >
+<!--
+=============================== Characteristics ================================
+Information about the physical characteristics of a ContentItem.
+================================================================================
+-->
+<!ELEMENT Characteristics (SizeInBytes? , Property* )>
+<!ATTLIST Characteristics %localid; >
+<!--
+=================================== Comment ====================================
+A natural-language description of, or statement about, the current element. The
+optional TranslationOf attribute is a pointer to another Comment element, of
+which this one is a direct translation.
+================================================================================
+-->
+<!ELEMENT Comment (#PCDATA )>
+<!ATTLIST Comment %localid;
+ xml:lang CDATA #IMPLIED
+ TranslationOf IDREF #IMPLIED >
+<!--
+================================= ContentItem ==================================
+A news object that carries or identifies content intended for presentation to
+humans.
+================================================================================
+-->
+<!ELEMENT ContentItem (Comment* , Catalog? , MediaType? , Format? , MimeType? , Notation? , Characteristics? , %data; )>
+<!ATTLIST ContentItem %localid;
+ Href CDATA #IMPLIED >
+<!--
+================================= Contributor ==================================
+An individual and/or company or organisation that modified or enhanced a news
+object after its creation.
+================================================================================
+-->
+<!ELEMENT Contributor (%party; )>
+<!ATTLIST Contributor %localid; >
+<!--
+================================== Copyright ===================================
+The copyright that pertains to a news object.
+================================================================================
+-->
+<!ELEMENT Copyright (Comment* , CopyrightHolder , CopyrightDate )>
+<!ATTLIST Copyright %localid;
+ %assignment; >
+<!--
+================================ CopyrightDate =================================
+A natural-language statement of the copyright date.
+================================================================================
+
+-->
+<!ELEMENT CopyrightDate (#PCDATA | Origin )*>
+<!ATTLIST CopyrightDate %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+=============================== CopyrightHolder ================================
+A natural-language statement indicating who owns the copyright.
+================================================================================
+-->
+<!ELEMENT CopyrightHolder (#PCDATA | Origin )*>
+<!ATTLIST CopyrightHolder %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================ CopyrightLine =================================
+A natural-language statement of the copyright information.
+================================================================================
+-->
+<!ELEMENT CopyrightLine (#PCDATA | Origin )*>
+<!ATTLIST CopyrightLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+=================================== Creator ====================================
+An individual and/or company or organisation that created a news object.
+================================================================================
+-->
+<!ELEMENT Creator (%party; )>
+<!ATTLIST Creator %localid; >
+<!--
+================================== CreditLine ==================================
+A natural-language statement of credit information.
+================================================================================
+-->
+<!ELEMENT CreditLine (#PCDATA | Origin )*>
+<!ATTLIST CreditLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================= DataContent ==================================
+The data that carries the content of a ContentItem.
+================================================================================
+-->
+<!ELEMENT DataContent ANY>
+<!ATTLIST DataContent %localid; >
+<!--
+================================= DateAndTime ==================================
+A formal representation of a date and, optionally, time, expressed in ISO 8601
+Basic Format, as described in the comment to the DateAndTime attribute within
+the assignment ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT DateAndTime (#PCDATA )>
+<!ATTLIST DateAndTime %localid; >
+<!--
+==================================== DateId ====================================
+A date identifier of a NewsItem in short ISO 8601 Basic Format (CCYYMMDD), as
+described in the comment to the DateAndTime attribute within the assignment
+ENTITY declaration above. The DateId is part of the formal identification of the
+NewsItem, and must remain the same through successive revisions of the same
+NewsItem.
+================================================================================
+-->
+<!ELEMENT DateId (#PCDATA )>
+
+<!--
+================================== DateLabel ===================================
+A string representation of a date or date and time, used by human users to help
+identify a NewsItem.
+================================================================================
+-->
+<!ELEMENT DateLabel (#PCDATA )>
+<!ATTLIST DateLabel %localid; >
+<!--
+=================================== DateLine ===================================
+A natural-language statement of the date and/or place of creation.
+================================================================================
+-->
+<!ELEMENT DateLine (#PCDATA | Origin )*>
+<!ATTLIST DateLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+============================ DefaultVocabularyFor ==============================
+An indication that the parent Resource provides the default vocabulary that
+determines the meanings and permitted values of the data occurring in a
+particular part of a NewsML document subtree. The Context attribute is an
+XPath statement identifying the data to which the default vocabulary applies.
+The optional Scheme attribute identifies the relevant naming scheme if the
+Resource contains more than one naming scheme. If the Resource is a NewsML
+TopicSet, then the meaning of the data identified by the Context is provided
+by the Topic whose FormalName subelement matches that data. If the Resource is
+not a NewsML TopicSet, then the way in which it is interpreted in order to
+provide a meaning for the data is not defined by NewsML but by the authority
+that governs whatever format the Resource uses.
+
+Example:
+<DescriptiveMetadata>
+ <Catalog>
+ <Resource Duid="resource1">
+ <Urn>urn:newsml:iptc.org:20001006:Ranking:1</Urn>
+ <Url>www.iptc.com/vocabularies/iptc-rank.xml</Url>
+ <DefaultVocabularyFor Context="@Confidence"/>
+ <DefaultVocabularyFor Context="@Importance"/>
+ </Resource>
+ <Resource Duid="resource2">
+ <Urn>urn:newsml:iptc.org:20001006:TopicTypes:1</Urn>
+ <Url>www.iptc.com/vocabularies/iptc-topictype.xml</Url>
+ <DefaultVocabularyFor Context="TopicType@FormalName"/>
+ </Resource>
+ </Catalog>
+ <TopicSet>
+ <Topic Duid="topic1">
+ <TopicType FormalName="Person">
+ <Description Variant="Name">Bill Clinton</Description>
+ <Description Variant="Position">President of the USA</Description>
+ </Topic>
+ </TopicSet>
+ <TopicOccurrence
+ AssignedBy="Desk Editor"
+ Confidence="High"
+ HowPresent="principal subject"
+ Topic="#topic1"/>
+</DescriptiveMetadata>
+================================================================================
+-->
+<!ELEMENT DefaultVocabularyFor EMPTY>
+<!ATTLIST DefaultVocabularyFor %localid;
+ Context CDATA #REQUIRED
+ Scheme CDATA #IMPLIED >
+<!--
+==================================== Delete ====================================
+An instruction to delete an element within a NewsItem. The NewsItem is
+the previous revision of the current one, and the element to be deleted is the
+one whose Duid value is equal to the value of the Delete element's DuidRef
+attribute.
+================================================================================
+-->
+<!ELEMENT Delete EMPTY>
+<!ATTLIST Delete %localid;
+ DuidRef CDATA #REQUIRED >
+<!--
+================================= DerivedFrom ==================================
+A reference to an NewsItem from which this one is derived. The NewsItem attribute
+identifies the relevant NewsItem. Its value can be an http URL or a NewsML URN
+as described in the comment to PublicIdentifier.
+================================================================================
+-->
+<!ELEMENT DerivedFrom (Comment* )>
+<!ATTLIST DerivedFrom %localid;
+ NewsItem CDATA #IMPLIED >
+<!--
+================================= Description ==================================
+A description that identifies a Topic, thereby indicating the meaning of a
+formal name associated with that Topic. The xml:lang attribute indicates what
+language the description is in. The optional Variant attribute allows multiple
+descriptions to be given in the same language, and meaningfully distinguished
+from one another.
+================================================================================
+-->
+<!ELEMENT Description (#PCDATA )>
+<!ATTLIST Description %localid;
+ xml:lang CDATA #IMPLIED
+ Variant CDATA #IMPLIED >
+<!--
+============================= DescriptiveMetadata ==============================
+Information describing the content of a NewsComponent.
+================================================================================
+-->
+<!ELEMENT DescriptiveMetadata (Catalog? , Language* , Genre? , SubjectCode* , OfInterestTo* , TopicOccurrence* , Property* )>
+<!ATTLIST DescriptiveMetadata %localid;
+ %assignment; >
+<!--
+=================================== Encoding ===================================
+The encoding of the data comprising the content of a ContentItem.
+================================================================================
+-->
+<!ELEMENT Encoding %data;>
+<!ATTLIST Encoding %localid;
+ Notation CDATA #REQUIRED >
+<!--
+=================================== EndDate ====================================
+A natural-language statement of the date at which specified usage rights come
+to an end.
+================================================================================
+-->
+<!ELEMENT EndDate (#PCDATA | Origin )*>
+<!ATTLIST EndDate %localid;
+ xml:lang CDATA #IMPLIED
+ %assignment; >
+<!--
+=================================== FileName ===================================
+The suggested or actual storage file name for a NewsItem.
+================================================================================
+-->
+<!ELEMENT FileName (#PCDATA )>
+<!ATTLIST FileName %localid; >
+<!--
+================================= FirstCreated =================================
+The date and, optionally, time at which a NewsItem was first created, expressed
+in ISO 8601 Basic Format, as described in the comment to the DateAndTime
+attribute within the assignment ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT FirstCreated (#PCDATA )>
+<!ATTLIST FirstCreated %localid; >
+<!--
+================================= FormalName ===================================
+A string of characters whose meaning is determined by a naming scheme within a
+controlled vocabulary. The controlled vocabulary may (but is not required to)
+take the form of a NewsML TopicSet. The optional Scheme attribute determines
+which naming scheme applies, when several exist within the same controlled
+vocabulary.
+================================================================================
+-->
+<!ELEMENT FormalName (#PCDATA )>
+<!ATTLIST FormalName %localid;
+ Scheme CDATA #IMPLIED >
+<!--
+==================================== Format ====================================
+An indication of the format of a ContentItem. The value of the FormalName
+attribute is a formal name for the Format. Its meaning and permitted values are
+determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Format EMPTY>
+<!ATTLIST Format %localid;
+ %formalname; >
+<!--
+================================= FutureStatus =================================
+An indication of the status a NewsItem will have at a specified future date. The
+value of the FormalName attribute is a formal name for the FutureStatus. Its
+meaning is determined by a controlled vocabulary as described in the comment
+to the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT FutureStatus EMPTY>
+<!ATTLIST FutureStatus %localid;
+ %formalname; >
+<!--
+==================================== Genre =====================================
+An indication of the Genre of a NewsComponent. The value of the FormalName
+attribute is a formal name for the Genre. Its meaning and permitted values are
+determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Genre EMPTY>
+<!ATTLIST Genre %localid;
+ %formalname;
+ %assignment; >
+<!--
+================================== Geography ===================================
+A natural-language statement of the geographical area or areas to which
+specified usage rights apply.
+================================================================================
+-->
+<!ELEMENT Geography (#PCDATA | Origin )*>
+<!ATTLIST Geography %localid;
+ xml:lang CDATA #IMPLIED
+ %assignment; >
+<!--
+=================================== HeadLine ===================================
+A displayable headline.
+================================================================================
+-->
+<!ELEMENT HeadLine (#PCDATA | Origin )*>
+<!ATTLIST HeadLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================ Identification ================================
+Identification information for the NewsItem.
+================================================================================
+-->
+<!ELEMENT Identification (NewsIdentifier , NameLabel? , DateLabel? , Label* )>
+<!ATTLIST Identification %localid; >
+<!--
+================================= InsertAfter ==================================
+An instruction to insert content after a designated element within a NewsItem.
+The content to be inserted is the content of the InsertAfter element. The
+NewsItem into which it is to be inserted is the previous revision of the current
+one, and the element after which it is to be inserted is the one whose Duid
+value is equal to the value of the InsertAfter element's DuidRef attribute.
+================================================================================
+-->
+<!ELEMENT InsertAfter ANY>
+<!ATTLIST InsertAfter %localid;
+ DuidRef CDATA #REQUIRED >
+<!--
+================================= InsertBefore =================================
+An instruction to insert content before a designated element within a NewsItem.
+The content to be inserted is the content of the InsertBefore element. The
+NewsItem into which it is to be inserted is the previous revision of the current
+one, and the element before which it is to be inserted is the one whose Duid
+value is equal to the value of the InsertBefore element's DuidRef attribute.
+================================================================================
+-->
+<!ELEMENT InsertBefore ANY>
+<!ATTLIST InsertBefore %localid;
+ DuidRef CDATA #REQUIRED >
+<!--
+================================= Instruction ==================================
+An instruction from a news provider to the recipient of a NewsItem. A special
+case of Instruction is an indication of the effect the current revision of a
+NewsItem has on the status of any previous revisions of the NewsItem that may
+still be on the recipient's system. In this case, it will contain one or more
+RevisionStatus elements. Otherwise, the value of the FormalName attribute is a
+formal name for the Instruction, and its meaning is determined by a controlled
+vocabulary as described in the comment to the formalname ENTITY declaration
+above.
+================================================================================
+-->
+<!ELEMENT Instruction (RevisionStatus* )>
+<!ATTLIST Instruction %localid;
+ %formalname; >
+<!--
+================================= KeywordLine ==================================
+A displayable set of keywords relevant to a news object. This can be used by a
+NewsML system to assist manual or automated searches.
+================================================================================
+-->
+<!ELEMENT KeywordLine (#PCDATA | Origin )*>
+<!ATTLIST KeywordLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+==================================== Label =====================================
+A human-readable label for a NewsItem.
+================================================================================
+-->
+<!ELEMENT Label (LabelType , LabelText )>
+<!ATTLIST Label %localid; >
+<!--
+=================================== LabelText ==================================
+The text that constitutes a Label of a given LabelType.
+================================================================================
+-->
+<!ELEMENT LabelText (#PCDATA )>
+<!ATTLIST LabelText %localid; >
+<!--
+================================= LabelType ====================================
+A user-defined type of label. The value of the FormalName attribute is a formal
+name for the LabelType. Its meaning and permitted values are determined by a
+controlled vocabulary as described in the comment to the formalname ENTITY
+declaration above.
+================================================================================
+-->
+<!ELEMENT LabelType EMPTY>
+<!ATTLIST LabelType %localid;
+ %formalname; >
+<!--
+=================================== Language ===================================
+An indication of the, or a, language used in a content item. The value of the
+FormalName attribute is a formal name for the Language. Its meaning and
+permitted values are determined by a controlled vocabulary as described in the
+comment to the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Language EMPTY>
+<!ATTLIST Language %localid;
+ %formalname;
+ %assignment; >
+<!--
+================================= Limitations ==================================
+A natural-language statement of the terms and conditions that apply to the
+specified usage rights.
+================================================================================
+-->
+<!ELEMENT Limitations (#PCDATA | Origin )*>
+<!ATTLIST Limitations %localid;
+ xml:lang CDATA #IMPLIED
+ %assignment; >
+<!--
+================================== MediaType ===================================
+An indication of the media type of a ContentItem. The value of the FormalName
+attribute is a formal name for the MediaType. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT MediaType EMPTY>
+<!ATTLIST MediaType %localid;
+ %formalname; >
+<!--
+=================================== Metadata ===================================
+An container for a user-defined type of metadata.
+================================================================================
+-->
+<!ELEMENT Metadata (Catalog? , MetadataType , Property+ )>
+<!ATTLIST Metadata %localid; >
+<!--
+=============================== MetadataType ===================================
+An indication of the type of metadata that is represented by the Property
+elements within this Metadata element. The value of the FormalName attribute is
+a formal name for the MetadataType. Its meaning and permitted values are
+determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT MetadataType EMPTY>
+<!ATTLIST MetadataType %localid;
+ %formalname; >
+<!--
+=================================== MimeType ===================================
+An indication of the MIME-type of a ContentItem. The value of the FormalName
+attribute is a formal name for the MimeType. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT MimeType EMPTY>
+<!ATTLIST MimeType %localid;
+ %formalname; >
+<!--
+================================== NameLabel ===================================
+A string used by human users as a name to help identify a NewsItem. Its form is
+determined by the provider. It might be identical to the textual content of
+the SlugLine element, for example, but even if this is so, the system should not
+process the NameLabel as a slugline. Nothing can be assumed about the nature of
+the string within NameLabel beyond the fact that it can help to identify the
+NewsItem to humans.
+================================================================================
+-->
+<!ELEMENT NameLabel (#PCDATA )>
+<!ATTLIST NameLabel %localid; >
+<!--
+================================ NewsComponent =================================
+A container for news objects, used to identify the role of news objects in
+relation to one another, and to ascribe metadata to them. The Essential
+attribute indicates whether the provider considers that this NewsComponent
+is essential to the meaning of the NewsComponent within which it is contained.
+The EquivalentsList attribute indicates whether or not the NewsItems or
+NewsItemRefs, NewsComponents or ContentItems contained within this one are
+equivalent to one another in content and/or meaning
+================================================================================
+-->
+<!ELEMENT NewsComponent (Comment* , Catalog? , TopicSet* , Role? , BasisForChoice* , NewsLines? , AdministrativeMetadata? , RightsMetadata? , DescriptiveMetadata? , Metadata* , ( (NewsItem | NewsItemRef )+ | NewsComponent+ | ContentItem+ )? )>
+<!ATTLIST NewsComponent %localid;
+ Essential (yes | no ) 'no'
+ EquivalentsList (yes | no ) 'no'
+ xml:lang CDATA #IMPLIED >
+<!--
+================================= NewsEnvelope =================================
+Information about the transmission of one or more NewsItems as a NewsML
+document.
+================================================================================
+-->
+<!ELEMENT NewsEnvelope (TransmissionId? , SentFrom? , SentTo? , DateAndTime , NewsService* , NewsProduct* , Priority? )>
+<!ATTLIST NewsEnvelope %localid; >
+<!--
+================================ NewsIdentifier ================================
+A globally unique identifier for a NewsItem.
+================================================================================
+-->
+<!ELEMENT NewsIdentifier (ProviderId , DateId , NewsItemId , RevisionId , PublicIdentifier )>
+
+<!--
+=================================== NewsItem ===================================
+A managed set of information representing a point of view, at a given time, on
+some event or events. Its Identification and NewsManagement provide
+manageability. It may contain either a NewsComponent, or one or more Updates
+that modify aspects of a previous Revision of the same NewsItem, or a
+TopicSet.
+================================================================================
+-->
+<!ELEMENT NewsItem (Comment* , Catalog? , Identification , NewsManagement , (NewsComponent | Update+ | TopicSet )? )>
+<!ATTLIST NewsItem %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================== NewsItemId ==================================
+An identifier for the NewsItem. The combination of NewsItemId and DateId must
+be unique among NewsItems that emanate from the same provider. Within these
+constraints, the NewsItemId can take any form the provider wishes. It may take
+the form of a name for the NewsItem that will be meaningful to humans, but this
+is not a requirement. The provider may optionally relate the values of
+NewsItemId to a controlled vocabulary, which is invoked by the Vocabulary
+attribute. The value ofthe Vocabulary attribute may be an http URL, a NewsML
+URN, or the # character followed by the value of the Duid attribute of a
+TopicSet in the current document. The Scheme attribute, if present, serves to
+distinguish which of possibly multiple naming schemes in the controlled
+vocabulary is the one that governs the NewsItemId.
+================================================================================
+-->
+<!ELEMENT NewsItemId (#PCDATA )>
+<!ATTLIST NewsItemId Vocabulary CDATA #IMPLIED
+ Scheme CDATA #IMPLIED >
+<!--
+================================= NewsItemRef ==================================
+A pointer to a NewsItem that is deemed to replace the NewsItemRef element. The
+NewsItem attribute is a pointer to the relevant NewsItem. Its value can be an
+http URL, or a NewsML URN as described in the comment to PublicIdentifier, or a
+fragment identifier consisting of a # character followed by the Duid of a
+NewsItem in the current document.
+================================================================================
+-->
+<!ELEMENT NewsItemRef (Comment* )>
+<!ATTLIST NewsItemRef %localid;
+ NewsItem CDATA #IMPLIED >
+<!--
+================================= NewsItemType =================================
+An indication of the type of a NewsItem. The value of the FormalName attribute
+is a formal name for the NewsItemType. Its meaning and permitted values are
+determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT NewsItemType EMPTY>
+<!ATTLIST NewsItemType %localid;
+ %formalname; >
+<!--
+=================================== NewsLine ===================================
+A newsline of a type not included in the NewsML specification.
+================================================================================
+-->
+<!ELEMENT NewsLine (NewsLineType , NewsLineText+ )>
+<!ATTLIST NewsLine %localid; >
+<!--
+=================================== NewsLineText ===================================
+The text of a NewsLine of user-defined type.
+================================================================================
+-->
+<!ELEMENT NewsLineText (#PCDATA | Origin )*>
+<!ATTLIST NewsLineText %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================ NewsLineType ==================================
+An indication of a user-defined NewsLine type. The value of the FormalName
+attribute is a formal name for the NewsLineType. Its meaning and permitted
+values are determined by a controlled vocabulary as described in the comment
+to the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT NewsLineType EMPTY>
+<!ATTLIST NewsLineType %localid;
+ %formalname; >
+<!--
+================================== NewsLines ===================================
+A container for all the NewsLines that a NewsComponent has.
+================================================================================
+-->
+<!ELEMENT NewsLines ( (HeadLine , SubHeadLine? )* , ByLine* , DateLine* , CreditLine* , CopyrightLine* , RightsLine* , SeriesLine* , SlugLine* , KeywordLine* , NewsLine* )>
+<!ATTLIST NewsLines %localid; >
+<!--
+================================ NewsManagement ================================
+Information relevant to the management of a NewsItem.
+================================================================================
+-->
+<!ELEMENT NewsManagement (NewsItemType , FirstCreated , ThisRevisionCreated , Status , StatusWillChange? , Urgency? , RevisionHistory? , DerivedFrom* , AssociatedWith* , Instruction* , Property* )>
+<!ATTLIST NewsManagement %localid; >
+<!--
+==================================== NewsML ====================================
+A NewsML document, which must contain a NewsEnvelope and one or more NewsItems,
+and may include a Catalog element and a TopicSet element.
+================================================================================
+-->
+<!ELEMENT NewsML (Catalog? , TopicSet* , (NewsEnvelope , NewsItem+ ) )>
+<!ATTLIST NewsML %localid; >
+<!--
+================================= NewsProduct ==================================
+An identifier for a product to which all the NewsItems in a NewsML document
+belong. The value of the FormalName attribute is a formal name for the
+NewsProduct. Its meaning and permitted values are determined by a controlled
+vocabulary as described in the comment to the formalname ENTITY declaration
+above.
+================================================================================
+-->
+<!ELEMENT NewsProduct EMPTY>
+<!ATTLIST NewsProduct %localid;
+ %formalname; >
+<!--
+================================= NewsService ==================================
+An identifier for a service to which all the NewsItems in a NewsML document
+belong. The value of the FormalName attribute is a formal name for the
+NewsService. Its meaning and permitted values are determined by a controlled
+vocabulary as described in the comment to the formalname ENTITY declaration
+above.
+================================================================================
+-->
+<!ELEMENT NewsService EMPTY>
+<!ATTLIST NewsService %localid;
+ %formalname; >
+<!--
+=================================== Notation ===================================
+An indication of the notation of a ContentItem. The value of the FormalName
+attribute is a formal name for the Notation. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Notation EMPTY>
+<!ATTLIST Notation %localid;
+ %formalname; >
+<!--
+================================= OfInterestTo =================================
+An indication of the target audience of a NewsItem. The value of the FormalName
+attribute is a formal name for the target audience. Its meaning and permitted
+values are determined by a controlled vocabulary as described in the comment to
+the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT OfInterestTo (Relevance? )>
+<!ATTLIST OfInterestTo %localid;
+ %formalname;
+ %assignment; >
+<!--
+==================================== Origin ====================================
+A wrapper for all or part of the text of a piece of text, which provides a
+pointer to an item of data corresponding formally to what is being described
+here in natural language. The Href attribute identifies the relevant data, and
+may be an http URL or a NewsML URN as described in the comment to
+PublicIdentifier, optionally including a fragment identifier. Alternatively, it
+can be a simple fragment identifier consisting of a # character followed by the
+value of the Duid of an element in the current document.
+================================================================================
+-->
+<!ELEMENT Origin (#PCDATA | Origin )*>
+<!ATTLIST Origin %localid;
+ %assignment;
+ Href CDATA #IMPLIED >
+<!--
+=================================== Party ======================================
+An indication of the person, company or organisation that has a particular
+relationship to this NewsItem in the news workflow. The value of the FormalName
+attribute is a formal name for the Party. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Party EMPTY>
+<!ATTLIST Party %localid;
+ %formalname;
+ Topic CDATA #IMPLIED >
+<!--
+=================================== Priority ===================================
+An indication of the priority notation of a NewsItem. The value of the
+FormalName attribute is a formal name for the Priority. Its meaning and
+permitted values are determined by a controlled vocabulary as described in
+the comment to the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Priority EMPTY>
+<!ATTLIST Priority %localid;
+ %formalname; >
+<!--
+=================================== Property ===================================
+A property of a NewsComponent or of a Topic. The property has a name and either
+a simple Value or a complex value consisting of a set of further properties.
+
+Value
+=====
+A string representation of the value of a Property.
+
+ValueRef
+========
+A pointer to the value of the Property. This might be a Topic in a TopicSet, or
+any other piece of data. If both Value and ValueRef are provided, then ValueRef
+identifies the actual value of the property, with Value simply providing a
+string representation or mnemonic for it.
+
+
+Example:
+<Catalog>
+ <Resource Duid="resource1">
+ <Urn>urn:newsml:reuters.com:20001001:Physical Characteristics:3</Urn>
+ <Url>www.reuters.com/vocabs/physical.xml</Url>
+ <Url>www.iptc.com/vocabularies/memberdefined/reuters/physical.xml</Url>
+ <DefaultVocabularyFor Scheme="short" Context="Metadata/Property[@FormalName='Width']"/>
+ </Resource>
+</Catalog>
+<Property FormalName="Width" Vocabulary="#resource1">
+ <Property FormalName="Unit" ValueRef="urn:newsml:iptc.org:20001006:units:1#cm"/>
+ <Property FormalName="Quantity" Value="7.5"/>
+</Property>
+
+AllowedValues
+=============
+The AllowedValues attribute, if present, is a pointer to a controlled vocabulary
+that delimits the set of allowed values for the property. This may be an http
+URL, or a NewsML URN, or a fragment identifier consisting of a # charactger
+followed by the Duid of an element in the current document. The pointer must
+reference either a Resource element that designates an external controlled
+vocabulary, or a TopicSet element, that is itself the controlled vocabulary.
+================================================================================
+-->
+<!ELEMENT Property (Property* )>
+<!ATTLIST Property %localid;
+ %formalname;
+ %assignment;
+ Value CDATA #IMPLIED
+ ValueRef CDATA #IMPLIED
+ AllowedValues CDATA #IMPLIED >
+<!--
+=================================== Provider ===================================
+An individual and/or company or organisation that released a news object for
+publication.
+================================================================================
+-->
+<!ELEMENT Provider (%party; )>
+<!ATTLIST Provider %localid; >
+<!--
+================================== ProviderId ==================================
+An identifier for the news provider that produced the NewsItem. The
+provider's ID is specified in the element content. This should be an Internet
+domain name that is owned by the provider at the date identified by the DateId
+subelement of the NewsIdentifier, or the name for the Provider drawn from a
+controlled vocabulary identified by a URN specified in the Vocabulary attribute.
+This will ensure that the identity of the provider can be inferred unambiguously
+from the full NewsIdentifier.
+
+Example:
+<NewsIdentifier>
+ <ProviderId>iptc.org</ProviderId>
+ <DateId>20001001</DateId>
+ <NewsItemId>NewsML version 1.0</NewsItemId>
+ <RevisionId>1</RevisionId
+</NewsIdentifier>
+
+Because the domain name "iptc.org" was owned on 1 October 2000 by the
+International Press Telecommunications Council (IPTC) and no-one else, it is
+certain that IPTC is the provider in this case.
+================================================================================
+-->
+<!ELEMENT ProviderId (#PCDATA )>
+<!ATTLIST ProviderId Vocabulary CDATA #IMPLIED >
+<!--
+=============================== PublicIdentifier ===============================
+A public identifier (in the sense defined by the XML 1,0 Specification) for a
+NewsItem. This is the NewsML URN, and must be constructed as follows:
+
+If the ProviderId is a domain name
+
+urn:newsml:{ProviderId}:{DateId}:{NewsItemId}:{RevisionId}{RevisionId@Update}
+
+If the ProviderId is name drawn from a controlled vocabulary
+
+urn:newsml:|{ProviderId@Vocabulary}|{ProviderId}|:{DateId}:{NewsItemId}:{RevisionId}{RevisionId@Update}
+
+where {x} means "the content of the x subelement of the NewsIdentifier" and
+{x@y} means "the value of the y attribute of the x subelement of the
+NewsIdentifier", with the exception that if the Update attribute of the
+RevisionId element has its default value of N, it is omitted from the URN, and
+that the Vocabulary attribute of the ProviderId element is stripped of the
+substring "urn:" with which it begins. The Vocabulary attribute of ProviderId
+necessarily begins with the characters "urn:" because, as stated in the
+comment to the ProviderId element above, it must take the form of a URN
+identifying a controlled vocabulary.
+
+Note that the existence of this URN enables the NewsItem to be referenced
+unambiguously by pointers from other XML elements or resources. Within such
+pointers, if the RevisionId, its preceding : character and its following Update
+qualifier are omitted, then the pointer designates the most recent revision at
+the time it is resolved.
+================================================================================
+-->
+<!ELEMENT PublicIdentifier (#PCDATA )>
+
+<!--
+================================== Relevance ===================================
+An indication of the relevance of a NewsItem to a given target audience. The
+value of the FormalName attribute is a formal name for the Relevance. Its
+meaning and permitted values are determined by a controlled vocabulary as
+described in the comment to the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Relevance EMPTY>
+<!ATTLIST Relevance %localid;
+ %formalname;
+ %assignment; >
+<!--
+=================================== Replace ====================================
+An instruction to replace a designated element within a NewsItem. The element
+that is to replace the designated element is the content of the Replace element.
+The NewsItem within which the replacement takes place is the previous revision
+of the current one, and the element to be replaced is the one whose Duid
+value is equal to the value of the Replace element's DuidRef attribute.
+================================================================================
+-->
+<!ELEMENT Replace ANY>
+<!ATTLIST Replace %localid;
+ DuidRef CDATA #REQUIRED >
+<!--
+================================== Resource ====================================
+An indication where a given resource can be found, and whether it is to be used
+as the default vocabulary for certain formal names within the current subtree
+of a NewsML document. The Urn attribute provides a NewsML URN for the resource.
+THe Url attribute(s) provide(s) a location or locations where the resource may
+be found. The DefaultVocabularyFor element contains an XPath pattern. The
+identified resource acts as default vocabulary for any element within the
+subtree whose root is the parent of the current Catalog, that matches this XPath
+pattern.
+================================================================================
+-->
+<!ELEMENT Resource (Urn? , Url* , DefaultVocabularyFor* )>
+<!ATTLIST Resource %localid; >
+<!--
+=============================== RevisionHistory ================================
+A pointer to a file containing the revision history of the NewsItem.
+================================================================================
+-->
+<!ELEMENT RevisionHistory EMPTY>
+<!ATTLIST RevisionHistory %localid;
+ Href CDATA #REQUIRED >
+<!--
+================================== RevisionId ==================================
+A positive integer indicating which Revision of a given NewsItem this is. Any
+positive integer may be used, but it must always be the case that of two
+instances of a NewsItem that have the same ProviderId, DateId and NewsItemId,
+the one whose RevisionId has the larger value must be the more recent revision.
+A RevisionId of 0 is not permitted. The PreviousRevision attribute must be
+present, and its value must be equal to the content of the RevisionId element
+of the NewsItem's previous revision, if there is one, and 0 if the NewsItem has
+no previous revision. If the NewsItem contains an Update element or elements,
+then the Update attribute must be set to U. If the NewsItem consists only of a
+replacement set of NewsManagement data, then the Update attribute must be set
+to A. If neither of these is the case, then the Update attribute must be set
+to N.
+================================================================================
+-->
+<!ELEMENT RevisionId (#PCDATA )>
+<!ATTLIST RevisionId PreviousRevision CDATA #REQUIRED
+ Update CDATA #REQUIRED >
+<!--
+================================ RevisionStatus ================================
+Indicates the status that previous revisions now has as a result of the release
+of the current revision. The optional Revision attribute is an integer, equal to
+the RevisionId of the revision in question. If it is not present, then the
+status applies to ALL previous revisions, without exception.
+================================================================================
+-->
+<!ELEMENT RevisionStatus (Status )>
+<!ATTLIST RevisionStatus %localid;
+ Revision CDATA #IMPLIED >
+<!--
+================================= RightsHolder =================================
+A string of text indicating who has the usage rights, optionally enriched with
+pointers to further information about the relevant people, companies or
+organisations.
+================================================================================
+-->
+<!ELEMENT RightsHolder (#PCDATA | Origin )*>
+<!ATTLIST RightsHolder %localid;
+ xml:lang CDATA #IMPLIED
+ %assignment; >
+<!--
+================================== RightsLine ==================================
+A displayable version of rights information. Note that this is distinct from
+copyright information. Copyright information is about who owns a news object;
+rights information is about who is allowed to use it, in what way and under
+what circumstances.
+================================================================================
+-->
+<!ELEMENT RightsLine (#PCDATA | Origin )*>
+<!ATTLIST RightsLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================ RightsMetadata ================================
+Information about the rights pertaining to a NewsComponent.
+================================================================================
+-->
+<!ELEMENT RightsMetadata (Catalog? , Copyright* , UsageRights* , Property* )>
+<!ATTLIST RightsMetadata %localid;
+ %assignment; >
+<!--
+===================================== Role =====================================
+An identifier of the role played by a NewsComponent within a NewsComponent
+that contains it. The outermost NewsComponent within a NewsItem need not
+specify a Role attribute value. The value of the FormalName attribute is a
+formal name for the Role. Its meaning and permitted values are determined by
+a controlled vocabulary as described in the comment to the formalname ENTITY
+declaration above.
+================================================================================
+-->
+<!ELEMENT Role EMPTY>
+<!ATTLIST Role %localid;
+ %formalname; >
+<!--
+=================================== SentFrom ===================================
+An individual and/or company or organisation from whom the NewsML document is
+being sent.
+================================================================================
+-->
+<!ELEMENT SentFrom (%party; )>
+<!ATTLIST SentFrom %localid; >
+<!--
+==================================== SentTo ====================================
+An individual and/or company or organisation to whom the NewsML document is
+being sent.
+================================================================================
+-->
+<!ELEMENT SentTo (%party; )>
+<!ATTLIST SentTo %localid; >
+<!--
+================================== SeriesLine ==================================
+A displayable version of information about a news object's place in a series.
+================================================================================
+-->
+<!ELEMENT SeriesLine (#PCDATA | Origin )*>
+<!ATTLIST SeriesLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+================================== SizeInBytes =================================
+The exact size in bytes of a ContentItem's inline or referenced data object.
+================================================================================
+-->
+<!ELEMENT SizeInBytes (#PCDATA )>
+<!ATTLIST SizeInBytes %localid; >
+<!--
+=================================== SlugLine ===================================
+A string of text, possibly embellished by hyperlinks and/or formatting, used to
+display a NewsItem's slug line. (Note that the meaning of the term "slug line",
+and the uses to which it is put, are a matter for individual providers to
+define within their own workflow and business practice.)
+================================================================================
+-->
+<!ELEMENT SlugLine (#PCDATA | Origin )*>
+<!ATTLIST SlugLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+==================================== Source ====================================
+An individual and/or company or organisation that provided source material for
+a news object. The optional NewsItem attribute must be present in the case of
+a syndicated NewsItem. It provides the URN of the NewsItem that is being
+syndicated. Note that a sequence of Source elements can be used to indicate the
+sequence of syndicators through which a NewsItem has passed.
+================================================================================
+-->
+<!ELEMENT Source (%party; )>
+<!ATTLIST Source %localid;
+ NewsItem CDATA #IMPLIED >
+<!--
+================================== StartDate ===================================
+A natural-language statement of the date at which specified usage rights come
+into effect.
+================================================================================
+-->
+<!ELEMENT StartDate (#PCDATA | Origin )*>
+<!ATTLIST StartDate %localid;
+ xml:lang CDATA #IMPLIED
+ %assignment; >
+<!--
+==================================== Status ===================================
+An indication of the Status of a NewsItem. The value of the FormalName
+attribute is a formal name for the Status. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Status EMPTY>
+<!ATTLIST Status %localid;
+ %formalname; >
+<!--
+=============================== StatusWillChange ===============================
+Advance notification of a status change that will automatically occur at the
+specified date and time. For example, an item with a Status of "embargoed" might
+have a StatusWillChange element stating that the status will become "usable" at
+a specified time. This is equivalent to announcing in advance the time at which
+the embargo will end and the item will be released.
+================================================================================
+-->
+<!ELEMENT StatusWillChange (FutureStatus , DateAndTime )>
+<!ATTLIST StatusWillChange %localid; >
+<!--
+================================= SubHeadLine ==================================
+A displayable subsidiary headline.
+================================================================================
+-->
+<!ELEMENT SubHeadLine (#PCDATA | Origin )*>
+<!ATTLIST SubHeadLine %localid;
+ xml:lang CDATA #IMPLIED >
+<!--
+=================================== Subject ====================================
+An indication of the Subject of a NewsItem. The value of the FormalName
+attribute is a formal name for the Subject. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Subject EMPTY>
+<!ATTLIST Subject %localid;
+ %formalname;
+ %assignment; >
+<!--
+================================= SubjectCode ==================================
+A container for the IPTC Subject Codes that indicate the subject of a NewsItem,
+as defined in the IPTC Information Interchange Model. It consists of one more
+Subject, SubjectMatter and SubjectDetail elements, optionally amplified by one
+or more SubjectQualifier elements.
+================================================================================
+-->
+<!ELEMENT SubjectCode ( (Subject | SubjectMatter | SubjectDetail ) , SubjectQualifier* )*>
+<!ATTLIST SubjectCode %localid;
+ %assignment; >
+<!--
+================================ SubjectDetail =================================
+An indication of the SubjectDetail of a NewsItem. The value of the FormalName
+attribute is a formal name for the SubjectDetail. Its meaning and permitted
+values are determined by a controlled vocabulary as described in the comment
+to the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT SubjectDetail EMPTY>
+<!ATTLIST SubjectDetail %localid;
+ %formalname;
+ %assignment; >
+<!--
+================================ SubjectMatter =================================
+An indication of the SubjectMatter of a NewsItem. The value of the FormalName
+attribute is a formal name for the SubjectMatter. Its meaning and permitted
+values are determined by a controlled vocabulary as described in the comment to
+the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT SubjectMatter EMPTY>
+<!ATTLIST SubjectMatter %localid;
+ %formalname;
+ %assignment; >
+<!--
+=============================== SubjectQualifier ===============================
+An indication of the SubjectQualifier of a NewsItem. The value of the FormalName
+attribute is a formal name for the SubjectQualifier. Its meaning and permitted
+values are determined by a controlled vocabulary as described in the comment to
+the formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT SubjectQualifier EMPTY>
+<!ATTLIST SubjectQualifier %localid;
+ %formalname;
+ %assignment; >
+<!--
+=============================== SystemIdentifier ===============================
+A system identifier (in the sense defined by the XML 1,0 Specification) for a
+NewsItem.
+================================================================================
+-->
+<!ELEMENT SystemIdentifier (#PCDATA )>
+<!ATTLIST SystemIdentifier %localid; >
+<!--
+============================= ThisRevisionCreated ==============================
+The date and, optionally, time at which the current revision of a NewsItem was
+created, expressed in ISO 8601 Basic Format, as described in the comment to the
+DateAndTime attribute within the assignment ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT ThisRevisionCreated (#PCDATA )>
+<!ATTLIST ThisRevisionCreated %localid; >
+<!--
+==================================== Topic =====================================
+This element provides information about a thing (Topic) named by a formal
+name or occurring in a NewsComponent. A Topic must have one or more TopicType
+subelements, which state what type of Topic it is. The optional Details
+attribute provides a pointer, in the form of a URL or URN, to additional
+information about the Topic.
+================================================================================
+-->
+<!ELEMENT Topic (Comment* , Catalog? , TopicType+ , FormalName* , Description* , Property* )>
+<!ATTLIST Topic %localid;
+ Details CDATA #IMPLIED >
+<!--
+=============================== TopicOccurrence ================================
+An indication that a particular topic occurs within the content of a
+NewsComponent. The optional HowPresent attribute indicates the nature of that
+topic's occurrence. The value of the Topic attribute must consist of a #
+character followed by the value of the Duid attribute of a Topic in the current
+document.
+================================================================================
+-->
+<!ELEMENT TopicOccurrence EMPTY>
+<!ATTLIST TopicOccurrence %localid;
+ %assignment;
+ Topic CDATA #IMPLIED >
+<!--
+================================== TopicSet ====================================
+A container for Topics. The value of the FormalName attribute is a formal name
+for the TopicSet. Its meaning and permitted values are determined by a
+controlled vocabulary as described in the comment to the formalname ENTITY
+declaration above.
+================================================================================
+-->
+<!ELEMENT TopicSet (Comment* , Catalog? , TopicSetRef* , Topic* )>
+<!ATTLIST TopicSet %localid;
+ %formalname; >
+<!--
+================================= TopicSetRef ==================================
+A pointer to a TopicSet that is to be merged with the current one. The TopicSet
+attribute is a pointer to the relevant TopicSet. Its value can be an http URL,
+or a NewsML URN as described in the comment to PublicIdentifier, or a fragment
+identifier consisting of a # character followed by the Duid of a TopicSet in the
+current document. The presence of a TopicSetRef child in a TopicSet has the
+effect that all the Topics in the referenced TopicSet are included by reference
+within the current TopicSet. When this merging results in there exising two
+FormalName grandchildren of the same TopicSet that have the same content and
+the same Scheme attribute value, then the Topics whose children are in fact the
+same topic, and are deemed to be merged. The merging of Topics need not be
+performed physically by the system, but the meaning of the data is
+exactly the same as if the merging were actually performed. Merging two
+Topcis consists of creating a single Topic that contains all the children of
+both, and eliminating duplicates.
+================================================================================
+-->
+<!ELEMENT TopicSetRef (Comment* )>
+<!ATTLIST TopicSetRef %localid;
+ TopicSet CDATA #IMPLIED >
+<!--
+================================== TopicType ===================================
+An indication of the type of a Topic. The value of the FormalName attribute is
+a formal name for the TopicType. Its meaning and permitted values are determined
+by a controlled vocabulary as described in the comment to the formalname ENTITY
+declaration above.
+================================================================================
+-->
+<!ELEMENT TopicType EMPTY>
+<!ATTLIST TopicType %localid;
+ %formalname; >
+<!--
+================================== TopicUse ====================================
+An indication of where a particular Topic is used in a NewsML document. The
+value of the Topic attribute must consist of a # character followed by the
+value of the Duid of a Topic in the current document. The value of the Context
+attribute is an XPath pattern indicating the context where the referenced topic
+is used within the subtree to which the current Catalog applies. If the Context
+attribute is not present, the TopicUse element simply states that this topic is
+present somewhere in the subtree.
+================================================================================
+-->
+<!ELEMENT TopicUse EMPTY>
+<!ATTLIST TopicUse Topic CDATA #REQUIRED
+ Context CDATA #IMPLIED >
+<!--
+================================ TransmissionId ================================
+An identifier for the NewsML document transmission. This should be unique among
+all distinct transmissions from the same publisher. If a transmission is
+repeated (perhaps because the sender is not confident that it was successfully
+received) then the same TransmissionId content may be used, but a Repeat
+attribute should be provided to distinguish the second transmission from the
+first. The form that the value of the Repeat attribute takes is determined by
+the provider. Likewise, the format for the TransmissionId itself is for the
+provider to decide. It could for example consist of a channel identifier
+followed by a sequence number.
+================================================================================
+-->
+<!ELEMENT TransmissionId (#PCDATA )>
+<!ATTLIST TransmissionId %localid;
+ Repeat CDATA #IMPLIED >
+<!--
+==================================== Update ====================================
+A modification to an existing NewsItem. This can be an insertion, replacement
+or deletion. Note that the Update element cannot be used to modify the
+NewsManagement or Identification element, or any of their descendants.
+Modifications to these parts of the NewsItem can be made by issuing the
+NewsItem under the current revision number, with only the Identification and
+NewsManagement elements present. These will replace the previous Identification
+and NewsManagement elements in their totality.
+================================================================================
+-->
+<!ELEMENT Update (InsertBefore | InsertAfter | Replace | Delete )*>
+<!ATTLIST Update %localid; >
+<!--
+=================================== Urgency ====================================
+An indication of the urgency of a NewsItem. The value of the FormalName
+attribute is a formal name for the Urgency. Its meaning and permitted values
+are determined by a controlled vocabulary as described in the comment to the
+formalname ENTITY declaration above.
+================================================================================
+-->
+<!ELEMENT Urgency EMPTY>
+<!ATTLIST Urgency %localid;
+ %formalname; >
+<!--
+===================================== Url ======================================
+A URL that can be used to locate a Resource.
+================================================================================
+-->
+<!ELEMENT Url (#PCDATA )>
+<!ATTLIST Url %localid; >
+<!--
+===================================== Urn ======================================
+A URN that provides a global identifier for a resource. This will typically (but
+not necessarily) be a NewsML URN as described in the comment to PublicIdentifier.
+================================================================================
+-->
+<!ELEMENT Urn (#PCDATA )>
+<!ATTLIST Urn %localid; >
+<!--
+================================= UsageRights ==================================
+Information about the usage rights pertaining to a NewsComponent.
+================================================================================
+-->
+<!ELEMENT UsageRights (UsageType? , Geography? , RightsHolder? , Limitations? , StartDate? , EndDate? )>
+<!ATTLIST UsageRights %localid;
+ %assignment; >
+<!--
+================================== UsageType ===================================
+A natural-language indication of the type of usage to which the rights apply.
+================================================================================
+-->
+<!ELEMENT UsageType (#PCDATA | Origin )*>
+<!ATTLIST UsageType %localid;
+ xml:lang CDATA #IMPLIED
+ %assignment; >
diff --git a/test/valid/dtds/destfoo.ent b/test/valid/dtds/destfoo.ent
new file mode 100644
index 0000000..0791e1a
--- /dev/null
+++ b/test/valid/dtds/destfoo.ent
@@ -0,0 +1 @@
+<dest id='foo'/>
diff --git a/test/valid/dtds/external.ent b/test/valid/dtds/external.ent
new file mode 100644
index 0000000..8a4495d
--- /dev/null
+++ b/test/valid/dtds/external.ent
@@ -0,0 +1,3 @@
+<!ELEMENT root (#PCDATA)>
+<!ENTITY % peInCdata SYSTEM "external2.ent">
+<!ENTITY peInCdata "<![CDATA[%peInCdata;]]>">
diff --git a/test/valid/dtds/external2.ent b/test/valid/dtds/external2.ent
new file mode 100644
index 0000000..348e1db
--- /dev/null
+++ b/test/valid/dtds/external2.ent
@@ -0,0 +1 @@
+<!ATTLIST root attr1 NMTOKEN "attrvalue">
diff --git a/test/valid/dtds/nitf-2-5.dtd b/test/valid/dtds/nitf-2-5.dtd
new file mode 100644
index 0000000..253e620
--- /dev/null
+++ b/test/valid/dtds/nitf-2-5.dtd
@@ -0,0 +1,1004 @@
+ <!--
+ News Industry Text Format
+ Document Type Definition - Version 2.5
+ http://www.nitf.org/
+
+ Copyright (c) 2000. All Rights Reserved.
+ International Press Telecommunications Council
+ http://www.iptc.org
+
+ Last changed: 9 August 2000 wb/kr/ak
+
+ For the list of modifications from previous releases, see:
+ http://www.nitf.org/recent-modifications.html
+
+ For the list of proposed modifications, see:
+ http://www.nitf.org/proposed-changes.html
+-->
+
+
+
+<!ENTITY % enriched-text '
+ #PCDATA
+ | chron
+ | copyrite
+ | event
+ | function
+ | location
+ | money
+ | num
+ | object.title
+ | org
+ | person
+ | postaddr
+ | virtloc
+ | a
+ | br
+ | em
+ | lang
+ | pronounce
+ | q
+ '>
+
+<!ENTITY % block.head "dateline?, copyrite?, abstract?">
+<!ENTITY % block.content "p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr">
+<!ENTITY % block.end "datasource?">
+
+
+<!ENTITY % global-attributes '
+ id ID #IMPLIED
+ '>
+<!ENTITY % common-attributes '
+ %global-attributes;
+ class NMTOKENS #IMPLIED
+ style CDATA #IMPLIED
+ lang NMTOKEN #IMPLIED
+ dir (ltr | rtl) #IMPLIED
+ '>
+<!ENTITY % cell.align '
+ align (left | center | right | justify | char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED
+ '>
+<!ENTITY % cell.valign '
+ valign (top | middle | bottom | baseline) #IMPLIED
+ '>
+<!ENTITY % url.link '
+ md CDATA #IMPLIED
+ '>
+<!ENTITY % boolean '(true | false)'>
+
+
+<!ELEMENT nitf (head, body)>
+<!ATTLIST nitf
+ %global-attributes;
+ uno CDATA #IMPLIED
+ version CDATA #FIXED "-//IPTC-NAA//DTD NITF-XML 2.1//EN"
+ change.date CDATA #FIXED "4 July 2000"
+ change.time CDATA #FIXED "1900"
+ baselang CDATA #IMPLIED
+ class NMTOKENS #IMPLIED
+ >
+
+
+<!ELEMENT head (title?, meta*, tobject?, iim?, docdata?, pubdata*, revision-history*)>
+<!ATTLIST head
+ %global-attributes;
+ >
+
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title
+ %global-attributes;
+ type (
+ main
+ | subtitle
+ | parttitle
+ | alternate
+ | abbrev
+ | other
+ ) #IMPLIED
+ >
+
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %global-attributes;
+ http-equiv NMTOKEN #IMPLIED
+ name NMTOKEN #IMPLIED
+ content CDATA #REQUIRED
+ >
+
+<!ELEMENT tobject (tobject.property*, tobject.subject*)>
+<!ATTLIST tobject
+ %global-attributes;
+ tobject.type CDATA "news"
+ >
+
+ <!ELEMENT tobject.property EMPTY>
+ <!ATTLIST tobject.property
+ %global-attributes;
+ tobject.property.type CDATA "current"
+ >
+
+ <!ELEMENT tobject.subject EMPTY>
+ <!ATTLIST tobject.subject
+ %global-attributes;
+ tobject.subject.ipr CDATA "IPTC"
+ tobject.subject.refnum NMTOKEN #REQUIRED
+ tobject.subject.code CDATA #IMPLIED
+ tobject.subject.type CDATA #IMPLIED
+ tobject.subject.matter CDATA #IMPLIED
+ tobject.subject.detail CDATA #IMPLIED
+ >
+
+<!ELEMENT iim (ds*)>
+<!ATTLIST iim
+ %global-attributes;
+ ver NMTOKEN #IMPLIED
+ >
+
+ <!ELEMENT ds EMPTY>
+ <!ATTLIST ds
+ %global-attributes;
+ num NMTOKEN #REQUIRED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT docdata (
+ correction
+ | evloc
+ | doc-id
+ | del-list
+ | urgency
+ | fixture
+ | date.issue
+ | date.release
+ | date.expire
+ | doc-scope
+ | series
+ | ed-msg
+ | du-key
+ | doc.copyright
+ | doc.rights
+ | key-list
+ )*>
+<!ATTLIST docdata
+ %global-attributes;
+ >
+
+ <!ELEMENT correction EMPTY>
+ <!ATTLIST correction
+ %global-attributes;
+ info CDATA #IMPLIED
+ id-string CDATA #IMPLIED
+ reg-src CDATA #IMPLIED
+ >
+
+ <!ELEMENT evloc EMPTY>
+ <!ATTLIST evloc
+ %global-attributes;
+ iso-cc CDATA #IMPLIED
+ state-prov CDATA #IMPLIED
+ county-dist CDATA #IMPLIED
+ city CDATA #IMPLIED
+ >
+
+ <!ELEMENT doc-id EMPTY>
+ <!ATTLIST doc-id
+ %global-attributes;
+ regsrc CDATA #IMPLIED
+ id-string CDATA #IMPLIED
+ >
+
+ <!ELEMENT del-list (from-src)*>
+ <!ATTLIST del-list
+ %global-attributes;
+ >
+
+ <!ELEMENT from-src EMPTY>
+ <!ATTLIST from-src
+ %global-attributes;
+ src-name CDATA #IMPLIED
+ level-number CDATA #IMPLIED
+ >
+
+ <!ELEMENT urgency EMPTY>
+ <!ATTLIST urgency
+ %global-attributes;
+ ed-urg NMTOKEN #IMPLIED
+ >
+
+ <!ELEMENT fixture EMPTY>
+ <!ATTLIST fixture
+ %global-attributes;
+ fix-id CDATA #IMPLIED
+ >
+
+ <!ELEMENT date.issue EMPTY>
+ <!ATTLIST date.issue
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+ <!ELEMENT date.release EMPTY>
+ <!ATTLIST date.release
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+ <!ELEMENT date.expire EMPTY>
+ <!ATTLIST date.expire
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+ <!ELEMENT doc-scope EMPTY>
+ <!ATTLIST doc-scope
+ %global-attributes;
+ scope CDATA #IMPLIED
+ >
+
+ <!ELEMENT series EMPTY>
+ <!ATTLIST series
+ %global-attributes;
+ series.name CDATA #IMPLIED
+ series.part NMTOKEN "0"
+ series.totalpart NMTOKEN "0"
+ >
+
+ <!ELEMENT ed-msg EMPTY>
+ <!ATTLIST ed-msg
+ %global-attributes;
+ msg-type CDATA #IMPLIED
+ info CDATA #IMPLIED
+ >
+
+ <!ELEMENT du-key EMPTY>
+ <!ATTLIST du-key
+ %global-attributes;
+ generation NMTOKEN #IMPLIED
+ part NMTOKEN #IMPLIED
+ version NMTOKEN #IMPLIED
+ key CDATA #IMPLIED
+ >
+
+ <!ELEMENT doc.copyright EMPTY>
+ <!ATTLIST doc.copyright
+ %global-attributes;
+ year NMTOKEN #IMPLIED
+ holder CDATA #IMPLIED
+ >
+
+ <!ELEMENT doc.rights EMPTY>
+ <!ATTLIST doc.rights
+ %global-attributes;
+ owner CDATA #IMPLIED
+ startdate CDATA #IMPLIED
+ enddate CDATA #IMPLIED
+ agent CDATA #IMPLIED
+ geography CDATA #IMPLIED
+ location-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ type CDATA #IMPLIED
+ limitations CDATA #IMPLIED
+ >
+
+ <!ELEMENT key-list (keyword)*>
+ <!ATTLIST key-list
+ %global-attributes;
+ >
+
+ <!ELEMENT keyword EMPTY>
+ <!ATTLIST keyword
+ %global-attributes;
+ key CDATA #IMPLIED
+ >
+
+<!ELEMENT pubdata EMPTY>
+<!ATTLIST pubdata
+ %global-attributes;
+ type (
+ print
+ | audio
+ | video
+ | web
+ | appliance
+ | other
+ ) #IMPLIED
+ item-length CDATA #IMPLIED
+ unit-of-measure (
+ word
+ | character
+ | byte
+ | inch
+ | pica
+ | cm
+ | hour
+ | minute
+ | second
+ | other
+ ) #IMPLIED
+ date.publication CDATA #IMPLIED
+ name CDATA #IMPLIED
+ issn CDATA #IMPLIED
+ volume CDATA #IMPLIED
+ number CDATA #IMPLIED
+ issue CDATA #IMPLIED
+ edition.name CDATA #IMPLIED
+ edition.area CDATA #IMPLIED
+ position.section CDATA #IMPLIED
+ position.sequence CDATA #IMPLIED
+ ex-ref CDATA #IMPLIED
+ >
+
+<!ELEMENT revision-history EMPTY>
+<!ATTLIST revision-history
+ %global-attributes;
+ name CDATA #IMPLIED
+ function (
+ writer-author
+ | editor
+ | producer
+ | archivist
+ | videographer
+ | graphic-artist
+ | photographer
+ | statistician
+ | other
+ ) #IMPLIED
+ norm CDATA #IMPLIED
+ comment CDATA #IMPLIED
+ >
+
+
+<!ELEMENT body (body.head?, body.content*, body.end?)>
+<!ATTLIST body
+ %common-attributes;
+ background CDATA #IMPLIED
+ >
+
+
+<!ELEMENT body.head (
+ hedline?,
+ note*,
+ rights?,
+ byline*,
+ distributor?,
+ dateline*,
+ abstract?,
+ series?
+ )>
+<!ATTLIST body.head
+ %global-attributes;
+ >
+
+<!ELEMENT hedline (hl1, hl2*)>
+<!ATTLIST hedline
+ %global-attributes;
+ >
+
+ <!ELEMENT hl1 (%enriched-text;)*>
+ <!ATTLIST hl1 %common-attributes;>
+
+ <!ELEMENT hl2 (%enriched-text;)*>
+ <!ATTLIST hl2 %common-attributes;>
+
+<!ELEMENT note (body.content)+>
+<!ATTLIST note
+ %common-attributes;
+ noteclass (
+ cpyrt
+ | end
+ | hd
+ | editorsnote
+ | trademk
+ | undef
+ ) #IMPLIED
+ type (std | pa | npa) "std"
+ src CDATA #IMPLIED
+ %url.link;
+ >
+
+<!ELEMENT rights (
+ #PCDATA
+ | rights.owner
+ | rights.startdate
+ | rights.enddate
+ | rights.agent
+ | rights.geography
+ | rights.type
+ | rights.limitations
+ )*>
+<!ATTLIST rights
+ %global-attributes;
+ >
+
+ <!ELEMENT rights.owner (#PCDATA)>
+ <!ATTLIST rights.owner
+ %global-attributes;
+ contact CDATA #IMPLIED
+ >
+
+ <!ELEMENT rights.startdate (#PCDATA)>
+ <!ATTLIST rights.startdate
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+ <!ELEMENT rights.enddate (#PCDATA)>
+ <!ATTLIST rights.enddate
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+ <!ELEMENT rights.agent (#PCDATA)>
+ <!ATTLIST rights.agent
+ %global-attributes;
+ contact CDATA #IMPLIED
+ >
+
+ <!ELEMENT rights.geography (#PCDATA)>
+ <!ATTLIST rights.geography
+ %global-attributes;
+ location-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT rights.type (#PCDATA)>
+ <!ATTLIST rights.type
+ %global-attributes;
+ >
+
+ <!ELEMENT rights.limitations (#PCDATA)>
+ <!ATTLIST rights.limitations
+ %global-attributes;
+ >
+
+<!ELEMENT byline (#PCDATA | person | byttl | location | virtloc)*>
+<!ATTLIST byline
+ %global-attributes;
+ >
+
+ <!ELEMENT byttl (#PCDATA | org )*>
+ <!ATTLIST byttl
+ %global-attributes;
+ >
+
+<!ELEMENT distributor (#PCDATA | org)*>
+<!ATTLIST distributor
+ %global-attributes;
+ >
+
+<!ELEMENT dateline (#PCDATA | location | story.date)*>
+<!ATTLIST dateline %common-attributes;>
+
+ <!ELEMENT story.date (#PCDATA)>
+ <!ATTLIST story.date
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+<!ELEMENT abstract (%block.content;)+>
+<!ATTLIST abstract
+ %global-attributes;
+ >
+
+
+<!ELEMENT copyrite (#PCDATA | copyrite.year | copyrite.holder)*>
+<!ATTLIST copyrite
+ %global-attributes;
+ >
+
+ <!ELEMENT copyrite.year (#PCDATA)>
+ <!ATTLIST copyrite.year
+ %global-attributes;
+ >
+
+ <!ELEMENT copyrite.holder (#PCDATA)>
+ <!ATTLIST copyrite.holder
+ %global-attributes;
+ >
+
+
+<!ELEMENT body.content (block | %block.content;)*>
+<!ATTLIST body.content
+ %global-attributes;
+ >
+
+<!ELEMENT block ((%block.head;)?, (%block.content;)*, (%block.end;)?)>
+<!ATTLIST block %common-attributes;>
+
+<!ELEMENT p (%enriched-text;)*>
+<!ATTLIST p
+ %common-attributes;
+ lede %boolean; #IMPLIED
+ summary %boolean; #IMPLIED
+ optional-text %boolean; #IMPLIED
+ >
+
+
+<!ELEMENT table (caption?, (col* | colgroup*), thead?, tfoot?, tbody+)>
+<!ATTLIST table
+ %common-attributes;
+ tabletype ENTITY #IMPLIED
+ align (
+ left
+ | center
+ | right
+ ) #IMPLIED
+ width CDATA #IMPLIED
+ cols NMTOKEN #IMPLIED
+ border CDATA #IMPLIED
+ frame (
+ void
+ | above
+ | below
+ | hsides
+ | lhs
+ | rhs
+ | vsides
+ | box
+ | border
+ ) #IMPLIED
+ rules (
+ none
+ | basic
+ | rows
+ | cols
+ | all
+ ) #IMPLIED
+ cellspacing CDATA #IMPLIED
+ cellpadding CDATA #IMPLIED
+ table.fmt CDATA #IMPLIED
+ table.domain CDATA #IMPLIED
+ table.inst CDATA #IMPLIED
+ >
+
+<!ELEMENT media (media-metadata*, media-reference, media-object?, media-caption*, media-producer?)>
+<!ATTLIST media
+ %common-attributes;
+ media-type (
+ text
+ | audio
+ | image
+ | video
+ | data
+ | application
+ | other
+ ) #REQUIRED
+ >
+
+ <!ELEMENT media-reference (#PCDATA)>
+ <!ATTLIST media-reference
+ %common-attributes;
+ data-location CDATA #REQUIRED
+ name CDATA #IMPLIED
+ source CDATA #IMPLIED
+ mime-type CDATA #REQUIRED
+ coding CDATA #IMPLIED
+ time CDATA #IMPLIED
+ time-unit-of-measure CDATA #IMPLIED
+ outcue CDATA #IMPLIED
+ source-credit CDATA #IMPLIED
+ copyright CDATA #IMPLIED
+ alternate-text CDATA #IMPLIED
+ height NMTOKEN #IMPLIED
+ width NMTOKEN #IMPLIED
+ units (pixels) "pixels"
+ imagemap CDATA #IMPLIED
+ noflow (noflow) #IMPLIED
+ >
+
+ <!ELEMENT media-metadata EMPTY>
+ <!ATTLIST media-metadata
+ %common-attributes;
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+ >
+
+ <!ELEMENT media-object (#PCDATA)>
+ <!ATTLIST media-object
+ %common-attributes;
+ encoding CDATA #REQUIRED
+ >
+
+ <!ELEMENT media-caption (%enriched-text; | %block.content;)*>
+ <!ATTLIST media-caption
+ %common-attributes;
+ >
+
+ <!ELEMENT media-producer (%enriched-text;)*>
+ <!ATTLIST media-producer
+ %common-attributes;
+ >
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %common-attributes;
+ continue (continue) #IMPLIED
+ seqnum NMTOKEN #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %common-attributes;
+ wrap (vert | horiz | none) "none"
+ plain (plain) #IMPLIED
+ dingbat ENTITY #IMPLIED
+ src CDATA #IMPLIED
+ %url.link;
+ compact (compact) #IMPLIED
+ >
+
+ <!ELEMENT li (%enriched-text; | %block.content;)*>
+ <!ATTLIST li
+ %common-attributes;
+ dingbat ENTITY #IMPLIED
+ src CDATA #IMPLIED
+ %url.link;
+ skip NMTOKEN "0"
+ >
+
+<!ELEMENT dl (dt | dd)+>
+<!ATTLIST dl %common-attributes;>
+
+ <!ELEMENT dt (%enriched-text;)*>
+ <!ATTLIST dt %common-attributes;>
+
+ <!ELEMENT dd (block)*>
+ <!ATTLIST dd %common-attributes;>
+
+<!ELEMENT bq (block+, credit?)*>
+<!ATTLIST bq
+ %common-attributes;
+ nowrap (nowrap) #IMPLIED
+ quote-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT credit (%enriched-text;)*>
+ <!ATTLIST credit %common-attributes;>
+
+<!ELEMENT fn (body.content)+>
+<!ATTLIST fn %common-attributes;>
+
+
+<!ELEMENT pre (#PCDATA)>
+<!ATTLIST pre
+ %global-attributes;
+ >
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %global-attributes;
+ src CDATA #IMPLIED
+ >
+
+
+<!ELEMENT datasource (#PCDATA)>
+<!ATTLIST datasource
+ %global-attributes;
+ >
+
+
+
+<!ELEMENT caption (%enriched-text; | %block.content;)*>
+<!ATTLIST caption
+ %common-attributes;
+ align (
+ top
+ | bottom
+ | left
+ | right
+ ) #IMPLIED
+ >
+
+<!ELEMENT col EMPTY>
+<!ATTLIST col
+ %common-attributes;
+ span NMTOKEN "1"
+ width CDATA #IMPLIED
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT colgroup (col+)>
+<!ATTLIST colgroup
+ %common-attributes;
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT thead (tr+)>
+<!ATTLIST thead
+ %common-attributes;
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT tbody (tr+)>
+<!ATTLIST tbody
+ %common-attributes;
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT tfoot (tr+)>
+<!ATTLIST tfoot
+ %common-attributes;
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT tr (th | td)+>
+<!ATTLIST tr
+ %common-attributes;
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT th (%enriched-text; | %block.content;)*>
+<!ATTLIST th
+ %common-attributes;
+ axis CDATA #IMPLIED
+ axes CDATA #IMPLIED
+ nowrap (nowrap) #IMPLIED
+ rowspan NMTOKEN "1"
+ colspan NMTOKEN "1"
+ %cell.align;
+ %cell.valign;
+ >
+
+<!ELEMENT td (%enriched-text; | %block.content;)*>
+<!ATTLIST td
+ %common-attributes;
+ axis CDATA #IMPLIED
+ axes CDATA #IMPLIED
+ nowrap (nowrap) #IMPLIED
+ rowspan NMTOKEN "1"
+ colspan NMTOKEN "1"
+ %cell.align;
+ %cell.valign;
+ >
+
+
+<!ELEMENT chron (#PCDATA)>
+<!ATTLIST chron
+ %global-attributes;
+ norm CDATA #IMPLIED
+ >
+
+
+<!ELEMENT event (#PCDATA | alt-code)*>
+<!ATTLIST event
+ %global-attributes;
+ start-date CDATA #IMPLIED
+ end-date CDATA #IMPLIED
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT function (#PCDATA | alt-code)*>
+<!ATTLIST function
+ %global-attributes;
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT location (#PCDATA | sublocation | city | state | region | country | alt-code)*>
+<!ATTLIST location
+ %global-attributes;
+ location-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT sublocation (#PCDATA | alt-code)*>
+ <!ATTLIST sublocation
+ %global-attributes;
+ location-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT city (#PCDATA | alt-code)*>
+ <!ATTLIST city
+ %global-attributes;
+ city-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT state (#PCDATA | alt-code)*>
+ <!ATTLIST state
+ %global-attributes;
+ state-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT region (#PCDATA | alt-code)*>
+ <!ATTLIST region
+ %global-attributes;
+ region-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+ <!ELEMENT country (#PCDATA | alt-code)*>
+ <!ATTLIST country
+ %global-attributes;
+ iso-cc CDATA #IMPLIED
+ >
+
+<!ELEMENT money (#PCDATA)>
+<!ATTLIST money
+ %global-attributes;
+ unit CDATA #IMPLIED
+ date CDATA #IMPLIED
+ >
+
+<!ELEMENT num (#PCDATA | frac | sub | sup)*>
+<!ATTLIST num
+ %global-attributes;
+ units CDATA #IMPLIED
+ decimal-ch CDATA #IMPLIED
+ thousands-ch CDATA #IMPLIED
+ >
+
+ <!ELEMENT frac (numer, frac-sep?, denom)>
+ <!ATTLIST frac
+ %global-attributes;
+ >
+
+ <!ELEMENT numer (#PCDATA)>
+ <!ATTLIST numer
+ %global-attributes;
+ >
+
+ <!ELEMENT frac-sep (#PCDATA)>
+ <!ATTLIST frac-sep
+ %global-attributes;
+ >
+
+ <!ELEMENT denom (#PCDATA)>
+ <!ATTLIST denom
+ %global-attributes;
+ >
+
+ <!ELEMENT sub (#PCDATA)>
+ <!ATTLIST sub %common-attributes;>
+
+ <!ELEMENT sup (#PCDATA)>
+ <!ATTLIST sup %common-attributes;>
+
+<!ELEMENT object.title (#PCDATA | alt-code)*>
+<!ATTLIST object.title
+ %common-attributes;
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT org (#PCDATA | alt-code)*>
+<!ATTLIST org
+ %global-attributes;
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+ <!ELEMENT alt-code EMPTY>
+ <!ATTLIST alt-code
+ %global-attributes;
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT person (#PCDATA | name.given | name.family | function | alt-code)*>
+<!ATTLIST person
+ %global-attributes;
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+ <!ELEMENT name.given (#PCDATA)>
+ <!ATTLIST name.given
+ %global-attributes;
+ >
+
+ <!ELEMENT name.family (#PCDATA)>
+ <!ATTLIST name.family
+ %global-attributes;
+ >
+
+<!ELEMENT postaddr (addressee, delivery.point?, (postcode | delivery.office | region | country)*)>
+<!ATTLIST postaddr
+ %global-attributes;
+ >
+
+<!ELEMENT virtloc (#PCDATA | alt-code)*>
+<!ATTLIST virtloc
+ %global-attributes;
+ idsrc CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT a (%enriched-text;)*>
+<!ATTLIST a
+ %common-attributes;
+ href CDATA #IMPLIED
+ name CDATA #IMPLIED
+ %url.link;
+ rel NMTOKEN #IMPLIED
+ rev NMTOKEN #IMPLIED
+ title CDATA #IMPLIED
+ methods NMTOKENS #IMPLIED
+ >
+
+<!ELEMENT br EMPTY>
+<!ATTLIST br
+ %global-attributes;
+ >
+
+<!ELEMENT em (%enriched-text;)*>
+<!ATTLIST em %common-attributes;>
+
+<!ELEMENT lang (%enriched-text;)*>
+<!ATTLIST lang %common-attributes;>
+
+<!ELEMENT pronounce (%enriched-text;)*>
+<!ATTLIST pronounce
+ %global-attributes;
+ guide CDATA #IMPLIED
+ phonetic CDATA #IMPLIED
+ >
+
+<!ELEMENT q (%enriched-text;)*>
+<!ATTLIST q
+ %common-attributes;
+ quote-source CDATA #IMPLIED
+ >
+
+
+<!ELEMENT addressee (person, function?, care.of?)>
+<!ATTLIST addressee
+ %global-attributes;
+ >
+
+ <!ELEMENT care.of (#PCDATA)>
+ <!ATTLIST care.of
+ %global-attributes;
+ >
+
+<!ELEMENT delivery.point (#PCDATA | br)*>
+<!ATTLIST delivery.point
+ %global-attributes;
+ point-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+<!ELEMENT postcode (#PCDATA)>
+<!ATTLIST postcode
+ %global-attributes;
+ code-source CDATA #IMPLIED
+ >
+
+<!ELEMENT delivery.office (#PCDATA | br)*>
+<!ATTLIST delivery.office
+ %global-attributes;
+ office-code CDATA #IMPLIED
+ code-source CDATA #IMPLIED
+ >
+
+
+
+
+<!ELEMENT body.end (tagline?, bibliography?)>
+<!ATTLIST body.end
+ %global-attributes;
+ >
+
+<!ELEMENT tagline (%enriched-text;)*>
+<!ATTLIST tagline
+ %global-attributes;
+ type (std | pa | npa) "std"
+ >
+
+<!ELEMENT bibliography (#PCDATA)>
+<!ATTLIST bibliography
+ %global-attributes;
+ >
+
diff --git a/test/valid/dtds/notes.dtd b/test/valid/dtds/notes.dtd
new file mode 100644
index 0000000..b40a8ac
--- /dev/null
+++ b/test/valid/dtds/notes.dtd
@@ -0,0 +1,19 @@
+<!--
+This gets parsed without complaint:
+<!ELEMENT pfx:notes ( #PCDATA | note | pfx:note )* >
+-->
+
+<!--
+This triggers a diagnostic:
+notes.dtd:13: validity error : Definition of notes has duplicate
+references of note
+<!ELEMENT pfx:notes ( #PCDATA | pfx:note | note )* >
+-->
+
+<!ELEMENT pfx:notes ( #PCDATA | pfx:note | note )* >
+
+<!ATTLIST notes
+ xmlns:pfx CDATA #FIXED 'http://namespace/uri/here'
+>
+<!ELEMENT note EMPTY >
+<!ELEMENT pfx:note EMPTY >
diff --git a/test/valid/dtds/objednavka.dtd b/test/valid/dtds/objednavka.dtd
new file mode 100644
index 0000000..ac63df1
--- /dev/null
+++ b/test/valid/dtds/objednavka.dtd
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!ELEMENT objednavka (AdDoruÄeni, AdÚÄtovací, ZpůsobDopravy, ZpůsobPlatby, DatumPÅ™ijetí, DatumDoruÄení, ObsahObjednávky, Komentář?)>
+<!ELEMENT AdDoruÄeni (Jméno, Ulice, MÄ›sto, PSÄŒ)>
+<!ELEMENT AdÚÄtovací (Jméno, Ulice, MÄ›sto, PSÄŒ)>
+<!ELEMENT Jméno (#PCDATA)>
+<!ELEMENT Ulice (#PCDATA)>
+<!ELEMENT Město (#PCDATA)>
+<!ELEMENT PSČ (#PCDATA)>
+<!ELEMENT ZpůsobDopravy (#PCDATA) >
+<!ELEMENT ZpůsobPlatby (#PCDATA) >
+<!ELEMENT DatumPřijetí (#PCDATA)>
+<!ELEMENT DatumDoruÄení (#PCDATA)>
+<!ELEMENT ObsahObjednávky (Zboží+) >
+<!ELEMENT Zboží (Kód, Název, PoÄet, Cena, Popis?) >
+<!ELEMENT Kód (#PCDATA)>
+<!ELEMENT Název (#PCDATA) >
+<!ELEMENT PoÄet (#PCDATA)>
+<!ELEMENT Cena (#PCDATA) >
+<!ELEMENT Popis (#PCDATA) >
+<!ELEMENT Komentář (Řádka*) >
+<!ELEMENT Řádka (#PCDATA)>
+<!ATTLIST PoÄet
+ jednotka (ks | kg | m2 | m) #IMPLIED>
diff --git a/test/valid/dtds/spec.dtd b/test/valid/dtds/spec.dtd
new file mode 100755
index 0000000..0fdfb86
--- /dev/null
+++ b/test/valid/dtds/spec.dtd
@@ -0,0 +1,972 @@
+<!-- ............................................................... -->
+<!-- XML specification DTD ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+TYPICAL INVOCATION:
+# <!DOCTYPE spec PUBLIC
+# "-//W3C//DTD Specification::19980323//EN"
+# "http://www.w3.org/XML/Group/DTD/xmlspec.dtd">
+
+PURPOSE:
+ This DTD was developed for use with the XML family of W3C
+ specifications. It is an XML-compliant DTD based in part on
+ the TEI Lite and Sweb DTDs.
+
+DEPENDENCIES:
+ None.
+
+CHANGE HISTORY:
+ The list of changes is at the end of the DTD.
+
+ For all details, see the design report at:
+
+ <http://www.w3.org/XML/Group/DTD/xmlspec-report.htm>
+
+ The "typical invocation" FPI always gets updated to reflect the
+ date of the most recent changes.
+
+ Search this file for "#" in the first column to see change history
+ comments.
+
+MAINTAINER:
+ Eve Maler
+ ArborText Inc.
+ elm@arbortext.com
+ voice: +1 781 270 5750
+ fax: +1 781 273 3760
+-->
+
+<!-- ............................................................... -->
+<!-- Entities for characters and symbols ........................... -->
+
+<!--
+#1998-03-10: maler: Added &ldquo; and &rdquo;.
+# Used 8879:1986-compatible decimal character
+# references.
+# Merged charent.mod file back into main file.
+-->
+
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+<!ENTITY mdash "--">
+<!ENTITY nbsp "&#160;">
+<!ENTITY ldquo "#x201C;">
+<!ENTITY rdquo "#x201D;">
+
+<!-- ............................................................... -->
+<!-- Entities for classes of standalone elements ................... -->
+
+<!--
+#1997-10-16: maler: Added table to %illus.class;.
+#1997-11-28: maler: Added htable to %illus.class;.
+#1997-12-29: maler: IGNOREd table.
+#1998-03-10: maler: Removed SGML Open-specific %illus.class;.
+# Added "local" entities for customization.
+-->
+
+<!ENTITY % local.p.class "">
+<!ENTITY % p.class "p
+ %local.p.class;">
+
+<!ENTITY % local.statusp.class "">
+<!ENTITY % statusp.class "statusp
+ %local.statusp.class;">
+
+<!ENTITY % local.list.class "">
+<!ENTITY % list.class "ulist|olist|slist|glist
+ %local.list.class;">
+
+<!ENTITY % local.speclist.class "">
+<!ENTITY % speclist.class "orglist|blist
+ %local.speclist.class;">
+
+<!ENTITY % local.note.class "">
+<!ENTITY % note.class "note|wfcnote|vcnote
+ %local.note.class;">
+
+<!ENTITY % local.illus.class "">
+<!ENTITY % illus.class "eg|graphic|scrap|htable
+ %local.illus.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for classes of phrase-level elements ................. -->
+
+<!--
+#1997-12-29: maler: Added xspecref to %ref.class;.
+#1998-03-10: maler: Added %ednote.class;.
+# Added "local" entities for customization.
+-->
+
+<!ENTITY % local.annot.class "">
+<!ENTITY % annot.class "footnote
+ %local.annot.class;">
+
+<!ENTITY % local.termdef.class "">
+<!ENTITY % termdef.class "termdef|term
+ %local.termdef.class;">
+
+<!ENTITY % local.emph.class "">
+<!ENTITY % emph.class "emph|quote
+ %local.emph.class;">
+
+<!ENTITY % local.ref.class "">
+<!ENTITY % ref.class "bibref|specref|termref|titleref
+ |xspecref|xtermref
+ %local.ref.class;">
+
+<!ENTITY % local.loc.class "">
+<!ENTITY % loc.class "loc
+ %local.loc.class;">
+
+<!ENTITY % local.tech.class "">
+<!ENTITY % tech.class "kw|nt|xnt|code
+ %local.tech.class;">
+
+<!ENTITY % local.ednote.class "">
+<!ENTITY % ednote.class "ednote
+ %local.ednote.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for mixtures of standalone elements .................. -->
+
+<!--
+#1997-09-30: maler: Created %p.mix; to eliminate p from self.
+#1997-09-30: maler: Added %speclist.class; to %obj.mix; and %p.mix;.
+#1997-09-30: maler: Added %note.class; to %obj.mix; and %p.mix;.
+#1997-10-16: maler: Created %entry.mix;. Note that some elements
+# left out here are still allowed in termdef,
+# which entry can contain through %p.pcd.mix;.
+#1997-11-28: maler: Added %p.class; to %statusobj.mix;.
+#1998-03-10: maler: Added %ednote.class; to all mixtures, except
+# %p.mix; and %statusobj.mix;, because paragraphs
+# and status paragraphs will contain ednote
+# through %p.pcd.mix;.
+#1998-03-123: maler: Added %termdef.mix; (broken out from
+# %termdef.pcd.mix;).
+-->
+
+<!ENTITY % div.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;">
+<!ENTITY % obj.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;">
+<!ENTITY % p.mix
+ "%list.class;|%speclist.class;|%note.class;|%illus.class;">
+<!ENTITY % entry.mix
+ "%list.class;|note|eg|graphic|%ednote.class;">
+<!ENTITY % statusobj.mix
+ "%p.class;|%statusp.class;|%list.class;">
+<!ENTITY % hdr.mix
+ "%p.class;|%list.class;|%ednote.class;">
+<!ENTITY % termdef.mix
+ "%note.class;|%illus.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->
+
+<!-- Note that %termdef.pcd.mix contains %note.class;
+ and %illus.class;, considered standalone elements. -->
+
+<!--
+#1997-09-30: maler: Added scrap and %note.class; to %termdef.pcd.mix;.
+#1997-11-28: maler: Added %loc.class; to %p.pcd.mix;.
+#1998-03-10: maler: Added %ednote.class; to all mixtures.
+#1998-03-23: maler: Moved some %termdef.pcd.mix; stuff out to
+# %termdef.mix;.
+-->
+
+<!ENTITY % p.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % statusp.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % head.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%tech.class;|%ednote.class;">
+<!ENTITY % label.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;|%tech.class;
+ |%ednote.class;">
+<!ENTITY % eg.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%ednote.class;">
+<!ENTITY % termdef.pcd.mix
+ "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
+ |%ednote.class;">
+<!ENTITY % bibl.pcd.mix
+ "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
+<!ENTITY % tech.pcd.mix
+ "#PCDATA|%ednote.class;">
+<!ENTITY % loc.pcd.mix
+ "#PCDATA|%loc.class;|%ednote.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for customizable content models ...................... -->
+
+<!--
+#1998-03-10: maler: Added customization entities.
+-->
+
+<!ENTITY % spec.mdl
+ "header, front?, body, back?">
+
+<!ENTITY % header.mdl
+ "title, subtitle?, version, w3c-designation, w3c-doctype,
+ pubdate, notice*, publoc, latestloc?, prevlocs?, authlist,
+ abstract, status, pubstmt?, sourcedesc?, langusage,
+ revisiondesc">
+
+<!ENTITY % pubdate.mdl
+ "day?, month, year">
+
+<!-- ............................................................... -->
+<!-- Entities for common attributes ................................ -->
+
+<!-- key attribute:
+ Optionally provides a sorting or indexing key, for cases when
+ the element content is inappropriate for this purpose. -->
+<!ENTITY % key.att
+ 'key CDATA #IMPLIED'>
+
+<!-- def attribute:
+ Points to the element where the relevant definition can be
+ found, using the IDREF mechanism. %def.att; is for optional
+ def attributes, and %def-req.att; is for required def
+ attributes. -->
+<!ENTITY % def.att
+ 'def IDREF #IMPLIED'>
+<!ENTITY % def-req.att
+ 'def IDREF #REQUIRED'>
+
+<!-- ref attribute:
+ Points to the element where more information can be found,
+ using the IDREF mechanism. %ref.att; is for optional
+ ref attributes, and %ref-req.att; is for required ref
+ attributes. -->
+<!ENTITY % ref.att
+ 'ref IDREF #IMPLIED'>
+<!ENTITY % ref-req.att
+ 'ref IDREF #REQUIRED'>
+
+<!--
+#1998-03-23: maler: Added show and actuate attributes to href.
+# Added semi-common xml:space attribute.
+-->
+
+<!-- HREF and source attributes:
+ Points to the element where more information or source data
+ can be found, using the URL (XLL simple link) mechanism.
+ For some purposes, is associated with additional XLL
+ attributes. %href.att; is for optional HREF attributes,
+ and %href-req.att; is for required HREF attributes.
+ %source-req.att; is for the source attribute, which
+ is always required. -->
+<!ENTITY % href.att
+ 'xml-link CDATA #FIXED "simple"
+ href CDATA #IMPLIED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!ENTITY % href-req.att
+ 'xml-link CDATA #FIXED "simple"
+ href CDATA #REQUIRED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!ENTITY % source-req.att
+ 'xml-link CDATA #FIXED "simple"
+ xml:attributes NMTOKENS #FIXED "href source"
+ source CDATA #REQUIRED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!-- xml:space attribute:
+ Indicates that the element contains white space
+ that the formatter or other application should retain,
+ as appropriate to its function. -->
+<!ENTITY % xmlspace.att
+ 'xml:space (default
+ |preserve) #FIXED "preserve"'>
+
+<!-- Common attributes:
+ Every element has an ID attribute (sometimes required,
+ but usually optional) for links, and a Role attribute
+ for extending the useful life of the DTD by allowing
+ authors to make subclasses for any element. %common.att;
+ is for common attributes where the ID is optional, and
+ %common-idreq.att; is for common attributes where the
+ ID is required. -->
+<!ENTITY % common.att
+ 'id ID #IMPLIED
+ role NMTOKEN #IMPLIED'>
+<!ENTITY % common-idreq.att
+ 'id ID #REQUIRED
+ role NMTOKEN #IMPLIED'>
+
+<!-- ............................................................... -->
+<!-- Common elements ............................................... -->
+
+<!-- head: Title on divisions, productions, and the like -->
+<!ELEMENT head (%head.pcd.mix;)*>
+<!ATTLIST head %common.att;>
+
+<!-- ............................................................... -->
+<!-- Major specification structure ................................. -->
+
+<!--
+#1998-03-10: maler: Made spec content model easily customizable.
+-->
+
+<!ELEMENT spec (%spec.mdl;)>
+<!ATTLIST spec %common.att;>
+
+<!ELEMENT front (div1+)>
+<!ATTLIST front %common.att;>
+
+<!ELEMENT body (div1+)>
+<!ATTLIST body %common.att;>
+
+<!--
+#1997-09-30: maler: Added inform-div1 to back content.
+-->
+
+<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
+<!ATTLIST back %common.att;>
+
+<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
+<!ATTLIST div1 %common.att;>
+
+<!--
+#1997-09-30: maler: Added inform-div1 declarations.
+-->
+
+<!-- inform-div1: Non-normative division in back matter -->
+<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
+<!ATTLIST inform-div1 %common.att;>
+
+<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
+<!ATTLIST div2 %common.att;>
+
+<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
+<!ATTLIST div3 %common.att;>
+
+<!ELEMENT div4 (head, (%div.mix;)*)>
+<!ATTLIST div4 %common.att;>
+
+<!-- Specification header .......... -->
+
+<!--
+#1998-03-10: maler: Made header content model easily customizable.
+-->
+
+<!ELEMENT header (%header.mdl;)>
+<!ATTLIST header %common.att;>
+
+<!-- Example of title: "Extensible Cheese Language (XCL)" -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %common.att;>
+
+<!-- Example of subtitle: "A Cheesy Specification" -->
+<!ELEMENT subtitle (#PCDATA)>
+<!ATTLIST subtitle %common.att;>
+
+<!-- Example of version: "Version 666.0" -->
+<!ELEMENT version (#PCDATA)>
+<!ATTLIST version %common.att;>
+
+<!-- Example of w3c-designation: "WD-xcl-19991231" -->
+<!ELEMENT w3c-designation (#PCDATA)>
+<!ATTLIST w3c-designation %common.att;>
+
+<!-- Example of w3c-doctype: "World Wide Web Consortium Working
+ Draft" -->
+<!ELEMENT w3c-doctype (#PCDATA)>
+<!ATTLIST w3c-doctype %common.att;>
+
+<!--
+#1998-03-10: maler: Made pubdate content model easily customizable.
+-->
+
+<!ELEMENT pubdate (%pubdate.mdl;)>
+<!ATTLIST pubdate %common.att;>
+
+<!ELEMENT day (#PCDATA)>
+<!ATTLIST day %common.att;>
+
+<!ELEMENT month (#PCDATA)>
+<!ATTLIST month %common.att;>
+
+<!ELEMENT year (#PCDATA)>
+<!ATTLIST year %common.att;>
+
+<!-- Example of notice: "This draft is for public comment..." -->
+<!ELEMENT notice (%hdr.mix;)+>
+<!ATTLIST notice %common.att;>
+
+<!ELEMENT publoc (loc+)>
+<!ATTLIST publoc %common.att;>
+
+<!ELEMENT prevlocs (loc+)>
+<!ATTLIST prevlocs %common.att;>
+
+<!ELEMENT latestloc (loc+)>
+<!ATTLIST latestloc %common.att;>
+
+<!-- loc (defined in "Phrase-level elements" below) -->
+
+<!ELEMENT authlist (author+)>
+<!ATTLIST authlist %common.att;>
+
+<!--
+#1997-09-30: maler: Made affiliation optional.
+#1998-03-10: maler: Made email optional.
+-->
+
+<!ELEMENT author (name, affiliation?, email?)>
+<!ATTLIST author %common.att;>
+
+<!ELEMENT name (#PCDATA)>
+<!ATTLIST name
+ %common.att;
+ %key.att;>
+
+<!ELEMENT affiliation (#PCDATA)>
+<!ATTLIST affiliation %common.att;>
+
+<!ELEMENT email (#PCDATA)>
+<!-- HREF attribute:
+ email functions as a hypertext reference through this
+ required attribute. Typically the reference would use
+ the mailto: scheme. -->
+<!ATTLIST email
+ %common.att;
+ %href-req.att;>
+
+<!-- The status element now contains both statusp and p, and
+ the latter now allows loc. Use p; statusp will be removed
+ eventually. -->
+<!ELEMENT status (%statusobj.mix;)+>
+<!ATTLIST status %common.att;>
+
+<!ELEMENT abstract (%hdr.mix;)*>
+<!ATTLIST abstract %common.att;>
+
+<!ELEMENT pubstmt (%hdr.mix;)+>
+<!ATTLIST pubstmt %common.att;>
+
+<!ELEMENT sourcedesc (%hdr.mix;)+>
+<!ATTLIST sourcedesc %common.att;>
+
+<!ELEMENT langusage (language+)>
+<!ATTLIST langusage %common.att;>
+
+<!ELEMENT language (#PCDATA)>
+<!ATTLIST language %common.att;>
+
+<!ELEMENT revisiondesc (%hdr.mix;)+>
+<!ATTLIST revisiondesc %common.att;>
+
+<!-- ............................................................... -->
+<!-- Standalone elements ........................................... -->
+
+<!-- Paragraphs .................... -->
+
+<!--
+#1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
+#1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix; references.
+#1997-12-29: maler: Changed order of %statusobj.mix; and %statusp.pcd.mix;
+# references.
+-->
+
+<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
+<!ATTLIST p %common.att;>
+
+<!-- statusp: Special paragraph that allows loc inside it (note that
+ p now also allows loc) -->
+<!ELEMENT statusp (%statusp.pcd.mix;|%statusobj.mix;)*>
+<!ATTLIST statusp %common.att;>
+
+<!-- Lists ......................... -->
+
+<!ELEMENT ulist (item+)>
+<!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+<!ATTLIST ulist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+<!ELEMENT olist (item+)>
+<!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+<!ATTLIST olist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+<!ELEMENT item (%obj.mix;)+>
+<!ATTLIST item %common.att;>
+
+<!ELEMENT slist (sitem+)>
+<!ATTLIST slist %common.att;>
+
+<!ELEMENT sitem (%p.pcd.mix;)*>
+<!ATTLIST sitem %common.att;>
+
+<!ELEMENT glist (gitem+)>
+<!ATTLIST glist %common.att;>
+
+<!ELEMENT gitem (label, def)>
+<!ATTLIST gitem %common.att;>
+
+<!ELEMENT label (%label.pcd.mix;)*>
+<!ATTLIST label %common.att;>
+
+<!ELEMENT def (%obj.mix;)*>
+<!ATTLIST def %common.att;>
+
+<!-- Special lists ................. -->
+
+<!ELEMENT blist (bibl+)>
+<!ATTLIST blist %common.att;>
+
+<!ELEMENT bibl (%bibl.pcd.mix;)*>
+
+<!-- HREF attribute:
+ bibl optionally functions as a hypertext reference to the
+ referred-to resource through this attribute. -->
+
+<!ATTLIST bibl
+ %common.att;
+ %href.att;
+ %key.att;>
+
+<!ELEMENT orglist (member+)>
+<!ATTLIST orglist %common.att;>
+
+<!--
+#1997-09-30: maler: Added optional affiliation.
+-->
+
+<!ELEMENT member (name, affiliation?, role?)>
+<!ATTLIST member %common.att;>
+
+<!-- name (defined in "Specification header" above) -->
+<!-- affiliation (defined in "Specification header" above) -->
+
+<!ELEMENT role (#PCDATA)>
+<!ATTLIST role %common.att;>
+
+<!-- Notes ......................... -->
+
+<!ELEMENT note (%obj.mix;)+>
+<!ATTLIST note %common.att;>
+
+<!ELEMENT wfcnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ wfcnote must have an ID so that it can be pointed to
+ from a wfc element in a production. -->
+<!ATTLIST wfcnote
+ %common-idreq.att;>
+
+<!ELEMENT vcnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ vcnote must have an ID so that it can be pointed to
+ from a vc element in a production. -->
+<!ATTLIST vcnote
+ %common-idreq.att;>
+
+<!-- Illustrations ................. -->
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!ELEMENT eg (%eg.pcd.mix;)*>
+<!ATTLIST eg
+ %common.att;
+ %xmlspace.att;>
+
+<!ELEMENT graphic EMPTY>
+<!-- source attribute:
+ The graphic data must reside at the location pointed to.
+ This is a hypertext reference, but for practical purposes,
+ for now it should just be a pathname. -->
+<!ATTLIST graphic
+ %common.att;
+ %source-req.att;
+ alt CDATA #IMPLIED>
+
+<!--
+#1997-11-28: maler: Added prodgroup to scrap and defined it.
+-->
+
+<!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
+<!-- lang attribute:
+ The scrap can link to a description of the language used,
+ found in a language element in the header. -->
+<!ATTLIST scrap
+ %common.att;
+ lang IDREF #IMPLIED>
+
+<!ELEMENT prodgroup (prod+)>
+<!-- pcw<n> attributes:
+ Presentational attributes to control the width
+ of the "pseudo-table" columns used to output
+ groups of productions. -->
+<!ATTLIST prodgroup
+ %common.att;
+ pcw1 CDATA #IMPLIED
+ pcw2 CDATA #IMPLIED
+ pcw3 CDATA #IMPLIED
+ pcw4 CDATA #IMPLIED
+ pcw5 CDATA #IMPLIED
+>
+
+<!ELEMENT prod (lhs, (rhs, (com|wfc|vc)*)+)>
+<!-- ID attribute:
+ The production must have an ID so that cross-references
+ (specref) and mentions of nonterminals (nt) can link to
+ it. -->
+<!ATTLIST prod
+ %common-idreq.att;>
+
+<!ELEMENT lhs (#PCDATA)>
+<!ATTLIST lhs %common.att;>
+
+<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
+<!ATTLIST rhs %common.att;>
+
+<!-- nt and xnt (defined in "Phrase-level elements" below) -->
+
+<!--
+#1997-11-28: maler: Added loc and bibref to com content.
+-->
+
+<!ELEMENT com (#PCDATA|loc|bibref)*>
+<!ATTLIST com %common.att;>
+
+<!-- wfc: Should generate the head of the wfcnote pointed to -->
+<!ELEMENT wfc EMPTY>
+<!-- def attribute:
+ Each well formedness tagline in a production must link to the
+ wfcnote that defines it. -->
+<!ATTLIST wfc
+ %def-req.att;
+ %common.att;>
+
+<!-- vc: Should generate the head of the vcnote pointed to -->
+<!ELEMENT vc EMPTY>
+<!-- def attribute:
+ Each validity tagline in a production must link to the vcnote
+ that defines it. -->
+<!ATTLIST vc
+ %def-req.att;
+ %common.att;>
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- bnf: Un-marked-up production -->
+<!ELEMENT bnf (%eg.pcd.mix;)*>
+<!ATTLIST bnf
+ %common.att;
+ %xmlspace.att;>
+
+<!--
+#1997-10-16: maler: Added table mechanism.
+#1997-11-28: maler: Added non-null system ID to entity declaration.
+# Added HTML table module.
+#1997-12-29: maler: IGNOREd SGML Open table model.
+#1998-03-10: maler: Removed SGML Open table model.
+# Merged html-tbl.mod file into main file.
+# Added %common.att; to all HTML table elements.
+-->
+
+<!-- TR and TD attributes:
+ Alignment attributes. No default. -->
+<!ENTITY % trtd.att
+ "align (left
+ |center
+ |right) #IMPLIED
+ valign (top
+ |middle
+ |bottom) #IMPLIED">
+
+<!ELEMENT htable (htbody+)>
+<!ATTLIST htable
+ border CDATA "0"
+ cellpadding CDATA "0"
+ align (left
+ |center
+ |right) "left">
+
+<!ELEMENT htbody (tr+)>
+<!ATTLIST htbody %common.att;>
+
+<!ELEMENT tr (td+)>
+<!ATTLIST tr
+ %common.att;
+ %trtd.att;>
+
+<!ELEMENT td (%p.pcd.mix;)*>
+<!ATTLIST td
+ %common.att;
+ %trtd.att;
+ bgcolor CDATA #IMPLIED
+ rowspan CDATA "1"
+ colspan CDATA "1">
+
+<!-- ............................................................... -->
+<!-- Phrase-level elements ......................................... -->
+
+<!-- bibref: Should generate, in square brackets, "key" on bibl -->
+<!ELEMENT bibref EMPTY>
+<!-- ref attribute:
+ A bibliography reference must link to the bibl element that
+ describes the resource. -->
+<!ATTLIST bibref
+ %common.att;
+ %ref-req.att;>
+
+<!ELEMENT code (%tech.pcd.mix;)*>
+<!ATTLIST code %common.att;>
+
+<!--
+#1998-03-10: maler: Declared ednote and related elements.
+-->
+
+<!ELEMENT ednote (name?, date?, edtext)>
+<!ATTLIST ednote %common.att;>
+
+<!ELEMENT date (#PCDATA)>
+<!ATTLIST date %common.att;>
+
+<!ELEMENT edtext (#PCDATA)>
+<!ATTLIST edtext %common.att;>
+
+<!ELEMENT emph (#PCDATA)>
+<!ATTLIST emph %common.att;>
+
+<!-- footnote: Both footnote content and call to footnote -->
+<!ELEMENT footnote (%obj.mix;)+>
+<!ATTLIST footnote %common.att;>
+
+<!ELEMENT kw (%tech.pcd.mix;)*>
+<!ATTLIST kw %common.att;>
+
+<!ELEMENT loc (#PCDATA)>
+<!-- HREF attribute:
+ The purpose of a loc element is to function as a hypertext
+ link to a resource. (Ideally, the content of loc will also
+ mention the URI of the resource, so that readers of the
+ printed version will be able to locate the resource.) -->
+<!ATTLIST loc
+ %common.att;
+ %href-req.att;>
+
+<!ELEMENT nt (#PCDATA)>
+<!-- def attribute:
+ The nonterminal must link to the production that defines
+ it. -->
+<!ATTLIST nt
+ %common.att;
+ %def-req.att;>
+
+<!--
+#1998-03-10: maler: Declared quote.
+-->
+
+<!-- quote: Scare quotes and other purely presentational quotes -->
+<!ELEMENT quote (%p.pcd.mix;)*>
+<!ATTLIST quote %common.att;>
+
+<!-- specref: Should generate italic "[n.n], Section Title" for
+ div, "n" for numbered item, or "[n]" for production -->
+<!ELEMENT specref EMPTY>
+<!-- ref attribute:
+ The purpose of a specref element is to link to a div, item
+ in an olist, or production in the current spec. -->
+<!ATTLIST specref
+ %common.att;
+ %ref-req.att;>
+
+<!ELEMENT term (#PCDATA)>
+<!ATTLIST term %common.att;>
+
+<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
+<!-- ID attribute:
+ A term definition must have an ID so that it can be linked
+ to from termref elements. -->
+<!-- term attribute:
+ The canonical form of the term or phrase being defined must
+ appear in this attribute, even if the term or phrase also
+ appears in the element content in identical form (e.g., in
+ the term element). -->
+<!ATTLIST termdef
+ %common-idreq.att;
+ term CDATA #REQUIRED>
+
+<!ELEMENT termref (#PCDATA)>
+<!-- ref attribute:
+ A term reference must link to the termdef element that
+ defines the term. -->
+<!ATTLIST termref
+ %common.att;
+ %def-req.att;>
+
+<!ELEMENT titleref (#PCDATA)>
+<!-- HREF attribute:
+ A title reference can optionally function as a hypertext
+ link to the resource with this title. -->
+<!ATTLIST titleref
+ %common.att;
+ %href.att;>
+
+<!ELEMENT xnt (#PCDATA)>
+<!-- HREF attribute:
+ The nonterminal must hyperlink to a resource that serves
+ to define it (e.g., a production in a related XML
+ specification). -->
+<!ATTLIST xnt
+ %common.att;
+ %href-req.att;>
+
+<!--
+#1997-12-29: maler: Declared xspecref.
+-->
+
+<!ELEMENT xspecref (#PCDATA)>
+<!-- HREF attribute:
+ The spec reference must hyperlink to the resource to
+ cross-refer to (e.g., a section in a related XML
+ specification). -->
+<!ATTLIST xspecref
+ %common.att;
+ %href-req.att;>
+
+<!ELEMENT xtermref (#PCDATA)>
+<!-- HREF attribute:
+ The term reference must hyperlink to the resource that
+ serves to define the term (e.g., a term definition in
+ a related XML specification). -->
+<!ATTLIST xtermref
+ %common.att;
+ %href-req.att;>
+
+<!-- ............................................................... -->
+<!-- Unused elements for ADEPT ..................................... -->
+
+<!--
+#1997-09-30: maler: Added unusued elements.
+#1997-10-14: maler: Fixed div to move nested div to the mixture.
+-->
+
+<!-- The following elements are purposely declared but never
+ referenced. Declaring them allows them to be pasted from
+ an HTML document into a document using this DTD in ADEPT.
+ The ATD Context Transformation mechanism will try to convert
+ them to the appropriate element for this DTD. While this
+ conversion will not work for all fragments, it does allow
+ many cases to work reasonably well. -->
+
+<!ELEMENT div
+ (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
+<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
+<!ELEMENT pre (%eg.pcd.mix;|em)*>
+<!ELEMENT ul (item|li)*>
+<!ELEMENT ol (item|li)*>
+<!ELEMENT li (#PCDATA|%obj.mix;)*>
+<!ELEMENT em (#PCDATA)>
+<!ELEMENT a (#PCDATA)>
+
+<!-- ............................................................... -->
+<!-- Change history ................................................ -->
+
+<!--
+#1997-08-18: maler
+#- Did a major revision.
+#1997-09-10: maler
+#- Updated FPI.
+#- Removed namekey element and put key attribute on name element.
+#- Made statusp element and supporting entities.
+#- Added slist element with sitem+ content.
+#- Required head on scrap and added new bnf subelement.
+#- Added an xnt element and allowed it and nt in regular text and rhs.
+#- Removed the ntref element.
+#- Added back the com element to the content of rhs.
+#- Added a key attribute to bibl.
+#- Removed the ident element.
+#- Added a term element to be used inside termdef.
+#- Added an xtermref element parallel to termref.
+#- Beefed up DTD comments.
+#1997-09-12: maler
+#- Allowed term element in general text.
+#- Changed bibref to EMPTY.
+#- Added ref.class to termdef.pcd.mix.
+#1997-09-14: maler
+#- Changed main attribute of xtermref from def to href.
+#- Added termdef.class to label contents.
+#1997-09-30: maler
+#- Added character entity module and added new entities.
+#- Removed p from appearing directly in self; created %p.mix;.
+#- Added inform-div (non-normative division) element.
+#- Fixed xtermref comment to mention HREF, not ref.
+#- Extended orglist model to allow optional affiliation.
+#- Modified author to make affiliation optional.
+#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
+#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
+#- Added unused HTML elements.
+#- Put empty system ID next to public ID in entity declarations.
+#1997-10-14: maler
+#- Fixed "unused" div content model to move nested div to mixture.
+#1997-10-16: maler
+#- Added SGML Open Exchange tables.
+#1997-11-28: maler
+#- Added support for prodgroup and its attributes.
+#- Added support for HTML tables.
+#- Added loc and bibref to content of com.
+#- Added loc to general p content models.
+#- Allowed p as alternative to statusp in status.
+#- Added non-null system IDs to external parameter entity declarations.
+#- (Modified the SGML Open table module to make it XML-compliant.)
+#- (Modified the character entity module.)
+#1997-12-29: maler
+#- Moved #PCDATA occurrences to come before GIs in content models.
+#- Removed use of the SGML Open table module.
+#- Added xspecref element.
+#- Ensured that all FPIs contain 4-digit year.
+#- (Modified the character entity module.)
+#1997-03-10: maler
+#- Merged the character entity and table modules into the main file.
+#- Added ldquo and rdquo entities.
+#- Added common attributes to prodgroup.
+#- Made the email element in header optional.
+#- Removed reference to the SGML Open table model.
+#- Added ednote element.
+#- Added quote element.
+#- Updated XLink usage to reflect 3 March 1998 WD.
+#- Added "local" entities to the class entities for customization.
+#- Parameterized several content models to allow for customization.
+#1997-03-23: maler
+#- Cleaned up some comments and removed some others.
+#- Added xml:space semi-common attribute to eg and bnf elements.
+#- Added show and embed attributes on all the uses of href.
+#- Added %common.att; to all HTML table elements.
+#- Added a real URI to the "typical invocation" comment.
+-->
+
+<!-- ............................................................... -->
+<!-- End of XML specification DTD .................................. -->
+<!-- ............................................................... -->
diff --git a/test/valid/dtds/utf16b.ent b/test/valid/dtds/utf16b.ent
new file mode 100644
index 0000000..52c7e2d
--- /dev/null
+++ b/test/valid/dtds/utf16b.ent
Binary files differ
diff --git a/test/valid/dtds/utf16l.ent b/test/valid/dtds/utf16l.ent
new file mode 100644
index 0000000..2cad40a
--- /dev/null
+++ b/test/valid/dtds/utf16l.ent
Binary files differ
diff --git a/test/valid/dtds/xhtml-lat1.ent b/test/valid/dtds/xhtml-lat1.ent
new file mode 100644
index 0000000..aaae738
--- /dev/null
+++ b/test/valid/dtds/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+ %HTMLlat1;
+-->
+
+<!ENTITY nbsp "&#160;"> <!-- no-break space = non-breaking space,
+ U+00A0 ISOnum -->
+<!ENTITY iexcl "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+ U+00A6 ISOnum -->
+<!ENTITY sect "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml "&#168;"> <!-- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia -->
+<!ENTITY copy "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo "&#171;"> <!-- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not "&#172;"> <!-- not sign = discretionary hyphen,
+ U+00AC ISOnum -->
+<!ENTITY shy "&#173;"> <!-- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum -->
+<!ENTITY reg "&#174;"> <!-- registered sign = registered trade mark sign,
+ U+00AE ISOnum -->
+<!ENTITY macr "&#175;"> <!-- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum -->
+<!ENTITY sup2 "&#178;"> <!-- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum -->
+<!ENTITY sup3 "&#179;"> <!-- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum -->
+<!ENTITY acute "&#180;"> <!-- acute accent = spacing acute,
+ U+00B4 ISOdia -->
+<!ENTITY micro "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para "&#182;"> <!-- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1 "&#185;"> <!-- superscript one = superscript digit one,
+ U+00B9 ISOnum -->
+<!ENTITY ordm "&#186;"> <!-- masculine ordinal indicator,
+ U+00BA ISOnum -->
+<!ENTITY raquo "&#187;"> <!-- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+ = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+ U+00C1 ISOlat1 -->
+<!ENTITY Acirc "&#194;"> <!-- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+ U+00C3 ISOlat1 -->
+<!ENTITY Auml "&#196;"> <!-- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 -->
+<!ENTITY Aring "&#197;"> <!-- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 -->
+<!ENTITY AElig "&#198;"> <!-- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+ U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+ U+00C9 ISOlat1 -->
+<!ENTITY Ecirc "&#202;"> <!-- latin capital letter E with circumflex,
+ U+00CA ISOlat1 -->
+<!ENTITY Euml "&#203;"> <!-- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+ U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+ U+00CD ISOlat1 -->
+<!ENTITY Icirc "&#206;"> <!-- latin capital letter I with circumflex,
+ U+00CE ISOlat1 -->
+<!ENTITY Iuml "&#207;"> <!-- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 -->
+<!ENTITY ETH "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+ U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+ U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+ U+00D3 ISOlat1 -->
+<!ENTITY Ocirc "&#212;"> <!-- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+ U+00D5 ISOlat1 -->
+<!ENTITY Ouml "&#214;"> <!-- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 -->
+<!ENTITY times "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+ U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+ U+00DA ISOlat1 -->
+<!ENTITY Ucirc "&#219;"> <!-- latin capital letter U with circumflex,
+ U+00DB ISOlat1 -->
+<!ENTITY Uuml "&#220;"> <!-- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+ U+00DD ISOlat1 -->
+<!ENTITY THORN "&#222;"> <!-- latin capital letter THORN,
+ U+00DE ISOlat1 -->
+<!ENTITY szlig "&#223;"> <!-- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+ U+00E1 ISOlat1 -->
+<!ENTITY acirc "&#226;"> <!-- latin small letter a with circumflex,
+ U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+ U+00E3 ISOlat1 -->
+<!ENTITY auml "&#228;"> <!-- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 -->
+<!ENTITY aring "&#229;"> <!-- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 -->
+<!ENTITY aelig "&#230;"> <!-- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+ U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+ U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+ U+00E9 ISOlat1 -->
+<!ENTITY ecirc "&#234;"> <!-- latin small letter e with circumflex,
+ U+00EA ISOlat1 -->
+<!ENTITY euml "&#235;"> <!-- latin small letter e with diaeresis,
+ U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+ U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+ U+00ED ISOlat1 -->
+<!ENTITY icirc "&#238;"> <!-- latin small letter i with circumflex,
+ U+00EE ISOlat1 -->
+<!ENTITY iuml "&#239;"> <!-- latin small letter i with diaeresis,
+ U+00EF ISOlat1 -->
+<!ENTITY eth "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+ U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+ U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+ U+00F3 ISOlat1 -->
+<!ENTITY ocirc "&#244;"> <!-- latin small letter o with circumflex,
+ U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+ U+00F5 ISOlat1 -->
+<!ENTITY ouml "&#246;"> <!-- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+ U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+ U+00FA ISOlat1 -->
+<!ENTITY ucirc "&#251;"> <!-- latin small letter u with circumflex,
+ U+00FB ISOlat1 -->
+<!ENTITY uuml "&#252;"> <!-- latin small letter u with diaeresis,
+ U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+ U+00FD ISOlat1 -->
+<!ENTITY thorn "&#254;"> <!-- latin small letter thorn with,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/test/valid/dtds/xhtml-special.ent b/test/valid/dtds/xhtml-special.ent
new file mode 100644
index 0000000..cf709d1
--- /dev/null
+++ b/test/valid/dtds/xhtml-special.ent
@@ -0,0 +1,79 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+ %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot "&#34;"> <!-- quotation mark = APL quote,
+ U+0022 ISOnum -->
+<!ENTITY amp "&#38;#38;"> <!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt "&#38;#60;"> <!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt "&#62;"> <!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY apos "&#39;"> <!-- apostrophe mark, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig "&#338;"> <!-- latin capital ligature OE,
+ U+0152 ISOlat2 -->
+<!ENTITY oelig "&#339;"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron "&#352;"> <!-- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron "&#353;"> <!-- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml "&#376;"> <!-- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ "&#710;"> <!-- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde "&#732;"> <!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj "&#8204;"> <!-- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo "&#8216;"> <!-- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo "&#8217;"> <!-- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo "&#8220;"> <!-- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo "&#8221;"> <!-- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo "&#8249;"> <!-- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo "&#8250;"> <!-- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro "&#8364;"> <!-- euro sign, U+20AC NEW -->
diff --git a/test/valid/dtds/xhtml-symbol.ent b/test/valid/dtds/xhtml-symbol.ent
new file mode 100644
index 0000000..16f876b
--- /dev/null
+++ b/test/valid/dtds/xhtml-symbol.ent
@@ -0,0 +1,242 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+ %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof "&#402;"> <!-- latin small f with hook = function
+ = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma "&#915;"> <!-- greek capital letter gamma,
+ U+0393 ISOgrk3 -->
+<!ENTITY Delta "&#916;"> <!-- greek capital letter delta,
+ U+0394 ISOgrk3 -->
+<!ENTITY Epsilon "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta "&#920;"> <!-- greek capital letter theta,
+ U+0398 ISOgrk3 -->
+<!ENTITY Iota "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda "&#923;"> <!-- greek capital letter lambda,
+ U+039B ISOgrk3 -->
+<!ENTITY Mu "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma "&#931;"> <!-- greek capital letter sigma,
+ U+03A3 ISOgrk3 -->
+<!ENTITY Tau "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon "&#933;"> <!-- greek capital letter upsilon,
+ U+03A5 ISOgrk3 -->
+<!ENTITY Phi "&#934;"> <!-- greek capital letter phi,
+ U+03A6 ISOgrk3 -->
+<!ENTITY Chi "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi "&#936;"> <!-- greek capital letter psi,
+ U+03A8 ISOgrk3 -->
+<!ENTITY Omega "&#937;"> <!-- greek capital letter omega,
+ U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha "&#945;"> <!-- greek small letter alpha,
+ U+03B1 ISOgrk3 -->
+<!ENTITY beta "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma "&#947;"> <!-- greek small letter gamma,
+ U+03B3 ISOgrk3 -->
+<!ENTITY delta "&#948;"> <!-- greek small letter delta,
+ U+03B4 ISOgrk3 -->
+<!ENTITY epsilon "&#949;"> <!-- greek small letter epsilon,
+ U+03B5 ISOgrk3 -->
+<!ENTITY zeta "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta "&#952;"> <!-- greek small letter theta,
+ U+03B8 ISOgrk3 -->
+<!ENTITY iota "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa "&#954;"> <!-- greek small letter kappa,
+ U+03BA ISOgrk3 -->
+<!ENTITY lambda "&#955;"> <!-- greek small letter lambda,
+ U+03BB ISOgrk3 -->
+<!ENTITY mu "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf "&#962;"> <!-- greek small letter final sigma,
+ U+03C2 ISOgrk3 -->
+<!ENTITY sigma "&#963;"> <!-- greek small letter sigma,
+ U+03C3 ISOgrk3 -->
+<!ENTITY tau "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon "&#965;"> <!-- greek small letter upsilon,
+ U+03C5 ISOgrk3 -->
+<!ENTITY phi "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega "&#969;"> <!-- greek small letter omega,
+ U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek small letter theta symbol,
+ U+03D1 NEW -->
+<!ENTITY upsih "&#978;"> <!-- greek upsilon with hook symbol,
+ U+03D2 NEW -->
+<!ENTITY piv "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull "&#8226;"> <!-- bullet = black small circle,
+ U+2022 ISOpub -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub -->
+<!ENTITY prime "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime "&#8243;"> <!-- double prime = seconds = inches,
+ U+2033 ISOtech -->
+<!ENTITY oline "&#8254;"> <!-- overline = spacing overscore,
+ U+203E NEW -->
+<!ENTITY frasl "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp "&#8472;"> <!-- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image "&#8465;"> <!-- blackletter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real "&#8476;"> <!-- blackletter capital R = real part symbol,
+ U+211C ISOamso -->
+<!ENTITY trade "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+ U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr "&#8629;"> <!-- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW -->
+<!ENTITY lArr "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So ? lArr can
+ be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr "&#8658;"> <!-- rightwards double arrow,
+ U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+ another character with this function so ?
+ rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr "&#8660;"> <!-- left right double arrow,
+ U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part "&#8706;"> <!-- partial differential, U+2202 ISOtech -->
+<!ENTITY exist "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty "&#8709;"> <!-- empty set = null set = diameter,
+ U+2205 ISOamso -->
+<!ENTITY nabla "&#8711;"> <!-- nabla = backward difference,
+ U+2207 ISOtech -->
+<!ENTITY isin "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod "&#8719;"> <!-- n-ary product = product sign,
+ U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both -->
+<!ENTITY sum "&#8721;"> <!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both -->
+<!ENTITY minus "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic "&#8730;"> <!-- square root = radical sign,
+ U+221A ISOtech -->
+<!ENTITY prop "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4 "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim "&#8764;"> <!-- tilde operator = varies with = similar to,
+ U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both -->
+<!ENTITY cong "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp "&#8776;"> <!-- almost equal to = asymptotic to,
+ U+2248 ISOamsr -->
+<!ENTITY ne "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge "&#8805;"> <!-- greater-than or equal to,
+ U+2265 ISOtech -->
+<!ENTITY sub "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+ font encoding and is not included. Should it be, for symmetry?
+ It is in ISOamsn -->
+<!ENTITY nsub "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe "&#8839;"> <!-- superset of or equal to,
+ U+2287 ISOtech -->
+<!ENTITY oplus "&#8853;"> <!-- circled plus = direct sum,
+ U+2295 ISOamsb -->
+<!ENTITY otimes "&#8855;"> <!-- circled times = vector product,
+ U+2297 ISOamsb -->
+<!ENTITY perp "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech -->
+<!ENTITY sdot "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil "&#8968;"> <!-- left ceiling = apl upstile,
+ U+2308 ISOamsc -->
+<!ENTITY rceil "&#8969;"> <!-- right ceiling, U+2309 ISOamsc -->
+<!ENTITY lfloor "&#8970;"> <!-- left floor = apl downstile,
+ U+230A ISOamsc -->
+<!ENTITY rfloor "&#8971;"> <!-- right floor, U+230B ISOamsc -->
+<!ENTITY lang "&#9001;"> <!-- left-pointing angle bracket = bra,
+ U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+ or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang "&#9002;"> <!-- right-pointing angle bracket = ket,
+ U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+ or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs "&#9827;"> <!-- black club suit = shamrock,
+ U+2663 ISOpub -->
+<!ENTITY hearts "&#9829;"> <!-- black heart suit = valentine,
+ U+2665 ISOpub -->
+<!ENTITY diams "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
diff --git a/test/valid/dtds/xhtml.cat b/test/valid/dtds/xhtml.cat
new file mode 100644
index 0000000..0624dea
--- /dev/null
+++ b/test/valid/dtds/xhtml.cat
@@ -0,0 +1,14 @@
+OVERRIDE YES
+ -- Oasis entity catalog for Extensible HTML 1.0 --
+
+PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "xhtml1-strict.dtd"
+PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd"
+PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "xhtml1-frameset.dtd"
+
+ -- ISO latin 1 entity set for Extensible HTML (XML 1.0 format) --
+
+PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "xhtml-lat1.ent"
+PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "xhtml-symbol.ent"
+PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "xhtml-special.ent"
+
+SGMLDECL "xhtml1.dcl"
diff --git a/test/valid/dtds/xhtml1-frameset.dtd b/test/valid/dtds/xhtml1-frameset.dtd
new file mode 100644
index 0000000..1dd44e5
--- /dev/null
+++ b/test/valid/dtds/xhtml1-frameset.dtd
@@ -0,0 +1,1223 @@
+<!--
+ Extensible HTML version 1.0 Frameset DTD
+
+ This is the same as HTML 4.0 Frameset except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-1999 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
+
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+ <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+ Black = #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080 Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+ "br | span | bdo |object | applet | img | map | iframe">
+
+<!ENTITY % fontstyle "tt | i | b | big | small | u
+ | s | strike |font | basefont">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+ sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
+ %phrase; | %inline.forms;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | br | span | bdo | object | applet | img | map |
+ %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, frameset)>
+<!ATTLIST html
+ %i18n;
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ href %URI; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ language CDATA #IMPLIED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--======================= Frames =======================================-->
+
+<!-- only one noframes element permitted per document -->
+
+<!ELEMENT frameset (frameset|frame|noframes)*>
+<!ATTLIST frameset
+ %coreattrs;
+ rows %MultiLengths; #IMPLIED
+ cols %MultiLengths; #IMPLIED
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ >
+
+<!-- reserved frame names start with "_" otherwise starts with letter -->
+
+<!-- tiled window within frameset -->
+
+<!ELEMENT frame EMPTY>
+<!ATTLIST frame
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ noresize (noresize) #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ >
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ align %ImgAlign; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes (body)>
+<!ATTLIST noframes
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ background %URI; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ text %Color; #IMPLIED
+ link %Color; #IMPLIED
+ vlink %Color; #IMPLIED
+ alink %Color; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ type %ULStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!-- Ordered list numbering style
+
+ 1 arabic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ type %OLStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ start %Number; #IMPLIED
+ >
+
+<!-- single column list (DEPRECATED) -->
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- multiple column list (DEPRECATED) -->
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ type %LIStyle; #IMPLIED
+ value %Number; #IMPLIED
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ align (left|center|right) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding
+ "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ width %Number; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+ %attrs;
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ accesskey %Character; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ clear (left|all|right|none) "none"
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;> <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;> <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;> <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY> <!-- base font size -->
+<!ATTLIST basefont
+ id ID #IMPLIED
+ size CDATA #REQUIRED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+ %coreattrs;
+ %i18n;
+ size CDATA #IMPLIED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=":"
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
diff --git a/test/valid/dtds/xhtml1-strict.dtd b/test/valid/dtds/xhtml1-strict.dtd
new file mode 100644
index 0000000..d7c3da2
--- /dev/null
+++ b/test/valid/dtds/xhtml1-strict.dtd
@@ -0,0 +1,986 @@
+<!--
+ Extensible HTML version 1.0 Strict DTD
+
+ This is the same as HTML 4.0 Strict except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-1999 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+ <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+ "br | span | bdo | object | img | map">
+
+<!ENTITY % fontstyle "tt | i | b | big | small">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl">
+<!ENTITY % blocktext "pre | hr | blockquote | address">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | br | span | bdo | map | tt | i | b |
+ %phrase; | %inline.forms;)*">
+
+<!-- form uses %Block; excluding form -->
+
+<!ENTITY % form.content "(%block; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form and form controls -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | %special; | %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+ %i18n;
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ href %URI; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Block;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Block;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ >
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ >
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Block;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ accesskey %Character; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+ Note that in this DTD there is no name attribute. That
+ is only available in the transitional and frameset DTD.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form and form controls
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=':'
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ >
+
diff --git a/test/valid/dtds/xhtml1-transitional.dtd b/test/valid/dtds/xhtml1-transitional.dtd
new file mode 100644
index 0000000..def8d66
--- /dev/null
+++ b/test/valid/dtds/xhtml1-transitional.dtd
@@ -0,0 +1,1194 @@
+<!--
+ Extensible HTML version 1.0 Transitional DTD
+
+ This is the same as HTML 4.0 Transitional except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-1999 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+ <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+ Black = #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080 Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+ "br | span | bdo | object | applet | img | map | iframe">
+
+<!ENTITY % fontstyle "tt | i | b | big | small | u
+ | s | strike |font | basefont">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+ sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
+ %phrase; | %inline.forms;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | br | span | bdo | object | applet | img | map |
+ %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+ %i18n;
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ href %URI; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ language CDATA #IMPLIED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ align %ImgAlign; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ background %URI; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ text %Color; #IMPLIED
+ link %Color; #IMPLIED
+ vlink %Color; #IMPLIED
+ alink %Color; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ type %ULStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!-- Ordered list numbering style
+
+ 1 arabic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ type %OLStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ start %Number; #IMPLIED
+ >
+
+<!-- single column list (DEPRECATED) -->
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- multiple column list (DEPRECATED) -->
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ type %LIStyle; #IMPLIED
+ value %Number; #IMPLIED
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ align (left|center|right) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding
+ "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ width %Number; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+ %attrs;
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ accesskey %Character; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ clear (left|all|right|none) "none"
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;> <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;> <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;> <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY> <!-- base font size -->
+<!ATTLIST basefont
+ id ID #IMPLIED
+ size CDATA #REQUIRED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+ %coreattrs;
+ %i18n;
+ size CDATA #IMPLIED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Length; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name CDATA #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=':'
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Pixels; #IMPLIED
+ height %Pixels; #IMPLIED
+ >
+
diff --git a/test/valid/dtds/xhtml1.dcl b/test/valid/dtds/xhtml1.dcl
new file mode 100644
index 0000000..fed2103
--- /dev/null
+++ b/test/valid/dtds/xhtml1.dcl
@@ -0,0 +1,179 @@
+<!SGML -- SGML Declaration for valid XML documents --
+ "ISO 8879:1986 (WWW)"
+
+ CHARSET
+ BASESET
+ "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 9 UNUSED
+ 9 2 9
+ 11 2 UNUSED
+ 13 1 13
+ 14 18 UNUSED
+ 32 95 32
+ 127 1 UNUSED
+ 128 32 UNUSED
+ -- use this instead of the official declaration because SP only
+ supports 16-bit characters --
+ 160 65374 160
+ 65534 2 UNUSED
+ -- 55296 2048 UNUSED
+ 57344 8190 57344
+ 65534 2 UNUSED
+ 65536 1048576 65536 --
+ CAPACITY NONE
+
+ SCOPE DOCUMENT
+
+ SYNTAX
+ SHUNCHAR NONE
+ BASESET "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 1114112 0
+ FUNCTION
+ RE 13
+ RS 10
+ SPACE 32
+ TAB SEPCHAR 9
+
+ NAMING
+ LCNMSTRT ""
+ UCNMSTRT ""
+ NAMESTRT
+ 58 95 192-214 216-246 248-305 308-318 321-328
+ 330-382 384-451 461-496 500-501 506-535 592-680
+ 699-705 902 904-906 908 910-929 931-974 976-982
+ 986 988 990 992 994-1011 1025-1036 1038-1103
+ 1105-1116 1118-1153 1168-1220 1223-1224
+ 1227-1228 1232-1259 1262-1269 1272-1273
+ 1329-1366 1369 1377-1414 1488-1514 1520-1522
+ 1569-1594 1601-1610 1649-1719 1722-1726
+ 1728-1742 1744-1747 1749 1765-1766 2309-2361
+ 2365 2392-2401 2437-2444 2447-2448 2451-2472
+ 2474-2480 2482 2486-2489 2524-2525 2527-2529
+ 2544-2545 2565-2570 2575-2576 2579-2600
+ 2602-2608 2610-2611 2613-2614 2616-2617
+ 2649-2652 2654 2674-2676 2693-2699 2701
+ 2703-2705 2707-2728 2730-2736 2738-2739
+ 2741-2745 2749 2784 2821-2828 2831-2832
+ 2835-2856 2858-2864 2866-2867 2870-2873 2877
+ 2908-2909 2911-2913 2949-2954 2958-2960
+ 2962-2965 2969-2970 2972 2974-2975 2979-2980
+ 2984-2986 2990-2997 2999-3001 3077-3084
+ 3086-3088 3090-3112 3114-3123 3125-3129
+ 3168-3169 3205-3212 3214-3216 3218-3240
+ 3242-3251 3253-3257 3294 3296-3297 3333-3340
+ 3342-3344 3346-3368 3370-3385 3424-3425
+ 3585-3630 3632 3634-3635 3648-3653 3713-3714
+ 3716 3719-3720 3722 3725 3732-3735 3737-3743
+ 3745-3747 3749 3751 3754-3755 3757-3758 3760
+ 3762-3763 3773 3776-3780 3904-3911 3913-3945
+ 4256-4293 4304-4342 4352 4354-4355 4357-4359
+ 4361 4363-4364 4366-4370 4412 4414 4416 4428
+ 4430 4432 4436-4437 4441 4447-4449 4451 4453
+ 4455 4457 4461-4462 4466-4467 4469 4510 4520
+ 4523 4526-4527 4535-4536 4538 4540-4546 4587
+ 4592 4601 7680-7835 7840-7929 7936-7957
+ 7960-7965 7968-8005 8008-8013 8016-8023 8025
+ 8027 8029 8031-8061 8064-8116 8118-8124 8126
+ 8130-8132 8134-8140 8144-8147 8150-8155
+ 8160-8172 8178-8180 8182-8188 8486 8490-8491
+ 8494 8576-8578 12295 12321-12329 12353-12436
+ 12449-12538 12549-12588 19968-40869 44032-55203
+
+ LCNMCHAR ""
+ UCNMCHAR ""
+ NAMECHAR
+ 45-46 183 720-721 768-837 864-865 903 1155-1158
+ 1425-1441 1443-1465 1467-1469 1471 1473-1474
+ 1476 1600 1611-1618 1632-1641 1648 1750-1764
+ 1767-1768 1770-1773 1776-1785 2305-2307 2364
+ 2366-2381 2385-2388 2402-2403 2406-2415
+ 2433-2435 2492 2494-2500 2503-2504 2507-2509
+ 2519 2530-2531 2534-2543 2562 2620 2622-2626
+ 2631-2632 2635-2637 2662-2673 2689-2691 2748
+ 2750-2757 2759-2761 2763-2765 2790-2799
+ 2817-2819 2876 2878-2883 2887-2888 2891-2893
+ 2902-2903 2918-2927 2946-2947 3006-3010
+ 3014-3016 3018-3021 3031 3047-3055 3073-3075
+ 3134-3140 3142-3144 3146-3149 3157-3158
+ 3174-3183 3202-3203 3262-3268 3270-3272
+ 3274-3277 3285-3286 3302-3311 3330-3331
+ 3390-3395 3398-3400 3402-3405 3415 3430-3439
+ 3633 3636-3642 3654-3662 3664-3673 3761
+ 3764-3769 3771-3772 3782 3784-3789 3792-3801
+ 3864-3865 3872-3881 3893 3895 3897 3902-3903
+ 3953-3972 3974-3979 3984-3989 3991 3993-4013
+ 4017-4023 4025 8400-8412 8417 12293 12330-12335
+ 12337-12341 12441-12442 12445-12446 12540-12542
+
+ NAMECASE
+ GENERAL NO
+ ENTITY NO
+
+ DELIM
+ GENERAL SGMLREF
+ HCRO "&#38;#x" -- 38 is the number for ampersand --
+ NESTC "/"
+ NET ">"
+ PIC "?>"
+ SHORTREF NONE
+
+ NAMES
+ SGMLREF
+
+ QUANTITY NONE
+
+ ENTITIES
+ "amp" 38
+ "lt" 60
+ "gt" 62
+ "quot" 34
+ "apos" 39
+
+ FEATURES
+ MINIMIZE
+ DATATAG NO
+ OMITTAG NO
+ RANK NO
+ SHORTTAG
+ STARTTAG
+ EMPTY NO
+ UNCLOSED NO
+ NETENABL IMMEDNET
+ ENDTAG
+ EMPTY NO
+ UNCLOSED NO
+ ATTRIB
+ DEFAULT YES
+ OMITNAME NO
+ VALUE NO
+ EMPTYNRM YES
+ IMPLYDEF
+ ATTLIST NO
+ DOCTYPE NO
+ ELEMENT NO
+ ENTITY NO
+ NOTATION NO
+ LINK
+ SIMPLE NO
+ IMPLICIT NO
+ EXPLICIT NO
+ OTHER
+ CONCUR NO
+ SUBDOC NO
+ FORMAL NO
+ URN NO
+ KEEPRSRE YES
+ VALIDITY TYPE
+ ENTITIES
+ REF ANY
+ INTEGRAL YES
+ APPINFO NONE
+ SEEALSO "ISO 8879:1986//NOTATION
+ Extensible Markup Language (XML) 1.0//EN"
+>
diff --git a/test/valid/dtds/xmlspec.dtd b/test/valid/dtds/xmlspec.dtd
new file mode 100644
index 0000000..55cfba6
--- /dev/null
+++ b/test/valid/dtds/xmlspec.dtd
@@ -0,0 +1,1102 @@
+<!-- ............................................................... -->
+<!-- XML specification DTD ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+TYPICAL INVOCATION:
+# <!DOCTYPE spec PUBLIC
+# "-//W3C//DTD Specification::19980521//EN"
+# "http://www.w3.org/XML/1998/06/xmlspec-19980521.dtd">
+
+PURPOSE:
+ This DTD was developed for use with the XML family of W3C
+ specifications. It is an XML-compliant DTD based in part on
+ the TEI Lite and Sweb DTDs.
+
+DEPENDENCIES:
+ None.
+
+CHANGE HISTORY:
+ The list of changes is at the end of the DTD.
+
+ For all details, see the design report at:
+
+# <http://www.w3.org/XML/1998/06/xmlspec-report-19980521.htm>
+
+ The "typical invocation" FPI always gets updated to reflect the
+ date of the most recent changes.
+
+ Search this file for "#" in the first column to see change history
+ comments.
+
+MAINTAINER:
+ Eve Maler
+ ArborText Inc.
+ elm@arbortext.com
+ voice: +1 781 270 5750
+ fax: +1 781 273 3760
+-->
+
+<!-- ............................................................... -->
+<!-- Entities for characters and symbols ........................... -->
+
+<!--
+#1998-03-10: maler: Added &ldquo; and &rdquo;.
+# Used 8879:1986-compatible decimal character
+# references.
+# Merged charent.mod file back into main file.
+#1998-05-14: maler: Fixed ldquo and rdquo. Gave mdash a real number.
+-->
+
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+<!ENTITY nbsp "&#160;">
+<!--
+<!ENTITY mdash "&#x2014;">
+<!ENTITY ldquo "&#x201C;">
+<!ENTITY rdquo "&#x201D;">
+-->
+
+<!-- ............................................................... -->
+<!-- Entities for classes of standalone elements ................... -->
+
+<!--
+#1997-10-16: maler: Added table to %illus.class;.
+#1997-11-28: maler: Added htable to %illus.class;.
+#1997-12-29: maler: IGNOREd table.
+#1998-03-10: maler: Removed SGML Open-specific %illus.class;.
+# Added "local" entities for customization.
+#1998-05-14: maler: Added issue to %note.class;.
+# Removed %[local.]statusp.class;.
+#1998-05-21: maler: Added constraintnote to %note.class;.
+-->
+
+<!ENTITY % local.p.class "">
+<!ENTITY % p.class "p
+ %local.p.class;">
+
+<!ENTITY % local.list.class "">
+<!ENTITY % list.class "ulist|olist|slist|glist
+ %local.list.class;">
+
+<!ENTITY % local.speclist.class "">
+<!ENTITY % speclist.class "orglist|blist
+ %local.speclist.class;">
+
+<!ENTITY % local.note.class "">
+<!ENTITY % note.class "note|issue|wfcnote|vcnote
+ |constraintnote %local.note.class;">
+
+<!ENTITY % local.illus.class "">
+<!ENTITY % illus.class "eg|graphic|scrap|htable
+ %local.illus.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for classes of phrase-level elements ................. -->
+
+<!--
+#1997-12-29: maler: Added xspecref to %ref.class;.
+#1998-03-10: maler: Added %ednote.class;.
+# Added "local" entities for customization.
+-->
+
+<!ENTITY % local.annot.class "">
+<!ENTITY % annot.class "footnote
+ %local.annot.class;">
+
+<!ENTITY % local.termdef.class "">
+<!ENTITY % termdef.class "termdef|term
+ %local.termdef.class;">
+
+<!ENTITY % local.emph.class "">
+<!ENTITY % emph.class "emph|quote
+ %local.emph.class;">
+
+<!ENTITY % local.ref.class "">
+<!ENTITY % ref.class "bibref|specref|termref|titleref
+ |xspecref|xtermref
+ %local.ref.class;">
+
+<!ENTITY % local.loc.class "">
+<!ENTITY % loc.class "loc
+ %local.loc.class;">
+
+<!ENTITY % local.tech.class "">
+<!ENTITY % tech.class "kw|nt|xnt|code
+ %local.tech.class;">
+
+<!ENTITY % local.ednote.class "">
+<!ENTITY % ednote.class "ednote
+ %local.ednote.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for mixtures of standalone elements .................. -->
+
+<!--
+#1997-09-30: maler: Created %p.mix; to eliminate p from self.
+#1997-09-30: maler: Added %speclist.class; to %obj.mix; and %p.mix;.
+#1997-09-30: maler: Added %note.class; to %obj.mix; and %p.mix;.
+#1997-10-16: maler: Created %entry.mix;. Note that some elements
+# left out here are still allowed in termdef,
+# which entry can contain through %p.pcd.mix;.
+#1997-11-28: maler: Added %p.class; to %statusobj.mix;.
+#1998-03-10: maler: Added %ednote.class; to all mixtures, except
+# %p.mix; and %statusobj.mix;, because paragraphs
+# and status paragraphs will contain ednote
+# through %p.pcd.mix;.
+#1998-03-23: maler: Added %termdef.mix; (broken out from
+# %termdef.pcd.mix;).
+#1998-05-14: maler: Removed %statusobj.mix; and all mentions of
+# %statusp.mix;.
+-->
+
+<!ENTITY % div.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;">
+<!ENTITY % obj.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;">
+<!ENTITY % p.mix
+ "%list.class;|%speclist.class;|%note.class;|%illus.class;">
+<!ENTITY % entry.mix
+ "%list.class;|note|eg|graphic|%ednote.class;">
+<!ENTITY % hdr.mix
+ "%p.class;|%list.class;|%ednote.class;">
+<!ENTITY % termdef.mix
+ "%note.class;|%illus.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->
+
+<!-- Note that %termdef.pcd.mix contains %note.class;
+ and %illus.class;, considered standalone elements. -->
+
+<!--
+#1997-09-30: maler: Added scrap and %note.class; to %termdef.pcd.mix;.
+#1997-11-28: maler: Added %loc.class; to %p.pcd.mix;.
+#1998-03-10: maler: Added %ednote.class; to all mixtures.
+#1998-03-23: maler: Moved some %termdef.pcd.mix; stuff out to
+# %termdef.mix;.
+#1998-05-14: maler: Removed %statusp.pcd.mix;.
+#1998-05-21: maler: Added constraint element to %eg.pcd.mix;.
+-->
+
+<!ENTITY % p.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % head.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%tech.class;|%ednote.class;">
+<!ENTITY % label.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;|%tech.class;
+ |%ednote.class;">
+<!ENTITY % eg.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%ednote.class;|constraint">
+<!ENTITY % termdef.pcd.mix
+ "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
+ |%ednote.class;">
+<!ENTITY % bibl.pcd.mix
+ "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
+<!ENTITY % tech.pcd.mix
+ "#PCDATA|%ednote.class;">
+<!ENTITY % loc.pcd.mix
+ "#PCDATA|%loc.class;|%ednote.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for customizable content models ...................... -->
+
+<!--
+#1998-03-10: maler: Added customization entities.
+#1998-05-14: maler: Allowed prevlocs and latestloc in either order.
+-->
+
+<!ENTITY % spec.mdl
+ "header, front?, body, back?">
+
+<!ENTITY % header.mdl
+ "title, subtitle?, version, w3c-designation, w3c-doctype,
+ pubdate, notice*, publoc, ((prevlocs, latestloc?) |
+ (latestloc, prevlocs?))?, authlist, status, abstract,
+ pubstmt?, sourcedesc?, langusage, revisiondesc">
+
+<!ENTITY % pubdate.mdl
+ "day?, month, year">
+
+<!-- ............................................................... -->
+<!-- Entities for common attributes ................................ -->
+
+<!-- key attribute:
+ Optionally provides a sorting or indexing key, for cases when
+ the element content is inappropriate for this purpose. -->
+<!ENTITY % key.att
+ 'key CDATA #IMPLIED'>
+
+<!-- def attribute:
+ Points to the element where the relevant definition can be
+ found, using the IDREF mechanism. %def.att; is for optional
+ def attributes, and %def-req.att; is for required def
+ attributes. -->
+<!ENTITY % def.att
+ 'def IDREF #IMPLIED'>
+<!ENTITY % def-req.att
+ 'def IDREF #REQUIRED'>
+
+<!-- ref attribute:
+ Points to the element where more information can be found,
+ using the IDREF mechanism. %ref.att; is for optional
+ ref attributes, and %ref-req.att; is for required ref
+ attributes. -->
+<!ENTITY % ref.att
+ 'ref IDREF #IMPLIED'>
+<!ENTITY % ref-req.att
+ 'ref IDREF #REQUIRED'>
+
+<!--
+#1998-03-23: maler: Added show and actuate attributes to href.
+# Added semi-common xml:space attribute.
+-->
+
+<!-- HREF and source attributes:
+ Points to the element where more information or source data
+ can be found, using the URL (XLL simple link) mechanism.
+ For some purposes, is associated with additional XLL
+ attributes. %href.att; is for optional HREF attributes,
+ and %href-req.att; is for required HREF attributes.
+ %source-req.att; is for the source attribute, which
+ is always required. -->
+<!ENTITY % href.att
+ 'xml:link CDATA #FIXED "simple"
+ href CDATA #IMPLIED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!ENTITY % href-req.att
+ 'xml:link CDATA #FIXED "simple"
+ href CDATA #REQUIRED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!ENTITY % source-req.att
+ 'xml:link CDATA #FIXED "simple"
+ xml:attributes NMTOKENS #FIXED "href source"
+ source CDATA #REQUIRED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!-- xml:space attribute:
+ Indicates that the element contains white space
+ that the formatter or other application should retain,
+ as appropriate to its function. -->
+<!ENTITY % xmlspace.att
+ 'xml:space (default
+ |preserve) #FIXED "preserve"'>
+
+<!-- Common attributes:
+ Every element has an ID attribute (sometimes required,
+ but usually optional) for links, and a Role attribute
+ for extending the useful life of the DTD by allowing
+ authors to make subclasses for any element. %common.att;
+ is for common attributes where the ID is optional, and
+ %common-idreq.att; is for common attributes where the
+ ID is required. -->
+<!ENTITY % common.att
+ 'id ID #IMPLIED
+ role NMTOKEN #IMPLIED'>
+<!ENTITY % common-idreq.att
+ 'id ID #REQUIRED
+ role NMTOKEN #IMPLIED'>
+
+<!-- ............................................................... -->
+<!-- Common elements ............................................... -->
+
+<!-- head: Title on divisions, productions, and the like -->
+<!ELEMENT head (%head.pcd.mix;)*>
+<!ATTLIST head %common.att;>
+
+<!-- ............................................................... -->
+<!-- Major specification structure ................................. -->
+
+<!--
+#1998-03-10: maler: Made spec content model easily customizable.
+-->
+
+<!ELEMENT spec (%spec.mdl;)>
+<!ATTLIST spec %common.att;>
+
+<!ELEMENT front (div1+)>
+<!ATTLIST front %common.att;>
+
+<!ELEMENT body (div1+)>
+<!ATTLIST body %common.att;>
+
+<!--
+#1997-09-30: maler: Added inform-div1 to back content.
+-->
+
+<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
+<!ATTLIST back %common.att;>
+
+<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
+<!ATTLIST div1 %common.att;>
+
+<!--
+#1997-09-30: maler: Added inform-div1 declarations.
+-->
+
+<!-- inform-div1: Non-normative division in back matter -->
+<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
+<!ATTLIST inform-div1 %common.att;>
+
+<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
+<!ATTLIST div2 %common.att;>
+
+<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
+<!ATTLIST div3 %common.att;>
+
+<!ELEMENT div4 (head, (%div.mix;)*)>
+<!ATTLIST div4 %common.att;>
+
+<!-- Specification header .......... -->
+
+<!--
+#1998-03-10: maler: Made header content model easily customizable.
+-->
+
+<!ELEMENT header (%header.mdl;)>
+<!ATTLIST header %common.att;>
+
+<!-- Example of title: "Extensible Cheese Language (XCL)" -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %common.att;>
+
+<!-- Example of subtitle: "A Cheesy Specification" -->
+<!ELEMENT subtitle (#PCDATA)>
+<!ATTLIST subtitle %common.att;>
+
+<!-- Example of version: "Version 666.0" -->
+<!ELEMENT version (#PCDATA)>
+<!ATTLIST version %common.att;>
+
+<!-- Example of w3c-designation: "WD-xcl-19991231" -->
+<!ELEMENT w3c-designation (#PCDATA)>
+<!ATTLIST w3c-designation %common.att;>
+
+<!-- Example of w3c-doctype: "World Wide Web Consortium Working
+ Draft" -->
+<!ELEMENT w3c-doctype (#PCDATA)>
+<!ATTLIST w3c-doctype %common.att;>
+
+<!--
+#1998-03-10: maler: Made pubdate content model easily customizable.
+-->
+
+<!ELEMENT pubdate (%pubdate.mdl;)>
+<!ATTLIST pubdate %common.att;>
+
+<!ELEMENT day (#PCDATA)>
+<!ATTLIST day %common.att;>
+
+<!ELEMENT month (#PCDATA)>
+<!ATTLIST month %common.att;>
+
+<!ELEMENT year (#PCDATA)>
+<!ATTLIST year %common.att;>
+
+<!-- Example of notice: "This draft is for public comment..." -->
+<!ELEMENT notice (%hdr.mix;)+>
+<!ATTLIST notice %common.att;>
+
+<!ELEMENT publoc (loc+)>
+<!ATTLIST publoc %common.att;>
+
+<!ELEMENT prevlocs (loc+)>
+<!ATTLIST prevlocs %common.att;>
+
+<!ELEMENT latestloc (loc+)>
+<!ATTLIST latestloc %common.att;>
+
+<!-- loc (defined in "Phrase-level elements" below) -->
+
+<!ELEMENT authlist (author+)>
+<!ATTLIST authlist %common.att;>
+
+<!--
+#1997-09-30: maler: Made affiliation optional.
+#1998-03-10: maler: Made email optional.
+-->
+
+<!ELEMENT author (name, affiliation?, email?)>
+<!ATTLIST author %common.att;>
+
+<!ELEMENT name (#PCDATA)>
+<!ATTLIST name
+ %common.att;
+ %key.att;>
+
+<!ELEMENT affiliation (#PCDATA)>
+<!ATTLIST affiliation %common.att;>
+
+<!ELEMENT email (#PCDATA)>
+<!-- HREF attribute:
+ email functions as a hypertext reference through this
+ required attribute. Typically the reference would use
+ the mailto: scheme. -->
+<!ATTLIST email
+ %common.att;
+ %href-req.att;>
+
+<!--
+#1998-05-15: maler: Changed status content from %statusobj.mix;
+# to plain %obj.mix;. statusp is obsolete.
+-->
+
+<!ELEMENT status (%obj.mix;)+>
+<!ATTLIST status %common.att;>
+
+<!ELEMENT abstract (%hdr.mix;)*>
+<!ATTLIST abstract %common.att;>
+
+<!ELEMENT pubstmt (%hdr.mix;)+>
+<!ATTLIST pubstmt %common.att;>
+
+<!ELEMENT sourcedesc (%hdr.mix;)+>
+<!ATTLIST sourcedesc %common.att;>
+
+<!ELEMENT langusage (language+)>
+<!ATTLIST langusage %common.att;>
+
+<!ELEMENT language (#PCDATA)>
+<!ATTLIST language %common.att;>
+
+<!ELEMENT revisiondesc (%hdr.mix;)+>
+<!ATTLIST revisiondesc %common.att;>
+
+<!-- ............................................................... -->
+<!-- Standalone elements ........................................... -->
+
+<!-- Paragraphs .................... -->
+
+<!--
+#1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
+#1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix;
+# references.
+#1997-12-29: maler: Changed order of %statusobj.mix; and
+# %statusp.pcd.mix; references.
+#1998-05-14: maler: Removed statusp declarations.
+-->
+
+<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
+<!ATTLIST p %common.att;>
+
+<!-- Lists ......................... -->
+
+<!ELEMENT ulist (item+)>
+<!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+<!ATTLIST ulist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+<!ELEMENT olist (item+)>
+<!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+<!ATTLIST olist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+<!ELEMENT item (%obj.mix;)+>
+<!ATTLIST item %common.att;>
+
+<!ELEMENT slist (sitem+)>
+<!ATTLIST slist %common.att;>
+
+<!ELEMENT sitem (%p.pcd.mix;)*>
+<!ATTLIST sitem %common.att;>
+
+<!ELEMENT glist (gitem+)>
+<!ATTLIST glist %common.att;>
+
+<!ELEMENT gitem (label, def)>
+<!ATTLIST gitem %common.att;>
+
+<!ELEMENT label (%label.pcd.mix;)*>
+<!ATTLIST label %common.att;>
+
+<!ELEMENT def (%obj.mix;)*>
+<!ATTLIST def %common.att;>
+
+<!-- Special lists ................. -->
+
+<!ELEMENT blist (bibl+)>
+<!ATTLIST blist %common.att;>
+
+<!ELEMENT bibl (%bibl.pcd.mix;)*>
+<!-- HREF attribute:
+ bibl optionally functions as a hypertext reference to the
+ referred-to resource through this attribute. -->
+<!ATTLIST bibl
+ %common.att;
+ %href.att;
+ %key.att;>
+
+<!ELEMENT orglist (member+)>
+<!ATTLIST orglist %common.att;>
+
+<!--
+#1997-09-30: maler: Added optional affiliation.
+-->
+
+<!ELEMENT member (name, affiliation?, role?)>
+<!ATTLIST member %common.att;>
+
+<!-- name (defined in "Specification header" above) -->
+<!-- affiliation (defined in "Specification header" above) -->
+
+<!ELEMENT role (#PCDATA)>
+<!ATTLIST role %common.att;>
+
+<!-- Notes ......................... -->
+
+<!ELEMENT note (%obj.mix;)+>
+<!ATTLIST note %common.att;>
+
+<!--
+#1998-05-14: maler: Declared issue element.
+-->
+
+<!ELEMENT issue (%obj.mix;)+>
+<!ATTLIST issue %common-idreq.att;>
+
+<!ELEMENT wfcnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ wfcnote must have an ID so that it can be pointed to
+ from a wfc element in a production. -->
+<!ATTLIST wfcnote
+ %common-idreq.att;>
+
+<!ELEMENT vcnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ vcnote must have an ID so that it can be pointed to
+ from a vc element in a production. -->
+<!ATTLIST vcnote
+ %common-idreq.att;>
+
+<!--
+#1998-05-21: maler: Declared generic constraintnote element.
+-->
+
+<!ELEMENT constraintnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ cnote must have an ID so that it can be pointed to
+ from a constraint element in a production. -->
+<!-- type attribute:
+ cnote must have a type value keyword so that it can be
+ correctly characterized in the specification. -->
+<!ATTLIST constraintnote
+ %common-idreq.att;
+ type NMTOKEN #REQUIRED>
+
+<!-- Illustrations ................. -->
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!ELEMENT eg (%eg.pcd.mix;)*>
+<!ATTLIST eg
+ %common.att;
+ %xmlspace.att;>
+
+<!ELEMENT graphic EMPTY>
+<!-- source attribute:
+ The graphic data must reside at the location pointed to.
+ This is a hypertext reference, but for practical purposes,
+ for now it should just be a pathname. -->
+<!ATTLIST graphic
+ %common.att;
+ %source-req.att;
+ alt CDATA #IMPLIED>
+
+<!--
+#1997-11-28: maler: Added prodgroup to scrap and defined it.
+#1998-05-21: maler: Added constraint to prod.
+-->
+
+<!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
+<!-- lang attribute:
+ The scrap can link to a description of the language used,
+ found in a language element in the header. -->
+<!ATTLIST scrap
+ %common.att;
+ lang IDREF #IMPLIED>
+
+<!ELEMENT prodgroup (prod+)>
+<!-- pcw<n> attributes:
+ Presentational attributes to control the width
+ of the "pseudo-table" columns used to output
+ groups of productions. -->
+<!ATTLIST prodgroup
+ %common.att;
+ pcw1 CDATA #IMPLIED
+ pcw2 CDATA #IMPLIED
+ pcw3 CDATA #IMPLIED
+ pcw4 CDATA #IMPLIED
+ pcw5 CDATA #IMPLIED
+>
+
+<!ELEMENT prod (lhs, (rhs, (com|wfc|vc|constraint)*)+)>
+<!-- ID attribute:
+ The production must have an ID so that cross-references
+ (specref) and mentions of nonterminals (nt) can link to
+ it. -->
+<!ATTLIST prod
+ %common-idreq.att;>
+
+<!ELEMENT lhs (#PCDATA)>
+<!ATTLIST lhs %common.att;>
+
+<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
+<!ATTLIST rhs %common.att;>
+
+<!-- nt and xnt (defined in "Phrase-level elements" below) -->
+
+<!--
+#1997-11-28: maler: Added loc and bibref to com content.
+-->
+
+<!ELEMENT com (#PCDATA|loc|bibref)*>
+<!ATTLIST com %common.att;>
+
+<!-- wfc: Should generate the head of the wfcnote pointed to -->
+<!ELEMENT wfc EMPTY>
+<!-- def attribute:
+ Each well formedness tagline in a production must link to the
+ wfcnote that defines it. -->
+<!ATTLIST wfc
+ %def-req.att;
+ %common.att;>
+
+<!-- vc: Should generate the head of the vcnote pointed to -->
+<!ELEMENT vc EMPTY>
+<!-- def attribute:
+ Each validity tagline in a production must link to the vcnote
+ that defines it. -->
+<!ATTLIST vc
+ %def-req.att;
+ %common.att;>
+
+<!--
+#1998-05-21: maler: Declared generic constraint element.
+-->
+
+<!-- constraint: Should generate the head of the constraintnote
+ pointed to -->
+<!ELEMENT constraint EMPTY>
+<!-- def attribute:
+ Each constraint tagline in a production must link to the
+ constraint note that defines it. -->
+<!ATTLIST constraint
+ %def-req.att;
+ %common.att;>
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- bnf: Un-marked-up production -->
+<!ELEMENT bnf (%eg.pcd.mix;)*>
+<!ATTLIST bnf
+ %common.att;
+ %xmlspace.att;>
+
+<!--
+#1997-10-16: maler: Added table mechanism.
+#1997-11-28: maler: Added non-null system ID to entity declaration.
+# Added HTML table module.
+#1997-12-29: maler: IGNOREd SGML Open table model.
+#1998-03-10: maler: Removed SGML Open table model.
+# Merged html-tbl.mod file into main file.
+# Added %common.att; to all HTML table elements.
+#1998-05-14: maler: Replaced table model with full HTML 4.0 model.
+# Removed htable in favor of table.
+# Removed htbody in favor of tbody.
+-->
+
+<!ENTITY % cellhalign.att
+ 'align (left|center
+ |right|justify
+ |char) #IMPLIED
+ char CDATA #IMPLIED
+ charoff CDATA #IMPLIED'>
+
+<!ENTITY % cellvalign.att
+ 'valign (top|middle
+ |bottom
+ |baseline) #IMPLIED'>
+
+<!ENTITY % thtd.att
+ 'abbr CDATA #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope (row
+ |col
+ |rowgroup
+ |colgroup) #IMPLIED
+ rowspan NMTOKEN "1"
+ colspan NMTOKEN "1"'>
+
+<!ENTITY % width.att
+ 'width CDATA #IMPLIED'>
+
+<!ENTITY % span.att
+ 'span NMTOKEN "1"'>
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
+<!ATTLIST table
+ %common.att;
+ %width.att;
+ summary CDATA #IMPLIED
+ border CDATA #IMPLIED
+ frame (void|above
+ |below|hsides
+ |lhs|rhs
+ |vsides|box
+ |border) #IMPLIED
+ rules (none|groups
+ |rows|cols
+ |all) #IMPLIED
+ cellspacing CDATA #IMPLIED
+ cellpadding CDATA #IMPLIED>
+
+<!ELEMENT caption (%p.pcd.mix;)*>
+<!ATTLIST caption %common.att;>
+
+<!ELEMENT col EMPTY>
+<!ATTLIST col
+ %common.att;
+ %span.att;
+ %width.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT colgroup (col)*>
+<!ATTLIST colgroup
+ %common.att;
+ %span.att;
+ %width.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT thead (tr)+>
+<!ATTLIST thead
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT tfoot (tr)+>
+<!ATTLIST tfoot
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT tbody (tr)+>
+<!ATTLIST tbody
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT tr (th|td)+>
+<!ATTLIST tr
+ %common.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT th (%p.pcd.mix;|%p.mix;)*>
+<!ATTLIST th
+ %common.att;
+ %thtd.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!ELEMENT td (%p.pcd.mix;|%p.mix;)*>
+<!ATTLIST td
+ %common.att;
+ %thtd.att;
+ %cellhalign.att;
+ %cellvalign.att;>
+
+<!-- ............................................................... -->
+<!-- Phrase-level elements ......................................... -->
+
+<!-- bibref: Should generate, in square brackets, "key" on bibl -->
+<!ELEMENT bibref EMPTY>
+<!-- ref attribute:
+ A bibliography reference must link to the bibl element that
+ describes the resource. -->
+<!ATTLIST bibref
+ %common.att;
+ %ref-req.att;>
+
+<!ELEMENT code (%tech.pcd.mix;)*>
+<!ATTLIST code %common.att;>
+
+<!--
+#1998-03-10: maler: Declared ednote and related elements.
+-->
+
+<!ELEMENT ednote (name?, date?, edtext)>
+<!ATTLIST ednote %common.att;>
+
+<!ELEMENT date (#PCDATA)>
+<!ATTLIST date %common.att;>
+
+<!ELEMENT edtext (#PCDATA)>
+<!ATTLIST edtext %common.att;>
+
+<!ELEMENT emph (#PCDATA)>
+<!ATTLIST emph %common.att;>
+
+<!-- footnote: Both footnote content and call to footnote -->
+<!ELEMENT footnote (%obj.mix;)+>
+<!ATTLIST footnote %common.att;>
+
+<!ELEMENT kw (%tech.pcd.mix;)*>
+<!ATTLIST kw %common.att;>
+
+<!ELEMENT loc (#PCDATA)>
+<!-- HREF attribute:
+ The purpose of a loc element is to function as a hypertext
+ link to a resource. (Ideally, the content of loc will also
+ mention the URI of the resource, so that readers of the
+ printed version will be able to locate the resource.) -->
+<!ATTLIST loc
+ %common.att;
+ %href-req.att;>
+
+<!ELEMENT nt (#PCDATA)>
+<!-- def attribute:
+ The nonterminal must link to the production that defines
+ it. -->
+<!ATTLIST nt
+ %common.att;
+ %def-req.att;>
+
+<!--
+#1998-03-10: maler: Declared quote.
+-->
+
+<!-- quote: Scare quotes and other purely presentational quotes -->
+<!ELEMENT quote (%p.pcd.mix;)*>
+<!ATTLIST quote %common.att;>
+
+<!-- specref: Should generate italic "[n.n], Section Title" for
+ div, "n" for numbered item, "[n]" for production, or
+ "Issue n" for issue -->
+<!ELEMENT specref EMPTY>
+<!-- ref attribute:
+ The purpose of a specref element is to link to a div, item
+ in an olist, or production in the current spec. -->
+<!ATTLIST specref
+ %common.att;
+ %ref-req.att;>
+
+<!ELEMENT term (#PCDATA)>
+<!ATTLIST term %common.att;>
+
+<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
+<!-- ID attribute:
+ A term definition must have an ID so that it can be linked
+ to from termref elements. -->
+<!-- term attribute:
+ The canonical form of the term or phrase being defined must
+ appear in this attribute, even if the term or phrase also
+ appears in the element content in identical form (e.g., in
+ the term element). -->
+<!ATTLIST termdef
+ %common-idreq.att;
+ term CDATA #REQUIRED>
+
+<!ELEMENT termref (#PCDATA)>
+<!-- ref attribute:
+ A term reference must link to the termdef element that
+ defines the term. -->
+<!ATTLIST termref
+ %common.att;
+ %def-req.att;>
+
+<!ELEMENT titleref (#PCDATA)>
+<!-- HREF attribute:
+ A title reference can optionally function as a hypertext
+ link to the resource with this title. -->
+<!ATTLIST titleref
+ %common.att;
+ %href.att;>
+
+<!ELEMENT xnt (#PCDATA)>
+<!-- HREF attribute:
+ The nonterminal must hyperlink to a resource that serves
+ to define it (e.g., a production in a related XML
+ specification). -->
+<!ATTLIST xnt
+ %common.att;
+ %href-req.att;>
+
+<!--
+#1997-12-29: maler: Declared xspecref.
+-->
+
+<!ELEMENT xspecref (#PCDATA)>
+<!-- HREF attribute:
+ The spec reference must hyperlink to the resource to
+ cross-refer to (e.g., a section in a related XML
+ specification). -->
+<!ATTLIST xspecref
+ %common.att;
+ %href-req.att;>
+
+<!ELEMENT xtermref (#PCDATA)>
+<!-- HREF attribute:
+ The term reference must hyperlink to the resource that
+ serves to define the term (e.g., a term definition in
+ a related XML specification). -->
+<!ATTLIST xtermref
+ %common.att;
+ %href-req.att;>
+
+<!-- ............................................................... -->
+<!-- Unused elements for ADEPT ..................................... -->
+
+<!--
+#1997-09-30: maler: Added unusued elements.
+#1997-10-14: maler: Fixed div to move nested div to the mixture.
+#1998-05-14: maler: Added key-term, htable, and htbody.
+-->
+
+<!-- The following elements are purposely declared but never
+ referenced. Declaring them allows them to be pasted from
+ an HTML document or an earlier version of an XML spec document
+ into a document using this DTD in ADEPT. The ATD Context
+ Transformation mechanism will try to convert them to the
+ appropriate element for this DTD. While this conversion
+ will not work for all fragments, it does allow many cases
+ to work reasonably well. -->
+
+<!ELEMENT div
+ (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
+<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
+<!ELEMENT pre (%eg.pcd.mix;|em)*>
+<!ELEMENT ul (item|li)*>
+<!ELEMENT ol (item|li)*>
+<!ELEMENT li (#PCDATA|%obj.mix;)*>
+<!ELEMENT em (#PCDATA)>
+<!ELEMENT a (#PCDATA)>
+
+<!ELEMENT key-term (#PCDATA)>
+<!ELEMENT htable
+ (caption?, (col*|colgroup*), thead?, tfoot?, tbody+)>
+<!ELEMENT htbody (tr)+>
+<!ELEMENT statusp (%p.pcd.mix;|%p.mix;)*>
+
+<!-- ............................................................... -->
+<!-- Change history ................................................ -->
+
+<!--
+#1997-08-18: maler
+#- Did a major revision.
+#1997-09-10: maler
+#- Updated FPI.
+#- Removed namekey element and put key attribute on name element.
+#- Made statusp element and supporting entities.
+#- Added slist element with sitem+ content.
+#- Required head on scrap and added new bnf subelement.
+#- Added an xnt element and allowed it and nt in regular text and rhs.
+#- Removed the ntref element.
+#- Added back the com element to the content of rhs.
+#- Added a key attribute to bibl.
+#- Removed the ident element.
+#- Added a term element to be used inside termdef.
+#- Added an xtermref element parallel to termref.
+#- Beefed up DTD comments.
+#1997-09-12: maler
+#- Allowed term element in general text.
+#- Changed bibref to EMPTY.
+#- Added ref.class to termdef.pcd.mix.
+#1997-09-14: maler
+#- Changed main attribute of xtermref from def to href.
+#- Added termdef.class to label contents.
+#1997-09-30: maler
+#- Added character entity module and added new entities.
+#- Removed p from appearing directly in self; created %p.mix;.
+#- Added inform-div (non-normative division) element.
+#- Fixed xtermref comment to mention HREF, not ref.
+#- Extended orglist model to allow optional affiliation.
+#- Modified author to make affiliation optional.
+#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
+#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
+#- Added unused HTML elements.
+#- Put empty system ID next to public ID in entity declarations.
+#1997-10-14: maler
+#- Fixed "unused" div content model to move nested div to mixture.
+#1997-10-16: maler
+#- Added SGML Open Exchange tables.
+#1997-11-28: maler
+#- Added support for prodgroup and its attributes.
+#- Added support for HTML tables.
+#- Added loc and bibref to content of com.
+#- Added loc to general p content models.
+#- Allowed p as alternative to statusp in status.
+#- Added non-null system IDs to external parameter entity declarations.
+#- (Modified the SGML Open table module to make it XML-compliant.)
+#- (Modified the character entity module.)
+#1997-12-29: maler
+#- Moved #PCDATA occurrences to come before GIs in content models.
+#- Removed use of the SGML Open table module.
+#- Added xspecref element.
+#- Ensured that all FPIs contain 4-digit year.
+#- (Modified the character entity module.)
+#1998-03-10: maler
+#- Merged the character entity and table modules into the main file.
+#- Added ldquo and rdquo entities.
+#- Added common attributes to prodgroup.
+#- Made the email element in header optional.
+#- Removed reference to the SGML Open table model.
+#- Added ednote element.
+#- Added quote element.
+#- Updated XLink usage to reflect 3 March 1998 WD.
+#- Added "local" entities to the class entities for customization.
+#- Parameterized several content models to allow for customization.
+#1998-03-23: maler
+#- Cleaned up some comments and removed some others.
+#- Added xml:space semi-common attribute to eg and bnf elements.
+#- Added show and embed attributes on all the uses of href.
+#- Added %common.att; to all HTML table elements.
+#- Added a real URI to the "typical invocation" comment.
+#1998-05-14: maler
+#- Fixed mdash, ldquo, and rdquo character entities.
+#- Switched to the full HTML 4.0 table model.
+#- Removed htable/htbody elements and replaced them with table/tbody.
+#- Added issue element to %note.class; and declared it.
+#- Allowed prevlocs and latestloc in either order.
+#- Added key-term, htable, htbody, and statusp as unused elements.
+#- Removed real statusp element in favor of plain p.
+#1998-05-21: maler
+#- Declared generic constraint and constraintnote elements.
+#- Added constraintnote to %note.class;.
+#- Added constraint to %eg.pcd.mix; and prod content model.
+-->
+
+<!-- ............................................................... -->
+<!-- End of XML specification DTD .................................. -->
+<!-- ............................................................... --> \ No newline at end of file
diff --git a/test/valid/id1.xml b/test/valid/id1.xml
new file mode 100644
index 0000000..7390f5e
--- /dev/null
+++ b/test/valid/id1.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (src | dest)*>
+<!ELEMENT src EMPTY>
+<!ELEMENT dest EMPTY>
+<!ATTLIST src ref IDREF #IMPLIED>
+<!ATTLIST dest id ID #IMPLIED>
+]>
+<doc>
+ <src ref="foo"/>
+ <dest id="foo"/>
+ <src ref="foo"/>
+</doc>
+
diff --git a/test/valid/id2.xml b/test/valid/id2.xml
new file mode 100644
index 0000000..5b4a77a
--- /dev/null
+++ b/test/valid/id2.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (src | dest)*>
+<!ELEMENT src EMPTY>
+<!ELEMENT dest EMPTY>
+<!ATTLIST src ref IDREF #IMPLIED>
+<!ATTLIST dest id ID #IMPLIED>
+<!ENTITY dest "<dest id='foo'/>">
+]>
+<doc>
+ <src ref="foo"/>
+ &dest;
+ <src ref="foo"/>
+</doc>
+
diff --git a/test/valid/id3.xml b/test/valid/id3.xml
new file mode 100644
index 0000000..933d06d
--- /dev/null
+++ b/test/valid/id3.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (src | dest)*>
+<!ELEMENT src EMPTY>
+<!ELEMENT dest EMPTY>
+<!ATTLIST src ref IDREF #IMPLIED>
+<!ATTLIST dest id ID #IMPLIED>
+<!ENTITY dest SYSTEM "dtds/destfoo.ent">
+]>
+<doc>
+ <src ref="foo"/>
+ &dest;
+ <src ref="foo"/>
+</doc>
+
diff --git a/test/valid/index.xml b/test/valid/index.xml
new file mode 100644
index 0000000..2a0e671
--- /dev/null
+++ b/test/valid/index.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE NewsML PUBLIC "urn:newsml:iptc.org:20001006:NewsMLv1.0:1" "dtds/NewsMLv1.0.dtd" [
+ <!ENTITY % nitf SYSTEM "dtds/nitf-2-5.dtd">
+ %nitf;
+]>
+<NewsML>
+ <Catalog Href="http://www.afp.com/dtd/AFPCatalog.xml"/>
+ <NewsEnvelope>
+ <DateAndTime>20011022T154508Z</DateAndTime>
+ </NewsEnvelope>
+ <NewsItem>
+ <Identification>
+ <NewsIdentifier>
+ <ProviderId>afp.com</ProviderId>
+ <DateId>20011022</DateId>
+ <NewsItemId>mmd--deutsch--journal--spo</NewsItemId>
+ <RevisionId PreviousRevision="0" Update="N">1</RevisionId>
+ <PublicIdentifier>urn:NewsML:afp.com:20011022:mmd--deutsch--journal--spo:1</PublicIdentifier>
+ </NewsIdentifier>
+ <NameLabel>HINTERGRUND</NameLabel>
+ </Identification>
+ <NewsManagement>
+ <NewsItemType FormalName="News"/>
+ <FirstCreated>20011022T154508Z</FirstCreated>
+ <ThisRevisionCreated>20011022T154508Z</ThisRevisionCreated>
+ <Status FormalName="Usable"/>
+ </NewsManagement>
+ <NewsComponent>
+ <AdministrativeMetadata>
+ <Provider>
+ <Party FormalName="AFP"/>
+ </Provider>
+ </AdministrativeMetadata>
+ <DescriptiveMetadata>
+ <Language FormalName="de"/>
+ </DescriptiveMetadata>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Berliner SPD führt Gespräche mit FDP und Grünen</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022154450.sq80bp9h.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>INFOGRAFIK: Das Berliner Wahlergebnis</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022113032.remo00m7.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Schwierige Koalitionsverhandlungen in Berlin</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022124314.9hv2kozk.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Die Lieblingsfarben des Kanzlers sind Rot Gelb Grün</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022134541.cmmaoim7.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>INFOGRAFIK: Wen wählt Wowereit?</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022122545.hl3z2as6.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>CDU ist auch in kommunalen Rathäusern der Verlierer</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022120205.b8sykfvu.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Gutes Abschneiden der PDS hat verschiedene Gründe</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011022134159.agvne048.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Ans Regieren hat sich Klaus Wowereit gewöhnt</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021161031.1oq7qyub.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Steffel brachte CDU nicht auf Erfolgskurs</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021165007.kt9qog9m.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Sibyll Klotz: Vollblutpolitikerin mit "Berliner Schnauze"</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021184658.lctevest.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Mit Gysi muss weiter gerechnet werden</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021180441.6tpvgx0y.xml"/>
+ </NewsComponent>
+ <NewsComponent>
+ <NewsLines>
+ <HeadLine>Rexrodt - das Stehaufmännchen der Berliner FDP</HeadLine>
+ </NewsLines>
+ <NewsItemRef NewsItem="011021165558.gujrz59m.xml"/>
+ </NewsComponent>
+ </NewsComponent>
+ </NewsItem>
+</NewsML>
diff --git a/test/valid/mixed_ns.xml b/test/valid/mixed_ns.xml
new file mode 100644
index 0000000..22d8ed8
--- /dev/null
+++ b/test/valid/mixed_ns.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE a [
+<!ELEMENT a (#PCDATA|b|s:b)*>
+<!ATTLIST a xmlns:s CDATA #IMPLIED>
+<!ELEMENT b EMPTY>
+<!ATTLIST b xmlns:s CDATA #IMPLIED>
+<!ELEMENT s:b EMPTY>
+<!ATTLIST s:b xmlns:s CDATA #IMPLIED>
+]>
+<a xmlns:s="http://some.test.ns/a">
+ Some text.
+ <b/>
+ Some text.
+ <s:b/>
+ Some text.
+</a>
diff --git a/test/valid/notes.xml b/test/valid/notes.xml
new file mode 100644
index 0000000..157d178
--- /dev/null
+++ b/test/valid/notes.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE notes SYSTEM "dtds/notes.dtd">
+<pfx:notes
+xmlns:pfx="http://namespace/uri/here"
+><note/><pfx:note/></pfx:notes>
diff --git a/test/valid/ns.xml b/test/valid/ns.xml
new file mode 100644
index 0000000..117c30f
--- /dev/null
+++ b/test/valid/ns.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE a:outer [
+
+<!ELEMENT a:outer EMPTY>
+<!ATTLIST a:outer xmlns:a CDATA #FIXED 'urn:namespace'>
+<!ATTLIST a:outer xmlns:b CDATA #FIXED 'urn:namespaceb'>
+]>
+
+<a:outer />
diff --git a/test/valid/ns2.xml b/test/valid/ns2.xml
new file mode 100644
index 0000000..bfab69a
--- /dev/null
+++ b/test/valid/ns2.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE a:outer [
+
+<!ELEMENT a:outer (a:inner)>
+<!ATTLIST a:outer xmlns:a CDATA #FIXED 'urn:namespace'>
+
+<!ELEMENT a:inner EMPTY>
+<!ATTLIST a:inner xmlns:a CDATA #FIXED 'urn:namespace'>
+<!ATTLIST a:inner attr CDATA #FIXED 'yes'>
+]>
+
+<a:outer xmlns:a="urn:namespace">
+ <a:inner />
+</a:outer>
diff --git a/test/valid/objednavka.xml b/test/valid/objednavka.xml
new file mode 100644
index 0000000..c785b1a
--- /dev/null
+++ b/test/valid/objednavka.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE objednavka SYSTEM "dtds/objednavka.dtd">
+<objednavka>
+ <AdDoruÄeni>
+ <Jméno>Jan Novák</Jméno>
+ <Ulice>Bělehradská 147</Ulice>
+ <Město>Praha 2</Město>
+ <PSČ>12000</PSČ>
+ </AdDoruÄeni>
+ <AdÚÄtovací>
+ <Jméno>Petra Nováková</Jméno>
+ <Ulice>Anglická 15</Ulice>
+ <Město>Praha 2</Město>
+ <PSČ>12000</PSČ>
+ </AdÚÄtovací>
+ <ZpůsobDopravy>DPD</ZpůsobDopravy>
+ <ZpůsobPlatby>dobírka</ZpůsobPlatby>
+ <DatumPřijetí>2004-11-14</DatumPřijetí>
+ <DatumDoruÄení>2004-11-19</DatumDoruÄení>
+ <ObsahObjednávky>
+ <Zboží>
+ <Kód>2N7-516</Kód>
+ <Název>SekaÄka na trávu</Název>
+ <PoÄet jednotka="ks">1</PoÄet>
+ <Cena>2999</Cena>
+ <Popis>http://example.org/sekacka.html</Popis>
+ </Zboží>
+ <Zboží>
+ <Kód>Q3Y-116</Kód>
+ <Název>Travní semeno</Název>
+ <PoÄet jednotka="kg">2.5</PoÄet>
+ <Cena>127.50</Cena>
+ </Zboží>
+ </ObsahObjednávky>
+ <Komentář>
+ <Řádka>O dodávku mám zájem pouze v případě, že se jedná o trávu v odrůdě konopí.</Řádka>
+ <Řádka>Dále jsem se chtěl zeptat, zda je doprava zdarma.</Řádka>
+ </Komentář>
+</objednavka>
diff --git a/test/valid/rss.xml b/test/valid/rss.xml
new file mode 100644
index 0000000..5d6102d
--- /dev/null
+++ b/test/valid/rss.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE rss [
+<!--
+
+ Rich Site Summary (RSS) 0.91 official DTD, proposed.
+
+ RSS is an XML vocabulary for describing
+ metadata about websites, and enabling the display of
+ "channels" on the "My Netscape" website.
+
+ RSS Info can be found at http://my.netscape.com/publish/
+ XML Info can be found at http://www.w3.org/XML/
+
+ copyright Netscape Communications, 1999
+
+ Dan Libby - danda@netscape.com
+
+ Based on RSS DTD originally created by
+ Lars Marius Garshol - larsga@ifi.uio.no.
+
+-->
+<!ELEMENT rss (channel)>
+<!ATTLIST rss version CDATA #REQUIRED>
+<!-- must be "0.91"> --><!ELEMENT channel (title | description | link
+| language | item+ | rating? | image? | textinput? | copyright? |
+pubDate? | lastBuildDate? | docs? | managingEditor? | webMaster? |
+skipHours? | skipDays?)*>
+<!ELEMENT title (#PCDATA)>
+<!ELEMENT description (#PCDATA)>
+<!ELEMENT link (#PCDATA)>
+<!ELEMENT image (title | url | link | width? | height? | description?)*>
+<!ELEMENT url (#PCDATA)>
+<!ELEMENT item (title | link | description)*>
+<!ELEMENT textinput (title | description | name | link)*>
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT rating (#PCDATA)>
+<!ELEMENT language (#PCDATA)>
+<!ELEMENT width (#PCDATA)>
+<!ELEMENT height (#PCDATA)>
+<!ELEMENT copyright (#PCDATA)>
+<!ELEMENT pubDate (#PCDATA)>
+<!ELEMENT lastBuildDate (#PCDATA)>
+<!ELEMENT docs (#PCDATA)>
+<!ELEMENT managingEditor (#PCDATA)>
+<!ELEMENT webMaster (#PCDATA)>
+<!ELEMENT hour (#PCDATA)>
+<!ELEMENT day (#PCDATA)>
+<!ELEMENT skipHours (hour)+>
+<!ELEMENT skipDays (day)+>
+<!--
+ Copied from HTML 3.2 DTD, with modifications (removed CDATA)
+ http://www.w3.org/TR/REC-html32.html#dtd
+ =============== BEGIN ===================
+-->
+<!--
+ Character Entities for ISO Latin-1
+
+ (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+ This has been extended for use with HTML to cover the full
+ set of codes in the range 160-255 decimal.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOlat1 PUBLIC
+ "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML">
+ %ISOlat1;
+-->
+<!ENTITY nbsp "&#160;"> <!-- no-break space -->
+<!ENTITY iexcl "&#161;">
+<!-- inverted exclamation mark --><!ENTITY cent "&#162;">
+<!-- cent sign --><!ENTITY pound "&#163;">
+<!-- pound sterling sign --><!ENTITY curren "&#164;">
+<!-- general currency sign --><!ENTITY yen "&#165;">
+<!-- yen sign --><!ENTITY brvbar "&#166;">
+<!-- broken (vertical) bar --><!ENTITY sect "&#167;">
+<!-- section sign --><!ENTITY uml "&#168;">
+<!-- umlaut (dieresis) --><!ENTITY copy "&#169;">
+<!-- copyright sign --><!ENTITY ordf "&#170;">
+<!-- ordinal indicator, feminine --><!ENTITY laquo "&#171;">
+<!-- angle quotation mark, left --><!ENTITY not "&#172;">
+<!-- not sign --><!ENTITY shy "&#173;">
+<!-- soft hyphen --><!ENTITY reg "&#174;">
+<!-- registered sign --><!ENTITY macr "&#175;">
+<!-- macron --><!ENTITY deg "&#176;">
+<!-- degree sign --><!ENTITY plusmn "&#177;">
+<!-- plus-or-minus sign --><!ENTITY sup2 "&#178;">
+<!-- superscript two --><!ENTITY sup3 "&#179;">
+<!-- superscript three --><!ENTITY acute "&#180;">
+<!-- acute accent --><!ENTITY micro "&#181;">
+<!-- micro sign --><!ENTITY para "&#182;">
+<!-- pilcrow (paragraph sign) --><!ENTITY middot "&#183;">
+<!-- middle dot --><!ENTITY cedil "&#184;">
+<!-- cedilla --><!ENTITY sup1 "&#185;">
+<!-- superscript one --><!ENTITY ordm "&#186;">
+<!-- ordinal indicator, masculine --><!ENTITY raquo "&#187;">
+<!-- angle quotation mark, right --><!ENTITY frac14 "&#188;">
+<!-- fraction one-quarter --><!ENTITY frac12 "&#189;">
+<!-- fraction one-half --><!ENTITY frac34 "&#190;">
+<!-- fraction three-quarters --><!ENTITY iquest "&#191;">
+<!-- inverted question mark --><!ENTITY Agrave "&#192;">
+<!-- capital A, grave accent --><!ENTITY Aacute "&#193;">
+<!-- capital A, acute accent --><!ENTITY Acirc "&#194;">
+<!-- capital A, circumflex accent --><!ENTITY Atilde "&#195;">
+<!-- capital A, tilde --><!ENTITY Auml "&#196;">
+<!-- capital A, dieresis or umlaut mark --><!ENTITY Aring "&#197;">
+<!-- capital A, ring --><!ENTITY AElig "&#198;">
+<!-- capital AE diphthong (ligature) --><!ENTITY Ccedil "&#199;">
+<!-- capital C, cedilla --><!ENTITY Egrave "&#200;">
+<!-- capital E, grave accent --><!ENTITY Eacute "&#201;">
+<!-- capital E, acute accent --><!ENTITY Ecirc "&#202;">
+<!-- capital E, circumflex accent --><!ENTITY Euml "&#203;">
+<!-- capital E, dieresis or umlaut mark --><!ENTITY Igrave "&#204;">
+<!-- capital I, grave accent --><!ENTITY Iacute "&#205;">
+<!-- capital I, acute accent --><!ENTITY Icirc "&#206;">
+<!-- capital I, circumflex accent --><!ENTITY Iuml "&#207;">
+<!-- capital I, dieresis or umlaut mark --><!ENTITY ETH "&#208;">
+<!-- capital Eth, Icelandic --><!ENTITY Ntilde "&#209;">
+<!-- capital N, tilde --><!ENTITY Ograve "&#210;">
+<!-- capital O, grave accent --><!ENTITY Oacute "&#211;">
+<!-- capital O, acute accent --><!ENTITY Ocirc "&#212;">
+<!-- capital O, circumflex accent --><!ENTITY Otilde "&#213;">
+<!-- capital O, tilde --><!ENTITY Ouml "&#214;">
+<!-- capital O, dieresis or umlaut mark --><!ENTITY times "&#215;">
+<!-- multiply sign --><!ENTITY Oslash "&#216;">
+<!-- capital O, slash --><!ENTITY Ugrave "&#217;">
+<!-- capital U, grave accent --><!ENTITY Uacute "&#218;">
+<!-- capital U, acute accent --><!ENTITY Ucirc "&#219;">
+<!-- capital U, circumflex accent --><!ENTITY Uuml "&#220;">
+<!-- capital U, dieresis or umlaut mark --><!ENTITY Yacute "&#221;">
+<!-- capital Y, acute accent --><!ENTITY THORN "&#222;">
+<!-- capital THORN, Icelandic --><!ENTITY szlig "&#223;">
+<!-- small sharp s, German (sz ligature) --><!ENTITY agrave "&#224;">
+<!-- small a, grave accent --><!ENTITY aacute "&#225;">
+<!-- small a, acute accent --><!ENTITY acirc "&#226;">
+<!-- small a, circumflex accent --><!ENTITY atilde "&#227;">
+<!-- small a, tilde --><!ENTITY auml "&#228;">
+<!-- small a, dieresis or umlaut mark --><!ENTITY aring "&#229;">
+<!-- small a, ring --><!ENTITY aelig "&#230;">
+<!-- small ae diphthong (ligature) --><!ENTITY ccedil "&#231;">
+<!-- small c, cedilla --><!ENTITY egrave "&#232;">
+<!-- small e, grave accent --><!ENTITY eacute "&#233;">
+<!-- small e, acute accent --><!ENTITY ecirc "&#234;">
+<!-- small e, circumflex accent --><!ENTITY euml "&#235;">
+<!-- small e, dieresis or umlaut mark --><!ENTITY igrave "&#236;">
+<!-- small i, grave accent --><!ENTITY iacute "&#237;">
+<!-- small i, acute accent --><!ENTITY icirc "&#238;">
+<!-- small i, circumflex accent --><!ENTITY iuml "&#239;">
+<!-- small i, dieresis or umlaut mark --><!ENTITY eth "&#240;">
+<!-- small eth, Icelandic --><!ENTITY ntilde "&#241;">
+<!-- small n, tilde --><!ENTITY ograve "&#242;">
+<!-- small o, grave accent --><!ENTITY oacute "&#243;">
+<!-- small o, acute accent --><!ENTITY ocirc "&#244;">
+<!-- small o, circumflex accent --><!ENTITY otilde "&#245;">
+<!-- small o, tilde --><!ENTITY ouml "&#246;">
+<!-- small o, dieresis or umlaut mark --><!ENTITY divide "&#247;">
+<!-- divide sign --><!ENTITY oslash "&#248;">
+<!-- small o, slash --><!ENTITY ugrave "&#249;">
+<!-- small u, grave accent --><!ENTITY uacute "&#250;">
+<!-- small u, acute accent --><!ENTITY ucirc "&#251;">
+<!-- small u, circumflex accent --><!ENTITY uuml "&#252;">
+<!-- small u, dieresis or umlaut mark --><!ENTITY yacute "&#253;">
+<!-- small y, acute accent --><!ENTITY thorn "&#254;">
+<!-- small thorn, Icelandic --><!ENTITY yuml "&#255;">
+<!-- small y, dieresis or umlaut mark --><!--
+ Copied from HTML 3.2 DTD, with modifications (removed CDATA)
+ http://www.w3.org/TR/REC-html32.html#dtd
+ ================= END ===================
+-->
+]>
+<rss>
+<channel>
+<image/>
+<title>PP</title>
+</channel>
+</rss>
diff --git a/test/valid/t10.xml b/test/valid/t10.xml
new file mode 100644
index 0000000..de066f9
--- /dev/null
+++ b/test/valid/t10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root [
+<!ELEMENT root (cont1, (cont1, cont2?)+)>
+ <!ELEMENT cont1 EMPTY>
+ <!ELEMENT cont2 EMPTY>
+]>
+<root>
+ <cont1/>
+ <cont1/>
+ <cont1/>
+ <cont1/>
+</root>
diff --git a/test/valid/t11.xml b/test/valid/t11.xml
new file mode 100644
index 0000000..cc3fb31
--- /dev/null
+++ b/test/valid/t11.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE root SYSTEM "dtds/external.ent">
+<root>&peInCdata;</root>
diff --git a/test/valid/t4.dtd b/test/valid/t4.dtd
new file mode 100644
index 0000000..27292bc
--- /dev/null
+++ b/test/valid/t4.dtd
@@ -0,0 +1,4 @@
+<!ENTITY % percent "&#x25;">
+<!ENTITY %percent; def "ghi">
+<!ENTITY abc "%def;">
+<!ELEMENT root (#PCDATA)>
diff --git a/test/valid/t4.xml b/test/valid/t4.xml
new file mode 100644
index 0000000..baeb9d0
--- /dev/null
+++ b/test/valid/t4.xml
@@ -0,0 +1,3 @@
+<?xml version='1.0'?>
+<!DOCTYPE root SYSTEM 't4.dtd'>
+<root>&abc;</root>
diff --git a/test/valid/t4a.dtd b/test/valid/t4a.dtd
new file mode 100644
index 0000000..b7cdc7c
--- /dev/null
+++ b/test/valid/t4a.dtd
@@ -0,0 +1,5 @@
+<!ENTITY % percent "&#x25;">
+<!ENTITY%percent;def "ghi">
+<!ENTITY abc "%def;">
+<!ELEMENT root (#PCDATA)>
+
diff --git a/test/valid/t4a.xml b/test/valid/t4a.xml
new file mode 100644
index 0000000..27fa603
--- /dev/null
+++ b/test/valid/t4a.xml
@@ -0,0 +1,3 @@
+<?xml version='1.0'?>
+<!DOCTYPE root SYSTEM 't4a.dtd'>
+<root>&abc;</root>
diff --git a/test/valid/t6.dtd b/test/valid/t6.dtd
new file mode 100644
index 0000000..7497c28
--- /dev/null
+++ b/test/valid/t6.dtd
@@ -0,0 +1,5 @@
+<!ENTITY % xdef "def">
+<!ENTITY % %xdef; "ghi">
+<!ENTITY abc "%def;">
+<!ELEMENT root (#PCDATA)>
+
diff --git a/test/valid/t6.xml b/test/valid/t6.xml
new file mode 100644
index 0000000..b9f62ca
--- /dev/null
+++ b/test/valid/t6.xml
@@ -0,0 +1,3 @@
+<?xml version='1.0'?>
+<!DOCTYPE root SYSTEM 't6.dtd'>
+<root>&abc;</root>
diff --git a/test/valid/t8.xml b/test/valid/t8.xml
new file mode 100644
index 0000000..c7c2b0a
--- /dev/null
+++ b/test/valid/t8.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE root [
+<!ENTITY % deftest '&lt;!ELEMENT test (#PCDATA) >' >
+<!ENTITY % defmiddle '&lt;!ELEMENT middle (test) >' >
+<!ENTITY % defroot '&lt;!ELEMENT root (middle) >' >
+%defroot; %defmiddle; %deftest;
+]>
+<root><middle><test>sample</test></middle></root>
diff --git a/test/valid/t8a.xml b/test/valid/t8a.xml
new file mode 100644
index 0000000..13470eb
--- /dev/null
+++ b/test/valid/t8a.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE root [
+<!ENTITY % deftest '&lt;!ELEMENT test (#PCDATA) >' >
+<!ENTITY % defmiddle '&lt;!ELEMENT middle (test) >' >
+<!ENTITY % defroot '&lt;!ELEMENT root (middle) >' >
+%defroot;%defmiddle;%deftest;
+]>
+<root><middle><test>sample</test></middle></root>
diff --git a/test/valid/t9.xml b/test/valid/t9.xml
new file mode 100644
index 0000000..645d35a
--- /dev/null
+++ b/test/valid/t9.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE root [
+<!ENTITY % deftest '&#60;!ELEMENT test (#PCDATA) >' >
+<!ENTITY % defmiddle '&#60;!ELEMENT middle (test) >' >
+<!ENTITY % defroot '&#60;!ELEMENT root (middle) >' >
+%defroot; %defmiddle; %deftest;
+]>
+<root><middle><test>sample</test></middle></root>
diff --git a/test/valid/t9a.xml b/test/valid/t9a.xml
new file mode 100644
index 0000000..23d3c06
--- /dev/null
+++ b/test/valid/t9a.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE root [
+<!ENTITY % deftest '&#60;!ELEMENT test (#PCDATA) >' >
+<!ENTITY % defmiddle '&#60;!ELEMENT middle (test) >' >
+<!ENTITY % defroot '&#60;!ELEMENT root (middle) >' >
+%defroot;%defmiddle;%deftest;
+]>
+<root><middle><test>sample</test></middle></root>
diff --git a/test/valid/xhtml1.xhtml b/test/valid/xhtml1.xhtml
new file mode 100644
index 0000000..24d68f4
--- /dev/null
+++ b/test/valid/xhtml1.xhtml
@@ -0,0 +1,1505 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "dtds/xhtml1-strict.dtd">
+<?xml-stylesheet href="W3C-PR.css" type="text/css"?>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>XHTML 1.0: The Extensible HyperText Markup
+Language</title>
+<link rel="stylesheet"
+href="W3C-PR.css" type="text/css" />
+<style type="text/css">
+span.term { font-style: italic; color: rgb(0, 0, 192) }
+code {
+ color: green;
+ font-family: monospace;
+ font-weight: bold;
+}
+
+code.greenmono {
+ color: green;
+ font-family: monospace;
+ font-weight: bold;
+}
+.good {
+ border: solid green;
+ border-width: 2px;
+ color: green;
+ font-weight: bold;
+ margin-right: 5%;
+ margin-left: 0;
+}
+.bad {
+ border: solid red;
+ border-width: 2px;
+ margin-left: 0;
+ margin-right: 5%;
+ color: rgb(192, 101, 101);
+}
+
+img {
+ color: white;
+ border: none;
+}
+
+div.navbar { text-align: center; }
+div.contents {
+ background-color: rgb(204,204,255);
+ padding: 0.5em;
+ border: none;
+ margin-right: 5%;
+}
+.tocline { list-style: none; }
+table.exceptions { background-color: rgb(255,255,153); }
+</style>
+</head>
+<body>
+<div class="navbar">
+ <a href="#toc">table of contents</a>
+ <hr />
+</div>
+<div class="head"><p><a href="http://www.w3.org/"><img class="head"
+src="w3c_home.gif" alt="W3C" /></a></p>
+
+<h1 class="head"><a name="title" id="title">XHTML</a><sup>&#8482;</sup> 1.0:
+The Extensible HyperText Markup Language</h1>
+
+<h2>A Reformulation of HTML 4.0 in XML 1.0</h2>
+
+<h3>W3C Proposed Recommendation 10 December 1999</h3>
+
+<dl>
+<dt>This version:</dt>
+
+<dd><a href=
+"http://www.w3.org/TR/1999/PR-xhtml1-19991210">
+http://www.w3.org/TR/1999/PR-xhtml1-19991210</a> <br />
+(<a href="xhtml1.ps">Postscript version</a>,
+<a href="xhtml1.pdf">PDF version</a>,
+<a href="xhtml1.zip">ZIP archive</a>, or
+<a href="xhtml1.tgz">Gzip'd TAR archive</a>)
+</dd>
+
+<dt>Latest version:</dt>
+
+<dd><a href="http://www.w3.org/TR/xhtml1">
+http://www.w3.org/TR/xhtml1</a></dd>
+
+<dt>Previous versions:</dt>
+
+<dd><a href=
+"http://www.w3.org/TR/1999/WD-xhtml1-19991124">
+http://www.w3.org/TR/1999/WD-xhtml1-19991124</a></dd>
+<dd><a href=
+"http://www.w3.org/TR/1999/PR-xhtml1-19990824">
+http://www.w3.org/TR/1999/PR-xhtml1-19990824</a></dd>
+
+<dt>Authors:</dt>
+
+<dd>See <a href="#acks">acknowledgements</a>.</dd>
+</dl>
+
+<p class="copyright"><a href=
+"http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">
+Copyright</a> &copy; 1999 <a href="http://www.w3.org/">W3C</a><sup>&reg;</sup>
+(<a href="http://www.lcs.mit.edu/">MIT</a>, <a href=
+"http://www.inria.fr/">INRIA</a>, <a href=
+"http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <abbr
+title="World Wide Web Consortium">W3C</abbr> <a
+href=
+"http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">
+liability</a>, <a href=
+"http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">
+trademark</a>, <a href=
+"http://www.w3.org/Consortium/Legal/copyright-documents">document
+use</a> and <a href=
+"http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+<hr />
+</div>
+
+<h2 class="notoc">Abstract</h2>
+
+<p>This specification defines <abbr title="Extensible Hypertext Markup
+Language">XHTML</abbr> 1.0, a reformulation of HTML
+4.0 as an XML 1.0 application, and three <abbr title="Document Type
+Definition">DTDs</abbr> corresponding to
+the ones defined by HTML 4.0. The semantics of the elements and
+their attributes are defined in the W3C Recommendation for HTML
+4.0. These semantics provide the foundation for future
+extensibility of XHTML. Compatibility with existing HTML user
+agents is possible by following a small set of guidelines.</p>
+
+<h2>Status of this document</h2>
+
+<p><em>This section describes the status of this document at the time
+of its publication. Other documents may supersede this document. The
+latest status of this document series is maintained at the W3C.</em></p>
+
+<p>This specification is a Proposed Recommendation of the HTML Working Group. It is
+a revision of the Proposed Recommendation dated <a
+href= "http://www.w3.org/TR/1999/PR-xhtml1-19990824/">24 August
+1999</a> incorporating changes as a result of comments from the Proposed
+Recommendation review, and
+comments and further deliberations of the W3C HTML Working Group. A
+<a href="xhtml1-diff-19991210.html">diff-marked version</a> from the previous
+proposed recommendation is available for comparison purposes.</p>
+
+<p>On 10 December 1999, this document enters a
+<a href="http://www.w3.org/Consortium/Process/#RecsPR">
+Proposed Recommendation</a> review period. From that date until 8 January
+2000,
+W3C Advisory Committee representatives are encouraged
+to review this specification and return comments in their completed
+ballots to w3c-html-review@w3.org. Please send any comments of a
+confidential nature in separate email to w3t-html@w3.org, which is
+visible to the Team only.</p>
+
+<p>No sooner than 14 days after the end of the review period, the
+Director will announce the document's disposition: it may become a W3C
+Recommendation (possibly with minor changes), it may revert to Working
+Draft status, or it may be dropped as a W3C work item.</p>
+
+<p>Publication as a Proposed Recommendation does not imply endorsement
+by the W3C membership. This is still a draft document and may be
+updated, replaced or obsoleted by other documents at any time. It is
+inappropriate to cite W3C Proposed Recommendation as other than "work
+in progress."</p>
+
+<p>This document has been produced as part of the <a href=
+"http://www.w3.org/MarkUp/">W3C HTML Activity</a>. The goals of
+the <a href="http://www.w3.org/MarkUp/Group/">HTML Working
+Group</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members
+only</a>)</i> are discussed in the <a href=
+"http://www.w3.org/MarkUp/Group/HTMLcharter">HTML Working Group
+charter</a> <i>(<a href="http://cgi.w3.org/MemberAccess/">members
+only</a>)</i>.</p>
+
+<p>A list of current W3C Recommendations and other technical documents
+can be found at <a
+href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p>
+
+<p>Public discussion on <abbr title="HyperText Markup
+Language">HTML</abbr> features takes place on the mailing list <a
+href="mailto:www-html@w3.org"> www-html@w3.org</a> (<a href=
+"http://lists.w3.org/Archives/Public/www-html/">archive</a>). The W3C
+staff contact for work on HTML is <a href= "mailto:dsr@w3.org">Dave
+Raggett</a>.</p>
+
+<p>Please report errors in this document to <a
+href="mailto:www-html-editor@w3.org">www-html-editor@w3.org</a>.</p>
+
+<p>The list of known errors in this specification is available at <a
+href="http://www.w3.org/1999/12/PR-xhtml1-19991210-errata">http://www.w3.org/1999/12/PR-xhtml1-19991210-errata</a>.</p>
+
+<h2 class="notoc"><a id="toc" name="toc">Contents</a></h2>
+
+<div class="contents">
+<ul class="toc">
+<li class="tocline">1. <a href="#xhtml">What is XHTML?</a>
+
+<ul class="toc">
+<li class="tocline">1.1 <a href="#html4">What is HTML 4.0?</a></li>
+
+<li class="tocline">1.2 <a href="#xml">What is XML?</a></li>
+
+<li class="tocline">1.3 <a href="#why">Why the need for XHTML?</a></li>
+</ul>
+</li>
+
+<li class="tocline">2. <a href="#defs">Definitions</a>
+
+<ul class="toc">
+<li class="tocline">2.1 <a href="#terms">Terminology</a></li>
+
+<li class="tocline">2.2 <a href="#general">General Terms</a></li>
+</ul>
+</li>
+
+<li class="tocline">3. <a href="#normative">Normative Definition of XHTML 1.0</a>
+
+
+<ul class="toc">
+<li class="tocline">3.1 <a href="#docconf">Document Conformance</a></li>
+
+<li class="tocline">3.2 <a href="#uaconf">User Agent Conformance</a></li>
+</ul>
+</li>
+
+<li class="tocline">4. <a href="#diffs">Differences with HTML 4.0</a>
+
+</li>
+
+<li class="tocline">5. <a href="#issues">Compatibility Issues</a>
+
+<ul class="toc">
+<li class="tocline">5.1 <a href="#media">Internet Media Types</a></li>
+</ul>
+</li>
+
+<li class="tocline">6. <a href="#future">Future Directions</a>
+
+<ul class="toc">
+<li class="tocline">6.1 <a href="#mods">Modularizing HTML</a></li>
+
+<li class="tocline">6.2 <a href="#extensions">Subsets and Extensibility</a></li>
+
+<li class="tocline">6.3 <a href="#profiles">Document Profiles</a></li>
+</ul>
+</li>
+
+<li class="tocline"><a href="#dtds">Appendix A. DTDs</a></li>
+
+<li class="tocline"><a href="#prohibitions">Appendix B. Element
+Prohibitions</a></li>
+
+<li class="tocline"><a href="#guidelines">Appendix C. HTML Compatibility Guidelines</a></li>
+
+<li class="tocline"><a href="#acks">Appendix D. Acknowledgements</a></li>
+
+<li class="tocline"><a href="#refs">Appendix E. References</a></li>
+</ul>
+</div>
+
+<!--OddPage-->
+<h1><a name="xhtml" id="xhtml">1. What is XHTML?</a></h1>
+
+<p>XHTML is a family of current and future document types and modules that
+reproduce, subset, and extend HTML 4.0 <a href="#ref-html4">[HTML]</a>. XHTML family document types are <abbr title="Extensible Markup Language">XML</abbr> based,
+and ultimately are designed to work in conjunction with XML-based user agents.
+The details of this family and its evolution are
+discussed in more detail in the section on <a href="#future">Future
+Directions</a>. </p>
+
+<p>XHTML 1.0 (this specification) is the first document type in the XHTML
+family. It is a reformulation of the three HTML 4.0 document types as
+applications of XML 1.0 <a href="#ref-xml"> [XML]</a>. It is intended
+to be used as a language for content that is both XML-conforming and, if some
+simple <a href="#guidelines">guidelines</a> are followed,
+operates in HTML 4.0 conforming user agents. Developers who migrate
+their content to XHTML 1.0 will realize the following benefits:</p>
+
+<ul>
+<li>XHTML documents are XML conforming. As such, they are readily viewed,
+edited, and validated with standard XML tools.</li>
+<li>XHTML documents can be written to
+to operate as well or better than they did before in existing
+HTML 4.0-conforming user agents as well as in new, XHTML 1.0 conforming user
+agents.</li>
+<li>XHTML documents can utilize applications (e.g. scripts and applets) that rely
+upon either the HTML Document Object Model or the XML Document Object Model <a
+href="#ref-dom">[DOM]</a>.</li>
+<li>As the XHTML family evolves, documents conforming to XHTML 1.0 will be more
+likely to interoperate within and among various XHTML environments.</li>
+</ul>
+
+<p>The XHTML family is the next step in the evolution of the Internet. By
+migrating to XHTML today, content developers can enter the XML world with all
+of its attendant benefits, while still remaining confident in their
+content's backward and future compatibility.</p>
+
+<h2><a name="html4" id="html4">1.1 What is HTML 4.0?</a></h2>
+
+<p>HTML 4.0 <a href="#ref-html4">[HTML]</a> is an <abbr title="Standard
+Generalized Markup Language">SGML</abbr> (Standard
+Generalized Markup Language) application conforming to
+International Standard <abbr title="Organization for International
+Standardization">ISO</abbr> 8879, and is widely regarded as the
+standard publishing language of the World Wide Web.</p>
+
+<p>SGML is a language for describing markup languages,
+particularly those used in electronic document exchange, document
+management, and document publishing. HTML is an example of a
+language defined in SGML.</p>
+
+<p>SGML has been around since the middle 1980's and has remained
+quite stable. Much of this stability stems from the fact that the
+language is both feature-rich and flexible. This flexibility,
+however, comes at a price, and that price is a level of
+complexity that has inhibited its adoption in a diversity of
+environments, including the World Wide Web.</p>
+
+<p>HTML, as originally conceived, was to be a language for the
+exchange of scientific and other technical documents, suitable
+for use by non-document specialists. HTML addressed the problem
+of SGML complexity by specifying a small set of structural and
+semantic tags suitable for authoring relatively simple documents.
+In addition to simplifying the document structure, HTML added
+support for hypertext. Multimedia capabilities were added
+later.</p>
+
+<p>In a remarkably short space of time, HTML became wildly
+popular and rapidly outgrew its original purpose. Since HTML's
+inception, there has been rapid invention of new elements for use
+within HTML (as a standard) and for adapting HTML to vertical,
+highly specialized, markets. This plethora of new elements has
+led to compatibility problems for documents across different
+platforms.</p>
+
+<p>As the heterogeneity of both software and platforms rapidly
+proliferate, it is clear that the suitability of 'classic' HTML
+4.0 for use on these platforms is somewhat limited.</p>
+
+<h2><a name="xml" id="xml">1.2 What is XML?</a></h2>
+
+<p>XML<sup>&#8482;</sup> is the shorthand for Extensible Markup
+Language, and is an acronym of Extensible Markup Language <a
+href="#ref-xml">[XML]</a>.</p>
+
+<p>XML was conceived as a means of regaining the power and
+flexibility of SGML without most of its complexity. Although a
+restricted form of SGML, XML nonetheless preserves most of SGML's
+power and richness, and yet still retains all of SGML's commonly
+used features.</p>
+
+<p>While retaining these beneficial features, XML removes many of
+the more complex features of SGML that make the authoring and
+design of suitable software both difficult and costly.</p>
+
+<h2><a name="why" id="why">1.3 Why the need for XHTML?</a></h2>
+
+<p>The benefits of migrating to XHTML 1.0 are described above. Some of the
+benefits of migrating to XHTML in general are:</p>
+
+<ul>
+<li>Document developers and user agent designers are constantly
+discovering new ways to express their ideas through new markup. In XML, it is
+relatively easy to introduce new elements or additional element
+attributes. The XHTML family is designed to accommodate these extensions
+through XHTML modules and techniques for developing new XHTML-conforming
+modules (described in the forthcoming XHTML Modularization specification).
+These modules will permit the combination of existing and
+new feature sets when developing content and when designing new user
+agents.</li>
+
+<li>Alternate ways of accessing the Internet are constantly being
+introduced. Some estimates indicate that by the year 2002, 75% of
+Internet document viewing will be carried out on these alternate
+platforms. The XHTML family is designed with general user agent
+interoperability in mind. Through a new user agent and document profiling
+mechanism, servers, proxies, and user agents will be able to perform
+best effort content transformation. Ultimately, it will be possible to
+develop XHTML-conforming content that is usable by any XHTML-conforming
+user agent.</li>
+
+</ul>
+<!--OddPage-->
+<h1><a name="defs" id="defs">2. Definitions</a></h1>
+
+<h2><a name="terms" id="terms">2.1 Terminology</a></h2>
+
+<p>The following terms are used in this specification. These
+terms extend the definitions in <a href="#ref-rfc2119">
+[RFC2119]</a> in ways based upon similar definitions in ISO/<abbr
+title="International Electro-technical Commission">IEC</abbr>
+9945-1:1990 <a href="#ref-posix">[POSIX.1]</a>:</p>
+
+<dl>
+<dt>Implementation-defined</dt>
+
+<dd>A value or behavior is implementation-defined when it is left
+to the implementation to define [and document] the corresponding
+requirements for correct document construction.</dd>
+
+<dt>May</dt>
+
+<dd>With respect to implementations, the word "may" is to be
+interpreted as an optional feature that is not required in this
+specification but can be provided. With respect to <a href=
+"#docconf">Document Conformance</a>, the word "may" means that
+the optional feature must not be used. The term "optional" has
+the same definition as "may".</dd>
+
+<dt>Must</dt>
+
+<dd>In this specification, the word "must" is to be interpreted
+as a mandatory requirement on the implementation or on Strictly
+Conforming XHTML Documents, depending upon the context. The term
+"shall" has the same definition as "must".</dd>
+
+<dt>Reserved</dt>
+
+<dd>A value or behavior is unspecified, but it is not allowed to
+be used by Conforming Documents nor to be supported by a
+Conforming User Agents.</dd>
+
+<dt>Should</dt>
+
+<dd>With respect to implementations, the word "should" is to be
+interpreted as an implementation recommendation, but not a
+requirement. With respect to documents, the word "should" is to
+be interpreted as recommended programming practice for documents
+and a requirement for Strictly Conforming XHTML Documents.</dd>
+
+<dt>Supported</dt>
+
+<dd>Certain facilities in this specification are optional. If a
+facility is supported, it behaves as specified by this
+specification.</dd>
+
+<dt>Unspecified</dt>
+
+<dd>When a value or behavior is unspecified, the specification
+defines no portability requirements for a facility on an
+implementation even when faced with a document that uses the
+facility. A document that requires specific behavior in such an
+instance, rather than tolerating any behavior when using that
+facility, is not a Strictly Conforming XHTML Document.</dd>
+</dl>
+
+<h2><a name="general" id="general">2.2 General Terms</a></h2>
+
+<dl>
+<dt>Attribute</dt>
+
+<dd>An attribute is a parameter to an element declared in the
+DTD. An attribute's type and value range, including a possible
+default value, are defined in the DTD.</dd>
+
+<dt>DTD</dt>
+
+<dd>A DTD, or document type definition, is a collection of XML
+declarations that, as a collection, defines the legal structure,
+<span class="term">elements</span>, and <span class="term">
+attributes</span> that are available for use in a document that
+complies to the DTD.</dd>
+
+<dt>Document</dt>
+
+<dd>A document is a stream of data that, after being combined
+with any other streams it references, is structured such that it
+holds information contained within <span class="term">
+elements</span> that are organized as defined in the associated
+<span class="term">DTD</span>. See <a href="#docconf">Document
+Conformance</a> for more information.</dd>
+
+<dt>Element</dt>
+
+<dd>An element is a document structuring unit declared in the
+<span class="term">DTD</span>. The element's content model is
+defined in the <span class="term">DTD</span>, and additional
+semantics may be defined in the prose description of the
+element.</dd>
+
+<dt><a name="facilities" id="facilities">Facilities</a></dt>
+
+<dd>Functionality includes <span class="term">elements</span>,
+<span class="term">attributes</span>, and the semantics
+associated with those <span class="term">elements</span> and
+<span class="term">attributes</span>. An implementation
+supporting that functionality is said to provide the necessary
+facilities.</dd>
+
+<dt>Implementation</dt>
+
+<dd>An implementation is a system that provides collection of
+<span class="term">facilities</span> and services that supports
+this specification. See <a href="#uaconf">User Agent
+Conformance</a> for more information.</dd>
+
+<dt>Parsing</dt>
+
+<dd>Parsing is the act whereby a <span class="term">
+document</span> is scanned, and the information contained within
+the <span class="term">document</span> is filtered into the
+context of the <span class="term">elements</span> in which the
+information is structured.</dd>
+
+<dt>Rendering</dt>
+
+<dd>Rendering is the act whereby the information in a <span
+class="term">document</span> is presented. This presentation is
+done in the form most appropriate to the environment (e.g.
+aurally, visually, in print).</dd>
+
+<dt>User Agent</dt>
+
+<dd>A user agent is an <span class="term">implementation</span>
+that retrieves and processes XHTML documents. See <a href=
+"#uaconf">User Agent Conformance</a> for more information.</dd>
+
+<dt>Validation</dt>
+
+<dd>Validation is a process whereby <span class="term">
+documents</span> are verified against the associated <span class=
+"term">DTD</span>, ensuring that the structure, use of <span
+class="term">elements</span>, and use of <span class="term">
+attributes</span> are consistent with the definitions in the
+<span class="term">DTD</span>.</dd>
+
+<dt><a name="wellformed" id="wellformed">Well-formed</a></dt>
+
+<dd>A <span class="term">document</span> is well-formed when it
+is structured according to the rules defined in <a href=
+"http://www.w3.org/TR/REC-xml#sec-well-formed">Section 2.1</a> of
+the XML 1.0 Recommendation <a href="#ref-xml">[XML]</a>.
+Basically, this definition states that elements, delimited by
+their start and end tags, are nested properly within one
+another.</dd>
+</dl>
+
+<!--OddPage-->
+<h1><a name="normative" id="normative">3. Normative Definition of
+XHTML 1.0</a></h1>
+
+<h2><a name="docconf" id="docconf">3.1 Document
+Conformance</a></h2>
+
+<p>This version of XHTML provides a definition of strictly
+conforming XHTML documents, which are restricted to tags and
+attributes from the XHTML namespace. See <a href=
+"#well-formed">Section 3.1.2</a> for information on using XHTML
+with other namespaces, for instance, to include metadata
+expressed in <abbr title="Resource Description Format">RDF</abbr> within XHTML documents.</p>
+
+<h3><a name="strict" id="strict">3.1.1 Strictly Conforming
+Documents</a></h3>
+
+<p>A Strictly Conforming XHTML Document is a document that
+requires only the facilities described as mandatory in this
+specification. Such a document must meet all of the following
+criteria:</p>
+
+<ol>
+<li>
+<p>It must validate against one of the three DTDs found in <a
+href="#dtds">Appendix&#160;A</a>.</p>
+</li>
+
+<li>
+<p>The root element of the document must be <code>
+&lt;html&gt;</code>.</p>
+</li>
+
+<li>
+<p>The root element of the document must designate the XHTML
+namespace using the <code>xmlns</code> attribute <a href=
+"#ref-xmlns">[XMLNAMES]</a>. The namespace for XHTML is
+defined to be
+<code>http://www.w3.org/1999/xhtml</code>.</p>
+</li>
+
+<li>
+<p>There must be a DOCTYPE declaration in the document prior to
+the root element. The public identifier included in
+the DOCTYPE declaration must reference one of the three DTDs
+found in <a href="#dtds">Appendix&#160;A</a> using the respective
+Formal Public Identifier. The system identifier may be changed to reflect
+local system conventions.</p>
+
+<pre>
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd&gt;
+
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-transitional.dtd&gt;
+
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-frameset.dtd&gt;
+</pre>
+</li>
+</ol>
+
+<p>Here is an example of a minimal XHTML document.</p>
+
+<div class="good">
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd"&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
+ &lt;head&gt;
+ &lt;title&gt;Virtual Library&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;p&gt;Moved to &lt;a href="http://vlib.org/"&gt;vlib.org&lt;/a&gt;.&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>Note that in this example, the XML declaration is included. An XML
+declaration like the one above is
+not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is required
+when the character encoding of the document is other than the default UTF-8 or
+UTF-16.</p>
+
+<h3><a name="well-formed" id="well-formed">3.1.2 Using XHTML with
+other namespaces</a></h3>
+
+<p>The XHTML namespace may be used with other XML namespaces
+as per <a href="#ref-xmlns">[XMLNAMES]</a>, although such
+documents are not strictly conforming XHTML 1.0 documents as
+defined above. Future work by W3C will address ways to specify
+conformance for documents involving multiple namespaces.</p>
+
+<p>The following example shows the way in which XHTML 1.0 could
+be used in conjunction with the MathML Recommendation:</p>
+
+<div class="good">
+<pre>
+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
+ &lt;head&gt;
+ &lt;title&gt;A Math Example&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;p&gt;The following is MathML markup:&lt;/p&gt;
+ &lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;
+ &lt;apply&gt; &lt;log/&gt;
+ &lt;logbase&gt;
+ &lt;cn&gt; 3 &lt;/cn&gt;
+ &lt;/logbase&gt;
+ &lt;ci&gt; x &lt;/ci&gt;
+ &lt;/apply&gt;
+ &lt;/math&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<p>The following example shows the way in which XHTML 1.0 markup
+could be incorporated into another XML namespace:</p>
+
+<div class="good">
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!-- initially, the default namespace is "books" --&gt;
+&lt;book xmlns='urn:loc.gov:books'
+ xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"&gt;
+ &lt;title&gt;Cheaper by the Dozen&lt;/title&gt;
+ &lt;isbn:number&gt;1568491379&lt;/isbn:number&gt;
+ &lt;notes&gt;
+ &lt;!-- make HTML the default namespace for a hypertext commentary --&gt;
+ &lt;p xmlns='http://www.w3.org/1999/xhtml'&gt;
+ This is also available &lt;a href="http://www.w3.org/"&gt;online&lt;/a&gt;.
+ &lt;/p&gt;
+ &lt;/notes&gt;
+&lt;/book&gt;
+</pre>
+</div>
+
+<h2><a name="uaconf" id="uaconf">3.2 User Agent
+Conformance</a></h2>
+
+<p>A conforming user agent must meet all of the following
+criteria:</p>
+
+<ol>
+<li>In order to be consistent with the XML 1.0 Recommendation <a
+href="#ref-xml">[XML]</a>, the user agent must parse and evaluate
+an XHTML document for well-formedness. If the user agent claims
+to be a validating user agent, it must also validate documents
+against their referenced DTDs according to <a href="#ref-xml">
+[XML]</a>.</li>
+
+<li>When the user agent claims to support <a href="#facilities">
+facilities</a> defined within this specification or required by
+this specification through normative reference, it must do so in
+ways consistent with the facilities' definition.</li>
+
+<li>When a user agent processes an XHTML document as generic XML,
+it shall only recognize attributes of type
+<code>ID</code> (e.g. the <code>id</code> attribute on most XHTML elements)
+as fragment identifiers.</li>
+
+<li>If a user agent encounters an element it does not recognize,
+it must render the element's content.</li>
+
+<li>If a user agent encounters an attribute it does not
+recognize, it must ignore the entire attribute specification
+(i.e., the attribute and its value).</li>
+
+<li>If a user agent encounters an attribute value it doesn't
+recognize, it must use the default attribute value.</li>
+
+<li>If it encounters an entity reference (other than one
+of the predefined entities) for which the User Agent has
+processed no declaration (which could happen if the declaration
+is in the external subset which the User Agent hasn't read), the entity
+reference should be rendered as the characters (starting
+with the ampersand and ending with the semi-colon) that
+make up the entity reference.</li>
+
+<li>When rendering content, User Agents that encounter
+characters or character entity references that are recognized but not renderable should display the document in such a way that it is obvious to the user that normal rendering has not taken place.</li>
+
+<li>
+The following characters are defined in [XML] as whitespace characters:
+
+<ul>
+<li>Space (&amp;#x0020;)</li>
+<li>Tab (&amp;#x0009;)</li>
+<li>Carriage return (&amp;#x000D;)</li>
+<li>Line feed (&amp;#x000A;)</li>
+</ul>
+
+<p>
+The XML processor normalizes different system's line end codes into one
+single line-feed character, that is passed up to the application. The XHTML
+user agent in addition, must treat the following characters as whitespace:
+</p>
+
+<ul>
+<li>Form feed (&amp;#x000C;)</li>
+<li>Zero-width space (&amp;#x200B;)</li>
+</ul>
+
+<p>
+In elements where the 'xml:space' attribute is set to 'preserve', the user
+agent must leave all whitespace characters intact (with the exception of
+leading and trailing whitespace characters, which should be removed).
+Otherwise, whitespace
+is handled according to the following rules:
+</p>
+
+<ul>
+<li>
+All whitespace surrounding block elements should be removed.
+</li>
+<li>
+Comments are removed entirely and do not affect whitespace handling. One
+whitespace character on either side of a comment is treated as two white
+space characters.
+</li>
+<li>
+Leading and trailing whitespace inside a block element must be removed.
+</li>
+<li>Line feed characters within a block element must be converted into a
+space (except when the 'xml:space' attribute is set to 'preserve').
+</li>
+<li>
+A sequence of white space characters must be reduced to a single space
+character (except when the 'xml:space' attribute is set to 'preserve').
+</li>
+<li>
+With regard to rendition,
+the User Agent should render the content in a
+manner appropriate to the language in which the content is written.
+In languages whose primary script is Latinate, the ASCII space
+character is typically used to encode both grammatical word boundaries and
+typographic whitespace; in languages whose script is related to Nagari
+(e.g., Sanskrit, Thai, etc.), grammatical boundaries may be encoded using
+the ZW 'space' character, but will not typically be represented by
+typographic whitespace in rendered output; languages using Arabiform scripts
+may encode typographic whitespace using a space character, but may also use
+the ZW space character to delimit 'internal' grammatical boundaries (what
+look like words in Arabic to an English eye frequently encode several words,
+e.g. 'kitAbuhum' = 'kitAbu-hum' = 'book them' == their book); and languages
+in the Chinese script tradition typically neither encode such delimiters nor
+use typographic whitespace in this way.
+</li>
+</ul>
+
+<p>Whitespace in attribute values is processed according to <a
+href="#ref-xml">[XML]</a>.</p>
+</li>
+</ol>
+
+<!--OddPage-->
+<h1><a name="diffs" id="diffs">4. Differences with HTML
+4.0</a></h1>
+
+<p>Due to the fact that XHTML is an XML application, certain
+practices that were perfectly legal in SGML-based HTML 4.0 <a
+href="#ref-html4">[HTML]</a> must be changed.</p>
+
+<h2><a name="h-4.1" id="h-4.1">4.1 Documents must be
+well-formed</a></h2>
+
+<p><a href="#wellformed">Well-formedness</a> is a new concept
+introduced by <a href="#ref-xml">[XML]</a>. Essentially this
+means that all elements must either have closing tags or be
+written in a special form (as described below), and that all the
+elements must nest.</p>
+
+<p>Although overlapping is illegal in SGML, it was widely
+tolerated in existing browsers.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: nested elements.</em></strong></p>
+
+<p>&lt;p&gt;here is an emphasized
+&lt;em&gt;paragraph&lt;/em&gt;.&lt;/p&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: overlapping elements</em></strong></p>
+
+<p>&lt;p&gt;here is an emphasized
+&lt;em&gt;paragraph.&lt;/p&gt;&lt;/em&gt;</p>
+</div>
+
+<h2><a name="h-4.2" id="h-4.2">4.2 Element and attribute
+names must be in lower case</a></h2>
+
+<p>XHTML documents must use lower case for all HTML element and
+attribute names. This difference is necessary because XML is
+case-sensitive e.g. &lt;li&gt; and &lt;LI&gt; are different
+tags.</p>
+
+<h2><a name="h-4.3" id="h-4.3">4.3 For non-empty elements,
+end tags are required</a></h2>
+
+<p>In SGML-based HTML 4.0 certain elements were permitted to omit
+the end tag; with the elements that followed implying closure.
+This omission is not permitted in XML-based XHTML. All elements
+other than those declared in the DTD as <code>EMPTY</code> must
+have an end tag.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: terminated elements</em></strong></p>
+
+<p>&lt;p&gt;here is a paragraph.&lt;/p&gt;&lt;p&gt;here is
+another paragraph.&lt;/p&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: unterminated elements</em></strong></p>
+
+<p>&lt;p&gt;here is a paragraph.&lt;p&gt;here is another
+paragraph.</p>
+</div>
+
+<h2><a name="h-4.4" id="h-4.4">4.4 Attribute values must
+always be quoted</a></h2>
+
+<p>All attribute values must be quoted, even those which appear
+to be numeric.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: quoted attribute values</em></strong></p>
+
+<p>&lt;table rows="3"&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: unquoted attribute values</em></strong></p>
+
+<p>&lt;table rows=3&gt;</p>
+</div>
+
+<h2><a name="h-4.5" id="h-4.5">4.5 Attribute
+Minimization</a></h2>
+
+<p>XML does not support attribute minimization. Attribute-value
+pairs must be written in full. Attribute names such as <code>
+compact</code> and <code>checked</code> cannot occur in elements
+without their value being specified.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: unminimized attributes</em></strong></p>
+
+<p>&lt;dl compact="compact"&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: minimized attributes</em></strong></p>
+
+<p>&lt;dl compact&gt;</p>
+</div>
+
+<h2><a name="h-4.6" id="h-4.6">4.6 Empty Elements</a></h2>
+
+<p>Empty elements must either have an end tag or the start tag must end with <code>/&gt;</code>. For instance,
+<code>&lt;br/&gt;</code> or <code>&lt;hr&gt;&lt;/hr&gt;</code>. See <a
+href="#guidelines">HTML Compatibility Guidelines</a> for information on ways to
+ensure this is backward compatible with HTML 4.0 user agents.</p>
+
+<div class="good">
+<p><strong><em>CORRECT: terminated empty tags</em></strong></p>
+
+<p>&lt;br/&gt;&lt;hr/&gt;</p>
+</div>
+
+<div class="bad">
+<p><strong><em>INCORRECT: unterminated empty tags</em></strong></p>
+
+<p>&lt;br&gt;&lt;hr&gt;</p>
+</div>
+
+<h2><a name="h-4.7" id="h-4.7">4.7 Whitespace handling in
+attribute values</a></h2>
+
+<p>In attribute values, user agents will strip leading and
+trailing whitespace from attribute values and map sequences
+of one or more whitespace characters (including line breaks) to
+a single inter-word space (an ASCII space character for western
+scripts). See <a href="http://www.w3.org/TR/REC-xml#AVNormalize">
+Section 3.3.3</a> of <a href="#ref-xml">[XML]</a>.</p>
+
+<h2><a name="h-4.8" id="h-4.8">4.8 Script and Style
+elements</a></h2>
+
+<p>In XHTML, the script and style elements are declared as having
+<code>#PCDATA</code> content. As a result, <code>&lt;</code> and
+<code>&amp;</code> will be treated as the start of markup, and
+entities such as <code>&amp;lt;</code> and <code>&amp;amp;</code>
+will be recognized as entity references by the XML processor to
+<code>&lt;</code> and <code>&amp;</code> respectively. Wrapping
+the content of the script or style element within a <code>
+CDATA</code> marked section avoids the expansion of these
+entities.</p>
+
+<div class="good">
+<pre>
+&lt;script&gt;
+ &lt;![CDATA[
+ ... unescaped script content ...
+ ]]&gt;
+ &lt;/script&gt;
+</pre>
+</div>
+
+<p><code>CDATA</code> sections are recognized by the XML
+processor and appear as nodes in the Document Object Model, see
+<a href=
+"http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597">
+Section 1.3</a> of the DOM Level 1 Recommendation <a href=
+"#ref-dom">[DOM]</a>.</p>
+
+<p>An alternative is to use external script and style
+documents.</p>
+
+<h2><a name="h-4.9" id="h-4.9">4.9 SGML exclusions</a></h2>
+
+<p>SGML gives the writer of a DTD the ability to exclude specific
+elements from being contained within an element. Such
+prohibitions (called "exclusions") are not possible in XML.</p>
+
+<p>For example, the HTML 4.0 Strict DTD forbids the nesting of an
+'<code>a</code>' element within another '<code>a</code>' element
+to any descendant depth. It is not possible to spell out such
+prohibitions in XML. Even though these prohibitions cannot be
+defined in the DTD, certain elements should not be nested. A
+summary of such elements and the elements that should not be
+nested in them is found in the normative <a href="#prohibitions">
+Appendix&#160;B</a>.</p>
+
+<h2><a name="h-4.10" id="h-4.10">4.10 The elements with 'id' and 'name'
+attributes</a></h2>
+
+<p>HTML 4.0 defined the <code>name</code> attribute for the elements
+<code>a</code>,
+<code>applet</code>, <code>frame</code>,
+<code>iframe</code>, <code>img</code>, and <code>map</code>.
+HTML 4.0 also introduced
+the <code>id</code> attribute. Both of these attributes are designed to be
+used as fragment identifiers.</p>
+<p>In XML, fragment identifiers are of type <code>ID</code>, and
+there can only be a single attribute of type <code>ID</code> per element.
+Therefore, in XHTML 1.0 the <code>id</code>
+attribute is defined to be of type <code>ID</code>. In order to
+ensure that XHTML 1.0 documents are well-structured XML documents, XHTML 1.0
+documents MUST use the <code>id</code> attribute when defining fragment
+identifiers, even on elements that historically have also had a
+<code>name</code> attribute.
+See the <a href="#guidelines">HTML Compatibility
+Guidelines</a> for information on ensuring such anchors are backwards
+compatible when serving XHTML documents as media type <code>text/html</code>.
+</p>
+<p>Note that in XHTML 1.0, the <code>name</code> attribute of these
+elements is formally deprecated, and will be removed in a
+subsequent version of XHTML.</p>
+
+<!--OddPage-->
+<h1><a name="issues" id="issues">5. Compatibility Issues</a></h1>
+
+<p>Although there is no requirement for XHTML 1.0 documents to be
+compatible with existing user agents, in practice this is easy to
+accomplish. Guidelines for creating compatible documents can be
+found in <a href="#guidelines">Appendix&#160;C</a>.</p>
+
+<h2><a name="media" id="media">5.1 Internet Media Type</a></h2>
+<p>As of the publication of this recommendation, the general
+recommended MIME labeling for XML-based applications
+has yet to be resolved.</p>
+
+<p>However, XHTML Documents which follow the guidelines set forth
+in <a href="#guidelines">Appendix C</a>, "HTML Compatibility Guidelines" may be
+labeled with the Internet Media Type "text/html", as they
+are compatible with most HTML browsers. This document
+makes no recommendation about MIME labeling of other
+XHTML documents.</p>
+
+<!--OddPage-->
+<h1><a name="future" id="future">6. Future Directions</a></h1>
+
+<p>XHTML 1.0 provides the basis for a family of document types
+that will extend and subset XHTML, in order to support a wide
+range of new devices and applications, by defining modules and
+specifying a mechanism for combining these modules. This
+mechanism will enable the extension and sub-setting of XHTML 1.0
+in a uniform way through the definition of new modules.</p>
+
+<h2><a name="mods" id="mods">6.1 Modularizing HTML</a></h2>
+
+<p>As the use of XHTML moves from the traditional desktop user
+agents to other platforms, it is clear that not all of the XHTML
+elements will be required on all platforms. For example a hand
+held device or a cell-phone may only support a subset of XHTML
+elements.</p>
+
+<p>The process of modularization breaks XHTML up into a series of
+smaller element sets. These elements can then be recombined to
+meet the needs of different communities.</p>
+
+<p>These modules will be defined in a later W3C document.</p>
+
+<h2><a name="extensions" id="extensions">6.2 Subsets and
+Extensibility</a></h2>
+
+<p>Modularization brings with it several advantages:</p>
+
+<ul>
+<li>
+<p>It provides a formal mechanism for sub-setting XHTML.</p>
+</li>
+
+<li>
+<p>It provides a formal mechanism for extending XHTML.</p>
+</li>
+
+<li>
+<p>It simplifies the transformation between document types.</p>
+</li>
+
+<li>
+<p>It promotes the reuse of modules in new document types.</p>
+</li>
+</ul>
+
+<h2><a name="profiles" id="profiles">6.3 Document
+Profiles</a></h2>
+
+<p>A document profile specifies the syntax and semantics of a set
+of documents. Conformance to a document profile provides a basis
+for interoperability guarantees. The document profile specifies
+the facilities required to process documents of that type, e.g.
+which image formats can be used, levels of scripting, style sheet
+support, and so on.</p>
+
+<p>For product designers this enables various groups to define
+their own standard profile.</p>
+
+<p>For authors this will obviate the need to write several
+different versions of documents for different clients.</p>
+
+<p>For special groups such as chemists, medical doctors, or
+mathematicians this allows a special profile to be built using
+standard HTML elements plus a group of elements geared to the
+specialist's needs.</p>
+
+<!--OddPage-->
+<h1><a name="appendices" id="appendices"></a>
+<a name="dtds" id="dtds">Appendix A. DTDs</a></h1>
+
+<p><b>This appendix is normative.</b></p>
+
+<p>These DTDs and entity sets form a normative part of this
+specification. The complete set of DTD files together with an XML
+declaration and SGML Open Catalog is included in the <a href=
+"xhtml1.zip">zip file</a> for this specification.</p>
+
+<h2><a name="h-A1" id="h-A1">A.1 Document Type
+Definitions</a></h2>
+
+<p>These DTDs approximate the HTML 4.0 DTDs. It is likely that
+when the DTDs are modularized, a method of DTD construction will
+be employed that corresponds more closely to HTML 4.0.</p>
+
+<ul>
+<li>
+<p><a href="DTD/xhtml1-strict.dtd" type="text/plain">
+XHTML-1.0-Strict</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml1-transitional.dtd" type="text/plain">
+XHTML-1.0-Transitional</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml1-frameset.dtd" type="text/plain">
+XHTML-1.0-Frameset</a></p>
+</li>
+</ul>
+
+<h2><a name="h-A2" id="h-A2">A.2 Entity Sets</a></h2>
+
+<p>The XHTML entity sets are the same as for HTML 4.0, but have
+been modified to be valid XML 1.0 entity declarations. Note the
+entity for the Euro currency sign (<code>&amp;euro;</code> or
+<code>&amp;#8364;</code> or <code>&amp;#x20AC;</code>) is defined
+as part of the special characters.</p>
+
+<ul>
+<li>
+<p><a href="DTD/xhtml-lat1.ent">Latin-1 characters</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml-special.ent">Special characters</a></p>
+</li>
+
+<li>
+<p><a href="DTD/xhtml-symbol.ent">Symbols</a></p>
+</li>
+</ul>
+
+<!--OddPage-->
+<h1><a name="prohibitions" id="prohibitions">Appendix B. Element
+Prohibitions</a></h1>
+
+<p><b>This appendix is normative.</b></p>
+
+<p>The following elements have prohibitions on which elements
+they can contain (see <a href="#h-4.9">Section 4.9</a>). This
+prohibition applies to all depths of nesting, i.e. it contains
+all the descendant elements.</p>
+
+<dl><dt><code class="tag">a</code></dt>
+<dd>
+cannot contain other <code>a</code> elements.</dd>
+<dt><code class="tag">pre</code></dt>
+<dd>cannot contain the <code>img</code>, <code>object</code>,
+<code>big</code>, <code>small</code>, <code>sub</code>, or <code>
+sup</code> elements.</dd>
+
+<dt><code class="tag">button</code></dt>
+<dd>cannot contain the <code>input</code>, <code>select</code>,
+<code>textarea</code>, <code>label</code>, <code>button</code>,
+<code>form</code>, <code>fieldset</code>, <code>iframe</code> or
+<code>isindex</code> elements.</dd>
+<dt><code class="tag">label</code></dt>
+<dd>cannot contain other <code class="tag">label</code> elements.</dd>
+<dt><code class="tag">form</code></dt>
+<dd>cannot contain other <code>form</code> elements.</dd>
+</dl>
+
+<!--OddPage-->
+<h1><a name="guidelines" id="guidelines">Appendix C.
+HTML Compatibility Guidelines</a></h1>
+
+<p><b>This appendix is informative.</b></p>
+
+<p>This appendix summarizes design guidelines for authors who
+wish their XHTML documents to render on existing HTML user
+agents.</p>
+
+<h2>C.1 Processing Instructions</h2>
+<p>Be aware that processing instructions are rendered on some
+user agents. However, also note that when the XML declaration is not included
+in a document, the document can only use the default character encodings UTF-8
+or UTF-16.</p>
+
+<h2>C.2 Empty Elements</h2>
+<p>Include a space before the trailing <code>/</code> and <code>
+&gt;</code> of empty elements, e.g. <code class="greenmono">
+&lt;br&#160;/&gt;</code>, <code class="greenmono">
+&lt;hr&#160;/&gt;</code> and <code class="greenmono">&lt;img
+src="karen.jpg" alt="Karen"&#160;/&gt;</code>. Also, use the
+minimized tag syntax for empty elements, e.g. <code class=
+"greenmono">&lt;br /&gt;</code>, as the alternative syntax <code
+class="greenmono">&lt;br&gt;&lt;/br&gt;</code> allowed by XML
+gives uncertain results in many existing user agents.</p>
+
+<h2>C.3 Element Minimization and Empty Element Content</h2>
+<p>Given an empty instance of an element whose content model is
+not <code>EMPTY</code> (for example, an empty title or paragraph)
+do not use the minimized form (e.g. use <code class="greenmono">
+&lt;p&gt; &lt;/p&gt;</code> and not <code class="greenmono">
+&lt;p&#160;/&gt;</code>).</p>
+
+<h2>C.4 Embedded Style Sheets and Scripts</h2>
+<p>Use external style sheets if your style sheet uses <code>
+&lt;</code> or <code>&amp;</code> or <code>]]&gt;</code> or <code>--</code>. Use
+external scripts if your script uses <code>&lt;</code> or <code>
+&amp;</code> or <code>]]&gt;</code> or <code>--</code>. Note that XML parsers
+are permitted to silently remove the contents of comments. Therefore, the historical
+practice of "hiding" scripts and style sheets within comments to make the
+documents backward compatible is likely to not work as expected in XML-based
+implementations.</p>
+
+<h2>C.5 Line Breaks within Attribute Values</h2>
+<p>Avoid line breaks and multiple whitespace characters within
+attribute values. These are handled inconsistently by user
+agents.</p>
+
+<h2>C.6 Isindex</h2>
+<p>Don't include more than one <code>isindex</code> element in
+the document <code>head</code>. The <code>isindex</code> element
+is deprecated in favor of the <code>input</code> element.</p>
+
+<h2>C.7 The <code>lang</code> and <code>xml:lang</code> Attributes</h2>
+<p>Use both the <code>lang</code> and <code>xml:lang</code>
+attributes when specifying the language of an element. The value
+of the <code>xml:lang</code> attribute takes precedence.</p>
+
+<h2>C.8 Fragment Identifiers</h2>
+<p>In XML, <abbr title="Uniform Resource Identifiers">URIs</abbr> [<a href="#ref-rfc2396">RFC2396</a>] that end with fragment identifiers of the form
+<code>"#foo"</code> do not refer to elements with an attribute
+<code>name="foo"</code>; rather, they refer to elements with an
+attribute defined to be of type <code>ID</code>, e.g., the <code>
+id</code> attribute in HTML 4.0. Many existing HTML clients don't
+support the use of <code>ID</code>-type attributes in this way,
+so identical values may be supplied for both of these attributes to ensure
+maximum forward and backward compatibility (e.g., <code class=
+"greenmono">&lt;a id="foo" name="foo"&gt;...&lt;/a&gt;</code>).</p>
+
+<p>Further, since the set of
+legal values for attributes of type <code>ID</code> is much smaller than
+for those of type <code>CDATA</code>, the type of the <code>name</code>
+attribute has been changed to <code>NMTOKEN</code>. This attribute is
+constrained such that it can only have the same values as type
+<code>ID</code>, or as the <code>Name</code> production in XML 1.0 Section
+2.5, production 5. Unfortunately, this constraint cannot be expressed in the
+XHTML 1.0 DTDs. Because of this change, care must be taken when
+converting existing HTML documents. The values of these attributes
+must be unique within the document, valid, and any references to these
+fragment identifiers (both
+internal and external) must be updated should the values be changed during
+conversion.</p>
+<p>Finally, note that XHTML 1.0 has deprecated the
+<code>name</code> attribute of the <code>a</code>, <code>applet</code>, <code>frame</code>, <code>iframe</code>, <code>img</code>, and <code>map</code>
+elements, and it will be
+removed from XHTML in subsequent versions.</p>
+
+<h2>C.9 Character Encoding</h2>
+<p>To specify a character encoding in the document, use both the
+encoding attribute specification on the xml declaration (e.g.
+<code class="greenmono">&lt;?xml version="1.0"
+encoding="EUC-JP"?&gt;</code>) and a meta http-equiv statement
+(e.g. <code class="greenmono">&lt;meta http-equiv="Content-type"
+content='text/html; charset="EUC-JP"'&#160;/&gt;</code>). The
+value of the encoding attribute of the xml processing instruction
+takes precedence.</p>
+
+<h2>C.10 Boolean Attributes</h2>
+<p>Some HTML user agents are unable to interpret boolean
+attributes when these appear in their full (non-minimized) form,
+as required by XML 1.0. Note this problem doesn't effect user
+agents compliant with HTML 4.0. The following attributes are
+involved: <code>compact</code>, <code>nowrap</code>, <code>
+ismap</code>, <code>declare</code>, <code>noshade</code>, <code>
+checked</code>, <code>disabled</code>, <code>readonly</code>,
+<code>multiple</code>, <code>selected</code>, <code>
+noresize</code>, <code>defer</code>.</p>
+
+<h2>C.11 Document Object Model and XHTML</h2>
+<p>
+The Document Object Model level 1 Recommendation [<a href="#ref-dom">DOM</a>]
+defines document object model interfaces for XML and HTML 4.0. The HTML 4.0
+document object model specifies that HTML element and attribute names are
+returned in upper-case. The XML document object model specifies that
+element and attribute names are returned in the case they are specified. In
+XHTML 1.0, elements and attributes are specified in lower-case. This apparent difference can be
+addressed in two ways:
+</p>
+<ol>
+<li>Applications that access XHTML documents served as Internet media type
+<code>text/html</code>
+via the <abbr title="Document Object Model">DOM</abbr> can use the HTML DOM,
+and can rely upon element and attribute names being returned in
+upper-case from those interfaces.</li>
+<li>Applications that access XHTML documents served as Internet media types
+<code>text/xml</code> or <code>application/xml</code>
+can also use the XML DOM. Elements and attributes will be returned in lower-case.
+Also, some XHTML elements may or may
+not appear
+in the object tree because they are optional in the content model
+(e.g. the <code>tbody</code> element within
+<code>table</code>). This occurs because in HTML 4.0 some elements were
+permitted to be minimized such that their start and end tags are both omitted
+(an SGML feature).
+This is not possible in XML. Rather than require document authors to insert
+extraneous elements, XHTML has made the elements optional.
+Applications need to adapt to this
+accordingly.</li>
+</ol>
+
+<h2>C.12 Using Ampersands in Attribute Values</h2>
+<p>
+When an attribute value contains an ampersand, it must be expressed as a character
+entity reference
+(e.g. "<code>&amp;amp;</code>"). For example, when the
+<code>href</code> attribute
+of the <code>a</code> element refers to a
+CGI script that takes parameters, it must be expressed as
+<code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;amp;name=user</code>
+rather than as
+<code>http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user</code>.
+</p>
+
+<h2>C.13 Cascading Style Sheets (CSS) and XHTML</h2>
+
+<p>The Cascading Style Sheets level 2 Recommendation [<a href="#ref-css2">CSS2</a>] defines style
+properties which are applied to the parse tree of the HTML or XML
+document. Differences in parsing will produce different visual or
+aural results, depending on the selectors used. The following hints
+will reduce this effect for documents which are served without
+modification as both media types:</p>
+
+<ol>
+<li>
+CSS style sheets for XHTML should use lower case element and
+attribute names.</li>
+
+
+<li>In tables, the tbody element will be inferred by the parser of an
+HTML user agent, but not by the parser of an XML user agent. Therefore
+you should always explicitely add a tbody element if it is referred to
+in a CSS selector.</li>
+
+<li>Within the XHTML name space, user agents are expected to
+recognize the "id" attribute as an attribute of type ID.
+Therefore, style sheets should be able to continue using the
+shorthand "#" selector syntax even if the user agent does not read
+the DTD.</li>
+
+<li>Within the XHTML name space, user agents are expected to
+recognize the "class" attribute. Therefore, style sheets should be
+able to continue using the shorthand "." selector syntax.</li>
+
+<li>
+CSS defines different conformance rules for HTML and XML documents;
+be aware that the HTML rules apply to XHTML documents delivered as
+HTML and the XML rules apply to XHTML documents delivered as XML.</li>
+</ol>
+<!--OddPage-->
+<h1><a name="acks" id="acks">Appendix D.
+Acknowledgements</a></h1>
+
+<p><b>This appendix is informative.</b></p>
+
+<p>This specification was written with the participation of the
+members of the W3C HTML working group:</p>
+
+<dl>
+<dd>Steven Pemberton, CWI (HTML Working Group Chair)<br />
+Murray Altheim, Sun Microsystems<br />
+Daniel Austin, CNET: The Computer Network<br />
+Frank Boumphrey, HTML Writers Guild<br />
+John Burger, Mitre<br />
+Andrew W. Donoho, IBM<br />
+Sam Dooley, IBM<br />
+Klaus Hofrichter, GMD<br />
+Philipp Hoschka, W3C<br />
+Masayasu Ishikawa, W3C<br />
+Warner ten Kate, Philips Electronics<br />
+Peter King, Phone.com<br />
+Paula Klante, JetForm<br />
+Shin'ichi Matsui, W3C/Panasonic<br />
+Shane McCarron, Applied Testing and Technology (The Open Group through August
+1999)<br />
+Ann Navarro, HTML Writers Guild<br />
+Zach Nies, Quark<br />
+Dave Raggett, W3C/HP (W3C lead for HTML)<br />
+Patrick Schmitz, Microsoft<br />
+Sebastian Schnitzenbaumer, Stack Overflow<br />
+Chris Wilson, Microsoft<br />
+Ted Wugofski, Gateway 2000<br />
+Dan Zigmond, WebTV Networks</dd>
+</dl>
+
+<!--OddPage-->
+<h1><a name="refs" id="refs">Appendix E. References</a></h1>
+
+<p><b>This appendix is informative.</b></p>
+
+<dl>
+
+<dt><a name="ref-css2" id="ref-css2"><b>[CSS2]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-CSS2">"Cascading Style Sheets, level 2 (CSS2) Specification"</a>, B.
+Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.<br />
+Available at: <a href="http://www.w3.org/TR/REC-CSS2">
+http://www.w3.org/TR/REC-CSS2</a></dd>
+
+<dt><a name="ref-dom" id="ref-dom"><b>[DOM]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-DOM-Level-1">"Document Object Model (DOM) Level 1 Specification"</a>, Lauren
+Wood <i>et al.</i>, 1 October 1998.<br />
+Available at: <a href="http://www.w3.org/TR/REC-DOM-Level-1">
+http://www.w3.org/TR/REC-DOM-Level-1</a></dd>
+
+<dt><a name="ref-html4" id="ref-html4"><b>[HTML]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/1999/PR-html40-19990824">"HTML 4.01 Specification"</a>, D. Raggett, A. Le&#160;Hors, I.
+Jacobs, 24 August 1999.<br />
+Available at: <a href="http://www.w3.org/TR/1999/PR-html40-19990824">
+http://www.w3.org/TR/1999/PR-html40-19990824</a></dd>
+
+<dt><a name="ref-posix" id="ref-posix"><b>[POSIX.1]</b></a></dt>
+
+<dd>"ISO/IEC 9945-1:1990 Information Technology - Portable
+Operating System Interface (POSIX) - Part 1: System Application
+Program Interface (API) [C Language]", Institute of Electrical
+and Electronics Engineers, Inc, 1990.</dd>
+
+<dt><a name="ref-rfc2046" id="ref-rfc2046"><b>
+[RFC2046]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2046.txt">"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part
+Two: Media Types"</a>, N. Freed and N. Borenstein, November
+1996.<br />
+Available at <a href="http://www.ietf.org/rfc/rfc2046.txt">
+http://www.ietf.org/rfc/rfc2046.txt</a>. Note that this RFC
+obsoletes RFC1521, RFC1522, and RFC1590.</dd>
+
+<dt><a name="ref-rfc2119" id="ref-rfc2119"><b>
+[RFC2119]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2119.txt">"RFC2119: Key words for use in RFCs to Indicate Requirement
+Levels"</a>, S. Bradner, March 1997.<br />
+Available at: <a href="http://www.ietf.org/rfc/rfc2119.txt">
+http://www.ietf.org/rfc/rfc2119.txt</a></dd>
+
+<dt><a name="ref-rfc2376" id="ref-rfc2376"><b>
+[RFC2376]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2376.txt">"RFC2376: XML Media Types"</a>, E. Whitehead, M. Murata, July
+1998.<br />
+Available at: <a href="http://www.ietf.org/rfc/rfc2376.txt">
+http://www.ietf.org/rfc/rfc2376.txt</a></dd>
+
+<dt><a name="ref-rfc2396" id="ref-rfc2396"><b>
+[RFC2396]</b></a></dt>
+
+<dd><a href="http://www.ietf.org/rfc/rfc2396.txt">"RFC2396: Uniform Resource Identifiers (URI): Generic
+Syntax"</a>, T. Berners-Lee, R. Fielding, L. Masinter, August
+1998.<br />
+This document updates RFC1738 and RFC1808.<br />
+Available at: <a href="http://www.ietf.org/rfc/rfc2396.txt">
+http://www.ietf.org/rfc/rfc2396.txt</a></dd>
+
+<dt><a name="ref-xml" id="ref-xml"><b>[XML]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-xml">"Extensible Markup Language (XML) 1.0 Specification"</a>, T.
+Bray, J. Paoli, C. M. Sperberg-McQueen, 10 February 1998.<br />
+Available at: <a href="http://www.w3.org/TR/REC-xml">
+http://www.w3.org/TR/REC-xml</a></dd>
+
+<dt><a name="ref-xmlns" id="ref-xmlns"><b>[XMLNAMES]</b></a></dt>
+
+<dd><a href="http://www.w3.org/TR/REC-xml-names">"Namespaces in XML"</a>, T. Bray, D. Hollander, A. Layman, 14
+January 1999.<br />
+XML namespaces provide a simple method for qualifying names used
+in XML documents by associating them with namespaces identified
+by URI.<br />
+Available at: <a href="http://www.w3.org/TR/REC-xml-names">
+http://www.w3.org/TR/REC-xml-names</a></dd>
+
+</dl>
+<p><a href="http://www.w3.org/WAI/WCAG1AAA-Conformance"
+title="Explanation of Level Triple-A Conformance">
+<img height="32" width="88"
+src="wcag1AAA.gif"
+alt="Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0" /></a></p>
+<div class="navbar">
+ <hr />
+ <a href="#toc">table of contents</a>
+</div>
+</body>
+</html>
+
diff --git a/test/valid/xlink.xml b/test/valid/xlink.xml
new file mode 100644
index 0000000..19194aa
--- /dev/null
+++ b/test/valid/xlink.xml
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification::19990205//EN" "dtds/xmlspec.dtd" [
+<!ENTITY doc-type "WD">
+<!ENTITY iso6.doc.date '29-May-1999'>
+]>
+<!--ArborText, Inc., 1988-1998, v.4002-->
+<?Pub UDT _bookmark _target?>
+<?Pub Inc?>
+<?xml-stylesheet
+href="file:///C|/Program%20Files/SoftQuad/XMetaL%201/display/xmlspec.css"
+type="text/css"?>
+<spec>
+
+<!-- Last edited: 27 May 1999 by bent -->
+<header><?Pub Dtl?>
+ <title>XML Linking Language (XLink)</title>
+ <version>Version 1.0</version>
+ <w3c-designation><!-- &doc-type;-&iso6.doc.date; --> WD-xlink-19990527</w3c-designation>
+ <w3c-doctype>World Wide Web Consortium Working Draft</w3c-doctype>
+ <pubdate><day>29</day><month>May</month><year>1999</year></pubdate>
+ <notice>
+ <p>This draft is for public discussion.</p>
+ </notice>
+ <publoc><loc href="http://www.w3.org/XML/Group/1999/05/WD-xlink-current">http://www.w3.org/XML/Group/1999/05/WD-xlink-current</loc></publoc>
+ <prevlocs>
+ <!--Check: was it actually August?-->
+ <loc href="http://www.w3.org/XML/Group/1999/05/WD-xlink-19990527">http://www.w3.org/XML/Group/1999/05/WD-xlink-19990527</loc>
+ <loc href="http://www.w3.org/XML/Group/1999/05/WD-xlink-19990505">http://www.w3.org/XML/Group/1999/05/WD-xlink-19990505</loc>
+ <loc href="http://www.w3.org/TR/1998/WD-xlink-19980303">http://www.w3.org/TR/1998/WD-xlink-19980303</loc>
+ <loc href="http://www.w3.org/TR/WD-xml-link-970630">http://www.w3.org/TR/WD-xml-link-970630</loc></prevlocs>
+
+ <authlist>
+ <!--Updated author hrefs dorchard-->
+ <!-- Update Steve's email - bent -->
+ <author>
+ <name>Steve DeRose</name>
+ <affiliation>Inso Corp. and Brown University</affiliation>
+ <email href="mailto:Steven_DeRose@Brown.edu">Steven_DeRose@Brown.edu</email>
+ </author>
+ <author>
+ <name>David Orchard</name>
+ <affiliation>IBM Corp.</affiliation>
+ <email href="mailto:dorchard@ca.ibm.com">dorchard@ca.ibm.com</email>
+ </author>
+ <author>
+ <name>Ben Trafford</name>
+ <affiliation>Invited Expert</affiliation>
+ <email href="mailto:bent@exemplary.net">bent@exemplary.net</email>
+ </author>
+ <!-- I suggest we move Eve and Tim down to the Acknowledgements section. We
+ also ought to add Gabe Beged-Dov there, as well. bent
+ how shall we cite Tim? sjd What about with an Acknowledgments section?
+ -elm <AUTHOR> <NAME>Tim Bray</NAME> <AFFILIATION>Textuality</AFFILIATION>
+ <EMAIL>tbray@textuality.com</EMAIL> </AUTHOR>-->
+ </authlist>
+
+ <status>
+ <p>This is a W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". A list of current W3C working drafts can be found at <loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</p>
+ <p><emph>Note:</emph> Since working drafts are subject to frequent change, you are advised to reference the above URI, rather than the URIs for working drafts themselves. Some of the work remaining is described in <specref ref="unfinished"/>. </p>
+ <p>This work is part of the W3C XML Activity (for current status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity">http://www.w3.org/XML/Activity </loc>). For information about the XPointer language which is expected to be used with XLink, see <loc href="http://www.w3.org/MarkUp/SGML/Activity">http://www.w3.org/TR/WD-xptr</loc>.
+ </p>
+ <p>See <loc href="http://www.w3.org/TR/NOTE-xlink-principles">http://www.w3.org/TR/NOTE-xlink-principles </loc> for additional background on the design principles informing XLink.</p>
+ <p>Also see <loc href="http://www.w3.org/TR/NOTE-xlink-req/">http://www.w3.org/TR/NOTE-xlink-req/</loc> for the XLink requirements that this document attempts to satisfy.</p>
+ </status>
+
+ <abstract>
+ <!-- edited the abstract for further clarity - bent -->
+ <p>This specification defines constructs that may be inserted into XML DTDs, schemas and document instances to describe links between objects. It uses XML syntax to create structures that can describe the simple unidirectional hyperlinks of today's HTML as well as more sophisticated links.</p>
+ </abstract>
+
+ <pubstmt>
+ <p>Burlington, Seekonk, et al.: World-Wide Web Consortium, XML Working Group, 1998.</p>
+ </pubstmt>
+
+ <sourcedesc>
+ <p>Created in electronic form.</p>
+ </sourcedesc>
+
+ <langusage>
+ <language id="en">English</language>
+ <language id="ebnf">Extended Backus-Naur Form (formal grammar)</language>
+ </langusage>
+
+ <revisiondesc>
+ <slist>
+ <sitem>1997-01-15 : Skeleton draft by TB</sitem>
+ <sitem>1997-01-24 : Fleshed out by sjd</sitem>
+ <sitem>1997-04-08 : Substantive draft</sitem>
+ <sitem>1997-06-30 : Public draft</sitem>
+ <sitem>1997-08-01 : Public draft</sitem>
+ <sitem>1997-08-05 : Prose/organization work by sjd</sitem>
+ <sitem>1997-10-14: Conformance and design principles; a bit of cleanup by elm</sitem>
+ <sitem>1997-11-07: Update for editorial issues per issues doc, by sjd.</sitem>
+ <sitem>1997-12-01: Update for editorial issues per issues doc in preparation for F2F meeting, by sjd.</sitem>
+ <sitem>1998-01-13: Editorial cleanup, addition of new design principles, by elm.</sitem>
+ <sitem>1998-02-27: Splitting out of XLink and XPointer, by elm.</sitem>
+ <sitem>1998-03-03: Moved most of the XPointer locator stuff here. elm</sitem>
+ <sitem>1999-04-24: Editorial rewrites to represent new ideas on XLink, especially the inclusion of arcs. bent</sitem>
+ <sitem>1999-05-05: Prose/organization work by dorchard. Moved much of the semantics section around, from: locators, link semantics, remote resource semantics, local resource semantics; to: resource semantics, locators, behavior semantics, link semantics, arc semantics</sitem>
+ <sitem>1999-05-12: Prose/organization work. Re-organized some of the sections, removed XML constructs from the document, added descriptive prose, edited document text for clarity. Rewrote the link recognition section. bent</sitem>
+ <sitem>1999-05-17: Further prose work. Added non-normative examples. Clarified arcs. bent</sitem>
+ <sitem>1999-05-23: Edited for grammar and clarity. bent</sitem>
+ <sitem>1999-05-27: Final once-over before sending to group. Fixed sjd's email address. bent</sitem>
+ </slist>
+ </revisiondesc>
+</header>
+
+<body>
+ <div1><?Pub Dtl?>
+ <head>Introduction</head>
+ <p>This specification defines constructs that may be inserted into XML DTDs, schemas, and document instances to describe links between objects. A <termref def="dt-link">link</termref>, as the term is used here, is an explicit relationship between two or more data objects or portions of data objects. This specification is concerned with the syntax used to assert link existence and describe link characteristics. Implicit (unasserted) relationships, for example that of one word to the next or that of a word in a text to its entry in an on-line dictionary are obviously important, but outside its scope.</p>
+ <p>Links are asserted by <xtermref href="WD-xml-lang.html#dt-element">elements </xtermref> contained in <xtermref href="WD-xml-lang.html#dt-xml-doc">XML document instances</xtermref>. The simplest case is very like an HTML <code>A</code> link, and has these characteristics:
+ <ulist>
+ <item><p>The link is expressed at one of its ends (similar to the <code>A</code> element in some document)</p></item>
+ <item><p>Users can only initiate travel from that end to the other</p></item>
+ <item><p>The link's effect on windows, frames, go-back lists, stylesheets in use, and so on is mainly determined by browsers, not by the link itself. For example, traveral of <code>A</code> links normally replaces the current view, perhaps with a user option to open a new window.</p></item>
+ <item><p>The link goes to only one destination (although a server may have great freedom in finding or dynamically creating that destination).</p></item>
+ </ulist>
+ </p>
+ <p>While this set of characteristics is already very powerful and obviously has proven itself highly useful and effective, each of these assumptions also limits the range of hypertext functionality. The linking model defined here provides ways to create links that go beyond each of these specific characteristics, thus providing features previously available mostly in dedicated hypermedia systems.
+ </p>
+
+<div2>
+ <head>Origin and Goals</head>
+ <p>Following is a summary of the design principles governing XLink:
+ <olist>
+ <item><p>XLink must be straightforwardly usable over the Internet. </p></item>
+ <item><p>XLink must be usable by a wide variety of link usage domains and classes of linking application software.</p></item>
+ <item><p>XLink must support HTML 4.0 linking constructs.</p></item>
+ <item><p>The XLink expression language must be XML.</p></item>
+ <item><p>The XLink design must be formal, concise, and illustrative.</p></item>
+ <item><p>XLinks must be human-readable and human-writable.</p></item>
+ <item><p>XLinks may reside within or outside the documents in which the
+ participating resources reside. </p></item>
+ <item><p>XLink must represent the abstract structure and significance of links.</p></item>
+ <item><p>XLink must be feasible to implement.</p></item>
+ <item><p>XLink must be informed by knowledge of established hypermedia systems and standards.</p></item>
+ </olist>
+ </p>
+</div2>
+<!--Changed the list of requirements to reflect current XLink requirements
+document. bent-->
+
+<div2>
+ <head>Relationship to Existing Standards</head>
+ <p>Three standards have been especially influential:
+ <ulist>
+ <item><p><emph>HTML:</emph> Defines several SGML element types that represent links.</p></item>
+ <item><p><emph>HyTime:</emph> Defines inline and out-of-line link structures and some semantic features, including traversal control and presentation of objects. <!--Changed from "placement of objects into a display or other space" -elm-->
+ </p></item>
+ <item><p><emph>Text Encoding Initiative Guidelines (TEI P3):</emph> Provides structures for creating links, aggregate objects, and link collections out of them.</p></item>
+ </ulist>
+ </p>
+ <p>Many other linking systems have also informed this design, especially Dexter, FRESS, MicroCosm, and InterMedia.</p>
+</div2>
+
+<div2>
+ <head>Terminology</head>
+ <p>The following basic terms apply in this document. <!--<IMG
+ SRC="local://./linkdiag.gif">(figure to be inserted)-->
+ <glist>
+ <gitem>
+ <label><termdef id="dt-arc" term="Arc">arc</termdef></label>
+ <def><p>A symbolic representation of traversal behavior in links, especially the direction, context and timing of traversal.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-eltree" term="Element Tree">element tree</termdef></label>
+ <def><p>A representation of the relevant structure specified by the tags and attributes in an XML document, based on "groves" as defined in the ISO DSSSL standard. </p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-inline" term="In-Line Link">inline link</termdef></label>
+ <def><p>Abstractly, a <termref def="dt-link">link</termref> which serves as one of its own <termref def="dt-resource">resources</termref>. Concretely, a link where the content of the <termref def="dt-linkel">linking element</termref> serves as a <termref def="dt-particip-resource">participating resource</termref>.
+ HTML <code>A</code>, HyTime <code>clink</code>, and TEI <code>XREF</code>
+ are all inline links.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-link" term="Link">link</termdef></label>
+ <def><p>An explicit relationship between two or more data objects or portions of data objects.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-linkel" term="Linking Element">linking element </termdef></label>
+ <def><p>An <xtermref href="WD-xml-lang.html#dt-element">element</xtermref> that asserts the existence and describes the characteristics of a <termref def="dt-link"> link</termref>.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-local-resource" term="Local Resource">local resource</termdef></label>
+ <def><p>The content of an <termref def="dt-inline">inline</termref>linking element. Note that the content of the linking element could be explicitly pointed to by means of a regular <termref def="dt-locator">locator</termref> in the same linking element, in which case the resource is considered <termref def="dt-remote-resource"> remote</termref>, not local.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-locator" term="Locator">locator</termdef> </label>
+ <def><p>Data, provided as part of a link, which identifies a
+ <termref def="dt-resource">resource</termref>.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-multidir" term="Multi-Directional Link">multidirectional link</termdef></label>
+ <def><p>A <termref def="dt-link">link</termref> whose <termref def="dt-traversal"> traversal</termref> can be initiated from more than one of its <termref def="dt-particip-resource"> participating resources</termref>. Note that being able to "go back" after following a one-directional link does not make the link multidirectional.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-outofline" term="Out-of-line Link">out-of-line link</termdef></label>
+ <def><p>A <termref def="dt-link">link</termref> whose content does not serve as one of the link's <termref def="dt-particip-resource">participating resources </termref>. Such links presuppose a notion like <termref def="dt-xlg">extended link groups</termref>, which instruct application software where to look for links. Out-of-line links are generally required for supporting multidirectional <termref def="dt-traversal">traversal</termref> and for allowing read-only resources to have outgoing links.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-parsedq" term="Parsed">parsed</termdef></label> <def><p>In the context of link behavior, a parsed link is any link whose content is transcluded into the document where the link originated. The use of the term "parsed" directly refers to the concept in XML of a
+ parsed entity.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-particip-resource" term="Participating Resource"> participating resource</termdef></label>
+ <def><p>A <termref def="dt-resource">resource</termref> that belongs to a link. All resources are potential contributors to a link; participating resources are the actual contributors to a particular link.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-remote-resource" term="Remote Resource">remote resource</termdef></label>
+ <def><p>Any participating resource of a link that is pointed to with a locator. </p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-resource" term="Resource">resource</termdef></label>
+ <def><p>In the abstract sense, an addressable unit of information or service that is participating in a <termref def="dt-link">link</termref>. Examples include files, images, documents, programs, and query results. Concretely, anything reachable by the use of a <termref def="dt-locator">locator</termref> in some <termref def="dt-linkel">linking element</termref>. Note that this term and its definition are taken from the basic specifications governing the World Wide Web. <!--Joel notes: need link here. bent asks: A link?-->
+ </p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-subresource" term="sub-Resource">sub-resource</termdef></label>
+ <def><p>A portion of a resource, pointed to as the precise destination of a link. As one example, a link might specify that an entire document be retrieved and displayed, but that some specific part(s) of it is the specific linked data, to be treated in an application-appropriate manner such as indication by highlighting, scrolling, etc.</p></def>
+ </gitem>
+ <gitem>
+ <label><termdef id="dt-traversal" term="Traversal">traversal</termdef></label>
+ <def><p>The action of using a <termref def="dt-link">link</termref>; that is, of accessing a <termref def="dt-resource">resource</termref>. Traversal may be initiated by a user action (for example, clicking on the displayed content of a <termref def="dt-linkel">linking element</termref>) or occur under program control.</p></def>
+ </gitem>
+ </glist>
+ </p>
+</div2>
+
+<div2>
+ <head>Notation</head>
+ <p>The formal grammar for <termref def="dt-locator">locators</termref> is given using a simple Extended Backus-Naur Form (EBNF) location, as described in <xspecref href="http://www.w3.org/TR/REC-xml#sec-notation">the XML specification</xspecref>.</p>
+ <!-- fixed link to XML spec - bent -->
+</div2>
+</div1>
+
+<div1 id="addressing"><?Pub Dtl?>
+ <head>Locator Syntax</head>
+ <p>The locator for a <termref def="dt-resource">resource</termref> is typically provided by means of a Uniform Resource Identifier, or URI. XPointers can be used in conjunction with the URI structure, as fragment identifiers, to specify a more precise sub-resource. </p>
+ <!-- Removed the discussion of queries from the previous paragraph, due to contention within the WG. bent -->
+ <p>A locator generally contains a URI, as described in IETF RFCs <bibref ref="rfc1738"/> and <bibref ref="rfc1808"/>. As these RFCs state, the URI may include a trailing <emph>query</emph> (marked by a leading "<code>?</code>"), and be followed by a "<code>#</code>" and a <emph>fragment identifier</emph>, with the query interpreted by the host providing the indicated resource, and the interpretation of the fragment identifier dependent on the data type of the indicated resource.</p>
+ <!--Is there some restriction on URNs having queries and/or fragment identifiers? Since these RFCs don't mention URIs explicitly, should the wording here lead from URLs to URIs more explicitly? -elm-->
+ <p>In order to locate XML documents and portions of documents, a locator value may contain either a <xtermref href="http://www.w3.org/Addressing/rfc1738.txt"> URI</xtermref> or a fragment identifier, or both. Any fragment identifier for pointing into XML must be an <xtermref href="http://www.w3.org/TR/WD-xptr#dt-xpointer"> XPointer</xtermref>.</p>
+ <p>Special syntax may be used to request the use of particular processing models in accessing the locator's resource. This is designed to reflect the realities of network operation, where it may or may not be desirable to exercise fine control over the distribution of work between local and remote processors.
+ <scrap id="locator" lang="ebnf">
+ <head>Locator</head>
+ <prod id="nt-locator">
+ <lhs>Locator</lhs>
+ <rhs><nt def="nt-uri">URI</nt></rhs>
+ <rhs>| <nt def="nt-connector">Connector</nt> (<xnt href="http://www.w3.org/TR/WD-xptr">XPointer</xnt> | <xnt href="WD-xml-lang.html#NT-Name">Name</xnt>)</rhs>
+ <rhs>| <nt def="nt-uri">URI</nt> <nt def="nt-connector">Connector</nt> (<xnt href="http://www.w3.org/TR/WD-xptr">XPointer</xnt> | <xnt href="WD-xml-lang.html#NT-Name">Name</xnt>)</rhs>
+ </prod>
+ <prod id="nt-connector">
+ <lhs>Connector</lhs><rhs>'#' | '|'</rhs>
+ </prod>
+ <prod id="nt-uri">
+ <lhs>URI</lhs><rhs><xnt href="WD-xml-lang.html#NT-URLchar">URIchar*</xnt></rhs>
+ </prod>
+ </scrap>
+ </p>
+ <p><termdef id="dt-designated" term="Designated Resource">In this discussion, the term <term>designated resource</term> refers to the resource which an entire locator serves to locate.</termdef> The following rules apply:
+ <ulist>
+ <item>
+ <p><termdef id="dt-containing-resource" term="Containing Resource"> The URI, if provided, locates a resource called the <term>containing resource</term>.</termdef></p>
+ </item>
+ <item>
+ <p>If the URI is not provided, the containing resource is considered to be the document in which the linking element is contained.
+ </p></item>
+ <item>
+ <p><termdef id="dt-sub-resource" term="Sub-Resource">If an XPointer is provided, the designated resource is a <term>sub-resource</term>
+ of the containing resource; otherwise the designated resource is the
+ containing resource.</termdef></p>
+ </item>
+ <!--Is this now incorrect, given the nature of the switch from here() to origin()? -elm
+ Oy, yes, i think so. it will require some fun wording, though, so i haven't fixed it yet here -sjd-->
+ <item>
+ <p>If the <nt def="nt-connector">Connector</nt> is followed directly by a <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt>, the <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt> is shorthand for the XPointer"<code>id(Name)</code>"; that is, the sub-resource is the element in the containing resource that has an XML <xtermref href="http://www.w3.org/TR/REC-xml#sec-attrtypes">ID attribute</xtermref> whose value <xtermref href="http://www.w3.org/TR/REC-xml#dt-match">matches</xtermref> the <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt>. This shorthand is to encourage use of the robust <code>id</code> addressing mode.</p>
+ </item>
+ <!-- fixed links to the XML recommendation - bent -->
+ <item>
+ <p>If the connector is "<code>#</code>", this signals an intent that the containing resource is to be fetched as a whole from the host that provides it, and that the XPointer processing to extract the sub-resource
+ is to be performed on the client, that is to say on the same system where the linking element is recognized and processed.</p>
+ </item>
+ <item>
+ <p>If the connector is "<code>|</code>", no intent is signaled as to what processing model is to be used to go about accessing the designated resource.</p>
+ </item>
+ </ulist>
+ </p>
+ <p>Note that the definition of a URI includes an optional query component. </p>
+ <p>In the case where the URI contains a query (to be interpreted by the server), information providers and authors of server software are urged to use queries as follows:
+ <scrap id="querysyntax" lang="ebnf">
+ <head>Query</head>
+ <prod id="nt-query">
+ <lhs>Query</lhs><rhs>'XML-XPTR=' (<xnt href="http://www.w3.org/TR/WD-xptr"> XPointer</xnt> | <xnt href="http://www.w3.org/TR/REC-xml#NT-Name">Name</xnt>)</rhs>
+ </prod>
+ </scrap>
+ </p>
+ <!-- fixed link to XML recommendation - bent -->
+</div1>
+
+<div1><?Pub Dtl?>
+ <head>Link Recognition</head>
+ <p>The existence of a <termref def="dt-link">link</termref> is asserted by a <termref def="dt-linkel">linking element</termref>. Linking elements must be recognized reliably by application software in order to provide appropriate display and behavior. There are several ways link recognition could be accomplished: for example, reserving element type names, reserving attributes names, leaving the matter of recognition entirely up to stylesheets and application software, or using the XLink <xtermref href="http://www.w3.org/TR/REC-xml-names/">namespace</xtermref> to specify element names and attribute names that would be recognized by namespace and XLink-aware processors. Using element and attribute names within the XLink namespace provides a balance between giving users control of their own markup language design and keeping the identification of linking elements simple and unambiguous.</p>
+ <p>The two approaches to identifying linking elements are relatively simple to implement. For example, here's how the HTML <code>A</code> element would be declared using attributes within the XLink namespace, and then how an element within the XLink namespace might do the same:
+ <eg>&lt;A xlink:type="simple" xlink:href="http://www.w3.org/TR/wd-xlink/"
+xlink:title="The Xlink Working Draft"&gt;The XLink Working Draft.&lt;/A&gt;</eg>
+ <eg>&lt;xlink:simple href="http://www.w3.org/TR/wd-xlink/"
+title="The XLink Working Draft"&gt;The XLink Working Draft&lt;/xlink:simple&gt;</eg>
+ Any arbitrary element can be made into an XLink by using the <code>xlink:type</code> attribute. And, of course, the explicit XLink elements may be used, as well. This document will go on to describe the linking attributes that are associated with linking elements. It may be assumed by the reader that these attributes would require the <code>xlink</code> namespace prefix if they existed within an arbitrary element, or that they may be used directly if they exist within an explicit Xlink element.</p>
+ <!-- heavily modified this section to accomodate namespace-aware link recognition - bent -->
+</div1>
+
+<!-- Rewrote this entire section. - bent -->
+<div1>
+ <head>Linking Attributes</head>
+ <p>XLink has several attributes associated with the variety of links it may represent. These attributes define four main concepts: locators, arcs, behaviors, and semantics. <emph>Locators</emph> define where the actual resource is located. <emph>Arcs</emph> define the traversal of links. Where does the link come from? Where does it go to? All this information can be stored in the arc attributes. <emph>Behaviors</emph> define how the link is activated, and what the application should do with the resource being linked to. <emph>Semantics</emph> define useful information that the application may use, and enables the link for such specalized targets as constricted devices and accessibility software.</p>
+
+ <div2 id="link-locators">
+ <head>Locator Attributes</head>
+ <p>The only locator attribute at this time is <code>href</code>. This attribute must contain either a string in the form of a URI that defines the remote resource being linked to, a string containing a fragment identifier that links to a local resource, or a string containing a URI with a fragment identifier concacenated onto it.</p>
+ </div2>
+
+ <div2 id="link-arcs">
+ <head>Arc Attributes</head>
+ <p>Arcs contain two attributes, <code>from</code> and <code>to</code>. The <code>from</code> attribute may contain a string containing the content of a <code>role</code> attribute from the resource being linked from. The purpose of the <code>from</code> attribute is to define where this link is being actuated from.</p>
+ <p>The <code>to</code> attribute may contain a string containing the content of a <code>role</code> attribute from the resource being linked to. The purpose of the <code>to</code> attribute is to define where this link traverses to.</p>
+ <p>The application may use this information in a number of ways, especially in a complex hypertext system, but it is mainly useful in providing context for application behavior.</p>
+ <!-- I'm at a loss as to how to describe arcs more clearly than this. I don't want to devolve into discussions of directed graphs and n-ary links. -bent -->
+ </div2>
+
+ <div2 id="link-behaviors">
+ <head>Behavior Attributes</head>
+ <p>There are two attributes associated with behavior: <code>show</code> and <code>actuate</code>. The <code>show</code> attribute defines how the remote resource is to be revealed to the user. It has three options: <code>new</code>, <code>parsed</code>, and <code>replace</code>. The <code>new</code> option indicates that the remote resource should be shown in a new window (or other device context) without replacing the previous content. The <code>parsed</code> option, relating directly to the XML concept of a parsed entity, indicates that the content should be integrated into the document from which the link was actuated. The <code>replace</code> option is the one most commonly seen on the World Wide Web, where the document being linked from is entirely replaced by the object being linked to.</p>
+ <p>The <code>actuate</code> attribute defines how the link is initiated. It has two options: <code>user</code> and <code>auto</code>. The <code>user</code> option indicates that the link must be initiated by some sort of human-initiated selection, such as clicking on an HTML anchor. The <code>auto</code> option indicates that the link is automatically initiated when the application deems that the user has reached the link. It then follows the behavior set out in the <code>show</code> option.</p>
+ <!-- Something should be put here in terms of an example. Idea: "A" link versus automatically updating encyclopedia. -bent -->
+ </div2>
+
+ <div2 id="link-semantics">
+ <head>Semantic Attributes</head>
+ <p>There are two attributes associated with semantics, <code>role</code> and <code>title</code>. The <code>role</code> attribute is a generic string used to describe the function of the link's content. For example, a poem might have a link with a <code>role="stanza"</code>. The <code>role</code> is also used as an identifier for the <code>from</code> and <code>to</code> attributes of arcs.</p>
+ <p>The <code>title</code> attribute is designed to provide human-readable text describing the link. It is very useful for those who have text-based applications, whether that be due to a constricted device that cannot display the link's content, or if it's being read by an application to a visually-impaired user, or if it's being used to create a table of links. The <code>title</code> attribute contains a simple, descriptive string.</p>
+ </div2>
+</div1>
+
+<div1 id="linking-elements">
+ <head>Linking Elements</head>
+ <p>There are several kinds of linking elements in XLink: <code>simple</code> links, <code>locators</code>, <code>arcs</code>, and <code>extended</code> links. These elements may be instantiated via element declarations from the XLink namespace, or they may be instantiated via attribute declarations from the XLink namespace. Both kinds of instantiation are described in the definition of each linking element.</p>
+ <p>The <code>simple</code> link is used to declare a link that approximates the functionality of the HTML <code>A</code> element. It has, however, a few added features to increase its value, including the potential declaration of semantics and behavior. The <code>locator</code> elements are used to define the resource being linked to. Some links may contain multiple locators, representing a choice of potential links to be traversed. The <code>arcs</code> are used to define the traversal semantics of the link. Finally, an <code>extended</code> linking element differs from a simple link in that it can connect any number of resources, not just one local resource (optionally) and one remote resource, and in that extended links are more often out-of-line than simple links.</p>
+
+<div2 id="simple-links">
+ <head>Simple Links</head>
+ <p id="dt-simplelink"><termdef id="dt-simpleline" term="Simple Link"><term>Simple links</term> can be used for purposes that approximate the functionality of a basic HTML <code>A</code> link, but they can also support a limited amount of additional functionality. Simple links have only one locator and thus, for convenience, combine the functions of a linking element and a locator into a single element.</termdef> As a result of this combination, the simple linking element offers both a locator attribute and all the behavior and semantic attributes.</p>
+ <p>The following are two examples of linking elements, each showing all the possible attributes that can be associated with a simple link. Here is the explicit XLink simple linking element.
+ <eg>&lt;!ELEMENT xlink:simple ANY&gt;
+&lt;!ATTLIST xlink:slink
+ href CDATA #REQUIRED
+ role CDATA #IMPLIED
+ title CDATA #IMPLIED
+ show (new|parsed|replace) "replace"
+ actuate (user|auto) "user"
+&gt;</eg>
+ And here is how to make an arbitrary element into a simple link.
+ <eg>&lt;!ELEMENT xlink:simple ANY&gt;
+&lt;!ATTLIST foo
+ xlink:type (simple|extended|locator|arc) #FIXED "simple"
+ xlink:href CDATA #REQUIRED
+ xlink:role CDATA #IMPLIED
+ xlink:title CDATA #IMPLIED
+ xlink:show (new|parsed|replace) "replace"
+ xlink:actuate (user|auto) "user"
+&gt;</eg>
+ Here is how the first example might look in a document:
+<eg>&lt;xlink:simple href="http://www.w3.org/TR/wd-xlink" role="working draft"
+ title="The XLink Working Draft" show="replace" actuate="user"&gt;
+The XLink Working Draft.&lt;/xlink:simple&gt;</eg>
+<eg>&lt;foo xlink:href="http://www.w3.org/TR/wd-xlink" xlink:role="working draft"
+ xlink:title="The XLink Working Draft" xlink:show="new" xlink:actuate="user"&gt;
+The XLink Working Draft.&lt;/foo&gt;</eg>
+ Alternately, a simple link could be as terse as this:
+<eg>&lt;foo xlink:href="#stanza1"&gt;The First Stanza.&lt;/foo&gt;</eg>
+ </p>
+ <p>
+ There are no constraints on the contents of a simple linking element. In
+ the sample declaration above, it is given a content model of <code>ANY</code>
+ to illustrate that any content model or declared content is acceptable. In
+ a valid document, every element that is significant to XLink must still conform
+ to the constraints expressed in its governing DTD.</p>
+ <p>Note that it is meaningful to have an out-of-line simple link, although
+ such links are uncommon. They are called "one-ended" and are typically used
+ to associate discrete semantic properties with locations. The properties might
+ be expressed by attributes on the link, the link's element type name, or in
+ some other way, and are not considered full-fledged resources of the link.
+ Most out-of-line links are extended links, as these have a far wider range
+ of uses.</p>
+</div2>
+
+<div2 id="extended-link">
+<head>Extended Links</head>
+ <p><termdef id="dt-extendedlink" term="Extended Link">An <term>extended link</term> differs from a simple link in that it can connect any number of resources, not just one local resource (optionally) and one remote resource, and in that extended links are more often out-of-line than simple links.</termdef></p>
+ <p>These additional capabilities of extended links are required for:
+ <ulist>
+ <item>
+ <p>Enabling outgoing links in documents that cannot be modified to add an inline link</p>
+ </item>
+ <item>
+ <p>Creating links to and from resources in formats with no native support for embedded links (such as most multimedia formats)</p>
+ </item>
+ <item>
+ <p>Applying and filtering sets of relevant links on demand</p>
+ </item>
+ <item><p>Enabling other advanced hypermedia capabilities</p></item>
+ </ulist>
+ </p>
+ <p>Application software might be expected to provide traversal among all of a link's participating resources (subject to semantic constraints outside the scope of this specification) and to signal the fact that a given resource or sub-resource participates in one or more links when it is displayed (even though there is no markup at exactly that point to signal it).</p>
+ <p>A linking element for an extended link contains a series of <xtermref href="http://www.w3.org/TR/REC-xml/#dt-parentchild">child elements</xtermref> that serve as locators and arcs. Because an extended link can have more than one remote resource, it separates out linking itself from the mechanisms used to locate each resource (whereas a simple link combines the two).</p>
+ <p>The <code>xlink:type</code> attribute value for an extended link must be <code> extended</code>, if the link is being instantiated on an arbitrary element. Note that extended links introduce variants of the <code>show</code> and <code>actuate</code> behavior attributes. These attributes, the <code>showdefault</code> and <code>actuatedefault</code> define the same behavior as their counterparts. However, in this case, they are considered to define the default behavior for all the linking elements that they contain.</p>
+ <p>However, when a linking element within an extended link has a <code>show</code> or <code>actuate</code> attribute of its own, that attribute overrides the defaults set on the extended linking element.</p>
+ <p>The extended linking element itself retains those attributes relevant to the link as a whole, and to its local resource if any. Following are two sample declaration for an extended link. The first is an example of the explicit XLink extended link:
+
+<eg>&lt;!ELEMENT xlink:extended ((xlink:arc | xlink:locator)*)>
+&lt;!ATTLIST xlink:extended
+ role CDATA #IMPLIED
+ title CDATA #IMPLIED
+ showdefault (new|parsed|replace) #IMPLIED
+ actuatedefault (user|auto) #IMPLIED &gt;</eg>
+
+ The second is an example of an arbitrary element being used an extended link:
+
+<eg>&lt;!ELEMENT foo ((xlink:arc | xlink:locator)*)>
+&lt;!ATTLIST foo
+ xlink:type (simple|extended|locator|arc) #FIXED "extended"
+ xlink:role CDATA #IMPLIED
+ xlink:title CDATA #IMPLIED
+ xlink:showdefault (new|parsed|replace) #IMPLIED
+ xlink:actuatedefault (user|auto) #IMPLIED &gt;</eg>
+
+ The following two examples demonstrate how each of the above might appear within a document instance. Note that the content of these examples would be other elements. For brevity's sake, they've been left blank. The first example shows how the link might appear, using an explicit XLink extended link:
+
+<eg>&lt;xlink:extended role="address book" title="Ben's Address Book" showdefault="replace" actuatedefault="user"&gt; ... &lt;/xlink:extended&gt;</eg>
+
+ And the second shows how the link might appear, using an arbitrary element:
+
+<eg>&lt;foo xlink:type="extended" xlink:role="address book" xlink:title="Ben's Address Book" xlink:showdefault="replace" xlink:actuatedefault="user"&gt; ... &lt;/foo&gt;</eg>
+ </p>
+
+</div2>
+
+<div2 id="xlink-arcs">
+ <head>Arc Elements</head>
+ <p><termdef id="dt-arc" term="Arc">An <term>arc</term> is contained within an extended link for the purpose of defining traversal behavior.</termdef> More than one arc may be associated with a link. Otherwise, arc elements function exactly as the arc attributes might lead on to expect.</p>
+ <!-- More here? -bent -->
+</div2>
+
+</div1>
+<div1>
+<head>Conformance</head>
+<p>An element conforms to XLink if: <olist>
+<item><p>The element has an <code>xml:link</code> attribute whose value is
+one of the attribute values prescribed by this specification, and</p></item>
+<item><p>the element and all of its attributes and content adhere to the
+syntactic
+requirements imposed by the chosen <code>xml:link</code> attribute value,
+as prescribed in this specification.</p></item>
+</olist></p>
+<p>Note that conformance is assessed at the level of individual elements,
+rather than whole XML documents, because XLink and non-XLink linking mechanisms
+may be used side by side in any one document.</p>
+<p>An application conforms to XLink if it interprets XLink-conforming elements
+according to all required semantics prescribed by this specification and,
+for any optional semantics it chooses to support, supports them in the way
+prescribed. <!--If/when we split out the XLinkfunctionality
+(e.g. inline links and out-of-line links), the
+conformance language will have to address the different
+levels of support. -elm--> </p>
+</div1>
+</body><back>
+<div1 id="unfinished">
+<head>Unfinished Work</head>
+<div2>
+<head>Structured Titles</head>
+<p>The simple title mechanism described in this draft is insufficient to cope
+with internationalization or the use of multimedia in link titles. A future
+version will provide a mechanism for the use of structured link titles.</p>
+</div2>
+</div1>
+<div1>
+<head>References</head>
+<blist>
+<bibl id="xptr" key="XPTR">Eve Maler and Steve DeRose, editors. <titleref>
+XML Pointer Language (XPointer) V1.0</titleref>. ArborText, Inso, and Brown
+University. Burlington, Seekonk, et al.: World Wide Web Consortium, 1998.
+(See <loc href="http://www.w3.org/TR/WD-xptr">http://www.w3.org/TR/WD-xptr
+ </loc>.)</bibl>
+<bibl id="iso10744" key="ISO/IEC 10744">ISO (International Organization for
+Standardization). <titleref>ISO/IEC 10744-1992 (E). Information technology
+- Hypermedia/Time-based Structuring Language (HyTime).</titleref> [Geneva]:
+International Organization for Standardization, 1992. <titleref>Extended
+Facilities
+Annex.</titleref> [Geneva]: International Organization for Standardization,
+1996. (See <loc
+href="http://www.ornl.gov/sgml/wg8/hytime/html/is10744r.html">http://www.ornl.go
+v/sgml/wg8/hytime/html/is10744r.html </loc> <!--p m-r says this link is
+broken. elm --> ).</bibl>
+<bibl id="rfc1738" key="IETF RFC 1738">IETF (Internet Engineering Task
+Force). <titleref>
+RFC 1738: Uniform Resource Locators</titleref>. 1991. (See <loc
+href="http://www.w3.org/Addressing/rfc1738.txt">
+http://www.w3.org/Addressing/rfc1738.txt</loc>).</bibl>
+<bibl id="rfc1808" key="IETF RFC 1808">IETF (Internet Engineering Task
+Force). <titleref>
+RFC 1808: Relative Uniform Resource Locators</titleref>. 1995. (See <loc
+href="http://www.w3.org/Addressing/rfc1808.txt">http://www.w3.org/Addressing/rfc
+1808.txt </loc>).</bibl>
+<bibl id="tei" key="TEI">C. M. Sperberg-McQueen and Lou Burnard, editors.
+<titleref>
+Guidelines for Electronic Text Encoding and Interchange</titleref>. Association
+for Computers and the Humanities (ACH), Association for Computational
+Linguistics
+(ACL), and Association for Literary and Linguistic Computing (ALLC). Chicago,
+Oxford: Text Encoding Initiative, 1994. <!-- add cite to DOM work --> </bibl>
+<bibl id="chum" key="CHUM">]Steven J. DeRose and David G. Durand. 1995. "The
+TEI Hypertext Guidelines." In <titleref>Computing and the Humanities
+</titleref>29(3).
+Reprinted in <titleref>Text Encoding Initiative: Background and
+Context</titleref>,
+ed. Nancy Ide and Jean ronis <!-- fix this name -->, ISBN 0-7923-3704-2. </bibl>
+</blist></div1>
+</back></spec>
+<?Pub *0000052575?>
diff --git a/test/wap.xml b/test/wap.xml
new file mode 100644
index 0000000..2795509
--- /dev/null
+++ b/test/wap.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
+"http://dark.wapit.com/vswap/tests/wap/DTD/wml11.dtd">
+<!-- (C) 1999, 2000 WAP Forum Ltd. All rights reserved -->
+<wml>
+<card id="card1">
+<onevent type="onenterforward">
+<go href="/vswap/run/result.eml">
+ <postfield name="var" value="&#36;test"/>
+ <postfield name="v" value="dark"/>
+ <postfield name="ts" value="0003"/>
+ <postfield name="tp" value="wml/state/variables/parsing/1"/>
+ <postfield name="ti" value="1"/>
+ <postfield name="expected" value="var:pass"/>
+</go>
+</onevent>
+<p>If automatic testing failed, select <anchor>Failed<go
+href='/vswap/run/result.eml'>
+ <postfield name="SUBMIT" value="No"/><postfield name="v"
+value="dark"/>
+ <postfield name="ts" value="0003"/>
+ <postfield name="tp" value="wml/state/variables/parsing/1"/>
+ <postfield name="ti" value="1"/>
+ <postfield name="expected" value="var:pass"/></go></anchor>.</p>
+</card>
+
+</wml>
diff --git a/test/warning/ent8 b/test/warning/ent8
new file mode 100644
index 0000000..6240939
--- /dev/null
+++ b/test/warning/ent8
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE a SYSTEM "a.dtd">
+<a> &unknown; but Okay </a>
diff --git a/test/warning/ent9 b/test/warning/ent9
new file mode 100644
index 0000000..009e322
--- /dev/null
+++ b/test/warning/ent9
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
+<!ENTITY xml "<prefix:node>prefix is indeclared here</prefix:node>">
+]>
+<EXAMPLE xmlns:prefix="http://example.com">
+ &xml;
+</EXAMPLE>
diff --git a/test/winblanks.xml b/test/winblanks.xml
new file mode 100644
index 0000000..8f937f2
--- /dev/null
+++ b/test/winblanks.xml
@@ -0,0 +1,5 @@
+<a>
+ <B>
+ <C/>
+</B>
+</a> \ No newline at end of file
diff --git a/test/wml.xml b/test/wml.xml
new file mode 100644
index 0000000..1cfecc7
--- /dev/null
+++ b/test/wml.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" ?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Rubriques 75008">
+ <p>
+ <a href="rubmenu.asp?CP=75008&#38;RB=01">Cin&#233;ma</a><br/>
+ </p>
+
+</card>
+</wml>
+
diff --git a/test/xhtml1 b/test/xhtml1
new file mode 100644
index 0000000..70e3a34
--- /dev/null
+++ b/test/xhtml1
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!-- 3.1.1 3/ -->
+<html xml:lang="en" lang="en">
+ <head>
+ <title>Virtual Library</title>
+ </head>
+ <!-- 4.8 -->
+ <script type="text/javascript">
+ ... unescaped script &lt; content ...
+ </script>
+ <body>
+ <p>Moved to <a href="http://example.org/">example.org</a>.</p>
+ </body>
+ <!-- C2 -->
+ <img src="foo.gif" alt="foo"/>
+ <!-- C3 -->
+ <p/>
+ <!-- C7 -->
+ <p lang="fr">coucou</p>
+ <p xml:lang="fr">salut</p>
+ <!-- C8 -->
+ <p name="fragid">test</p>
+ <!-- 4.5 -->
+ <dl compact="">
+ <dt>Internet Engineering Task Force</dt>
+ <dd>An organization which establishes technical standards for the Internet</dd>
+ </dl>
+
+</html>
+
+
diff --git a/test/xhtmlcomp b/test/xhtmlcomp
new file mode 100644
index 0000000..47dd2a7
--- /dev/null
+++ b/test/xhtmlcomp
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+ <body>
+ <h1><abbr>a</abbr> b</h1>
+ </body>
+</html>
diff --git a/test/xml1 b/test/xml1
new file mode 100644
index 0000000..40df24a
--- /dev/null
+++ b/test/xml1
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+ numerically (&#38;#38;#38;) or with a general entity
+ (&amp;amp;).</p>" >
+]>
+<test>&example;</test>
diff --git a/test/xml2 b/test/xml2
new file mode 100644
index 0000000..922314b
--- /dev/null
+++ b/test/xml2
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE test [
+<!ELEMENT test (#PCDATA) >
+<!ENTITY % xx '&#37;zz;'>
+<!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+%xx;
+]>
+<test>This sample shows a &tricky; method.</test>
diff --git a/test/xmlid/id_err1.xml b/test/xmlid/id_err1.xml
new file mode 100644
index 0000000..d8c47cc
--- /dev/null
+++ b/test/xmlid/id_err1.xml
@@ -0,0 +1 @@
+<foo xml:id="0bar"/>
diff --git a/test/xmlid/id_err2.xml b/test/xmlid/id_err2.xml
new file mode 100644
index 0000000..99010a7
--- /dev/null
+++ b/test/xmlid/id_err2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo xml:id CDATA #IMPLIED>
+]>
+<foo xml:id="bar"/>
diff --git a/test/xmlid/id_tst1.xml b/test/xmlid/id_tst1.xml
new file mode 100644
index 0000000..7c3249c
--- /dev/null
+++ b/test/xmlid/id_tst1.xml
@@ -0,0 +1 @@
+<foo xml:id="bar"/>
diff --git a/test/xmlid/id_tst2.xml b/test/xmlid/id_tst2.xml
new file mode 100644
index 0000000..2bf5861
--- /dev/null
+++ b/test/xmlid/id_tst2.xml
@@ -0,0 +1 @@
+<n:foo xml:id="bar"/>
diff --git a/test/xmlid/id_tst3.xml b/test/xmlid/id_tst3.xml
new file mode 100644
index 0000000..7316a13
--- /dev/null
+++ b/test/xmlid/id_tst3.xml
@@ -0,0 +1 @@
+<f:o:o xml:id="bar"/>
diff --git a/test/xmlid/id_tst4.xml b/test/xmlid/id_tst4.xml
new file mode 100644
index 0000000..ea057a3
--- /dev/null
+++ b/test/xmlid/id_tst4.xml
@@ -0,0 +1,4 @@
+<doc>
+<foo xml:id="bar"/>
+<err xml:id="bar"/>
+</doc>
diff --git a/test/xsdtest/xsdtest.xml b/test/xsdtest/xsdtest.xml
new file mode 100644
index 0000000..b8a6de9
--- /dev/null
+++ b/test/xsdtest/xsdtest.xml
@@ -0,0 +1,806 @@
+<xsdtest>
+<datatype name="dateTime">
+<valid>2001-12-01T19:45:00</valid>
+<valid>2001-12-01T19:45:00Z</valid>
+<valid>2001-12-01T19:45:00-11:59</valid>
+<valid>0001-01-12T00:00:00+12:00</valid>
+<invalid>2001-12-1T19:45:00+24:00</invalid>
+<invalid>2001-12-1T19:45:00</invalid>
+<equiv>
+<class>
+ <value>2001-12-01T19:45:00</value>
+ <value>2001-12-01T19:45:00.00</value>
+</class>
+<class>
+ <value>2001-12-01T19:45:00Z</value>
+ <value>2001-12-01T19:45:00.00Z</value>
+ <value>2001-12-01T20:45:00+01:00</value>
+</class>
+</equiv>
+</datatype>
+<datatype name="anyURI">
+<valid>foobar</valid>
+<valid>http://www.example.com</valid>
+<valid>http://ji%6d@www.example.com</valid>
+<valid>http://www.example.co%6d</valid>
+<valid>nosuchscheme:stuff</valid>
+<invalid>foo$bar:stuff</invalid>
+<invalid>f%oobar</invalid>
+</datatype>
+<datatype name="integer">
+<valid>10</valid>
+<valid>01</valid>
+<valid>0123456789</valid>
+<valid>+10</valid>
+<valid>-10</valid>
+<invalid>1.0</invalid>
+<invalid>.1</invalid>
+<valid>9999999999999999999999999999999</valid>
+<invalid>1.</invalid>
+<invalid>0.</invalid>
+<equiv>
+<class>
+ <value>0</value>
+ <value>+0</value>
+ <value>-0</value>
+ <value>00</value>
+</class>
+<class>
+ <value>10</value>
+ <value>+10</value>
+ <value>+0010</value>
+ <value>010</value>
+</class>
+<class>
+ <value>-10</value>
+ <value>-0010</value>
+ <value>-010</value>
+</class>
+</equiv>
+</datatype>
+<datatype name="duration">
+<valid>P1Y</valid>
+<valid>P1Y0M2DT17H5M12S</valid>
+<valid>-P1Y</valid>
+<valid>P60D</valid>
+<valid>PT24H</valid>
+<valid>PT1.2S</valid>
+<invalid>P24h</invalid>
+<invalid>P24H</invalid>
+<invalid>P1YT</invalid>
+<invalid>P</invalid>
+<invalid>-P</invalid>
+<equiv>
+ <class>
+ <value>-P6M</value>
+ </class>
+ <class>
+ <value>P0Y</value>
+ <value>-P0Y</value>
+ </class>
+ <class>
+ <value>P1Y</value>
+ <value>P001Y</value>
+ <value>P001Y0M</value>
+ <value>P1Y0M0DT0H0M0.0S</value>
+ </class>
+ <class>
+ <value>P6M</value>
+ </class>
+ <class>
+ <value>PT6M</value>
+ </class>
+ <class>
+ <value>PT1S</value>
+ <value>PT1.0S</value>
+ </class>
+</equiv>
+<lessThan>
+ <value>PT1M</value>
+ <value>PT61S</value>
+</lessThan>
+<lessThan>
+ <value>PT59S</value>
+ <value>PT1M</value>
+</lessThan>
+<incomparable>
+ <value>PT60S</value>
+ <value>PT1M</value>
+</incomparable>
+<lessThan>
+ <value>PT1H</value>
+ <value>PT61M</value>
+</lessThan>
+<lessThan>
+ <value>PT59M</value>
+ <value>PT1H</value>
+</lessThan>
+<incomparable>
+ <value>PT60M</value>
+ <value>PT1H</value>
+</incomparable>
+<lessThan>
+ <value>P1D</value>
+ <value>PT25H</value>
+</lessThan>
+<lessThan>
+ <value>PT23H</value>
+ <value>P1D</value>
+</lessThan>
+<incomparable>
+ <value>P1D</value>
+ <value>PT24H</value>
+</incomparable>
+<lessThan>
+ <value>P1Y</value>
+ <value>P13M</value>
+</lessThan>
+<lessThan>
+ <value>P11M</value>
+ <value>P1Y</value>
+</lessThan>
+<incomparable>
+ <value>P12M</value>
+ <value>P1Y</value>
+</incomparable>
+<lessThan>
+ <value>P364D</value>
+ <value>P1Y</value>
+</lessThan>
+<incomparable>
+ <value>P1Y</value>
+ <value>P365D</value>
+</incomparable>
+<incomparable>
+ <value>P1Y</value>
+ <value>P366D</value>
+</incomparable>
+<lessThan>
+ <value>P1Y</value>
+ <value>P367D</value>
+</lessThan>
+<lessThan>
+ <value>P149D</value>
+ <value>P5M</value>
+</lessThan>
+<incomparable>
+ <value>P150D</value>
+ <value>P5M</value>
+</incomparable>
+<incomparable>
+ <value>P151D</value>
+ <value>P5M</value>
+</incomparable>
+<incomparable>
+ <value>P152D</value>
+ <value>P5M</value>
+</incomparable>
+<incomparable>
+ <value>P153D</value>
+ <value>P5M</value>
+</incomparable>
+<lessThan>
+ <value>P5M</value>
+ <value>P154D</value>
+</lessThan>
+<lessThan>
+ <value>P27D</value>
+ <value>P1M</value>
+</lessThan>
+<incomparable>
+ <value>P28D</value>
+ <value>P1M</value>
+</incomparable>
+<incomparable>
+ <value>P29D</value>
+ <value>P1M</value>
+</incomparable>
+<incomparable>
+ <value>P30D</value>
+ <value>P1M</value>
+</incomparable>
+<incomparable>
+ <value>P31D</value>
+ <value>P1M</value>
+</incomparable>
+<lessThan>
+ <value>P1M</value>
+ <value>P32D</value>
+</lessThan>
+</datatype>
+<datatype name="time">
+<valid>12:45:00</valid>
+<valid>12:45:00Z</valid>
+</datatype>
+<datatype name="date">
+<valid>1886-12-01</valid>
+<valid>1886-12-01Z</valid>
+<lessThan>
+ <value>1066-12-31</value>
+ <value>1900-01-01</value>
+</lessThan>
+<lessThan>
+ <value>1900-01-01</value>
+ <value>1900-01-02</value>
+</lessThan>
+</datatype>
+<datatype name="gYearMonth">
+<valid>1996-12</valid>
+<valid>1996-01</valid>
+<valid>1996-01Z</valid>
+<invalid>1996-00</invalid>
+<equiv>
+<class><value>1996-01</value></class>
+<class>
+ <value>1996-01Z</value>
+ <value>1996-01+00:00</value>
+ <value>1996-01-00:00</value>
+</class>
+<class><value>1996-01+01:00</value></class>
+<class><value>1996-01-01:00</value></class>
+</equiv>
+</datatype>
+<datatype name="gYear">
+<valid>2001</valid>
+<valid>2001Z</valid>
+<lessThan>
+ <value>1999</value>
+ <value>2000</value>
+</lessThan>
+<lessThan>
+ <value>1999+07:00</value>
+ <value>2000+07:00</value>
+</lessThan>
+</datatype>
+<datatype name="gMonthDay">
+<valid>--12-01</valid>
+<valid>--12-01Z</valid>
+<lessThan>
+ <value>--12-01</value>
+ <value>--12-04</value>
+</lessThan>
+<lessThan>
+ <value>--11-17</value>
+ <value>--12-04</value>
+</lessThan>
+</datatype>
+<datatype name="gDay">
+<valid>---20</valid>
+<valid>---20Z</valid>
+<lessThan>
+ <value>---01</value>
+ <value>---31</value>
+</lessThan>
+</datatype>
+<datatype name="gMonth">
+<valid>--12</valid>
+<valid>--01</valid>
+<valid>--01Z</valid>
+<valid> --12 </valid>
+<invalid>---01</invalid>
+<invalid>--00</invalid>
+<invalid>--13</invalid>
+<invalid>- -13</invalid>
+<lessThan>
+ <value>--01</value>
+ <value>--12</value>
+</lessThan>
+<lessThan>
+ <value>--01</value>
+ <value>--02</value>
+</lessThan>
+</datatype>
+<datatype name="boolean">
+<valid>true</valid>
+<valid>false</valid>
+<valid>0</valid>
+<valid>1</valid>
+<invalid>00</invalid>
+<invalid>00</invalid>
+<invalid>01</invalid>
+<equiv>
+<class><value>true</value><value>1</value></class>
+<class><value>false</value><value>0</value></class>
+</equiv>
+</datatype>
+<datatype name="base64Binary">
+<valid>AAAA</valid>
+<valid>abcd efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ KLMN OPQR
+STUV WXYZ 0123 4567 89+/</valid>
+<valid>BA==</valid>
+<valid></valid>
+<valid>BA==</valid>
+<valid>BQ==</valid>
+<valid>Bg==</valid>
+<valid>Bw==</valid>
+<valid>BBA=</valid>
+<valid>BBA=</valid>
+<valid>BBE=</valid>
+<valid>BBI=</valid>
+<valid>BBM=</valid>
+<valid>BBQ=</valid>
+<valid>BBU=</valid>
+<valid>BBY=</valid>
+<valid>BBc=</valid>
+<valid>BBg=</valid>
+<valid>BBk=</valid>
+<valid>BBo=</valid>
+<valid>BBs=</valid>
+<valid>BBw=</valid>
+<valid>BB0=</valid>
+<valid>BB4=</valid>
+<valid>BB8=</valid>
+<invalid>====</invalid>
+<invalid>BB==</invalid>
+<invalid>BBB=</invalid>
+<invalid>B===</invalid>
+<invalid>B</invalid>
+<equiv>
+<class>
+<value>deadbeef</value>
+<value>d&#xA;&#xD;&#x9;e a d
+b eef </value>
+</class>
+<class>
+<value>DEADBEEF</value>
+<value>D&#xA;&#xD;&#x9;E A D
+B EEF </value>
+</class>
+</equiv>
+<length value="0"></length>
+<length value="6">deadbeef</length>
+<length value="1">BA==</length>
+<length value="2">BBA=</length>
+<length value="3">dead</length>
+<length value="4">deadBA==</length>
+</datatype>
+<datatype name="hexBinary">
+<valid>deadbeef</valid>
+<valid></valid>
+<valid>0123456789ABCDEFabcdef</valid>
+<invalid>00 00</invalid>
+<invalid>00.00</invalid>
+<invalid>0G</invalid>
+<equiv>
+ <class>
+ <value>00</value>
+ <value>
+ 00
+ </value>
+ </class>
+ <class>
+ <value>01</value>
+ </class>
+ <class>
+ <value>10</value>
+ </class>
+ <class>
+ <value>0a</value>
+ <value>0A</value>
+ </class>
+</equiv>
+<length value="0"></length>
+<length value="1">00</length>
+<length value="2">0000</length>
+<length value="2"> 0000 </length>
+<length value="2">AAAA</length>
+</datatype>
+<datatype name="float">
+<valid>1.0</valid>
+<valid>1.</valid>
+<valid>.1</valid>
+<invalid>- 1</invalid>
+<invalid>1 .0</invalid>
+<invalid>+INF</invalid>
+<invalid>+NaN</invalid>
+<invalid>-NaN</invalid>
+<equiv>
+<class>
+ <value>0</value>
+ <value>-0</value>
+ <value>+0</value>
+ <value> 0 </value>
+ <value> 0. </value>
+ <value> .0 </value>
+ <value> 0.0 </value>
+ <value> 0e0 </value>
+ <value> 0E0 </value>
+ <value> 0E+0 </value>
+ <value> 0E-0 </value>
+</class>
+<class>
+ <value>1E0</value>
+ <value>0.1E1</value>
+ <value>10E-1</value>
+ <value>+1</value>
+</class>
+<class>
+ <value>-1</value>
+</class>
+<class>
+ <value>INF</value>
+ <value>INF </value>
+</class>
+<class>
+ <value>-INF</value>
+ <value>-INF </value>
+</class>
+<class>
+ <value>NaN</value>
+ <value> NaN </value>
+</class>
+</equiv>
+<lessThan>
+ <value>-INF</value>
+ <value>-1000</value>
+</lessThan>
+<lessThan>
+ <value>1000</value>
+ <value>INF</value>
+</lessThan>
+<lessThan>
+ <value>-1</value>
+ <value>1</value>
+</lessThan>
+<lessThan>
+ <value>0</value>
+ <value>1</value>
+</lessThan>
+<lessThan>
+ <value>-1</value>
+ <value>0</value>
+</lessThan>
+</datatype>
+<datatype name="double">
+<valid>1.0</valid>
+<valid>1.</valid>
+<valid>.1</valid>
+<invalid>- 1</invalid>
+<invalid>1 .0</invalid>
+<invalid>+INF</invalid>
+<invalid>+NaN</invalid>
+<invalid>-NaN</invalid>
+<equiv>
+<class>
+ <value>0</value>
+ <value>-0</value>
+ <value>+0</value>
+ <value> 0 </value>
+ <value> 0. </value>
+ <value> .0 </value>
+ <value> 0.0 </value>
+ <value> 0e0 </value>
+ <value> 0E0 </value>
+ <value> 0E+0 </value>
+ <value> 0E-0 </value>
+</class>
+<class>
+ <value>1E0</value>
+ <value>0.1E1</value>
+ <value>10E-1</value>
+ <value>+1</value>
+</class>
+<class>
+ <value>-1</value>
+</class>
+<class>
+ <value>INF</value>
+ <value>INF </value>
+</class>
+<class>
+ <value>-INF</value>
+ <value>-INF </value>
+</class>
+<class>
+ <value>NaN</value>
+ <value> NaN </value>
+</class>
+</equiv>
+<lessThan>
+ <value>-INF</value>
+ <value>-1000</value>
+</lessThan>
+<lessThan>
+ <value>1000</value>
+ <value>INF</value>
+</lessThan>
+<lessThan>
+ <value>-1</value>
+ <value>1</value>
+</lessThan>
+<lessThan>
+ <value>0</value>
+ <value>1</value>
+</lessThan>
+<lessThan>
+ <value>-1</value>
+ <value>0</value>
+</lessThan>
+</datatype>
+<datatype name="QName">
+<valid>foo</valid>
+<valid xmlns:x="http://www.example.com">x:foo</valid>
+<invalid>y:foo</invalid>
+<equiv xmlns:x="http://www.example.com"
+ xmlns:y="http://www.example.com/"
+ xmlns:z="http://www.example.com">
+<class>
+ <value>foo</value>
+ <value> foo</value>
+</class>
+<class>
+ <value>x:foo</value>
+ <value> x:foo </value>
+ <value>z:foo</value>
+</class>
+<class>
+ <value>x:bar</value>
+ <value>z:bar</value>
+</class>
+<class>
+ <value>y:foo</value>
+</class>
+<class>
+ <value>y:bar</value>
+</class>
+</equiv>
+</datatype>
+<datatype name="NOTATION">
+<valid>foo</valid>
+<valid xmlns:x="http://www.example.com">x:foo</valid>
+<invalid>y:foo</invalid>
+</datatype>
+<datatype name="decimal">
+<valid>1.0</valid>
+<valid>1.</valid>
+<valid>.1</valid>
+<valid>+1.0</valid>
+<valid>-1.0</valid>
+<valid> 1 </valid>
+<valid>99999999999999999999999999999999999999999999999999999999999999999</valid>
+<valid>-99999999999999999999999999999999999999999999999999999999999999999</valid>
+<invalid>junk</invalid>
+<invalid>--1</invalid>
+<invalid>++1</invalid>
+<invalid>+-1</invalid>
+<invalid>1.2.</invalid>
+<invalid>..1</invalid>
+<invalid>1..</invalid>
+<invalid>1 .2</invalid>
+<invalid>1+</invalid>
+<invalid>+ 1</invalid>
+<lessThan>
+ <value>0</value>
+ <value>1</value>
+</lessThan>
+</datatype>
+<datatype name="nonPositiveInteger">
+<valid>-1</valid>
+<valid>0</valid>
+<valid>-0</valid>
+<invalid>1</invalid>
+</datatype>
+<datatype name="nonNegativeInteger">
+<valid>1</valid>
+<valid>0</valid>
+<valid>+1</valid>
+<valid>+0</valid>
+<invalid>-1</invalid>
+</datatype>
+<datatype name="positiveInteger">
+<valid>+1</valid>
+<valid>1</valid>
+<invalid>0</invalid>
+<invalid>-1</invalid>
+</datatype>
+<datatype name="negativeInteger">
+<valid>-1</valid>
+<invalid>+1</invalid>
+<invalid>0</invalid>
+</datatype>
+<datatype name="long">
+<valid>1</valid>
+<valid>+1</valid>
+<valid>0</valid>
+<valid> 0 </valid>
+<invalid>1 2</invalid>
+<invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid>
+<valid>9223372036854775807</valid>
+<valid>-9223372036854775808</valid>
+<invalid>9223372036854775808</invalid>
+<invalid>-9223372036854775809</invalid>
+<invalid/>
+</datatype>
+<datatype name="int">
+<valid>1</valid>
+<valid>01</valid>
+<valid> 1 </valid>
+<valid>2147483647</valid>
+<valid>-2147483648</valid>
+<invalid>2147483648</invalid>
+<invalid>-2147483649</invalid>
+<invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid>
+<equiv>
+<class>
+ <value>1</value>
+ <value>+1</value>
+ <value> 1 </value>
+ <value>001</value>
+</class>
+<class>
+ <value>-1</value>
+ <value> -1 </value>
+ <value>-001</value>
+</class>
+</equiv>
+</datatype>
+<datatype name="short">
+<valid>1</valid>
+<valid>32767</valid>
+<valid>-32768</valid>
+<invalid>32768</invalid>
+<invalid>-32769</invalid>
+<invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid>
+<equiv>
+<class>
+ <value>1</value>
+ <value>+1</value>
+ <value> 1 </value>
+ <value>001</value>
+</class>
+<class>
+ <value>-1</value>
+ <value> -1 </value>
+ <value>-001</value>
+</class>
+</equiv>
+</datatype>
+<datatype name="byte">
+<valid>1</valid>
+<valid>127</valid>
+<valid>-128</valid>
+<invalid>128</invalid>
+<invalid>-129</invalid>
+</datatype>
+<datatype name="unsignedLong">
+<valid>1</valid>
+<valid>+1</valid>
+<invalid>-1</invalid>
+<valid>0</valid>
+<valid>18446744073709551615</valid>
+<invalid>18446744073709551616</invalid>
+<invalid>-1</invalid>
+</datatype>
+<datatype name="unsignedInt">
+<valid>1</valid>
+<valid>+1</valid>
+<valid>0</valid>
+<valid>4294967295</valid>
+<invalid>4294967296</invalid>
+<invalid>-1</invalid>
+</datatype>
+<datatype name="unsignedShort">
+<valid>1</valid>
+<valid>+1</valid>
+<valid>0</valid>
+<valid>65535</valid>
+<invalid>65536</invalid>
+<invalid>-1</invalid>
+</datatype>
+<datatype name="unsignedByte">
+<valid>1</valid>
+<valid>+1</valid>
+<valid>0</valid>
+<valid>255</valid>
+<invalid>256</invalid>
+<invalid>-1</invalid>
+</datatype>
+<datatype name="string">
+<valid>any thing at all!</valid>
+</datatype>
+<datatype name="normalizedString">
+<valid>any thing at all!</valid>
+</datatype>
+<datatype name="token">
+<valid>any thing at all!</valid>
+<equiv>
+<class>
+ <value/>
+ <value> </value>
+ <value>&#x9;&#xA;&#xD;&#x20;</value>
+</class>
+<class>
+ <value>x&#x20;</value>
+ <value>x&#xA;</value>
+ <value>x&#xD;</value>
+ <value>x&#x9;</value>
+ <value>&#x20;x</value>
+ <value>&#xA;x</value>
+ <value>&#xD;x</value>
+ <value>&#x9;x</value>
+ <value>&#x9;&#xA;&#xD;&#x20;x&#x9;&#xA;&#xD;&#x20;</value>
+</class>
+<class>
+ <value>x y&#x20;</value>
+ <value>x y&#xA;</value>
+ <value>x y&#xD;</value>
+ <value>x y&#x9;</value>
+ <value>x&#x20;y</value>
+ <value>x&#xA;y</value>
+ <value>x&#xD;y</value>
+ <value>x&#x9;y</value>
+ <value>&#x20;x y</value>
+ <value>&#xA;x y</value>
+ <value>&#xD;x y</value>
+ <value>&#x9;x y</value>
+ <value>&#x9;&#xA;&#xD;&#x20;x&#x9;&#xA;&#xD;&#x20;y&#x9;&#xA;&#xD;&#x20;</value>
+</class>
+</equiv>
+<length value="0"></length>
+<length value="1">x</length>
+<length value="1"> x </length>
+<length value="1">&#x10800;</length>
+</datatype>
+<datatype name="language">
+<valid>en</valid>
+<valid>en-UK</valid>
+<valid>i-cherokee</valid>
+<valid>x-klingon</valid>
+<valid>en-uk-scotland</valid>
+<invalid>en.UK</invalid>
+</datatype>
+<datatype name="Name">
+<valid>foo</valid>
+<valid>_0123456789</valid>
+<invalid>.</invalid>
+<valid>:</valid>
+<invalid>-</invalid>
+<invalid>1234</invalid>
+<valid> foo </valid>
+</datatype>
+<datatype name="NCName">
+<valid>foo</valid>
+<invalid>foo:bar</invalid>
+<invalid>0foo</invalid>
+<equiv>
+<class><value>foo</value><value> foo </value></class>
+<class><value>FOO</value><value> FOO </value></class>
+</equiv>
+</datatype>
+<datatype name="NMTOKEN">
+<valid>foo</valid>
+<valid>_</valid>
+<valid>.</valid>
+<valid>:</valid>
+<valid>-</valid>
+<valid>1234</valid>
+<valid> foo </valid>
+<length value="3"> foo </length>
+<length value="2">fo</length>
+<length value="1">f</length>
+</datatype>
+<datatype name="NMTOKENS">
+<valid>foo bar</valid>
+<invalid/>
+<valid>1 2 3 4</valid>
+</datatype>
+<datatype name="ID">
+<valid>foobar</valid>
+<invalid>foo:bar</invalid>
+<invalid>foo bar</invalid>
+</datatype>
+<datatype name="ENTITY">
+<invalid/>
+<invalid>foo</invalid>
+<valid internalSubset="&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg>"
+>foo</valid>
+</datatype>
+<datatype name="ENTITIES">
+<invalid></invalid>
+<invalid>foo</invalid>
+<valid internalSubset="&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg>
+&#xA;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg>
+"
+> foo bar </valid>
+</datatype>
+</xsdtest>
diff --git a/test/xsdtest/xsdtest.xsl b/test/xsdtest/xsdtest.xsl
new file mode 100644
index 0000000..d57adf2
--- /dev/null
+++ b/test/xsdtest/xsdtest.xsl
@@ -0,0 +1,238 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="xsdtest datatype equiv class"/>
+
+<xsl:output indent="yes" encoding="utf-8"/>
+
+<xsl:template match="xsdtest">
+ <testSuite>
+ <xsl:apply-templates/>
+ </testSuite>
+</xsl:template>
+
+<xsl:template match="datatype">
+<testSuite>
+<documentation>Datatype <xsl:value-of select="@name"/></documentation>
+<testCase>
+<requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{@name}">
+ <xsl:for-each select="param">
+ <param name="{@name}"><xsl:value-of select="."/></param>
+ </xsl:for-each>
+ </data>
+</element>
+</correct>
+<xsl:apply-templates select="valid|invalid"/>
+</testCase>
+<xsl:apply-templates select="equiv/class|length|lessThan|incomparable"/>
+</testSuite>
+</xsl:template>
+
+<xsl:template match="valid">
+ <xsl:call-template name="valid"/>
+</xsl:template>
+
+<xsl:template match="invalid">
+ <xsl:call-template name="invalid"/>
+</xsl:template>
+
+<xsl:template name="valid">
+ <valid>
+ <xsl:apply-templates select="@internalSubset"/>
+ <doc>
+ <xsl:copy-of select="namespace::*"/>
+ <xsl:value-of select="."/>
+ </doc>
+ </valid>
+</xsl:template>
+
+<xsl:template name="invalid">
+ <invalid>
+ <xsl:apply-templates select="@internalSubset"/>
+ <doc>
+ <xsl:copy-of select="namespace::*"/>
+ <xsl:value-of select="."/>
+ </doc>
+ </invalid>
+</xsl:template>
+
+<xsl:template match="@internalSubset">
+ <xsl:param name="doc" select="'doc'"/>
+ <xsl:attribute name="dtd">
+ <xsl:text>
+&lt;!DOCTYPE </xsl:text>
+ <xsl:value-of select="$doc"/>
+ <xsl:text> [
+</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>
+]></xsl:text>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="class">
+<testCase>
+<correct>
+ <xsl:for-each select="value[1]">
+ <xsl:apply-templates select="@internalSubset">
+ <xsl:with-param name="doc">element</xsl:with-param>
+ </xsl:apply-templates>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value>
+ <xsl:copy-of select="namespace::*"/>
+ <xsl:attribute name="type"><xsl:value-of select="../../../@name"/></xsl:attribute>
+ <xsl:value-of select="."/>
+ </value>
+ </element>
+ </xsl:for-each>
+</correct>
+<xsl:for-each select="value[position() != 1]">
+ <xsl:call-template name="valid"/>
+</xsl:for-each>
+<xsl:for-each select="preceding-sibling::class/value|following-sibling::class/value">
+ <xsl:call-template name="invalid"/>
+</xsl:for-each>
+</testCase>
+</xsl:template>
+
+<xsl:template match="length">
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="length"><xsl:value-of select="@value"/></param>
+ </data>
+</element>
+</correct>
+<xsl:call-template name="valid"/>
+</testCase>
+
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="length"><xsl:value-of select="@value + 1"/></param>
+ </data>
+</element>
+</correct>
+<xsl:call-template name="invalid"/>
+</testCase>
+
+<xsl:if test="@value != 0">
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="length"><xsl:value-of select="@value - 1"/></param>
+ </data>
+ </element>
+ </correct>
+ <xsl:call-template name="invalid"/>
+ </testCase>
+</xsl:if>
+
+</xsl:template>
+
+<xsl:template match="lessThan">
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[1]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<valid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</valid>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[2]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+<invalid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</invalid>
+</testCase>
+</xsl:template>
+
+<xsl:template match="incomparable">
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[1]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<invalid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</invalid>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[2]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+<invalid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</invalid>
+</testCase>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/test/xsdtest/xsdtestsuite.xml b/test/xsdtest/xsdtestsuite.xml
new file mode 100644
index 0000000..1c91cb9
--- /dev/null
+++ b/test/xsdtest/xsdtestsuite.xml
@@ -0,0 +1,5286 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testSuite>
+ <testSuite>
+ <documentation>Datatype dateTime</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="dateTime"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001-12-01T19:45:00</doc>
+ </valid>
+ <valid>
+ <doc>2001-12-01T19:45:00Z</doc>
+ </valid>
+ <valid>
+ <doc>2001-12-01T19:45:00-11:59</doc>
+ </valid>
+ <valid>
+ <doc>0001-01-12T00:00:00+12:00</doc>
+ </valid>
+ <invalid>
+ <doc>2001-12-1T19:45:00+24:00</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-1T19:45:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="dateTime">2001-12-01T19:45:00</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001-12-01T19:45:00.00</doc>
+ </valid>
+ <invalid>
+ <doc>2001-12-01T19:45:00Z</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-01T19:45:00.00Z</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-01T20:45:00+01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="dateTime">2001-12-01T19:45:00Z</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001-12-01T19:45:00.00Z</doc>
+ </valid>
+ <valid>
+ <doc>2001-12-01T20:45:00+01:00</doc>
+ </valid>
+ <invalid>
+ <doc>2001-12-01T19:45:00</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-01T19:45:00.00</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype anyURI</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="anyURI"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foobar</doc>
+ </valid>
+ <valid>
+ <doc>http://www.example.com</doc>
+ </valid>
+ <valid>
+ <doc>http://ji%6d@www.example.com</doc>
+ </valid>
+ <valid>
+ <doc>http://www.example.co%6d</doc>
+ </valid>
+ <valid>
+ <doc>nosuchscheme:stuff</doc>
+ </valid>
+ <invalid>
+ <doc>foo$bar:stuff</doc>
+ </invalid>
+ <invalid>
+ <doc>f%oobar</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype integer</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="integer"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>10</doc>
+ </valid>
+ <valid>
+ <doc>01</doc>
+ </valid>
+ <valid>
+ <doc>0123456789</doc>
+ </valid>
+ <valid>
+ <doc>+10</doc>
+ </valid>
+ <valid>
+ <doc>-10</doc>
+ </valid>
+ <invalid>
+ <doc>1.0</doc>
+ </invalid>
+ <invalid>
+ <doc>.1</doc>
+ </invalid>
+ <valid>
+ <doc>9999999999999999999999999999999</doc>
+ </valid>
+ <invalid>
+ <doc>1.</doc>
+ </invalid>
+ <invalid>
+ <doc>0.</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="integer">0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <valid>
+ <doc>00</doc>
+ </valid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>+10</doc>
+ </invalid>
+ <invalid>
+ <doc>+0010</doc>
+ </invalid>
+ <invalid>
+ <doc>010</doc>
+ </invalid>
+ <invalid>
+ <doc>-10</doc>
+ </invalid>
+ <invalid>
+ <doc>-0010</doc>
+ </invalid>
+ <invalid>
+ <doc>-010</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="integer">10</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+10</doc>
+ </valid>
+ <valid>
+ <doc>+0010</doc>
+ </valid>
+ <valid>
+ <doc>010</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>-10</doc>
+ </invalid>
+ <invalid>
+ <doc>-0010</doc>
+ </invalid>
+ <invalid>
+ <doc>-010</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="integer">-10</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-0010</doc>
+ </valid>
+ <valid>
+ <doc>-010</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>+10</doc>
+ </invalid>
+ <invalid>
+ <doc>+0010</doc>
+ </invalid>
+ <invalid>
+ <doc>010</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype duration</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1Y</doc>
+ </valid>
+ <valid>
+ <doc>P1Y0M2DT17H5M12S</doc>
+ </valid>
+ <valid>
+ <doc>-P1Y</doc>
+ </valid>
+ <valid>
+ <doc>P60D</doc>
+ </valid>
+ <valid>
+ <doc>PT24H</doc>
+ </valid>
+ <valid>
+ <doc>PT1.2S</doc>
+ </valid>
+ <invalid>
+ <doc>P24h</doc>
+ </invalid>
+ <invalid>
+ <doc>P24H</doc>
+ </invalid>
+ <invalid>
+ <doc>P1YT</doc>
+ </invalid>
+ <invalid>
+ <doc>P</doc>
+ </invalid>
+ <invalid>
+ <doc>-P</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">-P6M</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">P0Y</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-P0Y</doc>
+ </valid>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">P1Y</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>P001Y</doc>
+ </valid>
+ <valid>
+ <doc>P001Y0M</doc>
+ </valid>
+ <valid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </valid>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">P6M</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">PT6M</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">PT1S</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT1.0S</doc>
+ </valid>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT61S</doc>
+ </valid>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT61S</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT61S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT59S</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT1M</doc>
+ </valid>
+ <invalid>
+ <doc>PT59S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT59S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT60S</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT60S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT60S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1H</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT61M</doc>
+ </valid>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT61M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ <invalid>
+ <doc>PT61M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT59M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT1H</doc>
+ </valid>
+ <invalid>
+ <doc>PT59M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT59M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT60M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ <invalid>
+ <doc>PT60M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT60M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT25H</doc>
+ </valid>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT25H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ <invalid>
+ <doc>PT25H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT23H</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1D</doc>
+ </valid>
+ <invalid>
+ <doc>PT23H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT23H</doc>
+ </invalid>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT24H</doc>
+ </invalid>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT24H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ <invalid>
+ <doc>PT24H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P13M</doc>
+ </valid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P13M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P13M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P11M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1Y</doc>
+ </valid>
+ <invalid>
+ <doc>P11M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P11M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P12M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P12M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P12M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P364D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1Y</doc>
+ </valid>
+ <invalid>
+ <doc>P364D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P364D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P365D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P365D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P365D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P366D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P366D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P366D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P367D</doc>
+ </valid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P367D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P367D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P149D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P5M</doc>
+ </valid>
+ <invalid>
+ <doc>P149D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P149D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P150D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P150D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P150D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P151D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P151D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P151D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P152D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P152D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P152D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P153D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P153D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P153D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P154D</doc>
+ </valid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P154D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P154D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P27D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1M</doc>
+ </valid>
+ <invalid>
+ <doc>P27D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P27D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P28D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P28D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P28D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P29D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P29D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P29D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P30D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P30D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P30D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P31D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P31D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P31D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P32D</doc>
+ </valid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P32D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P32D</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype time</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="time"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>12:45:00</doc>
+ </valid>
+ <valid>
+ <doc>12:45:00Z</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype date</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1886-12-01</doc>
+ </valid>
+ <valid>
+ <doc>1886-12-01Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1066-12-31</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1900-01-01</doc>
+ </valid>
+ <invalid>
+ <doc>1066-12-31</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1900-01-01</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1066-12-31</doc>
+ </invalid>
+ <invalid>
+ <doc>1900-01-01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1900-01-01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1900-01-02</doc>
+ </valid>
+ <invalid>
+ <doc>1900-01-01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1900-01-02</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1900-01-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1900-01-02</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gYearMonth</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYearMonth"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1996-12</doc>
+ </valid>
+ <valid>
+ <doc>1996-01</doc>
+ </valid>
+ <valid>
+ <doc>1996-01Z</doc>
+ </valid>
+ <invalid>
+ <doc>1996-00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1996-01Z</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+01:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01Z</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>1996-01+00:00</doc>
+ </valid>
+ <valid>
+ <doc>1996-01-00:00</doc>
+ </valid>
+ <invalid>
+ <doc>1996-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+01:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01+01:00</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1996-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01Z</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01-01:00</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1996-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01Z</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+01:00</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gYear</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001</doc>
+ </valid>
+ <valid>
+ <doc>2001Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">1999</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>2000</doc>
+ </valid>
+ <invalid>
+ <doc>1999</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">2000</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1999</doc>
+ </invalid>
+ <invalid>
+ <doc>2000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">1999+07:00</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>2000+07:00</doc>
+ </valid>
+ <invalid>
+ <doc>1999+07:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">2000+07:00</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1999+07:00</doc>
+ </invalid>
+ <invalid>
+ <doc>2000+07:00</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gMonthDay</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12-01</doc>
+ </valid>
+ <valid>
+ <doc>--12-01Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--12-01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12-04</doc>
+ </valid>
+ <invalid>
+ <doc>--12-01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--12-04</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--12-01</doc>
+ </invalid>
+ <invalid>
+ <doc>--12-04</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--11-17</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12-04</doc>
+ </valid>
+ <invalid>
+ <doc>--11-17</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--12-04</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--11-17</doc>
+ </invalid>
+ <invalid>
+ <doc>--12-04</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gDay</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gDay"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>---20</doc>
+ </valid>
+ <valid>
+ <doc>---20Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gDay">
+ <param name="minExclusive">---01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>---31</doc>
+ </valid>
+ <invalid>
+ <doc>---01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gDay">
+ <param name="minExclusive">---31</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>---01</doc>
+ </invalid>
+ <invalid>
+ <doc>---31</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gMonth</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12</doc>
+ </valid>
+ <valid>
+ <doc>--01</doc>
+ </valid>
+ <valid>
+ <doc>--01Z</doc>
+ </valid>
+ <valid>
+ <doc> --12 </doc>
+ </valid>
+ <invalid>
+ <doc>---01</doc>
+ </invalid>
+ <invalid>
+ <doc>--00</doc>
+ </invalid>
+ <invalid>
+ <doc>--13</doc>
+ </invalid>
+ <invalid>
+ <doc>- -13</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12</doc>
+ </valid>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--12</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ <invalid>
+ <doc>--12</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--02</doc>
+ </valid>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--02</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ <invalid>
+ <doc>--02</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype boolean</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="boolean"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>true</doc>
+ </valid>
+ <valid>
+ <doc>false</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="boolean">true</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>false</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="boolean">false</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <invalid>
+ <doc>true</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype base64Binary</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>AAAA</doc>
+ </valid>
+ <valid>
+ <doc>abcd efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ KLMN OPQR
+STUV WXYZ 0123 4567 89+/</doc>
+ </valid>
+ <valid>
+ <doc>BA==</doc>
+ </valid>
+ <valid>
+ <doc></doc>
+ </valid>
+ <valid>
+ <doc>BA==</doc>
+ </valid>
+ <valid>
+ <doc>BQ==</doc>
+ </valid>
+ <valid>
+ <doc>Bg==</doc>
+ </valid>
+ <valid>
+ <doc>Bw==</doc>
+ </valid>
+ <valid>
+ <doc>BBA=</doc>
+ </valid>
+ <valid>
+ <doc>BBA=</doc>
+ </valid>
+ <valid>
+ <doc>BBE=</doc>
+ </valid>
+ <valid>
+ <doc>BBI=</doc>
+ </valid>
+ <valid>
+ <doc>BBM=</doc>
+ </valid>
+ <valid>
+ <doc>BBQ=</doc>
+ </valid>
+ <valid>
+ <doc>BBU=</doc>
+ </valid>
+ <valid>
+ <doc>BBY=</doc>
+ </valid>
+ <valid>
+ <doc>BBc=</doc>
+ </valid>
+ <valid>
+ <doc>BBg=</doc>
+ </valid>
+ <valid>
+ <doc>BBk=</doc>
+ </valid>
+ <valid>
+ <doc>BBo=</doc>
+ </valid>
+ <valid>
+ <doc>BBs=</doc>
+ </valid>
+ <valid>
+ <doc>BBw=</doc>
+ </valid>
+ <valid>
+ <doc>BB0=</doc>
+ </valid>
+ <valid>
+ <doc>BB4=</doc>
+ </valid>
+ <valid>
+ <doc>BB8=</doc>
+ </valid>
+ <invalid>
+ <doc>====</doc>
+ </invalid>
+ <invalid>
+ <doc>BB==</doc>
+ </invalid>
+ <invalid>
+ <doc>BBB=</doc>
+ </invalid>
+ <invalid>
+ <doc>B===</doc>
+ </invalid>
+ <invalid>
+ <doc>B</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="base64Binary">deadbeef</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>d
+&#13; e a d
+b eef </doc>
+ </valid>
+ <invalid>
+ <doc>DEADBEEF</doc>
+ </invalid>
+ <invalid>
+ <doc>D
+&#13; E A D
+B EEF </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="base64Binary">DEADBEEF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>D
+&#13; E A D
+B EEF </doc>
+ </valid>
+ <invalid>
+ <doc>deadbeef</doc>
+ </invalid>
+ <invalid>
+ <doc>d
+&#13; e a d
+b eef </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc></doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">6</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>deadbeef</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">7</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadbeef</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">5</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadbeef</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>BA==</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BA==</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BA==</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>BBA=</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BBA=</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BBA=</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>dead</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">4</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>dead</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>dead</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">4</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>deadBA==</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">5</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadBA==</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadBA==</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype hexBinary</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>deadbeef</doc>
+ </valid>
+ <valid>
+ <doc></doc>
+ </valid>
+ <valid>
+ <doc>0123456789ABCDEFabcdef</doc>
+ </valid>
+ <invalid>
+ <doc>00 00</doc>
+ </invalid>
+ <invalid>
+ <doc>00.00</doc>
+ </invalid>
+ <invalid>
+ <doc>0G</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">00</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>
+ 00
+ </doc>
+ </valid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>0a</doc>
+ </invalid>
+ <invalid>
+ <doc>0A</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">01</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>
+ 00
+ </doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>0a</doc>
+ </invalid>
+ <invalid>
+ <doc>0A</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">10</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>
+ 00
+ </doc>
+ </invalid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ <invalid>
+ <doc>0a</doc>
+ </invalid>
+ <invalid>
+ <doc>0A</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">0a</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0A</doc>
+ </valid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>
+ 00
+ </doc>
+ </invalid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc></doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>00</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>0000</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc> 0000 </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> 0000 </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> 0000 </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>AAAA</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>AAAA</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>AAAA</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype float</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1.0</doc>
+ </valid>
+ <valid>
+ <doc>1.</doc>
+ </valid>
+ <valid>
+ <doc>.1</doc>
+ </valid>
+ <invalid>
+ <doc>- 1</doc>
+ </invalid>
+ <invalid>
+ <doc>1 .0</doc>
+ </invalid>
+ <invalid>
+ <doc>+INF</doc>
+ </invalid>
+ <invalid>
+ <doc>+NaN</doc>
+ </invalid>
+ <invalid>
+ <doc>-NaN</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <valid>
+ <doc> 0 </doc>
+ </valid>
+ <valid>
+ <doc> 0. </doc>
+ </valid>
+ <valid>
+ <doc> .0 </doc>
+ </valid>
+ <valid>
+ <doc> 0.0 </doc>
+ </valid>
+ <valid>
+ <doc> 0e0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E+0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E-0 </doc>
+ </valid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">1E0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0.1E1</doc>
+ </valid>
+ <valid>
+ <doc>10E-1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">-1</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">-INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">NaN</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> NaN </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-INF</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1000</doc>
+ </valid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-1000</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">1000</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF</doc>
+ </valid>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">INF</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype double</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1.0</doc>
+ </valid>
+ <valid>
+ <doc>1.</doc>
+ </valid>
+ <valid>
+ <doc>.1</doc>
+ </valid>
+ <invalid>
+ <doc>- 1</doc>
+ </invalid>
+ <invalid>
+ <doc>1 .0</doc>
+ </invalid>
+ <invalid>
+ <doc>+INF</doc>
+ </invalid>
+ <invalid>
+ <doc>+NaN</doc>
+ </invalid>
+ <invalid>
+ <doc>-NaN</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <valid>
+ <doc> 0 </doc>
+ </valid>
+ <valid>
+ <doc> 0. </doc>
+ </valid>
+ <valid>
+ <doc> .0 </doc>
+ </valid>
+ <valid>
+ <doc> 0.0 </doc>
+ </valid>
+ <valid>
+ <doc> 0e0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E+0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E-0 </doc>
+ </valid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">1E0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0.1E1</doc>
+ </valid>
+ <valid>
+ <doc>10E-1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">-1</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">-INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">NaN</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> NaN </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-INF</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1000</doc>
+ </valid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-1000</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">1000</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF</doc>
+ </valid>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">INF</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype QName</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="QName"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc xmlns:x="http://www.example.com">x:foo</doc>
+ </valid>
+ <invalid>
+ <doc>y:foo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">foo</value>
+ </element>
+ </correct>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </valid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">x:foo</value>
+ </element>
+ </correct>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </valid>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </valid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">x:bar</value>
+ </element>
+ </correct>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </valid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">y:foo</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">y:bar</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NOTATION</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NOTATION"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc xmlns:x="http://www.example.com">x:foo</doc>
+ </valid>
+ <invalid>
+ <doc>y:foo</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype decimal</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="decimal"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1.0</doc>
+ </valid>
+ <valid>
+ <doc>1.</doc>
+ </valid>
+ <valid>
+ <doc>.1</doc>
+ </valid>
+ <valid>
+ <doc>+1.0</doc>
+ </valid>
+ <valid>
+ <doc>-1.0</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>99999999999999999999999999999999999999999999999999999999999999999</doc>
+ </valid>
+ <valid>
+ <doc>-99999999999999999999999999999999999999999999999999999999999999999</doc>
+ </valid>
+ <invalid>
+ <doc>junk</doc>
+ </invalid>
+ <invalid>
+ <doc>--1</doc>
+ </invalid>
+ <invalid>
+ <doc>++1</doc>
+ </invalid>
+ <invalid>
+ <doc>+-1</doc>
+ </invalid>
+ <invalid>
+ <doc>1.2.</doc>
+ </invalid>
+ <invalid>
+ <doc>..1</doc>
+ </invalid>
+ <invalid>
+ <doc>1..</doc>
+ </invalid>
+ <invalid>
+ <doc>1 .2</doc>
+ </invalid>
+ <invalid>
+ <doc>1+</doc>
+ </invalid>
+ <invalid>
+ <doc>+ 1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="decimal">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="decimal">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype nonPositiveInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="nonPositiveInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype nonNegativeInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="nonNegativeInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype positiveInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="positiveInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype negativeInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="negativeInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1</doc>
+ </valid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype long</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="long"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc> 0 </doc>
+ </valid>
+ <invalid>
+ <doc>1 2</doc>
+ </invalid>
+ <invalid>
+ <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
+ </invalid>
+ <valid>
+ <doc>9223372036854775807</doc>
+ </valid>
+ <valid>
+ <doc>-9223372036854775808</doc>
+ </valid>
+ <invalid>
+ <doc>9223372036854775808</doc>
+ </invalid>
+ <invalid>
+ <doc>-9223372036854775809</doc>
+ </invalid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype int</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="int"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>01</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>2147483647</doc>
+ </valid>
+ <valid>
+ <doc>-2147483648</doc>
+ </valid>
+ <invalid>
+ <doc>2147483648</doc>
+ </invalid>
+ <invalid>
+ <doc>-2147483649</doc>
+ </invalid>
+ <invalid>
+ <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="int">1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>001</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc> -1 </doc>
+ </invalid>
+ <invalid>
+ <doc>-001</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="int">-1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> -1 </doc>
+ </valid>
+ <valid>
+ <doc>-001</doc>
+ </valid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc> 1 </doc>
+ </invalid>
+ <invalid>
+ <doc>001</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype short</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="short"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>32767</doc>
+ </valid>
+ <valid>
+ <doc>-32768</doc>
+ </valid>
+ <invalid>
+ <doc>32768</doc>
+ </invalid>
+ <invalid>
+ <doc>-32769</doc>
+ </invalid>
+ <invalid>
+ <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="short">1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>001</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc> -1 </doc>
+ </invalid>
+ <invalid>
+ <doc>-001</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="short">-1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> -1 </doc>
+ </valid>
+ <valid>
+ <doc>-001</doc>
+ </valid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc> 1 </doc>
+ </invalid>
+ <invalid>
+ <doc>001</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype byte</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="byte"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>127</doc>
+ </valid>
+ <valid>
+ <doc>-128</doc>
+ </valid>
+ <invalid>
+ <doc>128</doc>
+ </invalid>
+ <invalid>
+ <doc>-129</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedLong</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedLong"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>18446744073709551615</doc>
+ </valid>
+ <invalid>
+ <doc>18446744073709551616</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedInt</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedInt"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>4294967295</doc>
+ </valid>
+ <invalid>
+ <doc>4294967296</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedShort</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedShort"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>65535</doc>
+ </valid>
+ <invalid>
+ <doc>65536</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedByte</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedByte"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>255</doc>
+ </valid>
+ <invalid>
+ <doc>256</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype string</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="string"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>any thing at all!</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype normalizedString</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="normalizedString"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>any thing at all!</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype token</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>any thing at all!</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="token"></value>
+ </element>
+ </correct>
+ <valid>
+ <doc> </doc>
+ </valid>
+ <valid>
+ <doc>
+&#13; </doc>
+ </valid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc>x
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x</doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; </doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x y&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc>x
+y</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;y</doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x y</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; y
+&#13; </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="token">x </value>
+ </element>
+ </correct>
+ <valid>
+ <doc>x
+</doc>
+ </valid>
+ <valid>
+ <doc>x&#13;</doc>
+ </valid>
+ <valid>
+ <doc>x </doc>
+ </valid>
+ <valid>
+ <doc> x</doc>
+ </valid>
+ <valid>
+ <doc>
+x</doc>
+ </valid>
+ <valid>
+ <doc>&#13;x</doc>
+ </valid>
+ <valid>
+ <doc> x</doc>
+ </valid>
+ <valid>
+ <doc>
+&#13; x
+&#13; </doc>
+ </valid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc> </doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; </doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x y&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc>x
+y</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;y</doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x y</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; y
+&#13; </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="token">x y </value>
+ </element>
+ </correct>
+ <valid>
+ <doc>x y
+</doc>
+ </valid>
+ <valid>
+ <doc>x y&#13;</doc>
+ </valid>
+ <valid>
+ <doc>x y </doc>
+ </valid>
+ <valid>
+ <doc>x y</doc>
+ </valid>
+ <valid>
+ <doc>x
+y</doc>
+ </valid>
+ <valid>
+ <doc>x&#13;y</doc>
+ </valid>
+ <valid>
+ <doc>x y</doc>
+ </valid>
+ <valid>
+ <doc> x y</doc>
+ </valid>
+ <valid>
+ <doc>
+x y</doc>
+ </valid>
+ <valid>
+ <doc>&#13;x y</doc>
+ </valid>
+ <valid>
+ <doc> x y</doc>
+ </valid>
+ <valid>
+ <doc>
+&#13; x
+&#13; y
+&#13; </doc>
+ </valid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc> </doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; </doc>
+ </invalid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc>x
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x</doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc></doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>x</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>x</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>x</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc> x </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> x </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> x </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>ð €</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>ð €</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>ð €</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype language</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="language"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>en</doc>
+ </valid>
+ <valid>
+ <doc>en-UK</doc>
+ </valid>
+ <valid>
+ <doc>i-cherokee</doc>
+ </valid>
+ <valid>
+ <doc>x-klingon</doc>
+ </valid>
+ <valid>
+ <doc>en-uk-scotland</doc>
+ </valid>
+ <invalid>
+ <doc>en.UK</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype Name</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="Name"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc>_0123456789</doc>
+ </valid>
+ <invalid>
+ <doc>.</doc>
+ </invalid>
+ <valid>
+ <doc>:</doc>
+ </valid>
+ <invalid>
+ <doc>-</doc>
+ </invalid>
+ <invalid>
+ <doc>1234</doc>
+ </invalid>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NCName</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NCName"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <invalid>
+ <doc>foo:bar</doc>
+ </invalid>
+ <invalid>
+ <doc>0foo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="NCName">foo</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ <invalid>
+ <doc>FOO</doc>
+ </invalid>
+ <invalid>
+ <doc> FOO </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="NCName">FOO</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> FOO </doc>
+ </valid>
+ <invalid>
+ <doc>foo</doc>
+ </invalid>
+ <invalid>
+ <doc> foo </doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NMTOKEN</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc>_</doc>
+ </valid>
+ <valid>
+ <doc>.</doc>
+ </valid>
+ <valid>
+ <doc>:</doc>
+ </valid>
+ <valid>
+ <doc>-</doc>
+ </valid>
+ <valid>
+ <doc>1234</doc>
+ </valid>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">4</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> foo </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> foo </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>fo</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>fo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>fo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>f</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>f</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>f</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NMTOKENS</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKENS"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo bar</doc>
+ </valid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <valid>
+ <doc>1 2 3 4</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype ID</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ID"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foobar</doc>
+ </valid>
+ <invalid>
+ <doc>foo:bar</doc>
+ </invalid>
+ <invalid>
+ <doc>foo bar</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype ENTITY</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ENTITY"/>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc>foo</doc>
+ </invalid>
+ <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+ <doc>foo</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype ENTITIES</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ENTITIES"/>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc>foo</doc>
+ </invalid>
+ <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
+ <doc> foo bar </doc>
+ </valid>
+ </testCase>
+ </testSuite>
+</testSuite>
diff --git a/testAutomata.c b/testAutomata.c
index 2f575ce..6c4de90 100644
--- a/testAutomata.c
+++ b/testAutomata.c
@@ -70,10 +70,10 @@ testRegexpFile(const char *filename) {
continue;
len = strlen(expr);
len--;
- while ((len >= 0) &&
+ while ((len >= 0) &&
((expr[len] == '\n') || (expr[len] == '\t') ||
(expr[len] == '\r') || (expr[len] == ' '))) len--;
- expr[len + 1] = 0;
+ expr[len + 1] = 0;
if (len >= 0) {
if ((am != NULL) && (expr[0] == 't') && (expr[1] == ' ')) {
char *ptr = &expr[2];
diff --git a/testC14N.c b/testC14N.c
index f735a29..86e58f2 100644
--- a/testC14N.c
+++ b/testC14N.c
@@ -3,7 +3,7 @@
* (http://www.w3.org/TR/2001/REC-xml-c14n-20010315)
*
* See Copyright for the status of this software.
- *
+ *
* Author: Aleksey Sanin <aleksey@aleksey.com>
*/
#include "libxml.h"
@@ -11,11 +11,13 @@
#include <stdio.h>
#include <string.h>
+#ifndef STDOUT_FILENO
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#else
#define STDOUT_FILENO fileno(stdout)
#endif /* HAVE_UNISTD_H */
+#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
@@ -54,11 +56,11 @@ static xmlChar **parse_list(xmlChar *str);
/* static void print_xpath_nodes(xmlNodeSetPtr nodes); */
-static int
+static int
test_c14n(const char* xml_filename, int with_comments, int mode,
const char* xpath_filename, xmlChar **inclusive_namespaces) {
xmlDocPtr doc;
- xmlXPathObjectPtr xpath = NULL;
+ xmlXPathObjectPtr xpath = NULL;
xmlChar *result = NULL;
int ret;
@@ -74,34 +76,34 @@ test_c14n(const char* xml_filename, int with_comments, int mode,
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_filename);
return(-1);
}
-
+
/*
* Check the document is of the right kind
- */
+ */
if(xmlDocGetRootElement(doc) == NULL) {
fprintf(stderr,"Error: empty document for file \"%s\"\n", xml_filename);
xmlFreeDoc(doc);
return(-1);
}
- /*
- * load xpath file if specified
+ /*
+ * load xpath file if specified
*/
if(xpath_filename) {
xpath = load_xpath_expr(doc, xpath_filename);
if(xpath == NULL) {
fprintf(stderr,"Error: unable to evaluate xpath expression\n");
- xmlFreeDoc(doc);
+ xmlFreeDoc(doc);
return(-1);
}
}
/*
* Canonical form
- */
+ */
/* fprintf(stderr,"File \"%s\" loaded: start canonization\n", xml_filename); */
- ret = xmlC14NDocDumpMemory(doc,
- (xpath) ? xpath->nodesetval : NULL,
+ ret = xmlC14NDocDumpMemory(doc,
+ (xpath) ? xpath->nodesetval : NULL,
mode, inclusive_namespaces,
with_comments, &result);
if(ret >= 0) {
@@ -114,25 +116,25 @@ test_c14n(const char* xml_filename, int with_comments, int mode,
} else {
fprintf(stderr,"Error: failed to canonicalize XML file \"%s\" (ret=%d)\n", xml_filename, ret);
if(result != NULL) xmlFree(result);
- xmlFreeDoc(doc);
+ xmlFreeDoc(doc);
return(-1);
}
-
+
/*
* Cleanup
- */
+ */
if(xpath != NULL) xmlXPathFreeObject(xpath);
- xmlFreeDoc(doc);
+ xmlFreeDoc(doc);
return(ret);
}
int main(int argc, char **argv) {
int ret = -1;
-
+
/*
* Init libxml
- */
+ */
xmlInitParser();
LIBXML_TEST_VERSION
@@ -152,14 +154,14 @@ int main(int argc, char **argv) {
ret = test_c14n(argv[2], 0, XML_C14N_1_1, (argc > 3) ? argv[3] : NULL, NULL);
} else if(strcmp(argv[1], "--exc-with-comments") == 0) {
xmlChar **list;
-
+
/* load exclusive namespace from command line */
list = (argc > 4) ? parse_list((xmlChar *)argv[4]) : NULL;
ret = test_c14n(argv[2], 1, XML_C14N_EXCLUSIVE_1_0, (argc > 3) ? argv[3] : NULL, list);
if(list != NULL) xmlFree(list);
} else if(strcmp(argv[1], "--exc-without-comments") == 0) {
xmlChar **list;
-
+
/* load exclusive namespace from command line */
list = (argc > 4) ? parse_list((xmlChar *)argv[4]) : NULL;
ret = test_c14n(argv[2], 0, XML_C14N_EXCLUSIVE_1_0, (argc > 3) ? argv[3] : NULL, list);
@@ -169,7 +171,7 @@ int main(int argc, char **argv) {
usage(argv[0]);
}
- /*
+ /*
* Shutdown libxml
*/
xmlCleanupParser();
@@ -235,13 +237,13 @@ parse_list(xmlChar *str) {
static xmlXPathObjectPtr
load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
- xmlXPathObjectPtr xpath;
+ xmlXPathObjectPtr xpath;
xmlDocPtr doc;
xmlChar *expr;
- xmlXPathContextPtr ctx;
+ xmlXPathContextPtr ctx;
xmlNodePtr node;
xmlNsPtr ns;
-
+
/*
* load XPath expr as a file
*/
@@ -253,10 +255,10 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
fprintf(stderr, "Error: unable to parse file \"%s\"\n", filename);
return(NULL);
}
-
+
/*
* Check the document is of the right kind
- */
+ */
if(xmlDocGetRootElement(doc) == NULL) {
fprintf(stderr,"Error: empty document for file \"%s\"\n", filename);
xmlFreeDoc(doc);
@@ -267,8 +269,8 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
while(node != NULL && !xmlStrEqual(node->name, (const xmlChar *)"XPath")) {
node = node->next;
}
-
- if(node == NULL) {
+
+ if(node == NULL) {
fprintf(stderr,"Error: XPath element expected in the file \"%s\"\n", filename);
xmlFreeDoc(doc);
return(NULL);
@@ -284,8 +286,8 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
ctx = xmlXPathNewContext(parent_doc);
if(ctx == NULL) {
fprintf(stderr,"Error: unable to create new context\n");
- xmlFree(expr);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlFreeDoc(doc);
return(NULL);
}
@@ -296,31 +298,31 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
while(ns != NULL) {
if(xmlXPathRegisterNs(ctx, ns->prefix, ns->href) != 0) {
fprintf(stderr,"Error: unable to register NS with prefix=\"%s\" and href=\"%s\"\n", ns->prefix, ns->href);
- xmlFree(expr);
- xmlXPathFreeContext(ctx);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlXPathFreeContext(ctx);
+ xmlFreeDoc(doc);
return(NULL);
}
ns = ns->next;
}
- /*
+ /*
* Evaluate xpath
*/
xpath = xmlXPathEvalExpression(expr, ctx);
if(xpath == NULL) {
fprintf(stderr,"Error: unable to evaluate xpath expression\n");
- xmlFree(expr);
- xmlXPathFreeContext(ctx);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlXPathFreeContext(ctx);
+ xmlFreeDoc(doc);
return(NULL);
}
/* print_xpath_nodes(xpath->nodesetval); */
- xmlFree(expr);
- xmlXPathFreeContext(ctx);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlXPathFreeContext(ctx);
+ xmlFreeDoc(doc);
return(xpath);
}
@@ -329,28 +331,28 @@ static void
print_xpath_nodes(xmlNodeSetPtr nodes) {
xmlNodePtr cur;
int i;
-
- if(nodes == NULL ){
+
+ if(nodes == NULL ){
fprintf(stderr, "Error: no nodes set defined\n");
return;
}
-
+
fprintf(stderr, "Nodes Set:\n-----\n");
for(i = 0; i < nodes->nodeNr; ++i) {
if(nodes->nodeTab[i]->type == XML_NAMESPACE_DECL) {
xmlNsPtr ns;
-
+
ns = (xmlNsPtr)nodes->nodeTab[i];
cur = (xmlNodePtr)ns->next;
- fprintf(stderr, "namespace \"%s\"=\"%s\" for node %s:%s\n",
+ fprintf(stderr, "namespace \"%s\"=\"%s\" for node %s:%s\n",
ns->prefix, ns->href,
(cur->ns) ? cur->ns->prefix : BAD_CAST "", cur->name);
} else if(nodes->nodeTab[i]->type == XML_ELEMENT_NODE) {
- cur = nodes->nodeTab[i];
- fprintf(stderr, "element node \"%s:%s\"\n",
+ cur = nodes->nodeTab[i];
+ fprintf(stderr, "element node \"%s:%s\"\n",
(cur->ns) ? cur->ns->prefix : BAD_CAST "", cur->name);
} else {
- cur = nodes->nodeTab[i];
+ cur = nodes->nodeTab[i];
fprintf(stderr, "node \"%s\": type %d\n", cur->name, cur->type);
}
}
diff --git a/testHTML.c b/testHTML.c
index f350342..9b42778 100644
--- a/testHTML.c
+++ b/testHTML.c
@@ -179,7 +179,7 @@ resolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xm
{
/* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
-
+
fprintf(stdout, "SAX.resolveEntity(");
if (publicId != NULL)
fprintf(stdout, "%s", (char *)publicId);
@@ -233,8 +233,8 @@ getParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
/**
* entityDeclDebug:
* @ctxt: An XML parser context
- * @name: the entity name
- * @type: the entity type
+ * @name: the entity name
+ * @type: the entity type
* @publicId: The public ID of the entity
* @systemId: The system ID of the entity
* @content: the entity value (without processing).
@@ -252,8 +252,8 @@ entityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
/**
* attributeDeclDebug:
* @ctxt: An XML parser context
- * @name: the attribute name
- * @type: the attribute type
+ * @name: the attribute name
+ * @type: the attribute type
*
* An attribute definition has been parsed
*/
@@ -269,8 +269,8 @@ attributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *elem, const xmlCha
/**
* elementDeclDebug:
* @ctxt: An XML parser context
- * @name: the element name
- * @type: the element type
+ * @name: the element name
+ * @type: the element type
* @content: the element value (without processing).
*
* An element definition has been parsed
@@ -453,7 +453,7 @@ cdataDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
* @ctxt: An XML parser context
* @name: The entity name
*
- * called when an entity reference is detected.
+ * called when an entity reference is detected.
*/
static void
referenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
@@ -687,7 +687,7 @@ parseSAXFile(char *filename) {
fclose(f);
}
}
- } else {
+ } else {
#endif /* LIBXML_PUSH_ENABLED */
doc = htmlSAXParseFile(filename, NULL, emptySAXHandler, NULL);
if (doc != NULL) {
@@ -746,7 +746,7 @@ parseAndPrintFile(char *filename) {
}
fclose(f);
}
- } else {
+ } else {
doc = htmlReadFile(filename, NULL, options);
}
#else
@@ -774,7 +774,7 @@ parseAndPrintFile(char *filename) {
/*
* print it.
*/
- if (!noout) {
+ if (!noout) {
#ifdef LIBXML_DEBUG_ENABLED
if (!debug) {
if (encoding)
@@ -789,7 +789,7 @@ parseAndPrintFile(char *filename) {
else
htmlDocDump(stdout, doc);
#endif
- }
+ }
#endif /* LIBXML_OUTPUT_ENABLED */
/*
@@ -838,13 +838,13 @@ int main(int argc, char **argv) {
for (count = 0;count < 100 * repeat;count++) {
if (sax)
parseSAXFile(argv[i]);
- else
+ else
parseAndPrintFile(argv[i]);
- }
+ }
} else {
if (sax)
parseSAXFile(argv[i]);
- else
+ else
parseAndPrintFile(argv[i]);
}
files ++;
diff --git a/testModule.c b/testModule.c
index 8293c45..e399f5c 100644
--- a/testModule.c
+++ b/testModule.c
@@ -39,7 +39,7 @@
#endif
typedef int (*hello_world_t)(void);
-
+
int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
xmlChar filename[PATH_MAX];
xmlModulePtr module = NULL;
@@ -62,7 +62,7 @@ int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
fprintf(stderr, "Lookup returned NULL\n");
return(1);
}
-
+
(*hello_world)();
xmlModuleClose(module);
diff --git a/testRegexp.c b/testRegexp.c
index 626536e..21dac94 100644
--- a/testRegexp.c
+++ b/testRegexp.c
@@ -49,10 +49,10 @@ testRegexpFile(const char *filename) {
while (fgets(expression, 4500, input) != NULL) {
len = strlen(expression);
len--;
- while ((len >= 0) &&
+ while ((len >= 0) &&
((expression[len] == '\n') || (expression[len] == '\t') ||
(expression[len] == '\r') || (expression[len] == ' '))) len--;
- expression[len + 1] = 0;
+ expression[len + 1] = 0;
if (len >= 0) {
if (expression[0] == '#')
continue;
@@ -103,10 +103,10 @@ runFileTest(xmlExpCtxtPtr ctxt, const char *filename) {
while (fgets(expression, 4500, input) != NULL) {
len = strlen(expression);
len--;
- while ((len >= 0) &&
+ while ((len >= 0) &&
((expression[len] == '\n') || (expression[len] == '\t') ||
(expression[len] == '\r') || (expression[len] == ' '))) len--;
- expression[len + 1] = 0;
+ expression[len + 1] = 0;
if (len >= 0) {
if (expression[0] == '#')
continue;
@@ -115,7 +115,7 @@ runFileTest(xmlExpCtxtPtr ctxt, const char *filename) {
if (expr != NULL) {
xmlExpFree(ctxt, expr);
- if (xmlExpCtxtNbNodes(ctxt) != 0)
+ if (xmlExpCtxtNbNodes(ctxt) != 0)
printf(" Parse/free of Expression leaked %d\n",
xmlExpCtxtNbNodes(ctxt));
expr = NULL;
@@ -142,7 +142,7 @@ runFileTest(xmlExpCtxtPtr ctxt, const char *filename) {
break;
} else {
int ret;
-
+
nodes2 = xmlExpCtxtNbNodes(ctxt);
ret = xmlExpSubsume(ctxt, expr, sub);
@@ -174,14 +174,14 @@ runFileTest(xmlExpCtxtPtr ctxt, const char *filename) {
}
if (expr != NULL) {
xmlExpFree(ctxt, expr);
- if (xmlExpCtxtNbNodes(ctxt) != 0)
+ if (xmlExpCtxtNbNodes(ctxt) != 0)
printf(" Parse/free of Expression leaked %d\n",
xmlExpCtxtNbNodes(ctxt));
}
fclose(input);
}
-static void
+static void
testReduce(xmlExpCtxtPtr ctxt, xmlExpNodePtr expr, const char *tst) {
xmlBufferPtr xmlExpBuf;
xmlExpNodePtr sub, deriv;
@@ -213,7 +213,7 @@ testReduce(xmlExpCtxtPtr ctxt, xmlExpNodePtr expr, const char *tst) {
xmlExpFree(ctxt, sub);
}
-static void
+static void
exprDebug(xmlExpCtxtPtr ctxt, xmlExpNodePtr expr) {
xmlBufferPtr xmlExpBuf;
xmlExpNodePtr deriv;
diff --git a/testRelax.c b/testRelax.c
index e18b3c2..8e94a7a 100644
--- a/testRelax.c
+++ b/testRelax.c
@@ -49,7 +49,7 @@ static int debug = 0;
#endif
static int noout = 0;
static int tree = 0;
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
static int memory = 0;
#endif
@@ -65,7 +65,7 @@ int main(int argc, char **argv) {
debug++;
else
#endif
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
if ((!strcmp(argv[i], "-memory")) || (!strcmp(argv[i], "--memory"))) {
memory++;
} else
@@ -84,12 +84,12 @@ int main(int argc, char **argv) {
if (schema == NULL) {
xmlRelaxNGParserCtxtPtr ctxt;
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
if (memory) {
int fd;
struct stat info;
const char *base;
- if (stat(argv[i], &info) < 0)
+ if (stat(argv[i], &info) < 0)
break;
if ((fd = open(argv[i], O_RDONLY)) < 0)
break;
@@ -174,7 +174,7 @@ int main(int argc, char **argv) {
#endif
printf("\t--noout : do not print the result\n");
printf("\t--tree : print the intermediate Relax-NG document tree\n");
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
printf("\t--memory : test the schemas in memory parsing\n");
#endif
}
diff --git a/testSAX.c b/testSAX.c
index cd16268..81c4b93 100644
--- a/testSAX.c
+++ b/testSAX.c
@@ -71,7 +71,7 @@ static int timing = 0;
* function calls
*/
-#ifndef HAVE_GETTIMEOFDAY
+#ifndef HAVE_GETTIMEOFDAY
#ifdef HAVE_SYS_TIMEB_H
#ifdef HAVE_SYS_TIME_H
#ifdef HAVE_FTIME
@@ -368,7 +368,7 @@ resolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xm
return(NULL);
/* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
-
+
fprintf(stdout, "SAX.resolveEntity(");
if (publicId != NULL)
fprintf(stdout, "%s", (char *)publicId);
@@ -428,8 +428,8 @@ getParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
/**
* entityDeclDebug:
* @ctxt: An XML parser context
- * @name: the entity name
- * @type: the entity type
+ * @name: the entity name
+ * @type: the entity type
* @publicId: The public ID of the entity
* @systemId: The system ID of the entity
* @content: the entity value (without processing).
@@ -458,8 +458,8 @@ const xmlChar *nullstr = BAD_CAST "(null)";
/**
* attributeDeclDebug:
* @ctxt: An XML parser context
- * @name: the attribute name
- * @type: the attribute type
+ * @name: the attribute name
+ * @type: the attribute type
*
* An attribute definition has been parsed
*/
@@ -483,8 +483,8 @@ attributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar * elem,
/**
* elementDeclDebug:
* @ctxt: An XML parser context
- * @name: the element name
- * @type: the element type
+ * @name: the element name
+ * @type: the element type
* @content: the element value (without processing).
*
* An element definition has been parsed
@@ -670,7 +670,7 @@ charactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
* @ctxt: An XML parser context
* @name: The entity name
*
- * called when an entity reference is detected.
+ * called when an entity reference is detected.
*/
static void
referenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
@@ -906,7 +906,7 @@ startElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
else
fprintf(stdout, ", '%s'", (char *) URI);
fprintf(stdout, ", %d", nb_namespaces);
-
+
if (namespaces != NULL) {
for (i = 0;i < nb_namespaces * 2;i++) {
fprintf(stdout, ", xmlns");
@@ -1131,7 +1131,7 @@ int main(int argc, char **argv) {
int files = 0;
LIBXML_TEST_VERSION /* be safe, plus calls xmlInitParser */
-
+
for (i = 1; i < argc ; i++) {
if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
debug++;
diff --git a/testSchemas.c b/testSchemas.c
index 47f8b39..b98e631 100644
--- a/testSchemas.c
+++ b/testSchemas.c
@@ -49,7 +49,7 @@
static int debug = 0;
#endif
static int noout = 0;
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
static int memory = 0;
#endif
@@ -65,7 +65,7 @@ int main(int argc, char **argv) {
debug++;
else
#endif
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
if ((!strcmp(argv[i], "-memory")) || (!strcmp(argv[i], "--memory"))) {
memory++;
} else
@@ -80,12 +80,12 @@ int main(int argc, char **argv) {
if (schema == NULL) {
xmlSchemaParserCtxtPtr ctxt;
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
if (memory) {
int fd;
struct stat info;
const char *base;
- if (stat(argv[i], &info) < 0)
+ if (stat(argv[i], &info) < 0)
break;
if ((fd = open(argv[i], O_RDONLY)) < 0)
break;
@@ -164,7 +164,7 @@ int main(int argc, char **argv) {
printf("\t--debug : dump a debug tree of the in-memory document\n");
#endif
printf("\t--noout : do not print the result\n");
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
printf("\t--memory : test the schemas in memory parsing\n");
#endif
}
diff --git a/testThreadsWin32.c b/testThreadsWin32.c
index 6ed702e..3d1a5ba 100644
--- a/testThreadsWin32.c
+++ b/testThreadsWin32.c
@@ -104,7 +104,7 @@ main()
for (i = 0; i < num_threads; i++)
{
DWORD useless;
- tid[i] = CreateThread(NULL, 0,
+ tid[i] = CreateThread(NULL, 0,
thread_specific_data, testfiles[i], 0, &useless);
if (tid[i] == NULL)
{
@@ -113,7 +113,7 @@ main()
}
}
- if (WaitForMultipleObjects (num_threads, tid, TRUE, INFINITE) == WAIT_FAILED)
+ if (WaitForMultipleObjects (num_threads, tid, TRUE, INFINITE) == WAIT_FAILED)
perror ("WaitForMultipleObjects failed");
for (i = 0; i < num_threads; i++)
@@ -129,7 +129,7 @@ main()
xmlCatalogCleanup();
for (i = 0; i < num_threads; i++) {
- if (results[i] != (DWORD) Okay)
+ if (results[i] != (DWORD) Okay)
printf("Thread %d handling %s failed\n", i, testfiles[i]);
}
}
diff --git a/testXPath.c b/testXPath.c
index 677419a..ebb9ff7 100644
--- a/testXPath.c
+++ b/testXPath.c
@@ -51,7 +51,7 @@ static xmlDocPtr document = NULL;
/*
* Default document
*/
-static xmlChar buffer[] =
+static xmlChar buffer[] =
"<?xml version=\"1.0\"?>\n\
<EXAMPLE prop1=\"gnome is great\" prop2=\"&amp; linux too\">\n\
<head>\n\
@@ -79,7 +79,7 @@ static void
testXPath(const char *str) {
xmlXPathObjectPtr res;
xmlXPathContextPtr ctxt;
-
+
#if defined(LIBXML_XPTR_ENABLED)
if (xptr) {
ctxt = xmlXPtrNewContext(document, NULL, NULL);
@@ -96,7 +96,7 @@ testXPath(const char *str) {
comp = xmlXPathCompile(BAD_CAST str);
if (comp != NULL) {
- if (tree)
+ if (tree)
xmlXPathDebugDumpCompExpr(stdout, comp, 0);
res = xmlXPathCompiledEval(comp, ctxt);
@@ -127,10 +127,10 @@ testXPathFile(const char *filename) {
while (fgets(expression, 4500, input) != NULL) {
len = strlen(expression);
len--;
- while ((len >= 0) &&
+ while ((len >= 0) &&
((expression[len] == '\n') || (expression[len] == '\t') ||
(expression[len] == '\r') || (expression[len] == ' '))) len--;
- expression[len + 1] = 0;
+ expression[len + 1] = 0;
if (len >= 0) {
printf("\n========================\nExpression: %s\n", expression) ;
testXPath(expression);
@@ -150,7 +150,7 @@ int main(int argc, char **argv) {
#if defined(LIBXML_XPTR_ENABLED)
if ((!strcmp(argv[i], "-xptr")) || (!strcmp(argv[i], "--xptr")))
xptr++;
- else
+ else
#endif
if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
debug++;
@@ -172,10 +172,12 @@ int main(int argc, char **argv) {
xmlLoadExtDtdDefaultValue |= XML_DETECT_IDS;
xmlLoadExtDtdDefaultValue |= XML_COMPLETE_ATTRS;
xmlSubstituteEntitiesDefaultValue = 1;
+#ifdef LIBXML_SAX1_ENABLED
if (nocdata != 0) {
xmlDefaultSAXHandlerInit();
xmlDefaultSAXHandler.cdataBlock = NULL;
}
+#endif
if (document == NULL) {
if (filename == NULL)
document = xmlReadDoc(buffer,NULL,NULL,XML_PARSE_COMPACT);
@@ -211,7 +213,7 @@ int main(int argc, char **argv) {
printf("\t--file : or\n");
printf("\t-f : read queries from files, args\n");
}
- if (document != NULL)
+ if (document != NULL)
xmlFreeDoc(document);
xmlCleanupParser();
xmlMemoryDump();
diff --git a/testapi.c b/testapi.c
index 4f4b39b..0367ffd 100644
--- a/testapi.c
+++ b/testapi.c
@@ -8,20 +8,14 @@
* daniel@veillard.com
*/
-#ifdef HAVE_CONFIG_H
#include "libxml.h"
-#else
#include <stdio.h>
-#endif
#include <stdlib.h> /* for putenv() */
#include <string.h>
#include <libxml/xmlerror.h>
#include <libxml/relaxng.h>
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-#define snprintf _snprintf
-#endif
static int testlibxml2(void);
static int test_module(const char *module);
@@ -107,7 +101,7 @@ get_api_attr(void) {
if ((api_root == NULL) || (api_root->type != XML_ELEMENT_NODE)) {
get_api_root();
}
- if (api_root == NULL)
+ if (api_root == NULL)
return(NULL);
if (api_root->properties != NULL) {
api_attr = api_root->properties;
@@ -127,8 +121,10 @@ int main(int argc, char **argv) {
int ret;
int blocks, mem;
+#ifdef HAVE_PUTENV
/* access to the proxy can slow up regression tests a lot */
putenv((char *) "http_proxy=");
+#endif
memset(chartab, 0, sizeof(chartab));
strncpy((char *) chartab, " chartab\n", 20);
@@ -201,7 +197,7 @@ int main(int argc, char **argv) {
#include <libxml/xpointer.h>
#include <libxml/debugXML.h>
-/*
+/*
We manually define xmlErrMemory because it's normal declaration
is "hidden" by #ifdef IN_LIBXML
*/
@@ -291,7 +287,7 @@ static void des_long(int no ATTRIBUTE_UNUSED, long val ATTRIBUTE_UNUSED, int nr
static xmlChar gen_xmlChar(int no, int nr ATTRIBUTE_UNUSED) {
if (no == 0) return('a');
if (no == 1) return(' ');
- if (no == 2) return((xmlChar) 'ø');
+ if (no == 2) return((xmlChar) '\xf8');
return(0);
}
@@ -399,7 +395,7 @@ static void des_debug_FILE_ptr(int no ATTRIBUTE_UNUSED, FILE *val, int nr ATTRIB
static xmlChar *gen_const_xmlChar_ptr(int no, int nr ATTRIBUTE_UNUSED) {
if (no == 0) return((xmlChar *) "foo");
if (no == 1) return((xmlChar *) "<foo/>");
- if (no == 2) return((xmlChar *) "nøne");
+ if (no == 2) return((xmlChar *) "n" "\xf8" "ne");
if (no == 3) return((xmlChar *) " 2ab ");
return(NULL);
}
@@ -543,7 +539,7 @@ static void des_xmlNodePtr(int no, xmlNodePtr val, int nr ATTRIBUTE_UNUSED) {
#define gen_nb_xmlDtdPtr 3
static xmlDtdPtr gen_xmlDtdPtr(int no, int nr ATTRIBUTE_UNUSED) {
- if (no == 0)
+ if (no == 0)
return(xmlNewDtd(NULL, BAD_CAST "dtd", BAD_CAST"foo", BAD_CAST"bar"));
if (no == 1) return(get_api_dtd());
return(NULL);
@@ -740,7 +736,7 @@ static void des_xmlSchemaValidCtxtPtr(int no ATTRIBUTE_UNUSED, xmlSchemaValidCtx
#endif /* LIBXML_SCHEMAS_ENABLED */
#define gen_nb_xmlHashDeallocator 2
-static void
+static void
test_xmlHashDeallocator(void *payload ATTRIBUTE_UNUSED, xmlChar *name ATTRIBUTE_UNUSED) {
}
@@ -4065,7 +4061,7 @@ static int
test_xmlSAX2EndElement(void) {
int test_ret = 0;
-#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef LIBXML_SAX1_ENABLED
int mem_base;
void * ctx; /* the user data (XML parser context) */
@@ -5030,7 +5026,7 @@ static int
test_xmlSAX2StartElement(void) {
int test_ret = 0;
-#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef LIBXML_SAX1_ENABLED
int mem_base;
void * ctx; /* the user data (XML parser context) */
@@ -8252,6 +8248,16 @@ test_xmlDictExists(void) {
static int
+test_xmlDictGetUsage(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
+static int
test_xmlDictLookup(void) {
int test_ret = 0;
@@ -8416,6 +8422,16 @@ test_xmlDictReference(void) {
static int
+test_xmlDictSetLimit(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
+static int
test_xmlDictSize(void) {
int test_ret = 0;
@@ -8475,15 +8491,17 @@ static int
test_dict(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing dict : 10 of 11 functions ...\n");
+ if (quiet == 0) printf("Testing dict : 10 of 13 functions ...\n");
test_ret += test_xmlDictCleanup();
test_ret += test_xmlDictCreate();
test_ret += test_xmlDictCreateSub();
test_ret += test_xmlDictExists();
+ test_ret += test_xmlDictGetUsage();
test_ret += test_xmlDictLookup();
test_ret += test_xmlDictOwns();
test_ret += test_xmlDictQLookup();
test_ret += test_xmlDictReference();
+ test_ret += test_xmlDictSetLimit();
test_ret += test_xmlDictSize();
test_ret += test_xmlInitializeDict();
@@ -9436,27 +9454,34 @@ test_xmlEncodeEntitiesReentrant(void) {
}
+#define gen_nb_const_xmlDoc_ptr 1
+static xmlDoc * gen_const_xmlDoc_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+ return(NULL);
+}
+static void des_const_xmlDoc_ptr(int no ATTRIBUTE_UNUSED, const xmlDoc * val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+}
+
static int
test_xmlEncodeSpecialChars(void) {
int test_ret = 0;
int mem_base;
xmlChar * ret_val;
- xmlDocPtr doc; /* the document containing the string */
+ xmlDoc * doc; /* the document containing the string */
int n_doc;
xmlChar * input; /* A string to convert to XML. */
int n_input;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
for (n_input = 0;n_input < gen_nb_const_xmlChar_ptr;n_input++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
input = gen_const_xmlChar_ptr(n_input, 1);
- ret_val = xmlEncodeSpecialChars(doc, (const xmlChar *)input);
+ ret_val = xmlEncodeSpecialChars((const xmlDoc *)doc, (const xmlChar *)input);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
des_const_xmlChar_ptr(n_input, (const xmlChar *)input, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -9481,21 +9506,21 @@ test_xmlGetDocEntity(void) {
int mem_base;
xmlEntityPtr ret_val;
- xmlDocPtr doc; /* the document referencing the entity */
+ xmlDoc * doc; /* the document referencing the entity */
int n_doc;
xmlChar * name; /* the entity name */
int n_name;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
- ret_val = xmlGetDocEntity(doc, (const xmlChar *)name);
+ ret_val = xmlGetDocEntity((const xmlDoc *)doc, (const xmlChar *)name);
desret_xmlEntityPtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -17814,7 +17839,7 @@ test_xmlRelaxNGValidatePushCData(void) {
int n_ctxt;
xmlChar * data; /* some character data read */
int n_data;
- int len; /* the lenght of the data */
+ int len; /* the length of the data */
int n_len;
for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
@@ -18252,7 +18277,7 @@ static int
test_xmlAddPrevSibling(void) {
int test_ret = 0;
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
int mem_base;
xmlNodePtr ret_val;
xmlNodePtr cur; /* the child node */
@@ -18385,6 +18410,167 @@ test_xmlAttrSerializeTxtContent(void) {
}
+#define gen_nb_const_xmlBuf_ptr 1
+static xmlBuf * gen_const_xmlBuf_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+ return(NULL);
+}
+static void des_const_xmlBuf_ptr(int no ATTRIBUTE_UNUSED, const xmlBuf * val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+}
+
+static int
+test_xmlBufContent(void) {
+ int test_ret = 0;
+
+ int mem_base;
+ xmlChar * ret_val;
+ xmlBuf * buf; /* the buffer */
+ int n_buf;
+
+ for (n_buf = 0;n_buf < gen_nb_const_xmlBuf_ptr;n_buf++) {
+ mem_base = xmlMemBlocks();
+ buf = gen_const_xmlBuf_ptr(n_buf, 0);
+
+ ret_val = xmlBufContent((const xmlBuf *)buf);
+ desret_xmlChar_ptr(ret_val);
+ call_tests++;
+ des_const_xmlBuf_ptr(n_buf, (const xmlBuf *)buf, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlBufContent",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_buf);
+ printf("\n");
+ }
+ }
+ function_tests++;
+
+ return(test_ret);
+}
+
+
+#define gen_nb_xmlBufPtr 1
+static xmlBufPtr gen_xmlBufPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+ return(NULL);
+}
+static void des_xmlBufPtr(int no ATTRIBUTE_UNUSED, xmlBufPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+}
+
+static int
+test_xmlBufEnd(void) {
+ int test_ret = 0;
+
+ int mem_base;
+ xmlChar * ret_val;
+ xmlBufPtr buf; /* the buffer */
+ int n_buf;
+
+ for (n_buf = 0;n_buf < gen_nb_xmlBufPtr;n_buf++) {
+ mem_base = xmlMemBlocks();
+ buf = gen_xmlBufPtr(n_buf, 0);
+
+ ret_val = xmlBufEnd(buf);
+ desret_xmlChar_ptr(ret_val);
+ call_tests++;
+ des_xmlBufPtr(n_buf, buf, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlBufEnd",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_buf);
+ printf("\n");
+ }
+ }
+ function_tests++;
+
+ return(test_ret);
+}
+
+
+#define gen_nb_const_xmlNode_ptr 1
+static xmlNode * gen_const_xmlNode_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+ return(NULL);
+}
+static void des_const_xmlNode_ptr(int no ATTRIBUTE_UNUSED, const xmlNode * val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+}
+
+static int
+test_xmlBufGetNodeContent(void) {
+ int test_ret = 0;
+
+ int mem_base;
+ int ret_val;
+ xmlBufPtr buf; /* a buffer xmlBufPtr */
+ int n_buf;
+ xmlNode * cur; /* the node being read */
+ int n_cur;
+
+ for (n_buf = 0;n_buf < gen_nb_xmlBufPtr;n_buf++) {
+ for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
+ mem_base = xmlMemBlocks();
+ buf = gen_xmlBufPtr(n_buf, 0);
+ cur = gen_const_xmlNode_ptr(n_cur, 1);
+
+ ret_val = xmlBufGetNodeContent(buf, (const xmlNode *)cur);
+ desret_int(ret_val);
+ call_tests++;
+ des_xmlBufPtr(n_buf, buf, 0);
+ des_const_xmlNode_ptr(n_cur, (const xmlNode *)cur, 1);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlBufGetNodeContent",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_buf);
+ printf(" %d", n_cur);
+ printf("\n");
+ }
+ }
+ }
+ function_tests++;
+
+ return(test_ret);
+}
+
+
+static int
+test_xmlBufNodeDump(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
+static int
+test_xmlBufShrink(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
+#define gen_nb_const_xmlBufPtr 1
+static xmlBufPtr gen_const_xmlBufPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+ return(NULL);
+}
+static void des_const_xmlBufPtr(int no ATTRIBUTE_UNUSED, const xmlBufPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+}
+
+static int
+test_xmlBufUse(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
static int
test_xmlBufferAdd(void) {
int test_ret = 0;
@@ -18555,11 +18741,11 @@ test_xmlBufferCat(void) {
}
-#define gen_nb_const_xmlBufferPtr 1
-static xmlBufferPtr gen_const_xmlBufferPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+#define gen_nb_const_xmlBuffer_ptr 1
+static xmlBuffer * gen_const_xmlBuffer_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
return(NULL);
}
-static void des_const_xmlBufferPtr(int no ATTRIBUTE_UNUSED, const xmlBufferPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
+static void des_const_xmlBuffer_ptr(int no ATTRIBUTE_UNUSED, const xmlBuffer * val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
}
static int
@@ -18568,17 +18754,17 @@ test_xmlBufferContent(void) {
int mem_base;
const xmlChar * ret_val;
- xmlBufferPtr buf; /* the buffer */
+ xmlBuffer * buf; /* the buffer */
int n_buf;
- for (n_buf = 0;n_buf < gen_nb_const_xmlBufferPtr;n_buf++) {
+ for (n_buf = 0;n_buf < gen_nb_const_xmlBuffer_ptr;n_buf++) {
mem_base = xmlMemBlocks();
- buf = gen_const_xmlBufferPtr(n_buf, 0);
+ buf = gen_const_xmlBuffer_ptr(n_buf, 0);
- ret_val = xmlBufferContent((const xmlBufferPtr)buf);
+ ret_val = xmlBufferContent((const xmlBuffer *)buf);
desret_const_xmlChar_ptr(ret_val);
call_tests++;
- des_const_xmlBufferPtr(n_buf, (const xmlBufferPtr)buf, 0);
+ des_const_xmlBuffer_ptr(n_buf, (const xmlBuffer *)buf, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlBufferContent",
@@ -18746,17 +18932,17 @@ test_xmlBufferLength(void) {
int mem_base;
int ret_val;
- xmlBufferPtr buf; /* the buffer */
+ xmlBuffer * buf; /* the buffer */
int n_buf;
- for (n_buf = 0;n_buf < gen_nb_const_xmlBufferPtr;n_buf++) {
+ for (n_buf = 0;n_buf < gen_nb_const_xmlBuffer_ptr;n_buf++) {
mem_base = xmlMemBlocks();
- buf = gen_const_xmlBufferPtr(n_buf, 0);
+ buf = gen_const_xmlBuffer_ptr(n_buf, 0);
- ret_val = xmlBufferLength((const xmlBufferPtr)buf);
+ ret_val = xmlBufferLength((const xmlBuffer *)buf);
desret_int(ret_val);
call_tests++;
- des_const_xmlBufferPtr(n_buf, (const xmlBufferPtr)buf, 0);
+ des_const_xmlBuffer_ptr(n_buf, (const xmlBuffer *)buf, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlBufferLength",
@@ -19242,16 +19428,16 @@ test_xmlCopyNode(void) {
int extended; /* if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable) */
int n_extended;
- for (n_node = 0;n_node < gen_nb_const_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
for (n_extended = 0;n_extended < gen_nb_int;n_extended++) {
mem_base = xmlMemBlocks();
- node = gen_const_xmlNodePtr(n_node, 0);
+ node = gen_xmlNodePtr(n_node, 0);
extended = gen_int(n_extended, 1);
- ret_val = xmlCopyNode((const xmlNodePtr)node, extended);
+ ret_val = xmlCopyNode(node, extended);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_const_xmlNodePtr(n_node, (const xmlNodePtr)node, 0);
+ des_xmlNodePtr(n_node, node, 0);
des_int(n_extended, extended, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -19279,14 +19465,14 @@ test_xmlCopyNodeList(void) {
xmlNodePtr node; /* the first node in the list. */
int n_node;
- for (n_node = 0;n_node < gen_nb_const_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
mem_base = xmlMemBlocks();
- node = gen_const_xmlNodePtr(n_node, 0);
+ node = gen_xmlNodePtr(n_node, 0);
- ret_val = xmlCopyNodeList((const xmlNodePtr)node);
+ ret_val = xmlCopyNodeList(node);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_const_xmlNodePtr(n_node, (const xmlNodePtr)node, 0);
+ des_xmlNodePtr(n_node, node, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlCopyNodeList",
@@ -19711,18 +19897,18 @@ test_xmlDocCopyNode(void) {
int extended; /* if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable) */
int n_extended;
- for (n_node = 0;n_node < gen_nb_const_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
for (n_extended = 0;n_extended < gen_nb_int;n_extended++) {
mem_base = xmlMemBlocks();
- node = gen_const_xmlNodePtr(n_node, 0);
+ node = gen_xmlNodePtr(n_node, 0);
doc = gen_xmlDocPtr(n_doc, 1);
extended = gen_int(n_extended, 2);
- ret_val = xmlDocCopyNode((const xmlNodePtr)node, doc, extended);
+ ret_val = xmlDocCopyNode(node, doc, extended);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_const_xmlNodePtr(n_node, (const xmlNodePtr)node, 0);
+ des_xmlNodePtr(n_node, node, 0);
des_xmlDocPtr(n_doc, doc, 1);
des_int(n_extended, extended, 2);
xmlResetLastError();
@@ -19756,16 +19942,16 @@ test_xmlDocCopyNodeList(void) {
int n_node;
for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
- for (n_node = 0;n_node < gen_nb_const_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
mem_base = xmlMemBlocks();
doc = gen_xmlDocPtr(n_doc, 0);
- node = gen_const_xmlNodePtr(n_node, 1);
+ node = gen_xmlNodePtr(n_node, 1);
- ret_val = xmlDocCopyNodeList(doc, (const xmlNodePtr)node);
+ ret_val = xmlDocCopyNodeList(doc, node);
desret_xmlNodePtr(ret_val);
call_tests++;
des_xmlDocPtr(n_doc, doc, 0);
- des_const_xmlNodePtr(n_node, (const xmlNodePtr)node, 1);
+ des_xmlNodePtr(n_node, node, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlDocCopyNodeList",
@@ -20090,17 +20276,17 @@ test_xmlDocGetRootElement(void) {
int mem_base;
xmlNodePtr ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
- ret_val = xmlDocGetRootElement(doc);
+ ret_val = xmlDocGetRootElement((const xmlDoc *)doc);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlDocGetRootElement",
@@ -20294,17 +20480,17 @@ test_xmlGetDocCompressMode(void) {
int mem_base;
int ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
- ret_val = xmlGetDocCompressMode(doc);
+ ret_val = xmlGetDocCompressMode((const xmlDoc *)doc);
desret_int(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlGetDocCompressMode",
@@ -20326,17 +20512,17 @@ test_xmlGetIntSubset(void) {
int mem_base;
xmlDtdPtr ret_val;
- xmlDocPtr doc; /* the document pointer */
+ xmlDoc * doc; /* the document pointer */
int n_doc;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
- ret_val = xmlGetIntSubset(doc);
+ ret_val = xmlGetIntSubset((const xmlDoc *)doc);
desret_xmlDtdPtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlGetIntSubset",
@@ -20358,17 +20544,17 @@ test_xmlGetLastChild(void) {
int mem_base;
xmlNodePtr ret_val;
- xmlNodePtr parent; /* the parent node */
+ xmlNode * parent; /* the parent node */
int n_parent;
- for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+ for (n_parent = 0;n_parent < gen_nb_const_xmlNode_ptr;n_parent++) {
mem_base = xmlMemBlocks();
- parent = gen_xmlNodePtr(n_parent, 0);
+ parent = gen_const_xmlNode_ptr(n_parent, 0);
- ret_val = xmlGetLastChild(parent);
+ ret_val = xmlGetLastChild((const xmlNode *)parent);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_xmlNodePtr(n_parent, parent, 0);
+ des_const_xmlNode_ptr(n_parent, (const xmlNode *)parent, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlGetLastChild",
@@ -20390,17 +20576,17 @@ test_xmlGetLineNo(void) {
int mem_base;
long ret_val;
- xmlNodePtr node; /* valid node */
+ xmlNode * node; /* valid node */
int n_node;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
- ret_val = xmlGetLineNo(node);
+ ret_val = xmlGetLineNo((const xmlNode *)node);
desret_long(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlGetLineNo",
@@ -20422,21 +20608,21 @@ test_xmlGetNoNsProp(void) {
int mem_base;
xmlChar * ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
xmlChar * name; /* the attribute name */
int n_name;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
- ret_val = xmlGetNoNsProp(node, (const xmlChar *)name);
+ ret_val = xmlGetNoNsProp((const xmlNode *)node, (const xmlChar *)name);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -20462,17 +20648,17 @@ test_xmlGetNodePath(void) {
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
int mem_base;
xmlChar * ret_val;
- xmlNodePtr node; /* a node */
+ xmlNode * node; /* a node */
int n_node;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
- ret_val = xmlGetNodePath(node);
+ ret_val = xmlGetNodePath((const xmlNode *)node);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlGetNodePath",
@@ -20505,25 +20691,25 @@ test_xmlGetNsProp(void) {
int mem_base;
xmlChar * ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
xmlChar * name; /* the attribute name */
int n_name;
xmlChar * nameSpace; /* the URI of the namespace */
int n_nameSpace;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
for (n_nameSpace = 0;n_nameSpace < gen_nb_const_xmlChar_ptr;n_nameSpace++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
nameSpace = gen_const_xmlChar_ptr(n_nameSpace, 2);
- ret_val = xmlGetNsProp(node, (const xmlChar *)name, (const xmlChar *)nameSpace);
+ ret_val = xmlGetNsProp((const xmlNode *)node, (const xmlChar *)name, (const xmlChar *)nameSpace);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
des_const_xmlChar_ptr(n_nameSpace, (const xmlChar *)nameSpace, 2);
xmlResetLastError();
@@ -20551,21 +20737,21 @@ test_xmlGetProp(void) {
int mem_base;
xmlChar * ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
xmlChar * name; /* the attribute name */
int n_name;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
- ret_val = xmlGetProp(node, (const xmlChar *)name);
+ ret_val = xmlGetProp((const xmlNode *)node, (const xmlChar *)name);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -20590,25 +20776,25 @@ test_xmlHasNsProp(void) {
int mem_base;
xmlAttrPtr ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
xmlChar * name; /* the attribute name */
int n_name;
xmlChar * nameSpace; /* the URI of the namespace */
int n_nameSpace;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
for (n_nameSpace = 0;n_nameSpace < gen_nb_const_xmlChar_ptr;n_nameSpace++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
nameSpace = gen_const_xmlChar_ptr(n_nameSpace, 2);
- ret_val = xmlHasNsProp(node, (const xmlChar *)name, (const xmlChar *)nameSpace);
+ ret_val = xmlHasNsProp((const xmlNode *)node, (const xmlChar *)name, (const xmlChar *)nameSpace);
desret_xmlAttrPtr(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
des_const_xmlChar_ptr(n_nameSpace, (const xmlChar *)nameSpace, 2);
xmlResetLastError();
@@ -20636,21 +20822,21 @@ test_xmlHasProp(void) {
int mem_base;
xmlAttrPtr ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
xmlChar * name; /* the attribute name */
int n_name;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
- ret_val = xmlHasProp(node, (const xmlChar *)name);
+ ret_val = xmlHasProp((const xmlNode *)node, (const xmlChar *)name);
desret_xmlAttrPtr(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -20675,17 +20861,17 @@ test_xmlIsBlankNode(void) {
int mem_base;
int ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
- ret_val = xmlIsBlankNode(node);
+ ret_val = xmlIsBlankNode((const xmlNode *)node);
desret_int(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlIsBlankNode",
@@ -21314,21 +21500,21 @@ test_xmlNewDocText(void) {
int mem_base;
xmlNodePtr ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
xmlChar * content; /* the text content */
int n_content;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
content = gen_const_xmlChar_ptr(n_content, 1);
- ret_val = xmlNewDocText(doc, (const xmlChar *)content);
+ ret_val = xmlNewDocText((const xmlDoc *)doc, (const xmlChar *)content);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
des_const_xmlChar_ptr(n_content, (const xmlChar *)content, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -21772,21 +21958,21 @@ test_xmlNewReference(void) {
int mem_base;
xmlNodePtr ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
xmlChar * name; /* the reference name, or the reference string with & and ; */
int n_name;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
name = gen_const_xmlChar_ptr(n_name, 1);
- ret_val = xmlNewReference(doc, (const xmlChar *)name);
+ ret_val = xmlNewReference((const xmlDoc *)doc, (const xmlChar *)name);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -22056,20 +22242,20 @@ test_xmlNodeBufGetContent(void) {
int ret_val;
xmlBufferPtr buffer; /* a buffer */
int n_buffer;
- xmlNodePtr cur; /* the node being read */
+ xmlNode * cur; /* the node being read */
int n_cur;
for (n_buffer = 0;n_buffer < gen_nb_xmlBufferPtr;n_buffer++) {
- for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
+ for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
mem_base = xmlMemBlocks();
buffer = gen_xmlBufferPtr(n_buffer, 0);
- cur = gen_xmlNodePtr(n_cur, 1);
+ cur = gen_const_xmlNode_ptr(n_cur, 1);
- ret_val = xmlNodeBufGetContent(buffer, cur);
+ ret_val = xmlNodeBufGetContent(buffer, (const xmlNode *)cur);
desret_int(ret_val);
call_tests++;
des_xmlBufferPtr(n_buffer, buffer, 0);
- des_xmlNodePtr(n_cur, cur, 1);
+ des_const_xmlNode_ptr(n_cur, (const xmlNode *)cur, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlNodeBufGetContent",
@@ -22222,22 +22408,22 @@ test_xmlNodeGetBase(void) {
int mem_base;
xmlChar * ret_val;
- xmlDocPtr doc; /* the document the node pertains to */
+ xmlDoc * doc; /* the document the node pertains to */
int n_doc;
- xmlNodePtr cur; /* the node being checked */
+ xmlNode * cur; /* the node being checked */
int n_cur;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
- for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
+ for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
- cur = gen_xmlNodePtr(n_cur, 1);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
+ cur = gen_const_xmlNode_ptr(n_cur, 1);
- ret_val = xmlNodeGetBase(doc, cur);
+ ret_val = xmlNodeGetBase((const xmlDoc *)doc, (const xmlNode *)cur);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
- des_xmlNodePtr(n_cur, cur, 1);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
+ des_const_xmlNode_ptr(n_cur, (const xmlNode *)cur, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlNodeGetBase",
@@ -22261,17 +22447,17 @@ test_xmlNodeGetContent(void) {
int mem_base;
xmlChar * ret_val;
- xmlNodePtr cur; /* the node being read */
+ xmlNode * cur; /* the node being read */
int n_cur;
- for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
+ for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
mem_base = xmlMemBlocks();
- cur = gen_xmlNodePtr(n_cur, 0);
+ cur = gen_const_xmlNode_ptr(n_cur, 0);
- ret_val = xmlNodeGetContent(cur);
+ ret_val = xmlNodeGetContent((const xmlNode *)cur);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlNodePtr(n_cur, cur, 0);
+ des_const_xmlNode_ptr(n_cur, (const xmlNode *)cur, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlNodeGetContent",
@@ -22293,17 +22479,17 @@ test_xmlNodeGetLang(void) {
int mem_base;
xmlChar * ret_val;
- xmlNodePtr cur; /* the node being checked */
+ xmlNode * cur; /* the node being checked */
int n_cur;
- for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
+ for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
mem_base = xmlMemBlocks();
- cur = gen_xmlNodePtr(n_cur, 0);
+ cur = gen_const_xmlNode_ptr(n_cur, 0);
- ret_val = xmlNodeGetLang(cur);
+ ret_val = xmlNodeGetLang((const xmlNode *)cur);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlNodePtr(n_cur, cur, 0);
+ des_const_xmlNode_ptr(n_cur, (const xmlNode *)cur, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlNodeGetLang",
@@ -22325,17 +22511,17 @@ test_xmlNodeGetSpacePreserve(void) {
int mem_base;
int ret_val;
- xmlNodePtr cur; /* the node being checked */
+ xmlNode * cur; /* the node being checked */
int n_cur;
- for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
+ for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
mem_base = xmlMemBlocks();
- cur = gen_xmlNodePtr(n_cur, 0);
+ cur = gen_const_xmlNode_ptr(n_cur, 0);
- ret_val = xmlNodeGetSpacePreserve(cur);
+ ret_val = xmlNodeGetSpacePreserve((const xmlNode *)cur);
desret_int(ret_val);
call_tests++;
- des_xmlNodePtr(n_cur, cur, 0);
+ des_const_xmlNode_ptr(n_cur, (const xmlNode *)cur, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlNodeGetSpacePreserve",
@@ -22357,17 +22543,17 @@ test_xmlNodeIsText(void) {
int mem_base;
int ret_val;
- xmlNodePtr node; /* the node */
+ xmlNode * node; /* the node */
int n_node;
- for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
mem_base = xmlMemBlocks();
- node = gen_xmlNodePtr(n_node, 0);
+ node = gen_const_xmlNode_ptr(n_node, 0);
- ret_val = xmlNodeIsText(node);
+ ret_val = xmlNodeIsText((const xmlNode *)node);
desret_int(ret_val);
call_tests++;
- des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlNode_ptr(n_node, (const xmlNode *)node, 0);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
printf("Leak of %d blocks found in xmlNodeIsText",
@@ -22390,26 +22576,26 @@ test_xmlNodeListGetRawString(void) {
#if defined(LIBXML_TREE_ENABLED)
int mem_base;
xmlChar * ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
- xmlNodePtr list; /* a Node list */
+ xmlNode * list; /* a Node list */
int n_list;
int inLine; /* should we replace entity contents or show their external form */
int n_inLine;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
- for (n_list = 0;n_list < gen_nb_xmlNodePtr;n_list++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
+ for (n_list = 0;n_list < gen_nb_const_xmlNode_ptr;n_list++) {
for (n_inLine = 0;n_inLine < gen_nb_int;n_inLine++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
- list = gen_xmlNodePtr(n_list, 1);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
+ list = gen_const_xmlNode_ptr(n_list, 1);
inLine = gen_int(n_inLine, 2);
- ret_val = xmlNodeListGetRawString(doc, list, inLine);
+ ret_val = xmlNodeListGetRawString((const xmlDoc *)doc, (const xmlNode *)list, inLine);
desret_xmlChar_ptr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
- des_xmlNodePtr(n_list, list, 1);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
+ des_const_xmlNode_ptr(n_list, (const xmlNode *)list, 1);
des_int(n_inLine, inLine, 2);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -22439,24 +22625,24 @@ test_xmlNodeListGetString(void) {
xmlChar * ret_val;
xmlDocPtr doc; /* the document */
int n_doc;
- xmlNodePtr list; /* a Node list */
+ xmlNode * list; /* a Node list */
int n_list;
int inLine; /* should we replace entity contents or show their external form */
int n_inLine;
for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
- for (n_list = 0;n_list < gen_nb_xmlNodePtr;n_list++) {
+ for (n_list = 0;n_list < gen_nb_const_xmlNode_ptr;n_list++) {
for (n_inLine = 0;n_inLine < gen_nb_int;n_inLine++) {
mem_base = xmlMemBlocks();
doc = gen_xmlDocPtr(n_doc, 0);
- list = gen_xmlNodePtr(n_list, 1);
+ list = gen_const_xmlNode_ptr(n_list, 1);
inLine = gen_int(n_inLine, 2);
- ret_val = xmlNodeListGetString(doc, list, inLine);
+ ret_val = xmlNodeListGetString(doc, (const xmlNode *)list, inLine);
desret_xmlChar_ptr(ret_val);
call_tests++;
des_xmlDocPtr(n_doc, doc, 0);
- des_xmlNodePtr(n_list, list, 1);
+ des_const_xmlNode_ptr(n_list, (const xmlNode *)list, 1);
des_int(n_inLine, inLine, 2);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -23584,21 +23770,21 @@ test_xmlStringGetNodeList(void) {
int mem_base;
xmlNodePtr ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
xmlChar * value; /* the value of the attribute */
int n_value;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
value = gen_const_xmlChar_ptr(n_value, 1);
- ret_val = xmlStringGetNodeList(doc, (const xmlChar *)value);
+ ret_val = xmlStringGetNodeList((const xmlDoc *)doc, (const xmlChar *)value);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
des_const_xmlChar_ptr(n_value, (const xmlChar *)value, 1);
xmlResetLastError();
if (mem_base != xmlMemBlocks()) {
@@ -23623,25 +23809,25 @@ test_xmlStringLenGetNodeList(void) {
int mem_base;
xmlNodePtr ret_val;
- xmlDocPtr doc; /* the document */
+ xmlDoc * doc; /* the document */
int n_doc;
xmlChar * value; /* the value of the text */
int n_value;
int len; /* the length of the string value */
int n_len;
- for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+ for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
for (n_len = 0;n_len < gen_nb_int;n_len++) {
mem_base = xmlMemBlocks();
- doc = gen_xmlDocPtr(n_doc, 0);
+ doc = gen_const_xmlDoc_ptr(n_doc, 0);
value = gen_const_xmlChar_ptr(n_value, 1);
len = gen_int(n_len, 2);
- ret_val = xmlStringLenGetNodeList(doc, (const xmlChar *)value, len);
+ ret_val = xmlStringLenGetNodeList((const xmlDoc *)doc, (const xmlChar *)value, len);
desret_xmlNodePtr(ret_val);
call_tests++;
- des_xmlDocPtr(n_doc, doc, 0);
+ des_const_xmlDoc_ptr(n_doc, (const xmlDoc *)doc, 0);
des_const_xmlChar_ptr(n_value, (const xmlChar *)value, 1);
des_int(n_len, len, 2);
xmlResetLastError();
@@ -23844,7 +24030,7 @@ static int
test_xmlValidateNCName(void) {
int test_ret = 0;
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
#ifdef LIBXML_TREE_ENABLED
int mem_base;
int ret_val;
@@ -24015,13 +24201,19 @@ static int
test_tree(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing tree : 139 of 158 functions ...\n");
+ if (quiet == 0) printf("Testing tree : 142 of 164 functions ...\n");
test_ret += test_xmlAddChild();
test_ret += test_xmlAddChildList();
test_ret += test_xmlAddNextSibling();
test_ret += test_xmlAddPrevSibling();
test_ret += test_xmlAddSibling();
test_ret += test_xmlAttrSerializeTxtContent();
+ test_ret += test_xmlBufContent();
+ test_ret += test_xmlBufEnd();
+ test_ret += test_xmlBufGetNodeContent();
+ test_ret += test_xmlBufNodeDump();
+ test_ret += test_xmlBufShrink();
+ test_ret += test_xmlBufUse();
test_ret += test_xmlBufferAdd();
test_ret += test_xmlBufferAddHead();
test_ret += test_xmlBufferCCat();
@@ -26923,7 +27115,7 @@ test_xmlValidatePushCData(void) {
int n_ctxt;
xmlChar * data; /* some character data read */
int n_data;
- int len; /* the lenght of the data */
+ int len; /* the length of the data */
int n_len;
for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
@@ -28405,6 +28597,50 @@ test_xmlOutputBufferFlush(void) {
static int
+test_xmlOutputBufferGetContent(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_OUTPUT_ENABLED)
+ int mem_base;
+ const xmlChar * ret_val;
+ xmlOutputBufferPtr out; /* an xmlOutputBufferPtr */
+ int n_out;
+
+ for (n_out = 0;n_out < gen_nb_xmlOutputBufferPtr;n_out++) {
+ mem_base = xmlMemBlocks();
+ out = gen_xmlOutputBufferPtr(n_out, 0);
+
+ ret_val = xmlOutputBufferGetContent(out);
+ desret_const_xmlChar_ptr(ret_val);
+ call_tests++;
+ des_xmlOutputBufferPtr(n_out, out, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlOutputBufferGetContent",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_out);
+ printf("\n");
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
+test_xmlOutputBufferGetSize(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
+static int
test_xmlOutputBufferWrite(void) {
int test_ret = 0;
@@ -28948,7 +29184,7 @@ static int
test_xmlIO(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing xmlIO : 39 of 48 functions ...\n");
+ if (quiet == 0) printf("Testing xmlIO : 40 of 50 functions ...\n");
test_ret += test_xmlAllocOutputBuffer();
test_ret += test_xmlAllocParserInputBuffer();
test_ret += test_xmlCheckFilename();
@@ -28974,6 +29210,8 @@ test_xmlIO(void) {
test_ret += test_xmlOutputBufferCreateFile();
test_ret += test_xmlOutputBufferCreateFilename();
test_ret += test_xmlOutputBufferFlush();
+ test_ret += test_xmlOutputBufferGetContent();
+ test_ret += test_xmlOutputBufferGetSize();
test_ret += test_xmlOutputBufferWrite();
test_ret += test_xmlOutputBufferWriteEscape();
test_ret += test_xmlOutputBufferWriteString();
@@ -32950,7 +33188,7 @@ test_xmlExpGetLanguage(void) {
int n_exp;
xmlChar ** langList; /* where to store the tokens */
int n_langList;
- int len; /* the allocated lenght of @list */
+ int len; /* the allocated length of @list */
int n_len;
for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) {
@@ -33005,7 +33243,7 @@ test_xmlExpGetStart(void) {
int n_exp;
xmlChar ** tokList; /* where to store the tokens */
int n_tokList;
- int len; /* the allocated lenght of @list */
+ int len; /* the allocated length of @list */
int n_len;
for (n_ctxt = 0;n_ctxt < gen_nb_xmlExpCtxtPtr;n_ctxt++) {
@@ -34604,6 +34842,55 @@ test_xmlSchemaValidateOneElement(void) {
static int
+test_xmlSchemaValidateSetFilename(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+ int mem_base;
+ xmlSchemaValidCtxtPtr vctxt; /* the schema validation context */
+ int n_vctxt;
+ const char * filename; /* the file name */
+ int n_filename;
+
+ for (n_vctxt = 0;n_vctxt < gen_nb_xmlSchemaValidCtxtPtr;n_vctxt++) {
+ for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
+ mem_base = xmlMemBlocks();
+ vctxt = gen_xmlSchemaValidCtxtPtr(n_vctxt, 0);
+ filename = gen_filepath(n_filename, 1);
+
+ xmlSchemaValidateSetFilename(vctxt, filename);
+ call_tests++;
+ des_xmlSchemaValidCtxtPtr(n_vctxt, vctxt, 0);
+ des_filepath(n_filename, filename, 1);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlSchemaValidateSetFilename",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_vctxt);
+ printf(" %d", n_filename);
+ printf("\n");
+ }
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
+test_xmlSchemaValidateSetLocator(void) {
+ int test_ret = 0;
+
+
+ /* missing type support */
+ return(test_ret);
+}
+
+
+static int
test_xmlSchemaValidateStream(void) {
int test_ret = 0;
@@ -34668,7 +34955,7 @@ static int
test_xmlschemas(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing xmlschemas : 15 of 25 functions ...\n");
+ if (quiet == 0) printf("Testing xmlschemas : 16 of 27 functions ...\n");
test_ret += test_xmlSchemaDump();
test_ret += test_xmlSchemaGetParserErrors();
test_ret += test_xmlSchemaGetValidErrors();
@@ -34690,6 +34977,8 @@ test_xmlschemas(void) {
test_ret += test_xmlSchemaValidateDoc();
test_ret += test_xmlSchemaValidateFile();
test_ret += test_xmlSchemaValidateOneElement();
+ test_ret += test_xmlSchemaValidateSetFilename();
+ test_ret += test_xmlSchemaValidateSetLocator();
test_ret += test_xmlSchemaValidateStream();
if (test_ret != 0)
@@ -43571,6 +43860,47 @@ test_xmlTextWriterSetIndentString(void) {
static int
+test_xmlTextWriterSetQuoteChar(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_WRITER_ENABLED)
+ int mem_base;
+ int ret_val;
+ xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
+ int n_writer;
+ xmlChar quotechar; /* the quote character */
+ int n_quotechar;
+
+ for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
+ for (n_quotechar = 0;n_quotechar < gen_nb_xmlChar;n_quotechar++) {
+ mem_base = xmlMemBlocks();
+ writer = gen_xmlTextWriterPtr(n_writer, 0);
+ quotechar = gen_xmlChar(n_quotechar, 1);
+
+ ret_val = xmlTextWriterSetQuoteChar(writer, quotechar);
+ desret_int(ret_val);
+ call_tests++;
+ des_xmlTextWriterPtr(n_writer, writer, 0);
+ des_xmlChar(n_quotechar, quotechar, 1);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlTextWriterSetQuoteChar",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_writer);
+ printf(" %d", n_quotechar);
+ printf("\n");
+ }
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlTextWriterStartAttribute(void) {
int test_ret = 0;
@@ -45432,7 +45762,7 @@ static int
test_xmlwriter(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing xmlwriter : 51 of 79 functions ...\n");
+ if (quiet == 0) printf("Testing xmlwriter : 52 of 80 functions ...\n");
test_ret += test_xmlNewTextWriter();
test_ret += test_xmlNewTextWriterFilename();
test_ret += test_xmlNewTextWriterMemory();
@@ -45452,6 +45782,7 @@ test_xmlwriter(void) {
test_ret += test_xmlTextWriterFullEndElement();
test_ret += test_xmlTextWriterSetIndent();
test_ret += test_xmlTextWriterSetIndentString();
+ test_ret += test_xmlTextWriterSetQuoteChar();
test_ret += test_xmlTextWriterStartAttribute();
test_ret += test_xmlTextWriterStartAttributeNS();
test_ret += test_xmlTextWriterStartCDATA();
@@ -46542,6 +46873,54 @@ test_xmlXPathNewContext(void) {
static int
+test_xmlXPathNodeEval(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_XPATH_ENABLED)
+ int mem_base;
+ xmlXPathObjectPtr ret_val;
+ xmlNodePtr node; /* the node to to use as the context node */
+ int n_node;
+ xmlChar * str; /* the XPath expression */
+ int n_str;
+ xmlXPathContextPtr ctx; /* the XPath context */
+ int n_ctx;
+
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
+ for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
+ mem_base = xmlMemBlocks();
+ node = gen_xmlNodePtr(n_node, 0);
+ str = gen_const_xmlChar_ptr(n_str, 1);
+ ctx = gen_xmlXPathContextPtr(n_ctx, 2);
+
+ ret_val = xmlXPathNodeEval(node, (const xmlChar *)str, ctx);
+ desret_xmlXPathObjectPtr(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_node, node, 0);
+ des_const_xmlChar_ptr(n_str, (const xmlChar *)str, 1);
+ des_xmlXPathContextPtr(n_ctx, ctx, 2);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlXPathNodeEval",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_node);
+ printf(" %d", n_str);
+ printf(" %d", n_ctx);
+ printf("\n");
+ }
+ }
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlXPathNodeSetCreate(void) {
int test_ret = 0;
@@ -46642,11 +47021,52 @@ test_xmlXPathOrderDocElems(void) {
return(test_ret);
}
+
+static int
+test_xmlXPathSetContextNode(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_XPATH_ENABLED)
+ int mem_base;
+ int ret_val;
+ xmlNodePtr node; /* the node to to use as the context node */
+ int n_node;
+ xmlXPathContextPtr ctx; /* the XPath context */
+ int n_ctx;
+
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
+ mem_base = xmlMemBlocks();
+ node = gen_xmlNodePtr(n_node, 0);
+ ctx = gen_xmlXPathContextPtr(n_ctx, 1);
+
+ ret_val = xmlXPathSetContextNode(node, ctx);
+ desret_int(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_node, node, 0);
+ des_xmlXPathContextPtr(n_ctx, ctx, 1);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlXPathSetContextNode",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_node);
+ printf(" %d", n_ctx);
+ printf("\n");
+ }
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
static int
test_xpath(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing xpath : 30 of 38 functions ...\n");
+ if (quiet == 0) printf("Testing xpath : 32 of 40 functions ...\n");
test_ret += test_xmlXPathCastBooleanToNumber();
test_ret += test_xmlXPathCastBooleanToString();
test_ret += test_xmlXPathCastNodeSetToBoolean();
@@ -46677,9 +47097,11 @@ test_xpath(void) {
test_ret += test_xmlXPathIsInf();
test_ret += test_xmlXPathIsNaN();
test_ret += test_xmlXPathNewContext();
+ test_ret += test_xmlXPathNodeEval();
test_ret += test_xmlXPathNodeSetCreate();
test_ret += test_xmlXPathObjectCopy();
test_ret += test_xmlXPathOrderDocElems();
+ test_ret += test_xmlXPathSetContextNode();
if (test_ret != 0)
printf("Module xpath: %d errors\n", test_ret);
@@ -48815,6 +49237,7 @@ test_xmlXPathNodeSetAdd(void) {
#if defined(LIBXML_XPATH_ENABLED)
int mem_base;
+ int ret_val;
xmlNodeSetPtr cur; /* the initial node set */
int n_cur;
xmlNodePtr val; /* a new xmlNodePtr */
@@ -48826,7 +49249,8 @@ test_xmlXPathNodeSetAdd(void) {
cur = gen_xmlNodeSetPtr(n_cur, 0);
val = gen_xmlNodePtr(n_val, 1);
- xmlXPathNodeSetAdd(cur, val);
+ ret_val = xmlXPathNodeSetAdd(cur, val);
+ desret_int(ret_val);
call_tests++;
des_xmlNodeSetPtr(n_cur, cur, 0);
des_xmlNodePtr(n_val, val, 1);
@@ -48854,6 +49278,7 @@ test_xmlXPathNodeSetAddNs(void) {
#if defined(LIBXML_XPATH_ENABLED)
int mem_base;
+ int ret_val;
xmlNodeSetPtr cur; /* the initial node set */
int n_cur;
xmlNodePtr node; /* the hosting node */
@@ -48869,7 +49294,8 @@ test_xmlXPathNodeSetAddNs(void) {
node = gen_xmlNodePtr(n_node, 1);
ns = gen_xmlNsPtr(n_ns, 2);
- xmlXPathNodeSetAddNs(cur, node, ns);
+ ret_val = xmlXPathNodeSetAddNs(cur, node, ns);
+ desret_int(ret_val);
call_tests++;
des_xmlNodeSetPtr(n_cur, cur, 0);
des_xmlNodePtr(n_node, node, 1);
@@ -48900,6 +49326,7 @@ test_xmlXPathNodeSetAddUnique(void) {
#if defined(LIBXML_XPATH_ENABLED)
int mem_base;
+ int ret_val;
xmlNodeSetPtr cur; /* the initial node set */
int n_cur;
xmlNodePtr val; /* a new xmlNodePtr */
@@ -48911,7 +49338,8 @@ test_xmlXPathNodeSetAddUnique(void) {
cur = gen_xmlNodeSetPtr(n_cur, 0);
val = gen_xmlNodePtr(n_val, 1);
- xmlXPathNodeSetAddUnique(cur, val);
+ ret_val = xmlXPathNodeSetAddUnique(cur, val);
+ desret_int(ret_val);
call_tests++;
des_xmlNodeSetPtr(n_cur, cur, 0);
des_xmlNodePtr(n_val, val, 1);
diff --git a/testchar.c b/testchar.c
index 3bfd9c0..0d08792 100644
--- a/testchar.c
+++ b/testchar.c
@@ -10,6 +10,8 @@
#include <libxml/parser.h>
#include <libxml/parserInternals.h>
+#include "buf.h"
+
int lastError;
static void errorHandler(void *unused, xmlErrorPtr err) {
@@ -121,7 +123,7 @@ static void testDocumentRangeByte2(xmlParserCtxtPtr ctxt, char *document,
* We should see no error in remaning cases
*/
else if ((lastError != 0) || (res == NULL)) {
- fprintf(stderr,
+ fprintf(stderr,
"Failed to parse document for Bytes 0x%02X 0x%02X\n", i, j);
}
if (res != NULL)
@@ -409,7 +411,7 @@ static void testCharRangeByte3(xmlParserCtxtPtr ctxt, char *data) {
* We should see no error in remaining cases
*/
else if ((lastError != 0) || (len != 3)) {
- fprintf(stderr,
+ fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X\n",
i, j, K);
}
@@ -418,7 +420,7 @@ static void testCharRangeByte3(xmlParserCtxtPtr ctxt, char *data) {
* Finally check the value is right
*/
else if (c != value) {
- fprintf(stderr,
+ fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X: expect %d got %d\n",
i, j, data[2], value, c);
}
@@ -489,7 +491,7 @@ static void testCharRangeByte4(xmlParserCtxtPtr ctxt, char *data) {
* There are values in that range that are not allowed in XML-1.0
*/
else if (((value > 0xD7FF) && (value <0xE000)) ||
- ((value > 0xFFFD) && (value <0x10000)) ||
+ ((value > 0xFFFD) && (value <0x10000)) ||
(value > 0x10FFFF)) {
if (lastError != XML_ERR_INVALID_CHAR)
fprintf(stderr,
@@ -501,7 +503,7 @@ static void testCharRangeByte4(xmlParserCtxtPtr ctxt, char *data) {
* We should see no error in remaining cases
*/
else if ((lastError != 0) || (len != 4)) {
- fprintf(stderr,
+ fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X\n",
i, j, K);
}
@@ -510,7 +512,7 @@ static void testCharRangeByte4(xmlParserCtxtPtr ctxt, char *data) {
* Finally check the value is right
*/
else if (c != value) {
- fprintf(stderr,
+ fprintf(stderr,
"Failed to parse char for Bytes 0x%02X 0x%02X 0x%02X: expect %d got %d\n",
i, j, data[2], value, c);
}
@@ -558,9 +560,9 @@ static void testCharRanges(void) {
}
input->filename = NULL;
input->buf = buf;
- input->base = input->buf->buffer->content;
- input->cur = input->buf->buffer->content;
- input->end = &input->buf->buffer->content[4];
+ input->cur =
+ input->base = xmlBufContent(input->buf->buffer);
+ input->end = input->base + 4;
inputPush(ctxt, input);
printf("testing char range: 1");
diff --git a/testlimits.c b/testlimits.c
new file mode 100644
index 0000000..577f593
--- /dev/null
+++ b/testlimits.c
@@ -0,0 +1,1637 @@
+/*
+ * testlimits.c: C program to run libxml2 regression tests checking various
+ * limits in document size. Will consume a lot of RAM and CPU cycles
+ *
+ * To compile on Unixes:
+ * cc -o testlimits `xml2-config --cflags` testlimits.c `xml2-config --libs` -lpthread
+ *
+ * See Copyright for the status of this software.
+ *
+ * daniel@veillard.com
+ */
+
+#include "libxml.h"
+#include <stdio.h>
+
+#if !defined(_WIN32) || defined(__CYGWIN__)
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/tree.h>
+#include <libxml/uri.h>
+#ifdef LIBXML_READER_ENABLED
+#include <libxml/xmlreader.h>
+#endif
+
+static int verbose = 0;
+static int tests_quiet = 0;
+
+/************************************************************************
+ * *
+ * time handling *
+ * *
+ ************************************************************************/
+
+/* maximum time for one parsing before declaring a timeout */
+#define MAX_TIME 2 /* seconds */
+
+static clock_t t0;
+int timeout = 0;
+
+static void reset_timout(void) {
+ timeout = 0;
+ t0 = clock();
+}
+
+static int check_time(void) {
+ clock_t tnow = clock();
+ if (((tnow - t0) / CLOCKS_PER_SEC) > MAX_TIME) {
+ timeout = 1;
+ return(0);
+ }
+ return(1);
+}
+
+/************************************************************************
+ * *
+ * Huge document generator *
+ * *
+ ************************************************************************/
+
+#include <libxml/xmlIO.h>
+
+/*
+ * Huge documents are built using fixed start and end chunks
+ * and filling between the two an unconventional amount of char data
+ */
+typedef struct hugeTest hugeTest;
+typedef hugeTest *hugeTestPtr;
+struct hugeTest {
+ const char *description;
+ const char *name;
+ const char *start;
+ const char *end;
+};
+
+static struct hugeTest hugeTests[] = {
+ { "Huge text node", "huge:textNode", "<foo>", "</foo>" },
+ { "Huge attribute node", "huge:attrNode", "<foo bar='", "'/>" },
+ { "Huge comment node", "huge:commentNode", "<foo><!--", "--></foo>" },
+ { "Huge PI node", "huge:piNode", "<foo><?bar ", "?></foo>" },
+};
+
+static const char *current;
+static int rlen;
+static unsigned int currentTest = 0;
+static int instate = 0;
+
+/**
+ * hugeMatch:
+ * @URI: an URI to test
+ *
+ * Check for an huge: query
+ *
+ * Returns 1 if yes and 0 if another Input module should be used
+ */
+static int
+hugeMatch(const char * URI) {
+ if ((URI != NULL) && (!strncmp(URI, "huge:", 5)))
+ return(1);
+ return(0);
+}
+
+/**
+ * hugeOpen:
+ * @URI: an URI to test
+ *
+ * Return a pointer to the huge: query handler, in this example simply
+ * the current pointer...
+ *
+ * Returns an Input context or NULL in case or error
+ */
+static void *
+hugeOpen(const char * URI) {
+ if ((URI == NULL) || (strncmp(URI, "huge:", 5)))
+ return(NULL);
+
+ for (currentTest = 0;currentTest < sizeof(hugeTests)/sizeof(hugeTests[0]);
+ currentTest++)
+ if (!strcmp(hugeTests[currentTest].name, URI))
+ goto found;
+
+ return(NULL);
+
+found:
+ rlen = strlen(hugeTests[currentTest].start);
+ current = hugeTests[currentTest].start;
+ instate = 0;
+ return((void *) current);
+}
+
+/**
+ * hugeClose:
+ * @context: the read context
+ *
+ * Close the huge: query handler
+ *
+ * Returns 0 or -1 in case of error
+ */
+static int
+hugeClose(void * context) {
+ if (context == NULL) return(-1);
+ fprintf(stderr, "\n");
+ return(0);
+}
+
+#define CHUNK 4096
+
+char filling[CHUNK + 1];
+
+static void fillFilling(void) {
+ int i;
+
+ for (i = 0;i < CHUNK;i++) {
+ filling[i] = 'a';
+ }
+ filling[CHUNK] = 0;
+}
+
+size_t maxlen = 64 * 1024 * 1024;
+size_t curlen = 0;
+size_t dotlen;
+
+/**
+ * hugeRead:
+ * @context: the read context
+ * @buffer: where to store data
+ * @len: number of bytes to read
+ *
+ * Implement an huge: query read.
+ *
+ * Returns the number of bytes read or -1 in case of error
+ */
+static int
+hugeRead(void *context, char *buffer, int len)
+{
+ if ((context == NULL) || (buffer == NULL) || (len < 0))
+ return (-1);
+
+ if (instate == 0) {
+ if (len >= rlen) {
+ len = rlen;
+ rlen = 0;
+ memcpy(buffer, current, len);
+ instate = 1;
+ curlen = 0;
+ dotlen = maxlen / 10;
+ } else {
+ memcpy(buffer, current, len);
+ rlen -= len;
+ current += len;
+ }
+ } else if (instate == 2) {
+ if (len >= rlen) {
+ len = rlen;
+ rlen = 0;
+ memcpy(buffer, current, len);
+ instate = 3;
+ curlen = 0;
+ } else {
+ memcpy(buffer, current, len);
+ rlen -= len;
+ current += len;
+ }
+ } else if (instate == 1) {
+ if (len > CHUNK) len = CHUNK;
+ memcpy(buffer, &filling[0], len);
+ curlen += len;
+ if (curlen >= maxlen) {
+ rlen = strlen(hugeTests[currentTest].end);
+ current = hugeTests[currentTest].end;
+ instate = 2;
+ } else {
+ if (curlen > dotlen) {
+ fprintf(stderr, ".");
+ dotlen += maxlen / 10;
+ }
+ }
+ } else
+ len = 0;
+ return (len);
+}
+
+/************************************************************************
+ * *
+ * Crazy document generator *
+ * *
+ ************************************************************************/
+
+unsigned int crazy_indx = 0;
+
+const char *crazy = "<?xml version='1.0' encoding='UTF-8'?>\
+<?tst ?>\
+<!-- tst -->\
+<!DOCTYPE foo [\
+<?tst ?>\
+<!-- tst -->\
+<!ELEMENT foo (#PCDATA)>\
+<!ELEMENT p (#PCDATA|emph)* >\
+]>\
+<?tst ?>\
+<!-- tst -->\
+<foo bar='foo'>\
+<?tst ?>\
+<!-- tst -->\
+foo\
+<![CDATA[ ]]>\
+</foo>\
+<?tst ?>\
+<!-- tst -->";
+
+/**
+ * crazyMatch:
+ * @URI: an URI to test
+ *
+ * Check for a crazy: query
+ *
+ * Returns 1 if yes and 0 if another Input module should be used
+ */
+static int
+crazyMatch(const char * URI) {
+ if ((URI != NULL) && (!strncmp(URI, "crazy:", 6)))
+ return(1);
+ return(0);
+}
+
+/**
+ * crazyOpen:
+ * @URI: an URI to test
+ *
+ * Return a pointer to the crazy: query handler, in this example simply
+ * the current pointer...
+ *
+ * Returns an Input context or NULL in case or error
+ */
+static void *
+crazyOpen(const char * URI) {
+ if ((URI == NULL) || (strncmp(URI, "crazy:", 6)))
+ return(NULL);
+
+ if (crazy_indx > strlen(crazy))
+ return(NULL);
+ reset_timout();
+ rlen = crazy_indx;
+ current = &crazy[0];
+ instate = 0;
+ return((void *) current);
+}
+
+/**
+ * crazyClose:
+ * @context: the read context
+ *
+ * Close the crazy: query handler
+ *
+ * Returns 0 or -1 in case of error
+ */
+static int
+crazyClose(void * context) {
+ if (context == NULL) return(-1);
+ return(0);
+}
+
+
+/**
+ * crazyRead:
+ * @context: the read context
+ * @buffer: where to store data
+ * @len: number of bytes to read
+ *
+ * Implement an crazy: query read.
+ *
+ * Returns the number of bytes read or -1 in case of error
+ */
+static int
+crazyRead(void *context, char *buffer, int len)
+{
+ if ((context == NULL) || (buffer == NULL) || (len < 0))
+ return (-1);
+
+ if ((check_time() <= 0) && (instate == 1)) {
+ fprintf(stderr, "\ntimeout in crazy(%d)\n", crazy_indx);
+ rlen = strlen(crazy) - crazy_indx;
+ current = &crazy[crazy_indx];
+ instate = 2;
+ }
+ if (instate == 0) {
+ if (len >= rlen) {
+ len = rlen;
+ rlen = 0;
+ memcpy(buffer, current, len);
+ instate = 1;
+ curlen = 0;
+ } else {
+ memcpy(buffer, current, len);
+ rlen -= len;
+ current += len;
+ }
+ } else if (instate == 2) {
+ if (len >= rlen) {
+ len = rlen;
+ rlen = 0;
+ memcpy(buffer, current, len);
+ instate = 3;
+ curlen = 0;
+ } else {
+ memcpy(buffer, current, len);
+ rlen -= len;
+ current += len;
+ }
+ } else if (instate == 1) {
+ if (len > CHUNK) len = CHUNK;
+ memcpy(buffer, &filling[0], len);
+ curlen += len;
+ if (curlen >= maxlen) {
+ rlen = strlen(crazy) - crazy_indx;
+ current = &crazy[crazy_indx];
+ instate = 2;
+ }
+ } else
+ len = 0;
+ return (len);
+}
+/************************************************************************
+ * *
+ * Libxml2 specific routines *
+ * *
+ ************************************************************************/
+
+static int nb_tests = 0;
+static int nb_errors = 0;
+static int nb_leaks = 0;
+static int extraMemoryFromResolver = 0;
+
+/*
+ * We need to trap calls to the resolver to not account memory for the catalog
+ * which is shared to the current running test. We also don't want to have
+ * network downloads modifying tests.
+ */
+static xmlParserInputPtr
+testExternalEntityLoader(const char *URL, const char *ID,
+ xmlParserCtxtPtr ctxt) {
+ xmlParserInputPtr ret;
+ int memused = xmlMemUsed();
+
+ ret = xmlNoNetExternalEntityLoader(URL, ID, ctxt);
+ extraMemoryFromResolver += xmlMemUsed() - memused;
+
+ return(ret);
+}
+
+/*
+ * Trapping the error messages at the generic level to grab the equivalent of
+ * stderr messages on CLI tools.
+ */
+static char testErrors[32769];
+static int testErrorsSize = 0;
+
+static void XMLCDECL
+channel(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
+ va_list args;
+ int res;
+
+ if (testErrorsSize >= 32768)
+ return;
+ va_start(args, msg);
+ res = vsnprintf(&testErrors[testErrorsSize],
+ 32768 - testErrorsSize,
+ msg, args);
+ va_end(args);
+ if (testErrorsSize + res >= 32768) {
+ /* buffer is full */
+ testErrorsSize = 32768;
+ testErrors[testErrorsSize] = 0;
+ } else {
+ testErrorsSize += res;
+ }
+ testErrors[testErrorsSize] = 0;
+}
+
+/**
+ * xmlParserPrintFileContext:
+ * @input: an xmlParserInputPtr input
+ *
+ * Displays current context within the input content for error tracking
+ */
+
+static void
+xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
+ xmlGenericErrorFunc chanl, void *data ) {
+ const xmlChar *cur, *base;
+ unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */
+ xmlChar content[81]; /* space for 80 chars + line terminator */
+ xmlChar *ctnt;
+
+ if (input == NULL) return;
+ cur = input->cur;
+ base = input->base;
+ /* skip backwards over any end-of-lines */
+ while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) {
+ cur--;
+ }
+ n = 0;
+ /* search backwards for beginning-of-line (to max buff size) */
+ while ((n++ < (sizeof(content)-1)) && (cur > base) &&
+ (*(cur) != '\n') && (*(cur) != '\r'))
+ cur--;
+ if ((*(cur) == '\n') || (*(cur) == '\r')) cur++;
+ /* calculate the error position in terms of the current position */
+ col = input->cur - cur;
+ /* search forward for end-of-line (to max buff size) */
+ n = 0;
+ ctnt = content;
+ /* copy selected text to our buffer */
+ while ((*cur != 0) && (*(cur) != '\n') &&
+ (*(cur) != '\r') && (n < sizeof(content)-1)) {
+ *ctnt++ = *cur++;
+ n++;
+ }
+ *ctnt = 0;
+ /* print out the selected text */
+ chanl(data ,"%s\n", content);
+ /* create blank line with problem pointer */
+ n = 0;
+ ctnt = content;
+ /* (leave buffer space for pointer + line terminator) */
+ while ((n<col) && (n++ < sizeof(content)-2) && (*ctnt != 0)) {
+ if (*(ctnt) != '\t')
+ *(ctnt) = ' ';
+ ctnt++;
+ }
+ *ctnt++ = '^';
+ *ctnt = 0;
+ chanl(data ,"%s\n", content);
+}
+
+static void
+testStructuredErrorHandler(void *ctx ATTRIBUTE_UNUSED, xmlErrorPtr err) {
+ char *file = NULL;
+ int line = 0;
+ int code = -1;
+ int domain;
+ void *data = NULL;
+ const char *str;
+ const xmlChar *name = NULL;
+ xmlNodePtr node;
+ xmlErrorLevel level;
+ xmlParserInputPtr input = NULL;
+ xmlParserInputPtr cur = NULL;
+ xmlParserCtxtPtr ctxt = NULL;
+
+ if (err == NULL)
+ return;
+
+ file = err->file;
+ line = err->line;
+ code = err->code;
+ domain = err->domain;
+ level = err->level;
+ node = err->node;
+ if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) ||
+ (domain == XML_FROM_DTD) || (domain == XML_FROM_NAMESPACE) ||
+ (domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) {
+ ctxt = err->ctxt;
+ }
+ str = err->message;
+
+ if (code == XML_ERR_OK)
+ return;
+
+ if ((node != NULL) && (node->type == XML_ELEMENT_NODE))
+ name = node->name;
+
+ /*
+ * Maintain the compatibility with the legacy error handling
+ */
+ if (ctxt != NULL) {
+ input = ctxt->input;
+ if ((input != NULL) && (input->filename == NULL) &&
+ (ctxt->inputNr > 1)) {
+ cur = input;
+ input = ctxt->inputTab[ctxt->inputNr - 2];
+ }
+ if (input != NULL) {
+ if (input->filename)
+ channel(data, "%s:%d: ", input->filename, input->line);
+ else if ((line != 0) && (domain == XML_FROM_PARSER))
+ channel(data, "Entity: line %d: ", input->line);
+ }
+ } else {
+ if (file != NULL)
+ channel(data, "%s:%d: ", file, line);
+ else if ((line != 0) && (domain == XML_FROM_PARSER))
+ channel(data, "Entity: line %d: ", line);
+ }
+ if (name != NULL) {
+ channel(data, "element %s: ", name);
+ }
+ if (code == XML_ERR_OK)
+ return;
+ switch (domain) {
+ case XML_FROM_PARSER:
+ channel(data, "parser ");
+ break;
+ case XML_FROM_NAMESPACE:
+ channel(data, "namespace ");
+ break;
+ case XML_FROM_DTD:
+ case XML_FROM_VALID:
+ channel(data, "validity ");
+ break;
+ case XML_FROM_HTML:
+ channel(data, "HTML parser ");
+ break;
+ case XML_FROM_MEMORY:
+ channel(data, "memory ");
+ break;
+ case XML_FROM_OUTPUT:
+ channel(data, "output ");
+ break;
+ case XML_FROM_IO:
+ channel(data, "I/O ");
+ break;
+ case XML_FROM_XINCLUDE:
+ channel(data, "XInclude ");
+ break;
+ case XML_FROM_XPATH:
+ channel(data, "XPath ");
+ break;
+ case XML_FROM_XPOINTER:
+ channel(data, "parser ");
+ break;
+ case XML_FROM_REGEXP:
+ channel(data, "regexp ");
+ break;
+ case XML_FROM_MODULE:
+ channel(data, "module ");
+ break;
+ case XML_FROM_SCHEMASV:
+ channel(data, "Schemas validity ");
+ break;
+ case XML_FROM_SCHEMASP:
+ channel(data, "Schemas parser ");
+ break;
+ case XML_FROM_RELAXNGP:
+ channel(data, "Relax-NG parser ");
+ break;
+ case XML_FROM_RELAXNGV:
+ channel(data, "Relax-NG validity ");
+ break;
+ case XML_FROM_CATALOG:
+ channel(data, "Catalog ");
+ break;
+ case XML_FROM_C14N:
+ channel(data, "C14N ");
+ break;
+ case XML_FROM_XSLT:
+ channel(data, "XSLT ");
+ break;
+ default:
+ break;
+ }
+ if (code == XML_ERR_OK)
+ return;
+ switch (level) {
+ case XML_ERR_NONE:
+ channel(data, ": ");
+ break;
+ case XML_ERR_WARNING:
+ channel(data, "warning : ");
+ break;
+ case XML_ERR_ERROR:
+ channel(data, "error : ");
+ break;
+ case XML_ERR_FATAL:
+ channel(data, "error : ");
+ break;
+ }
+ if (code == XML_ERR_OK)
+ return;
+ if (str != NULL) {
+ int len;
+ len = xmlStrlen((const xmlChar *)str);
+ if ((len > 0) && (str[len - 1] != '\n'))
+ channel(data, "%s\n", str);
+ else
+ channel(data, "%s", str);
+ } else {
+ channel(data, "%s\n", "out of memory error");
+ }
+ if (code == XML_ERR_OK)
+ return;
+
+ if (ctxt != NULL) {
+ xmlParserPrintFileContextInternal(input, channel, data);
+ if (cur != NULL) {
+ if (cur->filename)
+ channel(data, "%s:%d: \n", cur->filename, cur->line);
+ else if ((line != 0) && (domain == XML_FROM_PARSER))
+ channel(data, "Entity: line %d: \n", cur->line);
+ xmlParserPrintFileContextInternal(cur, channel, data);
+ }
+ }
+ if ((domain == XML_FROM_XPATH) && (err->str1 != NULL) &&
+ (err->int1 < 100) &&
+ (err->int1 < xmlStrlen((const xmlChar *)err->str1))) {
+ xmlChar buf[150];
+ int i;
+
+ channel(data, "%s\n", err->str1);
+ for (i=0;i < err->int1;i++)
+ buf[i] = ' ';
+ buf[i++] = '^';
+ buf[i] = 0;
+ channel(data, "%s\n", buf);
+ }
+}
+
+static void
+initializeLibxml2(void) {
+ xmlGetWarningsDefaultValue = 0;
+ xmlPedanticParserDefault(0);
+
+ xmlMemSetup(xmlMemFree, xmlMemMalloc, xmlMemRealloc, xmlMemoryStrdup);
+ xmlInitParser();
+ xmlSetExternalEntityLoader(testExternalEntityLoader);
+ xmlSetStructuredErrorFunc(NULL, testStructuredErrorHandler);
+ /*
+ * register the new I/O handlers
+ */
+ if (xmlRegisterInputCallbacks(hugeMatch, hugeOpen,
+ hugeRead, hugeClose) < 0) {
+ fprintf(stderr, "failed to register Huge handlers\n");
+ exit(1);
+ }
+ if (xmlRegisterInputCallbacks(crazyMatch, crazyOpen,
+ crazyRead, crazyClose) < 0) {
+ fprintf(stderr, "failed to register Crazy handlers\n");
+ exit(1);
+ }
+}
+
+/************************************************************************
+ * *
+ * SAX empty callbacks *
+ * *
+ ************************************************************************/
+
+unsigned long callbacks = 0;
+
+/**
+ * isStandaloneCallback:
+ * @ctxt: An XML parser context
+ *
+ * Is this document tagged standalone ?
+ *
+ * Returns 1 if true
+ */
+static int
+isStandaloneCallback(void *ctx ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return (0);
+}
+
+/**
+ * hasInternalSubsetCallback:
+ * @ctxt: An XML parser context
+ *
+ * Does this document has an internal subset
+ *
+ * Returns 1 if true
+ */
+static int
+hasInternalSubsetCallback(void *ctx ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return (0);
+}
+
+/**
+ * hasExternalSubsetCallback:
+ * @ctxt: An XML parser context
+ *
+ * Does this document has an external subset
+ *
+ * Returns 1 if true
+ */
+static int
+hasExternalSubsetCallback(void *ctx ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return (0);
+}
+
+/**
+ * internalSubsetCallback:
+ * @ctxt: An XML parser context
+ *
+ * Does this document has an internal subset
+ */
+static void
+internalSubsetCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ const xmlChar * ExternalID ATTRIBUTE_UNUSED,
+ const xmlChar * SystemID ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * externalSubsetCallback:
+ * @ctxt: An XML parser context
+ *
+ * Does this document has an external subset
+ */
+static void
+externalSubsetCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ const xmlChar * ExternalID ATTRIBUTE_UNUSED,
+ const xmlChar * SystemID ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * resolveEntityCallback:
+ * @ctxt: An XML parser context
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ *
+ * Special entity resolver, better left to the parser, it has
+ * more context than the application layer.
+ * The default behaviour is to NOT resolve the entities, in that case
+ * the ENTITY_REF nodes are built in the structure (and the parameter
+ * values).
+ *
+ * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ */
+static xmlParserInputPtr
+resolveEntityCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * publicId ATTRIBUTE_UNUSED,
+ const xmlChar * systemId ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return (NULL);
+}
+
+/**
+ * getEntityCallback:
+ * @ctxt: An XML parser context
+ * @name: The entity name
+ *
+ * Get an entity by name
+ *
+ * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ */
+static xmlEntityPtr
+getEntityCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return (NULL);
+}
+
+/**
+ * getParameterEntityCallback:
+ * @ctxt: An XML parser context
+ * @name: The entity name
+ *
+ * Get a parameter entity by name
+ *
+ * Returns the xmlParserInputPtr
+ */
+static xmlEntityPtr
+getParameterEntityCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return (NULL);
+}
+
+
+/**
+ * entityDeclCallback:
+ * @ctxt: An XML parser context
+ * @name: the entity name
+ * @type: the entity type
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ * @content: the entity value (without processing).
+ *
+ * An entity definition has been parsed
+ */
+static void
+entityDeclCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ int type ATTRIBUTE_UNUSED,
+ const xmlChar * publicId ATTRIBUTE_UNUSED,
+ const xmlChar * systemId ATTRIBUTE_UNUSED,
+ xmlChar * content ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * attributeDeclCallback:
+ * @ctxt: An XML parser context
+ * @name: the attribute name
+ * @type: the attribute type
+ *
+ * An attribute definition has been parsed
+ */
+static void
+attributeDeclCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * elem ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ int type ATTRIBUTE_UNUSED, int def ATTRIBUTE_UNUSED,
+ const xmlChar * defaultValue ATTRIBUTE_UNUSED,
+ xmlEnumerationPtr tree ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * elementDeclCallback:
+ * @ctxt: An XML parser context
+ * @name: the element name
+ * @type: the element type
+ * @content: the element value (without processing).
+ *
+ * An element definition has been parsed
+ */
+static void
+elementDeclCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ int type ATTRIBUTE_UNUSED,
+ xmlElementContentPtr content ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * notationDeclCallback:
+ * @ctxt: An XML parser context
+ * @name: The name of the notation
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ *
+ * What to do when a notation declaration has been parsed.
+ */
+static void
+notationDeclCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ const xmlChar * publicId ATTRIBUTE_UNUSED,
+ const xmlChar * systemId ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * unparsedEntityDeclCallback:
+ * @ctxt: An XML parser context
+ * @name: The name of the entity
+ * @publicId: The public ID of the entity
+ * @systemId: The system ID of the entity
+ * @notationName: the name of the notation
+ *
+ * What to do when an unparsed entity declaration is parsed
+ */
+static void
+unparsedEntityDeclCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ const xmlChar * publicId ATTRIBUTE_UNUSED,
+ const xmlChar * systemId ATTRIBUTE_UNUSED,
+ const xmlChar * notationName ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * setDocumentLocatorCallback:
+ * @ctxt: An XML parser context
+ * @loc: A SAX Locator
+ *
+ * Receive the document locator at startup, actually xmlDefaultSAXLocator
+ * Everything is available on the context, so this is useless in our case.
+ */
+static void
+setDocumentLocatorCallback(void *ctx ATTRIBUTE_UNUSED,
+ xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * startDocumentCallback:
+ * @ctxt: An XML parser context
+ *
+ * called when the document start being processed.
+ */
+static void
+startDocumentCallback(void *ctx ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * endDocumentCallback:
+ * @ctxt: An XML parser context
+ *
+ * called when the document end has been detected.
+ */
+static void
+endDocumentCallback(void *ctx ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+#if 0
+/**
+ * startElementCallback:
+ * @ctxt: An XML parser context
+ * @name: The element name
+ *
+ * called when an opening tag has been processed.
+ */
+static void
+startElementCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED,
+ const xmlChar ** atts ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * endElementCallback:
+ * @ctxt: An XML parser context
+ * @name: The element name
+ *
+ * called when the end of an element has been detected.
+ */
+static void
+endElementCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+#endif
+
+/**
+ * charactersCallback:
+ * @ctxt: An XML parser context
+ * @ch: a xmlChar string
+ * @len: the number of xmlChar
+ *
+ * receiving some chars from the parser.
+ * Question: how much at a time ???
+ */
+static void
+charactersCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * ch ATTRIBUTE_UNUSED,
+ int len ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * referenceCallback:
+ * @ctxt: An XML parser context
+ * @name: The entity name
+ *
+ * called when an entity reference is detected.
+ */
+static void
+referenceCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * name ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * ignorableWhitespaceCallback:
+ * @ctxt: An XML parser context
+ * @ch: a xmlChar string
+ * @start: the first char in the string
+ * @len: the number of xmlChar
+ *
+ * receiving some ignorable whitespaces from the parser.
+ * Question: how much at a time ???
+ */
+static void
+ignorableWhitespaceCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * ch ATTRIBUTE_UNUSED,
+ int len ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * processingInstructionCallback:
+ * @ctxt: An XML parser context
+ * @target: the target name
+ * @data: the PI data's
+ * @len: the number of xmlChar
+ *
+ * A processing instruction has been parsed.
+ */
+static void
+processingInstructionCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * target ATTRIBUTE_UNUSED,
+ const xmlChar * data ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * cdataBlockCallback:
+ * @ctx: the user data (XML parser context)
+ * @value: The pcdata content
+ * @len: the block length
+ *
+ * called when a pcdata block has been parsed
+ */
+static void
+cdataBlockCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * value ATTRIBUTE_UNUSED,
+ int len ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * commentCallback:
+ * @ctxt: An XML parser context
+ * @value: the comment content
+ *
+ * A comment has been parsed.
+ */
+static void
+commentCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * value ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * warningCallback:
+ * @ctxt: An XML parser context
+ * @msg: the message to display/transmit
+ * @...: extra parameters for the message display
+ *
+ * Display and format a warning messages, gives file, line, position and
+ * extra parameters.
+ */
+static void XMLCDECL
+warningCallback(void *ctx ATTRIBUTE_UNUSED,
+ const char *msg ATTRIBUTE_UNUSED, ...)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * errorCallback:
+ * @ctxt: An XML parser context
+ * @msg: the message to display/transmit
+ * @...: extra parameters for the message display
+ *
+ * Display and format a error messages, gives file, line, position and
+ * extra parameters.
+ */
+static void XMLCDECL
+errorCallback(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
+ ...)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * fatalErrorCallback:
+ * @ctxt: An XML parser context
+ * @msg: the message to display/transmit
+ * @...: extra parameters for the message display
+ *
+ * Display and format a fatalError messages, gives file, line, position and
+ * extra parameters.
+ */
+static void XMLCDECL
+fatalErrorCallback(void *ctx ATTRIBUTE_UNUSED,
+ const char *msg ATTRIBUTE_UNUSED, ...)
+{
+ return;
+}
+
+
+/*
+ * SAX2 specific callbacks
+ */
+
+/**
+ * startElementNsCallback:
+ * @ctxt: An XML parser context
+ * @name: The element name
+ *
+ * called when an opening tag has been processed.
+ */
+static void
+startElementNsCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * localname ATTRIBUTE_UNUSED,
+ const xmlChar * prefix ATTRIBUTE_UNUSED,
+ const xmlChar * URI ATTRIBUTE_UNUSED,
+ int nb_namespaces ATTRIBUTE_UNUSED,
+ const xmlChar ** namespaces ATTRIBUTE_UNUSED,
+ int nb_attributes ATTRIBUTE_UNUSED,
+ int nb_defaulted ATTRIBUTE_UNUSED,
+ const xmlChar ** attributes ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+/**
+ * endElementCallback:
+ * @ctxt: An XML parser context
+ * @name: The element name
+ *
+ * called when the end of an element has been detected.
+ */
+static void
+endElementNsCallback(void *ctx ATTRIBUTE_UNUSED,
+ const xmlChar * localname ATTRIBUTE_UNUSED,
+ const xmlChar * prefix ATTRIBUTE_UNUSED,
+ const xmlChar * URI ATTRIBUTE_UNUSED)
+{
+ callbacks++;
+ return;
+}
+
+static xmlSAXHandler callbackSAX2HandlerStruct = {
+ internalSubsetCallback,
+ isStandaloneCallback,
+ hasInternalSubsetCallback,
+ hasExternalSubsetCallback,
+ resolveEntityCallback,
+ getEntityCallback,
+ entityDeclCallback,
+ notationDeclCallback,
+ attributeDeclCallback,
+ elementDeclCallback,
+ unparsedEntityDeclCallback,
+ setDocumentLocatorCallback,
+ startDocumentCallback,
+ endDocumentCallback,
+ NULL,
+ NULL,
+ referenceCallback,
+ charactersCallback,
+ ignorableWhitespaceCallback,
+ processingInstructionCallback,
+ commentCallback,
+ warningCallback,
+ errorCallback,
+ fatalErrorCallback,
+ getParameterEntityCallback,
+ cdataBlockCallback,
+ externalSubsetCallback,
+ XML_SAX2_MAGIC,
+ NULL,
+ startElementNsCallback,
+ endElementNsCallback,
+ NULL
+};
+
+static xmlSAXHandlerPtr callbackSAX2Handler = &callbackSAX2HandlerStruct;
+
+/************************************************************************
+ * *
+ * The tests front-ends *
+ * *
+ ************************************************************************/
+
+/**
+ * readerTest:
+ * @filename: the file to parse
+ * @max_size: size of the limit to test
+ * @options: parsing options
+ * @fail: should a failure be reported
+ *
+ * Parse a memory generated file using SAX
+ *
+ * Returns 0 in case of success, an error code otherwise
+ */
+static int
+saxTest(const char *filename, size_t limit, int options, int fail) {
+ int res = 0;
+ xmlParserCtxtPtr ctxt;
+ xmlDocPtr doc;
+ xmlSAXHandlerPtr old_sax;
+
+ nb_tests++;
+
+ maxlen = limit;
+ ctxt = xmlNewParserCtxt();
+ if (ctxt == NULL) {
+ fprintf(stderr, "Failed to create parser context\n");
+ return(1);
+ }
+ old_sax = ctxt->sax;
+ ctxt->sax = callbackSAX2Handler;
+ ctxt->userData = NULL;
+ doc = xmlCtxtReadFile(ctxt, filename, NULL, options);
+
+ if (doc != NULL) {
+ fprintf(stderr, "SAX parsing generated a document !\n");
+ xmlFreeDoc(doc);
+ res = 0;
+ } else if (ctxt->wellFormed == 0) {
+ if (fail)
+ res = 0;
+ else {
+ fprintf(stderr, "Failed to parse '%s' %lu\n", filename, limit);
+ res = 1;
+ }
+ } else {
+ if (fail) {
+ fprintf(stderr, "Failed to get failure for '%s' %lu\n",
+ filename, limit);
+ res = 1;
+ } else
+ res = 0;
+ }
+ ctxt->sax = old_sax;
+ xmlFreeParserCtxt(ctxt);
+
+ return(res);
+}
+#ifdef LIBXML_READER_ENABLED
+/**
+ * readerTest:
+ * @filename: the file to parse
+ * @max_size: size of the limit to test
+ * @options: parsing options
+ * @fail: should a failure be reported
+ *
+ * Parse a memory generated file using the xmlReader
+ *
+ * Returns 0 in case of success, an error code otherwise
+ */
+static int
+readerTest(const char *filename, size_t limit, int options, int fail) {
+ xmlTextReaderPtr reader;
+ int res = 0;
+ int ret;
+
+ nb_tests++;
+
+ maxlen = limit;
+ reader = xmlReaderForFile(filename , NULL, options);
+ if (reader == NULL) {
+ fprintf(stderr, "Failed to open '%s' test\n", filename);
+ return(1);
+ }
+ ret = xmlTextReaderRead(reader);
+ while (ret == 1) {
+ ret = xmlTextReaderRead(reader);
+ }
+ if (ret != 0) {
+ if (fail)
+ res = 0;
+ else {
+ if (strncmp(filename, "crazy:", 6) == 0)
+ fprintf(stderr, "Failed to parse '%s' %u\n",
+ filename, crazy_indx);
+ else
+ fprintf(stderr, "Failed to parse '%s' %lu\n",
+ filename, limit);
+ res = 1;
+ }
+ } else {
+ if (fail) {
+ if (strncmp(filename, "crazy:", 6) == 0)
+ fprintf(stderr, "Failed to get failure for '%s' %u\n",
+ filename, crazy_indx);
+ else
+ fprintf(stderr, "Failed to get failure for '%s' %lu\n",
+ filename, limit);
+ res = 1;
+ } else
+ res = 0;
+ }
+ if (timeout)
+ res = 1;
+ xmlFreeTextReader(reader);
+
+ return(res);
+}
+#endif
+
+/************************************************************************
+ * *
+ * Tests descriptions *
+ * *
+ ************************************************************************/
+
+typedef int (*functest) (const char *filename, size_t limit, int options,
+ int fail);
+
+typedef struct limitDesc limitDesc;
+typedef limitDesc *limitDescPtr;
+struct limitDesc {
+ const char *name; /* the huge generator name */
+ size_t limit; /* the limit to test */
+ int options; /* extra parser options */
+ int fail; /* whether the test should fail */
+};
+
+static limitDesc limitDescriptions[] = {
+ /* max length of a text node in content */
+ {"huge:textNode", XML_MAX_TEXT_LENGTH - CHUNK, 0, 0},
+ {"huge:textNode", XML_MAX_TEXT_LENGTH + CHUNK, 0, 1},
+ {"huge:textNode", XML_MAX_TEXT_LENGTH + CHUNK, XML_PARSE_HUGE, 0},
+ /* max length of a text node in content */
+ {"huge:attrNode", XML_MAX_TEXT_LENGTH - CHUNK, 0, 0},
+ {"huge:attrNode", XML_MAX_TEXT_LENGTH + CHUNK, 0, 1},
+ {"huge:attrNode", XML_MAX_TEXT_LENGTH + CHUNK, XML_PARSE_HUGE, 0},
+ /* max length of a comment node */
+ {"huge:commentNode", XML_MAX_TEXT_LENGTH - CHUNK, 0, 0},
+ {"huge:commentNode", XML_MAX_TEXT_LENGTH + CHUNK, 0, 1},
+ {"huge:commentNode", XML_MAX_TEXT_LENGTH + CHUNK, XML_PARSE_HUGE, 0},
+ /* max length of a PI node */
+ {"huge:piNode", XML_MAX_TEXT_LENGTH - CHUNK, 0, 0},
+ {"huge:piNode", XML_MAX_TEXT_LENGTH + CHUNK, 0, 1},
+ {"huge:piNode", XML_MAX_TEXT_LENGTH + CHUNK, XML_PARSE_HUGE, 0},
+};
+
+typedef struct testDesc testDesc;
+typedef testDesc *testDescPtr;
+struct testDesc {
+ const char *desc; /* descripton of the test */
+ functest func; /* function implementing the test */
+};
+
+static
+testDesc testDescriptions[] = {
+ { "Parsing of huge files with the sax parser", saxTest},
+/* { "Parsing of huge files with the tree parser", treeTest}, */
+#ifdef LIBXML_READER_ENABLED
+ { "Parsing of huge files with the reader", readerTest},
+#endif
+ {NULL, NULL}
+};
+
+typedef struct testException testException;
+typedef testException *testExceptionPtr;
+struct testException {
+ unsigned int test; /* the parser test number */
+ unsigned int limit; /* the limit test number */
+ int fail; /* new fail value or -1*/
+ size_t size; /* new limit value or 0 */
+};
+
+static
+testException testExceptions[] = {
+ /* the SAX parser doesn't hit a limit of XML_MAX_TEXT_LENGTH text nodes */
+ { 0, 1, 0, 0},
+};
+
+static int
+launchTests(testDescPtr tst, unsigned int test) {
+ int res = 0, err = 0;
+ unsigned int i, j;
+ size_t limit;
+ int fail;
+
+ if (tst == NULL) return(-1);
+
+ for (i = 0;i < sizeof(limitDescriptions)/sizeof(limitDescriptions[0]);i++) {
+ limit = limitDescriptions[i].limit;
+ fail = limitDescriptions[i].fail;
+ /*
+ * Handle exceptions if any
+ */
+ for (j = 0;j < sizeof(testExceptions)/sizeof(testExceptions[0]);j++) {
+ if ((testExceptions[j].test == test) &&
+ (testExceptions[j].limit == i)) {
+ if (testExceptions[j].fail != -1)
+ fail = testExceptions[j].fail;
+ if (testExceptions[j].size != 0)
+ limit = testExceptions[j].size;
+ break;
+ }
+ }
+ res = tst->func(limitDescriptions[i].name, limit,
+ limitDescriptions[i].options, fail);
+ if (res != 0) {
+ nb_errors++;
+ err++;
+ }
+ }
+ return(err);
+}
+
+
+static int
+runtest(unsigned int i) {
+ int ret = 0, res;
+ int old_errors, old_tests, old_leaks;
+
+ old_errors = nb_errors;
+ old_tests = nb_tests;
+ old_leaks = nb_leaks;
+ if ((tests_quiet == 0) && (testDescriptions[i].desc != NULL))
+ printf("## %s\n", testDescriptions[i].desc);
+ res = launchTests(&testDescriptions[i], i);
+ if (res != 0)
+ ret++;
+ if (verbose) {
+ if ((nb_errors == old_errors) && (nb_leaks == old_leaks))
+ printf("Ran %d tests, no errors\n", nb_tests - old_tests);
+ else
+ printf("Ran %d tests, %d errors, %d leaks\n",
+ nb_tests - old_tests,
+ nb_errors - old_errors,
+ nb_leaks - old_leaks);
+ }
+ return(ret);
+}
+
+static int
+launchCrazySAX(unsigned int test, int fail) {
+ int res = 0, err = 0;
+
+ crazy_indx = test;
+
+ res = saxTest("crazy::test", XML_MAX_LOOKUP_LIMIT - CHUNK, 0, fail);
+ if (res != 0) {
+ nb_errors++;
+ err++;
+ }
+ if (tests_quiet == 0)
+ fprintf(stderr, "%c", crazy[test]);
+
+ return(err);
+}
+
+#ifdef LIBXML_READER_ENABLED
+static int
+launchCrazy(unsigned int test, int fail) {
+ int res = 0, err = 0;
+
+ crazy_indx = test;
+
+ res = readerTest("crazy::test", XML_MAX_LOOKUP_LIMIT - CHUNK, 0, fail);
+ if (res != 0) {
+ nb_errors++;
+ err++;
+ }
+ if (tests_quiet == 0)
+ fprintf(stderr, "%c", crazy[test]);
+
+ return(err);
+}
+#endif
+
+static int get_crazy_fail(int test) {
+ /*
+ * adding 1000000 of character 'a' leads to parser failure mostly
+ * everywhere except in those special spots. Need to be updated
+ * each time crazy is updated
+ */
+ int fail = 1;
+ if ((test == 44) || /* PI in Misc */
+ ((test >= 50) && (test <= 55)) || /* Comment in Misc */
+ (test == 79) || /* PI in DTD */
+ ((test >= 85) && (test <= 90)) || /* Comment in DTD */
+ (test == 154) || /* PI in Misc */
+ ((test >= 160) && (test <= 165)) || /* Comment in Misc */
+ ((test >= 178) && (test <= 181)) || /* attribute value */
+ (test == 183) || /* Text */
+ (test == 189) || /* PI in Content */
+ (test == 191) || /* Text */
+ ((test >= 195) && (test <= 200)) || /* Comment in Content */
+ ((test >= 203) && (test <= 206)) || /* Text */
+ (test == 215) || (test == 216) || /* in CDATA */
+ (test == 219) || /* Text */
+ (test == 231) || /* PI in Misc */
+ ((test >= 237) && (test <= 242))) /* Comment in Misc */
+ fail = 0;
+ return(fail);
+}
+
+static int
+runcrazy(void) {
+ int ret = 0, res = 0;
+ int old_errors, old_tests, old_leaks;
+ unsigned int i;
+
+ old_errors = nb_errors;
+ old_tests = nb_tests;
+ old_leaks = nb_leaks;
+
+#ifdef LIBXML_READER_ENABLED
+ if (tests_quiet == 0) {
+ printf("## Crazy tests on reader\n");
+ }
+ for (i = 0;i < strlen(crazy);i++) {
+ res += launchCrazy(i, get_crazy_fail(i));
+ if (res != 0)
+ ret++;
+ }
+#endif
+
+ if (tests_quiet == 0) {
+ printf("\n## Crazy tests on SAX\n");
+ }
+ for (i = 0;i < strlen(crazy);i++) {
+ res += launchCrazySAX(i, get_crazy_fail(i));
+ if (res != 0)
+ ret++;
+ }
+ if (tests_quiet == 0)
+ fprintf(stderr, "\n");
+ if (verbose) {
+ if ((nb_errors == old_errors) && (nb_leaks == old_leaks))
+ printf("Ran %d tests, no errors\n", nb_tests - old_tests);
+ else
+ printf("Ran %d tests, %d errors, %d leaks\n",
+ nb_tests - old_tests,
+ nb_errors - old_errors,
+ nb_leaks - old_leaks);
+ }
+ return(ret);
+}
+
+
+int
+main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
+ int i, a, ret = 0;
+ int subset = 0;
+
+ fillFilling();
+ initializeLibxml2();
+
+ for (a = 1; a < argc;a++) {
+ if (!strcmp(argv[a], "-v"))
+ verbose = 1;
+ else if (!strcmp(argv[a], "-quiet"))
+ tests_quiet = 1;
+ else if (!strcmp(argv[a], "-crazy"))
+ subset = 1;
+ }
+ if (subset == 0) {
+ for (i = 0; testDescriptions[i].func != NULL; i++) {
+ ret += runtest(i);
+ }
+ }
+ ret += runcrazy();
+ if ((nb_errors == 0) && (nb_leaks == 0)) {
+ ret = 0;
+ printf("Total %d tests, no errors\n",
+ nb_tests);
+ } else {
+ ret = 1;
+ printf("Total %d tests, %d errors, %d leaks\n",
+ nb_tests, nb_errors, nb_leaks);
+ }
+ xmlCleanupParser();
+ xmlMemoryDump();
+
+ return(ret);
+}
diff --git a/testrecurse.c b/testrecurse.c
index bdc7c30..e5d5d1b 100644
--- a/testrecurse.c
+++ b/testrecurse.c
@@ -10,11 +10,8 @@
* daniel@veillard.com
*/
-#ifdef HAVE_CONFIG_H
#include "libxml.h"
-#else
#include <stdio.h>
-#endif
#if !defined(_WIN32) || defined(__CYGWIN__)
#include <unistd.h>
@@ -149,10 +146,6 @@ static void globfree(glob_t *pglob) {
}
}
-#if !defined(__MINGW32__)
-#define vsnprintf _vsnprintf
-#define snprintf _snprintf
-#endif
#else
#include <glob.h>
#endif
@@ -687,12 +680,10 @@ recursiveDetectTest(const char *filename,
xmlDocPtr doc;
xmlParserCtxtPtr ctxt;
int res = 0;
- int mem;
nb_tests++;
ctxt = xmlNewParserCtxt();
- mem = xmlMemUsed();
/*
* base of the test, parse with the old API
*/
@@ -728,12 +719,10 @@ notRecursiveDetectTest(const char *filename,
xmlDocPtr doc;
xmlParserCtxtPtr ctxt;
int res = 0;
- int mem;
nb_tests++;
ctxt = xmlNewParserCtxt();
- mem = xmlMemUsed();
/*
* base of the test, parse with the old API
*/
diff --git a/threads.c b/threads.c
index 1eeac0e..8921204 100644
--- a/threads.c
+++ b/threads.c
@@ -146,6 +146,7 @@ struct _xmlRMutex {
static pthread_key_t globalkey;
static pthread_t mainthread;
static pthread_once_t once_control = PTHREAD_ONCE_INIT;
+static pthread_once_t once_control_init = PTHREAD_ONCE_INIT;
static pthread_mutex_t global_init_lock = PTHREAD_MUTEX_INITIALIZER;
#elif defined HAVE_WIN32_THREADS
#if defined(HAVE_COMPILER_TLS)
@@ -251,7 +252,6 @@ xmlMutexLock(xmlMutexPtr tok)
#ifdef DEBUG_THREADS
xmlGenericError(xmlGenericErrorContext,
"xmlMutexLock():BeOS:Couldn't aquire semaphore\n");
- exit();
#endif
}
tok->tid = find_thread(NULL);
@@ -378,7 +378,7 @@ xmlRMutexLock(xmlRMutexPtr tok)
pthread_mutex_unlock(&tok->lock);
#elif defined HAVE_WIN32_THREADS
EnterCriticalSection(&tok->cs);
- ++tok->count;
+ tok->count++;
#elif defined HAVE_BEOS_THREADS
if (tok->lock->tid == find_thread(NULL)) {
tok->count++;
@@ -414,8 +414,10 @@ xmlRMutexUnlock(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
}
pthread_mutex_unlock(&tok->lock);
#elif defined HAVE_WIN32_THREADS
- if (!--tok->count)
+ if (tok->count > 0) {
LeaveCriticalSection(&tok->cs);
+ tok->count--;
+ }
#elif defined HAVE_BEOS_THREADS
if (tok->lock->tid == find_thread(NULL)) {
tok->count--;
@@ -439,7 +441,7 @@ __xmlGlobalInitMutexLock(void)
/* Make sure the global init lock is initialized and then lock it. */
#ifdef HAVE_PTHREAD_H
/* The mutex is statically initialized, so we just lock it. */
- if (pthread_mutex_lock)
+ if (pthread_mutex_lock != NULL)
pthread_mutex_lock(&global_init_lock);
#elif defined HAVE_WIN32_THREADS
LPCRITICAL_SECTION cs;
@@ -499,7 +501,6 @@ __xmlGlobalInitMutexLock(void)
#ifdef DEBUG_THREADS
xmlGenericError(xmlGenericErrorContext,
"xmlGlobalInitMutexLock():BeOS:Couldn't acquire semaphore\n");
- exit();
#endif
}
#endif
@@ -509,7 +510,7 @@ void
__xmlGlobalInitMutexUnlock(void)
{
#ifdef HAVE_PTHREAD_H
- if (pthread_mutex_unlock)
+ if (pthread_mutex_unlock != NULL)
pthread_mutex_unlock(&global_init_lock);
#elif defined HAVE_WIN32_THREADS
if (global_init_lock != NULL) {
@@ -915,6 +916,7 @@ xmlCleanupThreads(void)
#ifdef HAVE_PTHREAD_H
if ((libxml_is_threaded) && (pthread_key_delete != NULL))
pthread_key_delete(globalkey);
+ once_control = once_control_init;
#elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
if (globalkey != TLS_OUT_OF_INDEXES) {
xmlGlobalStateCleanupHelperParams *p;
@@ -954,6 +956,7 @@ xmlOnceInit(void)
#ifdef HAVE_PTHREAD_H
(void) pthread_key_create(&globalkey, xmlFreeGlobalState);
mainthread = pthread_self();
+ __xmlInitializeDict();
#elif defined(HAVE_WIN32_THREADS)
if (!run_once.done) {
if (InterlockedIncrement(&run_once.control) == 1) {
@@ -961,6 +964,7 @@ xmlOnceInit(void)
globalkey = TlsAlloc();
#endif
mainthread = GetCurrentThreadId();
+ __xmlInitializeDict();
run_once.done = 1;
} else {
/* Another thread is working; give up our slice and
@@ -974,6 +978,7 @@ xmlOnceInit(void)
globalkey = tls_allocate();
tls_set(globalkey, NULL);
mainthread = find_thread(NULL);
+ __xmlInitializeDict();
} else
atomic_add(&run_once_init, -1);
#endif
diff --git a/timsort.h b/timsort.h
new file mode 100644
index 0000000..efa3aab
--- /dev/null
+++ b/timsort.h
@@ -0,0 +1,514 @@
+/*
+ * taken from https://github.com/swenson/sort
+ * Kept as is for the moment to be able to apply upstream patches for that
+ * code, currently used only to speed up XPath node sorting, see xpath.c
+ */
+
+/*
+ * All code in this header, unless otherwise specified, is hereby licensed under the MIT Public License:
+
+Copyright (c) 2010 Christopher Swenson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#else
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#elif defined(WIN32)
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#endif
+#endif
+
+#ifndef MK_UINT64
+#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER < 1300
+#define MK_UINT64(x) ((uint64_t)(x))
+#else
+#define MK_UINT64(x) x##ULL
+#endif
+#endif
+
+#ifndef MAX
+#define MAX(x,y) (((x) > (y) ? (x) : (y)))
+#endif
+#ifndef MIN
+#define MIN(x,y) (((x) < (y) ? (x) : (y)))
+#endif
+
+int compute_minrun(uint64_t);
+
+#ifndef CLZ
+#if defined(__GNUC__) && ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 3))
+#define CLZ __builtin_clzll
+#else
+
+int clzll(uint64_t);
+
+/* adapted from Hacker's Delight */
+int clzll(uint64_t x) /* {{{ */
+{
+ int n;
+
+ if (x == 0) return(64);
+ n = 0;
+ if (x <= MK_UINT64(0x00000000FFFFFFFF)) {n = n + 32; x = x << 32;}
+ if (x <= MK_UINT64(0x0000FFFFFFFFFFFF)) {n = n + 16; x = x << 16;}
+ if (x <= MK_UINT64(0x00FFFFFFFFFFFFFF)) {n = n + 8; x = x << 8;}
+ if (x <= MK_UINT64(0x0FFFFFFFFFFFFFFF)) {n = n + 4; x = x << 4;}
+ if (x <= MK_UINT64(0x3FFFFFFFFFFFFFFF)) {n = n + 2; x = x << 2;}
+ if (x <= MK_UINT64(0x7FFFFFFFFFFFFFFF)) {n = n + 1;}
+ return n;
+}
+/* }}} */
+
+#define CLZ clzll
+#endif
+#endif
+
+int compute_minrun(uint64_t size) /* {{{ */
+{
+ const int top_bit = 64 - CLZ(size);
+ const int shift = MAX(top_bit, 6) - 6;
+ const int minrun = size >> shift;
+ const uint64_t mask = (MK_UINT64(1) << shift) - 1;
+ if (mask & size) return minrun + 1;
+ return minrun;
+}
+/* }}} */
+
+#ifndef SORT_NAME
+#error "Must declare SORT_NAME"
+#endif
+
+#ifndef SORT_TYPE
+#error "Must declare SORT_TYPE"
+#endif
+
+#ifndef SORT_CMP
+#define SORT_CMP(x, y) ((x) < (y) ? -1 : ((x) == (y) ? 0 : 1))
+#endif
+
+
+#define SORT_SWAP(x,y) {SORT_TYPE __SORT_SWAP_t = (x); (x) = (y); (y) = __SORT_SWAP_t;}
+
+#define SORT_CONCAT(x, y) x ## _ ## y
+#define SORT_MAKE_STR1(x, y) SORT_CONCAT(x,y)
+#define SORT_MAKE_STR(x) SORT_MAKE_STR1(SORT_NAME,x)
+
+#define BINARY_INSERTION_FIND SORT_MAKE_STR(binary_insertion_find)
+#define BINARY_INSERTION_SORT_START SORT_MAKE_STR(binary_insertion_sort_start)
+#define BINARY_INSERTION_SORT SORT_MAKE_STR(binary_insertion_sort)
+#define REVERSE_ELEMENTS SORT_MAKE_STR(reverse_elements)
+#define COUNT_RUN SORT_MAKE_STR(count_run)
+#define CHECK_INVARIANT SORT_MAKE_STR(check_invariant)
+#define TIM_SORT SORT_MAKE_STR(tim_sort)
+#define TIM_SORT_RESIZE SORT_MAKE_STR(tim_sort_resize)
+#define TIM_SORT_MERGE SORT_MAKE_STR(tim_sort_merge)
+#define TIM_SORT_COLLAPSE SORT_MAKE_STR(tim_sort_collapse)
+
+#define TIM_SORT_RUN_T SORT_MAKE_STR(tim_sort_run_t)
+#define TEMP_STORAGE_T SORT_MAKE_STR(temp_storage_t)
+
+typedef struct {
+ int64_t start;
+ int64_t length;
+} TIM_SORT_RUN_T;
+
+void BINARY_INSERTION_SORT(SORT_TYPE *dst, const size_t size);
+void TIM_SORT(SORT_TYPE *dst, const size_t size);
+
+/* Function used to do a binary search for binary insertion sort */
+static int64_t BINARY_INSERTION_FIND(SORT_TYPE *dst, const SORT_TYPE x, const size_t size)
+{
+ int64_t l, c, r;
+ SORT_TYPE lx;
+ SORT_TYPE cx;
+ l = 0;
+ r = size - 1;
+ c = r >> 1;
+ lx = dst[l];
+
+ /* check for beginning conditions */
+ if (SORT_CMP(x, lx) < 0)
+ return 0;
+ else if (SORT_CMP(x, lx) == 0)
+ {
+ int64_t i = 1;
+ while (SORT_CMP(x, dst[i]) == 0) i++;
+ return i;
+ }
+
+ cx = dst[c];
+ while (1)
+ {
+ const int val = SORT_CMP(x, cx);
+ if (val < 0)
+ {
+ if (c - l <= 1) return c;
+ r = c;
+ }
+ else if (val > 0)
+ {
+ if (r - c <= 1) return c + 1;
+ l = c;
+ lx = cx;
+ }
+ else
+ {
+ do
+ {
+ cx = dst[++c];
+ } while (SORT_CMP(x, cx) == 0);
+ return c;
+ }
+ c = l + ((r - l) >> 1);
+ cx = dst[c];
+ }
+}
+
+/* Binary insertion sort, but knowing that the first "start" entries are sorted. Used in timsort. */
+static void BINARY_INSERTION_SORT_START(SORT_TYPE *dst, const size_t start, const size_t size)
+{
+ int64_t i;
+ for (i = start; i < (int64_t) size; i++)
+ {
+ int64_t j;
+ SORT_TYPE x;
+ int64_t location;
+ /* If this entry is already correct, just move along */
+ if (SORT_CMP(dst[i - 1], dst[i]) <= 0) continue;
+
+ /* Else we need to find the right place, shift everything over, and squeeze in */
+ x = dst[i];
+ location = BINARY_INSERTION_FIND(dst, x, i);
+ for (j = i - 1; j >= location; j--)
+ {
+ dst[j + 1] = dst[j];
+ }
+ dst[location] = x;
+ }
+}
+
+/* Binary insertion sort */
+void BINARY_INSERTION_SORT(SORT_TYPE *dst, const size_t size)
+{
+ BINARY_INSERTION_SORT_START(dst, 1, size);
+}
+
+/* timsort implementation, based on timsort.txt */
+
+static void REVERSE_ELEMENTS(SORT_TYPE *dst, int64_t start, int64_t end)
+{
+ while (1)
+ {
+ if (start >= end) return;
+ SORT_SWAP(dst[start], dst[end]);
+ start++;
+ end--;
+ }
+}
+
+static int64_t COUNT_RUN(SORT_TYPE *dst, const int64_t start, const size_t size)
+{
+ int64_t curr;
+ if (size - start == 1) return 1;
+ if (start >= (int64_t) size - 2)
+ {
+ if (SORT_CMP(dst[size - 2], dst[size - 1]) > 0)
+ SORT_SWAP(dst[size - 2], dst[size - 1]);
+ return 2;
+ }
+
+ curr = start + 2;
+
+ if (SORT_CMP(dst[start], dst[start + 1]) <= 0)
+ {
+ /* increasing run */
+ while (1)
+ {
+ if (curr == (int64_t) size - 1) break;
+ if (SORT_CMP(dst[curr - 1], dst[curr]) > 0) break;
+ curr++;
+ }
+ return curr - start;
+ }
+ else
+ {
+ /* decreasing run */
+ while (1)
+ {
+ if (curr == (int64_t) size - 1) break;
+ if (SORT_CMP(dst[curr - 1], dst[curr]) <= 0) break;
+ curr++;
+ }
+ /* reverse in-place */
+ REVERSE_ELEMENTS(dst, start, curr - 1);
+ return curr - start;
+ }
+}
+
+#define PUSH_NEXT() do {\
+len = COUNT_RUN(dst, curr, size);\
+run = minrun;\
+if (run < minrun) run = minrun;\
+if (run > (int64_t) size - curr) run = size - curr;\
+if (run > len)\
+{\
+ BINARY_INSERTION_SORT_START(&dst[curr], len, run);\
+ len = run;\
+}\
+{\
+run_stack[stack_curr].start = curr;\
+run_stack[stack_curr].length = len;\
+stack_curr++;\
+}\
+curr += len;\
+if (curr == (int64_t) size)\
+{\
+ /* finish up */ \
+ while (stack_curr > 1) \
+ { \
+ TIM_SORT_MERGE(dst, run_stack, stack_curr, store); \
+ run_stack[stack_curr - 2].length += run_stack[stack_curr - 1].length; \
+ stack_curr--; \
+ } \
+ if (store->storage != NULL)\
+ {\
+ free(store->storage);\
+ store->storage = NULL;\
+ }\
+ return;\
+}\
+}\
+while (0)
+
+static int CHECK_INVARIANT(TIM_SORT_RUN_T *stack, const int stack_curr)
+{
+ int64_t A, B, C;
+ if (stack_curr < 2) return 1;
+ if (stack_curr == 2)
+ {
+ const int64_t A1 = stack[stack_curr - 2].length;
+ const int64_t B1 = stack[stack_curr - 1].length;
+ if (A1 <= B1) return 0;
+ return 1;
+ }
+ A = stack[stack_curr - 3].length;
+ B = stack[stack_curr - 2].length;
+ C = stack[stack_curr - 1].length;
+ if ((A <= B + C) || (B <= C)) return 0;
+ return 1;
+}
+
+typedef struct {
+ size_t alloc;
+ SORT_TYPE *storage;
+} TEMP_STORAGE_T;
+
+
+static void TIM_SORT_RESIZE(TEMP_STORAGE_T *store, const size_t new_size)
+{
+ if (store->alloc < new_size)
+ {
+ SORT_TYPE *tempstore = (SORT_TYPE *)realloc(store->storage, new_size * sizeof(SORT_TYPE));
+ if (tempstore == NULL)
+ {
+ fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
+ exit(1);
+ }
+ store->storage = tempstore;
+ store->alloc = new_size;
+ }
+}
+
+static void TIM_SORT_MERGE(SORT_TYPE *dst, const TIM_SORT_RUN_T *stack, const int stack_curr, TEMP_STORAGE_T *store)
+{
+ const int64_t A = stack[stack_curr - 2].length;
+ const int64_t B = stack[stack_curr - 1].length;
+ const int64_t curr = stack[stack_curr - 2].start;
+ SORT_TYPE *storage;
+ int64_t i, j, k;
+
+ TIM_SORT_RESIZE(store, MIN(A, B));
+ storage = store->storage;
+
+ /* left merge */
+ if (A < B)
+ {
+ memcpy(storage, &dst[curr], A * sizeof(SORT_TYPE));
+ i = 0;
+ j = curr + A;
+
+ for (k = curr; k < curr + A + B; k++)
+ {
+ if ((i < A) && (j < curr + A + B))
+ {
+ if (SORT_CMP(storage[i], dst[j]) <= 0)
+ dst[k] = storage[i++];
+ else
+ dst[k] = dst[j++];
+ }
+ else if (i < A)
+ {
+ dst[k] = storage[i++];
+ }
+ else
+ dst[k] = dst[j++];
+ }
+ }
+ /* right merge */
+ else
+ {
+ memcpy(storage, &dst[curr + A], B * sizeof(SORT_TYPE));
+ i = B - 1;
+ j = curr + A - 1;
+
+ for (k = curr + A + B - 1; k >= curr; k--)
+ {
+ if ((i >= 0) && (j >= curr))
+ {
+ if (SORT_CMP(dst[j], storage[i]) > 0)
+ dst[k] = dst[j--];
+ else
+ dst[k] = storage[i--];
+ }
+ else if (i >= 0)
+ dst[k] = storage[i--];
+ else
+ dst[k] = dst[j--];
+ }
+ }
+}
+
+static int TIM_SORT_COLLAPSE(SORT_TYPE *dst, TIM_SORT_RUN_T *stack, int stack_curr, TEMP_STORAGE_T *store, const size_t size)
+{
+ while (1)
+ {
+ int64_t A, B, C;
+ /* if the stack only has one thing on it, we are done with the collapse */
+ if (stack_curr <= 1) break;
+ /* if this is the last merge, just do it */
+ if ((stack_curr == 2) &&
+ (stack[0].length + stack[1].length == (int64_t) size))
+ {
+ TIM_SORT_MERGE(dst, stack, stack_curr, store);
+ stack[0].length += stack[1].length;
+ stack_curr--;
+ break;
+ }
+ /* check if the invariant is off for a stack of 2 elements */
+ else if ((stack_curr == 2) && (stack[0].length <= stack[1].length))
+ {
+ TIM_SORT_MERGE(dst, stack, stack_curr, store);
+ stack[0].length += stack[1].length;
+ stack_curr--;
+ break;
+ }
+ else if (stack_curr == 2)
+ break;
+
+ A = stack[stack_curr - 3].length;
+ B = stack[stack_curr - 2].length;
+ C = stack[stack_curr - 1].length;
+
+ /* check first invariant */
+ if (A <= B + C)
+ {
+ if (A < C)
+ {
+ TIM_SORT_MERGE(dst, stack, stack_curr - 1, store);
+ stack[stack_curr - 3].length += stack[stack_curr - 2].length;
+ stack[stack_curr - 2] = stack[stack_curr - 1];
+ stack_curr--;
+ }
+ else
+ {
+ TIM_SORT_MERGE(dst, stack, stack_curr, store);
+ stack[stack_curr - 2].length += stack[stack_curr - 1].length;
+ stack_curr--;
+ }
+ }
+ /* check second invariant */
+ else if (B <= C)
+ {
+ TIM_SORT_MERGE(dst, stack, stack_curr, store);
+ stack[stack_curr - 2].length += stack[stack_curr - 1].length;
+ stack_curr--;
+ }
+ else
+ break;
+ }
+ return stack_curr;
+}
+
+void TIM_SORT(SORT_TYPE *dst, const size_t size)
+{
+ int minrun;
+ TEMP_STORAGE_T _store, *store;
+ TIM_SORT_RUN_T run_stack[128];
+ int stack_curr = 0;
+ int64_t len, run;
+ int64_t curr = 0;
+
+ if (size < 64)
+ {
+ BINARY_INSERTION_SORT(dst, size);
+ return;
+ }
+
+ /* compute the minimum run length */
+ minrun = compute_minrun(size);
+
+ /* temporary storage for merges */
+ store = &_store;
+ store->alloc = 0;
+ store->storage = NULL;
+
+ PUSH_NEXT();
+ PUSH_NEXT();
+ PUSH_NEXT();
+
+ while (1)
+ {
+ if (!CHECK_INVARIANT(run_stack, stack_curr))
+ {
+ stack_curr = TIM_SORT_COLLAPSE(dst, run_stack, stack_curr, store, size);
+ continue;
+ }
+ PUSH_NEXT();
+ }
+}
+
+#undef SORT_CONCAT
+#undef SORT_MAKE_STR1
+#undef SORT_MAKE_STR
+#undef SORT_NAME
+#undef SORT_TYPE
+#undef SORT_CMP
+#undef TEMP_STORAGE_T
+#undef TIM_SORT_RUN_T
+#undef PUSH_NEXT
+#undef SORT_SWAP
+#undef SORT_CONCAT
+#undef SORT_MAKE_STR1
+#undef SORT_MAKE_STR
+#undef BINARY_INSERTION_FIND
+#undef BINARY_INSERTION_SORT_START
+#undef BINARY_INSERTION_SORT
+#undef REVERSE_ELEMENTS
+#undef COUNT_RUN
+#undef TIM_SORT
+#undef TIM_SORT_RESIZE
+#undef TIM_SORT_COLLAPSE
+#undef TIM_SORT_RUN_T
+#undef TEMP_STORAGE_T
diff --git a/tree.c b/tree.c
index 8baae3d..307782c 100644
--- a/tree.c
+++ b/tree.c
@@ -41,6 +41,9 @@
#include <libxml/debugXML.h>
#endif
+#include "buf.h"
+#include "save.h"
+
int __xmlRegisterCallbacks = 0;
/************************************************************************
@@ -52,7 +55,7 @@ int __xmlRegisterCallbacks = 0;
static xmlNsPtr
xmlNewReconciliedNs(xmlDocPtr doc, xmlNodePtr tree, xmlNsPtr ns);
-static xmlChar* xmlGetPropNodeValueInternal(xmlAttrPtr prop);
+static xmlChar* xmlGetPropNodeValueInternal(const xmlAttr *prop);
/************************************************************************
* *
@@ -157,7 +160,7 @@ static int xmlCheckDTD = 1;
* Returns A pointer to the entity structure or NULL if not found.
*/
static xmlEntityPtr
-xmlGetEntityFromDtd(xmlDtdPtr dtd, const xmlChar *name) {
+xmlGetEntityFromDtd(const xmlDtd *dtd, const xmlChar *name) {
xmlEntitiesTablePtr table;
if((dtd != NULL) && (dtd->entities != NULL)) {
@@ -178,7 +181,7 @@ xmlGetEntityFromDtd(xmlDtdPtr dtd, const xmlChar *name) {
* Returns A pointer to the entity structure or NULL if not found.
*/
static xmlEntityPtr
-xmlGetParameterEntityFromDtd(xmlDtdPtr dtd, const xmlChar *name) {
+xmlGetParameterEntityFromDtd(const xmlDtd *dtd, const xmlChar *name) {
xmlEntitiesTablePtr table;
if ((dtd != NULL) && (dtd->pentities != NULL)) {
@@ -311,7 +314,7 @@ xmlSplitQName2(const xmlChar *name, xmlChar **prefix) {
* parse an XML qualified name string,i
*
* returns NULL if it is not a Qualified Name, otherwise, update len
- * with the lenght in byte of the prefix and return a pointer
+ * with the length in byte of the prefix and return a pointer
* to the start of the name without the prefix
*/
@@ -349,7 +352,7 @@ xmlSplitQName3(const xmlChar *name, int *len) {
#define CUR_SCHAR(s, l) xmlStringCurrentChar(NULL, s, &l)
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
/**
* xmlValidateNCName:
* @value: the value to check
@@ -714,8 +717,11 @@ xmlGetBufferAllocationScheme(void) {
* Creation of a new Namespace. This function will refuse to create
* a namespace with a similar prefix than an existing one present on this
* node.
+ * Note that for a default namespace, @prefix should be NULL.
+ *
* We use href==NULL in the case of an element creation where the namespace
* was not defined.
+ *
* Returns a new namespace pointer or NULL
*/
xmlNsPtr
@@ -800,7 +806,9 @@ xmlSetNs(xmlNodePtr node, xmlNsPtr ns) {
#endif
return;
}
- node->ns = ns;
+ if ((node->type == XML_ELEMENT_NODE) ||
+ (node->type == XML_ATTRIBUTE_NODE))
+ node->ns = ns;
}
/**
@@ -908,7 +916,7 @@ xmlNewDtd(xmlDocPtr doc, const xmlChar *name,
*/
xmlDtdPtr
-xmlGetIntSubset(xmlDocPtr doc) {
+xmlGetIntSubset(const xmlDoc *doc) {
xmlNodePtr cur;
if (doc == NULL)
@@ -1258,20 +1266,20 @@ xmlFreeDoc(xmlDocPtr cur) {
* Returns a pointer to the first child
*/
xmlNodePtr
-xmlStringLenGetNodeList(xmlDocPtr doc, const xmlChar *value, int len) {
+xmlStringLenGetNodeList(const xmlDoc *doc, const xmlChar *value, int len) {
xmlNodePtr ret = NULL, last = NULL;
xmlNodePtr node;
xmlChar *val;
const xmlChar *cur = value, *end = cur + len;
const xmlChar *q;
xmlEntityPtr ent;
- xmlBufferPtr buffer;
+ xmlBufPtr buf;
if (value == NULL) return(NULL);
- buffer = xmlBufferCreateSize(0);
- if (buffer == NULL) return(NULL);
- xmlBufferSetAllocationScheme(buffer, XML_BUFFER_ALLOC_HYBRID);
+ buf = xmlBufCreateSize(0);
+ if (buf == NULL) return(NULL);
+ xmlBufSetAllocationScheme(buf, XML_BUFFER_ALLOC_HYBRID);
q = cur;
while ((cur < end) && (*cur != 0)) {
@@ -1283,7 +1291,7 @@ xmlStringLenGetNodeList(xmlDocPtr doc, const xmlChar *value, int len) {
* Save the current text.
*/
if (cur != q) {
- if (xmlBufferAdd(buffer, q, cur - q))
+ if (xmlBufAdd(buf, q, cur - q))
goto out;
}
q = cur;
@@ -1360,20 +1368,20 @@ xmlStringLenGetNodeList(xmlDocPtr doc, const xmlChar *value, int len) {
if ((ent != NULL) &&
(ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
- if (xmlBufferCat(buffer, ent->content))
+ if (xmlBufCat(buf, ent->content))
goto out;
} else {
/*
* Flush buffer so far
*/
- if (buffer->use) {
+ if (!xmlBufIsEmpty(buf)) {
node = xmlNewDocText(doc, NULL);
if (node == NULL) {
if (val != NULL) xmlFree(val);
goto out;
}
- node->content = xmlBufferDetach(buffer);
+ node->content = xmlBufDetach(buf);
if (last == NULL) {
last = ret = node;
@@ -1415,13 +1423,13 @@ xmlStringLenGetNodeList(xmlDocPtr doc, const xmlChar *value, int len) {
q = cur;
}
if (charval != 0) {
- xmlChar buf[10];
+ xmlChar buffer[10];
int l;
- l = xmlCopyCharMultiByte(buf, charval);
- buf[l] = 0;
+ l = xmlCopyCharMultiByte(buffer, charval);
+ buffer[l] = 0;
- if (xmlBufferCat(buffer, buf))
+ if (xmlBufCat(buf, buffer))
goto out;
charval = 0;
}
@@ -1433,14 +1441,14 @@ xmlStringLenGetNodeList(xmlDocPtr doc, const xmlChar *value, int len) {
/*
* Handle the last piece of text.
*/
- if (xmlBufferAdd(buffer, q, cur - q))
+ if (xmlBufAdd(buf, q, cur - q))
goto out;
}
- if (buffer->use) {
+ if (!xmlBufIsEmpty(buf)) {
node = xmlNewDocText(doc, NULL);
if (node == NULL) goto out;
- node->content = xmlBufferDetach(buffer);
+ node->content = xmlBufDetach(buf);
if (last == NULL) {
last = ret = node;
@@ -1452,7 +1460,7 @@ xmlStringLenGetNodeList(xmlDocPtr doc, const xmlChar *value, int len) {
}
out:
- xmlBufferFree(buffer);
+ xmlBufFree(buf);
return(ret);
}
@@ -1466,20 +1474,20 @@ out:
* Returns a pointer to the first child
*/
xmlNodePtr
-xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) {
+xmlStringGetNodeList(const xmlDoc *doc, const xmlChar *value) {
xmlNodePtr ret = NULL, last = NULL;
xmlNodePtr node;
xmlChar *val;
const xmlChar *cur = value;
const xmlChar *q;
xmlEntityPtr ent;
- xmlBufferPtr buffer;
+ xmlBufPtr buf;
if (value == NULL) return(NULL);
- buffer = xmlBufferCreateSize(0);
- if (buffer == NULL) return(NULL);
- xmlBufferSetAllocationScheme(buffer, XML_BUFFER_ALLOC_HYBRID);
+ buf = xmlBufCreateSize(0);
+ if (buf == NULL) return(NULL);
+ xmlBufSetAllocationScheme(buf, XML_BUFFER_ALLOC_HYBRID);
q = cur;
while (*cur != 0) {
@@ -1491,7 +1499,7 @@ xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) {
* Save the current text.
*/
if (cur != q) {
- if (xmlBufferAdd(buffer, q, cur - q))
+ if (xmlBufAdd(buf, q, cur - q))
goto out;
}
q = cur;
@@ -1556,16 +1564,16 @@ xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) {
if ((ent != NULL) &&
(ent->etype == XML_INTERNAL_PREDEFINED_ENTITY)) {
- if (xmlBufferCat(buffer, ent->content))
+ if (xmlBufCat(buf, ent->content))
goto out;
} else {
/*
* Flush buffer so far
*/
- if (buffer->use) {
+ if (!xmlBufIsEmpty(buf)) {
node = xmlNewDocText(doc, NULL);
- node->content = xmlBufferDetach(buffer);
+ node->content = xmlBufDetach(buf);
if (last == NULL) {
last = ret = node;
@@ -1606,13 +1614,13 @@ xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) {
q = cur;
}
if (charval != 0) {
- xmlChar buf[10];
+ xmlChar buffer[10];
int len;
- len = xmlCopyCharMultiByte(buf, charval);
- buf[len] = 0;
+ len = xmlCopyCharMultiByte(buffer, charval);
+ buffer[len] = 0;
- if (xmlBufferCat(buffer, buf))
+ if (xmlBufCat(buf, buffer))
goto out;
charval = 0;
}
@@ -1623,12 +1631,12 @@ xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) {
/*
* Handle the last piece of text.
*/
- xmlBufferAdd(buffer, q, cur - q);
+ xmlBufAdd(buf, q, cur - q);
}
- if (buffer->use) {
+ if (!xmlBufIsEmpty(buf)) {
node = xmlNewDocText(doc, NULL);
- node->content = xmlBufferDetach(buffer);
+ node->content = xmlBufDetach(buf);
if (last == NULL) {
last = ret = node;
@@ -1638,7 +1646,7 @@ xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) {
}
out:
- xmlBufferFree(buffer);
+ xmlBufFree(buf);
return(ret);
}
@@ -1654,14 +1662,19 @@ out:
* Returns a pointer to the string copy, the caller must free it with xmlFree().
*/
xmlChar *
-xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine)
+xmlNodeListGetString(xmlDocPtr doc, const xmlNode *list, int inLine)
{
- xmlNodePtr node = list;
+ const xmlNode *node = list;
xmlChar *ret = NULL;
xmlEntityPtr ent;
+ int attr;
if (list == NULL)
return (NULL);
+ if ((list->parent != NULL) && (list->parent->type == XML_ATTRIBUTE_NODE))
+ attr = 1;
+ else
+ attr = 0;
while (node != NULL) {
if ((node->type == XML_TEXT_NODE) ||
@@ -1671,7 +1684,10 @@ xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine)
} else {
xmlChar *buffer;
- buffer = xmlEncodeEntitiesReentrant(doc, node->content);
+ if (attr)
+ buffer = xmlEncodeAttributeEntities(doc, node->content);
+ else
+ buffer = xmlEncodeEntitiesReentrant(doc, node->content);
if (buffer != NULL) {
ret = xmlStrcat(ret, buffer);
xmlFree(buffer);
@@ -1736,9 +1752,9 @@ xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine)
* Returns a pointer to the string copy, the caller must free it with xmlFree().
*/
xmlChar *
-xmlNodeListGetRawString(xmlDocPtr doc, xmlNodePtr list, int inLine)
+xmlNodeListGetRawString(const xmlDoc *doc, const xmlNode *list, int inLine)
{
- xmlNodePtr node = list;
+ const xmlNode *node = list;
xmlChar *ret = NULL;
xmlEntityPtr ent;
@@ -2567,7 +2583,7 @@ xmlNewCharRef(xmlDocPtr doc, const xmlChar *name) {
* Returns a pointer to the new node object.
*/
xmlNodePtr
-xmlNewReference(xmlDocPtr doc, const xmlChar *name) {
+xmlNewReference(const xmlDoc *doc, const xmlChar *name) {
xmlNodePtr cur;
xmlEntityPtr ent;
@@ -2585,7 +2601,7 @@ xmlNewReference(xmlDocPtr doc, const xmlChar *name) {
memset(cur, 0, sizeof(xmlNode));
cur->type = XML_ENTITY_REF_NODE;
- cur->doc = doc;
+ cur->doc = (xmlDoc *)doc;
if (name[0] == '&') {
int len;
name++;
@@ -2623,11 +2639,11 @@ xmlNewReference(xmlDocPtr doc, const xmlChar *name) {
* Returns a pointer to the new node object.
*/
xmlNodePtr
-xmlNewDocText(xmlDocPtr doc, const xmlChar *content) {
+xmlNewDocText(const xmlDoc *doc, const xmlChar *content) {
xmlNodePtr cur;
cur = xmlNewText(content);
- if (cur != NULL) cur->doc = doc;
+ if (cur != NULL) cur->doc = (xmlDoc *)doc;
return(cur);
}
@@ -2777,7 +2793,7 @@ void
xmlSetTreeDoc(xmlNodePtr tree, xmlDocPtr doc) {
xmlAttrPtr prop;
- if (tree == NULL)
+ if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL))
return;
if (tree->doc != doc) {
if(tree->type == XML_ELEMENT_NODE) {
@@ -2805,7 +2821,7 @@ void
xmlSetListDoc(xmlNodePtr list, xmlDocPtr doc) {
xmlNodePtr cur;
- if (list == NULL)
+ if ((list == NULL) || (list->type == XML_NAMESPACE_DECL))
return;
cur = list;
while (cur != NULL) {
@@ -2912,7 +2928,9 @@ static xmlNodePtr
xmlAddPropSibling(xmlNodePtr prev, xmlNodePtr cur, xmlNodePtr prop) {
xmlAttrPtr attr;
- if (cur->type != XML_ATTRIBUTE_NODE)
+ if ((cur == NULL) || (cur->type != XML_ATTRIBUTE_NODE) ||
+ (prop == NULL) || (prop->type != XML_ATTRIBUTE_NODE) ||
+ ((prev != NULL) && (prev->type != XML_ATTRIBUTE_NODE)))
return(NULL);
/* check if an attribute with the same name exists */
@@ -2960,14 +2978,14 @@ xmlAddPropSibling(xmlNodePtr prev, xmlNodePtr cur, xmlNodePtr prop) {
*/
xmlNodePtr
xmlAddNextSibling(xmlNodePtr cur, xmlNodePtr elem) {
- if (cur == NULL) {
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddNextSibling : cur == NULL\n");
#endif
return(NULL);
}
- if (elem == NULL) {
+ if ((elem == NULL) || (elem->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddNextSibling : elem == NULL\n");
@@ -3021,7 +3039,7 @@ xmlAddNextSibling(xmlNodePtr cur, xmlNodePtr elem) {
}
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
- defined(LIBXML_SCHEMAS_ENABLED)
+ defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
/**
* xmlAddPrevSibling:
* @cur: the child node
@@ -3038,14 +3056,14 @@ xmlAddNextSibling(xmlNodePtr cur, xmlNodePtr elem) {
*/
xmlNodePtr
xmlAddPrevSibling(xmlNodePtr cur, xmlNodePtr elem) {
- if (cur == NULL) {
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddPrevSibling : cur == NULL\n");
#endif
return(NULL);
}
- if (elem == NULL) {
+ if ((elem == NULL) || (elem->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddPrevSibling : elem == NULL\n");
@@ -3116,7 +3134,7 @@ xmlNodePtr
xmlAddSibling(xmlNodePtr cur, xmlNodePtr elem) {
xmlNodePtr parent;
- if (cur == NULL) {
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddSibling : cur == NULL\n");
@@ -3124,7 +3142,7 @@ xmlAddSibling(xmlNodePtr cur, xmlNodePtr elem) {
return(NULL);
}
- if (elem == NULL) {
+ if ((elem == NULL) || (elem->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddSibling : elem == NULL\n");
@@ -3192,7 +3210,7 @@ xmlNodePtr
xmlAddChildList(xmlNodePtr parent, xmlNodePtr cur) {
xmlNodePtr prev;
- if (parent == NULL) {
+ if ((parent == NULL) || (parent->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddChildList : parent == NULL\n");
@@ -3200,7 +3218,7 @@ xmlAddChildList(xmlNodePtr parent, xmlNodePtr cur) {
return(NULL);
}
- if (cur == NULL) {
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddChildList : child == NULL\n");
@@ -3278,7 +3296,7 @@ xmlNodePtr
xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
xmlNodePtr prev;
- if (parent == NULL) {
+ if ((parent == NULL) || (parent->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddChild : parent == NULL\n");
@@ -3286,7 +3304,7 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
return(NULL);
}
- if (cur == NULL) {
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlAddChild : child == NULL\n");
@@ -3399,8 +3417,8 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
* Returns the last child or NULL if none.
*/
xmlNodePtr
-xmlGetLastChild(xmlNodePtr parent) {
- if (parent == NULL) {
+xmlGetLastChild(const xmlNode *parent) {
+ if ((parent == NULL) || (parent->type == XML_NAMESPACE_DECL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlGetLastChild : parent == NULL\n");
@@ -3438,6 +3456,7 @@ xmlChildElementCount(xmlNodePtr parent) {
case XML_ELEMENT_NODE:
case XML_ENTITY_NODE:
case XML_DOCUMENT_NODE:
+ case XML_DOCUMENT_FRAG_NODE:
case XML_HTML_DOCUMENT_NODE:
cur = parent->children;
break;
@@ -3473,6 +3492,7 @@ xmlFirstElementChild(xmlNodePtr parent) {
case XML_ELEMENT_NODE:
case XML_ENTITY_NODE:
case XML_DOCUMENT_NODE:
+ case XML_DOCUMENT_FRAG_NODE:
case XML_HTML_DOCUMENT_NODE:
cur = parent->children;
break;
@@ -3508,6 +3528,7 @@ xmlLastElementChild(xmlNodePtr parent) {
case XML_ELEMENT_NODE:
case XML_ENTITY_NODE:
case XML_DOCUMENT_NODE:
+ case XML_DOCUMENT_FRAG_NODE:
case XML_HTML_DOCUMENT_NODE:
cur = parent->last;
break;
@@ -3752,6 +3773,8 @@ xmlFreeNode(xmlNodePtr cur) {
* Unlink a node from it's current context, the node is not freed
* If one need to free the node, use xmlFreeNode() routine after the
* unlink to discard it.
+ * Note that namespace nodes can't be unlinked as they do not have
+ * pointer to their parent.
*/
void
xmlUnlinkNode(xmlNodePtr cur) {
@@ -3762,6 +3785,8 @@ xmlUnlinkNode(xmlNodePtr cur) {
#endif
return;
}
+ if (cur->type == XML_NAMESPACE_DECL)
+ return;
if (cur->type == XML_DTD_NODE) {
xmlDocPtr doc;
doc = cur->doc;
@@ -3830,14 +3855,15 @@ xmlUnlinkNode(xmlNodePtr cur) {
xmlNodePtr
xmlReplaceNode(xmlNodePtr old, xmlNodePtr cur) {
if (old == cur) return(NULL);
- if ((old == NULL) || (old->parent == NULL)) {
+ if ((old == NULL) || (old->type == XML_NAMESPACE_DECL) ||
+ (old->parent == NULL)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlReplaceNode : old == NULL or without parent\n");
#endif
return(NULL);
}
- if (cur == NULL) {
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {
xmlUnlinkNode(old);
return(old);
}
@@ -3951,6 +3977,8 @@ xmlCopyPropInternal(xmlDocPtr doc, xmlNodePtr target, xmlAttrPtr cur) {
xmlAttrPtr ret;
if (cur == NULL) return(NULL);
+ if ((target != NULL) && (target->type != XML_ELEMENT_NODE))
+ return(NULL);
if (target != NULL)
ret = xmlNewDocProp(target->doc, cur->name, NULL);
else if (doc != NULL)
@@ -4070,6 +4098,8 @@ xmlCopyPropList(xmlNodePtr target, xmlAttrPtr cur) {
xmlAttrPtr ret = NULL;
xmlAttrPtr p = NULL,q;
+ if ((target != NULL) && (target->type != XML_ELEMENT_NODE))
+ return(NULL);
while (cur != NULL) {
q = xmlCopyProp(target, cur);
if (q == NULL)
@@ -4106,7 +4136,7 @@ xmlCopyPropList(xmlNodePtr target, xmlAttrPtr cur) {
*/
static xmlNodePtr
-xmlStaticCopyNode(const xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent,
+xmlStaticCopyNode(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent,
int extended) {
xmlNodePtr ret;
@@ -4272,6 +4302,7 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
}
if (doc->intSubset == NULL) {
q = (xmlNodePtr) xmlCopyDtd( (xmlDtdPtr) node );
+ if (q == NULL) return(NULL);
q->doc = doc;
q->parent = parent;
doc->intSubset = (xmlDtdPtr) q;
@@ -4283,6 +4314,7 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
} else
#endif /* LIBXML_TREE_ENABLED */
q = xmlStaticCopyNode(node, doc, parent, 1);
+ if (q == NULL) return(NULL);
if (ret == NULL) {
q->prev = NULL;
ret = p = q;
@@ -4309,7 +4341,7 @@ xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
* Returns: a new #xmlNodePtr, or NULL in case of error.
*/
xmlNodePtr
-xmlCopyNode(const xmlNodePtr node, int extended) {
+xmlCopyNode(xmlNodePtr node, int extended) {
xmlNodePtr ret;
ret = xmlStaticCopyNode(node, NULL, NULL, extended);
@@ -4329,7 +4361,7 @@ xmlCopyNode(const xmlNodePtr node, int extended) {
* Returns: a new #xmlNodePtr, or NULL in case of error.
*/
xmlNodePtr
-xmlDocCopyNode(const xmlNodePtr node, xmlDocPtr doc, int extended) {
+xmlDocCopyNode(xmlNodePtr node, xmlDocPtr doc, int extended) {
xmlNodePtr ret;
ret = xmlStaticCopyNode(node, doc, NULL, extended);
@@ -4345,7 +4377,7 @@ xmlDocCopyNode(const xmlNodePtr node, xmlDocPtr doc, int extended) {
*
* Returns: a new #xmlNodePtr, or NULL in case of error.
*/
-xmlNodePtr xmlDocCopyNodeList(xmlDocPtr doc, const xmlNodePtr node) {
+xmlNodePtr xmlDocCopyNodeList(xmlDocPtr doc, xmlNodePtr node) {
xmlNodePtr ret = xmlStaticCopyNodeList(node, doc, NULL);
return(ret);
}
@@ -4359,7 +4391,7 @@ xmlNodePtr xmlDocCopyNodeList(xmlDocPtr doc, const xmlNodePtr node) {
*
* Returns: a new #xmlNodePtr, or NULL in case of error.
*/
-xmlNodePtr xmlCopyNodeList(const xmlNodePtr node) {
+xmlNodePtr xmlCopyNodeList(xmlNodePtr node) {
xmlNodePtr ret = xmlStaticCopyNodeList(node, NULL, NULL);
return(ret);
}
@@ -4485,6 +4517,10 @@ xmlCopyDoc(xmlDocPtr doc, int recursive) {
#ifdef LIBXML_TREE_ENABLED
if (doc->intSubset != NULL) {
ret->intSubset = xmlCopyDtd(doc->intSubset);
+ if (ret->intSubset == NULL) {
+ xmlFreeDoc(ret);
+ return(NULL);
+ }
xmlSetTreeDoc((xmlNodePtr)ret->intSubset, ret);
ret->intSubset->parent = ret;
}
@@ -4515,39 +4551,71 @@ xmlCopyDoc(xmlDocPtr doc, int recursive) {
************************************************************************/
/**
- * xmlGetLineNo:
+ * xmlGetLineNoInternal:
* @node: valid node
+ * @depth: used to limit any risk of recursion
*
- * Get line number of @node. This requires activation of this option
- * before invoking the parser by calling xmlLineNumbersDefault(1)
+ * Get line number of @node.
+ * Try to override the limitation of lines being store in 16 bits ints
*
* Returns the line number if successful, -1 otherwise
*/
-long
-xmlGetLineNo(xmlNodePtr node)
+static long
+xmlGetLineNoInternal(const xmlNode *node, int depth)
{
long result = -1;
+ if (depth >= 5)
+ return(-1);
+
if (!node)
return result;
if ((node->type == XML_ELEMENT_NODE) ||
(node->type == XML_TEXT_NODE) ||
(node->type == XML_COMMENT_NODE) ||
- (node->type == XML_PI_NODE))
- result = (long) node->line;
- else if ((node->prev != NULL) &&
+ (node->type == XML_PI_NODE)) {
+ if (node->line == 65535) {
+ if ((node->type == XML_TEXT_NODE) && (node->psvi != NULL))
+ result = (long) node->psvi;
+ else if ((node->type == XML_ELEMENT_NODE) &&
+ (node->children != NULL))
+ result = xmlGetLineNoInternal(node->children, depth + 1);
+ else if (node->next != NULL)
+ result = xmlGetLineNoInternal(node->next, depth + 1);
+ else if (node->prev != NULL)
+ result = xmlGetLineNoInternal(node->prev, depth + 1);
+ }
+ if ((result == -1) || (result == 65535))
+ result = (long) node->line;
+ } else if ((node->prev != NULL) &&
((node->prev->type == XML_ELEMENT_NODE) ||
(node->prev->type == XML_TEXT_NODE) ||
(node->prev->type == XML_COMMENT_NODE) ||
(node->prev->type == XML_PI_NODE)))
- result = xmlGetLineNo(node->prev);
+ result = xmlGetLineNoInternal(node->prev, depth + 1);
else if ((node->parent != NULL) &&
(node->parent->type == XML_ELEMENT_NODE))
- result = xmlGetLineNo(node->parent);
+ result = xmlGetLineNoInternal(node->parent, depth + 1);
return result;
}
+/**
+ * xmlGetLineNo:
+ * @node: valid node
+ *
+ * Get line number of @node.
+ * Try to override the limitation of lines being store in 16 bits ints
+ * if XML_PARSE_BIG_LINES parser option was used
+ *
+ * Returns the line number if successful, -1 otherwise
+ */
+long
+xmlGetLineNo(const xmlNode *node)
+{
+ return(xmlGetLineNoInternal(node, 0));
+}
+
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
/**
* xmlGetNodePath:
@@ -4559,9 +4627,9 @@ xmlGetLineNo(xmlNodePtr node)
* the returned string
*/
xmlChar *
-xmlGetNodePath(xmlNodePtr node)
+xmlGetNodePath(const xmlNode *node)
{
- xmlNodePtr cur, tmp, next;
+ const xmlNode *cur, *tmp, *next;
xmlChar *buffer = NULL, *temp;
size_t buf_len;
xmlChar *buf;
@@ -4570,7 +4638,7 @@ xmlGetNodePath(xmlNodePtr node)
char nametemp[100];
int occur = 0, generic;
- if (node == NULL)
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL))
return (NULL);
buf_len = 500;
@@ -4805,7 +4873,7 @@ xmlGetNodePath(xmlNodePtr node)
* Returns the #xmlNodePtr for the root or NULL
*/
xmlNodePtr
-xmlDocGetRootElement(xmlDocPtr doc) {
+xmlDocGetRootElement(const xmlDoc *doc) {
xmlNodePtr ret;
if (doc == NULL) return(NULL);
@@ -4835,7 +4903,7 @@ xmlDocSetRootElement(xmlDocPtr doc, xmlNodePtr root) {
xmlNodePtr old = NULL;
if (doc == NULL) return(NULL);
- if (root == NULL)
+ if ((root == NULL) || (root->type == XML_NAMESPACE_DECL))
return(NULL);
xmlUnlinkNode(root);
xmlSetTreeDoc(root, doc);
@@ -4919,9 +4987,11 @@ xmlNodeSetLang(xmlNodePtr cur, const xmlChar *lang) {
* It's up to the caller to free the memory with xmlFree().
*/
xmlChar *
-xmlNodeGetLang(xmlNodePtr cur) {
+xmlNodeGetLang(const xmlNode *cur) {
xmlChar *lang;
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
+ return(NULL);
while (cur != NULL) {
lang = xmlGetNsProp(cur, BAD_CAST "lang", XML_XML_NAMESPACE);
if (lang != NULL)
@@ -4998,9 +5068,11 @@ xmlNodeSetSpacePreserve(xmlNodePtr cur, int val) {
* Returns -1 if xml:space is not inherited, 0 if "default", 1 if "preserve"
*/
int
-xmlNodeGetSpacePreserve(xmlNodePtr cur) {
+xmlNodeGetSpacePreserve(const xmlNode *cur) {
xmlChar *space;
+ if ((cur == NULL) || (cur->type != XML_ELEMENT_NODE))
+ return(-1);
while (cur != NULL) {
space = xmlGetNsProp(cur, BAD_CAST "space", XML_XML_NAMESPACE);
if (space != NULL) {
@@ -5031,6 +5103,7 @@ void
xmlNodeSetName(xmlNodePtr cur, const xmlChar *name) {
xmlDocPtr doc;
xmlDictPtr dict;
+ const xmlChar *freeme = NULL;
if (cur == NULL) return;
if (name == NULL) return;
@@ -5068,12 +5141,16 @@ xmlNodeSetName(xmlNodePtr cur, const xmlChar *name) {
dict = NULL;
if (dict != NULL) {
if ((cur->name != NULL) && (!xmlDictOwns(dict, cur->name)))
- xmlFree((xmlChar *) cur->name);
+ freeme = cur->name;
cur->name = xmlDictLookup(dict, name, -1);
} else {
- if (cur->name != NULL) xmlFree((xmlChar *) cur->name);
+ if (cur->name != NULL)
+ freeme = cur->name;
cur->name = xmlStrdup(name);
}
+
+ if (freeme)
+ xmlFree((xmlChar *) freeme);
}
#endif
@@ -5161,12 +5238,14 @@ xmlNodeSetBase(xmlNodePtr cur, const xmlChar* uri) {
* It's up to the caller to free the memory with xmlFree().
*/
xmlChar *
-xmlNodeGetBase(xmlDocPtr doc, xmlNodePtr cur) {
+xmlNodeGetBase(const xmlDoc *doc, const xmlNode *cur) {
xmlChar *oldbase = NULL;
xmlChar *base, *newbase;
if ((cur == NULL) && (doc == NULL))
return(NULL);
+ if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL))
+ return(NULL);
if (doc == NULL) doc = cur->doc;
if ((doc != NULL) && (doc->type == XML_HTML_DOCUMENT_NODE)) {
cur = doc->children;
@@ -5244,27 +5323,55 @@ xmlNodeGetBase(xmlDocPtr doc, xmlNodePtr cur) {
* Returns 0 in case of success and -1 in case of error.
*/
int
-xmlNodeBufGetContent(xmlBufferPtr buffer, xmlNodePtr cur)
+xmlNodeBufGetContent(xmlBufferPtr buffer, const xmlNode *cur)
{
+ xmlBufPtr buf;
+ int ret;
+
if ((cur == NULL) || (buffer == NULL)) return(-1);
+ buf = xmlBufFromBuffer(buffer);
+ ret = xmlBufGetNodeContent(buf, cur);
+ buffer = xmlBufBackToBuffer(buf);
+ if ((ret < 0) || (buffer == NULL))
+ return(-1);
+ return(0);
+}
+
+/**
+ * xmlBufGetNodeContent:
+ * @buf: a buffer xmlBufPtr
+ * @cur: the node being read
+ *
+ * Read the value of a node @cur, this can be either the text carried
+ * directly by this node if it's a TEXT node or the aggregate string
+ * of the values carried by this node child's (TEXT and ENTITY_REF).
+ * Entity references are substituted.
+ * Fills up the buffer @buf with this value
+ *
+ * Returns 0 in case of success and -1 in case of error.
+ */
+int
+xmlBufGetNodeContent(xmlBufPtr buf, const xmlNode *cur)
+{
+ if ((cur == NULL) || (buf == NULL)) return(-1);
switch (cur->type) {
case XML_CDATA_SECTION_NODE:
case XML_TEXT_NODE:
- xmlBufferCat(buffer, cur->content);
+ xmlBufCat(buf, cur->content);
break;
case XML_DOCUMENT_FRAG_NODE:
case XML_ELEMENT_NODE:{
- xmlNodePtr tmp = cur;
+ const xmlNode *tmp = cur;
while (tmp != NULL) {
switch (tmp->type) {
case XML_CDATA_SECTION_NODE:
case XML_TEXT_NODE:
if (tmp->content != NULL)
- xmlBufferCat(buffer, tmp->content);
+ xmlBufCat(buf, tmp->content);
break;
case XML_ENTITY_REF_NODE:
- xmlNodeBufGetContent(buffer, tmp);
+ xmlBufGetNodeContent(buf, tmp);
break;
default:
break;
@@ -5308,16 +5415,16 @@ xmlNodeBufGetContent(xmlBufferPtr buffer, xmlNodePtr cur)
while (tmp != NULL) {
if (tmp->type == XML_TEXT_NODE)
- xmlBufferCat(buffer, tmp->content);
+ xmlBufCat(buf, tmp->content);
else
- xmlNodeBufGetContent(buffer, tmp);
+ xmlBufGetNodeContent(buf, tmp);
tmp = tmp->next;
}
break;
}
case XML_COMMENT_NODE:
case XML_PI_NODE:
- xmlBufferCat(buffer, cur->content);
+ xmlBufCat(buf, cur->content);
break;
case XML_ENTITY_REF_NODE:{
xmlEntityPtr ent;
@@ -5335,7 +5442,7 @@ xmlNodeBufGetContent(xmlBufferPtr buffer, xmlNodePtr cur)
* xmlNodeGetContent() which handles all possible node types */
tmp = ent->children;
while (tmp) {
- xmlNodeBufGetContent(buffer, tmp);
+ xmlBufGetNodeContent(buf, tmp);
tmp = tmp->next;
}
break;
@@ -5357,13 +5464,13 @@ xmlNodeBufGetContent(xmlBufferPtr buffer, xmlNodePtr cur)
if ((cur->type == XML_ELEMENT_NODE) ||
(cur->type == XML_TEXT_NODE) ||
(cur->type == XML_CDATA_SECTION_NODE)) {
- xmlNodeBufGetContent(buffer, cur);
+ xmlBufGetNodeContent(buf, cur);
}
cur = cur->next;
}
break;
case XML_NAMESPACE_DECL:
- xmlBufferCat(buffer, ((xmlNsPtr) cur)->href);
+ xmlBufCat(buf, ((xmlNsPtr) cur)->href);
break;
case XML_ELEMENT_DECL:
case XML_ATTRIBUTE_DECL:
@@ -5372,6 +5479,7 @@ xmlNodeBufGetContent(xmlBufferPtr buffer, xmlNodePtr cur)
}
return(0);
}
+
/**
* xmlNodeGetContent:
* @cur: the node being read
@@ -5384,23 +5492,22 @@ xmlNodeBufGetContent(xmlBufferPtr buffer, xmlNodePtr cur)
* It's up to the caller to free the memory with xmlFree().
*/
xmlChar *
-xmlNodeGetContent(xmlNodePtr cur)
+xmlNodeGetContent(const xmlNode *cur)
{
if (cur == NULL)
return (NULL);
switch (cur->type) {
case XML_DOCUMENT_FRAG_NODE:
case XML_ELEMENT_NODE:{
- xmlBufferPtr buffer;
+ xmlBufPtr buf;
xmlChar *ret;
- buffer = xmlBufferCreateSize(64);
- if (buffer == NULL)
+ buf = xmlBufCreateSize(64);
+ if (buf == NULL)
return (NULL);
- xmlNodeBufGetContent(buffer, cur);
- ret = buffer->content;
- buffer->content = NULL;
- xmlBufferFree(buffer);
+ xmlBufGetNodeContent(buf, cur);
+ ret = xmlBufDetach(buf);
+ xmlBufFree(buf);
return (ret);
}
case XML_ATTRIBUTE_NODE:
@@ -5412,7 +5519,7 @@ xmlNodeGetContent(xmlNodePtr cur)
return (NULL);
case XML_ENTITY_REF_NODE:{
xmlEntityPtr ent;
- xmlBufferPtr buffer;
+ xmlBufPtr buf;
xmlChar *ret;
/* lookup entity declaration */
@@ -5420,15 +5527,14 @@ xmlNodeGetContent(xmlNodePtr cur)
if (ent == NULL)
return (NULL);
- buffer = xmlBufferCreate();
- if (buffer == NULL)
+ buf = xmlBufCreate();
+ if (buf == NULL)
return (NULL);
- xmlNodeBufGetContent(buffer, cur);
+ xmlBufGetNodeContent(buf, cur);
- ret = buffer->content;
- buffer->content = NULL;
- xmlBufferFree(buffer);
+ ret = xmlBufDetach(buf);
+ xmlBufFree(buf);
return (ret);
}
case XML_ENTITY_NODE:
@@ -5443,18 +5549,17 @@ xmlNodeGetContent(xmlNodePtr cur)
case XML_DOCB_DOCUMENT_NODE:
#endif
case XML_HTML_DOCUMENT_NODE: {
- xmlBufferPtr buffer;
+ xmlBufPtr buf;
xmlChar *ret;
- buffer = xmlBufferCreate();
- if (buffer == NULL)
+ buf = xmlBufCreate();
+ if (buf == NULL)
return (NULL);
- xmlNodeBufGetContent(buffer, (xmlNodePtr) cur);
+ xmlBufGetNodeContent(buf, (xmlNodePtr) cur);
- ret = buffer->content;
- buffer->content = NULL;
- xmlBufferFree(buffer);
+ ret = xmlBufDetach(buf);
+ xmlBufFree(buf);
return (ret);
}
case XML_NAMESPACE_DECL: {
@@ -5767,7 +5872,7 @@ xmlTextMerge(xmlNodePtr first, xmlNodePtr second) {
* namespace if defined
*/
xmlNsPtr *
-xmlGetNsList(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node)
+xmlGetNsList(const xmlDoc *doc ATTRIBUTE_UNUSED, const xmlNode *node)
{
xmlNsPtr cur;
xmlNsPtr *ret = NULL;
@@ -5775,6 +5880,9 @@ xmlGetNsList(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node)
int maxns = 10;
int i;
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL))
+ return(NULL);
+
while (node != NULL) {
if (node->type == XML_ELEMENT_NODE) {
cur = node->nsDef;
@@ -5871,9 +5979,9 @@ xmlNsPtr
xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) {
xmlNsPtr cur;
- xmlNodePtr orig = node;
+ const xmlNode *orig = node;
- if (node == NULL) return(NULL);
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL)) return(NULL);
if ((nameSpace != NULL) &&
(xmlStrEqual(nameSpace, (const xmlChar *)"xml"))) {
if ((doc == NULL) && (node->type == XML_ELEMENT_NODE)) {
@@ -6003,7 +6111,7 @@ xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node, const xmlChar * href)
xmlNodePtr orig = node;
int is_attr;
- if ((node == NULL) || (href == NULL))
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) || (href == NULL))
return (NULL);
if (xmlStrEqual(href, XML_XML_NAMESPACE)) {
/*
@@ -6094,7 +6202,7 @@ xmlNewReconciliedNs(xmlDocPtr doc, xmlNodePtr tree, xmlNsPtr ns) {
xmlChar prefix[50];
int counter = 1;
- if (tree == NULL) {
+ if ((tree == NULL) || (tree->type != XML_ELEMENT_NODE)) {
#ifdef DEBUG_TREE
xmlGenericError(xmlGenericErrorContext,
"xmlNewReconciliedNs : tree == NULL\n");
@@ -6340,7 +6448,7 @@ xmlReconciliateNs(xmlDocPtr doc, xmlNodePtr tree) {
#endif /* LIBXML_TREE_ENABLED */
static xmlAttrPtr
-xmlGetPropNodeInternal(xmlNodePtr node, const xmlChar *name,
+xmlGetPropNodeInternal(const xmlNode *node, const xmlChar *name,
const xmlChar *nsName, int useDTD)
{
xmlAttrPtr prop;
@@ -6454,7 +6562,7 @@ xmlGetPropNodeInternal(xmlNodePtr node, const xmlChar *name,
}
static xmlChar*
-xmlGetPropNodeValueInternal(xmlAttrPtr prop)
+xmlGetPropNodeValueInternal(const xmlAttr *prop)
{
if (prop == NULL)
return(NULL);
@@ -6500,7 +6608,7 @@ xmlGetPropNodeValueInternal(xmlAttrPtr prop)
* neither was found.
*/
xmlAttrPtr
-xmlHasProp(xmlNodePtr node, const xmlChar *name) {
+xmlHasProp(const xmlNode *node, const xmlChar *name) {
xmlAttrPtr prop;
xmlDocPtr doc;
@@ -6555,7 +6663,7 @@ xmlHasProp(xmlNodePtr node, const xmlChar *name) {
* if neither was found.
*/
xmlAttrPtr
-xmlHasNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *nameSpace) {
+xmlHasNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace) {
return(xmlGetPropNodeInternal(node, name, nameSpace, xmlCheckDTD));
}
@@ -6577,7 +6685,7 @@ xmlHasNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *nameSpace) {
* It's up to the caller to free the memory with xmlFree().
*/
xmlChar *
-xmlGetProp(xmlNodePtr node, const xmlChar *name) {
+xmlGetProp(const xmlNode *node, const xmlChar *name) {
xmlAttrPtr prop;
prop = xmlHasProp(node, name);
@@ -6602,7 +6710,7 @@ xmlGetProp(xmlNodePtr node, const xmlChar *name) {
* It's up to the caller to free the memory with xmlFree().
*/
xmlChar *
-xmlGetNoNsProp(xmlNodePtr node, const xmlChar *name) {
+xmlGetNoNsProp(const xmlNode *node, const xmlChar *name) {
xmlAttrPtr prop;
prop = xmlGetPropNodeInternal(node, name, NULL, xmlCheckDTD);
@@ -6627,7 +6735,7 @@ xmlGetNoNsProp(xmlNodePtr node, const xmlChar *name) {
* It's up to the caller to free the memory with xmlFree().
*/
xmlChar *
-xmlGetNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *nameSpace) {
+xmlGetNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace) {
xmlAttrPtr prop;
prop = xmlGetPropNodeInternal(node, name, nameSpace, xmlCheckDTD);
@@ -6792,7 +6900,7 @@ xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name,
* Returns 1 yes, 0 no
*/
int
-xmlNodeIsText(xmlNodePtr node) {
+xmlNodeIsText(const xmlNode *node) {
if (node == NULL) return(0);
if (node->type == XML_TEXT_NODE) return(1);
@@ -6809,7 +6917,7 @@ xmlNodeIsText(xmlNodePtr node) {
* Returns 1 yes, 0 no
*/
int
-xmlIsBlankNode(xmlNodePtr node) {
+xmlIsBlankNode(const xmlNode *node) {
const xmlChar *cur;
if (node == NULL) return(0);
@@ -7212,7 +7320,7 @@ xmlBufferDump(FILE *file, xmlBufferPtr buf) {
*/
const xmlChar *
-xmlBufferContent(const xmlBufferPtr buf)
+xmlBufferContent(const xmlBuffer *buf)
{
if(!buf)
return NULL;
@@ -7230,7 +7338,7 @@ xmlBufferContent(const xmlBufferPtr buf)
*/
int
-xmlBufferLength(const xmlBufferPtr buf)
+xmlBufferLength(const xmlBuffer *buf)
{
if(!buf)
return 0;
@@ -7614,7 +7722,7 @@ xmlBufferWriteQuotedString(xmlBufferPtr buf, const xmlChar *string) {
* Returns 0 (uncompressed) to 9 (max compression)
*/
int
-xmlGetDocCompressMode (xmlDocPtr doc) {
+xmlGetDocCompressMode (const xmlDoc *doc) {
if (doc == NULL) return(-1);
return(doc->compression);
}
@@ -7805,8 +7913,7 @@ xmlDOMWrapNsMapAddItem(xmlNsMapPtr *nsmap, int position,
map->first->prev = ret;
ret->next = map->first;
map->first = ret;
- } else
- return(NULL);
+ }
ret->oldNs = oldNs;
ret->newNs = newNs;
@@ -7866,7 +7973,7 @@ xmlDOMWrapStoreNs(xmlDocPtr doc,
*
* Allocates and initializes a new DOM-wrapper context.
*
-* Returns the xmlDOMWrapCtxtPtr or NULL in case of an internal errror.
+* Returns the xmlDOMWrapCtxtPtr or NULL in case of an internal error.
*/
xmlDOMWrapCtxtPtr
xmlDOMWrapNewCtxt(void)
@@ -7951,6 +8058,8 @@ xmlDOMWrapNSNormGatherInScopeNs(xmlNsMapPtr *map,
if ((map == NULL) || (*map != NULL))
return (-1);
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL))
+ return (-1);
/*
* Get in-scope ns-decls of @parent.
*/
@@ -8218,6 +8327,8 @@ xmlSearchNsByNamespaceStrict(xmlDocPtr doc, xmlNodePtr node,
if ((doc == NULL) || (nsName == NULL) || (retNs == NULL))
return (-1);
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL))
+ return(-1);
*retNs = NULL;
if (xmlStrEqual(nsName, XML_XML_NAMESPACE)) {
@@ -8316,8 +8427,8 @@ xmlSearchNsByPrefixStrict(xmlDocPtr doc, xmlNodePtr node,
xmlNodePtr cur;
xmlNsPtr ns;
- if ((doc == NULL) || (node == NULL))
- return (-1);
+ if ((doc == NULL) || (node == NULL) || (node->type == XML_NAMESPACE_DECL))
+ return(-1);
if (retNs)
*retNs = NULL;
@@ -8385,6 +8496,9 @@ xmlDOMWrapNSNormDeclareNsForced(xmlDocPtr doc,
char buf[50];
const xmlChar *pref;
int counter = 0;
+
+ if ((doc == NULL) || (elem == NULL) || (elem->type != XML_ELEMENT_NODE))
+ return(NULL);
/*
* Create a ns-decl on @anchor.
*/
@@ -8901,6 +9015,9 @@ xmlDOMWrapAdoptBranch(xmlDOMWrapCtxtPtr ctxt,
parnsdone = 0;
cur = node;
+ if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL))
+ goto internal_error;
+
while (cur != NULL) {
/*
* Paranoid source-doc sanity check.
@@ -9280,6 +9397,9 @@ xmlDOMWrapCloneNode(xmlDOMWrapCtxtPtr ctxt,
*resNode = NULL;
cur = node;
+ if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL))
+ return(-1);
+
while (cur != NULL) {
if (cur->doc != sourceDoc) {
/*
@@ -9678,7 +9798,8 @@ leave_node:
if (clone->parent != NULL)
clone->parent->last = clone;
clone = clone->parent;
- parentClone = clone->parent;
+ if (clone != NULL)
+ parentClone = clone->parent;
/*
* Process parent --> next;
*/
@@ -9797,6 +9918,8 @@ xmlDOMWrapAdoptAttr(xmlDOMWrapCtxtPtr ctxt,
if (attr->children == NULL)
return (0);
cur = attr->children;
+ if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL))
+ goto internal_error;
while (cur != NULL) {
cur->doc = destDoc;
switch (cur->type) {
@@ -9858,7 +9981,7 @@ internal_error:
* References of out-of scope ns-decls are remapped to point to @destDoc:
* 1) If @destParent is given, then nsDef entries on element-nodes are used
* 2) If *no* @destParent is given, then @destDoc->oldNs entries are used
-* This is the case when you have an unliked node and just want to move it
+* This is the case when you have an unlinked node and just want to move it
* to the context of
*
* If @destParent is given, it ensures that the tree is namespace
@@ -9881,7 +10004,8 @@ xmlDOMWrapAdoptNode(xmlDOMWrapCtxtPtr ctxt,
xmlNodePtr destParent,
int options)
{
- if ((node == NULL) || (destDoc == NULL) ||
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) ||
+ (destDoc == NULL) ||
((destParent != NULL) && (destParent->doc != destDoc)))
return(-1);
/*
diff --git a/trio.c b/trio.c
index b116ccc..c8b9c84 100644
--- a/trio.c
+++ b/trio.c
@@ -99,7 +99,7 @@
#endif
#include <stddef.h>
-#ifdef HAVE_ERRNO_H
+#if defined( HAVE_ERRNO_H ) || defined( __VMS )
#include <errno.h>
#endif
@@ -126,13 +126,23 @@
# define TRIO_ERROR_RETURN(x,y) (-1)
#endif
+#ifndef VA_LIST_IS_ARRAY
+#define TRIO_VA_LIST_PTR va_list *
+#define TRIO_VA_LIST_ADDR(l) (&(l))
+#define TRIO_VA_LIST_DEREF(l) (*(l))
+#else
+#define TRIO_VA_LIST_PTR va_list
+#define TRIO_VA_LIST_ADDR(l) (l)
+#define TRIO_VA_LIST_DEREF(l) (l)
+#endif
+
typedef unsigned long trio_flags_t;
/*************************************************************************
* Platform specific definitions
*/
-#if defined(TRIO_PLATFORM_UNIX)
+#if defined(TRIO_PLATFORM_UNIX) || defined(TRIO_PLATFORM_OS400)
# include <unistd.h>
# include <signal.h>
# include <locale.h>
@@ -208,7 +218,7 @@ typedef unsigned long int trio_ulonglong_t;
#endif
/* Maximal and fixed integer types */
-#if defined(TRIO_COMPILER_SUPPORTS_C99)
+#if defined(TRIO_COMPILER_SUPPORTS_C99) && !defined( __VMS )
# include <stdint.h>
typedef intmax_t trio_intmax_t;
typedef uintmax_t trio_uintmax_t;
@@ -216,8 +226,12 @@ typedef int8_t trio_int8_t;
typedef int16_t trio_int16_t;
typedef int32_t trio_int32_t;
typedef int64_t trio_int64_t;
-#elif defined(TRIO_COMPILER_SUPPORTS_UNIX98)
+#elif defined(TRIO_COMPILER_SUPPORTS_UNIX98) || defined( __VMS )
# include <inttypes.h>
+#ifdef __VMS
+typedef long long int intmax_t;
+typedef unsigned long long int uintmax_t;
+#endif
typedef intmax_t trio_intmax_t;
typedef uintmax_t trio_uintmax_t;
typedef int8_t trio_int8_t;
@@ -307,6 +321,12 @@ typedef trio_longlong_t trio_int64_t;
#define NAN_LOWER "nan"
#define NAN_UPPER "NAN"
+#if !defined(HAVE_ISASCII) && !defined(isascii)
+#ifndef __VMS
+# define isascii(x) ((unsigned int)(x) < 128)
+#endif
+#endif
+
/* Various constants */
enum {
TYPE_PRINT = 1,
@@ -376,7 +396,7 @@ enum {
/* Maximal string lengths for user-defined specifiers */
MAX_USER_NAME = 64,
MAX_USER_DATA = 256,
-
+
/* Maximal length of locale separator strings */
MAX_LOCALE_SEPARATOR_LENGTH = MB_LEN_MAX,
/* Maximal number of integers in grouping */
@@ -1020,23 +1040,23 @@ TRIO_ARGS2((name, prev),
trio_userdef_t **prev)
{
trio_userdef_t *def;
-
+
if (internalEnterCriticalRegion)
(void)internalEnterCriticalRegion(NULL);
-
+
for (def = internalUserDef; def; def = def->next)
{
/* Case-sensitive string comparison */
if (trio_equal_case(def->name, name))
break;
-
+
if (prev)
*prev = def;
}
-
+
if (internalLeaveCriticalRegion)
(void)internalLeaveCriticalRegion(NULL);
-
+
return def;
}
#endif
@@ -1163,7 +1183,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
int type,
TRIO_CONST char *format,
trio_parameter_t *parameters,
- va_list *arglist,
+ TRIO_VA_LIST_PTR arglist,
trio_pointer_t *argarray)
{
/* Count the number of times a parameter is referenced */
@@ -1200,7 +1220,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
/* One and only one of arglist and argarray must be used */
assert((arglist != NULL) ^ (argarray != NULL));
-
+
/*
* The 'parameters' array is not initialized, but we need to
* know which entries we have used.
@@ -1213,7 +1233,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE)
(void)mblen(NULL, 0);
#endif
-
+
while (format[index])
{
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE)
@@ -1291,7 +1311,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
/* Skip if no precision */
if (QUALIFIER_DOT == format[index])
break;
-
+
/* After the first dot we have the precision */
flags |= FLAGS_PRECISION;
if ((QUALIFIER_STAR == format[index])
@@ -1336,7 +1356,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
else if (dots == 1) /* Base */
{
dots++;
-
+
/* After the second dot we have the base */
flags |= FLAGS_BASE;
if ((QUALIFIER_STAR == format[index])
@@ -1535,7 +1555,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
}
else
return TRIO_ERROR_RETURN(TRIO_EINVAL, index);
-
+
flags |= FLAGS_FIXED_SIZE;
break;
#endif
@@ -1563,7 +1583,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
gotSticky = TRUE;
break;
#endif
-
+
#if defined(QUALIFIER_VARSIZE)
case QUALIFIER_VARSIZE:
flags |= FLAGS_VARSIZE_PARAMETER;
@@ -1628,9 +1648,9 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
indices[varsize] = pos;
varsize = pos++;
}
-
+
indices[currentParam] = pos;
-
+
switch (format[index++])
{
#if defined(SPECIFIER_CHAR_UPPER)
@@ -1689,11 +1709,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
}
}
break;
-
+
case SPECIFIER_INTEGER:
parameters[pos].type = FORMAT_INT;
break;
-
+
case SPECIFIER_UNSIGNED:
flags |= FLAGS_UNSIGNED;
parameters[pos].type = FORMAT_INT;
@@ -1793,11 +1813,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
{
unsigned int max;
int without_namespace = TRUE;
-
+
parameters[pos].type = FORMAT_USER_DEFINED;
parameters[pos].user_name[0] = NIL;
tmpformat = (char *)&format[index];
-
+
while ((ch = format[index]))
{
index++;
@@ -1845,7 +1865,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
}
break;
#endif /* defined(SPECIFIER_USER_DEFINED_BEGIN) */
-
+
default:
/* Bail out completely to make the error more obvious */
return TRIO_ERROR_RETURN(TRIO_EINVAL, index);
@@ -1853,7 +1873,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
/* Count the number of times this entry has been used */
usedEntries[currentParam] += 1;
-
+
/* Find last sticky parameters */
if (gotSticky && !(flags & FLAGS_STICKY))
{
@@ -1876,7 +1896,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
}
}
}
-
+
parameters[pos].indexAfterSpecifier = index;
parameters[pos].flags = flags;
parameters[pos].width = width;
@@ -1884,12 +1904,12 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
parameters[pos].base = (base == NO_BASE) ? BASE_DECIMAL : base;
parameters[pos].varsize = varsize;
pos++;
-
+
if (! positional)
parameterPosition++;
-
+
} /* if identifier */
-
+
} /* while format characters left */
for (num = 0; num <= maxParam; num++)
@@ -1901,7 +1921,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
else /* double references detected */
return TRIO_ERROR_RETURN(TRIO_EDBLREF, num);
}
-
+
i = indices[num];
/*
@@ -1941,14 +1961,14 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
if (flags & FLAGS_WIDECHAR)
{
parameters[i].data.wstring = (argarray == NULL)
- ? va_arg(*arglist, trio_wchar_t *)
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_wchar_t *)
: (trio_wchar_t *)(argarray[num]);
}
else
#endif
{
parameters[i].data.string = (argarray == NULL)
- ? va_arg(*arglist, char *)
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), char *)
: (char *)(argarray[num]);
}
break;
@@ -1960,7 +1980,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
case FORMAT_COUNT:
case FORMAT_UNKNOWN:
parameters[i].data.pointer = (argarray == NULL)
- ? va_arg(*arglist, trio_pointer_t )
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_pointer_t )
: argarray[num];
break;
@@ -1969,8 +1989,8 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
if (TYPE_SCAN == type)
{
if (argarray == NULL)
- parameters[i].data.pointer =
- (trio_pointer_t)va_arg(*arglist, trio_pointer_t);
+ parameters[i].data.pointer =
+ (trio_pointer_t)va_arg(TRIO_VA_LIST_DEREF(arglist), trio_pointer_t);
else
{
if (parameters[i].type == FORMAT_CHAR)
@@ -2009,7 +2029,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
varsize = parameters[i].varsize;
}
parameters[i].flags &= ~FLAGS_ALL_VARSIZES;
-
+
if (varsize <= (int)sizeof(int))
;
else if (varsize <= (int)sizeof(long))
@@ -2028,36 +2048,36 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
#if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER)
if (parameters[i].flags & FLAGS_SIZE_T)
parameters[i].data.number.as_unsigned = (argarray == NULL)
- ? (trio_uintmax_t)va_arg(*arglist, size_t)
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), size_t)
: (trio_uintmax_t)(*((size_t *)argarray[num]));
else
#endif
#if defined(QUALIFIER_PTRDIFF_T)
if (parameters[i].flags & FLAGS_PTRDIFF_T)
parameters[i].data.number.as_unsigned = (argarray == NULL)
- ? (trio_uintmax_t)va_arg(*arglist, ptrdiff_t)
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), ptrdiff_t)
: (trio_uintmax_t)(*((ptrdiff_t *)argarray[num]));
else
#endif
#if defined(QUALIFIER_INTMAX_T)
if (parameters[i].flags & FLAGS_INTMAX_T)
parameters[i].data.number.as_unsigned = (argarray == NULL)
- ? (trio_uintmax_t)va_arg(*arglist, trio_intmax_t)
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), trio_intmax_t)
: (trio_uintmax_t)(*((trio_intmax_t *)argarray[num]));
else
#endif
if (parameters[i].flags & FLAGS_QUAD)
parameters[i].data.number.as_unsigned = (argarray == NULL)
- ? (trio_uintmax_t)va_arg(*arglist, trio_ulonglong_t)
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), trio_ulonglong_t)
: (trio_uintmax_t)(*((trio_ulonglong_t *)argarray[num]));
else if (parameters[i].flags & FLAGS_LONG)
parameters[i].data.number.as_unsigned = (argarray == NULL)
- ? (trio_uintmax_t)va_arg(*arglist, long)
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), long)
: (trio_uintmax_t)(*((long *)argarray[num]));
else
{
if (argarray == NULL)
- parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(*arglist, int);
+ parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), int);
else
{
if (parameters[i].type == FORMAT_CHAR)
@@ -2078,11 +2098,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
*/
if (parameters[i].flags & FLAGS_USER_DEFINED)
parameters[i].data.pointer = (argarray == NULL)
- ? va_arg(*arglist, trio_pointer_t )
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_pointer_t )
: argarray[num];
else
parameters[i].data.number.as_unsigned = (argarray == NULL)
- ? (trio_uintmax_t)va_arg(*arglist, int)
+ ? (trio_uintmax_t)va_arg(TRIO_VA_LIST_DEREF(arglist), int)
: (trio_uintmax_t)(*((int *)argarray[num]));
break;
@@ -2091,17 +2111,17 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
{
if (parameters[i].flags & FLAGS_LONGDOUBLE)
parameters[i].data.longdoublePointer = (argarray == NULL)
- ? va_arg(*arglist, trio_long_double_t *)
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_long_double_t *)
: (trio_long_double_t *)argarray[num];
else
{
if (parameters[i].flags & FLAGS_LONG)
parameters[i].data.doublePointer = (argarray == NULL)
- ? va_arg(*arglist, double *)
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), double *)
: (double *)argarray[num];
else
parameters[i].data.doublePointer = (argarray == NULL)
- ? (double *)va_arg(*arglist, float *)
+ ? (double *)va_arg(TRIO_VA_LIST_DEREF(arglist), float *)
: (double *)((float *)argarray[num]);
}
}
@@ -2109,13 +2129,13 @@ TRIO_ARGS5((type, format, parameters, arglist, argarray),
{
if (parameters[i].flags & FLAGS_LONGDOUBLE)
parameters[i].data.longdoubleNumber = (argarray == NULL)
- ? va_arg(*arglist, trio_long_double_t)
+ ? va_arg(TRIO_VA_LIST_DEREF(arglist), trio_long_double_t)
: (trio_long_double_t)(*((trio_long_double_t *)argarray[num]));
else
{
if (argarray == NULL)
parameters[i].data.longdoubleNumber =
- (trio_long_double_t)va_arg(*arglist, double);
+ (trio_long_double_t)va_arg(TRIO_VA_LIST_DEREF(arglist), double);
else
{
if (parameters[i].flags & FLAGS_SHORT)
@@ -2213,7 +2233,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
number &= (unsigned long)-1;
else
number &= (unsigned int)-1;
-
+
/* Build number */
pointer = bufferend = &buffer[sizeof(buffer) - 1];
*pointer-- = NIL;
@@ -2260,7 +2280,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
count = (! ((flags & FLAGS_LEFTADJUST) || (precision == NO_PRECISION)))
? precision
: 0;
-
+
/* Adjust width further */
if (isNegative || (flags & FLAGS_SHOWSIGN) || (flags & FLAGS_SPACE))
width--;
@@ -2495,7 +2515,7 @@ TRIO_ARGS4((self, wch, flags, width),
if (width == NO_WIDTH)
width = sizeof(buffer);
-
+
size = wctomb(buffer, wch);
if ((size <= 0) || (size > width) || (buffer[0] == NIL))
return 0;
@@ -2537,13 +2557,13 @@ TRIO_ARGS5((self, wstring, flags, width, precision),
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE)
(void)mblen(NULL, 0);
#endif
-
+
if (wstring == NULL)
{
TrioWriteString(self, NULL, flags, width, precision);
return;
}
-
+
if (NO_PRECISION == precision)
{
length = INT_MAX;
@@ -2638,7 +2658,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
BOOLEAN_T keepTrailingZeroes;
BOOLEAN_T keepDecimalPoint;
trio_long_double_t epsilon;
-
+
assert(VALID(self));
assert(VALID(self->OutStream));
assert(((base >= MIN_BASE) && (base <= MAX_BASE)) || (base == NO_BASE));
@@ -2653,7 +2673,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
: NAN_LOWER,
flags, width, precision);
return;
-
+
case TRIO_FP_INFINITE:
if (isNegative)
{
@@ -2680,7 +2700,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
/* Finitude */
break;
}
-
+
/* Normal numbers */
if (flags & FLAGS_LONGDOUBLE)
{
@@ -2728,13 +2748,13 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
precision = FLT_DIG;
}
}
-
+
if (isNegative)
number = -number;
if (isHex)
flags |= FLAGS_FLOAT_E;
-
+
if (flags & FLAGS_FLOAT_G)
{
if (precision == 0)
@@ -2787,7 +2807,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
integerNumber = floorl(number);
fractionNumber = number - integerNumber;
-
+
/*
* Truncated number.
*
@@ -2802,7 +2822,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
: zeroes + precision;
dblFractionBase = TrioPower(base, fractionDigits);
-
+
workNumber = number + 0.5 / dblFractionBase;
if (floorl(number) != floorl(workNumber))
{
@@ -2855,7 +2875,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
integerThreshold = INT_MAX;
fractionThreshold = INT_MAX;
}
-
+
/*
* Calculate expected width.
* sign + integer part + thousands separators + decimal point
@@ -2891,7 +2911,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
((requireTwoDigitExponent ? sizeof("E+0") : sizeof("E+")) - 1);
if (isHex)
expectedWidth += sizeof("0X") - 1;
-
+
/* Output prefixing */
if (flags & FLAGS_NILPADDING)
{
@@ -2937,7 +2957,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x');
}
}
-
+
/* Output the integer part and thousand separators */
dblIntegerBase = 1.0 / TrioPower(base, integerDigits - 1);
for (i = 0; i < integerDigits; i++)
@@ -2953,7 +2973,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
self->OutStream(self, digits[(int)fmodl(workNumber, dblBase)]);
}
dblIntegerBase *= dblBase;
-
+
if (((flags & (FLAGS_FLOAT_E | FLAGS_QUOTE)) == FLAGS_QUOTE)
&& TrioFollowedBySeparator(integerDigits - i))
{
@@ -2965,7 +2985,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
}
}
}
-
+
/* Insert decimal point and build the fraction part */
trailingZeroes = 0;
@@ -3014,7 +3034,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
}
}
}
-
+
if (keepTrailingZeroes)
{
while (trailingZeroes > 0)
@@ -3023,7 +3043,7 @@ TRIO_ARGS6((self, number, flags, width, precision, base),
trailingZeroes--;
}
}
-
+
/* Output exponent */
if (exponentDigits > 0)
{
@@ -3080,13 +3100,13 @@ TRIO_ARGS3((data, format, parameters),
int precision;
int base;
int index;
-
+
index = 0;
i = 0;
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE)
(void)mblen(NULL, 0);
#endif
-
+
while (format[index])
{
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE)
@@ -3120,7 +3140,7 @@ TRIO_ARGS3((data, format, parameters),
/* Skip the parameter entries */
while (parameters[i].type == FORMAT_PARAMETER)
i++;
-
+
flags = parameters[i].flags;
/* Find width */
@@ -3140,7 +3160,7 @@ TRIO_ARGS3((data, format, parameters),
width = -width;
}
}
-
+
/* Find precision */
if (flags & FLAGS_PRECISION)
{
@@ -3171,7 +3191,7 @@ TRIO_ARGS3((data, format, parameters),
/* Get base from parameter list */
base = (int)parameters[base].data.number.as_signed;
}
-
+
switch (parameters[i].type)
{
case FORMAT_CHAR:
@@ -3251,7 +3271,7 @@ TRIO_ARGS3((data, format, parameters),
case FORMAT_POINTER:
{
trio_reference_t reference;
-
+
reference.data = data;
reference.parameter = &parameters[i];
trio_print_pointer(&reference, parameters[i].data.pointer);
@@ -3354,7 +3374,7 @@ TRIO_ARGS3((data, format, parameters),
}
break;
#endif /* defined(FORMAT_USER_DEFINED) */
-
+
default:
break;
} /* switch parameter type */
@@ -3380,7 +3400,7 @@ TrioFormatRef
TRIO_ARGS4((reference, format, arglist, argarray),
trio_reference_t *reference,
TRIO_CONST char *format,
- va_list *arglist,
+ TRIO_VA_LIST_PTR arglist,
trio_pointer_t *argarray)
{
int status;
@@ -3408,7 +3428,7 @@ TRIO_ARGS6((destination, destinationSize, OutStream, format, arglist, argarray),
size_t destinationSize,
void (*OutStream) TRIO_PROTO((trio_class_t *, int)),
TRIO_CONST char *format,
- va_list *arglist,
+ TRIO_VA_LIST_PTR arglist,
trio_pointer_t *argarray)
{
int status;
@@ -3564,7 +3584,7 @@ TRIO_ARGS2((self, output),
assert(VALID(self));
assert(VALID(self->location));
-
+
buffer = (char **)self->location;
if (self->processed < self->max)
@@ -3632,9 +3652,9 @@ TRIO_VARGS2((format, va_alist),
va_list args;
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
- status = TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL);
+ status = TrioFormat(stdout, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -3654,7 +3674,7 @@ TRIO_ARGS2((format, args),
{
assert(VALID(format));
- return TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL);
+ return TrioFormat(stdout, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL);
}
/**
@@ -3699,9 +3719,9 @@ TRIO_VARGS3((file, format, va_alist),
assert(VALID(file));
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
- status = TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL);
+ status = TrioFormat(file, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -3723,8 +3743,8 @@ TRIO_ARGS3((file, format, args),
{
assert(VALID(file));
assert(VALID(format));
-
- return TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL);
+
+ return TrioFormat(file, 0, TrioOutStreamFile, format, TRIO_VA_LIST_ADDR(args), NULL);
}
/**
@@ -3744,7 +3764,7 @@ TRIO_ARGS3((file, format, args),
{
assert(VALID(file));
assert(VALID(format));
-
+
return TrioFormat(file, 0, TrioOutStreamFile, format, NULL, args);
}
@@ -3771,9 +3791,9 @@ TRIO_VARGS3((fd, format, va_alist),
va_list args;
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
- status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL);
+ status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -3794,8 +3814,8 @@ TRIO_ARGS3((fd, format, args),
va_list args)
{
assert(VALID(format));
-
- return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL);
+
+ return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, TRIO_VA_LIST_ADDR(args), NULL);
}
/**
@@ -3814,7 +3834,7 @@ TRIO_ARGS3((fd, format, args),
trio_pointer_t *args)
{
assert(VALID(format));
-
+
return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, NULL, args);
}
@@ -3839,7 +3859,7 @@ TRIO_VARGS4((stream, closure, format, va_alist),
TRIO_VA_START(args, format);
data.stream.out = stream;
data.closure = closure;
- status = TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL);
+ status = TrioFormat(&data, 0, TrioOutStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -3859,7 +3879,7 @@ TRIO_ARGS4((stream, closure, format, args),
data.stream.out = stream;
data.closure = closure;
- return TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL);
+ return TrioFormat(&data, 0, TrioOutStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL);
}
TRIO_PUBLIC int
@@ -3904,9 +3924,9 @@ TRIO_VARGS3((buffer, format, va_alist),
assert(VALID(buffer));
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL);
+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, TRIO_VA_LIST_ADDR(args), NULL);
*buffer = NIL; /* Terminate with NIL character */
TRIO_VA_END(args);
return status;
@@ -3932,7 +3952,7 @@ TRIO_ARGS3((buffer, format, args),
assert(VALID(buffer));
assert(VALID(format));
- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL);
+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, TRIO_VA_LIST_ADDR(args), NULL);
*buffer = NIL;
return status;
}
@@ -3991,7 +4011,7 @@ TRIO_VARGS4((buffer, max, format, va_alist),
TRIO_VA_START(args, format);
status = TrioFormat(&buffer, max > 0 ? max - 1 : 0,
- TrioOutStreamStringMax, format, &args, NULL);
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL);
if (max > 0)
*buffer = NIL;
TRIO_VA_END(args);
@@ -4021,7 +4041,7 @@ TRIO_ARGS4((buffer, max, format, args),
assert(VALID(format));
status = TrioFormat(&buffer, max > 0 ? max - 1 : 0,
- TrioOutStreamStringMax, format, &args, NULL);
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL);
if (max > 0)
*buffer = NIL;
return status;
@@ -4082,7 +4102,7 @@ TRIO_VARGS4((buffer, max, format, va_alist),
buffer = &buffer[buf_len];
status = TrioFormat(&buffer, max - 1 - buf_len,
- TrioOutStreamStringMax, format, &args, NULL);
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
*buffer = NIL;
return status;
@@ -4098,14 +4118,14 @@ TRIO_ARGS4((buffer, max, format, args),
{
int status;
size_t buf_len;
-
+
assert(VALID(buffer));
assert(VALID(format));
buf_len = trio_length(buffer);
buffer = &buffer[buf_len];
status = TrioFormat(&buffer, max - 1 - buf_len,
- TrioOutStreamStringMax, format, &args, NULL);
+ TrioOutStreamStringMax, format, TRIO_VA_LIST_ADDR(args), NULL);
*buffer = NIL;
return status;
}
@@ -4126,13 +4146,13 @@ TRIO_VARGS2((format, va_alist),
char *result = NULL;
assert(VALID(format));
-
+
info = trio_xstring_duplicate("");
if (info)
{
TRIO_VA_START(args, format);
(void)TrioFormat(info, 0, TrioOutStreamStringDynamic,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
trio_string_terminate(info);
@@ -4151,14 +4171,14 @@ TRIO_ARGS2((format, args),
{
trio_string_t *info;
char *result = NULL;
-
+
assert(VALID(format));
-
+
info = trio_xstring_duplicate("");
if (info)
{
(void)TrioFormat(info, 0, TrioOutStreamStringDynamic,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
trio_string_terminate(info);
result = trio_string_extract(info);
trio_string_destroy(info);
@@ -4180,7 +4200,7 @@ TRIO_VARGS3((result, format, va_alist),
assert(VALID(format));
*result = NULL;
-
+
info = trio_xstring_duplicate("");
if (info == NULL)
{
@@ -4190,7 +4210,7 @@ TRIO_VARGS3((result, format, va_alist),
{
TRIO_VA_START(args, format);
status = TrioFormat(info, 0, TrioOutStreamStringDynamic,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
if (status >= 0)
{
@@ -4211,11 +4231,11 @@ TRIO_ARGS3((result, format, args),
{
int status;
trio_string_t *info;
-
+
assert(VALID(format));
*result = NULL;
-
+
info = trio_xstring_duplicate("");
if (info == NULL)
{
@@ -4224,7 +4244,7 @@ TRIO_ARGS3((result, format, args),
else
{
status = TrioFormat(info, 0, TrioOutStreamStringDynamic,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
if (status >= 0)
{
trio_string_terminate(info);
@@ -4264,7 +4284,7 @@ TRIO_ARGS3((result, format, args),
@param name
@return Handle.
*/
-TRIO_PUBLIC trio_pointer_t
+TRIO_PUBLIC trio_pointer_t
trio_register
TRIO_ARGS2((callback, name),
trio_callback_t callback,
@@ -4291,23 +4311,23 @@ TRIO_ARGS2((callback, name),
}
return NULL;
}
-
+
/* Bail out if namespace is too long */
if (trio_length(name) >= MAX_USER_NAME)
return NULL;
-
+
/* Bail out if namespace already is registered */
def = TrioFindNamespace(name, &prev);
if (def)
return NULL;
}
-
+
def = (trio_userdef_t *)TRIO_MALLOC(sizeof(trio_userdef_t));
if (def)
{
if (internalEnterCriticalRegion)
(void)internalEnterCriticalRegion(NULL);
-
+
if (name)
{
/* Link into internal list */
@@ -4352,12 +4372,12 @@ TRIO_ARGS1((handle),
{
if (internalEnterCriticalRegion)
(void)internalEnterCriticalRegion(NULL);
-
+
if (prev == NULL)
internalUserDef = NULL;
else
prev->next = def->next;
-
+
if (internalLeaveCriticalRegion)
(void)internalLeaveCriticalRegion(NULL);
}
@@ -4377,14 +4397,14 @@ TRIO_ARGS1((ref),
#if defined(FORMAT_USER_DEFINED)
assert(((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINED);
#endif
-
+
return (((trio_reference_t *)ref)->parameter->user_data);
}
/*************************************************************************
* trio_get_argument [public]
*/
-trio_pointer_t
+trio_pointer_t
trio_get_argument
TRIO_ARGS1((ref),
trio_pointer_t ref)
@@ -4392,7 +4412,7 @@ TRIO_ARGS1((ref),
#if defined(FORMAT_USER_DEFINED)
assert(((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINED);
#endif
-
+
return ((trio_reference_t *)ref)->parameter->data.pointer;
}
@@ -4924,9 +4944,9 @@ TRIO_VARGS3((ref, format, va_alist),
va_list arglist;
assert(VALID(format));
-
+
TRIO_VA_START(arglist, format);
- status = TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL);
+ status = TrioFormatRef((trio_reference_t *)ref, format, TRIO_VA_LIST_ADDR(arglist), NULL);
TRIO_VA_END(arglist);
return status;
}
@@ -4942,8 +4962,8 @@ TRIO_ARGS3((ref, format, arglist),
va_list arglist)
{
assert(VALID(format));
-
- return TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL);
+
+ return TrioFormatRef((trio_reference_t *)ref, format, TRIO_VA_LIST_ADDR(arglist), NULL);
}
/*************************************************************************
@@ -4957,7 +4977,7 @@ TRIO_ARGS3((ref, format, argarray),
trio_pointer_t *argarray)
{
assert(VALID(format));
-
+
return TrioFormatRef((trio_reference_t *)ref, format, NULL, argarray);
}
@@ -5206,7 +5226,7 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass),
switch (ch)
{
case QUALIFIER_MINUS: /* Scanlist ranges */
-
+
/*
* Both C99 and UNIX98 describes ranges as implementation-
* defined.
@@ -5233,17 +5253,17 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass),
return TRIO_ERROR_RETURN(TRIO_EINVAL, index);
if (range_begin > range_end)
return TRIO_ERROR_RETURN(TRIO_ERANGE, index);
-
+
for (i = (int)range_begin; i <= (int)range_end; i++)
characterclass[i]++;
-
+
ch = range_end;
break;
-
+
#if TRIO_EXTENSION
case SPECIFIER_GROUP:
-
+
switch (format[index + 1])
{
case QUALIFIER_DOT: /* Collating symbol */
@@ -5262,15 +5282,15 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass),
}
if (format[++i] != SPECIFIER_UNGROUP)
return -1;
-
+
index = i;
break;
-
+
case QUALIFIER_EQUAL: /* Equivalence class expressions */
{
unsigned int j;
unsigned int k;
-
+
if (internalCollationUnconverted)
{
/* Lazy evaluation of collation array */
@@ -5294,13 +5314,13 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass),
}
if (format[++i] != SPECIFIER_UNGROUP)
return -1;
-
+
index = i;
}
break;
-
+
case QUALIFIER_COLON: /* Character class expressions */
-
+
if (trio_equal_max(CLASS_ALNUM, sizeof(CLASS_ALNUM) - 1,
&format[index]))
{
@@ -5400,9 +5420,9 @@ TRIO_ARGS4((format, indexPointer, flagsPointer, characterclass),
break;
}
break;
-
+
#endif /* TRIO_EXTENSION */
-
+
default:
characterclass[(int)ch]++;
break;
@@ -5448,9 +5468,9 @@ TRIO_ARGS5((self, target, flags, width, base),
}
internalDigitsUnconverted = FALSE;
}
-
+
TrioSkipWhitespaces(self);
-
+
if (!(flags & FLAGS_UNSIGNED))
{
/* Leading sign */
@@ -5464,9 +5484,9 @@ TRIO_ARGS5((self, target, flags, width, base),
isNegative = TRUE;
}
}
-
+
count = self->processed;
-
+
if (flags & FLAGS_ALTERNATIVE)
{
switch (base)
@@ -5527,7 +5547,7 @@ TRIO_ARGS5((self, target, flags, width, base),
}
else
break;
-
+
number *= base;
number += digit;
gotNumber = TRUE; /* we need at least one digit */
@@ -5538,7 +5558,7 @@ TRIO_ARGS5((self, target, flags, width, base),
/* Was anything read at all? */
if (!gotNumber)
return FALSE;
-
+
if (target)
*target = (isNegative) ? -((trio_intmax_t)number) : number;
return TRUE;
@@ -5558,7 +5578,7 @@ TRIO_ARGS4((self, target, flags, width),
int i;
char ch;
trio_uintmax_t number;
-
+
assert(VALID(self));
assert(VALID(self->InStream));
@@ -5603,7 +5623,7 @@ TRIO_ARGS4((self, target, flags, width),
break;
}
}
-
+
if (target)
target[i] = ch;
}
@@ -5622,12 +5642,12 @@ TRIO_ARGS4((self, target, flags, width),
int width)
{
int i;
-
+
assert(VALID(self));
assert(VALID(self->InStream));
TrioSkipWhitespaces(self);
-
+
/*
* Continue until end of string is reached, a whitespace is encountered,
* or width is exceeded
@@ -5663,7 +5683,7 @@ TRIO_ARGS4((self, target, flags, width),
int amount = 0;
trio_wchar_t wch;
char buffer[MB_LEN_MAX + 1];
-
+
assert(VALID(self));
assert(VALID(self->InStream));
@@ -5720,7 +5740,7 @@ TRIO_ARGS4((self, target, flags, width),
{
int i;
int size;
-
+
assert(VALID(self));
assert(VALID(self->InStream));
@@ -5729,7 +5749,7 @@ TRIO_ARGS4((self, target, flags, width),
#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE)
(void)mblen(NULL, 0);
#endif
-
+
/*
* Continue until end of string is reached, a whitespace is encountered,
* or width is exceeded
@@ -5767,7 +5787,7 @@ TRIO_ARGS5((self, target, characterclass, flags, width),
{
int ch;
int i;
-
+
assert(VALID(self));
assert(VALID(self->InStream));
@@ -5782,7 +5802,7 @@ TRIO_ARGS5((self, target, characterclass, flags, width),
target[i] = (char)ch;
self->InStream(self, &ch);
}
-
+
if (target)
target[i] = NIL;
return TRUE;
@@ -5811,12 +5831,12 @@ TRIO_ARGS4((self, target, flags, width),
BOOLEAN_T isHex = FALSE;
doubleString[0] = 0;
-
+
if ((width == NO_WIDTH) || (width > (int)sizeof(doubleString) - 1))
width = sizeof(doubleString) - 1;
-
+
TrioSkipWhitespaces(self);
-
+
/*
* Read entire double number from stream. trio_to_double requires
* a string as input, but InStream can be anything, so we have to
@@ -5902,11 +5922,11 @@ TRIO_ARGS4((self, target, flags, width),
self->InStream(self, &ch);
}
break;
-
+
default:
break;
}
-
+
while ((ch != EOF) && (index - start < width))
{
/* Integer part */
@@ -5966,7 +5986,7 @@ TRIO_ARGS4((self, target, flags, width),
return FALSE;
doubleString[index] = 0;
-
+
if (flags & FLAGS_LONGDOUBLE)
{
*((trio_long_double_t *)target) = trio_to_long_double(doubleString, NULL);
@@ -5992,7 +6012,7 @@ TRIO_ARGS3((self, target, flags),
char buffer[sizeof(internalNullString)];
flags |= (FLAGS_UNSIGNED | FLAGS_ALTERNATIVE | FLAGS_NILPADDING);
-
+
if (TrioReadNumber(self,
&number,
flags,
@@ -6013,7 +6033,7 @@ TRIO_ARGS3((self, target, flags),
: buffer,
0,
sizeof(internalNullString) - 1))
- {
+ {
if (trio_equal_case(buffer, internalNullString))
{
if (target)
@@ -6077,12 +6097,12 @@ TRIO_ARGS3((data, format, parameters),
}
}
#endif /* TRIO_COMPILER_SUPPORTS_MULTIBYTE */
-
+
if ((EOF == ch) && (parameters[i].type != FORMAT_COUNT))
{
return (assignment > 0) ? assignment : EOF;
}
-
+
if (CHAR_IDENTIFIER == format[index])
{
if (CHAR_IDENTIFIER == format[index + 1])
@@ -6101,7 +6121,7 @@ TRIO_ARGS3((data, format, parameters),
/* Skip the parameter entries */
while (parameters[i].type == FORMAT_PARAMETER)
i++;
-
+
flags = parameters[i].flags;
/* Find width */
width = parameters[i].width;
@@ -6117,7 +6137,7 @@ TRIO_ARGS3((data, format, parameters),
/* Get base from parameter list */
base = (int)parameters[base].data.number.as_signed;
}
-
+
switch (parameters[i].type)
{
case FORMAT_INT:
@@ -6165,7 +6185,7 @@ TRIO_ARGS3((data, format, parameters),
}
}
break; /* FORMAT_INT */
-
+
case FORMAT_STRING:
#if TRIO_WIDECHAR
if (flags & FLAGS_WIDECHAR)
@@ -6229,7 +6249,7 @@ TRIO_ARGS3((data, format, parameters),
}
/* Skip over group specifier */
index++;
-
+
memset(characterclass, 0, sizeof(characterclass));
rc = TrioGetCharacterClass(format,
&index,
@@ -6291,7 +6311,7 @@ TRIO_ARGS3((data, format, parameters),
}
}
break; /* FORMAT_COUNT */
-
+
case FORMAT_CHAR:
#if TRIO_WIDECHAR
if (flags & FLAGS_WIDECHAR)
@@ -6353,7 +6373,7 @@ TRIO_ARGS3((data, format, parameters),
}
else
return assignment;
-
+
index++;
}
}
@@ -6370,7 +6390,7 @@ TRIO_ARGS6((source, sourceSize, InStream, format, arglist, argarray),
size_t sourceSize,
void (*InStream) TRIO_PROTO((trio_class_t *, int *)),
TRIO_CONST char *format,
- va_list *arglist,
+ TRIO_VA_LIST_PTR arglist,
trio_pointer_t *argarray)
{
int status;
@@ -6392,7 +6412,7 @@ TRIO_ARGS6((source, sourceSize, InStream, format, arglist, argarray),
TrioSetLocale();
}
#endif
-
+
status = TrioParse(TYPE_SCAN, format, parameters, arglist, argarray);
if (status < 0)
return status;
@@ -6414,11 +6434,14 @@ TRIO_ARGS2((self, intPointer),
trio_class_t *self,
int *intPointer)
{
- FILE *file = (FILE *)self->location;
+ FILE *file;
assert(VALID(self));
+ assert(VALID(self->location));
assert(VALID(file));
+ file = (FILE *)self->location;
+
self->current = fgetc(file);
if (self->current == EOF)
{
@@ -6431,7 +6454,7 @@ TRIO_ARGS2((self, intPointer),
self->processed++;
self->committed++;
}
-
+
if (VALID(intPointer))
{
*intPointer = self->current;
@@ -6447,11 +6470,14 @@ TRIO_ARGS2((self, intPointer),
trio_class_t *self,
int *intPointer)
{
- int fd = *((int *)self->location);
+ int fd;
int size;
unsigned char input;
assert(VALID(self));
+ assert(VALID(self->location));
+
+ fd = *((int *)self->location);
size = read(fd, &input, sizeof(char));
if (size == -1)
@@ -6468,7 +6494,7 @@ TRIO_ARGS2((self, intPointer),
self->committed++;
self->processed++;
}
-
+
if (VALID(intPointer))
{
*intPointer = self->current;
@@ -6485,7 +6511,7 @@ TRIO_ARGS2((self, intPointer),
int *intPointer)
{
trio_custom_t *data;
-
+
assert(VALID(self));
assert(VALID(self->location));
@@ -6494,7 +6520,7 @@ TRIO_ARGS2((self, intPointer),
self->current = (data->stream.in == NULL)
? NIL
: (data->stream.in)(data->closure);
-
+
if (self->current == NIL)
{
self->current = EOF;
@@ -6504,7 +6530,7 @@ TRIO_ARGS2((self, intPointer),
self->processed++;
self->committed++;
}
-
+
if (VALID(intPointer))
{
*intPointer = self->current;
@@ -6537,7 +6563,7 @@ TRIO_ARGS2((self, intPointer),
self->processed++;
self->committed++;
}
-
+
if (VALID(intPointer))
{
*intPointer = self->current;
@@ -6578,11 +6604,11 @@ TRIO_VARGS2((format, va_alist),
va_list args;
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
status = TrioScan((trio_pointer_t)stdin, 0,
TrioInStreamFile,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -6594,10 +6620,10 @@ TRIO_ARGS2((format, args),
va_list args)
{
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)stdin, 0,
TrioInStreamFile,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
}
TRIO_PUBLIC int
@@ -6607,7 +6633,7 @@ TRIO_ARGS2((format, args),
trio_pointer_t *args)
{
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)stdin, 0,
TrioInStreamFile,
format, NULL, args);
@@ -6628,11 +6654,11 @@ TRIO_VARGS3((file, format, va_alist),
assert(VALID(file));
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
status = TrioScan((trio_pointer_t)file, 0,
TrioInStreamFile,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -6646,10 +6672,10 @@ TRIO_ARGS3((file, format, args),
{
assert(VALID(file));
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)file, 0,
TrioInStreamFile,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
}
TRIO_PUBLIC int
@@ -6661,7 +6687,7 @@ TRIO_ARGS3((file, format, args),
{
assert(VALID(file));
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)file, 0,
TrioInStreamFile,
format, NULL, args);
@@ -6681,11 +6707,11 @@ TRIO_VARGS3((fd, format, va_alist),
va_list args;
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
status = TrioScan((trio_pointer_t)&fd, 0,
TrioInStreamFileDescriptor,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -6698,10 +6724,10 @@ TRIO_ARGS3((fd, format, args),
va_list args)
{
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)&fd, 0,
TrioInStreamFileDescriptor,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
}
TRIO_PUBLIC int
@@ -6712,7 +6738,7 @@ TRIO_ARGS3((fd, format, args),
trio_pointer_t *args)
{
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)&fd, 0,
TrioInStreamFileDescriptor,
format, NULL, args);
@@ -6735,11 +6761,11 @@ TRIO_VARGS4((stream, closure, format, va_alist),
assert(VALID(stream));
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
data.stream.in = stream;
data.closure = closure;
- status = TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL);
+ status = TrioScan(&data, 0, TrioInStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -6753,13 +6779,13 @@ TRIO_ARGS4((stream, closure, format, args),
va_list args)
{
trio_custom_t data;
-
+
assert(VALID(stream));
assert(VALID(format));
data.stream.in = stream;
data.closure = closure;
- return TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL);
+ return TrioScan(&data, 0, TrioInStreamCustom, format, TRIO_VA_LIST_ADDR(args), NULL);
}
TRIO_PUBLIC int
@@ -6771,7 +6797,7 @@ TRIO_ARGS4((stream, closure, format, args),
trio_pointer_t *args)
{
trio_custom_t data;
-
+
assert(VALID(stream));
assert(VALID(format));
@@ -6795,11 +6821,11 @@ TRIO_VARGS3((buffer, format, va_alist),
assert(VALID(buffer));
assert(VALID(format));
-
+
TRIO_VA_START(args, format);
status = TrioScan((trio_pointer_t)&buffer, 0,
TrioInStreamString,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
TRIO_VA_END(args);
return status;
}
@@ -6813,10 +6839,10 @@ TRIO_ARGS3((buffer, format, args),
{
assert(VALID(buffer));
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)&buffer, 0,
TrioInStreamString,
- format, &args, NULL);
+ format, TRIO_VA_LIST_ADDR(args), NULL);
}
TRIO_PUBLIC int
@@ -6828,7 +6854,7 @@ TRIO_ARGS3((buffer, format, args),
{
assert(VALID(buffer));
assert(VALID(format));
-
+
return TrioScan((trio_pointer_t)&buffer, 0,
TrioInStreamString,
format, NULL, args);
diff --git a/trio.h b/trio.h
index eab1b6d..99d2127 100644
--- a/trio.h
+++ b/trio.h
@@ -28,7 +28,7 @@
* Use autoconf defines if present. Packages using trio must define
* HAVE_CONFIG_H as a compiler option themselves.
*/
-#if defined(HAVE_CONFIG_H)
+#if defined(TRIO_HAVE_CONFIG_H)
# include "config.h"
#endif
@@ -155,45 +155,59 @@ void trio_locale_set_grouping TRIO_PROTO((char *grouping));
#ifdef TRIO_REPLACE_STDIO
/* Replace the <stdio.h> functions */
#ifndef HAVE_PRINTF
+# undef printf
# define printf trio_printf
#endif
#ifndef HAVE_VPRINTF
+# undef vprintf
# define vprintf trio_vprintf
#endif
#ifndef HAVE_FPRINTF
+# undef fprintf
# define fprintf trio_fprintf
#endif
#ifndef HAVE_VFPRINTF
+# undef vfprintf
# define vfprintf trio_vfprintf
#endif
#ifndef HAVE_SPRINTF
+# undef sprintf
# define sprintf trio_sprintf
#endif
#ifndef HAVE_VSPRINTF
+# undef vsprintf
# define vsprintf trio_vsprintf
#endif
#ifndef HAVE_SNPRINTF
+# undef snprintf
# define snprintf trio_snprintf
#endif
#ifndef HAVE_VSNPRINTF
+# undef vsnprintf
# define vsnprintf trio_vsnprintf
#endif
#ifndef HAVE_SCANF
+# undef scanf
# define scanf trio_scanf
#endif
#ifndef HAVE_VSCANF
+# undef vscanf
# define vscanf trio_vscanf
#endif
#ifndef HAVE_FSCANF
+# undef fscanf
# define fscanf trio_fscanf
#endif
#ifndef HAVE_VFSCANF
+# undef vfscanf
# define vfscanf trio_vfscanf
#endif
#ifndef HAVE_SSCANF
+# undef sscanf
# define sscanf trio_sscanf
#endif
#ifndef HAVE_VSSCANF
+# undef vsscanf
# define vsscanf trio_vsscanf
#endif
/* These aren't stdio functions, but we make them look similar */
diff --git a/triodef.h b/triodef.h
index fa89416..46772ee 100644
--- a/triodef.h
+++ b/triodef.h
@@ -48,6 +48,8 @@
* based on the DECC compiler later on.
*/
# define TRIO_PLATFORM_VMS
+#elif defined(__OS400__)
+# define TRIO_PLATFORM_OS400
#elif defined(unix) || defined(__unix) || defined(__unix__)
# define TRIO_PLATFORM_UNIX
#elif defined(TRIO_COMPILER_XLC) || defined(_AIX)
@@ -98,6 +100,10 @@
# define TRIO_COMPILER_SUPPORTS_C94
# endif
# endif
+#elif defined(TRIO_COMPILER_XLC) && defined(__EXTENDED__)
+# define TRIO_COMPILER_SUPPORTS_C89
+# define TRIO_COMPILER_SUPPORTS_C90
+# define TRIO_COMPILER_SUPPORTS_C94
#endif
#if defined(_XOPEN_SOURCE)
diff --git a/trionan.c b/trionan.c
index 95baae1..6fbabb5 100644
--- a/trionan.c
+++ b/trionan.c
@@ -261,7 +261,7 @@ trio_pinf(TRIO_NOARGS)
static double result = 0.0;
if (result == 0.0) {
-
+
#if defined(INFINITY) && defined(__STDC_IEC_559__)
result = (double)INFINITY;
@@ -283,7 +283,7 @@ trio_pinf(TRIO_NOARGS)
/* Force overflow */
result += HUGE_VAL;
}
-
+
# if defined(TRIO_PLATFORM_UNIX)
signal(SIGFPE, signal_handler);
# endif
@@ -326,13 +326,13 @@ trio_nan(TRIO_NOARGS)
static double result = 0.0;
if (result == 0.0) {
-
+
#if defined(TRIO_COMPILER_SUPPORTS_C99)
result = nan("");
#elif defined(NAN) && defined(__STDC_IEC_559__)
result = (double)NAN;
-
+
#elif defined(USE_IEEE_754)
result = trio_make_double(ieee_754_qnan_array);
@@ -349,13 +349,13 @@ trio_nan(TRIO_NOARGS)
# if defined(TRIO_PLATFORM_UNIX)
void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN);
# endif
-
+
result = trio_pinf() / trio_pinf();
-
+
# if defined(TRIO_PLATFORM_UNIX)
signal(SIGFPE, signal_handler);
# endif
-
+
#endif
}
return result;
@@ -381,7 +381,7 @@ TRIO_ARGS1((number),
* the conservative approach and only use it for UNIX95.
*/
return isnan(number);
-
+
#elif defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB)
/*
* Microsoft Visual C++ and Borland C++ Builder have an _isnan()
@@ -398,20 +398,20 @@ TRIO_ARGS1((number),
int is_special_quantity;
is_special_quantity = trio_is_special_quantity(number, &has_mantissa);
-
+
return (is_special_quantity && has_mantissa);
-
+
#else
/*
* Fallback solution
*/
int status;
double integral, fraction;
-
+
# if defined(TRIO_PLATFORM_UNIX)
void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN);
# endif
-
+
status = (/*
* NaN is the only number which does not compare to itself
*/
@@ -422,13 +422,13 @@ TRIO_ARGS1((number),
((number != 0.0) &&
(fraction = modf(number, &integral),
integral == fraction)));
-
+
# if defined(TRIO_PLATFORM_UNIX)
signal(SIGFPE, signal_handler);
# endif
-
+
return status;
-
+
#endif
}
@@ -459,7 +459,7 @@ TRIO_ARGS1((number),
return isinf(number)
? ((number > 0.0) ? 1 : -1)
: 0;
-
+
#elif defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB)
/*
* Microsoft Visual C++ and Borland C++ Builder have an _fpclass()
@@ -478,7 +478,7 @@ TRIO_ARGS1((number),
int is_special_quantity;
is_special_quantity = trio_is_special_quantity(number, &has_mantissa);
-
+
return (is_special_quantity && !has_mantissa)
? ((number < 0.0) ? -1 : 1)
: 0;
@@ -488,23 +488,23 @@ TRIO_ARGS1((number),
* Fallback solution.
*/
int status;
-
+
# if defined(TRIO_PLATFORM_UNIX)
void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN);
# endif
-
+
double infinity = trio_pinf();
-
+
status = ((number == infinity)
? 1
: ((number == -infinity) ? -1 : 0));
-
+
# if defined(TRIO_PLATFORM_UNIX)
signal(SIGFPE, signal_handler);
# endif
-
+
return status;
-
+
#endif
}
@@ -526,7 +526,7 @@ TRIO_ARGS1((number),
* C99 defines isfinite() as a macro.
*/
return isfinite(number);
-
+
#elif defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB)
/*
* Microsoft Visual C++ and Borland C++ Builder use _finite().
@@ -547,7 +547,7 @@ TRIO_ARGS1((number),
* Fallback solution.
*/
return ((trio_isinf(number) == 0) && (trio_isnan(number) == 0));
-
+
#endif
}
@@ -596,7 +596,7 @@ TRIO_ARGS2((number, is_negative),
# define TRIO_NEGATIVE_ZERO FP_NEG_ZERO
# define TRIO_POSITIVE_NORMAL FP_POS_NORM
# define TRIO_NEGATIVE_NORMAL FP_NEG_NORM
-
+
# elif defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB)
/*
* Microsoft Visual C++ and Borland C++ Builder have an _fpclass()
@@ -613,7 +613,7 @@ TRIO_ARGS2((number, is_negative),
# define TRIO_NEGATIVE_ZERO _FPCLASS_NZ
# define TRIO_POSITIVE_NORMAL _FPCLASS_PN
# define TRIO_NEGATIVE_NORMAL _FPCLASS_NN
-
+
# elif defined(FP_PLUS_NORM)
/*
* HP-UX 9.x and 10.x have an fpclassify() function, that is different
@@ -678,13 +678,13 @@ TRIO_ARGS2((number, is_negative),
*is_negative = (number < 0.0);
return TRIO_FP_NORMAL;
}
-
+
# else
/*
* Fallback solution.
*/
int rc;
-
+
if (number == 0.0) {
/*
* In IEEE 754 the sign of zero is ignored in comparisons, so we
@@ -716,7 +716,7 @@ TRIO_ARGS2((number, is_negative),
}
*is_negative = (number < 0.0);
return TRIO_FP_NORMAL;
-
+
# endif
#endif
}
@@ -734,7 +734,7 @@ TRIO_ARGS1((number),
double number)
{
int is_negative;
-
+
(void)trio_fpclassify_and_signbit(number, &is_negative);
return is_negative;
}
@@ -753,7 +753,7 @@ TRIO_ARGS1((number),
double number)
{
int dummy;
-
+
return trio_fpclassify_and_signbit(number, &dummy);
}
@@ -828,7 +828,7 @@ int main(TRIO_NOARGS)
print_class("NNorm", -1.0);
print_class("PSub", 1.01e-307 - 1.00e-307);
print_class("NSub", 1.00e-307 - 1.01e-307);
-
+
printf("NaN : %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d)\n",
my_nan,
((unsigned char *)&my_nan)[0],
@@ -862,11 +862,11 @@ int main(TRIO_NOARGS)
((unsigned char *)&my_ninf)[6],
((unsigned char *)&my_ninf)[7],
trio_isnan(my_ninf), trio_isinf(my_ninf));
-
+
# if defined(TRIO_PLATFORM_UNIX)
signal_handler = signal(SIGFPE, SIG_IGN);
# endif
-
+
my_pinf = DBL_MAX + DBL_MAX;
my_ninf = -my_pinf;
my_nan = my_pinf / my_pinf;
@@ -874,7 +874,7 @@ int main(TRIO_NOARGS)
# if defined(TRIO_PLATFORM_UNIX)
signal(SIGFPE, signal_handler);
# endif
-
+
printf("NaN : %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d)\n",
my_nan,
((unsigned char *)&my_nan)[0],
@@ -908,7 +908,7 @@ int main(TRIO_NOARGS)
((unsigned char *)&my_ninf)[6],
((unsigned char *)&my_ninf)[7],
trio_isnan(my_ninf), trio_isinf(my_ninf));
-
+
return 0;
}
#endif
diff --git a/trionan.h b/trionan.h
index c5de32b..be6e718 100644
--- a/trionan.h
+++ b/trionan.h
@@ -46,7 +46,7 @@ TRIO_PUBLIC double trio_pinf TRIO_PROTO((void));
* Return negative infinity.
*/
TRIO_PUBLIC double trio_ninf TRIO_PROTO((void));
-
+
/*
* Return negative zero.
*/
diff --git a/triostr.c b/triostr.c
index 30d13ac..123bbeb 100644
--- a/triostr.c
+++ b/triostr.c
@@ -52,7 +52,9 @@
# define BOOLEAN_T int
#endif
-#if defined(TRIO_COMPILER_SUPPORTS_C99)
+#ifdef __VMS
+# define USE_STRTOD
+#elif defined(TRIO_COMPILER_SUPPORTS_C99)
# define USE_STRTOD
# define USE_STRTOF
#elif defined(TRIO_COMPILER_MSVC)
@@ -78,6 +80,10 @@
# else
# define strcasecmp(x,y) strcmpi(x,y)
# endif
+#elif defined(TRIO_PLATFORM_OS400)
+# define USE_STRCASECMP
+# define USE_STRNCASECMP
+# include <strings.h>
#endif
#if !(defined(TRIO_PLATFORM_SUNOS))
@@ -165,11 +171,11 @@ TRIO_ARGS1((string),
#if !defined(TRIO_MINIMAL)
/**
Append @p source at the end of @p target.
-
+
@param target Target string.
@param source Source string.
@return Boolean value indicating success or failure.
-
+
@pre @p target must point to a memory chunk with sufficient room to
contain the @p target string and @p source string.
@pre No boundary checking is performed, so insufficient memory will
@@ -184,7 +190,7 @@ TRIO_ARGS2((target, source),
{
assert(target);
assert(source);
-
+
return (strcat(target, source) != NULL);
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -192,12 +198,12 @@ TRIO_ARGS2((target, source),
#if !defined(TRIO_MINIMAL)
/**
Append at most @p max characters from @p source to @p target.
-
+
@param target Target string.
@param max Maximum number of characters to append.
@param source Source string.
@return Boolean value indicating success or failure.
-
+
@pre @p target must point to a memory chuck with sufficient room to
contain the @p target string and the @p source string (at most @p max
characters).
@@ -213,12 +219,12 @@ TRIO_ARGS3((target, max, source),
TRIO_CONST char *source)
{
size_t length;
-
+
assert(target);
assert(source);
length = trio_length(target);
-
+
if (max > length)
{
strncat(target, source, max - length - 1);
@@ -244,7 +250,7 @@ TRIO_ARGS2((string, substring),
{
assert(string);
assert(substring);
-
+
return (0 != strstr(string, substring));
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -253,11 +259,11 @@ TRIO_ARGS2((string, substring),
#if !defined(TRIO_MINIMAL)
/**
Copy @p source to @p target.
-
+
@param target Target string.
@param source Source string.
@return Boolean value indicating success or failure.
-
+
@pre @p target must point to a memory chunk with sufficient room to
contain the @p source string.
@pre No boundary checking is performed, so insufficient memory will
@@ -272,7 +278,7 @@ TRIO_ARGS2((target, source),
{
assert(target);
assert(source);
-
+
(void)strcpy(target, source);
return TRUE;
}
@@ -281,12 +287,12 @@ TRIO_ARGS2((target, source),
/**
Copy at most @p max characters from @p source to @p target.
-
+
@param target Target string.
@param max Maximum number of characters to append.
@param source Source string.
@return Boolean value indicating success or failure.
-
+
@pre @p target must point to a memory chunk with sufficient room to
contain the @p source string (at most @p max characters).
@pre No boundary checking is performed, so insufficient memory will
@@ -336,10 +342,10 @@ TRIO_ARGS2((source, size),
/**
Duplicate @p source.
-
+
@param source Source string.
@return A copy of the @p source string.
-
+
@post @p target will be zero terminated.
*/
TRIO_STRING_PUBLIC char *
@@ -354,11 +360,11 @@ TRIO_ARGS1((source),
#if !defined(TRIO_MINIMAL)
/**
Duplicate at most @p max characters of @p source.
-
+
@param source Source string.
@param max Maximum number of characters to duplicate.
@return A copy of the @p source string.
-
+
@post @p target will be zero terminated.
*/
TRIO_STRING_PUBLIC char *
@@ -383,11 +389,11 @@ trio_duplicate_max TRIO_ARGS2((source, max),
/**
Compare if two strings are equal.
-
+
@param first First string.
@param second Second string.
@return Boolean indicating whether the two strings are equal or not.
-
+
Case-insensitive comparison.
*/
TRIO_STRING_PUBLIC int
@@ -422,11 +428,11 @@ TRIO_ARGS2((first, second),
/**
Compare if two strings are equal.
-
+
@param first First string.
@param second Second string.
@return Boolean indicating whether the two strings are equal or not.
-
+
Case-sensitive comparison.
*/
TRIO_STRING_PUBLIC int
@@ -449,12 +455,12 @@ TRIO_ARGS2((first, second),
#if !defined(TRIO_MINIMAL)
/**
Compare if two strings up until the first @p max characters are equal.
-
+
@param first First string.
@param max Maximum number of characters to compare.
@param second Second string.
@return Boolean indicating whether the two strings are equal or not.
-
+
Case-sensitive comparison.
*/
TRIO_STRING_PUBLIC int
@@ -478,7 +484,7 @@ TRIO_ARGS3((first, max, second),
/**
Compare if two strings are equal.
-
+
@param first First string.
@param second Second string.
@return Boolean indicating whether the two strings are equal or not.
@@ -504,12 +510,12 @@ TRIO_ARGS2((first, second),
/**
Compare if two strings up until the first @p max characters are equal.
-
+
@param first First string.
@param max Maximum number of characters to compare.
@param second Second string.
@return Boolean indicating whether the two strings are equal or not.
-
+
Case-insensitive comparison.
*/
TRIO_STRING_PUBLIC int
@@ -558,7 +564,7 @@ TRIO_ARGS1((error_number),
int error_number)
{
#if defined(USE_STRERROR)
-
+
return strerror(error_number);
#elif defined(USE_SYS_ERRLIST)
@@ -569,11 +575,11 @@ TRIO_ARGS1((error_number),
return ((error_number < 0) || (error_number >= sys_nerr))
? "unknown"
: sys_errlist[error_number];
-
+
#else
-
+
return "unknown";
-
+
#endif
}
@@ -603,7 +609,7 @@ TRIO_ARGS4((target, max, format, datetime),
assert(format);
assert(datetime);
assert(max > 0);
-
+
return strftime(target, max, format, datetime);
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -630,7 +636,7 @@ TRIO_ARGS2((string, type),
char ch;
assert(string);
-
+
switch (type)
{
case TRIO_HASH_PLAIN:
@@ -719,7 +725,7 @@ TRIO_ARGS1((target),
@return Boolean value indicating success or failure.
Case-insensitive comparison.
-
+
The following wildcards can be used
@li @c * Match any number of characters.
@li @c ? Match a single character.
@@ -732,7 +738,7 @@ TRIO_ARGS2((string, pattern),
{
assert(string);
assert(pattern);
-
+
for (; ('*' != *pattern); ++pattern, ++string)
{
if (NIL == *string)
@@ -757,7 +763,7 @@ TRIO_ARGS2((string, pattern),
}
}
while (*string++);
-
+
return FALSE;
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -772,7 +778,7 @@ TRIO_ARGS2((string, pattern),
@return Boolean value indicating success or failure.
Case-sensitive comparison.
-
+
The following wildcards can be used
@li @c * Match any number of characters.
@li @c ? Match a single character.
@@ -785,7 +791,7 @@ TRIO_ARGS2((string, pattern),
{
assert(string);
assert(pattern);
-
+
for (; ('*' != *pattern); ++pattern, ++string)
{
if (NIL == *string)
@@ -810,7 +816,7 @@ TRIO_ARGS2((string, pattern),
}
}
while (*string++);
-
+
return FALSE;
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -837,7 +843,7 @@ TRIO_ARGS3((target, source, Function),
assert(target);
assert(source);
assert(Function);
-
+
while (*source != NIL)
{
*target++ = Function(*source++);
@@ -894,7 +900,7 @@ TRIO_ARGS3((string, max, substring),
assert(string);
assert(substring);
-
+
size = trio_length(substring);
if (size <= max)
{
@@ -929,7 +935,7 @@ TRIO_ARGS2((string, delimiters),
TRIO_CONST char *delimiters)
{
assert(delimiters);
-
+
return strtok(string, delimiters);
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -1064,7 +1070,7 @@ TRIO_ARGS2((source, endp),
}
}
}
-
+
value = integer + fraction;
if (exponent != 0)
{
@@ -1146,7 +1152,7 @@ TRIO_ARGS3((string, endp, base),
{
assert(string);
assert((base >= 2) && (base <= 36));
-
+
return strtol(string, endp, base);
}
@@ -1164,16 +1170,16 @@ TRIO_ARGS1((source),
int source)
{
#if defined(USE_TOLOWER)
-
+
return tolower(source);
-
+
#else
/* Does not handle locales or non-contiguous alphabetic characters */
return ((source >= (int)'A') && (source <= (int)'Z'))
? source - 'A' + 'a'
: source;
-
+
#endif
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -1195,7 +1201,7 @@ TRIO_ARGS3((string, endp, base),
{
assert(string);
assert((base >= 2) && (base <= 36));
-
+
return strtoul(string, endp, base);
}
#endif /* !defined(TRIO_MINIMAL) */
@@ -1213,16 +1219,16 @@ TRIO_ARGS1((source),
int source)
{
#if defined(USE_TOUPPER)
-
+
return toupper(source);
-
+
#else
/* Does not handle locales or non-contiguous alphabetic characters */
return ((source >= (int)'a') && (source <= (int)'z'))
? source - 'a' + 'A'
: source;
-
+
#endif
}
@@ -1266,7 +1272,7 @@ TRIO_STRING_PRIVATE trio_string_t *
TrioStringAlloc(TRIO_NOARGS)
{
trio_string_t *self;
-
+
self = (trio_string_t *)TRIO_MALLOC(sizeof(trio_string_t));
if (self)
{
@@ -1297,7 +1303,7 @@ TRIO_ARGS2((self, delta),
new_size = (delta == 0)
? ( (self->allocated == 0) ? 1 : self->allocated * 2 )
: self->allocated + delta;
-
+
new_content = (char *)TRIO_REALLOC(self->content, new_size);
if (new_content)
{
@@ -1334,7 +1340,7 @@ TRIO_ARGS2((self, length),
#if !defined(TRIO_MINIMAL)
/**
Create a new dynamic string.
-
+
@param initial_size Initial size of the buffer.
@return Newly allocated dynamic string, or NULL if memory allocation failed.
*/
@@ -1367,7 +1373,7 @@ TRIO_ARGS1((initial_size),
/**
Deallocate the dynamic string and its contents.
-
+
@param self Dynamic string
*/
TRIO_STRING_PUBLIC void
@@ -1376,7 +1382,7 @@ TRIO_ARGS1((self),
trio_string_t *self)
{
assert(self);
-
+
if (self)
{
trio_destroy(self->content);
@@ -1388,11 +1394,11 @@ TRIO_ARGS1((self),
#if !defined(TRIO_MINIMAL)
/**
Get a pointer to the content.
-
+
@param self Dynamic string.
@param offset Offset into content.
@return Pointer to the content.
-
+
@p Offset can be zero, positive, or negative. If @p offset is zero,
then the start of the content will be returned. If @p offset is positive,
then a pointer to @p offset number of characters from the beginning of the
@@ -1407,7 +1413,7 @@ TRIO_ARGS2((self, offset),
int offset)
{
char *result = NULL;
-
+
assert(self);
if (self->content != NULL)
@@ -1440,10 +1446,10 @@ TRIO_ARGS2((self, offset),
/**
Extract the content.
-
+
@param self Dynamic String
@return Content of dynamic string.
-
+
The content is removed from the dynamic string. This enables destruction
of the dynamic string without deallocation of the content.
*/
@@ -1453,7 +1459,7 @@ TRIO_ARGS1((self),
trio_string_t *self)
{
char *result;
-
+
assert(self);
result = self->content;
@@ -1467,13 +1473,13 @@ TRIO_ARGS1((self),
#if !defined(TRIO_MINIMAL)
/**
Set the content of the dynamic string.
-
+
@param self Dynamic String
@param buffer The new content.
-
+
Sets the content of the dynamic string to a copy @p buffer.
An existing content will be deallocated first, if necessary.
-
+
@remark
This function will make a copy of @p buffer.
You are responsible for deallocating @p buffer yourself.
@@ -1521,7 +1527,7 @@ TRIO_ARGS1((self),
#if !defined(TRIO_MINIMAL)
/**
Append the second string to the first.
-
+
@param self Dynamic string to be modified.
@param other Dynamic string to copy from.
@return Boolean value indicating success or failure.
@@ -1533,7 +1539,7 @@ TRIO_ARGS2((self, other),
trio_string_t *other)
{
size_t length;
-
+
assert(self);
assert(other);
@@ -1543,7 +1549,7 @@ TRIO_ARGS2((self, other),
trio_copy(&self->content[self->length], other->content);
self->length = length;
return TRUE;
-
+
error:
return FALSE;
}
@@ -1561,7 +1567,7 @@ TRIO_ARGS2((self, other),
TRIO_CONST char *other)
{
size_t length;
-
+
assert(self);
assert(other);
@@ -1571,7 +1577,7 @@ TRIO_ARGS2((self, other),
trio_copy(&self->content[self->length], other);
self->length = length;
return TRUE;
-
+
error:
return FALSE;
}
@@ -1597,7 +1603,7 @@ TRIO_ARGS2((self, character),
self->content[self->length] = character;
self->length++;
return TRUE;
-
+
error:
return FALSE;
}
@@ -1606,7 +1612,7 @@ TRIO_ARGS2((self, character),
#if !defined(TRIO_MINIMAL)
/**
Search for the first occurrence of second parameter in the first.
-
+
@param self Dynamic string to be modified.
@param other Dynamic string to copy from.
@return Boolean value indicating success or failure.
@@ -1691,7 +1697,7 @@ TRIO_ARGS1((other),
trio_string_t *other)
{
trio_string_t *self;
-
+
assert(other);
self = TrioStringAlloc();
@@ -1722,7 +1728,7 @@ TRIO_ARGS1((other),
TRIO_CONST char *other)
{
trio_string_t *self;
-
+
assert(other);
self = TrioStringAlloc();
diff --git a/uri.c b/uri.c
index 7e2f525..ff47abb 100644
--- a/uri.c
+++ b/uri.c
@@ -1,12 +1,10 @@
/**
- * uri.c: set of generic URI related routines
+ * uri.c: set of generic URI related routines
*
* Reference: RFCs 3986, 2732 and 2373
*
* See Copyright for the status of this software.
*
- * TODO: that module behaves really badly on OOM situation
- *
* daniel@veillard.com
*/
@@ -20,6 +18,37 @@
#include <libxml/globals.h>
#include <libxml/xmlerror.h>
+/**
+ * MAX_URI_LENGTH:
+ *
+ * The definition of the URI regexp in the above RFC has no size limit
+ * In practice they are usually relativey short except for the
+ * data URI scheme as defined in RFC 2397. Even for data URI the usual
+ * maximum size before hitting random practical limits is around 64 KB
+ * and 4KB is usually a maximum admitted limit for proper operations.
+ * The value below is more a security limit than anything else and
+ * really should never be hit by 'normal' operations
+ * Set to 1 MByte in 2012, this is only enforced on output
+ */
+#define MAX_URI_LENGTH 1024 * 1024
+
+static void
+xmlURIErrMemory(const char *extra)
+{
+ if (extra)
+ __xmlRaiseError(NULL, NULL, NULL,
+ NULL, NULL, XML_FROM_URI,
+ XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0,
+ extra, NULL, NULL, 0, 0,
+ "Memory allocation failed : %s\n", extra);
+ else
+ __xmlRaiseError(NULL, NULL, NULL,
+ NULL, NULL, XML_FROM_URI,
+ XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0,
+ NULL, NULL, NULL, 0, 0,
+ "Memory allocation failed\n");
+}
+
static void xmlCleanURI(xmlURIPtr uri);
/*
@@ -730,6 +759,8 @@ xmlParse3986HierPart(xmlURIPtr uri, const char **str)
cur += 2;
ret = xmlParse3986Authority(uri, &cur);
if (ret != 0) return(ret);
+ if (uri->server == NULL)
+ uri->port = -1;
ret = xmlParse3986PathAbEmpty(uri, &cur);
if (ret != 0) return(ret);
*str = cur;
@@ -982,8 +1013,7 @@ xmlCreateURI(void) {
ret = (xmlURIPtr) xmlMalloc(sizeof(xmlURI));
if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlCreateURI: out of memory\n");
+ xmlURIErrMemory("creating URI structure\n");
return(NULL);
}
memset(ret, 0, sizeof(xmlURI));
@@ -991,6 +1021,31 @@ xmlCreateURI(void) {
}
/**
+ * xmlSaveUriRealloc:
+ *
+ * Function to handle properly a reallocation when saving an URI
+ * Also imposes some limit on the length of an URI string output
+ */
+static xmlChar *
+xmlSaveUriRealloc(xmlChar *ret, int *max) {
+ xmlChar *temp;
+ int tmp;
+
+ if (*max > MAX_URI_LENGTH) {
+ xmlURIErrMemory("reaching arbitrary MAX_URI_LENGTH limit\n");
+ return(NULL);
+ }
+ tmp = *max * 2;
+ temp = (xmlChar *) xmlRealloc(ret, (tmp + 1));
+ if (temp == NULL) {
+ xmlURIErrMemory("saving URI\n");
+ return(NULL);
+ }
+ *max = tmp;
+ return(temp);
+}
+
+/**
* xmlSaveUri:
* @uri: pointer to an xmlURI
*
@@ -1012,8 +1067,7 @@ xmlSaveUri(xmlURIPtr uri) {
max = 80;
ret = (xmlChar *) xmlMallocAtomic((max + 1) * sizeof(xmlChar));
if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
+ xmlURIErrMemory("saving URI\n");
return(NULL);
}
len = 0;
@@ -1022,28 +1076,16 @@ xmlSaveUri(xmlURIPtr uri) {
p = uri->scheme;
while (*p != 0) {
if (len >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
ret = temp;
}
ret[len++] = *p++;
}
if (len >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = ':';
}
@@ -1051,15 +1093,9 @@ xmlSaveUri(xmlURIPtr uri) {
p = uri->opaque;
while (*p != 0) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p)))
ret[len++] = *p++;
@@ -1072,17 +1108,11 @@ xmlSaveUri(xmlURIPtr uri) {
}
}
} else {
- if (uri->server != NULL) {
+ if ((uri->server != NULL) || (uri->port == -1)) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = '/';
ret[len++] = '/';
@@ -1090,16 +1120,9 @@ xmlSaveUri(xmlURIPtr uri) {
p = uri->user;
while (*p != 0) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
if ((IS_UNRESERVED(*(p))) ||
((*(p) == ';')) || ((*(p) == ':')) ||
@@ -1116,78 +1139,45 @@ xmlSaveUri(xmlURIPtr uri) {
}
}
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = '@';
}
- p = uri->server;
- while (*p != 0) {
- if (len >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
+ if (uri->server != NULL) {
+ p = uri->server;
+ while (*p != 0) {
+ if (len >= max) {
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
- ret = temp;
+ ret[len++] = *p++;
}
- ret[len++] = *p++;
- }
- if (uri->port > 0) {
- if (len + 10 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
+ if (uri->port > 0) {
+ if (len + 10 >= max) {
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
- ret = temp;
+ len += snprintf((char *) &ret[len], max - len, ":%d", uri->port);
}
- len += snprintf((char *) &ret[len], max - len, ":%d", uri->port);
}
} else if (uri->authority != NULL) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = '/';
ret[len++] = '/';
p = uri->authority;
while (*p != 0) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
if ((IS_UNRESERVED(*(p))) ||
((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) ||
@@ -1204,19 +1194,10 @@ xmlSaveUri(xmlURIPtr uri) {
}
} else if (uri->scheme != NULL) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
- ret[len++] = '/';
- ret[len++] = '/';
}
if (uri->path != NULL) {
p = uri->path;
@@ -1231,14 +1212,9 @@ xmlSaveUri(xmlURIPtr uri) {
(p[2] == ':') &&
(xmlStrEqual(BAD_CAST uri->scheme, BAD_CAST "file"))) {
if (len + 3 >= max) {
- max *= 2;
- ret = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- return(NULL);
- }
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = *p++;
ret[len++] = *p++;
@@ -1246,16 +1222,9 @@ xmlSaveUri(xmlURIPtr uri) {
}
while (*p != 0) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) ||
((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) ||
@@ -1273,63 +1242,35 @@ xmlSaveUri(xmlURIPtr uri) {
}
if (uri->query_raw != NULL) {
if (len + 1 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = '?';
p = uri->query_raw;
while (*p != 0) {
if (len + 1 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = *p++;
}
} else if (uri->query != NULL) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = '?';
p = uri->query;
while (*p != 0) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
- if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p))))
+ if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p))))
ret[len++] = *p++;
else {
int val = *(unsigned char *)p++;
@@ -1343,33 +1284,19 @@ xmlSaveUri(xmlURIPtr uri) {
}
if (uri->fragment != NULL) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len++] = '#';
p = uri->fragment;
while (*p != 0) {
if (len + 3 >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret,
- (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
- if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p))))
+ if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p))))
ret[len++] = *p++;
else {
int val = *(unsigned char *)p++;
@@ -1381,18 +1308,16 @@ xmlSaveUri(xmlURIPtr uri) {
}
}
if (len >= max) {
- max *= 2;
- temp = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));
- if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlSaveUri: out of memory\n");
- xmlFree(ret);
- return(NULL);
- }
- ret = temp;
+ temp = xmlSaveUriRealloc(ret, &max);
+ if (temp == NULL) goto mem_error;
+ ret = temp;
}
ret[len] = 0;
return(ret);
+
+mem_error:
+ xmlFree(ret);
+ return(NULL);
}
/**
@@ -1695,8 +1620,7 @@ xmlURIUnescapeString(const char *str, int len, char *target) {
if (target == NULL) {
ret = (char *) xmlMallocAtomic(len + 1);
if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlURIUnescapeString: out of memory\n");
+ xmlURIErrMemory("unescaping URI value\n");
return(NULL);
}
} else
@@ -1706,14 +1630,14 @@ xmlURIUnescapeString(const char *str, int len, char *target) {
while(len > 0) {
if ((len > 2) && (*in == '%') && (is_hex(in[1])) && (is_hex(in[2]))) {
in++;
- if ((*in >= '0') && (*in <= '9'))
+ if ((*in >= '0') && (*in <= '9'))
*out = (*in - '0');
else if ((*in >= 'a') && (*in <= 'f'))
*out = (*in - 'a') + 10;
else if ((*in >= 'A') && (*in <= 'F'))
*out = (*in - 'A') + 10;
in++;
- if ((*in >= '0') && (*in <= '9'))
+ if ((*in >= '0') && (*in <= '9'))
*out = *out * 16 + (*in - '0');
else if ((*in >= 'a') && (*in <= 'f'))
*out = *out * 16 + (*in - 'a') + 10;
@@ -1746,8 +1670,7 @@ xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) {
xmlChar *ret, ch;
xmlChar *temp;
const xmlChar *in;
-
- unsigned int len, out;
+ int len, out;
if (str == NULL)
return(NULL);
@@ -1759,19 +1682,16 @@ xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) {
len += 20;
ret = (xmlChar *) xmlMallocAtomic(len);
if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlURIEscapeStr: out of memory\n");
+ xmlURIErrMemory("escaping URI value\n");
return(NULL);
}
in = (const xmlChar *) str;
out = 0;
while(*in != 0) {
if (len - out <= 3) {
- len += 20;
- temp = (xmlChar *) xmlRealloc(ret, len);
+ temp = xmlSaveUriRealloc(ret, &len);
if (temp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlURIEscapeStr: out of memory\n");
+ xmlURIErrMemory("escaping URI value\n");
xmlFree(ret);
return(NULL);
}
@@ -1826,10 +1746,9 @@ xmlURIEscape(const xmlChar * str)
int ret2;
#define NULLCHK(p) if(!p) { \
- xmlGenericError(xmlGenericErrorContext, \
- "xmlURIEscape: out of memory\n"); \
- xmlFreeURI(uri); \
- return NULL; } \
+ xmlURIErrMemory("escaping URI value\n"); \
+ xmlFreeURI(uri); \
+ return NULL; } \
if (str == NULL)
return (NULL);
@@ -1872,7 +1791,7 @@ xmlURIEscape(const xmlChar * str)
if (uri->user) {
segment = xmlURIEscapeStr(BAD_CAST uri->user, BAD_CAST ";:&=+$,");
NULLCHK(segment)
- ret = xmlStrcat(ret,BAD_CAST "//");
+ ret = xmlStrcat(ret,BAD_CAST "//");
ret = xmlStrcat(ret, segment);
ret = xmlStrcat(ret, BAD_CAST "@");
xmlFree(segment);
@@ -1950,7 +1869,7 @@ xmlURIEscape(const xmlChar * str)
*
* Computes he final URI of the reference done by checking that
* the given URI is valid, and building the final URI using the
- * base URI. This is processed according to section 5.2 of the
+ * base URI. This is processed according to section 5.2 of the
* RFC 2396
*
* 5.2. Resolving Relative References to Absolute Form
@@ -1974,7 +1893,7 @@ xmlBuildURI(const xmlChar *URI, const xmlChar *base) {
* as a reference to "." rather than as a synonym for the current
* URI. Should we do that here?
*/
- if (URI == NULL)
+ if (URI == NULL)
ret = -1;
else {
if (*URI) {
@@ -2045,7 +1964,7 @@ xmlBuildURI(const xmlChar *URI, const xmlChar *base) {
res->server = xmlMemStrdup(bas->server);
if (bas->user != NULL)
res->user = xmlMemStrdup(bas->user);
- res->port = bas->port;
+ res->port = bas->port;
}
if (bas->path != NULL)
res->path = xmlMemStrdup(bas->path);
@@ -2074,7 +1993,7 @@ xmlBuildURI(const xmlChar *URI, const xmlChar *base) {
}
if (bas->scheme != NULL)
res->scheme = xmlMemStrdup(bas->scheme);
-
+
if (ref->query_raw != NULL)
res->query_raw = xmlMemStrdup(ref->query_raw);
else if (ref->query != NULL)
@@ -2096,7 +2015,7 @@ xmlBuildURI(const xmlChar *URI, const xmlChar *base) {
res->server = xmlMemStrdup(ref->server);
if (ref->user != NULL)
res->user = xmlMemStrdup(ref->user);
- res->port = ref->port;
+ res->port = ref->port;
}
if (ref->path != NULL)
res->path = xmlMemStrdup(ref->path);
@@ -2108,7 +2027,7 @@ xmlBuildURI(const xmlChar *URI, const xmlChar *base) {
res->server = xmlMemStrdup(bas->server);
if (bas->user != NULL)
res->user = xmlMemStrdup(bas->user);
- res->port = bas->port;
+ res->port = bas->port;
}
/*
@@ -2136,8 +2055,7 @@ xmlBuildURI(const xmlChar *URI, const xmlChar *base) {
len += strlen(bas->path);
res->path = (char *) xmlMallocAtomic(len);
if (res->path == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlBuildURI: out of memory\n");
+ xmlURIErrMemory("resolving URI against base\n");
goto done;
}
res->path[0] = 0;
@@ -2383,7 +2301,7 @@ xmlBuildRelativeURI (const xmlChar * URI, const xmlChar * base)
}
len = xmlStrlen (uptr) + 1;
}
-
+
if (nbslash == 0) {
if (uptr != NULL)
/* exception characters from xmlSaveUri */
@@ -2398,8 +2316,7 @@ xmlBuildRelativeURI (const xmlChar * URI, const xmlChar * base)
*/
val = (xmlChar *) xmlMalloc (len + 3 * nbslash);
if (val == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlBuildRelativeURI: out of memory\n");
+ xmlURIErrMemory("building relative URI\n");
goto done;
}
vptr = val;
@@ -2451,14 +2368,14 @@ done:
* xmlCanonicPath:
* @path: the resource locator in a filesystem notation
*
- * Constructs a canonic path from the specified path.
+ * Constructs a canonic path from the specified path.
*
- * Returns a new canonic path, or a duplicate of the path parameter if the
+ * Returns a new canonic path, or a duplicate of the path parameter if the
* construction fails. The caller is responsible for freeing the memory occupied
- * by the returned string. If there is insufficient memory available, or the
+ * by the returned string. If there is insufficient memory available, or the
* argument is NULL, the function returns NULL.
*/
-#define IS_WINDOWS_PATH(p) \
+#define IS_WINDOWS_PATH(p) \
((p != NULL) && \
(((p[0] >= 'a') && (p[0] <= 'z')) || \
((p[0] >= 'A') && (p[0] <= 'Z'))) && \
@@ -2470,7 +2387,7 @@ xmlCanonicPath(const xmlChar *path)
* For Windows implementations, additional work needs to be done to
* replace backslashes in pathnames with "forward slashes"
*/
-#if defined(_WIN32) && !defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__)
int len = 0;
int i = 0;
xmlChar *p = NULL;
@@ -2482,7 +2399,20 @@ xmlCanonicPath(const xmlChar *path)
if (path == NULL)
return(NULL);
- /* sanitize filename starting with // so it can be used as URI */
+#if defined(_WIN32)
+ /*
+ * We must not change the backslashes to slashes if the the path
+ * starts with \\?\
+ * Those paths can be up to 32k characters long.
+ * Was added specifically for OpenOffice, those paths can't be converted
+ * to URIs anyway.
+ */
+ if ((path[0] == '\\') && (path[1] == '\\') && (path[2] == '?') &&
+ (path[3] == '\\') )
+ return xmlStrdup((const xmlChar *) path);
+#endif
+
+ /* sanitize filename starting with // so it can be used as URI */
if ((path[0] == '/') && (path[1] == '/') && (path[2] != '/'))
path++;
@@ -2529,7 +2459,7 @@ xmlCanonicPath(const xmlChar *path)
path_processing:
/* For Windows implementations, replace backslashes with 'forward slashes' */
-#if defined(_WIN32) && !defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__)
/*
* Create a URI structure
*/
@@ -2586,7 +2516,7 @@ path_processing:
*
* Constructs an URI expressing the existing path
*
- * Returns a new URI, or a duplicate of the path parameter if the
+ * Returns a new URI, or a duplicate of the path parameter if the
* construction fails. The caller is responsible for freeing the memory
* occupied by the returned string. If there is insufficient memory available,
* or the argument is NULL, the function returns NULL.
@@ -2609,7 +2539,7 @@ xmlPathToURI(const xmlChar *path)
if (cal == NULL)
return(NULL);
#if defined(_WIN32) && !defined(__CYGWIN__)
- /* xmlCanonicPath can return an URI on Windows (is that the intended behaviour?)
+ /* xmlCanonicPath can return an URI on Windows (is that the intended behaviour?)
If 'cal' is a valid URI allready then we are done here, as continuing would make
it invalid. */
if ((uri = xmlParseURI((const char *) cal)) != NULL) {
diff --git a/valid.c b/valid.c
index 5de491d..409aa81 100644
--- a/valid.c
+++ b/valid.c
@@ -31,7 +31,7 @@ static xmlElementPtr xmlGetDtdElementDesc2(xmlDtdPtr dtd, const xmlChar *name,
/* #define DEBUG_VALID_ALGO */
/* #define DEBUG_REGEXP_ALGO */
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -301,7 +301,7 @@ vstateVPush(xmlValidCtxtPtr ctxt, xmlElementPtr elemDecl, xmlNodePtr node) {
if (elemDecl->contModel == NULL)
xmlValidBuildContentModel(ctxt, elemDecl);
if (elemDecl->contModel != NULL) {
- ctxt->vstateTab[ctxt->vstateNr].exec =
+ ctxt->vstateTab[ctxt->vstateNr].exec =
xmlRegNewExecCtxt(elemDecl->contModel, NULL, NULL);
} else {
ctxt->vstateTab[ctxt->vstateNr].exec = NULL;
@@ -623,7 +623,7 @@ xmlValidStateDebug(xmlValidCtxtPtr ctxt) {
#define DEBUG_VALID_STATE(n,c) xmlValidStateDebug(ctxt);
#define DEBUG_VALID_MSG(m) \
xmlGenericError(xmlGenericErrorContext, "%s\n", m);
-
+
#else
#define DEBUG_VALID_STATE(n,c)
#define DEBUG_VALID_MSG(m)
@@ -676,7 +676,7 @@ xmlValidBuildAContentModel(xmlElementContentPtr content,
xmlAutomataStatePtr oldstate = ctxt->state;
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(content->name, content->prefix, fn, 50);
if (fullname == NULL) {
xmlVErrMemory(ctxt, "Building content model");
@@ -701,9 +701,9 @@ xmlValidBuildAContentModel(xmlElementContentPtr content,
break;
case XML_ELEMENT_CONTENT_MULT:
ctxt->state = xmlAutomataNewEpsilon(ctxt->am,
- ctxt->state, NULL);
+ ctxt->state, NULL);
xmlAutomataNewTransition(ctxt->am,
- ctxt->state, ctxt->state, fullname, NULL);
+ ctxt->state, ctxt->state, fullname, NULL);
break;
}
if ((fullname != fn) && (fullname != content->name))
@@ -752,7 +752,7 @@ xmlValidBuildAContentModel(xmlElementContentPtr content,
xmlElementContentOccur ocur;
ocur = content->ocur;
- if ((ocur == XML_ELEMENT_CONTENT_PLUS) ||
+ if ((ocur == XML_ELEMENT_CONTENT_PLUS) ||
(ocur == XML_ELEMENT_CONTENT_MULT)) {
ctxt->state = xmlAutomataNewEpsilon(ctxt->am,
ctxt->state, NULL);
@@ -944,7 +944,7 @@ xmlNewDocElementContent(xmlDocPtr doc, const xmlChar *name,
}
break;
default:
- xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"Internal: ELEMENT content corrupted invalid type\n",
NULL);
return(NULL);
@@ -1001,7 +1001,7 @@ xmlNewElementContent(const xmlChar *name, xmlElementContentType type) {
* @cur: An element content pointer.
*
* Build a copy of an element content description.
- *
+ *
* Returns the new xmlElementContentPtr or NULL in case of error.
*/
xmlElementContentPtr
@@ -1028,7 +1028,7 @@ xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur) {
else
ret->name = xmlStrdup(cur->name);
}
-
+
if (cur->prefix != NULL) {
if (dict)
ret->prefix = xmlDictLookup(dict, cur->prefix, -1);
@@ -1058,7 +1058,7 @@ xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur) {
else
tmp->name = xmlStrdup(cur->name);
}
-
+
if (cur->prefix != NULL) {
if (dict)
tmp->prefix = xmlDictLookup(dict, cur->prefix, -1);
@@ -1082,7 +1082,7 @@ xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur) {
*
* Build a copy of an element content description.
* Deprecated, use xmlCopyDocElementContent instead
- *
+ *
* Returns the new xmlElementContentPtr or NULL in case of error.
*/
xmlElementContentPtr
@@ -1114,7 +1114,7 @@ xmlFreeDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur) {
case XML_ELEMENT_CONTENT_OR:
break;
default:
- xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"Internal: ELEMENT content corrupted invalid type\n",
NULL);
return;
@@ -1200,7 +1200,7 @@ xmlDumpElementContent(xmlBufferPtr buf, xmlElementContentPtr content, int glob)
xmlDumpElementContent(buf, content->c2, 0);
break;
default:
- xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"Internal: ELEMENT content corrupted invalid type\n",
NULL);
}
@@ -1397,7 +1397,7 @@ xmlAddElementDecl(xmlValidCtxtPtr ctxt,
switch (type) {
case XML_ELEMENT_TYPE_EMPTY:
if (content != NULL) {
- xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
"xmlAddElementDecl: content != NULL for EMPTY\n",
NULL);
return(NULL);
@@ -1405,7 +1405,7 @@ xmlAddElementDecl(xmlValidCtxtPtr ctxt,
break;
case XML_ELEMENT_TYPE_ANY:
if (content != NULL) {
- xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
"xmlAddElementDecl: content != NULL for ANY\n",
NULL);
return(NULL);
@@ -1413,7 +1413,7 @@ xmlAddElementDecl(xmlValidCtxtPtr ctxt,
break;
case XML_ELEMENT_TYPE_MIXED:
if (content == NULL) {
- xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
"xmlAddElementDecl: content == NULL for MIXED\n",
NULL);
return(NULL);
@@ -1421,14 +1421,14 @@ xmlAddElementDecl(xmlValidCtxtPtr ctxt,
break;
case XML_ELEMENT_TYPE_ELEMENT:
if (content == NULL) {
- xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
"xmlAddElementDecl: content == NULL for ELEMENT\n",
NULL);
return(NULL);
}
break;
default:
- xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
"Internal: ELEMENT decl corrupted invalid type\n",
NULL);
return(NULL);
@@ -1608,7 +1608,7 @@ xmlFreeElementTable(xmlElementTablePtr table) {
* @elem: An element
*
* Build a copy of an element.
- *
+ *
* Returns the new xmlElementPtr or NULL in case of error.
*/
static xmlElementPtr
@@ -1642,7 +1642,7 @@ xmlCopyElement(xmlElementPtr elem) {
* @table: An element table
*
* Build a copy of an element table.
- *
+ *
* Returns the new xmlElementTablePtr or NULL in case of error.
*/
xmlElementTablePtr
@@ -1707,7 +1707,7 @@ xmlDumpElementDecl(xmlBufferPtr buf, xmlElementPtr elem) {
xmlBufferWriteChar(buf, ">\n");
break;
default:
- xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"Internal: ELEMENT struct corrupted invalid type\n",
NULL);
}
@@ -1798,6 +1798,7 @@ xmlCopyEnumeration(xmlEnumerationPtr cur) {
if (cur == NULL) return(NULL);
ret = xmlCreateEnumeration((xmlChar *) cur->name);
+ if (ret == NULL) return(NULL);
if (cur->next != NULL) ret->next = xmlCopyEnumeration(cur->next);
else ret->next = NULL;
@@ -1818,7 +1819,7 @@ static void
xmlDumpEnumeration(xmlBufferPtr buf, xmlEnumerationPtr cur) {
if ((buf == NULL) || (cur == NULL))
return;
-
+
xmlBufferWriteCHAR(buf, cur->name);
if (cur->next == NULL)
xmlBufferWriteChar(buf, ")");
@@ -1973,13 +1974,13 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt,
case XML_ATTRIBUTE_NOTATION:
break;
default:
- xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
"Internal: ATTRIBUTE struct corrupted invalid type\n",
NULL);
xmlFreeEnumeration(tree);
return(NULL);
}
- if ((defaultValue != NULL) &&
+ if ((defaultValue != NULL) &&
(!xmlValidateAttributeValueInternal(dtd->doc, type, defaultValue))) {
xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_ATTRIBUTE_DEFAULT,
"Attribute %s of %s: invalid default value\n",
@@ -2153,7 +2154,7 @@ xmlFreeAttributeTable(xmlAttributeTablePtr table) {
* @attr: An attribute
*
* Build a copy of an attribute.
- *
+ *
* Returns the new xmlAttributePtr or NULL in case of error.
*/
static xmlAttributePtr
@@ -2186,7 +2187,7 @@ xmlCopyAttribute(xmlAttributePtr attr) {
* @table: An attribute table
*
* Build a copy of an attribute table.
- *
+ *
* Returns the new xmlAttributeTablePtr or NULL in case of error.
*/
xmlAttributeTablePtr
@@ -2251,7 +2252,7 @@ xmlDumpAttributeDecl(xmlBufferPtr buf, xmlAttributePtr attr) {
xmlDumpEnumeration(buf, attr->tree);
break;
default:
- xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"Internal: ATTRIBUTE struct corrupted invalid type\n",
NULL);
}
@@ -2268,7 +2269,7 @@ xmlDumpAttributeDecl(xmlBufferPtr buf, xmlAttributePtr attr) {
xmlBufferWriteChar(buf, " #FIXED");
break;
default:
- xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"Internal: ATTRIBUTE struct corrupted invalid def\n",
NULL);
}
@@ -2398,7 +2399,7 @@ xmlAddNotationDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd,
*/
if (xmlHashAddEntry(table, name, ret)) {
#ifdef LIBXML_VALID_ENABLED
- xmlErrValid(NULL, XML_DTD_NOTATION_REDEFINED,
+ xmlErrValid(NULL, XML_DTD_NOTATION_REDEFINED,
"xmlAddNotationDecl: %s already defined\n",
(const char *) name);
#endif /* LIBXML_VALID_ENABLED */
@@ -2425,7 +2426,7 @@ xmlFreeNotationTable(xmlNotationTablePtr table) {
* @nota: A notation
*
* Build a copy of a notation.
- *
+ *
* Returns the new xmlNotationPtr or NULL in case of error.
*/
static xmlNotationPtr
@@ -2457,7 +2458,7 @@ xmlCopyNotation(xmlNotationPtr nota) {
* @table: A notation table
*
* Build a copy of a notation table.
- *
+ *
* Returns the new xmlNotationTablePtr or NULL in case of error.
*/
xmlNotationTablePtr
@@ -2535,7 +2536,7 @@ xmlDumpNotationTable(xmlBufferPtr buf, xmlNotationTablePtr table) {
* current scope
*/
#define DICT_FREE(str) \
- if ((str) && ((!dict) || \
+ if ((str) && ((!dict) || \
(xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \
xmlFree((char *)(str));
@@ -2573,7 +2574,7 @@ xmlFreeID(xmlIDPtr id) {
*
* Returns NULL if not, otherwise the new xmlIDPtr
*/
-xmlIDPtr
+xmlIDPtr
xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value,
xmlAttrPtr attr) {
xmlIDPtr ret;
@@ -2633,11 +2634,8 @@ xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value,
/*
* The id is already defined in this DTD.
*/
- if ((ctxt != NULL) && (ctxt->error != NULL)) {
- xmlErrValidNode(ctxt, attr->parent, XML_DTD_ID_REDEFINED,
- "ID %s already defined\n",
- value, NULL, NULL);
- }
+ xmlErrValidNode(ctxt, attr->parent, XML_DTD_ID_REDEFINED,
+ "ID %s already defined\n", value, NULL, NULL);
#endif /* LIBXML_VALID_ENABLED */
xmlFreeID(ret);
return(NULL);
@@ -2687,7 +2685,7 @@ xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
((xmlStrEqual(BAD_CAST "name", attr->name)) &&
((elem == NULL) || (xmlStrEqual(elem->name, BAD_CAST "a")))))
return(1);
- return(0);
+ return(0);
} else if (elem == NULL) {
return(0);
} else {
@@ -2740,23 +2738,24 @@ xmlRemoveID(xmlDocPtr doc, xmlAttrPtr attr) {
if (doc == NULL) return(-1);
if (attr == NULL) return(-1);
+
table = (xmlIDTablePtr) doc->ids;
- if (table == NULL)
+ if (table == NULL)
return(-1);
- if (attr == NULL)
- return(-1);
ID = xmlNodeListGetString(doc, attr->children, 1);
if (ID == NULL)
- return(-1);
+ return(-1);
+
id = xmlHashLookup(table, ID);
if (id == NULL || id->attr != attr) {
- xmlFree(ID);
- return(-1);
+ xmlFree(ID);
+ return(-1);
}
+
xmlHashRemoveEntry(table, ID, (xmlHashDeallocator) xmlFreeID);
xmlFree(ID);
- attr->atype = 0;
+ attr->atype = 0;
return(0);
}
@@ -2769,7 +2768,7 @@ xmlRemoveID(xmlDocPtr doc, xmlAttrPtr attr) {
*
* Returns NULL if not found, otherwise the xmlAttrPtr defining the ID
*/
-xmlAttrPtr
+xmlAttrPtr
xmlGetID(xmlDocPtr doc, const xmlChar *ID) {
xmlIDTablePtr table;
xmlIDPtr id;
@@ -2783,7 +2782,7 @@ xmlGetID(xmlDocPtr doc, const xmlChar *ID) {
}
table = (xmlIDTablePtr) doc->ids;
- if (table == NULL)
+ if (table == NULL)
return(NULL);
id = xmlHashLookup(table, ID);
@@ -2804,7 +2803,7 @@ xmlGetID(xmlDocPtr doc, const xmlChar *ID) {
* Refs *
* *
************************************************************************/
-typedef struct xmlRemoveMemo_t
+typedef struct xmlRemoveMemo_t
{
xmlListPtr l;
xmlAttrPtr ap;
@@ -2812,7 +2811,7 @@ typedef struct xmlRemoveMemo_t
typedef xmlRemoveMemo *xmlRemoveMemoPtr;
-typedef struct xmlValidateMemo_t
+typedef struct xmlValidateMemo_t
{
xmlValidCtxtPtr ctxt;
const xmlChar *name;
@@ -2895,7 +2894,7 @@ xmlDummyCompare(const void *data0 ATTRIBUTE_UNUSED,
*
* Returns NULL if not, otherwise the new xmlRefPtr
*/
-xmlRefPtr
+xmlRefPtr
xmlAddRef(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value,
xmlAttrPtr attr) {
xmlRefPtr ret;
@@ -3023,7 +3022,7 @@ xmlIsRef(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
return(0);
} else if (doc->type == XML_HTML_DOCUMENT_NODE) {
/* TODO @@@ */
- return(0);
+ return(0);
} else {
xmlAttributePtr attrDecl;
@@ -3059,21 +3058,21 @@ xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr attr) {
if (doc == NULL) return(-1);
if (attr == NULL) return(-1);
+
table = (xmlRefTablePtr) doc->refs;
- if (table == NULL)
+ if (table == NULL)
return(-1);
- if (attr == NULL)
- return(-1);
ID = xmlNodeListGetString(doc, attr->children, 1);
if (ID == NULL)
return(-1);
- ref_list = xmlHashLookup(table, ID);
+ ref_list = xmlHashLookup(table, ID);
if(ref_list == NULL) {
xmlFree(ID);
return (-1);
}
+
/* At this point, ref_list refers to a list of references which
* have the same key as the supplied attr. Our list of references
* is ordered by reference address and we don't have that information
@@ -3086,7 +3085,7 @@ xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr attr) {
*/
target.l = ref_list;
target.ap = attr;
-
+
/* Remove the supplied attr from our list */
xmlListWalk(ref_list, xmlWalkRemoveRef, &target);
@@ -3103,11 +3102,11 @@ xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr attr) {
* @doc: pointer to the document
* @ID: the ID value
*
- * Find the set of references for the supplied ID.
+ * Find the set of references for the supplied ID.
*
* Returns NULL if not found, otherwise node set for the ID.
*/
-xmlListPtr
+xmlListPtr
xmlGetRefs(xmlDocPtr doc, const xmlChar *ID) {
xmlRefTablePtr table;
@@ -3120,7 +3119,7 @@ xmlGetRefs(xmlDocPtr doc, const xmlChar *ID) {
}
table = (xmlRefTablePtr) doc->refs;
- if (table == NULL)
+ if (table == NULL)
return(NULL);
return (xmlHashLookup(table, ID));
@@ -3185,7 +3184,7 @@ xmlGetDtdElementDesc2(xmlDtdPtr dtd, const xmlChar *name, int create) {
if (dtd->doc != NULL)
dict = dtd->doc->dict;
- if (!create)
+ if (!create)
return(NULL);
/*
* Create the Element table if needed.
@@ -3798,7 +3797,7 @@ xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type,
*
* [ VC: Name Token ]
* Values of type NMTOKEN must match the Nmtoken production; values
- * of type NMTOKENS must match Nmtokens.
+ * of type NMTOKENS must match Nmtokens.
*
* returns 1 if valid or 0 otherwise
*/
@@ -3857,7 +3856,7 @@ xmlValidateAttributeValue2(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
if ((ent == NULL) && (doc->standalone == 1)) {
doc->standalone = 0;
ent = xmlGetDocEntity(doc, value);
- }
+ }
if (ent == NULL) {
xmlErrValidNode(ctxt, (xmlNodePtr) doc,
XML_DTD_UNKNOWN_ENTITY,
@@ -3968,7 +3967,7 @@ xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) {
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50);
if (fullname == NULL)
return(NULL);
@@ -4167,7 +4166,7 @@ xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
}
}
if (nbId > 1) {
-
+
xmlErrValidNodeNr(ctxt, (xmlNodePtr) attr, XML_DTD_ID_SUBSET,
"Element %s has %d ID attribute defined in the internal subset : %s\n",
attr->elem, nbId, attr->name);
@@ -4230,7 +4229,7 @@ xmlValidateElementDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
xmlElementPtr tst;
CHECK_DTD;
-
+
if (elem == NULL) return(1);
#if 0
@@ -4347,7 +4346,7 @@ xmlValidateElementDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
int
xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
- xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value)
+ xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value)
{
xmlAttributePtr attrDecl = NULL;
int val;
@@ -4360,7 +4359,7 @@ xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
if ((elem->ns != NULL) && (elem->ns->prefix != NULL)) {
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(elem->name, elem->ns->prefix, fn, 50);
if (fullname == NULL)
return(0);
@@ -4444,7 +4443,7 @@ xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
nota = xmlGetDtdNotationDesc(doc->intSubset, value);
if (nota == NULL)
nota = xmlGetDtdNotationDesc(doc->extSubset, value);
-
+
if (nota == NULL) {
xmlErrValidNode(ctxt, elem, XML_DTD_UNKNOWN_NOTATION,
"Value \"%s\" for attribute %s of %s is not a declared Notation\n",
@@ -4537,7 +4536,7 @@ xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
if (prefix != NULL) {
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(elem->name, prefix, fn, 50);
if (fullname == NULL) {
xmlVErrMemory(ctxt, "Validating namespace");
@@ -4641,7 +4640,7 @@ xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
nota = xmlGetDtdNotationDesc(doc->intSubset, value);
if (nota == NULL)
nota = xmlGetDtdNotationDesc(doc->extSubset, value);
-
+
if (nota == NULL) {
if (ns->prefix != NULL) {
xmlErrValidNode(ctxt, elem, XML_DTD_UNKNOWN_NOTATION,
@@ -4777,7 +4776,7 @@ xmlValidateElementType(xmlValidCtxtPtr ctxt) {
NODE = xmlValidateSkipIgnorable(NODE);
if ((NODE == NULL) && (CONT == NULL))
return(1);
- if ((NODE == NULL) &&
+ if ((NODE == NULL) &&
((CONT->ocur == XML_ELEMENT_CONTENT_MULT) ||
(CONT->ocur == XML_ELEMENT_CONTENT_OPT))) {
return(1);
@@ -5236,7 +5235,7 @@ xmlValidateElementContent(xmlValidCtxtPtr ctxt, xmlNodePtr child,
xmlElementContentPtr cont;
const xmlChar *name;
- if (elemDecl == NULL)
+ if ((elemDecl == NULL) || (parent == NULL) || (ctxt == NULL))
return(-1);
cont = elemDecl->content;
name = elemDecl->name;
@@ -5286,7 +5285,7 @@ xmlValidateElementContent(xmlValidCtxtPtr ctxt, xmlNodePtr child,
if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(cur->name,
cur->ns->prefix, fn, 50);
if (fullname == NULL) {
@@ -5400,7 +5399,7 @@ fail:
last = tmp;
}
if (cur->type == XML_CDATA_SECTION_NODE) {
- /*
+ /*
* E59 spaces in CDATA does not match the
* nonterminal S
*/
@@ -5517,7 +5516,8 @@ xmlValidateOneCdataElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
int ret = 1;
xmlNodePtr cur, child;
- if ((ctxt == NULL) || (doc == NULL) || (elem == NULL))
+ if ((ctxt == NULL) || (doc == NULL) || (elem == NULL) ||
+ (elem->type != XML_ELEMENT_NODE))
return(0);
child = elem->children;
@@ -5598,7 +5598,7 @@ xmlValidateCheckMixed(xmlValidCtxtPtr ctxt,
} else if ((cont->type != XML_ELEMENT_CONTENT_OR) ||
(cont->c1 == NULL) ||
(cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){
- xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT,
+ xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT,
"Internal: MIXED struct corrupted\n",
NULL);
break;
@@ -5622,7 +5622,7 @@ xmlValidateCheckMixed(xmlValidCtxtPtr ctxt,
} else if ((cont->type != XML_ELEMENT_CONTENT_OR) ||
(cont->c1 == NULL) ||
(cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){
- xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT,
+ xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT,
"Internal: MIXED struct corrupted\n",
NULL);
break;
@@ -5651,7 +5651,7 @@ xmlValidGetElemDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
xmlElementPtr elemDecl = NULL;
const xmlChar *prefix = NULL;
- if ((ctxt == NULL) || (doc == NULL) ||
+ if ((ctxt == NULL) || (doc == NULL) ||
(elem == NULL) || (elem->name == NULL))
return(NULL);
if (extsubset != NULL)
@@ -5795,7 +5795,7 @@ xmlValidatePushElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
* xmlValidatePushCData:
* @ctxt: the validation context
* @data: some character data read
- * @len: the lenght of the data
+ * @len: the length of the data
*
* check the CData parsed for validation in the current stack
*
@@ -6017,7 +6017,7 @@ xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
return(0);
/*
- * If vstateNr is not zero that means continuous validation is
+ * If vstateNr is not zero that means continuous validation is
* activated, do not try to check the content model at that level.
*/
if (ctxt->vstateNr == 0) {
@@ -6060,7 +6060,7 @@ xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
if ((child->ns != NULL) && (child->ns->prefix != NULL)) {
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(child->name, child->ns->prefix,
fn, 50);
if (fullname == NULL)
@@ -6078,7 +6078,7 @@ xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
} else if ((cont->type != XML_ELEMENT_CONTENT_OR) ||
(cont->c1 == NULL) ||
(cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){
- xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT,
+ xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT,
"Internal: MIXED struct corrupted\n",
NULL);
break;
@@ -6101,7 +6101,7 @@ xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
} else if ((cont->type != XML_ELEMENT_CONTENT_OR) ||
(cont->c1 == NULL) ||
(cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)) {
- xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT,
+ xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT,
"Internal: MIXED struct corrupted\n",
NULL);
break;
@@ -6181,7 +6181,7 @@ child_ok:
}
} else {
xmlAttrPtr attrib;
-
+
attrib = elem->properties;
while (attrib != NULL) {
if (xmlStrEqual(attrib->name, attr->name)) {
@@ -6196,18 +6196,18 @@ child_ok:
* allow to define the URI instead of the prefix :-(
*/
if (nameSpace == NULL) {
- if (qualified < 0)
+ if (qualified < 0)
qualified = 0;
} else if (!xmlStrEqual(nameSpace->prefix,
attr->prefix)) {
- if (qualified < 1)
+ if (qualified < 1)
qualified = 1;
} else
goto found;
} else {
/*
* We should allow applications to define namespaces
- * for their application even if the DTD doesn't
+ * for their application even if the DTD doesn't
* carry one, otherwise, basically we would always
* break.
*/
@@ -6280,7 +6280,7 @@ child_ok:
}
}
}
-found:
+found:
attr = attr->nexth;
}
return(ret);
@@ -6327,7 +6327,7 @@ xmlValidateRoot(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
if ((root->ns != NULL) && (root->ns->prefix != NULL)) {
xmlChar fn[50];
xmlChar *fullname;
-
+
fullname = xmlBuildQName(root->name, root->ns->prefix, fn, 50);
if (fullname == NULL) {
xmlVErrMemory(ctxt, NULL);
@@ -6338,7 +6338,7 @@ xmlValidateRoot(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
xmlFree(fullname);
if (ret == 1)
goto name_ok;
- }
+ }
if ((xmlStrEqual(doc->intSubset->name, BAD_CAST "HTML")) &&
(xmlStrEqual(root->name, BAD_CAST "html")))
goto name_ok;
@@ -6359,7 +6359,7 @@ name_ok:
* @doc: a document instance
* @elem: an element instance
*
- * Try to validate the subtree under an element
+ * Try to validate the subtree under an element
*
* returns 1 if valid or 0 otherwise
*/
@@ -6379,7 +6379,8 @@ xmlValidateElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem) {
* they don't really mean anything validation wise.
*/
if ((elem->type == XML_XINCLUDE_START) ||
- (elem->type == XML_XINCLUDE_END))
+ (elem->type == XML_XINCLUDE_END) ||
+ (elem->type == XML_NAMESPACE_DECL))
return(1);
CHECK_DTD;
@@ -6538,7 +6539,7 @@ xmlValidateCheckRefCallback(xmlListPtr ref_list, xmlValidCtxtPtr ctxt,
memo.name = name;
xmlListWalk(ref_list, xmlWalkValidateList, &memo);
-
+
}
/**
@@ -6550,7 +6551,7 @@ xmlValidateCheckRefCallback(xmlListPtr ref_list, xmlValidCtxtPtr ctxt,
* incremental validation steps have been completed
*
* basically it does the following checks described by the XML Rec
- *
+ *
* Check all the IDREF/IDREFS attributes definition for validity
*
* returns 1 if valid or 0 otherwise
@@ -6564,7 +6565,7 @@ xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
if (ctxt == NULL)
return(0);
if (doc == NULL) {
- xmlErrValid(ctxt, XML_DTD_NO_DOC,
+ xmlErrValid(ctxt, XML_DTD_NO_DOC,
"xmlValidateDocumentFinal: doc == NULL\n", NULL);
return(0);
}
@@ -6682,7 +6683,7 @@ xmlValidateAttributeCallback(xmlAttributePtr cur, xmlValidCtxtPtr ctxt,
case XML_ATTRIBUTE_ENTITIES:
case XML_ATTRIBUTE_NOTATION:
if (cur->defaultValue != NULL) {
-
+
ret = xmlValidateAttributeValue2(ctxt, ctxt->doc, cur->name,
cur->atype, cur->defaultValue);
if ((ret == 0) && (ctxt->valid == 1))
@@ -6739,9 +6740,9 @@ xmlValidateAttributeCallback(xmlAttributePtr cur, xmlValidCtxtPtr ctxt,
* subsets have been parsed
*
* basically it does the following checks described by the XML Rec
- * - check that ENTITY and ENTITIES type attributes default or
+ * - check that ENTITY and ENTITIES type attributes default or
* possible values matches one of the defined entities.
- * - check that NOTATION type attributes default or
+ * - check that NOTATION type attributes default or
* possible values matches one of the defined notations.
*
* returns 1 if valid or 0 if invalid and -1 if not well-formed
@@ -6812,7 +6813,7 @@ xmlValidateDocument(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
xmlChar *sysID;
if (doc->intSubset->SystemID != NULL) {
sysID = xmlBuildURI(doc->intSubset->SystemID,
- doc->URL);
+ doc->URL);
if (sysID == NULL) {
xmlErrValid(ctxt, XML_DTD_LOAD_ERROR,
"Could not build URI for external subset \"%s\"\n",
@@ -6885,17 +6886,17 @@ xmlValidGetPotentialChildren(xmlElementContent *ctree,
if (*len >= max) return(*len);
switch (ctree->type) {
- case XML_ELEMENT_CONTENT_PCDATA:
+ case XML_ELEMENT_CONTENT_PCDATA:
for (i = 0; i < *len;i++)
if (xmlStrEqual(BAD_CAST "#PCDATA", names[i])) return(*len);
names[(*len)++] = BAD_CAST "#PCDATA";
break;
- case XML_ELEMENT_CONTENT_ELEMENT:
+ case XML_ELEMENT_CONTENT_ELEMENT:
for (i = 0; i < *len;i++)
if (xmlStrEqual(ctree->name, names[i])) return(*len);
names[(*len)++] = ctree->name;
break;
- case XML_ELEMENT_CONTENT_SEQ:
+ case XML_ELEMENT_CONTENT_SEQ:
xmlValidGetPotentialChildren(ctree->c1, names, len, max);
xmlValidGetPotentialChildren(ctree->c2, names, len, max);
break;
@@ -6904,7 +6905,7 @@ xmlValidGetPotentialChildren(xmlElementContent *ctree,
xmlValidGetPotentialChildren(ctree->c2, names, len, max);
break;
}
-
+
return(*len);
}
@@ -6946,19 +6947,19 @@ xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names,
int max) {
xmlValidCtxt vctxt;
int nb_valid_elements = 0;
- const xmlChar *elements[256];
+ const xmlChar *elements[256]={0};
int nb_elements = 0, i;
const xmlChar *name;
-
+
xmlNode *ref_node;
xmlNode *parent;
xmlNode *test_node;
-
+
xmlNode *prev_next;
xmlNode *next_prev;
xmlNode *parent_childs;
xmlNode *parent_last;
-
+
xmlElement *element_desc;
if (prev == NULL && next == NULL)
@@ -6983,7 +6984,7 @@ xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names,
element_desc = xmlGetDtdElementDesc(parent->doc->extSubset,
parent->name);
if (element_desc == NULL) return(-1);
-
+
/*
* Do a backup of the current tree structure
*/
@@ -6994,16 +6995,19 @@ xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names,
/*
* Creates a dummy node and insert it into the tree
- */
+ */
test_node = xmlNewDocNode (ref_node->doc, NULL, BAD_CAST "<!dummy?>", NULL);
+ if (test_node == NULL)
+ return(-1);
+
test_node->parent = parent;
test_node->prev = prev;
test_node->next = next;
name = test_node->name;
-
+
if (prev) prev->next = test_node;
else parent->children = test_node;
-
+
if (next) next->prev = test_node;
else parent->last = test_node;
@@ -7013,7 +7017,7 @@ xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names,
*/
nb_elements = xmlValidGetPotentialChildren(element_desc->content,
elements, &nb_elements, 256);
-
+
for (i = 0;i < nb_elements;i++) {
test_node->name = elements[i];
if (xmlValidateOneElement(&vctxt, parent->doc, parent)) {
diff --git a/vms/build_libxml.com b/vms/build_libxml.com
index 816e64d..3a6fcc0 100755
--- a/vms/build_libxml.com
+++ b/vms/build_libxml.com
@@ -31,7 +31,7 @@ $!- configuration -------------------------------------------------------------
$!
$!- compile command. If p1="nowarn" suppress the expected warning types
$!
-$ cc_opts = "/DEF=HAVE_CONFIG_H/NAMES=(SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS/INCLUDE=xml_srcdir"
+$ cc_opts = "/nowarn/DEF=HAVE_CONFIG_H/NAMES=(as_is,SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS/INCLUDE=xml_srcdir"
$!
$ if p1.eqs."DEBUG" .or. p2.eqs."DEBUG"
$ then
@@ -46,15 +46,15 @@ $!- list of sources to be built into the LIBXML library. Compare this list
$! to the definition of "libxml2_la_SOURCES" in the file MAKEFILE.IN.
$! Currently this definition includes the list WITH_TRIO_SOURCES_TRUE
$!
-$ sources = "SAX.c entities.c encoding.c error.c parserInternals.c"
-$ sources = sources + " parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c"
+$ sources = "parser.c SAX.c entities.c encoding.c error.c parserInternals.c"
+$ sources = sources + " tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c"
$ sources = sources + " valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c"
$ sources = sources + " xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c"
$ sources = sources + " catalog.c globals.c threads.c c14n.c xmlstring.c"
$ sources = sources + " xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c"
$ sources = sources + " triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c"
$ sources = sources + " xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c"
-$ sources = sources + " schematron.c"
+$ sources = sources + " schematron.c xmlmodule.c buf.c"
$!
$!- list of main modules to compile and link. Compare this list to the
$! definition of bin_PROGRAMS in MAKEFILE.IN
@@ -102,6 +102,7 @@ $ endif
$ endif
$!
$ copy/log config.vms xml_srcdir:config.h
+$! copy/log xmlversion.h [-.include.libxml]
$!
$ if f$trnlnm("libxml").eqs.""
$ then
@@ -256,8 +257,14 @@ $ then
$ opts = ""
$ if debug then opts = "/DEBUG"
$ write sys$output "''link_command'''opts' ''object_file',XML_LIBDIR:libxml.olb/library"
-$ link_command'opts' 'object_file',-
+$ if f$search( "sys$library:iconv.olb" ) .eqs. ""
+$ then
+$ link_command'opts' 'object_file',-
XML_LIBDIR:libxml.olb/library
+$ else
+$ link_command'opts' 'object_file',-
+ XML_LIBDIR:libxml.olb/library,sys$library:iconv/lib
+$ endif
$ endif
$!
$EXIT_BUILD:
diff --git a/vms/config.vms b/vms/config.vms
index 6ecfa47..d1cd7f3 100755
--- a/vms/config.vms
+++ b/vms/config.vms
@@ -19,6 +19,8 @@
#undef HAVE_LIBHISTORY
#undef HAVE_LIBREADLINE
+#define ICONV_CONST
+
/* Define if you have the class function. */
#undef HAVE_CLASS
@@ -207,3 +209,8 @@
#endif
#define xmlBufferWriteChar xmlBufferWriteChar2
+
+#include <inttypes.h>
+
+#define HAVE_DLOPEN 1
+#define HAVE_DLFCN_H 1
diff --git a/win32/.cvsignore b/win32/.cvsignore
deleted file mode 100644
index 1f8e034..0000000
--- a/win32/.cvsignore
+++ /dev/null
@@ -1,7 +0,0 @@
-Makefile
-config.*
-depends.*
-int.*
-bin.*
-*.win32
-*.win32.zip
diff --git a/win32/Makefile.bcb b/win32/Makefile.bcb
index d612e2d..7129c61 100644
--- a/win32/Makefile.bcb
+++ b/win32/Makefile.bcb
@@ -68,6 +68,9 @@ CFLAGS = $(CFLAGS) -DHAVE_PTHREAD_H
!if "$(WITH_ZLIB)" == "1"
CFLAGS = $(CFLAGS) -DHAVE_ZLIB_H
!endif
+!if "$(WITH_LZMA)" == "1"
+CFLAGS = $(CFLAGS) -DHAVE_LZMA_H
+!endif
# The linker and its options.
LD = ilink32.exe
@@ -92,6 +95,9 @@ LIBS = $(LIBS) iconvomf.lib
!if "$(WITH_ZLIB)" == "1"
LIBS = $(LIBS) zlibomf.lib
!endif
+!if "$(WITH_LZMA)" == "1"
+LIBS = $(LIBS) liblzma.lib
+!endif
!if "$(WITH_THREADS)" == "posix"
LIBS = $(LIBS) pthreadVC.lib
!endif
@@ -113,7 +119,8 @@ LDFLAGS = $(LDFLAGS)
!endif
# Libxml object files.
-XML_OBJS = $(XML_INTDIR)\c14n.obj\
+XML_OBJS = $(XML_INTDIR)\buf.obj\
+ $(XML_INTDIR)\c14n.obj\
$(XML_INTDIR)\catalog.obj\
$(XML_INTDIR)\chvalid.obj\
$(XML_INTDIR)\debugXML.obj\
@@ -158,7 +165,8 @@ XML_OBJS = $(XML_INTDIR)\c14n.obj\
$(XML_INTDIR)\xmlstring.obj
# Static libxml object files.
-XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
+XML_OBJS_A = $(XML_INTDIR_A)\buf.obj\
+ $(XML_INTDIR_A)\c14n.obj\
$(XML_INTDIR_A)\catalog.obj\
$(XML_INTDIR_A)\chvalid.obj\
$(XML_INTDIR_A)\debugXML.obj\
@@ -219,7 +227,8 @@ UTILS = $(BINDIR)\xmllint.exe\
$(BINDIR)\testXPath.exe\
$(BINDIR)\runtest.exe\
$(BINDIR)\runsuite.exe\
- $(BINDIR)\testapi.exe
+ $(BINDIR)\testapi.exe\
+ $(BINDIR)\testlimits.exe
!if "$(WITH_THREADS)" == "yes" || "$(WITH_THREADS)" == "ctls" || "$(WITH_THREADS)" == "native"
@@ -250,10 +259,11 @@ distclean : clean
rebuild : clean all
install-libs : all
- if not exist "$(INCPREFIX)\libxml" mkdir "$(INCPREFIX)\libxml"
+ if not exist "$(INCPREFIX)\libxml2" mkdir "$(INCPREFIX)\libxml2"
+ if not exist "$(INCPREFIX)\libxml2\libxml" mkdir "$(INCPREFIX)\libxml2\libxml"
if not exist "$(BINPREFIX)" mkdir "$(BINPREFIX)"
if not exist "$(LIBPREFIX)" mkdir "$(LIBPREFIX)"
- copy $(XML_SRCDIR)\include\libxml\*.h "$(INCPREFIX)\libxml"
+ copy $(XML_SRCDIR)\include\libxml\*.h "$(INCPREFIX)\libxml2\libxml"
copy $(BINDIR)\$(XML_SO) "$(SOPREFIX)"
copy $(BINDIR)\$(XML_A) "$(LIBPREFIX)"
copy $(BINDIR)\$(XML_IMP) "$(LIBPREFIX)"
diff --git a/win32/Makefile.mingw b/win32/Makefile.mingw
index 0f8198b..1889376 100644
--- a/win32/Makefile.mingw
+++ b/win32/Makefile.mingw
@@ -60,6 +60,9 @@ endif
ifeq ($(WITH_ZLIB),1)
CFLAGS += -DHAVE_ZLIB_H
endif
+ifeq ($(WITH_LZMA),1)
+CFLAGS += -DHAVE_LZMA_H
+endif
# The linker and its options.
LD = gcc.exe
@@ -83,6 +86,9 @@ ifeq ($(WITH_ZLIB),1)
# LIBS += -lzdll
LIBS += -lz
endif
+ifeq ($(WITH_LZMA),1)
+LIBS += -llzma
+endif
ifeq ($(WITH_THREADS),posix)
LIBS += -lpthreadGC
endif
@@ -107,7 +113,8 @@ endif
# Libxml object files.
-XML_OBJS = $(XML_INTDIR)/c14n.o\
+XML_OBJS = $(XML_INTDIR)/buf.o\
+ $(XML_INTDIR)/c14n.o\
$(XML_INTDIR)/catalog.o\
$(XML_INTDIR)/chvalid.o\
$(XML_INTDIR)/debugXML.o\
@@ -154,7 +161,8 @@ XML_OBJS = $(XML_INTDIR)/c14n.o\
XML_SRCS = $(subst .o,.c,$(subst $(XML_INTDIR)/,$(XML_SRCDIR)/,$(XML_OBJS)))
# Static libxml object files.
-XML_OBJS_A = $(XML_INTDIR_A)/c14n.o\
+XML_OBJS_A = $(XML_INTDIR_A)/buf.o\
+ $(XML_INTDIR_A)/c14n.o\
$(XML_INTDIR_A)/catalog.o\
$(XML_INTDIR_A)/chvalid.o\
$(XML_INTDIR_A)/debugXML.o\
@@ -217,7 +225,8 @@ UTILS = $(BINDIR)/xmllint.exe\
$(BINDIR)/testXPath.exe\
$(BINDIR)/runtest.exe\
$(BINDIR)/runsuite.exe\
- $(BINDIR)/testapi.exe
+ $(BINDIR)/testapi.exe\
+ $(BINDIR)/testlimits.exe
ifeq ($(WITH_THREADS),yes)
UTILS += $(BINDIR)/testThreadsWin32.exe
@@ -254,10 +263,11 @@ distclean : clean
rebuild : clean all
install-libs : all
- cmd.exe /C "if not exist $(INCPREFIX)\libxml mkdir $(INCPREFIX)\libxml"
+ cmd.exe /C "if not exist $(INCPREFIX)\libxml2 mkdir $(INCPREFIX)\libxml2"
+ cmd.exe /C "if not exist $(INCPREFIX)\libxml2\libxml mkdir $(INCPREFIX)\libxml2\libxml"
cmd.exe /C "if not exist $(BINPREFIX) mkdir $(BINPREFIX)"
cmd.exe /C "if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)"
- cmd.exe /C "copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml"
+ cmd.exe /C "copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml2\libxml"
cmd.exe /C "copy $(BINDIR)\$(XML_SO) $(SOPREFIX)"
cmd.exe /C "copy $(BINDIR)\$(XML_A) $(LIBPREFIX)"
cmd.exe /C "copy $(BINDIR)\$(XML_IMP) $(LIBPREFIX)"
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index cc93372..d16c1a2 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -43,7 +43,7 @@ CPPFLAGS = $(CPPFLAGS) /D "_REENTRANT"
# The compiler and its options.
CC = cl.exe
-CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "NOLIBTOOL" /W1 $(CRUNTIME)
+CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "NOLIBTOOL" /W1 $(CRUNTIME)
CFLAGS = $(CFLAGS) /I$(XML_SRCDIR) /I$(XML_SRCDIR)\include /I$(INCPREFIX)
!if "$(WITH_THREADS)" != "no"
CFLAGS = $(CFLAGS) /D "_REENTRANT"
@@ -108,7 +108,8 @@ LDFLAGS = $(LDFLAGS)
!endif
# Libxml object files.
-XML_OBJS = $(XML_INTDIR)\c14n.obj\
+XML_OBJS = $(XML_INTDIR)\buf.obj\
+ $(XML_INTDIR)\c14n.obj\
$(XML_INTDIR)\catalog.obj\
$(XML_INTDIR)\chvalid.obj\
$(XML_INTDIR)\debugXML.obj\
@@ -153,7 +154,8 @@ XML_OBJS = $(XML_INTDIR)\c14n.obj\
$(XML_INTDIR)\xmlstring.obj
# Static libxml object files.
-XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
+XML_OBJS_A = $(XML_INTDIR_A)\buf.obj\
+ $(XML_INTDIR_A)\c14n.obj\
$(XML_INTDIR_A)\catalog.obj\
$(XML_INTDIR_A)\chvalid.obj\
$(XML_INTDIR_A)\debugXML.obj\
@@ -198,7 +200,8 @@ XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
$(XML_INTDIR_A)\xmlstring.obj
# Static libxml object files.
-XML_OBJS_A_DLL = $(XML_INTDIR_A_DLL)\c14n.obj\
+XML_OBJS_A_DLL = $(XML_INTDIR_A_DLL)\buf.obj\
+ $(XML_INTDIR_A_DLL)\c14n.obj\
$(XML_INTDIR_A_DLL)\catalog.obj\
$(XML_INTDIR_A_DLL)\chvalid.obj\
$(XML_INTDIR_A_DLL)\debugXML.obj\
@@ -259,7 +262,9 @@ UTILS = $(BINDIR)\xmllint.exe\
$(BINDIR)\testXPath.exe\
$(BINDIR)\runtest.exe\
$(BINDIR)\runsuite.exe\
- $(BINDIR)\testapi.exe
+ $(BINDIR)\testapi.exe\
+ $(BINDIR)\testlimits.exe\
+ $(BINDIR)\testrecurse.exe
!if "$(WITH_THREADS)" == "yes" || "$(WITH_THREADS)" == "ctls" || "$(WITH_THREADS)" == "native"
UTILS = $(UTILS) $(BINDIR)\testThreadsWin32.exe
@@ -299,11 +304,12 @@ distclean : clean
rebuild : clean all
install-libs : all
- if not exist $(INCPREFIX)\libxml mkdir $(INCPREFIX)\libxml
+ if not exist $(INCPREFIX)\libxml2 mkdir $(INCPREFIX)\libxml2
+ if not exist $(INCPREFIX)\libxml2\libxml mkdir $(INCPREFIX)\libxml2\libxml
if not exist $(BINPREFIX) mkdir $(BINPREFIX)
if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)
if not exist $(SOPREFIX) mkdir $(SOPREFIX)
- copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml
+ copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml2\libxml
copy $(BINDIR)\$(XML_SO) $(SOPREFIX)
copy $(BINDIR)\$(XML_A) $(LIBPREFIX)
copy $(BINDIR)\$(XML_A_DLL) $(LIBPREFIX)
@@ -411,7 +417,15 @@ $(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml libxmla libxmladll
# TESTS
-tests : XPathtests
+tests : checktests XPathtests
+
+checktests : $(UTILS)
+ cd .. && win32\$(BINDIR)\runtest.exe
+ cd .. && win32\$(BINDIR)\testrecurse.exe
+ cd .. && win32\$(BINDIR)\testapi.exe
+ cd .. && win32\$(BINDIR)\testchar.exe
+ cd .. && win32\$(BINDIR)\testdict.exe
+ cd .. && win32\$(BINDIR)\runxmlconf.exe
XPathtests : $(BINDIR)\testXPath.exe
@echo. 2> .memdump
diff --git a/win32/VC10/libxml2.vcxproj b/win32/VC10/libxml2.vcxproj
index 0d5a1bc..0588fa6 100644
--- a/win32/VC10/libxml2.vcxproj
+++ b/win32/VC10/libxml2.vcxproj
@@ -69,6 +69,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
+ <ClCompile Include="..\..\buf.c" />
<ClCompile Include="..\..\c14n.c" />
<ClCompile Include="..\..\catalog.c" />
<ClCompile Include="..\..\chvalid.c" />
diff --git a/win32/VC10/runsuite.vcxproj b/win32/VC10/runsuite.vcxproj
index b4ccc37..83cc991 100644
--- a/win32/VC10/runsuite.vcxproj
+++ b/win32/VC10/runsuite.vcxproj
@@ -46,7 +46,7 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\..\include;$(ProjectDir)..\..\..\libiconv-1.14.vc10\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
- <PreprocessorDefinitions>HAVE_CONFIG_H;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<MinimalRebuild>false</MinimalRebuild>
</ClCompile>
diff --git a/win32/configure.js b/win32/configure.js
index 11d2898..edd943a 100644
--- a/win32/configure.js
+++ b/win32/configure.js
@@ -305,6 +305,8 @@ function configureLibxml()
of.WriteLine(s.replace(/\@WITH_TRIO\@/, withTrio? "1" : "0"));
} else if (s.search(/\@WITH_THREADS\@/) != -1) {
of.WriteLine(s.replace(/\@WITH_THREADS\@/, withThreads == "no"? "0" : "1"));
+ } else if (s.search(/\@WITH_THREAD_ALLOC\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_THREAD_ALLOC\@/, "0"));
} else if (s.search(/\@WITH_FTP\@/) != -1) {
of.WriteLine(s.replace(/\@WITH_FTP\@/, withFtp? "1" : "0"));
} else if (s.search(/\@WITH_HTTP\@/) != -1) {
diff --git a/win32/libxml2.def.src b/win32/libxml2.def.src
index ce3f24a..1bdbed9 100644
--- a/win32/libxml2.def.src
+++ b/win32/libxml2.def.src
@@ -553,6 +553,12 @@ xmlAutomataSetFinalState
#ifdef LIBXML_DEBUG_ENABLED
xmlBoolToText
#endif
+xmlBufContent
+xmlBufEnd
+xmlBufGetNodeContent
+xmlBufNodeDump
+xmlBufShrink
+xmlBufUse
xmlBufferAdd
xmlBufferAddHead
xmlBufferCCat
@@ -561,6 +567,7 @@ xmlBufferContent
xmlBufferCreate
xmlBufferCreateSize
xmlBufferCreateStatic
+xmlBufferDetach
xmlBufferDump
xmlBufferEmpty
xmlBufferFree
@@ -765,10 +772,12 @@ xmlDictCreate
xmlDictCreateSub
xmlDictExists
xmlDictFree
+xmlDictGetUsage
xmlDictLookup
xmlDictOwns
xmlDictQLookup
xmlDictReference
+xmlDictSetLimit
xmlDictSize
xmlDllMain
xmlDocCopyNode
@@ -992,6 +1001,7 @@ xmlInitThreads
#ifdef LIBXML_CATALOG_ENABLED
xmlInitializeCatalog
#endif
+xmlInitializeDict
xmlInitializeGlobalState
xmlInitializePredefinedEntities
xmlIsBaseChar
@@ -1292,6 +1302,8 @@ xmlOutputBufferCreateFilename
xmlOutputBufferCreateFilenameDefault
xmlOutputBufferCreateIO
xmlOutputBufferFlush
+xmlOutputBufferGetContent
+xmlOutputBufferGetSize
xmlOutputBufferWrite
xmlOutputBufferWriteEscape
xmlOutputBufferWriteString
@@ -1770,6 +1782,12 @@ xmlSchemaValidateOneElement
xmlSchemaValidatePredefinedType
#endif
#ifdef LIBXML_SCHEMAS_ENABLED
+xmlSchemaValidateSetFilename
+#endif
+#ifdef LIBXML_SCHEMAS_ENABLED
+xmlSchemaValidateSetLocator
+#endif
+#ifdef LIBXML_SCHEMAS_ENABLED
xmlSchemaValidateStream
#endif
#ifdef LIBXML_SCHEMAS_ENABLED
@@ -1960,6 +1978,7 @@ xmlTextReaderRelaxNGSetSchema
#ifdef LIBXML_SCHEMAS_ENABLED
xmlTextReaderRelaxNGValidate
#endif
+xmlTextReaderRelaxNGValidateCtxt
xmlTextReaderSchemaValidate
xmlTextReaderSchemaValidateCtxt
xmlTextReaderSetErrorHandler
@@ -1984,6 +2003,7 @@ xmlTextWriterFlush
xmlTextWriterFullEndElement
xmlTextWriterSetIndent
xmlTextWriterSetIndentString
+xmlTextWriterSetQuoteChar
xmlTextWriterStartAttribute
xmlTextWriterStartAttributeNS
xmlTextWriterStartCDATA
@@ -2911,6 +2931,9 @@ xmlXPathNextPrecedingSibling
xmlXPathNextSelf
#endif
#ifdef LIBXML_XPATH_ENABLED
+xmlXPathNodeEval
+#endif
+#ifdef LIBXML_XPATH_ENABLED
xmlXPathNodeLeading
#endif
#ifdef LIBXML_XPATH_ENABLED
@@ -3037,6 +3060,9 @@ xmlXPathRoot
xmlXPathRoundFunction
#endif
#ifdef LIBXML_XPATH_ENABLED
+xmlXPathSetContextNode
+#endif
+#ifdef LIBXML_XPATH_ENABLED
xmlXPathStartsWithFunction
#endif
#ifdef LIBXML_XPATH_ENABLED
diff --git a/win32/wince/wincecompat.c b/win32/wince/wincecompat.c
index 1d8df87..bd49c57 100644
--- a/win32/wince/wincecompat.c
+++ b/win32/wince/wincecompat.c
@@ -34,11 +34,10 @@ int open(const char *filename,int oflag, ...)
char mode[3]; /* mode[0] ="w/r/a" mode[1]="+" */
mode[2]=0;
if ( oflag==(O_WRONLY|O_CREAT) )
- mode[0]="w";
+ mode[0]='w';
else if (oflag==O_RDONLY)
- mode[0]="r";
- return fopen(filename, mode);
-
+ mode[0]='r';
+ return (int) fopen(filename, mode);
}
int close(int handle)
diff --git a/xinclude.c b/xinclude.c
index d01f978..ff3dafb 100644
--- a/xinclude.c
+++ b/xinclude.c
@@ -17,6 +17,7 @@
#include <libxml/tree.h>
#include <libxml/parser.h>
#include <libxml/uri.h>
+#include <libxml/xpath.h>
#include <libxml/xpointer.h>
#include <libxml/parserInternals.h>
#include <libxml/xmlerror.h>
@@ -26,6 +27,7 @@
#ifdef LIBXML_XINCLUDE_ENABLED
#include <libxml/xinclude.h>
+#include "buf.h"
#define XINCLUDE_MAX_DEPTH 40
@@ -92,7 +94,7 @@ xmlXIncludeDoProcess(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr tree);
/************************************************************************
* *
- * XInclude error handler *
+ * XInclude error handler *
* *
************************************************************************/
@@ -412,7 +414,7 @@ xmlXIncludeFreeContext(xmlXIncludeCtxtPtr ctxt) {
* xmlXIncludeParseFile:
* @ctxt: the XInclude context
* @URL: the URL or file path
- *
+ *
* parse a document for XInclude
*/
static xmlDocPtr
@@ -433,7 +435,7 @@ xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) {
* pass in the application data to the parser context.
*/
pctxt->_private = ctxt->_private;
-
+
/*
* try to ensure that new documents included are actually
* built with the same dictionary as the including document.
@@ -446,7 +448,7 @@ xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) {
}
xmlCtxtUseOptions(pctxt, ctxt->parseFlags | XML_PARSE_DTDLOAD);
-
+
inputStream = xmlLoadExternalEntity(URL, NULL, pctxt);
if (inputStream == NULL) {
xmlFreeParserCtxt(pctxt);
@@ -472,7 +474,7 @@ xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) {
pctxt->myDoc = NULL;
}
xmlFreeParserCtxt(pctxt);
-
+
return(ret);
}
@@ -480,7 +482,7 @@ xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) {
* xmlXIncludeAddNode:
* @ctxt: the XInclude context
* @cur: the new node
- *
+ *
* Add a new node to process to an XInclude context
*/
static int
@@ -511,7 +513,7 @@ xmlXIncludeAddNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur) {
href = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_HREF);
if (href == NULL) {
href = xmlStrdup(BAD_CAST ""); /* @@@@ href is now optional */
- if (href == NULL)
+ if (href == NULL)
return(-1);
}
if ((href[0] == '#') || (href[0] == 0))
@@ -655,7 +657,7 @@ xmlXIncludeAddNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur) {
* @ctxt: the XInclude context
* @doc: the new document
* @url: the associated URL
- *
+ *
* The XInclude recursive nature is handled at this point.
*/
static void
@@ -684,7 +686,7 @@ xmlXIncludeRecurseDoc(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc,
/*
* Copy the private user data
*/
- newctxt->_private = ctxt->_private;
+ newctxt->_private = ctxt->_private;
/*
* Copy the existing document set
*/
@@ -749,7 +751,7 @@ xmlXIncludeRecurseDoc(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc,
* @ctxt: the XInclude context
* @txt: the new text node
* @url: the associated URL
- *
+ *
* Add a new txtument to the list
*/
static void
@@ -808,7 +810,7 @@ xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
* @target: the document target
* @source: the document source
* @elem: the element
- *
+ *
* Make a copy of the node while preserving the XInclude semantic
* of the Infoset copy
*/
@@ -835,7 +837,7 @@ xmlXIncludeCopyNode(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
* @target: the document target
* @source: the document source
* @elem: the element list
- *
+ *
* Make a copy of the node list while preserving the XInclude semantic
* of the Infoset copy
*/
@@ -874,11 +876,11 @@ xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
static xmlNodePtr
xmlXIncludeGetNthChild(xmlNodePtr cur, int no) {
int i;
- if (cur == NULL)
- return(cur);
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
+ return(NULL);
cur = cur->children;
for (i = 0;i <= no;cur = cur->next) {
- if (cur == NULL)
+ if (cur == NULL)
return(cur);
if ((cur->type == XML_ELEMENT_NODE) ||
(cur->type == XML_DOCUMENT_NODE) ||
@@ -922,11 +924,13 @@ xmlXIncludeCopyRange(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
return(NULL);
start = (xmlNodePtr) range->user;
- if (start == NULL)
+ if ((start == NULL) || (start->type == XML_NAMESPACE_DECL))
return(NULL);
end = range->user2;
if (end == NULL)
return(xmlDocCopyNode(start, target, 1));
+ if (end->type == XML_NAMESPACE_DECL)
+ return(NULL);
cur = start;
index1 = range->index;
@@ -985,7 +989,7 @@ xmlXIncludeCopyRange(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
/* prune and return full set */
if (level == lastLevel)
xmlAddNextSibling(last, tmp);
- else
+ else
xmlAddChild(last, tmp);
return(list);
} else { /* ending node not a text node */
@@ -1204,6 +1208,7 @@ xmlXIncludeCopyXPointer(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
}
break;
}
+#ifdef LIBXML_XPTR_ENABLED
case XPATH_LOCATIONSET: {
xmlLocationSetPtr set = (xmlLocationSetPtr) obj->user;
if (set == NULL)
@@ -1223,7 +1228,6 @@ xmlXIncludeCopyXPointer(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
}
break;
}
-#ifdef LIBXML_XPTR_ENABLED
case XPATH_RANGE:
return(xmlXIncludeCopyRange(ctxt, target, source, obj));
#endif
@@ -1289,7 +1293,7 @@ xmlXIncludeMergeEntity(xmlEntityPtr ent, xmlXIncludeMergeDataPtr data,
if (prev != NULL) {
if (ent->etype != prev->etype)
goto error;
-
+
if ((ent->SystemID != NULL) && (prev->SystemID != NULL)) {
if (!xmlStrEqual(ent->SystemID, prev->SystemID))
goto error;
@@ -1389,7 +1393,7 @@ xmlXIncludeMergeEntities(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc,
* @ctxt: the XInclude context
* @url: the associated URL
* @nr: the xinclude node number
- *
+ *
* Load the document, and store the result in the XInclude context
*
* Returns 0 in case of success, -1 in case of failure
@@ -1413,7 +1417,7 @@ xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt, const xmlChar *url, int nr) {
*/
uri = xmlParseURI((const char *)url);
if (uri == NULL) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_HREF_URI,
"invalid value URI %s\n", url);
return(-1);
@@ -1431,7 +1435,7 @@ xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt, const xmlChar *url, int nr) {
xmlFreeURI(uri);
if (URL == NULL) {
if (ctxt->incTab != NULL)
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_HREF_URI,
"invalid value URI %s\n", url);
else
@@ -1550,7 +1554,7 @@ loaded:
ctxt->incTab[nr]->inc = xmlXIncludeCopyNodeList(ctxt, ctxt->doc,
doc, doc->children);
}
- }
+ }
#ifdef LIBXML_XPTR_ENABLED
else {
/*
@@ -1568,7 +1572,7 @@ loaded:
xptrctxt = xmlXPtrNewContext(doc, NULL, NULL);
}
if (xptrctxt == NULL) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_XPTR_FAILED,
"could not create XPointer context\n", NULL);
xmlFree(URL);
@@ -1594,7 +1598,7 @@ loaded:
case XPATH_POINT:
case XPATH_USERS:
case XPATH_XSLT_TREE:
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_XPTR_RESULT,
"XPointer is not a range: #%s\n",
fragment);
@@ -1636,14 +1640,14 @@ loaded:
continue;
case XML_ATTRIBUTE_NODE:
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_XPTR_RESULT,
"XPointer selects an attribute: #%s\n",
fragment);
set->nodeTab[i] = NULL;
continue;
case XML_NAMESPACE_DECL:
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_XPTR_RESULT,
"XPointer selects a namespace: #%s\n",
fragment);
@@ -1658,7 +1662,7 @@ loaded:
case XML_ENTITY_DECL:
case XML_XINCLUDE_START:
case XML_XINCLUDE_END:
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_XPTR_RESULT,
"XPointer selects unexpected nodes: #%s\n",
fragment);
@@ -1684,7 +1688,7 @@ loaded:
/*
* Do the xml:base fixup if needed
*/
- if ((doc != NULL) && (URL != NULL) && (xmlStrchr(URL, (xmlChar) '/')) &&
+ if ((doc != NULL) && (URL != NULL) &&
(!(ctxt->parseFlags & XML_PARSE_NOBASEFIX)) &&
(!(doc->parseFlags & XML_PARSE_NOBASEFIX))) {
xmlNodePtr node;
@@ -1704,7 +1708,7 @@ loaded:
*/
curBase = xmlBuildRelativeURI(URL, ctxt->base);
if (curBase == NULL) { /* Error return */
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_HREF_URI,
"trying to build relative URI from %s\n", URL);
} else {
@@ -1745,7 +1749,7 @@ loaded:
xmlChar *relBase;
relBase = xmlBuildURI(xmlBase, base);
if (relBase == NULL) { /* error */
- xmlXIncludeErr(ctxt,
+ xmlXIncludeErr(ctxt,
ctxt->incTab[nr]->ref,
XML_XINCLUDE_HREF_URI,
"trying to rebuild base from %s\n",
@@ -1782,7 +1786,7 @@ loaded:
* @ctxt: the XInclude context
* @url: the associated URL
* @nr: the xinclude node number
- *
+ *
* Load the content, and store the result in the XInclude context
*
* Returns 0 in case of success, -1 in case of failure
@@ -1798,6 +1802,7 @@ xmlXIncludeLoadTxt(xmlXIncludeCtxtPtr ctxt, const xmlChar *url, int nr) {
xmlCharEncoding enc = (xmlCharEncoding) 0;
xmlParserCtxtPtr pctxt;
xmlParserInputPtr inputStream;
+ int xinclude_multibyte_fallback_used = 0;
/*
* Check the URL and remove any fragment identifier
@@ -1828,7 +1833,7 @@ xmlXIncludeLoadTxt(xmlXIncludeCtxtPtr ctxt, const xmlChar *url, int nr) {
* directly through ctxt->doc.
*/
if (URL[0] == 0) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_TEXT_DOCUMENT,
"text serialization of document not available\n", NULL);
xmlFree(URL);
@@ -1894,30 +1899,39 @@ xmlXIncludeLoadTxt(xmlXIncludeCtxtPtr ctxt, const xmlChar *url, int nr) {
/*
* Scan all chars from the resource and add the to the node
*/
+xinclude_multibyte_fallback:
while (xmlParserInputBufferRead(buf, 128) > 0) {
int len;
const xmlChar *content;
- content = xmlBufferContent(buf->buffer);
- len = xmlBufferLength(buf->buffer);
+ content = xmlBufContent(buf->buffer);
+ len = xmlBufLength(buf->buffer);
for (i = 0;i < len;) {
int cur;
int l;
cur = xmlStringCurrentChar(NULL, &content[i], &l);
if (!IS_CHAR(cur)) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
- XML_XINCLUDE_INVALID_CHAR,
- "%s contains invalid char\n", URL);
- xmlFreeParserInputBuffer(buf);
- xmlFree(URL);
- return(-1);
+ /* Handle splitted multibyte char at buffer boundary */
+ if (((len - i) < 4) && (!xinclude_multibyte_fallback_used)) {
+ xinclude_multibyte_fallback_used = 1;
+ xmlBufShrink(buf->buffer, i);
+ goto xinclude_multibyte_fallback;
+ } else {
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ XML_XINCLUDE_INVALID_CHAR,
+ "%s contains invalid char\n", URL);
+ xmlFreeParserInputBuffer(buf);
+ xmlFree(URL);
+ return(-1);
+ }
} else {
+ xinclude_multibyte_fallback_used = 0;
xmlNodeAddContentLen(node, &content[i], l);
}
i += l;
}
- xmlBufferShrink(buf->buffer, len);
+ xmlBufShrink(buf->buffer, len);
}
xmlFreeParserCtxt(pctxt);
xmlXIncludeAddTxt(ctxt, node, URL);
@@ -1937,7 +1951,7 @@ loaded:
* @ctxt: the XInclude context
* @fallback: the fallback node
* @nr: the xinclude node number
- *
+ *
* Load the content of the fallback node, and store the result
* in the XInclude context
*
@@ -1947,8 +1961,9 @@ static int
xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt, xmlNodePtr fallback, int nr) {
xmlXIncludeCtxtPtr newctxt;
int ret = 0;
-
- if ((fallback == NULL) || (ctxt == NULL))
+
+ if ((fallback == NULL) || (fallback->type == XML_NAMESPACE_DECL) ||
+ (ctxt == NULL))
return(-1);
if (fallback->children != NULL) {
/*
@@ -2033,7 +2048,7 @@ xmlXIncludeLoadNode(xmlXIncludeCtxtPtr ctxt, int nr) {
href = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_HREF);
if (href == NULL) {
href = xmlStrdup(BAD_CAST ""); /* @@@@ href is now optional */
- if (href == NULL)
+ if (href == NULL)
return(-1);
}
parse = xmlXIncludeGetProp(ctxt, cur, XINCLUDE_PARSE);
@@ -2078,7 +2093,7 @@ xmlXIncludeLoadNode(xmlXIncludeCtxtPtr ctxt, int nr) {
xmlFree(eschref);
}
if (URI == NULL) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_HREF_URI, "failed build URL\n", NULL);
if (parse != NULL)
xmlFree(parse);
@@ -2111,7 +2126,7 @@ xmlXIncludeLoadNode(xmlXIncludeCtxtPtr ctxt, int nr) {
* Restore the original base before checking for fallback
*/
ctxt->base = oldBase;
-
+
if (ret < 0) {
xmlNodePtr children;
@@ -2129,14 +2144,14 @@ xmlXIncludeLoadNode(xmlXIncludeCtxtPtr ctxt, int nr) {
((xmlStrEqual(children->ns->href, XINCLUDE_NS)) ||
(xmlStrEqual(children->ns->href, XINCLUDE_OLD_NS)))) {
ret = xmlXIncludeLoadFallback(ctxt, children, nr);
- if (ret == 0)
+ if (ret == 0)
break;
}
children = children->next;
}
}
if (ret < 0) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_NO_FALLBACK,
"could not load %s, and no fallback was found\n",
URI);
@@ -2174,7 +2189,7 @@ xmlXIncludeIncludeNode(xmlXIncludeCtxtPtr ctxt, int nr) {
if ((nr < 0) || (nr >= ctxt->incNr))
return(-1);
cur = ctxt->incTab[nr]->ref;
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return(-1);
/*
@@ -2205,7 +2220,7 @@ xmlXIncludeIncludeNode(xmlXIncludeCtxtPtr ctxt, int nr) {
tmp = tmp->next;
}
if (nb_elem > 1) {
- xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
+ xmlXIncludeErr(ctxt, ctxt->incTab[nr]->ref,
XML_XINCLUDE_MULTIPLE_ROOT,
"XInclude error: would result in multiple root nodes\n",
NULL);
@@ -2252,7 +2267,7 @@ xmlXIncludeIncludeNode(xmlXIncludeCtxtPtr ctxt, int nr) {
}
}
-
+
return(0);
}
@@ -2349,7 +2364,7 @@ xmlXIncludeDoProcess(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr tree) {
int ret = 0;
int i, start;
- if ((doc == NULL) || (tree == NULL))
+ if ((doc == NULL) || (tree == NULL) || (tree->type == XML_NAMESPACE_DECL))
return(-1);
if (ctxt == NULL)
return(-1);
@@ -2463,7 +2478,8 @@ xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, int flags, void *data) {
xmlXIncludeCtxtPtr ctxt;
int ret = 0;
- if ((tree == NULL) || (tree->doc == NULL))
+ if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL) ||
+ (tree->doc == NULL))
return(-1);
ctxt = xmlXIncludeNewContext(tree->doc);
@@ -2548,7 +2564,8 @@ xmlXIncludeProcessTreeFlags(xmlNodePtr tree, int flags) {
xmlXIncludeCtxtPtr ctxt;
int ret = 0;
- if ((tree == NULL) || (tree->doc == NULL))
+ if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL) ||
+ (tree->doc == NULL))
return(-1);
ctxt = xmlXIncludeNewContext(tree->doc);
if (ctxt == NULL)
@@ -2592,7 +2609,8 @@ int
xmlXIncludeProcessNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) {
int ret = 0;
- if ((node == NULL) || (node->doc == NULL) || (ctxt == NULL))
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) ||
+ (node->doc == NULL) || (ctxt == NULL))
return(-1);
ret = xmlXIncludeDoProcess(ctxt, node->doc, node);
if ((ret >= 0) && (ctxt->nbErrors > 0))
diff --git a/xlink.c b/xlink.c
index 0d9be73..c0e4ff3 100644
--- a/xlink.c
+++ b/xlink.c
@@ -47,7 +47,7 @@
* Default setting and related functions *
* *
****************************************************************/
-
+
static xlinkHandlerPtr xlinkDefaultHandler = NULL;
static xlinkNodeDetectFunc xlinkDefaultDetect = NULL;
@@ -93,7 +93,7 @@ xlinkGetDefaultDetect (void) {
*
* Set the default xlink detection routine
*/
-void
+void
xlinkSetDefaultDetect (xlinkNodeDetectFunc func) {
xlinkDefaultDetect = func;
}
@@ -104,7 +104,7 @@ xlinkSetDefaultDetect (xlinkNodeDetectFunc func) {
* *
****************************************************************/
-
+
/**
* xlinkIsLink:
* @doc: the document containing the node
@@ -119,7 +119,7 @@ xlinkSetDefaultDetect (xlinkNodeDetectFunc func) {
* Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no
* link detected.
*/
-xlinkType
+xlinkType
xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) {
xmlChar *type = NULL, *role = NULL;
xlinkType ret = XLINK_TYPE_NONE;
@@ -150,14 +150,14 @@ xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) {
if (type != NULL) {
if (xmlStrEqual(type, BAD_CAST "simple")) {
ret = XLINK_TYPE_SIMPLE;
- } if (xmlStrEqual(type, BAD_CAST "extended")) {
+ } else if (xmlStrEqual(type, BAD_CAST "extended")) {
role = xmlGetNsProp(node, BAD_CAST "role", XLINK_NAMESPACE);
if (role != NULL) {
xmlNsPtr xlink;
xlink = xmlSearchNs(doc, node, XLINK_NAMESPACE);
if (xlink == NULL) {
/* Humm, fallback method */
- if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset"))
+ if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset"))
ret = XLINK_TYPE_EXTENDED_SET;
} else {
xmlChar buf[200];
diff --git a/xml2-config.1 b/xml2-config.1
index 8a25962..8cf9858 100644
--- a/xml2-config.1
+++ b/xml2-config.1
@@ -9,7 +9,6 @@ xml-config - script to get information about the installed version of GNOME-XML
linker flags that should be used to compile and link programs that use
\fIGNOME-XML\fP.
.SH OPTIONS
-.l
\fIxml-config\fP accepts the following options:
.TP 8
.B \-\-version
diff --git a/xml2-config.in b/xml2-config.in
index 2989325..1957486 100644
--- a/xml2-config.in
+++ b/xml2-config.in
@@ -86,12 +86,12 @@ while test $# -gt 0; do
then
if [ "@XML_LIBDIR@" = "-L/usr/lib" -o "@XML_LIBDIR@" = "-L/usr/lib64" ]
then
- echo @XML_LIBS@
+ echo @XML_LIBS@ @MODULE_PLATFORM_LIBS@
else
- echo @XML_LIBDIR@ @XML_LIBS@
+ echo @XML_LIBDIR@ @XML_LIBS@ @MODULE_PLATFORM_LIBS@
fi
else
- echo @XML_LIBDIR@ @XML_LIBS@ @WIN32_EXTRA_LIBADD@
+ echo @XML_LIBDIR@ @XML_LIBS@ @MODULE_PLATFORM_LIBS@ @WIN32_EXTRA_LIBADD@
fi
;;
diff --git a/xmlIO.c b/xmlIO.c
index 73a995d..e628ab0 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -96,6 +96,9 @@
#endif
#include <libxml/globals.h>
+#include "buf.h"
+#include "enc.h"
+
/* #define VERBOSE_FAILURE */
/* #define DEBUG_EXTERNAL_ENTITIES */
/* #define DEBUG_INPUT */
@@ -768,13 +771,21 @@ int
xmlCheckFilename (const char *path)
{
#ifdef HAVE_STAT
- struct stat stat_buffer;
+ struct stat stat_buffer;
#endif
- if (path == NULL)
- return(0);
+ if (path == NULL)
+ return(0);
#ifdef HAVE_STAT
#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
+ /*
+ * On Windows stat and wstat do not work with long pathname,
+ * which start with '\\?\'
+ */
+ if ((path[0] == '\\') && (path[1] == '\\') && (path[2] == '?') &&
+ (path[3] == '\\') )
+ return 1;
+
if (xmlWrapStat(path, &stat_buffer) == -1)
return 0;
#else
@@ -789,7 +800,14 @@ xmlCheckFilename (const char *path)
return 1;
}
-static int
+/**
+ * xmlNop:
+ *
+ * No Operation function, does nothing, no input
+ *
+ * Returns zero
+ */
+int
xmlNop(void) {
return(0);
}
@@ -876,7 +894,7 @@ xmlFileMatch (const char *filename ATTRIBUTE_UNUSED) {
*/
static void *
xmlFileOpen_real (const char *filename) {
- const char *path = NULL;
+ const char *path = filename;
FILE *fd;
if (filename == NULL)
@@ -906,11 +924,8 @@ xmlFileOpen_real (const char *filename) {
#else
path = &filename[5];
#endif
- } else
- path = filename;
+ }
- if (path == NULL)
- return(NULL);
if (!xmlCheckFilename(path))
return(NULL);
@@ -990,7 +1005,7 @@ xmlFileOpenW (const char *filename) {
#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
fd = xmlWrapOpen(path, 1);
#else
- fd = fopen(path, "wb");
+ fd = fopen(path, "wb");
#endif /* WIN32 */
if (fd == NULL) xmlIOErr(0, path);
@@ -1148,7 +1163,12 @@ xmlGzfileOpen_real (const char *filename) {
gzFile fd;
if (!strcmp(filename, "-")) {
- fd = gzdopen(dup(0), "rb");
+ int duped_fd = dup(fileno(stdin));
+ fd = gzdopen(duped_fd, "rb");
+ if (fd == Z_NULL && duped_fd >= 0) {
+ close(duped_fd); /* gzdOpen() does not close on failure */
+ }
+
return((void *) fd);
}
@@ -1222,7 +1242,12 @@ xmlGzfileOpenW (const char *filename, int compression) {
snprintf(mode, sizeof(mode), "wb%d", compression);
if (!strcmp(filename, "-")) {
- fd = gzdopen(dup(1), mode);
+ int duped_fd = dup(fileno(stdout));
+ fd = gzdopen(duped_fd, "rb");
+ if (fd == Z_NULL && duped_fd >= 0) {
+ close(duped_fd); /* gzdOpen() does not close on failure */
+ }
+
return((void *) fd);
}
@@ -1344,7 +1369,7 @@ xmlXzfileOpen_real (const char *filename) {
xzFile fd;
if (!strcmp(filename, "-")) {
- fd = __libxml2_xzdopen(dup(0), "rb");
+ fd = __libxml2_xzdopen(dup(fileno(stdin)), "rb");
return((void *) fd);
}
@@ -2036,8 +2061,8 @@ xmlIOHTTPCloseWrite( void * context, const char * http_mthd ) {
/* Pull the data out of the memory output buffer */
xmlOutputBufferPtr dctxt = ctxt->doc_buff;
- http_content = (char *)dctxt->buffer->content;
- content_lgth = dctxt->buffer->use;
+ http_content = (char *) xmlBufContent(dctxt->buffer);
+ content_lgth = xmlBufUse(dctxt->buffer);
}
if ( http_content == NULL ) {
@@ -2404,15 +2429,15 @@ xmlAllocParserInputBuffer(xmlCharEncoding enc) {
return(NULL);
}
memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer));
- ret->buffer = xmlBufferCreateSize(2 * xmlDefaultBufferSize);
+ ret->buffer = xmlBufCreateSize(2 * xmlDefaultBufferSize);
if (ret->buffer == NULL) {
xmlFree(ret);
return(NULL);
}
- ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT;
+ xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_DOUBLEIT);
ret->encoder = xmlGetCharEncodingHandler(enc);
if (ret->encoder != NULL)
- ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize);
+ ret->raw = xmlBufCreateSize(2 * xmlDefaultBufferSize);
else
ret->raw = NULL;
ret->readcallback = NULL;
@@ -2443,19 +2468,19 @@ xmlAllocOutputBuffer(xmlCharEncodingHandlerPtr encoder) {
return(NULL);
}
memset(ret, 0, (size_t) sizeof(xmlOutputBuffer));
- ret->buffer = xmlBufferCreate();
+ ret->buffer = xmlBufCreate();
if (ret->buffer == NULL) {
xmlFree(ret);
return(NULL);
}
/* try to avoid a performance problem with Windows realloc() */
- if (ret->buffer->alloc == XML_BUFFER_ALLOC_EXACT)
- ret->buffer->alloc = XML_BUFFER_ALLOC_DOUBLEIT;
+ if (xmlBufGetAllocationScheme(ret->buffer) == XML_BUFFER_ALLOC_EXACT)
+ xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_DOUBLEIT);
ret->encoder = encoder;
if (encoder != NULL) {
- ret->conv = xmlBufferCreateSize(4000);
+ ret->conv = xmlBufCreateSize(4000);
if (ret->conv == NULL) {
xmlFree(ret);
return(NULL);
@@ -2464,7 +2489,7 @@ xmlAllocOutputBuffer(xmlCharEncodingHandlerPtr encoder) {
/*
* This call is designed to initiate the encoder state
*/
- xmlCharEncOutFunc(encoder, ret->conv, NULL);
+ xmlCharEncOutput(ret, 1);
} else
ret->conv = NULL;
ret->writecallback = NULL;
@@ -2493,7 +2518,7 @@ xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder) {
return(NULL);
}
memset(ret, 0, (size_t) sizeof(xmlOutputBuffer));
- ret->buffer = xmlBufferCreate();
+ ret->buffer = xmlBufCreate();
if (ret->buffer == NULL) {
xmlFree(ret);
return(NULL);
@@ -2502,15 +2527,12 @@ xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder) {
/*
* For conversion buffers we use the special IO handling
- * We don't do that from the exported API to avoid confusing
- * user's code.
*/
- ret->buffer->alloc = XML_BUFFER_ALLOC_IO;
- ret->buffer->contentIO = ret->buffer->content;
+ xmlBufSetAllocationScheme(ret->buffer, XML_BUFFER_ALLOC_IO);
ret->encoder = encoder;
if (encoder != NULL) {
- ret->conv = xmlBufferCreateSize(4000);
+ ret->conv = xmlBufCreateSize(4000);
if (ret->conv == NULL) {
xmlFree(ret);
return(NULL);
@@ -2519,7 +2541,7 @@ xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder) {
/*
* This call is designed to initiate the encoder state
*/
- xmlCharEncOutFunc(encoder, ret->conv, NULL);
+ xmlCharEncOutput(ret, 1);
} else
ret->conv = NULL;
ret->writecallback = NULL;
@@ -2543,7 +2565,7 @@ xmlFreeParserInputBuffer(xmlParserInputBufferPtr in) {
if (in == NULL) return;
if (in->raw) {
- xmlBufferFree(in->raw);
+ xmlBufFree(in->raw);
in->raw = NULL;
}
if (in->encoder != NULL) {
@@ -2553,7 +2575,7 @@ xmlFreeParserInputBuffer(xmlParserInputBufferPtr in) {
in->closecallback(in->context);
}
if (in->buffer != NULL) {
- xmlBufferFree(in->buffer);
+ xmlBufFree(in->buffer);
in->buffer = NULL;
}
@@ -2585,14 +2607,14 @@ xmlOutputBufferClose(xmlOutputBufferPtr out)
}
written = out->written;
if (out->conv) {
- xmlBufferFree(out->conv);
+ xmlBufFree(out->conv);
out->conv = NULL;
}
if (out->encoder != NULL) {
xmlCharEncCloseFunc(out->encoder);
}
if (out->buffer != NULL) {
- xmlBufferFree(out->buffer);
+ xmlBufFree(out->buffer);
out->buffer = NULL;
}
@@ -2661,6 +2683,12 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
#endif
}
#endif
+#ifdef HAVE_LZMA_H
+ if ((xmlInputCallbackTable[i].opencallback == xmlXzfileOpen) &&
+ (strcmp(URI, "-") != 0)) {
+ ret->compressed = __libxml2_xzcompressed(context);
+ }
+#endif
}
else
xmlInputCallbackTable[i].closecallback (context);
@@ -2922,6 +2950,39 @@ xmlOutputBufferCreateBuffer(xmlBufferPtr buffer,
return(ret);
}
+/**
+ * xmlOutputBufferGetContent:
+ * @out: an xmlOutputBufferPtr
+ *
+ * Gives a pointer to the data currently held in the output buffer
+ *
+ * Returns a pointer to the data or NULL in case of error
+ */
+const xmlChar *
+xmlOutputBufferGetContent(xmlOutputBufferPtr out) {
+ if ((out == NULL) || (out->buffer == NULL))
+ return(NULL);
+
+ return(xmlBufContent(out->buffer));
+}
+
+/**
+ * xmlOutputBufferGetSize:
+ * @out: an xmlOutputBufferPtr
+ *
+ * Gives the length of the data currently held in the output buffer
+ *
+ * Returns 0 in case or error or no data is held, the size otherwise
+ */
+size_t
+xmlOutputBufferGetSize(xmlOutputBufferPtr out) {
+ if ((out == NULL) || (out->buffer == NULL))
+ return(0);
+
+ return(xmlBufUse(out->buffer));
+}
+
+
#endif /* LIBXML_OUTPUT_ENABLED */
/**
@@ -2974,7 +3035,7 @@ xmlParserInputBufferCreateMem(const char *mem, int size, xmlCharEncoding enc) {
ret->context = (void *) mem;
ret->readcallback = (xmlInputReadCallback) xmlNop;
ret->closecallback = NULL;
- errcode = xmlBufferAdd(ret->buffer, (const xmlChar *) mem, size);
+ errcode = xmlBufAdd(ret->buffer, (const xmlChar *) mem, size);
if (errcode != 0) {
xmlFree(ret);
return(NULL);
@@ -3011,14 +3072,14 @@ xmlParserInputBufferCreateStatic(const char *mem, int size,
return(NULL);
}
memset(ret, 0, (size_t) sizeof(xmlParserInputBuffer));
- ret->buffer = xmlBufferCreateStatic((void *)mem, (size_t) size);
+ ret->buffer = xmlBufCreateStatic((void *)mem, (size_t) size);
if (ret->buffer == NULL) {
xmlFree(ret);
return(NULL);
}
ret->encoder = xmlGetCharEncodingHandler(enc);
if (ret->encoder != NULL)
- ret->raw = xmlBufferCreateSize(2 * xmlDefaultBufferSize);
+ ret->raw = xmlBufCreateSize(2 * xmlDefaultBufferSize);
else
ret->raw = NULL;
ret->compressed = -1;
@@ -3187,33 +3248,33 @@ xmlParserInputBufferPush(xmlParserInputBufferPtr in,
* Store the data in the incoming raw buffer
*/
if (in->raw == NULL) {
- in->raw = xmlBufferCreate();
+ in->raw = xmlBufCreate();
}
- ret = xmlBufferAdd(in->raw, (const xmlChar *) buf, len);
+ ret = xmlBufAdd(in->raw, (const xmlChar *) buf, len);
if (ret != 0)
return(-1);
/*
* convert as much as possible to the parser reading buffer.
*/
- use = in->raw->use;
- nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw);
+ use = xmlBufUse(in->raw);
+ nbchars = xmlCharEncInput(in, 1);
if (nbchars < 0) {
xmlIOErr(XML_IO_ENCODER, NULL);
in->error = XML_IO_ENCODER;
return(-1);
}
- in->rawconsumed += (use - in->raw->use);
+ in->rawconsumed += (use - xmlBufUse(in->raw));
} else {
nbchars = len;
- ret = xmlBufferAdd(in->buffer, (xmlChar *) buf, nbchars);
+ ret = xmlBufAdd(in->buffer, (xmlChar *) buf, nbchars);
if (ret != 0)
return(-1);
}
#ifdef DEBUG_INPUT
xmlGenericError(xmlGenericErrorContext,
"I/O: pushed %d chars, buffer %d/%d\n",
- nbchars, in->buffer->use, in->buffer->size);
+ nbchars, xmlBufUse(in->buffer), xmlBufLength(in->buffer));
#endif
return(nbchars);
}
@@ -3251,29 +3312,23 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) {
char *buffer = NULL;
int res = 0;
int nbchars = 0;
- int buffree;
- unsigned int needSize;
if ((in == NULL) || (in->error)) return(-1);
if ((len <= MINLEN) && (len != 4))
len = MINLEN;
- buffree = in->buffer->size - in->buffer->use;
- if (buffree <= 0) {
+ if (xmlBufAvail(in->buffer) <= 0) {
xmlIOErr(XML_IO_BUFFER_FULL, NULL);
in->error = XML_IO_BUFFER_FULL;
return(-1);
}
- needSize = in->buffer->use + len + 1;
- if (needSize > in->buffer->size){
- if (!xmlBufferResize(in->buffer, needSize)){
- xmlIOErrMemory("growing input buffer");
- in->error = XML_ERR_NO_MEMORY;
- return(-1);
- }
+ if (xmlBufGrow(in->buffer, len + 1) < 0) {
+ xmlIOErrMemory("growing input buffer");
+ in->error = XML_ERR_NO_MEMORY;
+ return(-1);
}
- buffer = (char *)&in->buffer->content[in->buffer->use];
+ buffer = (char *)xmlBufEnd(in->buffer);
/*
* Call the read method for this I/O type.
@@ -3290,6 +3345,17 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) {
if (res < 0) {
return(-1);
}
+
+ /*
+ * try to establish compressed status of input if not done already
+ */
+ if (in->compressed == -1) {
+#ifdef HAVE_LZMA_H
+ if (in->readcallback == xmlXzfileRead)
+ in->compressed = __libxml2_xzcompressed(in->context);
+#endif
+ }
+
len = res;
if (in->encoder != NULL) {
unsigned int use;
@@ -3298,32 +3364,31 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) {
* Store the data in the incoming raw buffer
*/
if (in->raw == NULL) {
- in->raw = xmlBufferCreate();
+ in->raw = xmlBufCreate();
}
- res = xmlBufferAdd(in->raw, (const xmlChar *) buffer, len);
+ res = xmlBufAdd(in->raw, (const xmlChar *) buffer, len);
if (res != 0)
return(-1);
/*
* convert as much as possible to the parser reading buffer.
*/
- use = in->raw->use;
- nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw);
+ use = xmlBufUse(in->raw);
+ nbchars = xmlCharEncInput(in, 1);
if (nbchars < 0) {
xmlIOErr(XML_IO_ENCODER, NULL);
in->error = XML_IO_ENCODER;
return(-1);
}
- in->rawconsumed += (use - in->raw->use);
+ in->rawconsumed += (use - xmlBufUse(in->raw));
} else {
nbchars = len;
- in->buffer->use += nbchars;
- buffer[nbchars] = 0;
+ xmlBufAddLen(in->buffer, nbchars);
}
#ifdef DEBUG_INPUT
xmlGenericError(xmlGenericErrorContext,
- "I/O: read %d chars, buffer %d/%d\n",
- nbchars, in->buffer->use, in->buffer->size);
+ "I/O: read %d chars, buffer %d\n",
+ nbchars, xmlBufUse(in->buffer));
#endif
return(nbchars);
}
@@ -3345,8 +3410,7 @@ xmlParserInputBufferRead(xmlParserInputBufferPtr in, int len) {
if ((in == NULL) || (in->error)) return(-1);
if (in->readcallback != NULL)
return(xmlParserInputBufferGrow(in, len));
- else if ((in->buffer != NULL) &&
- (in->buffer->alloc == XML_BUFFER_ALLOC_IMMUTABLE))
+ else if (xmlBufGetAllocationScheme(in->buffer) == XML_BUFFER_ALLOC_IMMUTABLE)
return(0);
else
return(-1);
@@ -3391,30 +3455,30 @@ xmlOutputBufferWrite(xmlOutputBufferPtr out, int len, const char *buf) {
* Store the data in the incoming raw buffer
*/
if (out->conv == NULL) {
- out->conv = xmlBufferCreate();
+ out->conv = xmlBufCreate();
}
- ret = xmlBufferAdd(out->buffer, (const xmlChar *) buf, chunk);
+ ret = xmlBufAdd(out->buffer, (const xmlChar *) buf, chunk);
if (ret != 0)
return(-1);
- if ((out->buffer->use < MINLEN) && (chunk == len))
+ if ((xmlBufUse(out->buffer) < MINLEN) && (chunk == len))
goto done;
/*
* convert as much as possible to the parser reading buffer.
*/
- ret = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer);
+ ret = xmlCharEncOutput(out, 0);
if ((ret < 0) && (ret != -3)) {
xmlIOErr(XML_IO_ENCODER, NULL);
out->error = XML_IO_ENCODER;
return(-1);
}
- nbchars = out->conv->use;
+ nbchars = xmlBufUse(out->conv);
} else {
- ret = xmlBufferAdd(out->buffer, (const xmlChar *) buf, chunk);
+ ret = xmlBufAdd(out->buffer, (const xmlChar *) buf, chunk);
if (ret != 0)
return(-1);
- nbchars = out->buffer->use;
+ nbchars = xmlBufUse(out->buffer);
}
buf += chunk;
len -= chunk;
@@ -3428,14 +3492,14 @@ xmlOutputBufferWrite(xmlOutputBufferPtr out, int len, const char *buf) {
*/
if (out->encoder != NULL) {
ret = out->writecallback(out->context,
- (const char *)out->conv->content, nbchars);
+ (const char *)xmlBufContent(out->conv), nbchars);
if (ret >= 0)
- xmlBufferShrink(out->conv, ret);
+ xmlBufShrink(out->conv, ret);
} else {
ret = out->writecallback(out->context,
- (const char *)out->buffer->content, nbchars);
+ (const char *)xmlBufContent(out->buffer), nbchars);
if (ret >= 0)
- xmlBufferShrink(out->buffer, ret);
+ xmlBufShrink(out->buffer, ret);
}
if (ret < 0) {
xmlIOErr(XML_IO_WRITE, NULL);
@@ -3479,7 +3543,7 @@ xmlEscapeContent(unsigned char* out, int *outlen,
inend = in + (*inlen);
while ((in < inend) && (out < outend)) {
- if (*in == '<') {
+ if (*in == '<') {
if (outend - out < 4) break;
*out++ = '&';
*out++ = 'l';
@@ -3543,7 +3607,8 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
if ((out == NULL) || (out->error) || (str == NULL) ||
(out->buffer == NULL) ||
- (out->buffer->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) return(-1);
+ (xmlBufGetAllocationScheme(out->buffer) == XML_BUFFER_ALLOC_IMMUTABLE))
+ return(-1);
len = strlen((const char *)str);
if (len < 0) return(0);
if (out->error) return(-1);
@@ -3556,14 +3621,14 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
* how many bytes to consume and how many bytes to store.
*/
cons = len;
- chunk = (out->buffer->size - out->buffer->use) - 1;
+ chunk = xmlBufAvail(out->buffer) - 1;
/*
* make sure we have enough room to save first, if this is
* not the case force a flush, but make sure we stay in the loop
*/
if (chunk < 40) {
- if (xmlBufferGrow(out->buffer, out->buffer->size + 100) < 0)
+ if (xmlBufGrow(out->buffer, 100) < 0)
return(-1);
oldwritten = -1;
continue;
@@ -3577,36 +3642,33 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
* Store the data in the incoming raw buffer
*/
if (out->conv == NULL) {
- out->conv = xmlBufferCreate();
+ out->conv = xmlBufCreate();
}
- ret = escaping(out->buffer->content + out->buffer->use ,
+ ret = escaping(xmlBufEnd(out->buffer) ,
&chunk, str, &cons);
if ((ret < 0) || (chunk == 0)) /* chunk==0 => nothing done */
return(-1);
- out->buffer->use += chunk;
- out->buffer->content[out->buffer->use] = 0;
+ xmlBufAddLen(out->buffer, chunk);
- if ((out->buffer->use < MINLEN) && (cons == len))
+ if ((xmlBufUse(out->buffer) < MINLEN) && (cons == len))
goto done;
/*
* convert as much as possible to the output buffer.
*/
- ret = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer);
+ ret = xmlCharEncOutput(out, 0);
if ((ret < 0) && (ret != -3)) {
xmlIOErr(XML_IO_ENCODER, NULL);
out->error = XML_IO_ENCODER;
return(-1);
}
- nbchars = out->conv->use;
+ nbchars = xmlBufUse(out->conv);
} else {
- ret = escaping(out->buffer->content + out->buffer->use ,
- &chunk, str, &cons);
+ ret = escaping(xmlBufEnd(out->buffer), &chunk, str, &cons);
if ((ret < 0) || (chunk == 0)) /* chunk==0 => nothing done */
return(-1);
- out->buffer->use += chunk;
- out->buffer->content[out->buffer->use] = 0;
- nbchars = out->buffer->use;
+ xmlBufAddLen(out->buffer, chunk);
+ nbchars = xmlBufUse(out->buffer);
}
str += cons;
len -= cons;
@@ -3620,14 +3682,14 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
*/
if (out->encoder != NULL) {
ret = out->writecallback(out->context,
- (const char *)out->conv->content, nbchars);
+ (const char *)xmlBufContent(out->conv), nbchars);
if (ret >= 0)
- xmlBufferShrink(out->conv, ret);
+ xmlBufShrink(out->conv, ret);
} else {
ret = out->writecallback(out->context,
- (const char *)out->buffer->content, nbchars);
+ (const char *)xmlBufContent(out->buffer), nbchars);
if (ret >= 0)
- xmlBufferShrink(out->buffer, ret);
+ xmlBufShrink(out->buffer, ret);
}
if (ret < 0) {
xmlIOErr(XML_IO_WRITE, NULL);
@@ -3635,8 +3697,8 @@ xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
return(ret);
}
out->written += ret;
- } else if (out->buffer->size - out->buffer->use < MINLEN) {
- xmlBufferResize(out->buffer, out->buffer->size + MINLEN);
+ } else if (xmlBufAvail(out->buffer) < MINLEN) {
+ xmlBufGrow(out->buffer, MINLEN);
}
written += nbchars;
} while ((len > 0) && (oldwritten != written));
@@ -3694,14 +3756,16 @@ xmlOutputBufferFlush(xmlOutputBufferPtr out) {
*/
if ((out->conv != NULL) && (out->encoder != NULL)) {
/*
- * convert as much as possible to the parser reading buffer.
+ * convert as much as possible to the parser output buffer.
*/
- nbchars = xmlCharEncOutFunc(out->encoder, out->conv, out->buffer);
- if (nbchars < 0) {
- xmlIOErr(XML_IO_ENCODER, NULL);
- out->error = XML_IO_ENCODER;
- return(-1);
- }
+ do {
+ nbchars = xmlCharEncOutput(out, 0);
+ if (nbchars < 0) {
+ xmlIOErr(XML_IO_ENCODER, NULL);
+ out->error = XML_IO_ENCODER;
+ return(-1);
+ }
+ } while (nbchars);
}
/*
@@ -3710,14 +3774,16 @@ xmlOutputBufferFlush(xmlOutputBufferPtr out) {
if ((out->conv != NULL) && (out->encoder != NULL) &&
(out->writecallback != NULL)) {
ret = out->writecallback(out->context,
- (const char *)out->conv->content, out->conv->use);
+ (const char *)xmlBufContent(out->conv),
+ xmlBufUse(out->conv));
if (ret >= 0)
- xmlBufferShrink(out->conv, ret);
+ xmlBufShrink(out->conv, ret);
} else if (out->writecallback != NULL) {
ret = out->writecallback(out->context,
- (const char *)out->buffer->content, out->buffer->use);
+ (const char *)xmlBufContent(out->buffer),
+ xmlBufUse(out->buffer));
if (ret >= 0)
- xmlBufferShrink(out->buffer, ret);
+ xmlBufShrink(out->buffer, ret);
}
if (ret < 0) {
xmlIOErr(XML_IO_FLUSH, NULL);
diff --git a/xmlcatalog.c b/xmlcatalog.c
index 489509f..b9ed6a4 100644
--- a/xmlcatalog.c
+++ b/xmlcatalog.c
@@ -47,16 +47,16 @@ static char *filename = NULL;
#endif
/************************************************************************
- * *
- * Shell Interface *
- * *
+ * *
+ * Shell Interface *
+ * *
************************************************************************/
/**
* xmlShellReadline:
* @prompt: the prompt value
*
* Read a string
- *
+ *
* Returns a pointer to it or NULL on EOF the caller is expected to
* free the returned string.
*/
@@ -157,7 +157,7 @@ static void usershell(void) {
i++;
cur++;
}
- } else if (*cur == '"') {
+ } else if (*cur == '"') {
cur++;
argv[i] = cur;
while ((*cur != 0) && (*cur != '"')) cur++;
@@ -181,12 +181,13 @@ static void usershell(void) {
/*
* start interpreting the command
*/
- if (!strcmp(command, "exit"))
- break;
- if (!strcmp(command, "quit"))
- break;
- if (!strcmp(command, "bye"))
+ if (!strcmp(command, "exit") ||
+ !strcmp(command, "quit") ||
+ !strcmp(command, "bye")) {
+ free(cmdline);
break;
+ }
+
if (!strcmp(command, "public")) {
if (nbargs != 1) {
printf("public requires 1 arguments\n");
@@ -296,15 +297,15 @@ static void usershell(void) {
printf("\tdebug: increase the verbosity level\n");
printf("\tquiet: decrease the verbosity level\n");
printf("\texit: quit the shell\n");
- }
+ }
free(cmdline); /* not xmlFree here ! */
}
}
/************************************************************************
- * *
- * Main *
- * *
+ * *
+ * Main *
+ * *
************************************************************************/
static void usage(const char *name) {
/* split into 2 printf's to avoid overly long string (gcc warning) */
@@ -507,7 +508,7 @@ int main(int argc, char **argv) {
exit_value = 2;
noout = 0;
} else {
-
+
xmlACatalogDump(super, out);
fclose(out);
}
@@ -544,14 +545,14 @@ int main(int argc, char **argv) {
}
}
}
-
+
} else if (shell) {
usershell();
} else {
for (i++; i < argc; i++) {
xmlURIPtr uri;
xmlChar *ans;
-
+
uri = xmlParseURI(argv[i]);
if (uri == NULL) {
ans = xmlCatalogResolvePublic((const xmlChar *) argv[i]);
diff --git a/xmllint.c b/xmllint.c
index 40a2194..b297ded 100644
--- a/xmllint.c
+++ b/xmllint.c
@@ -168,8 +168,9 @@ static int nodefdtd = 0;
#endif
#ifdef LIBXML_PUSH_ENABLED
static int push = 0;
+static int pushsize = 4096;
#endif /* LIBXML_PUSH_ENABLED */
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
static int memory = 0;
#endif
static int testIO = 0;
@@ -209,7 +210,7 @@ static xmlStreamCtxtPtr patstream = NULL;
#ifdef LIBXML_XPATH_ENABLED
static const char *xpathquery = NULL;
#endif
-static int options = XML_PARSE_COMPACT;
+static int options = XML_PARSE_COMPACT | XML_PARSE_BIG_LINES;
static int sax = 0;
static int oldxml10 = 0;
@@ -1669,6 +1670,7 @@ testSAX(const char *filename) {
(xmlSchemaValidityErrorFunc) fprintf,
(xmlSchemaValidityWarningFunc) fprintf,
stderr);
+ xmlSchemaValidateSetFilename(vctxt, filename);
ret = xmlSchemaValidateStream(vctxt, buf, 0, handler,
(void *)user_data);
@@ -1823,7 +1825,7 @@ static void processNode(xmlTextReaderPtr reader) {
static void streamFile(char *filename) {
xmlTextReaderPtr reader;
int ret;
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
int fd = -1;
struct stat info;
const char *base = NULL;
@@ -1835,8 +1837,12 @@ static void streamFile(char *filename) {
if ((fd = open(filename, O_RDONLY)) < 0)
return;
base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
- if (base == (void *) MAP_FAILED)
+ if (base == (void *) MAP_FAILED) {
+ close(fd);
+ fprintf(stderr, "mmap failure for file %s\n", filename);
+ progresult = XMLLINT_ERR_RDFILE;
return;
+ }
reader = xmlReaderForMemory(base, info.st_size, filename,
NULL, options);
@@ -1873,7 +1879,8 @@ static void streamFile(char *filename) {
xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1);
else
#endif /* LIBXML_VALID_ENABLED */
- xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1);
+ if (loaddtd)
+ xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1);
#ifdef LIBXML_SCHEMAS_ENABLED
if (relaxng != NULL) {
if ((timing) && (!repeat)) {
@@ -1974,7 +1981,7 @@ static void streamFile(char *filename) {
patstream = NULL;
}
#endif
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
if (memory) {
xmlFreeParserInputBuffer(input);
munmap((char *) base, info.st_size);
@@ -2139,7 +2146,7 @@ static void doXPathQuery(xmlDocPtr doc, const char *query) {
progresult = XMLLINT_ERR_MEM;
return;
}
- ctxt->node = xmlDocGetRootElement(doc);
+ ctxt->node = (xmlNodePtr) doc;
res = xmlXPathEval(BAD_CAST query, ctxt);
xmlXPathFreeContext(ctxt);
@@ -2187,21 +2194,22 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
f = fopen(filename, "rb");
+#elif defined(__OS400__)
+ f = fopen(filename, "rb");
#else
f = fopen(filename, "r");
#endif
if (f != NULL) {
- int res, size = 3;
+ int res;
char chars[4096];
htmlParserCtxtPtr ctxt;
- /* if (repeat) */
- size = 4096;
res = fread(chars, 1, 4, f);
if (res > 0) {
ctxt = htmlCreatePushParserCtxt(NULL, NULL,
chars, res, filename, XML_CHAR_ENCODING_NONE);
- while ((res = fread(chars, 1, size, f)) > 0) {
+ xmlCtxtUseOptions(ctxt, options);
+ while ((res = fread(chars, 1, pushsize, f)) > 0) {
htmlParseChunk(ctxt, chars, res, 0);
}
htmlParseChunk(ctxt, chars, 0, 1);
@@ -2212,7 +2220,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
}
}
#endif /* LIBXML_PUSH_ENABLED */
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
else if ((html) && (memory)) {
int fd;
struct stat info;
@@ -2222,8 +2230,12 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if ((fd = open(filename, O_RDONLY)) < 0)
return;
base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
- if (base == (void *) MAP_FAILED)
+ if (base == (void *) MAP_FAILED) {
+ close(fd);
+ fprintf(stderr, "mmap failure for file %s\n", filename);
+ progresult = XMLLINT_ERR_RDFILE;
return;
+ }
doc = htmlReadMemory((char *) base, info.st_size, filename,
NULL, options);
@@ -2250,6 +2262,8 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
} else {
#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
f = fopen(filename, "rb");
+#elif defined(__OS400__)
+ f = fopen(filename, "rb");
#else
f = fopen(filename, "r");
#endif
@@ -2291,6 +2305,8 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
f = fopen(filename, "rb");
+#elif defined(__OS400__)
+ f = fopen(filename, "rb");
#else
f = fopen(filename, "r");
#endif
@@ -2327,7 +2343,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if (rectxt == NULL)
xmlFreeParserCtxt(ctxt);
}
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
} else if (memory) {
int fd;
struct stat info;
@@ -2337,8 +2353,12 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
if ((fd = open(filename, O_RDONLY)) < 0)
return;
base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ;
- if (base == (void *) MAP_FAILED)
+ if (base == (void *) MAP_FAILED) {
+ close(fd);
+ fprintf(stderr, "mmap failure for file %s\n", filename);
+ progresult = XMLLINT_ERR_RDFILE;
return;
+ }
if (rectxt == NULL)
doc = xmlReadMemory((char *) base, info.st_size,
@@ -2560,7 +2580,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
fprintf(stderr, "Failed to canonicalize\n");
progresult = XMLLINT_ERR_OUT;
}
- } else if (canonical) {
+ } else if (canonical_11) {
xmlChar *result = NULL;
int size;
@@ -2591,7 +2611,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
}
} else
#endif
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
if (memory) {
xmlChar *result;
int len;
@@ -2619,7 +2639,7 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
}
} else
-#endif /* HAVE_SYS_MMAN_H */
+#endif /* HAVE_MMAP */
if (compress) {
xmlSaveFile(output ? output : "-", doc);
} else if (oldout) {
@@ -2989,7 +3009,7 @@ static void usage(const char *name) {
printf("\t--noenc : ignore any encoding specified inside the document\n");
printf("\t--noout : don't output the result tree\n");
printf("\t--path 'paths': provide a set of paths for resources\n");
- printf("\t--load-trace : print trace of all external entites loaded\n");
+ printf("\t--load-trace : print trace of all external entities loaded\n");
printf("\t--nonet : refuse to fetch DTDs or entities over network\n");
printf("\t--nocompact : do not generate compact text nodes\n");
printf("\t--htmlout : output results as HTML\n");
@@ -3016,8 +3036,9 @@ static void usage(const char *name) {
#endif
#ifdef LIBXML_PUSH_ENABLED
printf("\t--push : use the push mode of the parser\n");
+ printf("\t--pushsmall : use the push mode of the parser using tiny increments\n");
#endif /* LIBXML_PUSH_ENABLED */
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
printf("\t--memory : parse from memory\n");
#endif
printf("\t--maxmem nbbytes : limits memory allocation to nbbytes bytes\n");
@@ -3075,7 +3096,7 @@ static void usage(const char *name) {
printf("\t--sax: do not build a tree but work just at the SAX level\n");
printf("\t--oldxml10: use XML-1.0 parsing rules before the 5th edition\n");
#ifdef LIBXML_XPATH_ENABLED
- printf("\t--xpath expr: evaluate the XPath expression, inply --noout\n");
+ printf("\t--xpath expr: evaluate the XPath expression, imply --noout\n");
#endif
printf("\nLibxml project home page: http://xmlsoft.org/\n");
@@ -3085,6 +3106,10 @@ static void usage(const char *name) {
static void registerNode(xmlNodePtr node)
{
node->_private = malloc(sizeof(long));
+ if (node->_private == NULL) {
+ fprintf(stderr, "Out of memory in xmllint:registerNode()\n");
+ exit(XMLLINT_ERR_MEM);
+ }
*(long*)node->_private = (long) 0x81726354;
nbregister++;
}
@@ -3246,8 +3271,13 @@ main(int argc, char **argv) {
else if ((!strcmp(argv[i], "-push")) ||
(!strcmp(argv[i], "--push")))
push++;
+ else if ((!strcmp(argv[i], "-pushsmall")) ||
+ (!strcmp(argv[i], "--pushsmall"))) {
+ push++;
+ pushsize = 10;
+ }
#endif /* LIBXML_PUSH_ENABLED */
-#ifdef HAVE_SYS_MMAN_H
+#ifdef HAVE_MMAP
else if ((!strcmp(argv[i], "-memory")) ||
(!strcmp(argv[i], "--memory")))
memory++;
@@ -3339,8 +3369,9 @@ main(int argc, char **argv) {
}
else if ((!strcmp(argv[i], "-noblanks")) ||
(!strcmp(argv[i], "--noblanks"))) {
- noblanks++;
- xmlKeepBlanksDefault(0);
+ noblanks++;
+ xmlKeepBlanksDefault(0);
+ options |= XML_PARSE_NOBLANKS;
}
else if ((!strcmp(argv[i], "-maxmem")) ||
(!strcmp(argv[i], "--maxmem"))) {
@@ -3364,11 +3395,13 @@ main(int argc, char **argv) {
(!strcmp(argv[i], "--pretty"))) {
i++;
#ifdef LIBXML_OUTPUT_ENABLED
- format = atoi(argv[i]);
- if (format == 1) {
- noblanks++;
- xmlKeepBlanksDefault(0);
- }
+ if (argv[i] != NULL) {
+ format = atoi(argv[i]);
+ if (format == 1) {
+ noblanks++;
+ xmlKeepBlanksDefault(0);
+ }
+ }
#endif /* LIBXML_OUTPUT_ENABLED */
}
#ifdef LIBXML_READER_ENABLED
diff --git a/xmlmemory.c b/xmlmemory.c
index a0ab953..a3dc737 100644
--- a/xmlmemory.c
+++ b/xmlmemory.c
@@ -58,7 +58,7 @@ void xmlMallocBreakpoint(void);
/************************************************************************
* *
- * Macros, variables and associated types *
+ * Macros, variables and associated types *
* *
************************************************************************/
@@ -313,7 +313,7 @@ xmlMemMalloc(size_t size)
void *
xmlReallocLoc(void *ptr,size_t size, const char * file, int line)
{
- MEMHDR *p;
+ MEMHDR *p, *tmp;
unsigned long number;
#ifdef DEBUG_MEMORY
size_t oldsize;
@@ -344,10 +344,12 @@ xmlReallocLoc(void *ptr,size_t size, const char * file, int line)
#endif
xmlMutexUnlock(xmlMemMutex);
- p = (MEMHDR *) realloc(p,RESERVE_SIZE+size);
- if (!p) {
+ tmp = (MEMHDR *) realloc(p,RESERVE_SIZE+size);
+ if (!tmp) {
+ free(p);
goto error;
}
+ p = tmp;
if (xmlMemTraceBlockAt == ptr) {
xmlGenericError(xmlGenericErrorContext,
"%p : Realloced(%lu -> %lu) Ok\n",
@@ -512,10 +514,7 @@ xmlMemStrdupLoc(const char *str, const char *file, int line)
if (xmlMemStopAtBlock == p->mh_number) xmlMallocBreakpoint();
- if (s != NULL)
- strcpy(s,str);
- else
- goto error;
+ strcpy(s,str);
TEST_POINT
@@ -583,13 +582,15 @@ xmlMemBlocks(void) {
static void
xmlMemContentShow(FILE *fp, MEMHDR *p)
{
- int i,j,k,len = p->mh_size;
- const char *buf = (const char *) HDR_2_CLIENT(p);
+ int i,j,k,len;
+ const char *buf;
if (p == NULL) {
fprintf(fp, " NULL");
return;
}
+ len = p->mh_size;
+ buf = (const char *) HDR_2_CLIENT(p);
for (i = 0;i < len;i++) {
if (buf[i] == 0) break;
diff --git a/xmlmodule.c b/xmlmodule.c
index 9ffd610..50ed666 100644
--- a/xmlmodule.c
+++ b/xmlmodule.c
@@ -30,7 +30,7 @@ static int xmlModulePlatformSymbol(void *handle, const char *name, void **result
/************************************************************************
* *
- * module memory error handler *
+ * module memory error handler *
* *
************************************************************************/
@@ -61,6 +61,10 @@ xmlModuleErrMemory(xmlModulePtr module, const char *extra)
* @options: a set of xmlModuleOption
*
* Opens a module/shared library given its name or path
+ * NOTE: that due to portability issues, behaviour can only be
+ * guaranteed with @name using ASCII. We canot guarantee that
+ * an UTF-8 string would work, which is why name is a const char *
+ * and not a const xmlChar * .
* TODO: options are not yet implemented.
*
* Returns a handle for the module or NULL in case of error
@@ -99,6 +103,10 @@ xmlModuleOpen(const char *name, int options ATTRIBUTE_UNUSED)
* @symbol: the resulting symbol address
*
* Lookup for a symbol address in the given module
+ * NOTE: that due to portability issues, behaviour can only be
+ * guaranteed with @name using ASCII. We canot guarantee that
+ * an UTF-8 string would work, which is why name is a const char *
+ * and not a const xmlChar * .
*
* Returns 0 if the symbol was found, or -1 in case of error
*/
@@ -106,8 +114,8 @@ int
xmlModuleSymbol(xmlModulePtr module, const char *name, void **symbol)
{
int rc = -1;
-
- if ((NULL == module) || (symbol == NULL)) {
+
+ if ((NULL == module) || (symbol == NULL) || (name == NULL)) {
__xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_MODULE,
XML_MODULE_OPEN, XML_ERR_FATAL, NULL, 0, 0,
NULL, NULL, 0, 0, "null parameter\n");
@@ -300,7 +308,7 @@ xmlModulePlatformSymbol(void *handle, const char *name, void **symbol)
static void *
xmlModulePlatformOpen(const char *name)
{
- return LoadLibrary(name);
+ return LoadLibraryA(name);
}
/*
@@ -326,7 +334,14 @@ xmlModulePlatformClose(void *handle)
static int
xmlModulePlatformSymbol(void *handle, const char *name, void **symbol)
{
+#ifdef _WIN32_WCE
+ /*
+ * GetProcAddressA seems only available on WinCE
+ */
+ *symbol = GetProcAddressA(handle, name);
+#else
*symbol = GetProcAddress(handle, name);
+#endif
return (NULL == *symbol) ? -1 : 0;
}
diff --git a/xmlreader.c b/xmlreader.c
index 77ac71b..f19e123 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -44,14 +44,15 @@
#include <libxml/pattern.h>
#endif
+#include "buf.h"
+
#define MAX_ERR_MSG_SIZE 64000
/*
* The following VA_COPY was coded following an example in
* the Samba project. It may not be sufficient for some
- * esoteric implementations of va_list (i.e. it may need
- * something involving a memcpy) but (hopefully) will be
- * sufficient for libxml2.
+ * esoteric implementations of va_list but (hopefully) will
+ * be sufficient for libxml2.
*/
#ifndef VA_COPY
#ifdef HAVE_VA_COPY
@@ -60,7 +61,12 @@
#ifdef HAVE___VA_COPY
#define VA_COPY(dest,src) __va_copy(dest, src)
#else
- #define VA_COPY(dest,src) (dest) = (src)
+ #ifndef VA_LIST_IS_ARRAY
+ #define VA_COPY(dest,src) (dest) = (src)
+ #else
+ #include <string.h>
+ #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list))
+ #endif
#endif
#endif
#endif
@@ -135,7 +141,7 @@ struct _xmlTextReader {
int depth; /* depth of the current node */
xmlNodePtr faketext;/* fake xmlNs chld */
int preserve;/* preserve the resulting document */
- xmlBufferPtr buffer; /* used to return const xmlChar * */
+ xmlBufPtr buffer; /* used to return const xmlChar * */
xmlDictPtr dict; /* the context dictionnary */
/* entity stack when traversing entities content */
@@ -280,7 +286,10 @@ static void
xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) {
xmlDictPtr dict;
- dict = reader->ctxt->dict;
+ if ((reader != NULL) && (reader->ctxt != NULL))
+ dict = reader->ctxt->dict;
+ else
+ dict = NULL;
if (cur == NULL) return;
if ((__xmlRegisterCallbacks) && (xmlDeregisterNodeDefaultValue))
@@ -317,7 +326,7 @@ xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) {
static void
xmlTextReaderFreePropList(xmlTextReaderPtr reader, xmlAttrPtr cur) {
xmlAttrPtr next;
- if (cur == NULL) return;
+
while (cur != NULL) {
next = cur->next;
xmlTextReaderFreeProp(reader, cur);
@@ -338,7 +347,10 @@ xmlTextReaderFreeNodeList(xmlTextReaderPtr reader, xmlNodePtr cur) {
xmlNodePtr next;
xmlDictPtr dict;
- dict = reader->ctxt->dict;
+ if ((reader != NULL) && (reader->ctxt != NULL))
+ dict = reader->ctxt->dict;
+ else
+ dict = NULL;
if (cur == NULL) return;
if (cur->type == XML_NAMESPACE_DECL) {
xmlFreeNsList((xmlNsPtr) cur);
@@ -415,7 +427,10 @@ static void
xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) {
xmlDictPtr dict;
- dict = reader->ctxt->dict;
+ if ((reader != NULL) && (reader->ctxt != NULL))
+ dict = reader->ctxt->dict;
+ else
+ dict = NULL;
if (cur->type == XML_DTD_NODE) {
xmlFreeDtd((xmlDtdPtr) cur);
return;
@@ -807,9 +822,10 @@ xmlTextReaderCDataBlock(void *ctx, const xmlChar *ch, int len)
*/
static int
xmlTextReaderPushData(xmlTextReaderPtr reader) {
- xmlBufferPtr inbuf;
+ xmlBufPtr inbuf;
int val, s;
xmlTextReaderState oldstate;
+ int alloc;
if ((reader->input == NULL) || (reader->input->buffer == NULL))
return(-1);
@@ -817,17 +833,18 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
oldstate = reader->state;
reader->state = XML_TEXTREADER_NONE;
inbuf = reader->input->buffer;
+ alloc = xmlBufGetAllocationScheme(inbuf);
while (reader->state == XML_TEXTREADER_NONE) {
- if (inbuf->use < reader->cur + CHUNK_SIZE) {
+ if (xmlBufUse(inbuf) < reader->cur + CHUNK_SIZE) {
/*
* Refill the buffer unless we are at the end of the stream
*/
if (reader->mode != XML_TEXTREADER_MODE_EOF) {
val = xmlParserInputBufferRead(reader->input, 4096);
if ((val == 0) &&
- (inbuf->alloc == XML_BUFFER_ALLOC_IMMUTABLE)) {
- if (inbuf->use == reader->cur) {
+ (alloc == XML_BUFFER_ALLOC_IMMUTABLE)) {
+ if (xmlBufUse(inbuf) == reader->cur) {
reader->mode = XML_TEXTREADER_MODE_EOF;
reader->state = oldstate;
}
@@ -850,20 +867,20 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
* parse by block of CHUNK_SIZE bytes, various tests show that
* it's the best tradeoff at least on a 1.2GH Duron
*/
- if (inbuf->use >= reader->cur + CHUNK_SIZE) {
+ if (xmlBufUse(inbuf) >= reader->cur + CHUNK_SIZE) {
val = xmlParseChunk(reader->ctxt,
- (const char *) &inbuf->content[reader->cur],
- CHUNK_SIZE, 0);
+ (const char *) xmlBufContent(inbuf) + reader->cur,
+ CHUNK_SIZE, 0);
reader->cur += CHUNK_SIZE;
if (val != 0)
reader->ctxt->wellFormed = 0;
if (reader->ctxt->wellFormed == 0)
break;
} else {
- s = inbuf->use - reader->cur;
+ s = xmlBufUse(inbuf) - reader->cur;
val = xmlParseChunk(reader->ctxt,
- (const char *) &inbuf->content[reader->cur],
- s, 0);
+ (const char *) xmlBufContent(inbuf) + reader->cur,
+ s, 0);
reader->cur += s;
if (val != 0)
reader->ctxt->wellFormed = 0;
@@ -875,10 +892,10 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
* Discard the consumed input when needed and possible
*/
if (reader->mode == XML_TEXTREADER_MODE_INTERACTIVE) {
- if (inbuf->alloc != XML_BUFFER_ALLOC_IMMUTABLE) {
+ if (alloc != XML_BUFFER_ALLOC_IMMUTABLE) {
if ((reader->cur >= 4096) &&
- (inbuf->use - reader->cur <= CHUNK_SIZE)) {
- val = xmlBufferShrink(inbuf, reader->cur);
+ (xmlBufUse(inbuf) - reader->cur <= CHUNK_SIZE)) {
+ val = xmlBufShrink(inbuf, reader->cur);
if (val >= 0) {
reader->cur -= val;
}
@@ -892,11 +909,11 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
*/
else if (reader->mode == XML_TEXTREADER_MODE_EOF) {
if (reader->state != XML_TEXTREADER_DONE) {
- s = inbuf->use - reader->cur;
+ s = xmlBufUse(inbuf) - reader->cur;
val = xmlParseChunk(reader->ctxt,
- (const char *) &inbuf->content[reader->cur],
- s, 1);
- reader->cur = inbuf->use;
+ (const char *) xmlBufContent(inbuf) + reader->cur,
+ s, 1);
+ reader->cur = xmlBufUse(inbuf);
reader->state = XML_TEXTREADER_DONE;
if (val != 0) {
if (reader->ctxt->wellFormed)
@@ -907,8 +924,11 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
}
}
reader->state = oldstate;
- if (reader->ctxt->wellFormed == 0)
+ if (reader->ctxt->wellFormed == 0) {
reader->mode = XML_TEXTREADER_MODE_EOF;
+ return(-1);
+ }
+
return(0);
}
@@ -977,7 +997,7 @@ printf("Expand failed !\n");
* xmlTextReaderValidateCData:
* @reader: the xmlTextReaderPtr used
* @data: pointer to the CData
- * @len: lenght of the CData block in bytes.
+ * @len: length of the CData block in bytes.
*
* Push some CData for validation
*/
@@ -1221,6 +1241,9 @@ xmlTextReaderCollectSiblings(xmlNodePtr node)
xmlBufferPtr buffer;
xmlChar *ret;
+ if ((node == NULL) || (node->type == XML_NAMESPACE_DECL))
+ return(NULL);
+
buffer = xmlBufferCreate();
if (buffer == NULL)
return NULL;
@@ -1399,8 +1422,7 @@ get_next_node:
#endif
(reader->entNr == 0) &&
(reader->node->prev != NULL) &&
- (reader->node->prev->type != XML_DTD_NODE) &&
- (reader->entNr == 0)) {
+ (reader->node->prev->type != XML_DTD_NODE)) {
xmlNodePtr tmp = reader->node->prev;
if ((tmp->extra & NODE_IS_PRESERVED) == 0) {
xmlUnlinkNode(tmp);
@@ -1418,7 +1440,7 @@ get_next_node:
goto node_found;
}
#ifdef LIBXML_REGEXP_ENABLED
- if ((reader->validate) && (reader->node->type == XML_ELEMENT_NODE))
+ if ((reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (reader->node->type == XML_ELEMENT_NODE))
xmlTextReaderValidatePop(reader);
#endif /* LIBXML_REGEXP_ENABLED */
if ((reader->preserves > 0) &&
@@ -1449,8 +1471,7 @@ get_next_node:
#endif
(reader->entNr == 0) &&
(oldnode->type != XML_DTD_NODE) &&
- ((oldnode->extra & NODE_IS_PRESERVED) == 0) &&
- (reader->entNr == 0)) {
+ ((oldnode->extra & NODE_IS_PRESERVED) == 0)) {
xmlUnlinkNode(oldnode);
xmlTextReaderFreeNode(reader, oldnode);
}
@@ -1552,7 +1573,7 @@ node_found:
goto get_next_node;
}
#ifdef LIBXML_REGEXP_ENABLED
- if ((reader->validate) && (reader->node != NULL)) {
+ if ((reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (reader->node != NULL)) {
xmlNodePtr node = reader->node;
if ((node->type == XML_ELEMENT_NODE) &&
@@ -1716,8 +1737,8 @@ xmlTextReaderReadInnerXml(xmlTextReaderPtr reader ATTRIBUTE_UNUSED)
*
* Reads the contents of the current node, including child nodes and markup.
*
- * Returns a string containing the node and any XML content, or NULL if the
- * current node cannot be serialized. The string must be deallocated
+ * Returns a string containing the node and any XML content, or NULL if the
+ * current node cannot be serialized. The string must be deallocated
* by the caller.
*/
xmlChar *
@@ -1782,6 +1803,7 @@ xmlTextReaderReadString(xmlTextReaderPtr reader)
if (xmlTextReaderDoExpand(reader) != -1) {
return xmlTextReaderCollectSiblings(node->children);
}
+ break;
case XML_ATTRIBUTE_NODE:
TODO
break;
@@ -2062,7 +2084,7 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
ret->entMax = 0;
ret->entNr = 0;
ret->input = input;
- ret->buffer = xmlBufferCreateSize(100);
+ ret->buffer = xmlBufCreateSize(100);
if (ret->buffer == NULL) {
xmlFree(ret);
xmlGenericError(xmlGenericErrorContext,
@@ -2071,7 +2093,7 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
}
ret->sax = (xmlSAXHandler *) xmlMalloc(sizeof(xmlSAXHandler));
if (ret->sax == NULL) {
- xmlBufferFree(ret->buffer);
+ xmlBufFree(ret->buffer);
xmlFree(ret);
xmlGenericError(xmlGenericErrorContext,
"xmlNewTextReader : malloc failed\n");
@@ -2104,12 +2126,13 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
ret->mode = XML_TEXTREADER_MODE_INITIAL;
ret->node = NULL;
ret->curnode = NULL;
- if (ret->input->buffer->use < 4) {
+ if (xmlBufUse(ret->input->buffer) < 4) {
xmlParserInputBufferRead(input, 4);
}
- if (ret->input->buffer->use >= 4) {
+ if (xmlBufUse(ret->input->buffer) >= 4) {
ret->ctxt = xmlCreatePushParserCtxt(ret->sax, NULL,
- (const char *) ret->input->buffer->content, 4, URI);
+ (const char *) xmlBufContent(ret->input->buffer),
+ 4, URI);
ret->base = 0;
ret->cur = 4;
} else {
@@ -2121,7 +2144,7 @@ xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
if (ret->ctxt == NULL) {
xmlGenericError(xmlGenericErrorContext,
"xmlNewTextReader : malloc failed\n");
- xmlBufferFree(ret->buffer);
+ xmlBufFree(ret->buffer);
xmlFree(ret->sax);
xmlFree(ret);
return(NULL);
@@ -2251,7 +2274,7 @@ xmlFreeTextReader(xmlTextReaderPtr reader) {
if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT))
xmlFreeParserInputBuffer(reader->input);
if (reader->buffer != NULL)
- xmlBufferFree(reader->buffer);
+ xmlBufFree(reader->buffer);
if (reader->entTab != NULL)
xmlFree(reader->entTab);
if (reader->dict != NULL)
@@ -3599,16 +3622,17 @@ xmlTextReaderConstValue(xmlTextReaderPtr reader) {
(attr->children->next == NULL))
return(attr->children->content);
else {
- if (reader->buffer == NULL)
- reader->buffer = xmlBufferCreateSize(100);
if (reader->buffer == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xmlTextReaderSetup : malloc failed\n");
- return (NULL);
- }
- reader->buffer->use = 0;
- xmlNodeBufGetContent(reader->buffer, node);
- return(reader->buffer->content);
+ reader->buffer = xmlBufCreateSize(100);
+ if (reader->buffer == NULL) {
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlTextReaderSetup : malloc failed\n");
+ return (NULL);
+ }
+ } else
+ xmlBufEmpty(reader->buffer);
+ xmlBufGetNodeContent(reader->buffer, node);
+ return(xmlBufContent(reader->buffer));
}
break;
}
@@ -4143,6 +4167,60 @@ xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, xmlRelaxNGPtr schema) {
}
/**
+ * xmlTextReaderLocator:
+ * @ctx: the xmlTextReaderPtr used
+ * @file: returned file information
+ * @line: returned line information
+ *
+ * Internal locator function for the readers
+ *
+ * Returns 0 in case the Schema validation could be (des)activated and
+ * -1 in case of error.
+ */
+static int
+xmlTextReaderLocator(void *ctx, const char **file, unsigned long *line) {
+ xmlTextReaderPtr reader;
+
+ if ((ctx == NULL) || ((file == NULL) && (line == NULL)))
+ return(-1);
+
+ if (file != NULL)
+ *file = NULL;
+ if (line != NULL)
+ *line = 0;
+
+ reader = (xmlTextReaderPtr) ctx;
+ if ((reader->ctxt != NULL) && (reader->ctxt->input != NULL)) {
+ if (file != NULL)
+ *file = reader->ctxt->input->filename;
+ if (line != NULL)
+ *line = reader->ctxt->input->line;
+ return(0);
+ }
+ if (reader->node != NULL) {
+ long res;
+ int ret = 0;
+
+ if (line != NULL) {
+ res = xmlGetLineNo(reader->node);
+ if (res > 0)
+ *line = (unsigned long) res;
+ else
+ ret = -1;
+ }
+ if (file != NULL) {
+ xmlDocPtr doc = reader->node->doc;
+ if ((doc != NULL) && (doc->URL != NULL))
+ *file = (const char *) doc->URL;
+ else
+ ret = -1;
+ }
+ return(ret);
+ }
+ return(-1);
+}
+
+/**
* xmlTextReaderSetSchema:
* @reader: the xmlTextReaderPtr used
* @schema: a precompiled Schema schema
@@ -4209,6 +4287,10 @@ xmlTextReaderSetSchema(xmlTextReaderPtr reader, xmlSchemaPtr schema) {
reader->xsdValidCtxt = NULL;
return(-1);
}
+ xmlSchemaValidateSetLocator(reader->xsdValidCtxt,
+ xmlTextReaderLocator,
+ (void *) reader);
+
if (reader->errorFunc != NULL) {
xmlSchemaSetValidErrors(reader->xsdValidCtxt,
xmlTextReaderValidityErrorRelay,
@@ -4423,6 +4505,9 @@ xmlTextReaderSchemaValidateInternal(xmlTextReaderPtr reader,
return(-1);
}
}
+ xmlSchemaValidateSetLocator(reader->xsdValidCtxt,
+ xmlTextReaderLocator,
+ (void *) reader);
/*
* Redirect the validation context's error channels to use
* the reader channels.
@@ -5040,7 +5125,7 @@ xmlTextReaderSetup(xmlTextReaderPtr reader,
reader->allocs |= XML_TEXTREADER_INPUT;
}
if (reader->buffer == NULL)
- reader->buffer = xmlBufferCreateSize(100);
+ reader->buffer = xmlBufCreateSize(100);
if (reader->buffer == NULL) {
xmlGenericError(xmlGenericErrorContext,
"xmlTextReaderSetup : malloc failed\n");
@@ -5081,13 +5166,14 @@ xmlTextReaderSetup(xmlTextReaderPtr reader,
reader->node = NULL;
reader->curnode = NULL;
if (input != NULL) {
- if (reader->input->buffer->use < 4) {
+ if (xmlBufUse(reader->input->buffer) < 4) {
xmlParserInputBufferRead(input, 4);
}
if (reader->ctxt == NULL) {
- if (reader->input->buffer->use >= 4) {
+ if (xmlBufUse(reader->input->buffer) >= 4) {
reader->ctxt = xmlCreatePushParserCtxt(reader->sax, NULL,
- (const char *) reader->input->buffer->content, 4, URL);
+ (const char *) xmlBufContent(reader->input->buffer),
+ 4, URL);
reader->base = 0;
reader->cur = 4;
} else {
@@ -5116,10 +5202,7 @@ xmlTextReaderSetup(xmlTextReaderPtr reader,
inputStream->filename = (char *)
xmlCanonicPath((const xmlChar *) URL);
inputStream->buf = buf;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end =
- &inputStream->buf->buffer->content[inputStream->buf->buffer->use];
+ xmlBufResetInput(buf->buffer, inputStream);
inputPush(reader->ctxt, inputStream);
reader->cur = 0;
diff --git a/xmlregexp.c b/xmlregexp.c
index 8a8be98..3e912ab 100644
--- a/xmlregexp.c
+++ b/xmlregexp.c
@@ -1,7 +1,7 @@
/*
* regexp.c: generic and extensible Regular Expression engine
*
- * Basically designed with the purpose of compiling regexps for
+ * Basically designed with the purpose of compiling regexps for
* the variety of validation/shemas mechanisms now available in
* XML related specifications these include:
* - XML-1.0 DTD validation
@@ -68,15 +68,15 @@
*
* macro to flag unimplemented blocks
*/
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
/************************************************************************
- * *
- * Datatypes and structures *
- * *
+ * *
+ * Datatypes and structures *
+ * *
************************************************************************/
/*
@@ -222,6 +222,7 @@ struct _xmlRegTrans {
struct _xmlAutomataState {
xmlRegStateType type;
xmlRegMarkedType mark;
+ xmlRegMarkedType markd;
xmlRegMarkedType reached;
int no;
int maxTrans;
@@ -364,7 +365,7 @@ void xmlAutomataSetFlags(xmlAutomataPtr am, int flags);
/************************************************************************
* *
- * Regexp memory error handler *
+ * Regexp memory error handler *
* *
************************************************************************/
/**
@@ -411,9 +412,9 @@ xmlRegexpErrCompile(xmlRegParserCtxtPtr ctxt, const char *extra)
}
/************************************************************************
- * *
- * Allocation/Deallocation *
- * *
+ * *
+ * Allocation/Deallocation *
+ * *
************************************************************************/
static int xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt);
@@ -934,9 +935,9 @@ xmlRegFreeParserCtxt(xmlRegParserCtxtPtr ctxt) {
}
/************************************************************************
- * *
- * Display of Data structures *
- * *
+ * *
+ * Display of Data structures *
+ * *
************************************************************************/
static void
@@ -1143,7 +1144,7 @@ xmlRegPrintTrans(FILE *output, xmlRegTransPtr trans) {
fprintf(output, "char %c ", trans->atom->codepoint);
fprintf(output, "atom %d, to %d\n", trans->atom->no, trans->to);
}
-
+
static void
xmlRegPrintState(FILE *output, xmlRegStatePtr state) {
int i;
@@ -1157,7 +1158,7 @@ xmlRegPrintState(FILE *output, xmlRegStatePtr state) {
fprintf(output, "START ");
if (state->type == XML_REGEXP_FINAL_STATE)
fprintf(output, "FINAL ");
-
+
fprintf(output, "%d, %d transitions:\n", state->no, state->nbTrans);
for (i = 0;i < state->nbTrans; i++) {
xmlRegPrintTrans(output, &(state->trans[i]));
@@ -1207,12 +1208,12 @@ xmlRegPrintCtxt(FILE *output, xmlRegParserCtxtPtr ctxt) {
#endif
/************************************************************************
- * *
+ * *
* Finite Automata structures manipulations *
- * *
+ * *
************************************************************************/
-static void
+static void
xmlRegAtomAddRange(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom,
int neg, xmlRegAtomType type, int start, int end,
xmlChar *blockName) {
@@ -1252,7 +1253,7 @@ xmlRegAtomAddRange(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom,
return;
range->blockName = blockName;
atom->ranges[atom->nbRanges++] = range;
-
+
}
static int
@@ -1283,7 +1284,7 @@ xmlRegGetCounter(xmlRegParserCtxtPtr ctxt) {
return(ctxt->nbCounters++);
}
-static int
+static int
xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) {
if (atom == NULL) {
ERROR("atom push: atom is NULL");
@@ -1315,7 +1316,7 @@ xmlRegAtomPush(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) {
return(0);
}
-static void
+static void
xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target,
int from) {
if (target->maxTransTo == 0) {
@@ -1343,7 +1344,7 @@ xmlRegStateAddTransTo(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr target,
target->nbTransTo++;
}
-static void
+static void
xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
xmlRegAtomPtr atom, xmlRegStatePtr target,
int counter, int count) {
@@ -1409,7 +1410,7 @@ xmlRegStateAddTrans(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
printf("counted %d\n", counter);
else if (atom == NULL)
printf("epsilon transition\n");
- else if (atom != NULL)
+ else if (atom != NULL)
xmlRegPrintAtom(stdout, atom);
#endif
@@ -1563,7 +1564,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
*/
xmlFAGenerateEpsilonTransition(ctxt, atom->stop, to);
#ifdef DV
- } else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) &&
+ } else if ((to == NULL) && (atom->quant != XML_REGEXP_QUANT_RANGE) &&
(atom->quant != XML_REGEXP_QUANT_ONCE)) {
to = xmlRegNewState(ctxt);
xmlRegStatePush(ctxt, to);
@@ -1577,7 +1578,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
/*
* transition done to the state after end of atom.
* 1. set transition from atom start to new state
- * 2. set transition from atom end to this state.
+ * 2. set transition from atom end to this state.
*/
if (to == NULL) {
xmlFAGenerateEpsilonTransition(ctxt, atom->start, 0);
@@ -1621,7 +1622,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
/*
* duplicate a transition based on atom to count next
* occurences after 1. We cannot loop to atom->start
- * directly because we need an epsilon transition to
+ * directly because we need an epsilon transition to
* newstate.
*/
/* ???? For some reason it seems we never reach that
@@ -1680,7 +1681,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
break;
}
return(0);
- }
+ }
if ((atom->min == 0) && (atom->max == 0) &&
(atom->quant == XML_REGEXP_QUANT_RANGE)) {
/*
@@ -1706,9 +1707,9 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
else {
return(-1);
}
- }
+ }
end = to;
- if ((atom->quant == XML_REGEXP_QUANT_MULT) ||
+ if ((atom->quant == XML_REGEXP_QUANT_MULT) ||
(atom->quant == XML_REGEXP_QUANT_PLUS)) {
/*
* Do not pollute the target state by adding transitions from
@@ -1716,7 +1717,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
* So isolate with an epsilon transition.
*/
xmlRegStatePtr tmp;
-
+
tmp = xmlRegNewState(ctxt);
if (tmp != NULL)
xmlRegStatePush(ctxt, tmp);
@@ -1745,7 +1746,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
atom->quant = XML_REGEXP_QUANT_ONCE;
xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1);
break;
- case XML_REGEXP_QUANT_RANGE:
+ case XML_REGEXP_QUANT_RANGE:
#if DV_test
if (atom->min == 0) {
xmlFAGenerateEpsilonTransition(ctxt, from, to);
@@ -1762,7 +1763,7 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
* xmlFAReduceEpsilonTransitions:
* @ctxt: a regexp parser context
* @fromnr: the from state
- * @tonr: the to state
+ * @tonr: the to state
* @counter: should that transition be associated to a counted
*
*/
@@ -1806,7 +1807,7 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
int newto = to->trans[transnr].to;
xmlRegStateAddTrans(ctxt, from, NULL,
- ctxt->states[newto],
+ ctxt->states[newto],
-1, to->trans[transnr].count);
} else {
#ifdef DEBUG_REGEXP_GRAPH
@@ -1828,11 +1829,11 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
int newto = to->trans[transnr].to;
if (to->trans[transnr].counter >= 0) {
- xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
- ctxt->states[newto],
+ xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
+ ctxt->states[newto],
to->trans[transnr].counter, -1);
} else {
- xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
+ xmlRegStateAddTrans(ctxt, from, to->trans[transnr].atom,
ctxt->states[newto], counter, -1);
}
}
@@ -1844,7 +1845,7 @@ xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
* xmlFAEliminateSimpleEpsilonTransitions:
* @ctxt: a regexp parser context
*
- * Eliminating general epsilon transitions can get costly in the general
+ * Eliminating general epsilon transitions can get costly in the general
* algorithm due to the large amount of generated new transitions and
* associated comparisons. However for simple epsilon transition used just
* to separate building blocks when generating the automata this can be
@@ -1880,12 +1881,12 @@ xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
#ifdef DEBUG_REGEXP_GRAPH
printf("Found simple epsilon trans from start %d to %d\n",
statenr, newto);
-#endif
+#endif
} else {
#ifdef DEBUG_REGEXP_GRAPH
printf("Found simple epsilon trans from %d to %d\n",
statenr, newto);
-#endif
+#endif
for (i = 0;i < state->nbTransTo;i++) {
tmp = ctxt->states[state->transTo[i]];
for (j = 0;j < tmp->nbTrans;j++) {
@@ -1893,10 +1894,10 @@ xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
#ifdef DEBUG_REGEXP_GRAPH
printf("Changed transition %d on %d to go to %d\n",
j, tmp->no, newto);
-#endif
+#endif
tmp->trans[j].to = -1;
xmlRegStateAddTrans(ctxt, tmp, tmp->trans[j].atom,
- ctxt->states[newto],
+ ctxt->states[newto],
tmp->trans[j].counter,
tmp->trans[j].count);
}
@@ -1910,7 +1911,7 @@ xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
state->type = XML_REGEXP_UNREACH_STATE;
}
-
+
}
}
}
@@ -2112,7 +2113,7 @@ xmlFACompareRanges(xmlRegRangePtr range1, xmlRegRangePtr range2) {
/*
* just check all codepoints in the range for acceptance,
* this is usually way cheaper since done only once at
- * compilation than testing over and over at runtime or
+ * compilation than testing over and over at runtime or
* pushing too many states when evaluating.
*/
if (((range1->neg == 0) && (range2->neg != 0)) ||
@@ -2589,6 +2590,8 @@ xmlFARecurseDeterminism(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
if (state == NULL)
return(ret);
+ if (state->markd == XML_REGEXP_MARK_VISITED)
+ return(ret);
if (ctxt->flags & AM_AUTOMATA_RNG)
deep = 0;
@@ -2606,8 +2609,10 @@ xmlFARecurseDeterminism(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
if (t1->atom == NULL) {
if (t1->to < 0)
continue;
+ state->markd = XML_REGEXP_MARK_VISITED;
res = xmlFARecurseDeterminism(ctxt, ctxt->states[t1->to],
to, atom);
+ state->markd = 0;
if (res == 0) {
ret = 0;
/* t1->nd = 1; */
@@ -2776,9 +2781,9 @@ xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt) {
}
/************************************************************************
- * *
+ * *
* Routines to check input against transition atoms *
- * *
+ * *
************************************************************************/
static int
@@ -2807,7 +2812,7 @@ xmlRegCheckCharacterRange(xmlRegAtomType type, int codepoint, int neg,
case XML_REGEXP_NOTINITNAME:
neg = !neg;
case XML_REGEXP_INITNAME:
- ret = (IS_LETTER(codepoint) ||
+ ret = (IS_LETTER(codepoint) ||
(codepoint == '_') || (codepoint == ':'));
break;
case XML_REGEXP_NOTNAMECHAR:
@@ -3055,9 +3060,9 @@ xmlRegCheckCharacter(xmlRegAtomPtr atom, int codepoint) {
}
/************************************************************************
- * *
+ * *
* Saving and restoring state of an execution context *
- * *
+ * *
************************************************************************/
#ifdef DEBUG_REGEXP_EXEC
@@ -3157,8 +3162,10 @@ xmlFARegExecRollBack(xmlRegExecCtxtPtr exec) {
exec->status = -6;
return;
}
- memcpy(exec->counts, exec->rollbacks[exec->nbRollbacks].counts,
+ if (exec->counts) {
+ memcpy(exec->counts, exec->rollbacks[exec->nbRollbacks].counts,
exec->comp->nbCounters * sizeof(int));
+ }
}
#ifdef DEBUG_REGEXP_EXEC
@@ -3168,9 +3175,9 @@ xmlFARegExecRollBack(xmlRegExecCtxtPtr exec) {
}
/************************************************************************
- * *
+ * *
* Verifier, running an input against a compiled regexp *
- * *
+ * *
************************************************************************/
static int
@@ -3202,7 +3209,7 @@ xmlFARegExec(xmlRegexpPtr comp, const xmlChar *content) {
memset(exec->counts, 0, comp->nbCounters * sizeof(int));
} else
exec->counts = NULL;
- while ((exec->status == 0) &&
+ while ((exec->status == 0) && (exec->state != NULL) &&
((exec->inputString[exec->index] != 0) ||
((exec->state != NULL) &&
(exec->state->type != XML_REGEXP_FINAL_STATE)))) {
@@ -3456,6 +3463,8 @@ error:
}
xmlFree(exec->rollbacks);
}
+ if (exec->state == NULL)
+ return(-1);
if (exec->counts != NULL)
xmlFree(exec->counts);
if (exec->status == 0)
@@ -3469,9 +3478,9 @@ error:
}
/************************************************************************
- * *
+ * *
* Progressive interface to the verifier one atom at a time *
- * *
+ * *
************************************************************************/
#ifdef DEBUG_ERR
static void testerr(xmlRegExecCtxtPtr exec);
@@ -3588,7 +3597,7 @@ xmlFARegExecSaveInputString(xmlRegExecCtxtPtr exec, const xmlChar *value,
#endif
if (exec->inputStackMax == 0) {
exec->inputStackMax = 4;
- exec->inputStack = (xmlRegInputTokenPtr)
+ exec->inputStack = (xmlRegInputTokenPtr)
xmlMalloc(exec->inputStackMax * sizeof(xmlRegInputToken));
if (exec->inputStack == NULL) {
xmlRegexpErrMemory(NULL, "pushing input string");
@@ -3617,11 +3626,11 @@ xmlFARegExecSaveInputString(xmlRegExecCtxtPtr exec, const xmlChar *value,
/**
* xmlRegStrEqualWildcard:
- * @expStr: the string to be evaluated
+ * @expStr: the string to be evaluated
* @valStr: the validation string
*
* Checks if both strings are equal or have the same content. "*"
- * can be used as a wildcard in @valStr; "|" is used as a seperator of
+ * can be used as a wildcard in @valStr; "|" is used as a seperator of
* substrings in both @expStr and @valStr.
*
* Returns 1 if the comparison is satisfied and the number of substrings
@@ -3687,7 +3696,7 @@ xmlRegCompactPushString(xmlRegExecCtxtPtr exec,
if ((comp == NULL) || (comp->compact == NULL) || (comp->stringMap == NULL))
return(-1);
-
+
if (value == NULL) {
/*
* are we at a final state ?
@@ -3708,9 +3717,9 @@ xmlRegCompactPushString(xmlRegExecCtxtPtr exec,
for (i = 0;i < comp->nbstrings;i++) {
target = comp->compact[state * (comp->nbstrings + 1) + i + 1];
if ((target > 0) && (target <= comp->nbstates)) {
- target--; /* to avoid 0 */
+ target--; /* to avoid 0 */
if (xmlRegStrEqualWildcard(comp->stringMap[i], value)) {
- exec->index = target;
+ exec->index = target;
if ((exec->callback != NULL) && (comp->transdata != NULL)) {
exec->callback(exec->data, value,
comp->transdata[state * comp->nbstrings + i], data);
@@ -3844,7 +3853,7 @@ xmlRegExecPushStringInternal(xmlRegExecCtxtPtr exec, const xmlChar *value,
continue;
counter = &exec->comp->counters[t->counter];
count = exec->counts[t->counter];
- if ((count < counter->max) &&
+ if ((count < counter->max) &&
(t->atom != NULL) &&
(xmlStrEqual(value, t->atom->valuep))) {
ret = 0;
@@ -4084,7 +4093,7 @@ rollback:
*/
exec->determinist = 0;
xmlFARegExecRollBack(exec);
- if (exec->status == 0) {
+ if ((exec->inputStack != NULL ) && (exec->status == 0)) {
value = exec->inputStack[exec->index].value;
data = exec->inputStack[exec->index].data;
#ifdef DEBUG_PUSH
@@ -4202,7 +4211,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
int maxval;
int nb = 0;
- if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) ||
+ if ((exec == NULL) || (nbval == NULL) || (nbneg == NULL) ||
(values == NULL) || (*nbval <= 0))
return(-1);
@@ -4299,7 +4308,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
(*nbval)++;
}
} else {
- if ((exec->comp->states[trans->to] != NULL) &&
+ if ((exec->comp != NULL) && (exec->comp->states[trans->to] != NULL) &&
(exec->comp->states[trans->to]->type !=
XML_REGEXP_SINK_STATE)) {
if (atom->neg)
@@ -4308,7 +4317,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
values[nb++] = (xmlChar *) atom->valuep;
(*nbval)++;
}
- }
+ }
}
for (transno = 0;
(transno < state->nbTrans) && (nb < maxval);
@@ -4335,7 +4344,7 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
values[nb++] = (xmlChar *) atom->valuep;
(*nbneg)++;
}
- }
+ }
}
}
return(0);
@@ -4566,10 +4575,10 @@ progress:
}
#endif
/************************************************************************
- * *
+ * *
* Parser for the Schemas Datatype Regular Expressions *
* http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#regexs *
- * *
+ * *
************************************************************************/
/**
@@ -4598,7 +4607,7 @@ xmlFAIsChar(xmlRegParserCtxtPtr ctxt) {
*
* [27] charProp ::= IsCategory | IsBlock
* [28] IsCategory ::= Letters | Marks | Numbers | Punctuation |
- * Separators | Symbols | Others
+ * Separators | Symbols | Others
* [29] Letters ::= 'L' [ultmo]?
* [30] Marks ::= 'M' [nce]?
* [31] Numbers ::= 'N' [dlo]?
@@ -4613,7 +4622,7 @@ xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
int cur;
xmlRegAtomType type = (xmlRegAtomType) 0;
xmlChar *blockName = NULL;
-
+
cur = CUR;
if (cur == 'L') {
NEXT;
@@ -4785,15 +4794,15 @@ xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
NEXT;
start = ctxt->cur;
cur = CUR;
- if (((cur >= 'a') && (cur <= 'z')) ||
- ((cur >= 'A') && (cur <= 'Z')) ||
- ((cur >= '0') && (cur <= '9')) ||
+ if (((cur >= 'a') && (cur <= 'z')) ||
+ ((cur >= 'A') && (cur <= 'Z')) ||
+ ((cur >= '0') && (cur <= '9')) ||
(cur == 0x2D)) {
NEXT;
cur = CUR;
- while (((cur >= 'a') && (cur <= 'z')) ||
- ((cur >= 'A') && (cur <= 'Z')) ||
- ((cur >= '0') && (cur <= '9')) ||
+ while (((cur >= 'a') && (cur <= 'z')) ||
+ ((cur >= 'A') && (cur <= 'Z')) ||
+ ((cur >= '0') && (cur <= '9')) ||
(cur == 0x2D)) {
NEXT;
cur = CUR;
@@ -4819,7 +4828,7 @@ xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
* xmlFAParseCharClassEsc:
* @ctxt: a regexp parser context
*
- * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc )
+ * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc )
* [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}#x2D#x5B#x5D#x5E]
* [25] catEsc ::= '\p{' charProp '}'
* [26] complEsc ::= '\P{' charProp '}'
@@ -4916,34 +4925,34 @@ xmlFAParseCharClassEsc(xmlRegParserCtxtPtr ctxt) {
xmlRegAtomType type = XML_REGEXP_ANYSPACE;
switch (cur) {
- case 's':
+ case 's':
type = XML_REGEXP_ANYSPACE;
break;
- case 'S':
+ case 'S':
type = XML_REGEXP_NOTSPACE;
break;
- case 'i':
+ case 'i':
type = XML_REGEXP_INITNAME;
break;
- case 'I':
+ case 'I':
type = XML_REGEXP_NOTINITNAME;
break;
- case 'c':
+ case 'c':
type = XML_REGEXP_NAMECHAR;
break;
- case 'C':
+ case 'C':
type = XML_REGEXP_NOTNAMECHAR;
break;
- case 'd':
+ case 'd':
type = XML_REGEXP_DECIMAL;
break;
- case 'D':
+ case 'D':
type = XML_REGEXP_NOTDECIMAL;
break;
- case 'w':
+ case 'w':
type = XML_REGEXP_REALCHAR;
break;
- case 'W':
+ case 'W':
type = XML_REGEXP_NOTREALCHAR;
break;
}
@@ -4963,7 +4972,7 @@ xmlFAParseCharClassEsc(xmlRegParserCtxtPtr ctxt) {
* xmlFAParseCharRange:
* @ctxt: a regexp parser context
*
- * [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash
+ * [17] charRange ::= seRange | XmlCharRef | XmlCharIncDash
* [18] seRange ::= charOrEsc '-' charOrEsc
* [20] charOrEsc ::= XmlChar | SingleCharEsc
* [21] XmlChar ::= [^\#x2D#x5B#x5D]
@@ -5078,7 +5087,7 @@ xmlFAParsePosCharGroup(xmlRegParserCtxtPtr ctxt) {
*
* [13] charGroup ::= posCharGroup | negCharGroup | charClassSub
* [15] negCharGroup ::= '^' posCharGroup
- * [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
+ * [16] charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
* [12] charClassExpr ::= '[' charGroup ']'
*/
static void
@@ -5326,7 +5335,7 @@ xmlFAParseBranch(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr to) {
previous = ctxt->state;
ret = xmlFAParsePiece(ctxt);
if (ret != 0) {
- if (xmlFAGenerateTransitions(ctxt, previous,
+ if (xmlFAGenerateTransitions(ctxt, previous,
(CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0)
return(-1);
previous = ctxt->state;
@@ -5335,7 +5344,7 @@ xmlFAParseBranch(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr to) {
while ((ret != 0) && (ctxt->error == 0)) {
ret = xmlFAParsePiece(ctxt);
if (ret != 0) {
- if (xmlFAGenerateTransitions(ctxt, previous,
+ if (xmlFAGenerateTransitions(ctxt, previous,
(CUR=='|' || CUR==')') ? to : NULL, ctxt->atom) < 0)
return(-1);
previous = ctxt->state;
@@ -5373,6 +5382,10 @@ xmlFAParseRegExp(xmlRegParserCtxtPtr ctxt, int top) {
end = ctxt->state;
while ((CUR == '|') && (ctxt->error == 0)) {
NEXT;
+ if (CUR == 0) {
+ ERROR("expecting a branch after |")
+ return;
+ }
ctxt->state = start;
ctxt->end = NULL;
xmlFAParseBranch(ctxt, end);
@@ -5384,9 +5397,9 @@ xmlFAParseRegExp(xmlRegParserCtxtPtr ctxt, int top) {
}
/************************************************************************
- * *
- * The basic API *
- * *
+ * *
+ * The basic API *
+ * *
************************************************************************/
/**
@@ -5573,9 +5586,9 @@ xmlRegFreeRegexp(xmlRegexpPtr regexp) {
#ifdef LIBXML_AUTOMATA_ENABLED
/************************************************************************
- * *
- * The Automata interface *
- * *
+ * *
+ * The Automata interface *
+ * *
************************************************************************/
/**
@@ -5696,8 +5709,6 @@ xmlAutomataNewTransition(xmlAutomataPtr am, xmlAutomataStatePtr from,
if (atom == NULL)
return(NULL);
atom->data = data;
- if (atom == NULL)
- return(NULL);
atom->valuep = xmlStrdup(token);
if (xmlFAGenerateTransitions(am, from, to, atom) < 0) {
@@ -5846,7 +5857,7 @@ xmlAutomataNewNegTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
*
* If @to is NULL, this creates first a new target state in the automata
* and then adds a transition from the @from state to the target state
- * activated by a succession of input of value @token and @token2 and
+ * activated by a succession of input of value @token and @token2 and
* whose number is between @min and @max
*
* Returns the target state or NULL in case of error
@@ -6000,8 +6011,8 @@ xmlAutomataNewCountTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
*
* If @to is NULL, this creates first a new target state in the automata
* and then adds a transition from the @from state to the target state
- * activated by a succession of input of value @token and @token2 and whose
- * number is between @min and @max, moreover that transition can only be
+ * activated by a succession of input of value @token and @token2 and whose
+ * number is between @min and @max, moreover that transition can only be
* crossed once.
*
* Returns the target state or NULL in case of error
@@ -6043,7 +6054,7 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from,
str[lenn + lenp + 1] = 0;
atom->valuep = str;
- }
+ }
atom->data = data;
atom->quant = XML_REGEXP_QUANT_ONCEONLY;
atom->min = min;
@@ -6066,7 +6077,7 @@ xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from,
return(to);
}
-
+
/**
* xmlAutomataNewOnceTrans:
@@ -6135,7 +6146,7 @@ xmlAutomataNewOnceTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
*/
xmlAutomataStatePtr
xmlAutomataNewState(xmlAutomataPtr am) {
- xmlAutomataStatePtr to;
+ xmlAutomataStatePtr to;
if (am == NULL)
return(NULL);
@@ -6202,7 +6213,7 @@ xmlAutomataNewAllTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
*
* Returns the counter number or -1 in case of error
*/
-int
+int
xmlAutomataNewCounter(xmlAutomataPtr am, int min, int max) {
int ret;
@@ -6274,7 +6285,7 @@ xmlAutomataNewCounterTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
*
* Returns the compiled regexp or NULL in case of error
*/
-xmlRegexpPtr
+xmlRegexpPtr
xmlAutomataCompile(xmlAutomataPtr am) {
xmlRegexpPtr ret;
@@ -6294,7 +6305,7 @@ xmlAutomataCompile(xmlAutomataPtr am) {
*
* Returns 1 if true, 0 if not, and -1 in case of error
*/
-int
+int
xmlAutomataIsDeterminist(xmlAutomataPtr am) {
int ret;
@@ -6347,7 +6358,7 @@ xmlExpNewCtxt(int maxNodes, xmlDictPtr dict) {
if (maxNodes <= 4096)
maxNodes = 4096;
-
+
ret = (xmlExpCtxtPtr) xmlMalloc(sizeof(xmlExpCtxt));
if (ret == NULL)
return(NULL);
@@ -6401,7 +6412,7 @@ xmlExpFreeCtxt(xmlExpCtxtPtr ctxt) {
/* #define DEBUG_DERIV */
/*
- * TODO:
+ * TODO:
* - Wildcards
* - public API for creation
*
@@ -6469,7 +6480,7 @@ static unsigned short
xmlExpHashNameComputeKey(const xmlChar *name) {
unsigned short value = 0L;
char ch;
-
+
if (name != NULL) {
value += 30 * (*name);
while ((ch = *name++) != 0) {
@@ -6488,7 +6499,7 @@ xmlExpHashComputeKey(xmlExpNodeType type, xmlExpNodePtr left,
xmlExpNodePtr right) {
unsigned long value;
unsigned short ret;
-
+
switch (type) {
case XML_EXP_SEQ:
value = left->key;
@@ -6629,7 +6640,7 @@ xmlExpHashGetEntry(xmlExpCtxtPtr ctxt, xmlExpNodeType type,
left->exp_left->ref++;
tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_left, tmp,
NULL, 0, 0);
-
+
xmlExpFree(ctxt, left);
return(tmp);
}
@@ -6686,7 +6697,7 @@ xmlExpHashGetEntry(xmlExpCtxtPtr ctxt, xmlExpNodeType type,
return(right);
}
kbase = xmlExpHashComputeKey(type, left, right);
- } else
+ } else
return(NULL);
key = kbase % ctxt->size;
@@ -6827,7 +6838,7 @@ xmlExpRef(xmlExpNodePtr exp) {
* xmlExpNewAtom:
* @ctxt: the expression context
* @name: the atom name
- * @len: the atom name lenght in byte (or -1);
+ * @len: the atom name length in byte (or -1);
*
* Get the atom associated to this name from that context
*
@@ -6927,7 +6938,7 @@ xmlExpNewRange(xmlExpCtxtPtr ctxt, xmlExpNodePtr subset, int min, int max) {
************************************************************************/
static int
-xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
+xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
const xmlChar**list, int len, int nb) {
int tmp, tmp2;
tail:
@@ -6964,7 +6975,7 @@ tail:
* @ctxt: the expression context
* @exp: the expression
* @langList: where to store the tokens
- * @len: the allocated lenght of @list
+ * @len: the allocated length of @list
*
* Find all the strings used in @exp and store them in @list
*
@@ -6972,7 +6983,7 @@ tail:
* -2 if there is more than @len strings
*/
int
-xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
+xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
const xmlChar**langList, int len) {
if ((ctxt == NULL) || (exp == NULL) || (langList == NULL) || (len <= 0))
return(-1);
@@ -6980,7 +6991,7 @@ xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
}
static int
-xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
+xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
const xmlChar**list, int len, int nb) {
int tmp, tmp2;
tail:
@@ -7030,7 +7041,7 @@ tail:
* @ctxt: the expression context
* @exp: the expression
* @tokList: where to store the tokens
- * @len: the allocated lenght of @list
+ * @len: the allocated length of @list
*
* Find all the strings that appears at the start of the languages
* accepted by @exp and store them in @list. E.g. for (a, b) | c
@@ -7040,7 +7051,7 @@ tail:
* -2 if there is more than @len strings
*/
int
-xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
+xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
const xmlChar**tokList, int len) {
if ((ctxt == NULL) || (exp == NULL) || (tokList == NULL) || (len <= 0))
return(-1);
@@ -7737,7 +7748,7 @@ xmlExpExpDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
xmlFree((xmlChar **) tab);
return(ret);
}
-
+
/**
* xmlExpExpDerive:
* @ctxt: the expressions context
@@ -7789,7 +7800,7 @@ xmlExpExpDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
int
xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
xmlExpNodePtr tmp;
-
+
if ((exp == NULL) || (ctxt == NULL) || (sub == NULL))
return(-1);
@@ -7833,7 +7844,7 @@ xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
/************************************************************************
* *
- * Parsing expression *
+ * Parsing expression *
* *
************************************************************************/
@@ -7937,7 +7948,7 @@ parse_quantifier:
ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL,
0, -1);
SKIP_BLANKS
- }
+ }
return(ret);
}
@@ -8059,7 +8070,7 @@ xmlExpDumpInt(xmlBufferPtr buf, xmlExpNodePtr expr, int glob) {
break;
case XML_EXP_COUNT: {
char rep[40];
-
+
c = expr->exp_left;
if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
xmlExpDumpInt(buf, c, 1);
diff --git a/xmlsave.c b/xmlsave.c
index 23c3bcc..774404b 100644
--- a/xmlsave.c
+++ b/xmlsave.c
@@ -19,6 +19,10 @@
#include <libxml/HTMLtree.h>
+#include "buf.h"
+#include "enc.h"
+#include "save.h"
+
/************************************************************************
* *
* XHTML detection *
@@ -66,7 +70,7 @@ xmlIsXHTML(const xmlChar *systemID, const xmlChar *publicID) {
#ifdef LIBXML_OUTPUT_ENABLED
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -92,7 +96,7 @@ struct _xmlSaveCtxt {
/************************************************************************
* *
- * Output error handlers *
+ * Output error handlers *
* *
************************************************************************/
/**
@@ -210,9 +214,9 @@ xmlEscapeEntities(unsigned char* out, int *outlen,
int val;
inend = in + (*inlen);
-
+
while ((in < inend) && (out < outend)) {
- if (*in == '<') {
+ if (*in == '<') {
if (outend - out < 4) break;
*out++ = '&';
*out++ = 'l';
@@ -416,7 +420,7 @@ xmlNewSaveCtxt(const char *encoding, int options)
/************************************************************************
* *
- * Dumping XML tree content to a simple buffer *
+ * Dumping XML tree content to a simple buffer *
* *
************************************************************************/
/**
@@ -436,14 +440,14 @@ xmlAttrSerializeContent(xmlOutputBufferPtr buf, xmlAttrPtr attr)
while (children != NULL) {
switch (children->type) {
case XML_TEXT_NODE:
- xmlAttrSerializeTxtContent(buf->buffer, attr->doc,
- attr, children->content);
+ xmlBufAttrSerializeTxtContent(buf->buffer, attr->doc,
+ attr, children->content);
break;
case XML_ENTITY_REF_NODE:
- xmlBufferAdd(buf->buffer, BAD_CAST "&", 1);
- xmlBufferAdd(buf->buffer, children->name,
+ xmlBufAdd(buf->buffer, BAD_CAST "&", 1);
+ xmlBufAdd(buf->buffer, children->name,
xmlStrlen(children->name));
- xmlBufferAdd(buf->buffer, BAD_CAST ";", 1);
+ xmlBufAdd(buf->buffer, BAD_CAST ";", 1);
break;
default:
/* should not happen unless we have a badly built tree */
@@ -453,9 +457,99 @@ xmlAttrSerializeContent(xmlOutputBufferPtr buf, xmlAttrPtr attr)
}
}
+/**
+ * xmlBufDumpNotationTable:
+ * @buf: an xmlBufPtr output
+ * @table: A notation table
+ *
+ * This will dump the content of the notation table as an XML DTD definition
+ */
+void
+xmlBufDumpNotationTable(xmlBufPtr buf, xmlNotationTablePtr table) {
+ xmlBufferPtr buffer;
+
+ buffer = xmlBufferCreate();
+ if (buffer == NULL) {
+ /*
+ * TODO set the error in buf
+ */
+ return;
+ }
+ xmlDumpNotationTable(buffer, table);
+ xmlBufMergeBuffer(buf, buffer);
+}
+
+/**
+ * xmlBufDumpElementDecl:
+ * @buf: an xmlBufPtr output
+ * @elem: An element table
+ *
+ * This will dump the content of the element declaration as an XML
+ * DTD definition
+ */
+void
+xmlBufDumpElementDecl(xmlBufPtr buf, xmlElementPtr elem) {
+ xmlBufferPtr buffer;
+
+ buffer = xmlBufferCreate();
+ if (buffer == NULL) {
+ /*
+ * TODO set the error in buf
+ */
+ return;
+ }
+ xmlDumpElementDecl(buffer, elem);
+ xmlBufMergeBuffer(buf, buffer);
+}
+
+/**
+ * xmlBufDumpAttributeDecl:
+ * @buf: an xmlBufPtr output
+ * @attr: An attribute declaration
+ *
+ * This will dump the content of the attribute declaration as an XML
+ * DTD definition
+ */
+void
+xmlBufDumpAttributeDecl(xmlBufPtr buf, xmlAttributePtr attr) {
+ xmlBufferPtr buffer;
+
+ buffer = xmlBufferCreate();
+ if (buffer == NULL) {
+ /*
+ * TODO set the error in buf
+ */
+ return;
+ }
+ xmlDumpAttributeDecl(buffer, attr);
+ xmlBufMergeBuffer(buf, buffer);
+}
+
+/**
+ * xmlBufDumpEntityDecl:
+ * @buf: an xmlBufPtr output
+ * @ent: An entity table
+ *
+ * This will dump the content of the entity table as an XML DTD definition
+ */
+void
+xmlBufDumpEntityDecl(xmlBufPtr buf, xmlEntityPtr ent) {
+ xmlBufferPtr buffer;
+
+ buffer = xmlBufferCreate();
+ if (buffer == NULL) {
+ /*
+ * TODO set the error in buf
+ */
+ return;
+ }
+ xmlDumpEntityDecl(buffer, ent);
+ xmlBufMergeBuffer(buf, buffer);
+}
+
/************************************************************************
* *
- * Dumping XML tree content to an I/O output buffer *
+ * Dumping XML tree content to an I/O output buffer *
* *
************************************************************************/
@@ -469,7 +563,7 @@ static int xmlSaveSwitchEncoding(xmlSaveCtxtPtr ctxt, const char *encoding) {
(const char *)encoding);
return(-1);
}
- buf->conv = xmlBufferCreate();
+ buf->conv = xmlBufCreate();
if (buf->conv == NULL) {
xmlCharEncCloseFunc(buf->encoder);
xmlSaveErrMemory("creating encoding buffer");
@@ -478,7 +572,7 @@ static int xmlSaveSwitchEncoding(xmlSaveCtxtPtr ctxt, const char *encoding) {
/*
* initialize the state, e.g. if outputting a BOM
*/
- xmlCharEncOutFunc(buf->encoder, buf->conv, NULL);
+ xmlCharEncOutput(buf, 1);
}
return(0);
}
@@ -487,7 +581,7 @@ static int xmlSaveClearEncoding(xmlSaveCtxtPtr ctxt) {
xmlOutputBufferPtr buf = ctxt->buf;
xmlOutputBufferFlush(buf);
xmlCharEncCloseFunc(buf->encoder);
- xmlBufferFree(buf->conv);
+ xmlBufFree(buf->conv);
buf->encoder = NULL;
buf->conv = NULL;
return(0);
@@ -553,7 +647,7 @@ xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur, xmlSaveCtxtPtr ctxt) {
} else
xmlOutputBufferWrite(buf, 5, "xmlns");
xmlOutputBufferWrite(buf, 1, "=");
- xmlBufferWriteQuotedString(buf->buffer, cur->href);
+ xmlBufWriteQuotedString(buf->buffer, cur->href);
}
}
@@ -606,7 +700,7 @@ xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) {
* xmlDtdDumpOutput:
* @buf: the XML buffer output
* @dtd: the pointer to the DTD
- *
+ *
* Dump the XML document DTD, if any.
*/
static void
@@ -623,12 +717,12 @@ xmlDtdDumpOutput(xmlSaveCtxtPtr ctxt, xmlDtdPtr dtd) {
xmlOutputBufferWriteString(buf, (const char *)dtd->name);
if (dtd->ExternalID != NULL) {
xmlOutputBufferWrite(buf, 8, " PUBLIC ");
- xmlBufferWriteQuotedString(buf->buffer, dtd->ExternalID);
+ xmlBufWriteQuotedString(buf->buffer, dtd->ExternalID);
xmlOutputBufferWrite(buf, 1, " ");
- xmlBufferWriteQuotedString(buf->buffer, dtd->SystemID);
+ xmlBufWriteQuotedString(buf->buffer, dtd->SystemID);
} else if (dtd->SystemID != NULL) {
xmlOutputBufferWrite(buf, 8, " SYSTEM ");
- xmlBufferWriteQuotedString(buf->buffer, dtd->SystemID);
+ xmlBufWriteQuotedString(buf->buffer, dtd->SystemID);
}
if ((dtd->entities == NULL) && (dtd->elements == NULL) &&
(dtd->attributes == NULL) && (dtd->notations == NULL) &&
@@ -643,7 +737,8 @@ xmlDtdDumpOutput(xmlSaveCtxtPtr ctxt, xmlDtdPtr dtd) {
*/
if ((dtd->notations != NULL) && ((dtd->doc == NULL) ||
(dtd->doc->intSubset == dtd))) {
- xmlDumpNotationTable(buf->buffer, (xmlNotationTablePtr) dtd->notations);
+ xmlBufDumpNotationTable(buf->buffer,
+ (xmlNotationTablePtr) dtd->notations);
}
format = ctxt->format;
level = ctxt->level;
@@ -724,7 +819,7 @@ xmlNodeListDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
(cur->type == XML_COMMENT_NODE) ||
(cur->type == XML_PI_NODE)))
xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level > ctxt->indent_nr ?
+ (ctxt->level > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level),
ctxt->indent);
xmlNodeDumpOutputInternal(ctxt, cur);
@@ -841,15 +936,15 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
return;
}
if (cur->type == XML_ELEMENT_DECL) {
- xmlDumpElementDecl(buf->buffer, (xmlElementPtr) cur);
+ xmlBufDumpElementDecl(buf->buffer, (xmlElementPtr) cur);
return;
}
if (cur->type == XML_ATTRIBUTE_DECL) {
- xmlDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur);
+ xmlBufDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur);
return;
}
if (cur->type == XML_ENTITY_DECL) {
- xmlDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur);
+ xmlBufDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur);
return;
}
if (cur->type == XML_TEXT_NODE) {
@@ -980,7 +1075,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
if (ctxt->level > 0) ctxt->level--;
if ((xmlIndentTreeOutput) && (ctxt->format == 1))
xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level > ctxt->indent_nr ?
+ (ctxt->level > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level),
ctxt->indent);
}
@@ -1096,13 +1191,13 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur) {
*/
if ((ctxt->options & XML_SAVE_NO_DECL) == 0) {
xmlOutputBufferWrite(buf, 14, "<?xml version=");
- if (cur->version != NULL)
- xmlBufferWriteQuotedString(buf->buffer, cur->version);
+ if (cur->version != NULL)
+ xmlBufWriteQuotedString(buf->buffer, cur->version);
else
xmlOutputBufferWrite(buf, 5, "\"1.0\"");
if (encoding != NULL) {
xmlOutputBufferWrite(buf, 10, " encoding=");
- xmlBufferWriteQuotedString(buf->buffer, (xmlChar *) encoding);
+ xmlBufWriteQuotedString(buf->buffer, (xmlChar *) encoding);
}
switch (cur->standalone) {
case 0:
@@ -1260,7 +1355,7 @@ xhtmlAttrListDumpOutput(xmlSaveCtxtPtr ctxt, xmlAttrPtr cur) {
if ((cur->ns != NULL) && (xmlStrEqual(cur->name, BAD_CAST "lang")) &&
(xmlStrEqual(cur->ns->prefix, BAD_CAST "xml")))
xml_lang = cur;
- else if ((cur->ns == NULL) &&
+ else if ((cur->ns == NULL) &&
((cur->children == NULL) ||
(cur->children->content == NULL) ||
(cur->children->content[0] == 0)) &&
@@ -1300,7 +1395,7 @@ xhtmlAttrListDumpOutput(xmlSaveCtxtPtr ctxt, xmlAttrPtr cur) {
xmlOutputBufferWrite(buf, 11, " xml:lang=\"");
xmlAttrSerializeContent(buf, lang);
xmlOutputBufferWrite(buf, 1, "\"");
- } else
+ } else
if ((xml_lang != NULL) && (lang == NULL)) {
xmlOutputBufferWrite(buf, 7, " lang=\"");
xmlAttrSerializeContent(buf, xml_lang);
@@ -1331,7 +1426,7 @@ xhtmlNodeListDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
if ((ctxt->format == 1) && (xmlIndentTreeOutput) &&
(cur->type == XML_ELEMENT_NODE))
xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level > ctxt->indent_nr ?
+ (ctxt->level > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level),
ctxt->indent);
xhtmlNodeDumpOutput(ctxt, cur);
@@ -1370,6 +1465,10 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
return;
if (cur->type == XML_XINCLUDE_END)
return;
+ if (cur->type == XML_NAMESPACE_DECL) {
+ xmlNsDumpOutputCtxt(ctxt, (xmlNsPtr) cur);
+ return;
+ }
if (cur->type == XML_DTD_NODE) {
xmlDtdDumpOutput(ctxt, (xmlDtdPtr) cur);
return;
@@ -1380,15 +1479,15 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
}
buf = ctxt->buf;
if (cur->type == XML_ELEMENT_DECL) {
- xmlDumpElementDecl(buf->buffer, (xmlElementPtr) cur);
+ xmlBufDumpElementDecl(buf->buffer, (xmlElementPtr) cur);
return;
}
if (cur->type == XML_ATTRIBUTE_DECL) {
- xmlDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur);
+ xmlBufDumpAttributeDecl(buf->buffer, (xmlAttributePtr) cur);
return;
}
if (cur->type == XML_ENTITY_DECL) {
- xmlDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur);
+ xmlBufDumpEntityDecl(buf->buffer, (xmlEntityPtr) cur);
return;
}
if (cur->type == XML_TEXT_NODE) {
@@ -1468,7 +1567,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
if (format == 1) {
tmp = cur->children;
while (tmp != NULL) {
- if ((tmp->type == XML_TEXT_NODE) ||
+ if ((tmp->type == XML_TEXT_NODE) ||
(tmp->type == XML_ENTITY_REF_NODE)) {
format = 0;
break;
@@ -1496,10 +1595,10 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
if (cur->properties != NULL)
xhtmlAttrListDumpOutput(ctxt, cur->properties);
- if ((cur->type == XML_ELEMENT_NODE) &&
- (cur->parent != NULL) &&
- (cur->parent->parent == (xmlNodePtr) cur->doc) &&
- xmlStrEqual(cur->name, BAD_CAST"head") &&
+ if ((cur->type == XML_ELEMENT_NODE) &&
+ (cur->parent != NULL) &&
+ (cur->parent->parent == (xmlNodePtr) cur->doc) &&
+ xmlStrEqual(cur->name, BAD_CAST"head") &&
xmlStrEqual(cur->parent->name, BAD_CAST"html")) {
tmp = cur->children;
@@ -1536,7 +1635,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
xmlOutputBufferWrite(buf, 1, "\n");
if (xmlIndentTreeOutput)
xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level + 1 > ctxt->indent_nr ?
+ (ctxt->level + 1 > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level + 1), ctxt->indent);
}
xmlOutputBufferWriteString(buf,
@@ -1571,7 +1670,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
xmlOutputBufferWrite(buf, 1, "\n");
if (xmlIndentTreeOutput)
xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level + 1 > ctxt->indent_nr ?
+ (ctxt->level + 1 > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level + 1), ctxt->indent);
}
xmlOutputBufferWriteString(buf,
@@ -1661,7 +1760,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
if (cur->children != NULL) {
int indent = ctxt->format;
-
+
if (format == 1) xmlOutputBufferWrite(buf, 1, "\n");
if (ctxt->level >= 0) ctxt->level++;
ctxt->format = format;
@@ -1670,7 +1769,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
ctxt->format = indent;
if ((xmlIndentTreeOutput) && (format == 1))
xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level > ctxt->indent_nr ?
+ (ctxt->level > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level),
ctxt->indent);
}
@@ -1936,18 +2035,19 @@ xmlSaveSetAttrEscape(xmlSaveCtxtPtr ctxt, xmlCharEncodingOutputFunc escape)
* Public entry points based on buffers *
* *
************************************************************************/
+
/**
- * xmlAttrSerializeTxtContent:
- * @buf: the XML buffer output
+ * xmlBufAttrSerializeTxtContent:
+ * @buf: and xmlBufPtr output
* @doc: the document
* @attr: the attribute node
* @string: the text content
*
- * Serialize text attribute values to an xml simple buffer
+ * Serialize text attribute values to an xmlBufPtr
*/
void
-xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
- xmlAttrPtr attr, const xmlChar * string)
+xmlBufAttrSerializeTxtContent(xmlBufPtr buf, xmlDocPtr doc,
+ xmlAttrPtr attr, const xmlChar * string)
{
xmlChar *base, *cur;
@@ -1957,44 +2057,44 @@ xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
while (*cur != 0) {
if (*cur == '\n') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&#10;", 5);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&#10;", 5);
cur++;
base = cur;
} else if (*cur == '\r') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&#13;", 5);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&#13;", 5);
cur++;
base = cur;
} else if (*cur == '\t') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&#9;", 4);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&#9;", 4);
cur++;
base = cur;
} else if (*cur == '"') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&quot;", 6);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&quot;", 6);
cur++;
base = cur;
} else if (*cur == '<') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&lt;", 4);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&lt;", 4);
cur++;
base = cur;
} else if (*cur == '>') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&gt;", 4);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&gt;", 4);
cur++;
base = cur;
} else if (*cur == '&') {
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
- xmlBufferAdd(buf, BAD_CAST "&amp;", 5);
+ xmlBufAdd(buf, base, cur - base);
+ xmlBufAdd(buf, BAD_CAST "&amp;", 5);
cur++;
base = cur;
} else if ((*cur >= 0x80) && ((doc == NULL) ||
@@ -2006,13 +2106,13 @@ xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
int val = 0, l = 1;
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
+ xmlBufAdd(buf, base, cur - base);
if (*cur < 0xC0) {
xmlSaveErr(XML_SAVE_NOT_UTF8, (xmlNodePtr) attr, NULL);
if (doc != NULL)
doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1");
xmlSerializeHexCharRef(tmp, *cur);
- xmlBufferAdd(buf, (xmlChar *) tmp, -1);
+ xmlBufAdd(buf, (xmlChar *) tmp, -1);
cur++;
base = cur;
continue;
@@ -2042,9 +2142,9 @@ xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
xmlSaveErr(XML_SAVE_CHAR_INVALID, (xmlNodePtr) attr, NULL);
if (doc != NULL)
doc->encoding = xmlStrdup(BAD_CAST "ISO-8859-1");
-
+
xmlSerializeHexCharRef(tmp, *cur);
- xmlBufferAdd(buf, (xmlChar *) tmp, -1);
+ xmlBufAdd(buf, (xmlChar *) tmp, -1);
cur++;
base = cur;
continue;
@@ -2054,7 +2154,7 @@ xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
* as a char ref
*/
xmlSerializeHexCharRef(tmp, val);
- xmlBufferAdd(buf, (xmlChar *) tmp, -1);
+ xmlBufAdd(buf, (xmlChar *) tmp, -1);
cur += l;
base = cur;
} else {
@@ -2062,7 +2162,31 @@ xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
}
}
if (base != cur)
- xmlBufferAdd(buf, base, cur - base);
+ xmlBufAdd(buf, base, cur - base);
+}
+
+/**
+ * xmlAttrSerializeTxtContent:
+ * @buf: the XML buffer output
+ * @doc: the document
+ * @attr: the attribute node
+ * @string: the text content
+ *
+ * Serialize text attribute values to an xml simple buffer
+ */
+void
+xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
+ xmlAttrPtr attr, const xmlChar * string)
+{
+ xmlBufPtr buffer;
+
+ if ((buf == NULL) || (string == NULL))
+ return;
+ buffer = xmlBufFromBuffer(buf);
+ if (buffer == NULL)
+ return;
+ xmlBufAttrSerializeTxtContent(buffer, doc, attr, string);
+ xmlBufBackToBuffer(buffer);
}
/**
@@ -2076,6 +2200,8 @@ xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
* Dump an XML node, recursive behaviour,children are printed too.
* Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1
* or xmlKeepBlanksDefault(0) was called
+ * Since this is using xmlBuffer structures it is limited to 2GB and somehow
+ * deprecated, use xmlBufNodeDump() instead.
*
* Returns the number of bytes written to the buffer or -1 in case of error
*/
@@ -2083,9 +2209,45 @@ int
xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
int format)
{
- unsigned int use;
+ xmlBufPtr buffer;
+ int ret;
+
+ if ((buf == NULL) || (cur == NULL))
+ return(-1);
+ buffer = xmlBufFromBuffer(buf);
+ if (buffer == NULL)
+ return(-1);
+ ret = xmlBufNodeDump(buffer, doc, cur, level, format);
+ xmlBufBackToBuffer(buffer);
+ if (ret > INT_MAX)
+ return(-1);
+ return((int) ret);
+}
+
+/**
+ * xmlBufNodeDump:
+ * @buf: the XML buffer output
+ * @doc: the document
+ * @cur: the current node
+ * @level: the imbrication level for indenting
+ * @format: is formatting allowed
+ *
+ * Dump an XML node, recursive behaviour,children are printed too.
+ * Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1
+ * or xmlKeepBlanksDefault(0) was called
+ *
+ * Returns the number of bytes written to the buffer, in case of error 0
+ * is returned or @buf stores the error
+ */
+
+size_t
+xmlBufNodeDump(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
+ int format)
+{
+ size_t use;
int ret;
xmlOutputBufferPtr outbuf;
+ int oldalloc;
xmlInitParser();
@@ -2116,10 +2278,13 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
outbuf->context = NULL;
outbuf->written = 0;
- use = buf->use;
+ use = xmlBufUse(buf);
+ oldalloc = xmlBufGetAllocationScheme(buf);
+ xmlBufSetAllocationScheme(buf, XML_BUFFER_ALLOC_DOUBLEIT);
xmlNodeDumpOutput(outbuf, doc, cur, level, format, NULL);
+ xmlBufSetAllocationScheme(buf, oldalloc);
xmlFree(outbuf);
- ret = buf->use - use;
+ ret = xmlBufUse(buf) - use;
return (ret);
}
@@ -2299,11 +2464,11 @@ xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, xmlChar **doc_txt_ptr,
xmlDocContentDumpOutput(&ctxt, out_doc);
xmlOutputBufferFlush(out_buff);
if (out_buff->conv != NULL) {
- *doc_txt_len = out_buff->conv->use;
- *doc_txt_ptr = xmlStrndup(out_buff->conv->content, *doc_txt_len);
+ *doc_txt_len = xmlBufUse(out_buff->conv);
+ *doc_txt_ptr = xmlStrndup(xmlBufContent(out_buff->conv), *doc_txt_len);
} else {
- *doc_txt_len = out_buff->buffer->use;
- *doc_txt_ptr = xmlStrndup(out_buff->buffer->content, *doc_txt_len);
+ *doc_txt_len = xmlBufUse(out_buff->buffer);
+ *doc_txt_ptr = xmlStrndup(xmlBufContent(out_buff->buffer),*doc_txt_len);
}
(void)xmlOutputBufferClose(out_buff);
@@ -2547,7 +2712,7 @@ xmlSaveFormatFileEnc( const char * filename, xmlDocPtr cur,
#ifdef HAVE_ZLIB_H
if (cur->compression < 0) cur->compression = xmlGetCompressMode();
#endif
- /*
+ /*
* save the content to a temp buffer.
*/
buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression);
diff --git a/xmlschemas.c b/xmlschemas.c
index 2fb2151..0657b66 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -107,7 +107,7 @@
#endif
#define UNBOUNDED (1 << 30)
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -975,6 +975,7 @@ struct _xmlSchemaValidCtxt {
xmlSAXHandlerPtr sax;
xmlParserCtxtPtr parserCtxt;
void *user_data; /* TODO: What is this for? */
+ char *filename;
int err;
int nberrors;
@@ -1028,6 +1029,10 @@ struct _xmlSchemaValidCtxt {
int hasKeyrefs;
int createIDCNodeTables;
int psviExposeIDCNodeTables;
+
+ /* Locator for error reporting in streaming mode */
+ xmlSchemaValidityLocatorFunc locFunc;
+ void *locCtxt;
};
/**
@@ -1043,9 +1048,9 @@ struct _xmlSchemaSubstGroup {
};
/************************************************************************
- * *
- * Some predeclarations *
- * *
+ * *
+ * Some predeclarations *
+ * *
************************************************************************/
static int xmlSchemaParseInclude(xmlSchemaParserCtxtPtr ctxt,
@@ -1098,7 +1103,7 @@ xmlSchemaParseAttributeGroupRef(xmlSchemaParserCtxtPtr pctxt,
/************************************************************************
* *
- * Helper functions *
+ * Helper functions *
* *
************************************************************************/
@@ -1466,7 +1471,7 @@ xmlSchemaWildcardPCToString(int pc)
* @retValue: the returned value
* @ws: the whitespace type of the value
*
- * Get a the cononical representation of the value.
+ * Get a the canonical representation of the value.
* The caller has to free the returned retValue.
*
* Returns 0 if the value could be built and -1 in case of
@@ -1836,7 +1841,7 @@ xmlSchemaFormatFacetEnumSet(xmlSchemaAbstractCtxtPtr actxt,
/************************************************************************
* *
- * Error functions *
+ * Error functions *
* *
************************************************************************/
@@ -1974,7 +1979,7 @@ xmlSchemaPErrExt(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error,
/************************************************************************
* *
- * Allround error functions *
+ * Allround error functions *
* *
************************************************************************/
@@ -2034,6 +2039,7 @@ xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
if (ctxt->type == XML_SCHEMA_CTXT_VALIDATOR) {
xmlSchemaValidCtxtPtr vctxt = (xmlSchemaValidCtxtPtr) ctxt;
const char *file = NULL;
+ int col = 0;
if (errorLevel != XML_ERR_WARNING) {
vctxt->nberrors++;
vctxt->err = error;
@@ -2062,6 +2068,7 @@ xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
(vctxt->parserCtxt->input != NULL)) {
file = vctxt->parserCtxt->input->filename;
line = vctxt->parserCtxt->input->line;
+ col = vctxt->parserCtxt->input->col;
}
} else {
/*
@@ -2078,11 +2085,25 @@ xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
(vctxt->parserCtxt->input != NULL))
file = vctxt->parserCtxt->input->filename;
}
+ if (vctxt->locFunc != NULL) {
+ if ((file == NULL) || (line == 0)) {
+ unsigned long l;
+ const char *f;
+ vctxt->locFunc(vctxt->locCtxt, &f, &l);
+ if (file == NULL)
+ file = f;
+ if (line == 0)
+ line = (int) l;
+ }
+ }
+ if ((file == NULL) && (vctxt->filename != NULL))
+ file = vctxt->filename;
+
__xmlRaiseError(schannel, channel, data, ctxt,
node, XML_FROM_SCHEMASV,
error, errorLevel, file, line,
(const char *) str1, (const char *) str2,
- (const char *) str3, 0, 0, msg, str1, str2, str3, str4);
+ (const char *) str3, 0, col, msg, str1, str2, str3, str4);
} else if (ctxt->type == XML_SCHEMA_CTXT_PARSER) {
xmlSchemaParserCtxtPtr pctxt = (xmlSchemaParserCtxtPtr) ctxt;
@@ -3199,25 +3220,25 @@ xmlSchemaPContentErr(xmlSchemaParserCtxtPtr ctxt,
}
/************************************************************************
- * *
- * Streamable error functions *
- * *
+ * *
+ * Streamable error functions *
+ * *
************************************************************************/
/************************************************************************
- * *
- * Validation helper functions *
- * *
+ * *
+ * Validation helper functions *
+ * *
************************************************************************/
/************************************************************************
- * *
- * Allocation functions *
- * *
+ * *
+ * Allocation functions *
+ * *
************************************************************************/
/**
@@ -4135,9 +4156,9 @@ xmlSchemaFree(xmlSchemaPtr schema)
}
/************************************************************************
- * *
- * Debug functions *
- * *
+ * *
+ * Debug functions *
+ * *
************************************************************************/
#ifdef LIBXML_OUTPUT_ENABLED
@@ -4587,7 +4608,7 @@ xmlSchemaDebugDumpIDCTable(FILE * output,
/************************************************************************
* *
- * Utilities *
+ * Utilities *
* *
************************************************************************/
@@ -4692,9 +4713,9 @@ xmlSchemaGetProp(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
}
/************************************************************************
- * *
- * Parsing functions *
- * *
+ * *
+ * Parsing functions *
+ * *
************************************************************************/
#define WXS_FIND_GLOBAL_ITEM(slot) \
@@ -4966,9 +4987,9 @@ xmlSchemaGetNamedComponent(xmlSchemaPtr schema,
}
/************************************************************************
- * *
- * Parsing functions *
- * *
+ * *
+ * Parsing functions *
+ * *
************************************************************************/
#define IS_BLANK_NODE(n) \
@@ -5743,9 +5764,9 @@ xmlSchemaAddElementSubstitutionMember(xmlSchemaParserCtxtPtr pctxt,
}
/************************************************************************
- * *
+ * *
* Utilities for parsing *
- * *
+ * *
************************************************************************/
/**
@@ -5939,7 +5960,7 @@ xmlSchemaPValAttrNodeID(xmlSchemaParserCtxtPtr ctxt, xmlAttrPtr attr)
xmlFree((xmlChar *) value);
value = strip;
}
- res = xmlAddID(NULL, attr->doc, value, attr);
+ res = xmlAddID(NULL, attr->doc, value, attr);
if (res == NULL) {
ret = XML_SCHEMAP_S4S_ATTR_INVALID_VALUE;
xmlSchemaPSimpleTypeErr(ctxt,
@@ -6120,7 +6141,7 @@ xmlSchemaPGetBoolNodeValue(xmlSchemaParserCtxtPtr ctxt,
value = xmlNodeGetContent(node);
/*
* 3.2.2.1 Lexical representation
- * An instance of a datatype that is defined as �boolean�
+ * An instance of a datatype that is defined as `boolean`
* can have the following legal literals {true, false, 1, 0}.
*/
if (xmlStrEqual(BAD_CAST value, BAD_CAST "true"))
@@ -6168,7 +6189,7 @@ xmlGetBooleanProp(xmlSchemaParserCtxtPtr ctxt,
return (def);
/*
* 3.2.2.1 Lexical representation
- * An instance of a datatype that is defined as �boolean�
+ * An instance of a datatype that is defined as `boolean`
* can have the following legal literals {true, false, 1, 0}.
*/
if (xmlStrEqual(val, BAD_CAST "true"))
@@ -6191,9 +6212,9 @@ xmlGetBooleanProp(xmlSchemaParserCtxtPtr ctxt,
}
/************************************************************************
- * *
+ * *
* Shema extraction from an Infoset *
- * *
+ * *
************************************************************************/
static xmlSchemaTypePtr xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr
ctxt, xmlSchemaPtr schema,
@@ -7698,8 +7719,8 @@ xmlSchemaParseAttributeGroupRef(xmlSchemaParserCtxtPtr pctxt,
/*
* SPEC src-redefine:
* (7.1) "If it has an <attributeGroup> among its contents
- * the �actual value� of whose ref [attribute] is the same
- * as the �actual value� of its own name attribute plus
+ * the `actual value` of whose ref [attribute] is the same
+ * as the `actual value` of its own name attribute plus
* target namespace, then it must have exactly one such group."
*/
if (pctxt->redefCounter != 0) {
@@ -8227,7 +8248,7 @@ xmlSchemaParseIDCSelectorAndField(xmlSchemaParserCtxtPtr ctxt,
*/
attr = xmlSchemaGetPropNode(node, "xpath");
if (attr == NULL) {
- xmlSchemaPMissingAttrErr(ctxt,
+ xmlSchemaPMissingAttrErr(ctxt,
XML_SCHEMAP_S4S_ATTR_MISSING,
NULL, node,
"name", NULL);
@@ -8848,7 +8869,7 @@ xmlSchemaParseUnion(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
type->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION;
/*
* SPEC (Base type) (2) "If the <list> or <union> alternative is chosen,
- * then the �simple ur-type definition�."
+ * then the `simple ur-type definition`."
*/
type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);
/*
@@ -9016,7 +9037,7 @@ xmlSchemaParseList(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
type->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST;
/*
* SPEC (Base type) (2) "If the <list> or <union> alternative is chosen,
- * then the �simple ur-type definition�."
+ * then the `simple ur-type definition`."
*/
type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);
/*
@@ -9161,9 +9182,9 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
}
/*
* TargetNamespace:
- * SPEC "The �actual value� of the targetNamespace [attribute]
+ * SPEC "The `actual value` of the targetNamespace [attribute]
* of the <schema> ancestor element information item if present,
- * otherwise �absent�.
+ * otherwise `absent`.
*/
if (topLevel == 0) {
#ifdef ENABLE_NAMED_LOCALS
@@ -9298,8 +9319,8 @@ xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
/*
* REDEFINE: SPEC src-redefine (5)
* "Within the [children], each <simpleType> must have a
- * <restriction> among its [children] ... the �actual value� of whose
- * base [attribute] must be the same as the �actual value� of its own
+ * <restriction> among its [children] ... the `actual value` of whose
+ * base [attribute] must be the same as the `actual value` of its own
* name attribute plus target namespace;"
*/
if (topLevel && ctxt->isRedefine && (! hasRestriction)) {
@@ -10383,7 +10404,7 @@ xmlSchemaAddSchemaDoc(xmlSchemaParserCtxtPtr pctxt,
/*
* Given that the schemaLocation [attribute] is only a hint, it is open
* to applications to ignore all but the first <import> for a given
- * namespace, regardless of the �actual value� of schemaLocation, but
+ * namespace, regardless of the `actual value` of schemaLocation, but
* such a strategy risks missing useful information when new
* schemaLocations are offered.
*
@@ -10736,7 +10757,7 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr pctxt, xmlSchemaPtr schema,
XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
NULL, node,
xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYURI),
- NULL, namespaceName, NULL, NULL, NULL);
+ NULL, schemaLocation, NULL, NULL, NULL);
return (pctxt->err);
}
/*
@@ -10767,8 +10788,8 @@ xmlSchemaParseImport(xmlSchemaParserCtxtPtr pctxt, xmlSchemaPtr schema,
thisTargetNamespace = WXS_BUCKET(pctxt)->origTargetNamespace;
if (namespaceName != NULL) {
/*
- * 1.1 If the namespace [attribute] is present, then its �actual value�
- * must not match the �actual value� of the enclosing <schema>'s
+ * 1.1 If the namespace [attribute] is present, then its `actual value`
+ * must not match the `actual value` of the enclosing <schema>'s
* targetNamespace [attribute].
*/
if (xmlStrEqual(thisTargetNamespace, namespaceName)) {
@@ -10969,7 +10990,7 @@ xmlSchemaParseIncludeOrRedefine(xmlSchemaParserCtxtPtr pctxt,
* for inclusions, since the that was the feedback from the
* schema people. I.e. the following spec piece will *not* be
* satisfied:
- * SPEC src-include: "It is not an error for the �actual value� of the
+ * SPEC src-include: "It is not an error for the `actual value` of the
* schemaLocation [attribute] to fail to resolve it all, in which
* case no corresponding inclusion is performed.
* So do we need a warning report here?"
@@ -10986,7 +11007,7 @@ xmlSchemaParseIncludeOrRedefine(xmlSchemaParserCtxtPtr pctxt,
*
* SPEC src-redefine (1)
* "If there are any element information items among the [children]
- * other than <annotation> then the �actual value� of the
+ * other than <annotation> then the `actual value` of the
* schemaLocation [attribute] must successfully resolve."
* TODO: Ask the WG if a the location has always to resolve
* here as well!
@@ -11006,9 +11027,9 @@ xmlSchemaParseIncludeOrRedefine(xmlSchemaParserCtxtPtr pctxt,
if (bucket->origTargetNamespace != NULL) {
/*
* SPEC src-include (2.1)
- * "SII has a targetNamespace [attribute], and its �actual
- * value� is identical to the �actual value� of the targetNamespace
- * [attribute] of SII� (which must have such an [attribute])."
+ * "SII has a targetNamespace [attribute], and its `actual
+ * value` is identical to the `actual value` of the targetNamespace
+ * [attribute] of SII' (which must have such an [attribute])."
*/
if (pctxt->targetNamespace == NULL) {
xmlSchemaCustomErr(ACTXT_CAST pctxt,
@@ -11356,8 +11377,8 @@ xmlSchemaParseModelGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
/*
* SPEC src-redefine:
* (6.1) "If it has a <group> among its contents at
- * some level the �actual value� of whose ref
- * [attribute] is the same as the �actual value� of
+ * some level the `actual value` of whose ref
+ * [attribute] is the same as the `actual value` of
* its own name attribute plus target namespace, then
* all of the following must be true:"
* (6.1.1) "It must have exactly one such group."
@@ -11382,9 +11403,9 @@ xmlSchemaParseModelGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
xmlChar *str = NULL;
/*
* SPEC src-redefine:
- * (6.1.2) "The �actual value� of both that
+ * (6.1.2) "The `actual value` of both that
* group's minOccurs and maxOccurs [attribute]
- * must be 1 (or �absent�).
+ * must be 1 (or `absent`).
*/
xmlSchemaCustomErr(ACTXT_CAST ctxt,
XML_SCHEMAP_SRC_REDEFINE, child, NULL,
@@ -11498,8 +11519,8 @@ xmlSchemaParseRestriction(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
*
* SPEC (1.2) "...otherwise (<restriction> has no <simpleType> "
* among its [children]), the simple type definition which is
- * the {content type} of the type definition �resolved� to by
- * the �actual value� of the base [attribute]"
+ * the {content type} of the type definition `resolved` to by
+ * the `actual value` of the base [attribute]"
*/
if (xmlSchemaPValAttrQName(ctxt, schema, NULL, node, "base",
&(type->baseNs), &(type->base)) == 0)
@@ -11522,8 +11543,8 @@ xmlSchemaParseRestriction(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
/*
* REDEFINE: SPEC src-redefine (5)
* "Within the [children], each <simpleType> must have a
- * <restriction> among its [children] ... the �actual value� of
- * whose base [attribute] must be the same as the �actual value�
+ * <restriction> among its [children] ... the `actual value` of
+ * whose base [attribute] must be the same as the `actual value`
* of its own name attribute plus target namespace;"
*/
xmlSchemaPCustomErrExt(ctxt, XML_SCHEMAP_SRC_REDEFINE,
@@ -12284,7 +12305,7 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
* SPEC
* "...the third alternative (neither <simpleContent> nor
* <complexContent>) is chosen. This case is understood as shorthand
- * for complex content restricting the �ur-type definition�, and the
+ * for complex content restricting the `ur-type definition`, and the
* details of the mappings should be modified as necessary.
*/
type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
@@ -12353,15 +12374,15 @@ xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
}
/************************************************************************
- * *
- * Validating using Schemas *
- * *
+ * *
+ * Validating using Schemas *
+ * *
************************************************************************/
/************************************************************************
- * *
- * Reading/Writing Schemas *
- * *
+ * *
+ * Reading/Writing Schemas *
+ * *
************************************************************************/
#if 0 /* Will be enabled if it is clear what options are needed. */
@@ -12938,6 +12959,15 @@ xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr pctxt,
if (tmp2 != 1) ret = 0;
sub = sub->next;
}
+
+ /*
+ * epsilon needed to block previous trans from
+ * being allowed to enter back from another
+ * construct
+ */
+ pctxt->state = xmlAutomataNewEpsilon(pctxt->am,
+ pctxt->state, NULL);
+
if (particle->minOccurs == 0) {
xmlAutomataNewEpsilon(pctxt->am, oldstate,
pctxt->state);
@@ -13183,8 +13213,8 @@ xmlSchemaResolveElementReferences(xmlSchemaElementPtr elemDecl,
if ((elemDecl->subtypes == NULL) && (elemDecl->namedType != NULL)) {
xmlSchemaTypePtr type;
- /* (type definition) ... otherwise the type definition �resolved�
- * to by the �actual value� of the type [attribute] ...
+ /* (type definition) ... otherwise the type definition `resolved`
+ * to by the `actual value` of the type [attribute] ...
*/
type = xmlSchemaGetType(ctxt->schema, elemDecl->namedType,
elemDecl->namedTypeNs);
@@ -13222,7 +13252,7 @@ xmlSchemaResolveElementReferences(xmlSchemaElementPtr elemDecl,
/*
* The type definitions is set to:
* SPEC "...the {type definition} of the element
- * declaration �resolved� to by the �actual value�
+ * declaration `resolved` to by the `actual value`
* of the substitutionGroup [attribute], if present"
*/
if (elemDecl->subtypes == NULL)
@@ -13260,8 +13290,8 @@ xmlSchemaResolveUnionMemberTypes(xmlSchemaParserCtxtPtr ctxt,
/*
* SPEC (1) "If the <union> alternative is chosen, then [Definition:]
- * define the explicit members as the type definitions �resolved�
- * to by the items in the �actual value� of the memberTypes [attribute],
+ * define the explicit members as the type definitions `resolved`
+ * to by the items in the `actual value` of the memberTypes [attribute],
* if any, followed by the type definitions corresponding to the
* <simpleType>s among the [children] of <union>, if any."
*/
@@ -13556,7 +13586,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
return (0);
}
/*
- * 3 If both O1 and O2 are sets of (namespace names or �absent�),
+ * 3 If both O1 and O2 are sets of (namespace names or `absent`),
* then the union of those sets must be the value.
*/
if ((completeWild->nsSet != NULL) && (curWild->nsSet != NULL)) {
@@ -13590,7 +13620,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
}
/*
* 4 If the two are negations of different values (namespace names
- * or �absent�), then a pair of not and �absent� must be the value.
+ * or `absent`), then a pair of not and `absent` must be the value.
*/
if ((completeWild->negNsSet != NULL) &&
(curWild->negNsSet != NULL) &&
@@ -13632,7 +13662,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
if (nsFound && absentFound) {
/*
* 5.1 If the set S includes both the negated namespace
- * name and �absent�, then any must be the value.
+ * name and `absent`, then any must be the value.
*/
completeWild->any = 1;
if (completeWild->nsSet != NULL) {
@@ -13646,7 +13676,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
} else if (nsFound && (!absentFound)) {
/*
* 5.2 If the set S includes the negated namespace name
- * but not �absent�, then a pair of not and �absent� must
+ * but not `absent`, then a pair of not and `absent` must
* be the value.
*/
if (completeWild->nsSet != NULL) {
@@ -13661,7 +13691,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
completeWild->negNsSet->value = NULL;
} else if ((!nsFound) && absentFound) {
/*
- * 5.3 If the set S includes �absent� but not the negated
+ * 5.3 If the set S includes `absent` but not the negated
* namespace name, then the union is not expressible.
*/
xmlSchemaPErr(ctxt, completeWild->node,
@@ -13672,7 +13702,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
} else if ((!nsFound) && (!absentFound)) {
/*
* 5.4 If the set S does not include either the negated namespace
- * name or �absent�, then whichever of O1 or O2 is a pair of not
+ * name or `absent`, then whichever of O1 or O2 is a pair of not
* and a namespace name must be the value.
*/
if (completeWild->negNsSet == NULL) {
@@ -13706,7 +13736,7 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
while (cur != NULL) {
if (cur->value == NULL) {
/*
- * 6.1 If the set S includes �absent�, then any must be the
+ * 6.1 If the set S includes `absent`, then any must be the
* value.
*/
completeWild->any = 1;
@@ -13724,8 +13754,8 @@ xmlSchemaUnionWildcards(xmlSchemaParserCtxtPtr ctxt,
}
if (completeWild->negNsSet == NULL) {
/*
- * 6.2 If the set S does not include �absent�, then a pair of not
- * and �absent� must be the value.
+ * 6.2 If the set S does not include `absent`, then a pair of not
+ * and `absent` must be the value.
*/
if (completeWild->nsSet != NULL) {
xmlSchemaFreeWildcardNsSet(completeWild->nsSet);
@@ -13808,9 +13838,9 @@ xmlSchemaIntersectWildcards(xmlSchemaParserCtxtPtr ctxt,
}
/*
* 3 If either O1 or O2 is a pair of not and a value (a namespace
- * name or �absent�) and the other is a set of (namespace names or
- * �absent�), then that set, minus the negated value if it was in
- * the set, minus �absent� if it was in the set, must be the value.
+ * name or `absent`) and the other is a set of (namespace names or
+ * `absent`), then that set, minus the negated value if it was in
+ * the set, minus `absent` if it was in the set, must be the value.
*/
if (((completeWild->negNsSet != NULL) && (curWild->nsSet != NULL)) ||
((curWild->negNsSet != NULL) && (completeWild->nsSet != NULL))) {
@@ -13859,7 +13889,7 @@ xmlSchemaIntersectWildcards(xmlSchemaParserCtxtPtr ctxt,
return(0);
}
/*
- * 4 If both O1 and O2 are sets of (namespace names or �absent�),
+ * 4 If both O1 and O2 are sets of (namespace names or `absent`),
* then the intersection of those sets must be the value.
*/
if ((completeWild->nsSet != NULL) && (curWild->nsSet != NULL)) {
@@ -13909,7 +13939,7 @@ xmlSchemaIntersectWildcards(xmlSchemaParserCtxtPtr ctxt,
}
/*
* 6 If the one is a negation of a namespace name and the other
- * is a negation of �absent�, then the one which is the negation
+ * is a negation of `absent`, then the one which is the negation
* of a namespace name must be the value.
*/
if ((completeWild->negNsSet != NULL) && (curWild->negNsSet != NULL) &&
@@ -13941,7 +13971,7 @@ xmlSchemaCheckCOSNSSubset(xmlSchemaWildcardPtr sub,
if (super->any)
return (0);
/*
- * 2.1 sub must be a pair of not and a namespace name or �absent�.
+ * 2.1 sub must be a pair of not and a namespace name or `absent`.
* 2.2 super must be a pair of not and the same value.
*/
if ((sub->negNsSet != NULL) &&
@@ -13949,7 +13979,7 @@ xmlSchemaCheckCOSNSSubset(xmlSchemaWildcardPtr sub,
(sub->negNsSet->value == super->negNsSet->value))
return (0);
/*
- * 3.1 sub must be a set whose members are either namespace names or �absent�.
+ * 3.1 sub must be a set whose members are either namespace names or `absent`.
*/
if (sub->nsSet != NULL) {
/*
@@ -13980,7 +14010,7 @@ xmlSchemaCheckCOSNSSubset(xmlSchemaWildcardPtr sub,
xmlSchemaWildcardNsPtr cur;
/*
* 3.2.2 super must be a pair of not and a namespace name or
- * �absent� and that value must not be in sub's set.
+ * `absent` and that value must not be in sub's set.
*/
cur = sub->nsSet;
while (cur != NULL) {
@@ -14142,7 +14172,7 @@ xmlSchemaCheckDerivationOKRestriction2to4(xmlSchemaParserCtxtPtr pctxt,
* SPEC (2.1.2) "R's {attribute declaration}'s
* {type definition} must be validly derived from
* B's {type definition} given the empty set as
- * defined in Type Derivation OK (Simple) (�3.14.6)."
+ * defined in Type Derivation OK (Simple) ($3.14.6)."
*/
xmlSchemaPAttrUseErr4(pctxt,
XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2,
@@ -14174,8 +14204,8 @@ xmlSchemaCheckDerivationOKRestriction2to4(xmlSchemaParserCtxtPtr pctxt,
/*
* 2.1.3 ... one of the following must be true
*
- * 2.1.3.1 B's �effective value constraint� is
- * �absent� or default.
+ * 2.1.3.1 B's `effective value constraint` is
+ * `absent` or default.
*/
if ((bEffValue != NULL) &&
(effFixed == 1)) {
@@ -14184,7 +14214,7 @@ xmlSchemaCheckDerivationOKRestriction2to4(xmlSchemaParserCtxtPtr pctxt,
xmlSchemaGetEffectiveValueConstraint(bcur,
&effFixed, &rEffValue, NULL);
/*
- * 2.1.3.2 R's �effective value constraint� is
+ * 2.1.3.2 R's `effective value constraint` is
* fixed with the same string as B's.
* MAYBE TODO: Compare the computed values.
* Hmm, it says "same string" so
@@ -14218,9 +14248,9 @@ not_found:
/*
* (2.2) "otherwise the {base type definition} must have an
* {attribute wildcard} and the {target namespace} of the
- * R's {attribute declaration} must be �valid� with respect
+ * R's {attribute declaration} must be `valid` with respect
* to that wildcard, as defined in Wildcard allows Namespace
- * Name (�3.10.4)."
+ * Name ($3.10.4)."
*/
if ((baseWild == NULL) ||
(xmlSchemaCheckCVCWildcardNamespace(baseWild,
@@ -14318,7 +14348,7 @@ not_found:
* (4.2) "The complex type definition's {attribute wildcard}'s
* {namespace constraint} must be a subset of the {base type
* definition}'s {attribute wildcard}'s {namespace constraint},
- * as defined by Wildcard Subset (�3.10.6)."
+ * as defined by Wildcard Subset ($3.10.6)."
*/
xmlSchemaCustomErr4(ACTXT_CAST pctxt,
XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2,
@@ -14332,8 +14362,8 @@ not_found:
FREE_AND_NULL(str);
return(pctxt->err);
}
- /* 4.3 Unless the {base type definition} is the �ur-type
- * definition�, the complex type definition's {attribute
+ /* 4.3 Unless the {base type definition} is the `ur-type
+ * definition`, the complex type definition's {attribute
* wildcard}'s {process contents} must be identical to or
* stronger than the {base type definition}'s {attribute
* wildcard}'s {process contents}, where strict is stronger
@@ -14519,7 +14549,7 @@ inherit_next: {}
if (WXS_IS_EXTENSION(type)) {
if (baseType->attributeWildcard != NULL) {
/*
- * (3.2.2.1) "If the �base wildcard� is non-�absent�, then
+ * (3.2.2.1) "If the `base wildcard` is non-`absent`, then
* the appropriate case among the following:"
*/
if (type->attributeWildcard != NULL) {
@@ -14527,26 +14557,26 @@ inherit_next: {}
* Union the complete wildcard with the base wildcard.
* SPEC {attribute wildcard}
* (3.2.2.1.2) "otherwise a wildcard whose {process contents}
- * and {annotation} are those of the �complete wildcard�,
+ * and {annotation} are those of the `complete wildcard`,
* and whose {namespace constraint} is the intensional union
- * of the {namespace constraint} of the �complete wildcard�
- * and of the �base wildcard�, as defined in Attribute
- * Wildcard Union (�3.10.6)."
+ * of the {namespace constraint} of the `complete wildcard`
+ * and of the `base wildcard`, as defined in Attribute
+ * Wildcard Union ($3.10.6)."
*/
if (xmlSchemaUnionWildcards(pctxt, type->attributeWildcard,
baseType->attributeWildcard) == -1)
goto exit_failure;
} else {
/*
- * (3.2.2.1.1) "If the �complete wildcard� is �absent�,
- * then the �base wildcard�."
+ * (3.2.2.1.1) "If the `complete wildcard` is `absent`,
+ * then the `base wildcard`."
*/
type->attributeWildcard = baseType->attributeWildcard;
}
} else {
/*
- * (3.2.2.2) "otherwise (the �base wildcard� is �absent�) the
- * �complete wildcard"
+ * (3.2.2.2) "otherwise (the `base wildcard` is `absent`) the
+ * `complete wildcard`"
* NOOP
*/
}
@@ -14554,7 +14584,7 @@ inherit_next: {}
/*
* SPEC {attribute wildcard}
* (3.1) "If the <restriction> alternative is chosen, then the
- * �complete wildcard�;"
+ * `complete wildcard`;"
* NOOP
*/
}
@@ -14803,12 +14833,12 @@ xmlSchemaCheckCOSSTDerivedOK(xmlSchemaAbstractCtxtPtr actxt,
/* 2.2 */
if (type->baseType == baseType) {
/*
- * 2.2.1 D's �base type definition� is B.
+ * 2.2.1 D's `base type definition` is B.
*/
return (0);
}
/*
- * 2.2.2 D's �base type definition� is not the �ur-type definition�
+ * 2.2.2 D's `base type definition` is not the `ur-type definition`
* and is validly derived from B given the subset, as defined by this
* constraint.
*/
@@ -14818,8 +14848,8 @@ xmlSchemaCheckCOSSTDerivedOK(xmlSchemaAbstractCtxtPtr actxt,
return (0);
}
/*
- * 2.2.3 D's {variety} is list or union and B is the �simple ur-type
- * definition�.
+ * 2.2.3 D's {variety} is list or union and B is the `simple ur-type
+ * definition`.
*/
if (WXS_IS_ANY_SIMPLE_TYPE(baseType) &&
(WXS_IS_LIST(type) || WXS_IS_UNION(type))) {
@@ -15131,14 +15161,14 @@ xmlSchemaCheckSTPropsCorrect(xmlSchemaParserCtxtPtr ctxt,
* NOTE: This is somehow redundant, since we actually built a simple type
* to have all the needed information; this acts as an self test.
*/
- /* Base type: If the datatype has been �derived� by �restriction�
- * then the Simple Type Definition component from which it is �derived�,
- * otherwise the Simple Type Definition for anySimpleType (�4.1.6).
+ /* Base type: If the datatype has been `derived` by `restriction`
+ * then the Simple Type Definition component from which it is `derived`,
+ * otherwise the Simple Type Definition for anySimpleType ($4.1.6).
*/
if (baseType == NULL) {
/*
* TODO: Think about: "modulo the impact of Missing
- * Sub-components (�5.3)."
+ * Sub-components ($5.3)."
*/
xmlSchemaPCustomErr(ctxt,
XML_SCHEMAP_ST_PROPS_CORRECT_1,
@@ -15198,10 +15228,10 @@ xmlSchemaCheckSTPropsCorrect(xmlSchemaParserCtxtPtr ctxt,
}
/*
- * 2 All simple type definitions must be derived ultimately from the �simple
- * ur-type definition (so� circular definitions are disallowed). That is, it
- * must be possible to reach a built-in primitive datatype or the �simple
- * ur-type definition� by repeatedly following the {base type definition}.
+ * 2 All simple type definitions must be derived ultimately from the `simple
+ * ur-type definition` (so circular definitions are disallowed). That is, it
+ * must be possible to reach a built-in primitive datatype or the `simple
+ * ur-type definition` by repeatedly following the {base type definition}.
*
* NOTE: this is done in xmlSchemaCheckTypeDefCircular().
*/
@@ -15385,10 +15415,10 @@ xmlSchemaCheckCOSSTRestricts(xmlSchemaParserCtxtPtr pctxt,
}
/*
* MAYBE TODO: (Hmm, not really) Datatypes states:
- * A �list� datatype can be �derived� from an �atomic� datatype
- * whose �lexical space� allows space (such as string or anyURI)or
- * a �union� datatype any of whose {member type definitions}'s
- * �lexical space� allows space.
+ * A `list` datatype can be `derived` from an `atomic` datatype
+ * whose `lexical space` allows space (such as string or anyURI)or
+ * a `union` datatype any of whose {member type definitions}'s
+ * `lexical space` allows space.
*/
} else {
/*
@@ -15425,7 +15455,7 @@ xmlSchemaCheckCOSSTRestricts(xmlSchemaParserCtxtPtr pctxt,
/*
* 2.3.2.3 The {item type definition} must be validly derived
* from the {base type definition}'s {item type definition} given
- * the empty set, as defined in Type Derivation OK (Simple) (�3.14.6).
+ * the empty set, as defined in Type Derivation OK (Simple) ($3.14.6).
*/
{
xmlSchemaTypePtr baseItemType;
@@ -15472,7 +15502,7 @@ xmlSchemaCheckCOSSTRestricts(xmlSchemaParserCtxtPtr pctxt,
case XML_SCHEMA_FACET_WHITESPACE:
/*
* TODO: 2.5.1.2 List datatypes
- * The value of �whiteSpace� is fixed to the value collapse.
+ * The value of `whiteSpace` is fixed to the value collapse.
*/
case XML_SCHEMA_FACET_PATTERN:
case XML_SCHEMA_FACET_ENUMERATION:
@@ -15525,8 +15555,8 @@ xmlSchemaCheckCOSSTRestricts(xmlSchemaParserCtxtPtr pctxt,
member = member->next;
}
/*
- * 3.3.1 If the {base type definition} is the �simple ur-type
- * definition�
+ * 3.3.1 If the {base type definition} is the `simple ur-type
+ * definition`
*/
if (type->baseType->builtInType == XML_SCHEMAS_ANYSIMPLETYPE) {
/*
@@ -15588,7 +15618,7 @@ xmlSchemaCheckCOSSTRestricts(xmlSchemaParserCtxtPtr pctxt,
* 3.3.2.3 The {member type definitions}, in order, must be validly
* derived from the corresponding type definitions in the {base
* type definition}'s {member type definitions} given the empty set,
- * as defined in Type Derivation OK (Simple) (�3.14.6).
+ * as defined in Type Derivation OK (Simple) ($3.14.6).
*/
{
xmlSchemaTypeLinkPtr baseMember;
@@ -15695,7 +15725,7 @@ xmlSchemaCheckSRCSimpleType(xmlSchemaParserCtxtPtr ctxt,
/*
* src-simple-type.1 The corresponding simple type definition, if any,
* must satisfy the conditions set out in Constraints on Simple Type
- * Definition Schema Components (�3.14.6).
+ * Definition Schema Components ($3.14.6).
*/
if (WXS_IS_RESTRICTION(type)) {
/*
@@ -15793,8 +15823,8 @@ xmlSchemaParseCheckCOSValidDefault(xmlSchemaParserCtxtPtr pctxt,
* SPEC (2.1) "its {content type} must be a simple type definition
* or mixed."
* SPEC (2.2.2) "If the {content type} is mixed, then the {content
- * type}'s particle must be �emptiable� as defined by
- * Particle Emptiable (�3.9.6)."
+ * type}'s particle must be `emptiable` as defined by
+ * Particle Emptiable ($3.9.6)."
*/
if ((! WXS_HAS_SIMPLE_CONTENT(type)) &&
((! WXS_HAS_MIXED_CONTENT(type)) || (! WXS_EMPTIABLE(type)))) {
@@ -15810,14 +15840,14 @@ xmlSchemaParseCheckCOSValidDefault(xmlSchemaParserCtxtPtr pctxt,
}
/*
* 1 If the type definition is a simple type definition, then the string
- * must be �valid� with respect to that definition as defined by String
- * Valid (�3.14.4).
+ * must be `valid` with respect to that definition as defined by String
+ * Valid ($3.14.4).
*
* AND
*
* 2.2.1 If the {content type} is a simple type definition, then the
- * string must be �valid� with respect to that simple type definition
- * as defined by String Valid (�3.14.4).
+ * string must be `valid` with respect to that simple type definition
+ * as defined by String Valid ($3.14.4).
*/
if (WXS_IS_SIMPLE(type))
ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST pctxt, node,
@@ -15858,8 +15888,8 @@ xmlSchemaCheckCTPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
*
* SPEC (1) "The values of the properties of a complex type definition must
* be as described in the property tableau in The Complex Type Definition
- * Schema Component (�3.4.1), modulo the impact of Missing
- * Sub-components (�5.3)."
+ * Schema Component ($3.4.1), modulo the impact of Missing
+ * Sub-components ($5.3)."
*/
if ((type->baseType != NULL) &&
(WXS_IS_SIMPLE(type->baseType)) &&
@@ -15876,9 +15906,9 @@ xmlSchemaCheckCTPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
return (XML_SCHEMAP_SRC_CT_1);
}
/*
- * SPEC (3) "Circular definitions are disallowed, except for the �ur-type
- * definition�. That is, it must be possible to reach the �ur-type
- * definition by repeatedly following the {base type definition}."
+ * SPEC (3) "Circular definitions are disallowed, except for the `ur-type
+ * definition`. That is, it must be possible to reach the `ur-type
+ * definition` by repeatedly following the {base type definition}."
*
* NOTE (3) is done in xmlSchemaCheckTypeDefCircular().
*/
@@ -16030,8 +16060,8 @@ xmlSchemaCheckCOSCTDerivedOK(xmlSchemaAbstractCtxtPtr actxt,
if (type->baseType == baseType)
return (0);
/*
- * SPEC (2.3.1) "D's {base type definition} must not be the �ur-type
- * definition�."
+ * SPEC (2.3.1) "D's {base type definition} must not be the `ur-type
+ * definition`."
*/
if (WXS_IS_ANYTYPE(type->baseType))
return (1);
@@ -16048,7 +16078,7 @@ xmlSchemaCheckCOSCTDerivedOK(xmlSchemaAbstractCtxtPtr actxt,
/*
* SPEC (2.3.2.2) "If D's {base type definition} is simple, then it
* must be validly derived from B given the subset as defined in Type
- * Derivation OK (Simple) (�3.14.6).
+ * Derivation OK (Simple) ($3.14.6).
*/
return (xmlSchemaCheckCOSSTDerivedOK(actxt, type->baseType,
baseType, set));
@@ -16188,7 +16218,7 @@ xmlSchemaCheckCOSCTExtends(xmlSchemaParserCtxtPtr ctxt,
* definition must also have one, and the base type definition's
* {attribute wildcard}'s {namespace constraint} must be a subset
* of the complex type definition's {attribute wildcard}'s {namespace
- * constraint}, as defined by Wildcard Subset (�3.10.6)."
+ * constraint}, as defined by Wildcard Subset ($3.10.6)."
*/
/*
@@ -16285,9 +16315,9 @@ xmlSchemaCheckCOSCTExtends(xmlSchemaParserCtxtPtr ctxt,
}
/*
* URGENT TODO SPEC (1.4.3.2.2.2) "The particle of the
- * complex type definition must be a �valid extension�
+ * complex type definition must be a `valid extension`
* of the {base type definition}'s particle, as defined
- * in Particle Valid (Extension) (�3.9.6)."
+ * in Particle Valid (Extension) ($3.9.6)."
*
* NOTE that we won't check "Particle Valid (Extension)",
* since it is ensured by the derivation process in
@@ -16404,7 +16434,7 @@ xmlSchemaCheckDerivationOKRestriction(xmlSchemaParserCtxtPtr ctxt,
if (base->builtInType == XML_SCHEMAS_ANYTYPE) {
/*
* SPEC (5.1) "The {base type definition} must be the
- * �ur-type definition�."
+ * `ur-type definition`."
* PASS
*/
} else if ((type->contentType == XML_SCHEMA_CONTENT_SIMPLE) ||
@@ -16423,7 +16453,7 @@ xmlSchemaCheckDerivationOKRestriction(xmlSchemaParserCtxtPtr ctxt,
* SPEC (5.2.2.1) "The {content type} of the {base type
* definition} must be a simple type definition from which
* the {content type} is validly derived given the empty
- * set as defined in Type Derivation OK (Simple) (�3.14.6)."
+ * set as defined in Type Derivation OK (Simple) ($3.14.6)."
*
* ATTENTION TODO: This seems not needed if the type implicitely
* derived from the base type.
@@ -16454,8 +16484,8 @@ xmlSchemaCheckDerivationOKRestriction(xmlSchemaParserCtxtPtr ctxt,
(xmlSchemaParticlePtr) base->subtypes))) {
/*
* SPEC (5.2.2.2) "The {base type definition} must be mixed
- * and have a particle which is �emptiable� as defined in
- * Particle Emptiable (�3.9.6)."
+ * and have a particle which is `emptiable` as defined in
+ * Particle Emptiable ($3.9.6)."
* PASS
*/
} else {
@@ -16484,7 +16514,7 @@ xmlSchemaCheckDerivationOKRestriction(xmlSchemaParserCtxtPtr ctxt,
/*
* SPEC (5.3.2.2) "The {content type} of the {base type
* definition} must be elementOnly or mixed and have a particle
- * which is �emptiable� as defined in Particle Emptiable (�3.9.6)."
+ * which is `emptiable` as defined in Particle Emptiable ($3.9.6)."
* PASS
*/
} else {
@@ -16517,9 +16547,9 @@ xmlSchemaCheckDerivationOKRestriction(xmlSchemaParserCtxtPtr ctxt,
}
/*
* SPEC (5.4.2) "The particle of the complex type definition itself
- * must be a �valid restriction� of the particle of the {content
+ * must be a `valid restriction` of the particle of the {content
* type} of the {base type definition} as defined in Particle Valid
- * (Restriction) (�3.9.6).
+ * (Restriction) ($3.9.6).
*
* URGENT TODO: (5.4.2)
*/
@@ -16588,7 +16618,7 @@ xmlSchemaCheckSRCCT(xmlSchemaParserCtxtPtr ctxt,
if (! WXS_HAS_SIMPLE_CONTENT(type)) {
/*
* 1 If the <complexContent> alternative is chosen, the type definition
- * �resolved� to by the �actual value� of the base [attribute]
+ * `resolved` to by the `actual value` of the base [attribute]
* must be a complex type definition;
*/
if (! WXS_IS_COMPLEX(base)) {
@@ -16608,7 +16638,7 @@ xmlSchemaCheckSRCCT(xmlSchemaParserCtxtPtr ctxt,
* SPEC
* 2 If the <simpleContent> alternative is chosen, all of the
* following must be true:
- * 2.1 The type definition �resolved� to by the �actual value� of the
+ * 2.1 The type definition `resolved` to by the `actual value` of the
* base [attribute] must be one of the following:
*/
if (WXS_IS_SIMPLE(base)) {
@@ -16714,14 +16744,14 @@ xmlSchemaCheckSRCCT(xmlSchemaParserCtxtPtr ctxt,
/*
* SPEC (3) "The corresponding complex type definition component must
* satisfy the conditions set out in Constraints on Complex Type
- * Definition Schema Components (�3.4.6);"
+ * Definition Schema Components ($3.4.6);"
* NOTE (3) will be done in xmlSchemaTypeFixup().
*/
/*
* SPEC (4) If clause 2.2.1 or clause 2.2.2 in the correspondence specification
* above for {attribute wildcard} is satisfied, the intensional
* intersection must be expressible, as defined in Attribute Wildcard
- * Intersection (�3.10.6).
+ * Intersection ($3.10.6).
* NOTE (4) is done in xmlSchemaFixupTypeAttributeUses().
*/
return (ret);
@@ -16792,7 +16822,7 @@ xmlSchemaCheckRCaseNameAndTypeOK(xmlSchemaParserCtxtPtr ctxt,
return (1);
/*
* SPEC (2) "R's occurrence range is a valid restriction of B's
- * occurrence range as defined by Occurrence Range OK (�3.9.6)."
+ * occurrence range as defined by Occurrence Range OK ($3.9.6)."
*/
if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs,
b->minOccurs, b->maxOccurs) != 0)
@@ -16884,19 +16914,19 @@ xmlSchemaCheckRCaseNSCompat(xmlSchemaParserCtxtPtr ctxt,
{
/* TODO:Error codes (rcase-NSCompat). */
/*
- * SPEC "For an element declaration particle to be a �valid restriction�
+ * SPEC "For an element declaration particle to be a `valid restriction`
* of a wildcard particle all of the following must be true:"
*
- * SPEC (1) "The element declaration's {target namespace} is �valid�
+ * SPEC (1) "The element declaration's {target namespace} is `valid`
* with respect to the wildcard's {namespace constraint} as defined by
- * Wildcard allows Namespace Name (�3.10.4)."
+ * Wildcard allows Namespace Name ($3.10.4)."
*/
if (xmlSchemaCheckCVCWildcardNamespace((xmlSchemaWildcardPtr) b->children,
((xmlSchemaElementPtr) r->children)->targetNamespace) != 0)
return (1);
/*
* SPEC (2) "R's occurrence range is a valid restriction of B's
- * occurrence range as defined by Occurrence Range OK (�3.9.6)."
+ * occurrence range as defined by Occurrence Range OK ($3.9.6)."
*/
if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs,
b->minOccurs, b->maxOccurs) != 0)
@@ -16956,21 +16986,21 @@ xmlSchemaCheckRCaseNSSubset(xmlSchemaParserCtxtPtr ctxt,
/* TODO: Error codes (rcase-NSSubset). */
/*
* SPEC (1) "R's occurrence range is a valid restriction of B's
- * occurrence range as defined by Occurrence Range OK (�3.9.6)."
+ * occurrence range as defined by Occurrence Range OK ($3.9.6)."
*/
if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs,
b->minOccurs, b->maxOccurs))
return (1);
/*
* SPEC (2) "R's {namespace constraint} must be an intensional subset
- * of B's {namespace constraint} as defined by Wildcard Subset (�3.10.6)."
+ * of B's {namespace constraint} as defined by Wildcard Subset ($3.10.6)."
*/
if (xmlSchemaCheckCOSNSSubset((xmlSchemaWildcardPtr) r->children,
(xmlSchemaWildcardPtr) b->children))
return (1);
/*
- * SPEC (3) "Unless B is the content model wildcard of the �ur-type
- * definition�, R's {process contents} must be identical to or stronger
+ * SPEC (3) "Unless B is the content model wildcard of the `ur-type
+ * definition`, R's {process contents} must be identical to or stronger
* than B's {process contents}, where strict is stronger than lax is
* stronger than skip."
*/
@@ -17048,12 +17078,12 @@ xmlSchemaCheckRCaseNSRecurseCheckCardinality(xmlSchemaParserCtxtPtr ctxt,
if ((r->children == NULL) || (r->children->children == NULL))
return (-1);
/*
- * SPEC "For a group particle to be a �valid restriction� of a
+ * SPEC "For a group particle to be a `valid restriction` of a
* wildcard particle..."
*
- * SPEC (1) "Every member of the {particles} of the group is a �valid
- * restriction� of the wildcard as defined by
- * Particle Valid (Restriction) (�3.9.6)."
+ * SPEC (1) "Every member of the {particles} of the group is a `valid
+ * restriction` of the wildcard as defined by
+ * Particle Valid (Restriction) ($3.9.6)."
*/
part = (xmlSchemaParticlePtr) r->children->children;
do {
@@ -17064,7 +17094,7 @@ xmlSchemaCheckRCaseNSRecurseCheckCardinality(xmlSchemaParserCtxtPtr ctxt,
/*
* SPEC (2) "The effective total range of the group [...] is a
* valid restriction of B's occurrence range as defined by
- * Occurrence Range OK (�3.9.6)."
+ * Occurrence Range OK ($3.9.6)."
*/
if (xmlSchemaCheckParticleRangeOK(
xmlSchemaGetParticleTotalRangeMin(r),
@@ -17104,11 +17134,11 @@ xmlSchemaCheckRCaseRecurse(xmlSchemaParserCtxtPtr ctxt,
(r->children->type != b->children->type))
return (-1);
/*
- * SPEC "For an all or sequence group particle to be a �valid
- * restriction� of another group particle with the same {compositor}..."
+ * SPEC "For an all or sequence group particle to be a `valid
+ * restriction` of another group particle with the same {compositor}..."
*
* SPEC (1) "R's occurrence range is a valid restriction of B's
- * occurrence range as defined by Occurrence Range OK (�3.9.6)."
+ * occurrence range as defined by Occurrence Range OK ($3.9.6)."
*/
if (xmlSchemaCheckParticleRangeOK(r->minOccurs, r->maxOccurs,
b->minOccurs, b->maxOccurs))
@@ -17732,7 +17762,7 @@ xmlSchemaFinishMemberTypeDefinitionsProperty(xmlSchemaParserCtxtPtr pctxt,
xmlSchemaTypeLinkPtr link, lastLink, prevLink, subLink, newLink;
/*
* The actual value is then formed by replacing any union type
- * definition in the �explicit members� with the members of their
+ * definition in the `explicit members` with the members of their
* {member type definitions}, in order.
*
* TODO: There's a bug entry at
@@ -17866,8 +17896,8 @@ xmlSchemaTypeFixupWhitespace(xmlSchemaTypePtr type)
}
}
/*
- * For all �atomic� datatypes other than string (and types �derived�
- * by �restriction� from it) the value of whiteSpace is fixed to
+ * For all `atomic` datatypes other than string (and types `derived`
+ * by `restriction` from it) the value of whiteSpace is fixed to
* collapse
*/
{
@@ -18056,7 +18086,7 @@ xmlSchemaFixupSimpleTypeStageTwo(xmlSchemaParserCtxtPtr pctxt,
* SPEC src-simple-type 1
* "The corresponding simple type definition, if any, must satisfy
* the conditions set out in Constraints on Simple Type Definition
- * Schema Components (�3.14.6)."
+ * Schema Components ($3.14.6)."
*/
/*
* Schema Component Constraint: Simple Type Definition Properties Correct
@@ -18316,7 +18346,7 @@ xmlSchemaFixupComplexType(xmlSchemaParserCtxtPtr pctxt,
( ((xmlSchemaTreeItemPtr) particle->children)->children == NULL))) {
if (type->flags & XML_SCHEMAS_TYPE_MIXED) {
/*
- * SPEC (2.1.4) "If the �effective mixed� is true, then
+ * SPEC (2.1.4) "If the `effective mixed` is true, then
* a particle whose properties are as follows:..."
*
* Empty sequence model group with
@@ -18378,7 +18408,7 @@ xmlSchemaFixupComplexType(xmlSchemaParserCtxtPtr pctxt,
if (type->contentType == XML_SCHEMA_CONTENT_EMPTY) {
/*
* SPEC (3.2.1)
- * "If the �effective content� is empty, then the
+ * "If the `effective content` is empty, then the
* {content type} of the [...] base ..."
*/
type->contentType = baseType->contentType;
@@ -18485,7 +18515,7 @@ xmlSchemaFixupComplexType(xmlSchemaParserCtxtPtr pctxt,
particle->children =
((xmlSchemaParticlePtr) baseType->subtypes)->children;
/*
- * SPEC "followed by the �effective content�."
+ * SPEC "followed by the `effective content`."
*/
particle->next = effectiveContent;
/*
@@ -18629,12 +18659,12 @@ xmlSchemaCheckFacet(xmlSchemaFacetPtr facet,
/* 4.3.5.5 Constraints on enumeration Schema Components
* Schema Component Constraint: enumeration valid restriction
- * It is an �error� if any member of {value} is not in the
- * �value space� of {base type definition}.
+ * It is an `error` if any member of {value} is not in the
+ * `value space` of {base type definition}.
*
* minInclusive, maxInclusive, minExclusive, maxExclusive:
- * The value �must� be in the
- * �value space� of the �base type�.
+ * The value `must` be in the
+ * `value space` of the `base type`.
*/
/*
* This function is intended to deliver a compiled value
@@ -19069,9 +19099,9 @@ xmlSchemaCheckAttrGroupCircular(xmlSchemaAttributeGroupPtr attrGr,
* not be an <attributeGroup> with ref [attribute] which resolves
* to the component corresponding to this <attributeGroup>. Indirect
* circularity is also ruled out. That is, when QName resolution
- * (Schema Document) (�3.15.3) is applied to a �QName� arising from
+ * (Schema Document) ($3.15.3) is applied to a `QName` arising from
* any <attributeGroup>s with a ref [attribute] among the [children],
- * it must not be the case that a �QName� is encountered at any depth
+ * it must not be the case that a `QName` is encountered at any depth
* which resolves to the component corresponding to this <attributeGroup>.
*/
if (attrGr->attrUses == NULL)
@@ -19328,8 +19358,8 @@ xmlSchemaCheckAGPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
* SPEC ag-props-correct
* (1) "The values of the properties of an attribute group definition
* must be as described in the property tableau in The Attribute
- * Group Definition Schema Component (�3.6.1), modulo the impact of
- * Missing Sub-components (�5.3);"
+ * Group Definition Schema Component ($3.6.1), modulo the impact of
+ * Missing Sub-components ($5.3);"
*/
if ((attrGr->attrUses != NULL) &&
@@ -19463,8 +19493,8 @@ xmlSchemaCheckAttrPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
* SPEC a-props-correct (1)
* "The values of the properties of an attribute declaration must
* be as described in the property tableau in The Attribute
- * Declaration Schema Component (�3.2.1), modulo the impact of
- * Missing Sub-components (�5.3)."
+ * Declaration Schema Component ($3.2.1), modulo the impact of
+ * Missing Sub-components ($5.3)."
*/
if (WXS_ATTR_TYPEDEF(attr) == NULL)
@@ -19492,9 +19522,9 @@ xmlSchemaCheckAttrPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
/*
* SPEC a-props-correct (2)
* "if there is a {value constraint}, the canonical lexical
- * representation of its value must be �valid� with respect
- * to the {type definition} as defined in String Valid (�3.14.4)."
- * TODO: Don't care about the *cononical* stuff here, this requirement
+ * representation of its value must be `valid` with respect
+ * to the {type definition} as defined in String Valid ($3.14.4)."
+ * TODO: Don't care about the *canonical* stuff here, this requirement
* will be removed in WXS 1.1 anyway.
*/
ret = xmlSchemaVCheckCVCSimpleType(ACTXT_CAST pctxt,
@@ -19561,15 +19591,15 @@ xmlSchemaCheckElemPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
/*
* SPEC (1) "The values of the properties of an element declaration
* must be as described in the property tableau in The Element
- * Declaration Schema Component (�3.3.1), modulo the impact of Missing
- * Sub-components (�5.3)."
+ * Declaration Schema Component ($3.3.1), modulo the impact of Missing
+ * Sub-components ($5.3)."
*/
if (WXS_SUBST_HEAD(elemDecl) != NULL) {
xmlSchemaElementPtr head = WXS_SUBST_HEAD(elemDecl), circ;
xmlSchemaCheckElementDeclComponent(head, pctxt);
/*
- * SPEC (3) "If there is a non-�absent� {substitution group
+ * SPEC (3) "If there is a non-`absent` {substitution group
* affiliation}, then {scope} must be global."
*/
if ((elemDecl->flags & XML_SCHEMAS_ELEM_GLOBAL) == 0) {
@@ -19613,9 +19643,9 @@ xmlSchemaCheckElemPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
* of the element declaration must be validly derived from the {type
* definition} of the {substitution group affiliation}, given the value
* of the {substitution group exclusions} of the {substitution group
- * affiliation}, as defined in Type Derivation OK (Complex) (�3.4.6)
+ * affiliation}, as defined in Type Derivation OK (Complex) ($3.4.6)
* (if the {type definition} is complex) or as defined in
- * Type Derivation OK (Simple) (�3.14.6) (if the {type definition} is
+ * Type Derivation OK (Simple) ($3.14.6) (if the {type definition} is
* simple)."
*
* NOTE: {substitution group exclusions} means the values of the
@@ -19679,9 +19709,9 @@ xmlSchemaCheckElemPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
/*
* SPEC (2) "If there is a {value constraint}, the canonical lexical
- * representation of its value must be �valid� with respect to the
+ * representation of its value must be `valid` with respect to the
* {type definition} as defined in Element Default Valid (Immediate)
- * (�3.3.6)."
+ * ($3.3.6)."
*/
if (typeDef == NULL) {
xmlSchemaPErr(pctxt, elemDecl->node,
@@ -19749,7 +19779,7 @@ xmlSchemaCheckElemSubstGroup(xmlSchemaParserCtxtPtr ctxt,
/*
* SPEC (2) "It is validly substitutable for HEAD subject to HEAD's
* {disallowed substitutions} as the blocking constraint, as defined in
- * Substitution Group OK (Transitive) (�3.3.6)."
+ * Substitution Group OK (Transitive) ($3.3.6)."
*/
for (head = WXS_SUBST_HEAD(elemDecl); head != NULL;
head = WXS_SUBST_HEAD(head)) {
@@ -19882,7 +19912,7 @@ xmlSchemaCheckElementDeclConsistent(xmlSchemaParserCtxtPtr pctxt,
* SPEC Element Declarations Consistent:
* "If the {particles} contains, either directly,
* indirectly (that is, within the {particles} of a
- * contained model group, recursively) or �implicitly�
+ * contained model group, recursively) or `implicitly`
* two or more element declaration particles with
* the same {name} and {target namespace}, then
* all their type definitions must be the same
@@ -20080,12 +20110,12 @@ xmlSchemaAreValuesEqual(xmlSchemaValPtr x,
ptx = xmlSchemaGetPrimitiveType(tx);
pty = xmlSchemaGetPrimitiveType(ty);
/*
- * (1) if a datatype T' is �derived� by �restriction� from an
- * atomic datatype T then the �value space� of T' is a subset of
- * the �value space� of T. */
+ * (1) if a datatype T' is `derived` by `restriction` from an
+ * atomic datatype T then the `value space` of T' is a subset of
+ * the `value space` of T. */
/*
- * (2) if datatypes T' and T'' are �derived� by �restriction�
- * from a common atomic ancestor T then the �value space�s of T'
+ * (2) if datatypes T' and T'' are `derived` by `restriction`
+ * from a common atomic ancestor T then the `value space`s of T'
* and T'' may overlap.
*/
if (ptx != pty)
@@ -20153,7 +20183,7 @@ xmlSchemaResolveAttrUseReferences(xmlSchemaAttributeUsePtr ause,
ref->name, ref->targetNamespace);
if (ause->attrDecl == NULL) {
xmlSchemaPResCompAttrErr(ctxt,
- XML_SCHEMAP_SRC_RESOLVE,
+ XML_SCHEMAP_SRC_RESOLVE,
WXS_BASIC_CAST ause, ause->node,
"ref", ref->name, ref->targetNamespace,
XML_SCHEMA_TYPE_ATTRIBUTE, NULL);
@@ -20186,8 +20216,8 @@ xmlSchemaCheckAttrUsePropsCorrect(xmlSchemaParserCtxtPtr ctxt,
* SPEC au-props-correct (1)
* "The values of the properties of an attribute use must be as
* described in the property tableau in The Attribute Use Schema
- * Component (�3.5.1), modulo the impact of Missing
- * Sub-components (�5.3)."
+ * Component ($3.5.1), modulo the impact of Missing
+ * Sub-components ($5.3)."
*/
if (((WXS_ATTRUSE_DECL(use))->defValue != NULL) &&
@@ -20288,8 +20318,8 @@ xmlSchemaResolveAttrTypeReferences(xmlSchemaAttributePtr item,
/*
* The simple type definition corresponding to the <simpleType> element
* information item in the [children], if present, otherwise the simple
- * type definition �resolved� to by the �actual value� of the type
- * [attribute], if present, otherwise the �simple ur-type definition�.
+ * type definition `resolved` to by the `actual value` of the type
+ * [attribute], if present, otherwise the `simple ur-type definition`.
*/
if (item->flags & XML_SCHEMAS_ATTR_INTERNAL_RESOLVED)
return(0);
@@ -20453,11 +20483,11 @@ xmlSchemaCheckSRCRedefineFirst(xmlSchemaParserCtxtPtr pctxt)
/*
* SPEC src-redefine:
- * (6.2.1) "The �actual value� of its own name attribute plus
- * target namespace must successfully �resolve� to a model
+ * (6.2.1) "The `actual value` of its own name attribute plus
+ * target namespace must successfully `resolve` to a model
* group definition in I."
- * (7.2.1) "The �actual value� of its own name attribute plus
- * target namespace must successfully �resolve� to an attribute
+ * (7.2.1) "The `actual value` of its own name attribute plus
+ * target namespace must successfully `resolve` to an attribute
* group definition in I."
*
@@ -20630,10 +20660,10 @@ xmlSchemaCheckSRCRedefineSecond(xmlSchemaParserCtxtPtr pctxt)
* SPEC src-redefine:
* (6.2.2) "The {model group} of the model group definition
* which corresponds to it per XML Representation of Model
- * Group Definition Schema Components (�3.7.2) must be a
- * �valid restriction� of the {model group} of that model
+ * Group Definition Schema Components ($3.7.2) must be a
+ * `valid restriction` of the {model group} of that model
* group definition in I, as defined in Particle Valid
- * (Restriction) (�3.9.6)."
+ * (Restriction) ($3.9.6)."
*/
break;
case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
@@ -20642,11 +20672,11 @@ xmlSchemaCheckSRCRedefineSecond(xmlSchemaParserCtxtPtr pctxt)
* (7.2.2) "The {attribute uses} and {attribute wildcard} of
* the attribute group definition which corresponds to it
* per XML Representation of Attribute Group Definition Schema
- * Components (�3.6.2) must be �valid restrictions� of the
+ * Components ($3.6.2) must be `valid restrictions` of the
* {attribute uses} and {attribute wildcard} of that attribute
* group definition in I, as defined in clause 2, clause 3 and
* clause 4 of Derivation Valid (Restriction, Complex)
- * (�3.4.6) (where references to the base type definition are
+ * ($3.4.6) (where references to the base type definition are
* understood as references to the attribute group definition
* in I)."
*/
@@ -20821,9 +20851,9 @@ xmlSchemaFixupComponents(xmlSchemaParserCtxtPtr pctxt,
* (6.2.2) The {model group} of the model group definition which
* corresponds to it per XML Representation of Model Group
- * Definition Schema Components (�3.7.2) must be a �valid
- * restriction� of the {model group} of that model group definition
- * in I, as defined in Particle Valid (Restriction) (�3.9.6)."
+ * Definition Schema Components ($3.7.2) must be a `valid
+ * restriction` of the {model group} of that model group definition
+ * in I, as defined in Particle Valid (Restriction) ($3.9.6)."
*/
xmlSchemaCheckSRCRedefineFirst(pctxt);
@@ -21507,8 +21537,8 @@ xmlSchemaGetWhiteSpaceFacetValue(xmlSchemaTypePtr type)
return(XML_SCHEMA_WHITESPACE_REPLACE);
else {
/*
- * For all �atomic� datatypes other than string (and types �derived�
- * by �restriction� from it) the value of whiteSpace is fixed to
+ * For all `atomic` datatypes other than string (and types `derived`
+ * by `restriction` from it) the value of whiteSpace is fixed to
* collapse
* Note that this includes built-in list datatypes.
*/
@@ -21533,16 +21563,16 @@ xmlSchemaGetWhiteSpaceFacetValue(xmlSchemaTypePtr type)
}
/************************************************************************
- * *
- * Simple type validation *
- * *
+ * *
+ * Simple type validation *
+ * *
************************************************************************/
/************************************************************************
- * *
- * DOM Validation code *
- * *
+ * *
+ * DOM Validation code *
+ * *
************************************************************************/
/**
@@ -21936,9 +21966,9 @@ xmlSchemaVAddNodeQName(xmlSchemaValidCtxtPtr vctxt,
}
/************************************************************************
- * *
+ * *
* Validation of identity-constraints (IDC) *
- * *
+ * *
************************************************************************/
/**
@@ -22813,7 +22843,7 @@ xmlSchemaXPathProcessHistory(xmlSchemaValidCtxtPtr vctxt,
xmlChar *str = NULL;
/*
* cvc-identity-constraint:
- * 3 For each node in the �target node set� all
+ * 3 For each node in the `target node set` all
* of the {fields}, with that node as the context
* node, evaluate to either an empty node-set or
* a node-set with exactly one member, which must
@@ -22943,8 +22973,8 @@ create_key:
/*
* 4.1 If the {identity-constraint category} is unique(/key),
- * then no two members of the �qualified node set� have
- * �key-sequences� whose members are pairwise equal, as
+ * then no two members of the `qualified node set` have
+ * `key-sequences` whose members are pairwise equal, as
* defined by Equal in [XML Schemas: Datatypes].
*
* Get the IDC binding from the matcher and check for
@@ -23072,10 +23102,10 @@ selector_key_error:
{
xmlChar *str = NULL;
/*
- * 4.2.1 (KEY) The �target node set� and the
- * �qualified node set� are equal, that is, every
- * member of the �target node set� is also a member
- * of the �qualified node set� and vice versa.
+ * 4.2.1 (KEY) The `target node set` and the
+ * `qualified node set` are equal, that is, every
+ * member of the `target node set` is also a member
+ * of the `qualified node set` and vice versa.
*/
xmlSchemaCustomErr(ACTXT_CAST vctxt,
XML_SCHEMAV_CVC_IDC, NULL,
@@ -23866,9 +23896,9 @@ xmlSchemaCheckCVCIDCKeyRef(xmlSchemaValidCtxtPtr vctxt)
}
/************************************************************************
- * *
- * XML Reader validation code *
- * *
+ * *
+ * XML Reader validation code *
+ * *
************************************************************************/
static xmlSchemaAttrInfoPtr
@@ -24471,14 +24501,14 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAbstractCtxtPtr actxt,
*/
/*
* 2.1 If The definition is ENTITY or is validly derived from ENTITY given
- * the empty set, as defined in Type Derivation OK (Simple) (�3.14.6), then
- * the string must be a �declared entity name�.
+ * the empty set, as defined in Type Derivation OK (Simple) ($3.14.6), then
+ * the string must be a `declared entity name`.
*/
/*
* 2.2 If The definition is ENTITIES or is validly derived from ENTITIES
- * given the empty set, as defined in Type Derivation OK (Simple) (�3.14.6),
- * then every whitespace-delimited substring of the string must be a �declared
- * entity name�.
+ * given the empty set, as defined in Type Derivation OK (Simple) ($3.14.6),
+ * then every whitespace-delimited substring of the string must be a `declared
+ * entity name`.
*/
/*
* 2.3 otherwise no further condition applies.
@@ -24490,8 +24520,8 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAbstractCtxtPtr actxt,
if (WXS_IS_ANY_SIMPLE_TYPE(type) || WXS_IS_ATOMIC(type)) {
xmlSchemaTypePtr biType; /* The built-in type. */
/*
- * SPEC (1.2.1) "if {variety} is �atomic� then the string must �match�
- * a literal in the �lexical space� of {base type definition}"
+ * SPEC (1.2.1) "if {variety} is `atomic` then the string must `match`
+ * a literal in the `lexical space` of {base type definition}"
*/
/*
* Whitespace-normalize.
@@ -24602,9 +24632,9 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAbstractCtxtPtr actxt,
xmlChar *tmpValue = NULL;
unsigned long len = 0;
xmlSchemaValPtr prevVal = NULL, curVal = NULL;
- /* 1.2.2 if {variety} is �list� then the string must be a sequence
- * of white space separated tokens, each of which �match�es a literal
- * in the �lexical space� of {item type definition}
+ /* 1.2.2 if {variety} is `list` then the string must be a sequence
+ * of white space separated tokens, each of which `match`es a literal
+ * in the `lexical space` of {item type definition}
*/
/*
* Note that XML_SCHEMAS_TYPE_NORMVALUENEEDED will be set if
@@ -24685,10 +24715,10 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAbstractCtxtPtr actxt,
} else if (WXS_IS_UNION(type)) {
xmlSchemaTypeLinkPtr memberLink;
/*
- * TODO: For all datatypes �derived� by �union� whiteSpace does
- * not apply directly; however, the normalization behavior of �union�
+ * TODO: For all datatypes `derived` by `union` whiteSpace does
+ * not apply directly; however, the normalization behavior of `union`
* types is controlled by the value of whiteSpace on that one of the
- * �memberTypes� against which the �union� is successfully validated.
+ * `memberTypes` against which the `union` is successfully validated.
*
* This means that the value is normalized by the first validating
* member type, then the facets of the union type are applied. This
@@ -24696,8 +24726,8 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAbstractCtxtPtr actxt,
*/
/*
- * 1.2.3 if {variety} is �union� then the string must �match� a
- * literal in the �lexical space� of at least one member of
+ * 1.2.3 if {variety} is `union` then the string must `match` a
+ * literal in the `lexical space` of at least one member of
* {member type definitions}
*/
memberLink = xmlSchemaGetUnionSimpleTypeMemberTypes(type);
@@ -24736,9 +24766,9 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAbstractCtxtPtr actxt,
*/
if ((ret == 0) && (type->flags & XML_SCHEMAS_TYPE_HAS_FACETS)) {
/*
- * The normalization behavior of �union� types is controlled by
- * the value of whiteSpace on that one of the �memberTypes�
- * against which the �union� is successfully validated.
+ * The normalization behavior of `union` types is controlled by
+ * the value of whiteSpace on that one of the `memberTypes`
+ * against which the `union` is successfully validated.
*/
NORMALIZE(memberLink->type);
ret = xmlSchemaValidateFacets(actxt, node, type,
@@ -24898,14 +24928,14 @@ xmlSchemaProcessXSIType(xmlSchemaValidCtxtPtr vctxt,
/*
* SPEC cvc-elt (3.3.4) : (4.3) (Type Derivation OK)
- * "The �local type definition� must be validly
+ * "The `local type definition` must be validly
* derived from the {type definition} given the union of
* the {disallowed substitutions} and the {type definition}'s
* {prohibited substitutions}, as defined in
- * Type Derivation OK (Complex) (�3.4.6)
+ * Type Derivation OK (Complex) ($3.4.6)
* (if it is a complex type definition),
* or given {disallowed substitutions} as defined in Type
- * Derivation OK (Simple) (�3.14.6) (if it is a simple type
+ * Derivation OK (Simple) ($3.14.6) (if it is a simple type
* definition)."
*
* {disallowed substitutions}: the "block" on the element decl.
@@ -24988,9 +25018,9 @@ xmlSchemaValidateElemDecl(xmlSchemaValidCtxtPtr vctxt)
return (vctxt->err);
}
if (actualType == NULL) {
- VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL,
- "The type definition is absent");
- return (XML_SCHEMAV_CVC_TYPE_1);
+ VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL,
+ "The type definition is absent");
+ return (XML_SCHEMAV_CVC_TYPE_1);
}
if (vctxt->nbAttrInfos != 0) {
int ret;
@@ -25080,9 +25110,9 @@ xmlSchemaValidateElemDecl(xmlSchemaValidCtxtPtr vctxt)
* No actual type definition.
*/
if (actualType == NULL) {
- VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL,
- "The type definition is absent");
- return (XML_SCHEMAV_CVC_TYPE_1);
+ VERROR(XML_SCHEMAV_CVC_TYPE_1, NULL,
+ "The type definition is absent");
+ return (XML_SCHEMAV_CVC_TYPE_1);
}
/*
* Remember the actual type definition.
@@ -25176,8 +25206,8 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
/*
* SPEC (cvc-attribute)
- * (1) "The declaration must not be �absent� (see Missing
- * Sub-components (�5.3) for how this can fail to be
+ * (1) "The declaration must not be `absent` (see Missing
+ * Sub-components ($5.3) for how this can fail to be
* the case)."
* (2) "Its {type definition} must not be absent."
*
@@ -25227,15 +25257,15 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
* use with an {attribute declaration} whose {name} matches
* the attribute information item's [local name] and whose
* {target namespace} is identical to the attribute information
- * item's [namespace name] (where an �absent� {target namespace}
+ * item's [namespace name] (where an `absent` {target namespace}
* is taken to be identical to a [namespace name] with no value),
- * then the attribute information must be �valid� with respect
+ * then the attribute information must be `valid` with respect
* to that attribute use as per Attribute Locally Valid (Use)
- * (�3.5.4). In this case the {attribute declaration} of that
- * attribute use is the �context-determined declaration� for the
+ * ($3.5.4). In this case the {attribute declaration} of that
+ * attribute use is the `context-determined declaration` for the
* attribute information item with respect to Schema-Validity
- * Assessment (Attribute) (�3.2.4) and
- * Assessment Outcome (Attribute) (�3.2.5).
+ * Assessment (Attribute) ($3.2.4) and
+ * Assessment Outcome (Attribute) ($3.2.5).
*/
iattr->state = XML_SCHEMAS_ATTR_ASSESSED;
iattr->use = attrUse;
@@ -25312,13 +25342,13 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
continue;
/*
* SPEC (cvc-complex-type)
- * (3.2.2) "The attribute information item must be �valid� with
- * respect to it as defined in Item Valid (Wildcard) (�3.10.4)."
+ * (3.2.2) "The attribute information item must be `valid` with
+ * respect to it as defined in Item Valid (Wildcard) ($3.10.4)."
*
* SPEC Item Valid (Wildcard) (cvc-wildcard)
- * "... its [namespace name] must be �valid� with respect to
+ * "... its [namespace name] must be `valid` with respect to
* the wildcard constraint, as defined in Wildcard allows
- * Namespace Name (�3.10.4)."
+ * Namespace Name ($3.10.4)."
*/
if (xmlSchemaCheckCVCWildcardNamespace(type->attributeWildcard,
iattr->nsName) == 0) {
@@ -25354,11 +25384,11 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
* SPEC (cvc-complex-type)
* (5) "Let [Definition:] the wild IDs be the set of
* all attribute information item to which clause 3.2
- * applied and whose �validation� resulted in a
- * �context-determined declaration� of mustFind or no
- * �context-determined declaration� at all, and whose
+ * applied and whose `validation` resulted in a
+ * `context-determined declaration` of mustFind or no
+ * `context-determined declaration` at all, and whose
* [local name] and [namespace name] resolve (as
- * defined by QName resolution (Instance) (�3.15.4)) to
+ * defined by QName resolution (Instance) ($3.15.4)) to
* an attribute declaration whose {type definition} is
* or is derived from ID. Then all of the following
* must be true:"
@@ -25368,7 +25398,7 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
iattr->typeDef, XML_SCHEMAS_ID)) {
/*
* SPEC (5.1) "There must be no more than one
- * item in �wild IDs�."
+ * item in `wild IDs`."
*/
if (wildIDs != 0) {
/* VAL TODO */
@@ -25379,7 +25409,7 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
wildIDs++;
/*
* SPEC (cvc-complex-type)
- * (5.2) "If �wild IDs� is non-empty, there must not
+ * (5.2) "If `wild IDs` is non-empty, there must not
* be any attribute uses among the {attribute uses}
* whose {attribute declaration}'s {type definition}
* is or is derived from ID."
@@ -25589,9 +25619,9 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
fixed = 0;
/*
* SPEC (cvc-attribute)
- * (3) "The item's �normalized value� must be locally �valid�
+ * (3) "The item's `normalized value` must be locally `valid`
* with respect to that {type definition} as per
- * String Valid (�3.14.4)."
+ * String Valid ($3.14.4)."
*
* VAL TODO: Do we already have the
* "normalized attribute value" here?
@@ -25629,9 +25659,9 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
if (fixed) {
/*
* SPEC Attribute Locally Valid (Use) (cvc-au)
- * "For an attribute information item to be�valid�
+ * "For an attribute information item to be `valid`
* with respect to an attribute use its *normalized*
- * value� must match the *canonical* lexical
+ * value must match the *canonical* lexical
* representation of the attribute use's {value
* constraint}value, if it is present and fixed."
*
@@ -25640,7 +25670,7 @@ xmlSchemaVAttributesComplex(xmlSchemaValidCtxtPtr vctxt)
*/
/*
* SPEC Attribute Locally Valid (cvc-attribute)
- * (4) "The item's *actual* value� must match the *value* of
+ * (4) "The item's *actual* value must match the *value* of
* the {value constraint}, if it is present and fixed."
*/
if (iattr->val == NULL) {
@@ -25870,8 +25900,8 @@ xmlSchemaCheckCOSValidDefault(xmlSchemaValidCtxtPtr vctxt,
* SPEC (2.1) "its {content type} must be a simple type definition
* or mixed."
* SPEC (2.2.2) "If the {content type} is mixed, then the {content
- * type}'s particle must be �emptiable� as defined by
- * Particle Emptiable (�3.9.6)."
+ * type}'s particle must be `emptiable` as defined by
+ * Particle Emptiable ($3.9.6)."
*/
if ((! WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) &&
((! WXS_HAS_MIXED_CONTENT(inode->typeDef)) ||
@@ -25887,14 +25917,14 @@ xmlSchemaCheckCOSValidDefault(xmlSchemaValidCtxtPtr vctxt,
}
/*
* 1 If the type definition is a simple type definition, then the string
- * must be �valid� with respect to that definition as defined by String
- * Valid (�3.14.4).
+ * must be `valid` with respect to that definition as defined by String
+ * Valid ($3.14.4).
*
* AND
*
* 2.2.1 If the {content type} is a simple type definition, then the
- * string must be �valid� with respect to that simple type definition
- * as defined by String Valid (�3.14.4).
+ * string must be `valid` with respect to that simple type definition
+ * as defined by String Valid ($3.14.4).
*/
if (WXS_IS_SIMPLE(inode->typeDef)) {
@@ -26035,6 +26065,20 @@ xmlSchemaValidatorPopElem(xmlSchemaValidCtxtPtr vctxt)
"AUTOMATON create on '%s'\n", inode->localName);
#endif
}
+
+ /*
+ * Do not check further content if the node has been nilled
+ */
+ if (INODE_NILLED(inode)) {
+ ret = 0;
+#ifdef DEBUG_AUTOMATA
+ xmlGenericError(xmlGenericErrorContext,
+ "AUTOMATON succeeded on nilled '%s'\n",
+ inode->localName);
+#endif
+ goto skip_nilled;
+ }
+
/*
* Get hold of the still expected content, since a further
* call to xmlRegExecPushString() will loose this information.
@@ -26072,6 +26116,9 @@ xmlSchemaValidatorPopElem(xmlSchemaValidCtxtPtr vctxt)
}
}
+
+skip_nilled:
+
if (inode->typeDef->contentType == XML_SCHEMA_CONTENT_ELEMENTS)
goto end_elem;
@@ -26118,10 +26165,10 @@ character_content:
(! INODE_NILLED(inode))) {
/*
* cvc-elt (3.3.4) : 5.1.1
- * If the �actual type definition� is a �local type definition�
+ * If the `actual type definition` is a `local type definition`
* then the canonical lexical representation of the {value constraint}
- * value must be a valid default for the �actual type definition� as
- * defined in Element Default Valid (Immediate) (�3.3.6).
+ * value must be a valid default for the `actual type definition` as
+ * defined in Element Default Valid (Immediate) ($3.3.6).
*/
/*
* NOTE: 'local' above means types acquired by xsi:type.
@@ -26151,9 +26198,9 @@ character_content:
* cvc-elt (3.3.4) : 5.1.2
* The element information item with the canonical lexical
* representation of the {value constraint} value used as its
- * �normalized value� must be �valid� with respect to the
- * �actual type definition� as defined by Element Locally Valid (Type)
- * (�3.3.4).
+ * `normalized value` must be `valid` with respect to the
+ * `actual type definition` as defined by Element Locally Valid (Type)
+ * ($3.3.4).
*/
if (WXS_IS_SIMPLE(inode->typeDef)) {
ret = xmlSchemaVCheckINodeDataType(vctxt,
@@ -26200,18 +26247,18 @@ default_psvi:
} else if (! INODE_NILLED(inode)) {
/*
- * 5.2.1 The element information item must be �valid� with respect
- * to the �actual type definition� as defined by Element Locally
- * Valid (Type) (�3.3.4).
+ * 5.2.1 The element information item must be `valid` with respect
+ * to the `actual type definition` as defined by Element Locally
+ * Valid (Type) ($3.3.4).
*/
if (WXS_IS_SIMPLE(inode->typeDef)) {
/*
* SPEC (cvc-type) (3.1)
* "If the type definition is a simple type definition, ..."
* (3.1.3) "If clause 3.2 of Element Locally Valid
- * (Element) (�3.3.4) did not apply, then the �normalized value�
- * must be �valid� with respect to the type definition as defined
- * by String Valid (�3.14.4).
+ * (Element) ($3.3.4) did not apply, then the `normalized value`
+ * must be `valid` with respect to the type definition as defined
+ * by String Valid ($3.14.4).
*/
ret = xmlSchemaVCheckINodeDataType(vctxt,
inode, inode->typeDef, inode->value);
@@ -26219,14 +26266,14 @@ default_psvi:
/*
* SPEC (cvc-type) (3.2) "If the type definition is a complex type
* definition, then the element information item must be
- * �valid� with respect to the type definition as per
- * Element Locally Valid (Complex Type) (�3.4.4);"
+ * `valid` with respect to the type definition as per
+ * Element Locally Valid (Complex Type) ($3.4.4);"
*
* SPEC (cvc-complex-type) (2.2)
* "If the {content type} is a simple type definition, ...
- * the �normalized value� of the element information item is
- * �valid� with respect to that simple type definition as
- * defined by String Valid (�3.14.4)."
+ * the `normalized value` of the element information item is
+ * `valid` with respect to that simple type definition as
+ * defined by String Valid ($3.14.4)."
*/
ret = xmlSchemaVCheckINodeDataType(vctxt,
inode, inode->typeDef->contentTypeDef, inode->value);
@@ -26268,8 +26315,8 @@ default_psvi:
*/
if (WXS_HAS_MIXED_CONTENT(inode->typeDef)) {
/*
- * 5.2.2.2.1 If the {content type} of the �actual type
- * definition� is mixed, then the *initial value* of the
+ * 5.2.2.2.1 If the {content type} of the `actual type
+ * definition` is mixed, then the *initial value* of the
* item must match the canonical lexical representation
* of the {value constraint} value.
*
@@ -26293,8 +26340,8 @@ default_psvi:
}
} else if (WXS_HAS_SIMPLE_CONTENT(inode->typeDef)) {
/*
- * 5.2.2.2.2 If the {content type} of the �actual type
- * definition� is a simple type definition, then the
+ * 5.2.2.2.2 If the {content type} of the `actual type
+ * definition` is a simple type definition, then the
* *actual value* of the item must match the canonical
* lexical representation of the {value constraint} value.
*/
@@ -26335,9 +26382,9 @@ end_elem:
goto internal_error;
/*
* MAYBE TODO:
- * SPEC (6) "The element information item must be �valid� with
+ * SPEC (6) "The element information item must be `valid` with
* respect to each of the {identity-constraint definitions} as per
- * Identity-constraint Satisfied (�3.11.4)."
+ * Identity-constraint Satisfied ($3.11.4)."
*/
/*
* PSVI TODO: If we expose IDC node-tables via PSVI then the tables
@@ -26415,8 +26462,8 @@ end_elem:
vctxt->depth--;
vctxt->inode = vctxt->elemInfos[vctxt->depth];
/*
- * VAL TODO: 7 If the element information item is the �validation root�, it must be
- * �valid� per Validation Root Valid (ID/IDREF) (�3.3.4).
+ * VAL TODO: 7 If the element information item is the `validation root`, it must be
+ * `valid` per Validation Root Valid (ID/IDREF) ($3.3.4).
*/
return (ret);
@@ -26497,11 +26544,11 @@ xmlSchemaValidateChildElem(xmlSchemaValidCtxtPtr vctxt)
* Fallback to "anyType".
*
* SPEC (cvc-assess-elt)
- * "If the item cannot be �strictly assessed�, [...]
+ * "If the item cannot be `strictly assessed`, [...]
* an element information item's schema validity may be laxly
- * assessed if its �context-determined declaration� is not
- * skip by �validating� with respect to the �ur-type
- * definition� as per Element Locally Valid (Type) (�3.3.4)."
+ * assessed if its `context-determined declaration` is not
+ * skip by `validating` with respect to the `ur-type
+ * definition` as per Element Locally Valid (Type) ($3.3.4)."
*/
vctxt->inode->typeDef =
xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
@@ -26573,9 +26620,9 @@ xmlSchemaValidateChildElem(xmlSchemaValidCtxtPtr vctxt)
* SPEC (2.4) "If the {content type} is element-only or mixed,
* then the sequence of the element information item's
* element information item [children], if any, taken in
- * order, is �valid� with respect to the {content type}'s
+ * order, is `valid` with respect to the {content type}'s
* particle, as defined in Element Sequence Locally Valid
- * (Particle) (�3.9.4)."
+ * (Particle) ($3.9.4)."
*/
ret = xmlRegExecPushString2(regexCtxt,
vctxt->inode->localName,
@@ -26910,15 +26957,15 @@ type_validation:
if (vctxt->inode->typeDef == NULL) {
vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE;
ret = XML_SCHEMAV_CVC_TYPE_1;
- VERROR(ret, NULL,
- "The type definition is absent");
+ VERROR(ret, NULL,
+ "The type definition is absent");
goto exit;
}
if (vctxt->inode->typeDef->flags & XML_SCHEMAS_TYPE_ABSTRACT) {
vctxt->inode->flags |= XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE;
ret = XML_SCHEMAV_CVC_TYPE_2;
- VERROR(ret, NULL,
- "The type definition is abstract");
+ VERROR(ret, NULL,
+ "The type definition is abstract");
goto exit;
}
/*
@@ -27165,9 +27212,9 @@ internal_error:
#endif
/************************************************************************
- * *
- * SAX validation handlers *
- * *
+ * *
+ * SAX validation handlers *
+ * *
************************************************************************/
/*
@@ -27418,9 +27465,9 @@ internal_error:
}
/************************************************************************
- * *
- * Validation interfaces *
- * *
+ * *
+ * Validation interfaces *
+ * *
************************************************************************/
/**
@@ -27450,8 +27497,28 @@ xmlSchemaNewValidCtxt(xmlSchemaPtr schema)
}
/**
+ * xmlSchemaValidateSetFilename:
+ * @vctxt: the schema validation context
+ * @filename: the file name
+ *
+ * Workaround to provide file error reporting information when this is
+ * not provided by current APIs
+ */
+void
+xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, const char *filename) {
+ if (vctxt == NULL)
+ return;
+ if (vctxt->filename != NULL)
+ xmlFree(vctxt->filename);
+ if (filename != NULL)
+ vctxt->filename = (char *) xmlStrdup((const xmlChar *) filename);
+ else
+ vctxt->filename = NULL;
+}
+
+/**
* xmlSchemaClearValidCtxt:
- * @ctxt: the schema validation context
+ * @vctxt: the schema validation context
*
* Free the resources associated to the schema validation context;
* leaves some fields alive intended for reuse of the context.
@@ -27552,6 +27619,11 @@ xmlSchemaClearValidCtxt(xmlSchemaValidCtxtPtr vctxt)
* where the user provides the dict?
*/
vctxt->dict = xmlDictCreate();
+
+ if (vctxt->filename != NULL) {
+ xmlFree(vctxt->filename);
+ vctxt->filename = NULL;
+ }
}
/**
@@ -27637,6 +27709,8 @@ xmlSchemaFreeValidCtxt(xmlSchemaValidCtxtPtr ctxt)
xmlSchemaItemListFree(ctxt->nodeQNames);
if (ctxt->dict != NULL)
xmlDictFree(ctxt->dict);
+ if (ctxt->filename != NULL)
+ xmlFree(ctxt->filename);
xmlFree(ctxt);
}
@@ -27791,7 +27865,10 @@ xmlSchemaVDocWalk(xmlSchemaValidCtxtPtr vctxt)
const xmlChar *nsName;
/* DOC VAL TODO: Move this to the start function. */
- valRoot = xmlDocGetRootElement(vctxt->doc);
+ if (vctxt->validationRoot != NULL)
+ valRoot = vctxt->validationRoot;
+ else
+ valRoot = xmlDocGetRootElement(vctxt->doc);
if (valRoot == NULL) {
/* VAL TODO: Error code? */
VERROR(1, NULL, "The document has no document element");
@@ -28112,9 +28189,9 @@ xmlSchemaValidateDoc(xmlSchemaValidCtxtPtr ctxt, xmlDocPtr doc)
/************************************************************************
- * *
- * Function and data for SAX streaming API *
- * *
+ * *
+ * Function and data for SAX streaming API *
+ * *
************************************************************************/
typedef struct _xmlSchemaSplitSAXData xmlSchemaSplitSAXData;
typedef xmlSchemaSplitSAXData *xmlSchemaSplitSAXDataPtr;
@@ -28631,6 +28708,63 @@ xmlSchemaSAXUnplug(xmlSchemaSAXPlugPtr plug)
}
/**
+ * xmlSchemaValidateSetLocator:
+ * @vctxt: a schema validation context
+ * @f: the locator function pointer
+ * @ctxt: the locator context
+ *
+ * Allows to set a locator function to the validation context,
+ * which will be used to provide file and line information since
+ * those are not provided as part of the SAX validation flow
+ * Setting @f to NULL disable the locator.
+ */
+
+void
+xmlSchemaValidateSetLocator(xmlSchemaValidCtxtPtr vctxt,
+ xmlSchemaValidityLocatorFunc f,
+ void *ctxt)
+{
+ if (vctxt == NULL) return;
+ vctxt->locFunc = f;
+ vctxt->locCtxt = ctxt;
+}
+
+/**
+ * xmlSchemaValidateStreamLocator:
+ * @ctx: the xmlTextReaderPtr used
+ * @file: returned file information
+ * @line: returned line information
+ *
+ * Internal locator function for the readers
+ *
+ * Returns 0 in case the Schema validation could be (des)activated and
+ * -1 in case of error.
+ */
+static int
+xmlSchemaValidateStreamLocator(void *ctx, const char **file,
+ unsigned long *line) {
+ xmlParserCtxtPtr ctxt;
+
+ if ((ctx == NULL) || ((file == NULL) && (line == NULL)))
+ return(-1);
+
+ if (file != NULL)
+ *file = NULL;
+ if (line != NULL)
+ *line = 0;
+
+ ctxt = (xmlParserCtxtPtr) ctx;
+ if (ctxt->input != NULL) {
+ if (file != NULL)
+ *file = ctxt->input->filename;
+ if (line != NULL)
+ *line = ctxt->input->line;
+ return(0);
+ }
+ return(-1);
+}
+
+/**
* xmlSchemaValidateStream:
* @ctxt: a schema validation context
* @input: the input to use for reading the data
@@ -28673,6 +28807,7 @@ xmlSchemaValidateStream(xmlSchemaValidCtxtPtr ctxt,
xmlCtxtUseOptions(pctxt, options);
#endif
pctxt->linenumbers = 1;
+ xmlSchemaValidateSetLocator(ctxt, xmlSchemaValidateStreamLocator, pctxt);
inputStream = xmlNewIOInputStream(pctxt, input, enc);;
if (inputStream == NULL) {
diff --git a/xmlschemastypes.c b/xmlschemastypes.c
index 4518499..ff64f50 100644
--- a/xmlschemastypes.c
+++ b/xmlschemastypes.c
@@ -40,7 +40,7 @@ extern double xmlXPathPINF;
extern double xmlXPathNINF;
#endif
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
@@ -75,7 +75,7 @@ typedef struct _xmlSchemaValDuration xmlSchemaValDuration;
typedef xmlSchemaValDuration *xmlSchemaValDurationPtr;
struct _xmlSchemaValDuration {
long mon; /* mon stores years also */
- long day;
+ long day;
double sec; /* sec stores min and hour also */
};
@@ -189,7 +189,7 @@ static xmlSchemaTypePtr xmlSchemaTypeNmtokensDef = NULL;
/************************************************************************
* *
- * Datatype error handlers *
+ * Datatype error handlers *
* *
************************************************************************/
/**
@@ -206,7 +206,7 @@ xmlSchemaTypeErrMemory(xmlNodePtr node, const char *extra)
/************************************************************************
* *
- * Base types support *
+ * Base types support *
* *
************************************************************************/
@@ -242,6 +242,10 @@ xmlSchemaNewMinLengthFacet(int value)
}
ret->type = XML_SCHEMA_FACET_MINLENGTH;
ret->val = xmlSchemaNewValue(XML_SCHEMAS_NNINTEGER);
+ if (ret->val == NULL) {
+ xmlFree(ret);
+ return(NULL);
+ }
ret->val->value.decimal.lo = value;
return (ret);
}
@@ -254,7 +258,7 @@ xmlSchemaNewMinLengthFacet(int value)
* Initialize one primitive built-in type
*/
static xmlSchemaTypePtr
-xmlSchemaInitBasicType(const char *name, xmlSchemaValType type,
+xmlSchemaInitBasicType(const char *name, xmlSchemaValType type,
xmlSchemaTypePtr baseType) {
xmlSchemaTypePtr ret;
@@ -267,31 +271,31 @@ xmlSchemaInitBasicType(const char *name, xmlSchemaValType type,
ret->name = (const xmlChar *)name;
ret->targetNamespace = XML_SCHEMAS_NAMESPACE_NAME;
ret->type = XML_SCHEMA_TYPE_BASIC;
- ret->baseType = baseType;
+ ret->baseType = baseType;
ret->contentType = XML_SCHEMA_CONTENT_BASIC;
/*
* Primitive types.
*/
- switch (type) {
- case XML_SCHEMAS_STRING:
- case XML_SCHEMAS_DECIMAL:
- case XML_SCHEMAS_DATE:
- case XML_SCHEMAS_DATETIME:
- case XML_SCHEMAS_TIME:
- case XML_SCHEMAS_GYEAR:
- case XML_SCHEMAS_GYEARMONTH:
- case XML_SCHEMAS_GMONTH:
- case XML_SCHEMAS_GMONTHDAY:
- case XML_SCHEMAS_GDAY:
- case XML_SCHEMAS_DURATION:
- case XML_SCHEMAS_FLOAT:
- case XML_SCHEMAS_DOUBLE:
- case XML_SCHEMAS_BOOLEAN:
- case XML_SCHEMAS_ANYURI:
- case XML_SCHEMAS_HEXBINARY:
- case XML_SCHEMAS_BASE64BINARY:
- case XML_SCHEMAS_QNAME:
- case XML_SCHEMAS_NOTATION:
+ switch (type) {
+ case XML_SCHEMAS_STRING:
+ case XML_SCHEMAS_DECIMAL:
+ case XML_SCHEMAS_DATE:
+ case XML_SCHEMAS_DATETIME:
+ case XML_SCHEMAS_TIME:
+ case XML_SCHEMAS_GYEAR:
+ case XML_SCHEMAS_GYEARMONTH:
+ case XML_SCHEMAS_GMONTH:
+ case XML_SCHEMAS_GMONTHDAY:
+ case XML_SCHEMAS_GDAY:
+ case XML_SCHEMAS_DURATION:
+ case XML_SCHEMAS_FLOAT:
+ case XML_SCHEMAS_DOUBLE:
+ case XML_SCHEMAS_BOOLEAN:
+ case XML_SCHEMAS_ANYURI:
+ case XML_SCHEMAS_HEXBINARY:
+ case XML_SCHEMAS_BASE64BINARY:
+ case XML_SCHEMAS_QNAME:
+ case XML_SCHEMAS_NOTATION:
ret->flags |= XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE;
break;
default:
@@ -309,7 +313,7 @@ xmlSchemaInitBasicType(const char *name, xmlSchemaValType type,
case XML_SCHEMAS_ENTITIES:
ret->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST;
ret->facets = xmlSchemaNewMinLengthFacet(1);
- ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS;
+ ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS;
break;
default:
ret->flags |= XML_SCHEMAS_TYPE_VARIETY_ATOMIC;
@@ -390,19 +394,19 @@ xmlSchemaInitTypes(void)
return;
xmlSchemaTypesBank = xmlHashCreate(40);
-
+
/*
* 3.4.7 Built-in Complex Type Definition
*/
xmlSchemaTypeAnyTypeDef = xmlSchemaInitBasicType("anyType",
- XML_SCHEMAS_ANYTYPE,
+ XML_SCHEMAS_ANYTYPE,
NULL);
xmlSchemaTypeAnyTypeDef->baseType = xmlSchemaTypeAnyTypeDef;
xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED;
/*
* Init the content type.
*/
- xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED;
+ xmlSchemaTypeAnyTypeDef->contentType = XML_SCHEMA_CONTENT_MIXED;
{
xmlSchemaParticlePtr particle;
xmlSchemaModelGroupPtr sequence;
@@ -420,7 +424,7 @@ xmlSchemaInitTypes(void)
return;
}
memset(sequence, 0, sizeof(xmlSchemaModelGroup));
- sequence->type = XML_SCHEMA_TYPE_SEQUENCE;
+ sequence->type = XML_SCHEMA_TYPE_SEQUENCE;
particle->children = (xmlSchemaTreeItemPtr) sequence;
/* Second particle. */
particle = xmlSchemaAddParticle();
@@ -437,9 +441,9 @@ xmlSchemaInitTypes(void)
}
memset(wild, 0, sizeof(xmlSchemaWildcard));
wild->type = XML_SCHEMA_TYPE_ANY;
- wild->any = 1;
- wild->processContents = XML_SCHEMAS_ANY_LAX;
- particle->children = (xmlSchemaTreeItemPtr) wild;
+ wild->any = 1;
+ wild->processContents = XML_SCHEMAS_ANY_LAX;
+ particle->children = (xmlSchemaTreeItemPtr) wild;
/*
* Create the attribute wildcard.
*/
@@ -451,10 +455,10 @@ xmlSchemaInitTypes(void)
}
memset(wild, 0, sizeof(xmlSchemaWildcard));
wild->any = 1;
- wild->processContents = XML_SCHEMAS_ANY_LAX;
+ wild->processContents = XML_SCHEMAS_ANY_LAX;
xmlSchemaTypeAnyTypeDef->attributeWildcard = wild;
}
- xmlSchemaTypeAnySimpleTypeDef = xmlSchemaInitBasicType("anySimpleType",
+ xmlSchemaTypeAnySimpleTypeDef = xmlSchemaInitBasicType("anySimpleType",
XML_SCHEMAS_ANYSIMPLETYPE,
xmlSchemaTypeAnyTypeDef);
/*
@@ -513,7 +517,7 @@ xmlSchemaInitTypes(void)
xmlSchemaTypeAnySimpleTypeDef);
xmlSchemaTypeNotationDef = xmlSchemaInitBasicType("NOTATION",
XML_SCHEMAS_NOTATION,
- xmlSchemaTypeAnySimpleTypeDef);
+ xmlSchemaTypeAnySimpleTypeDef);
xmlSchemaTypeQNameDef = xmlSchemaInitBasicType("QName",
XML_SCHEMAS_QNAME,
xmlSchemaTypeAnySimpleTypeDef);
@@ -583,7 +587,7 @@ xmlSchemaInitTypes(void)
xmlSchemaTypeNCNameDef);
xmlSchemaTypeIdrefDef = xmlSchemaInitBasicType("IDREF",
XML_SCHEMAS_IDREF,
- xmlSchemaTypeNCNameDef);
+ xmlSchemaTypeNCNameDef);
xmlSchemaTypeEntityDef = xmlSchemaInitBasicType("ENTITY",
XML_SCHEMAS_ENTITY,
xmlSchemaTypeNCNameDef);
@@ -615,7 +619,7 @@ xmlSchemaInitTypes(void)
*
* Cleanup the default XML Schemas type library
*/
-void
+void
xmlSchemaCleanupTypes(void) {
if (xmlSchemaTypesInitialized == 0)
return;
@@ -629,13 +633,13 @@ xmlSchemaCleanupTypes(void) {
/* Content type. */
particle = (xmlSchemaParticlePtr) xmlSchemaTypeAnyTypeDef->subtypes;
/* Wildcard. */
- xmlSchemaFreeWildcard((xmlSchemaWildcardPtr)
+ xmlSchemaFreeWildcard((xmlSchemaWildcardPtr)
particle->children->children->children);
xmlFree((xmlSchemaParticlePtr) particle->children->children);
/* Sequence model group. */
xmlFree((xmlSchemaModelGroupPtr) particle->children);
xmlFree((xmlSchemaParticlePtr) particle);
- xmlSchemaTypeAnyTypeDef->subtypes = NULL;
+ xmlSchemaTypeAnyTypeDef->subtypes = NULL;
}
xmlHashFree(xmlSchemaTypesBank, (xmlHashDeallocator) xmlSchemaFreeType);
xmlSchemaTypesInitialized = 0;
@@ -665,12 +669,12 @@ xmlSchemaIsBuiltInTypeFacet(xmlSchemaTypePtr type, int facetType)
(facetType == XML_SCHEMA_FACET_WHITESPACE))
return (1);
else
- return (0);
+ return (0);
case XML_SCHEMAS_STRING:
case XML_SCHEMAS_NOTATION:
case XML_SCHEMAS_QNAME:
- case XML_SCHEMAS_ANYURI:
- case XML_SCHEMAS_BASE64BINARY:
+ case XML_SCHEMAS_ANYURI:
+ case XML_SCHEMAS_BASE64BINARY:
case XML_SCHEMAS_HEXBINARY:
if ((facetType == XML_SCHEMA_FACET_LENGTH) ||
(facetType == XML_SCHEMA_FACET_MINLENGTH) ||
@@ -693,12 +697,12 @@ xmlSchemaIsBuiltInTypeFacet(xmlSchemaTypePtr type, int facetType)
(facetType == XML_SCHEMA_FACET_MINEXCLUSIVE))
return (1);
else
- return (0);
+ return (0);
case XML_SCHEMAS_TIME:
- case XML_SCHEMAS_GDAY:
+ case XML_SCHEMAS_GDAY:
case XML_SCHEMAS_GMONTH:
- case XML_SCHEMAS_GMONTHDAY:
- case XML_SCHEMAS_GYEAR:
+ case XML_SCHEMAS_GMONTHDAY:
+ case XML_SCHEMAS_GYEAR:
case XML_SCHEMAS_GYEARMONTH:
case XML_SCHEMAS_DATE:
case XML_SCHEMAS_DATETIME:
@@ -714,7 +718,7 @@ xmlSchemaIsBuiltInTypeFacet(xmlSchemaTypePtr type, int facetType)
(facetType == XML_SCHEMA_FACET_MINEXCLUSIVE))
return (1);
else
- return (0);
+ return (0);
default:
break;
}
@@ -736,7 +740,7 @@ xmlSchemaGetBuiltInType(xmlSchemaValType type)
if (xmlSchemaTypesInitialized == 0)
xmlSchemaInitTypes();
switch (type) {
-
+
case XML_SCHEMAS_ANYSIMPLETYPE:
return (xmlSchemaTypeAnySimpleTypeDef);
case XML_SCHEMAS_STRING:
@@ -752,7 +756,7 @@ xmlSchemaGetBuiltInType(xmlSchemaValType type)
case XML_SCHEMAS_GMONTH:
return (xmlSchemaTypeGMonthDef);
case XML_SCHEMAS_GMONTHDAY:
- return (xmlSchemaTypeGMonthDayDef);
+ return (xmlSchemaTypeGMonthDayDef);
case XML_SCHEMAS_GYEAR:
return (xmlSchemaTypeGYearDef);
case XML_SCHEMAS_GYEARMONTH:
@@ -828,7 +832,7 @@ xmlSchemaGetBuiltInType(xmlSchemaValType type)
case XML_SCHEMAS_BASE64BINARY:
return (xmlSchemaTypeBase64BinaryDef);
case XML_SCHEMAS_ANYTYPE:
- return (xmlSchemaTypeAnyTypeDef);
+ return (xmlSchemaTypeAnyTypeDef);
default:
return (NULL);
}
@@ -880,7 +884,7 @@ xmlSchemaValueGetNext(xmlSchemaValPtr cur) {
*/
const xmlChar *
xmlSchemaValueGetAsString(xmlSchemaValPtr val)
-{
+{
if (val == NULL)
return (NULL);
switch (val->type) {
@@ -913,7 +917,7 @@ xmlSchemaValueGetAsString(xmlSchemaValPtr val)
*/
int
xmlSchemaValueGetAsBoolean(xmlSchemaValPtr val)
-{
+{
if ((val == NULL) || (val->type != XML_SCHEMAS_BOOLEAN))
return (0);
return (val->value.b);
@@ -924,8 +928,8 @@ xmlSchemaValueGetAsBoolean(xmlSchemaValPtr val)
* @type: the value type
* @value: the value
*
- * Allocate a new simple type value. The type can be
- * of XML_SCHEMAS_STRING.
+ * Allocate a new simple type value. The type can be
+ * of XML_SCHEMAS_STRING.
* WARNING: This one is intended to be expanded for other
* string based types. We need this for anySimpleType as well.
* The given value is consumed and freed with the struct.
@@ -1007,11 +1011,11 @@ xmlSchemaNewQNameValue(const xmlChar *namespaceName,
*
* Cleanup the default XML Schemas type library
*/
-void
+void
xmlSchemaFreeValue(xmlSchemaValPtr value) {
xmlSchemaValPtr prev;
- while (value != NULL) {
+ while (value != NULL) {
switch (value->type) {
case XML_SCHEMAS_STRING:
case XML_SCHEMAS_NORMSTRING:
@@ -1025,7 +1029,7 @@ xmlSchemaFreeValue(xmlSchemaValPtr value) {
case XML_SCHEMAS_IDREF:
case XML_SCHEMAS_IDREFS:
case XML_SCHEMAS_ENTITY:
- case XML_SCHEMAS_ENTITIES:
+ case XML_SCHEMAS_ENTITIES:
case XML_SCHEMAS_ANYURI:
case XML_SCHEMAS_ANYSIMPLETYPE:
if (value->value.str != NULL)
@@ -1052,7 +1056,7 @@ xmlSchemaFreeValue(xmlSchemaValPtr value) {
prev = value;
value = value->next;
xmlFree(prev);
- }
+ }
}
/**
@@ -1088,9 +1092,9 @@ xmlSchemaGetBuiltInListSimpleTypeItemType(xmlSchemaTypePtr type)
if ((type == NULL) || (type->type != XML_SCHEMA_TYPE_BASIC))
return (NULL);
switch (type->builtInType) {
- case XML_SCHEMAS_NMTOKENS:
+ case XML_SCHEMAS_NMTOKENS:
return (xmlSchemaTypeNmtokenDef );
- case XML_SCHEMAS_IDREFS:
+ case XML_SCHEMAS_IDREFS:
return (xmlSchemaTypeIdrefDef);
case XML_SCHEMAS_ENTITIES:
return (xmlSchemaTypeEntityDef);
@@ -1342,13 +1346,13 @@ _xmlSchemaParseGDay (xmlSchemaValDatePtr dt, const xmlChar **str) {
*/
static int
_xmlSchemaParseTime (xmlSchemaValDatePtr dt, const xmlChar **str) {
- const xmlChar *cur = *str;
+ const xmlChar *cur = *str;
int ret = 0;
int value = 0;
PARSE_2_DIGITS(value, cur, ret);
if (ret != 0)
- return ret;
+ return ret;
if (*cur != ':')
return 1;
if (!VALID_HOUR(value))
@@ -1614,7 +1618,7 @@ xmlSchemaValidateDates (xmlSchemaValType type,
const xmlChar *rewnd = cur;
cur++;
- ret = _xmlSchemaParseGDay(&(dt->value.date), &cur);
+ ret = _xmlSchemaParseGDay(&(dt->value.date), &cur);
if ((ret == 0) && ((*cur == 0) || (*cur != ':'))) {
/*
@@ -1852,7 +1856,7 @@ xmlSchemaValidateDuration (xmlSchemaTypePtr type ATTRIBUTE_UNUSED,
}
cur++;
if (collapse)
- while IS_WSP_BLANK_CH(*cur) cur++;
+ while IS_WSP_BLANK_CH(*cur) cur++;
}
if (isneg) {
@@ -1908,13 +1912,13 @@ xmlSchemaStrip(const xmlChar *value) {
*/
xmlChar *
xmlSchemaWhiteSpaceReplace(const xmlChar *value) {
- const xmlChar *cur = value;
- xmlChar *ret = NULL, *mcur;
+ const xmlChar *cur = value;
+ xmlChar *ret = NULL, *mcur;
- if (value == NULL)
+ if (value == NULL)
return(NULL);
-
- while ((*cur != 0) &&
+
+ while ((*cur != 0) &&
(((*cur) != 0xd) && ((*cur) != 0x9) && ((*cur) != 0xa))) {
cur++;
}
@@ -1927,7 +1931,7 @@ xmlSchemaWhiteSpaceReplace(const xmlChar *value) {
if ( ((*mcur) == 0xd) || ((*mcur) == 0x9) || ((*mcur) == 0xa) )
*mcur = ' ';
mcur++;
- } while (*mcur != 0);
+ } while (*mcur != 0);
return(ret);
}
@@ -2072,7 +2076,7 @@ xmlSchemaParseUInt(const xmlChar **str, unsigned long *llo,
const xmlChar *tmp, *cur = *str;
int ret = 0, i = 0;
- if (!((*cur >= '0') && (*cur <= '9')))
+ if (!((*cur >= '0') && (*cur <= '9')))
return(-2);
while (*cur == '0') { /* ignore leading zeroes */
@@ -2148,7 +2152,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
if ((flags == 0) && (value != NULL)) {
if ((type->builtInType != XML_SCHEMAS_STRING) &&
- (type->builtInType != XML_SCHEMAS_ANYTYPE) &&
+ (type->builtInType != XML_SCHEMAS_ANYTYPE) &&
(type->builtInType != XML_SCHEMAS_ANYSIMPLETYPE)) {
if (type->builtInType == XML_SCHEMAS_NORMSTRING)
norm = xmlSchemaWhiteSpaceReplace(value);
@@ -2160,7 +2164,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
}
switch (type->builtInType) {
- case XML_SCHEMAS_UNKNOWN:
+ case XML_SCHEMAS_UNKNOWN:
goto error;
case XML_SCHEMAS_ANYTYPE:
case XML_SCHEMAS_ANYSIMPLETYPE:
@@ -2171,10 +2175,10 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
*val = v;
} else {
goto error;
- }
+ }
}
goto return0;
- case XML_SCHEMAS_STRING:
+ case XML_SCHEMAS_STRING:
if (! normOnTheFly) {
const xmlChar *cur = value;
@@ -2253,7 +2257,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
const xmlChar *cur = value;
unsigned int len, neg, integ, hasLeadingZeroes;
xmlChar cval[25];
- xmlChar *cptr = cval;
+ xmlChar *cptr = cval;
if ((cur == NULL) || (*cur == 0))
goto return1;
@@ -2327,10 +2331,10 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
v = xmlSchemaNewValue(XML_SCHEMAS_DECIMAL);
if (v != NULL) {
/*
- * Now evaluate the significant digits of the number
- */
+ * Now evaluate the significant digits of the number
+ */
if (len != 0) {
-
+
if (integ != ~0u) {
/*
* Get rid of trailing zeroes in the
@@ -2604,8 +2608,8 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
} else {
cur++;
}
- }
- }
+ }
+ }
if (val != NULL) {
v = xmlSchemaNewValue(XML_SCHEMAS_TOKEN);
if (v != NULL) {
@@ -2618,7 +2622,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
goto return0;
}
case XML_SCHEMAS_LANGUAGE:
- if (normOnTheFly) {
+ if (normOnTheFly) {
norm = xmlSchemaCollapseString(value);
if (norm != NULL)
value = norm;
@@ -2903,11 +2907,11 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
}
goto done;
}
- case XML_SCHEMAS_ANYURI:{
+ case XML_SCHEMAS_ANYURI:{
if (*value != 0) {
xmlURIPtr uri;
xmlChar *tmpval, *cur;
- if (normOnTheFly) {
+ if (normOnTheFly) {
norm = xmlSchemaCollapseString(value);
if (norm != NULL)
value = norm;
@@ -2996,12 +3000,12 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
}
case XML_SCHEMAS_BASE64BINARY:{
/* ISSUE:
- *
+ *
* Ignore all stray characters? (yes, currently)
* Worry about long lines? (no, currently)
- *
+ *
* rfc2045.txt:
- *
+ *
* "The encoded output stream must be represented in lines of
* no more than 76 characters each. All line breaks or other
* characters not found in Table 1 must be ignored by decoding
@@ -3412,7 +3416,7 @@ xmlSchemaCompareDecimals(xmlSchemaValPtr x, xmlSchemaValPtr y)
/*
* First test: If x is -ve and not zero
*/
- if ((x->value.decimal.sign) &&
+ if ((x->value.decimal.sign) &&
((x->value.decimal.lo != 0) ||
(x->value.decimal.mi != 0) ||
(x->value.decimal.hi != 0))) {
@@ -3653,7 +3657,7 @@ xmlSchemaDupVal (xmlSchemaValPtr v)
xmlSchemaValPtr ret = xmlSchemaNewValue(v->type);
if (ret == NULL)
return NULL;
-
+
memcpy(ret, v, sizeof(xmlSchemaVal));
ret->next = NULL;
return ret;
@@ -3699,7 +3703,7 @@ xmlSchemaCopyValue(xmlSchemaValPtr val)
if (val->value.str != NULL)
cur->value.str = xmlStrdup(BAD_CAST val->value.str);
break;
- case XML_SCHEMAS_QNAME:
+ case XML_SCHEMAS_QNAME:
case XML_SCHEMAS_NOTATION:
cur = xmlSchemaDupVal(val);
if (val->value.qname.name != NULL)
@@ -3841,16 +3845,17 @@ _xmlSchemaDateAdd (xmlSchemaValPtr dt, xmlSchemaValPtr dur)
if (tyr == 0)
tyr--;
/*
- * Coverity detected an overrun in daysInMonth
+ * Coverity detected an overrun in daysInMonth
* of size 12 at position 12 with index variable "((r)->mon - 1)"
*/
- if (tmon < 0)
- tmon = 0;
+ if (tmon < 1)
+ tmon = 1;
if (tmon > 12)
tmon = 12;
tempdays += MAX_DAYINMONTH(tyr, tmon);
carry = -1;
- } else if (tempdays > (long) MAX_DAYINMONTH(r->year, r->mon)) {
+ } else if (VALID_YEAR(r->year) && VALID_MONTH(r->mon) &&
+ tempdays > (long) MAX_DAYINMONTH(r->year, r->mon)) {
tempdays = tempdays - MAX_DAYINMONTH(r->year, r->mon);
carry = 1;
} else
@@ -3866,7 +3871,7 @@ _xmlSchemaDateAdd (xmlSchemaValPtr dt, xmlSchemaValPtr dur)
r->year++;
}
}
-
+
r->day = tempdays;
/*
@@ -3931,7 +3936,7 @@ xmlSchemaDateNormalize (xmlSchemaValPtr dt, double offset)
* _xmlSchemaDateCastYMToDays:
* @dt: an #xmlSchemaValPtr
*
- * Convert mon and year of @dt to total number of days. Take the
+ * Convert mon and year of @dt to total number of days. Take the
* number of years since (or before) 1 AD and add the number of leap
* years. This is a function because negative
* years must be handled a little differently and there is no zero year.
@@ -4111,7 +4116,7 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y)
ret = -1;
else if (sec > 0.0)
ret = 1;
-
+
}
xmlSchemaFreeValue(p1);
xmlSchemaFreeValue(q1);
@@ -4252,7 +4257,7 @@ xmlSchemaComparePreserveReplaceStrings(const xmlChar *x,
int invert)
{
int tmp;
-
+
while ((*x != 0) && (*y != 0)) {
if (IS_WSP_REPLACE_CH(*y)) {
if (! IS_WSP_SPACE_CH(*x)) {
@@ -4267,7 +4272,7 @@ xmlSchemaComparePreserveReplaceStrings(const xmlChar *x,
else
return(1);
}
- }
+ }
} else {
tmp = *x - *y;
if (tmp < 0) {
@@ -4321,7 +4326,7 @@ xmlSchemaComparePreserveCollapseStrings(const xmlChar *x,
{
int tmp;
- /*
+ /*
* Skip leading blank chars of the collapsed string.
*/
while IS_WSP_BLANK_CH(*y)
@@ -4410,12 +4415,12 @@ xmlSchemaCompareReplaceCollapseStrings(const xmlChar *x,
{
int tmp;
- /*
+ /*
* Skip leading blank chars of the collapsed string.
*/
while IS_WSP_BLANK_CH(*y)
y++;
-
+
while ((*x != 0) && (*y != 0)) {
if IS_WSP_BLANK_CH(*y) {
if (! IS_WSP_BLANK_CH(*x)) {
@@ -4435,8 +4440,8 @@ xmlSchemaCompareReplaceCollapseStrings(const xmlChar *x,
}
}
x++;
- y++;
- /*
+ y++;
+ /*
* Skip contiguous blank chars of the collapsed string.
*/
while IS_WSP_BLANK_CH(*y)
@@ -4470,7 +4475,7 @@ xmlSchemaCompareReplaceCollapseStrings(const xmlChar *x,
return(-1);
else
return(1);
- }
+ }
if (*y != 0) {
/*
* Skip trailing blank chars of the collapsed string.
@@ -4503,27 +4508,27 @@ xmlSchemaCompareReplacedStrings(const xmlChar *x,
const xmlChar *y)
{
int tmp;
-
+
while ((*x != 0) && (*y != 0)) {
if IS_WSP_BLANK_CH(*y) {
if (! IS_WSP_BLANK_CH(*x)) {
if ((*x - 0x20) < 0)
- return(-1);
+ return(-1);
else
return(1);
- }
+ }
} else {
if IS_WSP_BLANK_CH(*x) {
if ((0x20 - *y) < 0)
- return(-1);
+ return(-1);
else
return(1);
}
tmp = *x - *y;
if (tmp < 0)
- return(-1);
+ return(-1);
if (tmp > 0)
- return(1);
+ return(1);
}
x++;
y++;
@@ -4549,7 +4554,7 @@ static int
xmlSchemaCompareNormStrings(const xmlChar *x,
const xmlChar *y) {
int tmp;
-
+
while (IS_BLANK_CH(*x)) x++;
while (IS_BLANK_CH(*y)) y++;
while ((*x != 0) && (*y != 0)) {
@@ -4742,13 +4747,13 @@ xmlSchemaCompareValuesInternal(xmlSchemaValType xtype,
(ytype == XML_SCHEMAS_GYEARMONTH))
return (xmlSchemaCompareDates(x, y));
return (-2);
- /*
+ /*
* Note that we will support comparison of string types against
* anySimpleType as well.
*/
case XML_SCHEMAS_ANYSIMPLETYPE:
case XML_SCHEMAS_STRING:
- case XML_SCHEMAS_NORMSTRING:
+ case XML_SCHEMAS_NORMSTRING:
case XML_SCHEMAS_TOKEN:
case XML_SCHEMAS_LANGUAGE:
case XML_SCHEMAS_NMTOKEN:
@@ -4772,10 +4777,10 @@ xmlSchemaCompareValuesInternal(xmlSchemaValType xtype,
/*
* TODO: Compare those against QName.
*/
- if (ytype == XML_SCHEMAS_QNAME) {
+ if (ytype == XML_SCHEMAS_QNAME) {
TODO
if (y == NULL)
- return(-2);
+ return(-2);
return (-2);
}
if ((ytype == XML_SCHEMAS_ANYSIMPLETYPE) ||
@@ -4797,7 +4802,7 @@ xmlSchemaCompareValuesInternal(xmlSchemaValType xtype,
/* TODO: What about x < y or x > y. */
if (xmlStrEqual(xv, yv))
return (0);
- else
+ else
return (2);
} else if (yws == XML_SCHEMA_WHITESPACE_REPLACE)
return (xmlSchemaComparePreserveReplaceStrings(xv, yv, 0));
@@ -4823,7 +4828,7 @@ xmlSchemaCompareValuesInternal(xmlSchemaValType xtype,
return (xmlSchemaCompareNormStrings(xv, yv));
} else
return (-2);
-
+
}
return (-2);
}
@@ -4894,7 +4899,7 @@ xmlSchemaCompareValuesInternal(xmlSchemaValType xtype,
else
return(-1);
}
- return (-2);
+ return (-2);
case XML_SCHEMAS_IDREFS:
case XML_SCHEMAS_ENTITIES:
case XML_SCHEMAS_NMTOKENS:
@@ -4929,7 +4934,7 @@ xmlSchemaCompareValues(xmlSchemaValPtr x, xmlSchemaValPtr y) {
if (y->type == XML_SCHEMAS_STRING)
yws = XML_SCHEMA_WHITESPACE_PRESERVE;
- else if (x->type == XML_SCHEMAS_NORMSTRING)
+ else if (y->type == XML_SCHEMAS_NORMSTRING)
yws = XML_SCHEMA_WHITESPACE_REPLACE;
else
yws = XML_SCHEMA_WHITESPACE_COLLAPSE;
@@ -5082,7 +5087,7 @@ xmlSchemaValidateListSimpleTypeFacet(xmlSchemaFacetPtr facet,
if (expectedLen != NULL)
*expectedLen = facet->val->value.decimal.lo;
return (XML_SCHEMAV_CVC_LENGTH_VALID);
- }
+ }
} else if (facet->type == XML_SCHEMA_FACET_MINLENGTH) {
if (actualLen < facet->val->value.decimal.lo) {
if (expectedLen != NULL)
@@ -5096,12 +5101,12 @@ xmlSchemaValidateListSimpleTypeFacet(xmlSchemaFacetPtr facet,
return (XML_SCHEMAV_CVC_MAXLENGTH_VALID);
}
} else
- /*
- * NOTE: That we can pass NULL as xmlSchemaValPtr to
+ /*
+ * NOTE: That we can pass NULL as xmlSchemaValPtr to
* xmlSchemaValidateFacet, since the remaining facet types
- * are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION.
+ * are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION.
*/
- return(xmlSchemaValidateFacet(NULL, facet, value, NULL));
+ return(xmlSchemaValidateFacet(NULL, facet, value, NULL));
return (0);
}
@@ -5114,7 +5119,7 @@ xmlSchemaValidateListSimpleTypeFacet(xmlSchemaFacetPtr facet,
* @ws: the whitespace type of the value
* @length: the actual length of the value
*
- * Checka a value against a "length", "minLength" and "maxLength"
+ * Checka a value against a "length", "minLength" and "maxLength"
* facet; sets @length to the computed length of @value.
*
* Returns 0 if the value is valid, a positive error code
@@ -5126,7 +5131,7 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
const xmlChar *value,
xmlSchemaValPtr val,
unsigned long *length,
- xmlSchemaWhitespaceValueType ws)
+ xmlSchemaWhitespaceValueType ws)
{
unsigned int len = 0;
@@ -5137,7 +5142,7 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
(facet->type != XML_SCHEMA_FACET_MAXLENGTH) &&
(facet->type != XML_SCHEMA_FACET_MINLENGTH))
return (-1);
-
+
/*
* TODO: length, maxLength and minLength must be of type
* nonNegativeInteger only. Check if decimal is used somehow.
@@ -5171,7 +5176,7 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE)
len = xmlSchemaNormLen(value);
else
- /*
+ /*
* Should be OK for "preserve" as well.
*/
len = xmlUTF8Strlen(value);
@@ -5183,7 +5188,7 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
case XML_SCHEMAS_NMTOKEN:
case XML_SCHEMAS_NAME:
case XML_SCHEMAS_NCNAME:
- case XML_SCHEMAS_ID:
+ case XML_SCHEMAS_ID:
/*
* FIXME: What exactly to do with anyURI?
*/
@@ -5192,11 +5197,11 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
len = xmlSchemaNormLen(value);
break;
case XML_SCHEMAS_QNAME:
- case XML_SCHEMAS_NOTATION:
- /*
+ case XML_SCHEMAS_NOTATION:
+ /*
* For QName and NOTATION, those facets are
* deprecated and should be ignored.
- */
+ */
return (0);
default:
TODO
@@ -5216,7 +5221,7 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
if (len > facet->val->value.decimal.lo)
return(XML_SCHEMAV_CVC_MAXLENGTH_VALID);
}
-
+
return (0);
}
@@ -5228,18 +5233,18 @@ xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
* @val: the precomputed value
* @length: the actual length of the value
*
- * Checka a value against a "length", "minLength" and "maxLength"
+ * Checka a value against a "length", "minLength" and "maxLength"
* facet; sets @length to the computed length of @value.
*
* Returns 0 if the value is valid, a positive error code
* otherwise and -1 in case of an internal or API error.
*/
int
-xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type,
+xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type,
xmlSchemaFacetPtr facet,
const xmlChar *value,
xmlSchemaValPtr val,
- unsigned long *length)
+ unsigned long *length)
{
if (type == NULL)
return(-1);
@@ -5249,7 +5254,7 @@ xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type,
}
/**
- * xmlSchemaValidateLengthFacetWhtsp:
+ * xmlSchemaValidateLengthFacetWhtsp:
* @facet: the facet to check
* @valType: the built-in type
* @value: the lexical repr. of the value to be validated
@@ -5257,7 +5262,7 @@ xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type,
* @ws: the whitespace type of the value
* @length: the actual length of the value
*
- * Checka a value against a "length", "minLength" and "maxLength"
+ * Checka a value against a "length", "minLength" and "maxLength"
* facet; sets @length to the computed length of @value.
*
* Returns 0 if the value is valid, a positive error code
@@ -5292,7 +5297,7 @@ xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
static int
xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet,
xmlSchemaWhitespaceValueType fws,
- xmlSchemaValType valType,
+ xmlSchemaValType valType,
const xmlChar *value,
xmlSchemaValPtr val,
xmlSchemaWhitespaceValueType ws)
@@ -5304,7 +5309,7 @@ xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet,
switch (facet->type) {
case XML_SCHEMA_FACET_PATTERN:
- /*
+ /*
* NOTE that for patterns, the @value needs to be the normalized
* value, *not* the lexical initial value or the canonical value.
*/
@@ -5405,7 +5410,7 @@ xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet,
else {
switch (valType) {
case XML_SCHEMAS_STRING:
- case XML_SCHEMAS_NORMSTRING:
+ case XML_SCHEMAS_NORMSTRING:
if (ws == XML_SCHEMA_WHITESPACE_UNKNOWN) {
/*
* This is to ensure API compatibility with the old
@@ -5421,13 +5426,13 @@ xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet,
if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE)
len = xmlSchemaNormLen(value);
else
- /*
+ /*
* Should be OK for "preserve" as well.
*/
len = xmlUTF8Strlen(value);
}
break;
- case XML_SCHEMAS_IDREF:
+ case XML_SCHEMAS_IDREF:
case XML_SCHEMAS_TOKEN:
case XML_SCHEMAS_LANGUAGE:
case XML_SCHEMAS_NMTOKEN:
@@ -5436,11 +5441,11 @@ xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet,
case XML_SCHEMAS_ID:
case XML_SCHEMAS_ANYURI:
if (value != NULL)
- len = xmlSchemaNormLen(value);
- break;
+ len = xmlSchemaNormLen(value);
+ break;
default:
TODO
- }
+ }
}
if (facet->type == XML_SCHEMA_FACET_LENGTH) {
if (len != facet->val->value.decimal.lo)
@@ -5550,7 +5555,7 @@ xmlSchemaValidateFacet(xmlSchemaTypePtr base,
int
xmlSchemaValidateFacetWhtsp(xmlSchemaFacetPtr facet,
xmlSchemaWhitespaceValueType fws,
- xmlSchemaValType valType,
+ xmlSchemaValType valType,
const xmlChar *value,
xmlSchemaValPtr val,
xmlSchemaWhitespaceValueType ws)
@@ -5611,13 +5616,13 @@ xmlSchemaFormatFloat(double number, char buffer[], int buffersize)
/*
* Result is in work, and after_fraction points
* just past the fractional part.
- * Use scientific notation
+ * Use scientific notation
*/
integer_place = DBL_DIG + EXPONENT_DIGITS + 1;
fraction_place = DBL_DIG - 1;
snprintf(work, sizeof(work),"%*.*e",
integer_place, fraction_place, number);
- after_fraction = strchr(work + DBL_DIG, 'e');
+ after_fraction = strchr(work + DBL_DIG, 'e');
/* Remove fractional trailing zeroes */
ptr = after_fraction;
while (*(--ptr) == '0')
@@ -5644,12 +5649,12 @@ xmlSchemaFormatFloat(double number, char buffer[], int buffersize)
* @val: the precomputed value
* @retValue: the returned value
*
- * Get a the cononical lexical representation of the value.
+ * Get the canonical lexical representation of the value.
* The caller has to FREE the returned retValue.
*
* WARNING: Some value types are not supported yet, resulting
* in a @retValue of "???".
- *
+ *
* TODO: XML Schema 1.0 does not define canonical representations
* for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay,
* anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.
@@ -5669,7 +5674,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
if (val->value.str == NULL)
*retValue = BAD_CAST xmlStrdup(BAD_CAST "");
else
- *retValue =
+ *retValue =
BAD_CAST xmlStrdup((const xmlChar *) val->value.str);
break;
case XML_SCHEMAS_NORMSTRING:
@@ -5686,7 +5691,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
case XML_SCHEMAS_TOKEN:
case XML_SCHEMAS_LANGUAGE:
case XML_SCHEMAS_NMTOKEN:
- case XML_SCHEMAS_NAME:
+ case XML_SCHEMAS_NAME:
case XML_SCHEMAS_NCNAME:
case XML_SCHEMAS_ID:
case XML_SCHEMAS_IDREF:
@@ -5695,10 +5700,10 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
case XML_SCHEMAS_ANYURI: /* Unclear */
if (val->value.str == NULL)
return (-1);
- *retValue =
+ *retValue =
BAD_CAST xmlSchemaCollapseString(BAD_CAST val->value.str);
if (*retValue == NULL)
- *retValue =
+ *retValue =
BAD_CAST xmlStrdup((const xmlChar *) val->value.str);
break;
case XML_SCHEMAS_QNAME:
@@ -5720,7 +5725,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
/*
* TODO: Lookout for a more simple implementation.
*/
- if ((val->value.decimal.total == 1) &&
+ if ((val->value.decimal.total == 1) &&
(val->value.decimal.lo == 0)) {
*retValue = xmlStrdup(BAD_CAST "0.0");
} else {
@@ -5754,7 +5759,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
else
snprintf(offs, bufsize - (offs - buf),
"%lu", dec.lo);
-
+
if (dec.frac != 0) {
if (dec.frac != dec.total) {
int diff = dec.total - dec.frac;
@@ -5767,7 +5772,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
unsigned int i = 0;
/*
* Insert missing zeroes behind the decimal point.
- */
+ */
while (*(offs + i) != 0)
i++;
if (i < dec.total) {
@@ -5904,7 +5909,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
snprintf((char *) *retValue, 6, "---%02u",
val->value.date.day);
}
- break;
+ break;
case XML_SCHEMAS_GMONTHDAY: {
/* TODO: Unclear in XML Schema 1.0 */
/* TODO: What to do with the timezone? */
@@ -5921,14 +5926,14 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
/* TODO: What to do with the timezone? */
if (val->value.date.year < 0)
snprintf(buf, 35, "-%04ld-%02u",
- labs(val->value.date.year),
+ labs(val->value.date.year),
val->value.date.mon);
else
snprintf(buf, 35, "%04ld-%02u",
val->value.date.year, val->value.date.mon);
*retValue = BAD_CAST xmlStrdup(BAD_CAST buf);
}
- break;
+ break;
case XML_SCHEMAS_TIME:
{
char buf[30];
@@ -5939,8 +5944,8 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
norm = xmlSchemaDateNormalize(val, 0);
if (norm == NULL)
return (-1);
- /*
- * TODO: Check if "%.14g" is portable.
+ /*
+ * TODO: Check if "%.14g" is portable.
*/
snprintf(buf, 30,
"%02u:%02u:%02.14gZ",
@@ -5956,7 +5961,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
val->value.date.sec);
}
*retValue = BAD_CAST xmlStrdup(BAD_CAST buf);
- }
+ }
break;
case XML_SCHEMAS_DATE:
{
@@ -5984,7 +5989,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
val->value.date.day);
}
*retValue = BAD_CAST xmlStrdup(BAD_CAST buf);
- }
+ }
break;
case XML_SCHEMAS_DATETIME:
{
@@ -6028,8 +6033,8 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
*retValue = BAD_CAST xmlStrdup(BAD_CAST val->value.base64.str);
break;
case XML_SCHEMAS_FLOAT: {
- char buf[30];
- /*
+ char buf[30];
+ /*
* |m| < 16777216, -149 <= e <= 104.
* TODO: Handle, NaN, INF, -INF. The format is not
* yet conformant. The c type float does not cover
@@ -6050,7 +6055,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
snprintf(buf, 40, "%01.14e", val->value.d);
*retValue = BAD_CAST xmlStrdup(BAD_CAST buf);
}
- break;
+ break;
default:
*retValue = BAD_CAST xmlStrdup(BAD_CAST "???");
return (1);
@@ -6066,7 +6071,7 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
* @retValue: the returned value
* @ws: the whitespace type of the value
*
- * Get a the cononical representation of the value.
+ * Get the canonical representation of the value.
* The caller has to free the returned @retValue.
*
* Returns 0 if the value could be built, 1 if the value type is
@@ -6109,7 +6114,7 @@ xmlSchemaGetCanonValueWhtsp(xmlSchemaValPtr val,
break;
default:
return (xmlSchemaGetCanonValue(val, retValue));
- }
+ }
return (0);
}
diff --git a/xmlstring.c b/xmlstring.c
index 910f244..a37220d 100644
--- a/xmlstring.c
+++ b/xmlstring.c
@@ -3,7 +3,7 @@
*
* This module provides various utility functions for manipulating
* the xmlChar* type. All functions named xmlStr* have been moved here
- * from the parser.c file (their original home).
+ * from the parser.c file (their original home).
*
* See Copyright for the status of this software.
*
@@ -40,7 +40,7 @@
xmlChar *
xmlStrndup(const xmlChar *cur, int len) {
xmlChar *ret;
-
+
if ((cur == NULL) || (len < 0)) return(NULL);
ret = (xmlChar *) xmlMallocAtomic((len + 1) * sizeof(xmlChar));
if (ret == NULL) {
@@ -85,7 +85,7 @@ xmlChar *
xmlCharStrndup(const char *cur, int len) {
int i;
xmlChar *ret;
-
+
if ((cur == NULL) || (len < 0)) return(NULL);
ret = (xmlChar *) xmlMallocAtomic((len + 1) * sizeof(xmlChar));
if (ret == NULL) {
@@ -170,7 +170,7 @@ xmlStrEqual(const xmlChar *str1, const xmlChar *str2) {
* @name: the localname of the QName
* @str: the second xmlChar *
*
- * Check if a QName is Equal to a given string
+ * Check if a QName is Equal to a given string
*
* Returns 1 if they are equal, 0 if they are different
*/
@@ -340,7 +340,7 @@ xmlStrchr(const xmlChar *str, xmlChar val) {
const xmlChar *
xmlStrstr(const xmlChar *str, const xmlChar *val) {
int n;
-
+
if (str == NULL) return(NULL);
if (val == NULL) return(NULL);
n = xmlStrlen(val);
@@ -368,7 +368,7 @@ xmlStrstr(const xmlChar *str, const xmlChar *val) {
const xmlChar *
xmlStrcasestr(const xmlChar *str, const xmlChar *val) {
int n;
-
+
if (str == NULL) return(NULL);
if (val == NULL) return(NULL);
n = xmlStrlen(val);
@@ -396,7 +396,7 @@ xmlStrcasestr(const xmlChar *str, const xmlChar *val) {
xmlChar *
xmlStrsub(const xmlChar *str, int start, int len) {
int i;
-
+
if (str == NULL) return(NULL);
if (start < 0) return(NULL);
if (len < 0) return(NULL);
@@ -519,7 +519,7 @@ xmlStrcat(xmlChar *cur, const xmlChar *add) {
const xmlChar *p = add;
if (add == NULL) return(cur);
- if (cur == NULL)
+ if (cur == NULL)
return(xmlStrdup(add));
while (*p != 0) p++; /* non input consuming */
@@ -537,20 +537,20 @@ xmlStrcat(xmlChar *cur, const xmlChar *add) {
*
* Returns the number of characters written to @buf or -1 if an error occurs.
*/
-int XMLCDECL
+int XMLCDECL
xmlStrPrintf(xmlChar *buf, int len, const xmlChar *msg, ...) {
va_list args;
int ret;
-
+
if((buf == NULL) || (msg == NULL)) {
return(-1);
}
-
+
va_start(args, msg);
ret = vsnprintf((char *) buf, len, (const char *) msg, args);
va_end(args);
buf[len - 1] = 0; /* be safe ! */
-
+
return(ret);
}
@@ -565,17 +565,17 @@ xmlStrPrintf(xmlChar *buf, int len, const xmlChar *msg, ...) {
*
* Returns the number of characters written to @buf or -1 if an error occurs.
*/
-int
+int
xmlStrVPrintf(xmlChar *buf, int len, const xmlChar *msg, va_list ap) {
int ret;
-
+
if((buf == NULL) || (msg == NULL)) {
return(-1);
}
-
+
ret = vsnprintf((char *) buf, len, (const char *) msg, ap);
buf[len - 1] = 0; /* be safe ! */
-
+
return(ret);
}
@@ -858,7 +858,7 @@ xmlChar *
xmlUTF8Strndup(const xmlChar *utf, int len) {
xmlChar *ret;
int i;
-
+
if ((utf == NULL) || (len < 0)) return(NULL);
i = xmlUTF8Strsize(utf, len);
ret = (xmlChar *) xmlMallocAtomic((i + 1) * sizeof(xmlChar));
diff --git a/xmlunicode.c b/xmlunicode.c
index 450d0f0..ce6e9a4 100644
--- a/xmlunicode.c
+++ b/xmlunicode.c
@@ -204,729 +204,729 @@ static xmlUnicodeRange xmlUnicodeCats[] = {
{"Zp", xmlUCSIsCatZp},
{"Zs", xmlUCSIsCatZs}};
-static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f},
- {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f},
- {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063},
- {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00},
+static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f},
+ {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f},
+ {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063},
+ {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00},
{0xdfff, 0xe000}, {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} };
-static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
- {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd},
+static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
+ {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd},
{0x100000, 0x100000}, {0x10fffd, 0x10fffd} };
static xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL};
-static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603},
- {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f},
- {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff},
+static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603},
+ {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f},
+ {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff},
{0xfff9, 0xfffb} };
-static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
+static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
{0xe0020, 0xe007f} };
static xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL};
-static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a},
- {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6},
- {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4},
- {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a},
- {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5},
- {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5},
- {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559},
- {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
- {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5},
- {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff},
- {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5},
- {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950},
- {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8},
- {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd},
- {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
- {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
- {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
- {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8},
- {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd},
- {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
- {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39},
- {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71},
- {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95},
- {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4},
- {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c},
- {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39},
- {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8},
- {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde},
- {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28},
- {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1},
- {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30},
- {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84},
- {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97},
- {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7},
- {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd},
- {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00},
- {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021},
- {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5},
- {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
- {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
- {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
- {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
- {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
- {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
- {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
- {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
- {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
- {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
- {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877},
- {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
- {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15},
- {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
- {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d},
- {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
- {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
- {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f},
- {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115},
- {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128},
- {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f},
- {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c},
- {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
- {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff},
- {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5},
- {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d},
- {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d},
- {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e},
- {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d},
- {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74},
- {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe},
+static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a},
+ {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6},
+ {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4},
+ {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a},
+ {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5},
+ {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5},
+ {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559},
+ {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
+ {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5},
+ {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff},
+ {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5},
+ {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950},
+ {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8},
+ {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd},
+ {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
+ {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
+ {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
+ {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8},
+ {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd},
+ {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
+ {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39},
+ {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71},
+ {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95},
+ {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4},
+ {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c},
+ {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39},
+ {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8},
+ {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde},
+ {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28},
+ {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1},
+ {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30},
+ {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84},
+ {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97},
+ {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7},
+ {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd},
+ {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00},
+ {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021},
+ {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5},
+ {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
+ {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
+ {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
+ {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
+ {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
+ {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
+ {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
+ {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
+ {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
+ {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
+ {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877},
+ {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
+ {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15},
+ {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
+ {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d},
+ {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
+ {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
+ {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f},
+ {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115},
+ {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128},
+ {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f},
+ {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c},
+ {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
+ {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff},
+ {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5},
+ {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d},
+ {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d},
+ {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e},
+ {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d},
+ {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74},
+ {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe},
{0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} };
-static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
- {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
- {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
- {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d},
- {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
- {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
- {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
- {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
- {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
- {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
- {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
- {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
- {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
- {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
- {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
- {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9},
+static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
+ {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
+ {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
+ {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d},
+ {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
+ {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
+ {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
+ {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
+ {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
+ {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
+ {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
+ {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
+ {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
+ {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
+ {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
+ {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9},
{0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} };
static xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL};
-static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa},
- {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101},
- {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109},
- {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111},
- {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119},
- {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121},
- {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129},
- {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131},
- {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a},
- {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142},
- {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b},
- {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153},
- {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b},
- {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163},
- {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b},
- {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173},
- {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c},
- {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188},
- {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b},
- {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5},
- {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0},
- {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf},
- {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce},
- {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6},
- {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df},
- {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7},
- {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0},
- {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb},
- {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203},
- {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b},
- {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213},
- {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b},
- {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223},
- {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b},
- {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236},
- {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1},
- {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd},
- {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5},
- {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed},
- {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb},
- {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465},
- {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d},
- {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475},
- {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d},
- {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d},
- {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495},
- {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d},
- {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5},
- {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad},
- {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5},
- {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd},
- {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6},
- {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce},
- {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7},
- {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df},
- {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7},
- {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef},
- {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9},
- {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507},
- {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f},
- {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01},
- {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09},
- {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11},
- {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19},
- {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21},
- {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29},
- {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31},
- {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39},
- {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41},
- {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49},
- {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51},
- {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59},
- {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61},
- {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69},
- {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71},
- {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79},
- {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81},
- {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89},
- {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91},
- {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3},
- {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab},
- {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3},
- {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb},
- {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3},
- {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb},
- {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3},
- {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb},
- {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3},
- {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb},
- {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3},
- {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07},
- {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45},
- {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87},
- {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7},
- {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3},
- {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7},
- {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f},
- {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139},
- {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
+static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa},
+ {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101},
+ {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109},
+ {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111},
+ {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119},
+ {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121},
+ {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129},
+ {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131},
+ {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a},
+ {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142},
+ {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b},
+ {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153},
+ {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b},
+ {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163},
+ {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b},
+ {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173},
+ {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c},
+ {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188},
+ {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b},
+ {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5},
+ {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0},
+ {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf},
+ {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce},
+ {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6},
+ {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df},
+ {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7},
+ {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0},
+ {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb},
+ {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203},
+ {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b},
+ {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213},
+ {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b},
+ {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223},
+ {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b},
+ {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236},
+ {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1},
+ {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd},
+ {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5},
+ {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed},
+ {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb},
+ {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465},
+ {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d},
+ {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475},
+ {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d},
+ {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d},
+ {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495},
+ {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d},
+ {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5},
+ {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad},
+ {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5},
+ {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd},
+ {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6},
+ {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce},
+ {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7},
+ {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df},
+ {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7},
+ {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef},
+ {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9},
+ {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507},
+ {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f},
+ {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01},
+ {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09},
+ {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11},
+ {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19},
+ {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21},
+ {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29},
+ {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31},
+ {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39},
+ {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41},
+ {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49},
+ {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51},
+ {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59},
+ {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61},
+ {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69},
+ {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71},
+ {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79},
+ {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81},
+ {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89},
+ {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91},
+ {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3},
+ {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab},
+ {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3},
+ {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb},
+ {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3},
+ {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb},
+ {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3},
+ {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb},
+ {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3},
+ {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb},
+ {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3},
+ {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07},
+ {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45},
+ {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87},
+ {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7},
+ {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3},
+ {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7},
+ {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f},
+ {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139},
+ {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
{0xff41, 0xff5a} };
-static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433},
- {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b},
- {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
- {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537},
- {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3},
- {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f},
- {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1},
- {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e},
- {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f},
+static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433},
+ {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b},
+ {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
+ {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537},
+ {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3},
+ {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f},
+ {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1},
+ {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e},
+ {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f},
{0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9} };
static xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL};
-static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1},
- {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559},
- {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6},
- {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005},
- {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe},
+static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1},
+ {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559},
+ {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6},
+ {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005},
+ {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe},
{0xff70, 0xff70}, {0xff9e, 0xff9f} };
static xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL};
-static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3},
- {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a},
- {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef},
- {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f},
- {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939},
- {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c},
- {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2},
- {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1},
- {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28},
- {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39},
- {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d},
- {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3},
- {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1},
- {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30},
- {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d},
- {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a},
- {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
- {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
- {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
- {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
- {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
- {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c},
- {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61},
- {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd},
- {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45},
- {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a},
- {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3},
- {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0},
- {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd},
- {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b},
- {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055},
- {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
- {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
- {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
- {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
- {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
- {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
- {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
- {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
- {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
- {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
- {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877},
- {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
- {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096},
- {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c},
- {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400},
- {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c},
- {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a},
- {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
- {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
- {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb},
- {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d},
- {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
+static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3},
+ {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a},
+ {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef},
+ {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f},
+ {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939},
+ {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c},
+ {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2},
+ {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1},
+ {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28},
+ {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39},
+ {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d},
+ {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3},
+ {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1},
+ {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30},
+ {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d},
+ {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a},
+ {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
+ {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
+ {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
+ {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
+ {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
+ {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c},
+ {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61},
+ {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd},
+ {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45},
+ {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a},
+ {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3},
+ {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0},
+ {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd},
+ {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b},
+ {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055},
+ {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
+ {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
+ {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
+ {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
+ {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
+ {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
+ {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
+ {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
+ {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
+ {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
+ {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877},
+ {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
+ {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096},
+ {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c},
+ {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400},
+ {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c},
+ {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a},
+ {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
+ {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
+ {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb},
+ {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d},
+ {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
{0xffda, 0xffdc} };
-static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
- {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
- {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
- {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d},
- {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
- {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
+static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
+ {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
+ {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
+ {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d},
+ {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
+ {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
{0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} };
static xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL};
-static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8},
- {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f},
+static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8},
+ {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f},
{0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc} };
static xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL};
-static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6},
- {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104},
- {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c},
- {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114},
- {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c},
- {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124},
- {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c},
- {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134},
- {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d},
- {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145},
- {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e},
- {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156},
- {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e},
- {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166},
- {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e},
- {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176},
- {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182},
- {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191},
- {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0},
- {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9},
- {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5},
- {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7},
- {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1},
- {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9},
- {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2},
- {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea},
- {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4},
- {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe},
- {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206},
- {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e},
- {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216},
- {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e},
- {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226},
- {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e},
- {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a},
- {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab},
- {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc},
- {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4},
- {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec},
- {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa},
- {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464},
- {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c},
- {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474},
- {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c},
- {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c},
- {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494},
- {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c},
- {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4},
- {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac},
- {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4},
- {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc},
- {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5},
- {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd},
- {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6},
- {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de},
- {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6},
- {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee},
- {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8},
- {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506},
- {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e},
- {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02},
- {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a},
- {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12},
- {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a},
- {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22},
- {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a},
- {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32},
- {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a},
- {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42},
- {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a},
- {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52},
- {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a},
- {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62},
- {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a},
- {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72},
- {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a},
- {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82},
- {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a},
- {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92},
- {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4},
- {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac},
- {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4},
- {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc},
- {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4},
- {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc},
- {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4},
- {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc},
- {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4},
- {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec},
- {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4},
- {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d},
- {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59},
- {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f},
- {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec},
- {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d},
- {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124},
- {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131},
+static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6},
+ {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104},
+ {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c},
+ {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114},
+ {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c},
+ {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124},
+ {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c},
+ {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134},
+ {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d},
+ {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145},
+ {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e},
+ {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156},
+ {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e},
+ {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166},
+ {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e},
+ {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176},
+ {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182},
+ {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191},
+ {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0},
+ {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9},
+ {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5},
+ {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7},
+ {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1},
+ {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9},
+ {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2},
+ {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea},
+ {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4},
+ {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe},
+ {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206},
+ {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e},
+ {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216},
+ {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e},
+ {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226},
+ {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e},
+ {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a},
+ {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab},
+ {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc},
+ {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4},
+ {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec},
+ {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa},
+ {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464},
+ {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c},
+ {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474},
+ {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c},
+ {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c},
+ {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494},
+ {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c},
+ {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4},
+ {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac},
+ {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4},
+ {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc},
+ {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5},
+ {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd},
+ {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6},
+ {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de},
+ {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6},
+ {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee},
+ {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8},
+ {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506},
+ {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e},
+ {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02},
+ {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a},
+ {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12},
+ {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a},
+ {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22},
+ {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a},
+ {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32},
+ {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a},
+ {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42},
+ {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a},
+ {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52},
+ {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a},
+ {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62},
+ {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a},
+ {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72},
+ {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a},
+ {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82},
+ {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a},
+ {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92},
+ {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4},
+ {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac},
+ {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4},
+ {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc},
+ {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4},
+ {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc},
+ {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4},
+ {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc},
+ {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4},
+ {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec},
+ {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4},
+ {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d},
+ {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59},
+ {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f},
+ {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec},
+ {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d},
+ {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124},
+ {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131},
{0x2133, 0x2133}, {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a} };
-static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419},
- {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c},
- {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6},
- {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9},
- {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
- {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e},
- {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
- {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed},
- {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689},
- {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734},
+static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419},
+ {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c},
+ {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6},
+ {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9},
+ {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
+ {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e},
+ {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
+ {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed},
+ {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689},
+ {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734},
{0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8} };
static xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL};
-static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f},
- {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
- {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
- {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc},
- {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711},
- {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c},
- {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983},
- {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
- {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c},
- {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71},
- {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9},
- {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c},
- {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57},
- {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd},
- {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48},
- {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc},
- {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
- {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
- {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4},
- {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31},
- {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9},
- {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35},
- {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84},
- {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6},
- {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714},
- {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3},
- {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b},
- {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a},
+static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f},
+ {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
+ {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
+ {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc},
+ {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711},
+ {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c},
+ {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983},
+ {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
+ {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c},
+ {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71},
+ {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9},
+ {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c},
+ {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57},
+ {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd},
+ {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48},
+ {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc},
+ {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
+ {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
+ {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4},
+ {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31},
+ {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9},
+ {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35},
+ {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84},
+ {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6},
+ {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714},
+ {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3},
+ {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b},
+ {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a},
{0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} };
-static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172},
- {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad},
+static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172},
+ {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad},
{0xe0100, 0xe01ef} };
static xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML};
-static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940},
- {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8},
- {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40},
- {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc},
- {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48},
- {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2},
- {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03},
- {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4},
- {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03},
- {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57},
- {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3},
- {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031},
- {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5},
- {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931},
+static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940},
+ {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8},
+ {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40},
+ {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc},
+ {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48},
+ {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2},
+ {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03},
+ {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4},
+ {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03},
+ {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57},
+ {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3},
+ {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031},
+ {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5},
+ {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931},
{0x1933, 0x1938} };
static const xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172} };
static xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL};
-static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f},
- {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd},
- {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615},
- {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4},
- {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a},
- {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948},
- {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981},
- {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3},
- {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48},
- {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc},
- {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3},
- {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43},
- {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0},
- {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d},
- {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6},
- {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca},
- {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a},
- {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc},
- {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37},
- {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87},
- {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030},
- {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059},
- {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773},
- {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd},
- {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928},
- {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1},
- {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e},
+static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f},
+ {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd},
+ {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615},
+ {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4},
+ {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a},
+ {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948},
+ {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981},
+ {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3},
+ {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48},
+ {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc},
+ {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3},
+ {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43},
+ {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0},
+ {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d},
+ {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6},
+ {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca},
+ {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a},
+ {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc},
+ {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37},
+ {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87},
+ {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030},
+ {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059},
+ {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773},
+ {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd},
+ {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928},
+ {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1},
+ {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e},
{0xfe00, 0xfe0f}, {0xfe20, 0xfe23} };
-static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
+static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
{0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} };
static xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL};
-static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3},
- {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9},
- {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f},
- {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f},
- {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
- {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0},
- {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f},
- {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183},
- {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007},
- {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229},
+static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3},
+ {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9},
+ {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f},
+ {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f},
+ {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
+ {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0},
+ {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f},
+ {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183},
+ {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007},
+ {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229},
{0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19} };
-static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323},
+static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323},
{0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
static xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL};
-static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669},
- {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
- {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
- {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
- {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9},
+static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669},
+ {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
+ {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
+ {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
+ {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9},
{0x1810, 0x1819}, {0x1946, 0x194f}, {0xff10, 0xff19} };
static const xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
static xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL};
-static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9},
- {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33},
- {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079},
- {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff},
- {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f},
+static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9},
+ {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33},
+ {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079},
+ {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff},
+ {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f},
{0x3280, 0x3289}, {0x32b1, 0x32bf} };
static const xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323} };
static xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL};
-static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a},
- {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f},
- {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7},
- {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387},
- {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0},
- {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b},
- {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d},
- {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f},
- {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85},
- {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
- {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6},
- {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027},
- {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057},
- {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6},
- {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db},
- {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f},
- {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb},
- {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63},
- {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a},
- {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d},
+static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a},
+ {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f},
+ {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7},
+ {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387},
+ {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0},
+ {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b},
+ {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d},
+ {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f},
+ {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85},
+ {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
+ {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6},
+ {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027},
+ {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057},
+ {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6},
+ {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db},
+ {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f},
+ {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb},
+ {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63},
+ {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a},
+ {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d},
{0xff3f, 0xff3f}, {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65} };
static const xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
static xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL};
-static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a},
- {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030},
- {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63},
+static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a},
+ {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030},
+ {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63},
{0xff0d, 0xff0d} };
static xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL};
-static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d},
- {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c},
- {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a},
- {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d},
- {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775},
- {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984},
- {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c},
- {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994},
- {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db},
- {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d},
- {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017},
- {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f},
- {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c},
- {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44},
- {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e},
- {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60},
+static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d},
+ {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c},
+ {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a},
+ {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d},
+ {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775},
+ {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984},
+ {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c},
+ {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994},
+ {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db},
+ {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d},
+ {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017},
+ {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f},
+ {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c},
+ {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44},
+ {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e},
+ {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60},
{0xff63, 0xff63} };
static xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL};
-static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27},
- {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40},
- {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e},
- {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be},
- {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d},
- {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4},
- {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4},
- {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85},
- {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
- {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
- {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017},
- {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043},
- {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6},
- {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46},
- {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61},
- {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07},
- {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b},
+static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27},
+ {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40},
+ {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e},
+ {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be},
+ {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d},
+ {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4},
+ {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4},
+ {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85},
+ {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
+ {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
+ {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017},
+ {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043},
+ {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6},
+ {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46},
+ {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61},
+ {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07},
+ {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b},
{0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64} };
static const xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
static xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL};
-static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b},
- {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b},
- {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d},
- {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768},
- {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770},
- {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8},
- {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987},
- {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f},
- {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997},
- {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008},
- {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010},
- {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a},
- {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37},
- {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f},
- {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59},
- {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b},
+static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b},
+ {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b},
+ {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d},
+ {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768},
+ {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770},
+ {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8},
+ {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987},
+ {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f},
+ {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997},
+ {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008},
+ {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010},
+ {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a},
+ {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37},
+ {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f},
+ {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59},
+ {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b},
{0xff5b, 0xff5b}, {0xff5f, 0xff5f}, {0xff62, 0xff62} };
static xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL};
-static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b},
- {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e},
- {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6},
- {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5},
- {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
- {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f},
- {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa},
- {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f},
- {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34},
- {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc},
- {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff},
- {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
- {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052},
- {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101},
- {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118},
- {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129},
- {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144},
- {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0},
- {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617},
- {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704},
- {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d},
- {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767},
- {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5},
- {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d},
- {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb},
- {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037},
- {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f},
- {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d},
- {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff},
- {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd},
- {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04},
- {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40},
- {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
+static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b},
+ {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e},
+ {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6},
+ {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5},
+ {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
+ {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f},
+ {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa},
+ {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f},
+ {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34},
+ {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc},
+ {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff},
+ {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
+ {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052},
+ {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101},
+ {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118},
+ {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129},
+ {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144},
+ {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0},
+ {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617},
+ {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704},
+ {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d},
+ {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767},
+ {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5},
+ {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d},
+ {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb},
+ {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037},
+ {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f},
+ {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d},
+ {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff},
+ {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd},
+ {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04},
+ {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40},
+ {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
{0xfffc, 0xfffd} };
-static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
- {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
- {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
- {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1},
- {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715},
- {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f},
+static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
+ {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
+ {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
+ {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1},
+ {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715},
+ {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f},
{0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
static xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL};
-static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5},
- {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f},
- {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69},
+static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5},
+ {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f},
+ {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69},
{0xff04, 0xff04}, {0xffe0, 0xffe1}, {0xffe5, 0xffe6} };
static xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL};
-static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60},
- {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5},
- {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
- {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
- {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c},
+static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60},
+ {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5},
+ {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
+ {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
+ {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c},
{0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3} };
static xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL};
-static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e},
- {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7},
- {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052},
- {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b},
- {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3},
- {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2},
- {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321},
- {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1},
- {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff},
- {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff},
- {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b},
- {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2},
+static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e},
+ {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7},
+ {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052},
+ {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b},
+ {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3},
+ {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2},
+ {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321},
+ {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1},
+ {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff},
+ {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff},
+ {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b},
+ {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2},
{0xffe9, 0xffec} };
-static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db},
- {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735},
- {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789},
+static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db},
+ {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735},
+ {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789},
{0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
static xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL};
-static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9},
- {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482},
- {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa},
- {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03},
- {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36},
- {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf},
- {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106},
- {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123},
- {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e},
- {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199},
- {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad},
- {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3},
- {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b},
- {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a},
- {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7},
- {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691},
- {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727},
- {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756},
- {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af},
- {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99},
- {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004},
- {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f},
- {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243},
- {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0},
- {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6},
- {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee},
+static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9},
+ {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482},
+ {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa},
+ {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03},
+ {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36},
+ {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf},
+ {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106},
+ {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123},
+ {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e},
+ {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199},
+ {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad},
+ {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3},
+ {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b},
+ {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a},
+ {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7},
+ {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691},
+ {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727},
+ {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756},
+ {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af},
+ {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99},
+ {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004},
+ {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f},
+ {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243},
+ {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0},
+ {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6},
+ {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee},
{0xfffc, 0xfffd} };
-static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
- {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
- {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
+static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
+ {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
+ {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
{0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356} };
static xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL};
-static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0},
- {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029},
+static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0},
+ {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029},
{0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000} };
static xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL};
@@ -961,7 +961,7 @@ static xmlIntFunc
else
low = mid + 1;
}
- return (NULL);
+ return (NULL);
}
/**
diff --git a/xmlwriter.c b/xmlwriter.c
index 11b15e0..fac20ac 100644
--- a/xmlwriter.c
+++ b/xmlwriter.c
@@ -21,15 +21,18 @@
#include <libxml/xmlwriter.h>
+#include "buf.h"
+#include "enc.h"
+#include "save.h"
+
#define B64LINELEN 72
#define B64CRLF "\r\n"
/*
* The following VA_COPY was coded following an example in
* the Samba project. It may not be sufficient for some
- * esoteric implementations of va_list (i.e. it may need
- * something involving a memcpy) but (hopefully) will be
- * sufficient for libxml2.
+ * esoteric implementations of va_list but (hopefully) will
+ * be sufficient for libxml2.
*/
#ifndef VA_COPY
#ifdef HAVE_VA_COPY
@@ -38,7 +41,12 @@
#ifdef HAVE___VA_COPY
#define VA_COPY(dest,src) __va_copy(dest, src)
#else
- #define VA_COPY(dest,src) (dest) = (src)
+ #ifndef VA_LIST_IS_ARRAY
+ #define VA_COPY(dest,src) (dest) = (src)
+ #else
+ #include <string.h>
+ #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list))
+ #endif
#endif
#endif
#endif
@@ -548,9 +556,9 @@ xmlTextWriterStartDocument(xmlTextWriterPtr writer, const char *version,
writer->out->encoder = encoder;
if (encoder != NULL) {
if (writer->out->conv == NULL) {
- writer->out->conv = xmlBufferCreateSize(4000);
+ writer->out->conv = xmlBufCreateSize(4000);
}
- xmlCharEncOutFunc(encoder, writer->out->conv, NULL);
+ xmlCharEncOutput(writer->out, 1);
if ((writer->doc != NULL) && (writer->doc->encoding == NULL))
writer->doc->encoding = xmlStrdup((xmlChar *)writer->out->encoder->name);
} else
@@ -1074,10 +1082,10 @@ xmlTextWriterStartElementNS(xmlTextWriterPtr writer,
sum += count;
if (namespaceURI != 0) {
- xmlTextWriterNsStackEntry *p = (xmlTextWriterNsStackEntry *)
+ xmlTextWriterNsStackEntry *p = (xmlTextWriterNsStackEntry *)
xmlMalloc(sizeof(xmlTextWriterNsStackEntry));
if (p == 0) {
- xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY,
+ xmlWriterErrMsg(writer, XML_ERR_NO_MEMORY,
"xmlTextWriterStartElementNS : out of memory!\n");
return -1;
}
@@ -1501,8 +1509,8 @@ xmlTextWriterWriteString(xmlTextWriterPtr writer, const xmlChar * content)
break;
case XML_TEXTWRITER_ATTRIBUTE:
buf = NULL;
- xmlAttrSerializeTxtContent(writer->out->buffer, writer->doc,
- NULL, content);
+ xmlBufAttrSerializeTxtContent(writer->out->buffer,
+ writer->doc, NULL, content);
break;
default:
break;
@@ -1663,7 +1671,7 @@ xmlTextWriterWriteBase64(xmlTextWriterPtr writer, const char *data,
* Write hqx encoded data to an xmlOutputBuffer.
* ::todo
*
- * Returns the bytes written (may be 0 because of buffering)
+ * Returns the bytes written (may be 0 because of buffering)
* or -1 in case of error
*/
static int
@@ -1672,8 +1680,8 @@ xmlOutputBufferWriteBinHex(xmlOutputBufferPtr out,
{
int count;
int sum;
- static char hex[16] =
- {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+ static char hex[16] =
+ {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int i;
if ((out == NULL) || (data == NULL) || (len < 0)) {
@@ -1849,7 +1857,7 @@ xmlTextWriterStartAttributeNS(xmlTextWriterPtr writer,
nsentry.uri = (xmlChar *)namespaceURI;
nsentry.elem = xmlListFront(writer->nodes);
- curns = (xmlTextWriterNsStackEntry *)xmlListSearch(writer->nsstack,
+ curns = (xmlTextWriterNsStackEntry *)xmlListSearch(writer->nsstack,
(void *)&nsentry);
if ((curns != NULL)) {
xmlFree(buf);
@@ -2234,10 +2242,12 @@ xmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name,
if (count == -1)
return -1;
sum += count;
- count = xmlTextWriterWriteString(writer, content);
- if (count == -1)
- return -1;
- sum += count;
+ if (content != NULL) {
+ count = xmlTextWriterWriteString(writer, content);
+ if (count == -1)
+ return -1;
+ sum += count;
+ }
count = xmlTextWriterEndElement(writer);
if (count == -1)
return -1;
@@ -2496,8 +2506,8 @@ xmlTextWriterEndPI(xmlTextWriterPtr writer)
if (writer->indent) {
count = xmlOutputBufferWriteString(writer->out, "\n");
- if (count < 0)
- return -1;
+ if (count < 0)
+ return -1;
sum += count;
}
@@ -4606,6 +4616,26 @@ xmlTextWriterSetIndentString(xmlTextWriterPtr writer, const xmlChar * str)
}
/**
+ * xmlTextWriterSetQuoteChar:
+ * @writer: the xmlTextWriterPtr
+ * @quotechar: the quote character
+ *
+ * Set the character used for quoting attributes.
+ *
+ * Returns -1 on error or 0 otherwise.
+ */
+int
+xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar)
+{
+ if ((writer == NULL) || ((quotechar != '\'') && (quotechar != '"')))
+ return -1;
+
+ writer->qchar = quotechar;
+
+ return 0;
+}
+
+/**
* xmlTextWriterWriteIndent:
* @writer: the xmlTextWriterPtr
*
diff --git a/xpath.c b/xpath.c
index d9d902c..dc41ce6 100644
--- a/xpath.c
+++ b/xpath.c
@@ -55,6 +55,8 @@
#include <libxml/pattern.h>
#endif
+#include "buf.h"
+
#ifdef LIBXML_PATTERN_ENABLED
#define XPATH_STREAMING
#endif
@@ -64,6 +66,15 @@
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
+/**
+ * WITH_TIM_SORT:
+ *
+ * Use the Timsort algorithm provided in timsort.h to sort
+ * nodeset as this is a great improvement over the old Shell sort
+ * used in xmlXPathNodeSetSort()
+ */
+#define WITH_TIM_SORT
+
/*
* XP_OPTIMIZED_NON_ELEM_COMPARISON:
* If defined, this will use xmlXPathCmpNodesExt() instead of
@@ -90,12 +101,367 @@
/* #define XP_DEBUG_OBJ_USAGE */
/*
+ * XPATH_MAX_STEPS:
+ * when compiling an XPath expression we arbitrary limit the maximum
+ * number of step operation in the compiled expression. 1000000 is
+ * an insanely large value which should never be reached under normal
+ * circumstances
+ */
+#define XPATH_MAX_STEPS 1000000
+
+/*
+ * XPATH_MAX_STACK_DEPTH:
+ * when evaluating an XPath expression we arbitrary limit the maximum
+ * number of object allowed to be pushed on the stack. 1000000 is
+ * an insanely large value which should never be reached under normal
+ * circumstances
+ */
+#define XPATH_MAX_STACK_DEPTH 1000000
+
+/*
+ * XPATH_MAX_NODESET_LENGTH:
+ * when evaluating an XPath expression nodesets are created and we
+ * arbitrary limit the maximum length of those node set. 10000000 is
+ * an insanely large value which should never be reached under normal
+ * circumstances, one would first need to construct an in memory tree
+ * with more than 10 millions nodes.
+ */
+#define XPATH_MAX_NODESET_LENGTH 10000000
+
+/*
* TODO:
* There are a few spots where some tests are done which depend upon ascii
* data. These should be enhanced for full UTF8 support (see particularly
* any use of the macros IS_ASCII_CHARACTER and IS_ASCII_DIGIT)
*/
+#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON
+/**
+ * xmlXPathCmpNodesExt:
+ * @node1: the first node
+ * @node2: the second node
+ *
+ * Compare two nodes w.r.t document order.
+ * This one is optimized for handling of non-element nodes.
+ *
+ * Returns -2 in case of error 1 if first point < second point, 0 if
+ * it's the same node, -1 otherwise
+ */
+static int
+xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) {
+ int depth1, depth2;
+ int misc = 0, precedence1 = 0, precedence2 = 0;
+ xmlNodePtr miscNode1 = NULL, miscNode2 = NULL;
+ xmlNodePtr cur, root;
+ long l1, l2;
+
+ if ((node1 == NULL) || (node2 == NULL))
+ return(-2);
+
+ if (node1 == node2)
+ return(0);
+
+ /*
+ * a couple of optimizations which will avoid computations in most cases
+ */
+ switch (node1->type) {
+ case XML_ELEMENT_NODE:
+ if (node2->type == XML_ELEMENT_NODE) {
+ if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */
+ (0 > (long) node2->content) &&
+ (node1->doc == node2->doc))
+ {
+ l1 = -((long) node1->content);
+ l2 = -((long) node2->content);
+ if (l1 < l2)
+ return(1);
+ if (l1 > l2)
+ return(-1);
+ } else
+ goto turtle_comparison;
+ }
+ break;
+ case XML_ATTRIBUTE_NODE:
+ precedence1 = 1; /* element is owner */
+ miscNode1 = node1;
+ node1 = node1->parent;
+ misc = 1;
+ break;
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_COMMENT_NODE:
+ case XML_PI_NODE: {
+ miscNode1 = node1;
+ /*
+ * Find nearest element node.
+ */
+ if (node1->prev != NULL) {
+ do {
+ node1 = node1->prev;
+ if (node1->type == XML_ELEMENT_NODE) {
+ precedence1 = 3; /* element in prev-sibl axis */
+ break;
+ }
+ if (node1->prev == NULL) {
+ precedence1 = 2; /* element is parent */
+ /*
+ * URGENT TODO: Are there any cases, where the
+ * parent of such a node is not an element node?
+ */
+ node1 = node1->parent;
+ break;
+ }
+ } while (1);
+ } else {
+ precedence1 = 2; /* element is parent */
+ node1 = node1->parent;
+ }
+ if ((node1 == NULL) || (node1->type != XML_ELEMENT_NODE) ||
+ (0 <= (long) node1->content)) {
+ /*
+ * Fallback for whatever case.
+ */
+ node1 = miscNode1;
+ precedence1 = 0;
+ } else
+ misc = 1;
+ }
+ break;
+ case XML_NAMESPACE_DECL:
+ /*
+ * TODO: why do we return 1 for namespace nodes?
+ */
+ return(1);
+ default:
+ break;
+ }
+ switch (node2->type) {
+ case XML_ELEMENT_NODE:
+ break;
+ case XML_ATTRIBUTE_NODE:
+ precedence2 = 1; /* element is owner */
+ miscNode2 = node2;
+ node2 = node2->parent;
+ misc = 1;
+ break;
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_COMMENT_NODE:
+ case XML_PI_NODE: {
+ miscNode2 = node2;
+ if (node2->prev != NULL) {
+ do {
+ node2 = node2->prev;
+ if (node2->type == XML_ELEMENT_NODE) {
+ precedence2 = 3; /* element in prev-sibl axis */
+ break;
+ }
+ if (node2->prev == NULL) {
+ precedence2 = 2; /* element is parent */
+ node2 = node2->parent;
+ break;
+ }
+ } while (1);
+ } else {
+ precedence2 = 2; /* element is parent */
+ node2 = node2->parent;
+ }
+ if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) ||
+ (0 <= (long) node2->content))
+ {
+ node2 = miscNode2;
+ precedence2 = 0;
+ } else
+ misc = 1;
+ }
+ break;
+ case XML_NAMESPACE_DECL:
+ return(1);
+ default:
+ break;
+ }
+ if (misc) {
+ if (node1 == node2) {
+ if (precedence1 == precedence2) {
+ /*
+ * The ugly case; but normally there aren't many
+ * adjacent non-element nodes around.
+ */
+ cur = miscNode2->prev;
+ while (cur != NULL) {
+ if (cur == miscNode1)
+ return(1);
+ if (cur->type == XML_ELEMENT_NODE)
+ return(-1);
+ cur = cur->prev;
+ }
+ return (-1);
+ } else {
+ /*
+ * Evaluate based on higher precedence wrt to the element.
+ * TODO: This assumes attributes are sorted before content.
+ * Is this 100% correct?
+ */
+ if (precedence1 < precedence2)
+ return(1);
+ else
+ return(-1);
+ }
+ }
+ /*
+ * Special case: One of the helper-elements is contained by the other.
+ * <foo>
+ * <node2>
+ * <node1>Text-1(precedence1 == 2)</node1>
+ * </node2>
+ * Text-6(precedence2 == 3)
+ * </foo>
+ */
+ if ((precedence2 == 3) && (precedence1 > 1)) {
+ cur = node1->parent;
+ while (cur) {
+ if (cur == node2)
+ return(1);
+ cur = cur->parent;
+ }
+ }
+ if ((precedence1 == 3) && (precedence2 > 1)) {
+ cur = node2->parent;
+ while (cur) {
+ if (cur == node1)
+ return(-1);
+ cur = cur->parent;
+ }
+ }
+ }
+
+ /*
+ * Speedup using document order if availble.
+ */
+ if ((node1->type == XML_ELEMENT_NODE) &&
+ (node2->type == XML_ELEMENT_NODE) &&
+ (0 > (long) node1->content) &&
+ (0 > (long) node2->content) &&
+ (node1->doc == node2->doc)) {
+
+ l1 = -((long) node1->content);
+ l2 = -((long) node2->content);
+ if (l1 < l2)
+ return(1);
+ if (l1 > l2)
+ return(-1);
+ }
+
+turtle_comparison:
+
+ if (node1 == node2->prev)
+ return(1);
+ if (node1 == node2->next)
+ return(-1);
+ /*
+ * compute depth to root
+ */
+ for (depth2 = 0, cur = node2;cur->parent != NULL;cur = cur->parent) {
+ if (cur == node1)
+ return(1);
+ depth2++;
+ }
+ root = cur;
+ for (depth1 = 0, cur = node1;cur->parent != NULL;cur = cur->parent) {
+ if (cur == node2)
+ return(-1);
+ depth1++;
+ }
+ /*
+ * Distinct document (or distinct entities :-( ) case.
+ */
+ if (root != cur) {
+ return(-2);
+ }
+ /*
+ * get the nearest common ancestor.
+ */
+ while (depth1 > depth2) {
+ depth1--;
+ node1 = node1->parent;
+ }
+ while (depth2 > depth1) {
+ depth2--;
+ node2 = node2->parent;
+ }
+ while (node1->parent != node2->parent) {
+ node1 = node1->parent;
+ node2 = node2->parent;
+ /* should not happen but just in case ... */
+ if ((node1 == NULL) || (node2 == NULL))
+ return(-2);
+ }
+ /*
+ * Find who's first.
+ */
+ if (node1 == node2->prev)
+ return(1);
+ if (node1 == node2->next)
+ return(-1);
+ /*
+ * Speedup using document order if availble.
+ */
+ if ((node1->type == XML_ELEMENT_NODE) &&
+ (node2->type == XML_ELEMENT_NODE) &&
+ (0 > (long) node1->content) &&
+ (0 > (long) node2->content) &&
+ (node1->doc == node2->doc)) {
+
+ l1 = -((long) node1->content);
+ l2 = -((long) node2->content);
+ if (l1 < l2)
+ return(1);
+ if (l1 > l2)
+ return(-1);
+ }
+
+ for (cur = node1->next;cur != NULL;cur = cur->next)
+ if (cur == node2)
+ return(1);
+ return(-1); /* assume there is no sibling list corruption */
+}
+#endif /* XP_OPTIMIZED_NON_ELEM_COMPARISON */
+
+/*
+ * Wrapper for the Timsort argorithm from timsort.h
+ */
+#ifdef WITH_TIM_SORT
+#define SORT_NAME libxml_domnode
+#define SORT_TYPE xmlNodePtr
+/**
+ * wrap_cmp:
+ * @x: a node
+ * @y: another node
+ *
+ * Comparison function for the Timsort implementation
+ *
+ * Returns -2 in case of error -1 if first point < second point, 0 if
+ * it's the same node, +1 otherwise
+ */
+static
+int wrap_cmp( xmlNodePtr x, xmlNodePtr y );
+#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON
+ static int wrap_cmp( xmlNodePtr x, xmlNodePtr y )
+ {
+ int res = xmlXPathCmpNodesExt(x, y);
+ return res == -2 ? res : -res;
+ }
+#else
+ static int wrap_cmp( xmlNodePtr x, xmlNodePtr y )
+ {
+ int res = xmlXPathCmpNodes(x, y);
+ return res == -2 ? res : -res;
+ }
+#endif
+#define SORT_CMP(x, y) (wrap_cmp(x, y))
+#include "timsort.h"
+#endif /* WITH_TIM_SORT */
+
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
/************************************************************************
@@ -252,7 +618,8 @@ static const char *xmlXPathErrorMessages[] = {
"Encoding error\n",
"Char out of XML range\n",
"Invalid or incomplete context\n",
- "Stack usage errror\n",
+ "Stack usage error\n",
+ "Forbidden variable\n",
"?? Unknown error ??\n" /* Must be last in the list! */
};
#define MAXERRNO ((int)(sizeof(xmlXPathErrorMessages) / \
@@ -420,8 +787,7 @@ xmlPointerListAddSize(xmlPointerListPtr list,
if (list->items == NULL) {
if (initialSize <= 0)
initialSize = 1;
- list->items = (void **) xmlMalloc(
- initialSize * sizeof(void *));
+ list->items = (void **) xmlMalloc(initialSize * sizeof(void *));
if (list->items == NULL) {
xmlXPathErrMemory(NULL,
"xmlPointerListCreate: allocating item\n");
@@ -430,12 +796,17 @@ xmlPointerListAddSize(xmlPointerListPtr list,
list->number = 0;
list->size = initialSize;
} else if (list->size <= list->number) {
+ if (list->size > 50000000) {
+ xmlXPathErrMemory(NULL,
+ "xmlPointerListAddSize: re-allocating item\n");
+ return(-1);
+ }
list->size *= 2;
list->items = (void **) xmlRealloc(list->items,
list->size * sizeof(void *));
if (list->items == NULL) {
xmlXPathErrMemory(NULL,
- "xmlPointerListCreate: re-allocating item\n");
+ "xmlPointerListAddSize: re-allocating item\n");
list->size = 0;
return(-1);
}
@@ -553,8 +924,6 @@ typedef enum {
NODE_TYPE_PI = XML_PI_NODE
} xmlXPathTypeVal;
-#define XP_REWRITE_DOS_CHILD_ELEM 1
-
typedef struct _xmlXPathStepOp xmlXPathStepOp;
typedef xmlXPathStepOp *xmlXPathStepOpPtr;
struct _xmlXPathStepOp {
@@ -568,7 +937,6 @@ struct _xmlXPathStepOp {
void *value5;
void *cache;
void *cacheURI;
- int rewriteType;
};
struct _xmlXPathCompExpr {
@@ -723,6 +1091,10 @@ xmlXPathCompExprAdd(xmlXPathCompExprPtr comp, int ch1, int ch2,
if (comp->nbStep >= comp->maxStep) {
xmlXPathStepOp *real;
+ if (comp->maxStep >= XPATH_MAX_STEPS) {
+ xmlXPathErrMemory(NULL, "adding step\n");
+ return(-1);
+ }
comp->maxStep *= 2;
real = (xmlXPathStepOp *) xmlRealloc(comp->steps,
comp->maxStep * sizeof(xmlXPathStepOp));
@@ -734,7 +1106,6 @@ xmlXPathCompExprAdd(xmlXPathCompExprPtr comp, int ch1, int ch2,
comp->steps = real;
}
comp->last = comp->nbStep;
- comp->steps[comp->nbStep].rewriteType = 0;
comp->steps[comp->nbStep].ch1 = ch1;
comp->steps[comp->nbStep].ch2 = ch2;
comp->steps[comp->nbStep].op = op;
@@ -2052,6 +2423,11 @@ xmlXPathCacheNewNodeSet(xmlXPathContextPtr ctxt, xmlNodePtr val)
ret->type = XPATH_NODESET;
ret->boolval = 0;
ret->nodesetval = xmlXPathNodeSetCreate(val);
+ if (ret->nodesetval == NULL) {
+ ctxt->lastError.domain = XML_FROM_XPATH;
+ ctxt->lastError.code = XML_ERR_NO_MEMORY;
+ return(NULL);
+ }
#ifdef XP_DEBUG_OBJ_USAGE
xmlXPathDebugObjUsageRequested(ctxt, XPATH_NODESET);
#endif
@@ -2480,11 +2856,16 @@ valuePush(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr value)
if (ctxt->valueNr >= ctxt->valueMax) {
xmlXPathObjectPtr *tmp;
+ if (ctxt->valueMax >= XPATH_MAX_STACK_DEPTH) {
+ xmlXPathErrMemory(NULL, "XPath stack depth limit reached\n");
+ ctxt->error = XPATH_MEMORY_ERROR;
+ return (0);
+ }
tmp = (xmlXPathObjectPtr *) xmlRealloc(ctxt->valueTab,
2 * ctxt->valueMax *
sizeof(ctxt->valueTab[0]));
if (tmp == NULL) {
- xmlGenericError(xmlGenericErrorContext, "realloc failed !\n");
+ xmlXPathErrMemory(NULL, "pushing value\n");
ctxt->error = XPATH_MEMORY_ERROR;
return (0);
}
@@ -2795,6 +3176,12 @@ xmlXPathFormatNumber(double number, char buffer[], int buffersize)
fraction_place, number);
}
+ /* Remove leading spaces sometimes inserted by snprintf */
+ while (work[0] == ' ') {
+ for (ptr = &work[0];(ptr[0] = ptr[1]);ptr++);
+ size--;
+ }
+
/* Remove fractional trailing zeroes */
after_fraction = work + size;
ptr = after_fraction;
@@ -3020,298 +3407,6 @@ xmlXPathCmpNodes(xmlNodePtr node1, xmlNodePtr node2) {
return(-1); /* assume there is no sibling list corruption */
}
-#ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON
-/**
- * xmlXPathCmpNodesExt:
- * @node1: the first node
- * @node2: the second node
- *
- * Compare two nodes w.r.t document order.
- * This one is optimized for handling of non-element nodes.
- *
- * Returns -2 in case of error 1 if first point < second point, 0 if
- * it's the same node, -1 otherwise
- */
-static int
-xmlXPathCmpNodesExt(xmlNodePtr node1, xmlNodePtr node2) {
- int depth1, depth2;
- int misc = 0, precedence1 = 0, precedence2 = 0;
- xmlNodePtr miscNode1 = NULL, miscNode2 = NULL;
- xmlNodePtr cur, root;
- long l1, l2;
-
- if ((node1 == NULL) || (node2 == NULL))
- return(-2);
-
- if (node1 == node2)
- return(0);
-
- /*
- * a couple of optimizations which will avoid computations in most cases
- */
- switch (node1->type) {
- case XML_ELEMENT_NODE:
- if (node2->type == XML_ELEMENT_NODE) {
- if ((0 > (long) node1->content) && /* TODO: Would a != 0 suffice here? */
- (0 > (long) node2->content) &&
- (node1->doc == node2->doc))
- {
- l1 = -((long) node1->content);
- l2 = -((long) node2->content);
- if (l1 < l2)
- return(1);
- if (l1 > l2)
- return(-1);
- } else
- goto turtle_comparison;
- }
- break;
- case XML_ATTRIBUTE_NODE:
- precedence1 = 1; /* element is owner */
- miscNode1 = node1;
- node1 = node1->parent;
- misc = 1;
- break;
- case XML_TEXT_NODE:
- case XML_CDATA_SECTION_NODE:
- case XML_COMMENT_NODE:
- case XML_PI_NODE: {
- miscNode1 = node1;
- /*
- * Find nearest element node.
- */
- if (node1->prev != NULL) {
- do {
- node1 = node1->prev;
- if (node1->type == XML_ELEMENT_NODE) {
- precedence1 = 3; /* element in prev-sibl axis */
- break;
- }
- if (node1->prev == NULL) {
- precedence1 = 2; /* element is parent */
- /*
- * URGENT TODO: Are there any cases, where the
- * parent of such a node is not an element node?
- */
- node1 = node1->parent;
- break;
- }
- } while (1);
- } else {
- precedence1 = 2; /* element is parent */
- node1 = node1->parent;
- }
- if ((node1 == NULL) || (node1->type != XML_ELEMENT_NODE) ||
- (0 <= (long) node1->content)) {
- /*
- * Fallback for whatever case.
- */
- node1 = miscNode1;
- precedence1 = 0;
- } else
- misc = 1;
- }
- break;
- case XML_NAMESPACE_DECL:
- /*
- * TODO: why do we return 1 for namespace nodes?
- */
- return(1);
- default:
- break;
- }
- switch (node2->type) {
- case XML_ELEMENT_NODE:
- break;
- case XML_ATTRIBUTE_NODE:
- precedence2 = 1; /* element is owner */
- miscNode2 = node2;
- node2 = node2->parent;
- misc = 1;
- break;
- case XML_TEXT_NODE:
- case XML_CDATA_SECTION_NODE:
- case XML_COMMENT_NODE:
- case XML_PI_NODE: {
- miscNode2 = node2;
- if (node2->prev != NULL) {
- do {
- node2 = node2->prev;
- if (node2->type == XML_ELEMENT_NODE) {
- precedence2 = 3; /* element in prev-sibl axis */
- break;
- }
- if (node2->prev == NULL) {
- precedence2 = 2; /* element is parent */
- node2 = node2->parent;
- break;
- }
- } while (1);
- } else {
- precedence2 = 2; /* element is parent */
- node2 = node2->parent;
- }
- if ((node2 == NULL) || (node2->type != XML_ELEMENT_NODE) ||
- (0 <= (long) node1->content))
- {
- node2 = miscNode2;
- precedence2 = 0;
- } else
- misc = 1;
- }
- break;
- case XML_NAMESPACE_DECL:
- return(1);
- default:
- break;
- }
- if (misc) {
- if (node1 == node2) {
- if (precedence1 == precedence2) {
- /*
- * The ugly case; but normally there aren't many
- * adjacent non-element nodes around.
- */
- cur = miscNode2->prev;
- while (cur != NULL) {
- if (cur == miscNode1)
- return(1);
- if (cur->type == XML_ELEMENT_NODE)
- return(-1);
- cur = cur->prev;
- }
- return (-1);
- } else {
- /*
- * Evaluate based on higher precedence wrt to the element.
- * TODO: This assumes attributes are sorted before content.
- * Is this 100% correct?
- */
- if (precedence1 < precedence2)
- return(1);
- else
- return(-1);
- }
- }
- /*
- * Special case: One of the helper-elements is contained by the other.
- * <foo>
- * <node2>
- * <node1>Text-1(precedence1 == 2)</node1>
- * </node2>
- * Text-6(precedence2 == 3)
- * </foo>
- */
- if ((precedence2 == 3) && (precedence1 > 1)) {
- cur = node1->parent;
- while (cur) {
- if (cur == node2)
- return(1);
- cur = cur->parent;
- }
- }
- if ((precedence1 == 3) && (precedence2 > 1)) {
- cur = node2->parent;
- while (cur) {
- if (cur == node1)
- return(-1);
- cur = cur->parent;
- }
- }
- }
-
- /*
- * Speedup using document order if availble.
- */
- if ((node1->type == XML_ELEMENT_NODE) &&
- (node2->type == XML_ELEMENT_NODE) &&
- (0 > (long) node1->content) &&
- (0 > (long) node2->content) &&
- (node1->doc == node2->doc)) {
-
- l1 = -((long) node1->content);
- l2 = -((long) node2->content);
- if (l1 < l2)
- return(1);
- if (l1 > l2)
- return(-1);
- }
-
-turtle_comparison:
-
- if (node1 == node2->prev)
- return(1);
- if (node1 == node2->next)
- return(-1);
- /*
- * compute depth to root
- */
- for (depth2 = 0, cur = node2;cur->parent != NULL;cur = cur->parent) {
- if (cur == node1)
- return(1);
- depth2++;
- }
- root = cur;
- for (depth1 = 0, cur = node1;cur->parent != NULL;cur = cur->parent) {
- if (cur == node2)
- return(-1);
- depth1++;
- }
- /*
- * Distinct document (or distinct entities :-( ) case.
- */
- if (root != cur) {
- return(-2);
- }
- /*
- * get the nearest common ancestor.
- */
- while (depth1 > depth2) {
- depth1--;
- node1 = node1->parent;
- }
- while (depth2 > depth1) {
- depth2--;
- node2 = node2->parent;
- }
- while (node1->parent != node2->parent) {
- node1 = node1->parent;
- node2 = node2->parent;
- /* should not happen but just in case ... */
- if ((node1 == NULL) || (node2 == NULL))
- return(-2);
- }
- /*
- * Find who's first.
- */
- if (node1 == node2->prev)
- return(1);
- if (node1 == node2->next)
- return(-1);
- /*
- * Speedup using document order if availble.
- */
- if ((node1->type == XML_ELEMENT_NODE) &&
- (node2->type == XML_ELEMENT_NODE) &&
- (0 > (long) node1->content) &&
- (0 > (long) node2->content) &&
- (node1->doc == node2->doc)) {
-
- l1 = -((long) node1->content);
- l2 = -((long) node2->content);
- if (l1 < l2)
- return(1);
- if (l1 > l2)
- return(-1);
- }
-
- for (cur = node1->next;cur != NULL;cur = cur->next)
- if (cur == node2)
- return(1);
- return(-1); /* assume there is no sibling list corruption */
-}
-#endif /* XP_OPTIMIZED_NON_ELEM_COMPARISON */
-
/**
* xmlXPathNodeSetSort:
* @set: the node set
@@ -3320,13 +3415,19 @@ turtle_comparison:
*/
void
xmlXPathNodeSetSort(xmlNodeSetPtr set) {
+#ifndef WITH_TIM_SORT
int i, j, incr, len;
xmlNodePtr tmp;
+#endif
if (set == NULL)
return;
- /* Use Shell's sort to sort the node-set */
+#ifndef WITH_TIM_SORT
+ /*
+ * Use the old Shell's sort implementation to sort the node-set
+ * Timsort ought to be quite faster
+ */
len = set->nodeNr;
for (incr = len / 2; incr > 0; incr /= 2) {
for (i = incr; i < len; i++) {
@@ -3349,6 +3450,9 @@ xmlXPathNodeSetSort(xmlNodeSetPtr set) {
}
}
}
+#else /* WITH_TIM_SORT */
+ libxml_domnode_tim_sort(set->nodeTab, set->nodeNr);
+#endif /* WITH_TIM_SORT */
}
#define XML_NODESET_DEFAULT 10
@@ -3527,8 +3631,10 @@ xmlXPathNodeSetContains (xmlNodeSetPtr cur, xmlNodePtr val) {
* @ns: a the namespace node
*
* add a new namespace node to an existing NodeSet
+ *
+ * Returns 0 in case of success and -1 in case of error
*/
-void
+int
xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
int i;
@@ -3536,7 +3642,7 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
if ((cur == NULL) || (ns == NULL) || (node == NULL) ||
(ns->type != XML_NAMESPACE_DECL) ||
(node->type != XML_ELEMENT_NODE))
- return;
+ return(-1);
/* @@ with_ns to check whether namespace nodes should be looked at @@ */
/*
@@ -3547,7 +3653,7 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
(cur->nodeTab[i]->type == XML_NAMESPACE_DECL) &&
(((xmlNsPtr)cur->nodeTab[i])->next == (xmlNsPtr) node) &&
(xmlStrEqual(ns->prefix, ((xmlNsPtr)cur->nodeTab[i])->prefix)))
- return;
+ return(0);
}
/*
@@ -3558,7 +3664,7 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
sizeof(xmlNodePtr));
if (cur->nodeTab == NULL) {
xmlXPathErrMemory(NULL, "growing nodeset\n");
- return;
+ return(-1);
}
memset(cur->nodeTab, 0 ,
XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr));
@@ -3566,16 +3672,21 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
} else if (cur->nodeNr == cur->nodeMax) {
xmlNodePtr *temp;
+ if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
+ xmlXPathErrMemory(NULL, "growing nodeset hit limit\n");
+ return(-1);
+ }
temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 *
sizeof(xmlNodePtr));
if (temp == NULL) {
xmlXPathErrMemory(NULL, "growing nodeset\n");
- return;
+ return(-1);
}
cur->nodeMax *= 2;
cur->nodeTab = temp;
}
cur->nodeTab[cur->nodeNr++] = xmlXPathNodeSetDupNs(node, ns);
+ return(0);
}
/**
@@ -3584,24 +3695,21 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
* @val: a new xmlNodePtr
*
* add a new xmlNodePtr to an existing NodeSet
+ *
+ * Returns 0 in case of success, and -1 in case of error
*/
-void
+int
xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
int i;
- if ((cur == NULL) || (val == NULL)) return;
-
-#if 0
- if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' '))
- return; /* an XSLT fake node */
-#endif
+ if ((cur == NULL) || (val == NULL)) return(-1);
/* @@ with_ns to check whether namespace nodes should be looked at @@ */
/*
* prevent duplcates
*/
for (i = 0;i < cur->nodeNr;i++)
- if (cur->nodeTab[i] == val) return;
+ if (cur->nodeTab[i] == val) return(0);
/*
* grow the nodeTab if needed
@@ -3611,7 +3719,7 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
sizeof(xmlNodePtr));
if (cur->nodeTab == NULL) {
xmlXPathErrMemory(NULL, "growing nodeset\n");
- return;
+ return(-1);
}
memset(cur->nodeTab, 0 ,
XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr));
@@ -3619,11 +3727,15 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
} else if (cur->nodeNr == cur->nodeMax) {
xmlNodePtr *temp;
+ if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
+ xmlXPathErrMemory(NULL, "growing nodeset hit limit\n");
+ return(-1);
+ }
temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 *
sizeof(xmlNodePtr));
if (temp == NULL) {
xmlXPathErrMemory(NULL, "growing nodeset\n");
- return;
+ return(-1);
}
cur->nodeMax *= 2;
cur->nodeTab = temp;
@@ -3635,6 +3747,7 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns);
} else
cur->nodeTab[cur->nodeNr++] = val;
+ return(0);
}
/**
@@ -3644,15 +3757,12 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
*
* add a new xmlNodePtr to an existing NodeSet, optimized version
* when we are sure the node is not already in the set.
+ *
+ * Returns 0 in case of success and -1 in case of failure
*/
-void
+int
xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) {
- if ((cur == NULL) || (val == NULL)) return;
-
-#if 0
- if ((val->type == XML_ELEMENT_NODE) && (val->name[0] == ' '))
- return; /* an XSLT fake node */
-#endif
+ if ((cur == NULL) || (val == NULL)) return(-1);
/* @@ with_ns to check whether namespace nodes should be looked at @@ */
/*
@@ -3663,7 +3773,7 @@ xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) {
sizeof(xmlNodePtr));
if (cur->nodeTab == NULL) {
xmlXPathErrMemory(NULL, "growing nodeset\n");
- return;
+ return(-1);
}
memset(cur->nodeTab, 0 ,
XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr));
@@ -3671,11 +3781,15 @@ xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) {
} else if (cur->nodeNr == cur->nodeMax) {
xmlNodePtr *temp;
+ if (cur->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
+ xmlXPathErrMemory(NULL, "growing nodeset hit limit\n");
+ return(-1);
+ }
temp = (xmlNodePtr *) xmlRealloc(cur->nodeTab, cur->nodeMax * 2 *
sizeof(xmlNodePtr));
if (temp == NULL) {
xmlXPathErrMemory(NULL, "growing nodeset\n");
- return;
+ return(-1);
}
cur->nodeTab = temp;
cur->nodeMax *= 2;
@@ -3687,6 +3801,7 @@ xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) {
xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns);
} else
cur->nodeTab[cur->nodeNr++] = val;
+ return(0);
}
/**
@@ -3782,6 +3897,10 @@ xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2) {
} else if (val1->nodeNr == val1->nodeMax) {
xmlNodePtr *temp;
+ if (val1->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
+ xmlXPathErrMemory(NULL, "merging nodeset hit limit\n");
+ return(NULL);
+ }
temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax * 2 *
sizeof(xmlNodePtr));
if (temp == NULL) {
@@ -3803,68 +3922,6 @@ xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2) {
return(val1);
}
-#if 0 /* xmlXPathNodeSetMergeUnique() is currently not used anymore */
-/**
- * xmlXPathNodeSetMergeUnique:
- * @val1: the first NodeSet or NULL
- * @val2: the second NodeSet
- *
- * Merges two nodesets, all nodes from @val2 are added to @val1
- * if @val1 is NULL, a new set is created and copied from @val2
- *
- * Returns @val1 once extended or NULL in case of error.
- */
-static xmlNodeSetPtr
-xmlXPathNodeSetMergeUnique(xmlNodeSetPtr val1, xmlNodeSetPtr val2) {
- int i;
-
- if (val2 == NULL) return(val1);
- if (val1 == NULL) {
- val1 = xmlXPathNodeSetCreate(NULL);
- }
- if (val1 == NULL)
- return (NULL);
-
- /* @@ with_ns to check whether namespace nodes should be looked at @@ */
-
- for (i = 0;i < val2->nodeNr;i++) {
- /*
- * grow the nodeTab if needed
- */
- if (val1->nodeMax == 0) {
- val1->nodeTab = (xmlNodePtr *) xmlMalloc(XML_NODESET_DEFAULT *
- sizeof(xmlNodePtr));
- if (val1->nodeTab == NULL) {
- xmlXPathErrMemory(NULL, "merging nodeset\n");
- return(NULL);
- }
- memset(val1->nodeTab, 0 ,
- XML_NODESET_DEFAULT * (size_t) sizeof(xmlNodePtr));
- val1->nodeMax = XML_NODESET_DEFAULT;
- } else if (val1->nodeNr == val1->nodeMax) {
- xmlNodePtr *temp;
-
- val1->nodeMax *= 2;
- temp = (xmlNodePtr *) xmlRealloc(val1->nodeTab, val1->nodeMax *
- sizeof(xmlNodePtr));
- if (temp == NULL) {
- xmlXPathErrMemory(NULL, "merging nodeset\n");
- return(NULL);
- }
- val1->nodeTab = temp;
- }
- if (val2->nodeTab[i]->type == XML_NAMESPACE_DECL) {
- xmlNsPtr ns = (xmlNsPtr) val2->nodeTab[i];
-
- val1->nodeTab[val1->nodeNr++] =
- xmlXPathNodeSetDupNs((xmlNodePtr) ns->next, ns);
- } else
- val1->nodeTab[val1->nodeNr++] = val2->nodeTab[i];
- }
-
- return(val1);
-}
-#endif /* xmlXPathNodeSetMergeUnique() is currently not used anymore */
/**
* xmlXPathNodeSetMergeAndClear:
@@ -3951,6 +4008,10 @@ xmlXPathNodeSetMergeAndClear(xmlNodeSetPtr set1, xmlNodeSetPtr set2,
} else if (set1->nodeNr >= set1->nodeMax) {
xmlNodePtr *temp;
+ if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
+ xmlXPathErrMemory(NULL, "merging nodeset hit limit\n");
+ return(NULL);
+ }
temp = (xmlNodePtr *) xmlRealloc(
set1->nodeTab, set1->nodeMax * 2 * sizeof(xmlNodePtr));
if (temp == NULL) {
@@ -4035,6 +4096,10 @@ xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2,
} else if (set1->nodeNr >= set1->nodeMax) {
xmlNodePtr *temp;
+ if (set1->nodeMax >= XPATH_MAX_NODESET_LENGTH) {
+ xmlXPathErrMemory(NULL, "merging nodeset hit limit\n");
+ return(NULL);
+ }
temp = (xmlNodePtr *) xmlRealloc(
set1->nodeTab, set1->nodeMax * 2 * sizeof(xmlNodePtr));
if (temp == NULL) {
@@ -4333,9 +4398,12 @@ xmlXPathNewNodeSetList(xmlNodeSetPtr val)
ret = xmlXPathNewNodeSet(NULL);
else {
ret = xmlXPathNewNodeSet(val->nodeTab[0]);
- if (ret)
- for (i = 1; i < val->nodeNr; ++i)
- xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i]);
+ if (ret) {
+ for (i = 1; i < val->nodeNr; ++i) {
+ if (xmlXPathNodeSetAddUnique(ret->nodesetval, val->nodeTab[i])
+ < 0) break;
+ }
+ }
}
return (ret);
@@ -4411,8 +4479,10 @@ xmlXPathDifference (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
for (i = 0; i < l1; i++) {
cur = xmlXPathNodeSetItem(nodes1, i);
- if (!xmlXPathNodeSetContains(nodes2, cur))
- xmlXPathNodeSetAddUnique(ret, cur);
+ if (!xmlXPathNodeSetContains(nodes2, cur)) {
+ if (xmlXPathNodeSetAddUnique(ret, cur) < 0)
+ break;
+ }
}
return(ret);
}
@@ -4445,8 +4515,10 @@ xmlXPathIntersection (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
for (i = 0; i < l1; i++) {
cur = xmlXPathNodeSetItem(nodes1, i);
- if (xmlXPathNodeSetContains(nodes2, cur))
- xmlXPathNodeSetAddUnique(ret, cur);
+ if (xmlXPathNodeSetContains(nodes2, cur)) {
+ if (xmlXPathNodeSetAddUnique(ret, cur) < 0)
+ break;
+ }
}
return(ret);
}
@@ -4482,7 +4554,8 @@ xmlXPathDistinctSorted (xmlNodeSetPtr nodes) {
strval = xmlXPathCastNodeToString(cur);
if (xmlHashLookup(hash, strval) == NULL) {
xmlHashAddEntry(hash, strval, strval);
- xmlXPathNodeSetAddUnique(ret, cur);
+ if (xmlXPathNodeSetAddUnique(ret, cur) < 0)
+ break;
} else {
xmlFree(strval);
}
@@ -4574,7 +4647,8 @@ xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, xmlNodePtr node) {
cur = xmlXPathNodeSetItem(nodes, i);
if (cur == node)
break;
- xmlXPathNodeSetAddUnique(ret, cur);
+ if (xmlXPathNodeSetAddUnique(ret, cur) < 0)
+ break;
}
return(ret);
}
@@ -4678,7 +4752,8 @@ xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, xmlNodePtr node) {
cur = xmlXPathNodeSetItem(nodes, i);
if (cur == node)
break;
- xmlXPathNodeSetAddUnique(ret, cur);
+ if (xmlXPathNodeSetAddUnique(ret, cur) < 0)
+ break;
}
xmlXPathNodeSetSort(ret); /* bug 413451 */
return(ret);
@@ -7701,6 +7776,7 @@ xmlXPathNextChildElement(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
return(NULL);
}
+#if 0
/**
* xmlXPathNextDescendantOrSelfElemParent:
* @ctxt: the XPath Parser context
@@ -7728,7 +7804,7 @@ xmlXPathNextDescendantOrSelfElemParent(xmlNodePtr cur,
#ifdef LIBXML_DOCB_ENABLED
case XML_DOCB_DOCUMENT_NODE:
#endif
- case XML_HTML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
return(contextNode);
default:
return(NULL);
@@ -7776,6 +7852,7 @@ next_sibling:
}
return(NULL);
}
+#endif
/**
* xmlXPathNextDescendant:
@@ -7803,6 +7880,8 @@ xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
return(ctxt->context->node->children);
}
+ if (cur->type == XML_NAMESPACE_DECL)
+ return(NULL);
if (cur->children != NULL) {
/*
* Do not descend on entities declarations
@@ -8185,6 +8264,10 @@ xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
static int
xmlXPathIsAncestor(xmlNodePtr ancestor, xmlNodePtr node) {
if ((ancestor == NULL) || (node == NULL)) return(0);
+ if (node->type == XML_NAMESPACE_DECL)
+ return(0);
+ if (ancestor->type == XML_NAMESPACE_DECL)
+ return(0);
/* nodes need to be in the same document */
if (ancestor->doc != node->doc) return(0);
/* avoid searching if ancestor or node is the root node */
@@ -8222,7 +8305,7 @@ xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur)
if (cur->type == XML_ATTRIBUTE_NODE)
return(cur->parent);
}
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return (NULL);
if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE))
cur = cur->prev;
@@ -8269,6 +8352,8 @@ xmlXPathNextPrecedingInternal(xmlXPathParserContextPtr ctxt,
return (NULL);
ctxt->ancestor = cur->parent;
}
+ if (cur->type == XML_NAMESPACE_DECL)
+ return(NULL);
if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE))
cur = cur->prev;
while (cur->prev == NULL) {
@@ -8476,7 +8561,7 @@ xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs) {
int i = 0;
tmp = cur->nodesetval->nodeTab[0];
- if (tmp != NULL) {
+ if ((tmp != NULL) && (tmp->type != XML_NAMESPACE_DECL)) {
tmp = tmp->children;
while (tmp != NULL) {
tmp = tmp->next;
@@ -9146,7 +9231,7 @@ void
xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
xmlXPathObjectPtr str;
xmlXPathObjectPtr find;
- xmlBufferPtr target;
+ xmlBufPtr target;
const xmlChar *point;
int offset;
@@ -9156,16 +9241,16 @@ xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
CAST_TO_STRING;
str = valuePop(ctxt);
- target = xmlBufferCreate();
+ target = xmlBufCreate();
if (target) {
point = xmlStrstr(str->stringval, find->stringval);
if (point) {
offset = (int)(point - str->stringval);
- xmlBufferAdd(target, str->stringval, offset);
+ xmlBufAdd(target, str->stringval, offset);
}
valuePush(ctxt, xmlXPathCacheNewString(ctxt->context,
- xmlBufferContent(target)));
- xmlBufferFree(target);
+ xmlBufContent(target)));
+ xmlBufFree(target);
}
xmlXPathReleaseObject(ctxt->context, str);
xmlXPathReleaseObject(ctxt->context, find);
@@ -9189,7 +9274,7 @@ void
xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) {
xmlXPathObjectPtr str;
xmlXPathObjectPtr find;
- xmlBufferPtr target;
+ xmlBufPtr target;
const xmlChar *point;
int offset;
@@ -9199,17 +9284,17 @@ xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) {
CAST_TO_STRING;
str = valuePop(ctxt);
- target = xmlBufferCreate();
+ target = xmlBufCreate();
if (target) {
point = xmlStrstr(str->stringval, find->stringval);
if (point) {
offset = (int)(point - str->stringval) + xmlStrlen(find->stringval);
- xmlBufferAdd(target, &str->stringval[offset],
+ xmlBufAdd(target, &str->stringval[offset],
xmlStrlen(str->stringval) - offset);
}
valuePush(ctxt, xmlXPathCacheNewString(ctxt->context,
- xmlBufferContent(target)));
- xmlBufferFree(target);
+ xmlBufContent(target)));
+ xmlBufFree(target);
}
xmlXPathReleaseObject(ctxt->context, str);
xmlXPathReleaseObject(ctxt->context, find);
@@ -9233,7 +9318,7 @@ void
xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
xmlXPathObjectPtr obj = NULL;
xmlChar *source = NULL;
- xmlBufferPtr target;
+ xmlBufPtr target;
xmlChar blank;
if (ctxt == NULL) return;
@@ -9251,7 +9336,7 @@ xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
obj = valuePop(ctxt);
source = obj->stringval;
- target = xmlBufferCreate();
+ target = xmlBufCreate();
if (target && source) {
/* Skip leading whitespaces */
@@ -9265,16 +9350,16 @@ xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
blank = 0x20;
} else {
if (blank) {
- xmlBufferAdd(target, &blank, 1);
+ xmlBufAdd(target, &blank, 1);
blank = 0;
}
- xmlBufferAdd(target, source, 1);
+ xmlBufAdd(target, source, 1);
}
source++;
}
valuePush(ctxt, xmlXPathCacheNewString(ctxt->context,
- xmlBufferContent(target)));
- xmlBufferFree(target);
+ xmlBufContent(target)));
+ xmlBufFree(target);
}
xmlXPathReleaseObject(ctxt->context, obj);
}
@@ -9305,7 +9390,7 @@ xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) {
xmlXPathObjectPtr str;
xmlXPathObjectPtr from;
xmlXPathObjectPtr to;
- xmlBufferPtr target;
+ xmlBufPtr target;
int offset, max;
xmlChar ch;
const xmlChar *point;
@@ -9320,7 +9405,7 @@ xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) {
CAST_TO_STRING;
str = valuePop(ctxt);
- target = xmlBufferCreate();
+ target = xmlBufCreate();
if (target) {
max = xmlUTF8Strlen(to->stringval);
for (cptr = str->stringval; (ch=*cptr); ) {
@@ -9329,10 +9414,10 @@ xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) {
if (offset < max) {
point = xmlUTF8Strpos(to->stringval, offset);
if (point)
- xmlBufferAdd(target, point, xmlUTF8Strsize(point, 1));
+ xmlBufAdd(target, point, xmlUTF8Strsize(point, 1));
}
} else
- xmlBufferAdd(target, cptr, xmlUTF8Strsize(cptr, 1));
+ xmlBufAdd(target, cptr, xmlUTF8Strsize(cptr, 1));
/* Step to next character in input */
cptr++;
@@ -9358,8 +9443,8 @@ xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) {
}
}
valuePush(ctxt, xmlXPathCacheNewString(ctxt->context,
- xmlBufferContent(target)));
- xmlBufferFree(target);
+ xmlBufContent(target)));
+ xmlBufFree(target);
xmlXPathReleaseObject(ctxt->context, str);
xmlXPathReleaseObject(ctxt->context, from);
xmlXPathReleaseObject(ctxt->context, to);
@@ -9866,7 +9951,7 @@ xmlChar *
xmlXPathParseName(xmlXPathParserContextPtr ctxt) {
const xmlChar *in;
xmlChar *ret;
- int count = 0;
+ size_t count = 0;
if ((ctxt == NULL) || (ctxt->cur == NULL)) return(NULL);
/*
@@ -9885,6 +9970,10 @@ xmlXPathParseName(xmlXPathParserContextPtr ctxt) {
in++;
if ((*in > 0) && (*in < 0x80)) {
count = in - ctxt->cur;
+ if (count > XML_MAX_NAME_LENGTH) {
+ ctxt->cur = in;
+ XP_ERRORNULL(XPATH_EXPR_ERROR);
+ }
ret = xmlStrndup(ctxt->cur, count);
ctxt->cur = in;
return(ret);
@@ -9928,6 +10017,9 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) {
xmlChar *buffer;
int max = len * 2;
+ if (len > XML_MAX_NAME_LENGTH) {
+ XP_ERRORNULL(XPATH_EXPR_ERROR);
+ }
buffer = (xmlChar *) xmlMallocAtomic(max * sizeof(xmlChar));
if (buffer == NULL) {
XP_ERRORNULL(XPATH_MEMORY_ERROR);
@@ -9939,6 +10031,9 @@ xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) {
(IS_COMBINING(c)) ||
(IS_EXTENDER(c))) {
if (len + 10 > max) {
+ if (max > XML_MAX_NAME_LENGTH) {
+ XP_ERRORNULL(XPATH_EXPR_ERROR);
+ }
max *= 2;
buffer = (xmlChar *) xmlRealloc(buffer,
max * sizeof(xmlChar));
@@ -10291,7 +10386,7 @@ xmlXPathCompVariableReference(xmlXPathParserContextPtr ctxt) {
name, prefix);
SKIP_BLANKS;
if ((ctxt->context != NULL) && (ctxt->context->flags & XML_XPATH_NOVAR)) {
- XP_ERROR(XPATH_UNDEF_VARIABLE_ERROR);
+ XP_ERROR(XPATH_FORBID_VARIABLE_ERROR);
}
}
@@ -11655,9 +11750,13 @@ xmlXPathCompOpEvalPredicate(xmlXPathParserContextPtr ctxt,
*/
if (contextObj == NULL)
contextObj = xmlXPathCacheNewNodeSet(xpctxt, contextNode);
- else
- xmlXPathNodeSetAddUnique(contextObj->nodesetval,
- contextNode);
+ else {
+ if (xmlXPathNodeSetAddUnique(contextObj->nodesetval,
+ contextNode) < 0) {
+ ctxt->error = XPATH_MEMORY_ERROR;
+ goto evaluation_exit;
+ }
+ }
valuePush(ctxt, contextObj);
@@ -11803,9 +11902,13 @@ xmlXPathCompOpEvalPositionalPredicate(xmlXPathParserContextPtr ctxt,
*/
if (contextObj == NULL)
contextObj = xmlXPathCacheNewNodeSet(xpctxt, contextNode);
- else
- xmlXPathNodeSetAddUnique(contextObj->nodesetval,
- contextNode);
+ else {
+ if (xmlXPathNodeSetAddUnique(contextObj->nodesetval,
+ contextNode) < 0) {
+ ctxt->error = XPATH_MEMORY_ERROR;
+ goto evaluation_exit;
+ }
+ }
frame = xmlXPathSetFrame(ctxt);
valuePush(ctxt, contextObj);
@@ -11977,22 +12080,25 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
#define XP_TEST_HIT \
if (hasAxisRange != 0) { \
if (++pos == maxPos) { \
- addNode(seq, cur); \
- goto axis_range_end; } \
+ if (addNode(seq, cur) < 0) \
+ ctxt->error = XPATH_MEMORY_ERROR; \
+ goto axis_range_end; } \
} else { \
- addNode(seq, cur); \
+ if (addNode(seq, cur) < 0) \
+ ctxt->error = XPATH_MEMORY_ERROR; \
if (breakOnFirstHit) goto first_hit; }
#define XP_TEST_HIT_NS \
if (hasAxisRange != 0) { \
if (++pos == maxPos) { \
hasNsNodes = 1; \
- xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur); \
+ if (xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur) < 0) \
+ ctxt->error = XPATH_MEMORY_ERROR; \
goto axis_range_end; } \
} else { \
hasNsNodes = 1; \
- xmlXPathNodeSetAddNs(seq, \
- xpctxt->node, (xmlNsPtr) cur); \
+ if (xmlXPathNodeSetAddNs(seq, xpctxt->node, (xmlNsPtr) cur) < 0) \
+ ctxt->error = XPATH_MEMORY_ERROR; \
if (breakOnFirstHit) goto first_hit; }
xmlXPathAxisVal axis = (xmlXPathAxisVal) op->value;
@@ -12012,8 +12118,6 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
xmlNodeSetPtr contextSeq;
int contextIdx;
xmlNodePtr contextNode;
- /* The context node for a compound traversal */
- xmlNodePtr outerContextNode;
/* The final resulting node set wrt to all context nodes */
xmlNodeSetPtr outSeq;
/*
@@ -12029,9 +12133,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
int breakOnFirstHit;
xmlXPathTraversalFunction next = NULL;
- /* compound axis traversal */
- xmlXPathTraversalFunctionExt outerNext = NULL;
- void (*addNode) (xmlNodeSetPtr, xmlNodePtr);
+ int (*addNode) (xmlNodeSetPtr, xmlNodePtr);
xmlXPathNodeSetMergeFunction mergeAndClear;
xmlNodePtr oldContextNode;
xmlXPathContextPtr xpctxt = ctxt->context;
@@ -12080,13 +12182,6 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
break;
case AXIS_CHILD:
last = NULL;
- if (op->rewriteType == XP_REWRITE_DOS_CHILD_ELEM) {
- /*
- * This iterator will give us only nodes which can
- * hold element nodes.
- */
- outerNext = xmlXPathNextDescendantOrSelfElemParent;
- }
if (((test == NODE_TEST_NAME) || (test == NODE_TEST_ALL)) &&
(type == NODE_TYPE_NODE))
{
@@ -12216,32 +12311,13 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
addNode = xmlXPathNodeSetAddUnique;
outSeq = NULL;
seq = NULL;
- outerContextNode = NULL;
contextNode = NULL;
contextIdx = 0;
- while ((contextIdx < contextSeq->nodeNr) || (contextNode != NULL)) {
- if (outerNext != NULL) {
- /*
- * This is a compound traversal.
- */
- if (contextNode == NULL) {
- /*
- * Set the context for the outer traversal.
- */
- outerContextNode = contextSeq->nodeTab[contextIdx++];
- contextNode = outerNext(NULL, outerContextNode);
- } else
- contextNode = outerNext(contextNode, outerContextNode);
- if (contextNode == NULL)
- continue;
- /*
- * Set the context for the main traversal.
- */
- xpctxt->node = contextNode;
- } else
- xpctxt->node = contextSeq->nodeTab[contextIdx++];
+ while (((contextIdx < contextSeq->nodeNr) || (contextNode != NULL)) &&
+ (ctxt->error == XPATH_EXPRESSION_OK)) {
+ xpctxt->node = contextSeq->nodeTab[contextIdx++];
if (seq == NULL) {
seq = xmlXPathNodeSetCreate(NULL);
@@ -12328,7 +12404,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
break;
}
} else if (cur->type == type) {
- if (type == XML_NAMESPACE_DECL)
+ if (cur->type == XML_NAMESPACE_DECL)
XP_TEST_HIT_NS
else
XP_TEST_HIT
@@ -12349,7 +12425,14 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
if (axis == AXIS_ATTRIBUTE) {
if (cur->type == XML_ATTRIBUTE_NODE)
{
- XP_TEST_HIT
+ if (prefix == NULL)
+ {
+ XP_TEST_HIT
+ } else if ((cur->ns != NULL) &&
+ (xmlStrEqual(URI, cur->ns->href)))
+ {
+ XP_TEST_HIT
+ }
}
} else if (axis == AXIS_NAMESPACE) {
if (cur->type == XML_NAMESPACE_DECL)
@@ -12439,7 +12522,7 @@ xmlXPathNodeCollectAndTest(xmlXPathParserContextPtr ctxt,
}
break;
} /* switch(test) */
- } while (cur != NULL);
+ } while ((cur != NULL) && (ctxt->error == XPATH_EXPRESSION_OK));
goto apply_predicates;
@@ -12480,13 +12563,16 @@ first_hit: /* ---------------------------------------------------------- */
#endif
apply_predicates: /* --------------------------------------------------- */
+ if (ctxt->error != XPATH_EXPRESSION_OK)
+ goto error;
+
/*
* Apply predicates.
*/
if ((predOp != NULL) && (seq->nodeNr > 0)) {
/*
* E.g. when we have a "/foo[some expression][n]".
- */
+ */
/*
* QUESTION TODO: The old predicate evaluation took into
* account location-sets.
@@ -12495,7 +12581,7 @@ apply_predicates: /* --------------------------------------------------- */
* All what I learned now from the evaluation semantics
* does not indicate that a location-set will be processed
* here, so this looks OK.
- */
+ */
/*
* Iterate over all predicates, starting with the outermost
* predicate.
@@ -12988,8 +13074,10 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt,
tmp = xmlXPathCacheNewNodeSet(ctxt->context,
ctxt->context->node);
} else {
- xmlXPathNodeSetAddUnique(tmp->nodesetval,
- ctxt->context->node);
+ if (xmlXPathNodeSetAddUnique(tmp->nodesetval,
+ ctxt->context->node) < 0) {
+ ctxt->error = XPATH_MEMORY_ERROR;
+ }
}
valuePush(ctxt, tmp);
if (op->ch2 != -1)
@@ -13102,8 +13190,10 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt,
tmp = xmlXPathCacheNewNodeSet(ctxt->context,
ctxt->context->node);
} else {
- xmlXPathNodeSetAddUnique(tmp->nodesetval,
- ctxt->context->node);
+ if (xmlXPathNodeSetAddUnique(tmp->nodesetval,
+ ctxt->context->node) < 0) {
+ ctxt->error = XPATH_MEMORY_ERROR;
+ }
}
valuePush(ctxt, tmp);
ctxt->context->contextSize = oldset->nodeNr;
@@ -13121,7 +13211,8 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathParserContextPtr ctxt,
*/
res = valuePop(ctxt);
if (xmlXPathEvaluatePredicateResult(ctxt, res)) {
- xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]);
+ if (xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]) < 0)
+ ctxt->error = XPATH_MEMORY_ERROR;
}
/*
* Cleanup
@@ -13433,10 +13524,15 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
int frame;
frame = xmlXPathSetFrame(ctxt);
- if (op->ch1 != -1)
+ if (op->ch1 != -1) {
total +=
xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
- if (ctxt->valueNr < op->value) {
+ if (ctxt->error != XPATH_EXPRESSION_OK) {
+ xmlXPathPopFrame(ctxt, frame);
+ return (total);
+ }
+ }
+ if (ctxt->valueNr < ctxt->valueFrame + op->value) {
xmlGenericError(xmlGenericErrorContext,
"xmlXPathCompOpEval: parameter error\n");
ctxt->error = XPATH_INVALID_OPERAND;
@@ -13498,17 +13594,20 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
bak = ctxt->context->node;
pp = ctxt->context->proximityPosition;
cs = ctxt->context->contextSize;
- if (op->ch1 != -1)
+ if (op->ch1 != -1) {
total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
- ctxt->context->contextSize = cs;
- ctxt->context->proximityPosition = pp;
- ctxt->context->node = bak;
- ctxt->context->doc = bakd;
- CHECK_ERROR0;
+ ctxt->context->contextSize = cs;
+ ctxt->context->proximityPosition = pp;
+ ctxt->context->node = bak;
+ ctxt->context->doc = bakd;
+ CHECK_ERROR0;
+ }
if (op->ch2 != -1) {
total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]);
- ctxt->context->doc = bakd;
- ctxt->context->node = bak;
+ ctxt->context->contextSize = cs;
+ ctxt->context->proximityPosition = pp;
+ ctxt->context->node = bak;
+ ctxt->context->doc = bakd;
CHECK_ERROR0;
}
return (total);
@@ -13800,8 +13899,10 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
tmp = xmlXPathCacheNewNodeSet(ctxt->context,
ctxt->context->node);
} else {
- xmlXPathNodeSetAddUnique(tmp->nodesetval,
- ctxt->context->node);
+ if (xmlXPathNodeSetAddUnique(tmp->nodesetval,
+ ctxt->context->node) < 0) {
+ ctxt->error = XPATH_MEMORY_ERROR;
+ }
}
valuePush(ctxt, tmp);
ctxt->context->contextSize = oldset->nodeNr;
@@ -13831,7 +13932,9 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
*/
res = valuePop(ctxt);
if (xmlXPathEvaluatePredicateResult(ctxt, res)) {
- xmlXPathNodeSetAdd(newset, oldset->nodeTab[i]);
+ if (xmlXPathNodeSetAdd(newset, oldset->nodeTab[i])
+ < 0)
+ ctxt->error = XPATH_MEMORY_ERROR;
}
/*
@@ -14194,7 +14297,7 @@ xmlXPathRunStreamEval(xmlXPathContextPtr ctxt, xmlPatternPtr comp,
if (toBool)
return(1);
xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval,
- (xmlNodePtr) ctxt->doc);
+ (xmlNodePtr) ctxt->doc);
} else {
/* Select "self::node()" */
if (toBool)
@@ -14287,7 +14390,11 @@ next_node:
} else if (ret == 1) {
if (toBool)
goto return_1;
- xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur);
+ if (xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur)
+ < 0) {
+ ctxt->lastError.domain = XML_FROM_XPATH;
+ ctxt->lastError.code = XML_ERR_NO_MEMORY;
+ }
}
if ((cur->children == NULL) || (depth >= max_depth)) {
ret = xmlStreamPop(patstream);
@@ -14303,6 +14410,7 @@ next_node:
}
scan_children:
+ if (cur->type == XML_NAMESPACE_DECL) break;
if ((cur->children != NULL) && (depth < max_depth)) {
/*
* Do not descend on entities declarations
@@ -14623,57 +14731,64 @@ xmlXPathTryStreamCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
}
#endif /* XPATH_STREAMING */
-static int
-xmlXPathCanRewriteDosExpression(xmlChar *expr)
-{
- if (expr == NULL)
- return(0);
- do {
- if ((*expr == '/') && (*(++expr) == '/'))
- return(1);
- } while (*expr++);
- return(0);
-}
static void
-xmlXPathRewriteDOSExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op)
+xmlXPathOptimizeExpression(xmlXPathCompExprPtr comp, xmlXPathStepOpPtr op)
{
/*
* Try to rewrite "descendant-or-self::node()/foo" to an optimized
* internal representation.
*/
- if (op->ch1 != -1) {
- if ((op->op == XPATH_OP_COLLECT /* 11 */) &&
- ((xmlXPathAxisVal) op->value == AXIS_CHILD /* 4 */) &&
- ((xmlXPathTestVal) op->value2 == NODE_TEST_NAME /* 5 */) &&
- ((xmlXPathTypeVal) op->value3 == NODE_TYPE_NODE /* 0 */))
- {
- /*
- * This is a "child::foo"
- */
- xmlXPathStepOpPtr prevop = &comp->steps[op->ch1];
-
- if ((prevop->op == XPATH_OP_COLLECT /* 11 */) &&
- (prevop->ch1 != -1) &&
- ((xmlXPathAxisVal) prevop->value ==
- AXIS_DESCENDANT_OR_SELF) &&
- (prevop->ch2 == -1) &&
- ((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) &&
- ((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE) &&
- (comp->steps[prevop->ch1].op == XPATH_OP_ROOT))
- {
- /*
- * This is a "/descendant-or-self::node()" without predicates.
- * Eliminate it.
- */
- op->ch1 = prevop->ch1;
- op->rewriteType = XP_REWRITE_DOS_CHILD_ELEM;
- }
+
+ if ((op->op == XPATH_OP_COLLECT /* 11 */) &&
+ (op->ch1 != -1) &&
+ (op->ch2 == -1 /* no predicate */))
+ {
+ xmlXPathStepOpPtr prevop = &comp->steps[op->ch1];
+
+ if ((prevop->op == XPATH_OP_COLLECT /* 11 */) &&
+ ((xmlXPathAxisVal) prevop->value ==
+ AXIS_DESCENDANT_OR_SELF) &&
+ (prevop->ch2 == -1) &&
+ ((xmlXPathTestVal) prevop->value2 == NODE_TEST_TYPE) &&
+ ((xmlXPathTypeVal) prevop->value3 == NODE_TYPE_NODE))
+ {
+ /*
+ * This is a "descendant-or-self::node()" without predicates.
+ * Try to eliminate it.
+ */
+
+ switch ((xmlXPathAxisVal) op->value) {
+ case AXIS_CHILD:
+ case AXIS_DESCENDANT:
+ /*
+ * Convert "descendant-or-self::node()/child::" or
+ * "descendant-or-self::node()/descendant::" to
+ * "descendant::"
+ */
+ op->ch1 = prevop->ch1;
+ op->value = AXIS_DESCENDANT;
+ break;
+ case AXIS_SELF:
+ case AXIS_DESCENDANT_OR_SELF:
+ /*
+ * Convert "descendant-or-self::node()/self::" or
+ * "descendant-or-self::node()/descendant-or-self::" to
+ * to "descendant-or-self::"
+ */
+ op->ch1 = prevop->ch1;
+ op->value = AXIS_DESCENDANT_OR_SELF;
+ break;
+ default:
+ break;
+ }
}
- if (op->ch1 != -1)
- xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch1]);
}
+
+ /* Recurse */
+ if (op->ch1 != -1)
+ xmlXPathOptimizeExpression(comp, &comp->steps[op->ch1]);
if (op->ch2 != -1)
- xmlXPathRewriteDOSExpression(comp, &comp->steps[op->ch2]);
+ xmlXPathOptimizeExpression(comp, &comp->steps[op->ch2]);
}
/**
@@ -14731,12 +14846,8 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
comp->string = xmlStrdup(str);
comp->nb = 0;
#endif
- if ((comp->expr != NULL) &&
- (comp->nbStep > 2) &&
- (comp->last >= 0) &&
- (xmlXPathCanRewriteDosExpression(comp->expr) == 1))
- {
- xmlXPathRewriteDOSExpression(comp, &comp->steps[comp->last]);
+ if ((comp->nbStep > 1) && (comp->last >= 0)) {
+ xmlXPathOptimizeExpression(comp, &comp->steps[comp->last]);
}
}
return(comp);
@@ -14913,17 +15024,12 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
#endif
{
xmlXPathCompileExpr(ctxt, 1);
- /*
- * In this scenario the expression string will sit in ctxt->base.
- */
if ((ctxt->error == XPATH_EXPRESSION_OK) &&
(ctxt->comp != NULL) &&
- (ctxt->base != NULL) &&
- (ctxt->comp->nbStep > 2) &&
- (ctxt->comp->last >= 0) &&
- (xmlXPathCanRewriteDosExpression((xmlChar *) ctxt->base) == 1))
+ (ctxt->comp->nbStep > 1) &&
+ (ctxt->comp->last >= 0))
{
- xmlXPathRewriteDOSExpression(ctxt->comp,
+ xmlXPathOptimizeExpression(ctxt->comp,
&ctxt->comp->steps[ctxt->comp->last]);
}
}
@@ -14994,6 +15100,49 @@ xmlXPathEval(const xmlChar *str, xmlXPathContextPtr ctx) {
}
/**
+ * xmlXPathSetContextNode:
+ * @node: the node to to use as the context node
+ * @ctx: the XPath context
+ *
+ * Sets 'node' as the context node. The node must be in the same
+ * document as that associated with the context.
+ *
+ * Returns -1 in case of error or 0 if successful
+ */
+int
+xmlXPathSetContextNode(xmlNodePtr node, xmlXPathContextPtr ctx) {
+ if ((node == NULL) || (ctx == NULL))
+ return(-1);
+
+ if (node->doc == ctx->doc) {
+ ctx->node = node;
+ return(0);
+ }
+ return(-1);
+}
+
+/**
+ * xmlXPathNodeEval:
+ * @node: the node to to use as the context node
+ * @str: the XPath expression
+ * @ctx: the XPath context
+ *
+ * Evaluate the XPath Location Path in the given context. The node 'node'
+ * is set as the context node. The context node is not restored.
+ *
+ * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
+ * the caller has to free the object.
+ */
+xmlXPathObjectPtr
+xmlXPathNodeEval(xmlNodePtr node, const xmlChar *str, xmlXPathContextPtr ctx) {
+ if (str == NULL)
+ return(NULL);
+ if (xmlXPathSetContextNode(node, ctx) < 0)
+ return(NULL);
+ return(xmlXPathEval(str, ctx));
+}
+
+/**
* xmlXPathEvalExpression:
* @str: the XPath expression
* @ctxt: the XPath context
@@ -15097,7 +15246,7 @@ static void
xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) {
xmlXPathObjectPtr str;
int escape_reserved;
- xmlBufferPtr target;
+ xmlBufPtr target;
xmlChar *cptr;
xmlChar escape[4];
@@ -15108,7 +15257,7 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) {
CAST_TO_STRING;
str = valuePop(ctxt);
- target = xmlBufferCreate();
+ target = xmlBufCreate();
escape[0] = '%';
escape[3] = 0;
@@ -15133,7 +15282,7 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) {
*cptr == ':' || *cptr == '@' || *cptr == '&' ||
*cptr == '=' || *cptr == '+' || *cptr == '$' ||
*cptr == ','))) {
- xmlBufferAdd(target, cptr, 1);
+ xmlBufAdd(target, cptr, 1);
} else {
if ((*cptr >> 4) < 10)
escape[1] = '0' + (*cptr >> 4);
@@ -15144,13 +15293,13 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) {
else
escape[2] = 'A' - 10 + (*cptr & 0xF);
- xmlBufferAdd(target, &escape[0], 3);
+ xmlBufAdd(target, &escape[0], 3);
}
}
}
valuePush(ctxt, xmlXPathCacheNewString(ctxt->context,
- xmlBufferContent(target)));
- xmlBufferFree(target);
+ xmlBufContent(target)));
+ xmlBufFree(target);
xmlXPathReleaseObject(ctxt->context, str);
}
diff --git a/xpointer.c b/xpointer.c
index 0b463dd..4b4ac2e 100644
--- a/xpointer.c
+++ b/xpointer.c
@@ -7,7 +7,7 @@
*
* Added support for the element() scheme described in:
* W3C Proposed Recommendation 13 November 2002
- * http://www.w3.org/TR/2002/PR-xptr-element-20021113/
+ * http://www.w3.org/TR/2002/PR-xptr-element-20021113/
*
* See Copyright for the status of this software.
*
@@ -47,19 +47,19 @@
#endif
#endif
-#define TODO \
+#define TODO \
xmlGenericError(xmlGenericErrorContext, \
"Unimplemented block at %s:%d\n", \
__FILE__, __LINE__);
-#define STRANGE \
+#define STRANGE \
xmlGenericError(xmlGenericErrorContext, \
"Internal error at %s:%d\n", \
__FILE__, __LINE__);
/************************************************************************
* *
- * Some factorized error routines *
+ * Some factorized error routines *
* *
************************************************************************/
@@ -134,7 +134,7 @@ xmlNodePtr xmlXPtrAdvanceNode(xmlNodePtr cur, int *level);
static int
xmlXPtrGetArity(xmlNodePtr cur) {
int i;
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return(-1);
cur = cur->children;
for (i = 0;cur != NULL;cur = cur->next) {
@@ -157,7 +157,7 @@ xmlXPtrGetArity(xmlNodePtr cur) {
static int
xmlXPtrGetIndex(xmlNodePtr cur) {
int i;
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return(-1);
for (i = 1;cur != NULL;cur = cur->prev) {
if ((cur->type == XML_ELEMENT_NODE) ||
@@ -179,11 +179,11 @@ xmlXPtrGetIndex(xmlNodePtr cur) {
static xmlNodePtr
xmlXPtrGetNthChild(xmlNodePtr cur, int no) {
int i;
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return(cur);
cur = cur->children;
for (i = 0;i <= no;cur = cur->next) {
- if (cur == NULL)
+ if (cur == NULL)
return(cur);
if ((cur->type == XML_ELEMENT_NODE) ||
(cur->type == XML_DOCUMENT_NODE) ||
@@ -553,7 +553,7 @@ xmlXPtrNewRangeNodeObject(xmlNodePtr start, xmlXPathObjectPtr end) {
break;
case XPATH_NODESET:
/*
- * Empty set ...
+ * Empty set ...
*/
if (end->nodesetval->nodeNr <= 0)
return(NULL);
@@ -731,7 +731,7 @@ xmlXPtrLocationSetDel(xmlLocationSetPtr cur, xmlXPathObjectPtr val) {
if (i >= cur->locNr) {
#ifdef DEBUG
- xmlGenericError(xmlGenericErrorContext,
+ xmlGenericError(xmlGenericErrorContext,
"xmlXPtrLocationSetDel: Range wasn't found in RangeList\n");
#endif
return;
@@ -903,7 +903,7 @@ static void xmlXPtrEvalChildSeq(xmlXPathParserContextPtr ctxt, xmlChar *name);
#define NXT(val) ctxt->cur[(val)]
#define CUR_PTR ctxt->cur
-#define SKIP_BLANKS \
+#define SKIP_BLANKS \
while (IS_BLANK_CH(*(ctxt->cur))) NEXT
#define CURRENT (*ctxt->cur)
@@ -945,7 +945,7 @@ xmlXPtrGetChildNo(xmlXPathParserContextPtr ctxt, int indx) {
* xmlXPtrEvalXPtrPart:
* @ctxt: the XPointer Parser context
* @name: the preparsed Scheme for the XPtrPart
- *
+ *
* XPtrPart ::= 'xpointer' '(' XPtrExpr ')'
* | Scheme '(' SchemeSpecificExpr ')'
*
@@ -953,7 +953,7 @@ xmlXPtrGetChildNo(xmlXPathParserContextPtr ctxt, int indx) {
*
* SchemeSpecificExpr ::= StringWithBalancedParens
*
- * StringWithBalancedParens ::=
+ * StringWithBalancedParens ::=
* [^()]* ('(' StringWithBalancedParens ')' [^()]*)*
* [VC: Parenthesis escaping]
*
@@ -971,7 +971,7 @@ xmlXPtrGetChildNo(xmlXPathParserContextPtr ctxt, int indx) {
*
* Parse and evaluate an XPtrPart. Basically it generates the unescaped
* string and if the scheme is 'xpointer' it will call the XPath interpreter.
- *
+ *
* TODO: there is no new scheme registration mechanism
*/
@@ -1097,7 +1097,7 @@ xmlXPtrEvalXPtrPart(xmlXPathParserContextPtr ctxt, xmlChar *name) {
xmlFree(name);
XP_ERROR(XPATH_MEMORY_ERROR);
}
-
+
xmlXPathRegisterNs(ctxt->context, prefix, URI);
CUR_PTR = left;
xmlFree(URI);
@@ -1229,7 +1229,7 @@ xmlXPtrEvalChildSeq(xmlXPathParserContextPtr ctxt, xmlChar *name) {
while (CUR == '/') {
int child = 0;
NEXT;
-
+
while ((CUR >= '0') && (CUR <= '9')) {
child = child * 10 + (CUR - '0');
NEXT;
@@ -1253,7 +1253,7 @@ static void
xmlXPtrEvalXPointer(xmlXPathParserContextPtr ctxt) {
if (ctxt->valueTab == NULL) {
/* Allocate the value stack */
- ctxt->valueTab = (xmlXPathObjectPtr *)
+ ctxt->valueTab = (xmlXPathObjectPtr *)
xmlMalloc(10 * sizeof(xmlXPathObjectPtr));
if (ctxt->valueTab == NULL) {
xmlXPtrErrMemory("allocating evaluation context");
@@ -1375,6 +1375,8 @@ xmlXPtrEval(const xmlChar *str, xmlXPathContextPtr ctx) {
return(NULL);
ctxt = xmlXPathNewParserContext(str, ctx);
+ if (ctxt == NULL)
+ return(NULL);
ctxt->xptr = 1;
xmlXPtrEvalXPointer(ctxt);
@@ -1396,13 +1398,13 @@ xmlXPtrEval(const xmlChar *str, xmlXPathContextPtr ctx) {
/*
* Evaluation may push a root nodeset which is unused
*/
- xmlNodeSetPtr set;
+ xmlNodeSetPtr set;
set = tmp->nodesetval;
if ((set->nodeNr != 1) ||
(set->nodeTab[0] != (xmlNodePtr) ctx->doc))
stack++;
} else
- stack++;
+ stack++;
}
xmlXPathFreeObject(tmp);
}
@@ -1416,7 +1418,7 @@ xmlXPtrEval(const xmlChar *str, xmlXPathContextPtr ctx) {
xmlXPathFreeObject(res);
res = NULL;
}
-
+
xmlXPathFreeParserContext(ctxt);
return(res);
}
@@ -1444,11 +1446,13 @@ xmlXPtrBuildRangeNodeList(xmlXPathObjectPtr range) {
return(NULL);
start = (xmlNodePtr) range->user;
- if (start == NULL)
+ if ((start == NULL) || (start->type == XML_NAMESPACE_DECL))
return(NULL);
end = range->user2;
if (end == NULL)
return(xmlCopyNode(start, 1));
+ if (end->type == XML_NAMESPACE_DECL)
+ return(NULL);
cur = start;
index1 = range->index;
@@ -1478,7 +1482,7 @@ xmlXPtrBuildRangeNodeList(xmlXPathObjectPtr range) {
/* prune and return full set */
if (last != NULL)
xmlAddNextSibling(last, tmp);
- else
+ else
xmlAddChild(parent, tmp);
return(list);
} else {
@@ -1732,7 +1736,7 @@ xmlXPtrNbLocChildren(xmlNodePtr node) {
* @ctxt: the XPointer Parser context
* @nargs: the number of args
*
- * Function implementing here() operation
+ * Function implementing here() operation
* as described in 5.4.3
*/
static void
@@ -1741,7 +1745,7 @@ xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs) {
if (ctxt->context->here == NULL)
XP_ERROR(XPTR_SYNTAX_ERROR);
-
+
valuePush(ctxt, xmlXPtrNewLocationSetNodes(ctxt->context->here, NULL));
}
@@ -1750,7 +1754,7 @@ xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs) {
* @ctxt: the XPointer Parser context
* @nargs: the number of args
*
- * Function implementing origin() operation
+ * Function implementing origin() operation
* as described in 5.4.3
*/
static void
@@ -1759,7 +1763,7 @@ xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs) {
if (ctxt->context->origin == NULL)
XP_ERROR(XPTR_SYNTAX_ERROR);
-
+
valuePush(ctxt, xmlXPtrNewLocationSetNodes(ctxt->context->origin, NULL));
}
@@ -1768,7 +1772,7 @@ xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs) {
* @ctxt: the XPointer Parser context
* @nargs: the number of args
*
- * Function implementing start-point() operation
+ * Function implementing start-point() operation
* as described in 5.4.3
* ----------------
* location-set start-point(location-set)
@@ -1805,6 +1809,8 @@ xmlXPtrStartPointFunction(xmlXPathParserContextPtr ctxt, int nargs) {
*/
tmp = xmlXPtrNewLocationSetNodeSet(obj->nodesetval);
xmlXPathFreeObject(obj);
+ if (tmp == NULL)
+ XP_ERROR(XPATH_MEMORY_ERROR)
obj = tmp;
}
@@ -1860,7 +1866,7 @@ xmlXPtrStartPointFunction(xmlXPathParserContextPtr ctxt, int nargs) {
* @ctxt: the XPointer Parser context
* @nargs: the number of args
*
- * Function implementing end-point() operation
+ * Function implementing end-point() operation
* as described in 5.4.3
* ----------------------------
* location-set end-point(location-set)
@@ -1899,10 +1905,16 @@ xmlXPtrEndPointFunction(xmlXPathParserContextPtr ctxt, int nargs) {
*/
tmp = xmlXPtrNewLocationSetNodeSet(obj->nodesetval);
xmlXPathFreeObject(obj);
+ if (tmp == NULL)
+ XP_ERROR(XPATH_MEMORY_ERROR)
obj = tmp;
}
newset = xmlXPtrLocationSetCreate(NULL);
+ if (newset == NULL) {
+ xmlXPathFreeObject(obj);
+ XP_ERROR(XPATH_MEMORY_ERROR);
+ }
oldset = (xmlLocationSetPtr) obj->user;
if (oldset != NULL) {
int i;
@@ -1996,7 +2008,7 @@ xmlXPtrCoveringRange(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr loc) {
case XML_NOTATION_NODE:
case XML_HTML_DOCUMENT_NODE: {
int indx = xmlXPtrGetIndex(node);
-
+
node = node->parent;
return(xmlXPtrNewRange(node, indx - 1,
node, indx + 1));
@@ -2047,6 +2059,8 @@ xmlXPtrRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
*/
tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval);
xmlXPathFreeObject(set);
+ if (tmp == NULL)
+ XP_ERROR(XPATH_MEMORY_ERROR)
set = tmp;
}
oldset = (xmlLocationSetPtr) set->user;
@@ -2055,6 +2069,10 @@ xmlXPtrRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
* The loop is to compute the covering range for each item and add it
*/
newset = xmlXPtrLocationSetCreate(NULL);
+ if (newset == NULL) {
+ xmlXPathFreeObject(set);
+ XP_ERROR(XPATH_MEMORY_ERROR);
+ }
for (i = 0;i < oldset->locNr;i++) {
xmlXPtrLocationSetAdd(newset,
xmlXPtrCoveringRange(ctxt, oldset->locTab[i]));
@@ -2193,6 +2211,8 @@ xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs) {
*/
tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval);
xmlXPathFreeObject(set);
+ if (tmp == NULL)
+ XP_ERROR(XPATH_MEMORY_ERROR)
set = tmp;
}
oldset = (xmlLocationSetPtr) set->user;
@@ -2201,6 +2221,10 @@ xmlXPtrRangeInsideFunction(xmlXPathParserContextPtr ctxt, int nargs) {
* The loop is to compute the covering range for each item and add it
*/
newset = xmlXPtrLocationSetCreate(NULL);
+ if (newset == NULL) {
+ xmlXPathFreeObject(set);
+ XP_ERROR(XPATH_MEMORY_ERROR);
+ }
for (i = 0;i < oldset->locNr;i++) {
xmlXPtrLocationSetAdd(newset,
xmlXPtrInsideRange(ctxt, oldset->locTab[i]));
@@ -2243,7 +2267,7 @@ xmlXPtrRangeToFunction(xmlXPathParserContextPtr ctxt, int nargs) {
cur = ctxt->cur;
newset = xmlXPtrLocationSetCreate(NULL);
-
+
for (i = 0; i < oldset->nodeNr; i++) {
ctxt->cur = cur;
@@ -2277,7 +2301,7 @@ xmlXPtrRangeToFunction(xmlXPathParserContextPtr ctxt, int nargs) {
res = valuePop(ctxt);
xmlXPathFreeObject(res);
}
-
+
ctxt->context->node = NULL;
}
@@ -2297,14 +2321,14 @@ xmlXPtrRangeToFunction(xmlXPathParserContextPtr ctxt, int nargs) {
* @level: incremented/decremented to show level in tree
*
* Advance to the next element or text node in document order
- * TODO: add a stack for entering/exiting entities
+ * TODO: add a stack for entering/exiting entities
*
* Returns -1 in case of failure, 0 otherwise
*/
xmlNodePtr
xmlXPtrAdvanceNode(xmlNodePtr cur, int *level) {
next:
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return(NULL);
if (cur->children != NULL) {
cur = cur->children ;
@@ -2362,7 +2386,7 @@ xmlXPtrAdvanceChar(xmlNodePtr *node, int *indx, int bytes) {
if ((node == NULL) || (indx == NULL))
return(-1);
cur = *node;
- if (cur == NULL)
+ if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
return(-1);
pos = *indx;
@@ -2400,7 +2424,7 @@ xmlXPtrAdvanceChar(xmlNodePtr *node, int *indx, int bytes) {
return(0);
}
/*
- * We should have a text (or cdata) node ...
+ * We should have a text (or cdata) node ...
*/
len = 0;
if ((cur->type != XML_ELEMENT_NODE) &&
@@ -2453,13 +2477,12 @@ xmlXPtrMatchString(const xmlChar *string, xmlNodePtr start, int startindex,
if (string == NULL)
return(-1);
- if (start == NULL)
+ if ((start == NULL) || (start->type == XML_NAMESPACE_DECL))
return(-1);
- if ((end == NULL) || (endindex == NULL))
+ if ((end == NULL) || (*end == NULL) ||
+ ((*end)->type == XML_NAMESPACE_DECL) || (endindex == NULL))
return(-1);
cur = start;
- if (cur == NULL)
- return(-1);
pos = startindex - 1;
stringlen = xmlStrlen(string);
@@ -2538,13 +2561,12 @@ xmlXPtrSearchString(const xmlChar *string, xmlNodePtr *start, int *startindex,
if (string == NULL)
return(-1);
- if ((start == NULL) || (startindex == NULL))
+ if ((start == NULL) || (*start == NULL) ||
+ ((*start)->type == XML_NAMESPACE_DECL) || (startindex == NULL))
return(-1);
if ((end == NULL) || (endindex == NULL))
return(-1);
cur = *start;
- if (cur == NULL)
- return(-1);
pos = *startindex - 1;
first = string[0];
@@ -2577,7 +2599,7 @@ xmlXPtrSearchString(const xmlChar *string, xmlNodePtr *start, int *startindex,
/*
* An empty string is considered to match before each
* character of the string-value and after the final
- * character.
+ * character.
*/
#ifdef DEBUG_RANGES
xmlGenericError(xmlGenericErrorContext,
@@ -2618,14 +2640,12 @@ xmlXPtrGetLastChar(xmlNodePtr *node, int *indx) {
xmlNodePtr cur;
int pos, len = 0;
- if ((node == NULL) || (indx == NULL))
+ if ((node == NULL) || (*node == NULL) ||
+ ((*node)->type == XML_NAMESPACE_DECL) || (indx == NULL))
return(-1);
cur = *node;
pos = *indx;
- if (cur == NULL)
- return(-1);
-
if ((cur->type == XML_ELEMENT_NODE) ||
(cur->type == XML_DOCUMENT_NODE) ||
(cur->type == XML_HTML_DOCUMENT_NODE)) {
@@ -2729,7 +2749,7 @@ xmlXPtrGetEndPoint(xmlXPathObjectPtr obj, xmlNodePtr *node, int *indx) {
* @nargs: the number of args
*
* Function implementing the string-range() function
- * range as described in 5.4.2
+ * range as described in 5.4.2
*
* ------------------------------
* [Definition: For each location in the location-set argument,
@@ -2798,6 +2818,10 @@ xmlXPtrStringRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
set = valuePop(ctxt);
newset = xmlXPtrLocationSetCreate(NULL);
+ if (newset == NULL) {
+ xmlXPathFreeObject(set);
+ XP_ERROR(XPATH_MEMORY_ERROR);
+ }
if (set->nodesetval == NULL) {
goto error;
}
@@ -2809,6 +2833,8 @@ xmlXPtrStringRangeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
*/
tmp = xmlXPtrNewLocationSetNodeSet(set->nodesetval);
xmlXPathFreeObject(set);
+ if (tmp == NULL)
+ XP_ERROR(XPATH_MEMORY_ERROR)
set = tmp;
}
oldset = (xmlLocationSetPtr) set->user;
@@ -2893,7 +2919,7 @@ error:
* @ctxt: the XPointer Parser context
*
* [8] Predicate ::= '[' PredicateExpr ']'
- * [9] PredicateExpr ::= Expr
+ * [9] PredicateExpr ::= Expr
*
* Evaluate a predicate as in xmlXPathEvalPredicate() but for
* a Location Set instead of a node set
@@ -2942,7 +2968,7 @@ xmlXPtrEvalRangePredicate(xmlXPathParserContextPtr ctxt) {
*/
cur = ctxt->cur;
newset = xmlXPtrLocationSetCreate(NULL);
-
+
for (i = 0; i < oldset->locNr; i++) {
ctxt->cur = cur;
@@ -2978,7 +3004,7 @@ xmlXPtrEvalRangePredicate(xmlXPathParserContextPtr ctxt) {
res = valuePop(ctxt);
xmlXPathFreeObject(res);
}
-
+
ctxt->context->node = NULL;
}
diff --git a/xstc/Makefile.am b/xstc/Makefile.am
index 966a8de..5ef1819 100644
--- a/xstc/Makefile.am
+++ b/xstc/Makefile.am
@@ -118,7 +118,7 @@ pytests: $(PYSCRIPTS) $(TESTDIRS)
tests:
-@(if [ -x $(PYTHON) ] ; then \
- $(MAKE) MAKEFLAGS+=--silent pytests ; fi);
+ $(MAKE) pytests ; fi);
#
# Heavy, works well only on RHEL3
@@ -126,7 +126,7 @@ tests:
valgrind:
-@(if [ -x $(PYTHON) ] ; then \
echo '## Running the regression tests under Valgrind' ; \
- $(MAKE) CHECKER='valgrind -q' MAKEFLAGS+=--silent pytests ; fi);
+ $(MAKE) CHECKER='valgrind -q' pytests ; fi);
CLEANFILES=$(PYSCRIPTS) test.log
diff --git a/xstc/Makefile.in b/xstc/Makefile.in
index 8aee9e7..2a9f034 100644
--- a/xstc/Makefile.in
+++ b/xstc/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
@SET_MAKE@
VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@@ -34,32 +78,43 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = xstc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
-AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -96,6 +151,7 @@ HTML_DIR = @HTML_DIR@
HTML_OBJ = @HTML_OBJ@
HTTP_OBJ = @HTTP_OBJ@
ICONV_LIBS = @ICONV_LIBS@
+ICU_LIBS = @ICU_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -140,6 +196,9 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PYTHON = @PYTHON@
PYTHON_INCLUDES = @PYTHON_INCLUDES@
PYTHON_LIBS = @PYTHON_LIBS@
@@ -151,7 +210,6 @@ RANLIB = @RANLIB@
RDL_LIBS = @RDL_LIBS@
READER_TEST = @READER_TEST@
RELDATE = @RELDATE@
-RM = @RM@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -176,7 +234,6 @@ TEST_VTIME = @TEST_VTIME@
TEST_XINCLUDE = @TEST_XINCLUDE@
TEST_XPATH = @TEST_XPATH@
TEST_XPTR = @TEST_XPTR@
-THREADS_W32 = @THREADS_W32@
THREAD_CFLAGS = @THREAD_CFLAGS@
THREAD_LIBS = @THREAD_LIBS@
VERSION = @VERSION@
@@ -209,6 +266,7 @@ WITH_SAX1 = @WITH_SAX1@
WITH_SCHEMAS = @WITH_SCHEMAS@
WITH_SCHEMATRON = @WITH_SCHEMATRON@
WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
WITH_TREE = @WITH_TREE@
WITH_TRIO = @WITH_TRIO@
WITH_VALID = @WITH_VALID@
@@ -344,11 +402,11 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
distdir: $(DISTFILES)
@@ -395,10 +453,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -480,15 +543,16 @@ uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
#
# Nothing is done by make, only make tests and
@@ -589,7 +653,7 @@ pytests: $(PYSCRIPTS) $(TESTDIRS)
tests:
-@(if [ -x $(PYTHON) ] ; then \
- $(MAKE) MAKEFLAGS+=--silent pytests ; fi);
+ $(MAKE) pytests ; fi);
#
# Heavy, works well only on RHEL3
@@ -597,7 +661,7 @@ tests:
valgrind:
-@(if [ -x $(PYTHON) ] ; then \
echo '## Running the regression tests under Valgrind' ; \
- $(MAKE) CHECKER='valgrind -q' MAKEFLAGS+=--silent pytests ; fi);
+ $(MAKE) CHECKER='valgrind -q' pytests ; fi);
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/xzlib.c b/xzlib.c
index 928bd17..0dcb9f4 100644
--- a/xzlib.c
+++ b/xzlib.c
@@ -182,12 +182,37 @@ xz_open(const char *path, int fd, const char *mode ATTRIBUTE_UNUSED)
return (xzFile) state;
}
+static int
+xz_compressed(xzFile f) {
+ xz_statep state;
+
+ if (f == NULL)
+ return(-1);
+ state = (xz_statep) f;
+ if (state->init <= 0)
+ return(-1);
+
+ switch (state->how) {
+ case COPY:
+ return(0);
+ case GZIP:
+ case LZMA:
+ return(1);
+ }
+ return(-1);
+}
+
xzFile
__libxml2_xzopen(const char *path, const char *mode)
{
return xz_open(path, -1, mode);
}
+int
+__libxml2_xzcompressed(xzFile f) {
+ return xz_compressed(f);
+}
+
xzFile
__libxml2_xzdopen(int fd, const char *mode)
{
@@ -245,6 +270,20 @@ xz_avail(xz_statep state)
return 0;
}
+#ifdef HAVE_ZLIB_H
+static int
+xz_avail_zstrm(xz_statep state)
+{
+ int ret;
+ state->strm.avail_in = state->zstrm.avail_in;
+ state->strm.next_in = state->zstrm.next_in;
+ ret = xz_avail(state);
+ state->zstrm.avail_in = (uInt) state->strm.avail_in;
+ state->zstrm.next_in = (Bytef *) state->strm.next_in;
+ return ret;
+}
+#endif
+
static int
is_format_xz(xz_statep state)
{
@@ -314,6 +353,10 @@ is_format_lzma(xz_statep state)
#define NEXT() ((strm->avail_in == 0 && xz_avail(state) == -1) ? -1 : \
(strm->avail_in == 0 ? -1 : \
(strm->avail_in--, *(strm->next_in)++)))
+/* Same thing, but from zstrm */
+#define NEXTZ() ((strm->avail_in == 0 && xz_avail_zstrm(state) == -1) ? -1 : \
+ (strm->avail_in == 0 ? -1 : \
+ (strm->avail_in--, *(strm->next_in)++)))
/* Get a four-byte little-endian integer and return 0 on success and the value
in *ret. Otherwise -1 is returned and *ret is not modified. */
@@ -324,10 +367,10 @@ gz_next4(xz_statep state, unsigned long *ret)
unsigned long val;
z_streamp strm = &(state->zstrm);
- val = NEXT();
- val += (unsigned) NEXT() << 8;
- val += (unsigned long) NEXT() << 16;
- ch = NEXT();
+ val = NEXTZ();
+ val += (unsigned) NEXTZ() << 8;
+ val += (unsigned long) NEXTZ() << 16;
+ ch = NEXTZ();
if (ch == -1)
return -1;
val += (unsigned long) ch << 24;
diff --git a/xzlib.h b/xzlib.h
index 43c75e1..29ba55e 100644
--- a/xzlib.h
+++ b/xzlib.h
@@ -15,4 +15,5 @@ xzFile __libxml2_xzopen(const char *path, const char *mode);
xzFile __libxml2_xzdopen(int fd, const char *mode);
int __libxml2_xzread(xzFile file, void *buf, unsigned len);
int __libxml2_xzclose(xzFile file);
+int __libxml2_xzcompressed(xzFile f);
#endif /* LIBXML2_XZLIB_H */